Existe algo como um par de chaves SSH assinado?

9

Estamos transferindo arquivos para um servidor remoto em nosso aplicativo e o método de autenticação necessário é usar chaves SSH.

Então, criei meu par de chaves usando ssh-keygen e enviei minha chave pública para inserção no arquivo allowed_keys do host remoto. No entanto, isso foi rejeitado pela IT Security, que disse que geraria o par de chaves para mim e me enviaria a chave privada. Motivo: "Precisamos que as chaves SSH sejam assinadas pela equipe de segurança de TI. Isso é para garantir que tenhamos alguma liderança em rastreamentos e responsabilidade".

Obviamente, tenho problemas com isso. Ter a chave privada gerada por outra pessoa significa que eu posso ter essa pessoa disfarçada como eu sem que eu saiba. Estou tentando encontrar maneiras de refutar esse argumento.

Tanto quanto eu posso pesquisar no Google, parece não haver nenhuma maneira conhecida de assinar as chaves, de forma que ela ajude a rastrear uma pessoa que fez login. O fato de eu enviar minha chave pública significa que sou o proprietário da chave e qualquer pessoa que fizer logon no servidor remoto com essa chave é, por padrão, identificada como eu. Como a assinatura ajudaria? E como eles assinariam de qualquer maneira?

Alguém por favor me indique se estou errado, obrigado!


Ok, agora que determinamos que não há como as chaves SSH podem ser assinadas, preciso mostrar à segurança de TI como elas podem rastrear quem está efetuando login (acho que deve ser construtivo, se não começar o jogo) ) No meu próprio servidor, defino o LogLevel do sshd como DEBUG. Portanto, agora, quando faço login, posso ver o seguinte trecho:

Found matching DSA key: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

Este parece ser um valor de hash. Como relacionar isso com a chave pública no arquivo allowed_keys? Eu sei que há outra linha que diz:

debug1: matching key found: file /home/bofh/.ssh/authorized_keys2, line 1

mas isso não é tão útil quanto os números de linha podem ser facilmente alterados se eu inserir uma tecla na parte superior do arquivo, pressionando as teclas originais.

Obrigado!

feicipet
fonte
2
Talvez eles imprimam as chaves, assinem (no papel) e depois arquivem?
22124 innaM
O valor do hash obtido é provavelmente a chamada impressão digital da chave. Eu recomendo verificar o manual openssh sobre como você pode listar essas impressões digitais.
Niels Basjes
O motivo mais provável para a existência dessa política é que eles realmente querem se passar por você, se necessário. O argumento da assinatura é apenas BS para torná-lo plausível para os neófitos. Mesmo que precisassem assinar a pubkey, não precisariam gerá-la.
b0fh

Respostas:

13

Desde que você fez sua pergunta, o universo mudou.

O Openssh5.4 adicionou suporte para exatamente o tipo de certificado que você buscava. Consulte as notas de versão em http://www.openssh.org/txt/release-5.4 (e as páginas de manual) para obter mais informações ou, se você realmente quer ser louco, consulte PROTOCOL.certkeys para obter detalhes sangrentos.

James Polley
fonte
Só vi isso depois de muito tempo ... parece legítimo :) Vai experimentar, obrigado!
feicipet
8

Minha primeira impressão ao ler sua pergunta é que a pessoa de TI confundiu SSH e SSL (deve ser assinada por nós) e também não entende como a assinatura SSL realmente funciona.

De qualquer forma, não há como assinar uma chave SSH (que eu saiba).

Niels Basjes
fonte
Com +1, você não pode assinar chaves ssh da mesma maneira que pode assinar certificados PGP ou SSL. Eu procuraria esclarecimentos deles.
22411 David Pashley
4

Algo não está certo neste pedido.

Se estiver entregando arquivos assinados ao servidor,
eu esperaria que isso fosse feito no mínimo.

  1. Você cria um par de chaves para si mesmo (chame isso de minha chave)
    • Quando você quiser enviar algo,
    • você primeiro criptografá-lo com my-key-private
    • então carregou no servidor esse arquivo criptografado
    • Alguém no servidor precisa reverter o processo assim,
    • eles usam o seu my-key-pubpara descriptografar o arquivo
    • se você enviou o arquivo, a descriptografia o recuperará
    • caso contrário, eles não receberão nenhum arquivo utilizável
    • efetivamente, você assinou o arquivo com sua chave privada
    • eles verificaram a assinatura com sua chave pública
    • a responsabilidade é efetuada por eles, confirmando que você enviou o arquivo

Existem outras maneiras de fazer essas coisas.
No entanto, obter um par de chaves gerado por outra pessoa é inútil como um esquema de autenticação .
Tem uma forte implicação de que você confia neles tanto quanto em si mesmo.


Essas são as perguntas iniciais que você pode fazer à sua TI.
Se a responsabilidade é uma preocupação para a TI,

  1. Como eles garantem que você não compartilhe / perca o par de chaves fornecido por eles? e,
    • Como esse conceito de par de chaves da TI é diferente de uma senha fornecida pela equipe de TI.
      Por que se preocupar com pares de chaves nesse caso?
nik
fonte
Você está pensando em PGP / GnuPG para criptografar arquivos. Nesse caso, a assinatura da chave é normal. A pergunta original é sobre chaves SSH. Faria sentido se eles estivessem pedindo uma chave SSH assinada / criptografada por PGP (depois de verificar e assinar as chaves PGP uma da outra).
Pg
@pgs, estou tentando ver o que a pessoa de TI está direcionando aqui.
nik
Tenho certeza de que o cara da segurança está confuso, mas como ele é o cara da área de segurança de TI da empresa do meu cliente e não meu colega, preciso ser um pouco mais tato e insistir construtivamente sem rir dele e dizer que ele tem coisas. misturado. Sim, é definitivamente SSH e não PGP.
22909 feicipet
@feicipet, ficar diplomático é onde meus últimos pontos o ajudarão.
nik
@feicipet, seu objetivo seria finalmente fazê-los perceber o mínimo que precisariam fazer para alcançar corretamente suas intenções.
nik
2

Não há razão para você não usar certificados X.509 para autenticação SSH em vez de chaves nuas - na verdade, eu preferiria muito se o OpenSSH funcionasse dessa maneira! Mas, a versão de estoque do OpenSSH não, e é a implementação dominante atualmente.

Eu já vi algumas versões corrigidas do OpenSSH flutuando, e a implementação comercial do SSH.com também parece oferecer suporte à autenticação X.509. Portanto, se sua organização estiver usando uma delas, exigir que as chaves sejam assinadas por uma autoridade central faria muito sentido.

Dito isto, não há desculpa para exigir que a chave privada seja gerada por terceiros! Se eles estão seguindo a rota X.509, devem gerar um par de chaves e uma solicitação de assinatura de certificado, assim como faria com qualquer outro certificado X.509 usado para SSL, etc.

Stephen Veiss
fonte