No creo que puedas garantizar eso.
Entonces, supongamos que tiene un comando que toma la contraseña en un aviso, por ejemplo.
echo mypassword | cryptsetup luksOpen / dev / disk volume '
Y desea solicitar la contraseña una vez y abrir varios volúmenes:
#!/bin/sh
set -e
read -p "What's the password? " password || exit 1
for disk in disk1 disk2 disk3; do
FOLDER=/media/$USER/$disk
echo "$password" | cryptsetup luksOpen /dev/$disk $disk && \
mkdir -p "$FOLDER" && \
mount /dev/mapper/$disk "$FOLDER/$disk"
done
password="xxxxxxxxxxxxxxxxxxxxxx"
Este script de shell haría. Excepto que, después de que bash finalice, y la memoria se devuelva al sistema, no tenemos garantía de que la contraseña en sí no esté aún en la memoria (no, a pesar de la última declaración, es posible que su shell no sobrescriba la ubicación donde se guardó).
Por lo tanto, podríamos reescribir esto en C y asegurarnos manualmente de que dicha ubicación se sobrescriba, usando algo como memset_s
(sí, un memset normal no funcionaría).
Aún así, podría haber copias de la contraseña de texto sin formato en los buffers de stdio, los utilizados por cryptsetup, etc. El kernel no entregará tales páginas a otros programas sin primero ponerlos a cero, pero si un investigador forense se congela la memoria Las ranuras con nitrógeno y su contenido de descarga, podría seguir estando allí.
Por otra parte, la clave del disco real (descifrada de la frase de contraseña) estará en la memoria, siempre que tenga los volúmenes montados. Por lo tanto, es probable que no valga la pena insistir en garantizar eso, y simplemente dejar que el programa finalice sería aceptable.
Yo sugeriría encriptar la partición del disco principal (y swap, por supuesto), y tener archivos de claves para cada uno de los otros discos allí (pueden ser legibles solo para root). Por lo tanto, solo necesita ingresar una contraseña (en el momento del arranque) y podrá descifrar todos los discos. No hay contraseñas cifradas que se establezcan cuando el sistema se apaga, y si un atacante consiguió su sistema raíz para poder robar sus archivos de claves, también podría acceder a los archivos directamente (y hacer muchas otras cosas desagradables). por lo que no hace las cosas mucho más inseguras.
El escenario principal para el que puedo pensar es donde se obtiene acceso repetido, por ejemplo. sus discos encriptados se clonan, y más tarde (después de haberles borrado algunos secretos), obtienen su contraseña / archivos de clave, por lo que pueden descifrar su copia anterior. Probablemente podrían hacerlo también extrayendo las claves de disco en la memoria, pero la existencia de los archivos de claves simplifica las cosas. (Para evitar esto, cambie sus contraseñas y archivos de claves y vuelva a crear la clave del disco después de eliminar la fórmula secreta de Coke)
Espero que esto ayude