Question:
Quelle est la différence entre MAC et hash
user1157
2011-01-25 10:01:02 UTC
view on stackexchange narkive permalink

Quelle est la différence entre les deux algorithmes?
Une différence que je connais, c'est que MAC est codé et que le hachage ne l'est pas.

La même question se pose également sur Stackoverflow: [Quelle est la différence entre un hachage et un MAC (code d'authentification de message)?] (Https://stackoverflow.com/questions/2836100/what-is-the-difference-between-a- hash-and-mac-message-authentication-code)
Quatre réponses:
#1
+36
Thomas Pornin
2013-02-09 18:29:26 UTC
view on stackexchange narkive permalink

Une fonction de hachage cryptographique est une fonction de hachage déterministe entièrement publique que tout le monde peut calculer sur des entrées arbitraires. Il prend en entrée une séquence de bits (n'importe quelle séquence de bits; certaines fonctions de hachage sont formellement limitées à des entrées de, disons, moins de 2 64 bits, alias «2 millions de téraoctets») et renvoie des valeurs dans un espace plutôt petit, typiquement une séquence de bits de taille fixe (par exemple toujours 160 bits avec la fonction de hachage standard SHA-1). Les bonnes fonctions de hachage cryptographique respectent certaines conditions qui se résument, de manière informelle, à mélanger les données d'entrée si bien que nous ne pouvons pas le comprendre par la suite.

Un code d'authentification de message est un algorithme qui prend comme entrée un message et une clé secrète et produit une sortie de taille fixe qui peut être ultérieurement vérifiée pour correspondre au message; la vérification nécessite également la même clé secrète. Contrairement aux fonctions de hachage où tout est connu et où les attaquants se battent contre les mathématiques, MAC a du sens dans les modèles où il y a des entités connaissant un secret. Ce que nous attendons d'un bon MAC est impardonnable: il devrait être impossible de calculer une paire message + valeur MAC qui vérifie avec succès avec une clé donnée K sans connaître K exactement et en son intégralité.

Les fonctions de hachage et MAC sont donc des types d'algorithmes distincts avec des propriétés distinctes et utilisés dans des situations vraiment distinctes.

Certains algorithmes MAC (mais certainement pas tous) peuvent être considérés comme des "fonctions de hachage avec une clé", mais c'est une vue restrictive. HMAC est une construction MAC bien connue, qui s'appuie elle-même sur une fonction de hachage sous-jacente de manière intelligente. En effet, les propriétés et modèles de sécurité pour les fonctions de hachage et MAC sont suffisamment distincts les uns des autres pour que gifler une fonction de hachage et une clé ensemble ne donne pas nécessairement un MAC sécurisé, même si la fonction de hachage est sécurisée (voir l'attaque d'extension de longueur qui illustre ce point).

Dans une certaine mesure, nous pouvons affirmer qu'un algorithme MAC qui peut fonctionner en toute sécurité sans IV doit présenter des propriétés de type hachage (c'est la raison pour laquelle j'aime HMAC: sans IV, il est beaucoup plus difficile de se tromper lors de son implémentation). Cependant, le diable est dans les détails.

Comme vous l'avez mentionné, une fonction de hachage peut constituer la base d'un MAC. Les chiffrements par blocs sont l'autre élément constitutif des MAC et sont appelés CBC-MAC. Le chiffrement bloquant utilisé dans ces fonctions peut différer entre les implémentations - DES, AES, etc.
#2
+13
D.W.
2011-01-26 12:03:36 UTC
view on stackexchange narkive permalink

Ce sont deux primitives totalement différentes. Un MAC est utilisé pour l'authentification des messages et est une primitive à clé symétrique. Une fonction de hachage peut être utilisée à de nombreuses fins et n'a pas d'entrée de touche spéciale. MAC est un acronyme de "code d'authentification de message".

Ne soyez pas confus par le fait que certains algorithmes MAC (par exemple, SHA1-HMAC) fonctionnent en utilisant une fonction de hachage comme sous-programme. Ce sont des bêtes très différentes.

  • Quelques exemples d'algorithmes MAC: CMAC, SHA1-HMAC, MD5-HMAC, UMAC, Poly1305-AES.
  • Quelques exemples de cryptographie fonctions de hachage: SHA256, SHA1, MD5.
HMAC est l'un des algorithmes qui nous permet de calculer MAC.
#3
+7
Aleksandr Reznik
2011-01-25 21:30:52 UTC
view on stackexchange narkive permalink

Pour faire simple: généralement, un MAC est une valeur de hachage chiffrée avec une clé secrète.Par exemple, les attaquants peuvent falsifier un message et calculer un nouveau hachage, mais il ne peut pas le faire si le système exige que le hachage soit chiffré avec une clé secrète.

Cette réponse n'est pas exacte. Ce n'est pas une façon utile de penser à un MAC, ni généralement la façon dont un algorithme MAC fonctionne.
Le hachage est utilisé pour assurer l'intégrité du message, MAC est utilisé à la fois pour l'intégrité et l'authenticité.La plupart des algorithmes MAC - est une combinaison de fonction de hachage avec une clé secrète, que j'appelle pour la simplicité «cryptage» de la valeur de hachage avec une cléhttp: // fr .wikipedia.org / wiki / Fichier: MAC.svg
Je ne sais pas si c'est la meilleure façon de voir les choses. Je ne pense pas qu'il y ait beaucoup de distinction entre l'intégrité et l'authenticité, lorsque nous avons affaire à un attaquant actif qui pourrait modifier les messages transmis. Quant à l'appeler «cryptage», c'est très trompeur et je vous encourage fortement à éviter d'utiliser cette terminologie: cela ne correspond pas à la façon dont les cryptographes parlent, et d'après mon expérience, cela induit souvent en erreur les auditeurs inexpérimentés.
Les MAC sont rarement construits en chiffrant un hachage. Pour de nombreux types de cryptage, ce serait très faible. Par exemple, ça craindrait avec les chiffrements de flux. Il faudrait un hachage de 256 bits et un chiffrement par blocs de 256 bits pour être aussi sécurisé qu'un MAC 128 bits normal.
@D.W. pouvez-vous s'il vous plaît conseiller un livre avec une terminologie appropriée et des informations sur la façon d'éviter la situation où "un attaquant actif pourrait modifier les messages transmis"?
#4
+2
kayle
2016-06-15 16:35:02 UTC
view on stackexchange narkive permalink

J'ai trouvé cela à la réponse précise d'un autre forum.

Ces types de primitives cryptographiques peuvent être distingués par les objectifs de sécurité qu'ils remplissent (dans le protocole simple de "ajouter à un message"):

Intégrité: Le destinataire peut-il être sûr que le message n'a pas été modifié accidentellement?

Authentification: Le destinataire peut-il être sûr que le message provient de l'expéditeur?

Non-répudiation: Si le destinataire transmet le message et la preuve à un tiers, le tiers peut-il être sûr que le message provient de l'expéditeur? (Veuillez noter que je parle de non-répudiation au sens cryptographique, et non au sens juridique.) Cette question est également importante:

Clés: La primitive nécessite-t-elle un clé secrète partagée ou paires de clés public-privé? Je pense que la réponse courte est mieux expliquée avec un tableau:

  Primitive cryptographique | Hash | MAC | Objectif de sécurité numérique | | | signature ------------------------ + ------ + ----------- + ----- -------- Intégrité | Oui | Oui | YesAuthentication | Non | Oui | OuiNon-répudiation | Non | Non | Oui ------------------------ + ------ + ----------- + ----- -------- Genre de clés | aucun | symétrique | asymétrique | | clés | clés  

N'oubliez pas que l'authentification sans confiance dans les clés utilisées est inutile. Pour les signatures numériques, un destinataire doit être sûr que la clé de vérification appartient réellement à l'expéditeur. Pour les adresses MAC, un destinataire doit être sûr que la clé symétrique partagée n'a été partagée qu'avec l'expéditeur.

Cliquez ici pour plus d'informations

Veuillez fournir un lien vers l'origine de cette réponse.
D'autres personnes ont maintenant changé ces définitions: une fonction de hachage ne fournit pas d'intégrité, tandis que l'authentification est ce que nous appelons maintenant l'intégrité (cf. crypto.stanford.edu/~dabo/cryptobook).Ce changement est pour le meilleur imo


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...