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

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

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

Розширення ключа

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

Основний принцип полягає в такому:

загальна кількість бітів раундового ключа дорівнює довжині блоку, помноженій на кількість раундів плюс 1 (наприклад, для довжини блоку в 128 бітів і 10 раундів необхідно 1 408 раундових ключів);

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

перший раундовий ключ складається з перших Nb слів, другий – з наступних Nb слів, і т. д.

4.6.4. Алгоритм "Калина"

Алгоритм "Калина" подібний до Rijndael, однак він має деякі вдосконалення з метою збільшення криптостійкості.

Основні відмінності "Калини" від Rijndael полягають в такому: збільшена кількість циклів шифрування; використано додавання за

модулем 232 і за модулем 2 для введення ключової інформації для покращення захисту від алгебраїчних атак, лінійного та диференціального криптоаналізів, інтерполяційної атаки тощо; використано 8 блоків нелінійного перетворення (S-блоків) замість одного для додаткового захисту від алгебраїчних атак, покращення властивостей розсіювання шифру; використання випадково сформованих S-блоків, відібраних за критеріями стійкості до диференціального, лінійного криптоаналізу та степені нелінійності булевих функцій; принципово нова схема розгортання ключа для захисту від всіх відомих атак на схеми вироблення підключів; досить висока продуктивність.

Усі модифікації спрямовані на збільшення стійкості та перекриття потенційних вразливостей Rijndael, що виявлено останніми роками.

Структура алгоритму

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

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

121

Таблиці підстановки (вузли нелінійного перетворення).

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

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

