Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Иванов М.А. КМЗИ сети

.pdf
Скачиваний:
404
Добавлен:
28.03.2016
Размер:
3.19 Mб
Скачать

Базовые циклы ГОСТа. Базовые циклы 32-З, 32-Р (циклы шифрования Ek и Dk ) и 16-З (цикл выработки имитопристав-

ки Ek ) отличаются друг от друга только числом повторений

основного шага и порядком использования элементов ключа. В обозначении цикла первый элемент число повторений основного шага (32 или 16), второй элемент тип функции (З зашифрование, Р расшифрование). Кроме того, в конце циклов шифрования для взаимной обратимости предусмотрена дополнительная перестановка элементов L и R. Порядок использования элементов ключа имеет вид:

цикл зашифрования 32-З три раза вперед, один раз назад

( k0 , k1, ..., k7 , k0 , k1, ... , k7 , k0 , k1, ..., k7 , k7 , k6 , ..., k0 );

цикл расшифрования 32-Р один раз вперед, три раза назад

( k0 , k1, ..., k7 , k7 , k6 , ..., k0 , k7 , k6 , ..., k0 , k7 , k6 , ..., k0 );

цикл выработки имитоприставки 16-З два раза вперед

( k0 , k1, ..., k7 , k0 , k1, ..., k7 ).

Режимы шифрования ГОСТа. ГОСТ 28147-89 определяет три режима шифрования данных (простая замена, гаммирование и гаммирование с обратной связью) и режим выработки имитоприставки.

Простая замена заключается в применении цикла 32-З к блокам открытого текста при зашифровании и цикла 32-Р к блокам закрытого текста при расшифровании. Режим простой замены полностью совпадает с режимом ECB, описанным выше.

Гаммирование наложение на открытые данные псевдослучайной гаммирующей последовательности. Режим гаммирования аналогичен режиму Counter, описанному выше. Блоки гаммы получаются в результате зашифрования в режиме простой замены элементов выходной последовательности 64-разрядного счетчика. Таким образом, генератор гаммы имеет ярко выраженную двухступенчатую структуру, при этом первая ступень, т.е. счетчик, обеспечивает близкий к максимально возможному зна-

чению 264 период гаммирующей последовательности, а вторая (т.е. функция Ek ) необходимую криптостойкость. Схема счет-

чика ГОСТа, являющегося по сути двумя независимо работающими рекуррентными генераторами со взаимно простыми зна-

91

чениями периодов ( 232 и 232 1), формирующими правую и левую половины блоков, обладает следующими свойствами:

соседние 64-битовые значения, вырабатываемые генератором, для повышения криптостойкости отличаются друг от друга в каждом байте; генератор легко реализуется как аппаратно, так и на 32-

разрядных процессорах программно; синхропосылка (начальное заполнение генератора ПСЧ) пе-

ред инициализацией генератора подвергается преобразованию по циклу 32-З;

период выходной последовательности равен 232 232 1 . Рекуррентные соотношения для старшей ( QL ) и младшей ( QR )

частей генератора имеют вид

QL t 1 QL t C1 mod232 ;

QH t 1 QH t C2 1 mod 232 1 1, где С1 = 01010101h, С2 = 01010104h.

Гаммирование с обратной связью полностью совпадает с вы-

шеописанным режимом CFB. Его отличительная особенность способ выработки очередного элемента гаммы. Первый элемент гаммы является результатом шифрования по циклу 32-З синхропосылки. Любой последующий элемент гаммы вырабатывается как результат преобразования по циклу 32-З предыдущего блока шифротекста, вследствие чего каждый блок шифротекста зависит от соответствующего и всех предыдущих блоков открытого текста.

Рассмотрим еще раз влияние искажений шифротекста на полученные в результате расшифрования открытые данные.

Врежиме простой замены искажение блока шифротекста приводит при расшифровании к непредсказуемым изменениям соответствующего блока открытого текста.

Врежиме гаммирования все изменения открытого текста предсказуемы.

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

92

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

топриставки.

Имитоприставка это добавляемый к зашифрованным данным контрольный код, зависящий от открытых данных и ключевой информации. Для противника вычислительно неразрешимы две задачи:

1)вычисление имитоприставки для заданной незашифрованной информационной последовательности;

2)подбор открытых данных под заданную имитоприставку. Схема формирования имитоприставки – зашифрование ин-

