Основные сведения
Поточные шифры характерны тем, что шифруют информацию по одному биту за такт шифрования. Учитывая, что среди операций с битами существуют только две обратимые – сумма по модулю 2 и логическое отрицание, то выбор принципа шифрования очевиден – биты открытого текста должны складываться с битами ключевой последовательности с помощью операции Å:
ci = mi Å ki.
Дешифрование происходит аналогичным образом:
mi = ci Å ki.
Учитывая свойства операции сложения по модулю 2, можно отметить, что выполняется:
ki = ci Å mi,
поэтому криптостойкость поточных шифров полностью зависит от качества генератора потока ключей. Очевидно, что если поток ключей будет включать в себя только двоичные нули, то шифротекст будет представлять собой точную копию открытого текста. Поток ключей поточных шифров принято обозначать греческой буквой g (гамма), вследствие чего подобные шифры получили название шифров гаммирования. Рассмотрим основные методы формирования g в современной потоковой криптографии.
Очень популярны для решения этой цели регистры сдвига с обратной связью. Он представляет собой (рис.1) последовательность бит, которая на каждом такте шифрования сдвигается вправо на 1 разряд, при этом выход из крайнего правого бита является выходом генератора, а на вход крайнего левого бита подается значение, вычисляемое как некоторая функция от отдельных битов регистра. Ключ шифрования поточного шифра заносится в регистр перед началом генерации гаммы.
Самым простым способом формирования обратной связи является суммирование по модулю 2 отдельных разрядов регистра. На рис.2 изображен регистр сдвига с линейной обратной связью,
![]() |
![]() |
Рассмотрим работу ЛРС на примере трехразрядного регистра, структура которого приведена на рис.3
Занесем в регистр начальное значение 010 и посмотрим, какие значение получим на выходе гаммы (табл.1).
Таблица 1. Результат работы генератора гаммы на основе ЛРС
Номер такта | Значения битов ЛРС | Бит гаммы | ||
нач.сост | - | |||
Из таблицы видно, что состояние ЛРС повторяется через 7 тактов (начальное состояние ЛРС совпадает с его состоянием на 7-м такте). Повтор состояния ЛРС означает, что и гамма будет периодически повторяться. Повторение гаммы снижает криптостойкость поточных шифров, позволяя криптоаналитику проводить анализ шифротекстов, полученных кодированием на одной и той же гамме. Поэтому при проектировании структуры ЛРС встает проблема достижения максимального периода повтора ЛРС. Для ЛРС длиной n бит максимальный период составляет 2 n -1 тактов (состояние, когда все биты равны нулю, недопустимо, поскольку ЛРС любой структуры не выходит из этого состояния, зацикливаясь в нем). Построение ЛРС оптимальной структуры с точки зрения периода повторения гаммы имеет четкую математическую основу в виде теории неприводимых полиномов. Структура ЛРС описывается многочленом вида:
bn*xn+bn-1*xn-1+bn-2*xn-2+…+b2*x2+ b1*x+ 1, (1)
где bi =0, если i -й бит не участвует в обратной связи, и bi =1, если участвует. ЛРС будет иметь максимально возможный период повторения гаммы, если описывающий его многочлен не раскладывается на произведение многочленов меньшей степени, то есть является примитивным по модулю 2. В контексте (1) структуру ЛРС принято коротко обозначать записью вида (43, 21, 5, 4, 1, 0), что в данном конкретном случае означает построение обратной линейной связи на сорок третьем, двадцать первом, пятом, четвертом и первом разрядах ЛРС.
Основной проблемой ЛРС является их нестойкость к атаке на основе известного открытого текста. Даже если неизвестна внутренняя структура ЛРС, криптоаналитик с помощью алгоритма Берлекэмпа-Мэсси по известным 2 N битам открытого текста и соответствующего шифротекста имеет возможность построить ЛРС, порождающую подобную последовательность (проблема линейной сложности ЛРС). Поэтому современные поточные шифры строятся на основе нелинейных схемах объединения ЛРС, которые добавляют в структуру нелинейные элементы: логическое сложение и логическое умножение. Наиболее популярными классами нелинейных схем подключения на сегодня являются фильтрующие, комбинирующие и динамические поточные шифры [4].
![]() |
Фильтрующие схемы строятся с использованием дополнительной комбинационной схемы – фильтра – на выходах некоторых бит ЛРС (рис.4). Выход комбинационной схемы и является гаммой.
Комбинирующие схемы также используют комбинационную схему с нелинейными преобразованиями бит, но на вход этой комбинационной схемы подаются выходы нескольких ЛРС (рис.5).
![]() |
Динамические схемы объединения ЛРС предполагают отношения «главный-подчиненный» между отдельными регистрами. Например, на схеме рис. 6. зависимости от выхода управляющего ЛРС на общий выход гаммы подается либо выход первого, либо второго ЛРС.
![]() |
Существуют также схемы динамического подключения ЛРС с использованием управляемого тактирования, когда сдвиг управляемого ЛРС зависит от состояния некоторого бита управляющего ЛРС.
В качестве примера поточного шифра, построенного на основе регистров сдвига, можно привести алгоритм A5, используемый для кодирования в стандарте GSM. A5 включает 3 ЛРС длиной 19, 22 и 23 бита на выход гаммы подается сумма по модулю 2 выходов всех регистров. Используется динамическая схема (рис.7), когда каждый регистр тактируется в зависимости от состояния средних разрядов всех трех регистров сдвига.
![]() |
Каждый регистр содержит биты синхронизации: 8 (R1), 10 (R2), 10 (R3). Для управления тактированием вычисляется функция F = x&y|x&z|y&z, где x, y и z — биты синхронизации R1, R2 и R3 соответственно. Сдвигу подвергаются лишь те регистры, у которых бит синхронизации равен F.
При построении нелинейных схем на основе нескольких ЛРС необходимо помнить о корреляционной зависимости между выходом общего генератора гаммы и выходом конкретного ЛРС. Она может выражаться в том, что выход всей схемы и выход некоторого ЛРС, входящего в ее состав, совпадают существенно более чем в 50 % случаев. Если из-за слабости предложенной схемы такая зависимость существует, то анализ всего генератора гаммы можно свести к анализу лишь одного ЛРС, что, как уже упоминалось выше, несложно.
Еще одной разновидностью сдвиговых регистров, использующихся для генерации потока ключей в потоковых шифрах, являются сдвиговые регистры с обратной связью по переносу (РОСП). Структура подобного регистра приведена на рис. 8.
В регистрах данного типа значение младшего бита формируется после суммированием всех бит обратной связи и содержимого регистра переноса. Остаток от деления на 2 получившейся суммы записывается в младший бит регистра, а результат деления нацело – в регистр переноса. Размер регистра переноса в битах должен быть равен [log2 t ], где t – количество ответвлений обратной связи.
Рассмотрим принцип работы РОСП на примере 4 битового регистра со структурой, изображенной на рис. 89
![]() |
Предположим, что его начальное состояния равно 101, а начальное состояние регистра переноса равно 1. Изменения внутреннего состояния РОСП и его выхода можно проследить по таблице 2.
Таблица 2. Результат работы генератора гаммы на основе РОСП
Номер такта | Значения битов РОСП | Регистр переноса | Бит гаммы | |||
нач.сост. | ||||||
Максимальный период РОСП равен q -1, где q – целое число связи, его значение вычисляется по отводам обратной связи:
q = q1*2+ q2*22+ q3*23+…+ qn-1*2n -1,
где qi отсчитываются от левого края РОСП [5]. В связи с эти РОСП обозначают (n1, n2, n3, n4, …), где ni – номера тех разрядов, от которых строится обратная связь.
Необходимо отметить, что не все начальные состояния позволяют получить максимальный размер повторения гаммы. В связи с этим рекомендуется при выбранном начальном ключе (начальном состоянии РОСП) выполнить пробный запуск и, если поток гаммы не вырождается в бесконечный поток двоичных 0 (или 1), использовать данный ключ не практике.
RC4 — это потоковый шифр, широко применяющийся в различных системах защиты информации в компьютерных сетях (например, в протоколе SSL и для шифрования паролей в Windows NT).Шифр разработан компанией RSA Security Inc. и для его использования требуется лицензия. Автором RC4 является Рональд Ривест (Ronald Rivest). Алгоритм RC4 строится, как и любой потоковый шифр, на основе параметризованного ключом генератора псевдослучайных битов с равномерным распределением. Основные преимущества шифра — высокая скорость работы и переменный размер ключа. Типичная реализация выполняет 19 машинных команд на каждый байт текста.
Ядро алгоритма состоит из функции генерации ключевого потока. Эта функция генерирует последовательность битов, которая затем объединяется с открытым текстом посредством суммирования по модулю два. Дешифрация состоит из регенерации этого ключевого потока и суммирования его с шифрограммой по модулю два, восстанавливая исходный текст. Другая главная часть алгоритма — функция инициализации, которая использует ключ переменной длины для создания начального состояния генератора ключевого потока.
RC4 — фактически класс алгоритмов, определяемых размером его блока. Этот параметр n является размером слова для алгоритма. Обычно, n = 8, но в целях анализа можно уменьшить его. Однако для повышения безопасности необходимо увеличить эту величину. Внутреннее состояние RC4 состоит из массива размером 2 n слов и двух счетчиков, каждый размером в одно слово. Массив известен как S -box, и далее будет обозначаться как S. Он всегда содержит перестановку 2 n возможных значений слова. Два счетчика обозначены через i и j.
Алгоритм инициализации RC4 приведен ниже. Этот алгоритм использует ключ Key, имеющий длину l байт. Инициализация начинается с заполнения массива S, далее этот массив перемешивается путем перестановок определяемых ключом.
Начальное заполнение массива S:
for i = 0 to 2n − 1
S [i] = i
Следующий этап – перестановка элементов S, параметризуемая ключом:
j = 0 for i = 0 to 2n − 1:
j=(j+S[i]+Key[i])mod2n
Перестановка (S [i], S [j])
Генератор ключевого потока RC4 переставляет значения, хранящиеся в S, и каждый раз выбирает различное значение из S в качестве результата. В одном цикле RC4 определяется одно n -битное слово K из ключевого потока, которое в последующем суммируется с исходным текстом для получения зашифрованного текста.
Инициализация: i = 0 j = 0
Цикл генерации: i = (i + 1) mod 2n
j = (j + S [i]) mod 2n
Перестановка (S [i], S [j])
Результат: K = S [(S [i] + S [j]) mod 2n]
Алгоритм RC4 устойчив к дифференциальному и линейному криптоанализу, в нем нет коротких циклов, он нелинеен. При n =8 RC4 может находиться в примерно 21700(256! * 2562) различных состояниях [5].
WAKE - сокращение от Word Auto Key Encryption (Автоматическое шифрование слов ключом). Алгоритм выдает поток 32-битовых слов, которые с помощью XOR могут быть использованы для получения шифротекста из открытого текста или открытого текста из шифротекста.
WAKE работает в режиме CFB, для генерации следующего слова ключа используется предыдущее слово шифротекста. Алгоритм также использует S -блок из 256 32-битовых значений. Содержимое S -блока наполняется по следующему принципу: старший байт всех элементов представляет собой перестановку всех возможных байтов, а в 3 младших байта заносятся случайные значения.
Генерация старших байтов элементов S -блока может быть выполнено аналогично алгоритму RC4. В младшие байты блоков Si заносятся случайные значения.
Затем проинициализируем четыре регистра с использованием того же или иного ключа: a0, b0, c0 и d0. Поток ключей совпадает со значением регистра di: Ki = di.
Слово шифротекста Ci представляет собой XOR слова открытого текста Pi с Ki. На каждом шаге обновляются четыре регистра:
ai+i = M(ai, di )
bi+i = M(ai, di )
ci+i = M(bi, di )
di+i = M(ci, di )
Функция M выполняет следующие преобразования:
M(x,y) = (x + y) >> 8 Å S (x + у) mod 255
Самым ценным качеством WAKE является его скорость. Однако он чувствителен к вскрытию с выбранным открытым текстом или выбранным шифротекстом.
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами блочного симметричного шифрования в настоящих указаниях, а также в [2] и конспектах лекций.
2. Получите вариант задания у преподавателя.
3. Напишите программу согласно варианту задания.
4. Отладьте разработанную программу и покажите результаты работы программы преподавателю.
5. Составьте отчет по лабораторной работе
Содержание отчета
Отчет по лабораторной работе должен содержать следующие сведения:
- название и цель работы;
- вариант задания;
- листинг разработанной программы с комментариями;
- результаты работы программы.
![]() |
Варианты заданий
![]() |
![]() | ![]() | ||
![]() |
![]() |
9. Реализовать в программе поточное кодирование текста, вводимого с клавиатуры, с помощью алгоритма RC4 c размером блока n=16 бит.
10. Реализовать в программе поточное кодирование текста, вводимого с клавиатуры, с помощью алгоритма WAKE.
11. Реализовать в программе поточное кодирование текста, вводимого с клавиатуры, с помощью алгоритма A5.
Контрольные вопросы
1. Какие методы формирования потока ключей для поточных шифров вам известны?
2. Что такое регистр сдвига с линейной обратной связью?
3. Каков критерий оптимальности структуры регистра сдвига с линейной обратной связью?
4. Для чего регистры сдвига с линейной обратной связью объединяют в нелинейные схемы подключения?
5. Что такое проблемы линейной сложности и корреляционной связи схем, использующих сдвиговые регистры с линейной обратной связью.
6. Объясните принцип работы сдвигового регистра с обратной связью по переносу.
7. Каков критерий оптимальности структуры регистра сдвига с обратной связью по переносу?
Л и т е р а т у р а
1. "Алферов А.П., Зубов А.Ю., Кузьмин А.С. Основы криптографии. - М: Гелиос АРВ", 2005 г. -480 стр.
2. Лясин Д.Н., Саньков С.Г. Методы и средства защиты компьютерной информации (учебное пособие). – Волгоград, Издательство ВолгГТУ РПК "Политехник”, 2005г.
3. Смарт Н. Криптография. – М: Техносфера, 2006 г. - 528 с.
4. Чмора А.Л. Современная прикладная криптография. 2-е изд. -М.: Гелиос АРВ, 2002.-256с.:ил.
5. Шнайер Б. Прикладная криптография.- М.: Триумф, 2002. – 816с.
Лясин Д.Н., Макушкин И.А.
Поточное симметричное шифрование
Методические указания к лабораторным работам
План электронных изданий 2009 г. Поз. № 27 В (з)
Подписано на «Выпуск в свет» 25.09.2009 г.
Уч-изд. л. 1,2.
На магнитоносителе.
Волгоградский государственный технический университет.
400131, г. Волгоград, пр. Ленина, 28, корп. 1.