Deseo utilizar el cifrado completo del disco usando Luks en ubuntu 14.04. Sin embargo, deseo utilizar mi propio script de Python para llevar a cabo la funcionalidad de generar la clave de descifrado durante el inicio del dispositivo, que luego envía a Lukes para permitirle descifrar.
Idealmente, me gustaría "resultado del script de Python" + "el usuario ingresa la clave de descifrado", que luego se pasa a Lukes para permitir que el dispositivo descifre. Luego puedo implementar mi propia funcionalidad en Python para crear un "segundo factor" que permita que el dispositivo descifre.
He buscado por ahí, pero realmente no he encontrado la respuesta a mi pregunta. ¿Puedes ayudar o dar algún consejo?
Gracias.
Respuesta1
Si utiliza cifrado de disco completo para su sistema de archivos raíz, tendrá que resolver el problema de que el intérprete de Python normalmente no está disponible al inicio del arranque. Necesitará varios megabytes de espacio adicional en disco sin cifrar para almacenar, por ejemplo, /usr/bin/python2.7
y un montón de cosas esenciales, /usr/lib/python2.7
y tendrá que desarrollar varias modificaciones para /boot/initrd
que esto funcione.
El proceso de arranque se invoca /scripts/local-top/cryptroot
desde la raíz initrd. Esto normalmente llama a la herramienta plymouth ask-for-password --prompt
. Esto se utiliza para solicitar al usuario la frase de contraseña antes de iniciar la interfaz gráfica de usuario. Esta frase de contraseña a su vez se canaliza a cryptsetup.
Si aún desea continuar con este enfoque, puede/debe usar un archivo de configuración en el directorio de configuración /etc/initramfs-tools/
para configurar un nuevo valor propio cryptkeyscript
en lugar de piratear el script /usr/share/initramfs-tools/scripts/local-top/cryptroot
directamente. Esto hará que la instalación de actualizaciones de distribución del sistema operativo sea menos engorrosa en el futuro.
Para obtener más información, consulte la documentación de los paquetes initramfs-tools, cryptsetup y plymouth y eche un vistazo al script de shell que cryptroot
mencioné anteriormente.