lab5
This commit is contained in:
75
lab5/README.md
Normal file
75
lab5/README.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# Практическая работа №5 — Конфиденциальный обмен сообщениями
|
||||
|
||||
Клиент-серверное приложение для обмена сообщениями по TCP с поддержкой
|
||||
шифрования 3DES-CBC (с затравкой), контроля целостности SHA-256 и
|
||||
аутентификации отправителя HMAC-SHA256.
|
||||
|
||||
## Установка
|
||||
|
||||
```bash
|
||||
uv sync
|
||||
```
|
||||
|
||||
## Ключ шифрования
|
||||
|
||||
Ключ хранится в текстовом файле (не менее 32 символов). Права на файл — только
|
||||
чтение владельцем (`600`). Программа проверяет права при запуске и отказывается
|
||||
работать, если файл доступен группе или другим пользователям.
|
||||
|
||||
```bash
|
||||
openssl rand -hex 32 > key.txt
|
||||
chmod 600 key.txt
|
||||
```
|
||||
|
||||
## Запуск
|
||||
|
||||
### Сервер
|
||||
|
||||
```bash
|
||||
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 # другой файл ключа
|
||||
```
|
||||
|
||||
### Клиент
|
||||
|
||||
```bash
|
||||
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):
|
||||
|
||||
```bash
|
||||
sudo tcpdump -i lo -X -n tcp port 9000
|
||||
```
|
||||
|
||||
При работе по сети (замените `eth0` на имя сетевого интерфейса):
|
||||
|
||||
```bash
|
||||
sudo tcpdump -i eth0 -X -n tcp port 9000
|
||||
```
|
||||
|
||||
- **Без шифрования** — в дампе видны сообщения открытым текстом (JSON с полем `"data": "текст сообщения"`).
|
||||
- **С шифрованием** — в дампе видны только шифротекст, соль и IV в hex; читаемый текст отсутствует.
|
||||
Reference in New Issue
Block a user