Blog-note de Sasha
gitlab github rss
/réalisations/thèmes/résumés
Remote crypt unlock.
    Première étape sur la création d'un module kernel.
    Posted on 2025-11-02

    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