Criptografía, ¿El patito feo de la informática? (III)

Una vez hemos visto la introducción y la aplicación a escenarios y entornos concretos, vamos por último a ver una herramienta que es casi imprescindible conocer para el cifrado de información: el gran GPG.

GNU Privacy Guard es una herramienta de cifrado y firma digital, que de por sí nos daría para un post entero, pero dado que hay literatura de sobra para completar varios libros solo daré unas pinceladas básicas. El principal uso de esta herramienta es el cifrado y firmado de archivos y emails mediante criptografía asimétrica, aunque también soporta el cifrado de datos mediante algoritmos simétricos.

1. Primeros pasos

Antes de comenzar, es recomendable que el lector se lea los capítulos 1 y 2 de la breve guía de uso de la herramienta. No llevará mucho tiempo y aportará una base muy sólida sobre la que comenzar. Una vez claros los conceptos básicos sobre los cimientos de GPG, comenzamos generando nuestro primer par de claves (claves privada y pública):

>> gpg --gen-key

Durante la generación nos pedirá el nombre y apellido, email y la contraseña para cifrar la clave privada. Para ver nuestras claves recién generadas podemos introducir:

>> gpg -K
/home/hcn/.gnupg/pubring.kbx
----------------------------------
sec rsa2048/09387E49 2015-05-22
uid     [ultimate] Security Artwork <test@example.com>
ssb rsa2048/19D8A6D6 2015-05-22

Aquí vemos diversa información que nos será útil para la gestión de nuestras claves; por un lado disponemos de la columna de identificación de elemento, que nos indicará de qué tipo es el elemento al que precede en nuestro caso:

  • sec indica que es la clave secreta.
  • uid indica que es el id de usuario (podemos añadir los que necesitemos).
  • ssb indica que es la subclave secreta.

Además mediante el comando gpg -k veremos las partes públicas de nuestro par de claves:

  • pub indica que es la clave pública.
  • sub indica que es la subclave pública.

La siguiente columna, obviando las líneas de uid, nos indica el algoritmo criptográfico que utiliza la clave y su ID. En nuestro caso el algoritmo empleado es rsa2048 y el ID es 09387E49; este último lo utilizaremos para realizar operaciones sobre las claves.

El siguiente paso será exportar la clave pública para ofrecerla a todo aquel que quiera cifrar algo para nosotros o quiera comprobar la firma digital de algún documento.

>> gpg -a --export 19D8A6D6

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2

mQENBFVfcsABCADUct+G1sX9Pffn6LsrAci15+ekgkHO2B8CczRRPRENeshj6kMm
tH0knHeD401FWtfNGTEXEAW8m6DsMQBgsOTs0mi458cO/J2bzujleT5XfRGsNtmJ
...
r3k7m9IdsTxZn+XfETmXKdA35ZmzKb6Jk3irduEeTrtNeuRnNkAxIB2F+mcv1LTs
LArBQVCTtBs88ZIfHhsLvRfJYV7JuA7jicFHBEIvHwW6
=5nF0
-----END PGP PUBLIC KEY BLOCK-----

Mediante el parámetro -a nos aseguramos que la salida sea en base64 (ascii armored).

2. Lo básico que se debe saber

Las operaciones más básicas corresponden a cifrar, descifrar, firmar y verificar una firma. Estas operaciones las realizaremos con los comandos explicados mas adelante, pero antes de nada debemos saber como importar una clave pública que recibamos en nuestro llavero. Esto lo haremos mediante:

gpg --import claveDeBernardo.asc

Para comprobar que efectivamente la hemos importado podremos escribir gpg -k esto mostrará nuestro llavero público. Si solo quisiéramos ver la clave de Bernardo deberemos añadir al final el ID de la clave gpg -k [ID]. Algunos de los comandos que más usaremos serán:

  • Cifrar: gpg --encrypt --armor --recipient [id destinatario] msg.txt
  • Descifrar: gpg --decrypt msg.txt.asc
  • Firmar: gpg --armor --clearsign msg.txt
  • Verificar:: gpg --verify msg.txt.asc
  • Cifrar y firmar: gpg --armor --sign --encrypt --recipient [id destinatario] msg.txt
  • Verificar y descifrar: gpg --decrypt msg.txt.asc

