Un container LUKS est un fichier "ordinaire" (mais chiffré à l'aide d'un algorithme très puissant et très sûr: AES) qui se trouvera dans votre répertoire personnel ou sur un support amovible (clé USB, etc.).

Le contenu de ce fichier sera totalement inexploitable pour qui ne connaît pas la phrase secrète qui en permet le déverrouillage.

Une fois déverrouillé, le container sera monté et apparaîtra sous vos yeux ébahis en tant que sous-répertoire de votre répertoire personnel (ou du support amovible). Ce répertoire pourra contenir toutes sortes de fichiers et de sous-répertoires, limités seulement par la taille que vous aurez choisi d'affecter à votre container lors de sa création. Vous pourrez utiliser n'importe quel logiciel de votre choix pour accéder aux fichiers chiffrés, qui seront automatiquement chiffrés et déchiffrés à la volée tant que le container sera monté.

Une fois démonté, le sous-répertoire (point de montage) apparaîtra vide, et le fichier-container seulement plein de données indéchiffrables d'apparence aléatoire. Il ne sera possible de déterminer ni la taille des données qu'il contient réellement, ni le nombre ou le nom des fichiers ou répertoires qu'il contient, ni aucune information à leur propos.
Si vous avez créé un container de 256 Mo, on verra juste un fichier de 256 Mo de données aléatoires, point.

Pour obtenir ce résultat, j'ai écrit le script bash "lfd" joint à ce billet.[1] [2]

Ce script vous permet d'utiliser trois commandes simples et à la portée du profane : Une pour créer un volume chiffré, une pour le monter, une pour le démonter, et c'est tout.

Pour installer et utiliser ce script, c'est extrêmement simple :

  1. Copiez (comme "root") le fichier "lfd" joint (Annexe "LUKSfile for dummies" ci-dessous) dans votre répertoire /usr/local/bin
  2. Rendez ce script exécutable avec la commande (comme "root") : chmod 755 /usr/local/bin/lfd
  3. Vous pouvez ensuite exécuter le script sous votre profil utilisateur ordinaire (non-root)
  • Lancez simplement le script avec la commande "lfd", et vous obtiendrez une aide succinte.
  • "lfd --help" vous apportera une aide détaillée.

Et voilà !

N'hésitez pas à me faire part de vos remarques, suggestions, problèmes ou bugs dans l'utilisation de ce script.

En espérant qu'il vous sera utile :-)


N.B.:

  • Avant d'écrire des fichiers confidentiels, assurez-vous que votre volume chiffré est monté ! S'il ne l'est pas, vos fichiers seront écrits en clair dans le répertoire vide ordinaire qui sert de point de montage, et ne seront pas protégés !
  • Quand vous n'avez plus besoin d'accéder à vos fichiers, pensez à fermer les applications qui les utilisent, et à démonter le volume chiffré, sinon les données qu'il contient resteront accessibles (elles deviennent automatiquement inaccessibles si la machine est arrêtée ou rebootée, même violemment).
  • Pensez que si un fichier a été écrit une seule fois en clair sur votre disque, il en demeure toujours des traces. Rapportez-vous à mon billet sur l'effacement des fichiers rémanents.
  • Pensez que votre système peut utiliser du swap à tout moment, et que certaines applications peuvent générer des fichiers temporaires qui peuvent, en fonction de l'application, être créés ailleurs que dans votre répertoire chiffré (par exemple dans "/tmp"). Référez-vous à mon article sur le chiffrement du swap, je rédigerai dans quelque temps un billet sur le chiffrement des fichiers temporaires reposant sur le même principe général.

Changelog :

  • 2008/02/05: v. 0.97: Small buxfix for use with 2.6.24 kernel and "sha256_generic" module.
  • 2008/01/18: v. 0.96: Now supports optionally creating and mounting containers with internal FAT16 or FAT32 filesystem, making them usable under MS Windows with FreeOTFE.
  • 2007/11/15: v. 0.94: BUGFIX: Change in 0.93 introduced a possible security issue. Fixed.
  • 2007/11/15: v. 0.93: Compatibility FIX: made compatible with older versions of "losetup" that do not understand the "-a" option.
  • 2007/11/13: v. 0.92: BUGFIX: Added a couple tests to catch inconsistencies created by some user mistakes.
  • 2007/11/13: v. 0.91: COSMETIC: Typo fix in included helptext.
  • 2007/11/13: v. 0.90: First public release.

English summary : "LUKSfile for dummies" (lfd): A shell script that allows creating / mounting / unmounting LUKS encrypted filesystems the easy way from container files, with a simple command and takes care of all the loopback and mounting technicalia. Get the script below, put it into /usr/local/bin, chmod it 755 and run it as a normal non-root user. Designed for Ubuntu (but usable on any other distro), makes extensive use of sudo for performing its operations. Run the script to get help (Script help text in english).

Notes

[1] Je joins également à ce billet la signature GnuPG détachée qui permet de vérifier (optionnellement) l'authenticité de ce script, ainsi que sa licence GPL.

[2] L'identifiant de ma clé GnuPG est 9076E32E et son empreinte : CC1F E3A0 6D39 FAB2 B91C 982E 2FC2 5C1D 9076 E32E. Elle est disponible sur tous les bons serveurs de clés ;-)