FR2774783A1 - Procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery - Google Patents

Procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery Download PDF

Info

Publication number
FR2774783A1
FR2774783A1 FR9802149A FR9802149A FR2774783A1 FR 2774783 A1 FR2774783 A1 FR 2774783A1 FR 9802149 A FR9802149 A FR 9802149A FR 9802149 A FR9802149 A FR 9802149A FR 2774783 A1 FR2774783 A1 FR 2774783A1
Authority
FR
France
Prior art keywords
bits
circuit
register
input
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9802149A
Other languages
English (en)
Other versions
FR2774783B1 (fr
Inventor
Bernard Plessier
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics SA
Original Assignee
SGS Thomson Microelectronics SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SGS Thomson Microelectronics SA filed Critical SGS Thomson Microelectronics SA
Priority to FR9802149A priority Critical patent/FR2774783B1/fr
Priority to US09/244,217 priority patent/US6275837B1/en
Publication of FR2774783A1 publication Critical patent/FR2774783A1/fr
Application granted granted Critical
Publication of FR2774783B1 publication Critical patent/FR2774783B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/728Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Logic Circuits (AREA)

Abstract

L'invention propose un nouveau procédé de mise en oeuvre d'une opération élémentaire, dite Pfield, définie par la méthode de Montgomery par Pfield (A, B) N = A * B * I mod N, où I est une erreur déterminable. Dans le procédé de l'invention, on décale deux fois de suite les mots de poids le plus faible des données A et N qui sont contenus dans des sous-registres élémentaires 10-1 et 12-1. Le procédé de l'invention rend inutile l'ajout de cellules de retard de taille importante.

Description

Procédé de mise en oeuvre d'une opération modulaire
élémentaire selon la méthode de Montqomery
L'invention concerne un procédé de mise en oeuvre d'une opération modulaire élémentaire selon la méthode de
Montgomery. Cette méthode permet d'effectuer des calculs modulaires dans un corps fini GF(2n) (corps de Gallois) sans effectuer de divisions.
Classiquement, les opérations modulaires sur GF(2n) sont utilisées en cryptographie pour des applications telles que l'authentification de messages, l'identification d'un utilisateur et l'échange de clés.
De tels exemples d'applications sont décrits par exemple dans la demande de brevet FR-A-2 679 054 (document D1).
On trouve dans le commerce des circuits intégrés dédiés à de telles applications, par exemple le produit fabriqué par SGS-THOMSON MICROELECTRONICS S.A. et référencé ST16CF54, bâti autour d'une association de type unité centrale - coprocesseur arithmétique, et dédié à la mise en oeuvre de calculs modulaires. Le coprocesseur utilisé permet de traiter des multiplications modulaires, en utilisant la méthode de Montgomery. I1 fait l'objet de la demande de brevet EP-A-0 601 907 (document D2).
L'opération de base, dite Pfield, consiste, à partir de trois données binaires, A (multiplicande), B
(multiplieur inférieur à N) et N (modulo), codées sur un nombre entier n de bits, à produire une donnée binaire notée P(A, B)N codée sur n bits, telle que P(A, B)N = A *
B * I mod N, avec I = 2-n mod N. Pour cela, on considère que les données sont codées sur m mots de k bits, avec m * k = n, et on fournit les mots de A et B à un circuit de multiplication ayant une entrée série, une entrée parallèle et une sortie série.
Pour le coprocesseur décrit dans D2, on a k = 32 et m = 8 ou 16. La figure 1 représente le coprocesseur d'ar thmétique modulaire dévoilé par D2. Ce coprocesseur comprend les éléments suivants:
- trois registres à décalage 10, 11, et 12, de m * k bits, ayant une entrée et une sortie série, destinés à recevoir respectivement le multiplieur B, le résultat S, et le modulo N,
- un multiplexeur 13 à trois entrées série dont une sortie série est reliée à l'entrée du registre 10, une première entrée étant reliée à une première borne d'entrée, une deuxième entrée étant reliée à la sortie du registre 10,
- un multiplexeur 14 à deux entrées série dont une sortie série est reliée à l'entrée du registre 11, une première entrée est reliée à un "0" logique,
- un multiplexeur 15 à trois entrées série dont une sortie série est reliée à l'entrée du registre 12, une première entrée étant reliée à une deuxième borne d'entrée, une deuxième entrée étant reliée à la sortie du registre 12,
- trois registres à décalage 16, 17, et 18, de k bits, ayant une entrée série et une sortie parallèle, destinés à recevoir respectivement k bits du multiplicande A, un paramètre de calcul noté J0, un résultat intermédiaire noté Y0, l'entrée du registre 17 étant reliée à une troisième borne d'entrée,
- deux circuits de multiplication 19 et 20 ayant chacun une entrée série, une entrée parallèle de k bits et une sortie série,
- deux registres 21 et 22 de k bits ayant une entrée et une sortie parallèle, l'entrée du registre 21 étant relié à la sortie du registre 16, la sortie du registre 21 étant reliée à l'entrée du circuit de multiplication 19, la sortie du registre 22 étant reliée à l'entrée du circuit de multiplication 20,
- un multiplexeur 23 à deux entrées parallèles et une sortie parallèle, une première entrée du multiplexeur 23 étant reliée à la sortie du registre 17, une deuxième entrée du multiplexeur 23 étant reliée à la sortie du registre 18, la sortie du multiplexeur 23 étant reliée à l'entrée du registre 22,
- deux multiplexeurs 24, 25, ayant chacun deux entrées séries et une sortie série, la sortie du multiplexeur 24 étant reliée à l'entrée du registre 16, une première entrée du multiplexeur 24 étant reliée à une quatrième borne d'entrée, la sortie du multiplexeur 25 étant reliée à l'entrée série du circuit de multiplication 19, une première entrée du multiplexeur 25 étant reliée à un "0" logique,
- un multiplexeur 26 comportant trois entrées série et une sortie, la sortie étant reliée à l'entrée série du circuit de multiplication 20, une première entrée étant reliée à un "0" logique,
- trois circuits de soustraction 27, 28, et 29 comportant chacun deux entrées séries et une sortie série, la première entrée du circuit 27 étant reliée à la sortie du registre 10, la sortie du circuit 27 étant reliée à chacune des deuxièmes entrées des multiplexeurs 24 et 25 et également à une borne de sortie, la première entrée du circuit 28 étant reliée à la sortie du registre 11,
- deux circuits d'addition 30 et 31, ayant chacun deux entrée séries et une sortie série, la première entrée du circuit 30 étant reliée à la sortie du circuit 28, la deuxième entrée du circuit 30 étant reliée à la sortie du circuit 19, la sortie du circuit 30 étant reliée à une deuxième entrée du multiplexeur 26, la sortie du circuit étant reliée à une première entrée du circuit 29 mais aussi à une deuxième entrée du multiplexeur 14 et également à chacune des troisièmes entrées des multiplexeurs 13 et 15,
- trois cellules à retard 32, 33 et 34 qui sont en fait des registres à décalage de k bits, ayant une entrée et une sortie série, la sortie de la cellule 32 étant reliée d'une part à une troisième entrée du multiplexeur 26 et d'autre part à l'entrée de la cellule 33, la sortie de la cellule 33 étant reliée à une deuxième entrée du circuit 29, l'entrée de la cellule 34 étant reliée à la sortie du circuit 30, la sortie de la cellule 34 étant reliée à une première entrée du circuit 31,
- un circuit de comparaison 35 ayant deux entrées série et deux sorties, une première entrée étant reliée à la sortie du circuit 31, une deuxième entrée étant reliée à la sortie du circuit 29,
- deux multiplexeurs 36 et 37, chacun ayant deux entrées séries, une entrée de sélection, une sortie, chacune des premières entrées séries étant reliée à un "0" logique, chacune des entrées de sélection étant reliée à l'une des sorties du circuit 35, la sortie du multiplexeur 36 étant reliée à une deuxième entrée du circuit 27, la sortie du multiplexeur 37 étant reliée à une deuxième entrée du circuit 28,
- un multiplexeur 38 ayant deux entrées et une sortie, une première entrée étant reliée à un "1" logique, une deuxième entrée étant reliée à la sortie du registre 12, la sortie étant reliée d'une part à l'entrée de la cellule 32 et d'autre part aux deuxièmes entrées des multiplexeurs 36 et 37,
- un démultiplexeur 39 ayant une entrée et deux sorties, l'entrée étant reliée à la sortie du circuit 20, une première sortie étant reliée à l'entrée du registre 18, une deuxième sortie étant reliée à une deuxième entrée du circuit 31.
Pour plus de détails sur la réalisation de certains éléments on peut se référer à D2.
Pour réaliser une opération élémentaire dite PField du type PField(A, B)N = A * B * I mod N, A et B étant codés sur m mots de k bits, et I étant une erreur égale à 2-m*k, on réalise m fois l'itération de boucle suivante avec i un indice variant de 1 à m:
X = S(i) + Ai-l * B,
Yo = (X * J0) mod 2k,
Z = X + (N * Yg)
S(i) = Z \ 2k, \ étant une division entière,
si S(i) est supérieur à N alors on soustrait N à S(i) avant la prochaine itération,
avec S(0) = 0, Ai étant le mot de k bits de poids i, J0 étant un mot de k bits défini par l'équation
((N * J0) + 1) mod 2k = 0.
Le coprocesseur de la figure 1 permet d'effectuer une itération complète par un décalage simultané de m * k bits des registres 10 à 12 contenant respectivement B, S(i-l) et N suivit d'un décalage de 2 * k bits du registre 12 pour mémoriser S(i), le mot Ai étant chargé dans le registre 21, et le mot J0 étant chargé dans le registre 17. Pour réaliser le calcul complet de PField(A,
B)N, il suffit de répéter m fois chaque itération en changeant le mot Ai contenu dans le registre 21 lors de chaque itération.
L'opération "X = S(i-l) + Ai * B" se fait à l'aide des circuits de multiplication 19 et d'addition 30.
L'opération "Y0 = (X * J0) mod 2k" se fait, lors des k premier décalage, dans le circuit de multiplication 20, en ayant pris soin de mémoriser J0 dans registre 22, le résultat Y0 étant mémoriser dans le registre 18.
L'opération "Z = X + (N * Y0)", N et X ayant été retardé de k bits dans les cellules à retard 32 et 34 et Yo ayant été mis dans le registre 22, s'effectue à l'aide des circuits de multiplication 20 et d'addition 31.
L'opération "S(i) = Z \ 2k" est réalisée par décalage de k bits. La comparaison de S(i) avec N s'effectue par la soustraction de N à S(i) dans le circuit de soustraction 29, N étant retardé de k bits dans la cellule 33, un éventuel débordement étant détecté et mémorisé dans le circuit de comparaison 35 pour connaître le résultat de la comparaison. La soustraction de N à S(i) se faisant lors de l'itération suivante dans le circuit de soustraction 28.
Le coprocesseur décrit dans D2 présente comme inconvénient de réaliser des calculs de manière figée sur des nombre soit de 256 bits soit de 512 bits. Une première amélioration dévoilée dans la demande de brevet
EP-A-0 712 071 (document D3) vise à apporter un plus grande souplesse d'utilisation en permettant de réaliser des opérations Pfield(A, B)N avec A de taille variable.
Une deuxième amélioration, dévoilée dans la demande de brevet EP-A-0 784 262 (document D4) vise à diminuer les échanges de données entre le coprocesseur et l'extérieur durant la réalisation d'opérations modulaires par l'ajout d'un registre supplémentaire de m * k bits pour mémoriser A de manière intégrale lorsque A est de taille inférieure à m * k bits.
Par ailleurs, on connaît des registres à décalage de m * k bits organisés en banque de m sous-registres de k bits qui permettent afin de diminuer la consommation desdits registres. La consommation est réduite car au plus 2 * k cellules de mémorisation sont utilisées simultanément. L'homme du métier connaît de tels registres par la demande de brevet faite en France le 4 juillet 1997 qui a reçu le numéro de dépôt 97-08516. Un inconvénient des registres organisés en banque de sousregistres est qu'ils occupent une surface de silicium plus importante que des registres classiques.
Un but de l'invention est de réduire la taille du circuit tout en utilisant des registres organisés en banque de sous-registres. L'invention propose de supprimer les cellules à retard 32 et 34 afin de gagner en surface d'occupation grâce à un nouveau séquencement du coprocesseur.
L'invention a pour objet un procédé de mise en oeuvre d'une opération élémentaire, dite Pfield, définie par la méthode de Montgomery par Pfield(A, B)N = A * B *
I mod N, A, B et N étant des entiers codés sur respectivement a, b et n mots de k bits, N étant impair, b et n étant des entiers non-nuls inférieurs ou égaux à un entier m, a et m étant des entiers non nuls, le procédé mettant en oeuvre un premier registre de k bits destiné à recevoir de manière successive des mots Ail de k bits de A, un deuxième registre à décalage de m * k bits destiné à mémoriser B, un troisième registre à décalage de m * k bits destiné à mémoriser un résultat actualisé noté S(i), un quatrième registre à décalage de m * k bits destiné à mémoriser N, les deuxième à quatrième registres étant organisés en banque de m sousregistres permettant des décalages par mot de k bits, caractérisé en ce que l'on effectue un premier décalage de k bits des mots de poids le plus faible des deuxième à quatrième registres dans des moyens de calcul pour produire en série une donnée intermédiaire Y0 =
((-No~lmod 2k) * (B * Ai~l + S(i-l))) mod 2k que l'on
((-N0 mod 2k) Aiî S(i-l))) que mémorise dans un cinquième registre de k bits; puis l'on effectue un deuxième décalage de n * k bits de la totalité des mots B, S(i-l) et N contenus dans les deuxième à quatrième registres vers les moyens de calcul pour produire en série la donnée actualisé S(i).
Préférentiellement, on répète a fois des étapes El à E3 suivantes, i étant un indice entier variant de 1 à a qui est incrémenté à l'issue de chaque répétition d'étapes:
Etape El: calcul de Y0 : on décale de k bits les mots de poids le plus faible de respectivement B, S(i-l) et N contenu dans les deuxième à troisième registres, chacun des registres ayant son entrée reliée à sa sortie afin de conserver le mot de k bits dans un même sousregistre après l'avoir fourni; pendant les décalages; on produit Ai-l * Bo dans un premier circuit de multiplication; on soustrait Ng à S(i-l)0 dans un premier circuit de soustraction si S(i-l) est supérieur à N; on produit les k bits de poids faible de X = S(i-l) + Ai * B dans un premier circuit d'addition en additionnant le résultat sortant du premier circuit de multiplication avec le résultat sortant du premier circuit de soustraction; on produit Y0 en multipliant les k bits de poids faible de X par -N0~1mod 2k dans un deuxième circuit de multiplication, le résultat sortant du circuit de multiplication étant stocké dans le cinquième registre;
Etape E2: calcul de S(i): on décale simultanément de n * k bits les contenus des deuxième à quatrième registres; le premier circuit de multiplication réalisant la multiplication B * Ai~l; on soustrait N à S(i-l) dans le premier circuit de soustraction si S(i-l) est supérieur à N; on produit X = S(i-l) + Ai * B dans le premier circuit d'addition en additionnant le résultat sortant du premier circuit de multiplication avec le résultat sortant du premier circuit de soustraction; on produit X * Y0 dans le deuxième circuit de multiplication; on produit Z = X + (N * Yg) dans un deuxième circuit d'addition en additionnant le résultat sortant du deuxième circuit de multiplication avec le résultat sortant du premier circuit d'addition les k premiers bits sortant du deuxième circuit d'addition étant ignorés, on stocke le nouveau résultat actualisé
S(i) dans le troisième registre 11, le mot Z1 de k bits correspondant au deuxième mot de poids faible de Z devenant le mot de poids le plus faible du résultat actualisé S(i);
Etape E3: comparaison de S(i) avec N: on compare
S(i) avec N et on mémorise le résultat de la comparaison à l'aide de moyens de comparaison, le résultat de la comparaison de N avec S(i) étant à prendre en compte lors de la prochaine répétition des étapes A et B;
L'invention sera mieux comprise et d'autres particularités et avantages apparaîtront à la lecture de la description qui va suivre, la description faisant référence aux dessins annexés parmi lesquels:
la figure 1 représente un coprocesseur selon l'art antérieur,
les figures 2 et 3 représentent des coprocesseurs selon l'invention.
Le schéma de la figure 2 comporte
- trois registres à décalage 10, 11, et 12, de m * k bits, ayant une entrée et une sortie série, destinés à recevoir respectivement le multiplieur B, le résultat S, et le modulo N, chacun des registres étant organisé en banque de m sous-registres de k bits 10-1 à 10-m, 11-1 à ll-m et 12-1 à 12-m à décalage dont les entrées sont groupées ensemble pour former l'entrée respectivement des registres 10, 11 et 12, et les sorties des sous-registres 10-1 à 10-m, 11-1 à ll-m et 12-1 à 12-m étant connectées respectivement à trois multiplexeurs à m entrées 100, 110 et 120 respectivement, la sortie de chaque multiplexeur 100, 110, et 120 formant la sortie de chacun des registres 10, 11 et 12,
- trois multiplexeurs 13, 14 et 15 à quatre entrées série et une sortie série, une première entrée de chacun des multiplexeurs 13, 14 et 15 étant connectée à une borne d'entrée Din, une deuxième entrée de chacun des multiplexeurs 13, 14 et 15 recevant un "0" logique, une troisième entrée de chacun des multiplexeurs 13, 14 et 15 étant connectée respectivement à la sortie de chacun des registres 10, 11 et 12, la sortie de chacun des multiplexeurs 13, 14 et 15 étant connectée respectivement à l'entrée de chacun des registres 10, 11 et 12,
- trois registres à décalage 16, 17, et 18, de k bits, ayant une entrée série et une sortie parallèle, destinés à recevoir respectivement k bits du multiplicande A, un paramètre de calcul noté Jo, un résultat intermédiaire noté Y0, l'entrée du registre 17 étant reliée à une troisième borne d'entrée,
- deux circuits de multiplication 19 et 20 ayant chacun une entrée série, une entrée parallèle de k bits et une sortie série,
- deux registres 21 et 22 de k bits ayant une entrée parallèle et une sortie parallèle, l'entrée du registre 21 étant relié à la sortie du registre 16, la sortie du registre 21 étant reliée à l'entrée du circuit de multiplication 19, la sortie du registre 22 étant reliée à l'entrée du circuit de multiplication 20,
- un multiplexeur 23 à deux entrées parallèles et une sortie parallèle, une première entrée du multiplexeur 23 étant reliée à la sortie du registre 17, une deuxième entrée du multiplexeur 23 étant reliée à la sortie du registre 18, la sortie du multiplexeur 23 étant reliée à l'entrée du registre 22,
- deux multiplexeurs 24, 25, ayant chacun deux entrées séries et une sortie série, la sortie du multiplexeur 24 étant reliée à l'entrée du registre 16, une première entrée du multiplexeur 24 étant reliée à une borne d'entrée Din, la sortie du multiplexeur 25 étant reliée à l'entrée série du circuit de multiplication 19, une première entrée du multiplexeur 25 recevant un "0" logique,
- un multiplexeur 26 comportant trois entrées série et une sortie, la sortie étant reliée à l'entrée série du circuit de multiplication 20, une première entrée recevant un "0" logique,
- trois circuits de soustraction 27, 28, et 29 comportant chacun deux entrées séries et une sortie série, la première entrée du circuit 27 étant reliée à la sortie du registre 10, la sortie du circuit 27 étant reliée aux deuxièmes entrées des multiplexeurs 24 et 25 et également à une borne de sortie Dout, la première entrée du circuit 28 étant reliée à la sortie du registre 11,
- deux circuits d'addition 30 et 31, ayant chacun deux entrée séries et une sortie série, la première entrée du circuit 30 étant reliée à la sortie du circuit 28, la deuxième entrée du circuit 30 étant reliée à la sortie du circuit 19, la sortie du circuit 30 étant reliée à une deuxième entrée du multiplexeur 26 et à une première entrée du circuit 31, la sortie du circuit 31 étant reliée à une première entrée du circuit 29 mais aussi aux quatrièmes entrées des multiplexeurs 13, 14 et 15,
- une cellule à retard 33 qui est en fait un registre à décalage de k bits, ayant une entrée et une sortie série, la sortie de la cellule 33 étant reliée à une deuxième entrée du circuit 29,
- un circuit de comparaison 35 ayant deux entrées série et deux sorties, une première entrée étant reliée à la sortie du circuit 31, une deuxième entrée étant reliée à la sortie du circuit 29,
- deux multiplexeurs 36 et 37, chacun ayant deux entrées séries, une sortie, chacune des premières entrées séries étant reliée à un "0" logique, chacun multiplexeurs 36 et 37 étant commandé par l'une des sorties du circuit 35 (non représenté sur le schéma), la sortie du multiplexeur 36 étant reliée à une deuxième entrée du circuit 27, la sortie du multiplexeur 37 étant reliée à une deuxième entrée du circuit 28,
- un multiplexeur 38 ayant deux entrées série et une sortie série, une première entrée étant reliée à un "1" logique, une deuxième entrée étant reliée à la sortie du registre 12, la sortie étant reliée d'une part à l'entrée de la cellule 33 et d'autre part aux deuxièmes entrées des multiplexeurs 36 et 37 et à une troisième entrée du multiplexeur 26,
- un démultiplexeur 39 ayant une entrée série et deux sorties série, l'entrée étant reliée à la sortie du circuit 20, une première sortie étant reliée à l'entrée du registre 18, une deuxième sortie étant reliée à une deuxième entrée du circuit 31.
Pour le coprocesseur de la figure 2, on utilise une unique borne d'entrée pour charger les données dans les registres 10, 11, 12, 16 et 17. Il est tout à fait possible d'utiliser cinq bornes d'entrée si l'on désire effectuer le chargement simultané de toutes les données dans tous les registres 10, 11, 12, 16 et 17.
Pour expliquer le fonctionnement d'un tel circuit lors de la mise en oeuvre d'une opération de type
PField(A, B)N = A * B * I mod N, il convient de poser A un entier codé sur a mots de k bits, B un entier codé sur b mots de k bits, N un entier impair codé sur n mots de k bits, a, b et n étant des entiers positifs, b et n étant inférieurs ou égaux à m. De plus, b est forcément inférieur ou égal à n.
Le circuit doit d'abord être initialise:
- on charge B dans le registre 10, le mot de poids le plus faible de B étant par exemple dans le sousregistre 10-1;
- on charge N dans le registre 12, le mot de poids le plus faible de N étant par exemple dans le sousregistre 12-1;
- on initialise à "0" le registre 11, le contenu étant appelé S(0) et étant codé sur n mots de k bits;
- on charge un paramètre de calcul J0 dans le registre 17, Jg étant calculé au préalable et étant égal à -No - lmod 2k
- on initialise le circuit de comparaison afin que les multiplexeurs 36 et 37 aient leurs sorties qui fournissent un "0" logique;
- on charge le mot Ag, correspondant au mot de k bits de poids le plus faible de A, dans le registre 16.
L'initialisation du circuit peut être à faire uniquement partiellement. En effet, à l'issue d'un calcul, le coprocesseur contient des données qui peuvent être réutilisée en étant déjà dans le bon registre.
Pour mettre en oeuvre l'opération élémentaire PFieldl on répète a fois les étapes 1 à 6 suivantes, i étant un indice entier variant de 1 à a qui est incrémenté à l'issue de chaque répétition d'étapes:
Etape 1: on charge Ail dans le registre 21, et on charge Jo dans le registre 22; on initialise les circuits d'addition 30 et 31, de soustraction 27 à 29 et de multiplication 19 et 20;
Etape 2: calcul de Yo :
- on décale de k bits les contenus des sousregitres 10-1, 11-1 et 12-1, correspondant au mot de poids le plus faible de respectivement B, S(i-l) et N, chacun des registres ayant son entrée reliée à sa sortie afin de conserver le mot de k bits dans le même sousregistre 10-1, 11-1 et 12-1 après l'avoir fourni;
- pendant les décalages; on produit Ail * Bg dans le circuit de multiplication 19; on soustrait Ng à
S(i-l)0 dans le circuit de soustraction 28 si S(i-l) est supérieur à N; on produit les k bits de poids faible de X = S(i-l) + Ai * B dans le circuit d'addition 30 en additionnant le résultat sortant du circuit de multiplication 19 avec le résultat sortant du circuit de soustraction 28; on produit Y0 en multipliant les k bits de poids faible de X par J0 dans le circuit de multiplication 20, le résultat sortant du circuit de multiplication 20 étant stocké dans le registre 18;
Etape 3: on charge Y0 dans le registre 22; on initialise les circuits d'addition 30 et 31, de soustraction 27 à 29 et de multiplication 19 et 20;
Etape 4: calcul de S(i):
- on décale simultanément de n * k bits les contenus des registres 10, 11 et 12; le circuit de multiplication 19 réalisant la multiplication B * Ai~l; on soustrait N à S(i-l) dans le circuit de soustraction 28 si S(i-l) est supérieur à N; on produit X = S(i-l) +
Ai * B dans le circuit d'addition 30 en additionnant le résultat sortant du circuit de multiplication 19 avec le résultat sortant du circuit de soustraction 28; on produit X * Yo dans le circuit de multiplication 20; on produit Z = X + (N * Y0) dans le circuit d'addition 31 en additionnant le résultat sortant du circuit de multiplication 20 avec le résultat sortant du circuit d'addition 30 les k premiers bits sortant du circuit d'addition 31 étant ignorés, on stocke S(i) dans le registre 11, le mot Z1 de k bits correspondant au deuxième mot de poids faible de Z devenant le mot de poids le plus faible de S(i) stocké dans le sous-registre 11-1;
Etape 5: comparaison de S(i) avec N:
- on soustrait N retardé de k bits au résultat sortant du circuit d'addition 31 dans le circuit de soustraction 29; le circuit de comparaison 35 contrôle mémorise l'état de la retenu du circuit de soustraction 29, la retenu correspondant au résultat de la comparaison de N avec S(i) étant à prendre en compte lors de la prochaine répétition des étapes 2 et 4;
Etape 6: pendant le déroulement des étapes 2 à 5, on charge le mot Ai dans le registre 16.
Pour obtenir le résultat final, on décale le contenu des registres 11 et 12 et l'on soustrait N à S(a) si S(a) est supérieur ou égal à N, le résultat étant ensuite stocké dans le registre 10 si on désire le sortir du coprocesseur ou dans un autre registre 10 à 12 si l'on désire l'utiliser dans un prochain calcul. Il est à noter que pour le procédé décrit, l'erreur I est égale à 2-a*k
On peut remarquer que, dans le procédé de l'invention, on produit deux fois le mot X0 de manière consécutive. La double production du mot X0 permet de supprimer la cellule de retard qui avait pour fonction de retarder X pendant une durée égale au calcul de Y0 soit une première économie de k cellules élémentaires de registre. I1 en est de même pour la double sortie du mot Ng qui sert la première fois au calcul de X0 et Y0 et la deuxième fois au calcul de X et Z. La double sortie du mot Ng permet de supprimer la cellule de retard qui avait pour fonction de retarder N pendant une durée égale au calcul de Yo soit une deuxième économie de k cellules élémentaires de registre.
Des variantes sont possibles sur le coprocesseur.
Le schéma de la figure 3 met en oeuvre quelques améliorations possibles.
Sur le coprocesseur de la figure 3, la sortie du circuit de soustraction 28 n'est plus connectée directement à la première entrée du circuit d'addition 30, les autres éléments du coprocesseur de la figure 2 restant inchangés. Le coprocesseur de la figure 3 comporte en outre:
- un registre à décalage 40 de m * k bits, ayant une entrée et une sortie série, destinés à recevoir la donnée A, le registre étant organisé en banque de m sousregistres de k bits 40-1 à 40-m à décalage dont les entrées sont groupées ensemble pour former l'entrée du, et les sorties des sous-registres 40-1 à 40-m étant connectées à un multiplexeur à m entrées 400, la sortie du multiplexeur 400 formant la sortie du registre 40,
- un multiplexeur 41 à quatre entrées série et une sortie série, une première entrée étant connectée à une borne d'entrée Din, une deuxième entrée recevant un "0" logique, une troisième entrée étant connectée à la sortie du registre 40, la quatrième entrée étant connectée à la sortie du circuit d'addition 31, et la sortie étant connectée à l'entrée du registre 40,
- un multiplexeur 42 à deux entrées série et une sortie série, une première entrée étant connectée à la sortie du circuit de soustraction 28, une deuxième entrée recevant un "0" logique, et la sortie étant connectée à la première entrée du circuit d'addition 30.
Le registre 40 sert à stocker A afin d'éviter des échanges de données avec l'extérieur lorsque a est inférieur ou égal à m. Il va de soi que l'ajout ne change pas le déroulement des étapes mises en oeuvre précédemment mais il faut prévoir le chargement de ce registre de manière préalable.
Le multiplexeur 42 sert à envoyer des "0" logiques lors de la première mise en oeuvre des étapes 1 à 6.
L'utilisation de ce multiplexeur 42 permet d'éviter d'avoir à initialiser le registre 11.
Par ailleurs, d'autres fonctionnalités peuvent être implémentées sur le coprocesseur des figures 2 ou 3.
L'implémentation peut se traduire par l'ajout de circuits supplémentaires sur les chemins de données représentés.
L'invention n'est pas remise en cause dans la mesure où les éléments ajoutés permettent de mettre en oeuvre le procédé décrit précédemment.
D'autre part, l'homme du métier sait que les circuits d'addition 30 et 31 et de soustraction 27 à 29 entraînent des retards dont il n'a pas été tenus compte dans la présente demande. Des cellules élémentaires de retard sont donc à prévoir, comme pour les circuits de l'art antérieur, afin d'assurer une bonne synchronisation des chemins de données entre eux.
Des variantes sont possibles au niveau du formats des données. Les registres 11, 12, 13 et 40 sont des registres de m * k bits configurables en registres de taille multiple de k bits. Il est possible de figer la taille de ces registres à la taille maximum ce qui entraîne une perte de temps mais permet de simplifier le séquencement à effectuer. Si l'on utilise une taille figée, on prendra soin de

