FR 3096851 A1 20201204 FR 1905592 A 20190527 Description Titre de l'invention : PROCEDES DE MISE EN OEUVRE ET D'OBFUSCATION D'UN ALGORITHME CRYPTOGRAPHIQUE A CLE SECRETE DONNEE [0001] DOMAINE TECHNIQUE GENERAL [0002] La présente invention concerne le domaine de la cryptographie, et en particulier un procédé de chiffrement/déchiffrement de type « boite blanche ». [0003] ETAT DE L'ART [0004] Une fonction est considérée comme une « boîte noire » lorsqu'on ne peut pas accéder à son fonctionnement interne, i.e. qu'on peut connaître ses entrées et ses sorties mais pas ses paramètres secrets ou ses états intermédiaire. [0005] Les algorithmes cryptographiques (par exemple pour du chiffrement ou de la signature) sont ainsi classiquement supposés des boites noires lorsqu'on évalue leur fiabilité (résistance aux attaques). [0006] Par exemple, si l'on prend les algorithmes cryptographiques typiques tels que DES (« Data Encryption Standard »), 3DES (Triple DES) ou AES (« Advanced Encryption Standard »), ceux-ci travaillent sur des blocs d'un taille 64 ou 128 bit (et demain 256 bit), mais ne peuvent en une seule opération traiter un tel bloc (il y a déjà plus de 1019 valeurs possibles de blocs de 64 bit). Il est ainsi nécessaire de travailler au sein d'un bloc sur des éléments plus petits, typiquement de taille 8 bit (seulement 256 possibilités) en enchainant des opérations non-linéaires avec des opérations linéaires. [0007] L'hypothèse de boite noire suppose dans ce cas que les clés ou les états inter- médiaires sont inaccessibles. Cette hypothèse impose une contrainte forte sur le stockage et la manipulation de ces paramètres. En effet, des outils ont été récemment publiés pour permettre l'automatisation d'attaques sur implémentation matérielle, attaques dites par canaux auxiliaires ou par fautes. [0008] Aujourd'hui, pour de nombreux cas d'usages incluant le paiement sur mobile, il est nécessaire de déployer des algorithmes cryptographiques en faisant le moins d'hypothèses possibles sur la sécurité du matériel cible. Le stockage et la manipulation sécurisés des paramètres secrets doivent alors être assurés au niveau applicatif. [0009] La cryptographie dite boite blanche vise à répondre à ce défi en proposant des implé- mentations des algorithmes cryptographiques qui sont sensés rendre l'extraction des secrets impossible, même en cas d'attaque permettant à l'attaquant un accès complet à l'implémentation logicielle de l'algorithme. Plus précisément, une fonction est considérée comme une « boîte blanche » lorsque ses mécanismes sont visibles. En d'autres termes, on fait directement l'hypothèse que l'attaquant a accès à tout ce qu'il 2 souhaite (le binaire est complètement visible et modifiable par l'attaquant et celui-ci a le plein contrôle de la plateforme d'exécution). Par conséquent, l'implémentation elle-même est la seule ligne de défense. [0010] La résistance des produits développés repose sur un mélange de principes mathé- matiques et d'obfuscation logicielle. Il a par exemple été proposé de « masquer » les états internes par des permutations aléatoires (inconnues niais constantes) appelées encodages internes. Cependant, la résistance des protections s'appuyant uniquement sur des principes mathématiques n'apparait pas aujourd'hui suffisante, cf. Brecht Wyseur Software Security: White-Box Cryptography. PhD Thesis 2009. [0011] En outre, il a été montré dans les articles Joppe W. Bos, Charles Hubain, Wil Michiels, Philippe Tetzwen:Differential Computation Analysis: Hiditzg Your White-Box Designs is Nol Enough, CHES2016'Sclfelix, Eloi, Cristofaro Mme, and Job de Naos. "Unhoxing the white-box." Black Hat EU 2015. 2015, et Jacob, M., Boneh, D., & Pellet), E. (2002, November). Attacking an obfuscated cipher by injecting faults. In ACM Workshop on Digital Rights Management (pp. 16-31). Springer, Berlin, Heidelberg, que les attaques dites par canaux auxiliaires ou par fautes peuvent être transposées avec succès dans la cryptographie boite blanche. [0012] Il serait par conséquent souhaitable de disposer d'une nouvelle solution de cryp- tographie « boite blanche » utilisant les mécanismes standards comme le DES et r AES qui soit complètement résistante à toutes attaques connues (par analyse de canaux, par faute, etc.). Exposé de l'invention [0013] Selon un premier aspect, la présente invention concerne un procédé dc mise en oeuvre d'un algorithme cryptographique à clé secrète donnée comprenant l'exécution par des moyens de traitement de données d'un équipement d'un code implémentant ledit algorithme cryptographique stocké sur des moyens de stockage de données de l'équipement, le procédé étant caractérisé en ce qu'au moins une partie dite obfusquée dudit code paramétrée avec ladite clé secrète n'utilise qu'une seule instruction dite cinov, qui est une instruction de déplacement conditionnel dans un premier opérande de l'instruction d'un deuxième opérande de l'instruction, au moins unc occurrence dc ladite instruction cmov dans ladite partie obfusquée du code étant factice. [0014] Selon des caractéristiques avantageuses et non limitatives : [0015] ladite instruction onov de déplacement conditionnel dans un premier opérande de l'instruction d'un deuxième opérande de l'instruction met en oeuvre : - soit, si une condition est vérifiée, le déplacement effectif dans le premier opérande du deuxième opérande ; - soit, si ladite condition n'est pas vérifiée, une simulation de déplacement dans le 3 premier opérande du deuxième opérande ; ladite occurrence factice de l'instruction culot, étant destinée à mettre en oeuvre ladite simulation de déplacement dans le premier opérande du deuxième opérande lors de l'exécution normale dudit code ; [0016] ladite simulation de déplacement dans le premier opérande du deuxième opérande comprend soit le déplacement effectif dans le premier opérande du premier opérande, soit le déplacement effectif du deuxième opérande ailleurs que dans le premier opérande ; [0017] chaque instruction cmov de déplacement conditionnel dans un premier opérande de l'instruction d'un deuxième opérande de l'instruction est exprimée à partir d'une instruction dite mm' de déplacement non-conditionnel dans le premier opérande du deuxième opérande, encapsulée ; [0018] les moyens de traitement de données mettent en oeuvre un environnement d'exécution sécurisée dans lequel ledit code implémentant ledit algorithme cryptographique est exécuté, tel que l'environnement Securc Guard Extension ; [0019] ladite partie de code obfusquée comprend une pluralité d'occurrences factices d'instructions cmov pour chaque occurrence réelle d'une instruction cmov ; [0020] pour un ensemble d'une occurrence réelle et des M-1 occurrences factices corres- pondantes d'instructions cmov, correspondant à toutes les M valeurs possibles o d'un objet noté o, dont une valeur attendue I-, on a : - pour la i-ème occurrence de l'ensemble, la condition de déplacement est « o est égal à o »; - l'occurence réelle est la j-ième telle que o =r ; - toutes les autres occurrences de l'ensemble sont des occurrences factices ; [0021] ledit code est dans un langage d'assemblage des moyens de traitement de données ; [0022] ledit langage d'assemblage est l'assembleur x86 ; [0023] ledit algorithme cryptographique est un algorithme de chiffrement symétrique, ladite partie obfusquée du code implémentant au moins un tour dudit algorithme de chiffrement symétrique. [0024] Selon un deuxième aspect, l'invention concerne un procédé d'obfuscation d'un al- gorithme cryptographique à clé secrète donnée représentée par un premier code informatique, comprenant la mise en oeuvre par des moyens de traitement de données d'un serveur d'étapes de : (a) réécriture du premier code en un deuxième code dans lequel au moins une partie dite obfusquée dudit code utilisant ladite clé secrète n'utilise qu'une seule instruction dite inov, qui est une instruction de déplacement non-conditionnelle dans un premier opérande de l'instruction d'un deuxième opérande de l'instruction ; (b) génération d'un troisième code correspondant au deuxième code dans lequel chaque instruction mov de la partie obfusquée est remplacée par une instruction dite emov, qui est une instruction de déplacement conditionnel dans un premier opérande de l'instruction d'un deuxième opérande de l'instruction, au moins une instruction Émoi; factice étant ajoutée. [0025] Selon des caractéristiques avantageuses mais non limitatives, le procédé comprend une étape (c) de transmission à l'équipement du troisième pour stockage sur des moyens de stockage d'un équipement en vue de l'exécution par des moyens de traitement de données de l'équipement pour mise en oeuvre dudit algorithme cryptographique. [0026] Selon un troisième et un quatrième aspect, l'invention concerne un produit programme d'ordinateur comprenant des instructions de code pour l'exécution d'un procédé selon le premier aspect ou selon le deuxième aspect de mise en oeuvre ou d'obfuscation d'un algorithme cryptographique à clé secrète donnée ; et un moyen de stockage lisible par un équipement informatique sur lequel un produit programme d'ordinateur comprend des instructions de code pour l'exécution d'un procédé selon le premier aspect ou selon le deuxième aspect de mise en oeuvre d'obfuscation d'un algorithme cryptographique à clé secrète donnée. Brève description des dessins ]0027] D'autres caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description qui va suivre d'un mode de réalisation préférentiel. Cette description sera donnée en référence aux dessins annexés dans lesquels : ]0028] [fig.1] : la figure 1 est un schéma d'une architecture pour la mise en oeuvre des procédés selon l'invention ; ]0029] [fig.2] : la figure 2 illustre un mode de réalisation d'un procédé d'obfuscation selon l' invention. Description des modes de réalisation [00301 Architecture [00311 En référence à la figure 1, sont proposés un procédé de mise en oeuvre d'un al- gorithme cryptographique « boite blanche » mis en oeuvre au sein d'un équipement 10a tel qu'un terminal mobile (smartphone, tablette tactile, etc.), i.e. un équipement ne disposant pas particulièrement d'un matériel sécurisé et qui peut faire l'objet d'attaques sur implémentation matérielle, et pour lequel l'approche boite blanche prend tout son intérêt ; ainsi qu'un procédé d'obfuscation de l'algorithme cryptographique permettant cette implémentation boite blanche. [00321 L'équipement 10a comprend des moyens de traitement de données 11 a (un processeur) et des moyens de stockage de données 12a (une mémoire, par exemple Ilash). [0033] L'équipement 10a est par exemple relié à un serveur 10h par exemple via le réseau internet 20. 11 peut être amené à recevoir depuis cc serveur 10h (par exemple celui d'un fournisseur de solutions de sécurité) des morceaux de code (qu'on décrira plus loin) contenant des secrets qui vont être stockées dans la mémoire 12a et utilisées pour la mise en oeuvre du présent procédé [0034] L'équipement 10a peut lui-même être connecté à d'autres serveurs 10e de tiers avec lesquels il pourra échanger des données chiffrées au moyen du présent procédé. [0035] Procédé cryptographique [0036] Le procédé selon le premier aspect est un procédé de mise en oeuvre d'un algorithme cryptographique, en particulier un procédé dc « chiffrement ou de déchiffrement », cela signifie qu'il permet selon les cas de chiffrer des données ou d'en déchiffrer. Il est ainsi notamment de type symétrique, ou « à clé secrète », ou de type asymétrique (par exemple un algorithme de signature, pour lequel les tiers disposent d'une clé publique). [0037] On comprendra que le présent procédé est une nouvelle implémentation d'algorithmes connus, tels que 3DES ou AES qui sont les standards actuels. Plus précisément, il ne propose pas une nouvelle stratégie de chiffrement, mais seulement une nouvelle implémentation de l'algorithme, et ainsi une nouvelle façon de manipuler les données au sein de l'algorithme qui soit résistante à toutes les attaques en « boite blanche ». Ainsi, le présent procédé comprenant classiquement l'exécution par les moyens de traitement de données 11 a dc l'équipement 10a d'un code implémentant de manière obfusquée (pour au moins une partie du code dite partie obfusquée) ladite fonction cryptographique stocké sur les moyens de stockage de données 12a. Ledit code est préférentiellement dans un langage directement interprétable par les moyens de données lia, dit langage d'assemblage. Par exemple les processeurs de la famille x86 (qui constituent la grande majorité des processeurs aujourd'hui en service) reconnaissent un langage d'assemblage x86 utilisant un jeu d'instructions x86. Dans la suite de la présente description, on prendra l'exemple de x86. [0038] Par « obfuscation », on entend ici le fait de rendre « illisible ou incompréhensible » le code informatique pour prévenir de façon générale le reverse engineering et notamment prévenir l'accès à l'algorithme et ses clés. [0039] On notera que le code de tout l'algorithme n'a pas nécessairement besoin d'être inté- gralement obfusqué de la façon qui va être décrite, il suffit en pratique que des parties dites « sensibles » le soient, en particulier celles représentatives des opérations paramétrées avec ladite clé secrète, et tout particulièrement celles comprenant l'application de fonctions de substitution. [0040] Plus précisément, selon un schéma classique, l'algorithme mis en oeuvre traite les données blocs par bloc, et au sein d'un bloc il manipule des éléments d'une taille plus petite, par exemple 16 éléments d'un octet pour un bloc 128 bits (cas de AES par 6 exemple). Ces éléments sont manipulés typiquement deux par deux. [0041] Ainsi le présent procédé préférentiellement chiffre ou déchiffre un n-uplet de données fa i f , avec un n-uplct de clés secrètes (k ,) , N instructions (-mol., alors même en sachant qu'il n'y a que N instructions qui sont réellement à mettre en oeuvre, un attaquant ne saurait pas lesquelles elles sont et ne pourrait les distinguer des N' -N>0 instructions factices. [0078] Dans le mode de réalisation préféré où chaque instruction cmov déclenche un dé- placement réel ou une simulation, l'instruction factice est destinée à mettre en oeuvre une simulation de déplacement dans le premier opérande du deuxième opérande. [0079] En résumé, lors de l'exécution de la partie obfusquée chaque instruction cmov sera exécutée, qu'elle soit réelle ou factice, mais seule l'exécution des onov réelles donnera lieu à un déplacement effectif et correct (l'exécution des (-moi; factices donnant lieu soit à un faux déplacement, soit à un déplacement incorrect) [0080] Selon un premier mode de réalisation, on pourra exécuter le code ()Musqué dans un environnement d'exécution sécurisée tel que SGX en utilisant par exemple pour chaque amyle wrapper tel que défini précédemment. [0081] Si l'on souhaite un environnement intégralement boite blanche (i.e. exécuté de 11 manière conventionnelle et non-sécurisée sur tout processeur), selon un deuxième mode de réalisation on pourra utiliser un wrapper inspiré de ce qui est décrit dans le document Emmanuel Prouff, Matthieu Rivain: A Generic Method for Secure SBox Implementation. WISA 2007. [0082] Ce document propose une implémentation d'une S-Box dans laquelle on considère toutes les valeurs possibles de 0 à 2 k - (en supposant la S-Box à valeurs dans F,k ) d'un objet qui sont toutes fausses sauf une. On peut étendre ce principe aux instructions cmov : chaque instruction mov est dupliquée en une pluralité d'instructions cmov dont une « vraie » et le reste factice. En d'autres termes, en supposant que le code puisse être écrit avec N instructions mov et que l'on a M valeurs possibles d'un objet, on utilise NxM instructions cmov dont N instructions réelles et Nx(M-1) factices. 100831 Plus précisément, pour un ensemble d'instructions cmov (cmov , désignant la i- ème instruction cmov de l'ensemble) « associées » dont une réelle et M-1 factices, correspondant à toutes les M valeurs possibles o d'un objet noté o, dont une valeur attendue r, on a : - pour chaque cmov , la condition est « o est égal à o » ; - l'instruction réelle est cmovjtelle que o =r ; - toutes les autres cmov (i.e. o r) sont des instructions factices. [0084] A cc titre, l'homme du métier pourra utiliser comme wrapper l'un des algorithmes de ce document Emmanuel Prouff, Matthieu Rivaitz: A Generic Method for Secure SBox Implementation. WISA 2007. [0085] Alternativement ou en complément, pour être sur de pouvoir contrer un adversaire voulant fauter l'exécution, on peut utiliser des techniques de duplications en implémentant des threads d'exécution parallèle des différentes instructions cmov alternatives (réelles ou factices, en particulier d'exécution simultanée des M instructions cmov correspondant aux M différentes valeurs d'un objet), voir le document Oscar Reparaz, Laures De Meyer, Begiil Bilgin, Victor Arribas, Svetla Nikova, Ventzislav Nikov, Nigel P. Smart: CAPA: The Spirit of Beaver Against Physical Attacks. CRYPTO ( I ) 2018. [0086] En combinant toutes ces techniques d'obfuscation, et en prenant M=2 8 =256 on note que la taille du code d'origine implémentant l'algorithme cryptographique est typiquement multipliée par au moins 10000. Sachant que chacune des instructions peut être aussi bien réelle que factice, on comprend qu'il n'est plus possible par aucune attaque par canal auxiliaire que cc soit d'identifier d'information exploitable. [0087] Procédé d'obfuscation [0088] Selon un deuxième aspect, et en référence à la figure 2, est proposé un procédé d'obfuscation d'un algorithme cryptographique à clé secrète donnée représentée par un 12 premier code informatique, i.c. un procédé d'obtention dudit code ohfusqué (qui sera désigné comme troisième code) pour la mise en oeuvre de l'algorithme, conformément au premier aspect. Le premier code est typiquement le code en langage d'assemblage tel qu'écrit directement ou compilé depuis un langage de programmation classique, i.e. non-ohfusqué et utilisant des instructions variées. [0089] Ce procédé est typiquement mis en oeuvre de manière sécurisée sur le serveur 10h. [0090] Ainsi, les moyens de traitement de données 11 b du serveur 10h commencent par une étape (a) de réécriture du premier code en un deuxième code dans lequel au moins une partie dite ohfusquée dudit code utilisant ladite clé secrète n'utilise qu'une seule instruction dite mov, qui est une instruction de déplacement non-conditionnelle dans un premier opérande de l'instruction d'un deuxième opérande de l'instruction. [0091] En d'autres termes, le code d'origine est transformé en mov-only par l'utilisation d'un outil tel que M/o/Vfuscator. [0092] A noter que le deuxième code peut âtre directement compilé depuis un premier code qui ne serait pas en un langage d'assemblage. [0093] Dans une étape (h) suivante, est généré un troisième code correspondant au deuxième code dans lequel chaque instruction mov de la partie ohfusquée est remplacée par une instruction dite cmov, qui est une instruction de déplacement conditionnel dans un premier opérande de l'instruction d'un deuxième opérande de l'instruction. Ace stade, chaque instruction cmov est une instruction réelle, c'est pourquoi l'étape (h) comprend l'ajout dans le troisième code d'au moins une instruction cmov factice. [0094] Pour cela, comme expliqué, il est possible d'ajouter une pluralité d'instruction cmov factice pour chaque instruction cmov réelle, notamment en dupliquant l'instruction cmov réelle autant de fois qu'un objet peut prendre de valeurs. [0095] Enfin, le procédé d'obfuscation peut comprendre une étape (c) de transmission à l'équipement 10a du troisième code pour stockage sur des moyens de stockage 12a d'un équipement 10a en vue de l'exécution par des moyens de traitement de données Ila de l'équipement 10a pour mise en oeuvre dudit algorithme cryptographique, i.e. le procédé selon le premier aspect. [0096] Produit programme d'ordinateur [0097] Selon un troisième et un quatrième aspects, l'invention concerne un produit programme d'ordinateur comprenant des instructions de code pour l'exécution (en particulier sur les moyens de traitement de données Ila, 1lb de l'équipement 10a et/ou du serveur 10b) d'un procédé selon le premier ou le deuxième aspect de l'invention de mise en oeuvre ou d'obfuscation d'un algorithme cryptographique à clé secrète donnée, ainsi que des moyens de stockage lisibles par un équipement informatique (une mémoire 12a, 12b de l'équipement 10a et/ou du serveur 10b) sur lequel on trouve ce produit programme d'ordinateur. 13 [Revendication 1] [Revendication 2] [Revendication 3] [Revendication 4] [Revendication 5] REVENDICATIONSProcédé de mise en oeuvre d'un algorithme cryptographique à clé secrète donnée comprenant l'exécution par des moyens de traitement de données (1 1 a) d'un équipement (10a) d'un code implémentant ledit algorithme cryptographique stocké sur des moyens de stockage de données (12a) de l'équipement (10a), le procédé étant caractérisé en cc qu'au moins une partie dite ohfusquée dudit code pararnétrée avec ladite clé secrète n'utilise qu'une seule instruction dite cmov, qui est une instruction de déplacement conditionnel dans un premier opérande de l'instruction d'un deuxième opérande de l'instruction, au moins une occurrence de ladite instruction cmov dans ladite partie obfusquée du code étant factice. Procédé selon la revendication 1, dans lequel ladite instruction cmov de déplacement conditionnel dans un premier opérande de l'instruction d'un deuxième opérande de l'instruction met en oeuvre : - soit, si une condition est vérifiée, le déplacement effectif dans le premier opérande du deuxième opérande - soit, si ladite condition n'est pas vérifiée, une simulation de déplacement dans le premier opérande du deuxième opérande ; ladite occurrence factice de l'instruction cmov étant destinée à mettre en oeuvre ladite simulation de déplacement dans le premier opérande du deuxième opérande lors de l'exécution normale dudit code. Procédé selon la revendication 2, dans lequel ladite simulation de déplacement dans le premier opérande du deuxième opérande comprend soit le déplacement effectif dans le premier opérande du premier opérande, soit le déplacement effectif du deuxième opérande ailleurs que dans le premier opérande. Procédé selon l'une des revendications 1 et 3, dans lequel chaque instruction cmov de déplacement conditionnel dans un premier opérande de l'instruction d'un deuxième opérande de l'instruction est exprimée à partir d'une instruction dite mov de déplacement non-conditionnel dans le premier opérande du deuxième opérande, encapsulée. Procédé selon l'une des revendications 1 et 4, dans lequel les moyens de traitement de données (11a) mettent en oeuvre un environnement d'exécution sécurisée dans lequel ledit code implémentant ledit algorithme cryptographique est exécuté, tel que l'environnement Secure Guard Extension. 14 [Revendication 6] [Revendication 7] [Revendication 8] [Revendication 9] [Revendication 10] [Revendication 11] [Revendication 12] Procédé selon l'une des revendications 1 et 5, dans lequel ladite partie de code obfusquée comprend une pluralité d'occurrences factices d'instructions cmov pour chaque occurrence réelle d'une instruction cmov. Procédé selon la revendication 6, dans lequel, pour un ensemble d'une occurrence réelle et des M-1 occurrences factices correspondantes d'instructions cmov, correspondant à toutes les M valeurs possibles o d'un objet noté o, dont une valeur attendue r, on a : - pour la i-cure occurrence de l'ensemble, la condition de déplacement est « n est égal à o »; - l'occurence réelle est la Hème telle que o =r ; - toutes les autres occurrences de l'ensemble sont des occurrences factices. Procédé selon l'une des revendications 1 à 7, dans lequel ledit code est dans un langage d'assemblage des moyens de traitement de données (11a). Procédé selon la revendication 8, dans lequel ledit langage d'assemblage est l'assembleur x86. Procédé selon l'une des revendications 1 à 9, dans lequel ledit algorithme cryptographique est un algorithme de chiffrement symétrique, ladite partie obfusquée du code implémentant au moins un tour dudit algorithme de chiffrement symétrique. Procédé d'obfuscation d'un algorithme cryptographique à clé secrète donnée représentée par un premier code informatique, comprenant la mise en oeuvre par des moyens de traitement de données (11b) d'un serveur (10b) d'étapes de : (a) réécriture du premier code en un deuxième code dans lequel au moins une partie dite obfusquée dudit code utilisant ladite clé secrète n'utilise qu'une seule instruction dite mm), qui est une instruction de déplacement non-conditionnelle dans un premier opérande de l'instruction d'un deuxième opérande de l'instruction ; (b) génération d'un troisième code correspondant au deuxième code dans lequel chaque instruction mov de la partie obfusquée est remplacée par une instruction dite onov, qui est une instruction de déplacement conditionnel dans un premier opérande de l'instruction d'un deuxième opérande de l'instruction, au moins une instruction cmov factice étant ajoutée. Procédé selon la revendication 11, comprenant une étape (c) de 15 [Revendication 13] transmission à l'équipement (10a) du troisième pour stockage sur des moyens de stockage (12a) d'un équipement (10a) en vue de l'exécution par des moyens de traitement de données (11 a) de l'équipement (10a) pour mise en oeuvre dudit algorithme cryptographique. [Revendication 14] Produit programme d'ordinateur comprenant des instructions de code pour l'exécution d'un procédé selon l'une des revendications 1 à 12 de mise en oeuvre ou d'ohfuscation d'un algorithme cryptographique à clé secrète donnée, lorsque ledit programme est exécuté par un ordinateur. Moyen de stockage lisible par un équipement informatique sur lequel un produit programme d'ordinateur comprend des instructions de code pour l'exécution d'un procédé selon l'une des revendications 1 à 12 de mise en oeuvre ou d'ohfuscation d'un algorithme cryptographique à clé secrète donnée.