Ir al contenido
Esta página se ha traducido automáticamente; puede haber imprecisiones.Leer el original en inglés

KeeChallenge para YubiKey, y por qué deberías evitarlo

KeeChallenge es un plugin que añade compatibilidad con YubiKey a KeePass 2. Sin embargo, presenta varios problemas. Este artículo analiza dichos problemas y soluciones alternativas.

Cómo funciona KeeChallenge

KeeChallenge cifra la base de datos con la clave secreta HMAC (S). Esta clave se almacena en el YubiKey y se utiliza para generar respuestas. Además, KeeChallenge cifra la S con el par desafío-respuesta calculado previamente, y almacena el secreto cifrado y el desafío en un archivo XML auxiliar.

Cuando desbloqueas la base de datos:

  1. KeeChallenge carga el desafío C desde el archivo XML y lo envía al YubiKey
  2. El YubiKey transforma el desafío (usando el secreto S almacenado en la llave) y devuelve una respuesta R
  3. La respuesta R se utiliza para descifrar el secreto Senc almacenado en el archivo XML.
  4. El secreto descifrado S se utiliza para descifrar la base de datos. Es importante destacar que este es el mismo secreto que el almacenado en el YubiKey.
  5. KeeChallenge regenera el archivo XML (genera un nuevo desafío aleatorio C, calcula la nueva respuesta R, cifra S usando R', y guarda el C y el Senc actualizados en el archivo XML)

Para más detalles, consulta el diagrama completo del flujo de trabajo.

Problemas de KeeChallenge

El enfoque de KeeChallenge presenta varios problemas de seguridad:

  • La clave secreta nunca cambia, solo se vuelve a cifrar. Desde el punto de vista de KeePass, KeeChallenge no se diferencia de un archivo de clave estático que proporciona los mismos bytes cada vez.
  • Como consecuencia de lo anterior, KeeChallenge está completamente expuesto a ataques de repetición. Cualquiera de los archivos XML anteriores puede usarse para descifrar la base de datos. Es decir, no tiene sentido aleatorizar el desafío y volver a cifrar el secreto: es puro teatro de seguridad.
  • El secreto nunca debería salir del YubiKey: esa es toda la razón de ser de un seguro electrónico de solo escritura. KeeChallenge viola este principio al trasladar el secreto al ordenador. En teoría, un atacante podría copiar S de la memoria del proceso, clonar el YubiKey del propietario sin su conocimiento y descifrar cualquier versión futura de la base de datos (ya que el secreto es estático).

Además, existen algunos problemas relacionados:

  • Un desarrollador de Yubico planteó una preocupación de seguridad en 2016. A fecha de 2024, el problema sigue abierto.
  • KeeChallenge parece abandonado; no ha habido actualizaciones significativas desde 2016.
  • El responsable del proyecto no responde a los problemas reportados.

Una alternativa mejor

Un enfoque alternativo fue introducido en KeePassXC y es compatible con todas las apps compatibles:

En KeePassXC no necesitamos conocer el secreto HMAC. Usamos la semilla maestra de la base de datos (una cadena de bytes aleatoria que forma parte de ella) como desafío y luego usamos la respuesta para cifrarla. De esta forma no necesitamos un archivo adicional y además obtenemos la ventaja de que la respuesta requerida cambia cada vez que la guardas, lo cual se asemeja más a una autenticación de dos factores real.

Este enfoque tiene varias ventajas importantes sobre KeeChallenge:

  • La clave derivada del YubiKey es dinámica: cambia cada vez que se guarda la base de datos. (En KeeChallenge, la clave de cifrado permanece igual, simulando en la práctica un archivo de clave estático.)
  • El secreto HMAC nunca sale del seguro electrónico, por lo que el YubiKey no puede clonarse de forma encubierta.
  • No hay ningún archivo XML auxiliar, solo la propia base de datos.
  • Hay varios equipos de desarrollo activos que respaldan este enfoque.

Por las razones descritas anteriormente, KeePassium implementa el enfoque de KeePassXC. No hay planes de admitir bases de datos cifradas con KeeChallenge.

Si tienes una base de datos protegida con KeeChallenge, considera cambiar a KeePassXC y KeePassium. Esta combinación te proporcionará una solución más segura, compatible y con mantenimiento activo.

Ver también