русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2013-12-24; просмотров: 2500; Нарушение авторских прав


Алгоритм шифрования в режиме простой замены показан на рисунке 6.2.1.6.

Рисунок 6.2.1.6 Схема алгоритма ГОСТ 28147-89 в режиме простой замены

Обозначения на схеме:

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

CM1 - 32-разрядный сумматор по модулю 232 ( * );

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

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

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

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

Зашифрование открытых данных в режиме простой замены. Открытые данные, подлежащие зашифрованию, разбивают на 64-разрядные блоки T0. Процедура зашифрования 64-разрядного блока в режиме простой замены включает 32 цикла (j = 1…32). В ключевое запоминающее устройство вводят 256 бит ключа К в виде восьми 32-разрядных подключей (чисел) К:

K = K7K6K5K4K3K2K1K0.

Последовательность битов блока T0 = (a1(0),a2(0), …, a31(0),a32(0),b1(0),b2(0), …, b31(0),b32(0))

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

Эти последовательности вводят в накопители N1 и N2 перед началом первого цикла зашифрования. Начальное заполнение накопителя N1:

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

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

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

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

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



Первая операция называется подстановкой (заменой) и выполняется блоком подстановки S. Блок подстановки S состоит из восьми узлов замены (S-блоков замены) S1,S2,S3, …, S7,S8 с памятью 64 бит каждый. Поступающий из CM1 на блок подстановки S 32-разрядный вектор разбивают на восемь последовательно идущих 4-разрядных векторов, каждый из которых преобразуется в 4-разрядный вектор соответствующим узлом замены. Каждый узел замены можно представить в виде таблицы-перестановки шестнадцати 4-разрядных двоичных чисел в диапазоне 0000…1111. Входной вектор указывает адрес строки в таблице, а число в этой строке является выходным вектором. Затем четырехразрядные выходные векторы последовательно объединяют в 32-разрядный вектор. Узлы замены (таблицы-перестановки) представляют собой ключевые элементы, которые являются общими для сети ЭВМ и редко меняются. Эти узлы замены должны сохраняться в секрете.

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

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

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

K0, K1, K2, K3, K4, K5, K6, K7, K0, K1, K2, K3, K4, K5, K6, K7,

K0, K1, K2, K3, K4, K5, K6, K7, K7, K6, K5, K4, K3, K2, K1, K1.

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

Уравнения зашифрования в режиме простой замены имеют вид:

при j = 1...24,

при j = 25…31,

при j = 32,

где a(j) = (a32(j),a31(j), …, a1(j)) - заполнение N1 после j-го цикла зашифрования;

b(j) = (b32(j),b31(j), …, b1(j)) - заполнение N2 после j-го цикла зашифрования, j=1…32.

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

Tш = (a1(32),a2(32), …, a32(32), b1(32),b2(32), …, b32(32)).

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



<== предыдущая лекция | следующая лекция ==>
ГОСТ 28147-89 | Расшифрование в режиме простой замены


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.021 сек.