Криптосистема RSA


RSA – криптографическая система открытого ключа, обеспечивающая такие механизмы защиты как шифрование и цифровая подпись (аутентификация – установление подлинности). Криптосистема RSA разработана в 1977 году и названа в честь ее разработчиков Ronald Rivest, Adi Shamir и Leonard Adleman. Алгоритм RSA работает следующим образом: берутся два достаточно больших простых числа p и q и вычисляется их произведение n = p*q; n называется модулем. Затем выбирается число e, удовлетворяющее условию

1< e < (p - 1)*(q - 1) и не имеющее общих делителей кроме 1 (взаимно простое) с числом (p - 1)*(q - 1). Затем вычисляется число d таким образом, что (e*d - 1) делится на (p - 1)*(q – 1).

e – открытый (public) показатель
d – частный (private) показатель
(n; e) – открытый (public) ключ
(n; d). – частный (private) ключ.

Криптосистема RSA


Делители (факторы) p и q можно либо уничтожить либо сохранить вместе с частным (private) ключом. Если бы существовали эффективные методы разложения на сомножители (факторинга), то, разложив n на сомножители (факторы) p и q, можно было бы получить частный (private) ключ d. Таким образом надежность криптосистемы RSA основана на трудноразрешимой – практически неразрешимой – задаче разложения n на сомножители (то есть на невозможности факторинга n) так как в настоящее время эффективного способа поиска сомножителей не существует. Ниже описывается использование системы RSA для шифрования информации и создания цифровых подписей (практическое применение немного отличается).


Шифрование
Предположим, Алиса хочет послать Бобу сообщение M. Алиса создает зашифрованный текст С, возводя сообщение M в степень e и умножая на модуль n: C = M**e* (mod n), где e и n – открытый (public) ключ Боба. Затем Алиса посылает С (зашифрованный текст) Бобу. Чтобы расшифровать полученный текст, Боб возводит полученный зашифрованный текст C в степень d и умножает на модуль n:

M = c**d*(mod n); зависимость между e и d гарантирует, что Боб вычислит M верно. Так как только Боб знает d, то только он имеет возможность расшифровать полученное сообщение.


Цифровая подпись
Предположим, Алиса хочет послать Бобу сообщение M , причем таким образом, чтобы Боб был уверен, что сообщение не было взломано и что автором сообщения действительно является Алиса. Алиса создает цифровую подпись S возводя M в степень d и умножая на модуль n:
S = M**d*(mod n), где d и n – частный ключ Алисы. Она посылает M и S Бобу.
Чтобы проверить подпись, Боб возводит S в степень e и умножает на модуль n: M = S**e*(mod n), где e и n – открытый (public) ключ Алисы. Таким образом шифрование и установление подлинности автора сообщения осуществляется без передачи секретных (private) ключей: оба корреспондента используют только открытый (public) ключ своего корреспондента или собственный частный (private) ключ. Послать зашифрованное сообщение и проверить подписанное сообщение может любой, но расшифровать или подписать сообщение может только владелец соответствующего частного (private) ключа.


Скорость работы алгоритма RSA
Как при шифровании и расшифровывании, так и при создании и проверке подписи алгоритм RSA по существу состоит из возведения в степень, которое выполняется как ряд умножений. В практических приложениях для открытого ключа обычно выбирается относительно небольшой показатель, а зачастую группы пользователей используют один и тот же открытый показатель, но каждый с различным модулем. Если открытый показатель неизменен, то вводятся некоторые ограничения на главные сомножители (факторы) модуля. При этом шифрование данных идет быстрее расшифровывания, а проверка подписи быстрее, чем подписание.

сли k — количество битов в модуле, то в обычно используемых для RSA алгоритмах количество шагов, необходимых для выполнения операции с открытым ключом, пропорционально второй степени k, количество шагов для операций частного ключа — третьей степени k, количество шагов для операции создания ключей — четвертой степени k.

