МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «МИРЭА – РОССИЙСКИЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ» РТУ МИРЭА Институт ИКБ Информационные системы и технологии Специальность (направление): Кафедра: Дисциплина: КБ-3 «Методы и алгоритмы аутентификации компонент программных систем» ОТЧЕТ По практической работе №2 «ОГРАНИЧЕНИЕ ДОСТУПА НА ВХОД В СИСТЕМУ» Студент: подпись Группа: А. Р. Летунов, Д. В. Габриелян инициалы и фамилия 12.02.2024 Дата БСБО-02-21 Шифр: Руководитель работы: А. Ю. Ермакова подпись дата Москва 2024 г. инициалы и фамилия Алгоритм RSA: Формула RSA: d*e = 1 mod ф(n) Пользователь A формирует закрытый и открытый ключ по алгоритму RSA: p и q – простые числа p = 61 q = 293 n = p * q = 61 * 293 = 17873 Функция эйлера: ф(n) = (p - 1)(q - 1) = 60 * 292 = 17520 Открытый ключ: e = 257 Расширенный алгоритм Евклида: 17520 = 68 * 257 + 44 257 = 5 * 44 + 37 44 = 1 * 37 + 7 37 = 5 * 7 + 2 7=3*2+1 2=2*1+0 44 = 17520 – 68 * 257 37 = 257 – 5 * 44 7 = 44 – 1 * 37 2 = 37 – 5 * 7 1=7–3*2 1=7–3*2 1 = 7 – 3(37 – 5 * 7) = 7 – 3 * 37 + 15 * 7 1 = 44 – 1 * 37 – 3 * 37 + 15 * 44 – 15 * 37 = 16 * 44 – 19 * 37 1 = 16 * 44 – 19(257 – 5 * 44) = 16 * 44 – 19 * 257 + 95 * 44 1 = 111 * 44 – 19 * 257 1 = 111 * 17520 – 7548 * 257 – 19 * 257 1 = 111 * 17520 – 7567 * 257 Закрытый ключ: d = 17520 - 7567 = 9953 Открытый ключ: (257, 17873) Закрытый ключ: (9953, 17873) Пользователь Б формирует закрытый и открытый ключи по алгоритму RSA: p и q – простые числа p = 37 q = 337 r = p * q = 37 * 337 = 12469 Функция эйлера: ф(n) = (p - 1)(q - 1) = 36 * 336 = 12096 y = 23 Расширенный алгоритм Евклида: 12096 = 525 * 23 + 21 23 = 1 * 21 + 2 21 = 10 * 2 + 1 2=2*1+0 1 = 21 – 10 * 2 2 = 23 – 1 * 21 21 = 12096 – 525 * 23 1 = 21 – 10 * 2 1 = 21 – 10(23 - 1021) = 21 – 23 * 10 + 10 * 21 1 = 12096 – 525 * 23 – 23 * 10 + 10(12096 – 525 * 23) 1 = 12096 – 525 * 23 – 10 * 23 + 10 * 12096 – 5250 * 23 1 = 11 * 12096 – 5785 * 23 = 1 Закрытый ключ: k = 12096 - 5785 = 6311 k = 6311 Открытый ключ: (23, 12469) Закрытый ключ: (6311, 12469) Электронная подпись на основе алгоритма RSA: 1. Сначала пользователь А подписывает сообщение m = 55 закрытым ключом d = 9953. c = 𝑚𝑑 mod n = 55^9953 mod 17873= 11982 2. Затем пользователь А вычисляет числа g = c^y mod r, то есть то, что получилось на шаге 1 открытым ключом Б. На этом этапе сообщения шифруется, чтобы никто посторонний не мог его прочитать. g = 1198223 mod 12469 = 7517 3. Последовательность чисел g передается пользователю Б 4. Пользователь Б получает g и вначале вычисляет последовательность числа c = 𝑔𝑘 mod r используя свой закрытый ключ, при этом сообщение расшифровывается. c = 75176311 mod 12469 = 11982 5. Затем Б определяет числа m = 𝑐 𝑒 mod n, используя открытый ключ пользователя А. За счет выполнения этого этапа производится проверка подписи пользователя А. m = 11982257 mod 17873 = 55 Вывод: Стойкость данного алгоритма основывается на факторизации больших простых чисел. Проверка подписи отправителя осуществляется путем вычислений с помощью его открытого ключа. Если расшифрованное сообщение осмысленное, то подпись верна. Электронная подпись на основе алгоритма RSA и хэш-функции: 1. Выработка ключей (выполняет отправитель А): Открытый ключ: (257, 17873) Закрытый ключ: (9953, 17873) 2. А вычисляет хеш-образ h = h(T), где T - исходное сообщение и T = 55, h = 57 и вырабатывает цифровую подпись s = ℎ𝑑 mod n, где d - закрытый ключ отправителя А, n - часть открытого ключа отправителя А. s = 579953 mod 17873 = 9904 Отправка получателю B исходного сообщения T и цифровой подписи s. 3. Получатель B вычисляет хеш-образ по полученному сообщению h’ = h(T’), где T’ - полученное сообщение. T’ = 55 h’ = 57 Вычисляется хеш-образ из цифровой подписи h = s^e mod n, где e и n открытый ключ отправителя А. h = 9904257 mod 17873 = 57 Так как h’ = h = 57, то получатель B делает вывод, что полученное сообщение T’ = T и оно действительно отправлено А. Вывод: Проверка осуществляется путем сравнения хеш-образа сообщения и хещ-образа из цифровой подписи. Если они совпадают, то сообщение не подвергалось искажению, а отправитель является тем, за кого себя выдает. Стойкость гарантируется невозможностью фабрикации и модификации сообщений. А также, их устойчивостью к коллизиям и нахождению второго прообраза. На основе цифровой подписи DSS: Для группы пользователей выбираются значения трех общих (несекретных) параметров p, q, a. p = 337 q = 7, где p = bq + 1 a = 8, где 𝑎𝑞 mod p = 1 Абонент А выбирает случайное число x = 5, секретный ключ и вычисляет открытый ключ y = 𝑎 𝑥 mod p = 79. Абонент В выбирает случайное число x = 6, секретный ключ и вычисляет открытый ключ y = 𝑎 𝑥 mod p = 295. Процесс подписи: 1. А вычисляет значение хэш-функции для сообщения m. h = H(m) = 2. А выбирает случайное число k = 4, 0 < k < q. 3. А вычисляет r = (𝑎𝑘 mod p) mod q = (84 mod 337) mod 7 = 3 4. А определяет s = [𝑘 −1 (H(m) + x * r)] mod q 35. Расширенный алгоритм Евклида: 7=1*4+3 4=1*3+1 1=1*0+1 1 = 1 * (-1) + 2 3=7–1*4 1=4–1*3 1=4–1*3 1 = 4 – 1(7 – 1 * 4) 1=4–7+1*4 1=2*4–1*7 𝑘 −1 = 2 s = (2 * (35 + 5 * 3)) mod 7 = 2 Абонент А передает В сообщение m и подпись (r, s) Процесс проверки подписи: 1. В вычисляет значение хэш-функции h = H(m) для сообщения m, h = 35. 2. В проверяет выполнение неравенств 0 < r < q, 0 < s < q: 0 < 3 < 7, 0 < 2 < 7 3. В вычисляет w = 𝑠 −1 mod q Расширенный алгоритм Евклида: 7=3*2+1 1 = 3 * 1 + (-2) 0 = 3 * 1 + (-3) 2=2*1+0 𝑠 −1 = 7 - 3 = 4 w = 4 mod 7 = 4 4. В вычисляет u1 = (H(m) * w) mod q = 35 * 4 mod 7 = 0 5. В вычисляет u2 = r * w mod q = 3 * 4 mod 7 = 5 v = [(𝑎𝑢1 * 𝑦 𝑢2 ) mod p] mod q = (1 * 795 ) mod 337 mod 7 = 3 В проверяет равенство v = r. Если равенство выполняется, то подпись считается верной. 3 = 3 => подпись абонента А верна Вывод: Стойкость основывается на сложности вычисления дискретных логарифмов, злоумышленник не может восстановить параметры k из r или х из s, а следовательно, не может подделать подпись. Проверка основывается на проверке открытым ключом, когда создана она может быть только с помощью приватного ключа, который имеется у только у владельца подписи.