Знаймо

Додати знання

приховати рекламу

Цей текст може містити помилки.

Advanced Encryption Standard


зображення

План:


Введення

Advanced Encryption Standard (AES), також відомий як Rijndael (вимовляється [rɛinda ː l] (Рейндол)) - симетричний алгоритм блокового шифрування (розмір блоку 128 біт, ключ 128/192/256 біт), прийнятий в якості стандарту шифрування урядом США за результатами конкурсу AES. Цей алгоритм добре проаналізований і зараз широко використовується, як це було з його попередником DES. Національний інститут стандартів і технологій США ( англ. National Institute of Standards and Technology , NIST) опублікував специфікацію AES 26 листопада 2001 після п'ятирічного періоду, в ході якого були створені і оцінені 15 кандидатур. 26 травня 2002 AES був оголошений стандартом шифрування. Станом на 2009 AES є одним з найпоширеніших алгоритмів симетричного шифрування. [1] [2] Підтримка AES (і тільки його) введена фірмою Intel в сімейство процесорів x86 починаючи з Intel Core i7-980X Extreme Edition, а потім на процесорах Sandy Bridge.


1. Історія AES

2 січня 1997 NIST оголошує [3] про намір вибрати наступника для DES, що був американським стандартом з 1977. 2 жовтня 2000 було оголошено, що переможцем конкурсу став алгоритм Rijndael [4], і почалася процедура стандартизації. 28 лютого 2001 був опублікований проект, а 26 листопада 2001 AES був прийнятий як FIPS 197. Історичну ретроспективу конкурсу можна простежити на веб-сайті NIST [5].


2. Опис AES

2.1. Визначення та допоміжні процедури

Визначення
Block послідовність біт, з яких складається input, output, State і Round Key. Також під Block можна розуміти послідовність байт
Cipher Key секретний, криптографічний ключ, який використовується Key Expansion процедурою, щоб провести набір ключів для раундів (Round Keys); може бути представлений як прямокутний масив байтів, що має чотири рядки і Nk колонок.
Ciphertext вихідні дані алгоритму шифрування
Key Expansion процедура використовується для генерації Round Keys з Cipher Key
Round Key Round Keys виходять з Cipher Key використовуючи процедуру Key Expansion. Вони застосовуються до State при шифруванні і розшифрування
State проміжний результат шифрування, який може бути представлений як прямокутний масив байтів має 4 рядки і Nb колонок
S-box нелінійна таблиця замін, що використовується в декількох трансформаціях заміни байт і в процедурі Key Expansion для взаимнооднозначное заміни значення байта. Попередньо розрахований S-box можна побачити нижче.
Nb число стовпців (32-ух бітних слів), складових State. Для AES, Nb = 4
Nk число 32-ух бітних слів, складових шіфроключ. Для AES, Nk = 4,6, або 8
Nr число раундів, яке є функцією Nk і Nb. Для AES, Nr = 10, 12, 14
Rcon [] масив, який складається з бітів 32-х розрядного слова і є постійним для даного раунду. Попередньо розрахований Rcon [] можна побачити нижче.

S-box

 Sbox = array {0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16}; 

Зворотний S-box для процедури InvSubBytes

 InvSbox = array {0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d}; 

Rcon []

 Rcon = array (array (0x00, 0x00, 0x00, 0x00), array (0x01, 0x00, 0x00, 0x00), array (0x02, 0x00, 0x00, 0x00), array (0x04, 0x00, 0x00, 0x00), array ( 0x08, 0x00, 0x00, 0x00), array (0x10, 0x00, 0x00, 0x00), array (0x20, 0x00, 0x00, 0x00), array (0x40, 0x00, 0x00, 0x00), array (0x80, 0x00, 0x00, 0x00), array (0x1b, 0x00, 0x00, 0x00), array (0x36, 0x00, 0x00, 0x00)); 
