GnuPG en Linux: Cifra, Firma y Verifica Archivos y Mensajes
El Comando GnuPG en Linux es una aplicación del proyecto GNU que implementa OpenPGP tal como está definido en la RFC4880. GnuPG permite cifrar y firmar sus datos y mensajes, utilizando claves públicas y privadas.
La idea es que usted ponga a disposición su clave pública para el mundo y mantenga su clave privada en secreto.
Cualquiera con una copia de su clave pública puede cifrar información y enviársela, porque solo usted podrá leer los mensajes. También es posible firmar archivos, de manera que cualquier persona con su clave pública pueda atestiguuar que determinado archivo o mensaje provino de usted.
La última versión de GnuPG se puede instalar a través del paquete gnupg de su distribución.
Una vez instalada, es necesario generar las claves del usuario con la opción "--gen-key" del comando gpg:
$ gpg --gen-key
Figura 22 - gpg --gen-keys |
Una vez creado el par de claves, se debe exportar la clave pública para dársela a otras personas, de modo que ellas puedan enviarle mensajes o verificar la firma de los mensajes que usted envió. Para exportar la clave pública, se usa la opción "--export":
$ gpg --export [email protected] > uira.pub
Si quiere verificar el archivo creado:
$ file uira.pub uira.pub: PGP/GPG key public ring (v4) created Wed Oct 23 11:28:11 2019 RSA (Encrypt or Sign) 3072 bits MPI=0xbfa4300b374fd596...
Para importar la clave de otras personas, se usa la opción "--import":
$ gpg --import chave.pub
Usted podrá ver las claves que se crearon con el argumento "--list-keys"
$ gpg --list-keys
/home/uiraribeiro/.gnupg/pubring.kbx
------------------------------------
pub rsa3072 2019-10-23 [SC] [expires: 2021-10-22]
E725EE3678AB3C99D51C625646BFCC17E483A6E0
uid [ultimate] Uira Ribeiro <[email protected]>
sub rsa3072 2019-10-23 [E] [expires: 2021-10-22]
Usted puede colocar su clave pública en su sitio, o enviársela a sus amigos.
Una vez importada una clave pública de otra persona, esta puede ser validada a través de la verificación de su firma digital:
$ gpg --edit-key [email protected] 1024D/9E98BC16 created: 1999-06-04 expires: never trust: -/qsub 1024g/5C8CBD41 created: 1999-06-04 expires: never (1) Carla Cruz <[email protected]>Command> fprpub 1024D/9E98BC16 1999-06-04 Carla Cruz <[email protected]>Fingerprint: 268F 448F CCD7 AF34 183E 52D8 9BDE 1A08 9E98 BC16
La firma "fingerprint" deberá entonces ser verificada con el propietario de la clave pública, de manera que se garantice que aquella clave pública pertenece efectivamente a su verdadero dueño. Esto evita que alguien pueda crear una clave pública fingiendo ser otra persona.
Algunas veces usted puede simplemente aceptar que la clave es de la persona que se la envió, incluso sin verificar la firma.
De cualquier manera, usted puede firmar la clave pública importada con su clave:
$ gpg —edit-key [email protected] 1024D/9E98BC16 created: 1999-06-04 expires: never trust: -/qsub 1024g/5C8CBD41 created: 1999-06-04 expires: never (1) Carla Cruz <[email protected]>Command> signpub 1024D/9E98BC16 created: 1999-06-04 expires: never trust: -/qFingerprint: 268F 448F CCD7 AF34 183E 52D8 9BDE 1A08 9E98 BC16
Cifrado de Archivos con GPG
Para cifrar un archivo para enviarlo a una determinada persona, usted deberá tener la clave pública de esa persona importada y verificada.
La opción "--encrypt" se usa para cifrar los datos:
$ gpg --output documento.gpg --encrypt --recipient [email protected] documento.pdf
De esta forma, el documento.pdf fue cifrado y guardado con el nombre documento.gpg, que únicamente podrá ser leído por Carla Cruz, quien posee la clave privada.
De esta manera, Carla, y solo Carla, podrá ver el contenido del archivo documento.gpg con la opción "--decrypt":
carla:~\# gpg --output arquivo.pdf --decrypt documento.gpg
Firma de Documentos
Usted también puede firmar documentos digitalmente, de manera que las personas puedan verificar que un archivo realmente proviene de usted y no fue alterado por nadie.
Para firmar digitalmente un archivo, se usa la opción "--sign":
$ gpg --output documento.sig --sign documento.pdf
De esta forma, el archivo será comprimido y su firma será agregada.
Con la opción "--sign", el archivo no está cifrado y cualquiera que tenga su clave pública podrá ver su contenido y verificar su firma.
Para verificar una firma y leer el documento firmado, se debe usar la opción "--decrypt":
$ gpg --output documento.pdf --decrypt documento.sig
Usted también puede firmar correos electrónicos con una firma en texto, usando la opción "--clearsign":
$ gpg --clearsign email.txt
De esta forma el texto será firmado con un hash:
-----BEGIN PGP SIGNED MESSAGE-----Hash: SHA512Este é um email de teste.Abraços,prof. Uirá Ribeiro-----BEGIN PGP SIGNATURE-----iQGzBAEBCgAdFiEE5yXuNnirPJnVHGJWRr/MF+SDpuAFAl2wadEACgkQRr/MF+SDpuAU9AwAkmQ/ffkJv0k2T1yq0VxuuG6ezxOulapr0dsFHCVWCXinYmjil/oNMamwtZw4cDAKbdjMmP+3dg8a234dsFyN43AOiwznx8QPeJeMtWQNaWo9cg5THNZiKR5wthsPMUC+3mcV0AqlGy3y5u9m4Uh6K97x+BjGc2XYkG6O3bocooSRTS3+rvDbGioR3a84WtGY+YlgUsKlGhn4eUdfJ1+LxUNgUsSuT45CdDujB2VQXw3KK34/CGAxdctHLBsI+DNrc/w/1lTjnmNpYGCdWjtQXAt8/DpXuI1GFJCZJmXD3Eu0gC7R7XTibcjUCvMp5ovONTCGrnwkYXBSVwM/fZYKrcAManG5Vqyqepd7x6FVysxVPpbgPh/IKN51RlfQeuF0+PjvqO5r3ShZxWvawnVh1kkEe2I0mYgW2aQWUdN7hC+zQZaHx6Gj3gIZMD1OJvCAuhW3yhBQV0EMOjotAhQC8NOfVrEKSSqD0yZs40kM+lwsNlJlNfLDMh3TJIcAJGem=TPYZ-----END PGP SIGNATURE-----
La misma opción "--decrypt" puede ser usada para verificar si el mensaje es auténtico y no fue alterado:
$ gpg --decrypt email.asc Este é um email de teste.Abraços,prof. Uirá Ribeirogpg: Signature made Wed 23 Oct 2019 11:55:13 AM -03gpg: using RSA key E725EE3678AB3C99D51C625646BFCC17E483A6E0gpg: Good signature from "Uira Ribeiro <[email protected]>" [ultimate]
Revocar Claves
Si perdió su clave privada, o si alguien tuvo acceso a su clave privada, o incluso si olvidó su frase de contraseña, puede generar una revocación de clave.
La revocación de clave genera un certificado que debe ser distribuido alertando a los usuarios de que su clave y firma actuales ya no son válidos.
$ gpg --output revoke.asc --gen-revoke minhachave
El argumento minhachave puede ser el ID de la clave, o el userID que identifica su clave.
Este certificado de revocación es bastante pequeño. Se recomienda imprimirlo y guardarlo en un lugar seguro, y eliminarlo del computadora.
Los archivos de GnuPG residen en el directorio HOME de los usuarios, con el nombre de ~/.gnupg/
Aprenda mucho más sobre Linux en nuestro curso en línea. Usted puede realizar la inscripción aquí. Si ya tiene una cuenta, o quiere crear una, simplemente ingrese o cree su usuario aquí.
¿Le gustó? Comparta
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.
Figura 22 - gpg --gen-keys