WO2003093973A1 - Multiplication au sens de montgomery - Google Patents

Multiplication au sens de montgomery Download PDF

Info

Publication number
WO2003093973A1
WO2003093973A1 PCT/FR2003/001258 FR0301258W WO03093973A1 WO 2003093973 A1 WO2003093973 A1 WO 2003093973A1 FR 0301258 W FR0301258 W FR 0301258W WO 03093973 A1 WO03093973 A1 WO 03093973A1
Authority
WO
WIPO (PCT)
Prior art keywords
word
words
cycle
memory
shift
Prior art date
Application number
PCT/FR2003/001258
Other languages
English (en)
Inventor
Robert Naciri
Original Assignee
Oberthur Card Systems 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 Oberthur Card Systems Sa filed Critical Oberthur Card Systems Sa
Priority to AU2003265508A priority Critical patent/AU2003265508A1/en
Publication of WO2003093973A1 publication Critical patent/WO2003093973A1/fr

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

Definitions

  • the invention relates to a cryptographic method including the calculation of a modular multiplication in the Montgomery sense between two binary numbers of large sizes. More particularly, the invention relates to a method of calculating such a multiplication, in which the binary representation of the operands is easily configurable on demand, in order to be able to change the size of the operands. The invention also relates to any electronic entity implementing the method.
  • the most widely used public key cryptographic systems are based on modular arithmetic of large numbers. It is indeed necessary to know how to efficiently calculate the modular exponential of numbers whose size requires at least 1024 bits for the representation of the operands, which represents more than 310 decimal digits.
  • the representation systems of operands in computers are based on the binary word grouping several bits. The word structures currently used are therefore: - the byte represented by 8 bits,
  • n' -1 / n mod r.
  • the "Low” function extracts the least significant word from the product c. not'.
  • Q is designated by the expression “reduction coefficient” which emerges from Montgomery theory. Montgomery demonstrated in his article that the modular multiplication defined by him allows him to calculate by accumulation in c the expression abr "u modulo n.
  • the invention proposes to parcel out large numbers into words of reduced size, for example of the size of the word machine, starting from the observation that a sum of partial products of the kind
  • Aj Xj + Nj Xi will only affect the value of C * (the word of corresponding rank in the word writing of the result) or possibly also the neighboring word (C j + i) of rank immediately higher.
  • the invention can be defined as a cryptographic method including the calculation of a modular multiplication in the sense of Montgomery (*) between two numbers (x, a), characterized in that said numbers and a module (m) in words, we store said words in corresponding memories and define a shift memory where we accumulate by words results of cycles of multiplication and addition between words, until the result of said modular multiplication is entered in said shift memory, in that, for each word () of the succession of words of a first number mentioned above, the cycle of operations consisting of:
  • the method consists, for each cycle and progressively, in adding an aforementioned intermediate result to the word of the same rank and to the word of immediately higher rank contained in said memory at offset, to re-register the results of these additions to these same ranks of said memory, then to repeat these operations with the other intermediate result, until the end of said cycle including the shift of a said word.
  • the method consists, for each cycle, of dividing each intermediate result into two groups respectively bringing together the least significant bits and the most significant bits, temporarily storing these groups, adding, to the value of each word of said shift memory, the groups gathering the least significant bits of the same rank (j) and the groups gathering the most significant bits of the immediately lower rank (j-1), and reporting the result of these additions , each time, at the location of the word j considered in said shift memory, until the end of said cycle comprising the shift of a said word.
  • the invention also relates to an electronic entity comprising cryptography means including a unit for calculating a modular multiplication, in the Montgomery sense, between two numbers, characterized in that said unit of calculation comprises:
  • a shift memory dimensioned to receive the result of said modular multiplication and arranged to shift its own content, each time per word of predetermined size in the direction of the least significant bits
  • a second multiplier for making successive products of a word of said reduction coefficient by a word read in the memory of said module
  • FIG. 1 is a block diagram illustrating a part of an electronic entity constituting more particularly a unit for calculating a modular multiplication in the sense of Montgomery, according to the invention
  • FIG. 2 is a flowchart explaining the operation of the calculation unit of Figure 1;
  • FIG. 3 is a block diagram of a variant of the calculation unit of Figure 1;
  • FIG. 4 is a flowchart explaining the operation of this variant.
  • Montgomery represented in FIG. 1, can be integrated into any electronic entity comprising cryptographic means, to effect such modular multiplications and, consequently, modular exponentiations.
  • This calculation unit can for example be integrated into a microcircuit card comprising cryptography means, such a calculation unit 11 according to the invention being advantageous for this type of electronic entity because of the speed of calculation and the ease with which one can configure the size of the operands, that is to say the capacity occupied by the memories containing these operands.
  • the calculation unit comprises three memories M a> M x , M m dimensioned to receive respectively two numbers a, b and a standardized module m.
  • the numbers x, a and the module m are each expressed in words (Xi, A j , Mj ...) of predetermined size in the corresponding memory, which means that each of these memories has u registers, each sized for receive a word from the number a or b or from the module m.
  • the size of a word in a number or module is the same.
  • 8-bit, 16-bit or 32-bit words can be chosen according to the capacity of the multipliers and adders that will be used in the calculation unit.
  • the latter also comprises a shift memory 104 dimensioned to receive the result of the modular multiplication, by accumulation of successive calculations.
  • This memory therefore consists of a series of registers, each the size of a word Co, C u ...
  • the memories Mx, Ma, Mn and the “shift memory” 104 may be allocated parts (depending on the size of the operands) of the same memory called RAM (direct access memory) configured for the occasion.
  • RAM direct access memory
  • pointers that is to say to registers simply containing the addresses of the words written in the RAM memory.
  • the calculation unit 11 further comprises a first multiplier 100 for making successive products of two words respectively read in the memories Ma, Mx of the two numbers, a calculator 102 with a reduction coefficient Qi, this coefficient being determined at the start of 'a cycle (i) of multiplication of the words A j by a number (a) by a word X, - of the other and a second multiplier101 to make successive products of said reduction coefficient Q-, by a word Mj read in the memory M m of said module.
  • the calculation unit also includes an adder 103, here a double adder, connected, at input, between the outputs of said first and second multipliers I OO, 101 and said shift memory 104 and connected, at output, to this same shift memory 104 with the possibility of directly addressing selected words thereof, that is to say that the output of the adder 103 can directly "point" one or more word locations Cj, Cj + i from said memory to offset and enter the result of one or more corresponding additions.
  • an adder 103 here a double adder, connected, at input, between the outputs of said first and second multipliers I OO, 101 and said shift memory 104 and connected, at output, to this same shift memory 104 with the possibility of directly addressing selected words thereof, that is to say that the output of the adder 103 can directly "point" one or more word locations Cj, Cj + i from said memory to offset and enter the result of one or more corresponding additions.
  • the memories M a , M x of the two numbers are connected to the inputs of the first multiplier 100 by means of buffer registers 106, 107 of the size of a word. Each register can therefore accommodate the word of the number which must be multiplied by that of the other number, at a given time.
  • the output of this same multiplier is connected to the input of a buffer register 108 having the size of two words.
  • the output of this buffer register is connected to one of the inputs of the adder 103.
  • the coefficient calculator Qj includes an adder 102 which receives at one of its inputs the least significant word C 0 contained in the corresponding register of the shift memory and, at its other input, the content of another buffer register 109 which contains a word called Low Pi calculated at the start of a cycle considered (described below) and consisting of the least significant bits of the product of a word X of a first number x, invariable in a cycle, by the first word Ao of a second number a whose all the words are used during this same cycle.
  • the least significant bits retained in Low Pi form a word of said predetermined size of x or a.
  • the output of the adder 102 is connected to the input of a buffer register 110 whose output is connected to an input of the second multiplier! 01.
  • Another buffer register 111 is connected between the memory M m and the other input of the second multiplier101. This buffer memory 111 can therefore successively receive each word Mj from the memory M m .
  • the output of the second multiplier 101 is connected to the input of a buffer register 113 the size of two words and the output of this register is connected to one of the inputs of the adder.
  • the adder has a third input connected to the offset memory 104. Two consecutive words from this memory can be applied to this third input. The words which are likely to be addressed to this input of the adder 103 are the same which are "pointed" by the output 105 of this same adder.
  • the adder 103 is programmed to successively add the content of the buffer register 108 with the two words C j , Cj + ⁇ considered from the shift memory, the transfer of the result to the same locations in said memory, then adding the content of the buffer register 113 with the two modified words Cj, Cj + i from the shift memory.
  • the adder is conventionally arranged with a retention memory R t in which the retention of a given addition is registered. As will be seen below, depending on the case, this reserve can be added to the current addition of the two words.
  • the carry is entered in the most significant register C u of the shift memory 104.
  • step 123 the adder 103 realizes the sum (add) between the output of the multiplier 100 written in the register 108 and the two words Cj + i, C j pointed at this stage by the output 105 of the adder 103.
  • the content of the memory R t (retained from the previous operation) is also added.
  • the sum of this triple addition is made, it is written to the locations C j + i, C j of the shift memory 104.
  • the retention of this addition R add which cannot be entered in C j + 1 is entered in the memory R.
  • step 124 an addition is again carried out, as soon as the corresponding product P 2 is known, between the value of this product and the double word Cj + i, Cj written in the shift memory 104 in the previous step. However, the restraint is not added up.
  • the new reserve R add is added to the previous one and rewritten in the memory R t .
  • the additions made by the adder 103 can be made in masked time during the execution of the following multiplications.
  • the shift memory 104 When the test 117 becomes positive, that is to say when we reach the end of a cycle on X, the content of the shift memory 104 is shifted by one word to the least significant bits, at step 125 and the last value written in the memory R t is carried over into the least significant bits of the location C u (most significant word of the shift memory 104) in step 126.
  • the cycle i is finished and we start a new cycle with the next word.
  • the shift memory contains the modular product in the Montgomery sense of the numbers x and a.
  • FIG. 3 differs from the calculation unit described with reference to FIG. 1 by the structure of the adder and the way in which the adder points to the shift memory, word by word and no longer by group of two words. All the means for calculating the products Pi and P 2 which register successively in the registers 108 and 113 are identical to those of FIG. 1 and will therefore not be described again.
  • the memory 104 is also identical with the difference that it is "pointed" word by word, that is to say that the adder reads each time only one word from the shift memory and only modifies this. same word at the end of a calculation phase.
  • the contents of the buffer registers 108 and 113 are treated differently in the sense that the product Pi is divided into two words, a word Li containing the least significant bits and a word H * ⁇ containing the most significant bits.
  • the product P 2 is divided into two words, a word L 2 containing the least significant bits and a word H 2 containing the most significant bits.
  • the word of the memory 104 pointed at a given time by the adder 103 is noted C j .
  • These different words are addressed to a set 112 of five input registers of the adder forming "queue".
  • the words Li, L 2 (low weights) of a cycle j are added with the word Cj from the register memory but with the words Hi and H 2 of the cycle j-1. This is explained by the flowchart in Figure 4.
  • step 135) the succession of the products P 2 , that is to say to obtain the values L 2 and H 2 which are inscribed in the register 113.
  • the products Li, Hi and L 2 , H 2 can be calculated "in parallel" independently of the operation of the adder 103.
  • step 136) the current values of Li and L 2 are updated (step 136) for the adder 103, that is to say that the words Li and L 2 contained in the registers 108 and 113 are transferred to the corresponding registers of the assembly 112, the words Hi and H 2 being preserved. These are therefore updated but not the registers of the set 112 containing H ** and H 2 calculated in the previous cycle.
  • step 137 which consists in adding the values entered in the assembly 112 supplying the adder 103, that is to say Cj, the values Li and L 2 of the cycle j, the values Hi and H 2 of the previous cycle and the value entered in the memory R t .
  • the result is rewritten at location C j of the shift memory and the reserve R add of this addition is written to the memory Rt.
  • step 138 the current values of H * ⁇ and H 2 are updated, that is to say that the words Hi and H 2 contained in the registers 108 and 113 are transferred to the registers correspondents from set 112.
  • the counter j is incremented by a unit in step 139 and we return to test 131 where the same operations are repeated for the cycle j + 1.
  • step 140 the value of C u is calculated in a similar manner to a calculation of Cj (step 137) but without taking Li and L 2 into account, that is to say say by adding C u , Hi, H 2 and R t , the retention of this addition Ra d is written in Rt.
  • step 141 the content of the shift memory 104 is shifted by one word to the bits of low weight.
  • step 142 the last value written in the memory Rt is transferred to the location C u (most significant bits) of the shift memory 104. The cycle i is finished and a new cycle is started again with the word Xi next.

