Ir al contenido principal

Criptografía

Una alternativa es utilizar gpg. Es un programa para encriptar archivos. Funciona desde la línea de comandos "shell".

GPG es una herramienta para crear y manejar claves y firmas digitales, software libre bajo GPL, es ampliamente utilizado, muy fácil de utilizar y multiplataforma.
 


En GNU/Linux ya viene preinstalado gpg.

En Window deberás ir a gnupg.org  y  bajar Gpg4win
Este es más gráfico.




a) Cifrado simétrico: Una sola clave (clave privada)


Desde la consola
1) Creamos un  directorio"cifrado_simétrico" y dentro un fichero "prueba" (texto plano). Desde un editor de texto o desde la consola
$ mkdir cifrado_simetrico
$ cat  > prueba
Esto es un mensaje de prueba
(Ctrl+C, para salir del texto)

2) Ciframos el fichero "prueba"
cifrado binario
gpg --symetric prueba (cifrado simétrico en binario, no exportable a correos)
gpg -c prueba (método abreviado de binario)

cifrado ascii
gpg --symetric -a prueba (cifrado en ascii, permite pegarlo en un correo electrónico)
gpg -c -a prueba (método abreviado a ascii, exportable a correos)
(pedirá que coloquemos dos veces la passfrase)


El proceso inverso (descifrar) requerirá
  • Archivo a descifrar
  • Clave simétrica
Binario
gpg --decrypt prueba (método largo)

gpg -d prueba (método abreviado)
Si agregamos > prueba,  nos permitirá ver el contenido en la propia consola

gpg -d prueba > prueba



Nota: Ha cambiado en las últimas versiones (Ubuntu 18
04 LTS). Incluso la clave queda almacenada en la memoria de la sheel.

gpg --decrypt prueba  (método largo)  nos permitirá ver el contenido en la propia consola

gpg -d prueba (método abreviado) nos permitirá ver el contenido en la propia consola

Si agregamos  al final "> prueba.txt",  nos permitirá extraerlo descifrado en un archivo descodificado que podrás leer desde una aplicación para textos

gpg -d prueba > prueba.txt





Ascii
gpg --decrypt prueba.asc
Si agregamos > prueba,  nos permitirá ver el contenido en la propia consola
gpg -d prueba.asc >prueba (método abreviado)


b) Cifrado simétrico (dos claves, una privada y otra pública)

gpgp

1) Generar las dos claves (privada y pública) usuario antonio
Ejemplo con dos usuarios para hacer un intercambio de mensajes.
sudo gpg --full-gen-key (enter)



Datos falsos Escogemos una opción de clave (2)
Tamaño de la encriptación (2048)
Período de validez (0, no caducará)
Nombre y Apellido (antonio)
Dirección de correo(antonio@inventado.com)
Comentario
Le damos a v (vale)
Passfrase de proteger la clave (xxx)
Repetimos (xxx)


2) Exportamos la clave
gpg -a --export -o /tmp/antonio.pub 
En este caso la exporta como un archivo ascii en la carpeta temporal con el nombre de antonio.pub

3) Generar las dos claves (privada y pública) usuario sanchez 
Hacemos la misma operación desde otra cuenta de usuario (sanchez)

Escogemos una opción de clave (2)
Tamaño de la encriptación (1024)
Período de validez (0, no caducará)
Nombre y Apellido (sanchez)
Dirección de correo(sanchez@inventado.com)
Comentario
Le damos a v (vale)
Passfrase de proteger la clave (yyy)
Repetimos (yyy)

4) Exportamos la clave
gpg -a --export -o /tmp/sanchez.asc
En este caso la exporta como un archivo ascii en la carpeta temporal con el nombre de sanchez.asc

5) Importamos la clave pública de antonio a la sesión de sanchez
gpg --import  /tmp/antonio.pub

Listamos las claves
gpg --list-keys

6) Confirmamos la clave de antonio para autenticarla y con el id de la clave de sanchez
gpg --signal-key antonio

confirmamos y metemos nuestra clave (yyy)

7) Servidor de claves públicas (updown)
Pasamos nuestra clave pública de sanchez para antonio, pero a través de un servidor de claves
http://keyserver.pgp.com

8) Creamos un fichero
cat > mensaje
En un lugra de la mancha de cuyo nombre no quiero acordarme ...
Ctrl+c (para salir)

9) Ciframos mensaje para antonio
gpg -v -a -o /tmp/mensaje.cifrado --encrypt --recipient  antonio mensaje

