Brevet FR2916113A1 — publié le 20081114

L'invention concerne un procédé de traitement cryptographique d'un message au moyen d'une clé secrète. Dans le domaine de la cryptographie, on traite couramment des messages au moyen d'une clé secrète, par exemple mémorisée au sein d'une carte à microcircuit. Un tel traitement est par exemple réalisé dans le cadre de la signature du message concerné par le détenteur de la clé secrète (c'est-à-dire par le détenteur de la carte), ou dans le cadre du déchiffrage du message lorsque celui-ci est destiné au détenteur de la clé secrète (auquel cas le message a été chiffré au préalable, par exemple avec une clé publique associée à la clé secrète). Le traitement du message consiste en général en la mise en oeuvre d'un calcul dans lequel le message et la clé secrète sont considérés comme des nombres. Ainsi, l'algorithme RSA applique la clé secrète au message au moyen d'une opération d'exponentiation modulaire. Ce type d'opération est de ce fait la cible d'attaques de la part d'utilisateurs malveillants qui cherchent à connaître la clé secrète, généralement en vue d'une utilisation frauduleuse de celle-ci. Des contre-mesures ont donc été adoptées pour parer les attaques envisageables, comme par exemple le masquage des nombres utilisés décrit dans la demande de brevet FR 2 875 355 dans le cadre d'une mise en oeuvre de l'algorithme RSA utilisant le théorème des restes chinois (ou CRT). Afin de lutter contre les attaques dites par faute qui consistent à perturber le déroulement de l'algorithme cryptographique pour essayer d'en déduire des informations sur la clé secrète, il a été proposé de vérifier la mise en oeuvre correcte de l'algorithme cryptographique par la réalisation d'un calcul complémentaire, comme décrit par exemple dans la demande de brevet FR 2 867 635. Dans le cadre de l'algorithme RSA, une telle vérification pourrait être réalisée en appliquant, après exponentiation par la clé secrète, une exponentiation par la clé publique associée afin de vérifier que l'on retrouve le message initial. Cette technique est toutefois peu efficace sur le plan du temps de calcul et nécessite la connaissance de la clé publique, ce qui n'est pas toujours le cas. C'est pourquoi il a été proposé dans la demande de brevet FR 2 884 004 de mettre à jour deux variables complémentaires tout au long du calcul d'exponentiation modulaire et de vérifier une relation existant normalement à chaque instant entre ces deux variables en fin de calcul afin de s'assurer qu'aucune faute n'est survenue. Les inventeurs de la présente invention ont toutefois remarqué que la proximité de ces deux variables permettait des attaques qui ne remettraient pas en cause la relation existant entre elles, par exemple par modification de la clé secrète intervenant lors du calcul d'exponentiation modulaire. Afin de répondre notamment à ce problème, l'invention propose un procédé de traitement cryptographique d'un message au moyen d'une clé secrète, caractérisé en ce qu'il comprend les étapes suivantes : - détermination d'une troisième donnée et d'une cinquième donnée, avec calcul, en fonction au moins d'une première donnée issue du message et d'une seconde donnée issue de la clé secrète, de la troisième donnée et d'une quatrième donnée liées entre elles par une relation de vérification, et avec obtention de la cinquième donnée par combinaison de la quatrième donnée et d'une donnée représentative de la seconde donnée ; - vérification de la relation de vérification entre la troisième donnée et une combinaison de la cinquième donnée et de la seconde donnée. On s'assure ainsi non seulement de la cohérence du résultat du calcul, mais également de l'intégrité de la donnée issue de la clé secrète (seconde donnée), ce qui est intéressant notamment quand la relation est indépendante de la clé secrète. Afin d'améliorer encore la protection contre les attaques, on peut prévoir une étape de lecture de la seconde donnée dans une mémoire non- volatile entre l'étape de détermination et l'étape de vérification. L'étape de vérification est ainsi réalisée avec une seconde donnée nouvellement lue, par exemple en mémoire non-volatile. Dans le mode de réalisation décrit ci-après, on peut utiliser la troisième donnée en tant que résultat en cas de vérification positive à l'étape de vérification. Selon ce mode de réalisation, le calcul de la troisième donnée et de la quatrième donnée comprend au moins une étape de modification de la troisième donnée ou de la quatrième donnée selon qu'un bit de la seconde donnée vaut 0 ou 1. On peut alors prévoir en outre qu'à chaque étape de modification, la donnée représentative de la seconde donnée est modifiée de manière à mémoriser le bit de la seconde donnée utilisé à l'étape concernée. La donnée représentative peut par exemple être modifiée de manière à mémoriser ledit bit après l'étape de modification utilisant ledit bit, ce qui permet de mémoriser le bit effectivement utilisé. En pratique, on peut prévoir que la donnée représentative est modifiée par multiplication par deux puis par ajout dudit bit. Selon une forme possible de réalisation, la donnée représentative peut être mémorisée dans le registre mémorisant la seconde donnée, en particulier du fait de la libération d'espace dans ce registre au fur et à mesure de l'itération des étapes de modification. La relation de vérification est par exemple l'égalité modulaire entre ladite combinaison et le produit de la troisième donnée et du message. Par ailleurs, la combinaison peut être une opération de ou exclusif, d'utilisation particulièrement pratique. Le procédé de traitement dans son ensemble peut comprendre des étapes conformes au théorème des restes chinois (ou CRT), comme expliqué dans la suite. L'invention propose également un procédé de traitement cryptographique d'un message au moyen d'une clé secrète, comprenant une étape de : - appel à une routine avec pour paramètres au moins une première donnée issue du message et une seconde donnée issue de la clé secrète, la routine calculant, en fonction des paramètres reçus, une troisième donnée et une quatrième donnée liées entre elles par une relation de vérification, caractérisé en ce que la routine retourne la troisième donnée et une cinquième donnée obtenue par combinaison de la quatrième donnée et d'une donnée représentative de la seconde donnée telle que reçue par la routine, et en ce que le procédé comprend une étape de : - vérification de la relation de vérification entre la troisième donnée 10 et une combinaison de la cinquième donnée et de la seconde donnée. Les avantages du procédé précédemment décrit sont ici présents en particulier à l'encontre d'une attaque éventuelle visant à modifier les valeurs passées en paramètres lors de l'appel de la routine (ou sous-programme). Les caractéristiques optionnelles envisagées plus haut s'appliquent 15 ici de manière analogue et ne seront donc pas répétées. L'invention propose également, de manière originale en soi, un procédé de traitement cryptographique d'un message au moyen d'une clé secrète, dans lequel au moins une étape de traitement dépend d'un groupe d'au moins un bit de la clé secrète, caractérisé par les étapes suivantes : 20 - modification d'une variable de contrôle de manière à mémoriser le groupe utilisé lors de l'étape de traitement ; -comparaison de la variable de contrôle et d'une partie au moins de la clé secrète. On s'assure ainsi par une vérification a posteriori que les bits utilisés 25 lors du traitement correspondaient bien à ceux de la clé secrète et on prévient ainsi une éventuelle attaque par faute. Comme déjà mentionné plus haut, on peut en outre prévoir une étape de lecture d'une partie au moins de la clé secrète en mémoire non-volatile entre l'étape de modification et l'étape de comparaison pour renforcer la 30 vérification susmentionnée. On procède par exemple à un traitement d'erreur en cas de vérification négative à l'étape de comparaison. Selon un mode de réalisation, l'étape de traitement peut être mise en oeuvre pour chaque bit de la clé secrète. Dans ce cadre, la variable de contrôle est par exemple modifiée après chaque étape de traitement par multiplication par deux puis ajout du bit utilisé lors l'étape de traitement concernée, ce qui constitue une manière pratique de mémoriser les différents bits utilisés lors de l'itération des étapes de traitement. L'invention propose en outre un procédé de traitement cryptographique d'un message au moyen d'une clé secrète au sein d'une entité électronique comprenant une mémoire non-volatile, caractérisé par les étapes suivantes (de préférence prises dans cet ordre en particulier en ce qui concerne les étapes de lecture en mémoire non-volatile) : - première lecture d'une partie au moins de la clé secrète dans la mémoire non-volatile ; - calcul cryptographique, à partir d'une première donnée issue du message et d'une seconde donnée issue de la clé secrète lue lors de la première lecture, produisant une troisième donnée et une quatrième donnée liées entre elles par une relation de vérification ; - recombinaison selon l'algorithme CRT impliquant la troisième donnée et produisant une cinquième donnée ; -seconde lecture d'une partie au moins de la clé secrète dans la mémoire non-volatile ; - recombinaison selon l'algorithme CRT impliquant la quatrième donnée et la seconde donnée issue de la clé secrète lue lors de la seconde lecture, et produisant une sixième donnée ; - vérification de ladite relation entre la cinquième donnée et la sixième donnée. Comme déjà indiqué, les caractéristiques optionnelles envisagées plus haut à propos du premier procédé de traitement cryptographique évoqué s'appliquent de manière analogue aux autres procédés de traitement mentionnés et ne seront donc pas répétées. D'autres caractéristiques et avantages de l'invention apparaîtront en outre à la lumière de la description qui suit, faite en référence aux dessins annexés dans lesquels : - la figure 1 représente une routine d'exponentiation modulaire conforme aux enseignements de l'invention ; la figure 2 représente un procédé de traitement du type RSA conforme aux enseignements de l'invention. Le procédé de traitement cryptographique dont les étapes sont représentées à la figure 1 est par exemple mis en oeuvre dans une carte à microcircuit afin d'appliquer à un message m une exponentiation modulaire à la puissance d avec pour module n. Le message m est représenté sous forme numérique et il est considéré comme un nombre du point de vue de son traitement cryptographique. Le message m est exemple reçu par l'interface de communication de la carte à microcircuit et mémorisé dans une mémoire vive de celle-ci. L'exposant d est par exemple une clé secrète mémorisée dans une mémoire non-volatile de la carte à microcircuit, par exemple une mémoire du type EEPROM (de l'anglais "Electrically Erasable Programmable Read Only Memory'). On dénommera dans la suite d; les bits qui forment la clé secrète, de dk_l en tant que bit de poids le plus fort à do en tant que bit de poids le plus faible (avec par exemple k=2048). Le module n est également mémorisé en mémoire non-volatile. La clé secrète d et le module n sont transférés en mémoire vive lorsqu'ils interviennent dans un calcul. Le procédé représenté à la figure 1 est par exemple une routine ou sous-programme mis en oeuvre dans le cadre du traitement cryptographique du message m au sein de la carte à microcircuit. Les différentes étapes de cette routine résultent donc de l'exécution par le microprocesseur de la carte à microcircuit d'instructions mémorisées dans une mémoire morte de la carte à microcircuit (ou éventuellement dans la mémoire non-volatile mentionnée précédemment). L'étape E102 représentée à la figure 1 décrit les paramètres reçus (ou "passés") en entrée par la routine et sur la base desquels le procédé représenté à la figure 1 est mis en oeuvre comme décrit dans la suite. Le procédé reçoit ici en entrée le message m, la clé secrète d et le module n. Le microprocesseur commande alors une étape E104 d'initialisation au cours de laquelle le message m est recopié dans un registre (ou mémoire) ao. De même, un registre al est mis à la valeur m2 mod n, tandis qu'un registre eCtrl est mis à 1 et qu'un registre d'indice i est mis à la valeur k-2. On entre alors à l'étape E106 dans une boucle sur la valeur de i. A chaque itération de la boucle, on écrit la valeur ao. al mod n dans le registre 2 (avec écrasement), puis on écrit la valeur ad, mod n dans le registre adi (là aussi avec écrasement), étant rappelé que d; est la valeur du bit d'indice i de la clé secrète d et que di est le complémentaire de cette valeur. On écrit par ailleurs au cours de l'étape E106 la valeur 2.eCtrl + d; dans le registre eCtrl avec écrasement. On passe alors à l'étape E108 où l'on décrémente l'indice i. On teste à l'étape E110 si i est négatif, auquel cas on sort de la boucle à l'étape E112. Si au contraire i est positif ou nul, on reboucle vers l'étape E106. Ainsi, la boucle précitée permet de réaliser l'étape d'itération E106 pour i variant de k-2 à zéro, ce qui permet d'obtenir à la fin de la boucle une valeur ao valant md mod n, une valeur al valant m.ao mod n et une valeur eCtrl dont chaque bit correspond au bit d; effectivement utilisé lors du traitement et qui est donc égale en définitive lors d'un traitement sans faute à la valeur d'entrée de la clé secrète d. La valeur eCtrl est par exemple mémorisée dans un registre spécifique. En variante, on pourrait utiliser pour sa mémorisation le même registre que la clé secrète d puisque le bit d; utilisé à chaque itération n'est pas utilisé ultérieurement est peut donc être écrasé. On peut dans ce cas utiliser le décalage à gauche généré par la multiplication de eCtrl par 2 pour parcourir les différents bits de la clé secrète d (au lieu de l'indice i mentionné ci-dessus). Comme indiqué précédemment, la sortie de la boucle s'effectue à l'étape E112, à laquelle le sous-programme décrit ici renvoie au programme principal l'ayant appelé d'une part la valeur du registre ao et d'autre part la combinaison par une opération de ou exclusif (ou XOR) de la valeur du registre al et de la valeur du registre eCtrl. Le retour de ces valeurs permet au programme principal de vérifier l'exécution sans faute au sein de la routine de la figure 1. Si on dénomme par exemple A et B les valeurs retournées en sortie à l'étape E112, la relation suivante devrait être vérifiée lors d'une exécution sans faute : d0B =m.A mod n, où l'on rappelle que O+ est l'opérateur de ou exclusif ou XOR. On peut remarquer que cette vérification permet non seulement de s'assurer de la cohérence des données ao et al calculées dans la routine de la figure 1 (ce qui suppose un traitement sans faute), mais implique également que la clé secrète d utilisée dans ce sous-programme est bien la clé secrète souhaitée, et non un autre nombre substitué par exemple au moyen d'une attaque par faute. Cette technique pourrait d'ailleurs être utilisée de façon analogue en cryptographie à clef asymétrique sur courbe ellliptique. Pour effectuer cette vérification dans des conditions de fonctionnement particulièrement sures, le programme principal lit à nouveau la clé secrète d dans la mémoire non-volatile de la carte à microcircuit avant la vérification de la relation mentionnée ci-dessus, comme décrit à présent en référence à la figure 2. La figure 2 représente un procédé de traitement cryptographique utilisant la méthode dite du théorème des restes chinois (ou CRT de l'anglais "Chinese Remainder Theorem") et conforme aux enseignements de l'invention. A l'étape E202, le microprocesseur de la carte à microcircuit reçoit le message m à traiter. Le message m va ensuite être traité comme décrit ci-dessous selon les étapes E204 à E216. Bien que les étapes E204 à E215 soient représentées en deux branches sur la figure 2 afin de clarifier l'exposé, elles peuvent être réalisées successivement, par exemple dans l'ordre de numération des étapes. Le procédé qui va être décrit ci-dessous permet d'obtenir la signature du message m par application d'une clé privée (d, p, q) conformément à l'algorithme RSA. Si le message m était un message chiffré, un procédé analogue à celui qui va être décrit permettrait donc de déchiffrer le message m au moyen de cette clé privée. On rappelle ici que les nombres p et q sont des nombres entiers qui constituent les facteurs premiers du module public (ou module de la clé publique) n. Ces nombres sont utilisés comme modules dans les calculs intermédiaires utilisant le Théorème des Restes Chinois sans masquage. Le nombre d est quant à lui l'exposant de la clé privée qui est lié à l'exposant e de la clé publique par la relation : d.e = 1 mod [(p-1) (q-1)]. Dans l'exemple décrit à la figure 2, on utilise trois entiers 2 9, 9, T pour les calculs relatifs au module p. Les entiers précités sont par exemple obtenus par tirage de nombres aléatoires (étape E204), ce qui améliore la sécurité du système. Naturellement, on entend ici par "tirage de nombres aléatoires" l'obtention de nombres pseudo-aléatoires par des techniques classiques dans ce domaine. De manière analogue, on détermine à l'étape E206 trois entiers 2, 2, r2 utilisés pour les traitements relatifs au module q. Comme indiqué en ce qui concerne les entiers 2 les entiers 2 2, ,u 2, Z2 peuvent être obtenus par tirage de nombres aléatoires. On lit ensuite dans la mémoire non-volatile les éléments p et dp de la clé secrète (où dp = d mod (p-1)) à l'étape E207. On passe alors à l'étape E208 qui regroupe les opérations de masquage des valeurs utilisées pour l'exponentiation modulaire relative au module p. Pour ce faire, on calcule tout d'abord un premier message masqué mi selon la formule m1=(m+ 1.p) mod (2 i.p). On remarque que cette opération consiste d'une part à masquer le message lui-même en lui ajoutant un multiple entier du module p ( ip) et d'autre part à masquer le module p lui-même en le multipliant par un entier 2 . On comprend ainsi que, comme indiqué précédemment, l'utilisation d'entiers 2 et i obtenus par tirage de nombres aléatoires rend le masquage plus efficace et améliore ainsi la sécurité du système. L'étape E208 comporte également une opération de calcul d'un exposant masqué di=dp+ri.(p-1). Cette dernière opération permet de masquer l'exposant utilisé lors de l'exponentiation modulaire comme indiqué plus bas. On lit ensuite à l'étape E209 les éléments q et dq (avec dq=d mod (q-1)) dans la mémoire non volatile et on procède à l'étape E210 qui effectue des calculs analogues à ceux de l'étape E208, cette fois en ce qui concerne le module q : - le résidu modulaire m2 du message masqué est déterminé par m2=(m+ 2.q) mod 2.q) ; - l'exposant masqué d2 est calculé par d2 = dq + z2.(q -1). Une fois les valeurs utilisées dans les calculs d'exponentiation modulaire déterminées aux étapes E208 et E210, on peut procéder à ces calculs, comme détaillé maintenant. On procède à l'étape E212 à l'exponentiation modulaire du résidu modulaire masqué mi au moyen de l'exposant masqué dl précédemment déterminé en utilisant comme précédemment le module masqué ()i.p) en faisant appel au sous-programme décrit plus haut en référence à la figure 1, avec pour paramètres mi comme message, di comme clé secrète et ()i.p) comme module . Le résultat modulaire masqué Sp relatif au module p (et calculé ici en utilisant le module masqué )i.p) reçu comme première valeur en retour vaut donc : Sp = (mi)d' mod .p) , tandis que la seconde valeur Cp retournée vérifie en cas d'exécution normale : dl 0 Cp=m1.Sp mod (Xi.p). On peut noter que, l'entier 2 étant un nombre aléatoire, le résultat modulaire masqué SI est également aléatoire, ce qui améliore la sécurité. On procède de manière analogue au calcul du résultat modulaire masqué Sq à l'étape E214 par appel de la routine de la figure 1 avec m2 comme message, d2 comme clé secrète et (,22q) comme module. On obtient donc (Sc', Cq), avec : Sq = (mz)d2 mod (Â2.q) et Cq tel que d2 Cq=m2.Sq mod (,22q). Ces opérations utilisent donc le résidu modulaire masqué m2 et l'exposant masqué d2 déterminé à l'étape E210, ainsi que le module masqué 10 (À2.q). Les résultats modulaires Sp et Sq ayant été obtenus comme précisé ci-dessus pour chacun des modules p et q en utilisant les modules masqués (Â,I.p) et (2c2.q), la signature S est obtenue à l'étape E216 par recombinaison linéaire des résultats modulaires selon la formule : 15 S=[(Â2.q+Sq Sp).Apq mod (q)].p+Sp, où Apq est l'inverse modulaire de p modulo q défini par p.Apq = 1 mod q. La formule de recombinaison est du type qui vient d'être indiqué, mais elle pourrait être différente de la formule donnée ci-dessus ; en effet, en variante, on pourrait par exemple utiliser la formule suivante : 20 S=[(ÂI.p+Sp Sq).Bgp mod (p)].q+Sq, où Bqp est l'inverse modulaire de q modulo p, tel que q.Bqp=l mod p. On lit alors à nouveau en mémoire non-volatile les éléments de la clé secrète (ici, tous ses éléments à savoir) p, q, dp et dq, puis on recalcule les éléments di et d2 comme déjà fait aux étapes E208 et E210, ce qui permet de 25 vérifier les calculs comme décrit ci-après avec les valeurs effectivement mémorisées en mémoire non-volatile. On procède alors à l'étape E220 au calcul d'une valeur C telle que C = [(?2.q+(d2OCq)-(dlOCp)).Apq mod q].p+(di OCp). Vues les propriétés des valeurs retournées par le sous-programme 30 de la figure 1 (c'est-à-dire la relation entre celles-ci) comme expliqué précédemment, en cas de fonctionnement en l'absence de faute (faute qui pourrait être provoquée par un attaquant), les valeurs S et C doivent vérifier la relation : m.S mod n = C. On vérifie donc cette relation à l'étape E222. En cas de vérification positive, on considère que le procédé s'est déroulé sans faute (et donc sans attaque) et on retourne (par exemple on émet vers l'extérieur de la carte à microcircuit) la valeur S en tant que résultat (étape E226). On contraire, si la relation n'est pas vérifiée à l'étape E222, on constate une erreur (étape E224) et on n'émet alors aucune information sur les données mises en oeuvre dans le procédé vers l'extérieur pour le cas où cette erreur provienne d'une attaque par faute. On peut toutefois naturellement émettre un message d'erreur qui ne donne aucune information sur les données traitées. Les modes de réalisation qui viennent d'être décrits ne sont que des exemples possibles pour la mise en oeuvre de l'invention, qui ne s'y limite pas.15 REVENDICATIONS 1. Procédé de traitement cryptographique d'un message au moyen d'une clé secrète, caractérisé en ce qu'il comprend les étapes suivantes : -détermination d'une troisième donnée (ao) et d'une cinquième donnée (aiOeCtrl), avec calcul, en fonction au moins d'une première donnée (m) issue du message et d'une seconde donnée (d) issue de la clé secrète, de la troisième donnée (ao) et d'une quatrième donnée (al) liées entre elles par une relation de vérification, et avec obtention de la cinquième donnée (aiOeCtrl) par combinaison de la quatrième donnée (al) et d'une donnée (eCtrl) représentative de la seconde donnée (d) ; - vérification de la relation de vérification entre la troisième donnée et une combinaison de la cinquième donnée et de la seconde donnée. 15 2. Procédé de traitement selon la revendication 1, caractérisé en ce que la relation est indépendante de la clé secrète. 3. Procédé de traitement selon la revendication 1 ou 2, caractérisé 20 par une étape de lecture de la seconde donnée dans une mémoire non-volatile entre l'étape de détermination et l'étape de vérification. 4. Procédé de traitement selon l'une des revendications 1 à 3, caractérisé par une étape d'utilisation de la troisième donnée en tant que 25 résultat en cas de vérification positive à l'étape de vérification. 5. Procédé de traitement selon l'une des revendications 1 à 4, caractérisé en ce que le calcul de la troisième donnée et de la quatrième donnée comprend au moins une étape de modification de la troisième donnée 30 ou de la quatrième donnée selon qu'un bit de la seconde donnée vaut 0 ou 1. 6. Procédé de traitement selon la revendication 5, caractérisé en ce qu'à chaque étape de modification, la donnée représentative de la seconde donnée est modifiée de manière à mémoriser le bit de la seconde donnée utilisé à l'étape concernée. 7. Procédé de traitement selon la revendication 6, caractérisé en ce que la donnée représentative est modifiée de manière à mémoriser ledit bit après l'étape de modification utilisant ledit bit. 8. Procédé de traitement selon la revendication 6 ou 7, caractérisé en ce que la donnée représentative est modifiée par multiplication par deux puis par ajout dudit bit. 9. Procédé de traitement selon l'une des revendications 6 à 8, 15 caractérisé en ce que la donnée représentative est mémorisée dans le registre mémorisant la seconde donnée. 10. Procédé de traitement selon l'une des revendications 1 à 9, caractérisé en ce que la relation de vérification est l'égalité modulaire entre 20 ladite combinaison et le produit de la troisième donnée et du message. 11. Procédé de traitement selon l'une des revendications 1 à 10, caractérisé en ce que la combinaison est une opération de ou exclusif. 25 12. Procédé de traitement selon l'une des revendications 1 à 11, caractérisé en ce qu'il comprend des étapes conformes au théorème des restes chinois. 13. Procédé de traitement cryptographique d'un message au moyen 30 d'une clé secrète, comprenant une étape de : - appel à une routine avec pour paramètres au moins une première donnée issue du message et une seconde donnée issue de la clé secrète, la 10routine calculant, en fonction des paramètres reçus, une troisième donnée et une quatrième donnée liées entre elles par une relation de vérification ; caractérisé en ce que la routine retourne la troisième donnée et une cinquième donnée 5 obtenue par combinaison de la quatrième donnée et d'une donnée représentative de la seconde donnée telle que reçue par la routine ; et en ce que le procédé comprend une étape de : - vérification de la relation de vérification entre la troisième donnée et une combinaison de la cinquième donnée et de la seconde donnée. 10 14. Procédé de traitement cryptographique d'un message au moyen d'une clé secrète, dans lequel au moins une étape de traitement dépend d'un groupe d'au moins un bit de la clé secrète, caractérisé par les étapes suivantes : 15 - modification d'une variable de contrôle de manière à mémoriser le groupe utilisé lors de l'étape de traitement ; - comparaison de la variable de contrôle et d'une partie au moins de la clé secrète. 20 15. Procédé de traitement selon la revendication 14, caractérisé par une étape de lecture d'une partie au moins de la clé secrète en mémoire non-volatile entre l'étape de modification et l'étape de comparaison. 16. Procédé de traitement selon la revendication 14 ou 15, 25 caractérisé par un traitement d'erreur en cas de vérification négative à l'étape de comparaison. 17. Procédé de traitement selon l'une des revendications 14 à 16, caractérisé en ce que l'étape de traitement est mise en oeuvre pour chaque bit 30 de la clé secrète. 18. Procédé de traitement selon la revendication 17, caractérisé en ce que la variable de contrôle est modifiée après chaque étape de traitement par multiplication par deux puis ajout du bit utilisé lors l'étape de traitement concernée. 19. Procédé de traitement cryptographique d'un message au moyen d'une clé secrète au sein d'une entité électronique comprenant une mémoire non-volatile, caractérisé par les étapes suivantes : - première lecture d'une partie au moins de la clé secrète dans la 10 mémoire non-volatile ; - calcul cryptographique, à partir d'une première donnée issue du message et d'une seconde donnée issue de la clé secrète lue lors de la première lecture, produisant une troisième donnée et une quatrième donnée liées entre elles par une relation de vérification ; 15 - recombinaison selon l'algorithme CRT impliquant la troisième donnée et produisant une cinquième donnée ; - seconde lecture d'une partie au moins de la clé secrète dans la mémoire non-volatile ; - recombinaison selon l'algorithme CRT impliquant la quatrième 20 donnée et la seconde donnée issue de la clé secrète lue lors de la seconde lecture, et produisant une sixième donnée ; - vérification de ladite relation entre la cinquième donnée et la sixième donnée.