ML-DSA: постквантовая цифровая подпись (FIPS 204, Dilithium) простыми словами

ML-DSA (Module Lattice–based Digital Signature Algorithm) — стандарт постквантовой цифровой подписи на модульных решётках (семейство Dilithium), принятый в NIST как FIPS 204. Он призван заменить/дополнить классические ECDSA/EdDSA, устойчивые к «обычным» атакам, но уязвимые к квантовым (алгоритм Шора). ML-DSA вместе с ML-KEM (FIPS 203, Kyber) и SLH-DSA (FIPS 205, SPHINCS+) образует «ядро» стандартизованной PQC (post-quantum cryptography).

ML-DSA: постквантовая цифровая подпись (FIPS 204, Dilithium) простыми словами

*Для чего в Web3:* защита кошельков, протоколов, RPC и корпоративных систем на горизонте «квантовых рисков». В блокчейн-мире ожидается гибридный период: параллельное применение классики и PQC.

См. также: Безопасность в крипте, Bitcoin, Ethereum, BTQ Technologies.

Коротко о математике (без боли)

  • Основание безопасности: задачи module-LWE/LWR над кольцом полиномов \( R_q = \mathbb{Z}_q[x]/(x^{256}+1) \) с простым модулем \( q = 8380417 \).
  • Идея подписи: коммитмент → хэш-вызов (Fiat–Shamir) → ответ с rejection-sampling, чтобы выходы выглядели «правдоподобно случайными».
  • Хэш-функции: SHAKE-128/256 (XOF) — и для расширения сидов, и для вычисления челленджа.
  • Детерминизм с солью: подпись может быть детерминированной (из ключа и сообщения) с опциональной «солёной» рандомизацией для защиты от сайд-чейнов.
Вам не нужно понимать решётки, чтобы пользоваться ML-DSA. Важно знать: большие ключи/подписи, быстрые операции, и никаких зависимостей от эллиптических кривых.

Параметры и размеры (что попадёт в ваш протокол)

Профиль (FIPS 204) Категория стойкости (NIST) Публичный ключ Секретный ключ Подпись Типичные применения
ML-DSA-44 (≈ Dilithium-2) Level 2 ~1.3 KB ~2.5 KB ~2.4 KB Пользовательские устройства, кошельки
ML-DSA-65 (≈ Dilithium-3) Level 3 ~1.95 KB ~4.0 KB ~3.3 KB Биржи, валидаторы, корпоративные сервисы
ML-DSA-87 (≈ Dilithium-5) Level 5 ~2.6 KB ~4.9 KB ~4.6 KB Критичные контуры, долговременные ключи

Примечания:

  • Точные байтовые размеры зависят от реализации/энкодинга, но порядок величин — такой.
  • В 40–70 раз больше, чем у ECDSA-secp256k1 по подписи (но при этом — высокая скорость на CPU).
  • Публичные ключи кодируются компактно; верификация часто быстрее, чем у «тяжёлых» альтернатив (например, у чисто хешевых SQISign/SLH-DSA — другая картина по размерам/скоростям).

Производительность: где «узкие места»

  • Клиентские устройства. ML-DSA работает быстро на обычных CPU/ARM: тысячи подписей/сек на десктопе, сотни — на смартфонах.
  • Серверы/валидаторы. Верификация масштабируется; батчи дают хорошие TPS. Для экстремальных нагрузок пригодятся аппаратные оптимизации (PIM/инструкции) и SIMD.
  • Сеть/сторедж. Главный «ценник» — размер подписи в транзакциях/блоках и в state. В UX это значит: чуть больше газа/комиссий и времён передачи.

Как это работает (жизненный цикл ключей и подписи)

Генерация ключей (KeyGen)

Вход: seed

Расширить seed через SHAKE → матрица A и секретные векторы s1, s2.

Вычислить t = A·s1 + s2 (в кольце R_q), разложить на (t1, t0).

Публичный ключ: pk = (ρ, t1); секретный: sk = (ρ, K, tr, s1, s2, t0).

Подпись (Sign)

Вход: sk, сообщение m

μ = H(tr | | m); создать случайный вектор y из XOF(sk, m).

w = A·y; c = H(μ | | w1).

z = y + c·s1; проверка границ и «rejection-sampling».

Подпись: (z, h, c) / / сжатые компоненты.

Проверка (Verify)

Вход: pk, m, (z, h, c)

Проверить «норму» z; восстановить w' из pk, z, c.

