¿Cómo puedo cambiar el hash-spec y el iter-time de un dispositivo LUKS dm-crypt existente ?
Claramente puedo pasar las opciones si creo un nuevo dispositivo, por ejemplo algo como esto:
sudo cryptsetup luksFormat --cipher aes-cbc-essiv:sha256 --key-size 256 --iter-time 2100 --hash sha512 /dev/loop0
Pero si el dispositivo ya existe, ¿cómo puedo cambiar por ejemplo sha256
a sha1
o cambiar el tiempo de iteración sin "destruir" el dispositivo. (Claramente, tendría que volver a escribir su contraseña ya que se generará un nuevo hash).
hash-spec
es o quéiter-time
configuración es más específica.cryptsetup-reencrypt
. La lista de viñetas suena como lo que estás intentando hacerme: "cambiar parámetros de cifrado arbitrarios".Respuestas:
Cada ranura de tecla tiene su propio tiempo de iteración. Si desea cambiar el número de iteraciones, cree una nueva ranura con la misma frase de contraseña y una nueva cantidad de iteraciones, luego elimine la ranura anterior.
Creo que el algoritmo hash no se puede configurar por ranura, siempre es PBKDF2 con una función hash elegida globalmente.
Las versiones recientes de cryptsetup incluyen una herramienta
cryptsetup-reencrypt
, que puede cambiar la clave de cifrado principal y todos los parámetros, pero se considera experimental (y vuelve a cifrar todo el dispositivo, aunque esto no sería necesario simplemente cambiar la función de derivación de clave basada en contraseña) .fuente
Si todo lo que desea cambiar es el hash, no hay necesidad de volver a cifrar. Sin embargo, aún debe crear un nuevo encabezado LUKS. El mismo cifrado, la misma clave maestra, el mismo desplazamiento, diferente hash.
Puedes probar esto por ti mismo. Primero, configuramos un dispositivo LUKS con configuraciones estándar y pésimos recuentos:
En este punto tenemos un dispositivo LUKS con los datos encriptados "Hola mundo, soy LUKS". En particular se ve así:
Como puede ver, la iteración pésima cuenta, los hash sha1 estándar.
Para cambiar eso a altos recuentos de iteraciones y hash sha512, sin volver a cifrar, necesitamos un nuevo encabezado LUKS que use la misma clave maestra, el mismo cifrado y el mismo desplazamiento de carga útil.
Obtención de la clave maestra: (Advertencia: este ejemplo filtra su clave maestra a un archivo legible en todo el mundo, a la lista de procesos, así como al historial de su shell. Para estar seguro, hágalo en RAM / en un Live CD / lo que sea)
Cree el nuevo encabezado LUKS con esta clave: (el error es posible: ¡haga una copia de seguridad de su antiguo encabezado LUKS primero!)
Y así es como se ve:
Ahora lo tenemos. El mismo cifrado, desplazamiento [si difieren, debe especificarlos junto con luksFormat], nuevo hash y el número adecuado de iteraciones.
¿Pero el contenido sigue ahí?
Ahí tienes.
fuente
cryptsetup-reencrypt --keep-key --hash sha512
hace lo mismo