В обычных схемах разделения секрета рассматривается пассивный противник, а именно, противником являются не более чем (m -1) процессоров, которые, объединив свои доли, пытаются получить какую-либо информацию о значении секрета.
Если же на фазе восстановления секрета действует активный противник, возможны следующие ситуации:
Ø дилер пытается раздать процессорам неправильные тени,
Ø процессоры А i преследуют цель сорвать восстановление секрета S, посылая честным участникам вместо долей секрета любую другую информацию.
Подобное действие приведет к тому, что секрет не будет правильно восстановлен. При этом невозможно определить, кто из участников коалиции виноват в этом. В худшем случае участники просто не обнаружат, что восстановленный секрет не соответствует исходному разделенному секрету.
Для защиты в подобной ситуации используется протокол проверяемого разделения секрета или верифицируемая схема разделения секрета.
Возможное решение заключается в применении доказательства с нулевым раскрытием, позволяющего одному участнику доказать корректность выполненных им вычислений и знание тени, полученной в результате разделения секрета, другому участнику схемы, не раскрывая при этом самой тени. Данный протокол позволяет решать следующую практическую задачу: каждый из участников может убедиться в том, что полученная им тень, объединенная с тенями других участников, позволяет гарантированно восстановить разделенный секрет.
|
|
32.7. Протокол проверяемого разделения секрета по схеме Шамира
Для примера рассмотрим схему Шамира и ситуацию, в которой коалиция из m участников пытается восстановить секрет S при условии, что один из участников — обманщик и предоставляет «ложную» тень (не ту, что была получена в результате разделения секрета).
Фаза разделения секрета начинается с того, что дилер публикует секрет S в «зашифрованном» виде (точнее было бы сказать — выполняет привязку к строке S, по аналогии с привязкой к биту).
Дилер выбирает случайный полином степени m-1
Q(x) = а0 + а1 х + … + am-1хm-1, где ао = S,
вычисляет ri = g ai mod р (i = 1,..., n) и публикует r 1,..., r n.
С помощью этой информации каждый процессор A j может проверить, что значение sj, полученное им от дилера, действительно является долей секрета S. Для этого он должен проверить равенство
gsj =r0 (r1)j … (rm-1)jm-1 mod q.
В самом деле:
.
На фазе раздачи секрета дилер вычисляет
s j = Q(j), j = 1,..., n
и посылает это значение (доли или тени секрета) процессору A j по защищенному каналу.
Конструкцию протокола для фазы восстановления секрета рассмотрим в наиболее простом случае, когда дилер честный. На этой фазе каждый процессор A j посылает каждому другому процессору A i свою долю sj.
|
|
Всякий честный участник A i, получив некоторое значение s j от A j, проверяет это значение, как описано выше, и отбрасывает все доли sj, не прошедшие проверку. Поскольку честных участников не менее m, Ai получит по крайней мере m правильных долей секрета.
Используя алгоритм восстановления секрета из схемы Шамира, восстановим значение S. Доли секрета являются гиперплоскостями в пространстве многочленов над полем Z q. Для восстановления секрета строится единственная точка пересечения m гиперплоскостей с помощью интерполяционного полинома Лагранжа:
, где .
В отличие от обычных схем разделения секрета стойкость данного протокола основывается на предположении о вычислительной трудности задачи дискретного логарифмирования. Поэтому, если в обычных схемах разделения секрета требуется, чтобы любое подмножество участников, не составляющее кворума, не получало никакой информации о секрете, то во многих схемах проверяемого разделения секрета такое подмножество лишь «не может восстановить» секрет в том смысле, что для его восстановления требуется решить некоторую гипотетически трудную вычислительную задачу. В рассмотренном выше примере всякий участник мог бы узнать секрет S, если бы он умел вычислять дискретные логарифмы.