Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Z9411_Чурилов_ИБ_ЛР2

.docx
Скачиваний:
0
Добавлен:
10.11.2024
Размер:
795.14 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

КАФЕДРА № 33

ЛАБОРАТОРНАЯ РАБОТА

ЗАЩИЩЕНА С ОЦЕНКОЙ

РУКОВОДИТЕЛЬ

доцент

А. В. Окатов

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЁТ О ЛАБОРАТОРНОЙ РАБОТЕ №2

Монофонический шифр

по курсу: Информационная безопасность

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №

Z9411

А. С. Чурилов

подпись, дата

инициалы, фамилия

Санкт-Петербург

2024

Цель работы:

На основе метода монофонического шифрования надо зашифровать/расшифровать сообщение, написанное на русском языке примерно на 1000 знаков

Порядок выполнения работы:

  1. Выберем произвольный текст для шифрования. Был взят текст из лабораторной работы №1 (рисунок 1)

Рисунок 1. Текст для шифрования

  1. Приведём текст в вид в соответствии с заданием: переведём его в верхний регистр; буквы Ё, Й, Ъ заменим на Е, И, Ь; в тексте оставим только буквы без пробелов. Программный код приведён на рисунке 2, результат работы приведён на рисунке 3.

Рисунок 2. Функция для приведения текста в норму в соответствии с заданием

Рисунок 3. Результат выполнения кода

  1. Составим таблицу с заменами. Код функции приведён на рисунке 4, вводные данные на рисунке 5, получившаяся таблица на рисунке 6.

Рисунок 4. Код функции по созданию таблицы с заменами

Рисунок 5. Вводные данные для создания таблицы монофонической замены

Рисунок 6. Таблица с заменами

  1. Напишем код, шифрующий сообщение с помощью данной таблицы. Выведем результат его работы. Код программы показан на рисунке 7, вывод программы на рисунке 8.

Рисунок 7. Код функции для шифрования

Рисунок 8. Результат выполнения функции

  1. Выполним частотный криптоанализ. Выведем количество повторений каждого из символов (рисунок 9). Из результатов проверки видно, что каждый символ повторяется не больше двух раз, что делает попытки расшифровать текст путём обработки частоты появления символов безнадёжным

Рисунок 9. Количество повторений символов

  1. Напишем код, дешифрующий сообщение с помощью данной таблицы. Выведем результат его работы. Код программы показан на рисунках 10 и 11, вывод программы на рисунке 12. Как видно из результата программы - исходный и дешифрованный текст совпадают.

Рисунок 10. Код функции дешифратора

Рисунок 11. Вызов дешифратора

Рисунок 12. Результат вызова

Приложение А. Код программы:

def text_convertion(text): """ Подготовка текста к шифрованию :param text: Исходный файл с текстом :return: Готовый текст для шифрования в виде строки """ original_text = text.read() original_text = original_text.upper() final_text = '' for letter in original_text: if letter.isalpha(): if letter == 'Ё': final_text += 'Е' elif letter == 'Й': final_text += 'И' elif letter == 'Ъ': final_text += 'Ь' else: final_text += letter else: continue return final_text

def mono_table(letters_frequencies): """ Создание замен для букв с помощью монофонического шифра :param letters_frequencies: Словарь с частотой повторяемости букв на 1000 символов :return: Словарь с заменами для букв """ count = 0 for key in letters_frequencies.keys(): temp_list = [] for i in range(letters_frequencies[key]): temp_list.append(chr(count)) count += 1 letters_frequencies[key] = temp_list return letters_frequencies

def mono_encoding(mono_table, text): """ Шифрование текста с помощью монофонической подстановки :param mono_table: Словарь с заменами для букв :param text: Текст для шифрования :return: Зашифрованный текст """ encoded_text = '' for letter in text: new_letter = mono_table[letter][0] encoded_text += new_letter current_change = mono_table[letter].pop(0) mono_table[letter].append(current_change) return encoded_text def mono_decoding(mono_table, encoded_text): """ Деширофка текста с помощью монофонической подстановки :param mono_table: Словарь с заменами для букв :param encoded_text: Зашифрованный текст :return: Расшифрованный текст """ decoded_text = '' for letter in encoded_text: for key in mono_table.keys(): if letter in mono_table[key]: decoded_text += key break else: continue return decoded_text

if __name__ == '__main__': letters_frequencies_thousand = { 'А': 62, 'Б': 14, 'В': 38, 'Г': 13, 'Д': 25, 'Е': 72, 'Ж': 7, 'З': 16, 'И': 72, 'К': 28, 'Л': 35, 'М': 26, 'Н': 53, 'О': 90, 'П': 23, 'Р': 40, 'С': 45, 'Т': 53, 'У': 21, 'Ф': 2, 'Х': 9, 'Ц': 4, 'Ч': 4, 'Ш': 6, 'Щ': 3, 'Ы': 16, 'Ь': 14, 'Э': 3, 'Ю': 16, 'Я': 18, }

# Создаём таблицу с заменами для монофонического шифра mono_table = mono_table(letters_frequencies_thousand) for k, v in mono_table.items(): print(k, v) # Шифрование путём монофонической подстановки mono_encoded = mono_encoding(mono_table, text) print(mono_encoded) # Смотрим на частоту букв в зашифрованном тексте encoded_letters_frequencies = {} for letter in mono_encoded: encoded_letters_frequencies[letter] = 0 for letter in mono_encoded: encoded_letters_frequencies[letter] = encoded_letters_frequencies[letter] + 1 print(encoded_letters_frequencies) # Дешифровка путём монофонической подстановки mono_decoded = mono_decoding(mono_table, mono_encoded) print(mono_decoded) print(mono_decoded == text)

Выводы:

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

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

Соседние файлы в предмете Информационная безопасность