DOI: https://doi.org/10.23670/IRJ.2022.118.4.017
МОДЕЛИРОВАНИЕ RSA-ШИФРОВАНИЯ В MS ЕXCEL
Научная статья
Трофимец Е.Н.*
ORCID: 0000-0003-4873-2801, Санкт-Петербургский университет ГПС МЧС России, Санкт-Петербург, Россия
* Корреспондирующий автор (ezemifort[at]inbox.m)
Аннотация
Статья посвящена математическим и прикладным аспектам шифрования данных по алгоритму RSA. Рассмотрены два основных метода шифрования. Представлены и описаны основные шаги алгоритма шифрования данных по схеме RSA. Приведена задача с последовательными этапами действий кодирования, передачи и расшифровки сообщения с использованием алгоритма шифрования RSA в MS Excel. Обоснована актуальность применения метода возведения в квадрат и умножения с использованием схемы «справа налево».
Аргументировано, что криптостойкость RSA основывается на сложности разложения на множители больших чисел, а именно - на исключительной трудности задачи определить секретный ключ на основании открытого, так как для этого требуется решить задачу о существовании делителей целого числа.
Ключевые слова: криптография, криптостойкость, алгоритм RSA, шифрование.
MODELING RSA ENCRYPTION IN MS EXCEL
Research article
Trofimets E.N.*
ORCID: 0000-0003-4873-2801, Saint-Petersburg University of the State Fire Service of the EMERCOM of Russia, Saint Petersburg, Russia
* Corresponding author (ezemifort[at]inbox.ru )
Abstract
The article discusses mathematical and applied aspects of data encryption using the RSA algorithm. Two main encryption methods are examined. The study presents and describes the main steps of the RSA data encryption algorithm. The author presents a problem with sequential steps of encoding, transmitting, and decrypting a message using the RSA encryption algorithm in MS Excel; the relevance of the application of the squaring and multiplication method using the "right to left" scheme is also substantiated.
It is argued that the cryptographic strength of RSA is based on the complexity of factoring large numbers, namely, on the exceptional difficulty of determining the secret key based on the public key, since this requires solving the problem of the existence of integer divisors.
Keywords: cryptography, cryptographic strength, RSA algorithm, encryption.
Введение
Надежность и защита данных в системах автоматизации связаны с криптографией. Математические и прикладные аспекты шифрования данных по алгоритму RSA являются инструментом криптографии.
В зависимости от структуры используемых ключей методы шифрования подразделяются на два основных вида:
1) Симметричное шифрование: посторонним лицам может быть известен алгоритм шифрования, но неизвестна небольшая порция секретной информации - ключа, одинакового для отправителя и получателя сообщения. Примеры: DES, 3DES, AES, Blowfish, Twofish, ГОСТ 28147-89.
2) Асимметричное шифрование: посторонним лицам может быть известен алгоритм шифрования и открытый ключ, но неизвестен закрытый ключ, известный только получателю. Криптографические системы с открытым ключом в настоящее время широко применяются в различных сетевых протоколах, в частности, в протоколах TLS и его предшественнике SSL (лежащих в основе HTTPS), а также SSH, PGP, S/MIME и т. д. Российский стандарт, использующий асимметричное шифрование ГОСТ Р 34.10-2001.
Научные результаты и их новизна
Научные результаты состоят в разработанной оригинальной компьютерной модели криптосистемы RSA в MS Excel, которая позволяет продемонстрировать сложность задачи факторизации произведения двух больших простых чисел и осуществить оценку ее криптостойкости.
Новизна результатов заключается в новом подходе к исследованию математических и прикладных аспектов криптографического алгоритма RSA, отличающегося от известных наглядной и оригинальной демонстрацией операций шифрования и дешифрования коротких сообщений с использованием схемы быстрого возведения в степень.
Методы и принципы исследования
На данный момент асимметричное шифрование на основе открытого ключа RSA (расшифровывается, как Rivest, Shamir and Aldeman - это фамилии создателей алгоритма) использует большинство продуктов на рынке информационной безопасности [1], [2], [3], [6].
Хотя RSA может теоретически использоваться для шифрования и дешифрования любых реальных сообщений, на практике его наиболее часто применяют для относительно коротких сообщений. В частности, он применяется в цифровых подписях и других криптографических системах, которые нужны для шифрования коротких сообщений без доступа к симметричному ключу.
Криптостойкость RSA основывается на сложности разложения на множители больших чисел, а именно - на исключительной трудности задачи определить секретный ключ на основании открытого, так как для этого потребуется решить задачу о существовании делителей целого числа. Наиболее криптостойкие системы используют 1024-битовые и большие ключи.
Примечание: В 2003 г. Ади Шамир и Эран Тромер разработали (на теоретическом уровне) схему специализированного TWIRL-компьютера для взлома RSA-ключей. По их оценке вариант TWIRL-компьютера стоимостью в 10 000 $ позволит дешифровать 512-битовый ключ за 10 минут, а в варианте стоимостью в 10 000 000 $ -1024-битовый ключ примерно за год. В настоящее время нет сведений об эффективном взломе 1024-битовых ключей. Тем не менее, лаборатория RSA рекомендует в настоящее время использовать ключи размером 2048 бит.
Математические и прикладные аспекты шифрования данных используются при моделировании RSA-шифрования [1], [2], [3], [6]. Рассмотрим основные шаги алгоритма шифрования данных по схеме RSA.
Шаг 1. Генерация ключей
1. Выбираются два больших простых числаp и q (числаp и q называются порождающими числами).
Примечание: Простое число - целое положительное число, большее единицы, и не имеющее других делителей,
кроме самого себя и единицы.
2. Вычисляется произведение порождающих чисел N = p х q (число N называется модулем).
3. Вычисляется функция Эйлера: 9(N)=(p-1)(q-1).
Примечания:
1. Результат расчета данной функции равен количеству положительных чисел, не превосходящих N и взаимно простых с N.
2. Взаимно простые числа - целые числа, не имеющие общих делителей кроме 1. Например, 14 и 25 взаимно простые числа, так как у них нет общих делителей, кроме 1, т.е. НОД (14, 25) = 1 (НОД - наибольший общий делитель).
3. Порождающие числа p и q в дальнейшем не нужны, поэтому они уничтожаются безопасным образом.
4. Выбирается открытый ключ е, который должен удовлетворять следующим условиям:
1 <е< ip N , (1)
НОД^, 9(N)) = 1, т.е. e и ф(№) -взаимно простые числа.
5. Определяется секретный ключ d, исходя из выполнения условий (2):
d <N,
(2)
(ed) mod cp N =1.
Примечание: mod - деление с остатком. Например: 11 mod 3 = 2 (проверка: 11 = 3 х 2 + 2); 128 mod 33 = 29 (проверка: 128 = 33 х 3 + 29); 7 mod 90 = 7 (проверка: 7 = 90 х 0 + 7).
6. Пара (N, e) объявляется открытым ключом абонента и публикуется открыто в общедоступном сертифицированном справочнике, где исключается возможность его подмены (Рисунок 1).
Абонент Открытый ключ
А (Na, ex)
В (Nb, ев)
С (Nc, ее)
Рис. 1 - Ключ абонента
Ключ й является секретным ключом абонента и держится им в секрете.
Примечание: Выбор е в качестве открытого ключа, а й - в качестве секретного, является совершенно условным. Оба ключа совершенно равноправны. В качестве открытого ключа можно взять й, а в качестве закрытого - е. Главное -закрытый ключ хранить в тайне.
Шаг 2. Шифрование сообщения (действия на стороне отправителя)
7. Исходное сообщение разбивается на блоки, каждый из которых может быть представлен в виде десятичного числа Ми При этом должно выполняться условие (3):
Mi < N (3)
Примечание: Следует отметить, что порождающие числа р и q выбираются таким образом, чтобы N было больше кода любого символа открытого сообщения. В автоматизированных системах исходное сообщение переводится в двоичное представление, после чего шифрование выполняется над блоками бит, равной длины. При этом длина блока должна быть меньше, чем длина двоичного представления N.
8. Текст открытого (исходного) сообщения шифруется открытым ключом получателя по формуле (4):
с: - Л/; тек! Л' (4)
где С/ - /-й символ шифрограммы, представленный в десятичном коде; Ы1 - 1-й символ исходного сообщения, представленный в десятичном коде.
Зашифрованное сообщение (шифрограмма) отправляется получателю. Шаг 3. Расшифровка шифрограммы (действия на стороне получателя)
9. Принятая шифрограмма расшифровывается с использованием секретного ключа получателя по формуле (5):
=С/ тосШ. (5)
Перейдем к постановке задачи:
Два абонента, Олег и Сергей, передают друг другу данные с использованием алгоритма шифрования Я5А. Смоделируем:
а) передачу сообщения ПРИВЕТСЕРГЕЙ от Олега ^ Сергею.
б) расшифровку полученного сообщения на стороне Сергея.
Коды букв соответствуют их положению в английском алфавите. Для символа ( _ ) используется код 0. Для генерации открытого и секретного ключей Сергей использует порождающие числа р = 3 и q = 11.
Решение:
1. Открываем файл Исследование К8Л.х1зх. В таблицу Генерация ключей (Рисунок 2) заносим значения р и q Сергея. Вводим формулы для вычисления N и ф(^).
Генерация ключей
Олег Сергей
р 3
ч 11
N 33
20
Рис. 2 - Генерация ключей
2. Случайным образом выбираем открытый ключ е, при этом проверяем выполнение условий (1).
Для подбора ключа е вводим с клавиатуры в ячейку J10 целые числа и проверяем значение в ячейке J14 (в эту ячейку введена функция НОД, вычисляющая наибольший общий делитель для ячеек J9 и J10). Если J14 = 1, то введенное в ячейку J10 число подходит в качестве открытого ключа е. Условиям (1) удовлетворяют числа: 3, 7, 9, 11, 13, 17, 19.
Для возможности последующего выполнения в Excel операций возведения чисел в большие степени выбираем в качестве открытого ключа е наименьшее из возможных чисел, т.е. число 3 (Рисунок 3).
Генерация ключей
Олег Сергей
Р 3
Ц 11
N 33
ф(Л/) 20
е 3
d
Проверка подбора ключей
е 1
Рис. 3 - Проверка подбора ключей - этап 1
3. Подбираем вручную значение секретного ключа d, чтобы выполнялись условия (2).
Используем функцию ОСТАТ (категория Математические), которая реализует операцию mod (остаток от деления).
После этого начинаем вводить с клавиатуры в ячейку J11 целые числа и проверяем значение в ячейке J15. Если J15 = 1, то введенное в ячейку J11 число подходит в качестве секретного ключа d (Рисунок 4).
Рис. 4 - Проверка подбора ключей - этап 2 4. Используя формулу (4) зашифруем коды символов открытым ключом Сергея (Рисунок 5).
Символы и их шифрограммы
№ п/п Символ Код символа Шифрограмма символа (откр. ключ Олега) Шифрограмма символа (откр. ключ Сергея) Символ
1 А 1 1 А
2 Б 2 S Б
3 В 3 27 В
4 Г 4 31 Г
5 Д 5 26 Д
Рис. 5 - Символы и их шифрограммы
5. Используем функцию ВПР (категория Ссылки и массивы), составим шифрограмму сообщения
ПРИВЕТСЕРГЕЙ (Рисунок 6).
Шифрограмма сообщения от Олега —> Сергею
Открытое сообщение П Р И в Е т С
Шифрограмма сообщения 4 29 3 27 13 28 0 24
Рис. 6 - Шифрограмма сообщения
Примечание: Функцию ВПР используем в режиме точного поиска, т.е. аргумент Интервальный просмотр = 0. Функция ВПР ищет значение в крайнем левом столбце таблицы и возвращает значение ячейки, находящейся в указанном столбце той же строки (так как аргумент Интервальный просмотр = 0, то сортировку таблицы не производим).
6. Используя формулу (5), расшифруем шифрограмму, полученную от Олега (Рисунок 7).
Расшифровка полученной шифрограммы Сергеем
Шифрограмма сообщения 4 29 Ъ 27 1S 28 0 24
Расшифрованная шифрограмма 16 17 э 3 6 19 0 13
Рис. 7 - Расшифровка шифрограммы - этап 1 7. Используя функцию ВПР, составим исходное сообщение, отправленное Олегом (Рисунок 8). Расшифровка полученной шифрограммы Сергеем
Шифрограмма сообщения 4 29 3 27 1S 28 0 24
Расшифрованная шифрограмма 16 17 9 3 6 19 0 13
Сообщение П Р И В Е Т С
Рис. 8 - Расшифровка шифрограммы - этап 2
8. Создадим копию листа Основы RSA. Переименуем лист Основы RSA (2) в Расширение RSA.
9. Допустим, что для кодирования символов используется кодовая таблица Windows-1251. Закодируем все символы, представленные в таблице Символы и шифрограммы, в соответствии с данной кодировкой. Для этого воспользуемся функцией КОДСИМВ (категория Текстовые), рисунок 9.
Симболы и ик шифрограммы
№ п/п Символ Код символа Шифрограмма символа (откр. ключ Олега) Ш| (откр
1 А 192
2 Б 193
3 В 1Э4
4 Г 195
Рис. 9 - Символы и их шифрограммы
Обращаем внимание, что исходное сообщение не может быть составлено, так как расшифровка шифрограммы происходит некорректно из-за нарушения условия (3), рисунок 10.
Расшифровка полученной шифрограммы Сергеем
Шифрограмма сообщения 3 10 & 2 32 12 2 11
Расшифрованная шифрограмма 10 2 29 32 12 29 11
Сообщение #Н/Д #н/д #н/д #Н/Д ПН/Д #н/д #Н/Д #н/д
Рис. 10 - Некорректная расшифровка шифрограммы
10. Выбираем новые порождающие числаp = 17 и q = 19. Обращаем внимание, что вычисленное значение N = p х q
= 17 х 19 = 323 > M.
Выбираем открытый ключ е, при этом проверяем выполнение условий (1). Условиям (1) удовлетворяют числа: 5, 7, 11, 13, 17 и т.д. Для возможности последующего выполнения в Excel операций возведения чисел в большие степени выбираем в качестве открытого ключа е наименьшее из возможных чисел, т.е. число 5 (Рисунок 11).
Генерация ключей
Олег Сергей
Р 17
q 19
N 323
ф (N) 2ВВ
е
d 7
Проверка подбора ключей
е 1
d 35
Рис. 11 - Проверка подбора ключей - этап 1
11. Подбор вручную секретного ключа d для рассматриваемой ситуации является достаточно затруднительной операцией, поэтому воспользуемся следующей формулой:
d = ¿<p(Nh) mod 9(N). (6)
Вводим формулу (6) в ячейку J11 - обращаем внимание, что она возвращает значение ошибки #ЧИСЛО! (Рисунок 12). Причиной этого является невозможность нахождения в Excel точного значения выражения e(^(N)_1) = e(288-1) = e287 с использованием стандартного оператора возведения в степень.
ф (W) 2SS
е 5
d «ЧИСЛО!
Прове эка подбора ключей
е 1
d ЙЧИСЛО!
Рис. 12 - Проверка подбора ключей - этап 2
Вычисляем выражение e287 mod 288 с использованием программы Калькулятор (вид Инженерный), входящей в группу стандартных программ Windows. Удаляем из ячейки J11 введенную формулу и заносим в неё вычисленное значение d.
Проверяем правильность подбора вычисленного секретного ключа d по значению в ячейке J11 (Рисунок 13).
288
е 5
d 173
Прове эка подбора ключей
е 1
d 1
Рис. 13 - Проверка подбора ключей - этап 3
12. В качестве передаваемого сообщения от Олега ^ Сергею вводим слово СЕТЬ. Незадействованные ячейки очищаем (Рисунок 14).
Рис. 14 - Шифрограмма сообщения
13. Обращаем внимание, что при дешифровке полученной шифрограммы с использованием функции ОСТАТ возвращается значение ошибки #ЧИСЛО! (Рисунок 15).
Расшифровка полученной шифрограммы Се )геем
Шифрограмма сообщения 133 125 5S 254
Расшифрованная шифрограмма «ЧИСЛО! ЙЧИСЛО! ЙЧИСЛО! ЙЧИСЛО!
Сообщение ■ЙЧИСЛО! ЙЧИСЛО! #ЧИСЛО! #ЧИСЛО!
Рис. 15 - Расшифровка полученной шифрограммы
Дешифруем полученную шифрограмму, используя программу Калькулятор. Удаляем из ячеек функцию ОСТАТ и заносим в них дешифрованные коды символов. При правильной дешифровке будет сформировано слово СЕТЬ (Рисунок 16).
Расшифровка полученной шифрограммы Сергеем (с использованием программы Калькулятор)
Шифрограмма сообщения 133 125 5В 254
Расшифрованная шифрограмма 209 197 210 220
Сообщение С Е Т Ь
Рис. 16 - Расшифровка полученной шифрограммы с использованием программы «Калькулятор»
14. Смоделируем передачу сообщения ТЕКСТПОЛУЧИЛ от Сергея ^ Олегу, если для генерации открытого и секретного ключей Олег использует порождающие числа р = 59 и q = 73.
В таблицу Генерация ключей заносим значения р и q Олега. Определяем N и ф(^), (рисунок 17).
Генерация ключей
Олег Сергей
Р 53 17
ч 73 19
N 4307 323
ф (JV) 4176 288
е 5
d 173
Рис. 17 - Генерация ключей
15. Допустим, Олег выбрал открытый ключ е = 737. В ячейку 114 скопируем из ячейки Л4 функцию НОД, проверяем выполнение условия (1), (рисунок 18).
4176 288
€ 737 5
d 173
Прове эка подбора ключей
е 1 1
d 1
Рис. 18 - Проверка подбора ключей
В ячейку I15 скопируем из ячейки J15 функцию ОСТАТ.
Используя программу Калькулятор вычисляем значение секретного ключа d по формуле (6). Обращаем внимание на сообщение программы Калькулятор (Рисунок 19).
Рис. 19 - Программа «Калькулятор»
16. Полученное выражение 7374175 не может быть вычислено программой Калькулятор. Следует заметить, что большинство компьютерных языков и прикладных программ не имеет операторов, которые могут эффективно вычислять степень для очень больших чисел. Чтобы можно было выполнять данную операцию, используют специальные алгоритмы. Для рассматриваемой ситуации интерес представляют алгоритмы, способные вычислить выражение:
y = ax mod m (7)
при больших X.
Такие алгоритмы получили название алгоритмов быстрого возведения в степень по модулю. Наиболее известными из них являются: метод с использованием Китайской теоремы об остатках, метод возведения в квадрат и умножения, метод Монтгомери возведения в степень, алгоритм с использованием «школьного» метода.
Рассмотрим метод возведения в квадрат и умножения с использованием схемы «справа налево», который можно достаточно просто реализовать в MS Excel. Рассмотрение метода проведем на конкретном примере вычисления секретного ключа Олега с использованием выражения:
73 74175 mod 4176.
а) Подготовим таблицу для ввода исходных данных (Рисунок 20).
Вычисление секретного ключа Олега методом возведения в квадрат и умножения (схема «справа налево»)
Число (я) 737 <--- е - открытый ключ Олега
Степень(х) 4175 <— <p(N)-l
Модуль (т) 4175 <—<p(N)
Рис. 20 - Вычисление секретного ключа методом возведения в квадрат и умножения с использованием схемы «справа налево»
б) Показатель степени х = 4175 представим в двоичной системе счисления и запишем полученное значение в обратном порядке с выделением разрядов (Рисунок 21).
| Модуль (/л) 4176 <-ф[М]
Степень дв. 1000001001111
Число разрядов 13
Номер разряда 13 12 11 10 9 S 7
Степ. дв. обр. Текст 1 1 1 1 0 0 1
Степ дв. обр. Число 1 1 1 1 0 0 1
Рис. 21 - Показатель степени в двоичной системе счисления
Для представления числа в двоичной системе счисления воспользуемся функцией ОСНОВАНИЕ из категории Математические (функция доступна в версиях Excel 2013 и более поздних) или программой Калькулятор (вид Программист).
Примечание: В ранних версиях Excel в категории Инженерные имеется функция ДЕС.В.ДВ, которая выполняет преобразование чисел из диапазона от -512 до 511, что для рассматриваемого примера является недостаточным. Функция ОСНОВАНИЕ выполняет преобразование чисел от 0 до 253.
Для подсчета числа разрядов двоичного числа воспользуемся функцией ДЛСТР (категория Текстовые).
Номера разрядов двоичного числа вводим вручную, начиная с 13 и до 1 (для последующего выделения разрядов в обратном порядке).
Для выделения разрядов из двоичного числа воспользуемся функцией ПСТР (категория Текстовые). Результатом будет поразрядное представление двоичного числа в обратном порядке (1111001000001), поэтому рассматриваемая схема и называется «справа налево».
Так как функция ПСТР возвращает текстовые значения, то для последующих расчетов их необходимо преобразовать в числовые. Для этого воспользуемся функцией ЗНАЧЕН (категория Текстовые).
в) Разработаем расчетную таблицу (Рисунок 22).
Степ дв. обр. Число
№ п/п Степень, дв. обр. У;
1 1 737 737 mod 4176
2 1 289 7372 mod 4176
3 1 1 2892 mod 4176
4 1 1 lz mod 4176
5 0 1 1г mod 4176
6 0 1 lz mod 4176
7 1 1 l1 mod 4176
8 0 1 lz mod 4176
9 0 1 l1 mod 4176
10 0 1 lz mod 4176
11 0 1 l1 mod 4176
12 0 1 lz mod 4176
13 1 1 l1 mod 4176
Произведение Y 212993
Секр. ключ d 17
Рис. 22 - Расчетная таблица
В столбце Степень. дв. обр. приведено двоичное представление степени х в обратном порядке (вверху младшие разряды, внизу - старшие), для чего необходимо транспонировать (развернуть на 90 градусов) значения из строки Степ дв. обр. Для этого воспользуемся функцией ТРАНСП (категория Ссылки и массивы), которая должна быть введена как формула массива. Порядок действий следующий:
• вводим функцию ТРАНСП в первую ячейку столбца Степень. дв. обр.;
• выделяем все ячейки столбца ТРАНСП, ставим курсор в строку формул;
• нажимаем комбинацию клавиш Ctrl+Shift+Enter.
Первое значение в столбце y рассчитывается по формуле:
у1 = emod ф(Ю = 737 mod 4176 = 737.
Дальнейшие вычисления производятся по рекуррентной формуле:
у,=(у,_1)2тойф(Ю. (8)
Вводим соответствующие формулы в столбец y
Основные результаты
Для нахождения итогового произведения Y необходимо перемножить у,, которым соответствует 1 в двоичном представлении степени (столбец Степень. дв. обр.). Для рассматриваемого примера имеем:
Y = У\ X>2 ху3 ху4 ху7 ху13.
Для автоматизации данного расчета вводим в ячейку Произведение Y следующую формулу: =ПРОИЗВЕД(ЕСЛИДиапазон_двоичных_разрядов=1 ; Диапазон_у;,\)).
Данная формула должна быть введена как формула массива, т.е. с использованием комбинации клавиш Ctrl+Shift+Enter.
Примечание: Суть формулы состоит в том, что если разряд в двоичном представлении степени равен 1, то в итоговое произведение Y в качестве сомножителя будет входить v,, в противном случае в качестве сомножителя будет входить 1. Для рассматриваемого примера имеем: Y = v1 х v2 х v, х v4 х 1 х 1 х v7 х 1 х 1 х 1 х 1 х 1 х уг^.
Секретный ключ d рассчитывается по формуле:
d = Y mod 9(N).
17. В рассматриваемом примере легко подобрать такие порождающие числа p и q, что при расчете d даже с использованием рассмотренного выше метода возникает переполнение и возвращается значение ошибки #ЧИСЛО. Кроме того, операцию возведения в большие степени необходимо будет повторить достаточно большое число раз при кодировании символов открытым ключом Олега и при дешифровке полученной шифрограммы на стороне Сергея. Поэтому возникает потребность в написании специальной функции на языке VBA, которая позволит решать данную задачу более эффективно.
Функция VBA подготовлена, её необходимо импортировать в программный модуль проекта и использовать на рабочем листе Excel [7], [8], [9], [10].
Для возможности использования функций, написанных на языке VBA, необходимо сохранить рабочую книгу с поддержкой макросов (Сохранить как - Книга Excel с поддержкой макросов (*.xlsm)).
Для импорта функции выполняем следующие действия:
• переходим в среду VBA (вкладка Разработчик - Visual Basic или комбинация кнопок Alt+F11);
• вставим программный модуль (Insert - Module);
• импортируем функцию СтепеньПоМодулю из файла Функция СтепеньПоМодулю 32.bas (Insert - File). При импорте выбираем тип файла Basic Files (*.bas) или All Files (*.*).
Если используется 64-разрядная версия MS Office, то можно импортировать функцию СтепеньПоМодулю из файла Функция СтепеньПоМодулю 64.bas, в которой для переменных используется тип данных LongLong, позволяющий хранить 8-байтовые целые числа в диапазоне от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 (в 32-разрядной версии функции используется тип данных Long, позволяющий хранить 4-байтовые целые числа в диапазоне от -2 147 483 648 до 2 147 483 647);
• нажимаем кнопку Save, закрываем окно VBA и переходим на рабочий лист.
18. Протестируем импортированную функцию СтепеньПоМодулю (категория Определенные пользователем), вычислив с её помощью секретный ключ d (Рисунок 23).
Рис. 23 - Вычисление секретного ключа 19. Используем функцию СтепеньПоМодулю для кодирования символов открытым ключом Олега (Рисунок 24).
№ п/п Символ Код символа Шифрограмма символа [откр. ключ Олега}
1 А 192 3331
2 в 193 1520
3 в 194 695
4 Г 195 373
5 Д 196 711
6 Е 197 1730
7 Ж 198 2671
Рис. 24 - Кодирование символов открытым ключом
20. Путем копирования создадим шаблон для шифрования сообщения ТЕКСТПОЛУЧИЛ, передаваемого от Сергея ^ Олегу, и шаблон для расшифровки полученной шифрограммы на стороне Олега (Рисунок 25).
Шифрограмма сообщения от Сергея —> Олегу
Открытое сообщение т Е К С т п о л У
Шифрограмма сообщения
Расшифровка полученной шифрограммы Олегом (с использованием функции СтепеньПоМодулю)
Шифрограмма сообщения
Расшифрованная шифрограмма
Сообщение
Рис. 25 - Шифрограмма сообщения и расшифровка шифрограммы
21. Используя функцию ВПР, составим шифрограмму сообщения ТЕКСТ ПОЛУЧИЛ (Рисунок 26).
Шифрограмма сообщения от Сергея ---> Олегу
Открытое сообщение Т Е К С т П О
Шифрограмма сообщения 592 1730 737 3713 5Э2 241 505 2091
Рис. 26 - Шифрограмма сообщения
22. Используя функцию СтепеньПоМодулю, расшифруем шифрограмму, полученную от Сергея (рисунок 27). Примечание: в качестве второго аргумента функции СтепеньПоМодулю используем значение секретного ключа й.
Расшифровка полученной шифрограммы Олегом (с использованием функции СтепеньПоМодулю)
Шифрограмма сообщения 592 1730 737 3713 592 241 505 2091
Расшифрованная шифрограмма 210 197 202 209 210 95 207 206
Рис. 27 - Расшифровка шифрограммы - этап 1
23. Используя функцию ВПР, составим исходное сообщение, отправленное Сергеем (Рисунок 28).
Расшифровка полученной шифрограммы Олегом (с использованием функции СтепеньПоМодулю)
Шифрограмма сообщения 592 1730 737 3713 592 241 505 2091
Расшифрованная шифрограмма 210 197 202 209 210 95 207 206
Сообщение Т Е К С Т П О
Рис. 28 - Расшифровка шифрограммы - этап 2
Обсуждение
Криптостойкость RSA основывается на сложности разложения на множители больших чисел, а именно - на исключительной трудности задачи определить секретный ключ на основании открытого, так как для этого требуется решить задачу о существовании делителей целого числа.
В рассмотренном примере использовались 6-битовое (p = 59) и 7-битовое (q = 73) порождающие числа для формирования ключей, тем не менее даже при такой малой размерности в ряде случаев пришлось прибегнуть к нестандартным вычислениям. В реальных системах используются, как правило, 1024-битовые ключи, а наиболее криптостойкие системы используют 2048-битовые ключи.
Заключение
Таким образом алгоритм RSA имеет большую практическую значимость и получил широкое распространение в различных сетевых протоколах, а также в электронной цифровой подписи.
Конфликт интересов Conflict of Interest
Не указан. None declared.
Список литературы / References
1. Matrokhina, K. V. Ensuring information security in corporate communication systems / K. V. Matrokhina, A. V. Makhovikov, E. N. Trofimets, // E3S Web of Conferences 266, 09001 (2021). - TOPICAL ISSUES, 2021. - DOI: 10.1051/e3sconf/202126609001.
2. Козлов А. А. Разработка функции связывания ключей в ARX-алгоритмах стохастического преобразования данных / А. А. Козлов // Безопасность информационных технологий. - 2021. - Т. 28. № 4. - С. 63-73.
3. Запечников С. В. Конфиденциальное машинное обучение на основе двусторонних протоколов безопасных вычислений / Запечников С. В., Щербаков А. Ю. // Безопасность информационных технологий. - 2021. - Т. 28. № 4. -С. 39-51.
4. Артемчук К. И. Математические основы алгоритма RSA / Артемчук К. И. // Некоторые вопросы анализа, алгебры, геометрии и математического образования, Воронежский государственный педагогический университет. - 2016. -№5-2. - С. 17.
5.Гуринец К. Р. Алгоритм шифрования RSA / К. Р. Гуринец // Новые информационные технологии в науке. Сборник статей по итогам Международной научно-практической конференции. - 2017. - С. 32-35.
6. Волокитина Т.С. Надежность реализаций алгоритма RSA / Т.С. Волокитина // Современные научные исследования и инновации. - 2021. - №4 (120). - [Электронный ресурс]. URL: https://web.snauka.ru/issues/ (дата обращения: 12.03.2022)
7. Trofimets, E. N. On the identification of bearings of active interference sources / Trofimets, E.N., Mazakov, E.V., Trofimets, V.Ya. // IOP Conference Series: Materials Science and Engineering (MSE), Journal of Physics: Conf. Ser. 1047, 12146. - 2021.
8. Маховиков А.Б. К вопросу разработки протокола защиты информации в корпоративных системах IP -Телефонии / А. Б. Маховиков, К. В. Матрохина, Е. Н. Трофимец // Научно-аналитический журнал вестник Санкт-Петербургского университета Государственной противопожарной службы МЧС России». - 2020. - №2. - С. 52-59.
9. Родин А. К. Совершенствование технологии программирования логических контроллеров на основе технологии TEXT MINING / А. К. Родин, Д. Макарова, Е. Н. Трофимец // Научно-аналитический журнал вестник Санкт-Петербургского университета Государственной противопожарной службы МЧС России,- 2019. - № 3. - С. 55-62.
10. Трофимец Е. Н. Анализ существующих формальных подходов к определению понятия «Сложная задача» / Е. Н. Трофимец, В. Я. Трофимец // Научно-практический журнал «Современная наука: актуальные проблемы теории и практики». Серия: Естественные и технические науки. - 2021. - №11. - С.113-116.
Список литературы на английском языке / References in English
1. Matrokhina, K. V. Ensuring information security in corporate communication systems / K. V. Matrokhina, A. V. Makhovikov, , E. N. Trofimets // E3S Web of Conferences 266, 09001 (2021). - TOPICAL ISSUES, 2021. -D0I:10.1051/e3sconf/202126609001,
2. Kozlov A. A. Razrabotka funkcii svjazyvanija kljuchej v ARX-algoritmah stohasticheskogo preobrazovanija dannyh [Development of the Key Binding Function in Arx Algorithms of Stochastic Data Transformation] / A. A. Kozlov // Bezopasnost' informacionnyh tehnologij [Information Technology Security]. - 2021. - Vol. 28. № 4. - pp. 63-73. [in Russian]
3. Zapechnikov S. V. Konfidencial'noe mashinnoe obuchenie na osnove dvustoronnih protokolov bezopasnyh vychislenij [Confidential Machine Learning Based on Two-Way Secure Computing Protocols] / S. V. Zapechnikov, A. Ju. Shherbakov // Bezopasnost' informacionnyh tehnologij [Information Technology Security]. - 2021. - Vol. 28. № 4. - pp. 39-51. [in Russian]
4. Artemchuk K. I. Matematicheskie osnovy algoritma RSA [Mathematical Foundations of the RSA Algorithm] / K. I. Artemchuk // Nekotorye voprosy analiza, algebry, geometrii i matematicheskogo obrazovanija [Some Questions of Analysis, Algebra, Geometry and Mathematical Education], Voronezhskij gosudarstvennyj pedagogicheskij universitet. - 2016. №5-2. - pp. 17. [in Russian]
5. Gurinec K. R. Algoritm shifrovanija RSA [RSA Encryption Algorithm] / K. R. Gurinec // Novye informacionnye tehnologii v nauke. Sbornik statej po itogam Mezhdunarodnoj nauchno-prakticheskoj konferencii. [New Information Technologies in Science. Collection of Articles on the Results of the International Scientific and Practical Conference.]. - 2017. - pp. 32-35. [in Russian]
6. Volokitina T.S. Nadezhnost' realizacij algoritma RSA [Reliability of RSA Algorithm Implementations] [Electronic resource] / T.S. Volokitina // Sovremennye nauchnye issledovanija i innovacii [Modern Scientific Research and Innovation] . -2021. - №4 (120) . - URL: https://web.snauka.ru/issues/ (accessed: 12.03.2022) [in Russian]
7. Trofimets, E. N. On the identification of bearings of active interference sources / E. N. Trofimets, , E. V. Mazakov, V. Ya. Trofimets // IOP Conference Series: Materials Science and Engineering (MSE), Journal of Physics: Conf. Ser. 1047, 12146. - 2021.
8. Mahovikov A. B. K voprosu razrabotki protokola zashhity informacii v korporativnyh sistemah IP-Telefonii [On the Issue of Developing an Information Protection Protocol in Corporate IP Telephony Systems] / A. B. Mahovikov, K. V. Matrohina, E. N. Trofimec // Nauchno-analiticheskij zhurnal vestnik Sankt-Peterburgskogo universiteta Gosudarstvennoj protivopozharnoj sluzhby MChS Rossii [Scientific and Analytical Journal Bulletin of the St. Petersburg University of the State Fire Service of the Ministry of Emergency Situations of Russia]. - 2020. - №2. - pp. 52-59. [in Russian]
9. Rodin A. K. Sovershenstvovanie tehnologii programmirovanija logicheskih kontrollerov na osnove tehnologii TEXT MINING [Improving the Technology of Programming Logic Controllers Based on Text Mining Technology] / A. K. Rodin, D. Makarova, E. N. Trofimec // Nauchno-analiticheskij zhurnal vestnik Sankt-Peterburgskogo universiteta Gosudarstvennoj protivopozharnoj sluzhby MChS Rossii [Scientific and Analytical Journal Bulletin of the St. Petersburg University of the State Fire Service of the Ministry of Emergency Situations of Russia]. - 2019. - № 3. - pp. 55-62. [in Russian]
10. Trofimec E. N. Analiz sushhestvujushhih formal'nyh podhodov k opredeleniju ponjatija «Slozhnaja zadacha» [Analysis of Existing Formal Approaches to the Definition of the Concept of "Complex Task"] / E. N. Trofimec, V. Ja. Trofimec // Nauchno-prakticheskij zhurnal «Sovremennaja nauka: aktual'nye problemy teorii i praktiki». Serija: Estestvennye i tehnicheskie nauki. [Scientific and Practical Journal "Modern Science: Actual Problems of Theory and Practice". Series: Natural and Technical Sciences.]. - 2021. - №11. - pp. 113-116. [in Russian]