В нашей стране установлен единый алгоритм криптографического представления данных для систем обработки информации в сетях ЭВМ, отдельных вычислительных комплексов и ЭВМ, который определяется ГОСТ 28147-89.
Этот алгоритм криптографического преобразования данных представляет собой 64-битовый блочный алгоритм с 256-битовым ключом, предназначен для аппаратной и программной реализации, удовлетворяет криптографическим требованиям и не накладывает ограничений на степень секретности защищаемой информации.
При описании алгоритма используются следующие обозначения:
Числа суммируются по следующему правилу:
Алгоритм предусматривает четыре режима работы:
В любом случае для шифрования данных используется 256-битовый ключ K, который представляется в виде восьми 32-битовых подключей Ki:
Расшифрование выполняется по тому же ключу, что и шифрование, но этот
процесс является инверсией процесса шифрования данных.
Режим простой замены
Первый и самый простой режим - замена. Данные, подлежащие шифрованию, разбивают на 64-битовые блоки. Процедура шифрования блока открытых данных T0 включает 32 цикла (j=1...32).
Блок T0 разделяется на две последовательности по 32 бита: В(0)A(0), где В(0) - левые или старшие биты, A(0) - правые или младшие биты.
Эти последовательности вводят в накопители N1 и N2 перед началом первого цикла шифрования.
Первый цикл (j=1) процедуры шифрования 64-битового блока данных описывается следующими формулами:
{ |
A(1) = f ( A(0) [+] K0 ) (+) B(0), B(1)=A(0). |
Здесь A(1) - заполнение накопителя N1 после 1-го цикла шифрования
{ |
A(i) = f ( A(i-1) [+] X(j) ) (+) B(i-1), B(i) = A(i-1), если i=25, 26,..., 31; j=32-i |
{ |
A(32) = A(31), B(32) = f ( A(31) [+] X(0) ) (+) B(31), |
Здесь i обозначает номер итерации (i = 1, 2,..., 32).
Функция f называется функцией шифрования. Ее аргументом является сумма по модулю 232 числа A(i), полученного на предыдущем шаге итерации, и числа X(j) ключа (размерность каждого из этих чисел равна 32 знакам).
Функция шифрования включает две операции над полученной 32-разрядной суммой. Первая операция называется подстановкой К. Блок подстановки К состоит из 8 узлов замены К(1) ... К(8) с памятью 64 бит каждый. Поступающий на блок подстановки 32-разрядный вектор разбивается на 8 последовательно идущих 4-х разрядных векторов, каждый из которых преобразуется в 4-х разрядный вектор соответствующим узлом замены, представляющим собой таблицу из 16 целых чисел в диапазоне 0...15.
Входной вектор определяет адрес строки в таблице, число из которой является выходным вектором. Затем 4-х разрядные выходные векторы последовательно объединяются в 32-разрядный вектор. Таблицы блока подстановки К содержит ключевые элементы, общие для сети ЭВМ и редко изменяемые.
Вторая операция - циклический сдвиг влево 32-разрядного вектора, полученного в результате подстановки К. 64-разрядный блок зашифрованных данных Тш представляется в виде Тш=A(32)B(32).
Остальные блоки открытых данных в режиме простой замены зашифровываются аналогично.
Следует иметь в виду, что режим простой замены допустимо использовать для
шифрования данных только в ограниченных случаях. К этим случаям относится
выработка ключа и зашифрование его с обеспечением имитозащиты (защиты от
навязывания ложных данных) для передачи по каналам связи или хранения в памяти
ЭВМ.
Режим гаммирования
Открытые данные, разбитые на 64-разрядные блоки Т(i) (i=1, 2,..., m, где m определяется обьемом шифруемых данных), зашифровываются в режиме гаммирования путем поразрядного сложения по модулю 2 с гаммой шифра Гш, которая вырабатывается блоками по 64 бит, то есть Гш = (Г(1),Г(2),...,Г(i),...,Г(m)).
Число двоичных разрядов в блоке Т(m) может быть меньше 64, при этом неиспользованная для шифрования часть гаммы шифра из блока Г(m) отбрасывается.
Уравнение зашифрования данных в режиме гаммирования может быть представлено в следующем виде:
Расшифрование данных возможно только при наличии синхропосылки, которая не
является секретным элементом шифра и может храниться в памяти ЭВМ или
передаваться по каналам связи вместе с зашированными данными.
Режим гаммирования с обратной связью
Режим гаммирования с обратной связью очень похож на режим гаммирования. Как в и режиме гаммирования открытые данные, разбитые на 64-разрядные блоки Т(i) (i=1, 2,..., m , где m определяется обьемом шифруемых данных), зашифровываются путем поразрядного сложения по модулю 2 с гаммой шифра Гш, которая вырабатывается блоками по 64 бит:
Число двоичных разрядов в блоке Т(m) может быть меньше 64, при этом неиспользованная для шифрования часть гаммы шифра из блока Г(m) отбрасывается.
Уравнение зашифрования данных в режиме гаммирования с обратной связью может быть представлено в следующем виде :
Ш(1) = A(S) (+) T(1) = Г(1) (+) Т(1), Ш(i) = A(Ш(i-1)) (+) T(i) = Г(i) (+) Т(i), для i = 2,3,...,m. |
Процесс выработки имитовстаки единообразен для любого из режимов шифрования данных.
Имитовставка - это блок из р бит (имитовставка Ир), который вырабатывается либо перед шифрованием всего сообщения, либо параллельно с шифрованием по блокам. Первые блоки открытых данных, которые участвуют в выработке имитовставки, могут содержать служебную информацию (например, адресную часть, время, синхропосылку) и не зашифровываться. Значение параметра р (число двоичных разрядов в имитовставке) определяется криптографическими требованиями с учетом того, что вероятность навязывания ложных помех равна 1/2^р.
Для получения имитовставки открытые данные представляются в виде 64-разрядных блоков Т(i) (i = 1, 2,..., m , где m определяется объемом шифруемых данных). Первый блок открытых данных Т(1) подвергается преобразованию, соответствующему первым 16 циклам алгоритма зашифрования в режиме простой замены. Причем в качестве ключа для выработки имитовставки используется ключ, по которому шифруются данные.
Полученное после 16 циклов работы 64-разрядное число суммируется по модулю 2 со вторым блоком открытых данных Т(2). Результат суммирования снова подвергается преобразованию, соответствующему первым 16 циклам алгоритма зашифрования в режиме простой замены. Полученное 64-разрядное число суммируется по модулю 2 с третьим блоком открытых данных Т(3) и т.д. Последний блок Т(m) при необходимости дополненный до полного 64-разрядного блока нулями, суммируется по модулю 2 с результатом работы на шаге m-1, после чего зашифровывается в режиме простой замены по первым 16 циклам работы алгоритма. Из полученного 64-разрядного числа выбирается отрезок Ир длиной р бит.
Имитовставка Ир передается по каналу связи или в память ЭВМ после зашифрованных данных. Поступившие зашифрованные данные расшифровываются, и из полученных блоков открытых данных T(i) вырабатывается имитовставка Ир', которая затем сравнивается с имитовставкой Ир, полученной из канала связи или из памяти ЭВМ. В случае несовпадения имитовставок все расшифрованные данные считают ложными.
© Колесников Дмитрий Геннадьевич
Учебник по СайтоСтроению
-
|