УДК 004

НАДЕЖНОСТЬ РЕАЛИЗАЦИЙ АЛГОРИТМА RSA

Волокитина Татьяна Сергеевна
Юго-Западный государственный университет

Аннотация
Статья посвящена описанию реализации шифра RSA. В данной статье приведена теоретическая справка, а также пример использования шифра.

Ключевые слова: , ,


Рубрика: 05.00.00 ТЕХНИЧЕСКИЕ НАУКИ

Библиографическая ссылка на статью:
Волокитина Т.С. Надежность реализаций алгоритма RSA // Современные научные исследования и инновации. 2021. № 4 [Электронный ресурс]. URL: https://web.snauka.ru/issues/2021/04/95115 (дата обращения: 25.11.2021).

В современном обществе задача обеспечения защищенной передачи информации является одной из наиболее актуальных из-за широкого распространения информационных систем и сервисов, обрабатывающих конфиденциальную информацию. При этом зачастую существует необходимость обеспечить защищенную передачу информации между узлами, не имеющими безопасного канала связи, например, компьютерами, подключенными к сети Интернет. Первым шагом к решению этой проблемы была работа Уитфилда Диффи и Мартина Хеллмана «Новые направления в современной криптографии», описывающая передачу открытого ключа по открытому каналу, для получения секретных ключей [1].

Алгоритм RSA разработан Рональдом Ривестом, Ади Шамиром и Леонардом Адлеманом в 1977 году и до сих пор является широко распространённым криптографическим алгоритмом с открытым ключом [2]. В основе алгоритма RSA, применяемого как для шифрования, так и для цифровой подписи, лежит задача факторизации больших целых чисел. Несмотря на то, что в 2010 году были опубликованы результаты о взломе шифра с длиной ключа 768 бит, зашифрованные данные с помощью ключей 1024 и 2048 бит по-прежнему считаются защищёнными и используются в современных криптосистемах [3].
Для получения зашифрованных данных с помощью алгоритма RSA злоумышленнику необходимо найти значение , определяемое по формуле (1).

      (1)

Открытым ключом, который может быть известен злоумышленнику, является пара значений . Значение  может быть получено, если известно значение , вычисляемое по формуле (2).

        (2)

Для получения , злоумышленнику необходимо разложить известное ему число  на простые множители  и , что в общем случае является крайне сложной задачей.
При этом, не смотря на высокую надежность алгоритма RSA, существует большое количество уязвимостей в различных реализациях этого алгоритма. Одной из таких уязвимостей может быть уязвимость в выборе простых чисел  и . Если простые числа не выбираются независимо друг от друга, а, например, являются последовательными простыми числами, то атака на данную реализацию может быть проведена за . Исходные простые числа  и  будут лежать в окрестностях числа .
Другим примером реализации алгоритма RSA, не обеспечивающем необходимой надежности, является библиотека «RSA Library», распространяемая под лицензией LGPLv2 [4]. Данная библиотека написана на языке PHP и с 2005 года была распространена тиражом более 5000 копий.

Листинг 1. Фрагмент кода генерации простых чисел  и 

function generate_keys ($show_debug=0){
    global $primes, $maxprimes;
    while (empty($e) || empty($d)) {
         $p = $primes[mt_rand(0, $maxprimes)];
         while (empty($q) || ($p==$q)) $q = $primes[mt_rand(0, $maxprimes)];
         $n = $p*$q;
         $pi = ($p – 1) * ($q – 1);
         $e = tofindE($pi, $p, $q);
         $d = extend($e,$pi);
         $keys = array ($n, $e, $d);
    }

На представленном выше фрагменте исходного кода программы «RSA Library» видно, что для генерации простых чисел  и  используется выбор случайных элементов из массива простых чисел, подготовленного заранее я заданного явно в коде программы. Очевидно, что обеспечить надежность зашифрованных с применением данной программы данных невозможно, т.к. простые числа выбираются из конечного, к тому же сильно ограниченного, массива простых чисел. Массив чисел содержит 570 элементов и задача факторизации, столь сложная в алгоритме RSA, в данной его реализации является вполне тривиальной и может быть с лёгкостью решена полным перебором всех возможных делителей числа .
Из представленных выше примеров видно, что использовать надежные криптографические алгоритмы недостаточно для обеспечения защищенности данных, необходимо применять надежные реализации таких алгоритмов.


Библиографический список
  1. Whitfield Diffie, Martin E. Hellman. New Directions in Cryptography (англ.) // IEEE Transactions on Information Theory. — Nov. 1976. — Т. IT-22. — С. 644–654.
  2. R.L. Rivest, A. Shamir, L. Adleman. A method for obtaining digital signatures and public key cryptosystems (англ.) Comm. ACM, — 1978. — P. 120–126.
  3. Thorsten Kleinjung, Kazumaro Aoki, Jens Franke, Arjen K. Lenstra, Emmanuel Thomé: Factorization of a 768-bit RSA modulus. IACR Cryptology ePrint Archive 2010: 6 (2010).


Количество просмотров публикации: Please wait

Все статьи автора «Волокитина Татьяна Сергеевна»


© Если вы обнаружили нарушение авторских или смежных прав, пожалуйста, незамедлительно сообщите нам об этом по электронной почте или через форму обратной связи.

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

Вы должны авторизоваться, чтобы оставить комментарий.

Если Вы еще не зарегистрированы на сайте, то Вам необходимо зарегистрироваться:
  • Регистрация