Cryptage Linux. Comparaison des performances de différents systèmes de chiffrement sous Linux. Connexion au démarrage

Chacun de nous stocke une bonne quantité d’informations confidentielles sur son disque dur. Pour certains, ce ne sont que des mots de passe pour divers services réseau, d'autres sont chargés de stocker des documents importants et d'autres encore développent un programme innovant depuis plusieurs années. Dans tous les cas, les données doivent être protégées des étrangers, ce qui, dans notre monde mobile, est assez problématique sans l'utilisation de systèmes de cryptage.

En examinant la liste des logiciels de chiffrement pour Linux et en analysant la popularité et la pertinence de chacun d'eux, nous arrivons à la conclusion qu'il n'existe que quatre systèmes de chiffrement sécurisés et pris en charge pour chiffrer les disques durs et autres supports de stockage à la volée :

AVERTISSEMENT

Pour des raisons de sécurité, il est préférable de désactiver l'indexation des partitions chiffrées en éditant le fichier de configuration /etc/updatedb.conf. Les fichiers chiffrés par EncFS ne peuvent pas avoir de liens physiques, puisque le système de chiffrement ne lie pas les données à l'inode, mais au nom du fichier.

Dans cet article, je vais essayer de comparer les performances de différents systèmes de chiffrement sous Linux. En théorie, bien sûr, on sait quel système est le plus productif et des tentatives ont été faites pour calculer les performances de différents systèmes (). Truecrypt contient même un benchmark intégré (qui montre cependant les performances sur la RAM ; il ne peut être utilisé que pour évaluer la vitesse de différents algorithmes de cryptage). Je vais faire quelque chose d'un peu différent : je mesurerai la vitesse d'un système de fichiers chiffré par divers moyens en pourcentage par rapport à un système de fichiers non chiffré classique.


Nous chiffrerons une partition distincte sur un disque dur distinct, qui ne contient pas le système de fichiers racine, en utilisant l'algorithme utilisé par défaut dans chaque cas spécifique. En tant qu'utilisateur ordinaire, je ne comprends pas les nuances des normes de cryptage (par exemple, en quoi le hachage RIPEMD-160 diffère de Whirpool, lequel de ces modes est le plus rapide, qui offre une protection plus élevée), nous nous fierons donc simplement au fait que le les fabricants de chaque produit logiciel ont choisi des paramètres par défaut suffisamment cryptographiques. Cela n’est peut-être pas tout à fait exact, car les performances des différents algorithmes de chiffrement ne sont pas les mêmes. Si vous le souhaitez, vous pouvez bien sûr modifier le type de cryptage, mais je ne suis pas sûr que tous les produits testés disposent d'un ensemble d'algorithmes absolument identiques. Nous allons tester :

3) eCryptfs est le système par défaut proposé aux utilisateurs d'Ubuntu pour chiffrer les répertoires personnels, c'est pourquoi il est inclus dans ce test. Fonctionne sur un système de fichiers existant. Chiffre chaque fichier séparément, afin que chacun puisse voir les droits, les dates de modification et le nombre de fichiers cryptés ; Par défaut, les noms de fichiers sont également visibles, bien qu'il existe une option pour les crypter. Le produit le plus inefficace du groupe.

4) EncFS est un analogue approximatif d'eCryptfs, mais utilise FUSE.

Ainsi, pour les tests, une machine distincte d'âge assez avancé a été allouée dans la configuration suivante : CPU - Intel Celeron 2000Mhz, RAM - 512 Mo DDR PC2700, disque dur système - WD Caviar SE 5400 RPM 80 Go, disque dur de test - WD Caviar SE 7200 RPM 80 Go.
OS - Ubuntu 12.04 LTS, versions de tous les logiciels en vigueur pour les référentiels de ce système d'exploitation au moment de la rédaction (Truecrypt 7.1a-linux-x86 ne provenant pas des référentiels).

Nous testerons le système de fichiers ext4 par défaut pour la plupart des distributions. Pour tester les performances, nous utiliserons l'utilitaire iozone3 et un script shell écrit « sur le genou » pour mesurer la différence en pourcentage dans les tests.

Script pour compter. Aucune attention particulière n'a été portée à la pureté du code, le seul critère lors de l'écriture était la présence du résultat correct.