Con esta base de conocimientos ya podremos hacer un uso decente de esta suite. Remarcar que existen frontends para los sistemas operativos más usados, para el que no disfrute de una buena sesión de consola. Estos además suelen incorporar una batería de plugins/herramientas que harán mucho más sencillo el uso diario:

  • Windows: GPG4Win.
  • Mac OS X: MacGPG.
  • Linux, Seahorse y Kleopatra.

Si queremos profundizar un poco más recomiendo encarecidamente la lectura del GPG mini howto mencionado anteriormente.

¿Alguien se ha quedado con ganas de más?

Más allá de un despliegue ordinario

Existen diversos despliegues avanzados de GPG que dejaré como tarea de investigación al lector interesado. Yo me centraré en el uso avanzado de GPG con un cripto-token YubiKey Neo en este caso, dado que adquirí uno no hace mucho.

En esta sección daré por hecho que el lector sabe lo que es un cripto-token y tiene experiencia con smartcards. Una vez más, Internet está a rebosar de información de gran calidad ;)

1. Uso de un cripto-token para almacenar nuestra clave privada

El Yubikey Neo es una JavaCard y dispone de un applet para GPG, ¡ojo a esta noticia!

En este despliegue generaremos un par de claves y eliminaremos la privada del par principal, almacenándolo en un lugar seguro fuera de nuestro equipo (preferiblemente en un pendrive por duplicado). Además este lo generaremos de tal forma que solo nos permita certificar, usando una subclave para la firma. De este modo, al finalizar nuestro despliegue, en lugar de ser como el básico (por defecto) a continuación:

sec rsa2048/AAAAAAAA caduca: YYYY-MM-DD uso: SC
ssb rsa2048/BBBBBBBB caduca: YYYY-MM-DD uso: E

Dispondremos de la siguiente estructura:

sec rsa3072/AAAAAAAA caduca: YYYY-MM-DD uso: C
ssb rsa2048/BBBBBBBB caduca: YYYY-MM-DD uso: E
ssb rsa2048/CCCCCCCC caduca: YYYY-MM-DD uso: S
ssb rsa2048/DDDDDDDD caduca: YYYY-MM-DD uso: A

Donde: * Certify = Certificar, * Encrypt = Cifrar, * Sing = Firmar, y * Authentication = Autentificación. De esta forma la clave privada principal solo nos servirá para certificar nuevas sub-claves y para firmar el resto de claves (firmas de confianza).

Advertencia: recomiendo hacer un backup de los llaveros originales y crear unos nuevos para este proceso antes de continuar, en caso de que ya tengamos elementos en él:

>> mv .gnupg .gnupg_master
>> gpg -k

gpg: directory '/home/hcn/.gnupg' created
gpg: new configuration file '/home/hcn/.gnupg/gpg.conf' created
gpg: WARNING: options in '/home/hcn/.gnupg/gpg.conf' are not yet active during this run
gpg: keybox '/home/hcn/.gnupg/pubring.kbx' created
gpg: /home/hcn/.gnupg/trustdb.gpg: se ha creado base de datos de confianza

Empecemos generando nuestro nuevo par de claves maestras:

>> gpg --expert --full-gen-key

Por favor seleccione tipo de clave deseado:
   (1) RSA y RSA (por defecto)
   (2) DSA y ElGamal
   (3) DSA (sólo firmar)
   (4) RSA (sólo firmar)
   (7) DSA (permite elegir capacidades)
   (8) RSA (permite elegir capacidades)
   (9) ECC and ECC
   (10) ECC (sign only)
   (11) ECC (set your own capabilities)

Su elección: 8

Posibles acciones para una RSA clave: Firma Certificar Cifrado Autentificación
Acciones permitidas actualmente: Firma Certificar Cifrado

   (F) Conmutar la capacidad de firmar
   (C) Conmutar la capacidad de cifrado
   (A) Conmutar la capacidad de autenticación
   (S) Acabado

Su elección: F

Posibles acciones para una RSA clave: Firma Certificar Cifrado Autentificación
Acciones permitidas actualmente: Certificar Cifrado

   (F) Conmutar la capacidad de firmar
   (C) Conmutar la capacidad de cifrado
   (A) Conmutar la capacidad de autenticación
   (S) Acabado

Su elección: C

Posibles accriones para una RSA clave: Firma Certificar Cifrado Autentificación
Acciones permitidas actualmente: Certificar

   (F) Conmutar la capacidad de firmar
   (C) Conmutar la capacidad de cifrado
   (A) Conmutar la capacidad de autenticación
   (S) Acabado

Su elección: S