Методы “быстрого умножения” (например, методы, основанные на быстром преобразовании Фурье (Fast Fourier Transform, FFT)) выполняются гораздо меньшим количеством шагов. Тем не менее, они не получили широкого распространения из-за сложности программной реализации, а также потому, что с распространенными размерами ключей они фактически работают медленнее. Однако производительность и эффективность приложений и оборудования, реализующих алгоритм RSA, быстро увеличиваются. Алгоритм RSA намного медленнее, чем DES и другие алгоритмы блочного шифрования. Программная реализация DES работает быстрее, по крайней мере, в 100 раз и от 1000 до 10 000 — в аппаратной реализации (в зависимости от конкретного устройства). Благодаря ведущимся разработкам, скорость алгоритма RSA, вероятно, увеличится, но одновременно ускорится и работа алгоритмов блочного шифрования.


Применение алгоритма RSA на практике


На практике криптосистема RSA часто используется вместе с криптографической системой секретного ключа типа DES для зашифровывания сообщения ключом RSA посредством цифрового конверта.
Предположим, что Алиса посылает зашифрованное сообщение Бобу. Сначала она шифрует сообщение по алгоритму DES, используя случайно выбранный ключ DES и затем шифрует ключ DES открытым (public) ключом RSA Боба. Сообщение зашифрованное ключом DES и ключ DES зашифрованный в свою очередь ключом RSA вместе формируют цифровой конверт RSA и отсылаются Бобу. Получив цифровой конверт, Боб расшифровывает ключ DES с помощью своего частного (private) ключа, а затем использует ключ DES, чтобы расшифровать само сообщение.


Применение алгоритма RSA для установления подлинности и цифровых подписей
Криптосистема RSA может использоваться также и для подтверждения подлинности или идентификации другого человека или юридического лица. Это возможно потому, что каждый зарегистрированный пользователь криптосистемы имеет свой уникальный частный (private) ключ, который (теоретически) больше никому недоступен. Именно это делает возможным положительную и уникальную идентификацию Предположим, Алиса желает послать подписанное сообщение Бобу. Она хеширует сообщение (применяет к сообщению хеш-функцию), чтобы создать дайджест сообщения, который является как бы “цифровым отпечатком” сообщения. Затем Алиса шифрует дайджест сообщения своим частным (private) ключом, создавая цифровую подпись, которую посылает Бобу непосредственно вместе с сообщением.

Получив сообщение и подпись, Боб расшифровывает подпись открытым (public) ключом Алисы и получает таким образом даджест сообщения. Затем он обрабатывает сообщение той же хеш-функцией что и Алиса и сравнивает результат с дайджестом сообщения, полученным при расшифровке подписи. Если они совпадают точно, то это означает успешную проверку подписи и Боб может быть уверен, что сообщение действительно послано Алисой. Если же результаты не одинаковы, то это означает, что либо сообщение пришло не от Алисы, либо было изменено при передаче (то есть после того, как Алиса его подписала). Подпись Алисы может проверить любой, кто получил или перехватил это сообщение. Еcли же Алиса хочет сохранить содержание документа в тайне, то она подписывает документ, а затем зашифровывает его открытым (public) ключом Боба. Боб расшифровывает сообщение своим частным (private) ключом и проверяет подпись на восстановленном сообщении, используя открытый (public) ключ Алисы. Либо – если, например, необходимо, чтобы посредник мог подтвердить целостность сообщения, не получая доступ к его содерданию – вместо дайджеста открытого текста может быть рассчитан дайджест зашифрованного сообщения. На практике же общий показатель алгоритма RSA обычно много меньше показателя частного и потому проверка подписи осуществляется быстрее чем подписание. Это является оптимальным так как сообщение подписывется только однажды, а проверка подписи может быть неоднократной.

