
6 Лекция - Поточные шифры
.pdf
Лекция 1 Поточные шифры
|
k |
|
Узел выработки гаммы |
|
iv |
|
||
|
|
|
|
(генератор псевдослучайной |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
последовательности) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
γ1, γ2,..., γt |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y1,y2,...,yt |
|
|
x1,x2,...,xt |
|
Узел наложения |
|
|
||||
|
|
|
|
|
|
|
|
гаммы
Наиболее распространенная модель поточного шифра заключается в следующем. Для зашифрования открытого текста, представляющего собой конечную последовательность символов x1,...,xt в алфавите X, на ключе k K узлом выработки гаммы (иначе называемым генератором псевдослучайной последовательности) вырабатывается последовательность знаков гаммы 1,..., t . Далее с помощью отображения
,x : X Y
вузле наложения гаммы вырабатывается шифрованный текст y1,..., yt , где
yi i,ai ,i 1,t.
В общем виде поточный шифр может рассматриваться как отображение
G: Xt Yt ,t .
При этом для любого фиксированного значения отображение
,x x : X Y
является инъективным, т.е. выполнено условие |
x1 x2 при |
x1 x2 . При |
X Y |
данное свойство равносильно тому, что x |
является подстановкой на множестве X. |
||
Наиболее популярным способом зашифрования является гаммирование: |
|
|
yi i,ai ai i,i 1,t,
здесь X Y — абелева группа, например аддитивная группа вычетов по заданному модулю m.
В описанной модели для шифрования различных текстов на одном и том же ключе k K используется одна и та же последовательность знаков гаммы. В ряде случаев, это может привести к снижению стойкости шифра, поэтому часто рассматривается модель поточного шифра, в которой для шифрования каждого сообщения используется своя уникальная последовательность iv Vn , которую принято называть инициализационным
вектором, синхропосылкой или маркантом.
В этом случае поточный шифр может рассматриваться как отображение
G: Vn Xt Yt,t ,
где ключ k K и синхропосылка iv Vn используются для выработки последовательности значений y1,..., yt .
На основе имеющегося опыта анализа поточных шифров можно сформулировать две группы требований к последовательности знаков гаммы y1,y2,..., вырабатываемой поточным шифром.
Высокая сложность определения секретного ключа по известному отрезку выходной гаммы (свойство стойкости к методам определения ключа).
2
Невозможность предсказания других знаков выходной гаммы при известной их части (свойство стойкости к методам бесключевого чтения).
Более подробно данные требования могут быть сформулированы в следующем виде:
алгоритм выработки знаков гаммы должен обеспечивать высокую сложность определения секретного ключа по известным значениям y1,y2,...
статистические свойства гаммы должны приближаться к свойствам случайной равновероятной последовательности,
период выходной гаммы должен быть достаточно большим, чтобы исключить возможность «эффекта перекрытия шифра», т.е. зашифрования одним и тем же отрезком гаммы нескольких открытых текстов,
должны отсутствовать простые аналитические связи знаков гаммы со знаками ключа и открытого текста.
Стойкость системы целиком зависит от внутренней структуры генератора ключевой последовательности. Если генератор выдает последовательность с небольшим периодом, то стойкость системы будет невелика. Напротив, если генератор будет выдавать бесконечную последовательность истинно случайных (не псевдослучайных!) бит, то мы получим одноразовый блокнот с идеальной стойкостью.
Реальная стойкость потоковых шифров лежит где-то посредине между стойкостью простой моноалфавитной подстановки и одноразового блокнота. Генератор ключевой последовательности выдает поток битов, который выглядит случайным, но в действительности является детерминированным и может быть в точности воспроизведен на приемной стороне. Чем больше генерируемый поток похож на случайный, тем больше усилий потребуется от криптоаналитика для взлома шифра
Однако, если каждый раз при включении генератор будет выдавать одну и ту же последовательность, то взлом криптосистемы будет тривиальной задачей. Перехватив два шифрованных текста, злоумышленник может сложить их по модулю 2 и получить два исходных текста, сложенных также по модулю 2. Такую систему раскрыть очень просто. Если же в руках противника окажется пара исходный текст - шифрованный текст, задача вообще становится тривиальной.
По этой причине все потоковые шифры предусматривают использование ключа. Выход генератора ключевой последовательности зависит от этого ключа. В этом случае простой криптоанализ будет невозможен.
Потоковые шифры наиболее пригодны для шифрования непрерывных потоков данных, например, в сетях передачи данных.
Рассмотрим наиболее известные способы построения генераторов псевдослучайных чисел и построения на их основе поточных шифров.
Линейный регистр сдвига
В общем случае рекуррентная последовательность x0,x1,x2,... на заданном множестве определяется соотношением
xi m f xi,xi 1,...,xi m 1 (*)
где x0,x1,...,xm 1 - начальные значения, а f :Rm R - фиксированная функция от m
переменных.
Соотношения (*), позволяющие выработать последовательность x0,x1,x2,..., могут
рассматриваться как конечный автономный автомат, который принято называть регистром сдвига с функцией обратной связи .
Наиболее глубоко изучены криптографические качества рекуррентных

