Code d'authentification des messages - Message authentication code

En cryptographie , un code d'authentification de message ( MAC ), parfois appelé tag , est une courte information utilisée pour authentifier un message. En d'autres termes, pour confirmer que le message provient de l'expéditeur indiqué (son authenticité) et n'a pas été modifié. La valeur MAC protège l' intégrité des données d' un message , ainsi que son authenticité , en permettant aux vérificateurs (qui possèdent également la clé secrète) de détecter toute modification du contenu du message.

Terminologie

Le terme code d'intégrité du message (MIC) est fréquemment substitué au terme MAC , notamment dans les communications pour le distinguer de l'utilisation de ce dernier comme adresse de contrôle d'accès au support ( adresse MAC ). Cependant, certains auteurs utilisent MIC pour faire référence à un condensé de message , qui vise uniquement à identifier de manière unique mais opaque un seul message. La RFC 4949 recommande d'éviter le terme code d'intégrité du message (MIC) et d'utiliser à la place une somme de contrôle , un code de détection d'erreur , un hachage , un hachage à clé , un code d'authentification de message ou une somme de contrôle protégée .

Définitions

De manière informelle, un système de code d'authentification de message se compose de trois algorithmes :

  • Un algorithme de génération de clé sélectionne une clé dans l'espace de clé de manière uniforme et aléatoire.
  • Un algorithme de signature renvoie efficacement une balise en fonction de la clé et du message.
  • Un algorithme de vérification vérifie efficacement l'authenticité du message compte tenu de la clé et de l'étiquette. C'est-à-dire que le retour est accepté lorsque le message et la balise ne sont pas falsifiés ou falsifiés, et sinon retourne rejeté .

Un code d'authentification de message sécurisé doit résister aux tentatives d'un adversaire de falsifier des balises, pour des messages arbitraires, sélectionnés ou tous , y compris dans des conditions de message connu ou choisi . Il devrait être informatiquement impossible de calculer une étiquette valide du message donné sans connaître la clé, même si, dans le pire des cas, nous supposons que l'adversaire connaît l'étiquette de n'importe quel message sauf celui en question.

Formellement, un système de code d'authentification de message ( MAC ) est un triple d'algorithmes efficaces ( G , S , V ) satisfaisant :

  • G (générateur de clé) donne la clé k sur l'entrée 1 n , où n est le paramètre de sécurité.
  • S (signature) sort une étiquette t sur la clé k et la chaîne d'entrée x .
  • V (vérifier) ​​les sorties acceptées ou rejetées sur les entrées : la clé k , la chaîne x et la balise t .

S et V doivent satisfaire aux conditions suivantes :

Pr [ kG (1 n ), V ( k , x , S ( k , x ) ) = accepté ] = 1.

Un MAC est infalsifiable si pour chaque adversaire efficace A

Pr [ kG (1 n ), ( x , t ) ← A S ( k , · ) (1 n ), x Requête( A S ( k , · ) , 1 n ), V ( k , x , t ) = accepté ] < negl( n ),

A S ( k , · ) désigne que A a accès à l'oracle S ( k , · ), et Query( A S ( k , · ) , 1 n ) désigne l'ensemble des requêtes sur S faites par A , qui sait n . Il est clair que nous exigeons que tout adversaire ne puisse pas interroger directement la chaîne x sur S , car sinon une balise valide peut être facilement obtenue par cet adversaire.

Sécurité

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 dans le cadre d' attaques par message 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 d'autres messages (qui n'ont pas été utilisés pour interroger l'oracle) sans effectuer des quantités infaisables de calcul.

Les MAC diffèrent des signatures numériques car les valeurs MAC sont à la fois générées et vérifiées à l'aide de la même clé secrète. Cela implique que l'expéditeur et le destinataire d'un message doivent se mettre d'accord sur la même clé avant d'initier des communications, comme c'est le cas avec le chiffrement symétrique . Pour la même raison, les MAC n'offrent pas la propriété de non-répudiation offerte par les signatures spécifiquement dans le cas d'une clé secrète partagée à l' échelle du réseau : tout utilisateur qui peut vérifier un MAC est également capable de générer des MAC pour d'autres messages. En revanche, une signature numérique est générée à l'aide de la clé privée d'une paire de clés, qui est la cryptographie à clé publique. Cette clé privée n'étant accessible qu'à son titulaire, une signature numérique prouve qu'un document a été signé par nul autre que ce titulaire. Ainsi, les signatures numériques offrent la non-répudiation. Cependant, la non-répudiation peut être assurée par des systèmes qui lient de manière sécurisée les informations d'utilisation de clé à la clé MAC ; la même clé est en possession de deux personnes, mais l'une a une copie de la clé qui peut être utilisée pour la génération MAC tandis que l'autre a une copie de la clé dans un module de sécurité matériel qui permet uniquement la vérification MAC. Cela se fait couramment dans le secteur financier.

Mise en œuvre