Допоміжні процедури
AddRoundKey () трансформація при шифруванні і зворотному шифруванні, при якій Round Key XOR'ітся c State. Довжина RoundKey дорівнює розміру State (ті, якщо Nb = 4, то довжина RoundKey дорівнює 128 біт або 16 байт)
InvMixColumns () трансформація при розшифрування яка є зворотною по відношенню до MixColumns ()
InvShiftRows () трансформація при розшифрування яка є зворотною по відношенню до ShiftRows ()
InvSubBytes () трансформація при розшифрування яка є зворотною по відношенню до SubBytes ()
MixColumns () [6] трансформація при шифруванні яка бере всі стовпці State і змішує їх дані (незалежно один від одного), щоб отримати нові стовпці
RotWord () функція, що використовується в процедурі Key Expansion, яка бере 4-х байтного слово і виробляє над ним циклічну перестановку
ShiftRows () трансформації при шифруванні, які обробляють State, циклічно зміщуючи останні три рядки State на різні величини
SubBytes () трансформації при шифруванні які обробляють State використовуючи нелінійну таблицю заміщення байтів (S-box), застосовуючи її незалежно до кожного байта State
SubWord () функція, яка використовується в процедурі Key Expansion, яка бере на вході чотирьох-байтного слово і застосовуючи S-box до кожного з чотирьох байтів видає вихідну слово

2.2. Шифрування

AES є стандартом, заснованим на алгоритмі Rijndael. Для AES довжина input (блоку вхідних даних) і State (стану) постійна і дорівнює 128 біт, а довжина шіфроключа K становить 128, 192, або 256 біт. При цьому, вихідний алгоритм Rijndael допускає довжину ключа і розмір блоку від 128 до 256 біт з кроком в 32 біта. Для позначення вибраних довжин input, State і Cipher Key в байтах використовується нотація Nb = 4 для input і State, Nk = 4, 6, 8 для Cipher Key відповідно для різних довжин ключів.

На початку шифрування input копіюється в масив State за правилом s [r, c] = in [r +4 c] , Для 0 \ le r <4 і 0 \ le c <Nb . Після цього до State застосовується процедура AddRoundKey () і потім State проходить через процедуру трансформації (раунд) 10, 12, або 14 разів (в залежності від довжини ключа), при цьому треба врахувати, що останній раунд дещо відрізняється від попередніх. У підсумку, після завершення останнього раунду трансформації, State копіюється в output за правилом out [r +4 c] = s [r, c] , Для 0 \ le r <4 і 0 \ le c <Nb .

Окремі трансформації SubBytes (), ShiftRows (), MixColumns (), і AddRoundKey () - обробляють State. Масив w [] - містить key schedule.

 Cipher (byte in [4 * Nb], byte out [4 * Nb], word w [Nb * (Nr +1)]) begin byte state [4, Nb] state = in AddRoundKey (state, w [0, Nb -1]) for round = 1 step 1 to Nr-1 SubBytes (state) ShiftRows (state) MixColumns (state) AddRoundKey (state, w [round * Nb, (round +1) * Nb-1]) end for SubBytes (state) ShiftRows (state) AddRoundKey (state, w [Nr * Nb, (Nr +1) * Nb-1]) out = state end 
Рис1. Псевдокод для Cipher

2.2.1. SubBytes ()

У процедурі SubBytes, кожен байт в state замінюється відповідним елементом у фіксованій 8-бітної таблиці пошуку, S; b ij = S (a ij).

Процедура SubBytes () обробляє кожен байт стану, незалежно виробляючи нелінійну заміну байтів використовуючи таблицю замін (S-box). Така операція забезпечує нелінійність алгоритму шифрування. Побудова S-box складається з двох кроків. По-перше, проводиться взяття зворотного числа в поле Галуа GF \ left ({2 ^ 8} \ right) . По-друге, до кожного байта b з яких складається S-box застосовується наступна операція:

b'_i = b_i \ oplus b_ {\ left ({i + 4} \ right) \ bmod 8} \ oplus b_ {\ left ({i + 5} \ right) \ bmod 8} \ oplus b_ {\ left ( {i + 6} \ right) \ bmod 8} \ oplus b_ {\ left ({i + 7} \ right) \ bmod 8} \ oplus c_i

де 0 \ le i <8 , І де b_i є i-ий біт b, а c_i - I-ий біт константи c = 63_ {16} = 99_ {10} = 01100011_2 . Таким чином, забезпечується захист від атак, заснованих на простих алгебраїчних властивостях.