3
последовательностей для случая, когда множество R является конечным полем GF(qm), а функция f линейна.
Пусть F - произвольное поле. Последовательность u0,u1,u2,... элементов поля F
называется линейной рекуррентной последовательностью (ЛРП) порядка m 0 над полем
F, если существуют константы f0, f1, f2,..., fm 1 такие, что
m 1
ui m fjui j,i 0 j 0
Линейная рекуррентная последовательность реализуется автоматом, который принято называть линейным регистром сдвига или регистром сдвига с линейной обратной связью (в англоязычной литературе для него используется название linear feedback shift register).
Вычисление очередного знака последовательности называется тактом работы линейного регистра сдвига. Память, в которой хранятся значения, необходимые для вычисления следующего знака работы, называется накопителем регистра сдвига. В очередном такте работы регистра сдвига содержащиеся в ячейках его накопителя значения умножаются на соответствующие коэффициенты f0, f1, f2,..., fm 1, и суммируются (операции
умножения и сложения проводится в поле F). После этого происходит сдвиг информации в регистре от старших индексов к младшим, а в освободившуюся крайнюю ячейку записывается вычисленное значение суммы - значение функции f обратной связи.
Равенство, выражающее зависимость между знаками линейной рекуррентной последовательности , называют законом рекурсии, многочлен
m 1
f x xm fjxj, f x F x ,
j 0
называют характеристическим многочленом линейной рекуррентной последовательности, вектор ut ut,ut 1,ut 2,...,ut m 1 - состоянием линейной рекуррентной
последовательности в такт t, вектор u0 - начальным состоянием линейной рекуррентной последовательности.
Периодом линейной рекуррентной последовательности называется натуральное число, для которого существует число 0 такое, что для всех i 0 справедливо равенство
u i u i
Наименьший из всех периодов периодической последовательности называется ее минимальным периодом, число 0 называется предпериодом, или подходом к периоду.
Отметим, что понятие периода играет весьма важную роль в оценке криптографических свойств соответствующих последовательностей.
Поточные шифры на базе регистров сдвига активно использовались в годы войны, ещё задолго до появления электроники. Они были просты в проектировании и реализации.
Есть несколько причин использования линейных регистров сдвига в криптографии:
высокое быстродействие криптографических алгоритмов
применение только простейших операций сложения и умножения, аппаратно реализованных практически во всех вычислительных устройствах
хорошие криптографические свойства (генерируемые последовательности имеют большой период и хорошие статистические свойства)

