Объективно сравнить достоинства алгоритмов шифрования довольно сложно. Претенденты на роль AES имеют много общего, но есть и важные отличия, хотя и не существует приемлемого метода, позволяющего надежно оценить, какие из этих отличий влияют на безопасность зашифрованных данных. Чтобы решить эту задачу, специалисты по шифрованию разработали методику для исследования алгоритмов шифрования. Один из подходов предусматривал анализ версий каждого алгоритма с сокращенным числом раундов. Поскольку во всех пяти кандидатах предусмотрено выполнение серии отдельных раундов, криптографы могут изучать упрощенные версии каждого алгоритма, уменьшая число выполняемых раундов.
К примеру, при шифровании 128-разрядным ключом Rijndael выполняет 10 раундов. Криптографы проанализировали уровень защиты Rijndael и выявили недостатки при выполнении семи или меньшего числа раундов. Аналогичным образом были проверены и остальные кандидаты на роль AES. В результате было обнаружено, что Rijndael становится достаточно устойчивым к атакам уже начиная с восьмого раунда и, вдобавок, выполняет после этого еще два раунда шифрования. Специалисты NIST пришли к выводу, что данное решение обладает адекватным запасом защиты, хотя другие кандидаты имеют даже больший запас прочности.
|
|
Для оценки производительности в NIST провели тестирование программных и аппаратных реализаций алгоритмов, а также реализаций для смарт-карт (называемых в NIST версиями с ресурсными ограничениями - restricted space). При тестировании программного обеспечения рассматривались 32-разрядные реализации на С, Java и для смарт-карт на базе ARM, а кроме того, реализации на 64- и 8-разрядных процессорах и процессорах для обработки цифровых сигналов.
MARS - слишком медленно и сложно. MARS оказался самым сложным из всех представленных кандидатов. В то время как остальные алгоритмы во всех раундах используют одну и ту же функцию, в MARS применяются четыре разные функции. Как показало тестирование вариантов с сокращенным числом раундов, это обеспечивает данному алгоритму очень высокий запас прочности. Однако его сложность заставила усомниться в этих оценках, а некоторые из участвующих в тестировании специалистов посчитали, что MARS требует более тщательного анализа, чем тот, который можно сделать в отведенное для экспертизы время.
В MARS использованы умножение, переменное чередование и большие таблицы данных. Все это значительно усложняет его защиту от атак на реализацию, при том, что модификация MARS с целью усиления защиты от таких атак серьезно снижает его производительность. MARS не получил оценок выше средних. В целом производительность его программной реализации находится на среднем уровне, хотя результаты значительно варьируются в зависимости от применяемых процессоров и компиляторов.
|
|
Оценки аппаратных реализаций оказались ниже среднего, вне зависимости от длины ключа. MARS не очень хорошо подходит для реализаций в смарт-картах, поскольку требует оперативной памяти большой емкости. В конечном счете этот алгоритм оказался отвергнут из-за оценки по производительности и исключительно высокой сложности.
RC6 - слишком много оперативной памяти. RC6 - это простой алгоритм с адекватным запасом прочности. Он базируется на RC5, разработанным ранее в RSA Security, применение которого не выявило каких-то серьезных проблем. Как и в MARS, в RC6 используются умножение и переменное чередование, в силу чего RC6 трудно защитить от атак на реализацию, хотя и не настолько сложно, как MARS.
Кроме того, RC6 работает довольно быстро. В некоторых случаях, в частности, в программных реализациях на 32-разрядных процессорах, он опережает Rijndael, но аппаратные реализации имеют лишь среднюю производительность. Вдобавок, RC6 требуется много оперативной памяти, в силу чего он не очень хорошо подходит для сред с ресурсными ограничениями. RC6 не стал победителем из-за низкой производительности при аппаратной реализации.
Serpent - надежный, но медленный. Serpent похож на Rijndael, но вместо выполнения небольшого числа более сложных раундов Serpent выполняет больше простых раундов. Благодаря своей простой, надежной архитектуре Serpent повторяет некоторые характеристики DES и в целом опирается на хорошо известные операции. Из-за этой простоты и известности оценить надежность Serpent оказалось намного проще, и после изучения версии с сокращенным числом раундов выяснилось, что он обладает высоким запасом прочности. Serpent относится к тем алгоритмам, которые проще всего защитить от атак на реализацию.
К сожалению, программные реализации Serpent оказались самыми медленными среди финалистов. С другой стороны, в некоторых случаях тестеры смогли организовать конвейер аппаратных реализаций, показавший очень высокую производительность. Увеличение размера ключа не влияло на скорость работы. Из-за низких требований к памяти Serpent хорошо подходит для применения в смарт-картах.
Хотя Serpent предлагал лучшее сочетание простоты и запаса прочности, чем Rijndael, он уступил последнему из-за низкой производительности программных реализаций.
Twofish - медленный и таинственный. Twofish использует кардинально новый подход, при котором половина ключа используется для изменения работы самого алгоритма шифрования, и в этом подалгоритме в качестве собственного ключа шифрования применяется другая половина исходного ключа. Эта особенность приводит к разделению ключа, что, по мнению некоторых аналитиков, может сделать алгоритм неустойчивым к атакам, организованным по принципу "разделяй и властвуй". При подобной атаке хакер может попытаться определить, какой ключ был выбран в подалгоритме, и сразу же получить половину значения ключа. Однако при анализе тестерам не удалось провести ни одну из подобных атак.
Изучение вариантов Twofish с сокращенным числом раундов показало, что он обладает высоким запасом прочности. Однако, как и в случае с MARS, его необычная структура породила определенные сомнения в качестве этих исследований. Некоторые тестеры отмечали, что из-за сложности Twofish проанализировать его детально в отведенные для этого сроки оказалось очень сложно.
Twofish уязвим для атак на реализацию, но его можно модифицировать таким образом, чтобы он оказался способен эффективно противостоять некоторым атакам. В целом Twofish показал среднюю производительность. Производительность программных реализаций оказалась ниже средней, а время предварительной обработки ключа самым большим. Производительность аппаратных реализаций была средней. Благодаря ограниченным требованиям к памяти этот алгоритм подходит для реализации на смарт-картах. NIST не выбрал Twofish из-за его сравнительно низкой производительности и сложности алгоритма.