gpgcard 101

Voy a explicar el uso principal que se le puede dar a una tarjeta como esta:

http://shop.kernelconcepts.de/product_info.php?cPath=1_26&products_id=42&language=en

Se recomienda usar gpg2, ya que con gpg solo podríamos almacenar claves de hasta 1024 bits, por lo que es conveniente añadir un alias, en .bashrc mismo

alias gpg='gpg2'

En mi caso (debian jessie) tuve que quitar del inicio el agente de contraseñas gpg, que parece que crea conflictos, e instalar unos cuantos paquetes:

$ gnome-session-properties
$ sudo aptitude install scdaemon pcscd pcsc-tools gpgsm

Test de la tarjeta

Comprueba que el lector de tarjetas funciona correctamente, con la tarjeta introducida:

$ gpg --card-status

Es una buena idea empezar cambiando los pines que la tarjeta lleva por defecto. El pin es 123456 y el admin pin 12345678. Para cambiarlo:

$ gpg --change-pin

Cambiar los datos del propietario

$ gpg --card-edit
gpg/card> admin
gpg/card> help
gpg/card> name
gpg/card> lang
gpg/card> sex
gpg/card> url

Crear keys!

$ gpg --gen-key

Recomendable DSA / RSA y un mínimo de 2048 bits. Poned también validez de la clave, 5 o 10 años. Seguidamente pedirá nombre completo, y un correo electrónico. En el comentario yo recomendaría dejarlo vacío. Es necesario realmente poner ahí algo? Luego habrá que hacer el moñas con el ordenador para brindarle a gpg entropía suficiente para que pueda generar un nivel de aleatoriedad decente en la clave privada.

Cuando termine, habrá salido, entre otras cosas algo como:

pub   2048R/A983C78DD 2014-04-20

Es el ID de la clave generada. Anótate este ID y reemplázalo con los ejemplos siguientes

Generando subkeys que luego almacenaremos en la tarjeta:

$ gpg --edit-key A983C78DD

crearemos tres claves, una para cifrar, otra para firmar y otra para autenticación

> addkey

Elegid RSA para firmar 2048 bits mínimo y una caducidad prudente. Te pedirá la contraseña que le pusiste a la clave maestra. Repite la operación, cambiando únicamente a RSA para cifrar.

Para autenticación, hay que salir de gpg y volver a entrar con el comando –expert

$ gpg --expert --edit-key A983C78DD
> addkey

Fijaos que ahora aparecen más opciones para crear subclaves. Elegiremos (8) A continuación hay que elegir la capacidad de autenticación (y solo autenticación, por lo que hay que eliminar las otras opciones de cifrado y firma) Para ello seleccionamos las siguientes opciones (F, C, A) Salimos, elegimos caducidad, y listo.

Salvar claves en un lugar seguro

Los ficheros a salvar son \~/.gnupg/secring.gpg y \~/.gnupg/pubring.gpg Copialos a un lugar seguro, a ser posible offline. Por ejemplo, almacénalos en un pendrive con una partición cifrada ~~con truecrypt~~ y guárdalo.

Mover subclaves a la tarjeta

$ gpg --edit-key A983C78DD
> toggle

Iremos eligiendo la clave una a una y la iremos pasando a la tarjeta

> key 2
> keytocard

Para pasar a la siguiente hay que deseleccionar la anterior

Nos cargamos la key principal de cifrado que se ha creado junto a la clave maestra y que no nos va a hacer falta:

> key 1pub
> delkey

Ahora, para dejar las keys, pero solo los fragmentos y no las claves completas, que estarán en la smartcard, hay que hacer los siguientes pasos

Exportar las subkeys

$ gpg --export-secret-subkeys A983C78DD > sub.keyring

Eliminar la clave maestra

$ gpg --delete-secret-keys A983C78DD

Ahora no tenemos nada, así que vamos a importar los stubs de las subclaves privadas, y las claves públicas

$ gpg --import < sub.secring
$ gpg --import < .gnupg/pubring.gpg.backup

Ya está todo montado. Ahora ya podemos eliminar los backups de las claves que hemos hecho inicialmente. Double check que tienes copia de seguridad antes de borrarlo!

$ rm .gnupg/pubring.gpg.backup
$ rm .gnupg/secring.gpg.backup

Distribuir las claves

En .gnupg/gpg.conf

keyserver pgp.rediris.es
$ gpg --send-keys A983C78DD

Si quieres adjuntar la clave pública a la firma de tu correo, o subirlo a tu web para que los demás puedan importarla:

$ gpg --armor --export A983C78DD > publickey.asc

Usar gpg en otro PC

Debemos tener igualmente un lector de smartcards, para poder dar uso a las claves privadas que están almacenadas en la gpgcard.

$ gpg --card-edit
>fetch

Se descargara la clave pública desde la URL que has configurado en la tarjeta

Y esto es todo! La smartcard nos puede servir para un montón de cosas más, como autenticación SSH por clave pública, integración con PAM (y que incluso se bloquee la sesión quitando la tarjeta del lector), LVM, truecrypt, keepass, etcetcetc. Trastearé la manera de hacerlo y lo contaré por aquí, para que, como siempre, lo tenga almacenado a modo de chuleta y si os sirve de algo, me quedo satisfecho.

Saludos! o/

social