учебники, программирование, основы, введение в,

 

Алгоритмы симметричного шифрования. Часть 3. Разработка Advanced Encryption Standard (AES) (продолжение)

Программные реализации
Программные реализации охватывают широкий диапазон. В некоторых случаях память никак не ограничена; в других случаях RAM и/или ROM могут быть существенно ограничены. Иногда большое количество данных шифруется и дешифруется единственным ключом. В остальных случаях ключ изменяется часто, возможно, для каждого блока данных.
Скорость шифрования и/или дешифрования является прямой или косвенной противоположностью безопасности. Это означает, что число раундов, указанное для алгоритма, является фактором безопасности; скорость шифрования или дешифрования приблизительно пропорциональна числу раундов. Таким образом, скорость не может исследоваться независимо от безопасности.
Существует много других аспектов программных реализаций. Некоторые из них будут перечислены ниже, включая скорость и стоимость.
Размер машинного слова
Одной из проблем, которая возникает в программных реализациях, является лежащая в их основе архитектура. Платформы, на которых специалисты NIST выполняли тестирование, ориентированы на 32-битные архитектуры. Однако выполнение на 8-битных и 64-битных машинах также важно. Трудно прогнозировать, как различные архитектуры будут отличаться через 30 лет. Но также трудно назначить весовые коэффициенты для различных типов выполнения для текущего отрезка времени. Тем не менее, ожидается следующая картина:
Считается, что в ближайшие 30 лет 8-битные, 32-битные и 64-битные архитектуры будут играть важнейшую роль (в какой-то момент будут добавлены 128-битные архитектуры). Хотя 8-битные архитектуры используются приложениями, которые имеют и 32-битные версии, 8-битные архитектуры не исчезнут окончательно. Между тем некоторые 32-битные архитектуры будут вытеснены 64-битными версиями, но 32-битные архитектуры будут использоваться приложениями с более низкими требованиями, т.е. важность 32-битных архитектур также останется высокой. Важность 64-битных архитектур будет возрастать. Таким образом, AES должен хорошо выполняться на различных архитектурах.
Следует заметить, что выполнение не может быть классифицировано только на основе длины слова. Учитывается также еще один дополнительный фактор, предоставляемый ПО, который обсуждается в следующем разделе.
Другие проблемы архитектуры
Как MARS, так и RC6 используют 32-битное умножение и 32-битную переменную ротацию. Эти операции, особенно ротация, не поддерживаются на некоторых 32-битных процессорах. Операции 32-битного умножения и ротации затруднены для реализации на процессорах с другой длиной слова. Более того, некоторые компиляторы на самом деле не используют операции ротации, даже если они существуют в наборе команд процессора. Следовательно, выполнение MARS и RC6 может варьироваться от платформы (процессор и компилятор) к платформе больше, чем три остальных финалиста.
Языки реализации ПО
Выполнение также зависит от использования конкретного языка (например, ассемблер, компилируемый или интерпретируемый язык высокого уровня). В некоторых случаях играет роль конкретное ПО. Существует целый спектр возможностей. Как одна из крайностей, вручную созданный ассемблерный код обеспечивает выполнение лучшее, чем даже оптимизирующий компилятор. Другая крайность - это интерпретируемые языки, которые в общем случае плохо решают задачи оптимизации. Оптимизация, выполняемая компиляторами, находится где-то посередине. Также следует заметить, что некоторые компиляторы работают лучше других, обеспечивая поддержку предоставляемых архитектурой операций, например, 32-битную ротацию. Это увеличивает трудность оценки выполнения на различных платформах.
Относительно важности различных языков единого мнения нет. Многие считают, что ассемблерное кодирование больше всего подходит для оценки выполнения на данной архитектуре. Причина этого в том, что ручное кодирование выполняется тогда, когда важна скорость и недоступна аппаратная реализация. С другой стороны использование ассемблера или других способов увеличения скорости может увеличить стоимость. Стоимость разработки кода может быть существенной, особенно если целью является максимальная скорость. Например, оптимизация может быть эффективной, если используется ручное кодирование для языков высокого уровня, таких как С, или используется ассемблерный код. В некоторых окружениях скорость, с которой выполняется код, считается первостепенной при оценке эффективности по сравнению со стоимостью. В других случаях скорость установки ключа является более важной, чем скорость шифрования или дешифрования. Это затрудняет разработку универсальной метрики для оценки выполнения финалистов.
Стоимость разработки кода может быть противопоставлена скорости. Это означает, что использование стандартного кода может минимизировать стоимость, но при этом может отсутствовать оптимизация для данного окружения. С другой стороны использование нестандартного кода, такого как код на ассемблере, может оптимизировать скорость за счет высокой стоимости разработки.
Оптимизация имеет широкий диапазон. Иногда ее можно осуществить без особых усилий. Более того, некоторые оптимизации могут быть портированы на другие платформы. В качестве противоположного примера можно сказать, что ряд оптимизаций требует больших усилий и/или ограничений для конкретных платформ.
Изменение скорости выполнения в зависимости от длины ключа
Программное выполнение MARS, RC6 и Serpent не очень сильно изменяется в зависимости от длины ключа. Однако для Rijndael и Twofish установление ключа или шифрование/дешифрование заметно медленнее для 192-битных ключей, чем для 128-битных ключей и еще медленнее для 256-битных ключей.
Rijndael определяет больше раундов для большей длины ключа, что, естественно, затрагивает как скорость шифрования/дешифрования, так и время установления ключа. Тем не менее, время установления ключа остается более коротким среди финалистов для больших размеров ключа.
Для большего размера ключа Twofish определяет дополнительные уровни генерации подключей и создания зависящих от ключа S-boxes. Вычисление подключа влияет только на скорость установки ключа. Однако создание S-boxes может повлиять на скорость как установки ключа, так и шифрования/дешифрования в зависимости от установленных опций, при которых вычисляются S-boxes.
Краткий вывод о скорости выполнения на основных программных платформах
Огромное количество информации собрано относительно скорости финалистов на различных программных платформах. Эти платформы включают 32-битные процессоры (реализации на С и Java), 64-битные процессорв (С и ассемблер), 8-битные процессоры (С и ассемблер), 32-битные смарт-карты (ARM) и цифровые сигнальные процессоры. В таблицах описано сравнение выполнения финалистов на различных платформах при использовании 128-битных ключей. Скорости финалистов сгруппированы следующим образом. Первая группа (I) обладает самой высокой скоростью выполнения, далее следуют вторая (II) и третья (III) группы.


