Qual é o objetivo da imagem randomart para chaves SSH de usuário (não host)?

95

O ssh-keygengera a seguinte saída:

The key fingerprint is:
dd:e7:25:b3:e2:5b:d9:f0:25:28:9d:50:a2:c9:44:97 user@machine
The key's randomart image is:
+--[ RSA 2048]----+
|       .o o..    |
|       o +Eo     |
|        + .      |
|         . + o   |
|        S o = * o|
|           . o @.|
|            . = o|
|           . o   |
|            o.   |
+-----------------+

Qual é o objetivo desta imagem, ela fornece algum valor para o usuário? Observe que esta é uma chave de cliente (usuário), não uma chave de host.

sintagma
fonte
12
Tente: superuser.com/questions/22535/...
garethTheRed
O Google é seu amigo: sanscourier.com/blog/2011/08/31/…
Networker
2
reaberto porque vários frequentadores gostaram deste Q e pensaram que seria uma boa adição ao site.
Slm
2
Eu acho que essa é uma boa pergunta. Embora os links acima sejam interessantes, nenhum deles aborda a pergunta que está sendo feita. Ambos os links falam sobre a utilidade do randomart para chaves do host, não sobre por que ele é mostrado para chaves do usuário.
22414 Patrick Patrick
1
Apenas um FYI, enviei essa pergunta para a lista de discussão do OpenSSH outro dia. Até agora, grilos. lists.mindrot.org/pipermail/openssh-unix-dev/2014-July/…
Patrick

Respostas:

55

Isso foi explicado nesta pergunta: https://superuser.com/questions/22535/what-is-randomart-produced-by-ssh-keygen . Realmente não tem nenhuma utilidade para o usuário gerar a chave, mas sim para facilitar a validação. Pessoalmente. você prefere olhar para isso: (Observe que este é um exemplo de chave do host)

2048 1b:b8:c2:f4:7b:b5:44:be:fa:64:d6:eb:e6:2f:b8:fa 192.168.1.84 (RSA)
2048 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 gist.github.com,207.97.227.243 (RSA)
2048 a2:95:9a:aa:0a:3e:17:f4:ac:96:5b:13:3b:c8:0a:7c 192.168.2.17 (RSA)
2048 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 github.com,207.97.227.239 (RSA)

Que, sendo humano, levaria um bom tempo para verificar, ou o seguinte:

2048 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 gist.github.com,207.97.227.243 (RSA)
+--[ RSA 2048]----+
|        .        |
|       + .       |
|      . B .      |
|     o * +       |
|    X * S        |
|   + O o . .     |
|    .   E . o    |
|       . . o     |
|        . .      |
+-----------------+
2048 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 github.com,207.97.227.239 (RSA)
+--[ RSA 2048]----+
|        .        |
|       + .       |
|      . B .      |
|     o * +       |
|    X * S        |
|   + O o . .     |
|    .   E . o    |
|       . . o     |
|        . .      |
+-----------------+

Exemplos retirados de http://sanscourier.com/blog/2011/08/31/what-the-what-are-ssh-fingerprint-randomarts-and-why-should-i-care/

Essencialmente, a arte aleatória gerada pelas chaves do usuário também pode ser usada da mesma maneira. Se a imagem gerada inicialmente for diferente da imagem atual da chave, por exemplo, se você moveu uma chave, é provável que a chave tenha sido violada, corrompida ou substituída.

Isso, na outra pergunta, é realmente uma boa leitura: http://users.ece.cmu.edu/~adrian/projects/validation/validation.pdf

Torger597
fonte
1
Isso não responde à pergunta. As informações que você está fornecendo são sobre chaves do host. A pergunta é sobre as chaves do usuário.
Patrick
8
Receio discordar, a pergunta era: qual é o objetivo desta imagem, ela fornece algum valor ao usuário? E eu respondi que, essencialmente, não tem valor para o usuário que gera a chave. Se eu perdi alguma coisa ou você gostaria de adicionar outros exemplos, etc., informe-me. Eu sou novo aqui.
Torger597
1
Concordo, foi o que foi perguntado, sobre chaves de usuário , não sobre chaves de host.
Patrick
3
Eu usei chaves de host como exemplo, pois o princípio básico existe, apesar de criar e adicionar um exemplo de chave de usuário. Obrigado pela contribuição, Patrick.
Torger597
13

Parece haver muita confusão sobre a diferença entre uma chave de host e uma chave de usuário.

Uma chave de host é usada para estabelecer a identidade do host remoto para você.
Uma chave de usuário é usada para estabelecer a identidade de si mesmo para o host remoto.
Como essas teclas geralmente são mostradas apenas como uma sequência de caracteres, pode ser difícil para um ser humano dizer rapidamente se elas foram alteradas. Este é o objetivo do randomart. Um pequeno desvio na chave causará uma imagem randomart significativamente diferente.

Por que você se importaria, é importante verificar a identidade do host remoto, pois é possível que alguém possa interceptar seu tráfego ( ataque MITM ) e exibir / manipular tudo o que é enviado e recebido.

Não é importante verificar a si mesmo. Você não precisa confirmar "sim, eu sou eu". Mesmo que sua chave de usuário tenha sido alterada, o servidor remoto permitirá que você entre ou não. Sua conexão não corre risco de escutas.

 

Então, por que, então, ssh-keygenmostra a imagem do randomart quando você gera sua chave de usuário ?
Porque quando o código randomart foi introduzido em ssh-keygen [[email protected] 11/06/2008 21:01:35] , chaves de host e chaves de usuário foram geradas exatamente da mesma maneira. A saída de informações extras pode não ser útil para uma chave de usuário, mas não prejudica (exceto causar potencialmente confusão).

Agora, quando eu disse "quando o código randomart foi introduzido", isso ocorreu porque o código mudou desde então. Atualmente, a maioria das distros usa ssh-keygen -Apara gerar chaves de host, que é um novo recurso. Esse recurso gera vários tipos diferentes de chaves (rsa, dsa, ecdsa) e não mostra uma imagem randomart. O método antigo ainda pode ser usado para gerar chaves de host, mas geralmente não é. Portanto, agora o método antigo é usado apenas para chaves de usuário, mas o recurso randomart permanece.

Patrick
fonte
Você não precisa confirmar "sim, eu sou eu". sim, embora fosse um pouco mais preciso dizer "sim, eu pareço comigo". Se tiver muitas chaves, convém receber um feedback extra para garantir que você esteja usando a certa.
Alois Mahdal