
На сортировку / 5 / 77730 / Alish_LABA_2_Zivts
.docxВведение
В зависимости от структуры используемых ключей методы шифрования подразделяются на:
1) симметричное шифрование: посторонним лицам может быть известен алгоритм шифрования, но неизвестна небольшая порция секретной информации — ключа, одинакового для отправителя и получателя сообщения; Примеры: DES, 3DES, AES, Blowfish, Twofish, ГОСТ 28147-89
2) асимметричное шифрование: посторонним лицам может быть известен алгоритм шифрования, и, возможно открытый ключ, но неизвестен закрытый ключ, известный только получателю. Криптографические системы с открытым ключом в настоящее время широко применяются в различных сетевых протоколах, в частности, в протоколах TLS и его предшественнике SSL (лежащих в основе HTTPS), а так же SSH, PGP, S/MIME и т. д. Российский стандарт, использующий асимметричное шифрование - ГОСТ Р 34.10-2001.
На данный момент асимметричное шифрование на основе открытого ключа RSA (расшифровывается, как Rivest, ShamirandAldeman - создатели алгоритма) использует большинство продуктов на рынке информационной безопасности.
Его криптостойкость основывается на сложности разложения на множители больших чисел, а именно - на исключительной трудности задачи определить секретный ключ на основании открытого, так как для этого потребуется решить задачу о существовании делителей целого числа. Наиболее криптостойкие системы используют 1024-битовые и большие числа.[2]
Цель работы:
Изучить принцип работы асимметричных алгоритмов шифрования на примере алгоритма RSA. Освоить методику создания комбинированных алгоритмов шифрования, которые совмещают достоинства методов симметричной и асимметричной криптографии.
Алгоритм шифрования RSA
Алгоритм RSA был разработан в 1977 году РономРивестом, Ади Шамиром и Леном Адлеманом и опубликован в 1978 году. С тех пор алгоритм Rivest-Shamir-Adleman (RSA) широко применяется практически во всех приложениях, использующих криптографию с открытым ключом.
Наиболее перспективными системами криптографической защиты данных являются системы с открытым ключом. В таких системах для зашифрования данных используется один ключ, а для расшифрования другой. Первый ключ не является секретным и может быть опубликован для использования всеми пользователями системы, которые зашифровывают данные. Расшифрование данных с помощью известного ключа невозможно. Для расшифрования данных получатель зашифрованной информации использует второй ключ, который является секретным Разумеется, ключ расшифрования не может быть определен из ключа зашифрования.
При рассмотрении метода RSA необходимо вспомнить некоторые школьные термины. [1]
Под простым числом понимают такое число, которое делится только на 1 и на само себя. Взаимно простыми числами называют такие числа, которые не имеют ни одного общего делителя, кроме 1. Под результатом операции i modj понимают остаток от целочисленного деления i на j.
Чтобы использовать алгоритм RSA, надо сначала сгенерировать открытый и секретный ключи, выполнив следующие шаги.
1. Выбрать два очень больших простых числа р и q.
2. Определить п как результат умножения р на q(n = pq).
3.Выбрать большое случайное число d. Оно должно быть взаимно простым с результатом умножения (р — l)(g — 1).
4. Определить такое число е, для которого является истинным следующее соотношение: edmod((p — l)(g — 1)) = 1.
5.Назвать открытым ключом числа е и п, а секретным ключом — числа d и п.
Далее, чтобы зашифровать данные по известному ключу {е n}, необходимо разбить шифруемый текст на блоки, каждый из которых может быть представлен в виде числа М( i ) = 0, 1,...,п — 1; зашифровать текст, рассматриваемый как последовательность чисел М(i) по формуле
С(i= M(i)emod(n).
Чтобы расшифровать эти данные, используя секретный ключ {d,n}, необходимо выполнить следующие вычисления: М(i) = C(i)dmod(n). В результате будет получено множество чисел М(i), которое представляет собой исходный текст.
Зашифруем и расшифруем сообщение "ДРОБЬ" по алгоритму RSA:
1) Выберем p=5 and q=13.
2)Вычислим открытую компоненту ключа: n = 5*13=65.
3) Определим функцию Эйлера: (p-1)*(q-1)=48. Следовательно, d будет равно, например, 29: (d=29).
4) Выберем число е по следующей формуле: (e*29) mod 48=1. е будет равно 5: (e=5).
Числа е и n принимаются в качестве открытого ключа, d и n используются в качестве секретного ключа.
Представим шифруемое сообщение как последовательность чисел в диапазоне от 0 до 32: 5, 17, 15, 2, 29,
Для представления чисел в двоичном виде требуется 6 двоичных разрядов, так как в русском алфавите используются 33 буквы, поэтому исходный текст имеет вид: 000101, 010001, 001111, 000010, 011101.
Длина блока L определяется как минимальное число из целых чисел, удовлетворяющих условию L log2(65+1); L=6
Теперь зашифруем сообщение, используя открытый ключ {5,65}
Y1 = (55) mod 65 =5;
Y2 = (175) mod 65 = 62;
Y3 = (155) mod 65 = 45;
Y4 = (25) mod 65 = 32;
Y5 = (295) mod 65 = 9;
Расшифруем полученные данные, используя закрытый ключ {29,65}.
Y1 = (529) mod 65 = 5;
Y2 = (6229) mod 65 =17;
Y3 = (4529) mod 65 =15;
Y4 = (3229) mod 65 =2;
Y5 = (929) mod 65 =29;
Данные расшифрованы, сопоставим последовательность <5, 17, 15, 2, 29> с последовательностью букв нашего алфавита. Получили слово ДРОБЬ.
Хеширование и цифровая подпись документов.
Используя данные задания 1.1, получить хеш – код m для сообщения М при помощи хеш – функции Н, взятой из рекомендаций МККТТ Х.509. Вектор инициализации Н0 выбрать равным нулю.
Вычислить цифровую подпись методом RSA под электронным документом М, используя рассчитанный хеш – код m и секретный ключ d.
Представить схему цифровой подписи с подробным описанием ее функционирования.
Хеш – функцию МККТТ Х.509 запишем следующим образом:
Hi=[(Hi-1 Mi)2] (mod n), где i=l,n, H0 – вектор инициализации, Мi =М1,М2,М3…,Мn - -длина блока.
Все блоки делят пополам и к каждой половине прибавляют равноценное количество единиц. С преобразованными таким образом блоками производят интеграционные действия.
Необходимо получить хеш – код сообщения ДРОБЬ при помощи хеш функции Х.509 с параметрами p=5, q=13.
Порядок вычисления хеш – кода:
а) получить значение модуля: n=pq= 5*13=65;
б)Представить сообщение в виде номеров букв русского алфавита в десятичном и двоичном видах:
Д Р 0 Б Ь
5 17 15 2 29
00000101, 00010001, 00001111, 00000010, 00011101:
в) Разбить байт пополам, добавив в начало полубайта единицы и получить хешируемые блоки Мi:
M1 |
M2 |
M3 |
M4 |
M5 |
11110000 |
11110101 |
11110001 |
11110001 |
11110000 |
M6 |
M7 |
M8 |
M9 |
M10 |
11111111 |
11110000 |
11110010 |
11110001 |
11111101 |
г) Выполнить интеративные шаги:
Первая интерация
М1 |
11110000 |
|
|
Н0=0 |
00000000 |
Н0 М1 |
11110000=24010 |
[(H0 M1)2] (mod 65) |
2402 mod 65 = 10 |
Н1 |
1010=00001010 |
Вторая интерация
М2 |
11110101 |
|
|
Н1 |
00001010 |
Н1 М2 |
11111111=25510 |
[(H1 M2)2] (mod 65) |
2552 mod 65 = 25 |
Н2 |
2510=00011001 |
Третья интерация
М3 |
11110001 |
|
|
Н2 |
00011001 |
Н2 М3 |
11101000=23210 |
[(H2 M3)2] (mod 65) |
2322 mod 65 = 4 |
Н3 |
00000100 |
Четвертая интерация
М4 |
11110001 |
|
|
Н3 |
00000100 |
Н3 М4 |
11110101=24510 |
[(H3 M4)2] (mod 65) |
2452 mod 65 = 30 |
Н4 |
00011110 |
Пятая интерация
М5 |
11110000 |
|
|
Н4 |
00011110 |
Н4 М5 |
11101110=23810 |
[(H4 M5)2] (mod 65) |
2382 mod 65 = 29 |
Н5 |
00011101 |
Шестая интерация
М6 |
11111111 |
|
|
Н5 |
00011101 |
Н5 М6 |
11100010=22610 |
[(H5 M6)2] (mod 65) |
2262 mod 65 =51 |
Н6 |
00110011 |
Седьмая интерация
М7 |
11110000 |
|
|
Н6 |
00110011 |
Н6 М7 |
11000011 = 19510 |
[(H6 M7)2] (mod 65) |
1952 mod 65 = 0 |
Н7 |
00000000 |
Восьмая интерация
М8 |
11110010 |
|
|
Н7 |
00000000 |
Н7 М8 |
11110010= 24210 |
[(H7 M8)2] (mod 65) |
2422 mod 65 = 64 |
Н8 |
01000000 |
Девятая интерация
М9 |
11110001 |
|
|
Н8 |
01000000 |
Н8 М9 |
10110001 = 17710 |
[(H8 M9)2] (mod 65) |
1772 mod 65 = 64 |
Н9 |
01000000 |
Десятая интерация
М10 |
11111101 |
|
|
Н9 |
01000000 |
Н9 М10 |
10111101= 18910 |
[(H9 M10)2] (mod 65) |
1892 mod 65 = 36 |
Н10 |
00100100 |
Таким образом, исходное сообщение ДРОБЬ имеет хеш – код m=36
Для вычисления цифровой подписи используем следующую формулу:
S=md (mod n) = 3629 mod 65 = 56
Пара (M, S) передается получателю как электронный документ М, подписанный цифровой подписью S, причем подпись S сформирована обладателем секретного ключа d.
Получив пару (M, S), получатель вычисляет хеш – код сообщения М двумя способами:
1) Восстанавливает хеш – код m’, применяя криптографическое преобразование подписи S с использованием открытого ключа e:
m’=Se (mod n) =565 mod 65 = 36
2) Находит результат хеширования принятого сообщения с помощью той же хеш – функции: m=H(M) =36.
При равенстве вычисленных значений m’ и m получатель признает пару (M, S) подлинной.
Ответы на вопросы:
1. В чём заключается алгоритм RSA?
Криптографический алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи факторизации больших целых чисел.
Криптосистема RSA стала первой системой, пригодной и для шифрования, и для цифровой подписи. Алгоритм используется в большом числе криптографических приложений.[3]
2. Для чего и почему используют криптоалгоритмы?
Защита информации методами криптографического преобразования заключается в изменении ее составных частей (слов, букв, слогов, цифр) с помощью специальных алгоритмов либо аппаратных решений и кодов ключей, то есть в приведении ее к неявному виду.[4]
3. В чём заключаются достоинства и недостатки асимметричных исимметричных алгоритмов?
Основной недостаток симметричного шифрования заключается в необходимости публичной передачи ключей – "из рук в руки". Первый недостаток ассиметричного шифрования заключается в низкой скорости выполнения операций зашифровки и расшифровки, что обусловлено необходимостью обработки ресурсоемких операций. Как следствие, требования к аппаратной составляющей такой системы часто бывают неприемлемы. [5]
Выводы
В данной лабораторной работе я изучил принцип работы асимметричных алгоритмов шифрования на примере алгоритма RSA. Освоил методику создания комбинированных алгоритмов шифрования, которые совмещают достоинства методов симметричной и асимметричной криптографии. Также свое имя зашифровал алгоритме шифрования на примере алгоритма RSA.
Список использованных источников:
1. Якубова М. З. Методическое указание для лабораторной работы №2 по теме «Ассиметричный алгоритм шифрования RSA», 2017.
2. http://www.e-nigma.ru/stat/rsa
3. http://www.paveldvlip.ru/algorithms/rsa.html
3