Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОЗІ / Лекц_ї / Лекц_я 5.doc
Скачиваний:
60
Добавлен:
05.06.2015
Размер:
101.38 Кб
Скачать

Алгоритм rsa

Діффі й Хеллман визначили новий підхід до шифрування, що викликало до життя розробку алгоритмів шифрування, що задовольняють вимогам систем з відкритим ключем. Одним з перших результатів був алгоритм, розроблений в 1977 році Роном Ривестом, Ади Шамиром і Льоном Адлеманом і опублікований в 1978 році. З того часу алгоритм Rivest-Shamir-Adleman (RSA) широко застосовується практично у всіх додатках, що використовують криптографію з відкритим ключем.

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

Алгоритм RSA являє собою блоковий алгоритм шифрування, де зашифровані й незашифровані дані є цілими між 0 і n -1 для деякого n.

Опис алгоритму

Алгоритм RSA використовує вираження з експонентами. Дані шифруються блоками, кожний блок розглядається як число, менше деякого числа n. Шифрування й дешифрування мають такий вигляд для деякого незашифрованого блоку М и зашифрованого блоку С.

С = Ме (mod n)

M = Cd (mod n) = (Me)d (mod n) = Med (mod n)

Як відправник, так і одержувач повинні знати значення n. Відправник знає значення е, одержувач знає значення d. Таким чином, відкритий ключ є KU = {e, n} і закритий ключ є KR = {d, n}. При цьому повинні виконуватися наступні умови:

  1. Можливість знайти значення е, d і n такі, що Med = M mod n для всіх М < n .

  2. Відносна легкість обчислення Ме й Сd для всіх значень М < n.

  3. Неможливість визначити d, знаючи е и n.

Тепер розглянемо сам алгоритм RSA.

Нехай p і q - прості.

n = p · q.

Варто вибрати e і d такі, що е · d 1 mod Φ (n), де Φ (n) – функція Ейлера, й у даному випадку:

Φ (n) = (р-1)( q-1)

або e d 1 mod Φ(n)

e і d є взаємнозворотними по множенню по модулі Φ(n). Помітимо, що відповідно до правил модульної арифметики, це вірно тільки в тому випадку, якщо d (і отже, е) є взаємнопростыми з Φ(n). Таким чином, НЗД (Φ(n), d) = 1, де НЗД – найбільший загальний дільник.

Тепер розглянемо всі елементи алгоритму RSA.

p, q - два простих цілих числа

 - відкрито, розраховується.

n = p · q

 - закрито, розраховується.

d, НЗД (Φ(n), d) = 1;

 - відкрито, обирано.

1 < d < Φ(n)

е d 1 mod Φ(n)

 - закриті, обирані.

Закритий ключ складається з {d, n}, відкритий ключ складається з {e, n}. Припустимо, що користувач А опублікував свій відкритий ключ, і що користувач В хоче послати користувачеві А повідомлення М. Тоді В обчислює З = Ме (mod n) і передає С. При одержанні цього зашифрованого тексту користувач А дешифрує обчисленням М = С d (mod n).

Підсумуємо алгоритм RSA:

Створення ключів

Вибрати прості р и q

Обчислити n = p · q

Вибрати d     НЗД (Φ(n), d) = 1; 1 < d < Φ(n)

Обчислити е     е = d-1 mod Φ(n)

Відкритий ключ KU = {e, n}

Закритий ключ KR = {d, n}

Шифрування

Незашифрований текст: М < n

Зашифрований текст: З = М е (mod n)

Дешифрування

Зашифрований текст: З

Незашифрований текст: М = Сd (mod n)

Розглянемо конкретний приклад:

Вибрати два простих числа: р = 7, q = 17.

Обчислити n = p · q = 7 · 17 = 119.

Обчислити Φ(n) = (p - 1) · (q - 1) = 96.

Вибрати е так, щоб е було взаємопростим з Φ(n) = 96 і менше, ніж Φ(n):

е = 5.

Визначити d так, щоб d · e 1 mod 96 и d < 96.

d = 77, тому що 77 · 5 = 385 = 4 · 96 + 1.

Результуючі ключі: відкритий KU = {5, 119} і закритий KR = {77, 119}.

Наприклад, потрібно зашифрувати повідомлення М = 19.

195 = 66 (mod 119); С = 66.

Для дешифрування обчислюється 6677 (mod 119) = 19.

Соседние файлы в папке Лекц_ї