Brevet FR2986631A1 — publié le 20130809

Dispositif et procédé de production d'un code d'authentification d'un message La présente invention concerne la production de codes d'authentification de message, en particulier un dispositif et un procédé de production d'un code d'authentification de message reposant sur un premier message et une clé d'origine. Depuis une dizaine d'années, on utilise des piratages par canal latéral, comme par exemple la simple analyse de profil du courant (en anglais : Simple Power Analysis = SPA) et l'analyse différentielle de profil du courant (en anglais : Differential Power Analysis = DPA), pour la mise en oeuvre de piratages de chiffres de bloc symétriques, qui sont utilisés par exemple par l'algorithme de chiffrement DES (en anglais : DES = Data Encryption Standard) ou par l'algorithme de chiffrement AES (en anglais : AES = Advanced Encryption Standard). On utilise également des piratages par canal latéral, comme la DPA ou la DPA, pour pirater des crypto-algorithmes dissymétriques, comme par exemple l'algorithme de chiffrement RSA (RSA = Rivest Shamir Adleman) et des systèmes de courbe elliptique. "Pirater" signifie ici que le pirate extrait la clé secrète, par laquelle les algorithmes de chiffrement fonctionnent. Des crypto-algorithmes qui ne fonctionnement pas avec des clés secrètes, comme par exemple des algorithmes de Hash, sont moins concernés par des piratages par canal latéral, puisque, dans ce cas, le plus souvent, n'entrent pas en jeu d'autres secrets, comme par exemple des clés secrètes, mais seulement une information donnée à l'avance sous la forme d'un message (en anglais message) M doit être compressée. Il existe toutefois une application des algorithmes de 5 Hash, dans laquelle une clé secrète est utilisée, dont il faut empêcher qu'elle soit compromise, à savoir empêcher le calcul de ce que l'on appelle un code d'authentification de message (en anglais message authentification code). Le concept de "code 10 d'authentification de message" est abrégé dans ce qui suit par l'abréviation "MAC. Un MAC est grossièrement le Hash composé d'une clé k secrète et d'un message M. Un code d'authentification de message est utilisé, non seulement pour assurer l'intégrité d'un message, mais en 15 plus encore pour assurer que celui-ci ne soit disponible qu'à une partie qui est en possession de la clé k secrète. La figure 7 illustre une génération de MAC suivant l'état de la technique. Une information sous la forme d'un 20 message M est entrée ensemble avec une clé k secrète dans un dispositif 700, qui exécute un algorithme de MAC. Le dispositif 700 calcule le code de MACk(M) d'authentification de message, qui dépend du message M et de la clé k secrète. 25 Comme, théoriquement, chaque mise en oeuvre non endurcie spécifiquement contre cela d'un algorithme qui mélange un secret constant, comme par exemple une clé secrète, à une entrée variable et connue est piratable par DPA, cela vaut aussi pour un calcul de MAC. 30 Des piratages par canal latéral utilisent souvent la connaissance de la consommation de courant d'un processeur pour le piratage. Dans de nombreux algorithmes de chiffrement, la consommation de courant d'un processeur est différente, selon qu'est traité un bit d'une clé ou d'un résultat intermédiaire qui a la valeur 1, de la consommation de courant du processeur lorsque est traité un bit d'une clé ou d'un résultat intermédiaire qui a la valeur O. On exécute ainsi des calculs dans des algorithmes de chiffrement, souvent seulement si un bit d'une clé ou d'un résultat intermédiaire dépendant d'une clé prend la valeur 1, tandis que pour une valeur de bit de 0, on n'effectue pas le calcul. Cela donne, dans cet exemple, une consommation de courant plus grande pour une valeur de bit de 1 que pour le bit de valeur 0. Dans d'autre cas, on exécute, par exemple, des instructions déterminées, seulement lorsqu'un bit déterminé d'une clé ou d'un résultat intermédiaire dépendant d'une clé prend la valeur 0. Cela entraîne aussi une consommation de courant du processeur, qui est différente suivant qu'un bit a la valeur 1 ou a la valeur 0. Il est ainsi, en principe, possible, en connaissant la consommation de courant d'un processeur, de tirer des conclusions sur une clé secrète ou d'obtenir un résultat intermédiaire dépendant d'une clé secrète, résultat intermédiaire qui permet alors à nouveau de tirer des conclusions sur la clé secrète. On peut ainsi déterminer, dans certaines circonstances, par un piratage par canal latéral, une clé secrète utilisée sur une carte à puce, lorsque celle-ci n'est pas sécurisée vis-à-vis de piratages par canal latéral. Les piratages par canal latéral ne sont toutefois pas limités à l'analyse de la consommation de courant. C'est ainsi que, dans le cas de piratages par canal latéral, d'autres grandeurs caractéristiques, comme le rayonnement électromagnétique, peuvent, par exemple, être analysées, grandeurs qui peuvent également être différentes en fonction des valeurs de bit d'une clé ou d'un résultat intermédiaire dépendant d'une clé. Des exemples de piratage par canal latéral sont l'analyse simple du profil de courant (en anglais : Simple Power Analysis), désignée dans ce qui suit par "SPA", et l'analyse différentielle du profil de courant (en anglais : Differential Power Analysis), désignée dans ce qui suit par "DPA". On peut utiliser aussi des attaques d'erreurs pour effectuer un piratage. La SPA fonctionne simplement par le fait qu'on enregistre la consommation de courant d'un processeur. Le profil de courant enregistré est ensuite considéré et on en étudie les excentricités. On obtient donc, en considérant visuellement le profil de courant, donc par exemple la consommation de courant au cours du temps, souvent des différences nettes au cours du temps. Des phases de consommation de courant plus grandes et des phases de consommation plus petites peuvent souvent être distinguées nettement. Si, on analyse, par exemple, le profil de courant d'un processeur qui exécute un algorithme de chiffrement DES, on peut reconnaître souvent nettement, par exemple les 16 passes qui se répètent dans le chiffrement DES. Si on considère alors le profil de courant, en ce qui concerne les passes identifiées avec précision, on peut souvent tirer des conclusions sur les opérations qui ont été effectuées à certains instants sur certaines valeurs de bit. Au lieu de, comme dans la SPA, considérer visuellement le profil du courant, par exemple d'un processeur, l'analyse différentielle du profil de courant (DPA) se sert de moyens statistiques pour déterminer une clé secrète qui est utilisée dans un algorithme de chiffrement. On enregistre d'abord, pour une pluralité de messages à chiffrer par une clé, respectivement le profil du courant, donc par exemple la consommation du courant d'un processeur au cours du temps, lors de la réalisation d'un 5 algorithme de chiffrement, et on l'analyse ensuite statistiquement. On peut ainsi utiliser, par exemple, la circonstance souvent existante que des résultats intermédiaires, qui sont calculés par l'algorithme de chiffrement, dépendent, outre du message à chiffrer, 10 souvent seulement d'une partie des bits de la clé secrète. Si, par exemple, un résultat intermédiaire, qui peut être par exemple 0 ou 1, dépend seulement de six bits d'une clé de 56 bits, un pirate pourrait, en connaissant les 15 valeurs d'entrée, donc par exemple le message à chiffrer pour toutes les 26 = 64 variantes différentes pour les six bits pertinents de la clé, calculer la valeur du résultat intermédiaire et alors, par exemple pour chacune des 64 variantes différentes, calculer un profil du 20 courant moyen de tous les profils de courant dont le résultat intermédiaire prend une certaine valeur, par exemple la valeur 1, pour un bit à calculer. Avec une grande probabilité, il se présente alors, pour le profil du courant moyen de la bonne variante des 25 64 possibilités différentes pour les six valeurs de bits, des particularités nettes par rapport aux autres profils du courant moyen, car, en règle générale, c'est le seul, pour lequel les messages, pour tous les profils de courant qui ont été utilisés pour le calcul du profil du 30 courant moyen, qui a donné lors de son chiffrement en fait le même résultat intermédiaire. Pour empêcher des piratages DPA, on a proposé diverses techniques. Une technique consiste, par exemple, à ajouter des bruits pendant que l'on effectue des opérations qui utilisent la clé secrète. Une autre technique consiste en l'utilisation de techniques de masquage, comme par exemple un masquage booléen et un masquage arithmétique. Les techniques de masquage consistent fondamentalement en ce que, avant l'application d'une opération en utilisant un secret, comme par exemple une clé secrète, on masque d'abord le message sur lequel la clé secrète est appliquée, c'est-à-dire qu'on le modifie. On peut effectuer, par exemple, le masquage en échangeant divers bits du message d'une façon qui est inconnue du pirate. Une autre possibilité consiste à modifier le message auquel la clé secrète est appliquée, de manière à modifier le message en utilisant une séquence de bits secrète, par exemple en effectuant une opération OU EXCLUSIF, qui combine logiquement le message et la séquence de bits secrète. En variante ou en plus, on peut effectuer des opérations ET et/ou des opérations OU pour masquer le message. L'opération critique, dans laquelle la clé secrète vient à s'appliquer, est alors appliquée sur le message masqué pour obtenir le résultat de l'opération. Ce résultat se présente alors sous la forme masquée. D'une manière correspondante, après avoir effectué l'opération, on revient sur le masquage pour obtenir un résultat démasqué. Un algorithme à protéger, dans lequel il faut protéger à la fois des opérations 'booléennes et arithmétiques, exige, lors de l'application de technique de masquage, souvent le recalcul fréquent du masquage booléen en arithmétique et inversement. Cela vaut, par exemple, pour des opérations de Hash, dans lesquelles on applique une opération de Hash à une séquence de bits secrète, qui doit être sécurisée à l'encontre de piratages par canal latéral. Les algorithmes de ce genre sont sécurisés à cet effet, par exemple, par des méthodes de masquage, qui exigent une dépense considérable de temps de calcul, lorsqu'elles sont mises en oeuvre en logiciel ou qui ont un grand besoin de surface correspondant, lorsqu'elles sont réalisées en matériel. Dans le calcul d'un MAC, on calcule des valeurs de Hash pour des valeurs qui, de leur côté, ont été calculées en utilisant une clé à conserver secrète. Le développement de concepts réalisables d'une manière efficace, pour empêcher des piratages par canal latéral, qui analysent la production d'un code d'authentification de message, justifie d'y consentir des efforts. La présente invention vise donc la sécurisation efficace d'une production de MAC à l'encontre de piratages par canal latéral. On y parvient par un dispositif de production d'un code d'authentification de message sur la base d'un premier message et d'une clé d'origine, caractérisé en ce qu'il comprend un générateur de clé pour la production d'une clé engendrée reposant sur la clé initiale et sur le premier message et un générateur de code d'authentification de message pour la production du code d'authentification de message sur la base de la clé engendrée et du premier message, par un procédé de production d'un code d'authentification de message reposant sur un premier message et sur une clé d'origine, caractérisé en ce qu'il comprend la production d'une clé engendrée reposant sur la clé d'origine et sur le premier message et la production du code d'authentification de message reposant sur la clé engendrée et sur le premier message et par un programme d'ordinateur pour la mise en oeuvre du procédé suivant l'invention, lorsque le procédé est exécuté sur un ordinateur ou sur un processeur. Dans une sécurisation habituelle à l'encontre de piratages par canal latéral, comme par exemple une DPA appliquée à un calcul de MAC habituel, comme il pourrait s'effectuer par exemple sur une carte à puce, on appliquerait, par exemple, les techniques habituelles et l'on utilise aussi pour sécuriser, par exemple, des DES, AES, RSA, etc. En font partie, par exemple, des méthodes de masquage. Comme un calcul de MAC consiste à exécuter plusieurs fois une fonction de compression de Hash, il suffirait, certes, de conformer les calculs de Hash à l'épreuve d'une DPA. Mais, les calculs de Hash ne peuvent être sécurisés que d'une manière extrêmement coûteuse à l'encontre de piratages par canal latéral. Si on met en oeuvre le calcul de Hash dans un module matériel, la surface du matériel augmente considérablement. Si on met en oeuvre le calcul de Hash en logiciel, le temps de calcul des méthodes masquées augmente d'un multiple. Les formes de réalisation de la présente invention pallient ces inconvénients et empruntent une autre voie. Suivant un mode de réalisation de l'invention, on met à disposition un dispositif de production d'un code d'authentification de message reposant sur un premier message et sur une clé d'origine. Le dispositif comprend un générateur de clé, pour la production d'une clé engendrée reposant sur la clé reposant sur la clé initiale et sur le premier message. Le dispositif comprend, en outre, un générateur de code d'authentification de message pour la production du code d'authentification de message reposant sur la clé engendrée et sur le premier message. Le mode de réalisation ci-dessus évite une simple combinaison du calcul de MAC à des concepts de 5 sécurisation classiques à l'encontre de piratages par canal latéral, ce qui emporterait des inconvénients. Suivant l'exemple de réalisation ci-dessus, le problème de la sécurisation est déplacé sur un autre algorithme, comme par exemple une opération AES sécurisée vis-à-vis 10 d'une DPA ou une autre opération qui satisfait à certaines conditions et qui peut être conformée facilement d'une manière sûre vis-à-vis d'une DPA. C'est ainsi que de nombreux algorithmes de Hash conviennent moins bien pour une mise en oeuvre sécurisée 15 vis-à-vis d'une DPA que des chiffres de bloc symétriques ou, inversement, des chiffres de bloc symétriques conviennent mieux pour une mise en oeuvre sécurisée vis-à-vis d'une DPA que des algorithmes de Hash. Le problème de la sécurisation vis-à-vis de piratages par canal latéral, 20 par exemple déplacer sur une opération d'AES sécurisée vis-à-vis d'une DPA, comme il prévu dans des modes de réalisation préférés, est entre autres particulièrement avantageux, puisque la mise en oeuvre d'opérations AES, qui sont sûres vis-à-vis d'une DPA, est présente 25 normalement de toute façon sur une carte à puce. L'un des avantages d'une solution de ce genre est qu'un matériel de Hash ou un logiciel de Hash ne doit pas être mis en oeuvre d'une manière sûre vis-à-vis d'une DPA, mais, qu'au lieu de cela, on peut s'en remettre à une mise en oeuvre 30 standard vis-à-vis de piratages par canal latéral et/ou à une mise en oeuvre qui a été optimisée en vitesse et qui est présente souvent de toute façon sur une carte à puce. On peut tirer parti aussi de la circonstance qu'un calcul de Hash est intensif en temps ou en surface d'un multiple par rapport à un chiffre de bloc ou qu'inversement un chiffre de bloc peut être conformé d'une manière plus efficace en temps ou en surface qu'un calcul de Hash. Suivant un mode de réalisation, le générateur de clé est tel qu'il produit la clé engendrée en utilisant un algorithme de chiffrement cryptographique. Dans un autre mode de réalisation, le générateur de clé 10 peut être tel qu'il produit la clé engendrée par un calcul de Hash du premier message. Dans un autre mode de réalisation, le générateur de clé est tel qu'il produit la clé engendrée en effectuant un calcul de Hash pour une partie du premier message. 15 Suivant un autre mode de réalisation, le générateur de clé est tel qu'il produit la clé engendrée, de manière à ce que l'entropie de la clé engendrée ne soit pas plus petite que l'entropie de la clé d'origine. Dans un autre mode de réalisation, le générateur de clé 20 est tel qu'il produit la clé engendrée, de manière à ce que, lorsque exactement un bit du premier message ou de la clé d'origine est modifié, lors de la production renouvelée de la clé engendrée, en moyenne, en considération de toutes les clés possibles ayant une 25 première longueur de bit définie à l'avance et de tous les premiers messages ayant une deuxième longueur de bit définie à l'avance, entre 45% et 55% des bits de la clé engendrée se modifient. Suivant un autre mode de réalisation, le générateur de 30 clé est tel qu'un chiffrement AES est utilisé pour la production de la clé engendrée. Dans un autre mode de réalisation, le générateur de clé est tel qu'il applique la formule AESk(H(M)), M désignant le premier message, H(M) désignant le calcul de H du premier message M, k désignant la clé d'origine et AESk désignant un chiffrement AES en utilisant la clé k d'origine. Suivant un autre mode de réalisation, le générateur de clé peut avoir des moyens de sécurisation, qui sont tels qu'ils sécurisent la production de la clé engendrée à 10 l'encontre de piratages par canal latéral. De préférence, les moyens de sécurisation sont conçus pour effectuer une opération de masquage, en ce qui concerne le premier message, pour obtenir un message masqué, le générateur de clé étant conçu pour produire la 15 clé engendrée sur la base de la clé d'origine et du message masqué. Dans un autre mode de réalisation, l'opération de masquage comprend un échange de bits du premier message ou une combinaison logique OU EXCLUSIF, ET ou OU du 20 premier message avec une séquence de bits. Dans un mode de réalisation, le générateur de code d'authentification de message est conçu pour effectuer un calcul de Hash du premier message, afin de produire le code d'authentification de message. 25 Dans un autre mode de réalisation, le générateur d'authentification de message peut être conçu pour combiner logiquement la clé engendrée dans une première opération OU EXCLUSIF avec une première constante, le générateur de code d'authentification de message étant 30 conçu pour combiner logiquement la clé engendrée dans une deuxième opération OU EXCLUSIF avec une deuxième constante. Suivant un autre mode de réalisation, le générateur de code d'authentification de message est conçu pour 5 appliquer la formule HMACk,(M) = H( (k'Oopad) I I H( (k'eipad) I I M)) pour le calcul du code d'authentification de message, M étant le premier message, k' étant la clé engendrée, Ci étant une opération OU EXCLUSIF, I I étant une concaténation 10 et H étant une opération de Hash. En outre, un dispositif de contrôle de la correction et de l'authenticité d'un message est mis à disposition, lequel comprend un dispositif de production d'un code d'authentification de message et une unité de 15 comparaison. L'unité de comparaison étant conçue pour contrôler la coïncidence d'un code d'authentification de message déterminé et d'un code d'authentification de message reçu, pour contrôler la correction et l'authenticité du message. 20 Suivant un mode de réalisation, il est mis à disposition un procédé de production d'un code d'authentification de message reposant sur un premier message et sur une clé d'origine, caractérisé en ce qu'il comprend la production d'une clé engendrée reposant sur la clé d'origine et sur 25 le premier message et la production du code d'authentification de message reposant sur la clé engendrée et sur le premier message. On produit alors un code d'authentification de message reposant sur la clé k' engendrée et sur le message M. 30 Dans un autre mode de réalisation, on met à disposition un procédé ou une méthode de production d'un code MAC d'authentification de message reposant sur un message M ayant une clé k secrète. Le procédé ou la méthode a les caractéristiques suivantes : (i) Production d'une clé k' de session à partir de M et de k par un procédé ou par une méthode, qui résiste à la collision en ce qui concerne les messages, donc par un procédé ou une méthode tel qu'il est difficile cryptographiquement de trouver deux messages M1 et M2, de sorte que k' (k, M1) = k' (k, M2). (ii) Utilisation de la clé k' de session dans un algorithme MAC, pour produire un MAC par le message M ayant la clé k' engendrée. De préférence, la production de la clé k' engendrée implique un calcul de Hash du message M. Il est, en outre, préféré qu'un algorithme de chiffrement cryptographique produise, à partir des entrées M ou d'une valeur de Hash calculée sur la base de M et de la clé k d'origine, une clé k' engendrée comme chiffre. Des modes de réalisation préférés sont explicités en se 20 reportant aux dessins dans lesquels : la figure 1 illustre un dispositif de production d'un code d'authentification de message reposant sur un premier message et sur une clé d'origine suivant un mode de réalisation, 25 la figure 2 représente un dispositif de production d'un code d'authentification de message reposant sur un premier message et sur une clé d'origine suivant un autre mode de réalisation, 30 la figure 3 représente un dispositif de production d'un code d'authentification de message reposant sur un premier message et sur une clé d'origine suivant un mode de réalisation, la figure 4 représente un dispositif de production d'un code d'authentification de message reposant sur un premier message et sur une clé d'origine suivant un autre mode de réalisation, la figure 5 représente un dispositif de contrôle de la correction et de l'authenticité d'un message suivant un mode de réalisation, la figure 6 représente une organigramme qui illustre un procédé de production d'un code d'authentification de message reposant sur un premier message et sur une clé d'origine suivant au autre mode de réalisation, la figure 7 représente une production d'un code d'authentification de message suivant l'état de la technique, et la figure 8 représente une production d'un HMAC suivant l'état de la technique. La figure 1 représente un dispositif de production d'un code d'authentification de message reposant sur un premier message M et sur une clé k d'origine. Le dispositif comprend un générateur 110 de clé, pour la production d'une clé k' engendrée reposant sur la clé k d'origine et sur le premier message M. En outre, le dispositif comprend un générateur 120 de code d'authentification de message, pour la production du code MAC'k d'authentification de message. Le dispositif reçoit comme entrée un message M et une clé 30 k d'origine. Le générateur de clé est conçu pour produire une clé k' engendrée en utilisant la clé k d'origine et en utilisant le premier message M. Cette clé k' engendrée est utilisée ensuite pour la production du code d'authentification de message. De préférence, le générateur de clé est conçu pour distinguer la clé k' engendrée dans la plupart des cas d'une autre clé engendrée, lorsque des messages M1 et M2 différents sont codés. Comme dans un piratage par canal latéral, comme la DPA exige de déterminer une pluralité de profils du courant pour une pluralité de messages pour une même clé k, cette condition préalable pour un piratage réussi par canal latéral n'existe plus dans le mode de réalisation présent, puisque la clé k', qui est utilisée pour la production du code d'authentification de message, est ainsi, pour des messages M1 et M2 différents, presque toujours différente. Il n'est plus possible, ou au moins considérablement plus difficile, pour un pirate de déterminer en utilisant la DPA la clé k' utilisée pour la production du code d'authentification de message. Par ce qui est décrit en regard de la figure 1, la production proprement dite du code d'authentification de message, qui ne s'effectue que sur la base de la clé k' engendrée du message M, est protégée vis-à-vis de piratages par canal latéral. Le problème de la sujétion à des piratages par canal latéral dans un autre processus est toutefois déplacé, à savoir dans le processus de production de la clé k' engendrée, qui est produite sur la base de la clé k d'origine et du message M par le générateur 110 de clé. Comme, dans ce cas aussi, la clé k vient en contact avec le message M (connu potentiellement), il y a ici aussi un problème de DPA. La production de la clé k' engendrée est théoriquement sujette ainsi à des piratages par canal latéral, qui visent par exemple à déterminer la clé k d'origine. Il n'est ainsi, certes, plus nécessaire dans le mode de réalisation présent de sécuriser la production proprement dite du MAC sur la base de la clé k' engendrée et du message M vis-à-vis de piratages par canal latéral ; 5 contre des piratages par canal latéral, il ne faudrait toutefois maintenant que sécuriser la production de la clé k' engendrée à partir de la clé k d'origine et du message M. Il faut donc assurer que le k' = k' (k, M) dérivé soit sécurisé vis-à-vis de piratages par canal 10 latéral. Déplacer le problème de sécurisation, comme il est prévu dans le mode de réalisation présent, s'avère toutefois comme particulièrement avantageux : c'est ainsi que la production de la clé engendrée peut être sécurisée plus 15 facilement vis-à-vis de piratages par canal latéral, comme par exemple par la DPA, que cela n'est possible pour la sécurisation des opérations de Hash dans la production du MAC, par exemple en produisant la clé engendrée 20 utilisant AES de ce genre peut être vis-à-vis de piratages par canal opérations de Hash, qui sont utilisées de code d'authentification de message. latéral que les dans la production En outre, il faut, par un chiffre de bloc, par exemple en un algorithme de chiffrement AES. Une opération sécurisée bien plus facilement 25 dans la production d'un MAC d'un message, sécuriser seulement une opération vis-à-vis de piratages par canal latéral, tandis que, dans la sécurisation des opérations de Hash dans la production de MAC, il serait nécessaire de sécuriser une série d'opérations vis-à-vis de 30 piratages par canal latéral. Dans la production de la clé k', on peut utiliser des mécanismes habituels, pour protéger la production de la clé k' engendrée, comme par exemple un masquage ou l'addition de bruits. En résumé, un aspect essentiel de ce mode de réalisation réside dans le fait que le calcul de MAC proprement dit MACk(M), avec une clé k est remplacé par un calcul du MAC avec une clé k' secrète variable. Lorsque cette clé k' variable dépend à la fois de la clé k secrète et du message M soi-même et lorsque cela s'effectue d'une façon judicieuse cryptographiquement, on peut assurer que deux messages Ml et M2 différents sont traités en MAC, même ayant deux clés déduites différentes. Cela peut être assuré, même lorsque le pirate est en mesure de déterminer soi-même les messages qui sont traités en MAC. Dans ce cas, le MAC utilise d'un message fixe toujours la même clé k', de sorte que le MAC est reproductible. Mais comme, avec cette clé k', en règle générale, on ne traite pas en MAC un deuxième message M (ou au moins pour ainsi dire jamais), k' ne peut pas être déterminé par une DPA. Il est particulièrement avantageux de satisfaire les points a) à e) suivants : a) La force cryptographique du système ne doit pas être diminuée. En d'autres termes, le calcul de k' ne doit pas diminuer l'entropie de la clé. Dans certaines situations, la perte de quelques bits peut être toutefois supportée en entropie, lorsque, par exemple, la longueur de la clé est de toute façon plus grande que nécessaire. b) Il faut réagir sur chaque bit de l'entrée, c'est-à- dire de la clé k d'origine et du message M, par exemple la production de la clé engendrée doit dépendre de chaque bit de l'entrée. Il est préféré, lorsqu'un bit quelconque de l'entrée est basculé, par exemple un bit de la clé k d'origine ou un bit du message M, de basculer alors en moyenne entre 45% et 55% des bits de sortie. En d'autres termes, entre 45% et 55% des bits sont modifiés en moyenne dans la clé k' engendrée. Il est particulièrement préféré qu'il y ait un effet d'avalanche, c'est-à-dire : en moyenne, 50% des bits de sortie sont basculés. En d'autres termes, dans la clé k' engendrée, en moyenne 50% des bits sont modifiés. c) Il ne faut pas qu'il soit possible de produire pour un premier message Ml un autre deuxième message M2, de sorte que l'on ait pour la clé k d'origine et la clé k' engendrée : k' (k, Ml) = k' (k, M2) Cela ne doit surtout pas être possible si l'on ne connaît 15 pas non plus k. d) Il est avantageux de ne pas pouvoir calculer la clé k d'origine à partir des informations k' (clé engendrée) et M (message, pour lequel le MAC a été calculé); e) Le calcul de k'=kv(k, M) ne doit pas permettre de 20 tirer des conclusions sur k par des piratages par canal latéral. Pas non plus, si M est connu ou même peut être choisi. Suivant un mode de réalisation, on procure un dispositif qui satisfait les points a) à d). 25 Dans un mode de réalisation préféré, on met à disposition un dispositif qui satisfait les points a) à e). Suivant un mode de réalisation, on met à disposition un dispositif qui est conçu pour remplacer pour la production d'un code d'authentification de message une clé k d'origine par une clé k' engendrée, laquelle est produite de la façon suivante : k' := k' (k, M) := AESk (H(M)). M désigne un message ; H désigne une opération de Hash 5 qui est appliquée à ce message pour obtenir la valeur de H(M) ; AESk désigne un algorithme de chiffrement AES qui est utilisé avec la clé k d'origine pour chiffrer la valeur de Hash M ; et k' désigne la clé engendrée qui est produite. Un dispositif de ce genre satisfait 10 automatiquement les points à) à d). Le point e) est assuré par la mise en oeuvre. Par exemple, un concept de masquage de l'état de la technique peut être utilisé pour réaliser le point e), comme par exemple une technique connue de masquage de l'algorithme de 15 chiffrement AES. Une production de ce genre de la clé engendrée est particulièrement avantageuse, entre autres parce que l'opération de Hash utilisée ne doit pas nécessairement être sécurisée vis-à-vis de piratages par canal latéral, 20 car elle n'est pas appliquée à la clé k conservée secrète, mais seulement au message M. Dans la production du MAC, le calcul d'AES doit être ainsi le seul qui doit résister à un piratage par canal latéral. 25 Au lieu d'utiliser l'algorithme AES, il y a de nombreuses autres possibilités de produire une clé k' engendrée. On peut utiliser, par exemple, un algorithme DES ou un algorithme triple-DES pour la production d'une clé k' engendrée. 30 Dans nombre de modes de réalisation, les points a) à e) sont satisfaits, suivant les cas, éventuellement, seulement graduellement ou partiellement. C'est ainsi qu'il n'est pas absolument nécessaire dans nombre de modes de réalisation d'utiliser un algorithme de chiffrement fort. La figure 2 représente maintenant un mode de réalisation qui autorise un calcul de MAC sûr. Suivant cela, on produit d'abord une clé engendrée, par exemple une clé de session (en anglais : Session-Key) k' à partir du message M et d'une clé k d'origine par un générateur 210 de clé. La clé de session est utilisée alors par un générateur 220 de code d'authentification de message pour produire le code MAC'k d'authentification de message. La figure 3 représente un mode de réalisation pour la production de la clé engendrée, par exemple d'une clé k' de session. La production de la clé k' de session peut s'effectuer, par exemple, en soumettant le message M dans un premier module 312 à une opération de Hash. On peut alors chiffrer dans un deuxième module 315 le résultat par la clé k, par exemple en utilisant un AES sécurisé vis-à-vis de piratages par canal latéral. Il y a de nombreuses autres possibilités de produire une clé engendrée qui est sécurisée vis-à-vis de piratages par canal latéral, pourvu que les points a) à e) décrits ci-dessus soient respectés. On représente dans ce qui suite un autre mode de réalisation de la présente invention, qui se rapporte aux HMAC (HMAC = code d'authentification de message sur la base de Hash ; en anglais : Hash-based Message Authentification Code). Tout d'abord, toutefois, pour mieux faire comprendre le code d'authentification de message HMAC tel qu'il est connu dans l'état de la technique, il sera explicité en se reportant à la figure 8. Une information sous la forme d'un message M ensemble avec une clé secrète est envoyée à un dispositif, qui exécute un algorithme MAC. Celui-ci calcule le code d'authentification de message. Dans le dispositif de la figure 8, une clé k d'origine est le cas échéant raccourcie si cette clé est trop longue, pour obtenir une clé K (stade 810). S'il n'est pas nécessaire de raccourcir la clé K, on prend sans changement la clé k comme clé K. Ensuite, la clé K est combinée (820) suivant une logique de OU EXCLUSIF à une séquence de bit ipad. Le résultat est ensuite concaténé (830) avec le message M, pour obtenir un premier résultat concaténé, qui est mis à disposition dans le stade 835, pour une première opération de Hash. On applique (840) alors la première opération de Hash au premier résultat concaténé, pour obtenir un premier résultat de Hash, qui, dans le stade 845, est mis à disposition pour une deuxième concaténation 860. Dans un autre stade 850, la clé K est combinée suivant une logique de OU EXCLUSIF à une autre séquence opad de bit et ensuite est mise à disposition par le stade 855, également pour la deuxième concaténation. Le résultat mis à disposition dans le stade 855 de cette combinaison OU EXCLUSIF est alors concaténé (860) avec le premier résultat de Hash mis à disposition dans le stade 845. On applique (870) alors une deuxième opération de Hash au résultat de la deuxième concaténation, en obtenant finalement le code MAC d'authentification de messge. La fonction de Hash habituelle, sur laquelle repose le 30 procédé HMAC, est définie par H: {0, 1} *-* {0, 1} de la longueur L de sortie. Des procédés de Hash connus sont, par exemple, SHA-1, la famille de SHA-2 (SHA = Algorithme de Hash Sécurisé ; en anglais = Secure Hash algorithme), comprenant SHA256, SHA384, SHA512. Un Hash de ce type consiste essentiellement en une fonction h circulaire : {0, 1}L x {0, -* {0, 1}', dans lequel L Par exemple, pour SHA-1 : L = 512, i = 180. La fonction circulaire est appliquée itérativement, pour soumettre des messages de n'importe quelle longueur à des 10 opérations de Hash. Comme cela est illustré déjà à la figure 8, le HMAC pour le message M avec la clé k secrète est défini alors par, HMACk(M) = H ( (K0opad) I I H( (Keipad) I I M)) opad et ipad étant des constantes, 0 étant une opération 15 OU EXCLUSIF et I I étant une simple concaténation. On soumet donc d'abord K ensemble avec le message M à une opération de Hash, et on soumet ensuite à nouveau le résultat ensemble avec K à une opération de Hash. K satisfait la longueur d'entrée du Hash H, donc par 20 exemple K: -k II 0... . . ...O. Un algorithme de MAC peut ainsi être produit, par exemple par HMAC, au moyen d'un algorithme de Hash habituel. A cet effet, on soumet d'abord une fois le message ensemble 25 avec la clé k à une opération de Hash sous forme condensée. Ensuite, on soumet encore une fois le Hash à une opération de Hash avec la clé k. La figure 4 représente un dispositif suivant un mode de réalisation de l'invention, dans lequel on produit un code d'identification de message au moyen d'un HMAC. Le dispositif est conçu pour produire une clé k' engendrée en soumettant un message M à une opération de Hash dans une première unité 410 de Hash, pour obtenir un premier résultat de Hash, et il est prévu une unité 420 AES, qui est conçue pour chiffrer le premier résultat de Hash par la clé k en utilisant un algorithme AES sécurisé vis-à-vis de piratages par canal latéral. Un premier modificateur 430 et un deuxième modificateur 470 sont prévus pour raccourcir, le cas échéant, la clé k' engendrée, si cette clé est trop longue, afin d'obtenir une clé K'. S'il n'est pas nécessaire de raccourcir la clé k' engendrée, on prend sans changement la clé k' engendrée comme clé K'. Une première unité 440 logique OU EXCLUSIF est prévue,pour combiner suivant une combinaison OU EXCLUSIF la clé K' à une séquence ipad de bit, pour obtenir un premier résultat de OU EXCLUSIF. Une première unité 450 de concaténation est prévue pour concaténer le premier résultat de OU EXCLUSIF au message M, pour obtenir un premier résultat concaténé. Il est prévu, en outre, une deuxième unité 460 de Hash pour appliquer une opération de Hash au premier résultat concaténé, afin d'obtenir un deuxième résultat de Hash. Un deuxième module 480 de OU EXCLUSIF est conçu pour combiner suivant une logique de OU EXCLUSIF la clé K' à une autre séquence opad de bit, afin d'obtenir un deuxième résultat de OU EXCLUSIF. Une deuxième unité 490 de concaténation est prévue pour combiner le deuxième résultat de Hash et le deuxième résultat de OU EXCLUSIF, pour obtenir un deuxième résultat concaténé. Il est prévu, en outre, une troisième unité 495 de Hash pour appliquer une opération de Hash au deuxième résultat concaténé, afin d'obtenir le code MAC d'authentification de message. La figure 5 représente un dispositif de contrôle de la correction et de l'authenticité d'un message. Le dispositif est conçu pour contrôler, au moyen d'un code MACempfangen d'authentification de message reçu, qu'un message est correct et authentique. A cet effet, le dispositif de contrôle de la correction et de l'authenticité du message a un dispositif 510 de production d'un code d'authentification de message suivant l'un des modes de réalisation décrits ci-dessus et une unité 520 de comparaison. Le dispositif 510 de production du code d'authentification de message produit un code MACberechnet 15 d'authentification de message calculé reposé sur une clé (d'origine) et sur un message M. L'unité 520 de comparaison est conçue pour contrôler la coïncidence du code MACberechnet d'authentification de message produit et du code MACempfangen d'authentification 20 de message reçu, afin de contrôler la correction et l'authenticité du message. Si MACberechnet et MACempfangen identiques, on suppose que le message est correct et authentique. Si MACberechnet et MACempfangen ne sont pas identiques, on en déduit que le message n'est pas correct 25 et/ou qu'il n'est pas authentique. La figure 6 représente un procédé de production d'un code d'authentification de message reposant sur un premier message M et sur une clé k d'origine suivant un mode de réalisation. Dans le stade 610, on produit une clé k' 30 engendrée reposant sur la clé k d'origine et sur le message M. Ensuite, on produit, dans le stade 620, un code d'authentification de message reposant sur la clé k' engendrée et sur le message M. Bien que l'on ait décrit de nombreux aspects en relation avec un dispositif, il va de soi que ces aspects constituent aussi une description du procédé correspondant, de sorte qu'un bloc ou un élément d'un dispositif doivent s'entendre aussi comme un stade de procédé correspondant ou comme une caractéristique d'un stade de procédé. D'une manière analogue à cela, des aspects qui ont été décrits en relation avec un stade du procédé ou comme un stade du procédé représentent aussi une description d'un bloc correspondant ou de détails ou de caractéristiques d'un dispositif correspondant. Certains ou tous les stades de procédé peuvent être réalisés par un appareil matériel (ou en utilisant un appareil matériel), comme par exemple un microprocesseur, un ordinateur programmable ou un circuit électronique. Dans certains exemples de réalisation, on peut exécuter par un appareil de ce genre certains ou plusieurs de ces stades de procédé les plus importants. Suivant les exigences de mise en oeuvre, des exemples de réalisation de l'invention peuvent être mis en oeuvre en matériel ou en logiciel. La mise en oeuvre peut s'effectuer en utilisant un support de mémoire numérique, par exemple, un disque souple, un DVD, un disque Blu-ray, un CD, une ROM, une PROM, une EPROM, une EEPROM ou une mémoire FLASH, un disque dur ou une autre mémoire magnétique ou optique, sur laquelle des signaux de commande pouvant être lus par voie électronique sont mémorisés, signaux qui peuvent coopérer ou qui coopèrent avec un système d'ordinateur programmable, de manière à effectuer le procédé respectif. Le support de mémoire numérique peut ainsi être lu par un ordinateur. Nombre d'exemples de réalisation suivant l'invention comprennent donc un support de données, qui a des signaux de commande pouvant être lus par voie électronique, qui sont en mesure de coopérer avec un système d'ordinateur programmable, de manière à effectuer un procédé décrit dans le présent mémoire. D'une manière générale, des exemples de réalisation de la présente invention peuvent être mis en oeuvre sous la forme de produits de programme informatique ayant un code de programme, le code de programme étant efficace pour effectuer l'un des procédés, lorsque le produit de programme informatique passe sur un ordinateur. Le code de programme peut être mémorisé, par exemple, aussi sur un support pouvant être lu automatiquement. D'autres exemples de réalisation comprennent le programme informatique pour la mise en oeuvre d'un procédé décrit dans le présent mémoire, le programme informatique étant mémorisé sur un support pouvant être lu automatiquement. En d'autres termes, un exemple de réalisation du procédé suivant l'invention est ainsi un programme informatique, qui a un code de programme pour effectuer l'un des procédés décrits dans le présent mémoire, lorsque le programme informatique passe sur un ordinateur. Un autre exemple de réalisation du procédé suivant l'invention est ainsi un support de données (ou un support de mémoire numérique ou un support pouvant être lu par ordinateur), sur lequel le programme informatique est enregistré pour effectuer l'un des procédés décrits dans le présent mémoire. Un autre exemple de réalisation du procédé suivant l'invention est ainsi un flux de données ou une séquence de signaux, qui représentent le programme informatique pour effectuer l'un des procédés décrits dans le présent mémoire. Le flux de données ou la séquence de signaux peuvent être configurés, par exemple, pour être transférés par une liaison de communication de données, par exemple par l'internet. Un autre exemple de réalisation comprend un dispositif de traitement, par exemple un ordinateur ou un composant logique programmable, qui est configuré ou qui est adapté pour effectuer l'un des procédés décrits dans le présent mémoire. Un autre exemple de réalisation comprend un ordinateur, sur lequel est installé le programme informatique pour la mise en oeuvre de l'un des procédés décrits dans le 15 présent mémoire. Un autre exemple de réalisation suivant l'invention comprend un dispositif ou un système, qui est conçu pour transmettre à un récepteur un programme informatique pour la mise en oeuvre d'au moins l'un des procédés décrits 20 dans le présent mémoire. La transmission peut s'effectuer, par exemple, par voie électronique ou par voie optique. Le récepteur peut être, par exemple, un ordinateur, un appareil mobile, un appareil de mémoire ou un dispositif semblable. Le dispositif ou le système 25 peuvent comprendre, par exemple, un serveur de fichiers pour la transmission du programme informatique au récepteur. Dans nombre d'exemples de réalisation, on peut utiliser un composant logique programmable (par exemple un réseau 30 programmable par l'utilisateur, un FPGA) pour effectuer nombre ou toutes les fonctionnalités des procédés décrits dans le présent mémoire. Dans nombre d'exemples de réalisation, un réseau programmable par l'utilisateur peut coopérer avec un microprocesseur, pour effectuer l'un des procédés décrits dans le présent mémoire. D'une manière générale, les procédés sont effectués dans certains exemples de réalisation par un dispositif matériel quelconque. Celui-ci peut être un matériel utilisable de manière universelle, comme un processeur informatique (CPU) ou un matériel spécifique au procédé, comme par exemple un ASIC. Des exemples de réalisation décrits ci-dessus représentent simplement une illustration de la présente invention. Il va de soi qu'on peut y apporter des modifications et des variations et que celles-ci apparaîtront à l'homme du métier. REVENDICATIONS1. Dispositif de production d'un code d'authentification de message sur la base d'un premier 5 message et d'une clé d'origine, caractérisé en ce qu'il comprend : un générateur (110; 210) de clé pour la production d'une clé engendrée reposant sur la clé initiale et sur le premier message, et 10 un générateur (120; 220) de code d'authentification de message pour la production du code d'authentification de message sur la base de la clé engendrée et du premier message. 15 2. Dispositif suivant la revendication 1, caractérisé en ce que le générateur (110; 210) de clé est tel qu'il produit la clé engendrée en utilisant un algorithme de chiffrement cryptographique. 20 3. Dispositif suivant la revendication 1 ou 2, caractérisé en ce que le générateur (110; 210) de clé est tel qu'il produit la clé engendrée par un calcul de Hash du premier message. 25 4. Dispositif suivant la revendication 1 ou 2, caractérisé en ce quele générateur (110; 210) de clé est tel qu'il produit la clé engendrée en effectuant un calcul de Hash pour une partie du premier message. 5. Dispositif suivant l'une des revendications précédentes, caractérisé en ce que le générateur (110; 210) de clé est tel qu'il produit la clé engendrée, de manière à ce que l'entropie de la clé engendrée ne soit pas plus petite que l'entropie de la clé d'origine. 6. Dispositif suivant l'une des revendications précédentes, caractérisé en ce que le générateur (110; 210) de clé est tel qu'il produit la clé engendrée, de manière à ce que, lorsque exactement un bit du premier message ou de la clé d'origine est modifié, lors de la production renouvelée de la clé engendrée, en moyenne, en considération de toutes les clés possibles ayant une première longueur de bit définie à l'avance et de tous les premiers messages ayant une deuxième longueur de bit définie à l'avance, entre 45% et 55% des bits de la clé engendrée se modifient. 7. Dispositif suivant l'une des revendications 25 précédentes, caractérisé en ce que le générateur (110; 210) de clé est tel qu'un chiffrement AES est utilisé pour la production de la clé engendrée. 8. Dispositif suivant l'une des revendications 30 précédentes, caractérisé en ce que le générateur (110; 210) de clé est tel qu'il applique la formule AESk(H(M)), M désignant le premier message, H(M) désignant le calcul de H du premier message M,k désignant la clé d'origine et AESk désignant un chiffrement AES en utilisant la clé k d'origine. 9. Dispositif suivant l'une des revendications 5 précédentes, caractérisé en ce que le générateur (110; 210) de clé a des moyens de sécurisation, qui sont tels qu'ils sécurisent la production de la clé engendrée à l'encontre de piratages par canal latéral. 10 10. Dispositif suivant la revendication 9, caractérisé en ce que les moyens de sécurisation sont conçus pour effectuer une opération de masquage, en ce qui concerne le premier 15 message, pour obtenir un message masqué, le générateur (110; 210) de clé étant conçu pour produire la clé engendrée sur la base de la clé d'origine et du message masqué. 20 11. Dispositif suivant la revendication 10, caractérisé en ce que l'opération de masquage comprend un échange de bits du premier message ou une combinaison logique OU EXCLUSIF, ET ou OU du premier message avec une séquence de bits. 25 12. Dispositif suivant l'une des revendications précédentes, caractérisé en ce que le générateur (120; 220) de code d'authentification de message est conçu pour effectuer un calcul de Hash du 30 premier message, afin de produire le code d'authentification de message. 13. Dispositif suivant la revendication 12, caractérisé en ce quele générateur (120; 220) de code d'authentification de message est conçu pour combiner logiquement la clé engendrée dans une première opération OU EXCLUSIF avec une première constante, le générateur (120; 220) de code d'authentification de message étant conçu pour combiner logiquement la clé engendrée dans une deuxième opération OU EXCLUSIF avec une deuxième constante. 14. Dispositif suivant la revendication 13, caractérisé en ce que le générateur (120; 220) de code d'authentification de message est conçu pour appliquer la formule HMACk,(M) = H( (k'eopad) I I (k'Oipad) I I M)) pour le calcul du code d'authentification de message, 15 M étant le premier message, k' étant la clé engendrée, 0 étant une opération OU EXCLUSIF, I I étant une concaténation et H étant une opération de Hash. 15. Dispositif de contrôle de la correction et de 20 l'authenticité d'un message, caractérisé en ce qu'il comprend : un dispositif (510) suivant l'une des revendications 1 à 14 pour la production d'un code d'authentification de message déterminé, et 25 une unité (520) de comparaison, l'unité (520) de comparaison étant conçue pour contrôler la coïncidence d'un code d'authentification de message déterminé et d'un code d'authentification de message reçu, pour contrôler la correction et l'authenticité du message. 30 16. Procédé de production d'un code d'authentification de message reposant sur un premier message et sur une clé d'origine, caractérisé en ce qu'il comprend :la production (610) d'une clé engendrée reposant sur la clé d'origine et sur le premier message, et la production (620) du code d'authentification de message reposant sur la clé engendrée et sur le premier message. 17. Procédé suivant' la revendication 16, caractérisé en ce que la clé engendrée est produite en utilisant un algorithme de chiffrement cryptographique. 18. Procédé suivant la revendication 16 ou 17, caractérisé en ce que la clé engendrée est produite par un calcul de Hash du premier message. 15 19. Procédé suivant l'une des revendications 16 à 18, caractérisé en ce que pour le calcul du code d'authentification de message, on applique la formule 20 HMACk,(M) = H( (krOopad) I I H( (ki0ipad) I I M)) M étant le premier message, k' étant la clé engendrée, 0 étant une opération OU EXCLUSIF, I I étant une concaténation et H étant une opération de Hash. 25 20. Programme d'ordinateur pour la mise en oeuvre du procédé suivant l'une des revendications 16 à 19, lorsque le procédé est exécuté sur un ordinateur ou sur un processeur. 10