docs: initialize project
This commit is contained in:
68
.planning/PROJECT.md
Normal file
68
.planning/PROJECT.md
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
# Encrypted Archive (encrypted_archive)
|
||||||
|
|
||||||
|
## What This Is
|
||||||
|
|
||||||
|
Кастомный архиватор на Rust с собственным бинарным форматом, предназначенный для защиты данных (текстов и APK-файлов) от распаковки стандартными утилитами. Архивация выполняется через CLI на Linux/macOS, деархивация — через Kotlin-приложение на Android-магнитоле (Qualcomm, Android 13) с fallback на shell-скрипт через busybox.
|
||||||
|
|
||||||
|
## Core Value
|
||||||
|
|
||||||
|
Архив невозможно распаковать без знания формата — стандартные утилиты (7z, tar, unzip, binwalk) не распознают и не извлекают содержимое.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
### Validated
|
||||||
|
|
||||||
|
(None yet — ship to validate)
|
||||||
|
|
||||||
|
### Active
|
||||||
|
|
||||||
|
- [ ] CLI-утилита на Rust для создания архивов (Linux/macOS)
|
||||||
|
- [ ] Кастомный бинарный формат — не распознаётся стандартными архиваторами
|
||||||
|
- [ ] Сжатие данных перед шифрованием
|
||||||
|
- [ ] Шифрование AES-256 или ChaCha20 с зашитым ключом
|
||||||
|
- [ ] Обфускация структуры формата (нестандартные magic bytes, перемешанные блоки, фейковые заголовки)
|
||||||
|
- [ ] Упаковка нескольких файлов в один архив (тексты + APK)
|
||||||
|
- [ ] Деархивация через Kotlin-код на Android 13 (основной путь)
|
||||||
|
- [ ] Деархивация через shell-скрипт (busybox dd/xxd/openssl) как fallback
|
||||||
|
- [ ] Целостность данных — распакованные файлы идентичны оригиналам
|
||||||
|
- [ ] Базовые тесты: round-trip упаковка/распаковка
|
||||||
|
|
||||||
|
### Out of Scope
|
||||||
|
|
||||||
|
- GUI-интерфейс для архиватора — только CLI
|
||||||
|
- Поддержка Windows — архивация только Linux/macOS
|
||||||
|
- Защита от опытных реверс-инженеров с IDA/Ghidra — целевая аудитория защиты: обычные пользователи
|
||||||
|
- Потоковая архивация/деархивация — работаем с файлами целиком
|
||||||
|
- Парольная защита — используется зашитый ключ
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
- Целевое устройство: Android-магнитола на Qualcomm SoC, Android 13
|
||||||
|
- На магнитоле доступен busybox (dd, xxd, openssl и другие стандартные утилиты)
|
||||||
|
- Kotlin-код деархивации будет интегрирован в Android-приложение на магнитоле
|
||||||
|
- Shell-скрипт — запасной вариант деархивации, когда Kotlin-приложение недоступно
|
||||||
|
- Данные: текстовые файлы и APK-файлы (от нескольких КБ до десятков МБ)
|
||||||
|
- Формат должен быть достаточно простым, чтобы его можно было реализовать на shell (busybox) без внешних зависимостей
|
||||||
|
- Ключ шифрования зашит в код деархиватора (Kotlin/shell) — не вводится пользователем
|
||||||
|
- Модель: исключительно Opus 4.6 для всех агентов
|
||||||
|
|
||||||
|
## Constraints
|
||||||
|
|
||||||
|
- **Язык архиватора**: Rust — производительность, безопасность памяти, кросс-компиляция
|
||||||
|
- **Деархивация Kotlin**: Должна работать на Android 13 без native-библиотек (чистый JVM/Android SDK)
|
||||||
|
- **Деархивация busybox**: Только стандартные команды busybox — dd, xxd, openssl, sh
|
||||||
|
- **AI модель**: Только Opus 4.6 для всех агентов в процессе разработки
|
||||||
|
- **Документация**: Использовать Context7 MCP для всех библиотек/фреймворков
|
||||||
|
|
||||||
|
## Key Decisions
|
||||||
|
|
||||||
|
| Decision | Rationale | Outcome |
|
||||||
|
|----------|-----------|---------|
|
||||||
|
| Rust для CLI-архиватора | Безопасность памяти, скорость, хорошая экосистема крипто-библиотек | — Pending |
|
||||||
|
| Кастомный бинарный формат | Стандартные форматы легко распознаются binwalk/file | — Pending |
|
||||||
|
| AES/ChaCha20 + обфускация | Криптографическая надёжность + непрозрачность формата для обычных пользователей | — Pending |
|
||||||
|
| Зашитый ключ (не пароль) | Упрощает UX на магнитоле, достаточно для защиты от обычных пользователей | — Pending |
|
||||||
|
| Busybox shell как fallback | Работает везде на Android без дополнительных зависимостей | — Pending |
|
||||||
|
|
||||||
|
---
|
||||||
|
*Last updated: 2026-02-24 after initialization*
|
||||||
Reference in New Issue
Block a user