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; а з меншою кількістю точок усі значення 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 байт. Для файлу зашифруйте його надійною випадковою парольною фразою й розділіть саму фразу.