Landscapes

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

Abstract

Calcul d'une multiplication modulaire au sens de Montgomery. Les deux nombres x, a à multiplier modulo m sont exprimés en mots et le calcul s'effectue par cycle, chaque cycle comprenant: le calcul (102) d'un mot dit coefficient de réduction, la multiplication (100) d'un mot (XI) de x par un mot (Aj) de a, la multiplication (101) du coefficient de réduction (Qi) par un mot (Mj) du module m, l'addition (103) des résultats à un mot d'une mémoire é décalage (104), et le décalage d'un mot dans cette mémoire, à la fin d'un cycle.

Description

MULTIPLICATION AU SENS DE MONTGOMERY
L'invention se rapporte à un procédé de cryptographie incluant le calcul d'une multiplication modulaire au sens de Montgomery entre deux nombres binaires de grandes tailles. Plus particulièrement, l'invention vise un mode de calcul d'une telle multiplication, dans lequel la représentation binaire des opérandes soit facilement configurable à la demande, pour pouvoir changer la taille des opérandes. L'invention concerne aussi toute entité électronique mettant en œuvre le procédé.
Depuis l'introduction du système RSA, de nombreuses, recherches ont été effectuées sur les techniques de calcul modulaire, tant au niveau logiciel que matériel. Parmi toutes ces techniques, celle qui s'appuie sur l'algorithme de P.L. Montgomery est la plus intéressante et offre encore de. nombreuses perspectives. Cette théorie a été exposée dans un article de Montgomery intitulé "Modular Multiplication Without Trial Division" dans la revue "Mathematics & Computations" d'avril 1985. Les réalisations matérielles connues de la technique de Montgomery sont faites uniquement en représentation binaire dont le principal inconvénient est d'imposer des registres de travail e taille importante et non configurables.
Les systèmes cryptographiques à clé publique les plus utilisés (RSA, DSA, ECC...), sont basés sur l'arithmétique modulaire des grands nombres. Il faut en effet savoir calculer efficacement l'exponentielle modulaire de nombres dont la taille nécessite au moins 1024 bits pour la représentation des opérandes, ce qui représente plus de 310 chiffres décimaux. Les systèmes de représentation des opérandes dans les ordinateurs sont basés sur le mot binaire regroupant plusieurs bits. Les structures de mots actuellement employées sont donc : - l'octet représenté par 8 bits,
- les mots de 16 ou 32 bits.
Ainsi donc un opérande de 1024 bits nécessite 128 octets (ou 32 mots de 32 bits), pour sa représentation. La réalisation d'une exponentiation modulaire peut être réalisée en effectuant une série de multiplications modulaires.
Etant donné a, e, n trois nombres, on cherche à calculer ae mod n, appelée exponentiation modulaire. L'opérande n, s'appelle le module. Pour éviter le dépassement de capacité des ordinateurs, l'opération ci-dessus peut se décomposer en une suite de multiplications modulaires de la forme a . x mod n. C'est pour cette raison que l'on s'intéresse aux techniques de multiplication modulaire.
Cette dernière relation indique qu'il faut effectuer le produit de a par x et ne conserver, dans le résultat, que le reste de la division par n. Rappelons que les opérandes en question sont de grandes tailles et nécessitent plusieurs mots de représentation. Si la plupart des opérations arithmétiques ne posent pas de problème particulier, l'opération de division sur des grands nombres sans technique particulière est très coûteuse. Au prix d'un changement de représentation, l'algorithme de Montgomery permet de contourner cette difficulté.
Lorsqu'on implante un algorithme dans un circuit électronique, on dispose généralement d'opérateurs physiques, typiquement des additionneurs et des multiplieurs, d'une taille fixe qu'on notera w, par exemple de 8, 16 ou 32 bits. On dit que w est la taille du "mot machine". Ainsi, exécuter une opération arithmétique addition, soustraction ou multiplication sur des grands nombres, se décompose en opérations élémentaires impliquant les opérateurs physiques de base sur des mots machines de taille w. Pour une multiplication, cette décomposition est en général réalisée de façon logicielle, comme décrit ci-dessous: Soit (Au_ι, Au-2,.-- A-i, Ao), (Xu--ι, Xu-2,.-- X*ι, Xo), représentant des entiers a et x, les et Xj étant des mots machines de taille w. Si h est la taille des opérandes, on a u=h/w. Typiquement h=1024, w=16 bits ou 32 bits et u= 64 ou
32. On voit alors que :
Figure imgf000003_0001
On a
•x = ∑ Ai . Xj i , j = 0 On va maintenant rappeler brièvement en quoi consiste une multiplication modulaire au sens de Montgomery.
On veut calculer a . x mod n, n étant impair. On choisit un radical noté r<n, r étant le mot machine, c'est à dire r = (2W) (remarquons que r est alors relativement premier avec n), et on calcule les coefficients r"1 et n' tels que r. r"1 - n.n' = 1.
Grâce à l'identité de Bezout on sait que :
- de tels coefficients existent,
- n' ne nécessite qu'un seul mot pour sa représentation, - on peut utiliser l'algorithme d'Euclide généralisé pour calculer n' = -1/n mod r.
Dans la suite, on notera «*», la multiplication au sens de Montgomery. Notons :
- a le multiplicande,
- x, le multiplieur exprimé sous forme de mots, Xi , le mot courant à l'étape i. La multiplication au sens de Montgomery se traduit par un algorithme de multiplication-accumulation modulaire. Cet algorithme peut être résumé ainsi :
c=0
Pour i=0 à u-1 c := c + a.Xi (1)
Qi := Low(c.n') (2) c:= (c + n.Qi)/r (3)
La fonction "Low" extrait le mot de poids faible du produit c . n'.
Comme le montre Montgomery dans son article de référence rappelé plus haut, pour le calcul d'une exponentiation modulaire, la multiplication modulaire peut être remplacée par la multiplication de Montgomery. Or, la multiplication de
Montgomery est plus rapide que la multiplication modulaire classique.
En effet, en choisissant r le mot machine, c'est-à-dire r = (2W), il apparaît que la division par r revient à un simple décalage de un mot dans le sens des mots de poids faibles. L'opération de division de la ligne (3) est donc très rapide comparée à une division euclidienne classique.
Dans l'expression ci-dessus, Q, est désigné par l'expression "coefficient de réduction" qui ressort de la théorie de Montgomery. Montgomery a démontré dans son article que la multiplication modulaire définie par lui permet de calculer par accumulation dans c l'expression a. b.r"u modulo n.
De plus, une exponentiation modulaire au sens de Montgomery peut s'obtenir facilement en utilisant uniquement des multiplications au sens de
Montgomery, à savoir : a*e = a* a* a ...* a (e.fois) et le calcul d'une exponentiation modulaire traditionnelle s'obtient aisément à l'aide d'une conversion utilisant une exponentielle au sens de Montgomery, c'est- à-dire : ae mod n = 1* [(a*R2)*e] (1) avec R = ru L'algorithme résumé dans le tableau ci-dessus nécessite cependant de réaliser des multiplications portant sur des grands nombres, à savoir :
Figure imgf000005_0001
et n . Q-, en (3). En effet, a et n sont des grands nombres exprimés sur 1024 bits, X et Qi étant par ailleurs de la "taille machine", c'est-à-dire de 8, 16 ou 32 bits.
Ces multiplications peuvent impliquer, pour leur "implémentation" concrète dans les systèmes informatiques, des opérateurs de grandes tailles (capables de
"gérer" des grands nombres tels que a et n) ou tout au moins des registres de grandes tailles qui sont nécessairement de tailles prédéterminées. Il en résulte que les systèmes connus ne sont pas configurables, c'est-à-dire qu'on ne peut changer la taille des opérandes en fonction des besoins. Pour résoudre ce problème, l'invention propose de parcelliser les grands nombres en mots de taille réduite, par exemple de la taille du mot machine, en partant de la constatation qu'une somme de produits partiels du genre
Aj Xj + Nj Xi ne va affecter que la valeur de C* (le mot de rang correspondant dans l'écriture par mots du résultat) ou éventuellement aussi le mot voisin (Cj+i) de rang immédiatement supérieur.
Ainsi l'invention peut se définir comme un procédé de cryptographie incluant le calcul d'une multiplication modulaire au sens de Montgomery (*) entre deux nombres (x, a), caractérisé en ce qu'on exprime lesdits nombres et un module (m) en mots, on stocke lesdits mots dans des mémoires correspondantes et on définit une mémoire à décalage où on accumule par mots des résultats de cycles de multiplications et additions entre mots, jusqu'à obtenir le résultat de ladite multiplication modulaire inscrit dans ladite mémoire à décalage, en ce que, pour chaque mot ( )de la succession de mots d'un premier nombre précité, on accomplit le cycle d'opérations consistant :
- à calculer pour tout le cycle (i) considéré un mot dit coefficient de réduction (Qι)
- à multiplier ledit mot (Xj) dudit premier nombre correspondant audit cycle (i) chaque fois par l'un des mots (Aj) constituant ledit second nombre pour obtenir une succession de premiers résultats intermédiaires,
- à multiplier ledit coefficient de réduction (Qi) correspondant audit cycle (i) chaque fois par l'un des mots Mj constituant ledit module pour obtenir une succession de seconds résultats intermédiaires, et - à additionner lesdits premiers et seconds résultats intermédiaires, aux mots de mêmes rangs déjà contenus dans ladite mémoire à décalage et, à la fin de chaque cycle (i), à décaler d'un mot vers les bits de poids faibles le contenu de ladite mémoire à décalage.
Ledit "coefficient de réduction" est issu de la théorie de Montgomery. II est clair, pour l'homme du métier, que certaines opérations indiquées ci- dessus peuvent être accomplies indépendamment les unes des autres et que l'ordre dans lequel elles sont énoncées n'est pas une caractéristique essentielle pour la mise en œuvre de l'invention.
Selon un aspect de l'invention, on peut aussi envisager une simplification de l'algorithme de Montgomery indiqué ci-dessus :
On reprend l'expression r . r"1 - n.n' = 1 avec les mêmes hypothèses sur r, r"1, n et n'. En particulier, r"1 est l'inverse de r modulo n. On peut se restreindre aux modules n tel que le coefficient n' correspondant soit égal à 1. L'algorithme se simplifie ainsi :
c=0
Pour i=0 à u-1 c := c + aXi Qj := Low(c) c:= (c + n.Qi)/r Lorsque n -1 selon l'invention, on dira que le module est "normalisé" au sens de Montgomery. Par un changement de variable, on peut toujours se ramener au cas des modules normalisés au sens de Montgomery. En effet, posons m=n.n' et m'=1 , m est impair et donc relativement premier avec r. On peut donc toujours considérer l'identité de Bezout identiquement vérifiée par le nouveau jeu de coefficients r.r"1 - m.m' = 1
Donc l'arithmétique de Montgomery s'applique au module m normalisé au sens de Montgomery. Dans la suite de la description, le module m sera exprimé par une série de mots Mj. L'invention peut cependant être mise en œuvre sans la simplification n'=1 , c'est-à-dire sans faire appel au module normalisé. On voit que dans le cas n -1 , le calcul du coefficient de réduction Qi se trouve simplifié et est obtenu en calculant "Low c". Il n'est plus nécessaire de calculer en'. Ceci simplifie l'algorithme décrit plus haut car Qi, à chaque cycle, peut être constitué de la somme dudit premier mot contenu dans ladite mémoire à décalage avec les bits de poids faibles du produit du premier mot A0 d'un second nombre précité, par le mot X dudit premier nombre considéré dans ledit cycle.
A la fin du calcul d'une exponentiation modulaire utilisant des multiplications au sens de Montgomery, avec module normalisé, on obtient un résultat T = ae mod m en appliquant la conversion (1) ci-dessus. On peut ensuite calculer U, l'exponentiation modulaire, modulo n, par une seule transformation
U = T mod n Selon un mode d'exécution possible, le procédé consiste, pour chaque cycle et au fur et à mesure, à additionner un résultat intermédiaire précité au mot de même rang et au mot de rang immédiatement supérieur contenus dans ladite mémoire à décalage, à réinscrire les résultats de ces additions à ces mêmes rangs de ladite mémoire, puis à recommencer ces opérations avec l'autre résultat intermédiaire, jusqu'à la fin dudit cycle comprenant le décalage d'un mot précité.
Selon un autre mode d'exécution possible, le procédé consiste, pour chaque cycle, à partager chaque résultat intermédiaire en deux groupes rassemblant respectivement les bits de poids faibles et les bits de poids forts, à mémoriser temporairement ces groupes, à ajouter, à la valeur de chaque mot de ladite mémoire à décalage les groupes rassemblant les bits de poids faibles de même rang (j) et les groupes rassemblant les bits de poids forts du rang immédiatement inférieur (j-1 ), et à reporter le résultat de ces additions, chaque fois, à l'emplacement du mot j considéré de ladite mémoire à décalage, jusqu'à la fin dudit cycle comprenant le décalage d'un mot précité.
L'invention concerne aussi une entité électronique comprenant des moyens de cryptographie incluant une unité de calcul d'une multiplication modulaire, au sens de Montgomery, entre deux nombres, caractérisée en ce que ladite unité de calcul comprend :
- trois mémoires dimensionnées pour recevoir respectivement lesdits nombres a, b et un module m, chacun exprimé en mots de taille prédéterminée dans la mémoire correspondante,
- une mémoire à décalage dimensionnée pour recevoir le résultat de ladite multiplication modulaire et agencée pour décaler son propre contenu, chaque fois par mot de taille prédéterminée dans la direction des bits de poids faibles,
- un premier multiplieur pour faire des produits successifs de deux mots respectivement lus dans les mémoires des deux nombres,
- un calculateur d'un coefficient de réduction déterminé au début d'un cycle de multiplications des mots d'un nombre par un mot de l'autre,
- un second multiplieur pour faire des produits successifs d'un mot dudit coefficient de réduction par un mot lu dans la mémoire dudit module, et
- un additionneur connecté, en entrée, entre les sorties desdits premier et second multiplieurs et ladite mémoire à décalage et connecté, en sortie, à ladite mémoire à décalage en adressant directement des mots sélectionnés de celle-ci.
L'invention sera mieux comprise à la lumière de la description qui va suivre, donnée à titre d'exemple, et faite en référence aux dessins annexés dans lesquels : - la figure 1 est un schéma bloc illustrant une partie d'une entité électronique constituant plus particulièrement une unité de calcul d'une multiplication modulaire au sens de Montgomery, conforme à l'invention ;
- la figure 2 est un organigramme explicitant le fonctionnement de l'unité de calcul de la figure 1 ;
- la figure 3 est un schéma bloc d'une variante de l'unité de calcul de la figure 1 ; et
- la figure 4 est un organigramme explicitant le fonctionnement de cette variante. L'unité de calcul 11 d'une multiplication modulaire, au sens de
Montgomery, représentée sur la figure 1 peut être intégrée à toute entité électronique comprenant des moyens de cryptographie, pour effectuer de telles multiplications modulaires et, par conséquent, des exponentiations modulaires. Cette unité de calcul peut par exemple être intégrée à une carte à microcircuit comprenant des moyens de cryptographie, une telle unité de calcul 11 selon l'invention étant avantageuse pour ce type d'entité électronique en raison de la rapidité de calcul et de la facilité avec laquelle on peut configurer la taille des opérandes, c'est-à-dire la capacité occupée par les mémoires renfermant ces opérandes. L'unité de calcul comprend trois mémoires Ma> Mx, Mm dimensionnées pour recevoir respectivement deux nombres a, b et un module normalisé m. Les nombres x, a et le module m sont, chacun, exprimés en mots (Xi, Aj, Mj ...) de taille prédéterminée dans la mémoire correspondante, ce qui signifie que chacune de ces mémoires comporte u registres, chacun dimensionné pour recevoir un mot du nombre a ou b ou du module m. La taille d'un mot d'un nombre ou du module est la même. Selon les cas, on peut choisir des mots de 8 bits, 16 bits ou 32 bits suivant la capacité des multiplieurs et des additionneurs qui seront utilisés dans l'unité de calcul. Cette dernière comporte en outre une mémoire à décalage 104 dimensionnée pour recevoir le résultat de la multiplication modulaire, par accumulation de calculs successifs. Cette mémoire est donc constituée d'une série de registres, chacun de la taille d'un mot Co, Cu ... et elle est agencée pour décaler son propre contenu, à chaque itération comme décrit plus loin, par mot de ladite taille prédéterminée, dans la direction des mots de bits de poids faibles, c'est-à-dire vers Co. Il est à noter que les mémoires Mx, Ma, Mn et la "mémoire à décalage" 104 peuvent être des parties allouées (en fonction de la taille des opérandes) d'une même mémoire dite RAM (mémoire à accès direct) configurée pour la circonstance. De préférence, on pourra même avoir recours à des pointeurs, c'est-à-dire à des registres contenant simplement les adresses des mots inscrits dans la mémoire RAM. A chaque itération en i ou en j, le contenu du pointeur change.
L'unité de calcul 11 comporte en outre un premier multiplieurlOO pour faire des produits successifs de deux mots respectivement lus dans les mémoires Ma, Mx des deux nombres, un calculateur 102 d'un coefficient de réduction Qi, ce coefficient étant déterminé au début d'un cycle (i) de multiplication des mots Aj d'un nombre (a) par un mot X,- de l'autre et un second multiplieur101 pour faire des produits successifs dudit coefficient de réduction Q-, par un mot Mj lu dans la mémoire Mm dudit module. L'unité de calcul comporte aussi un additionneur 103, ici un additionneur double, connecté, en entrée, entre les sorties desdits premier et second multiplieursI OO, 101 et ladite mémoire à décalage 104 et connecté, en sortie, à cette même mémoire à décalage 104 avec possibilité d'adresser directement des mots sélectionnés de celle-ci, c'est- à-dire que la sortie de l'additionneur 103 peut "pointer" directement un ou plusieurs emplacements de mot Cj, Cj+i de ladite mémoire à décalage et y inscrire le résultat d'une ou plusieurs additions correspondantes.
Sur la figure 1 , on a représenté l'emplacement de mot C0 (le registre) dans lequel s'inscrit le mot des poids faibles et, à l'opposé, l'emplacement de mot Cu dans lequel s'inscrit le mot des poids forts. On a en outre représenté deux emplacements de mot voisins de rang j et j+1. Ces deux emplacements sont ceux qui sont lus puis modifiés au cours d'un cycle j.
Les mémoires Ma, Mx des deux nombres sont reliées aux entrées du premier multiplieurlOO par l'intermédiaire de registres tampons 106, 107 de la taille d'un mot. Chaque registre peut donc accueillir le mot du nombre qui doit être multiplié par celui de l'autre nombre, à un moment donné. La sortie de ce même multiplieur est connectée à l'entrée d'un registre tampon 108 ayant la taille de deux mots. La sortie de ce registre tampon est reliée à l'une des entrées de l'additionneur 103. Le calculateur du coefficient Qj comprend un additionneur 102 qui reçoit à l'une de ses entrées le mot de poids faibles C0 contenu dans le registre correspondant de la mémoire à décalage et, à son autre entrée, le contenu d'un autre registre tampon 109 qui contient un mot appelé Low P-i calculé au début d'un cycle considéré (décrit plus loin) et constitué des bits de poids faibles du produit d'un mot X d'un premier nombre x, invariable dans un cycle, par le premier mot Ao d'un second nombre a dont tous les mots sont utilisés au cours de ce même cycle. Les bits de poids faibles retenus dans Low Pi forment un mot de ladite taille prédéterminée de x ou a. La sortie de l'additionneur 102 est reliée à l'entrée d'un registre tampon 110 dont la sortie est reliée à une entrée du second multiplieur! 01. Un autre registre tampon 111 est relié entre la mémoire Mm et l'autre entrée du second multiplieur101. Cette mémoire tampon 111 peut donc recevoir successivement chaque mot Mj de la mémoire Mm.
La sortie du second multiplieur101 est reliée à l'entrée d'un registre tampon 113 de la taille de deux mots et la sortie de ce registre est reliée à l'une des entrées de l'additionneur. Enfin, l'additionneur comporte une troisième entrée reliée à la mémoire à décalage 104. Deux mots consécutifs de cette mémoire peuvent être appliqués à cette troisième entrée. Les mots qui sont susceptibles d'être adressés à cette entrée de l'additionneur 103 sont les mêmes qui sont "pointés" par la sortie 105 de ce même additionneur.
En fonctionnement, l'additionneur 103 est programmé pour effectuer successivement l'addition du contenu du registre tampon 108 avec les deux mots Cj, Cj+ι considérés de la mémoire à décalage, le transfert du résultat aux mêmes emplacements de ladite mémoire, puis l'addition du contenu du registre tampon 113 avec les deux mots Cj, Cj+i modifiés de la mémoire à décalage. L'additionneur est classiquement agencé avec une mémoire de retenue Rt dans laquelle s'inscrit la retenue d'une addition donnée. Comme on le verra plus loin, selon les cas, cette retenue peut s'ajouter à l'addition en cours des deux mots. A la fin d'un cycle sur j, la retenue est inscrite dans le registre de poids forts Cu de la mémoire à décalage 104.
On va maintenant décrire le fonctionnement de l'unité de calcul de la figure 1 pour réaliser une multiplication modulaire au sens de Montgomery entre les deux nombres x et a, le module normalisé étant exprimé par m. On rappelle que les mots du nombre x sont notés X, les mots du nombre a sont notés Aj et les mots du normalisé module m sont notés Mj. Les mots inscrits dans la mémoire à décalage sont notés Cj. L'organigramme de la figure 2 décrit un cycle complet sur j dans lequel on utilise tous les mots Aj et tous les mots Mj pour modifier tous les mots de la mémoire à décalage 104, étant constant. La multiplication modulaire au sens de Montgomery n'est réalisée que lorsqu'on a effectué tous les cycles sur i exploitant tous les mots X\.
Au début d'un tel cycle sur i, on remet à zéro la mémoire de retenue Rt de l'additionneur 103 et on initialise un compteur j = 0 (étapes 115 et 116). On rappelle que les nombres x et a et le module m comportent u mots. A chaque début de cycle sur j, on effectue le test pour vérifier si j = u (étape 117).
Dans la négative, s'agissant d'un cycle sur X, le multiplieurlOO effectue le produit P-i = AjXi (étape 118).
Parallèlement, on effectue le test 119 pour vérifier si j = 0 (début de cycle). Si ce test est positif, on calcule (étape 120) un coefficient Qi, valable pour tout le cycle i, à l'aide du calculateur de coefficient de réduction principalement constitué de l'additionneur 102. Comme mentionné précédemment, ce coefficient Qi est constitué de la somme du premier mot Co (poids faibles) de la mémoire à décalage 104 au début du cycle et de la partie des bits de poids faibles du premier produit P-i qui vient d'être calculé, c'est-à-dire la moitié des bits du produit A0Xi.
Dès que la valeur de Qi pour le cycle est calculée, on peut aussi calculer le produit P2 = MjQi (étape 121 ).
Il est important de noter à ce stade que les calculs successifs des produits P*ι et P2 par les multiplieursIOO et 101 respectifs, qui prennent plus de temps que les additions qui doivent être effectuées par l'additionneur 103, peuvent être effectués "en parallèle", c'est-à-dire sensiblement en même temps.
Dès qu'un produit Pi est connu, on passe à l'étape 123 où l'additionneur 103 réalise la somme (add) entre la sortie du multiplieurlOO inscrite dans le registre 108 et les deux mots Cj+i, Cj pointés à ce stade par la sortie 105 de l'additionneur 103. Le contenu de la mémoire Rt (retenue de l'opération précédente) est également ajouté. Dès que la somme de cette triple addition est effectuée, elle est inscrite aux emplacements Cj+i, Cj de la mémoire à décalage 104. La retenue de cette addition Radd, qui ne peut être inscrite dans Cj+1 est inscrite dans la mémoire R. On passe ensuite à l'étape 124 où on réalise à nouveau une addition, dès que le produit P2 correspondant est connu, entre la valeur de ce produit et le double mot Cj+i, Cj inscrit dans la mémoire à décalage 104 à l'étape précédente. En revanche, on n'additionne pas la retenue. La nouvelle retenue Radd est ajoutée à la précédente et réinscrite dans la mémoire Rt. Les additions effectuées par l'additionneur 103 peuvent être effectuées en temps masqué pendant l'exécution des multiplications suivantes.
Par ailleurs, dès que les valeurs de Pi et P2 sont connues, on incrémente le compteur j d'une unité (étape 122) et on revient au test 117. Tant que la réponse à ce test j = u est négative, on effectue de nouveaux calculs de Pi et P2, ce qui entraîne l'inscription de nouvelles valeurs aux emplacements suivants de la mémoire à décalage 104, pointés par la sortie de l'additionneur .103.
Lorsque le test 117 devient positif, c'est-à-dire lorsqu'on arrive à la fin d'un cycle sur X, le contenu de la mémoire à décalage 104 est décalé d'un mot vers les bits de poids faibles, à l'étape 125 et la dernière valeur inscrite dans la mémoire Rt est reportée dans les bits de poids faibles de l'emplacement Cu (mot de poids fort de la mémoire à décalage 104) à l'étape 126. Le cycle i est terminé et on recommence un nouveau cycle avec le mot suivant. Lorsque tous les cycles ont été effectués, la mémoire à décalage contient le produit modulaire au sens de Montgomery des nombres x et a.
La variante de la figure 3 se distingue de l'unité de calcul décrite en référence à la figure 1 par la structure de l'additionneur et la façon dont celui-ci pointe la mémoire à décalage, mot par mot et non plus par groupe de deux mots. Tous les moyens de calcul des produits Pi et P2 qui s'inscrivent successivement dans les registres 108 et 113 sont identiques à ceux de la figure 1 et ne seront donc pas décrits à nouveau. La mémoire 104 est également identique à la différence près qu'elle est "pointée" mot par mot, c'est-à-dire que l'additionneur ne lit chaque fois qu'un mot de la mémoire à décalage et ne modifie que ce même mot à l'issue d'une phase de calcul.
Cependant, selon la variante, les contenus des registres tampons 108 et 113 sont traités différemment en ce sens que le produit Pi est partagé en deux mots, un mot Li contenant les bits de poids faibles et un mot H*ι contenant les bits de poids forts. De même, le produit P2 est partagé en deux mots, un mot L2 contenant les bits de poids faibles et un mot H2 contenant les bits de poids forts. Le mot de la mémoire 104 pointé à un moment donné par l'additionneur 103 est noté Cj. Ces différents mots sont adressés à un ensemble 112 de cinq registres d'entrée de l'additionneur formant "file d'attente". Cependant, comme on le verra plus loin en référence à la figure 4, les mots L-i, L2 (poids faibles) d'un cycle j sont additionnés avec le mot Cj de la mémoire registre mais avec les mots H-i et H2 du cycle j-1. Ceci est explicité par l'organigramme de la figure 4.
Au début d'un cycle de traitement à Xi constant, on initialise (étape 130) un compteur j = 0, la retenue Rt est mise à zéro ainsi que les valeurs H-i et H2 contenues dans les registres 108 et 113.
On passe alors à un test 131 pour vérifier si j=u. Dans la négative, on commence à calculer la valeur du produit Pi (étape 132) constituant le produit de Aj par X, ce qui permet d'inscrire dans le registre 108 les valeurs correspondantes de L-i et H*|. Dans le même temps, on effectue le test 133, sur j, pour vérifier si j = 0. Si c'est le cas, on passe à l'étape 134 où on calcule la valeur de Qi pour le cycle i comme dans l'exemple précédent. Ce calcul peut être effectué dès que la valeur de Li du produit AoXi est connue à l'étape 132.
Dès lors et pour toutes les valeurs de j suivantes, il est possible de calculer (étape 135) la succession des produits P2, c'est-à-dire d'obtenir les valeurs L2 et H2 qui s'inscrivent dans le registre 113. Comme précédemment, les produits L-i, Hi et L2, H2 peuvent être calculés "en parallèle" indépendamment du fonctionnement de l'additionneur 103.
Concernant ce dernier, à chaque test 133 négatif, les valeurs actuelles de L-i et L2 sont mises à jour (étape 136) pour l'additionneur 103, c'est-à-dire que les mots L-i et L2 contenus dans les registres 108 et 113 sont transférés dans les registres correspondants de l'ensemble 112, les mots H-i et H2 étant conservés. Ceux-ci sont donc mis à jour mais pas les registres de l'ensemble 112 contenant H** et H2 calculés au cycle précédent. On passe alors à une addition à l'étape 137 qui consiste à faire la somme des valeurs inscrites dans l'ensemble 112 alimentant l'additionneur 103, c'est-à- dire Cj, les valeurs L-i et L2 du cycle j, les valeurs H-i et H2 du cycle précédent et la valeur inscrite dans la mémoire Rt. Le résultat est réinscrit à l'emplacement Cj de la mémoire à décalage et la retenue Radd de cette addition est inscrite dans la mémoire Rt.
On passe ensuite à l'étape 138 où les valeurs actuelles de H*ι et H2 sont mises à jour, c'est-à-dire que les mots H-i et H2 contenus dans les registres 108 et 113 sont transférés dans les registres correspondants de l'ensemble 112.
On incrémente le compteur j d'une unité à l'étape 139 et on retourne au test 131 où les mêmes opérations sont renouvelées pour le cycle j + 1.
Lorsque le test 131 devient positif, on passe à l'étape 140 où on calcule la valeur de Cu de façon analogue à un calcul de Cj (étape 137) mais sans tenir compte de L-i et L2, c'est-à-dire en additionnant Cu, H-i, H2 et Rt, la retenue de cette addition Ra d est inscrite dans Rt. A l'étape 141 , le contenu de la mémoire à décalage 104 est décalé d'un mot vers les bits de poids faibles. A l'étape 142, la dernière valeur inscrite dans la mémoire Rt est reportée à l'emplacement Cu (bits de poids forts) de la mémoire à décalage 104. Le cycle i est terminé et on recommence un nouveau cycle avec le mot Xi suivant.
On peut envisager encore d'autres variantes.
Notamment, on pourrait n'utiliser qu'un seul multiplieur qui serait programmé pour réaliser une première série de calculs dans la boucle j pour calculer par exemple tous les Aj X puis une seconde série de calculs dans une autre boucle j, cette fois pour calculer tous les Qi.irij.
De plus il est à noter que les mots des nombres a, x, m et c peuvent être de tailles différentes ; la mise en œuvre de l'invention reste possible.

Claims

REVENDICATIONS
1. Procédé de cryptographie incluant le calcul d'une multiplication modulaire au sens de Montgomery (*) entre deux nombres (x, a), caractérisé en ce qu'on exprime lesdits nombres et un module (m) en mots, on stocke lesdits mots dans des mémoires correspondantes et on définit une mémoire à décalage où on accumule par mots des résultats de cycles de multiplication et addition entre mots, jusqu'à obtenir le résultat de ladite multiplication modulaire inscrit dans ladite mémoire à décalage, en ce que, pour chaque mot (Xi) de la succession de mots d'un premier nombre précité, on accomplit le cycle d'opérations consistant :
- à calculer pour tout le cycle (i) considéré un mot dit coefficient de réduction (Qi)
- à multiplier ledit mot (X) dudit premier nombre correspondant audit cycle (i) chaque fois par l'un des mots (Aj) constituant ledit second nombre pour obtenir une succession de premiers résultats intermédiaires,
- à multiplier ledit coefficient de réduction (Qi) correspondant audit cycle (i) chaque fois par l'un des mots (Mj) constituant ledit module pour obtenir une succession de seconds résultats intermédiaires, et - à additionner lesdits premiers et seconds résultats intermédiaires, aux mots de mêmes rangs déjà contenus dans ladite mémoire à décalage et, à la fin de chaque cycle (i), à décaler d'un mot vers les bits de poids faibles le contenu de ladite mémoire à décalage.
2. Procédé selon la revendication 1 , caractérisé en ce qu'un tel coefficient de réduction (Qi) est constitué de la somme dudit premier mot contenu dans ladite mémoire à décalage avec les bits de poids faibles du produit du premier mot (Ao) d'un second nombre précité par le mot (X) dudit premier nombre considéré dans ledit cycle.
3. Procédé selon la revendication 1 ou 2, caractérisé en ce qu'on effectue les deux multiplications de mots (X Aj, QjMj) sensiblement en même temps.
4. Procédé selon l'une des revendications précédentes, caractérisé en ce qu'il consiste, pour chaque cycle, à additionner un résultat intermédiaire précité au mot de même rang et au mot de rang immédiatement supérieur contenus dans ladite mémoire à décalage, à réinscrire les résultats de ces additions à ces mêmes rangs de ladite mémoire, puis à recommencer ces opérations avec l'autre résultat intermédiaire, jusqu'à la fin dudit cycle comprenant le décalage d'un mot précité.
5. Procédé selon la revendication 4, caractérisé en ce qu'il consiste, au cours d'un même cycle, à reporter de mot en mot les retenues des additions précitées et, à la fin d'un cycle, à reporter la dernière retenue dans les bits de poids faibles du mot de poids forts (Cu) de ladite mémoire à décalage.
6. Procédé selon l'une des revendications 1 à 3, caractérisé en ce qu'il consiste pour chaque cycle à partager chaque résultat intermédiaire en deux groupes rassemblant respectivement les bits de poids faibles et les bits de poids forts, à mémoriser temporairement ces groupes, à ajouter, au fur et à mesure, à la valeur de chaque mot de ladite mémoire à décalage les groupes rassemblant les bits de poids faibles de même rang (j) et les groupes rassemblant les bits de poids forts du rang immédiatement inférieur (j-1), et à reporter le résultat de ces additions, chaque fois, à l'emplacement du mot (j) considéré de ladite mémoire à décalage, jusqu'à la fin dudit cycle comprenant le décalage d'un mot précité.
7. Entité électronique comprenant des moyens de cryptographie incluant une unité de calcul d'une multiplication modulaire, au sens de Montgomery, entre deux nombres, caractérisée en ce que ladite unité de calcul comprend :
- trois mémoires dimensionnées pour recevoir respectivement lesdits nombres (a, b) et un module (m), chacun exprimé en mots de taille prédéterminée dans la mémoire correspondante, - une mémoire à décalage (104) dimensionnée pour recevoir le résultat de ladite multiplication modulaire et agencée pour décaler son propre contenu, chaque fois par mot de taille prédéterminée dans la direction des bits de poids faibles,
- un premier multiplieur (100) pour faire des produits successifs de deux mots respectivement lus dans les mémoires des deux nombres,
- un calculateur (102) d'un coefficient de réduction déterminé au début d'un cycle de multiplications des mots d'un nombre par un mot de l'autre, - un second multiplieur (101) pour faire des produits successifs d'un mot dudit coefficient de réduction par un mot lu dans la mémoire dudit module, et
- un additionneur (103) connecté, en entrée, entre les sorties desdits premier et second multiplieurs et ladite mémoire à décalage et connecté, en sortie, à ladite mémoire à décalage en adressant directement des mots sélectionnés de celle-ci.
8. Entité électronique selon la revendication 7, caractérisée en ce que ledit additionneur (103) est un additionneur double agencé pour réaliser une première addition entre un résultat intermédiaire élaboré par ledit premier multiplieur et deux mots voisins (Cj, Q+i) de rangs correspondants de ladite mémoire à décalage et pour reporter le résultat aux deux emplacements de mot correspondants de celle-ci, puis pour réaliser une seconde addition semblable à partir du résultat intermédiaire élaboré par ledit second multiplieur et pour reporter le résultat aux mêmes deux emplacements de mot correspondants de ladite mémoire à décalage.
9. Entité électronique selon la revendication 7, caractérisée en ce qu'elle comporte des registres tampons (108, 113) interposés entre lesdits multiplieurs et ledit additionneur.
10. Entité électronique selon la revendication 9, caractérisée en ce que lesdits registres tampons sont agencés pour recevoir séparément les parties de poids faibles et les parties de poids forts des deux multiplieurs, l'additionneur étant agencé pour reporter le résultat à un emplacement de mot correspondant de ladite mémoire à décalage.
PCT/FR2003/001258 2002-04-30 2003-04-18 Multiplication au sens de montgomery WO2003093973A1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2003265508A AU2003265508A1 (en) 2002-04-30 2003-04-18 Montgomery multiplication

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR02/05442 2002-04-30
FR0205442A FR2842051B1 (fr) 2002-04-30 2002-04-30 Procede de cryptographie incluant le calcul d'une multiplication modulaire au sens de montgomery et entite electronique correspondante

Publications (1)

Publication Number Publication Date
WO2003093973A1 true WO2003093973A1 (fr) 2003-11-13

Family

ID=29286327

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2003/001258 WO2003093973A1 (fr) 2002-04-30 2003-04-18 Multiplication au sens de montgomery

Country Status (3)

Country Link
AU (1) AU2003265508A1 (fr)
FR (1) FR2842051B1 (fr)
WO (1) WO2003093973A1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020012104A1 (fr) * 2018-07-10 2020-01-16 Commissariat A L'energie Atomique Et Aux Energies Alternatives Circuit de génération de facteurs de rotation pour processeur ntt

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
ABE M ET AL: "HIGHER RADIX NONRESTORING MULTIPLICATION ALGORITHM AND PUBLIC-KEY LSI ARCHITECTURE WITH LIMITED HARDWARE RESOURCES", ADVANCES IN CRYPTOLOGY - ASIACRYPT '94. 4TH. INTERNATIONAL CONFERENCE ON THE THEORY AND APPLICATIONS OF CRYPTOLOGY, WOLLONGONG, AUSTRALIA, NOV. 28 - DEC. 1, 1994. PROCEEDINGS, PROCEEDINGS OF THE CONFERENCE ON THE THEORY AND APPLICATIONS OF CRYPTOLOGY, vol. CONF. 4, 28 November 1994 (1994-11-28), pages 365 - 375, XP000527604, ISBN: 3-540-59339-X *
ITOH K ET AL: "FAST IMPLEMENTATION OF PUBLIC-KEY CRYPTOGRAPHY ON A DSP TMS320C6201", CRYPTOGRAPHIC HARDWARE AND EMBEDDED SYSTEMS. 1ST INTERNATIONAL WORKSHOP, CHES'99. WORCESTER, MA, AUG. 12 - 13, 1999PROCEEDINGS, LECTURE NOTES IN COMPUTER SCIENCE, BERLIN: SPRINGER, DE, vol. 1717, 12 August 1999 (1999-08-12), pages 61 - 72, XP000989323, ISBN: 3-540-66646-X *
J-F DHEM: "Design of an efficient public-key cryptographic library for RISC-based smart cards", THESE SOUTENUE EN VUE DE L'OBTENTION DU GRADE DE DOCTEUR EN SCIENCES APPLIQUEES, FACULTÉ DES SCIENCES APPLIQUÉES, LABORATOIRE DE MICROÉLECTRONIQUE, May 1998 (1998-05-01), UCL , Louvain-la-Neuve, B, XP002212065, Retrieved from the Internet <URL:http:users.belgacom.net/dhem/these/these_public.pdf> [retrieved on 20010830] *
ORUP H: "SIMPLIFYING QUOTIENT DETERMINATION IN HIGH-RADIX MODULAR MULTIPLICATION", PROCEEDINGS OF THE 12TH. SYMPOSIUM ON COMPUTER ARITHMETIC. BATH, JULY 19 - 21, 1995, PROCEEDINGS OF THE SYMPOSIUM ON COMPUTER ARITHMETIC, LOS ALAMITOS, IEEE COMP. SOC. PRESS, US, vol. SYMP. 12, 19 July 1995 (1995-07-19), pages 193 - 199, XP000548650, ISBN: 0-7803-2949-X *
WALTER C D: "SYSTOLIC MODULAR MULTIPLICATION", IEEE TRANSACTIONS ON COMPUTERS, IEEE INC. NEW YORK, US, vol. 42, no. 3, 1 March 1993 (1993-03-01), pages 376 - 378, XP000364332, ISSN: 0018-9340 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020012104A1 (fr) * 2018-07-10 2020-01-16 Commissariat A L'energie Atomique Et Aux Energies Alternatives Circuit de génération de facteurs de rotation pour processeur ntt
FR3083885A1 (fr) * 2018-07-10 2020-01-17 Commissariat A L'energie Atomique Et Aux Energies Alternatives Circuit de generation de facteurs de rotation pour processeur ntt

Also Published As

Publication number Publication date
FR2842051A1 (fr) 2004-01-09
FR2842051B1 (fr) 2005-02-18
AU2003265508A1 (en) 2003-11-17

Similar Documents

Publication Publication Date Title
EP0443679B1 (fr) Procédé de calcul d&#39;une opération du type A.X modulo N, dans un procédé de codage selon une méthode de type RSA
EP0712072B1 (fr) Procédé de mise en oeuvre de réduction modulaire selon la méthode de Montgomery
EP0046708B1 (fr) Circuit de traitement numérique en arithmétique distribuée utilisant des multiplexeurs à l&#39;entrée d&#39;une mémoire
EP0712071B1 (fr) Procédé de mise en oeuvre de multiplication modulaire selon la méthode de montgomery
FR2822260A1 (fr) Procedes et dispositifs pour accelerer le temps de calcul d&#39;un produit de montgomery d&#39;un multiplication et d&#39;une exponentiation modulaire
FR2974201A1 (fr) Circuit de multiplication de montgomery
FR2974202A1 (fr) Procede de multiplication de montgomery
FR2849512A1 (fr) Multiplieur modulaire de montgomery et procede de multiplication correspondant
EP0793165B1 (fr) Coprocesseur d&#39;arithmétique modulaire permettant de réaliser rapidement des opération non modulaires
EP0536062A2 (fr) Procédé et circuit de traitement de données par transformée cosinus
EP0476592A2 (fr) Générateur d&#39;adresses pour la mémoire de données d&#39;un processeur
EP0785503B1 (fr) Procédé de production d&#39;un paramètre de correction d&#39;erreur associé à la mise en oeuvre d&#39;opérations modulaires selon la méthode de Montgomery
EP0939362A1 (fr) Coprocesseur d&#39;arithmétique modulaire permettant de réaliser des opérations non modulaires rapidement
EP0939363A1 (fr) Procédé de mise en oeuvre d&#39;une multiplication modulaire selon la méthode de Montgoméry
EP0286489B1 (fr) Procédé et contrôleur pour cryptographier un message selon un algorithme à clé publique
WO2003093973A1 (fr) Multiplication au sens de montgomery
EP1125205A1 (fr) Memoire a acces vectoriel
EP0784262B1 (fr) Dispositif et procédé améliorant la vitesse de traitement d&#39;un coprocesseur d&#39;arithmétique modulaire
EP0254628B1 (fr) Circuit de traitement numérique de signal réalisant une transformation cosinus
CA2359198C (fr) Unite de calcul pour l&#39;execution d&#39;un protocole cryptographique
EP0329545B1 (fr) Dispositif pour le calcul des bits de parité d&#39;une somme de deux nombres
EP0329572B1 (fr) Multiplieur de nombres binaires à très grand nombre de bits
EP0704794A1 (fr) Dispositif de calculs d&#39;opérations modulaires et carte à puce comportant un tel dispositif
EP0902359B1 (fr) Procédé et dispositif de production d&#39;une division entière avec un coprocesseur d&#39;arithmétique modulaire
FR2818407A1 (fr) Procede et appareil pour calculer une reciproque

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NI NO NZ OM PH PL PT RO RU SC SD SE SG SK SL TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP