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



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

29 мая 2011


Оглавление:
1. DSA
2. Параметры схемы цифровой подписи
3. Подпись сообщения
4. Реализация алгоритма
5. Генерация псевдопростых чисел для использования в алгоритме
6. Генерация псевдослучайных чисел для использования в алгоритме



Для работы алгоритма требуется также генератор случайных или псевдослучайных чисел. Этот генератор нужен для создания частного пользовательского ключа, а также для создания секретного случайного числа k, которое вырабатывается заново для подписи каждого документа. Как и простые числа p и q, эти случайные или псевдослучайные числа должны быть получены с помощью алгоритмов, безопасность которых подтверждена FIPS. Один из таких методов описан в дополнении C к стандарту ANSI X9.17). Далее описываются методы, приведенные в дополнении к стандарту DSS.
Эти алгоритмы используют одностороннюю функцию G, где t — это N-битное число, c — b-битное, а результат функции G — N-битное. Один из способов построения такой функции — использование хеш-функции. Другой метод — использовать алгоритм симметричного шифрования. Эти методы для случая использования SHA-1 описаны в документе FIPS-186.

Способ получения m значений секретного ключа

1. Выбор секретного значения XKEY 
2. Число t = 67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0
3. Цикл по j с 0 до m - 1
 
   XSEEDj = <необязательное значение, может быть получено путем ввода пользователем>; 
   XVAL = XKEY + XSEED_j \mod 2^b; 
   x_j = G \mod q;
   XKEY = 1 + XKEY + x_j \mod 2^b;
 

Способ предварительного вычисления нескольких секретных значений k и r

1. Выбор секретного случайного значения KKEY. 
2. Число t = EFCDAB89 98BADCFE 10325476 C3D2E1F0 67452301
3. Цикл по j с 0 до m - 1
 
   k = G \mod q;
   k_j^{-1} = k^{-1} \mod q;
   r_j = g^k \mod p \mod q;
   KKEY = 1 + KKEY + k \mod 2b;
 
4. Обозначим следующие m сообщений как M0,...,Mm − 1. Цикл по j от 0 до m - 1
 
   h = SHA;
   s_j = k_j^{-1} \mod q
   Цифровая подпись для Mj - ;
 
5. t = h;
6. Переход к шагу 3;

Шаг 3 позволяет предварительно вычислить величины, необходимые для подписания следующих m сообщений. К шагу 4 можно переходить в любой момент, когда первое из этих m сообщений имеется в наличии. Когда следующее сообщение еще не доступно, исполнение шага 4 может быть приостановлено. Как только этапы 4 и 5 завершились, можно перейти к исполнению этапа 3 для работы со следующей группой из m сообщений. Кроме памяти для KKEY, необходимо выделить память для хранения двух массивов длины m, полученных на этапе 3. Память для чисел s_0, ..., s_{m-1}^{} надо выделять только если необходим сохранять подписи для группы сообщений, иначе же sj на этапе 4 могут быть заменены на одну переменную s.



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


<<< Distributed.net
Dual EC DRBG >>>