\ Begin {Vmatrix} b ^ {'} _ {0} \ \ b ^ {'} _ {1} \ \ b ^ {'} _ {2} \ \ b ^ {'} _ {3} \ \ b ^ {'} _ {4} \ \ b ^ {'} _ {5} \ \ b ^ {'} _ {6} \ \ b ^ {'} _ {7} \ end {Vmatrix} = \ begin { Vmatrix} 1 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \ \ 1 & 1 & 0 & 0 & 0 & 1 & 1 & 1 \ \ 1 & 1 & 1 & 0 & 0 & 0 & 1 & 1 \ \ 1 & 1 & 1 & 1 & 0 & 0 & 0 & 1 \ \ 1 & 1 & 1 & 1 & 1 & 0 & 0 & 0 \ \ 0 & 1 & 1 & 1 & 1 & 1 & 0 & 0 \ \ 0 & 0 & 1 & 1 & 1 & 1 & 1 & 0 \ \ 0 & 0 & 0 & 1 & 1 & 1 & 1 & 1 \ end {Vmatrix} * \ begin {Vmatrix} b_ {0 } \ \ b_ {1} \ \ b_ {2} \ \ b_ {3} \ \ b_ {4} \ \ b_ {5} \ \ b_ {6} \ \ b_ {7} \ end {Vmatrix} + \ begin {Vmatrix} 0 \ \ 1 \ \ 1 \ \ 0 \ \ 0 \ \ 0 \ \ 1 \ \ 1 \ end {Vmatrix}

2.2.2. ShiftRows ()

У процедурі ShiftRows, байти в кожному рядку state циклічно зсуваються вліво. Розмір зміщення байтів кожного рядка залежить від її номера

ShiftRows працює з рядками State. При цій трансформації рядка стану циклічно зсуваються на r байт по горизонталі, залежно від номера рядка. Для нульовою рядки r = 0, для першого рядка r = 1 Б і т. д. Таким чином кожна колонка вихідного стану після застосування процедури ShiftRows складається з байтів з кожної колонки початкового стану. Для алгоритму Rijndael патерн зсуву рядків для 128 - і 192-бітових рядків однаковий. Однак для блоку розміром 256 біт відрізняється від попередніх тим, що 2, 3, і 4-е рядки зміщуються на 1, 3, і 4 байта, відповідно.


2.2.3. MixColumns ()

У процедурі MixColumns, кожна колонка стану перемножується з фіксованим многочленом c (x).

У процедурі MixColumns, чотири байти кожної колонки State змішуються, використовуючи для цього оборотну лінійну трансформацію. MixColumns обробляє стану по колонках, трактуючи кожну з них як поліном четвертого ступеня. Над цими поліномами проводиться множення в GF (2 ^ 8) по модулю x ^ 4 +1 на фіксований многочлен c (x) = 3x ^ 3 + x ^ 2 + x + 2 . Разом з ShiftRows, MixColumns вносить дифузію в шифр


2.2.4. AddRoundKey ()

У процедурі AddRoundKey, кожен байт стану об'єднується з RoundKey використовуючи операцію XOR (⊕).

У процедурі AddRoundKey, RoundKey кожного раунду об'єднується зі State. Для кожного раунду Roundkey виходить з CipherKey використовуючи процедуру KeyExpansion; кожен RoundKey такого ж розміру, що і State. Процедура виробляє побітовий XOR кожного байта State з кожним байтом RoundKey.


3. Алгоритм обробки ключа

Алгоритм обробки ключа складається з двох процедур:

  • Алгоритм розширення ключа
  • Алгоритм вибору раундового ключа (ключа ітерації)

3.1. Алгоритм розширення ключа

AES алгоритм, використовуючи процедуру KeyExpansion () і подаючи в неї Cipher Key, K, отримує ключі для всіх раундів. Всього виходить Nb * (Nr + 1) слів: спочатку для алгоритму потрібно набір з Nb слів, і кожному з Nr раундів потрібно Nb ключових набору даних. Отриманий масив ключів для раундів позначається як w \ left [i \ right] , 0 \ le i <Nb * (Nr + 1) . Алгоритм KeyExpansion () показаний в псевдокоді нижче.

