УСОВЕРШЕНСТВОВАННЫЙ стандарт шифрования AES (Advanced Encryption Standard) приходит на смену алгоритмам DES (Data Encryption Standard) и Triple-DES. Это позволит повысить уровень безопасности и эффективность работы информационных систем.
Устаревший стандарт DES был принят в 1977 году в качестве 46-го параграфа Федерального стандарта обработки информации США (Federal Information Processing Standard, FIPS). Он предусматривает шифрование данных блоками по 64 бит с применением 56-битного ключа. В 1999 году Национальный институт стандартов и технологий (National Institute of Standards and Technology, NIST) принял документ FIPS PUB 46-3, в котором призвал применять алгоритм Triple-DES в информационных приложениях везде, кроме унаследованных систем.
Принципиальным недостатком Triple-DES является то, что он обеспечивает относительно малую производительность прикладных программ. Исходный стандарт DES, спроектированный в середине 70-х годов для аппаратной реализации, не был рассчитан на эффективную работу в виде программного кода. Стандарт Triple-DES, у которого втрое больше циклов шифрования, чем у DES (в сущности, он подразумевает троекратное применение к исходному тексту алгоритмов DES с использованием двух или трех разных ключей — длиной 112 или 168 бит), поддерживает в три раза меньшую скорость.
Еще одним слабым местом DES и Triple-DES является применение блоков длиной 64 бит. Для обеспечения эффективности и безопасности желательно использовать блоки большей длины.
Из-за этих неустранимых недостатков Triple-DES не мог стать кандидатом на долгосрочное применение. В 2001 году NIST выпустил стандарт AES, известный как FIPS 197. Он предусматривает блочное шифрование длиной 128 бит и применение ключей размером 128, 192 и 256 бит.
Похоже, что версия AES с длиной ключа 128 бит реализуется сегодня наиболее часто. Такой размер ключа достаточен для обеспечения уровня безопасности, необходимого большинству приложений, и требует меньше времени на обработку данных, чем при использовании длинных ключей. До сих пор не обнаружено критически слабых мест ни в AES, ни в Triple-DES, а уровень безопасности прямо пропорционален длине ключа шифрования.
В соответствии с Triple-DES входными объектами для процессов шифрования и дешифрации служат одиночные 128-битные блоки данных. Такой блок преобразуется в матрицу размером 4х4 байт, которая называется массивом состояний. Она модифицируется на каждом цикле шифровации или дешифровки. На завершающей стадии процесса матрица состояний вновь преобразуется в линейную строку из 128 бит. Аналогично 128-битный ключ воспринимается как квадратичная матрица, размер которой измеряется в байтах. Из нее формируются 10 линейных ключей, для чего требуется 10 циклов обработки. Типичный цикл состоит из четырех фаз.
В фазе ByteSub (замены байтов) для выполнения побайтного замещения используется таблица S-box. Каждый входной байт преобразуется в уникальный выходной байт.
В фазе RowShift (сдвига строк) первая строка массива состояний не меняется. Над второй строкой производится операция циклического сдвига влево на один байт. Третья строка циклически сдвигается влево на 2 байт, четвертая строка — влево на 3 байт и т. д.
В фазе MixColumns (смешивания столбцов) выполняется замещение каждого байта столбца значением некоторой функции, примененной ко всем байтам из данного столбца.
В фазе AddRoundKey (добавления циклического ключа) используется часть расширенного матричного ключа размером 4х4 байт. Каждый байт расширенного ключа комбинируется с соответствующим байтом массива состояний при помощи функции <исключающее или>.
Стандарт AES крайне прост. Как шифрование, так и дешифрация начинаются с фазы Add Round Key. За ней следуют девять циклов, каждый из которых состоит изо всех четырех фаз. После этого выполняется десятый цикл — из трех фаз (в нем отсутствует фаза MixColumns).
Ключ используется только в фазе Add Round Key, поэтому шифрование начинается и завершается фазой Add Round Key. Любая другая фаза, реализуемая в начале или конце обработки, является обратимой. Она может быть выполнена без знания ключевой информации, а потому не обеспечивает дополнительной защиты.
Процедура шифрования предусматривает применение к блоку данных перемежающихся операций шифрования (в фазе Add Round Key), за которыми следуют перестановки элементов в других трех фазах, потом вновь шифрование и т. д. Эта схема достаточно эффективна и гарантирует надежную защиту.
Как и в большинстве блочных шифровальных устройств, алгоритм дешифрации использует расширенный ключ в обратном порядке. Однако алгоритм дешифрации не идентичен алгоритму шифрования.
В настоящее время стандарт AES реализован в виде прикладных программ. В ближайшее время по мере его распространения следует ожидать появления реализаций алгоритма в виде вшитых в ПЗУ программ или в аппаратном виде.
Уильям Стеллингс (ws@shore.net) — консультант по корпоративным сетям и автор книги «Криптография и безопасность сетей» (Cryptography and Network Security).