Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Звіт
про виконання лабораторної роботи №3
з курсу “Методи та засоби криптологічних перетворень ”
5.4. Режими роботи DES
Блоковий шифр, подібний DES або Rijndael, можна по-різному використовувати для шифрування рядків даних. Незабаром після DES в США був прийнятий ще один федеральний стандарт, що рекомендує чотири способи експлуатації алгоритму DES для шифрування даних. З тих пір ці режими стали загальноприйнятими і застосовуються з будь-якими блоковими шифрами. Перерахуємо їх.
ECB. Цей режим простий в обігу, але слабо захищений від можливих атак з видаленнями і вставками. Помилка, допущена в одному з бітів шифротекста, впливає на цілий блок в розшифрованому тексті.
СВС — якнайкращий спосіб експлуатації блокового шифру, оскільки призначений для запобігання втратам в результаті атаки з використанням видалень і вставок. Тут помилковий біт шифротекста при расшифровании не тільки перетворює на помилковий блок, в якому міститься, але і псує один біт в наступному блоці відкритого тексту, що можна легко визначити і інтерпретувати як сигнал про зроблену атаку.
OFB. При такому методі блоковий шифр перетворюється на потоковий. Режим володіє тією властивістю, що помилка в один біт, що просочилася в шифротекст, дає тільки один помилковий біт в розшифрованому тексті.
CFB. Як і у попередньому випадку, тут блоковий шифр трансформується в потоковий. Окрема помилка в криптограмі при цьому впливає як на блок, в якому вона була допущена, так і на наступний блок, як при режимі СВС.
Розберемо кожен із стандартних режимів шифрування детально.
5.4.1. Режим ЕСВ
Режим ЕСВ (Electronic Code Book — електронна кодова книга) є простим серед стандартних способів використання блокового шифру. Дані , які належить зашифрувати, діляться на блоки по бітів:
Останній з них, при необхідності, доповнюють до довжини . По ним визначаються блоки як результат дії шифруючої функції
як показано на рис. 5.8. Розшифрування тут — просте звернення попередньої операції (див. рис. 5.9).
З режимом ЕСВ пов'язаний ряд проблем. Перша виникає через те, що при рівності ми отримаємо однакові блоки шифротекста , тобто однакові блоки на вході індукують співпадаючі блоки на виході. Це, дійсно, проблема, оскільки шаблонні початок і кінець повідомлень співпадають. Друга проблема пов'язана з тим, що видалення з повідомлення якого-небудь блоку не залишає слідів, і атакуючий може таким чином спотворити передавану інформацію. Третя дуже близька до другої, але пов'язана зі вставкою блоків з інших повідомлень.
Щоб краще уявити собі ці проблемы, візьмемо найпростішу модель шифру, у якій блок відповідає слову, і припустимо, що відкрите повідомлення
Плати Алісі сто фунтів
Не плати Бобу двісті фунтівв зашифрованому вигляді виглядає так:
У КІШКИ ЧОТИРИ НОГИ,
А У ЛЮДИНИ ДВІ НОГИ.
Ми можемо тепер змусити одержувача сплатити Алісі дві сотні фунтів, замість однієї, відправивши йому повідомлення
У КІШКИ ДВІ НОГИ,
яке отримане з першого заміною одного з блоків на блок з другого повідомлення. Крім того, ми можемо припинити виплати Алісі, поставивши блок «А» шифротекста на початок першого повідомлення. Сподіваюся, Ви відмітили, що «А» — шифрований варіант частинки «не» відкритого тексту. Поміркуєте, як ми можемо спонукати одержувача криптограми виплатити Бобу двісті фунтів.
Таким атакам можна протистояти, додаючи контрольні суми декількох блоків відкритого тексту або використовуючи режим, при якому до кожного блоку шифротекста додається «контекстний ідентифікатор».
5.4.2. Режим СВС
Один з шляхів обходу проблем, що виникають при використанні режиму ECB, полягає в «зачепленні» шифру, тобто в додаванні до кожного блоку шифротекста контекстного ідентифікатора. Найпростіший спосіб зробити це — застосувати режим «зчеплення блоків шифру» або СВС (скорочення від «Cipher Block Chaining*).
У цьому режимі відкритий текст, як завжди, розбивається на серію блоків:
.
Як і в попередньому режимі, останній блок може мати доповнення, щоб довжина відкритого тексту стала кратній довжині блоку. Шифрування здійснюється згідно формулам
при
(див. рис. 5.10).
Зверніть увагу на те, що в обчисленні першого блоку шифротекста бере участь величина IV (початкове значення), яку слід віднести до завдання шифруючій функції. Величину IV привертають до шифрування для того, щоб шифровані версії однакових частин відкритого тексту виглядали по-різному. Немає необхідності приховувати значення IV, і на практиці її передають у відкритому вигляді як частину повідомлення.
Звичайно, величина IV бере участь і в розшифруванні. Цей процес виглядає таким чином (рис. 5.11):
при .
Нагадаємо, що при шифруванні в режимі ECB помилка в одному знаку шифротекста, що з'являється на стадії передачі повідомлення, вплине на весь блок, в якому вона допущена, і він, звичайно, буде розшифрований невірно. У разі режиму СВС, як видно з формул, помилковий знак вплине не тільки на свій блок, але і на відповідний біт в наступному блоці.
5.4.3. Режим OFB
Режим, званий «зворотним зв'язком по виходу», або OFB (Output Feedback), адаптує блоковий шифр до його потокового використання. Для цього вибирається змінна , що позначає число бітів на виході генератора потоку ключів при кожній ітерації. За допомогою блокового шифру створюється потік ключів, бітів за один раз. Рекомендується брати рівне , оскільки при цьому очікувана довжина періоду потоку ключів виходить більшою, ніж при інших значеннях.
Як і раніше, ми розбиваємо відкритий текст на серію блоків:
Але цього разу, на відміну від попередніх випадків, блоки складаються з бітів. Процес шифрування відбувається по наступній схемі (рис. 5.12).
Перш за все, змінній присвоюється початкове значення IV. Потім, при робляться перетворення:
крайніх зліва бітів блоку ,
,
.
Розшифрування відбувається аналогічно (див. рис. 5.13).
5.4.4. Режим CFB
Останній режим, який ми розглянемо, носить назву «Зворотнього зв'язку по шифротексту» або CFB(Cipher FeedBack). Він схожий на режим OFB, але блоковий шифр в ньому трансформується в потоковий. Нагадаємо, що в попередньому режимі початок потоку ключів виходить із значення IV, а решта потоку формується покроково, в результаті шифрування значення шифруючої функції, визначеного на попередній стадії. У випадку CFB потік ключів виникає в результаті ще одного шифрування блоків криптограми (мал. 5.14):
крайніх зліва бітів блоку .
Ми не розбиратимемо процедуру розшифрування, залишивши її як вправу.