Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
102
Добавлен:
23.10.2019
Размер:
9.57 Mб
Скачать

Прикладна криптологія

1. Математична модель криптосистеми. Класифікація криптографічних методів. Сфери застосування.

Криптологія (kryptos – таємний, logos – наука) займається проблемами захисту інформації шляхом її перетворення. Криптологія поділяється на 2 напрямки – криптографію і криптоаналіз. Завдання цих напрямків цілком протилежні. Криптографія займається пошуком і дослідженням математичних методів перетворення інформації. Криптографічне перетворення інформації – перетворення інформації з метою приховування або відновлення її змісту, підтвердження її справжності, цілісності, авторства, захисту від несанкціонованого доступу до інформації та ресурсів тощо, яке здійснюється з використанням спеціальних даних (ключів). Засобами криптографічного захисту інформації є апаратні, програмні, апаратнопрограмні або інші засоби, призначені для криптографічного захисту інформації. Отже до основних задач криптографії відносять розробку та супровід засобів криптографічного захисту інформації.

Сучасна криптографія включає в себе чотири основних напрями:

1.Симетричні криптосистеми.

2.Криптосистеми с відкритим ключем.

3.Системи електронного підпису.

4.Управління ключами.

Сфера інтересів криптоаналізу – дослідження можливості розшифрування інформації без знання ключів.

Розглянемо спершу основні поняття криптографії.

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

В якості інформації будемо розглядати змістовні тексти, побудовані на деякому алфавіті. Під цими термінами розуміють наступне:

Відкритий текст (повідомлення) – текст (впорядкований набір із елементів алфавіту), який підлягає шифруванню (ВТ)

Шифрування – процес криптографічного перетворення, при якому відкритий текст замінюється шифротекстом з допомогою відкритого або секретного ключа

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

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

Виділяють сім типів наступних атак, які може проводити криптоаналітик:

Таблиця 1 – Типи криптоаналітичних атак

Тип атаки

Інформація відома криптоаналітику

Атака на основі відомого

Алгоритм шифрування;

шифротексту (Ciphertext Only)

Один або декілька ШТ

Атака

на

основі

відомого

Алгоритм шифрування;

відкритого

тексту

(Known

Одна або декілька пар ВТ-ШТ, згенерованих з

Plaintext)

 

 

допомогою секретного ключа

Атака

на

основі

адаптивно

Алгоритм шифрування;

підібраного відкритого тексту

Зловмисник має можливість уточнювати вибір

 

 

 

 

наступного тексту в залежності від попередніх

 

 

 

 

результатів

Атака

на

основі

підібраного

Алгоритм шифрування;

відкритого

тексту

(Chosen

Одна або декілька пар ВТ-ШТ, згенерованих з

Plaintext)

 

 

допомогою секретного ключа, причому криптоаналітик

 

 

 

 

має можливість вибрати початкове повідомлення (ВТ)

Атака

на

основі

підібраного

Алгоритм шифрування;

шифротексту (Chosen Ciphertext)

Вибраний криптоаналітиком ШТ та відповідний йому

 

 

 

 

ВТ. Зловмисник має засіб розшифрування з введеним

 

 

 

 

ключем, який йому невідомий

Атака

на

основі

підібраного

Ключ може підбиратись з обмеженої множини ключів,

ключа

 

 

 

якщо між ними існує певний зв’язок

Грабіжницький «аналіз»

Ключі отримують на основі використання агентури,

 

 

 

 

шантажу, підкупу, застосування тортур.

Сфери застосування криптографії До 70-х років минулого століття криптографія використовувалась виключно з метою

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

web трафік: HTTP/HTTPS (SSL/TLS);

wireless трафік: протоколи WEP (IEEE 802.11, 1997), WPA (2003), WPA2

(IEEE 802.11i , 2004);

Мобільний трафік: GSM;

Bluetooth;

автентифікація користувача;

хешування паролів

безпечні транзакції кредитною карткою в мережі Інтернет

встановлення секретних паролів

цифрові підписи;

анонімне онлайн спілкування;

анонімна цифрова готівка;

вибори та багато-багато інших.

2.Історичні шифри перестановки (Скітали, маршрутні та інші)

I. Шифри типу «Перестановки»

Символи шифрованого тексту переставляються за певним правилом в межах деякого блоку цього тексту.

1. Скітала (Scytale) : давньогрецька «палочка – шифрувалочка». Існує припущення, що ще в V- VII ст. до н.е. в Греції і Стародавній Спарті греки

застосовували спеціальний шифрувальний пристрій для зв’язку під час військових компаній. Цей пристрій складався з двох циліндричних дерев’яних палок однакової довжини та товщини: одну палку залишали собі, іншу передавали союзнику. Такі палки називали «скіталами». На рис. 1 зображено скіталу, яка датована, якщо вірити працівникам музею Сен-Сір, де виставлена така річ, близько 5 ст.до н.е.

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

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

Секретний ключ: Ø діаметр палки.

Дешифрування. Зміст такого гаджету в тому, що прочитати його міг лиш власник скітали аналогічного розміру, намотавши на неї без щілин смужку отриманого папірусу: тоді букви розташовувалися в потрібному порядку і зміст написаного ставав зрозумілим. Пристрій був простим і практичним у використанні на полі бою, але надійним його назвати важко.

Метод криптоаналізу. Згідно з легендою, цей «шифр» зумів розгадати ще Арістотель. Для «злому» скітали необхідно взяти довгий конус, намотати на нього стрічку з текстом і поступово переміщувати вздовж конуса до вершини до тих пір поки текст не стане читабельним. Таким чином можна визначити діаметр скітали.

З плином часу в Греції винаходили все більше і більше різних методів передачі секретних повідомлень. Один грецький письменник Еней Тактик вважав це питання настільки важливим, що описав 16 різних способів передачі секретних депеш і шифрованих повідомлень в своїй книзі « Як пережити облогу» («How to survive under siege») IVст. до н.е. Деякі з методів стали реальними довгожителями і використовувались ще в часи другої світової війни

2.Шифр простої перестановки (анаграма – anagram)

Шифрування. Нехай задано деякий відкритий текст: = 1 2 3 , що складається з r символів. Для шифрування даного тексту методом простої перестановки використовується ключ, який є таблицею, що задає правило перестановки. Перша стрічка – позиція символу у відкритому тексті, друга стрічка – позиція в шифрограмі.

1

2

3

 

Секретний ключ: = ( 1

2

3

)

Простір ключів: | | = ! - росте експоненційно відносно розміру r.

