Pular para o conteúdo principal

Às vezes, ao explicar como configurar o sistema de autenticação por chave pública do SSH, me perguntam o que é melhor: chaves RSA ou DSA. Nos próximos parágrafos, tentarei responder a essa pergunta. Começo minha discussão esclarecendo que, embora tenha algum conhecimento em LANs Ethernet e redes TCP/IP, meu entendimento sobre criptografia é, na melhor das hipóteses, amador. A discussão a seguir baseia-se em pesquisas na Internet, algumas das quais são contraditórias e, como tudo na Internet, alguns links são mais confiáveis do que outros.

Primeiro, o que são chaves RSA e DSA?

O DSA, ou Algoritmo de Assinatura Digital, é um padrão do governo dos Estados Unidos desenvolvido pela NSA para assinaturas digitais. Ele é derivado do algoritmo de assinatura ElGamal. Sua segurança baseia-se na dificuldade de resolver certos tipos de funções logarítmicas. Ele só pode ser utilizado para assinaturas digitais.

O nome RSA deriva das iniciais dos autores, Ron Rivest, Adi Shamir e Leonard Adleman, que publicaram o algoritmo pela primeira vez. Ele se baseia na dificuldade de fatorar números grandes. Ao contrário do DSA, o RSA pode ser usado para criptografar uma mensagem inteira.

Pelo que entendi, resolver os problemas logarítmicos e de fatoração é igualmente difícil, mas encontrei algumas referências que afirmam que o problema logarítmico é mais difícil (também encontrei referências que afirmam que ambos são igualmente difíceis).

Coisas que eu acho que não importam, mas que você talvez já tenha ouvido ou venha a ouvir no futuro:

  1. O DSA é mais rápido na assinatura do que o RSA, mas o RSA é mais rápido na fase de verificação; como a autenticação requer ambas as fases, essa diferença não faz diferença.
  2. Como mencionei acima, o DSA só pode ser usado para autenticação, enquanto o RSA pode ser usado tanto para autenticação quanto para criptografar uma mensagem. No entanto, o SSH usa as chaves apenas para autenticação; portanto, mais uma vez, essa diferença não faz diferença.
  3. Para o mesmo comprimento de chave, o DSA gera um arquivo de assinatura menor. No entanto, como cada chave ocupa um bloco de disco, isso novamente não faz diferença.
  4. As chaves DSA eram originalmente limitadas a 1024 bits, mas isso já não é o caso.
  5. Pesquisei na “National Vulnerability Database” por “chave e DSA” e “chave e RSA” e encontrei duas vulnerabilidades relacionadas a chaves DSA e cinco vulnerabilidades relacionadas a chaves RSA. Pelo que pude verificar, todas essas vulnerabilidades foram corrigidas nas versões mais recentes do OpenSSL/OpenSSH, que agora fazem parte do Internet Security Pack para OpenVOS.

Argumentos a favor da DSA:

  1. O DSA só pode ser usado com o protocolo SSH 2, enquanto o RSA pode ser usado com os protocolos 1 e 2 (consulte “SSH 2” versus “OpenSSL e OpenSSH versão 2”). O protocolo 1 apresenta algumas falhas de projeto significativas e foi substituído pela versão 2 do protocolo. Considero isso um motivo para dar uma ligeira preferência ao uso de chaves DSA, uma espécie de proteção integrada contra o uso do protocolo mais antigo e obsoleto.

Pontos a favor da RSA:

  1. Um gerador de números aleatórios de baixa qualidade pode vazar bits da chave DSA (não me pergunte como).
  2. O site openssh.org parece não se pronunciar sobre qual é a melhor opção, mas as versões mais recentes do ssh-keygen criam uma chave RSA caso você não especifique o tipo.
  3. Parece haver mais (e mais recentes) RFCs que fazem referência a chaves RSA do que a chaves DSA.

Algumas comparações (os tamanhos dos arquivos incluem texto que não faz parte da chave):

Data de criação do DSA Data de criação da RSA Bytes DSA Bytes RSA DSA.pub bytes RSA.pub bytes
1024 bits   1 segundo   1 segundo   736   951   610  230
2048 bits   8 segundos   2 segundos  1264  1743  1122  402
4096 bits  50 segundos  25 segundos  2304  3311  2146  742

 

Independentemente da chave que você usar, o que realmente importa é o comprimento da chave. Considerando o cenário atual, eu recomendaria um comprimento de chave de 2048. Pode parecer um exagero hoje, mas não tenho tanta certeza de que ainda será assim daqui a cinco anos.

Quanto ao tipo de chave a ser usado, tenho que me inclinar pelas chaves RSA.

© 2024 Stratus Technologies.