4
легкость анализа с использованием алгебраических методов за счет линейной структуры
Несмотря на большой период и хорошие статистические качества, существенным недостатком линейных регистров сдвига является простая аналитическая связь знаков выходной гаммы с начальным состоянием линейной рекуррентной последовательности. Поэтому в криптографических приложениях используют различные способы усложнения линейных рекуррентных последовательностей.
Фильтрующие генераторы Один из простейших способов усложнения последовательности над конечным
множеством заключается в отображении ее n-грамм в знаки другой последовательности с помощью так называемой фильтрующей функции.
Математической моделью фильтрующего генератора является автономный автомат
AFn,F, , f , вырабатывающий выходную гамму по закону:
j f j 1 x , j , где
:Fn F - преобразование линейного регистра сдвига,
х- начальное состояние линейного регистра сдвига,
f :Fn F - выходная функция (фильтр).
В качестве ключевых элементов фильтрующего генератора могут использоваться: начальное состояние линейного регистра сдвига, характеристический многочлен линейного регистра сдвига, выходная функция.
Если используется линейный регистр сдвига максимального периода F n 1 и
сбалансированная функция выхода f , то период выходной гаммы фильтрующего генератора будет также равен F n 1.
Кроме гарантированного периода выходная функция (фильтр) должна обеспечивать хорошие статистические качества выходных s-грамм, а также высокую линейную сложность. Напомним, что линейной сложностью периодической последовательности называется степень ее минимального многочлена.
Комбинирующие генераторы Комбинирующий генератор является усложнением фильтрующего генератора.
Комбинирующий генератор строится на основе m 1 линейных регистров сдвига над полем
F (будем обозначать их ЛРС-1, ..ЛРС-m) и выходной функции |
f x1,...,xm . |
На вход |
||
функции f x1,...,xm подаются знаки, вырабатываемые линейными регистрами. |
При этом |
|||
значениями переменной xj являются знаки, вырабатываемые ЛРС-j, |
j |
|
. |
|
1,m |
|

5
Под начальным состоянием комбинирующего генератора понимается совокупность ненулевых начальных состояний всех входящих в него ЛPC. Известны условия, см. [Фомичев], при которых комбинирующий генератор обладает гарантированными периодом и статистическими свойствами.
Рассмотрим два основных типа поточных шифров. Самосинхронизирующиеся шифры
В 1946 году в США была запатентована базовая идея так называемых
самосинхронизирующихся поточных шифров (или шифрования с автоключом - CipherText Auto Key (СТАК)). Она заключается в том, что внутреннее состояние генератора является функцией фиксированного числа предшествующих битов шифрованного текста. Поскольку внутреннее состояние зависит только от n бит шифрованного текста, генератор на приемной стороне войдет в синхронизм с передающей стороной после получения n бит.
Реализация этого подхода выглядит следующим образом. Каждое сообщение предваряется случайным заголовком длиной n бит. Этот заголовок шифруется и передается в линию. На приемной стороне заголовок расшифровывается. Результат расшифрования будет неверным, но после обработки n бит заголовка оба генератора будут синхронизированы.
Недостатком системы является распространение ошибок При искажении одного бита генератор на приемной стороне выдаст n неверных бит ключевой последовательности, пока ошибочный бит не будет вытолкнут из памяти, что приведет к ошибочному расшифрованию п бит исходного текста.
Кроме того, самосинхронизирующиеся шифры уязвимы для атак типа "воспроизведение". Злоумышленник записывает некоторое количество бит шифрованного текста. Затем, позднее, он подменяет биты трафика записанными - "воспроизводит" их. После некоторого количества "мусора", пока приемная сторона не синхронизируется, старый шифрованный текст будет расшифровываться нормально. У приемной стороны нет никаких средств определения того, что принимаемые данные не являются актуальными.
Самосинхронизирующиеся потоковые шифры могут быть реализованы в виде блочных шифров, используемых в режиме обратной связи по шифрованному тексту (CFB). При этом за один раз может шифроваться произвольное число бит, меньшее либо равное длине блока. Проиллюстрируем это на примере шифрования по одному байту за цикл.
Блочный шифр работает над очередью размером, равным длине блока. Первоначально очередь заполняется синхропосылкой. Затем очередь шифруется и левые 8 бит складываются с первыми 8 битами исходного текста. Полученные 8 бит шифрованного текста передаются в линию, очередь сдвигается влево на 8 бит, левые биты отбрасываются, а правые заполняются 8 битами шифрованного текста, переданными в линию. Далее процедура повторяется. Число 8 взято только для примера. За один цикл работы блочного алгоритма может шифроваться и 1 бит, хотя это будет не слишком эффективно с точки зрения скорости работы схемы. В режиме CFB синхропосылка должна быть уникальна для каждого сообщения в течение срока действия ключа. Если это будет не так, злоумышленник сможет восстановить исходный текст.
В случае возникновения ошибки в шифрованном тексте на приемной стороне в общем

