O que é melhor para chaves GPG - RSA ou DSA?

58

ssh-keygeno padrão é criar chaves RSA, mas gpg --gen-keyprefere DSA / ElGamal.

Qual deles - RSA ou DSA - é melhor para GPG?

gravidade
fonte
11
Consulte também esta pergunta do StackOverflow , bem como minha resposta a uma duplicata dessa pergunta, que discute por que o RSA é significativamente mais seguro que o DSA, tanto em 2010 quanto com as vulnerabilidades conhecidas de hoje (todas elas são para o DSA).
Adam Katz # 2

Respostas:

25

RSA e DSA - conceitos errôneos e informações úteis
têm algumasreferênciasmais antigas de RSA e areferênciarecente de DSA ,


Em 2003, RSA vs DSA Signatures - O vencedor é ... - RSA .

Então, basicamente, a geração de chaves é incrivelmente mais rápida para o DSA, o que faz sentido se você entender os algoritmos. A assinatura também é mais rápida para o DSA, mas não por um fator tão grande. A grande força da RSA é verificar o que é muito mais rápido que o DSA .

Rascunho recente da IETF: DSA com SHA-2 para DNSSEC , expirando em 7 de janeiro de 2010.
Ele tem alguns motivos para promover o DSA pelo RSA hoje.

O uso do DSA com SHA-256 no DNSSEC tem algumas vantagens e desvantagens em relação ao uso do RSA com SHA-256 ao usar chaves de 2048 bits. As assinaturas DSA são muito mais curtas que as assinaturas RSA ; nesse tamanho, a diferença é de 512 bits em 2048 bits. Em plataformas típicas que usam chaves de 2048 bits, a assinatura do DSA é cerca de três vezes mais rápida que no RSA, mas a verificação de assinaturas de RSA é mais de dez vezes mais rápida que no DSA .

A força criptográfica do DSA é geralmente considerada equivalente ao RSA quando a chave pública DSA e as chaves públicas RSA têm o mesmo tamanho. É claro que essa avaliação pode mudar no futuro se forem encontrados novos ataques que funcionem melhor com um ou outro algoritmo.

Atualmente, não há ataques conhecidos no conjunto específico de parâmetros DSA escolhido para este documento. Essa avaliação pode, é claro, mudar no futuro.

Mas, este é apenas um rascunho no momento.

Todo mundo adora a velocidade de verificação do RSA (!).

nik
fonte
6

Citando uma discussão no fórum :

Meu conselho seria usar uma chave de assinatura RSA (a chave "primária" ou "principal") e uma subchave RSA para criptografia. O motivo para usar o RSA para assinatura é principalmente porque o RSA permite usar hashes maiores que o DSA. O DSA2 também permite usar hashes maiores, mas o RSA é suportado por muitos anos mais do que o DSA2.

Eu acho que se você o estiver usando de maneira padrão (ou seja, você não criptografa uma quantidade enorme de dados), os dois se sairão bem.

Eu escolheria pessoalmente o RSA porque aprendi o algoritmo, e é um dos algoritmos mais bonitos que já vi.

Adam Matan
fonte
4

Também o uso dos algoritmos SHA-2 é possível e permitido desde a revisão atual do DSS; mas não consegui descobrir qual revisão GPG segue.

Em relação à especificação atual do DSS ( FIPS-186-3 , p. I), qualquer função hash especificada no SHS (FIPS-180-3, p. Iv) pode ser usada:

DSS:

Os algoritmos de assinatura digital aprovados pelo FIPS devem ser usados ​​com uma função de hash apropriada especificada no SHS.

SHS:

Esta Norma especifica cinco algoritmos de hash seguro - SHA-1, SHA-224, SHA-256, SHA-384 e SHA-512 - para calcular uma representação condensada de dados eletrônicos (mensagem).


À pergunta: Ambos os algoritmos são baseados em problemas matemáticos que não são comprovadamente seguros (o RSA usa o problema de fatorar números e o DSA usa o problema do logaritmo discreto), você não pode dizer que um é mais seguro que o outro, porque não o problema nem o outro já foi resolvido.

Mas, usando o DSA com SHA-1, você pode ter um problema de segurança, como já foi dito pelas páginas .

Manuel Faux
fonte
1

O fato é que provavelmente não importa muito para você :) Como parte da preparação para gerar um par de chaves e como parte da manutenção dos pares de chaves existentes - independentemente de qual criptografia assimétrica você escolher, você deve ser: 1) verificar a corrente recomendada comprimentos de chave 2) escolheu uma base / módulo para otimizar a assinatura ou a verificação - dependendo do que será feito com mais frequência (as chaves a serem usadas na emissão de certificados de servidor TLS / SSL devem ser otimizadas para verificação, pois cada navegador da Web verifica a assinatura ... as chaves usadas no software de assinatura devem ser otimizadas da mesma forma) 3) certifique-se de envelhecer suas chaves - use a mesma chave para ssh-auth por alguns anos, talvez seja hora de recuperar, mesmo se você escolher uma chave tamanho que ainda é razoável para o aplicativo hoje.

O RSA e o DSA foram avaliados substancialmente; se você estiver usando uma base de código confiável (RSAREF, RSA comercial, Mozilla / Netscape, Microsoft, OpenSSL, ...), provavelmente não se importa com o sistema de criptografia usado, desde que o use corretamente e utilize as práticas recomendadas atuais

RAM
fonte