Question:
Quelles sont les différences entre MD5, SHA et RSA?
Kars
2011-02-25 20:46:15 UTC
view on stackexchange narkive permalink

Les outils MD5 produisent des valeurs hexadécimales. De la même manière, SHA et RSA produisent-ils ensemble une sortie hexadécimale (ou toute autre)?

Quelles sont les différences entre les algorithmes MD5, SHA et RSA?

Hex est juste la manière conventionnelle d'afficher les résultats de ces algorithmes. Ils peuvent tout aussi bien être affichés en binaire ou en décimal.
Deux réponses:
#1
+58
bethlakshmi
2011-02-25 21:13:04 UTC
view on stackexchange narkive permalink

Ce n'est pas le type de sortie. Hex est juste la façon dont les données sont formatées - puisqu'elles travaillent toutes sur des données binaires, hex a beaucoup de sens.

La partie importante est ce qu'ils font et comment ils le font:

  • MD5 et SHA sont des fonctions de hachage (SHA est en fait une famille de fonctions de hachage) - ils prennent un élément de données, le compactent et créent une sortie convenablement unique qui est très difficile à émuler avec une autre donnée. Ils ne crypteront rien - vous ne pouvez pas prendre la sortie MD5 ou SHA et la "déhacher" pour revenir à votre point de départ. La différence entre les deux réside dans l'algorithme qu'ils utilisent pour créer le hachage. Notez également que MD5 est maintenant cassé car un moyen a été découvert pour générer facilement des collisions et ne devrait plus être utilisé ni fiable.

  • RSA est un algorithme de chiffrement asymétrique. Vous avez deux clés (privée et publique) et vous pouvez exécuter une fonction avec une clé (chiffrer ou déchiffrer) et inverser avec l'autre clé. La clé que vous utilisez dépend de si vous essayez de faire une signature numérique ou un cryptage.

Le RSA n'est-il pas aussi un algorithme de signature?
#2
+35
Thomas Pornin
2013-02-03 21:55:03 UTC
view on stackexchange narkive permalink

MD5 est une fonction de hachage cryptographique . "SHA" est le nom d'une famille de fonctions de hachage; d'abord un "SHA" éphémère qui a été renommé "SHA-0", puis "SHA-1" a été défini (un best-seller). Plus tard, de nouveaux membres de la famille ont été ajoutés, désignés collectivement sous le nom de "SHA-2" et consistant en SHA-224, SHA-256, SHA-384 et SHA-512. Récemment, une nouvelle génération SHA a été conçue, appelée "SHA-3" mais aussi "Keccak" (il s'agissait d'un concours ouvert, Keccak étant le nom de code d'un des candidats, qui a finalement gagné).

A La fonction de hachage cryptographique est une fonction déterministe entièrement définie qui n'utilise aucune clé secrète. Il prend en entrée un message de longueur arbitraire (un flux de bits, n'importe quel bits) et produit une sortie de taille fixe. La taille de sortie dépend de la fonction; c'est 128 bits pour MD5, 160 bits pour SHA-1, 256 bits pour SHA-256 ... Tout le monde peut calculer une fonction de hachage donnée sur une entrée donnée, et ils obtiennent tous les mêmes résultats. Les fonctions de hachage sont également appelées résumés car elles produisent en quelque sorte une sorte de "somme de contrôle" ou de "résumé" de l'entrée. Les fonctions de hachage robustes doivent être telles que personne ne sache comment les «inverser» ou même trouver deux entrées distinctes qui donnent la même sortie. Ce dernier est appelé une collision et c'est une nécessité mathématique que les collisions existent (puisque la fonction peut accepter beaucoup plus d'entrées distinctes qu'elle ne peut produire des sorties distinctes), mais nous exigeons qu'il soit impossible de trouver même une collision.

MD5 s'est avéré très cassé en ce qui concerne les collisions (on peut produire une collision en quelques secondes de travail sur un PC) et SHA-0 l'est aussi brisé à cet égard; SHA-1 est un peu floconneux; le reste de la famille SHA semble jusqu'à présent robuste. Comment une fonction de hachage atteint la résistance aux collisions est un peu un miracle puisque la fonction entière est complètement connue, sans valeur secrète; il mélange trop les données pour que les meilleurs cryptographes puissent démêler le processus.

RSA est composé de deux algorithmes: un algorithme de chiffrement asymétrique et un algorithme de signature numérique . Bien que les deux algorithmes reposent sur le même type de mathématiques, ils sont assez distincts (beaucoup de gens décrivent les signatures comme un «cryptage avec la clé privée», ce qui est une analogie erronée et au mieux déroutante, alors ne faites pas cela). Les deux algorithmes utilisent des clés , c'est-à-dire des éléments de données qui doivent être gardés secrets. Il se trouve que pour les signatures RSA, ce qui est signé n'est pas directement un message donné (une séquence de bits) mais un hash du message: le message est d'abord traité avec une fonction de hachage cryptographique comme SHA- 256, et la valeur de hachage est ensuite utilisée. Ceci est fait de cette façon parce que les mathématiques de RSA ne peuvent gérer que des valeurs de taille moyenne, au mieux quelques centaines de bits. Les fonctions de hachage cryptographique sont telles que signer le hachage équivaut à signer les données d'origine.

De cette façon, RSA et les fonctions de hachage cryptographique sont souvent utilisées ensemble; mais ce n'est pas du tout la même chose.

Hexadécimal est un moyen de représenter une séquence de bits dans une séquence de caractères : hexadécimal utilise des chiffres et des lettres de «A» à «F»; chaque caractère code exactement quatre bits ("0" code "0000", "7" code "0111", "D" code "1101" ...). Toute séquence de bits (et en particulier la sortie d'une fonction de hachage) peut être convertie en hexadécimal et inversement. L'hexadécimal est populaire parce que les yeux et le cerveau humains sont bons pour lire les caractères et non pour lire des bits. Les outils de ligne de commande qui calculent les fonctions de hachage cryptographiques sur les fichiers produisent traditionnellement des caractères hexadécimaux pour cette raison. Cependant, il n'y a rien qui lie intrinsèquement les fonctions de hachage à l'hexadécimal: tout ce qui tient dans un ordinateur d'une manière ou d'une autre est une séquence de bits, et peut donc être hexadécimal; et une sortie de fonction de hachage est juste une séquence de bits, qui peut être encodée de différentes manières, l'hexadécimal étant juste la manière "traditionnelle" (bien que Base64 soit aussi souvent rencontré, en particulier lorsqu'il s'agit de bases de données).



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 2.0 sous laquelle il est distribué.
Loading...