99 lines
7.9 KiB
Markdown
99 lines
7.9 KiB
Markdown
# Криптография Монтаны
|
||
|
||
**Версия:** черновик 1.0
|
||
**Базовый источник:** [Montana Protocol v35.25.0 §Криптография, §Криптографическая реализация](../../Монтана-Протокол/Montana%20Protocol%20v35.25.0.md)
|
||
|
||
## 1. Принцип
|
||
|
||
Безопасность Монтаны полностью держится на постквантовых примитивах, стандартизованных NIST в 2024 году, и на хеш-функции SHA-256. Никаких эллиптических кривых, никакого pairing, никакого ECDSA/EdDSA. Это сознательный выбор: алгоритм Шора на достаточно мощном квантовом компьютере ломает дискретный логарифм за полиномиальное время; протокол не должен зависеть от того, когда такой компьютер появится.
|
||
|
||
## 2. Используемые примитивы
|
||
|
||
| Назначение | Примитив | Стандарт | Биты безопасности |
|
||
|------------|----------|----------|---------------------|
|
||
| Подпись | ML-DSA-65 | NIST FIPS 204 (2024) | 192 (классических), 128 (квантовых) |
|
||
| KEM (обмен ключами) | ML-KEM-768 | NIST FIPS 203 (2024) | 192 (классических), 128 (квантовых) |
|
||
| Хеш-функция | SHA-256 | NIST FIPS 180-4 | 256 collision / 128 preimage |
|
||
| VDF | SHA-256^D | Pietrzak 2018 | Несжимаемая последовательность |
|
||
| Stateless хеш-подпись (опц.) | SLH-DSA-128 | NIST FIPS 205 (2024) | 128 |
|
||
|
||
## 3. Обоснование выбора
|
||
|
||
### 3.1 ML-DSA-65 (Module-LWE/SIS подпись)
|
||
|
||
- Раунд 3 победитель NIST PQC-конкурса.
|
||
- Категория безопасности 3 (≥ 192-битная классическая стойкость; эквивалент AES-192).
|
||
- Размер открытого ключа: 1952 байт. Размер подписи: 3309 байт.
|
||
- EUF-CMA-стойкая в ROM, доказана редукция к Module-LWE и Module-SIS.
|
||
|
||
**Альтернативы рассмотрены:**
|
||
- Falcon-512: меньшие подписи (666 байт), но deterministic-вариант требует осторожной реализации с плавающей запятой → угроза имплементационных ошибок.
|
||
- SLH-DSA: hash-based, но подписи 17–49 КБ — неприемлемо для блочной сети с миллиардом аккаунтов.
|
||
|
||
### 3.2 ML-KEM-768
|
||
|
||
- Категория безопасности 3.
|
||
- Используется для обмена ключами между узлами при установлении защищённого канала (TLS-A на M8, см. [05 Сетевой слой](../05%20Сетевой%20Слой/)).
|
||
- Размер ciphertext: 1088 байт.
|
||
|
||
### 3.3 SHA-256
|
||
|
||
- В составе VDF: D итераций гарантируют последовательное вычисление; параллелизм не помогает.
|
||
- Как хеш аккаунта/блока: collision resistance 128 бит — выше, чем у любых эллиптических кривых, и устойчиво к Гроверу (квадратичное ускорение даёт лишь 128-битную атаку, всё равно вне досягаемости).
|
||
|
||
### 3.4 SHA-256 в качестве VDF
|
||
|
||
Pietrzak (2018) и Boneh-Bonneau-Bünz-Fisch (2018) показали, что итерация хеш-функции в режиме `out = SHA-256(in); repeat D раз` несжимаема: проверяющий должен потратить такое же число шагов, что и доказывающий, чтобы воспроизвести цепь. Параллелизм не помогает. Это фундаментальное свойство.
|
||
|
||
## 4. Параметры безопасности
|
||
|
||
| Параметр | Значение | Обоснование |
|
||
|----------|----------|-------------|
|
||
| Минимальный уровень безопасности | NIST Category 3 (192 бит) | Стандарт для долгосрочного денежного протокола |
|
||
| Запас до устаревания | ≥ 30 лет | NIST SP 800-131A прогноз для NIST L3 |
|
||
| Хеш-длина | 256 бит | Соответствует FIPS 180-4 |
|
||
| VDF параметр D₀ | 325 000 000 итераций | ≈ 60 секунд на x86_64 (тестово) |
|
||
|
||
## 5. Слои реализации
|
||
|
||
Согласно §"Криптографическая реализация" основной спецификации:
|
||
|
||
1. **Слой примитивов.** Конкретные реализации (liboqs, OpenSSL, либо собственные с verifiable build).
|
||
2. **Слой кодирования консенсуса.** Канонические байт-форматы (deterministic encoding) для подписанной области, идентичности, агрегации.
|
||
3. **Слой протокола.** Использование примитивов в Account Chain, NodeChain, TimeChain.
|
||
4. **Инфраструктура.** Управление ключами, мнемоника, seed (см. §"Ключи").
|
||
|
||
## 6. Адреса
|
||
|
||
Адрес ≡ SHA-256 от канонически закодированного открытого ключа ML-DSA-65, обрезанный/закодированный по правилам §"Адреса".
|
||
|
||
Свойство: адрес стабильно мало изменчив (256 бит хеша → 32 байта или base32-форма), не раскрывает PK до первой подписи (только хеш).
|
||
|
||
## 7. Подписанная область
|
||
|
||
Универсальное правило подписи: подписывается канонически закодированная структура `(тип_операции, параметры, идентичность, точка цепи)`. Никаких side-channel полей не входит в подпись. Replay protection — через seq и привязку к τ-координате.
|
||
|
||
## 8. Ключи
|
||
|
||
- Мнемоника: BIP-39-стиль, но с увеличенной длиной до 24 слов для 256-битной энтропии.
|
||
- Seed → ML-DSA-65 keypair: deterministic derivation согласно RFC 8032-стилю, адаптировано для решёточных схем.
|
||
|
||
## 9. Open вопросы
|
||
|
||
- [ ] Опубликовать KAT (Known Answer Tests) для всех примитивов на основе NIST test vectors.
|
||
- [ ] Аудит реализации liboqs или альтернативной библиотеки.
|
||
- [ ] Анализ устойчивости к атакам по сторонним каналам (timing, cache).
|
||
- [ ] Тест переключения примитивов на M9 (governance: см. [12 Управление](../12%20Управление%20и%20Обновления/)).
|
||
|
||
## 10. Источники
|
||
|
||
1. NIST FIPS 203 (2024). *Module-Lattice-Based Key-Encapsulation Mechanism Standard*.
|
||
2. NIST FIPS 204 (2024). *Module-Lattice-Based Digital Signature Standard*.
|
||
3. NIST FIPS 205 (2024). *Stateless Hash-Based Digital Signature Standard*.
|
||
4. NIST FIPS 180-4. *Secure Hash Standard*.
|
||
5. NIST SP 800-131A Rev 2 (2019). *Transitioning the Use of Cryptographic Algorithms and Key Lengths*.
|
||
6. Pietrzak, K. (2018). *Simple Verifiable Delay Functions*. ITCS.
|
||
7. Boneh, D., Bonneau, J., Bünz, B., Fisch, B. (2018). *Verifiable Delay Functions*. CRYPTO.
|
||
8. Shor, P. (1994). *Algorithms for Quantum Computation: Discrete Logarithms and Factoring*. FOCS.
|
||
9. Grover, L. (1996). *A fast quantum mechanical algorithm for database search*. STOC.
|