Publicando id_rsa.pub para facilitar a configuração de novos ambientes?

20

Para facilitar a configuração do SSH sem senha em novas máquinas e ambientes, existe alguma razão pela qual o id_rsa.pubarquivo (apenas a metade pública do par de chaves) não pôde ser publicado em algum lugar da Web? Por exemplo, em um repositório dotfiles GitHub.

Estou ciente de que:

  • o id_rsaarquivo (a metade privada do par de chaves) deve ser cuidadosamente guardado e
  • o par de chaves deve ser protegido com uma senha

Mas minhas pesquisas não revelaram nenhum conselho explícito de que isso seja permitido ou incentivado.

Por curiosidade, o mesmo conselho seria válido para um par de chaves sem uma senha?

DouglasDD
fonte
2
Embora possa ser seguro no caso geral (assumindo uma chave gerada corretamente), existiam falhas no passado (o famoso bug do Debian OpenSSH ) que restringiam severamente o espaço de chaves e deixavam a chave privada com base na chave pública. Portanto, sempre existe esse risco - como você sabe que seu keygen SSH não sofre de uma falha semelhante?
26414 Bob
2
Um mecanismo para isso já existe: ssh-import-id
MikeyB
para que você possa compartilhar id_rsa.pub entre máquinas?
Federico

Respostas:

26

O RSA foi projetado especificamente para permitir que você compartilhe essa chave pública; portanto, você pode publicá-la. Isso é bem parecido com o funcionamento do x.509 (e SSL) com certificados RSA.

Antes de publicar o arquivo, observe-o; as únicas coisas que precisam estar lá são a palavra-chave "ssh-rsa" e a chave codificada em base64. Você pode mantê-lo assim (acredito que esse seja o padrão agora).

Isso é verdade se a chave possui ou não uma senha. Uma frase secreta criptografa a chave privada e não afeta a chave pública.

Garanta, como sempre, que sua chave seja suficientemente entrópica e grande. Se for gerado por um PRNG quebrado, pode ser previsível. No entanto, publicar isso não representa muito risco adicional, pois se o espaço de chave é pequeno, um invasor pode simplesmente tentar com todas as chaves no espaço de chaves enumerado até encontrar o caminho certo.

Sugiro usar uma chave de 4096 bits (especificar -b 4096), para que seja mais difícil do que o normal (o padrão é 2048) alguém inverter sua chave pública em uma chave privada. Esse é o único risco significativo ao fazer isso, e não é muito grande, pois o algoritmo foi projetado especificamente para torná-lo impraticável.

Falcon Momot
fonte
33

Já é. :) Basta colocar ".keys" no final do URL do seu perfil do Github, da seguinte forma:

https://github.com/tjmcewan.keys

tjmcewan
fonte
Thant é realmente interessante. Para que o GitHub expõe isso?
Richardneish
Conveniência. :) Afinal, é uma chave pública - é para ser compartilhada. Agora ficou muito mais fácil pegar a chave de um novo colaborador e adicioná-la aos seus servidores. Salva o e-mail alternativo.
tjmcewan
Eu não sabia que eles fizeram isso.
Zeb
11
+1 para a descoberta interessante no Github.
Raymond Tau
5

Embora, como regra, eu não recomendo colocar sua própria configuração específica em repositórios de projetos públicos (supondo que o repositório seja para todos e sua configuração seja apenas para você , é apenas um pouco rude), as implicações de segurança são mínimas.

O único vetor de ataque razoável é, de alguma forma, usar essa chave pública para identificá- lo em algum contexto malicioso. O que isso poderia estar está além de mim, mas a chave pública identifica exclusivamente a chave privada, embora não dê nenhuma dica sobre sua origem.

Existe um vetor de ataque em caso de canto que provavelmente não se aplica, mas se você se lembrar do fiasco com o Debian quebrar acidentalmente o PRNG openssl , qualquer chave ssh gerada em um sistema afetado é facilmente previsível e pode ser identificada por sua chave pública. Portanto, nesse caso, publicar a chave pública pode causar problemas. Ou, mais apropriadamente, usar essa chave para qualquer coisa pode causar problemas.

tylerl
fonte
vetor 1. e a colisão de impressões digitais? é muito menor que a própria chave pública; vector 2 MIM atacar como "oops servidor tinha de ser reinstalado ele tem uma chave diferente, mas por favor, faça o login de qualquer maneira" e falso autenticação bem sucedida para chaves públicas determinado usuário (se isso é possível, eu não tenho certeza)
1

Sim, você pode publicar sua pubkey SSH. E você pode publicar uma impressão digital do servidor usando o registro SSHFP no DNS! Isso pode ser muito prático, por exemplo, se você precisar atualizar / alterar a chave SSH de um servidor.

jldugger
fonte