Схема шифрования RSA и её программная реализация
Короткова Дарья Алексеевна,
студентка Ульяновский государственный университет
E-mail: [email protected]
Аннотация
Информация — это одна из самых ценных вещей в современной жизни. Появление глобальных компьютерных сетей сделало простым получение доступа к информации для людей и для организаций. А так же, доступ к личной информации при её передаче получают злоумышленники.
Чтобы обеспечить безопасность личных данных при передаче, необходимо зашифровывать информацию.
Шифрование — это метод защиты любой информации от неавторизованных лиц, с предоставлением, в это же время, авторизованным пользователям доступа к ней.
В данной статье я рассмотрю метод шифрования RSA и метод дополнительного шифрования ОАЕР, напишу его программную реализацию и сымитирую атаки на RSA.
Ключевые слова: шифр, С++ безопасность, RSA, ОАЕР.
RSA— криптографический алгоритм с открытым ключом, разработан учёными Ривестом, Шамиром и Адлеманом, основывающийся на вычислительной сложности задачи факторизации больших целых чисел.
Криптографическая система с открытым ключом — система шифрования, при которой открытый ключ передаётся по незащищенному каналу и используется для проверки электронных подписей и для шифрования сообщения. Для генерации электронной подписи и расшифровки сообщений используется закрытый ключ.
Криптографические системы с открытым ключом используют односторонние функции, обладающие свойствами:
■ Если известно х, то вычислить f(x) просто.
■ Если известно y=f(х), то для вычисления х нет простого пути.
Алгоритм RSA:
1. Создание открытого и закрытого ключа.
1. Выбирается два простых числа и и v.
2. Вычисляется произведение p=u*v.
3. Вычисляется функция Эйлера cp(p)=(u-1)(v-1)
4. Выбираем открытую экспоненту е (1<е< <р(р))
5. Вычисляем закрытую экспоненту d, где (d*e) mod ср(р) =1
6. Получаем открытый ключ (е, р) и закрытый ключ (d, р).
2. Шифрование и дешифрование.
Посмотрим модель шифрования и дешифрования сообщения на конкретном примере. Пусть Алиса хочет послать Бобу сообщение h.
Шифрование по каналу сши Дешифрование
У Алисы есть открытый ключ Боба. А Боб владеет своим закрытым ключом. w=G(h)= he mod р h=Q(w)=wd mod p Безопасность схемы шифрования RSA:
Я написала программу на языке высокого уровня С++, где каждый символ кодируется на основании таблицы ASCII, и затем осуществляется алгоритм RSA.
С '. U se rivAdiïi i n\Docu rne ntsWisu af Studie TOI p pi i rati
Генерации ключей: *
Открытый ключ : {2075,21823}
Закрытый клич : {83,21823}
Введите сообще ниеЛ которое бы хотите зашифровать
I LOVE YOU
Текст ASCII Зашифровка ASCII Расшифровка текста
I 73 В774 73 I
32 17310 32
L 76 3422 76 L
0 73 13536 79 0
V 35 17231 36 V
E £5 477 69 £
32 21292 32
Y 85 876 39 Y
0 79 В923 79 0
и 85 10638 £5 и -
Например, берем символ I, по таблице ASCII его код равен 73. Генерация ключей такая же, как и в примере написанной программы.
w=G(h)= he mod p = 7320 75mod 21823=8774; (посчитано на инженерном стандартном калькуляторе в операционной системе Windows)
h=Q(w)=wd mod p = 877483 mod 21823 = 73 =1
Надёжность шифрования обеспечивается тем, что третьему лицу (старающемуся взломать шифр) очень трудно вычислить закрытый ключ по открытому. Оба ключа вычисляются из одной пары простых чисел (v и и). То есть ключи связаны между собой. Но установить эту связь очень сложно. Основной загвоздкой является декомпозиция модуля на простые сомножители v и и. Если число является произведением двух очень больших простых чисел, что его очень трудно разложить на множители.
Некоторые атаки на RSA.
1. Разложение на множители.
Реализуется на подборе простых чисел u, v, для надёжности числа должны быть большими.
2. Выборка шифрованного текста.
Пусть Ева перехватывает сообщение w от Алисы к Бобу w=ze (mod п), где z- открытый текст, е — открытый ключ; Ева выбирает число г, г<п и вычисляет с помощью открытого ключа x=re (mod п) ,у= х*с (mod п)
Ева передает Y бобу для дешифрования и получает g = yd mod п. Ева может легко найти z
g= yd mod n=(w*xe)d mod n = (wd*xed)mod n = (wd*x) mod n =(z*x)mod n z= (z*x) mod n -> z=w*x"1 mod n 3. Исходный текст.
Криптосистема RSA обладает низкой криптостойкостью при малой экспоненте на коротком сообщении. Действительно, при с = me < n открытый текст m может быть восстановлен по шифротексту © при помощи процедуры извлечения корня. Однако меры противодействия также очевидны, — либо открытый ключ е должен быть достаточно большим, либо открытый текст не должен быть коротким. Выбор малого е обусловлен соображениями вычислительной эффективности шифрования и проверки подписи.
Это показывает, что применение на практике шифрования RSA обладает низкой криптостойкостью, поэтому пользуются схемой дополнительного шифрования ОАЕР.
Оптимальное асимметричное дополнение шифрования (ОАЕР — Optimal Assimetric Encryption Padding) — схема дополнения, обычно используемая совместно с какой-либо односторонней функцией с потайным входом (например RSA или функции Рабина) для повышения криптостойкости последней.
Шифрование. Ниже показаны шаги процесса шифрования.
1. Дополняем сообщение, чтобы сделать его w -битовым. Обозначим его W.
2. Выбираем случайное число s (одноразовое число) из к бит.
3. Используем общедоступную одностороннюю функцию G, которая принимает целое s -битовое число, и создает w-разрядное целое число (w — размера W, и s <w ).
4. Применяет маску, G (s), чтобы создать первую часть исходного текста P-|=W+G(s) является замаскированным сообщением.
5. Создаём вторую часть исходного текста Р2 = Н(Р-|) + s. Функция H — другая общедоступная функция, которая принимает w -битовые входные сообщения и создает к -битовые выходные сообщения.
6. Создаём С = Ре = (Р-| || Р2) е и передаём С.
Дешифрование. Следующие шаги показывают процесс дешифрования:
1. Создаём Р = Cd = (P-i || Р2).
2. Обновляем значение s, используя Н(Р-|) + Р2= Н(Р-|) + Н(Р2) + s =s.
3. Применяет G(s) + Р = G(s) + G(s) + W=W , чтобы обновить значение дополненного сообщения.
4. После удаления дополнения W, находим первоначальное сообщение.
Алгоритм ОАЕР применяется для предварительной обработки сообщения перед использованием RSA. Сначала сообщение дополняется до фиксированной длины с помощью ОАЕР, затем шифруется с помощью RSA.
Литература:
1. Венбо Мао. Современная криптография. Теория и практика = Modern Cryptography: Theory and Practice. — M.: Вильяме, 2005.
2. Нильс Фергюсон, Брюс Шнайер. Практическая криптография = Practical Cryptography: Designing and Implementing Secure Cryptographic Systems. — M.: Диалектика, 2004.
3. Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in С. — M.: Триумф, 2002.