Райвест-Шамир-Адлeман+RSA

Описание RSA было опубликовано в 1977 году Рональдом Райвестом (Ronald Linn Rivest), Ади Шамиром (Adi Shamir) и Леонардом Адлеманом (Leonard Adleman) из Массачусетского Технологического Института (MIT). Система была названа по первым буквам их фамилий. Алгоритм RSA стал первым алгоритмом с открытым ключом, который может работать в режиме как шифрования данных, так и электронной цифровой подписи.

В 1977 году создателями RSA была зашифрована фраза «The Magic Words are Squeamish Ossifrage» («Волшебные слова — это брезгливый ягнятник»). За расшифровку была обещана награда в 100 долларов США. Фраза была расшифрована в 1993—1994 годах. Более 600 добровольцев жертвовали процессорное время с около 1600 машин (две из которых были факс-машинами) больше шести месяцев. Координирование проходило через Интернет, и это был один из первых подобных проектов распределённых вычислений. Полученную награду победители пожертвовали в фонд свободного программного обеспечения.

**Описание алгоритма ** Безопасность алгоритма RSA основана на трудности задачи разложения на множители. Алгоритм использует два ключа — открытый (public) и секретный (private), вместе открытый и соответствующий ему секретный ключи образуют пару ключей (keypair). Открытый ключ не требуется сохранять в тайне, он используется для шифрования данных. Если сообщение было зашифровано открытым ключом, то расшифровать его можно только соответствующим секретным ключом.


 * Генерация ключей**

Для того, чтобы сгенерировать пару ключей выполняются следующие действия: Число //n// называется модулем, а числа //e// и //d// — открытой и секретной экспонентами, соответственно. Пара чисел //(n,e)// является открытой частью ключа, а //d// — секретной. Числа //p// и //q// после генерации пары ключей могут быть уничтожены, но ни в коем случае не должны быть раскрыты.
 * 1) Выбираются два больших случайных простых числа p и q
 * 2) Вычисляется их произведение // n = pq //
 * 3) Вычисляется Функция Эйлера j (n)=(p-1)(q-1)
 * 4) Выбирается целое // e // такое, что //1< e (  n ) и // e // взаимно простое с j (n)
 * 5) С помощью расширенного алгоритма Евклида находится число d такое, что //e·d = 1mod j  (n) //.

Для того, чтобы зашифровать сообщение //m < n// вычисляется Число // c // и используется в качестве шифртекста. Для расшифровывания нужно вычислить Нетрудно убедиться, что при расшифровывании мы восстановим исходное сообщение:
 * Шифрование и расшифрование**

Из условия следует, что для некоторого целого k, следовательно . Согласно теореме Эйлера: , поэтому

media type="custom" key="24525760"media type="custom" key="24525766"

Ссылки: RSA Encryption and Decryption. []