Las claves RSA pueden tener entre 1024 y 4096 bits de longitud.
¿De qué tamaño quiere la clave? (2048) 3072
El tamaño requerido es de 3072 bits
Por favor, especifique el período de validez de la clave.

   0 = la clave nunca caduca
   <n> = la clave caduca en n días
   <n>w = la clave caduca en n semanas
   <n>m = la clave caduca en n meses
   <n>y = la clave caduca en n años

¿Validez de la clave (0)? 1y
La clave caduca mar 24 may 2016 12:50:10 CEST
¿Es correcto? (s/n) s

GnuPG debe construir un ID de usuario para identificar su clave.

Nombre y apellidos: Security Artwork
Dirección de correo electrónico: test@example.com
Comentario:
Ha seleccionado este ID de usuario:
"Security Artwork <test@example.com>"

¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir? V
Es necesario generar muchos bytes aleatorios. Es una buena idea realizar
alguna otra tarea (trabajar en otra ventana/consola, mover el ratón, usar
la red y los discos) durante la generación de números primos. Esto da al
generador de números aleatorios mayor oportunidad de recoger suficiente
entropía.

gpg: clave 74145545 marcada como de confianza absoluta
claves pública y secreta creadas y firmadas.

gpg: comprobando base de datos de confianza
gpg: 3 dudosa(s) necesarias, 1 completa(s) necesarias,
modelo de confianza PGP
gpg: nivel: 0 validez: 1 firmada: 0 confianza: 0-, 0q, 0n, 0m, 0f, 1u
gpg: siguiente comprobación de base de datos de confianza el: 2016-05-24
pub rsa3072/74145545 2015-05-25 [caduca: 2016-05-24]
      Huella de clave = 268E 5482 6E1D 6A1E A4D4 972C 0EED 52F5 7414 5545
uid       [ultimate] Security Artwork <test@example.com>

Una vez que tenemos nuestro par de claves “maestras” es recomendable generar un certificado de revocación, el cual es recomendable almacenar en un lugar seguro (si un atacante consigue este certificado podrá revocar nuestras claves):

>> gpg --gen-revoke 74145545 > 74145545-revocation-certificate.asc

sec rsa3072/74145545 2015-05-25 Security Artwork <test@example.com>
¿Crear un certificado de revocación para esta clave? (s/N) s
Por favor elija una razón para la revocación:
0 = No se dio ninguna razón
1 = La clave ha sido comprometida
2 = La clave ha sido reemplazada.
3 = La clave ya no está en uso
Q = Cancelar
(Probablemente quería seleccionar 1 aquí)
¿Su decisión? 3

Introduzca una descripción opcional; acábela con una línea vacía:
> Este es el certificado de revocación que se generó en el momento de la
> creación del par de claves 74145545, es posible que ya no tenga acceso
> a la clave privada.
>
Razón para la revocación: La clave ya no está en uso
Este es el certificado de revocación que se generó en el momento de la
creación del par de claves 74145545, es posible que ya no tenga acceso
a la clave privada.
¿Es correcto? (s/N) s
se fuerza salida con armadura ASCII.
Certificado de revocación creado.

Por favor consérvelo en un medio que pueda esconder; si alguien consigue
acceso a este certificado puede usarlo para inutilizar su clave.
Es inteligente imprimir este certificado y guardarlo en otro lugar, por
si acaso su medio resulta imposible de leer. Pero precaución: ¡el sistema
de impresión de su máquina podría almacenar los datos y hacerlos accesibles
a otras personas!

Ahora generaremos nuestro subpar de claves para el cifrado. En este caso generamos este par en el ordenador en lugar del token debido a diversos motivos; el principal es que las claves privadas no se pueden exportar del token. Esto tiene la ventaja de que la clave privada nunca estará físicamente en el equipo y la desventaja de que si perdemos el token o nos es sustraído perderemos toda la información cifrada. Un tercer motivo para hacerlo así es poder tener varios tokens compartiendo la misma clave de cifrado.

>> gpg --edit-key 74145545

Clave secreta disponible.

pub rsa3072/74145545
    creado: 2015-05-25 caduca: 2016-05-24 uso: C
    confianza: ultimate validez: ultimate
[ultimate] (1). Security Artwork <test@example.com>

gpg> addkey
Por favor seleccione tipo de clave deseado:
    (3) DSA (sólo firmar)
    (4) RSA (sólo firmar)
    (5) ElGamal (sólo cifrar)
    (6) RSA (sólo cifrar)
