# Архитектура приватного финансового слоя Монеро-Монтана **Версия:** 1.0 draft **Базовый источник:** Montana Protocol v35.25.0; Monero whitepaper (Saberhagen 2013) + RingCT (Noether 2015) + Bulletproofs (Bünz et al. 2018) ## 1. Цель Дать пользователю Монтаны опт-ин режим **приватных** переводов TC (Junona) — приватность отправителя, получателя, суммы — без отказа от постквантовых примитивов сети. ## 2. Что такое «приватность» (формально) Базируется на трёх независимых ortho-свойствах от Monero: | Свойство | Смысл | Monero классический | Монтана PQ-эквивалент | |----------|-------|---------------------|------------------------| | **Sender privacy** | Невозможно установить какой из K возможных аккаунтов сделал перевод | Ring signatures (CLSAG, K=11) | Lattice ring signatures (см. [Постквантовые замены](Постквантовые-замены.md)) | | **Recipient privacy** | Получатель не виден на цепи; нет связи с его публичным адресом | Stealth addresses (one-time keys) | PQ stealth addresses через ML-KEM-768 + DH-style derivation | | **Amount privacy** | Сумма перевода скрыта; виден только zero-knowledge proof что сумма ≥ 0 и ≤ доступного баланса | Pedersen commitments + Bulletproofs | Lattice commitments + lattice-based range proofs | ## 3. Архитектурные слои Монеро-Монтана ``` ┌─────────────────────────────────────────────────────┐ │ Прикладной слой (Anchor для приложений) │ ├─────────────────────────────────────────────────────┤ │ Приватный слой Монеро-Монтана │ │ - Опт-ин «private mode» на уровне аккаунта │ │ - Lattice ring sigs / PQ stealth / PQ range proofs │ ├─────────────────────────────────────────────────────┤ │ Public Account Chain (текущая Монтана v35.25.0) │ │ - Прозрачные TC переводы, NodeChain, AccountChain │ ├─────────────────────────────────────────────────────┤ │ TimeChain (VDF + Proof of Time) │ │ - Каноническая упорядоченность по τ-окнам │ │ - ВСЕГДА ПУБЛИЧНА (без приватности) │ └─────────────────────────────────────────────────────┘ ``` **TimeChain не приватизируется.** Каноническое время и порядок окон — глобальный публичный ресурс. Приватность только на уровне содержимого транзакций аккаунта в опт-ин режиме. ## 4. Опт-ин модель Каждый аккаунт может иметь два режима: - **Public mode (default)** — текущее поведение Монтаны: прозрачные транзакции, видимый баланс, видимые отправитель/получатель/сумма. Это сохраняется без изменений. - **Private mode (opt-in)** — аккаунт включает приватный режим и с этого момента его транзакции уходят в Монеро-Монтана слой с приватностью. Переход public→private — односторонний на уровне транзакции (баланс ушедший в private может вернуться публично только через специальную операцию reveal). Эта асимметрия защищает от смешения цепей и упрощает анализ безопасности. ## 5. Ключевые примитивы ### 5.1 Lattice Ring Signatures (sender privacy) Заменяет Monero CLSAG. Подписант доказывает что он один из K=11 потенциальных подписантов (anonymity set) без раскрытия какой именно. Постквантовая реализация — research direction MatRiCT (Esgin-Steinfeld-Sun 2019), MatRiCT+ (2022), последующие лattice-based ring signatures. **Параметры:** - Anonymity set K = 11 (как в Monero post-2022). - Размер подписи: пока в research-mode 5–20 КБ (vs 0.5 КБ в Monero CLSAG). Это значимый рост, нужна оптимизация. - Бит безопасности: NIST L3 (≥192). **Открытый вопрос:** есть ли уже готовая, проверенная PQ ring signature schema с разумным размером? Текущее состояние research — mid-2020s, схемы существуют, но в production-grade аудите ни одна. ### 5.2 PQ Stealth Addresses (recipient privacy) Заменяет Monero one-time addresses. При публикации публичного адреса получателя `R = Hash(view_key, spend_key)`, отправитель генерирует `r = random`, `R' = R + Hash(r·view_key)·G`, посылает на `R'` + `r·G` как nonce. Получатель сканирует все транзакции и проверяет `R = R' - Hash(view_key·r·G)·G`. **PQ адаптация через ML-KEM-768:** - Получатель публикует view-public-key и spend-public-key (PQ). - Отправитель использует ML-KEM-768 encapsulation: получает (ciphertext, shared_secret). - One-time spend public = `spend_pk + Hash(shared_secret)·G_PQ` (где G_PQ — generator в lattice space). - Получатель decapsulates ciphertext → shared_secret → распознаёт что транзакция для него. **Ограничение:** размер one-time-address пакета ~ 1.5 КБ vs ~ 64 байт в классическом Monero. ### 5.3 PQ Range Proofs (amount privacy) Заменяет Bulletproofs. Доказательство что сумма перевода в диапазоне [0, 2^64) без раскрытия суммы. **Lattice-based zk range proofs:** - Esgin-Nguyen-Seiler 2020 (lattice-based zk for SIS/LWE). - ZKBoo / ZKB++ family (post-quantum NIZK). **Параметры:** - Размер доказательства: 5–50 КБ в текущих research-схемах (vs ~1 КБ в Bulletproofs). - Время верификации: 50–200 ms (vs 5 ms Bulletproofs). **Ограничение:** значительно тяжелее классических Bulletproofs. Требует оптимизации либо принятия повышенной нагрузки. ## 6. Транзакционная модель ### 6.1 Структура private TC transfer ``` PrivateTransfer { ring_signature: LatticeRingSig, // sender privacy stealth_recipient: PQStealthAddress, // recipient privacy amount_commitment: LatticeCommitment, // amount privacy range_proof: PQRangeProof, // proof: 0 ≤ amount ≤ supply nullifier: SHA256(...), // prevent double-spend fee_public: TC, // комиссия публична τ_anchor: TimeChainPosition, // каноническая позиция signature: ML-DSA-65, // подпись по канону } ``` ### 6.2 Двойная трата защищена через nullifier Каждый private input производит уникальный `nullifier` который публикуется в TimeChain. Узлы поддерживают глобальное множество использованных nullifier'ов. Попытка повторно потратить тот же UTXO даёт коллизию nullifier и отвергается. ### 6.3 Anchor в TimeChain Private transaction коммитится в каноническое окно τ через якорь: ``` TimeChain[τ].private_anchors = SHA256( ring_signature || stealth_recipient || amount_commitment || range_proof || nullifier || fee_public || ... ) ``` Каноническое время гарантировано публичное. Содержимое анкера — приватное. ## 7. Размеры и производительность | Компонент | Public Montana | Private (Монеро-Монтана) | |-----------|----------------|--------------------------| | Размер транзакции | ~5 КБ (ML-DSA-65 sig) | ~50–100 КБ (ring + stealth + range) | | Время подписания | ~10 мс | ~500 мс – 5 с | | Время верификации | ~5 мс | ~50–500 мс | | Транзакций в окне (τ₁=60с) | ~10⁴+ | ~10² (ограничение verifier) | **Вывод:** приватный слой существенно тяжелее публичного. Это **сознательный trade-off** — приватность дорогая. В Monero аналогичные числа. ## 8. Защита от атак ### 8.1 Sybil против anonymity set Атакующий мог бы подкупить операторов для смещения выбора anonymity set к подложным аккаунтам. **Защита:** anonymity set выбирается псевдослучайно из VDF-выхода окна — детерминированно и нескомпрометируемо. ### 8.2 Timing attacks через τ-координату Транзакция в окне τ привязана к публичному времени → возможно корреляционный анализ "кто был онлайн в момент публикации". **Защита:** decoy delays — частный мод позволяет накапливать транзакции в локальный pool и публиковать через random-jitter в течение нескольких окон. **Открытый вопрос:** формальный анализ устойчивости к traffic analysis на сетевом уровне (eclipse + observation). ### 8.3 Quantum attack Все примитивы PQ → Шор не работает. Остаётся Гровер с квадратичным ускорением — требует увеличения хеш-длины для critical primitives. ## 9. Совместимость с public Monero **Atomic swap** (см. [Atomic-Swap-Протокол](Atomic-Swap-Протокол.md)) — параллельная работа public Monero (XMR) и private Монеро-Монтана (TC) без моста. Пользователь обменивает XMR ↔ TC через protocol-level swap, никаких wrapped токенов, никакого central bridge. ## 10. Открытые исследовательские вопросы - [ ] Выбор production-grade PQ ring signature schema (MatRiCT+? newer?). - [ ] PQ range proof оптимизация — текущие схемы тяжёлые. - [ ] Формальный анализ traffic-analysis устойчивости. - [ ] Совместимость с lightweight clients (мобильные кошельки) — приватные слои тяжелее. - [ ] Governance: как обновлять private layer separately от public (см. [12 Управление](../12%20Управление%20и%20Обновления/Governance.md)). - [ ] Cross-chain swap audit — atomic swap безопасность при византийских участниках. ## 11. Связанные документы - [Вызов Монеро-сообществу](Вызов-Монеро-сообществу.md) - [Постквантовые замены](Постквантовые-замены.md) - [Atomic Swap протокол](Atomic-Swap-Протокол.md) - [Дорожная карта](Дорожная-Карта.md) - [02 Криптография](../02%20Криптография/) — базовые PQ-примитивы Монтаны - [04 Спецификация протокола](../04%20Спецификация%20Протокола/) — основная спека ## 12. Источники 1. Saberhagen, N. (2013). *CryptoNote v 2.0* — основа Monero. 2. Noether, S. (2015). *Ring Confidential Transactions*. Ledger. 3. Bünz, B., Bootle, J., Boneh, D., Poelstra, A., Wuille, P., Maxwell, G. (2018). *Bulletproofs: Short Proofs for Confidential Transactions and More*. IEEE S&P. 4. Esgin, M. F., Steinfeld, R., Sun, S.-F., et al. (2019). *MatRiCT: Efficient, Scalable and Post-Quantum Blockchain Confidential Transactions Protocol*. CCS. 5. Esgin, M. F., Nguyen, N. K., Seiler, G. (2020). *Practical Exact Proofs from Lattices*. ASIACRYPT. 6. Goodell, B., Noether, S., Blue, A. (2020). *Concise Linkable Ring Signatures and Forgery Against Adversarial Keys* (CLSAG). 7. NIST FIPS 203, 204, 205 (2024) — PQ стандарты.