O que é o randomart produzido pelo ssh-keygen?

352

Ao gerar uma chave, você obtém o "randomart" das versões mais recentes do OpenSSH. Não consigo encontrar uma explicação do porquê e para o que devo usá-lo.

Generating public/private rsa key pair.
The key fingerprint is:
05:1e:1e:c1:ac:b9:d1:1c:6a:60:ce:0f:77:6c:78:47 you@i
The key's randomart image is:
+--[ RSA 2048]----+
|       o=.       |
|    o  o++E      |
|   + . Ooo.      |
|    + O B..      |
|     = *S.       |
|      o          |
|                 |
|                 |
|                 |
+-----------------+

Generating public/private dsa key pair.
The key fingerprint is:
b6:dd:b7:1f:bc:25:31:d3:12:f4:92:1c:0b:93:5f:4b you@i
The key's randomart image is:
+--[ DSA 1024]----+
|            o.o  |
|            .= E.|
|             .B.o|
|              .= |
|        S     = .|
|       . o .  .= |
|        . . . oo.|
|             . o+|
|              .o.|
+-----------------+
dlamblin
fonte
5
Outra pergunta que gostaria de fazer é; é seguro compartilhar sua imagem randomart com outras pessoas? Em outras palavras, dada uma imagem do randomart como a acima, é possível fazer engenharia reversa disso de volta à chave?
AndyJ0076 24/03

Respostas:

259

O randomart deve ser uma maneira mais fácil para os humanos validarem chaves.

A validação é normalmente feita através da comparação de cadeias sem sentido (isto é, a representação hexadecimal da impressão digital chave), que os humanos são bastante lentos e imprecisos na comparação. O Randomart substitui isso por imagens estruturadas que são mais rápidas e fáceis de comparar.

Este artigo "Visualização hash: uma nova técnica para melhorar a segurança do mundo real", Perrig A. e Song D., 1999, Workshop Internacional sobre Técnicas Criptográficas e Comércio Eletrônico (CrypTEC '99) " explica algumas técnicas e vantagens.

marca
fonte
66
Se você pudesse explicar por que os humanos validam chaves, isso poderia ajudar, porque, francamente, eu tendem a colocar minha chave pública no meu arquivo allowed_keys e acabar com isso.
dlamblin 6/09/09
43
@ dlamblin: Você geralmente não verifica suas próprias chaves com isso. No entanto, seria útil para verificar a chave do host de uma máquina remota. Uma ideia é que, se você fizer login em uma máquina específica a partir de vários locais (ou não salvar a chave no arquivo known_hosts), poderá reconhecer a "arte" da chave do host. Se essa arte mudou repentinamente, você deve desconfiar de digitar sua senha, pois isso pode significar que um ataque do tipo intermediário está em andamento na sua conexão (ou pode significar que o host acabou de alterar suas chaves por outras razões). Razão, motivo).
31720 Chris Johnsen
29
Uhm, quando eu pude ver a arte dos anfitriões? (Acho que nunca vi.) Só vi essa imagem depois de gerar meu par de chaves. E com o que eu teria que compará-lo para reconhecer mudanças "repentinas".
DerMike
12
Aposto que o randomart adere a um princípio semelhante ao dos hashes para verificações de integridade, a saber: uma pequena diferença na entrada gera uma saída totalmente diferente. Isso significaria que você teria que memorizar a forma aproximada do randomart esperado para poder perceber que algo está errado. É claro que isso não funciona na prática quando SSH et al não mostram o randomart do host ao qual você está se conectando (eles devem fazê-lo mesmo quando o host é conhecido).
Alan Plum
2
Imagino que sejam mais úteis quando as chaves públicas estão sendo trocadas pessoalmente por uma verificação de integridade após a conclusão da cópia.
Jordanpg #
198

Adicionar, acrescentar

-o VisualHostKey=yes 

à sua linha de comando ou coloque

VisualHostKey=yes 

no seu ~/.ssh/config.

Você verá o randomart da caixa em que está se conectando. Se você fizer logon um dia e a arte aleatória for diferente (seu cérebro deve ir Ei! Eu não reconheço isso!), Então talvez alguém esteja hackeando ou algo assim.

A idéia é que você não precisa conscientemente fazê-lo. Uma das chaves de uma de nossas máquinas parece uma borboleta. Outro meio que parece um pau (sim, nosso cérebro é primitivo). Se você fizer logon todos os dias, se acostumará às imagens sem nem tentar.

Paul Murray
fonte
9
Nada bom. Se você já fez login antes, é muito melhor que o computador faça o reconhecimento por usar uma impressão digital armazenada. O recurso deve ser usado apenas para fazer login em novas máquinas.
Nicholas Wilson
57
Muito atrasado para esta resposta, mas vale a pena ressaltar que isso seria imensamente útil se você estivesse efetuando login em uma máquina diferente que não possuísse todos os seus conhecidos. Nesse caso, o computador não poderá verificar se é conhecido, mas o usuário poderá ver "Isso parece muito diferente do normal!" e abortar.
Xkeeper 3/10/12
9
Deixar o computador fazer o reconhecimento é vulnerável à invasão de hosts conhecidos do seu computador. Assim como você não deve deixar o computador digitar senhas, é melhor validar você mesmo a chave do host.
Marko Topolnik
37

Anúncio oficial: OpenSSH 5.1 lançado

Introduzir a visualização experimental SSCI Fingerprint ASCII no ssh (1) e ssh-keygen (1). A exibição visual da impressão digital é controlada por uma nova opção ssh_config (5) "VisualHostKey". A intenção é renderizar as chaves do host SSH em uma forma visual que seja fácil de recuperar e rejeitar facilmente as chaves do host alteradas. Essa técnica inspirada nos esquemas gráficos de visualização de hash conhecidos como "arte aleatória [*]" e nas reflexões de Dan Kaminsky no 23C3 em Berlim.

Atualmente, a visualização de impressão digital está desativada por padrão, pois o algoritmo usado para gerar a arte aleatória ainda está sujeito a alterações.

usuario
fonte
8
Vale a pena conhecer essa última frase. As informações do OpenBSD Journal @ Undeadly.org sobre o OpenSSH 6.8 afirmam: "Observe que as chaves visuais do host também serão diferentes." O software mais recente mostra imagens diferentes das imagens mostradas no software mais antigo.
TOOGAM
27

Você pode encontrar uma análise aprofundada do VisualHostKey randomart no breve artigo The Drunken Bishop .

loomi
fonte
11

O Randomart exibido após a geração do ssh-keygen é uma representação gráfica da chave que você acabou de gerar. Então:

  • o Randomart não é realmente útil para o usuário que gerou a chave ssh

  • o Randomart pode ser muito útil para um usuário que usa uma conexão via SSH para conectar - se frequentemente ao mesmo servidor : se ele adicionou a opção "-o VisualHostKey = yes" ao comando SSH:

    ssh [email protected] -o VisualHostKey = yes

o Randomart correspondente à chave pública do servidor será exibido.

Para ver um exemplo, você pode tentar:

ssh [email protected] -o VisualHostKey = yes

No caso em que o usuário geralmente se conecta ao mesmo servidor, ele pode verificar rápida e facilmente se ele reconhece o Randomart correspondente à chave pública desse servidor ou não. O que é mais fácil e rápido do que verificar a sequência de caracteres da própria chave pública!

tmangin
fonte