Кто владеет информацией — тот владеет миром.
Ротшильд
Пока другие только пытаются понять законы рынка, используй их!
Терморектальный криптоанализTM
| |
Алгоритм SERPENT
Алгоритм SERPENT разработан тремя известнейшими криптологами: Россом Андерсоном, Эли Бихамом и Ларсом Кнудсеном. Каждый из них знаменит своими криптоаналитическими работами, а также разработанными ранее ал-горитмами шифрования (например, широкую известность получили алгоритмы
Bear и Lion, разработанные Андерсоном и Бихамом не менее известен алгоритм Square, разработанный авторами алгоритма Rijndael Джоан Деймен и Винсентом Риджменом при участии Ларса Кнудсена). Именно Эли Бихама без преувеличения можно назвать величайшим крипто-аналитиком современности — его авторству (часто в соавторстве с другими специалистами) принадлежит множество работ, посвященных методам вскрытия различных известных алгоритмов шифрования.
Еще до конкурса AES появился алгоритм SERPENT-0, отличающийся от присланного на конкурс алгоритма SERPENT-1 (или просто Serpent) только тем, что в нем были использованы таблицы замен алгоритма DES (в незначительно модифицированном виде). В SERPENT используются уже оригинальные таблицы замен, которые, по словам его авторов, вкупе с незначительным изменением процедуры расширения ключа усилили алгоритм против дифференциального и линейного криптоанализа.
Рассмотрим здесь именно тот алгоритм SERPENT, который был прислан на конкурс AES и стал одним из его финалистов.
Структура алгоритма
Алгоритм SERPENT представляет собой SP-сеть, в которой блок данных в процессе шифрования разбивается на 4 субблока по 32 бита.
Функция раунда весьма проста. Перечислим ее действия:
Наложение 128-битного ключа раунда побитовой логической операцией исключающее «или» (XOR).
Табличная замена. Обрабатываемый 128-битный блок данных разбивается на 32 фрагмента по 4 бита, над каждым из которых выполняется табличная замена 4x4 битов. Полученный результат объединяется обратно в 128-битный блок.
В каждом раунде используется одна и та же таблица; всего же в алгоритме определены 8 таблиц замен 50...57 , которые циклически используются в 32 раундах шифрования.
Ячейки таблицы содержат выходные значения; входное значение определяет требуемый номер столбца. Например, таблица 50 меняет 0 на 3, 1 на 8 и т. д.
Таблицы замен алгоритма SERPENT определенным образом сгенерированы из таблиц алгоритма DES. В спецификации алгоритма приведен псевдокод, использованный для генерации таблиц S0...S7.
Каждая ячейка таблицы соответствует биту выходного значения (от 0 до 127); в ячейке перечислены входные биты, применение к которым операции XOR дает выходное значение.
Основным критерием при разработке линейного преобразования было максимальное ускорение влияния каждого бита входного значения и ключа шифрования на каждый бит шифртекста. Как пишут авторы алгоритма, такое влияние достигается уже после трех раундов алгоритма SERPENT.
Расшифровывание
Расшифровывание производится выполнением обратных операций в обратной последовательности. В частности, вместо таблиц замен S0...S7 применяются в обратной последовательности инверсные таблицы замен InvS0...InvS7.
Аналогичным образом вместо «прямого» линейного преобразования используется обратное (принцип действия обратного преобразования аналогичен прямому и описан выше).
Процедура расширения ключа
Согласно требованиям конкурса AES, алгоритм SERPENT поддерживает три размера ключа шифрования: 128, 192 и 256 битов. Однако фактически ключ алгоритма SERPENT может иметь произвольный размер, меньший 256. Такой «неполный» ключ перед выполнением его расширения дополняется по следующему правилу:
Ключ дополняется одним единичным битом справа.
Затем ключ дополняется справа нулевыми битами до достижения 256-битного размера.
Криптостойкость алгоритма
В процессе исследований эксперты не обнаружили каких-либо криптоанали-тических атак на полнораундовую версию алгоритма SERPENT. Это справедливо и в отношении остальных алгоритмов — финалистов конкурса AES. Однако данные алгоритмы значительно различаются по своим характеристикам.
По материалам книги Сергея Панасенко «Алгоритмы шифрования»
|