- Fri 15 May 2020
- Tutoriales
- LEXO
- #GnuPG, #Gnuk, #OpenPGP
Para quienes hemos decidido agregar una capa extra de cifrado y seguridad a nuestras comunicaciones con GnuPG (la implementación de software libre en GNU/Linux de OpenPGP), es de sumo cuidado tener mucho cuidado en dónde y como almacenamos nuestras llaves GPG, así que hay quienes optamos por guardarlas en nuestro disco duro o USB cifrada, pero en este pequeño tutorial vamos a experimentar con Gnuk, una alternativa que promete un poco más de protección.
¿Qué es Gnuk?
Firmware de software libre que -mágicamente- corre en chips STM32F103 para armar dispositivos USB de criptografía, como es el caso de la implementación del protocolo OpenPGP compatible con nuestro gran aliado GnuPG.
Pros y contras
Pros
- Difícilmente se puede vulnerar con un ataque de fuerza bruta.
- Mejor protección contra intentos de clonaciónen en comparación con un disco duro o USB (aún estando cifrada).
Contras
- Dependencia a un dispositivo más
¿Qué se necesita?
Hardware
- Programador ST Link
- Maple Mini
- Cables
- Cautin
- Soldadura
Software
- GNU/Linux (para este tutorial de uso Devual Beowulf)
- GnuPG
- OpenOCD
Manos a la obra
Paquetes y dependencias necesarias
apt install git build-essential gcc-arm-none-eabi scdaemon
A descargar fuentes y compilar
git clone git://git.gniibe.org/gnuk/gnuk.git/
cd gnuk/
git submodule update --init
./configure --vidpid=234b:0000 --target=MAPLE_MINI --enable-factory-reset
make
Configuración de hardware
Maple Mini | ST Link Programmer |
---|---|
21 | CLK |
22 | IO |
GND | GND |
Grabar firmware
Una vez que conectamos los pines de la Maple Mini con el programador ST Link, el procedimiento de escritura del firmware lo haremos con OpenOCD de la siguiente forma:
- Conectar el programador ST Link por USB a la PC
- Conectar la Maple Mini por USB a la PC
- Ejecutar (con privilegios de root) el comando de escritura de firmware que aparece acá abajo (adecuando la ubicación del archivo gnuk.bin que se genera al compilar en el directorio build)
openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg \
-f /usr/share/openocd/scripts/target/stm32f1x.cfg -c "init" \
-c "reset" -c "reset halt" -c "stm32f1x unlock 0" -c "reset halt" \
-c "stm32f1x mass_erase 0" -c "flash write_bank 0 build/gnuk.bin 0" \
-c "stm32f1x lock 0" -c "reset halt" -c "shutdown"
Ahora si, a probar
Ahora que ha terminado OpenOCD de hacer su chamba, podemos desconectar todo, conectar únicamente por USB la Maple Mini a la PC y corroborar que ya tenemos listo nuestro llavero con le siguiente comando:
gpg --card-status