Стандарт шифрования данных ГОСТ 28147-89

Стандарт шифрования данных ГОСТ 28147-89 Криптография

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

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

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

  • простая замена;
  • гаммирование;
  • гаммирование с обратной связью;
  • выработка имитовставки.

Сумматоры по модулю 2 обеспечивают сложение по модулю 2 поступающих на их входы данных, представленных в двоичном виде.

Сумматоры по модулю 232 выполняют операцию суммирования по модулю 232 двух 32-разрядных чисел по правилу:

  • А [+] В = А + В, если А + В < 232,
  • А[+]В=А + В — 232, если А + В > 232.

Сумматор по модулю 232-1 выполняет операцию суммирования по модулю 232-1 двух 32-разрядных чисел по правилу:

  • А[+]В= А + В, еслиА +В<232-1,
  • А[+]В=А + В — (232-1), еслиА +В>232-1.

Накопители с константами Н6 и Н5 содержат 32-разрядные константы, соответственно,

С1 — 00100000100000001000000010000000; С2 — 10000000100000001000000010000000.

Основные 32-разрядные накопители служат для обеспечения всех режимов работы алгоритма.

Читайте: Как заработать на инвестициях в искусственный интеллект? Краудфандинг Daisy от компании EndoTech. Обзор и отзывы о смарт-контракте

Вспомогательные 32-разрядные накопители используются для обеспечения работы алгоритма в режиме гаммирования.

Ключевое запоминающее устройство предназначено для формирования ключевой последовательности W длиной 256 бит, представленной в виде восьми 32-разрядных чисел Xi [i = 0(1)7]. Последовательность W = UXi = XO UX1U … U X7, где U — знак объединения множеств.

Входной вектор определяет адрес строки в таблице замены, а заполнение является выходным вектором. Затем выходные 4-разрядные векторы объединяются в один 32разрядный вектор.

Пусть имеется блок данных с заполнением 0110. В десятичной системе счисления заполнение 0110 соответствует числу 6. Результатом является заполнение 0101, соответствующее узлу замены К1.

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

Регистр циклического сдвига R предназначен для осуществления операции циклического сдвига шифруемых данных на 11 разрядов в сторону старших разрядов в виде:

R(r32, г31,… , r2, rl) — (г21, г20,… ,rl,r32,…, г22)

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

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

Режим простой замены

Открытые данные, предназначенные для шифрования, разбиваются на блоки по 64 бит в каждом, которые обозначим через TOi [i = l(l)m], где m — число 64-разрядных блоков передаваемых открытых данных. После этого выполняются следующие процедуры:

  • первая последовательность бит Т01 разделяется на две последовательности и записывается в накопители: в накопитель Н2 — старшие разряды, в накопитель HI младшие разряды;
  • в ключевое запоминающее устройство вводится ключевая последовательность длиной 256 бит;
  • выполняется итеративный процесс шифрования, состоящий из 32-х циклов.

Первый цикл происходит в следующей последовательности:

  1. Содержимое накопителя HI суммируется по модулю 232 в сумматоре СМ1 с содержимым строки ХО из ключевого запоминающего устройства.
  2. Результат суммирования из сумматора СМ1 поступает на блок подстановки, где происходит поблочная замена результата по 4 бита в таблице замен.
  3. С выхода блока подстановки шифруемые данные сдвигаются на 11 разрядов влево в регистре сдвига и поступают на сумматор СМ2.
  4. В сумматоре СМ2 содержимое регистра сдвига складывается по модулю 2 с содержимым накопителя Н2.
  5. Начальное содержимое накопителя HI поступает в накопитель Н2, а результат суммирования в сумматоре СМ2 заносится в накопитель Н1.

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

После выполнения 32-го, последнего цикла, полученный результат из сумматора СМ2 поступает в накопитель Н2, а в накопителе HI сохраняется результат предыдущего цикла. Информация, содержащаяся в накопителях HI и Н2, представляет собой первый 64-разрядный блок зашифрованных данных. Остальные блоки открытых данных шифруются в режиме простой замены аналогично.

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

Режим гаммирования

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

Гш={Г1, Г2,…, Гт}={П}т, [i=l(l)m],

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

В ключевое запоминающее устройство вводится ключевая последовательность длиной 256 бит и формируется синхропосылка S в виде 64-разрядной двоичной последовательности S = {S1, … , S64} = {Si}64, которая записывается в накопители HI и Н2 следующим образом:

  • Q S1 — в первый разряд накопителя HI;
  • О S2 — во второй разряд накопителя Н2;
  • а…………..;
  • Q S32 — в 32-й разряд накопителя HI;
  • S33 — в первый разряд накопителя Н2;
  • а…………..;
  • S64 — в 32-й разряд накопителя Н2.

Полученная синхропосылка S затем шифруется в режиме простой замены. Результат шифрования из накопителя HI переписывается в накопитель НЗ, а из накопителя Н2 — в накопитель Н4.

Содержимое накопителя Н4 суммируется по модулю 232-1 с константой С1 в сумматоре СМ4, результат суммирования записывается в накопитель Н4.

Содержимое накопителя НЗ суммируется по модулю 232 с константой С2 в сумматоре СМЗ, результат суммирования записывается в накопитель НЗ.

Далее содержимое накопителя Н4 переписывается в накопитель Н2^ а содержимое накопителя НЗ — в накопитель HI. Полученные таким образом данные в накопителях HI и Н2 шифруются в режиме простой замены, а результатом шифрования является формирование в этих же накопителях 64-разрядного блока гаммашифра П.

