Brevet FR2998692A1 — publié le 20140530

Procédé de traitement cryptographique comprenant des opérations booléennes sur des données masquées de manière arithmétique, dispositifs et produit programme d'ordinateur correspondants 1. DOMAINE DE L'INVENTION Le domaine de l'invention est celui de la cryptographie. Plus précisément, l'invention concerne une technique de sécurisation contre des attaques par canaux cachés (ou SCA, acronyme anglais de « Side Channel Attacks »), de fonctions cryptographiques utilisant à la fois des opérations d'arithmétique modulaire (par exemple addition ou soustraction modulaire) et des opérations booléennes (décalage de bits, opérateurs booléen, etc...). L'invention peut s'appliquer notamment aux cartes à puces, et plus généralement à tout dispositif électronique devant faire face à des problématiques similaires. 2. ARRIÈRE-PLAN TECHNOLOGIQUE Afin de protéger des dispositifs électroniques contre des attaques par canaux cachés, une technique bien connue de l'Homme du métier consiste à utiliser des masques arithmétiques ou booléens en fonction des opérations à protéger. Les chapitres 9 et 10 du document intitulé « Power Analysis Attacks, revealing the secrets of smart cards » de S. Mangard et al., publié par l'éditeur Springer Verlag présentent de manière exhaustive l'intérêt de l'utilisation de tels masques. De par la structure de certains cryptosystèmes (notamment les fonctions cryptographiques appartenant à la famille des cryptosystèmes dite «ARX» (pour « Addition, Rotation, Xor ») combinant des opérations d'addition modulaire, de rotation et de « ou exclusif », comme le cryptosystème IDEA, acronyme anglais de « International Data Encryption Algorithm », les fonctions de hachage « Skein » et « BLAKE », ou encore la fonction HMAC-SHA-1), il est nécessaire de réaliser par moment des opérations d'arithmétique modulaire, et à d'autres moments des opérations booléennes. De facto, l'Homme du métier doit mettre en oeuvre des techniques de conversion permettant de transformer une donnée masquée de manière arithmétique, en une donnée masquée de manière booléenne, ou vice-versa en fonction du contexte, et ce de manière sécurisée. De telles techniques sont notamment présentées dans les documents US 2007/0058800, US 2005/0147243, FR 2820914, ainsi que dans les articles «Switching blindings with a view towards IDEA » de J. Pulkus et al., publié dans les annales de la conférence CHES (pour « Cryptographic Hardware and Embedded Systems ») 2004, « On Boolean and Arithmetic Masking against Differential Power Analysis » de J-S. Coron et al., publié dans les annales de la conférence CHES 2000, et «Switching from Arithmetc to Boolean Masking » de B. Debraize et al., publié dans les annales de la conférence CHES 2012. Ainsi, dans le cas de figure où une donnée masquée de manière arithmétique doit être traitée par une opération booléenne, comme une rotation binaire par la gauche ou par la droite de k'-bits, avec k' un entier naturel, suivie d'une autre opération arithmétique, il est nécessaire d'appliquer dans un premier temps une des techniques de conversion transformant une donnée masquée de manière arithmétique, en une donnée masquée de manière booléenne, puis de réaliser, dans un deuxième temps, l'opération booléenne susmentionnée (en supprimant l'impact du masque et en introduisant un autre masque, de sorte d'obtenir une donnée masquée de manière booléenne), et d'appliquer dans un troisième temps une des techniques de conversion transformant une donnée masquée de manière booléenne, en une donnée masquée de manière arithmétique , afin de réaliser ladite autre opération arithmétique. Une telle succession d'étapes, mises en oeuvre par un dispositif électronique, consistant à réaliser une première conversion, une opération booléenne, une deuxième conversion puis une opération arithmétique, nécessite de nombreuses opérations intermédiaires qui ralentissent l'exécution de la fonction cryptographique. De plus, les techniques de conversion nécessitent généralement d'utiliser des tables, relativement grandes, devant être déterminées et stockées en mémoire, ce qui peut être contraignant lorsqu'on utilise des dispositifs possédant peu de ressources. 3. EXPOSÉ DE L'INVENTION Dans un mode de réalisation particulier de l'invention, il est proposé un procédé de traitement cryptographique, comprenant une première étape d'obtention d'une première donnée masquée arithmétiquement A, ladite première donnée masquée arithmétiquement correspondant au résultat d'une opération arithmétique entre une première donnée t-t et un premier masque M. Le procédé de traitement est remarquable en ce qu'il comprend : - une étape de détermination du résultat g(A) d'une application d'une fonction booléenne g à ladite première donnée masquée arithmétiquement ; - une étape de détermination d'une donnée de correction H et d'un deuxième masque M1; et - une étape de détermination d'une opération arithmétique entre ladite donnée de correction H et ledit résultat g(A) délivrant une deuxième donnée masquée Al correspondant au résultat d'une opération arithmétique entre ledit deuxième masque M1 et un résultat g(â) d'une application de ladite fonction booléenne g à ladite première donnée à . Le principe général de l'invention consiste donc à s'affranchir de l'utilisation des techniques de conversion de masques telles que mentionnées précédemment, en appliquant directement la fonction booléenne à la première donnée masquée arithmétiquement, et en déterminant une donnée de correction et un deuxième masque (le deuxième masque résultant d'une combinaison du premier masque et des données de correction). De telles étapes nécessitent moins d'opérations que les solutions de l'état de la technique, tout en préservant la sécurité du procédé de traitement cryptographique. Selon un aspect particulier, un tel procédé de traitement cryptographique est remarquable en ce que ladite fonction booléenne g est une opération de rotation binaire par la gauche d'un nombre k1, ledit nombre k1 étant un nombre de paramétrage k. Ainsi, lorsque la fonction booléenne est une opération de rotation binaire par la gauche, telle qu'utilisée dans la famille des cryptosystèmes dite « ARX », la présente invention permet de réduire avantageusement le nombre d'opérations réalisées en comparaison avec les techniques de conversion décrites dans l'état de la technique. Selon un aspect particulier, un tel procédé de traitement cryptographique est remarquable en ce que ladite fonction booléenne g est une opération de rotation binaire par la droite d'un nombre k2. Ainsi, lorsque la fonction booléenne est une opération de rotation binaire par la droite, telle qu'utilisée dans la famille des cryptosystèmes dite « ARX », mais moins répandue que l'opération de rotation binaire par la gauche, la présente invention permet de réduire avantageusement le nombre d'opérations réalisées en comparaison avec les techniques de conversion décrites dans l'état de la technique. Selon un aspect particulier, un tel procédé de traitement cryptographique est remarquable en ce que ladite opération de rotation binaire par la droite dudit nombre k2 correspondant à une rotation binaire par la gauche d'un nombre n-k2 , où n correspond à une taille de ladite première donnée masquée arithmétiquement A en nombre de bits, ledit nombre n-k2 étant un nombre de paramétrage k. Ainsi, il est possible, de définir l'opération de rotation par la droite, par l'opération de rotation par la gauche, qui est une opération plus utilisée que l'opération de rotation par la droite (de par sa présence dans de nombreux algorithmes standardisés). Ainsi, un dispositif électronique comprenant un matériel dédié à la réalisation d'une opération de rotation par la gauche peut être utilisé pour effectuer une opération de rotation par la droite. Selon un aspect particulier, un tel procédé de traitement cryptographique est remarquable en ce que ladite étape de détermination d'une donnée de correction H et d'un deuxième masque M1comprend : - une étape d'instanciation de ladite donnée de correction H à zéro ; - une étape de détermination d'un résultat R1 d'une opération de rotation binaire par la gauche dudit nombre de paramétrage k dudit premier masque ; - une étape de détermination d'un premier bit C1 = C(C1[0..n-k-1], M[0..n-k-1],n k) et d'un deuxième bit C2= CCa[n-k..n] M[n_k_n],k) où une fonction à trois variables , C(ui,u2,u3) est définie comme étant une valeur d'une retenue obtenue suite à l'addition des deux variables u1 et u2 au u3-1 ième bit , et une notation X[u.'.] , pour une donnée X, est définie par la relation suivante : = mod - 1) - (mod 2u - 1);V] et - une étape de détermination de l'addition modulaire entre ledit résultat R1 et un nombre B1 qui est défini par la relation suivante : B1 = C1 - C2. 2k mod 2n , ladite étape de détermination de l'addition modulaire délivrant ledit deuxième masque M1. Ainsi, la présente technique ne comprend que peu d'étapes en comparaison avec les solutions de l'état de la technique. Dans un mode de réalisation particulier, un tel procédé de traitement cryptographique est remarquable en ce que ladite étape de détermination d'une donnée de correction H et d'un deuxième masque M1 comprend : - une étape de détermination d'un résultat d'une opération de rotation binaire par la gauche dudit nombre de paramétrage k dudit premier masque, délivrant ledit deuxième masque M1; - une étape de détermination d'un premier bit C1 = CO[0..n-k-1], 111[0..n-k-l] ,n k) et d'un deuxième bit C2= C où une fonction à trois [n-k..n],M[n-k..n], k) variables C(u1iu2,u3) est définie comme étant une valeur d'une retenue obtenue suite à l'addition des deux variables u1 et u2 au u3-1 ième bit, et la notation V], pour une donnée X, est définie par la relation suivante : X = mod 2'1 - - ( mod 2' - 1); et - une étape de détermination de ladite donnée de correction H = C2. 2k - C1 mod 2n. Selon un aspect particulier, un tel procédé de traitement cryptographique est remarquable en ce que ladite étape de détermination d'un premier bit C1 et/ou d'un deuxième bit C2 comprend une étape de lecture d'une table carry table à double entrée en utilisant comme indices une partie de ladite première donnée masquée arithmétiquement et une partie dudit premier masque M. Ainsi, en effectuant une telle étape de lecture, on réduit la complexité du procédé de traitement cryptographique, car un accès et une lecture d'une table est plus rapide qu'une étape de calcul explicite. Dans un mode de réalisation particulier, un tel procédé de traitement cryptographique est remarquable en ce que ladite table carry table est instanciée en déterminant carry table[U] = Eî_b 1 Ill U .2i pour tout nombre U d'une taille de b-bits, où b est un entire positif, et en ce que ladite étape de lecture de ladite table carry table comprend une étpae d'obtention des nombres U1 et U2 à comparer, et une étape de détermination de I(carry_table[111])/2u2.1mod 2 = , où la fonction II correspond à la fonction indicatrice Ilu1,u2 = 1 si U1 U2, et où la fonction J est la fonction partie entière. Ainsi, une telle table, de par la nature des données qu'elle comprend, peut être lue de manière sécurisée. Selon un aspect particulier, un tel procédé de traitement cryptographique est remarquable en ce que ladite première donnée Et est soit une donnée utile a, soit un complémentaire de ladite donnée utile a, un choix entre ladite donnée utile et ledit complémentaire de ladite donnée utile étant réalisé en fonction d'une valeur d'un bit aléatoire z. Ainsi, une telle caractéristique technique permet de renforcer la résistance du procédé de traitement cryptographique contre des attaques par canaux cachés. Dans un mode de réalisation particulier, un tel procédé de traitement cryptographique est remarquable en ce que ledit choix est réalisé suite à un accès à une table LUT comprenant deux éléments différents y1 et y2 et possédant un poids de Hamming identique, égal à n/2, où n correspond à une taille en bits de ladite première donnée, ladite première donnée ti étant égale à a E3, v3 El) LUT [z] où un nombre y3 est pré-déterminé pour qu'une représentation binaire du nombre 1,3 e) LUT[z] soit égale à une suite de n-bits à zéro ou de n-bits à 1. Ainsi, une telle caractéristique technique permet de renforcer la résistance du procédé de traitement cryptographique contre des attaques par canaux cachés. Dans un autre mode de réalisation de l'invention, il est proposé un produit programme d'ordinateur qui comprend des instructions de code de programme pour la mise en oeuvre du procédé précité (dans l'un quelconque de ses différents modes de réalisation), lorsque ledit programme est exécuté sur un ordinateur. Dans un autre mode de réalisation de l'invention, il est proposé un composant électronique comportant des moyens adaptés à la mise en oeuvre du procédé précité (dans l'un quelconque de ses différents modes de réalisation). Plus précisément, selon une implémentation préférée, les différentes étapes du procédé selon l'invention sont mises en oeuvre par un logiciel ou programme d'ordinateur, ce logiciel comprenant des instructions logicielles destinées à être exécutées par un processeur de données d'un module relais selon l'invention et étant conçu pour commander l'exécution des différentes étapes de ce procédé. En conséquence, l'invention vise aussi un programme, susceptible d'être exécuté par un ordinateur ou par un processeur de données, ce programme comportant des instructions pour commander l'exécution des étapes d'un procédé tel que mentionné ci-dessus. Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. L'invention vise aussi un support d'informations lisible par un processeur de données, et comportant des instructions d'un programme tel que mentionné ci-dessus. Le support d'informations peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette (floppy disc) ou un disque dur. D'autre part, le support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. Alternativement, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. Selon un mode de réalisation, l'invention est mise en oeuvre au moyen de composants logiciels et/ou matériels. Dans cette optique, le terme "module" peut correspondre dans ce document aussi bien à un composant logiciel, qu'à un composant matériel ou à un ensemble de composants matériels et logiciels. Un composant logiciel correspond à un ou plusieurs programmes d'ordinateur, un ou plusieurs sous-programmes d'un programme, ou de manière plus générale à tout élément d'un programme ou d'un logiciel apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Un tel composant logiciel est exécuté par un processeur de données d'une entité physique (terminal, serveur, etc) et est susceptible d'accéder aux ressources matérielles de cette entité physique (mémoires, supports d'enregistrement, bus de communication, cartes électroniques d'entrées/sorties, interfaces utilisateur, etc). De la même manière, un composant matériel correspond à tout élément d'un ensemble matériel (ou hardware) apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Il peut s'agir d'un composant matériel programmable ou avec processeur intégré pour l'exécution de logiciel, par exemple un circuit intégré, une carte à puce, une carte à mémoire, une carte électronique pour l'exécution d'un micrologiciel (firmware), un élément de sécurité (ou « secure element » en anglais) utilisé dans le contexte de communication en champ proche (pour « Near Field Communication » en anglais), etc. Dans un autre mode de réalisation de l'invention, il est proposé un dispositif apte à réaliser un traitement cryptographique, comprenant des moyens d'obtention d'une première donnée masquée arithmétiquement A, ladite première donnée masquée arithmétiquement correspondant au résultat d'une opération arithmétique entre une première donnée à et un premier masque M. Un tel dispositif est remarquable en ce qu'il comprend : - des moyens de détermination du résultat g(A) d'une application d'une fonction booléenne g à ladite première donnée masquée arithmétiquement ; - des moyens de détermination d'une donnée de correction H et d'un deuxième masque M1; et - des moyens de détermination d'une opération arithmétique entre ladite donnée de correction H et ledit résultat g(A) délivrant une deuxième donnée masquée Al correspondant au résultat d'une opération arithmétique entre ledit deuxième masque M1 et un résultat g(â) d'une application de ladite fonction booléenne g à ladite première donnée à . Selon un aspect particulier, un tel dispositif est remarquable en ce que ladite fonction booléenne g est une opération de rotation binaire par la gauche d'un nombre k1, ledit nombre k1 étant un nombre de paramétrage k. Ainsi, les moyens de détermination du résultat g(A) sont des moyens permettant de réaliser une opération de rotation binaire par la gauche d'un nombre k1, ledit nombre k1 étant un nombre de paramétrage k. Selon un aspect particulier, un tel dispositif est remarquable en ce que ladite fonction booléenne g est une opération de rotation binaire par la droite d'un nombre k2. Ainsi, les moyens de détermination du résultat g(A) sont des moyens permettant de réaliser une opération de rotation binaire par la droite d'un nombre k2. 4. LISTE DES FIGURES D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée à titre d'exemple indicatif et non limitatif, et des dessins annexés, dans lesquels : la figure 1(a) présente, sous la forme d'un organigramme, un traitement cryptographique selon l'état de la technique; la figure 1(b) présente, sous la forme d'un organigramme, le principe général de la présente invention; - la figure 2(a) présente, sous la forme d'un organigramme, les différentes étapes d'un procédé de traitement cryptographique, selon un mode de réalisation de l'invention; la figure 2(b) présente, sous la forme d'un organigramme, les différentes étapes d'un procédé de traitement cryptographique, selon un autre mode de réalisation de l'invention; la figure 3 présente, sous la forme d'un organigramme, une description détaillée du procédé décrit en figure 2(b); - La figure 4(a) représente, schématiquement, un dispositif de traitement de données dans lequel la présente invention est mise en oeuvre ; La figure 4(b) représente une carte à microcircuit qui constitue un exemple de dispositif de traitement de données conforme à l'invention tel que représenté à la figure 4(a). 6. DESCRIPTION DÉTAILLÉE Sur toutes les figures du présent document, les éléments et étapes identiques sont désignés par une même référence numérique. La figure 1(a) présente, sous la forme d'un organigramme, un traitement cryptographique selon l'état de la technique. Plus précisément, lorsqu'on a, dans un procédé cryptographique, une succession d'étape suivantes : une première étape de traitement selon des opérations arithmétiques, une étape de traitement selon des opérations booléennes (correspondant à l'application d'une fonction booléenne g), puis une deuxième étape de traitement selon des opérations arithmétiques, et que l'on souhaite utiliser la technique de masquage de données telles que mentionnée dans les documents de l'état de la technique précédemment cités, il est nécessaire de procéder de la sorte : supposons qu'en sortie de la première étape de traitement 101 selon des opérations arithmétiques, on obtienne une donnée masquée via l'utilisation d'un masquage arithmétique, et le masque associé. Ainsi, on obtient, en sortie de l'étape de traitement 101, la donnée masquée suivante A = â EEI M = Cet + M) mod 211 ainsi que le premier masque M, où n représente la taille en nombre de bits de la représentation d'une première donnée Et (une telle taille correspond généralement à une taille d'un registre dans un dispositif électronique) ; ensuite, il est nécessaire de procéder à l'exécution d'une étape de conversion de masque 102 (permettant de passer d'un masquage arithmétique à un masquage booléen). Ainsi, en sortie de l'étape de conversion, on obtient une autre donnée masquée de manière booléenne A' = Et- ® M' avec M' qui est un deuxième masque ; Puis, on exécute l'étape de traitement 103 selon des opérations booléennes (correspondantes en partie à l'application d'une fonction g) de manière sécurisée de sorte, qu'en sortie de cette étape de traitement 103, on obtienne les éléments suivants : A" = g(â) El) M" avec M" qui est un troisième masque ; enfin, il faut procéder à l'exécution d'une étape de conversion de masque 104 (permettant de passer d'un masquage booléen à un masquage arithmétique). Ainsi, en sortie de l'étape de conversion 104, on obtient une autre donnée masquée de manière arithmétique Am = g(et) EEI Nr" avec M"' qui est un quatrième masque. Ainsi, on peut exécuter les opérations arithmétiques de l'étape de traitement 105 de manière sécurisé. Un inconvénient de cette technique réside dans le fait qu'on utilise un certain nombre d'opérations dégradant les performances du procédé cryptographique (d'un point de vue du temps d'exécution, et du code additionnel utilisé) en comparaison avec le procédé cryptographique non sécurisé. La figure 1(b) présente, sous la forme d'un organigramme, le principe général de la présente invention. Comme mentionné précédemment, le principe général de l'invention consiste donc à obtenir, dans un premier temps, un premier masque M, et une première donnée masquée arithmétiquement A, correspondant au résultat d'une opération arithmétique entre une première donnée et et un premier masque M. Le premier masque M, et la première donnée masquée arithmétiquement A sont stockées dans des registres du dispositif électronique que l'on cherche à protéger contre des attaques par canaux cachés. Puis dans un deuxième temps, le dispositif exécute une étape 106, prenant en entrée la première donnée masquée arithmétiquement A, ainsi que le masque associé M, pour obtenir une deuxième donnée masquée arithmétiquement Al et un deuxième masque associé M1, tel que l'on ait Al = g(c7)111 M1, avec le deuxième masque M1, qui est une fonction de A et M, et où g est une fonction booléenne. L'étape 106 comprend une étape d'application de la fonction booléenne g à la donnée masquée arithmétiquement A, (i.e. on détermine g(A) = g(er El] M)), et une étape de détermination d'un deuxième masque M1 et d'une donnée de correction H vérifiant l'équation suivante : Al = g(A) EEI H = g(E0111 M1. Ainsi, de telles étapes permettent d'obtenir la deuxième donnée masquée arithmétiquement Al et un deuxième masque associé M1 sans manipuler explicitement la première donnée Ei, ni en utilisant des techniques de conversion de masquage telle que décrites précédemment. La figure 2(a) présente, sous la forme d'un organigramme, les différentes étapes d'un procédé de traitement cryptographique, selon un mode de réalisation de l'invention. Ainsi, le procédé, selon un mode de réalisation de l'invention, permet de déterminer à partir des trois données suivantes : - A = â EEI M = (cT + M) mod 271; - un premier masque M; et - k1, un nombre inférieur ou égal à n. les deux données suivantes de manière sécurisée : - Al = RotL(er, k1) EEI ; et - un deuxième masque M1 =L(AM,i(t). où la fonction « RotL » est la fonction de rotation binaire par la gauche de kr bits, définie par l'équation suivante : RotL(X, kl) = (X « k1) y (X » n-k1) où X est un mot de n-bits, avec le nombre n qui est un entier supérieur ou égal à 1, et les opérations a1 « b1 et a1 » b1 sont respectivement les opérations de décalage à gauche et à droite de b1 bits sur la variable a1 composée de n-bits (i.e les bits sortants ne sont pas réintroduits à droite dans le cas de l'opération de décalage à gauche, et ils ne sont pas réintroduits à gauche dans le cas de l'opération de décalage à droite), et l'opérateur « v» correspond à l'opérateur de OU inclusif (« OR » en anglais). Il convient de noter que les notations et fonctions suivantes seront utilisées pour détailler précisément les étapes du procédé selon la présente invention : * X[ uy] = (X mod 2' - 1) - (X mod 2' - 1) correspond ainsi aux (v-u) bits d'une représentation en base binaire d'un nombre X, positionnés aux indices u à v. Ainsi, pour un nombre X dont la représentation binaire possède n bits, on peut écrire que X = X 2n-ki + y[ 0 - ..n-ki-1], * la fonction C à trois variables C(u1,u2,b/) est définie comme étant la valeur de la retenue obtenue suite à l'addition des deux variables ui et u2 au b1-1 ième bit. Ainsi, en notant que X = 271-k1 et Y = Y[n-lci..n] 2n-k1 + peut noter que X + Y = X 271-k1 (X avec Y[0..n-k1-11)P t = C(X[0..n-ki-1], Y[0..n-ki-1]/1/41). Ainsi, le procédé, selon un mode de réalisation de l'invention comprend une étape de détermination de Ai = RotL(A, EEI H = RotL(er ,k1) EEI M', et une étape de détermination effective du masque M' qui est défini par la relation suivante : M' = RotL(M, k1) + Ci - C2.2k1 mod 2n où Ci = Ccer et C2 = C (fin-ki-n1/ M[n-ki..n] ,ki)- Ainsi, on a, dans ce mode de réalisation, H, la donnée de correction qui vaut O. Ainsi, la valeur de M1 dépend des valeurs des deux retenues Ci et C2 . Les valeurs des retenues Ci et C2 peuvent être obtenues de manière sécurisée en utilisant des tables de comparaisons préalablement pré-déterminées, comme cela est en lien avec la figure 3. En effet, la détermination des retenues C1 et C2 dépend de la variable masquée de manière arithmétique A et du masque M, et nécessite de facto la mise en oeuvre de mesures sécuritaires visant à pallier les attaques par canaux cachés. Ainsi, une fois que l'on dispose de Al et de M1, il est aisée de retrouver le résultat (non masqué) de l'opération portant sur la première donnée 'à'. Plus précisément, on a RotL(W, k1) = (A1- M1) mod 2n). Il convient de noter que la rotation binaire par la droite de k2-bits, RotR(X, k2), peut être définie par la fonction de rotation binaire par la gauche en constatant que RotR(X, k2) = RotL(X,n-k2). Dans un autre mode de réalisation, l'étape de détermination de Al vise à déterminer Ai = RotL(A, k1) El] H = RotL(A, - Ci + C2.2k1 mod 2n = RotL(Er ,k1) M1, où C1 = r 0 M[0..n-ki-i] ,n - k1) et C2 = C(r, [n-ki..n] et une étape de détermination effective du masque M1 qui est défini par la relation suivante : Mi = RotL(M, k1). Ainsi, on a, dans ce mode de réalisation, H la donnée de correction qui vaut (- Ci + C2.2k1) mod 2n. La figure 2(b) présente, sous la forme d'un organigramme, les différentes étapes d'un procédé de traitement cryptographique, selon un autre mode de réalisation de l'invention. Ainsi, le procédé, selon un mode de réalisation de l'invention, permet de déterminer à partir des trois données suivantes : - A = er EE M = (a ( D -z) M où z est un bit aléatoire (ainsi, on a soit A = a El3 M , soit A = M en fonction de la valeur du bit aléatoire z. Dans ce mode de réalisation,la première donnée a' correspond soit à une donnée utile (ou sensible) a, soit au complémentaire d'une telle donnée utile (ou sensible) a) ; - un premier masque M; et - KI, un nombre inférieur ou égal à n. les deux données suivantes de manière sécurisée : - Al = RotL((a e -z), k1) EEI M1 ; et - un deuxième masque M1 =f (M, A,k1). Selon ce mode de réalisation, les opérations sont identiques à celles décrites en lien avec la figure 2(a). Seule la donnée d'entrée (à cause de la technique de modification de la valeur de la première donnée il) est différente. Le fait de modifier ainsi la valeur de la donnée sensible permet d'éviter une fuite d'information pouvant se produire lors de la réalisation des étapes décrites en lien avec la figure 2(a). En effet, une telle technique permet d'empêcher d'établir une corrélation entre la distribution de retenues et la valeur d'une donnée sensible. Dans un mode de réalisation de l'invention, la détermination d'une première donnée Er , à partir d'une donnée utile (ou sensible) a et d'un bit aléatoire z, est réalisée via l'accès à une table stockée en mémoire. Ainsi, lorsque la donnée utile (ou sensible), a, est représentée par un octet, on utilise le traitement suivant pour déterminer la première donnée 'd en fonction d'un bit aléatoire z et d'une table, note LUT, comprenant deux octets ayant pour valeurs Ox3C et OxC3 (en notation hexadécimale) : 'd = a EBOx3C ED LUT[z]. Les éléments de la table LUT sont choisis de sorte qu'ils aient un poids de Hamming identique, et égal à 4 (i.e 8/2). L'homme du métier pourra adapter cette technique lorsque la donnée utile (ou sensible) a possède un nombre de bits plus important (i.e lorsque la donnée utile (ou sensible) a est un nombre ayant une représentation binaire de 32 bits, la table compend deux nombres, chacun de 32 bits, qui sont par exemple Ox3C3C3C3C et OxC3C3C3C3. Ainsi, on détermine la valeur de la première donnée "d de la manière suivante : 'd = a (1)0x3C3C3C3C ED LUT[z]. Dans un autre mode de réalisation, les deux éléments de la tables sont Ox0F0F0FOF et OxF0F0F0F0. Ainsi, on détermine la valeur de la première donnée 'd de la manière suivante : 'd = a H) Ox0F0F0FOF ED LUT[z].) Ainsi, une fois que l'on dispose de A2 et de M2, on peut retrouver le résultat (non masqué) de l'opération portant sur à, la donnée sensible. Plus précisément, on a RotL(â, k1) = ((RotL(A,k1)- M1) mod 211) ED ( - z ). La figure 3 présente, sous la forme d'un organigramme, une description détaillée du procédé décrit en figure 2(b). Dans une étape 301, on initialise une variable c à zéro . Puis dans une étape 302, on initialise une variable b1 en déterminant la valeur de 17-1 4 -11 où la fonction I. I est la fonction partie entière. Dans une étape 303, on initialise une variable i à zéro. Puis dans une étape 304, dans un mode de réalisation, on détermine la valeur lue dans une table à double entrée, la table notée « carry-table », en utilisant comme paramètre d'indice les nombres M[4i..4i+3] et ii[ 4i..4i+3] - c. En effet, la table « carry-table » contient le résultat des comparaisons entre tous les nombres U et V comprenant 4 bits. Dans un mode de réalisation, on a carry-table [U][V] = la fonction indicatrice liuy = 1 si U 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 410 et l'interface 430 pourront être réalisés par des moyens uniques, par exemple un port de communication série ou un bus. Le microprocesseur 410 est apte à exécuter un logiciel (ou programme d'ordinateur) qui permet au dispositif de traitement de données 440 d'exécuter un procédé conforme à l'invention dont des exemples sont donnés en regard des figures 3 et 4. Ce procédé est par exemple exécuté par 440 sur réception des données d'entrée X. Les données du procédé selon l'invention peuvent être obtenus à partir des données d'entrée ou, pour certains paramètres comme une liste de nombre premiers à partir de la mémoire non volatile 420. Le logiciel est composé d'une série d'instructions de commande du microprocesseur 410 qui sont par exemple stockées dans la mémoire 420. Dans une variante, l'ensemble microprocesseur 410 - mémoire non-volatile 420 - mémoire vive 460 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é. La figure 4(b) représente une carte à microcircuit qui constitue un exemple de dispositif de traitement de données conforme à l'invention tel que représenté à la figure 4(a). L'interface de communication 430 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. La carte à microcircuit incorpore un microprocesseur 410, une mémoire vive 460 et une mémoire non volatile 420 comme cela est représenté sur la figure 4(a). 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) 420 et la mémoire vive 460. Les données d'entrée X sont par exemple des commandes APDU, et les données de sortie Y des réponses APDU. Dans une variante, le dispositif de traitement de données peut être une clé 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 clé cryptographique) telle que les attaques par fautes et/ou par analyse de canaux cachés (en anglais , « sicle channel attacks »). En particulier, le dispositif est conforme à la norme FIPS ou aux critères communs. REVENDICATIONS1. Procédé de traitement cryptographique, comprenant une première étape d'obtention d'une première donnée masquée arithmétiquement A, ladite première donnée masquée arithmétiquement correspondant au résultat d'une opération arithmétique entre une première donnée Et et un premier masque M, ledit procédé de traitement étant caractérisé en ce qu'il comprend : - une étape de détermination du résultat g(A) d'une application d'une fonction booléenne g à ladite première donnée masquée arithmétiquement ; - une étape de détermination d'une donnée de correction H et d'un deuxième masque M1; et - une étape de détermination d'une opération arithmétique entre ladite donnée de correction H et ledit résultat g(A) délivrant une deuxième donnée masquée Al correspondant au résultat d'une opération arithmétique entre ledit deuxième masque M1 et un résultat g(â) d'une application de ladite fonction booléenne g à ladite première donnée -d . 2. Procédé de traitement cryptographique selon la revendication 1, caractérisé en ce que ladite fonction booléenne g est une opération de rotation binaire par la gauche d'un nombre k1, ledit nombre k1 étant un nombre de paramétrage k. 3. Procédé de traitement cryptographique selon la revendication 1, caractérisé en ce que ladite fonction booléenne g est une opération de rotation binaire par la droite d'un nombre k2. 4. Procédé de traitement cryptographique selon la revendication 3, caractérisé en ce que ladite opération de rotation binaire par la droite dudit nombre k2 correspondant à une rotation binaire par la gauche d'un nombre n-k2 , où n correspond à une taille de ladite première donnée masquée arithmétiquement A en nombre de bits, ledit nombre n-k2 étant un nombre de paramétrage k. 5. Procédé de traitement cryptographique selon l'une quelconque des revendications 2 et 4, caractérisé en ce que ladite étape de détermination d'une donnée de correction H et d'un deuxième masque M1 comprend : - une étape d'instanciation de ladite donnée de correction H à zéro ;- une étape de détermination d'un résultat R1 d'une opération de rotation binaire par la gauche dudit nombre de paramétrage k dudit premier masque ; - une étape de détermination d'un premier bit Ci = C(irt M[0..n-k-l] n k) et d'un deuxième bit C2= C(a[n-k..n] M[n-k..n] k) où une fonction à trois variables , C(u1,u2,u3) est définie comme étant une valeur d'une retenue obtenue suite à l'addition des deux variables u1 et u2 au u3-1 ième bit , et une notation X[u,], pour une donnée X, est définie par la relation suivante : = (X mod 2' - 1) - ( mod 2' - 1);V] et - une étape de détermination de l'addition modulaire entre ledit résultat R1 et un nombre B1 qui est défini par la relation suivante : B1 = C1 - C2.2k mod 2n , ladite étape de détermination de l'addition modulaire délivrant ledit deuxième masque M1. 6. Procédé de traitement cryptographique selon l'une quelconque des revendications 2 et 4, caractérisé en ce que ladite étape de détermination d'une donnée de correction H et d'un deuxième masque M1 comprend : - une étape de détermination d'un résultat d'une opération de rotation binaire par la gauche dudit nombre de paramétrage k dudit premier masque, délivrant ledit deuxième masque M1i - une étape de détermination d'un premier bit C1 k) et d'un deuxième bit C2= C(â ,Mk) où une fonction à trois [n-k..n] [n_k_n p variables C(ui,u2,u3) est définie comme étant une valeur d'une retenue obtenue suite à l'addition des deux variables u1 et u2 au u3-1 ième bit, et la notation Xpivi , pour une donnée X, est définie par la relation suivante : X = mod - 1) - ( mod 2u - 1); et - une étape de détermination de ladite donnée de correction H C2.2k - C1 mod 2n. 7. Procédé de traitement cryptographique selon l'une quelconque des revendications 5 et 6, caractérisé en ce que ladite étape de détermination d'un premier bit Ci et/ou d'un deuxième bit C2 comprend une étape de lecture d'une table carry table à double entrée en utilisant comme indices une partie de ladite première donnée masquée arithmétiquement et une partie dudit premier masque M. = C(e1[0..n-k-1], M[0..n-k-1],n 8. Procédé de traitement cryptographique selon la revendication 7, caractérisé en ce que ladite table carry table est instanciée en déterminant carry table[U] = Eî_b 0-1110 .2i pour tout nombre U d'une taille de b-bits, où b est un entire positif, et en ce que ladite étape de lecture de ladite table carry table comprend une étpae d'obtention des nombres Ul et U2 à comparer, et une étape de détermination de i(carry_table[Ud) / 2u2 mod 2 = IIal az , où la fonction II correspond à la fonction indicatrice llui,u, = 1 si U1 9. Procédé de traitement cryptographique selon l'une quelconque des revendications 1 à 8, caractérisé en ce que ladite première donnée 'd est soit une donnée utile a, soit un complémentaire de ladite donnée utile a, un choix entre ladite donnée utile et ledit complémentaire de ladite donnée utile étant réalisé en fonction d'une valeur d'un bit aléatoire z. 10. Procédé de traitement cryptographique selon la revendication 9, caractérisé en ce que ledit choix est réalisé suite à un accès à une table LUT comprenant deux éléments différents v1 et 1/2 et possédant un poids de Hamming identique, égal à n/2, où n correspond à une taille en bits de ladite première donnée, ladite première donnée Et étant égale à a se y3 ED LUT [z] où un nombre y3 est pré-déterminé pour qu'une représentation binaire du nombre y3 ED LUT[z] soit égale à une suite de n-bits à zéro ou de n-bits à 1. 11. Produit programme d'ordinateur, comprenant des instructions de code de programme pour la mise en oeuvre du procédé selon au moins une des revendications 1 à 10, lorsque ledit programme est exécuté sur un ordinateur. 12. Médium de stockage lisible par ordinateur et non transitoire, stockant un programme d'ordinateur comprenant un jeu d'instructions exécutables par un ordinateur ou un processeur pour mettre en oeuvre le procédé selon au moins une des revendications 1 à 10. 13. Dispositif apte à réaliser un traitement cryptographique, comprenant des moyens d'obtention d'une première donnée masquée arithmétiquement A, ladite première donnée masquée arithmétiquement correspondant au résultat d'une opérationarithmétique entre une première donnée Ci et un premier masque M, ledit dispositif étant caractérisé en ce qu'il comprend : - des moyens de détermination du résultat g(A) d'une application d'une fonction booléenne g à ladite première donnée masquée arithmétiquement ; - des moyens de détermination d'une donnée de correction H et d'un deuxième masque M1; et - des moyens de détermination d'une opération arithmétique entre ladite donnée de correction H et ledit résultat g(A) délivrant une deuxième donnée masquée Al correspondant au résultat d'une opération arithmétique entre ledit deuxième masque M1 et un résultat g(el) d'une application de ladite fonction booléenne g à ladite première donnée Et . 14. Dispositif selon la revendication 13, caractérisé en ce que ladite fonction booléenne g est une opération de rotation binaire par la gauche d'un nombre k1, ledit nombre kl étant un nombre de paramétrage k. 15. Dispositif de traitement cryptographique selon la revendication 13, caractérisé en ce que ladite fonction booléenne g est une opération de rotation binaire par la droite d'un nombre k2.