- Схема разделения секрета Шамира
-
Схема интерполяционных полиномов Лагранжа, схема разделения секрета Шамира или просто схема Шамира — это схема разделения секрета, широко используемая на практике. Схема Шамира позволяет создать (t, n)-пороговое разделение секрета для любых t, n.
Однако данная схема не защищает от мошенничества со стороны владельцев секретов, а также не защищает от мошенников, выдающих себя за тех, кто владеет секретом.
Содержание
Идея
Идея схемы заключается в том, что двух точек достаточно для задания прямой, трех точек — для задания параболы, четырех точек — для кубической параболы, и так далее. Чтобы задать многочлен степени требуется точек.
Если мы хотим разделить секрет таким образом, чтобы восстановить его могли только человек, мы «прячем» его в формулу -мерного многочлена. Восстановить этот многочлен можно по точкам. Количество же различных точек многочлена не ограничено (на практике оно ограничивается размером числового поля, в котором ведутся расчёты).
Описание
Пусть нужно разделить секрет между сторонами таким образом, чтобы любые участников могли бы восстановить секрет (то есть нужно реализовать -пороговую схему).
Выберем некоторое простое число . Это число можно открыто сказать всем участникам. Оно задаёт конечное поле размера . Над этим полем построим многочлен степени (то есть случайно выберем все коэффициенты многочлена, кроме ):
В этом многочлене — это разделяемый секрет, а остальные коэффициенты — некоторые случайные числа, которые нужно будет «забыть» после того, как процедура разделения секрета будет завершена.
Теперь вычисляем координаты различных точек:
Аргументы (номера секретов) не обязательно должны идти по порядку, главное - чтобы все они были различны по модулю .
После этого секреты (вместе с их номером, числом и степенью многочлена ) раздаются сторонам. Случайные коэффициенты и сам секрет «забываются».
Теперь любые участников, зная координаты различных точек многочлена, смогут восстановить многочлен и все его коэффициенты, включая последний из них — разделённый секрет.
Особенностью схемы (как и всех, используемых на практике) является то, что даже сторон, собравшихся вместе, не смогут найти секрет даже методом полного перебора всех возможных вариантов.
Прямолинейное восстановление коэффициентов многочлена через решение системы уравнений можно заменить на вычисление интерполяционного многочлена Лагранжа (отсюда одно из названий метода). Формула многочлена будет выглядеть следующим образом:
где — координаты точек многочлена. Все операции выполняются также в конечном поле .
Пример
Пусть нужно разделить секрет «11» между 5-ю сторонами. При этом любые 3 стороны должны иметь возможность восстановить этот секрет. То есть нужно реализовать -пороговую схему.
Возьмём простое число . Построим многочлен степени :
В этом многочлене — это разделяемый секрет, а остальные коэффициенты 7 и 8 — некоторые случайные числа, которые нужно будет «забыть» после того, как процедура разделения секрета будет завершена.
Теперь вычисляем координаты 5 различных точек:
После этого секреты (вместе с их номером, числом и степенью многочлена ) раздаются сторонам. Случайные коэффициенты и сам секрет «забываются».
Теперь любые 3 участника смогут восстановить многочлен и все его коэффициенты, включая последний из них — разделённый секрет. Например, чтобы восстановить многочлен по трём долям им нужно будет решить систему:
Очевидно, что с меньшим числом известных секретов получится меньше уравнений и систему решить будет нельзя (даже полным перебором решений).
Построим интерполяционный многочлен Лагранжа:
Последний коэффициент многочлена — — и является секретом.
Литература
- Шнайер Б. 23.2 Алгоритмы разделения секрета. Схема интерполяционных полиномов Лагранжа // Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М.: Триумф, 2002. — С. 588—589. — 816 с. — 3000 экз. — ISBN 5-89392-055-4
- Adi Shamir How to share a secret (англ.) // Communications of the ACM. — New York, NY, USA: ACM, 1979. — В. 11. — Т. 22. — С. 612 — 613. — ISSN 0001-0782. — DOI:10.1145/359168.359176
Категория:- Разделение секрета
Wikimedia Foundation. 2010.