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

7.9 KiB
Raw Permalink Blame History

Криптография Монтаны

Версия: черновик 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, но подписи 1749 КБ — неприемлемо для блочной сети с миллиардом аккаунтов.

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. Слои реализации

Согласно §"Криптографическая реализация" основной спецификации:

  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 Управление).

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.