CIFRAR RASPBERRY PI

¿POR QUÉ CIFRAR LOS DATOS DE UNA RASPBERRY PI?

Antes de entrar en el procedimiento de cómo realizar el cifrado, es importante entender qué significa "cifrar" y por qué querríamos hacerlo.

Cifrar un sistema operativo, disco, unidad o volumen implica proteger su contenido para que no sea accesible de forma directa.

Para poder acceder a los datos cifrados, primero se necesita "descifrar" la información, lo cual generalmente se realiza a través de una contraseña o una llave de cifrado.

El objetivo principal del cifrado es evitar que otras personas puedan acceder, robar o copiar información confidencial almacenada en el dispositivo.

Por ejemplo, en una Raspberry Pi, podríamos tener datos críticos, libreías o código de nuestro programa que no queremos que alguien pueda leer simplemente extrayendo la tarjeta SD y conectándola a otro dispositivo.

Cifrar la información ayuda a protegerla en caso de pérdida, robo o acceso no autorizado.

En esta guía, utilizaremos el cifrado de Linux llamado LUKS.

LUKS (Linux Unified Key Setup) es un estándar de cifrado de discos en sistemas Linux que proporciona una forma segura de encriptar particiones de disco.

Utiliza una clave maestra para cifrar los datos, protegiéndolos de accesos no autorizados.

Permite la gestión de contraseñas y la recuperación de claves de manera eficiente, siendo ampliamente utilizado para asegurar la privacidad de la información almacenada en dispositivos.

LUKS utiliza algoritmos de cifrado simétrico, como AES (Advanced Encryption Standard) en modos como XTS o CBC.

Estos algoritmos son ampliamente reconocidos por su robustez en la protección de datos.

La clave de cifrado utilizada en LUKS puede ser de 256 bits (en el caso de AES-256), lo que proporciona una alta seguridad.

El cifrado AES-256 es considerado extremadamente seguro con los estándares actuales de computación.

La cantidad de tiempo y recursos necesarios para romper este cifrado con fuerza bruta es prácticamente inalcanzable con la tecnología disponible hoy en día.

Sin embargo, cualquier sistema de cifrado puede ser vulnerable si la clave es débil, se gestiona mal, o si se emplean técnicas de ataque como la ingeniería social o el acceso físico al dispositivo.

Por lo tanto, la seguridad de LUKS también depende de la correcta gestión de las contraseñas y de las medidas adicionales de protección del sistema.

INSTALACIÓN DEL SISTEMA OPERATIVO

El primer paso consiste en instalar el sistema operativo en la tarjeta SD de la Raspberry Pi.
Para ello, utilizaremos la herramienta Raspberry Pi Imager, que nos permite descargar e instalar fácilmente diversas distribuciones de sistemas operativos compatibles con Raspberry Pi.

NOTA IMPORTANTE

A la fecha de este artículo, la última versión de 64Bits de RaspiOS es la Release date: November 19th 2024, esta versión nos ha dado problemas al iniciar en initramfs, por lo que recomendamos utilizar la versión de la fecha 28 de Octubre, a continuación dejamos el link a la misma:

https://downloads.raspberrypi.com/raspios_arm64/images/raspios_arm64-2024-10-28/2024-10-22-raspios-bookworm-arm64.img.xz

Una vez instalada la aplicación, seleccionamos nuestro modelo de Raspberry Pi, seleccionamos la opción CHOOSE OS y elegimos, al final de todo, la opción "USE CUSTOM", desde aquí se nos abrirá una ventana y elegimos la imagen de Raspberry que hemos descargado.

Por último elegimos donde queremos instalar esta imagen (nuestra SD) y procedemos a iniciar el proceso.

Raspberry Pi Imager
Use custom raspberry pi image


Raspberry Pi Imager

DESCARGAR LOS SCRIPTS NECESARIOS

Una vez el proceso de instalación del sistema operativo de Raspberry ha finalizado, volvemos a conectar nuestra SD en nuestro ordenador ya que necesitamos copiar los scripts para proceder con el cifrado.

Para realizar el cifrado, descargaremos los scripts desde el siguiente repositorio:

https://github.com/estructurabit/raspberry_pi_cryptsetup/archive/refs/heads/main.zip

Estos scripts automatizan gran parte del proceso y aseguran que todas las configuraciones necesarias se apliquen correctamente.

PREPARAR LOS ARCHIVOS EN LA TARJETA SD

Una vez descargado el archivo ZIP, descomprimimos y copiamos la carpeta llamada install dentro de la partición de arranque de la tarjeta SD (normalmente etiquetada como “boot”).

install folder


Partición Boot tarjeta SD

CONFIGURAR EL SISTEMA OPERATIVO INICIAL

Insertamos la tarjeta SD en la Raspberry Pi y conectamos un pendrive USB que servirá para clonar la tarjeta SD de cara al proceso de cifrado de LUKS.

Es importante que este pendrive tenga al menos el tamaño de nuestra partición root de la tarjeta SD.

Iniciamos el sistema operativo y seguimos las instrucciones de configuración inicial.

Nos debemos asegurar de activar el servidor SSH si planeamos acceder remotamente al dispositivo.

