О других алгоритмах – кандидатах на AES

Объективно сравнить достоинства алгоритмов шифрования доволь­но сложно. Претенденты на роль 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 из-за его сравнительно низкой производительности и сложности алгоритма.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: