J'utilise un système basé sur Ubuntu, et j'ai du mal à déterminer quels chiffrements et modes de chiffrement sont à ma disposition.
La page de manuel de cryptsetup indique:
"Voir / proc / crypto pour une liste des options disponibles. Vous devrez peut-être charger des modules de chiffrement du noyau supplémentaires pour obtenir plus d'options."
Mon / proc / crypto en contient très peu. Comment savoir quels modules de chiffrement du noyau supplémentaires sont disponibles pour que je puisse les charger?
/lib/modules/*/kernel/crypto/
est un endroit où chercher, mais les modules peuvent être n'importe où sur le système de fichiers./proc/crypto
est génial, mais il ne répertorie pas les chaînes de chiffrement valides; des choses commeaes-xts-plain64
ouaes-cbc-essiv:sha256
. Une bonne réponse fournirait ces informations et montrerait quels modules/lib/modules...
doivent être chargés pour les utiliser./proc/crypto
. Ça n'a pas de sens.Réponses:
Il existe de très nombreux documents et pages de manuel à lire, mais un document qui pourrait vous intéresser particulièrement est la spécification de format sur disque LUKS (PDF).
L'annexe B (qui est, naturellement, près de la fin) dit:
Note de l'éditeur: ce qui précède est copié de la spécification. Suite à sa rédaction, les URL de ces documents ont changé:
la source
Vous pouvez répertorier les chiffres pris en charge par vos noyaux avec la commande suivante,
Vous pouvez répertorier les chiffrements et hachages que vous pouvez utiliser et leur comparaison d'E / S pour
luks
par la commande suivante,Vous pouvez comparer des chiffrements spécifiques à l'aide de la commande suivante,
la source
Le noyau 5.1, actuel au moment où j'écris ceci, a deux formats différents: la chaîne de chiffrement pour, "l'ancien" format et le "nouveau" format. Jusqu'à présent, tout dans cette question, et apparemment tous les documents, traitent de "l'ancien" format, je vais donc le décrire ici. C'est juste pour le cryptage. Si vous utilisez l'intégrité avec dm-crypt, alors il faut considérer les chiffrements AEAD et cela devient encore plus compliqué.
Le format analysé par le noyau est " chiffrement [
:
keycount ]-
Mode-
ivmode [:
ivopts ]". Exemples:aes-xts-plain64
,blowfish-cbc-essiv:sha256
,aes:64-cbc-lmk
.chiffrer Le chiffrement àutilisation,exemples sont
aes
,anubis
,twofish
,arc4
, etc. Le noyau pilote dm-crypt ne dispose pasune liste de chiffrements. Ceci est transmis à l'API Linux Crypto, donc tout chiffrement approprié pris en charge par le noyau peut être utilisé.keycount Puissance optionnelle de deux nombres de clés à utiliser avec le chiffrement. Cette valeur par défaut est 1 pour tout sauf le mode
lmk
iv, où il est par défaut 64. Cela ne s'applique vraiment qu'à LMK et les valeurs autres que 1 ne fonctionneront pas correctement avec d'autres modes.mode Mode de chaînage de blocs à utiliser avec le chiffrement. Les exemples sont
ecb
,cbc
,xts
. En plus de savoir qu'ilecb
n'utilise pas d'IV, le pilote md-crypt le transmet à l'API Linux Crypto et peut utiliser n'importe quel mode de chaînage pris en charge par le noyau.ivmode L'algorithme utilisé pour générer le vecteur d'initialisation (IV) pour chaque secteur. Dans le chiffrement à clé symétrique typique, contrairement à dm-crypt, l'IV est un autre bit de données transmis au chiffrement avec la clé lors du chiffrement ou du déchiffrement. Il n'y a qu'un seul IV passé pour toute l'opération. Étant donné que dm-crypt doit pouvoir lire et écrire chaque secteur individuellement, il ne crypte pas le disque entier en une seule opération. Au lieu de cela, il y a une IV pour chaque secteur. Plutôt que de transmettre l'IV en tant que données, un algorithme pour créer les IV est spécifié ici. Cela ne fait pas partie de l'API Linux Crypto, car la génération IV n'est pas effectuée par le chiffrement, et lesvaleurs ivmode autoriséessont définies par le pilote dm-crypt. Elles sont:
plain
,plain64
,plain64be
,benbi
Ceux - ci utilisent simplement le numéro du secteur, dans différents formats, comme IV. Conçu pour les modes de bloc comme XTS qui sont conçus pour résister aux attaques comme le filigrane lors de l'utilisation d'un IV simple et prévisible.plain64
semble être le plus recommandé.null
IV est toujours nul. Pour les tests et la compatibilité descendante, vous ne devriez pas utiliser cela.lmk
Compatible avec le schéma de cryptage Loop-AES.tcw
Compatible avec TrueCrypt.essiv
Utilise le numéro de secteur chiffré avec un hachage de la clé. Destiné aux modes, comme CBC, qui ne résistent pas à diverses attaques lors de l'utilisation d'un simple IV commeplain64
.ivopts Le hachage à utiliser avec
essiv
ivmode , ignoré pour tous les autres modes.Dans un cas particulier, « chiffrement
-plain
» ou simplement « chiffrement » sont interprétés comme « chiffrement-cbc-plain
». Un autre cas particulier est que leecb
mode n'a pas de mode iv à spécifier.Comment cela se rapporte
/proc/crypto
En ce qui concerne
/proc/crypto
, seuls le chiffrement et le mode sont pertinents. dm-crypt avec construction d'une spécification API Crypto de la forme " chiffrement de mode " et demande cela au noyau. C'est ce que l'on doit rechercher en tant que pour a . Exemple:(
)
/proc/crypto
name
skcipher
Le
type
ofskcipher
indique qu'il s'agit d'un chiffrement à clé symétrique, de ce que dm-crypt utilise et le nom dexts(aes)
serait écritaes-xts
lorsqu'il est spécifié avec dm-crypt. Leskeysize
champs nous indiquent également quelles tailles de clés peuvent être utilisées avec ce chiffrement.S'il s'agissait d'un module, le nom du module pourrait apparaître dans la
module
ligne. Cependant, de nombreux chiffrements (généralement ceux des logiciels qui n'ont pas de code spécifique au matériel) sont implémentés comme un chiffrement générique qui est combiné avec un code de chaînage de blocs générique pour produire le chiffrement final. Par exemple:Dans ce cas, le chiffrement anubis est combiné avec le code du mode de chaînage de blocs XTS du noyau pour produire le chiffrement final
xts(anbuis)
, auquel un module dekernel
. Mais pour que cela soit disponible, nous avons besoin du chiffrement générique anubis, qui provient duanubis
module. La plupart des chiffrements ont un alias de module de "crypto-
chiffrement " qui peut être utilisé pour les charger, par exemplemodprobe crypto-anubis
, chargerait le module qui fournit le chiffrement anubis.Lorsque vous utilisez la
cryptsetup benchmark
commande, seul le chiffrement et le mode importent, car c'est tout ce qui est comparé. Si le mode n'est pas spécifié, il s'agit par défaut de CBC. Le mode iv est totalement ignoré. Ainsi, pour l' analyse comparative,aes
,aes-cbc
etaes-cbc-foobar
sont tous équivalents.la source