
- •Методические материалы
- •1. Основные понятия
- •2. Традиционные криптосистемы
- •2.1. Некоторые особенности криптосистем. Примеры традиционных криптосистем
- •2.2. Теоретическая стойкость криптосистем 2
- •2.2.1. Системы с совершенной секретностью
- •2.2.2. Шифр Вернама
- •2.2.3. Элементы теории информации
- •2.2.4. Расстояние единственности шифра с секретным ключом
- •2.3. Современные криптосистемы с секретным ключом 4
- •2.3.1. Основные положения
- •2.3.2. Блоковые шифры
- •2.3.2.1. Общие положения
- •2.3.2.2. Блоковый шифр гост 28147-89
- •2.3.2.3. Режимы функционирования блоковых шифров
- •2.3.3. Потоковые шифры
- •2.3.3.1. Общие положения
- •2.3.3.2. Режим ofb блокового шифра
- •2.3.3.3. Режим ctr блокового шифра
- •2.3.3.4. Алгоритм rc4 6
- •3. Криптосистемы с открытым ключом 7
- •3.1. Основные положения
- •3.2. Криптосистема Диффи-Хеллмана
- •3.3. Шифр Шамира
- •3.4. Шифр Эль-Гамаля
- •3.5. Шифр rsa. Односторонняя функция с "лазейкой"
- •3.6. Цифровая (электронная) подпись
- •3.6.1. Криптографические хеш-функции
- •3.6.2. Цифровая подпись rsa
- •3.6.3. Цифровая подпись на базе шифра Эль-Гамаля
- •3.6.4. Стандарты на цифровую подпись
- •3.7. Криптографические протоколы
- •3.7.1. Протокол для доказательства с нулевым знанием
- •3.7.2. Протокол для поддержки электронных денег
- •Рекомендуемая литература
2.2. Теоретическая стойкость криптосистем 2
Все схемы шифрования можно грубо разделить на два больших класса:
схемы, принципиально не вскрываемые, что строго доказывается;
схемы, стойкость которых основана на том, что дешифрование без знания ключа принципиально возможно, но требует неприемлемо больших затрат времени.
В данном разделе мы будем рассматривать схемы первого класса, опираясь, в основном, на методы анализа традиционных криптостистем, развитые К.Шенноном, начиная с его первой работы 1949 г.3
2.2.1. Системы с совершенной секретностью
Пусть М = {M1, M2, …, Mm} – множество всевозможных сообщений (например, всех текстов длиной не более 1000 букв), K = {K1, K2, …, Kn} – множество всевозможных ключей, C = {C1, C2, …, Cq} – множество всевозможных криптограмм (то есть зашифрованных сообщений).
Криптограммы и открытые сообщения связаны функционально: Cj = f(Mi, Kl).
Будем считать, что на множестве М задано распределение вероятностей P, то есть определены вероятности P(Mi), i = 1, …, m. Это априорное распределение вероятностей, которое известно и противнику.
Определение: криптосистема называется совершенно секретной, если выполняется равенство:
P(Mi | Cj) = P(Mi) (2.7)
при всех Mi, Kl, Cj = f(Mi, Kl). {Здесь P(Mi | Cj) – вероятность того, что открытое сообщение есть Mi, вычисленная при условиях: 1) шифрованное сообщение есть Cj (это известно противнику) и 2) Cj получено именно из Mi (это не известно противнику)}.
Поясним это определение. Пусть противник ℰ перехватил криптограмму Cj. Если (2.7) выполняется, то это означает, что он не получил никакой дополнительной информации о переданном сообщении, ему известно только указанное выше априорное распределение вероятностей. То есть знание Cj бесполезно для ℰ.
Рассмотрим конкретный пример. Пусть М – множество сообщений из шести букв на русском языке. Пусть априори известно, что для некоторой системы
P(М = "планер") = 0,00015; P(М = "ракета") = 0,0000012; и т.д.
Допустим, что мы имеем несовершенную систему и после перехвата криптограммы Cj* и необходимых вычислений ℰ получил свои оценки условных вероятностей:
P(М = "планер" | Cj*) = 1020; P(М = "ракета" | Cj*) = 0,9999.
Это означает, что ℰ практически расшифровал сообщение, так как он практически уверен, что передано слово "ракета", ибо условные вероятности других сообщений меньше 0,00001.
Если же при любой перехваченной криптограмме Cj
P(М = "планер" | Cj) = 0,00015; P(М = "ракета" | Cj) = 0,0000012,
то ℰ может вообще не обращать внимание на перехваченный шифр, а ориентироваться только на априорную информацию о распределении вероятностей.
Свойства совершенной криптосистемы характеризуются следующей теоремой.
Теорема 2.1. Если система является совершенно секретной, то справедливо равенство:
P(Cj | Mi) = P(Cj) (2.8)
при всех i и j. Верно и обратное утверждение: если (2.8) выполняется, то система совершенно секретна.
Д о к а з а т е л ь с т в о.
Далее любое сообщение (открытое или шифрованное) будем считать случайным событием.
По определению условной вероятности для событий A и B справедливо: P(A | B) = = P(AB)/P(B) при P(B) 0. Поэтому при P(Cj) 0 можно записать:
P(Mi | Cj) = P(MiCj)/P(Cj) = P(Mi)P(Cj | Mi)/P(Cj).
С учетом (2.7), получим: P(Mi | Cj) = P(Mi | Cj)P(Cj | Mi)/P(Cj), то есть
P(Cj | Mi)/P(Cj) = 1,
что доказывает (2.8). Обратное утверждение доказывается "обратным проходом" по приведенным равенствам.