Анимация
JavaScript
|
Главная Библионтека 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-й раунд 2-й раунд /V-й раунд Выходной блок "с- 2.6.22. Принцип построения функции защифрования блочного шифра: « - структура блока дан ных; ~ процедура прямого преобразования блока данных J94 \ Ассемблер в задачах защиты инфо
Regl
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
GenRC4 ENDP === StepHperm2 - шаг перемешивания 8-разрядной таблицы замен S-блока === или 8-разрядной таблицы стохастического преобразования R-блока. ==== При вызове: таблица, содержащая все значения байта, ========== ==== АН - адрес 1-й ячейки таблицы, AL - адрес 2-й ячейки таблицы, ==== DS: ВХ - адрес таблицы. ====================================== ==== При возврате: S(AH) <-> S(AL) или Н(АН) <-> H(AL). =========== StepHPerm2
DI - адрес 2-й ячейки в таблице замен АХ - адрес 1-й ячейки Сохраним адрес 1-й ячейки в стеке Чтение в AL содержимого 1-й ячейки
;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 |