Truecrypt gère (enfin) les instruction AES-NI des processeurs INTEL. Mais qu’est ce donc que cela ? Mais si, je vous en parlais au début de l’année, les nouveaux processeur INTEL Core i5 et i7 sont pourvus de 6 instruction d’accélération matériel pour l’AES. Avec une augmentation des performances de x4 à x8 annoncé, je me devais d’écrire quelque dessus. Mais avant de parler de l’accélération matériel petit points sur les nouveautés de Truecrypt 7:
- /!\ Support de l’AES-NI /!\.
- Montage automatique de Volume (Favoris) uniquement pour Windows.
- Taille des secteurs variables en fonctions du besoin pour les conteneurs de partition. Ce qui est très intéressant pour les possesseurs de nouveaux disque a très haute capacité ayant des secteurs plus gros que 512 octets ainsi que certains SSD.
- Remplacement de l’API maison de gestion des fichiers d’hibernation par l’API de Microsoft pour Vista et supérieur.
La technique :
Maintenant que le tours des nouveautés est fait, je vais me concentrer sur l’accélération matériel de l’AES. Commençons par un rappel des nouvelles instructions. Outre les instructions liés à l’AES, Intel à ajouté une nouvelle instruction supportant le Carry-Less Multiplication (CLMUL) qui permet d’améliorer les performances des applications utilisant les algorithme de chiffrement par bloc. Nommé PCLMULQDQ ces instruction vont permettre d’optimiser le calcul de formule lié à la théorie des cors finie de ce bon vieux Evariste Gallois très utilisé en cryptographie (cocorico).
Ces équations étant utilisés dans des modes d’opération par exemple par :
- OpenSSL à travers son implémentation de l’AES-GCM
- Truecrypt et son implémentation du XTS-AES.
Alors penchons nous sur le détail de l’implémentation de l’AES-NI d’Intel dans cette nouvelle version de Truecrypt.
Sur ces 6 nouvelles instruction, il y en 4 pour l’AES et 2 pour la gestion des clés de chiffrement.
Les 4 AES sont :
- AESENC (AES round encryption)
- AESENCLAST (AES last round encryption)
- AESDEC (AES round decryption)
- AESDECLAST (AES last round decryption)
Les 2 pour la gestion des clés sont :
- AESIMC
- AESKEYGENASSIST
Les développeurs de Truecrypt 7 ont pris le partis de n’utiliser que les 4 instructions qui gère les tours de l’AES : AESENC, AESENCLAST, AESDEC,et AESDECLAST. Ces dernières permettent de générer les transformation AES : ShiftRows, SubBytes, MixColumns, InvShiftRows, InvSubBytes, InvMixColumns, et AddRoundKey.
Au 19 Juillet 2010 voici la liste des processeurs supportant l’accélération matériel :
|
|
|
|
|
Si votre processeur est compatible, vous n’avez rien a faire truecrypt le détecte tout seul et le paramètre pour utiliser le AES-NI. Pour avoir plus d’infos sur la gestion, aller dans Settings > Performance et verifier que ‘Processor (CPU) in this computer provides hardware acceleration for AES‘ est coché.
Si vous ne voulez pas de l’accélération AES-NI et que vous voulez garder un système de chiffrement entièrement Open-source aller dans Settings > Performance et désactivé l’option ‘Accelerate AES encryption/decryption by using the AES instructions of the processor‘.
Les performances :
Bon aller parlons performance. Les premiers résultat avec un i5-650 sous fedora 13 sont de l’ordre de x7… oui,oui, 7 fois plus performant soit une augmentation de prés de 700% des performances brut ! Passant de 287 Mo/s à 2 Go/s ! Awesome.
Et dans le cas de la combinaison de TC avec un autre algorithme (cascade de chiffrement) les performances sont augmentés de 80%. Passant pour de l’AES-Twofish de 150Mo/sec à 270Mo.
Ce sont des performances incroyable. On dépasse la limite de bande passante de la plus part des disques !
Voici les premiers bench venant de H-online. Un core i5-650 avec AES-NI désactivé Fedora 13 :
Un Core i5 avec AES-NI activé TC7 Fedora 13:
Merci à H-Online pour le bench.
AWESOME ! Je vous l’avais dit 😉
Update : Voici d’autre benchmark de Truecrypt 7 sur un i7-620M. 1,7 Go/sec avec l’AES-NI activé alors que Truecrypt ne faisait que 287 mo/sec avec le même processeur en version 6. Cela confirme bien les premiers test, mais cette fois ci sur un processeur mobile !
Un Core i7-620M avec AES-NI :
Le même Core i7-620M mais cette fois si avec Truecrypt 6 (sans AES-NI donc) :
Merci à Rob47 pour ce bench.
Plus d’information ici pour l’accelération matériel de Truecrypt.
Si parmi vous certain ont des i5 ou i7 compatible, envoyez moi par email vos screenshot avec le type d’os et le type de processeur. Je les posterai ici.
Je viens d’acheter le nouveau I5 760, il n’est même pas dans la liste…
Ce n’est pas parce qu’il n’est pas dans la liste qu’il ne faut pas tester 🙂
Et concrètement comme je vois s’il prend en charge le chiffrement ou non ?
Tu va dans Settings > Performance et regarde le champ labeled ‘Processor (CPU) in this computer provides hardware acceleration for AES’. Si c’est pas coché, ben c’est pas pris en charge.
Je vous l’*avais* dit.
@Kasi
Tu trouveras si c’est supporté dans :
Truecrypt -> Preferences -> More settings -> Performances -> Hardware acceleration (Yes/No)
ou directement en bas de la fenêtre (Hardware accelerated AES):
Truecrypt -> Tools -> Benchmark
Pour moi, c’est N/A sur un i5 M430 (bon c’est un portable quand même ça aurait été étonnant
Je viens de mettre à jour l’article en ajoutant un nouveau benchmark de Truecrypt 7 sur un i7-620M. 1,7 Go/sec avec l’AES-NI activé alors que Truecrypt ne faisait que 287 mo/sec avec le même processeur en version 6. Cela confirme bien les premiers test, mais cette fois ci sur un processeur mobile !
L’accélération ne fonctionne pas avec mon Core i5 750