Подпись Шнорра

редактировать
Схема цифровой подписи

В криптографии подпись Шнорра представляет собой цифровую подпись, созданную алгоритмом подписи Шнорра, который был описан Клаусом Шнорром. Это схема цифровой подписи, известная своей простотой, одна из первых, безопасность которой основана на неразрешимости некоторых проблем с дискретным логарифмом . Он эффективен и генерирует короткие подписи. Это было покрыто США. Патент 4995082, срок действия которого истек в феврале 2008 года.

Содержание
  • 1 Алгоритм
    • 1.1 Выбор параметров
    • 1.2 Обозначение
    • 1.3 Генерация ключа
    • 1.4 Подписание
    • 1.5 Проверка
    • 1.6 Доказательство правильности
    • 1.7 Утечка ключа при повторном использовании nonce
    • 1.8 Аргумент безопасности
  • 2 Короткие подписи Шнорра
  • 3 См. Также
  • 4 Примечания
  • 5 Ссылки
  • 6 Внешние ссылки
Алгоритм

Выбор параметров

Обозначение

Далее

  • Возведение в степень обозначает повторное применение группы операция
  • Сопоставление означает умножение на множестве классов конгруэнтности или применение групповой операции (если применимо)
  • Вычитание означает вычитание на множестве групп эквивалентности
  • M ∈ {0, 1} ∗ {\ displaystyle M \ in \ {0,1 \} ^ {*}}M \ in \ {0,1 \} ^ {*} , набор конечных битовых строк
  • s, e, ev ∈ Z q {\ displaystyle s, e, e_ {v} \ in \ mathbb {Z} _ {q}}s, e, e_ {v} \ in {\ mathbb {Z}} _ {q} , набор классов конгруэнтности по модулю q {\ displaystyle q}q
  • x, k ∈ Z q × {\ displaystyle x, k \ in \ mathbb {Z} _ {q} ^ {\ times}}x, k \ in {\ mathbb {Z}} _ {q} ^ {\ times} , мультипликативная группа целых чисел по модулю q {\ displaystyle q }q (вместо простого q {\ displaystyle q}q , Z q × = Z q ∖ 0 ¯ q {\ displaystyle \ mathbb {Z } _ {q} ^ {\ times} = \ mathbb {Z} _ {q} \ setminus {\ overline {0}} _ {q}}{ \ mathbb {Z}} _ {q} ^ {\ times} = {\ mathbb {Z}} _ {q} \ setminus \ overline {0} _ {q} )
  • y, r, rv ∈ G {\ displaystyle y, r, r_ {v} \ in G}y, r, r_ {v} \ in G .

Генерация ключа

  • Выберите закрытый ключ подписи, x {\ displaystyle x}x из разрешенного набора.
  • Открытый ключ подтверждения: y = gx {\ displaystyle y = g ^ {x}}y = g ^ {x} .

Signing

Чтобы подписать сообщение, M {\ displaystyle M}M :

  • Выберите случайный k {\ displaystyle k}k из разрешенного набора.
  • Пусть r = gk {\ displaystyle r = g ^ {k}}r = g ^ {k} .
  • Пусть e = H (r ∥ M) {\ displaystyle e = H (r \ parallel M)}{\ displaystyle e = H (r \ parallel M)} , где ∥ {\ displaystyle \ parallel}\ parallel обозначает конкатенацию и r {\ displaystyle r}r представлен как битовая строка.
  • Пусть s = k - xe {\ displaystyle s = k-xe}{\ displaystyle s = k-xe} .

Подпись - это пара: (s, e) {\ displaystyle (s, e)}{\ displaystyle (s, e)} .

Обратите внимание, что s, e ∈ Z q {\ displaystyle s, e \ in \ mathbb {Z} _ {q}}s, e \ in {\ mathbb { Z}} _ {q} ; если q < 2 160 {\displaystyle q<2^{160}}q <2 ^ {{160}} , то представление подписи может уместиться в 40 байтов.

Проверка

  • Пусть rv = gsye {\ displaystyle r_ {v} = g ^ {s} y ^ {e}}r_ {v} = g ^ {s} y ^ {e}
  • Пусть ev = H (rv ∥ M) {\ displaystyle e_ {v} = H (r_ {v} \ parallel M)}{\ displaystyle e_ {v} = H (r_ {v} \ parallel M)}

Если ev = e {\ displaystyle e_ {v} = e}e_ {v} = e , то подпись проверено.

Подтверждение правильности

Относительно легко увидеть, что ev = e {\ displaystyle e_ {v} = e}e_ {v} = e , если подписанное сообщение равно подтвержденное сообщение:

rv = gsye = gk - xegxe = gk = r {\ displaystyle r_ {v} = g ^ {s} y ^ {e} = g ^ {k-xe} g ^ {xe} = g ^ {k} = r}r_ {v} = g ^ {s} y ^ {e } = g ^ {{k-xe}} g ^ {{xe}} = g ^ {k} = r , и, следовательно, ev = H (rv ∥ M) = H (r ∥ M) = e {\ displaystyle e_ {v} = H (r_ {v} \ parallel M) = H (r \ parallel M) = e}{\ displaystyle e_ {v} = H (r_ {v} \ parallel M) = ЧАС (г \ параллельно М) = е} .

