Estoy tratando de proteger contra copia algún trabajo, que es una tarjeta SD de arranque que arranca un kernel de Linux en un dispositivo ARM (Raspberry Pi). Estoy usando este enfoque:
- El enfoque utiliza un initrd para montar un sistema de archivos raíz cifrado.
- El initrd genera la contraseña del sistema de archivos de acuerdo con el CID de la tarjeta SD. (se utiliza una función hash, aún no se decidió sobre md5 o sha1). Initrd intentará montar el sistema de archivos usando esa contraseña generada.
- Ahora aquí está la parte más interesante / sospechosa: el initrd en sí está encriptado usando una función C personalizada, básicamente cada byte es XOR usando un generador pseudoaleatorio hecho a medida. Kernel se modifica para tener la misma función de cifrado, que funciona como descifrador.
- El sistema en sí está reducido, por lo que no hay forma de usar un teclado o almacenamiento externo. Una sola aplicación se ejecuta a pantalla completa.
Entonces, después de que el gestor de arranque carga el núcleo y el initrd, el núcleo descifra el initrd y ejecuta su script de inicio, que generará la contraseña y montará el sistema de archivos raíz.
Mi pregunta es: ¿Qué tan fácil sería romper esta configuración (descifrar el sistema de archivos raíz y hacer que arranque desde cualquier tarjeta SD)? ¿Cuáles son las partes más débiles? ¿Qué tan fácil es descompilar el núcleo y encontrar esas funciones de cifrado personalizadas?
EDITAR: Aquí hay algunas correcciones para que no pierdas el tiempo con las cosas obvias:
- El dispositivo raíz se cifrará con LUKS (aes256) y la clave será generada por alguna función HMAC utilizando el CID de la tarjeta SD y algo de sal.
- El algoritmo pseudoaleatorio para el cifrado de initramfs será, de hecho, RC4, solo la clave se generará utilizando alguna función personalizada, porque si solo almaceno la clave en una matriz de bytes, es muy sencillo recuperarla (sí, esto es seguridad a través de la oscuridad pero parece que no hay otra manera).
- Entiendo que si usa un emulador de tarjeta SD, alguien puede hacer que se inicie una copia de este sistema, pero esto está bien para mí, porque es bastante difícil y nadie puede hacer esto (tampoco nadie querrá tratar con emuladores)