Claims (2)

REVENDICATIONS
1. Procédé de mise en oeuvre d'une opération élémentaire, dite Pfield, définie par la méthode de
Montgomery par Pfield(A, B)N = A * B * I mod N, A, B et N étant des entiers codés sur respectivement a, b et n mots de k bits, N étant impair, b et n étant des entiers nonnuls inférieurs ou égaux à un entier m, a et m étant des entiers non nuls, le procédé mettant en oeuvre un premier registre (21) de k bits destiné à recevoir de manière successive des mots Ail de k bits de A, un deuxième registre (10) à décalage de m * k bits destiné à mémoriser B, un troisième registre (11) à décalage de m * k bits destiné à mémoriser un résultat actualisé noté
S(i), un quatrième registre (12) à décalage de m * k bits destiné à mémoriser N, les deuxième à quatrième registres
(10 à 12) étant organisés en banque de m sous-registres
(10-1 à 10-m, 11-1 à 1l-m, 12-1 à 12-m) permettant des décalages par mot de k bits, caractérisé en ce que
- on effectue un premier décalage de k bits des mots de poids le plus faible des deuxième à quatrième registres (10 à 12) dans des moyens de calcul (19, 20, 28, 30) pour produire en série une donnée intermédiaire
Y0 = ((-N0-1mod 2k) * (B * Ail + S(i-l))) mod 2k que l'on mémorise dans un cinquième registre (18) de k bits;
- on effectue un deuxième décalage de n * k bits de la totalité des mots B, S(i-l) et N contenus dans les deuxième à quatrième registres (10 à 12) vers les moyens de calcul pour produire en série la donnée actualisé S(i)
2. Procédé selon la revendication 1, caractérisé en ce que on répète a fois des étapes El à E3 suivantes, i étant un indice entier variant de 1 à a qui est incrémenté à l'issue de chaque répétition d'étapes:
Etape El: calcul de Yo
- on décale de k bits les mots de poids le plus faible de respectivement B, S(i-l) et N contenu dans les deuxième à troisième registres (10 à 12), chacun des registres ayant son entrée reliée à sa sortie afin de conserver le mot de k bits dans un même sous-registre
(10-1, 11-1 et 12-1) après l'avoir fourni;
- pendant les décalages; on produit Ail * Bg dans un premier circuit de multiplication (19); on soustrait Ng à S(i-l)0 dans un premier circuit de soustraction (28) si S(i-l) est supérieur à N; on produit les k bits de poids faible de X = S(i-l) + Ai * B dans un premier circuit d'addition (30) en additionnant le résultat sortant du premier circuit de multiplication (19) avec le résultat sortant du premier circuit de soustraction (28); on produit Y0 en multipliant les k bits de poids faible de X par -Ng-lmod 2k dans un deuxième circuit de multiplication (20) , le résultat sortant du circuit de multiplication (20) étant stocké dans le cinquième registre (18);
Etape E2: calcul de S(i):
- on décale simultanément de n * k bits les contenus des deuxième à quatrième registres (10, 11 et 12); le premier circuit de multiplication (19) réalisant la multiplication B * Ai~l; on soustrait N à S(i-l) dans le premier circuit de soustraction (28) si S(i-l) est supérieur à N; on produit X = S(i-l) + Ai * B dans le premier circuit d'addition (30) en additionnant le résultat sortant du premier circuit de multiplication (19) avec le résultat sortant du premier circuit de soustraction (28); on produit X * Y0 dans le deuxième circuit de multiplication (20); on produit Z = X + (N *
Y0) dans un deuxième circuit d'addition (31) en additionnant le résultat sortant du deuxième circuit de multiplication (20) avec le résultat sortant du premier circuit d'addition (30) les k premiers bits sortant du deuxième circuit d'addition (31) étant ignorés, on stocke le nouveau résultat actualisé S(i) dans le troisième registre 11, le mot Z1 de k bits correspondant au deuxième mot de poids faible de Z devenant le mot de poids le plus faible du résultat actualisé S(i);
Etape E3: comparaison de S(i) avec N:
- on compare S(i) avec N et on mémorise le résultat de la comparaison à l'aide de moyens de comparaison (29, 33, 35), le résultat de la comparaison de N avec S(i) étant à prendre en compte lors de la prochaine répétition des étapes A et B;
FR9802149A 1998-02-09 1998-02-09 Procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery Expired - Fee Related FR2774783B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR9802149A FR2774783B1 (fr) 1998-02-09 1998-02-09 Procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
US09/244,217 US6275837B1 (en) 1998-02-09 1999-02-04 Method for the implementation of an elementary modular operation according to the Montgomery method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9802149A FR2774783B1 (fr) 1998-02-09 1998-02-09 Procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery

