Pourquoi les résultats de l'analyse comparative Truecrypt et cryptsetup (LUKS) sont-ils si différents?

10

Je veux crypter une partie de mon disque dur. Mais avant cela, je voulais comparer les différents algorithmes disponibles en me demandant si je devais choisir aes-xts-256ou aes-xts-512.

Remarque: je n'ai pas d' aesaccélération matérielle. Les repères ont été répétés plusieurs fois sans grand changement. Je voudrais dire clairement que ces benchmarks ne sont valables que sur mon ordinateur (Debian, duo core 2). Il ne s'agit pas d'une comparaison LUKS-TrueCrypt complète.

TL; DR: passez à la partie 4


1- Cryptsetup

J'ai donc téléchargé cryptsetup v1.6.0pour utiliser la nouvelle cryptsetup benchmarkcommande.

Commander

$cryptsetup benchmark

Résultats

 #  Algorithm | Key | Encryption |  Decryption
     aes-cbc   128b   128,2 MiB/s   157,2 MiB/s
 serpent-cbc   128b    49,6 MiB/s    57,7 MiB/s
 twofish-cbc   128b   138,0 MiB/s   183,8 MiB/s
     aes-cbc   256b    97,5 MiB/s   121,9 MiB/s
 serpent-cbc   256b    51,8 MiB/s    57,7 MiB/s
 twofish-cbc   256b   139,0 MiB/s   183,8 MiB/s
     aes-xts   256b   156,4 MiB/s   157,8 MiB/s
 serpent-xts   256b    55,7 MiB/s    58,7 MiB/s
 twofish-xts   256b   161,5 MiB/s   165,9 MiB/s
     aes-xts   512b   120,5 MiB/s   120,9 MiB/s
 serpent-xts   512b    55,7 MiB/s    58,5 MiB/s
 twofish-xts   512b   161,5 MiB/s   165,3 MiB/s

Pensées

  • En cbcmode, serpentest étonnamment rapide à décrypter!
  • En xtsmode, serpentc'est clairement le plus rapide.
  • La taille de la clé semble n'avoir presque aucun effet notable sur .serpent twofish
  • aes ne se comporte pas bien lorsque la taille de clé est augmentée.

Mises à jour hors VM


2- TrueCrypt

J'ai été vraiment surpris car il aesest connu pour être le plus rapide (même sans accélération matérielle). J'ai donc téléchargé TrueCryptpour revérifier ces résultats. TrueCryptutilise le xtsmode par défaut donc je suppose qu'il l'utilise également dans ses benchmarks.

Méthode

  1. Outils> Benchmark
  2. Choisissez n'importe quelle taille de tampon (ici, 5 Mo)
  3. Cliquez sur "Benchmark"

Résultats

 #  Algorithm | Encryption |  Decryption
         AES     106 MB/s      107 MB/s
     Twofish      78 MB/s       76 MB/s
     Serpent      41 MB/s       42 MB/s

Pensées

Ces résultats correspondent beaucoup plus à ce qui est attendu mais ne correspondent pas bien aux cryptsetuprésultats de.


3- Réflexions générales

  • cryptsetupfourni de meilleures performances générales que TrueCryptdans ce cas. Cela pourrait s'expliquer de la manière suivante:
    • cryptsetupa été compilé sur mon système avec des routines d'optimisation du compilateur alors qu'il TrueCryptétait déjà compilé de manière générique;
    • L'AFAIK cryptsetuputilise des modules de chiffrement dans l' TrueCryptespace noyau tout en utilisant des routines de chiffrement dans l' espace utilisateur.
  • Cependant, je ne peux pas expliquer pourquoi serpent-xts-512semble être la voie à suivre cryptsetupalors que aes-xtsle seul chiffre vaut la peine d'être utilisé.

4- Question

cryptsetupet TrueCryptdonner des résultats qualitatifs (vitesse de chiffrement relative) et quantitatifs (vitesse réelle de chaque chiffrement) complètement différents dans des points de repère en RAM.

  • Est-ce quelque chose que vous avez déjà remarqué?
  • Dois-je faire confiance cryptsetupet utiliser le serpent-xts-512chiffrement pour la vitesse?

la source

Réponses:

5

Vous n'avez pas d'accélération matérielle AES et exécutiez les tests dans une machine virtuelle. Il est peu probable que vos résultats de test reflètent les résultats du monde réel, car les vitesses de chiffrement / déchiffrement dépendent fortement des charges actuelles du processeur et du disque. Votre meilleur pari est de créer deux partitions Truecrypt indépendantes et d'effectuer des tests de performance manuels en copiant des fichiers volumineux vers / depuis chaque partition.

LUKS et Truecrypt ont également des implémentations légèrement différentes, et comme vous l'avez dit, "ces tests ne sont valables que sur mon ordinateur". Vous devez réellement tester les deux sur votre système avec des transferts de fichiers réels pour déterminer les performances réelles.


En ce qui concerne les différences, Truecrypt utilise FUSE pour implémenter un système de fichiers en espace utilisateur, alors que LUKS se fait généralement dans le noyau réel. Pour cette raison, il est probable que vous obtiendrez un meilleur débit dans un système Linux utilisant LUKS / dm-crypt / cryptsetup par opposition à Truecrypt, bien que l'option que vous choisissez dépende des exigences de votre cryptage (par exemple, les partitions Truecrypt peuvent être transférées entre les systèmes d'exploitation). systèmes si nécessaire).

Percée
la source
Étrange: j'ai essayé directement dans mon système et, fondamentalement, tout est exclu serpentce qui est devenu beaucoup plus lent. Le problème avec le serpent est donc résolu. Twofishest encore plus rapide que aesdans cryptsetup et plus lente TrueCrypt. Et je n'ai pas du tout d' aesaccélération matérielle ... ce n'est pas une chose VM ...
J'ai mis à jour les résultats.
@Gael cryptsetupsera plus rapide que TrueCryptles mêmes algorithmes de chiffrement étant donné qu'il TrueCrypts'exécute sous FUSE(système de fichiers de l'espace utilisateur), alors qu'il cryptsetuputilise LUKS, qui est un module du noyau. J'ai mentionné la machine virtuelle comme si vous exécutiez d'autres programmes sous votre système d'exploitation hôte (même des tâches d'arrière-plan), cela affecterait les résultats de vos tests de performances.
Percée du
1

Le noyau Linux dispose de modules Serpent optimisés SSE2 et AVX pour accélérer les charges de travail parallélisables (telles que le décryptage CBC et XTS enc & dec).

Les performances de Serpent dans le décryptage CBC et XTS avec ces modules chargés devraient être presque au même niveau que les logiciels AES et Twofish (légèrement plus rapides ou plus lents selon votre modèle de processeur exact).

user215314
la source
0

Notez également que le code SSE2 exécuté par le noyau invité dans certaines machines virtuelles est beaucoup plus lent que sur le noyau hôte. J'ai vécu cela avec Oracle VirtualBox. Ainsi, les résultats de Serpent sur VM ne sont pas nécessairement en corrélation avec les performances attendues sur l'hôte réel.

user215314
la source