Таблица 5.1. Выполнение шифрования и дешифрования на различных платформах

 

32 бита(С)

32 бита (Java)

64 бита (С и ассемблер)

8 бит (С и ассемблер)

32 бита смарт-карты (ARM)

Цифровые сигнальные процессоры

MARS

II

II

II

II

II

II

RC6

I

I

II

II

I

II

Rijndael

II

II

I

I

I

I

Serpent

III

III

III

III

III

III

Twofish

II

III

I

II

III

I

Таблица 5.2. Выполнение управления ключом в зависимости от платформы

 

32 бита(С)

32 бита (Java)

64 бита (С и ассемблер)

8 бит (С и ассемблер)

Цифровые сигнальные процессоры

MARS

II

II

III

II

II

RC6

II

II

II

III

II

Rijndael

I

I

I

I

I

Serpent

III

II

II

III

I

Twofish

III

III

III

II

III

Таблица 5.3. Полная оценка выполнения

 

Шифрование/ дешифрование

Установление ключа

MARS

II

II

RC6

I

II

Rijndael

I

I

Serpent

III

II

Twofish

II

III

В следующих оценках "низкое", "среднее" и "высокое" являются терминами, используемыми только в контексте этих пяти финалистов.
MARS обеспечивает среднее выполнение для шифрования, дешифрования и установления ключа.
RC6 обеспечивает от среднего до высокого выполнение для шифрования и дешифрования и среднее выполнение для установления ключа.
Rijndael обеспечивает последовательно высокое выполнение для шифрования, дешифрования и установления ключа, хотя выполнение и понижается для 192- и 256-битных ключей.
Serpent обеспечивает последовательно низкое выполнение для шифрования и дешифрования и платформно-зависимое выполнение для установления ключа.
Twofish обеспечивает платформно-зависимое выполнение для шифрования и дешифрования и последовательно низкое выполнение для установления ключа. В реализациях используется опция "Full Keying". Данная опция обеспечивает максимально быстрое шифрование с помощью выполнения большинства вычислений при установлении ключа. Выполнение шифрования/дешифрования или установления ключа понижается при увеличении размера ключа в зависимости от используемой опции ключа.
Изменение скорости в зависимости от режима
Другим фактором, который может влиять на выполнение алгоритма, является используемый режим операции. Алгоритм, выполняемый в режиме non-feedback (например, ЕСВ), может быть реализован для независимой и, следовательно, одновременной, обработки блоков данных. Результаты одновременного выполнения затем собираются для создания потока информации, который должен быть идентичен потоку, создаваемому при последовательной обработки. Считается, что реализации, использующие данный подход, применяют "interleaved режим". Это противоречит режимам с обратной связью (например, Cipher Feedback, Cipher Block Chaining и т.д.), которые должны обрабатывать блоки данных последовательно. Режимы interleaved имеют преимущества на процессорах с возможностью параллельного выполнения.
Окружения с ограничениями пространства
В некоторых окружениях, обладающих небольшими объемами RAM и/или ROM для таких целей, как хранение кода (обычно в ROM), представление объектов данных, таких как S-boxes (которые могут храниться в RAM или ROM в зависимости от того, известны ли они заранее или нет) и хранение подключей (в RAM), существуют значительные ограничения. Теоретически могут использоваться промежуточные формы хранения, например EEPROM, для таких значений как подключи. Тем не менее, можно предполагать, что подключи также хранятся в RAM.
Кроме того, следует учесть, что доступная RAM должна использоваться для различных целей, таких как хранение промежуточных переменных при выполнении программы. Таким образом, не следует предполагать, что большие порции данного пространства доступны для хранения подключей.
В окружениях с ограниченной памятью объем ROM и RAM, необходимый для реализации финалистов, может быть основным фактором, определяющим их пригодность для данного окружения. Важным преимуществом является возможность вычисления подключей на лету.
Замечания по финалистам
MARS имеет определенные сложности в силу гетерогенной структуры раунда (четыре различных типа раунда). Для S-boxes необходимо 2 Kbytes ROM, что не является проблемой, т.к. всегда доступен достаточный объем ROM.
Обработка слабых ключей имеет некоторые проблемы в окружениях с ограниченными ресурсами. Необходимо использовать определенную форму образца для оценки полученных ключей. Необходимость проверок увеличивает время выполнения и объем ROM. Если подключи требуется создавать повторно, то это также влияет на время выполнения. При необходимости повторного создания подключей открывается возможность для атак, связанных со временем.
Переменные ротации также могут вызвать проблемы на ограниченном оборудовании. Здесь может помочь сопроцессор, эмулирующий переменные ротации использованием умножений по модулю.
Таким образом, следует отметить, что MARS имеет проблемы в окружениях с ограниченными ресурсами.
RC6: шифрование в RC6 хорошо подходит для использования в смарт-картах. Как и в случае MARS переменные ротации могут эмулироваться умножениями по модулю.
Управление ключом является простым, но вычисление подключей на лету невозможно. Это может вызывать проблемы в некоторых смарт-картах. Хранение подключей может быть самым разным. С другой стороны установление ключа требует долгих вычислений по сравнению с циклами шифрования.
Rijndael является наиболее эффективным из всех финалистов. Операция AddRoundKey выполняется на сопроцессоре. Установление ключа очень эффективно. Однако преимущества Rijndael по сравнению с другими финалистами уменьшаются, если шифрование и дешифрование реализуются одновременно, что обусловлено относительным отсутствием ресурсов, разделяемых между шифрованием и дешифрованием.
Serpent: возможны два различных режима реализации Serpent: обычный и bit-sliced. Рассмотрим только обычную реализацию. Для таблиц требуется 2 Kbytes ROM, что не является проблемой.
Можно реализовать Serpent, используя 80 байт RAM и вычисляя подключи на лету.
Twofish: существует несколько возможных режимов реализации Twofish; все они соответствуют окружениям с ограниченной памятью.

