
- •Іироіьоюстаглндп
- •Наприклад, англійська абетка
- •Послідовність біграм відкритого тексту перетворюється за допомогоюшифрувальної таблиці на послідовність біграм шифртекстузатакими правилами:
- •5128066284580377 Або такого: 1772850682584780537.
- •Abcdefghijklmnopqrstuvwxyz
- •4.8.3 Розподілення ключів
- •Незахищенний канал
- •Момра лаоео йзшвж угуем
- •Приклад маршрутного переставляння
- •Шифррешеткаявля …
- •Послідовність біграм відкритого тексту перетворюється за допомогоюшифрувальної таблиці на послідовність біграм шифртекстузатакими правилами:
- •6 Практичні роботи
- •6.1 Практична робота № 1
- •Основні способи знаходження обернених величин а - 1≡ 1 mod n.
- •6.2 Практична робота № 2
- •6.3 Практична робота № 3
- •6.5 Практична робота № 5
- •6.6 Практична робота № 6
- •6.7 Практична робота № 7
- •6.8 Практична робота № 8
- •Список рекомендованої літератури
6 Практичні роботи
6.1 Практична робота № 1
Модулярна арифметика
Метою роботи є вивчення основних принципів арифметики за модулем. Для цього студент повинен:
ознайомитися з теоретичними відомостями ;
вміти дати відповіді на контрольні питання;
вирішити завдання 6.1.1 – 6.1.3
Теоретичні відомості
Розглянемо випадок використання модулярної арифметики у нашому житті. Наприклад, якщо на циферблаті годинника ми бачимо 5 годин, це означає, що зараз може бути чи 5 годин ранку, чи 17 годин вечора. Це арифметика за модулем 12.
Запис в модулярній арифметиці
a ≡ b (mod n)
читається так: число a збігається (конгруентно, тотожно дорівнює, еквівалентно) з числом b за модулем n, якщо є таке число k , що
a ≡ b + k n.
Якщо a ≡ b (mod n), то число b називають лишком числа a за модулем n..
У нашому прикладі 17 mod 12 = 5 чи 17≡ 5 (mod 12) число 5 є лишком числа 17 за модулем 12.
Модулярна арифметика аналогічна звичайній арифметиці. Фактично можна чи по-перше привести до модулю n, а потім виконувати операції, чи по-перше виконувати операції, а вже потім приводити до модулю n.
Так для чисел a ≡ b (mod n) та c ≡ d (mod n) є правила складання та множення:
(a ±c ) ≡ (b ± d) mod n , ac ≡ bd mod n
чи
(a ±c ) mod n ≡ (a mod n ± c mod n) mod n ,
(ac ) mod n ≡ [(a mod n)(c mod n)] mod n .
(a (b + c) mod n ≡{[a b( mod n)] +[a c (mod n)]} mod n .
Приклад. (15 + 20) mod 4 ≡ 15 mod 4 +20 mod 4 ≡(3+0) mod 4≡3 mod 4.
Якщо
a
≡ b
(mod
n),то
at
≡ bt
mod
n,
де
t – ціле
число. Ділення має сенс тоді, тобто
mod
n,
коли
–
ціле
число.
Приклад.
Для числа 18 ≡ 4 mod
14
справедливо множення на t
=2, тобто
36
≡ 8 mod
14,
але несправедливо ділення на t
= 2, тому,
що
= 0,5 - не ціле число.
З правила множення випливає правило піднесення до степеня:
якщо a ≡ b (mod n), то
a m ≡ b m mod n ≡(b mod n) m mod n.
Приклад. 530 mod 3 ≡ (52 mod 3)15 mod 3 ≡ (1 mod 3)15 mod 3≡ 1 mod 3.
Криптографія використовує обчислювання за модулем , тому що задачі типу обчислення дискретних логарифмів та квадратних коренів дуже складні. Крім того, з обчислюваннями за модулем легше працювати, тому що вони обмежують діапазон усіх проміжних величин та результату.
Для модулю n довжиною k біт проміжні результати будь-якого складання, віднімання чи множення будуть не довше за 2k біт. Тому піднесення до степеня в медулярній арифметиці можна виконати без генерації дуже великих проміжних результатів.
Піднесення до степеня числа а за модулем n
ах mod n
можна виконувати, як ряд множення та ділення.
Наприклад, якщо треба обчислити а8 mod n, варто виконати три множення та три приведення до модулю:
((а2 mod n) 2 mod n) 2 mod n..
Якщо треба обчислити двійкове число, тоді число х записують як суму степенів 2:
х = 25 (10)→ 1 1 0 0 1 (2) , тому 25 = 24 + 23 + 20.
Тоді
а 25 mod n = (а · а24) mod n = (а ·а 8·а 16) mod n == [ а ·(( а 2) 2)2 ·(((а 2)2)2)2] mod n ...
Цей метод зменшує трудомісткість обчислень до 1,5х k операцій, де k – довжина числа в бітах.
Так як алгоритми шифрування основані на піднесенні до степеня по модулю, тому доцільно використовувати алгоритми швидкого піднесення до степеня.
Алгоритм Евкліда
За допомогою алгоритму Евкліда можна знайти найбільший спільний дільник (НСД) чисел а та b, тобто НСД (а, b) чи просто (а, b) – це найбільше ціле число, яке одночасно ділить числа а та b без залишку.
Наприклад, (18,9) = 9; (7,3) = 1. Якщо НСД (а, b) = 1, то цілі числа а та b – взаємно прості.
Для опису алгоритму Евкліда припустимо, що а>0, b>0, а>b.
а ≡ с mod b, с>0;
b ≡ d mod с, d>0;
c ≡ e mod d, e>0;
...........................
m ≡ 0 mod n, n>0.
Знайшли НСД (а, b) = n..
Приклад. Знайти НСД (21, 15).
Згідно алгоритму Евкліда можна записати
21 ≡ 6 mod 15, 21 = 1·15 + 6;
15 ≡ 3 mod 6, 15 = 2·6 + 3;
6 ≡ 0 mod 3 6 =2·3 +0.
Так, знайшли НСД (21, 15) = 3.
Кожне ціле число n>1 може бути представлено єдиним чином як добуток простих
З точки зору криптографії позитивним фактом є те, що не відомо ніякого ефективного алгоритму розкладення чисел на множники. Більш того, не відомо ефективнів методів навіть в такому простому випадку, коли необхідно відновити два простих числа p та q з їхнього добутку:
n = p· q
Обчислення обернених величин
У модулярній арифметиці числа а та х є оберненими за модулем n, якщо
ах (mod n) ≡ 1 mod n.
чи
а - 1≡ х mod n,
де а та n - взаємно прості числа.