Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
vse_polnostyu.doc
Скачиваний:
31
Добавлен:
22.09.2019
Размер:
705.02 Кб
Скачать

9.Отечественный стандарт шифрования гост 28147-89

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

При описании алгоритма используются следующие обозначения:

  • L и R - последовательности битов;

  • LR - конкатенация последовательностей L и R, в которой биты последовательности R следуют за битами последовательности L;

  • (+) - поразрядное сложение по модулю 2 (операция «исключающее ИЛИ»);

  • [+] - сложение 32-разрядных чисел по модулю 232;

  • {+} - сложение 32-разрядных чисел по модулю 232-1.

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

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

  • A [+] B = A + B - 232, если A + B >= 232.

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

  • A {+} B = A + B - (232 - 1), если A + B >= 232 - 1.

Алгоритм предусматривает четыре режима работы:

  • простая замена;

  • гаммирование;

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

  • выработка имитовставки.

В любом случае для шифрования данных используется 256-битовый ключ K, который представляется в виде восьми 32-битовых подключей Ki:

K = K7K6K5K4K3K2K1K0.

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

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

Первый и самый простой режим – режим замены. Данные, подлежащие шифрованию, разбивают на 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). Остальные блоки открытых данных в режиме простой замены зашифровываются аналогично.

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

К этим случаям относится выработка ключа и зашифрование его с обеспечением имитозащиты (защиты от навязывания ложных данных) для передачи по каналам связи или хранения в памяти ЭВМ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]