Смекни!
smekni.com

Совершенствование инфокоммуникационного сопровождения банковской деятельности (стр. 16 из 25)

Из других отличий ГОСТа от DES’а надо отметить следующие. На каждом раунде шифрования используется «раундовый ключ», в DES’е он 48-битовый и вырабатывается по относительно сложному алгоритму, включающему битовые перестановки и замены по таблице, в ГОСТе он берется как фрагмент ключа шифрования. Длина ключа шифрования в ГОСТе равна 256 битам, длина раундового ключа - 32 битам, итого получаем, что ключ шифрования ГОСТа содержит 256 / 32 = 8 раундовых ключей. В ГОСТе 32 раунда, следовательно, каждый раундовый ключ используется 4 раза, порядок использования раундовых ключей установлен в ГОСТе и различен для различных режимов.

Таблица замен в ГОСТе - аналог S-блоков DES’а - представляет собой таблицу (матрицу) размером 8*16, содержащую число от 0 до 15. В каждой строке каждое из 16-ти чисел должно встретиться ровно 1 раз. В отличие от DES’а, таблица замен в ГОСТе одна и та же для всех раундов и не зафиксирована в стандарте, а является сменяемым секретным ключевым элементом. От качества этой таблицы зависит качество шифра. При «сильной» таблице замен стойкость шифра не опускается ниже некоторого допустимого предела даже в случае ее разглашения. И наоборот, использование «слабой» таблицы может уменьшить стойкость шифра до недопустимо низкого предела. Никакой информации по качеству таблицы замен в открытой печати России не публиковалось, однако существование «слабых» таблиц не вызывает сомнения - примером может служить «тривиальная» таблица замен, по которой каждое значение заменяется на него самого. Это делает ненужным для компетентных органов России ограничивать длину ключа - можно просто поставить недостаточно «сильную» таблицу замен.

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

Рассмотрим что такое функция шифрования. Многие алгоритмы, включая DES и ГОСТ, построены по одному и тому же принципу. Процесс шифрования состоит из набора раундов-шагов, на каждом шаге выполняются следующие действия. Входной блок делится пополам на старшую (L) и младшую (R) части. Вычисляется значение функции шифрования от младшей части (R) и раундового ключа (k)

X = f (R,k) (3.1)

где Х - значение функции шифрования;

f (R,k) - функция шифрования от младшей части (R) и раундового ключа (k).

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

Формируется выходной блок, его старшая часть равна младшей части входного блока L’ = R, а младшая часть это результат выполнения операции побитового «исключающего или» (обозначим его (+)) для старший части входного блока и результата вычисления функции шифрования:

R’ = L (+) * f (R,k) (3.2)

Функция шифрования ГОСТа очень проста:

· младшая часть блока k и раундовый ключ складываются по модулю 232;

· полученное значение преобразуется по таблице замен – оно делится на 8 4-битовых групп, и каждая группа заменяется на новое значение с использованием соответствующего узла замен.

ГОСТ 28147-89 – это блочный шифр с 256-битным ключом и 32 циклами преобразования, оперирующий 64-битными блоками. Основа алгоритма шифра - Сеть Фейстеля. Базовым режимом шифрования по ГОСТ 28147-89 является режим простой замены (определены также более сложные режимы гаммирования и гаммирования с обратной связью). Для зашифрования в этом режиме открытый текст сначала разбивается на левую и правую половины L и R. На i-ом цикле используется подключ ki:

Ri + 1 = Li (3.3)

Li+1 = Ri Å f (Li, Ki) (Å = xor) (3.4)

Для генерации подключей исходный 256-битный ключ разбивается на восемь 32-битных блоков: К1,…, К8. Расшифрование выполняется так же, как и зашифрование, но инвертируется порядок подключей Ki..

Функция f (Li,Ki) вычисляется следующим образом. Ri-1 и Ki складываются по модулю 232. Результат разбивается на восемь 4-битовых подпоследовательностей, каждая из которых поступает на вход своего S-блока. Общее количество S-блоков ГОСТа — восемь, т. е. столько же, сколько и подпоследовательностей. Каждый S-блок представляет собой перестановку чисел от 0 до 15. Первая 4-битная подпоследовательность попадает на вход первого S-блока, вторая — на вход второго и т.д.

