Псевдокод алгоритму дешифрування тексту, зашифрованого алгоритмом Rijndael 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Псевдокод алгоритму дешифрування тексту, зашифрованого алгоритмом Rijndael



InvCipher (byte in [4*Nb], byte out [4*Nb], word w [Nb*(Nr+1)])

begin

byte state [4, Nb]

state = in

AddRoundKey (state, w [Nr*Nb, (Nr+1)*Nb-1])

for round = Nr -1 step -1 downto 1

InvShiftRows (state)

InvSubBytes (state)

AddRoundKey (state, w [round*Nb, (round + 1)*Nb – 1])

InvMixColumns (state)

end for

InvShiftRows (state)

InvSubBytes (state)

AddRoundKey (state, w [0, Nb – 1])

out = state

end

 

Режим ECB

ECB – Electronic Code Book – електронна кодова книга, являє собою найпростіший стандартний спосіб використання блочного шифру, але він слабо захищений від атак з вилученнями та вставками. Крім того, помилка, зроблена в одному біті шифротексту, впливає на увесь блок у розшифрованому тексті. Дані m, що треба зашифрувати, поділяються на блоки довжиною n бітів:m1, m2, …., mq.

Останній блок доповнюється до довжини n. До блоків застосовується функція кодування, значенням якої є зашифрований блок.Ci = Ek(mi).Дешифрування є оберненням функції шифрування mi = Dk(Ci), де Dk = Ek-1.

З режимом ECB пов’язана низка проблем. Перша виникає внаслідок того, що однакові блоки мають однакові шифри. (mi = mj Þ Ci = Cj). Це дійсно проблема, оскільки часто шаблонні початок та кінець повідомлення збігаються.

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

Режим CBC

CBC (Cipher Block Chaining - зчеплення шифрованих блоків) - найбільш поширений спосіб експлуатації блочного шифру, оскільки призначений для запобігання втратам в результаті атаки з вилученнями та вставками. Помилковий біт шифротексту не тільки перетворює помилковий блок, у якому міститься, але і псує біт у наступному блоці відкритого тексту, що можна легко визначити і сприймати як сигнал про атаку.У режимі CBC формування коду поточного блоку здійснюється з урахуванням шифру попереднього блоку. При цьому виникає зчеплення блоків, що знайшло свій відбиток у назві режиму. Кодування блоків відбувається згідно з виразами C1 = Ek (m1 Å IV), Ci = Ek (mi Å Ci-1), i > 1.

У обчисленні шифру першого блоку використовується початкове значення IV (вектор ініціації), яке можна розглядати як елемент функції шифрування. Режим забезпечує нерівність шифрованих блоків при однакових відкритих текстах цих блоків. На практиці цю величину передають у відкритому вигляді як частину повідомлення.

Розшифровування здійснюється у відповідності з наступними виразами m1 = Dk (C1) Å IV, mi = Dk (Ci) Å Ci-1, i > 1.

 

Режим OFB

OFB (Output FeedBack – зворотний зв’язок за виходом). При цьому методі блочний шифр фактично перетворюється у потоковий. Помилковий біт у шифротексті дає тільки один помилковий біт у розшифрованому тексті. В поданому режимі довжина блоку s вибирається з фіксованого діапазону: 1 £ s £ n, де n – кількість бітів вектору ініціації IV. За допомогою блочного шифру створюється потік ключів довжиною s бітів. Рекомендується брати s = n, оскільки при цьому очікувана довжина періоду потоку ключів досягає максимального значення. Процес шифрування можна описати наступними співвідношеннями

O0 IV,

Oi Ek(Oi-1),

Ci Pi Å MSBs(Oi),

де MSBs(Oi) – старші (ліві) s бітів числа Oi.

Відповідна схема шифрування, показана на рис. 2.7.

Спочатку змінній O0 присвоюється початкове значення IV. Потім, при i = 1, 2, …, q виконуються перетворення: Oi = Ek (Oi-1), ei = s розташованих ліворуч бітів блоку Oi,

Ci = mi Å ei.

 

Режим CFB

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

Режим CFB відрізняється від попереднього тим, що кожний наступний аргумент функції шифрування утворюється шифротекстом (рис. 2.9). Послідовність операцій при цьому має наступний вигляд.

O0 IV, C0 e

O1 Ek(IV)

Oi Ek(LSBn-s(Oi-1) || Ci-1), i ³ 2

Ci mi Å MSBs(Oi),

де LSBn-s(Oi) – молодші (праві) n-s бітів числа Oi, символом «||» позначено операцію конкатенації, e - пустий рядок.