Функція SubWord () бере чотирьохбайтове вхідна слово і застосовує S-box до кожного з чотирьох байтів. Те, що вийшло, подається на вихід. На вхід RotWord () подається слово [A_ {0}, a_ {1}, a_ {2}, a_ {3}] яке вона циклічно переставляє і повертає [A_ {1}, a_ {2}, a_ {3}, a_ {0}] . Масив слів, постійний для даного раунду, Rcon \ left [i \ right] , Містить значення [X ^ {i-1}, {00}, {00}, {00}] , Де x = {02}, а x ^ {i-1} є ступенем x в GF \ left (2 ^ 8 \ right) ( i починається з 1).

З малюнка можна побачити, що перші Nk слів розширеного ключа заповнені Cipher Key. У кожне наступне слово, w [i] , Кладеться значення отримане при операції XOR w [i-1] і w \ left [{i - Nk} \ right] , Ті XOR'а попереднього і на Nk позицій раніше слів. Для слів, позиція яких кратна Nk, перед XOR'ом до w [i-1] застосовується трасформації, за якою слідує XOR з константою раунду Rcon [i]. Зазначена вище трансформація складається з циклічного зсуву байтів в слові (RotWord ()), за якою слідує процедура SubWord () - те ж саме, що і SubBytes (), тільки вхідні і вихідні дані будуть розміром в слово.

Важливо зауважити, що процедура KeyExpansion () для 256 бітного Cipher Key трохи відрізняється від тих, які застосовуються для 128 і 192 бітових шіфроключей. Якщо Nk = 8 і i - 4 кратно Nk , То SubWord () застосовується до w [i-1] до XOR'а.

 KeyExpansion (byte key [4 * Nk], word w [Nb * (Nr +1)], Nk) begin word temp i = 0; while (i  6 and i mod Nk = 4) temp = SubWord (temp ) end if w [i] = w [i-Nk] xor temp i = i + 1 end while end 
Псевдокод для Key Expansion

3.2. Розшифрування

 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 [Nr * Nb, (Nr +1) * Nb-1]) out = state end 
Псевдокод для Inverse Cipher

3.3. Алгоритм вибору раундового ключа

На кожній ітерації i раундовий ключ для операції AddRoundKey вибирається з масиву w \ left [i \ right] починаючи з елемента w \ left [Nb * i \ right] до w \ left [Nb * \ left (i + 1 \ right) \ right] .

4. Варіанти алгоритму

На базі алгоритму Rijndael, що лежить в основі AES, реалізовані альтернативні криптоалгоритми. Серед найбільш відомих - учасники конкурсу Nessie : Anubis на інволюція, автором якого є Вінсент Реймі і посилений варіант шифру - Grand Cru Йохана Борстен.

5. Крипостійкість

У червні 2003 року Агентство національної безпеки США постановив, що шифр AES є достатньо надійним, щоб використовувати його для захисту відомостей, що становлять державну таємницю ( англ. classified information ). Аж до рівня SECRET було дозволено використовувати ключі довжиною 128 біт, для рівня TOP SECRET були потрібні ключі довжиною 192 і 256 біт [7].


5.1. XSL-атака

На відміну від більшості інших шифрів AES має просте математичне опис. Це турбувало в тому числі і Нільса Фергюсона ( англ. Niels Ferguson ), Який у своїй роботі зазначив, що безпека шифру грунтується на новому неперевіреному припущенні про складність розв'язання певних видів рівнянь ( англ. "The security of Rijndael depends on a new and untested hardness assumption: it is computationally infeasible to solve equations of this type" ) [8] [9], а також Брюса Шнайера, який написав у спільній з Нільсом книзі:

У нас є одне критичне зауваження до AES: ми не зовсім довіряємо його безпеки. Що турбує нас найбільше в AES, так це його проста алгебраїчна структура ... Жоден інший блоковий шифр не має настільки простого алгебраїчного представлення. Ми поняття не маємо, веде це до атаки чи ні, але незнання цього є достатньою причиною, щоб скептично ставитися до використання AES.

Оригінальний текст (Англ.)

We have one criticism of AES: we don't quite trust the security ... What concerns us the most about AES is its simple algebraic structure ... No other block cipher we know of has such a simple algebraic representation. We have no idea whether this leads to an attack or not, but not knowing is reason enough to be skeptical about the use of AES

- Niels Ferguson, Bruce Schneier Practical Cryptography - 2003 - pp. 56-57

