El software Clevis se presenta como una solución innovadora para la automatización del cifrado y desbloqueo de datos en sistemas Linux. Desarrollado para integrarse fácilmente con tecnologías de cifrado como LUKS, este marco pluggable proporciona múltiples opciones para proteger datos y automatizar procesos de desbloqueo mediante el uso de «pins» especializados.
Cifrado y descifrado automatizado con Clevis
Clevis permite cifrar datos con un sencillo comando:
$ clevis encrypt PIN CONFIG < PLAINTEXT > CIPHERTEXT.jwe
Aquí, los parámetros clave son:
- PIN: El plugin que se encargará de la automatización del descifrado (por ejemplo, Tang o TPM2).
- CONFIG: Un objeto JSON con la configuración necesaria para realizar el cifrado.
El descifrado es igual de sencillo y no requiere interacción adicional del usuario:
$ clevis decrypt < CIPHERTEXT.jwe > PLAINTEXT
Integración con diferentes tecnologías
PIN: Tang
Clevis es compatible con el servidor Tang, que proporciona servicios de cifrado sin necesidad de gestionar claves en depósito. Esto permite el cifrado basado en red, útil para organizaciones que desean centralizar la gestión de claves.
$ echo "mensaje secreto" | clevis encrypt tang '{"url": "http://tang.local"}' > mensaje.jwe
PIN: TPM2
La compatibilidad con Trusted Platform Module 2.0 (TPM2) permite utilizar hardware dedicado para cifrar claves de forma segura y automatizar el descifrado en sistemas con soporte TPM2.
$ echo "mensaje secreto" | clevis encrypt tpm2 '{}' > mensaje.jwe
PIN: PKCS#11
Clevis puede interactuar con dispositivos PKCS#11 para desbloquear discos cifrados mediante PIN, ofreciendo opciones como proporcionar el PIN durante la configuración o en el momento del arranque.
$ clevis luks bind -d /dev/sda1 pkcs11 '{"uri": "pkcs11:"}'
Cifrado de volúmenes LUKS
Clevis permite automatizar el desbloqueo de volúmenes LUKS añadiendo claves de cifrado gestionadas automáticamente. Por ejemplo, para vincular un volumen LUKS con el pin Tang:
$ sudo clevis luks bind -d /dev/sda1 tang '{"url": "http://tang.local"}'
Una vez configurado, el volumen puede desbloquearse automáticamente en el arranque del sistema o mediante comandos como:
$ sudo clevis luks unlock -d /dev/sda1
Características avanzadas
Clevis también soporta configuraciones complejas como el uso de Shamir Secret Sharing (SSS), un esquema de umbral que combina múltiples métodos de desbloqueo para mayor seguridad y flexibilidad.
Por ejemplo, para configurar una política de desbloqueo que utilice Tang y TPM2 con un umbral de dos:
$ echo "secreto" | clevis encrypt sss \
'{"t": 2, "pins": {"tang": {"url": "http://tang.local"}, "tpm2": {"pcr_ids": "0"}}}' > secreto.jwe
Instalación y soporte multiplataforma
Clevis está disponible en las principales distribuciones Linux como Fedora, donde se puede instalar con:
$ sudo dnf install clevis clevis-dracut clevis-udisks2
Para sistemas que no cuentan con paquetes precompilados, también se puede compilar manualmente desde el código fuente disponible en GitHub.
Conclusión
Con una amplia compatibilidad y flexibilidad, Clevis simplifica el cifrado y desbloqueo de datos en Linux, reduciendo la dependencia de interacciones manuales. Su enfoque modular y automatizado lo convierte en una herramienta esencial para quienes buscan mejorar la seguridad de sus datos sin complicaciones.
Más información en GitHub Clevis