Como usar o gpg e o SSH juntos? [duplicado]

11

Como usar o gpg e o SSH juntos?

Eu sei os procedimentos básicos de 1) usando gpg para criptografar e descriptografar arquivos de texto e 2) gerar e usar chaves SSH para acessar servidores remotos sem senhas.

Eu me pergunto se os dois podem ser integrados. Os dois não estão relacionados e devem ser separados no seu uso diário?

    
por qazwsx 16.01.2012 / 04:54

2 respostas

7

Estou fazendo uma pesquisa sobre esse tópico e posso dar algumas dicas, mas ainda não encontrei uma maneira de fazer isso funcionar.

Monkeysphere

Monkeysphere parece um projeto muito interessante, mas não consegui compilá-lo no Mac OS X sem entupindo meu pequeno espaço livre em disco com o MacPorts.

Usando o gpgkey2ssh

A primeira maneira que sugiro que você tente é gerar uma entrada compatível com authorized_keys a partir do seu ID de chave (por exemplo, BFB2E5E3) com:

gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys

Aqui, adicionei-o ao meu localhost desde que executei um servidor ssh para fins de teste, mas é claro que você deve adicioná-lo ao host de destino ~/.ssh/authorized_keys . Em seguida, você precisa dizer ao SSH para usar a parte privada dessa chave durante a autenticação, mas simplesmente exportar uma versão blindada ASCII do par de chaves não funciona:

gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
gpg --armor --export BFB2E5E3! | tee ~/.ssh/id_rsa.pub
chmod 400 ~/.ssh/id_rsa
ssh localhost

Usando o gpg-agent

gpg-agent tem a opção --enable-ssh-support que permite usá-lo como substituto imediato do bem conhecido ssh-agent . Eu li sobre algumas pessoas tentando adicionar via ssh-add sua chave GPG depois de lançar gpg-agent desta maneira:

gpg-agent --enable-ssh-support --daemon
gpg --armor --export-secret-key BFB2E5E3! | tee ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
ssh-add ~/.gnupg/exported-keys/BFB2E5E3_sec.asc

Mas eu não acho que isso funcionará. A página do gpg-agent diz:

SSH Keys, which are to be used through the agent, need to be added to the gpg-agent initially through the ssh-add utility.  When a key is added, ssh-add will ask for the password of the provided key file and send the unprotected key material to the agent; this causes the gpg-agent to ask for a passphrase, which is to be used for encrypting the newly received key and storing it in a gpg-agent specific directory.

Portanto, parece que gpg-agent deve ser usado como uma medida adicional para proteger suas chaves SSH com uma criptografia GPG.

Convertendo uma chave GPG para o OpenSSH

Jérôme Pouiller em seu blog escreve que o utilitário Gpgsm pode exportar chaves e certificados no PCSC12; eles podem então ser usados pelo OpenSSH:

gpgsm -o secret-gpg-key.p12 --export-secret-key-p12 0xXXXXXXXX
openssl pkcs12 -in secret-gpg-key.p12 -nocerts -out gpg-key.pem
chmod 600 gpg-key.pem
cp gpg-key.pem ~/.ssh/id_rsa
ssh-keygen -y -f gpg-key.pem > ~/.ssh/id_rsa.pub

Mas ainda não encontrei uma forma de fazer gpgsm aceitar meus keypairs gpg.

Outras coisas que você pode experimentar

O SSH tem uma opção -I para especificar a biblioteca compartilhada PKCS # 11 ssh deve usar para se comunicar com um token PKCS # 11 fornecendo a chave RSA privada do usuário. ssh-keygen pode usar a chave pública ou privada RFC4716 / SSH2, chaves públicas PEM PKCS8 e chaves públicas PEM para gerar uma chave privada (ou pública) compatível com OpenSSH usando as opções -i e -m .

Ainda não consigo encontrar uma maneira de juntar tudo.

    
por 15.02.2012 / 13:51
2

Tecnicamente, sim, chaves PGP podem ser usadas para autenticação SSH. O que as pessoas chamam de "chave PGP" é mais um certificado , contendo RSA, ECDSA comum ou outros pares de chaves (a chave primária e subchaves), juntamente com os metadados do certificado. Na verdade, existe até um sinalizador de uso de "autenticação" definido.

Não é recomendado usar a mesma chave para várias finalidades; no entanto, isso é facilmente resolvido, pois você pode adicionar facilmente uma subchave somente autenticação ao seu certificado PGP (via gpg --expert --edit-key ). Você terá uma chave primária de assinatura / certificação, uma subchave de criptografia e uma subchave de autenticação.

Na prática, porém, não consegui descobrir como autenticar usando uma chave PGP diretamente, embora tenha sido preguiçoso demais para experimentar várias ideias. A suíte Monkeysphere tem uma ferramenta para adicionar suas subchaves de autenticação GPG ao ssh-agent, deve ser simples. Mas deve haver algumas postagens mais antigas do Superusuário sobre isso.

    
por 16.01.2012 / 06:57

Tags