Brevet FR2818765A1 — publié le 20020628

La présente invention concerne une structure d'opération par multiplicateur modulaire, en particulier, un multiplicateur modulaire réalisé par l'algorithme d'opération de Montgomery à base élevée. En raison des exigences de transfert de données dans la gestion des réseaux et la numérisation, la cryptographie pour le mécanisme de sécurité des données a stimulé les efforts dans ce but. Le principe de base de la cryptographie est qu'un texte en clair est converti en un texte chiffré par un cryptage et une clé de cryptage choisis par un utilisateur. Lorsqu'un destinataire reçoit le texte chiffré, un décryptage par rapport au cryptage et une clé de décryptage correspondante de la clé de cryptage peuvent retrouver le texte en clair. Puisque les données transférées ou stockées se trouvent dans le texte chiffré, la sécurité des données est obtenue puisqu'un pirate n'a pas la clé de décryptage pour obtenir les données transférées. La sécurité des cryptosystèmes repose sur le potentiel de découverte des clés. La sécurité du cryptosystème est indiquée par le potentiel de découverte des clés à partir des données existantes. Un cryptosystème usuel est divisé en deux types, un cryptosystème à clés privées et un cryptosystème à clés publiques. Dans le cryptosystème à clés privées, les clés de cryptage et de décryptage sont les mêmes, par exemple, le système le plus largement utilisé est le système DES. Les mêmes clés de cryptage et de décryptage signifient que les clés doivent être stockées dans un chemin de transmission absolument sûr pour garantir la sécurité de transfert. C'est l'inconvénient principal du cryptosystème à clés privées. Il n'y a pas un tel problème dans le cryptosystème à clés publiques. Dans le cryptosystème à clés publiques, les clés de cryptage et de décryptage sont différentes. Dans une paire de clés de cryptage et de décryptage, la clé de cryptage est une clé publique. Lorsque le texte en clair est crypté par une clé de cryptage en texte chiffré, seule la clé de décryptage correspondante de la clé de cryptage peut le retrouver. De même, un tel système, par exemple, Rivest, Shamir, Adleman (RSA), doit offrir la garantie que le décryptage correspondant ne peut pas ou peut être difficilement découvert sans le communiquer. En conséquence, le cryptosystème à clés pubiques tend de plus en plus à orienter la tendance mondiale vers le cryptosystème, car, en plus de ne pas présenter le problème de gestion et de transfert de clés, la clé de décryptage dans le cryptosystème à clés publiques offre la fonction de certification d'une signature numérique. Le cryptosystème RSA utilise l'opération d'exponentiation modulaire pour générer la fonction de cryptage/décryptage. Le cryptage/décryptage est exprimé de la manière suivante : C=ME (mod N) (1) M=CD (mod N) (2) où N=PQ et ED 1 mod(P-1) (Q-1), M est le texte en clair ; C est le texte chiffré ; est la clé de cryptage ; D est la clé de décryptage. N est le produit de deux nombres premiers P et Q. L'équation (1) représente l'action de cryptage. L'opération de multiplication modulaire (E, N) est utilisée pour convertir le texte en clair M en texte chiffré C. L'équation (2) représente l'action de décryptage. L'opération de multiplication modulaire (D, N) est utilisée pour retrouver le texte en clair M à partir du texte chiffré C. Dans le cryptosystème RSA, l'opération d'exponentiation modulaire est complexe et prend beaucoup de temps en calcul. Par suite, le multiplicateur modulaire est couramment utilisé pour réaliser l'opération d'exponentiation modulaire, en particulier, en utilisant l'algorithme de Montgomery. Par exemple, l'algorithme de Montgomery est utilisé dans l'opération de base de AB(mod N) comme l'algorithme 1 suivant : R0=0 ; Pour i=0 à n-1 écrire qi=Ri+aiB(mod 2) (3) Ri+1= (Ri+aiB+qiN)/2 (4) fin où A=an~12w1+an~22w2+......+ap;B=bn~12w1+bn~22n~ 2+......+b0; et ai,bi,qE {0, 1}. L'algorithme précédent exécute une boucle n-fois avec un additionneur à n-bits et un multiplicateur 1xn. Le résultat obtenu pour chaque boucle est respectivement multiplié par 20, 21 , 22,......, 2n-1, puis le total sommé. Le total final sommé est exprimé de la manière suivante : 2nRn = AB (mod N) (5) Suivant l'équation (5), Rn est exprimé de la manière suivante : Rn = 2-nAB (mod N) (6) Par conséquent, l'opération d'exponentiation modulaire de l'équation (1) ou (2) est exécutée par l'algorithme de Montgomery suivant la pré-opération, l'opération d'exponentiation et la post-opération suivantes : MGM (M, 22n) = 2nM (mod N) (7) MGM (2nMa, 2nMb) = 2nMa+b (mod N) (8) MGM (2nME, 1) = ME (mod N) (9) où MGM (#, #) représente l'opérande Rn obtenu par l'algorithme de Montgomery, c'est-à-dire, le résultat de l'équation (6) Rn = 2-nAB (mod N). Puisque le besoin d'exécuter une boucle n-fois dans l'algorithme 1 prend du temps dans le calcul, la zone de puce dans l'algorithme de Montgomery à base élevée (2k) est adoptée pour augmenter efficacement la vitesse de l'opération. L'algorithme de Montgomery à base élevée réduit la multiplication modulaire de un à n/k en divisant l'opérande A en [n/k] groupes, chaque groupe ayant k bits, lors du décodage ou du codage de données, permettant d'obtenir, de ce fait, une augmentation de la vitesse. L'algorithme est exprimé de la manière suivante : Ro=o ; Pour i=0 à [n/k] -1 écrire qi= (Ri+aiB) *N1(mod 2k) (10) Ri+1= (Ri+aiB+qiN)/2k (11) fin où N1 est satisfait avec N*N1----1(mod 2k), A=a In/k11 (2k) 1 1+a~2(2k)r-2+....+ap; et ai, qiE {0, 1, 2,...., 2k-1}, pour k >0. Bien que la boucle dans l'algorithme 2 soit réduite, une autre réduction pour la boucle est soumise à l'algorithme 3, qui décale l'opérande B de k bits et change le paramètre N en N2, de manière à éliminer les opérations d'addition et de multiplication dans l'équation (10). L'expression est : R0=0 ; Pour i=0 à [n/k] écrire qi= Ri (mod 2k) (12) Ri+1= (Ri+qi*N2)/2k + aiB (13) fin où N2 = mN # -1 (mod 2k). De même, le résultat pour chaque boucle est multiplié, respectivement, par 20, 21, 22,......, 2n-1, puis le total sommé. Le total final est exprimé de la manière suivante : 2n+kR[n/k]+1 A*2k*B+Q*N2 (14) En conséquence, la relation dérivée de l'équation (5) est satisfaite par suite de R(n/k)+1' à savoir : 2nR[n/k]+1 AB (mod N) (15) Le meilleur avantage dans l'algorithme 3 est la même structure d'opération que mentionnée précédemment, c'est-àdire qu'une addition et une multiplication ne sont exécutées que pour l'opérande Ri+1dans l'équation (13). Supposons que X= Ri + qi*N2 (16) Puis l'équation (13) est modifiée comme l'équation suivante : Ri+1=X/2k+ ai*B (17) Si Y=X/2k, l'équation (17) est modifiée comme l'équation suivante : Ri+1=Y+ai*B (18) Les équations (17) et (18) sont respectivement exécutées ; les opérations d'addition et de multiplication et les opérandes correspondants ont le même nombre de bits. Par conséquent, un même chemin de données est utilisé dans l'opération de calcul à différents points du temps, économisant, de ce fait, la zone exigée pour une puce. Cependant, l'algorithme de Montgomery 3 a également le problème de calcul complexe lorsque la zone exigée pour la multiplication est grande. Dans les équations (16) et (18), un multiplicateur kxn est utilisé. Si les valeurs n et k sont grandes, par exemple, k=32 et n=1024, la zone de puce devient, par conséquent, très grande. Pour une puce avec l'exigence stricte de petite taille, par exemple, une Carte à Mémoire, cela influencera son opération et son application. Quant à ce point, l'invention fournit une solution en améliorant l'algorithme de Montgomery à base élevée pour réduire la zone de puce et augmenter la vitesse rapide de l'opération. En conséquence, l'objet de l'invention est de fournir un multiplicateur modulaire et un processeur de cryptage/décryptage utilisant le multiplicateur modulaire, capable de réduire la zone de puce et de parvenir à l'objectif d'opération rapide. Pour réaliser l'objet précédent et d'autres objets, l'invention fournit un multiplicateur modulaire, capable de traiter un premier opérande et un second opérande en rapport avec un module pour exécuter l'opération de multiplication modulaire. L'opération exécutée inclut une instruction, qui a une opération d'addition et de multiplication interne avec récurrence intérieure et une opération d'addition et de multiplication externe. Le multiplicateur modulaire inclut un premier dispositif tampon pour stocker le premier opérande, le premier opérande est divisé en une première pluralité de sous-opérandes de longueur fixe ; un deuxième dispositif tampon pour stocker le second opérande, le second opérande est divisé en une seconde pluralité de sous-opérandes de longueur fixe ; un troisième dispositif tampon pour stocker le paramètre de l'opération de multiplication modulaire ; un dispositif multiplexeur, couplé au premier, au deuxième et au troisième dispositifs tampon, pour choisir un premier opérande de multiplication et un second opérande de multiplication à partir du premier sous-opérande, du second sous-opérande, et du paramètre, dans l'ordre, suivant les opérations d'addition/multiplication internes et externes exigées ; un dispositif de multiplication, couplé au dispositif multiplexeur, pour multiplier le premier opérande de multiplication par le second opérande de multiplication pour obtenir un produit ; un dispositif d'addition, couplé au dispositif de multiplication, pour produire un résultat intermédiaire suivant le produit pendant l'opération d'addition et de multiplication interne et produire le résultat de l'opération de multiplication modulaire suivant le produit et le résultat intermédiaire pendant l'opération d'addition et de multiplication externe. Le multiplicateur modulaire peut être un processeur de cryptage ou de décryptage, par exemple, le processus de cryptage RSA. Le processeur de cryptage ou de décryptage exécute l'opération d'exponentiation modulaire dans la fonction de cryptage/décryptage suivant la clé de cryptage/décryptage, réalisant, de ce fait, le multiplicateur modulaire. Le processeur de cryptage/décryptage peut être appliquée à, tel qu'une Carte à Mémoire, en particulier, à un multiplicateur modulaire ayant les besoins d'exiger une petite zone de puce et une vitesse de fonctionnement supérieure. La figure 1 est un schéma fonctionnel illustrant un multiplicateur modulaire d'un mode de réalisation de l'invention ; La figure 2 est un schéma de principe illustrant un additionneur qui doit fonctionner dans la première sous-boucle suivant le mode de réalisation de l'invention ; La figure 3 est un schéma de principe illustrant un additionneur qui doit fonctionner dans la seconde sous-boucle suivant le mode de réalisation de l'invention ; La figure 4 est un schéma fonctionnel illustrant un processeur de cryptage/décryptage RSA réalisé par le multiplicateur modulaire de la figure 1 ; La figure 5 est un schéma de principe illustrant l'application de la figure 4 dans une Carte à Mémoire suivant le mode de réalisation de l'invention. La présente invention fournit une solution pour réduire la zone de puce dans l'art antérieur. C'est-à-dire que, dans l'art antérieur, l'algorithme 3 exige une zone de puce très grande pour mettre en oeuvre un multiplicateur kxn. Le mode de réalisation suivant décrit l'algorithme inventif, d'abord, et la structure du multiplicateur modulaire en relation avec l'algorithme, ensuite. De manière à réduire la zone de puce exigée, la portion à nbits (c'est-à-dire, l'opérande N2 dans l'équation (16) et l'opérande B dans l'équation (18)) dans l'algorithme 3 est groupée en [n/k] groupes, chaque groupe ayant k bits. C'est- à-d i re, R0=0 ; Pour i=O à [n/k] écrire qi=Ri (mod 2k) (19) Pour j=0 à [n/k]-1 écrire (R+1 )j=((R)j +qfN2)j)/2k+ajBj (20) fin fin où qi*(N2)j et aiBj sont, respectivement, l'opération de multiplication kxk. Dans l'algorithme 4, bien que la boucle j exige des opérations de cumul et de report supplémentaires, la zone de puce est réduite de toute évidence de kxn à kxk. L'algorithme 4 est de plus contenu dans l'algorithme 5 suivant Ro=O ; Pour i=0 à [n/k] écrire qi=Ri mod 2k (21) W=qi* (N2)0 (22) C-1=(Ri)0 + W[(k-1):0] (23) V=0 (24) Pour j=O à [n/k]-1 écrire Z=W (25) W=qi* (N2)j+1 (26) U=ai*Bj (27) {Cj, (Ri+1 )j=(Ri)j+1 +W[(k-1 )O]+Z[2k-1]:k]+U[(k-1 )O]+V[(2k- 1):k]+Cj-1 (28) V=U(29) fin fin où W, Z, U, V sont des tampons intermédiaires, C-1, Cj sont des bits de report, et {Cj, (Ri+1)j} est le total de l'addition de k-bits. De plus, (Rj)o + W[(k-1):0] peut devenir zéro (c'est-àdire, C-1 =0), si qi, N2 sont choisis de manière appropriée. Dans l'algorithme 5, deux multiplicateurs kxk sont utilisés pour calculer respectivement l'opérande W dans l'équation (26) et l'opérande U dans l'équation (27). En fait, l'algorithme 5 peut en outre utiliser deux opérations de sous-boucle dans la boucle j, comme l'algorithme 6 suivant. RO=O ; Pour i=0 à [n/k] écrire qi=Ri (mod 2k) (30) Pour j=O à [n/k]-1 écrire Yj= ((Ri)j + qi*(N2)j)/2k (31) fin Pour j=O à [n/k]-1 écrire (Ri+1)j=Yj+ai*Bj (32) fin fin De même, l'algorithme 6 est en outre contenu dans l'algorithme 7 suivant : R0=0 ; Pour i=O à [n/k] écrire qi=Ri mod 2k (33) W=qi* (N2)0 (34) C-1 = (Ri)0 + W[(k-1):0] (35) Pour j=O à [n/k]-1 écrire Z=W (36) W=qi* (N2)j+1 (37) {Cj, Yj}= (Ri)j+1+W[(k-1)Ol+Z[2k-1]:k]+Cj~1 (38) C-1=0 (39) Z=0 (40) fin Pour j=0 à [n/k]-1 écrire W=ai*Bj (41) fCj(Ri+1 )j)=Yj+W[(k-1 )0]+Z[2k-1]:k]+Cj~1 (42) Z=W (43) fin fin Dans les algorithmes 6 et 7, la boucle j dans l'algorithme 5 est divisée en deux sous-boucles. Cette manière peut réduire l'exigence de deux multiplicateurs kxk à un seul multiplicateur kxk, rétrécissant, de ce fait, la zone de puce exigée. En outre, les performances sont même plus rapides. Par exemple, lorsque n=1024, k=32, et une exigence d'impulsion d'horloge à une multiplication 32x32 est supposée, l'exécution de la première sous-boucle j dans l'équation (31) exige (1024/32)=32 impulsions d'horloge et les mêmes impulsions d'horloge que lors de l'exécution de la seconde sous-boucle j dans l'équation (32). L'ensemble de l'opération de multiplication (c'est-à-dire, la boucle i) prend (1024/32+1 )x(32+32)=2112 impulsions d'horloge. Si l'algorithme H est utilisé dans l'opération d'exponentiation modulaire de codage ou de décodage RSA à 1024 bits, l'ensemble du circuit prend environ 2x2112x1024 impulsions d'horloge (environ 4M impulsions d'horloge), c'est-à-dire, 4n2(n+1)/k2, en termes de paramètres n et k. Ainsi, les objectifs d'une zone de puce plus petite et d'une opération plus rapide sont atteints en même temps. La figure 1 est un schéma fonctionnel illustrant un multiplicateur modulaire de l'équation 6 ou 7. La structure du multiplicateur modulaire dans la figure 1 est mettre en oeuvre suivant l'algorithme 7, y compris les tampons 101,102, 103, 104,105 ; les multiplexeurs 201,202 ; le multiplicateur 203 ; l'unité de commande 204 ; les bascules bistables 301,302, 303,305, 306 ; et l'additionneur 304. Chaque élément est décrit comme ci-dessous. Le tampon 101 est utilisé pour stocker le résultat de l'algorithme de Montgomery (Ri+1)j ou l'opérande intermédiaire Yj dans la première sous-boucle. Les tampons 102 à 105 sont utilisés pour stocker, respectivement, les opérandes A, N2, B, qi des deux équations de multiplication (équations (37) et (41)) dans l'algorithme 7, dans lequel les opérandes A, N2, B sont une constante, ai est une portion de bits de l'opérande A dans la iième boucle, (N2)j et Bj sont une portion de bits d'opérandes N2 et B dans la jième boucle. Suivant l'équation (33), qi stocké dans le tampon 105 est le reste de Ri/2k, c'est-à-dire, du bit (k-1) au bit 0 dans Ri. Par suite, les bits k inférieurs de Ri stockés dans le tampon 101 sont extraits pour avoir l'opérande qi dans le tampon 105. Les multiplexeurs 201 et 202 sont utilisés pour commuter les opérandes exigés dans l'opération de multiplication de différentes boucles. Par exemple, une opération de multiplication est exigée pour qi et (N2)j dans l'équation (37) de la première sous-boucle, tandis qu'une opération de multiplication est exigée pour ai et Bj dans l'équation (41) de la seconde sous-boucle. Les multiplexeurs 201 et 202 sont commutés par le signal de commande CTRL de l'unité de commande 204. Une opération de multiplication est exécutée par le multiplicateur kxk 203 avec les sorties de 201 et 202 pour créer le produit stocké dans le tampon W avec la longueur 2k. Des bascules bistables 301-303 sont utilisées pour stocker le résultat du multiplicateur et fournir le résultat à l'additionneur 304 pour exécuter l'opération d'addition dans les équations (38) et (42). Le tampon W avec la longueur 2k est divisé en deux données de longueur k, dans lesquelles les données en bits de poids faible W[k-1):0] sont fournies à la bascule bistable 302, les données en bits de poids fort W[(2k-1):k] sont fournies à la bascule bistable 301. La bascule bistable 303 stocke les bits de poids fort Z[(2k-1):k] du résultat de la multiplication précédente. La bascule bistable 305 stocke le bit de report Cj-1 du résultat de l'addition précédente. L'additionneur 304 exécute l'opération d'addition dans l'équation (38) de la première sous-boucle ou dans l'équation (42) de la seconde sous-boucle. La différence entre les équations (38) et (42) pour l'opération d'addition est l'opérande, en utilisant (Ri)j+1ou Yj. Lors de l'exécution de la première boucle, la bascule bistable 306 stocke l'opérande Yj, tandis que lors de l'exécution de la seconde boucle, la bascule bistable 306 stocke l'opérande (Ri)j+1, et les deux opérandes Yj et (Ri)j+1 sont stockés momentanément dans le tampon 101. L'opération du multiplicateur modulaire représenté à la figure 1 est décrite en détail ci-dessous. Suivant l'algorithme 7, la première instruction pour chaque boucle i commence avec le calcul du reste de Rj/2, c'est-àdire, en prenant les bits k de poids faible de l'opérande Ri dans le tampon 101 dans le tampon 105. L'opération commence à la première sous-boucle, qui calcule Yj avec les paramètres qi, (N2)j, et (Rj)j. Tout d'abord, dans la 1 ère sous-boucle, le paramètre qi dans la iième boucle est inchangé et provient du tampon 105 pour le calcul. Le tampon 103 fournit le paramètre (N2)j correspondant, en fonction de la valeur j. Les bits k de poids fort W[(2k-1 ):k] et les bits k de poids faible W[k-1 ):0] du produit pour chaque opération de multiplication dans le multiplicateur 203 sont introduits, respectivement, dans les bascules bistables 301 et 302. L'introduction des bits k de poids fort dans la bascule bistable 301 est exécutée par un retard d'horloge. Par conséquent, le résultat obtenu est compté dans Yj+1 pour le calcul de l'addition. La valeur Yj est calculée par l'additionneur 304 pour ajouter avec les bits j de poids faible W[(k-1):0], les bits k de poids fort Z[(2k-1 ):k] (stockés dans la bascule bistable 303) du produit précédent, (Ri)j+1 (stockée dans le tampon 101), et le bit de dépassement de capacité Cj-1 de l'opération d'addition précédente (stockée dans la bascule bistable 305). Le résultat calculé par l'additionneur 304 est stocké dans le tampon 101 à l'impulsion d'horloge suivante. La figure 2 est un schéma de principe illustrant un additionneur à utiliser dans la première sous-boucle suivant le mode de réalisation de l'invention. Supposons que k=32 et n=1024, la première colonne représentant le calcul de l'équation (35). Lorsque j=0, l'additionneur 304 ajoute Ri[63:32], (qi(N2)1)[31:0], (qi(N2)0) [63: 32], et le bit de report Cj-1 et obtient Y[31:0]. Lorsque j=1, l'additionneur 304 ajoute Ri[95:64], (qi(N2)2)[31:0], (qi(N2)1) [63: 32], et le bit de report Co et obtient Y [63:32]. opérations restantes pour j=2 à 31 sont toutes similaires. C'est-à-dire que lorsque j=31, Y [1023:992] est trouvé, et Y [1023:0] obtenu. Ainsi, la seconde sous-boucle commence séquentiellement au calcul de (Ri+1)j avec les paramètres ai, Bj, Yj. De même, le paramètre ai dans la iième boucle est inchangé et provient du tampon 102 pour le calcul. Le tampon 104 fournit le paramètre Bj correspondant en fonction de la valeur j. Les bits k de poids fort W[(2k-1):k] et les bits k de poids faible W[(k-1):0] du produit pour chaque opération de multiplication dans le multiplicateur 203 sont introduits, respectivement, dans les bascules bistables 301 et 302. L'introduction des bits K de poids fort dans la bascule bistable 301 est exécutée par un retard d'horloge. Par conséquent, le résultat obtenu est compté dans (Ri+1 )j+1 pour le calcul d'addition. La valeur (Ri+1)j est calculée par l'additionneur 304 pour ajouter les bits k de poids faible W[(k-1 ):0], les bits k de poids fort Z[(2k- 1):k](stockés dans la bascule bistable 303) du produit précédent, Yj(stocké dans le tampon 101), et le bit de report Cj-1 de l'opération d'addition précédente (stocké dans la bascule bistable 305). Le résultat calculé par l'additionneur 304 est stocké dans le tampon 101 à l'impulsion d'horloge suivante. La figure 3 est un schéma de principe illustrant un additionneur à utiliser dans la seconde sous-boucle suivant le mode de réalisation de l'invention, en référence à la figure 2. Lorsque j=0, l'additionneur 304 ajoute Y[31:0], (aiB1)[31:0] et (aiB0)[63:32], et obtient Ri+1 [63:32]. Les opérations restantes pour j=1 à 31 sont toutes similaires. C'est-à-dire que lorsque j=31, Ri+1 [1023:992] est trouvé, et Ri+1 [1023:0] est obtenu. Ainsi, le calcul de Ri pour chaque i est répété et le résultat final de l'algorithme de Montgomery est trouvé, lequel est la multiplication modulaire de 2-nAB(mod N). Il est à noter que le contenu intermédiaire de bascules bistables correspondantes entre la première et la seconde sous-boucles est effacé, de manière à utiliser le même chemin de données pour calculer différentes équations. L'unité de commande 204 est utilisée pour commander l'ensemble de l'opération par un signal de commande CTRL. Le calcul exigé pour le résultat final de l'équation 6 ou 7 est exécuté en décalant régulièrement différents opérandes de multiplication dans le multiplicateur. L'avantage de l'invention est que le multiplicateur modulaire inventif peut sauvegarder la zone de puce et exécuter rapidement l'opération parallèlement. La figure 4 est un schéma fonctionnel illustrant un processeur de cryptage/décryptage RSA réalisé par le multiplicateur modulaire de la figure 1. Tel que représenté à la figure 4, le processeur de cryptage/décryptage RSA inclut un noyau de cryptage/décryptage 12 et un noyau de multiplicateur modulaire 14. Le noyau du multiplicateur modulaire 14 peut être réalisé par, par exemple, la structure de la figure 1. Le résultat de la multiplication modulaire est calculé avec les opérandes A et B. Le noyau de cryptage/décryptage 12 exécute l'opération d'exponentiation modulaire exigée pour crypter un texte en clair en un texte chiffré ou décrypter le texte chiffré en texte en clair en utilisant les étapes de préopération de l'équation (7), l'opération d'exponentiation de l'équation (8) et la post-opération de l'équation (9). La figure 5 est un schéma de principe illustrant la structure de cryptage/décryptage appliquée à une Carte à Mémoire suivant le mode de réalisation de l'invention. Du fait des limites appliquées au standard de la Carte à Mémoire et de sa fonctionnalité de report, la zone de puce stricte est un avantage supplémentaire. Tel que représenté à la figure 5, la Carte à Mémoire 20 échange les données externes par l'intermédiaire d'une interface de communication 22. Avant le transfert de données, les données sont cryptées par le processeur de cryptage/décryptage 24 par l'intermédiaire de la mémoire interne 26 de la Carte à Mémoire 20 pour assurer la sécurité des données. En raison de l'exigence d'achèvement du calcul exigé dès que possible en utilisant le processeur de cryptage/décryptage 24 avec une zone plus petite dans une puce, la structure du multiplicateur de l'invention est le meilleur choix pour atteindre l'objectif. Bien que la présente invention ait été décrite dans son mode de réalisation préféré, il n'est pas prévu de limiter l'invention au mode de réalisation précis décrit dans le présent document. L'homme du métier dans cette technologie peut toujours apporter différents changements et modifications sans sortir du cadre et de l'esprit de cette invention. Par conséquent, le cadre de la présente invention sera défini et protégé par les revendications suivantes et leurs équivalents. REVENDICATIONS 1. Multiplicateur modulaire, capable de traiter un premier opérande et un second opérande en rapport avec un module pour exécuter une opération de multiplication modulaire, l'opération exécutée incluant une instruction, qui a une opération d'addition et de multiplication interne avec récurrence intérieure et une opération d'addition et de multiplication externe, le multiplicateur modulaire comprenant un premier dispositif tampon pour stocker le premier opérande, dans lequel le premier opérande est divisé en une première pluralité de sous-opérandes de longueur fixe ; un deuxième dispositif tampon pour stocker le second opérande, dans lequel le second opérande est divisé en une seconde pluralité de sous-opérandes de longueur fixe ; un troisième dispositif tampon pour stocker le paramètre de l'opération de multiplication modulaire ; un dispositif multiplexeur couplé au premier, au deuxième et au troisième dispositifs tampon, pour choisir un premier opérande de multiplication et un second opérande de multiplication à partir du premier sous-opérande, du second sous-opérande, et du paramètre, suivant les opérations d'addition/multiplication internes et externes exigées ; un dispositif de multiplication couplé au dispositif multiplexeur, pour multiplier le premier opérande de multiplication par le second opérande de multiplication pour obtenir un produit ; et un dispositif d'addition couplé au dispositif de multiplication, pour produire un résultat intermédiaire suivant le produit pendant l'opération d'addition et de multiplication interne et pour produire le résultat de l'opération de multiplication modulaire suivant le produit et le résultat intermédiaire pendant l'opération d'addition et de multiplication externe. 2. Multiplicateur modulaire de la revendication 1 , dans lequel le dispositif d'addition comprend, de plus : un premier composant à retard couplé au dispositif de multiplication, pour recevoir la moitié du produit à la portions de bits de poids faible ; un second composant à retard couplé au dispositif de multiplication, pour recevoir la moitié du produit à la portion de bits de poids fort, dans lequel le second composant à retard a une horloge de multiplication de plus que le premier composant à retard ; et un additionneur couplé au premier composant à retard et au second composant à retard, pour recevoir des valeurs intermédiaires du premier et du second composants à retard pour exécuter l'opération d'addition. 3. Multiplicateur modulaire de la revendication 1, comprenant, de plus, un processeur de cryptage pour crypter un texte en clair en utilisant une clé de cryptage suivant une opération d'exponentiation modulaire, dans lequel l'opération d'exponentiation modulaire est exécutée par le multiplicateur modulaire. 4. Multiplicateur modulaire de la revendication 3, comprenant, de plus, un processeur de décryptage pour décrypter un texte chiffré en utilisant une clé de décryptage suivant l'opération d'exponentiation modulaire, dans lequel l'opération d'exponentiation modulaire est exécutée par le multiplicateur modulaire. 5. Multiplicateur modulaire de la revendication 1, comprenant, de plus, une carte à mémoire ayant un processeur de cryptage/décryptage pour crypter/décrypter des données internes, dans lequel le processeur de cryptage/décryptage exécute le cryptage/décryptage en utilisant une clé de cryptage/décryptage suivant une opération d'exponentiation modulaire, et dans lequel l'opération d'exponentiation modulaire est exécutée par le multiplicateur. 6. Multiplicateur modulaire, capable de traiter un premier opérande et un second opérande en rapport avec un module pour exécuter une opération de multiplication modulaire, l'opération exécutée incluant une boucle externe et une boucle interne, la boucle interne ayant une instruction, qui a une opération d'addition et de multiplication interne avec récurrence intérieure et une opération d'addition et de multiplication externe, le multiplicateur modulaire comprenant un premier dispositif tampon pour stocker le premier opérande, dans lequel le premier opérande est divisé en une première pluralité de sous-opérandes de longueur fixe, chaque sous-opérande par rapport à la boucle externe ; un deuxième dispositif tampon pour stocker le second opérande, dans lequel le second opérande est divisé en une seconde pluralité de sous-opérandes de longueur fixe, chaque sous-opérande par rapport à la boucle interne ; un troisième dispositif tampon pour stocker un premier et un second paramètres de l'opération de multiplication modulaire ; un dispositif multiplexeur couplé au premier, au deuxième et au troisième dispositifs tampon, pour choisir un premier opérande de multiplication et un second opérande de multiplication, qui sont sélectionnés à partir de l'un des deux groupes, le premier sous-opérande et le paramètre, et le second sous-opérande et le paramètre, suivant les opérations d'addition/multiplication internes et externes exigées ; un dispositif de multiplication couplé au dispositif multiplexeur, pour multiplier le premier opérande de multiplication par le second opérande de multiplication pour obtenir un produit ; un dispositif d'addition couplé au dispositif de multiplication, pour produire un résultat intermédiaire suivant le produit pendant l'opération d'addition et de multiplication interne et pour produire le résultat de l'opération de multiplication modulaire suivant le produit et le résultat intermédiaire pendant l'opération d'addition et de multiplication externe ; et un régisseur pour produire un signal de commande pour commander le multiplexeur. 7. Multiplicateur modulaire de la revendication 6, dans lequel le dispositif d'addition comprend, de plus : un premier composant à retard couplé au dispositif de multiplication, pour recevoir la moitié du produit à la portion de bits de poids faible ; un second composant à retard couplé au dispositif de multiplication, pour recevoir la moitié du produit à la portion de bits de poids fort, dans lequel le second composant à retard a une horloge de multiplication de plus que le premier composant à retard ; un additionneur couplé au premier composant à retard et au second composant à retard, pour recevoir des valeurs intermédiaires du premier et du second composants à retard pour exécuter l'opération d'addition. 8. Multiplicateur modulaire de la revendication 6, comprenant, de plus, un processeur de cryptage pour crypter un texte en clair en utilisant une clé de cryptage suivant une opération d'exponentiation modulaire, dans lequel l'opération d'exponentiation modulaire est exécutée par le multiplicateur modulaire. 9. Multiplicateur modulaire de la revendication 8, comprenant, de plus, un processeur de décryptage pour décrypter un texte chiffré en utilisant une clé de décryptage suivant l'opération d'exponentiation modulaire, dans lequel l'opération d'exponentiation modulaire est exécutée par le multiplicateur modulaire. 10. Multiplicateur modulaire de la revendication 6, comprenant, de plus, une carte à mémoire ayant un processeur de cryptage/décryptage pour crypter/décrypter des données internes, dans lequel le processeur de cryptage/décryptage exécute le cryptage/décryptage en utilisant une clé de cryptage/décryptage suivant une opération d'exponentiation modulaire, et dans lequel l'opération d'exponentiation modulaire est exécutée par le multiplicateur.