Для обеспечения секретности обмена информацией необходимо исключить для нападающего возможность во-первых получить открытое сообщение, соответствующее хешированному, а во-вторых получить два различных хешированных сообщения, имеющих одно значение так как в любом из этих случаев нападающий имеет возможность присоединить к подписи Алисы ложное сообщение. Специально для этого разработаны функции хеширования MD5 и SHA, которые делают такое сопоставление невозможным. Цифровая подпись может сопровождаться одним или несколькими сертификатами. Сертификат – заверенный подписью документ, подтверждающий принадлежность открытого (public) ключа определенному владельцу, благодаря чему предотвращается возможность имитации отправителя. При наличии сертификата, получатель (или третье лицо) имеет возможность удостовериться в принадлежности ключа автору сообщения, то есть ключ позволяет удостоверить сам себя.


Использование криптосистемы RSA в настоящее время
Криптосистема RSA используется в самых различных продуктах, на различных платформах и во многих отраслях. В настоящее время криптосистема RSA встраивается во многие коммерческие продукты, число которых постоянно увеличивается. Также ее используют операционные системы Microsoft, Apple, Sun и Novell. В аппаратном исполнении RSA алгоритм применяется в защищенных телефонах, на сетевых платах Ethernet, на смарт-картах, широко используется в криптографическом оборудовании. Кроме того, алгоритм входит в состав всех основных протоколов для защищенных коммуникаций Internet, в том числе S/MIME, SSL и S/WAN, а также используется во многих учреждениях, например, в правительственных службах, в большинстве корпораций, в государственных лабораториях и университетах. На осень 2000 года технологии с применением алгоритма RSA были лицензированы более чем 700 компаниями.
Технологию шифрования RSA BSAFE используют около 500 миллионов пользователей всего мира. Так как в большинстве случаев при этом используется алгоритм RSA, то его можно считать наиболее распространенной криптосистемой общего (public) ключа в мире и это количество имеет явную тенденцию к увеличению по мере роста Internet.


Стандарты с применением RSA


Криптосистема RSA – часть многих стандартов. Стандарт ISO 9796 описывает RSA как совместимый криптографический алгоритм, соотвествующий стандарту безопасности ITU-T X.509. Кроме этого криптосистема RSA является частью стандартов SWIFT, ANSI X9.31 rDSA и проекта стандарта X9.44 для американских банков. Австралийский стандарт управления ключами AS2805.6.5.3 также включает систему RSA. Алгоритм RSA используется в Internet, в частности он входит в такие протоколы как S/MIME, IPSEC (Internet Protocol Security) и TLS (которым предполагается заменить SSL), а также в стандарт PKCS, применяемый в важных приложениях.
Для разработчиков приложений с применением PKCS организация OSI Implementers' Workshop (OIW) выпустила соглашение, которое в частности посвящено алгоритму RSA.

Множество других разрабатываемых в настоящее время стандартов включают в себя либо сам алгоритм RSA или его поддержку либо рекомендуют криптосистему RSA для обеспечения секретности и/или установления подлинности (аутентификации). Например, включают в себя систему RSA рекомендации IEEE P1363 и WAP WTLS.


Криптосистема RSA в мире
На начало 2001 года криптосистема RSA являлась наиболее широко используемой асимметричной криптосистемой (криптосистемой открытого (public) ключа) и зачастую называется стандартом де факто. Вне зависимости от официальных стандартов существование такого стандарта чрезвычайно важно для развития электронной коммерции и вообще экономики. Единая система открытого (public) ключа допускает обмен документами с электронно-цифровыми подписями между пользователями различных государств, использующими различное программное обеспечение на различных платформах; такая возможность насущно необходима для развития электронной коммерции. Распространение системы RSA дошло до такой степени, что ее учитывают при создании новых стандартов. При разработке стандартов цифровых подписей, в первую очередь в 1997 был разработан стандарт ANSI X9.30, поддерживающий Digital Signature Standard (стандарт Цифровой подписи). Годом позже был введен ANSI X9.31, в котором сделан акцент на цифровых подписях RSA, что отвечает фактически сложившейся ситуации в частности для финансовых учреждений.

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

Обновлено: 11.03.2015