Интернет магазин китайских планшетных компьютеров



Компьютеры - Digital Signature Standard - Генерация случайных чисел для DSA

28 апреля 2011


Оглавление:
1. Digital Signature Standard
2. Параметры DSA
3. Проверка подписи
4. Генерация случайных чисел для DSA
5. Генерация других параметров



Для любой реализации DSA требуются случайные или псевдослучайные целые числа. Эти числа выбираются при помощи методов описанных в этом разделе или при помощи других одобреных FIPS методов.

Алгоритм в разделе 7.1 может быть использован для генерации x. Алгоритм для k и r описан в разделе 7.2. Алгоритмы изпользуют одностороннюю функцию G, где t имеет размер 160 бит, c имеет размер b бит и G — 160 бит. G может быть создана с помощью Secure Hash Algorithm или с помощью Data Encryption Standard, описанные в разделах 7.3 и 7.4 соответственно.

Алгоритм для вычисления m значений числа x

Пусть x — секретный ключ подписывающей стороны. Следующий алгоритм можно использовать для генерации m значений числа x:

Шаг 1. Выбираем новое значение для исходного ключа, XKEY.
Шаг 2. В шестнадцатеричной системе счисления
t = 67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0.
Это начальное значение для H0||H1||H2||H3||H4 в SHS.
Шаг 3. Для j = 0..m - 1
       a. XSEEDj = опциональное значение, введенное пользователем.
       b. XVAL = mod 2.
       c. xj = G mod q.
       d. XKEY = mod 2.

Алгоритм для предварительного вычисления k и r

Этот алгоритм может быть использован для предварительного вычисления k, k и r для m сообщений одновременно. Алгоритм:

Шаг 1. Выбирается секретное начальное значение для KKEY.
Шаг 2. В шестнадцатеричной системе счисления
t = EFCDAB89 98BADCFE 10325476 C3D2E1F0 67452301.
Это начальный сдвиг для H0||H1||H2||H3||H4 в SHS.
Шаг 3. Для j = 0..m - 1:
       a. k = G mod q.
       b. Вычисляем kj = k mod q.
       c. Вычисляем rj = mod q.
       d. KKEY = mod 2. 
Шаг 4. Предположим M0, ... , Mm-1 - следующие m сообщений. Для j = 0..m - 1:
       a. Пусть h = SHA.
       b. sj =) mod q.
       c. rj,sj) - подпись для Mj. 
Шаг 5. t = h.
Шаг 6. Переходим на шаг 3. 

Шаг 3 дает возможность вычислить величины, необходимые для подписи следующих m сообщений. Шаг 4 выполняться сразу после того, когда получены эти m сообщений.

Создание функции G при помощи SHA

G может быть получена при помощи SHA, но перед этим {Hj} и M1 должны быть инициализированы следующим образом:

1. Инициализируем {Hj} деление 160-битного значения t на пять 32-битных сегмента:
   t = t0||t1||t2||t3||t4
   Тогда Hj = tj для j = 0..4. 
2. Блок сообщения M1 определяется следующим образом:
   M1 = c||0
   бит устанавливаются нулями). 

После этого выполняется SHA и получаем 160-битную строку G, представленную в виде:

H0||H1||H2||H3||H4.

Создание функции G при помощи DES

Пусть a XOR b обозначает побитовое исключение. Пусть a1, a2, b1, b2 — 32-строки. Пусть b1' — 24 младших бита числа b1. Пусть K = b1'||b2 и A = a1||a2. Обозначим

DESb1,b2 = DESK 

DESK обозначает обычное DES-шифрование 64-битного блока A при помощи 56-битного ключа K. Предположим, что t и c имеют размер 160 бит каждое. Для вычисления G:

Шаг 1. Записываем
       t = t1||t2||t3||t4||t5
       c = c1||c2||c3||c4||c5
       Каждое ti и ci имеет размер 32 бита. 
Шаг 2. Для i = 1..5:
       xi = ti XOR ci 
Шаг 3. Для i = 1..5:
       b1 = c mod 5) + 1
       b2 = c mod 5) + 1
       a1 = xi
       a2 = x + 1 XOR x mod 5) + 1
       yi,1||yi,2 = DESb1,b2
Шаг 4. Для i = 1..5:
       zi = yi,1 XOR y mod 5)+1,2 XOR y mod 5)+1,1 
Шаг 5. G = z1||z2||z3||z4||z5


Просмотров: 4194


<<< CRYPTREC
Distributed.net >>>