Files
cyber-security/lab5
2026-04-02 16:40:25 +03:00
..
2026-04-02 16:40:25 +03:00
2026-04-02 16:40:25 +03:00
2026-04-02 16:40:25 +03:00
2026-04-02 16:40:25 +03:00
2026-04-02 16:40:25 +03:00
2026-04-02 16:40:25 +03:00
2026-04-02 16:40:25 +03:00

Практическая работа №5 — Конфиденциальный обмен сообщениями

Клиент-серверное приложение для обмена сообщениями по TCP с поддержкой шифрования 3DES-CBC (с затравкой), контроля целостности SHA-256 и аутентификации отправителя HMAC-SHA256.

Установка

uv sync

Ключ шифрования

Ключ хранится в текстовом файле (не менее 32 символов). Права на файл — только чтение владельцем (600). Программа проверяет права при запуске и отказывается работать, если файл доступен группе или другим пользователям.

openssl rand -hex 32 > key.txt
chmod 600 key.txt

Запуск

Сервер

uv run main.py server --port 9000                                      # без шифрования
uv run main.py server --port 9000 --encrypt                            # 3DES-CBC
uv run main.py server --port 9000 --encrypt --integrity                # + SHA-256
uv run main.py server --port 9000 --encrypt --integrity --test-integrity  # отправка с повреждённым хэшем
uv run main.py server --port 9000 --encrypt --hmac                      # 3DES + HMAC-SHA256
uv run main.py server --port 9000 --hmac                                # только HMAC (без шифрования)
uv run main.py server --port 9000 --key /path/to/key.txt --encrypt     # другой файл ключа

Клиент

uv run main.py client 127.0.0.1 9000
uv run main.py client 127.0.0.1 9000 --encrypt
uv run main.py client 127.0.0.1 9000 --encrypt --integrity
uv run main.py client 127.0.0.1 9000 --encrypt --integrity --test-integrity
uv run main.py client 127.0.0.1 9000 --encrypt --hmac
uv run main.py client 127.0.0.1 9000 --encrypt --hmac --test-integrity

Режимы работы

Флаг Описание
(без флагов) Открытый текст, без проверки целостности
--encrypt Шифрование 3DES-CBC с затравкой (соль + IV генерируются случайно для каждого сообщения)
--integrity Контроль целостности — к сообщению прикладывается SHA-256 хэш открытого текста
--hmac HMAC-SHA256 — контроль целостности + аутентификация отправителя (требует ключ, несовместим с --integrity)
--test-integrity Режим тестирования: отправляется заведомо некорректный хэш/HMAC (требует --integrity или --hmac)

Анализ трафика с помощью tcpdump

Для наблюдения за передаваемыми данными удобно использовать tcpdump. При работе на одной машине (loopback):

sudo tcpdump -i lo -X -n tcp port 9000

При работе по сети (замените eth0 на имя сетевого интерфейса):

sudo tcpdump -i eth0 -X -n tcp port 9000
  • Без шифрования — в дампе видны сообщения открытым текстом (JSON с полем "data": "текст сообщения").
  • С шифрованием — в дампе видны только шифротекст, соль и IV в hex; читаемый текст отсутствует.