Se me ha pedido que implemente el cifrado de disco en una máquina que debe poder ejecutarse sin supervisión. La máquina tiene dos discos. El primer disco tiene una partición de inicio y una partición del sistema operativo, mientras que el segundo disco solo tiene una partición y se usa para el almacenamiento de una aplicación. El objetivo es proteger los datos en la partición de almacenamiento para que no sean leídos, en caso de que alguien decida robar los discos.
Mi plan es usar el módulo dm-crypt de Linux para cifrar el sistema operativo y las particiones de almacenamiento. Me imagino que tiene más sentido utilizar una clave para cada partición cifrada. Sin embargo, estoy luchando para descubrir la mejor manera de almacenar cada clave.
Para la clave de la partición de almacenamiento, parece seguro almacenarla en la partición del sistema operativo. Sin embargo, parece que la única opción para almacenar la clave para la partición del sistema operativo es mantenerla en la partición de inicio. Sería realmente bueno si hubiera algún tipo de TPM u otro almacenamiento local en la máquina, pero desafortunadamente no hay otro almacenamiento disponible.
Por lo tanto, ya que necesitaré usar un initramfs para descifrar el disco del sistema operativo de todos modos, pensé que almacenaría la clave para la partición del sistema operativo en el initramfs, que se incrustaría en el kernel, que se almacenaría en el partición de arranque. Esto evitaría que los datos sean leídos por alguna persona aleatoria que tenga ganas de robar algunos discos. Sin embargo, me doy cuenta de que esto no es lo ideal, porque un atacante con suficiente conocimiento podría extraer los initramfs del kernel y extraer la clave de la imagen de initramfs.
De la forma en que lo veo, no importa cuán complejo sea el esquema que se me ocurra, necesito poder decirle a la máquina cómo llevar a cabo la rutina de descifrado; un atacante solo necesita leer la rutina de descifrado para determinar cómo descifrar el sistema.
Con el almacenamiento disponible, ¿hay una mejor manera de cifrar las particiones que sean más resistentes contra un atacante que tenga posesión de los discos?