Безопасность Монтаны полностью держится на постквантовых примитивах, стандартизованных NIST в 2024 году, и на хеш-функции SHA-256. Никаких эллиптических кривых, никакого pairing, никакого ECDSA/EdDSA. Это сознательный выбор: алгоритм Шора на достаточно мощном квантовом компьютере ломает дискретный логарифм за полиномиальное время; протокол не должен зависеть от того, когда такой компьютер появится.
## 2. Используемые примитивы
| Назначение | Примитив | Стандарт | Биты безопасности |
- Категория безопасности 3 (≥ 192-битная классическая стойкость; эквивалент AES-192).
- Размер открытого ключа: 1952 байт. Размер подписи: 3309 байт.
- EUF-CMA-стойкая в ROM, доказана редукция к Module-LWE и Module-SIS.
**Альтернативы рассмотрены:**
- Falcon-512: меньшие подписи (666 байт), но deterministic-вариант требует осторожной реализации с плавающей запятой → угроза имплементационных ошибок.
- SLH-DSA: hash-based, но подписи 17–49 КБ — неприемлемо для блочной сети с миллиардом аккаунтов.
-В составе 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 |
Согласно §"Криптографическая реализация" основной спецификации:
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).