Генерация простых чисел DSA


Ленстра и Хабер указали, что взломать некоторые модули намного легче, чем другие [950]. Если кто-нибудь заставит пользователей сети использовать один из таких слабых модулей, то их подписи будет легче подделать. Тем не менее это не представляет проблемы по двум причинам: такие модули легко обнаружить, и они так редки, что вероятность случайно использовать одного из них пренебрежимо мала, меньше, чем вероятность случайно получить составное число на выходе вероятностной процедуры генерации простых чисел.

В [1154] NIST рекомендовал конкретный метод генерации двух простых чисел, p и q, где qявляется делителем p-1. Длина простого числа p- между 512 и 1024 и кратна 64 -битам. Пусть L-1= 160n+b, где L- это длина p, а n и b - два числа, причем b меньше 160.

(1) Выберем произвольную последовательность, по крайней мере, 160 битов и назовем ее S. Пусть g- это длина Sв битах.

(2) Вычислим U= SHA(S)Å SHA((S + 1) mod 2g), где SHA описан в разделе 18.7.

(3) Образуем q, установив наибольший и наименьший значащие биты Uв 1.

(4) Проверим, является ли q простым.

(5) Если qне является простым, то вернемся на этап (1).

(6) Пусть C=0 и N=2.

(7) Для k=0,l,...,n, пусть Vk=SHA((S+N+k) mod 2g)

(8) Пусть W - целое число

W= V0+ 2160V1 +. . .+ 2160(n-1) Vn-1 + 2160 (Vnmod 2b)

и пусть

X= W+ 2L-1

Обратите внимание, что X - это L-битовое число.

(9) Пусть p = X- ((X mod 2q) - 1). Обратите внимание, что pконгруэнтно 1 mod 2q.

(10) Если p < 2L-1, то перейдем на этап (13).

(11) Проверим, является ли p простым числом.

(12) Если p - простое, перейдем к этапу (15).

(13) Пусть C=C+1 и N=N+n+l.

(14) Если C= 4096, вернемся к этапу (1). В противном случае перейдем на этап (7).

(15) Сохраним значения Sи C, использованные для генерации pи q.

В [1154] переменная Sназывается стартовой, переменная C- счетчиком, а N- смещением.

Смысл этого упражнения в том, что оно является опубликованным способом генерации pи q. Для всех практических применений этот метод позволяет избежать слабых значений p и q. Если кто-то вручит вам какие-то pи q, вас может заинтересовать, как получены эти числа. Однако, если вы получите значения Sи C, использованные при генерации случайных pи q, вы сможете повторить всю процедуру самостоятельно. Использование однонаправленной хэш-функции (в стандарте используется SHA) не позволяет получить Sи C по значениям pи q.

Эта безопасность лучше, чем обеспечиваемая RSA. В RSA простые числа хранятся в секрете. Любой может генерировать фальшивое простое число или число, форма которого упрощает разложение на множители. Не зная закрытого ключа, это никогда не проверишь. В DSA, даже если закрытый ключ неизвестен, можно убедиться, что pи q генерировались случайным образом.



Дата добавления: 2021-01-26; просмотров: 365;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.