Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ЗИ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
6.12 Mб
Скачать

Алгоритм цифровой подписи (digital signature algorithm, dsa)

В августе 19991 года Национальный институт стандартов и техники (National Institute of Standards and Technology, NIST) предложил для использования в своем Стандарте цифровой подписи (Digital Signature Standard, DSS) Алгоритм цифровой подписи (Digital Signature Algorithm, DSA). DSA, представляющий собой вариант алгоритмов подписи Schnorr и EIGamal.

Алгоритм использует следующие параметры:

  • p = простое число длиной L битов, где L принимает значение, кратное 64, в диапазоне от 512 до 1024. (В первоначальном стандарте размер p был фиксирован и равен 512 битам.)

  • q = 160-битовой простое число - множитель p-1.

  • g = h(p-1)/q mod p, где h - любое число, меньшее p-1, для которого h(p-1)/q mod p больше 1.

  • x = число, меньшее q.

  • y = gx mod p.

В алгоритме также используется однонаправленная хэш-функция: H(m). Стандарт определяет использование SHA.

Первые три параметра, p, q и g, открыты и могут быть общими для пользователей сети. Закрытым ключом является x, а открытым - y. Чтобы подписать сообщение, m:

  1. Алиса генерирует случайное число k, меньшее q

  2. Алиса генерирует

r = (gk mod p) mod q

s = (k-1 (H(m) + xr)) mod q

Ее подписью служат параметры r и s, она посылает их Бобу.

  1. Боб проверяет подпись, вычисляя

w = s-1 mod q

u1 = (H(m) * w) mod q

u2 = (rw) mod q

v = (( ) mod p) mod q

Если v = r, то подпись правильна.

Таблица 3.4. представляет собой краткое описание алгоритма.

Открытый ключ:

p

простое число длиной от 512 до 1024 битов (может использоваться группой пользователей)

q

160-битовый простой множитель p-1 (может использоваться группой пользователей)

g

= h(p-1)/q mod p, где h - любое число, меньшее p-1, для которого h(p-1)/q mod p > 1 (может использоваться группой пользователей)

y

= gx mod p (p-битовое число)

Закрытый ключ:

x

< q (160-битовое число)

Подпись:

k

выбирается случайно, меньшее q

r

(подпись) = (gk mod p) mod q

s

(подпись) = (k-1 (H(m) + xr)) mod q

Проверка:

w

= s-1 mod q

u1

= (H(m) * w) mod q

u2

= (rw) mod q

v

= (( ) mod p) mod q

Если v = r, то подпись правильна.

Алгоритм цифровой подписи гост р 34.10-94

Алгоритм использует следующие параметры:

  • p = простое число, длина которого либо между 509 и 512 битами, либо между 1020 и 1024 битами.

  • q = простое число - множитель p-1, длиной от 254 до 256 битов.

  • a = любое число, меньшее p-1, для которого aq mod p = 1.

  • x = число, меньшее q.

  • y = ax mod p.

Этот алгоритм также использует однонаправленную хэш-функцию: H(x). Стандарт определяет использование хэш-функции ГОСТ Р 34.11-94, основанной на симметричном алгоритме ГОСТ 28147-89.

Первые три параметра, p, q и a, открыты и могут использоваться совместно пользователями сети. Закрытым ключом служит x, а открытым - y. Чтобы подписать сообщение m

  1. Алиса генерирует случайное число k, меньшее q

  2. Алиса генерирует I = (a* mod p) mod q s = (ct + k(H(m))) mod q

r = (ak mod p) mod q

s = (xr + k(H(m))) mod q

Если H(m) mod q =0, то значение хэш-функции устанавливается равным 1. Если r =0, то выберите другое значение k и начните снова. Подписью служат два числа: r mod 2256 и s mod 2256, Алиса посылает их Бобу.

  1. Боб проверяет подпись, вычисляя

v = H(m)q-2 mod q

z1 = (sv) mod q

z2 = ((q-r)*v) mod q

u = (( ) mod p) mod q

Если u = r, то подпись правильна.

Различие между этой схемой и DSA в том, что в DSA s = (k-1 (H(m) + xr)) mod q, что дает другое уравнение проверки. Любопытно, однако, что длина q равна 256 битам. Большинству западных криптографов кажется достаточным q примерно 160 битов длиной.

Есть и еще один отечественный стандарт вычисления ЭЦП – ГОСТ Р 34.10‑2001 «Информационная технология. Криптографическая защита информации. Т.к. срок действия ГОСТ Р 34.10‑94 заканчивается 31 декабря 2007 года, в разрабатываемых системах криптографической защиты информации алгоритмом ЭЦП по умолчанию является ГОСТ Р 34.10‑2001, а стандарт 1994 года используется лишь для достижения совместимости с раннее разработанными программами защиты.

Большинство схем выработки ЭЦП однотипны и могут уложиться в следующую схему:

Даже при поверхностном анализе двух стандартов ЭЦП (ГОСТ Р 34.10‑94 и ГОСТ Р 34.10‑2001) видно, что собственно сама схема генерации и проверки ЭЦП одинаковые. Различны только способы обеспечения сложности подделки ЭЦП, т.е. так называемой стойкости алгоритма ЭЦП. Стойкость алгоритма ЭЦП из ГОСТ Р 34.10‑94 обеспечивается трудностью логарифмирования больших чисел в конечном простом поле. Стойкость же алгоритма ЭЦП из ГОСТ Р 34.10‑2001 обеспечивается трудностью определения n по исходному произведению nP точки P эллиптической кривой Е конечном простом поле.