web-dev-qa-db-fra.com

Options recommandées pour LUKS (cryptsetup)

Je recherche des options recommandées pour cryptsetup pour créer un SSD entièrement crypté (SanDisk SSD U100 128GB), Qui permettent:

Timing O_DIRECT disk reads: 1476 MB in  3.00 seconds = 491.81 MB/sec
Timing buffered disk reads: 1420 MB in  3.00 seconds = 473.01 MB/sec

Mon benchmark me montre le meilleur chiffre:

# cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1       103696 iterations per second
PBKDF2-sha256      59904 iterations per second
PBKDF2-sha512      38235 iterations per second
PBKDF2-ripemd160   85111 iterations per second
PBKDF2-whirlpool   47216 iterations per second
#  Algorithm | Key |  Encryption |  Decryption
     aes-cbc   128b   133.2 MiB/s   432.0 MiB/s
 serpent-cbc   128b    18.1 MiB/s    67.3 MiB/s
 twofish-cbc   128b    39.3 MiB/s    73.0 MiB/s
     aes-cbc   256b    99.6 MiB/s   337.7 MiB/s
 serpent-cbc   256b    18.1 MiB/s    66.9 MiB/s
 twofish-cbc   256b    39.4 MiB/s    72.6 MiB/s
     aes-xts   256b   376.6 MiB/s   375.0 MiB/s
 serpent-xts   256b    69.0 MiB/s    66.5 MiB/s
 twofish-xts   256b    71.1 MiB/s    72.2 MiB/s
     aes-xts   512b   297.0 MiB/s   300.1 MiB/s
 serpent-xts   512b    69.6 MiB/s    66.6 MiB/s
 twofish-xts   512b    71.9 MiB/s    72.7 MiB/s

Mais peut-être pourriez-vous suggérer des options qui augmenteraient mes performances et ma sécurité. Mon CPU est: Intel(R) Core(TM) i7-2677M CPU @ 1.80GHz et il supporte AES-NI (aes drapeau cpu).

Je vous remercie

27
Artur Szymczak

Vous voudrez peut-être utiliser PBKDF2 avec SHA-512. Cette étape sert à convertir votre mot de passe en une clé de chiffrement (plus ou moins directement). Ceci est intrinsèquement ouvert à attaques par dictionnaire hors ligne , et se rapporte à la problématique hachage de mot de passe . Pour cela, vous voulez maximiser l'effort de l'attaquant en choisissant un algorithme et un nombre d'itérations qui rendront la tâche la plus difficile pour l'attaquant tout en la gardant tolérable pour vous; "tolérable" dépend ici de votre patience lorsque vous tapez le mot de passe au démarrage.

Les attaquants voudront utiliser certains GPU et/ou FPGA pour accélérer leur attaque , pendant que vous utilisez un PC normal. De nos jours, les PC normaux sont à l'aise avec les opérations arithmétiques 64 bits et exécutent SHA-512 à peu près aussi vite que SHA-256; cependant, le GPU préfère de loin les opérations 32 bits, et leur mappage sur FPGA est également plus facile que les opérations 64 bits. Par conséquent, en utilisant SHA-512 au lieu de SHA-256, vous donnez moins d'avantage à l'attaquant. D'où ma recommandation: sur le matériel moderne, pour le hachage de mot de passe, préférez SHA-512 à SHA-256.

N'oubliez pas d'ajuster le "nombre d'itérations" afin que le temps nécessaire au traitement de votre mot de passe soit au seuil du supportable: un nombre d'itérations plus élevé signifie un temps de traitement plus long, mais est proportionnellement meilleur pour la sécurité.


Pour le chiffrement réel, vous aurez besoin de XTS , qui a été conçu pour prendre en charge le chiffrement du disque efficacement. Cela se voit en effet dans les repères; c'est pour un SSD et vous ne voulez pas que le cryptage soit beaucoup plus lent que le matériel sous-jacent. Notez que XTS divise la clé en deux moitiés, dont une seule est utilisée pour le chiffrement réel. En d'autres termes, "aes-xts "avec une clé de 256 bits utilise en fait 128 bits pour la partie AES. Et c'est assez bien . Il n'y a aucun besoin rationnel d'aller à des clés de 256 bits - c'est-à-dire 512 bits dans le contexte de "aes-xts ". Les clés 256 bits pour AES impliquent une surcharge du processeur, ce que les tests de référence observent dûment (300 Mo/s contre 375 Mo/s). Avec un SSD sous le capot, vous voulez vraiment un système de cryptage rapide, alors faites-le .

30
Thomas Pornin

Toute combinaison des modes de fonctionnement ci-dessus vous fournira une sécurité suffisante contre la plupart des menaces. Cela dit, CBC n'est plus recommandé en raison de certaines attaques de fuite d'informations. Et SHA1 est amorti au profit de SHA2 famille.

Comme toujours avec la cryptographie, respectez ce qui est largement utilisé et éprouvé. Ma recommandation générale serait donc: PBKDF2-sha256 aes-xts

7
lynks