Файл: Лабораторная работа 3 Программная реализация классических алгоритмов шифрования и их криптоанализа Цель.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.02.2024
Просмотров: 169
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
р
18 л
13 5 у
21 о
16 5 ж
8 в
3 5 у
21 о
16 5
Для пятерки символов шифротекста, начинающихся со второго (индекс равен
1) символа список разностей будет другим – [5,5,5,5,1], соответственно для пятерки, начинающейся с третьего – [5,5,5,1,-1] и т.д.
После того, как мы получили список разностей, необходимо проверить, равны ли друг другу все элементы данного списка, то есть прослеживается ли одинаковое смещение между символами проверяемого фрагмента зашифрованного текста и вероятного слова. Если данное условие выполняется, то можно возвратить предполагаемый ключ шифрования для дальнейшего расшифрования. Проверка на наличие одинакового смещения происходит с 4 по 9 строку описания функции
finding(). С помощью цикла
for…in… (строка 5) сравниваем (строка 6) каждый элемент текущего списка разностей
g[k]
с нулевым элементом
g[0]. Если они равны, счетчик s инкрементируется
(строка 7)
. Равенство значения счетчика и количества элементов списка (то есть количества символов вероятного слова) является условием (строка 8) возвращения функцией
g[0] в качестве предполагаемого ключа шифрования (строка 9). Если данное условие не выполняется, то функция возвращает
None.
Тестирование программы
Протестируем программу на примере небольшого текста. Для начала зашифруем текст из файла
plaintext.txt с помощью разработанной ранее программы
main.py и запишем его в файл cipertext.txt. достаточно большого
18 л
13 5 у
21 о
16 5 ж
8 в
3 5 у
21 о
16 5
Для пятерки символов шифротекста, начинающихся со второго (индекс равен
1) символа список разностей будет другим – [5,5,5,5,1], соответственно для пятерки, начинающейся с третьего – [5,5,5,1,-1] и т.д.
После того, как мы получили список разностей, необходимо проверить, равны ли друг другу все элементы данного списка, то есть прослеживается ли одинаковое смещение между символами проверяемого фрагмента зашифрованного текста и вероятного слова. Если данное условие выполняется, то можно возвратить предполагаемый ключ шифрования для дальнейшего расшифрования. Проверка на наличие одинакового смещения происходит с 4 по 9 строку описания функции
finding(). С помощью цикла
for…in… (строка 5) сравниваем (строка 6) каждый элемент текущего списка разностей
g[k]
с нулевым элементом
g[0]. Если они равны, счетчик s инкрементируется
(строка 7)
. Равенство значения счетчика и количества элементов списка (то есть количества символов вероятного слова) является условием (строка 8) возвращения функцией
g[0] в качестве предполагаемого ключа шифрования (строка 9). Если данное условие не выполняется, то функция возвращает
None.
Тестирование программы
Протестируем программу на примере небольшого текста. Для начала зашифруем текст из файла
plaintext.txt с помощью разработанной ранее программы
main.py и запишем его в файл cipertext.txt. достаточно большого
Теперь реализуем атаку на зашифрованный текст с помощью программы
crack.py
Программа сначала выводит в консоль зашифрованный текст, затем предполагаемый исходный текст. Как можете заметить, атака прошла успешно и мы получили исходный текст, который был зашифрован шифром Цезаря.
Задание для самостоятельной проработки
1. Добавить в имеющиеся программы дополнительный функционал: a) вывод статистики по тексту (частота символов, встречаемых как в исходном, так и зашифрованном тексте). b) вывод названия метода шифрования, автора и дату разработки программы c) модуль защиты интеллектуальных прав на программу (запрашивает ключ на использование программы, отсчитывает срок действия лицензии)
2. Разработать и протестировать программу на языке программирования
Python для шифрования, расшифрования и криптоанализа текста: a) методом перестановки символов (размер блока от 4 до 8 символов) b) методом гаммирования (сложения с гаммой, размер гаммы от 4 до 8 символов). c) методом Виженера (ключевое слово от 4 до 8 символов). d) шифром Полибия e) методом Playfair. f) методом аффинного шифра.
Также программа выводит ключ
(
смещение
), которое она определила
Контрольные вопросы
1. Что представляет собой криптография?
2. Какие методы криптографического преобразования по виду воздействия на исходную информацию вам известны?
3. Каким требованиям должны отвечать современные методы шифрования?
4. В чем заключаются преимущества и недостатки симметричных криптосистем?
5. Какие подвиды симметричных алгоритмов шифрования вы знаете?
Дайте им краткую характеристику.
6. Почему криптостойкость должна обеспечиваться секретностью ключа, а не секретностью алгоритма шифрования?
7. В чем заключается назначение криптоанализа?
8. В чем заключается криптоанализ методом протяжки вероятного слова?