#!/bin/sh gendifffile () ( #la procédure génère un fichier facile à analyser. Premièrement, les lignes #non soumises à l'analyse sont tronquées ; deuxièmement, les deux premiers nombres de chaque ligne sont tronqués, indiquant #la taille du fichier et la taille de l'enregistrement, respectivement ; troisièmement, le fichier entier est affiché ligne par ligne - #un résultat de test par ligne cat $1 | while read LINE ; do echo $LINE| grep "^[[:space:]]*[[: chiffre :]]" | awk "(pour (i=3;i<=NF;i++) {print $i}}" done > > $2 ) getline () ( #procedure imprime le numéro de ligne $2 du fichier $1 head -n $2 "$1" | tail -n 1 ) compare() ( #procedure compare les fichiers $1 et $2 ligne par ligne, en calculant la différence en pourcentage de chacun paire de tests #puis calcule la valeur moyenne arithmétique, de combien de pour cent plus rapide ou plus lent #le fichier contenant le premier groupe de tests du fichier contenant le deuxième groupe P=0 MAX=0 L1=`cat "$1" | wc -l` #nombre de tests dans le fichier L2=`cat "$2" | wc -l` if [ $L1 -ne $L2 ]; alors #si les fichiers contiennent un nombre différent de tests, alors nous ne les comparerons pas echo error return fi STEP=$(($L1*5/100)) J=0 pour I dans `seq 1 $L1` ; faire J=$(($J+1)) si [ $J -eq $STEP ] ; alors J =0 echo "$((100*$I/$ L1))% terminé ($I de $L1)" fi A=`getline "$1" $I` B=`getline "$2" $I` if [ ` echo $A \> $B|bc -l` - eq 1 ] ; alors D=`echo "100-($B*100/$A)"|bc -l` if [ `echo $D \> $MAX | bc -l` -eq "1" ] ; alors MAX=$D sleep 5 fi else D=`echo "100-($A*100/$B)"|bc -l` if [ `echo $D \ > $MAX| bc -l` -eq "1" ]; then MAX=$D sleep 5 fi D="-$D" #si la valeur a un signe "-", alors ce test a été exécuté plus rapidement #dans le deuxième fichier, pas dans le premier fi P=`echo "$P+ $D"| bc -l` done P=`echo $P/$L1| bc -l` #calculer la moyenne arithmétique echo PERCENT=$P MAX_PERCENT=$MAX ) genaverage () ( #procédure de génération d'un fichier préparé pour l'analyse, dont chaque ligne est #la moyenne arithmétique des lignes correspondantes de tous les fichiers de rapport situé dans le répertoire analysé AVG=` mktemp` F=`ls "$1"|wc -l` #nombre de fichiers avec des rapports dans un répertoire donné #à condition que seuls ces fichiers y soient stockés et rien d'autre #nous ne vérifierons pas le exactitude de cette hypothèse si [ ! -d " $1" -o $F -lt 2 ] ; alors echo error >/dev/stderr #dans cette procédure, nous afficherons tous les messages vers stderr, puisque #stdout est remplacé dans une autre procédure rm -f $AVG exit fi TMP=` mktemp` find "$1" -type f| while read FILE; faire #pour chaque fichier de rapport iozone situé dans le répertoire donné I=`mktemp` #générer un fichier temporaire préparé pour l'analyse gendifffile " $FILE" "$I" #names écrit tous ces fichiers dans "TMP" ligne par ligne echo "$I">>$TMP done L=`cat \`getline "$TMP" 1\`|wc -l` cat "$TMP"| en lisant LINE ; faire #quelques vérifications ne ferait pas de mal L1=`cat "$LINE"| wc -l` #tous les fichiers contiennent le même nombre de tests if [ $L -ne $L1 ]; puis echo error >/dev/stderr exit fi done STEP=$(($L*5/100)) J=0 pour I dans `seq 1 $L` ; faire J=$(($J+1)) if [ $J -eq $STEP ]; puis J=0 echo "$((100*$I/$L))% terminé ($I de $L)" >/dev/stderr fi SUMFILE=`mktemp` #de cette façon, j'obtiens la valeur de la variable SUM de la boucle imbriquée SUM=0 cat "$TMP"| en lisant LINE ; do SUM=$((`getline "$LINE" $I`+$SUM)) echo $SUM > "$SUMFILE" done echo `tail -n 1 "$SUMFILE"`/$F|bc -l >> $ AVG #obtenez la moyenne arithmétique #et écrivez-la à l'endroit approprié dans le fichier AVG rm -f "$SUMFILE" done cat "$TMP"| en lisant LINE ; do #delete fichiers temporaires rm -f "$LINE" done rm -f "$TMP" echo $AVG ) printf %b "\\033-chainmode-ivmode[:ivopts]> [<#opt_params> ]

Étape 02 : Compte tenu de LUKS

