LINUX

Cómo generar una clave GPG para una comunicación segura

El cifrado es un proceso de incrustación de datos de texto sin formato de tal manera que no puedan ser decodificados por personas externas. Es necesario cifrar los datos para evitar un mal uso. La aplicación GNU Privacy Guard (GPG) le permite cifrar y descifrar información. Se basa en el uso de un par de claves, una pública y otra privada (o secreta). Los datos cifrados con una clave solo se pueden descifrar con la otra. Para encriptar un mensaje para usted, alguien usaría su clave pública para crear un mensaje que solo podría desbloquearse con su clave privada. Para firmar información, debe bloquearla con su clave privada, lo que permite que cualquiera verifique que proviene de usted desbloqueándola con su clave pública.

Las distribuciones modernas de Linux ya tienen gpg instalado. Si no está presente, instálelo.

en Centos

 #yum install gnupg

en Ubuntu

 #apt-get install gnupg

1) Crear clave gpg

Al instalar el paquete gnupg, también debemos comprender el concepto para usar gpg.

Generando un nuevo par de claves

Para cifrar su comunicación, lo primero que debe hacer es crear un nuevo par de claves. GPG puede crear varios tipos de pares de claves, pero una clave primaria debe poder realizar firmas.

# gpg --gen-key
Please select what kind of key you want:
   Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Please specify how long the key should be valid.
Key is valid for? (0) 0
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: my_name
Email address: my_name@linoxide.com
Comment: my-key-pair
You selected this USER-ID:
    "my_name (my-key-pair) <my_name@linoxide.com>"

You need a Passphrase to protect your secret key.

We need to generate a lot of random bytes.
.......+++++

pub   4096R/BAC361F1 2017-03-30
      Key fingerprint = 0397 AD65 6EE6 074A 2B95  EEF1 D2A7 4997 BAC3 61F1
uid   my_name (my-key-pair) <my_name@linoxide.com>
sub   4096R/9742DE56 2017-03-30
  • uid: Por favor tome nota sobre el ID DE USUARIO mencionado en el resultado. Usaremos su valor para hacer alguna operación.
  • pub: Representa la clave pública. los ID de clave es BAC361F1. El tuyo sera diferente
  • sub: Representa subclaves, va junto con la clave principal. Por lo general, se utiliza para cifrar.

Su mensaje puede manejarse durante mucho tiempo sin terminar si ve el mensaje a continuación

"Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 285 more bytes)"

El problema es causado por la falta de entropía (o ruido aleatorio del sistema). Así que cancele el proceso y verifique la entropía disponible

$ cat /proc/sys/kernel/random/entropy_avail
14

Puedes ver que no es suficiente. Podemos instalar un paquete para solucionar la falta de entropía con rngd que es una utilidad generadora de números aleatorios que se utiliza para verificar inmediatamente la entropía disponible

# apt-get install rng-tools
# cat /proc/sys/kernel/random/entropy_avail
3075

Ahora puede empezar de nuevo con el gpg --gen-key comando y el proceso estará bien. Solo lo hemos instalado sin nada más. En ciertas distribuciones, debe usar rngd antes del proceso gpg.

# rngd -f -r /dev/urandom

3) Generando un certificado de revocación

Una vez creado su par de claves, debe generar inmediatamente un certificado de revocación para revocar su clave pública si su clave privada se ha visto comprometida de alguna manera o si la pierde. Créelo cuando cree su clave. El proceso requiere su clave privada, frase de contraseña.

$ gpg --output revoke_key.asc --gen-revoke BAC361F1

sec  4096R/BAC361F1 2017-03-30 my_name (my-key-pair) <my_name@linoxide.com>

Create a revocation certificate for this key? (y/N) y
(Probably you want to select 1 here)
Your decision? 0
Enter an optional description; end it with an empty line:
> revocation if key compromised
> 
Reason for revocation: No reason specified
Is this okay? (y/N) y

You need a passphrase to unlock the secret key for
user: "my_name (my-key-pair) <my_name@linoxide.com>"
4096-bit RSA key, ID BAC361F1, created 2017-03-30

Revocation certificate created.

El argumento BAC361F1 es la clave IDENTIFICACIÓN. Debe ser un especificador de clave, ya sea el ID de clave de su par de claves principal o cualquier parte de una identificación de usuario que identifique su par de claves como my_name@linoxide.com. El certificado generado se guardará en revoke_key.asc expediente. Guárdelo donde otros no puedan acceder a él porque cualquiera que tenga acceso a él puede revocar su clave, haciéndola inútil. Si el --output se omite la opción, el resultado se colocará en la salida estándar.

4) Hacer una versión blindada ASCII de su clave pública

Algunos servidores de claves le permiten pegar una versión blindada ASCII de su clave pública para cargarla directamente. Este método es el más preferido porque la clave proviene directamente del usuario que puede ver que la clave se ha cargado correctamente.

$ gpg --output armored_key.asc --export -a BAC361F1

5) Cambio de llaves

Para comunicarse con otros, debe intercambiar claves públicas. Para hacerlo, debe poder enumerar sus claves. Hay algunos comandos para enumerar su llavero público

  • gpg --list-keys: Enumere todas las claves de los llaveros públicos o solo las claves dadas en la línea de comando.
  • gpg --list-secret-keys: Enumere todas las claves de los anillos de claves secretos o solo las que se proporcionan en la línea de comando
  • gpg --list-sigs: Igual que –list-keys, pero las firmas también se enumeran.
$ gpg --list-keys

/home/ubuntu/.gnupg/pubring.gpg ------------------------------- 
pub   4096R/BAC361F1 2017-03-30 
uid   my_name (my-key-pair) <my_name@linoxide.com> 
sub   4096R/9742DE56 2017-03-30

Exportar una clave pública

Ahora que ha generado un par de claves, el siguiente paso es publicar su clave pública en Internet (Servidores de claves) para que otra persona pueda usarla para enviarle un mensaje. Puede utilizar el ID de clave o cualquier parte del ID de usuario se puede utilizar para identificar la clave a exportar. Hay dos comandos, pero con el primer comando, la clave se exporta en formato binario y puede ser inconveniente cuando se envía por correo electrónico o se publica en una página web. Entonces, usaremos el segundo comando para el método blindado ASCII.

$ gpg --output to-bob.gpg --export BAC361F1
$ gpg --armor --export BAC361F1 > my_pubkey.gpg

La salida se redirigirá a my_pubkey.gpg archivo que tiene el contenido de la clave pública para facilitar la comunicación.

Envíe sus claves públicas a un servidor de claves

Una vez que tenga esta clave pública blindada ASCII, puede pegarla manualmente en un formulario en un servidor de claves públicas como pgp.mit.edu

$ gpg --keyserver pgp.mit.edu --send-keys BAC361F1
gpg: sending key BAC361F1 to hkp server pgp.mit.edu

Debido a que alguien parece haberte enviado su clave pública, no hay razón para confiar en que es de esa persona a menos que la hayas validado.

Importar una clave pública

Como otras personas pueden usar su clave pública para enviarle un mensaje, puede importar público de personas en las que confía para comunicarse con ellos.

gpg --import bob_public_key.gpg

Conclusión

Ahora tenemos nociones sobre los principios para usar y generar una clave pública. Sabe cómo está funcionando GnuPG y puede usarlo para una comunicación segura. El cifrado GPG solo es útil cuando ambas partes utilizan buenas prácticas de seguridad y están atentas.

Leer también:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar