Capitole du Libre 2025

Assurer l'intégrité et l'authenticité de fichiers sur Linux via un module de sécurité matériel (HSM)
15/11/2025 , A002

Garantir la protection de données et leur authenticité est incontournable dans n'importe quel contexte open-source et/ou industriel. Le noyau Linux propose des fonctionnalités de vérification d'intégrité notamment par blocs mémoire comme dm-verity [1] mais cela impose d'avoir le système de fichiers bloqué en lecture seule. Comment utiliser ce mécanisme dans un environnement Linux demandant des accès en lecture / écriture ?

Confrontés à cette difficulté dans le cadre d'un projet industriel - le but étant de vérifier la configuration d'applicatif Linux critique - nous nous sommes penchés sur la possibilité de faire cette opération au niveau du système de fichiers. Disponible sur ext4 et f2fs, la fonctionnalité fs-verity [2] du noyau Linux (version >= 5.4) vérifie l'intégrité d'un fichier sans que le reste du système ne soit concerné.

Il est important de noter que fs-verity ne protège en rien contre l'usurpation d'un fichier (suppression et remplacement par un fichier différent)... Assurer l'authenticité des fichiers devient donc nécessaire, ce qui est possible avec l'ajout de signatures pour chaque fichier. Nous avons utilisé la solution opensource softHSMv2 [3] pour démontrer la faisabilité de l'interfaçage entre fs-verity et un Hardware Security Module afin de pouvoir signer l'empreinte de chaque fichier avec des clés RSA provenant du HSM via PKCS#11. Ici la solution utilisée est facilement reproductible chez vous puisqu'elle permet de s'affranchir de matériel (softHSM tourne... en soft !). Attention, le support des jetons (tokens) PKCS#11 est uniquement disponible depuis fs-verity-utils v1.5 [4] (librairie userspace). Si le canal reste du PKCS#11 (de plus en plus standard), il peut aussi être un Trusted Platform Module (tpm2, etc.) ou HSM équivalent.

Cette présentation détaillera tous ces points avec démonstration pour chacun d'entre eux.

[1] https://docs.kernel.org/admin-guide/device-mapper/verity.html
[2] https://docs.kernel.org/filesystems/fsverity.html
[3] https://github.com/softHSMv2
[4] https://github.com/ebiggers/fsverity-utils/blob/master/NEWS.md#version-15

Ingénieur Linux Embarqué chez IoT.bzh à Lorient, France. Intéressé par le développement embarqué (boot, drivers...) avec des environnements sous contraintes de sécurité, de temps réel (RTOS) et les communications à faible consommation d'énergie.