Можливе використання довільних S-блоків (відмінних від наведених

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

Крім того, можливе використання S-блоків як додаткового секретного ключа.

Блок лінійного перетворення.

Уякості лінійного перетворення використовується МДР-перетво- рення, що добре зарекомендувало себе як з точки зору розсіювання, так і з точки зору продуктивності на сучасних 64-бітних процесорах. Так, вже на двох раундах шифрування забезпечується повна залежність кожного біта від вхідних даних. Ці характеристики кращі, ніж у Rijndael 256/256, де потрібна більша кількість циклів для поширення різниці на весь блок.

До недоліків такого підходу слід віднести менш ефективну реалізацію на 32-бітних процесорах.

Операція розгортання ключа

Оскільки процедура розгортання ключа Rijndael має певні значні недоліки [21], то в шифрі "Калина" розроблено зовсім нову процедуру вироблення раундових підключів. Вона задовольняє такі вимоги: нелінійність залежності кожного біта підключа від кожного біта головного ключа повинна забезпечити усі необхідні лавинні властивості та відсутність "проміжних точок"; забезпечує стійкість до всіх відомих атак на схеми вироблення підключів; не має слабких ключів, які призводять до погіршення криптографічних властивостей шифру; відновлення майстерключа за одним або декількома підключами неможливе; процедура розгортання дозволяє просту реалізацію з використанням циклового перетворення шифру; обчислювальна складність генерації всіх підключів не повинна перевищувати складності однієї операції шифрування;

122

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

4.6.5. Алгоритм "Лабіринт"

Алгоритм "Лабіринт" є ітеративним шифром, тобто основу його процедури шифрування становить циклове перетворення, що повторюється задану кількість разів (позначимо число циклів шифрування символом r). Кожен цикл складається із двох абсолютно ідентичних ітерацій, однак, з огляду на те, що для зашифрування одного блоку потрібно, як мінімум, дві ітерації, поняття циклу не співпадає з поняттям ітерації. Крім циклового перетворення процедура шифрування включає початкове (IT) і кінцеве (FT) перетворення. Властивість інволютивності шифру досягається за рахунок застосування класичної конструкції напівблокової сітки Фейстеля (рис. 4.23).

P<128n>

 

 

 

 

 

 

 

 

 

 

IT

 

 

 

 

 

 

 

 

 

KIT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L(0)<64n>

 

 

 

 

 

 

 

R(0)<64n>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

K(0)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

K(1)

 

 

 

 

F

R(2r)

<64n>

L(2r)

<64n>

FT

 

 

KFT

 

 

 

 

 

 

 

C<128n>

Рис. 4.23. Структура процедури шифрування EF

123

Алгоритм "Лабіринт", незалежно від довжини блоку й ключа, використовує фіксовану кількість ітерацій шифрування – 16 (або, інакше кажучи, 8 циклів, тобто r = 8).

Процедура шифрування EF складається із трьох кроків:

1.Вихідний блок даних Р (довжиною 128n бітів) обробляється початковим (IT) перетворенням на ключі KIT.

2.Результат 1-го кроку розбивається на два напівблоки довжиною по 64n біти: лівий L ("старший") і правий R ("молодший"). Отримана пара напівблоків перетвориться у шифротекст за 16 ітерацій (8 циклів) сітки Фейстеля. Всі ітерації повністю ідентичні й побудовані на базі загального нелінійного перетворення – F-функції, керованої ключем ітерації K(i).

3.Два напівблоки L і R, отримані в результаті 8-циклового ітеративного перетворення, міняються місцями й обробляються кінцевим (FT) перетворенням на ключі KFT. Отриманий після FT перетворення двійковий вектор C (довжиною 128n бітів) є криптограмою.

Базова F-функція.

Циклова F-функція складається з чотирьох елементарних перетворень: додавання слів напівблоку зі словами ключа ітерації за модулем 264; фіксована байтова перестановка Р; нелінійна підстановка байтів напівблоку;

фіксоване перетворення лінійного перемішування. Докладно ці перетворення розглянуті у [22].

Процедура розгортання ключа.

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

Процедура ініціалізації полягає в завантаженні вихідного ключа в буфер робочого ключа та доповнення цього ключа до повного заповнення буфера ключовим матеріалом, сформованим з вихідного ключа. Для формування "додаткового" ключового матеріалу використовується базова F-функція шифратора, на базі якої побудований простий криптографічний генератор псевдовипадкових послідовностей – вихідний ключовий матеріал циклічно зашифровується в режимі "зв’язування шифроблоків" (СВС-режим).

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

124

Алгоритм "Лабіринт" задовольняє вимоги максимального класу стійкості, відповідно до умов проекту NESSIE (довжина блоку не менше 128 бітів, довжина ключа не менш 256 бітів). Структура алгоритму "Лабіринт" дозволяє ефективно його реалізувати як на 64-бітних, так і на 32-бітних мікропроцесорах. З огляду на останні досягнення у сфері спеціалізованих мікроконтролерів, а саме тенденцію переведення смарткарт на 32-бітні архітектури та оснащення їх криптоприскорювачем, даний алгоритм може бути ефективно реалізований у тому числі і на смарт-картах. З іншого боку, обрана конструкція алгоритму забезпечує можливість ефективної апаратної реалізації, при цьому можливо істотне зниження витрат енергонезалежної пам’яті за рахунок апаратної реалізації операції множення в полі Галуа GF(28) і зниження обчислювальної складності за рахунок відсутності операцій фіксованого зсуву. Крім того, алгоритм побудований на базі класичного сітки Фейстеля, що забезпечує інволютивність шифруючого перетворення, і можливість використання загального апаратного рішення для процедур зашифрування та розшифрування.

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

Можливість довільного вибору параметрів вузла заміни (S-блоку) і лінійного MBN-перетворення, у межах строго визначених обмежень до їх криптографічних показників, дозволяє, з одного боку, усунути потенційну небезпеку уведення "закладок" з боку автора алгоритму, а з іншого боку – забезпечує можливість введення додаткового секретного параметра, якщо параметри зазначених елементів становлять довгостроковий секретний ключ. Такі довгострокові ключі можуть формуватись за спеціальною методикою, що забезпечує контроль, не тільки мінімальних, а й додаткових критеріїв "фільтрації". Формування довгострокових ключів для державних організацій може виконуватися відповідним уповноваженим органом і поставлятися користувачам у встановленому порядку.

Алгоритм "Лабіринт" може використовуватися в кожному з п’яти стандартних режимів застосування блокових шифрів, а також в посиле-

125

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

4.7. Основні режими роботи DES (ECB, CBC, CFB, OFB,

режим генерування імітовставки)

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

ECB – Electronic Codebook – кожний блок з 64 бітів незашифрованого тексту шифрується незалежно від інших блоків із застосуванням алгоритму симетричного шифрування. Типові додатки – безпечна передача одиночних значень (наприклад, криптографічного ключа).

CBC – Cipher Block Chaining – вхід криптографічного алгоритму є результатом застосування операції XOR до наступного блоку незашифрованого тексту і попереднього блоку зашифрованого тексту. Типові додатки – загальна блок-орієнтована передача, автентифікація.

CFB – Cipher Feedback – при кожній ітерації алгоритму обробляється J бітів вхідного значення. Попередній зашифрований блок використовується як вхід в алгоритм; до J бітів виходу алгоритму і наступного незашифрованого блоку з J бітів застосовується операція XOR, результатом якої є наступний зашифрований блок з J бітів. Типові додатки – потокоорієнтована передача, автентифікація.

OFB – Output Feedback – аналогічний CFB, за винятком того, що на вхід алгоритму при шифруванні наступного блоку подається результат шифрування попереднього блоку; тільки після цього виконується операція XOR із черговими J бітами незашифрованого тексту. Типові додатки – потокоорієнтована передача за зашумленим каналом (наприклад, супутниковий зв’язок).

4.7.1. Шифрування в режимі Electronic Code Book, ECB

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

126

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

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

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

Перетворення відкритого тексту Ру закритий текст Сі здійснюється за формулою:

C = Ek(P),

де C – n-бітний блок шифортексту;

K секретний ключ для блокового шифру; P – n-бітний блок відкритого тексту.

Аналогічним чином маємо зворотне перетворення:

P = Dk(C),

також справедливе співвідношення виду:

P = Dk(Ek(P)).

Режим електронної кодової книги. Схема режиму подана на рис. 4.24.

 

 

 

Рі

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

Ключ

 

 

 

 

 

 

 

 

Ключ

Е

 

 

 

D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Cі

 

 

Рі =Pi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.24. Режим електронної кодової книги

127

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

Шифрування: для 1 i t:

ci = Ek(pi).

Дешифрування: для 1 i t: pi = Dk(ci). Зазначимо такі властивості ECB режиму:

1.Шифрування ідентичних відкритих текстів. Блокові шифри в такому режимі не забезпечують приховання шаблонів даних – ідентичні блоки відкритого тексту (при тому самому ключі) перетворяться в ідентичний шифротекст.

2.Вплив зчеплення. Блоки шифруються незалежно один від одного. Переупорядкування блоків шифротексту призведе до переупорядкування блоків відкритого тексту. Оскільки блоки шифротексту незалежні, навмисна підстановка ECB-блоків (наприклад, вставка блоку, що часто зустрічається) не має впливу на дешифрування суміжних блоків.

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

4.Істотним недоліком ECB є те, що той самий блок незашифрованого тексту, що з’являється більше одного разу в повідомленні, завжди має той самий зашифрований вигляд. Внаслідок цього для більших повідомлень ECB-режим вважається небезпечним. Якщо повідомлення має багато однакових блоків, то при криптоаналізі ця закономірність буде виявлена.

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

4.7.2. Шифрування в режимі Cipher Block Changing, CBC

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

128

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

Режим зчеплення блоків шифру включає використання n-роз-

рядного вектора ініціалізації, позначуваного IV. У схему додається регістр або буфер зворотного зв’язку, у який спочатку записується значення IV, а потім – наступні значення блоків шифротексту. На рис. 4.25 показана схема CBC. Для одержання першого блоку зашифрованого повідомлення використовується вектор ініціалізації (IV), для якого виконується операція XOR з першим блоком незашифрованого повідомлення. При розшифруванні для IV виконується операція XOR з виходом алгоритму розшифрування для одержання першого блоку незашифрованого тексту.

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

На вхід алгоритму надходить k-бітний ключ K, n-бітний IV, послідовність n-бітних блоків відкритого тексту P = p1, p2, …, pi, …, pt...

Послідовність блоків шифротексту C = c1, c2, …, ct обчислюється за правилом: сi = Ek(pi ci-1); i = 1,…,t;c0 = IV.

С0 = ІV

 

 

 

 

Сі- 1

Сі- 1

 

Рі

 

 

 

 

 

D

Ключ

 

n

 

Ключ

Е

 

 

 

 

 

 

n

 

 

 

Cі

Рі =Pi

 

 

 

 

Рис. 4.25. Режим зчеплення блоків шифру

Розшифрування здійснюється як: рi = ci – 1 Dk(ci); i = 1,…,t; c0 = IV.

Властивості режиму:

1. Шифрування ідентичних відкритих текстів. Ідентичні блоки шифротексту формуються тоді, коли шифрується той самий відкритий текст на

129

тих самих ключах і векторі ініціалізації. Зміна вектора ініціалізації, ключа або першого блоку відкритого тексту (наприклад, використовуючи лічильник або випадкову величину) призводить до різних шифротекстів.

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

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

3.Розмноження помилок. Одинична бітова помилка в блоці шифротексту сi впливає на дешифрування як мінімум двох блоків сi і сi+1 (оскільки рi залежить від сi і сi+1 ). Блок р’i відновлений із сi звичайно є повністю випадковим (50 % бітів помилкові), у той час, як відновлений відкритий текст р’i+1 матиме неправильних бітів рівно стільки, скільки їх має блок сi. Таким чином, противник може викликати передбачувані зміни бітів у р’i+1, змінюючи відповідні біти блоку сi.

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

З погляду практичного використання блокових шифрів у даному режимі необхідно також ураховувати такі рекомендації:

1.Розмноження помилок при шифруванні. Хоча розшифрування в CBC-режимі дозволяє відновити відкритий текст із помилок у блоках шифротексту, модифікація блоку відкритого тексту pi під час шифрування змінює всі наступні блоки шифротексту. Це ускладнює (якщо не виключає) застосовуваність режимів зчеплення для додатків, що вимагають випадкового доступу (читання/запису) до шифрованих даних. Альтернативою є режим ECB.

2.Самосинхронізація і групування помилок. Незважаючи на те, що самосинхронізація можлива при наявності помилок у бітах, самосинхронізація при "загублених" бітах, що є причиною помилки визначення меж блоку (помилка цілісності кадру), неможлива ні в CBC-режимі, ні в інших режимах.

130