14 KiB
Архитектура приватного финансового слоя Монеро-Монтана
Версия: 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 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-Протокол) — параллельная работа 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. Связанные документы
- Вызов Монеро-сообществу
- Постквантовые замены
- Atomic Swap протокол
- Дорожная карта
- 02 Криптография — базовые PQ-примитивы Монтаны
- 04 Спецификация протокола — основная спека
12. Источники
- Saberhagen, N. (2013). CryptoNote v 2.0 — основа Monero.
- Noether, S. (2015). Ring Confidential Transactions. Ledger.
- 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.
- Esgin, M. F., Steinfeld, R., Sun, S.-F., et al. (2019). MatRiCT: Efficient, Scalable and Post-Quantum Blockchain Confidential Transactions Protocol. CCS.
- Esgin, M. F., Nguyen, N. K., Seiler, G. (2020). Practical Exact Proofs from Lattices. ASIACRYPT.
- Goodell, B., Noether, S., Blue, A. (2020). Concise Linkable Ring Signatures and Forgery Against Adversarial Keys (CLSAG).
- NIST FIPS 203, 204, 205 (2024) — PQ стандарты.