Qual a diferença entre a chave openssh e a putty key?

48

Eu descobri que ssh-keygen(o pacote "ssh") produz chaves diferentes de puttygen(pacote "putty").

Se eu criar chaves públicas e privadas com ssh-keygenalguns servidores ssh, não aceitarei minhas chaves. Se eu criar chaves com puttygenapenas um servidor, será aceito.

Por que os repositórios linux não propõem uma solução comum (pacote) para isso? Eu encontrei outro pacote ssh-3.2.9.1 que cria chaves que funcionam com massa de vidraceiro. Mas por que não há solução útil no SSH?

YarLinux
fonte
1
Para iniciantes, o PuTTYGen oferece explicitamente a conversão de chaves. Portanto, os formatos nativos que o OpenSSH e o PuTTY usam para armazenar chaves são diferentes. No entanto, os algoritmos suportados são compatíveis. Um palpite é que você inseriu algum valor descolado no campo que permite fornecer o número de bits (por exemplo, o DSA parece exigir 1024 bits) para a chave gerada no PuTTYGen ou, alternativamente, que você escolheu algo como RSA-1 que a maioria dos servidores terá desativado atualmente. Infelizmente, a pergunta realmente não indica o que você tentou e esperava.
0xC0000022L

Respostas:

47

OpenSSH é a implementação padrão de fato do protocolo SSH. Se PuTTY e OpenSSH diferirem, PuTTY é aquele que é incompatível.

Se você gerar uma chave com o OpenSSH usando ssh-keygenas opções padrão, ela funcionará com praticamente todos os servidores existentes. Um servidor que não aceita essa chave seria antigo, usando uma implementação diferente do SSH ou configurado de uma maneira estranha e restritiva. Chaves de um tipo não padrão podem não ser suportadas em alguns servidores, em particular as chaves ECDSA tornam o estabelecimento da sessão muito ligeiramente mais rápido, mas são suportados apenas pelas versões recentes do OpenSSH.

O PuTTY usa um formato de arquivo-chave diferente. Ele vem com ferramentas para converter entre seu próprio .ppkformato e o formato do OpenSSH.

Este ssh-3.2.9.1 que você encontrou é um produto comercial que possui seu próprio formato de chave privada. Não há razão para usá-lo em vez do OpenSSH, ele só pode ser menos compatível, requer pagamento e não há nenhum tutorial sobre como usá-lo por aí.

Gilles 'SO- parar de ser mau'
fonte
24

A maioria das distribuições Linux está puttydisponível para Linux. Você pode instalar puttyno lado Linux e usar puttygenpara converter os arquivos .ppk nos arquivos-chave comuns do estilo ssh (chamados arquivos PEM - mesmo que eles não recebam um .pem no nome do arquivo).

puttygen id_dsa.ppk -O private-openssh -o id_dsa

NOTA: Você também pode puttygenimportar arquivos PEM no estilo ssh putty.

O autor do PuTTY optou pela simplicidade, para que as chaves públicas e privadas que compõem a segurança subjacente usada pela autenticação de chave putty / ssh 2 sejam armazenadas em um único arquivo .ppk proprietário. Normalmente, essas chaves são mantidas como 2 arquivos separados pelo ssh.

No Linux, os arquivos principais normalmente são mantidos no diretório .ssh.

Há uma boa visão geral do processo de conversão aqui nesta questão do Stack Overflow, intitulada: Converter PEM em formato de arquivo PPK .

O autor do putty também discute sua justificativa para o uso de arquivos .ppk no puttymanual do usuário . Você pode ler sobre isso aqui na seção 8.2.12.

slm
fonte
Você quer dizer que meu Linux tem SSH-1 obsoleto e vulnerável (se eu não usar massa de vidraceiro)? E é acessível? As vulnerabilidades do SSH-1 são descritas na wikipedia
YarLinux
Não tenho certeza de onde você conseguiu isso. Não, você deve ficar bem. Qual versão do Linux você está usando? Que distribuição Linux você está usando? Executar este comando para descobrir a sua versão Linux: uname -a. Distro Linux: lsb_release -a.
slm
Eu uso o Ubuntu 12.04. Você quer dizer que o SSH-2 tem formatos diferentes? Eu apenas confuso pelo nome do pacote e comando que "ssh".
YarLinux
Eu vejo. A ferramenta ssh a que você está se referindo geralmente faz parte de um pacote chamado openssh. A versão deste software não tem nada a ver com o SSH-1 e SSH-2 a que você está se referindo. Essa terminologia (SSH-1 e SSH-2) está se referindo ao tipo de arquivo de chave com o qual você está trabalhando. Esse tipo de arquivo não deve ser um problema para você, desde que você esteja usando versões recentes do openssh.
slm
Existem três formatos diferentes de chaves? OpenSSH, ssh.com e PuTTY?
YarLinux
12

Ambos armazenam um "par de chaves RSA para a versão 2 do protocolo SSH" e podem ser convertidos de forma intercambiável; no entanto, em relação à diferença real de formato armazenado:

de https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/key-formats-natively.html

As vantagens do formato da chave PuTTY são:

  • Metade pública da chave é armazenada em texto sem formatação . O formato de chave privada do OpenSSH criptografa todo o arquivo de chaves , para que o cliente precise solicitar sua senha, antes que possa fazer qualquer coisa com a chave. Em particular, isso significa que ela deve solicitar sua senha antes que ela possa oferecer a chave pública ao servidor para autenticação. O formato do PuTTY armazena a chave pública em texto sem formatação e criptografa apenas a metade privada, o que significa que ele pode enviar automaticamente a chave pública para o servidor e determinar se o servidor está disposto a aceitar autenticações com essa chave, e apenas solicitará um senha, se realmente for necessário.

    Eu acho que o OpenSSH vai ler um.pubarquivo para esse fim, se ele aparecer ao lado do arquivo de chave privada, mas isso é uma fonte de confusão sempre que possível (vi pessoas substituindo um arquivo de chave privada e deixando um desatualizado .pubao lado dele e, em seguida, confuso com o processo de autenticação SSH resultante!).
  • A chave é totalmente à prova de violações. Os formatos de chave que armazenam a chave pública em texto sem formatação podem ser vulneráveis ​​a um ataque de violação, no qual a metade pública da chave é modificada de tal maneira que as assinaturas feitas com a chave manipulada vazam informações sobre a metade privada. Por esse motivo, o formato da chave do PuTTY contém um MAC (código de autenticação de mensagens), digitado com a frase secreta e cobrindo as metades pública e privada da chave.Assim, fornecemos a conveniência de ter a chave pública disponível em texto sem formatação, mas também detectamos instantaneamente qualquer tentativa de ataque de violação, oferecendo uma combinação de segurança e conveniência que não acredito serem encontradas em nenhum outro formato de chave. Como um benefício colateral, o MAC também aborda o comentário da chave, evitando possíveis travessuras possíveis, se alguém trocasse duas chaves e trocasse os comentários.

    A abordagem do OpenSSH de manter a chave pública criptografada podetambém fornece alguma segurança contra esse tipo de ataque, mas não está claro se ele fornece proteção adequada: a criptografia projetada para confidencialidade geralmente deixa maneiras pelas quais os dados criptografados podem ser úteis para serem modificados por um invasor. Para uma proteção de integridade real, você deseja um MAC realmente dedicado, projetado para fazer exatamente isso.

[ ênfase adicionada]

AmendoimPower
fonte