Guia Básica - Cifrado y Firmas Digitales - (GnuPG o GPG)

De WikiSalud
Saltar a: navegación, buscar

Contenido

Resumen

Guía básica para cifrado y firmas digitales con GNU Privacy Guard (GnuPG o GPG) utilizando cifrado asimétrico

Introducción

Según su definición en WikiPedia GNU Privacy Guard (GnuPG o GPG) es una herramienta de cifrado y firmas digitales desarrollado por Werner Koch, que viene a ser un reemplazo del PGP (Pretty Good Privacy) pero con la principal diferencia que es software libre licenciado bajo la GPL. GPG utiliza el estándar del IETF denominado OpenPGP.

Procedimiento

Paquetes necesarios

Instalar con privilegios de root:

apt install gpa gnupg2
apt install seahorse seahorse-nautilus seahorse-sharing

Para tener en nautilus los cambios:
killall nautilus

Para cifrar contenido y/o para firmar digitalmente un archivo o correo electrónico necesitamos tener:

  • Una llave publica: Para cifrar contenido por nosotros mismos o por usuarios que querramos que nos envíen información cifrada; para que otros usuario puedan cifrarnos información debemos proporcionarles nuestra llave publica ya sea en una memoria USB o a través de un servidor de claves como lo son: keyserver.ubuntu.com o pgp.mit.edu
  • Una llave privada: Para descifrar contenido y firmar digitalmente; esta solo deberíamos tenerla nosotros o proporcionarla a aquellos usuarios en que tengamos plena confianza para descifrar o firmar nuestra información.

Generando llaves

Como usuario regular:

gpg --gen-key

En ubuntu:

gpg --full-gen-key
Seleccionar con un 1 + [enter] en tipo de clave DSA y ElGamal (por defecto)"
Seleccionar entre 1024 y 4096 bits para la clave RSA: 4096 +[enter]
Seleccionar el tiempo de validez de la clave, puede ser perpetua o caducar desde un día a años, para el caso sera perpetua: 0 + [enter]
Confirmar si los datos son correctos: s + [enter]
Asignamos un nombre: clave_ejemplo
Asignamos un correo electrónico valido: usuario@servidor.net
Asignamos un comentario que haga referencia al proposido del la llave
Confirmar los datos registrados: V + [enter]
Pedira una clave que servira para poder desemcriptar los datos y luego
mostrara un mensaje avisando que se deben generar datos aleatorios, esto
tardara en relacion a la cantidad de bits que le hallamos dado a nuestra  
llave (1024 a 4096) por lo que se debe realizar actividades en el ordenador, 
mover el puntero del raton, etc, para ayudar a generar esos bit aleatorios 
Cuando termine de generar las llaves mostrara datos como los siguientes:
gpg: clave C37A5FD0209B35F4 marcada como de confianza absoluta
gpg: revocation certificate stored as '/home/soporte/.gnupg/openpgp-revocs.d/EEF7398C478B8ED845203FE2C37A5FD0209B35F4.rev'
claves pública y secreta creadas y firmadas.

pub  rsa2048 2017-02-05 [SC]
     EEF7398C478B8ED845203FE2C37A5FD0209B35F4
uid      clave_ejemplo <usuario@servidor.net>
sub  rsa2048 2017-02-05 [E]

Solucion de error al generar llaves con (gpg --full-gen-key)

gpg: anillo público de claves no escribible encontrado: No se encontró Creación de la clave fallida: No se encontró

No se generan llaves por falta de permisos al archivo de configuracion y se soluciona con:

chmod 700 -R ~/.gnupg
chown -R usuario:usuario ~/.gnupg
DE AQUI EN ADELANTE TODOS LOS COMANDOS SE REALIZARAN COMO USUARIO REGULAR

Listar llaves publicas

gpg --list-public-keys

o tambien:

gpg -K

Listar FINGERPRINT de las llaves publicas

gpg --fingerprint 209B35F4

Listar llaves privadas

gpg --list-secret-keys

Exportar llave pública a un archivo

gpg --export -a "clave_ejemplo" > clave_ejemplo_publica.key

Exportar llave privada a un archivo

gpg --export-secret-key -a "clave_ejemplo" > clave_ejemplo_privada.key

Borrado de una llave publica

gpg --delete-key clave_ejemplo

Borrado de una llave privada

gpg --delete-secret-key clave_ejemplo

Importar llave pública desde un archivo

gpg --import clave_ejemplo_publica.key

Importar llave privada desde un archivo

gpg --allow-secret-key-import --import clave_ejemplo_privada.key

Cifrar un archivo

gpg -e nombre_archivo

Cifrar archivo con llave pública diferente a la default

gpg -er "nombre_clave_publica" nombre_archivo

Cifrar archivo con criptograma tipo 7-bit ASCII

gpg -a -er "nombre_clave_publica" nombre_archivo

Descifrar un archivo

Para descifrar debemos tener la clave privada correspondiente a la clave publica con que se cifro el archivo

gpg -d nombre_archivo -o archivo_descifrado

si el archivo a descifrar es texto plano, podremos optar por verlo en la terminal asi:

gpg -d nombre_archivo archivo_descifrado

Firma digital de un archivo

gpg --clearsign nombre_archivo

Creando un certificado de revocacion de llave pública

La necesidad de hacer un certificado de revocacion para la llave publica surge ante la posibilidad de que nuestra llave privada se vea comprometida El certificado resultante debe guardarce en un lugar seguro.

para crearlo debemos usar el ID de la clave (son los ultimos 8 digitos, segun nuetro ejemplo:209B35F4)

gpg --output revoke.asc --gen-revoke 209B35F4
o
gpg --gen-revoke 209B35F4 >revoke.asc

Importar un certificado de revocación

gpg --import revoke.asc
=== DESREVOCAR EL CERTIFICADO DE REVOCACION ===
?????INVESTIGAR MAS SOBRE ESTE TEMA
$ gpg --export 209B35F4 > key.gpg
$ gpgsplit key.gpg
se generan algunos archivos, utilizar el de extensión .sig este contiene el certificado de revocacion
$ gpg --list-packets 000003-002.sig
$ cat 000003-002.sig > fixedkey.gpg
Remove the old key:
$ gpg --expert --delete-key key-id
Import the new key:
$ gpg --import fixedkey.gpg
?????INVESTIGAR MAS SOBRE ESTE TEMA

Creando una versión tipo ASCII ARMOR - llave pública

gpg --output clave_ejemplo_publica.asc --export -a 209B35F4

Subiendo llave pública a servidor de llaves

Muy util si queremos que otros usuarios nos puedan enviar información cifrada. Para el caso se utilizara el servidor de ubuntu

gpg --send-keys --keyserver keyserver.ubuntu.com 209B35F4
O
gpg --keyserver keyserver.ubuntu.com --send-key 209B35F4

Si utilizamos el navegador para agregar la llave, debemos exportarla a un archivo

gpg --export -a 209B35F4 > clave_ejemplo_publica.asc
Abrimos http://keyserver.ubuntu.com/ en el navegador

Copiar el contenido del archivo obtenido en el apartado:
Submitting a new OpenPGP Key
Enter ASCII-armored OpenPGP key here:

Hacer [Click] en [Submit]


Cambiar clave de acceso a una llave privada

gpg --edit-key 209B35F4
en la linea de comandos escribir passwd
escribir la clave actual y luego la nueva clave


Fuentes

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas