- •Методические материалы
- •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.3. Современные криптосистемы с секретным ключом 4
2.3.1. Основные положения
Далее мы рассмотрим вычислительно стойкие шифры с секретным ключом, которые в принципе могут быть вскрыты, но требуют для этого очень большого количества вычислений, например, 1020 лет работы суперкомпьютера. Эти шифры обеспечивают шифрование и дешифрование данных со скоростями, существенно превышающими скорости, характерные для совершенно секретных шифров, что и обусловливает их широкое распространение.
Проведенный выше анализ показывает, что одна из возможностей увеличить расстояние единственности шифра, а, следовательно, повысить его стойкость заключается в снижении избыточности исходных сообщений – см. знаменатель формулы (2.24). Однако на практике, поскольку реальным источником и приемником сообщений в конечном счете является человек, этот путь сложен, ибо проблема, фактически, заключается в неустранимой избыточности естественных языков. Например, для текстов на английском, немецком и французском языках однобуквенная избыточность (коэффициент избыточности) R 0,53 [1].
Другая возможность связана с увеличением энтропии ключа (см. числитель формулы (2.24)). В свою очередь это возможно при увеличении мощности множества значений ключа (см. (2.21)).
Рассмотрим эту возможность на простых примерах. Возьмем за основу простой подстановочный шифр вида (2.1). Усложним его следующим образом: каждую нечетную букву будем шифровать ключом k1, а четную – ключом k2. Тогда множество секретных ключей K = (k1, k2) будет иметь мощность 322 = 1024.
Зашифруем слово ПЕРЕМЕНА ключом K = (3, 5). Получим:
ПЕРЕМЕНА ТКУКПКРЕ (2.26)
Эта схема легко обобщается на произвольную длину ключа K = (k1, ..., kt)32. При t≳10 задача полного перебора ключей становится практически неразрешимой.
В то же время применение частотного криптоанализа решает проблему. Покажем это для ключа вида K = (k1, k2), предполагая, что применимо правило Керкхоффса.
Раздельно проведем анализ последовательностей букв, встречающихся в шифрованном тексте на нечетных и четных местах.
Рассмотрим шифрованный текст из (2.26), учитывая, что в русском языке чаще других встречается буква О. В четной последовательности чаще других встречается буква К, поэтому предположим, что именно она является шифром открытой буквы О. Таким образом, k2 = К О = 28 (mod 32).
В нечетной последовательности все буквы различны, поэтому для поиска k1 знание частот букв не помогает. Попытаемся, как и в первом примере, используя избыточность языка, подобрать k1 простым перебором, одновременно используя для расшифровки всего слова предположение о том, что k2 = 28. Попытка будет безуспешной, то есть предположение о том, что k2 = 28 неверно.
При повторной попытке анализа четной последовательности вместо буквы О возьмем другую, часто встречающуюся букву – Е. Получим: k2 = К Е = 5 (mod 32). Повторим попытку анализа нечетной последовательности и всего текста. При k1 = 3 получим осмысленную расшифровку – ПЕРЕМЕНА.
Итак, нам понадобилось перебрать не 1024 значения ключа, а только 36: (0,28), ..., (31,28), (0,5), ..., (3,5).
Попробуем усложнить шифр так, чтобы затруднить частотный криптоанализ. А именно, попытаемся каким-то образом перемешать символы открытого сообщения, "заставив" их влиять друг на друга, чтобы скрыть индивидуальные частоты появления в текстах. Как и выше будем использовать ключ K = (k1, k2), но шифровать сообщение будем блоками по два символа. Условно такой блок обозначим mi mi+1, где mi – нечетная буква сообщения, mi+1 – четная. Один из простейших вариантов шифра может выглядеть так:
ш
(2.26а)
шаг шифрования: сi = + k1, сi+1 = + k2 (mod 32).
Здесь сi, сi+1 принимаются в качестве шифров открытых букв mi и mi+1.
В рассматриваемом примере шифр (2.26а) даст:
ПЕРЕМЕНА ФЩХЪСЦНН ЧЮШЯФЫРТ
Здесь шифрованный текст скрывает частоты появления отдельных символов (в нем нет повторяющихся букв). В то же время, он сохраняет частоты повторения пар символов. Воспрепятствовать соответствующей криптоатаке можно, шифруя текст блоками по три символа и т.д.
В целом, можно констатировать, что перемешивание и блочное шифрование существенно затрудняют действия криптоаналитика-противника ℰ. Поэтому разумно предположить, что он постарается воспользоваться какими-то другими средствами и методами.
До настоящего времени мы рассматривали только первый тип криптоатаки – "криптоатака по известному шифрованному тексту" (см. п.1). Предположим, что ℰ имеет возможность достать открытый текст, соответствующий перехваченному шифрованному тексту, и, следовательно, осуществить второй тип криптоатаки.
Если в рамках рассматриваемого примера опять принять ключ длиной 2, но воспользоваться простой схемой шифрования (без перемешивания), то можно предположить, что ℰ знает два текста – ПЕРЕМЕНА и ТКУКПКРЕ. В этом случае ℰ немедленно найдет ключ: k1 = Т П = 3 (mod 32), k2 = К Е = 5 (mod 32).
Если использовать алгоритм шифрования (2.26а), то очевидного пути поиска ключа K = = (k1, k2) уже нет. Однако решение задачи также достаточно просто: противник применяет шаг перемешивания из (2.26а) (этот шаг открыт и, значит, известен ℰ) и из слова ПЕРЕМЕНА получает слово ФЩХЪСЦНН. Далее, анализируя пару (ФЩХЪСЦНН, ЧЮШЯФЫРТ), определяет ключ K = (3, 5).
Идея дальнейшего затруднения действий противника ℰ такова: применить шифр вида (2.26а), то есть с перемешиванием, два раза подряд. Получим:
ПЕРЕМЕНА ЧЮШЯФЫРТ ШШЪЫТПЕЩ (2.27)
В данном случае противник уже не может однозначно и быстро определить промежуточное значение ЧЮШЯФЫРТ, поскольку при его получении был использован секретный ключ. Разумеется, это не может гарантированно остановить ℰ, но существенно затруднит его действия.
В преобразованиях вида (2.27) каждая отдельная реализация алгоритма вида (2.26а) называется раундом (циклом, тактом) шифра.
Таким образом, в целом выше мы продемонстрировали влияние на стойкость шифра таких его параметров, как длина ключа, размер блока, количество раундов, а также продемонстрировали полезность перемешивающих преобразований.
Применяемые на практике традиционные шифры устроены по таким же принципам, однако, используют более длинные ключи и блоки и большее количество раундов, а также предполагают использование ряда дополнительных действий.
Далее мы кратко рассмотрим некоторые из реальных шифров.