#!/intro

Com o avanço inevitável da computação quântica, os algoritmos criptográficos atualmente utilizados tornam-se progressivamente inseguros (veja também A ameaça quântica: o fim da criptografia clássica). Para enfrentar este desafio, o NIST (Instituto Nacional de Padrões e Tecnologia dos Estados Unidos) selecionou três algoritmos baseados em diferentes paradigmas matemáticos, capazes de resistir a este novo tipo de ameaça.

O novos algoritmos pós-quânticos, ML-KEM, ML-DSA e SLH-DSA, foram concebidos não apenas para resistir a ataques com recurso a computadores quânticos, mas também para assegurar eficiência computacional, escalabilidade, compatibilidade com sistemas existentes, resistência a ataques clássicos e viabilidade de implementação em ambientes com recursos limitados.


> ML-KEM

O Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM), baseado no CRYSTALS-Kyber, é um algoritmo de troca de chaves assimétrico que assenta no problema Learning With Errors para módulos (Module-LWE).

O algoritmo implementa um mecanismo de encapsulamento de chave simétrica, permitindo o estabelecimento de um segredo partilhado entre duas partes sem necessidade de troca prévia de informação sensível.

No processo de encapsulamento, o remetente utiliza a chave pública do destinatário para gerar um segredo partilhado.

o encapsulamento da chave simétrica ocorre através da multiplicação da chave pública por um vetor secreto aleatório, acrescido de ruído. Este processo é irreversível na ausência da chave privada, devido à natureza do erro introduzido.

O seu desempenho é elevado podendo atingir milhares de operações por segundo mesmo em processadores ARM.

As três variantes aprovadas têm os seguintes parâmetros:

Configuração Segurança Chave pública/privada (bytes) Texto cifrado (bytes)
ML-KEM-512 Categoria 1 800 / 1632 768
ML-KEM-768 Categoria 3 1184 / 2400 1088
ML-KEM-1024 Categoria 5 1568 / 3168 1568

A seleção da configuração mais adequada depende do compromisso entre o nível de segurança pretendido, o desempenho necessário e os recursos de largura de banda disponíveis.

Nos testes de desempenho realizados, o ML-KEM demonstrou velocidades de encapsulamento e decapsulamento significativamente superiores às do RSA, especialmente para níveis de segurança equivalentes. Esta eficiência torna-o particularmente adequado para aplicações modernas, incluindo comunicações seguras em dispositivos móveis, terminais IoT e sistemas com exigências elevadas de escalabilidade.


> ML-DSA

O Module-Lattice-Based Digital Signature Algorithm (ML-DSA) é um esquema de assinatura digital que deriva do CRYSTALS-Dilithium, também baseado no problema Module-LWE.

A principal característica distintiva do ML-DSA está na capacidade de criação de assinaturas estatisticamente indistinguíveis de ruído aleatório. Para alcançar esta propriedade, o ML-DSA recorre a um mecanismo de rejeição de amostras criteriosamente calibrado, de modo a garantir que a distribuição das assinaturas não expõe componentes da chave privada. O esquema utiliza ainda funções de dispersão criptográfica determinísticas e evita o uso de operações de vírgula flutuante, reforçando assim a sua resistência a ataques práticos, incluindo ataques por canal lateral.

O ML-DSA define três configurações:

Configuração Segurança Chave pública / privada (bytes) Assinatura (bytes)
ML-DSA-44 Categoria 2 1312 / 2560 2420
ML-DSA-65 Categoria 3 1952 / 4032 3309
ML-DSA-87 Categoria 5 2592 / 4896 4627

O ML-DSA é adequado para ambientes com restrições de desempenho, oferecendo assinaturas compactas e verificação eficiente. A utilização de uma única semente de 256 bits para gerar a chave privada contribui para uma gestão de chaves mais simples e eficiente, o que é particularmente vantajoso em dispositivos com capacidade de armazenamento limitada. Esta abordagem reduz o espaço necessário para armazenar ou transmitir chaves privadas, mantendo simultaneamente a robustez criptográfica exigida para resistir a ataques.


> SLH-DSA

O Stateless Hash-Based Digital Signature Algorithm (SLH-DSA) é um algoritmo de assinatura digital construído sobre o esquema SPHINCS+, que utiliza apenas funções de dispersão criptográfica, ou hashing, resistentes a colisões. Ao contrário de esquemas baseados em estruturas algébricas, a sua segurança decorre de suposições mais elementares, como a resistência de funções SHA-2 e SHAKE.

Trata-se de um algoritmo stateless, o que significa que não requer o registo de chaves previamente utilizadas, eliminando uma classe inteira de falhas associadas à gestão de estado. O SLH-DSA oferece verificações extremamente robustas, mas resulta em assinaturas muito longas, que variam de acordo com o nível de segurança e otimização. Em todas as variantes, o tamanho da chave pública é fixo em 32 bytes e o da chave privada em 64 bytes. Estes valores são independentes do nível de segurança, função de dispersão ou modo de otimização.

Configurações típicas:

Variante Segurança Otimização Hash Assinatura (bytes)
SLH-DSA-SHA2-128s Categoria 1 Tamanho SHA-2 7856
SLH-DSA-SHAKE-128s Categoria 1 Tamanho SHAKE 7856
SLH-DSA-SHA2-128f Categoria 1 Desempenho SHA-2 17088
SLH-DSA-SHAKE-128f Categoria 1 Desempenho SHAKE 17088
SLH-DSA-SHA2-192s Categoria 3 Tamanho SHA-2 16224
SLH-DSA-SHAKE-192s Categoria 3 Tamanho SHAKE 16224
SLH-DSA-SHA2-192f Categoria 3 Desempenho SHA-2 35664
SLH-DSA-SHAKE-192f Categoria 3 Desempenho SHAKE 35664
SLH-DSA-SHA2-256s Categoria 5 Tamanho SHA-2 29792
SLH-DSA-SHAKE-256s Categoria 5 Tamanho SHAKE 29792
SLH-DSA-SHA2-256f Categoria 5 Desempenho SHA-2 49856
SLH-DSA-SHAKE-256f Categoria 5 Desempenho SHAKE 49856

