Qual é a diferença entre as chaves RSA, DSA e ECDSA que o ssh usa?


13

No meu /etc/ssh/diretório, vejo três que tenho três tipos diferentes de chaves ssh:

-rw------- 1 root root    607 Oct  4 22:43 ssh_host_dsa_key
-rw-r--r-- 1 root root    623 Oct  4 22:43 ssh_host_dsa_key.pub
-rw------- 1 root root    241 Oct  4 22:43 ssh_host_ecdsa_key
-rw-r--r-- 1 root root    194 Oct  4 22:43 ssh_host_ecdsa_key.pub
-rw------- 1 root root   1602 Oct  4 22:43 ssh_host_rsa_key
-rw-r--r-- 1 root root    378 Oct  4 22:43 ssh_host_rsa_key.pub

Quais são as diferenças entre as chaves RSA, DSA e ECDSA do ssh e preciso das três?

Respostas:


9

São chaves geradas usando diferentes algoritmos de criptografia. Você pode optar por usar diferentes formas de criptografia ao usar o SSH, um pouco semelhante à capacidade de escolher diferentes métodos de criptografia para WiFi (WPA2, WPA, WEP etc.).

O SSH usa criptografia de chave pública, ou seja, quando você se conecta a um servidor SSH, ele transmite uma chave pública que pode ser usada para criptografar o tráfego adicional a ser enviado para esse servidor. Se o servidor estiver configurado para usar o RSA, será uma chave gerada pelo algoritmo RSA.

Seu computador envia de volta sua própria chave pública RSA a partir do arquivo de chave que você listou na sua pergunta. O servidor precisa dessa chave para conectar-se novamente a você e responder.

Todas as três chaves existem no seu computador porque qualquer servidor SSH ao qual você está se conectando pode estar configurado para usar qualquer um desses algoritmos. Seu computador enviará de volta uma chave exclusiva correspondente ao tipo que o servidor usa, tendo sido gerada em seu computador pelo mesmo algoritmo.

Aqui estão alguns outros recursos:

/security/5096/rsa-vs-dsa-for-ssh-authentication-keys

http://en.wikipedia.org/wiki/Public-key_cryptography

http://en.wikipedia.org/wiki/RSA_(algorithm)

http://en.wikipedia.org/wiki/Digital_Signature_Algorithm

http://en.wikipedia.org/wiki/Elliptic_Curve_DSA


2
Você falou brevemente sobre por que os três estão lá, o objetivo de uma chave ssh e o que as chaves têm em comum: as chaves usam algoritmos de criptografia. O que você não falou sobre qual é a diferença entre as chaves RSA, DSA e ECDSA.
Enkouyami 28/01

6

Você precisa de todos eles?
Não, seu servidor ssh precisa apenas de um e o cliente precisa suportar apenas esse tipo de chave para conexões ssh.


RSA, DSA, ECDSA, EdDSA e Ed25519 são todos usados ​​para assinatura digital, mas apenas o RSA também pode ser usado para criptografia.

O RSA ( Rivest – Shamir – Adleman ) é um dos primeiros sistemas de criptografia de chave pública e é amplamente usado para transmissão segura de dados. Sua segurança depende da fatoração de números inteiros ; portanto, nunca é necessário um RNG (Gerador de Números Aleatórios) seguro. Comparado ao DSA, o RSA é mais rápido para validação de assinatura, mas mais lento para geração.

DSA ( Digital Signature Algorithm ) é um padrão federal de processamento de informações para assinaturas digitais. Sua segurança depende de um problema logarítmico discreto . Comparado ao RSA, o DSA é mais rápido na geração de assinaturas, mas mais lento na validação. A segurança pode ser interrompida se forem usados ​​geradores de números ruins .

ECDSA ( algoritmo de assinatura digital de curva elíptica ) é uma implementação da curva elíptica do DSA (algoritmo de assinatura digital). A criptografia de curva elíptica é capaz de fornecer relativamente o mesmo nível de nível de segurança que o RSA com uma chave menor. Ele também compartilha a desvantagem do DSA de ser sensível a RNGs ruins.

O EdDSA ( algoritmo de assinatura digital com curva de Edwards ) é um esquema de assinatura digital que usa uma variante da assinatura de Schnorr baseada nas curvas do Twisted Edwards . A criação de assinaturas é determinística no EdDSA e sua segurança é baseada na intratabilidade de certos problemas discretos de logaritmo; portanto, é mais seguro que o DSA e o ECDSA, que exigem aleatoriedade de alta qualidade para cada assinatura.

Ed25519 , é o esquema de assinatura do EdDSA, mas usando SHA-512/256 e Curve25519 ; é uma curva elíptica segura que oferece melhor segurança que o DSA, ECDSA e EdDSA, além de ter melhor desempenho (não perceptível humanamente).


Outras notas As
chaves RSA são as mais usadas e, portanto, parecem ser as melhores suportadas.

O ECDSA (introduzido no OpenSSH v5.7 ) é computacionalmente mais leve que o DSA, mas a diferença não é perceptível, a menos que você tenha uma máquina com muito baixo poder de processamento.

A partir do OpenSSH 7.0 , o SSH não suporta mais chaves DSA (ssh-dss) por padrão. Uma chave DSA costumava funcionar em qualquer lugar, conforme o padrão SSH (RFC 4251 e posterior).

O Ed25519 foi introduzido no openSSH 6.5 .


1
Isso é EdDSA ou ECDSA ?
muru

@muru É ECDSA. Vou atualizar a resposta com informações sobre os dois e corrigir o link.
Enkouyami

O que não consegui encontrar foi quando o EdDSA foi introduzido no OpenSSH.
Enkouyami

Um computador quântico pode quebrar todos eles?
Kjeld Flarup

@KjeldFlarup, Sim; com base nas respostas e comentários em security.stackexchange.com/questions/211587/… , um computador quântico poderia quebrar todos eles.
Enkouyami 12/06/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.