Опубликован: 19.01.2010 | Уровень: специалист | Доступ: платный
Лекция 14:

Криптографическая система RSA

< Лекция 13 || Лекция 14: 12345 || Лекция 15 >

14.2. Криптографическая система RSA

Самый общий алгоритм открытого ключа доступа — криптографическая система RSА, названная по имени его изобретателей Ривеста, Шамира, Эделмана (Rivest, Shamir и Adelman).

Введение

RSА использует два типа ключей — e и d, где e — открытый, a d — секретный. Предположим, что P — исходный текст и C — зашифрованный текст. Алиса использует C = Pe mod n, чтобы создать зашифрованный текст C из исходного текста P ; Боб использует P = Cd mod n, чтобы извлечь исходный текст (файл), переданный Алисой. Модулей n создается очень большое количество с помощью процесса генерации ключей, который мы обсудим позже.

Для шифрования и дешифрования применяют возведение в степень по модулю. Как мы уже обсуждали в лекциях 12-13, при использовании быстрого алгоритма возведение в степень по модулю выполнимо в полиномиальное время. Однако нахождение модульного логарифма так же сложно, как и разложение числа по модулю. Для него нет алгоритма с полиномиальным временем. Это означает, что Алиса может зашифровать сообщение общедоступным ключом (e) в полиномиальное время. Боб также может расшифровать его в полиномиальное время (потому что он знает d ). Но Ева не может расшифровать это сообщение, потому что она должна была бы вычислить корень e -той степени из C с использованием модульной арифметики. Рисунок 14.5 показывает идею RSA.

 Сложность операций в RSA

Рис. 14.5. Сложность операций в RSA

Другими словами, Алиса использует одностороннюю функцию (возведение в степень по модулю) с лазейкой, известной только Бобу. Ева не знает лазейку, поэтому не может расшифровать сообщение. Если когда-нибудь найдут полиномиальный алгоритм для модуля вычисления корня e -той степени из n, то возведение в степень по модулю n не будет больше односторонней функцией.

Процедура

Рисунок 14.6 показывает общую идею процедуры, используемой в RSA.

RSA использует возведение в степень по модулю для шифрования/дешифрования. Для того чтобы атаковать закрытый текст, Ева должна вычислить \root e \of C \bmod n
 Шифрование, дешифрование и генерация ключей в RSA

Рис. 14.6. Шифрование, дешифрование и генерация ключей в RSA
Две алгебраические структуры

RSA использует две алгебраических структуры: кольцо и группу.

Кольца шифрования/дешифрования. Шифрование и дешифрование сделаны с использованием коммутативного кольца R = \<{Z_n}, + , \times \> с двумя арифметическими операциями: сложение и умножение. В RSA это кольцо общедоступно, потому что модуль n общедоступен. Любой может послать сообщение Бобу, используя это кольцо для шифрования.

Группы генерирования ключей. RSA использует мультипликативную группу G = \<{Z_{\varphi (n)*}}, \times \> для генерации ключей. Группа поддерживает только умножение и деление (мультипликативную инверсию), которые необходимы для того, чтобы создать открытые и секретные ключи. Эту группу надо скрыть, потому что ее модуль \varphi (n) является секретным. Мы увидим, что если Ева найдет этот модуль, она сможет легко атаковать криптографическую систему.

RSA использует две алгебраических структуры: открытое кольцо R = < Z n , +, x > и секретную группу G = < Z \phi (n)* , x >.
Генерация ключей

Боб использует шаги, показанные в алгоритме 14.2, чтобы создать свои открытый и секретный ключи. После генерации ключей Боб объявляет кортеж (e, n) как свой открытый ключ доступа: Боб сохраняет d как свой секретный ключ. Боб может отказаться от p, q и \varphi (n) ; они не могут изменить его секретный ключ, не изменяя модуль. Для безопасности рекомендуется размер для каждого простого p или q512 бит (почти 154 десятичные цифры). Это определяет размер модуля, n 1024 бита ( 309 цифр).

\tt\parindent0pt

RSA Key\_Generation (RSA - генерация ключа)

\{ 

Выбрать два больших простых  $p$ and $q$,  таких, что  $p \ne  q$.

$n \gets  p \times q$

$\varphi (n)\gets (p-1)\times(q–1)$

Выбрать $e$, такое, что $1 < e < \varphi (n)$ и $e$ is — взаимно простое с $\varphi (n)$

$d \gets  e^{-1} \mod\ \varphi (n)$\ \ \ \ \          // $d$ - это инверсия $e$ по модулю $\varphi (n)$

Открытый ключ  $\gets  (e, n)$\ \ \ \                      // Объявляется  открытым

Секретный ключ $\gets  d$\ \ \ \ \                          // Сохраняется в секрете

return Public\_key and Private\_key\ \ \ \         // Возврат открытого и секретного ключей

\}
14.2. RSA-генерация ключей
В RSA кортеж (e, n) — открытый ключ доступа; целое число d — секретный ключ.
Шифрование

Передать сообщение Бобу может любой, используя его открытый ключ доступа. Шифрование в RSA может быть выполнено с использованием алгоритма с полиномиальной сложностью по времени, как показано в алгоритме 14.3. Быстрый алгоритм возведения в степень был рассмотрен в лекциях 12-13. Размер исходного текста должен быть меньше чем n ; если размер исходного текста больше, то он должен быть разделен на блоки.

RSA_Encryption (P, e, n)                  // P — исходный текст в  Zn  и  P < n
{
  C <- Fast_Exponentiation (P, e, n)        //Вычисление  (Pe mod n)
  return C
}
14.3. Шифрование RSA
Дешифрование

Чтобы расшифровать сообщение зашифрованного текста, которое Боб получил в RSA, он может использовать алгоритм 14.4. Это можно выполнить, используя алгоритм с полиномиальной сложностью по времени, если размер зашифрованного текста меньше, чем n.

RSA_Decryption (C, d, n)	  //C — зашифрованный текст в Zn
{
  P <- Fast_Exponentiation (C, d, n)    	// Вычисление (Cd mod n) 

  return P
}
14.4. Дешифрование RSA
В RSA p и q должны быть по крайней мере 512 битов; n должны быть по крайней мере 1024 бит.
Доказательство RSА

Используя вторую версию теоремы Эйлера, которая обсуждалась в лекциях 12-13, мы можем доказать, что шифрование и дешифрование инверсны друг другу.

\tt\parindent0pt

Если $n =p \times q < n$, и $k$ - целое число, тогда $a^{k\times\varphi (n)+1} \equiv  a (mod\ n)$.

Предположим, что исходный текст, восстановленный Бобом, есть P1. Докажем, что он эквивалентен P.

\tt\parindent0pt

$P_{1}=C^{d}\mod n = (P^{e} \mod\ n) \mod\ n = P^{ed} \mod\ n$

$ed = k\varphi (n)+1$        \ \ \ \        // $d$ и $e$ инверсны по модулю $\varphi (n)$

$P_{1}=P^{ed} \mod n \to  P_{1} = P^{k\varphi (n)+1} \mod n$

$P_{1}=P^{k\varphi (n)+1} \mod\ n = P \mod\ n$\ \ \ \      // Теорема Эйлера (вторая версия)
< Лекция 13 || Лекция 14: 12345 || Лекция 15 >
Евгений Виноградов
Евгений Виноградов

Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа?

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????

Татьяна Крыжановская
Татьяна Крыжановская
Украина, Одесса
Valeriya Gubareva
Valeriya Gubareva
Россия