web-dev-qa-db-fra.com

Quelle est la taille maximale autorisée du nom de fichier (et du dossier) avec eCryptfs?

Je suis un nouvel utilisateur eCryptfs et j'ai une question très basique que je n'ai pu trouver nulle part. Je suis intéressé à utiliser eCryptfs via mon Synology NAS qui utilise Linux.

En essayant de chiffrer mon dossier (EXT4) via l'application de chiffrement de Synology (eCryptfs), je rencontre des erreurs indiquant que la longueur de mon nom de fichier ne peut pas dépasser 45 caractères (donc pas de chiffrement).

Si la limite est réellement de 45 caractères, eCryptfs n'est peut-être pas un outil utilisable pour la plupart.

Quelle est la taille maximale autorisée du nom de fichier lors du cryptage de fichiers et de dossiers avec eCryptfs? Est-ce que Linux 255 caractères?

47
Fabry

Divulgation complète: Je suis l'un des auteurs et le responsable actuel des utilitaires de l'espace utilisateur eCryptfs.

Grande question!

Linux a une longueur de nom de fichier maximale de 255 caractères pour la plupart des systèmes de fichiers (y compris EXT4), et un chemin maximum de 4096 caractères.

eCryptfs est un système de fichiers en couches. Il se superpose à un autre système de fichiers tel qu'EXT4, qui est en fait utilisé pour écrire des données sur le disque. eCryptfs crypte toujours le contenu des fichiers, mais il peut éventuellement crypter (obscur) les noms de fichiers (ou non).

Si les noms de fichiers ne sont pas chiffrés, vous pouvez écrire en toute sécurité des noms de fichiers de 255 caractères maximum et chiffrer leur contenu, car les noms de fichiers écrits dans le système de fichiers inférieur correspondront simplement. Un attaquant ne pourrait pas lire le contenu de index.html ou budget.xls, ils sauraient quels noms de fichiers existent. Cela peut (ou non) divulguer des informations sensibles en fonction de votre cas d'utilisation.

Si les noms de fichiers sont cryptés, les choses deviennent un peu plus compliquées. eCryptfs ajoute un peu de données à l'avant du nom de fichier chiffré, de sorte qu'il peut identifier définitivement les noms de fichiers chiffrés. De plus, le chiffrement lui-même implique un "remplissage" du nom de fichier.

Par exemple, j'ai un fichier crypté, ~/.bashrc. Ce nom de fichier est crypté à l'aide de ma clé pour:

/home/kirkland/.Private/ECRYPTFS_FNEK_ENCRYPTED.dWek2i3.WxXtwxzQdkM23hiYK757lNI7Ydf0xqZ1LpDovrdnruDb1-5l67.EU--

De toute évidence, ce nom de fichier à 7 caractères nécessite désormais plus de 7 caractères à chiffrer. Empiriquement, nous avons constaté que les noms de fichiers de caractères supérieurs à 143 caractères commencent à nécessiter> 255 caractères pour être chiffrés. Par conséquent, nous (en tant que développeurs en amont d'eCryptfs) vous recommandons généralement de limiter vos noms de fichiers à environ 140 caractères.

Maintenant, tout cela dit, le Synology NAS est un produit commercial qui intègre et utilise eCryptfs et Linux pour crypter et sécuriser les données sur l'appareil. Nous (les développeurs en amont) d'eCryptfs) n'ont rien à voir avec Synology ou leurs produits, bien que nous soyons généralement heureux de voir eCryptfs utilisé dans la nature . Il me semble que leur recommandation de 45 caractères est soit une erreur typographique ( de notre recommandation de 140 caractères), ou tout simplement une estimation beaucoup plus conservatrice.

77
Dustin Kirkland

Ce fil est très intéressant car je me demandais exactement la même chose. Je peux vivre avec avoir à renommer 20 fichiers sur 50 000 si les noms de fichiers doivent être de 140 caractères ou moins, mais 45 ou moins n'est pas faisable (dans ma situation) car cela m'obligerait à renommer trop de fichiers.

J'ai posé la même question directement à Synology (en les pointant même vers le présent article), et leur réponse était intéressante: "La limite de nom de fichier du partage chiffré est de 143 octets. Elle peut contenir jusqu'à 140 caractères latins purs ou 45 CJK (chinois , Japonais et coréen). "

Suite à cette réponse, j'ai fait plus de tests moi-même, avec des fichiers de 45, 46, 140, 143 et 144 caractères. Mes tests montrent que les fichiers jusqu'à 143 caractères (pas d'octets, contrairement à ce que Synology m'a dit) seront cryptés, mais les fichiers de 144 caractères empêcheront un dossier d'être crypté. Cependant, le MESSAGE D'ERREUR que j'obtiens de mon NAS est que le nom de fichier doit être inférieur à 45 caractères (alors que la réalité est qu'il devrait être inférieur à 144 caractères).

Je n'ai pas fait de tests avec les caractères CJK ... Mais, pour tous ceux qui lisent ceci, il semble que vous allez bien jusqu'à 143 caractères, malgré ce que le système vous dit.

11
sdasdrewr

Je voudrais préciser que linux a une limite de 255 octets par nom de fichier, pas 255 caractères. Ceci est une différence significative et si vous utilisez par exemple Encodage UTF-8, vous pouvez vous retrouver avec des noms de fichiers de 100 caractères max.

8
Richard Jelinek

La longueur du nom de fichier d'ecrypt n'était qu'un problème pour moi car j'avais besoin d'un sous-arbre particulier de mon répertoire personnel pour prendre en charge les noms de fichiers longs, et finalement j'ai réalisé que je pouvais simplement créer un système de fichiers dans un fichier et le monter:

dd if=/dev/zero of=/home/me/.some.img bs=1024 count=1024
mkfs.ext3 /home/me/.some.img
chmod 777 /home/me/longfilenames
Sudo mount /home/me/.some.img /home/me/longfilenames

Il y a probablement toutes sortes de problèmes d'efficacité avec cela, mais cela suffit dans mon cas où les fichiers ne sont que des résultats de test créés périodiquement pour mes propres besoins locaux.

Mes collègues ont mis leur image dans/tmp - les données de test ne sont pas particulièrement confidentielles: nous voulons principalement sécuriser notre code source, pas nos résultats de test.

1
android.weasel