montana/Android/Внешний-аудит/README.md

75 lines
5.3 KiB
Markdown
Raw Normal View History

2026-05-18 22:11:45 +03:00
# Аудиторский пакет — Montana Android-приложение
**Версия приложения:** 6.6.0 (`versionCode = 60600`) — закрыта Phase 2 (см. `11-Phase2-Integration.md`)
**Платформа:** Android API 24+ (minSdk=24, targetSdk=34)
**Подпись:** Genesis-keystore, SHA-256 fingerprint `305bc99b40e6106f28c6fcc5dce4772761d2630d5aca9fee076dc0691913ce4d`
**Дата выпуска пакета:** 2026-05-18
---
## Назначение пакета
Документация для независимого внешнего аудита Android-приложения Montana: криптография кошелька, сетевой слой VPN, защита состояния, поверхность атаки на стороне клиента.
Это **не** документация по протоколу TimeChain Montana — она находится в отдельных файлах `Montana Protocol vX.Y.Z.md` и `Montana-Protocol/Code/`. Связь между приложением и протокольным слоем явно ограничена (см. документ `04-Сетевой-слой.md`).
---
## Структура пакета
| Файл | Назначение |
|------|------------|
| `01-Архитектура.md` | Высокоуровневая схема компонентов, потоков данных, границ доверия |
| `02-Угрозы-и-модель.md` | Threat model: что защищаем, от кого, какие предположения принимаем |
| `03-Криптография.md` | Все криптографические примитивы с обоснованием выбора параметров |
| `04-Сетевой-слой.md` | VPN-каскад: Reality, haproxy stick-on-src, три exit-узла |
| `05-Состояние-и-хранилище.md` | Где живёт кошелёк, баланс, как защищены |
| `06-Восстановление.md` | BIP39-процедура, тест-векторы воспроизводимости |
| `07-Известные-ограничения.md` | Findings tracker — все известные проблемы со статусами |
| `08-Воспроизводимая-сборка.md` | Точные инструкции получить тот же APK байт-в-байт |
| `09-Инвентаризация-кода.md` | Файл-за-файлом разбор реализации |
| `10-Покрытие-тестами.md` | Что покрыто проверками, что нет |
| `приложения/` | Тест-векторы, ключи узлов, API |
---
## Scope аудита
**Входит:**
- Android-приложение `quest.montana.vpn` версии 6.5.0
- Backend `/opt/montana-vpn-balance/app.py` на узле Moscow (Flask)
- Helsinki haproxy + xray-pinned конфиги
- Использование внешней криптографии (WebCrypto SubtleCrypto в WebView)
**Не входит:**
- Протокол TimeChain Montana (отдельный аудит — спецификация `Montana Protocol v35.25.0.md`)
- Reference implementation на Rust (отдельный аудит — `Montana-Protocol/Code/`)
- Веб-сайт `montana.quest` (документация в `Montana/Russian/Site/`)
---
## Статус готовности
Часть production-fixes применена в v6.5.0 (см. `07-Известные-ограничения.md` секция «Phase 1 закрытие»). Часть классов проблем — открытые с явным closure path и оценкой scope (Phase 2/3, см. конец файла `07-Известные-ограничения.md`).
Этот пакет **не** утверждает что приложение готово к production-mainnet. Он фиксирует текущее состояние, явно перечисляет известные ограничения и closure paths.
---
## Точки контакта
- Спецификация протокола: `/Users/kh./Python/Ничто/Montana/Montana Protocol v35.25.0.md`
- Реализация протокола: `/Users/kh./Python/Ничто/Montana/Montana-Protocol/Code/`
- Исходники приложения: `/Users/kh./Python/Ничто/Montana/Android/MontanaApp/`
- Сборка APK: `/Users/kh./Python/Ничто/Montana/Android/build/montana-6.5.0.apk`
- Хаб Montana: `https://hub.montana.quest/efir369999/montana`
---
## Принципы документации
1. **Без хеджирования.** Утверждение либо доказуемо, либо помечено как `(гипотеза)` / `(предполагается)` / `(не верифицировано)`.
2. **Все константы с derivation.** Магических чисел нет. Каждая константа имеет цель, обоснование, sensitivity к изменению.
3. **Честное раскрытие open findings.** Все известные слабости — в `07-Известные-ограничения.md` с severity и closure path.
4. **Reproducibility.** Каждое утверждение можно проверить выполнив указанные команды.