|
|
Компьютеры - MICKEY - Терминология12 июня 2011
Оглавление: 1. MICKEY 2. Терминология 3. Загрузка ключа и инициализация
Входные параметры:
- ключ K длиной 80 бит, его биты обозначаются k0, k1 …, k79;
- инициализирующая переменная IV длиной от 0 до 80 бит, ее биты обозначаются iv0, …, ivдлина IV 1.
Ключевая последовательность обознаячается z0, z1, z2 ….
Ограничения использования
Максимальная длина ключевой последовательности, полученной с помощью одной пары составляет 2 бит. Однако допускается получение 2 таких последовательностей при использовании одного K при условии, что IV выбирается разными для каждой новой последовательности.
Устройство генератора ключевой полследовательности
Регистры
Генератор состоит из двух регистров R и S, каждый из которых имеет длину 100 бит.
Биты этих регистров обозначаются r0, r1, …, r99 и s0, s1, …, s99 соответственно.
Сдвиг регистра R
Набор входов обратной связи регистра R обозначается RTAPS.
RTAPS = { 0, 1, 3, 4, 5, 6, 9, 12, 13, 16, 19, 20, 21, 22, 25, 28, 37, 38, 41, 42, 45, 46, 50, 52, 54, 56,
-
-
- 58, 60, 61, 63, 64, 65, 66, 67, 71, 72, 79, 80, 81, 82, 87, 88, 89, 90, 91, 92, 94, 95, 96, 97 }
Операция сдвига CLOCK_R определяется следующей последовательностью действий:
- пусть r0, r1, …, r99 состояние регистра до сдвига, а r'0, r'1, …, r'99 после сдвига;
- FEEDBACK_BIT = r99 ⊕ INPUT_BIT_R;
- для 1 ≤ i ≤ 99, r'i = ri-1; r'0 = 0;
- для 0 ≤ i ≤ 99, если i ∈ RTAPS, r'i = ri ⊕ FEEDBACK_BIT;
- если CONTROL_BIT_R = 1, то
- для 0 ≤ i ≤ 99, r'i = r'i ⊕ ri.
Сдвиг регистра S
Определим четыре последовательности COMP01 … COMP098, COMP11 … COMP198, FB00 … FB099, FB10 … FB99 в соответствии с таблицей:
i |
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 |
COMP0i |
|
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
COMP1i |
|
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
FB0i |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
FB1i |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
|
i |
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 |
COMP0i |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
COMP1i |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
FB0i |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
FB1i |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
|
i |
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 |
COMP0i |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
COMP1i |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
FB0i |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
FB1i |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
|
i |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
COMP0i |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
|
COMP1i |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
|
FB0i |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
FB1i |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
Функция сдвига рагистра S CLOCK_S определяется как поледовательность действий:
- пусть s0, s1, …, s99 состояние регистра до сдвига, а s'0, s'1, …, s'99 после сдвига. ŝ0, ŝ1, …, ŝ99 будем обозначать промежуточное состояние регистра;
- FEEDBACK_BIT = s99 ⊕ INPUT_BIT_S;
- для 1 ≤ i ≤ 98, ŝi = si-1 ⊕•); ŝ0 = 0; ŝ99 = s98;
- если CONTROL_BIT_S = 0, то
- для 0 ≤ i ≤ 99, s'i = ŝi ⊕;
- если CONTROL_BIT_S = 1, то
- для 0 ≤ i ≤ 99, s'i = ŝi ⊕.
Управление тактированием всего генератора
Определим функцию CLOCK_KG следующим образом:
- СONTROL_BIT_R = s34 ⊕ r67;
- CONTROL_BIT_S = s67 ⊕ r33;
- если MIXING = TRUE, тогда INPUT_BIT_R = INPUT_BIT ⊕ s50, а если MIXING = FALSE , тогда INPUT_BIT_R = INPUT_BIT;
- INPUT_BIT_S = INPUT_BIT;
- CLOCK_R;
- CLOCK_S.
Просмотров: 2584
|