Disons que j'ai un volume crypté sous Lduks avec une clé 512 bits. Cela signifierait qu'il y a 2 ^ 512
valeurs possibles que la clé peut être.
Maintenant, j'ai besoin d'une phrase secrète qui est au moins aussi résistante à la force brute que la clé de cryptage de 512 bits de 512 bits. Corrigez-moi si mes hypothèses ci-dessous sont fausses, toutes les valeurs numériques sont utilisées pour un exemple mathématique uniquement:
Disons que ma phrase secrète est générée par la base64 codant de l'entrée aléatoire et donc le clavier pour ma phrase secrète est 64
personnages. Ainsi, pour que ma passhrase soit au moins aussi forte que la clé de cryptage de volume, il doit être au moins 2 ^ 512
Combinaisons possibles dans la longueur de la phrase secrète. Cela peut être exprimé comme:
(size_of_keyspace) ^ number_of_characters >= 2 ^ (size_of_key)
Donc, pour cet exemple de taille de la clé de volume de 512
et une touche de phrase secrète de 64
Ensuite, le nombre minimum de caractères mon phrase secrète doit être pour être au moins aussi sécurisé que la clé de volume serait 86
.
Cette logique est-elle correcte ou y a-t-il des inconvénients que je devrais être au courant? Toute autre recommandation qui peut être offerte dans le cadre de cette question?
Mon raisonnement est qu'il n'existe aucun avantage inhérent à avoir une phrase secrète qui est plus forte que la clé de charge utile elle-même - une personne brute forçante mon lecteur est en train d'essayer de craquer ma clé de cryptage, pas de ma phrase secrète. Si ma phrase secrète est plus forte que la clé de cryptage, un attaquant peut brute la force de cryptage plus rapidement que celle de la phrase secrète. Est-ce correct ou existe-t-il des avantages pour avoir une phrase secrète qui est plus forte que la clé de cryptage, peut-être comme un drain de ressources pour un attaquant qui ne diversifie pas assez bien leurs méthodes?
Dans le contexte de la sécurité, tout est un compromis. Plus sur cela dans une seconde ....
Quelles sont les options d'attaque pour briser votre volume crypté? Ils sont, fondamentalement:
Recherche de force brute de la clé de clavier pour la clé utilisée par la primitive de cryptage symétrique.
Brute force la phrase secrète en essayant tous les mots de passe possibles en utilisant les paramètres de dérivation de sel et de clés spécifiques de votre volume.
Mauvaise femme de ménage, tuyau en caoutchouc, enregistreur de clé ou autre moyen "non crypto" de sécuriser votre Keymat.
Vous devriez vous inquiéter du numéro 3. Parce que c'est le vecteur d'attaque évident.
Personne ne va réussir en brute forçant la clé utilisée pour la primitive de cryptage de bloc.
À partir d'une perspective de sécurité de base, je reste convaincu que même les touches de 128 bits sont entièrement sécurisées si la mise en œuvre n'est pas brisée. Une recherche de force brute dans ce cas doit épargner la moitié moyenne d'un espace clé de 340 282 366 920 938 463 463,374 663 463,768,607 431 768,211,456 possibilités.
Pour une primitive à clé 256 bits, vous parlez de 115 792 089 237 316 195 423 570 985,008 687 907 853 269 984 665 640 564,665 640 564,007 913, 584,007 913 129 639 936 possibilités.
Donc, même avec 256 bits de sécurité clé, vous atteignez déjà des chiffres qui abordent le nombre d'atomes dans l'univers connu.
C'est donc dehors.
Ce que vous êtes inquiet, c'est que quelqu'un essaie toutes les phrases de passe possible.
Maintenant, rappelez-vous que LUKS utilise du sel + PBKDF2 pour étirer votre phrase de passe à la taille de l'espace clé. Ce que cela signifie que même un mot de passe de "A" peut mapper n'importe quel endroit possible dans l'ensemble de l'espace clé. Les attaquants ne vont donc pas avoir une table arc-en-ciel qui aidera ici.
S'ils vont à la force brute la phrase de la passe, ils auront essayer toutes les entrées possibles, en cours d'exécution à la fonction de dérivation de clé avec les paramètres utilisés sur votre volume (sel et itérations). Cela prend du temps. Et, si la mémoire sert, LUKS définit en fait les itérations pour prendre une durée spécifique par "Essayer".
Cela signifie que vous avez simplement besoin d'une longueur de phrase passe qui a suffisamment d'entropie pour le rendre irréalisable pour un attaquant d'essayer un nombre suffisant de phrases possibles pour localiser votre phrase. L'attaquant peut bien sûr utiliser GPU ou spécialisé ASIC Hardware pour accélérer ce processus (c'est pourquoi les gens expérimentaient des choses comme Scrypt pour rendre cela plus difficile), mais vous serez plus que protégé avec 20 à 30 caractères contenant des symboles minuscules, majuscules, des nombres et des claviers (y compris des symboles des numéros décalés et d'autres symboles sur le clavier).
Cela me ramène à mon commentaire initial. Il est important de garder à l'esprit les échanges. Vous pouvez essayer de trouver une phrase de passe équivalant à la difficulté de votre espace clé 512 bits, mais cela aura une incidence sur votre comportement. Vous vous retrouverez peut-être ne pas démonter/vous déconnecter lorsque vous vous levez pour obtenir une tasse de café parce que c'est une telle douleur pour obtenir cette phrase passée à droite lorsque son temps de se connecter. Vous pourriez stocker la phrase à long terme sur un téléphone ou une pièce de papier. Si vous stockez dans un gestionnaire de mots de passe, vous serez limité par la sécurité du gestionnaire de mots de passe et non la sécurité de la longueur de votre phrase de passe.
Pendant ce temps, une fois qu'un attaquant doit essayer de 20 à 30 caractères de phrase de passe utilisant 93 caractères possibles, l'attaquant est confronté à (efficacement) de 95 à 150 bits d'entropie qui la met en dehors de la gamme raisonnable de la force brute.
Et tout cela ramène à cette troisième possibilité d'entrer dans votre volume. Par rapport à la brute forçant la clé de la primitive de cryptage ou d'essayer toutes les phrases de passe possibles, le troisième scénario "compromis" est vraiment ce que vous devriez vous inquiéter. Un attaquant qui vous permet de pointer un navigateur Web compromis à une exploitement qui donne des privilèges escaladés sur votre système d'exécution peut numériser la mémoire de votre mot de passe. Un attaquant qui obtient un rootkit sur votre système peut faire de même. Si vous branchez un périphérique USB ou FireWire compromis, vous compromettez potentiellement la sécurité. Et ce sont tous beaucoup plus facilement pour l'attaquant que la brute forçant le clavier ou l'espace de phrase passez.
En pratique, un attaquant tentera d'attaquer votre phrase secrète avant votre clé. Dans certains cas, il est beaucoup plus difficile d'attaquer la clé réelle. N'oubliez pas que pour la phrase secrète et la clé, il est important d'avoir des politiques de verrouillage.
En réalité, sur un système avec une bonne politique de lock-out, les attaquants contre des phrases de 3-12 caractères de haute qualité sont irréalistes. 86 caractères de haute qualité phrase de passe seraient très difficiles à battre. Si j'étais un attaquant, je trouverais simplement une autre façon. Je pense qu'une phrase secrète de 20 caractères serait plus que suffisante à vos besoins.
Donc, pour répondre à votre question, je dirais que vous ne devriez pas vous inquiéter de savoir si votre longueur de mot de passe pourrait attirer des utilisateurs malveillants vers une fissuration directe de la clé. Je m'assurerais plutôt qu'il y ait un lock-out approprié et que les politiques limitatives de tarifs afin que les attaques de la force brute soient essentiellement impossibles en premier lieu.
Il est facile de manquer la forêt pour les arbres ici. N'allez pas à tous les problèmes avec les mots de passe, ce qui les pensait, lorsque vous n'avez pas fait la recherche pour vous assurer qu'il n'y avait pas déjà de contournement d'authentification pour un logiciel obsolète que vous utilisez. Essayez de voir toute la sécurité. Recherchez votre plate-forme logicielle et assurez-vous qu'il n'y a pas de trous de sécurité plus graves - ce sera la cible suivante une fois que l'attaquant réalise que votre mot de passe n'est pas "mot de passe".