As configurações diferem consoante o objetivo da implementação, podendo privilegiar a redução do tamanho das assinaturas ou a eficiência computacional. As variantes terminadas em “s” são orientadas para o tamanho, enquanto as “f” priorizam o desempenho. Cada variante está, por sua vez, associada a uma categoria de segurança, que representa o nível de robustez esperado contra ataques com recursos convencionais.

Quanto à função de dispersão, as variantes utilizam o SHA-2 ou SHAKE, dependendo da configuração. Ambas as funções oferecem resistência criptográfica equivalente; a escolha entre SHA-2 e SHAKE depende sobretudo de requisitos de compatibilidade, desempenho e disponibilidade de suporte.

SLH-DSA-SHA2-128s é uma configuração compacta de Categoria 1 com assinatura de 7856 bytes, ao passo que SLH-DSA-SHAKE-256f, de Categoria 5 e orientada para o desempenho, apresenta um tamanho de assinatura de 49856 bytes.

Apesar do tamanho elevado das assinaturas, a simplicidade da implementação e a ausência de operações complexas tornam o SLH-DSA uma opção de confiança para aplicações de longo prazo e infraestruturas críticas.


> categorias

A definição de categorias de segurança pelo NIST permite quantificar, de forma padronizada, a robustez de algoritmos criptográficos face a adversários com recursos clássicos (veja também Níveis de segurança em criptografia: conceitos e aplicações). Cada categoria estabelece um nível de esforço computacional mínimo necessário para quebrar o sistema, tomando como referência equivalentes simétricos. Esta classificação foi adotada no processo de avaliação dos algoritmos pós-quânticos, para permitir comparar dimensões de chaves, assinaturas e desempenho com base numa métrica comum de resistência criptográfica.

Categorias de segurança:

Categoria Segurança (bits) Equivalente simétrico Exemplo típico (clássico)
1 128 AES-128 ECC P-256, RSA-3072
2 192
3 ~192 AES-192 ECC P-384, RSA-7680
4 212
5 ~256 AES-256 ECC P-521, RSA-15360

As categorias 1, 3 e 5 são as mais relevantes, pois correspondem a níveis de segurança com equivalentes simétricos bem definidos, como AES-128, AES-192 e AES-256. As categorias 2 e 4 têm utilidade marginal e surgem sobretudo em avaliações intermédias ou casos teóricos.

A correspondência entre categorias e algoritmos clássicos baseia-se nas recomendações do NIST SP 800-57, considerando o esforço computacional estimado para comprometer a segurança com recursos convencionais.


> comparação

A transição para estes novos algoritmos implica mudanças significativas, nomeadamente no que respeita à eficiência e aos requisitos de armazenamento. As assinaturas digitais convencionais, como RSA e ECDSA, caracterizam-se por tamanhos bastante reduzidos quando comparadas com os algoritmos PQC. A tabela seguinte ilustra a diferença nos tamanhos das assinaturas, agrupando os algoritmos por tipo e categoria de segurança.

Algoritmo Tipo Segurança Assinatura (bytes)
RSA-2048 Convencional ≈ Categoria 1 256
ECDSA P-256 Convencional ≈ Categoria 1 64
ML-DSA-44 Pós-quântico Categoria 2 2420
ML-DSA-65 Pós-quântico Categoria 3 3309
ML-DSA-87 Pós-quântico Categoria 5 4627
SLH-DSA-SHA2-128s Pós-quântico Categoria 1 7856
SLH-DSA-SHAKE-128f Pós-quântico Categoria 1 17088
SLH-DSA-SHAKE-192s Pós-quântico Categoria 3 16224
SLH-DSA-SHA2-192f Pós-quântico Categoria 3 35664
SLH-DSA-SHAKE-256s Pós-quântico Categoria 5 29792
SLH-DSA-SHA2-256f Pós-quântico Categoria 5 49856

> conclusão

Cada um dos três algoritmos padronizados pelo NIST oferece um compromisso distinto entre segurança, desempenho e aplicabilidade. O ML-KEM é uma escolha prática e eficiente para a troca de chaves; o ML-DSA fornece assinaturas robustas com excelente desempenho de verificação; e o SLH-DSA, apesar do seu tamanho, destaca-se pela sua solidez conceptual e independência de estruturas matemáticas complexas.

A diversidade de abordagens matemáticas destes algoritmos é uma salvaguarda adicional contra falhas inesperadas. A sua adoção constitui um passo essencial para a preparação das infraestruturas digitais perante a inevitável ascensão da computação quântica.

> referencias

NIST - Post-Quantum Cryptography Standardization
Projeto do NIST dedicado à normalização de algoritmos resistentes à computação quântica.

FIPS 203 - ML-KEM (CRYSTALS-Dilithium)
Especificação oficial do mecanismo de encapsulamento de chaves ML-KEM.

FIPS 204 - ML-DSA (CRYSTALS-KYBER)
Especificação oficial do mecanismo de assinatura digital ML-DSA.

FIPS 205 - SLH-DSA (SPHINCS+)
Especificação oficial do mecanismo de assinatura SLH-DSA.

> status: finished
> exit 0