Анимация
JavaScript
|
Главная Библионтека 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]-
•""С. 2.3.9. Массив Regs Ассемблер в задачах защиты информации На рис. 2.3.10 в шестнадцатеричном виде приведены результат отладки программноГ) модели байтового генератора в течение 8 тактов. Выходная последовательность, снимаемая с выходов элементов XOR, при выбранном начальном состоянии имеет вид 2В 62 35 12 DBCE5D36...
Рис. 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
Генератор 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). Выход Начальное состояние
Рис. 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 |