Безопасность программного обеспечения компьютерных систем


Краткое описание криптографических средств контроля целостности и достоверности программ - часть 4


Симметричный шифр ГОСТ 28147-89

Пусть L и R - последовательности битов, LR означает их конкатенацию. Под обозначением будет пониматься операция сложения по модулю 2 или логическая операция XOR (исключающая ИЛИ), символом [+] - операция сложения по модулю 232 двух 32-разрядных чисел. Числа суммируются по следующему правилу:

A[+]B=AB, если AB < 232

A[+]B=AB-232, если AB232.

Символом {+} обозначается операция сложения по модуль 232-1 двух 32-разрядных чисел. Правила суммирования чисел следующие:

A{+}B=AB, если AB < 232-1

A{+}B=AB-232, если AB232-1.

Во всех режимах работы алгоритма используется ключ длиной 256 битов, который представляется в виде восьми 32-разрадных чисел X(i).Если обозначить ключ через W, то

W=X(7)X(6)X(5)X(4)X(3)X(2)X(1)X(0).

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

Описание режима простой замены. Код программы T разбивается на блоки по 64 бита в каждом, которые обозначаются T(j). Очередная последовательность битов T(j) разбивается на две последовательности B(0) (левые или старшие биты) и A(0) (правые или младшие биты), каждая из которых содержит 32 бита. Затем выполняется итеративный процесс шифрования, который описывается следующими формулами:

при i=1,2,...,24; j=i-1(mod 8) A(i)=f(A(i-1)[+]X(j)(+)B(i-1)); B(i)-A(i-1); при i=25,26,...,31; j=32-i A(i)=f(A(i-1)[+]X(j)(+)B(i-1)); B(i)-A(i-1); при i=32 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-разрядной суммой. Первая операция называется подстановкой K. Блок подстановки K состоит из восьми узлов замены K(1)...K(8) с памятью 64 бита каждый.




Начало  Назад  Вперед