6! = 720 ≈ 210 { 7! = 5040 ≈ 213

10! = 3,6 106 ≈ 222

Дешифрування. Для дешифрування необхідно побудувати на основі ключа k обернену ключ-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

таблицю −1 = ( 1

2

3

). Тут перша стрічка відповідає позиції символу в

1

2

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

шифротексті , а друга – позиція у відкритому тексті.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приклад :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Шифрування: ВТ : m=”dormitory”

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

 

3

 

4

 

5

6

 

 

7

 

8

 

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

 

o

 

 

r

 

m

 

i

t

 

 

o

 

r

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

K = (1 2 3 4 5 6 7 8 9)

 

 

 

 

 

 

 

1

 

8

 

3

9

2

 

4

7

 

6

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

2

 

3

 

4

 

5

 

6

 

 

7

 

8

 

9

 

 

 

 

 

ШТ: с=”dirtyroom”

 

 

 

 

d

 

 

i

 

r

 

 

t

 

 

y

 

 

r

 

 

 

o

 

 

o

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

−1 = (1 8 3 9 2 4 7 6 5)

 

 

 

 

 

 

 

 

 

1

 

 

2

 

3 4

 

 

5

 

6 7

8

 

9

 

 

 

 

 

 

 

 

 

 

1

 

2

 

3

 

4

 

 

5

 

 

6

 

 

7

 

 

8

 

 

9

 

 

 

 

 

 

 

 

 

 

d

 

o

 

 

r

 

 

m

 

 

i

 

t

 

 

o

 

 

r

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m=”dormitory”

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

Тому, якщо r >12, то використовують наступний підхід: розбивають текст на блоки однакової довжини і застосовують до кожного такого блоку фіксовану перестановку з l- елементів.

Приклад

ВТ: m=”cryptography”, нехай l=4 і секретний ключ

K=(1

2

3 4)

1

3

4 2

M= сryp│togr│aphy

C= cypr│tgro│ahyp

 

ШТ: с=”cyprtgroahyp”

 

 

В епоху Відродження поряд з традиційними застосуваннями криптографії в політиці дипломатії і воєнній справі з’являються інші задачі – захист інтелектуальної власності від переслідувань інквізиції чи запозичень зловмисників.

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

3.Маршрутні шрифти (Route).

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

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

Шифр простої табличної перестановки

(Columnar transposition or row-column transpose)

В найпростішому випадку повідомлення в таблицю вписують по рядках, а зчитують по стовпцях. Ключем в такому випадку є розмір таблиці.

Приклад

ВТ: m = “We are the champions”

 

W

E

 

_

A

R

 

 

 

 

 

 

 

 

ВТ

E

_

 

T

H

E

 

 

 

 

 

 

 

_

C

 

H

A

M

 

 

 

 

 

 

 

 

 

 

 

P

I

 

O

N

S

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ШТ

 

 

 

 

 

 

 

 

 

 

ШТ: с= “WE_PE_CI_THOAHANREMS”

Метод криптоаналізу. Такий шрифт легко зламати, якщо читати через певну фіксовану кількість букв поки не отримаєм змістовне повідомлення.

В складнішому випадку (Double transposition) встановлюється довільна нумерація стовпців і шифрограма виписується по стовпцях у відповідності з нумерацією.

Приклад

ВТ: m = “We are the champions”

2

1

4

5

3

 

 

 

 

 

W

E

_

A

R

 

 

 

 

 

E

_

T

H

E

 

 

 

 

 

_

C

H

A

M

 

 

 

 

 

P

I

O

N

S

 

 

 

 

 

ШТ: с= “E_CIWE_PREMS_THOAHAN”

В цьому випадку ключем є розмір таблиці і визначений порядок стовпців. Щоб приховати розмір таблиці, можна додавати будь-які букви в кінці.

Ускладнена таблична перестановка(Myszkowski transposition)

Більш зручним для використання є метод смислової перестановки , в якому стовпці чи\та рядки переставляються за ключовим словом. На практиці літери ключового слова впорядковують за алфавітним порядком.

Приклад

ВТ: m = “We are the champions”

 

 

2

1

3

5

4

 

 

l

e

m

o

n

 

 

 

 

 

 

 

3

l

_

C

H

A

M

 

 

 

 

 

 

 

2

i

E

_

T

H

E

 

 

 

 

 

 

 

4

m

P

I

O

N

S

 

 

 

 

 

 

 

1

e

W

E

_

A

R

 

 

 

 

 

 

 

ШТ: c= “C_IE_EPWHTO_MESRAHNA”

Магічні квадрати

Магічними квадратами називаються квадратні таблиці розміром nxn з вписаними послідовними натуральними числами від 1 до 2, які в сумі по кожному стовпцю, кожній стрічці та кожній діагоналі дають одне і теж число.

Квадрат 3х3

4

9

2

 

 

 

3

5

7

 

 

 

8

1

6

 

 

 

∑ = 34

Шифрування. Шифрування за магічним квадратом відбувається наступним Символи відкритого тексту послідовно

 

∑ = 15

 

 

 

Квадрат 4х4

 

 

 

 

 

16

 

3

2

13

 

 

 

 

 

 

 

 

 

5

 

10

11

8

 

 

 

 

 

 

 

 

 

9

 

6

7

12

 

 

 

 

 

 

 

 

 

4

 

15

14

1

чином.

 

 

 

 

 

 

 

 

 

 

 

 

 

вписуються в квадрат згідно записаних в них числам: позиція символу в тексті відповідає порядковому числу. В пусті клітинки ставиться крапка або будь-яка буква. Після чого шифрограма записується по порядку.

Ключ: магічний квадрат.

Приклад.

ВТ: m= “We are cool”

Використаємо вище наведений магічний квадрат розміром 4х4

O

_

E

.

 

 

 

 

R

O

L

C

 

 

 

 

O

E

_

A

 

 

 

 

A

E

E

W

 

 

 

 

ШТ: O_Е.ROLCOE_AAEEW

Простір ключів. Кількість магічних квадратів росте зі збільшенням їх розміру. Так при n=3 існує лише один магічний квадрат (без врахування його повороту), кількість магічних квадратів розміром 4х4 рівна 880, а вже для n=5 кількість квадратів дорівнює 250000. Тому магічні квадрати були хорошою основою для надійної системи шифрування того часу, тому що ручний перебір варіантів ключа був майже неможливим.

Решітка Кардано (Cardan grille)

Джероламо Кардано (1501-1576рр.) був автором геніального на той час винаходу – шифрування по трафарету (решітці).

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

Один з варіантів решітки Кардано – це квадратна решітка, яку можна застосовувати декілька раз обертаючи відносно центру. В більш складній формі ця решітка з’явилась в кінці XIXст., але до того часу зв’язок з Кардано залишився тільки в назві. Поворотна решітка Кардано дозволяє записати текст масивом символів так, що результат буде цілком нечитабельним. Зробити таку решітку Кардано досить просто. Для прикладу, якщо потрібно зашифрувати текст розміром до 64 символів, то необхідно взяти квадратний лист паперу, розграфити його на 64 клітинки (8х8). Далі необхідно розділити даний квадрат на 4 рівних частини (по 16 клітинок в кожній) двома перпендикулярами по черзі. Потім заповнити кожну з чотирьох зон номерами клітинок , нумерацію клітинок слід починати почергово з кожного кута і вести її щоразу за годинниковою стрілкою.

Потім необхідно закреслити в довільному порядку числа від 1 до 16 в різних частинах решітки так, щоб числа не повторювались. Закреслені числа – це клітинки, які необхідно вирізати. Приклад решітки наведено на рисунку 3.

Шифрування. Необхідно приставити готову решітку до листка і вписати текст, потім повернути на 90 градусів і знову вписати і так ще двічі.

Простір ключів

У випадку квадратної решітки розміром nхn

2

| | = 2 2

Тобто для таблиці 8х8 (до 64 символів) | | = 232

У випадку прямокутної решітки розміром mхn:

n m 2

|К| = 2

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

Для = 2 така решітка єдина, але для = 8 можна зробити більше 232

різних решіток.

 

 

 

 

 

 

Кількість

 

 

Простір ключів

 

символів

Усклад. табличних

Решітка

 

Звичайна перестановка

повідомлення

перестановка

Кардано

 

 

36

6! 6! ≈ 5 105

≈ 216

49 = 3 105

 

36!≈4*1041 ≈ 2140

64

8! 8! ≈ 2 109

≈ 230

416 ≈ 4 109

 

64! ≈ 1089 ≈ 2300

 

5! 13! ≈ 7 104 ≈ 213

 

 

 

 

 

100

10! 10! ≈ 1013

≈ 244

425 ≈ 1015

 

100! ≈ 10525

3. Моноалфавітні шифри заміни. Частотний аналіз

Моноалфавітні шифри при шифруванні тексту кожний i-ий символ тексту замінюють на деякий фіксований j-ий

Моноалфавітні шифри

1.Квадрат Полібія (Polybius square)

Один з найдавніших простих шифрів заміни приписують грецькому громадському історику Полібію (ІІІ-II ст. до н.е.). В 168 році до н.е. після завоювання римськими легіонами Македонії, Полібія перевезли до Риму, де він і провів решту свого життя. В одній із своїх робіт Полібій описав оригінальну систему шифрування з використанням таблиці у формі квадрату, розбитого на 25 комірок. В оригіналі це була квадратна таблиця розміром 5х5, заповнена літерами грецького алфавіту у випадковому порядку.

Квадрат Полібія грецького алфавіту зі стандартним порядком літер має вигляд.

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

3

 

4

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

α

 

β

 

γ

 

δ

 

ε

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

ζ

 

η

 

θ

 

ι

 

κ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

λ

 

μ

 

ν

 

ξ

 

ο

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

π

 

ρ

 

ς

 

σ

 

τ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

υ

 

φ

 

χ

 

ψ

 

ω

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для англійського алфавіту таблиця може мати вигляд

 

1

2

3

4

5

1

A

B

C

D

E

2

F

G

H

I/J

K

3

L

M

N

O

P

4

Q

R

S

T

U

5

V

W

X

Y

Z

 

 

 

 

 

 

Число літер в українській абетці відрізняється від числа букв у грецькому алфавіті, тому розмір таблиці вибрано інший (квадрат 6*6=36, оскільки 36 найбільш близьке число до 33). Для українського алфавіту квадрат може мати наступний вигляд:

 

1

2

3

4

5

6

1

А

Б

В

Г

Ґ

Д

2

Е

Є Ж

З

И

І

3

Ї

Й К

Л М Н

4

О П Р С Т У

5

Ф Х Ц Ч Ш Щ

6

Ь Ю Я

.

,

 

 

 

 

 

 

 

Можливий також інший варіант складання, що передбачає об'єднання букв Г і Ґ, И і Й, І і Ї. В даному випадку отримуємо наступну таблицю:

 

1

2

3

4

5

6

1

А

Б

В

Г/Ґ

Д

Е

2

Є Ж З И/Й І/Ї К

3

Л

М

Н

О

П

Р

4

С

Т

У

Ф

Х

Ц

5

Ч

Ш Щ

Ь

Ю

Я

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

В літературі описано декілька варіантів його шифру «Квадрат Полібія».

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

Дешифрування. Отримувач секретного повідомлення повинен був володіти аналогічною таблицею (секретний ключ) і при дешифруванні виконати всі наведені вище операції у зворотному порядку

2.Шифр Цезаря (зсуву)

Колекцію найстаріших моноалфавітних криптосистем заміни продовжує найбільш відомий древній шифр - шифр Цезаря, описаний істориком Древнього Рима Гаєм Светонієм. Римський імператор Гай Юлій Цезар (Gaius Julius Caesar 100-44 р.р. до н.е.) використовував шифр власного винаходу для приватного листування. Історик Светоній не наводить фактів дешифрування переписки Цезаря. Сам Цезар все життя використовував один і той самий ключ.

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

Такий метод шифрування можна відобразити шифрувальною таблицею, в якій вказано знаки заміни для кожного знаку криптограми. Використання таблиці очевидне. Отже, шифр Цезаря пов’язаний із використанням первинного алфавіту (для відкритого тексту) і вторинного алфавіту (для криптограми), циклічно зміщеного відносно первинного на три знаки вперед.

Номер

 

0

1

 

2

 

 

3

4

5

 

 

6

 

7

8

 

 

9

10

11

12

 

13

14

15

16

17

18

19

20

21

22

 

23

 

24

25

 

 

(код)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Знак

 

a

b

 

c

 

d

e

 

f

 

 

g

 

h

i

 

 

j

 

k

 

l

 

m

 

n

 

o

p

 

q

 

r

 

s

 

t

 

u

 

v

 

w

x

 

 

y

z

 

 

повідом-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лення

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Знак

 

x

y

 

z

 

a

b

 

c

 

 

d

 

e

f

 

 

g

 

h

 

i

 

j

 

k

 

l

m

 

n

 

o

 

p

 

q

 

r

 

s

 

t

 

u

 

 

v

w

 

 

шифроте

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ксту

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Можна також використовувати латинський алфавіт, що містить 26 літер і пробіл, який стоїть

 

 

після букви Z: ABCD EFGH IJKL MNOP QRST UVWX YZ Space

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Загальний випадок шифру Цезаря, що кожна буква відкритого повідомлення замінюється на

 

 

іншу букву того ж алфавіту, шляхом циклічного зсуву на k букв вперед. Величина k

є

 

 

 

ключем цього шифру.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Секретний ключ. Для первинного алфавіту деякого обсягу n (0 ≤ j ≤ n-1) ключем є величина

 

 

зсуву {0,2, … , − 1}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Простір ключів

|К| = − 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Шифрування та дешифрування. Якщо кожному символу алфавіту поставити у відповідність

 

 

його порядковий номер ( починаючи з 0) то шифрування та дешифрування можна виразити

 

 

відповідними формулами:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

і): = ( ) +

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(

): = ( ) −

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

