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

132 Ассемблер в задачах защиты uнфopмaцJJ

<?13

Рис. 2.3.7. Схема байтового генератора ПСП, соответствующего Ф(х) = х + х + 1. qi состояние /-го разряда LFSR, / = 0,64

Рис. 2.3.8. ifS/?1, соответствующий многочлену Ф(х) = х + х + 1

Примеры

Bytelfsrl - байтовый генератор ПСП, Ф(х) = х" + х + 1.

==== При шзове; ============

массив регистров Regs - текущее состояние генератора, == ==== DS - сегментный адрес массива Regs, SI - относительный

адрес массива Regs; при возврате: массив регистров Regs -

==== новое состояние генератора, AL - выходной байт.

Bytelfsrl PROC

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

push cx di es ; инициализация

push ds pop es

Глава 2. Профаммирошн алгоритмов защиты информации 133

mov add mov dec std

cx, 8

si, cx

di, si si

; вычисление байта обратной связи mov ah, BYTE PTR [di] rcl ah, 1 mov al, BYTE PTR [si] rcl . /al, 1

xor al, BYTE PTR [di - 5] ; формирование "нового" состояния генератора rep movsb

mov BYTE PTR [di], al ; восстановление содержимого регистров

pop es di cx

popf

Bytelfsrl ENDP

Ha рис. 2.1.9 показан вид массива Regs после выполнения, команды DEC SI. Regs

DS:[DI-5]-

OS:[SI]-ES:[Dr]-

Я»

я»

<7бЗ

•""С. 2.3.9. Массив Regs



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

На рис. 2.3.10 в шестнадцатеричном виде приведены результат отладки программноГ) модели байтового генератора в течение 8 тактов. Выходная последовательность, снимаемая с выходов элементов XOR, при выбранном начальном состоянии имеет вид

2В 62 35 12 DBCE5D36...

Начальное

состояние

80 1

Такты

Рис. 2.3.10. Результаты отладки программной модели байтового генератора ПСП, соответствующего Ф(х) = jt* + + 1

Ниже приведена программная модель байтового генератора ПСП, в которой очередной байт выходной последовательности считывается в каждом восьмом такте работы LFSR1, соответствующего многочлену степени Л, 16 < iV < 33.

==== Bytelfsr2 - байтовый генератор ПСП, соответствующий ==== образующему многочлену Ф(х)степени N (16 < N < 33).

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

==== генератора, DS - сегментный адрес массива Regs, ==============

==== SI - относительный адрес массива Regs; при возврате: массив ==

==== регистров Regs - новое состояние генератора, =================

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

==== FBHigh - старшее слово вектора обратных связей, FBLow - ======

==== младшее слово вектора обратных связей; например ==============

---- при Ф(х) = t + х" + 1 (рис. 2.3.11), ------------------------

==== FBHigh = OOOlh, FBLow = 2000h.

Bytelfsr2

PROC

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

push bx cx инициализация eld

mov cx, 8 чтение текущего состояние генератора push si lodsw

xchg ax, bx

Г.?.iГ.P?»P?!:!.T.?"il!fЛ°Pii°в защить! информации

NextClock:

ZeroFB:

lodsw

8 тактов работы генератора

shr bx, 1

rcr ax, 1

inc ZeroFB

xor bx, FBHigh

xor ax, FBLow

loop NelxtCloclc

; запись нового состояния генератора

pop si

mov WORD PTR [si]

inc si

inc si

raov WORD PTR [si] ; восстановление регистров

pop cx bx popf ret

Bytelfsr2 ENDP

115 ... 0 I BX

► Выход

Такты

2.3.11

-1»

-a..

1 0

0 1

0 0

1 0

0 1

0 0

0 0

0 0

0 0

1 0

0 1

1 0

0 1

Генератор 8-разрядной ПСП u фрагмент последовательности

его переключений



Qj{t + \) = Qj Xt), j = \N-\,

где Q,{() - состояние /-го регистра в момент времени t, а а, - коэффициенты многочлена Ф{х) степени Л, примитивного над GF(2). Начальное заполнение выбирается таким образом, чтобы хотя бы в одном из регистров младший бит содержал "1". В этом случае младшие биты регистров образуют генератор двоичной М-последовательности. Учитывая, что при большом числе ненулевых коэффициентов Ф{х) быстродействие схемы снижается, возможна модификация схемы генератора с распределением двухвходовьгх блоков сложения по модулю 2 между регистрами.

На рис. 2.3.12 показан пример такого генератора для случая, когда ф[х) = х +х + \. М = 8. Тогда генератор формирует рекуррентную последовательность в соответствии с формулой

Q, = iQ,-9 + Q.-4)mod2\ При начальном состоянии 00 01 02 03 04 05 06 07 08 устройство на выходе сумматора формирует последовательность

ОВ 09 07 05 OF ОС 09 06 OF 17 ... (Hex).

Выход

Начальное состояние

Такты

«0

"l

«!

Рис. 2.3.12. Схема аддитивного генератора, соответствующего Ф(х) = х -i- х" -f- 1, М = 8, U фрагмент последовательности его переключений

Можно предложить два способа профаммной реализации аддитивного генератора Первый заключается в реализации схемы, показанной на рис. 2.3.12, когда обратные связи зафиксированы и происходит сдвиг содержимого регистров.

---- AddGenl - аддитивный байтовый генератор (вариант 1),

==== соответствующий многочлену Ф(х) = х" + х + 1. ======:

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

=== ВХ - относительный адрес массива Regs; Tapl, Тар2 - =====

=== отводы обратной связи, например при Ф(х) = + .х + 1, == === Tapl =8, Тар2 = 3. При возврате: массив регистров Regs -=== новое состояние генератора, AL - выходной байт. =========

MdGenl PROC Сохранение регистров pushf

push es si di cx Инициализация

push ds pop es std

2.3.5. Аддитивные генераторы ПСП

Очень эффективна с точки зрения производительности схема, называемая addunuiq. ны.м генератором. Самостоятельного значения эти генераторы в силу своей кригггогра. фической слабости не имеют, но могут использоваться в качестве строительных блоков при создании стойких генераторов ПСП] Генератор состоит из регистров разрядностью М каждый и сумматора по модулю 2. Начальным заполнением (ключом) генератора является массив

ео(0) 6,(0)... QrO) М-битовых слов, уравнения работы генератора имеют вид

a(r + l) = ta,e, ,(0"orf2,



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