TIDECOIN
Получить TDC

FALCON-512: пост-квантовая схема подписи Tidecoin

FALCON-512 — решётчатая схема цифровой подписи, выбранная NIST для пост-квантовой стандартизации как FN-DSA (Draft FIPS 206). Tidecoin использует FALCON-512 как единственную схему подписи с генезис-блока (27 декабря 2020 года), что, насколько нам известно, делает его одним из самых ранних производственных развёртываний выбранного NIST алгоритма. Каждая транзакция в блокчейне Tidecoin с генезиса использует FALCON-512.

// как это работает

Как работает FALCON-512?

FALCON объединяет две конструкции: NTRU-решётки и фреймворк GPV hash-then-sign [Gentry, Peikert, Vaikuntanathan, STOC 2008].

01

Генерация ключей:

  1. 01Выбрать короткие полиномы f, g над кольцом R_q = Z_q[x]/(x^512 + 1), где q = 12 289
  2. 02Вычислить публичный ключ h = g * f^(-1) mod q
  3. 03Решить уравнение NTRU для секретного базиса B = [[g, -f], [G, -F]]
02

Подписание:

  1. 01Сгенерировать случайный 40-байтный nonce
  2. 02Хешировать сообщение в целевую точку c решётки
  3. 03Использовать Fast Fourier Sampling (ffSampling) с секретным базисом, чтобы найти короткий вектор около c
  4. 04Подпись — это сжатый короткий вектор: в среднем ~652 байта, дополненный до 666 байт
03

Проверка:

  1. 01Пересчитать целевую hash-to-point точку c
  2. 02Восстановить s1 = c - s2 * h mod q (одно умножение полиномов)
  3. 03Принять, если ||(s1, s2)||^2 <= bound (проверка нормы)

Верификация использует только целочисленную арифметику — без плавающей точки, без гауссовой выборки, без секретного ключа. ~28 000 верификаций в секунду.

// сравнение

Почему FALCON-512 — лучшая пост-квантовая подпись для блокчейна?

ПараметрFALCON-512ML-DSA-44
Размер подписи666 B2,420 B
Размер публичного ключа897 B1,312 B
Публичный ключ и подпись вместе1,563 B3,732 B
Без состоянияДаДа
Стандарт NISTDraft FIPS 206FIPS 204
Скорость верификации~28,000/sБыстрая

Листайте, чтобы сравнить все столбцы

У FALCON-512 наименьший суммарный размер публичного ключа и подписи среди рассмотренных в whitepaper решётчатых вариантов подписей из трека NIST — это критично для блокчейна, где каждый байт хранится вечно и реплицируется всеми узлами.

// защита от side-channel

Как Tidecoin предотвращает атаки по побочным каналам на FALCON?

Подписание FALCON требует высокоточной арифметики с плавающей точкой для дискретной гауссовой выборки. Нативные аппаратные операции FPU уязвимы к электромагнитному излучению, анализу энергопотребления и атакам по временному каналу — это подтверждают:

// известные атаки закрыты

FALCON DOWN

[2021, ePrint 2021/772]:

Полное восстановление ключа через электромагнитные измерения.

SHIFT SNARE

[2025]:

100% восстановление ключа по одной трассе энергопотребления на ARM Cortex-M4

// митигации pqclean

Tidecoin использует реализацию PQClean "clean" с постоянным временем работы от Томаса Порнина с целочисленной эмуляцией (FALCON_FPEMU):

Вся арифметика с плавающей точкой

эмулируется с помощью целочисленных операций uint64_t — тип C double никогда не используется

Собственная эмуляция barrel-shifter

для сдвигов с постоянным временем работы при секретных величинах сдвига

Нет ветвлений, зависящих от секретных данных;

табличные обращения читают все элементы

Полностью портативна

на 32-битных, 64-битных, little-endian и big-endian платформах

Формальная корректность эмулированной арифметики FALCON с плавающей точкой была подтверждена [Becker & Howe, ePrint 2024/321].

// баг sampler'а 2019

Был ли Tidecoin затронут багом семплера Falcon 2019 года?

Нет. В августе 2019 года Маркку-Юхани О. Сааринен обнаружил две серьёзные ошибки в гауссовом семплере Falcon (некорректные значения таблицы поиска и неверная вероятность выборки с отбраковкой). Ретроспектива 2025 года [ACM CCS 2025] показала, что ~50 миллионов ошибочных подписей могли бы позволить полностью восстановить ключ.

Томас Порнин опубликовал исправление 18 сентября 2019 года. Генезис-блок Tidecoin был добыт 27 декабря 2020 года — более чем через 15 месяцев после исправления. Tidecoin всегда использовал реализацию PQClean после исправления. Ни одна подпись Tidecoin не была создана уязвимым кодом.

// режимы верификации

Какие у Tidecoin режимы Falcon: legacy и strict?

ПараметрLegacyStrict
КогдаДо AuxPoW (текущий mainnet)После AuxPoW (предстоящая активация)
Верхняя граница нормыОслабленная: 43 533 782Стандарт PQClean: 34 034 726
Макс. размер подписи690 байт752 байта (с дополнением до 666)
ВерификацияОбратная совместимость с ранними подписямиБолее жёсткие границы безопасности

Листайте, чтобы сравнить все столбцы

Ослабленная граница нормы в режиме Legacy — порог, принятый для обратной совместимости в начале работы Tidecoin. Это не значение до исправления 2019 года: ошибка семплера 2019 года была принципиально иной проблемой, затрагивавшей таблицу поиска и формулу выборки с отбраковкой, а не границу нормы. Строгая граница соответствует стандартной эталонной реализации PQClean.

Ключи идентичны в обоих режимах. Отличаются только границы создания и верификации подписей. Существующие кошельки не требуют миграции ключей — те же ключи после активации AuxPoW создают более строгие подписи.

// fn-dsa · fips 206

Что изменится, когда NIST завершит FIPS 206?

FIPS 206 стандартизирует FALCON как FN-DSA (FFT over NTRU-Lattice-Based Digital Signature Algorithm). Основные изменения:

  1. 01

    Безопасность BUFF за счёт хеширования публичного ключа — без увеличения размера, с более сильной защитой от подделки [ePrint 2024/710]

  2. 02

    Поддержка строки контекста — разделение доменов между приложениями

  3. 03

    Повторная генерация nonce при перезапуске — устраняет тонкую утечку информации от повторного использования nonce

  4. 04

    NTRUSolve с фиксированной точкой — устраняет плавающую точку из генерации ключей (подписание по-прежнему использует эмулированную арифметику с плавающей точкой)

Кодирование публичного ключа остаётся неизменным между FALCON и FN-DSA. План перехода Tidecoin: существующие ключи работают в обоих режимах; подписи после активации согласуются с направлением FN-DSA.

// falcon faq

FALCON-512 FAQ

Вся FAQ

FALCON-512 и FN-DSA — одно и то же?

Да. FALCON — это алгоритм; FN-DSA — имя стандартизации NIST в Draft FIPS 206. Они относятся к одной и той же криптографической схеме.

Сколько подписей может создать ключ FALCON-512?

Неограниченно. FALCON не имеет состояния — нет дерева ключей, нет индекса одноразовой подписи, нет состояния для отслеживания. Один ключ может безопасно создать более 2^64 подписей. Это фундаментальное преимущество перед схемами с состоянием, такими как XMSS.

Какой уровень безопасности у FALCON-512?

Уровень безопасности NIST 1, эквивалент AES-128 против квантовых атак. Лучшая классическая атака требует 2^113+ операций (сокращение решётки). Для более высокой безопасности Tidecoin также поддерживает Falcon-1024 на уровне NIST 5 (~эквивалент AES-256).

Какие ещё блокчейны используют FALCON?

Эта страница должна быть сосредоточена на собственной реализации Tidecoin, описанной в whitepaper. Tidecoin использует Falcon-512 для подписания всех транзакций с декабря 2020 года и представляет один из наиболее ясных производственных примеров подписей семейства Falcon, защищающих действующий блокчейн с генезиса.

Источники

  • Спецификация Falcon. https://falcon-sign.info/falcon.pdf
  • Проект NIST FIPS 206. https://csrc.nist.gov/pubs/fips/206/ipd
  • Gentry, Peikert, Vaikuntanathan. «Trapdoors for Hard Lattices». STOC 2008.
  • Hoffstein, Pipher, Silverman. «NTRU». ANTS-III 1998.
  • Abou Haidar, Tibouchi. «How Bad Was The Falcon Bug of 2019?» ACM CCS 2025.
  • Guerreau et al. «FALCON Down». ePrint 2021/772.
  • Berzati et al. «SHIFT SNARE». arXiv 2504.00320, 2025.
  • Becker, Howe. «Formal Verification of Emulated Floating-Point in Falcon». ePrint 2024/321.
  • Pornin, Prest. «BUFFing FALCON». ePrint 2024/710.
  • PQClean. https://github.com/PQClean/PQClean