Décrypter un hash hasher

a marqué ce sujet comme résolu.

Bonjour, j’ai essayer sur ce site de crypter le mot hello, sa donne : aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d

Ensuite j’ai encrypter la même chose sa donne : 9cf5caf6c36f5cccde8c73fad8894c958f4983da

J’ai ensuite essayer de re-décryter le tous jusqu’au mot hello mais sa n’arrive pas a décrypter pourquoi ?

alors déjà on dit ça

Sinon tu as lu ce qui est marqué sur le site ?

La seule méthode pour decrypter un hash Sha1 est donc de comparer ce hash à une base de données. Nous vous proposons une base en ligne contenant 3,772,685,868 mots, provenant de tous les dictionnaires trouvés sur internet et de fuites de passwords provenant de grands sites.

Du coup, ça ne marche pas parce qu’ils n’ont pas la combinaison qui fait correspondre 9cf5caf6c36f5cccde8c73fad8894c958f4983da avec aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d

Salut,

Ça ne marche pas pour deux raisons :

  • on ne connait pas d’algorithme qui à partir d’un hash SHA-1 arbitraire retrouve une entrée qui pourrait donner ce hash. Ce genre de site fonctionne avec une immense base de données qui contient des correspondances entre des entrées simples et leur hash (par exemple, le fait que "hello" donne le hash "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d". Comme il y a beaucoup de hash différents possibles, la base de donnée et forcément partielle et ne contiendra pas une entrée pour tous les hash (par exemple, ton second hash n’est pas lié à une entrée possible dans cette base).
  • un algorithme de hash n’est pas un algorithme de chiffrement, plusieurs entrée différentes peuvent donner le même hash (et si on ne limite pas la taille de l’entrée, une infinité d’entrée différentes vont donner le même hash). Il n’existe donc pas une réponse unique à la question "quelle est l’entrée qui donne ce hash". Autrement dit, avec le hash "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d", tu n’as aucune garantie que l’entrée était vraiment "hello". Tout ce que tu sais, c’est que l’entrée "hello" te donnera ce hash en sortie.

Finalement, ce qui importe lorsqu’on utilise un algo de hash pour comparer rapidement des entrées (comme le fait git avec les objets variés qu’il manipule), c’est que des entrées similaires (i.e. prenant leur valeur dans un ensemble d’entrée de taille réduite) donnent des hash très différents. Il est très peu probable que deux codes sources valables différents donnent le même hash SHA-1.

+0 -0

Sa veux dire qu’un ne "crypte" pas, il ne fait qu’associé un mot a un nombre dans sa base de donnée ?

Je suis pas sûr de comprendre la question. Pour aller dans le sens hash -> entrée (obtenir "hello" à partir de aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d), oui, c’est une association dans une base de donnée. Pour aller dans le sens entrée -> hash (obtenir aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d à partir de "hello"), c’est un calcul.

Salut,

Sa veux dire qu’un ne "crypte" pas, il ne fait qu’associé un mot a un nombre dans sa base de donnée ?

thedarimonds11

Pour compléter le message d’adri1 : SHA1 est un algorithme de création d’empreinte, c’est-à-dire, grosso modo, une suite de données qui identifie de manière « unique » une suite de données. Les données originelles sont donc absentes de l’empreinte (c’est assez logique puisque dans le cas de SHA1, tu obtiens une empreinte de 20 bytes et ce, peut importe la taille des données) et ne peuvent pas être obtenues par une opération inverse (à nouveau, c’est cohérent, puisqu’avec seulement l’empreinte, tu n’as plus les données originelles).

La seule solution pour « retrouver » les données est d’employer des tables de correspondances qui, à chaque empreinte, associe la suite de données qui a été utilisée pour la produire (on parle de rainbow table dans la milieu de la cryptanalyse).

Édit : empreinte et pas emprunte. >_<

+0 -0

Salut,

Sa veux dire qu’un ne "crypte" pas, il ne fait qu’associé un mot a un nombre dans sa base de donnée ?

thedarimonds11

Pour compléter le message d’adri1 : SHA1 est un algorithme de création d’emprunte, c’est-à-dire, grosso modo, une suite de données qui identifie de manière « unique » une suite de données. Les données originelles sont donc absentes de l’emprunte (c’est assez logique puisque dans le cas de SHA1, tu obtiens une emprunte de 20 bytes et ce, peut importe la taille des données) et ne peuvent pas être obtenues par une opération inverse (à nouveau, c’est cohérent, puisqu’avec seulement l’emprunte, tu n’as plus les données originelles).

La seule solution pour « retrouver » les données est d’employer des tables de correspondances qui, à chaque emprunte, associe la suite de données qui a été utilisée pour la produire (on parle de rainbow table dans la milieu de la cryptanalyse).

Taurre

Empreinte. Comme les empreintes digitales. Pas comme les emprunts bancaires. C’est plus facile à comprendre si on utilise le bon mot. :)

(Note d’ailleurs qu’empreinte se prononce comme "brin", alors qu’emprunte se prononce comme "brun". Si ça t’aide à retrouver leur orthographe ou leur signification quand tu les entends.

+0 -0

L’idée de départ du hash était d’indexer un fichier/texte, en lui attribuant un numéro, pour pouvoir ensuite le trouver plus facilement/rapidement en interrogeant sa base de données.

Pour un mot de passe, l’idée du hash est de ne pas pouvoir retrouver le mot de passe même si on la fonction de hash du mot de passe sous les yeux (C’est-à-dire si le serveur/la base de données est compromis). Ainsi on ne peut pas retrouver le mot de passe sans brute forcer le hash, c’est-à-dire essayer plein de possibilité (ce que font les rainbow table).

Par contre c’est les "chiffrements" qui peuvent être inversé. Comme le chiffrement RSA et le chiffrement AES offrent la possibilité d’être déchiffrés lorsque l’on possède la clé de décryptage. Lorsque tu utilises une page HTTPS, c’est le chiffrement du RSA qui est utilisé.

Empreinte. Comme les empreintes digitales. Pas comme les emprunts bancaires. C’est plus facile à comprendre si on utilise le bon mot. :)

victor

Arf ! Merci, je corrige. >_<

@A-312 : l’idée première des empreintes est également la vérification d’intégrité (déterminer si la suite de données n’a pas été corrompue durant un transfert par exemple). ;)

+0 -0

@A-312 : l’idée première des empreintes est également la vérification d’intégrité (déterminer si la suite de données n’a pas été corrompue durant un transfert par exemple). ;)

Taurre

Le p2p c’est mal. :lol: En effet, j’ai oublié cette utilisation. Bien qu’au début (et encore actuellement) les clés de contrôle n’étaient pas sous forme d’algorithme hash mais sous forme de simple addition des bits précédents. C’est une belle révolution technique. :)

+0 -0

Le p2p c’est mal. :lol:

A-312

Ça dépend ce que tu transfert avec. ^^

En effet, j’ai oublié cette utilisation. Bien qu’au début (et encore actuellement) les clés de contrôle n’étaient pas sous forme d’algorithme hash mais sous forme de simple addition des bits précédents. C’est une belle révolution technique. :)

A-312

Ben c’est quand même une utilisation importante aujourd’hui puisqu’une signature électronique repose sur un algorithme de création d’empreinte (l’empreinte étant signée avec la clé privée). De même, c’est très utiles lors de téléchargements sensibles (comme une image d’un OS à installer) histoire d’être certain de graver une image correcte. ;)

+0 -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