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 (`..`, абсолютные пути)
|