Como exatamente as chaves SSH são geradas?

4

Vi uma pergunta no Twitter sobre como mover as chaves SSH atuais para a mesma máquina depois de uma nova instalação.

Isso aumentou minha curiosidade e me perguntei como eles são feitos. Eu entendo o processo de gerar uma chave e a diferença entre o privado e o público.

Logicamente, suponho que as chaves sejam geradas aleatoriamente e não tenham nada a ver com o hardware / os (além da última linha com o usuário / computador) em que estão.

Obrigado por qualquer insight. Eu sempre gosto de aprender como as coisas "marcam".

    
por jason.dot.h 29.01.2011 / 18:52

6 respostas

2

O SSH usa chaves públicas e privadas pré-geradas. Uma vez geradas, estas chaves são armazenadas para uso futuro. O conteúdo das chaves não deve estar relacionado ao hardware ou ao O / S, mas depende dos números aleatórios que eles fornecem.

Existem vários formatos usados para transportar as chaves. Se você mudar de uma plataforma para outra, talvez seja necessário alterar o formato da chave. O Putty usa um formato diferente do OpenSSH, mas existem ferramentas para converter o formato.

A chave privada raramente precisa ser transportada. Se forem, devem ser mantidos em segurança. Chaves públicas e são livremente distribuíveis, e são trocadas automaticamente durante a conexão. Normalmente, as chaves conhecidas são armazenadas para que a caixa de diálogo de verificação não seja necessária nas conexões subsequentes.

Geralmente, gero novas chaves para novos dispositivos, pois isso é mais seguro. Isso requer o restabelecimento de relações de confiança. Copiar as chaves antigas pode permitir a transferência de confiança. Às vezes, a confiança inclui outras informações, como nome do host e / ou endereço IP, evitando a transferência de confiança.

Uma lista de host conhecida existente pode ser transferida. Isso permite transferir a lista de dispositivos que você confia. Isso não garante que eles confiarão em você.

    
por 29.01.2011 / 20:31
4

Certifique-se de saber exatamente o que você está se metendo - há muita matemática. A criptografia de chave assimétrica funciona gerando um módulo do produto de dois números primos muito grandes, que são escolhidos aleatoriamente usando um gerador de números pseudo-aleatórios criptograficamente seguro. Usando este módulo e aritmética modular, duas chaves são geradas de tal forma que a chave pública pode ser derivada da chave privada, mas não vice-versa.

O primeiro link da Wikipedia é uma introdução geral à criptografia de chave pública. A segunda é uma descrição específica de como as chaves são geradas no RSA.

por 29.01.2011 / 19:09
1

Existem vários algoritmos para gerar pares de chaves públicas / privadas. Você pode dar uma olhada em RSA e DSA se você estiver interessado.

    
por 29.01.2011 / 19:00
1

A geração de chaves ssh depende da qualidade do gerador de números aleatórios fornecido pelo sistema operacional do host. Se o gerador de números aleatórios for previsível, talvez seja possível que um invasor remoto gere as mesmas chaves. Este problema realmente aconteceu:

por 29.01.2011 / 19:01
0

Não há nada que depende do host / os / hardware subjacente. Você pode transportar chaves com segurança entre sistemas.

Embora eu tenha cuidado contra a reutilização de chaves, a menos que haja uma necessidade específica. Se você não tiver certeza, provavelmente não precisa. Mas se você tem certeza de que não precisará de mais explicações para saber por quê.

    
por 29.01.2011 / 20:31
0

puttygen A ferramenta geradora de chaves ssh para windows na verdade permite ao usuário mover o cursor do mouse aleatoriamente dentro da janela para propagar o gerador de números aleatórios. isso é melhor do que qualquer gerador puro baseado em programas faria.

Os geradores de chave baseados em terminal

podem permitir que o usuário digite chaves aleatórias no teclado, a fim de propagar o gerador de números aleatórios.

    
por 29.01.2011 / 20:32