Схема шифрування CFB показана на рис. 2.9, а дешифрування – на 2.10.

 

Режим CTR

CTR (Counter – лічильник). Цей метод передбачає шифрування поточного стану лічильника і застосування порозрядного XOR до отриманого шифру і поточного сегменту відкритого тексту.

Ctr0 IV,

Ctri Ctri-1 + 1,

Ci mi Å Ek(Ctri).

Дешифрування відбувається згідно з виразом

mi Ci Å Ek(Ctri).

Оскільки у поданому методі зворотний зв’язок не використовується, алгоритми шифрування і дешифрування можуть виконуватися паралельно.

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

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

Вони можуть скористатися спільним секретним ключем і алгоритмом з ключем (наприклад, блочним шифром) для генерації контрольного значення, що відсилається разом з даними. Такі значення називають кодами автентичності повідомлень (Message Authentication Codes – MAC):

MAC = F (k, m),

де F – контрольна функція, k – секретний ключ, m – повідомлення. Існує декілька типів MAC, але найбільш розповсюджена – це CBC-MAC. Цей код узагальнює режим CBC блочного шифрування. Процедура отримання MAC виглядає наступним чином.Спочатку дані доповнюються так, щоб їх можна було розбити на серію n-бітових блоків. Отримані блоки шифруються блочним шифром в режимі CBC. Останній блок після необов’язкової процедури, що відкидає молодші n – m біти, утворює m-бітовий код автентичності MAC. Таким чином, якщо m1, …, mq - n-бітові блоки відкритого тексту, то обчислення MAC можна описати наступним чином:l1 = Ek(m1), l2 = E(l1 Å m2), …, li = E(li-1 Å mi), …, lq = E(lq-1 Å mq).Якщо використовується m-бітовий MAC, і m < n, то MAC = F(lq), де F – функція, що відкидає молодші біти свого аргументу. У випадку m = n, MAC = lq.

Міжнародні стандарти пропонують три способи доповнення відкритого тексту до отримання довжини кратної довжині блоку.Всі додаткові символи – нулі. Цей метод має недолік, що полягає у неможливості виявлення додавання, переміщення або вилучення нулів, якщо невідома довжина оригінального повідомлення.В кінці доданої послідовності нулів вставляється одна одиниця, що є міткою кінця повідомлення.Крім доданих нулів, в кінці повідомлення додається спеціальний блок, що містить інформацію про довжину відкритого тексту.Стандарти пропонують два можливих необов’язкових заключних кроки, розроблених для ускладнення здійснення зловмисником атак методом повного перебору:вибрати ключ k1 і обчислити lq = E(k, D(k1, lq));вибрати ключ k2 і обчислити lq = E(k2, lq).

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

 

Потокові шифри

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

Під впливом секретного ключа на виході генератора ключового потоку утворюється послідовність бітів, зовні схожа на випадкову. Ця послідовність однозначно визначається ключем. Тому на передавальному та приймальному боці ідентичні послідовності.Кожний біт створеної послідовності додається за модулем 2 до поточного біту повідомлення ci = ki + mi, mi = ci + ki.

Припустимо зловмисник отримав два шифротексти Сk, Сl. Якщо ці шифротексти утворені за допомогою одного ключа K, то зловмисник може отримати суму за модулем 2 відповідних відкритих текстів Сk Å Сl = Mk Å K Å Ml Å K = Mk Å Ml. Таким чином, у зловмисника виникає можливість отримати деяку інформацію, використовуючи шифровані тексти. Це небажано, і тому ключ змінюють або після його застосування для деякого повідомлення, або після застосування впродовж сеансу зв’язку (декілька повідомлень в обох напрямках).Щоб надати шифру необхідну стійкість, генератор ключового потоку виробляє послідовність бітів з певними властивостями.Ключовий потік повинен мати великий період. Оскільки ключовий потік утворюється в результаті детермінованого процесу з основного (секретного) ключа, знайдеться таке число n, що ki = ki+n для усіх значень i. Число n називається періодом послідовності.

Ключовий потік повинен мати псевдовипадкові властивості. Інакше кажучи, генератор послідовності повинен пройти певну кількість статистичних тестів на випадковість.

Алгоритм генерації ключового потоку повинен мати лінійну складність (бути нескладним).І, нарешті, головна властивість – поновлення послідовності при відомій початковій частині повинно бути нездійснимим в обчислювальному відношенні. В ідеалі, навіть якщо відомий перший мільярд бітів ключової послідовності, ймовірність угадати наступний біт неповинна перебільшувати 1 / 2.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 277; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.186.218 (0.016 с.)