Publications (2)

Publication Number Publication Date
FR2774783A1 true FR2774783A1 (fr) 1999-08-13
FR2774783B1 FR2774783B1 (fr) 2000-04-14

Family

ID=9523250

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9802149A Expired - Fee Related FR2774783B1 (fr) 1998-02-09 1998-02-09 Procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery

Country Status (2)

Country Link
US (1) US6275837B1 (fr)
FR (1) FR2774783B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1465058A2 (fr) * 2003-04-04 2004-10-06 STMicroelectronics Asia Pacific Pte Ltd Procédé et appareil pour la multiplication modulaire

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0933695B1 (fr) * 1998-01-28 2006-03-15 Hitachi, Ltd. Carte à puce équipé d'une installation de traitement pour le chiffrage à courbe elliptique

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0784262A1 (fr) * 1996-01-15 1997-07-16 STMicroelectronics S.A. Dispositif améliorant la vitesse de traitement d'un coprocesseur d'arithmétique modulaire

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2726667B1 (fr) * 1994-11-08 1997-01-17 Sgs Thomson Microelectronics Procede de mise en oeuvre de multiplication modulaire selon la methode montgomery
FR2726668B1 (fr) * 1994-11-08 1997-01-10 Sgs Thomson Microelectronics Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery
FR2758195B1 (fr) * 1997-01-09 1999-02-26 Sgs Thomson Microelectronics Coprocesseur d'arithmetique modulaire comprenant deux circuits de multiplication operant en parallele

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0784262A1 (fr) * 1996-01-15 1997-07-16 STMicroelectronics S.A. Dispositif améliorant la vitesse de traitement d'un coprocesseur d'arithmétique modulaire

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
WALTER C D: "SYSTOLIC MODULAR MULTIPLICATION", IEEE TRANSACTIONS ON COMPUTERS, vol. 42, no. 3, 1 March 1993 (1993-03-01), pages 376 - 378, XP000364332 *
YANG C -C ET AL: "THE IC DESIGN OF A HIGH SPEED RSA PROCESSOR", APCCAS. IEEE ASIA-PACIFIC CONFERENCE ON CIRCUITS AND SYSTEMS, 18 November 1996 (1996-11-18), pages 33 - 36, XP000619796 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1465058A2 (fr) * 2003-04-04 2004-10-06 STMicroelectronics Asia Pacific Pte Ltd Procédé et appareil pour la multiplication modulaire
EP1465058A3 (fr) * 2003-04-04 2005-07-13 STMicroelectronics Asia Pacific Pte Ltd Procédé et appareil pour la multiplication modulaire