Comme nous l'avons déjà vu à l'étape précédente, l'application dm-crypt peut chiffrer/déchiffrer les données toute seule. Mais il présente quelques inconvénients : si vous utilisez directement dm-crypt, il ne créera pas de métadonnées sur le disque, ce qui peut constituer un problème sérieux si vous souhaitez garantir la compatibilité entre les différentes distributions Linux. De plus, l'application dm-crypt ne prend pas en charge l'utilisation de plusieurs clés, alors que dans des situations réelles, il est très important d'utiliser plusieurs clés.

C’est pour ces raisons qu’est née la technique LUKS (Linux Unified Key Setup). LUKS est la norme de chiffrement du disque dur Linux et la normalisation permet la compatibilité entre différentes distributions. L'utilisation de plusieurs clés et phrases secrètes est également prise en charge. Dans le cadre de cette standardisation, un en-tête LUKS est ajouté aux données chiffrées et cet en-tête contient toutes les informations nécessaires à la configuration. Lorsqu'il existe un tel en-tête avec des données, les utilisateurs peuvent facilement passer à n'importe quelle autre distribution. Le projet dm-crypt recommande actuellement d'utiliser LUKS comme moyen privilégié pour configurer le chiffrement de disque. Voyons comment installer l'utilitaire cryptsetup et comment l'utiliser pour créer des volumes basés sur LUKS.

Étape 03 : Installation

La fonctionnalité au niveau du noyau utilisée dans dm-crypt est déjà présente dans toutes les distributions Linux ; nous avons seulement besoin d'une interface avec eux. Nous utiliserons l'utilitaire cryptsetup, avec lequel vous pourrez créer des volumes en utilisant dm-crypt, le standard LUKS, ainsi que la bonne vieille application TrueCrypt. Pour installer cryptsetup sur les distributions Debian/Ubuntu, vous pouvez utiliser les commandes suivantes :

$ sudo apt-get update $ sudo apt-get install cryptsetup

La première commande synchronise les fichiers d'index de fusée avec le contenu de leurs référentiels : elle obtient des informations sur les dernières versions de tous les packages disponibles. La deuxième commande téléchargera et installera le package cryptsetup sur votre ordinateur. Si vous utilisez une distribution RHEL/Fedora/CentOS, vous pouvez utiliser la commande yum pour installer l'utilitaire cryptsetup.

$ miam, installez cryptsetup-luks

Étape 04 : Création d'un fichier cible

Maintenant que l'utilitaire cryptsetup a été installé avec succès, nous devons créer un fichier cible qui stockera le conteneur LUKS. Bien qu'il existe de nombreuses façons de créer un tel fichier, un certain nombre de conditions doivent être remplies lors de sa création :

  • Le fichier ne doit pas être composé de plusieurs parties situées à différents endroits du disque, c'est-à-dire que lors de sa création, une quantité de mémoire suffisante doit être immédiatement allouée.
  • L’intégralité du fichier doit être remplie de données aléatoires afin que personne ne puisse savoir où se trouveront les données utilisées pour le cryptage.

La commande dd peut nous aider à créer un fichier qui satisfait aux conditions ci-dessus, même s'il sera relativement lent. Utilisez-le simplement avec un fichier de périphérique spécial /dev/random spécifié en entrée et un fichier cible spécifié en sortie. Un exemple de commande ressemble à ceci :

$ dd if=/dev/random of=/home/nitish/basefile bs=1M count=128

En conséquence, un fichier appelé basefile d'une taille de 128 Mo sera créé dans le répertoire /home/nitish. Cependant, veuillez noter que l'exécution de cette commande peut prendre un certain temps ; dans le système utilisé par notre expert, cela a pris une heure.

Étape 05 : Créer un LUKS dm-crypt

Une fois que vous avez créé le fichier cible, vous devez créer une partition LUKS dans ce fichier. Cette section sert de couche principale sur laquelle repose tout le cryptage des données. De plus, l'en-tête de cette section (en-tête LUKS) contient toutes les informations nécessaires à la compatibilité avec d'autres appareils. Pour créer une partition LUKS, utilisez la commande cryptsetup :

$ cryptsetup -y luksFormat /home/nitish/basefile

Une fois que vous acceptez que les données contenues dans le fichier de base soient définitivement supprimées, entrez la phrase secrète, puis confirmez-la, la partition LUKS sera créée. Vous pouvez vérifier cela avec la commande de fichier suivante :

$fichierbasefile

Veuillez noter que la phrase que vous saisissez ici sera utilisée pour décrypter les données. Il est très important de s'en souvenir et de le conserver dans un endroit sûr, car si vous l'oubliez, vous perdrez presque certainement toutes les données de la partition cryptée.

Étape 06 : Créer et monter le système de fichiers

