Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




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

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

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

– 32-разрядные накопители;

– 32-разрядный сумматор по модулю 232 ([+]);

– 32-разрядный сумматор по модулю 2 (Å);

R – 32-разрядный регистр циклического сдвига;

КЗУ – ключевое запоминающее устройство на 256 бит, состоящее из восьми 32-разрядных накопителей ;

S – блок подстановки, состоящий из восьми узлов замены (S -блоков замены) .

 

Рис. 3.2. Схема преобразования информации в алгоритме шифрования блока по ГОСТ 28147–89.

 

Открытые данные, подлежащие шифрованию, разбивают на 64-разрядные блоки . Процедура шифрования 64-разрядного блока включает 32 раунда (цикла) (j = 1…32).

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

.

Последовательность битов блока

разбивают на две последовательности по 32 бита: b (0) а (0), где b (0) – левые или старшие биты, а (0) – правые или младшие биты.

Эти последовательности вводят в накопители и ; перед началом первого раунда шифрования.

В результате начальное заполнение накопителя :

Номер разряда        
a (0) = ( , , …, , )

Начальное заполнение накопителя :

Номер разряда        
b (0) = ( , , …, , )

Первый раунд (j = 1) процедуры шифрования 64-разрядного блока открытых данных можно описать уравнениями:

,

.

Здесь а (1) – заполнение , b (1) – заполнение после 1-го раунда шифрования; f – функция шифрования.

Аргументом функции f является сумма по модулю числа а (0) (начального заполнения накопителя ) и числа – подключа, считываемого из накопителя КЗУ. Каждое из этих чисел равно 32 битам.

Функция f включает две операции над полученной 32-разрядной суммой .

Первая операция является подстановкой (заменой) и выполняется блоком подстановки S. Блок подстановки S состоит из восьми узлов замены (S -блоков замены) с памятью 64 бит каждый. Поступающий из на блок подстановки S 32-разрядный вектор разбивают на восемь последовательно идущих 4-разрядных векторов, каждый из которых преобразуется в четырехразрядный вектор соответствующим узлом замены. Каждый узел замены можно представить в виде таблицы-подстановки шестнадцати четырехразрядных двоичных чисел в диапазоне 0000…1111. Входной вектор указывает адрес строки в таблице, а число в этой строке является выходным вектором. Затем четырехразрядные выходные векторы последовательно объединяют в 32-разрядный вектор. Узлы замены (таблицы-подстановки) представляют собой ключевые элементы, которые являются общими для сети ЭВМ и редко изменяются. Эти узлы замены должны сохраняться в секрете. Считается, что стойкость алгоритма ГОСТ 28147-89 во многом определяется структурой узлов замены.

Долгое время структура S-блоков в открытой печати не публиковалась. В настоящее время известны S-блоки, которые используются в приложениях Центрального Банка Российской Федерации и считаются достаточно сильными. Их устройство дано в табл. 3.1. Каждый S-блок может быть представлен в виде строки чисел от 0 до 15, расположенных в некотором порядке. Тогда порядковый номер числа будет являться входным значением S-блока, а само число – выходным значением S-блока.


 

Таблица 3.1

Рекомендуемые узлы замены для алгоритма ГОСТ 28147-89

№ S-блока Значение входа
                               
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 

 

Вторая операция – циклический сдвиг влево (на 11 разрядов) 32-разрядного вектора, полученного с выхода блока подстановки S. Циклический сдвиг выполняется регистром сдвига R.

Далее результат работы функции шифрования f суммируют поразрядно по модулю 2 в сумматоре с 32-разрядным начальным заполнением b (0) накопителя . Затем полученный на выходе результат (значение а (1)) записывают в накопитель , а старое значение (значение а (0)) переписывают в накопитель (значение b (1) = а (0)). На этом первый раунд завершается.

Последующие раунды осуществляются аналогично, при этом во втором раунде из КЗУ считывают заполнение – подключ , в третьем – подключ и т.д., в восьмом раунде – подключ . В раундах с 9-го по 16-й, а также в с 17-го по 24-й подключи из КЗУ считываются в том же порядке: . В последних восьми раундах с 25-го по 32-й порядок считывания подключей из КЗУ обратный: . Таким образом, при шифровании в 32 циклах осуществляется следующий порядок выборки из КЗУ подключей:

 

 

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

Таким образом уравнения шифрования блока имеют вид:

при j = 1…24,

при j = 25…31,

при j = 32,

где – заполнение после j -го раунда шифрования, – заполнение после j -го раунда, j = 1…32.

Блок зашифрованных данных (64 разряда) выводится из накопителей , в следующем порядке: из разрядов 1…32 накопителя , затем из разрядов 1…32 накопителя , т.е. начиная с младших разрядов:

.

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

В КЗУ вводят 256 бит ключа, на котором осуществлялось шифрование. Зашифрованные данные, подлежащие расшифрованию, разбиты на блоки по 64 бита в каждом. Ввод любого блока в накопители и производят так, чтобы начальное значение накопителя , имело вид:

Номер разряда        
a (32) = ( , , …, , )

Начальное заполнение накопителя :

Номер разряда        
b (32) = ( , , …, , )

Расшифрование осуществляется по тому же алгоритму, что и шифрование, с тем изменением, что заполнения накопителей считываются из КЗУ в раундах расшифрования в следующем порядке:

Уравнения расшифрования имеют вид:

при j=1…8,

при j=9…31,

при j=32.

Полученные после 32 циклов работы заполнения накопителей и образуют блок открытых данных

,

соответствующий блоку зашифрованных данных .





Поделиться с друзьями:


Дата добавления: 2016-10-06; Мы поможем в написании ваших работ!; просмотров: 831 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Что разум человека может постигнуть и во что он может поверить, того он способен достичь © Наполеон Хилл
==> читать все изречения...

2526 - | 2336 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.