Je suis curieux de savoir comment fonctionne le chiffrement intégral du disque sous Ubuntu. Voici un exemple:
Considérant la chaîne suivante comme tout le contenu du disque:
hello world
Après avoir appliqué une sorte de méthode de cryptage, cela ressemblerait à ceci:
(J'ai utilisé le chiffrement de César avec un décalage de +1 pour cet exemple, par exemple A → B; B → C ...)
ifmmp xpsme
Si j'ai bien compris, lorsque l'ordinateur est éteint, le contenu du lecteur correspond à la chaîne ci-dessus. Mais lorsqu'il est réactivé, Ubuntu a besoin que son contenu soit de nouveau hello world
pour pouvoir démarrer correctement.
Ce que je ne comprends pas vraiment, c’est que, dans le monde réel, le contenu du disque est beaucoup plus complexe et l’algorithme de cryptage plus complexe, et j’ai du mal à chiffrer/décrypter complètement l’ordinateur en quelques secondes (le démarrage ou l’arrêt ne prend pas plus longtemps).
Comment est-ce possible?
Cette page a un aspect amusant Guide des figures autocollantes de la norme AES (Advanced Encryption Standard) qui semble facile à comprendre, même s’il s’agit d’une cinquantaine d’images, par exemple:
et
C’est beaucoup trop de tout dupliquer ici, mais si vous devez avoir une image tout-en-un, c’est celle-ci:
Ou, il y a une explication plus compacte à l'adresse http://www.password-depot.com/know-how/blowfish_and_rijndael.htm
La méthode de cryptage Rijndael est basée sur le remplacement, la modification et l'exécution d'opérations xor sur des octets. La méthode ressemble à ceci:
- À partir de la clé 128 bits, Rijndael génère 10 clés de 128 bits chacune.
- Ces clés sont placées dans des tableaux 4x4.
- Le texte brut est également divisé en tableaux 4x4 (128 bits chacun).
- Chaque élément de texte brut de 128 bits est traité en 10 rounds (10 rounds pour les clés 128 bits, 12 pour 192, 14 pour 256).
- Après le 10ème tour, le code est généré.
- Chaque octet est substitué dans une case S et remplacé par la réciproque sur GF (2 8).
- Ensuite, une matrice modulo-2 au niveau des bits est appliquée, suivie d'une opération XOR avec 63.
- Les lignes des matrices sont triées cycliquement.
- Les colonnes de la multiplication de matrice sont échangées sur GF (2 8).
- Les sous-clés de chaque tour sont soumises à une opération XOR.
Le niveau de sécurité de cette méthode de chiffrement augmente si Rijndael est exécuté plusieurs fois avec différentes sous-clés.
Je pense que cela fonctionne en chiffrant une partition avec LUKS (paramètres par défaut avec AES), puis en plaçant des volumes avec LVM (comme /
, swap), en les déchiffrant et en les montant. au démarrage après avoir entré un mot de passe. Et il existe une partition de démarrage normale (non chiffrée) qui démarre suffisamment pour demander la phrase secrète.
Le guide de l'ordinateur sur le chiffrement intégral du disque avec Ubuntu (Mis à jour le 28 juin 2015) explique comment fonctionne le chiffrement de l'installateur par défaut, et mentionne que le double démarrage ne fonctionnerait pas (du moins pas en mode hors connexion). the-box), le lecteur doit utiliser MBR pour " si votre ordinateur est équipé de UEFI, la distribution sera installée en mode BIOS hérité de sorte que vous ne pouvez pas utiliser Secure Boot " et " vous donne également une taille de swap égale à celle de votre système RAM (souvent inutile) et vous n'avez pas le choix sur le type de cryptage utilisé. "
Si vous exécutez cryptsetup benchmark
, il exécutera des tests et vous indiquera la vitesse de cryptage, surveillez les lignes aes-xts par défaut (actuellement):
# Algorithm | Key | Encryption | Decryption
aes-xts 256b 150.0 MiB/s 145.0 MiB/s
La vitesse moyenne de lecture du disque dur peut être comprise entre 80 et 160 Mo/s. Vous ne serez donc pas beaucoup plus long qu'une lecture normale. Il est également possible que les secteurs en lecture juste aient déjà été déchiffrés pendant que vous attendez encore la lecture. disque dur pour en savoir plus.
Un SSD pourrait éventuellement être plus rapide, peut-être 200-550 Mo/s, de sorte que vous le remarquerez peut-être. Mais les lectures aléatoires pourraient être plus lentes, et j'ai lu que les vitesses des SSD peuvent ralentir après utilisation (peut-être lorsque le lecteur se remplit complètement et qu'il doit commencer à "effacer" des secteurs?)
Il n'est pas nécessaire de tout décrypter en premier. Le chiffrement (LUKS) fonctionne sur des blocs de données , peut déchiffrer n'importe quel bloc de manière aléatoire et agit comme une couche entre les données chiffrées du lecteur et ce que voit le système de fichiers. .
Lorsque le système de fichiers souhaite voir un bloc de données, LUKS décrypte ce bloc en premier, puis transmet les données décryptées au système de fichiers. Vous attendez d’abord que le lecteur lise le bloc de données (comme si vous n’utilisiez pas de cryptage), et ne disposez que d’un délai supplémentaire pour le décryptage de ce bloc unique (ou de quelques blocs) de données - et si le déchiffrement est plus rapide que le lecteur ne peut lire, le déchiffrement pourrait être terminé avant que le lecteur ne lise le prochain bloc de données.
Donc, tout comme un système de fichiers classique n'a pas besoin de lire le lecteur entier pour lire un fichier, lorsque le cryptage est ajouté, il n'a pas non plus besoin de lire le lecteur entier, et cela ne rend pas les choses comme beaucoup plus lent.
Les données sur le disque dur sont toujours cryptées , il n’ya donc rien à faire à l’arrêt si ce n’est oublier la clé.
Ce sera un peu une simplification, mais je vais essayer de suivre le processus d’accès à un fichier sur un système de fichiers chiffré.
Par exemple, supposons qu'au début du système de fichiers crypté, il existe une table de fichiers; Disons que nous voulons lire /foo.bar
. La première chose à faire est donc de lire le début de la partition, de la déchiffrer et de parcourir le fichier que vous voulez. Disons que le fichier commence à 0x10000000 octets. Donc, pour lire, nous commençons à lire le disque à cet emplacement et à le déchiffrer; De même, pour écrire, nous pouvons chiffrer les nouveaux contenus et les écrire à ce nouvel emplacement.
Espérons que cela aide à dissiper toute confusion sur le processus.
Le processeur utilise un jeu d'instructions dédié. C'est possible grâce à cela, AES-NI . Il permet un cryptage et un décryptage rapides ou vous pouvez dire que cela réduit les frais généraux. C'est rapide parce que c'est une implémentation matérielle, comme expliqué ici .
Vous pouvez vérifier les impacts sur les performances ici et ils en valent la peine pour plus de sécurité.
Les ordinateurs modernes peuvent effectuer des milliards d'opérations par seconde. Cela ne me surprend donc pas que le cryptage et le décryptage soient rapides.
Voici comment je classerais intuitivement la vitesse à laquelle les ordinateurs font les choses:
L’autre élément clé à comprendre est que l’opérateur n’a pas besoin de déchiffrer l’ensemble du disque dur pour démarrer le système. Au lieu de cela, le système d'exploitation ne sait déchiffrer que les parties du disque dur dont il a besoin à la volée, et il en va de même pour l'écriture.
Donc, intuitivement, je ne suis pas surpris que le chiffrement intégral du disque n'ait pas beaucoup d'impact sur les performances, car j'imagine que le goulot d'étranglement est le disque.
Bien sûr, ces intuitions ne correspondent pas toujours à la réalité. Par exemple, en réalité, il y a eu des cas où le chiffrement de disque complet a eu un impact notable sur les performances. Mais en général, ces problèmes sont résolus après que les développeurs ont effectué plusieurs optimisations de développement.