Qual é a diferença entre id_rsa.pub e id_dsa.pub?

Respostas:

64

id_rsa.pube id_dsa.pubsão as chaves públicas para id_rsae id_dsa.

Se você está perguntando em relação a SSH, id_rsaé uma chave RSA e pode ser usada com o protocolo SSH 1 ou 2, enquanto id_dsaé uma chave DSA e só pode ser usada com o protocolo SSH 2. Ambos são muito seguros, mas o DSA parece ser o padrão nos dias de hoje (assumindo que todos os seus clientes / servidores suportam SSH 2).

Atualização: desde que este foi escrito, o DSA se mostrou inseguro. Mais informações disponíveis na resposta abaixo.

Mike Pelley
fonte
Devo discordar disso. Hoje (e, embora em menor grau, também em 2010, quando isso foi postado), 1024 bits (o maior tamanho de chave disponível para DSA) é considerado muito fraco. Portanto, RSA é a melhor opção. Quanto ao SSH v1: Eu não considerava isso seguro há dez anos.
Adam Katz
3
@AdamKatz DSA tem suporte para chaves de 2048 bits e 3072 bits desde 2009 (conforme FIPS 186-3 ). Muitos clientes / servidores ssh suportam chaves DSA maiores, incluindo OpenSSH e PuTTY. A maioria dos geradores de chave também suporta chaves DSA maiores, mas o ssh-keygen do OpenSSH ainda não (embora o ssh e o sshd o aceitem). Para Linux, você pode gerar chaves DSA maiores usando OpenSSL conforme descrito nesta postagem do blog .
Mike Pelley
1
Interessante! Eu não sabia disso, e isso certamente ajuda a nivelar o campo entre os dois (embora a falta de suporte a OpenSSH seja bastante danosa). Ainda assim, eu não diria que DSA é o padrão (agora ou em 2010), enquanto RSA é absolutamente (e estamos fazendo a transição para sistemas de curvas elípticas como o Ed25519).
Adam Katz
46

O SSH usa pares de chaves públicas / privadas , assim id_rsacomo sua chave privada RSA (baseada em números primos), que é mais segura do que sua chave privada id_dsa DSA (baseada em expoentes). Mantenha suas chaves privadas segura e compartilhar sua id_rsa.pube id_dsa.pubchaves públicas amplamente.

DSA é inseguro

O DSA tem um parâmetro que pode ser adivinhado se o gerador de número aleatório do seu computador for inferior, o que revelará sua chave secreta. ECDSA (atualização da curva elíptica do DSA) é igualmente vulnerável . Mesmo com bons números aleatórios, o DSA tem outras preocupações com a forçaPDF ( também encontradas em Diffie-Hellman ).

O OpenSSH cria chaves inseguras de 1024 bits ( solução alternativa ) e agora desabilita o DSA por padrão .

Use Ed25519 quando possível

A criptografia de curva elíptica oferece maior complexidade com tamanhos de chave menores. Ed25519 (com base na complexidade das curvas elípticas modeladas em plano ) é a implementação preferida devido à sua suposta falta de interferência (documentos vazados mostram que a NSA dos EUA enfraquece os padrões de criptografia ).

Infelizmente, Ed25519 ainda é bastante novo, exigindo OpenSSH 6.5 ou GnuPG 2.1 (veja a lista completa ).

Use RSA com 4096 bits quando Ed25519 não estiver disponível

Tamanhos de chave RSA de 4096 bits devem ter complexidade comparável a Ed25519.

O Ed25519 ainda é preferido ao RSA devido à preocupação de que o RSA possa ser vulnerável às mesmas preocupações de força do DSA, embora se espere que a aplicação desse exploit ao RSA seja consideravelmente mais difícil.

Adam Katz
fonte
2
Apenas uma correção: o DSA tem suporte para chaves de 2048 bits e 3072 bits desde 2009 (conforme FIPS 186-3 ). Mais informações no meu comentário acima.
Mike Pelley
2
O Infosec SE tem uma boa resposta a essa pergunta que vai mais fundo. Ele cita uma palestra do Black Hat 2013 que sugere que o DSA não é mais seguro, mesmo em tamanhos de chave maiores.
Adam Katz
2
Atualizei esta resposta para ser mais abrangente sobre os problemas com DSA. Agora é mais detalhado do que a resposta (igualmente válida) do Infosec SE. Há ainda mais detalhes quando você passa o mouse sobre alguns dos links.
Adam Katz
1
Este post me ensinou muito, precisa de muito mais votos positivos.
liljoshu
1

rsa é considerado mais seguro.

Não mais (maio de 2020, dez anos depois), com OpenSSH 8.2 , conforme relatado por Julio

Aviso de suspensão de uso futuro

Agora é possível executar ataques de prefixo escolhido 1 contra o algoritmo de hash SHA-1 por menos de US $ 50 mil.
Por esse motivo, iremos desabilitar o algoritmo de assinatura de chave pública "ssh-rsa" que depende do SHA-1 por padrão em uma versão futura próxima .

(Veja " SHA-1 é uma confusão: primeira colisão de prefixo escolhido em SHA-1 e aplicação à rede de confiança do PGP " Leurent, G e Peyrin, T (2020))

Infelizmente, este algoritmo ainda é amplamente utilizado, apesar da existência de alternativas melhores, sendo o único algoritmo de assinatura de chave pública restante especificado pelas RFCs SSH originais.

As melhores alternativas incluem:

  • Os algoritmos de assinatura RFC8332 RSA SHA-2 rsa-sha2-256 / 512.
    Esses algoritmos têm a vantagem de usar o mesmo tipo de chave que " ssh-rsa", mas usam os algoritmos de hash SHA-2 seguros.
    Eles são suportados desde o OpenSSH 7.2 e já são usados ​​por padrão se o cliente e o servidor os suportarem.

  • O algoritmo de assinatura ssh-ed25519.
    É compatível com OpenSSH desde a versão 6.5.

  • Os algoritmos RFC5656 ECDSA: ecdsa-sha2-nistp256 / 384/521.
    Eles são suportados pelo OpenSSH desde a versão 5.7.

Para verificar se um servidor está usando o algoritmo de chave pública ssh-rsa fraco para autenticação de host, tente se conectar a ele depois de remover o ssh-rsaalgoritmo da lista permitida de ssh (1):

ssh -oHostKeyAlgorithms=-ssh-rsa user@host

Se a verificação da chave do host falhar e nenhum outro tipo de chave de host compatível estiver disponível, o software do servidor nesse host deve ser atualizado.

Uma versão futura do OpenSSH permitirá, UpdateHostKeyspor padrão, que o cliente migre automaticamente para algoritmos melhores.
Os usuários podem considerar a ativação dessa opção manualmente .

VonC
fonte
-8

Um usa DSA e outro usa RSA .

Yann Ramin
fonte
presumindo que você está usando apenas os nomes padrão (que logicamente se parecem com eles), o theatrus acertou em cheio.
David Larrabee
Você não respondeu à parte real da pergunta: o que é mais seguro. Downvoting já que esta foi a resposta mais importante. Não precisa ser.
akauppi