WO2003093974A2 - Procede de multiplication modulaire - Google Patents

Procede de multiplication modulaire Download PDF

Info

Publication number
WO2003093974A2
WO2003093974A2 PCT/FR2003/001367 FR0301367W WO03093974A2 WO 2003093974 A2 WO2003093974 A2 WO 2003093974A2 FR 0301367 W FR0301367 W FR 0301367W WO 03093974 A2 WO03093974 A2 WO 03093974A2
Authority
WO
WIPO (PCT)
Prior art keywords
multiplication
registers
module
cryptoprocessor
multiplier circuit
Prior art date
Application number
PCT/FR2003/001367
Other languages
English (en)
Other versions
WO2003093974A3 (fr
Inventor
Jean-François DHEM
Original Assignee
Gemplus
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 Gemplus filed Critical Gemplus
Priority to AU2003265535A priority Critical patent/AU2003265535A1/en
Publication of WO2003093974A2 publication Critical patent/WO2003093974A2/fr
Publication of WO2003093974A3 publication Critical patent/WO2003093974A3/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros

Definitions

  • the invention relates to the field of cryptography and more particularly to public key cryptosystems.
  • someone wishing to send a message, takes cognizance beforehand of a public key attached to the recipient to whom he is going to address it. It encrypts the message using this public key and transmits it. The recipient, after receipt, can decrypt the message and find the original document using their private key.
  • a document is signed by coding it using his private key and the signature is presented with the initial document.
  • the recipient verifies the signature using the public key associated with the issuer's private key.
  • DSS Digital Signature Standard
  • c is the remainder of the division of m e by n.
  • Formula (1) is therefore expressed algebraically as follows: which amounts to a binary calculation of the type
  • a portable electronic device such as a microprocessor card, constituting a cryptographic card
  • the card includes a crypto-processor which is a specialized calculation unit, which can essentially multiply, in binary form, large numbers such as
  • A, B, Q, N for example 1024 bits, between them, according to modular multiplication algorithms in multiprecision such as those proposed by Barrett, Implementing the Rivest
  • modular multiplication is meant a multiplication phase decomposable into two sub-phases, one of partial multiplication of two operands A, B and the other of partial reduction by the product of two other operands Q, N according to the law indicated by the formula (2).
  • the operands A and B are split into p words Ai and p words B j of t bits each during processing in the cryptoprocessor which is typically a t bit processor
  • Formula (3) is algebraically exact although the operands A and B are obtained from Ai and Bj respectively by simple concatenation, usually noted px I p _ 2
  • One way of increasing the speed of calculation of a processor is to design it according to a parallel architecture, the information buses connecting the memories and the arithmetic and logical units comprising as many bits as the numbers subjected to the calculations.
  • the number of bits here being 1024, this design is not possible.
  • Cryptoprocessor designers can adopt multipliers that require intermediate normalization and denormalization operations. But it costs in execution time in a non negligible way.
  • Another matter of increasing the speed of calculation of a processor is to design it specifically for the operations that are asked of it.
  • the invention firstly relates to a method for carrying out a modular multiplication phase of two operands in multiprecision, the multiplication phase being composed of at least two sub-phases, one of partial multiplication, the other of partial reduction, a process characterized by the fact that the two sub-phases are interleaved and use the same multiplier circuit.
  • the multiplier circuit performs simultaneously a multiplication and two additions.
  • each sub-phase includes a step of loading one of the input registers of the multiplier circuit for the subsequent equivalent sub-phases. These steps load registers containing partial computation results of higher binary weights to propagate the effect on subsequent computations.
  • each sub-phase retrieves these same input registers loaded for the previous equivalent sub-phases to perform its calculations.
  • the operations of loading and unloading the registers of the multiplier circuit from and to the memory module of the cryptoprocessor, and the control-command operations of the multiplier circuit are controlled by pseudo-code software comprising macrocommands and pseudo- instructions .
  • the invention also relates to a cryptoprocessor for implementing the method of the invention, comprising a multiplication function, a memory module, a memory module multiplication with registers, and a multiplier circuit, characterized in that it also comprises multiplexers connecting the registers to the multiplier circuit.
  • a cryptoprocessor for implementing the method of the invention, comprising a multiplication function, a memory module, a memory module multiplication with registers, and a multiplier circuit, characterized in that it also comprises multiplexers connecting the registers to the multiplier circuit.
  • the multiplier circuit is designed to perform an operation of the XY + Z + C type.
  • the multiplier circuit is of the parallel type, comprises an intersection matrix, a matrix of partial products and a matrix of adders, characterized by the fact that the matrix of partial products comprises two additional registers. These two registers make it possible to add the inputs Z and C by the multiplier's adder matrix.
  • the cryptoprocessor comprises a pseudo-code memory and an interpreter.
  • the pseudo-code memory can include pseudo-instructions for loading / unloading the registers and macro-commands for controlling the multiplier circuit and the multiplexers.
  • FIG. 1 shows the continuation of the operations of the modular multiplication method of the invention
  • FIG. 2 represents the structure by functional blocks of the cryptoprocessor according to the invention
  • - Figure 3 is an electronic diagram of the multiplication module
  • - Figure 4 is a logic diagram of the multiplication module
  • - Figure 5 is an electronic diagram of the multiplication circuit XY + C 4- Z;
  • - Figure 6 shows the operations performed in a sub-phase by the multiplication module and - Figure 7 is an example of pseudo-code performing modular multiplication.
  • loop j When the cryptoprocessor needs to carry out a modular multiplication modulo N of two operands A and B, it can apply the algorithm (5) above, in particular the internal loop of this algorithm, designated here by the name loop j, this p times in another external loop designated by loop i. In loop j, it must then cause its multiplier to execute a multiplication giving a partial resulting product Ai Bj shifted by jt bits "to the left", that is to say to the most significant bits to which it adds a result previous partial U, and a second multiplication giving a result Q.Nj shifted by (j + l) .t bits "to the left” which it adds to the previous result. Nj, is the ith word of the complement to 2 of N increased by
  • FIG. 1 shows the rest of the operations of the algorithm (5) and the corresponding memory exchanges.
  • the initialization of the working variable U of p words of t bits, corresponding to the lines (1) to (4) of the algorithm (5), is carried out during a first step 20 iterated by a loop marked “initialization U "to give the words of the result sought at the end of the algorithm and stored in a register 172 of the cryptoprocessor.
  • This calculation is carried out from the word A p _ ⁇ and the words Bp_ ⁇ ... Bo, these words being extracted from the registers 174 and 175 of the cryptoprocessor containing the numbers A and B of p words of t bits.
  • the loop i line (5) is launched between steps 21 and 21 'to
  • step 22 of lines (6) and (7) execute the calculation, step 22 of lines (6) and (7), in initialization of the loop j from which results an intermediate variable Q which is stored in a register 171 of the cryptoprocessor,
  • the numbers A, B, and N and a result number U are fragmentable in the memory of the cryptoprocessor in p words of t bits Ai, Bj, Nj and Uj numbered from 0 to pl, as indicated in 171, 172, 173, 174 and 175.
  • step 40 First reduction sub-phase, in step 40 with an XY + C + Z type multiplication for a reduction in temporary result U, in which the multiplier simultaneously performs the following operations:
  • the cryptoprocessor 100 comprises an input 101 of message m to be encrypted, or of message c to be decrypted, an output 102 of message c encrypted or of message m decrypted, a memory 103 of the public parameters P of encryption: the modulo n and the exponent, d or e.
  • This multiplication function 120 includes at least one pseudo-code memory 125 containing a list of pseudo-instructions PI and macrocommands MC to be executed, described later in the document, and corresponding to the multiplication function and an ordinal counter 126 for transmitting in the order of the list the pseudo-instructions PI and the macrocommands MC to a pseudo-code interpreter 130, which is also connected to memories 131 and 132 respectively containing the executable code of the macrocommands MC of a multiplication module 150 describes below and the executable code of the pseudo-instructions PI, essentially for controlling the movement of data from a module 140 of shift registers, described also below.
  • the interpreter 130 is connected to said multiplication module 150 by the electronic links 136 for controlling the module and to said module 140 by the links 143 for checking the registers and the link 142 U for transmitting the partial results Uj.
  • the interpreter 130 optionally includes in a particular design option ⁇ a quotient calculation function Q 135 connected to said shift register module by an input 142N and an output 144 of the quotient calculation module.
  • the multiplication function is connected to the module 140 of shift registers by a data bus 141 transmitting the data A, B, N to the module 140.
  • the multiplication modules 150 and shift registers 140 are connected to each other by data buses 152.
  • a clock 160 cadences the ordinal counter 126, the interpreter 130, the multiplication modules 150 and shift registers 140.
  • the multiplication module 150 comprises a multiplier circuit 1500 with four parallel inputs X, Y, Z, C connected to the inputs A, N, B, Q, respectively by parallel buses 151A, 151B, 153 and to an output 152 by a parallel bus (U), via the registers of multiplexers and demultiplexers described below.
  • the bus A (151A) feeds registers A0 (32 bits), R RSU B (4 bits), RBN0 (32 bits), RBN1 (32 bits), RUO (32 bits ) and RUl (32 bits).
  • registers supply the inputs Y of the multiplier circuit with a multiplexer MUX2, for A0, Z of the multiplier circuit with a multiplexer MUXl for RUO and RUl, and X of the multiplier circuit by a DEMUX demultiplexer for RBN1, and directly for RBNO and R RSUB - Bus B (151B) supplies Al, itself supplying a MUX2 multiplexer, as does bus Q (153) supplies, depending on the option of GD design, registers Q0 and Ql, themselves supplying the MUX2 demultiplexer.
  • part of an output bus O of circuit 1500 also feeds shift registers ROI to R03 while 66 other bits of register O [35 .. 100] feed the registers Q0 and Ql.
  • the multiplier circuit 1500 supplies the bus O of 102 bits, a part h or g of this bus, respectively O [34..101] and O [32..97] supplying the two registers R0 and RI, through the demuxer DEMUX1, the registers RI serving for the calculation of multiplication and R0 serving for the calculation of reduction being connected in loopback on the input C of the multiplier circuit 1500 through the multiplexer MUXO , another part of the bus O composed of its 32 LSB O [0..31], supplying on the one hand the output bus 152 (U) through registers Rkl and RkO, and on the other hand of the register Rtemp composed registers RtO and Rtl used to benefit from the reduction calculation to carry out the multiplication calculation and, through them, the multiplexer MUXl in loopback on the input Z of the multiplier circuit 1500.
  • the electronic links 136 are connected: 1) to the Rtemp register by a reset command (RESET),
  • the registers 173, 174 and 175 are supplied by the multiplication function 120 by means of the buses A, B, N of the link 141, and themselves supply the buses A and B under the control of drivers 147, 148 and 149 respectively. on registers 173, 174 and 175.
  • the drivers 147, 148 supply the bus 151A with data and the driver 149 supplies the bus 151B, the three being controlled by the interpreter 130 through a link 143, in phase with the signal d 'clock.
  • the module 140 receives from the multiplication module 150 the result of the calculation by the bus 152 (U) through the driver 146, which result is stored in the register 172 before being retransmitted on the bus 151A to the module 150, ie under fractional form, that is to say totally, under the control of driver 146 and on bus 142 U, only in the case of the design option ⁇ towards interpreter 130, at the same time as N of the shift register 173 through the driver 147 under the command of the interpreter 130.
  • a data item Q stored in a register 171 can be retransmitted to the multiplication module 150 through the bus 153 (Q) by a driver 145 under the interpreter command.
  • the drivers of the module 140 have here two functions:
  • the driver 146 also manages the bus 152 for receiving the result U and 142U for returning the result U to the interpreter, the driver 147 also manages the bus 142 N for returning N to the interpreter for the calculation of Q.
  • a first operation is performed between the operands X and Y of tl and t2 bits respectively, tl being assumed to be greater than t2, stored in registers 1501 and 1502, an operation which is an intersection bitwise logic between the two operands according to a matrix 1510 of "AND" circuits to give the table of partial products 1520 composed of t2 registers of tl bits marked 1 to l t2 + ⁇ -
  • registers contain the other two inputs Z and C of the word multiplier circuit of tl and t2 bits respectively so that, for example, X, Z ⁇ 2 t and Y,
  • the table of partial binary products 1520 must give rise to a sum carried out by a matrix 1530 of adders such as the adder 1531 with three inputs l k u + ⁇ , l k u r k_1 u and with two outputs s k u and r k u , k being the rank of the bit of the line l u processed, l u the value of the bit to be added, s u the sum bit and r k u the bit retained. How it works is well known.
  • the result is obtained in a register 1540 and comprises t ⁇ + t 2 - 1 bits.
  • the pseudo-instructions provided to order the drivers for module 140 are as follows:
  • MTA [Rs], [Rt] This instruction loads the registers [Rs] and [Rt] (Ai, Ai-i) from register 175 into registers A0 and Al of module 150.
  • MTU [Rt], [Rs] loads registers 172 (Rs) into registers RUO and RUl of module 150 (Rt)
  • SW - - [Rs], [Rt] according to incrementation or decrementation, instruction allowing to unload R s in Rt, symmetrically with the instructions LW.
  • Connection instructions equivalent to the following C language instruction sequences ble t2, t7, internal (branch if less than) addiu t2, t2, imm (immediate value) and: bgz t2, internal addiu t2, t2, -imm Macrocommands MC provided for controlling the multiplication module 150 are as follows:
  • the registers RkO - Rkl contain the result which is sent by the bus U (link 152) in the memory module 140, registers 172 (U0, Ul) from which it is returned as a partial result by the link 142 U to the interpreter 130, then to the multiplication function 125 on the one hand and to the function 135 according to a first design option ⁇ .
  • MULTEXQK (RBNO of module 150 contains NO / Nj of register 173 and RtO contains the word LSB result of macro command immediately preceding in the pseudo-code list 125). Same operations as MULTEXQT but by substituting: RtO to RUO RkO to RtO Rtl to RUl Rkl to Rtl and noting that before the second multiplication Rtl contains the word MSB result of an immediately preceding macro-command in the pseudo-code list 125.
  • MULTEXAT identical to MULTEXQT, in which we substitute A for Q, RI for RO and B for N.
  • MULTEXAK identical to MULTEXQK, in which we substitute A for Q, RI for RO and B for N.
  • MULTEXT performs a 68 x 68 bit multiplication as follows:
  • the RS parameter also makes it possible to carry out an offset of Rs bits from the bits stored in the registers R00 - R03.
  • the application 110 transmits these parameters by the bus
  • the multiplication function 120 which transmits, with a rate determined by the clock 160 and in an order corresponding to that imposed by the ordinal counter 126, the pseudo-instructions PI on the registers of the shift register module 140 and the macrocommands MC from the multiplication module 150 to the interpreter 130, while the pseudo-instructions affecting the connection function of the ordinal counter are looped back to the ordinal counter itself.
  • the interpreter 130 executes the pseudo-instructions PI and the macro commands MC that it receives, and in the same order, using memories 131 and 132 containing their interpretation in machine language.
  • the modular multiplication of the internal loop is executed in two sub-phases, one of partial reduction by MULTEXQT, one of partial multiplication by MULTEXAK, each of a duration which can be of two cycles.
  • the multiplier circuit 150 is used alternately for the modular product QNj and for the modular product Ai Bj and, depending on the case, Ai or Q is loaded (Al
  • RkO are then sent via the bus channel 152 (U) to the memory module 140 to be concatenated there with the previous partial results and, at the end of complete concatenation, supply the result AB modulo N to the encryption application 110 by the link 122 .
  • the operand Y of the multiplication circuit 1500 receives, according to the A / Q command applied to the multiplexer MUX2 the binary data of l one of the two registers of 64 bits for (A1 / A0) and of 66 bits for (Q1 / Q0), registers which are loaded from the module 140 simultaneously with the execution of a sub-phase.
  • the operand X receives either Bj or Nj (B0 or N0 and Bl or NI) of 32 bits except in the particular case where the demultiplexer DEMUX is active.
  • Operand C receives either RI or R0, always according to the A / Q command, while operand Z alternately receives the LSB part of a previous multiplication Uj (Rtl / RtO) and the partial result of a previous loop j (RUl / RUO) according to the command t / U, of the link 136, applied to the multiplexer MUXl.
  • the loop j line (10) of the algorithm (5), the macro command MULTEXQT is executed while
  • the MSB part of the result is stored in the TmpAl register One thus obtains the result of calculation of the internal loop j. Then it suffices to unwind this internal loop p times, this time varying the index i.

Landscapes

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

Abstract

L'invention concerne un procédé pour effectuer une phase de multiplication modulaire de deux opérandes (A, B) en multiprécision, la phase de multiplication étant composée d'au moins deux sous-phases, l'une de multiplication partielle, l'autre de réduction partielle, procédé caractérisé par le fait que les deux sous-phases sont entrelacées et font appel à un même circuit multiplieur (150). Le cryptoprocesseur comprend une fonction de multiplication (120), un module mémoire (140), un module de multiplication (150) avec des registres (A, Q, R0, R1, RU0, RU1, Rt0, Rt1, Rk0, Rk1) et un circuit multiplieur, caractérisé par le fait qu'il comprend aussi des multiplexeurs (MUX0, MUX1, MUX2) reliant les registres au circuit multiplieur.

Description

PROCEDE POUR EFFECTUER UNE PHASE DE MULTIPLICATION MODULAIRE DE DEUX OPERANDES EN MULTIPRECISION ET CRYPTOPROCESSEUR POUR LA MISE EN ŒUVRE DU PROCEDE
L'invention concerne le domaine de la cryptographie et plus particulièrement les cryptosystèmes à clé publique.
Ces systèmes sont utilisés lorsqu'il s'agit de communiquer des données que l'on souhaite conserver confidentielles ou que l'on souhaite authentifier par une signature .
Selon un exemple de chiffrement, quelqu'un, souhaitant émettre un message, prend connaissance au préalable d'une clé publique attachée au destinataire à qui il va l'adresser. Il chiffre le message au moyen de cette clé publique et le transmet. Le destinataire, après réception, peut déchiffrer le message et retrouver le document initial en utilisant sa clé privée.
Selon un autre exemple de signature, on signe un document en le codant au moyen de sa clé privée et on présente la signature avec le document initial . Le destinataire vérifie la signature en utilisant la clé publique associée à la clé privée de l'émetteur.
Des systèmes permettant ces opérations sont maintenant bien connus. Par exemple, on connaît le crypto-système RSA développé par R. Rivest, A. Shamir et L. Adleman. On en trouve une présentation complète dans le brevet US 4 405
829 déposé à leurs noms.
On connaît d'autres types de cryptosystèmes, à base de calculs logarithmiques discrets, tels que le système DSS (Digital Signature Standard) , proposé et publié par le "Department of Commerce" des Etats-Unis d'Amérique.
Le procédé de cryptographie de type RSA, par exemple, consiste, à partir de paramètres publics e, n, à transformer un message m en un message chiffré c calculé à partir du message m selon la formule c = me modulo n (1) compte-tenu du fait qu'on retrouve le message m, ou on en authentifie l'émetteur, à partir de la reconnaissance de c selon une formule inverse similaire : m = cd modulo n Dans la formule (1) , c est le reste de la division de me par n. La formule (1) s'exprime donc algébriquement de façon suivante :
Figure imgf000004_0001
ce qui revient à un calcul binaire du type
U = A. B - N.Q (2) correspondant à
U = A.B modulo N (2bis)
Pour procéder à ces opérations, on utilise notamment un dispositif électronique portable, tel qu'une carte à microprocesseur, constituant une carte cryptographique. La carte comprend un crypto-processeur qui est une unité de calcul spécialisée, pouvant, pour l'essentiel, multiplier, sous forme binaire, des grands nombres tels que
A, B, Q, N par exemple de 1024 bits, entre eux, selon des algorithmes de multiplications modulaires en multiprecision tels que ceux proposés par Barrett, Implementing the Rivest
Shamir and Adleman public key encryption algorithm on a standard digital signal processor, In Advances in
Cryptology - CRYPTO' 86, Santa Barbara, California (edited by A. M. Odlyxko), vol. 263 of Lecture Notes in Computer Science, pp. 311-323, Springer-Verlag, 1987; Montgomery,
Modular multiplication without trial division, Mathematics of Computation, 44:519 521, Apr. 1985; Quisquater, R.
Ferreira, R. Malzahn, p. Marissen, J.J. Quisquater and T. ille, FAME : A 3rd génération coprocessor for optimising public key cryptosystems in smart card applications, In Proc. CARDIS 1996, Smart Card Research and Advanced Applications (edited by P. H. Hartel. P. Paradinas and J.J. Quisquater), pp. 59-72, Stichting Mathematisch centrum. C 1, Amsterdam, The Netherlands, September 16 18 1996; R. Ferreira, R. Malzahn, J.J. Quisquater and T. Wille, A high performance third génération crypto card. In Digitale Signatur and sicherheitssensitive Anwendungen (edited by Struiff Glade, Reimer) , Vierveg, 1996; ou Sedlak, the RSA cryptography processor, In Advances in Cryptology - EUROCRYPT' 87, Amsterdam, The Netherlands (edited by D. Chau and W.I. Price) , vol. 304 of Lecture Notes in Computer Science, pp. 95-105, Springer-Verlag, 1988. Par multiplication modulaire, on entend une phase de multiplication decomposable en deux sous-phases, l'une de multiplication partielle de deux opérandes A, B et l'autre de réduction partielle par le produit de deux autres opérandes Q, N selon la loi indiquée par la formule (2) . Par multiplication en multiprecision, on entend une double succession de phases (i, j) de multiplications appliquées à deux opérandes représentables en multiprecision, de la façon suivante : A = p_ι 2(p_1)t + Ap_22(p-2)t + .... ΑL2lt + ... ^ + Ao "1 . B = Bp-1 2(p_1)t + Bp-22(p"2)t + .... B2jt + ... B^ + Bo J
Les opérandes A et B sont fractionnés en p mots Ai et p mots Bj de t bits chacun lors du traitement dans le cryptoprocesseur qui est typiquement un processeur t bits
(généralement t = 32) ; p représente alors l'ordre de multiplicité de la précision.
La formule (3) est algébriquement exacte bien que les opérandes A et B soient obtenus à partir de Ai et Bj respectivement par simple concaténation, ordinairement notée p-x I p_2 | ... I Ai | ...Ai I 0. Ceci résulte dans la formule de l'introduction des coefficients multiplicateurs 2xt et 2Dt qui n'ont pour tout résultat en représentation binaire que d'appliquer un décalage de it et jt bits respectivement des opérandes partiels Ai et Bj avant d'effectuer l'addition.
Cette formule permet de préciser le procédé de calcul en multiprecision des multiplications modulaires, le calcul du produit Q.N étant en effet similaire au calcul du produit A.B. On peut par exemple effectuer le produit par exemple des opérandes A, B exprimés par la formule (3) . On obtient :
Figure imgf000006_0001
Cela peut se traduire, en utilisant' les propriétés de distributivité de l'opération modulo, par l'algorithme simplifié de multiplication modulaire suivant : begin I I commentaire : initialisation
(1) U = o
(2) for j = o up to p-l (3) U = U + (A p-l.Bj)2tj
(4) end for
I I commentaire : début de "boucle i"
( 5 ) for i = p-2 downto o
( 6) Q = [U/Nj ( 7 ) J = 15 . 2* l l commentaire : début de "boucle j "
(8) for j = o up to p-l
(9) ϋ = U - (Q.Nj)2t(j+1)
(10) U = ϋ + (Ai.Bj)2tj (11) end for il fin "boucle j" (12) end for I I fin "boucle i" l I commentaire : terminaison
Figure imgf000007_0001
(14) for j = o up to p-l
(15) U = U- (Q.Nj)2tj
(16) end for end le quantificateur [_αj représentant la partie entière de α.
Dans cet algorithme, l'opération de calcul de la quantité Q n'est pas décrite. Cette quantité est en théorie obtenue en prenant la partie entière du quotient du résultat intermédiaire U par N. Il existe d'autres méthodes de calcul de ce quotient Q comme par exemple celle donnant une estimation Q de Q et décrite dans le document de J-F Dhem, Design of an efficient public-key cryptographie library for RISC based smart cards, Thèse soutenue en vue de l'obtention du grade de Docteur en Sciences Appliquées, Université catholique de Louvain, Faculté des Sciences Appliquées, Laboratoire de Microélectronique, Louvain-la- Neuve, Belgique. Disponible à : http : //users .belgacom.net/dhem/these, May 1998. Le chiffrement de messages de type RSA étant réalisé en temps réel lors d'une transmission, ces algorithmes doivent être exécutés extrêmement rapidement sous peine de ralentir cette transmission de façon rédhibitoire .
Une façon d'augmenter la rapidité de calcul d'un processeur est de le concevoir selon une architecture parallèle, les bus d'information reliant les mémoires et les unités arithmétiques et logiques comportant autant de bits que les nombres soumis aux calculs. Le nombre de bits étant ici 1024, cette conception n'est pas possible. Les microprocesseurs travaillent sur des mots machine de t bits, t pouvant être égal à 8, 16, 32, 64. Actuellement, la valeur la plus courante est t = 32 bits. Pour travailler sur des nombres plus grands, on dispose alors d'instructions travaillant sur n mots machine, donc sur n.t bits. Si n = 2, on parle alors de double précision. Les concepteurs de cryptoprocesseurs peuvent adopter des multiplieurs obligeant à des opérations intermédiaires de normalisation et de dénormalisation. Mais cela coûte en temps d'exécution de façon non négligeable.
Une autre matière d'augmenter la rapidité de calcul d'un processeur est de le concevoir spécifiquement pour les opérations qu'on lui demande.
On est ainsi amené à combiner une architecture de multiplieur et, par exemple, complémentairement, une électronique rapide de normalisation et de dénormalisation, jointe à une électronique rapide de fractionnement de longs mots en mots plus petits et, inversement, de leur défractionnement, avec les traitements adéquats de propagation de retenues.
Ces solutions "câblées" certes très rapides manquent d' adaptabilité, offrent moins de possibilités de défense quant aux agressions du type "timing attacks" et sont, à terme, coûteux en temps de conception et de développement.
La demanderesse a cherché à trouver une solution plus performante encore que les solutions connues en temps d'exécution et adaptable facilement aux diverses exigences d'utilisation tant en chiffrement qu'en authentification et notamment adaptable pour masquer aisément la chronologie des variations de consommation en une conception "anti- timing attacks" quelle que soit l'application implémentée. A cet effet, l'invention concerne tout d'abord un procédé pour effectuer une phase de multiplication modulaire de deux opérandes en multiprecision, la phase de multiplication étant composée d'au moins deux sous-phases, l'une de multiplication partielle, l'autre de réduction partielle, procédé caractérisé par le fait que les deux sous-phases sont entrelacées et font appel à un même circuit multiplieur. En entrelaçant les deux sous-phases, on peut effectuer simultanément, à chacune des multiplications des sous- phases, les accès mémoires nécessaires à chacune des deux sous-phases, en avance de phase.
De préférence, le circuit multiplieur effectue simultanément une multiplication et deux additions.
En utilisant un circuit multiplieur du type XY + C + Z, on effectue les additions pendant les multiplications.
De préférence encore, chaque sous-phase comporte une étape de chargement d'un des registres d'entrée du circuit multiplieur pour les sous-phases équivalentes ultérieures. Ces étapes chargent des registres contenant des résultats de calculs partiels de poids binaire supérieurs pour en propager l'effet sur les calculs ultérieurs.
Corrélativement, chaque sous-phase récupère ces mêmes registres d'entrée chargés pour les sous-phases équivalentes antérieures pour effectuer ses calculs.
Avantageusement, les opérations de chargement et de déchargement des registres du circuit multiplieur à partir de et vers le module mémoire du cryptoprocesseur, et les opérations de contrôle-commande du circuit multiplieur sont commandées par un logiciel pseudo-code comportant des macrocommandes et des pseudo-instructions .
Ainsi, on a une totale adaptabilité du multiplieur relativement aux applications qui en seront faites ultérieurement, sans changer sa conception matérielle.
L'invention concerne aussi un cryptoprocesseur pour la mise en œuvre du procédé de l'invention, comprenant une fonction de multiplication, un module mémoire, un module de multiplication avec des registres, et un circuit multiplieur, caractérisé par le fait qu'il comprend aussi des multiplexeurs reliant les registres au circuit multiplieur. Ainsi, on peut disposer du circuit multiplieur pour exécuter les deux sous-phases d'une boucle j sans effectuer d'accès mémoire entre ces deux sous-phases.
Avantageusement, le circuit multiplieur est agencé pour réaliser une opération du type XY + Z + C. Avantageusement encore, le circuit multiplieur est du type parallèle, comprend une matrice d'intersection , une matrice de produits partiels et une matrice d'additionneurs, caractérisé par le fait que la matrice de produits partiels comporte deux registres supplémentaires. Ces deux registres permettent d'additionner les entrées Z et C par la matrice d'additionneur du multiplieur.
De préférence, le cryptoprocesseur comporte une mémoire pseudo-code et un interprêteur. Avantageusement, la mémoire pseudo-code peut comporter des pseudo-instructions de chargement/déchargement des registres et des macrocommandes de commande du circuit multiplieur et des multiplexeurs.
Ainsi, on peut adapter la succession des opérations sur les registres et des commandes du circuit multiplieur en fonction des besoins opérationnels du cryptoprocesseur.
L'invention sera mieux comprise à l'aide de la description qui suit et du dessin annexé dans lequel la figure 1 montre la suite des opérations du procédé de multiplication modulaire de l'invention; la figure 2 représente la structure par blocs fonctionnels du cryptoprocesseur selon l'invention; - la figure 3 est un schéma électronique du module de multiplication;
- la figure 4 est un schéma logique du module de multiplication; - la figure 5 est un schéma électronique du circuit de multiplication XY + C 4- Z;
- la figure 6 montre les opérations réalisées en une sous-phase par le module de multiplication et - la figure 7 est un exemple de pseudo-code réalisant une multiplication modulaire.
Lorsque le cryptoprocesseur a besoin d'effectuer une multiplication modulaire modulo N de deux opérandes A et B, il peut appliquer l'algorithme (5) ci-dessus, notamment la boucle interne de cet algorithme, ésignée ici par l'appellation boucle j, ceci p fois dans une autre boucle externe désignée par la boucle i . Dans la boucle j , il doit alors faire exécuter par son multiplieur une multiplication donnant un produit résultant partiel Ai Bj décalé de jt bits "vers la gauche", c'est-à-dire vers les bits de poids fort auquel il ajoute un résultat partiel précédent U, et une deuxième multiplication donnant un résultat Q.Nj décalé de (j+l).t bits "vers la gauche" qu'il ajoute au résultat précédent . Nj , est le ième mot du complément à 2 de N augmenté de
1. Il n'y a que des additions à effectuer.
Il faut remarquer que dans l'algorithme (5) Q est une variable temporaire, petite, qui est calculée à l'aide de la valeur complète de N, à la différence des calculs des lignes (9) et (15) , dans lesquels on utilise les mots fractions Njde N.
On propose ici d'utiliser un multiplieur réalisant les opérations combinées X.Y + C + Z, ou C, ou Z et C étant éventuellement nuls. Puisqu'il n'apparaît qu'une addition au maximum dans chacune des multiplications de la boucle j , un opérande au moins du multiplieur reste disponible pour le report des retenues. De plus, il se trouve que le résultat de la multiplication obtenue par le multiplieur XY + C + Z est de la même longueur effective identique que celui de la multiplication XY si les longueurs effectives de C ou de Z n'excèdent pas celles de X ou de Y. Cette propriété permet de prévoir les longueurs effectives des résultats et d'optimiser les échanges mémoire entre le multiplieur et le cryptoprocesseur par la méthode exposée ci-après.
La figure 1 montre la suite des opérations de l'algorithme (5) et les échanges mémoire correspondants.
L'initialisation de la variable de travail U de p mots de t bits, correspondant aux lignes (1) à (4) de l'algorithme (5), est effectuée lors d'une première étape 20 itérée par une boucle repérée "initialisation U" pour donner les mots du résultat cherché en fin d'algorithme et rangés dans un registre 172 du cryptoprocesseur.
Ce calcul est effectué à partir du mot Ap_ι et des mots Bp_ι... Bo, ces mots étant extraits des registres 174 et 175 du cryptoprocesseur contenant les nombres A et B de p mots de t bits.
Le lancement de la boucle i ligne (5) est effectué entre les étapes 21 et 21' pour
1) exécuter le calcul, étape 22 des lignes (6) et (7) , en initialisation de la boucle j d'où résulte une variable intermédiaire Q qui est rangée dans un registre 171 du cryptoprocesseur,
2) lancer la boucle j, ligne (8) entre une étape 23 et une étape 23' pour, après recherche de Nj extraite d'un registre 173 contenant le nombre N de p mots de t bits, de Ai et de B , itérer les étapes 40 (de réduction) 50 (de multiplication et de transfert ou d'addition) .
L'exécution d'une phase de réduction finale correspondant aux lignes 13 à 16 de l'algorithme 5 est nécessaire et réalisée lors de l'étape supplémentaire 62 itérée entre les étapes 61 et 63 de la boucle de terminaison.
La suite des opérations va maintenant être détaillée. En référence à la figure 1, les nombres A, B, et N et un nombre résultat U sont fragmentables en mémoire du cryptoprocesseur en p mots de t bits Ai, Bj , Nj et Uj numérotés de 0 à p-l, comme indiqué en 171, 172, 173, 174 et 175. Comme chaque multiplication de mots de t bits chacun donne un mot résultat de 2 t bits, correspondant à la concaténation de 2 mots de t bits, le plus significatif étant désigné par MSB (most significant bit) et le moins significatif par LSB (least significant bit) , à chaque boucle suivante j sont traités des mots de t bits de la boucle j précédente et mémorisés dans des registres de t bits R0, RI et Rtemp, et des résultats de la boucle j sont mémorisés dans ces mêmes registres pour le traitement de la boucle suivante. Une multiplication combinée à deux additions de mots de t bits, (XY + C + Z) , donne un résultat d'au plus 2 t bits, sans crainte de débordement fractionnable en 2 mots de t bits.
Après une étape 30 de mise à zéro du registre 172 contenant le nombre résultat U et après l'étape 22 préliminaire de calcul de Q, sont enchaînées deux sous- phases dans la boucle j :
1) Première sous-phase de réduction, en étape 40 avec une multiplication du type XY + C + Z pour une réduction du résultat temporaire U, dans laquelle le multiplieur réalise simultanément les opérations suivantes :
QNj + Uj + RO
RO contenant le mot MSB du calcul similaire de la précédente boucle j et Rtemp, par un transfert 70, contenant le mot LSB de ce calcul de la boucle j en cours. Par un transfert 80, RO reçoit en fin de calcul de la boucle j en cours le mot MSB du calcul effectué pour servir lors de l'exécution de la boucle j suivante. 2) Deuxième sous-phase 50 de multiplication modulaire partielle pour obtenir le résultat temporaire U en fait la "retenue", en effectuant simultanément les opérations suivantes :
AiBj+Rtemps+Rl RI contenant le mot MSB du calcul similaire de la précédente boucle j et, par le transfert 90, recevant en fin de calcul le mot MSB de la boucle j en cours pour servir lors de l'exécution de la boucle j suivante.
En entrelaçant les sous-phases de réduction et de multiplication sur au moins deux boucles j , on conserve un registre temporaire Rtemp de même taille t ne nécessitant pas d'accès à la mémoire du cryptoprocesseur, pour rechercher des données communes utiles pour l'exécution des deux sous-phases. Si l'on effectuait les sous-phases complètes de réduction et de multiplication successivement, chaque sous- phase donnant des résultats sur des mots doubles, il faudrait réaliser des appels mémoire séparément pour chaque sous-phase. Ici on économise ces appels mémoire. La mise en œuvre du procédé ci-dessus va maintenant être expliquée en fixant a priori, pour simplifier, la taille de mots machine t égale à 32 bits. En référence à la figure 2, le cryptoprocesseur 100 comporte une entrée 101 de message m à chiffrer, ou de message c à déchiffrer, une sortie 102 de message c chiffré ou de message m déchiffré, une mémoire 103 des paramètres publics P de chiffrement : le modulo n et l'exposant, d ou e .
Ces entrées 101, sorties 102 et mémoire 103 de paramètres sont reliées, quand c'est nécessaire, à une application 110 de cryptage (chiffrement, déchiffrement, authentification...) qui requiert au moins une opération de multiplication modulaire par N de deux opérandes A, B. Ces données A, B, N sont transmises par une liaison 121 à une fonction de multiplication 120 qui renvoie par une liaison 122, après calcul, un résultat qui est le produit A B modulo N recherché. Cette fonction de multiplication 120 comporte au moins une mémoire pseudo-code 125 contenant une liste de pseudo-instructions P.I. et des macrocommandes MC à exécuter, exposées plus loin dans le document, et correspondant à la fonction de multiplication et un compteur ordinal 126 pour transmettre dans l'ordre de la liste les pseudo-instructions PI et les macrocommandes MC à un interpréteur de pseudo-code 130, qui est relié par ailleurs à des mémoires 131 et 132 contenant respectivement le code exécutable des macrocommandes MC d'un module de multiplication 150 décrit plus loin et le code exécutable des pseudo-instructions PI, essentiellement pour contrôler le mouvement des données d'un module 140 de registres à décalages, décrit plus loin également.
L'interpréteur 130 est relié audit module de multiplication 150 par les liaisons électroniques 136 de contrôle du module et audit module 140 par les liaisons 143 de contrôle des registres et la liaion 142 U de transmission des résultats partiels Uj . Outre la fonction interpréteur de pseudo-code classique, l'interpréteur 130 comporte éventuellement dans une option de conception © particulière une fonction de calcul de quotient Q 135 reliée audit module de registres à décalage par une entrée 142N et une sortie 144 du module de calcul de quotient.
La fonction de multiplication est reliée au module 140 de registres à décalage par un bus de données 141 transmettant les données A, B, N au module 140.
Les modules de multiplication 150 et de registres à décalage 140 sont reliés entre eux par des bus de données 152. Une horloge 160 cadence le compteur ordinal 126, l'interpréteur 130, les modules de multiplication 150 et de registes à décalage 140.
Les modules de multiplication et de registres à décalage vont maintenant être décrits.
En référence à la figure 3 , le module de multiplication 150 comprend un circuit multiplieur 1500 à quatre entrées parallèles X, Y, Z, C reliées aux entrées A, N, B, Q, respectivement par des bus parallèles 151A, 151B, 153 et à une sortie 152 par un bus parallèle (U) , par 1 ' intermédiaire de registres de multiplexeurs et de démultiplexeurs décrits ci-après. Le nombre de bits de ces registres correspond bien sûr au nombre de bits des bus qui les alimentent ou qui sont alimentés par eux. Pour un bus donné, ce nombre, à supposer t = 32, est indiqué en figure 3 en regard des repères des tailles bus et les repères sont reportés sur les bus.
Ainsi, le bus A (151A) , sans repère, donc de 32 bits, alimente des registres A0 (32 bits) , RRSUB (4 bits) , RBN0 (32 bits) , RBN1 (32 bits) , RUO (32 bits) et RUl (32 bits) . Ces registres alimentent les entrées Y du circuit multiplieur par un multiplexeur MUX2 , pour A0 , Z du circuit multiplieur par un multiplexeur MUXl pour RUO et RUl, et X du circuit multiplieur par un démultiplexeur DEMUX pour RBN1, et directement pour RBNO et RRSUB- Le bus B (151B) alimente Al, lui-même alimentant un multiplexeur MUX2 , de même que le bus Q (153) alimente, selon l'option de conception GD, des registres Q0 et Ql, eux-mêmes alimentant le démultiplexeur MUX2.
Dans une autre option © de conception se substituant à l'option de conception ©, une partie d'un bus O de sortie du circuit 1500 alimente aussi des registres à décalage ROI à R03 tandis que 66 autres bits du registre O[35..100] alimentent les registres Q0 et Ql .
Quelle que soit l'option de conception choisie, en sortie, le circuit multiplieur 1500 alimente le bus O de 102 bits, une partie h ou g de ce bus, respectivement O [34..101] et O [32..97] alimentant les deux registres R0 et RI, à travers le démultiplexeur DEMUX1 , les registres RI servant pour le calcul de multiplication et R0 servant pour le calcul de réduction étant reliés en rebouclage sur l'entrée C du circuit-multiplieur 1500 à travers le multiplexeur MUXO, une autre partie du bus O composée de ses 32 LSB O[0..31], alimentant d'une part le bus de sortie 152 (U) à travers des registres Rkl et RkO , et d'autre part du registre Rtemp composé des registres RtO et Rtl servant à bénéficier du calcul de réduction pour effectuer le calcul de multiplication et, à travers eux, le multiplexeur MUXl en rebouclage sur l'entrée Z du circuit multiplieur 1500.
Les liaisons électroniques 136 sont quant à elles reliées : 1) au registre Rtemp par une commande de mise à zéro (RESET) ,
2) aux multiplexeurs MUXO, MUXl, MUX2 pour les mettre dans l'un ou l'autre des états, repérés 0 ou 1, les mettant en situation de transmettre leurs entrées 0 ou 1 en sortie sur C, Z ou Y respectivement du circuit 1500 : A ou Q, Rt ou U (respectivement des signaux binaires A/Q et t/U) . 3) aux démultiplexeurs DEMUX et DEMUXl conformément au tableau "commandes BUS/DEMUX" de la figure 3 pour transmettre une partie des bits du registre RBN1 et des données complémentaires sur l'entrée X du circuit 1500.
En référence à la figure 4, maintenant, le module de registres à décalage 140 comporte quatre registres 172, 173, 174, 175 contenant respectivement un résultat de calcul U et trois données de calcul, le module N et les opérandes A, B, chacun sur par exemple 1024 bits correspondants à p mots de t = 32 bits, indicés de 0 à p-l, rappelés Uj , Ai, Bj et Nj . Les registres 173, 174 et 175 sont alimentés par la fonction de multiplication 120 au moyen des bus A, B, N de la liaison 141, et alimentent eux- mêmes les bus A et B sous la commande de drivers 147, 148 et 149 respectivement sur les registres 173, 174 et 175. Les drivers 147, 148 alimentent le bus 151A en données et le driver 149 alimente le bus 151B, les trois étant commandés par l'interpréteur 130 à travers une liaison 143, en phase avec le signal d'horloge.
Le module 140 reçoit du module de multiplication 150 le résultat du calcul par le bus 152 (U) à travers le driver 146, lequel résultat est mémorisé dans le registre 172 avant d'être retransmis sur le bus 151A vers le module 150, soit sous forme fractionnée, soit totalement, sous la commande du driver 146 et sur le bus 142 U, seulement dans le cas de l'option © de conception vers l'interpréteur 130, en même temps que N du registre à décalage 173 à travers le driver 147 sous la commande de l'interpréteur 130. Pour cette option Φ, en retour de la transmission, à l'interpréteur, de U et N, une donnée Q mémorisée dans un registre 171 peut être retransmise au module de multiplication 150 à travers le bus 153 (Q) par un driver 145 sous la commande de l'interpréteur.
Outre les remises à zéro initiales des registres (U, RO, RI, Rtemp) les drivers du module 140 ont ici deux fonctions :
1) ils transmettent au module 150 un mot de 32 bits indexé par un entier i ou j communiqué par l'interpréteur 130 au travers de la liaison 143;
2) ils effectuent un décalage registre préalable à cette transmission pour l'accélérer.
Le driver 146 gère en plus les bus 152 de réception du résultat U et 142U de renvoi du résultat U vers l'interpréteur, le driver 147 gère en plus le bus 142 N de renvoi de N vers l'interpréteur pour le calcul de Q.
Quant au circuit multiplieur 1500, on propose ici une conception parallèle du circuit, connue parfois sous l'appellation anglosaxonne de "Wallace tree".
Selon cette conception classique, en référence à la figure 5, une première opération est effectuée entre les opérandes X et Y de tl et t2 bits respectivement, tl étant supposé supérieur à t2, mémorisés dans les registres 1501 et 1502, opération qui est une intersection logique bit à bit entre les deux opérandes selon une matrice 1510 de circuits "AND" pour donner le tableau de produits partiels 1520 composés de t2 registres de tl bits repérés 1 à lt2+ι-
Ici, deux autres registres 1503 et 1504, de tl bits, repérés 10 et 11, ont été ajoutés dans le tableau de produits partiels ci-dessus.
Ces registres contiennent les deux autres entrées Z et C du circuit multiplieur de mots de tl et de t2 bits respectivement de sorte que, par exemple, X, Z < 2t et Y,
C < 2t2 et donc XY + C + Z < 2fcl + t2 Le tableau de produits binaires partiels 1520 doit donner lieu à une somme effectuée par une matrice 1530 d'additionneurs tels que l'additionneur 1531 à trois entrées lk u+ι, lk u rk_1 u et à deux sorties sk u et rk u, k étant le rang du bit de la ligne lu traitée, lu la valeur du bit à additionner, su le bit somme et rk u le bit retenue. Le fonctionnement en est bien connu . Le résultat est obtenu dans un registre 1540 et comporte tι+ t2 - 1 bits.
Les pseudo-instructions prévues pour commander les drivers du module 140 sont les suivantes :
MTA [Rs], [Rt] Cette instruction charge les registres [Rs] et [Rt] (Ai, Ai-i) du registre 175 dans les registres A0 et Al du module 150.
MTB [Rs], [Rt] charge les registres [Rs] :
Bj , Bj+i ou Nj , Nj+i du registre 174 ou 173 dans les registres Rt :
RBN0 et RBN1 du module 150.
MTU [Rt], [Rs] charge les registres 172 (Rs) dans les registres RUO et RUl du module 150 (Rt)
RESET [Rs] Cette instruction remet à zéro le registre Rs, qui peut être l'un de ces registres R0 , RI, RtO, Rtl, RUO, RUl,
RBN0, RBN1, RRSUB, Al, A0 , Q, R03-R00 du module 150.
LW + + [Rt], [Rs] charge Rt dans Rs, Rt étant un registre du module 140 et Rs un registre du module 150, avec incrémentation des indices des registres du module 140 dans les fonctions 147, 148, 149, suivant le cas.
LW - - [Rt], [Rs]
Même chose, avec décrémentation. SW + + [Rs],[Rt] ou
SW - - [Rs], [Rt] suivant incrémentation ou décrémentation, instruction permettant de décharger Rs dans Rt, symétriquement aux instructions LW. SWAP + + 1 ou SWAP - - [Rs], RUO, Rkl ou
SWAP + + 1 ou SWAP - - [Rs], RUl, RkO .
Ces instructions permettent d'enchaîner les opérations de chargement et de déchargement précédentes, en parallèle sur les opérations de multiplication modulaires entrelacées, sans nécessité de nouvel accès au module mémoire 140.
BLEINC et BGZINC
Instructions de branchement équivalentes aux suites d'instructions de langage C suivantes ble t2, t7, interne (branch if less than) addiu t2, t2 , imm (immédiate value) et : bgz t2 , interne addiu t2, t2 , -imm Les macrocommandes MC prévues pour commander le module de multiplication 150 sont les suivantes :
1) MULTEXQT :
(RBNO du module 150 contient NO/Nj du registre 173 et RUO de ce module contient UO du registre 172) - charge Q0, Ql dans l'entrée X du module 1500 (tl = 66 bits figure 5) en positionnant MUX2 du module 150 sur l'entrée 1 du multiplexeur par le signal A/Q = 1 des liaisons 136 envoyé par l'interpréteur 130,
- charge RBNO (32 bits) dans Y du module 1500 (t2 = 64 bits) ,
- charge RUO dans Z en positionnant MUXl sur l'entrée 1 du multiplexeur par le signal t/u = 1, - charge RO dans C en positionnant MUXO sur son entrée 0 par le signal A/Q = 1,
- provoque l'exécution de la multiplication du circuit multiplieur 1500, - place le mot LSB du résultat 1540, repéré O[0..31], dans le registre RtO du module 150, et le mot MSB de ce résultat, repéré 0[32..97], dans le registre R0 du même module .
Puis, similairement : (à ce stade RBN1 et RUl contiennent Nl/Nj+1 Ul des registres 173 et 172 respectivement) :
- charge Q0, Ql dans X, RBN1 dans Y, RUl dans Z et R0 dans C du circuit multiplieur 1500, provoque l'exécution de la multiplication du circuit 1500,
- place le mot LSB du résultat 1540 dans les registres Rtl et RkO du module 150,
- place le mot MSB du résultat 1540 dans les registres R0 et Rkl du module 150. Les registres RkO - Rkl contiennent le résultat qui est envoyé par le bus U (liaison 152) dans le module mémoire 140, registres 172 (U0, Ul) à partir duquel il est renvoyé comme résultat partiel par la liaison 142 U vers l'interpréteur 130, puis vers la fonction de multiplication 125 d'une part et vers la fonction 135 selon une première option © de conception.
Mais le contenu des registres RkO-Rkl peut être envoyé directement vers l'interpréteur 130 pour mise à jour de U. 2) MULTEXQK : (RBNO du module 150 contient NO/Nj du registre 173 et RtO contient le mot LSB résultat d'une macro commande immédiatement précédente dans la liste pseudo-code 125) . Mêmes opérations que MULTEXQT mais en substituant : RtO à RUO RkO à RtO Rtl à RUl Rkl à Rtl et en remarquant qu'avant la seconde multiplication Rtl contient le mot MSB résultat d'une macrocommande immédiatement précédente dans la liste pseudo-codes 125.
3) MULTEXAT identique à MULTEXQT, dans laquelle on substitue A à Q, RI à RO et B à N.
4 ) MULTEXAK identique à MULTEXQK, dans laquelle on substitue A à Q, RI à RO et B à N.
Dans une seconde option © de conception, sont prévues les macro commandes identiques
5) MULTEXAT, Rs
6) MULTEXAK, Rs
7) MULTEXQT, Rs
8) MULTEXQK, Rs tenant compte d'un paramètre dans un registre du module 140 non représenté, indiquant si les registres R03 - R00 du module 150 sont utilisés ou non.
9) MULTEXT, RS exécute une multiplication 68 x 68 bits de la façon suivante :
- place MUXO en position 1, RESET R0
- place l'entrée Z en haute impédence par le signal HI de la liaison 136
- place RBNO [0..32] | RBN1 [0..1] en entrée X du circuit 1500 en positionnant DEMUX en configuration d'entrées 00
( (a) figure 3)
- place MUX2 en configuration d'entrées 2 mettant les registres R00-R03 en entrée Y du circuit 1500 - place DEMUXl en configuration d'entrée 0 ((h) figure 3)
- déclenche le circuit multiplieur 1500
- range le résultat dans RO
- place RBN1[2..31] | RRSUB[0..3] en entrée X du circuit multiplieur, le démultiplexeur DEMUX étant en position 01
( (c) de commande des bus en figure 3)
- déclenche le circuit multiplieur 1500
- range le résultat final O[35..100] dans le registre Q0|Q1.
Le paramètre RS permet en plus d'effectuer un décalage de Rs bits des bits stockés dans les registres R00 - R03.
Le fonctionnement du système va maintenant être expliqué .
Lorsqu'un message m subit une application de cryptage
110 de paramètres n, e nécessitant une opération de multiplication modulaire de module N entre deux opérandes A et B, l'application 110 transmet ces paramètres par le bus
121 à la fonction de multiplication 120 qui transmet, avec une cadence déterminée par l'horloge 160 et dans un ordre correspondant à celui imposé par le compteur ordinal 126, les pseudo-instructions PI sur les registres du module de registre à décalage 140 et les macrocommandes MC du module de multiplication 150 vers l'interpréteur 130, alors que les pseudo-instructions affectant la fonction de branchement du compteur ordinal sont rebouclées sur le compteur ordinal lui-même.
Les paramètres A, B, N sont stockés dans les registres
175, 174 et 173 du module 140 par les bus 141, en une suite de mots de t bits, prêts à être transmis en parallèle mais par fractions de t bits sur le bus 151 B et 151 A vers le module de multiplication 150.
L'interpréteur 130 exécute les pseudo-instructions PI et les macro commandes MC qu'il reçoit, et dans le même ordre, à l'aide des mémoires 131 et 132 contenant leur interprétation en langage machine.
Ainsi, une traduction de la boucle j interne de l'algorithme (5) en pseudo-code, sans le calcul de Q, peut être : for j = 1 to j = size - 2 MULTEXQT
U[J] = RkO;
U[J+1] = Rkl; RBO ≈ B[J+2];
RB1 = B[J+3];
MULTEXAK
RUO = U[J+2],
Figure imgf000025_0001
RN1 = N[J+3], end for
Dans cet exemple, la multiplication modulaire de la boucle interne est exécutée en deux sous phases, une de réduction partielle par MULTEXQT, une de multiplication partielle par MULTEXAK, chacune d'une durée pouvant être de deux cycles .
En référence à l'algorithme (5), le circuit multiplieur 150 est utilisé alternativement pour le produit modulaire QNj et pour le produit modulaire Ai Bj et, suivant le cas, Ai ou Q est chargé (Al|A0 ou Ql|Q0) en fonction de la configuration d'entrée du multiplexeur MUX2 commandée par le signal A|Q de la liaison 136 et le résultat temporaire MSB (0[32..97] est rangé dans le registre RI ou R0 pour le calcul suivant alors que le résultat partiel LSB (O[0..31] est rangé après la deuxième sous-phase dans les registres Rkl|Rk0. Ces registres Rkl | RkO sont ensuite envoyés par le canal du bus 152 (U) au module mémoire 140 pour y être concaténé aux résultats partiels précédents et, en fin de concaténation complète, fournir le résultat A.B modulo N à l'application de cryptage 110 par la liaison 122.
Plus précisément, en référence à la figure 6, puisque les sous-phases de réduction et de multiplication sont entrelacées, l'opérande Y du circuit de multiplication 1500 reçoit, selon la commande A/Q appliquée sur le multiplexeur MUX2 les données binaires de l'un des deux registres de 64 bits pour (A1/A0) et de 66 bits pour (Q1/Q0) , registres qui sont chargés à partir du module 140 en simultanéité avec l'exécution d'une sous-phase. L'opérande X reçoit soit Bj soit Nj (B0 ou N0 et Bl ou NI) de 32 bits sauf dans le cas particulier ou le démultiplexeur DEMUX est actif. L'opérande C reçoit soit RI soit R0 , toujours selon la commande A/Q, tandis que l'opérande Z reçoit alternativerment la partie LSB d'une multiplication précédente Uj (Rtl/RtO) et le résultat partiel d'une boucle j précédente (RUl/RUO) suivant la commande t/U, de la liaison 136, appliquée au multiplexeur MUXl. Dans la boucle j, ligne (10) de l'algorithme (5), la macro commande MULTEXQT est exécutée alors que
(XI | X0) = N0 (Zl | Z0) = U0
Y = Q1|Q0
C = RO précédent soit T pQO . La partie LSB (O[0..31]0du produit N0 (Ql|Q0) (X1|X0) Y est rangée dans RtO, et sa partie MSB (0[32..97], dans TmpQO, comme indiqué sur la figure 6 par les flèches Φ et ©. Alors sont chargés pour multiplication (X3|X2) = NI (Z3|Z2) = Ul
Y = Q0|Q1 C = TmpQO La partie LSB (O[0..31] du résultat (X3|X2)Y de la multiplication N1(Q1|Q0)) est ici rangée dans Rtl et sa partie MSB (0[32..97]) dans TmpQl comme indiqué par les flèches © et © sur la figure 6.
Les résultats temporaires Rk0|Rkl, qui sont les mêmes résultats que Rtθ|Rtl, sont sauvegardés dans Uj|Uj+ι. Les registres du circuit multiplieur sont à nouveau chargés pour exécution de la macro commande MULTEXAK de la façon suivante : (X1|X0) = B0 (Zl|Z0) = RtO précédent
Y = (Al|A0)
C = TmpAO précédent .
La partie LSB du résultat est rangée dans le registre
RkO. La partie MSB du résultat est rangée dans le registre
TmpAO .
Alors sont chargés pour multiplication
(X3 |X2) = Bl
(Z3|Z2) = Rtl précédent Y = (Al|A0)
C = TmpAO
La partie LSB du résultat est rangée dans le registre
Rkl
La partie MSB du résultat est rangée dans le registre TmpAl On obtient ainsi le résultat de calcul de la boucle interne j . Il suffit ensuite de dérouler cette boucle interne p fois en faisant cette fois varier l'indice i.
C'est ce qui a été fait, par exemple, dans la liste de pseudo-code montrée sur la figure 7, mettant en œuvre l'option de conception ©, dans laquelle la boucle i contient
1) une séquence {l} d'initialisation des registres Q0, Ql et R00, ROI, R02, R03 du module 150, la macro commande MULTEXT caculant Ql|Q0,
2) une séquence {2} d'initialisation des registres RI, RtO, Rtl, RkO, Rkl par un premier produit A.B effectué par la macro commande MULTEXAK puis des registres RBNO, RBN1, RUO, RUl de ce même module, 3) la boucle j déjà vue précédemment,
4) une opération de réduction de fin de boucle i dans laquelle on calcule le quotient Q {4} avant de l'appliquer
{5} sur un dernier calcul partiel de A.B.
Le procédé et la mise en œuvre selon 1 ' invention ainsi décrite permet de doubler le gain de vitesse d'exécution de
1 ' algorithme RSA.
On a montré la réalisation d'un système cryptoprocesseur à 32 bits en utilisant un processeur du type RISC (reduced instruction set computer) , mais on aurait pu tout aussi bien concevoir de mettre en œuvre le procédé de l'invention en utilisant un processeur de 16 bits ou de 64 bits.

Claims

REVENDICATIONS
1 - Cryptoprocesseur (100) pour la mise en œuvre d'exécution de multiplication modulaire (23, 30, 40, 50) de deux opérandes ((A, B) en multiprecision, composée d'une phase de multiplication partielle (50) et d'une autre phase de réduction partielle (40) entrelacées, comprenant une fonction de multiplication (120), un module mémoire (140), un module de multiplication (150) avec des registres (A, Q, R0, RI, RUO, RUl, RtO, Rtl, RkO, Rkl) et un circuit multiplieur (1500), caractérisé en ce qu'il comprend aussi des multiplexeurs (MUXO, MUXl, MUX2) reliant les registres au circuit multiplieur.
2 - Cryptoprocesseur selon la revendication 1, caractérisé en ce que le circuit multiplieur est agencé pour réaliser une opération du type X.Y + Z +C . 3 - Cryptoprocesseur selon la revendication 2, caractérisé en ce que le circuit multiplieur est du type parallèle, comprenant une matrice d'intersection (1510), une matrice de produits partiels (1520) et une matrice d'additionneurs (1530), caractérisé par le fait que la matrice de produits partiels comporte deux registres supplémentaires (1503, 1504) .
4 - Cryptoprocesseur selon l'une des revendications 1 à 3, caractérisé en ce que le cryptoprocesseur comporte une mémoire pseudo-code (125) , et un interpréteur (135) . 5 - Cryptoprocesseur selon la revendication 4 caractérisé en que la mémoire pseudo-code comporte des pseudo-instructions (LW/SW, SWAP) de chargement/déchargement des registres et des macrocommandes (MULTEXQT, MULTEXAT, MULTEXQK, MULTEAK) de commande du circuit multiplieur et des multiplexeurs.
PCT/FR2003/001367 2002-04-30 2003-04-30 Procede de multiplication modulaire WO2003093974A2 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2003265535A AU2003265535A1 (en) 2002-04-30 2003-04-30 Method of performing a multiprecision modular multiplication phase with two operands and a cryptoprocessor for carrying out said method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR02/05445 2002-04-30
FR0205445A FR2839224B1 (fr) 2002-04-30 2002-04-30 Procede pour effectuer une phase de multiplication modulaire de deux operandes en multiprecision et cryptoprocesseur pour la mise en oeuvre du procede

Publications (2)

Publication Number Publication Date
WO2003093974A2 true WO2003093974A2 (fr) 2003-11-13
WO2003093974A3 WO2003093974A3 (fr) 2004-04-01

Family

ID=28800079

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2003/001367 WO2003093974A2 (fr) 2002-04-30 2003-04-30 Procede de multiplication modulaire

Country Status (3)

Country Link
AU (1) AU2003265535A1 (fr)
FR (1) FR2839224B1 (fr)
WO (1) WO2003093974A2 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506468A (zh) * 2020-12-09 2021-03-16 上海交通大学 支持高吞吐多精度乘法运算的risc-v通用处理器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0443679A1 (fr) * 1990-02-23 1991-08-28 Koninklijke Philips Electronics N.V. Procédé de codage selon la méthode dite RSA, par un microcontrôleur et dispositif utilisant ce procédé

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0443679A1 (fr) * 1990-02-23 1991-08-28 Koninklijke Philips Electronics N.V. Procédé de codage selon la méthode dite RSA, par un microcontrôleur et dispositif utilisant ce procédé

Non-Patent Citations (4)

* 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 novembre 1994 (1994-11-28), pages 365-375, XP000527604 ISBN: 3-540-59339-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, [Online] mai 1998 (1998-05), page complete, XP002212065 UCL, FACULTÉ DES SCIENCES APPLIQUÉES , LOUVAIN-LA-NEUVE, BE Extrait de l'Internet: <URL:http://users.belgacom.net/dhem/these/ these_public.pdf> [extrait le 2001-08-30] cité dans la demande *
ORUP H ET AL: "A HIGH-RADIX HARDWARE ALGORITHM FOR CALCULATING THE EXPONENTIAL ME MODULO N" PROCEEDINGS OF THE SYMPOSIUM ON COMPUTER ARITHMETIC. GRENOBLE, JUNE 26 - 28, 1991, LOS ALAMITOS, IEEE COMP. SOC. PRESS, US, vol. SYMP. 10, 26 juin 1991 (1991-06-26), pages 51-56, XP000222181 *
R. FERREIRA ET AL.: "A High Performance Third Generation Crypto Card" DIGITALE SIGNATUR UND SICHERHEITSSENSITIVE ANWENDUNGEN, 1996, pages 181-195, XP008012514 Vieweg *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506468A (zh) * 2020-12-09 2021-03-16 上海交通大学 支持高吞吐多精度乘法运算的risc-v通用处理器
CN112506468B (zh) * 2020-12-09 2023-04-28 上海交通大学 支持高吞吐多精度乘法运算的risc-v通用处理器

Also Published As

Publication number Publication date
FR2839224A1 (fr) 2003-10-31
WO2003093974A3 (fr) 2004-04-01
AU2003265535A1 (en) 2003-11-17
AU2003265535A8 (en) 2003-11-17
FR2839224B1 (fr) 2007-05-04

Similar Documents

Publication Publication Date Title
EP0853275B1 (fr) Coprocesseur comprenant deux circuits de multiplication opérant en parallèle
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
EP0566498B1 (fr) Dispositif et procédé de signature numérique
TWI244611B (en) Circuit and method for performing multiple modulo mathematic operations
FR2867579A1 (fr) Multiplieur modulaire de montgomery
EP1368747B1 (fr) Procede et dispositif pour reduire le temps de calcul d&#39;un produit, d&#39;une multiplication et d&#39;une exponentiation modulaire selon la methode de montgomery
FR2788867A1 (fr) Procede arithmetique, appareil arithmetique et appareil de traitement cryptographique
FR2885711A1 (fr) Procede et materiel modulaire et aleatoire pour la reduction polynomiale
EP2000904B1 (fr) Procédé de multiplication modulaire de Montgomery masquée
EP2490144A1 (fr) Circuit intégré programmable de cryptographie
EP2003547A1 (fr) Operateur de reduction modulaire amélioré
EP0939362B1 (fr) Coprocesseur d&#39;arithmétique modulaire permettant de réaliser des opérations non modulaires rapidement
FR3101980A1 (fr) Processeur
WO2020012104A1 (fr) Circuit de génération de facteurs de rotation pour processeur ntt
EP0793165A1 (fr) Coprocesseur d&#39;arithmétique modulaire permettant de réaliser rapidement des opération non modulaires
WO1999004332A1 (fr) Calcul d&#39;inverses multiplicateurs a champs composites a des fins de cryptographie de courbes elliptiques
EP0939363B1 (fr) Procédé de mise en oeuvre d&#39;une multiplication modulaire selon la méthode de Montgoméry
WO2003093974A2 (fr) Procede de multiplication modulaire
EP1012703B1 (fr) Coprocesseur d&#39;arithmetique modulaire comportant un circuit de division entiere
EP0778518B1 (fr) Procédé de production d&#39;un paramètre J0 associé à la mise en oeuvre d&#39;opérations modulaires selon la méthode de Montgomery
FR2880149A1 (fr) Procede de traitement de donnees et dispositif associe
EP0927928B1 (fr) Procédé de production amélioré d&#39;un paramètre JO associé à la mise en oeuvre d&#39;opérations modulaires selon la méthode de Montgomery
JP2000512786A (ja) モジュラ乗算を行なうためのコプロセッサ
FR2818765A1 (fr) Multiplicateur modulaire et processeur de cryptage/decryptage utilisant le multiplicateur modulaire
US20220350570A1 (en) Pipelined hardware to accelerate modular arithmetic operations

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

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: A2

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