общедоступные элементы: G {\ displaystyle G}G , g {\ displaystyle g}g , q {\ displaystyle q}q , y {\ displaystyle y}y , s {\ displaystyle s}s , e {\ displaystyle e}e , r {\ displaystyle r}r . Частные элементы: k {\ displaystyle k}k , x {\ displaystyle x}x .

Это показывает только то, что правильно подписанное сообщение будет проверять правильно; многие другие свойства необходимы для безопасного алгоритма подписи.

Утечка ключа из-за повторного использования одноразового номера

Так же, как и в случае тесно связанных алгоритмов подписи DSA, ECDSA и ElGamal, повторное использование секретного значения nonce k {\ displaystyle k}k в двух подписях Шнорра разных сообщений позволит наблюдателям восстановить закрытый ключ. В случае подписей Шнорра для этого просто требуется вычесть s {\ displaystyle s}s значений:

s ′ - s = (k ′ - k) - x (e ′ - e) {\ displaystyle s'-s = (k'-k) -x (e'-e)}{\displaystyle s'-s=(k'-k)-x(e'-e)}.

Если k '= k {\ displaystyle k' = k}k'=kно e ′ ≠ e {\ displaystyle e '\ neq e}{\displaystyle e'\neq e}, тогда x {\ displaystyle x}x можно просто изолировать. Фактически, даже незначительные отклонения в значении k {\ displaystyle k}k или частичная утечка k {\ displaystyle k}k может раскрыть закрытый ключ после сбор достаточно большого количества подписей и решение аргумента.

безопасности

Схема подписи была построена путем применения преобразования Фиата – Шамира к протоколу идентификации Шнорра. Следовательно (согласно аргументам Фиата и Шамира), это безопасно, если H {\ displaystyle H}Hмоделируется как случайный оракул.

. Его безопасность также может быть доказана в универсальная модель группы, в предположении, что H {\ displaystyle H}Hявляется «устойчивым к случайному префиксу префикса» и «устойчивым к случайному префиксу второму прообразу». В частности, H {\ displaystyle H}Hне обязательно должен быть устойчивым к столкновениям.

. В 2012 году Сёрин предоставил точное доказательство схемы подписи Шнорра. В частности, Сёрин показывает, что доказательство безопасности с использованием леммы о разветвлении является наилучшим возможным результатом для любых схем подписей, основанных на односторонних гомоморфизмах группы , включая подписи типа Шнорра и. А именно, согласно предположению ROMDL, любая алгебраическая редукция должна терять множитель f (ϵ F) qh {\ displaystyle f ({\ epsilon} _ {F}) q_ {h}}f ({\ epsilon} _ {F}) q_ {h} в своем отношение времени к успеху, где f ≤ 1 {\ displaystyle f \ leq 1}f \ leq 1 - функция, которая остается близкой к 1, пока «ϵ F {\ displaystyle {\ epsilon} _ {F}}{\ epsilon} _ {F} заметно меньше 1 дюйма, где ϵ F {\ displaystyle {\ epsilon} _ {F}}{\ epsilon} _ {F} - вероятность подделки ошибка делает не более qh {\ displaystyle q_ {h}}q_ {h} запросов к случайному оракулу.

Короткие подписи Шнорра

Вышеупомянутый процесс достигает t-битного уровня безопасности с 4t-битными подписями. Например, для 128-битного уровня безопасности потребуются 512-битные (64-байтовые) подписи. Безопасность ограничивается атаками дискретного логарифмирования на группу, сложность которых равна извлечению квадратного корня из размера группы.

В оригинальной статье Шнорра 1991 г. было высказано предположение, что, поскольку сопротивление столкновениям в хэше не требуется, поэтому более короткие хеш-функции могут быть столь же безопасными, и действительно, недавние разработки предполагают, что уровень безопасности t-бит может достигается с помощью 3t-битных подписей. Тогда для 128-битного уровня безопасности потребуются только 384-битные (48-байтовые) подписи, и это может быть достигнуто путем усечения размера e до тех пор, пока он не станет половиной длины битового поля s.

См. Также
Примечания
Ссылки
  • Menezes, Alfred J. et al. (1996), Справочник по прикладной криптографии, CRC Press.
  • C.P. Шнорр (1990), «Эффективная идентификация и подписи для смарт-карт», в G. Brassard, ed. Достижения в криптологии - Crypto '89, 239-252, Springer-Verlag. Конспект лекций по информатике, номер 435
  • Клаус-Питер Шнорр (1991), «Эффективное создание подписи с помощью смарт-карт», Журнал криптологии 4 (3), 161–174 (PS) (PDF).
Внешние ссылки
Последняя правка сделана 2021-06-07 05:16:25
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте