Que diferença entre a chave openssh e a chave putty?

43

Descobri que ssh-keygen ("ssh" package) produz chaves diferentes do pacote puttygen ("putty").

Se eu criar chaves públicas e privadas com ssh-keygen , alguns ssh-servers não aceitarão minhas chaves. Se eu criar chaves com puttygen , apenas um servidor o aceita.

Por que os repositórios do 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?

    
por YarLinux 03.05.2013 / 09:18

3 respostas

43

O OpenSSH é a implementação padrão do protocolo SSH. Se PuTTY e OpenSSH forem diferentes, o PuTTY é o incompatível.

Se você gerar uma chave com o OpenSSH usando ssh-keygen com as opções padrão, ela funcionará virtualmente com todos os servidores existentes. Um servidor que não aceita tal chave seria antiquado, usando uma implementação diferente do SSH, ou configurado de 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 um pouco mais rápido, mas são suportadas apenas por versões recentes do OpenSSH.

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

Este ssh-3.2.9.1 que você encontrou é um produto comercial que tem sua própria chave privada diferente formato. 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 04.05.2013 / 02:29
23

A maioria das distros Linux tem putty disponível para Linux. Você poderia instalar putty no lado do Linux e usar puttygen para converter os arquivos .ppk para os arquivos de chaves de estilo ssh regulares (chamados de arquivos PEM - mesmo que eles não recebam um .pem no nome do arquivo). / p>

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

NOTA: Você também pode usar puttygen para importar arquivos PEM de estilo ssh de volta para putty .

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

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

Há uma boa visão geral do processo de conversão aqui nesta pergunta do Stack Overflow intitulada: Converta o formato de arquivo PEM para PPK .

O autor de putty também discute seu raciocínio para usar arquivos .ppk no putty manual de usuários . Você pode ler sobre isso aqui na seção 8.2.12.

    
por 03.05.2013 / 13:31
10

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

de link

The advantages of the PuTTY key format are:

  • Public half of key is stored in plaintext. OpenSSH's private key format encrypts the entire key file, so that the client has to ask you for your passphrase before it can do anything with the key at all. In particular, this means it has to ask for your passphrase before it can even offer the public key to the server for authentication. PuTTY's format stores the public key in plaintext and only encrypts the private half, which means that it can automatically send the public key to the server and determine whether the server is willing to accept authentications with that key, and it will only ever ask for a passphrase if it really needs to.

    I think OpenSSH will read a .pub file for this purpose if it appears alongside the private key file, but this is a source of confusion as often as convenience (I've seen people replace a private key file and leave an out-of-date .pub alongside it, and then be very confused by the resulting SSH authentication process!).
  • Key is fully tamperproofed. Key formats which store the public key in plaintext can be vulnerable to a tampering attack, in which the public half of the key is modified in such a way that signatures made with the doctored key leak information about the private half. For this reason, PuTTY's key format contains a MAC (Message Authentication Code), keyed off the passphrase, and covering the public and private halves of the key. Thus, we provide the convenience of having the public key available in plaintext but we also instantly detect any attempt at a tampering attack, giving a combination of security and convenience which I do not believe is found in any other key format. As a side benefit, the MAC also covers the key's comment, preventing any possible mischief that might be possible if someone were to swap two keys and interchange the comments.

    OpenSSH's approach of keeping the public key encrypted might also provide some security against this type of attack, but it's unclear that it provides proper protection: encryption designed for confidentiality often leaves ways in which the encrypted data can be usefully modified by an attacker. For real integrity protection you want a real dedicated MAC, which is designed to do precisely that.

[ ênfase adicionada]

    
por 14.02.2015 / 02:39