Профили финалистов

MARS

Общая безопасность
MARS не имеет известных атак безопасности.
В отличие от других финалистов, MARS использует в качестве нелинейных компонентов зависящие от данных ротации и S-boxes. В силу нестандартной, разнородной структуры раунда (16 раундов перемешивания и 16 раундов ядра) трудно оценить предоставляемый MARS резерв безопасности. Данного финалиста критикуют за сложность, которая затрудняет анализ его безопасности.
Программные реализации
Эффективность программных реализаций зависит от того, насколько хорошо комбинация процессор/язык управляет операциями 32-битного умножения и переменной ротации. Это может привести к различным вариациям между процессорами и между компиляторами для данного процессора. По эффективности выполнения MARS принадлежит к среднему диапазону для шифрования/дешифрования и для установления ключа.
Окружения с ограничениями пространства
MARS недостаточно соответствует окружениям с ограничениями пространства, т.к. требует большого объема ROM. Причем следует отметить, что требования ROM имеют тенденцию роста.
Аппаратные реализации
MARS имеет средние потребности. Его эффективность ниже средней. Скорость реализации MARS зависит от используемой длины ключа.
Шифрование vs. дешифрование
Шифрование и дешифрование в MARS имеют аналогичные функции. Таким образом, скорость MARS при шифровании и дешифровании существенно не изменяется.
Свойства ключа
MARS требует вычисления 10 из 40 подключей за один раз, требуя дополнительных ресурсов для хранения этих 10 подключей. Это неудобно для окружений с ограниченной памятью. MARS также требует однократного выполнения управления ключом для создания всех подключей до первого дешифрования с конкретным ключом. Вычисление нескольких подключей за один раз требует больше ресурсов памяти, чем при вычислении подключей на лету.
Другие возможности настройки
MARS поддерживает длину ключа от 128 до 448 бит.

