Стандарт шифрования гост 28147-89

Алгоритм криптографического преобразования данных предназначен для аппаратной и программной реализации, удовлетворяет криптографическим требованиям и не накладывает ограничений на степень секретности защищаемой информации. Алгоритм шифрования данных, определяемый ГОСТ 28147-89, представляет собой 64-битный блочный алгоритм с 256-битным ключом. Данные, подлежащие зашифрованию, разбивают на 64-разрядные блоки. Эти блоки разбиваются на два субблока N1 и N2 по 32 бит (рис. 4.7).

стандарт шифрования гост 28147-89 - student2.ru

Рис. 4.7. Схема алгоритма ГОСТ 28147-89

Субблок N1 обрабатывается определенным образом, после чего его значение складывается со значением субблока N2 (сложение выполняется по модулю 2, то есть применяется логическая операция XOR – исключающее ИЛИ), а затем субблоки меняются местами. Данное преобразование выполняется определенное число раз (раундов): 16 или 32 в зависимости от режима работы алгоритма.

В каждом раунде выполняются две операции:

¨ наложение ключа – содержимое субблока N1 складывается по модулю 232 с 32-битной частью ключа Kх. Полный ключ шифрования представ­ляется в виде конкатенации 32-битных подключей: К0, К1, К2, КЗ, К4, К5, К6, К7. В процессе шифрования используется один из этих подключей – в зависимости от номера раунда и режима работы алгоритма.

¨ табличная замена – после наложения ключа субблок N1 разбивается на 8 частей по 4 бит, значение каждой из которых заменяется в соответствии с таблицей замены для данной части субблока. Затем выполняется побитный циклический сдвиг субблока влево на 11 бит.

Табличные замены. Блок подстановки S-box состоит из восьми узлов замены (S-блоков замены) S1, S2, ..., S8 с памятью 64 бит каждый. Поступающий на блок подстановки S 32-битный вектор разбивают на восемь последовательно идущих 4-битных векторов, каждый из которых преобразуется в 4-битный вектор соответствующим узлом замены. Каждый узел замены можно представить в виде таблицы-перестановки шестнадцати 4-битных двоичных чисел в диапазоне 0000÷1111. Входной вектор указывает адрес строки в таблице, а число в этой строке является выходным вектором. Затем 4-битные выходные векторы последовательно объединяют в 32-битный вектор. Узлы замены (таблицы-перестановки) представляют собой ключевые элементы, которые являются общими для сети ЭВМ и редко изменяются. Эти узлы замены должны сохраняться в секрете.

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

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

¨ К0, К1, К2, К3, K4, К5, К6, К7, К0, К1 и т. д. – в раундах с 1-го по 24-й;

¨ К7, К6, К5, K4, К3, К2, К1, К0 – в раундах с 25-го по 32-й.

Расшифрование в данном режиме проводится точно так же, но с несколько другой последовательностью применения подключей:

¨ К0, К1, К2, К3, K4, К5, К6, К7 – в раундах с 1-го по 8-й;

¨ К7, К6, К5, К4, К3, К2, К1, К0, К7, К6 и т.д. – в раундах с 9-го по 32-й.

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

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

1. В регистры N1 и N2 записывается их начальное заполнение – 64-битная величина, называемая синхропосылкой.

2. Выполняется зашифрование содержимого регистров N1 и N2 (в данном случае синхропосылки) в режиме простой замены.

3. Содержимое регистра N1 складывается по модулю (232 - 1) с константой С1 = 224 + 216 + 28 + 24, а результат сложения записывается в регистр N1.

4. Содержимое регистра N2 складывается по модулю 232 с константой С2 = 224 + 216 + 28 + 1, а результат сложения записывается в регистр N2.

5. Содержимое регистров N1 и N2 подается на выход в качестве 64-битного блока гаммы шифра (в данном случае N1 и N2 образуют первый блок гаммы).

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

Для расшифрования гамма вырабатывается аналогичным образом, а затем к битам зашифрованного текста и гаммы снова применяется операция XOR. Поскольку эта операция обратима, в случае правильно выработанной гаммы получается исходный текст (табл. 4.3).

стандарт шифрования гост 28147-89 - student2.ru

Рис. 4.8. Выработка гаммы шифра в режиме гаммирования с обратной связью

Таблица 4.3. Пример зашифрования и расшифрования в режиме гаммирования

Операция Результат
Исходный текст  
Гамма XOR
Шифртекст =
Гамма XOR
Исходный текст =

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

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

В режиме гаммирования с обратной связью для заполнения регистров N1 и N2 начиная со 2-го блока используется не предыдущий блок гаммы, а результат зашифрования предыдущего блока открытого текста (рис. 4.8). Первый же блок в данном режиме генерируется полностью аналогично предыдущему.

В режиме генерации имитоприставок генерируется имитоприставка. Имитоприставка – это криптографическая контрольная сумма, вычисляемая с использованием ключа шифрования и предназначенная для проверки целостности сообщений. При генерации имитоприставки выполняются следующие операции: первый 64-битный блок массива информации, для которого вычисляется имитоприставка, записывается в регистры N1 и N2 и зашифровыва­ется в сокращенном режиме простой замены (выполняются первые 16 раундов из 32). Полученный результат суммируется по модулю 2 со следующим блоком информации с сохранением результата в N1 и N2.

