Depuis bientôt un an, j’utilise BoxCryptor pour sauvegarder mes documents les plus importants dans mon espace Google Drive et pouvoir y accéder depuis mon smartphone, sans que Google puisse aller mettre son nez dedans. Initialement, la version gratuite de BoxCryptor limitait la taille du volume chiffré à 2 Go, mais autorisait le chiffrement des noms de fichiers. Cette dernière option n’est malheureusement plus proposée aujourd’hui…
En effet, depuis quelques temps, l’éditeur du logiciel a levé la restriction sur la taille du volume chiffré, mais à désactivé l’option permettant d’activer le chiffrement des noms de fichiers. Il s’agit là d’une régression notable en terme de sécurité : pour un attaquant éventuel, connaître le nom du fichier, c’est se faire une bonne idée de ce que l’en-tête du fichier doit contenir. Ce qui offre donc une direction pour la recherche de la clé…
Après avoir longtemps gardé l’ancienne version de BoxCryptor, je me suis décidé il y a quelques jours à passer à la nouvelle version, pour faire sauter la limite des 2 Go, que j’ai presque atteint.
Surprise, la nouvelle version monte sans problème mon ancien conteneur BoxCryptor, dont les noms de fichiers étaient chiffrés, et continue de chiffrer les noms des nouveaux fichiers ajoutés 🙂 Visiblement, l’éditeur n’a désactivé le chiffrement des noms de fichiers que dans l’interface graphique, pas dans le moteur de l’application (basé sur un produit open-source, EncFS). J’en ai conclus que l’information est stockée dans le conteneur, et qu’il devait donc y avoir moyen d’activer ce chiffrement aussi sur un volume fraichement créé.
Un conteneur vide contient deux fichiers : un fichier texte purement informatif, et un fichier .encfs6.xml, qui contient les paramètres du conteneur. C’est bien entendu dans celui-ci que se trouve la clé du problème. Voici celui d’un conteneur vierge fraichement créé :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <!DOCTYPE boost_serialization> <boost_serialization signature="serialization::archive" version="7"> <cfg class_id="0" tracking_level="0" version="20"> <version>20100713</version> <creator>BoxCryptor 1.5.408.142</creator> <cipherAlg class_id="1" tracking_level="0" version="0"> <name>ssl/aes</name> <major>3</major> <minor>0</minor> </cipherAlg> <nameAlg> <name>nameio/null</name> <major>3</major> <minor>0</minor> </nameAlg> <keySize>256</keySize> <blockSize>4096</blockSize> <uniqueIV>0</uniqueIV> <chainedNameIV>0</chainedNameIV> <externalIVChaining>0</externalIVChaining> <blockMACBytes>0</blockMACBytes> <blockMACRandBytes>0</blockMACRandBytes> <allowHoles>1</allowHoles> <encodedKeySize>52</encodedKeySize> <encodedKeyData></encodedKeyData> <saltLen>20</saltLen> <saltData></saltData> <kdfIterations>5000</kdfIterations> <desiredKDFDuration>500</desiredKDFDuration> </cfg> </boost_serialization> |
Pas besoin d’aller bien loin pour repérer le tag nameAlg, qui a la même structure que le tag cipherAlg, et qui pourrait donc bien correspondre au descripteur de l’algorithme de chiffrement des noms de fichier, null signifiant donc qu’ils ne sont pas chiffrés. Une comparaison avec le conteneur créé avec l’ancienne version de BoxCryptor tend à le confirmer, puisqu’il y a justement une différence sur ce tag :
1 2 3 4 5 |
<nameAlg> <name>nameio/stream</name> <major>3</major> <minor>0</minor> </nameAlg> |
Il n’y a plus qu’à effectuer la modification, puis à remonter le volume BoxCryptor et à y déposer un fichier, pour vérifier que le nom est bien chiffré : bingo, ça marche 🙂 Vous savez ce qu’il vous reste à faire.
Attention quand même à une chose : il faut le faire sur un volume vierge, sinon l’accès aux fichiers déjà stockés dans le volume sera perdu.
Bien entendu, cette solution soulève deux questions : sa légalité et sa pérennité.
Pour le premier point, mon avis est que c’est légal. En effet, contrairement à un crack de BoxCryptor, qui irait modifier le logiciel pour réactiver l’option, cette solution ne modifie aucun fichier soumis à droit d’auteur. Le fichier .encfs6.xml est un simple fichier de configuration, dont la logique est issue du projet EncFS, donc sous licence libre, et je vois donc mal comment sa modification pourrait être considérée comme illégale. J’ai de plus un peu de mal avec l’idée que l’éditeur de BoxCryptor se permette de désactiver une fonctionnalité de la base open-source sur laquelle il s’appuie, dans le but de vendre des licences réactivant cette fonction… Les ventes de licences devraient à mon sens ne s’appuyer que sur la promesse de fonctionnalités exclusives au niveau de l’application, pas de ses fondations communautaires. Du coup, je n’ai absolument aucun scrupule à réactiver la fonction.
La pérennité est pour sa part un peu plus sujette à caution. Plusieurs hypothèses peuvent expliquer le fait que le chiffrement des noms fonctionne sur la version gratuite suite à la modification du fichier de configuration. Il peut tout simplement s’agir d’un oubli, les développeurs n’ayant pas pensé à désactiver cette possibilité au niveau du moteur EncFS embarqué dans l’application. Il s’agit peut-être aussi d’un choix de leur part, pour garder la compatibilité avec les conteneurs créés avec l’ancienne version de BoxCryptor, avec la version payante, ou toute autre application basée sur EncFS. Dans les deux cas, il se pourrait donc qu’une future version désactive cette possibilité. Et attention, cela pourrait donc rendre inaccessibles les données stockées dans votre conteneur ! Prenez donc soin de conserver l’installeur de la version actuelle de BoxCryptor, au cas où une mise à jour future rendait inutilisable le chiffrement des noms de fichiers…
Apparemment elle a eu lieu cette mise a jour :/ …
Je viens d’essayer avec la dernière version (1.5.410.149 du 04/03/2013), chez moi ça marche toujours…
Je me demande juste ou est le fameux fichier car je n’ai que le fichier.key et le volume monté ne contiens que dropbox, de plus je trouve quand mếmé scandaleu de faire payé une application gratuite sur linux :/
Le fichier se trouve à la racine du conteneur (le dossier sur le disque dur dans lequel sont enregistrées les données chiffrées). Ça a peut-être changé dans la nouvelle version de BoxCryptor, qui n’est plus simplement un frontend de EncFS.
Et ils ne font pas payer une application gratuite sur Linux : EncFS est un projet libre et gratuit, mais qui n’a pas d’interface graphique. Il en existe un portage Windows libre et gratuit également. Ce que fait payer BoxCryptor, c’est une interface graphique permettant de simplifier l’utilisation pour un non geek et une application mobile permettant d’accéder aisément et à la volée aux fichiers stockés sur un hébergeur en ligne (ce qui n’est pas possible avec EncFS, qui ne fonctionne qu’en local).
Bonsoir, ça m’a bien plus votre petite bidouille et je confirme que ça marche aussi avec la version1.6
Je viens de tomber sur cette astuce ,grâce a ça j’ai pu mettre en place le chiffrement des noms de fichiers / dossiers, merci bcp !