Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шнайер - Прикладная криптография.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
10.13 Mб
Скачать

Улучшения

В протокол можно встроить идентификационные данные. Пусть I - это двоичная строка, представляющая идентификатор Пегги: имя, адрес, номер социального страхования, размер головного убора, любимый сорт прохладительного напитка и другая личная информация. Используем однонаправленную хэш-функцию H(x) для вычисления H(I,j), где j - небольшое число, добавленное к I. Найдем набор j, для которых H(I,j) - это квадратичный остаток по модулю n. Эти значения H(I,j) становятся v1, v2, . . . vk (j не обязаны быть квадратичными остатками). Теперь открытым ключом Пегги служит I и перечень j. Пегги посылает I и перечень j Виктору перед шагом (1) протокола (или Виктор загружает эти значения с какой-то открытой доски объявлений), И Виктор генерирует v1, v2, . . . vk из H(I,j).

Теперь, после того, как Виктор успешно завершит протокол с Пегги, он будет убежден, что Трент, которому известно разложение модуля на множители, сертифицировал связь между I и Пегги, выдав ей квадратные корни из vi, полученные из I. (См. раздел 5.2.) Фейге, Фиат и Шамир добавили следующие замечания [544, 545]:

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

В типичных реализациях k должно быть от 1 до 18. Большие значения k могут уменьшить время и трудности связи, уменьшая количество этапов.

Длина n должна быть не меньше 512 битов. (Конечно, с тех пор разложение на множители заметно продвинулось.)

Если каждый пользователь выберет свое собственное n и опубликует его в файле открытых ключей, то можно обойтись и без арбитра. Однако такой RSA-подобный вариант делает схему заметно менее удобной.

Схема подписи Fiat-Shamir

Превращение этой схемы идентификации в схему подписи - это, по сути, вопрос превращения Виктора в хэш-функциию. Главным преимуществом схемы цифровой подписи Fiat-Shamir по сравнению с RSA является ее скорость: для Fiat-Shamir нужно всего лишь от 1 до 4 процентов модульных умножений, используемых в RSA. В этом протоколе снова вернемся к Алисе и Бобу.

Смысл переменных - такой же, как и в схеме идентификации. Выбирается n - произведение двух больших простых чисел. Генерируется открытый ключ, v1, v2, . . . vk, и закрытый ключ, s1, s2, . . . sk, где si  sqrt (vi-1) (mod n).

  1. Алиса выбирает t случайных целых чисел в диапазоне от 1 до n - r1, r2, . . ., rt - и вычисляет x1, x2, . . . xt, такие что xi = ri2 mod n.

  2. Алиса хэширует объединение сообщения и строки xi, создавая битовый поток: H(m, x1, x2, . . . xt). Она использует первые k*t битов этой строки в качестве значений bij, где i пробегает от1 до t, а j от 1 до k.

  3. Алиса вычисляет y1, y2, . . . yt,, где yi = ri *( ) mod n

(Для каждого i она перемножает вместе значения si, в зависимости от случайных значений bij. Если bij=1, то si участвует в вычислениях, если bij=0, то нет.)

  1. Алиса посылает Бобу m, все биты bij, и все значения yi. У Боба уже есть открытый ключ Алисы: v1, v2, . . . vk.

  2. Боб вычисляет z1, z2, . . . zt, где zi = y2*( ) mod n

(И снова Боб выполняет умножение в зависимости от значений bij.) Также обратите внимание, что zi должно быть равно xi.

  1. Боб проверяет, что первые k*t битов H(m, z1, z2, . . . zt) - это значения bij, которые прислала ему Алиса.

Как и в схеме идентификации безопасность схемы подписи пропорциональна l/2kt. Она также зависит от сложности разложения n на множители. Фиат и Шамир показали, что подделка подписи облегчается, если сложность разложения n на множители заметно меньше 2kt. Кроме того, из-за вскрытия методом дня рождения (см. раздел 18.1), они рекомендуют повысить k*t от 20 по крайней мере до 72, предлагая k = 9 и t = 8.