Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Математические основы криптологии..pdf
Скачиваний:
169
Добавлен:
05.02.2023
Размер:
6.01 Mб
Скачать

где переменные x0, x1, x2, x3, x4, x5, x6, x7 и x8 соответствуют позициям сигнала bi+12, si+8, si+13, si+20, bi+95, si+42, si+60, si+79 и si+95 соответственно. Выходная функция определяется как

zi bi j h x si 93 ,

j A

где A = {2,15,36,45,64,73,89}.

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

Перед генерацией ключевой последовательности шифр должен быть инициализирован с помощью ключа и вектора IV. Пусть биты ключа k будут обозначаться ki, 0 i 127, а биты вектора IV будут обозначаться IVi, 0 i 95. Тогда инициализация ключа и вектора IV выполняется следующим образом. 128 элементов N),ключи).ВFSR заполняются битами ключа, bi = ki, 0i 127, затем первые 96 элементов LFSR заполняются битами IV битами, si = IVi, 0 i 95. Последние 32 бита LFSR заполняются единицами, si = 1, 96 i 127. После загрузки битов ключа и IV, шифр тактируется 256 раз, без производства ключевой последовательности. Вместо выходной функции производится подача назад и сложение по модулю 2 (XOR’тся) со входом и LFSR и N),ключи).ВFSR, см. рисунок 2.29

Рис. 2.29. Инициализация ключа

Поточный шифр MICKEY-128

MICKEY-128 – поточный шифр, ориентированный на аппаратную реализацию. для генерации ключевого потока MICKEY-128 использует 128 битовый ключ [6]. Этот шифр использует нерегулярно тактируемые регистры сдвига с новыми методиками, предназначенными обеспечить баланс между необходимостью в гарантированных периоде и псевдослучайностью и необходимостью избежать определенных криптоаналитических атак.

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

MICKEY128 2.0 использует два входных параметра: 195

128-битовый секретный ключ K, биты которого обозначаются k0 k127;

вектор инициализации IV (initialisation variable), длиной от 0 до 128 битов, биты которой обозначаются iv0 ivIVLEN),ключи).ВGHT–1, где IVLEN),ключи).ВGHT – размер вектора инициализации в битах.

Генератор строится из двух регистров R и S. Каждый регистр длиной 160 разрядов. Биты в регистрах обозначаются r0 r159 и s0 s159 соответственно.

Разработчики заявляют, что R – это “линейный регистр”, а S – это “нелинейный регистр”. Инициализация генератора начинается с обнуления всех разрядов регистров R и S. Затем производится загрузка вектора инициализации IV путем тактирования всего генератора IVLEN),ключи).ВGHT раз с помощью операции clock_KG(R, S, Mixing = True, Input_bit = ivi), описанной в п.1.3.8.2. Затем производится загрузка ключа: весь генератор тактируется 128 раз, так же с помощью операции clock_KG(R, S, Mixing = True, Input_bit = ki). Заканчивается процесс инициализации 160 кратным применением операции clock_KG(R, S, Mixing = True,

Input_bit = 0) тактирования всего генератора.

Генерация ключевого потока

После выполнения операции инициализации можно приступить к генерации битов ключевой последовательности z0 zL–1:

For 0 i L–1:

zi = r0 s0,

clock_KG(R, S, Mixing = False, Input_bit = 0),

где clock_KG(R, S, Mixing, Input_bit)и – операция тактирования всего генератора, которая определяется в соответствии со следующим псевдокодом:

Control_bit_R = s54 r106

Control_bit_S = s106 r53

If Mixing = True,

oclock_R(R, Input_bit_R = Input_bit s80, Control_bit_R = Control_bit)

oclock_S(S, Input_bit_S = Input_bit, Control_bit_S = Control_bit)

If instead Mixing = False,

oclock_R(R, Input_bit_R = Input_bit, Control_bit_R = Control_bit)

oclock_S(S, Input_bit_S = Input_bit, Control_bit_S = Control_bit)

clock_R и clock_S – это операции тактирования регистров R и S соответственно. Операция тактирования регистра R clock_R(R, Input_bit_R, Control_bit_R) определяется

следующим псевдокодом:

196