Le conteneur LUKS que nous avons créé à l'étape précédente est désormais disponible sous forme de fichier. Dans notre exemple, il s'agit de /home/nitish/basefile. L'utilitaire cryptsetup vous permet d'ouvrir le conteneur LUKS en tant que périphérique indépendant. Pour ce faire, mappez d’abord le fichier conteneur au nom du périphérique, puis montez le périphérique. La commande d'affichage ressemble à ceci :

Une fois que vous avez saisi avec succès la phrase secrète que vous avez créée à l’étape précédente, le conteneur LUKS sera mappé au volume1. Ce qui se passe réellement, c'est que le fichier est ouvert en tant que périphérique de bouclage local, de sorte que le reste du système peut désormais traiter le fichier comme s'il s'agissait d'un véritable périphérique.

Étape 07 : Système de fichiers - suite

Le fichier conteneur LUKS est désormais disponible sur le système en tant que périphérique standard. Avant de pouvoir l'utiliser pour des opérations normales, nous devons le formater et créer un système de fichiers dessus. Vous pouvez utiliser n'importe quel système de fichiers pris en charge sur votre système. Dans mon exemple, nous avons utilisé ext4 car il s'agit du système de fichiers le plus récent pour les systèmes Linux.

$ mkfs.ext4 -j /dev/mapper/volume1

Une fois le périphérique formaté avec succès, l'étape suivante consiste à le monter. Vous devez d’abord créer un point de montage, de préférence dans /mnt (en fonction du bon sens).

$mkdir/mnt/fichiers

Montons maintenant :

Pour effectuer une vérification croisée, utilisez la commande df –h - vous verrez le périphérique "/dev/mapper/volume1" à la fin de la liste des périphériques montés. On peut voir que l'en-tête LUKS occupe déjà de l'espace dans l'appareil.

Grâce à cette étape, vous pouvez désormais utiliser l'appareil LUKS avec le système de fichiers ext4. Utilisez simplement cet appareil pour stocker des fichiers - tout ce que vous écrivez sur cet appareil sera crypté et tout ce que vous y lirez sera décrypté et vous sera montré.

Étape 08 : Utiliser un lecteur chiffré

