montana/Формальная Документация/13 Приватный Финансовый Слой Монеро-Монтана/Архитектура.md

14 KiB
Raw Blame History

Архитектура приватного финансового слоя Монеро-Монтана

Версия: 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 (см. Постквантовые замены)
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 520 КБ (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).

Параметры:

  • Размер доказательства: 550 КБ в текущих research-схемах (vs ~1 КБ в Bulletproofs).
  • Время верификации: 50200 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) ~50100 КБ (ring + stealth + range)
Время подписания ~10 мс ~500 мс 5 с
Время верификации ~5 мс ~50500 мс
Транзакций в окне (τ₁=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-Протокол) — параллельная работа 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 Управление).
  • Cross-chain swap audit — atomic swap безопасность при византийских участниках.

11. Связанные документы

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 стандарты.