Алгоритм MARS
Алгоритм MARS был разработан коллективом криптологов из корпорации IBM. Именно IBM в свое время разработала семейство алгоритмов Lucifer, которое легло в основу прошлого стандарта шифрования США DES. Из авторов Lucifer в разработке алгоритма MARS принял участие Дон Копперсмит (Don Coppersmith), известный также и другими работами в области криптологии.
По правилам конкурса AES разрешалось вносить незначительные изменения в участвовавшие в конкурсе алгоритмы в течение первого раунда конкурса. Пользуясь этим правилом, авторы алгоритма MARS изменили процедуру расширения ключа, в результате чего существенно снизились требования, предъявляемые алгоритмом к энергонезависимой и оперативной памяти [13]. Рассмотрим здесь именно модифицированную версию алгоритма.
Структура алгоритма
Исходя из двух следующих предположений [6]:
- Многие известные криптоаналитические методы отличают первый и последний раунды алгоритма (или несколько первых и/или несколько последних раундов) от остальных и применяют к ним другие приемы, нежели к «центральным» раундам алгоритма. Таким образом, различные раунды алгоритма шифрования играют различное значение в обеспечиваемой алгоритмом криптостойкости.
- Скорее всего, алгоритм с гетерогенной структурой будет лучше противостоять криптоаналитическим методам будущего, чем алгоритм, все раунды которого идентичны.
- разработчики алгоритма MARS придали ему сильно гетерогенную структуру раунды алгоритма весьма различаются между собой. Алгоритм MARS можно описать следующим образом (см. рис. 6):
- Предварительное наложение ключа: на 32-битные субблоки A, B, C, D накладываются 4 фрагмента расширенного ключа k0...k3 операцией сложения по модулю 232.
- Выполняются 8 раундов прямого перемешивания (без участия ключа шифрования).
- Выполняются 8 раундов прямого криптопреобразования.
- Выполняются 8 раундов обратного криптопреобразования. Этапы 3 и 4 называются «криптографическим ядром» алгоритма MARS.
- Выполняются 8 раундов обратного перемешивания, также без участия ключа шифрования.
- Финальное наложение фрагментов расширенного ключа k36...k39 операцией вычитания по модулю 232.
Алгоритм представляет собой расширенную сеть Фейстеля. В каждом раунде выполняется обработка одного из субблоков и наложение результатов обработки на остальные субблоки, после чего субблоки меняются местами. Конкретные преобразования зависят от типа раунда и будут рассмотрены ниже. Кроме того, между раундами могут выполняться различные дополнительные действия, которые также будут описаны далее.
Раунд прямого перемешивания показан на рис. 7. Как видно из рисунка, в раунде выполняются следующие действия:
- Значение субблока A прогоняется через таблицу замен S0 и накладывается на субблок B операцией XOR.
- Исходное значение субблока A вращается на 8 бит вправо.
- Результат предыдущего шага обрабатывается таблицей замен S1 и снова накладывается на субблок B операцией сложения по модулю 232.
- Результат шага 2 вращается на 8 бит вправо.
- Результат предыдущего шага обрабатывается таблицей замен S0 и накладывается на субблок С операцией сложения по модулю 232.
- Результат шага 4 вращается на 8 бит вправо.
- Результат предыдущего шага обрабатывается таблицей замен S1 и накладывается на субблок D операцией XOR.
- Субблоки меняются местами, как показано на рис. 7.
Кроме того, в некоторых раундах прямого перемешивания выполняются следующие дополнительные операции (не приведены на рис. 7):
- В раундах 0 и 4 после шага 7 выполняется наложение значения субблока D на субблок A операцией сложения по модулю 232.
- В раундах 1 и 5 субблок B аналогичным образом накладывается на субблок A.
По словам авторов алгоритма, эти операции существенно усиливают алгоритм MARS против дифференциального криптоанализа.
Таблицы замен S0 и S1 определены в спецификации алгоритма [6] следующим образом:
S0:
09D0C479 | 28C8FFE0 | 84AA6C39 | 9DAD7287 | 7DFF9BE3 | D4268361 |
C96DA1D4 | 7974CC93 | 85D0582E | 2A4B5705 | 1CA16A62 | C3BD279D |
0F1F25E5 | 5160372F | C695C1FB | 4D7FF1E4 | AE5F6BF4 | 0D72EE46 |
FF23DE8A | B1CF8E83 | F14902E2 | 3E981E42 | 8BF53EB6 | 7F4BF8AC |
83631F83 | 25970205 | 76AFE784 | 3A7931D4 | 4F846450 | 5C64C3F6 |
210A5F18 | C6986A26 | 28F4E826 | 3A60A81C | D340A664 | 7EA820C4 |
526687C5 | 7EDDD12B | 32A11D1D | 9C9EF086 | 80F6E831 | AB6F04AD |
56FB9B53 | 8B2E095C | B68556AE | D2250B0D | 294A7721 | E21FB253 |
AE136749 | E82AAE86 | 93365104 | 99404A66 | 78A784DC | B69BA84B |
04046793 | 23DB5C1E | 46CAE1D6 | 2FE28134 | 5A223942 | 1863CD5B |
C190C6E3 | 07DFB846 | 6EB88816 | 2D0DCC4A | A4CCAE59 | 3798670D |
CBFA9493 | 4F481D45 | EAFC5CA5 | DB1129D6 | B0449E20 | 0F5407FB |
6167D9A8 | D1F45763 | 4DAA96C3 | 3BEC5958 | ABABA014 | B6CCD201 |
38D6279F | 02682215 | 8F376CD5 | 092C237E | BFC56593 | 32889D2C |
854B3E95 | 05BB5B43 | 7DCD5DCD | A02E926C | FAE527E5 | 36A1C330 |
3412E1AE | F257F462 | 3C4F1D71 | 30A2E809 | 68E5F551 | 9C61BA44 |
5DED0AB8 | 75CE09C8 | 9654F93E | 698C0CCA | 243CB3E4 | 2B062B97 |
0F3B8D9E | 00E050DF | FC5D6166 | E35F9288 | C079550D | 0591AEE8 |
8E531E74 | 75FE3578 | 2F6D829A | F60B21AE | 95E8EB8D | 6699486B |
901D7D9B | FD6D6E31 | 1090ACEF | E0670DD8 | DAB2E692 | CD6D4365 |
E5393514 | 3AF345F0 | 6241FC4D | 460DA3A3 | 7BCF3729 | 5BF1D1E0 |
14AAC070 | 1587ED55 | 3AFD7D3E | D2F29E01 | 29A9D1F6 | EFB10C53 |
CF3B870F | B414935C | 664465ED | 024ACAC7 | 59A744C1 | 1D2936A7 |
DC580AA6 | CF574CA8 | 040A7A10 | 6CD81807 | 8A98BE4C | AССЕА063 |
C33E92B5 | D1E0E03D | B322517E | 2092BD13 | 386B2C4A | 52E8DD58 |
58656DFB | 50820371 | 41811896 | E337EF7E | D39FB119 | C97F0DF6 |
68FEA01B | A150A6E5 | 55258962 | EB6FF41B | D7C9CD7A | A619CD9E |
BCF09576 | 2672C073 | F003FB3C | 4AB7A50B | 1484126A | 487BA9B1 |
A64FC9C6 | F6957D49 | 38B06A75 | DD805FCD | 63D094CF | F51C999E |
1AA4D343 | B8495294 | CE9F8E99 | BFFCD770 | C7C275CC | 378453A7 |
7B21BE33 | 397F41BD | 4E94D131 | 92CC1F98 | 5915EA51 | 99F861B7 |
C9980A88 | 1D74FD5F | B0A495F8 | 614DEED0 | B5778EEA | 5941792D |
FA90C1F8 | 33F824B4 | C4965372 | 3FF6D550 | 4CA5FEC0 | 8630E964 |
5B3FBBD6 | 7DA26A48 | B203231A | 04297514 | 2D639306 | 2EB13149 |
16A45272 | 532459A0 | 8E5F4872 | F966C7D9 | 07128DC0 | 0D44DB62 |
AFC8D52D | 06316131 | D838E7CE | 1BC41D00 | 3A2E8C0F | EA83837E |
B984737D | 13BA4891 | C4F8B949 | A6D6ACB3 | A215CDCE | 8359838B |
6BD1AA31 | F579DD52 | 21B93F93 | F5176781 | 187DFDDE | E94AEB76 |
2B38FD54 | 431DE1DA | AB394825 | 9AD3048F | DFEA32AA | 659473E3 |
623F7863 | F3346C59 | AB3AB685 | 3346A90B | 6B56443E | C6DE01F8 |
8D421FC0 | 9B0ED10C | 88F1A1E9 | 54C1F029 | 7DEAD57B | 8D7BA426 |
4CF5178A | 551A7CCA | 1A9A5F08 | FCD651B9 | 25605182 | E11FC6C3 |
B6FD9676 | 337B3027 | B7C8EB14 | 9E5FD030 |
В качестве входного значения S0 (аналогично и S1) принимает 8 младших бит входного слова. Таблица меняет значение 0 на 09D0C479, значение 1 на 28C8FFE0 и т. д.
S1:
6B57E354 | AD913CF7 | 7E16688D | 58872A69 | 2C2FC7DF | E389CCC6 |
30738DF1 | 0824A734 | E1797A8B | A4A8D57B | 5B5D193B | C8A8309B |
73F9A978 | 73398D32 | 0F59573E | E9DF2B03 | E8A5B6C8 | 848D0704 |
98DF93C2 | 720A1DC3 | 684F259A | 943BA848 | A6370152 | 863B5EA3 |
D17B978B | 6D9B58EF | 0A700DD4 | A73D36BF | 8E6A0829 | 8695BC14 |
E35B3447 | 933AC568 | 8894B022 | 2F511C27 | DDFBCC3C | 006662B6 |
117C83FE | 4E12B414 | C2BCA766 | 3A2FEC10 | F4562420 | 55792E2A |
46F5D857 | CEDA25CE | C3601D3B | 6C00AB46 | EFAC9C28 | B3C35047 |
611DFEE3 | 257C3207 | FDD58482 | 3B14D84F | 23BECB64 | A075F3A3 |
088F8EAD | 07ADF158 | 7796943C | FACABF3D | C09730CD | F7679969 |
DA44E9ED | 2C854C12 | 35935FA3 | 2F057D9F | 690624F8 | 1CB0BAFD |
7B0DBDC6 | 810F23BB | FA929A1A | 6D969A17 | 6742979B | 74AC7D05 |
010E65C4 | 86A3D963 | F907B5A0 | D0042BD3 | 158D7D03 | 287A8255 |
BBA8366F | 096EDC33 | 21916A7B | 77B56B86 | 951622F9 | A6C5E650 |
8CEA17D1 | CD8C62BC | A3D63433 | 358A68FD | 0F9B9D3C | D6AA295B |
FE33384A | C000738E | CD67EB2F | E2EB6DC2 | 97338B02 | 06C9F246 |
419CF1AD | 2B83C045 | 3723F18A | CB5B3089 | 160BEAD7 | 5D494656 |
35F8A74B | 1E4E6C9E | 000399BD | 67466880 | B4174831 | ACF423B2 |
CA815AB3 | 5A6395E7 | 302A67C5 | 8BDB446B | 108F8FA4 | 10223EDA |
92B8B48B | 7F38D0EE | AB2701D4 | 0262D415 | AF224A30 | B3D88ABA |
F8B2C3AF | DAF7EF70 | CC97D3B7 | E9614B6C | 2BAEBFF4 | 70F687CF |
386C9156 | CE092EE5 | 01E87DA6 | 6CE91E6A | BB7BCC84 | C7922C20 |
9D3B71FD | 060E41C6 | D7590F15 | 4E03BB47 | 183C198E | 63EEB240 |
2DDBF49A | 6D5CBA54 | 923750AF | F9E14236 | 7838162B | 59726C72 |
81B66760 | BB2926C1 | 48A0CE0D | A6C0496D | AD43507B | 718D496A |
9DF057AF | 44B1BDE6 | 054356DC | DE7CED35 | D51A138B | 62088CC9 |
35830311 | C96EFCA2 | 686F86EC | 8E77CB68 | 63E1D6B8 | C80F9778 |
79C491FD | 1B4C67F2 | 72698D7D | 5E368C31 | F7D95E2E | A1D3493F |
DCD9433E | 896F1552 | 4BC4CA7A | A6D1BAF4 | A5A96DCC | 0BEF8B46 |
A169FDA7 | 74DF40B7 | 4E208804 | 9A756607 | 038E87C8 | 20211E44 |
8B7AD4BF | C6403F35 | 1848E36D | 80BDB038 | 1E62891C | 643D2107 |
BF04D6F8 | 21092C8C | F644F389 | 0778404E | 7B78ADB8 | A2C52D53 |
42157ABE | A2253E2E | 7BF3F4AE | 80F594F9 | 953194E7 | 77EB92ED |
B3816930 | DA8D9336 | BF447469 | F26D9483 | EE6FAED5 | 71371235 |
DE425F73 | B4E59F43 | 7DBE2D4E | 2D37B185 | 49DC9A63 | 98C39D98 |
1301C9A2 | 389B1BBF | 0C18588D | A421C1BA | 7AA3865C | 71E08558 |
3C5CFCAA | 7D239CA4 | 0297D9DD | D7DC2830 | 4B37802B | 7428AB54 |
AEEE0347 | 4B3FBB85 | 692F2F08 | 134E578E | 36D9E0BF | AE8B5FCF |
EDB93ECF | 2B27248E | 170EB1EF | 7DC57FD6 | 1E760F16 | B1136601 |
864E1B9B | D7EA7319 | 3AB871BD | CFA4D76F | E31BD782 | 0DBEB469 |
ABB96061 | 5370F85D | FFB07E37 | DA50D0FB | EBC977B6 | 0B98B40F |
3A4D0FE6 | DF4FC26B | 159CF22A | C298D6E2 | 2B78EF6A | 61A94AC0 |
AB561187 | 14EEA0F0 | DF0D4164 | 19AF70EE |
Структура раунда прямого криптопреобразования приведена на рис. 8.
Основой раунда является расширяющее криптопреобразование E, преобразующее 32-битное входное слово A в три выходных 32-битных значения, каждое из которых определенным образом накладывается на остальные субблоки (см. рис. 8). После этого субблок A вращается влево на 13 бит, затем субблоки меняются местами аналогично раунду прямого перемешивания.
Преобразование E показано на рис. 9.
Щёлкните по картинке, чтобы увеличить.
Из входного значения формируются три потока O1...O3, над которыми производятся следующие действия:
O3 = O2 <<< 13,
O2 = O2 + k2r+4 mod 232,
O3 = O3 * k2r+5 mod 232,
O3 = O3 <<< 5,
O1 = S(O2),
O1 = O1 Å O3,
O2 = O2 <<< O3’,
O3 = O3 <<< 5,
O1 = O1 Å O3,
O1 = O1 <<< O3’,
где I входное значение,
r номер текущего раунда, считая с 0-го (при нумерации раундов в данном случае учитываются только раунды криптоядра алгоритма),
S табличная замена для операции E, представляет собой объединение описанных выше таблиц S0 и S1; объединенная таблица содержит 512 значений, выходное значение выбирается по значению 9 младших бит входного слова.
Стоит обратить внимание на то, что в преобразовании E используются операции вращения на переменное число бит; в этом случае запись O3’ обозначает, что число бит вращения определяется значением младших пяти бит текущего значения O3.
Структура обратного криптораунда показана на рис. 10.
От прямого криптораунда его отличает лишь измененный порядок наложения выходных значений преобразования E O1...O3 на слова B, C и D.
Раунд обратного перемешивания (см. рис. 11) более существенно отличается от прямого. Фактически, обратное перемешивание выполняет обратные операции в обратной последовательности (см. рис. 7 и 11):
- Значение субблока A прогоняется через таблицу замен S1 и накладывается на субблок B операцией XOR.
- Исходное значение субблока A вращается на 8 бит влево.
- Результат предыдущего шага обрабатывается таблицей замен S0 и накладывается на субблок C операцией вычитания по модулю 232.
- Результат шага 2 вращается на 8 бит влево.
- Результат предыдущего шага обрабатывается таблицей замен S1 и накладывается на субблок D операцией вычитания по модулю 232.
- Результат шага 4 вращается на 8 бит влево.
- Результат предыдущего шага обрабатывается таблицей замен S0 и накладывается на субблок D операцией XOR.
- Субблоки меняются местами, как показано на рис. 11.
Аналогично прямому перемешиванию, в некоторых раундах выполняются следующие дополнительные операции, не показанные на рис. 11:
- В раундах 1 и 5 после шага 7 выполняется наложение значения субблока A на субблок B операцией вычитания по модулю 232.
- В раундах 2 и 6 субблок C аналогичным образом накладывается на субблок B.
Расшифрование выполняется применением обратных операций в обратной последовательности; подробно расшифрование описано в спецификации алгоритма [6].
Процедура расширения ключа
Ключ шифрования алгоритма MARS может иметь любой размер в диапазоне от 128 до 448 бит включительно, кратный 32 битам. Расширение ключа представляет собой формирование на основе ключа шифрования 40 подключей по 32 бита каждый (причем, подключи должны обладать определенными характеристиками, о которых будет сказано ниже), для чего выполняются следующие операции:
- Формируется временный массив T0...T14:T0 = KI0,
T1 = KI1,
...
Tn-1 = KIn-1,
Tn = n,
Tn+1 = Tn+2 = ... = T14 = 0,где KI0...KIn-1 исходный ключ шифрования,
n его размер в 32-битных словах от 4 до 14 включительно. - Данный шаг повторяется 4 раза (каждая итерация дает 10 вычисленных фрагментов расширенного ключа) и содержит следующие операции:
- линейное преобразование: Ti = Ti Å ((Ti-7 mod 15 Å Ti-2 mod 15) <<< 3) Å (4i + j),где j номер итерации, начиная с 0,
i = 0...14; - перемешивание массива T: Ti = (Ti Å S(Ti-1 mod 15)) <<< 9,где S табличная замена, выполняемая по тем же правилам, что и в операции E;
- заключительная перестановка: k10j+n = T4n mod15,где n = 0...9.
- линейное преобразование:
- Наложение на вычисленные подключи дополнительных требований, состоящих в следующем:
- Каждый подключ, используемый для умножения в операции E (то есть подключи с нечетными индексами от k5 до k35 включительно), должен иметь нечетное значение. Мало того, единичными должны быть два младших бита подключа, а не один.
- Те же подключи не должны содержать 10 нулевых или 10 единичных бит подряд.
- 2 младших бита обрабатываемого подключа устанавливаются в единичные значения; старое значение запоминается в переменной j (оно будет использовано впоследствии). Результирующее значение подключа обозначается как W.
- Вычисляется 32-битная маска M, которая будет использована для модификации подключа для обеспечения отсутствия в нем 10 подряд нулевых или единичных бит. Маска вычисляется следующим образом:
A) Устанавливаются в 1 биты M, соответствующие тем битам обрабатываемого подключа, которые входят в последовательности из 10 нулевых или 10 единичных бит. Остальные биты устанавливаются в 0.
B) Обнуляются те единичные биты маски M, которые соответствуют любому из условий:i < 2,где i номер бита, начиная с 0, а Wi значение i-го бита.
i = 31,
Wi != Wi-1,
Wi != Wi+1, - Используется таблица корректирующих значений B, определенная следующим образом: B0 = A4A8D57B,
B1 = 5B5D193B,
B2 = C8A8309B,
B3 = 73F9A978.
Элементы таблицы B эквивалентны элементам с 265-го по 268-й включительно объединенной таблицы S; именно эти элементы используются для коррекции подключей благодаря их специфическим свойствам.
С помощью данной таблицы следующим образом вычисляется финальное значение подключа Ki:Ki = W Å ((Bj <<< Ki-1) & M),где & логическая побитовая операция «и», а вращение Bj определяется пятью младшими битами предыдущего подключа Ki-1.
Описанная процедура гарантирует требуемые свойства у подключей [6].Алгоритм RC6
Алгоритм RC6 был разработан в 1998 г. рядом специалистов научного подразделения известнейшей фирмы RSA Data Security RSA Laboratories: Рональдом Ривестом (Ronald Rivest, основатель RSA Data Security), Мэттом Робшоу (Matt Robshaw), Рэем Сидни (Ray Sidney) и Икван Лайзой Ин (Yiqun Lisa Yin) специально для участия в конкурсе AES [17]. Алгоритм во многом унаследовал черты предыдущего алгоритма Рональда Ривеста 64-битного блочного шифра RC5, разработанного в 1997 г. (подробное описание RC5 на русском языке можно найти в [19]). Фактически, алгоритм претерпел два принципиальных изменения:
- в отличие от RC5, в алгоритме используется умножение по модулю 232;
- для сохранения 32-битных вычислений вместо разбиения шифруемого блока данных (128 бит согласно принципиальному требованию конкурса AES) на два 64-битных субблока выполняется его разбиение на 4 32-битных субблока и их обработка по несколько измененной схеме [17].
Структура алгоритма
Как и алгоритм RC5, RC6 имеет гибкую структуру: помимо секретного ключа, параметрами алгоритма являются следующие:
- размер слова w; RC6 шифрует блоками по 4 слова;
- количество раундов алгоритма R;
- размер секретного ключа в байтах b.
Аналогично RC5, для уточнения параметров алгоритма, используемых в его конкретной реализации, применяется обозначение RC6-w/R/b. Поскольку в конкурсе AES 128-битный блок является обязательным, значение w фиксировано и равно 32. В спецификации алгоритма [14] фиксируется также количество раундов: R = 20. Поскольку конкурс AES предусматривает использование трех фиксированных размеров ключей, рассмотрим три следующих варианта алгоритма: RC6-32/20/16, RC6-32/20/24 и RC6-32/20/32, совокупность которых и будет подразумеваться далее под названием «RC6».
Структура алгоритма представлена на рис. 12.
Щёлкните по картинке, чтобы увеличить.
Как было сказано выше, в алгоритме используется 20 раундов преобразований, перед которыми выполняется частичное входное отбеливание:
D = D + K1 mod 232,
где A, B, C, D текущие значения обрабатываемых 32-битных субблоков,
K0...K43 фрагменты расширенного ключа.
Аналогичным образом выполняется частичное выходное отбеливание:
C = C + K43 mod 232.
В каждом раунде алгоритма выполняются следующие действия:
t2 = f(D) <<< 5,
A = ((A Å t1) <<< t2) + K2i mod 232,
C = ((C Å t2) <<< t1) + K2i+1 mod 232,
где t1 и t2 временные переменные,
количество бит вращения на переменное число бит определяется значением 5 младших бит параметра (t1 или t2),
функция f() выполняет следующее квадратичное преобразование:
В конце каждого раунда выполняется сдвиг субблоков см. рис. 12.
При расшифровании подключи используются в обратном порядке, наложение подключей вместо сложения по модулю 232 выполняется вычитанием, а также сдвиг субблоков выполняется в начале раунда и в обратную сторону. Преобразование f() не претерпело изменений (см. рис. 13).
Щёлкните по картинке, чтобы увеличить.
Процедура расширения ключа
Процедура расширения ключа RC6 аналогична RC5, за исключением того, что RC6 требуется существенно больше сгенерированных подключей, а именно 2R+4, то есть K0...K43 для 20 раундов. Рассмотрим данную процедуру для алгоритма RC6 в варианте для конкурса AES, то есть с указанными выше фиксированными параметрами.
Расширение ключа выполняется в два этапа:
- Инициализация массива расширенных ключей K0...K43, которая производится следующим образом: K0 = P32,где P32 и Q32 псевдослучайные константы, образованные путем умножения на 232 дробной части и последующего округления до ближайшего нечетного целого двух математических констант (e и f соответственно):
Ki+1 = Ki + Q32 mod 232,P32 = B7E15163,Авторы алгоритма в его спецификации [14] утверждают, что выбор данных значений не является важным. Соответственно, аналогично описанному выше алгоритму Twofish-FK, при необходимости создания реализации алгоритма RC6, не совместимой со стандартной, следует изменить значения P32 и Q32.
Q32 = 9E3779B9, - Циклически выполняются следующие действия: A = Ki = (Ki + A + B mod 232) <<< 3,где i, j, A и B временные переменные, их начальные значения равны нулю,
B = KIj = (KIj + A + B mod 232) <<< (A + B),
i = i + 1 mod 44,
j = j + 1 mod c,
KI исходный ключ шифрования, представленный в виде c 32-битных слов.
Выполняется 3c итераций цикла.
Результаты проделанной аналитиками работы по изучению алгоритмов-финалистов NIST сформулировал в виде отчета [12]. Данный отчет содержит как результаты анализа алгоритмов, так и обоснование критериев, по которым выполнялась оценка. Автор данной статьи позволил себе на основе отчета [12] кратко сформулировать сравнительные оценки пяти алгоритмов-финалистов конкурса AES по основным критериям в виде следующей таблицы:
№ | Категория | Serpent | Twofish | MARS | RC6 | Rijndael |
1 | Криптостойкость | + | + | + | + | + |
2 | Запас криптостойкости | ++ | ++ | ++ | + | + |
3 | Скорость шифрования при программной реализации | - | ± | ± | + | + |
4 | Скорость расширения ключа при программной реализации | ± | - | ± | ± | + |
5 | Смарт-карты с большим объемом ресурсов | + | + | - | ± | ++ |
6 | Смарт-карты с ограниченным объемом ресурсов | ± | + | - | ± | ++ |
7 | Аппаратная реализация (ПЛИС) | + | + | - | ± | + |
8 | Аппаратная реализация (специализированная микросхема) | + | ± | - | - | + |
9 | Защита от атак по времени выполнения и потребляемой мощности3 | + | ± | - | - | + |
10 | Защита от атак по потребляемой мощности на процедуру расширения ключа | ± | ± | ± | ± | - |
11 | Защита от атак по потребляемой мощности на реализации в смарт-картах | ± | + | - | ± | + |
12 | Возможность расширения ключа «на лету» | + | + | ± | ± | ± |
13 | Наличие вариантов реализации (без потерь в совместимости) | + | + | ± | ± | + |
14 | Возможность параллельных вычислений | ± | ± | ± | ± | + |
Стоит прокомментировать некоторые строки приведенной таблицы:
- Криптостойкость всех алгоритмов-финалистов оказалась достаточной в процессе исследований не было обнаружено каких-либо реально реализуемых атак на полноценные и полнораундовые версии алгоритмов. В данном случае криптоаналитики обычно исследуют варианты алгоритмов с усеченным числом раундов, либо с некоторыми внесенными изменениями, незначительными, но ослабляющими алгоритм. Под запасом криптостойкости (security margin) эксперты NIST подразумевают соотношение полного (предусмотренного в спецификациях алгоритмов) числа раундов и максимального из тех вариантов, против которых действуют какие-либо криптоаналитические атаки. Например, с помощью дифференциально-линейного криптоанализа вскрывается 11-раундовый Serpent [5], тогда как в оригинальном алгоритме выполняется 32 раунда. Эксперты NIST в отчете [12] предупредили, что данная оценка является весьма поверхностной и не может быть значимой при выборе алгоритма-победителя конкурса, но, тем не менее, отметили, что запас криптостойкости у Rijndael и RC6 несколько ниже, чем у остальных алгоритмов-финалистов.
- В пп. 5-8 приведена сравнительная оценка возможности и эффективности реализации алгоритмов в перечисленных устройствах.
- В пп. 9-11 имеется в виду, насколько операции, выполняемые конкретным алгоритмом, могут быть подвержены анализу указанным методом. При этом принималось в расчет то, что операции могут быть модифицированы с целью усложнения криптоанализа за счет потери в скорости шифрования (например, проблемное в этом смысле вращение на переменное число бит может принудительно выполняться за равное число тактов то есть максимально возможное для данной операции; именно подобные меры противодействия атакам по времени исполнения и потребляемой мощности рекомендует их изобретатель Пол Кохер (Paul C. Kocher) [11]).
- Из описаний алгоритмов видно, что все они поддерживают расширение ключа «на лету» (то есть подключи могут генерироваться непосредственно в процессе шифрования по мере необходимости), однако, только Serpent и Twofish поддерживают такую возможность без каких-либо ограничений.
- Под наличием вариантов реализации (implementation flexibility) имеется в виду возможность различным образом реализовывать какие-либо операции алгоритма с оптимизацией под конкретные цели. Наиболее показательными в этом смысле являются упомянутые ранее варианты процедуры расширения ключа алгоритма Twofish [16], позволяющие оптимизировать реализацию алгоритма в зависимости, прежде всего, от частоты смены ключа.
Сформулируем основные достоинства и недостатки каждого из рассмотренных в данной статье алгоритмов-финалистов [12]:
Алгоритм | Достоинства | Недостатки |
Serpent |
|
|
Twofish |
|
|
MARS | Зашифрование и расшифрование в алгоритме MARS практически идентичны. |
|
RC6 |
|
|
Как известно, проанализировав результаты всех исследований, эксперты выбрали в качестве стандарта AES алгоритм Rijndael. Что не выглядит удивительным в таблице с характеристиками алгоритмов отчетливо видно, что практически по всем характеристикам Rindael, как минимум, не уступает остальным алгоритмам-финалистам.
Что касается алгоритмов Serpent, Twofish, MARS и RC6, то видно, что они практически равнозначны по совокупности характеристик, за исключением алгоритма MARS, имеющего существенно больше недостатков, в том числе, алгоритм практически нереализуем в условиях ограниченных ресурсов.Литература, источники
- AES Round 1 Information. // http://csrc.nist.gov January 26, 2001.
- Anderson R., Biham E. Two Practical and Provably Secure Block Ciphers: BEAR and LION. // http://citeseer.ist.psu.edu 1995.
- Anderson R., Biham E., Knudsen L. Serpent: A Proposal for the Advanced Encryption Standard. // http://csrc.nist.gov.
- Announcing Request for Candidate Algorithm Nominations for the Advanced Encryption Standard (AES). // http://csrc.nist.gov Department of Commerce National Institute of Standards and Technology Federal Register: September 12, 1997.
- Biham E., Dunkelman O., Keller N. Differential-Linear Cryptanalysis of Serpent. // http://citeseer.ist.psu.edu Technion, Haifa, Israel.
- Burwick C., Coppersmith D., D’Avignon E., Gennaro R., Halevi S., Jutla C., Matyas S.M.Jr., O’Connor L., Peyravian M., Safford D., Zunic N. MARS a candidate cipher for AES. // http://www.ibm.com IBM Corporation Revised, September, 22 1999.
- Courtois N., Castagnos G., Goubin L. What do DES S-boxes Say to Each Other? // http://eprint.iacr.org Axalto Cryptographic Research & Advanced Security, Cedex, France.
- Daemen J., Knudsen L., Rijmen V. The Block Cipher Square. // http://www.esat.kuleuven.ac.be.
- FIPS 46-3. Data Encryption Standard (DES). // http://csrc.nist.gov Reaffirmed 1999 October 25.
- FIPS 81. DES Modes of Operation. // http://csrc.nist.gov 1980 December 2.
- Kocher P.C. Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems. // http://citeseer.ist.psu.edu Cryptography Research, Inc., San Francisco, USA.
- Nechvatal J., Barker E., Bassham L., Burr W., Dworkin M., Foti J., Roback E. Report on the Development of the Advanced Encryption Standard (AES). // http://csrc.nist.gov National Institute of Standards and Technology.
- Nechvatal J., Barker E., Dodson D., Dworkin M., Foti J., Roback E. Status report on the first round of the development of the advanced encryption standard. // http://csrc.nist.gov National Institute of Standards and Technology.
- Rivest R.L., Robshaw M.J.B., Sidney R., Lin Y.L. The RC6 Block Cipher. // http://www.rsasecurity.com Version 1.1 August 20, 1998.
- Schneier B. Description of a new variable-length key 64-bit block cipher (blowfish). // http://www.schneier.com.
- Schneier B., Kelsey J., Whiting D., Wagner D., Hall C., Ferguson N. Twofish: A 128-bit Block Cipher. // http://www.schneier.com 15 June 1998.
- What are RC5 and RC6? // http://www.rsasecurity.com.
- Панасенко С. Алгоритм шифрования DES и его варианты. // Connect! Мир связи. 2006 №№ 3-6.
- Панасенко С. Интересные алгоритмы шифрования, часть 2. // BYTE/Россия. 2006 № 5 с. 74-79.
- Панасенко С.П., Батура В.П. Основы криптографии для экономистов: учебное пособие. Под ред. Л.Г. Гагариной. М.: Финансы и статистика, 2005 176 с.
- Соколов А.В., Шаньгин В.Ф. Защита информации в распределенных корпоративных сетях и системах. М.: ДМК Пресс, 2002 656 с.
- Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си. Пер. с англ.: М.: Издательство ТРИУМФ, 2002 816 с.