7.9 KiB
Криптография Монтаны
Версия: черновик 1.0 Базовый источник: Montana Protocol v35.25.0 §Криптография, §Криптографическая реализация
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 Сетевой слой).
- Размер 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. Слои реализации
Согласно §"Криптографическая реализация" основной спецификации:
- Слой примитивов. Конкретные реализации (liboqs, OpenSSL, либо собственные с verifiable build).
- Слой кодирования консенсуса. Канонические байт-форматы (deterministic encoding) для подписанной области, идентичности, агрегации.
- Слой протокола. Использование примитивов в Account Chain, NodeChain, TimeChain.
- Инфраструктура. Управление ключами, мнемоника, 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 Управление).
10. Источники
- NIST FIPS 203 (2024). Module-Lattice-Based Key-Encapsulation Mechanism Standard.
- NIST FIPS 204 (2024). Module-Lattice-Based Digital Signature Standard.
- NIST FIPS 205 (2024). Stateless Hash-Based Digital Signature Standard.
- NIST FIPS 180-4. Secure Hash Standard.
- NIST SP 800-131A Rev 2 (2019). Transitioning the Use of Cryptographic Algorithms and Key Lengths.
- Pietrzak, K. (2018). Simple Verifiable Delay Functions. ITCS.
- Boneh, D., Bonneau, J., Bünz, B., Fisch, B. (2018). Verifiable Delay Functions. CRYPTO.
- Shor, P. (1994). Algorithms for Quantum Computation: Discrete Logarithms and Factoring. FOCS.
- Grover, L. (1996). A fast quantum mechanical algorithm for database search. STOC.