Интернет магазин китайских планшетных компьютеров



Компьютеры - Поточный шифр - Поточные шифры на регистрах сдвига с линейной обратной связью

22 января 2011


Оглавление:
1. Поточный шифр
2. Режим гаммирования для поточных шифров
3. Классификация поточных шифров
4. Поточные шифры на регистрах сдвига с линейной обратной связью
5. Потоковые шифры основанные на РСЛОС. Усложнение
6. Основные отличия поточных шифров от блочных
7. Проектирование поточных шифров
8. Криптоанализ. Атаки на поточные шифры



Теоретическая основа

Есть несколько причин использования линейных регистров сдвига в криптографии:

  • высокое быстродействие криптографических алгоритмов
  • применение только простейших операций сложения и умножения, аппаратно реализованных практически во всех вычислительных устройствах
  • хорошие криптографические свойства
  • легкость анализа с использованием алгебраических методов за счет линейной структуры

Определение: Регистр сдвига с линейной обратной связью длины L состоит из L ячеек пронумерованных ~0,1,2,\dots  L-1,каждая из которых способна хранить 1 бит и имеет один вход и один выход; и синхросигнала, который контролирует смещение данных. В течение каждой единицы времени выполняются следующие операции:

  • содержимое ячейки ~L-1 формирует часть выходной последовательности;
  • содержимое ~i-той ячейки перемещается в ячейку ~i+1 для любого ~i, ~0<i<L.
  • новое содержимое ячейки ~0 определяется битом обратной связи, который вычисляется сложением по модулю 2 с определёнными коэффициентами битов ячеек ~0,1,2,\dots L-1.
Регистр сдвига с линейной обратной связью.

На первом шаге:  S_L=c_1 \cdot S_{L-1}\oplus c_2 \cdot S_{L-2}\oplus \dots \oplus c_L \cdot S_0.

На втором шаге:  S_{L+1}=c_1 \cdot S_L\oplus c_2 \cdot S_{L-1}\oplus \dots \oplus c_L \cdot S_1.

Следующее соотношение описывает в общем виде работу РСЛОС:

S_j=c_1 \cdot S_{j-1}\oplus c_2 \cdot S_{j-2}\oplus \dots\oplus  c_L \cdot S_{j-L}.
Если мы запишем во все ячейки биты равны нулю, то система будет генерировать последовательность, состоящую из всех нулей. Если записать ненулевые биты, то получим полубесконечную последовательность. Последовательность определяется коэффициентами  c_1,c_2,\dots ,c_L.
Посмотрим, каким может быть период  ~T такой системы:
Число ненулевых заполнений:~2^L-1. Значит,  T\leqslant 2^L-1.
После возникновения одного заполнения, которое было раньше, процесс начнёт повторяться. Процесс заполнения регистра, как показано выше, представим линейным разностным уравнением. Перенесём все члены в одну часть равенства, получим:
 S_{j}\oplus c_{1}\cdot S_{j-1}\oplus c_{2}\cdot S_{j-2}\oplus\dots\oplus c_{L}\cdot S_{j-1}=0.

Обозначим:  ~S_j=D^{-j}. Тогда:
\cdot D^{-j}.

 C = 1  \oplus  c_1\cdot D  \oplus  c_2 \cdot D^2  \oplus \dots \oplus  c_L\cdot D^L.

Важным свойством этого многочлена является - приводимость.
Определение:
Многочлен называется приводимым, если он может быть представлен как произведение двух многочленов меньших степеней с коэффициентами из данного поля. Если такое представление не имеет место, то многочлен называется неприводимым.
Если многочлен ~C является неприводимым и примитивным, то период будет совпадать с максимально возможным периодом, равным  ~2^L-1.

Пример.

Пример: Возьмём неприводимый примитивный многочлен  ~C=D^3+D^2+1. Этот многочлен можно записать, как  ~ – выписаны степени, при которых стоят ненулевые коэффициенты.
Запишем в исходном состоянии в ячейки ~0 0 1 и определим длину периода генератора:

Таблица. Определение периода генератора
Обратная связь Ячейка0 Ячейка1 Ячейка2
1 0 0 1
0 1 0 0
1 0 1 0
1 1 0 1
1 1 1 0
0 1 1 1
0 0 1 1
1 0 0 1

Период генератора равен ~7. На выходе генератора буде последовательность:  1001011 1001011 1001011\dots
Приведём примеры некоторых примитивных многочленов по модулю 2:

,,,,,,,,,\dots

Линейная сложность

Линейная сложность бинарной последовательности – одна из самых важных характеристик работы РСЛОС. Поэтому остановимся на этой теме поподробнее.
Прежде чем дать определение линейной сложности введём некоторые обозначения.
~S - бесконечная последовательность с членами S1,S2,S3,\dots
~S_n – конечная последовательность длины ~n, членами которой являются S_1,S_2,S_3,\dots,S_{n-1}.
Говорят, что РСЛОС генерирует последовательность ~S, если существует некоторое исходное состояние, при котором выходная последовательность РСЛОС совпадает с ~S. Аналогично, говорят, что РСЛОС генерирует конечную последовательность ~S_n, если существует некоторое начальное состояние, для которого выходная последовательность РСЛОС имеет в качестве первых n членов члены последовательности ~S_n.
Наконец дадим определение линейной сложности бесконечной двоичной последовательности.
Определение: Линейной сложностью бесконечной двоичной последовательности ~S называется число ~L, которое определяется следующим образом:

  • Если ~S – нулевая последовательность ~S=0,0,0,0,\dots,, то ~L=0.
  • Если не существует РСЛОС, который генерирует ~S, то ~L равно бесконечности.
  • Иначе, ~L есть длина самого короткого РСЛОС, который генерирует ~S.

Определение:
Линейной сложностью конечной двоичной последовательности ~S_n называется число ~L, которое равно длине самого короткого РСЛОС, который генерирует последовательность, имеющую в качестве первых ~n членов ~S_n.
Свойства линейной сложности: Пусть ~S и ~K – двоичные последовательности. Тогда:
1. Для любого ~n>0 линейная сложность подпоследовательности ~S_n удовлетворяет неравенствам  0\leqslant L \leqslant n.
2. ~L=0 тогда и только тогда, когда ~S_n – нулевая последовательность длины ~n.
3. ~L=n тогда и только тогда, когда ~S_n=0,0,0, \dots ,1.
4. Если ~S – периодическая с периодом ~N, тогда ~L\leqslant N.
5.  L\leqslant L + L.
Эффективным алгоритмом определения линейной сложности конечной двоичной последовательности является алгоритм Берлекемпа-Месси.



Просмотров: 14591


<<< Поросячья латынь
Простая литорея >>>