EJECUTAR SCRIPT DE ACTUALIZACION

Como usuario root (o con sudo), ejecutamos el primer script:

sudo /boot/firmware/install/1.update.sh

Cuando el script finalice, reiniciamos la Raspberry Pi.

sudo reboot

script actualizacion linux


Script actualización sistema operativo

EJECUTAR SCRIPT DE INSTALACIÓN DE SOFTWARE PARA CIFRADO DEL DISCO

Una vez el sistema operativo se ha reiniciado, nuevamente como usuario root (o con sudo), ejecutamos el siguiente script:

sudo /boot/firmware/install/2.disk_encrypt.sh

Al finalizar, reiniciamos la Raspberry Pi.

sudo reboot

Este paso preparará el sistema para arrancar en un entorno de recuperación (initramfs shell).

initramfs es un sistema de archivos temporal que se utiliza para preparar el arranque de Linux.

install encryption software


Instalación software cryptsetup

CONFIGURAR EL ENTORNO DE RECUPERACIÓN (initramfs shell)

Tras reiniciar, deberíamos haber iniciado en el entorno initramfs shell.

Ejecutamos los siguientes comandos:

mkdir /tmp/boot
mount /dev/mmcblk0p1 /tmp/boot/

Identificamos el dispositivo de nuestro pendrive USB con el comando:

cat /proc/partitions

Ejecutamos el script de inicialización del cifrado (pasando al final del script como parámetro, el device de nuestro pendrive USB que obtuvimos del paso anterior):

/tmp/boot/install/3.disk_encrypt_initramfs.sh sda

Durante el proceso, si se nos pregunta si deseamos optimizar los inodos, respondemos NO.

Cuando se nos pida cifrar la partición, escribimos YES en mayúscula.

Introducimos una contraseña para el cifrado y la confirmamos.

El script también nos pedirá la contraseña nuevamente para copiar los datos desde el USB a la tarjeta SD.

Una vez que el script termine, reiniciamos el sistema con el comando:

reboot -f

encrypt


Initramfs cifrado tarjeta SD

encryption luks


Initramfs cifrado tarjeta SD

ABRIR EL VOLUMEN CIFRADO EN INITRAMFS SHELL Y REALIZAR LA ENCRIPTACIÓN DE LA PARTICIÓN ROOT

Tras reiniciar, el sistema volverá a cargar en el entorno initramfs shell.

Realizamos los siguientes pasos:

mkdir /tmp/boot
mount /dev/mmcblk0p1 /tmp/boot/

Ejecutamos el script para abrir el volumen cifrado:

/tmp/boot/install/4.luks_open.sh

Introducimos la contraseña de cifrado cuando se nos solicite.

Una vez descifrado, ejecutamos el comando:

exit

Esto permitirá que el sistema arranque normalmente.

open luks partition


Initramfs descifrado tarjeta SD

RECONSTRUIR INITRAMFS PARA EL ARRANQUE AUTOMÁTICO

Una vez que el sistema haya arrancado correctamente, como usuario root (o sudo), ejecutamos el script final:

sudo /boot/firmware/install/5.rebuild_initram.sh

Reiniciamos el sistema una vez más.

sudo reboot

rebuild initramfs


Reconstrucción initramfs con cifrado activado

CONFIRMAR EL ARRANQUE PROTEGIDO

Ahora, cada vez que iniciemos la Raspberry Pi, el sistema nos pedirá la contraseña para descifrar los datos antes de cargar el sistema operativo.

NOTA: Es posible que NO veamos el prompt para ingresar la contraseña y que veamos la pantalla de "Welcome to the Raspberry Pi Desktop", de ser así, basta con apretar una tecla (por ejemplo alguna flecha del teclado) y ya veremos el prompt para ingresar la contraseña.

unlock


Inicio sistema operativo con clave de cifrado

Esto garantiza que la información esté protegida contra accesos no autorizados.

Con este procedimiento, hemos implementado un cifrado completo en nuestra Raspberry Pi, asegurando la privacidad y seguridad de nuestros datos.

En un próximo artículo hablaremos de como automatizar este proceso utilizando un componente llamado TPM (Módulo de plataforma confiable), el cual por medio de un chip, se puede realizar el ingreso automático de la contraseña o llave de desencriptado, ofreciendo así fiabilidad al utilizarlo en la Raspberry Pi.


En Estructurabit, nos especializamos en ofrecer soluciones tecnológicas personalizadas para empresas e individuos.

Nos dedicamos a una amplia gama de servicios, desde consultoría en infraestructura IT, hasta implementaciones en la nube con AWS, GCP y Azure, y optimización de sistemas en Linux.

Si necesitas consultoría o ayuda para llevar a cabo este tipo de proyectos o cualquier otro, no dudes en contactarnos.

Estamos aquí para ayudarte a alcanzar tus objetivos con tecnología de vanguardia.


CONTACTO

TELÉFONO

+34-668570397

ESPAÑA

Barcelona, Madrid

ARGENTINA

Buenos Aires

© Copyright 2026 Estructura Bit - Todos los derechos reservados
Política de privacidad - Política de cookies