montana/Формальная Документация/02 Криптография/Постквантовые-примитивы.md

99 lines
7.9 KiB
Markdown
Raw Normal View History

2026-05-04 04:49:09 +03:00
# Криптография Монтаны
**Версия:** черновик 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, но подписи 1749 КБ — неприемлемо для блочной сети с миллиардом аккаунтов.
### 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.