Procédé de traitement de données sécurisé et dispositif associé
La présente invention concerne un procédé de traitement de données sécurisé. L'invention concerne également un dispositif associé à ce type de procédé. Dans le domaine du traitement d'informations sécurisé, on utilise fréquemment des données telles qu'une clé cryptographique ou un certificat au cours de la mise en œuvre d'un algorithme sécurisé dont le but est de protéger l'accès à certaines fonctionnalités protégées. Si, par l'observation d'une grandeur physique ou d'un résultat après génération de faute, on peut déduire la valeur de ces données, la sécurisation de l'opération n'est plus assurée. Ces systèmes sécurisés sont ainsi l'objet d'attaques par génération de faute, dans lesquelles l'attaquant cherche à perturber une étape de préparation des données afin que celles-ci prennent une valeur prévisible, par exemple la valeur d'initialisation de la mémoire concernée. Sans mesure spécifique, la sécurité du système n'est alors plus assurée. Un exemple d'un tel système est une carte à microcircuit qui reçoit pour l'exécution d'une opération non seulement un code de commande (instruction codée selon une certaine norme ou langage), mais également un code d'authentification du code de commande (ou MAC de l'anglais "Message Authentication Code") qui permet à la carte à microcircuit de vérifier que la commande est autorisée. En fonctionnement normal, la carte à microcircuit applique un algorithme cryptographique utilisant une clé secrète au code de commande afin
d'obtenir le code d'authentification normalement associé à cette commande, et stocke ce code d'authentification dans une mémoire tampon pour le comparer ultérieurement au code d'authentification reçu par la carte avec le message de commande. Une comparaison du code ainsi calculé par la carte et du code reçu permettra ainsi de vérifier que l'utilisateur qui a fourni le code d'authentification reçu est bien autorisé à effectuer l'opération concernée. Toutefois, dans les systèmes connus, si un attaquant réussit à perturber le stockage du code calculé par l'algorithme cryptographique afin que la mémoire tampon ne soit pas modifiée et demeure ainsi à sa valeur d'initialisation (par exemple à la valeur nulle), il pourra facilement forcer l'exécution de l'opération protégée en transmettant à la carte à microcircuit un code d'authentification égal à la valeur d'initialisation, qui permettra alors une comparaison positive entre le code reçu et le code calculé, et ainsi l'exécution de l'opération sans autorisation véritable. Afin de contrecarrer ce type d'attaque dans les systèmes qui utilisent au cours d'une opération particulièrement sensible une information écrite en mémoire au cours d'une étape précédente, l'invention propose un procédé de traitement de données sécurisé, caractérisé en ce qu'il comprend les étapes suivantes : - remplissage d'une zone de mémoire par une valeur de remplissage ; - écriture d'une première donnée dans cette zone ; - lecture dans cette zone d'une seconde donnée reprenant au moins une partie de la première donnée telle qu'elle a été écrite dans cette zone ; - exécution d'une opération utilisant la seconde donnée. Naturellement, en fonctionnement normal, la seconde donnée reprend la partie de la première donnée à l'identique. Au contraire, lorsque ce procédé est perturbé par une faute générée par un attaquant et que l'écriture de la première donnée n'est pas réalisée, la seconde donnée est égale à une partie au moins de la valeur de remplissage, qui diffère de la valeur
d'initialisation de la mémoire et est inconnue de l'attaquant, et demeure par conséquent imprévisible pour l'attaquant. Afin d'améliorer encore la sécurité du système, la valeur de remplissage peut être une valeur aléatoire. On considère ici comme valeur aléatoire une valeur générée par un procédé qui tend à la rendre imprévisible, telles que les valeurs générées au sein des microcontrôleurs sécurisés pour carte à puce (grâce à des ressources, par exemple matérielles, prévues par le concepteur du microcontrôleur), ou plus généralement au sein des systèmes informatiques ; ce type de valeur est parfois dénommé "pseudo-aléatoire". Afin d'améliorer la sécurité, on peut également prévoir que : - la première donnée est indépendante de la valeur aléatoire ; - l'exécution de l'opération est indépendante de la valeur aléatoire. Lorsque l'opération utilisant la seconde donnée consiste à vérifier si la seconde donnée vérifie un critère prédéterminé, le procédé comprend par exemple une étape d'exécution d'une opération protégée en cas de vérification positive. L'utilisation de l'invention est notamment intéressante dans ce cas de figure. Selon une première possibilité, le procédé comprend une étape de calcul de la première donnée. Dans ce cas, afin d'améliorer la sécurité, ladite zone de mémoire est inchangée jusqu'à l'étape de calcul de la première donnée. Le calcul de la première donnée comprend par exemple une étape d'application d'un algorithme cryptographique à clé secrète. Cette technique est particulièrement pratique. Dans une mise en œuvre possible, le procédé comprend une étape de comparaison de la seconde donnée à un code d'authentification. Selon une seconde possibilité, le procédé comprend une étape de lecture de la première donnée sur un support d'information. Dans ce cas, afin d'améliorer la sécurité, ladite zone de mémoire est inchangée jusqu'à l'étape de lecture de la première donnée sur le support d'information.
L'invention est notamment intéressante lorsque la zone de mémoire est une zone de mémoire volatile. Elle s'applique toutefois à tout type de mémoire. Dans une application particulière de l'invention, le procédé comprend les étapes suivantes : - réception d'un code de commande et d'un code d'authentification ; - calcul de la première donnée par application d'un algorithme cryptographique à clé secrète au code de commande ; - comparaison de la seconde donnée au code d'authentification ; - exécution de l'opération correspondant au code de commande si la comparaison est positive. Selon une alternative, l'opération utilisant la seconde donnée est une émission de la seconde donnée. L'invention propose donc un procédé de sécurisation d'une opération protégée, caractérisé en ce qu'il comprend les étapes suivantes : - remplissage d'une zone de mémoire par une valeur de remplissage ; - écriture dans cette zone d'une donnée conditionnant l'exécution future de l'opération protégée. Selon une réalisation pratique, le procédé comprend une étape de calcul de ladite donnée conditionnant l'exécution au moyen d'un algorithme cryptographique. En variante, le procédé comprend une étape de lecture de ladite donnée conditionnant l'exécution sur un support d'information. L'invention propose également un dispositif apte au traitement de données sécurisé, caractérisé en ce qu'il comprend: - des moyens pour remplir une zone de mémoire par une valeur de remplissage ; - des moyens pour écrire une première donnée dans cette zone ; - des moyens pour lire dans cette zone une seconde donnée comprenant au moins une partie de la première donnée telle qu'elle a été écrite dans cette zone ;
- des moyens pour exécuter une opération utilisant la seconde donnée. Le dispositif peut inclure des caractéristiques équivalentes aux caractéristiques optionnelles du procédé décrites ci-dessus, et ainsi les avantages qui découlent de chacune. En outre, le dispositif peut être une carte à microcircuit.
Ainsi, l'invention propose un dispositif apte à sécuriser l'exécution d'une opération protégée, caractérisé en ce qu'il comprend : - des moyens pour remplir une zone de mémoire par une valeur de remplissage ; - des moyens pour écrire dans cette zone une donnée conditionnant l'exécution future de l'opération protégée. Enfin, l'invention propose un programme d'ordinateur comprenant des instructions aptes à mettre en œuvre le procédé décrit ci-dessus, 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 1a représente schématiquement un dispositif de traitement de données incorporant un premier mode de réalisation de l'invention ; - la figure 1 b représente une réalisation possible du dispositif de la figure 1a ; - la figure 2 illustre un procédé selon le premier mode de réalisation de l'invention en fonctionnement normal ; - la figure 3 illustre le procédé selon ce premier mode lorsqu'il subit une attaque par génération de fautes ; - la figure 4 représente schématiquement des dispositifs impliqués dans un second mode de réalisation de l'invention ; - la figure 5 illustre un procédé selon le second mode de réalisation de l'invention en fonctionnement normal ;
- la figure 6 illustre un procédé selon le second mode de réalisation de l'invention lorsqu'il subit une attaque par génération de faute ; - la figure 7 représente schématiquement des dispositifs impliqués dans un troisième mode de réalisation de l'invention ; - la figure 8 illustre un procédé selon le troisième mode de réalisation de l'invention en fonctionnement normal. 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 peut être 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 des données d'entrées CMD et MAC 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 CMD, MAC 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 un exemple sera donné 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 sécurisation.
La figure 1 b 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 cela est représenté sur la figure 1a. La figure 2 représente sous forme d'un organigramme les étapes d'un premier exemple de procédé de sécurisation conforme à l'invention. Le procédé est initié par la réception de données d'entrée CMD et MAC par le microprocesseur 10 au moyen de l'interface de communication 30. Ces données d'entrée sont par exemple reçues d'un dispositif extérieur qui souhaite effectuer une opération protégée au sein du dispositif 40. La donnée d'entrée CMD définit un code de commande associé à l'opération protégée, c'est-à-dire qu'elle définit quelle opération le microprocesseur 10 doit réaliser. La donnée d'entrée MAC est quant à elle un code d'authentification du message (en anglais "message authentication code", d'où l'appellation MAC) dont la validité conditionne l'exécution de l'opération protégée. Le code d'authentification du message MAC est en général obtenu à partir du code de commande CMD au moyen d'un algorithme cryptographique à clé secrète et typiquement d'une fonction de hachage telle que MD5 ou SHA- 1. Les données d'entrée CMD et MAC sont sauvegardées dès leur réception, par exemple dans la mémoire 20. La réception et la mémorisation (ou stockage) des données d'entrée CMD, MAC sont représentées sur la figure 2 par l'étape E202. Les étapes qui suivent permettent de vérifier que le code d'authentification MAC correspond effectivement au code de commande CMD reçu et ainsi que ce dernier a bien été émis par une entité autorisée. Cette vérification est sécurisée contre les attaques par génération de faute comme cela ressortira plus particulièrement dans la partie de la description relative à la figure 3.
Une fois que le microprocesseur 10 a reçu et sauvegardé dans la mémoire 20 les données d'entrée CMD et MAC, il génère une valeur aléatoire A à l'étape E204. La valeur aléatoire A est alors sauvegardée dans une mémoire tampon (parfois dénommée selon le vocable anglais "buffet") MAC. Précisément, le microprocesseur 210 commande l'écriture de la valeur aléatoire A dans la mémoire tampon MAC. La mémoire tampon MAC (qui est donc une zone de mémoire, par exemple une zone de la mémoire 20) est utilisée dans la suite pour mémoriser un code d'authentification calculé, comme décrit en détail ci-après. Les étapes E204 et E206 permettent donc l'initialisation (c'est-à-dire en pratique le remplissage) de la mémoire tampon MAC à une valeur aléatoire A. Lorsque la mémoire tampon MAC est initialisée avec la valeur aléatoire A, on procède alors à l'étape E208 à laquelle on calcule le code d'authentification du message correspondant au code de commande CMD reçu, au moyen d'un algorithme cryptographique F qui utilise une clé secrète K stockée sur le dispositif 40, par exemple au sein de la mémoire 20. Préférentiellement, on utilise un algorithme de hachage, typiquement un algorithme MD5 ou SHA-1. Le résultat du calcul cryptographique est alors stocké dans la mémoire tampon MAC où elle remplace la valeur aléatoire A d'initialisation. Précisément, le microprocesseur 210 commande l'écriture du résultat du calcul cryptographique dans la mémoire tampon MAC prévue à cet effet. Les étapes E206 et E208 peuvent éventuellement être séparées par d'autres étapes de fonctionnement du système ; cette séparation permet d'ailleurs d'augmenter la sécurisation du système puisqu'il est plus difficile dans ce cas de réaliser une attaque par génération de faute sur les deux étapes. Naturellement, l'algorithme cryptographique F et la clé secrète K utilisés à l'étape E208 correspondent à ceux qui ont été utilisés par le dispositif extérieur qui demande l'exécution de l'opération sécurisée pour la génération de la donnée d'entrée MAC. Ainsi, si le dispositif extérieur est autorisé à
demander l'exécution de l'opération protégée désignée par le code de commande CMD, il est en possession de la clé secrète K et peut ainsi fournir le code d'authentification MAC valide. Dans ce cas, le code d'authentification calculé MAC est égal au code reçu MAC. La vérification de cette égalité (étape E210), qui implique donc notamment la lecture de la mémoire tampon MAC, permet alors de passer à l'étape E212 à laquelle on réalise l'opération protégée associée au code de commande CMD. Au contraire, si le dispositif extérieur qui a fourni les données d'entrée CMD et MAC n'est pas autorisé à réaliser l'opération protégée associée au code de commande CMD, il n'est en général pas en mesure de fournir un code d'authentification MAC correct sans la connaissance de la clé secrète K. Sans autorisation d'effectuer l'opération protégée (c'est-à-dire sans connaissance de la clé secrète K), le code d'authentification reçu MAC est donc différent du code d'authentification calculé (lu dans la mémoire tampon MAC à l'étape E210) qui résulte quant à lui de l'application de l'algorithme cryptographique F avec connaissance de la clé secrète K. La réception d'un code d'authentification MAC non valide conduira donc à l'absence de vérification de l'égalité MAC=MAC à l'étape E210 et le procédé continue alors à l'étape E214 à laquelle le microprocesseur 10 détecte que l'exécution de l'opération protégée (définie par le code de commande CMD) n'est pas autorisée. Le microprocesseur 10 ne réalise donc pas dans ce cas l'opération protégée. Le microprocesseur 10 peut par ailleurs émettre un message d'erreur ou commander le blocage d'opération ultérieure, selon les applications. On va à présent décrire en référence à la figure 3 les étapes du procédé dans le cas où un attaquant tente, par la génération d'une faute, de contourner la protection qui vient d'être décrite, c'est-à-dire de réaliser l'opération protégée sans nécessiter la fourniture du code d'authentification de message valide. Dans ce type d'attaque, le dispositif 40 reçoit à l'étape E302 un code de commande CMD qui correspond à une opération protégée et un code d'authentification du message MAC non valide, par exemple de valeur nulle.
Une fois les données d'entrée CMD et MAC reçues, le microprocesseur procède à l'étape E304 de calcul d'une valeur aléatoire A, comme précédemment décrit à l'étape E204 de la figure 2. De même, la valeur aléatoire A est mémorisée dans une mémoire tampon MAC dans une étape E306 identique à l'étape E206 de la figure 2. Poursuivant le fonctionnement normal décrit à la figure 2, l'étape suivante est l'opération particulièrement sensible de calcul du code d'authentification MAC qui correspond au code de commande CMD au moyen de l'algorithme cryptographique F et de la clé secrète K (étape E308). Si une attaque par génération de faute est appliquée lors de la réalisation de l'étape E308 au sein du microprocesseur 10, il existe une probabilité importante que cette étape ne soit pas réalisée correctement et que la mémoire tampon MAC ne soit pas modifiée comme elle devrait l'être (voir description relative à la figure 2). L'objectif des attaquants est naturellement que la mémoire tampon reste ainsi à sa valeur d'initialisation, qui serait sans les étapes E304 et E306 la valeur nulle que l'on retrouve en général dans les mémoires à leur initialisation, par exemple avant modification pour les mémoires non volatiles et après réservation pour les mémoires volatiles. En effet, on aurait ainsi égalité entre le code d'authentification MAC non valide reçu à l'étape E302 et la valeur mémorisée comme étant le code d'authentification calculé à l'étape E308, ce qui conduirait ainsi à la réalisation de l'opération protégée définie par le code de commande CMD avec un code d'authentification MAC non valide. Au contraire, les étapes E304 et E306 d'initialisation de la mémoire tampon MAC permettent de fixer la valeur préalable de mémoire tampon à une valeur non prévisible. Ainsi, lors de l'attaque par faute, même si l'étape E308 de calcul du code d'authentification lié au code de commande CMD est perturbée et que la mémoire tampon en demeure inchangée, l'égalité entre la valeur lue dans la mémoire tampon MAC et le code d'authentification reçu MAC ne sera pas vérifiée. L'attaquant ne pourra donc pas déterminer un code d'authentification MAC à fournir avec sa commande tel que MAC=MAC.
L'étape de vérification de l'égalité entre le code d'authentification reçu et le code d'authentification calculé de l'étape E310 (précédemment décrite comme étape E210) conduira donc à l'étape E314 où le microprocesseur 10 n'autorise pas l'exécution de l'opération protégée définie par le code de commande CMD, comme précédemment décrit à l'étape E214. On a représenté à la figure 4 un second mode de réalisation d'un dispositif 140 conforme aux enseignements de l'invention. Le dispositif 140, par exemple une carte à mémoire, comprend un microprocesseur 110 associé au moyen d'un bus 150 d'une part à une mémoire volatile 120 et d'autre part à une mémoire non-volatile 160. La mémoire vive est par exemple une mémoire du type dénommée selon l'acronyme anglais RAM (pour "Random Access Memory"). La mémoire morte 160 est par exemple du type effaçable et programmable électriquement, généralement dénommée selon l'acronyme anglais EEPROM (pour "Electrically Erasable Programmable Read Only Memory") et/ou du type ROM (pour "Read Only Memory"). Le microprocesseur 110 est apte, par exemple au moyen d'instructions stockées dans la mémoire non-volatile 160, à exécuter des procédés et notamment le procédé conforme à l'invention décrit en référence à la figure 5. Le dispositif 140 communique avec un dispositif externe 180 au moyen d'une interface 130. Dans ce but, le dispositif externe 180 possède également une interface 190 connectée à l'interface 130 du dispositif 140. Au sein du dispositif externe 180, un contrôleur 170 (par exemple du type microprocesseur ou microcontrôleur) est apte à traiter les informations reçues de l'interface 190 et à transmettre les informations traitées à destination du dispositif 140 au moyen toujours de l'interface 190. On a représenté schématiquement sur la figure 4 le transfert d'une information A2 du dispositif 140 vers le dispositif externe 180. Précisément, l'information A2 est générée au sein du microprocesseur 110, puis émise par celui-ci par l'interface 130. L'information A2 est ainsi communiquée au dispositif externe via l'interface 130 du dispositif 140, puis l'interface 190 du dispositif
180, et atteint de ce fait le contrôleur 170 comme également représenté sur la figure 4. Selon le procédé inverse, une information C émise par le contrôleur 170 peut être transmise au microprocesseur 110 via les interfaces 190 puis 130 comme représenté sur la figure 4. Comme déjà mentionné en référence à la figure 1a, les liaisons entre microprocesseur 110 et interface 130 et entre contrôleur 170 et interface 190 sont schématisées par deux flèches différentes, mais peuvent utiliser en pratique le même câblage physique. La figure 5 représente un processus d'authentification du dispositif externe 180 comme dispositif autorisé à commander l'exécution d'une opération protégée au sein du dispositif 140. Pour simplifier l'exposé, la figure 5 se limite au processus d'authentification du dispositif externe 180 par le dispositif 140 et ne mentionne pas les étapes préalables par lesquelles le dispositif externe 180 effectue une requête en vue d'effectuer l'opération protégée. Le processus d'authentification débute à l'étape E502 où le microprocesseur 110 génère une valeur aléatoire A2. La valeur aléatoire A2 générée est alors émise vers le dispositif externe 180 au cours d'une étape E504. Cette étape utilise naturellement les interfaces 130 et 190 comme décrit précédemment. A réception de la valeur aléatoire A2, le dispositif externe 180 procède à une étape E522 de calcul d'une donnée cryptée C par application d'un algorithme cryptographique F utilisant une clé secrète K à la valeur aléatoire A2 reçue. Ce calcul est par exemple réalisé au sein du contrôleur 170. Comme nous le verrons dans la suite, ce calcul permet de s'assurer que le dispositif externe 180 dispose de la clé secrète K (et donc de l'autorisation d'effectuer l'opération protégée), sans que cette vérification ne nécessite la transmission de la clé secrète K elle-même. La donnée cryptée C calculée par le dispositif externe 180 est alors transmise au dispositif 140 au moyen des interfaces 190 et 130 comme décrit sur la figure 4.
Le dispositif 140, et plus particulièrement son microprocesseur 110, reçoivent donc à l'étape E506 la donnée cryptée C telle qu'elle a été calculée par le dispositif externe 180. Dans les étapes qui suivent, le microprocesseur 110 va vérifier que cette donnée cryptée C a bien été obtenue par application de l'algorithme cryptographique F en connaissance de la clé secrète K. Comme on le décrira précisément, cette vérification est protégée grâce à l'invention contre les attaques par génération de faute. Dans ce but, le microprocesseur 110 génère à l'étape E508 une nouvelle valeur aléatoire A1. La nouvelle valeur aléatoire A1 est de préférence indépendante de la valeur aléatoire A2 qui a été communiquée à l'extérieur du dispositif 140. Par valeurs aléatoires indépendantes, on entend des valeurs aléatoires dont l'une n'est pas prévisible à partir de l'autre. On procède alors à l'étape E510 à laquelle le microprocesseur 110 commande l'écriture de la valeur aléatoire A1 dans une zone BUF de la mémoire volatile 120, c'est-à-dire le remplissage de la zone BUF par la variable aléatoire A1. Ce type de zone mémoire qui est utilisé comme nous le verrons dans la suite pour effectuer certains calculs est parfois dénommé selon le vocable anglais "buffer", traduit en général par mémoire tampon. Une telle zone mémoire est en général caractérisée une adresse dans la mémoire, ce qui correspond à une variable dans certains langages de programmation. A la fin de l'étape E510, la zone mémoire BUF est donc initialisée avec la valeur aléatoire A1 , c'est-à-dire avec une valeur non prévisible. Après l'étape E510 et éventuellement d'autres étapes, on procède à l'étape E512 à laquelle la clé secrète K stockée en mémoire non-volatile 160 est recopiée dans la zone mémoire BUF de la mémoire vive 120 afin de procéder aux calculs qui suivent et qui utilisent la clé secrète K. Lorsque la clé secrète K est présente en mémoire volatile 120, on peut procéder à l'étape E514 au calcul par le microprocesseur 110 d'une donnée cryptée C par application de l'algorithme cryptographique F avec la clé secrète K à la valeur aléatoire A2. En pratique, on utilise naturellement comme clé secrète la valeur présente dans la zone mémoire BUF lors de l'application
de l'algorithme cryptographique F. L'étape E514 comprend donc une sous- étape de lecture de la valeur stockée dans la zone BUF. En fonctionnement normal comme cela est décrit à la figure 5, la donnée cryptée C calculée par le microprocesseur 110 en connaissance de la clé secrète K donne un résultat identique au même calcul effectué par le dispositif externe 180 si celui-ci a connaissance de la clé secrète K. On comprend alors que la vérification de l'égalité entre les données cryptées C et C permet de s'assurer que le dispositif externe 180 est bien en possession de la clé secrète K, et est de ce fait autorisé à requérir l'exécution de l'opération protégée par le dispositif 140. Par conséquent, si on vérifie à l'étape E516 que les données cryptées C et C sont égales, on réalise à l'étape E518 l'exécution de l'opération protégée demandée par le dispositif externe 180 au dispositif 140, qui peut consister par exemple en une personnalisation du dispositif 140 par recopie de certaines données émises par le dispositif externe 180. Au contraire, si on détermine à l'étape E516 que la donnée cryptée reçue du dispositif externe 180 n'est pas égale à la donnée cryptée C calculée à l'étape E514, cela signifie que le dispositif externe 180 n'était pas en mesure d'effectuer l'algorithme cryptographique F avec la clé secrète K, et que le dispositif externe 180 n'est donc pas autorisé à réaliser l'opération protégée. On passe donc dans ce cas à l'étape E520 à laquelle l'opération protégée ne sera pas réalisée. On remarque que l'utilisation de la valeur aléatoire A2, par nature imprévisible, à laquelle le dispositif externe 180 doit appliquer l'algorithme cryptographique F avec la clé secrète K permet de vérifier que le dispositif externe a bien connaissance de la clé secrète K sans nécessiter le transfert de la clé secrète K elle-même, ce qui compromettrait grandement la sécurité d'un tel système. On va à présent décrire en référence à la figure 6 le fonctionnement du procédé de la figure 5 dans le cas où une attaque par génération de faute est générée par un attaquant.
On suppose dans ce cas que le dispositif externe 180 est en fait un attaquant qui requiert l'exécution de l'opération protégée par le dispositif 140 sans toutefois y être autorisé, c'est-à-dire sans connaissance de la clé secrète K. Le processus d'authentification commence à l'étape E602 par le calcul de la valeur aléatoire A2 comme déjà décrit à l'étape E502. La valeur aléatoire A2 est alors émise vers le dispositif externe 180 (ici l'attaquant) à une étape E604 équivalente de l'étape E504 de la figure 5. Le dispositif attaquant reçoit la valeur aléatoire A2, mais ne peut naturellement pas effectuer l'algorithme cryptographique utilisant la clé secrète K, puisqu'il n'a pas connaissance de cette dernière. Le dispositif attaquant va donc appliquer dans une étape E622 l'algorithme cryptographique F à la valeur A2 en utilisant comme clé secrète une valeur prédéterminée I, qui correspond par exemple à la valeur d'initialisation courante des mémoires vives (en général la valeur nulle ; dans certains cas, la valeur FF en hexadécimal). Comme nous le verrons, l'attaquant espère en effet générer une faute au cours du processus de vérification effectué par le microprocesseur 110 de manière à ce que la vérification ait lieu avec cette même valeur I en lieu et place de la clé secrète K. La donnée cryptée C calculée par l'attaquant en utilisant la valeur I est ensuite envoyée au dispositif 140 comme le prévoit normalement le processus d'authentification. A l'étape E606, la donnée cryptée C est donc reçue par le microprocesseur 110. Comme précédemment, la zone BUF de mémoire volatile 120 est initialisée avec une valeur aléatoire A1 , qui est donc imprévisible. Pour ce faire, le microprocesseur 110 génère la valeur aléatoire A1 à l'étape E608 et écrit cette valeur aléatoire A1 dans la zone mémoire BUF à l'étape E610. Le processus d'authentification doit se poursuivre alors à l'étape E612 par la recopie de la clé secrète K stockée dans la mémoire non-volatile 160 dans la zone mémoire BUF. L'étape E612 fait cependant l'objet d'une attaque par génération de faute, puisque l'attaquant souhaite voir effectuer l'algorithme cryptographique avec une valeur à laquelle il a accès, comme par exemple la valeur I d'initialisation de la mémoire volatile.
Comme représenté sur la figure 6, le résultat de l'attaque de l'étape E612, qui n'est donc pas normalement réalisée, est que la zone mémoire BUF, dans laquelle devait être inscrite la clé secrète K, est inchangée. Une fois l'attaque passée, le processus d'authentification reprend son cours normal, c'est-à-dire l'étape E614 de calcul de la donnée cryptée C. Comme on l'a vu, cette étape, qui applique en théorie l'algorithme cryptographique F à la valeur aléatoire A2 en utilisant la clé secrète K, consiste en pratique à lire le contenu de la zone mémoire BUF et à appliquer l'algorithme cryptographique F en utilisant la valeur lue dans la mémoire BUF comme clé secrète. Dans le cas présent, grâce à l'initialisation de la zone mémoire BUF à la valeur aléatoire imprévisible A1 , le calcul réalisé est en fait l'application de l'algorithme cryptographique F avec pour clé secrète la valeur aléatoire A1 à la valeur aléatoire A2. Le résultat (c'est-à-dire la donnée cryptée) C de cette étape E614 est donc hautement imprévisible, et ne sera dans le cas très général pas égale à la donnée cryptée C calculée au sein du dispositif externe 180. En conséquence, lors de l'étape E616 de vérification de l'égalité des données cryptées C et C (équivalente à l'étape E516 de la figure 5), l'égalité ne sera pas vérifiée et l'opération protégée sera donc interdite, comme représenté à l'étape E620. Comme on le voit, grâce à l'initialisation de la zone mémoire BUF avec la valeur aléatoire A1 , l'attaque par génération de faute conduit à utiliser la valeur aléatoire A1 au lieu de la clé secrète K, ce qui maintient l'impossibilité d'obtenir frauduleusement l'autorisation de réaliser l'opération protégée. On peut remarquer que les étapes E508 et E510 (ou l'étape E508 seulement) pourraient être situées ailleurs dans l'algorithme, comme par exemple avant l'étape E502 ou à la suite immédiate de l'étape E504, sans toutefois compromettre les avantages procurés par l'invention. On a représenté à la figure 7 un troisième mode de réalisation de l'invention.
Un dispositif 240 comprend un microprocesseur 210 relié à une mémoire 220 au moyen d'un bus, ainsi qu'une interface 230 qui permet au microprocesseur 210 d'entrer en connexion avec un dispositif extérieur, par exemple une carte à microcircuit 250. La carte à microcircuit 250 comprend elle aussi un microprocesseur
270 relié à une mémoire 280 par l'intermédiaire d'un bus. Une interface 260 de la carte à microcircuit 250 permet au microprocesseur 270 d'entrer en connexion avec des dispositifs extérieurs comme le dispositif 240 précédemment décrit. La figure 8 représente, sous forme d'un organigramme, un procédé conforme aux enseignements de l'invention et mis en œuvre par le dispositif 240. Ce procédé permet d'enregistrer au sein de la carte mémoire 250 une clé individuelle secrète k1 qui est générée selon un procédé sécurisé à partir d'une clé secrète K mémorisée au sein du dispositif 240, qui est par exemple dans ce cas une carte racine (aussi dénommée carte lot, en anglais "root card" ou "batch card"). La transaction est pilotée par un ordinateur non représenté. Le procédé conforme à l'invention commence par une étape E802 à laquelle le microprocesseur 210 génère une valeur aléatoire A. Dans une étape E804, la valeur aléatoire A est mémorisée dans une zone BUF de la mémoire 220 destinée au stockage de la clé individuelle k1 à mémoriser dans la carte 250. Une fois la valeur aléatoire A inscrite dans la zone mémoire BUF, on peut considérer que la zone mémoire BUF est initialisée avec une valeur imprévisible A. On passe alors à l'étape E806 à laquelle la clé individuelle k1 est calculée à l'aide d'un algorithme cryptographique F utilisant la clé secrète K. La donnée d'entrée kO de l'algorithme cryptographique est par exemple une clé individuelle générée précédemment. Le calcul utilise la zone mémoire BUF, notamment pour la mémorisation de son résultat k1.
Le procédé se poursuit alors par une étape E808 d'émission de la clé individuelle k1 qui vient d'être calculée à destination de la carte à mémoire 250. Plus précisément, le microprocesseur 210 lit la valeur de la zone mémoire BUF et la transmet au moyen de l'interface 230 à la carte à mémoire 250. On remarque que, de manière analogue à ce qui a été exposé pour les premier et second modes de réalisation, l'initialisation de la zone mémoire BUF avec une valeur imprévisible A rend inefficace toute attaque par génération de faute de l'étape de calcul cryptographique (ici l'étape de calcul cryptographique E806 qui mémorise le résultat dans la zone mémoire BUF). En effet, même si un attaquant essaie d'empêcher la réalisation correcte du calcul de la clé individuelle k1 afin d'obtenir une carte mémoire 250 avec une clé individuelle prévisible, son attaque est inefficace puisque la carte à mémoire 250 contient finalement la valeur d'initialisation de la zone mémoire BUF, c'est- à-dire la valeur aléatoire imprévisible A. Dans les modes de réalisation proposés ci-dessus, et de manière générale, la valeur aléatoire A, A1 pourrait être remplacée par une valeur déterministe non connue par l'attaquant et permettre ainsi de contrecarrer les attaques. Par exemple, il peut s'agir de la valeur courante du compteur d'authentification tel que celui utilisé dans les cartes SIM (acronyme communément utilisé issu de l'anglais "Subscriber Identity Module") pour limiter le nombre total d'authentifications effectuées par une carte pendant sa durée de vie.