Utilia

Споделяне на тайна по Шамир

Разделете парола или фраза за възстановяване на N части, от които всеки M я възстановяват, със схемата на Шамир над GF(256), локално във вашия браузър.

Разделянето и сглобяването стават изцяло във вашия браузър. Тайната и частите никога не се изпращат никъде; случайните числа идват от crypto.getRandomValues.

Разделяне на тайна

    Сглобяване на части

    Как да разделите тайна

    1. Въведете или поставете текста за защита в Тайна (текст): фраза за възстановяване, главна парола, ключ за шифроване…
    2. Задайте Брой части (N) и Части, нужни за възстановяване (M). Например N = 5 и M = 3 означава, че всеки 3 от 5-те части възстановяват тайната, а 2 части не разкриват нищо.
    3. Щракнете върху Раздели тайната. Всяка част се появява на отделен ред с бутон Копирай; можете да използвате и Копирай всички части или Изтегли частите (.txt).
    4. Щракнете върху Тест: сглоби първите M части, за да се уверите, че частите работят, преди да ги раздадете.
    5. Дайте всяка част на друг човек или я съхранявайте на друго място. Не държите всички заедно, иначе разделянето няма смисъл.

    Как да възстановите тайната

    1. Поставете поне M части в Части, по една на ред, в произволен ред. Празните редове се пренебрегват.
    2. Щракнете върху Сглоби частите. Текстът се появява под Възстановена тайна, а състоянието казва кои номера на части са използвани.
    3. Ако част има правописна грешка, идва от друго разделяне или се появява два пъти с различно съдържание, инструментът казва коя и защо, вместо да върне безсмислица.

    Как работи споделянето на тайна по Шамир

    Ади Шамир публикува схемата през 1979 г. За да сподели един байт s с праг M, се избира случаен полином от степен M − 1 със свободен член s: f(x) = s + a₁x + … + a₍M−1₎x^(M−1). Част номер x е стойността f(x). Всеки M точки определят полинома, така че интерполацията на Лагранж при x = 0 връща s; с по-малко от M точки всяка стойност на s е равновероятна, така че частите не издават нищо за тайната.

    Този инструмент работи в крайното поле GF(256) (същото като в AES, с редуциращ полином x⁸ + x⁴ + x³ + x + 1), така че всеки байт от UTF-8 тайната получава собствен полином, а частите са точно толкова дълги, колкото тайната. Случайните коефициенти идват от crypto.getRandomValues, криптографския генератор на случайни числа на браузъра. Всичко се изпълнява локално: тайната и частите никога не напускат вашето устройство.

    Формат на частите

    Една част изглежда така: 3-2-5f1c…: прагът M, номерът на частта X (от 1 до 255), после шестнадесетични данни. Данните съдържат стойностите на полинома за тайната, следвани от 4-байтов CRC-32 на тайната, и завършват с 4-байтова контролна сума CRC-32 на самата част. Контролната сума хваща грешки при копиране; вътрешният CRC показва кога са смесени части от различни тайни. Части, направени от други инструменти на Шамир, използват други формати и не могат да се сглобяват тук.

    Често задавани въпроси

    Как да избера N и M?

    M е колко души или места трябва да си сътрудничат, а N − M е колко части можете да си позволите да загубите. 3 от 5 е често срещан избор: две части могат да бъдат загубени или унищожени и никоя двойка притежатели не може сама да възстанови тайната.

    Безопасно ли е да съхранявам една част в облака?

    Една част или всяка група, по-малка от M, не разкрива нищо за тайната. Все пак държете по-малко от M части в един и същи акаунт или място, иначе това място само държи тайната.

    Шифрова ли този инструмент тайната?

    Не в обичайния смисъл: няма парола. Защитата идва от прага. Можете да комбинирате двете, например като разделите паролата на шифрован файл.

    Какво става, ако дам повече от M части?

    Първите M части възстановяват тайната, а допълнителните се сверяват с тях. Част, която не пасва, се съобщава, което помага да се забележи повредена или чужда част.

    Мога ли да разделя файл?

    Този инструмент разделя текст до 10 000 байта. За файл го шифровайте със силна случайна парола и разделете паролата.