Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2. Часть 1.doc
Скачиваний:
103
Добавлен:
02.06.2015
Размер:
5.54 Mб
Скачать

3.1. Шифры гаммирования

Напомним, что в шифре гаммирования шифрование проводится следующим способом. Пусть алфавит открытого текста состоит из n символов. Ключом системы является последовательность из некоторого числа L символов. Под открытый текст подписывается ключ

i0 i1 i2 i3 i5 i6...

012 …L-10 1...

Если длина ключа меньше длины открытого текста, то ключ периодически повторяется. Каждому знаку открытого текста и ключа ставится в соответствие некоторый вычет по модулю n, например, А=1, Б=2,.... Способ сопоставления не является секретным. Шифрованный текст получается по правилу

y(t)=it+t (mod n)

Суммирование по модулю часто называют гаммированием, а саму ключевую последовательность – гаммой. Шифры, в которых узел наложения шифра представляет собой узел суммирования называются шифраторами гаммирования. Это очень распространенный класс поточных шифров

Гаммирование чаще всего осуществляется:

  • по модулю 2, если открытый текст представляется в виде бинарной последовательности;

  • по модулю 256, если открытый текст представляется в виде последовательности байтов;

  • с помощью покоординатного суммирования двоичных векторов (операция ^ в обозначениях языка программирования С или xor в обозначениях ассемблера);

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

Блочные шифры как узлы усложнения поточных шифров. В типичном шифре гаммирования вместо случайной гаммы наложения используется псевдослучайная последовательность, зависящая от ключа. В этом случае шифр часто называют программным шифром гаммирования. Псевдослучайная последовательность отличается от случайной тем, что она разворачивается по некоторому регулярному закону, зависящему от ключа: сначала вырабатывается исходная последовательность, потом она преобразуется узлом усложнения. На выходе узла усложнения получается гамма, которая накладывается на открытый текст.

Способов конкретной реализации данной схемы существует очень много. В качестве блока усложнения могут использоваться и блочные шифры. Так шифраторы DES и ГОСТ могут использоваться и в режиме гаммирования. Для подобной схемы исходный блок реализует некоторую рекуррентную последовательность. Это может быть обычный двоичный счетчик (в каждый такт к начальному разряду прибавляется единица). Снимаемый в данный такт вектор поступает на DES, далее заменяется по преобразованию DES, а результат используется в качестве гаммы наложения. Часто узел усложнения разбивается на ряд более простых последовательных блоков (это в чём-то напоминает схему итераций в блочном шифре). Сам блочный шифр можно представить в виде последовательности блоков усложнения, в котором каждая итерация реализуется с помощью своего оборудования. Такая реализация увеличивает оборудование, но при этом увеличивает и скорость работы схемы.

3.2. Поточный шифр гаммирования rc4

Выбор схемы шифратора как правило ориентирован на элементную базу, на которой предполагается осуществить ее реализацию. В качестве примера современного шифра гаммирования, ориентированного на программную реализацию приведем Алгоритм RC-4 (разработка RSА Security Incorporated). Данный шифр применен, в частности для защиты в распределенной базе данных Lotus Notus и в некоторых других программных продуктах.

Описание функционирования поточного шифра RC4 дается по работе Йована Голича [ГОЛ. J. D. Golić, «Linear Statistical Weakness of Alleged RC4 Keystream generator», in Lecture Notes in Computer Science 1233; Advances in Cryptology: : Proc. Eurocrypt '97, W. Fumy, Ed., May 1997, pp. 226-238, Berlin: Springer-Verlag, 1997]. Фактически, RC4 представляет собой семейство алгоритмов, задаваемых параметром n, который является положительным целым с рекомендованным типичным значением n = 8. Внутреннее состояние генератора RC4 в момент времени t состоит из таблицы , содержащей 2n n-битных слов и из двух n-битных слов-указателей it и jt. Таким образом, размер внутренней памяти составляет M = n2n + 2n бит. Пусть выходное n-битное слово генератора в момент t обозначается как Zt. Пусть начальные значения i0 = j0 = 0. Тогда функция следующего состояния и функция выхода RC4 для каждого t  1 задается следующими соотношениями:

it = it – 1 + 1

jt = jt – 1 + S t – 1(it)

S t (it) = S t – 1(jt), S t (jt) = S t – 1(it)

Z t = S t (S t (it) + S t (jt)),

где все сложения выполняются по модулю 2n. Подразумевается, что все слова, кроме подвергаемых изменению по формулам, остаются теми же самыми. Выходная последовательность n-битных слов обозначается как .

Начальная таблица S0 задается в терминах ключевой последовательности с использованием той же самой функции следующего состояния, начиная оттаблицы единичной подстановки . Более строго, пустьj0 = 0 и для каждого 1 t  2n вычисляется jt = (jt1 + S t1(t1) + K t1) mod 2n, а затем переставляются местами S t1(t1) и S t1(jt). На последнем шаге порождается таблица, представляющая S0. Ключевая последовательность K составляется из секретного ключа, возможно повторяющегося, и рандомизирующего ключа, передаваемого в открытом виде в целях ресинхронизации. Шифрованный текст получается сложением по модулю 2 двоичных векторов Оt длины n (байтов при n=8) открытого текста с двоичными векторами Zt длины n.

Основой построения большинства поточных шифров являются генераторы псевдослучайных чисел, в частности, различные комбинации регистров сдвига. Примеры таких генераторов можно найти в Интернете. Авторские результаты по построению таких генераторов трактуются в автоматных терминах и содержатся в томе 2.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]