Pular para o conteúdo
ecdsa.com

FN-DSA (Falcon) vs ML-DSA: assinatura compacta ou simples

As assinaturas do Falcon têm cerca de um quarto do tamanho das do ML-DSA, o que faz diferença em certificados e em conexões com pouca banda. O ML-DSA é padronizado, mais fácil de implementar com segurança e a escolha padrão hoje.

FN-DSA vs ML-DSA compara os dois esquemas de assinatura baseados em reticulados que o NIST selecionou em 2022. O ML-DSA (derivado do CRYSTALS-Dilithium) se tornou o FIPS 204 em agosto de 2024. O FN-DSA, nome que o NIST deu ao Falcon, está sendo padronizado como FIPS 206, que ainda era um rascunho em outubro de 2026. O Falcon é muito mais compacto; o ML-DSA é muito mais fácil de implementar corretamente.

Visão geral

FN-DSA-512 (Falcon-512)ML-DSA-44FN-DSA-1024 (Falcon-1024)ML-DSA-87
Categoria de segurança1255
Chave pública897 bytes1.312 bytes1.793 bytes2.592 bytes
Assinatura666 bytes (com padding)2.420 bytes1.280 bytes (com padding)4.627 bytes
Chave pública + assinatura1.563 bytes3.732 bytes3.073 bytes7.219 bytes
Família de reticuladosNTRUModule-LWE / Module-SISNTRUModule-LWE / Module-SIS
Aritmética na assinaturaPonto flutuante (amostragem gaussiana discreta)Apenas inteirosPonto flutuanteApenas inteiros
PadrãoRascunho do FIPS 206FIPS 204 (final, 2024)Rascunho do FIPS 206FIPS 204
X.509Ainda não padronizadoRFC 9881Ainda não padronizadoRFC 9881

Tamanhos do Falcon segundo a especificação do Falcon (as assinaturas também podem usar uma codificação comprimida de comprimento variável, de no máximo 752 e 1.462 bytes); tamanhos do ML-DSA segundo a Tabela 2 do FIPS 204. O ML-DSA-65 (categoria 3) não tem equivalente no Falcon.

Por que o tamanho importa

O Falcon produz um vetor curto em um reticulado NTRU usando um alçapão (trapdoor) e amostragem rápida de Fourier, o que resulta na menor soma de chave pública e assinatura entre todas as assinaturas pós-quânticas do NIST: cerca de 1,6 KB na categoria 1, contra 3,7 KB do ML-DSA-44. Em uma cadeia de certificados TLS, em que cada certificado carrega uma chave pública e uma assinatura e o handshake acrescenta mais assinaturas e SCTs, essa diferença separa uma cadeia que mais ou menos dobra de tamanho de uma que fica quatro vezes maior. O DNSSEC, em que as assinaturas precisam caber em respostas UDP, e as blockchains, em que cada byte custa taxas, sentem isso ainda mais.

Por que a implementação é a parte difícil

O algoritmo de assinatura do Falcon amostra de uma distribuição gaussiana discreta sobre o reticulado usando aritmética de ponto flutuante. Isso cria três problemas que o ML-DSA não tem:

  • Tempo constante. Em algumas CPUs, operações de ponto flutuante podem levar um tempo que depende dos dados, e emulá-las com inteiros é lento; ataques publicados em pesquisas já mostraram que vazamentos de tempo no amostrador revelam as chaves.
  • Testabilidade. Duas implementações corretas podem produzir assinaturas diferentes para a mesma entrada por causa de arredondamentos, então testes de resposta conhecida (known-answer tests) não conseguem detectar um amostrador com um viés sutil, e um amostrador enviesado continua produzindo assinaturas válidas enquanto vaza informações sobre a chave. Em setembro de 2026, a equipe do FIPS 206 no NIST propôs um procedimento de assinatura em ponto fixo justamente para que as implementações se tornem determinísticas e testáveis.
  • Portabilidade. Processadores embarcados sem unidade de ponto flutuante precisam de emulação em software, o que custa velocidade e tamanho de código.

