Configure o gpg para descriptografar seus próprios arquivos locais sem fornecer senha

1

Esta é uma pergunta sobre o gpg. Quando eu entro em um sistema Linux como um usuário em particular ("opsacc"), posso criptografar um arquivo usando gpg. Eu posso então descriptografar o arquivo sem fornecer uma frase secreta. As chaves públicas / privadas de gpg deste usuário não foram criadas por mim. O problema é que eu gostaria de replicar esse cenário quando fiz o login como uma conta diferente, mas não posso fazer isso porque sempre preciso fornecer a frase secreta. Ou seja, quando logado como outro usuário eu gostaria de configurar o gpg para que eu possa criptografar arquivos e depois descriptografá-los sem fornecer a frase secreta. O manual do gpg e outras pesquisas parecem sugerir que isso não é possível.

Alguém pode sugerir como criptografar um arquivo para que ele possa ser descriptografado (pelo mesmo usuário apenas) sem fornecer uma frase secreta? Ou melhor, como configurar os pares de chaves necessários para habilitar esse cenário?

No meu caso, o usuário que originalmente configurou os pares de chaves para a conta "opsacc" parece ter gerado mais de um par de chaves pública / privada. Não tenho certeza se isso é necessário para descriptografar o arquivo sem fornecer a frase secreta. É possível que o arquivo tenha sido criado em outro sistema Linux no qual existia uma conta com nome semelhante. Também é possível que um dos pares de chaves tenha sido criado em outro sistema e exportado / importado aqui.

Para mais informações, consulte a saída abaixo na linha de comando:

Eu fiz o login no "servidor" como usuário "opsacc" e usando o gpg versão 1.4.5:

[opsacc@server1 ~]$ gpg --version
gpg (GnuPG) 1.4.5
Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
[opsacc@server1 ~]$

Eu criei um arquivo criptografado de stdin na linha de comando usando gpg:

[opsacc@server1 ~]$ gpg -o .SecretFile.gpg -r opsacc -e
my_secret_word
[opsacc@server1 ~]$
[opsacc@server1 ~]$ ls -l .SecretFile.gpg
-rw-rw-r-- 1 opsacc opsacc 595 Mar  6 11:50 .SecretFile.gpg
[opsacc@server1 ~]$
[opsacc@server1 ~]$ file .SecretFile.gpg
.SecretFile.gpg: GPG encrypted data
[opsacc@server1 ~]$ 

Eu posso descriptografar o arquivo sem fornecer a frase secreta:

[opsacc@server1 ~]$ gpg --decrypt --no-secmem-warning -q $HOME/.SecretFile.gpg
my_secret_word
[opsacc@server1 ~]$

Aqui estão os detalhes das chaves pública / privada:

[opsacc@server1 ~]$ gpg -k
/opt/home/opsacc/.gnupg/pubring.gpg
----------------------------------
pub   1024D/3B50F829 2009-03-25
uid                  opsacc <[email protected]>
sub   2048g/63B0BE4D 2009-03-25

pub   1024D/82406185 2009-03-25
uid                  opsacc <[email protected]>
sub   2048g/766F847E 2009-03-25

[opsacc@server1 ~]$ 
[opsacc@server1 ~]$ gpg -K
/opt/home/opsacc/.gnupg/secring.gpg
----------------------------------
sec   1024D/3B50F829 2009-03-25
uid                  opsacc <[email protected]>
ssb   2048g/63B0BE4D 2009-03-25

sec   1024D/82406185 2009-03-25
uid                  opsacc <[email protected]>
ssb   2048g/766F847E 2009-03-25

[opsacc@server1 ~]$ 

Eu só quero que o usuário descriptografe os arquivos que ele criptografou. Eu não percebi que a chave privada poderia ser criada sem uma frase secreta. Isso é obviamente o que aconteceu no cenário que descrevi acima. Portanto, quando o usuário opsacc descriptografa um arquivo que ele criptografou anteriormente, nenhuma frase secreta precisa ser inserida. Eu repliquei este cenário para outro usuário. Eu estou usando esse método para proteger arquivos em um sistema multiusuário. Ou seja, quando criptografados dessa maneira, os arquivos só podem ser descriptografados pelo proprietário e sem fornecer uma frase secreta (muito conveniente quando os arquivos precisam ser lidos por um script automatizado), e outros usuários no sistema não podem descriptografar o arquivo. No entanto, estou me perguntando quais são os principais riscos de segurança neste cenário - o que um hacker precisa fazer para obter acesso ao arquivo criptografado do opsacc e descriptografá-lo?

    
por Exchanger 09.03.2015 / 10:23

1 resposta

1

Por padrão, cada usuário do sistema tem seu próprio diretório pessoal e, portanto, possui o diretório inicial do GnuPG. Em cada diretório inicial do GnuPG, você pode armazenar uma réplica individual de uma chave secreta.

Se nenhuma frase secreta for necessária, parece que a chave não está criptografada com uma. Exporte a chave ( gpg --export-secret-keys [key-id] e importe-a para o outro usuário (para seu próprio diretório inicial do GnuPG, gpg --import ), que deve digitar uma senha. Agora, edite a chave ( gpg --edit-key [key-id] ) e adicione uma frase secreta ( passwd dentro do shell de edição do GnuPG).

O outro usuário terá que inserir a senha para acessar sua cópia da chave. Como ele não tem privilégios para acessar a versão não criptografada de opsacc sem uma frase secreta, ele não poderá descriptografar arquivos sem a frase secreta.

Mas esteja ciente, uma vez que ele tenha a frase secreta, ele pode facilmente removê-la.

    
por 09.03.2015 / 18:05