Professional Documents
Culture Documents
Лекції Криптографії
Лекції Криптографії
2
й
й
ї
Тривалий час під криптографією розумілось лише шифрування -
процес перетворення звичайної інформації (відкритого тексту) в
незрозумілу послідовність символів (тобто, шифротекст).
Розшифрування (дешифрування) - це обернений процес
відтворення інформації із шифротексту.
Якщо англійський текст має відповідати стандарту ISO 7498-2, то
шифрування - це “enchipher” (а не “encrypt”), дешифрування - “dechipher” (не
“decrypt”).
3
Як правило, повідомлення позначають як M (message) або P (від
plaintext). Це може бути потік бітів, текстовий файл, бітове
зображення, звукозапис та ін. M - це просто двійкові дані. У будь-
якому випадку M - це повідомлення, яке слід зашифрувати.
E(M) = C
D(C) = M
D(E(M)) = M
4
Ключ - це секретний параметр (в ідеалі, відомий лише двом
сторонам) для окремого контексту під час передачі повідомлення
(у даному випадку маються на увазі криптографічні алгоритми з
секретним ключем).
Ключі мають велику важливість, оскільки без змінних ключів
алгоритми шифрування легко зламуються і непридатні для
використання в більшості випадків.
Історично склалось так, що шифри часто використовуються для
шифрування та дешифрування, без виконання додаткових
процедур, таких як автентифікація або перевірка цілісності.
Як правило, ключ позначається як K.
5
Криптоаналіз — наука про методи дешифрування зашифрованої
інформації без призначеного для цього ключа, а також сам процес
такого дешифрування.
6
Люди, які займаються криптографією, а саме розробкою нових
криптографічних методів, називаються криптографами.
Відповідно ті, хто займаються криптоаналізом - криптоаналітики.
Галузь математики, яка охоплює криптографію та криптоаналіз,
називається криптологією, а науковці, які цим замаються -
криптологами. Такі фахівці мають дуже глибокі знання в
математиці.
7
Відправник та отримувач (та інші персонажі)
Зрозуміло, що відправник А хоче передати повідомлення
захищеним шляхом отримувачу В. Він хоче бути впевненим, що
зловмисник Е його не перехопить…
Як правило, в криптографії відправника називають
Аліса, а отримувача - Боб.
Персонажів Аліси та Боба винайшли Рон Рівест, Аді Шамір і Леонард Адлеман у
своїй роботі 1978 року «A Method for Obtaining Digital Signatures and Public-key
Cryptosystems». Згодом вони стали загальними архетипами в багатьох наукових та
інженерних галузях, таких як квантова криптографія, теорія ігор і фізика. Оскільки
використання Аліси та Боба стало більш поширеним, додавалися додаткові
символи, іноді кожен із певним значенням. Ці персонажі не обов’язково
стосуються людей; вони стосуються загальних агентів, які можуть бути різними
комп’ютерами або навіть різними програмами, запущеними на одному комп’ютері.
8
Аліса і Боб (Alice and Bob) — Найбільш часто Аліса прагне послати повідомлення Бобу.
Волтер (Walter) — наглядач, може бути необхідний для охорони Аліси і Боба, залежно від
обговорюваного протоколу.
Керол, Карлос або Чарлі (Carol, Carlos or Charlie) — виступають як третій учасник з'єднання.
Крейг (Craig) — зломник паролів (зазвичай зустрічається в ситуації зі збереженими хешами).
Дейв (Dave) — четвертий учасник (і так далі за алфавітом).
Єва (Eve) — пасивний зловмисник, від англ. eavesdropper (підслуховувач). Вона може
прослуховувати повідомлення між Алісою і Бобом, але вона не може впливати на них.
У квантовій криптографії Єва може представляти навколишнє середовище.
Меллорі (Mallory, від malicious) або Труді (Trudy, від intruder) — активний зловмисник; на
відміну від Єви, Меллорі може змінювати повідомлення, відтворювати старі повідомлення,
підміняти повідомлення і так далі. Складність захисту системи від Меллорі набагато вища ніж
від Єви.
Пеггі (Peggy), прувер (prover) і Віктор (Victor), перевіряючий (verifier) — особи, що часто
взаємодіють, які доводять що транзакція відбулася.
Сивілл — анонімний атакувальник, який зазвичає має велику кількість ідентичностей.
Наприклад, Сивілл може підірвати репутаційну систему за допомогою великої кількості
ідентичностей. Див. атака Сивілли.
Трент (Trent), довірений арбітр — свого роду нейтральна третя сторона, чия точна роль
змінюється залежно від стадії обговорення протоколу.
Чак (Chuck) — третій учасник, зазвичай зловмисник.
9
До нашого часу криптографія займалася виключно забезпеченням
конфіденційності повідомлень (тобто шифруванням) -
перетворенням повідомлень із зрозумілої форми в незрозумілу і
зворотнє відновлення на стороні одержувача, роблячи його
неможливим для прочитання для того, хто перехопив або
підслухав без секретного знання (а саме ключа, необхідного для
розшифрування повідомлення).
В останні десятиліття сфера застосування криптографії
розширилася і включає не лише таємну передачу повідомлень, але
і методи перевірки цілісності повідомлень, ідентифікування
відправника/одержувача (автентифікація), цифрові підписи,
інтерактивні підтвердження, та технології безпечного спілкування,
тощо.
10
Де можна зустріти криптографію?
На сьогоднішній день переважна більшість людей так чи інакше
використовують криптографію у повсякденному житті: мобільний
зв'язок, месенджери, банківські додатки, Wi-Fi, передача інформації
в браузерах (протокол HTTPS) тощо. З'являється все більше
побутових приладів підключених до Інтернету Речей (IoT, Internet-
of-Things) – і звичайно ж, комунікації цих пристроїв між собою та з
власником мають бути надійно захищені криптографічними
методами. Прикладів застосування криптографії можна навести
безліч.
Все це прийнято відносити до «громадянської криптографії» –
тобто криптографії, яка на відміну від криптографії державної чи
військової, покликана задовольняти потреби приватних осіб та
організацій.
11
Криптографічні примітиви
12
Основні примітиви
Приклад
HTTPS = HTTP + TLS,
де TLS = Diffie-Hellman + RSA + AES + Hash functions +
Digital signature + Random number generator + …
13
Криптографічні примітиви повинні мати такі властивості:
Функціональність. Примітиви мають бути об'єднані для досягнення різних цілей. Які
примітиви найефективніші для цієї мети, визначатиметься основними властивостями
примітивів.
Методи роботи. Примітиви, коли вони застосовуються в різних напрямках та при різних
вкладеннях, як правило, виявляють різні характеристики; таким чином, один примітив міг би
використовуватися по-різному залежно від необхідності.
Відносна важливість різних критеріїв значною мірою залежить від застосування та наявних
ресурсів. Наприклад, у середовищі, де обчислювальна потужність обмежена, можливо,
доведеться відмовитися від дуже високого рівня безпеки для підвищення продуктивності
системи в цілому.
14
Криптографія vs. Стеганографія ?
Стеганографія (від грец. στεγανός «прихований» + γράφω «пишу»)
— спосіб передачі або зберігання інформації з урахуванням
збереження в таємниці самого факту такої передачі (зберігання).
На відміну від криптографії, що приховує вміст таємного
повідомлення, стеганографія приховує факт його існування. Як
правило, повідомлення виглядатиме як щось інше, наприклад, як
зображення. Стеганографію зазвичай використовують разом із
методами криптографії, в такий спосіб, доповнюючи її. Тому не
варто протиставляти ці галузі захисту інформації.
Таким чином, криптографія захищає зміст повідомлення, а
стеганографія - сам факт наявності будь-яких прихованих послань
від викриття.
15
1.2. Класифікація криптоалгоритмів
Класифікація залежно від того, чи відомий алгоритм, який використовують
для шифрування:
1. Тайнопис. Відправник і одержувач роблять над повідомленням
перетворення, відомі лише їм двом. Стороннім особам невідомий сам
алгоритм шифрування. Деякі фахівці вважають, що тайнопис не є
криптографією взагалі.
2. Криптографія з ключем. Алгоритм впливу на передані дані відомий
усім стороннім особам, але він залежить від деякого параметра - "ключа",
яким володіють лише відправник і одержувач.
• Симетричні криптоалгоритми. Для зашифровки і розшифровки
повідомлення використовується один і той же блок інформації (ключ).
• Асиметричні криптоалгоритми. Алгоритм такий, що для
зашифровки повідомлення використовується один ( "відкритий") ключ,
відомий усім бажаючим, а для розшифровки - інший ( "закритий"),
який існує тільки в одержувача.
16
Принцип Керкгоффса — правило розробки криптографічних
систем, за яким у засекреченому вигляді тримається лише певний
набір параметрів алгоритму - ключ, а сам алгоритм шифрування
має бути відкритим. Іншими словами, при оцінці надійності
шифрування необхідно припускати, що противник знає про
систему шифрування, що використовується все, крім
застосовуваних ключів. Принцип широко застосовується у
криптографії. Вперше цей принцип сформулював у ХІХ столітті
голландський криптограф Огюст Керкгоффс.
17
У 1883 році Керкгоффс виклав шість принципів проектування військових
шифрів у своїй книзі «Військова криптографія». Шість основних вимог
до криптосистеми, у перекладі звучать так:
1. Система повинна практично, якщо не математично, не підлягати
розкриттю;
2. Не має потреби в збереженні системи в таємниці; попадання системи в
руки ворога не повинно завдавати незручностей;
3. Зберігання та передача ключа повинні бути здійснені без паперових
записів; кореспонденти повинні мати можливість змінювати ключ на свій
розсуд;
4. Система має бути придатною для повідомлення через телеграф;
5. Система має бути легко переносимою, робота з нею не повинна
вимагати участі кількох осіб одночасно;
6. Нарешті, від системи потрібно, враховуючи можливі обставини її
застосування, щоб вона була проста у використанні, не вимагала значного
розумового напруження або дотримання великої кількості правил.
18
Деякі з наведених принципів уже неактуальні, або трансформувалися у
відповідності до сучасних реалій, оскільки комп’ютери здатні виконувати
складне шифрування. Але друга аксіома - принцип Керкгоффса -
залишається життєво важливою.
19
В залежності від кількості ключів, які застосовуються у
конкретному алгоритмі:
• Безключові криптоалгоритми – не використовують в
обчисленнях ніяких ключів;
• Одноключові криптоалгоритми – працюють з одним
додатковим ключовим параметром (таємним ключем);
• Двухключові криптоалгоритми – на різних стадіях роботи в
них застосовуються два ключових параметри: секретний та
відкритий ключі.
20
В залежності від характеру впливів, яким підлягають дані,
алгоритми діляться на:
• Перестановочні - Блоки інформації (байти, біти, більші
одиниці) не змінюються самі по собі, але змінюється їх
порядок проходження, що робить інформацію недоступною
сторонньому спостерігачеві.
• Підстановочні - Самі блоки інформації змінюються за
законами криптоалгоритму. Переважна більшість сучасних
алгоритмів належить цій групі.
21
Залежно від розміру блоку інформації криптоалгоритми
поділяються на:
• Потокові шифри - Одиницею кодування є один біт. Результат
кодування кожного символу не залежить від інших символів.
Схема застосовується в системах передачі потоків інформації,
тобто в тих випадках, коли передача інформації починається і
закінчується в довільні моменти часу і може випадково
перериватися. Найбільш поширеними представниками
потокових шифрів є скремблери.
• Блочні шифри - Одиницею кодування є блок з декількох
байтів (в даний час 4-32). Результат кодування залежить від
усіх вихідних байтів цього блоку. Схема застосовується при
пакетній передачі інформації та кодування файлів.
22
Один з варіантів класифікації криптоалгоритмів наведено на
рисунку 1.1.
Історичні шифри
1. Шифри простої заміни, простий шифр підстановки, моноалфавітний
шифр - приклади шифр Цезаря, Атбаш.
Шифр Плейфера (біграмний шифр).
2. Шифри складної заміни. Поліалфавітні шифри: шифр Віженера, шифр
Гронсфельда. Шифр «подвійний квадрат» Уітстона.
3. Шифри перестановки - Скітала, шифр перестановки.
24
Табличні шифри перестановки
26
й
ї
ї
Після заповнення таблиці текстом повідомлення по стовпцях для
формування шифртексту зчитують вміст таблиці по рядках. Можна
записати шифртекст групами по п'ять символів.
Тоді маємо:
СОЧВЕ ЬДУИН ОНДЙЬ ГІОД
27
ї
1.3.2. Шифр одиночно перестановки по ключу
Дещо більшою сті кістю до розкриття має метод шифрування, що
використовує одиночну перестановку по ключу.
Це метод відрізняється від попереднього тим, що стовпчики
таблиці переставляються за ключовим словом, фразою або набором
чисел довжиною в рядок таблиці.
Виконаємо шифрування відкритого тексту "THIS IS WIKIPEDIA” за
допомогою ключа “CIPHER”.
28
й
й
ї
1.3.3. Шифр подві но перестановки
Для забезпечення додатково скритності можна повторно
зашифрувати повідомлення, яке вже про шло шифрування. Таки
метод шифрування називається подві ною перестановкою.
У разі подві но перестановки стовпців і рядків таблиці
перестановки визначаються окремо для стовпців і рядків. При
дешифруванні порядок перестановок повинен бути зворотним.
Наприклад, скористаємося методом подві ного перестановки для
шифрування фрази: ПРИЛІТАЮ ВОСЬМОГО з ключем
перестановки для стовпців 4132 і для рядків 3142.
29
й
ї
й
ї
ї
й
й
й
й
Створимо таблицю 4х4 і заповнимо її відкритим текстом:
30
Розставляємо ключ в порядку зростання спочатку по стовпцям потім по рядках:
31
Шифртекст розгортається по рядках:
ТЮАІ ООГМ РЛИП ОЬСВ
32
й
ЛЕКЦІЯ 2
з дисципліни “Основи криптографії”
2
ї
ї
ї
ї
ї
У шифрах просто заміни кожен символ вихідного тексту замінюється
символами того ж алфавіту однаково у всьому тексті.
3
ї
ї
й
ї
2.2 Шифри простої заміни
Шифр Цезаря
Також відомий як шифр зсуву, код Цезаря — один із найпростіших і
найбільш широко відомих методів шифрування.
Шифр названий на честь римського полководця Гая Юлія Цезаря,
який використовував його для приватного листування.
Згідно «Життя дванадцяти цезарів» Светонія, він використовував
його зі зсувом 3. Хоча Цезар був першою зафіксованою людиною,
яка використовувала цю схему, інші шифри підстановки, як відомо,
використовувалися і раніше (наприклад, Атбаш).
Є докази, що Юлій Цезар використовував також і складніші схеми.
4
В шифрі Цезаря кожен символ у відкритому тексті замінюється
буквою, що знаходиться на деяке пості не число позиці лівіше або
правіше нього в алфавіті. Це число є ключем шифру.
5
й
й
Математично шифр Цезаря можна описати наступним чином.
Якщо поставити у відповідність кожному символу алфавіту його
порядковий номер (нумеруючи з 0), то шифрування та
дешифрування можна виразити формулами модульної арифметики:
y = ( x − k ) mod n,
x = ( y + k ) mod n,
6
Часто для зручності використання шифру Цезаря використовували
два насаджені на загальну вісь диска різного діаметра з
намальованими по краях дисків алфавітами. Спочатку диски
повертаються так, щоб навпроти кожної літери алфавіту
зовнішнього диска була та сама літера алфавіту малого диска. Якщо
тепер повернути внутрішній диск на кілька символів, ми отримаємо
відповідність між символами зовнішнього диска та внутрішнього –
шифр Цезаря. Такий диск можна використовувати як для
шифрування, так і для розшифрування.
Наприклад, якщо внутрішнє колесо повернути так, щоб символ A
зовнішнього диска відповідав символ D внутрішнього диска, то
отримаємо шифр зі зсувом 3 вліво.
7
Різновиди шифру Цезаря (див. Лаб. роботи):
• Шифр Цезаря з ключовим словом
• Афінна система підстановок Цезаря
8
й
й
Криптоаналіз шифру Цезаря
Невідомо, наскільки ефективним шифр Цезаря був у часи самого
Цезаря, але, ймовірно, він був розумно безпечний, не в останню
чергу завдяки тому, що більшість ворогів Цезаря були
неписьменними, і багато хто припускав, що повідомлення були
написані невідомою іноземною мовою.
Немає жодних свідчень того часу щодо методів злому простих
шифрів підстановки. Найбільш ранні записи про частотний аналіз
- це роботи Ал-Кінді 9-го століття про відкриття частотного аналізу.
9
Шифр Цезаря може бути легко зламаний навіть у випадку, коли
зловмисник знає лише зашифрований текст. Можна розглянути дві
ситуації:
• Зловмисник знає, що використовувався шифр Цезаря, але не знає
значення зсуву.
• Зловмисник знає (або припускає), що використовувався простий
шифр підстановки, але не знає, що це схема Цезаря.
10
Розглянемо перший випадок.
Шифр Цезаря має замало ключів — на одиницю менше, ніж літер в
абетці. Тому його легко зламати перебором — пробувати усі
можливі ключі, поки розшифрування не дасть впізнаваний
відкритий текст. Такий вид криптоаналізу називається методом
перебору (або Атака методом «грубою сили», Brute-force attack).
11
Розглянемо другий випадок.
Також зламати шифр Цезаря можна, як і звичайний підстановочний
шифр, у зв'язку з тим, що частота появи кожної літери в шифртексті
збігається з частотою появи у відкритому тексті. Якщо припустити,
що частота появи літер у відкритому тексті приблизно відповідає
середньостатистичній відносній частоті появи літер в текстах мови,
якою написане повідомлення, тоді ключ знаходиться зіставленням
перших декількох літер, що трапляються найчастіше у відкритому
та зашифрованому текстах. Тобто за допомогою методу частотного
криптоаналізу.
12
Частота символу у повідомленні дорівнює кількості ого появи у тексті, поділені
на загальну кількість літер тексту. Для кожно мови справедливо наступне: у
досить довгих текстах кожна літера зустрічається із приблизно однаковою
частотою, залежно від само літери і незалежно від конкретного тексту. Тобто
імовірність появи окремих літер, біграм, триграм, а також х порядок у словах і
фразах природньо мови підпорядковуються статистичним закономірностям. Так,
наприклад, відомо, що в укра нські та англі ські мовах частоти появи літер
розподілені наступним чином.
14
й
й
й
й
ї
й
ї
ї
Приклад
Розглянемо спрошений варіант частотного криптоаналіза -
зловмисник підозрює, що використовувався саме шифр Цезаря.
Дано текст, зашифровани за допомогою шифру простої заміни:
ДАФИНЦШЕИЮЯЗЩШФЬИТЧИВЮЯШХСЯЯЗВИ ШЧШЮФЬС
ПЄСПИ ОЛРПЧИЦРЗФЬРІИ ШЛСЯИФСЦР ЧЄШЦАС ШЧШІСХ
ЗЧИЮДАФИНЧИЮЮИЦРВЧМЦИУШ ШЧСЛМ СЛЯШ ШЕШ
ШЧШЮФЬСПЄ
При зашифруванні відкритого тексту використовувався алфавіт
АБВГҐДЕЄЖЗИІ КЛМНОПРСТУФХЦЧШЩЬЮЯабвгґдеєжзиі
клмнопрстуфхцчшщьюя.
Припускаючи, що текст зашифровани за допомогою шифру
Цезаря, складемо таблицю появи літер в даному шифротексті.
15
Ї
Ї
Й
й
Ї
Ї
й
Й
Ї
Ї
Ї
Ї
Й
ї
й
Ї
З даної таблиці видно, що на частіше у тексті з’являється літера «Ш» – 16
разів.
Як відомо, найчастіше в текстах укра нською мовою зустрічається літера «О».
Тому можемо припустити, що літері «Ш» в шифротексті, мовірно, відповідає
літера «О» у відкритому тексті. Якщо послідовності літер А, Б,..., О,..., Ш,..., Я
ототожнити із послідовністю х позиці в алфавіті 0, 1,..., 17,..., 27,..., то можна
обчислити ключ K: 27–17=10. Тепер ми можемо відновити початкове
повідомлення, записавши ого із розділовими знаками (наприклад, для першої
літери Д позиція 5, тобто символ відкритого тексту буде розраховуватися як
(5-10)mod 32=27 - це буква Ш):
Шукаємо щастя по кра нах, століттях, а воно скрізь і завжди з нами; як риба
в воді, так і ми в ньому, і воно біля нас шукає нас самих. Нема ого ніде від
того, що воно скрізь.
З більш повноцінним варіантом частотного криптоаналіза можна
ознайомитися за посиланням https://en.wikipedia.org/wiki/Frequency_analysis
16
ї
й
й
ї
ї
й
й
й
Шифр Квадрат Полібія
У криптографії квадрат Полібія (англ. Polybius square), також відомий як
шахова дошка Полібія — оригінальний шифр простої заміни, одна з
найдавніших систем кодування, запропонована Полібієм (грецький
історик, полководець, державний діяч, III століття до н. е.). Цей спосіб
шифрування спочатку застосовувався для грецької абетки, але потім
поширився на інші мови.
Криптостійкість
Квадрат Полібія є прикладом шифру заміни, тому нестійкий до частотної атаки.
2.3 Поліграмні шифри
Шифр Плейфера
Шифр Плейфера або квадрат Плейфера – ручна симетрична
техніка шифрування, в якій вперше використано заміну біграм
(груп з двох символів). Винайдений в 1854 році англійським
фізиком Чарльзом Уітстоном, але названий ім'ям лорда Лайона
Плейфера, який зробив великий внесок у просування і
використання даної системи шифрування в державній службі.
Шифр передбачає шифрування пар символів замість одиночних
символів, як у шифрі підстановки та у складніших системах
шифрування Віженера.
Таким чином ускладнюється частотни аналіз шифру. Він може
бути проведени , але не для 26 можливих символів (англі ськи
алфавіт), а для 26х26 = 676 можливих біграм.
20
й
й
й
й
Для шифрування шифр Пле фера використовує матрицю 5х5 (для
англі ського алфавіту), яка містить ключове слово або фразу. Щоб
скласти ключову матрицю, в першу чергу потрібно заповнити
порожні клітинки матриці літерами ключового слова (виключаючи
літери, що повторюються), потім заповнити клітинки, що лишилися
символами алфавіту, що не зустрічаються в ключовому слові, по
порядку. В англі ських текстах зазвича пропускається символ
«Q», щоб зменшити алфавіт, в інших версіях «I» і «J» об’єднуються
в одну клітинку.
21
й
й
й
й
й
Ключове слово може бути записано у верхньому рядку матриці
зліва направо, або по спіралі з лівого верхнього кута до центру.
Для того щоб зашифрувати повідомлення, необхідно розбити ого
на біграми (групи з двох символів) та відшукати ці біграми в
матриці. Два символи біграми відповідають кутам прямокутника в
ключови матриці. Визначаємо положення кутів цього
прямокутника відносно один одного. Потім, керуючись наступними
4 правилами, зашифровувати пари символів вихідного тексту.
22
й
й
Правила шифрування біграм
1. Відкрити текст вихідного повідомлення розбивається на пари букв
(біграми). Текст повинен мати парну кількість букв, і в ньому не
повинно бути біграм, що містять дві однакові букви. Якщо ці вимоги
не виконуються, то текст необхідно модифікувати.
2. Якщо літери біграми знаходяться в різних стовпцях і різних рядках –
замінюємо х на літери, що знаходяться в тих самих рядках (стовпцях),
але відповідно в протилежних кутах прямокутника.
3. Якщо літери біграми зустрічаються в одному рядку – замінюємо х
на літери, розташовані в на ближчих стовпцях праворуч від
відповідних літер. Якщо літера остання у рядку, то вона замінюється
на перши символ цього ж рядка.
4. Якщо літери біграми зустрічаються в одному стовпці –
перетворюємо х в літери того ж стовпця, що знаходяться
безпосередньо під ними. Якщо літера є нижньою в стовпці – вона
замінюється на першу літеру цього ж стовпчика.
23
й
ї
й
ї
й
ї
Приклад
Зашифруємо повідомлення HIDE THE GOLD IN THE TREE STUMP із
використанням ключово фрази PLAYFAIR EXAMPLE. Матрицею
шифрування буде матриця описана вище.
Для шифрування розіб’ємо текст на біграми HI DE TH EG OL DI NT HE TR
EX ES TU MP. Зна демо літери першо біграми у матриці та замінимо х на
літери, що знаходяться у протилежних кутах прямокутника.
24
й
ї
ї
ї
Метод для розшифровування ідентични методу шифрування. Для
цього при розшифровуванні замість відкритого тексту
використовується раніше отримани шифротекст, у результаті
виходить вихідни відкрити текст.
Як і більшість шифрів формально криптографі , шифр Плейфера
також може бути легко зламани , якщо є достатні обсяг тексту.
Отримання ключа є відносно простим, якщо відомі шифровани та
звича ни текст. Коли відоми лише зашифровани текст,
криптоаналітики аналізують відповідність між частотою появи біграм
у зашифрованому тексті та відомою частотою появи біграм у мові,
якою написано повідомлення.
25
й
й
й
й
й
й
ї
й
й
ї
й
й
й
Шифр Уітстона
27
Алгоритм пошуку оберненої матриці, наприклад, можна подивитися тут
https://yukhym.com/uk/matritsi-ta-viznachniki/obernena-matritsya-prikladi-
obchislennya.html
28
Шифрування
29
Дешифрування
30
Криптостійкість шифра Хілла
31
Матриця обернена по модулю 26 тоді і тільки тоді, коли вона обернена
і по модулю 2 і по модулю 13.
Кількість обернених по модулю 2 матриць розміру n × n
33
Оригінальний шифр Хілла не знайшов практичного застосування в
криптографії через слабку стійкість до злому та відсутність опису
алгоритмів генерації прямих та зворотних матриць великого розміру.
Але інсують декілька модифіцій цього шифру. Більшість
модифікованих криптосистем припускають при шифруванні/
дешифруванні використовувати не одну пару ключів, а кілька, що
підвищує стійкість системи. При шифруванні кожен блок відкритого
тексту обробляється окремим ключем. Використання цього принципу
дозволяє значною мірою приховати статистичні властивості відкритого
та шифрованого тексту, а також взаємозв'язок між ними.
34
ЛЕКЦІЯ 3
з дисципліни “Основи криптографії”
Ї
Й
3.1 Шифри складної заміни (поліалфавітні
шифри)
Шифр Віженера
Шифр Віженера – це метод
поліалфавітного шифрування
буквеного тексту з використанням
ключового слова. Це метод є
простою формою
багатоалфавітно заміни.
Шифр Віженера винаходили Блез Віженер
поступово і багаторазово.
2
ї
й
В 1466 Леон Альберті, знаменитий
архітектор і філософ представив трактат про
шифри в папську канцелярію. У трактаті
розглядаються різні способи шифрування,
зокрема маскування відкритого тексту
деякому допоміжному тексті. Робота
завершується власним шифром, який він
назвав «шифр, гідний королів». То справді
був багатоалфавітний шифр, реалізований у
вигляді шифрувального диска. Суть полягає
в тому, що в даному шифрі використовується
кілька замін відповідно до ключа.
Даний винахід значно випередив свій час,
оскільки даний тип шифру став широко Репродукція шифрувального
застосовуватися в країнах Європи та в США диска 60х років XIX ст., США
лише через 400 років.
3
У 1518 році у розвитку криптографії було зроблено новий крок
завдяки появі в Німеччині першої друкованої книги з криптографії.
Абат Йоганн Тритемій, настоятель монастиря у Вюрцбурзі, написав
книгу «Поліграфія», в якій дається опис шифрів. Один із них
використовує «таблицю Тритемія» (нині «таблицю Віженера») та
розвиває ідею багатоалфавітної заміни. Система шифрування наступна:
перша літера вихідного тексту шифрується за першим рядком, друга за
другим і так далі. Після використання останнього рядка наступна
літера знову шифрується на першому рядку. У шифрі Тритемія відсутня
ключ, секретом є спосіб шифрування.
4
Наступний крок у розвитку запропонованого Тритемієм способу
шифрування було зроблено італійцем Джованні Баттіста Белазо.
Він вперше описав це метод у книзі La cifra del. Sig. Giovan Battista
Bellasо («Шифр синьйора Белазо») в 1553. Белазо запропонував
відмовитися від алфавітного порядку проходження букв у першому
рядку таблиці Тритемія і замінити цей порядок на деякий довільний
ключ шифру. Рядки таблиці, як і раніше, циклічно зсувалися.
У своїй книзі «Про таємне листування», (що вийшла в 1563) Джованні
Порта запропонував біграмний шифр, а також навів опис механічного
дискового пристрою, що реалізує біграмну заміну.
У середині XVI століття в Італії з'являється книга Дж. Кардано «Про
тонкощі» з доповненням «Про різні речі». Там знайшли відображення
нові ідеї криптографії: використання частини самого переданого
відкритого тексту як ключа шифру (ідея «самоключа») та новий спосіб
шифрування, який увійшов в історію як «решітка Кардано».
5
й
Посол Франції в Римі Блез де Віженер, познайомившись із
працями Тритемія, Белазо, Кардано, Порта, Альберті, також
захопився криптографією. В 1585 він написав «Трактат про
шифри», в якому викладаються основи криптографії. У цій праці
він зауважує: «Всі речі у світі є шифром. Вся природа є просто
шифром та секретним листом». Ця думка була повторена Блезом
Паскалем — одним з засновників теорії ймовірностей, а XX
століття і Норбертом Вінером — «батьком кібернетики».
По суті, Віженер об'єднав підходи Тритемія, Беллазо, Порта та
інших винахідників до шифрування відкритих текстів, але не додав
при цьому нічого оригінального. Однак назва «Шифр Віженера»
закріпилася і витіснила імена попередників.
6
Шифр Виженера досить простий для використання в польових
умовах, особливо якщо використовуються шифрувальні диски.
Наприклад, конфедерати використовували мідний шифрувальний
диск для шифру Віженера в ході Громадянської війни в США.
Послання Конфедерації були далекі від секретних, та його
противники регулярно зламували повідомлення. Під час війни
командування Конфедерації покладалося на три ключових
словосполучення: «Manchester Bluff», «Complete Victory» і —
оскільки війна добігала кінця — «Come Retribution».
Метод прости для розуміння та реалізаці , але недоступним для
простих методів криптоанализа. Протягом довгого часу шифр мав
репутацію виключно сті кого до «ручного» злому. Однак, це
уявлення було спростовано після того, як Фрідріх Казіскі повністю
зламав шифр в XIX столітті.
7
й
й
ї
Гілберт Вернам спробував поліпшити зламаний шифр (він отримав
назву шифр Вернама-Віженера в 1918 році), але, незважаючи на
його вдосконалення, шифр так і залишився вразливим для
криптоаналізу. Однак робота Вернама в результаті все ж таки
призвела до отримання шифру, який дійсно неможливо зламати.
8
Процес шифрування шифром Віженера
Як відомо, у шифрі Цезаря кожна буква алфавіту зсувається на
кілька позиці : наприклад, при зсуві +3 для латинського алфавіту, A
стало б D, B стало б E і так далі. Шифр Віженера складається з
послідовності кількох шифрів Цезаря з різними значеннями зсуву.
Для зашифрування може використовуватися таблиця алфавітів, що
називається tabula recta або квадрат Віженера (рис.3.1).
Таблиця містить алфавіт, написани 26 разів у різних рядках, кожен
алфавіт циклічно зсувається вліво відносно попереднього рядка, що
відповідає 26 можливим шифрам Цезаря (розглядається випадок
латинського алфавіту). На кожному етапі шифрування
використовуються різні алфавіти, які вибираються в залежності від
символу ключового слова.
9
й
й
Рис.3.1. Квадрат (таблиця) Віженера
10
Приклад 3.1
Припустимо, що вихідни текст має таки вигляд:
ATTACKATDAWN
Людина, що посилає повідомлення, записує ключове слово («LEMON»)
циклічно доти, доки ого довжина не буде відповідати довжині вихідного
тексту:
LEMONLEMONLE
Перши символ вихідного тексту (A) зашифровани символом L - першим
символом ключа. Перши символ зашифрованого тексту (L) знаходиться на
перетині рядка L і стовпця A в таблиці Віженера. Так само для другого
символу вихідного тексту використовується други символ ключа; тобто
други символ зашифрованого тексту (X) виходить на перетині рядка E і
стовпця T. Решта вихідного тексту шифрується подібним способом.
11
й
й
й
й
й
й
й
й
Розшифровування зді снюється наступним чином:
• знаходимо в таблиці Віженера рядок, що відповідає першому
символу ключового слова;
• у цьому рядку знаходимо перши символ зашифрованого тексту.
Стовпець, у якому міститься це символ, відповідає першому
символу вихідного тексту.
Наступні символи зашифрованого тексту розшифровуються так
само.
12
й
й
й
Якщо n – кількість букв в алфавіті, mj – номер букви відкритого
тексту, kj – номер букви ключа в алфавіті, то шифрування Віженера
можна записати так:
cj = (mj + kj) mod n
І розшифровування:
mj = (cj − kj) mod n
13
Здається, якщо таблиця буде складнішою, ніж циклічне зміщення
рядків, то шифр стане наді ніше. Це справді так, якщо міняти
частіше, наприклад, від слова до слова. Але складання таких
таблиць, що являють собою латинські квадрати, де будь-яка буква
зустрічається в рядку або стовпці один раз, трудомістко і ого варто
робити лише з використанням обчислювальної техніки. Для
ручного ж багатоалфавітного шифру покладаються лише на
довжину і складність ключа, використовуючи наведену таблицю,
яку можна не тримати в таємниці, а це спрощує шифрування і
розшифровування.
14
й
ї
ї
й
На скільки стійкий шифр Віженера?
Оскільки для кожної букви відкритого тексту існує багато варіантів букв,
якими вона може буде виражена в шифротексті, можна очікувати, що
відносний розподіл частоти появи букв буде зруйновано. Але, як видно на
графіках, значна частина вхідного статистичного розподілу, як і раніше,
проявляється у вихідних даних.
15
Очевидно, що чим довший ключ шифрування, тим більше
маскується структура відкритого тексту. Найкращий можливий
ключ має таку ж довжину, як і текстове повідомлення, і
складається з повністю випадкової перестановки 26 літер алфавіту.
Це дасть ідеальний графік статистики частоти появи букв у
зашифрованому тексті, показаний на пропередньому рисунку як
Random Polyalphabetic.
17
3.2 Злом поліалфавітних шифрів - метод Казіскі
18
У 1863 році Казіскі опублікував свою 95-сторінкову працю «Die
Geheimschriften und die Dechiffrirkunst» («Тайнопис та мистецтво
дешифрування», оригінал рукопису знаходиться в бібліотеці в
Мюнхені). Це була книга про атаки на шифри, створені за
допомогою поліалфавітної заміни. У цій книзі Казіскі описує своє
велике відкриття в криптоаналізі, а саме алгоритм, відомий всім як
«Тест Казіскі». Цей алгоритм дозволяв зламувати шифр Віженера,
злом якого вважався неможливим протягом 400 років. Відкриття
Казіскі поступається важливості лише роботі Аль-Кінді, відомого
як «філософ арабського світу», який відкрив метод частотного
аналізу для дешифрування тексту.
19
Проте за десять років до Казіскі успіху у зламі шифру Віженера
досяг Чарльз Беббідж. Беббідж зробив своє відкриття у 1854 році,
але про нього так ніхто і не дізнався, тому що Беббідж так і не
опублікував його. Це взнали лише у ХХ столітті, коли вчені почали
розбирати його численні нотатки.
Цілком можливо, що британська секретна служба вимагала від
Беббіджа зберегти свою роботу в секреті.
20
Ідея методу заснована на тому, що ключі є періодичними, а в
природній мові існують найпоширеніші буквосполучення: біграми і
триграми. Це наводить на думку, що набори символів, що
повторюються, в шифротексті — повторення популярних біграм і
триграм вихідного тексту.
21
Метод полягає у пошуку груп символів, які повторюються у
зашифрованому тексті. Групи повинні складатися не менше ніж з
трьох символів. Тоді відстані між послідовною появою груп,
ймовірно, будуть кратні довжині ключового слова. Імовірна
довжина ключового слова кратна найбільшому спільному дільнику
всіх відстаней.
22
Відстань між двома повторюваними підрядками в зашифрованому
тексті - g. Ключове слово довжиною k повторюється, щоб
заповнити довжину зашифрованого тексту, відстань g кратна
довжині ключового слова k. Таким чином, якщо ми бачимо два
підрядки, що повторюються, з відстанню g, то один з дільників g
може бути довжиною ключового слова. Наприклад, якщо відстань
дорівнює g = 18, оскільки дільники g дорівнюють 2, 3, 6, 9 і 18,
один з них може бути довжиною невідомого ключового слова.
Шифротекст
Ключове
слово
24
Приклад 3.2 (https://crypto.interactive-maths.com/kasiski-analysis-
breaking-the-code.html#intro)
Зашифрований текст
CVJTNAFENMCDMKBXFSTKLHGSOJWHOFUISFYFBEXEINFIMAYSSDYYIJNPWTOKFRHWVWTZFXHLUY
UMSGVDURBWBIVXFAFMYFYXPIGBHWIFHHOJBEXAUNFIYLJWDKNHGAOVBHHGVINAULZFOFUQCVF
BYNFTYGMMSVGXCFZFOKQATUIFUFERQTEWZFOKMWOJYLNZBKSHOEBPNAYTFKNXLBVUAXCXUYY
KYTFRHRCFUYCLUKTVGUFQBESWYSSWLBYFEFZVUWTRLLNGIZGBMSZKBTNTSLNNMDPMYMIUBVM
TLOBJHHFWTJNAUFIZMBZLIVHMBSUWLBYFEUYFUFENBRVJVKOLLGTVUZUAOJNVUWTRLMBATZMF
SSOJQXLFPKNAULJCIOYVDRYLUJMVMLVMUKBTNAMFPXXJPDYFIJFYUWSGVIUMBWSTUXMSSNYKYD
JMCGASOUXBYSMCMEUNFJNAUFUYUMWSFJUKQWSVXXUVUFFBPWBCFYLWFDYGUKDRYLUJMFPXXE
FZQXYHGFLACEBJBXQSTWIKNMORNXCJFAIBWWBKCMUKIVQTMNBCCTHLJYIGIMSYCFVMURMAYOB
JUFVAUZINMATCYPBANKBXLWJJNXUJTWIKBATCIOYBPPZHLZJJZHLLVEYAIFPLLYIJIZMOUDPLLTHVE
VUMBXPIBBMSNSCMCGONBHCKIVLXMGCRMXNZBKQHODESYTVGOUGTHAGRHRMHFREYIJIZGAUNF
ZIYZWOUYWQZPZMAYJFJIKOVFKBTNOPLFWHGUSYTLGNRHBZSOPMIYSLWIKBANYUOYAPWZXHVFU
QAIATYYKYKPMCEYLIRNPCDMEIMFGWVBBMUPLHMLQJWUGSKQVUDZGSYCFBSWVCHZXFEXXXAQR
OLYXPIUKYHMPNAYFOFHXBSWVCHZXFEXXXAIRPXXGOVHHGGSVNHWSFJUKNZBESHOKIRFEXGUFV
KOLVJNAYIVVMMCGOFZACKEVUMBATVHKIDMVXBHLIVWTJAUFFACKHCIKSFPKYQNWOLUMYVXYY
KYAOYYPUKXFLMBQOFLACKPWZXHUFJYGZGSTYWZGSNBBWZIVMNZXFIYWXWBKBAYJFTIFYKIZMU
IVZDINLFFUVRGSSBUGNGOPQAILIFOZBZFYUWHGIRHWCFIZMWYSUYMAUDMIYVYAWVNAYTFEYYCL
PWBBMVZZHZUHMRWXCFUYYVIENFHPYSMKBTMOIZWAIXZFOLBSMCHHNOJKBMBATZXXJSSKNAUL
BJCLFWXDSUYKUCIOYJGFLMBWHFIWIXSFGXCZBMYMBWTRGXXSHXYKZGSDSLYDGNBXHAUJBTFDQ
CYTMWNPWHOFUISMIFFVXFSVFRNA
25
Шукаємо в шифротексті фрагменти по 3 і 4 літери, які повторюються. Знаходимо
відстань між повторюваними послідовностями і вносимо значення в другий
стовпець. Спираючись на дільники значення відстані відмічаємо в таблиці
вірогідні довжини ключів.
26
На попередньому слайді наведена частина таблиці, якщо її
продивитися повністю, то стало би очевидно, що найбільшу
кількість разів для всіх послідовностей відмічено число 6.
Тобто, робимо припущення про те, що довжина ключа дорівнює
саме 6.
Після цього шифротекст записується в стовпці, кількість яких
відповідає довжині ключа.
27
Для першого стовпця отримаємо такий результат
29
fi
Метод Фрідмана
Для уточнення довжини ключа можна використовувати метод
Фрідмана.
30
31
Уточнення довжини ключа за методом Фрідмана
32
де – частота появи літери i в природній мові.
𝑝
3.3 Поняття криптографічно сті кості
36
ї
й
37
Іншими словами, обчислювальна стійкість – це можливість
потенційного криптоаналітичного розкриття шифру, коли при всіх
заданих параметрах та ключах алгоритму шифрування на сучасній
стадії розвитку криптографічного аналізу у зловмисника немає
необхідних обчислювально-алгоритмічних та часових ресурсів,
щоб реалізувати злам. Вважається, що якщо алгоритм, який
здійснює злам шифру, повинен виконати більше або порядку 2^80
операцій, шифр є обчислювально стійким. Не є обчислювально
стійкими: шифри зсуву, заміни, Віженера. До обчислювально
стійких шифрів належать АES, RSA, шифр Ель-Гамаля.
38
39
Дифузія Конфузія
40
41
3.4 Шифр Вернама
42
Шифр є різновидом криптосистеми одноразових блокнотів
(шифроблокнотів). У ньому використовується булева функція
«XOR». Шифр Вернама є прикладом системи з абсолютною
криптографічної стійкістю. При цьому вважається однією з
найпростіших криптосистем.
43
44
45
Вернам не використав поняття «XOR» у патенті, але реалізував
саме цю операцію в релейній логіці. Кожен символ у повідомленні
перетворювався побітовим XOR з ключем паперової стрічки.
Для шифрування Вернам запропонував заздалегідь готувати ключ -
«гаму» - перфострічку з випадковими знаками - і потім
електромеханічно додавати її імпульси до імпульсів знаків
відкритого тексту. Отримана сума являла собою шифротекст. На
приймальному кінці імпульси, отримані по каналу зв'язку,
складалися з імпульсами тієї ж самої «гами», в результаті чого
відновлювалися вихідні імпульси повідомлення.
46
Вернам створив пристрій, що здійснює зазначені операції автоматично, без
участі шифрувальника. Тим самим було започатковано так зване «лінійне
шифрування», коли процеси шифрування та передачі повідомлення
відбуваються одночасно. До того часу шифрування було попереднім, тому
лінійне шифрування значно підвищувало оперативність зв'язку.
48
49
50
Приклад 3.3 Шифрування
51
Приклад 3.4 Дешифрування
52
Приклад роботи для бінарних даних
53
Приклад 3.5
54
Криптографічна стійкість шифру Вернама
У 1945 році Клод Шеннон написав роботу (розсекречену лише
після Другої світової війни у 1949 р.), у якій довів абсолютну
стійкість шифру Вернама. Інших шифрів з цією властивістю не
існує. Але дана властивість забезпечується лише за умови
використання випадкового ключа, довжина якого дорівнює довжині
повідомлення. Це обмеження робить використання шифру
недоцільним, оскільки для обміну ключами сторони мають
передати по захищеному каналу об’єм інформації, що дорівнює
повідомленню (за наявності такого каналу доцільніше одразу
передати саме повідомлення).
55
Кожен символ ключа шифру Вернама використовується тільки
один раз і для єдиного повідомлення, інакше навіть якщо
використовувати блокнот розміром в кілька гігабайт, при
отриманні криптоаналітиком декількох текстів з ключами, що
перекриваються, він зможе відновити вихідний текст. Він зсуне
кожну пару шифротекстів один щодо одного і підрахує кількість
збігів у кожній позиції. якщо шифротексти зміщені правильно,
співвідношення збігів різко зросте. З цієї точки зору криптоаналіз
не складе труднощів. Якщо ключ не повторюється і випадковий,
то криптоаналітик, перехоплює він тексти чи ні, завжди має
однакові знання.
Випадкова ключова послідовність, накладена на невипадковий
відкритий текст, дає випадковий шифротекст, і жодні
обчислювальні потужності не зможуть це змінити.
56
Недоліки
• Для роботи шифру Вернама необхідна дійсно випадкова послідовність нулів та
одиниць (ключ). За визначенням, послідовність, отримана з використанням будь-якого
алгоритму, є не зовсім випадковою, а псевдовипадковою. Тобто, потрібно отримати
випадкову послідовність неалгорітмічно (наприклад, використовуючи радіоактивний
розпад ядер, створений електронним генератором білий шум або інші досить
випадкові події). Щоб зробити розподіл гранично близьким до рівномірного,
випадкову послідовність зазвичай проганяються через хеш-функцію, наприклад MD5.
• Проблемою є таємна передача послідовності та збереження її в таємниці. Якщо існує
надійно захищений від перехоплення канал передачі повідомлень, шифри взагалі не
потрібні: секретні повідомлення можна передавати з цього каналу. Якщо ж передавати
ключ системи Вернама за допомогою іншого шифру (наприклад, DES), то отриманий
шифр буде захищеним рівно настільки, наскільки захищений DES. При цьому,
оскільки довжина ключа така ж, як і довжина повідомлення, передати його не
простіше, ніж повідомлення. Шифроблокнот на фізичному носії можна вкрасти або
скопіювати.
• Можливі проблеми з надійним знищенням використаної сторінки. Це стосується як
паперових сторінок блокнота, так і сучасних електронних реалізацій, наприклад з
використанням флеш-пам'яті.
• Якщо третя сторона якимось чином зрозуміє повідомлення, вона легко відновить ключ
і зможе підмінити повідомлення на інше такої ж довжини.
• Шифр Вернама чутливий до будь-якого порушення процедури шифрування.
Наприклад, контррозвідка США часто розшифровувала радянські та німецькі
послання через неточності генератора випадкових чисел. Бували випадки, коли одна і
та ж сторінка блокнота застосовувалася двічі - США також могли розшифровувати
такі послання. 57
Область застосування
В даний час шифрування Вернама майже не використовується. Великою мірою це
обумовлено суттєвим розміром ключа, довжина якого має збігатися з довжиною
повідомлення. Тобто використання таких шифрів вимагає величезних витрат на
виробництво, зберігання, знищення ключових матеріалів. Тим не менш, абсолютно
стійкі шифри типу Вернама все ж таки знайшли практичне застосування для захисту
особливо важливих ліній зв'язку з відносно невеликим обсягом інформації. Так,
наприклад, англійці та американці використовували шифри типу Вернама під час
Другої світової війни. Шифр Вернама за модулем 2 використовувався на урядовій
«гарячій лінії» між США і Радянським союзом, де ключові матеріали були паперові
стрічки, на які знаки ключової послідовності наносилися за допомогою перфорації
(до початку 1990х років).
На практиці можна один раз фізично передати носій інформації з довгим випадковим
ключем, а потім у міру необхідності пересилати повідомлення. На цьому заснована
ідея шифроблокнотів: шифрувальник по дипломатичній пошті або при особистій
зустрічі забезпечується блокнотом, кожна сторінка якого містить ключі. Такий же
блокнот є і у сторони, що приймає. Використані сторінки знищуються.
58
ЛЕКЦІЯ 4
з дисципліни “Основи криптографії”
2
3
4
5
4.2 Класифікація сучасних криптосистем
6
4.2.1 Сучасні симетричні криптоалгоритми
Симетричні криптосистеми - спосіб шифрування, в якому для
шифрування і дешифрування застосовується один і той же
криптографічний ключ. До винаходу схеми асиметричного
шифрування єдиним існуючим способом було симетричне
шифрування. Ключ алгоритму повинен зберігатися в секреті обома
сторонами.
7
Сучасні симетричні алгоритми поділяються на 2 великих класи:
- Потокові шифри
- Блочні шифри
8
Потокові шифри
Головною відмінною рисою потокових шифрів є побітна обробка
інформації. Як наслідок, шифрування і дешифрування в таких
схемах може обриватися в довільний момент часу, як тільки
з'ясовується, що потік що передається перервався, і також
відновлюється при виявленні факту продовження передачі. Подібна
обробка інформації може бути представлена у вигляді автомата*,
який на кожному своєму такті:
• генерує за будь-яким законом один біт шифрувальної
послідовності;
• яким-небудь оборотним перетворенням накладає на один біт
відкритого потоку даний шифрувальний біт, отримуючи
зашифрований біт.
9
Всі сучасні потокові шифри діють за даною схемою. Біт
шифрування, що виникає на кожному новому кроці автомата, як втім
і цілий набір таких біт, прийнято позначати символом Γ (гамма), а
самі потокові шифри отримали через це другу назву - шифри
гамування.
Шифри гамування набагато швидші за своїх найближчих
конкурентів - блокові шифри - у тому випадку, якщо потокове
шифрування реалізується апаратно.
Ключ є необхідною частиною гаммуючого шифру. Якщо ключ і
схема породження гами не є секретним, то поточний шифр
перетворюється на звичайний перетворювач-кодер - скремблер.
Приклади потокових криптоалгоритмів:
• RC4,
• А5/x (в GSM - А5/1, А5/2),
• ZUC (в LTE) та ін.
10
Скремблер - програмний або апаратний пристрій (алгоритм), що
виконує скремблювання - перетворення цифрового потоку без
зміни швидкості передачі з метою отримання властивостей
випадкової послідовності. Після скремблювання поява «1» і «0» у
вихідній послідовності рівноймовірні.
Скремблювання - оборотний процес, тобто вихідне повідомлення
можна відновити, застосувавши зворотний алгоритм.
Стосовно телекомунікаційних систем скремблювання підвищує
надійність синхронізації пристроїв, підключених до лінії зв'язку
(забезпечує надійне виділення тактової частоти безпосередньо з
сигналу, що приймається), і зменшує рівень перешкод,
випромінюваних на сусідні лінії багатожильного кабелю. Інша
сфера застосування скремблерів — захист інформації, яка
передається, від несанкціонованого доступу.
11
Блочні шифри
12
Блочний шифр - різновид симетричного шифру, що оперує
групами біт фіксованої довжини - блоками, характерний розмір
яких змінюється в межах 64-256 біт. Якщо вихідний текст (або
його залишок) менший за розмір блоку, перед шифруванням його
доповнюють. Фактично, блочний шифр є підстановкою на алфавіті
блоків, яка, як наслідок, може бути моно- або поліалфавітною.
13
На відміну від шифроблокнота (Шифр Вернама), де довжина
ключа дорівнює довжині повідомлення, блочний шифр здатний
зашифрувати одним ключем одне або кілька повідомлень
сумарною довжиною більше, ніж довжина ключа. Передача малого
порівняно з повідомленням ключа зашифрованим каналом —
завдання значно більш просте і швидке, ніж передача самого
повідомлення або ключа такої ж довжини, що робить можливим
його повсякденне використання. Однак, при цьому шифр перестає
бути абсолютно стійким.
14
Блочні шифри є основою, на якій реалізовані практично всі
криптосистеми. Методика створення ланцюжків із зашифрованих
блочними алгоритмами байт дозволяє шифрувати ними пакети
інформації необмеженої довжини. Відсутність статистичної
кореляції між бітами вихідного потоку блочного шифру
використовується для обчислення контрольних сум пакетів даних
і в хешуванні паролів.
15
Щодо стійкості блочних шифрів - по теорії ймовірності шуканий
ключ буде знайдено з ймовірністю 1/2 після перебору половини
всіх ключів, тоді на злом криптоалгоритму з ключем довжини N
потрібно в середньому 2^N−1 перевірок.
Таким чином, у загальному випадку стійкість блочного шифру
залежить тільки від довжини ключа і зростає експоненціально з її
зростанням. Навіть припустивши, що перебір ключів
проводиться на спеціально створеній багатопроцесорної системі,
в якій завдяки діагональному паралелізму на перевірку 1 ключа
йде тільки 1 такт, то на злом 128 бітного ключа сучасній техніці
буде потрібно не менше 10^21 років.
16
Симетричні системи мають перевагу над асиметричними у
швидкості шифрування, що дозволяє їм залишатися актуальними,
незважаючи на більш слабкий механізм передачі ключа (одержувач
повинен знати секретний ключ, який необхідно передати по вже
налагодженому зашифрованому каналу. У той же час, в
асиметричних шифрах відкритий ключ, необхідний для
шифрування, можуть знати всі, і немає необхідності передачі
ключа шифрування).
17
Приклади блочних криптоалгоритмів:
1. На основі мережі Фейстеля:
DES, 3DES, RC2, RC5, RC6, Blowfish, FEAL, CAST-128, TEA,
XTEA, XXTEA
2. На основі SP-мережі (Substitution-Permutation network, мережа
підстановок-перестановок):
AES (Rijndael), 3-Way, Kalyna (ДСТУ), PRESENT, SAFER,
SHARK, and Square
18
4.2.2 Асиметричні криптоалгоритми
19
Електроний цифровий підпис (ЕЦП)
21
Недоліки симетричних криптоалгоритмів:
• Складність управління ключами у великій мережі. Це означає
квадратичне зростання числа пар ключів, які треба генерувати,
передавати, зберігати і знищувати в мережі. Для мережі в 10
абонентів потрібно 45 ключів, для 100 вже 4950, для 1000 - 499500 і
т. д.
• Складність обміну ключами. Для застосування необхідно вирішити
проблему надійної передачі ключів кожному абоненту, тому що
потрібен секретний канал для передачі кожного ключа обом
сторонам.
Для компенсації недоліків симетричного шифрування в даний час
широко застосовується комбінована (гібридна) криптографічна схема,
де за допомогою асиметричного шифрування передається сеансовий
ключ, що використовується сторонами для обміну даними за
допомогою симетричного шифрування.
Важливою властивістю симетричних шифрів є неможливість їх
використання для підтвердження авторства, так як ключ відомий кожній
стороні.
22
4.3 Блочний шифр DES
DES (Data Encryption Standard) — це симетричний алгоритм
шифрування даних, стандарт шифрування прийнятий урядом США
із 1976 до кінця 1990-х, з часом набув міжнародного застосування.
Ще з часу свого розроблення алгоритм викликав неоднозначні
відгуки. Оскільки DES містив засекречені елементи своєї структури,
породжувались побоювання щодо можливості контролю з боку
Національного Агентства Безпеки США (National Security Agency).
Алгоритм піддавався критиці за малу довжину ключа, що, врешті,
після бурхливих обговорень та контролю академічної громадськості,
не завадило йому стати загальноприйнятим стандартом. DES дав
поштовх сучасним уявленням про блочні алгоритми шифрування та
криптоаналіз.
23
Зараз DES вважається ненадійним в основному через малу довжину
ключа (56 біт) та розмір блоку (64 біти). У 1999 ключ DES було
публічно дешифровано за 22 години 15 хвилин. Вважається, що
алгоритм достатньо надійний для застосування у модифікації 3DES,
хоча існують розроблені теоретичні атаки. На сьогоднішній день
DES майже повністю витіснений алгоритмом AES, що з 2002 року є
стандартом США.
24
1972 року було проведено дослідження потреби уряду США у
комп'ютерній безпеці. Американське «національне бюро
стандартів» (НБС) (нині відоме як NIST — «Національний
інститут стандартів і технологій») визначило необхідність
загальнодержавного стандарту шифрування некритичної
інформації.
28
4.4 Особливості роботи шифру DES
DES є блоковим шифром. Щоб зрозуміти, як працює DES, необхідно
розглянути принцип роботи блокового шифру та мережу Фейстеля.
29
Блокові шифри реалізуються шляхом багаторазового застосування
до блоків вихідного тексту деяких базових перетворень.
Базові перетворення:
- складне перетворення на одній локальній частині блоку;
- просте перетворення між частинами блоку.
30
В DES дані шифруються блоками по 64 біти - 64 бітний блок
відкритого тексту подається на вхід алгоритму, а 64-бітний блок
шифрограми отримується в результаті роботи алгоритму. Крім того, як
під час шифрування, так і під час дешифрування використовується
один і той самий алгоритм (за винятком дещо іншого шляху
утворення робочих ключів).
Ключ має довжину 56 біт (як правило, в вихідному вигляді ключ має
довжину 64 біти, де кожний 8-й біт є бітом паритету, крім того, ці
контрольні біти можуть бути винесені в останній байт ключа).
Ключем може бути довільна 64-бітна комбінація, яка може бути
змінена у будь-який момент часу. Частина цих комбінацій вважається
слабкими ключами, оскільки може бути легко визначена. Безпечність
алгоритму базується на безпечності ключа.
На найнижчому рівні алгоритм є нічим іншим, ніж поєднання двох
базових технік шифрування: перемішування (перестановки) і
підстановки. Цикл алгоритму, з яких і складається DES є комбінацією
цих технік, як об'єкти перемішування виступають біти тексту, ключа і
блоків підстановок. 31
Лавинний ефект (англ. Avalanche effect) — поняття в криптографії, яке
зазвичай застосовується до блокових шифрів і криптографічних хеш-
функцій. Важлива криптографічна властивість для шифрування, що
означає, що зміна значення малої кількості бітів у вхідному тексті або в
ключі веде до «лавинної» зміни значень вихідних бітів шифротексту.
Інакше кажучи, це залежність всіх вихідних бітів від кожного вхідного
біта.
Термін «лавинний ефект» вперше введений Хорстом Фейстелем у статті
Cryptography and Computer Privacy, опублікованій у журналі Scientific
American у травні 1973, хоча концептуальне поняття використовувалося
ще Шенноном.
Початкова
Вихідний блок
перестановка
разів
Цикл Ключі
шифрування
Кінцева Зашифрований
перестановка блок
36
Цикли шифрування
Отриманий після початкової перестановки 64-бітовий блок IP(T)
бере участь у 16 циклах перетворення Фейстеля.
38
Аргументами функції f є 32-бітовий вектор Ri-1 та 48-бітовий
ключ ki, який є результатом перетворення 56-бітового вихідного
ключа шифру k. Для обчислення функції f послідовно
використовуються:
• функція розширення E,
• додавання за модулем 2 з ключем ki
• перетворення S, що складається з 8 перетворень S-блоків S1, S2,
S3…S8,
• перестановка P.
39
Табл. 4.2 Функція розширення Е
Перші три біти вектора E(Ri-1) є бітами 32, 1, 2
вектора Ri-1.
По таблиці 4.2 видно, що біти 1, 4, 5, 8, 9, 12, 13, 16,
17, 20, 21, 24, 25, 28, 29, 32 дублюються. Останні 3
біти вектора E(Ri-1) — це біти 31, 32, 1 вектора Ri-1.
40
Таблиця 4.3 Перетворення Si, i=1…8
41
Продовження таблиці 4.3
42
Припустимо, що B3=101111, і хочемо знайти B'3.
Перший і останній розряди B3 є двійковим записом числа а,
0<=a<=3, середні 4 розряди представляють число b, 0<=b<=15.
Рядки таблиці S3 нумеруються від 0 до 3, стовпці таблиці S3
нумеруються від 0 до 15. Пара чисел (а, b) визначає число, що
знаходиться у перетині рядка а та стовпця b. Двійкове представлення
цього числа дає B’3.
43
Табл. 4.4 Перестановка P
45
При розшифруванні
даних усі дії виконуються
у зворотному порядку.
У 16 циклах
розшифрування, на
відміну від шифрування
за допомогою прямого
перетворення мережею
Фейстеля,
використовується
зворотне перетворення
мережею Фейстеля.
47
Через невелику кількість можливих ключів (всього 256),
з'являється можливість їхнього повного перебору на швидкодіючій
обчислювальній техніці за реальний час. 1998 року Electronic
Frontier Foundation, використовуючи спеціальний комп'ютер DES-
Cracker, вдалося зламати DES за 3 дні.
48
49
Слабкі ключі DES наведені в таблиці в шістнадцятковій формі.
Слабкі ключі
Для кожного слабкого ключа існує 232 нерухомі точки, тобто таких 64-бітових блоків
х, для яких
50
Відомі атаки на DES
• Метод повного перебору вимагає одну відому пару шифрованого та
розшифрованого тексту, незначний обсяг пам'яті, і його виконання
вимагає близько 255 кроків.
• Диференціальний криптоаналіз – першу таку атаку на DES заявили
Біхам та Шамір.
Ідея: із множини відкритих текстів (шифротекстів) обирати пари із
заданою різницею та на підставі аналізу кожної пари знаходити
можливі варіанти ключа.
Ця атака вимагає шифрування 247 відкритих текстів, вибраних
нападником, для її виконання потрібні приблизно 247 кроків.
Теоретично, ця атака непрактична через надмірні вимоги до підбору
даних і складність організації атаки за вибраним відкритим текстом.
Самі автори цієї атаки Biham та Shamir заявили, що вважають DES
захищеним для такої атаки.
51
• Лінійний криптоаналіз розроблено Мицуру Мацуи (1993).
Ідея: будуються співвідношення між відкритим текстом, шифротекстом
та ключем (лінійна апроксимація) та застосовуються із відомими
парами відкритий текст – шифротекст.
Цей метод дозволяє вирахувати ключ DES за допомогою аналізу 243
відомих відкритих текстів, при цьому потрібно приблизно 243 кроків для
виконання. Перший експериментальний криптоаналіз DES, заснований
на відкритті Мацуи, успішно виконано протягом 50 днів на
автоматизованих робочих місцях 12 HP 9735.
52
ЛЕКЦІЯ 5
з дисципліни “Основи криптографії”
2
Подвійний DES (2DES)
Подвійний DES - Double DES, 2DES - симетричний алгоритм,
заснований на класичному DES, але з використанням двох
послідовних операцій шифрування з різними ключами.
3
Очікувалося, що 2DES дасть значний приріст криптостійкості
алгоритму у порівнянні з класичним DES, але це не так.
Отже, ключ 2DES дорівнює 112 біт, але для його саму потрібно не
більше 257 операцій (не 2112).
Причина цього - 2DES не стійкий до атаки meet-in-the-middle
(“зустріч посередині”).
4
Атака meet-in-the-middle
5
На перший погляд здається, що застосування подвійного
шифрування багаторазово збільшує стійкість всієї схеми,
оскільки перебирати тепер потрібно два ключі, а не один. У разі
алгоритму DES стійкість збільшується з 256 до 2112. Однак це не
так. Атакуючий може скласти дві таблиці:
6
Після цього, зловмиснику достатньо лише знайти збіги у цих
таблицях, тобто такі значення m1 і m2, що .
Кожен збіг відповідає набору ключів (K1,K2), який задовольняє
умови, оскільки
7
Потрійний DES
Triple DES (3DES) - симетричний блоковий шифр, створений
Уітфілдом Діффі, Мартіном Хеллманом і Уолтом Тачманном в 1978 на
основі алгоритму DES з метою усунення головного недоліку
останнього - малої довжини ключа (56 біт). Стійкість алгоритму з
таким коротким ключем вже на той момент викликала підозри, адже
він міг бути зламаний методом повного перебору з розвитком
цифрової техніки через якийсь час.
8
3DES є простим способом усунення недоліків DES. Алгоритм 3DES
побудований на основі DES, тому для його реалізації можна
використовувати програми, створені для DES. Офіційна назва
алгоритму, що використовується в стандартах - TDEA або Triple DEA
(Triple Data Encryption Algorithm). Однак термін «3DES»
використовується ширше постачальниками, користувачами та
розробниками криптосистем.
9
Схема 3DES має вигляд , де k1,k2,k3 -
ключі для кожного шифру DES.
10
При виконанні алгоритму ключі 3DES можна обрати так:
- незалежні
- незалежні
-
11
Найпопулярніший тип при використанні 3DES - це DES-EDE3.
Виконуються операції шифрування, дешифрування та знову
шифрування з трьома різними ключами
Шифрування:
Розшифровування:
12
DES-EEE3 – шифрування
виконується три рази з
трьома різними ключами
DES-EEE2 – як DES-EEE3,
але на першому і третьому
кроці використовується один
ключ
DES-EDE2 – як DES-EDE3,
але на першому і третьому
кроці використовується
однаковий ключ
13
3DES - це досить популярна альтернатива DES.
Він був реалізований у багатьох Інтернет-додатках та бібліотеках,
зокрема PGP, OpenSSL, S/mime. Також 3DES використовується в
стандартах управління ключами ANSI X9.17 та ISO 8732 та в PEM
(Privacy Enhanced Mail). 3DES набув широкого застосування в
індустрії електронних платежів, яка активно розробляла та
публікувати стандарти, засновані на ньому (наприклад, EMV).
Microsoft OneNote, Microsoft Outlook 2007 та Microsoft System Center
Configuration Manager 2012 використовують 3DES для захисту даних
системи та користувачів за допомогою паролів.
14
Тим не менш, останніми роками 3DES активно виводиться із
застосування. Хоча досі Багато систем безпеки продовжують
підтримувати як 3DES, так і AES (діючий на сьогоднішній день
стандарт шифрування), але при цьому за умовчанням
використовується AES. Хоча 3DES може підтримуватись для
зворотної сумісності, він більше не рекомендований для
використання.
15
Чому NIST забороняє використовувати 3DES
16
When Triple DES is used with three independent keys, it has a key length of 168 bits (3
x 56-bit DES keys = 168 independent key bits). Due to meet-in-the-middle attacks,
however, the effective security 3TDEA provides is only 112 bits. Also, the small block
size of 64 bits makes it vulnerable to block collision attacks when it's used to encrypt
large amounts of data with the same key, such as an HTTPS session.
In 2016, researchers successfully exploited Triple DES' short block size (https://
nvd.nist.gov/vuln/detail/CVE-2016-2183) in various real-world protocols via a birthday
attack called Sweet32 (https://sweet32.info) As a result, NIST restricted Triple DES use
in 2017 to 8 MB of data using a single key bundle (set of 3 keys). This meant it could
no longer effectively be used for TLS, IPsec or large file encryption.
17
5.2 Стандарт шифрування AES
Алгоритм повинен:
1) бути симетричним;
2) бути блоковим;
3) мати довжину блока 128 біт і
підтримувати три довжини
ключа: 128, 192 і 256 біт.
18
1. Історія появи AES
Алгоритми-фіналісти
Алгоритм Хто створив Країна
MARS IBM US
RC6 R.Rivest & Co US
Rijndael V.Rijmen & J.Daemen BE
Serpent Universities IS, UK, NO
TwoFish B.Schneier & Co US
19
1. Історія появи AES
У жовтні 2000 р. конкурс
завершився. Переможцем став
бельгійський алгоритм Rijndael,
після чого був затверджений як
стандарт та отримав назву AES
(2001 рік)
20
2. Математична база
Поле Галуа
Скінченне поле 𝐺𝐹 28 складається з многочленів вигляду
𝑎(𝑥) = 𝑎7 𝑥 7 + 𝑎6 𝑥 6 + 𝑎5 𝑥 5 + 𝑎4 𝑥 4 + 𝑎3 𝑥 3 + 𝑎2 𝑥 2 + 𝑎1 𝑥 + 𝑎0 ,
де 𝑎𝑖 ∈ 0,1 .
У вигляді многочлена 𝑎(𝑥) скінченого поля 𝐺𝐹 28 можна
подати будь-який байт, що складається з бітів 𝑎7 𝑎6 𝑎5 𝑎4 𝑎3 𝑎2 𝑎1 𝑎0 .
Приклад 2.1:
Байт: 01011010.
Многочлен: 0 ⋅ 𝑥 7 + 1 ⋅ 𝑥 6 + 0 ⋅ 𝑥 5 + 1 ⋅ 𝑥 4 + 1 ⋅ 𝑥 3 + 0 ⋅ 𝑥 2 + 1 ⋅ 𝑥1 + 0 =
= 𝑥 6 +𝑥 4 + 𝑥 3 + 𝑥.
21
2. Математична база
Додавання байтів
∀𝑎 𝑥 , 𝑏 𝑥 ∈ 𝐺𝐹(28 )
𝑎 𝑥 + 𝑏 𝑥 = 𝑐 𝑥 = 𝑐7 𝑥 7 + 𝑐6 𝑥 6 + 𝑐5 𝑥 5 + 𝑐4 𝑥 4 + 𝑐3 𝑥 3 + 𝑐2 𝑥 2 +
𝑐1 𝑥 + 𝑐0 ,
де 𝑐𝑖 = 𝑎𝑖 ⊕ 𝑏𝑖
1 0 1 1 0 0 0 1
Приклад 2.2: ⊕
1 0 0 0 1 1 1 1
У двійковій формі:
0 0 1 1 1 1 1 0
У вигляді многочленів додавання коефіцієнтів при однакових
степенях відбувається за модулем 2 𝟏 ∙ 𝒙𝟕 + 𝟏 ∙ 𝒙𝟕 = (𝟏 ⊕ 𝟏) ∙ 𝒙𝟕 = 𝟎 ∙ 𝒙𝟕 :
𝒙𝟕 + 𝒙𝟓 + 𝒙𝟒 + 𝟏 + 𝒙𝟕 + 𝒙𝟑 + 𝒙𝟐 + 𝒙 + 𝟏 = 𝒙𝟓 +𝒙𝟒 + 𝒙𝟑 + 𝒙𝟐 + 𝒙
22
2. Математична база
Множення байтів
23
2. Математична база
Приклад 2.3:
(𝑥 6 + 𝑥 5 + 𝑥 4 + 𝑥 2 ) ⋅ (𝑥 7 + 𝑥 5 + 𝑥 4 + 𝑥) = 𝑥 13 + 𝑥 11 + 𝑥 10 + 𝑥 7 + 𝑥 12 + 𝑥 10 + 𝑥 9 +
+𝑥 6 + 𝑥 11 + 𝑥 9 + 𝑥 8 + 𝑥 5 + 𝑥 9 + 𝑥 7 + 𝑥 6 + 𝑥 3 = 𝑥 13 + 𝑥 12 + 𝑥 9 + 𝑥 8 + 𝑥 5 + 𝑥 3
(𝑥 13 + 𝑥 12 + 𝑥 9 + 𝑥 8 + 𝑥 5 + 𝑥 3 ) 𝑚𝑜𝑑 (𝑥 8 + 𝑥 4 + 𝑥 3 + 𝑥 + 1) = 𝑥 7 + 𝑥 6 + 𝑥 5 + 𝑥 + 1
24
Алгоритм AES побудовано на основі SP-мережі.
26
S-блок заміщує маленький блок вхідних біт інший блок вихідних біт. Ця заміна
має бути взаємно однозначною, щоб гарантувати оборотність. Призначення S-
блоку полягає у нелінійному перетворенні, що перешкоджає проведенню
лінійного криптоаналізу. Однією з властивостей S-блоку є лавинний ефект, тобто
зміна одного біта на вході призводить до зміни всіх бітів на виході.
P-блок (англ. permutation box or P-box) - перестановка всіх біт: блок отримує на
вхід результат перетворення S-блоку, міняє місцями всі біти і подає результат в
S-блок наступного раунду. Важливою якістю P-блоку є можливість розподілити
вихідний результат одного S-блоку між входами якомога більшої кількості S-
блоків.
28
3. Алгоритм AES
Блок проміжного s0 , 0 s0 ,1 s0 , 2 s0 , 3
результату називають
станом s1, 0 s1,1 s1, 2 s1, 3
s s2 ,1 s2 , 2 s2 , 3
Матриця стану має 4 рядки та 2,0
s s3,1 s3, 2 s3, 3
4 стовпці (Nb) 3, 0
Приклад 3.4: 41 43 20 53
Відкритий текст: A SECRET MESSAGE 20 52 4D 41
У шістнадцятковому вигляді: 53 45 45 47
41 20 53 45 43 52 45 54 20 4D 45 53 53 41 47 45 45 54 53 45
29
3. Алгоритм AES
Матриця ключа при Nk=4:
Ключ: матриця байтів, яка
має 4 рядки і кількість
стовпців (Nk), що дорівнює k0 , 0 k0 ,1 k0 , 2 k0 , 3
довжині ключа, поділеній k1, 0 k1,1 k1, 2 k1, 3
на 32 k k2 ,1 k2 , 2 k2 , 3
2,0
k k3,1 k3, 2 k3, 3
3, 0
30
3. Алгоритм AES
Кількість раундів шифрування Nr залежить
від значень Nk
Nk Nb Nr
(Довжина (Довжина (Кількість
ключа) блоку) раундів)
AES-128 4 (128) 10
AES-192 6 (192) 4 (128) 12
AES-256 8 (256) 14
31
3. Алгоритм AES
Зашифрування за алгоритмом AES
32
3. Алгоритм AES
Підстановка байтів
𝑦0 1 0 0 0 1 1 1 1 𝑥0 1
𝑦1 1 1 0 0 0 1 1 1 𝑥1 1
𝑦2 1 1 1 0 0 0 1 1 𝑥2 0
2. Над утвореним байтом 𝑦3
=
1 1 1 1 0 0 0 1 𝑥
⋅ 𝑥
3
⊕
0
.
𝑦4
виконують перетворення: 𝑦5
1 1 1 1 1 0 0 0
𝑥
4 0
0 1 1 1 1 1 0 0 5 1
𝑦6 0 0 1 1 1 1 1 0 𝑥6 1
𝑦7 0 0 0 1 1 1 1 1 𝑥7 0
33
3. Алгоритм AES
На основі двох попередніх перетворень створено спеціальну
таблицю замін байтів, що називається S-боксом
EA 04 65 85 87 F2 4D 97
83 45 5D 96 EC 6E 4C 90
5C 33 98 B0 4A C3 46 E7
F0 2D AD C5 8C D8 95 A6
34
3. Алгоритм AES
Зсув рядків
Кількість зсувів
0-го 1-го 2-го 3-го 87 F2 4D 97 87 F2 4D 97
Nb
рядка рядка рядка рядка EC 6E 4C 90 6E 4C 90 EC
(-) (С1) (С2) (С3) 4A C3 46 E7 46 E7 4A C3
8C D8 95 A6 A6 8C D8 95
4 0 1 2 3
35
3. Алгоритм AES
Перемішування стовпців
𝑏0 02 03 01 01 𝑎0
𝑏1 01 02 03 01 𝑎1
𝑐(𝑥) = 0316 ⋅ 𝑥 3 + 0116 ⋅ 𝑥 2 + 0116 ⋅ 𝑥 + 0216 = ⋅ 𝑎
𝑏2 01 01 02 03 2
𝑏3 03 01 01 02 𝑎 3
36
3. Алгоритм AES
0216 = 0000 00102 → 𝑥
02 03 01 01 87 F2 4D 97 47 40 A3 4C
8716 = 1000 01112 → 𝑥 7 + 𝑥 2 + 𝑥 +1
01 02 03 01 6E 4C 90 EC 37 D4 70 9F 0316 = 0000 00112 → 𝑥 +1
01 01 02 03 46 E7 4A C3 94 E4 3A 42 6E16 = 0110 11102 → 𝑥 6 + 𝑥 5 + 𝑥 3 + 𝑥 2 + 𝑥
03 01 01 02 A6 8C D8 95 ED A5 A6 BC 4616 = 0100 01102
A616 = 1010 01102
({02} ∙ {87}) ⊕ ({03} ∙ {6E}) ⊕ ({01}∙ {46}) ⊕ ({01}∙ {A6}) = (0000 0010 ∙ 1000 0111) ⊕ (0000 0011 ∙ 0110 1110) ⊕
⊕ 0100 0110 ⊕1010 0110 = 00010101 ⊕ 10110010 ⊕ 0100 0110 ⊕ 1010 0110 = 01000111=4716
37
3. Алгоритм AES
Додавання раундового ключа
47 40 A3 4C DC 9B 97 38 9B DB 34 74
Раундовий ключ 37 D4 70 9F 90 49 FE 81 A7 9B 8E 1E
отримують з 94 E4 3A 42 37 DF 72 15 A3 3B 48 57
розширеного ключа ED A5 A6 BC B0 E9 3F A7 5D 4C 99 1B
шифру
38
3. Алгоритм AES
Генерація ключів
Розширений ключ – масив 4-байтових
слів, які позначають 𝑊[𝑖]
39
3. Алгоритм AES
Розширення ключа
0F 47 0C AF
1. Перші Nk 4-байтових слів 𝑊 𝑖 послідовно 15 D9 B7 7F
вибираються з ключа шифру: 0-е слово – перші 71 E8 AD 67
чотири байти, 1-е слово – другі чотири байти і т.д C9 59 D6 98
W0 W1 W2 W3
2. Якщо 𝑖 кратне Nk:
AF 7F
2. 1. У слові 𝑊 𝑖 − 1 виконують циклічний зсув
7F 67
байтів за схемою:
67 98
𝑎, 𝑏, 𝑐, 𝑑 → 𝑏, 𝑐, 𝑑, 𝑎 де 𝑎, 𝑏, 𝑐, 𝑑 – байти 98 AF
W3
40
3. Алгоритм AES
Розширення ключа
7F D2
2.2. До кожного з 4-х байтів одержаного
67 85
слова застосовують S-бокс D2 01 D3
98 46
85 00 85
AF 79
2.3. До результату додають раундову сталу 46 00 46
Rcon за модулем 2 79 00 79
0F D3 DC
15 85 90
3. Решту слів 𝑊 𝑖 визначають за формулою:
71 46 37
𝑊 𝑖 = 𝑊 𝑖 − 𝑁𝑘 ⊕𝑊 𝑖 − 1
C9 79 B0
W0 W4
41
3. Алгоритм AES
Дешифрування за алгоритмом AES
I. Перед першим раундом дешифрування
виконується операція додавання з ключем
II. Nr-1 раундів, кожен з яких кожен з яких
здійснює такі операції:
1. Зсув рядків в зворотному порядку;
2. Обернена операція до операції підстановки байтів;
3. Процедура, зворотна процедурі перемішування
стовпців;
4. Додавання раундового ключа
42
3. Алгоритм AES
Зсув рядків в зворотному порядку
Байти в останніх трьох рядках матриці зсуваються циклічно
вліво на різне число байт
Кількість зсувів
0-го 1-го 2-го 3-го
Nb
рядка рядка рядка рядка
(-) (С1) (С2) (С3)
4 0 1 2 3
43
3. Алгоритм AES
Обернена операція до операції підстановки байтів
Байти матриці замінюються новими значеннями за таблицею
зворотної заміни, що є інвертованим S-боксом
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 52 09 6A D5 30 36 A5 38 BF 40 A3 9E 81 F3 D7 FB
1 7C E3 39 82 9B 2F FF 87 34 8E 43 44 C4 DE E9 CB
2 54 7B 94 32 A6 C2 23 3D EE 4C 95 0B 42 FA C3 4E
3 08 2E A1 66 28 D9 24 B2 76 5B A2 49 6D 8B D1 25
4 72 F8 F6 64 86 68 98 16 D4 A4 5C CC 5D 65 B6 92
5 6C 70 48 50 FD ED B9 DA 5E 15 46 57 A7 8D 9D 84
6 90 D8 AB 00 8C BC D3 0A F7 E4 58 05 B8 B3 45 06
7 D0 2C 1E 8F CA 3F 0F 02 C1 AF BD 03 01 13 8A 6B
8 3A 91 11 41 4F 67 DC EA 97 F2 CF CE F0 B4 E6 73
9 96 AC 74 22 E7 AD 35 85 E2 F9 37 E8 1C 75 DF 6E
A 47 F1 1A 71 1D 29 C5 89 6F B7 62 0E AA 18 BE 1B
B FC 56 3E 4B C6 D2 79 20 9A DB C0 FE 78 CD 5A F4
C 1F DD A8 33 88 07 C7 31 B1 12 10 59 27 80 EC 5F
D 60 51 7F A9 19 B5 4A 0D 2D E5 7A 9F 93 C9 9C EF
E A0 E0 3B 4D AE 2A F5 B0 C8 EB BB 3C 83 53 99 61
F 17 2B 04 7E BA 77 D6 26 E1 69 14 63 55 21 0C 7D
44
3. Алгоритм AES
Процедура, зворотна процедурі перемішування стовпців
𝑎0 0𝑒 0𝑏 0𝑑 09 𝑏0
𝑐 −1 𝑥 = 0𝑏16 ⋅ 𝑥3 + 0𝑑16 ⋅ 𝑥2 + 0916 ⋅ 𝑥 + 0𝑒16 𝑎1 09 0𝑒 0𝑏 0𝑑 𝑏
𝑎2 = ⋅ 1
0𝑑 09 0𝑒 0𝑏 𝑏2
𝑎3 0𝑏 0𝑑 09 0𝑒 𝑏3
45
Візуалізація роботи алгоритму AES:
46
4. Режими виконання блокових шифрів
При цьому для шифрування одного блоку можуть використовуватись дані іншого блоку.
Зазвичай режими шифрування використовуються для зміни процесу шифрування так, щоб результат
шифрування кожного блоку був унікальним незалежно від даних, що шифруються, і не дозволяв
зробити які-небудь висновки про їх структуру. Це зумовлено, перш за все, тим, що блокові шифри
шифрують дані блоками фіксованого розміру, і тому існує потенційна можливість витоку інформації
про частини даних, що повторюються, шифруються на тому самому ключі.
47
4. Режими виконання блокових шифрів
Режим простої заміни (ECB, Electronic Coding Book)
С𝑖 = 𝐸𝑘 𝑃𝑖 𝑃𝑖 = 𝐷𝑘 𝐶𝑖
48
4. Режими виконання блокових шифрів
Режим простої заміни (ECB, Electronic Coding Book)
+ Незалежне (паралельне) шифрування блоків
– При використанні одного ключа ідентичні блоки відкритого тексту
шифруються в ідентичні блоки зашифрованого тексту
– Перестановка блоків зашифрованого тексту спричинює
перестановку відповідних блоків відкритих текстів
49
Приклад збереження статистичних особливостей відкритого тексту (оскільки
однаковим блокам шифротексту відповідають однакові блоки відкритого тексту).
50
4. Режими виконання блокових шифрів
Режим зв’язування блоків (CBC, Cipher Block Chaining)
С1 = 𝐸𝑘 𝑃1 ⊕𝐼𝑉 𝑃1 = 𝐷𝑘 𝐶1 ⊕𝐼𝑉
С𝑖 = 𝐸𝑘 𝑃𝑖 ⊕С𝑖−1 𝑃𝑖 = 𝐷𝑘 𝐶𝑖 ⊕С𝑖−1
51
52
Розглянемо приклад роботи режиму шифрування CBC. Нехай
в якості криптоперетворення задано гамування з блоком
ключа: K={0101101} та вектор ініціалізації IV={1111111}
Відкритий текст
53
Недоліки CBC:
• Помилка в одному блоці може поширюватися на інші блоки.
• Можливість визначення початку зміни даних по зміні шифротексту
(якщо порівняти шифротексти двох повідомлень з тим самим ключем, то
номер першого блоку, у якому шифротексти різняться, буде відповідати
номеру першого блоку, у якому розрізняються вихідні повідомлення)
• Можливість зміни блоку шифротексту Ci-1 шляхом зміни блоку
повідомлення Pi
• неможливість розпаралелювання шифрування (оскільки для шифрування
кожного i-го блоку потрібен блок, зашифрований на попередньому кроці
(блоки пов'язані між собою)).
54
Переваги CBC:
• постійна швидкість обробки блоків (швидкість визначається
ефективністю реалізації шифру; час виконання операції «xor» дуже
малий);
• відсутність статистичних особливостей, характерних для режиму ECB
(оскільки кожен блок відкритого тексту «змішується» із блоком
шифротексту, отриманому на попередньому кроці шифрування);
• можливість розпаралелювання розшифрування.
56
Режим шифрування РСВС (Propagating Cipher Block Chaining)
57
РСВС має специфічну властивість - помилка шифротексту призводить до неправильного
дешифрування всіх наступних блоків. Це означає, що перевірка стандартного блоку наприкінці
повідомлення забезпечує цілісність всього повідомлення. Завдяки цій властивості РСВС
застосовувався у протоколі аутентифікації Kerberos та дозволяв виявляти помилки. Пізніше
замінений на CBC.
Звісно, цей режим не позбавлений недоліків. Перестановка двох блоків шифротексту призводить
до неправильної розшифровки двох відповідних блоків відкритого тексту, але через XOR над
відкритим текстом і шифротекстом подальші помилки компенсуються. Тому, якщо під час
перевірки цілісності перевіряються лише кілька останніх блоків розшифрованого тексту, можна
отримати частково зіпсоване повідомлення. 58
4. Режими виконання блокових шифрів
Режим зі зворотнім зв’язком по шифротексту
(CFB, Cipher Feedback)
CFB перетворює блоковий шифр у потоковий, що
самосинхронізується.
Попередньо зашифрований блок С𝑖−1 шифрується ще раз і додається
за модулем 2 з 𝑃𝑖
59
4. Режими виконання блокових шифрів
Режим зі зворотнім зв’язком по шифротексту
(CFB, Cipher Feedback)
+ Можливість шифрувати блоки довжиною менше n біт (не потрібне
доповнення блоків)
+ – Помилка у відкритих даних впливає на всі подальші зашифровані
дані, але самоусувається в ході розшифрування
60
4. Режими виконання блокових шифрів
Режим зі зворотнім зв’язком по виходу (OFB, Output
Feedback)
61
4. Режими виконання блокових шифрів
Режим зі зворотнім зв’язком по виходу (OFB, Output
Feedback)
+ Можливість шифрувати блоки довжиною менше n біт (не потрібне
доповнення блоків)
+ Помилка у відкритих даних не впливає на всі подальші
зашифровані дані
– Не дозволяє одночасно шифрувати декілька блоків
62
4. Режими виконання блокових шифрів
Режим лічильника (CTR, Counter Mode)
С𝑖 = 𝑃𝑖 ⊕𝐸𝑘 (𝐶𝑡𝑟𝑖−1 )
𝑃𝑖 = 𝐶𝑖 ⊕𝐷𝑘 𝐶𝑡𝑟𝑖−1
𝐶𝑡𝑟𝑖−1 =IV|Nonce
63
4. Режими виконання блокових шифрів
Режим лічильника (CTR, Counter Mode)
64
5.3 Алгоритм шифрування “Калина”
Стандарт розроблено у
співпраці Держспецзв'язку, ПАТ «Інститут
інформаційних технологій» та провідних
українських науковців на чолі із Горбенком І. Д.
65
1. Алгоритм шифрування «Калина»
66
1. Алгоритм шифрування «Калина»
Основні характеристики
67
1. Алгоритм шифрування «Калина»
Розмір блоку 128, 256 або
Матриця стану при Nb = 2:
512 бітів
𝑠0,0 𝑠0,1
𝑠1,0 𝑠1,1
Матриця стану має 8 рядків 𝑠2,0 𝑠2,1
та Nb стовпців байтів (64 𝑠3,0 𝑠3,1
Nb біт), що являють собою 𝑠4,0 𝑠4,1
елементи поля 𝐺𝐹 28 𝑠5,0 𝑠5,1
𝑠6,0 𝑠6,1
𝑠7,0 𝑠7,1
68
1. Алгоритм шифрування «Калина»
Заповнення матриці стану (128 біт)
69
1. Алгоритм шифрування «Калина»
Довжина ключа може бути
Матриця ключа при Nk = 4:
128, 256 або 512 бітів
70
1. Алгоритм шифрування «Калина»
Кількість раундів шифрування алгоритму «Калина»
71
1. Алгоритм шифрування «Калина»
Зашифрування за алгоритмом «Калина»
I. Додавання з нульовим ключем по модулю K0
264 SubBytes
II. Nr-1 раундів, кожен з яких складається з ShiftRows
чотирьох етапів: MixColumns
1. Підстановка байтів;
Nr-1 разів Ki
2. Зсув рядків;
SubBytes
3. Перемішування стовпців;
ShiftRows
4. Додавання раундового ключа по модулю 2
MixColumns
III. Завершальний раунд Nr, в якому замість ⊕
Kn
виконується додавання по модулю 264
72
1. Алгоритм шифрування «Калина»
Додавання з нульовим підключем по модулю 264
Операція ⊞ забезпечує побітове додавання раундового
ключа до матриці стану за модулем 264.
73
1. Алгоритм шифрування «Калина»
Приклад 1.1:
1816 + 8616 = 9E16
Приклад 1.2:
6D16 + 9B16 = 10816 → 0816
74
1. Алгоритм шифрування «Калина»
Підстановка байтів
Кожен байт матриці стану замінюється відповідно до заданої
таблиці підстановки (загалом є 4 таблиці)
75
1. Алгоритм шифрування «Калина»
76
1. Алгоритм шифрування «Калина»
До байтів одного рядка
поточного стану
застосовується одна й та
сама підстановка.
𝑠0,𝑖 0-рядок 0
𝑠1,𝑖 1-рядок 1
𝑠2,𝑖 2-рядок 2
𝑠3,𝑖 3-рядок 3
𝑠4,𝑖 4-рядок 0
𝑠5,𝑖 5-рядок 1 Результат підстановки для значення 5А –
𝑠6,𝑖 6-рядок 2 це число 66, що знаходиться в таблиці на
𝑠7,𝑖 7-рядок 3 перетині 6-го рядка та 11 стовпця.
77
1. Алгоритм шифрування «Калина»
Зсув рядків
Рядки стану циклічно зсувають праворуч на різну кількість
байтів, залежно від розміру блока
Номер
Значення зсуву, байтів
Довжина блоку Довжина блоку Довжина блоку
рядка
128 бітів 256 бітів 512 бітів
0 0 0 0
1 0 0 1
2 0 1 2
3 0 1 3
4 1 2 4
5 1 2 5
6 1 3 6
7 1 3 7
78
1. Алгоритм шифрування «Калина»
a a
b b a a
c c b b
d d c c
e e d d
f f e e
a a
g g f f
b b
h h g g
c c
h h
d d
Зсув рядків 128-
бітового блоку e e Зсув рядків 512-
f f бітового блоку
g g
h h
79
1. Алгоритм шифрування «Калина»
Перемішування стовпців
𝑏0 08 06 07 04 𝑎0
01 01 05 01
𝑏1 04 01 01 05 01 08 06 07 𝑎1
𝑏2 07 04 01 01 05 01 08 06 𝑎2
Або у матричному
𝑏3 06 07 04 01 01 05 01 08 ⋅ 𝑎3
вигляді: 𝑏4
=
08 06 07 04 01 01 05 01 𝑎4
𝑏5 01 08 06 07 04 01 01 05 𝑎5
𝑏6 05 01 08 06 07 04 01 01 𝑎6
𝑏7 01 05 01 08 06 07 04 01 𝑎7
80
1. Алгоритм шифрування «Калина»
Для множення у полі 𝐺𝐹(28 ) алгоритм «Калина»
використовує нерозкладний многочлен
𝑚 𝑥 = 𝑥 8 + 𝑥 4 + 𝑥 3 + 𝑥 2 +1
Наприклад, результат 01 01 05 01 08 06 07 04 A8 4D
04 01 01 05 01 08 06 07 14 A7
множення фіксованої 07 04 01 01 05 01 08 06 C4 4F
матриці на один 06 07 04 01 01 05 01 08 ⋅ 5E = 33
деякий стовпець 08 06 07 04 01 01 05 01 B4 C3
01 08 06 07 04 01 01 05 57 48
матриці стану матиме 05 01 08 06 07 04 01 01 BB 5F
вигляд: 01 05 01 08 06 07 04 01 1F 0C
81
1. Алгоритм шифрування «Калина»
Додавання раундового ключа по модулю 2
82
1. Алгоритм шифрування «Калина»
Nb+Nk+1 (const)
Розгортання ключів K
SubBytes
ShiftRows
1. З ключа шифрування K формується допоміжний ключ MixColumns
Kt з довжиною, що дорівнює розміру блока (64 Nb K
біт) з використанням трьох раундів зашифрування. SubBytes
ShiftRows
83
1. Алгоритм шифрування «Калина»
K
Розгортання ключів Kt+tmvi
SubBytes
2. На основі ключа K та допоміжного ключа Kt ShiftRows
формуються раундові ключі K2i (з парними індексами) MixColumns
довжиною, що дорівнює розміру блока (64 Nb біт), з
Kt+tmvi
використанням двох раундів зашифрування для
SubBytes
кожного раундового ключа.
ShiftRows
MixColumns
У якості раундових ключів використовується результат Kt+tmvi
додавання по модулю 264 допоміжного ключа Kt та
K2i
змінної tmvi – двійкове значення, яке залежить від
індексу раундового ключа, який формується.
84
1. Алгоритм шифрування «Калина»
Розгортання ключів
85
1. Алгоритм шифрування «Калина»
Дешифрування за алгоритмом «Калина»
I. Виконуються операції з п. II, але на початку Kn
замість ⊕ виконується віднімання по модулю InvMixColumns
264 з ключем останнього раунду
InvShiftRows
II. Nr-1 раундів, кожен з яких складається з InvSubBytes
чотирьох етапів: Nr-1 разів Ki
1. Додавання раундового ключа за модулем 2;
2. Зворотна операція до перемішування стовпців; InvMixColumns
3. Зсув рядків в зворотному порядку; InvShiftRows
4. Обернена операція до підстановки байтів. InvSubBytes
III. Віднімання з ключем нульового раунду по K0
модулю 264
86
1. Алгоритм шифрування «Калина»
Операція, зворотна операції перемішування стовпців
87
1. Алгоритм шифрування «Калина»
Зсув рядків в зворотному порядку
Рядки стану циклічно зсувають ліворуч на різну кількість
байтів, залежно від розміру блока
Номер
Значення зсуву, байтів
Довжина блоку Довжина блоку Довжина блоку
рядка
128 бітів 256 бітів 512 бітів
0 0 0 0
1 0 0 1
2 0 1 2
3 0 1 3
4 1 2 4
5 1 2 5
6 1 3 6
7 1 3 7
88
1. Алгоритм шифрування «Калина»
a a
b b a a
c c b b
d d c c
e e d d
a a
f f e e
b b
g g f f
c c
h h g g
d d
h h
Зворотний зсув e e
89
1. Алгоритм шифрування «Калина»
Обернена операція до операції підстановки байтів
Кожен байт матриці стану замінюється відповідно до заданої
таблиці зворотної заміни
90
1. Алгоритм шифрування «Калина»
91
2. Режими роботи «Калина»
Стандарт ДСТУ 7624:2014 (Калина) визначає алгоритм
симетричного блокового перетворення для забезпечення
конфіденційності і (або) цілісності даних
№
Назва режиму Позначення Послуга безпеки
режиму
Проста заміна (базове
1 ЕСВ Конфіденційність
перетворення)
2 Гамування CTR Конфіденційність
Гамування зі зворотнім
3 CFB Конфіденційність
зв’язком за шифротекстом
4 Вироблення імітовставки СМАС Цілісність
5 Зчеплення шифроблоків CBC Конфіденційність
92
2. Режими роботи «Калина»
№
Назва режиму Позначення Послуга безпеки
режиму
Гамування зі зворотнім
б OFB Конфіденційність
зв’язком за шифрогамою
Вибіркове гамування із Конфіденційність і цілісність
7 прискореним виробленням GСМ, GМАС (GСМ), тільки цілісність
імітовставки (GМАС)
Вироблення імітовставки і Цілісність і
8 CCM
гамування конфіденційність
93
ЛЕКЦІЯ 6
з дисципліни “Основи криптографії”
ТЕМА “СИМЕТРИЧНІ
КРИПТОАЛГОРИТМИ. ПОТОКОВЕ
ШИФРУВАННЯ”
1. Загальні відомості про потокові шифри
С𝑖 = 𝑃𝑖 ⊕𝐾𝑖 𝑃𝑖 = 𝐶𝑖 ⊕𝐾𝑖
1. Загальні відомості про потокові шифри
Синхронні потокові шифри
коефіцієнтами 0 або 1
2. Генератори псевдовипадкових чисел
Алгоритм LFSR
1. У регістр записується початкове значення.
2. Обчислюється XOR відповідних бітів (відводів).
3. Обчислений біт записується до першої позиції регістру ліворуч.
4. Усі решта біт зсуваються на одну позицію праворуч.
5. Останній біт з правого боку усувається з регістру і стає черговим
бітом псевдовипадкової послідовності.
6. Алгоритм повторюється з 2 кроку.
2. Генератори псевдовипадкових чисел
Приклад 2.2:
Номер Внутрішній стан Результат обчислення Біт, псевдовипадкової
стану QRST ST послідовності
1 1011 0 1
2 0101 1 1
3 1010 1 0
4 1101 1 1
5 1110 1 0
6 1111 0 1
7 0111 0 1
8 0011 0 1
9 0001 1 1
10 1000 0 0
2. Генератори псевдовипадкових чисел