Подписи CRYSTALS-Dilithium и Falcon
Сравните схемы цифровых подписей на основе решёток, стандартизированные NIST
«Подписи CRYSTALS-Dilithium и Falcon» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.
Зачем нужны постквантовые подписи
Подписи RSA и ECDSA взламываются алгоритмом Шора. Постквантовые подписи должны заменить их для сертификатов TLS, подписывания кода, подписывания электронной почты (S/MIME, PGP) и проверки подлинности обновлений программного обеспечения. NIST стандартизовал две схемы на основе решёток: ML-DSA и FN-DSA.
CRYSTALS-Dilithium (ML-DSA)
Dilithium основан на сложности задач Module-LWE и Module-SIS (задача короткого целочисленного решения). Доказательство стойкости построено в модели QROM (квантовая модель случайного оракула). Существуют три варианта: Dilithium2 (около 128 бит), Dilithium3 (около 192 бит) и Dilithium5 (около 256 бит). Путь формирования подписи прост и не требует выборки с отклонением.
Формирование подписи Dilithium
Закрытый ключ: секретные матрицы s1, s2. Открытый ключ: t = As1 + s2. Для формирования подписи выберите случайное y; вычислите w = Ay; вычислите вызов c = H(mu || w1), где w1 = HighBits(w); вычислите z = y + cs1; если ||z|| или ||r0|| слишком велико, отклоните результат и повторите попытку. Результат: (z, c, hint).
Проверка подписи Dilithium
Для проверки (z, c, hint) убедитесь, что ||z|| мало; вычислите w' = Az - ct; с помощью hint восстановите w1; проверьте c == H(mu || w1). Подсказка — это небольшое число битов из MakeHint(). Отклонение результатов не позволяет z раскрыть s1 — обоснование стойкости строится на аргументе «сначала прерывание, затем равномерное распределение».
Размеры ключей и подписей Dilithium
ML-DSA-65 (Dilithium3, стойкость 192 бита): открытый ключ — 1952 байта, закрытый ключ — 4000 байт, подпись — 3293 байта. Для сравнения, ECDSA-P256 использует открытый ключ размером 64 байта и подпись размером 64 байта. Подписи Dilithium примерно в 40–50 раз больше, но устойчивы к квантовым атакам.
Falcon (FN-DSA)
Falcon основан на решётках NTRU и использует гауссовский генератор над решёткой NTRU. Подписи значительно меньше, чем у Dilithium, но для формирования подписи требуется гауссовский генератор с плавающей точкой — его сложнее реализовать за постоянное время и безопасно запрограммировать.
Размеры ключей и подписей Falcon
Falcon-512 (стойкость 128 бит): открытый ключ — 897 байт, подпись — 666 байт, что значительно меньше, чем у Dilithium. Компромисс: Falcon сложнее безопасно реализовать (выборка по гауссовскому распределению уязвима для атак по времени выполнения). Он подходит для сред с ограниченной пропускной способностью, но требует тщательной реализации.
SPHINCS+ (SLH-DSA)
SPHINCS+ — схема подписей на основе хеш-функций и консервативный выбор, не опирающийся на структурные алгебраические предположения. Стойкость зависит только от стойкости хеш-функции. Размер подписи составляет около 8–50 KB, то есть она большая. Формирование подписи выполняется медленно. Схема используется там, где критична долгосрочная надёжность, а производительность вторична.
Выбор схемы
ML-DSA (Dilithium): общего назначения, простая реализация, подходит для сертификатов TLS и подписывания кода. FN-DSA (Falcon): среды с ограниченной пропускной способностью (Интернет вещей, LPWAN). SLH-DSA (SPHINCS+): крайне консервативный выбор для долгоживущих корней (автономные ключи CA, программный корень доверия).
Особенности реализации
Dilithium: выборка с отклонением может раскрывать информацию по времени выполнения ветвлений — используйте сравнение за постоянное время. Falcon: гауссовский генератор использует арифметику с плавающей точкой — обеспечьте детерминизм FP. Для обоих алгоритмов избегайте побочных каналов в арифметике многочленов. Используйте эталонные реализации из пакетов заявок NIST.
Стандарты FIPS
NIST FIPS 204: ML-DSA (Dilithium). NIST FIPS 205: SLH-DSA (SPHINCS+). NIST FIPS 206: FN-DSA (Falcon). Все они опубликованы в августе 2024 года. Библиотеки OpenSSL 3.x, BoringSSL и liboqs (проект Open Quantum Safe) реализуют все три схемы.
Быстрая проверка
В чём главное преимущество Falcon перед Dilithium?
Повторение
ML-DSA (Dilithium): на основе решёток, простая реализация, подписи размером около 3 KB. FN-DSA (Falcon): на основе NTRU, подписи размером около 700 байт, сложная реализация. SLH-DSA (SPHINCS+): на основе хеш-функций, консервативная схема, большие подписи. Все стандартизованы в документах FIPS 204/205/206. Далее: переход на PQC с использованием гибридных подходов.
Часто задаваемые вопросы
Урок «Подписи CRYSTALS-Dilithium и Falcon» бесплатный?
Да — полный текст урока «Подписи CRYSTALS-Dilithium и Falcon» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.
Чему я научусь в уроке «Подписи CRYSTALS-Dilithium и Falcon»?
Сравните схемы цифровых подписей на основе решёток, стандартизированные NIST Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cryptology Academy?
Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Подписи CRYSTALS-Dilithium и Falcon»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cryptology Academy?
Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Алгоритмы Шора и Гровера: объяснение
- CRYSTALS-Kyber: KEM на основе решёток
- Подписи CRYSTALS-Dilithium и Falcon
- Переход на PQC: гибридные подходы