Su elección: 6

Las claves RSA pueden tener entre 1024 y 4096 bits de longitud.
¿De qué tamaño quiere la clave? (2048)
El tamaño requerido es de 2048 bits
Por favor, especifique el período de validez de la clave.
0 = la clave nunca caduca
    <n> = la clave caduca en n días
    <n>w = la clave caduca en n semanas
    <n>m = la clave caduca en n meses
    <n>y = la clave caduca en n años
¿Validez de la clave (0)? 1y
La clave caduca mar 24 may 2016 13:18:21 CEST
¿Es correcto? (s/n) s
¿Crear de verdad? (s/N) s

Es necesario generar muchos bytes aleatorios. Es una buena idea realizar
alguna otra tarea (trabajar en otra ventana/consola, mover el ratón, usar
la red y los discos) durante la generación de números primos. Esto da al
generador de números aleatorios mayor oportunidad de recoger suficiente
entropía.

pub rsa3072/74145545
    creado: 2015-05-25 caduca: 2016-05-24 uso: C
    confianza: ultimate validez: ultimate
sub rsa2048/CC14E310
    creado: 2015-05-25 caduca: 2016-05-24 uso: E
[ultimate] (1). Security Artwork <test@example.com>

gpg> save

Debido a que pasar las claves al token es un proceso destructivo, realizaremos un backup de las claves generadas hasta el momento:

>> gpg -a --export-secret-keys 74145545 > 74145545-CC14E310-secret-keys.asc

Y llegó el momento de configurar nuestro token. Para ello necesitaremos activar el modo OTP y CCID con la herramienta ykpersonalize, para lo que establecemos el modo 82:

>> ykpersonalize -m82
Firmware version 3.4.0 Touch level 1295 Program sequence 3
The USB mode will be set to: 0x82
Commit? (y/n) [n]: y

Nota: El dato “Touch level” es la salida analógica del sensor táctil usada para tareas de desarrollo y debug.

Con esto ya podremos exportar nuestras claves al token y generar las claves restantes (Firmado y Autentificación). Lo primero es generar la clave de firmado:

>> gpg --edit-key 74145545
Clave secreta disponible.

pub rsa3072/74145545
    creado: 2015-05-25 caduca: 2016-05-24 uso: C
    confianza: desconocido validez: desconocido
sub rsa2048/CC14E310
    creado: 2015-05-25 caduca: 2016-05-24 uso: E
[ unknown] (1). Security Artwork <test@example.com>

gpg> addcardkey
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]

Por favor seleccione tipo de clave que generar:
    (1) Clave de firmado
    (2) Clave de cifrado
    (3) Clave de autentificación
Su elección: 1

Por favor, especifique el período de validez de la clave.
    0 = la clave nunca caduca
    <n> = la clave caduca en n días
    <n>w = la clave caduca en n semanas
    <n>m = la clave caduca en n meses
    <n>y = la clave caduca en n años
    Validez de la clave (0)? 1y
La clave caduca mar 24 may 2016 14:01:13 CEST
Es correcto? (s/n) s
Crear de verdad? (s/N) s

pub rsa3072/74145545
    creado: 2015-05-25 caduca: 2016-05-24 uso: C
    confianza: desconocido validez: desconocido
sub rsa2048/CC14E310
    creado: 2015-05-25 caduca: 2016-05-24 uso: E
sub rsa2048/00E3FA94
    creado: 2015-05-25 caduca: 2016-05-24 uso: S
[ unknown] (1). Security Artwork <test@example.com>

Ahora hacemos lo mismo para la clave de autentificación:

gpg> addcardkey
Signature key ....: F63F E3C8 2B1D 34A3 7185 8054 BE7B 12ED 00E3 FA94
Encryption key....: [none]
Authentication key: [none]

Por favor seleccione tipo de clave que generar:
    (1) Clave de firmado
    (2) Clave de cifrado
    (3) Clave de autentificación
Su elección: 3

Por favor, especifique el período de validez de la clave.
    0 = la clave nunca caduca
    <n> = la clave caduca en n días
    <n>w = la clave caduca en n semanas
    <n>m = la clave caduca en n meses
   <n>y = la clave caduca en n años
¿Validez de la clave (0)? 1y
La clave caduca mar 24 may 2016 14:02:46 CEST
¿Es correcto? (s/n) s
¿Crear de verdad? (s/N) s

pub rsa3072/74145545
    creado: 2015-05-25 caduca: 2016-05-24 uso: C
    confianza: desconocido validez: desconocido