Ніколя Картуа ( англ. Nicolas Courtois ) І Йозеф Пепшік ( англ. Josef Pieprzyk ) В 2002 році опублікували статтю, в якій описали теоретичну атаку, названу ними XSL-атакою ( англ. eXtended Sparse Linearization ), Яка могла б дозволити розкрити шифри AES і Serpent [10] [11]. Тим не менш, результати роботи не всіма було сприйнято оптимістично:

Я вірю, що в роботі Куртуа-Пепшіка є помилка. Вони переоцінили число лінійно незалежних рівнянь. В результаті у них немає достатньої кількості лінійних рівнянь для розв'язання системи, і [зазначений] метод не може зламати Rijndael. Він має певні переваги і заслуговує вивчення, але не зламує Rijndael в його нинішньому вигляді.

Оригінальний текст (Англ.)

I believe that the Courtois-Pieprzyk work is flawed. They overcount the number of linearly independent equations. The result is that they do not in fact have enough linear equations to solve the system, and the method does not break Rijndael ... The method has some merit, and is worth investigating, but it does not break Rijndael as it stands.

- Дон Копперсміт, коментар до запису в блозі Брюса Шнайера

На сторінці, присвяченій обговоренню конкурсу NESSIE в кінці 2002 року один з авторів шифру, Вінсент Реймі, заявив, що XSL-атака є всього лише мрією ( англ. The XSL attack is not an attack. It is a dream ) (Дана точка зору пізніше була повторена в 2004 році на 4-й конференції AES в Бонні). На це Куртуа відповів, що дана мрія може стати для автора AES кошмаром ( англ. It may also be a very bad dream and turn into a nightmare ) [12].

У 2003 році Шон Мерфі і Метт Робшоу ( англ. Matt Robshaw ) Опублікували роботу, в якій, в припущенні що результати Куртуа і Пепшіка вірні, обгрунтували можливість атаки на алгоритм AES, що скорочує кількість операцій для злому з 2128 до 2100. Однак на 4-й конференції AES Ілля Толі ( англ. Ilia Toli ) І Альберто Заноні ( англ. Alberto Zanoni ) Показали, що робота Мерфі і Робшоу невірна [13]. Пізніше, в 2007 році, Чу-Ві Лім ( англ. Chu-Wee Lim ) І Хунгмінг Ху ( англ. Khoongming Khoo ) Також показали, що дана атака не може працювати в тому вигляді, як вона була описана [14].


5.2. Атака по стороннім каналах

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

У квітні 2005 року Daniel J. Bernstein опублікував роботу з описом атаки, що використовує для злому інформацію про час виконання кожної операції шифрування [15]. Дана атака зажадала більше 200 мільйонів вибраних шіфротекста для знаходження ключа [16].

У жовтні 2005 року Даг Арне Освік, Аді Шамір і Еран Трумер представили роботу з описом декількох атак, що використовують час виконання операцій для знаходження ключа. Одна з представлених атак отримувала ключ всього-лише після 800 операцій шифрування. Атака вимагала від криптоаналітика можливості запускати програми на тій же системі, де виконувалося шифрування [17].

В декабре 2009 года была опубликована работа, в которой использование дифференциального анализа ошибок (англ. Differential Fault Analysis ) позволило восстановить ключ за 2 32 операций [18].