Les algorithmes MAC peuvent être construits à partir d'autres primitives cryptographiques, comme des fonctions de hachage cryptographiques (comme dans le cas de HMAC ) ou à partir d' algorithmes de chiffrement par blocs ( OMAC , CCM , GCM et PMAC ). Cependant, bon nombre des algorithmes MAC les plus rapides comme UMAC - VMAC et Poly1305-AES sont construits sur la base du hachage universel .

Les algorithmes de hachage à clé intrinsèque tels que SipHash sont également par définition des MAC ; ils peuvent être encore plus rapides que les MAC basés sur le hachage universel.

De plus, l'algorithme MAC peut délibérément combiner deux ou plusieurs primitives cryptographiques, de manière à maintenir la protection même si l'une d'entre elles s'avère plus tard vulnérable. Par exemple, dans Transport Layer Security (TLS), les données d'entrée sont divisées en deux moitiés qui sont chacune traitées avec une primitive de hachage différente ( SHA-1 et SHA-2 ) puis XOR ensemble pour sortir le MAC.

MAC unique

Le hachage universel et en particulier les fonctions de hachage indépendantes par paires fournissent un code d'authentification de message sécurisé tant que la clé est utilisée au plus une fois. Cela peut être considéré comme le tampon unique pour l'authentification.

La fonction de hachage indépendante par paire la plus simple est définie par la clé aléatoire, key = ( a , b ) , et la balise MAC pour un message m est calculée comme tag = ( am + b ) mod p , où p est premier.

Plus généralement, les fonctions de hachage indépendantes k fournissent un code d'authentification de message sécurisé tant que la clé est utilisée moins de k fois pour les fonctions de hachage indépendantes k voies.

Les codes d'authentification des messages et l'authentification de l'origine des données ont également été abordés dans le cadre de la cryptographie quantique. Contrairement à d'autres tâches cryptographiques, telles que la distribution de clés, pour une classe assez large de MAC quantiques, il a été démontré que les ressources quantiques n'offrent aucun avantage par rapport aux MAC classiques à usage unique et inconditionnellement sécurisés.

Normes

Il existe différentes normes qui définissent les algorithmes MAC. Ceux-ci inclus:

  • La FIPS PUB 113 Computer Data Authentication , retirée en 2002, définit un algorithme basé sur DES .
  • FIPS PUB 198-1 Le code d'authentification de message de hachage à clé (HMAC)
  • ISO/IEC 9797-1 Mécanismes utilisant un chiffrement par bloc
  • ISO /IEC 9797-2 Mécanismes utilisant une fonction de hachage dédiée
  • ISO /IEC 9797-3 Mécanismes utilisant une fonction de hachage universelle
  • ISO /IEC 29192-6 Cryptographie légère - Codes d'authentification des messages

ISO/CEI 9797-1 et -2 définissent des modèles et des algorithmes génériques qui peuvent être utilisés avec n'importe quelle fonction de chiffrement par bloc ou de hachage, ainsi qu'une variété de paramètres différents. Ces modèles et paramètres permettent de définir des algorithmes plus spécifiques en nommant les paramètres. Par exemple, l'algorithme FIPS PUB 113 est fonctionnellement équivalent à l'algorithme MAC ISO/IEC 9797-1 1 avec la méthode de remplissage 1 et un algorithme de chiffrement par bloc de DES.

Un exemple d'utilisation MAC

MAC.svg

Dans cet exemple, l'expéditeur d'un message l'exécute via un algorithme MAC pour produire une étiquette de données MAC. Le message et l'étiquette MAC sont ensuite envoyés au récepteur. Le récepteur exécute à son tour la partie message de la transmission via le même algorithme MAC en utilisant la même clé, produisant une deuxième étiquette de données MAC. Le récepteur compare ensuite la première étiquette MAC reçue dans la transmission à la seconde étiquette MAC générée. S'ils sont identiques, le récepteur peut supposer en toute sécurité que le message n'a pas été altéré ou falsifié pendant la transmission ( intégrité des données ).

Cependant, pour permettre au récepteur de détecter les attaques par rejeu , le message lui-même doit contenir des données qui assurent que ce même message ne peut être envoyé qu'une seule fois (par exemple, horodatage, numéro de séquence ou utilisation d'un MAC unique). Sinon, un attaquant pourrait - sans même en comprendre le contenu - enregistrer ce message et le lire ultérieurement, produisant le même résultat que l'expéditeur d'origine.

Voir également

Remarques

Les références

  • Goldreich, Oded (2001), Fondements de la cryptographie I : Outils de base , Cambridge : Cambridge University Press, ISBN 978-0-511-54689-1
  • Goldreich, Oded (2004), Foundations of cryptography II: Basic Applications (1. éd. publ.), Cambridge [ua]: Cambridge Univ. Presse, ISBN 978-0-521-83084-3
  • Pass, Rafael, A Course in Cryptography (PDF) , récupéré le 31 décembre 2015

Liens externes

  1. ^ 11-12-20C8