- •Лабораторная работа № 1 криптоанализ простых криптографических систем.
- •1. Раскрытие шифра простой (моноалфавитной) подстановки.
- •Частоты букв русского алфавита
- •Частоты букв английского алфавита
- •Ъпъыпуогюяъыпткюзюхлыкъюпвызммоюптлз
- •2. Раскрытие шифра Виженера
- •Расшифровку следует начинать с нахождения длины ключевого слова (ключа).
- •1. Написать вспомогательную программу определения статистики алфавита русского/английского языка (подсчета вероятностей букв в осмысленных текстах).
- •4. Написать программу для определения длины ключа криптограммы.
4. Написать программу для определения длины ключа криптограммы.
Вход.
Криптограмма (выходной файл программы п.3 ПРАКТИЧЕСКОЙ ЧАСТИ).
Выход.
Предполагаемая длина ключа (вывести на экран). Дополнительная информация (вывод на экран):
-
значение индексов совпадения;
-
пары повторяющихся групп 3-х и более букв с указанием их позиций в криптограмме;
-
другая информация по усмотрению исполнителя.
Примечание. Использовать оба метода оценки длины ключа (по индексу совпадения и по отысканию в криптограмме всех пар повторяющихся групп 3-х и более букв.
Задание. Определить длину ключа криптограммы, полученной при выполнении задания к п.3 ПРАКТИЧЕСКОЙ ЧАСТИ. Сопоставить с известным значением. Сделать выводы.
ОБЩИЕ ЗАМЕЧАНИЯ (Прочтите обязательно!)
Криптоанализ - в общем случае очень сложная задача, в успешном решении которой немалую роль играет интуиция криптоаналитика, т.е. в определенном смысле процесс ее решения носит эвристический характер. То, что выполняется в лабораторной работе - лишь имитация реальности, поскольку и щифруемый текст, и ключ и др. известны "криптоаналитику" абсолютно точно и всегда есть возможность проконтролировать процесс и проверить результат расшифровки.
Следует иметь в виду, что в реальных ситуациях предложенное машиной решение может оказаться не совсем точным.
Четкость оформления выводных данных программ имеет большое значение: бестолковый вывод лишь затруднит работу интуиции криптоаналитика в реальных условиях.
Описанные здесь алгоритмы достаточно легко реализуются, но имеют один недостаток — они не дают однозначного результата.
Длина ключевого слова, например, будет лишь вероятной, так что необходимо еще сделать обоснованный выбор одной из возможных длин.
Кроме этого, алгоритмическое определение исходных эквивалентов для редко встречающихся букв криптограммы следует проверить, убедившись, что при расшифровке получаются правильные русские/английские слова.
Увеличивая статистическую информацию, доступную программе, можно получить более надежное основание для алгоритмических решений, но все равно эти решения должен проверить криптоаналитик.
В идеале помимо указанных алгоритмов в программах должны быть реализованы средства, позволяющие подтвердить обоснованность выводов, которые делает программа. Хороший способ обеспечить возможность такой оценки — написать программу, работающую в интерактивном режиме так, чтобы программа и пользователь смогли "совместно обсудить" качество каждого решения до того, как оно будет окончательно принято. «Обсуждение» обычно состоит в том, что программа сообщает криптоаналитику факты, говорящие в пользу того или иного возможного решения, а он либо принимает его, либо отвергает, после чего вычисление может быть продолжено.
ОТЧЕТНОСТЬ
Тексты программ, таблицы, диаграмма статистик, шифруемые (открытые) тексты и их криптограммы, "взломанные криптограммы", числовые результаты работы программ. Выводы.