Creación de un par de llaves para el protocolo SSH con el algorítmo Ed25519

En días pasados tuve que renovar un par de llaves para el protocolo SSH. Por medio de esta entrada quiero compartir algunos aspectos de orientación, para crear o generar un par de llaves pública y privada, basadas en el algoritmo Ed25519. No pretende ser una revisión extensa y exhaustiva, sino los pasos principales para lograrlo.

En criptografía de clave pública, el algoritmo de firma digital de curva de Edwards (EdDSA) es un esquema de firma digital que utiliza una variante de la firma de Schnorr basada en curvas de Twisted Edwards. Está diseñado para ser más rápido que los esquemas de firma digital existentes, sin sacrificar la seguridad, según la definición actual de Wikipedia en inglés.

A continuación comparto una tabla, sobre algunas consideraciones y características de los algoritmos disponibles y pasados. En los que se puede basar nuestro par de llaves, para poner en perspectiva las opciones.

AlgorítmoComentarios y consideraciones
DSANo es compatible desde la versión 7 de OpenSSH (2015)
RSASe recomienda un tamaño superior a 4096 bits por seguridad. Como se plantea funcional en el futuro previsible
ECDSAEs uno de los más extendidos y se considera seguro. El soporte en OpenSSH fue introducido en 2011, en la versión 5.7.
Ed25519Es uno de los algoritmos más recomendados actualmente. El soporte en OpenSSH fue introducido en 2014, en la versión 6.4.
Tabla basada en: Upgrade Your SSH Key to Ed25519

Es importante mencionar que antes se solía mencionar que existía reticencia para implementar algoritmos de curva elíptica como Ed25519 por problemas de interoperabilidad con versiones antiguas de software. Sin embargo con el paso del tiempo esto ha dejado de suceder.

Algunas de las ventajas conocidas de la criptografía de curva elíptica en los que se basa Ed25519 o ECDSA es que los procesos de cifrado y descifrado son dramáticamente más rápidos.

Finalmente recordar que bajo la perspectiva de la ciencia criptográfica los sistemas de cifrado ya sea RSA, ECDSA y Ed25519 lo que posibilita en la práctica la construcción de puertas traseras se encuentran en su implementación, no en las matemática en sí de los algoritmos.

Pasos

En la terminal escribimos el siguiente comando para generar una nuevo par de claves pública y privada para el protocolo SSH que use el algoritmo Ed25519:

ssh-keygen -a 100 -t ed25519 -f ~/.ssh/id_ed25519 -C "jacobo"

-a Es el número de rondas KDF (función de derivación clave). Esto aumenta la resistencia al descifrado de contraseñas en caso de que se tenga acceso a la clave privada. Por defecto son 16

-t especifica el tipo de llave que se va a crear. En este caso Ed25519

-f especifica el nombre del archivo de claves a generar. En este caso dentro del directorio .ssh nos va a generar id_ed25519 e id_ed25519.pub

-C permite especificar un comentario con fines informativos para el par de llaves.

Resultado

Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user/.ssh/id_ed25519.
Your public key has been saved in /home/user/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx jacobo
The key's randomart image is:
+--[ED25519 256]--+
|   o*+=o ...oo.  |
|   o .... .. +.. |
|  .    o. o.. +..|
|   .    oo.+.   .|
|    . ..S++..    |
|   + . Ooo.      |
|    + O B..      |
|     = *S.       |
|      o          |
+----[SHA256]-----+

Imagen: ~/.ssh/authorized_keys, The Best Linux Blog In the Unixverse