Light-industry-up.ru

Экосистема промышленности

Rabbit

23-07-2023

Rabbit - высокоскоростной поточный шифр впервые представленный [1] в феврале 2003 года на 10-м симпозиуме FSE. В мае 2005, он был отправлен на конкурс eSTREAM, целью которого было создание европейских стандартов для поточных систем шифрования.

Разработчиками Rabbit являются Martin Boesgaard, Mette Vesterager, Thomas Pedersen, Jesper Christiansen и Ove Scavenius.

Rabbit используют 128-битный ключ и 64-битный инициализирующий вектор. Шифр был разработан с целью использования в программном обеспечении. При этом скорость шифрования могла достигать 3.7 циклов в бит(CPB) для процессора Pentium 3 и 9.7 циклов в бит для ARM7. Тем не менее, шифр также оказался быстрым и компактным при реализации в аппаратном обеспчении.

Основным компонентом шифра является генератор битового потока, который шифрует 128 битов сообщения за итерацию. Достоинство шифра в тщательном перемещивании его внутренних состояний между двумя последовательными итерациями. Функция перемешивания полностью основана на арифметических операциях, доступных на современных процессорах, т.е. S-блоки подстановок и поисковые таблицы не нужны для реализации шифра.

Авторы шифра предоставили полный набор технических описаний на домашней странице Cryptico.[2]. Шифр также описан в RFC 4503. Cryptico обладала патентом на шифр, и многии годы для использования шифра в коммерческих целях требовалась лицензия. Однако, 6 октября 2008 шифр разрешили использовать для любых целях бесплатно. [3]

Содержание

Безопасность

Rabbit предоставляет 128-битную защиту против аттакующих, чья цель один уникальный ключ. Если же атака происходит на несколько ключей за раз, и все равно, который из них взломают, то защищенность снижается до 96 бит.[4].

Алгоритм

Внутреннее состояние поточного шифра содержит 513 битов. 512 из них поделены на 8-мь 32-битных переменных состояний и 8-мь 32-битных счетчиков , где - переменная состояния подсистемы при итерации , а - обазначет соответствующий счетчик переменных. 513-й бит - бит переноса φ , который необходимо хранить между итерациями. Этот бит инициализируется нулем. 8-мь переменных состояний и 8-мь счетчиков зависят от ключа при инициализации.

Схема установки ключа

Алгоритм инициализируется расширением 128-битного ключа на 8-мь переменных состояния и 8-мь счетчиков так, чтосуществует взаимнооднозначное соответствие между ключом, начальными переменными состояний, , и начальными счетчиками, . Ключ, , поделен на 8-мь подключей: , , ... , , переменные состояний и счетчики инициализируются при помощи подключей:



x_{j,0}=
\begin{cases}
    k_{(j+1 \mod 8)} \diamond k_j ,                 \ \  for \  j  \ even\\
    k_{(j+5 \mod 8)} \diamond  k_{(j+4 \mod 8)},        \ \  for \ j \ odd \\
\end{cases}
(1)

c_{j,0}=
\begin{cases}
    k_{(j+4 \mod 8)} \diamond k_{(j+5 \mod 8)} ,           \ \  for \ j \ even           \\
    k_j \diamond  k_{(j+1 \mod 8)},      \ \  for \ j \ odd  \\
\end{cases}
(1)

(где - логическое "или", ||)

Система прогоняется 4-ре раза, согласно функции следующего состояния, определенной ниже, чтобы понизить кореляцию между битами ключа и битами переменных внутренного состояния. В конце, счетчики ре-инициализируются следующим образом:

для предотвращения восстановления ключа путем инверсии системы счетчиков.

Функция следующего состояния

Здесь все сложение по модулю 2^32.


Система счетчиков

Уравнения, задающие изменение системы счетчиков:

где счетчик бита переноса, φ, задается:



\phi_{j,i+1} =
\begin{cases}  
1, \ \  if \ c_{0,i} + a_0 + \phi_{7,i} \geqslant  2^{32} \wedge  j = 0 \  \\
1, \ \  if \ c_{j,i} + a_j + \phi_{j-1,i+1} \geqslant  2^{32} \wedge  j > 0 \ \\
0, \ \  otherwise

\end{cases}

(1)

:


Кроме того, константы определяются как:


Схема извлечения

Список литературы

  1. PDF)
  2. PDF)
  3. http://www.ecrypt.eu.org/stream/phorum/read.php?1,1244
  4. PDF)

Ссылки

  • Cryptico homepage
  • Rabbit RFC
  • eSTREAM page on Rabbit

Rabbit.

© 2014–2023 light-industry-up.ru, Россия, Краснодар, ул. Листопадная 53, +7 (861) 501-67-06