sub rsa2048/CC14E310
    creado: 2015-05-25 caduca: 2016-05-24 uso: E
sub rsa2048/00E3FA94
    creado: 2015-05-25 caduca: 2016-05-24 uso: S
sub rsa2048/3A58B1A3
    creado: 2015-05-25 caduca: 2016-05-24 uso: A
[ unknown] (1). Security Artwork <test@example.com>

Finalmente seleccionamos el llavero privado con toggle y seleccionaremos la clave de cifrado key 1:

gpg> toggle

pub rsa3072/74145545
    creado: 2015-05-25 caduca: 2016-05-24 uso: C
    confianza: desconocido validez: desconocido
sub rsa2048/CC14E310
    creado: 2015-05-25 caduca: 2016-05-24 uso: E
sub rsa2048/00E3FA94
    creado: 2015-05-25 caduca: 2016-05-24 uso: S
sub rsa2048/3A58B1A3
    creado: 2015-05-25 caduca: 2016-05-24 uso: A
[ unknown] (1). Security Artwork <test@example.com>

gpg> key 1

pub rsa3072/74145545
    creado: 2015-05-25 caduca: 2016-05-24 uso: C
    confianza: desconocido validez: desconocido
sub* rsa2048/CC14E310
    creado: 2015-05-25 caduca: 2016-05-24 uso: E
sub rsa2048/00E3FA94
    creado: 2015-05-25 caduca: 2016-05-24 uso: S
sub rsa2048/3A58B1A3
    creado: 2015-05-25 caduca: 2016-05-24 uso: A
[ unknown] (1). Security Artwork <test@example.com>

gpg> keytocard
Por favor elija donde guardar la clave:
    (2) Clave de cifrado
Su elección: 2

pub rsa3072/74145545
    creado: 2015-05-25 caduca: 2016-05-24 uso: C
    confianza: desconocido validez: desconocido
sub* rsa2048/CC14E310
    creado: 2015-05-25 caduca: 2016-05-24 uso: E
sub rsa2048/00E3FA94
    creado: 2015-05-25 caduca: 2016-05-24 uso: S
sub rsa2048/3A58B1A3
    creado: 2015-05-25 caduca: 2016-05-24 uso: A
[ unknown] (1). Security Artwork <test@example.com>

gpg> save

De este modo ya disponemos de nuestras claves correctamente almacenadas en nuestro token. Lo próximo que debemos hacer es exportar la clave pública, establecer el servidor de claves para la obtención de nuestras claves públicas y cambiar el PIN por defecto y la clave de administración. Vamos allá.

Obtención de nuestra clave pública:

>> gpg --key-edit 74145545

Clave secreta disponible.

gpg> keyserver
Introduzca la URL de su servidor de claves preferido: https://ca.example.com/gpg/74145545.asc

gpg> showpref
[ unknown] (1). Security Artwork <test@example.com>
    Cifrado: AES256, AES192, AES, 3DES
    Resumen: SHA256, SHA384, SHA512, SHA224, SHA1
    Compresión: ZLIB, BZIP2, ZIP, Sin comprimir
    Características: MDC, Sevidor de claves no-modificar
    Servidor de claves preferido: https://ca.example.com/gpg/74145545.asc

gpg> save

En este caso debemos poner a disposición de todo el mundo nuestra clave pública exportada bajo la url “ca.example.com/gpg/74145545.asc” o subir la clave a un servidor público. Antes de continuar debemos restaurar nuestros antiguos llaveros, en caso de haber hecho backup, y eliminar éste:

>> rm -r .gnupg
>> mv .gnupg_master .gnupg

Configuramos las contraseñas y el servidor de claves del token:

>> gpg --card-edit

Application ID ...: D9990009999909000009999999990000
Version ..........: 2.0
Manufacturer .....: Yubico
Serial number ....: 99999999
Name of cardholder: [no establecido]
Language prefs ...: [no establecido]
Sex ..............: no especificado
URL of public key : [no establecido]
Login data .......: [no establecido]
Signature PIN ....: forzado
Key attributes ...: 2048R 2048R 2048R
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 3 3
Signature counter : 1
Signature key ....: F63F E3C8 2B1D 34A3 7185 8054 BE7B 12ED 00E3 FA94
    created ....: 2015-05-25 12:00:50
Encryption key....: C7ED E4C8 8E71 5EA0 5DF7 0FD9 03AF E58A CC14 E310
    created ....: 2015-05-25 11:18:06
