Введение
Поточный шифр Rabbit — высокоскоростной потоковый шифр, разработанный в 2003 году. Алгоритм и исходный код были опубликованы в 2008 году как программное обеспечение с открытым исходным кодом и находящееся в общественном достоянии.
Rabbit is a high speed stream cipher from 2003. The algorithm and source code was released in 2008 as public domain software.
История
Rabbit был впервые представлен в феврале 2003 года на 10-м семинаре FSE. В мае 2005 года он был представлен проекту eSTREAM сети ECRYPT. Rabbit разработан Мартином Боесгаардом, Метте Вестерагер, Томасом Педерсеном, Джеспером Кристиансеном и Ове Скавениусом. Авторы шифра опубликовали полный набор аналитических отчетов по криптоанализу на домашней странице Cryptico. Он также описан в RFC 4503. Компания Cryptico имела патенты, заявленные на алгоритм, и на протяжении многих лет взимала лицензионный сбор за коммерческое использование шифра, который не требовался для некоммерческого использования. Однако 6 октября 2008 года алгоритм был сделан полностью бесплатным для любого использования. Кроме того, на веб-сайте указано, что алгоритм и его реализация являются программным обеспечением, находящимся в общественном достоянии, и исходный код доступен для бесплатной загрузки.
Функциональность
Rabbit использует 128-битный ключ и 64-битный вектор инициализации. Шифр был разработан с акцентом на высокую производительность в программном обеспечении, где полностью оптимизированные реализации достигают стоимости шифрования до 3,7 cpb на Pentium 3 и 9,7 cpb на ARM7. Однако шифр также оказывается очень быстрым и компактным при аппаратной реализации. Основным компонентом шифра является генератор битового потока, который шифрует 128 бит сообщения за каждую итерацию. Надежность шифра обеспечивается сильным перемешиванием его внутреннего состояния между двумя последовательными итерациями. Функция перемешивания полностью основана на арифметических операциях, доступных на современных процессорах, то есть для реализации шифра не требуются S-блоки или таблицы подстановки. Функция перемешивания использует функцию g, основанную на арифметическом возведении в квадрат, а также операции ARX – логическое XOR, битовое вращение с фиксированным количеством позиций и сложение по модулю 232. Функция g, используемая в Rabbit – возведение 32-битного числа в квадрат для получения 64-битного числа, а затем объединение левой и правой половины полученного квадрата с помощью XOR для получения 32-битного результата – обеспечивает значительно лучшие результаты, чем использование 32 средних бит этого квадрата (метод среднего квадрата).
Безопасность
Rabbit заявляет об уровне безопасности в 128 бит против атак, нацеленных на один конкретный ключ. Однако, если злоумышленник атакует сразу большое количество ключей и не имеет цели взломать какой-то конкретный из них, то небольшой размер IV приводит к снижению уровня безопасности до 96 бит. Это связано с универсальными атаками, основанными на компромиссе между временем и памятью (ТМД). В выходных данных Rabbit присутствует небольшое смещение, что позволило Жан-Филиппу Аумассону в декабре 2006 года обнаружить отличитель со сложностью 2<sup>247</sup>. Хотя в 2008 году этот отличитель был улучшен до 2<sup>158</sup>, он не представляет угрозы для безопасности Rabbit, поскольку его сложность значительно выше, чем сложность перебора всего ключевого пространства (2<sup>128</sup>).