WO2004059515A2 - Modulare multiplikation mit paralleler berechnung der vorausschau-parameter - Google Patents

Modulare multiplikation mit paralleler berechnung der vorausschau-parameter Download PDF

Info

Publication number
WO2004059515A2
WO2004059515A2 PCT/EP2003/014135 EP0314135W WO2004059515A2 WO 2004059515 A2 WO2004059515 A2 WO 2004059515A2 EP 0314135 W EP0314135 W EP 0314135W WO 2004059515 A2 WO2004059515 A2 WO 2004059515A2
Authority
WO
WIPO (PCT)
Prior art keywords
module
intermediate result
look
bits
operand addition
Prior art date
Application number
PCT/EP2003/014135
Other languages
English (en)
French (fr)
Other versions
WO2004059515A3 (de
Inventor
Wieland Fischer
Holger Sedlak
Jean-Pierre Seifert
Original Assignee
Infineon Technologies Ag
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 Infineon Technologies Ag filed Critical Infineon Technologies Ag
Priority to EP03789247A priority Critical patent/EP1576463B1/de
Priority to DE50305387T priority patent/DE50305387D1/de
Priority to AU2003293861A priority patent/AU2003293861A1/en
Publication of WO2004059515A2 publication Critical patent/WO2004059515A2/de
Publication of WO2004059515A3 publication Critical patent/WO2004059515A3/de
Priority to US11/165,834 priority patent/US7698357B2/en

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/722Modular multiplication

Definitions

  • the present invention relates to cryptography and in particular to concepts for calculating a multiplication of a multiplier and a multiplicand with respect to a module within a cryptographic calculation, the multiplier, the multiplicand and the module being parameters of the cryptographic calculation.
  • Cryptography is one of the main applications for modular arithmetic.
  • An important algorithm for cryptography is the well-known RSA algorithm.
  • the RSA has been used to calculate the RSA value.
  • Algorithm is based on a modular exponentiation, which can be represented as follows:
  • C is an encrypted message
  • M is a non-encrypted message
  • d is the secret key
  • N is the module.
  • the module N is usually generated by multiplying two prime numbers p and q.
  • the modular exponentiation is carried out using the well-known square-and-
  • Multiply algorithm broken down into multiplications For this purpose, the exponent d is broken down into powers of two, so that the modular exponentiation can be broken down into several modular multiplications. In order to be able to implement the modular exponentiation efficiently in terms of calculations, the modular exponentiation is therefore broken down into modular multiplications, which can then be broken down into modular additions.
  • DE 3631992 C2 discloses a cryptography method in which the modular multiplication is accelerated using a multiplication look-ahead method and using a reduction look-ahead method can.
  • the method described in DE 3631992 C2 is also referred to as the ZDN method and is described in more detail with reference to FIG. 18.
  • the global variables M, C and N are initialized. The aim is to calculate the following modular multiplication:
  • M is called the multiplier
  • C is called the multiplicand
  • Z is the result of the modular multiplication
  • N is the module.
  • Multiplication look-ahead method GEN_MULT_LA, a multiplication shift value s z and a multiplication look-ahead parameter a are calculated using different look-ahead rules (910).
  • the current content of the Z register is then subjected to a left shift operation by s z positions (920).
  • a reduction look-ahead method GEN_Mod_LA (930) is carried out essentially in parallel in order to calculate a reduction shift value S N and a reduction parameter b.
  • the current content of the module register, ie N is shifted to the left or right by s N digits in order to generate a shifted module value N '.
  • the central three-operand operation of the ZDN method takes place in a step 950.
  • the intermediate result Z 'after step 920 becomes the multiplicand C which corresponds to the multiplication forecast.
  • Parameter a is multiplied, and added to the shifted module N ', which is multiplied by the reduction forecast parameter b.
  • the look-ahead parameters a and b can have a value of +1, 0 or -1.
  • a typical case is that the multiplication look-ahead parameter a is +1 and that the reduction look-ahead parameter b is -1, so that the multiplicand C is added to a shifted intermediate result Z ', and the Subtracted shifted module N 'from it, a will have a value equal to 0 if the multiplication look-ahead method would allow more than a preset number of individual left shifts, ie if s z is greater than the maximum permissible value of s z , which is also referred to as k.
  • Steps 910 to 950 are carried out until all positions of the multiplicand have been processed, that is to say until m is 0, and also until a parameter n is 0, which indicates whether the shifted module N 'is still larger than the original module N, or whether, despite the fact that all positions of the multiplicand have already been processed, further reduction steps have to be carried out by subtracting the module from Z.
  • the multiplication shift value s z and the multiplication parameter a which are calculated in step 910 by the multiplication look-ahead algorithm, result from the topology of the multiplier and from the foresight rules used, which are described in DE 3631992 C2.
  • the ZDN method as shown in FIG. 18, attributes the modular multiplication to a three-operand addition (block 950 in FIG. 18), with the multiplication look-ahead method and, associated therewith, to increase the computing time efficiency Reduction foresight methods are used. Compared to the Montgomery reduction for, a computing time advantage can therefore be achieved.
  • the reduction shift value s N is initialized to zero.
  • the value ZDN which is equal to 2/3 of the module N, is then calculated in a block 1020.
  • n is equal to 0 or whether the shift value s N. Equals - -k is-t -.-- k is a value which is the maximum shift value which is predetermined by the hardware , Are defined.
  • block 1030 is answered with NO, so that in block 1040 the parameter n is decremented, and in block 1060 the reduction shift value by 1 is decremented.
  • the variable ZDN is reassigned, namely with half its value, which can be easily achieved by shifting the value in the ZDN register to the right.
  • a block 1100 determines whether the absolute value of the current intermediate result is greater than the value in the ZDN register.
  • This comparison operation in block 1100 is the central operation of the reduction look-ahead method. If the question is answered with YES, the iteration is ended and the reduction forecast parameter b, as shown in block 1120, is occupied. If, on the other hand, the question to be answered in block 1100 is answered with NO, the system jumps back iteratively to examine the current values of n and s N in block 1030. If block 1030 is answered with YES at some point in the iteration, a jump is made to block 1140 in which the reduction parameter b is set to zero. In the three-operand operation shown in FIG. 18 in block 950, this means that no module is added or subtracted, which means that the intermediate result Z was so small that no modular reduction was necessary.
  • the block n is then re-assigned in a block 1160, the reduction-shift value s H then finally being calculated in a block 1180, which is required in a block 940 of FIG. 18 in order to carry out the left shift of the module to reach a shifted module.
  • FIGS. 18 and 19 can be implemented in hardware, as shown in FIG. 10.
  • an arithmetic unit 700 is required, which is designated AU in FIG. 10. It is coupled to a register C 710 for the multiplicand, to a register N 720 for the module and to a register Z 730 for the current intermediate result of the modular multiplication. From Fig.
  • the multiplication look-ahead parameter a and the reduction look-ahead parameter b can, as is known, .values. Take from -1, 0 and +1.
  • Multiplicand C and the module N are long numbers, i.e. numbers whose number of digits or bits is definitely greater than 512 can be, and these numbers can also have up to 2048 digits.
  • N: N * 2 sn
  • Z: Z * 2 SZ + v c * C + v n * N.
  • s z denotes the shift value of the intermediate result Z, as it is calculated from the known Booth method, that is to say the multiplication look-ahead method.
  • s n denotes the shift value of N, as calculated as described above.
  • the shift values s z and S n must not be of unlimited size, especially since shifters are provided for shifting long numbers which can only handle a bit shift in a long number register up to a maximum shift value.
  • a shift value s z between 0 and 5 is made possible with a cryptography processor that works according to the known ZDN method.
  • a shift value between -3 and +3 is used to shift the module.
  • a disadvantage of the limited shift values is that e.g. B. the shift value s z for shifting the intermediate result Z from a previous iteration step is often too small for a current iteration step. This is the case when the multiplication look-ahead algorithm determines that the multiplier is such that, for. B. a larger shift value than 5 is possible. This is the case if, depending on the look-ahead rule, e.g. B. there may be more than 5 consecutive zeros in the multiplier. If it is thought that the multiplier M has 1024 or even 2048 bits, this situation can very often occur.
  • the known ZDN method will react in this "special case" by performing a three-operand operation, with the maximum shift value, but by multiplying the look-ahead parameter v c is set to 0, which means that in this step the multiplicand is not added.
  • a renewed multiplication tions shift value s z calculated which, when it is larger than the maximum shift value s zmax, is again limited by the maximum shift value, which again a degenerate "three- Operand addition ", in which the multiplicand is again not added, ie in which only the shifted intermediate result and the shifted module are added, taking into account the sign for the module.
  • the known ZDN method is therefore not able to take advantage of the full increase in efficiency of the multiplication look-ahead method.
  • the known ZDN method would have to be increased in shifter, which, however, in particular in the case of integrated circuits for chip cards, means that more chip area is required, which is not always tolerable due to narrow chip area specifications by chip card manufacturers or can lead to significant price increases.
  • processors for chip cards are a mass product, since chip cards are typically manufactured in large numbers.
  • the total area occupied by the processor is predetermined by the chip card manufacturer. This means that a manufacturer for chip card processors has to accommodate arithmetic units and space-consuming memories on a fixedly specified area.
  • increasingly complex cryptography algorithms also require more memory, so that an arithmetic unit can be enlarged in such a way that e.g. B. a larger shifter is installed, for this reason is often not tolerable. If one were to allocate more chip area to the arithmetic unit, for example a shifter, less work memory could be implemented on the fixed chip area, which in turn means that certain highly complicated cryptography algorithms cannot be executed at all or are slower in calculation than if they are executed and implemented by competing products.
  • the known ZDN method explained with reference to FIGS. 18 and 19 is further disadvantageous in that the three-operand addition of the long number arithmetic unit, which is represented by block 950 in FIG. 18, cannot always take place, but always initially under Using blocks 910 and 930 a calculation of the look-ahead parameters s z , s n and if necessary the parameters a and b have to take place before the three-operand addition can then be carried out. It is a kind of serial two-stroke principle in an iteration loop, in that look-ahead parameters are calculated first and then the
  • the object of the present invention is to create a more efficient concept for calculating a multiplication of a multiplier and a multiplicand with respect to a module.
  • the present invention is based on the knowledge that the calculation of the look-ahead parameters and the implementation of the three-operand addition can be parallelized in such a way that in an actual iteration step, during the exact calculation of the three-operand addition, an approximated three-operand addition Addition is performed to estimate the exact result, and then to calculate the look-ahead parameters for the next iteration step using the estimated result.
  • the look-ahead parameters calculated in the current iteration step can be used in the next iteration step in order to carry out an exact calculation of the intermediate result for the next iteration step, etc.
  • the device according to the invention for calculating a multiplication thus comprises a device for performing an exact three-operand addition, a device for Performing an approximated operand addition to obtain an approximated intermediate result, and a device for calculating look-ahead parameters for the next iteration step using the approximated intermediate result, the devices being designed such that parallel to the exact calculation of the three-operand Addition an approximate calculation and a calculation of the look-ahead parameters for the next step takes place.
  • the accelerated calculation of the look-ahead parameters is combined with a novel iteration method in which the module remains fixed and the multiplicand is shifted with respect to the module.
  • This modification of the known ZDN method which is shown in FIG. 18, has the advantage that better use of resources is made possible with regard to existing sliders for converting the shift values into real register shifts.
  • a transformed module derived from this module is used, which is selected such that some upper bits are known and are always the same regardless of a module currently being used.
  • the device for performing an approximated operand addition in order to obtain an approximated intermediate result can be implemented in a particularly simple manner.
  • Z [L-1, L-12] denotes the top 12 bits of Z. With this approximated Z [L-1, L-12], the shift and sign values can almost always be calculated exactly. In all other cases, you only have suboptimal shift and sign values. However, the result is always correct.
  • FIG. 1 shows a block diagram of a device according to the invention for calculating a multiplication with a shift of the multiplicand
  • FIG. 10 shows a schematic representation of an arithmetic unit for carrying out the modular multiplication with module transformation
  • FIG. 11 shows a schematic representation of an embodiment of the device for performing an approximated operand addition
  • 12 shows a variable definition of a computer program according to the present invention
  • 13 shows a representation of auxiliary functions for the method according to the invention
  • 14b shows a program-like representation of an exemplary embodiment of the method according to the invention with multiplicand shift and parallel calculation of the look-ahead parameters in the current iteration step for the next iteration step;
  • 16a shows a more detailed representation of the look-ahead modulo function used in FIG. 14b;
  • 16b shows a more detailed illustration of the function Postprocessing_Look-Ahead- used in FIG.
  • 1 shows a block diagram of the device according to the invention for calculating a multiplication of a multiplier M and a multiplicand C with respect to a module N. by means of an iteration process with several iteration steps.
  • the multiplier, the multiplicand and the module can be integers or polynomials.
  • multiplication concepts are iterative concepts such that a multiplication is calculated using a plurality of iteration steps that are basically identical.
  • Fig. 1 shows the facilities or sub-steps that can be affected when executing an iteration step.
  • 1 comprises a device 100 for examining positions of the multiplier M for a current iteration step by means of a multiplication look-ahead algorithm in order to obtain a multiplication look-ahead shift value s m at an output 102 of the Get facility 100.
  • the multiplication look-ahead algorithm is a known Booth algorithm which, when implementing several look-ahead rules, also has a multiplication look in addition to a multiplication look-ahead shift value s m -Ahead- parameter v c generated.
  • the explicit calculation of a look-ahead parameter is not necessary if the multiplication look-ahead algorithm only uses one or a limited number of look-ahead rules, such that - provided there are sufficiently large shifters -
  • the sign parameter v c is always "+1". For other look-ahead rules, however, it can also occur that the sign parameter v c is equal to -1.
  • the apparatus shown in Fig. 1 further comprises a means 104 for determining the intermediate result shift value s z , which is in principle designed such that it determines an intermediate result shift value greater than 0, the intermediate result shift value causing an intermediate result to be processed , when shifted by the intermediate result shift value s z , has a most significant bit (MSB) whose order is closer to an order of the most significant bit of the module than a most significant bit of the intermediate result from the previous iteration step.
  • MSB most significant bit
  • a most significant bit is a bit in a register that carries useful information. For example, if a number is less than the register length, and the number in the register is aligned to the right, the number will have a most significant bit placed somewhere in the register. There may be zeros in the register above the MSB of this number, but they do not carry any significant information. Most significant bit is therefore understood to mean the bit of a number that has the highest order in comparison to the other bits of the number and at the same time carries useful information.
  • the device 104 for determining the intermediate result shift value z designed to shift the intermediate result to the left as far as possible, such that the MSB of the shifted intermediate result has the same order as the MSB of the module.
  • module subtraction i.e. a reduction
  • the means 104 for determining the intermediate result shift value is, however, already effective when it produces an intermediate result shift value s z greater than 0.
  • the device according to the invention further comprises a device 106 for calculating a multiplicand shift value s c , which is equal to the difference between the intermediate result shift value s z and the multiplication look-ahead shift value s m . It can be seen from the equation in block 106 of FIG. 1 that even an intermediate result shift value greater than 0 leads to the multiplication shift value s m no longer having full effect and determining the slider dimensioning, but rather that the multiplication Look-ahead shift value s m is already reduced in amount in the case of an s z greater than 0.
  • the apparatus shown in FIG. 1 further comprises a device 108 for shifting the intermediate result Z by the intermediate result shift value s zr, which is provided by the device 104 via an output 110 of both the device 106 and the device 108.
  • the means for shifting is also designed to shift the multiplicand C by the multiplicand shift value s c in order to obtain a shifted multiplicand.
  • the apparatus shown in Fig. 1 further comprises means 112 for performing three-operand addition using the shifted intermediate result, the shifted multiplicand and the module which is fixed to obtain an intermediate result for the current iteration step which is on an output 114 of the three-operand adder 112 is output.
  • the shifting device 108 and the three-operand adding device 112 cannot necessarily be designed as separate devices, but that the shifting of an operand, that is to say the multiplication of the operand by 2 S, is not necessarily hardware-related , which means that it has to be carried out by moving the register, but can also be achieved in software terms by multiplying by 2 S.
  • devices 108 and 112 are merged into a single device that performs the multiplication and subsequent addition functionality according to the equation set out in block 112 in FIG. 1.
  • FIG. 2 shows a schematic representation of the three relevant registers, namely the module register N 200, the multiplicand register C 202 and the intermediate result register Z 204.
  • the module N When the multiplicand in the multiplicand register 202 is shifted, the module N is permanently entered in the module register 200. In addition, it is preferred to left-justify the module N in the module register 200 so that a most significant bit (MSB) is entered in the most significant register position, which is shown on the far left in FIG. 2 and is identified by 206. The bits MSB -1, MSB -2, MSB -3 etc. of module N then follow in the adjacent register cells up to a least significant bit (LSB) 208 of the module.
  • the module N which is either the normal module, which is used, for example, in an RSA calculation, or which, as will be explained below, is preferably a transformed module, is fixed in the module register 200 during the entire iterative calculation.
  • FIG. 2 shows a typical situation in any iteration step when calculating a multiplication of a multiplier M and the multiplicand C with respect to the module N. From FIG. 2 it can be seen that the multiplicand C is already 5 bits to the right, that is to say in the underflow Buffer 210 has been inserted. It can also be seen that the intermediate result register is currently occupied in such a way that the current intermediate result could be shifted up by 3 bits.
  • the module N is always arranged left-justified in the module register 200.
  • LSB 208 of module N is somewhere in the module register.
  • the bits 210 below the LSB 208 of the module N in the module register then define the underflow buffer into which the multiplicand C can move.
  • the value Z in the intermediate result register 204 is always shifted as high as possible so that a reduction takes place.
  • a shift value s z 218 (3 bits) is selected, so that the MSB 220 of the current Z value in the Z register 204 is equal in its order to the MSB 206 of the module. If module N is then subtracted from register Z, the difference will be relatively small since the numbers are approximately the same size. At this point it is pointed out that positive as well as negative numbers can be expected.
  • the multiplication look-ahead algorithm determines that the multiplication shift value is s m 3, that is to say s z 218, a multiplicand shift value s c is calculated to be 0. If this result is obtained using the known ZDN algorithm is compared, it turns out that in this case the s z has been chosen as the Booth algorithm allows. There is therefore no need for a coma shift, that is to say no shift of the multiplicand C.
  • the Booth algorithm now determines an s m that is greater than s z , the intermediate result value was increased by z in the iteration method described in FIG. B. shifted up one bit too little. This means that Z is too small compared to C for the three-operand addition without countermeasures. To counteract this situation, the multiplicand C is therefore z. B. shifted a bit according to the difference between s z and s m to the right, so that the relationships between C and Z are correct again.
  • FIG. 2 thus has two major advantages with regard to the use of existing shift resources.
  • a shifter for shifting Z and C as could be implemented in the shifting device 108 of FIG. 1, is shown in FIG. 3.
  • the shifter schematically comprises a first shifter part 108a for shifting Z and a second shifter part 108b for shifting C.
  • the first shifter part 108a is a shifter that can only shift in the positive direction. It is used to move Z.
  • FIG. 2 shows the case after a three-operand addition, which is why the LSB 212 from C and the LSB 214 from Z have the same value, because of the
  • the LSB 214 is determined by the LSB of all operands involved in block 112 of FIG. 1. After N is fixed and C can be shifted downwards, C always determines the LSB of Z after a three-operand addition. If, as has been described, Z were now shifted to the left by s z 218, the LSBs 212 and 214 of C and Z would diverge before the three-operand addition and then again after the three-operand addition collapsing. Since s m is always positive, since the multiplier is not suddenly processed in the opposite direction, i.e. from low-order to higher-order bits, and after s z is always positive, the amount of s c is always less than s z , so that the LSB of Z is always determined by C.
  • the large shifter 108a which can shift by +5, is therefore used for s z , so that this large shift value Z always pushes as close to N as possible.
  • the LSB 212 of the multiplicand C therefore no longer has to be shifted upwards when all the multiplier positions have been processed using the small slider 108b, which would only allow a shift value by 3 to the left in one step. Instead, the moment the multiplicand has been processed, the multiplicand is uninteresting and is no longer required.
  • the final reduction therefore takes place with large steps, while in the known method this had to be accomplished with the small shifter, since it was necessary there for the module N to be moved back to its original position.
  • the module N is fixed, while the comma is handled by the multiplicand C, which, however, is of no interest for the final reduction, since there are no longer any multiplier positions.
  • the multiplication look-ahead parameter v c is therefore equal to 0 anyway, so that the large slider Z, which allows a shift of up to 5, can always be used to push up Z in the "degenerate" final operand additions.
  • the exemplary shift device shown in FIG. 3 provides a virtual booth shifter of length 8 (!) And a reduction shifter for a 5-shifter for Z and a -3, ...., + 3-shifter for C. length 5.
  • FIG. 4 shows a block diagram of a device for calculating a multiplication of a multiplicand and a multiplier with respect to a module by means of an iteration method with a plurality of iteration steps, which comprise a previous iteration step and a current iteration step.
  • the device shown in FIG. 4 shows a block diagram of a device for calculating a multiplication of a multiplicand and a multiplier with respect to a module by means of an iteration method with a plurality of iteration steps, which comprise a previous iteration step and a current iteration step.
  • look-ahead parameters are on the one hand the shift values, but on the other hand they are also the signs for the multiplicand and the module, which depending on the look-ahead rule and the situation of the shift values with regard to the available shifter and the size of the available underflow buffer are determined and can be +, - or 0, as will be explained later.
  • the apparatus for accelerated execution of the iteration method shown in FIG. 4 comprises a device 400 for carrying out an exact three-operand addition for the previous iteration step using a previous intermediate result Z before 402, the module N 404, the multiplicand Z 406 and of previous look-ahead parameters, which are provided in the schematic representation of FIG. 4 via a line 408.
  • the facility 400 . to calculate the exact three-operand addition provides an exact intermediate result for the current iteration step Z ak t, which is denoted by 410 in FIG. 4.
  • the approximated intermediate result 414 for the current iteration step which does not correspond to the exact intermediate result Z act 410, but which represents an estimate or prediction thereof, and using the multiplier M 416, the current look-ahead parameters are then calculated and via a line 418 issued.
  • the device 417 for calculating the current look-ahead parameters thus, as has been carried out, uses the current approximated intermediate result 414 and the multiplier 416 to calculate the current look-ahead parameters 418.
  • the device shown in FIG. 4 is also effective so that the device for performing the exact three-operand addition is designed to perform an exact three-operand addition in the current iteration step using the exact intermediate result 410 for the current iteration step below Using the module N 404, the multiplicand 406 and the current look-ahead parameters that are provided by the device 417 via the line 418.
  • FIG. 4 This situation is shown schematically in FIG. 4 in such a way that a device 400 'for calculating the exact three-operand addition for the current iteration step is shown, and that a device 412' for calculating the approximated operand addition for the current iteration step is shown, and that a device 417 'for calculating the future look-ahead parameters is shown.
  • the device 412 ′ is designed to use the current intermediate result 410 and of the module N to carry out an approximate operand addition in order to estimate the intermediate result Z for the subsequent step, which is calculated exactly by the device 400 'and designated 420, as Z after , approx 422.
  • the future look-ahead parameters are then calculated, at least taking into account the multiplier M 416.
  • a cryptography processor has a single device 400 for calculating the exact three-operand addition, a single device for calculating the approximated operand addition and a single device for calculating the look-ahead parameters on the basis of an approximated intermediate result.
  • a control device is provided which causes the three devices to be fed with new corresponding input parameters for each iteration step, as can be seen from FIG. 4.
  • the device 417 (or 417 ') is designed to have the functionalities of the devices 100, 104, 106 of FIG. 1 for the new method with shiftable multiplicand C.
  • the device 417 or 417 ' is designed to have the functionalities of the devices 910, 930, which, as can be seen from FIG. 18, also with an approximated one instead of the exact intermediate result of the previous step Intermediate result of the previous step can be fed.
  • each iteration loop basically consisted of two serial stages, namely firstly the calculation of the look-ahead parameters for the current iteration step (910, 930) and then the calculation of the three-operand addition together with the corresponding shifts (920, 940, 950).
  • the new concept could also be carried out by shifting the multiplicand C, in that in an iteration step, blocks 100, 104, 106 are first effective in order to carry out s c and s z for the current iteration step, and then when the look-ahead Parameters have been calculated, corresponding shifts are made with the device 108 and a three-operand addition is carried out with the device 112.
  • the acceleration concept shown in FIG. 4 therefore creates a problem with the old ZDN method from FIG. 18 and the 1, which consisted of the shift and sign parameters s z , s n , a and b of FIG. 18 or s c and s z as well as v c and v n 1 had to be calculated first, that is before a respective three-operand addition.
  • the adder 950 in the old method of FIG. 18 or the adder 112 in the new method of FIG. 1 would have been idle.
  • the approximation is based on the fact that the uppermost bits of Z essentially do not depend on C. This is because, as has already been stated, the reduction in multiplication always lags somewhat. As a result, when the numbers Z, N and C are considered, Z is large compared to C whenever the reduction is lagging. It is therefore preferred to ignore for the approximated three-operand addition in block 412 C, so that the approximated three-operand addition actually becomes a two-operand addition, which is also important in view of the above statements the top Bits with only a number of upper bits that is less than the total number of bits, such as. B. with the upper 12 bits of Z and N, neglecting C.
  • the approximated operand addition in block 412 it is not the original module that is used as module N 404, but rather a transformed module that is described in DE 10111987 AI
  • the approximated operand addition can preferably be carried out in a hard-wired combinatorial manner in such a way that it proceeds much faster than the exact three-operand addition, so that during the execution of the exact Three-operand addition still has sufficient time to calculate the look-ahead parameters for the next step on the basis of an approximated intermediate result Z approx .
  • FIG. 5 shows a flow diagram of a method for the modular multiplication of a multiplicand C by a multiplier M using a module N.
  • the module N is transformed into a transformed module N ⁇ according to the following equation:
  • a step 520 the modular multiplication is then processed using the transformed module N ⁇ and the predetermined fraction of the transformed module, which is 2/3 in the preferred exemplary embodiment.
  • a back-transformation from N ⁇ to N is then carried out again by performing an operation which corresponds to the following equation:
  • C: C ⁇ mod N.
  • the transformed result C ⁇ which lies in the residual class of the transformed module N ⁇ , is preferably returned to the residual class of the module N by a simple shift / subtraction reduction, so that C is the result of the modular exponentiation.
  • the transformation of the module N into a transformed module N ⁇ using the transformer T from step 500 is carried out in such a way that the predetermined fraction of the transformed module, that is to say, 2/3 times the transformed module in the preferred exemplary embodiment, is a higher-order digit with a first predetermined value that follows at least one least significant digit that has a second predetermined value.
  • the comparison of the intermediate result Z with 2/3 times the transformed module can be greatly simplified, namely by searching for the uppermost digit of Z, which also has the first predetermined value, and the difference between the more significant digit with first predetermined value of the predetermined fraction of the transformed module and the uppermost position of the intermediate result Z with the first predetermined value is equal to the difference si.
  • N is preferably used in the 32-bit CPU and not in the crypto
  • N 1 T x N
  • T is a natural number
  • the value Si is always the distance between the most significant bit with a 1 of 2/3 times the transformed module N ⁇ and the most significant 1 of the amount of the intermediate result.
  • a ZDN register is no longer required to store 2/3 times the module, since by definition at least the upper 16 bits, for example, 2/3 times the transformed module N ⁇ always have the same shape.
  • a bit comparator is no longer required.
  • the difference in value of the most significant digit 2/3 times the transformed module N ⁇ with a "1" and the most significant digit of Z with a "1" can easily be done, for example, by bitwise XORing the register for the transformed module and the Register for the intermediate result Z are performed.
  • Si is then equal to the difference in the valency of the point where the XOR link outputs a first "1" and where the XOR link outputs a second "1".
  • the crypto control part that is to say the control logic for the ZDN comparison (760 in FIG. 10)
  • the crypto control part has a smaller complexity since the complex iteration loop from FIG. 19 does not must be carried out.
  • the calculation is faster, so that the calculation of the auxiliary shift value Si no longer results in timing problems for the entire algorithm.
  • si is called the auxiliary shift value and is the shift value necessary to move Z to the same position as N in places.
  • with 2/3 N necessary.
  • the comparison with 2/3 is simplified by transforming the module into the transformed module N, where the transformed module N ⁇ is greater than N before any modular operation with N is performed. Then all modulo N ⁇ calculations are performed. However, since the result of the calculation must be in the residual class N, a final reduction with N is carried out.
  • MSB the second most significant bit
  • the most significant m bits of the Module N define a first part of the module N ⁇ , while the remaining Nm bits of the module define a second part N R of the module. In a preferred embodiment, m is 16. Of course, larger or smaller values of m are also possible.
  • the transformation is performed such that the transformed module N ⁇ is 16 bits longer than the original module of FIG. 6.
  • the likelihood that the comparison will give an incorrect result is less than 2 ⁇ 12 . If the comparison provides an incorrect result, only a sub-optimal 1er reduction shift value s N is generated, but the result Mo dulo N is still correct.
  • the module N can be broken down as follows:
  • N 2 ⁇ m N ⁇ + N R.
  • N is transformed to N ⁇ using the transformer T, where T is a suitably chosen integer, which must be the case for reasons of congruence.
  • N ⁇ should be in the form shown in Fig. 7, ie the most significant bit (MSB) of.
  • N ⁇ must be 0, since N ⁇ should be a positive integer.
  • the second most significant and third most significant bits of the transformed module must be 1, while all other bits of the top section of the transformed module N ⁇ , which is denoted in FIG. 7 by the reference numeral 33 should have a value of "0". Only in this case, namely, for 2/3 times N ⁇ , the uppermost section is 2/3 times N ⁇ , as shown in FIG. 8, has only one bit with a "1", while all other bits in this uppermost section 44 are equal to "0", so that the trivial comparison already described for determining S is carried out can.
  • N ⁇ N R N ⁇ (2 n + p "" m-2 + 2 n + p ⁇ m ⁇ 3 ) + (2 P_2 +2 P ⁇ 3 )
  • N ⁇ N ⁇ For example, if typical values for p and m are taken, i.e. p is 32 bits and m is 16 bits, the following results for N ⁇ :
  • N 2 n + l 4 + 2 n + 13 + "
  • N is preferably done in the host CPU rather than in the crypto coprocessor.
  • the host CPU includes a short number arithmetic unit, which is sufficient for the calculation of N ⁇ . Since T must be an integer and the calculations are carried out within the crypto-coprocessor Modulo N ⁇ instead of Modulo N, where N ⁇ is greater than N, only the first pm are 16 bits of N ⁇ for the trivial ZDN comparison, um to calculate the auxiliary displacement value S, relevant. The other n bits of N ⁇ can be any number, they are not relevant for the calculation of the auxiliary shift value Si, that is, for the comparison with Z. Of course, however, all bits of the transformed module N ⁇ are required for the three-operand addition, which is now carried out using the shifted transformed module instead of using the shifted module.
  • the transformer T is a 16-bit integer. Therefore, the division required to compute T or compute N ⁇ only needs to be performed for the most significant 32 bits and can therefore be programmed quickly and easily on the host CPU.
  • the result is a simple bit pattern for 2/3 times the transformed module N ⁇ , the length of 2/3 times the transformed module N ⁇ being n-m + p.
  • the difference in the bit position of the first one in the register N and in the register Z determines the auxiliary shift value S.
  • a final reduction in modulo N is carried out, that is, a reverse transformation (step 540 in FIG. 5) must be carried out.
  • Randomization of the module N can be combined, as shown with reference to FIG. 9. If R random s bit long Is a number, the randomized transformed module N ⁇ has the form shown in FIG. 9. Due to the randomization number N, the randomized transformed module is s bits longer compared to the case in which no randomization has been carried out (FIG. 7), that is to say by the number of digits of R.
  • the randomized transformer T is then as follows:
  • N 2 n + 126 + 2 n + 125 + R 2 n-16 + NR _ The bit length of N ⁇ is then:
  • FIG. 10 shows an arithmetic unit which now no longer has a ZDN register, but only an arithmetic unit 700, a C register 710, an N register 720 and a Z register 730, the N register 720 no longer the module or a shifted module is stored, but the transformed module or a shifted transformed module or else a randomized transformed module or a shifted randomized transformed module.
  • FIG. 11 again shows the module register 200 and the Z register 204.
  • FIG. 11 shows the case of the transformed module, the upper bits of which according to FIG. 7 are 011000
  • the device for calculating an approximated intermediate result can furthermore be implemented with little expenditure on chip area, so that an almost doubling of the speed of the arithmetic unit only has to be bought by a very small “output” on chip area.
  • FIGS. 12 to 17b represent a flow chart representation of the method according to the invention in the form of an intuitive pseudo-code.
  • FIGS. 12 to 17b also show that the concept according to the invention can be implemented not only in hardware but also in software, depending on the circumstances.
  • the implementation can take place on a digital storage medium, in particular a floppy disk or CD with electronically readable control signals, which can cooperate with a programmable computer system in such a way that the method according to the invention is carried out.
  • the invention thus also consists in a computer program product with a program code stored on a machine-readable carrier for carrying out the method according to the invention when the computer program product runs on a computer.
  • the invention can thus be used as a computer program with a program code Implementation of the method can be realized when the computer program runs on a computer.
  • the variable Csh is, as shown in Fig. 3 at 108b, defined at 3, which specifies the shifter for the multiplicand C such that a multiplicand shift value s c from -3 to +3 can be used.
  • the variable Zsh is equal to 5 and, as shown in block 108a of FIG. 3, defines the size of the slider for the intermediate result, that is, the size that the intermediate result shift value s z can have.
  • the variable NoZeros defines the number of zeros (number of zeros) that the transformed module N ⁇ has in register 200, starting from the MSB-12 in FIG. 11 upwards. It is defined in Fig. 12 as the sum of Csh and Zsh, although other quantities can be used for this.
  • the variable NoTopBits quantifies the total number of upper bits of the Z register 204 which are generated by the Z multiplexer 412a from the Z
  • Calculator specified This number has been arbitrarily set to 160 in FIG. Alternatively, this number could of course also 1024, 2048 or z. B. are significantly above 2048 and, for example, 2304, in order to have sufficient space for underflow buffer 210 for RSA modules (FIG. 2) and also a sufficient space for accommodating the transformed module, which is larger than the normal “module” , to deliver.
  • the debug variable is an output variable, which is not of major importance in the following. 13 shows some auxiliary functions which are required for the methods shown in later figures.
  • the ReturnBit function returns the bit at position i of a number X.
  • the SetBit function is able to assign the bit at position i of a number X with a value specified by "Value", ie 0 or 1.
  • the BitLength function is able to calculate the length of a number in a register from an LSB to an MSB. Based on register 204 in FIG. 4, the BitLength function would provide the number of bits between the MSB 220 and the LSB 214.
  • FIG. 14a shows settings / definitions or adjustments and initializations for the modular multiplication, as is shown schematically with reference to FIG. 1.
  • the external variables have already been explained with reference to FIG. 12.
  • variable Z means the intermediate result.
  • the variable ApproxZ means the approximated intermediate result, which is calculated, for example, by the block 412 in FIG. 4 and is designated 414 in FIG. 4.
  • the variable Lsb provides the comma of the multiplicand, so to speak. At the beginning of a calculation, the variable Lsb specifies the length of the underflow buffer 210 in bits and is, for example, 9 in the example shown in FIG. 2. In the intermediate state shown in FIG.
  • variable Lsb in which the LSB 212 of the multiplicand is already in the Underflow buffer 210 has been shifted, the variable Lsb would be 4, for example, to mean that four bits in the underflow buffer are still possible for a further shift of the multiplicand downwards.
  • the variable cur_lsb changes with each shift of the multiplicand C and limits the shift value s c , as will be shown later.
  • the variable LAccu defines the length of the multiplier in bits.
  • the variable c indicates by how much the multiplicand C has already been shifted down.
  • the sum of c and cur_Lsb is therefore constant and always corresponds to the length of the underflow buffer 210, which can be up to 300 bits and is preferably between 30 and 50 bits. It should be noted that this value can vary, since it ultimately depends on the size of the numbers involved.
  • the look-ahead parameters that are used in a preferred exemplary embodiment of the present invention are defined in the block “determination variables for the three-operand addition.
  • the variable VZ_C is the sign v c in block 112 of FIG. 1.
  • the variable VZ_N represents the sign of the module v n in block 112 of FIG. 1.
  • the variable s_Z represents the intermediate result shift value in block 112 of FIG. 1.
  • the variable s_C represents the multiplicand shift value as it is in block 112 1 and is calculated in block 106 of FIG. 1.
  • m is the number of the bit currently being viewed by the multiplier, and, as is known, multiplier bits are processed from top to bottom. As long as m is greater than 0, there are still multiplier bits. The largest value that m can take is LAccu, ie before an iterative multiplication begins. Where. no position of the multiplier has yet been processed.
  • variable LA defines a look-ahead rule used, it being possible to use the look-ahead rules as described in DE 3631992 C2 (corresponding to US patent no. 4,870,681).
  • the variable s_M is the multiplication shift value s m as calculated by block 100 of FIG. 1.
  • the individual variables are adjusted and initialized using the given sizes.
  • Lsb which is set on the basis of the bit length of a module N (or transformed module N ⁇ ) to be processed.
  • the underflow buffer depends on a module used for each z. B. RSA calculation, i.e. for a modular exponentiation with a module is reinitialized.
  • the module is left-justified in the register, which means that a smaller underflow buffer is available for smaller modules and vice versa.
  • Termination conditions are, on the one hand, that m is 0, that is to say that all multiplier positions are processed, and that c is 0, that is to say that the multiplicand at the end of the entire modular multiplication again with respect to an LSB 212 with the LSB 208 of module N (referring to is aligned to Fig. 2).
  • m will initially be 0, while only a few cycles later, c will be 0, since the reduction, as has been carried out, lags somewhat behind the multiplication or "lags behind”.
  • a first function LAModulo is carried out, using an approximated intermediate result.
  • the function LAModulo which will be explained in the following, thus represents the functionality of the device 417 in which look-ahead parameters for the next iteration step are calculated using an approximated intermediate result Z approx .
  • This is followed by a function Postprocessing_LAModulo, a function LAMultiplication and a function Postprocessing_LAMultiplication to generally calculate the multiplication shift value s z and the multiplication look-ahead parameter v n .
  • Corresponding reduction forecast parameters s z and v n are calculated in the above function LAModulo.
  • LAModulo, Postprocessing_LAModulo, LAMultiplication and Postprocessing_LAMultiplication all take place in device 417, in which the look-ahead parameters for the current three-operand addition are not calculated, but rather the look-ahead parameters for the next one Iteration step.
  • the multiplicand C is then shifted by the corresponding multiplicand shift value, which corresponds to the functionality of the device 108 from FIG. 1 or, depending on the definition of the device 400 from FIG. 4, for the exact calculation of the three-operand addition.
  • FIG. 15 shows an overview of the three-operand addition function that is performed as shown in block 112 of FIG. 1. 15 that in the implemented three-operand addition, the shift of C is carried out outside the three-operand addition, while the shift of Z by s z is carried out within the three-operand addition. This has advantages with certain designs. Alternatively, however, the shift of C could be carried out within the three-operand addition, or both shifts could be carried out outside the three-operand addition.
  • MaxRegBitLength only serves to simulate in software terms that a most significant bit of the Z register in the case in which s z was chosen so that the MSB 220 2, in addition and in carry ripple may fall all the way to the top, which, however, as is known in the art, is not critical if special carry handling routines are used become.
  • the shift function in FIG. 15 is self-explanatory and shows in software terms how a register content X is shifted by a shift value s_X either to the left or to the right.
  • a shift to the left in binary form means multiplication by 2 SX .
  • a shift to the right means a division by 2 SX .
  • the function LAModulo which is shown in FIG. 16a, is effective in order to calculate the reduction parameters, which on the one hand include the intermediate result shift value s z and on the other hand the sign of the module VZ_N.
  • Z, N and c are preferred as input variables.
  • variable cur_Zsh is set to the minimum of the variable Zsh, that is to say the shifter length of the intermediate result shifter and c, that is to say the current deviation of the LSB of the multiplicand from the start LSB 208 in FIG. 2.
  • the approximate three-operand addition is then carried out, which in principle works in exactly the same way as the exact three-operand addition, with the difference that only the upper 12 bits or the NoTopBits are taken from N, and that in the three Operand addition formula s c and the sign of C, ie v c are set to 0.
  • the subsequent 0/1 finder first delivers the most significant significant bit of register Z and then increments the shift value s z as long as s z is smaller than the variable cur_Zsh and at the same time does not exceed the maximum register length.
  • the last case in the if loop relates to the case which is not shown in FIG. 2, in which s z could be chosen to be larger than is permitted by the slide Zsh, in which case the MSB in the Z register 4 by more bits than Zsh from the module's MSB 206 in module register 200.
  • s z is set to Zsh via cur_Zsh.
  • the postprocessing_LAModulo function is shown in FIG. 16b. If m is greater than 0, that is, if there are still multiplier positions to be processed, and if s z is greater than 0 while c is less than the number of zeros with regard to the transformed module, no shift is made, but s z set to 0. At the same time, a reduction is also prevented, ie the sign v n is set to 0.
  • 17a shows the LAMultiplication function, which defines the multiplication look-ahead algorithm.
  • the variables cur_Csh and s m are initialized, as shown in Fig. 17a.
  • a 0/1 finder is executed during which the variable s m is incremented. If the termination condition is met without a special situation, the while loop already results in the multiplication
  • Displacement value s m calculated in block 100 of FIG. 1.
  • a corresponding special treatment is then carried out in order, for example, B. to set the sign v c of the multiplicand to 0 if, for example, a larger multiplication shift value is possible than is actually permitted by the sliders. In this case, it is only pushed up, modularly reduced, but no multiplicand is added.
  • 17b shows the function Postprocessing_LAMultiplication, in which the functionality of the device 106 is carried out - in which s c is calculated from s z - s m .
  • s c is obtained which is greater than the permitted length C Sh of the C-shifter
  • s c is set equal to the maximum shifter length
  • s z is set as shown in FIG. 17b is shown
  • the sign of the module v n in the three-operand addition is set to 0 in block 112 of FIG. 1, so that no reduction takes place since the maximum shift value has not been taken, but a shift value s z , which has been set in the post-processing function shown in Fig. 17b.
  • 112 device for performing the three-operand addition 114 intermediate result from the current iteration step 200 module register 202 multiplicand register 204 intermediate result register 206 MSB of the module 208 LSB of the module 210 underflow buffer 212 LSB of the multiplicand 214 LSB of the intermediate result after a three Operand addition 218 Maximum intermediate result shift value 220 MSB of the intermediate result
  • 412c buffer for storing the shifted 12 bits of Z 412d combinatorics feed line 412e combinatorics

Landscapes

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

Abstract

Die Vorrichtung zum Berechnen einer Multiplikation eines Multiplikators und eines Multiplikanden umfasst eine Einrichtung (400) zum Durchführen einer exakten Drei-Operanden-Addition sowie eine Einrichtung (412) zum Durchführen einer approximierten Operanden-Addition sowie eine Einrichtung (417) zum Berechnen von aktuellen Vorausschau-Parametern unter Verwendung des von der Einrichtung (412) berechneten approximierten Zwischenergebnisses (414). Die Einrichtung zum Durchführen der exakten Drei-Operanden-Addition ist ferner ausgebildet, um eine exakte Drei-Operanden-Addition (400‘) in dem aktuellen Iterationsschritt unter Verwendung des exakten Zwischenergebnisses für den aktuellen Iterationsschritt und unter Verwendung der von der Einrichtung (417) berechneten Vorausschau-Parameter für den aktuellen Iterationsschritt durchzuführen. Damit kann das Langzahlrechenwerk durchgehend Drei-Operanden-Additionen ausführen und muss nicht mehr stillstehen, während Vorausschau-Parameter berechnet werden. Dies führt zu einer erheblichen Leistungssteigerung bei kryptographischen Berechnungen.

Description

Beschreibung
Modulare Multiplikation mit paralleler Berechnung der Look- Ahead-Parameter
Die vorliegende Erfindung bezieht sich auf die Kryptographie und insbesondere auf Konzepte zum Berechnen einer Multiplikation eines Multiplikators und eines Multiplikanden bezüglich eines Moduls innerhalb einer kryptographischen Berechnung, wobei der Multiplikator, der Multiplikand und der Modul Parameter der kryptographischen Berechnung sind.
Die Kryptographie ist eine der wesentlichen Anwendungen für die modulare Arithmetik. Ein wesentlicher Algorithmus für die Kryptographie ist der bekannte RSA-Algorithmus . Der RSA-
Algorithmus baut auf einer modularen Exponentiation auf, welche folgendermaßen dargestellt werden kann:
Md mod (N) .
Hierbei ist C eine verschlüsselte Nachricht, M ist eine nicht-verschlüsselte Nachricht, d ist der geheime Schlüssel und N ist der Modul. Der Modul N wird üblicherweise durch Multiplikation zweier Primzahlen p und q erzeugt. Die modula- re Exponentiation wird mittels des bekannten Square-and-
Multiply-Algorithmus in Multiplikationen zerlegt. Hierzu wird der Exponent d in Zweierpotenzen zerlegt, so daß die modulare Exponentiation in mehrere modulare Multiplikationen zerlegt werden kann. Um die modulare Exponentiation rechenmäßig effi- zient implementieren zu können, wird die modulare Exponentiation daher in modulare Multiplikationen zerlegt, welche dann in modulare Additionen zerlegt werden können.
Die DE 3631992 C2 offenbart ein Kryptographie-Verfahren, bei dem die modulare Multiplikation unter Verwendung eines Mul- tiplikations-Vorausschau-Verfahrens und unter Verwendung eines Reduktions-Vorausschau-Verfahrens beschleunigt werden kann. Das in der DE 3631992 C2 beschriebene Verfahren wird auch als ZDN-Verfahren bezeichnet und anhand von Fig. 18 näher beschrieben. Nach einem Startschritt 900 des Algorithmus werden die globalen Variablen M, C und N initialisiert. Ziel ist es, folgende modulare Multiplikation zu berechnen:
Z = M * C mod N.
M wird als der Multiplikator bezeichnet, während C als der Multiplikand bezeichnet wird. Z ist das Ergebnis der modula- ren Multiplikation, während N der Modul ist.
Hierauf werden verschiedene lokale Variablen initialisiert, auf die zunächst nicht näher eingegangen werden braucht. An- schließend werden zwei Vorausschau-Verfahren angewandt. Im
Multiplikations-Vorausschau-Verfahren GEN_MULT_LA wird unter Verwendung verschiedener Look-Ahead-Regeln ein Multiplikati- ons-Verschiebungswert sz sowie ein Multiplikations- Vorausschau-Parameter a berechnet (910) . Hierauf wird der ge- genwärtige Inhalt des Z-Registers einer Links-Verschiebungs- Operation um sz-Stellen unterzogen (920) .
Im wesentlichen parallel dazu wird ein Reduktions- Vorausschau-Verfahren GEN_Mod_LA (930) durchgeführt, um einen Reduktionsverschiebungswert SN und einen Reduktions-Parameter b zu berechnen. In einem Schritt 940 wird dann der gegenwärtige Inhalt des Modul-Registers, also N, um sN Stellen nach links bzw. rechts verschoben, um einen verschobenen Modulwert N' zu erzeugen. Die zentrale Drei-Operanden-Operation des ZDN-Verfahrens findet in einem Schritt 950 statt. Hierbei wird das Zwischenergebnis Z' nach dem Schritt 920 zu dem Multiplikanden C, der mit dem Multiplikations-Vorausschau- . . . Parameter a multipliziert ist, und zu dem verschobenen Modul N', der mit dem Reduktions-Vorausschau-Parameter b multipli- ziert ist, addiert. Je nach aktueller Situation können die Vorausschau-Parameter a und b einen Wert von +1, 0 oder -1 haben. Ein typischer Fall besteht darin, daß der Multiplikations- Vorausschau-Parameter a +1 beträgt, und daß der Reduktion- Vorausschau-Parameter b -1 beträgt, so daß zu einem verscho- benen Zwischenergebnis Z' der Multiplikand C hinzu addiert wird, und der verschobene Modul N' davon subtrahiert wird, a wird einen Wert gleich 0 haben, wenn das Multiplikations- Vorausschau-Verfahren mehr als eine voreingestellte Anzahl von einzelnen Links-Verschiebungen zulassen würde, also wenn sz größer als der maximal zulässige Wert von sz ist, der auch als k bezeichnet wird. Für den Fall, daß a gleich 0 ist, und daß Z' aufgrund der vorausgehenden modularen Reduktion, also der vorausgehenden Subtraktion des verschobenen Moduls noch ziemlich klein ist, und insbesondere kleiner als der verscho- bene Modul N' ist, muß keine Reduktion stattfinden, so daß der Parameter b gleich 0 ist.
Die Schritte 910 bis 950 werden so lange durchgeführt, bis sämtliche Stellen des Multiplikanden abgearbeitet sind, also bis m gleich 0 ist, und bis auch ein Parameter n gleich 0 ist, welcher angibt, ob der verschobene Modul N' noch größer als der ursprüngliche Modul N ist, oder ob trotz der Tatsache, daß bereits sämtliche Stellen des Multiplikanden abgearbeitet sind, noch weitere Reduktionsschritte durch Subtrahie- ren des Moduls von Z durchgeführt werden müssen.
Abschließend wird noch bestimmt, ob Z kleiner als 0 ist. Falls dies der Fall ist, muß, um eine abschließende Reduktion zu erreichen, der Modul N zu Z hinzuaddiert werden, damit schließlich das korrekte Ergebnis Z der modularen Multiplikation erhalten wird. In einem Schritt 960 ist die modulare Multiplikation mittels des ZDN-Verfahrens beendet.
Der Multiplikations-Verschiebungswert sz sowie der Multipli- kations-Parameter a, welche im Schritt 910 durch den Mul- tiplikations-Vorausschau-Algorithmus berechnet werden, ergeben sich durch die Topologie des Multiplikators sowie durch die eingesetzten Vorausschau-Regeln, die in der DE 3631992 C2 beschrieben sind.
Der Reduktions-Verschiebungswert sN und der Reduktions- Parameter b werden, wie es ebenfalls in der DE 3631992 C2 beschrieben ist, durch Vergleich des gegenwärtigen Inhalts des Z-Registers mit einem Wert 2/3 mal N bestimmt. Aufgrund dieses Vergleiches trägt das ZDN-Verfahren seinen Namen (ZDN = Zwei Drittel N) .
Das ZDN-Verfahren, wie es in Fig. 18 dargestellt ist, führt die modulare Multiplikation auf eine Drei-Operanden-Addition (Block 950 in Fig. 18) zurück, wobei zur Steigerung der Rechenzeiteffizienz das Multiplikations-Vorausschau-Verfahren und damit einhergehend das Reduktions-Vorausschau-Verfahren eingesetzt werden. Im Vergleich zur Montgomery-Reduktion für kann daher ein Rechenzeitvorteil erreicht werden.
Im nachfolgenden wird anhand von Fig. 19 näher auf das Reduk- tions-Vorausschau-Verfahren eingegangen, das im Block 930 von Fig. 18 ausgeführt wird. Zunächst wird in einem Block 1000 eine Reservierung für die lokalen Variablen, d. h. den Reduk- tions-Vorausschau-Parameter b und den Reduktionsverschiebungswert sN/ durchgeführt. In einem Block 1010 wird der Reduktions-Verschiebungswert sN auf Null initialisiert.
Hierauf wird in einem Block 1020 der Wert ZDN berechnet, der gleich 2/3 des Moduls N ist. Dieser Wert, der im Block 1020 bestimmt wird, wird in einem eigenen Register, dem ZDN- Register, auf dem Kryptocoprozessor abgespeichert.
In einem Block 1030 wird dann bestimmt, ob die Variable n gleich 0 ist, oder ob der Verschiebungswert sN .gleich- -k is-t-.-- k ist ein Wert, welcher den maximalen Verschiebungswert, welcher durch die Hardware vorgegeben ist, definiert. Im ersten Durchgang wird der Block 1030 mit NEIN beantwortet, so daß in einem Block 1040 der Parameter n dekrementiert wird, und daß in einem Block 1060 auch der Reduktions-Verschiebungswert um 1 dekrementiert wird. Dann wird in einem Block 1080 die Variable ZDN neu belegt, nämlich mit ihrem halben Wert, was durch eine Rechts-Verschiebung des im ZDN-Register stehenden Werts ohne weiteres erreicht werden kann. In einem Block 1100 wird dann festgestellt, ob der Absolutwert des aktuellen Zwischenergebnisses größer als der im ZDN-Register stehende Wert ist.
Diese Vergleichsoperation im Block 1100 ist die zentrale Operation des Reduktions-Vorausschau-Verfahrens. Wird die Frage mit JA beantwortet, so ist die Iteration beendet und der Re- duktions-Vorausschau-Parameter b wird, wie es im Block 1120 dargestellt ist, belegt. Wird die im Block 1100 zu beantwortende Frage dagegen mit NEIN beantwortet, so wird iterativ wieder zurückgesprungen, um die aktuellen Werte von n und sN im Block 1030 zu untersuchen. Wird der Block 1030 irgendwann in der Iteration mit JA beantwortet, so wird zu einem Block 1140 gesprungen, in dem der Reduktions-Parameter b zu Null gesetzt wird. In der in Fig. 18 im Block 950 dargestellten Drei-Operanden-Operation führt dies dazu, daß kein Modul ad- diert oder subtrahiert wird, was bedeutet, daß das Zwischenergebnis Z so klein war, daß keine modulare Reduktion erforderlich war. In einem Block 1160 wird dann die Variable n neu belegt, wobei dann in einem Block 1180 schließlich der Reduk- tions-Verschiebungs-Wert sH berechnet wird, welcher in einem Block 940 von Fig. 18 benötigt wird, um die Linksverschiebung des Moduls durchzuführen, um einen verschobenen Modul zu erreichen.
In den Blöcken 1200, 1220 und 1240 werden schließlich die ak- tuellen Werte von n und k hinsichtlich weiterer Variablen MAX und cur_k untersucht, um die aktuelle Belegung des N- Registers zu untersuchen, um sicherzustellen, daß keine . Re- .. gisterüberschreitungen stattfinden. Die näheren Details sind für die vorliegende Erfindung nicht von Bedeutung, sind je- doch in der DE 3631992 C2 detailliert beschrieben. Der in den Fig. 18 und 19 dargestellte Algorithmus kann hardwaremäßig implementiert werden, wie es in Fig. 10 dargestellt ist. Für die in dem Block 950 durchzuführende Drei-Operanden- Operation wird eine arithmetische Einheit 700 benötigt, die in Fig. 10 mit AU bezeichnet ist. Dieselbe ist mit einem Register C 710 für den Multiplikanden, mit einem Register N 720 für den Modul und mit einem Register Z 730 für das aktuelle Zwischenergebnis der modularen Multiplikation gekoppelt. Aus Fig. 10 ist ferner zu sehen, daß das Ergebnis der Drei- Operanden-Operation über einen Rückkopplungspfeil 740 wieder in das Z-Register 730 eingespeist wird. Aus Fig. 10 ist ferner die Verbindung der Register untereinander zu sehen. Der in dem Block 1020 von Fig. 19 berechnete Wert ZDN muß in einem eigenen ZDN-Register 750 abgespeichert werden. Der ZDN- Vergleich bzw. die in Fig. 19 dargestellte Iterationschleife wird ferner durch eine eigene Steuerlogik 760 für den ZDN- Vergleich ablaufmäßig gesteuert.
Die Hauptarbeit des ZDN-Algorithmus zur Berechnung von Z: = M x C mod N besteht daher in den folgenden beiden Operationen:
1. Berechnung der Verschiebungswerte sz und s± für die Register Z und N, so daß folgende Gleichung erfüllt ist:
2/3 N x 2"si < |Z| < 4/3 N x 2~si und
2. Berechnung der Drei-Operanden-Summe:
Z : = 2sZ Z + a C + b x 2sz~si N,
Der Multiplikations-Vorausschau-Parameter a und der Redukti- ons-Vorausschau-Parameter b können, wie es bekannt, ist, .Werte. von -1, 0 und +1 einnehmen.
Es sei darauf hingewiesen, daß das Zwischenergebnis Z, der
Multiplikand C und der Modul N Langzahlen sind, also Zahlen, deren Anzahl von Stellen bzw. Bits durchaus größer als 512 sein können, wobei diese Zahlen auch bis zu über 2048 Stellen haben können .
Das vorstehend beschriebene bekannte Verfahren zur Ausführung der modularen Multiplikation hat also folgende etwas umgeschriebene Drei-Operanden-Addition der Form:
N: = N * 2sn
Z: = Z * 2SZ + vc * C + vn * N.
In den vorstehenden Gleichungen bezeichnet sz den Shift-Wert des Zwischenergebnisses Z, wie er aus dem bekannten Booth- Verfahren berechnet wird, also dem Multiplikations-Look- Ahead-Verfahren. sn bezeichnet den Shift-Wert von N, wie er, wie vorstehend ausgeführt worden ist, berechnet wird.
In einer praktischen Implementation dürfen die Shift-Werte sz und Sn nicht unbegrenzt groß sein, zumal hierfür Shifter zum Schieben von langen Zahlen vorgesehen werden, die nur eine Bit-Verschiebung in einem Langzahlregister bis zu einem maximalen Verschiebungswert bewältigen können. So wird bei einem Kryptographieprozessor, der gemäß dem bekannten ZDN-Verfahren arbeitet, ein Shiftwert sz zwischen 0 und 5 ermöglicht. Bezüglich der Verschiebung des Moduls wird ein Shift-Wert zwi- sehen -3 und +3 verwendet.
Nachteilig an den begrenzten Shift-Werten ist, daß z. B. der Shift-Wert sz zur Verschiebung des Zwischenergebnisses Z aus einem vorherigen Iterationsschritt für einen aktuellen Itera- tionsschritt oftmals zu klein ist. Dies ist nämlich dann der Fall, wenn der Multiplikations-Vorausschau-Algorithmus feststellt, daß der Multiplikator so beschaffen ist, daß z. B. ein größerer Shift-Wert als 5 möglich ist. Dies ist dann der Fall, wenn je nach Look-Ahead-Regel z. B. mehr als 5 aufein- anderfolgende Nullen in dem Multiplikator vorkommen. Wenn daran gedacht wird, daß der Multiplikator M 1024 oder sogar 2048 Bits hat, so kann diese Situation durchaus des öfteren auftreten. Aufgrund des begrenzten Shift-Werts wird das bekannte ZDN-Verfahren in diesem "Sonderfall" damit reagieren, daß eine Drei-Operanden-Operation durchgeführt wird, und zwar mit dem maximalen Shift-Wert, daß jedoch der Multiplikations- Look-Ahead-Parameter vc zu 0 gesetzt wird, d. h. daß in diesem Schritt der Multiplikand nichts hinzuaddiert wird. Im nächsten Iterationsschritt wird dann ein erneuter Multiplika- tions-Verschiebungswert sz berechnet, der dann, wenn er größer als der maximale Shift-Wert szmax ist, wieder begrenzt wird durch den maximalen Shift-Wert, was wieder zu einer degenerierten "Drei-Operanden-Addition" führt, bei der wieder der Multiplikand nicht hinzuaddiert wird, bei der also nur das verschobene Zwischenergebnis sowie der verschobene Modul unter Berücksichtigung des Vorzeichens für den Modul addiert werden.
Aus der vorstehenden Betrachtung ist zu sehen, daß in einem solchen Sonderfall, wenn der Multiplikations-Look-Ahead- Algorithmus eine große Verschiebung erlauben würde, diese nicht zur maximalen Effizienz umgesetzt werden kann, und zwar aufgrund des begrenzten Shift-Betrags s2max.
Das bekannte ZDN-Verfahren ist daher nicht in der Lage, die volle Effizienz-Steigerung des Multiplikations-Look-Ahead- Verfahrens auszunutzen. Um eine Effizienzsteigerung zu erreichen, müßte beim bekannten ZDN-Verfahren eine Shifter- Vergrößerung vorgenommen werden, die jedoch insbesondere bei integrierten Schaltungen für Chipkarten dazu führt, daß mehr Chipfläche benötigt wird, was aufgrund enger Chipflächenvor- gaben von Chipkartenherstellern nicht immer tolerabel ist bzw. zu erheblichen Preissteigerungen führen kann.
An dieser Stelle sei darauf hingewiesen, daß besonders auf dem Gebiet der Kryptographieprozessoren ein eminent wettbe- werbsintensiver Markt vorhanden ist, bei dem bereits kleine Unterschiede im Preis dazu führen werden, daß ein Anbieter überlebt, während ein anderer Anbieter nicht überlebt. Dies liegt daran, daß Prozessoren für Chipkarten ein Massenprodukt sind, da Chipkarten typischerweise in großen Anzahlen gefertigt werden.
Andererseits bestehen erhebliche Sicherheitsanforderungen an Chipkartenprozessoren, da Chipkarten typischerweise in der Hand von Benutzern sind, also auch in der Hand von Angreifern, die den anzugreifenden Chipkartenprozessor vollständig in ihrer Hand haben. Daher steigen Sicherheitsanforderungen an Kryptographiealgorithmen mehr und mehr, was sich beispielsweise darin bemerkbar macht, daß zur Erhöhung der Sicherheit des RSA-Algorithmus die Operanden nicht mehr nur z. B. 1024 Bit lang sind, sondern 2048 Bit lang sein müssen.
Dennoch ist vom Chipkartenhersteller die von dem Prozessor insgesamt beanspruchte Fläche fest vorgegeben. Dies bedeutet, daß ein Hersteller für Chipkartenprozessoren auf einer fest vorgegebenen Fläche Rechenwerke und platzintensive Speicher unterbringen muß. Anderseits benötigen immer aufwendigere Kryptographiealgorithmen auch mehr Arbeitsspeicher, so daß eine Vergrößerung eines Rechenwerks dahingehend, daß z. B. ein größerer Shifter eingebaut wird, aus diesem Grund oftmals nicht tolerabel ist. Würde man nämlich mehr Chipfläche dem Rechenwerk, also beispielsweise einem Shifter, zusprechen, so könnte dafür weniger Arbeitsspeicher auf der fest vorgegebenen Chipfläche implementiert werden, was wiederum dazu führt, daß bestimmte hochkomplizierte Kryptographiealgorithmen gar nicht ausgeführt werden können bzw. in der Berechnung langsamer sind als wenn sie durch Konkurrenz-Produkte ausgeführt und implementiert werden.
Das anhand der Fig. 18 und 19 erläuterte bekannte ZDN- Verfahren ist ferner dahingehend nachteilhaft, daß die Drei- Operanden-Addition des Langzahlrechenwerks, die durch den Block 950 in Fig. 18 dargestellt ist, nicht ständig ablaufen kann, sondern daß zunächst immer unter Verwendung der Blöcke 910 und 930 eine Berechnung der Vorausschau-Parameter sz, sn und gegebenenfalls der Parameter a und b stattzufinden hat, bevor dann die Drei-Operanden-Addition ausgeführt werden kann. Es handelt sich um ein gewissermaßen serielles Zwei- Takt-Prinzip in einer Iterationsschleife, dahingehend, daß zuerst Vorausschauparameter berechnet werden und dann die
Drei-Operanden-Addition ausgeführt wird. Während der Berechnung der Shift- und Vorzeichen-Parameter sz und sn bzw. a und b ist das Rechenwerk zum Durchführen der Drei-Operanden- Addition, die durch den Block 950 in Fig. 18 dargestellt wird, unbeschäftigt.
Die Aufgabe der vorliegenden Erfindung besteht darin, ein effizienteres Konzept zum Berechnen einer Multiplikation eines Multiplikators und eines Multiplikanden bezüglich eines Mo- duls zu schaffen.
Diese Aufgabe wird durch eine Vorrichtung nach Anspruch 1, ein Verfahren nach Anspruch 12 oder ein Computer-Programm nach Anspruch 13 gelöst.
Der vorliegenden Erfindung liegt die Erkenntnis zugrunde, daß die Berechnung der Vorausschau-Parameter und die Durchführung der Drei-Operanden-Addition dahingehend parallelisiert werden können, daß in einem aktuellen Iterationsschritt während der exakten Berechnung der Drei-Operanden-Addition eine approximierte Drei-Operanden-Addition durchgeführt wird, um das exakte Ergebnis abzuschätzen, und um dann unter Verwendung des abgeschätzten Ergebnisses die Look-Ahead-Parameter für den nächsten Iterationsschritt zu berechnen. Damit kann im nächs- ten Iterationsschritt auf die im aktuellen Iterationsschritt berechneten Vorausschau-Parameter zurückgegriffen werden, um eine exakte Berechnung des Zwischenergebnisses für den übernächsten Iterationsschritt durchzuführen etc.
Die erfindungsgemäße Vorrichtung zum Berechnen einer Multiplikation umfaßt somit eine Einrichtung zum Durchführen einer exakten Drei-Operanden-Addition, eine Einrichtung zum Durchführen einer approximierten Operanden-Addition, um ein approximiertes Zwischenergebnis zu erhalten, sowie eine Einrichtung zum Berechnen von Vorausschau-Parametern für den nächsten Iterationsschritt unter Verwendung des approximierten Zwischenergebnisses, wobei die Einrichtungen derart ausgebildet sind, daß parallel zur exakten Berechnung der Drei- Operanden-Addition eine approximierte Berechnung sowie eine Berechnung der Vorausschau-Parameter für den nächsten Schritt stattfindet.
Bei einem besonders bevorzugten Ausführungsbeispiel der vorliegenden Erfindung wird die beschleunigte Berechnung der Vorausschau-Parameter mit einem neuartigen Iterationsverfahren verbunden, bei dem der Modul fest bleibt und der Multi- plikand bezüglich des Moduls verschoben wird. Diese Modifikation des bekannten ZDN-Verfahrens, das in Fig. 18 dargestellt ist, hat den Vorteil, daß eine bessere Ressourcennutzung im Hinblick auf vorhandene Schieber zum Umsetzen der Verschiebungswerte in reale Registerverschiebungen ermöglicht ist.
Bei einem weiteren bevorzugten Ausführungsbeispiel der vorliegenden Erfindung wird statt des durch eine modulare Exponentiation vorgegebenen Moduls ein von diesem Modul abgeleiteter transformierter Modul verwendet, der derart gewählt ist, daß einige obere Bits bekannt sind und unabhängig von einem aktuell verwendeten Modul immer gleich sind. In diesem Fall kann die Einrichtung zum Durchführen einer approximierten Operandenaddition, um ein approximiertes Zwischenergebnis zu erhalten, besonders einfach implementiert werden.
Erfindungsgemäß wird somit eine gute und sehr schnelle Abschätzung der gegenwärtig laufenden Drei-Operanden-Addition erreicht. Mit diesem vorzeitig vorliegenden approximierten Ergebnis werden dann, in der verbleibenden Zeit, in der noch eine exakte Drei-Operanden-Addition durchgeführt wird, die
Vorausschau-Parameter berechnet. Sie stehen dann bereit, wenn die nächste Drei-Operanden-Addition beginnt. Hierdurch wird eine Beschleunigung des Verfahrens um den Faktor 2 erreicht.
Bei bevorzugten Ausführungsbeispielen der vorliegenden Erfin- düng wird zur schnellen Approximation davon ausgegangen, daß die zukünftigen Shift- und Vorzeichenwerte im wesentlichen nur von den obersten z. B. 12 Bits von Z abhängen, während sc nur vom Multiplikator abhängt.
Darüber hinaus wird davon ausgegangen, daß die obersten Bits von Z im wesentlichen nicht vom Multiplikanden C abhängen. Dies ist der Fall, da bei den beschriebenen iterativen Verfahren zur modularen Multiplikation die Reduktion immer etwas hinter der Multiplikation hinterher hängt. Schließlich wird bei dem Ausführungsbeispiel mit Modultransformation davon
Gebrauch gemacht, daß die obersten Bits von N bekannt sind. Die Einrichtung zum Durchführen einer approximierten Operanden-Addition ist somit ausgebildet, um folgende Berechnung durchzuführen Z [L-l, L-12] : = Z [L-l, L-12] * 2SZ + Vn * N [L-l, L-12] .
Z [L-l, L-12] bezeichnet die obersten 12 Bits von Z. Mit diesem approximierten Z [L-l, L-12] können die Shift- und Vorzeichenwerte fast immer exakt berechnet werden. In allen an- deren Fällen hat man lediglich suboptimale Shift- und Vorzeichenwerte. Das Ergebnis ist jedoch immer korrekt.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeich- nungen detailliert erläutert. Es zeigen:
Fig. 1 ein Blockschaltbild einer erfindungsgemäßen Vorrichtung zum Berechnen einer Multiplikation mit einer Verschiebung des Multiplikanden;
Fig. 2 eine Registerbelegung der Register N, C und Z mit linksbündiger Modulausrichtung; Fig. 3 eine Detaildarstellung der beiden Schieber mit begrenzten Verschiebungswerten;
Fig. 4 ein Blockschaltbild der beschleunigten Drei- Operanden-Addition mit paralleler Berechnung der Vorausschau-Parameter für den nächsten Iterationsschritt;
Fig. 5 ein Ablaufdiagramm des Modultransformationskonzepts;
Fig. 6 eine Aufteilung eines Moduls N in einen ersten Abschnitt Nτ von Bits und in einen zweiten Abschnitt NR von Bits;
Fig. 7 die Aufteilung des transformierten Moduls Nτ in einen ersten Abschnitt von Stellen mit der Länge L (Nτ) und die verbleibenden Stellen;
Fig. 8 eine Darstellung der Stellen des 2/3-fachen des transformierten Moduls Nτ;
Fig. 9 eine schematische Darstellung der Stellen des transformierten Moduls mit Randomisierung;
Fig. 10 eine schematische Darstellung eines Rechenwerks zum Ausführen der modularen Multiplikation mit Modultransformation;
Fig. 11 eine schematische Darstellung einer Ausführung der Einrichtung zum Durchführen einer approximierten Operanden-Addition;
Fig. 12 eine Variablendefinition eines Computer-Programms gemäß der vorliegenden Erfindung; Fig. 13 eine Darstellung von Hilfsfunktionen für das erfindungsgemäße Verfahren;
Fig. 14a Initialisierungsangaben für ein Verfahren gemäß ei- ne bevorzugten Ausführungsbeispiel;
Fig. 14b eine programmartige Darstellung eines Ausführungsbeispiels des erfindungsgemäßen Verfahrens mit Multiplikanden-Verschiebung und paralleler Berechnung der Vorausschau-Parameter im aktuellen Iterationsschritt für den nächsten Iterationsschritt;
Fig. 15 eine detailliertere Programmdarstellung der in Fig.
14b verwendeten Drei-Operanden-Addition;
Fig. 16a eine detailliertere Darstellung der in Fig. 14b verwendeten Funktion Look-Ahead-Modulo;
Fig. 16b eine detailliertere Darstellung der in Fig. 14b verwendeten Funktion Nachbearbeitung_Look-Ahead-
Modulo;
Fig. 17a eine detailliertere Darstellung der Funktion Look-
Ahead-Multiplikation von Fig. 14b;
Fig. 17b eine detaillierte Darstellung der Funktion Nachbe- arbeitung_Look-Ahead-Multiplikation;
Fig. 18 eine Flußdiagrammdarstellung des bekannten ZDN- Verfahrens; und
Fig. 19 eine Flußdiagrammdarstellung des bekannten Redukti- ons-Vorausschau-Verfahrens .
Fig. 1 zeigt ein Blockschaltbild der erfindungsgemäßen Vorrichtung zum Berechnen einer Multiplikation eines Multiplikators M und eines Multiplikanden C bezüglich eines Moduls N mittels eines Iterationsverfahrens mit mehreren Iterationsschritten. Es sei darauf hingewiesen, daß der Multiplikator, der Multiplikand und der Modul Ganzzahlen oder Polynome sein können .
Wie es Bezug nehmend auf Fig. 18 ausgeführt worden ist, sind Multiplikationskonzepte insbesondere in kryptographischen Berechnungen iterative Konzepte, derart, daß eine Multiplikation unter Verwendung mehrerer prinzipiell identisch ablaufen- der Iterationsschritte berechnet wird. Fig. 1 zeigt die Einrichtungen bzw. Unterschritte, die beim Ausführen eines Iterationsschritts betroffen sein können.
Im einzelnen umfaßt Fig. 1 eine Einrichtung 100 zum Untersu- chen von Stellen des Multiplikators M für einen aktuellen I- terationsschritt mittels eines Multiplikations-Look-Ahead- Algorithmus, um einen Multiplikations-Look-Ahead- Verschiebungswert sm an einem Ausgang 102 der Einrichtung 100 zu erhalten.
Bei einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung ist der Multiplikations-Look-Ahead-Algorithmus ein bekannter Booth-Algorithmus, der, wenn er mehrere Look-Ahead- Regeln implementiert, neben einem Multiplikations-Look-Ahead- Verschiebungswert sm auch einen Multiplikations-Look-Ahead- Parameter vc erzeugt. Die explizite Berechnung eines Look- Ahead-Parameters ist jedoch dann nicht erforderlich, wenn der Multiplikations-Look-Ahead-Algorithmus lediglich eine oder eine begrenzte Anzahl von Look-Ahead-Regeln anwendet, derart, daß - vorausgesetzt, es sind ausreichend große Shifter vorhanden - der Vorzeichen-Parameter vc immer gleich "+1" ist. Für andere Look-Ahead-Regeln kann jedoch auch der Fall auftreten, daß der Vorzeichenparameter vc gleich -1 ist. Wenn ein zu großer Multiplikations-Look-Ahead-Verschiebungswert sm erhalten worden ist, kann auch der Fall auftreten, daß der Multiplikations-Look-Ahead-Parameter vc gleich 0 ist. Die in Fig. 1 gezeigte Vorrichtung umfaßt ferner eine Einrichtung 104 zum Ermitteln des Zwischenergebnis- Verschiebungswerts sz, die prinzipiell so ausgebildet ist, daß sie einen Zwischenergebnis-Verschiebungswert größer als 0 ermittelt, wobei der Zwischenergebnis-Verschiebungswert bewirkt, daß ein zu verarbeitendes Zwischenergebnis, wenn es um den Zwischenergebnis-Verschiebungswert sz verschoben worden ist, ein höchstwertiges Bit (MSB) hat, dessen Ordnung näher an einer Ordnung des höchstwertigen Bits des Moduls liegt als ein höchstwertiges Bit des Zwischenergebnis aus dem vorausgehenden Iterationsschritts. In anderen Worten ausgedrückt bedeutet dies, daß der Zwischenergebnis-Verschiebungswert sz dazu führt, dass das Zwischenergebnis zumindest um eine Stelle nach links verschoben wird, wenn in einem Register links die höherwertigen Bits angeordnet sind und rechts die nieder- wertigen Bits.
An dieser Stelle sei ferner darauf hingewiesen, daß ein höchstwertiges Bit (MSB) ein Bit in einem Register ist, das eine Nutzinformation trägt. Ist eine Zahl beispielsweise kleiner als die Registerlänge es ermöglichen würde, und ist die Zahl im Register rechts ausgerichtet, so wird die Zahl ein höchstwertiges Bit haben, das irgendwo in dem Register plaziert ist. Oberhalb des MSB dieser Zahl stehen möglicher- weise Nullen in dem Register, die jedoch keine signifikante Information tragen. Unter höchstwertigem Bit wird daher das Bit einer Zahl verstanden, das im Vergleich zu den anderen Bits der Zahl die höchste Ordnung hat und gleichzeitig eine Nutzinformation trägt.
Bei einem speziellen Ausführungsbeispiel ist die Einrichtung 104 zum Ermitteln des Zwischenergebnis-Verschiebungs-werts- sz. ausgebildet, um das Zwischenergebnis so weit als möglich nach links zu schieben, derart, daß das MSB des verschobenen Zwi- schenergebnisses die gleiche Ordnung hat wie das MSB des Moduls. In diesem Fall wird eine Modulsubtraktion, also eine Reduktion, zu einem wesentlich verkleinerten neuen Zwischen- ergebnis nach einer Drei-Operanden-Addition führen. Daher wird dieser Fall angestrebt, da dann immer gut, schnell und effizient reduziert wird. Die Einrichtung 104 zum Ermitteln des Zwischenergebnis-Verschiebungswerts ist jedoch dann be- reits wirksam, wenn sie einen Zwischenergebnis- Verschiebungswert sz größer als 0 produziert.
Die erfindungsgemäße Vorrichtung umfaßt ferner eine Einrichtung 106 zum Berechnen eines Multiplikanden- Verschiebungswerts sc, der gleich der Differenz zwischen dem Zwischenergebnis-Verschiebungswert sz und dem Multiplikati- ons-Look-Ahead-Verschiebungswert sm ist. Aus der im Block 106 von Fig. 1 stehenden Gleichung ist zu erkennen, daß bereits ein Zwischenergebnis-Verschiebungswert größer als 0 dazu führt, daß der Multiplikations-Verschiebungswert sm nicht mehr voll durchschlägt und die Schieber-Dimensionierung bestimmt, sondern daß der Multiplikations-Look-Ahead- Verschiebungswert sm im Falle eines sz größer als 0 bereits betragsmäßig reduziert ist.
Die in Fig. 1 gezeigte Vorrichtung umfaßt ferner eine Einrichtung 108 zum Verschieben des Zwischenergebnisses Z um den Zwischenergebnis-Verschiebungswert szr der von der Einrichtung 104 über einen Ausgang 110 sowohl der Einrichtung 106 als auch der Einrichtung 108 bereitgestellt wird. Die Einrichtung zum Verschieben ist ferner ausgebildet, um den Multiplikanden C um dem Multiplikanden-Verschiebungswert sc zu verschieben, um einen verschobenen Multiplikanden zu erhalten.
Die in Fig. 1 gezeigte Vorrichtung umfaßt darüber hinaus eine Einrichtung 112 zum Durchführen einer Drei-Operanden-Addition unter Verwendung des verschobenen Zwischenergebnisses, des verschobenen Multiplikanden und des Moduls, der feststehend ist, um ein Zwischenergebnis für den aktuellen Iterationsschritt zu erhalten, welches an einem Ausgang 114 der Drei- Operanden-Addiereinrichtung 112 ausgegeben wird.. An dieser Stelle sei darauf hingewiesen, daß die Verschiebungseinrichtung 108 und die Drei-Operanden- Additionseinrichtung 112 nicht unbedingt als getrennte Ein- richtungen ausgeführt sein können, sondern daß die Verschiebung eines Operanden, also die Multiplikation des Operanden mit 2S nicht unbedingt Hardware-mäßig, also durch tatsächliche Registerverschiebung ausgeführt zu werden braucht, sondern prinzipiell auch Software-mäßig durch Multiplikation mit 2S erreicht werden kann. In diesem Fall werden die Einrichtungen 108 und 112 in eine einzige Einrichtung verschmolzen, die die Funktionalität der Multiplikation und anschließender Addition gemäß der in dem Block 112 in Fig. 1 dargelegten Gleichung ausführt.
Fig. 2 zeigt eine schematische Darstellung der drei relevanten Register, nämlich des Modul-Registers N 200, das Multiplikanden-Registers C 202 und des Zwischenergebnis-Registers Z 204.
Bei einer Verschiebung des Multiplikanden im Multiplikanden- Register 202 wird der Modul N in dem Modulregister 200 fest eingetragen. Darüber hinaus wird es bevorzugt, den Modul N in das Modulregister 200 linksbündig einzutragen, so daß ein höchstwertiges Bit (MSB) in der höchstwertigen Registerstelle, die in. Fig. 2 ganz links eingezeichnet ist und mit 206 bezeichnet ist, eingetragen wird. In den benachbarten Registerzellen folgen dann die Bits MSB -1, MSB -2, MSB -3 etc. des Moduls N, bis zu einem niederstwertigen Bit (LSB) 208 des Moduls. Der Modul N, der entweder der normale Modul ist, der beispielsweise bei einer RSA-Berechnung verwendet wird, oder der, wie es nachfolgend ausgeführt wird, bevorzugterweise ein transformierter Modul ist, steht in dem Modulregister 200 während der gesamten iterativen Berechnung fest. Dagegen sind der Multiplikand C und das Zwischenergebnis Z unter Verwendung der Verschiebungseinrichtung bzw. entsprechender Shifter variabel in ihren Registern 202, 204, wie es durch die Dop- pelpfeile neben den Registern angedeutet ist. Fig. 2 zeigt eine typische Situation in irgendeinem Iterationsschritt bei der Berechnung einer Multiplikation eines Multiplikators M und des Multiplikanden C bezüglich des Moduls N. Aus Fig. 2 ist ersichtlich, daß der Multiplikand C bereits um 5 Bits nach rechts, also in den Underflow-Buffer 210 hineingeschoben worden ist. Ferner ist zu sehen, daß gerade das Zwischenergebnis-Register derart belegt ist, daß das aktuelle Zwischenergebnis um 3 Bits nach oben geschoben werden könnte.
Bei dem in Fig. 2 gezeigten Ausführungsbeispiel wird der Modul N immer linksbündig im Modulregister 200 angeordnet. Je nach Bitlänge des Moduls N kommt das LSB 208 des Moduls N irgendwo im Modulregister zum Liegen. Die Bits 210 unterhalb des LSB 208 des Moduls N im Modulregister definieren dann den Underflow-Buffer, in den sich der Multiplikand C bewegen kann.
Im nachfolgenden wird das Konzept der Verschiebung des Multi- plikanden C mit dem bekannten ZDN-Algorithmus, bei dem der Multiplikand C konstant war, verglichen. Während im alten ZDN-Verfahren in Analogie zu dem schrittweisen Multiplizieren von zwei binären Zahlen prinzipiell nach der Schulmathematik vorgegangen wird, bei der das Zwischenergebnis um den Mul- tiplikations-Vorausschau-Verschiebungswert nach links geschoben worden ist, und der Modul dann ebenfalls nach oben verschoben, worden ist, um eine effiziente Reduktion in jedem I- terationsschritt zu erreichen, wird beim erfindungsgemäßen Verfahren gewissermaßen das Komma hinsichtlich seiner Plazie- rung in dem Register mit bewegt. Dies geschieht dadurch, daß der Multiplikand C, der gewissermaßen das Komma definiert, verschoben wird.
Bei einem bevorzugten Ausführungsbeispiel mit Multiplikanden- Verschiebung wird der Wert Z im Zwischenergebnisregister 204 immer so hoch als möglich geschoben, damit eine Reduktion stattfindet. Bei dem in Fig. 2 gezeigten Fall würde für den nächsten Iterationsschritt ein Verschiebungswert sz 218 (3 Bits) gewählt werden, so daß das MSB 220 des aktuellen Z- Werts im Z-Register 204 in seiner Ordnung gleich dem MSB 206 des Moduls wird. Wird dann von dem Register Z der Modul N ab- gezogen, so wird die Differenz relativ klein sein, da die Zahlen etwa gleich groß sind. An dieser Stelle wird darauf hingewiesen, daß genau so gut mit positiven wie mit negativen Zahlen gerechnet werden kann.
In einem nächsten Schritt wird, wie es anhand von Fig. 1 dargestellt worden ist, eine Untersuchung von Stellen des Multiplikators M für den aktuellen Iterationsschritt durchgeführt, um herauszufinden, welcher Multiplikations-Vorausschau- Verschiebungswert sm zugelassen wird. Aus Fig. 1, Block 106 ist ersichtlich, daß dann aus sz - sm der Verschiebungswert sc für das Multiplikanden-Register 202 ermittelt wird.
Wenn beispielhaft der Multiplikations-Vorausschau-Algorithmus ermittelt, daß der Multiplikations-Verschiebungswert sm 3 be- trägt, also gleich sz 218 ist, so rechnet sich ein Multiplikanden-Verschiebungswert sc gleich 0. Wenn dieses Ergebnis mit dem bekannten ZDN-Algorithmus verglichen wird, so zeigt sich, daß in diesem Fall das sz so gewählt worden ist, wie es der Booth-Algorithmus erlaubt. Es muß also keine Ko ma- Verschiebung, also keine Verschiebung des Multiplikanden C stattfinden.
Nachfolgend wird der Fall betrachtet, bei dem sm kleiner als sz ist, also bei dem in Fig. 2 gezeigten Beispiel lediglich 2 beträgt, während sz 218 gleich 3 beträgt. Im Vergleich zu dem bekannten Booth-Algorithmus bedeutet dies, daß das Zwischenergebnis eigentlich um ein Bit zu weit nach oben verschoben worden ist. Z ist also für die Addition mit C um den Faktor 2, also eine Verschiebung um eine Registerstelle, zu groß. Um dies auszugleichen, wird nunmehr gemäß dem neuen Verfahren der Multiplikand C ebenfalls um ein Bit nach oben verschoben. In anderen Worten ausgedrückt bedeutet dies, daß das Komma, das durch C bzw. das LSB 212 von C definiert ist, an den gewählten Z-Verschiebungswert sz 218 angepaßt wird. Nach einer Verschiebung von C um ein Bit bzw. den Wert von sc nach oben sind die Verhältnisse zwischen C und Z wieder klar, und es kann eine fehlerfreie Addition im Block 112 von Fig. 1 stattfinden.
Darüber hinaus wird aufgrund der Tatsache, daß sz so groß als möglich gewählt worden ist, in der Drei-Operanden-Addition im Block 112 von Fig. 1 auch eine effiziente Reduktion stattfinden, da Z in etwa in der Größenordnung von N liegt, was bereits durch Verschiebung um sz 218 erreicht wird, und da sogar noch ein Multiplikand C hinzuaddiert worden ist, so daß die Zahlen N und Z auf jeden Fall in ähnlicher Größenordnung sind.
Nachfolgend wird der Fall betrachtet, bei dem sm größer als sz ist. Wie es ausgeführt worden ist, wird es bevorzugt, sz 218 maximal zu wählen. Ein größerer Wert von sz ist als drei Bits in Fig. 2 ist nicht möglich, da dann das MSB 220 von Z aus dem Register 204 ^herausfallen" würde.
Bestimmt der Booth-Algorithmus nun ein sm, das größer als sz ist, so wurde beim in Fig. 2 beschriebenen Iterationsverfah- ren der Zwischenergebnis-Wert um z. B. ein Bit zu wenig nach oben verschoben. Dies bedeutet, daß für die Drei-Operanden- Addition ohne Gegenmaßnahmen Z im Vergleich zu C zu klein ist. Um dieser Situation entgegen zu wirken, wird daher auch der Multiplikand C um z . B. ein Bit gemäß der Differenz zwi- sehen sz und sm nach rechts geschoben, so daß die Verhältnisse zwischen C und Z wieder stimmen. Auch in diesem Fall findet wieder eine gute Reduktion statt, da Z aufgrund der Tatsache, daß es maximal nach oben geschoben worden ist, in der Größenordnung von N liegt, so daß die Differenz zwischen Z und N wieder eine relativ kleine Zahl ist, d. h. daß eine gute Reduktion innerhalb der Drei-Operanden-Addition im Block 112 von Fig. 1 stattgefunden hat. Das in Fig. 2 dargestellte Konzept hat somit zwei wesentliche Vorteile hinsichtlich der Ausnutzung von existierenden Shif- ter-Ressourcen. Ein solcher Shifter zum Verschieben von Z und C, wie er in der Verschiebungseinrichtung 108 von Fig. 1 implementiert werden könnte, ist in Fig. 3 gezeigt. Der Shifter umfaßt schematisch einen ersten Shifterteil 108a zum Verschieben von Z und einen zweiten Shifterteil 108b zum Verschieben von C. Der erste Shifter-Teil 108a ist ein Shifter, der nur in positive Richtung shiften kann. Er wird zum Verschieben von Z verwendet. Daraus wird ersichtlich, daß das LSB 214 von Z niemals in den Underflow-Buffer 210 hineingeschoben werden kann. Fig. 2 zeigt jedoch den Fall nach einer Drei-Operanden-Addition, weshalb das LSB 212 von C und das LSB 214 von Z die gleiche Wertigkeit haben, da durch die
Drei-Operanden-Addition das LSB 214 unabhängig davon, um wie viel Z vor dieser Drei-Operanden-Addition nach oben verschoben worden ist, durch das LSB aller beteiligten Operanden im Block 112 von Fig. 1 bestimmt wird. Nachdem N fest ist und C nach unten verschoben werden kann, bestimmt C immer das LSB von Z nach einer Drei-Operanden-Addition. Würde Z nunmehr, wie es beschrieben worden ist, um sz 218 nach links verschoben werden, so würden die LSBs 212 und 214 von C und Z vor der Drei-Operanden-Addition divergieren, um dann, nach der Drei-Operanden-Addition wieder zusammenzufallen. Nachdem sm immer positiv ist, da der Multiplikator ja nicht auf einmal in die entgegengesetzte Richtung, also von niederwertigen zu höherwertigen Bits verarbeitet wird, und nachdem sz immer positiv ist, ist der Betrag von sc immer kleiner als sz, so daß das LSB von Z immer durch C bestimmt wird.
Der große Shifter 108a, der um +5 shiften kann, .wird daher für sz eingesetzt, so daß durch diesen großen Shiftwert Z immer so nah als möglich an N herangeschoben wird. An dieser Stelle sei darauf hingewiesen, daß der in Fig. 2 gezeigte
Fall nicht unbedingt der typische Fall ist. Es kann genau so gut sein, daß Z und N in einer vorherigen Drei-Operanden- Addition nahezu gleich groß waren, so daß das MSB 220 trotz einer maximalen Verschiebung nach links immer noch eine kleinere Wertigkeit hat als das MSB 206 des Moduls N. Um diesen Fall so selten als möglich zu machen, wird der große Schie- ber, der nur in einer Richtung schieben kann, also der Schieber 108a zum Verschieben von Z verwendet. Nachdem der Multiplikand C in beiden Richtungen verschoben werden muß, wird für diesen Multiplikanden ein Shifter mit einer Verschiebungsmöglichkeit nach oben, also nach links, und eine Ver- Schiebungsmöglichkeit nach unten, also nach rechts benötigt. Nachdem sc jedoch immer eine Differenz von positiven Zahlen sein wird, muß der Schieber nicht so groß ausgelegt werden. Es hat sich daher herausgestellt, daß ein Schieber mit einer Schiebermöglichkeit von -3 bis +3 ausreichend ist. Vorhandene Schieberkapazitäten werden daher durch das neue Konzept mit variablem Multiplikand C effizienter ausgenutzt, da der Mul- tiplikations-Verschiebungswert sm niemals direkt in eine Verschiebung umgesetzt werden muß (dieser Wert ist tendenziell groß) , und da der große Schieber damit zu Reduktionszwecken verwendet werden kann, nämlich zum Verschieben von Z so nah als möglich an N, so daß eine gute Reduktion stattfindet.
Es hat sich herausgestellt, daß bei einer iterativen Ausführungsbeispiel des alten ZDN-Verfahrens und auch des neuen Verfahrens mit variablem Multiplikanden C die Reduktion gegenüber der Multiplikation immer etwas "hinterherhinkt".
Dies hat sich beim alten ZDN-Verfahren dadurch bemerkbar gemacht, daß nach Abarbeitung sämtlicher Stellen des Multipli- kators M der im alten Verfahren verschobene Modul N immer noch größer als der ursprüngliche Modul war. In anderen Worten ausgedrückt war im alten ZDN-Verfahren immer noch ein. Teil des aktuellen Moduls im Overflow-Buffer . Es mußten daher noch einige wenige Rest-Operanden-Additionen durchgeführt werden, bei denen zwar keine Multiplikatorstellen mehr untersucht werden mußten, bei denen jedoch noch so viele Drei- Operanden-Additionen mit verschobenem Modul (nach rechts ver- schobenem Modul) durchgeführt werden mußten, bis das MSB des Moduls wieder aus dem Overflow-Buffer herausgewandert ist und an der gleichen Stelle im Register saß, das es zu Anfang der Berechnung, also vor dem ersten Iterationsschritt hatte. Der Multiplikations-Vorausschau-Algorithmus war daher typischerweise bereits einige Schritte vor dem Reduktions-Vorausschau- Algorithmus "fertig".
Bei dem neuen Verfahren tritt diese Situation ebenfalls auf. Sie wird jedoch nicht dadurch bemerkt, daß der Modul im Over- flow-Buffer ist. Beim neuen Verfahren ist der Modul ja, wie es ausgeführt worden ist, fest und nicht verschiebbar. Wenn alle Multiplikatorstellen abgearbeitet sind, und wenn festgestellt wird, daß das LSB 212 noch niedriger ist als das LSB 208 des Moduls, so müssen ebenfalls noch einige weitere abschließende Operanden-Additionen durchgeführt werden, und zwar ohne Berücksichtigung von Multiplikatorstellen, da diese ja bereits abgearbeitet sind. Nachdem die Multiplikatorstellen bereits abgearbeitet sind, wird auch der Multiplikand C nicht mehr benötigt. Er muß daher, wenn alle Multiplikatorstellen abgearbeitet sind, nicht mehr auf die durch das LSB 208 definierte "Nullinie" geschoben werden. Sobald alle Multiplikatorstellen abgearbeitet sind, ist der Multiplikand C uninteressant. Das LSB 212 des Multiplikanden C muß daher dann, wenn alle Multiplikatorstellen abgearbeitet sind, nicht mehr unter Verwendung des kleinen Schiebers 108b, der in einem Schritt immer nur einen Verschiebungswert um 3 nach links gestatten würde, nach oben verschoben werden. Statt dessen ist der Multiplikand in dem Moment, in dem alle Multiplika- torstellen abgearbeitet sind, uninteressant und wird nicht mehr benötigt.
Für die abschließende Reduktion ist es jedoch interessant, wo das LSB 214 des Zwischenergebnis-Registers Z im Underflow- Buffer 210 stand. So bestimmte das LSB 212 des Multiplikanden C bei der letzten Drei-Operanden-Addition, bei der noch Multiplikatorstellen vorhanden waren, die Ordnung des LSB 214 des Zwischenergebnis-Registers Z. Eine abschließende Reduktion wird noch so lange stattfinden, bis das LSB 214 auf der durch das LSB 208 des Modulregisters 200 definierten "Nulli- nie" steht. Diese "Hochschieben" des Z-Werts im Zwischener- gebnisregister 204 findet nun jedoch mit dem großen Schieber 108a statt, der immer bei dem in Fig. 3 gezeigten Ausführungsbeispiel fünf Verschiebungswerte gestattet. Die abschließende Reduktion findet daher mit großen Schritten statt, während diese bei dem bekannten Verfahren mit dem kleinen Shifter bewältigt werden mußte, da es dort erforderlich war, daß der Modul N wieder auf seine ursprüngliche Position zurückgefahren wird. Beim neuen Verfahren ist der Modul N hingegen fest, während das Komma durch den Multiplikanden C bewältigt wird, der jedoch für die abschließende Reduk- tion uninteressant ist, da keine Multiplikatorstellen mehr vorhanden sind. Damit ist der Multiplikations-Vorausschau- Parameter vc ohnehin gleich 0, so daß zum Hochschieben von Z in der „degenerierten" abschließenden Operanden-Additionen immer der große Schieber Z, der eine Verschiebung bis zu 5 erlaubt, eingesetzt werden kann.
Zusammenfassend ausgedrückt liefert die in Fig. 3 gezeigte beispielhafte Verschiebungseinrichtung bei einem 5-Shifter für Z und einem -3, ...., +3-Shifter für C einen virtuellen Booth-Shifter der Länge 8 (!) und einen Reduktions-Shifter der Länge 5.
Bezüglich einer detaillierten Beschreibung des neuen iterativen Multiplikationskonzepts wird später auf die Fig. 12 bis 17b Bezug genommen, die eine bevorzugte Ausführungsform der vorliegenden Erfindung in einem parallel erläuterten PseudoCode darstellen, wobei in diesem dargestellten Ausführungsbeispiel das neue Verfahren mit Verschiebung des Multiplikanden C mit dem Konzept der Modultransformation und einem neu- artigen Verfahren zum parallelen Berechnen der Multiplikati- ons-Vorausschau-Parameter und der Reduktions-Vorausschau- Parameter kombiniert ist. Fig. 4 zeigt ein Blockschaltbild einer Vorrichtung zum Berechnen einer Multiplikation eines Multiplikanden und eines Multiplikators bezüglich eines Moduls mittels eines Iterati- onsverfahrens mit mehreren Iterationsschritten, die einen vorherigen Iterationsschritt und einen aktuellen Iterationsschritt umfassen. Die in Fig. 4 gezeigte Vorrichtung kann sowohl dazu verwendet werden, die Berechnung der Vorausschau- Parameter sm, sc und sz des in Fig. 1 beschriebenen neuen Verfahrens mit verschiebbarem Multiplikanden C zu beschleunigen, als auch dazu verwendet werden, die Vorausschau- Parameter sz und sn der Blöcke 920 und 940 aus Fig. 18, also die Vorausschau-Parameter des bekannten ZDN-Verfahrens zu berechnen.
An dieser Stelle sei darauf hingewiesen, daß je nach Situation Vorausschau-Parameter einerseits die Verschiebungswerte sind, jedoch andererseits auch die Vorzeichen für den Multiplikanden und den Modul sind, die je nach Look-Ahead-Regel und je nach Situation der Verschiebungswerte im Hinblick auf die verfügbaren Shifter und die Größe des verfügbaren Un- derflow-Buffers bestimmt sind und +, - oder 0 sein können, wie es später noch dargelegt werden wird.
Die in Fig. 4 gezeigte Vorrichtung zum beschleunigten Ausführen des Iterationsverfahrens umfaßt eine Einrichtung 400 zum Durchführen einer exakten Drei-Operanden-Addition für den vorherigen Iterationsschritt unter Verwendung eines vorherigen Zwischenergebnisses Zvor 402, des Moduls N 404, des Multi- plikanden Z 406 und von vorherigen Vorausschau-Parametern, die in der schematischen Darstellung von Fig. 4 über eine Leitung 408 bereitgestellt werden. Die Einrichtung 400. zum Berechnen der exakten Drei-Operanden-Addition liefert ein exaktes Zwischenergebnis für den aktuellen Iterationsschritt Zakt, das in Fig. 4 mit 410 bezeichnet ist. Die in Fig. 4 gezeigte Vorrichtung umfaßt ferner eine Einrichtung 412 zum Durchführen einer approximierten Operanden-Addition für den vorherigen Iterationsschritt unter Verwendung des vorherigen Zwischenergebnisses ZVOr und des Moduls N 404 sowie unter Verwendung von zumindest einem Teil der vorherigen Vorausschau- Parameter, die in Fig. 4 durch die Leitung 408 bereitge- stellt werden, um ein approximiertes Zwischenergebnis für den aktuellen Iterationsschritt zu erhalten, das in Fig. 4 mit Zakt, approx bezeichnet wird. Unter Verwendung des approximierten Zwischenergebnisses 414 für den aktuellen Iterationsschritt, das zwar nicht dem exakten Zwischenergebnis Zakt 410 entspricht, jedoch eine Abschätzung bzw. Prädiktion desselben darstellt, und unter Verwendung des Multiplikators M 416 werden dann die aktuellen Vorausschau-Parameter berechnet und über eine Leitung 418 ausgegeben. Die Einrichtung 417 zum Berechnen der aktuellen Vorausschau-Parameter verwendet also, wie es ausgeführt worden ist, das aktuelle approximierte Zwischenergebnis 414 sowie den Multiplikator 416, um die aktuellen Vorausschau-Parameter 418 zu berechnen.
Die in Fig. 4 gezeigte Vorrichtung ist ferner wirksam, damit die Einrichtung zum Durchführen des exakten Drei-Operanden- Addition ausgebildet ist, um eine exakte Drei-Operanden- Addition in dem aktuellen Iterationsschritt unter Verwendung des exakten Zwischenergebnisses 410 für den aktuellen Iterationsschritt, unter Verwendung des Moduls N 404, des Multi- plikanden 406 sowie der aktuellen Vorausschau-Parameter, die über die Leitung 418 von der Einrichtung 417 bereitgestellt werden, durchzuführen.
Dieser Sachverhalt ist in Fig. 4 schematisch dahingehend dar- gestellt, daß eine Einrichtung 400' zum Berechnen der exakten Drei-Operanden-Addition für den aktuellen Iterationsschritt dargestellt ist, daß eine Einrichtung 412' zum Berechnen der., approximierten Operanden-Addition für den aktuellen Iterationsschritt dargestellt ist, und daß eine Einrichtung 417' zum Berechnen der nachherigen Vorausschau-Parameter dargestellt ist. Im einzelnen ist die Einrichtung 412' ausgebildet, um unter Verwendung des aktuellen Zwischenergebnisses 410 und des Moduls N eine approximierte Operanden-Addition durchzuführen, um das Zwischenergebnis Z für den nachherigen Schritt, das von der Einrichtung 400' exakt ausgerechnet wird und mit 420 bezeichnet ist, als Znach,approx 422 abzuschätzen. Unter Verwendung des Werts 422 werden dann die nachherigen Vorausschau-Parameter zumindest unter Berücksichtigung des Multiplikators M 416 berechnet. Es sei darauf hingewiesen, daß es natürlich bevorzugt wird, für jeden Iterationsschritt nicht eine eigene Einrichtung zum Berechnen der exakten Drei- Operanden-Addition, eine eigene Einrichtung zur Berechnung der approximierten Operanden-Addition oder eine eigene Einrichtung zum Berechnen der aktuellen Vorausschau-Parameter bereitzustellen, sondern daß ein Kryptographieprozessor eine einzige Einrichtung 400 zum Berechnen der exakten Drei- Operanden-Addition, eine einzige Einrichtung zum Berechnen der approximierten Operanden-Addition sowie eine einzige Einrichtung zum Berechnen der Vorausschau-Parameter auf der Basis eines approximierten Zwischenergebnisses aufweist. In diesem Fall ist eine Steuerungseinrichtung vorgesehen, die bewirkt, daß die drei Einrichtung für jeden Iterationsschritt mit neuen entsprechenden Eingangsparametern gespeist werden, wie es aus Fig. 4 ersichtlich ist.
Die Einrichtung 417 (bzw. 417') ist ausgebildet, um die Funk- tionalitäten der Einrichtungen 100, 104, 106 von Fig. 1 für das neue Verfahren mit verschiebbarem Multiplikanden C aufzuweisen.
Im Hinblick auf das alte Verfahren ist die Einrichtung 417 bzw. 417' ausgebildet, um die Funktionalitäten der Einrichtungen 910, 930 aufzuweisen, die, wie es aus Fig. 18 ersichtlich ist, ebenfalls statt mit dem exakten Zwischenergebnis des vorherigen Schritts auch mit einem approximierten Zwischenergebnis des vorherigen Schritts gespeist werden können.
Wie es bereits durch die in Fig. 4 gezeigte schematische Darstellung deutlich wird, ermöglicht die Approximation des in der exakten Drei-Operanden-Addition berechneten exakten Zwischenergebnisses die Berechnung der exakten Drei-Operanden- Addition in einem Iterationsschritt und parallel dazu die Berechnung der Vorausschau-Parameter für den nächsten Iterati- onsschritt, so daß gewissermaßen durchgehend, ohne Pause zur Berechnung von Vorausschau-Parametern Drei-Operanden- Additionen durchgeführt werden können.
Wenn Fig. 18 betrachtet wird, so ist zu sehen, daß bei dem alten Konzept, bei dem keine Approximation eines exakten Zwischenergebnisses durchgeführt worden ist, jede Iterationsschleife grundsätzlich aus zwei seriellen Stufen bestand, nämlich zunächst der Berechnung der Vorausschau-Parameter für den aktuellen Iterationsschritt (910, 930) und dann die Be- rechnung der Drei-Operanden-Addition samt entsprechender Verschiebungen (920, 940, 950).
Genauso könnte auch das neue Konzept mit Verschiebung des Multiplikanden C ausgeführt werden, indem in einem Iterati- onsschritt zunächst die Blöcke 100, 104, 106 wirksam sind, um sc und sz für den aktuellen Iterationsschritt auszuführen, und um dann, wenn die Vorausschau-Parameter berechnet worden sind, entsprechende Verschiebungen mit der Einrichtung 108 und eine Drei-Operanden-Addition mit der Einrichtung 112 vor- zunehmen.
Dieses Zwei-Takt-Verhalten, das erhebliche Leistungseinbußen mit sich brachte, wird durch das in Fig. 4 gezeigte Beschleunigungskonzept überwunden, indem parallel zueinander ein ex- aktes Zwischenergebnis für den aktuellen Iterationsschritt berechnet wird und bereits in dem aktuellen Iterationsschritt unter Verwendung eines approximierten Zwischenergebnisses die Vorausschau-Parameter für den nächsten Iterationsschritt berechnet werden.
Durch das in Fig. 4 gezeigte Beschleunigungskonzept wird daher ein Problem des alten ZDN-Verfahrens von Fig. 18 und des neuen Iterationsverfahrens mit verschiebbarem Multiplikanden C von Fig. 1 überwunden, das darin bestand, daß die Shift- und Vorzeichen-Parameter sz, sn, a und b von Fig. 18 bzw. sc und sz sowie vc und vn des neuen Verfahrens von Fig. 1 zunächst berechnet werden mußten, also vor einer jeweiligen Drei-Operanden-Addition. Während der Berechnung des Shift- und Vorzeichen-Parameter wäre somit das Addierwerk 950 beim alten Verfahren von Fig. 18 oder das Addierwerk 112 beim neuen Verfahren von Fig. 1 unbeschäftigt gewesen.
Bei dem Beschleunigungskonzept von Fig. 4 wird dies dadurch gelöst, daß eine gute und sehr schnelle Abschätzung der gegenwärtig laufenden Drei-Operanden-Addition durchgeführt wird. Mit diesem approximierten vorzeitig vorliegenden Wert können daher in der verbleibenden Zeit die Vorausschau- Parameter für den nächsten Iterationsschritt berechnet werden. Diese stehen dann bereit, wenn die nächste Drei- Operanden-Addition beginnt. Dadurch erreicht man eine Beschleunigung des Verfahrens um bis zu einem Faktor 2.
Erfindungsgemäß wurde herausgefunden, daß die zukünftigen Shift- und Vorzeichenwerte im wesentlichen nur von den obersten z. B. 12 Bits von Z abhängen, wobei bei dem in Fig. 1 gezeigten neuen Konzept der Multiplikanden-Verschiebungswert sc vo Multiplikator M, d. h. sffi, und von sz abhängt.
Ferner basiert die Approximation darauf, daß die obersten Bits von Z im wesentlichen nicht von C abhängen. Dies liegt daran, daß, wie es bereits ausgeführt worden ist, die Reduk- tion der Multiplikation immer etwas nachhängt. Dies hat, wenn die Zahlen Z, N und C betrachtet werden, zur Folge, daß Z im Vergleich zu C immer dann, wenn die Reduktion nachhängt, groß ist. Es wird daher bevorzugt, für die approximierte Drei- Operanden-Addition im Block 412 C zu ignorieren, so daß aus der approximierten Drei-Operanden-Addition tatsächlich eine Zwei-Operanden-Addition wird, die ferner im Hinblick auf die vorstehenden Ausführungen zu der Bedeutsamkeit der oberen Bits lediglich mit einer Anzahl von oberen Bits, die kleiner als die Gesamtanzahl von Bits ist, wie z. B. mit den oberen 12 Bits von Z und N, unter Vernachlässigung von C durchgeführt wird.
Zur weiteren Beschleunigung der approximierten Drei- Operanden-Addition bzw. allgemein gesagt der approximierten Operanden-Addition im Block 412 wird nicht der ursprüngliche Modul als Modul N 404 verwendet, sondern ein transformierter Modul, der gemäß dem in der DE 10111987 AI beschriebenen
Prinzip der Modultransformation derart transformiert worden ist, daß eine bestimmte Anzahl von oberen Bits, die je nach Modultransformation zwischen 1 und einem beliebigen Wert variiert, unabhängig von einem tatsächlich verarbeiteten Modul immer gleich ist. Da bei der bevorzugten approximierten Operanden-Addition ohnehin nur eine bestimmte Anzahl von Bits ausgehend vom MSB des Modulregisters genommen wird und eine bestimmte Anzahl entsprechender Bits aus dem Zwischenergebnisregister Z genommen wird, muß für die approximierte Drei- Operanden-Addition real nichts aus dem Modulregister entnommen werden, da die oberen Bits im Modulregister ohnehin bekannt sind. Die einzige variable Größe zur Berechnung der approximierten Operanden-Addition ist daher das Vorzeichen vn des Moduls sowie die z. B. oberen 12 Bits des Zwischenergeb- nisregisters Z. Damit kann die approximierte Operanden- Addition vorzugsweise fest verdrahtet kombinatorisch ausgeführt werden, derart, daß sie sehr viel schneller vonstatten geht als die exakte Drei-Operanden-Addition, so daß während der Ausführung der exakten Drei-Operanden-Addition noch genü- gend Zeit verbleibt, um auf der Basis eines approximierten Zwischenergebnisses Zapprox die Vorausschau-Parameter für den nächsten Schritt zu berechnen.
Bevor detailliert auf eine spezielle Ausführung der Einrich- tung 412 zum Durchführen der approximierten Operanden- Addition eingegangen wird, wird nachfolgend anhand der Fig. 5 bis 10 auf die Funktionsweise der Modultransformation eingegangen, wie sie in der DE 10111987 AI offenbart ist.
Fig. 5 zeigt ein Ablaufdiagra m eines Verfahrens zum modula- ren Multiplizieren eines Multiplikanden C mit einem Multiplikator M unter Verwendung eines Moduls N. Zunächst wird in einem Schritt 500 der Modul N in einen transformierten Modul Nτ gemäß folgender Gleichung transformiert:
Nτ = T x N.
In einem Schritt 520 wird dann die modulare Multiplikation unter Verwendung des transformierten Moduls Nτ und des vorbestimmten Bruchteils des transformierten Moduls, der beim be- vorzugten Ausführungsbeispiel 2/3 beträgt, abgearbeitet. Bezogen auf die modulare Exponentiation bedeutet dies, daß eine RSA-Gleichung folgender Form berechnet wird:
Cτ: = M mod Nτ.
Es wird also das Ergebnis der modularen Exponentiation C nicht in der durch den Modul N definierten Restklasse sondern in der durch den transformierten Modul Nτ definierten Restklasse berechnet, weshalb auf der linken Seite der obigen Gleichung nicht C sondern Cτ steht. Durch die Verwendung des transformierten Moduls N ist hierbei die Berechnung des Hilfs-Reduktions-Verschiebungswerts Ξi, die der Iterationsschleife von Fig. 19 des bekannten Reduktions-Vorausschau- Verfahrens entspricht, stark vereinfacht ist.
In einem abschließenden Schritt 540 wird dann wieder eine Rück-Transformation von Nτ zu N durchgeführt, indem eine Operation ausgeführt wird, die folgender Gleichung entspricht:
C: = Cτ mod N. Das transformierte Ergebnis Cτ, das in der Restklasse des transformierten Moduls Nτ liegt, wird dabei vorzugsweise durch eine einfache Verschiebungs/Subtraktions-Reduktion in die Restklasse des Moduls N zurückgeführt, so daß C das Er- gebnis der modularen Exponentiation ist.
Die Transformation des Moduls N in einen transformierten Modul Nτ unter Verwendung des Transformators T aus Schritt 500 wird so durchgeführt, daß der vorbestimmte Bruchteil des transformierten Moduls, also beim bevorzugten Ausführungsbeispiel das 2/3-fache des transformierten Moduls, eine höher- wertige Stelle mit einem ersten vorbestimmten Wert hat, der zumindest eine niederwertige Stelle folgt, die einen zweiten vorbestimmten Wert hat. Damit kann der Vergleich des Zwi- schenergebnisses Z mit dem 2/3-fachen des transformierten Moduls stark vereinfacht werden, nämlich indem die oberste Stelle von Z, die ebenfalls den ersten vorbestimmten Wert hat, gesucht wird, und die Differenz zwischen der höherwertigen Stelle mit ersten vorbestimmten Wert des vorbestimmten Bruchteils des transformierten Moduls und der obersten Stelle des Zwischenergebnisses Z mit dem ersten vorbestimmten Wert gleich der Differenz si ist.
Zusammengefaßt stellt sich dies folgendermaßen dar. N wird vorzugsweise in der 32-Bit-CPU und nicht im Krypto-
Coprozessor in einen transformierten Modul Nτ transformiert, so daß gilt:
N1 = T x N,
wobei T eine natürliche Zahl ist.
Für Nτ ergibt sich folgende Gestalt, wenn sämtliche verwendeten Zahlen Binärzahlen sind:
Nτ = 1100... 0 XX...XX Für das 2/3-fache des transformierten Moduls ergibt sich dann folgender Wert:
2/3 Nτ = 100... 0 X'X' ...X'X'
Aus Nτ und 2/3 Nτ ist zu sehen, daß beide eine erste Portion von beispielsweise 16 Bits haben, und dann eine Portion von L(N) Bits X bzw. X'. Für den sogenannten ZDN-Vergleich werden nur die obersten 16 Bits des 2/3-fachen des transformierten Moduls Nτ herangezogen, da sich dann bereits eine Fehlerwahrscheinlichkeit von besser als etwa 2~10 ergibt. Es müssen also nicht alle 512, 1024 oder 2048 Bits des 2/3-fachen des transformierten Moduls zum ZDN-Vergleich herangezogen werden, sondern es genügt, wenn dieser Vergleich mit den obersten 16 Bits des transformierten Moduls durchgeführt wird. Selbstverständlich könnten auch noch weniger Bits von 2/3 Nτ zum Vergleich herangezogen werden, dann steigt jedoch die Fehlerwahrscheinlichkeit nach und nach an. Da die Fehler jedoch unkritisch sind und nur zu einem suboptimalen Verhalten des Re- duktions-Vorausschau-Verfahrens führen, ist dieser Weg ohne weiteres gangbar.
Das 2/3-fache des transformierten Moduls Nτ hat somit eine höherwertige Stelle mit dem Wert 1, der zumindest eine nie- derwertige Stelle folgt, die einen Wert 0 hat, also einen zweiten vorbestimmten Wert. Bei dem vorstehend beschriebenen Ausführungsbeispiel ist die Anzahl der niederwertigen Stellen 15. Selbstverständlich können auch hier größere oder kleinere Anzahlen genommen werden, je nach dem, welche Größenunter- schiede zwischen dem Zwischenergebnis Z und dem 2/3-fachen des transformierten Moduls Nτ zu erwarten sind bzw. bearbeitet werden sollen. Für den Betrag des Zwischenergebnisses Z der modularen Multiplikation, also des Ergebnisses der Drei- Operanden-Addition im Block 950 von Fig. 18 ergibt sich fol- gende Gestalt:
|Z| = 00...01YY...Y Der Hilfs-Verschiebungswert Si wird gemäß folgender Gleichung berechnet:
2/3 Nτ x 2"si < |Z| < 4/3 Nτ x 2"si.
Aufgrund der Topologie des 2/3-fachen des transformierten Moduls Nτ ist der Wert Si immer der Abstand zwischen dem höchstwertigen Bit mit einer 1 des 2/3-fachen des transfor- mierten Moduls Nτ und der höchstwertigen 1 des Betrags des Zwischenergebnisses .
Diese Stellendifferenz bzw. der Wert si kann trivial ermittelt werden. Keine Iteration ist mehr erforderlich.
Darüber hinaus ist kein ZDN-Register mehr erforderlich, um das 2/3-fache des Moduls zu speichern, da per Definition zumindest die oberen beispielsweise 16 Bit des 2/3-fachen des transformierten Moduls Nτ immer die gleiche Gestalt haben. Kein Bit-Komparator ist mehr erforderlich. Die Wertigkeitsdifferenz der höchstwertigen Stelle des 2/3-fachen des transformierten Moduls Nτ mit einer „1" und der höchstwertigen Stelle von Z mit einer „1" kann ohne weiteres beispielsweise durch eine bitweise XOR-Verknüpfung des Registers für den transformierten Modul und des Registers für das Zwischenergebnis Z durchgeführt werden. Si ist dann gleich der Differenz der Wertigkeit der Stelle, wo die XOR-Verknüpfung eine erste „1" ausgibt, und wo die XOR-Verknüpfung eine zweite „1" ausgibt .
Aufgrund der Tatsache, daß kein ZDN-Register und kein ZDN- Komparator erforderlich sind, ist das gesamte Rechenwerk auf einer kleineren Chipfläche unterzubringen.
Außerdem hat der Krypto-Control-Part, also die Steuerlogik für den ZDN-Vergleich (760 in Fig. 10) , eine kleinere Komplexität, da die aufwendige Iterationsschleife von Fig. 19 nicht ausgeführt werden muß. Schließlich geht die Berechnung schneller, so daß sich durch die Berechnung des Hilfs- Verschiebungswerts Si keine Timing-Probleme mehr für den gesamten Algorithmus ergeben.
Im nachfolgenden wird anhand der Figuren 6 bis 9 auf die bevorzugte Transformation genauer eingegangen.
Wie es bereits ausgeführt worden ist, besteht ein wesentli- eher Teil des ZDN-Algorithmus darin, daß folgende Gleichung erfüllt ist
2/3 2"si N < |Z| < 4/3 2"si N.
si wird als Hilfs-Verschiebungswert bezeichnet und ist der Verschiebungswert, der notwendig ist, um Z stellenmäßig zu derselben Position wie N zu schieben. Im Stand der Technik waren zur Berechnung von Si Vergleichsoperationen von | Z | mit 2/3 N notwendig.
Der Vergleich mit 2/3 wird vereinfacht, indem der Modul in den transformierten Modul N transformiert wird, wobei der transformierte Modul Nτ größer als N ist, bevor irgendeine modulare Operation mit N ausgeführt wird. Dann werden alle Berechnungen Modulo Nτ durchgeführt. Nachdem das Ergebnis der Berechnung jedoch in der Restklasse N sein muß, wird noch eine abschließende Reduktion mit N durchgeführt.
Wie es in Fig. 6 gezeigt ist, sei N eine Ganzzahl mit einer Länge von N Bits. Da der Modul N immer eine positive Ganzzahl ist, d. h. MSB = 0 in der Zweier-Komplement-Darstellung, ist das Vorzeichenbit gleich 0 und das zweit-höchstwertige Bit (MSB -1) des Moduls N ist immer gleich 1. Für den ZDN- Vergleich ist es nicht erforderlich, sämtliche Bits des Mo- duls mit sämtlichen Bits des Zwischenergebnisses zu vergleichen, sondern es ist ausreichend, eine Anzahl von m Bits für den ZDN-Vergleich zu verwenden. Die höchstwertigen m Bits des Moduls N definieren einen ersten Teil des Moduls Nτ, während die restlichen N-m Bits des Moduls einen zweiten Teil NR des Moduls definieren. Bei einem bevorzugten Ausführungsbeispiel ist m gleich 16. Selbstverständlich sind auch größere oder kleinere Werte von m möglich.
Wie es in Fig. 7 gezeigt ist, wird die Transformation derart ausgeführt, daß der transformierte Modul Nτ 16 Bit länger ist als der ursprüngliche Modul von Fig. 6.
Für den ZDN-Vergleich ist es ausreichend, die ersten 16 Bit von Nτ zu verwenden, wobei z. B. nur 12 Bits zum Vergleich verwendet werden, während die niederstwertigen 4 Bits einen Puffer für mögliche Überträge darstellen, die von noch nie- derwertigeren Bits kommen können.
In diesem Fall ist die Wahrscheinlichkeit, daß der Vergleich ein falsches Ergebnis ergibt, kleiner als 2~12. Falls der Vergleich ein falsches Ergebnis liefert, wird nur ein suboptima- 1er Reduktions-Verschiebungswert sN erzeugt, das Ergebnis Mo- dulo N ist jedoch nach wie vor korrekt.
Wenn der Modul wie in Fig. 6 in der Zweierkomplementdarstellung verwendet wird, dann kann der Modul N folgendermaßen zerlegt werden:
N = 2 ~m Nτ + NR.
Nun wird N zu Nτ unter Verwendung des Transformators T transformiert, wobei T eine geeignet gewählte Ganzzahl ist, was aus Kongruenzgründen der Fall sein muß. Nτ sollte die in Fig. 7 gezeigte Form haben, d. h. das höchstwertige Bit (MSB) von. Nτ muß gleich 0 sein, da Nτ eine positive Ganzzahl sein soll. Wie es nachfolgend ausgeführt wird, müssen das zweithöchstwertige und das dritthöchstwertige Bit des transformierten Moduls gleich 1 sein, während sämtliche anderen Bits des obersten Abschnitts des transformierten Moduls Nτ, welcher in Fig. 7 mit dem Bezugszeichen 33 bezeichnet ist, einen Wert von „0" haben sollten. Nur in diesem Fall ergibt sich nämlich für das 2/3-fache von Nτ, daß der oberste Abschnitt des 2/3-fachen von Nτ, wie es in Fig. 8 gezeigt ist, lediglich ein Bit mit einer „1" hat, während alle anderen Bits in diesem obersten Abschnitt 44 gleich „0" sind, so daß der bereits beschriebene triviale Vergleich zur Bestimmung von S ausgeführt werden kann.
Zunächst wird jedoch anhand von Fig. 7 auf die Berechnung des transformierten Moduls Nτ unter Verwendung des Transformators T eingegangen. Es gelte folgende Definition:
Nτ = T N
= T(2n_m Nτ + NR)
Für den Transformator T gilt folgendes
2P~2 + 2P~3
T = I 1
N,
Unter Verwendung von Gleichung 17 ergibt sich für den trans- formierten Modul Nτ folgendes:
2 "2 + 2P"
N1 | (2n-mNτ + NF
Nτ
Nτ NR Nτ = ( 2n+p""m-2 + 2n+p~m~3 ) + ( 2P_2+2P~3 )
Nτ Nτ Wenn beispielsweise typische Werte für p und m genommen werden, also p gleich 32 Bit und m gleich 16 Bit, so ergibt sich für Nτ folgendes:
,p-2 +2p-
N = 2n+l4 + 2n+13 +
N
Es sei darauf hingewiesen, daß die Berechnung von N vorzugsweise in der Host-CPU durchgeführt wird, und nicht im Krypto- Coprozessor. Die Host-CPU umfaßt ein Kurzzahl-Rechenwerk, was jedoch für die Berechnung von Nτ ausreichend ist. Da T eine Ganzzahl sein muß und die Berechnungen innerhalb des Krypto- Coprozessors Modulo Nτ anstatt Modulo N durchgeführt werden, wobei Nτ größer als N ist, sind nur die ersten p-m gleich 16 Bits von Nτ für den trivialen ZDN-Vergleich, um den Hilfs- Verschiebungswert S zu berechnen, relevant. Die anderen n Bits von Nτ können irgendeine Zahl sein, sie sind für die Be- rechnung des Hilfs-Verschiebungswerts Si, also für den Vergleich mit Z nicht relevant. Selbstverständlich werden jedoch alle Bits des transformierten Moduls Nτ für die Drei- Operanden-Addition benötigt, die nunmehr statt unter Verwendung des verschobenen Moduls unter Verwendung des verschobe- nen transformierten Moduls ausgeführt wird.
Für die gewählten Werte für m und p ist der Transformator T eine 16-Bit-Ganzzahl. Daher muß die Division, die zur Berechnung von T erforderlich ist, bzw. die zur Berechnung von Nτ erforderlich ist, nur für die höchstwertigen 32 Bits durchgeführt werden, und kann daher schnell und einfach auf der Host-CPU programmiert werden.
In Fig. 8 ist das 2/3-fache des transformierten Moduls Nτ ge- zeigt. Da das MSB-1 und das MSB-2 von Nτ gleich „1" sind, wie es in Fig. 7 gezeigt ist, und folgendes gilt: ( 11 ) 2 = ( 3 ) 10 und (2 /3 x 3 ) 2 = ( 2 ) 10 = ( 10 ) 2,
ergibt sich ein einfaches Bitmuster für das 2/3-fache des transformierten Moduls Nτ, wobei die Länge des 2/3-fachen des transformierten Moduls Nτ gleich n-m+p ist.
Aufgrund der speziellen Gestalt von 2/3 Nτ wird nun der Vergleich mit |Z| sehr einfach. Es ist bekannt, daß die höchstwertige Eins von 2/3 Nτ an einer Position n+p-m-2 an dem Beginn einer modularen Operation ist. Ein Zeiger für das Register Z startet dann bei einem bevorzugten Ausführungsbeispiel an dem MSB von Z und sucht nach der ersten „1" von Z. Wenn das MSB von Z gleich 1 ist, dann ist Z eine negative Zahl, und man sucht statt dessen die erste Null von Z.
Die Differenz der Bitposition der ersten Eins im Register N und im Register Z bestimmt den Hilfs-Verschiebungswert S .
Da das Ergebnis der Modulo-Operation in der Restklasse N sein muß, wird eine Endreduktion Modulo N durchgeführt, es muß also eine Rücktransformation (Schritt 540 in Fig. 5) durchgeführt werden.
Die Transformation von N zu Nτ hat die folgenden Vorteile im Vergleich zum bekannten ZDN-Vergleich:
Statt der Berechnung von 2/3 N innerhalb des Kryptocoprozes- sors kann eine einfache Transformation von N in Nτ in der Host-CPU durchgeführt werden.
Auf dem Chip werden kein ZDN-Register und keine Komparatorlo- gik benötigt, weshalb die Chipgröße kleiner und die Komplexität des Coprozessors geringer werden.
Schließlich kann die Transformation von N in Nτ mit einer
Randomisierung des Moduls N kombiniert werden, wie es anhand von Fig. 9 dargestellt ist. Wenn R eine s Bit lange zufällige Zahl ist, hat der randomisierte transformierte Modul Nτ die in Fig. 9 gezeigte Form. Durch die Randomisierungszahl N wird der randomisierte transformierte Modul im Vergleich zu dem Fall, bei dem keine Randomisierung durchgeführt worden ist (Fig. 7) um s Bit länger, also um die Anzahl der Stellen von R.
Gleichungsmäßig läßt sich dies folgendermaßen ausdrücken:
Nτ = T N
= T(2-m Nτ + NR)
Der randomisierte Transformator T lautet dann folgendermaßen:
2P-2_2P-3+R
T = | 1
Nτ
Damit ergibt sich folgender Ausdruck für den randomisierten transformierten Modul:
2p-2+ 2p-3+R Nτ = | | (2n-mNτ-r R) Nτ
N NR NT = ( 2n+p-m-2 + 2n+P- -3+R 2r--m) + ( 2P_2 + 2P~3 + R) .
Nτ Nτ
Wenn für p gleich 144 Bits, m gleich 16 Bit und s gleich 112 Bit eingesetzt werden, ergibt sich für den transformierten Modul Nτ einschließlich Randomisierung folgender Wert:
2144+2143+R
N = 2n+126 + 2n+125 + R 2n-16 + N R _ Die Bitlänge von Nτ ist dann:
L(NT) = n+p-m = n+m+s = n+16+112 = n+128 Bits
Fig. 10 zeigt ein Rechenwerk, das nunmehr kein ZDN-Register hat, sondern lediglich noch eine arithmetische Einheit 700, ein C-Register 710, ein N-Register 720 und ein Z-Register 730, wobei im N-Register 720 nun nicht mehr der Modul bzw. ein verschobener Modul gespeichert ist, sondern der transformierte Modul bzw. ein verschobener transformierter Modul oder aber ein randomisierter transformierter Modul oder ein verschobener randomisierter transformierter Modul.
Nachfolgend wird anhand von Fig. 11 eine spezielle Ausführungsform einer Schaltung zum Berechnen einer approximierten Operanden-Addition für einen Iterationsschritt dargestellt. Fig. 11 zeigt wieder das Modulregister 200 sowie das Z- Register 204. In Fig. 11 ist der Fall des transformierten Mo- duls gezeigt, dessen obere Bits gemäß Fig. 7 mit 011000
000 beispielsweise bis zum Bit mit der Ordnung MSB-12 unabhängig davon, welcher Modul tatsächlich einer Berechnung zugrunde liegt, bekannt sind. Zur Berechnung der approximierten Drei-Operanden-Addition wird zunächst der Multiplikand C ignoriert. Darüber hinaus werden nur die oberen 12 Bits von Z beispielsweise mittels eines speziellen Z-Multiplexer 412a aus dem Z-Register 204 ausgelesen. Daraufhin werden diese o- beren 12 Bits um sz mittels eines kleinen Shifters 412b nach links verschoben. Es ergibt sich damit ein approximierter geshifteter Z-Wert, der durch ein Zwischenregister 412c symbolisch angedeutet ist. Es sei darauf hingewiesen, daß die Speicherung dieses Werts nur sehr kurz vonstatten gehen muß, so daß kein eigenes Register vorgesehen werden braucht, sondern daß ein Bus, auf dem die entsprechenden Bits übertragen werden, ausreichend ist. Aufgrund der Tatsache, daß der Modul bekannt ist, und daß von dem Modul, da er der transformierte Modul ist, lediglich die oberen drei Bits und insbesondere nur das zweite und das dritte Bit eine 1 sind, während die restlichen Bits eine 0 sind, werden nur die obersten drei Bit des verschobenen letzten Zwischenergebnisses benötigt, wie es durch eine Auswahl 412d angedeutet ist. Diese drei Bits wer- den in eine kombinatorische Schaltung 412e eingespeist, in die ferner das Vorzeichen des Moduls vn eingespeist wird, während die oberen drei Bits des Moduls, also "011" in der Kombinatorik 412e fest verdrahtet sind. Die Kombinatorik 412e liefert dann die oberen drei Bits des approximierten Zwi- schenergebnisses, das wieder als weiteres Zwischenergebnisregister 412f angedeutet ist. Die anderen neun Bits des approximierten Zwischenergebnisses können ohne weiteres aus dem Zwischenergebnisregister 412c herunterkopiert werden, wie es durch einen Pfeil 412g dargestellt ist.
Aus Fig. 11 ist zu sehen, daß im Falle der Verwendung des transformierten Moduls lediglich eine Berechnung mit drei Bits durchgeführt werden muß, wobei jedoch die Bits des "Additionspartners" abgesehen von ihrem Vorzeichen bereits be- kannt sind, so daß klar wird, daß die Berechnung des approximierten Zwischenergebnisses Zapprox sehr schnell vonstatten gehen kann.
Es sei darauf hingewiesen, daß sich herausgestellt hat, daß mit einem solchermaßen approximierten Z[L-1, L-12] die Shift- und Vorzeichen-Werte für den nächsten Iterationsschritt fast immer exakt berechnet werden. In allen anderen Fällen, in denen die Approximation von Z zu schlecht bzw. zu grob war, erhält man zwar suboptimale Shift- und Vorzeichen-Werte. Diese suboptimalen Shift- und Vorzeichen-Werte führen jedoch nicht dazu, daß ein tatsächlicher Rechenfehler auftritt, sondern führen lediglich dazu, daß zum Berechnen einer modularen Multiplikation mehr Zyklen benötigt werden, als im optimalen Fall. Eine solche Zunahme, d. h. Verschlechterung der Perfor- manee, ist jedoch wesentlich kleiner als der Gewinn durch die parallele Ausführung einer approximierten Oparanden-Addition, um ein approximiertes Zwischenergebnis für einen gerade be- trachteten Iterationsschritt zu berechnen, um unter Verwendung dieses approximierten Zwischenergebnisses dann bereits parallel zur Berechnung des exakten Zwischenergebnisses die Vorausschau-Parameter für den nächsten Iterationsschritt zu ermitteln.
Die Einrichtung zum Berechnen eines approximierten Zwischenergebnisses kann ferner mit geringem Aufwand an Chipfläche implementiert werden, so daß eine nahezu Verdoppelung der Ge- schwindigkeit des Rechenwerks nur durch eine sehr kleine "Ausgabe" an Chipfläche erkauft werden muß.
Nachfolgend wird Bezug nehmend auf die Fig. 12 bis 17b auf ein bevorzugtes Ausführungsbeispiel eingegangen, bei dem der Multiplikand verschoben wird und der Modul fest ist, bei dem eine Beschleunigung des Verfahrens unter Verwendung einer Berechnung eines approximierten Zwischenergebnisses Zapprox verwendet wird und bei dem ferner zur weiteren Beschleunigung eine Modultransformation eingesetzt wird.
Die Fig. 12 bis 17b stellen gewissermaßen eine Flußdiagrammdarstellung des erfindungsgemäßen Verfahren in Form eines intuitiven Pseudo-Codes dar. Die Fig. 12 bis 17b zeigen ferner, daß das erfindungsgemäße Konzept je nach Gegebenheiten nicht nur in Hardware sondern auch in Software implementiert werden kann. Die Implementation kann auf einem digitalen Speichermedium, insbesondere einer Diskette oder CD mit elektronisch auslesbaren Steuersignalen erfolgen, die so mit einem programmierbaren Computersystem zusammenwirken können, daß das erfindungsgemäße Verfahren ausgeführt wird. Allgemein besteht die Erfindung somit auch in einem Computer-Programm-Produkt mit einem auf einem maschinenlesbaren Träger gespeicherten Programmcode zur Durchführung des erfindungsgemäßen Verfahrens, wenn das Computer-Programm-Produkt auf einem Rechner abläuft. In anderen Worten ausgedrückt kann die Erfindung somit als ein Computer-Programm mit einem Programmcode zur Durchführung des Verfahrens realisiert werden, wenn das Computer-Programm auf einem Computer abläuft.
Fig. 12 zeigt eine Übersicht über die im einzelnen verwende- ten Variablen und den Typ, den die Variablen haben. Die Variable Csh wird, wie es in Fig. 3 bei 108b dargestellt ist, auf 3 definiert, wobei diese den Shifter für den Multiplikanden C spezifiziert, derart, daß ein Multiplikanden- Verschiebungswert sc von -3 bis +3 verwendet werden kann. Die Variable Zsh beträgt gleich 5 und definiert, wie es im Block 108a von Fig. 3 dargestellt ist, die Größe des Schiebers für das Zwischenergebnis, also die Größe, die der Zwischenergebnis-Verschiebungswert sz haben kann. Die Variable NoZeros definiert die Anzahl von Nullen (Number of Zeros) , die der transformierte Modul Nτ im Register 200 hat, und zwar ausgehend von dem MSB-12 in Fig. 11 nach oben. Sie ist in Fig. 12 als die Summe von Csh und Zsh definiert, obgleich hierfür auch andere Größen genommen werden können. Die Variable No- TopBits beziffert insgesamt die Anzahl von oberen Bits des Z- Registers 204, die von dem Z-Multiplexer 412a aus dem Z-
Register 204 ausgelesen werden, um ein approximiertes Zwischenergebnis Zappr0χ zu berechnen. Aus Fig. 12 ist ersichtlich, daß die Variable NoTopBits gleich 12 beträgt, also NoZeros (= 8) +4. In Fig. 12 ist ferner eine Variable MaxReg- BitLength spezifiziert, die die Registerlänge des gesamten
Rechenwerks spezifiziert. Diese Zahl ist in Fig. 12 beliebig auf 160 festgelegt worden. Alternativ könnte diese Zahl natürlich auch 1024, 2048 oder auch z. B. deutlich über 2048 liegen und beispielsweise 2304 betragen, um für RSA-Module einen ausreichenden Platz an Underflow-Buffer 210 (Fig. 2) und auch einen ausreichenden Platz für die Aufnahme des transformierten Moduls, der ja größer als der normale „Modul ist, zu liefern.
Die Variable Debug ist eine Ausgabevariable, die im weiteren nicht von größerer Bedeutung ist. Anhand von Fig. 13 werden einige Hilfsfunktionen dargestellt, die für in späteren Figuren dargestellte Verfahren benötigt werden. So liefert die Funktion ReturnBit das Bit an der Stelle i einer Zahl X.
Die Funktion SetBit ist in der Lage, das Bit an der Stelle i einer Zahl X mit einem durch "Value" spezifizierten Wert, also 0 oder 1, zu belegen.
Die Funktion BitLength ist in der Lage, die Länge einer Zahl in einem Register von einem LSB zu einem MSB zu berechnen. Anhand des Registers 204 in Fig. 4 würde die Funktion BitLength die Anzahl von Bits zwischen dem MSB 220 und dem LSB 214 liefern.
Fig. 14a stellt Einstellungen/Definitionen bzw. Justierungen und Initialisierungen für die modulare Multiplikation, wie sie anhand von Fig. 1 schematisch dargestellt ist, dar. Die externen Variablen wurden bereits anhand von Fig. 12 erläu- tert.
Im Block "Zustand des Rechenwerks" werden benötigte Variablen hinsichtlich ihres Typs definiert. So bedeutet die Variable Z das Zwischenergebnis. Die Variable ApproxZ bedeutet das ap- proximierte Zwischenergebnis, das durch den Block 412 von Fig. 4 beispielsweise berechnet wird und mit 414 in Fig. 4 bezeichnet ist. Die Variable Lsb liefert gewissermaßen das Komma des Multiplikanden. Zu Beginn einer Berechnung gibt die Variable Lsb die Länge des Underflow-Buffers 210 in Bits an und beträgt bei dem in Fig. 2 gezeigten Beispiel beispielsweise 9. Bei dem in Fig. 2 dargestellten Zwischenzustand, bei dem das LSB 212 des Multiplikanden bereits in den Underflow- Buffer 210 geschoben worden ist, würde die Variable Lsb beispielsweise 4 betragen, um zu bedeuten, daß noch vier Bit im Underflow-Buffer für eine weitere Verschiebung des Multiplikanden nach unten möglich sind. Die Variable cur_lsb ändert sich mit jeder Verschiebung des Multiplikanden C und begrenzt den Shift-Wert sc, wie später noch dargestellt werden wird. Die Variable LAccu definiert die Länge des Multiplikators in Bit. Die Variable c sagt aus, um wie viel der Multiplikand C bereits nach unten geshiftet worden ist. Die Summe aus c und cur_Lsb ist somit konstant und entspricht immer der Länge des Underflow-Buffers 210, der bis zu 300 Bits betragen kann und vorzugsweise zwischen 30 und 50 Bits liegt. Es sei darauf hingewiesen, dass dieser Wert variieren kann, da er letztendlich von der Größe der in- volvierten Zahlen abhängt.
Im Block "Bestimmungsgrößen für die Drei-Operanden-Addition werden die Vorausschau-Parameter definiert, die bei einem be- vorzugten Ausführungsbeispiel der vorliegenden Erfindung verwendet werden. So ist die Variable VZ_C das Vorzeichen vc im Block 112 von Fig. 1. Die Variable VZ_N stellt das Vorzeichen des Moduls vn in Block 112 von Fig. 1 dar. Die Variable s_Z stellt den Zwischenergebnis-Verschiebungswert im Block 112 von Fig. 1 dar. Schließlich stellt die Variable s_C den Multiplikanden-Verschiebungswert dar, wie er in Block 112 von Fig. 1 dargestellt ist und im Block 106 von Fig. 1 berechnet wird.
Die Variablen in dem Abschnitt "Bestimmungsgrößen für die Multiplikation" beziehen sich auf den Multiplikations- Vorausschau-Algorithmus. So ist m die Nummer des gerade vom Multiplikator betrachteten Bits, wobei, wie es bekannt ist, Multiplikatorbits von oben nach unten verarbeitet werden. So lange m größer als 0 ist, sind noch Multiplikatorbits vorhanden. Der größte Wert, den m annehmen kann ist LAccu, also vor einer beginnenden iterativen Multiplikation, . wo. noch keine Stelle des Multiplikators abgearbeitet worden ist.
Die Variable LA definiert eine verwendete Look-Ahead-Regel, wobei die Look-Ahead-Regeln verwendet werden können, wie sie in der DE 3631992 C2 (entsprechend dem U.S. -Patent Nr. 4,870,681) beschrieben sind. Die Variable s_M ist der Mul- tiplikations-Verschiebungswert sm, wie er durch den Block 100 von Fig. 1 berechnet wird.
Zunächst werden die einzelnen Variablen unter Verwendung der gegebenen Größen justiert und initialisiert. Im einzelnen wird auf die Variable Lsb hingewiesen, die anhand der Bitlänge eines gerade zu verarbeitenden Moduls N (bzw. transformierten Moduls Nτ) eingestellt wird. Daraus wird ersichtlich, daß der Underflow-Buffer abhängig von einem verwendeten Modul für jede z. B. RSA-Berechnung, also für eine modulare Exponentiation mit einem Modul neu initialisiert wird. Ferner wird ersichtlich, daß der Modul linksbündig im Register ausgerichtet wird, was bedeutet, daß für kleinere Module auch ein größerer Underflow-Buffer zur Verfügung steht und umgekehrt .
Fig. 14b zeigt im Pseudocode das Verfahren, das gemäß den Fig. 1 und 4 im Blockschaltbildform dargestellt worden ist. Die Iteration wird durchgeführt, bis Abbruchbedingungen erfüllt sind. Abbruchbedingungen sind zum einen, daß m gleich 0 ist, also daß alle Multiplikatorstellen verarbeitet sind, und daß c gleich 0 ist, also daß der Multiplikand am Ende der gesamten modularen Multiplikation wieder hinsichtlich eines LSB 212 mit dem LSB 208 des Moduls N (Bezug nehmend auf Fig. 2) ausgerichtet ist. Typischerweise wird zunächst m gleich 0 sein, während dann erst, einige Zyklen später, c gleich 0 ist, da die Reduktion, wie es ausgeführt worden ist, der Multiplikation etwas nachläuft bzw. "hinterherhinkt".
Zunächst wird eine erste Funktion LAModulo ausgeführt, und zwar unter Verwendung eines approximierten Zwischenergebnisses. Die Funktion LAModulo, die nachfolgend noch erläutert wird, stellt somit die Funktionalität der Einrichtung 417 dar, in der Vorausschauparameter für den nächsten Iterationsschritt unter Verwendung eines approximierten Zwischenergebnisses Zapprox berechnet werden. Hierauf findet eine Funktion Nachbearbeitung_LAModulo, eine Funktion LAMultiplication und eine Funktion Nachbearbeit- zung_LAMultiplikation statt, um generell den Multiplikations- verschiebungswert sz sowie den Multiplikations-Vorausschau- Parameter vn zu berechnen. Entsprechende Reduktions- Vorausschau-Parameter sz und vn werden in der vorstehenden Funktion LAModulo berechnet. Die Funktionen LAModulo, Nachbe- arbeitung_LAModulo, LAMultiplication sowie Nachbearbei- tung_LAMultiplication finden alle in der Einrichtung 417 statt, in der nicht die Vorausschau-Parameter für die aktuelle Drei-Operanden-Addition berechnet werden, sondern in der die Vorausschau-Parameter bereits für den nächsten Iterationsschritt ausgerechnet werden.
Hierauf wird der Multiplikand C um den entsprechenden Multiplikanden-Verschiebungswert verschoben, was der Funktionalität der Einrichtung 108 von Fig. 1 bzw. je nach Definition der Einrichtung 400 von Fig. 4 zum exakten Berechnen der Drei-Operanden-Addition entspricht.
Dann wird das approximierte Zwischenergebnis bereits für den nächsten Iterationsschritt belegt, um dann eine exakte Drei- Operanden-Addition mit der Funktion ThreeOperandAddition, und zwar eine exakte Drei-Operanden-Addition für den aktuellen
Iterationsschritt durchzuführen. Hierauf werden die Variablen m, c und cur__lsb angepaßt.
So lange die Iterations-Abbruchbedingungen m gleich 0 oder c gleich 0 nicht erfüllt ist, wird die While-Schleife durchlaufen.
In der letzten "if"-Schleife wird dann, wenn ein oberes Bit des Z-Registers gleich 1 ist, was auf eine negative Zahl hin- deutet, eine degenerierte Drei-Operanden-Addition durchgeführt, d. h. daß zum aktuellen (negativen) Zwischenergebnis ein Modul N mit dem Vorzeichen vn gleich +1 hinzuaddiert wird, um am Ende ein positives Zwischenergebnis zu haben, bei dem die Bits unterhalb des LSB, also die Underflow-Buffer- Bits abgeschnitten werden, wie durch die letzte "div"- Operation geschieht.
Nachfolgend werden die in Fig. 14b angeführten Funktionen näher erläutert. Fig. 15 zeigt eine Übersicht über die Funktion Drei-Operanden-Addition, die derart ausgeführt wird, wie es in Block 112 von Fig. 1 dargestellt ist. Im einzelnen ist aus Fig. 15 ersichtlich, daß bei der implementierten Drei- Operanden-Addition die Verschiebung von C außerhalb der Drei- Operanden-Addition ausgeführt wird, während die Verschiebung von Z um sz innerhalb der Drei-Operanden-Addition ausgeführt wird. Dies hat bei bestimmten Ausführungen Vorteile. Alterna- tiv könnte jedoch auch die Verschiebung von C innerhalb der Drei-Operanden-Addition ausgeführt werden, oder es könnten beide Verschiebungen außerhalb der Drei-Operanden-Addition ausgeführt werden.
Es sei darauf hingewiesen, daß die modulare Reduktion mit dem Modul 2**MaxRegBitLength lediglich dazu dient, Software-mäßig zu simulieren, daß ein höchstwertiges Bit des Z-Registers in dem Fall, in dem sz so gewählt wurde, daß das MSB 220 gleich- auf mit dem MSB 206 in Fig. 2 kommt, bei einer Addition und bei einem Carry-Rippeln bis ganz nach oben herausfallen kann, was jedoch, wie es in der Technik bekannt ist, nicht kritisch ist, wenn spezielle Carry-Behandlungsroutinen eingesetzt werden.
Die Shift-Funktion in Fig. 15 ist selbsterklärend und zeigt softwaretechnisch, wie ein Registerinhalt X um einen Shift- Wert s_X entweder nach links oder nach rechts verschoben - - wird. Eine Verschiebung nach links bedeutet in binärer Darstellung eine Multiplikation mit 2SX. Eine Verschiebung nach rechts bedeutet eine Division durch 2SX. Die Funktion LAModulo, die in Fig. 16a dargestellt ist, ist wirksam, um die Reduktions-Parameter zu berechnen, die zum einen den Zwischenergebnis-Verschiebungswert sz und zum anderen das Vorzeichen des Moduls VZ_N umfassen. Als Eingangsgrö- ßen werden Z, N und c bevorzugt. Zunächst wird die Variable cur_Zsh auf das Minimum der Variablen Zsh, also die Shifter- Länge des Zwischenergebnis-Shifters und c, also die aktuelle Abweichung des LSB des Multiplikanden vom Start-LSB 208 in Fig. 2 eingestellt. Hierauf wird die approximierte Drei- Operanden-Addition durchgeführt, die prinzipiell genauso abläuft wie die exakte Drei-Operanden-Addition, jedoch mit dem Unterschied, daß nur die oberen 12 Bits bzw. die NoTopBits von N genommen werden, und daß in der Drei-Operanden- Additions-Formel sc und das Vorzeichen von C, also vc zu 0 gesetzt sind.
Der nachfolgende 0/1-Sucher liefert zunächst das höchstwertige signifikante Bit des Registers Z und inkrementiert dann den Verschiebungswert sz so lange sz kleiner als die Variable cur_Zsh ist und gleichzeitig nicht die maximale Registerlänge überschreitet .
Der letzte Fall in der if-Schleife betrifft den Fall, der in Fig. 2 nicht gezeichnet ist, bei dem also sz größer gewählt werden könnte, als es durch den Schieber Zsh erlaubt ist, bei dem also das MSB im Z-Register 4 um mehr Bits als durch Zsh vom MSB 206 des Moduls im Modulregister 200 entfernt ist. In diesem Fall wird sz über cur_Zsh auf Zsh eingestellt. Nachdem hier das Zwischenergebnis Z definitiv um eines oder mehrere Bits kleiner als der Modul N ist, wird eine Reduktion in Form einer Modulsubtraktion der Drei-Operanden-Addition unterdrückt, was sich dadurch äußert, daß der Reduktions- Vorausschau-Parameter vn zu 0 gesetzt wird. Damit wird eine Reduktion unterbunden. Würde dennoch eine Reduktion durchge- führt werden, so wäre das Zwischenergebnis negativ und insbesondere betragsmäßig größer als es vorher war. Eine Unterbindung der Reduktion in dem Fall, in dem das Zwischenergebnis Z nicht vollständig nach oben geschoben werden kann, aufgrund einer begrenzten Shifter-Länge, steigert die Effizienz des erfindungsgemäßen Verfahrens daher erheblich.
In Fig. 16b ist die Funktion Nachbearbeitung_LAModulo dargestellt. Falls m größer 0 ist, also falls noch Multiplikatorstellen zu verarbeiten sind, und falls sz größer 0 ist, während c kleiner als die Anzahl von Nullen im Hinblick auf den transformierten Modul ist, wird keine Verschiebung vorgenom- men, sondern es wird sz auf 0 gesetzt. Gleichzeitig wird auch eine Reduktion unterbunden, d. h. das Vorzeichen vn wird zu 0 gesetzt.
Fig. 17a zeigt die Funktion LAMultiplication, die den Mul- tiplikations-Vorausschau-Algorithmus definiert. Zunächst werden die Variablen cur_Csh und sm initialisiert, wie es in Fig. 17a dargestellt ist. Dann wird ein 0/1-Sucher ausgeführt, während dem die Variable sm inkrementiert wird. Ist die Abbruchbedingung ohne Sondersituation erfüllt, so ergibt die While-Schleife bereits den Multiplikations-
Verschiebungswert sm, der im Block 100 von Fig. 1 berechnet wird. Hierauf wird abhängig von dem Look-Ahead-Parameter LA, der mit Bits des Multiplikators verglichen wird, eine entsprechende Sonderbehandlung durchgeführt, um z. B. das Vor- zeichen vc des Multiplikanden zu 0 zu setzen, wenn beispielsweise ein größerer Multiplikations-Verschiebungswert möglich ist, als eigentlich durch die Schieber erlaubt wird. In diesem Fall wird lediglich hochgeschoben, modular reduziert, jedoch kein Multiplikand hinzuaddiert.
Fig. 17b zeigt die Funktion Nachbearbeitung_LAMultiplication, in der die Funktionalität der Einrichtung 106 durchgeführt- - wird, in der also sc aus sz - sm berechnet wird.
Wenn ein sc erhalten wird, das größer als die erlaubte Länge CSh des C-Shifters ist, wird sc gleich der maximalen Shifter- Länge gesetzt, wird sz derart eingestellt, wie es in Fig. 17b gezeigt ist, und wird das Vorzeichen des Moduls vn in der Drei-Operanden-Addition im Block 112 von Fig. 1 zu 0 gesetzt, so daß keine Reduktion stattfindet, da nicht der maximale Verschiebungswert genommen worden ist, sondern ein Verschiebungswert sz, der in der Funktion Nachbearbeitung, die in Fig. 17b gezeigt ist, eingestellt worden ist.
Bezugszeichenliste
100 Einrichtung zum Untersuchen 102 Multiplikations-Verschiebungswert 104 Einrichtung zum Ermitteln
106 Einrichtung zum Berechnen von sc 108 Einrichtung zum Verschieben von Z und C 108a Schieber für Z 108b Schieber für C 110 Zwischenergebnis-Verschiebungswert sz
112 Einrichtung zum Durchführen der Drei-Operanden-Addition 114 Zwischenergebnis aus dem aktuellen Iterationsschritt 200 Modulregister 202 Multiplikanden-Register 204 Zwischenergebnis-Register 206 MSB des Moduls 208 LSB des Moduls 210 Underflow-Buffer 212 LSB des Multiplikanden 214 LSB des Zwischenergebnisses nach einer Drei-Operanden- Addition 218 Maximaler Zwischenergebnis-Verschiebungswert 220 MSB des Zwischenergebnisses
400 Einrichtung zum Durchführen einer exakten Drei- Operanden-Addition
400' Exakte Drei-Operanden-Addition für den aktuellen Iterationsschritt 402 Exaktes vorheriges Zwischenergebnis 404 Modul N 406 Multiplikand C
408 Vorausschau-Parameter für den vorherigen Iterationsschritt 410 Exaktes Zwischenergebnis als Ergebnis des vorherigen I- terationsschritts 412 Einrichtung zum Durchführen einer approximierten Operanden-Addition 412a Z-Multiplexer 412b Shifter
412c Zwischenspeicher zum Speichern der verschobenen 12 Bits von Z 412d Kombinatorik-Zuleitung 412e Kombinatorik
412g Bitkopierleitung
412f Speicher für das approximierte Zwischenergebnis 412a Z-Multiplexer 412b Shifter 412c Zwischenspeicher zum Speichern der verschobenen 12 Bits von Z 412d Kombinatorik-Zuleitung 412e Kombinatorik 412g Bitkopierleitung 412f Speicher für das approximierte Zwischenergebnis
412' Approximierte Operanden-Addition für den aktuellen Iterationsschritt 414 Approximiertes aktuelles Zwischenergebnis 416 Multiplikator M 417 Einrichtung zum Berechnen der aktuellen Vorausschau- Parameter 417' Berechnen der nachherigen Vorausschau-Parameter 418 Aktuelle Vorausschau-Parameter
420 Exaktes Zwischenergebnis für die Berechnung des nachhe- rigen Iterationsschritts
500 Einrichtung zum Transformieren des Moduls
520 Einrichtung zum iterativen Abarbeiten unter Verwendung des transformierten Moduls 540 Einrichtung zum Rücktransformieren des transformierten Ergebnisses
700 Arithmetische Einheit 710 C-Register 720 N-Register 730 Z-Register 740 Iterationsschleife 750 ZDN-Register 760 Steuerlogik für den ZDN-Vergleich 900 Start des ZDN-Verfahrens
910 Multiplikations-Vorausschau-Verfahren für den ZDN- Algorithmus 920 Verschieben von Z nach links oder rechts 930 Reduktions-Vorausschau-Verfahren für den ZDN- Algorithmus 940 Verschieben des Moduls nach links 950 Drei-Operanden-Addition für den ZDN-Algorithmus 960 Ende des ZDN-Algorithmus 1000 Globale Variablen
1010 Initialisierung des Reduktions-Verschiebungswerts 1020 Berechnen von ZDN 1030 Untersuchen von n und sN 1040 Dekre entieren von n 1060 Dekrementieren des Reduktions-Verschiebungswerts 1080 Berechnen von ZDN/2
1100 Vergleich des Zwischenergebnisses mit ZDN 1120 Bestimmen des Reduktions-Vorausschau-Parameters 1140 Bestimmen des Reduktions-Vorausschau-Parameters 1160 Berechnen von n
1180 Berechnen des Reduktions-Vorausschau-Parameters 1200 Untersuchen von n 1220 Berechnen von cur_k 1240 Berechnen von cur_k

Claims

Patentansprüche
1. Vorrichtung zum Berechnen einer Multiplikation eines Multiplikators (M) und eines Multiplikanden (C) bezüglich eines Moduls (N) mittels eines Iterationsverfahrens mit mehreren Iterationsschritten, die einen vorherigen Iterationsschritt und einen aktuellen Iterationsschritt umfassen, mit folgenden Merkmalen:
einer Einrichtung (400) zum Durchführen einer exakten Drei- Operanden-Addition unter Verwendung eines vorherigen Zwischenergebnisses (Zvor) , des Moduls (N) und des Multiplikanden (C) und unter Verwendung von vorherigen Vorausschau- Parametern (408), um ein exaktes Zwischenergebnis (410) für den aktuellen Iterationsschritt zu erhalten;
einer Einrichtung (412) zum Durchführen einer approximierten Operanden-Addition unter Verwendung des vorherigen Zwischen- ergebnisses (Zvor) (402) und des Moduls und zumindest eines Teils der vorherigen Vorausschau-Parameter (408), um ein approximiertes Zwischenergebnis (414) für den aktuellen Iterationsschritt zu erhalten; und
einer Einrichtung (417) zum Berechnen von aktuellen Vorausschau-Parametern (418) unter Verwendung des approximierten Zwischenergebnisses (414) und des Multiplikators (416) ,
wobei die Einrichtung (400) zum Durchführen der exakten Drei- Operanden-Addition ausgebildet ist, um eine exakte Drei- Operanden-Addition in dem aktuellen Iterationsschritt unter Verwendung des exakten Zwischenergebnisses. (4-10) - für den aktuellen Iterationsschritt, des Moduls (404), des Multiplikan¬ den (406) und der von der Einrichtung (417) berechneten aktu- eilen Vorausschau-Parameter durchzuführen.
2. Vorrichtung nach Anspruch 1, bei der die Einrichtung (400) zum Durchführen der exakten Drei-Operanden-Addition ausgebildet ist, um eine erste Zeitdauer zur Berechnung zu benötigen, und
bei der die Einrichtung (412) zum Durchführen der approximierten Operanden-Addition und die Einrichtung (417) zum Berechnen von aktuellen Vorausschau-Parametern ausgebildet sind, um gemeinsam eine zweite Zeitdauer zur Berechnung zu benötigen, die kleiner oder gleich der ersten Zeitdauer ist.
3. Vorrichtung nach Anspruch 1 oder 2, die ferner eine Steuerung aufweist, die ausgebildet ist, um die Einrichtung (400) zum Durchführen der exakten Drei-Operanden-Addition und die Einrichtung (412) zum Durchführen der approximierten Operanden-Addition parallel zu speisen, so daß die beiden Einrichtungen parallel arbeiten können.
4. Vorrichtung nach einem der vorhergehenden Ansprüche,
bei der die Einrichtung (412) zum Durchführen der approximierten Operanden-Addition ausgebildet ist, um ohne Berücksichtigung des Multiplikanden (C) zu arbeiten.
5. Vorrichtung nach einem der vorhergehenden Ansprüche,
bei der die Einrichtung (412) zum Durchführen der approximierten Operanden-Addition ausgebildet ist, um von dem vorherigen Zwischenergebnis und dem Modul lediglich eine Anzahl von höherwertigen Bits zu verwenden, die kleiner als eine Gesamtanzahl von Bits des vorherigen Zwischenergebnisses und des vorherigen Moduls ist.
6. Vorrichtung nach Anspruch 5,
bei der der Modul ein transformierter Modul ist, der unter Verwendung einer Transformationsvorschrift von einem Modul abgeleitet ist, der von einer kryptographischen Berechnung vorgegeben ist, wobei die Transformationsvorschrift so ausgebildet ist, daß eine Anzahl von höherwertigen Bits des Moduls vorbekannt ist.
7. Vorrichtung nach Anspruch 6,
bei der die Transformationsvorschrift so gestaltet ist, daß die Anzahl von höherwertigen Bits des Moduls eine bestimmte Anzahl höchstwertiger Bits mit einem Zustand und restliche Bits mit einem entgegengesetzten Zustand aufweist.
8. Vorrichtung nach Anspruch 7, bei der die Einrichtung zum Durchführen der approximierten Drei-Operanden-Addition (412) ausgebildet ist, um das approximierte Zwischenergebnis aus
Bits des um einen Verschiebungsparameter verschobenen vorigen Zwischenergebnisses, deren Wertigkeit nicht der Anzahl von höchstwertigen Bits des transformierten Moduls entsprechen, und einer Kombination aus der Anzahl von Bits des transfor- mierten Moduls und unter Berücksichtigung eines Vorzeichen- Parameters (vn) und Bits entsprechender Wertigkeit (412g) des verschobenen Zwischenergebnisses zusammenzusetzen.
9. Vorrichtung nach Anspruch 8,
bei der die Einrichtung zum Durchführen der approximierten Drei-Operanden-Addition fest verdrahtet ist.
10. Vorrichtung nach einem der vorhergehenden Ansprüche,
bei der die Einrichtung zum Berechnen der aktuellen Vorausschau-Parameter ausgebildet ist, um einen Zwischenergebnis- Verschiebungswert (sz) und einen Multiplikanden- Verschiebungswert (sc) zu berechnen, wobei der Modul (N) nicht verschoben wird.
11. Vorrichtung nach Anspruch 10, bei der die Einrichtung zum Berechnen von aktuellen Vorausschau-Parametern ausgebildet ist, um ein Multiplikanden- Vorzeichen (vc) sowie ein Modul-Vorzeichen (vn) als weitere Vorausschau-Parameter zu berechnen.
12. Verfahren zum Berechnen einer Multiplikation eines Multiplikators (M) und eines Multiplikanden (C) bezüglich eines Moduls (N) mittels eines Iterationsverfahrens mit mehreren Iterationsschritten, die einen vorherigen Iterationsschritt und einen aktuellen Iterationsschritt umfassen, mit folgenden Schritten:
Durchführen (400) einer exakten Drei-Operanden-Addition unter Verwendung eines vorherigen Zwischenergebnisses (Zvor) , des Moduls (N) und des Multiplikanden (C) und unter Verwendung von vorherigen Vorausschau-Parametern (408), um ein exaktes Zwischenergebnis (410) für den aktuellen Iterationsschritt zu erhalten;
Durchführen (412) einer approximierten Operanden-Addition unter Verwendung des vorherigen Zwischenergebnisses (Zvor) (402) und des Moduls und zumindest eines Teils der vorherigen Vorausschau-Parameter (408), um ein approximiertes Zwischen- ergebnis (414) für den aktuellen Iterationsschritt zu erhalten; und
Berechnen (417) von aktuellen Vorausschau-Parametern (418) unter Verwendung des approximierten Zwischenergebnisses (414) und des Multiplikators (416) ,
wobei die Einrichtung (400) zum Durchführen der exakten Drei- Operanden-Addition ausgebildet ist, um eine exakte Drei- Operanden-Addition in dem aktuellen Iterationsschritt unter Verwendung des exakten Zwischenergebnisses (410) für den aktuellen Iterationsschritt, des Moduls (404) , des Multiplikan- den (406) und der von der Einrichtung (417) berechneten aktuellen Vorausschau-Parameter durchzuführen.
13. Verfahren nach Anspruch 12, das innerhalb einer kryp- tographischen Berechnung ausgeführt wird, wobei der Multiplikator (M) , der Multiplikand (C) und der Modul (N) Parameter der kryptographischen Berechnung sind.
14. Computer-Programm mit einem Programmcode zur Durchfüh- rung des Verfahrens nach Anspruch 12 oder 13, wenn das Programm auf einem Computer abläuft .
PCT/EP2003/014135 2002-12-23 2003-12-12 Modulare multiplikation mit paralleler berechnung der vorausschau-parameter WO2004059515A2 (de)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP03789247A EP1576463B1 (de) 2002-12-23 2003-12-12 Modulare multiplikation mit paralleler berechnung der vorausschau-parameter
DE50305387T DE50305387D1 (de) 2002-12-23 2003-12-12 Modulare multiplikation mit paralleler berechnung der vorausschau-parameter
AU2003293861A AU2003293861A1 (en) 2002-12-23 2003-12-12 Modular multiplication with parallel calculation of look-ahead parameters
US11/165,834 US7698357B2 (en) 2002-12-23 2005-06-23 Modular multiplication with parallel calculation of the look-ahead parameters

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE10260660A DE10260660B3 (de) 2002-12-23 2002-12-23 Modulare Multiplikation mit paralleler Berechnung der Look-Ahead-Parameter u.a. bei der kryptographischen Berechnung
DE10260660.9 2002-12-23

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US11/165,834 Continuation US7698357B2 (en) 2002-12-23 2005-06-23 Modular multiplication with parallel calculation of the look-ahead parameters

Publications (2)

Publication Number Publication Date
WO2004059515A2 true WO2004059515A2 (de) 2004-07-15
WO2004059515A3 WO2004059515A3 (de) 2005-02-10

Family

ID=32309057

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2003/014135 WO2004059515A2 (de) 2002-12-23 2003-12-12 Modulare multiplikation mit paralleler berechnung der vorausschau-parameter

Country Status (6)

Country Link
US (1) US7698357B2 (de)
EP (1) EP1576463B1 (de)
AU (1) AU2003293861A1 (de)
DE (2) DE10260660B3 (de)
TW (1) TWI263936B (de)
WO (1) WO2004059515A2 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395295B2 (en) * 2001-12-14 2008-07-01 Nxp B.V. Pipeline core in Montgomery multiplier
DE102004035097A1 (de) * 2004-07-20 2006-02-09 Endress + Hauser Gmbh + Co. Kg Elektronisches Gerät und Verfahren zur Durchführung mehrerer Prozesse mit dem elektronischen Gerät
WO2007046402A1 (ja) * 2005-10-19 2007-04-26 Matsushita Electric Industrial Co., Ltd. 情報セキュリティ装置、情報セキュリティ方法、コンピュータプログラム、コンピュータ読み取り可能な記録媒体及び集積回路
DE102006025569A1 (de) 2005-10-28 2007-05-03 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen einer Multiplikations-Additions-Operation und zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE102006025713B9 (de) 2005-10-28 2013-10-17 Infineon Technologies Ag Kryptographie-Vorrichtung und Kryptographie-Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE102006025677B4 (de) 2005-10-28 2020-03-12 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer Summe mit einem Rechenwerk mit begrenzter Wortlänge
DE102006025673B9 (de) * 2005-10-28 2010-12-16 Infineon Technologies Ag Rechenwerk zum Reduzieren einer Eingabe-Zahl bezüglich eines Moduls
US9348784B2 (en) * 2008-12-01 2016-05-24 Micron Technology, Inc. Systems and methods for managing endian mode of a device
US8626811B2 (en) * 2010-04-30 2014-01-07 Certicom Corp. Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine
CN109710308B (zh) * 2017-10-25 2023-03-31 阿里巴巴集团控股有限公司 任务的处理方法、装置和系统
CN110750232B (zh) * 2019-10-17 2023-06-20 电子科技大学 一种基于sram的并行乘加装置
TWI817742B (zh) * 2022-09-27 2023-10-01 熵碼科技股份有限公司 數值轉換方法及數值轉換系統

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3631992A1 (de) * 1986-03-05 1987-11-05 Holger Sedlak Kryptographie-verfahren und kryptographie-prozessor zur durchfuehrung des verfahrens
DE10111987A1 (de) * 2001-03-13 2002-09-26 Infineon Technologies Ag Verfahren und Vorrichtung zum modularen Multiplizieren
WO2004059463A1 (de) * 2002-12-23 2004-07-15 Infineon Technologies Ag Vorrichtung und verfahren zum berechnen einer multiplikation mit einer verschiebung des multiplikanden

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6042965B2 (ja) * 1979-06-01 1985-09-26 愛介 片山 複数法形高速乗算装置
DE3763872D1 (de) * 1986-03-05 1990-08-30 Holger Sedlak Kryptographie-verfahren und kryptographie-prozessor zur durchfuehrung des verfahrens.
US5289397A (en) * 1991-07-22 1994-02-22 Itt Corporation High-speed modulo exponentiator device
US6978016B2 (en) * 2000-12-19 2005-12-20 International Business Machines Corporation Circuits for calculating modular multiplicative inverse
DE10107376A1 (de) * 2001-02-16 2002-08-29 Infineon Technologies Ag Verfahren und Vorrichtung zum modularen Multiplizieren und Rechenwerk zum modularen Multiplizieren
GB2383435A (en) * 2001-12-18 2003-06-25 Automatic Parallel Designs Ltd Logic circuit for performing modular multiplication and exponentiation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3631992A1 (de) * 1986-03-05 1987-11-05 Holger Sedlak Kryptographie-verfahren und kryptographie-prozessor zur durchfuehrung des verfahrens
DE10111987A1 (de) * 2001-03-13 2002-09-26 Infineon Technologies Ag Verfahren und Vorrichtung zum modularen Multiplizieren
WO2004059463A1 (de) * 2002-12-23 2004-07-15 Infineon Technologies Ag Vorrichtung und verfahren zum berechnen einer multiplikation mit einer verschiebung des multiplikanden

Also Published As

Publication number Publication date
DE10260660B3 (de) 2004-06-09
EP1576463A2 (de) 2005-09-21
WO2004059515A3 (de) 2005-02-10
US20060064453A1 (en) 2006-03-23
US7698357B2 (en) 2010-04-13
TWI263936B (en) 2006-10-11
DE50305387D1 (de) 2006-11-23
AU2003293861A1 (en) 2004-07-22
AU2003293861A8 (en) 2004-07-22
EP1576463B1 (de) 2006-10-11
TW200421169A (en) 2004-10-16

Similar Documents

Publication Publication Date Title
EP1543408B1 (de) Vorrichtung und verfahren zum berechnen einer multiplikation mit einer verschiebung des multiplikanden
DE69838390T2 (de) Verbessertes gerät und verfahren für modulare multiplikation und exponentation basierend auf montgomerymultiplikation
DE60210494T2 (de) Hochgeschwindigkeitsberechnung in einer arithmetik- und logikschaltung
DE69826963T2 (de) Gerät für die modulare Inversion zur Sicherung von Information
DE3631992C2 (de)
DE10107376A1 (de) Verfahren und Vorrichtung zum modularen Multiplizieren und Rechenwerk zum modularen Multiplizieren
DE19758079A1 (de) Verfahren und Vorrichtung zur Galoisfeld-Multiplikation
DE1956209C3 (de) Multipliziervorrichtung
DE112007001319T5 (de) Multiplizieren zweier Zahlen
WO2004059515A2 (de) Modulare multiplikation mit paralleler berechnung der vorausschau-parameter
EP1370933B1 (de) Verfahren und vorrichtung zum modularen multiplizieren
DE10219158B4 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE10357661A1 (de) Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren
EP2641241B1 (de) Verfahren zur langzahldivision oder modulare reduktion
DE10164416A1 (de) Verfahren zum Multiplizieren zweier Faktoren aus dem Galois-Feld sowie Multiplizierer zum Durchführen des Verfahrens
DE102006025713B9 (de) Kryptographie-Vorrichtung und Kryptographie-Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE19635118A1 (de) Multiplizierer
EP1421474B1 (de) Verfahren und vorrichtung zum modularen multiplizieren
EP1478999B1 (de) Vorrichtung und verfahren zum umrechnen eines terms
DE10200133B4 (de) Verfahren und Vorrichtung zur Berechnung von Modulo-Operationen
DE10219164B4 (de) Vorrichtung und Verfahren zum Berechnen eines ganzzahligen Quotienten
EP1515226B1 (de) Modulare Multiplikation
DE3924344C2 (de)
DE102022201693A1 (de) Effizienter montgomery-multiplikator
DE1524146C (de) Divisionseinrichtung

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 EG 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 PG PH PL PT RO RU SC SD SE SG SK SL SY 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

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2003789247

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 11165834

Country of ref document: US

WWP Wipo information: published in national office

Ref document number: 2003789247

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 11165834

Country of ref document: US

WWG Wipo information: grant in national office

Ref document number: 2003789247

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP