Shamir Secret Sharing — конструкція Аді Шаміра, опублікована 1979 року. Вона кодує секрет як константу випадкового полінома над скінченним полем; це не розрізання фрази й саме по собі не протокол підпису.
Схема k із n відновлює секрет із будь-яких k чинних різних часток одного набору. Вона витримує втрату n−k часток, але також дозволяє k власникам спільно отримати секрет. Наприклад, 3 із 5 витримує дві втрати, а не три. Поріг балансує доступність і розмір групи, здатної до відновлення. [Adi Shamir — How to Share a Secret (1979)]
Для секрету S обирають f(x)=S+a1*x+…+a(k−1)*x^(k−1). Решта коефіцієнтів — незалежні рівномірно випадкові елементи поля. Частка — пара (x,f(x)) з різним ненульовим x; x=0 одразу розкрив би S. Інтерполяція Лагранжа за k точками визначає f(0). Дві копії однієї точки не додають рівняння. [Adi Shamir — How to Share a Secret (1979)]
Лише для навчання візьмемо S=5 і f(x)=5+3*x mod 17. Частки: (1,8), (2,11), (3,14). Перші дві дають нахил 3 і константу 8−3=5; усі три пари відновлюють 5. Окрема (1,8) сумісна з кожним S від 0 до 16, якщо a=8−S mod 17. Мале поле не є проєктом гаманця. [Adi Shamir — How to Share a Secret (1979)]
В ідеальній схемі менш ніж k повних часток не дають інформації про S навіть за необмежених обчислень. Це припускає правильно обрані незалежні коефіцієнти та визначену модель спостереження. Слабка випадковість, повторне використання коефіцієнтів, побічні канали чи додаткові перевірочні дані потребують окремого аналізу. Поділ не посилює слабкий секрет, який можна вгадати інакше. [Adi Shamir — How to Share a Secret (1979)] [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]
Відновлення потребує однакового поля, кодування, індексів та ідентичності набору. Просте поле GF(p) використовує модульні обернені елементи, а не десяткове ділення; операції GF(256) відрізняються від лишків за модулем 256. SLIP-39 додає конкретний словник, метадані, групи, шифрування й перевірки. Дві програми з назвою Shamir не обов’язково мають сумісні частки. [Adi Shamir — How to Share a Secret (1979)] [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]
Базова інтерполяція не підтверджує походження частки чи чесність розподілювача. Пошкоджена точка може повернути інший секрет замість повідомлення про нестачу. Виявлення, виправлення помилок і verifiable secret sharing — додаткові конструкції з власними припущеннями. SLIP-39 додає checksum і digest; ці доповнення не властиві автоматично кожному Shamir Secret Sharing. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [NIST — Multi-Party Threshold Cryptography]
Звичайне відновлення відкриває все S в одному середовищі, яке може його розголосити. На відміну від Multisig, Shamir Secret Sharing не створює кількох незалежних on-chain ключів підпису. Пороговий підпис може додатковим протоколом MPC працювати з частками без складання ключа, як розрізняє NIST. Самі поділ і подальше об’єднання цього не забезпечують. [NIST — Multi-Party Threshold Cryptography]
П’ять файлів в одному обліковому записі не розділяють ризик втрати чи компрометації. Запишіть параметри й перевірте відновлення на довіреному пристрої. Новий випадковий поліном із тим самим S створює інший набір, який не слід змішувати зі старим. Достатній старий набір усе ще відновить S; новий поділ не скасовує раніше отримані частки чи розкритий секрет. [Adi Shamir — How to Share a Secret (1979)] [Trezor — Multi-share Backup]
Для повної картини прочитайте також SLIP-39, Multisig, Seed Phrase, Приватний ключ, Bitcoin Inheritance Plan. На цю статтю також посилаються SLIP-39, FROST.