і

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

де – символ відкритого тексту;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- символ криптограми;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n – потужність алфавіту

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k – ключ (число, що характеризує величину зсуву)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( ) - функція що обчислює порядковий номер літери в алфавіті An.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Криптоаналіз. Простий перебір всіх ключів (фтака "brute force"). Якщо відкрите

 

 

 

повідомлення достатньо довге,

то тільки один текст матиме смисл.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Недоліки моноалфавітної звичайної заміни Цезаря.

Мала кількість можливих ключів (рівна

 

 

обсягу алфавіта).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.

 

Шифр афінної підстановки.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Афінна криптосистема є узагальненням Цезаря.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нехай задано деякий ВТ : = " 1 2 … "

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ШТ, що відповідає даному ВТ позначається: = "

 

… ".

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Секретний ключ – це така пара цілих чисел k = { , }

така що 0≤a, b≤n-1 (n – потужність

 

 

 

алфавіту) причому НСД (a, n)= 1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Простір ключів. Кількість ключів визначається співвідношенням

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

|К| = ( ) , де ( ) - функція Ейлера.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Шифрування:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

̅̅̅̅

( ) = ( (

)

+ ) ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= 1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

де J(mi) - функція, що обчислює порядковий номер символу mi в алфавіті An.

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

̅̅̅̅

(

) = ( ( )

− )

−1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= 1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

−1 обернений елемент до в полі , що існує гарантовано завдяки тому, що НСД (a, n)=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. Можна знайти з допомогою розширеного алгоритму Евкліда.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приклад.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Номер

0

 

1

2

 

 

3

4

 

5

 

 

6

 

7

 

8

 

9

 

10

11

 

12

 

 

13

14

 

15

 

16

 

17

 

18

 

19

20

21

 

22

23

24

25

(код)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Знак

a

 

b

 

c

 

d

e

 

f

 

g

h

 

i

 

j

 

 

k

 

l

 

 

m

 

n

o

 

p

q

r

 

s

 

t

 

 

u

 

v

 

 

w

x

y

z

повідом-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лення

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВТ: m= “hello”

Ключ: a=7, b=5 (перевіряємо умову, що НСД (3,26)=1)

Шифрування J(сi)=a∙J(mi)+b : J(с1)=7∙7+5 mod 26=2 c1="c" J(с2)=7∙4+5 mod 26=7 c2="h" J(с3)=7∙11+5 mod 26=4 c3="e" J(с4)=7∙11+5 mod 26=4 c4="e" J(с5)=7∙14+5 mod 26=25 c5="z" ШТ: c="acheez"

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

 

= ( ( ) − ) −1

 

 

 

 

Отже насамперед необхідно знайти обернений елемент до а в полі Z26, який гарантовано існує завдяки тому, що НСД(a,n)=1. Використаємо розширений алгоритм Евкліда. Можна показати, що

a-1=-11=15 mod 26

Перевірка 15∙7=1 mod 26

J(m1)=(2-5)∙15 mod 26=7 m1="h" J(m2)=(7-5)∙15 mod 26=4 m2="e" J(m3)=(4-5)∙15 mod 26=11 m3="l" J(m4)=(4-5)∙15 mod 26=11 m4="l"

J(m5)=(25-5)∙15 mod 26=14 m5="o" m= “hello”

Криптоаналіз. Повний перебір ключів (Атака "brute force"). Визначимо кількість різних шифрів в афінній системі для прикладу при n=33 . У такий спосіб утворюється n∙φ(n) можливих значень, що не так і багато: якщо n=33, то параметр a може набувати

φ(33)=20 значень (1, 2, 4, 5, 7, 8, 10, 13, 14, 16, 17, 19, 20, 23, 25, 26, 28, 29, 31, 32), тоді загальне число ключів дорівнює 20×33=660. Перебір такої кількості ключів не буде важким при використанні комп'ютера. Але існують методи, які спрощують цей пошук і можуть бути використані при аналізі більш складних шифрів.

4.Таблиця Трісімуса

Модифікацією таблиці Полібіана є таблиця Трісімуса, де букви розташовуються в залежності від ключа (він першим вписується в таблицю, а потім всі наступні букви, що не входять до ключа)

Для заповнення шифрувальної таблиці використовується підхід, запозичений із шифру Цезаря з ключовим словом. Спочатку обирається слово-ключ, кількість літер в якому залежить від мови; ключ записується в першому рядку квадрата, в подальших рядках виписуються літери алфавіта, відсутні в ключі в алфавітному порядку.

Приклад.

Квадрат, сформований з допомогою ключа «весна» у випадку українського алфавіту може мати вигляд.

 

1

2

3

4

5

1

В

Е

С

Н

А

2

Б

Г/Ґ

Д

Є

Ж

3

З

И/Й І/Ї

К

Л

4

М

О

П

Р

Т

5

У

Ф

Х

Ц

Ч

6

Ш

Щ

Ь

Ю

Я

 

 

 

 

 

 

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

5.Шифр простої заміни

Щоб описати ключ такого шифру необхідно виписати алфавіт, а безпосередньо під ним той самий алфавіт, але з переставленими буквами.

0

1

2

 

 

3

4

 

5

6

 

7

8

9

10

 

 

11

 

12

13

14

 

15

 

16

17

 

18

19

20

21

 

22

 

23

 

24

25

 

a

 

b

c

d

 

e

 

f

 

g

 

h

 

i

j

k

 

l

 

m

 

n

 

o

p

 

g

 

r

 

 

s

t

u

 

v

 

w

 

x

 

y

z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

o

 

h

d

e

 

g

 

b

 

i

 

r

 

m

v

t

 

n

 

p

 

 

y

 

a

q

 

k

 

f

 

 

u

c

z

 

x

 

j

 

l

 

w

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ця таблиця задає правило, за яким букви відкритого тексту замінюються символами

 

 

 

 

 

 

 

шифрованого.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Простір ключів |К|=26!≈ 4 1026 ≈ 288

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Одним з різновидів даного шифру є шифр Цезаря з ключовим словом . В даному випадку

 

 

 

 

 

ключ задається числом k (0≤k≤n-1) та ключовим словом.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ключове слово використовується для зміни порядку символів (бажано, щоб букви бути

 

 

 

 

 

різними. Якщо вони повторюються , то дане слово необхідно записати без повторення букв).

 

 

 

Виписується алфавіт, а під ним, починаючи з тієї букви числовий код якої співпадає з

 

 

 

 

 

вибравши ключем k,

ключове слово без повторень букв. Букви, що залишилися записуються

 

 

 

за абеткою після ключового слова.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приклад

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ключ k=5 і ключове слово «diploma»

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

1

 

 

2

3

 

4

 

5

 

6

 

7

 

8

9

10

 

