Shufflecake est un outil pour Linux qui permet la création de plusieurs volumes cachés sur un périphérique de stockage de telle manière qu'il est très difficile, même sous inspection médico-légale, de prouver l'existence de tels volumes.
La société d'audit de sécurité Kudelski Security a lancé Shufflecake , un ensemble d'outils permettant de créer des systèmes de fichiers cachés, répartis dans l'espace libre disponible sur les partitions existantes et indiscernables de données résiduelles aléatoires. Ces sections sont conçues de telle sorte que, sans connaître la clé d'accès, prouver leur existence s'avère complexe, même lors d'une analyse forensique.
Ce projet se positionne comme une solution plus avancée que Truecrypt et Veracrypt pour masquer les données confidentielles, offrant une prise en charge native de la plateforme Linux et permettant de placer jusqu'à 15 partitions cachées sur l'appareil, imbriquées les unes dans les autres pour obscurcir l'analyse de leur existence.
Les partitions cachées créées , à la discrétion de l'utilisateur, peuvent être formatées pour s'adapter à n'importe quel système de fichiers, par exemple ext4, xfs ou btrfs. Chaque partition est traitée comme un périphérique de stockage virtuel indépendant, doté de sa propre clé de déverrouillage.
Pour brouiller les pistes, le modèle comportemental de « déni plausible » est proposé. Concrètement, les données sensibles sont dissimulées sous forme de couches supplémentaires au sein de sections chiffrées contenant des données moins sensibles, formant ainsi une sorte de hiérarchie cachée de sections. Sous la pression, le propriétaire de l'appareil peut révéler la clé de la section chiffrée, mais d'autres sections (jusqu'à 15 niveaux imbriqués) peuvent y être dissimulées, rendant leur présence et leur existence difficiles à prouver.
Shufflecake et son module noyau ont été testés uniquement sur Debian et Ubuntu avec les noyaux 5.13 et 5.15 (Ubuntu 22.04 est pris en charge). Il est important de noter que ce projet est encore un prototype fonctionnel et ne doit pas être utilisé pour stocker des données sensibles.
À l'avenir, nous prévoyons d'apporter des optimisations supplémentaires pour les performances, la fiabilité et la sécurité, ainsi que de fournir la possibilité de démarrer à partir de partitions Shufflecake.
À propos de Shufflecake
Le masquage est assuré par la création de chaque partition sous forme d'un ensemble de segments chiffrés placés aléatoirement sur le périphérique de stockage. Chaque segment est créé dynamiquement lorsque la partition nécessite de l'espace de stockage supplémentaire. Pour complexifier l'analyse, des tranches provenant de différentes sections sont entrelacées.
Les sections Shufflecake ne sont pas liées à des régions contiguës et des portions de toutes les sections sont mélangées. Les informations sur les parties utilisées et libres sont stockées dans la carte de localisation attachée à chaque section, qui est référencée par l'en-tête crypté. Les cartes et l'en-tête sont cryptés et, sans connaître le mot de passe, ne peuvent être distingués des données aléatoires.
L'en-tête est divisé en emplacements , chacun définissant sa propre section et ses secteurs associés. Ces emplacements sont empilés et liés récursivement : l'emplacement courant contient la clé permettant de déchiffrer les paramètres de la section précédente (moins cachée) dans la hiérarchie, ce qui permet à un seul mot de passe de déchiffrer toutes les sections moins cachées associées à l'élément sélectionné. Chaque section moins cachée considère certaines portions des sections imbriquées comme libres.
Par défaut, toutes les partitions Shufflecake imbriquées ont la même taille visible que la partition de niveau supérieur. Par exemple, si trois partitions sont utilisées sur un périphérique de 1 Go, chacune sera visible par le système comme une partition de 1 Go, et l'espace disque total disponible sera partagé entre toutes les partitions. Si la quantité totale de données stockées dépasse la capacité du périphérique, des erreurs d'E/S commenceront à se produire.
Les sections imbriquées non ouvertes ne participent pas à l'allocation d'espace ; autrement dit, toute tentative de remplissage d'une section de niveau supérieur écrasera les données des sections imbriquées, sans pour autant révéler leur présence lors de l'analyse de la taille des données pouvant être placées dans la section avant la génération d'une erreur (on suppose que les sections de niveau supérieur contiennent des données immuables). Les données ne sont jamais utilisées de manière aléatoire ni de façon isolée, et les opérations courantes sont toujours effectuées sur la section imbriquée la plus récente ; le schéma lui-même implique que l'essentiel est de préserver la confidentialité des données, même au prix de leur perte.
L'implémentation Shufflecake offre des performances relativement élevées, mais en raison des coûts supplémentaires, elle est environ deux fois moins performante que le chiffrement de disque basé sur le sous-système LUKS. L'utilisation de Shufflecake engendre également des coûts supplémentaires en RAM et en espace disque pour le stockage des données de service. Les coûts mémoire sont estimés à 60 Mo par partition et l'espace disque utilisé à 1 % de la taille totale de la partition. À titre de comparaison, la technique WORAM, tout aussi pertinente, entraîne un ralentissement de 5 à 200 fois et une perte de 75 % d'espace disque utilisable.
Le code des utilitaires (shufflecake-userland) et du module du noyau Linux (dm-sflc) est écrit en C et publié sous la licence GPLv3, ce qui rend impossible l'inclusion du module du noyau publié dans le noyau Linux principal en raison d'une incompatibilité. sous la licence GPLv2 sous laquelle le noyau est livré.
Si vous souhaitez en savoir plus, vous trouverez les détails en suivant ce lien.