В Зерно 128а потоковый шифр впервые была представлена на семинаре по симметричному шифрованию ключей (SKEW) в 2011 году.[1] как усовершенствование предшественника Grain 128, в котором были добавлены улучшения безопасности и дополнительная проверка подлинности сообщений с использованием подхода Encrypt & MAC. Одна из важных особенностей Семейство зерна заключается в том, что пропускную способность можно увеличить за счет дополнительного оборудования. Grain 128a разработан Мартином Агреном,[1] Мартин Ад, Томас Йоханссон и Вилли Мейер.
Описание шифра
Grain 128a состоит из двух больших частей: функции предварительного вывода и MAC. Функция предварительного вывода имеет размер внутреннего состояния 256 бит, состоящий из двух регистров размером 128 бит: NLFSR и LFSR. MAC поддерживает теги переменной длины w, так что
. В шифре используется 128-битный ключ.
Шифр поддерживает два режима работы: с аутентификацией или без нее, которая настраивается через прилагаемый
так что если
тогда аутентификация сообщения включена, и если
аутентификация сообщения отключена.
Функция предварительного вывода
Функция предварительного вывода состоит из двух регистров размером 128 бит: NLFSR (
) и LFSR (
) вместе с 2 полиномами обратной связи
и
и логическая функция
.



Помимо полиномов обратной связи, функции обновления для NLFSR и LFSR находятся:


Предварительный поток вывода (
) определяется как:

Инициализация
Схема, показывающая процедуру запуска предварительного вывода, который направляет поток предварительного вывода обратно в функции

и

После инициализации мы определяем
96 бит, где
диктует режим работы.
В LFSR инициализируется как:
за 
за 

Последний бит 0 гарантирует, что аналогичные пары ключ-IV не производят сдвинутые версии друг друга.
В NLFSR инициализируется путем копирования всего 128-битного ключа (
) в NLFSR:
за 
Запуск синхронизации
Перед тем, как функция предварительного вывода сможет начать вывод своего потока предварительного вывода, его необходимо синхронизировать 256 раз, чтобы прогреться, на этом этапе поток предварительного вывода подается в полиномы обратной связи.
и
.
Ключевой поток
Ключевой поток (
) и MAC-адреса в Grain 128a совместно используют один и тот же поток предварительного вывода (
). Поскольку аутентификация не является обязательной, определение нашего ключевого потока зависит от
.
Когда аутентификация включена, функция MAC использует первый
биты (где
- это размер тега) после запуска для инициализации. Затем ключевому потоку присваиваются все остальные биты из-за общего потока предварительного вывода.
Если аутентификация включена:

Если аутентификация отключена:

MAC
Grain 128a поддерживает теги размера
до 32 бит, для этого 2 регистра размера
используется сдвиговый регистр (
) и аккумулятор(
). Чтобы создать тег сообщения
куда
это длина
как мы должны установить
чтобы убедиться, что
и
имеет разные теги, а также делает невозможным создание тега, который полностью игнорирует ввод из регистра сдвига после инициализации.
Для каждого бита
в аккумуляторе мы вовремя
мы называем бит в аккумуляторе
.
Инициализация
Когда аутентификация включена, Grain 128a использует первый
биты потока предварительного вывода (
) для инициализации сдвигового регистра и аккумулятора. Это делают:
Регистр сдвига:
за 
Аккумулятор:
за 
Генерация тегов
Регистр сдвига:
В сдвиговый регистр загружаются все нечетные биты потока предварительного вывода (
):

Аккумулятор:
за 
Заключительный тег
Когда шифр завершит L итераций, последний тег (
) - это содержимое аккумулятора:
за 
Рекомендации
внешняя ссылка
|
---|
Широко используемые шифры | |
---|
eSTREAM портфолио | Программного обеспечения | |
---|
Аппаратное обеспечение | |
---|
|
---|
Другие шифры | |
---|
Теория | |
---|
Атаки | |
---|
|
|
|