Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаборатор_практикумZI.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
879 Кб
Скачать
☆

2 Порядок виконання роботи

1 Розробити алгоритм для кодування та написати програму кодування з ключем k[0]-k[3] (використання 4-х ключів обумовлено тим, що для кодування другої половини даних (Z) використовуються ключі k[2] та k[3] для підвищення стійкості криптоалгоритму кодування), для даних, що знаходяться в z, y.

Параметри:

довжина ключа - 128 біт

кількість ітерацій – 16 (кожна ітерація включає в себе 2 раунди).

2 На основі алгоритму кодування розробити алгоритм для декодування та написати програму декодування даних на будь-якій із мов програмування.

Порядок виконання роботи відповідає наведеній нижче криптосистемі шифрування даних за схемою RSA.

Схема алгоритму шифрування даних RSA

1 Визначення відкритого «е» і секретного «d» ключів

1. 1 Вибір двох взаємно простих великих чисел р і q 1.2 Означення їх добутку: n = р * q 1.3 Означення функції Ейлера: (n) = (p - 1) (q - 1) 1.4 Вибір відкритого ключа е із врахуванням умов:

1 < е ≤ (n) , НОД (е, (n)) = 1

1.5 Означення секретного ключа d, який задовільняє умову

е * d ≡ 1 (mod (n)), де d < n

2 Алгоритм шифрування повідомлення М (дії відправника)

2.1 Розбиває вихідний текст повідомлення на блоки М1, М2 ,..., Мn

(Мі = 0,1,2 ,..., n)

2.2 Шифрує текст повідомлення у вигляді послідовності блоків:

2.3 Відправляємо одержувачу криптограму: С1, С2, ... Сn 2.4 Одержувач розшифровує криптограму за допомогою секретного ключа d за формулою:

3 Процедуру шифрування даних розглянемо на наступному прикладі (для простоти і зручності розрахунків в даному прикладі використані числа малої розрядності):

3.1 Вибираємо два простих числа р і q, р = 3, q = 11;

3.2 Визначаємо їх добуток (модуль) n = p * q = 33;

3.3 Обчислюємо значення функції Ейлера (n) = (p - 1) (q -1)

(n) = 2 * 10 = 20

3.4 Вибираємо довільним чином відкритий ключ з урахуванням виконання умов 1<е ≤ (n) і НОД (е, (n)) = 1, е = 7;

3.5 Обчислюємо значення секретного ключа d, який задовільняє умову

е * d ≡ 1 (mod (п)), 7 * d ≡ 1 (mod 20); d = 3;

3.6 Відправляємо одержувачу пару чисел (п = 33, е = 7);

Виражаємо шифроване повідомлення М як послідовність цілих чисел 312.

3.7 Розіб’ємо вихідне повідомлення на блоки М1 = 3, М2 = 1, М3 = 2;

3.8 Шифруємо текст повідомлення, який поданий у вигляді послідовності блоків:

С1 = 37 (mod 33) = 2187 (mod 33) = 9,

С2 = 17 (mod 33) =1 (mod 33) =1,

С3 = 27 (mod 33) = 128 (mod 33) =2 9.

3.9 Відправляємо криптограму С1 = 9, С2 = 1, С3 = 29.

3.10 Одержувач розшифровує криптограму за допомогою секретного ключа d за формулою:

М1 = 93 (mod 33) = 729 (mod 33) = 3,

М2 = 13 (mod 33) =1 (mod 33) = 1,

М3 = 293 (mod 33) = 24389 (mod 33) = 2.

Отримана послідовність чисел 312 є вихідним повідомлення М.

3 Контрольні питання

1 Який криптоалгоритм називається fсиметричним?

2 Що таке асиметричний криптоалгоритм і яка його відмінність від симетричного?

3 До якого типу відноситься алгоритм RSA?

4 Які операції використовуються для шифрування в алгоритмі TEA?

5 Як розшифровується слово RSA?

6 Як здійснюється кодування даних за допомогою RSA алгоритму?