Le but:
Avoir une machine fully encrypted c'est cool mais c'est relou de devoir taper un mot de passe pour deverouiller les disques
Surtout pour un serveur, qui n'a pas forcément un écran et un clavier de branché
Le but est de pouvoir déverouiller dm_crypt via un téléphone grace à la biometrie ou à une passkey
Architecture:
Host (with module) -> Server <- Client (ex: phone)
Host pairs to a trusted client for end-to-end encryption
Host loading the module before the crypt password prompt
module initializing a websocket to the server
Clients connects to the server to see if any server is asking for a reboot
Clients sends an encrypted version of the key to the host (through the server) to allow crypt unlocking
Étapes:
- Créer un module kernel -done
- Signer le module pour le Secure Boot -done
- Charger le module au boot -done
- avant dm_crypt -done
- Utiliser DKMS
- Faire un module en Rust
- Ouvrir un websocket dans le module - très dur, freestanding
- Deverouiller dm_crypt
- Travailler sur le pairing (clés de chiffrement, etc)
Notes:
Signer un module avec les clés shim-signed:
kmodsign sha512 \
/var/lib/shim-signed/mok/MOK.priv \
/var/lib/shim-signed/mok/MOK.der \
module.ko
Conclusion:
Ok ca va être compliqué, pas de std, que des appels aux fonctions kernel