Mosquito

В криптографии, MOSQUITO — это аппартно-ориентированный самосинхронизующийся поточный шифр, разработанный в 2005 году Йоаном Дайменом и Парисом Китсосом. После взлома[ссылка 1] MOUSQUITO, была разработана вторая версия шифра, которая была представлена в проекте eSTREAM, где достигла третьего этапа отбора. В 2008 году вторая версия MOSQUITO — MOUSTIQUE, также была взломана[ссылка 2].

Обзор работы MOSQUITO

Общий смысл работы самосинхронизующегося поточного шифра MOSQUITO аналогичен работе самосинхронизующихся поточных шифров, в которых генерация потока ключей создаётся функцией от битов ключа и одного бита шифротекста, что, по сути, аналогично работе CFB с одним блоком перестановки. Особенности же шифра MOSQUITO заключаются в наличии девятистадийного конвейера, дополняющего условную зависимость регистра сдвига (Conditional Complementing Shift Registers — CCSR[примечание 1]) и функциями перехода между стадиями конвейера особого вида.

Спецификация

В шифре MOSQUITO восемь регистров различной длины, назовём регистр CCSR — a h 0 i {\displaystyle a^{{\mathcal {h}}0{\mathcal {i}}}} , первый регистр — a h 1 i {\displaystyle a^{{\mathcal {h}}1{\mathcal {i}}}} , второй — a h 2 i {\displaystyle a^{{\mathcal {h}}2{\mathcal {i}}}} и так далее до седьмого регистра — a h 7 i {\displaystyle a^{{\mathcal {h}}7{\mathcal {i}}}} . Будем обозначать i-ую позицию регистра j таким образом: a i h j i {\displaystyle a_{i}^{{\mathcal {h}}j{\mathcal {i}}}} . Длины регистров:

CCSR — 128 бит;

a h 1 i {\displaystyle a^{{\mathcal {h}}1{\mathcal {i}}}}  — a h 5 i {\displaystyle a^{{\mathcal {h}}5{\mathcal {i}}}} 53 бита;
a h 6 i {\displaystyle a^{{\mathcal {h}}6{\mathcal {i}}}}  — 12 бит;
a h 7 i {\displaystyle a^{{\mathcal {h}}7{\mathcal {i}}}}  — 3 бита.

Суть работы шифра заключается в вычислении, на каждый такт, битов какого-нибудь из регистров (кроме CCSR) на основе некоторой комбинации битов предыдущего регистра. Регистр CCSR работает как регистр сдвига: элементы регистра сдвигаются, а в нулевую позицию регистра CCSR записывается бит зашифрованного текста (с выхода шифра). Обозначим через G i j {\displaystyle G_{i}^{j}} правило, по которому вычисляется бит в i-ий позиции в регистре j. Тогда:

G 4 i   m o d   53 1 = a 128 i h 0 i + a 18 + i h 0 i + a 113 i h 0 i ( a 1 + i h 0 i + 1 ) + 1 {\displaystyle G_{4i~mod~53}^{1}=a_{128-i}^{{\mathcal {h}}0{\mathcal {i}}}+a_{18+i}^{{\mathcal {h}}0{\mathcal {i}}}+a_{113-i}^{{\mathcal {h}}0{\mathcal {i}}}(a_{1+i}^{{\mathcal {h}}0{\mathcal {i}}}+1)+1} , где 0 i < 53 {\displaystyle 0\leqslant i<53} ;
G 4 i   m o d   53 j = a i h j 1 i + a 3 + i h j 1 i + a 1 + i h j 1 i ( a 2 + i h j 1 i + 1 ) + 1 {\displaystyle G_{4i~mod~53}^{j}=a_{i}^{{\mathcal {h}}j-1{\mathcal {i}}}+a_{3+i}^{{\mathcal {h}}j-1{\mathcal {i}}}+a_{1+i}^{{\mathcal {h}}j-1{\mathcal {i}}}(a_{2+i}^{{\mathcal {h}}j-1{\mathcal {i}}}+1)+1} , где 0 i < 53 {\displaystyle 0\leqslant i<53} и 2 j 5 {\displaystyle 2\leqslant j\leqslant 5} , если нижний индекс какого-либо элемента из правой части равенства становится больше, чем 53, то этот элемент заменяется на 0;
G i 6 = a 4 i h 5 i + a 3 + 4 i h 5 i + a 1 + 4 i h 5 i + a 2 + 4 i h 5 i {\displaystyle G_{i}^{6}=a_{4i}^{{\mathcal {h}}5{\mathcal {i}}}+a_{3+4i}^{{\mathcal {h}}5{\mathcal {i}}}+a_{1+4i}^{{\mathcal {h}}5{\mathcal {i}}}+a_{2+4i}^{{\mathcal {h}}5{\mathcal {i}}}} , где 0 i < 12 {\displaystyle 0\leqslant i<12} ;
G i 7 = a 4 i h 6 i + a 3 + 4 i h 6 i + a 1 + 4 i h 6 i ( a 2 + 4 i h 6 i + 1 ) + 1 {\displaystyle G_{i}^{7}=a_{4i}^{{\mathcal {h}}6{\mathcal {i}}}+a_{3+4i}^{{\mathcal {h}}6{\mathcal {i}}}+a_{1+4i}^{{\mathcal {h}}6{\mathcal {i}}}(a_{2+4i}^{{\mathcal {h}}6{\mathcal {i}}}+1)+1} , где 0 i < 3 {\displaystyle 0\leqslant i<3} ;

и, наконец, бит ключевого потока z = a 0 h 7 i + a 1 h 7 i + a 2 h 7 i {\displaystyle z=a_{0}^{{\mathcal {h}}7{\mathcal {i}}}+a_{1}^{{\mathcal {h}}7{\mathcal {i}}}+a_{2}^{{\mathcal {h}}7{\mathcal {i}}}} .

Стоит отметить, что вычисление битов регистров выполняются с помощью комбинационной логики, а сдвиг, естественно, с помощью регистровой, а это значит, что для предотвращения неправильной работы конвейера, когда биты с регистра не успевают обработаться комбинационной логикой, надо чтобы функция G i j {\displaystyle G_{i}^{j}} , реализующая вычисления, была относительна простой.

Примечания

  1. смысл такого названия становится понятен из спецификации на шифр MOSQUITO, п 3.3, где рассматривается изменение регистра CCSR с точки зрения теории конечных автоматов, в этой же статье CCSR считается обычным 128-битовым регистром
  1. A. Joux and F. Muller, «Chosen-Ciphertext Attacks against MOSQUITO,» Архивная копия от 21 сентября 2011 на Wayback Machine Fast Software Encryption 2006, LNCS, M. Robshaw, ed., Springer-Verlag, 2006
  2. Emilia Kasper, Vincent Rijmen, Tor Bjorstad, Christian Rechberger, Matt Robshaw and Gautham Sekar «Correlated Keystreams in Moustique»  (неопр.). Дата обращения: 16 декабря 2011. Архивировано 7 декабря 2011 года.

Ссылки

  • The self-synchronizing stream cipher Mosquito: eSTREAM documentation — спецификация MOSQUITO
  • The self-synchronizing stream cipher Moustique — обзор второй версии MOSQUITO — MOUSTIQUE