L'entreprise Kudelski Security, spécialisée dans l'audit de sécurité, a publié l'outil Shufflecake, qui permet de créer des systèmes de fichiers cachés, disséminés dans l'espace libre existant des partitions et indiscernables des données résiduelles aléatoires. Les partitions sont créées de telle manière qu'il est problématique de prouver leur existence sans connaître la clé d'accès, même lors d'une analyse criminelle. Le code des utilitaires (shufflecake-userland) et du module du noyau Linux (dm-sflc) est écrit en C et distribué sous la licence GPLv3, ce qui rend impossible l'inclusion du module du noyau publié dans le noyau Linux principal en raison de l'incompatibilité avec la licence GPLv2, sous laquelle le noyau est distribué.
Le projet se positionne comme une solution plus avancée que Truecrypt et Veracrypt pour masquer des données sensibles, qui offre un support natif pour la plateforme Linux et permet de créer jusqu'à 15 partitions cachées sur un appareil, imbriquées les unes dans les autres pour compliquer la détection de leur existence. Bien que l'utilisation de Shufflecake ne soit pas un secret, comme en témoigne la présence des utilitaires correspondants dans le système, le nombre total de partitions cachées créées est impossible à déterminer. Les partitions cachées peuvent être formatées au choix de l'utilisateur pour accueillir divers systèmes de fichiers, tels que ext4, xfs ou btrfs. Chaque partition est traitée comme un dispositif de bloc virtuel distinct avec sa propre clé de déverrouillage.
Pour brouiller les pistes, il est proposé d'utiliser le modèle de comportement « déni plausible », dont l'idée est de cacher des données précieuses sous forme de couches supplémentaires dans des partitions chiffrées contenant des données moins précieuses, créant ainsi une hiérarchie cachée des partitions. En cas de pression, le propriétaire de l'appareil peut révéler la clé de la partition chiffrée, mais d'autres partitions peuvent être dissimulées dans celle-ci (jusqu'à 15 niveaux imbriqués), et il est problématique d'en déterminer la présence et de prouver leur existence.
La dissimulation est réalisée par la formation de chaque section comme un ensemble de tranches chiffrées, situées à des emplacements aléatoires sur le dispositif de stockage. Chaque tranche est créée dynamiquement au moment où la section nécessite un espace de stockage supplémentaire. Pour compliquer l'analyse, les tranches des différentes sections sont alternées, c'est-à-dire que les sections Shufflecake ne sont pas liées à des zones continues et les tranches de toutes les sections sont mélangées. Les informations sur les tranches utilisées et libres sont stockées dans une carte de localisation associée à chaque section, à laquelle fait référence l'en-tête chiffré. Les cartes et l'en-tête sont chiffrés et, sans connaître la clé d'accès, sont indiscernables de données aléatoires.
L'en-tête est divisé en emplacements, chacun définissant sa propre section et les tranches associées. Les emplacements dans l'en-tête sont disposés en ordre empilé et liés de manière récursive — l'emplacement actuel contient la clé pour déchiffrer les paramètres de la section précédente dans la hiérarchie (moins cachée), ce qui permet d'utiliser un seul mot de passe pour déchiffrer toutes les sections moins cachées liées à la section sélectionnée. Chaque section moins cachée considère les tranches des sections imbriquées comme libres.
Par défaut, toutes les sections imbriquées de Shufflecake ont la même taille visible que la section de premier niveau. Par exemple, si trois sections sont actives sur un dispositif de 1 Go, chacune apparaîtra au système comme une section d'une taille de 1 Go et l'espace disque total sera partagé entre toutes les sections — si la taille totale des données enregistrées dépasse la taille réelle du dispositif, une erreur d'entrée/sortie commencera à se produire.
Les sections imbriquées non ouvertes ne participent pas à la distribution de l'espace, c'est-à-dire qu'une tentative de remplir une section de niveau supérieur entraînera un écrasement des données dans les sections imbriquées, sans permettre de révéler leur existence par une analyse de la taille des données qui pourra être placée dans la section avant que l'erreur ne se produise (il est supposé que les sections supérieures contiennent des données immuables pour détourner l'attention et ne sont jamais utilisées séparément, tandis que le fonctionnement normal se fait toujours avec la dernière section imbriquée, le schéma suppose que la priorité est de préserver le secret de l'existence des données plutôt que de perdre ces données).
En pratique, 15 sections Shufflecake sont toujours créées — les sections utilisées sont associées à un mot de passe utilisateur, tandis que les sections non utilisées se voient attribuer un mot de passe généré au hasard (il est impossible de savoir combien de sections sont réellement utilisées). Lors de l'initialisation des sections Shufflecake, le disque, la section ou le dispositif de bloc virtuel alloué pour les accueillir est rempli de données aléatoires, ce qui rend impossible la détermination des métadonnées et des données Shufflecake dans le contexte général.
L'implémentation de Shufflecake offre des performances suffisamment élevées, mais en raison des frais généraux, elle est environ deux fois moins rapide que le cryptage des disques basé sur le sous-système LUKS. L'utilisation de Shufflecake entraîne également des coûts supplémentaires en mémoire vive et en espace pour le stockage des données de service sur le disque. Les frais de mémoire sont estimés à 60 Mo par section, et l'espace disque à 1 % de la taille totale. En comparaison, une technique similaire, WORAM, entraîne un ralentissement de 5 à 200 fois avec une perte de 75 % d'espace utile sur le disque.
Les outils et le module du noyau n'ont été testés que sous Debian et Ubuntu avec les noyaux 5.13 et 5.15 (le fonctionnement sous Ubuntu 22.04 est pris en charge). Il est à noter que le projet doit encore être considéré comme un prototype fonctionnel qui ne doit pas être utilisé pour le stockage de données importantes. À l'avenir, des optimisations supplémentaires de performance, de fiabilité et de sécurité sont prévues, ainsi que la possibilité de démarrer à partir des sections Shufflecake.
Source : opennet.ru
