Основы криптографии

Алгоритм криптографического преобразования данных ГОСТ 28147-89

Показывать лекцию целиком

Цель лекции: изучение блочного алгоритма шифрования по ГОСТ 28147-89.

Основные сведения

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

В отличие от американского DES в отечественном стандарте применяется более длинный ключ – 256 бит. Кроме того, российский стандарт предлагает использовать 32 раунда шифрования, тогда как DES – только 16.

Таким образом, основные параметры алгоритма криптографического преобразования данных ГОСТ 28147-89 следующие: размер блока составляет 64 бита, размер ключа – 256 бит, количество раундов – 32.

Алгоритм представляет собой классическую сеть Фейштеля. Шифруемый блок данных разбивается на две одинаковые части, правую R и левую L. Правая часть складывается с подключом раунда и посредством некоторого алгоритма шифрует левую часть. Перед следующим раундом левая и правая части меняются местами. Такая структура позволяет использовать один и тот же алгоритм как для шифрования, так и для дешифрования блока.

В алгоритме шифрования используются следующие операции:

  • сложение слов по модулю 232;
  • циклический сдвиг слова влево на указанное число бит;
  • побитовое сложение по модулю 2;
  • замена по таблице.
  • На различных шагах алгоритмов ГОСТа данные, которыми они оперируют, интерпретируются и используются различным образом. В некоторых случаях элементы данных обрабатываются как массивы независимых битов, в других случаях – как целое число без знака, в третьих – как имеющий структуру сложный элемент, состоящий из нескольких более простых элементов.

    Структура раунда ГОСТ 28147-89

    Структура одного раунда ГОСТ 28147-89 приведена на рис 5.1.

    Шифруемый блок данных разбивается на две части, которые затем обрабатываются как отдельные 32-битовые целые числа без знака. Сначала правая половина блока и подключ раунда складываются по модулю 232. Затем производится поблочная подстановка. 32-битовое значение, полученное на предыдущем шаге (обозначим его S), интерпретируется как массив из восьми 4-битовых блоков кода: S=(S0,S1,S2,S3,S4,S5,S6,S7). Далее значение каждого из восьми блоков заменяется на новое, которое выбирается по таблице замен следующим образом: значение блока Si заменяется на Si-тый по порядку элемент (нумерация с нуля) i-го узла замен (т.е. i-той строки таблицы замен, нумерация также с нуля). Другими словами, в качестве замены для значения блока выбирается элемент c номером строки, равным номеру заменяемого блока, и номером столбца, равным значению заменяемого блока как 4-битового целого неотрицательного числа. В каждой строке таблицы замен записаны числа от 0 до 15 в произвольном порядке без повторений. Значения элементов таблицы замен взяты от 0 до 15, так как в четырех битах, которые подвергаются подстановке, может быть записано целое число без знака в диапазоне от 0 до 15. Например, первая строка S-блока может содержать такие значения: 5, 8, 1, 13, 10, 3, 4, 2, 14, 15, 12, 7, 6, 0, 9, 11. В этом случае значение блока S0 (четыре младших бита 32-разрядного числа S) заменится на число, стоящее на позиции, номер которой равен значению заменяемого блока. Если S0 = 0, то оно заменится на 5, если S0= 1, то оно заменится на 8 и т.д.

    (рис 5.1) Структура одного раунда ГОСТ 28147-89

    После выполнения подстановки все 4-битовые блоки снова объединяются в единое 32-битное слово, которое затем циклически сдвигается на 11 битов влево. Наконец, с помощью побитовой операции "сумма по модулю 2" результат объединяется с левой половиной, вследствие чего получается новая правая половина Ri. Новая левая часть Li берется равной младшей части преобразуемого блока: Li= Ri-1.

    Полученное значение преобразуемого блока рассматривается как результат выполнения одного раунда алгоритма шифрования.

    Процедуры шифрования и расшифрования

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

    Рассмотрим процесс создания подключей раундов. В ГОСТ эта процедура очень проста, особенно по сравнению с DES. 256-битный ключ K разбивается на восемь 32-битных подключей, обозначаемых K0, K1, K2,K3, K4, K5, K6, K7. Алгоритм включает 32 раунда, поэтому каждый подключ при шифровании используется в четырех раундах в последовательности, представленной на таблица 5.1.

    Последовательность использования подключей при шифровании
    Раунд12345678
    ПодключK0K1K2K3K4K5K6K7
    Раунд910111213141516
    ПодключK0K1K2K3K4K5K6K7
    Раунд1718192021222324
    ПодключK0K1K2K3K4K5K6K7
    Раунд2526272829303132
    ПодключK7K6K5K4K3K2K1K0

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

    Последовательность использования подключей при расшифровании
    Раунд12345678
    ПодключK7K6K5K4K3K2K1K0
    Раунд910111213141516
    ПодключK7K6K5K4K3K2K1K0
    Раунд1718192021222324
    ПодключK7K6K5K4K3K2K1K0
    Раунд2526272829303132
    ПодключK7K6K5K4K3K2K1K0

    Основные режимы шифрования

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

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

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

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

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

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

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

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

    $$Y=f((X_i \oplusY_{i-1}),K)\ для\ всех\ i\ от\ 1\ до\ n$$

    где f – базовый цикл по ГОСТ 28147-89; Xi – 64-разрядный блок исходного текста; K – ключ.

    В качестве имитовставки берется часть блока Yn, полученного на выходе, обычно 32 его младших бита.

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

    Отличия алгоритмов шифрования по ГОСТ 28147-89 и DES

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

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

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

    К уже отмеченным отличиям между алгоритмами DES и ГОСТ 28147 можно добавить также следующее. В основном раунде DES применяются нерегулярные перестановки исходного сообщения, в ГОСТ 28147 используется 11-битный циклический сдвиг влево. Последняя операция гораздо удобнее для программной реализации. Однако перестановка DES увеличивает лавинный эффект. В ГОСТ 28147 изменение одного входного бита влияет на один 4-битовый блок при замене в одном раунде, который затем влияет на два 4-битовых блока следующего раунда, три блока следующего и т.д. В ГОСТ 28147 требуется 8 раундов прежде, чем изменение одного входного бита повлияет на каждый бит результата; DES для этого нужно только 5 раундов.

    Также следует отметить, что в отличие от DES, у ГОСТ 28147-89 таблицу замен для выполнения операции подстановки можно произвольно изменять, то есть таблица замен является дополнительным 512-битовым ключом.

    Ключевые термины

    ГОСТ 28147-89 – российский стандарт на блочный алгоритм симметричного шифрования.

    Краткие итоги

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

    Рекомендованные режимы использования: простая замена, гаммирование, гаммирование с обратной связью и режим выработки имитовставки.

    Набор для практики

    Вопросы для самопроверки

  • Для каких целей может использоваться алгоритм криптографического преобразования данных по ГОСТ 28147-89?
  • Перечислите основные параметры алгоритма симметричного шифрования по ГОСТ 28147-89.
  • Какие операции используются в блочном алгоритме шифрования по ГОСТ 28147-89?
  • Каковы основные отличия алгоритма шифрования по ГОСТ 28147-89 от алгоритма DES?
  • Какая информация, помимо секретного ключа, при условии использования стандартных алгоритмов ГОСТ 28147-89 необходима для расшифровки сообщения?
  • В каких режимах может производиться шифрование данных с помощью алгоритма криптографического преобразования по ГОСТ 28147-89?
  • Что такое имитовставка? Для каких целей может быть использована имитовставка?
  • Упражнения для самопроверки

  • Пусть каждые три бита входного сообщения заменяются по следующей таблице замен:
    ВходВыход
    000011
    001101
    010000
    011111
    100010
    101110
    110001
    111100
    Выполните разбиение исходного сообщения на блоки по три бита и произведите поблочную замену для следующих сообщений, представленных в цифровом виде:
  • 1010 1100 1100(2);
  • 2356(10);
  • 0В57(16).
  • Примечание: десятичные и шестнадцатеричные числа необходимо сначала перевести в двоичный вид.
  • Известно, что противник использует следующий блочный код: при шифровании каждые четыре бита входного сообщения заменяются другими четырьмя битами по определенной таблице замен. Удалось перехватить одну пару сообщений "исходный текст" - "зашифрованный текст". Определите таблицу замен, используемую противником. Все сообщения представлены в шестнадцатеричном формате.

    Исходное сообщение: 5A 43 63 19 1E D0 C7 4B F0 8A

    Зашифрованное сообщение: 92 37 A7 C0 CE 6B F1 35 8B D2

  • После вскрытия блочного шифра, описанного в задании 5, коварный противник решил усложнить используемую схему шифрования следующим образом: при шифровании сообщение разбивается на блоки по восемь бит; первые четыре бита входного сообщения заменяются другими четырьмя битами по одной таблице замен, а вторые четыре бита – по другой таблице замен. Удалось перехватить две пары сообщений "исходный текст" - "зашифрованный текст". Определите таблицы замен, используемые противником. Все сообщения представлены в шестнадцатеричном формате.

    Исходное сообщение 1: 5A 4D 6B 19 1E 3F 7C 47 F8

    Зашифрованное сообщение 1: 98 35 AC C1 CE 79 12 34 8D

    Исходное сообщение 2: A3 D0 84 F1 96 C8 E5 77 2B

    Зашифрованное сообщение 2: 2B 66 D0 8A 0F FD E7 14 4C

  • Вернуться к учебному плану