11

12

13

 

14

 

15

 

16

17

18

19

 

2

 

2

 

2

 

2

 

2

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

1

 

2

 

3

 

4

 

5

 

 

 

 

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

g

r

s

t

u

v

w

 

x

y

z

 

 

 

v

w

x

y

z

d

i

p

l

o

m

a

b

c

e

f

g

h

j

k

h

q

r

 

s

t

u

 

 

Вважають, що простір ключів | | = 26!

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

Після падіння Римської імперії в Європі наступив період занепаду. Більшість великих досягнень Грецької та Римської цивілізації було втрачено. В VII-VIII ст. центр культури та науки перемістився на Схід. Деякі дослідники пов'язують становлення криптографії як науки з періодом розквіту арабських держав. В 1412 році було видано енциклопедію «Шауба альАша», що мала 14 томів і містила інформацію про всі досягнення, що були відомими на той час. В цій енциклопедії цілий розділ був присвячений криптографії з описом всіх відомим арабським вченим способів шифрування. В цій же книзі наводився спосіб розгадування шифру, що ґрунтувався на однаковій букв криптограми та відкритого тексту, який згодом назвали частотним аналізом. В цьому ж розділі наводилась і частота букв арабської мови, визначення на основі вивчення священної книги для мусульман –Корану. Хоча перші відомості про частотний аналіз можна зустріти на кілька століть раніше.

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

інформації - навіть порядок літер може відрізнятися в різних таблицях. Розподіл літер дуже залежить від типу тесту: проза, розмовна мова, технічна мова та ін.

Хоча немає таблиці, що може врахувати всі види текстів, але є параметри, загальні для всіх таблиць, наприклад, в англійської мові літера E завжди очолює список частот, а T перебуває на другій позиції. A і O майже завжди треті. Крім того, дев'ять літер англійської мови E, T, A, O, N, I, S, R, H завжди мають частоту вище, ніж у будь-які інші. Ці дев'ять літер заповнюють приблизно 70% англійського тексту. Нижче наведені відповідні таблиці для різних мов (табл.

3)

Також є таблиці частоти появи букв на початку й у кінці слова. Найпростіший захист проти атак, заснованих на підрахунку частот, забезпечується в системі омофонів (HOMOPHONES) - однозвучних підстановочних шифрів, у яких один символ відкритого тексту відображається на кілька символів шифротексту, їх число пропорційне частоті появи букви. Шифруючи букву вихідного повідомлення, вибираємо випадково одну з її замін. Отже, простий підрахунок частот нічого не дає криптоаналітику. Однак доступна інформація про розподіл пар і трійок букв у різних природних мовах. Криптоаналіз, заснований на такій інформації, буде більш успішним.

4. Біграмні шифри (Плейфеєра, афінної підстановки), методи злому.

Поліалфавітні шифри

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

1.Шифр Плейфейера (Playfair Cipher)

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

Нижче наведений приклад, використаний Lord Peter Wimsey в Dorothy Sayers’s Have His Carcase: ця книга містить опис атак на основі ймовірних слів.

 

 

1

 

2

 

3

 

4

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

M

 

O

 

N

 

A

 

R

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

C

 

H

 

Y

 

B

 

D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

E

 

F

 

G

 

I/J

 

K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

L

 

P

 

Q

 

S

 

T

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

U

 

V

 

W

 

X

 

Z

 

 

 

 

 

 

 

 

 

 

 

Перед шифруванням відкритий текст m розбивається на пари символів mimi+1. Якщо дві букви пари одинакові то, щоб відокремити їх вставляється фіктивний символ. Після вставки

фіктивних символів, якщо кількість букв у відкритому повідомленні непарна, то в кінці додається ще один фіктивний символ, щоб утворити останню пару.

Кожна пара символів відкритого тексту заміняється на пари символів з матриці в такий спосіб:

1)якщо символи знаходяться в одному рядку, то кожний із символів пари заміняється на символ праворуч (за останнім символом у рядку йде перший символ цього рядка);

2)якщо символи знаходяться в одному стовпці, то кожний символ пари заміняється на символ, розташований нижче його (за останнім нижнім символом слідує верхній із цього стовпця);

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

Заміна виконується відповідно до порядку символів відкритої біграми

Приклад

ВТ: m= “hello”= “he│lx│lo

ШТ: с= “hello”= “he│lx│lo

Шифр Плейфейера значно надійніший простих моноалфавітних шифрів. З одного боку, літер усього 26, а біграм – 26 × 26 = 676, і вже по цьому ідентифікувати біграми складніше, ніж окремі літери. Більше того, відносна частота окремих літер має значно більший діапазон значень, ніж в біграм, що значно ускладнює проведення частотного аналізу біграм. Саме тому шифр Плейфейера довший час вважався достатньо надійним і використовувався британською армією під час Першої світової війни і частково армією союзників в роки Другої світової війни. Незважаючи на це, шифр Плейфера порівняно легко зламати, тому що він залишає структуру мови відкритого тексту без змін. Кілька сотень листів зашифрованого тексту, як правило, досить.

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

2.Афінний шифр біграм

Афінна підстановка біграм являє собою наступне криптографічне перетворення. Шифрування. Відкритий текст (ВТ) m = "m1 2 3 … " розбивається на біграми, що не перетинаються, (m1,m2),(m3,m4),… Нехай n - кількість букв в алфавіті. Занумеруємо букви алфавіту числами від 0 до n-1. Тоді кожній можливій біграмі алфавіту можна поставити у відповідність деяке унікальне число в межах від 0 до n2-1. Якщо алфавіт складається з 32 символів, то кількість біграм такого алфавіту вже складає 322=1024. Можна довести, що кожній біграмі відкритого тексту (mi,mi+1) можна єдиним чином поставити у відповідність

деяке число 0≤Mi≤n2-1 за правилом:

(mi,mi+1): Mi=J(mi )n+ J(mi+1), де. де J(mi) - функція, що обчислює порядковий номер символу mi в алфавіті Zn

Приклад

Розглянемо український алфавіт, який, як відомо, має 33 символи.

0

1

2

3

4

 

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

А

Б

В

Г

Ґ

Д

Е

Є

Ж

З

И

І

Ї

Й

К

Л

М

Н

О

П

Р

С

Т

У

Ф

Х

Ц

Ч

Ш

Щ

Ь

Ю

Я

Біграмі (в,б)

відповідає число

М=2*33 + 1 = 67, якщо n=33.

Секретний ключ: це така пара цілих чисел k = { , } така що 0≤a, b≤n2-1 (n – потужність алфавіту) причому НСД (a, n2)= 1

Простір ключів. Кількість ключів визначається співвідношенням

|К| = 2 ( 2) , де (°) - функція Ейлера Якщо n=31, то кількість більша ніж n=32.

Біграми шифруються незалежно за таким правилом. Нехай Mi =(mi,mi+1) - біграма ВТ, а Ci=(ci,ci+1) - відповідна біграма шифрованого тексту (ШТ). Тоді

Ci=aMi + b (mod n2),

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

 

 

 

= ( − ) −1

2

 

 

 

−1 обернений елемент до в полі 2 , що існує гарантовано завдяки тому, що НСД (a, n2)= 1. Можна знайти з допомогою розширеного алгоритму Евкліда.

5. Шифр Віженера, як приклад поліалфавітної заміни, його криптоаналіз.

1.

Шифр Віженера.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Блест де Віженер дослідив праці Джовані Батіста Беллазо під час своєї дипломатичної місії в

 

 

Римі, зокрема ознайомився з книгою La cifra del. Sig, де описувався принцип шифрування.

 

 

 

Основна ідея полягала в тому , що протягом усього тексту одна і та сама буква може бути

 

 

 

зашифрована по-різному. Тобто величина зсуву для заміни букв була змінною і визначалась

 

 

ключовим словом і положенням букви в тексті.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нехай задано деякий ВТ : = "

2

 

" в деякому алфавіті

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Секретний ключ. Секретне слово розміром l: k = "k

1

 

… "

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

|К| =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Простір ключів розміру l

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Процедура розгортання ключа. Ключове слово копіюють необхідну кількість раз на всю

 

 

 

довжину повідомлення =

. ..

 

 

 

 

 

. ..

 

( )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

 

 

 

−1 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Шифрування та дешифрування. Якщо кожному символу алфавіту поставити у відповідність

 

 

його порядковий номер (починаючи з 0), то шифрування та дешифрування можна виразити

 

 

відповідними формулами:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( ) = ( (

) + (

 

 

 

))( ), = 1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(

) = (( ) − (

 

 

 

))( ), = 1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

де – символ відкритого тексту;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- символ криптограми;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

– символ ключа ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n – потужність алфавіту;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( ) - функція що обчислює порядковий номер літери в алфавіті A.

 

 

 

 

 

 

 

 

 

У випадку, якщо ключ K складається з одного символу, d 1, то одержуємо класичний шифр

 

 

Цезаря.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приклад

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m= “tellhimaboutme”

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k= “cafe”

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Номер

 

0

1

2

 

3

 

4

 

5

6

7

 

8

 

