web-dev-qa-db-fra.com

La méthode de Keeps est-elle sécurisée?

Je connais la manière dont les principales fonctions de dérivation peuvent être utilisées pour ralentir les attaques de force brute contre des mots de passe en nécessitant des ressources de calcul et/ou de mémoire importantes pour calculer la clé finale.

Les KDF communs dont je suis au courant sont BCRYPT, PBKDF2 et SCRYPT, mais Keepass semble utiliser un algorithme totalement différent que je ne connais pas. Selon - Centre d'aide de Keepsass :

Pour générer la touche FINALE 256 bits utilisée pour le chiffrement de bloc, Keepass a d'abord atteint le mot de passe de l'utilisateur à l'aide de SHA-256, chiffre le résultat N fois à l'aide de l'algorithme de la norme de cryptage avancée (appelée des tours de transformation de la clé à partir de maintenant) , puis hachait à nouveau à l'aide de SHA-256. Pour AES, une clé aléatoire de 256 bits est utilisée, qui est stockée dans le fichier de base de données.

[...]

Par défaut, Keepass sets à 6000 tours de cryptage (les cryptage complets sont conçus; n n'a rien à voir avec les tours de cryptage internes d'AES). Ce numéro a été choisi afin de fournir une compatibilité avec les versions de périphériques portables (les processeurs PocketPC sont plus lents. Par conséquent, le calcul de clé prend plus de temps).

Cette utilisation d'AES est-elle en sécurité KDF? Y a-t-il des défauts graves avec cette approche? 6000 itérations sont-elles suffisantes pour ralentir considérablement un attaquant déterminé?

Cette ligne sur "PocketPC processeurs" est un peu concernant, car cela m'implique que cette décision sur ce que KDF à utiliser a été faite il y a assez de temps, avant que les téléphones avec des transformateurs plus puissants n'existaient (et, par extension, à un moment où le bureau Les transformateurs n'étaient pas aussi puissants).

13
Ajedi32

Basé sur un tweet 2014 de Malik Mesellem , qui a créé un logiciel de craquage KeySak KeySass KeCharack, il obtenait un peu plus de 1 000 mots de passe devine une seconde avec son outil sur une CPU Intel I7.

Dans une réponse à - cette question similaire À propos de la conservation des essences de retenue de retour en 2011, Tom Leech discute de la possibilité de 32 000 suppositions de mot de passe par seconde avec un processeur quad core. Cela peut avoir été une meilleure estimation des cas qui est encore dégradé en raison d'inefficacités dans le logiciel de fissuration qui gère ces opérations AES, comme nous voyons avec la figure Keecracker.

L'une ou l'autre estimation est assez lente jusqu'à la fissuration du mot de passe, où vous voyez régulièrement des centaines de millions de millions ou de milliards de haubans par seconde sur un seul processeur avec un mauvais choix d'algorithmes comme MD5. La mise en œuvre de Keepass est un peu plus rapide qu'une mise en œuvre moderne "typique" de BCRYPT ou SCRYPT, mais probablement pas à tant que vous les considéreriez dans une classe complète.

Je ne suis au courant d'aucune critique de leur choix d'algorithmes ni de mise en œuvre, et je ne suis pas vraiment qualifié pour les évaluer moi-même, mais il semble que cela ne soit pas considéré comme un mauvais choix. Je pense qu'il est juste de se demander si 6000 tours sont suffisants si vous souhaitez une archive de mot de passe "future épreuve", mais il ne semble pas que cela soit nécessairement un nombre irresponsable à utiliser aujourd'hui.

Donc, la plus grande préoccupation des utilisateurs de Keepass devrait choisir une passion par passe principale (par exemple. Pas de mot de passe) qui va résister à des tentatives de craquage plus simples. N'utilisez pas de phrases connues, ne faites pas trop court, ne le rendez pas prévisible en fonction de la connaissance personnelle de quelqu'un de vous, etc. Si vous évitez correctement ces choses, il devient peu probable que votre phrase secrète soit découverte via le dictionnaire, hybride ou des attaques de craquage de force brute.

11
PwdRsch

En ce qui concerne votre dernière question: vous avez raison de vous préoccuper de la compatibilité avec les processeurs PocketPC, comme 6000 tours est un réglage non sécurisé . Vous devez définir cette valeur d'environ 5000000 environ. L'inconvénient est que le cryptage/décryptage des archives de mots de passe prend plus de temps, vous devriez donc essayer de trouver la valeur la plus élevée qui provoque un retard que vous êtes à l'aise.

5
dr_