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

Материал из testwiki
Перейти к навигации Перейти к поиску

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

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

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

Si=Ei(si),i=1,,n

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

uA2{1,,n}:( PubVerify ({SiiA})=1)Recover({Di(Si)iA})=u

и u=s, если дилер был честенШаблон:Sfn.

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

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

Реализация

Фиксируется Gp — группа простого порядка p, g,G — независимо выбранные генераторы этой группы. Задача дилера — разделить случайное значение из данной группы. Для этого дилер сначала выбирает sRZp, а затем распространяет доли секрета S=GS.

Возможно использовать протокол Чаума — Педерсена для подтверждения logg1h1=logg2h1, где g1,g2,h1,h2Gp: если подтверждающий знает такое α, что h1=g1α и h2=g2α (дискретные логарифмы), где g1 и g2 — генераторы группы простого порядка p:

  • подтверждающий выбирает случайную rZq* и отправляет a1=g1r и a2=g2r;
  • проверяющий отправляет случайную посылку cRZq;
  • подтверждающий отвечает s=rαc(modq);
  • проверяющий проверяет что a1=g1sh1c и a2=g2sh2c.

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

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

На этапе инициализации выбирается группа Gp и её генераторы g,G. Непосредственно алгоритм выбора надежных параметров является отдельной задачей криптографии и не относится к протоколу PVSS. Каждая сторона Pii=1n генерирует закрытый ключ xiRZp* и регистрирует yi=Gxi в качестве своего открытого ключаШаблон:Sfn.

На фазе распределения данная часть протокола состоит из двух шагов — распределение долей и подтверждение долей. На шаге распределение долей дилер выбирает случайный полином d степени t1 с коэффициентами, принадлежащими Zp:
d(x)=j=0t1βjxj
При этом нулевой коэффициент равен распределяемому секрету β0=s.
Этот полином, в отличие от обычных схем разделения секрета, нигде не публикуется и приватно хранится у дилера. Вместо этого дилер публикует Cj=gjβ,0jt и зашифрованные на публичных ключах каждой стороны полиномы Yi=yid(i),1in. Дилер доказывает, что зашифрованные полиномы действительно лежат на одной прямой, если для d(i),1in удовлетворяются следующие уравнения:

Xi=j=0t1Cjij=gd(i) и Yi=yid(i)Для данной проверки протокол Чаума — Педерсена применяется параллельно всеми сторонами. На шаге подтверждение долей подтверждающая сторона вычисляет Xi с помощью значений Cj. Затем, аналогично протоколу Чаума — Педерсена, вычисляются a1i=gsiXic и a2i=ysiYic. Если они совпадают, то доли считаются подтверждённымиШаблон:Sfn.

На фазе восстановления каждый участник, используя свой закрытый ключ xi, находит долю Si=Gd(i) из Yi, вычисляя Si=Yi1/xi. Стороны публикуют Si плюс доказательство того, что значение Si является правильной расшифровкой Yi. Для этого достаточно доказать знание α такого, что yi=Gα и Yi=Siα, для чего опять же можно применить протокол Чаума — Педерсена.

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

i=1tSiλi=i=1t(Gd(i))λi=Gi=1td(i)λi=Gd(0)=Gs,

где λi=jijji — коэффициенты ЛагранжаШаблон:Sfn.

Примечания

Шаблон:Примечания

Литература

Ссылки

Шаблон:Rq