BEAN

Материал из testwiki
Перейти к навигации Перейти к поиску

Шаблон:Значения BEAN — симметричный алгоритм синхронного потокового шифрования, основанный на алгоритме Grain. Является представителем так называемых «облегчённых» шифров, то есть ориентированных на аппаратную реализацию внутри устройств с ограниченной вычислительной мощностью, малой памятью и малым энергопотреблением (например, RFID-метки или сенсорные сети). Был предложен в 2009 году Нави Кумаром, Шрикантой Ойха, Критикой Джайн и Сангитой ЛалШаблон:Sfn.

Описание

Структура шифра BEAN

В симметричных потоковых алгоритмах шифрование (или дешифрование) происходит путем гаммирования, то есть «наложения» случайной последовательности бит (гаммы) на открытый текст (или шифротекст соответственно). Под «наложением» понимается операция XOR над битами гаммы и текста. Гаммирующая последовательность, которая также называется keystream (поток ключей), получается с помощью генераторов псевдослучайных чисел Шаблон:Sfn.

Подобно Grain, BEAN состоит из двух 80-битных регистров сдвига и функции вывода. Но если в Grain применяются один регистр с линейной обратной связью (LFSR) и один регистр с нелинейной функцией обратной связи (NFSR), то в BEAN используются два регистра сдвига с обратной связью по переносу (FCSR)Шаблон:Sfn. LFSR используется в Grain для большего периода последовательности, а NFSR для обеспечения нелинейности. FCSR в BEAN сочетает оба этих свойства, при этом оставаясь таким же компактным на аппаратном уровнеШаблон:Sfn.

В обоих регистрах очередной записываемый бит равен сумме по модулю 2 всех отводов ячеек регистра. Такая реализация называется конфигурацией Фибоначчи. Тогда как в Grain регистры реализованы по конфигурации Галуа, то есть последний 79-й бит без изменений записывается на 0-е место, а в каждую следующую i-ю ячейку записывается сумма по модулю 2 предыдущей (i1)-й и отвода 79-й ячейкиШаблон:Sfn.

Регистры FCSR

Оба регистра имеют длину 80 бит. Обозначим их как FCSR-I и FCSR-II, а их состояния на i-ом такте как 𝐁i и 𝐒i соответственноШаблон:Sfn:

𝐁i=(𝐛i,mbi)=(bi,...,bi+79,mbi)

𝐒i=(𝐬i,msi)=(si,...,si+79,msi)

FCSR-I

Функция обратной связи FCSR-I f(x) задаётся примитивным многочленом 80-й степениШаблон:Sfn:

f(x)=1+x18+x29+x42+x57+x67+x80

то есть обновление состояния FCSR-I на очередном такте выглядит следующим образомШаблон:Sfn:

σbi=bi+62+bi+51+bi+38+bi+23+bi+13+bi+mbi

bi+80=σbimod2

mbi+1=σbidiv2

FCSR-II

Аналогично для FCSR-II функция обратной связиШаблон:Sfn:

f(x)=1+x2+x3+x4+x79

Обновление состоянияШаблон:Sfn:

σsi=si+78+si+77+si+76+si+1+msi

si+80=σsimod2

msi+1=σsidiv2

Функция вывода

Булева функция f(x1,...,x6) используется для генерации гаммы. Авторы алгоритма задают её с помощью S-блока, принимающего на вход 6 бит (2 бита определяют строку и 4 бита определяют столбец) и возвращающего слово из 4 битШаблон:Sfn. Но поскольку из слова дальше берётся только последний бит, f() можно представить в виде полинома ЖегалкинаШаблон:Sfn:

f(x1,...,x6)=x1x4x1x2x1x3x1x4x1x5x2x5x2x6x3x4x3x5x3x6x4x6x5x6

x1x2x5x1x2x6x1x3x4x1x3x6x1x4x5x1x4x6x2x3x6x2x4x5x2x4x6x2x5x6x3x4x5

x3x4x6x4x5x6x1x2x3x5x1x2x3x6x1x2x4x5x1x2x4x6x1x2x5x6x1x3x4x5x1x3x4x6

x1x3x5x6x1x4x5x6x1x2x3x4x6x1x2x4x5x6

Биты гаммы z0,z1,z2,... находятся следующим образомШаблон:Sfn:

z2i=f(bi+23,bi+73,si+5,si+9,si+29,bi+51)

z2i+1=f(bi+23,bi+73,si+5,si+9,si+29,si+67)

Таким образом, за один такт генерируются сразу два бита.

Инициализация состояния

Инициализация происходит путём загрузки 80-битного ключа K=(k0,k1,...,k79) в регистры FCSR-I и FCSR-II:

bi=ki+81, i=81,...,2

si=ki+81, i=81,...,2

Регистры переноса инициализируются нулями: msi81=mbi81=0.

Затем FCSR делают 81 такт вхолостую, после чего начинается генерация гаммыШаблон:Sfn.

Производительность

BEAN обеспечивает хороший баланс между безопасностью, скоростью и стоимостью реализации. Grain может генерировать два бита гаммы за такт, используя дополнительные аппаратные средства. Тогда как BEAN справляется с этой задачей без дополнительного оборудованияШаблон:Sfn.

Как утверждают авторы алгоритмаШаблон:Sfn, генерация 107 бит с помощью BEAN происходит в среднем в 1.5 раза быстрее, чем с помощью Grain, а потребляемая память уменьшается на 10 %.

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

Важной целью при разработке криптографического алгоритма является достижение лавинного эффекта, который заключается в том, что при изменении одного бита ключа (открытого текста) как минимум половина битов гаммы (шифротекста) изменится. Для сравнения BEAN и Grain было взято 1000000 случайных 80-битных ключей, и для каждого ключа было сгенерировано 80 бит гаммы с помощью обоих алгоритмов. Как утверждают авторы, в BEAN для 65,3 % ключей полученные биты удовлетворяют условиям лавинного эффекта, тогда как в Grain эта доля составляет 63,1 %Шаблон:Sfn.

Алгоритм был также протестирован на статистических тестах NIST, которые не показали отклонение генерируемого потока ключей от случайной последовательностиШаблон:Sfn.

В 2011 Мартин Агрен и Мартин Хелл в своей статье указали на неоптимальность функции вывода. Они предложили алгоритм эффективного Шаблон:Iw для BEAN, а также алгоритм Шаблон:Iw, который несколько быстрее полного перебора (273 в предложенном алгоритме против 280 при полном переборе) и не затратен по памятиШаблон:Sfn.

В 2013 теми же авторами в сотрудничестве с Хуэй Вонгом и Томасом Йоханссоном были обнаружены новые корреляции между битами ключа и битами гаммы, что привело к созданию ещё более эффективного алгоритма атаки на восстановление ключа (257.53). Кроме того, были предложены некоторые улучшения FCSR, а также более эффективные функции вывода, стойкие к известным методам атакиШаблон:Sfn.

Применение

Как и многие алгоритмы «облегчённой» криптографии, BEAN может находить своё применение в RFID метках, беспроводных сенсорных сетях, а также во встраиваемых системахШаблон:Sfn.

Примечания

Шаблон:Примечания

Литература

Ссылки

Шаблон:Добротная статья