6
m
случае возникнут ошибки при расшифровании текущего и последующих блоков, где т
n
— размер блока, п - число бит, шифруемых за 1 цикл, т.е. пока ошибочный бит шифрованного текста не будет вытеснен из памяти.
Синхронные шифры В этом случае выходные значения генератора не зависят от исходного или
шифрованного текстов. Такие потоковые шифры носят название синхронных.
Основная сложность в данном подходе заключается в необходимости синхронизации генераторов ключа на передающей и приемной сторонах. Если в процессе передачи произошло выпадение или вставка хотя бы одного бита, то вся последовательность битов шифрованного текста после ошибочного бита не сможет быть расшифрована. Если такое произойдет, стороны должны провести повторную синхронизацию. При этом синхронизация должна быть проведена так, чтобы никакой отрезок ключевой последовательности не повторился, так что очевидное решение возвратиться к некоторому предыдущему состоянию генератора не подходит.
Положительным свойством синхронных потоковых шифров является отсутствие эффекта распространения ошибок Один искаженный бит при передаче приведет к искажению только одного бита текста при расшифровании.
Синхронные шифры также защищают от вставок и выбрасываний отрезков шифрованного текста из потока Такие операции приведут к нарушению синхронизации, что будет сразу же обнаружено на приемной стороне.
Однако, такие шифры уязвимы к изменению отдельных бит. Если злоумышленник знает исходный текст, то он сможет изменять биты в потоке шифрованного текста таким образом, что он будет расшифровываться таге, как необходимо злоумышленнику.
Синхронный потоковый шифр может быть реализован в виде блочного шифра, работающего в режиме обратной связи по выходу(OFB). Режим OFB может быть реализован с любым размером обратной связи, меньшим размера блока. Однако, данный способ не
m
рекомендуется, так как при этом снижается период генератора до примерно 22 . При длине блока 64 это будет около 232, чего явно недостаточно.
В этом случае выходная функция очень часто выбирается простой, например, суммой по модулю 2 нескольких бит состояния или вообще одним битом состояния. Криптографическая стойкость обеспечивается функцией перехода к следующему состоянию, которая зависит от ключа. Иногда данный режим называют режимом с внутренней обратной связью, поскольку обратная связь является внутренней по отношению к алгоритму генерации ключевой последовательности.
Вариантом этого режима является схема, когда ключ задает начальное состояние генератора, после чего последний работает без дальнейшего вмешательства.
Еще одним способом построения потокового шифра является использование счетчика в качестве входного значения для блочного шифра. После каждого цикла шифрования блока значение счетчика увеличивается, чаще всего на единицу. Свойства данного режима в отношении распространения ошибок и синхронизации будут такими же, как и для режима OFB. В качестве счетчика может быть использован любой генератор псевдослучайных чисел, вне зависимости от его криптографической стойкости.
При использовании потокового шифра в режиме счетчика выбирается простая функция перехода и сложная, зависящая от ключа функция выхода. Функция перехода может быть простым счетчиком, увеличивающимся на единицу на каждом такте.
Приведем описание некоторых алгоритмов поточного шифрования, иллюстрирующих изложенные выше идеи и методы построения генераторов двоичных последовательностей.
Алгоритм А5
Алгоритм поточного шифрования А5 является комбинирующим генератором