RC6

Общая безопасность
RC6 не имеет известных атак безопасности.
RC6 использует зависящие от данных ротации в качестве нелинейных компонентов. Его резерв безопасности является адекватным. Аналитики высоко оценивают простоту RC6, которая может способствовать анализу его безопасности. Предшественником RC6 является RC5, который также стал предметом тщательного анализа.
Программные реализации
Преобладающие операции в RC6 - умножение и переменные ротации. Программное выполнение зависит от того, насколько хорошо комбинация процессор/язык обрабатывает эти операции. RC6 является наиболее быстрым из финалистов на 32-битных платформах. Однако его выполнение замедляется на 64-битных процессорах. Выполнение RC6 улучшается, если он используется в режиме, допускающем interleaving. Время установления ключа признано средним.
Окружения с ограничениями пространства
RC6 имеет небольшие требования к ROM, что является преимуществом в окружениях с ограничениями пространства. У RC6 при дешифровании отсутствует возможность вычисления подключа на лету, что создает повышенные требования к RAM. Это не вполне соответствует реализации в устройстве с существенными ограничениями на RAM, если требуется дешифрование.
Аппаратные реализации
RC6 может быть эффективно реализован.
Шифрование vs. дешифрование
Шифрование и дешифрование в RC6 имеют аналогичные функции. Таким образом, эффективность RC6 при шифровании и дешифровании существенно не отличается.
Свойства ключа
RC6 поддерживает возможность вычисления подключей на лету только для шифрования, используя порядка 100 байтов для промежуточных значений. Подключи дешифрования должны быть вычислены заранее.
Другие возможности настройки
Размеры блока, ключа и число раундов параметризуемы. RC6 поддерживает размер ключа намного больше 256 бит.

Rijndael

Общая безопасность
Rijndael не имеет известных атак безопасности.
Rijndael использует S-boxes в качестве нелинейной компоненты. Rijndael демонстрирует адекватный резерв безопасности, но подвергается критике из-за математической структуры, которая может привести к атакам. С другой стороны, простая структура облегчает анализ безопасности.
Программные реализации
Rijndael очень хорошо выполняет шифрование и дешифрование на различных платформах, включая 8-битные и 64-битные платформы. Однако выполнение замедляется с увеличением длины ключа, т.к. возрастает число раундов. Rijndael имеет возможность параллельного выполнения, что позволяет эффективно использовать ресурсы процессора. Время установления ключа в Rijndael небольшое.
Окружения с ограничениями пространства
В целом, Rijndael хорошо соответствует окружениям с ограничениями пространства, в которых реализовано либо шифрование, либо дешифрование (но не оба одновременно). Он имеет очень небольшие требования к RAM и ROM. Недостатком является то, что требования ROM возрастают, если шифрование и дешифрование реализованы одновременно, хотя он все равно остается подходящим для такого окружения. Управление ключом для шифрования и дешифрования различается.
Аппаратные реализации
Rijndael имеет самую высокую производительность среди финалистов для feedback режимов и является вторым по производительности для не-feedback режимов. Для 192- и 256-битных ключей производительность падает из-за дополнительного числа раундов.
Шифрование vs. дешифрование
В Rijndael функции шифрования и дешифрования различны. При этом скорости шифрования и дешифрования существенно не отличаются, но установление ключа выполняется медленнее для дешифрования, чем для шифрования.
Свойства ключа
Rijndael поддерживает для шифрования вычисление подключей на лету. Rijndael требует однократного выполнения управления ключом для создания всех подключей до первого дешифрования с конкретным ключом.
Другие возможности настройки
Rijndael полностью поддерживает размеры блока и размеры ключа в 128, 192 и 256 бит в любой комбинации. В принципе, структуру Rijndael можно приспособить к любым размерам блока и ключа, кратным 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-битных процессорах.