Authentication key: BF2F EC14 C00B 2703 48BC 535E C0DA 7B2A 3A58 B1A3
    created ....: 2015-05-25 12:02:42
General key info..: sub rsa2048/00E3FA94 2015-05-25 Security Artwork <test@example.com>
sec rsa3072/74145545 creado: 2015-05-25 caduca: 2016-05-24
ssb> rsa2048/CC14E310 creado: 2015-05-25 caduca: 2016-05-24
                         num. tarjeta: 0009 99999999
ssb> rsa2048/00E3FA94 creado: 2015-05-25 caduca: 2016-05-24
                         num. tarjeta: 0006 03037243
ssb> rsa2048/3A58B1A3 creado: 2015-05-25 caduca: 2016-05-24
                         num. tarjeta: 0009 99999999

gpg/tarjeta> admin
Se permiten órdenes de administrador

gpg/tarjeta> passwd
gpg: tarjeta OpenPGP num. D9990009999909000009999999990000 detectada

1 - change PIN
2 - unblock PIN
3 - change Admin PIN
4 - set the Reset Code
Q - quit

Su elección: 1
PIN changed.

1 - change PIN
2 - unblock PIN
3 - change Admin PIN
4 - set the Reset Code
Q - quit

Su elección: 3
PIN changed.

1 - change PIN
2 - unblock PIN
3 - change Admin PIN
4 - set the Reset Code
Q - quit

Su elección: q

gpg/tarjeta> url
URL de donde recuperar la clave pública: https://ca.example.com/gpg/74145545.asc

gpg/tarjeta> fetch
gpg: solicitando clave 00E3FA94 de https servidor ca.example.com

gpg/tarjeta> quit

Si ahora echamos un vistazo mediante gpg -K veremos que sec está precedido por # y sbb por &gt;

sec# rsa3072/74145545 creado: 2015-05-25 caduca: 2016-05-24
ssb&gt; rsa2048/CC14E310 creado: 2015-05-25 caduca: 2016-05-24
                         num. tarjeta: 0009 99999999
ssb&gt; rsa2048/00E3FA94 creado: 2015-05-25 caduca: 2016-05-24
                         num. tarjeta: 0006 99999999
ssb&gt; rsa2048/3A58B1A3 creado: 2015-05-25 caduca: 2016-05-24
                         num. tarjeta: 0009 99999999

Esto nos indica que no se dispone del componente privado de la clave maestra ni el de las sub-claves; esto es buena señal, justo lo que pretendíamos. Ahora cuando queramos generar un nuevo par de claves o firmar alguna clave importada debemos desenterrar nuestra clave privada, importarla, realizar las operaciones que necesitemos, borrarla del llavero y volver a enterrar nuestro Pendrive.

2. Uso de nuestra clave GPG para SSH

Ahora podremos utilizar nuestra clave GPG almacenada en el token para autentificarnos frente a nuestro servidor SSH. Para ello debemos parar el servicio ssh-agent que utilice nuestro sistema, crear el archivo de configuración de gpg-agent:

>> cat enable-ssh-support > ~/.gnupg/gpg-agent.conf

Y acto seguido levantar el servicio gpg-agent. Para obtener nuestra pública en el formato utilizado por SSH, deberemos usar la herramienta gpgkey2ssh con el ID de la clave de autentificación, éste lo podremos obtener mediante gpg --card-status (el ID son los 8 últimos dígitos):

>> gpgkey2ssh 3A58B1A3

Esto nos devolverá la clave pública lista para copiar en authorized keys.

Notas finales

Como hemos visto la criptografía ni es el patito feo ni es específica de la informática, ni es en absoluto magia. El mundo de la criptografía es apasionante a la vez que duro y muy útil y más en los tiempos que corren: “Winter is coming”.

Si queremos adentrarnos más en este fascinante mundo y saber cómo funciona en sus más bajos niveles, disponemos de diversos recursos tanto en español como en inglés:

Espero que a pesar del volumen de lectura esta breve serie haya servido para aclarar conceptos, tener una visión más clara de esta parte “oscura” de la seguridad y que haya servido un poco de motivación para indagar más a fondo.

Bibliografía

Comments

  1. Este articulo tiene caracteres “no validos” y/o ocultos que dañan el rss del sitio.
    RSS: https://www.securityartwork.es/feed/

  2. Muchas gracias Fredy, estamos en ello ;)