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 diferentesub:
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 comandogpg --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: