88 lines
6.6 KiB
Markdown
88 lines
6.6 KiB
Markdown
# 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) не распознают и не извлекают содержимое.
|
||
|
||
## Current Milestone: v1.1 Directory Support
|
||
|
||
**Goal:** Добавить поддержку рекурсивной архивации директорий с сохранением иерархии и Unix permissions во всех трёх декодерах.
|
||
|
||
**Target features:**
|
||
- Рекурсивная архивация директорий (pack принимает папки)
|
||
- Сохранение полных относительных путей (dir/subdir/file.txt)
|
||
- Unix mode bits (chmod 755/644) в формате и при распаковке
|
||
- Пустые директории сохраняются и восстанавливаются
|
||
- Обновление FORMAT.md под новые поля TOC
|
||
- Обновление всех трёх декодеров (Rust, Kotlin, Shell)
|
||
|
||
## Requirements
|
||
|
||
### Validated
|
||
|
||
- ✓ CLI-утилита на Rust для создания архивов (Linux/macOS) — v1.0
|
||
- ✓ Кастомный бинарный формат — не распознаётся стандартными архиваторами — v1.0
|
||
- ✓ Сжатие данных перед шифрованием — v1.0
|
||
- ✓ Шифрование AES-256-CBC с зашитым ключом — v1.0
|
||
- ✓ Обфускация структуры формата (XOR-заголовки, encrypted TOC, decoy padding) — v1.0
|
||
- ✓ Упаковка нескольких файлов в один архив (тексты + APK) — v1.0
|
||
- ✓ Деархивация через Kotlin-код на Android 13 — v1.0
|
||
- ✓ Деархивация через shell-скрипт (busybox) — v1.0
|
||
- ✓ Целостность данных — round-trip тесты — v1.0
|
||
|
||
### Active
|
||
|
||
- [ ] Рекурсивная архивация директорий с сохранением путей
|
||
- [ ] Unix mode bits — сохранение и восстановление при распаковке
|
||
- [ ] Пустые директории в архиве
|
||
- [ ] Обновление бинарного формата (TOC entry: тип записи, permissions)
|
||
- [ ] Обновление Kotlin декодера для директорий и permissions
|
||
- [ ] Обновление Shell декодера для директорий и permissions
|
||
|
||
### Out of Scope
|
||
|
||
- GUI-интерфейс для архиватора — только CLI
|
||
- Поддержка Windows — архивация только Linux/macOS
|
||
- Защита от опытных реверс-инженеров с IDA/Ghidra — целевая аудитория защиты: обычные пользователи
|
||
- Потоковая архивация/деархивация — работаем с файлами целиком
|
||
- Парольная защита — используется зашитый ключ
|
||
- Обратная совместимость с v1.0 архивами — формат меняется без backward compat
|
||
- Симлинки и хардлинки — только файлы и директории
|
||
- uid/gid и timestamps — только mode bits
|
||
|
||
## 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-25 after milestone v1.1 start*
|