9

 

10

11

 

12

 

13

 

14

 

15

 

16

 

17

 

18

19

20

21

22

23

24

25

(код)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Знак

 

a

b

c

d

 

e

 

 

f

 

g

h

 

i

 

 

j

 

 

k

 

l

 

 

m

n

o

p

 

q

 

 

r

 

s

t

u

v

w

x

y

z

повідом-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лення

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

t

e

l

l

h

i

m

a

b

o

u

t

m

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

c

a

f

e

c

a

f

e

c

a

f

e

c

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

v

e

q

p

j

i

r

e

d

o

z

x

o

e

 

 

 

 

 

 

 

 

 

Зрозумівши простий, але ефективний принцип шифрування дипломат Віженер зумів донести цю ідею комісії Генріха III в Франції.

Довший час цей метод вважався невразливим для розгадування і навіть авторитети в області математики визнавати його невразливість.

Для дешифрування шифру Віженера використовувалась спеціальна таблиця, яка називалась tabula recta. Букву шифротексту можна знаходити з даної таблиці як перетин стовпця, обумовленого буквою відкритого тексту, і рядка, обумовленого буквою ключа.

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

6. Види криптографічних атак та поняття стійкості.

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

Часто під завданням криптоаналізу розуміють визначення секретного ключа. При цьому слід пам’ятати наступне: секретний ключ – це лише необхідний елемент шифрування, але захист секретного ключа самого по собі не є кінцевою метою, яку переслідує криптографія. Конфіденційність секретного ключа є необхідною, проте недостатньою умовою для забезпечення конфіденційності інформації. В такому випадку логічно припустити, що метою криптоаналізу є відновити початкове повідомлення без знання секретного ключа. Проте виникає запитання, чи можна вважати стійкою систему, якщо зловмисник не може цілком відновити секретне повідомлення, а лише 80%% прихованої інформації? Проблема визначення стійкості криптосистеми залишалась досить довго невирішеною і видозмінювалась з появою нових методів шифрування. Перше формальне означення стійкості було запропоноване К.Шенноном для симетричних криптосистем. Більш детально це визначення розглянемо у наступному параграфі.

Інше фундаментальне припущення щодо криптоаналізу вперше було висловлено ще в ХІХ столітті датчанином А.Керкхоффсом. В книзі «Военная криптография» (1883) шість вимог до криптосистеми, одна з яких з часом почала називатись правилом Керкхоффса. При проведенні криптоаналізу можна вважати відомою інформацію про опис криптографічної системи та засоби її реалізації. Стійкість (надійність) криптосистеми повинна базуватись лише на конфіденційності ключа та якості системи. В такому ракурсі знання алгоритму, шифротексту та секретного ключа є достатніми умовами для відкриття прихованого тексту. Тому, в сучасних умовах, коли алгоритми шифрування є відомими та стандартизованими, пошук секретного ключа може теж бути задачею криптоаналітика.

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

В таблиці 1 наведено сім типів наступних атак та завдання, які ставить перед собою криптоаналітик:

Таблиця 1 – Типи криптоаналітичних атак

 

Тип атаки

Інформація відома криптоаналітику

Задача криптоаналітика

1

Атака на основі

Алгоритм шифрування;

 

 

Визначити хоча б одне з

 

відомого

Один або декілька

ШТ ci,

що

повідомлень mi (або

 

шифротексту

відповідають

невідомим

відповідний ключ ki).

 

(Ciphertext

повідомленнямmi. В окремих випадках

 

 

 

 

Only Attack)

можливе співпадання

ключів

або

 

 

 

 

 

початкових повідомлень

 

 

 

 

 

2

Атака на основі

Алгоритм шифрування;

 

 

Визначити

 

ключ ki для

 

відомого

Одна або декілька пар ВТ-ШТ (mi-ci),

хоча б однієї з пар, або ж

 

відкритого

згенерованих з допомогою секретного

якщо

шифрограми

 

тексту (Known

ключа

 

 

зашифровані

однаковим

 

PlaintextAttack)

 

 

 

ключем k,

то

визначити

 

 

 

 

 

 

 

 

 

 

 

початкове повідомлення

 

 

 

 

 

 

 

 

 

 

 

для нового шифротексту

3

Атака на основі

Алгоритм шифрування;

 

 

 

Мета атаки така ж як і в

 

вибраного

 

Одна або декілька пар ВТ-ШТ (mi-ci),

попередньої.

 

відкритого

 

згенерованих з допомогою секретного

 

 

тексту (Chosen

ключа, але на відміну від попередньої

 

 

PlaintextAttack)

атаки

криптоаналітик

має

можливість

 

 

 

 

вибрати початкові повідомлення (ВТ)

 

 

 

 

Можлива, коли криптоаналітик має

 

 

 

 

доступ до шифратора в відправника або

 

 

 

 

в системах розпізнавання свій-чужий

 

4

Атака на основі

Алгоритм шифрування;

 

 

 

Мета атаки така ж як і в

 

вибраного

 

Одна або декілька пар ВТ-ШТ (mi-ci),

попередньої

 

шифротексту

згенерованих з допомогою секретного

 

 

(Chosen

 

ключа, але на відміну від попередньої

 

 

CiphertextAttack)

атаки

криптоаналітик

має

можливість

 

 

 

 

вибрати шифротекст. Зловмисник має

 

 

 

 

засіб

 

розшифрування

з

введеним

 

 

 

 

ключем (на стороні отримувача), який

 

 

 

 

йому невідомий

 

 

 

 

 

 

 

 

 

Шифротексти обираються

заздалегідь

 

 

 

 

(lunchtime attack)

 

 

 

 

 

 

5

Адаптивні атаки

Алгоритм шифрування;

 

 

 

Мета атаки така ж як і в

 

3,4

з

Зловмисник

має

 

 

можливість

попередньої

 

послідовним

уточнювати вибір наступного тексту в

 

 

вибором

 

залежності від попередніх результатів

 

6

Атака на основі

Ключ може підбиратись з обмеженої

 

 

підібраного

множини ключів, якщо між ними існує

 

 

ключа

 

певний

зв’язок.

Криптоаналітику

 

 

 

 

відоме

 

співвідношення

між

парою

 

 

 

 

ключів

 

 

 

 

 

 

 

7

Атака

з

Криптоаналітику

відома

додаткова

 

 

використанням

інформація про реалізацію та роботу

 

 

інформації

зі

апаратури. Наприклад, споживання

 

 

стороннього

світла, час виконання, електро-магнітне

 

 

каналу

(Side-

випромінювання, атаки збоєм. Перші

 

 

Channel Attack)

реалізації AES були

нестійкими до

 

 

 

 

цього виду атак.

 

 

 

 

 

 

8

Грабіжницький

Ключі

 

отримують

 

на

основі

 

 

«аналіз»

 

використання агентури, шантажу,

 

 

 

 

підкупу, застосування тортур.

 

 

Криптосистема може бути надійно захищена від одного виду атак і бути вразливою по відношенню до інших.

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

Розглянемо інший приклад – шифр простої заміни. Ми вже згадували, що цей шифр є достатньо легким для частотного криптоаналізу. За відомим шифротекстом. Проте даний криптоаналіз все-таки вимагає виконання деякої роботи. Якщо проводити атаку на основі відомого відкритого тексту, то як тільки у відкритому тексті з’являться усі букви, то злом стає

достатньо тривіальною задачею. А при атаці на основі вибраного відкритого тексту, навіть не потрібно чекати щоб зустрілися всі букви, якщо першим повідомленням вислати алфавіт.

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

В криптографії розглядають два підходи до означення стійкості: теоретичну (абсолютну) та практичну (обчислювальну).

7. Теорія Шенона: ентропія, надмірність, відстань єдинності.

8. Теоретична стійкість за Шенноном. Шифр Вернама, як приклад системи з абсолютною стійкістю

9. DES – перший стандарт блочних шифрів

Стандарт DES працює на так званій схемі Фейстеля

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

розмір блоку відкритого тексту 64 б

розмір блоку закритого тексту 64 б

розмір основного ключа 64(56) б

кількість раундів (циклів) 16

довжина раундового ключа 48 б

Основними в секретному ключі є 56 б, решта 8 б, використовуються для перевірки на парність і ігноруються при шифрування.

Ключ розбивається на 8 блоків, наймолодший біт кожного з яких є результатом перевірки на парність.

16 раундових ключів довжиною 48 б кожен, генеруються з основного секретного ключа. Схема DES

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

IP-1- перестановка обернена до початкової перестановки. Функція F є нелінійною і працює на основі 5 наступних кроків:

1.перестанока з розширенням - права половина з 32 б розтягується до 48 б і перелічується (лавинний ефект) 32б - 8 груп по 4 б

2.додавання за mod2 з раундовим ключем

3.розбивання попереднього кроку на 6 частин по 8 блоків

4. S-блоки кожна 6 б послідовність з 8 за допомогою S-блоків (нелінійний компонент алгоритму) перетворюється і набір з 4 б

