- MICKEY
-
В криптографии, MICKEY (англ. Mutual Irregular Clocking KEYstream generator) — алгоритм потокового шифрования. Существует два варианта этого алгоритма — с длиной ключа 80 бит (MICKEY) и 128 бит (MICKEY-128). Он был разработан Стивом Бэббиджем и Мэтью Доддом в 2005 году с целью использования в системах с ограниченными ресурсами. Этот алгоритм имеет простую аппаратную реализацию при высокой степени защищенности. В нём используется нерегулярное тактирование сдвиговых регистров, а также новые методы, обеспечивающие достаточно большой период и псевдослучайность ключевой последователь и учтойчивость к атакам.[1] Алгоритм MICKEY участвовал в конкурсном проекте eSTREAM, организованным сообществом eCRYPT. Текущая версия алгоритма — 2.0. Она вошла в портфолио eCRYPT, как потоковый шифр для аппаратной реализации.[2]
Содержание
Терминология
Входные параметры:
- ключ K длиной 80 бит, его биты обозначаются k0, k1 …, k79;
- инициализирующая переменная IV длиной от 0 до 80 бит, ее биты обозначаются iv0, …, ivдлина IV — 1.
Ключевая последовательность обозначается z0, z1, z2 ….
Ограничения использования
Максимальная длина ключевой последовательности, полученной с помощью одной пары (K, IV) составляет 240 бит. Однако допускается получение 240 таких последовательностей при использовании одного 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 (R, INPUT_BIT_R, CONTROL_BIT_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 = r'i ⊕ 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 ⊕ ((si ⊕ COMP0i)•(si+1 ⊕ COMP1i)); ŝ0 = 0; ŝ99 = s98;
- если CONTROL_BIT_S = 0, то
- для 0 ≤ i ≤ 99, s'i = ŝi ⊕ (FB0i • FEEDBACK_BIT);
- если CONTROL_BIT_S = 1, то
- для 0 ≤ i ≤ 99, s'i = ŝi ⊕ (FB1i • FEEDBACK_BIT).
Управление тактированием всего генератора
Определим функцию CLOCK_KG (R, S, MIXING, INPUT_BIT) следующим образом:
- С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 (R, INPUT_BIT_R , CONTROL_BIT_R);
- CLOCK_S (S, INPUT_BIT_S , CONTROL_BIT_S).
Загрузка ключа и инициализация
Регистры инициализируются с использованием начальных параметров K и IV следующим образом:
- в регистры R и S записываются нули;
- загружается IV — для 0 ≤ i ≤ длина IV — 1,
- CLOCK_KG (R, S, MIXING = TRUE, INPUT_BIT = ivi);
- загружается K — для 0 ≤ i ≤ 79,
- CLOCK_KG (R, S, MIXING = TRUE, INPUT_BIT = ki);
- для 0 ≤ i ≤ 99,
- CLOCK_KG (R, S, MIXING =TRUE, INPUT_BIT = 0).
Генерация ключевой последовательности
После загрузки и инициализации можно начинать генерировать ключевую последовательность z0, z1, …, zL-1:
- для 0 ≤ i ≤ L − 1,
- zi = r0 ⊕ s0;
- CLOCK_KG (R, S, MIXING = FALSE, INPUT_BIT = 0).
Особенности
Нерегулярное тактирование регистра R
- Когда флаг CONTROL_BIT_R = 0, R представляет из себя обычный регистр сдвига с линейной обратной связью Галуа-типа, с примитивным характеристическим многочленом CR = x100 + Σxi, где i ∈ RTAPS и входным битом INPUT_BIT_R, примешиваемым к обратной связи операцией XOR. Если представить элементы поля GF(2100) многочленами Σrixi, где 0 ≤ i ≤ 99 по модулю CR(x), то сдвиг регистра — это умножение на x в этом поле.
- Когда флаг CONTROL_BIT_R = 1, то помимо сдвига каждого бита происходит его сложение по модулю два с предыдущем значением бита, что соответствует умножению на x + 1 в том же поле. Характеристический многочлен CR(x) выбран таким образом, что он является делителем многочлена xJ + x + 1, где J = 250 — 157. Следовательно такт регистра R при CONTROL_BIT_R = 1 соответствует его сдвигу J раз.
Причины использования нерегулярного тактирования
Потоковые шифры, использующие нерегулярное тактирование, часто подвержены статистическим атакам. В них используется предположение о том, как много раз регистр был сдвинут. За возможность такой атаки отвечают определенные характеристики шифра:
- сдвиг регистра сначала m раз, а потом n раз дает тот же результат, что и сдвиг регистра сначала n раз, а потом m раз, то есть разные варианты тактирования коммутируют. Это дает преимущество криптоаналитику, так как нет необходимости определять порядок таких операций;
- также, если вариантов тактирования регистра много, то, например, пять сдвигов регистра дает одиночная и четырехкратная операция тактирования или двукратная и трехкратная, что еще больше уменьшает количество комбинаций для перебора, упрощая статистическую атаку;
- n-кратный сдвиг может произойти после любого сдвига.
При разработке в основу шифра MICKEY легли следующие идеи:
- использовать нерегулярный сдвиг для защиты от многих типов атак;
- обеспечить большой период и локальную случайность;
- как можно больше уменьшить возможность статистических атак, которым подвержены шифры этого типа.
В отношении указанных свойств 1-3, ухудшающих криптостойкость, MICKEY ведет себя следующим образом:
- верно для регистра R, так как clockJ • clock1 = clock1 • clockJ, но не верно для регистра S, операции тактирования которого не коммутируют.
- не верно для обоих регистров. Для R для любых t ≤ 240 и u существует не более одной пары n1 и nJ таких, что 0 ≤ n1,nJ ≤ t, n1 + nJ = t и n1 + nJJ = u, где n1 и nJ сооветствуют однократному и J-кратному сдвигу.
- не верно для обоих регистров. Для R для любого заданного u существует не более одной тройки t, n1 и nJ таких, что t ≤ 240, 0 ≤ n1,nJ ≤ t, n1 + nJ = t и n1 + nJJ = u.
Регистр R обеспечивает неповторяемость состояния генератора и хорошие локальные статистические свойства. Влияние регистра R на S также предотвращаяет зацикливание S с маленьким периодом. Если J ≤ 260, то состояние регистра R не повторится при генерации ключевой последовательности длиной вплоть до 240 бит. А если J ≥ 240, то свойство (2) не верно.
Выбор битов управления тактированием
Биты управления для каждого регистра выбраны таким образом, что они зависят от обоих регистров. Поэтому знания состояния одного из регистров не достаточно для определения последующих состояний генератора.
Количество энтропии
Так как нерегулярное тактирование управляется битами из самого генератора, это может уменьшить количество энтропии в генераторе. Использование операции XOR и битов из двух регистров для получения бита управления обеспечивает отсутвие корреляции между этим битом управления и конроллируемым регистром. Благодаря этому энтропия не уменьшается при работе генератора.
Примечания
Ссылки
- Раздел eSTREAM, посвященный MICKEY-128
- Раздел eSTREAM, посвященный MICKEY 2.0
- Sultan Zayid Mohammed Al-Hinai, Algebraic Attacks on Clock-Controlled Stream Ciphers
- Hongxu Zhao, Shiqi Li, Power Analysis Attacks on a Hardware Implementation of the Stream Cipher MICKEY
Симметричные криптосистемы Поточный шифр Сеть Фейстеля ГОСТ 28147-89 • Blowfish • Camellia • CAST-128 • CAST-256 • CIPHERUNICORN-A • CIPHERUNICORN-E • CLEFIA • Cobra • DFC • DEAL • DES • DESX • EnRUPT • FEAL • FNAm2 • HPC • IDEA • KASUMI • Khufu • LOKI97 • MARS • NewDES • Raiden • RC5 • RC6 • RTEA • SEED • Sinople • TEA • Triple DES • Twofish • XTEA • XXTEA
SP-сеть Другие Категория:- Потоковые шифры
Wikimedia Foundation. 2010.