Публично проверяемое разделение секрета

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

В схеме каждой стороне назначается публичная функция шифрования , при этом соответствующую функцию дешифрования не знает никто, кроме самого .

Дилер использует открытые функции шифрования для распределения долей, вычисляя:

и публикуя зашифрованные доли . Для проверки достоверности всех зашифрованных долей существует алгоритм PubVerify, свойство которого состоит в том, что:

и , если дилер был честен[1].

Иными словами, если набор зашифрованных долей «достоверен» согласно PubVerify, то честные участники могут расшифровать их и восстановить секрет. Стоит обратить внимание, что PubVerify может быть выполнено, даже если стороны ещё не получили свои доли. Для запуска PubVerify может потребоваться связь с дилером (но не с участником). Схема PVSS называется неинтерактивной, если PubVerify вообще не требует взаимодействия с дилером, или интерактивной, если это не так.

Среди возможных применений PVSS — электронное голосование, пороговые криптосистемы, пороговые отзывные электронные деньги, пороговое программное обеспечение депонирования ключей, пороговые подписи.

Реализация[править | править код]

Фиксируется  — группа простого порядка ,  — независимо выбранные генераторы этой группы. Задача дилера — разделить случайное значение из данной группы. Для этого дилер сначала выбирает , а затем распространяет доли секрета .

Возможно использовать протокол Чаума — Педерсена для подтверждения , где : если подтверждающий знает такое , что и (дискретные логарифмы), где и  — генераторы группы простого порядка :

  • подтверждающий выбирает случайную и отправляет и ;
  • проверяющий отправляет случайную посылку ;
  • подтверждающий отвечает ;
  • проверяющий проверяет что и .

Протокол Чаума — Педерсена является интерактивным и требует некоторой модификации для использования в неинтерактивном режиме: замены случайно выбранной на «безопасную хэш-функцию» с в качестве входного значения.

Сама схема PVSS состоит из трёх фаз: инициализации, распределения и восстановления[2].

На этапе инициализации выбирается группа и её генераторы . Непосредственно алгоритм выбора надежных параметров является отдельной задачей криптографии и не относится к протоколу PVSS. Каждая сторона генерирует закрытый ключ и регистрирует в качестве своего открытого ключа[2].

На фазе распределения данная часть протокола состоит из двух шагов — распределение долей и подтверждение долей. На шаге распределение долей дилер выбирает случайный полином степени с коэффициентами, принадлежащими :

При этом нулевой коэффициент равен распределяемому секрету .
Этот полином, в отличие от обычных схем разделения секрета, нигде не публикуется и приватно хранится у дилера. Вместо этого дилер публикует и зашифрованные на публичных ключах каждой стороны полиномы . Дилер доказывает, что зашифрованные полиномы действительно лежат на одной прямой, если для удовлетворяются следующие уравнения:

и Для данной проверки протокол Чаума — Педерсена применяется параллельно всеми сторонами. На шаге подтверждение долей подтверждающая сторона вычисляет с помощью значений . Затем, аналогично протоколу Чаума — Педерсена, вычисляются и . Если они совпадают, то доли считаются подтверждёнными[2].

На фазе восстановления каждый участник, используя свой закрытый ключ , находит долю из , вычисляя . Стороны публикуют плюс доказательство того, что значение является правильной расшифровкой . Для этого достаточно доказать знание такого, что и , для чего опять же можно применить протокол Чаума — Педерсена.

Возможна операция объединения долей: если участники прошли все необходимые проверки и убедились, что значения верны для . Секрет , то можно применить интерполяцию Лагранжа:

,

где  — коэффициенты Лагранжа[2].

Примечания[править | править код]

Литература[править | править код]

  • Markus Stadler. Publicly verifiable secret sharing // International Conference on the Theory and Applications of Cryptographic Techniques. — Springer, 1996.
  • Benny Chor , et al. Verifiable secret sharing and achieving simultaneity in the presence of faults // 26th Annual Symposium on Foundations of Computer Science. — IEEE, 1985.
  • Paul Feldman. A practical scheme for non-interactive verifiable secret sharing // 28th Annual Symposium on Foundations of Computer Science. — IEEE, 1987.
  • Torben Pryds Pedersen. Non-interactive and information-theoretic secure verifiable secret sharing // Annual international cryptology conference. — Springer, 1991.
  • B. Schoenmakers. A simple publicly verifiable secret sharing scheme and its application to electronic voting // In Annual International Cryptology Conference. — Springer, 1999.

Ссылки[править | править код]