S-блоки –це пошукові таблиці розміром 4х16. В кожній стрічці записані числа від 0 до 15 в певному порядку. Шість вхідних в S-блок бітів визначають, яку стрічку та який стовпець необхідно використати для заміни. Перший та шостий біт задають номер рядка, а чотири біти посередині визначають стовпець. На вихід подається двійковий запис числа з таблиці..

5.P-блоки 8 груп з 4 б кожна комбінується в 32 б стрічку і перелічується

Процедура розгортання ключа Фактично ключ має бути 64 б, проте кожний 8 б є контрольним бітом, яки відповідає за те

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

(8,16,32,48,64).

Потім 56 бітовий ключ ділиться на дві рівні частини по 28 біт. Потім для кожного раунду виконується циклічний зсув кожної бітової стрічки вліво на одну позицію (для раундів 1,2,3,9) та на два біти (для всіх інших раундів).

Потім ліва та права частина з’єднуються разом та подаються на вхід наступної перестановки зі стисненням, на виході якої і буде 48-бітний ключ.

10. Українські стандарти блочних шифрів: ГОСТ 28147-89 та Калина.

ГОСТ 28147-89 — блоковий шифр з 256 — бітовим ключем і 32 циклами перетворення, що оперує 64-бітними блоками. Основа алгоритму шифру — Мережа Фейстеля. Базовим режимом шифрування за ГОСТ 28147-89 є режим простої заміни (визначені також складніші режими гамування, гамування зі зворотним зв'язком і режим імітовставки). Для

зашифрування в цьому режимі відкритий текст спочатку розбивається на дві половини (молодші біти — A, старші біти — B[2]). На i-му циклі використовується з'єднання K i : A i + 1 = B i f ( A i , K i )

B i + 1 = A i

Для генерації підключів вихідний 256-бітний ключ розбивається на вісім 32-бітних блоків: K

1 … K 8 .

Ключі K9 … K24 є циклічним повторенням ключів K1 … K8 (нумеруються від молодших бітів до старших). Ключі K25 … K 32 є ключами K1 … K8 , що йдуть у зворотному порядку.

Після виконання всіх 32 раундів алгоритму, блоки A33 і B33 склеюються (зверніть увагу, що старшим бітом стає 33 , а молодшим — B33 ) — результат є результат роботи алгоритму. Розшифрування виконується так само, як і зашифрування, але інвертується порядок подключей K i .

Функція f ( A i , K i ) обчислюється таким чином: Ai і Ki складаються по модулю 232 .

Результат розбивається на вісім 4-бітових підпослідовностей, кожна з яких надходить на вхід свого вузла таблиці замін (у порядку зростання старшинства бітів), званого нижче S-блоком. Загальна кількість S-блоків ГОСТу — вісім, тобто стільки ж, скільки і підпослідовностей.

Кожен S-блок являє собою перестановку чисел від 0 до 15. Перша 4-бітова підпослідовність потрапляє на вхід першого S-блоку, друга — на вхід другого і т. д.

Переваги ГОСТу

Безперспективність атаки повного перебору (XSL-атаки в облік не беруться, оскільки їх ефективність на даний момент повністю не доведена);

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

Наявність захисту від нав'язування помилкових даних (вироблення імітовставки) і однаковий цикл шифрування у всіх чотирьох алгоритмах ГОСТу.

Критика ГОСТу

Основні проблеми ГОСТу пов'язані з неповнотою стандарту в частині генерації ключів і таблиць замін. Вважається, що у ГОСТу існують «слабкі» ключі і таблиці замін, але в стандарті не описуються критерії вибору і відсіву «слабких». Також стандарт не специфікує алгоритм генерації таблиці замін (S-блоків). З одного боку, це може бути додатковою секретною інформацією (крім ключа), а з іншого, піднімає ряд проблем:

Не можна визначити криптостійкість алгоритму, не знаючи заздалегідь таблиці замін;

Реалізації алгоритму від різних виробників можуть використовувати різні таблиці замін і можуть бути несумісні між собою;

Можливість навмисного надання слабких таблиць замін органами, що проводять ліцензування;

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

Криптографічний алгоритм блокового си-метричного шифрування даних, якій визна-чається стандартом ДСТУ 7624:2014 має назву "Калина".

Алгоритм "Калина" обробляє дані розмі-ром l 128, 256 і 512 бітів і підтримує такі ж довжини ключів шифрування k (сеансових ключів). При побудові алгоритму основну увагу розробниками було приділено забезеченню високого рівня криптографічної стійкості, а також досягненню високих показників продуктивності в апаратній і програмній реалізаціях.

Алгоритм "Калина" шифрує данні блоками. Блок даних в алгоритмі "Калина" - група з 128, 256 або 512 бітів. Блок даних може бути представлений як матриця розміром 8 x c байтів, яка називається матрицею внутрішнього стану. Матриця внутрішнього стану позначається

як G=(gi,j), gi,j € GF(28), де i=0,1,…,7, j=0,1,…,c-1. Запис бай-тів b1, b2,..., bl/8 для перетворень до матриці внутрішнього стану і зчитування з неї здійс-нюється по стовпцях. Приклад запису байтів до внутрішнього стану для l=512 (k= 512, c = 8)

Калина" використовує декілька раундів, кожний раунд складається з кількох операцій (функцій). Залежність кількості ітерацій (t) при реалізації перетворень, кількості стовпців матриці внутрішнього стану (c) від розміру блоку даних (l) і довжини ключа шифрування (k). Варто зазначити, що існує обмеження, згідно якого розмір ключа шифрування k не може бути меншим від розміру блоку даних l.

На рис. 5.3 - функція додавання раун-дового ключа за модулем 264, - функція додавання раундового ключа за модулем 2, блок F – це послідовність операцій (функ-цій)

Box – функція нелінійного бієктивного відображення даних, яка виконує байтову підстановку; Rows - функція циклічного зсу-ву рядків матриці стану вправо; Col – функ-ція лінійного перетворення даних (множен-ня матриці лінійного перетворення на матрицю стану над кінцевим полем GF(28)).

Необхідно звернути увагу на те що дов-жина раундових ключів ki визначається довжиною блока даних mi, які перетво-рюються.

11. Міжнародний стандарт AES

Хоча Rijndael є блочним шифром, він не є узагальненням схеми Фейстеля. На відміну від DES процедури шифрування та розшифрування в алгоритмі – різні. Більшість операцій базуються на арифметиці поля F2^8. Елементи поля F2^8 зберігаються в пам’яті комп’ютера у вигляді 8-бітних векторів (байтів).

Параметри AES

довжина блоку повідомлення та шифротексту – 128, 192, 256 біт

довжина ключа – 128, 192, 256 біт

кількість раундів (Nb)– 10,12,14.

Розглянемо найбільш простий варіант алгоритму AES-128, в якому блоки як тексту, так і ключа складають 128 біт (16 байтів або чотири 32 бітових слова). В цьому випадку в алгоритмі буде 10 раундів.

Зашифрування та розшифрування в AES виконується ітеративно з використанням чотирьох різних байт-орієнтованих перетворень:

1.SubBytes - байтова таблична підстановка з використанням таблиці підстановки (s-блок)

2.ShiftRows – табличне перетворення – зсув рядків масиву state

3.MixColumns – табличне перетворення – змішування даних у кожному стовпці масивуstate

4.AddKey – криптографічне перетворення – складання за модулем 2 циклового

ключа з поточним станом state Зашифрування

Зашифрування даних проводиться на двовимірному масиві даних state. State формується у вигляді таблиці з 4-ма стрічка та 4-ма стовпцями (кількість стовпців може становити 6 та 8 в залежності від розміру блоку). Повідомлення ділиться на блоки необхідного розміру. Блок тексту записується по байтах в клітинки таблиці State, Si,j – байт тексту. На початку процесу зашифрування 16 байтів таблиці state ініціюються за допомогою байтів початкового повідомлення m, що записуються по стовпцях зліва направо

Алгоритм розшифрування AES

Усі перетворення, що використовуються при розшифруванні є зворотніми до перетворень, які використовувались при зашифруванні.

Як бачимо, усі перетворення виконуються в оберненому порядку. Замість шифрувальних перетворень використовуються розшифрувальні.

1. InvSubBytes – операція заміни байтів, яка використовує обернену таблицю заміни SubBytes-1.

2. InvShiftRows – циклічний зсув байтів вправо, протилежно до аналогічного при шифруванні.

3. InvMixColumns – перемішування стовпчиків з використанням оберненої матриці.

4. Процедури ExpandKey та AddRoundKey залишаються без змін.

5. Раундові ключі для розшифрування використовуються в оберненому порядку.

Переваги, які відносяться до аспектів реалізації, такі:

1.Rijndael може виконуватись швидше, ніж традиційний блоковий алгоритм шифрування на основі сітки Фейстеля, оскільки розробниками проведено оптимізацію між розміром таблиці і швидкістю виконання.

2.Rijndael придатний для реалізації в смарт-картах, оскільки він може працювати з невеликим RAM і має невелику кількість раундів.

3.Раундові перетворення добре розпаралелюються, що є важливою перевагою для майбутніх процесорів і спеціалізованої апаратури.

4.Алгоритм шифрування не використовує арифметичні операції, тому тип архітектури процесора не має значення.

5.Алгоритм шифрування повністю самодостатній. Він не використовує ніяких інших криптографічних компонентів, S-boxів, взятих з добре відомих алгоритмів, бітів, отриманих зі спеціальних таблиць.

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

12. Режими використання блочних шифраторів

1.Режим ECB - вхідне повідомлення розбивається на блоки необхідної довжини по m бітів, останній блок по мірі необхідності потрібно доповняти до довжини n.

Шифротекст утворюється наступним чином СХЕМА

Незважаючи на те, що даний режим є простим у використанні, проте він має ряд недоліків, а саме:

одинакові блоки вхідного тексту на виході дають однакові боки шифротексту

даний режим не захищений від імітовставок, а також знищення і заміни окремих блоків Зміна одного біту в початковому тексті повідомлення буде мати вплив лише на одни біт шифротексту

2.Режим CBC - дозволяє попередити та виявити втрати в результаті атаки з використанням вставок

Як і в попередньому режимі розбиваємо повідомлення на q блоків m=m1, m2...mq, шофрування відбувається за формулою

Як правило не секретний блок відомий відправнику і отримувачу. На практиці передають по відкритому каналу на початку шифротексту.

Важливо щоб значення c0 - було випадковим і не спрогнозованим для зловмисника.

Зміна хоча б одного блоку вплине на результат шифрування всіх наступних шифроблоків. Саме тому останній блок cq можна використовувати яу контрольну суму для цілого повідомлення СХЕМА

Помилка допущена в одному біті шифротексту впливає не лише на відповідний блок повідомлення, а й псує біт в наступному блоці відкритого тексту, що легко виявити та інтерпретувати яу атаку.

В режимі CBC вектор ініціалізації може бути випадково згенерованим числом, а може бути результатом шифрування на іншому ключі К1 або деякого числа nonce, це число повинне бути унікальним числом в разі необхідності його додають на початок шифротексту

3. Режим CFB - режим зворотнього зв’язку по шифротексту Як і в попередніх текст розбиваємо на q блоків Шифрування в даному режимі відбувається за формулою

Даний шифр можна розглядати як такий, що має властивість потокового.

Анологічно до попереднього режиму. Його можна використовувати для імітовставки (аналог контрольної суми) адже помилка в 1 блоці шифротексту впливає на всіс наступні блоки Проте навідміну від попереднього, даний режим може працювати для блоків jбітів (j<=n)

В такому випадку використовують лише j лівих бітів отриманих результатом шифрування попереднього шифроблоку.

СХЕМА

Перевагою є те , що при розшифруванні не потрібно алгоритму дешифрування.

Помилка допушена в 1 біті криптограми впливає на 1 біт блоку повідомлення в якому вона була допущена і повністю на наступний длок повідомлення.

4. Режим OFB - режим зворотнього зв’язку по виходу

В даному випадку блочний трансформується на поточний. Блочний використовується як процедура генерації ключа для потокового шифру.

Шифрування відбувається за формулою

Помилка допушена в одному біті повідомлення впливає на 1 біт шифротексту і навпаки

5. Режим CTR

Розбивається на q блоків. Даний режим має властивості потокового S1 - деяке не випадкове число, Si - виконує функцію лічильника.

Можна розпарплелювати, зміна в лічильнику на 1 дає лавинний ефект на виході можна гарантувати період послідовності 2^n.

13.Регістри зсуву з лінійним зворотнім зв’язком (LFSR) як приклад псевдовипадкового генератора.

Регістри зсуву з лінійним зворотнім зв’язком (LFSR - Linear Feedback Shift Register)

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

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

В якості функції зворотного зв’язку доцільно було б брати нелінійну функцію. Однак це складно реалізувати, тому на практиці використовуються регістри зсуву з лінійним зворотнім зв’язком.

Широке використання в криптографічних застосуваннях LFSR над скінченними полями та кільцями обумовлено низкою факторів:

Використання тільки найпростіших операцій додавання та множення, які можна апаратно реалізувати практично на всіх обчислювальних засобах.

Висока швидкодія створених на їх основі криптографічних алгоритмів.

Велика кількість теоретичних досліджень властивостей LFSR.

ВLFSR функція зворотного зв’язку – це XOR декількох визначених бітів регістра, які називають відводами. Іноді такі регістри називають конфігурацією Фібоначчі. Регістр працює в дискретні моменти часу.

Усім відводам з регістру відповідають коефіцієнти a1,a2...an

Якщо окремі коефіцієнти = 0, то відповідні відводи виключають з схеми. Перелік цих відводів з коефіцієнтами рівними одиниці, називається відвідною послідовністю.

Властивості послідовностей генерованих LFSR

будь-яка послідовність буде репіодичною

максимальний період послідовності довжини n, становить 2^n-1

якщо старший коефіцієнт многочлена зворотнього зв’язку a^n=1, то послідовність одразу починається з періодичної частини; в зворотньому випадку послідовність буде мати деякий період і почне повторюватися не одразу, а з деякого тактк t0

максимальний період послідовності гарантують тільки ті члени LFSR які є примітивними над полем GF(2)

Многочлен f(x) називається примітивним, якщо він не ділиться на дільники виду x^a +1

Якщо послідовність має максимальний період, то її називають m-послідовністю. Для бітових m-послідовностей характерна збалансованість (поява однакової кількості 0 та 1 на періоді). На кожному періоді m-послідовності будь-яка ненульова підпослідовність довжиниr з’явиться лише один раз (властивість де-Брюіна).

14. Сучасні потокові шифри. Приклад.

Шифр А5

А5 – це потоковий шифр, що використовується для шифрування GSM (Group Special

Mobile).

Опишемо родоначальника алгоритмів А5 – алгоритм А5/1. Спочатку він зберігався в таємниці. Проте Британська телефонна компанія передала документацію по алгоритму в Бредфордський університет (Bradford University), не підписавши при цьому договір про нерозголошення інформації. Відбувся витік інформації і зрештою деталі алгоритму були опубліковані в інтернеті.

А5 складається з трьох LFRS, довжиною 19, 22 і 23, що описується наступними многочленами зворотного зв’язку:

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

Передача даних здійснюється в структурованому вигляді — з розбиттям на кадри (фрейми-114 біт). Перед ініціалізацією регістри заповнюються нулями. Далі послідовно виконуються наступні дії (схема ініціалізації):

-на вхід алгоритму надходить сесійний ключ (K - 64 біта), сформований алгоритмом А8, і номер кадру (Fn - 22 біта).

-64 такти БУР (Блок управління рухом) не працює. Натомість черговий біт ключа XOR-иться з молодшим бітом кожного регістру, регістри при цьому зсуваються на кожному такті.

-Далі відбуваються аналогічні 22 такти, тільки операція XOR проводиться за номером кадру,

-Потім проводиться стандартних100 тактів з керуванням зрушеннями регістрів (з участю БУР), але без генерації послідовності,

-Наступні 228 (114 + 114) тактів - робочі, відбувається шифрування переданого

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

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

Оскільки сеансовий ключ має 64 біти, то спочатку стійкість оцінювали як 264, проте згодом понизили до 240.

Вразливості А5:

– 10 біт ключа примусово занулені /Стійкість зразу ж впала до 245. Атака Андерсона

1994р./

– Відсутність перехресних зв’язків між регістрами крім зсувів

– Велика надмірність службової інформації, що шифрується, відомої криптоаналітику

– Більше 40%% ключів призводять до мінімальної довжини періоду послідовності, що генерується

– На початку сеансу відбувається обмін нульовими повідомленнями

– В А5/2 управління тактуванням здійснює четвертий регістр Основним недоліком є коротка довжина регістрів і проріджені поліноми.

В1997 р. Йован Голіч опублікував результати кореляційного аналізу, який дозволяв визначити початкове наповнення регістрів за відомою гама-послідовністю довжиною 64 біти, що відповідає парі «відкритий текст»-«шифротекст». Цю послідовність отримують завдяки першим нульовим повідомленням. Атака має середню складність 240.

Інший метод, запропонований Голічем, побудований на ймовірнісному парадоксі днів народжень.

В1999 році Вагнеру та Голдбергу вдалось продемонструвати, що для взлому ситеми А5/2 достатньо перебором визначити початкове заповнення LFRS4. Перевірка здійснюється

за рахунок нульових кадрів. Складність цієї атаки дорівнює 217, таким чином навіть на персональному комп’ютері злом шифру займає всього декілька секунд.

Шифр RC4

RC4 – дуже швидкий та простий потоковий шифр з змінною довжиною ключа, розроблений в 1987 р. Рівестом (R. Rivest) для RSA Data Security, Inc. (не слід вважати його більш ранньою версією блочних шифрів RC5 та RC6). На протязі 7 років він був приватною власністю компанії. Детальний опис алгоритму надавався тільки при підписанні угоди про нерозголошення. Проте у вересні 1994 року хтось анонімно опублікував вихідний код в розсилці «Шифропанки» (Cypherpunks). Він швидко поширився через Internet. Спроби RSA Data Security, Inc і надалі тримати RC4, як торговий секрет виявились марними. Хоча компанії вдається продавати ліцензію тим, хто хоче використовувати цей алгоритм в комерційних продуктах.

Алгоритм працює в режимі OFB: потік ключів не залежить від відкритого тексту. Використовується S-блок розміром 8×8: S0, S1, S2, …,S255.

Ініціалізація S-блоку.

Спочатку S-блок заповнюється за правилом: S0 = 0, S1 = 1, …, S255 = 255.

S0

S1

S2

S3

 

S4

 

 

 

S255

 

 

 

 

 

 

 

 

 

 

 

 

 

00000000

000000001

000000010

000000011

000000100

 

 

 

11111111

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Після чого ключ записується в масив:

K0, K1,

…,

K255.

Рекомендується

використовувати ключ від 40 до 256 бітів. Потім ключ повторюється. В алгоритмі застосовуються два лічильники i та j з нульовими початковими значеннями. Потім при початковому заповненні в циклі виконуються наступні обчислення:

i, j =0

for i = 0 to 255 do

j = (j + Si + Ki) mod 256

Поміняти місцями Si і Sj.

ІІ етап

Після етапу ініціалізації елементи представляють собою початкову перестановку чисел від 0 до 255, яка є функцією від ключа змінної довжини. Для генерації випадкового байта для шифрування виконуються наступні обчислення:

i, j =0

i, j =0

Однократне використаннякожного

i = (i + 1) mod

i = (i + 1) %%

елементу масиву.

256;

256;

Нелінійна залежність вихідних даних від

j = (j + Si) mod

j = (j + Si) %%

масиву

256.

256.

Зміна масиву в процесі ітерацій

Поміняти

Si Sj.

Кінцева послідовність відкриває лише

місцями Si і Sj.

t = (Si +

одну комірку масиву

t = (Si + Sj) mod

Sj) %% 256;

 

256;

K= St.

 

K= St.

 

 

Байт K використовується як ключ в операції XOR з відкритим текстом для отримання шифротексту або в операції XOR з шифротекстом для отримання відкритого тексту. Навіть,

якщо зловмисник дізнався ключ K і номер кроку і, він зможе дізнатись лиш про заповнення комірки St, не знаючи j, Si чи Sj.

Перевагами RC4 є висока швидкість роботи і змінна довжина ключа. Шифрування виконується приблизно в 10 раз швидше ніж в DES.

Компанія RSA Data Security, Inc. стверджує, що алгоритм стійкий до диференціального та лінійного криптоаналізу і що він великою мірою нелінійний. RC4 може знаходитись приблизно в 21700 станах S-блок повільно змінюється при використанні: i та j забезпечують випадкову зміну кожного елемента.

RC4 входить в десятки комерційних продуктів, включаючи Lotus Notes, AOCE компанії Apple Computer і Oracle Secure SQL. Цей алгоритм також є частиною стандарту специфікації Сотової цифрової пакетної передачі даних CDPD (Cellular Digital Packet Data).

15.Принципи асиметричної криптографії. Односторонні функції. Односторонні функції з секретом.

16. Схема Діффі-Хеллмана розподілу ключів по відкритих каналах

17. Системи шифрування RSA та Ель-Гамаля

18. MDC (коди перевірки повідомлень). Безключові хеш-функції

MDC[ред. ред. код]

Хеш-функції для обчислення коду перевірки цілісності повідомлень належать до підкласу безключових хеш-функцій. В реально існуючих криптосистемах ці хеш-функції - криптографічні, тобто крім мінімальних властивостей хеш-функцій (стиснення даних, простота обчислення дайджесту (англ. digest) від повідомлення) задовольняють таким властивостям:

безповоротність (англ. preimage resistance);

стійкість до колізій першого роду (англ. weak collision resistance);

стійкість до колізій другого роду (англ. strong collision resistance).

Взалежності від того, яким із цих властивостей задовольняють MDC хеш-функції, можна виділити два їх підкласи:

односпрямовані хеш-функції (OWHF, від англ. one-way hash function), які задовольняють властивості безповоротності та стійкі до колізій першого роду;

стійкі до колізій хеш-функції (CRHF, від англ. collision resistant hash function), які стійкі до колізій першого і другого роду (взагалі кажучи, на практиці CRHF хешфункції задовольняють і властивості незворотності).

Існує три основних типи MDC алгоритмів хеш-функцій, за способом їх побудови:

на блокових шифрах; наприклад: алгоритм «Matyas-Meyer-Oseas», алгоритм «Davies-

Meyer», алгоритм «Miyaguchi-Preneel», MDC-2, MDC-4;

спеціальні (англ. customized) алгоритми хешування, в яких робиться наголос на швидкість, і які незалежні від інших компонент системи (в тому числі блочних шифрів або компонент модульного множення, які можуть бути використані для інших цілей). Наприклад: MD4, MD5, SHA-1, SHA-2, RIPEMD-128, RIPEMD-160;

на модульної арифметики; наприклад: MASH-1, MASH-2.

19. MAC’и (Коди аутентифікації повідомлень), як ключові хеш функції

Код аутентифікації повідомлення (Message authentication code - MAC) є криптографічний контрольну суму повідомлення.

алгоритм HMAC

Алгоритм HMAC (Hash-based Message Authentication Code - код аутентифікації повідомлення на основі хешування). Даний вид аутентифікації має на увазі наявність у клієнта і сервера якогось секретного ключа, який відомий тільки їм двом. Тобто це механізм, який використовує криптографічні хеш-функції в поєднанні з секретним ключем. HMAC є одним з варіантів MAC і, отже, використовується для контролю цілісності повідомлень. В даному випадку в основі алгоритму лежить функція хешування, яка дозволяє обчислити код аутентифікації повідомлення.

Принцип роботи

##Розмір ключа вирівнюється з розміром блоку використовуваного алгоритму хешування;

##якщо ключ key довше блоку, він коротшає шляхом застосування до нього використовуваного алгоритму хешування hash:

key = hash (key);

відзначимо, що розмір вихідного значення алгоритму хешування зазвичай багато менше розміру блоку хешіруемих даних - наприклад, відповідно 128 і 512 бітів для алгоритму MD4; рекомендується мінімальний розмір ключа, рівний розміру вихідного значення алгоритму хешування;

##якщо розмір ключа менше розміру блоку, то вирівняний ключ k виходить шляхом доповнення до розміру блоку нульовими бітами вихідного (або укороченого) ключа key.

##Вирівняний ключ k складається по модулю 2 з константою C1, яка представляє собою блок даних, заповнений байтами з шістнадцятковим значенням 36; аналогічним чином ключ k також складається з константою C2, яка представляє собою блок даних, заповнений байтами з шістнадцятковим значенням 5С:

ki = k C1; ko = k C2.

## Обчислюється хеш-значення від результату конкатенації модифікованого ключа ki і повідомлення m:

t = hash (ki || m).

## Вихідним значенням алгоритму HMAC є хеш-значення від результату конкатенації модифікованого ключа ko і отриманого на попередньому кроці значення t:

hmac = hash (ko || t).

Таким чином, при обчисленні HMAC використовується алгоритм хешування застосовується двічі; кожен раз за участю модифікованого ключа. Розмір вихідного значення алгоритму HMAC дорівнює розміру вихідного значення алгоритму хешування, а загальна формула обчислення HMAC (без урахування вирівнювання ключа) виглядає наступним чином:

HMAC (k, m) = hash ((k C2) || hash ((k C1) || m)).

Алгоритми, побудовані за допомогою HMAC, традиційно називають наступним чином:

##«HMAC-x», де «x» - використовуваний алгоритм хешування, наприклад, HMAC-MD4;

##«HMAC-x-k» в тих випадках, де вихідне значення алгоритму хешування може бути усечено (т. Е. Може використовуватися частково); в даному випадку «k» - розмір вихідного значення алгоритму HMAC в бітах; приклад - алгоритм HMAC-SHA1-80.

Принцип використання та швидкодія

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

їм. Тим самим гарантується автентичність джерела та шляхів сполучення. Недолік цього підходу - необхідна наявність двох довіряють один одному сторін.

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

крипостійкість

Крипостійкість HMAC залежить, перш за все, від наступних факторів:

##криптостойкость використовуваного алгоритму хешування;

##розмір вихідного значення алгоритму;

##розмір і якість ключа.

Контексти атак на HMAC і «класичне» використання алгоритму хешування помітно різняться. Атакуючий алгоритм HMAC може переслідувати наступні цілі:

##підібрати повідомлення, HMAC якого дорівнює еталонному або дорівнює HMAC еталонного повідомлення;

##це схоже на атаки на класичне застосування алгоритму хешування з пошуку першого або другого прообразу;

##знайти коректну пару «повідомлення - код аутентифікації даного повідомлення» або обчислити код аутентифікації повідомлення для заданого повідомлення без знання секретного ключа;

##отримати ключ, який використовується для обчислення HMAC.

20. Асиметричні перетворення для цифрового підпису.