FR 3012234 A1 20150424 FR 1360300 A 20131023 B12934 - 13-ZV2-0343 1 PROTECTION DE L'EXÉCUTION D'UN ALGORITHME CONTRE DES ATTAQUES PAR CANAUX CACHÉS Domaine La présente description concerne de façon générale des circuits électroniques et, plus particulièrement, les circuits exécutant des algorithmes cryptographiques et exploitant un 5 stockage en mémoire non volatile. Exposé de l'art antérieur Dans la plupart des applications exploitant des algorithmes cryptographiques, on met en oeuvre une protection contre des attaques par injection de fautes qui utilise un 10 compteur. Ce compteur est mis à jour à chaque exécution de l'algorithme afin de s'assurer qu'un attaquant ne procède pas à de multiples exécutions de l'algorithme pour en découvrir les informations secrètes (typiquement les clés). La mise à jour du compteur (incrémentation ou décrémentation) ainsi que le 15 stockage de sa nouvelle valeur en mémoire non volatile (typiquement une mémoire EEPROM) s'effectuent avant l'exécution de l'algorithme de façon à éviter qu'un attaquant interrompe le processus à la fin de l'algorithme et avant la mise à jour du compteur, ce qui rendrait la protection inefficace. 20 Les protections actuelles ne sont pas encore optimales et peuvent être améliorées. B12934 - 13-ZV2-0343 2 Résumé Un mode de réalisation de la présente description vise à pallier tout ou partie des inconvénients des solutions usuelles de protection de l'exécution d'un algorithme crypto5 graphique. Un autre mode de réalisation vise à proposer un procédé particulièrement adapté à l'algorithme AES. Un autre mode de réalisation vise à rendre la détection des phases d'écriture en mémoire non volatile et d'exécu- 10 tion de l'algorithme plus difficilement détectables notamment par analyse de la consommation du circuit exécutant ces fonctions. Ainsi, un mode de réalisation prévoit un procédé de protection de l'exécution d'un algorithme cryptographique dont 15 l'exécution est précédée d'une mise à jour d'un compteur destiné à être stocké en mémoire non volatile reprogrammable, dans lequel le stockage de la valeur du compteur dans la mémoire est effectué pendant l'exécution de l'algorithme. Selon un mode de réalisation, le procédé comporte les 20 étapes suivantes : activer la mémoire en vue d'une écriture ; écrire la valeur du compteur dans la mémoire ; désactiver la fonction d'écriture de la mémoire ; et exécuter l'algorithme entre les étapes d'activation et 25 de désactivation. Selon un mode de réalisation, l'étape d'écriture débute en même temps que l'exécution de l'algorithme. Selon un mode de réalisation, l'étape d'écriture débute après le début d'exécution de l'algorithme. 30 Selon un mode de réalisation, l'algorithme est un algorithme AES. Un mode de réalisation prévoit également un circuit d'exécution d'un algorithme cryptographique. B12934 - 13-ZV2-0343 3 Brève description des dessins Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en 5 relation avec les figures jointes parmi lesquelles : la figure 1 est une représentation schématique et sous forme de blocs d'un exemple de circuit électronique du type auquel s'appliquent les modes de réalisation qui vont être décrits ; 10 la figure 2 est un schéma blocs illustrant un processus usuel de mise à jour d'un compteur d'exécution d'un algorithme AES ; la figure 3 est un chronogramme illustrant la séquence d'exécution du processus de la figure 2 ; 15 la figure 4 représente, sous forme de blocs, un mode de réalisation du procédé de mise à jour d'un compteur en mémoire EEPROM et d'exécution d'un algorithme cryptographique ; la figure 5 illustre le fonctionnement d'une écriture en mémoire EEPROM ; et 20 la figure 6 est un chronogramme illustrant un mode de réalisation du procédé de protection. Description détaillée De mêmes éléments ont été désignés par de mêmes références aux différentes figures. Par souci de clarté, seuls 25 les étapes et éléments utiles à la compréhension des modes de réalisation qui vont être décrits ont été représentés et seront détaillés. En particulier, les étapes internes à l'algorithme AES, pris pour exemple, n'ont pas été détaillées, les modes de réalisation décrits étant compatibles avec les exécutions 30 usuelles d'un algorithme AES et ses différentes variantes. De plus, les processus de lecture et d'écriture dans une mémoire EEPROM n'ont été détaillés que pour les besoins de la présente description, le reste étant compatible avec les processus usuels. Dans la description qui suit, on fera référence à un 35 exemple d'algorithme AES. Toutefois, la présente description et B12934 - 13-ZV2-0343 4 ses variantes s'appliquent plus généralement à tout algorithme cryptographique pour lequel on souhaite compter le nombre d'exécutions et stocker la valeur de ce compteur dans une mémoire EEPROM de façon à protéger les quantités secrètes exploitées par l'algorithme. Par quantité secrète, on entend une information dont l'accès est réservé à des circuits ou utilisateurs autorisés. La figure 1 est un schéma bloc représentant un exemple de circuit électronique 1 du type auquel s'appliquent les modes de réalisation décrits. Un tel circuit comporte une unité de traitement 12 (PU), par exemple un microprocesseur, un microcontrôleur, une machine d'états en logique câblée, etc., une ou plusieurs mémoires 14 (MEM) volatiles ou non volatiles ; un ou plusieurs circuits exécutant des fonctions dépendant de l'application. Ces différentes fonctions ont été symbolisées par un bloc 16 (FCT) en figure 1. Les différents éléments du circuit 1 communiquent entre eux par un ou plusieurs bus 13 de données, d'adresses et de commandes, et avec d'autres éléments non représentés et un ou plusieurs circuits 15 constituant des interfaces d'entrée/sortie (I/O) avec l'extérieur. Dans les circuits visés par les modes de réalisation décrits, le circuit électronique 1 comporte en outre au moins une mémoire 2 (EEPROM) du type mémoire non volatile programmable et effaçable électriquement. La figure 2 représente, sous forme de schéma blocs, un exemple de processus usuel d'utilisation d'un compteur stocké dans une mémoire EEPROM pour protéger l'exécution d'un algorithme AES. A chaque exécution (bloc 22, AES) en plusieurs tours (n ROUNDS) de l'algorithme, un programme de séquencement des opérations provoque la vérification de la valeur d'un compteur (bloc 24, CHECK COUNT) pour s'assurer qu'un seuil en nombre d'exécutions n'est pas dépassé. Si le processus peut se poursuivre, la valeur du compteur COUNT est mise à jour (bloc 26, COUNT+1). Puis, cette valeur est stockée dans la mémoire EEPROM (bloc 28, STORE EEPROM). Une fois ces opérations B12934 - 13-ZV2-0343 effectuées, le circuit considère que l'algorithme peut être exécuté et le résultat résulte de cette exécution. L'exploitation faite des données manipulées par l'algorithme ne sera pas ici détaillée, les modes de réalisation 5 décrits étant compatibles avec les exploitations usuelles des données traitées par des algorithmes cryptographiques. La figure 3 est un chronogramme illustrant le séquencement des opérations de la figure 2. Avant un instant t'0, les étapes 24 et 26 de vérification et d'incrément du compteur sont exécutées et les valeurs sont stockées temporairement en mémoire volatile. Bien entendu, une étape de lecture du compteur en mémoire EEPROM précède l'étape de vérification 24. Entre des instants t'0 et t'1, on procède à l'écriture en mémoire EEPROM de la valeur mise à jour du compteur. Puis, entre l'instant t'1 (ou un instant légèrement postérieur) et un instant t'2, l'algorithme AES est exécuté. Ce mécanisme de protection de mise à jour du compteur avant exécution de l'algorithme AES permet d'éviter qu'un 20 attaquant n'interrompe le processus juste à la fin du calcul de l'AES sans que le compteur n'ait été mis à jour. Toutefois, il subsiste un risque qu'un attaquant détecte l'instant de début de l'exécution de l'algorithme (t'l) dans le processus par analyse de la consommation du circuit 25 (analyse statique SPA ou différentielle DPA), ce qui lui permet de concentrer ensuite le reste de son analyse sur l'exécution de l'AES. En effet, une écriture en mémoire EEPROM est particulièrement repérable dans une allure de consommation d'un 30 circuit électronique, notamment en raison du besoin supplémentaire d'énergie requis par rapport au fonctionnement normal du circuit pendant cette opération d'écriture. Par ailleurs, une opération d'écriture en mémoire EEPROM est généralement relativement longue (de une à quelques B12934 - 13-ZV2-0343 6 millisecondes), ce qui nuit à la rapidité de traitement du circuit électronique. La figure 4 est un schéma bloc à rapprocher de celui de la figure 2 et illustrant un mode de réalisation du procédé 5 de mise à jour d'un compteur en mémoire EEPROM et d'exécution d'un algorithme crytographique. La figure 5 est un chronogramme illustrant, de façon très schématique, les besoins en énergie d'une écriture dans une mémoire EEPROM. 10 La figure 6 illustre, sous forme de chronogrammes, le séquencement des étapes du procédé de la figure 4. A chaque besoin d'exécution de l'algorithme, par exemple AES (bloc 22), on commence par vérifier la valeur du compteur COUNT du nombre d'exécutions (bloc 24, CHECK COUNT). Si 15 la nouvelle exécution est autorisée, on met à jour le compteur (bloc 26, COUNT+1) par exemple en l'incrémentant. Puis, on prépare (bloc 42, EE START) la mémoire EEPROM pour une phase d'écriture. Les inventeurs tirent profit du fait qu'une écriture 20 en mémoire EEPROM peut se décomposer entre trois phases. Comme l'illustre la figure 5, une première phase START consiste à activer des circuits de pompe de charge pour produire une tension suffisamment élevée et permettre l'écriture dans les mémoires EEPROM. Pendant cette phase de démarrage, le niveau 25 d'énergie requis par le circuit atteint un premier niveau Ll. Puis, lorsque l'énergie disponible est suffisante, la mémoire peut commencer à être mise à jour pour écriture de données. Cela correspond à une deuxième phase (STORE) au cours de laquelle le niveau d'énergie consommée descend à un deuxième 30 niveau L2. Une fois l'écriture terminée, les circuits de pompe de charge sont désactivés ou mis au repos. Cela correspond à une troisième phase (CLOSE) à partir de laquelle on considère que l'écriture est terminée. B12934 - 13-ZV2-0343 7 La représentation de la figure 5 est très schématique et vise à illustrer la nouvelle interprétation effectuée par les inventeurs afin de tirer profit de ce découpage en trois phases pour, tout en préservant la protection de la valeur du compteur, permettre d'effectuer l'écriture de la valeur du compteur en même temps que l'exécution de l'algorithme AES. Les inventeurs ont en effet constaté que la durée d'écriture dans la mémoire EEPROM (phase STORE) est du même ordre de grandeur que la durée d'une exécution de l'algorithme 10 AES. Par ailleurs, les processeurs désormais présents dans les circuits électroniques disposent de la capacité suffisante pour exécuter deux opérations en parallèle, à savoir déclencher le stockage dans la mémoire EEPROM et procéder à l'exécution de 15 l'algorithme. Cette exécution parallèle est illustrée par les figures 4 et 6. Ainsi, l'étape 42 correspond à une étape de préparation de l'écriture mais pas à une étape complète d'écriture. 20 Cette étape s'effectue entre des instants t0 et t1 (figure 6). Une fois la mémoire EEPROM prête à stocker la valeur, on considère que l'on peut démarrer l'exécution de l'algorithme AES (bloc 22). Ce démarrage peut être immédiat ou légèrement postérieur comme illustré en figure 6. Puis, dans l'exemple de 25 la figure 6, à un instant t2, postérieur à l'instant t1, on provoque l'écriture proprement dite dans la mémoire EEPROM (bloc 44, figure 4, COUNT -> EE), c'est-à-dire la programmation de ses cellules. L'écriture proprement dite se termine à un instant t3 30 qui, dans l'exemple de la figure 6, est supposé antérieur à la fin de l'exécution de l'algorithme AES. Il reste à procéder à la désactivation des pompes de charge de la mémoire EEPROM (bloc 46, EE CLOSE), ce qui est effectué à un instant t4, postérieur à l'instant t3. De préférence, l'instant t4 est également posté- 35 rieur à la fin de l'exécution de l'algorithme AES. B12934 - 13-ZV2-0343 8 Un avantage du séquencement proposé est que la signature en courant de l'écriture dans la mémoire, qui peut conduire à un attaquant à interrompre cette écriture, lui fera interrompre également l'exécution de l'algorithme donc rendra inexploitable les données en sortie. Un autre avantage est que cette exécution en parallèle gagne au total du temps. On notera que l'instant de démarrage de l'algorithme peut intervenir dès que les circuits de pompe de charge (étape 42) sont actifs. De façon similaire, l'écriture en mémoire EEPROM peut intervenir dès la fin de cette préparation (instants t1 et t2 confondus). L'insertion d'un délai aléatoire entre les instants t1 et t2 est toutefois préférable pour désynchroniser les deux opérations (écriture en mémoire EEPROM et exécution de l'algorithme AES). Cette protection entraînera des difficultés supplémentaires pour tout attaquant désirant profiter de l'écriture en mémoire EEPROM pour s'aligner sur un moment particulier de l'algorithme exécuté. De même, les instants t3 et t4 peuvent être confondus, en particulier si l'exécution de l'algorithme AES est plus courte que l'étape 44 d'écriture de la valeur du compteur. Divers modes de réalisation ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. Ces modes de réalisation et variantes sont en outre combinables. De plus, la mise en oeuvre pratique des modes de réalisation qui ont été décrits est à la portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus et en utilisant des techniques en elles-mêmes usuelles. En particulier, l'adaptation du processus d'écriture en mémoire EEPROM ainsi que la programmation nécessaire de l'unité de traitement pour permettre cette exécution est à la portée de l'homme du métier à partir de ces indications fonctionnelles. Enfin, bien que l'on ait fait référence à une mémoire EEPROM, les modes de réalisation décrits s'appliquent plus généralement à toute REVENDICATIONS1. Procédé de protection de l'exécution (22) d'un algorithme cryptographique dont l'exécution est précédée d'une mise à jour d'un compteur (COUNT) destiné à être stocké en mémoire non volatile reprogrammable, dans lequel le stockage de la valeur du compteur (44) dans la mémoire est effectué pendant l'exécution de l'algorithme. 2. Procédé selon la revendication 1, comportant les étapes suivantes : activer (42) la mémoire en vue d'une écriture ; écrire (44) la valeur du compteur dans la mémoire ; désactiver (46) la fonction d'écriture de la mémoire ; et exécuter l'algorithme (22) entre les étapes d'activation et de désactivation. 3. Procédé selon la revendication 1 ou 2, dans lequel l'étape d'écriture débute en même temps que l'exécution de l'algorithme. 4. Procédé selon la revendication 1 ou 2, dans lequel l'étape d'écriture débute après le début d'exécution de l'algo20 rithme. 5. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel l'algorithme est un algorithme AES. 6. Circuit (1) d'exécution d'un algorithme cryptographique, adapté à la mise en oeuvre du procédé selon l'une 25 quelconque des revendications 1 à 5.