Современные системы шифрования (Лабораторная работа № 1), страница 3

Малый секретный показатель. Еще  хуже,  если мал  секретный  показатель.  Еще  в 1990  году М. Винер (М. Wiener) показал, как, зная открытый ключ , где , можно вычислить компоненту  секретного ключа, если число  слишком мало. Результат Винера был недавно усилен Д. Бонехом и Г. Дурфи, которые показали, что  можно вычислить из , если . Существует гипотеза, что это же верно и для . Таким образом, для типичных размеров модуля RSA получаем следующие ограничения на секретный показатель :

n

d

2768

2384

21024

2512

22048

21024

24096

22048

Уязвимости программной реализации. Помимо уязвимостей, обусловленных выбором параметров, существует еще множество проблем, вызванных некорректной реализацией, что также может сказаться на безопасности криптосистемы RSA, да и любой другой криптографической процедуры. Нужно с крайней осторожностью использовать чисто программную реализацию, не защищенную от внешних атак какими-нибудь аппаратными средствами. Чтение содержимого памяти, наблюдение за поведением шины или состояниями процессора может привести к раскрытию информации о секретном ключе. Минимум что нужно делать – это сразу же после использования очищать оперативную память от всех данных, так или иначе связанных с секретными компонентами RSA (и любой другой криптосистемы). Это можно сделать путем активной перезаписи памяти.

Для приложений, связанных с безопасностью, посоветуем еще использовать такой исчерпывающий механизм обработки ошибок, при котором даже в случае неверно заданного аргумента или в других исключительных ситуациях не разглашается никакая критическая информация. Точно так же необходимо принять меры для проверки подлинности кодов программ, реализующих криптографические приложения, чтобы предотвратить закладку троянских коней (или хотя бы обнаружить их), прежде чем программа будет запущена.

В литературе часто рекомендуется в качестве  и  использовать так называемые сильные простые числа, позволяющие противостоять некоторым простым методам разложения. Простое число  называется сильным, если

(а)    число  имеет большой простой делитель ,

(б)   число  имеет большой простой делитель ;

(в)   число имеет большой простой делитель .

Высказываются разные мнения о влиянии сильных простых чисел на безопасность криптосистемы RSA. С недавних пор большинство сходится на том, что, хотя использовать простые числа не вредно, большой пользы от них тоже нет. Некоторые считают, что эти числа использовать вообще не стоит.

Обоснование выбора длины ключа

Что касается выбора длины ключа, наиболее информативными здесь будут сведения о попытках разложения чисел на множители. В апреле 1996 года после нескольких месяцев совместной работы ряда университетов и исследовательских лабораторий США и Европы под руководством А. К. Ленстры для RSA-модуля

RSA-130 = 18070820886874048059516561644059055662781025167

69401349170127021450056662540244048387341127590

812303371781887966563182013214880557

длины 130 десятичных разрядов было найдено разложение вида

RSA-130 = 39685999459597454290161126162883786067576449112

810064832555157243

×        

45534498646735972188403686897274408864356301263

205069600999044599.

Затем в феврале 1999 года модуль

RSA-140 = 21290246318258757547497882016271517497806703963

27721627823338321538194998405649591136657385302

1918316783107387995317230889569230873441936471

был разложен на два 70-разрядных множителя:

RSA-140 = 33987174230284385545301236276138758356339864959

69597423490929302771479

×

62642001874012850961516549482644422193020371786

23509019111660653946049.