Hash grub différent (algo PBKDF2)

pour un même mot de passe

Le problème exposé dans ce sujet a été résolu.

Bonjour,

J’ai voulu sécuriser le Grub avec un mot de passe au démarrage, stocké en hash (algorithme PBKDF2) dans un fichier de configuration. Pour cela, j’utilise la commande grub-mkpasswd-pbkdf2 et je mets le mot de passe 1234 (pour l’exemple :D ).

j’obtiens donc un hash.

Et juste par curiosité, j’ai voulu refaire la commande avec exactement le même mot de passe et j’obtiens un hash complètement différent!

Alors je ne m’y connais pas très bien en cryptographie, mais je pensais que pour un même mot de passe le hash devait être similaire auquel cas on ne pouvait pas les comparer… Est-ce que vous auriez une explication à ça ?

merci d’avance !

En fait, tout est écrit dans le nom de la commande ^^

PBKDF2

C’est une fonction de dérivation de clés. C’est typiquement pour ralentir le processus de génération d’un hash.

Et donc effectivement, il y a bien un hash qui est généré aléatoirement. Tu peux le désactiver avec -s 0.

$ grub-mkpasswd-pbkdf2 -s 0
grub.pbkdf2.sha512.10000..3E99BAA98B35D1AD0D32CA79CEF23A3354F2E2D3568279079F88B20A2AE7A884189FB0B8D61D30AE7C54B52A2820A174D9C36317B13A595C8FE0A9F80929EC7F

Au début, on a grub.pbkdf2 donc la fonction de dérivation de clé. La fonction de hashage, le nombre d’itération, le sel (vide ici) puis enfin le hash.

+0 -0

Salut,

Cette commande utilise effectivement un sel pour le hash.

La documentation mentionne qu’il est possible de paramétrer la longueur du sel.

On retrouve également dans le code source1 la génération du sel à partir de données aléatoires, qui est ensuite utilisé pour hasher le mot de passe quelques lignes plus loin.

Édit. : un peu grillé, mais tant pis. ^^


  1. Pas forcément exactement la même version que la tienne, mais c’est sûrement quasi-identique quoi qu’il en soit.

@RDTL: Je pense que tu n’as pas compris ce qu’est le sel ni sont but.

Le sel, c’est un nombre aléatoire (quelques octets). Que tu ajoutes au mdp avant de le hasher. Dans la sortie de grub-mkpasswd-pbkdf2, il y a toute une partie qui n’est pas le hash et qui indique simplement comment est générer le bon hash.

grub.pbkdf2.sha512.10000.4B12
Le début du résultat de grub-mkpasswd-pbkdf2

Ici, tu as toutes les informations nécessaires pour à partir d’un mot de passe, générer le même hash. Notamment le sel ("\x4B\x12").

Par exemple si le mdp est "1234", le sel pourrait être "4B12" (en hexadecimal).

Ce qui sera hasher sera : "1234\x4B\x12", la fonction de hashage ici est SHA512. Le résultat de la fonction de hashage sera par exemple : 08ee930e177b84c0d7e0fe19bcc096821d4d48a3021da869d678d319f91030e3ec8905d0ffe3abc5b74f00823627a0ccc0ff0a2b3bcf150fe2e504139cfbcf6c (hexadecimal encore).

Cette valeur sera hasher encore et encore le nombre de fois qu’il faut (le nombre d’itérations spécifié). Ici, c’est 1000 fois. Le but étant que ça prenne du temps.

Donc maintenant supposons que tu entres ton mdp. Grub va prendre ton mdp, lui ajouter le sel, hasher le tout le nombre de fois qu’il faut. Et si le résultat est égale à ce qui est stocker alors c’est que tu as tapé le bon mot de passe.

L’idée du sel, c’est que un attaquant ne peut pas créer un base de mot de passe pré-hashé. Par exemple, je pers une journée à hasher tous les mots de passe courants type : "ILoveYou" et "c00kies". Pour cela, j’utilise SHA512 avec 1000 itérations.

Quand je voudrais essayer de casser le mdp de ce hash, cette table ne me servira à rien ! Car même si c’est un mdp courant il y a un hash ajouter avant de hasher.

Une solution serait de hasher tous les mots de passe courants avec tous les sels possibles. Sauf que ça va augmenter la taille de ma table de mot de passe pré-hasher. Si le sel fait 1bit, alors ça double la taille de ma table. Par défaut le sel de grub fait 1024bits. Donc la taille de ma table de mot de passe pré-hasher sera multipliée par 210242^1024, ce qui est totalement au delà du nombre d’atomes dans l’univers.

Une table de mot de passe pré-hasher s’appelle une rainbow table. Le sel sert précisément à empêcher l’usage de ce type de table.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte