Como digitar a senha de um arquivo .gpg somente ao abri-lo

17

(Entendo as implicações de segurança a seguir e estou bem com elas.)

Eu tenho um único arquivo criptografado no meu diretório organizacional diary.org.gpg,. Eu nunca fiz nenhuma configuração especial para funcionar, ainda

  1. Sempre que visito o arquivo, sou solicitada a senha de criptografia. O que é ótimo.
  2. Sempre que eu salvo o buffer, a senha é solicitada novamente duas vezes. Qual é o meu problema ?

Observe que eu não configurei nada para que isso funcione; portanto, quaisquer respostas relacionadas a agentes ou chaveiros deverão vir com instruções de configuração.

Pensei em manter a senha escrita em algum lugar dentro do arquivo (no cabeçalho ou nos comentários no final do arquivo). Então, sempre que eu salvar, o Emacs pode ler a senha no buffer e usá-la em vez de me avisar. Mas quando comecei a investigar isso, me perdi completamente em algum lugar por dentro epa.el.

P: Como posso enviar uma senha diretamente do Emacs para o sistema / processo de criptografia ao salvar o buffer, em vez de ser solicitado?

Todo o resto (encontrando a senha no buffer), eu mesmo consigo descobrir. Eu me perdi ao tentar entender como o Emacs fazia interface com o gpg.

Observe que estou no Ubuntu, Arch Linux e Windows. É por isso que minha primeira ideia foi uma solução centrada no emacs.
Posso viver com uma solução que não funciona no Windows, desde que eu ainda possa acessar o arquivo nele da maneira manual.

Malabarba
fonte
Eu acho que isso: orgmode.org/worg/org-tutorials/encrypting-files.html#sec-5 é o que você deseja (o gpg-agent).
Wvxvw
@wvxvw Talvez. Não diz nada sobre economia, então vou tentar.
Malabarba 7/15
Para ser honesto, o GPG e os programas relacionados têm uma interface de usuário extremamente ruim. É realmente difícil entender o que eles fazem na interface ou na documentação. Mas meu entendimento do objetivo de gpg-agenté que ele é semelhante a ssh-agentapenas armazenar as senhas que você possui, depois de ativá-las. Portanto, você não será solicitado a senha nem quando abrir um arquivo, nem quando salvá-lo (desde que o agente se lembre da senha), mas não acho que isso se estenda à frase secreta, que é meio idiota , se for verdade.
Wvxvw
Você provavelmente deseja configurar gpg-agentcorretamente, para que ela armazene em cache a chave por um tempo? :)
Günther Noack
1
@wvxvw Talvez esse fosse o caso? Eu achei as páginas de manual das ferramentas bastante detalhadas e a interface (CLI) é o que normalmente se espera de programas baseados em terminal.
Legends2k #

Respostas:

12

Criptografia usando senha + chave

Isso não salva a senha diretamente no arquivo, mas faz algo semelhante sem nenhum risco à segurança e ajuda você a alcançar o que deseja.

  • Você precisa usar criptografia assimétrica para que sua senha seja associada a um ID de email em um chaveiro .

  • Salve o abaixo na parte superior do seu arquivo .gpg

-*- epa-file-encrypt-to: ("[email protected]") -*-

A senha é solicitada na primeira vez em que o arquivo é salvo / criado. Mas depois disso, a senha é solicitada apenas uma vez cada vez que você abre o arquivo salvo

O único problema é que você não deve perder o arquivo do chaveiro salvo ~/.gnupg/por padrão.

Configuração GPG

Configuração do Emacs

Nenhuma configuração é necessária para isso no emacs.

Configuração do sistema

Mas você precisa ter seu ambiente de sistema pronto com poucas bibliotecas para que o recurso GPG funcione.

No momento da configuração, tive que instalar o seguinte:

  • gpgme-1.5.3
  • libgpg-error-1.17
  • libksba-1.3.2
  • libassuan-2.2.0
  • libgcrypt-1.6.2
  • gnupg-2.0.26
  • pinentry-0.9.0

Eu precisava de uma ou duas das bibliotecas acima e acabei instalando as outras porque eram dependências obrigatórias ou opcionais.

Depois que tudo estiver instalado, faça

> gpg --gen-key

Gere uma chave que nunca expira e associe-a ao seu nome e e-mail reais.

