Configure gpg para descifrar sus propios archivos locales sin proporcionar una frase de contraseña

1

Esta es una pregunta sobre gpg. Cuando inicio sesión en un sistema Linux como usuario particular ("opsacc"), puedo cifrar un archivo usando gpg. Entonces puedo descifrar el archivo sin proporcionar una frase de contraseña. Las claves públicas / privadas de gpg para este usuario no fueron creadas por mí. El problema es que me gustaría replicar este escenario cuando inicie sesión como una cuenta diferente, pero no puedo hacerlo porque siempre necesito proporcionar la frase de contraseña. Es decir, cuando inicie sesión como otro usuario, me gustaría configurar gpg para poder cifrar archivos y luego descifrarlos sin proporcionar la frase de contraseña. El manual de gpg y otras investigaciones parecen sugerir que esto no es posible.

¿Alguien puede sugerir cómo cifrar un archivo para que pueda ser descifrado (solo por el mismo usuario) sin proporcionar una frase de contraseña? ¿O más bien cómo configurar los pares de claves necesarios para habilitar este escenario?

En mi caso, el usuario que originalmente configuró los pares de claves para la cuenta "opsacc" parece haber generado más de un par de claves públicas / privadas. No estoy seguro de si esto es necesario para descifrar el archivo sin proporcionar la frase de contraseña. Es posible que el archivo se haya creado en otro sistema Linux en el que existía una cuenta con un nombre similar. También es posible que uno de los pares de claves se haya creado en otro sistema y se haya exportado / importado aquí.

Para más información, vea la salida a continuación desde la línea de comando:

Inicié sesión en "server" como usuario "opsacc", y usando gpg versión 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 ~]$

Creé un archivo encriptado desde stdin en la línea de comandos 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 ~]$ 

Luego puedo descifrar el archivo sin proporcionar la frase de contraseña:

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

Aquí están los detalles de las claves públicas / privadas:

[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 ~]$ 

Sólo quiero que el usuario descifre los archivos cifrados. No me di cuenta de que la clave privada podía crearse sin una frase de contraseña. Eso es obviamente lo que ha sucedido en el escenario que describí anteriormente.
Por lo tanto, cuando el usuario de opsacc desencripta un archivo que previamente cifró, no es necesario ingresar una frase de contraseña. He replicado este escenario para otro usuario. Estoy utilizando este método para proteger archivos en un sistema multiusuario. Es decir, cuando se cifran de esta manera, los archivos solo pueden ser descifrados por el propietario y sin proporcionar una frase de contraseña (muy conveniente cuando los archivos necesitan ser leídos por un script automatizado), y otros usuarios en el sistema no pueden descifrar el archivo. Sin embargo, me pregunto cuáles son los principales riesgos de seguridad en este escenario: ¿qué debería hacer un pirata informático para obtener acceso al archivo cifrado de opsacc y descifrarlo?

Exchanger
fuente

Respuestas:

1

De forma predeterminada, cada usuario del sistema tiene su propio directorio de inicio y, por lo tanto, posee el directorio de inicio de GnuPG. En cada directorio de inicio de GnuPG, puede almacenar una réplica individual de una clave secreta.

Si no se requiere una frase de contraseña, parece que la clave no está cifrada con una. Exportar la clave ( gpg --export-secret-keys [key-id]e importarlo para el otro usuario (a su propio directorio de inicio de GnuPG, gpg --import ) quien debería tener que ingresar una frase de contraseña. Ahora edita la clave ( gpg --edit-key [key-id] ) y añada una frase de contraseña ( passwd dentro del shell de edición GnuPG).

El otro usuario deberá ingresar la contraseña para acceder a su copia de la clave. Como no tiene privilegios de acceso. opsacc La versión sin cifrar sin una frase de contraseña, no podrá descifrar archivos sin la frase de contraseña.

Pero tenga en cuenta que una vez que tenga la contraseña, por supuesto que puede eliminarla fácilmente.

Jens Erat
fuente