формации в режиме CFB, при этом Ek – функция зашифрования

по циклу 16-З. В качестве имитоприставки используется часть последнего зашифрованного блока, обычно его младшие 32 разряда. В общем случае вероятность успешного навязывания лож-

ных данных равна 2-N .

2.6. Американский стандарт криптографической защиты

История конкурса на стандарт криптографической защи-

ты ХХI в. Advanced Encryption Standard (AES). В 1997 г.

НИСТ объявил о начале программы по принятию нового стандарта криптографической защиты, стандарта ХХI в., для закрытия важной информации правительственного уровня, на замену существующему с 1974 г. алгоритму DES, на тот момент самому распространенному криптоалгоритму в мире. DES устарел по многим параметрам: длине ключа, удобству реализации на современных процессорах, быстродействию и другим, за исключением самого главного – стойкости. За 25 лет интенсивного криптоанализа не было найдено методов вскрытия этого шифра, существенно отличающихся по эффективности от полного перебора по ключевому пространству.

93

Требования к кандидатам были следующие: криптоалгоритм должен быть открыто опубликован;

криптоалгоритм должен быть симметричным блочным шифром, допускающим размеры ключей в 128, 192 и 256 бит; криптоалгоритм должен быть предназначен как для аппа-

ратной, так и программной реализации; криптоалгоритм не должен быть запатентован, в противном случае патентные права должны быть аннулированы;

криптоалгоритм подвергается исследованиям по таким па-

раметрам, как стойкость, стоимость, гибкость.

Стойкость. Это самый важный критерий в оценке алгоритма. Оценивались: способность шифра противостоять различным методам криптоанализа, статистическая безопасность и относительная защищенность по сравнению с другими кандидатами. Оценивалась стойкость к атаке методом полного перебора с учетом прогнозируемого роста вычислительных мощностей.

Стоимость. Не менее важный критерий, если принимать во внимание одну из основных целей NIST – широкую область использования и доступность AES. Стоимость зависит от вычислительной эффективности (в первую очередь быстродействия) на различных платформах, удобства программной и аппаратной реализации, низким требованиям к памяти, простоты (простые алгоритмы легче реализовывать, они более прозрачны для анализа)

Гибкость. Включает в себя способность алгоритма обрабатывать ключи больше оговоренного минимума (128 бит), надежность и эффективность выполнения в разных средах, возможность реализации других криптографических функций.

Другими словами, AES должен быть существенно более эффективным с точки зрения практической реализации (в первую очередь скорости шифрования и формирования ключей), иметь больший запас прочности, чем TripleDES, при этом не уступая ему в стойкости.

Реализуемость в Smart-картах. Важная область использования AES – smart-карты, при этом главной проблемой является небольшой объем доступной памяти. NIST исходил из допущения, что некоторые дешевые карты могут иметь всего 256 байтов

94

RAM (для вычисляемых данных) и 2000 байтов ROM (для хранения алгоритмов и констант). Существуют два основных метода формирования раундовых ключей:

1)вычисление на начальном этапе работы криптоалгоритма и хранение в памяти;

2)вычисление раундовых ключей «на лету».

Ясно, что второй вариант уменьшает затраты RAM, и поэтому наличие такой возможности в криптоалгоритме является его несомненным достоинством.

На конкурс были приняты 15 алгоритмов, разработанных криптографами 12 стран – Австралии, Бельгии, Великобритании, Германии, Израиля, Канады, Коста-Рики, Норвегии, США, Франции, Южной Кореи и Японии.

В финал конкурса вышли следующие алгоритмы: MARS, RC6, TWOFISH (США), RIJNDAEL (Бельгия), SERPENT

(Великобритания, Израиль, Норвегия). По своей структуре TWOFISH – классический шифр Фейстеля; MARS и RC6 можно отнести к модифицированным шифрам Фейстеля, в них используется новая малоизученная операция циклического «прокручивания» бит слова на число позиций, изменяющихся в зависимости от шифруемых данных и секретного ключа; RIJNDAEL и SERPENT являются классическими SP-сетями. MARS и TWOFISH имеют самую сложную конструкцию, RIJNDAEL и RC6 – самую простую.

Финалисты будут описаны по единой схеме, данной в документе NIST. Сначала описываются обнаруженные «слабости» алгоритма (если таковые имеются), затем преимущества и, наконец, недостатки.

