Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [ 30 ] 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88

192 Ассемблер в aga.f.!?.."!.".".ФР.Р.ЦиД 2- Программирование алгоритмов защиты информации

xlat

чтение из таблицы Н

InvRBox ENDP \

Одной из типовых структур, использующихся для построения функции зашифрод ния блочного криптоалгоритма, является квадрат (рис. 2.6.22). Рассмотрим вариац схемы блочного криптоалгоритма с подобной структурой на основе й-блоков. Входнол блок разрядностью 128 бит и все промежуточные результаты его преобразования пред. ставляются двумерным массивом байтов размерностью 4x4, вид этого массива показан на рис. 2.6.22, а, где ац - элемент массива (байт), находящийся на пересечении г-й строю, и>го столбца, Z = 0,3,7 = 0,3. Функция защифрования (см. рис. 2.6.22, б) суть много, кратное повторение одного и того же раунда, состоящего из трех операций:

циклический сдвиг строк;

перемещивание столбцов;

стохастическое преобразование байтов блока с использованием элементов (байтов) раундового ключа.

На рис. 2.6.23 показаны схемы операции стохастического преобразования бантов с использованием блоков Ri, параметрами преобразования являются соответствующие элементы к„ раундового ключа, /и = 0,7, (см. рис. 2.6.23, а); циклического сдвига байтов строки на i позиций вправо, где / - номер строки, т. е. 0-я строка остается без изменения, 1-я сдвигается вправо на 1 позицию, 2-я - на 2 позиции, 3-я - на 3 позиции вправо (рис. 2.6.23, б); и перемешивания столбцов с использованием блоков R2 - Rs (рис. 2.6.23, в). Байты строки поступают на вход схемы последовательно, при этом начальное состояние

всех регистров - нулевое.

Схема, показанная на рис. 2.6.23, в, эффективно программируется на 32-разряднш процессорах. Она может использоваться самостоятельно для хеширования информации.


1 л*»

Функция зашифрования Е.

Входной блок 1

Стохастическое преобразование байтов Сдвиг строк

Перемешивание аолбцов

Стохааическое преобразование байтов Сдвиг строк

Перемешивание столбцов

Стохастическое преобразование байтов

Сдвиг строк

Перемешивание столбцов

Стохастическое преобразование байтов

1-й раунд

2-й раунд

/V-й раунд

Выходной блок

"с- 2.6.22. Принцип построения функции защифрования блочного шифра: « - структура блока дан ных; ~ процедура прямого преобразования блока данных



J94 \ Ассемблер в задачах защиты инфо


RegO

Regl

"4

"5

ЛедЗ

Puc. 2.6.23. Раундовые операции:

а - стохастическое преобразование байтов; б - циклический сдвиг строк; в - перемешивание столбцов

Глава

ррограммирование алгоритмов защиты информации

62 = (62+ 5(61)) mod2\

Ячейки таблицы замен S-блока с адресами Ql и Q2 обмениваются своим содержимым: 5 5(61)5(62).

вычисление суммы содержимого ячеек таблищ.1 замен 5-блока с адресами Ql и 62: 7=(S(61) + 5(62)),no2*.

Считывание содержимого ячейки таблицы замен 5-блока с адресом Т:

7 = 5(7).

5-6лок

mod 256

2.7. Поточный шифр jf?C4 2.7.1. Описание криптоалгоритма

RC4 - поточный шифр с переменным размером ключа, разработанный Роном Риве-стом. Алгоритм работает в режиме OFB, т. е. поток ключевой информации не завися от открытого текста. Используются два 8-разрядных счетчика Ql hQ2 п в-разрядны* блок замены (5-блок) (рис. 2.7.1), таблица замен имеет размерность 8 х256 и являете* перестановкой (зависящей от ключа) двоичных чисел от О до 255.

Рассмотрим процедуру генерации очередного байта гаммы. Пусть 5(0 и у - содер**! мое ячейки с адресом / таблиць! замен 5-блока и очередной байт гаммы.

Алгоритм RC4

1) Такт работы первого счетчика:

2) Такт работы второго счетчика:

61 =(61 + l)mod2.

mod 256

S(Q2)

"""С- 2.7.1. Схема генератора ПСП RCA

Таблица замен 5-блока медленно изменяется при использовании, при этом счетчик обеспечивает изменение каждого элемента таблицы, а Qfl гарантирует, что элементы олицы изменяются случайным образом.

GenRC4 - такт работы 8-разрядного генератора ПСП RC4. ==

~°~= При вызове: DS: SI - адрес буфера RC4Info (рис. 2.7.2).

~~-= При возврате: AL - выходной байт. =====================-

PROC



pushf

Сохранение содержимого

push

используемых регистров

Движение по буферу RC4lnfo в сторону старших адресов

BYTE PTR [si]

Такт работы 1-го счетчика Q1

lodsb

AL = Q1

ah, al

АН - копия Q1

bx, si

DS: ВХ - адрес таблицы замен S-блока

xlat

AL = S(Q1)

BYTE PTR [si]

Такт работы 2-го счетчика Q2

lodsb

АН = Q1, AL = Q2

push

call

StepHPerm2

S(Ql)<-> S(Q2)

xlat

AL = S(Q2)

xchg

al, ah

АН = S(Q2), AL = Ql

xlat

AL = S(Q1)

al, ah

AL - адрес выходного байта Т = S(Q1) + S(Q2)

xlat .

Чтение выходного байта АЬ = Q(T)

Восстановление

popf

регистров

GenRC4 ENDP

=== StepHperm2 - шаг перемешивания 8-разрядной таблицы замен S-блока === или 8-разрядной таблицы стохастического преобразования R-блока.

==== При вызове: таблица, содержащая все значения байта, ==========

==== АН - адрес 1-й ячейки таблицы, AL - адрес 2-й ячейки таблицы,

==== DS: ВХ - адрес таблицы. ======================================

==== При возврате: S(AH) <-> S(AL) или Н(АН) <-> H(AL). ===========

StepHPerm2

PROC

push

push

xchg

push

xlat

DI - адрес 2-й ячейки в таблице замен

АХ - адрес 1-й ячейки

Сохраним адрес 1-й ячейки в стеке

Чтение в AL содержимого 1-й ячейки

; AL - содержимое 2-й ячейки

di ; DI - адрес 1-й ячейки

; в таблице замен

BYTE PTR [bx + di], al

; S(Q1) = S(Q2)

;tepHPerm2 ENDP

Ha рис. 2.7.3 показан пример работы 4-разрядного генератора ПСП RCA. При заданном заполнении 4-разрядного массива RC4Info на выходе генератора формируется 4-разрядная последовательность

4 52 0 13 5 84...

RCfo

3S;SI-

S(0)

5(1)

5(255)

Puc. 2.7.2. Массив/?С4/л/Ь

;== Содержимое 2-й ячейки <-> содержимое AL == хог BYTE PTR [bx + di), al xor al, BYTE PTR [bx + di] xor BYTE PTR [bx + di], al



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [ 30 ] 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88