FR 2984646 A1 20130621 FR 1161988 A 20111220 L'invention concerne un procédé de traitement de données et un dispositif associé. Les procédés de traitement de données, en particulier ceux impliquant des calculs cryptographiques, sont l'objet d'attaques de la part de personnes malintentionnées qui cherchent à obtenir des données confidentielles, tels que des clés cryptographiques secrètes. Un type d'attaque connu, dénommé selon l'appellation anglo-saxonne "safe-error efface, consiste à forcer à 0 (respectivement forcer à 1) un bit de la clé cryptographique lors de la mise en oeuvre de l'algorithme concerné (quand l'implémentation physique rend cette opération possible) et à observer si le résultat de l'algorithme est identique ou différent du résultat obtenu (par exemple lors d'une autre mise en oeuvre de l'algorithme) sans altération de la clé. On comprend que, si le résultat est identique, c'est que le bit concerné de la clé cryptographique vaut 0 (respectivement 1), tandis que si le résultat est différent, le bit concerné vaut nécessairement 1 (respectivement 0). En répétant cette opération pour l'ensemble des bits de la clé cryptographique, on peut ainsi totalement déterminer sa valeur. Afin de contrer ce type d'attaque dans le cadre de l'algorithme DES, il a été proposé d'appliquer l'algorithme soit au message M à chiffrer avec la clé K normalement utilisée, soit au message complémenté M avec la clé complémentée k, le choix entre ces deux possibilités étant réalisé de manière aléatoire. On rappelle que complémenter une donnée consiste à modifier la valeur de chacun de ses bits (i.e. mettre à 0 tous les bits valant 1 et mettre à 1 tous les bits valant 0). On parle de ce fait de "complément à 1 bit à bit'. Ainsi, l'attaquant ne peut savoir à chaque mise en oeuvre de l'algorithme si la clé effectivement utilisée est K ou K . Cette contre-mesure est particulièrement simple à mettre en oeuvre dans le cas de l'algorithme DES puisqu'il suffit, pour retrouver le résultat de l'algorithme avec les valeurs normales (non-complémentées), de complémenter le résultat obtenu par l'utilisation de données complémentées : DES(M,K)= DES(M,K). Cette propriété n'est en revanche pas vraie dans le cas de l'algorithme AES. Dans ce contexte, l'invention propose un procédé de traitement cryptographique de données, comprenant un processus de dérivation d'au moins une clé dérivée à partir d'une clé initiale, ledit processus comprenant au moins une opération non linéaire (par exemple de type SubWord dans le cas de l'algorithme AES) par rapport à une opération de ou exclusif, caractérisé en ce qu'il comprend les étapes suivantes : - choix aléatoire d'une clé parmi la clé initiale et le complément à 1 bit à bit de la clé initiale ; - mise en oeuvre du processus de dérivation sur la base de la clé 15 choisie. On propose ainsi d'utiliser aléatoirement en entrée du processus de dérivation soit la clé usuelle, soit son complément à 1 bit à bit, bien que le processus comprenne une opération non linéaire. On obtient de ce fait une protection contre les attaques mentionnées ci-dessus. 20 En pratique, l'opération non-linéaire est par exemple mise en oeuvre par lecture dans une table de correspondance. On peut prévoir en outre dans ce cas que, l'opération non-linéaire étant appliquée à un octet donné, ladite lecture est réalisée au niveau d'une entrée de la table de correspondance déterminée en fonction de l'octet donné 25 et du choix aléatoire effectué. Le fonctionnement est ainsi semblable quel que soit le choix effectué, ce qui permet de se prémunir contre les attaques par canaux auxiliaires. Par ailleurs, lorsque le processus de dérivation comprend un traitement générant un résultat lorsque la clé choisie est la clé initiale et le 30 complément à 1 bit à bit du résultat lorsque la clé choisie est le complément à 1 bit à bit de la clé initiale, et que le processus de dérivation comprend une combinaison par une opération de ou exclusif d'un octet obtenu par ledit traitement et d'un octet de la clé choisie, le processus de dérivation peut comprendre une opération, antérieure à ladite combinaison, de masquage de l'un au moins des octets combinés. On évite ainsi de retrouver, à un moment du processus, une valeur qui soit constante (du fait d'une double application du complément à 1) quel que soit le choix aléatoire effectué et qui pourrait donc être la cible d'attaques. Le procédé comprend par exemple une étape d'application de la clé dérivée à des données de message au moyen d'une opération de ou exclusif. Ledit traitement peut en effet être un algorithme de type AES. Le procédé proposé ici est typiquement mis en oeuvre par un circuit électronique, par exemple un microprocesseur, avec les avantages associés à ce type de mise en oeuvre ; en variante, il pourrait s'agir d'un circuit intégré à application spécifique. L'invention propose également un dispositif de traitement de données apte à mettre en oeuvre un processus de dérivation d'au moins une clé dérivée à partir d'une clé initiale, ledit processus comprenant au moins une opération non linéaire par rapport à une opération de ou exclusif, caractérisé en ce qu'il comprend des moyens configurés pour choisir une clé de manière aléatoire parmi la clé initiale et le complément à 1 bit à bit de la clé initiale et des moyens configurés pour mettre en oeuvre du processus de dérivation sur la base de la clé choisie. On peut alors prévoir éventuellement des moyens configurés pour appliquer l'opération non linéaire à un octet donné par lecture dans une table de correspondance au niveau d'une entrée de la table de correspondance déterminée en fonction de l'octet donné et du choix effectué, ce qui permet d'éviter des attaques par canaux auxiliaires comme déjà expliqué. Par ailleurs, lorsque le processus de dérivation comprend un traitement générant un résultat lorsque la clé choisie est la clé initiale et le complément à 1 bit à bit du résultat lorsque la clé choisie est le complément à 1 bit à bit de la clé initiale et que le processus de dérivation comprend une combinaison par une opération de ou exclusif d'un octet obtenu par ledit traitement et d'un octet de la clé choisie, on peut envisager d'utiliser des moyens configurés pour masquer, antérieurement à ladite combinaison, l'un au moins des octets combinés avec l'avantage mentionné ci-dessus à ce masquage. D'autres caractéristiques et avantages de l'invention apparaitront à la lumière de la description qui suit, faite en référence aux dessins annexés dans lesquels : - la figure 1 représente un exemple de dispositif susceptible de mettre en oeuvre l'invention ; - la figure 2 représente les étapes principales d'un procédé mis en oeuvre par le dispositif de la figure 1 et conforme aux enseignements de l'invention ; - la figure 3 représente une mise en oeuvre envisageable pour l'étape d'initialisation de la figure 2 ; - la figure 4 représente un exemple de processus de dérivation de clé conforme aux enseignements de l'invention ; - la figure 5 représente un exemple de table de correspondance utilisée dans le processus de la figure 4 ; - la figure 6 représente une solution envisageable pour mettre en oeuvre une opération de ou exclusif prévue dans le processus de la figure 4. La figure 1 représente les éléments principaux d'un dispositif apte à mettre en oeuvre le procédé proposé par l'invention. Il s'agit d'un dispositif de traitement de données qui comprend un microprocesseur 2 connecté (à travers des bus adéquats) d'une part à une mémoire réinscriptible 4 (typiquement de type EEPROM) et à une mémoire vive 6. Le dispositif de la figure 1 est par exemple un micro-ordinateur. En variante, il pourrait s'agir d'un autre type de dispositif électronique, par exemple sécurisé, telle qu'une carte à microcircuit. La mémoire réinscriptible 4 contient notamment des instructions d'un programme d'ordinateur PROG qui, lorsqu'elles sont exécutées par le microprocesseur 2, permettent la mise en oeuvre des procédés proposés par l'invention, tel que celui décrit ci-après. Le programme d'ordinateur PROG pourrait en variante être mémorisé sur un autre support de données (par exemple un disque dur), éventuellement amovible (par exemple un disque optique ou une mémoire amovible). Dans ce cas, le programme d'ordinateur PROG peut éventuellement être d'abord transféré dans la mémoire vive 6 avant son exécution par le microprocesseur 2. Lors de son exécution par le microprocesseur 2, le programme d'ordinateur PROG met en oeuvre un procédé de traitement cryptographique de données qui implique notamment une donnée à traiter. Les données à traiter (notamment les données M représentant le message traité) sont représentées au sein du dispositif de la figure 1 (et notamment de la mémoire vive 6) par des mots numériques formés chacun de plusieurs bits ; on utilise ici par exemple une représentation des données sous forme d'octets. La mémoire vive 6 mémorise les variables et données traitées, notamment celles manipulées par les procédés décrits ci-après. Le dispositif de traitement de données, et précisément le microprocesseur 2 qu'il incorpore, peuvent échanger des données avec des dispositifs extérieurs au moyen d'une interface de communication 8. On a schématiquement représenté sur la figure 1 la transmission d'une donnée d'entrée x reçue d'un dispositif extérieur (non représenté) et transmise de l'interface de communication 8 au microprocesseur 2. De manière similaire, on a représenté la transmission d'une donnée de sortie y du microprocesseur 2 vers l'interface de communication 8 à destination d'un dispositif extérieur. Cette donnée de sortie y est issue d'un traitement de données par le microprocesseur 10, généralement sur la donnée d'entrée x, à l'aide d'une donnée secrète K interne au système, par exemple une clé privée. Bien que, pour l'illustration, les données d'entrée et les données de sortie figurent sur deux flèches différentes, les moyens physiques qui permettent la communication entre le microprocesseur 2 et l'interface 8 pourront être réalisés par des moyens uniques, par exemple un port de communication série ou un bus. Dans les procédés décrits dans la suite, un message M auquel doit être appliqué l'algorithme AES fait partie des données d'entrée x, tandis que les données de sortie y comprennent le message chiffré C, résultat de l'application au message M de l'algorithme AES en utilisant la clé cryptographique K. En variante, l'ensemble microprocesseur 2 - mémoire non-volatile 4 - mémoire vive 6 peut être remplacé par un circuit à application spécifique qui comprend alors des moyens de mise en oeuvre des différentes étapes du procédé de traitement de données. Plus généralement, le dispositif de traitement est un circuit intégré. Le dispositif de traitement de données conforme à l'invention peut par ailleurs être une carte à microcircuit. L'interface de communication 8 est dans ce cas réalisée au moyen des contacts de la carte à microcircuit ou bien d'une antenne logée dans le corps de carte Cette carte à microcircuit est par exemple conforme à la norme ISO 7816 et munie d'un microcontrôleur sécurisé qui regroupe le microprocesseur (ou CPU) 2 et la mémoire vive 6. Les données d'entrée x sont par exemple des commandes APDU, et les données de sortie y des réponses APDU. En variante, le dispositif de traitement de données peut être une clef USB, un document ou un support d'informations papier comportant dans l'une de ses feuilles un microcircuit associé à des moyens de communication sans contact. Il s'agit de manière préférée d'une entité électronique portable ou de poche. Le dispositif est par exemple sécurisé. Par exemple, le dispositif comporte des moyens aptes à le protéger contre des attaques visant à obtenir frauduleusement les données secrètes qu'il mémorise (par exemple, une clef cryptographique) telle que les attaques par fautes et/ou par analyse de canaux cachés (en anglais , "side channel attacks"). En particulier, le dispositif est conforme à la norme FIPS ou aux critères communs. Dans toute la suite, on notera l'opération de "ou exclusif', ou XOR, au moyen de l'opérateur e ; on écrira par ailleurs h.. la représentation hexadécimale d'un nombre. Ainsi hFF correspond à 255, soit 11111111 en représentation binaire, et l'opération 0 hFF (i.e. réalisation d'un ou exclusif avec la valeur 11111111 en binaire) correspond à la détermination du complément à 1 bit à bit : pour un octet X quelconque, X 0 hFF = X . On utilise dans la suite cette notation même lorsque le premier opérande (X dans le paragraphe qui précède) comporte plusieurs octets, étant entendu que l'opération 0 hFF s'applique alors à chacun des octets de la donnée concernée. La figure 2 représente les étapes principales d'un procédé de mise en oeuvre d'un algorithme AES conformément aux enseignements de l'invention. Ce procédé vise à appliquer l'algorithme AES à un message M en utilisant une clé cryptographique K, tout en étant protégé contre les attaques visant cette clé K présentées en introduction. Ce procédé débute à une étape E2 à laquelle des variables A et B (de longueur un octet chacune) sont initialisées comme décrit à présent en référence à la figure 3. Cette initialisation des variables A et B commence par la détermination par tirage aléatoire de la variable A à l'étape E30. On initialise alors la variable B à la valeur A 9 hFF (étape E32). On détermine ensuite par tirage aléatoire un bit b (étape E34). Si b vaut 0 (selon un test à l'étape E36), on écrit la valeur de la variable A dans cette même variable A (étape E38), tandis que si b vaut 1, on écrit la valeur de la variable B dans la variable A. On remarque que ce processus d'initialisation est symétrique (d'où l'intérêt de réécrire la valeur de la variable A dans cette même variable A à l'étape E38) et un attaquant ne pourra donc pas déterminer de l'extérieur si le procédé est dans le cas où b vaut 0 ou dans le cas où b vaut 1. Il résulte par ailleurs de ces différentes étapes que : - si b vaut 0, la somme A 9 B (utilisée dans la suite) vaut hFF et appliquer l'opération 0 A 0 B à une variable revient donc à complémenter cette variable ; - si b vaut 1, la somme A 9 B vaut h00 et appliquer l'opération 0 A 0 B à une variable laissera inchangée cette variable. L'étape E42 consiste à revenir dans ces conditions aux étapes principales de la figure 2, en particulier l'étape E3. À l'étape E3, on détermine par tirage aléatoire une variable m et on applique cette valeur au message M à traiter au moyen d'une opération de "ou exclusif' (soit M m) afin de masquer le message. À l'étape E4, on initialise à 0 une variable d'indice i ; on applique par ailleurs à chacun des octets de la clé cryptographique K l'opération C, A 0 B et on mémorise le résultat au sein d'une variable C_1 (par conséquent sur plusieurs octets). Comme expliqué ci-dessus, la variable C_1 peut donc être égale à la clé K (cas où b vaut 1) ou à la clé complémentée K (cas où b vaut 0). On procède alors à l'étape E6 à la dérivation de la clé C, à partir de la clé Co selon un procédé décrit plus loin en référence à la figure 4. Comme expliqué plus en détail dans la suite, ce procédé est conçu de sorte que l'utilisation en entrée d'une valeur complémentée (par exemple Ki où Ki est la clé classiquement dérivée selon l'algorithme AES) a pour résultat une valeur complémentée en sortie (par exemple K.1). Ainsi, si la variable C_1 est égale à la clé cryptographique K (cas où b vaut 1), chaque variable Ci calculée à cette étape sera égale à la clé Ki classiquement dérivée conformément à l'algorithme AES. En revanche, si la variable C_1 est égale à la clé cryptographique complémentée K (cas où b vaut 0), chaque variable Ci calculée à cette étape sera égale au complément Ki (i.e. K, e hFF) de la clé K, correspondante. Une fois la clé C, dérivée (que cette clé soit égale à la clé K, de l'algorithme AES ou à sa valeur complémentée), on applique à l'étape E8 cette clé C, à la donnée M traitée au moyen d'une opération XOR (ou exclusif), c'est-à-dire que l'on calcule M e C; ; on mémorise la valeur obtenue au sein de la variable M afin de lui appliquer les traitements ultérieurs (sans conserver par conséquent la valeur précédente de la variable). 2 9 84646 9 On applique alors à l'étape E10 une boîte S (en anglais "S box") masquée, avec utilisation du masque aléatoire m déterminée à l'étape E9, comme décrit par exemple dans l'article "Secure Multiplicative Masking of Power Functions", de L. Genelle, E. Prouff et M. Quisquater, Applied 5 Cryptography and Network Security 2010. On utilise toutefois en entrée de la boîte S la valeur M eAeB (la donnée M étant masquée suite à l'opération de l'étape E3). Ainsi : - dans le cas où b vaut 0, l'application successive (au moyen d'une opération XOR 0) de la variable Ci, égale dans ce cas à K, e hFF, et de la 10 valeur A 0 B (en entrée de boîte S), égale dans ce cas à hFF, revient à appliquer K, (puisque hFF hFF = h00) ; - dans le cas où b vaut 1, A CD B = h00 et l'application successive de la variable C;, égale dans ce cas à K,, et de la valeur A B (en entrée de boîte S) revient donc également à appliquer K. 15 De ce fait, dans tous les cas, les données traitées par la boîte S masquée sont les données (masquées) usuellement traitées par cette boîte S et on obtient ainsi en sortie de boîte S les données prévues dans l'algorithme AES à cette étape. On teste alors à l'étape E12 si la variable d'indice i vaut 9. 20 Dans la négative, on procède à l'étape E14 aux opérations de diffusion linéaire prévues par l'algorithme AES, classiquement dénommées "ShiftRows" et "MixColumns". Ces opérations sont réalisées ici de manière classique et ne seront donc pas détaillées. On réalise ensuite l'étape E16 décrite ci-dessous. 25 Dans l'affirmative à l'étape E12, on procède directement à l'étape E16. L'étape E16 consiste à incrémenter la variable d'indice i. On teste alors à l'étape E18 si la variable d'indice i est strictement supérieure à 9. Dans la négative, on reboucle à l'étape E6 pour traiter l'itération 30 suivant de l'algorithme AES. Dans l'affirmative, on sort de la boucle afin de réaliser les dernières étapes prévues par l'algorithme AES. En particulier, on procède à l'étape E20 à la dérivation de la clé Clo de la même manière que cela a été fait pour les autres clés C à l'étape E6, au moyen du procédé décrit plus bas en référence à la figure 4. La clé C10 peut donc être égale à la clé dérivée K10 prévue par 5 l'algorithme AES (cas où b vaut 1), ou à son complément K10 0 hFF (cas où b vaut 0). On applique alors à l'étape E22 la clé C10 à la donnée M préalablement traité, en l'occurrence issue de la boîte S à l'itération i=9. Comme on l'a vu ci-dessus, les données en sortie de boîte S sont celles 10 prévues par l'algorithme AES. Par conséquent, lorsque la clé C10 est égale à la clé dérivée K10 prévue par l'algorithme AES, on obtient à l'étape E22 (et dans le cas où b vaut 1) le message chiffré C correspondant à l'application de l'algorithme AES et de la clé cryptographique K à la donnée M en entrée. 15 En revanche, lorsque la clé C10 est égale au complément de la clé dérivée, soit K10 hFF, on obtient à l'étape E22 le message chiffré C hFF, soit le complément du message C (cas où b vaut 0). On applique alors par exemple au résultat de l'étape E22 l'opération e A 0.-') B déjà mentionnée (étape E24) ce qui permet de retrouver dans tous les 20 cas le message chiffré C en sortie (puisque A 0 B vaut h00 dans le cas où b vaut 1 et hFF dans le cas où b vaut 0). La figure 4 illustre un processus de dérivation de clé conforme aux enseignements de l'invention. Comme cela ressortira de l'explication qui suit et déjà mentionné plus 25 haut, ce processus est conçu pour générer une clé Ki+1 à partir d'une clé Ki selon ce qui est prévu dans le schéma AES (cas où b vaut 1 et Ci = Ki), mais également pour générer la clé correspondante complémentée K1+1 G hFF lorsque la clé qu'il reçoit en entrée a été complémentée et vaut donc Ki 0 hFF (cas où b vaut 0 et Ci = Ki hFF). 30 Dans ce contexte, on indiquera dans la suite qu'un traitement T conserve la propriété de complémentarité si pour tout octet x : T(x e hFF) = T(x) hFF. Comme il vient d'être indiqué, le processus de la figure 4 est conçu pour conserver cette propriété comme expliqué à présent. On applique tout d'abord à l'étape E50 l'opération RotWord classiquement utilisée à chacun des octets de la clé C, reçue en entrée. Cette opération est linéaire par rapport à l'opération de "ou exclusif' e et aucun traitement particulier n'est nécessaire pour conserver la propriété de complémentarité : RotWord(k, 9 hFF) = RotWord (k,) 9 hFF, où ki vaut successivement chacun des octets de la clé K,. On applique ensuite à l'étape E52 une fonction 6 ou une fonction 6' selon la valeur de b (i.e. selon que l'on utilise dans le traitement en cours la clé K, ou son complément) à chacun des octets issus de l'étape E50 : - lorsque b vaut 1, on applique la fonction 6 égale à la fonction SubWord classiquement utilisée ; - lorsque b vaut 0, on applique la fonction 6' qui à tout octet x associe : G'(x) = hFF 9 SubWord(x e hFF). Afin de conserver l'intérêt de l'utilisation possible (de manière aléatoire) de valeurs complémentées, l'application de la fonction a' n'utilise pas directement la fonction SubWord ou 6, car cela impliquerait de revenir à la valeur normale de la clé utilisée (c'est-à-dire sans complément) du fait de l'application de l'opération e hFF. On propose donc de réaliser l'étape E52 au moyen de deux tables de correspondance (en anglais "Look-up table") distinctes, une première table de correspondance comprenant l'ensemble des valeurs G(x) pour x variant de h00 à hFF et une seconde table de correspondance comprenant l'ensemble des valeurs G'(x) pour x variant de h00 à hFF, comme représenté en Figure 5. Par ailleurs, avant d'éviter les attaques par canaux auxiliaires 30 (également connues sous le nom de "Sicle Channel Attacks"), on propose que la première table et la seconde table soient juxtaposées de manière à former une table unique de 512 entrées, les 256 premières entrées correspondant par exemple à la première table (valeurs de G) et les 256 dernières entrées correspondant alors à la seconde table (valeurs de e'). Ainsi, l'étape E52 peut être réalisée en pratique par lecture dans cette table unique au niveau de l'entrée j+ b *256 où j est le résultat de l'étape E50 et Ti est le complément de b. De ce fait, lorsque b vaut 1, on lit la valeur G(j), soit SubWord(j), ce qui correspond au traitement classique prévu par l'algorithme AES, tandis que lorsque b vaut 0, on lit la valeur d(j), soit hFF 0 SubWord(j 0 hFF), et on conserve donc la propriété de complémentarité recherchée. On applique alors à l'étape E54 une opération de "ou exclusif' e avec la valeur Rcon à chacun des octets issus de l'étape E52, conformément à ce que prévoit l'algorithme AES. Ce traitement est linéaire par rapport à l'opération de "ou exclusif' 0 et aucune action particulière n'est nécessaire pour conserver la propriété de complémentarité à cette étape. On réalise enfin l'étape E56 à laquelle on applique à chacun des octets de la clé C, reçue en entrée une opération de "ou exclusif' 0 avec la valeur correspondante issue de l'étape E54 (résultat de l'application des étapes E50, E52 et E54 à l'octet concerné de la clé C,), et éventuellement en outre avec un octet obtenu précédemment au cours de la présente étape E56 (octet obtenu dans la colonne précédant celle de l'octet concerné comme représenté en figure 4, soit traité quatre octets avant l'octet concerné) afin d'obtenir les différents octets de la clé C,+1 comme prévu par l'algorithme AES. Dans le cas où la clé complémentée est en cours de dérivation (cas où b vaut 0), les deux valeurs X, Y à combiner par cette opération sont les valeurs classiques à ce stade selon l'algorithme AES, chacune étant toutefois complémentée (notamment du fait que les étapes E50, E52 et E54 conservent la propriété de complémentarité comme expliqué ci-dessus). On propose donc, pour mettre en oeuvre l'étape E56, de déterminer un masque p. par tirage aléatoire et d'ajouter (au sens de l'opération 0) ce masque à l'une des valeurs à combiner (par exemple à la valeur X) avant combinaison, comme représenté en figure 6. En effet, sans ce masquage, on aboutirait par la combinaison des deux valeurs complémentés à la valeur usuelle pour l'algorithme AES à ce stade et on perdrait donc l'avantage d'utiliser, de manière aléatoire, des valeurs complémentées dans les calculs. On remarque que ce masquage peut être réalisé non seulement 5 dans le cas où b vaut 0, mais également dans le cas où b vaut 1, ce qui permet d'appliquer le même traitement dans les deux cas. En variante, ce masquage pourrait n'est utilisée que dans les cas où b vaut 1. Afin de retrouver la valeur recherchée (non masquée), on applique de nouveau le masque après combinaison, en lui ajoutant (au sens de 10 l'opération 0) la valeur hFF dans le cas où b vaut 0 afin d'obtenir dans ce cas une valeur de sortie complémentée, comme on le prévoit dans le présent mode de réalisation. On propose par exemple pour ce faire d'effectuer cette opération en appliquant après combinaison (c'est-à-dire à X O Ft 8 Y) la valeur i.teAeB 15 comme représenté en figure 6, ce qui permet d'obtenir le résultat recherché quelle que soit la valeur de b. Le mode de réalisation qui vient d'être décrit n'est qu'un exemple possible de mise en oeuvre de l'invention, qui ne s'y limite pas. En particulier, dans les implémentations de l'algorithme AES où les 20 clés successivement dérivées ne sont pas mémorisées et où le message traité est masqué, il est envisageable de concevoir le processus de dérivation de manière à ce qu'il génère la clé Ki+, classiquement dérivée selon l'algorithme AES à cette étape, que le processus de dérivation soit effectué sur la base de la clé K, ou de son complément à 1 bit à bit Ki . 25 Il suffit pour ce faire de ne pas chercher à obtenir le complément lorsque cela est nécessaire (cas où b vaut 0 ci-dessus) en fin de processus de dérivation : on se contente dans ce cas de démasquer le résultat de la combinaison (étape E56) par la valeur p. (au lieu d'utiliser la valeur iLt C^ A 0 B comme prévu en figure 6). 30 On a par ailleurs présenté ci-dessus le cas où le message M en entrée n'est pas complémenté. Il est toutefois envisageable en variante de complémenter éventuellement le message (c'est-à-dire par exemple d'effectuer l'opération 0 A 0 B afin que le message soit complémenté lorsque b vaut 0), ce dans le cas où le processus de dérivation de clé est conforme à la figure 4 (génération de K,,, ou de K,+1 selon la valeur de b) ou dans le cas où le processus de dérivation génère systématiquement K1+1 selon la variante qui vient d'être mentionnée. REVENDICATIONS1. Procédé de traitement cryptographique de données, comprenant un processus de dérivation d'au moins une clé dérivée (Co) à partir d'une clé initiale (K), ledit processus comprenant au moins une opération non linéaire (E52) par rapport à une opération de ou exclusif (e), caractérisé en ce qu'il comprend les étapes suivantes : - choix aléatoire (E2, E4) d'une clé (C_1) parmi la clé initiale (K) et le complément à 1 bit à bit (K) de la clé initiale ; - mise en oeuvre du processus de dérivation sur la base de la clé choisie (C-1). 2. Procédé de traitement cryptographique selon la revendication 1, caractérisé en ce que l'opération non-linéaire (E52) est mise en oeuvre par lecture dans une table de correspondance. 3. Procédé de traitement cryptographique selon la revendication 2, caractérisé ce que, l'opération non-linéaire (E52) étant appliquée à un octet donné (j), ladite lecture est réalisée au niveau d'une entrée de la table de correspondance déterminée en fonction de l'octet donné (j) et du choix aléatoire effectué (b). 4. Procédé de traitement cryptographique selon l'une des revendications 1 à 3, caractérisé en ce que le processus de dérivation comprend un traitement (E50 ; E52 ; E54) générant un résultat lorsque la clé choisie est la clé initiale et le complément à 1 bit à bit du résultat lorsque la clé choisie est le complément à 1 bit à bit de la clé initiale, en ce que le processus de dérivation comprend une combinaison par une opération de ou exclusif d'un octet (X) obtenu par ledit traitement et d'un octet (Y) de la clé choisie et en ce que le processus de dérivation comprend une opération, antérieure à ladite combinaison, de masquage (i.i) de l'un au moins des octets combinés (X ; Y). 5. Procédé de traitement cryptographique selon l'une des revendications 1 à 4, caractérisé en ce qu'il comprend une étape (E8) d'application de la clé dérivée à des données de message au moyen d'une opération de ou exclusif. 6. Procédé de traitement cryptographique selon l'une des revendications 1 à 5, caractérisé en ce que ledit traitement est un algorithme de type AES. 7. Procédé de traitement cryptographique selon la revendication 6, caractérisé en ce que l'opération non-linéaire est une opération de type SubWord. 8. Dispositif de traitement de données apte à mettre en oeuvre un processus de dérivation d'au moins une clé dérivée (Co) à partir d'une clé initiale (K), ledit processus comprenant au moins une opération non linéaire (E52) par rapport à une opération de ou exclusif (CD), caractérisé en ce qu'il comprend : - des moyens configurés pour choisir (E2, E4) une clé (C_1) de manière aléatoire parmi la clé initiale (K) et le complément à 1 bit à bit (K) de la clé initiale ; - des moyens configurés pour mettre en oeuvre du processus de dérivation sur la base de la clé choisie (C-1). 9. Dispositif de traitement de données selon la revendication 8, caractérisé en ce qu'il comprend des moyens configurés pour appliquer l'opération non linéaire à un octet donné par lecture dans une table de correspondance au niveau d'une entrée de la table de correspondance déterminée en fonction de l'octet donné (j) et du choix effectué (b). 10. Dispositif de traitement de données selon la revendication 8 ou 9, caractérisé en ce que, le processus de dérivation comprenant un traitement(E50 ; E52 ; E54) générant un résultat lorsque la clé choisie est la clé initiale et le complément à 1 bit à bit du résultat lorsque la clé choisie est le complément à 1 bit à bit de la clé initiale et le processus de dérivation comprenant une combinaison par une opération de ou exclusif d'un octet (X) obtenu par ledit traitement et d'un octet (Y) de la clé choisie, il comprend des moyens configurés pour masquer, antérieurement à ladite combinaison, l'un au moins des octets combinés (X ; Y).