Рисунок 4 – Функциональная модель решения задачи для функции RSA
Рисунок 5 – Блок-схема решения задачи для функции DISTINCT_SIMPLE_NUM
Рисунок 6 – Блок-схема решения задачи для функции ALG_ EUCLID
4. Программная реализация решения задачи
; ПОИСК ВЗАИМНО ПРОСТОГО ЧИСЛА
(DEFUNDISTINCT_SIMPLE_NUM(NUMPH)
(DO
()
((< NUM PH) NUM)
; TRUNCATE – ЦЕЛОЧИСЛЕННОЕ ДЕЛЕНИЕ
(SETQNUM (TRUNCATENUM 2))
)
(DO
()
; GCD – НАИБОЛЬШИЙ ОБЩИЙ ДЕЛИТЕЛЬ
((EQL (GCDNUMPH) 1) NUM)
; REM– ОСТАТОК ОТ ДЕЛЕНИЯ
(IF (EQL (REMNUM 2) 0) (SETQNUM (+NUM 1)))
(SETQ NUM (+ NUM 2))
)
)
; ГЕНЕРИРУЕМ СЛУЧАЙНОЕ ПРОСТОЕ ЧИСЛО
(DEFUNSIMPLE_NUMBER ()
; ОБЪЯВЛЕНИЕПЕРЕМЕННОЙ
(DECLARE (SPECIAL LST))
; СПИСОК ПРОСТЫХ ЧИСЕЛ
(SETQ LST ' (2 3 5 7 11 13 17 19 23 31 37 41 43 47 53 61 67 71 73 79 83 89 97 101))
; ВЫБИРАЕМ СЛУЧАЙНОЕ ЧИСЛО ИЗ СПСКА
(NTH (RANDOM (– (LENGTH LST) 1)) LST)
)
; РАСШИРЕННЫЙ АЛГОРИТМ ЕВКЛИДА
(DEFUNALG_EUCLID (X Y)
; – ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ–
(DECLARE (SPECIAL I))
(DECLARE (SPECIAL I0))
(DECLARE (SPECIAL I1))
(DECLARE (SPECIAL J0))
(DECLARE (SPECIAL J1))
(DECLARE (SPECIAL R))
(DECLARE (SPECIAL L))
;–
(IF (EQL X 1) (SETQ X (+ X Y))
; ИНАЧЕ
(PROGN
(SETQ I0 0)
(SETQ I1 1)
(SETQ L Y)
(SETQ R (REM L X))
(SETQ J0 (TRUNCATE L X))
(SETQ L X)
(SETQ X R)
(SETQ R (REM L X))
(SETQ J1 (TRUNCATE L X))
(SETQ L X)
(SETQ X R)
(DO
(())
((<= R 0) R)
(SETQ R (REM L X))
(SETQ I (– I0 (* I1 J0)))
(IF (< I 0) (SETQ I (- Y (REM (* -1 I) Y))) (SETQ I (REM I Y)))
(SETQ I0 I1)
(SETQ I1 I)
(SETQ J0 J1)
(SETQ J1 (TRUNCATE L X))
(SETQ L X)
(SETQ X R)
)
(SETQ I (– I0 (* I1 J0)))
(IF (< I 0) (SETQ I (FLOOR (- Y (REM (* -1 I) Y)))) (SETQ I (FLOOR (REM I Y))))
I
)
)
)
; РЕАЛИЗАЦИЯ АЛГОРИТМА RSA
(DEFUNRSA ()
; – ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ–
(DECLARE (SPECIAL N))
(DECLARE (SPECIAL E))
(DECLARE (SPECIAL PHI))
(DECLARE (SPECIAL PRIVATE_KEY))
(DECLARE (SPECIAL P))
(DECLARE (SPECIAL Q))
;–
; ВЫБИРАЮТСЯ ДВА ПРОСТЫХ ЧИСЛА
(SETQ P (SIMPLE_NUMBER))
(SETQ Q (SIMPLE_NUMBER))
; ВЫЧИСЛЯЕМ ИХ ПРОИЗВЕДЕНИЕ
(SETQ N (* P Q))
; НАХОДИМ PHI = (P-1) (Q-1)
(SETQ PHI (* (- P 1) (- Q 1)))
; ВЫБИРАЕМ ПРОИЗВОЛЬНОЕ ЧИСЛО
(SETQ E (RANDOM 10000000000000000))
; НАХОДИМ ВЗАИМНОЕ ПРОСТОЕ E С PHI
(SETQE (DISTINCT_SIMPLE_NUMEPHI))
; НАХОДИМ ЗАКРЫТЫЙ КЛЮЧ PRIVATE_KEY
(SETQPRIVATE_KEY (ALG_EUCLIDEPHI))
(LISTENPRIVATE_KEY)
)
; ПОЛУЧАЕМ КЛЮЧИ
(SETQLIST_KEY (RSA))
(SETQ E (CAR LIST_KEY))
(SETQ N (CADR LIST_KEY))
(SETQ D (CADDR LIST_KEY))
; ШИФРОВАНИЕ ЧИСЛА
(DEFUNCODING (NUM)
(MOD (EXPT NUM E) N)
)
; ДЕШИФРОВАНИЕ ЧИСЛА
(DEFUNDECODING (NUM)
(MOD (EXPT NUM D) N)
)
; ПОЛУЧАЕМСООБЩЕНИЕ
(SETQ TEXT 0)
(SETQ INPUT (OPEN«D:\MESSAGE.TXT»:DIRECTION:INPUT))
(SETQ TEXT (READ INPUT))
(CLOSE INPUT)
; ШИФРУЕМСООБЩЕНИЕ
(SETQ OUTPUT (OPEN«D:\CODING.TXT»:DIRECTION:OUTPUT))
(SETQ CODING_TEXT (MAPCAR 'CODING TEXT))
(PRINT (LIST 'CODING_TEXT CODING_TEXT) OUTPUT)
(PRINT (LIST 'PUBLIC_KEY (LIST E N)) OUTPUT)
(TERPRI OUTPUT)
(CLOSE OUTPUT)
; ДЕШИФРУЕМСООБЩЕНИЕ
(SETQ OUTPUT (OPEN«D:\DECODING.TXT»:DIRECTION:OUTPUT))
(SETQ DECODING_TEXT (MAPCAR 'DECODING CODING_TEXT))
(PRINT (LIST 'DECODING_TEXT DECODING_TEXT) OUTPUT)
(TERPRI OUTPUT)
(CLOSE OUTPUT)
5. Пример выполнения программы
Пример 1
Рисунок 7. Переданное сообщение
Рисунок 8. Зашифрованное сообщение
Рисунок 9. Расшифрованное сообщение
Пример 2
Рисунок 10. Переданное сообщение
Рисунок 11. Зашифрованное сообщение
Рисунок 12. Расшифрованное сообщение
Пример 3
Рисунок 13. Переданное сообщение
Рисунок 14. Зашифрованное сообщение
Рисунок 15. Расшифрованное сообщение
Заключение
Криптосистема RSA используется в самых различных продуктах, на различных платформах и во многих отраслях. В настоящее время криптосистема RSA встраивается во многие коммерческие продукты, число которых постоянно увеличивается. Также ее используют операционные системы Microsoft, Apple, Sun и Novell. В аппаратном исполнении RSA алгоритм применяется в защищенных телефонах, на сетевых платах Ethernet, на смарт-картах, широко используется в криптографическом оборудовании THALES (Racal). Кроме того, алгоритм входит в состав всех основных протоколов для защищенных коммуникаций Internet, в том числе S/MIME, SSL и S/WAN, а также используется во многих учреждениях, например, в правительственных службах, в большинстве корпораций, в государственных лабораториях и университетах. На осень 2000 года технологии с применением алгоритма RSA были лицензированы более чем 700 компаниями.
Итогом работы можно считать созданную функциональную модель алгоритма кодирования информации RSA. Данная модель применима к положительным целым числам.
Созданная функциональная модель и ее программная реализация могут служить органической частью решения более сложных задач.
Список использованных источников и литературы
1. Венбо Мао. Современная криптография: теория и практика. [Электронный ресурс] / Венбо Мао. – М.: Вильямс, 2005. С. 768.
2. Кландер, Л. HackerProf: полное руководство по безопасности компьютера. [Электронный ресурс] / Л. Кландер – М.: Попурри, 2002. С. 642.
3. Фергюсон, Н. Практическая криптография. [Текст] / Н. Фергюсон, Б. Шнайер. – М.: Диалектика, 2004. С. 432.
4. Шнайер, Б. Прикладная криптография. Протоколы, алгоритмы. [Текст] / Б. Шнайер. – М.: Триумф, 2002. С. 816