7
нескольких линейных регистров сдвига с взаимным управлением.
Согласно доступной в сети Интернет информации, изначально данный алгоритм шифрования предназначался для использования в военных целях, однако в конце 80-х годов, его начали применять в сетях сотовой связи для шифрования передаваемых данных между сотовым телефоном и станцией сотового оператора.
Изначально алгоритм шифрования в открытой печати опубликован не был. Позднее он был восстановлен с помощью реверсинжиниринга (восстановление работы алгоритма по его программной и/или аппаратной реализации), и в настоящее время описание алгоритма А5 содержится во многих работах, посвященных алгоритмам поточного шифрования.
Генератор гаммы алгоритма А5, предназначенной для шифрования, состоит из трех линейных регистров сдвига различной длины: ЛРС-1 с характеристическим многочленом
f |
x x19 |
x18 |
x17 x14 1, ЛРС-2 с характеристическим |
многочленом |
f |
2 |
x x22 x21 |
1, |
|
1 |
|
|
|
|
|
|
|
|
|
ЛРС-3 |
с |
характеристическим |
многочленом |
f3 x x23 |
x22 x21 x8 |
1, |
f1 x , f2 x , f3 x GF 2 x .
ЛРС работают по принципу «stop-go», т.е. движутся или не движутся в зависимости от значения специальной функции
m x1,x2,x3 x1x2 x1x3 x2,x3 GF 2 x
на вход которой подаются значения заранее зафиксированных битов C1,C2,C3
соответственно регистров ЛРС-1, ЛРС-2 и ЛРС-3 Для значений битов выполнены равенства
C1 8,C2 10,C3 20.
Результатом работы функции m x1,x2,x3 является один бит, который определяет,
какие регистры будут сдвигаться, а какие нет, то есть если значение функции совпадает со значением бита регистра с фиксированным индексом, то данный регистр движется. Фак-
тически функция m x1,x2,x3 является мажорирующей функцией, принимающей значение,
совпадающее со значением большинства ее аргументов.
Мы можем записать алгоритм выработки шифрующей гаммы А5 аналитически следующим образом. Пусть в такт i ЛРС-j содержит значения s0, j,...,srj 1,j , где длины регистров rj определены равенствами r1 19,r2 22,r3 23.
Тогда один такт работы может быть описан следующим образом.
1.Определить i s18,1 s21,2 s22,3
2.Вычислить m s8,1,s10,2,s20,3 GF 2
3. Для всех j 1,3 проверить, выполнено ли равенство sCj , j . Если оно истинно,
то сдвинуть один раз JlPC-j.
Работа регистров по принципу «stop-go» обеспечивает нелинейность работы всего алгоритма выработки значений i .
Последовавшие за раскрытием алгоритма шифрования А5 работы показали, что стойкость алгоритма ниже, чем полный перебор неизвестных значений бит ключа. Обзор результатов по анализу алгоритма А5 может быть найден в литературе.
Алгоритм RC4
Поточный шифр RC4 был разработан в 1987 году Рональдом Ривестом (Ronald Rivest), одним из авторов схемы асимметричного шифрования RSA и сотрудником компании RSA Security. Сокращение RC4 официально обозначает «Rivest cipher 4» или «шифр Ривеста». Также как и алгоритм А5, алгоритм RC4 был засекречен своим автором - компанией RSA

