Pular para o conteúdo principal

Ocasionalmente, ao explicar como estabelecer o sistema de autenticação de chaves públicas do SSH, me perguntam qual é o melhor, chaves RSA ou DSA. Nos próximos parágrafos, vou tentar responder a essa pergunta. Prefácio minha discussão com a revelação de que, embora eu tenha alguma experiência em LANs Ethernet e redes TCP/IP, tenho, na melhor das hipóteses, um entendimento amador da criptografia. A discussão a seguir é baseada em pesquisas na Internet, algumas das quais são contraditórias e como todas as coisas da Internet, alguns links são mais confiáveis do que outros.

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

DSA ou Algoritmo de Assinatura Digital, é um padrão do governo americano projetado pela NSA para assinaturas digitais. Ele é derivado do algoritmo de assinatura ElGamal. A segurança é baseada na dificuldade de resolver certos tipos de funções logarítmicas. Ele só pode ser usado para assinaturas digitais.

RSA é nomeado a partir das iniciais dos autores, Ron Rivest, Adi Shamir, e Leonard Adleman, que publicaram o algoritmo pela primeira vez. Ele se baseia na dificuldade de se levar em conta grandes números. Ao contrário da DSA, a RSA pode ser usada para criptografar uma mensagem inteira.

Meu entendimento é que resolver os problemas logarítmicos e de fatorização são igualmente difíceis, mas encontrei algumas referências que dizem que o problema logarítmico é mais difícil (também encontrei referências que dizem que são igualmente difíceis).

Coisas que eu acho que não importam, mas você pode ter ouvido ou pode vir a ouvir no futuro:

  1. A DSA é mais rápida na assinatura do que a RSA, mas a RSA é mais rápida durante a fase de verificação, uma vez que a autenticação requer ambas as fases, a diferença não importa.
  2. Como eu disse acima, a DSA só pode ser usada para autenticação enquanto a RSA pode ser usada tanto para autenticação quanto para criptografar uma mensagem. Entretanto, o SSH só usa as chaves para autenticação, portanto, mais uma vez a diferença não importa.
  3. Para o mesmo comprimento de chave, a DSA irá gerar um arquivo de assinatura menor. No entanto, como cada chave vai levar um bloco de disco, isto novamente não importa.
  4. As chaves DSA eram originalmente limitadas a 1024 bits, mas esse não é mais o caso.
  5. Procurei no "National Vulnerability Database " por "chave e DSA" e "chave e RSA" e encontrei 2 vulnerabilidades lidando com chaves DSA e 5 vulnerabilidades lidando com chaves RSA. Até onde posso dizer, todas estas vulnerabilidades foram abordadas nas últimas versões do OpenSSL/OpenSSH, agora parte do Pacote de Segurança da Internet para OpenVOS.

Coisas em favor da DSA:

  1. A DSA só pode ser usada com o protocolo SSH 2 enquanto a RSA pode ser usada com os protocolos 1 e 2 (Veja "SSH 2″ Versus "OpenSSL and OpenSSH Release 2"). O protocolo 1 tem algumas falhas significativas de projeto e foi substituído pela versão 2 do protocolo. Vejo isto como um motivo para favorecer ligeiramente o uso de chaves DSA, uma espécie de proteção embutida contra o uso do protocolo obsoleto mais antigo.

Coisas em favor da RSA:

  1. Um gerador de números aleatórios ruim vazará bits chave da DSA (não me pergunte como).
  2. O site openssh.org parece estar mudo no assunto, mas as versões mais recentes do ssh-keygen criam uma chave RSA se você não especificar o tipo.
  3. Parece haver mais (e mais recentes) RFCs referenciando chaves RSA do que chaves DSA.

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

Tempo de criação da DSA Tempo 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ê usa, o realmente importante é o comprimento da chave. Dado o ambiente atual, eu recomendaria um comprimento de chave de 2048. Pode parecer um exagero hoje, mas não tenho tanta certeza de que parecerá assim em 5 anos.

Quanto ao tipo de chave a ser usada, tenho que me inclinar para as chaves da RSA.

© 2024 Stratus Technologies.