Зерно 128а
Grain 128a Поточный шифр впервые был использован на семинаре по шифрованию с симметричным ключом (SKEW) в 2011 году. [ 1 ] как улучшение предшественника Grain 128, в котором были добавлены улучшения безопасности и дополнительная аутентификация сообщений с использованием подхода Encrypt & MAC. Одной из важных особенностей семейства Grain является то, что пропускную способность можно увеличить за счет дополнительного оборудования. Grain 128a разработан Мартином Огреном. [ 1 ] Мартин Хелл, Томас Йоханссон и Вилли Мейер.
Описание шифра
[ редактировать ]
Grain 128a состоит из двух больших частей: функции предварительного вывода и MAC. Функция предварительного вывода имеет размер внутреннего состояния 256 бит и состоит из двух регистров размером 128 бит: NLFSR и LFSR . MAC поддерживает теги переменной длины w, такие, что . В шифре используется 128-битный ключ.
Шифр поддерживает два режима работы: с аутентификацией или без нее, которая настраивается через прилагаемый файл. такое, что если то аутентификация сообщения включена, и если аутентификация сообщения отключена.
Функция предварительного вывода
[ редактировать ]Функция предварительного вывода состоит из двух регистров размером 128 бит: NLFSR ( ) и ЛФСР ( ) вместе с двумя полиномами обратной связи и и булева функция .
В дополнение к полиномам обратной связи, функциями обновления для NLFSR и LFSR являются:
Предварительный выходной поток ( ) определяется как:
Инициализация
[ редактировать ]
При инициализации мы определяем 96-битной версии, где определяет режим работы.
LFSR : инициализируется как
для
для
Последний бит 0 гарантирует, что аналогичные пары ключ-IV не создают сдвинутые версии друг друга.
NLFSR инициализируется путем копирования всего 128-битного ключа ( ) в НЛФСР :
для
Начать тактирование
[ редактировать ]Прежде чем функция предварительного вывода сможет начать выводить свой предвыходной поток, ее необходимо тактировать 256 раз для прогрева, на этом этапе предвыходной поток подается в полиномы обратной связи. и .
Ключевой поток
[ редактировать ]Ключевой поток ( ) и функциональность MAC в Grain 128a используют один и тот же поток предварительного вывода ( ). Поскольку аутентификация не является обязательной, определение нашего ключевого потока зависит от .
Если аутентификация включена, функция MAC использует первый биты (где — размер тега) после запуска тактирования для инициализации. Затем ключевому потоку присваивается каждый второй бит из-за общего предварительного выходного потока.
Если аутентификация включена:
Если аутентификация отключена:
MAC
[ редактировать ]
Grain 128a поддерживает теги размера. до 32 бит, для этого нужно 2 регистра размера используется сдвиговый регистр( ) и аккумулятор ( ). Чтобы создать тег сообщения где длина как мы должны установить чтобы гарантировать, что, т.е. и имеет разные теги, а также делает невозможным создание тега, который полностью игнорирует входные данные из сдвигового регистра после инициализации.
Для каждого бита в аккумуляторе мы в раз мы осуждаем немного в аккумуляторе, как .
Инициализация
[ редактировать ]Когда аутентификация включена, Grain 128a использует первый бит предварительного выходного потока( ) для инициализации сдвигового регистра и аккумулятора. Это делается:
Регистр сдвига:
для
Аккумулятор:
для
Генерация тегов
[ редактировать ]Регистр сдвига:
В сдвиговый регистр подаются все нечетные биты предварительного выходного потока ( ):
Аккумулятор:
для
Последний день
[ редактировать ]Когда шифр завершил L итераций, последний тег ( ) — содержимое аккумулятора:
для
Ссылки
[ редактировать ]- ^ Jump up to: а б «Публикации Мартина Огрена» . Мартин Огрен. Архивировано из оригинала 12 марта 2014 года . Проверено 9 мая 2013 г.