Змей (шифр)
-
Обзор алгоритма шифрования Serpent
- Serpent — блочный шифр, занявший второе место в конкурсе AES.
- Разработан Россом Андерсоном, Эли Бихамом и Ларсом Кнудсеном.
- Имеет размер блока 128 бит и поддерживает ключи 128, 192 и 256 бит.
- Состоит из 32-раундовой сети подстановок-перестановок с использованием 4-битных S-блоков.
-
Особенности и безопасность
- Все операции могут выполняться параллельно для повышения параллелизма.
- Имеет высокий запас прочности, но 16 раундов достаточно для защиты от известных атак.
- Не был запатентован и доступен для свободного использования.
-
Ключевое расписание и S-образные блоки
- Инициализация ключа с добавлением отступа для преобразования коротких ключей в длинные.
- Вычисление «предварительных ключей» и «подразделов» для равномерного распределения битов ключей.
- S-образные блоки основаны на 32 рядах s-блоков DES с измененными записями.
-
Перестановки и преобразования
- Начальная и конечная перестановки для упрощения оптимизации.
- Линейное преобразование и нелинейный слой в Rijndael и 32 раунда в Serpent.
-
Сравнение с Rijndael
- Rijndael имеет более высокую скорость и простоту использования для небольших блоков.
- Выбран победителем AES из-за 10 раундов и линейного преобразования.
-
Модификации и атаки
- Serpent-0 и Serpent-1 имеют различия в ключевом расписании.
- Атаки XSL и «встречай посередине» могут ослабить Serpent, но требуют значительных ресурсов.
- Линейный криптоанализ позволяет взломать некоторые раунды Serpent.
-
Дополнительные ресурсы
- Ссылки на внешние ресурсы и официальную реализацию.