# Криптография Монтаны **Версия:** черновик 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.