Сравнить c с H(μ | | w'1). Совпало → валидно.

На практике всё прячется в библиотеку; контракты видят только байтовые строки.

Где ML-DSA в блокчейне/крипте

  • Кошельки и подписи транзакций. Планы «гибридных» кошельков: ECDSA/EdDSA + ML-DSA. Это даёт обратную совместимость с существующей сетью и «страховку» на будущее.
  • RPC/релеи/оракулы. Защита от «хранения-сейчас-взлома-потом» (harvest-now-decrypt-later): подписывать данные/каналы PQC-ключами уже сегодня. См. Оракул.
  • Корпоративные кастоди/биржи. Внутренние подписи, чек-апрувы, архивные хранилища — перевод на PQC снижает риски ретро-взлома.
  • Новые L1/L2. Проще, чем мигрировать старые сети: сразу выбрать ML-DSA или гибрид.

См. также: BTQ Technologies (PQC-SDK и демо), Безопасность.

Миграция: практическая стратегия для Web3-команд

1) Крипто-агильность в коде

  • Абстрагируйте подпись: интерфейс sign/verify с указанием алгоритма/версии.
  • Версионируйте адрес/публичный ключ (bech32/CBOR/SSZ с полем algo).

2) Гибридные подписи

  • Транзакция несёт две подписи (классика + ML-DSA) или агрегированную структуру.
  • Правило приёма: сеть/узлы принимают, если обе (или одна, согласно фазе миграции) валидны.

3) Форматы и газ

  • Для EVM: прятать большие подписи в calldata/логах дороже; нужен EIP-дизайн/прекомпилы.
  • Для UTXO: новые witness-типы/OP-коды и полис размера блока.

4) Управление ключами

  • Большие ключи/подписи → HSM/TEE с поддержкой XOF/SHAKE и «широких» ключей.
  • Ротация и отзыв: планы «переиздания» адресов, метаданные совместимости.

5) Производительность

  • Бенчмарки на целевом железе; оценка TPS и latency.
  • Если узко — применить аппаратные ускорители (см. PIM/QCIM в BTQ).

6) UX и риск

  • Пользователю — простой «переключатель» алгоритма и понятные предупреждения.
  • Документация: «почему подписи стали больше», «зачем это всё».

Сравнение с альтернативами PQC

Алгоритм Класс Подпись (байт) pk (байт) Скорость Плюсы Минусы
ML-DSA (Dilithium) Решётки ~2.4–4.6K ~1.3–2.6K Высокая Баланс размера/скорости, простая проверка Подпись крупнее ECDSA
SLH-DSA (SPHINCS+) Хеш-подписи ~8–30K ~16–32 Безопасность на хешах, без матем. допущений Очень большие подписи
(Классика) ECDSA/EdDSA Эллипт. кривые 64–96 32–64 Отличная Компактно, дешево Уязвимо к квантовым атакам

*Практика*: в гибриде ML-DSA + ECDSA получаем компактность и PQC-страховку.

Риски и лучшие практики

  • Сайд-чейны/время выполнения. Реализация обязана быть константного времени; избегайте ветвлений по секретным данным.
  • Fault-injection. Защита от «глитчей», проверки длин/границ массивов, отказ при несоответствии.
  • Случайность. При детерминированной подписи используйте добавочную соль (rand), чтобы усложнить утечки побочных каналов.
  • Хранение ключей. Большие ключи = новые требования к бэкапам; зашифрованные контейнеры, разделение на шёрами (Shamir).
  • Политики жизни ключей. Меньше «мульти-сроков» и длительных reuse; ротация по расписанию.
  • Совместимость. Ясная политика: где нужна двойная подпись, где достаточно одной; версия протокола в сообщении.

Мини-FAQ

ML-DSA — это «тот самый» Dilithium? Да. ML-DSA — стандартизованная форма семейства Dilithium с конкретными профилями и форматами.

Почему подпись такая большая? Так устроены решёточные схемы. Компенсируется скоростью и безопасностью против квантовых атак. На практике используют компромиссы формата/газа и гибрид.

Это готово для мейннета биткоина/эфира? Пока в виде исследований/экспериментов и дорожных карт. Нужны протокольные изменения (форматы транзакций/прекомпилы) и широкая поддержка клиентов.

Что выбрать: ML-DSA-44/65/87? Для кошельков/массовых клиентов — 44; для бирж/валидаторов — 65; для долгоживущих ключей/архивов — 87.

Чек-лист интегратора

  • Введите algo=ML-DSA в ваших интерфейсах подписи; храните pk/sk в стандартизованных контейнерах.
  • Добавьте гибридные подписи (классика + ML-DSA) в транзакции/сообщения.
  • Протестируйте TPS/газ/латентность; при необходимости — аппаратное ускорение.
  • Обновите HSM/TEE и процедуры бэкапа/ротации.
  • Обозначьте миграционные фазы для пользователей и партнёров; логируйте версии ключей и алгоритмов.
  • Проведите аудит реализации и тесты на сайд-чейны/ошибки памяти.

См. также

Task Runner