Existe algo como um par de chaves SSH assinado?

9

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

Então, eu criei meu par de chaves usando ssh-keygen e enviei minha chave pública para inserção no arquivo authorized_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 vantagem em rastreamentos e responsabilidade".

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

Tanto quanto eu posso google, não parece haver qualquer maneira conhecida para assinar as chaves de tal forma que ajuda no rastreamento de uma pessoa que se conectou. O fato de eu ter enviado minha chave pública significa que eu possuo a chave e qualquer pessoa que assina o servidor remoto com essa chave é, por padrão, identificada como eu. Como iria assinar ajuda? E como eles assinariam de qualquer maneira?

Alguém por favor me avise se eu estiver errado, obrigado!

Ok, agora que determinamos que não é possível assinar as chaves SSH, preciso mostrar à segurança de TI como elas realmente podem acompanhar quem está fazendo o login (preciso ser construtivo, eu acho, se não o alto a mão-de-obra começa). No meu próprio servidor, eu configurei o LogLevel do sshd para DEBUG. Então, quando eu fizer login, posso ver o seguinte snippet:

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

Isso parece ser um valor de hash. Como relaciono isso de volta a qual chave pública no arquivo authorized_keys foi usada? 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 fosse inserir uma chave na parte superior do arquivo, pressionando as teclas originais para baixo.

Obrigado!

    
por feicipet 22.07.2009 / 06:46

4 respostas

13

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

O Openssh5.4 adicionou suporte para exatamente o tipo de certificado que você procurava. Veja as notas de lançamento em link (e as man pages) para mais informações, ou se você realmente quer ser insano , veja PROTOCOLO .certkeys para os detalhes sangrentos

    
por 14.06.2011 / 08:13
8

Minha primeira impressão ao ler sua pergunta é que a pessoa de TI confundiu SSH e SSL (ela deve assinar conosco) e também não entende como a assinatura SSL realmente funciona.

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

    
por 22.07.2009 / 08:20
4

Algo não está correto nessa solicitação.

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

  1. Você cria um par de chaves para você mesmo (chame isso de my-key)
    • Quando você quiser enviar algo,
    • você primeiro criptografa com my-key-private
    • então fez o upload para o servidor deste arquivo criptografado
    • Alguém no servidor tem que reverter o processo assim,
    • eles usam seu my-key-pub para descriptografar o arquivo
    • se você enviou o arquivo, a decodificação irá recuperá-lo
    • else, 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 strong implicação de que você confia neles tanto quanto confia em si mesmo.

Estas são as perguntas iniciais que você pode fazer ao seu departamento de TI.
Se a responsabilidade é uma preocupação para a TI,

  1. Como eles se certificam de não compartilhar / perder o par de chaves dado a você por eles? e,
    • Como esse conceito de par de chaves a partir de TI é diferente de uma senha fornecida pela TI.
      Por que se preocupar com pares de chaves nesse caso?
por 22.07.2009 / 08:10
2

Não há motivo para você não poder usar certificados X.509 para autenticação SSH em vez de chaves simples - na verdade, prefiro que o OpenSSH funcione dessa maneira! Mas, a versão de ações do OpenSSH não, e é a implementação dominante nos dias de hoje.

Eu vi algumas versões com patches do OpenSSH flutuando em torno delas, e a implementação comercial do SSH.com também parece suportar a autenticação X.509. Portanto, se a sua organização estiver usando uma dessas, 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 indo para a rota X.509, eles devem gerar um par de chaves e uma solicitação de assinatura de certificado, assim como você faria com qualquer outro certificado X.509 usado para SSL, etc.

    
por 22.07.2009 / 19:23

Tags