ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 02.03.2021
Просмотров: 910
Скачиваний: 2
В отличие от блочных шифров, функции Еk которых, как уже отмечалось, строятся по итерационному принципу, при проектировании поточных шифров используется огромное множество приемов и методов, классифицировать которые очень сложно. Можно выделить все же следующие:
-
работа по принципу stop-and-go;
-
перемешивание двух ПСП под управлением третьей;
-
многоступенчатая структура;
-
использование S-блоков с изменяющейся в процессе работы таблицей замен;
-
использование блоков пространственного сжатия информации;
-
использование в качестве строительных блоков генераторов, функционирующих в конечных полях.
Одним из лучших поточных шифров является RC4 — шифр с переменным размером ключа, разработанный Р. Ривестом. Криптоалгоритм работает в режиме OFB, т. е. поток ключевой информации не зависит от открытого текста. Используются два 8-разрядных счетчика Q1 и Q2 и 8-разрядный блок замены (S-блок) (рис. 2.9), таблица замен имеет размерность 8 х 256 и является перестановкой (зависящей от ключа) двоичных чисел от 0 до 255.
Рис. 2.9. Схема генератора ПСП RC4
Рассмотрим алгоритм работы 8-разрядного генератора ПСП RC4, точнее, процедуру генерации очередного байта гаммы. Пусть S(i) и γ - содержимое ячейки с адресом i таблицы замен S-блока и очередной байт гаммы.
Один такт работы генератора ПСП RC4:
-
Такт работы первого счетчика:
Q1 = (Q1 + 1) mod 28.
-
Такт работы второго счетчика:
Q2 = (Q2 + S(Q1)) mod 28.
-
Ячейки таблицы замен S-блока с адресами Q1 и Q2 обмениваются своим содержимым:
S(Q1)↔S(Q2).
-
Вычисление суммы содержимого ячеек таблицы замен S-блока с адресами Q1 и Q2:
Т = (S(Q1) + S(Q2)) mod 28.
-
Считывание содержимого ячейки таблицы замен S-блока с адресом T:
γ = S(T).
Таблица замен S-блока медленно изменяется при использовании, при этом счетчик Q1 обеспечивает изменение каждого элемента таблицы, a Q2 гарантирует, что элементы таблицы изменяются случайным образом.
Криптографически стойкие генераторы ПСП могут быть построены на основе использования в цепи обратной связи так называемых односторонних функций. Понятие односторонней функции является базовым для нового направления - криптографии с открытым ключом.
По заданному аргументу х ∈ X легко вычислить значение такой функции F(x), в то же время определение х из F(x) трудновычислимо, т. е. нет алгоритма для решения этой задачи с полиномиальным временем работы. Теоретически х по известному значению F(x) можно найти всегда, проверяя по очереди все возможные значения x до тех пор, пока соответствующее значение F(x) не совпадет с заданным. Однако практически при значительной размерности множества X такой подход неосуществим.
Односторонней функцией называется функция F: X → Y, обладающая двумя свойствами:
-
существует полиномиальный алгоритм вычисления значений F(x);
-
не существует полиномиального алгоритма инвертирования функции F.
До сих пор ни для одной функции, кандидата на звание односторонней, не доказано свойство 2.
Примером кандидата на звание односторонней функции является модульное возведение в степень, т. е. функция F(x) = ωx mod р, где р - большое простое число, ω - примитивный элемент поля GF(p).
Задача вычисления функции, обратной модульному возведению в степень, называется задачей дискретного логарифмирования. На сегодняшний, день неизвестно ни одного эффективного алгоритма вычисления дискретных логарифмов больших чисел.
Односторонняя функция в качестве функции зашифрования неприменима, так как, хотя F(x) - надежно зашифрованное сообщение х, никто, в том числе и законный получатель, не сможет восстановить х. Обойти эту проблему можно с помощью односторонней функции с секретом. Такова, например, функция Fk: X → Y; имеющая обратную Fk-1: Y → X, однако узнать обратную функцию только по Fk без знания секрета k невозможно.
Таким образом, односторонней функцией с секретом к, называется функция Fk: X → Y, зависящая от параметра k и обладающая тремя свойствами:
-
при любом k существует полиномиальный алгоритм вычисления значений Fk(x);
-
при неизвестном k не существует полиномиального алгоритма инвертирования Fk;
-
при известном k существует полиномиального алгоритма инвертирования Fk.
Функцию Fk можно использовать для зашифрования информации, а обратную ей функцию Fk-1 - для расшифрования.
При этом подразумевается, что тот, кто знает, как зашифровывать информацию» вовсе не обязательно должен знать, как расшифровывать. Так же как и в случае с односторонней функцией, вопрос о существовании односторонних функций с секретом открыт. Для практической криптографии найдено несколько функций, кандидатов на звание односторонней функции с секретом. Для них второе свойство не доказано, однако известно, что задача инвертирования эквивалентна некоторой хорошо изученной и давно известной трудной математической задаче. Это означает, что второе требование к односторонней функции с секретом заменяется более слабым условием: при неизвестном k, вероятно, не существует полиномиального алгоритма инвертирования Fk-1.
2.3. ЛИНЕЙНЫЕ ГПСП
Важнейшим классом ПСП являются последовательности, формируемые генераторами на основе регистров сдвига с линейными обратными связями - LFSR (Linear Feedback Shift Register) [8]. Используемый при их анализе математический аппарат - теория линейных последовательностных машин и теория конечных полей (полей Галуа). Основными достоинствами этих генераторов являются:
-
простота аппаратной и программной реализации;
-
максимальное быстродействие;
-
хорошие статистические свойства формируемых последовательностей;
-
возможность построения на их основе генераторов, обладающих свойствами, ценными при решении специфических задач защиты информации (формирование последовательностей произвольной длины, формирование последовательностей с предпериодом, формирование ПСП с произвольным законом распределения, построение генераторов, обладающих свойством самоконтроля и т. п.).
LFSR, к сожалению, не являются криптостойкими, поэтому применяются при решении задач защиты информации от умышленных деструктивных воздействий лишь в качестве строительных блоков.
Наиболее известные примеры использования LFSR и математического аппарата полей Галуа:
-
CRC-коды - идеальное средство контроля целостности информации при случайных искажениях информации;
-
реализация концепции самотестирования БИС и СБИС;
-
поточные шифры А5, PANAMA, SOBER, SNOW и др.;
-
блочный шифр RIJNDAEL, принятый в 2001 г. в качестве стандарта криптографической защиты XXI века - AES.
Исходная информация для построения двоичного LFSR - так называемый образующий многочлен. Степень этого многочлена определяет разрядность регистра сдвига, а ненулевые коэффициенты - характер обратных связей. Так, например, многочлену
Ф(х) = x8 + x7 + x5 + x3 + 1
соответствуют два устройства, показанные на рис. 2.10 и 2.11. В общем случае двоичному образующему многочлену степени N
Ф(х)
=
, aN=a0=1,
aj∈{0,1},
j=1,(N-1)
соответствуют устройства, показанные на рис. 2.12, a (LFSR1 – схема Фибоначчи) и б (LFSR2 - схема Галуа).
Рис. 2.10. Генератор Фибоначчи (LFSR1), соответствующий
Ф(х) = х8 + х7 + х5 + х3 + 1, и его диаграмма состояний
Рис. 2.11. Генератор Галуа (LFSR2), соответствующий
Ф(х) = х8 + х7 + х5 + х3 + 1, и его диаграмма состояний
Рассмотренные устройства могут использоваться только для генерации битовых ПСП. Если необходима n-разрядная последовательность, можно предложить два варианта действий. В первом случае выбираем образующий многочлен степени N > п (еще лучше N >> n), выбираем схему LFSR1 или LFSR2 и считываем очередной n-разрядный двоичный код с соседних разрядов регистра сдвига каждые п тактов работы LFSR. Во втором случае синтезируем схему устройства, работающего в п раз быстрее исходного LFSR (иначе говоря, выполняющего за один такт своей работы преобразования, которые в исходном LFSR выполняются за п тактов). Этот вариант особенно эффективен в тех случаях, когда образующий многочлен генератора Фибоначчи имеет вид Ф(х) = xN + xi + 1, а i кратно п (рис. 2.13).
Рис. 2.12. Общий вид LFSR, соответствующих
Ф(х) = хN + аN-1хN-1 + ... + аiхi + ... + а2х2 + а1х + 1:
a - схема генератора Фибоначчи; б - схема генератора Галуа.
БУ - блоки умножения на aj ∈ {0,1}; qj(t) ∈ {0,1};
при aj = 1 умножение на aj равносильно наличию связи; при aj = 0 умножение на aj равносильно отсутствию связи
Общий вид генератора двоичных последовательностей, соответствующего уравнению
Q(t + 1) = Tk Q(t),
где Q(t) и Q(t+1) - состояния регистра генератора ПСП соответственно в моменты времени t и t+1 (до и после прихода синхроимпульса); T - квадратная матрица порядка N вида
,
N - степень образующего многочлена
k - натуральное, показан на рис. 2.14. В частном случае при k = 1, получаем либо схему генератора Фибоначчи (T = T1), либо схему генератора Галуа (T = T2).
Рис. 2.13. Байтовый генератор ПСП:
а
- битовый генератор Фибоначчи,
соответствующий многочлену Ф(х)
=
х65
+x32
+1;
б
- байтовый генератор Фибоначчи,
соответствующий
Ф(х)
= х65
+ х32
+ 1, qi
-
состояние i-гo
разряда LFSR1,
i
=