Примітки

  1. Лаборатория Чеканова Intel Core i5 (Clarkdale): анализ аппаратного ускорения шифрования AES - www.thg.ru/cpu/aes_clarkdale/index.html . THG (19 января 2010). - "наиболее популярный стандарт симметричного шифрования в мире ИТ" Архивировано - www.webcitation.org/65YiuXrGU из первоисточника 19 февраля 2012.
  2. Biryukov, Alex and Khovratovich, Dmitry Related-key Cryptanalysis of the Full AES-192 and AES-256 - www.impic.org/papers/Aes-192-256.pdf (Англ.) // Advances in Cryptology ASIACRYPT 2009. - Springer Berlin / Heidelberg, 2009. - Т. 5912. - С. 1-18. - DOI : 10.1007/978-3-642-10366-7_1 - dx.doi.org/10.1007/978-3-642-10366-7_1
  3. http://csrc.nist.gov/CryptoToolkit/aes/pre-round1/aes_9701.txt - csrc.nist.gov/CryptoToolkit/aes/pre-round1/aes_9701.txt
  4. NIST Error Page - www.nist.gov/public_affairs/releases/g00-176.htm
  5. Bounce to index.html - csrc.nist.gov/CryptoToolkit/aes/
  6. en:Rijndael mix columns
  7. National Policy on the Use of the Advanced Encryption Standard (AES) to Protect National Security Systems and National Security Information - cryptome.org/aes-natsec.htm (Англ.) . Committee on National Security Systems (June 2003). Архивировано - www.webcitation.org/65Yixk1FT из первоисточника 19 февраля 2012.
  8. James McLaughlin The XSL controversy // A survey of block cipher cryptanalysis techniques - www-users.cs.york.ac.uk/~jmclaugh/XSL_chapter.pdf. - preprint. - York: University of York, 2009.
  9. Niels Ferguson, Richard Schroeppel, and Doug Whiting A simple algebraic representation of Rijndael - www.macfergus.com/pub/rdalgeq.html (Англ.) // Selected Areas in Cryptography, Proc. SAC 2001, Lecture Notes in Computer Science #2259. - Springer Verlag, 2001. - P. 103-111.
  10. Bruce Schneier Crypto-Gram Newsletter - www.schneier.com/crypto-gram-0209.html (Англ.) . Schneier on Security (15 September 2002). Архивировано - www.webcitation.org/65YiyrUTe из первоисточника 19 февраля 2012.
  11. Nicolas Courtois, Josef Pieprzyk Cryptanalysis of Block Ciphers with Overdefined Systems of Equations - eprint.iacr.org/2002/044 (Англ.) // Advances in Cryptology - ASIACRYPT 2002 8th International Conference on the Theory Application of Cryptology and Information Security Queenstown, New Zealand, December 1-5, 2002 Proceedings. Lecture Notes in Computer Science (2501). - Springer, 2002. - P. 267-287. - DOI : 10.1007/3-540-36178-2 - dx.doi.org/10.1007/3-540-36178-2
  12. NESSIE Discussion Forum -
  13. Ilia Toli, Alberto Zanoni An Algebraic Interpretation of AES-128 - www.springerlink.com/content/3q790mfnr6bk70pf/ (Англ.) // Proc. of AES Conference. - 2005. - Т. 2005. - С. 84-97. - DOI : 10.1007/11506447_8 - dx.doi.org/10.1007/11506447_8
  14. Chu-wee Lim, Khoongming Khoo An Analysis of XSL Applied to BES - www.springerlink.com/content/6x35t1u383824353/ (Англ.) // Fast Software Encryption. - Heidelberg: Springer Berlin / Heidelberg, 2007. - Т. 4593. - С. 242-253. - DOI : 10.1007/978-3-540-74619-5_16 - dx.doi.org/10.1007/978-3-540-74619-5_16
  15. Daniel J. Bernstein Cache-timing attacks on AES - cr.yp.to/papers.html#cachetiming (Англ.) . - 2004.
  16. Bruce Schneier AES Timing Attack - www.schneier.com/blog/archives/2005/05/aes_timing_atta_1.html (Англ.) . Schneier on Security (17 May 2005). Архивировано - www.webcitation.org/65YizbRPr из первоисточника 19 февраля 2012.
  17. Dag Arne Osvik; Adi Shamir and Eran Tromer Cache Attacks and Countermeasures: the Case of AES - eprint.iacr.org/2005/271.pdf // Topics in Cryptology - CT-RSA 2006, The Cryptographers' Track at the RSA Conference. - Springer-Verlag, 2005. - P. 1-20.
  18. Dhiman Saha, Debdeep Mukhopadhyay, Dipanwita RoyChowdhury A Diagonal Fault Attack on the Advanced Encryption Standar - eprint.iacr.org/2009/581 (Англ.) // Cryptology ePrint Archive. - 2009.

Література


Цей текст може містити помилки.

Схожі роботи | скачати

Схожі роботи:
XML Encryption
Standard & Poor's
BR Standard Class 9F
Standard Oil
Digital Signature Standard
Advanced Micro Devices
Linux Standard Base
Advanced Visualization Studio
Advanced Systems Format
© Усі права захищені
написати до нас