prolijo, encriptado ascii , clave de antonio, del fichero mensaje
Verificamos (ls /tmp)

10) Vamos a la sesión de antonio
gpg --decrypt /tmp/mensaje.cifrado
Pide la clave privada

11) Buscamos la clave pública de sanchez con su correo en el servidor de claves
http://keyserver.pgp.com y la bajamos


12)Buscamos la clave pública en descargas e importamos la clave de sanchez en la sesion de antonio
gpg --import /Descargas/Key..........

13) Firmamos la clave
gpg --sign-key sanchez

confirmamos con la clave de sanchez con la pssfrase de la clave  privada de antonio



Borrar claves

Pública
gpg --delete-key "Nombre Usuario"

Privada
gpg --delete-secret-key "Nombre Usuario"


Ver comandos
gpg --help


gpg (GnuPG) 2.1.15
libgcrypt 1.7.8
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://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: /home/chito/.gnupg
Algoritmos disponibles:
Clave pública: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cifrado: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
         CAMELLIA128, CAMELLIA192, CAMELLIA256
Resumen: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compresión: Sin comprimir, ZIP, ZLIB, BZIP2

Syntax: gpg [options] [files]
Sign, check, encrypt or decrypt
Default operation depends on the input data

Órdenes:

 -s, --sign                 crea una firma
     --clearsign            crea una firma en texto claro
 -b, --detach-sign          crea una firma separada
 -e, --encrypt              cifra datos
 -c, --symmetric            cifra sólo con un cifrado simétrico
 -d, --decrypt              descifra datos (predefinido)
     --verify               verifica una firma
 -k, --list-keys            lista claves
     --list-sigs            lista claves y firmas
     --check-sigs           lista y comprueba firmas de las claves
     --fingerprint          lista claves y huellas dactilares
 -K, --list-secret-keys     lista claves secretas
     --gen-key              genera un nuevo par de claves
     --quick-gen-key        quickly generate a new key pair
     --quick-adduid         quickly add a new user-id
     --quick-revuid         quickly revoke a user-id
     --full-gen-key         full featured key pair generation
     --gen-revoke           genera un certificado de revocación
     --delete-keys          elimina claves del anillo público
     --delete-secret-keys   elimina claves del anillo privado
     --quick-sign-key       quickly sign a key
     --quick-lsign-key      quickly sign a key locally
     --sign-key             firma la clave
     --lsign-key            firma la clave localmente
     --edit-key             firma o modifica una clave
     --passwd               cambie una contraseña
     --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          escribir estado de la tarjeta
     --card-edit            cambiar datos en la tarjeta
     --change-pin           cambiar el PIN de la tarjeta
     --update-trustdb       actualiza la base de datos de confianza
     --print-md             imprime resúmenes de mensaje
     --server               ejecutar en modo servidor
     --tofu-policy VALUE    set the TOFU policy for a key

Opciones:

 -a, --armor                crea una salida ascii con armadura
 -r, --recipient ID-USUARIO  
                            cifra para ID-USUARIO
 -u, --local-user ID-USUARIO  
                            usa este identificador para firmar o descifrar
 -z N                       nivel de compresión N (0 desactiva)
     --textmode             usa modo de texto canónico
 -o, --output FICHERO       volcar salida en FICHERO
 -v, --verbose              prolijo
 -n, --dry-run              no hace ningún cambio
 -i, --interactive          preguntar antes de sobreescribir
     --openpgp              usar estilo OpenPGP estricto

(Véase en la página del manual la lista completo de órdenes y opciones)

Ejemplos:

 -se -r Bob [fichero]       firma y cifra para el usuario Bob
 --clearsign [fichero]      hace una firma manteniendo el texto sin cifrar
 --detach-sign [fichero]    hace una firma separada
 --list-keys [nombres]      muestra las claves
 --fingerprint [nombres]    muestra las huellas dactilares

Informe de posibles fallos del programa a <https://bugs.gnupg.org>.


Webgrafía
  • Cifrado simétrico con gpg - Symmetric encryption with gpg Canal Youtube URL: kyateyatiende
  • Guía rápida de uso de GPG para crear borrar importar y exportar claves. URL: http://www.tribulinux.com/guia-rapida-gpg-crear-borrar-importar-y-exportar-claves.html 
  • Página oficial gpg. URL: https://www.gnupg.org/

Comentarios