A chave gerada será salva no seu ~/.gnupg/diretório.

Alterando a localização do chaveiro

Você pode alterar a localização do chaveiro, alterando $GNUPGHOME, usando --homedirou as --keyringopções para gpg.

De man gpg:

--keyring file

Adicione um arquivo à lista atual de chaveiros. Se o arquivo começar com um til e uma barra, eles serão substituídos pelo diretório $ HOME. Se o nome do arquivo não contiver uma barra, presume-se que ele esteja no diretório inicial do GnuPG ("~ / .gnupg" se --homedir ou $ GNUPGHOME não for usado).

Observe que isso adiciona um chaveiro à lista atual. Se a intenção é usar o chaveiro especificado sozinho, use --keyring junto com --no-default-keyring.

Usando GPG com emacs

No emacs, você simplesmente cria um arquivo com uma .gpgextensão. Por exemplo, se o arquivo era originalmente auth.el, você o renomeia para auth.el.gpg.

Coloque esta linha na parte superior do arquivo:

;; -*- epa-file-encrypt-to: ("[email protected]") -*-

Observe que eu usei os caracteres de comentário elisp ;;como o arquivo de exemplo aqui é auth.el.gpg.

Use o endereço de email exato que você usou no momento da geração da chave.

Quando você tenta salvá-lo, o emacs mostrará esse prompt em um buffer:

Select recipients for encryption.
If no one is selected, symmetric encryption will be performed.  
- `m' to mark a key on the line
- `u' to unmark a key on the line
[Cancel][OK]

  u <GPG KEY> <YOUR NAME> (<YOUR GPG KEY NAME>) <<YOUR GPG KEY EMAIL>>

Navegue o ponto até a linha que contém a tecla, pressione m.

Navegue até o [OK]botão e aperte <return>.

Agora você pode salvar o arquivo e matar esse buffer de arquivo.

Na próxima vez em que você abrir esse arquivo .gpg, a senha será solicitada apenas uma vez e, em seguida, os salvamentos consecutivos serão livres de solicitação de senha.

Mais informações

  • Aqui está uma das postagens do blog que fala sobre a configuração do emacs e GPG, que você também pode consultar.
  • EasyPG - emacswiki.org
Kaushal Modi
fonte
Se eu perder o arquivo do chaveiro, ainda poderei abrir o arquivo criptografado com a senha usual ou ele será perdido para sempre?
Malabarba
@ Malabarba Eu não tentei isso, mas acredito que está perdido para sempre. Mas o bom é que esse arquivo é gerado apenas uma vez quando você associa um email e uma senha a um elemento de chaveiro. Ele não é modificado após a primeira vez até você adicionar mais elementos de chaveiro (mais pares de senha + email). Eu simplesmente mantenho os backups desse arquivo em uma chave USB e no Dropbox e asseguro que a senha seja super segura.
Kaushal Modi
Testei os documentos criptografados simetricamente para serem portáteis. Eu criptografei algo no emacs no Linux e o abri usando uma das muitas ferramentas gratuitas de decodificador GPG disponíveis para Windows. Ele pediu o chaveiro e apontou para o meu backup no Dropbox e funcionou.
Kaushal Modi
Apenas para sua informação: Sim, perder o arquivo da chave significa que você também perde permanentemente o acesso aos seus arquivos criptografados. Você precisa da senha e do arquivo da chave privada para descriptografá-los. Isso faz parte do modelo de segurança GPG para criptografia assimétrica.
Tyler
Parece que eu vou ter que ir com esta resposta depois de tudo. Você sabe como posso alterar a localização do arquivo do chaveiro?
Malabarba
9

Acontece que tudo que eu tinha que fazer era

(setq epa-file-cache-passphrase-for-symmetric-encryption t)

Essa solução funciona no Linux e no Windows e é uma cortesia de Ted e Michael na help-gnu-emacs.

Malabarba
fonte
É bom saber que isso funciona para você! Eu tinha essa configuração na minha configuração do Emacs há anos, mas em algum momento ele simplesmente parou de funcionar. Eu suspeito que isso esteja relacionado ao meu uso do gnome-keyring-daemon (que também funciona como um chaveiro gpg).
paprika
4
Na documentação para epa-file-cache-passphrase-for-symmetric-encryption: "Observe que esta opção não tem efeito se você usar o GnuPG 2.0."
Wilfred Hughes