- •Часть 1. Основы криптографии
- •Глава 1.
- •1.2. Примеры моделей шифров
- •Ту же подстановку относительно своих контактов
- •1.3. Свойства шифров
- •1.4. Вероятностная модель шифра
- •1.5. Совершенные шифры
- •1.6. Способы представления реализаций шифров
- •1.7. Основные понятия теории автоматов
- •Глава 2.
- •2.1. Блочный шифр des
- •Матрица начальной перестановки p
- •Матрица обратной перестановки p–1
- •Связь элементов матриц
- •Функция расширения e
- •Функции преобразования s1, s2, ..., s8
- •Функция h завершающей обработки ключа.
- •2.2. Основные режимы работы алгоритма des
- •2.3. Области применения алгоритма des
- •2.4. Алгоритм шифрования данных idea
- •Подключи шифрования и расшифрования алгоритма idea
- •2.5. Отечественный стандарт шифрования данных
- •Режим простой замены. Для реализации алгоритма шифрования данных в режиме простой замены используется только часть блоков общей криптосистемы (рис.3.11). Обозначения на схеме:
- •32, 31, ... 2, 1 Номер разряда n1
- •32, 31, ... 2, 1 Номер разряда n2
- •32, 31, ..., 2, 1 Номер разряда n1
- •32, 31, ..., 2, 1 Номер разряда n2
- •32, 31, ..., 2, 1 Номер разряда n1
- •32, 31, ..., 2, 1 Номер разряда n2
- •32, 31, ..., 2, 1 Номер разряда n1
- •64, 63, ..., 34, 33 Номер разряда n2
- •32, 31, ..., 2, 1 Номер разряда n1
- •32, 31, ..., 2, 1 Номер разряда n2
- •Глава 3.
- •Узел выработки Канал
- •3.1. Шифры гаммирования
- •3.2. Поточный шифр гаммирования rc4
- •Глава 4.
- •Классическая модель криптографической системы (модель Шеннона)
- •4.1. Модель системы связи с открытым ключом
- •Модель системы с открытым ключом
- •4.2. Принципы построения криптосистем с открытым ключом
- •4.3. Схема цифровой подписи с использованием однонаправленной функции
- •4.4. Открытое распределение ключей Диффи-Хеллмана
- •Глава 5.
- •Классическая модель криптографической системы.
- •Глава 6.
- •6.1. Дешифрование шифра перестановки
- •6.2. Дешифрование шифра гаммирования при некачественной гамме
- •6.3. О дешифровании фототелеграфных изображений
- •6.4. Дешифрование шифра гаммирования при перекрытиях
- •Глава 7.
- •7.1. Задача определения периода гаммы в шифре гаммирования по заданному шифртексту
- •7.2. Возможности переноса изложенных результатов на шифры поточной замены (пз)
- •Где принадлежит множеству к подстановок на I (p-1(j) – вероятность j-той буквы, для ее расчета исходя из набора (p1,p2,…,p|I|) необходимо найти --1(j) – образ буквы j при подстановке --1).
- •Глава 8.
- •Глава 9.
- •9.1. Вероятностные источники сообщений.
- •9.2. О числе осмысленных текстов получаемых в стационарном источнике независимых символов алфавита
- •9.3. Критерии на осмысленные сообщения Важнейшей задачей криптографии является задача распознавания открытых текстов. Имеется некоторая последовательность знаков, записанная в алфавите I:
- •9.4. Частотные характеристики осмысленных сообщений Ниже используется следующий алфавит русского текста
- •Глава 10.
- •1) Для любой al(al)
- •Глава 11.
- •Глава 12.
- •Глава 13.
- •13.1. Расстояния единственности для открытого текста и ключа
- •13.2. Расстояние единственности шифра гаммирования с неравновероятной гаммой
- •Глава 14.
- •Глава 15.
3.1. Шифры гаммирования
Напомним, что в шифре гаммирования шифрование проводится следующим способом. Пусть алфавит открытого текста состоит из n символов. Ключом системы является последовательность из некоторого числа L символов. Под открытый текст подписывается ключ
i0 i1 i2 i3 i5 i6...
0 1 2 …L-1 0 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 = (jt – 1 + S t – 1(t – 1) + K t – 1) mod 2n, а затем переставляются местами S t – 1(t – 1) и S t – 1(jt). На последнем шаге порождается таблица, представляющая S0. Ключевая последовательность K составляется из секретного ключа, возможно повторяющегося, и рандомизирующего ключа, передаваемого в открытом виде в целях ресинхронизации. Шифрованный текст получается сложением по модулю 2 двоичных векторов Оt длины n (байтов при n=8) открытого текста с двоичными векторами Zt длины n.
Основой построения большинства поточных шифров являются генераторы псевдослучайных чисел, в частности, различные комбинации регистров сдвига. Примеры таких генераторов можно найти в Интернете. Авторские результаты по построению таких генераторов трактуются в автоматных терминах и содержатся в томе 2.