Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Эл-ты_криптологии-лек.doc
Скачиваний:
24
Добавлен:
24.11.2019
Размер:
757.76 Кб
Скачать

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а)

аг перемешивания: = mi + mi+1, = mi+1 + mi (mod 32);

шаг шифрования: с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а) называется раундом (циклом, тактом) шифра.

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

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

Далее мы кратко рассмотрим некоторые из реальных шифров.