GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿usar el espacio antes de la primera partición de la memoria USB como clave Luks?

Estoy usando arch linux con una partición raíz luks encriptada (arranque sin encriptar), con una frase de contraseña todavía.
Ahora tengo un archivo de claves (3072 bytes), que está escrito en una memoria USB de esta manera:

sudo dd if=tempKeyFile.bin of=/dev/sdd bs=512 seek=1 count=6

y también establecer como pase adicional

sudo cryptsetup luksAddKey /dev/sdb6 tempKeyFile.bin

Cuando abro la partición manualmente con:

sudo cryptsetup --key-file tempKeyFile.bin open /dev/sdb6 luks_root

todo funciona, la partición está mapeada y se puede montar.
Ahora mi línea de parámetros del kernel en grub.cfg se parece a esto:

linux /vmlinuz-linux root=UUID=$UUID_OF_luks_root$ rw cryptdevice=UUID=$UUID_OF_sdb6$:luks_root cryptkey=/dev/sdd:1:6

Pero al arrancar me sale este error:

No key available with this passphrase.
Invalid Keyfile. Reverting to passphrase.

Ya probé el desplazamiento 2 en lugar de 1, pero el mismo resultado. Noté que no dice que el archivo de claves no se pudo encontrar/leer, pero era incorrecto.

Parece que hay poca documentación sobre esta forma de almacenar el archivo de claves luks. Arch-wiki lo menciona, pero muy brevemente y parece que estoy conforme, así que creo que debería ser posible.

en mi mkinitcpio.conf MÓDULOS, BINARIOS y ARCHIVOS están vacíos y configuro:

HOOKS=(base udev autodetect keyboard modconf block encrypt filesystems fsck)

así que bloquear está justo antes de cifrar.

¿Cuál es el problema aquí?

Respuesta aceptada:

Desde el enlace de cifrado de ArchLinux (/lib/initcpio/hooks/encrypt ):

*)
    # Read raw data from the block device
    # ckarg1 is numeric: ckarg1=offset, ckarg2=length
    dd if="$resolved" of="$ckeyfile" bs=1 skip="$ckarg1" count="$ckarg2" >/dev/null 2>&1
    ;;

Entonces, si bien admite la lectura de una clave desde un dispositivo de bloque sin formato, utiliza un tamaño de bloque de 1 (en lugar del 512 predeterminado), por lo que debe multiplicar sus valores por 512 para que funcione.

Entonces, en lugar de cryptkey=/dev/sdd:1:6 prueba cryptkey=/dev/sdd:512:3072 .


Linux
  1. Conéctese a un servidor usando SSH en Linux o Mac OS X

  2. Linux/UNIX:Cómo crear una partición extendida usando fdisk

  3. Determinar el uso del disco en Linux usando el comando "du"

  4. 3 formas de aumentar el espacio de intercambio en Linux

  5. Simulación del evento Key Press usando Python para Linux

Cómo crear o cambiar el tamaño de particiones de forma segura en Linux usando GParted

Creación de discos virtuales mediante la línea de comandos de Linux

Cómo verificar el uso del espacio en disco en Linux usando Ncdu

Cómo clonar y restaurar una partición de Linux usando el comando dd

15 cosas que debe saber antes de usar Kali Linux

Cómo encriptar dispositivos de bloque usando LUKS en Linux