8
Security, однако его описание появилось в сети Интернет и было верифицировано. Поточный шифр RC4 не использует в своей основе линейные регистры сдвига. Он
представляет собой конечный автономный автомат, начальное состояние которого определяется значением ключа. Алгоритм ориентирован на реализацию на 8-битных компьютерах и обладает очень высокой скоростью реализации. В настоящее время, несмотря на ряд уязвимостей, он применяется в некоторых широко распространённых стандартах и протоколах шифрования, например WEP, WPA, SSL и TLS.
Длина ключа алгоритма RC4 может быть произвольной, но кратной 8 битам. Изначальная аппаратура, изготовляемая RSA Security использовала 128 бит ключа на территории США и 40 бит — для экспортных изделий. Позднее, когда алгоритм RC4 стал известен широкой общественности и были проведены исследования, стало понятно, что длина ключа должна быть существенно больше.
Переменные, определяющие внутреннее состояние конечного автомата RC4, представляют собой:
1. |
Массив байт S S 0 ,...,S 255 , определяющий биективное отображение |
|
кольца Z28 в себя (перестановку элементов кольца Z28 ). Отображение задается |
|
следующим образом: x Z28 S x Z28 . |
2. |
Два счетчика Q1,Q2 Z28 . |
Алгоритм шифрования RC4 состоит из двух этапов: этапа инициализации внутренних состояний и этапа выработки гаммы, используемой для зашифрования/расшифрования сообщений.
Алгоритм инициализации
На вход алгоритма инициализации подается ключ К, представленный в виде последовательности байт k0,k1,...,kr 1 Z28 . Для ключей длины 128 бит r 16, а для ключей
длины 256 бит, соответственно, r 32.
Сам алгоритм заключается в следующем.
1.Для всех i 0,255 определить S i i.
2.Положить q 0.
3. |
Для всех i |
0,255 |
|
вычислить q q S i ki modr mod28 и обменять местами |
|
значения S i и S q . |
|||
4. |
Определить Q1 Q2 |
0. |
Приведенный алгоритм представляет собой хорошо известный алгоритм выработки случайной перестановки на множестве Z28 . На первом шаге вырабатывается тривиальная
перестановка, переводящая каждый элемент в себя. Далее происходит перемешивание тривиальной перестановки в зависимости от значений ключа К.
Если длина ключа равна 2048 = 256 • 8 бит, то ключ содержит ровно 256 байт k0,...,kr 1 .
Если значения ki выбраны случайно равновероятно из множества Z28 , то получающаяся
перестановка S также является случайной равновероятной.
Для ключей, длины которых менее 2048 бит, получающаяся перестановка S не является случайной и содержит информацию об исходном ключе К (это происходит потому, что значения ki используются при перемешивании перестановки S несколько раз). В ряде работ этот факт был использован для снижения трудоемкости опробования неизвестных значений
9
ключа.
Алгоритм выработки гаммы
Процесс шифрования/расшифрования в алгоритме RC4 состоит в изменении внутреннего состояния конечного автомата и выработке очередного значения гаммы. Этот процесс может быть записан следующим образом.
1.Изменить значение счетчика Q1 Q1 1 mod28 .
2.Изменить значение счетчика Q2 Q2 S Q1 mod28 .
3.Обменять местами значения S Q1 и S Q2 .
4.Вычислить индекс T S Q1 S Q2 mod28 и определить S T .
Значение может быть использовано для шифрования путем суммирования с символами открытого текста по модулю два.
При выработке одного значения внутреннее состояние изменяется тем же способом, что и при генерации исходной перестановки: меняются местами два значения массива S.
Проведенные исследования алгоритма RC4 показали, что для ключей малой длины существует сильная зависимость между значениями ключа ki и последовательностью
начальных значений вырабатываемой алгоритмом гаммы. Для уничтожения данной зависимости необходимо отбросить n первых знаков гаммы, например n=768, и использовать для шифрования значения n 1, n 2,... Алгоритм с отброшенными n байтами вырабатываемой
гаммы получил название RC4[n].
Алгоритм Grain-128
Для разработки современных эффективных алгоритмов поточного шифрования в 20042008 годах проводился конкурс eSTREAM (The ECRYPT Stream Cipher Project). В результате этого конкурса было отобрано 8 алгоритмов поточного шифрования, четыре из которых были рекомендованы для программной реализации, а четыре других — для аппаратной реализации. В результате повторного анализа результатов в 2012 году один из алгоритмов, предназначенных для аппаратной реализации, был исключен из перечня рекомендованных алгоритмов.
На настоящий момент среди победителей конкурса числятся следующие алгоритмы.
| Программная |
Аппаратная |
НС-128 |
Grain |
Rabbit |
MICKEY 2.0 |
Salsa20/12 |
Trivium |
SOSEMANUK |
|
Каждый алгоритм, включенный в перечень победителей конкурса, представляет собой генератор псевдослучайной последовательности (гаммы), инициализируемый двумя значениями:
секретным ключом (128 бит для программной реализации и 80 для аппаратной)
инициализационным вектором, или синхропосылкой
При этом предполагается, что синхропосылка является известной и передается по каналам связи в открытом виде вместе с зашифрованным сообщением. Использование синхропосылки обусловлено необходимостью защиты от методов анализа поточных шифров, использующих факт повторного шифрования одной и той же гаммой различных сообщений.
В этом разделе мы опишем модификацию одного из победителей конкурса eSTREAM - алгоритм Grain-128, прошедший экспертизу в 2012 году. Данный алгоритм представляет

