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

Лабораторна робота №6

Дослідження криптоалгоритма шифрування RSA

1. Мета роботи.

Дослідження структури алгоритму і методики практичної реалізації криптосистеми шифрування RSA.

2. Основні теоретичні положення

Як відомо, алгоритми симетричного шифрування використовують ключі відносно невеликої довжини і тому можуть швидко шифрувати великі об'єми даних.

При використанні алгоритму симетричного шифрування відправник і одержувач застосовують для шифрування і розшифрування даних один і той же секретний ключ. Таким чином, алгоритми симетричного шифрування ґрунтуються на припущенні про те, що зашифроване повідомлення не зможе прочитати ніхто, крім того хто володіє ключем для його розшифрування. При цьому якщо ключ не скомпрометований, то при розшифруванні автоматично виконується аутентифікація відправника, оскільки тільки він має ключ, за допомогою якого можна зашифрувати повідомлення. Таким чином, для симетричних криптосистем актуальна проблема безпечного розподілу симетричних секретних ключів. У зв'язку з цим без ефективної організації захищеного розподілу ключів використання звичайної системи симетричного шифрування в обчислювальних мережах практично неможливе.

Вирішенням даної проблеми є використання асиметричних алгоритмів шифрування, званих криптосистемами з відкритим ключем. У них для зашифрування даних використовується один ключ, званий «відкритим» а для розшифрування, - інший званий «закритим або секретним». Слід мати на увазі, що ключ розшифрування не може бути визначений з ключа шифрування.

У асиметричних криптосистемах відритий ключ і криптограма можуть бути відправлені по незахищених каналах. Концепція таких систем заснована на застосуванні однонаправлених функцій.

Як приклад однонаправленої функції може служити цілочисельне множення. Пряме завдання - обчислення ддвох великих цілих чисел р і q, п =p*q. Це відносно нескладне завдання для ЕОМ.

Зворотне завдання - факторизація або розкладання на множники великого цілого числа практично нерозв'язна при достатньо великих значеннях п.

Наприклад, якщо р≈ q, а їх добуток п 2664,то для розкладання цього числа на множники буде потрібно 223 операцій, що практично неможливо виконати за прийнятний час на сучасних ЕОМ.

Іншим прикладом однонаправленої функції є модульна експонента з фіксованою підставою і модулем.

Наприклад, якщо у = ах, то природно можна записати, що х = loga (у).

Завдання дискретного логарифмування формулюється таким чином. Для відомих цілих а, п, у слід знайти таке число х, при якому ах (mod п) = у. Наприклад, якщо а - 2664 і п=2664 знаходження показника ступеня х для відомого у зажадає близько 1026 операції, що також неможливо виконати на сучасних ЕОМ .

У зв'язку з тим, що в даний час не вдалося довести, що не існує ефективного алгоритму обчислення дискретного логарифма за прийнятний час, то модульна експонента також умовно віднесена до однонаправлених функцій.

Іншим важливим класом функцій, використовуваних при побудові криптосистем з відкритим ключем є, так звані, однонаправлені функції з секретом. Функція відноситься до даного класу за умови, що вона є однонаправленою і, крім того, можливе ефективне обчислення зворотної функції, якщо відомий секрет.

В даній лабораторній роботі досліджується криптосистема RSA, що використовує модульну експоненту з фіксованим модулем і показником ступеня (тобто однонаправлену функцію з секретом).

3. Методика виконання роботи

Завдання на виконання лабораторної роботи видається викладачем після проходження студентами співбесіди по основах криптосистем з відкритим ключем.

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

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

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

3.1.1.Вибір двох взаємно простих великих чисел рта q

  1. Визначення їх добутку: п=р*q

  2. Визначення функції Ейлера: φ(n)=(p-l)(q-l)

  3. Вибір відкритого ключа е з урахуванням умов:

1<еφ(n), МОД(е, φ(n))= 1

3.1.5. Визначення секретного ключа d, що задовольняє умові

е *d = 1 (mod φ(n)), де d<n

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

3.2.1. Розбиває початковий текст повідомлення на блоки M1, М2..., Мп

(Mi = 0,l,2...,n)

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

3.2.3. Відправляє одержувачеві криптограму : C1, С2... Сп

3.2.3. Одержувач розшифровує криптограму за допомогою секретного

ключа d по формулі:

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

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

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

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

φ(n)=2*10 = 20

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

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

e*d = 1 (mod φ(n)), 7*d = 1 (mod 20); d=3;

3.3.6. Відправляємо одержувачеві пару чисел (п = 33, е = 7); Представляємо шифроване повідомлення М як послідовність цілих

чисел 312.

3.3.7. Розбиваємо початкове повідомлення на блоки М1 =3, М2 =1, М3= 2;

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

послідовності блоків:

C1 = 37 (mod 33) = 2187 (mod 33) = 9

C2 = 17 (mod 33) =1 (mod 33) = 1,

C3 - 27 (mod 33) = 128 (mod 33) = 29.

3.3.9. Відправляємо криптограму C1= 9,C2= 1, C3= 29.

3.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 є початковим повідомленням М.

Приклад виконання

1. Генерация ключів .

Виберемо два прості числа р = 13 і q = 19 (див. Додаток 1).

Тоді модуль

n = pq=13*19 = 247

і функція Ейлера

(n) = (p-1)(q-1) = 12*18 = 216.

Закритий ключ d вибираємо з умови d < (n) і d взаємно просте з (n), тобто d і (n) не мають загальних дільників.

Нехай d = 25.

Відкритий ключ e вибираємо з умов e<(n) і d*e=1(mod (n)): e<216

25e=1(mod 216).

Остання умова означає, що число 25e-1 повинно ділитися на 216 без залишку.

Таким чином, для визначення e потрібно підібрати таке число, к

25e-1 = 216 к.

При k=14 отримуємо 25e=3024+1 або

e=121.

В нашому прикладі

(121, 247) – відкритий ключ

( 25, 247) – секретний ключ.