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

185 lines
14 KiB
Markdown
Raw Permalink Normal View History

2026-05-04 07:08:51 +03:00
# Архитектура приватного финансового слоя Монеро-Монтана
**Версия:** 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 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-Протокол](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 стандарты.