207d2fbbee
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
87 lines
3.4 KiB
Markdown
87 lines
3.4 KiB
Markdown
# CryptZ Ultimate v5
|
||
|
||
**AES-256-GCM Professional Archiver** — шифрование файлов с двухфакторной аутентификацией, файл-ключом и CLI.
|
||
|
||
## Возможности
|
||
|
||
- 🔒 **AES-256-GCM** — аутентифицированное шифрование (замена CBC+HMAC)
|
||
- 🔑 **Argon2id KDF** — устойчивость к GPU/ASIC-атакам
|
||
- 📦 **Сжатие gzip** — уменьшение размера архива
|
||
- 🔐 **2FA (TOTP)** — Google Authenticator / Authy
|
||
- 🗝 **Файл-ключ** — дополнительный фактор (XOR с основным ключом)
|
||
- 💣 **Счётчик попыток с MAC** — корректная защита от перебора + самоуничтожение
|
||
- 🗑 **Шредер** — безопасное удаление оригиналов (3 прохода)
|
||
- ✓ **Проверка целостности** — без полной расшифровки
|
||
- 🖥 **GUI** — CustomTkinter, drag & drop, индикатор силы пароля, журнал, горячие клавиши
|
||
- ⌨ **CLI** — полная автоматизация из командной строки
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
> `tkinterdnd2` — опционально (для drag & drop). Без неё приложение работает нормально.
|
||
|
||
## Запуск
|
||
|
||
### GUI
|
||
```bash
|
||
python cryptz.py
|
||
```
|
||
|
||
### CLI
|
||
|
||
**Шифрование:**
|
||
```bash
|
||
python cryptz.py encrypt file1.txt file2.pdf -p "MyPassword" -o archive.cryptz
|
||
python cryptz.py encrypt secret/ -p "Pass" -k keyfile.bin --2fa --shred
|
||
```
|
||
|
||
**Расшифровка:**
|
||
```bash
|
||
python cryptz.py decrypt archive.cryptz -p "MyPassword" -o ./output/
|
||
python cryptz.py decrypt archive.cryptz -p "Pass" -k keyfile.bin --otp 123456
|
||
```
|
||
|
||
**Проверка целостности:**
|
||
```bash
|
||
python cryptz.py verify archive.cryptz -p "MyPassword"
|
||
```
|
||
|
||
## Горячие клавиши (GUI)
|
||
|
||
| Комбинация | Действие |
|
||
|---|---|
|
||
| `Ctrl+O` | Добавить файлы |
|
||
| `Ctrl+E` | Зашифровать |
|
||
| `Ctrl+D` | Расшифровать |
|
||
| `Ctrl+G` | Сгенерировать пароль |
|
||
| `Delete` | Очистить список |
|
||
|
||
## Формат файла CryptZ v5
|
||
|
||
```
|
||
[CRZ5 4B][VERSION 1B][FLAGS 1B]
|
||
[SALT 32B][NONCE_META 12B][NONCE_DATA 12B]
|
||
[MAX_ATTEMPTS 1B][CURRENT_ATTEMPTS 1B][ATTEMPT_MAC 32B]
|
||
[META_LEN 4B][META_CIPHERTEXT ...][DATA_CIPHERTEXT ...]
|
||
```
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
cryptz.py — точка входа (GUI или CLI)
|
||
crypto_engine.py — криптографический движок
|
||
ui.py — графический интерфейс
|
||
cli.py — командная строка
|
||
requirements.txt — зависимости
|
||
```
|
||
|
||
## Безопасность
|
||
|
||
- **AES-256-GCM**: аутентификация + шифрование в одном примитиве, отдельный nonce для метаданных и данных
|
||
- **Argon2id**: 64MB RAM, 3 итерации, 4 потока
|
||
- **Счётчик попыток**: защищён HMAC-SHA256 с domain-separated sub-key; при превышении лимита архив уничтожается
|
||
- **Безопасное извлечение tar**: фильтрация path traversal (`..`, абсолютные пути)
|