Twofish

Общая безопасность
Twofish не имеет известных атак безопасности.
Twofish использует S-boxes в качестве нелинейных компонент. Демонстрирует высокий резерв безопасности, но вызвала критические замечания за свойство разделения ключа и за сложность, которая затрудняет анализ безопасности.
Программные реализации
Twofish показывает смешанные результаты при выполнении шифрования и дешифрования. Установление ключа происходит медленно. Время выполнения шифрования/дешифрования или установления ключа уменьшаются для большей длины ключа, в зависимости от используемой опции ключа.
Окружения с ограничениями пространства
Требования RAM и ROM соответствуют окружениям с ограничениями пространства.
Аппаратные реализации
Производительность и эффективность на основной аппаратуре являются средними. Возможны компактные реализации.
Шифрование vs. дешифрование
Шифрование и дешифрование в Twofish имеют идентичные функции. Таким образом, эффективность Twofish при шифровании и дешифровании не отличается. Одновременная реализация шифрования и дешифрования всего на 10 % увеличивает объем пространства по сравнению с реализацией одного только шифрования.
Свойства ключа
Twofish поддерживает вычисление подключей на лету как для шифрования, так и для дешифрования.
Другие возможности настройки
Спецификация Twofish описывает четыре опции для реализации зависимых от ключа S-boxes, позволяя варьировать выполнение. Twofish поддерживает произвольную длину ключа более 256 бит.

Заключительные оценки финалистов

Как уже не раз отмечалось, безопасность считается самым важным свойством при оценке финалистов. Так как многие из оставшихся результатов анализа часто охватывают как стоимость, так и характеристики алгоритма, было принято решение рассматривать эти факторы вместе в качестве второго после безопасности свойства.

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

На основании выполненного анализа безопасности можно утверждать, что не существует известных атак безопасности ни на одного из финалистов, и все пять финалистов проявили необходимый для AES уровень безопасности. В терминах резерва безопасности MARS, Serpent и Twofish показали самый высокий резерв безопасности, хотя резерв RC6 и Rijndael также можно назвать адекватным. Ряд критических замечаний вызвала математическая структура Rijndael и свойство разделения ключа Twofish; однако это не приводит к атакам.

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

RC6 и Rijndael демонстрируют скорость шифрования и дешифрования выше средней для 128-битных ключей, при этом RC6 имеет особенно хорошие показатели на 32-битных платформах, а Rijndael выполняется более ровно на всех платформах. MARS имеет среднее выполнение шифрования и дешифрования на всех платформах, в зависимости от того, выполняет ли процессор 32-битные умножения и переменные ротации. Twofish демонстрирует смешанные результаты среди различных платформ для шифрования и дешифрования, но в целом имеет средние показатели по сравнению с другими финалистами. Serpent при шифровании и дешифровании несколько медленнее остальных финалистов.
Установление ключа Rijndael выполняет быстрее всех. Для MARS, RC6 и Serpent этот показатель является средним, а Twofish здесь на последнем месте.
MARS, RC6 и Serpent демонстрируют одинаковое выполнение шифрования и дешифрования для всех трех длин ключа. Выполнение шифрования и дешифрования Rijndael возрастает с увеличением длины ключа из-за увеличения числа раундов. Выполнение шифрования/дешифрования или установления ключа Twofish уменьшается при большей длине ключа в зависимости от используемых опций ключа.
RC6 является лучшим среди финалистов, если использует режим, обеспечивающий interleaving.

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

