Кодирование и декодирование сообщений. Отчет по лабораторной работе 8 основы защиты информации с помощью симметричных алгоритмов шифрования
Скачать 0.9 Mb.
|
Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования «Кузбасский государственный технический университет имени Т. Ф. Горбачева» Кафедра информационных и автоматизированных производственных систем Отчет по лабораторной работе 8 «ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ С ПОМОЩЬЮ СИММЕТРИЧНЫХ АЛГОРИТМОВ ШИФРОВАНИЯ» по дисциплине «Теория информации, данные, знания» Выполнили студенты гр. ИТб-211 Виноградова Татьяна Александровна Проверил: Матисов Александр Вениаминович г. Кемерово 2023 г. 1. Цель работы – приобрести выполнять криптографическую защиту информацию на платформе .NET Framework с помощью таких симметричных алгоритмов шифрования, как DES, 3DES, RC2 и Rijndael (AES). 2. Теоретические положения Особенности симметричных шифров.Режимы работы блочных алгоритмов шифрованияОсобенности симметричных шифров. Блочные алгоритмы шифрования.Традиционный подход к задаче криптографической защиты информации заключается в использовании симметричных шифров. Симметричными называют шифры, которые используют один и тот же ключ, как для шифрования, так и для расшифрования информации. В частном случае ключи шифрования и расшифрования могут различаться, но при наличии одного ключа можно легко вычислить другой. Поскольку единственный ключ полностью обеспечивает секретность шифра, то он должен храниться в тайне. Симметричные алгоритмы шифрования подразделяется на два вида: • Блочные алгоритмы шифрования, которые делят открытый текст на отдельные блоки, как правило, одинакового размера и оперируют с каждым из них с целью получения последовательности блоков шифрованного текста. • Поточные алгоритмы шифрования, которые производят обработку данных посимвольно или отдельными байтами без разделения на блоки. Поточные шифры, в отличие от блочных, обладают памятью предыдущего состояния шифра. Рассеиванием (diffusion) называется влияние любого знака открытого текста на знаки шифротекста. Рассеивание позволяет скрыть влияние статистических свойств открытого текста на свойства шифротекста. При использовании рассеивания малейшее изменение открытого текста должно вызывать значительные изменения шифротекста. Под перемешиванием (confusion) понимают использование таких преобразований, которые обеспечивают полную зависимость шифротекста от ключа. Перемешивание усложняет восстановление взаимосвязи статистических свойств открытого и шифрованного текстов при неизвестном ключе. Режимы работы блочных алгоритмов шифрования.Один и тот же блочный алгоритм может применяться для шифрования в различных режимах. Каждый режим шифрования имеет свои достоинства и недостатки, поэтому выбор режима зависит от конкретной ситуации. Современные блочные алгоритмы поддерживают следующие режимы работы: • электронная шифровальная книга (Electronic Codebook – ECB); • сцепление шифрованных блоков (Cipher Block Chaining – CBC); • шифрованная обратная связь (Cipher Feedback – CFB) • обратная связь по выходу (Ouput Feedback – OFB). • проскальзывание шифрованного текста (Cipher Text Stealing – CTS). Режим CFB позволяет оперировать блоками открытого текста, меньшими стандартного блока, используемого в режимах ECB и CBC. При этом алгоритм работает как потоковый шифр. Схема работы алгоритма в режиме CFB показана на рис. 2.1, где РС – регистр сдвига, выполняющий за один проход сдвиг влево на 8 бит. Сложение по модулю 2 выполняется для 8 крайних левых битов из РС. Рис. 2.1. Режим шифрованной обратной связи (CFB) Шифрование в режиме CFB: ; . Расшифрование в режиме CFB: ; . Отличие режима OFB от CFB заключается в том, что в режиме OFB биты попадают на вход сдвигового регистра перед операцией сложения по модулю 2. Криптография в .NET Framework. Класс SymmetricAlgorithm.Система .NET Framework включает набор криптографических сервисов, расширяющих аналогичные сервисы Windows через программный интерфейс Cryptography API (CAPI). Пространство имен System.Security.Cryptography открывает доступ к различным криптографическим сервисам, с помощью которых приложения могут шифровать данные, используя симметричные и асимметричные алгоритмы, могут обеспечивать целостность данных, а также обрабатывать цифровые подписи и сертификаты. Классы .NET Framework, реализующие симметричные алгоритмы, являются производными от абстрактного класса SymmetricAlgogithm, который содержит набор виртуальных свойств и методов. Класс SymmetricAlgogithm обладает следующими основными свойствами: • Key – возвращает или задаёт секретный ключ для использования симметричным алгоритмом при шифровании или расшифровании; представляет собой массив значений типа byte; • IV – возвращает или задаёт вектор инициализации для симметричного алгоритма, что требуется в режиме CBC; является массивом значений типа byte; • CipherMode – возвращает или задаёт режим шифрования для симметричного алгоритма; • PaddingMode – возвращает или задаёт тип заполнения блоков для симметричного алгоритма. 3 Код программы Исходные данные:
Задание: Разработать консольное приложение на языке C#, которое реализует шифрование текста с помощью заданного симметричного алгоритм. С помощью разработанной программы сгенерировать секретный ключ и вектор инициализации и осуществить шифрование произвольной строки текста при заданном режиме работы алгоритма и типе заполнения. Листинг 3.1. Исходный код класса CipherRC2, часть 1 Листинг 3.2. Исходный код класса CipherRC2, часть 2 Листинг 3.3. Исходный код класса CipherRC2, часть 3 Листинг 3.4. Исходный код класса CipherRC2, часть 4 (Создание XML-документа) Листинг 3.5. Исходный код класса Program Листинг 3.6. Исходный код класса Form1 (часть 1) Листинг 3.7. Исходный код класса Form1 (часть 2) Листинг 3.7. Исходный код класса Form1 (часть 2) 4. Ход работы 4.1 Задание: Требуется разработать консольное приложение, которое позволяет зашифровать строку открытого текста с помощью симметричного алгоритма шифрования RC2, а также выполняет расшифрование полученного шифротекста. В качестве режима шифрования будем использовать CFB, а в качестве типа заполнения – ANSIX923. Ключ и вектор инициализации будут автоматически генерироваться при запуске программы. На рисунке 4.1 представлен образец работы консольного приложения. Исходный текст задается пользователем, затем генерируется ключ и вектор инициализации, происходит шифрование, подсчет размера в байтах, а затем и расшифрование текста. Рис 4.1 – Результат работы консольного приложения 4.2 Задание Разработать приложение Windows Forms, позволяющее шифровать и расшифровывать текстовые файлы с помощью заданного симметричного алгоритма шифрования. Внешний вид приложения Windows Forms представлен на рисунке 4.2. Для создания интерфейса пользователя разместим на форме Form1 ряд элементов управления: текстовые поля textBoxKey, textBoxIV, textBoxText, главное меню menuStrip1, содержащее пункты меню и два выпадающих списка, строку состояния statusStrip1 с одной меткой. Рис 4.2 – Приложение Windows Forms Работающее приложение WindowsFormsApp при выполнении шифрования и расшифрования текстового файла показано на рис. 4.3. Рис. 4.3 – Результат работы приложения Windows Forms Код XML-документа, в котором сохранены байты ключа и вектора инициализации, показан на рис. 4.4. Рис. 4.4 - Код XML-документа, содержащий ключ и IV Вывод: В результате выполнения лабораторной работы приобрели умение выполнять криптографическую защиту информацию на платформе .NET Framework с помощью таких симметричных алгоритмов шифрования, как DES, 3DES, RC2 и Rijndael (AES). Разработали консольное приложение на языке C#, которое реализует шифрование текстового файла с помощью заданного симметричного алгоритма. С помощью разработанной программы сгенерировали секретный ключ и вектор инициализации и осуществили шифрование произвольной строки текста при заданном режиме работы алгоритма CFB и типе заполнения ANSIX923. Выполнили расшифровку полученного шифротекст. Разработали приложение Windows Forms, позволяющее шифровать и расшифровывать текстовые файлы с помощью заданного симметричного алгоритма шифрования. Приложение обеспечивает генерирование ключа и вектора инициализации (IV), выбор режима шифрования и типа заполнения последнего блока. В приложении реализована возможность сохранения ключа и IV в XML-документе, а также загрузку сохранённого ключа и IV из XML. |