FR 2725055 A1 19960329 FR 9411586 A 19940928 Description: La présente invention concerne un dispositif de calculs d'opérations modulaires utilisant le procédé de Montgomery pour effectuer une exponentiation modulaire: E impliquant des multiplications au sens de Montgomery notées par le signe * et telles que: A * B = (A x B x R-1),oN o: - A et B sont les opérandes, - R = bP b est la base de numération et P est tel que R soit toujours plus grand que les nombres à traiter, - N est le module, - RK1 est défini à partir d'un nombre N' par la relation: R x R-1 - N x N' = 1. Le procédé de Montgomery dont il est question est décrit dans l'article "Modular Multiplication Without Trial Division" de P.L. Montgomery paru dans la revue MATHEMATICS OF COMPUTATION, Volume 44, N 170 d'avril 1985, aux pages 519 à 521. Un tel dispositif trouve d'importantes applications dans le domaine du chiffrement impliquant le procédé RSA décrit dans le brevet des Etats Unis d'Amérique N' 4 405 829. La présente invention concerne aussi une carte à puce comportant un tel dispositif. Le document de brevet EP 0 577 000 décrit une méthode qui implique les enseignements de Montgomery. Cependant pour étre exploitée, cette méthode nécessite de modifier les applications impliquant le chiffrement RSA qui est communément utilisé. Il faut alors changer des procédures de communications de ces applications. La présente invention propose un dispositif qui utilise des opérations au sens de Montgomery sans qu'il n'y ait à modifier les procédures déjà employées et sans trop employer de ressources supplémentaires, ce qui est primordial lorsque ce dispositif est incorporé dans une carte à puce pour laquelle les ressources sont limitées. Pour cela, un tel dispositif est remarquable en ce qu'il comporte des moyens pour effectuer ladite exponentiation en effectuant: CAON = C*E * RE o CE est une exponentiation au sens de Montgomery. La description suivante faite en regard des dessins ci- annexés, le tout donné à titre d'exemple non limitatif, fera bien comprendre comment l'invention peut être réalisée. La figure 1 montre un dispositif conforme à l'invention. La figure 2 montre une carte à puce contenant un dispositif conforme à l'invention. La figure 3 montre l'occupation en mémoire provoquée par les opérations proposées par l'invention. Le dispositif 1 de la figure 1 est constitué à partir d'un microprocesseur 2, d'une mémoire vive 3 munie d'une entrée pour code d'adresse AD et d'un accès pour l'entrée et la sortie des données DT, d'une mémoire morte 4 contenant notamment les instructions de fonctionnement pour la mise en application de l'invention et également d'une mémoire EEPROM 5 pour contenir différentes données, notamment le module N. Sur cette figure, ces différents éléments sont reliés par une première ligne commune BUS qui fonctionne en mode multiplexé, c'est-à-dire qu'elle transporte en certains moments des données et en d'autres des codes d'adresses. Le dispositif de la figure 1 comporte aussi une première unité de calcul 8 pour effectuer des multiplications avec ou sans cumul. Cette première unité 8 comporte un ensemble de quatre entrées aO, ai, a2 et a3 pour recevoir un opérande de quatre octets contenus dans des registres 10, 11, 12 et 13, une entrée xi reliée à des registres 14 et 15 pour un multiplicande à plusieurs octets, une entrée Ai, reliée à des registres 17 et 18 pour plusieurs octets à additionner et une sortie RO pour fournir le résultat. Différents opérandes proviennent de la mémoire vive 3 en passant par une deuxième ligne commune BUSS. Selon l'entrée à laquelle ces opérandes sont appliqués, on fait appel à des registres pointeurs 21, 22 et 23. Aux registres 21 et 23 sont associés des organes de décrémentation et 26. Le registre 21 est relatif à l'opérande à appliquer à l'entrée Ai, le registre 22, aux opérandes à appliquer aux entrées al, a2, a3 et a4 et le registre 23, à l'opérande à appliquer à l'entrée "xi" Un autre registre pointeur 24 avec son organe de décrémentation associé 28 est relatif à l'emplacement dans la mémoire 3 pour ranger le résultat fourni à la sortie RO. Quatre registres, montés en registre de pipe- line RPL1, sont prévus pour recevoir aussi des octets disponibles à la sortie RO. D'une manière similaire à la mémoire 3, des registres pointeurs 51 et 52 associés avec des organes de décrémentation 55 et 56 sont rattachés à la mémoire 5. Un registre supplémentaire 58 est aussi utilisé pour l'adressage. L'unité de calcul 8 est commandée par un organe de commande CM1 formé de différents registres 60, 62, 64, 66 et 68. Les registres 71, 73, 75, 77 sont directement gérés par l'unité de calcul 8. Le registre 60 est un registre dans lequel sont emmagasinées des commandes pour l'unité 8 et des informations de statuts concernant les opérations effectuées par cette unité. Le registre 62 est utilisé pour la commande de l'unité de calcul 8. Le registre 64 sert à compter le nombre d'octets du résultat fourni à la sortie RO. Le registre 66 commande le début de l'inscription en mémoire 3 des informations disponibles à la sortie RO et offre la possibilité d'inhiber l'écriture dans la mémoire d'un certain nombre d'octets tandis que le registre 68 est prévu pour fixer les limites des opérandes appliqués aux entrées Ai et xi c'est- à-dire leur nombre d'octets. Ce genre de dispositif est celui du composant PHILIPS P83C852. Mais comme les opérations proposées par l'invention s'effectuent au sens de Montgomery, différentes modifications peuvent être apportées. Ainsi, pour effectuer l'opération modulaire au sens de Montgomery, on a prévu une deuxième unité de calcul 100 de même structure que l'unité 8. Les entrées aO, al, a2 et a3 de cette unité sont reliées aux sorties du registre RPL1 de même que l'entrée Ai. L'entrée d'opérande xi est reliée à la ligne commune BUSS par l'intermédiaire de deux registres 102 et 104. Cette unité 100 fournit aussi son résultat vers la ligne commune BUSS, via un deuxième registre RPL2. Un organe de commande CM2, de même structure que l'organe CM1, gère le fonctionnement de cette unité 100. La figure 2 montre une carte à puce 200, son connecteur 300 et le dispositif de l'invention 1, qui apporte plus de puissance dans les calculs modulaires sans trop nécessiter de moyens supplémentaires. Avant d'expliquer plus en détail l'invention, on va faire des rappels sur les opérations de Montgomery en utilisant les conventions suivantes: - la multiplication modulo N est notée "." - la multiplication au sens de Montgomery est notée "*" - La multiplication conventionnelle est notée "x". On va examiner successivement les opérations de multiplication et d'exponentiation au sens de Montgomery. a) La multiplication. Une multiplication au sens de Montgomery consiste à évaluer la quantité: A*B = (AxBxR-1)moN (1) ou: - A et B sont les opérandes, - R = bP b est la base de numération et P est tel que R soit toujours plus grand que les nombres à traiter, - N est le module, - R-1 est défini à partir d'un nombre N' par la relation: RxR-1-NxN/ = 1 (2) L'évaluation de la quantité (1) peut être illustrée par: A*B - AxB +Nxk (3 R on cherche une valeur entière de k qui donne une division juste et dont le résultat de la division est alors le produit de Montgomery recherché. $ Il est à noter qu'il est très facile de savoir si la division tombe juste car, quelle que soit la valeur de R. le numérateur de (3) doit se terminer par zéro. Or ce qu'il est utile d'obtenir, c'est le résultat de la multiplication modulo N. Pour cela, il faut à partir de la quantité (1) retrouver la quantité: A.B= (AxB) modN (4) On effectue, alors l'opération: (A*B) *(R2 modN) = (AxB) ModN =a.b (5) Il convient donc de calculer R2. Ceci peut être fait une fois pour toutes et emmagasiné dans une mémoire, puisque la base de numération ne change pas en principe pour une application donnée. b) L'exponentiation modulaire. Cette opération consiste à évaluer la quantité: X '=X.X.....X 1e (6) e Au sens de Montgomery, on sait effectuer avec tous les avantages de la méthode: X e=X*X*.. *X i 1 | J go (7) e Pour retrouver le résultat de l'exponentiation, on doit effectuer: X.e = Xe * R.e (8) En pratique, le facteur d'exponentiation "e" est grand et fait partie de la clé, dans les procédés de cryptage. L'évaluation de l'équation (8) est faite, selon l'art antérieur, par le calcul préalable de R'. Si on veut appliquer le procédé de Montgomery aux cartes à puce (smart cards), on est confronté au manque de mémoires de ces cartes. Il n'est guère possible d'emmagasiner R'e pour toutes les clés possibles. Selon un aspect de l'invention, l'équation (8) est évaluée de la manière suivante: X.e = (x*R-2) *e*1 (9) Pour la mise en application de ce qui vient d'être décrit ci-dessus, on met en oeuvre les procédures suivantes, écrites dans un langage qui s'adapte à tout langage de programmation. Ces procédures sont adaptées pour utiliser au mieux le multiplieur 32 bits du processeur précité. Ainsi, pour l'estimation de R'2 qui peut être évalué au moyen de la procédure: PROCEDURE R 2 (R) X0 = 2R pour i = 1 jusqu'à i = K Xi = Xi- * Xi-1 RETOUR (Xn) K est fixé par l'ordre tel que X, = R'2 Cette procédure s'adapte parfaitement au cas o le nombre n d'éléments binaires des nombres à traiter est tel que: n = 256, 512, 1024, 2048, etc... n = 256, R2 est obtenu dès le rang 8 car: X8 = 2(2')R = R2 n = 512, R2 est obtenu dès le rang 9 n = 1024, R2 est obtenu dès le rang 10, etc... Certains cas complémentaires correspondant à n = 257, 513... méritent d'être signalés: n = 257, le calcul de R2 doit être interrompu au rang 8 et une opération supplémentaire est exécutée: X = 2(28) R Y = 2.2(2')R = 2257R = R2 ainsi, l'opération supplémentaire consiste à décaler à gauche le résultat et à soustraire le module en cas de débordement, ce qui ne nécessite pas de ressource particulière. n = 513, idem, mais au rang suivant: X = 2 (29) R Y = 2.2(2')R = 2513 = R2 Les cas correspondant à n = 640 ou 768 nécessitent une astuce supplémentaire pour éviter le stockage intermédiaire, donc un débordement de l'espace de travail. Soit M le nombre dont on veut faire une exponentiation. Dans un tel cas, R2.od N n'est pas directement calculé mais plutôt M * R2. Ainsi, pour n = 640, on écrit: 640 = 512 + 128 = 2(2') + 2(2) on calcule Xn jusqu'à l'ordre 7: X = 2 (27)R on effectue: Mo = M X7 = 227M A la fin de cette étape, la mémoire de travail est occupée par: - l'opérande M - l'opérande X7 - le résultat intermédiaire Mo Comme M sera remplacé à terme par M * R2, il suffit de faire, & la fin de cette étape: M - M * et de continuer le calcul de X9. A l'étape 9 on aurait donc Xo = 2 (29) R mais X9 * M0 = 22'R * 2 2M [2(2'7 x 2(277 x M x R xR-1]odu 64o 2 c'est-à- dire: X9 * M0 = 26.M = M.R = M * R pour n = 768 on écrit: 768 = 512 + 256 et l'on mène le calcul comme pour le cas ci-dessus, en commençant par évaluer: X8 = 2(2')R et l'on obtient: M0 = M * Xa = 2(2')M La procédure qui donne N' est la suivante. PROCEDURE MONTGOCOEFFO (N, LENBIT) début K=O; N'=0 tant que K I= N'/2K si (I = O) {N' = N'+Nx2K} // en fait on teste 1 bit K=K+ 1 fin fin RETOUR(N') LENBIT est le nombre de bits significatifs que l'on souhaite obtenir de N'. En pratique, cette précision est limitée par la taille du multiplieur de base de la cellule de calcul (unité 8 ou unité 100). Actuellement, cette précision est limitée à 32 bits (cf.P83C852). On notera que l'opération: N'x2K n'est qu'une simple opération de décalage. La multiplication au sens de Montgomery est: PROCEDURE MULTMONTG(MPC, MPY, N'[0], N) début ACCU = O TEMP = ? pour i = 1 jusqu'à n début ACCU = ACCU + MPC x MPY[i] //........... ...(a) TEMP = LOW (N'[0] x ACCU[O]) //................(b) ACCU = ACCU + TEMP x N //................(c) ACCU = ACCU/10... // 10... est égal à // la longueur du mot // et correspond à un //décalage vers..DTD: // la droite. si ACCU 2 N { ACCU = ACCU - N} fin fin RETOUR (ACCU) Dans cette procédure, la multiplication est effectuée sur la base de mots formés d'un certain nombre d'éléments binaires (32 dans le cas du processeur précité). MPC est le multiplicande, MPY est le multiplicateur, N'[0] est le mot représentant les poids faibles de N', m est le nombre de mots qui composent les opérandes MPC et MPY qui ont en pratique des longueurs comparables. a) Cette écriture condensée sous entend une multiplication suivie d'une accumulation d'une donnée à m mots par le mot courant du multiplicateur MPY. b) Dans le cadre du processeur envisagé, on peut commencer la multiplication dès que le mot le moins significatif de ACCU est formé, ce qu'indique la fonction LOW() pour dire que l'on prend le mot de poids faible. c) Cette opération se déroule donc, dans un cycle de retard, sur celle indiquée par (a) en tenant compte de (b). L'exponentiation au sens de Montgomery est donnée par la procédure suivante: PROCEDURE EXP_MONT(M, E, N) début VAR1 = 1 N'[O] = MONTGO_COEFFO(N,LENBIT) pour i = 1 jusqu'à n début VAR1 = MULTI_MONTG(VAR1, VAR1, N'[O], N) si (E[i] = 1) { VAR1 = MULT_MONTG(VAR1, M, N'[O], N) } fin fin RETOUR(VAR1) Ici, M'E est calculé. Avec ces procédures ainsi définies, on peut obtenir les multiplications modulaires Euclidienne. PROCEDURE MULTIEUCL(MDD, MRR, NN) début NN'[0] = MONTG_COEFFO(NN, LEN_BIT) A = MULTI_MONTG(MDD, MRR, NN'[O], NN) RR= R_2(R) MEUCL = MULTIMONTG(A,RR, NN'[O], NN) fin RETOUR(MEUCL) Dans cette procédure, MDD et MRR sont les opérandes, NN le module, LENBIT est défini ci-dessus. On a de manière particulièrement avantageuse, l'exponentiation modulaire euclidienne. PROCEDURE EXP_EUCL(CC, EE, n) début RR = R_2(R) VAR3 = MULTI_MONTG(CC, RR, NN'[0], n) A = EXP_MONTG(VAR3, EE, n) A = MULTIMONTG(A, 1, NN'[O], n) fin RETOUR(A) Ici, on effectue CC.EE Il est à noter qu'il est aussi possible d'adapter les techniques spéciales de Normalisation- Dénormalisation au cas de Montgomery, comme mentionnées dans la demande de brevet N' EP-O 610 996. Ces opérations ne nécessitent aucune ressource additionnelle. Par exemple, si l'on choisit un nombre Nb sur 32 éléments binaires pour le module, la partie la moins significative sera: 232 - 1, soit en hexadécimal: FF FF FF FF. Ceci est obtenu en multipliant le module N par N'[0] donné par la procédure MONTGO_COEFFO. Le dispositif de la figure 1 est bien adapté & la technique de calcul de Montgomery qui vient d'être décrite. En effet, il rend possible de réaliser presque simultanément les deux opérations suivantes: a) multiplication partielle + accumulation, b) réduction au sens de Montgomery + décalage à droite relativement au module normalisé (du côté des poids faibles). Pour pouvoir enchainer les calcul, le pointeur APR contenu dans le registre 22 est décrémenté de 4 unités. L'unité 100 démarre avec 4 cycles de retard pour permettre le traitement de l'opération de réduction au sens de Montgomery. De ce fait le bit CMD du registre de commande 62 de l'organe CM2 est utilisé pour activer ou non l'unité 100. L'unité 8 conserve l'accès au bus de sortie BUSS lorsque l'unité 100 est désactivée. Ceci sera particulièrement utile pour le processus de Normalisation- Dénormalisation décrit dans la demande de brevet précitée. Dans ce qui suit, on fait des considérations sur l'encombrement mémoire des exponentiations modulaires. Le calcul d'une multiplication modulaire MULTIMONTG nécessitera une mémoire tampon de (3n, + 4) octets, soit 196 octets pour une multiplication impliquant des nombres de 512 éléments binaires. nf = nombre d'octets composant les nombres à traiter. Le calcul de N'[O] nécessite en moyenne 16 additions sur 32 éléments binaires en n'utilisant que le CPU seul. La figure 3 illustre l'occupation mémoire du dispositif. La partie A de cette figure 3 montre que la mémoire est occupée sur nf octets par le message: Msg égal à C au début du calcul de l'exponentiation. La partie B montre que R Mod N est introduite dans la mémoire sur nf octets aussi. On remarquera que: RMdN =N, N étant le complémentaire de N. La partie C montre l!occupation faite par accumulation (Accum) pour le calcul de R2Mod NI soit 2nr + 4 octets. La partie D montre l'occupation faite par accumulation Accum) pour le calcul de Msg * R2Mod N. La partie E montre l'occupation faite par accumulation pour le calcul de l'exponentiation par carré et multiplications successives en utilisant T qui est un tampon provisoire et Accum. La partie F montre le positionnement de la valeur 1 en précision multiple pour obtenir le résultat final. A' = (A * R2)*tE * 1. Comme dans le cas du P83C852 appliqué à la conception du noyau de calcul de la carte à puce, il existe une certaine dualité entre les coefficients de normalisation au sens du 852 et ceux au sens de Montgomery. Il est estimé que pour des environnements à ressources mémoires limitées, tels que la carte à puce, le calcul en temps réel ne consomme que quelques pourcents des performances. Ainsi donc, l'exponentiation modulaire dans une architecture de Montgomery se ramène à la séquence suivante: a) Calcul de R2mod N à l'aide de la seule architecture de Montgomery: * pour n = 512 = 29 moins de 9 multiplications sur 768 en moyenne sont nécessaires * pour n = 1024 = 210 moins de 10 multiplications sur 1536 (= 1024 + 512) en moyenne sont nécessaires. b) - Calcul de l'exponentiation au sens de Montgomery, c) - Multiplication au sens de Montgomery par la constante 1, soit: pour n = 512 bits, moins de 10 multiplications au sens de Montgomery, sur une moyenne de 768, sont nécessaires, ce qui ne dégrade les performances que d'un facteur de 1 % pour le cas de 512 bits. Tableau comparatif: On effectue une comparaison avec le P83C852 cadencé à 6 MHz. A titre indicatif, une amélioration telle que montrée à la figure 1 conduit au tableau suivant: Exponentiation à PC83C852 (figure 1) 512 bits à 6 MHz 6 MHz 32 MHz Classique 1,5 secondes 900 ms 170 ms TRC 470 ms 282 ms 52 m TRC: théorème du reste chinois. Naturellement, tout ceci devrait s'accompagner de certaines améliorations technologiques telles que: - le découplage de la cellule de calcul (ou du co-processeur) vis-à-vis de la RAM, - une fréquence bien étudiée pour l'horloge cadençant le dispositif de calcul, - l'amélioration de la technique EEPROM. Il va de soi que les calculs au sens de Montgomery peuvent être effectués au moyen de n'importe quel processeur muni, de préférence, d'une unité de calcul pour la multiplication. JH: ANNEXE. CONSIDERATIONS THEORIQUES SUR L'INVENTION. En principe, R est la puissance de la base immédiatement supérieure au module N. On suppose par la suite que l'opérateur M3 est celui de la multiplication modulaire au sens de Montgomery. Nous analyserons succinctement les conséquences de l'incorporation de l'opérateur M3 pour la réalisation des opérations pures de multiplication et d'exponentiation modulaire en multiple précision et les conséquences dans le domaine des composants encartables. Si on désigne par Zn l'ensemble des entiers modulo n, et Zn* les éléments de Zn premiers avec n, on sait que l'opération de multiplication modulaire définit une permutation sur Zn*. On peut en fait vérifier qu'il en est de même de l'opérateur M3 et que les deux sont donc isomorphes. Cette dernière remarque a en fait une incidence importante sur la recherche de méthodes de calculs performants sur Zn. D'une manière générale, on considère le diagramme suivant o E et F sont des groupes isomorphes. h E F g g h E F Toutes les propriétés de g se transportent, sous l'action de l'isomorphisme h. et se transmettent ainsi à l'application induite g*. L'isomorphisme h correspond à ce que Montgomery appelle la conversion "Nrésidu" qui, à chaque x, associe xR(modN). En fait, toute ceci nécessite une reformulation correcte en terme algébrique. On considère les groupes algébriques suivants: E = (Zn,.) muni de la multiplication modulaire euclidienne, F = (Zn,*) muni de la multiplication modulaire au sens de Montgomery, c'est-à-dire: a*b = (a x b x R-'l).od N On définit h de la manière suivante: h(x) + x*R 2 On peut aisément vérifier que h est bien un isomorphisme du groupe E dans le groupe F dont l'élément neutre n'est autre que h(1) = R. PROPRIETES FONDAMENTALES. (a): 1*1 R-1 (b): 2nR * 2mR = 2n*.R (c) xn = (x * R 2)*n * 1 et x" = xI, * R" (d): (R.2)*e= R (e'l) APPLICATIONS. Calcul de R2?. à l'aide d'un multiplieur de Montgomery: Il suffit d'appliquer la formule (b) à la donnée initiale X0 définie par: X0 = 2.R et Xi = Xi1 * Xi1 jusqu'à l'ordre n tel que Xn = R. Si R = 2", l'algorithme ne nécessite que n étapes successives (7 à 9 étapes pour 512 bits). Calcul de l'exponentielle modulaire pure à l'aide d'un multiplieur de Montgomery. La commutativité du diagramme précédent appliqué à la fonction g(x) = x'mod N, montre deux méthodes d'évaluation complétant (c): h o g(x) = g*o h(x) soit: x mod N*R2 = (x * R 2)* En multipliant par 1, on obtient: x = (x*R 2) e*l (A-10) En appliquant (d): x'e = x*'*(R 2)*e*l = x*e*R'(e'l)*l soit: x' = x*e*Re (A-11) Remarques: La forme (A-10) est plus adaptée aux environnements ayant des ressources mémoires limitées, le calcul en temps réel ne consommera que 1 % de performances, mais possède le mérite de n'utiliser que les moyens de calculs induits par la méthode de Montgomery. C'est le cas de la carte à puce, ou souvent, plusieurs clés coexistent en mémoire EEPROM. En pratique, on exige quatre à cinq clés. La forme (A-11), plus performante, est plutôt réservée aux implémentations sur les serveurs et nécessitera la présence de la constante précalculée Re. Tests de primalité à l'aide d'une architecture de Montgomery. La commutativité du diagramme permet de ramener tous les problèmes de recherche de nombres premiers d'un groupe algébrique à un autre en transportant les équations de FERMAT par l'isomorphisme h. Ainsi: XP- I = 1 se traduit, dans une architecture de Montgomery, par: X*(p- 1) = R. REVENDICATIONS. 1- Dispositif de calculs d'opérations modulaires utilisant le procédé de Montgomery pour effectuer une exponentiation modulaire: C-d' comportant des moyens de multiplications au sens de Montgomery pour exécuter l'opération suivante: A * B = (A x B x R-')odI o: - * est le signe de la multiplication au sens de Montgomery, - A et B sont les opérandes, - R = b? b est la base de numération et P est tel que R soit toujours plus grand que les nombres à traiter, - N est le module, - R- est défini à partir d'un nombre N' par la relation: (R x R-1 - N x N')od = 1. caractérisé en ce qu'il comporte des premiers moyens pour partager ladite exponentiation en deux quantités P1 et P2 et en ce que les opérandes pour les moyens de la multiplication au sens de Mongomery sont P1 et P2: C^= Pi*?2 2- Dispositif de calculs d'opérations modulaires selon la revendication 1. caractérisé en ce qu'il comporte des deuxièmes moyens pour élaborer la première quantité P1 en agissant sur les moyens de multiplications au sens de Montgomery pour obtenir: Pl = C'e et des troisièmes moyens pour effectuer l'opération suivante pour obtenir P2: P2 = Re 3- Dispositif de calculs d'opérations modulaires selon la revendication 1, caractérisé en ce qu'il comporte des quatrièmes moyens pour élaborer la première quantité P1 en agissant sur les moyens de multiplications au sens de Montgomery pour obtenir Pl = (C* R2)' et en ce que ?2 est choisi tel que: P2 = i 4- Dispositif de calculs d'opérations modulaires selon la revendication 1 ou 3, caractérisé en ce que pour calculer R2, il comporte des cinquièmes moyens pour effectuer: - le calcul de bRxod x à identifier à Xo - et K fois le calcul à partir de X0 = R2: Xi = Xj-. * Xiil. - Carte à puce comportant un dispositif de calcul d'opérations modulaires selon l'une des revendications 1 à 4 et un connecteur rattaché au dispositif de calcul.