han introducido un módulo que mediante una contraseña maestra elimina todo dato existente en nuestro disco duro. Por lo que si alguien da con dicha contraseña e intenta acceder para ver el contenido de nuestro disco, se encontrará con una flamante unidad inaccesible.
Este módulo llamado "Emergency Self-Destruction of LUKS" lo encontramos dentro del programa cryptsetup, aplicación que usamos para encriptar nuestro disco y establecer una contraseña de desencriptación al encender el equipo. Nos ofrece la posibilidad de establecer una segunda contraseña (la primera sería la que definimos para desencriptar los datos) o una contraseña maestra con la que deshacernos de los datos de nuestro equipo para evitar miradas ajenas.
Sin duda es una opción muy interesante pero más allá de poder destruir los datos, hay una opción que veo más práctica, aunque si es para evitar que nadie vea nada del contenido de nuestro disco, eliminar los datos es sin duda la mejor alternativa.
vamos a ver un caso práctico de cómo encriptar, "brickear" nuestro disco, y luego recuperar los datos. Comencemos:
2. Procedemos a comprobar la información del disco que nos interesa encriptar abriendo una terminal y escribiendo:
- cryptsetup luksDump /dev/sdb1
- Y deberemos obtener algo como esto:
- LUKS header information for /dev/sdb1
- Version: 1
- Cipher name: aes
- Cipher mode: xts-plain64
- Hash spec: sha1
- Payload offset: 4096
- MK bits: 512
- MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db
- MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48
- 16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17
- MK iterations: 65750
- UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
- Key Slot 0: ENABLED
- Iterations: 223775
- Salt: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88
- 7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49
- Key material offset: 8
- AF stripes: 4000
- Key Slot 1: DISABLED
- Key Slot 2: DISABLED
- Key Slot 3: DISABLED
- Key Slot 4: DISABLED
- Key Slot 5: DISABLED
- Key Slot 6: DISABLED
- Key Slot 7: DISABLED
3. Como podemos ver, el único slot habilitado es el 0, por lo que pasaremos a añadir nuestra clavetecleando el siguiente comando en nuestra terminal:
- cryptsetup luksAddNuke /dev/sdb1
- Enter any existing passphrase:
- Enter new passphrase for key slot:
4. De nuevo mostraremos la cabecera de nuestro LUKS para comprobar que los cambios se han realizado correctamente:
- cryptsetup luksDump /dev/sdb1
- LUKS header information for /dev/sdb1
- Version: 1
- Cipher name: aes
- Cipher mode: xts-plain64
- Hash spec: sha1
- Payload offset: 4096
- MK bits: 512
- MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db
- MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48
- 16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17
- MK iterations: 65750
- UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
- Key Slot 0: ENABLED
- Iterations: 223775
- Salt: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88
- 7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49
- Key material offset: 8
- AF stripes: 4000
- Key Slot 1: ENABLED
- Iterations: 267782
- Salt: 8c e5 a2 31 60 2a f5 39 41 e9 52 94 eb 82 b8 c2
- b7 a6 6e 4a 7a 0e b1 85 c2 3a 75 d6 a7 6a 76 b3
- Key material offset: 512
- AF stripes: 4000
- Key Slot 2: DISABLED
- Key Slot 3: DISABLED
- Key Slot 4: DISABLED
- Key Slot 5: DISABLED
- Key Slot 6: DISABLED
- Key Slot 7: DISABLED
5. Perfecto! Ahora podemos ver claramente que el slot 1 contiene nuestra clave, por lo que pasaremos a hacer una copia de seguridad de estos datos con el siguiente comando desde la terminal:
- cryptsetup luksHeaderBackup --header-backup-file luksheader.back /dev/sdb1
- file luksheader.back
- luksheader.back: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
6. Hablando de seguridad, no queremos quedarnos cortos, por lo que cifraremos estos datospara asegurarnos su almacenamiento. Para este menester usaremos openssl (antes de que más de un@ empiece a tirarse de los pelos, más adelante comentaremos acerca de Heartbleed y de que con ese bug el mundo no se ha acabado ^_^) que por defecto viene instalado en la distribución que tenemos instalada:
- openssl enc -aes-256-cbc -salt -in luksheader.back -out luksheader.back.enc
- enter aes-256-cbc encryption password:
- Verifying - enter aes-256-cbc encryption password:
- ls -lh luksheader.back*
- -r-------- 1 root root 2.0M Jan 9 13:42 luksheader.back
- -rw-r--r-- 1 root root 2.0M Jan 9 15:50 luksheader.back.enc
- file luksheader.back*
- luksheader.back: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
- luksheader.back.enc: data
7. Ya tenemos el encabezado cifrado y preparado para su almacenamiento, para lo que recomendamos una unidad que sea fácilmente accesible, como una tarjeta de memoria, o mejor aún una unidad USB.
Ahora pongámonos en el supuesto de que tenemos que desplazarnos a ver a un cliente, y necesitamos nuestro equipo para operar correctamente en el lugar de destino, pero desconfiamos de los accidentes que podamos sufrir en dicho viaje, y las manos en las que podría acabar nuestro equipo que está cargado de información sensible, clasificada o algo por el estilo... Procedemos a hacer uso de nuestro cifrado, introduciendo la clave de cifrado y reiniciando el equipo. Vaya! No inicia sin la clave y si intento arrancar desde un live cd de alguna distribución de Linux me dice que la unidad está inaccesible
8. Probemos con un live cd de Kali-Linux, abrimos una terminal y veamos el volcado del encabezado de LUKS:
Comprobamos que ninguno de los slots para las claves está siendo usado, por lo que cryptsetup funcionó como se esperaba.
- cryptsetup luksDump /dev/sdb1
- LUKS header information for /dev/sdb1
- Version: 1
- Cipher name: aes
- Cipher mode: xts-plain64
- Hash spec: sha1
- Payload offset: 4096
- MK bits: 512
- MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db
- MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48
- 16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17
- MK iterations: 65750
- UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
- Key Slot 0: DISABLED
- Key Slot 1: DISABLED
- Key Slot 2: DISABLED
- Key Slot 3: DISABLED
- Key Slot 4: DISABLED
- Key Slot 5: DISABLED
- Key Slot 6: DISABLED
- Key Slot 7: DISABLED
9. Desde esa misma terminal, podemos restaurar la cabecera de LUKS, conectado la unidad donde almacenamos las claves, desencriptando las mismas y recuperando el encabezado desde el archivo de recuperación. O lo que es lo mismo, escribiendo estos comandos en la terminal:
- openssl enc -d -aes-256-cbc -in luksheader.back.enc -out luksheader.back
- enter aes-256-cbc decryption password:
- cryptsetup luksHeaderRestore --header-backup-file luksheader.back /dev/sdb1
- WARNING!
- ========
- Device /dev/sda5 already contains LUKS header. Replacing
- header will destroy existing keyslots.
- Are you sure? (Type uppercase yes): YES
- cryptsetup luksDump /dev/sdb1
- LUKS header information for /dev/sdb1
- Version: 1
- Cipher name: aes
- Cipher mode: xts-plain64
- Hash spec: sha1
- Payload offset: 4096
- MK bits: 512
- MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db
- MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48
- 16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17
- MK iterations: 65750
- UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
- Key Slot 0: ENABLED
- Iterations: 223775
- Salt: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88
- 7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49
- Key material offset: 8
- AF stripes: 4000
- Key Slot 1: ENABLED
- Iterations: 267782
- Salt: 8c e5 a2 31 60 2a f5 39 41 e9 52 94 eb 82 b8 c2
- b7 a6 6e 4a 7a 0e b1 85 c2 3a 75 d6 a7 6a 76 b3
- Key material offset: 512
- AF stripes: 4000
- Key Slot 2: DISABLED
- Key Slot 3: DISABLED
- Key Slot 4: DISABLED
- Key Slot 5: DISABLED
- Key Slot 6: DISABLED
- Key Slot 7: DISABLED
10. Y con esto ya podremos iniciar de nuevo nuestro equipo, proceder a desencriptar los datos y seguir trabajando en el lugar de destino.
Resumiendo, el procedimiento básicamente es el de encriptar el disco, hacer copia de seguridad de la cabecera de LUKS, encriptar el archivo de copia de seguridad, dejar inutilizable el disco durante el viaje y cuando lleguemos a la zona segura de destino, iniciar desde live cd de Kali-Linux, desencriptar el archivo de copia de seguridad y restaurar la configuración que este contiene.
0 comentarios:
Publicar un comentario