TPM
Le TPM est une puce donnant accès à plusieurs mesures de configuration (PCR) dont chacune permet d'obtenir un haché d'une partie de la configuration pré-OS du serveur. Le TPM peut de plus stocker des données qui peuvent être scellées à la valeur d'une ou plusieurs PCR.
Les clefs de chiffrement des disques sont scellées par le PCR 7, relatif à la configuration Secure Boot. Ceci permet de s'assurer que le code chargé et exécuté par le serveur est signé par AliENS. Pour qu'un·e attaquant·e puisse exécuter son propre code, il serait nécessaire de désactiver Secure Boot, auquel cas la mesure PCR 7 aurait changé et le fichier scellé ne serait plus accessible.
La clef n'est pas scellée par d'autres PCR liés à la version et la configuration du firmware et des drivers (PCR 0 à 4) ainsi que le partitionnement des disques (PCR 5) car on veut pouvoir changer ces derniers sans avoir à utiliser la clef de secours.
Nous pourrions aussi sceller la clef avec les mesures liées au noyau et à
l'initrd (PCR 8 et 11), toutefois ces mesures risquent d'être changées en cas
de passage à une nouvelle génération NixOS. Les outils pour les gérer ne sont de
plus pas encore au point. Un·e attaquant·e pourrait donc modifier la ligne de
commande de démarrage de Linux pour en modifier le comportement et prendre le
contrôle ; pour empêcher ceci, on désactive la possibilité de l'éditer dans le
chargeur d'amorçage.
Debugging
Dans une cas où une erreur survient, l'utilitaire tpm2_rc_decode de
pkgs.tpm2-tools est utile pour en obtenir une description textuelle à des fins
de déboggage. Il est possible que le module TPM soit verrouillé, auquel cas il
faut le réinitialiser. Pour faire, activez l'option « TPM PPI Bypass Clear »
dans les paramètres de l'iDRAC. Après avoir rebooté, rendez-vous dans la console
KVM où une confirmation de réinitialisation du TPM sera demandé : confirmez.
Scellez la clef dans le TPM en utilisant les instructions ci-dessus, en puis
désactivez de nouveau ce paramètre.