Полученный гамма-шифр П суммируется поразрядно по модулю 2 с первым 64-разрядным блоком открытых данных ТО 1 в сумматоре СМ5. Результат суммирования — первый 64-разрядный блок зашифрованных данных Тш1.

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

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

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

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

Шифрование открытых данных в этом режиме происходит по той же схемной реализации, что и в режиме гаммирования, и отличается лишь введением дополнительной обратной связи с выхода сумматора СМ5 на входы накопителей HI и Н2.

В ключевое запоминающее устройство вводится ключевая последовательность длиной 256 бит, после чего формируется синхропосылка S, записываемая в накопители HI и Н2, содержимое которых шифруется в режиме простой замены. Результат шифрования в накопителях HI и Н2 представляет собой первый 64-разрядный блок гаммашифра П.

Полученный гамма-шифр П суммируется поразрядно по модулю 2 с первым 64-разрядным блоком открытых данных Т0 1 в сумматоре СМ5. Результат суммирования — первый 64-разрядный блок зашифрованных данных Тш1. Первый блок зашифрованных данных Тш1 по обратной связи поступает на накопители Н1 и Н2 и является исходной информацией для формирования второго блока гамма-шифра Г2.

Содержимое накопителей HI и Н2 шифруется в режиме простой замены. Результат шифрования в накопителях HI и Н2 представляет второй 64-разрядный блок гамма-шифра Г2. Этот гамма-шифр суммируется по модулю 2 поразрядно со вторым 64разрядным блоком открытых данных Т02 в сумматоре СМ 5. В результате получается второй 64-разрядный блок зашифрованных данных Тш2 и т. д. Если в последнем m блоке открытых данных Тот число двоичных разрядов меньше 64, неиспользованная часть гамма-шифра отбрасывается.

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

Режим выработки имитовставки

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

Имитовставка представляет собой дополнительный блок данных U из L бит, который формируется либо перед шифрованием всего сообщения, либо совместно с шифрованием по блокам. Число двоичных разрядов L в имитовставке определяется криптографическими требованиями с учетом вероятности возникновения ложной имитовставки:

Ро = 2 -L.

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

Как и в рассмотренных выше режимах, в ключевое запоминающее устройство вводится ключевая последовательность длиной 256 бит. Далее первый 64-разрядный блок открытых данных ТЫ поступает в накопители HI и Н2, содержимое которых подвергается преобразованию, соответствующему первым 16-и циклам итеративного процесса шифрования в режиме простой замены. Результат шифрования в режиме простой замены с накопителей HI и Н2 суммируется по модулю 2 со вторым блоком открытых данных То2 в сумматоре СМ5.

Результат суммирования из сумматора СМ5 поступает в накопители HI и Н2 и после 16-и циклов шифрования в режиме простой замены суммируется по модулю 2 с третьим блоком открытых данных в сумматоре СМ5 и т. д.

Последний 64-разрядный блок открытых данных ТОт, дополненный при необходимости до полного 64-разрядного числа нулями, суммируется по модулю 2 с результатом работы алгоритма на (т-1) шаге в сумматоре СМ5 и снова зашифровывается по первым 16-и циклам режима простой замены.

Из полученного таким образом последнего заполнения накопителей HI и Н2 выбирается имитовставка U длиной L бит. В большинстве практических случаев в качестве имитовставки используется содержимое накопителя HI (32 младших бита последнего блока зашифрованных данных).

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

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

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

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

Такая «раздутая» таблица замен потребует для своего хранения 4*28*4 = 212 байт или 4К оперативной памяти. Указанные шаги оптимизации позволяют реализовать раунд шифрования по ГОСТу за 10 машинных команд, включая выделение и загрузку в регистры отдельных байтов из 4-байтовых слов. С учетом способности процессоров Intel Pentium параллельно выполнять команды, раунд ГОСТа может быть реализован за 6 тактов работы процессора, а весь процесс шифрования — за 32*6 = 192 такта. Добавляя еще 8 тактов на различные внутрипроцессорные задержки, получим оценку затрат процессорного времени на реализацию цикла шифрования по алгоритму ГОСТ 28147-89 в 200 тактов. На процессоре Pentium Pro 200 это позволит достичь предела быстродействия шифрования миллион блоков в секунду, или 8 Мбайт/с (на самом деле эта величина будет меньше).

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

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

Характеристики быстродействия программных реализаций, выполненных по алгоритму ГОСТ 28147-89 и новому американскому стандарту шифрования — шифру Rijndael.

Рассмотренные алгоритмы обладают сопоставимыми характеристиками быстродействия при реализации на 32-битных платформах. При использовании 8-битных платформ картина будет примерно такой же.

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

Проведенное выше сопоставление параметров алгоритмов шифрования ГОСТ2814789 и Rijndael показывает, что, несмотря на существенное различие архитектурных принципов, на которых базируются шифры, их основные рабочие параметры примерно одинаковы. Исключением является то, что, по всей вероятности, Rijnael будет иметь определенное преимущество в быстродействии перед ГОСТом при аппаратной реализации на базе одной и той же технологии. По ключевым параметрам криптостойкости для алгоритмов такого рода ни один из них не обладает значительным преимуществом; примерно одинаковы и скорости оптимальной программной реализации для процессоров Intel Pentium, что можно экстраполировать на все современные 32-разрядные процессоры. Таким образом, можно сделать вывод, что отечественный стандарт шифрования соответствует требованиям, предъявляемым к современным шифрам, и может оставаться стандартом еще достаточно долгое время. Очевидным шагом в его оптимизации может стать переход от замен в 4-битных группах к байтовым заменам, за счет чего должна возрасти устойчивость алгоритма к известным видам криптоанализа.

Оцените статью
Добавить комментарий