Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Математические основы криптологии..pdf
Скачиваний:
102
Добавлен:
05.02.2023
Размер:
6.01 Mб
Скачать

1.Основной регистр М инициализируется ключом и IV: M := K + 280 IV = (080–v||IV||K)

2.Регистр переносов инициализируется в 0:

C := 0 = (082)

3. FCSR тактируется 160 раз. (На этом шаге выход отбрасывается),

После фазы установки, псевдослучайный поток производится тактированием FCSR и извлечением по одному псевдослучайных байт, используя фильтр F, как описано выше.

Поточный шифр Grain-128

Grain – двоичный аддитивный поточный шифр, ориентированный на аппаратную реализацию. Версия, которая обозначается Grain v.1 [6], предназначена для приложений, которые имеют очень ограниченные аппаратные ресурсы. Grain v.1 поддерживает 80битовый размер ключа.

Версия нифра Grain-128 поддерживает размер ключа – 128 бит и размер вектора IV – 96 битов. Шифр Grain-128 также является очень компактным и легко осуществимым в аппаратных средствах. Кроме того, возможно достаточно просто увеличивать скорость за счет большего количества аппаратных средств. Это является отличительной особенность семейства поточных шифров Grain, и во многих других шифрах явно не обосновано. Grain128 использует линейный регистр сдвига с обратной связью, чтобы гарантировать хорошие статистические свойства и гарантировать нижнюю границу периода ключевой последовательности. Чтобы ввести нелинейность вместе с нелинейным фильтром используется нелинейный регистр сдвига с обратной связью (N),ключи).ВFSR). Нелинейный фильтр берет в качестве входных данных значения от обоих сдвиговых регистров.

Генерация ключевого потока

Краткий обзор различных блоков, используемых в шифре, приведен на рисунке 2.28.

193

zi

Рис. 2.28. Краткий обзор шифра.

Шифр состоит из трех основных строительных блоков, а именно: LFSR, N),ключи).ВFSR и выходной функции. Содержимое LFSR обозначается si, si+1, …, si+127. Аналогичным образом содержание N),ключи).ВFSR обозначается bi, bi+1, …, bi+127. Полином обратной связи LFSR, обозначенный f(x), является примитивным полиномом степени 128. Он определен как

f(x) = 1 + x32 + x47 + x58 + x90 + x121 + x128.

Чтобы избежать любой возможной неопределенности, разработчики в [6] привели соответствующую функцию обновления LFSR:

si+128 = si + si+7 + si+38 + si+70 + si+81 + si+96.

Нелинейный полином обратной связи N),ключи).ВFSR, g(x), является суммой одной линейной и одной нелинейной функций. Он определен как

g(x) = 1 + x32 + x37 + x72 + x102 + x128 + x44x60 + x61x125 + + x63x67 + x69x101 + x80x88 + x110x111 + x115x117.

Аналогично, чтобы избежать любой возможной неопределенности, разработчики также привели в [6] соответствующую функцию обновления N),ключи).ВFSR. В функции обновления, приведенной ниже, бит si, опущенный в полиноме обратной связи, включен и замаскирован со входом N),ключи).ВFSR.

bi+128 = si + bi + bi+26 + bi+56 + bi+91 + bi+96 + bi+3bi+67 + bi+11bi+13 +

+ bi+17bi+18 + bi+27bi+59 + bi+40bi+48 + bi+61bi+65 + bi+68bi+84.

256 элементов памяти в этих двух сдвиговых регистрах представляют состояние шифра. Из этого состояния берется 9 переменных в качестве входа булевой функции h(x). Два входа h(x) берутся из N),ключи).ВFSR, а семь – из LFSR. Эта функция имеет степень 3 и является очень простой. Она определяется как

h(x) = x0x1 + x2x3 + x4x5 + x6x7 + x0x4x8,

194