Смекни!
smekni.com

Шифрування з секретним ключем (стр. 2 из 2)

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

У режимі гаміровання зі зворотним зв'язком для заповнення регістрів N1 і N2, починаючи з 2-го блоку, використається не попередній блок гами, а результат шифрування попереднього блоку відкритого тексту (рис. 2). Перший блок у даному режимі генерується повністю аналогічно попередньому.

Рисунок 2 – Формування гами шифру в режимі гамування із зворотним зв'язком

Розглядаючи режим генерації імітоприставок, варто визначити поняття предмета генерації. Імітоприставка - це криптографічна контрольна сума, що обчислюється з використанням ключа шифрування і призначена для перевірки цілісності повідомлень. При генерації імітоприставки виконуються наступні операції: перші 64-біта блок масиву інформації, для якого обчислюється імітоприставка, записується в регістри N1 й N2 і шифрується в скороченому режимі простої заміни (виконуються перші 16 раундів з 32). Отриманий результат додається по модулю 2 до наступного блока інформації зі збереженням результату в N1 і N2.

Цикл повторюється до останнього блоку інформації. 64-біт, що вийшло в результаті цих перетворень, у регістрів N1 й N2 називається імітоприставкою. Розмір імітоприставки вибирається, виходячи з необхідної вірогідності повідомлень: при довжині імітоприставки r біт імовірність, що зміна повідомлення залишиться непоміченою, дорівнює 2-r.Найчастіше використається 32-бітна імітоприставка, тобто половина змісту регістрів. Цього досить, оскільки, як будь-яка контрольна сума, імітоприставка призначена насамперед для захисту від випадкових спотворень інформації. Для захисту від навмисної модифікації даних застосовуються інші криптографічні методи - у першу чергу електронний цифровий підпис.

Алгоритм ГОСТ 28147-89 вважається дуже сильним алгоритмом - у цей час для його розкриття не запропоновано більш ефективних методів, чим згаданий вище метод "грубої сили". Його висока стійкість досягається в першу чергу за рахунок великої довжини ключа - 256 біт. При використанні секретного синхропосилання ефективна довжина ключа збільшується до 320 біт, а засекречування таблиці замін додає додаткові біти. Крім того, кріптостійкість залежить від кількості раундів перетворень, яких за ГОСТ 28147-89 повинне бути 32 (повний ефект розсіювання вхідних даних досягається вже після 8 раундів).

2.3 Стандарт AES

На відміну від алгоритму ГОСТ 28147-89, що довгий час залишався секретним, американський стандарт шифрування AES, покликаний замінити DES, вибирався на відкритому конкурсі, де всі зацікавлені організації і приватні особи могли вивчати і коментувати алгоритми-претенденти.

Конкурс на заміну DES був оголошений в 1997 р. Національним інститутом стандартів і технологій США. На конкурс було представлено 15 алгоритмів-претендентів, розроблених як відомими в області криптографії організаціями (RSA Security, Counterpane і т.д.), так і приватними особами. Підсумки конкурсу були підведені в жовтні 2009 р.: переможцем був оголошений алгоритм Rijndael, розроблений двома кріптографами з Бельгії, Винсентом Риджменом (Vincent Rijmen) і Джоан Даймен (Joan Daemen).

Алгоритм Rijndael не схожий на більшість відомих алгоритмів симетричного шифрування, структура яких зветься "мережа Фейстеля" і аналогічна російському ГОСТ 28147-89. Особливість мережі Фейстеля полягає в тому, що вхідне значення розбивається на два і більше субблоків, частина з яких у кожному раунді обробляється за певним законом, після чого накладається на необроблювані субблоки (див. рис. 1).

На відміну від вітчизняного стандарту шифрування, алгоритм Rijndael представляє блок даних у вигляді двомірного байтового масиву розміром 4X4, 4X6 або 4X8 (допускається використання декількох фіксованих розмірів шифруєемого блоку інформації). Всі операції виконуються з окремими байтами масиву, а також з незалежними стовпцями і рядками. Алгоритм Rijndael виконує чотири перетворення: BS (ByteSub) - таблична заміна кожного байта масиву (рис. 3); SR (ShiftRow) - зсув рядків масиву (рис. 4). При цій операції перший рядок залишається без змін, а інші циклічно побайтно зсуються вліво на фіксоване число байт, що залежить від розміру масиву. Наприклад, для масиву розміром 4X4 рядки 2, 3 і 4 зсуються відповідно на 1, 2 і 3 байти. Далі йде MC (MixColumn) - операція над незалежними стовпцями масиву (рис. 5), коли кожен стовпець за певним правилом множиться на фіксовану матрицю c(x). І, нарешті, AK (AddRoundKey) - додавання ключа. Кожен біт масиву складається по модулю 2 з відповідним ключем раунду, що, у свою чергу, певним чином обчислюється із ключа шифрування (рис. 6).

Рисунок 3 – Операція BS


Рисунок 4 – Операція SR

Рисунок 5 – Операція MC

Рисунок 6 – Операція AK

У кожному раунді (з деякими виключеннями) над даними, що шифруються, по черзі виконуються перераховані перетворення (рис. 7). Виключення стосуються першого і останнього раундів: перед першим раундом додатково виконується операція AK, а в останньому раунді відсутній MC. У результаті послідовність операцій при шифруванні виглядає так:

AK, {BS, SR, MC, AK} (повторюється R-1 раз), BS, SR, AK.
Рисунок 7 – Раунд алгоритму Rijndael

Кількість раундів шифрування (R) в алгоритмі Rijndael змінне (10, 12 або 14 раундів) і залежить від розмірів блоку і ключа шифрування (для ключа також передбачено кілька фіксованих розмірів).

Розшифрування виконується за допомогою наступних зворотних операцій. Виконується обіг таблиці і таблична заміна на інверсній таблиці (щодо застосовуваної при шифруванні). Зворотна операція до SR - це циклічний зсув рядків вправо, а не вліво. Зворотна операція для MC - множення за тим же правилом на іншу матрицю d(x), що задовольняє умові: c(x) * d(x) = 1. Додавання ключа AK є зворотним самому собі, оскільки в ньому використається тільки операція XOR. Ці зворотні операції застосовуються при розшифруванні в послідовності, зворотної тієї, що використалася при шифруванні.

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

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