Also Published As

Publication number Publication date
FR2774783B1 (fr) 2000-04-14
US6275837B1 (en) 2001-08-14

Similar Documents

Publication Publication Date Title
EP0853275B1 (fr) Coprocesseur comprenant deux circuits de multiplication opérant en parallèle
EP0712072B1 (fr) Procédé de mise en oeuvre de réduction modulaire selon la méthode de Montgomery
EP0712071B1 (fr) Procédé de mise en oeuvre de multiplication modulaire selon la méthode de montgomery
EP3660849B1 (fr) Circuit mémoire adapté à mettre en oeuvre des opérations de calcul
EP2515227B1 (fr) Circuit de multiplication de Montgomery
EP2515228B1 (fr) Procédé de multiplication de Montgomery
EP0558125B1 (fr) Processeur neuronal à cellules synaptiques reparties
FR2621144A1 (fr) Multiplieur pipeline serie
EP0939363B1 (fr) Procédé de mise en oeuvre d'une multiplication modulaire selon la méthode de Montgoméry
EP0703528A1 (fr) Circuit électronique de calcul modulaire dans un corps fini
EP0939362B1 (fr) Coprocesseur d'arithmétique modulaire permettant de réaliser des opérations non modulaires rapidement
WO2020012105A1 (fr) Processeur ntt incluant une pluralite de bancs de memoires
FR2774783A1 (fr) Procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
EP0784262B1 (fr) Dispositif et procédé améliorant la vitesse de traitement d'un coprocesseur d'arithmétique modulaire
FR2791155A1 (fr) Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
EP0785502B1 (fr) Procédé de production d'un paramètre de correction d'erreur associé à la mise en oeuvre d'opérations modulaires selon la méthode de Montgomery
EP0947913B1 (fr) Procédé de réalisation amélioré d'une division entière
EP0927928B1 (fr) Procédé de production amélioré d'un paramètre JO associé à la mise en oeuvre d'opérations modulaires selon la méthode de Montgomery
FR2818765A1 (fr) Multiplicateur modulaire et processeur de cryptage/decryptage utilisant le multiplicateur modulaire
FR2791157A1 (fr) Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
FR2791156A1 (fr) Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
EP0435399B1 (fr) Organe de traitement arithmétique à associer à une unité centrale de microprocesseur
FR2627297A1 (fr) Multiplieur de nombres binaires a tres grand nombre de bits
FR2568034A1 (fr) Multiplicateur numerique
FR2738365A1 (fr) Procede et circuits pour la multiplication modulo un nombre binaire n de deux nombres binaires et leurs utilisations aux calculs d'exponentiations

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20091030