Rijndael предъявляет очень низкие требования к RAM и ROM и отлично соответствует окружениям с ограничениями пространства, если реализовано либо шифрование, либо дешифрование. Недостаток его в том, что требования к ROM возрастают, если как шифрование, так и дешифрование реализованы одновременно, хотя и в этом случае Rijndael остается соответствующим окружению с ограничениями пространства.
Serpent имеет низкие требования к RAM и ROM и очень хорошо соответствует окружениям с ограничениями пространства, когда реализовано либо шифрование, либо дешифрование. Как и у Rijndael, у Serpent требования к ROM возрастают, если шифрование и дешифрование реализованы одновременно, но, тем не менее, алгоритм остается соответствующим окружениям с ограничениями пространства.
Требования RAM и ROM Twofish соответствуют окружениям с ограничениями пространства.
RC6 имеет небольшие требования к ROM, что является преимуществом в окружениях с ограничениями пространства. Однако алгоритм не допускает возможности вычисления подключей на лету при дешифровании, увеличивая тем самым требования к RAM относительно других финалистов. Следовательно, RC6 недостаточно хорошо соответствует реализации в устройствах с существенными ограничениями доступной RAM, если требуется шифрование.
MARS недостаточно соответствует окружению с ограничениями пространства вследствие требований к ROM, самых высоких среди финалистов. Кроме того, управление ключом MARS включает операции сравнения с образцом, которые требуют дополнительных ресурсов.

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

Serpent и Rijndael имеют лучшую аппаратную производительность среди финалистов как для режимов feedback, так и для других. Serpent демонстрирует самую высокую производительность среди финалистов в не-feedback режимах, и его эффективность (производительность/пространство) обычно очень высокая. Rijndael показал лучшую производительность среди финалистов в feedback-режимах. При большей длине ключа производительность Rijndael падает. Эффективность Rijndael также обычно заслуживает самой высокой оценки.
RC6 и Twofish обычно проявляют среднюю производительность. Производительность RC6 возрастает в не-feedback режимах. Производительность Twofish иногда понижается при больших размерах ключа. MARS имеет средние требования к памяти, его производительность выше средней, и эффективность также.

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

Twofish, MARS и RC6 нуждаются в небольшом дополнительном пространстве для одновременной реализации в аппаратуре как шифрования, так и дешифрования в противоположность реализации одного только шифрования. Функции шифрования и дешифрования для Twofish почти не отличаются , а для MARS и RC6 являются аналогичными.
Шифрование и дешифрование Rijndael отличаются больше, чем у Twofish, MARS и RC6, хотя Rijndael может быть реализован таким способом, чтобы разделять некоторые аппаратные ресурсы.
Для Serpent функции шифрования и дешифрования отличаются, что позволяет разделять только очень ограниченные аппаратные ресурсы.
Все финалисты показывают очень небольшие различия в скорости между шифрованием и дешифрованием для данной длины ключа. Установление ключа Rijndael для дешифрования выполняется медленнее, чем для шифрования.

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

Twofish поддерживает вычисление подключей на лету как для шифрования, так и для дешифрования. О Serpent можно сказать то же самое, однако процесс дешифрования требует одного дополнительного вычисления. Rijndael поддерживает вычисление подключей на лету для шифрования, но требует вычисления за один раз всего управления ключом до выполнения первого дешифрования. MARS имеет характеристики, аналогичные Rijndael, за исключением того, что 10 ключей должны вычисляться и храниться одновременно. Их размещение требует дополнительных ресурсов при реализации MARS. RC6 поддерживает вычисление ключей на лету только для шифрования, создавая при этом промежуточные значения.

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

MARS поддерживает длину ключа в диапазоне от 128 до 448 бит.
RC6 имеет параметризуемые размеры блока и ключа и параметризуемое число раундов, включая поддержку размеров ключа более 256 бит.
Rijndael поддерживает дополнительные размеры блока и ключа с приращением в 32 бита, число раундов также может быть изменено.
Serpent поддерживает любую длину ключа более 256 бит, и bitslice-реализация может обеспечить его выполнение на многих процессорах.
Twofish поддерживает произвольный размер ключа более 256 бит, и спецификация алгоритма предлагает дополнительно четыре опции.

Заключение

Каждый из финалистов показал адекватную безопасность, имеет определенные преимущества, и каждый может использоваться в качестве AES. Но в то же время каждый из алгоритмов в одной или нескольких областях уступает другим; ни один из финалистов не является абсолютным лидером.
В качестве предлагаемого AES алгоритма в результате длительного и сложного процесса оценки специалисты NIST выбрали Rijndael.

Rijndael очень хорошо выполняется как в программной, так и в аппаратной реализации в широком диапазоне окружений независимо от использования feedback или не-feedback режимов. Он показал отличное время установления ключа и хорошие свойства ключа. Rijndael имеет небольшие требования к памяти, что делает его пригодным для окружений с ограниченными ресурсами. В этом случае он также демонстрирует отличное выполнение.

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г.Яндекс.Метрика