MARS выставлен на конкурс фирмой IBM, одним из авторов шифра является Д. Копперсмит, участник разработки DES. В алгоритме не обнаружено слабостей в защите.

Преимущества:

высокий уровень защищенности; высокая эффективность на 32-разрядных платформах, осо-

бенно поддерживающих операции умножения и циклического сдвига; потенциально поддерживает размер ключа больше 256 бит.

95

Недостатки:

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

RC6 предложен фирмой RSA Lab, один из авторов – Р. Ривест. В алгоритме не обнаружено слабостей в защите.

Преимущества:

высокая эффективность на 32-разрядных платформах, особенно поддерживающих операции умножения и циклических сдвигов; простая структура алгоритма, упрощающая анализ его надежности;

наличие хорошо изученного предшественника – RC5; быстрая процедура формирования ключа; потенциально поддерживает размер ключа больше 256 бит; длина ключа и число раундов могут быть переменными.

Недостатки:

относительно низкий уровень защищенности; снижение эффективности на платформах, не имеющих необходимых операций;

сложность защиты от временного анализа и анализа мощности; невозможность генерации раундовых ключей «на лету».

TWOFISH основан на широко используемом шифре BLOWFISH; один из авторов разработки – Б. Шнайер. Главная особенность шифра – изменяющиеся в зависимости от секретного ключа таблицы замен. В алгоритме не обнаружено слабостей в защите.

Преимущества:

высокий уровень защищенности;

хорошо подходит для реализации в Smart-картах из-за низких требований к памяти; высокая эффективность на любых платформах, в том числе

на ожидаемых в будущем 64-разрядных архитектурах фирм

Intel и Motorola;

поддерживает вычисление раудовых ключей «на лету»; поддерживает распараллеливание на уровне инструкций;

96

допускает произвольную длину ключа до 256 бит.

Недостатки:

особенности алгоритма затрудняют его анализ; высокая сложность алгоритма;

применение операции сложения делает алгоритм уязвимым к анализу мощности и временному анализу.

RIJNDAEL, большинством участников конкурса названный лучшим выбором (если будет отвергнут их собственный шифр), основан на шифре SQUARE тех же авторов. В алгоритме не обнаружено слабостей в защите.

Преимущества:

высокая эффективность на любых платформах; высокий уровень защищенности;

хорошо подходит для реализации в Smart-картах из-за низких требований к памяти; быстрая процедура формирования ключа;

хорошая поддержка параллелизма на уровне инструкций; поддержка разных длин ключа с шагом 32 бита.

Недостаток:

уязвимость к анализу мощности.

SERPENT – разработка профессиональных криптоаналитиков Р. Андерсона, Э. Бихэма, Л. Кнудсена. Создав шифр, успешно противостоящий всем известным на сегодня атакам, разработчики затем удвоили количество его раундов. В алгоритме не обнаружено слабостей в защите.

Преимущества:

высокий уровень защищенности;

хорошо подходит для реализации в Smart-картах из-за низких требований к памяти.

Недостатки:

самый медленный алгоритм среди финалистов; уязвимость к анализу мощности.

В октябре 2000 г. конкурс завершился – победителем был признан бельгийский шифр RIJNDAEL, имеющий наилучшее сочетание стойкости, производительности, эффективности реализации, гибкости. Его низкие требования к объему памяти делают его идеально подходящим для встроенных систем. Авторы

97

шифра – Joan Daemen и Vincent Rijmen, начальные буквы фамилий которых и образуют название алгоритма – RIJNDAEL.

AES-128. RIJNDAEL это итеративный блочный шифр, имеющий переменную длину блоков и различные длины ключей. Длина ключа и длина блока могут быть равны независимо друг от друга 128, 192 или 256 битам.

Рассмотрим версию криптоалгоритма AES-128. Промежуточные результаты преобразований, выполняемых в рамках криптоалгоритма, называются состояниями (state). Все входные блоки данных, все промежуточные результаты преобразований, все выходные блоки данных, а также ключ шифрования можно представить в виде квадратного массива байтов (рис. 2.12). Этот массив имеет четыре строки и четыре столбца.

a00

a01

a02

a03

 

 

 

 

a10

a11

a12

a13

 

 

 

 

a20

a21

a22

a23

 

 

 

 

a30

a31

a32

a33

 

 

 

 

k00

k01

k02

k03

 

 

 

 

k10

k11

k12

k13

 

 

 

 

k20

