Procédé de traitement de données sécurisé, basé notamment sur un algorithme cryptographique
La présente invention concerne un procédé de traitement de données sécurisé, basé notamment sur un algorithme cryptographique. Dans certaines applications, un procédé de traitement de données met en œuvre un algorithme cryptographique afin de générer des données de sortie à partir de données d'entrée au moyen d'une clé secrète. La clé secrète est par exemple stockée dans une carte à microcircuit, telle qu'une carte à puce. L'algorithme cryptographique peut dans ce cas être mis en œuvre au sein d'un microprocesseur porté par la carte à puce. On a déjà cherché à protéger ce type de procédé contre des attaques visant à déterminer la clé secrète. De telles attaques sont par exemple les attaques connues sous le vocable SPA (de l'anglais "Simple Power Analysis") ou DPA (de l'anglais : "Differential Power Analysis"), qui consistent pour l'essentiel à mesurer les courants mis en œuvre lors de l'exécution de l'algorithme cryptographique afin d'en déduire la clé secrète. Afin de contrecarrer ce type d'attaques, il a déjà été proposé, par exemple dans la demande de brevet WO 99/48239, d'utiliser une technique dite de masquage. Selon cette technique, on génère un nombre aléatoire, à partir duquel on dérive un masque, puis on combine au cours de l'algorithme cryptographique le masque avec les données d'entrée (ou éventuellement des données intermédiaires), par exemple au moyen d'une opération logique "OU exclusif (ou XOR). A une étape ultérieure de l'algorithme cryptographique, par exemple à la fin de celui-ci, les données obtenues sont à nouveau combinées
avec un masque, ce qui permet d'obtenir la donnée de sortie telle qu'elle aurait été obtenue sans masquage. Toutefois, les données intermédiaires de l'algorithme cryptographique, et ainsi les courants mesurables, sont modifiés par le nombre aléatoire (masque) et leur observation ne permettra donc pas de déduire la clé secrète. Dans le cas d'un procédé du type DES (de l'anglais Data Encryption Standard), le masquage peut par exemple impliquer la modification de certaines étapes de calcul et certaines structures de données au moyen du nombre aléatoire, en particulier les boîtes-S ou SBOXen anglais. Lorsque l'algorithme cryptographique comprend l'exécution de plusieurs sous-algorithmes, il est possible d'utiliser plusieurs nombres aléatoires différents, par exemple un nombre aléatoire par sous-algorithme. Toutefois, dans un environnement à ressources restreintes telle qu'une carte à microcircuit, on utilise un nombre aléatoire unique pour l'ensemble de l'algorithme permettant l'obtention des données de sortie à partir des données d'entrée, afin d'accélérer le traitement des données, comme cela est mentionné dans la demande de brevet WO 99/48239. En effet, l'obtention du nombre aléatoire, et la modification des boîtes-S dans le cas du procédé DES, nécessitent un temps équivalent à l'algorithme cryptographique stricto sensu. Dans le cadre de la technique de masquage qui vient d'être exposée, d'autres solutions sont connues pour protéger l'exécution d'un algorithme cryptographique contre les attaques SPA ou DPA par l'utilisation d'un nombre aléatoire au cours de la mise en œuvre de l'algorithme. La demande de brevet FR 2 820 577 donne un autre exemple de ce type, en proposant de masquer la dérivation de la clé secrète. Une autre famille d'attaques est constituée par les attaques dites DFA (de l'anglais: "Differential Fault Analysis"). Ces attaques DFA consistent à engendrer des fautes lors de l'exécution de l'algorithme cryptographique, par exemple en perturbant le composant électronique sur lequel il s'exécute. Une telle perturbation peut par exemple être réalisée en éclairant brièvement le composant électronique avec une source lumineuse ou en générant des pics de tension aux bornes du composant au-delà de ses spécifications. La
perturbation induit alors une erreur dans les résultats de l'algorithme cryptographique, qui facilite dans certaines conditions l'obtention de la clé secrète par l'attaquant. Vu les différences de nature entre les attaques de ce type et les attaques SPA ou DPA, les contre-mesures décrites ci-dessus (techniques de masquage) ne permettent pas de contrecarrer les attaques DFA. Pour répondre aux attaques DFA, on a ainsi dû proposer de nouvelles techniques de sécurisation de l'algorithme cryptographique. L'une de ces techniques consiste à exécuter une première fois l'algorithme cryptographique, puis à exécuter un second algorithme cryptographique dont le résultat permet de vérifier que le premier algorithme a été effectué sans faute. Une telle approche est par exemple décrite dans la demande de brevet FR 2 838 262. Le second algorithme cryptographique utilisé peut être identique au premier algorithme cryptographique, auquel cas on applique le second algorithme aux données d'entrée et on vérifie la bonne exécution du premier algorithme par comparaison des résultats des deux algorithmes. En variante, le second algorithme cryptographique peut être l'algorithme inverse du premier algorithme cryptographique (quand un tel algorithme inverse existe), auquel cas on applique le second algorithme aux données de sortie obtenues par le premier algorithme et on vérifie que le résultat du second algorithme cryptographique corresponde bien aux données d'entrée du premier algorithme cryptographique. On vérifie donc ici aussi que le premier algorithme s'est déroulé sans faute. Cette solution utilisée telle quelle n'est toutefois pas protégée contre un type spécifique d'attaques DFA, dans lesquelles on génère deux fois la même erreur, ou une erreur et son complémentaire. En effet, dans ce cas, les données calculées lors du premier algorithme cryptographique et celles calculées lors du second algorithme cryptographique sont modifiées par l'attaque de manière similaire. Les fautes engendrées par l'attaque ne sont alors pas détectables par la simple comparaison des données impliquées dans ces algorithmes.
Afin d'obtenir une protection contre ce dernier type d'attaques, l'invention propose un procédé de traitement de données sécurisé, comportant les étapes suivantes : - génération d'une première valeur aléatoire ; - exécution d'un premier algorithme cryptographique utilisant la première valeur aléatoire ; - génération d'une seconde valeur aléatoire ; - exécution d'un second algorithme cryptographique utilisant la seconde valeur aléatoire et générant un résultat permettant la vérification de l'exécution correcte du premier algorithme. Ainsi, même si les deux algorithmes cryptographiques subissent chacun une faute du même type dans le but d'obtenir l'égalité forcée entre la première donnée et la donnée de vérification et ainsi d'empêcher la détection de l'attaque, les fautes auront en fait des conséquences différentes grâce à l'utilisation de deux valeurs aléatoires différentes et l'attaque sera donc détectée. Les étapes ne sont bien sûr pas nécessairement exécutées dans l'ordre dans lequel elles sont présentées ci-dessus : la génération de la seconde valeur aléatoire peut être réalisée avant l'exécution du premier algorithme cryptographique. Par ailleurs, on entend ici par valeur aléatoire une valeur du type de celle générée par un processeur dans le but d'être imprévisible par tout utilisateur du système (parfois dénommée valeur pseudo-aléatoire). Lorsque l'exécution du premier algorithme cryptographie implique dans au moins un calcul une première donnée et génère une donnée de sortie à partir d'une donnée d'entrée et que le résultat est une donnée de vérification, le procédé comprend par exemple une étape de comparaison de la donnée de vérification à la première donnée pour vérification de l'exécution correcte du premier algorithme. Naturellement, les données utilisées, et notamment la première donnée et la donnée de sortie, peuvent être des données intermédiaires d'un algorithme cryptographique.
Selon un premier mode de réalisation, le second algorithme est identique au premier algorithme et est appliqué à la donnée d'entrée, et ladite première donnée est la donnée de sortie. Selon un second mode de réalisation, le second algorithme est l'inverse du premier algorithme et est appliqué à la donnée de sortie, et ladite première donnée est la donnée d'entrée. Ces modes de réalisation sont pratiques à mettre en œuvre du fait de l'identité (premier mode) ou de la proximité (second mode) des deux algorithmes. En variante, la première donnée est une donnée intermédiaire utilisée au cours du premier algorithme cryptographique. Le second algorithme cryptographique peut alors correspondre à une partie seulement du premier algorithme cryptographique. Le premier algorithme cryptographique est par exemple un algorithme cryptographique à clé symétrique. Il peut s'agir plus précisément d'un algorithme du type DES ou du type AES. Selon ces possibilités, la dérivation de clé peut être masquée au moyen de la première valeur aléatoire. De manière plus générale, le premier algorithme cryptographique peut d'ailleurs être un algorithme du type DES ou du type AES masqué au moyen de la première valeur aléatoire. Selon une possibilité de mise en œuvre, le premier algorithme cryptographique peut donc être un algorithme du type DES masqué et à dérivation de clé masquée ou un algorithme du type AES masqué et à dérivation de clé masquée. La sécurité du procédé de traitement de données s'en trouve renforcée. Selon une autre possibilité de mise en œuvre, le premier algorithme cryptographique est un algorithme d'authentification de téléphonie mobile. Selon un exemple d'utilisation des valeurs aléatoires, le premier algorithme cryptographique est masqué par la première valeur aléatoire et le second algorithme cryptographique est masqué par la seconde valeur aléatoire.
Cette solution permet une différenciation particulièrement efficace de la première donnée et de la donnée de vérification en cas d'attaque de chacun des algorithmes cryptographiques par une faute du même type. Le procédé de traitement de données est par exemple mis en œuvre dans une carte à microcircuit. L'invention propose également un dispositif de traitement de données comprenant des moyens pour générer une première valeur aléatoire, des moyens pour mettre en œuvre un premier algorithme cryptographique utilisant la première valeur aléatoire, impliquant dans au moins un calcul une première donnée et générant une donnée de sortie à partir d'une donnée d'entrée, des moyens pour générer une seconde valeur aléatoire, des moyens pour mettre en œuvre un second algorithme cryptographique utilisant la seconde valeur aléatoire et générant une donnée de vérification, et des moyens pour comparer la donnée de vérification à la première donnée pour vérification de l'exécution correcte du premier algorithme. Ce dispositif est par exemple une carte à microcircuit. L'invention propose enfin un programme d'ordinateur comprenant des instructions aptes à mettre en œuvre le procédé évoqué auparavant, lorsque lesdites instructions sont exécutées par un microprocesseur. D'autres caractéristiques et avantages de la description apparaîtront à la lumière de la description qui suit, faite en référence aux dessins annexés, dans lesquels : - la figure 1 a représente schématiquement un dispositif de traitement de données dans lequel est mise en œuvre l'invention ; - la figure 1b représente une réalisation possible du dispositif de la figure 1a ; - la figure 2 illustre un premier mode de réalisation du procédé selon l'invention ; - la figure 3 illustre un second mode de réalisation possible du procédé selon l'invention. La figure 1a représente schématiquement un dispositif de traitement de données 40 dans lequel la présente invention est mise en œuvre. Ce
dispositif 40 comprend un microprocesseur 10, auquel est associée une mémoire 20, par exemple au moyen d'un bus 50. Le dispositif de traitement de données 40, et précisément le microprocesseur 10 qu'il incorpore, peuvent échanger des données avec des dispositifs extérieurs au moyen d'une interface de communication 30. On a schématiquement représenté sur la figure 1a la transmission d'une donnée d'entrée E reçue d'un dispositif extérieur (non représenté) et transmise de l'interface de communication 30 au microprocesseur 10. De manière similaire, on a représenté la transmission d'une donnée de sortie S du microprocesseur 10 vers l'interface de communication 30 à destination d'un dispositif extérieur. Bien que, pour l'illustration, les données d'entrée E et les données de sortie S figurent sur deux flèches différentes, les moyens physiques qui permettent la communication entre le microprocesseur 10 et l'interface 30 pourront être réalisés par des moyens uniques, par exemple un port de communication série ou un bus. Le microprocesseur 10 est apte à exécuter un logiciel qui permet au dispositif de traitement de données 40 d'exécuter un procédé conforme à l'invention dont des exemples seront donnés plus loin. Le logiciel est composé d'une série d'instructions de commande du microprocesseur 10 qui sont par exemple stockées dans la mémoire 20. En variante, l'ensemble microprocesseur 10 - mémoire 20 peut être remplacé par un circuit à application spécifique qui comprend alors des moyens de mise en œuvre des différentes étapes du procédé de traitement de données sécurisé. La figure 1b représente une carte à microcircuit qui constitue un dispositif de traitement de données conforme à l'invention tel que représenté à la figure 1a. L'interface de communication 30 est dans ce cas réalisée au moyen des contacts de la carte à microcircuit. La carte à microcircuit incorpore un microprocesseur 10 et une mémoire 20 comme représenté sur la figure 1 a. La figure 2 représente sous forme d'un organigramme les étapes d'un premier exemple de procédé de traitement de données sécurisé conforme à l'invention.
Le procédé commence à l'étape E202 où le microprocesseur 10 reçoit de l'interface de communication 30 une donnée d'entrée E qui doit être traitée au moyen d'un algorithme cryptographique au sein du dispositif de traitement de données 40, et ce afin d'obtenir une donnée de sortie S. On décrit ici le cas d'un algorithme cryptographique dans un cadre général ; en pratique, cet algorithme cryptographique pourra permettre par exemple un encryptage, un décryptage, une signature ou une authentification des données d'entrée. Lorsque les données d'entrée E sont reçues par le microprocesseur 10 (étape E202), on passe à l'étape E204 où le microprocesseur 10 génère une première valeur aléatoire A1. On passe alors à l'étape E206 à laquelle on applique aux données d'entrée E un algorithme cryptographique F« masqué au moyen de la première valeur aléatoire A1. L'algorithme cryptographique F« est par exemple un algorithme à clé symétrique qui met en oeuvre une clé secrète K. Dans un mode de réalisation possible, il s'agit d'un algorithme du type DES. La mise en œuvre de l'algorithme cryptographique FK à l'étape E206 est masquée avec pour masque la première valeur aléatoire A1 générée à l'étape E204. A titre d'exemple, le masquage utilisé peut être un ou plusieurs masquage(s) parmi ceux décrits dans les demandes de brevet WO 99/48239 et FR 2 820 577. L'application de l'algorithme cryptographique FK aux données d'entrée E a pour résultat les données de sortie S. On peut remarquer que, pour un algorithme cryptographique F donné, le résultat (données de sortie S) ne dépend que des données d'entrée E et de la clé K utilisée et ne dépend pas du masque A1 (première valeur aléatoire) utilisé. Comme vu en introduction, le masque A1 permet en effet de modifier certaines données et/ou étapes intermédiaires de l'algorithme FK, afin de compliquer la détection de la clé secrète K, sans toutefois influer sur le résultat final de celui-ci. Lorsque les données de sortie S ont été obtenues à l'étape E206, on passe à l'étape E208 à laquelle le microprocesseur 10 génère une seconde valeur aléatoire A2. En variante, l'étape E208 de génération d'une seconde
valeur aléatoire A2 pourrait être réalisée à un autre moment, par exemple au moment de la génération de la première valeur aléatoire A1 (étape E204). Dans tous les cas, la seconde valeur aléatoire A2 est générée de manière aléatoire indépendamment de la première valeur aléatoire A1 et sera donc dans le cas le plus général différente de la première valeur aléatoire A1. On passe alors à l'étape E210, à laquelle on applique aux données d'entrée E l'algorithme cryptographique FK déjà utilisé à l'étape E206, en utilisant cette fois comme masque la seconde valeur aléatoire A2. L'algorithme cryptographique FK appliqué aux données d'entrée E et masqué par la seconde valeur aléatoire A2 donne pour résultat une donnée de vérification V. Comme on l'a vu précédemment, le résultat de l'algorithme cryptographique FK appliqué aux données d'entrée E ne dépend pas du masque (A1 ou A2) utilisé. En fonctionnement normal, le résultat obtenu à l'étape E210 (donnée de vérification V) avec le masque A2 devrait donc être égal au résultat obtenu à l'étape E206 (donnée de sortie S) avec le masque A1. En fonctionnement normal, la donnée de vérification V doit donc être égale à la donnée de sortie S. C'est pourquoi on teste à l'étape E212 (qui suit l'étape E210) si la donnée de vérification V est bien égale à la donnée de sortie S. Dans l'affirmative, c'est-à-dire quand la comparaison des résultats des algorithmes cryptographiques appliqués respectivement aux étapes E206 et E210 permet de supposer que ceux-ci ont été réalisés sans fautes, on passe à l'étape E214 où on peut donc poursuivre le traitement réalisé par le microprocesseur 10, par exemple en utilisant la donnée de sortie S obtenue. En effet, on suppose dans ce cas que l'exécution de l'algorithme cryptographique qui a permis d'obtenir cette donnée de sortie S n'a pas fait l'objet d'une attaque. En revanche, si on détermine à l'étape E212 que la donnée de vérification V est différente de la donnée de sortie S, on passe à l'étape E216 où l'on conclut à l'échec de l'algorithme sécurisé d'obtention de la valeur de sortie S. En effet, si la donnée de vérification V n'est pas identique à la donnée de sortie S, on en conclut que l'exécution de l'un des algorithmes
cryptographiques des étapes E206 et E210 a été perturbée, ce qui traduit en général une attaque par génération de fautes. Les conséquences de l'échec du procédé sécurisé à l'étape E216 pourront être différentes selon les applications. En général, on évitera l'utilisation et/ou la communication de la valeur de sortie S à l'extérieur de la carte à microcircuit afin d'éviter toute utilisation frauduleuse possible d'une donnée de sortie obtenue au moyen d'un algorithme cryptographique dont l'exécution a été perturbée. On remarque en outre que le procédé de traitement de données sécurisé qui vient d'être décrit est protégé contre des attaques par fautes au cours desquelles la même faute serait appliquée aux étapes E206 et E210. En effet, l'utilisation d'une première valeur aléatoire A1 et d'une seconde valeur aléatoire A2, différentes l'une de l'autre dans le cas le plus général, permet d'impliquer des étapes et/ou des données différentes lors des mises en œuvre successives de l'algorithme cryptographique FK aux étapes E206 et E210. Ainsi, une même attaque appliquée à ces deux étapes générera des résultats différents, qui seront alors détectables à l'étape E212 de comparaison des données de vérification V aux données de sortie S. Le procédé décrit ci-dessus n'est donc pas seulement protégé contre les attaques à génération de fautes, au moyen de la comparaison de deux itérations différentes de l'algorithme cryptographique FK, mais aussi contre les attaques à génération de fautes dans lesquelles deux fautes identiques sont successivement générées, grâce au masquage de chaque itération de l'algorithme cryptographique au moyen d'un masque différent. La figure 3 décrit un second exemple de réalisation d'un procédé de traitement de données sécurisé selon l'invention. Le procédé commence à l'étape E302 par la réception au moyen de l'interface de communication 30 de données d'entrée E par le microprocesseur 10. Après réception des données d'entrée E, le microprocesseur 10 génère une première valeur aléatoire A1 à l'étape E304.
Le microprocesseur peut alors, à l'étape E306, appliquer aux données d'entrée E un algorithme cryptographique FK à clé secrète symétrique K et masqué au moyen de la première valeur aléatoire A1. Dans l'exemple décrit, l'algorithme cryptographique utilisé est du type DES dont le masquage peut être réalisé lors de la dérivation de la clé, comme décrit dans la demande de brevet FR 2 820 577. L'exécution, masquée par la première valeur aléatoire A1 , de l'algorithme cryptographique FK, appliquée aux données d'entrée E, permet d'obtenir les données de sortie S qui constituent normalement le résultat souhaité du procédé de traitement de données. Toutefois, afin de vérifier que l'exécution du procédé n'a pas subi d'attaque par génération de fautes, on procède aux étapes suivantes qui permettront de vérifier l'absence de fautes lors de l'exécution de l'algorithme cryptographique à l'étape E306. Ainsi, on passe à l'étape E308 où le microprocesseur 10 génère une seconde valeur aléatoire A2. Le microprocesseur applique ensuite, à l'étape E310, un second algorithme cryptographique GK, qui est l'inverse de l'algorithme cryptographique FK, aux données de sortie S qui viennent d'être obtenues. Le second algorithme cryptographique GK est par ailleurs masqué au moyen de la seconde valeur aléatoire A2. Ce masquage est par exemple réalisé par le masquage de l'étape de dérivation de la clé de l'algorithme DES. En temps normal, et notamment si les exécutions respectives des algorithmes cryptographiques FK et GK n'ont pas subi d'attaque par génération de fautes, le résultat V de l'application du second algorithme cryptographique GK, inverse du premier algorithme cryptographique FK, aux données de sortie S est égal aux données d'entrée E. Une différence entre le résultat V du second algorithme cryptographique GK et les données d'entrée E indique donc une erreur dans l'une au moins des exécutions respectives des algorithmes cryptographiques FK et GK, et signale par conséquent un risque d'attaque par génération de fautes. On rappelle que le masquage des algorithmes cryptographiques FK et GK par des masques différents (première valeur aléatoire A1 pour le premier
algorithme cryptographique FK et seconde valeur aléatoire A2 pour le second algorithme cryptograhique GK) ne modifie pas le résultat de ces algorithmes cryptographiques, mais seulement toutes ou partie des données intermédiaires et/ou les étapes mises en jeu dans ces algorithmes. L'étape suivante E312 consiste donc à vérifier l'égalité du résultat
(ou donnée de vérification) V du second algorithme cryptographique GK à la donnée d'entrée E, afin de détecter une éventuelle attaque par génération de fautes. Si on détermine à l'étape E312 que la donnée de vérification V n'est pas égale à la donnée d'entrée E, ce qui indique un risque que l'exécution du premier algorithme cryptographique FK ait été attaquée par génération de fautes, on passe à l'étape E316 à laquelle le microprocesseur 10 considère l'échec de l'exécution correcte du premier algorithme cryptographique FK et par conséquent la non-disponibilité d'une donnée de sortie sécurisée. La conséquence de l'échec (étape E316) dépend naturellement de l'application envisagée et consiste en général à ne pas utiliser la donnée de sortie S calculée à l'étape E306. Si au contraire on détermine à l'étape E312 que la donnée de vérification V obtenue par application du second algorithme cryptographique GK est bien égale à la donnée d'entrée E, le procédé mis en œuvre par le microprocesseur 10 peut se poursuivre normalement, par exemple par l'utilisation des données de sortie S (étape E314), puisque l'on suppose alors que l'exécution des algorithmes cryptographiques s'est réalisée sans erreur et par conséquent sans attaque par génération de fautes. On remarque en outre que le procédé de traitement de données qui vient d'être décrit est sécurisé contre des attaques à génération de fautes particulièrement sophistiquées. En effet, un attaquant peut générer une faute à l'étape p de l'algorithme cryptographique FK ( .e. au round p dans le cas de l'algorithme DES) et le complémentaire de cette faute à l'étape n-p de l'algorithme cryptographique GK (n étant le nombre total d'étapes dans chacun des algorithmes) en espérant ainsi obtenir une donnée de vérification V identique à la donnée d'entrée E malgré l'erreur provoquée sur la donnée de
sortie S. Toutefois, grâce à l'utilisation des deux valeurs aléatoires A1 , A2 différentes, les fautes auront en fait des conséquences différentes selon l'algorithme considéré et le second algorithme ne permettra donc pas de revenir à une donnée de vérification V égale à la donnée d'entrée E. L'attaque sera ainsi détectée. L'invention n'est naturellement pas limitée aux deux modes de réalisation qui viennent d'être décrits. Notamment, la vérification de la bonne exécution d'un algorithme cryptographique par comparaison des résultats de deux algorithmes cryptographiques n'implique pas forcément les données d'entrée ou les données de sortie. En effet, on pourrait penser à comparer une donnée intermédiaire du premier algorithme cryptographique à une donnée de vérification correspondante générée par le second algorithme cryptographique. Dans le même ordre d'idée, bien que les algorithmes cryptographiques mentionnés en tant qu'exemples dans la description qui précède soient du type DES, l'invention s'applique à d'autres types d'algorithmes cryptographiques, notamment les algorithmes du type AES et les algorithmes d'authentification pour la téléphonie mobile, tels que ceux conformes à la norme GSM ou à la norme UMTS.