¿Existe alguna forma de cifrar archivos individuales con un Yubikey que no use OpenPGP?
Utilizo mi Yubikey para iniciar sesión ssh y cifrar archivos individuales (almacenamiento de contraseñas). Yubikey funciona solo en modo CCID (actualmente no uso OTP ni U2F). Todas las operaciones requieren la prueba de presencia física.
Hasta ahora he estado usando mi Yubikey como tarjeta inteligente OpenPGP junto con:
gpg-agent --enable-ssh-support
para soporte ssh; y- complemento gnupg.vimpara cifrar archivos.
GnuPG es torpe, poco confiable y difícil de escribir. Me gustaría dejar de usar Yubikey en este modo.
Tengo otra Yubikey que está configurada como una tarjeta inteligente NIST PIV. Utilizo el soporte PKCS11 de OpenSSH y un agente ssh normal. Esto es mucho más confiable que las herramientas gpg, perono proporciona soporte de cifrado de archivos individuales.
A mi modo de ver, existen algunas opciones posibles para utilizar una tarjeta inteligente PIV para el cifrado de archivos individuales:
- ¿Algún tipo de
ssh-agent
+vim
truco? - ¿Quizás exista una herramienta de cifrado de archivos basada en PKCS11?
- ¿Usar una de las otras ranuras del yubikey para cifrar archivos, tal vez con OpenSC o algo de libccid?
- ¿Administrador de contraseñas de código abierto que habla directamente con Yubikey?
Respuesta1
Aquí hay un script en Python que escribí para automatizar el siguiente proceso:
Para cifrar, el protocolo de conexión del agente ssh (consulte laborrador RFCpara más detalles) le permite firmar datos arbitrarios con una clave privada, por lo que:
- elige un número aleatorio
- Pídele al agente ssh que lo firme.
- utilizar la firma para derivar una clave simétrica
- cifra tus datos con la clave simétrica
- guarde el número aleatorio y los datos cifrados (pero no la clave simétrica) en el disco
y para descifrar:
- leer el número aleatorio y los datos cifrados desde el disco
- Pídale a ssh-agent que firme el número aleatorio
- utilizar la firma para derivar la misma clave simétrica utilizada para cifrar los datos
- ¡Descifra los datos!