S(x)=a(x)/f(x), где a(x) - исходные данные, f(x) - соответствующие коэффициенты многочлена.
Естественно, что желательно получить как можно более длинный период последовательности от многочлена заданной степени, а максимально возможная ее длина - 2N-1 в GF(2N). Последовательности максимальной длины формируются по правилу: Если многочлен f(x) степени n делит многочлен xK-1 лишь при K>2N-1, то период его любой ненулевой последовательности равен 2N-1. Существуют таблицы коэффициентов м-последовательностей.
Свойства м-последовательностей:
1.В каждом периоде последовательности число 1 и 0 отличается не более, чем на единицу.
2.Среди групп из последовательных 1 и 0 в каждом периоде половина имеет длительность в один символ, четвертая часть имеет длительность в два символа, восьмая часть имеет длительность в четыре символа и т.д.
3.Корреляционная функция последовательности имеет единственный значительный пик амплитуды 1 и при всех сдвигах равна 1/m (m- длина последовательности).
Корреляция между векторами вычисляется по формуле:
Где А - число позиций, в которых символы последовательностей x и y совпадают, а В - число позиций, в которых символы последовательностей x и y различны.
Генератор псевдослучайных чисел
В данном случае можно воспользоваться относительно простым методом генерации псевдослучайной последовательности: а именно - анализом тепловых шумов стабилитрона, работающего в режиме пробоя. Шумы усиливаются и подаются на триггер Шмидта, а затем передавая полученные биты в регистр сдвига. Поскольку тепловые шумы имеют достаточно случайный характер, то и последовательность будет случайной.
Формирование кода
Для формирования кода используется 5-разрядный первичный ключ, получаемый из генератора псевдослучайных чисел. Таким образом, на начальном этапе формирования ключа мы имеем количество комбинаций 25-2=30 (-2 поскольку комбинация 00000 является недопустимой). Потом первичный ключ подается на два генератора (два для увеличения количества кодов - см. ниже), вырабатывающие по этому ключу 31-разрядные м-последовательности. Эти последовательности перемножаются по модулю 2, циклически сдвигаясь, и образуя два вложенных цикла, выдают 312 вариантов ключа. Итого, общее число допустимых комбинаций составляет 30*312 .
Эти 312 вариантов хранятся в ОЗУ базового аппарата. Выбор одного ключа осуществляется путем повторного обращения к генератору псевдослучайных чисел. Итого, получаем неплохую для данных условий криптографической защиты цифру 30*313=~900000 комбинаций, не говоря о том, что надо еще догадаться, какой метод применяется для кодирования. При этом статистические свойства данной последовательности практически не отличаются от м-последовательности.
Схема формирования кода
|
|
|
|
|
|
|
|
|
|
|
|
Взяли Не взяли
Программа формирования кода
Команда
Asm
Примечание
MOV
ECX, ADDR1
Загрузка регистров 31-
MOV
EBX, ADDR2
разрядными значениями ПСП
MOV
ADDR3, 1Fh
Организация счетчиков
MOV
ADDR4, 1Fh
MOV
AL, ADDR3
Загрузка значения счетчика № 1
M1:
JZ
M3
Если это “0” - выход
PCL
ECX, 1
Сдвиг значения ПСП1
DEC
AL
Декремент счетчика № 1
MOV
ADDR3, AL
Значение счетчика - в память
M2:
MOV
AL, ADDR4
Загрузка значения счетчика № 2
JZ
M1
Если “0”- переход на внешний цикл
MOV
EDX, ECX
Умножение по модулю 2 одной ПСП на
XOR
EDX, EBX
другую
RCL
EBX
Декремент счетчика № 2
MOV
[AL], EDX
Заносим очередное значение в память
JMP
M2
Замыкание внутреннего цикла
М3
END
Также возможна аппаратная реализация схемы формирования кода, но принципиального значения это не имеет, поскольку быстродействие здесь роли не играет - код формируется при положенной трубке, а это время больше минуты.