LinuxParty
La criptografía es una técnica muy antigua que en la actualidad ha vuelto a ganar prioridad, sobre todo ante la revelación de Snowden de que los gobiernos ejercen control ciudadano e industrial a través de las redes electrónicas. Iniciarse en ella sirve para tomar conciencia de lo desprotegidos que están nuestros datos cuando navegamos en la red. Y, aunque el arte de la encriptación digital no sea todo lo que necesitamos para mejorar nuestra privacidad, es un buen lugar por el que empezar.
Contribuyo a este aprendizaje con un resumen for dummies de los comandos necesarios para encriptar y desencriptar archivos en la terminal de Linux, del tipo que sean (no solo texto, también imagen), a partir de varios manuales como el de la página oficial de GNUpg o este artículo de Bitriding.
Si lo que quieres es encriptar una gran cantidad de ficheros, entonces debes de ver:
Crear una carpeta encriptada en Linux al estilo RealCrypt
Para empezar, creo que está bien escribir este comando para conocer todas las órdenes disponibles:
gpg --help
gpg (GnuPG) 1.4.21
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: ~/.gnupg
Algoritmos admitidos:
Clave pública: RSA, RSA-E, RSA-S, ELG-E, DSA
Cifrado: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Resumen: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compresión: Sin comprimir, ZIP, ZLIB, BZIP2
Sintaxis: gpg [opciones] [ficheros]
Firma, comprueba, cifra o descifra
La operación predeterminada depende de los datos de entrada
Órdenes:
-s, --sign [file] crea una firma
--clearsign [file] crea una firma en texto claro
-b, --detach-sign crea una firma separada
-e, --encrypt cifra datos
-c, --symmetric cifra solo con un cifrado simétrico
-d, --decrypt descifra datos (predeterminado)
--verify verifica una firma
--list-keys lista claves
--list-sigs lista claves y firmas
--check-sigs lista y comprueba firmas de las claves
--fingerprint lista claves y huellas digitales
-K, --list-secret-keys lista claves secretas
--gen-key genera un nuevo par de claves
--delete-keys elimina claves del almacén público
--delete-secret-keys elimina claves del almacén privado
--sign-key firma una clave
--lsign-key firma localmente una clave
--edit-key firma o modifica una clave
--gen-revoke genera un certificado de revocación
--export exporta claves
--send-keys exporta claves a un servidor de claves
--recv-keys importa claves desde un servidor de claves
--search-keys busca claves en un servidor de claves
--refresh-keys actualiza todas las claves desde un servidor de claves
--import importa/fusiona claves
--card-status escribe el estado de la tarjeta
--card-edit cambia datos en la tarjeta
--change-pin cambia el PIN de la tarjeta
--update-trustdb actualiza la base de datos de confianza
--print-md algo [files] imprime resúmenes de mensaje
Opciones:
-a, --armor crear una salida ascii con armadura
-r, --recipient NOMBRE cifrado para NOMBRE
-u, --local-user usa este usuario para firmar o descifrar
-z N establece nivel N de compresión (0 no comprime)
--textmode usa modo de texto canónico
-o, --output usa como fichero de salida
-v, --verbose detallar
-n, --dry-run no realizar ningún cambio
-i, --interactive preguntar antes de sobreescribir
--openpgp usar estilo OpenPGP estricto
--pgp2 generar mensajes compatibles con PGP 2.x
(Véase en la página del manual la lista completa de órdenes y opciones)
Ejemplos:
-se -r Bob [fichero] firma y cifra para el usuario Bob
--clearsign [fichero] hace una firma para texto sin cifrar
--detach-sign [fichero] hace una firma separada
--list-keys [nombres] muestra las claves
--fingerprint [nombres] muestra las huellas digitales
Informe de posibles «bugs» a <Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>.
Crear par de claves
Una vez conocidos los comendos disponibles (no significa que vayamos a utilizar todos en este momento), procedemos a crear nuestro par de claves (clave pública y clave privada). Si no tienes nociones básicas sobre esto, recomiendo que leas la clarificadora entrada de Wikipedia sobre Criptografía Asimétrica.
gpg --gen-key
gpg (GnuPG) 1.4.21; Copyright (C) 2015 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Seleccione el tipo de clave deseado: (1) RSA y RSA (por defecto) (2) DSA y ElGamal (por defecto) (3) DSA (sólo firmar) (4) RSA (sólo firmar) ¿Su elección?
Seleccionamos todas las opciones predeterminadas e introducimos nuestros datos personales cuando el programa los solicite.
Exportar clave pública
Para que otros usuarios puedan enviarnos archivos encriptados, necesitan que les facilitemos nuestra clave pública. Como la clave pública ha sido generada junto a la privada y esta última solo debe estar en nuestro conocimiento, tenemos que exportar la clave pública, para lo que nos ayudamos del siguiente comando:
gpg --export -a -o nombe_archivo_destino_clave_publica.txt userID
- -export es la orden que indica la exportación.
userID es el código de identificación de nuestro usuario que nos facilita el programa cuando genera el par de claves. En este caso, la ID de usuario sería 4DE27A63.
Código de identificación de usuario para exportar la clave pública
-o indica la generación de un archivo.
-a “crea una salida ascii con armadura”, que no sé realmente qué implica, pero sé que así lo indicaban los manuales, y que funciona.
La clave pública generada con Linux da este formato como resultado:
Importar la clave pública de otro usuario
Para poder enviar archivos cifrados a otro usuario, necesitamos importar su clave pública:
gpg --import nombre_del_archivo_de_la_clave_pública.txt
Podemos consultar las claves importadas con el comando:
gpg -k
Encriptar un archivo
Una vez llegados a este punto, encriptar el archivo es realmente sencillo. Solo necesitamos introducir este comando:
gpg -e -r userID <nombre_del_archivo_que_queremos_encriptar>
userID es el código de identificación de la clave pública que se ha generado para el usuario destinatario (y que obtendremos al listar las claves importadas con gpg -k, como hemos visto).
-e es la orden de encriptado.
-r es la orden que indica que el archivo se encripta para un usuario concreto.
Se generará un nuevo archivo con el mismo nombre que el de origen con la extensión .gpg.
Desencriptar un archivo
Para desencriptar un archivo que otro usuario ha encriptado para nosotros, debemos introducir este comando:
gpg --output <nombre_del_archivo_de_destino> --decrypt <nombre_del_archivo_de_origen>
- -output es la orden que genera el archivo de destino, desencriptado
- -decrypt ordena la desencriptación del archivo encriptado
Otras formas de encriptar archivos
Enigmail es un complemento para Thunderbird que permite encriptar los mensajes enviados mediante este cliente de correo. Tengo mucha curiosidad por empezar a usarlo, la verdad.
-
Encriptación
- Cómo crear una carpeta privada, personal y encriptada En Ubuntu
- Encriptar y desencriptar archivos y directorios en Windows, Linux y Mac, con Tar y OpenSSL
- Cómo cifrar y descifrar archivos y directorios con Tar y OpenSSL
- Encriptación del Directorio Home en Windows
- Desmitificando Blockchains
- Crear tu propia criptomoneda, usando tu blockchain
- Parte 1, Blockchain en Linux - Introducción y criptomoneda
- Parte 2, Blockchain en Linux - Configurar una red Blockchain y aprovechar la tecnología
- Cómo instalar Blockchain en Ubuntu
- Crear una carpeta segura y encriptada en Linux al estilo RealCrypt (ya encfs)
- Las mejores VPN para Linux
- Charla IPTABLES, que se dió en el canal #linux_party
- Charla IPTABLES, que se dió en el canal #linux_party (2)
- Espiar conversaciones y rastrear móviles, ¿estamos seguros en Internet?
- Encriptar y desencriptar ficheros en Linux, desde la consola