O ML-DSA usa apenas aritmética de inteiros módulo 8.380.417, com amostragem por rejeição; é simples de implementar em tempo constante, e as saídas dele são totalmente especificadas pelo FIPS 204. A verificação é fácil nos dois, e o Falcon verifica de forma especialmente rápida: a implementação de referência da equipe do Falcon informa cerca de 27.900 verificações e 5.900 assinaturas Falcon-512 por segundo em um Intel Core i5-8259U a 2,3 GHz. Em um núcleo do Apple M4 Max, o código portátil de ML-DSA-44 do OpenSSL 3.6.5 registrou cerca de 20.800 verificações e 3.900 assinaturas por segundo. As máquinas são diferentes, então leia esses números como ordens de grandeza, e não como um benchmark direto.

Status da padronização

  • ML-DSA: final desde 13 de agosto de 2024 (FIPS 204), com identificadores X.509 (RFC 9881), perfis para CMS e OpenPGP, escolhido pelo CNSA 2.0 (ML-DSA-87) e com módulos validados.
  • FN-DSA: o NIST anunciou em julho de 2022 que padronizaria o Falcon e planejou o FIPS 206 para depois dos FIPS 204 e 205. Em 2025, a equipe do NIST disse que o rascunho público inicial estava praticamente pronto e aguardava aprovação; em outubro de 2026 ainda não existe padrão final, e a proposta de ponto fixo de setembro de 2026 mostra que a especificação ainda está mudando. Os Internet-Drafts da IETF para FN-DSA em JOSE, COSE e X.509 acompanham o FIPS.

Como o FIPS 206 pode diferir da especificação do Falcon da rodada 3, as implementações escritas hoje podem precisar de mudanças para corresponder ao padrão final.

Quando escolher cada um

  • Assinatura pós-quântica de uso geral hoje: ML-DSA (44 ou 65).
  • Implantações guiadas por conformidade (FIPS 140-3, CNSA 2.0): ML-DSA; o FN-DSA não pode ser validado antes de o FIPS 206 ser finalizado.
  • Protocolos com muitos certificados, no futuro (cadeias TLS, DNSSEC, atualizações de IoT com recursos limitados): acompanhe o FN-DSA; ele é o caminho mais provável para manter sob controle a sobrecarga das assinaturas sem mudar a estrutura do protocolo.
  • Hardware sem ponto flutuante ou com requisitos rígidos contra canais laterais: ML-DSA, ou o Falcon apenas com uma implementação em inteiros, de tempo constante e auditada.
  • Raízes de longa duração em que o tamanho é irrelevante: SLH-DSA, cuja segurança se apoia apenas em funções de hash, ou ML-DSA; as assinaturas pequenas do FN-DSA não trazem nenhuma vantagem nesse caso.

Notas de migração

  1. Projete pensando em agilidade criptográfica: inclua identificadores de algoritmo, evite tamanhos fixos de assinatura e esteja pronto para adicionar o FN-DSA como segunda opção pós-quântica ao lado do ML-DSA.
  2. Prototipe com cuidado: use bibliotecas que implementem o amostrador do Falcon em tempo constante e marque a saída delas como pré-padrão; não as coloque em produção onde um padrão for exigido.
  3. Meça o orçamento de tamanho do seu protocolo com o ML-DSA hoje; se couber, talvez você nunca precise do FN-DSA ali.
  4. Acompanhe a versão final do FIPS 206: nomes de parâmetros, codificações e o procedimento de assinatura podem diferir do Falcon da rodada 3, e, com isso, os vetores de teste também vão mudar.
  5. Considere os híbridos: assinaturas compostas combinam um esquema pós-quântico com ECDSA ou EdDSA durante a transição, qualquer que seja o esquema de reticulado escolhido.

Referências

Todas as comparações