10
собой фильтрующий генератор, комбинирующий значения, вырабатываемые двумя регистрами одного размера — линейным и нелинейным. Размер секретного ключа — 128 бит, размер синхропосылки - 96 бит.
Линейный регистр сдвига алгоритма Grain-128 состоит из 128 значений s0,...,s127 GF 2 , характеристический многочлен регистра определяется равенством
f x x128 x121 x90 x58 x47 x32 1 GF 2 x .
Нелинейный регистр сдвига алгоритма Grain-128 состоит из 128 значений b0,...,b127 GF 2 , многочлен g(х) обратной связи этого регистра представляет собой сумму
некоторой бент-функции и линейной функции, а также использует значения, вырабатываемые линейным регистром сдвига. Соотношения, задающие преобразование состояний нелинейного регистра сдвига в явном виде, задаются следующим образом:
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
Таким образом, множество внутренних состояний конечного автомата, реализуемого алгоритмом Grain-128, равно 256 бит.
Фильтрующая функция алгоритма Grain128 задается равенством h x0,...,x8 x0x1 x2x3 x4x5 x6x7 x0x4x8 GF 2 x ,
а |
значения |
переменных x0,...,x8 |
определяются значениями |
двух бит |
нелинейного |
||||||||
регистра сдвига и семью битами линейного регистра |
|
|
|
|
|
|
|||||||
x0 |
|
x1 |
|
x2 |
x3 |
x4 |
x5 |
x6 |
|
x7 |
|
x8 |
|
bi+12 |
|
si+8 |
|
si+13 |
si+20 |
bi+95 |
si+42 |
si+60 |
|
si+79 |
|
si+95 |
|
Окончательно, значение одного знака гаммы i определяется равенством
i bi j h x si 93 j A
где А = {2,15,36,45,64,73,89}.
Схематично, процесс выработки гаммы шифратором Grain-128 можно изобразить следующим образом.
Нелинейный регистр |
Линейный регистр |
h(x)
Алгоритм шифрования Grain-128 состоит из двух этапов: этапа инициализации внутренних переменных и собственно этапа выработки гаммы и шифрования. Этап инициализации заключается в следующем.
1. Секретный ключ К, представленный в виде последовательности бит
k0,...,k127 GF 2 , |
помещается в |
нелинейный |
регистр, т.е. bi ki |
для |
всех |
|||||
i |
|
. |
|
|
|
|
|
|
|
|
0,127 |
|
|
|
|
|
|
||||
2. Синхропосылка |
представляется |
в |
виде |
последовательности |
бит |
|||||
iv0,...,iv95 GF 2 |
и помещается в первые биты линейного регистра, |
т.е. si |
ivi |
|||||||
для всех i |
|
. |
|
|
|
|
|
|
||
0,95 |
|
|
|
|
|
|