Pular para o conteúdo
ecdsa.com

RSA

O criptossistema de chave pública de Rivest, Shamir e Adleman (1977), cuja segurança se baseia na dificuldade de fatorar um módulo grande n = p·q e que é usado para assinaturas e, historicamente, para transporte de chaves.
Também escrito comoRivest–Shamir–AdlemanRSA keyRSA signature

Um par de chaves é um módulo n = p·q de 2048 a 4096 bits, um expoente público e (quase sempre 65537) e um expoente privado d = e⁻¹ mod lcm(p − 1, q − 1). As chaves privadas costumam trazer também p, q e os valores CRT dP, dQ e qInv, que deixam a assinatura cerca de quatro vezes mais rápida (a estrutura RSAPrivateKey do PKCS #1, RFC 8017, apêndice A.1.2). Assinar eleva uma mensagem codificada à potência d módulo n; verificar eleva a assinatura a e e compara o resultado com a codificação esperada.

O RSA puro é maleável e falsificável, por isso um esquema de padding sempre faz parte do algoritmo: RSASSA-PKCS1-v1_5 (determinístico, RS256 no JOSE) ou RSASSA-PSS (aleatorizado, PS256) para assinaturas, e RSAES-OAEP para criptografia. O padding de criptografia mais antigo, do PKCS #1 v1.5, permitiu os ataques de padding oracle de Bleichenbacher; o TLS 1.3 eliminou totalmente o transporte de chaves RSA. O FIPS 186-5 §5.4 exige exatamente dois primos e um expoente público ímpar entre 2¹⁶ e 2²⁵⁶.

Uma assinatura tem o tamanho do módulo: 256 bytes no RSA-2048, 384 no RSA-3072, 512 no RSA-4096. A SP 800-57 Parte 1 classifica 2048 bits como segurança de 112 bits e 3072 bits como de 128 bits. A verificação é barata e a geração de assinaturas, não: em um núcleo de um Apple M4 Max com OpenSSL 3.6.5, o RSA-2048 assina cerca de 3.000 e verifica cerca de 114.000 mensagens por segundo, e gerar uma chave de 2048 bits leva em média cerca de 26 ms, com grande variação.

O NIST IR 8547 (versão preliminar pública inicial) propõe descontinuar o RSA de 112 bits (2048 bits) depois de 2030 e proibir todo RSA depois de 2035. Veja ECDSA vs RSA para a comparação com as curvas elípticas.

Padrões e referências

Todos os termos