k21

k22

k23

 

 

 

 

a30

a31

a32

a33

 

 

 

 

Рис. 2.12. Пример представления состояния и ключа шифрования для AES-128

В некоторых случаях ключ шифрования рассматривается как линейный массив 4-байтовых слов. Слова состоят из четырех байтов, которые находятся в одном столбце (при представлении в виде прямоугольного массива).

Входные данные для шифра обозначаются как байты состоя-

ния в порядке a00, a10, a20, a30, a01, a11, a21, a31, ... . После завершения действия шифра выходные данные получаются из байтов

состояния в том же порядке.

В состав раунда AES-128 входят следующие четыре преобразования (рис. 2.13):

побайтовая замена байтов состояния с использованием фиксированной таблицы замен размером 8υ256 (SubBytes); побайтовый циклический сдвиг строк результата – i-я строка

сдвигается на i байтов влево, i 0, 3 (ShiftRows);

98

перемешивание столбцов результата (MixColumns); поразрядное сложение по модулю 2 (XOR) результата с раундовым ключом (AddRoundKey).

Десятый раунд отличается от остальных – в нем отсутствует предпоследняя операция для более эффективной реализации обратного преобразования.

SubBytes

ShiftRows

MixColumns

AddRoundKey

Рис. 2.13. Раундовые преобразования AES-128

Замена байтов (SubBytes). Преобразование представляет собой нелинейную замену байтов, выполняемую независимо с каждым байтом состояния. Таблица замены S-блока является инвертируемой. Рис. 2.14 иллюстрирует применение преобразования SubBytes к состоянию.

a00

a01

a02

a03

S-блок

b00

b01

b02

b03

a10

a11

a12ij

a13

 

b10

b11

b12ij

b13

a20

a21

a22

a23

 

b20

b21

b22

b23

a30

a31

a32

a33

 

b30

b31

b32

b33

Рис. 2.14. SubBytes действует на каждый байт состояния

Преобразование сдвига строк (ShiftRows). Последние три строки состояния циклически сдвигаются на различное число байт. Строка 1 сдвигается на один байт, строка 2 – на два байта

99

и строка 3 на три байта. Рис. 2.15 показывает влияние преобразования на состояние.

Без сдвига

Циклический сдвиг на 1 байт

Циклический сдвиг на 2 байта

Циклический сдвиг на 3 байта

Рис. 2.15. ShiftRows действует на строки состояния

Преобразование перемешивания столбцов (MixColumns).

Рис. 2.16 демонстрирует применение преобразования MixColumns к столбцу состояния.

Добавление раундового ключа (AddRoundKey). В данной операции раундовый ключ добавляется к состоянию посредством простого поразрядного XOR (рис. 2.17). Раундовый ключ вырабатывается из ключа шифрования посредством алгоритма выработки ключей (key schedule).

 

 

 

 

a0j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b0j

 

 

 

 

 

a00

a01

 

aa0032

a03

 

 

 

Mix

 

 

 

b00

b01

 

ab032

b03

 

 

 

 

 

 

a1j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b1j

 

 

 

 

 

a10

a11

a13

 

 

 

 

 

 

 

 

b10

b11

 

b13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

aa1012

 

 

 

 

 

 

 

 

 

b12ij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a20

a21

 

aa2032j

a23

 

 

 

 

 

 

 

 

b20

b21

ba232j

b23

 

 

 

a30

a31

 

 

 

 

a33

 

 

 

 

 

 

 

 

b30

b31

 

 

 

b33

 

 

 

 

aa30332

 

 

 

 

 

 

 

 

 

ab332

 

 

 

 

 

a3j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b3j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.16. MixColumns действует на столбцы состояния

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a00

a01

a02

 

a03

 

 

 

 

 

 

k00

k01

k02

k03

 

 

 

b00

 

b01

 

b02

b03

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a10

a11

a12

 

a13

 

 

 

 

 

 

k10

k11

k12

k13

 

 

 

b10

 

b11

 

b12

b13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a20

a21

a22

 

a23

 

 

 

 

 

 

k20

k21

k22

k23

 

 

 

b20

 

b21

 

b22

b23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a30

a31

a32

 

a33

 

 

 

 

 

 

k30

k31

k32

k33

 

 

 

b30

 

b31

 

b32

b33

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.17. При добавлении ключа раундовый ключ складывается посредством операции XOR с состоянием

100