Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №21 / Serpent_материалы

.doc
Скачиваний:
33
Добавлен:
01.05.2014
Размер:
54.27 Кб
Скачать

Serpent. Основные параметры.

Название/статус

Serpent. Финалист конкурса на выработку нового стандарта шифрования США.

Время/место разработки

1997? год

Авторы

Росс Андерсон (Ross Anderson)

Эли Бихам (Eli Biham)

Ларс Кнудсен (Lars Knudsen)

Архитектура

Вариант общей подстановочно-перестановочной сети, построенный по схеме KASLT: "key addition-substitution-linear transformation", "прибавление ключевого элемента-подстановка-линейное преобразование".

Параметры

pазмер блока, бит 128

pазмер ключа, бит 1-256(1)

число раундов 32

pазмер ключевого элемента, бит 128 (размер блока)

число ключевых элементов 33 (на 1 больше числа раундов)

Патент

Не запатентован

Особенности

1. Алгоритм оптимизирован для программной реализации в технике "битовых срезов" (bitslice) и имеет ряд обусловленных этим фактом особенностей: в нем используются начальная и обратная ей конечная битовые перестановки, не влияющие на стойкость шифра и предназначенные для оптимизации его реализации. При реализации в технике "битовых срезов" выполнение этих перестановок в явном виде не требуется, при традиционной реализации - требуется. Кроме того, по той же самой причине в алгоритме используются узлы замен малого размера (4 на 4 бита), так как в рамках указанной техники они реализуются в виде серии логических операций над данными и при большем размере это становится затруднительным.

2. В исходной версии алгоритма (Serpent-0) использовались узлы замен DES, поскольку они достаточно хорошо исследованы. В текущей версии алгоритма (Serpent-1) узлы замен конструируются из узлов замен DES в ходе некоторого детерминированного процесса.

Замечания

(1) В алгоритме может использоваться ключ произвольного размера от 1 (технически) до 256 бит, однако с целью удовлетворить требованиям НИСТ США к новому стандарту возможный размер ключа был ограничен значениями 128, 192 и 256 бит. "Короткие" ключи дополняются одним единичным и нужным количеством нулевых битов до полноразмерного 256-битового ключа. Таким образом никакие два "коротких" ключа не могут быть расширены до одного и того же полноразмерного ключа, и, очевидно, для каждого "короткого" ключа существует эквивалентный ему полноразмерный.

Ресурсы

Домашняя страница шифра "Serpent". http://www.cl.cam.ac.uk/~rja14/serpent.html

Шифр "Serpent" на www-странице Эли Бихама. http://www.cs.technion.ac.il/~biham/Reports/Serpent/

Шифр "Serpent" на www-странице Ларса Кнудсена. http://www.ii.uib.no/~larsr/serpent/index.html

Финалист AES – шифр Serpent

Алгоритм разработан группой ученых из нескольких исследовательских центров мира. Алгоритм представляет собой сетей Фейштеля для четырех ветвей смешанного типа : 2 четные ветви изменяют совместо значения нечетных, затем меняются местами. В качестве криптопреобразований используются только исключающее "ИЛИ", табличные подстановки и битовые сдвиги. Алгоритм состоит из 32 раундов. Сами раунды составлены таким образом, что добавление к ветвями материала ключа на первом и последнем раундах образует входное и выходное забеливание.

Serpent

Общая безопасность

Serpent не имеет известных атак безопасности.

Serpent использует S-boxes в качестве нелинейных компонент. Serpent демонстрирует значительный резерв безопасности и имеет простую структуру, которую легко анализировать.

Программные реализации

Serpent является наиболее медленным из финалистов при программной реализации шифрования и дешифрования.

Окружения с ограничениями пространства

Serpent хорошо соответствует оружениям с ограничениями пространства, включая низкие требования к RAM и ROM. Недостатком является то, что требования к ROM возрастают, если шифрование и дешифрование реализованы одновременно, но и при этом Serpent по-прежнему соответствует окружениям с ограничениями пространства.

Аппаратные реализации

Конвейерные реализации Serpent показывают самую высокую среди финалистов производительность для не-feedback режимов. Serpent занимает второе место по производительности в feedback режиме для основной архитектуры. Скорость выполнения Serpent не зависит от длины ключа.

Шифрование vs. дешифрование

Шифрование и дешифрование в Serpent имеют различные функции, которые разделяют ограниченные ресурсы. Одновременная реализация как шифрования, так и дешифрования требует пространства приблизительно в два раза больше, чем необходимо отдельно для шифрования. Это является недостатком, когда в аппаратуре нужно одновременно реализовать обе функции.