Nous avons suivi plusieurs étapes pour arriver à ce résultat, et si vous ne comprenez pas très bien comment tout cela fonctionne, vous serez probablement confus quant à ce que vous devez faire une seule fois (obligatoire pour l'installation) et ce qui doit être fait régulièrement lorsque en utilisant le cryptage. Considérons le scénario suivant : Vous avez terminé avec succès toutes les étapes ci-dessus, puis vous avez éteint votre ordinateur. Le lendemain, lorsque vous démarrez votre ordinateur, vous ne parvenez pas à trouver le périphérique monté : où est-il passé ? Pour comprendre tout cela, vous devez garder à l'esprit qu'après le démarrage du système, vous devez monter le conteneur LUKS et, avant d'arrêter l'ordinateur, le démonter.

Pour accéder à votre fichier LUKS, procédez comme suit chaque fois que vous allumez votre ordinateur, puis fermez le fichier en toute sécurité avant d'éteindre votre ordinateur :

Ouvrez le fichier LUKS (c'est-à-dire /home/nitish/basefile) et entrez le mot de passe. La commande ressemble à ceci :

$ cryptsetup luksOpen /home/nitish/basefile volume1

Une fois le fichier ouvert, montez-le (s'il ne se monte pas automatiquement) :

$ mount /dev/mapper/volume1 /mnt/files

Vous pouvez désormais utiliser le périphérique monté comme un disque ordinaire et y lire ou y écrire des données.

Une fois terminé, démontez l'appareil comme suit :

$ umount /mnt/fichiers

Une fois le démontage réussi, fermez le fichier LUKS :

$cryptsetup luksFermer le volume1

Étape 09 : Sauvegarde

La plupart des pertes de données stockées dans un conteneur LUKS sont dues à une corruption de l'en-tête LUKS ou des emplacements de clé. Outre le fait que même en raison d'une réécriture accidentelle d'un en-tête en mémoire, les en-têtes LUKS peuvent être endommagés, dans des conditions réelles, une panne complète du disque dur est également possible. La meilleure façon de vous protéger contre de tels problèmes est d’avoir des sauvegardes. Voyons quelles options de sauvegarde sont disponibles.

Pour créer une sauvegarde du fichier d'en-tête LUKS, spécifiez le paramètre luksHeaderBackup dans la commande :

$ sudo cryptsetup luksHeaderBackup /home/nitish/basefile --header-backup-file /home/nitish/backupfile

Ou, si vous souhaitez restaurer un fichier à partir d'une sauvegarde, spécifiez le paramètre luksHeaderRestore dans la commande :

$ sudo cryptsetup luksHeaderRestore /home/nitish/basefile --header-backup-file /home/nitish/backupfile

Pour vérifier le fichier d'en-tête LUKS et vous assurer que le fichier que vous traitez correspond à un périphérique LUKS réel, vous pouvez utiliser le paramètre isLuks.

$ sudo cryptsetup -v isLuks /home/nitish/basefile

Nous avons déjà vu comment sauvegarder les fichiers d'en-tête LUKS, mais une sauvegarde d'en-tête LUKS ne protégera pas réellement contre une panne complète du disque, vous devrez donc sauvegarder la partition entière à l'aide de la commande cat suivante :

$ cat /home/nitish/basefile > basefile.img

Étape 10 : Divers paramètres

Plusieurs autres paramètres peuvent être utiles lors de l'utilisation du cryptage LUKS dm-crypt. Regardons-les.

Pour vider l'en-tête LUKS, la commande cryptsetup a l'option luksDump. Il vous permettra de prendre un instantané du fichier d'en-tête LUKS de l'appareil que vous utilisez. Un exemple de commande ressemble à ceci :

$ cryptsetup luksDump /home/nitish/basefile

Au début de cet article, nous avons mentionné que LUKS prend en charge plusieurs clés. Voyons cela en action maintenant en ajoutant un nouvel emplacement pour clé ( Note du traducteur : emplacement pour clé - espace pour clé):

$ cryptsetup luksAddKey --Key-slot 1 /home/nitish/basefile

Cette commande ajoute une clé à l'emplacement de clé numéro 1, mais seulement après avoir entré le mot de passe actuel (la clé présente dans l'emplacement de clé 0). Il existe un total de huit emplacements pour clés et vous pouvez déchiffrer les données en utilisant n'importe quelle clé. Si vous videz l'en-tête après avoir ajouté la deuxième clé, vous verrez que le deuxième emplacement de clé est occupé.

Vous pouvez supprimer des emplacements de clé comme ceci :

$ cryptsetup luksRemoveKey /home/nitish/basefile

Cela supprimera l'emplacement de clé avec le numéro d'emplacement le plus élevé. Attention à ne pas supprimer tous les slots, sinon vos données seront perdues à jamais.

Introduction

Le stockage des données sous forme cryptée est un excellent moyen de protéger les informations afin qu'elles ne parviennent pas à un attaquant. Des systèmes cryptographiques sont développés pour protéger la propriété intellectuelle, les secrets commerciaux ou les informations personnelles. Ils peuvent se présenter sous diverses formes, offrir différents niveaux de fonctionnalités et contenir un certain nombre d'options pour s'adapter à un large éventail de systèmes d'exploitation et d'environnements. Aujourd’hui, le nombre de méthodes, d’algorithmes et de solutions cryptographiques modernes est bien plus important qu’auparavant. Et la qualité du développement est bien meilleure. De plus, il existe de nombreuses solutions open source réalisables sur le marché, qui vous permettent d'atteindre un bon niveau de protection sans dépenser de grosses sommes d'argent.

En décembre 2005, le Ponemon Institute a mené une enquête auprès de divers experts en sécurité de l'information concernant le cryptage et la protection des données. Parmi les 6 298 personnes interrogées, seulement 4 % utilisaient le chiffrement à l’échelle de l’entreprise. La même enquête fait ressortir trois raisons principales expliquant l’opposition persistante aux règles officielles de chiffrement :

  • 69 % des personnes interrogées ont mentionné des problèmes de performances ;
  • 44 % des personnes interrogées ont mentionné des difficultés de mise en œuvre ;
  • 25 % des personnes interrogées ont évoqué le coût élevé de la mise en œuvre des algorithmes cryptographiques.

Dans de nombreux pays, les organisations sont exposées à diverses pressions pour accroître la transparence de leur travail. Mais, d'un autre côté, ils portent la responsabilité légale du non-respect de la sécurité des informations confidentielles. C'était notamment le cas des magasins de chaussures de la société DSW aux États-Unis).

La Federal Trade Commission des États-Unis a intenté une action en justice contre DSW, alléguant l'incapacité à fournir des niveaux adéquats de sécurité des informations et l'incapacité à prendre des mesures adéquates pour construire des systèmes adéquats pour restreindre l'accès à ces données, ainsi qu'une protection insatisfaisante des connexions réseau entre le magasin et le bureau. des ordinateurs. Dans le cas de DSW, environ 1,4 million de cartes de crédit et environ 96 000 comptes chèques étaient potentiellement accessibles aux criminels. Et avant que les accords entre l’entreprise et la FTC ne soient conclus, ces comptes avaient déjà été utilisés illégalement.

De nos jours, les solutions logicielles et d'ingénierie pour le cryptage des données sont plus accessibles que jamais. La clé USB, de moins en moins chère, est de plus en plus utilisée à la place des cartes à puce. Ce dernier, à son tour, est également souvent présent, car la plupart des ordinateurs portables contiennent un lecteur de carte à puce.

Les consommateurs commencent de plus en plus à réfléchir aux dangers liés au vol d'informations personnelles, de données de propriétaire et de numéros de carte de crédit. Et ces craintes ne sont alimentées que par les informations faisant état de ventes massives d’informations volées de ce type auprès d’institutions chargées de données aussi précieuses.

Les consommateurs commencent également à réaliser qu’il est important de protéger les informations personnelles non seulement en ligne, mais également hors ligne. Après tout, les accès indésirables à vos données ne se produisent pas toujours via le réseau. Cette question est particulièrement pertinente pour ceux dont les ordinateurs portables non protégés peuvent se retrouver soit entre les mains du personnel de service pour des modifications de configuration, soit en service pour réparation.

Problèmes techniques de chiffrement

Les fonctions de cryptage sont requises dans tous les systèmes informatiques multi-utilisateurs modernes où les données, les processus et les informations utilisateur sont logiquement séparés. Pour authentifier un utilisateur dans un tel système, les identifiants et les mots de passe sont hachés et comparés aux hachages déjà disponibles dans le système (ou le hachage est utilisé pour déchiffrer la clé de session, dont la validité est ensuite vérifiée). Pour empêcher la consultation non autorisée d'informations personnelles, des fichiers individuels ou des sections entières peuvent être stockés dans des conteneurs cryptés. Et les protocoles réseau, par exemple SSL\TLS et IPSec, permettent, si nécessaire, de renforcer la protection cryptographique de divers appareils (/dev/random, /dev/urandom, etc.) à l'aide d'algorithmes modulaires fonctionnant avec le noyau du système d'exploitation. .

L'objectif de toute technologie de chiffrement de disque est de protéger contre tout accès indésirable aux informations personnelles et de réduire les dommages liés à la perte de propriété intellectuelle due à un accès illégal ou au vol d'un appareil physique. Le système d'exploitation Linux avec la version 2.6.4 du noyau a introduit une infrastructure cryptographique avancée qui protège de manière simple et fiable les données personnelles sur de nombreuses couches logicielles. Il existe des normes entières pour stocker des données cryptées à bas niveau, comme Linux Unified Key Setup (LUKS), et des implémentations au niveau utilisateur, par exemple les systèmes de fichiers EncFS et CryptoFS, qui, à leur tour, sont basés sur le Fast Userspace. Système de fichiers (FUSE) pour Linux. Bien entendu, tout système cryptographique est aussi résistant au piratage que ses mots de passe et ses clés d’accès. Il existe trois niveaux principaux d’utilisation des technologies de chiffrement :

  • niveau du fichier et du système de fichiers (chiffrement fichier par fichier, conteneur de fichiers) ;
  • niveau de bloc bas (conteneur avec système de fichiers) ;
  • niveau matériel (dispositifs cryptographiques spécialisés).

Le chiffrement au niveau des fichiers est une méthode très simple généralement utilisée pour le partage de fichiers. Le cryptage est utilisé occasionnellement, ce qui est pratique pour envoyer un nombre raisonnable de fichiers. Pour les systèmes de fichiers multi-utilisateurs, le problème de la gestion des clés se pose car les dossiers et fichiers de différents utilisateurs sont chiffrés avec des clés différentes. Bien sûr, vous pouvez utiliser une seule clé, mais nous obtenons alors une technologie qui rappelle le cryptage de disque. Comme toujours, il est de la responsabilité de l'utilisateur de choisir le mot de passe le plus sécurisé possible.

Les applications cryptographiques plus avancées fonctionnent au niveau du système de fichiers, suivant les fichiers au fur et à mesure de leur création, de leur écriture ou de leur modification. Cette méthode offre la meilleure protection des informations personnelles, quelle que soit la manière dont elles sont utilisées, et elle convient également pour un grand nombre de fichiers. De plus, vous n’avez pas à vous soucier des applications qui ne peuvent pas chiffrer les fichiers individuellement.

Certaines technologies cryptographiques sont gratuites et incluses dans de nombreuses distributions. À propos, les dernières versions de Windows sont équipées d'un système de fichiers spécial prenant en charge le système de fichiers cryptés (EFS). Fedora prend en charge un certain nombre d'options de cryptage, notamment LUKS (vous pouvez activer la prise en charge de LUKS sous Windows si vous utilisez les systèmes de fichiers FAT ou FAT32 et l'application FreeOTFE). Et FUSE et EncFS sont disponibles dans les packages Extras. CryptoFS peut également être installé en téléchargeant depuis site officiel. .

L'infrastructure FUSE se compose d'un module de noyau chargeable et d'une bibliothèque d'espace utilisateur qui sert de base aux systèmes de fichiers CryptoFS et Encrypted file system (EncFS). De par sa structure, FUSE n'affecte pas le code source du noyau et offre en même temps une grande flexibilité pour implémenter de nombreux ajouts intéressants, par exemple le système de fichiers Secure Shell (SSHFS).

CryptoFS stocke les données cryptées dans une structure de répertoires familière, divisée en deux parties principales : les informations textuelles (liste des fichiers, dossiers, archives) et les données cryptées elles-mêmes. Vous ne pouvez remonter un répertoire chiffré qu'à l'aide de la clé. Lorsque vous utilisez CryptoFS, vous n'avez pas besoin de privilèges spéciaux et la configuration est également simple.

Le système de fichiers EncFS est également une implémentation en espace utilisateur basée sur la bibliothèque FUSE, qui offre une protection contre le vol d'informations et fonctionne sur le principe du cryptage fichier par fichier. Il a hérité de sa structure des versions antérieures, mais avec des améliorations tant dans la forme que dans la fonction. Le système de fichiers EncFS peut être étendu de manière dynamique pour répondre aux besoins croissants des utilisateurs. Les fichiers peuvent être chiffrés selon divers paramètres (par exemple, lorsque le contenu change, par attributs, etc.). Essentiellement, le stockage sous-jacent d'EncFS peut aller d'une image ISO à une partition réseau ou même un système de fichiers distribué.

Les deux systèmes de fichiers fonctionnent de bout en bout et peuvent être utilisés par-dessus d'autres systèmes de fichiers et abstractions logiques, tels qu'un système de fichiers journalisé ou étendu, qui peut être distribué sur plusieurs supports physiques via un gestionnaire de partitions logiques (LVM ). L'illustration suivante montre schématiquement le fonctionnement de ce système de fichiers : Dans ce diagramme, le répertoire visible est étiqueté /mount (couche de données en texte brut EncFS).

Superposition de l'espace utilisateur montrant l'interaction entre FUSE et EncFS.

Sous la couche d'abstraction du système de fichiers se trouvent des schémas de chiffrement de bas niveau (en bloc) similaires à ceux utilisés dans LUKS. Les schémas de ce type fonctionnent uniquement sur des blocs de disque, sans prêter attention aux abstractions du système de fichiers de niveau supérieur. Des schémas similaires peuvent être utilisés pour les fichiers d'échange, pour divers conteneurs ou même pour des supports physiques entiers, y compris le chiffrement complet de la partition racine.


LUKS fonctionne sans connaissance exacte du format du système de fichiers.

LUKS est conçu conformément à Trusted Key Setup #1 (TKS1) et est compatible avec Windows utilisant n'importe quel format de système de fichiers courant (FAT/FAT32). Le système est bien adapté aux utilisateurs mobiles, prend en charge l'émission et la révocation de clés Gnu Privacy Guard (GPG) et est entièrement gratuit. LUKS est capable de bien plus que toute autre implémentation décrite dans cet article. De plus, LUKS prend en charge un grand nombre de solutions pour créer et gérer des appareils cryptés LUKS.

Le système de fichiers CryptoFS n'accepte qu'un mot de passe, tandis que les médias chiffrés avec LUKS fonctionnent avec n'importe quelle clé PGP (Pretty Good Privacy) avec n'importe quel nombre de mots de passe. EncFS utilise également un mot de passe pour protéger les fichiers, mais il ouvre la clé stockée dans le répertoire racine correspondant.

Les différences entre les implémentations de bas niveau et en espace utilisateur sont mieux visibles dans les tests pratiques. À bas niveau, les données peuvent être transférées de manière transparente vers le système de fichiers, qui gère les opérations de lecture et d'écriture beaucoup plus efficacement.

Configuration des tests

Notre plate-forme de test était l'ordinateur portable Dell Latitude C610, un peu obsolète, mais néanmoins représentatif assez rapide de la technologie de type 2002. Lorsqu'il est alimenté par batterie, le C610 réduit la fréquence du processeur à 733 MHz. Par conséquent, lors des tests, nous n’avons pas débranché l’ordinateur portable de la prise. Le tableau suivant montre la configuration de l'ordinateur portable

Les résultats des tests ont été obtenus en utilisant le système de fichiers EXT3 sous Linux. Peut-être qu'EXT3 n'est pas le plus productif par rapport aux autres systèmes de fichiers journalisés. Mais des expériences pour affiner le format du système, la taille des blocs, les paramètres du lecteur, etc. ne sont pas les objectifs de nos tests, car ils ne répondent pas aux critères d’installation et de configuration simples. Rappelons que le but de l'article était de montrer comment les solutions cryptographiques pour Linux permettent de créer simplement, efficacement et à moindre coût un stockage de données sécurisé.

Installation

LUKS, FUSE et EncFS sont disponibles dans la distribution Fedora, aucun effort supplémentaire n'est donc requis. Mais CryptoFS devra être téléchargé séparément.

Compiler CryptoFS à partir du code source est assez simple. Décompressez l'archive, exécutez le script de configuration dans le répertoire de destination, puis exécutez make comme indiqué dans l'illustration. Le fichier de configuration contient quatre paramètres : chiffrement de chiffrement, algorithme de résumé de message, taille de bloc et nombre de sels de chiffrement.


Le processus d'installation de CryptoFS est simple.

La configuration consiste à spécifier les chemins des répertoires de début et de fin (pour les données cryptées et non cryptées). Vous pouvez ensuite exécuter la commande cryptofs comme indiqué dans la figure suivante.


Configuration de CryptoFS.

Vous pouvez ensuite exécuter la commande mount, après quoi vous pourrez voir la partition montée.

Assurez-vous d’abord que le module du noyau FUSE (fusible modprobe) est chargé. EncFS simplifie le processus de création d'un conteneur chiffré, comme le montre l'illustration suivante.


Si vous ignorez le processus d'installation de la clé (qui est spécifique à chaque situation), LUKS peut être facilement configuré comme indiqué ci-dessous.


Tests et analyse des performances

Les différences de performances entre une installation native et une installation dans un environnement chiffré LUKS sont assez mineures. Surtout compte tenu de la différence notable entre les solutions d’espace utilisateur. Pour évaluer les performances des systèmes de fichiers cryptés un par un, nous avons utilisé Iozone. Pour les tests, des enregistrements de 4 Ko à 16 Mo sont utilisés, la taille du fichier varie de 64 Ko à 512 Mo et le résultat est indiqué en Ko/s.

Conclusion

Au moins là où LUKS est utilisé, vous n'avez pas à vous soucier des performances. Bien entendu, une certaine perte de performances est causée par le cryptage « transparent » des données. Le système LUKS est facile et simple à installer et peut être utilisé sous Linux et Windows.

Les utilisateurs professionnels devront probablement faire face à des restrictions liées à la politique de l'entreprise. Ils interdisent souvent les solutions open source ou interdisent certaines implémentations. De plus, il existe parfois des restrictions sur l'importation/exportation de technologies de cryptage concernant la force du code, ou le service informatique nécessite une assistance téléphonique du fournisseur de solutions, ce qui rend LUKS, EncFS et CryptoFS inutiles. Dans tous les cas, LUKS est une excellente solution si de tels problèmes ne vous dérangent pas. Une bonne option pour les petites entreprises ou les particuliers.

Mais n’oubliez pas que le cryptage des données n’est pas une panacée. Le cryptage étant effectué de manière transparente, tout programme cheval de Troie exécuté au nom de l'utilisateur peut accéder aux données cryptées.

L'avis de l'éditeur

CryptoFS et EncFS sont des implémentations en espace utilisateur. Comme nous l’avons expliqué précédemment, ils sont simples dans leur conception et leur mise en œuvre, mais se font au détriment des performances et des capacités. Cela est particulièrement évident par rapport à LUKS. Non seulement il est sensiblement plus rapide, mais il prend également en charge une ou plusieurs clés PGP et peut être utilisé sur une partition entière.

Les conteneurs d'espace utilisateur sont principalement importants pour les utilisateurs qui souhaitent protéger leurs informations personnelles dans un environnement multi-utilisateurs. Et qui doit protéger ses données afin que même l'administrateur ne puisse pas accéder aux ressources matérielles ou logicielles. En plus des avantages en termes de performances et de prise en charge multiplateforme, LUKS s'intègre bien aux systèmes de gestion de clés GNOME et PGP. Et la facilité d'utilisation quotidienne des partitions LUKS cryptées est tout simplement impressionnante. À propos, EncFS prend en charge le module d'authentification enfichable (PAM) sous Linux dans des environnements appropriés.