Quelle est la différence entre un hachage et un MAC (code d'authentification de message)?
Par leurs définitions, ils semblent remplir la même fonction.
Quelqu'un peut-il expliquer quelle est la différence?
La principale différence est conceptuelle: alors que hachages sont utilisés pour garantir l'intégrité des données, un MAC garantit l'intégrité ET l'authentification.
Cela signifie qu'un code de hachage est généré à l'aveugle à partir du message sans aucune sorte d'entrée externe: ce que vous obtenez est quelque chose qui peut être utilisé pour vérifier si le message a subi une altération pendant son voyage.
Un MAC utilise à la place une clé privée comme germe de la fonction de hachage qu'il utilise lors de la génération du code: cela devrait garantir au destinataire que non seulement le message n'a pas été modifié, mais aussi qui l'a envoyé est ce que nous attendions: sinon un attaquant ne pouvait pas connaître la clé privée utilisée pour générer le code.
Selon wikipedia, vous avez ceci:
Bien que les fonctions MAC soient similaires aux fonctions de hachage cryptographique, elles possèdent des exigences de sécurité différentes. Pour être considérée comme sécurisée, une fonction MAC doit résister à la falsification existentielle sous les attaques en texte clair choisi. Cela signifie que même si un attaquant a accès à un Oracle qui possède la clé secrète et génère des MAC pour les messages de son choix, l'attaquant ne peut pas deviner le MAC pour les autres messages sans effectuer des calculs infaisables.
Bien sûr, bien que similaires, ils sont implémentés d'une manière différente: généralement un algorithme de génération MAC est basé sur un algorithme de génération de code de hachage avec l'extension qui se soucie d'utiliser une clé privée.
Un hachage est une fonction qui produit un résumé à partir d'un message. Un hachage cryptographiquement sécurisé est pour lequel il est impossible de générer un message avec un résumé donné. À lui seul, le hachage d'un message ne donne aucune information sur l'expéditeur d'un message donné. Si vous pouvez communiquer en toute sécurité le hachage d'un message, il peut être utilisé pour vérifier qu'un message volumineux a été correctement reçu via un transport non sécurisé.
Un code d'authentification de message est un moyen de combiner une clé secrète partagée avec un message afin que le destinataire du message puisse authentifier que l'expéditeur du message possède la clé secrète partagée et que personne qui ne connaît pas la clé secrète aurait pu envoyer ou modifier le message.
Un HMAC est un code d'authentification de message basé sur le hachage. Habituellement, cela implique d'appliquer une ou plusieurs fois une fonction de hachage à une sorte de combinaison du secret partagé et du message. HMAC fait généralement référence à l'algorithme documenté dans la RFC 2104 ou FIPS-198.
Un MAC ne crypte pas le message, il est donc en texte brut. Il ne révèle pas la clé secrète, un MAC peut donc être envoyé sur un canal ouvert sans compromettre la clé.
J'ai trouvé cela au point de réponse d'un autre forum.
Ces types de primitives cryptographiques peuvent être distingués par les objectifs de sécurité qu'ils remplissent (dans le simple protocole de "l'ajout à un message"):
Intégrité: Le destinataire peut-il être sûr que le message n'a pas été accidentellement modifié?
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, pas au sens juridique.) Cette question est également importante:
Clés: La primitive nécessite-t-elle une clé secrète partagée ou des paires de clés publiques-privées? Je pense que la réponse courte est mieux expliquée avec un tableau:
Cryptographic primitive | Hash | MAC | Digital
Security Goal | | | signature
------------------------+------+-----------+-------------
Integrity | Yes | Yes | Yes
Authentication | No | Yes | Yes
Non-repudiation | No | No | Yes
------------------------+------+-----------+-------------
Kind of keys | none | symmetric | asymmetric
| | keys | keys
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 MAC, un destinataire doit être sûr que la clé symétrique partagée n'a été partagée qu'avec l'expéditeur.
Fondamentalement, la principale différence est que MAC utilise une clé privée et le hachage n'utilise aucune clé. À cause de cela, MAC nous permet de réaliser l'authentification.
FONCTION DE HACHAGE: fonction qui mappe un message de n'importe quelle longueur en une valeur de hachage de longueur fixe, qui sert d'authentificateur.
MAC: une fonction du message et une clé secrète qui produit une valeur de longueur fixe qui sert d'authentificateur.
Un hachage est un résumé ou une empreinte digitale d'un message et ne fournit ni intégrité ni authentification lui-même, car il est susceptible d'être attaqué par l'homme du milieu. Supposons que A veuille envoyer un message M, combiné avec le hachage H de M, à B. Au lieu de cela, C capture le message et génère le message M2 et le hachage H2 de M2, et l'envoie à B. Maintenant, B, en aucun cas, ne peut vérifier si cela est le message d'origine de A ou non. Cependant, le hachage peut être utilisé de plusieurs autres manières pour atteindre l'intégrité et l'authentification, comme MAC.
Un MAC qui est également un résumé du message fournit l'intégrité et l'authentification. MAC peut être calculé de plusieurs façons. La méthode la plus simple consiste à utiliser une fonction de hachage avec deux entrées, le message et une clé secrète partagée. L'utilisation de la clé secrète partagée ajoute la capacité d'authentification au MAC et fournit ainsi l'intégrité et l'authentification. Cependant, MAC ne fournit toujours pas de non-répudiation, car toute partie ayant la clé secrète partagée peut produire le message et MAC. Voici la signature numérique et la cryptographie à clé publique en action.