Files
2026-02-25 03:56:18 +03:00

88 lines
6.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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*