8.2 KiB
00. Сводка для аудитора — Montana Android v6.5.0
За одну страницу
Что это: Android-приложение Montana — клиент VPN-сети с встроенным BIP39-кошельком. Пользователь получает 0.001 Ɉ за каждую секунду online через VPN-каскад из трёх узлов (Helsinki / Frankfurt / NewYork).
Размер пакета: ~3000 строк документации, 11 файлов.
APK: montana-6.6.0.apk (Phase 2 integration закрыта), 32 MB, подписан Genesis-keystore (fingerprint 305bc99b…3ce4d).
Что аудитор должен проверить в первую очередь
Критические (P0, блокеры mainnet)
07-Известные-ограничения.mdF-2 — Heartbeat без cryptographic auth. Backend принимает heartbeat от любого 40-hex адреса если IP source ∈ MONTANA_NODES. Sybil-атака открыта. Closure: Falcon-512 подпись (Phase 3, ~2 недели).07-Известные-ограничения.mdF-4 —balances.jsonживёт только на Moscow. SPOF. Closure: TimeChain validator state (Phase 3, ~2 недели).03-Криптография.md§5 — Address derivationSHA-256("montana-v1:" || seed)[0..20]несовместима с BIP32/BIP44. Cross-wallet import показывает пустые балансы. Phase 4 → SLIP-44 registration.
Высокие
07F-6 — Seed в plain text localStorage. Уязвимо на rooted устройствах и forensic. Closure: Android Keystore wrap.07F-7 — Нет backup confirmation flow при создании кошелька. UX risk потери денег.07CF-recovery-tests — Нет automated tests recovery determinism между устройствами.10-Покрытие-тестами.md— Ноль automated tests. Manual verification только.
Средние
07CF-4 — Reality keys + UUID в 19 местах ([C-1] SSOT violation).07F-3.1 — Покажется automated cron purge inactive балансов.
Что работает корректно (verified)
✓ BIP39 derivation byte-exact совместимо со стандартом (cross-verified Python ↔ JS WebCrypto — см. приложения/вектора-тестов-bip39.md)
✓ haproxy stick-on-src закрепляет клиент за одним exit-узлом на 24h (verified 10/10 запросов)
✓ Atomic LOCK_EX на balances.json (закрыл CF-5 race)
✓ BIP39 wordlist SHA-256 integrity check fail-closed
✓ JSON parsing через org.json.JSONObject (закрыл CF-2 regex fragility)
✓ Catch logging в 10/13 try-блоках (закрыл CF-1)
✓ Reality Active probing resistance через SNI Echo decoy
✓ TUN-петля закрыта через addDisallowedApplication(packageName)
✓ ALPN pin = http/1.1 для парсера
Структура аудиторского пакета
| Файл | Содержание | Размер |
|---|---|---|
README.md |
Точка входа | 74 строк |
00-Сводка-для-аудитора.md |
Этот файл | ~150 строк |
01-Архитектура.md |
Компоненты, потоки, границы доверия | 264 строк |
02-Угрозы-и-модель.md |
Threat model (атакующие A-H) | 166 строк |
03-Криптография.md |
Все примитивы с derivation констант | 249 строк |
04-Сетевой-слой.md |
VPN-каскад, haproxy sticky, Reality | 407 строк |
05-Состояние-и-хранилище.md |
Где живёт state, защита | 254 строк |
06-Восстановление.md |
BIP39 procedures, recovery, тест-векторы | 240 строк |
07-Известные-ограничения.md |
Findings tracker со severity и closure path | 244 строк |
08-Воспроизводимая-сборка.md |
Точные инструкции получить APK | 173 строк |
09-Инвентаризация-кода.md |
Файл-за-файлом разбор | 295 строк |
10-Покрытие-тестами.md |
Что тестируется, что нет | 209 строк |
приложения/вектора-тестов-bip39.md |
Реальные test vectors + cross-verification | 147 строк |
приложения/ключи-узлов.md |
Reality public keys, APK signing key | 70 строк |
приложения/api-эндпоинты.md |
Backend REST + heartbeat trace | 252 строк |
Total: ~3000 строк.
Рекомендуемая последовательность чтения
00-Сводка-для-аудитора.md(этот) — overview01-Архитектура.md— понять компоненты02-Угрозы-и-модель.md— понять что защищаем07-Известные-ограничения.md— что не работает + roadmap03-Криптография.md— детальный crypto audit04-Сетевой-слой.md— VPN-каскад05-Состояние-и-хранилище.md— persistence layer06-Восстановление.md+приложения/вектора-тестов-bip39.md— recovery verification08-Воспроизводимая-сборка.md— собрать APK с нуля09-Инвентаризация-кода.md— code reading reference10-Покрытие-тестами.md— test gap
Заявление о готовности к production-mainnet
Готовность: ~60% (после Phase 2 closure). Часть production-fixes применена в v6.5.0 (Phase 1), но критические findings F-2 и F-4 остаются open.
Запуск mainnet запрещён до закрытия P0 findings:
- F-2 (heartbeat auth) — требует TimeChain integration M-VPN-3
- F-4 (state persistence) — требует TimeChain integration M-VPN-2
- F-6 (seed encryption) — Phase 2 user passcode flow
- F-7 (backup confirmation) — Phase 2 UX
- CF-recovery-tests (test coverage) — Phase 2 obligatory
Phase 2 closure cost: ~1-2 недели. Phase 3 closure cost: ~3-4 недели (вкл. spec patch Montana Protocol v35.25 → v35.26).
После закрытия Phase 2/3 пакет должен быть переаудитован независимым специалистом (формальный engagement, не self-audit).
Контакт и обратная связь
Спецификация протокола: /Users/kh./Python/Ничто/Montana Protocol v35.25.0.md
Реализация: /Users/kh./Python/Ничто/Montana/Montana-Protocol/Code/
Hub: https://hub.montana.quest/efir369999/montana
Аудитор может ответить через issue в hub либо напрямую автору.
Ограничения этого аудиторского пакета
-
Self-audit, не независимый. Пакет собран автором проекта на основе ролей критика/архитектора из спецификации. Не заменяет внешний security audit от независимой firm (NCC Group, Trail of Bits, Cure53, Quarkslab).
-
Snapshot 2026-05-18. Все findings и закрытия зафиксированы на эту дату. После Phase 2/3 пакет должен быть обновлён с новыми статусами.
-
Не покрывает:
- Внешнюю криптографию xray-core (отдельный аудит xray)
- Android OS уязвимости (CVE)
- Hosting provider integrity
- Legal compliance (GDPR, лицензирование VPN в странах деятельности)
-
Не имеет formal proof. Все утверждения empirical либо математические по стандарту, но без formal verification (TLA+, Coq, F*).