Nota SeguraBR

RSA-PSS: o que é e como funciona

A forma moderna de assinar com RSA: um preenchimento com sal aleatório e uma prova de segurança.

O que é

RSA-PSS é o algoritmo de assinatura digital RSA com o preenchimento PSS (Probabilistic Signature Scheme). O PSS foi proposto por Mihir Bellare e Phillip Rogaway em 1996, os mesmos autores do OAEP, e entrou no padrão PKCS #1, hoje publicado como RFC 8017.

O RSA serve tanto para cifrar quanto para assinar, mas cada uso tem o seu preenchimento: o OAEP para cifrar e o PSS para assinar.

Como funciona

Para assinar, o algoritmo calcula o hash da mensagem, mistura esse hash com um sal aleatório e monta um bloco do tamanho da chave. Depois, aplica a operação RSA com a chave privada. Para conferir, quem recebe aplica a operação RSA com a chave pública e checa se o bloco corresponde ao hash da mensagem.

Com uma chave de 2048 bits, a assinatura tem 256 bytes. Por causa do sal, assinar a mesma mensagem duas vezes gera assinaturas diferentes, e as duas são válidas. O PSS tem uma prova formal de segurança, que o preenchimento antigo não tem.

Exemplo

No playground desta página, escolha RSA-PSS, digite um texto e clique em "Assinar". O navegador gera um par de chaves de 2048 bits, usa o SHA-256 e um sal de 32 bytes, e mostra a chave pública e a assinatura de 256 bytes.

Clique em "Verificar" para conferir. Depois troque uma letra no campo de verificação: a assinatura deixa de conferir. Gerar as chaves RSA leva um instante a mais que as chaves de curvas elípticas.

Onde é usado

O TLS 1.3, versão atual do protocolo do HTTPS, exige o PSS sempre que o servidor prova a sua identidade com uma chave RSA durante a conexão. Ele também aparece em documentos e e-mails assinados, em sistemas de identidade e em atualizações de software.

Muitos certificados ainda são assinados com o preenchimento antigo, o PKCS#1 v1.5, por compatibilidade. Esse formato é determinístico e não tem prova de segurança, e verificações mal implementadas dele já permitiram falsificar assinaturas.

Pontos fortes e fracos

Pontos fortes: é baseado no RSA, que existe em todos os sistemas, tem prova de segurança e é exigido por protocolos modernos. Conferir uma assinatura RSA é muito rápido.

Pontos fracos: as chaves e as assinaturas são grandes, e gerar chaves e assinar é mais lento que com curvas elípticas. Chaves menores que 2048 bits não são recomendadas. E, como todo o RSA, um computador quântico grande o quebraria.

Quando usar

Use o RSA-PSS quando precisar de assinaturas RSA em um sistema novo ou quando um protocolo exigir, como o TLS 1.3. Use chaves de 2048 bits ou mais e o SHA-256.

Se não houver exigência de RSA, o Ed25519 ou o ECDSA oferecem a mesma segurança com chaves e assinaturas menores. Não use o OAEP para assinar, e evite o PKCS#1 v1.5 em sistemas novos.

Teste os algoritmos

Escolha um algoritmo, escreva um texto e veja como ele fica. Tudo acontece no seu navegador e nada é salvo.

Criptografia

Hash

Autenticação e assinatura

Troca e derivação de chaves

Codificação

Cifras clássicas

RSA-PSS

Seguro

Assinatura digital

Assinatura digital com RSA e um preenchimento aleatório. É o formato que o TLS 1.3 exige para assinaturas RSA.

Ver todos os algoritmos

0/500

Veja também

Precisa enviar um segredo?

Use uma nota segura: o texto é criptografado com AES-256-GCM e se apaga sozinho.

Criar uma nota