- Алгоритми SHARK і SHARK *
- алгоритм RC5
- структура алгоритму
- Процедура розширення ключа
- криптоаналіз алгоритму
- варіанти RC5
- Продовження історії
- алгоритм Akelarre
- структура алгоритму
- Розширення ключа
- криптоаналіз алгоритму
У першій частині статті (див. "BYTE / Росія" № 4'2006) були детально описані три алгоритму шифрування, з різних причин представляють інтерес: Square, Skipjack і Blowfish. Розглянемо ще три алгоритму, що не менш цікаві.
Алгоритми SHARK і SHARK *
Як і алгоритм Square, SHARK розроблений Вінсентом Ріджменом (Vincent Rijmen) і Джоан Дейма (Joan Daemen) - майбутніми авторами стандарту AES (алгоритму Rijndael), правда, в співавторстві з ще трьома фахівцями, що представляють Католицький університет м Лювен (Leuven) в Бельгії . Це трохи більш рання розробка, ніж алгоритм Square, - SHARK з'явився в 1995 р
Подібність між SHARK і Square спостерігається, як мінімум, в наступному:
- обидва алгоритму за один раунд обробляють блок цілком, а не половину, як мережі Фейстеля;
- в раунді алгоритму SHARK використовуються перетворення, вельми схожі і на Square, і на Rijndael: XOR з ключем, таблична заміна і множення на фіксовану матрицю.
Специфікація алгоритму не фіксує його основні параметри. Зокрема, блок шифрованих даних має змінний розмір mхn біт (значення m і n стане ясно з опису раунду алгоритму), а обробка даних виконується зі змінним числом раундів R.
У кожному раунді алгоритму r виконуються наступні операції (рис. 1):
1. Накладення ключа раунду Kr на оброблюваний блок операцією XOR. Ключ раунду також має розмір mхn біт; докладніше про обчисленні ключів раунду буде сказано нижче.
2. Табличная заміна, виконувана в такий спосіб:
- (Mхn) -бітний блок даних розбивається на n субблоков по m біт;
- кожен з них "проганяється" через одну з таблиць замін S1 ... Sn;
- результати замін об'єднуються в (mхn) -бітний блок.
3. Множення даних на фіксовану матрицю A розміром nхn біт.
Оброблювані дані можна представити у вигляді двомірного байтового масиву розміром (m / 8) xn байт (аналогічно алгоритму Square) або у вигляді одновимірного масиву з n m-бітових елементів. В останньому випадку виконуються в одному раунді операції можна описати наступною формулою:
де X1 ... Xn, Y1 ... Yn, Kr1 ... Krn - m-бітові елементи вхідного значення, результату і ключа раунду відповідно.
Після виконання r раундів алгоритму виконується фінальне перетворення, що складається з накладення ключа додаткового раунду KR + 1 і подальшого множення на зворотну матрицю.
Для розшифрування зворотні операції виконуються у зворотній послідовності.
Фактично SHARK є не алгоритм шифрування, а якийсь шаблон для побудови на його основі різних алгоритмів шифрування з описаної вище структурою. Такий висновок можна зробити з-за великої кількості змінних величин в структурі алгоритму; до змінних в ньому належать такі параметри:
- описані вище параметри n, m і r;
- значення таблиць замін. В описі алгоритму наводиться приклад таблиці замін, яка замінює вхідний значення x зворотною величиною в поле GF (2m):
S (x) = x-1 mod 2m.
Однак автори алгоритму припустили, що при використанні такої таблиці замін можливі уразливості, тому порекомендували використовувати таблиці з більш складним співвідношенням вхідного і вихідного значень; - значення елементів матриці A. При цьому автори алгоритму описали ряд критеріїв, яким повинні відповідати дані елементи для досягнення високої криптостійкості алгоритму;
- розмір ключа шифрування, який може досягати 2 х (R + 1) х m х n біт (сума розмірів всіх ключів раунду), - однак автори алгоритму порадили обмежитися не більше ніж 128-бітовим ключем;
- навіть для процедури розширення ключа автори алгоритму запропонували кілька можливих варіантів.
Вихідні тексти одного з варіантів алгоритму SHARK, розроблені Вінсентом Ріджменом, можна завантажити по FTP з ftp.esat.kuleuven.ac.be .
Крім алгоритму SHARK, його автори запропонували ще алгоритм SHARK *, що відрізняється від SHARK лише залежністю таблиць замін від ключа шифрування і також не забезпечений вичерпним описом.
Мабуть, через свою невизначеності, алгоритми SHARK і SHARK * Не викликали великого інтересу у криптоаналітиків; по крайней мере, не виявлено широко відомих робіт, пов'язаних з аналізом криптостойкости або атаками на дані алгоритми.
алгоритм RC5
Алгоритм RC5 цікавий з багатьох причин. По-перше, він створений відомим криптології Роном Ривестом (Ron Rivest) - одним з розробників асиметричною системи RSA і одним із засновників однойменної фірми (RSA Data Security), яка, безсумнівно, входить до числа світових лідерів ринку засобів криптографічного захисту інформації. Абревіатура RC позначає, відповідно до різних джерел, або Rivest Cipher, або Ron's Code, т. Е. В сукупності "шифр Рона Ривеста".
По-друге, аналогічно попереднім алгоритмам шифрування Рона Ривеста RC2 і RC4, алгоритм RC5 отримав досить широке поширення: за кількістю користувачів в світі він стоїть в одному ряду з такими відомими алгоритмами, як IDEA і Blowfish.
І нарешті, на перетвореннях, які використовуються в RC5, заснована подальша розробка компанії RSA - алгоритм RC6, який став фіналістом конкурсу AES за вибором нового стандарту шифрування США. RC6 не перемiг в конкурсі, але, мабуть, перевершить свого попередника по широті використання.
структура алгоритму
Аналогічно алгоритму SHARK, частина основних параметрів алгоритму RC5 - змінні. Як пише автор алгоритму, "RC5 - це кілька різних алгоритмів", оскільки, крім секретного ключа, в число параметрів алгоритму входять наступні:
- розмір слова w - RC5 шифрує блоками по два слова, допустимі значення w 16, 32 або 64, причому рекомендується значення 32;
- кількість раундів алгоритму R - як значення допустимо будь-яке ціле число від 0 до 255 включно;
- розмір секретного ключа в байтах b - будь-яке ціле значення від 0 до 255 включно.
Найбільш часто, щоб уточнити параметри алгоритму, що використовуються в його конкретної реалізації, застосовується позначення RC5-w / R / b; наприклад, RC5-32 / 12/16 позначає алгоритм RC5 з 64-бітовим блоком, 12 раундами і 128-бітовим (16-байтним) ключем. Дану комбінацію параметрів Ривест рекомендує в якості основного варіанту алгоритму.
На думку автора алгоритму, змінні параметри розширюють сферу використання алгоритму, а також сильно скорочують витрати, якщо необхідний перехід на більш сильний варіант алгоритму - на відміну від DES (основна проблема якого - короткий 56-бітний ключ), в програмної або апаратної реалізації RC5, підтримуючої змінні параметри, легко було б замінити ключ довшим, таким чином усунувши проблему. Ось що пише про це Рон Ривест: "Фіксовані параметри можуть бути не менш небезпечні [змінних], оскільки їх не можна поліпшити при необхідності. Розглянемо проблему DES: його ключ занадто короткий, і немає простого способу збільшити його".
Автор передбачив і проблему сумісності реалізацій RC5 з різними параметрами - кожне зашифроване повідомлення рекомендується випереджати заголовком, що містить список значень основних параметрів алгоритму. Передбачається, що в цьому випадку для розшифрування повідомлення слід встановити параметри з заголовка, після чого (при наявності коректного ключа) повідомлення легко буде розшифрувати.
Структура алгоритму представлена на рис. 2. Алгоритм являє собою мережу Фейстеля, в кожному раунді якої виконуються наступні операції:
A = ((A (+) B),
B = ((A (+) B),
де r - номер поточного раунду, починаючи з 1; Kn - фрагмент розширеного ключа;
Перед першим раундом виконуються операції накладення двох перших фрагментів розширеного ключа на шіфруемие дані:
A = A + K0 mod 2w,
B = B + K1 mod 2w.
Варто відзначити, що під словом "раунд" в описі алгоритму Ривест розуміє перетворення, що відповідають двом раундів звичайних алгоритмів, структура яких представляє собою мережу Фейстеля (див. Рис. 2). Це означає, що раунд алгоритму RC5 обробляє блок цілком, тоді як типовий раунд мережі Фейстеля обробляє тільки один субблок - зазвичай половину блоку, рідше його чверть.
Алгоритм разюче проста - в ньому використовуються тільки операції додавання по модулю 2 і по модулю 2w, а також зрушення на змінне число біт. Остання з операцій представляється автором алгоритму як революційне рішення, не використане в більш ранніх алгоритмах шифрування (до алгоритму RC5 такі операції використовувалися тільки в алгоритмі Madryga, що не отримав широкої популярності): зрушення на змінне число біт - це дуже просто реалізується операція, яка, однак , істотно ускладнює диференційний і лінійний криптоаналіз алгоритму. Простота алгоритму може розглядатися як його важлива перевага - простий алгоритм легше реалізувати і легше аналізувати на предмет можливих вразливостей.
Для розшифрування виконуються зворотні операції в зворотній послідовності, т. Е. В кожному раунді r (зі зворотним послідовністю раундів) виконуються наступні операції:
B = ((B - K2 * r + 1 mod 2w) >>> A) (+) A,
A = ((A - K2 * r mod 2w) >>> B) (+) B,
де >>> n - аналогічна описаної вище (Відповідно після R раундів виконуються наступні операції:
B = B - K1 mod 2w,
A = A - K0 mod 2w.
Алгоритм RC5 і деякі його варіанти запатентовані; патенти належать фірмі RSA Data Security.
Процедура розширення ключа
Процедура розширення ключа незначно складніше власне шифрування. Розширення ключа виконується в кілька етапів.
Етап 1. Вирівнювання ключа шифрування, в рамках якого ключ шифрування, якщо його розмір в байтах b не кратний w / 8 (т. Е. Розміром слова в байтах), доповнюється нульовими байтами до найближчого більшого розміру c, кратного w / 8.
Етап 2. Ініціалізація масиву розширених ключів K0 ... K2 * R + 1, яка виконується в такий спосіб:
K0 = Pw,
Ki + 1 = Ki + Qw,
де Pw і Qw - псевдовипадкові константи, утворені шляхом множення на 2w дробової частини і подальшого округлення до найближчого непарного цілого двох математичних констант (e і f відповідно). У специфікації алгоритму наведені обчислені константи для можливих значень w:
P16 = B7E1 *,
Q16 = 9E37,
P32 = B7E15163,
Q32 = 9E3779B9,
P64 = B7E151628AED2A6B,
Q64 = 9E3779B97F4A7C15.
* Шістнадцяткові значення.
Етап 3. Циклічно діє таким чином:
A = Ki = (Ki + A + B)
B = KCj = (KCj + A + B)
i = i + 1 mod (2 * R + 1),
j = j + 1 mod c,
де i, j, A і B - тимчасові змінні, їх початкові значення рівні нулю; KC - вирівняний на етапі 1 ключ шифрування.
Кількість ітерацій циклу N визначається як N = 3 * m, де m - максимальне з двох значень: c або (2 х R + 1).
криптоаналіз алгоритму
Вважається, що саме революційна ідея зсуву на змінне число біт привернула увагу криптоаналітиків до алгоритму RC5 - він став одним з алгоритмів, найбільш вивчених на предмет можливих вразливостей.
Початок криптоанализу алгоритму RC5 було покладено співробітниками RSA Laboratories (наукового підрозділу фірми RSA Data Security) Бертоном Каліскі-молодшим (Burton S. Kaliski Jr.) і Іква Лайзой Ін (Yiqun Lisa Yin). У період з 1995 по 1998 р вони опублікували ряд звітів, в яких детально проаналізували криптостойкость алгоритму RC5. Зроблені з них висновки наведені нижче.
RC5 майже неможливо розкрити методом лінійного криптоаналізу. Багато в чому це властивість алгоритму визначено наявністю операції циклічного зсуву на змінне число біт. Однак подальші дослідження показали, що існує клас ключів, при використанні яких алгоритм можна розкрити лінійним Криптоаналіз.
Диференціальний криптоаналіз істотно більш ефективний при атаках на алгоритм RC5. Каліскі і Ін запропонували атаку на алгоритм RC5-32 / 12/16, для якої потрібно 263 пар обраних відкритих текстів і відповідних їм шифртекст. Цей результат покращили Ларс Кнудсен (Lars R. Knudsen) і Віллі Мейер (Willi Meier), яким для атаки потрібно 254 обраних відкритих текстів. Вони ж знайшли кілька класів слабких ключів, що спрощують диференційний криптоаналіз. А найкращим результатом став криптоаналітичних метод, запропонований криптології Алексом Бірюковим (Alex Biryukov) і Ейяль Кушілевіцем (Eyal Kushilevitz), в якому необхідно 244 обраних відкритих текстів для успішної атаки. Проте всі описані вище атаки не дуже практичні - для їх виконання потрібна величезна кількість обраних відкритих текстів. Бірюков та Кушілевіц вважають, що для забезпечення повної невскриваемості алгоритму диференціальний криптоаналіз досить виконання 18-20 раундів замість 12.
На підставі того факту, що на ряді платформ операція циклічного зсуву на змінне число біт виконується за різне число тактів процесора, винахідник методу розтину алгоритмів шифрування за часом виконання Пол Кохер (Paul C. Kocher) висловив припущення про можливість атаки за часом виконання на алгоритм RC5 на таких платформах. Два варіанти подібної атаки були сформульовані криптоаналітиків Говардом Хейзом (Howard M. Heys) і Хеленою Хандшух (Helena Handschuh), які показали, що секретний ключ можна обчислити, виконавши близько 220 операцій шифрування з високоточними вимірами часу виконання і потім від 228 до 240 тестових операцій шифрування. Однак Каліскі і Ін запропонували вельми просте "протиотруту" - примусово виконувати всі зрушення за однакове число тактів (т. Е. Взяти найбільш повільний з можливих зрушень - це, безсумнівно, дещо знизить середню швидкість шифрування). Аналогічну методику протидії атакам по часу виконання радить і сам Кохер.
Таким чином, найбільш реальний метод злому алгоритму RC5 (не рахуючи варіантів з невеликим числом раундів і з коротким ключем) - повний перебір можливих варіантів ключа шифрування. Це означає, що у алгоритму RC5 практично відсутні недоліки з точки зору стійкості. Побічно цей висновок підтверджується тим, що досить багато досліджень стійкості алгоритму було направлено проти варіантів з усіченим числом раундів: такі варіанти зазвичай досліджуються в разі відсутності серйозних вразливостей у повноцінних варіантів алгоритму.
Було чимало й інших досліджень даного алгоритму, причому переважна їх більшість застосовувалося до 64-бітової версії алгоритму (для w = 32). Це не означає, що RC5 зі 128-бітовим блоком шифрованих даних істотно менше вивчений - результати досліджень показують, що 128-бітний варіант RC5 з достатнім числом раундів розкрити істотно складніше 64-бітного. Наприклад, Бірюков та Кушілевіц запропонували атаку на алгоритм RC5-64 / 16/16 на основі 263 обраних відкритих текстів, що досить нереально для практичного застосування.
варіанти RC5
Структура алгоритму RC5, незважаючи на свою простоту, представлялася багатьом криптологам як поле для можливих удосконалень. Відповідно з'явилося безліч відомих варіантів алгоритму RC5, в яких перетворення в "пів-раундах" класичного RC5 дещо змінені.
1. Алгоритм RC5XOR, в якому складання з ключем раунду по модулю 2 замінено операцією XOR (рис. 3):
A = ((A (+) B) **.
** Тут і далі як приклад наведено лише перетворення для обчислення лівого субблока; правий обчислюється в наступній половині раунду аналогічним чином.
Даний алгоритм виявився менш стійкий, ніж RC5, як до лінійного, так і до диференціального криптоаналізу. Зокрема, Бірюков та Кушілевіц запропонували атаку методом диференціального криптоаналізу, викриває алгоритм RC5XOR-32/12/16 на основі 228 обраних відкритих текстів.
2. RC5P, в якому додавання лівого і правого оброблюваних субблоков операцією XOR замінено складанням по модулю 2w (рис. 4):
A = ((A + B mod 2w).
Алгоритм виявився так само стійок, як і RC5, до лінійного криптоаналізу, але значно слабше до диференціального.
3. RC5PFR, що відрізняється від RC5 циклічним зрушенням на фіксоване, а не на змінне число біт (рис. 5):
A = ((A (+) B),
де sr - число біт циклічного зсуву, яке може бути різним у різних раундах алгоритму; в цьому випадку послідовність s1 ... sR буде додатковим параметром алгоритму.
Даний варіант алгоритму RC5 не дуже добре вивчений, проте експерти припускають, що алгоритм RC5PFR нестійкий до диференціального криптоаналізу.
4. RC5KFR, в якому число біт зсуву - функція ключа шифрування KC, т. Е. Для кожного ключа шифрування число біт зсуву фіксоване (може бути різним для різних раундів алгоритму) (рис. 6):
A = ((A (+) B).
RC5KFR також не надто вивчений, проте вважається, що в багатьох випадках (особливо при недостатньо великій кількості раундів) криптоаналіз даного варіанту алгоритму RC5 зводиться до аналізу алгоритму RC5PFR, що не вселяє впевненості в його стійкості.
5. RC5RA, в якому циклічний зсув відбувається на змінне число біт, визначається не значенням молодших log2 w біт іншого субблока, а якоїсь функцією f (), обробній в якості вхідного значення все біти іншого субблока (рис. 7):
A = ((A (+) B),
Цей варіант алгоритму теж недостатньо вивчений (і, мабуть, вже не буде вивчений, оскільки можна стверджувати, що RC5 і його варіанти зараз представляють лише історичний інтерес). Але існує думка, що алгоритм RC5RA може бути ще більш стійкий, ніж RC5, проти відомих методів криптоаналізу.
Продовження історії
Як було сказано вище, на основі алгоритму RC5 в 1998 році був розроблений алгоритм RC6. RC6 також заснований на циклічних зрушеннях на змінне число біт. Переважна більшість криптоаналітичних досліджень алгоритму RC5 можуть бути в різній мірі застосовані і до RC6. У RC6 є вже своя багата історія, яка заслуговує окремого опису.
алгоритм Akelarre
Алгоритм Akelarre розроблення колективом іспанськіх криптографов. Його відмінна риса в тому, що структура алгоритму фактично являє собою комбінацію перетворень, використаних в двох попередніх алгоритмах, що добре зарекомендували себе з точки зору криптостійкості: IDEA (див. Статтю "Алгоритм шифрування IDEA", "BYTE / Росія", № 12 / 2005) і RC5.
Алгоритм шифрує дані блоками по 128 біт. Як і в алгоритмі RC5, частина основних параметрів алгоритму - змінні: може змінюватися число раундів алгоритму R, а ключ шифрування мати будь-який розмір, кратний 64 бітам (оптимальним вважається 128-бітний ключ).
структура алгоритму
Структура алгоритму (рис. 8) вельми схожа на структуру алгоритму IDEA. Різниця між ними перш за все в основних перетвореннях, які використовуються в кожному раунді алгоритму, а також в розмірі слова: 32 біта замість 16-бітного слова у IDEA. Шіфруемий 128-бітний блок розбивається на чотири субблока A, B, C і D по 32 біта, над якими і виконуються криптографічні перетворення.
Алгоритм складається з початкового перетворення, R раундів і фінального перетворення.
Початкове перетворення являє собою накладення фрагментів розширеного ключа K01 ... K04 на субблоки:
A = A + K01 mod 232,
B = B (+) K02,
C = C (+) K03,
D = D + K04 mod 232.
У кожному раунді алгоритму r виконуються наступні перетворення.
1. Субблоки A, B, C, D об'єднуються в 128-бітний блок, над яким виконується циклічний зсув на змінне число біт, яке визначається сім'ю молодшими бітами фрагмента ключа раунду Kr1 (саме застосовувані в даному алгоритмі операції циклічного зсуву на змінне число біт вважаються запозиченими у алгоритму RC5).
2. 128-бітний блок знову розбивається на чотири фрагменти, після чого обчислюються наступні проміжні величини:
T1 = A (+) C,
T2 = B (+) D.
3. Значення T1 і T2, а також 12 фрагментів ключа раунду Kr2 ... Kr13 подаються на вхід AR-модуля (addition-rotation structure), що виконує операції додавання і циклічного зсуву на змінне число біт. AR-модуль буде докладно описаний нижче.
4. Вихідні значення раунду формуються наступним чином:
A = A (+) T2 ',
B = B (+) T1 ',
C = C (+) T2 ',
D = D (+) T1 ',
де T1 'і T2' - вихідні значення AR-модуля.
AR-модуль передбачає виконання таких операцій (тут вони розібрані на прикладі T1, аналогічні операції виконуються над T2, см. Спрощену схему на рис. 9).
Крок 1. 31 старший біт T1 циклічно зсувається вліво на величину, яка визначається поточним значенням 5 молодших біт T2.
Крок 2. Результат попереднього кроку складається з фрагментом ключа раунду Kr8:
T1 = T1 + Kr8 mod 232.
Крок 3. 31 молодший біт T1 циклічно зсувається вліво аналогічно кроку 1.
Крок 4. T1 складається з фрагментом ключа раунду Kr9 аналогічно кроку 2.
Крок 5. 31 старший біт T1 циклічно зсувається вліво аналогічно кроку 1.
Крок 6. T1 складається з фрагментом ключа раунду Kr10 аналогічно кроку 2.
Крок 7. Кроки 3-6 повторюються з використанням Kr11 і Kr12. Потім повторюються кроки 3-5 з використанням фрагмента ключа раунду Kr13. Результат останнього повтору кроку 5 стає вихідним значенням T1 '.
Аналогічним чином обробляється T2, але з використанням фрагментів ключа раунду Kr2 ... Kr7 замість Kr8 ... Kr13.
Фінальне перетворення складається з циклічного зсуву 128-бітного блоку вліво на кількість біт, що визначається значенням семи молодших біт фрагмента ключа KF1, після чого виконуються наступні дії:
A '= A + KF2 mod 232,
B '= B Е KF3,
C '= C Е KF4,
D '= D + KF5 mod 232.
Розширення ключа
Як було сказано вище, алгоритм може використовувати ключ будь-якого розміру, кратного 64 бітам. Однак основний розмір ключа - 128 біт, тому варто розглянути процедуру розширення саме такого ключа. Дана процедура виконується наступним чином (рис. 10).
Крок 1. Ключ шифрування розбивається на вісім фрагментів по 16 біт KI1 ... KI8.
Крок 2. Кожен 16-бітний фрагмент зводиться в квадрат з отриманням 32-бітного значення, яке складається з константами С0 і С1 наступним чином:
KTi = KIi2 + C1 mod 232,
KTi '= KIi2 + C0 mod 232,
де константи C0 і C1 визначені так:
C0 = A49ED284 ***,
C1 = 735203DE.
*** Шістнадцяткові значення.
Крок 3. Вісім молодших і вісім старших біт тимчасових значень KTi і KTi 'формують фрагменти попереднього розширеного ключа KE1 ... KE8: KEi - результат конкатенації наступних величин:
- 8 молодших біт KTi ',
- 8 старших біт KTi ',
- 8 молодших біт KT (i mod 8) +1,
- 8 старших біт KT (i mod 8) +1.
Крок 4. Середні 16 біт тимчасових значень обробляються аналогічно KI1 ... KI8 для отримання нових значень фрагментів попереднього розширеного ключа (з незначними відмінностями - см. Рис. 10).
Крок 5. Ключі K01 ... K04, Kr1 ... Kr13 (для кожного раунду) і KF1 ... KF5 заповнюються по черзі обчислюються фрагментами KE1 ... KE8.
Процедура розширення ключа виглядає досить складною. Однак дана процедура має істотний недолік - по одержуваних в результаті криптоаналітичних обчислень частинам ключів раунду можна відновити відповідні їм біти ключа шифрування; дане властивість експлуатується в описаних нижче атаках на алгоритм.
криптоаналіз алгоритму
Алгоритм Akelarre був представлений в 1996 р, а вже в наступному році Нільс Фергюсон (Niels Ferguson) і Брюс Шнайер (Bruce Schneier) описали атаку на нього, що дозволяє розкрити алгоритм на основі не більше ста обраних відкритих текстів і вимагає виконання 242 операцій шифрування. Фергюсон і Шнайер зробили висновок про непридатність алгоритму Akelarre (оскільки знайдена ними атака цілком реальна) і запропонували кілька шляхів удосконалення алгоритму, в тому числі повну переробку особливо слабкою процедури розширення ключа. Розробники Akelarre створили нову версію в тому ж 1997 році, проте і вона виявилася досить слабкою.
Ще більш серйозну атаку описали Ларс Кнудсен і Вінсент Ріджмен. Вони знайшли спосіб розкриття ключа алгоритму з вірогідністю близько 70% на основі всього близько 1000 блоків шифртекста при наявності деякої інформації про відповідні їм відкритих текстах (наприклад, досить знати, що це англійський текст в ASCII-кодуванні). Варто сказати, що в порівнянні з іншими видами атак на алгоритми шифрування атака на основі тільки шифртекста найбільш легко можна реалізувати на практиці, оскільки для отримання потрібної для атаки інформації зловмиснику досить простого прослуховування каналу, по якому передається зашифрована інформація. Дивний і той факт, що обидві атаки практично не залежать ні від числа раундів, ні від розміру ключа алгоритму.
Стаття з описом атаки Кнудсена і Ріджмена називається Two Rights Sometimes Make a Wrong, що можна перевести приблизно так: "Іноді два плюса дають мінус". Дивно, але алгоритм Akelarre, що поєднує в собі перетворення двох добре відомих і криптографически стійких алгоритмів, виявився вражаюче слабкий.