Рис. 2.14. Генератор двоичных последовательностей, соответствующий уравнению Q(t +1) = TkQ(t)
Величина,
на которую происходит умножение в каждом
блоке умножения
(БУ), определяется соответствующим
коэффициентом
aij
сопровождающей
матрицы:
Если аij = 0, это эквивалентно отсутствию связи между выходом i-го разряда регистра генератора и входом j-го сумматора по модулю два. Если аij = 1, это эквивалентно наличию связи между выходом i-го разряда регистра генератора и входом j-го сумматора по модулю два.
Так как нулевое состояние регистра ГПК является запрещенным, максимально возможное число состояний устройства, а значит, и максимально возможная длина формируемой двоичной последовательности, снимаемой с выхода любого из триггеров, равны 2N - 1. В этом случае диаграмма состояний генератора состоит из одного тривиального цикла и цикла максимальной длины 2N - 1.
Многочлен Ф(х) степени N называется примитивным, если он не делит нацело ни один многочлен вида xS - 1, где S < 2N - 1. Примитивные многочлены существуют для любого N. Показателем многочлена Ф(х) называется наименьшее натуральное число е, при котором хе - 1 делится на Ф(х) без остатка.
Пусть Ф(х) - примитивный многочлен степени N, тогда справедливо следующее утверждение.
Свойство 1.1. Формируемая последовательность имеет максимальный период S = 2N - 1 тогда и только тогда, когда наибольший общий делитель чисел S и k равен 1 (т. е. S и k взаимно просты).
Следствие. При k = 1 примитивность Ф(х) является необходимым и достаточным условием получения последовательности максимальной длины.
Последовательность максимальной длины принято называть М-последовательностью, а формирующий ее генератор - генератором М-последовательности. Именно генераторы M-последовательностей обычно используются для формирования ПСП.
Каждая матрица V имеет характеристический многочлен φ(х) которым является определитель матрицы V - хЕ, т. е. φ(х) = |V - хЕ|, где Е - единичная матрица. Многочлен Ф(х) определяет только структуру генератора, свойства же последнего зависят именно от φ(х).
Свойство 1.2. Каждая квадратная матрица удовлетворяет своему характеристическому уравнению, т. е. φ(V) = 0.
Свойство 1.3. Характеристический и образующий многочлен генератора связаны следующим соотношением:
φ(х) = Ф(x-1)xN,
т. е. являются взаимно обратными.
Примитивность φ(x) автоматически означает примитивность Ф(х) и наоборот.
Децимацией последовательности {qi(t)} по индексу k называется формирование новой последовательности {q*i(t)}, состоящей из k-х элементов {qi(t)}, т. е. q*i(t) = qi(kt). Если период последовательности, полученной в результате децимации М-последовательности, равен максимальному, децимация называется собственной или нормальной.
Последовательность, снимаемая с выхода i-го триггера генератора, изображенного на рис. 2.14, является децимацией по индексу k последовательности, снимаемой с выхода i-го триггера генераторов, изображенных на рис. 2.12. Если Q - начальное состояние генератора, то последовательности состояний, в которых будут находиться устройства в следующие моменты времени, имеют вид
Q, QV, QV2, QV3, ...
(для устройства, изображенного на рис. 2.8) и
Q, QT, QT2, QT3, ...
(для устройств, изображенных на рис. 2.12, где Т = Т1 (а) или Т = Т2 (б)). Учитывая, что V = Tk, можно сделать вывод, что в генераторе, показанном на рис. 2.14, за один такт осуществляются преобразования, которые в генераторах, показанных на рис. 2.12, происходят за k тактов. Таким образом, устройство, показанное на рис. 2.14, в котором содержимое первых k триггеров (при k ≤ N) полностью обновляется в каждом такте, может использоваться для генерации последовательности k-разрядных двоичных кодов, что нельзя сказать про устройства, показанные на рис. 2.12, которые формируют лишь сдвинутые копии одной и той же двоичной последовательности.
2.4. НЕЛИНЕЙНЫЕ ГПСП [7]
Генераторы последовательностей длиной pN.
Исключение запрещенного нулевого состояния всех разрядов генератора двоичных М-последовательностей позволяет увеличить период формируемой последовательности и сделать его максимально возможным, равным pN, и повысить ее качество. Например, при р = 2 вероятности появления 0 и 1 становятся равными 1/2. Последовательности длиной 2N называются последовательностями де Брейна (De Bruijn). Рассмотрим схему Фибоначчи. Уравнения работы генератора последовательности длиной 2N имеют вид
Qj(t+1)
= Qj-1(t),
j=
.
Пусть
p
= 2n.
Рассмотрим
формирование последовательности длиной
2nN,
k
=
1.
Выберем
α*
GF(p),
α* ≠ 0.
Пусть
Тогда уравнения работы генератора последовательности длиной pnN имеют вид
Qj(t+1)=Qj-1(t),
j
=
.
Рассмотрим
формирование
последовательности длиной pN,
р
≠
2, в общем случае при
произвольном k.
Выберем αi*
GF(p),
αi*
≠ 0, j
=
.
Пусть
Тогда уравнения работы генератора последовательности длиной pN имеют вид
где aji - коэффициенты матрицы Tk.
Пусть
p
= 2. Рассмотрим формирование последовательности
длиной 2nN
при произвольном k.
Выберем αi*
GF(p),
αi*
≠ 0, j
=
.
Пусть
Тогда уравнения работы генератора последовательности длиной 2nN имеют вид
Генераторы ПСП с предпериодом.
Рассмотрим принципы построения генераторов последовательностей произвольной длины.
Алгоритм построения генератора p-ичной последовательности длины S < pN:
-
Выбирается примитивный многочлен Ф(х) степени N.
-
Фиксируется произвольное ненулевое состояние Q0 генератора.
-
Моделируется t=pN-S тактов работы генератора ПСП и определяется состояние Qt.
-
Выполняется поразрядная операция XOR над кодами Q1 и Qt. Единичные биты результата определяют номера тех разрядов генератора, сигналы на входах которых необходимо инвертировать, когда генератор находится в состоянии Q0.
-
Управляемые инверторы реализуются на дополнительных элементах XOR, число которых и место в схеме генератора определяются результатом операции Q1
Qt.