Цикл повторяется до последнего блока информации. Получившееся в результате этих преобразований 64-битное содержимое регистров N1 и N2 или его часть и называется имитоприставкой. Размер имитоприставки выбирается, исходя из требуемой достоверности сообщений: при длине имитоприставки r бит вероятность, что изменение сообщения останется незамеченным, равна 2-r.

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

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

Алгоритм ГОСТ 28147-89 считается очень стойким – в настоящее время для его раскрытия не предложено более эффективных методов, чем упомянутый выше метод «грубой силы». Его высокая стойкость достигается в первую очередь за счет большой длины ключа – 256 бит. При использовании секретной синхропосылки эффективная длина ключа увеличивается до 320 бит, а засекречивание таблицы замен прибавляет дополнительные биты. Кроме того, криптостойкость зависит от количества раундов преобразований, которых по ГОСТ 28147-89 должно быть 32 (полный эффект рассеивания входных данных достигается уже после 8 раундов).

Стандарт шифрования AES

Криптоалгорит AES обладает следующими свойствами:

¨ алгоритм является симметричным;

¨ алгоритм является блочным шифром;

¨ алгоритм имеет длину блока 128 бит и поддерживать три длины ключа: 128, 192 и 256 бит.

¨ алгоритм использует операции, реализуемые как аппаратно (в микрочипах), так и программно (на персональных компьютерах и серверах);

¨ алгоритм ориентироваться на 32-разрядные процессоры;

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

В отличие от отечественного стандарта шифрования ГОСТ 28147-89, алгоритм AES представляет каждый блок обрабатываемых данных в виде двухмерного байтного массива размером 4´4, 4´6 или 4´8 в зависимости от установленной длины блока. Далее на соответствующих этапах производятся преобразования либо над независимыми столбцами, либо над независимыми строками, либо вообще над отдельными байтами.

Алгоритм AES состоит из определенного количества раундов (от 10 до 14 – это зависит от размера блока и длины ключа) и выполняет четыре преобразования:

¨ BS (ByteSub) – табличная замена каждого байта массива (рис. 4.9). Преобразование BS является нелинейной байтовой подстановкой которая воздействует независимо на каждый байт массива, используя таблицу замен (подстановок) S-box;

¨ SR (ShiftRow) – сдвиг строк массива (рис. 4.10). При этой операции первая строка остается без изменений, а остальные циклически побайтно сдвигаются влево на фиксированное число байтов, зависящее от размера массива. Например, для массива размером 4´4 строки 2, 3 и 4 сдвигаются соответственно на 1, 2 и 3 байта;

¨ МС (MixColumn) – операция над независимыми столбцами массива (рис. 4.11) – каждый столбец по определенному правилу умножается на фиксированную матрицу с(х);

¨ АК (AddRoundKey) – добавление ключа. Каждый бит массива складывается по модулю 2 с соответствующим битом ключа раунда, который, в свою очередь, определенным образом вычисляется из ключа шифрования (рис. 4.12).

стандарт шифрования гост 28147-89 - student2.ru

Рис. 4.9. Преобразование BS (ByteSub) использует таблицу замен

(подстановок) для обработки каждого байта массива State

стандарт шифрования гост 28147-89 - student2.ru

Рис. 4.10. Преобразование SR (ShiftRow) циклически сдвигает

три последних строки в массиве State

стандарт шифрования гост 28147-89 - student2.ru

Рис. 4.11. Преобразование МС (MixColumn) поочередно обрабатывает

столбцы массива State

стандарт шифрования гост 28147-89 - student2.ru

Рис. 4.12. Преобразование АК (AddRoundKey) производит сложение XOR

каждого столбца массива State со словом из ключевого набора

В каждом раунде над шифруемыми данными поочередно выполняются перечисленные преобразования (рис. 4.13). Исключения касаются первого и последнего раундов: перед первым раундом дополнительно выполняется операция АК, а в последнем раунде отсутствует МС.

стандарт шифрования гост 28147-89 - student2.ru

Рис. 4.13. Раунд алгоритма AES

В результате последовательность операций при зашифровании выглядит так: АК, {BS, SR, МС, АК} (повторяется R - 1 раз), BS, SR, АК.

Количество раундов шифрования R в алгоритме AES переменное (10, 12 или 14 раундов) и зависит от размеров блока и ключа шифрования (для ключа также предусмотрено несколько фиксированных размеров).

Расшифрование выполняется с помощью следующих обратных операций:

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

2. Обратной операцией к SR является циклический сдвиг строк вправо.

3. Обратная операция для МС – умножение по тем же правилам на другую матрицу d(x), удовлетворяющую условию с(х) * d(x) = 1.

4. Добавление ключа АК является обратным самому себе, поскольку в нем используется только операция XOR.

Эти обратные операции применяются при расшифровании в последовательности, обратной той, что использовалась при зашифровании.

Алгоритм имеет ряду преимуществ перед другими алгоритмами:

¨ он обеспечивает высокую скорость шифрования на всех платформах: как при программной, так и при аппаратной реализации;

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

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

Наши рекомендации