Схемы работы алгоритма в разделе, посвященном криптографии, на странице ДжонаСаварда John Savard по адресу http://home.ecn.ab.ca/~jsavard/crypto/entry.htm так хо-роши, что мы не устояли
Trang 1Функция РС-2 не реализует какой-то алгоритм, основанный на сдвиге или отбрасываниибитов, а просто пользуется предопределенной таблицей, в которой хранятся номера битов.Новая позиция каждого бита берется прямо из этой таблицы Например, в позиции 1 от нача-
ла таблицы РС-2 находится число 14, значит, 14-й бит входных данных попадет на первуюпозицию в выходных Таблица РС-2 опубликована во многих источниках (см стр 274 книгиШейера «Applied Cryptography» (Прикладная криптография)) После применения таблицыРС-2 мы получаем 48-битовый подключ Ьц, пригодный для выполнения XOR Из-за того чтосдвиги зависят от номера шага, для создания каждого подключа используются различныечасти исходного ключа
Схемы работы алгоритма в разделе, посвященном криптографии, на странице ДжонаСаварда (John Savard) по адресу http://home.ecn.ab.ca/~jsavard/crypto/entry.htm так хо-роши, что мы не устояли перед искушением позаимствовать их Иногда взгляд на иллюст-рацию заменяет тысячи строка кода! На рис 11.1 показано все, что мы только что описали,причем слева представлена вся итерация DES, а справа - один шаг
Правило Керчкоффа и секретность шифра
Возможно, вы задаетесь вопросом, почему внутреннее устройство шифра, являющегосяправительственным стандартом США, было опубликовано в открытой печати Ответ таков:засекречивание шифра не сулит ничего хорошего ни ему самому, ни его разработчикам ипользователям Еще в 1883 году Жан Гильямен Юбер Виктор Франсуа Александр Огюст Кер-чкофф фон Нивенхоф (есть же люди с такими длинными именами) писал, что использован-ный ключ и функция шифра - это две совершенно разных вещи, а секретность криптосис-темы должна зависеть исключительно от ключа, но не от алгоритма Примерно 111 летспустя неизвестный хакер опубликовал в Internet исходный текст патентованного нераз-глашаемого алгоритма RC4, поместив его в список рассылки Cypherpunks Вскоре послераскрытия структуры RC4 были разработаны несколько атак против него (однако эти ата-
ки не связаны со слабостями протокола WEP, основанного на шифре RC4) Заметим, чтосотрудники компании RSA Data Security, Inc., разработавшей RC4, считаются отличнымикриптографами и создали целый спектр различных промышленных шифров! Что же гово-рить о мелких компаниях, заявляющих, будто они создали высокоэффективный и безопас-ный секретный алгоритм шифрования? Зачастую они не могут предложить ничего боль-шего, чем вариация на тему R0T13 с одним шагом XOR Получается, что, когда речь заходит
о безопасности, у раскрытия структуры шифра, как и у раскрытия исходных текстов рамм, имеются свои преимущества, и одно из них - публичное исследование
прог-Еще одно преимущество открытости DES состоит в том, что теперь вы получили ность узнать об S-блоках, подключах, расширяющих, сжимающих и чистых перестановках
возмож-на классическом, но все еще применяемом (возмож-напомним о шифре 3DES и увозмож-наследованномкриптографическом программном и аппаратном обеспечении) примере Теперь будет го-раздо проще объяснить, как работают шифры, созданные после DES, так что мы сэкономиммного места и времени
Введение в стандарт 802.1 И: один шифр в помощь другому
В качестве уместного примера упомянем функцию перемешивания пакетного ключа в токоле TKIP Это пример компактного шифра Фейстеля, который разработали Дуг Уайтинг
Trang 2про-2 3 8А ВВЕДЕНИЕ В ПРИКЛАДНУЮ КРИПТОГРАФИЮ: СИММЕТРИЧНЫЕ ШИФРЫ
(Doug Whiting) и Рональд Райвест (Ronald Rivest) Цель этой функции состоит в том, чтобывыработать пакетный ключ из временного ключа и IV либо порядкового номера в TKIP(TKIP Sequence Number - TSC) Полученный пакетный ключ служит безопасным начальнымзначением для протокола WEP, за счет чего устраняется опасность атаки типа FMS Началь-ное значение можно вычислить перед использованием, что положительно сказывается напроизводительности сети
Рассмотрим более детально функцию перемешивания пакетного ключа в том виде, как онаописана в предварительном варианте стандарта 802.Hi, имеющемся на момент написаниякниги В предыдущей главе уже было сказано, что работа функции перемешивания состоит
из двух этапов Оба они полагаются на S-блок, который подставляет одно 16-битовое ние вместо другого Функция подстановки нелинейна и реализована в виде таблицы Табли-
значе-цу можно реализовать в виде линейного массива из 65536 элементов, индексируемого16-битовым числом (всего требуется 128 Кб), или двух массивов по 256 элементов, каж-дый из которых индексируется 8-битовым числом (1024 байт для хранения обоих масси-вов) Если используются маленькие таблицы, то старший байт будет служить для выбора16-битового числа из одной таблицы, а младший - для выбора из другой В этом случае выхо-дом S-блока является результат XOR над двумя выбранными 16-битовыми значениями.Входные данные, подаваемые на вход первого этапа, - это 80 бит из 128-битового времен-ного сеансового ключа (ТК), МАС-адрес передатчика (ТА) и 32 бит вектора инициализации
IV (TSC) На выходе первого этапа (ТТАК) получается 80 бит, представленных в виде
масси-ва из пяти 16-битовых значений ТТАКО, ТТАК1, ТТАК2, ТТАКЗ и ТТАК4 В описании ритма этапа 1 эти значения трактуются как 8-битовые массивы ТАО ТА5 и ТКб ТК12
алго-В вычислениях на этапе 1 используются операции XOR, ADD и поразрядное AND Такжеупоминаются счетчик цикла i и временная переменная j для хранения индекса В проце-дуре вызывается единственная функция, названная Мк16, которая порождает 16-битовоезначение из двух 8-битовых: Mkl6(X,Y) = 256*X+Y
Алгоритм этапа 1 состоит из двух шагов На первом шаге ТТАК инициализируется наоснове IV и МАС-адреса, но без участия временного ключа На втором шаге используетсявышеупомянутый S-блок для того, чтобы подмешать биты ключа в 80-разрядный ТТАК, апеременной P H A S E 1 _ _ L 0 0 P _ C 0 U N T присваивается значение 8
Trang 3ТТАКЗ <= ТТАКЗ + S[TTAK2 л« Mkl6(TK13 + J,TK12 + j) ]ТТАК4 <= ТТАК4 + S[ТТАКЗ л» M k l 6 ( T K l + j , T K O + j ) ] + iend
Входными данными для второго этапа функции перемешивания временного ключа ляются результат работы первого этапа (ТТАК), тк и младшие 16 бит TSC Созданное на-чальное значение для WEP обладает внутренней структурой, согласующейся с исходнойспецификацией WEP Первые 24 бит начального значения передаются открытым текстомтак же, как IV в старом варианте WEP В предыдущей главе мы говорили, что эти 24 битслужат для доставки младших 16 бит TSC от передатчика приемнику Оставшиеся 32 битдоставляются в поле Extended IV (Eiv) в порядке big-endian (старший байт слева)
яв-На этапе 2 значения тк и ТТАК представляются так же, как на этапе 1 Вырабатываемоеначальное значение для WEP является массивом из 8-битовых значений от SeedO до S e e d l 5 TSC трактуется как еще один массив, состоящий из 16-битовых значений TSC0-TSC2 Нако-нец, в псевдокоде, описывающем алгоритм этапа 2 функции перемешивания, упоминается счет-чик цикла i и переменная РРК Длина этой переменной 128 бит, она представляет собоймассив 16-битовых значений, обозначаемых РРКО, , РРК7 При отображении 16-бито-вых значений РРК на 8-битовые значения генерируемого начального значения явно предпо-лагается порядок little-endian (старший байт справа) Так сделано из соображений совмести-мости с архитектурой хранения целых чисел на большинстве процессов, применяемых дляреализации протокола TKIP
В вычислениях, которые производятся на этапе 2, участвуют операции XOR, ADD, AND,
PHASE2-KEY-MIXING(ТТАКО ТТАК4, ТК, TSC)
Trang 42 4 0 ВВЕДЕНИЕ В ПРИКЛАДНУЮ КРИПТОГРАФИЮ: СИММЕТРИЧНЫЕ ШИФРЫ
end
r e t u r n WEPSeedO WEPSeedl5
На шаге З этапа 2 вычисляются значения всех трех октетов IV Алгоритм спроектировантак, чтобы исключить появление известных слабых ключей Принимающее устройство лег-
ко может реконструировать младшие 16 бит TSC, использованных передатчиком, путемсцепления первого и третьего октетов IV (второй игнорируется) Оставшиеся 32 бит TSCизвлекаются из поля EIV Итак, вы только что познакомились с любопытным случаем, ког-
да некоторый шифр специально был спроектирован и реализован с целью исправить статок другого шифра.Шифр - это еще не все: что такое режимы работы шифра
недо-Понимания принципов работа DES (равно как и любого другого симметричного блочногошифра, не исключая только что описанную функцию TKIP и шифр AES, который будет при-меняться в окончательной редакции стандарта 802.Hi) еще недостаточно Очень важнотакже разобраться в том, что такое режим работы шифра DES позволяет зашифровать 64 битоткрытого текста и получить эквивалентный объем шифртекста, но что если нужно зашиф-ровать лишь 50 бит? Или 128? Или 200? Или 31337?
Очевидное решение - разбить длинную строку на блоки по 64 бит и дополнить короткийблок какой-то предсказуемой комбинацией нулей и единиц Это самый простой ре>ким блоч-
ного шифра Он называется режимом электронной кодовой книги (Electronic Codebook Mode ЕСВ) Иными словами, если х = х г х2 х3 , то q - ek(Xi) К числу достоинств режима ЕСВ следуетотнести возможность параллельного шифрования и дешифрирования на многопроцессорныхсистемах и тот факт, что ошибка в шифртексте затрагивает только один блок данных На этомдостоинства режима ЕСВ и заканчиваются В достаточно длинной строке данных обычно встре-чаются повторяющиеся последовательности, и разбиение на 64-битовые блоки не скрываетповторов Если на основе анализа таких последовательностей удастся сделать вывод о том,какой фрагмент открытого текста соответствует фрагменту шифртекста, то можно провести
Trang 5-атаку повтора сеанса Например, мы можем установить, что зашифрованные сообщения - этоэлектронные письма, а повторяющиеся последовательности - их заголовки Тогда можно вос-произвести заголовок, чтобы отправить письмо конкретному адресату Но вместо обычноголюбовного послания в нем будет содержаться, скажем, программа на языке Visual Basic Script.Другая проблема, характерная для режима ЕСВ, - это короткая длина блока Мы обнару-жили, что на машинах, работающих под управлением американской версии Debian Linux (вкоторой из-за экспортных ограничений все еще используется DES в режиме ЕСВ для шифро-вания пароля) максимальная длина пароля не может превышать 8 символов, а любой символсверх того никак не сказывается на зашифрованном значении (иными словами, система пу-стит вас с паролем p a s s w o r d , даже если настоящий пароль password%/ 4*&) ) @! #0x69).Таким образом, возрастают шансы на успешное завершение атаки по словарю или методомполного перебора Если вспомнить, что размер блока равен 64 бит, а один ASCII-символ за-нимает один байт, то причина указанного явления становится очевидной И все же большин-ство администраторов, которым мы сообщили о нашем открытии, были озадачены Иногдазнание теории оказывается полезнее, чем может показаться на первый взгляд.
Подводя итог, скажем, что режим ЕСВ имеет смысл использовать для шифрования ких строк, например PIN-кодов или записей базы данных (возможность параллельногошифрования и дешифрирования больших баз данных иногда оказывается весомым преиму-ществом) Но для шифрования сильных паролей или больших объемов данных на негополагаться не стоит
корот-Чтобы решить проблему воспроизведения, нужно сцепить 64-битовые блоки данных так,
чтобы они стали взаимозависимыми Поэтому далее мы рассмотрим режим сцепления
бло-ков шифртекста (Cipher Block Chaining - СВС) Идея в том, чтобы выполнить операцию
XOR между блоком открытого текста и ранее полученным блоком шифртекста еще передтем, как шифровать открытый текст Но при шифровании самого первого блока еще нетникакого шифртекста, поэтому вводится новый параметр - вектор инициализации (IV) Этовсего лишь блок случайных данных того же размера, что и используемый в шифре (64 битдля DES и многих других симметричных шифров) Это может быть временной штамп, зна-чение, полученное от «устройства» /dev/urandom, или еще что-нибудь IV необязательнодержать в секрете, можно его передавать в открытом виде Считайте, что это фиктивныйзашифрованный блок Именно так и обстоит дело в протоколе WEP, где IV передаются вбеспроводной сети в открытом виде Дешифратор заталкивает IV в регистр обратной связиперед началом дешифрирования, а потом он уже не используется Повторим схему режимаСВС Пусть х = ха х2 х3 хп Тогда
Из-за применения IV шифртексты, получающиеся из открытых текстов, первые
несколь-ко байтов несколь-которых схожи (например, заголовки протонесколь-колов LLC SNAP или IP), будут ственно различаться У режима СВС есть два основных недостатка:
суще-о сцепление делает невсуще-озмсуще-ожным параллельнсуще-ое шифрсуще-ование (хсуще-отя параллельнсуще-ое шифрирование реализуемо);
де-о де-ошибка в де-однде-ом блде-оке распрде-остраняется на все пде-оследующие (сцепленные с ним),что, скорее всего, приведет к необходимости повторной передачи
Trang 62 4 2А ВВЕДЕНИЕ В ПРИКЛАДНУЮ КРИПТОГРАФИЮ: СИММЕТРИЧНЫЕ ШИФРЫ
Но мы по-прежнему шифруем блоки фиксированного размера, неважно, сцепляются ониили нет А если нужно шифровать меньшие блоки или осуществлять шифрование бит забитом, не дожидаясь, пока придет целый блок? Для некоторых приложений (например,удаленных командных оболочек) данные нужно шифровать сразу - символ за символом
(то есть 8-битовые блоки) У этой проблемы есть два решения: режимы с обратной связью
по шифртексту (Cipher Feedback CFB) и с обратной связью по выходу (Output Feedback
-OFB) В режиме CFB мы начинаем помещать блоки генерируемого шифртекста в ванное значение IV, а не в открытый текст:
от-блоки того размера, который определен для шифра Конечно, генерировать ъ, перед каждым
выполнением XOR накладно с точки зрения быстродействия и пропускной способности Естьоценка, согласно которой производительность шифрования в режиме CFB уменьшается вm/n раз, где m- это размер блока шифра, a n - число битов, шифруемых за раз Например,шифр с размером блока 64 бит, применяемый для шифрования ASCII-символов в режиме CFB,будет работать в 64 / 8 = 8 раз медленнее, чем тот же шифр, применяемый для шифрования64-битовых блоков в режиме ЕСВ или СВС Замечание о распараллеливании шифрования в ре-жиме СВС относится и к режиму CFB Но ошибка в блоке шифртекста распространится только
на соответствующий ему открытый текст и следующий полный блок
Наконец, в режиме OFB нет сцепления блоков, а значит, нет и распространения ошибок
С другой стороны, блоки данных перестают быть взаимозависимыми, поэтому необходимакакая-то форма внешней синхронизации (например, что-то подобное алгоритму CSMA/CA
в сетях 802.11) Чтобы избавиться от сцепления, в режиме OFB из IV генерируется потокконстант Zi, и между ними и открытым текстом выполняется операция XOR для шифрова-
распа-на пропускную способность Правило m/n применимо к режиму OFB в той же мере, что и к CFB
А что можно сказать относительно режима счетчика (ССМ), используемого в
стандар-те 802.Hi для шифра AES (Advanced Encryption Standard)? Он аналогичен только что
рас-смотренному режиму OFB В режиме OFB очередное значение ъ х вычисляется из щего по формуле ^ = e(Zi_) В режиме ССМ все еще проще: значения IV, получающиеся
предыду-Поскольку существует лишь один поток ъ, для шифрования и дешифрирования, то
распа-раллеливание невозможно ни в том, ни в другом случае Следовательно, число процессоров напосылающем и принимающем хостах не влияет ни на скорость работы шифра в режиме OFB, ни
на пропускную способность Правило m/n применимо к режиму OFB в той же мере, что и к CFB
А что можно сказать относительно режима счетчика (ССМ), используемого в
стандар-те 802.Hi для шифра AES (Advanced Encryption Standard)? Он аналогичен только что смотренному режиму OFB В режиме OFB очередное значение Zj вычисляется из предыду-щего по формуле Zj = e(z_) В режиме ССМ все еще проще: значения IV, получающиеся
Trang 7му правилу На практике предполагается, что IV инициализируется на основе случайнойстроки (попсе), которая изменяется для каждого сообщения Таким образом решается про-блема повторяющихся блоков в режиме ЕСВ Конечно, получатель должен знать и IV, и п, тоесть способ получения п необходимо стандартизировать, а IV передавать (возможно, в неза-шифрованном виде) перед началом безопасного обмена данными После того как приемник
и передатчик синхронизовались, для дешифрирования приходящих данных на приемномконце нужно лишь выполнить XOR Поэтому отпадает нужда в специальной схеме дешифри-рования AES, а процедуры шифрования и дешифрирования можно распараллелить Важныймомент заключается в том, чтобы избежать повторного использования IV (вспомните о про-блеме повторяющихся блоков в режиме ЕСВ и атаке FMS на протокол WEP) Но резервирова-ния 48 бит для IV, по идее, достаточно, чтобы эта проблема не возникала Мы посчитали, что
на полнодуплексном канале 100BaseT (размер пакета 1500 бит) для исчерпания всего странства 48-битовых IV потребуется 127 лет, а современные беспроводные каналы пока ещемедленнее, чем 100BaseT, и размеры пакетов в них обычно больше
про-Потоковые шифры и безопасность
в беспроводных сетях
Потоковые алгоритмы были придуманы для того, чтобы избежать падения скорости и кной способности, неизбежного из-за особенностей реализации блочных шифров в режимахCFB и OFB, применяемых для побитового шифрования данных Идея потоковых шифров состо-
пропус-ит в том, чтобы генерировать идентичные гаммы на стороне шифратора и дешифратора Дляшифрования и дешифрирования над открытым текстом и гаммой выполняется операция XOR.Для порождения гаммы применяются генераторы псевдослучайных чисел (PRNG), поэтомупотоковые алгоритмы находятся где-то посередине между легко взламываемым шифром набазе XOR с предопределенным ключом и невзламываемым, но трудно реализуемым одноразо-вым блокнотом Генераторы псевдослучайных чисел строятся на базе алгоритмов, которыевырабатывают на первый взгляд случайные, но все же воспроизводимые числа Посколькувыработанную последовательность можно воспроизвести, то она не является истинно случай-ной Однако результаты работы генератора должны выдержать целый ряд специально спроек-тированных тестов на случайность Хорошим источником информации по генераторам псев-дослучайных чисел, где можно найти исходные тексты, а также подробное описание тестов,является сайт http://random.mat.sbg.ac.at/ Предложения правительства США, стандарты
и требования к случайности результатов работы генераторов, а также критерии их оценкиопубликованы на странице http://csrc.nist.gov/encryption/ tkrng.html Генератор получа-
ет на входе некоторые данные (называемые начальным значением (seed)) и на их основе
Trang 82 4 4А ВВЕДЕНИЕ В ПРИКЛАДНУЮ КРИПТОГРАФИЮ: СИММЕТРИЧНЫЕ ШИФРЫ
вырабатывает числа, которые выглядят случайными Если взять другое начальное значение,
то будут вырабатываться другие числа Если же начальные значения одинаковы, то
совпада-ют и результаты Если раз за разом подавать на вход одно и то же начальное значение, токриптосистема станет предсказуемой и ее можно будет вскрыть Поэтому часто использует-
ся начальное значение большого размера, чтобы максимизировать объем шифртекста, рый придется собрать потенциальному противнику для выявления повторяющихся строк.Именно поэтому начальные значения потоковых шифров не используются в качестве клю-чей (как вам понравится ключ из 65535 бит?)
кото-Разумеется, гаммы на обоих концах необходимо синхронизировать, иначе
криптосисте-ма работать не будет Синхронизация может быть обеспечена самим алгоритмом шифра
Такие потоковые шифры называются самосинхронизирующимися В
самосинхронизирую-щемся шифре каждый бит гаммы зависит от фиксированного числа предыдущих битовшифртекста Значит, самосинхронизирующиеся шифры очень похожи на работу блочныхшифров в режиме CFB Но можно обеспечить синхронизацию и внешними средствами, так
что она не будет зависеть от потока шифртекста Такие потоковые шифры называются
син-хронными Вероятно, вы догадались, что они работают примерно так же, как блочные
шиф-ры в режимах OFB или ССМ (AES в сетях 802.Hi)
На сегодня самым распространенным потоковым шифром является синхронный шифрRC4, о котором мы уже говорили при обсуждении принципа Керчкоффа Этот шифр поумолчанию применяется в протоколах SSL и WEP В RC4 используются ключи с длиной от 0
до 256 бит Применяется S-блок размером 8x8 для выполнения перестановок чисел от 0 до
255 Перестановка является функцией ключа Шифр RC4 работает очень быстро, примерно
в 10 раз быстрее DES Для получения максимальной производительности RC4 следует лизовывать аппаратно, как сделано в карте Cisco Aironet и во многих других беспроводныхклиентских картах для реализации WEP Быстродействие и является одной из основныхпричин, почему RC4 так широко применяется в сетевых протоколах А как же история свзломом WEP, которую мы поведали в главе 8?
реа-Следует отличать пороки самих шифров и их практической реализации Слабость WEPобусловлена не недостатками шифра RC4 как такового RC4 выступает в роли генераторапсевдослучайных чисел Начальным значением для него служит комбинация секретногоключа (который не меняется и одинаков для всех хостов в беспроводной сети) и вектораинициализации IV, который и делает начальное значение уникальным В протоколе WEPвектор IV занимает всего 24 бит - для криптографии это очень мало Неудивительно, чтопосле передачи достаточно большого объема данных в загруженной сети IV начинают по-вторяться Но ведь выбор начального значения слишком малого размера - это не проблемагенератора На самом деле, в протоколе SSL ключи RC4 порождаются для каждого сеанса, а
не единожды, как в классическом статическом варианте WEP Поэтому для вскрытия SSLвзломщик не сможет накопить достаточный объем данных для атаки на RC4, по крайней меретеоретически В технологии HomeRF, ныне уже почти не применяемой (FHSS вместо 802.11b),размер IV составляет 32 бит, что заметно повышает безопасность по сравнению с сетями набазе стандарта 802.11b Вместо того чтобы увеличивать длину IV, можно пойти по пути SSL
и реализовать сеансовые или даже пакетные ключи и автоматически ротировать их по чении короткого промежутка времени Сеансовые и ротируемые ключи лежали в основе пер-воначального проекта устройств Cisco SAFE, а в спецификации 802.11i/WPA применяются какувеличенного размера IV (48 бит), так и динамическая ротация ключей Наконец, компанияRSA Labs предложила довольно простое и элегантное решение проблемы слабых IV в прото-коле WEP (с его деталями можно познакомиться на странице http://www.rsasecurity.com/
Trang 9исте-rsalabs/ technotes/wep.html) Криптографы из RSA вычислили, что если бы в WEP можно былоотбросить первые 256 байт, выработанных генератором гаммы, перед тем, как гамма начина-
ет объединяться с открытым текстом посредством XOR, то в беспроводной сети не было быслабых IV К сожалению, эта методика, равно как и упомянутое раньше предложение RSA побыстрому изменению ключей в пакетах, несовместима со все еще широко распространеннойреализацией WEP Тем не менее IEEE вместе с производителями беспроводного оборудования
и программного обеспечения постепенно исправляются, о чем свидетельствует появление802.11/i/WPA, Cisco SAFE и Agere/Proxim WEPPlus
Запрос на разработку стандарта AES
В отличие от только что рассказанной истории с WEP, шифру DES все же свойственны ренние пороки Хотя сам алгоритм достаточно безопасен, но размер ключа в нем составляетвсего 56 бит Возможно, в те времена, когда DES проектировался, этого хватало, но с 1974 годамощности вычислительных устройств неизмеримо выросли Интересно, что проектировщи-
внут-ки DES, вероятно, предвидели такое развитие событий и с самого начала предложили ключдлиной 128 бит Но Агентство национальной безопасности отвергло это предложение попричинам, которые не вполне ясны (а может быть, наоборот, совершенно очевидны) истин-ному поборнику безопасности, так что в стандарте остался DES с 56-битовым ключом В ию-
ле 1998 года был создан фонд Electronic Frontier Foundation (EFF, http://www.eff.org), торый профинансировал проект создания машины для взлома DES стоимостью меньше
ко-250 тыс долл., а на сайте http://www.distributed.net стартовал проект создания но-параллельного программного обеспечения для взлома DES методом полного перебора
массив-19 января было сообщено о взломе DES за 56 ч, при этом проверялось 88 млрд ключей всекунду На этом был завершен конкурс по взлому DES, спонсированный компанией RSALabs На повестку дня был поставлен вопрос о новом улучшенном стандарте
Не дожидаясь, пока DES будет взломан, 2 января 1997 года Национальный институт дартов и технологий (NIST, http://www.nist.gov/) объявил о начале разработки стандартаAES и опубликовал формальное предложение подавать заявки до 12 сентября 1997 года
стан-В условиях было сказано, что AES должен быть несекретным, опубликованным в печати горитмом шифрования, доступным без лицензионных отчислений во всем мире Крометого, алгоритм должен реализовывать блочный симметричный шифр и поддерживать бло-
ал-ки размером 128 бит, а ключи длиной 128,192 и 256 бит Состязание началось 20 августа
1998 года на Первой конференции кандидатов AES (AES1) NIST назвал 15 кандидатов название шифра AES, а именно: CAST-256, CRYPTON, DEAL, DFC, E2, FROG, HPC, LOKI 197,MAGENTA, MARS, RC6, Rijndael, SAFER+, Serpend и Twofish После Второй конференции канди-датов AES (AES2), проходившей 22 и 23 марта 1999 года в Риме, осталось только пять кан-дидатов: MARS, RC6, Rijndael, Serpend и Twofish Эти финалисты были признаны одинаковобезопасными, но еще надо было представить эффективную, быструю и нетребовательную
к ресурсам реализацию Наконец, 2 октября 2000 года NIST объявил, что в качестве дарта AES выбран шифр Rijndael
стан-Ниже мы кратко оценим всех финалистов конкурса, а также шифры Blowfish, IDEA и3DES, предоставив вам возможность выбрать для своего хоста, сети или программного обес-печения наиболее подходящий вариант Делая выбор, следует учитывать производитель-ность, способ реализации, лицензионные ограничения, а также безопасность шифра
Trang 102 4 6А ВВЕДЕНИЕ В ПРИКЛАДНУЮ КРИПТОГРАФИЮ: СИММЕТРИЧНЫЕ ШИФРЫ
Для фирмы, занимающей консалтингом в области сетевой безопасности (например, Arhont,http://www.arhont.com), любое ухудшение качества сети может означать разрыв контрак-
та и утрату репутации Руководители, которые приглашают внешних консультантов, непонимают разницы между DES, 3DES и AES Но зато они прекрасно знают, что делать, когда
в кабинет врывается толпа пользователей с криками: «Эти ребята тут нахимичили, и сетьстала работать безумно медленно!» Попробуйте угадать, что за этим последует
Имеет смысл составить список тех свойств выбранного шифра, которые могут повлиять
на качество обслуживания:
о шифрование данных занимает канал, уменьшают пропускную способность и жет стать причиной увеличения числа потерянных пакетов Вопрос в том, какойуровень потерь считать допустимым и как минимизировать побочные эффектыповышенной безопасности за счет правильного выбора криптосистемы для дан-ной сети Хотя беспроводные сети и становятся все быстрее, но полоса пропус-кания и пропускная способность у них все же ниже, чем у проводных аналогов.Кроме того, в них используется разделяемый физический носитель Таким обра-зом, выбирая VPN в качестве механизма обеспечения безопасности беспроводнойсети, надо трижды подумать;
мо-о увеличение числа шагмо-ов в итерации хмо-отя и пмо-овышает безмо-опаснмо-ость, нмо-о пмо-отребляетбольше ресурсов процессора Сможет ли процессор на шлюзе в беспроводную сетьсправиться с повышенной нагрузкой?
о команда умножения не является «родной» для процессоров ниже Pentium II и нальных (не ULTRA) Sparc Маловероятно, что она будет реализована аппаратно намногих КПК В процессорах Intel Itanium нет команды циклического сдвига на пере-менное число позиций, а умножение выполняется в устройстве FPU (с плавающейарифметикой), а не IU (с целочисленной арифметикой) Шифры, в которых применя-ются операции умножения, на таких процессорах будут работать медленно В случае сItanium не стоит выбирать шифры, использующие циклический сдвиг Интересно от-метить, что даже в тех случаях, когда у процессора есть команда циклического сдвига,
ориги-не все компиляторы ею пользуются, что вносит дополнительные сложности;
о если при шифровании приходится манипулировать очень большими числами, то утех процессоров, которые реализуют высокопроизводительные вычисления с целы-
ми числами, будет преимущество перед процессорами, где оптимизированы ления с плавающей точкой;
вычис-о все вычис-описываемые шифры были првычис-отестирвычис-ованы с 8-, 32- и 64-разрядными првычис-оцессвычис-о-рами Производительность, конечно, менялась, так что шифр, хорошо работающий
процессо-на 32-разрядном ЦП, совсем необязательно будет так же хорошо работать процессо-на 8- или64-разрядном;
о скорости шифрования и дешифрирования тоже необязательно совпадают Часто,хотя и не всегда, дешифрирование работает медленнее Имейте это в виду, когдавыбираете платформу для размещения служб шифрования и дешифрирования;
о производительность различных шифров может меняться в зависимости от режимаработы Шифр, достаточно быстро работающий в режиме ЕСВ, может никуда не го-диться в режиме OFB, и наоборот;
о скорость и эффективность шифра обычно оказываются выше, если он реализован наязыке ассемблера, а не на С При реализации на языках еще более высокого уровнябыстродействие также падает Хотя по традиции принято считать, что аппаратные
Trang 11реализации шифрования самые быстрые, но на практике это зависит как от шифра,так и от оборудования;
о генерация и хранение больших подключен негативно сказываются на объеме требляемой памяти Особенно важно это для устройств с ограниченным объемомпамяти, например смарт-карт;
по-о S-блпо-оки - этпо-о либпо-о таблицы, как в случае DES, либпо-о реализуются алгебраически.Большие табличные S-блоки также могут занимать недопустимо много памяти наустройствах, где ее объем ограничен Алгебраические S-блоки считаются менее бе-зопасными
С точки зрения безопасности все пять кандидатов на звание AES, а равно шифры3DES и Blowfish, одинаково стойки Поэтому основными критериями выбора шифра ста-новятся доступность, легкость реализации и производительность Стоит обратить вни-
мание на такой критерий, как порог безопасности (security margin) Так называется
число шагов в итерации, при превышении которого невозможна эффективная атака наалгоритм, в результате чего приходится прибегать к полному перебору всех возмож-ных ключей
Еще один довольно любопытный момент - это устойчивость шифров к атакам, ным с энергопотреблением и с хронометражем Эти атаки по природе своей имеют физи-ческий, а не математический характер Атаки с хронометражем основаны на анализетого, сколько времени тратится на исполнение команд, когда устройству или программе,реализующей шифр, подаются на вход разные аргументы В атаках, связанных с энерго-потреблением, анализируется, какое количество энергии потребляет устройство в зави-симости от аргументов Общая линия защиты от атак с хронометражем - одновременноешифрование и дешифрирование Защита от атак, связанных с энергопотреблением, бо-лее сложна, возможно, придется задействовать программную балансировку, напримерзамаскировать истинное энергопотребление путем одновременной обработки всех про-межуточных данных итерации и использования одних и тех же базовых команд В усло-виях, требующих максимальной безопасности, придется выбирать шифры, в которых ус-тойчивость к описанным атакам обеспечивается самой природой выполняемых команд.Так, поиск в таблице, применяемый в реализации S-блоков в DES, операции сдвига и цик-лического сдвига на фиксированное число позиций, а также булевские операции NOT,
связан-OR, AND и XOR неуязвимы для атак с хронометражем, а защитить их от атак, связанных сэнергопотреблением, можно программной балансировкой Защитить операции сложения
и умножения труднее, а операции деления, возведения в квадрат и сдвига на переменноечисло позиций - очень трудно
Теперь, узнав кое-что о производительности и ресурсопотреблении в прикладной тографии, мы можем двинуться дальше и оценить пригодность известных симметричныхблочных шифров с точки зрения построения нашей сети
крип-AES (Rijndael)
Начнем с официального стандарта AES или шифра Rijndael который предложили бельгийскиематематики Винсент Риджмен (Vincent Rijmen) и Джоан Димен (Joan Daemen) Материалы кон-ференции FIPS197, на которой был анонсирован и детально описан алгоритм AES, находятся насайте NIST (http://csrc.nist.gov/publications/ fipsl97/fips-197.pdf) Адрес персонального сайтаавторов шифра Rijndael - http://www.esat.lmleuven.ac.be/~rijmen/rijndael/ AES поддерживает
Trang 122 4 8л ВВЕДЕНИЕ В ПРИКЛАДНУЮ КРИПТОГРАФИЮ: СИММЕТРИЧНЫЕ ШИФРЫ
следующие длины ключей и блоков открытого текста: 128,192и256 бит Одна из ных особенностей шифра Rijndael - зависимость числа шагов от длины ключа: R = К/32 + 6,
уникаль-то есть для ключей длиной 128,192 и 256 бит будет выполнено соответственно 10,12 и
14 шагов В шифре Rijndael используются четыре операции:
о подстановка байтов, это частный случай нелинейной перестановки, реализуемый с помощью одного табличного S-блока;
о сдвиг строки, то есть циклический сдвиг;
о операция перемешивания столбца, это линейное преобразование;
о добавление шагового ключа.
Длина шагового ключа равна длине шифруемого блока Шифруемый блок ется в виде прямоугольного массива из четырех строк Каждый байт массива объединяется посредством XOR с соответствующим байтом подключа, тоже представленного в виде мат- рицы На последнем шаге AES операция перемешивания столбца опускается.
представля-Функция развертки ключа включает расширение ключа и выбор шагового ключа щее требуемое число битов ключа равно N(R + 1), где N - длина блока, a R - число шагов Для ключей длиной больше и меньше 192 бит применяются разные функции расширения.
Об-Снова приходят на помощь изображения структуры шифра с сайта Джона Саварда, на этот раз на них представлены схемы, иллюстрирующие как работу, так и изящество шифра Rijndael (рис 11.2 и 11.3).
Шифр Rijndael хорошо работает на 8-, 32- и 64-разрядных процессорах Из всех тестированных архитектур наиболее эффективной оказался процессор Itanium Шифр Rijndael показал наилучшую производительность на устройствах с ограниченной па- мятью и вычислительной мощностью - вдвое быстрее конкурентов - и для его реали- зации потребовалось гораздо меньше места в ПЗУ и ЗУПВ Он также не имел равных во всех режимах с обратной связью, а в режимах ЕСВ/СВС занял второе место Его порог безопасности равен 7, при том, что минимальное число шагов в реализации составляет
про-120 (для ключа длиной 128 бит) Разница в производительности шифрования и рирования несущественна Увеличение длины ключа со 128 до 192 и со 192 до 256 байт ведет к падению производительности соответственно на 20 и 40% за счет увеличения
Trang 13дешиф-числа шагов При аппаратной реализации шифр Rijndael продемонстрировал очень сокую производительность, сопоставимую только с Serpent (в режиме ЕСВ) Поскольку вRijndael используются лишь операции сдвига и циклического сдвига на фиксированное
Trang 14вы-ВВЕДЕНИЕ В ПРИКЛАДНУЮ КРИПТОГРАФИЮ: СИММЕТРИЧНЫЕ ШИФРЫ
число позиций, булевские операции и поиск в таблице, то он достаточно устойчив к атакам, связанным с хронометражем и энергопотреблением, а от последних может быть без труда защищен программной балансировкой.
Шифр MARS
Еще один кандидат на роль стандарта AES - шифр MARS, предложенный компанией IBM, вестен своей относительной сложностей и большим числом шагов Создатели шифра MARSутверждают, что его гетерогенная структура сознательно выбрана для противостояния ещенеизвестным атакам
из-Размер блока в шифре MARS составляет 128 бит, а длина ключа может меняться от 128 до
448 бит Открытый текст представляется в виде четырех блоков по 32 бит Итерация в шифреMARS состоит из четырех фаз
На фазе 1 п 32-байтовых слов ключа (4 < п < 14) расширяются до 40 32-байтовых словподключей с помощью функции расширения Затем блоки данных объединяются посредством
XOR со словами ключа, вслед за чем выполняется 8 шагов, в которых ключ вообще не
исполь-зуется Для этого служат два фиксированных S-блока
Фаза 2 - это основной гарант безопасности шифра MARS, она состоит из 16 шагов разований с использованием функции расширения Е (рис 11.4)
преоб-Функция Е принимает на входе слово ключа и складывает его со словом данных, танным на фазе 1 Затем результат умножается на второе слово ключа, которое должно бытьнечетным После этого данные ищутся в фиксированном S-блоке (см предыдущую фазу),объединяются посредством XOR с произведением слова ключа на слово данных и подверга-ются двум циклическим сдвигам в зависимости от младших пяти битов вышеупомянутогопроизведения Результат функции Е имеет длину 32 х 4 = 128 бит Шаг, показанный на схеме,это один из восьми прямых шагов; за ним следуют 8 обратных (с точки зрения направленияциклического сдвига) шагов
вырабо-Наконец, на фазе 3 выполняется 8 обратных шагов перемешивания без участия ключа, тоесть по существу это обращение фазы 1 Итого получается 8 x 2 + 32= 48 шагов, впечатляю-щая цифра! Вопреки видимости, шифр MARS не слишком сложен для программной реализа-ции, по крайней мере с точки зрения числа строк кода Если учесть все шаги, кроме тех, вкоторых ключ не участвует, то порог безопасности MARS окажется равен 21, что на целых
11 шагов больше необходимого
Однако гетерогенность шифра MARS плохо сказывается на производительности и лении ресурсов Скорость и пропускная способность программной реализации сильно зави-сят от того, как конкретная комбинация процессора и компилятора умеет справляться с опе-рациями умножения и циклического сдвига на переменное (зависящее от данных) числопозиций У процессоров РП/РШ это не вызывает сложностей, но в один прекрасный день выможете перейти на Itanium, UltraSPARC или иную архитектуру, в которой такие операцииподдерживаются хуже Не исключено, что в этом случае шифрование и дешифрирование поалгоритму MARS (их скорости почти одинаковы) станут узким местом С другой стороны, про-изводительность MARS, похоже, не зависит от длины ключа, так что можно без опаски сразузадействовать максимальную длину 448 бит При аппаратной реализации и пропускная спо-собность, и эффективность шифра MARS оказываются ниже среднего Кроме того, он не оченьпригоден для устройств с ограниченной памятью, например, смарт-карт: даже само количе-ство подключей говорит о том, что требования к объему ПЗУ и ЗУПВ должны быть высоки
Trang 15но для AES), в противном случае останется лицензируемым Число шагов в шифре RC6 иразмеры блоков переменны, а длина ключа может составлять до 2040 бит (что очень многодля симметричного блочного шифра) Но для конкурса на звание AES были выбраны32-разрядные слова, 16 шагов и ключи длиной 128, 192 и 256 бит.
Шифр RC6 базируется на патентованном шифре RC5, для которого в настоящее времяразрабатывается атака (http://www.distribute.net)
Как и большинство симметричных блочных шифров, пришедших на смену DES, RC6 нован на шагах Фейстеля Но вместо того чтобы разбивать блок на две части (левую иправую) и выполнять операции над ними, RC6 разбивает каждую половину еще на два сло-
ос-ва (отсюда и 32-битовые слоос-ва) и на каждом шаге манипулирует половинками половин
В шифре RC6 генерируется 44 подключа длиной 32 бит каждый Блок открытого текста бивается на четыре 32-битовых слова, обозначаемых А, В, С и D При шифровании данныхпредполагается порядок little endian: младший байт шифруется первым На первом шагевыполняется XOR между В и первым подключом, а также между D и вторым подключом
Trang 16раз-2 5 раз-2 ^ ВВЕДЕНИЕ В ПРИКЛАДНУЮ КРИПТОГРАФИЮ: СИММЕТРИЧНЫЕ ШИФРЫ
На следующем шаге берутся третий и четвертый подключи и т.д Всего шагов 20 Послезавершающего шага выполняется XOR между А и 42-м подключом, а также между С и 43-м.Что происходит на одном шаге? Главная функция проста: f(x) = х*(2х + 1) Полученныйрезультат циклически сдвигается влево на 5 бит, затем выполняется XOR между ним и дру-гим словом Функция f(x) оперирует только словами В и D Поскольку в версии RC6, пред-ставленной на конкурс, было 16 шагов, а умножению подвергаются два слова из четырех,
то всего получается 16 х 2 = 32 операций умножения Результаты вычисления f(B) и f(D)после циклического сдвига влево объединяются посредством XOR с А и С соответственно.Младшие 5 бит полученных значений определяют, на сколько позиций будут в дальней-шем циклически сдвинуты влево слова А и С Таким образом, мы получаем 1 6 x 2 = 32 опе-раций циклического сдвига на переменное число позиций Наконец, между парой подклю-чей, используемых на одном шаге, и словами А и С выполняется XOR, а затем все четыречетвертинки меняются местами: А становится D, В - А, С - В, a D - С
Подключи для всех шагов вырабатываются функцией развертки, которая дополняет ключнулями, чтобы его длина стала равна целому числу слов Всего генерируется 2 х число ша-гов + 4 ключа, что для варианта, представленного на конкурс, составляет 2 х 20 + 4 = 44.Дополненный ключ загружается в массив L в порядке little endian Для дополнительногоперемешивания используются два сдвига влево: один на 3 позиции и еще один на пе-ременное число позиций Размер выходного массива S регулируется двумя константами
Р и Q: S [0] = Р; for i = 1 to 2 х число_шагов + 3 do S [i] = S [j - 1] + Q, где i и j - номерадвух подключей в массиве Для любопытных скажем, что Р = е - 2, где е - основание натураль-
ных логарифмов, Q - отношение золотого сечения [\[5 + 1)/2] - 1 На случай, если где-нибудь
в баре вас спросят, чему эти числа равны, запомните: Р = 0хЬ7е15162 и Q = 0х9е3779Ь9.Для шифра RC6 порог безопасности составляет 16 шагов (из 20) Дешифрирование, по-хоже, выполняется чуть быстрее шифрования Будучи реализован аппаратно, RC6 показы-вает вполне приемлемую производительность Зато в случае программной реализациипроизводительность существенно зависит от поддержки процессором команд умножения
и циклического сдвига на переменное число позиций (соображения, высказанные выше поповоду производительности шифра MARS, относятся и к RC6) Кроме того, из-за наличияэтих операций RC6 (как и MARS) трудно защитить от атак, связанных с энергопотреблени-
ем и хронометражем Следует отметить, что RC6 работает очень быстро на подходящейаппаратной архитектуре, например на процессорах РП и РШ, а будучи реализован на язы-
ке С, превосходит всех остальных кандидатов на звание AES (см отчет о сти AES на странице http://fp.gladman.plus.com/cryptography_technology/aes/) Однакоего производительность на 8- и 64-разрядных процессорах уже не так впечатляет Выби-рая RC6, вы должны задуматься о масштабируемости, в частности о возможном переходе
производительно-на 64-разрядные процессоры или архитектуры типа UltraSPARC и Itanium, в которых нетаппаратной поддержки для умножения и сдвига на переменное число позиций Шифр RC6потребляет не очень много постоянной памяти, так как в нем нет больших таблиц Но низ-кая производительность на 8-разрядных процессорах - это минус при попытке использо-вать его в дешевых устройствах Кроме того, подключи RC6 следует предварительно вы-числить и сохранить в памяти, поэтому требуемый объем оперативной памяти для RC6выше, чем для остальных кандидатов Таким образом, RC6 нельзя назвать идеальным крип-тографическим решением для устройств с ограниченными ресурсами и объемом памяти
В режимах ЕСВ и СВС шифр RC6 работает лучше, от длины ключа его производительностьпочти не зависит
Trang 17Шифр Twofish
Если шифр RC6 может похвастаться простотой, то шифр Twofish, изобретенный Брюсом ером (Bruce Schneier), напротив, известен своей сложностью, хотя, на взгляд авторов, это пред-ставление не совсем верно Так или иначе, Twofish существует уже довольно давно, он был под-вергнут серьезному криптоанализу и применяется во многих программных продуктах Полныйсписок программ, в которых используется Twofish, можно найти на странице автора http://www.counterpane.com/twofish-products.html В этом списке не упомянута (во время работы надкнигой) программа Nessus (http://www.nessus.org) Если вы каким-то боком причастны к сете-вой безопасности, то знаете, что она делает, и наверняка не раз ею пользовались Все данные,которыми обмениваются клиент и сервер Nessus, зашифрованы Twofish Причина популярнос-
Шней-ти шифра Twofish и его предшественника Blowfish в том, что и сам алгоритм, и реализующийего исходный код свободны от каких-либо лицензионных ограничений
В шифре Twofish используется 16 шагов, блоки размером 128 бит и ключ длиной 256 бит(хотя длина ключа может быть и меньше), из которого порождается сорок 32-битовыхподключей Как и в случае RC6, блок открытого текста разбивается на четыре подблока по
32 бит в формате little-endian Обозначим эти подблоки (или слова) Q0 - Q3 До передачиэтих слов на первый шаг и по завершении последнего шага производится операция так назы-
ваемого обеления (whitening), чтобы повысить уровень перемешивания шифра Ее смысл
со-стоит в выполнении XOR между словами и подключами до и после всех шагов, причем
подклю-чи, использованные для обеления, больше уже в шифре не задействуются Таким образомудается скрыть данные, подаваемые на вход итерации и возвращаемые в качестве ее выхода.Шаг шифра Twofish начинается с циклического сдвига слова Q3 на 1 бит влево ЗатемQ0 и Q1 циклически сдвигаются влево на 8 бит После этого данные пропускаются черезчетыре 8-битовых зависящих от ключа S-блока Результат умножается на так называемуюMDS-матрицу Вот как она выглядит:
Результат перемножения матриц подается на вход перемешивающего псевдоадамаровапреобразования (Pseudo-Hadamard Transform - РНТ) Если обозначить входные данные как
а и Ь, то 32-битовое преобразование РНТ определяется так:
Далее первый подключ прибавляется к значению, полученному из Q0, и результат диняется посредством XOR с Q2 Второй для этого шага подключ прибавляется к значе-нию, полученному из Q1, и результат объединяется посредством X0R с Q3 После этого Q2циклически сдвигается на 1 бит вправо, и две половины блока переставляются местами (Q0
объе-с Q2, a Q1 объе-с Q3) Вобъе-се операции шага, начиная объе-с начала и кончая РНТ-перемешиванием, объе-ставляют гарантию его безопасности и в литературе называются функцией д
со-На рис 11.5 проиллюстрирована схема работы шифра Twofish
Как вырабатываются подключи? Функция развертки начинает свою работу с генерациитрех векторов ключей, каждый длиной в половину исходного ключа Первые два получают-
ся путем разбиения ключа на 32-битовые фрагменты Третий образуется путем разбиения
Trang 182 5 4 ВВЕДЕНИЕ В ПРИКЛАДНУЮ КРИПТОГРАФИЮ: СИММЕТРИЧНЫЕ ШИФРЫ
ключа на 64-битовые блоки и генерирования одной 32-битовой части вектора ключей средством умножения 64-битового блока на матрицу RS:
Trang 19Еще одна функция h участвует в генерировании подключен одновременно с нием» S-блоков ключевым материалом Она выполняет XOR между 32-битовыми словамиоткрытого текста и векторами ключей, а затем объединяет полученные результаты с мат-рицей MDS После этого подключи генерируются путем сложения выработанных функци-
«обогаще-ей h данных и сдвигов влево на 8 или 9 позиций
Ключи генерируются на лету, а пространство ключей используется для двух ных процессов «перетасовывания» ключа и открытого текста ~ это уникальные особен-ности алгоритма Twofish В сочетании с обелением они обеспечивают высокий уровень пере-мешивания и являются одной из причин высокого порога безопасности шифра: 6 из 16 шагов.Однако процедура подготовки подключей работает медленно, и по мере увеличения длиныключа производительность шифра Twofish падает Кроме того, из-за наличия операциисложения Twofish уязвим для атак, связанных с энергопотреблением и хронометражем,хотя и в меньшей степени, чем MARS и RC6 Скорость шифрования и дешифрирования прак-тически одинаковы Поскольку в шифре Twofish нет никаких нетипичных конструкций и
параллель-он был изначально спроектирован для реализации на 8-, 32- и 64-разрядных платформах,
то и работал он одинаково хорошо на всех протестированных архитектурах, за нием процессоров ARM, где Twofish оказался довольно медленным (поэтому не стоит при-менять его на большинстве современных КПК, в частности на HP iPAQ) Производитель-ность аппаратной реализации TWofish получила оценку «средняя» Так как в Twofish нетбольших S-блоков, а ключи могут генерироваться по мере выполнения итерации без пред-варительных вычислений и сохранения в памяти, то для устройств с ограниченными ре-сурсами этот шифр подходит
исключе-Шифр Serpent
Последний из финалистов конкурса на звание AES - шифр Serpent - скорее громоздок, чемсложен По существу, Serpent очень похож на DES Быть может, ради простоты сравненияего надо было бы рассмотреть первым Но, несмотря на его схожесть с DES, утверждается,что Serpent более безопасен, чем тройной DES (мы рассмотрим этот шифр чуть ниже), хотяего быстродействие лишь немногим ниже, чем у DES Разработали Serpent Росс Андерсон(Ross Anderson, Кембриджский университет), Эли Бихам (Eli Biham, Технион, Хайфа) и ЛареКнудсен (Lars Knudsen, университет Бергена, Норвегия) Две заявки на патентование Serpentбыли поданы в Великобритании
Как и рассмотренные выше шифры, Serpent принимает на вход 128-битовые блоки крытого текста и разбивает их на 32-битовые слова Максимальная длина ключа в Serpentсоставляет 256 бит, а если ключ короче, то он дополняется до 128 бит путем добавления 1
от-к старшему биту и заполнения оставшихся битов нулями Итерация Serpent состоит из
32 шагов, в которых применяется поиск в таблице, циклический сдвиг на фиксированноечисло позиций и обычный сдвиг Используются также начальная и конечная перестанов-
ки, как в DES Они предназначены исключительно для повышения эффективности ции на компьютере, а на общую стойкость шифра влияния не оказывают
реализа-Каждый шаг начинается с выполнения XOR между соответствующим подключом(128 бит) и блоком открытого текста (тоже 128 бит) Затем результат подается на вход од-ного из S-блоков В шифре Serpent есть восемь S-блоков, каждый из которых используетсячетыре раза, так что всего получается 32 шага: блок SO применяется на шагах 1, 9,17 и 25;S1 - на шагах 2, 10, 18 и 26 и т.д Выход, полученный от S-блока, разбивается на четыре
Trang 202 5 6 ^ ВВЕДЕНИЕ В ПРИКЛАДНУЮ КРИПТОГРАФИЮ: СИММЕТРИЧНЫЕ ШИФРЫ
32-битовых слова QO, Ql, Q2 и Q3; каждое из них подвергается сдвигам и циклическимсдвигам в следующем порядке:
о Q0 циклически сдвигается на 5 бит влево, a Q3 - на 22 бит влево
Итак, нужное перемещение битов достигнуто, а результат применения S-блока оказалсяхорошо перетасованным
На последнем шаге операции перемешивания не производятся, зато выполняется нечная перестановка Хотя назначение «перетасовки» поначалу понять нелегко, онаобретает смысл, если посмотреть на схему одного шага (рис 11.6, кружками обозначеныоперации XOR)
Trang 21ко-Глядя на эту схему, вы легко можете представить себе, какой высокий уровень шивания и рассеивания достигается после 32 шагов.
переме-На идею организации S-блоков в шифре Serpent оказала влияние структура RC4 Блокипредставляют собой матрицы, содержащие шестнадцать 4-битовых значений В ходе ите-рации порождается 32 копии каждого S-блока; они параллельно передаются на каждыйшаг Внутреннее устройство S-блоков в Serpent такое же, как в DES Проектировщики ре-шили сохранить блоки из DES, сочтя, что применение хорошо опробованной методикивызовет доверие у общественности
Что касается функции развертки ключа, то после дополнения (при необходимости)256-битовый ключ разбивается на восемь 32-битовых слов Затем из них формируются
132 32-битовых слова по следующему алгоритму:
Word(n) = (Word(n-8) XOR Word(n-5) XOR Word(n-3) XOR Word(n-l)
XOR '0x9E3779B9' XOR n) <« 11
где константа 0х9Е3779В9 - это уже знакомое нам золотое сечение, а символом <« значается сдвиг влево К полученным таким образом 132 словам применяются S-блоки DESдля порождения 132 слов подключей ко_131 Эти слова объединяются в группы по четыре, и
обо-мы получаем то, что нам нужно: 33 128-битовых подключа для 32 шагов итерации
У шифра Serpent довольно простая структура, что облегчает проведение криптоанализа.Его порог безопасности 9 шагов из 32 - самый высокий среди всех кандидатов Поскольку вшифре применяются лишь операции XOR, поиск в таблице, сдвиги и циклические сдвиги нафиксированное число позиций, то вряд ли он уязвим для атак, связанных с энергопотребле-нием и хронометражем Но за все это приходится платить производительностью: из всехкандидатов на звание AES шифр Serpent самый медленный Любопытно, однако, что скоростьработы одинакова для реализаций на С и языке ассемблера Кроме того, взглянув на структу-
ру Serpent, вы обнаружите четыре «конвейера» из 32 S-блоков Если реализовать Serpent спомощью аппаратуры, поддерживающей четыре параллельно работающих конвейера (напри-мер, Itanium), то можно добиться очень высокого быстродействия Да и вообще его аппарат-ные реализации работают неплохо В режимах без обратной связи он демонстрирует самуювысокую производительность из всех пяти кандидатов, а в режимах CFB/OFB уступает толькошифру Rijndael Такое расхождение между программными и аппаратными реализациямиобъясняется простотой используемых в алгоритме команд По той же причине Serpent хоро-
шо приспособлен для работы в условиях ограниченной памяти, несмотря на большое числоS-блоков Вопрос о зависимости производительности от длины ключа не стоит, так как ключ
в любом случае дополняется до 256 бит Возможно, именно из-за очень высокой стойкости ихорошей работы аппаратных реализаций шифр Serpent, так похожий на старомодный DES, иоказался вторым после Rijndael при подведении итогов голосования: Rijndael получил
86 голосов, Serpent - 59, Twofish - 31, RC6 - 23, a MARS - 13
Между DES и AES: шифры,
распространенные в переходный период
Что можно сказать о том периоде времени, когда слабость DES уже стала очевидной, а тель в конкурсе на звание AES еще не был объявлен? Что, каналы связи оказались незащищен-ными? Конечно же, нет Предпринимались многочисленные попытки улучшить DES; в частности,
Trang 22победи-2 5 8 А ВВЕДЕНИЕ В ПРИКЛАДНУЮ КРИПТОГРАФИЮ: СИММЕТРИЧНЫЕ ШИФРЫ
компания RSA Data Security предложила шифр DESX (в нем использовалось обеление помимообычных для DES шагов и IP/FP), в некоторых версиях UNIX для свертывания паролей началиприменять одностороннюю функцию хэширования CRYPT(3) - эту тему мы рассмотрим ниже -был предложен шифр RDES (с обменом блоков в зависимости от ключа) и т.д Самой знамени-
той из реализованных попыток улучшить DES стал шифр тройной DES, или 3DES.
Шифр 3DES
Напомним, что причина слабости DES - это ограниченный размер пространства ключей ифункция развертки, которая не использует это пространство в полном объеме Если объе-динить в одном процессе три итерации DES с разными ключами, то длина ключа утраивает-ся: 56 бит хЗ = 164 бит Если обозначить через ек(х) результат шифрования 64-битовогоблока данных ключом К, а через dk(x) - результат дешифрирования того же блока, то
Кс - ek3(dk2(ekl(x))), а для дешифрирования надо действовать так: х = dkl(ek2(dk3(c))).Многие эксперты считают 3DES самым стойким 64-битовым блочным шифром Однакотроекратный прогон DES - это очень медленный и требующий много ресурсов процесс, покрайней мере, если его реализовывать программно В аппаратуре 3DES можно реализоватьдостаточно эффективно, поскольку в нем используются лишь простые операции (см вышеобсуждение шифра Serpent) Можно пойти на компромисс и реализовать 2DES: из преды-
дущих формул видно, что к г может совпадать с к3, тогда мы получаем ключ длиной 112 бит.Помимо 3DES появилось и много других шифров с 64-битовым блоком, пока мир не пе-решел на блоки размером 128 бит Самыми интересными из алгоритмов этой группы, на-верное, были IDEA и Blowfish
Шифр Blowfish
Шифр Blowfish предложил Брюс Шнейер в 1993 году, он свободен от лицензионных ничений и отчислений за использование Этот шифр используется в проекте OpenSSH, имшифруются пароли в OpenBSD Список бесплатных и коммерческих приложений, где на-шел применение шифр Blowfish, приведен на странице http://www.counterpane.com/products.htrnl Напротив, шифр IDEA запатентован Его известность связана с применени-
огра-ем в первоначальной версии программы PGP
Шифр Blowfish состоит из 16 шагов, а длина ключа варьируется от 32 до 448 бит На32-разрядных процессорах он быстрее DES и для его работы достаточно 5 Кб памяти.Однако, алгоритму необходимо много подключей, которые следует вычислить перед нача-лом процедуры шифрования и дешифрирования В отличие от DES, в шифре Blowfish функ-
ция F применяется к левой части блока, а полученный результат объединяется посредством XOR с правой частью Так происходит и в более современных шифрах, в том числе тех, что
были поданы на конкурс, поэтому можно сказать, что Blowfish опередил свое время
На каждом шаге Blowfish сначала выполняется XOR между левой половиной блока исоответствующим шагу подключом Затем к левой половине блока применяется функция
f, а правая половина посредством XOR объединяется с результатом ее работы Наконец, вконце каждого шага, кроме последнего, половины блока меняются местами Для каждогошага нужен только один подключ; для функции F не требуются подключи, зато онапользуется S-блоками, которые зависят от ключа (см обсуждение шифра Twofish, кото-рый пришел на смену Blowfish)
Trang 23После последнего шага выполняется XOR между правой половиной блока и подключом номер 17, а также между левой половиной и подключом 18 Можно считать это разновид-
ностью обеления (поскольку всего шагов 16, то эти подключи больше нигде не ются, как и должно быть в случае обеления)
использу-Для читателей с математическим складом ума:
2 Выполнить XOR между Р1 и первыми 32 бит ключа, затем XOR между Р2 и щими 32 бит ключа и т.д для всех битов ключа (возможно, вплоть до Р14) Повтор-
следую-но использовать биты ключа, пока между всеми элементами массива Р и битами
клю-ча не будет выполнена операция XOR (Для каждого короткого клюклю-ча существует поменьшей мере один эквивалентный более длинный ключ, например если А - 64-би-товый ключ, то АА, ААА и т.д - эквивалентные ключи.)
3 Зашифровать строку, состоящую из одних нулей, алгоритмом Blowfish, используяподключи, порожденные на шагах 1 и 2
4 Заменить Р1 и Р2 результатом шага 3
5 Зашифровать полученный на шаге 3 результат алгоритмом Blowfish с ванными подключами
модифициро-6 Заменить РЗ и Р4 результатом шага 5
7 Продолжить эту процедуру, заменяя все элементы массива Р, а затем все четыре
S-бло-ка результатами работы алгоритма Blowfish с постоянно изменяющимися ключами
В общей сложности для генерирования всех необходимых подключей потребуется 521итерация Приложение может сохранить подключи, а не выполнять процедуру их генери-рования многократно В одном случае мы расходуем память, в другом - процессорное вре-
мя Поскольку в функции F есть операции сложения, то шифр Blowfish в какой-то мереуязвим для атак, связанных с энергопотреблением и хронометражем