Открыть сервис

Схема разделения секрета Шамира

Схема разделения секрета Шамира — это криптографический алгоритм, созданный для распределённого хранения секретной информации. Метод позволяет разделить секрет (например, ключ шифрования, пароль или код доступа) на _n_ частей (долей, теней), которые распространяются между участниками. Для восстановления исходного секрета необходимо собрать не менее _k_ долей (пороговое значение). При этом любое количество долей меньше _k_ не даёт никакой информации о секрете. Схема была предложена израильским математиком Ади Шамиром в 1979 году и является одним из фундаментальных протоколов пороговой криптографии.

История

Идея порогового разделения секрета возникла из практической потребности: если хранить ключ или пароль у одного человека, он становится уязвимым (потеря, шантаж, смерть). Если хранить несколько копий у разных людей, возрастает риск утечки или кражи. Необходимо было найти компромисс между безопасностью и надёжностью.

В 1979 году Ади Шамир, а также независимо от него советский и израильский учёный Густав Симмонс предложили математические схемы разделения секрета. Схема Шамира основана на свойствах многочленов над конечными полями. Она получила широкое распространение благодаря простоте, доказуемой стойкости и возможности точной настройки параметров (_n_ и _k_).

Первоначально схема применялась в основном в военных и правительственных системах (управление ядерным оружием, доступ к хранилищам). Позднее алгоритм вошёл в состав многих криптографических библиотек, используется в блокчейн-системах, менеджерах паролей, облачных сервисах и системах резервного копирования.

Описание алгоритма

Математическая основа

Схема Шамира базируется на следующем наблюдении: для однозначного задания многочлена степени _k-1_ необходимо знать _k_ различных точек, лежащих на его графике. Если дано меньше _k_ точек, через них можно провести бесконечно много многочленов степени _k-1_. Перехватчик, обладающий менее чем _k_ долями, не может определить, какой из этих многочленов был исходным, и, следовательно, не может восстановить секрет (константу многочлена).

Процедура разделения (delaering)

Пусть S — секрет (число), который необходимо разделить. Работа ведётся в конечном поле F<sub>p</sub>, где _p_ — простое число, большее, чем S и число участников _n_. Алгоритм:

  1. Выбор параметров: определяются _n_ (общее количество долей) и _k_ (пороговое значение).
  2. Создание многочлена: строится многочлен _f(x)_ степени _k-1_ над полем F<sub>p</sub>:

_f(x) = S + a<sub>1</sub> x + a<sub>2</sub> x<sup>2</sup> + ... + a<sub>k-1</sub> x<sup>k-1</sup> (mod p)_, где _a<sub>1</sub>, a<sub>2</sub>, ..., a<sub>k-1</sub>_ — случайные числа из F<sub>p</sub>. Свободный член многочлена S — это секрет.

  1. Вычисление долей: для каждого участника _i_ (где _i_ принимает значения от 1 до _n_) вычисляется значение _y<sub>i</sub> = f(i) mod p_.
  2. Распределение: каждая пара _(i, y<sub>i</sub>)_ передаётся соответствующему участнику. Число _p_ (модуль) и _k_ (порог) могут быть известны всем участникам или храниться отдельно.

Процедура восстановления (reconstruction)

Для восстановления секрета необходимо собрать любые _k_ долей _(x<sub>1</sub>, y<sub>1</sub>), (x<sub>2</sub>, y<sub>2</sub>), ..., (x<sub>k</sub>, y<sub>k</sub>)_. Восстановление происходит с помощью интерполяции по Лагранжу. Формула для вычисления секрета S:

S = Σ<sub>j=1</sub><sup>k</sup> y<sub>j</sub> · Π<sub>i≠j</sub>&thinsp;(–x<sub>i</sub> / (x<sub>j</sub> – x<sub>i</sub>))  (mod p)

Эта формула позволяет вычислить _f(0)_ = S без восстановления всего многочлена. Любая комбинация из (k-1) долей даёт лишь случайное значение, не связанное с исходным секретом.

Пример

Пусть S = 1234, _n_ = 5, _k_ = 3. Выбираем простое _p_ = 1999. Выбираем случайные коэффициенты _a<sub>1</sub> = 166, a<sub>2</sub> = 94_. Многочлен:

_f(x) = 1234 + 166x + 94x² (mod 1999)_

Вычисляем доли для _x = 1, 2, 3, 4, 5_:

Для восстановления секрета можно взять любые 3 доли, например (1,1494), (3,507), (5,104). Интерполяция по Лагранжу даст S = 1234.

Классификация схем разделения секрета

Схема Шамира относится к идеальным и пороговым схемам.

Существуют также другие схемы:

Применение

Криптография и защита данных

Блокчейн и криптовалюты

Военная и государственная сфера

Прочие области

Интересные факты

Критика и ограничения

Несмотря на теоретическую безусловную стойкость, на практике существуют уязвимости:

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →