Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Технології захисту інформації - копия

.pdf
Скачиваний:
258
Добавлен:
17.03.2016
Размер:
6.65 Mб
Скачать

3.Цілісність IV в CBC. Незважаючи на те, що вектор ініціалізації IV

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

4.7.3.Шифрування в режимі Electronic Feedback, CFB

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

У CFB-режимі на вхід подається k-бітний ключ K, n-бітний IV, послідовність r-бітних блоків відкритого тексту P = p1, p2, …, pu , де 1 r n. На виході формуються r-бітні блоки шифротексту C = c1, c2, …, cu...

Шифрування здійснюється таким способом. Спочатку здійснюється запис у буфер зворотного зв’язку, записується значення IV– I1=IV. Потім для всіх 1 i u виконуються такі операції:

1. Обчислення функції шифрування:

Oi = Ek(Ii).

2. Вибірка r крайніх ліворуч бітів результату шифрування Oi:

ti = Oi ~ r,

де Oi~r означає оперцію вибірки.

3. Формування і передача r-бітного блоку шифротексту сi:

сi = pi ti.

4. Формування змінного зворотного зв’язку із блоку шифротексту, відповідно до виразу:

Ii+1 = 2rIi сi mod2n.

131

Ця операція еквівалентна зсуву значення буферного регістра Ii на r-бітів вправо і запису в кінець регістра r-бітного блоку сi. Розшифрування виконується відповідно:

Pi = ci ti; i = 1,…,u,

де ti, Oi і Ii обчислюються відповідно до виразів, наведених вище і I1= IV.

На рис. 4.26 подана схема CFB-режиму.

r-бітний зсув

r-бітний зсув

 

I1 = ІV

Ii

r

Iі- 1

r

 

 

 

n

 

 

 

Ключ

Е

 

D

 

Ключ

 

 

 

 

 

 

n

 

n

 

ti

 

Oi

ti

Oi

 

 

r

 

 

 

 

Рі

 

Cі

 

Рі

=Pi

 

 

 

 

Рис. 4.26. Режим зворотного зв’язку за шифротекстом

Зазначимо, що фактично необхідно мати ще й буфер зворотного зв’язку для зберігання ci-1, що звичайно вибирається рівним n.

CFB-режим має такі властивості:

1.Шифрування ідентичних відкритих текстів. Як і в CBC-режимі шифрування, зміна IV приводить до різних результатів шифрування того самого відкритого тексту. Значення IV не обов’язково повинне бути секретним, хоча непередбачуваність IV є бажаною в деяких додатках.

2.Вплив зчеплення. Аналогічно з CBC-режимом шифрування механізм зчеплення приводить до того, що блок шифротексту ci залежить від двох блоків відкритого тексту pi і pi-1. Отже, перевпорядкування блоків шифротексту впливає на дешифрування. Правильне дешифрування

правильних блоків шифротексту вимагає одержання n/k правильних попередніх блоків шифротексту для того, щоб регістр зворотного зв’язку містив правильне значення.

132

3. Розмноження помилок. Одна або більше помилок у будь-якому одиничному r-бітному блоці шифротексту ci впливає на дешифрування наступних n/k блоків шифротексту, тобто поки не буде закінчена обробка n бітів шифротексту, після яких помилковий блок ci буде висунутий з регістра зворотного зв’язку. Відновлений відкритий текст pi’ буде відрізнятися від pi точно в тих же позиціях, у яких відбулися помилки в ci. Інші некоректно відновлені блоки відкритого тексту звичайно будуть випадковими векторами, тобто матимуть 50 % помилкових бітів. У такий спосіб противник може здійснити передбачувані зміни бітів у pi шляхом зміни відповідних бітів у ci.

4.Відновлення помилок. CFB-режим, як і CBC-режим, що самосинхронізується, але вимагає одержання n/k блоків шифротексту для відновлення синхронізації.

5.Продуктивність. Для r < n продуктивність зменшується в n/r разів (порівняно з CBC), тому що кожне шифрування E забезпечує формування тільки r бітів шифротексту на виході.

Розглянутий режим є режимом роботи з r-бітними вхідними символами і r-бітним зворотним зв’язком. Цей режим схожий з режимом

CFB, стандартизованим для DES (NBS FIPS Pub 81 і ANSI X3.106) і

позначається як CFB r-бітний символ/r-бітний зворотний зв’язок. Стандарт ISO/IEC 10118:1991 визначає більш загальний CFB-режим. При використанні цього режиму може здійснюватися обробка j-бітних

блоків відкритого тексту при r-бітному зворотному зв’язку, причому j r. Таким чином, для реалізації режиму необхідно вибрати величину зворотного зв’язку r (1 r n) і величину блоку відкритого тексту j(1 j r).

На вхід надходить k-бітний ключ K, n-бітний IV, послідовність j-бітних блоків відкритого тексту P = p1, p2, …, pu. На виході алгоритму формуються j-розрядні блоки шифротексту C = c1, c2,…,cu.

Шифрування здійснюється відповідно до таких операцій.

Перед шифруванням здійснюється запис у регістр зворотного зв’язку значення вектора ініціалізації I1 = IV.

Для всіх 1 i u виконуються такі операції: 1. Обчислення функції шифрування:

Oi = Ek(Ii).

2. Вибірка j лівих бітів величини Oi: ti = Oi ~j.

3. Формування блоку шифротексту: ci = pi+ti.

133

4. Формування змінного зворотного зв’язку із блоку шифротексту ci шляхом його доповнення ліворуч r-j одиницями:

Fi = F(1)( r-j) ci,

де F(1)( r-j) – блок з r-j одиниць;– операція конкатенції.

5. Зсув регістра Ii на r-бітів вліво і запис Fi у регістр:

Ii+1 = 2rIi+Fi mod 2n.

Зазначимо, що для i = u операції 4 і 5 не виконуються. Розшифрування виконується в аналогічному порядку, за винятком

того, що: Pi = ci ti.

На рис. 4.27 подано схематичне зображення функціонування алгоритму шифрування в CFB-режимі за ISO/IEC 10118:1991.

І, нарешті, у другій редакції стандарту ISO/IEC 10116:1997 була запропонована узагальнена версія CFB-режиму. Стандартизований режим забезпечує "конвеєрну обробку даних".

У раніше розглянутих версіях CFB-режиму результат шифрування одного блоку відкритого тексту є входом для шифрування наступного блоку. Це означає, що неможливі "конвеєрні" обчислення, тобто неможливо приступити до шифрування одного блоку до закінчення обробки попереднього блоку. Щоб уникнути цого недоліку, у нову версію CFBрежиму уведений уже m-розрядний буфер зворотного зв’язку, де 2n m n. Також для роботи необхідний m-розрядний IV.

r-бітний зсув

Fi-1

 

 

 

r-бітний зсув

 

 

 

 

 

 

 

 

I1 = ІV

Ii

r

 

 

 

 

Iі- 1

r

 

 

n

 

r

 

 

 

Сi-1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ключ

Е

 

 

 

 

 

D

Ключ

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

n

ti

 

Oi

F(1) (r-j)

ci

F(1) (r-j)

ci

ti

Oi

 

j

 

 

j

 

 

j

 

Рі

 

Cі

 

 

 

 

 

 

 

 

 

 

Рі =Pi

 

 

 

 

 

 

 

 

Рис. 4.27. Режим CFB – j-бітний відкритий текст /r-бітний

зворотний зв’язок (j/r CFB-режим)

134

На вхід алгоритму надходять: k-розрядний ключ K, m-розрядний IV, послідовність j-розрядних блоків відкритого тексту P = p1, p2, …, pu. На виході алгоритму формується послідовність j-розрядних блоків закритого тексту C = c1, c2 ,…,cu. Спочатку здійснюється запис у буфер зворотного зв’язку (регістр зсуву Ii). Значення вектора ініціалізації I1=IV.

Далі для всіх i = 1, u виконуються такі операції:

1.Вибірка n кратних ліворуч біт з регістра зсуву I:Xi = Ii n.

2.Обчислення функції шифрування E:Oi = Ek(Xi).

3.Вибірка j кратних ліворуч бітів з величини Oi:ti = Oi j.

4.Формування і передача блоку закритого тексту: Ci = pi ti.

5.Формування змінного зворотного зв’язку із блоку шифротексту ci

шляхом його доповнення ліворуч r – j одиницями: Fi = F(1)( r – j) ci.

6. Зрушення вмісту буфера зворотного зв’язку I на r розрядів вліво і запис Fi у регістр: Ii+1 = 2rIi + Fi mod 2n.

Дешифрування виконується аналогічним чином, за винятком операції 4, а саме: Pi = ci ti.

На рис. 4.28 схематично поданий CFB-режим за ISO/IEC 10116. Зазначимо також, що в другій редакції ISO/IEC 10116 рекомендується обирати j = r.

r-бітний зсув

Fi-1

 

 

 

r-бітний зсув

 

 

 

 

 

 

 

 

I1 = ІV

Ii

r

 

 

 

 

Iі- 1

r

 

 

n

 

r

 

 

 

Сi-1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ключ

Е

 

 

 

 

 

D

Ключ

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

n

ti

 

Oi

F(1) (r-j)

ci

F(1) (r-j)

ci

ti

Oi

 

j

 

 

j

 

 

j

 

Рі

 

Cі

 

 

 

 

 

 

 

 

 

 

Рі =Pi

 

 

 

 

 

 

 

 

Рис. 4.28. Режим CFB за ISO/IEC 10116 з конвеєрною

обробкою даних

135

4.7.4. Шифрування в режимі Output Feedback, OFB

Цей режим подібний режиму CFB. Різниця полягає в тому, що вихід алгоритму в режимі OFB подається назад у регістр зсуву, тоді як у режимі CFB у регістр зсуву подається результат застосування операції XOR до незашифрованого блоку і результату алгоритму.

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

Недолік OFB у тому, що він більш уразливий до атак модифікації потоку повідомлень, ніж CFB.

Режим OFB може бути використаний для додатків, у яких повинне бути виключене будь-яке розмноження помилок. Режим схожий з режимом CFB і дозволяє шифрувати блоки різної довжини, але як зворотний зв’язок використовується не блок шифротексту, а шифрований блок з виходу функції E.

Поширено дві версії OFB-режиму роботи n-розрядного блокового шифру. Версія ISO/IEC 10116: 1997 (ISO/IEC 10118: 1991) вимагає n-розрядного зворотного зв’язку (повний зворотній зв’язок) і є більш стійкою. Раніше була прийнята версія NBS FIPS 81, що дозволяє r n розрядний зворотний зв’язок. На рис. 4.29 подана схема OFB-режиму за

ISO/IEC 10116: 1997.

 

 

r-бітний зсув

 

 

r-бітний зсув

I1 = ІV

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ii

r

 

 

 

Iі- 1

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

Ключ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ключ

 

 

 

 

 

Е

 

 

 

D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ti

 

 

 

Oi

 

 

ti

 

Oi

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

Рі

 

 

 

 

Cі

 

 

 

 

 

 

Рі =Pi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.29. Режим OFB r-бітний відкритий текст/n-бітний

зворотний зв’язок (r/n – OFB-режим)

136

У цій версії OFB-режиму на вхід алгоритму надходять: k-бітний ключ K, n-розрядний IV, послідовність r-розрядних блоків відкритого тексту P = p1, p2, …, pu, 1 r n ... На виході формується послідовність r- розрядних блоків шифротексту. При дешифруванні відновлюється відкритий текст.

Шифрування здійснюється в такий спосіб. Спочатку в регістр Ii записується значення IV. Потім для 1 i u виконуються:

1.Обчислення шифрованого блоку:Oi = Ek(Ii).

2.Вибірка r крайніх ліворуч бітів величини Oi. Допускають, що крайній біт визначений як 1:

ti = Oi ~ r.

3.Передача r-розрядного блоку шифротексту ci:ci = pi ti.

4.Відновлення змісту регістра зсуву Ii: Ii+1 = Oi.

При розшифруванні встановлюють I1=IV і для всіх 1 i u після одержання блоку ci здійснюють ті ж дії за винятком операції 3, що має

вигляд: pi = ci ti.

При реалізації режиму OFB за NBS FIPS B1 на вхід алгоритму надходять: k-бітний ключ K, n-розрядний IV, послідовність r-розрядних блоків відкритого тексту P = p1, p2,…,pu, де 1 r n. На виході формується послідовність r-розрядних блоків шифротексту C = c1, c2

,…,cu.

Алгоритм шифрування і розшифрування аналогічний розглянутим вище, за винятком того, що операція відновлення регістра Ii+1 = Oi замінюється на операцію зсуву змісту регістра і запису в нього значення ti:

Ii+1 = 2rIi + ti mod2n.

Розглянемо властивості OFB-режиму:

1.Шифрування ідентичних відкритих текстів. Як і в CBC і в CFBрежимах шифрування, зміна IV приводить до різних результатів шифрування того самого відкритого тексту.

2.Вплив зчеплення. Ключовий потік є незалежним від відкритого

тексту.

3.Розмноження помилок. Одна або більше бітових помилок у будьякому символі шифротексту ci, впливає на дешифрування тільки цього символу, і точно в тих же бітових позиціях, у яких виявилися помилки в ci.

Утакий спосіб забезпечується повне відновлення бітів відкритого тексту.

137

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

5.Продуктивність. Для r < n продуктивність зменшується в n/r разів (як і в CFB-режимі). Однак у всіх випадках, оскільки ключовий потік не залежить від відкритого й закритого тексту, він може бути обчислений заздалегідь за заданим ключем й IV.

6.Зміна IV в OFB. Вектор ініціалізації, що не є секретним, повинен змінюватися, якщо в OFB-режимі повторно використовується ключ K. У протилежному випадку буде сформований ідентичний ключовий потік, і шляхом додавання за модулем 2 (XOR) відповідних шифртекстів противник може прийти до криптоаналізу, у якому шифр буде з нескінченним ключем, де як ключ використовується відкритий текст.

У такий спосіб, виходячи із властивостей режиму, на практиці OFBрежим використовується тільки для забезпечення конфіденційності. У спрощеному OFB-режимі виводять відновлення вхідного блоку як функцію лічильника, тобто: Ii+1 = Ii+1.

Це дозволяє уникнути проблему так званого короткого циклу, і забезпечити відновлюваність після помилок в обчисленні E. Більше того, це забезпечує властивість випадкового доступу: не обов’язково дешифрувати i-ий блок шифротексту для того, щоб дешифрувати i + 1-ий блок.

Раніше версія ISO-режиму була більш стійка, ніж версія NBS FIPS.

ВOFB-режимі з повним n-розрядним зворотним зв’язком ключовий потік генерується з використанням ітеративної функції Oi = Ek( Oi – 1). Оскільки

Ek є перестановкою й при припущенні, що k є випадковою величиною, Ek дійсно є випадковим вибором з множини (2n)! перестановок за n елементами. Може бути показано, що для фіксованих (випадкових) значень ключа й вектора ініціалізації очікувана довжина циклу перед повторенням будь-якого значення Oi дорівнюватиме 2n – 1. З іншого боку, якщо кількість бітів зворотного зв’язку дорівнює r < n, як визначено в FIPS 81, то ключовий потік формуватиметься з використанням ітерації Oi = f ( Oi – 1), де f не є функцією перестановки. Допускаючи її поводження як випадкової функції, очікувана довжина циклу складе величину близько 2n/2. Отже, кращим є використання OFB-режиму з повним n-роз- рядним зворотним зв’язком. Нарешті необхідно відзначити, що і OFB-режим

138

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

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

Режим CBC також можна розглядати як потоковий шифр із n- розрядними блоками, що відіграють роль дуже великих символів. У такий спосіб режими роботи дозволяють побудувати потокові шифри на основі блокових шифрів.

4.7.5. Шифрування в режимах удосконаленого OFB і РСВС

Відомі недоліки привели до появи вдосконаленого варіанта шифрування в режимі OFB [14 – 17; 56]. Основні зміни стосуються методу генерації незалежної послідовності блоків: для одержання чергового блоку пропонується шифрувати не si, а si + IV(mod 264), де IV деякий вектор ініціалізації.

Режим шифрування РОВС (Propagating Cipher Block Chaining)

застосовується в протоколі Kerberos (версія 4) і дозволяє виявляти помилки. Цей режим шифрування не є федеральним або міжнародним стандартом. Режим РОВС – варіант режиму СВС, що володіє специфічною властивістю,

– у результаті розшифрування одинична помилка поширюється на весь шифротекст (вирішується зворотне завдання з погляду режиму OFB). Ця властивість дозволяє з високою надійністю виявляти помилки, що виникають при передачі повідомлень каналами з шумом. Шифрування в режимі РОВС виконується за правилом: сi = Ek(pi pi-1 ci-1), розшифрування: pi = Dk(сi) сi-1 pi-1, де p0 c вектор ініціалізації.

4.8. Сучасні потокові шифри, їх переваги та недоліки

Міцні шифри перетворюють відкритий текст у шифротекст по одному біту за операцію.

Генератор потоку ключів видає потік бітів: k1, k2, k3,..., ki. Цей потік бітів (іноді називаний ключем, що біжить) і потік бітів відкритого тексту p123,...,рi зазнають операції ХОR, в результаті якої виходить потік бітів шифротексту: ci pi ki .

139

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

ключів: pi ci ki .

Безпека системи повністю залежить від властивостей генератора потоку ключів. Якщо генератор потоку ключів видає нескінченний рядок нулів, шифротекст збігатиметься відкритим текстом і перетворення буде безглуздим. Якщо генератор потоку ключів видає повторюваний 16-бітовий шаблон, криптостойкість буде зневажливо мала. У випадку нескінченного потоку випадкових бітів криптостойкість потокового шифру буде еквівалентна криптостійкості одноразового блокноту. Генератор потоку ключів створює бітовий потік, який схожий на випадковий, але в дійсності детермінований і може бути безпомилково відтворений при розшифруванні. Чим ближче вихід генератора потоку ключів до випадкового, тим вища трудоємність криптоаналітичної атаки.

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

4.8.1. Регістри зсуву зі зворотним зв’язком

Більшість реальних потокових шифрів заснована на регістрах зсуву зі зворотним зв’язком.

Регістр зсуву застосовують для генерації ключової послідовності. Регістр зсуву зі зворотним зв’язком складається із двох частин: регістру зсуву і функції зворотнього зв’язку (рис. 4.30).

bn

b

...

b

b

2

b

 

 

n 1

 

3

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

Функція зворотного зв'язку

Рис. 4.30. Регістр зсуву зі зворотним зв’язком

140