Если S-блок выглядит так: [1, 15, 13, 0, 5, 7, 10, 4, 9, 2, 3, 14, 6, 11, 8, 12] и на входе S-блока 0, то на выходе будет 1, если 5, то на выходе будет 7 и т.д.

Выходы всех восьми S-блоков объединяются в 32-битное слово, затем всё слово циклически сдвигается влево на 11 бит.

Все восемь S-блоков могут быть различными. Фактически, они могут являтся дополнительным ключевым материалом, но чаще являются параметром схемы, общим для определенной группы пользователей.

Таким образом, основываясь на проведенном анализе, следует выделить такие достоинства отечественного стандарта защиты информации как:

· бесперспективность силовой атаки;

· эффективность реализации и соответственно высокое быстродействие на современных компьютерах.

Алгоритм ГОСТ 28147-89 является классическим алгоритмом симметричного шифрования на основе сети Фейстеля (рис. 3.1).

N1

N2


Повтор раундов

N1

N2

Рис. 3.1 - Сеть Фейстеля

Данный алгоритм шифрует информацию блоками по 64 бита (такие алгоритмы называются «блочными»). Смысл сети Фейстеля состоит в том, что блок шифруемой информации разбивается на два или более субблоков, часть которых обрабатывается по определенному закону, после чего результат этой обработки накладывается (операцией побитового сложения по модулю 2) на необрабатываемые субблоки. Затем субблоки меняются местами, после чего обрабатываются снова и т.д. определенное для каждого алгоритма число раз – раундов.

Основное отличие алгоритмов симметричного шифрования друг от друга состоит именно в различных функциях обработки субблоков. Данная функция часто называется «основным криптографическим преобразованием», поскольку именно она несет основную нагрузку при шифровании информации. Основное преобразование алгоритма ГОСТ 28147-89 является достаточно простым, что обеспечивает высокое быстродействие алгоритма; в нем выполняются следующие операции (рис. 3.2).


Рис. 3.2 - Основное преобразование алгоритма ГОСТ 28147-89

Охарактеризуем данную схему преобразований алгоритма стандарта.

1. Сложение субблока с определенным фрагменом ключашифрования по модулю 232. Кх — это 32-битная часть («подключ») 256-битного ключа шифрования, который можно представить как конкатенацию 8 подключей: К = К0, К1, К2, К3, К4, К5, К6, К7. В зависимости от номера раунда и режима работы алгоритма, для данной операции выбирается один из подключей.

2. Табличная замена. Для ее выполнения субблок разбивается на восемь 4-битных фрагментов, каждый из которых прогоняется через свою таблицу замены. Таблица замены содержит в определенной последовательности значения от 0 до 15 (т.е. все варианты значений 4-битного фрагмента данных); на вход таблицы подается блок данных, числовое представление которого определяет номер выходного значения. Например, подается значение 5 на вход следующей таблицы: «13 0 11 74 91 10 143 5 122 15 8 6». В результате на выходе получается значение 9 (поскольку 0 заменяется на 13, 1 — на 0, 2 — на 11 и т.д.).

3. Побитовый циклический сдвиг данных внутри субблока на 11 бит влево.

Алгоритм ГОСТ 28147-89 имеет 4 режима работы:

1. режим простой замены;

2. режим гаммирования;

3. режим гаммирования с обратной связью;

4. режим выработки имитоприставок.

Все режимы используют одно и то же основное преобразование, но с разным числом раундов и различным образом.

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

· К ((г — 1) % 8) - для раундов с 1 -го по 24-й (r обозначает номер раунда, а % - операция вычисления остатка от деления), т.е. К0, К1, К2, К3, К4, К5, К6, К7, К0, К1, К2 и т. д.;

· К ( (32 – r) % 8) - для раундов с 25-го по 32-й, т.е. в обратном порядке: К7, К6, К5, К4, К3, К2, К1, К0.