Скорость выполнения Serpent при шифровании и дешифровании отличается несущественно.

Свойства ключа

Serpent поддерживает для шифрования и дешифрования возможность вычисления подключей на лету. Для дешифрования необходимо единственное вычисление для получения первого подключа дешифрования из исходного ключа. Это вычисление отличается от преобразования, которое используется для остальных подключей.

Другие возможности настройки

Serpent может обрабатывать любую длину ключа более 256 бит. Кроме того, для улучшения выполнения может использоваться технология bitslice на 32-битных процессорах.

Serpent (Великобританя, Израиль, Норвегия). Шифр "Змей" - пока последний из совместных проектов англичанина Росса Андерсона и израильтянина Эли Бихама, имеющих в своем активе уже целый зверинец криптоалгоритмов: Bear, Lion, Tiger (медведь, лев, тигр). При разработке Serpent авторы специально пригласили датчанина Ларса Кнудсена (работающего в университете Бергена, Норвегия), знаменитого своими крайне успешными криптоаналитическими работами по вскрытию блочных шифров, чтобы он выявил все возможные слабые места в стойкости нового алгоритма. Поскольку и сам Бихам - соавтор метода дифференциального анализа, лежащего в основе современных методов вскрытия блочных шифров, то в результате такого сотрудничества появился чрезвычайно стойкий алгоритм. "Ультраконсервативный по запасу прочности", как охарактеризовали его в НИСТ, поскольку создав шифр, противостоящий всем известным на сегодня атакам, разработчики затем удвоили количество его итераций. Как следствие этого, по своей скорости Serpent оказывается медленнее, чем четыре остальных финалиста. Тем не менее, для повышения производительности разработчиками предложен специальный метод оптимизации ("bitslice"), изобретенный в свое время Бихамом при оптимизации программных версий шифра DES. Алгоритм Serpent хорошо ложится в аппаратное исполнение и в ограниченные по памяти устройства. Реализующая SP-сеть простая конструкция и консервативный выбор операций существенно упрощают анализ стойкости, а также выбранные операции облегчают защиту от атак на физические реализации шифра.

About Serpent

Serpent was designed by Ross Anderson, Eli Biham and Lars Knudsen as a candidate for the Advanced Encryption Standard. It has been selected as one of the five finalists in the AES competition. Serpent is faster than DES and more secure than Triple DES. It provides users with a very high level of assurance that no shortcut attack will be found. To achieve this, the algorithm's designers limited themselves to well understood cryptography mechanisms, so that they could rely on the wide experience and proven techniques of block cipher cryptanalysis. The algorithm uses twice as many rounds as are necessary to block all currently known shortcut attacks. This means that Serpent should be safe against as yet unknown attacks that may be capable of breaking the standard 16 rounds used in many types of encryption today. However, the fact that Serpent uses so many rounds means that it is the slowest of the five AES finalists. But this shouldn't be an issue because it still outperforms Triple DES. The algorithm's designers maintain that Serpent has a service life of at least a century.

Serpent was released at the 5th International Workshop on Fast Software Encryption. This iteration of the algorithm was called Serpent 0 and used the original DES S-boxes. After comments, the key schedule was changed slightly and the S-boxes were changed; this new iteration of Serpent is called Serpent 1. This is the version used by Private Encryptor.

In Depth

Serpent is a 128-bit block cipher, meaning that data is encrypted and decrypted in 128-bit chunks. The key length can vary, but for the purposes of the AES it is defined to be either 128, 192, or 256 bits. This block size and variable key length is standard among all AES candidates and was one of the major design requirements specified by NIST. The Serpent algorithm uses 32 rounds, or iterations of the main algorithm.

Private Encryptor's implementation of Serpent uses a 256 bit key. We decided to use the largest possible key size to ensure that the user always enjoys the best possible security. Our design philosophy is that security always comes before speed. If a shorter key is provided by the user, the Serpent algorithm itself pads the key to make it 256 bits long.

Like DES, Serpent includes an initial and final permutation of no cryptographic significance; these permutations are used to optimize the data before encryption. The detailed description of the actual algorithm is contained in the official Serpent paper submitted for the AES by the algorithm's designers. The paper is rather technical and a certain degree of mathematical proficiency is required of the reader in order to understand it.

Download the Serpent algorithm specification: Serpent.pdf

Соседние файлы в папке Лабораторная работа №21