6.5 KiB
6.5 KiB
Requirements: Encrypted Archive
Defined: 2026-02-24 Core Value: Архив невозможно распаковать без знания формата — стандартные утилиты не распознают содержимое
v1 Requirements
Format (Бинарный формат)
- FMT-01: Кастомный бинарный формат с нестандартными magic bytes (не распознаётся binwalk/file/7z)
- FMT-02: Поле версии формата (1 байт) для forward compatibility
- FMT-03: Таблица файлов с метаданными: имя файла, original size, compressed size, encrypted size, offset, IV, HMAC
- FMT-04: Little-endian для всех multi-byte полей
- FMT-05: Спецификация формата как документ (до начала реализации)
- FMT-06: XOR-обфускация заголовков с фиксированным ключом
- FMT-07: Зашифрованная таблица файлов (отдельный IV)
- FMT-08: Decoy padding (случайные данные между блоками)
Encryption (Шифрование)
- ENC-01: AES-256-CBC шифрование каждого файла отдельно
- ENC-02: HMAC-SHA256 аутентификация (encrypt-then-MAC) для каждого файла
- ENC-03: Случайный 16-байтный IV для каждого файла, хранится в cleartext
- ENC-04: Зашитый 32-байтный ключ (hardcoded во всех декодерах)
- ENC-05: PKCS7 padding для AES-CBC
Compression (Сжатие)
- CMP-01: Gzip (DEFLATE) сжатие каждого файла перед шифрованием
- CMP-02: Per-file флаг: сжатие или raw (пропуск для уже сжатых файлов типа APK)
Integrity (Целостность)
- INT-01: SHA-256 чексумма для каждого файла (верификация после декомпрессии)
- INT-02: Распакованные файлы byte-identical оригиналам (round-trip fidelity)
CLI Archiver (Архиватор)
- CLI-01: Rust CLI утилита для создания архивов (Linux/macOS)
- CLI-02: Упаковка нескольких файлов (тексты + APK) в один архив
- CLI-03: Подкоманды: pack, unpack (для тестирования), inspect (для отладки)
Kotlin Decoder (Kotlin декодер)
- KOT-01: Kotlin-код деархивации на Android 13 без native-библиотек
- KOT-02: Использование javax.crypto (AES/CBC/PKCS5Padding) и java.util.zip.GZIPInputStream
- KOT-03: Верификация HMAC перед дешифровкой
- KOT-04: Верификация SHA-256 чексуммы после декомпрессии
Shell Decoder (Shell декодер)
- SHL-01: Shell-скрипт деархивации через busybox (dd, xxd, openssl, gunzip)
- SHL-02: openssl enc -aes-256-cbc с -K/-iv/-nosalt для raw key mode
- SHL-03: Поддержка файлов с не-ASCII именами (кириллица)
Testing (Тестирование)
- TST-01: Round-trip тесты: архивация Rust → деархивация Rust
- TST-02: Golden test vectors: известный plaintext/key/IV → ожидаемый ciphertext
- TST-03: Базовые unit-тесты для каждого модуля pipeline
v2 Requirements
Расширенная обфускация
- OBF-01: Shuffled blocks (хранение блоков в случайном порядке с scramble map)
- OBF-02: Fake headers (имитация JPEG/PNG для ввода в заблуждение анализаторов)
UX
- UX-01: Progress reporting для больших архивов
- UX-02: Dry-run / validation mode (проверка без извлечения)
- UX-03: Configurable compression level
Security
- SEC-01: Per-file derived keys (HKDF от master key + file index)
- SEC-02: Обфускация ключа в Kotlin APK (byte array + split hex в shell)
Out of Scope
| Feature | Reason |
|---|---|
| GUI-интерфейс | CLI достаточен для разработчика |
| Windows-поддержка | Только Linux/macOS, WSL для Windows |
| Парольная защита (PBKDF2/Argon2) | Зашитый ключ, UX на магнитоле |
| Streaming/pipe | Файлы помещаются в память целиком |
| Вложенные архивы | Плоский список файлов |
| Асимметричное шифрование | Избыточно для hardcoded key модели |
| Self-extracting архивы | Shell-скрипт — отдельный файл |
| DRM / лицензирование | Не цель проекта |
| File permissions в архиве | Android управляет своими permissions |
| Дедупликация файлов | Разные файлы, нет дублей |
Traceability
| Requirement | Phase | Status |
|---|---|---|
| FMT-01 | Phase 2 | Complete |
| FMT-02 | Phase 2 | Complete |
| FMT-03 | Phase 2 | Complete |
| FMT-04 | Phase 2 | Complete |
| FMT-05 | Phase 1 | Complete |
| FMT-06 | Phase 6 | Pending |
| FMT-07 | Phase 6 | Pending |
| FMT-08 | Phase 6 | Pending |
| ENC-01 | Phase 2 | Complete |
| ENC-02 | Phase 2 | Complete |
| ENC-03 | Phase 2 | Complete |
| ENC-04 | Phase 2 | Complete |
| ENC-05 | Phase 2 | Complete |
| CMP-01 | Phase 2 | Complete |
| CMP-02 | Phase 2 | Complete |
| INT-01 | Phase 2 | Complete |
| INT-02 | Phase 3 | Complete |
| CLI-01 | Phase 2 | Complete |
| CLI-02 | Phase 2 | Complete |
| CLI-03 | Phase 2 | Complete |
| KOT-01 | Phase 4 | Complete |
| KOT-02 | Phase 4 | Complete |
| KOT-03 | Phase 4 | Complete |
| KOT-04 | Phase 4 | Complete |
| SHL-01 | Phase 5 | Complete |
| SHL-02 | Phase 5 | Complete |
| SHL-03 | Phase 5 | Complete |
| TST-01 | Phase 3 | Complete |
| TST-02 | Phase 3 | Complete |
| TST-03 | Phase 3 | Complete |
Coverage:
- v1 requirements: 30 total
- Mapped to phases: 30
- Unmapped: 0
Requirements defined: 2026-02-24 Last updated: 2026-02-25 after Phase 4 completion