Анимация
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

180 Ао/блер в задачах защиты информац


ifit

==== RGen - так* работы стохастического генератора ПСП. ===========

==== При вызове: массив Regs - текущее состояние генератора ==

==== DS: ВХ - адрес массива AddrSH, СХ = HSize, ==============

==== DS: SI - адрес массива Regs, DI = Тар2, DX = Tapl. ======

-=== При возврате: массив Regs - новое состояние генератора. =

RGen

PROC

; Сохранение содержимого используемых регистров pushf

push es ах ; Инициализация и определение значений отводов ; обратной связи

push ds

pop es

push bx cx

raov bx, si

dec dx

add bx, dx

raov ah, BYTE PTR [bx]

dec di

raov cx, di

add si, di

raov di, si

dec si

raov al, BYTE PTR [di]

; Формирование нового состояния генератора rep movsb

pop cx bx

xchg al, ah

:№xtDig:push

:atOfInput:

Этой строки не должно быть, FB АВ -> FB ВА

если

RGen

call RBox

raov BYTE PTR [di], al Восстановление регистров pop ax es popf ret ENDP

nput

push

bx dx

bl, 10

dl, dl

raov

ah, Olh

al, Ofh

ah, Olh

crap

al, Odh

OutOflnput

al, Ofh

xchg

al, dl

raul

al, dl

NextDig

raov

ah, 02h

raov

dl, Oah

raov

dl, Odh

ax dx bx

ENDP

:==== RBox - блок стохастического преобразования. ==================

=================:================================================

==== При вызове: AL - входной байт, АН - параметр преобразования,

DS - сегментный адрес массива AddrSH, ВХ - относительный адрес массива AddrSH, СХ - размерность массивов Addr и Н (HSize), == === возможные значения - 4, 8. ===================================

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


==== Input - процедура ввода числа с клавиатуры.

==== При возврате: AL - двоичное число. Input PROC

•OModHs

ize;

push

xlat

al, ah

crap

al, cl

NoModHSize

al, cl

bx, SizeBufH

xlat

ENDP



...?5.f.£fР l!?.?.:!!!.?. защиты информации

==== Addrini - процедура формирования массива Addr ==== по известному массиву Н. =====================

==== При вызове: таблица Н стохастического преобразования, ========

==== DS - сегментный адрес массива AddrSH, ВХ - относительный адрес

==== массива AddrSH, СХ - размер массивов Addr и Н (HSize). =======

==== При возврате: готовый к использованию массив AddrSH. =========

Addrini PROC

NextWrAddr:

push

ax si di

al, al

si, SizeBufH

di, WORD PTR [bx + si]

di, OFFh

BYTE PTR [bx + di], al

loop

NextWrAddr

di si ax

Addrini ENDP

Conv - процедура преобразования двоичного числа в строку цифр.

==== При вызове: АХ - двоичное число, меньшее 2560, ===============

==== DS: SI -адрес буфера для приема строки, ======================

==== СХ - размер выходного буфера. ================================

==== При возврате: готовая к выводу строка цифр исходного числа. ==

Conv

NextDiv: div

Exit:

PROC

pushf

push

bx, 10

si, cx

ah, 30h

[si], ah

ah, ah

crap

ax, bx

Exit

NextDiv

al, 30h

[si], al

conv

popf

ENDP

Begin

Результаты отладки программы:

HSize: 4

Rbox:

Tapl: 2

Tap2: 3

Period: 00014

HSize: 4

Rbox:

1 . 2

Tapl: 2

Tap2: 3

Period: 00063

HSize: 8

Rbox:

0 1 2 3 4 5 6 7

Tapl: 4

Tap2: 7

Period: 00508

2-63. Стохастический генератор байтовой ПСП



Кед,

Нед,

Reg,

••15. Стохастический 8-разрядный

генератор ПСП при N = 4, ФМ = х* + + ]




1 g4 /Ассембле p в задачах защиты и нфор;


Rbox8 - процедура 8-разрядного стохастического преобразования.

При вызове: AL - входной байт, АН - параметрпреобразования, DS:BX - адрес массива AddrSH {рис. 2•

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

HSize = 256 RBox8

RBox8

PROC push xlat add

xlat pop ret ENDP

al, ah bx, HSize

чтение из таблицы Addr AL - адрес выходного байта в массиве Н ВХ - относительный адрес массива Н чтение из таблицы Н

==== RGen4N8 - стохастический 8-разрядный генераторПСП ==== N = 4, Ф{х) = X + х + 1 {рис. 2.6.15). =====----":

==== При вызове: массив Regs - текущее состояние генератора, ES:D1 - адрес массива RegsSAddrSH (рис. 2.6.16).

-= При возврате: массив Regs - новое состояние sfP°Pfi l"

==== AL - выходной байт.

RGen4N8 PROC

pushf push mov inc push pop mov

; Входная информация для R-блока mov bx, si call RBoxS

ds bx si si, di si es ds ax

WORD PTR [di]

eld mov movsb

cx, N-1

mov BYTE PTR [di] ; Запись байта обратной связи в RegO pop si bx ds popf ret

RGen4N8 ENDP

, al

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

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

Инициализация

регистров

для команды MOVSB:

ES:D1 -> Reg3, DS:SI -> Reg2

DS:BX - адрес массива AddrSH Вычисление байта обратной связи, AL - байт обратной связи (результат стохастического преобразования)

Число повторений команды MOVSB Обновление регистров Reg2, Reg2, Regl

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

Hegs&Addr&H

Reg,

Regt

Reg,

Kego

Addr [0]

Addr[l]

Addr [255]

H[0]

H[l]

H [255]

Массив Regs

Массив Addr

Массив И

Puc. 2.6.16. Массив Regs&Addr&H

2.6.4. Использование /{-блоков

для построения СйС-генераторов

На рис. 2.6.17 показаны возможные схемы стохастических СЛС-генераторов На рис. 2.6.18 показан пример /?С7?С-генератора, построенного на основе 8-разряднол генератора ПСП, рассмотренного ранее (см. рис. 2.6.15).

- rcrc4N8 - стохастический CRC-генератор. === N = 4, Ф(х) = X* + х + 1 (рис. 2.6.18).

При вызове: массив Regs - текущее состояние генератора, ==11 " 2°™!6 массива RegsSAddrSH ===

""= При возврате: =======================================

-ГГ 53 - новое состояние генератора. ==============

; Сохранение содержимого ; используемых регистров

=tc4N8 PROC

pushf

push ds bx si

raov si, di

inc si ; DI -> RegS, SI -> B.eg2

mov BYTE PTR [si], al

ОД входного байта в генератор

mov ах, WORD PTR [di] водная информация для R-блока



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