# Практическая работа №5 по дисциплине «Защита информации» **Тема работы:** «Разработка клиент-серверного приложения для конфиденциального обмена сообщениями» **Преподаватель:** Силиненко А.В. **Email:** a_silinenko@mail.ru ## 1. Цель и задачи работы ### 1.1. Цель работы Разработка клиент-серверного приложения для конфиденциального обмена сообщениями с использованием шифрования и контроля целостности. ### 1.2. Задачи работы - получение базовых знаний по использованию криптографических функций библиотеки `crypto` в ОС Linux или другой библиотеки, обеспечивающей реализацию требований задания; - разработка клиент-серверного приложения для обмена шифрованными сообщениями с контролем целостности; - проверка работы приложения в различных режимах использования с помощью программы анализа трафика. ## 2. Требования к приложению ### 2.1. Общие требования Разработать приложение типа «клиент-сервер», позволяющее обмениваться короткими сообщениями между клиентской и серверной частями приложения с обеспечением шифрования и контроля целостности. ### 2.2. Общие требования - протокол взаимодействия: TCP; - длина сообщения: не более 80 символов; - полнодуплексный обмен сообщениями: возможность одновременного приема и передачи сообщений; - IP-адрес и порт серверной части передается клиентской части приложения в качестве параметров запуска в командной строке; - приложение должно быть способно функционировать как при запуске клиентской и серверной частей приложения на одном компьютере, так и на разных сетевых узлах; - язык написания программы: любой. ### 2.3. Требования к функции шифрования - приложение должно поддерживать функцию шифрования сообщений на основе симметричного шифрования с использованием библиотеки `crypto`, входящей в API `openssl`, или другой аналогичной библиотеки; - алгоритм симметричного шифрования: согласно индивидуальному заданию; В моём варианте это 3DES - ключ шифрования длиной не менее 32 символов задается в файле; - права доступа к файлу: чтение только владельцем; - использование опции шифрования задается ключом командной строки при запуске программы. ### 2.4. Требования к функции контроля целостности - приложение должно поддерживать функцию контроля целостности на основе подсчета хэш-значения передаваемого сообщения; - алгоритм вычисления хэш-значения - в соответствии с индивидуальным заданием (см. практическую работу №2); - использование опции контроля целостности задается ключом командной строки при запуске программы; - предусмотреть режим тестирования, в котором при включенной опции контроля целостности отправляются сообщения с некорректным хэш-значением. ### 2.5. Необязательные требования - реализовать шифрование с «затравкой» («солью»), обеспечивающей разные шифрованные сообщения при одном и том же открытом тексте; - реализовать для разработанного приложения опцию выработки и использования сессионного ключа на основе алгоритма Диффи-Хеллмана вместо заранее заданного ключа. ## 3. Требования к отчету ### 3.1. В разделе отчета, посвященном данной работе, должны быть приведены - актуальность темы работы в контексте курса; - цели и задачи работы; - краткое описание особенностей используемого алгоритма симметричного шифрования, а также шифрования «с затравкой» и алгоритма Диффи-Хеллмана, если реализованы соответствующие требования; - команды компиляции и сборки исполняемых модулей приложения; - описание процедуры проверки работы приложения с примерами, включая выводы программы анализа трафика, подтверждающие реализацию требований передачи сообщений без шифрования, с шифрованием, с шифрованием и контролем целостности; - описание проверки опции контроля целостности, в которой отправляются сообщения с некорректным хэш-значением; - описание проверки шифрования «с затравкой» и алгоритма Диффи-Хеллмана, если реализованы соответствующие требования; - текст разработанного приложения (клиентской и серверной частей) с комментариями - в приложении к отчету; - выводы по проделанной работе.