EP2062131A1 - Schaltungen für die modulare arithmetik basierend auf der ergänzung von kettenbrüchen - Google Patents

Schaltungen für die modulare arithmetik basierend auf der ergänzung von kettenbrüchen

Info

Publication number
EP2062131A1
EP2062131A1 EP07764859A EP07764859A EP2062131A1 EP 2062131 A1 EP2062131 A1 EP 2062131A1 EP 07764859 A EP07764859 A EP 07764859A EP 07764859 A EP07764859 A EP 07764859A EP 2062131 A1 EP2062131 A1 EP 2062131A1
Authority
EP
European Patent Office
Prior art keywords
modular
circuit
modulus
register
calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP07764859A
Other languages
English (en)
French (fr)
Inventor
Dejan Lazich
Herbert Alrutz
Christian Senger
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TDK Micronas GmbH
Original Assignee
TDK Micronas GmbH
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 TDK Micronas GmbH filed Critical TDK Micronas GmbH
Publication of EP2062131A1 publication Critical patent/EP2062131A1/de
Withdrawn legal-status Critical Current

Links

Classifications

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

Definitions

  • the invention relates to a method or a circuit for modular arithmetic according to the preamble of claim 1 or claim 2.
  • PKK Diffie and Hellman Public Key Cryptography
  • Basic building blocks of the PKK systems [8] are mathematical one-way functions, which are usually calculated by a sufficiently large number of repetitions of a given mathematical operation on input data. For authorized persons who know this number of repetitions (the secret key), the recalculation of input data should be very difficult (practically impossible) for unauthorized persons who do not know the secret key.
  • An important example of one-way mathematical functions is the exponentiation (repeated multiplication) in finite cyclic groups with their inverse (without knowledge of the secret key), the discrete logarithm. In certain correspondingly large cyclic groups, the discrete logarithm is very difficult to calculate.
  • DLOG method The search for solving the discrete logarithm in these groups has been called the Discrete Logarithm or DLOG problem, and there are some PKK methods whose security is based on the difficulty of the DLOG problem (DLOG method). Particularly noteworthy here are the Diffie-Hellman key exchange [1], the enciphering and signing process of EIGamal [3] as well as some variations derived from it [4]. However, the security of the best-known PKK ciphering and signing method, which according to its discoverers Rivest, Shamir and Adelman was called RSA method, depends on the difficulty of the as yet unresolved factoring problem [2].
  • modular arithmetic operations each play a fundamental role, because modular arithmetic (or residual class arithmetic) forms a basis for the calculation in residual class rings modulo N as well as in finite fields. If this natural number N is a prime p, the arithmetic rules for modular arithmetic define exactly the rules for the calculation in prime bodies Fp (or GF (P)).
  • V U Kp mod N are described, the precalculated numbers K p and N are published by the device E.
  • the decryption of the encrypted text (ciphertext) V is then performed by means E by means of the equation
  • Modular arithmetic can thus be used to perform the encryption and decryption of information, as well as other cryptographic tasks in practice.
  • the motivation for using such computational operations is that the security of the secret key is critically dependent on its bit length.
  • the RSA and DLOG methods have in common that they provide sufficient security only when using very large numbers as private (secret) keys (nowadays 300-600 decimal places, about 1000-2000 bits long) [7] (practical impossible reconstruction of the secret input data without knowledge of the secret key and practically impossible reconstruction of the secret key itself). If smaller key lengths are used, both the RSA and the DLOG methods can be broken on today's computers by using certain algorithms [4] or sometimes simply by trying all sorts of secret keys.
  • Elliptic Curve Cryptography (ECC) cryptography [9 to 11] and Hyper Elliptic Curve Cryptography (HECC) [5].
  • Elliptic curves are sets of points defined by certain polynomial equations over a body, for which one can define point addition (addition of two points), a point doubling, and a multiplication of a point with a natural number. Dot addition and dot doubling are composed of several operations of the basic body. The multiplication of a point with a natural number consists in turn of several point additions and point doublings.
  • R N [- ⁇ ] R N [N - R N [n]] (3)
  • R N [R N [ ⁇ ]] R N [n], where n, each Z and N e Z ⁇ ⁇ 0 ⁇ .
  • n (x) n g- rx 9'1 + n g-2 «x 9'2 + ... + n 2 » x 2 + n ⁇ x 1 + n o «x °
  • N (X) N G-1 . ⁇ G - 1 + N G -2 -x G "2 + ... + N 2 ⁇ 2 + N 1 * 1 + N 0 » x °
  • g, G e N ⁇ ⁇ 0 ⁇ are the lengths X (n (x)) and X (N (X)) of the respective polynomial and g-1
  • G-1 are the respective polynomial degrees degrees (n (x) ) and degrees (N (x)), if n g- i ⁇ 0 and N G- i ⁇ 0.
  • the exponentiation x k with a natural number ke N corresponds to the k-times repeated multiplication of the free variable x.
  • a polynomial with coefficients, all of which have the value zero, is referred to as zero polynomial 0.
  • n 0 , m, n 2 ,..., N g-1 and N 0 , Ni, N 2 ,..., N G -i of the respective polynomials originate from a fixed commutative ring - an amount on the two arithmetic Operations with certain properties are defined (eg complex numbers C with complex addition and multiplication, real numbers IR with real addition and multiplication, rational numbers O with their addition and multiplication, integers Z with their addition and multiplication, etc.).
  • the basic task of modular arithmetic with polynomials is to find a residual polynomial R (x) of a polynomial n (x) with respect to another polynomial N (x) ⁇ 0, where R (x) is the polynomial obtained by taking the largest possible subtracts polynomial multiples of the modulus polynomial N (x) from n (x).
  • n (x) q (x) ⁇ N (x) ⁇ R (x) (9)
  • R (x) R N ( X ) [n (x)] is used.
  • R (x) R N ( X ) [n (x)] is used.
  • all values of R (x) with respect to n (x) in the residual class polynomial ring are modulo N (x) over Z N , denoted by Z N [X] N ( X ).
  • Z N [X] N ( X ) From the divisional theorem of Euclid for polynomials one can derive the properties of residues over Z N [x] N (x). The most important features are:
  • R N (x) 0 (x) H N (x) ] 0 (13)
  • R NM [n (x) ⁇ j (x) ⁇ N (x)] R N ( x) [n (x)] (14)
  • n (x), j (x) e Z N [x] N (x) , N (x) e Z N [x] N ( X ) ⁇ ⁇ 0 ⁇ and BN (x) 0 BN (x) ,
  • RN (X) [n (x) k ] RN ( ⁇ ) [RN ( x) [n (x)] k ], (22a)
  • the modular additions have R N (x) [a (x) ⁇ b (x)] and the modular subtraction R N ( X ) [a (x) Eb (x)], a (x) b (x) e Z [x], same results as the basic operations El and B itself, if degrees (a (x)) ⁇ degrees (N (x)) and degrees (b (x)) ⁇ degrees (N (x )).
  • the modular addition and subtraction are just as complex as the modular reduction of the longer operand, as in component addition and subtraction in the execution of operations El and B no carry-over arise.
  • one of the operands is much longer than the modulus, then this is a non-trivial problem, since then potentially a very large number of subtractions would have to be performed.
  • the modular division can be reduced to the operations defined above using Fermat's small set. It says that the (N-2) -th power of every element of a finite field is the modular inverse of that very element. With this procedure, the modular inversion and thus also the modular division can be attributed to the multiple execution of the modular multiplication.
  • the modular exponentiation and the modular division (inversion) are thus reduced to the multiple execution of the modular multiplication.
  • the main problem of the long-term modular multiplication is the modular reduction, which - with a separate procedure (reduction after multiplication) - a general modulus laren reduction of much larger numbers than the modulus and thus can be very complex. Only through an algorithmic simultaneous implementation of multiplication and modular reduction can be found useful methods. Based on this basic idea, numerous solution strategies exist in the literature [14 to 27]. These range from more or less exact methods for the estimation of the quotient q to sophisticated mathematical transformations, which only yield a correct result for the modular reduction or multiplication by the final matching inverse transformation.
  • a related approach is to use a look-ahead method as disclosed in DE 3631992 C2 for Z N arithmetic and in DE 10107376 A1 for arithmetic on GF (2 n ).
  • Scalable- should not be limited to specific operand length and curve parameters • Conform - if possible, all known crypto standards should be supported
  • Implementation-flexible - should be used as a standalone circuit, as a circuit controlled by microcontrollers, or as a pure software module for the microcontroller
  • DE 3631992 also shows a crypto-processor which is optimized for carrying out the RSA method - that is, it is not PKK-universal at the moment.
  • this processor the modular multiplication is implemented by a sequence of additions.
  • Another processor which allows a hardware-based implementation of a Montgomery multiplication in a specially designed coprocessor, can be found in US5961578.
  • Another modular multiplier circuit and a cryptosystem are known from DE 10 2005 028 518 A1.
  • This circuit is characterized in that a Montgomery multiplier contained in it operates with a bit length which is adapted to the multiplication to be carried out. This contributes to an increase in safety and a shortened calculation time.
  • the invention is therefore based on the object to provide a method for modular arithmetic, which can be implemented in an optimized manner in an apparatus in the form of an integrated circuit actually.
  • This object is achieved by the method for modular multiplication according to claim 1 or the device for modular multiplication according to claim 2.
  • the invention is based on the finding that the product a »b, which is generally much larger than the modulus N, still is gradually reduced during its computation (TC-MaI) by simply dividing it by the radix p (shift by one digit). This is to achieve that the result ⁇ a ⁇ lp * comes as close as possible to N, so that a trivial reduction is possible.
  • the continued fraction transformation can be tion in the usual in the PKK calculations and numbers are used with less computational effort.
  • the introduced continued fraction transformation can be calculated with a circuit for both integers and polynomials. Thus, the essential requirement for a complete circuit is met.
  • 321 can be represented as 3 "10 2 + 2 * 10 1 + 1 " 10 °.
  • a sign (+ or -) indicates whether a> 0 or a ⁇ 0 in both types of information (missing sign here means +, as usual).
  • Figure 7. Procedure for calculating chains of operation in modular arithmetic without and with transition into the space of the transform.
  • Figure 8. Circuit for the calculation of the counter Z 0 1 in the supplemented product chain break (27).
  • Figure 9. a) Multiplier for two 1-digit inputs (a ⁇ ) p and (bj) p .
  • the output of the adder consists of the output digit O, as well as the carries ⁇ i and O 2 for the next adder
  • FIG. 11 Procedure for calculating an arbitrary counter Z m 'in the supplemented product chain break (27).
  • Figure 20 Structural representations of the binary serial-parallel circuit for calculating the supplemented product chain break, a) structure based on registers, b) structure based on MAT cells.
  • Figure 21 A pipeline stage of the binary serial-parallel circuit for calculating the supplemented product chain break.
  • FIG. 23 Connection of the control unit with the first pipeline stage and a MAT cell of the binary serial-parallel circuit for the calculation of the supplemented product chain break.
  • Figure 24 Principle of the clock distribution in the binary serial-parallel circuit for the calculation of the supplemented product chain break.
  • Figure 25 A pipeline stage of the binary serial-parallel circuit with multiplexes for additional calculation of modular addition and subtraction.
  • Figure 26 Last pipeline stage of the binary serial-parallel circuit with multiplexes and extension of the register Reg b for the additional calculation of the modular addition and subtraction.
  • Figure 27 The register structure of the binary serial-parallel circuit for the calculation of the supplemented product chain break extended for the calculation of the modular addition and subtraction.
  • the first step of the procedure according to the invention is first explained by way of example.
  • FIG. 2 illustrates the next step of the method according to the invention. While any number can be represented as a product chain break, the problem here is that the result of a product chain break can be a truly rational number (aty / p * e Q for which modular arithmetic is undefined it is necessary, the individual counters Z 0 , Z 1 , ..., Z ⁇ - i in the stages of product chain break (24) to be supplemented counters Z 0 ', Z 1 ', Z 2 ', ..., Z ⁇ - i 'to add that such a supplemented product chain break, denoted by S N (a * b / p *), is always an integer.
  • the individual supplementary factors are determined according to the following procedure.
  • N ' is a decimal number for T> 0 (v> l) (see the comma between Nl ⁇ and N ⁇ .,).
  • Zm Ip ⁇ Z m [Z m ⁇ imy , Z m ⁇ m y2 ... Z n , 1) p £ 2, ie Z m * is shifted by one digit in the direction of the LSD by Z n , '(as a whole Number). If z m0 * ⁇ 0, then p does not divide Z m * (denoted by p-rZ m *; Z m * / p £ Z) and Z m * must be added.
  • the transformation TC N, *: [ab] is a function of a and b, the radix p, the modulus N, the modulus divisor v and the supplementary factors ⁇ i m
  • m 1, ..., 7C-1 ⁇ . It allows the calculation of the modular product R N [ab] by the additional calculation of another modular product
  • c TC N, * - [ab] is the continued fraction transformation and
  • X p * is the radix potency (or the radical R N [p *]).
  • the relation in (34a) can be easily proved by inserting (33) in (34a).
  • This direct inverse transformation (34) does not have the same shape as the fractional transformation (33) and would have to be computed using a different algorithm, which would be a disadvantage for the circuitry.
  • £ p ⁇ z is the length of the longer decomposed operand z in a transform pair is (z is the longer between a and c).
  • FIG. 3a shows the decomposition of the occurring numbers into the digits occurring in this radix.
  • FIG. 4a again reproduces the result of the direct calculation in order to explain the comparison with the solutions according to the method according to the invention.
  • FIG. 4b shows the direct inverse transformation (34).
  • FIG. 4d again shows the sequence of the calculation in detail.
  • the procedure corresponds exactly to the procedure demonstrated in detail with reference to FIG. 3c:
  • the individual steps in the calculation of the supplemented product chain break can be understood.
  • the modulus must always be added once if the last bit of the unsupplemented counter is a 1.
  • FIG. 6 shows an example of the method introduced here of modular multiplication with continued fraction transformation on polynomials from -Z 2 [X] N (X).
  • the formation of the associated product chain break (according to (24) but for polynomials) is shown in the upper part of FIG. 6b.
  • the first counter Z 0 (x) results from the binary multiplication of b (x) with the digit a 0 .
  • the last counter received is then divided by the "radix" x and added in binary to the product of b (x) with the current digit, the arithmetic operations always being carried out without carryover.
  • the corresponding polynomial assumption for the computation refers to polynomial degrees and means that the degrees of the two operand polynomials are less than the modulus polynomial degree (in degrees (a (x)), degrees (b (x)) ⁇ degrees (N (x))).
  • these assumptions are always met, since the individual elements or their degrees are all smaller than the respective modulus or its degree. For this reason, in the further course of this document the conditions a, b ⁇ N (39) and
  • the modular division in finite fields is reducible to the modular inversion by performing a modular multiplication with the modular inverse of the divisor.
  • this equation has no general solution, but is solvable only for certain combinations of N and a.
  • F p and F p m it always has a solution.
  • the supplementary circuit Con for the supplementary function (26) determines, depending on p and N 1, the supplementary factor i 0 .
  • the inputs E of the adders are not used in this circuit (logic zeros are connected), since Z ' o is the first counter of the supplemented product chain break and has no predecessors. The inputs E of the adders are needed for the next stage.
  • the next counter Z 1 'of the supplemented product chain break (27) in Fig. 2 will be implemented by a parallel circuit.
  • An identical circuit block is added and the outputs of Reg w in the first block are connected to the inputs E of the adders in the second block. This connection is shifted by one position in the direction of the LSD, whereby a division by p is performed, as shown in FIG.
  • the supplementary circuit Con of the first block forces, by the supplementary factor i 0 , that the output of W 0 in Reg w of the first block left free by the shifted connection always yields a 0.
  • the supplementary circuit Con of the second block generates the supplementary factor J 1 , which according to (28) depends on the result of the product a ⁇ bo and Z 01 *. Since Z 01 * is stored in W 1 of the first block, the output of W 1 of the first block should be connected to the input of the supplement circuit Con of the second block. As in the first block, the supplementary circuit Con of the second block by the supplementary factor J 1 forces the output of W 0 in Reg w of the second block to always return a 0. In order to be able to add the shifted (divided by p) most significant digit from the W ⁇ +1 of the first block, in the second block to the position "7C, the second block must be extended with an additional adder / ⁇ ⁇
  • FIG. 1 A general parallel version of the supplemented product chain fraction calculation circuit is shown in FIG. As a purely combinatorial circuit, it does have advantages in terms of its speed, the number of required grain However, components (with an appropriate length of N) are too large for many applications.
  • a version with much less need for components is obtained by replacing the parallel circuit blocks in FIG. 11 with a structure having feedback outputs of the Reg Reg register, thus using only a single block several times.
  • the digits of the operand a must be inserted into the circuit individually and controlled by a clock.
  • the simple feedback rule follows directly from the parallel circuit described above and is shown in FIG.
  • This circuit is referred to as a general serial-parallel circuit for calculating the supplemented product chain break.
  • the digit multipliers in this case become simple AND gates, while the supplementary function Con can be realized by a simple XOR gate if the modulus N is odd.
  • a control unit Upstream of the first pipeline stage is a control unit (SE) in which the required clock is generated and counted.
  • a D flip-flop (denoted by FFa) for the latching of the respectively last inserted bit a t of the operand a in the control unit is included. With this bit, the first p bits of the operand b are multiplied and at the same time a supplement with the corresponding supplementary factor i, in the first pipeline stage is performed.
  • Each ZS consists of four D flip-flops designated Za 1 Zo 2 , Z ⁇ i and Zi.
  • the D flip-flop Za stores the bit of the operand a which was used to perform the last multiplication in the pipeline stage.
  • the resulting carry O 2 and O 1 of the last adder in the pipeline stage are stored in the D flip-flops Zo 2 and Zo 1 , while the D-flip-flop Zi stores the supplementary factor that was used.
  • the bits stored in ZS 1 are used in the second pipeline stage. There, the multiplication of the bit a t stored in Za with the next p bits of the operat- b and the corresponding supplement with i t . This can already start after the carries have propagated through p adders of the first pipeline stage. Simultaneously, the multiplication of a t + i starts with the first p bits of operand b (and the corresponding complement with i t + i) in the first pipeline stage. By the same principle, all other pipeline stages will work, thereby speeding up (for smaller p-values) or less (for larger p-values) the work of the binary serial-parallel circuit, depending on the chosen length p of the pipeline stages.
  • the entire pipelined binary parallel-serial circuit can be represented by 6 functional units: the registers Reg a, Reg b and Reg N, the arithmetic unit (AE) consisting of the adder chain with buffer and the associated Reg register w, the clock distribution unit (TVE) which drives the individual pipeline stages through clock distribution stages (TVS), and the control unit (SE) which generates the clock, counts and implements all additional conventional control functions (eg a reset function of the circuit, or the start a specific modular operation). Some easily realizable control functions are not considered here for the sake of clarity of the essence.
  • FIG. 20a The entire binary serial-parallel circuit with the pipeline structure is shown in FIG.
  • Figure 21 a pipeline stage is shown in detail.
  • Figure 22 shows the final VAE extended pipeline stage.
  • PS pipeline stages
  • PS individual pipeline stages
  • TVS clock distribution stage
  • the TVS are identical at all pipeline stages and form the entire clock distribution unit (TVE) in a serial connection. Only the last pipeline stage is without TVS.
  • the TVE see Fig.
  • each rising edge of T starts a new intermediate calculation in the first pipeline stage PSi with the next bit of operand a.
  • the rising edges of the clock T take place half a clock period earlier than the rising edges (Fn, Fi 2 F ü r) of the inverted clock Ti. In this half clock period, all carries in the addition chain (A 0 , Ai, A 2 , A 3 ) the PSi have already disseminated in order to be able to transfer to the working register the correct intermediate result of the current intermediate calculation (with the bit a t ).
  • the D flip-flops W 0 to W 3 of the working register are clocked in PSi with the rising edges of the inverted clock Ti. With the same edges and the D-flip-flops Za 1 , ZO2- ,, ZOi 1 and Zi 1 of the latch ZSi are clocked.
  • the necessary parameters of the intermediate result of the current intermediate calculation in PS 1 and the bit a t and the supplementary factor i t of the next (second) pipeline stage PS 2 are passed without further delay.
  • PS 2 the intermediate calculations with a t i and t start immediately, while PS 1 starts the intermediate calculations with a t + 1 and t i +.
  • the counter Za in the control unit (SE) delivers a stop pulse (falling edge) after Ti counted by the D flip-flops in the TVE szCju ⁇ zi ⁇ ii for half a Taktp ⁇ ricd ⁇ the Tsktu ⁇ g the cinz ⁇ lnsn pipeline stages, because due to the pipeline structure the correct final result is available in the Reg reg workbook at various, sequential instants.
  • the D flip-flops W 0 to w 3 are clocked in the PSi until the counter Za has counted in SE 9C clock periods from the beginning of the computation of the supplemented product chain break (in the inverted clock Ti).
  • Pipeline stages up to PS P are performed on the same principle. After the stop pulse propagated in half clock periods by TVE has stopped the last pipeline stage PS P , it can be used to provide the whole circuit by resetting for a new calculation of the supplemented product chain break. For this, the new operands must first be stored in the corresponding register.
  • the two's complement N zc of the modulus must be added to the content (b + a) of Reg b.
  • the two's complement of odd Numbers of how the modulus N is one can be obtained by bitwise inversion of the individual bits and setting the LSB to 1.
  • the addition (b + a) + N zc is started and obtained after P half clock periods (as in the case b + a) in Reg b.
  • the modular subtraction R N [ba] is very similar, namely by adding the two-complement a zc from a to b.
  • this two's complement is somewhat more difficult to compute since a can not generally be assumed to be odd. For this reason, the addition of the two's complement must be decomposed into an addition of the (easy to obtain) bitwise complement a c and the constant 1.
  • the multiplexers M offer this possibility (see FIG. 27).
  • the correction subtraction according to (32) in the evaluation of the continued fraction transformation is likewise carried out by the trial-and-error method as in the case of modular addition.
  • the contents of the work register Reg w (where the result of the supplemented product chain break is stored) are copied to the operand register Reg b. This is done as an addition, only the outputs of the two multiplexers Mi and M 2 to the value 0 set. Thereafter, if necessary, the modulus N, as described above, is subtracted using the trial-and-error method.
  • the inversion or division is not considered by the circuit described here, since it can be performed (as described above) by means of the small set of Fermat by multiple multiplication.
  • the continued fraction transformation can also be implemented serially.
  • This implementation only requires one pipeline stage (PS) whose length is matched to the width of the data bus.
  • PS is supplemented by a supplementary function unit EF, a buffer ZS and an extension of the arithmetic unit (UAE), as shown in FIG. 28 for the binary case.
  • All operands and intermediate results are stored in a RAM, which is controlled by a microcontroller ⁇ C. is controlled, cached.
  • the pipeline stage has no working register because the intermediate results are routed directly to the RAM via the data bus interface.
  • Taher EIGamal "A public key cryptosystem and a signature scheme based on discrete logarithms", IEEE Transactions on Information Theory 31 (4), pp. 469-472, 1985.
  • Morita Hikaru "A Fast Modular Multiplication Algorithm based on a Higher Radix", in G. Brassard (Edit.): Advances in Cryptology-CRYPTO 1 89, LNCS 435, pp. 387-399, 1990, Springer Verlag Berlin Heidelberg 1990.
  • Kerstin Lemke "Embedded Security: Physical Protection against Tampering Attacks", in Kerstin Lemke, Christof Paar, Marko Wolf (Eds.): “Embedded Security in Cars", Springer-Verlag, pp. 207-220, 2006.

Landscapes

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

Abstract

Verfahren zur Durchführung der modularen Multiplikation RN[ab] von ganzen Zahlen bezüglich eines Modulus N und der modularen Multiplikation RN(X)[a(x)b(x)] von Polynomen bezüglich eines Moduluspolynoms N = N(x), wobei die ganzen Zahlen a < N, b < N, und N bezüglich einer Radix p dargestellt sind, während die Polynome a = a(x) mit Grad(a(x)) < Grad(N(x)), b = b(x) mit Grad(b(x)) < Grad(N(x)) und N(x) bezüglich Potenzen der freien Variablen x und mit Koeffizienten aus einem ganzzahligen Restklassenring ZM dargestellt sind, umfassend die Schritte: - Berechnung eines ergänzten Produktkettenbruchs c = (ab+jN)/t durch Ergänzungen von einzelnen Zählern eines als Kettenbruch dargestellten Produktbruchs (ab)/t, wobei im ersten Fall der Berechnung mit ganzen Zahlen, c und j ebenfalls ganze Zahlen sind sowie t = p&kappav;, während im zweiten Fall der Berechnung mit Polynomen, c = c(x) und j = j(x) ebenfalls Polynome mit Koeffizienten aus ZM sind sowie t = t(x) =x&kappav; und wobei in beiden Fällen K eine ganze Zahl größer oder gleich der Länge Λp(a) des im Kettenbruch zerlegten Operanden a ist - Berechnung eines zweiten ergänzten Produktkettenbruchs r = (cd+kN)/t aus dem vorab berechneten modularen Rest d = RN[t2] und dem Ergebnis c der im oben genannten Schritt durchgeführten Rechnung, wobei im ersten Fall r, k und d ganze Zahlen sind und im zweiten Fall r = r(x) = RN(x)[a(x)b(x)], k = k(x) und d = d(x) Polynome mit Koeffizienten aus ZM sind.

Description

Schaltungen für die modulare Arithmetik basierend auf der Ergänzung von Kettenbrüchen
Stand der Technik
Die Erfindung betrifft ein Verfahren, bzw. eine Schaltung, für die modulare Arithmetik gemäß dem Oberbegriff des Anspruchs 1 bzw. Anspruchs 2.
Grundlagen der Public Key Kryptographie
Die 1976 von Diffie und Hellman eingeführte Public Key Kryptographie (PKK) [1] hat sich zum Standardverfahren für den verschlüsselten und signierten Austausch von Daten entwickelt. Bei PKK-Systemen besitzt jeder Kommunikationsteilnehmer einen geheimen privaten Schlüssel (engl, private key) sowie einen öffentlichen Schlüssel (engl, public key). Nachrichten, welche mit dem öffentlichen Schlüssel verschlüsselt wurden, können nur mit dem dazugehörigen privaten Schlüssel wieder entschlüsselt werden. Umgekehrt können Signaturen mit dem privaten Schlüssel nur mit dem dazugehörigen öffentlichen Schlüssel verifiziert werden. Auf diese Art und Weise kann eine sichere Kommunikation stattfinden, ohne dass die Kommunikationspartner vorher ein gemeinsames Geheimnis ausgetauscht haben müssen. Sie müssen sich nur den richtigen und aktuellen öffentlichen Schlüssel des gewünschten Kommunikationspartners aus einer vertrauenswürdigen öffentlichen Quelle beschaffen und den eigenen privaten Schlüssel geheim halten. Die asymmetrischen PKK-Verfahren beheben damit ein grundlegendes Problem der klassischen symmetrischen Kryptoverfahren - den sicheren Austausch eines gemeinsamen Geheimschlüssels [4].
Neben der verschlüsselten Kommunikation und den elektronischen Signaturen verwendet man die Methoden der PKK noch für folgende kryptografische Aufgaben:
• Passwort- und Identifikationssysteme - Authentisierung für den Zugriff auf Daten oder Einrichtungen (Überprüfung, ob jemand derjenige ist, der er vorgibt zu sein)
• Unabstreitbarkeit - die Kommunikationspartner können ihre bereits durchgeführten Transaktionen im Informationsaustausch nachträglich nicht bestreiten
• Austausch von gemeinsamen Geheimnissen - z.B. Schlüssel für symmetrische Kryptoverfahren
• Erzeugung von Pseudozufallszahlen - z.B. bei der Suche nach einem passenden PKK-Schlüsselpaar
• Bit-Festlegung (engl, bit commitment) - Festlegung von gewissen Kryptopara- metern, an die sich die Kommunikationspartner unbedingt halten müssen • Geteiltes Geheimnis (engl, secret Sharing) - gemeinsame Wahrung einer Geheiminformation
• Beweis ohne Wissensvermittlung (engl, zero knowledge proof) - ermöglicht, jemanden davon zu überzeugen, dass man ein Geheimnis kennt, ohne jedoch Information über das Geheimnis selbst preiszugeben.
All diese Aufgaben werden durch verschiedene kryptografische Protokolle realisiert, die den genauen Ablauf von einzelnen Aktionen und Transaktionen der Kommunikationspartner vorschreiben. Zusammen mit einer Public-Key-Infrastruktur ermöglichen sie viele praktische Anwendungen, von der Geheimhaltung von Nachrichten bis zu e- lektronischen Zahlungssystemen und sichere Wahlen. Diese praktischen Anwendungen werden immer öfter durch eine direkte Einbettung von PKK-Algorithmen in integrierte Schaltungen (ICs) realisiert.
Grundbausteine der PKK-Systeme [8] sind mathematische Einwegfunktionen, die man üblicherweise durch eine ausreichend große Anzahl von Wiederholungen einer bestimmten mathematischen Operation auf Eingangsdaten berechnet. Für Befugte, die diese Anzahl der Wiederholungen (den geheimen Schlüssel) kennen, soll die Rückberechnung der Eingangsdaten einfach, für Unbefugte dagegen, die den geheimen Schlüssel nicht kennen, sehr schwer (praktisch unmöglich) sein. Ein wichtiges Beispiel für mathematische Einwegfunktionen ist die Potenzierung (wiederholte Multiplikation) in endlichen zyklischen Gruppen mit ihrer Umkehrung (ohne Kenntnis des geheimen Schlüssels), dem diskreten Logarithmus. In bestimmten entsprechend großen zyklischen Gruppen ist der diskrete Logarithmus sehr schwer zu berechnen. Die Suche nach der Lösung des diskreten Logarithmus in diesen Gruppen wurde das Diskrete Logarithmus- oder auch DLOG-Problem genannt, und es existieren einige PKK-Verfahren, deren Sicherheit auf der Schwierigkeit des DLOG-Problems basiert (DLOG- Verfahren). Zu nennen sind hier insbesondere der Diffie-Hellman-Schlüsselaustausch [1], das Chiffrier- und Signierverfahren von EIGamal [3] sowie einige daraus abgeleitete Variationen [4]. Die Sicherheit des bekanntesten PKK Chiffrier- und Signierverfahrens, das nach seinen Entdeckern Rivest, Shamir und Adelman RSA-Verfahren genannt wurde, ist jedoch von der Schwierigkeit des bis heute ungelösten Faktorisie- rungsproblems abhängig [2].
Bei der praktischen Umsetzung der asymmetrischen Kryptoalgorithmen spielen, wie weiter unten ausführlicher beschrieben wird, modulare Rechenoperationen jeweils eine fundamentale Rolle, denn die modulare Arithmetik (oder Restklassenarithmetik) bildet eine Basis für die Rechnung in Restklassenringen modulo N sowie in endlichen Körpern. Wenn diese natürliche Zahl N eine Primzahl p ist, definieren die arithmetischen Regeln für die modulare Arithmetik genau die Regeln für die Rechnung in Primkörpern Fp (oder GF(P)).
Dabei sind auf moduierer Addition und einfacher modularer Multiplikation basierende Konstruktionen von Verschlüsselungsfunktionen keine gute Wahl, da sich so definierte Verschlüsselungsmethoden mit überschaubarem Aufwand brechen lassen; sehr wohl geeignet sind aber die Potenzierung und ihre Umkehrung, der diskrete Logarithmus.
So kann z.B. die Überführung eines unverschlüsselten Textes (Klartextes) U unter Verwendung eines öffentlichen Schlüssels Kp einer Kommunikationseinrichtung E durch die Gleichung
V = UKp mod N beschrieben werden, wobei die vorberechneten Zahlen Kp und N durch die Einrichtung E veröffentlicht werden. Die Entschlüsselung des verschlüsselten Textes (Chiffretextes) V erfolgt dann durch die Einrichtung E mittels der Gleichung
U = V1^ mOd N, wobei die vorberechnete Zahl Ks eine geheime, von E verwaltete Information ist (geheimer Schlüssel). Auch eine solche Verschlüsselungsmethode ist aber nur dann sicher, wenn es sich bei dem geheimen Schlüssel um eine hinreichend große Zahl handelt. Was „hinreichend" in diesem Zusammenhang bedeutet ist abhängig vom exakten verwendeten Verschlüsselungsalgorithmus, typische Werte für gängige Verfahren werden weiter unten angegeben.
Modulare Arithmetik kann also verwendet werden, um die Verschlüsselung und die Entschlüsselung von Informationen, sowie andere kryptografische Aufgaben praktisch durchzuführen. Im Rahmen der modularen Arithmetik lässt sich auch mit Polynomen rechnen. Wenn das Moduluspolynom N(x) über Fp irredυzibel ist, mit N(x) = p(x) und Grad(p(x)) = m e N \{0) (d.h. p(x) kann man nicht als Produkt von Polynomen über FP darstellen), so definieren die arithmetischen Regeln für die modulare Arithmetik über Polynomen genau die Regeln für die Rechnung in endlichen Erweiterungskörpern Fpm (oder GF(pm)). Hier rechnet man mit Polynomen modulo p(x) und noch zusätzlich komponentenweise modulo p (d.h. in Fp).
Neben der Arithmetik in Restklassenringen ZN (N keine Primzahl) und in endlichen Körpern FP und Fpm kann man auch noch die Gruppenarithmetik der elliptischen und hyperelliptischen Kurven verwenden. Die dort definierten Gruppenoperationen sind aus mehreren arithmetischen Operationen auf den endlichen Körpern FP oder Fpm zusammengesetzt. Ein Beispiel für ein entsprechendes Verfahren ist der DE 698 29 967 T2 zu entnehmen.
Die Motivation zur Verwendung von derart einsetzbaren Rechenoperationen hängt damit zusammen, dass die Sicherheit des geheimen Schlüssels in entscheidender Weise von seiner Bitlänge abhängt. Dem RSA- und den DLOG-Verfahren ist beispielsweise gemein, dass sie nur bei der Verwendung sehr großer Zahlen als private (geheime) Schlüssel (heutzutage 300-600 Dezimalstellen, etwa 1000-2000 Bit lang) eine ausreichende Sicherheit bieten [7] (praktisch unmögliche Rekonstruktion der geheimen Eingangsdaten ohne Kenntnis des geheimen Schlüssels und praktisch unmögliche Rekonstruktion des geheimen Schlüssels selbst). Kommen kleinere Schlüssellängen zum Einsatz, so können sowohl das RSA- als auch die DLOG-Verfahren auf heutigen Rechnern durch Einsatz von bestimmten Algorithmen [4] oder manchmal auch durch einfaches Durchprobieren aller möglichen geheimen Schlüssel gebrochen werden.
Jedoch wird durch den Einsatz von langen privaten Schlüsseln auch die Berechnung der Einwegfunktion entsprechend lang und dadurch nicht mehr ohne größere Rechenleistung möglich. Für eine ausreichend schnelle Berechnung von Einwegfunktionen mit langen privaten Schlüsseln haben die eingebetteten Systeme meistens sowohl eine zu geringe Rechenleistung als auch zu wenig Speicherkapazität. Es besteht darum ein Bedarf an PKK-Verfahren, welche eine möglichst hohe Sicherheit bei möglichst geringer Schlüssellänge liefern - also letztendlich eine höhere Sicherheit pro privatem Schlüsselbit.
Einen Ansatz dazu liefert die Kryptographie mit elliptischen Kurven (engl. Elliptic Cur- ve Cryptography, ECC) [9 bis 11] und mit hyperelliptischen Kurven (engl. Hyper- Elliptic Curve Cryptography, HECC) [5]. Elliptische Kurven sind durch bestimmte Polynomgleichungen festgelegte Punktmengen über einem Grundkörper, für die man Punktaddition (Addition von zwei Punkten), eine Punktverdopplung sowie eine Multiplikation eines Punktes mit einer natürlichen Zahl definieren kann. Punktaddition und Punktverdopplung werden dabei aus mehreren Operationen des Grundkörpers zusammengesetzt. Die Multiplikation eines Punktes mit einer natürlichen Zahl besteht wiederum aus mehreren Punktadditionen und Punktverdopplungen. Man nutzt die Tatsache aus, dass die Punkte auf einer elliptischen Kurve eine endliche zyklische Gruppe bezüglich der Multiplikation eines Punktes mit einer natürlichen Zahl bilden und das DLOG-Problem daher auf die Punkte einer elliptischen Kurve übertragbar ist. Es wird in diesem Zusammenhang auch vom EC-DLOG-Problem gesprochen. Durch die zusätzliche Arithmetikebene scheitern sämtliche in der Literatur bekannten Verfahren zur Lösung des DLOG-Problems [4], wenn man sie auf das EC-DLOG-Problem anwendet, schon bei der Verwendung von relativ kurzen Schlüssellängen. Man kann somit also die verwendete Schlüssellänge bei gleicher Sicherheit reduzieren. Es gilt heute als allgemein anerkannt, dass ein ECC-Verfahren mit 160 Bit langen privaten Schlüsseln in etwa die gleiche Sicherheit liefert wie das RSA-Verfahren mit 1024 Bit langen privaten Schlüsseln. Zugunsten einer weiter verkürzten Schlüssellänge bei vergleichbarer Sicherheit verwendet man die neuerdings im Forschungsinteresse stehende Kryptographie auf hyperelliptischen Kurven [5].
Diese höhere Sicherheit pro Bit des privaten Schlüssels wird jedoch durch die komplizierten Verfahren zur Multiplikation eines Punktes mit einer natürlichen Zahl erkauft. Abhängig vom Grundkörper der Kurve und der Darstellung ihrer Punkte sind für eine solche Multiplikation zahlreiche Operationen im Grundkörper erforderlich, insbesondere auch aufwändige Invertierungen. Durch die geringe Rechenleistung eingebetteter Systeme ist man aus diesem Grund auf äußerst effiziente Realisierungen der Operationen im Grundkörper angewiesen. Diese sind im Grunde Operationen der langzahligen modularen Arithmetik, deren Softwarerealisierungen meistens zu aufwändig für eingebettete Systeme sind. Aus diesem Grund besteht in der Public Key Kryptographie für eingebettete Systeme ein Bedarf an effizienten Verfahren und Schaltungen für die langzahlige modulare Arithmetik [12,13].
Grundlagen der modularen Arithmetik
Die Grundaufgabe der modularen Arithmetik ist das Auffinden eines Rests R = RN[n] einer ganzen Zahl n e Z = {... , -2, -1, 0, 1 , 2,...} bezüglich einer anderen ganzen Zahl
N e Z\{0} ungleich 0 (dem Modulus), sodass R e N = {0, 1 , 2,...} diejenige natürliche
Zahl ist, welche nach Abzug des größtmöglichen ganzzahligen Vielfachen der Zahl N von n entsteht.
Drei einfache Beispiele veranschaulichen die Berechnung von Resten:
R7[23] = 2 = 3 * 7 + 2 ; R7[-23] = 5 = -4 • 7 + 5 und R-7[23] = 2 = (-3 ). (-7) + 2.
In der Literatur wird neben der hier verwendeten Operatordarstellung R = RN[n] des
Rests häufig auch die Schreibweise R = n mod N verwendet, welche im weiteren Ver- lauf dieses Dokumentes wegen möglicher Undeutlichkeiten in komplexeren Ausdrücken nicht mehr benutzt wird.
Nach dem Divisionssatz von Euklid gibt es für n e Z und N e Z \{0} genau ein Paar bestehend aus Quotient q e Z und Rest R e N, sodass n = q - N + R (1 ) mit |N| > R > 0 (2) gilt. Für einen festen Wert N e Z \{0) befinden sich alle Werte von R bezüglich n e Z im
Restklassen ring modulo N, der mit ZN = {0, 1 , 2 N-1} bezeichnet wird.
Aus dem Divisionssatz von Euklid kann man einige Eigenschaften von Resten ableiten. Die wichtigsten sind:
RN[-Π] = RN[N - RN[n]] (3)
R.N[n] = RN[n] (4)
RN[J-N] = 0 (5)
RN[n+j-N] = RN[n] (6)
RN[Π] = n, wenn N > n > 0 (7)
RN[RN[Π]] = RN[n], (8) wobei n, j e Z und N e Z \{0}.
Wie man sehen kann, ist die Suche nach Resten von negativen Zahlen und die Suche nach Resten bezüglich negativer Moduli mit den beiden Eigenschaften (3) und (4) auf den jeweils positiven Fall rückführbar. Es genügt also, wenn man sich auf die Betrachtung von natürlichen Zahlen beschränkt.
Die modulare Arithmetik lässt sich in analoger Weise auch auf die Rechnung mit Polynomen n(x) = ng-rx9'1 + ng-2«x9'2 + ... + n2»x2 + n^x1 + no«x°
N(X) = NG-1.χG-1 + NG-2-xG"2 + ... + N2.χ2 + N1*1 + N0 »
anwenden, wobei g, G e N \{0} die Längen X(n(x)) und X(N(X)) des jeweiligen Polynoms sind und g-1 , G-1 die jeweiligen Polynomgrade Grad(n(x)) und Grad(N(x)), wenn ng-i Φ 0 und NG-i Φ 0. Die Potenzierung xk mit einer natürlichen Zahl k e N entspricht der k-Mal wiederholten Multiplikation der freien Variablen x. Ein Polynom mit Koeffizienten, die alle den Wert Null haben, wird als Nullpolynom 0 bezeichnet. Die Koeffizienten n0, m, n2, ... , ng-1 sowie N0, Ni, N2, ... , NG-i der jeweiligen Polynome entstammen einem festgelegten kommutativen Ring - einer Menge auf der zwei arithmetische Operationen mit bestimmten Eigenschaften definiert sind (z.B. komplexe Zahlen C mit komplexer Addition und Multiplikation, reelle Zahlen IR mit reeller Addition und Multiplikation, rationale Zahlen O mit deren Addition und Multiplikation, ganze Zahlen Z mit deren Addition und Multiplikation usw.).
Als Ausgangspunkt werden hier Polynome über den Restklassenringen modulo N, d.h. über ZN, betrachtet.
Die Grundaufgabe der modularen Arithmetik mit Polynomen ist das Auffinden eines Restpolynoms R(x) eines Polynoms n(x) bezüglich eines anderen Polynoms N(x) Φ 0, wobei R(x) dasjenige Polynom ist, welches man erhält, indem man das größtmögliche polynomiale Vielfache des Moduluspolynoms N(x) von n(x) abzieht. Um zwischen skalaren Operationen mit Elementen aus C, IR, Q, oder Z, die wie üblich mit +, -, und • bezeichnet sind, und Operationen mit Polynomen zu unterscheiden, werden polynomiale Addition, Subtraktion und Multiplikation mit El, B und El bezeichnet. Bei der Addition und Subtraktion der Polynome werden die Überträge (im Gegensatz zu skala- rem + und -) nicht berücksichtigt. Es wird also nur komponentenweise in ZN ohne Ü- berträge gerechnet. Da eine polynomiale Multiplikation aus polynomialen Additionen zusammengesetzt ist, wird hier auch die Betrachtung der Überträge weggelassen. Nach dem Divisionssatz von Euklid für Polynome existiert für zwei Polynome n(x) und N(x) Φ 0 mit genau ein Paar bestehend aus Quotientenpolynom q(x) und Restpolynom R(x), sodass
n(x) = q(x)ΞN(x) Ξ R(x) (9)
Grad(N(x)) > Grad(R(x)) > 0 (10) gilt.
Für R(x) wird die Operatordarstellung R(x) = RN(X)[n(x)] benutzt. Für ein festes Moduluspolynom N(x) befinden sich alle Werte von R(x) bezüglich n(x) im Restklassenpolynomring modulo N(x) über ZN, der mit ZN[X]N(X) bezeichnet wird. Aus dem Divisionssatz von Euklid für Polynome kann man die Eigenschaften von Resten über Z N [x] N(x) ableiten. Die wichtigsten Eigenschaften sind:
RN[BII(X)] = RN(X)[N(X) B RNM[n(x)]] (11 )
RBN(X)[Π(X)] = RN(X)MX)] (12)
R N(x)0(x)HN(x)] = 0 (13) R NM[n(x)Ξj(x)ΞN(x)] = RN(x)[n(x)] (14)
R N(x)[n(x)] = n(x), wenn Grad(N(x)) > Grad(n(x)) ≥ 0 (15)
R N(X)[R N(x)[n(x)]] = RN(X)[II(X)], (16)
wobei n(x), j(x) e ZN[x]N(x) , N(x) e ZN[x]N(X)\{0} und B N(x) = 0 B N(x).
In der modularen Arithmetik ist es neben der Ermittlung von Resten ganzer Zahlen und Polynome (was in der Literatur häufig als modulare Reduktion bezeichnet wird) auch erforderlich, Reste von bestimmten arithmetischen Funktionen zu berechnen. Diese Funktionen sind bei ganzen Zahlen aus arithmetischen Grundoperationen wie +, -, • und Potenzierung mit einer natürlichen Zahl zusammengesetzt (z.B. RN.ni+n2], oder RN.ni«n2]; n1 t n2 ε Z). Bei Polynomen über ZN[X]N(X) entspricht dies den Operationen B, B, El und der Potenzierung mit einer natürlichen Zahl (z.B. RN(x)[ni(x)Bn2(x)], oder RN(x)[n(x)k]; n(x), n^x), n2(x) e ZN[X]NM, ke N ). Die Hauptregeln für die Berechnung der Reste von arithmetischen Funktionen, welche aus Operationen mit ganzen Zahlen zusammengesetzt sind, lauten:
RN [ni + n2] = RN [RN Cn1] + RN [n2]] (17a)
RN In1 • n2] = RN [RN [ni] • RN[II2]] (18a)
= RN[ni . RN[n2]] (18b)
= RN[RNI] TI2] (18c)
wobei n, ni, n2 e Z , k e N und N e Z \{0}.
Die Hauptregeln für die Berechnung der Reste von Funktionen, welche aus Operationen mit Polynomen über ZN[X]NM zusammengesetzt sind, lauten:
RN(X)[ΠI(X) Ξ n2(x)] = RNM[ni (x)] B RN(x)[n2(x)] (20a)
= RN(X)[RN(X)[ΠI(X)] B RN(x)[n2(x)]] (20b)
= RN(x)[ni(x) B RN(X)[Π2(X)]] (20C)
= RN(X)[RN(X)[ΠI(X)] B n2(x)] (2Od)
RN(X)[II1(X) E] n2(x)] = RN(X)[RN(X)[ΠI(X)] □ R NM[n2(x)]] (21a) = RN(X)[ΠI(X) Ξ RN(X)[Π2(X)]] (21 b)
= RN(X)[RN[ΠI(X)] □ n2(x)] (21c)
RN(X )[n(x)k] = RN(χ)[RN(x)[n(x)]k], (22a)
Rk[m]
Rx M[xm] = (22b)
wobei n(x), In1(X), n2(x) e ZN[X]N(X), k e N, m e N \{0} und N e Z \{0).
In der modularen Arithmetik sind die (nodulare Addition RN[a + b], a, b e Z und die (nodulare Subtraktion RN[a - b] über den ganzen Zahlen im Vergleich zur modularen Reduktion des größeren Operanden als nicht aufwändiger zu bewerten, da durch Addition und Subtraktion Zwischenergebnisse entstehen, welche die gleiche Größenordnung haben wie der größere Operand (die Größenordnungen beziehen sich auf absolute Werte). Zum Beispiel ist R103[38571 + 99] = R103[38670] nicht aufwändiger zu berechnen als RiO3[38571].
Wenn zusätzlich der Modulus und der größere Operand die gleiche Größenordnung haben, so ist die erforderliche modulare Addition (Subtraktion) trivial, da nur ein kleines Vielfaches des Modulus abzuziehen ist. Dies kann durch wiederholte Subtraktion des Modulus durchgeführt werden. Zum Beispiel RiO223[38571 + 99] = R10223[38670] = 38670 - 3»10223 = 8001. Besonders einfach ist die modulare Addition von zwei Repräsentanten a und b einer Restklasse modulo N (wo a < N und b < N gilt) die der Ungleichung 0 <a + b <2»(N - 1) genügen. Also ist höchstens eine einfache Subtraktion von N ausreichend für die notwendige modulare Reduktion.
Ist einer der Operanden jedoch wesentlich größer als der Modulus, handelt es sich dabei um ein nichttriviales Problem, da dann potenziell eine sehr große Anzahl von Subtraktionen durchzuführen wäre. In dem Beispiel R103[38571 + 99] = R103[38670] = 38670 - 375*103 = 45 wäre 375-mal 103 abzuziehen, was nicht praktikabel ist. Durch Teilen von 38670 durch den Modulus 103 bekommt man die Lösung schneller, jedoch für größere Zahlen immer noch wesentlich langsamer als bei der trivialen Reduktion. In der modularen Arithmetik über Polynomen haben die modulare Addition RN(x)[a(x)Ξb(x)] und die modulare Subtraktion RN(X)[a(x)Eb(x)], a(x), b(x) e Z[x], gleiche Ergebnisse wie die Grundoperationen El und B selbst, wenn Grad(a(x)) < Grad(N(x)) und Grad(b(x)) < Grad(N(x)). Wenn der längere Operand länger als das Moduluspoly- nom ist, dann sind die modulare Addition und Subtraktion genauso komplex wie die modulare Reduktion des längeren Operanden, da bei komponentenweiser Addition und Subtraktion in der Durchführung der Operationen El und B keine Überträge entstehen. Ist einer der Operanden jedoch wesentlich länger als der Modulus, handelt es sich dabei um ein nichttriviales Problem, da dann potenziell eine sehr große Anzahl von Subtraktionen durchzuführen wäre.
Im Gegensatz zur modularen Addition und Subtraktion entstehen bei der modularen Multiplikation (RN[a»b] bzw. RN(x)[a(x) Ξb(x)]) und Potenzierung (d.h. Potenzierung mit einer natürlichen Zahl (RN[ak] bzw. RN(χ)[a(x)k] mit ke N\{0, 1})) Zwischenergebnisse, welche ein Vielfaches der Länge der Operanden und des Modulus erreichen können. Zur Veranschaulichung betrachtet man hier die Abschätzungsrelation für die Multiplikation von zwei Repräsentanten a und b einer Restklasse modulo N (a < N und b < N). Dabei gilt die Ungleichung 0 < a»b < (N - 1)2 . Die Reduktion durch wiederholte Subtraktion des Modulus kommt in diesem Fall offensichtlich nicht mehr in Frage, da bis zu (N - 1) Subtraktionen notwendig wären. Zum Beispiel: R3i2[111*256] = R3i2[28416] = 28416 - 91*312 = 24. Das Vielfache 91 ist zu groß um das Ergebnis durch wiederholte Subtraktion des Modulus zu gewinnen.
Die Komplexität der erforderlichen modularen Reduktion bei der modularen Multiplikation und Potenzierung steigt bedeutend an und führt dazu, dass das getrennte Verfahren (Multiplikation bzw. Potenzierung mit einer natürlichen Zahl und nachträgliche Reduktion) zu aufwändig wird. Bei der Verwendung von großen Exponenten ist die getrennte modulare Potenzierung praktisch nicht mehr umsetzbar. Die modulare Potenzierung lässt sich jedoch auf die mehrfache modulare Multiplikation zurückführen. Eine vorteilhafte Berechnungsmethode ist bekannt unter der angelsächsischen Abkürzung S&M (Square-and-Multiply)-Verfahren [4]. Gemäß dieser Methode werden zunächst alle Radixpotenzen des Exponents berechnet, anschließend werden die zwischen diesen Radixpotenzen notwendigen Multiplikationen realisiert.
Die modulare Division lässt sich mit Hilfe des kleinen Satzes von Fermat auf die vorstehend definierten Operationen zurückführen. Er besagt, dass die (N-2)-te Potenz jedes Elements eines endlichen Körpers das modulare Inverse eben dieses Elements ist. Mit dieser Vorgehensweise kann die modulare Invertierung und somit auch die modulare Division auf die mehrfache Ausführung der modularen Multiplikation zurückgeführt werden.
Die modulare Potenzierung und die modulare Division (Invertierung) reduzieren sich also auf die mehrfache Durchführung der modularen Multiplikation. Das Hauptproblem der langzahligen modularen Multiplikation ist die modulare Reduktion, welche - bei getrennter Vorgehensweise (Reduktion nach Multiplikation) - einer allgemeinen modu- laren Reduktion von viel größeren Zahlen als dem Modulus entspricht und dadurch sehr aufwändig sein kann. Erst durch eine algorithmisch gleichzeitige Durchführung von Multiplikation und modularer Reduktion ergeben sich nutzbare Verfahren. Basierend auf dieser Grundidee existieren in der Literatur zahlreiche Lösungsstrategien [14 bis 27]. Diese reichen von mehr oder weniger exakten Methoden zur Schätzung des Quotienten q bis hin zu raffinierten mathematischen Transformationen, welche erst durch abschließende passende Rücktransformation ein korrektes Ergebnis für die modulare Reduktion bzw. Multiplikation liefern.
Eine Auswahl dieser Lösungsansätze, die den Stand der Technik wiedergibt, wird nachstehend diskutiert.
Bestehende Lösungsansätze
Wie vorstehend bereits erwähnt, ist eine für die Durchführung kryptografischer Verfahren kritische Operation die Berechnung der Größe Rufa6], die auf modulare Multiplikation zurückgeführt werden kann. Dabei können die einzelnen Variablen für nach heutigem Standard sichere Verschlüsselungen eine Länge von über 1000 Bit haben. Bisherige Lösungsansätze für eine schnelle Berechnung dieser Größe setzen vor allem bei einer Beschleunigung der als Verkettung von Multiplikationen realisierten Potenzierung an.
So gibt es Ansätze, das bereits vorstehend erwähnte S&M-Verfahren, das durch geschickte Zusammenfassung von Multiplikationen die Zahl der zur Berechnung einer hohen Potenz notwendigen Multiplikationen deutlich verringert, zu beschleunigen, beispielsweise durch seine Parallelisierung. Diese bringt allerdings einen hohen Hardware-Aufwand und insbesondere die Notwendigkeit mit sich, eine große Zahl von Registern zur Speicherung der Zwischenergebnisse vorzusehen. Ein anderer, in der DE69633253 T2 als Stand der Technik bekannter Ansatz zur Beschleunigung des S&M-Verfahrens besteht in der von Brickel et al. vorgeschlagenen BGKW-Methode, die die Multiplikationszahl weiter senkt, aber die Vorausberechnung zahlreicher Konstanten erzwingt und damit ebenfalls den Speicherplatzbedarf drastisch erhöht.
Eine alternative Methode, die der DE69633253 T2 zu entnehmen ist, besteht darin, durch geschickte Wahl der Exponenten die Zahl der notwendigen Multiplikationen zu reduzieren. Kriterium dabei ist das Hamming-Gewicht des betreffenden Exponenten. Nachteilig dabei ist allerdings, dass implizit der Raum, aus dem dieser Bestandteil des Schlüssels ausgewählt wird, reduziert wird, was die Anfälligkeit gegenüber einem „brüte force approach" erhöht.
Zusammenfassend haben diese Ansätze zur weiteren Beschleunigung des S&M- Verfahrens den Nachteil, dass sie, soweit sie nicht eine indirekte Schwächung des Kryptocodes darstellen, bei ihrer Umsetzung so hohe Anforderungen an den Speicherbedarf stellen, dass sie insbesondere im Hinblick auf die Verwendung in eingebetteten Systemen nur beschränkt tauglich sind.
Eine andere populäre Vorgehensweise zur Durchführung einer Kette von modularen Multiplikationen, die im Spezialfall gleicher Operanden die modulare Potenzierung darstellt, beruht auf der Anwendung des Montgomery-Verfahrens [17]. Bei diesem Verfahren wählt man eine zum Modulus N teilfremde Zahl r > N, d.h. ggT(r, N) = 1. Mit dem Erweiterten Euklidischen Algorithmus berechnet man dann die ganze Zahlen r"1 und N"1, sodass r» r"1+ N • N'1 = 1 und RN[r- r"1] = 1 ; Rr[ISN N"1] = 1 gilt. Das Montgomery-Produkt AWVb] von natürlichen Zahlen ni und n2 ist mit
AW[IVn2] lässt sich mit
Hilfe einer zusätzlichen Rücktransformation, die auch ein Montgomery-Produkt darstellt, folgendermaßen ausdrücken
RNDV n2] = AWAWiVn2J • RN[I"2]]. (23a)
Das Montgomery-Produkt selbst lässt sich wiederum folgendermaßen berechnen c ; wenn c<N AW1Vb] = c - N ; wenn c≥N, wobei c = (nτn2 + N»Rr[ni»n2»N'1])/r. (23b)
Wenn man die Zahl r als eine Zweierpotenz wählt, d.h. r = 2k > N; k e N, werden die Division durch r und die Reduktion Rr[ ] in (23b) sehr einfach (Verschiebung um k Stellen, bzw. Entfernung von k LS-Bits) und damit vemachlässigbar gegenüber die drei übrigen nichtmodularen Multiplikationen in (23b): n1«n2 = b, N»Rr[ ] und b»N'1, sowie eine nichtmodulare Addition. Mit dem Montgomery-Verfahren wird also eine modulare Multiplikation durch drei einfache (nichtmodulare) Multiplikationen und eine einfache Addition ersetzt.
In der Praxis kryptografischer Anwendungen mit einem k-Bit-Modulus N bietet sich r = 2k an, da als Modulus gängigerweise eine große Primzahl oder das Produkt zweier großer Primzahlen verwendet werden, also eine Größe, für die ggT(r, N) = 1. Der Vorteil der Methode ergibt sich hier daraus, dass die üblicherweise durchzuführende modulare Potenzierung RN[ae] unter Verwendung von Montgomery-Produkten mit einem Aufwand von nur log2e durchgeführt werden kann. Allerdings ist zum Schluss noch die Durchführung einer Rücktransformation notwendig. Ein weiterer Vorteil der Montgomery-Methode liegt darin, dass einige der nötigen Rechenoperationen vorab berechnet werden können (preprocessing). Dies ist z.B. in einem System zur Durchführung modularer Arithmetik, das in der US 5499299 offenbart wird, der Fall. Es basiert auf dem Montgomery-Verfahren, das aber in diesem Fall dadurch beschleunigt wird, dass vorab berechnete, in einer „Lookup-Table" tabellierte Werte verwendet werden. Damit wachsen aber die Speicheranforderungen an die Umsetzung beträchtlich, so dass der Einsatz in eingebetteten Systemen problematisch wird.
Ein verwandter Ansatz besteht darin, ein Look-ahead-Verfahren (Vorausschauverfahren) einzusetzen, wie es in der DE 3631992 C2 für die ZN Arithmetik und in der DE 10107376 A1 für Arithmetik auf GF(2n) offenbart ist.
Noch eine weitere Möglichkeit zur Beschleunigung des Montgomery-Verfahrens, die auf geschickter Bit-Manipulation beruht, ist der DE 69818798 T2 zu entnehmen. Ganz allgemein haben die auf dem Montgomery-Verfahren basierenden Systeme den Nachteil, dass sie nur für teilerfremde Zahlen r und N anwendbar sind. Darüber hinaus stellt sich auch hier in den meisten Fällen das Problem, dass eine Beschleunigung der Berechnung insbesondere mit erhöhtem Speicherbedarf erkauft wird. Allgemein hat es sich als vorteilhaft erwiesen, zur schnellen Durchführung modularer Rechenoperationen und insbesondere der modularen Multiplikation auf spezielle Hardwarelösungen (Schaltungen) und nicht nur auf eine Softwareimplementierung zurückzugreifen. Eine solche ideale Schaltung sollte die folgenden Eigenschaften besitzen:
• Komplett - alle fünf modularen Grundoperationen Addition, Subtraktion, Multiplikation, Inversion (Teilen) und Potenzierung mit einer natürlichen Zahl sollen sowohl mit ganzen Zahlen als auch mit Polynomen möglichst einfach berechnet werden
• PKK-universell - einfach anwendbar sowohl für RSA, ECC als auch HECC (soll für Restklassenringe zm sowie Primkörper FP und Erweiterungskörper Fpm , insbesondere binäre Erweiterungskörper F2m geeignet sein)
• Skalierbar- soll nicht nur auf bestimmte Operandenlänge und bestimmte Kurvenparameter beschränkt sein • Konform - möglichst alle bekannten Kryptostandards sollen unterstützt werden
• IC-synthetisierbar- implementierbar ausschließlich unter Verwendung standardisierter Bauelemente der herkömmlichen hochintegrierten Schaltkreise, die im Semicustom-Design synthetisiert werden
• Unkompliziert - jede modulare Grundoperation soll in möglichst geringer Anzahl von Taktzyklen durchgeführt werden
• Hochgetaktet - hohe Taktraten sind einsetzbar
• Platzsparend - in einer im IC eingebetteten Schaltung
• Energieeffizient - geringer Stromverbrauch der eingebetteten Schaltung
• Implementierungsflexibel - soll als eigenständige Schaltung, als Schaltung, die durch Mikrocontroller gesteuert ist, oder als reines Software-Modul für den Mik- rocontroller eingesetzt werden
• Implementierungsuniversell - größere unspezifische Teile der Schaltung sollten auch für andere häufig verwendete Kryptoalgorithmen benutzt werden
• Angriffsresistent - Resistenz gegen Implementierungs- und Hardware-Attacken [29], insbesondere gegen alle bekannten Seitenkanalangriffe [28 bis 34], die in den letzten Jahren entdeckt wurden.
Beispielsweise ist der bereits vorstehend erwähnten DE 3631992 auch ein Krypto- Prozessor zu entnehmen, der für die Durchführung des RSA-Verfahrens optimiert - also gerade nicht PKK-universell ist. Insbesondere wird bei diesem Prozessor die modulare Multiplikation durch eine Folge von Additionen umgesetzt. Einen anderen Prozessor, der eine hardwarebasierte Durchführung einer Montgome- ry-Multiplikation in einem speziell dafür ausgelegten Coprozessor erlaubt, ist der US5961578 zu entnehmen.
Ein anderer modularer Multiplizierschaltkreis und ein Kryptosystem sind aus der DE 10 2005 028 518 A1 bekannt. Dieser Schaltkreis zeichnet sich dadurch aus, dass ein in ihm enthaltener Montgomery-Multiplizierer mit einer Bitlänge arbeitet, die der durchzuführenden Multiplikation angepasst ist. Dies trägt zu einer Erhöhung der Sicherheit und zu einer verkürzten Berechnungszeit bei.
Beschreibung der Erfindung
Der Erfindung liegt folglich die Aufgabe zugrunde, ein Verfahren zur modularen Arithmetik zu schaffen, das in optimierter Weise in einer Vorrichtung in Form einer integrierten Schaltung tatsächlich umgesetzt werden kann. Diese Aufgabe wird gelöst durch das Verfahren zur modularen Multiplikation gemäß Anspruch 1 bzw. die Vorrichtung zur modularen Multiplikation gemäß Anspruch 2. Der Erfindung liegt die Erkenntnis zugrunde, dass das Produkt a»b, das im Allgemeinen viel größer als der Modulus N ist, noch während seiner Berechnung schrittweise (TC-MaI) durch einfaches Teilen durch die Radix p (Verschiebung um eine Digit-Stelle) stark vermindert wird. Damit will man erreichen, dass das Ergebnis {aΛήlp* möglichst nahe an N herankommt, sodass eine triviale Reduktion ermöglicht wird. Ist der Produktbruch (a»b)/p^eine ganze Zahl, dann kann man durch eine triviale Reduktion, bei der gelegentlich ein kleines Vielfaches λ≥ O des Modulus abzuziehen ist, und nach einer gleichartigen Rücktransformation RN[{RN[a*b] / p^φ2^] das modulare Produkt
RN[a«b] unverzüglich erhalten. Da der Produktbruch (a'bj/p^ leider nur in Ausnahmefällen eine ganze Zahl ist, muss man verhindern, dass die Zwischenergebnisse in der Berechnung von (a^bj/p^als echt rationale Zahlen vorkommen, für welche die Regeln der modularen Arithmetik nicht gültig sind. Deshalb werden die Zwischenergebnisse in der Berechnung von (a^byp^ ständig ergänzt, sodass am Ende ein ergänzter Produkt- bruch εN(a»b/p^) als ganze Zahl resultiert. Bei dieser Ergänzung muss man jedoch noch berücksichtigen, dass das Ergebnis in einer speziellen Form S^a^b/p^ = (a-b+j'Nyp^ e F**; j e N vorliegt. Nur dann ist es möglich durch eine identische Rücktransformation und eine nachträgliche triviale Reduktion das korrekte Ergebnis RN[a»b] zu erhalten. Die Darstellung von (a^bj/p^in Form eines endlichen Kettenbruchs ermöglicht, die Bedingungen und die Ergänzungsregeln, die zu der obigen speziellen Form führen, zu erkennen und damit die so eingeführte Kettenbruchtransformation in der Berechnung der modularen Multiplikation zu verwenden. Die eingeführte Kettenbruchtransformation bringt im Vergleich zu anderen Transformationen, wie z. B. der Montgomery-Transformation oder der schnellen Fourier- Transformation einige Vorteile, welche bei der Realisierung in integrierten Schaltungen ausgenutzt werden können. Sie unterliegt dabei nicht den Einschränkungen, welche beispielsweise für die Montgomery-Transformation vorausgesetzt werden, die nur bezüglich Zahlen r, die zum Modulus N teilerfremd sind, durchgeführt werden kann. Im Vergleich zur Fourier-Transformation und zu den direkten Methoden für modulare Multiplikation (die keine Rücktransformation benötigen) kann die Kettenbruchtransforma- tion bei den in der PKK üblichen Berechnungen und Zahlenlängen mit geringerem Rechenaufwand eingesetzt werden. Außerdem lässt sich die eingeführte Kettenbruch- transformation mit einer Schaltung sowohl für ganze Zahlen als auch für Polynome berechnen. Somit ist die wesentliche Forderung nach einer kompletten Schaltung erfüllt.
In der folgenden detaillierten Beschreibung der Erfindung werden die Symbole für natürliche und ganze Zahlen fett gekennzeichnet, während einzelne Digits (Ziffern) bezüglich einer Radix p (Zahlenbasis) im normalen Schriftbild gesetzt werden. Eine natürliche Zahl a e N (symbolisch dargestellt) kann man in gewichteter Form a = aκ-,«pκ-1+ aκ-2'PK2+ ... + a2«p2+ a,«p1+ a0 , oder kürzer, in Radixdarstellung a — (3κ-i 3κ-2 . .. O2 3i QOJp
quantitativ angeben, wobei ak e {0, 1, ... ,p-l}; k = 0,... ,K-1 die zugehörigen Digits bezüglich der Radix p sind. Konkret für p = 10 ist z.B. 321 darstellbar als 3 « 102+2 * 101+1 « 10°. Bei ganzen Zahlen ist in beiden Angabeformen mit einem Vorzeichen ( + oder -) gekennzeichnet, ob a > 0 oder a < 0 (fehlendes Vorzeichen wird hier, wie üblich, + bedeuten). Die Zahlenlänge von a (in Digits) ist mit £p(a) bezeichnet. Wenn aκ., Φ 0 und a„ = 0 für alle k > K -1 , dann £p(a) = K e N\{0}.
Ausführungsformen der Erfindung sind in den Zeichnungen dargestellt und werden nachfolgend beschrieben. Die Zeichnungen zeigen in beispielhafter Weise:
Figur 1. a) Produktkettenbruch (a»b)/p*" für K = K dargestellt mittels Digits der ganzen Zahl a der Länge £p(a) = K Digits bezüglich der Radix p; b) Erzeugung eines Produktkettenbruchs durch die Zerlegung der ganzen Zahl a (welche in gewichteter Form angegeben ist).
Figur 2. a) Ergänzung der einzelnen Zähler in (24). Das Zeichen i | n bedeutet, dass die ganze Zahl i die ganze Zahl n teilt, während i X n bedeutet, dass i die ganze Zahl n nicht teilt; b) Auswertung des ergänzten Kettenbruchs βN(a*b/p'7f) in Form einer
Rekursion (25) mit der Ergänzungsfunktion (26); c) Ergänzter Produktkettenbruch εN(a«b/p<7C) als Kettenbruch (27) dargestellt. Figur 3. Berechnung der Kettenbruchtransformation. a) Ein Beispiel mit p = 10; b) Produktkettenbruch und ergänzter Produktkettenbruch; c) Berechnung des ergänzten Produktkettenbruchs und der Kettenbruchtransformation als Schulalgorithmus dargestellt; d) Überprüfung nach (29) und (30).
Figur 4. Berechnung der Kettenbruchrücktransformation. a) Beispiel aus Fig. 3 b) Direkte Rücktransformation c) Rücktransformation mit der Kettenbruchrücktransformation d) Kettenbruchrücktransformation als Schulalgorithmus dargestellt; e) Überprüfung nach (29) und (30).
Figur 5. Berechnung der binären Kettenbruchtransformation. a) Gleiches Beispiel wie in Fig. 3, hier mit p = 2; b) Kettenbruchtransformation als Schulalgorithmus dargestellt; c) Direkte Rücktransformation mitp = 10 (nur für die Überprüfung des Ergebnisses). Figur 6. Berechnung der modularen Multiplikation mit der Kettenbruchtransformation. a) Ein Beispiel für Polynome aus Z2[x]P(X); b) Produktkettenbruch und ergänzter Produktkettenbruch; c) Berechnung des ergänzten Produktkettenbruchs und der Kettenbruchtransformation als Schulalgorithmus dargestellt; d) Direkte Rücktransformation (nur für die Überprüfung des Ergebnisses).
Figur 7. Vorgehensweise für die Berechnung von Operationsketten in modularer A- rithmetik ohne und mit Übergang in den Raum der Transformierten. Figur 8. Schaltung für die Berechnung des Zählers Z0 1 im ergänzten Produktkettenbruch (27). Figur 9. a) Multiplizierer für zwei 1-Digit-Eingänge (aι)p und (bj)p. b) Addierer für einen 1-Digit-Eingang (E)p und drei 2-Digit-Eingänge für (pψo^ und (SiS0)p aus zwei Multiplizierern, sowie für die Überträge (C0 C1^ aus dem vorhergehenden Addierer. Der Ausgang des Addierers besteht aus dem Ausgangsdigit O, sowie den Überträgen θi und O2 für den nächsten Addierer. c) Digit-Struktur der Addition bei größtmöglichen Eingangswerten mit Beispielen fürp = 10 und p = 2.
Figur 10. Schaltung für die Berechnung des Zählers Z1 1 im ergänzten Produktkettenbruch (27).
Figur 11. Vorgehensweise für die Berechnung eines beliebigen Zählers Zm' im ergänzten Produktkettenbruch (27).
Figur 12. Allgemeine parallele Schaltung für die Berechnung des ergänzten Produktkettenbruchs εN(a«b/p*r) oder £NM(a(x)»b(x)/**").
Figur 13. Addierer bestehend aus zwei verketteten Volladdierern mit einem Steuerungseingang für die Auswahl der Additionsform: mit einer 1 am Steuerungseingang G/P werden ganze Zahlen für p = 2 aufaddiert (mit Rücksicht auf die Überträge), mit einer O am Steuerungseingang G/P werden binäre Polynome über Z2[x]N(X) aufaddiert (ohne Rücksicht auf die Überträge), was einem XOR Gatter mit drei Eingängen entspricht.
Figur 14. Binäre parallele Schaltung für die Berechnung des ergänzten Produktkettenbruchs £N(a»b/2*") oder £N(X)(a(x)»b(x)/x;ir) mit ungeradem Modulus (N0=I). Figur 15. Binäre parallele Schaltung für die Berechnung des ergänzten Produktkettenbruchs εN(x)(a(x)»b(x)/xir) mit ungeradem Modulus (N0=I). Figur 16. Allgemeine seriell-parallele Schaltung für die Berechnung des ergänzten Produktkettenbruchs oder £N(x)(a(x)»b(x)/x:ir). Die Digits des Operanden a sind in der Anfangsposition angegeben.
Figur 17. Binäre seriell-parallele Schaltung für die Berechnung des ergänzten Produktkettenbruchs ßN(a»b/2sr) oder £N(x)(a(x)»b(x)/xir) mit ungeradem Modulus (N0=I).
Die Bits des Operanden a sind in der Anfangsposition angegeben. Figur 18. Binäre seriell-parallele Schaltung für die Berechnung des ergänzten Produktkettenbruchs £N(x)(a(x)φb(x)/x5r) (nur für Polynome wenn N0=I). Die Bits des Operanden a sind in der Anfangsposition angegeben. Figur 19. Binäre seriell-parallele Schaltung für die Berechnung des ergänzten Pro- duktkettenbruchs &H{^bl29C) oder £N(x)(a(x)»b(x)/xir) mit ungeradem Modulus (N0=I) aufgeteilt in Pipeline-Stufen.
Figur 20. Strukturelle Darstellungen der binären seriell-parallelen Schaltung für die Berechnung des ergänzten Produktkettenbruchs, a) Struktur basierend auf Registern, b) Struktur basierend auf MAT-Zellen.
Figur 21. Eine Pipeline-Stufe der binären seriell-parallelen Schaltung für die Berechnung des ergänzten Produktkettenbruchs.
Figur 22. Letzte Pipeline-Stufe der binären seriell-parallelen Schaltung für die Berechnung des ergänzten Produktkettenbruchs mit einer Verlängerung der arithmetischen Einheit (VAE).
Figur 23. Verbindung der Steuerungseinheit mit der ersten Pipeline-Stufe sowie eine MAT-ZeIIe der binären seriell-parallelen Schaltung für die Berechnung des ergänzten Produktkettenbruchs.
Figur 24. Prinzip der Taktverteilung in der binären seriell-parallelen Schaltung für die Berechnung des ergänzten Produktkettenbruchs. Figur 25. Eine Pipeline-Stufe der binären seriell-parallelen Schaltung mit Multiplexem für die zusätzliche Berechnung der modularen Addition und Subtraktion. Figur 26. Letzte Pipeline-Stufe der binären seriell-parallelen Schaltung mit Multiplexem und Erweiterung des Registers Reg b für die zusätzliche Berechnung der modularen Addition und Subtraktion.
Figur 27. Die Register-Struktur der binären seriell-parallelen Schaltung für die Berechnung des ergänzten Produktkettenbruchs erweitert für die Berechnung der modularen Addition und Subtraktion.
Figur 28. Binäre serielle Schaltung für die Berechnung des ergänzten Produktkettenbruchs eN(a»b/2ir) oder 8N(x)(a(x)«b(x)/x:ir) mit ungeradem Modulus (N0=I).
Mit Hilfe der Figuren 1 bis 7 wird das erfindungsgemäße Verfahren beispielhaft erläutert.
Unter Bezugnahme auf Figur 1a wird zunächst exemplarisch der erste Schritt der erfindungsgemäßen Vorgehensweise erläutert. Ausgangspunkt des Verfahrens ist die Überführung des Produkts a»b von zwei ganzen Zahlen a, b ε Z in einen speziellen Produktbruch (a»b)/t mit eine Radixpotenz t = p*; Tf e N\{0}, wie er im eingekästelten
Teil der Figur 1a Wr TC= K dargestellt ist. Zweckmäßigerweise zerlegt man dazu einen der Operanden, z.B. a mit £p(a) = K, in eine bzgl. einer Radix p gewichtete Form, wie das in der ersten Zeile der Figur 1a angegeben ist.
Anhand der Figur 1 b lässt sich Schritt für Schritt nachvollziehen, wie man aus dieser Zerlegung die in der Figur 1a (für 1K= K) im größten Kasten dargestellte, mit dem Formelzeichen (24) versehene Darstellung, d.h. einen Produktkettenbruch, erhält. Dabei werden zunächst Exponenten der Radixpotenz t = p*; Tf e N\{0) und der mit der
Radix p gewichteten Form des Operanden a zusammengefasst, wie in den ersten drei Zeilen der Figur 1b dargestellt. Anschließend wird iterativ im m-ten Schritt jeweils p"1 aus den Gliedern der Terme ausgeklammert, wobei der Kettenbruch, wenn man am Ende dieser Iteration bei Digit a0 angekommen ist, in einer algebraischen Schreibweise ohne Verwendung von Bruchstrichen dargestellt wird.
Figur 2 veranschaulicht den nächsten Schritt des erfindungsgemäßen Verfahrens. Während sich beliebige Zahlen als Produktkettenbruch darstellen lassen, stellt sich hier das Problem, dass das Ergebnis eines Produktkettenbruchs eine echt rationale Zahl (aty/p* e Q sein kann, für die die modulare Arithmetik nicht definiert ist. Daher ist es nötig, die einzelnen Zähler Z0, Z1,..., Zκ-i in den Stufen des Produktkettenbruchs (24) so zu ergänzten Zählern Z0', Z1', Z2',... , Zκ-i' zu ergänzen, dass so ein ergänzter Produktkettenbruch, bezeichnet mit SN(a*b/p*), stets eine ganze Zahl ist.
Dies ist mit Hilfe eines einfachen Rekursionsschemas, das in den Figuren 2a bis 2c für 'K = K verdeutlicht wiiu, müyiich. Als Stäftwβrt ist die Ergänzung dss zürn klcinstsn signifikanten Digit a0 gehörenden Zählers Z0 = ao»b zu berechnen. Dazu ist festzustellen, ob die Radix p den Zähler Z0 teilt. Die formelmäßige Darstellung der vom Ergebnis dieser Auswertung abhängigen Konsequenzen ist in der oberen Hälfte der Figur 2a gezeigt: Ist dies der Fall, gilt Z0' = Z0. Andernfalls muss ein Ergänzungsterm e0 = io»N/v zu Z0 mit dem Modulus N hinzuaddiert werden, um Z0' zu erhalten. In analoger Weise ist die Ergänzung des m-ten Zählers zu berechnen, wobei zu beachten ist, dass jeweils der Übertrag aus dem (m-1)-ten Zähler zu berücksichtigen ist. Für die formelmäßige Darstellung kann hier auf die untere Hälfte der Figur 2a Bezug genommen werden. Die Zahl ime N wird m-ter Ergänzungsfaktor und die Zahl v=pτe N\{0}; Te N Modulusteiler genannt .
Verallgemeinert lässt sich also unter Voraussetzung eines geeigneten „ZV eine rekursive Vorgehensweise definieren. Mit Hilfe der Ergänzungsfunktion Con(im»N/v) in Figur 2b ist die Auswertung des ergänzten Produktkettenbruchs S^'b/p*) in Form einer einzelnen Rekursion dargestellt, welche sich wiederum selbst als ergänzter Produktkettenbruch (27) gemäß Figur 2c darstellen lässt. Die einzelnen Zähler Z0', Z1', Z2',... ,
Zκ-1' für K = K in den Stufen des ergänzten Produktkettenbruchs βN(a«b/p%) sind so ergänzt, dass sie durch p teilbar sind und somit Sufob/p*) e Z stets eine ganze Zahl ist.
Die einzelnen Ergänzungsfaktoren werden nach der folgende Verfahrensweise bestimmt.
Der m-te noch nicht ergänzte Zähler Zm*, der Modulus N und der durch den Modulusteiler dividierte Wert N' werden zunächst in ihre Digit-Darstellung gebracht, wobei die Länge der jeweiligen Darstellungen bezüglich der Basis p durch £p{ Zm*) = ζ{rr\) , XP(N) = μ und />(N') =£p(Wv) = μ -T; v=pτe N\{0} gegeben ist. Damit ergibt sich für die Radix-Angaben von Zm* = Zm-1'/p + am»b, N und N' in (25) und (26): Zm,o )p ,
N = (NU NU ... N1 N0)P ; N' = N/v = (NU1 NW, ... NT , NT.,... N1 N.)p.
Man sollte beachten, dass N' für T > 0 (v>l) eine dezimale Zahl ist (siehe die Komma zwischen Nlτ und Nτ.,).
Falls das LSD (engl.: Least Significant Digit) zm,„* von Zm* gleich Null ist, dann teilt p die Zahl Zm* (bezeichnet mitp | Zm*) mit dem Ergebnis
Zm Ip ~ Zm = [Zmζimy, Zm αmy2 ... Zn, 1 )p £ 2, d.h. Zm* wird um eine Digit-Stelle in Richtung des LSD verschoben um Zn,' (als eine ganze Zahl) zu erhalten. Falls zm0*≠ 0, dann p teilt Zm* nicht (bezeichnet mit p-rZm* ; Zm*/p £ Z) und Zm* muss ergänzt werden. Der Ergänzungsterm em = im»N/v = im»N' ist im Allgemeinen eine dezimale Zahl (für T > 0 (v >l) ) mit einer Radix-Angabe em Xp(em) = e(m); μ -T < e(m) <μ -T+1.
Der m-te Ergänzungsfaktor im und der Modulusteiler v = pτ sollen so gewählt werden, dass nach der Ergänzung
Zm' = Zm* + im.N/v = Zm* + im.N' = Zm* + em
= (zmΛm).,* zm αm>2* ... zm 1 * zm0 *)P+ im #(Np-τ-1 N„_τ_2...Nτ , NT-,... N1 N0)P
= (Z1^/ Zn^2 1... zm t' 0)p; £p{ Zm') = 0(m) (28) mindestens das LSD in Zm' gleich Null wird (zm0' = 0). Mit dieser Ergänzung teilt p Zm' und somit lässt sich durch Verschiebung von Zm' um eine Digit-Stelle in Richtung des LSD das Ergebnis • • ■ Zm 1 Jp als eine ganze Zahl erhalten und zum nächsten Schritt der Rekursion (25) übergehen. Zwei einfache Beispiele fürp = 10 veranschaulichen die Bestimmung der Ergänzungsfaktoren wenn v = l; (T = 0) und wenn v = p; (T = 1).
Beispiel 1. Seien v = 1, N' = N = (31)l0; C£>(N) = μ = 2) und Zm* = (358)10; (Xp(Zm*) = ζ{m) = 3). Da p-rZm* (10+358), muss der noch nicht ergänzte Zähler Zm* durch Aufaddieren des Ergänzungsterms im«N = im»N' = em ergänzt werden. Um nach der Ergänzung und nach dem Teilen durch p eine ganze Zahl zu erhalten, sollte man im = 2 wählen, da 2.31 = 62 und 62 + 358 = 420 = Zm', sodass Z1nVp= 42. Beispiel 2. Seien N = (35)10; und Zm* = (358)10. In diesem Fall soll man die dezimale
Zahl N' = N/p = (3,5)10 (v =p = 10) nehmen, da für v = l der Ergänzungsterm im«N nur 0 oder 5 als mögliche LSDs hat und man damit nicht alle möglichen Werte von Zm* ergänzen kann. Weil p-rZm* (10-1-358), muss der noch nicht ergänzte Zähler Zm* durch Aufaddieren des Ergänzungsterms im»N' = em ergänzt werden. Um nach Teilen durch P = 10 eine ganze Zahl zu erhalten, soll man im = 12 wählen, da 12*3,5 = 42 und 42 +
358 = 400 = Zm', sodass Z1nVp = 40.
Neben der Bedingung (28) muss noch eine weitere Bedingung (30) erfüllt sein, um den ergänzten Pfüuukikθtt6fιbrüch ON(Ö*U/P*) für die Sθrθchπ'uπg der modulcrcn Multiplikation nutzen zu können.
Seien m0, mi,... ,mL (K-1 > mL > mL-i > ... >rrii > m0 > 0; K-1 > L > 0) die Indizes derjenigen Zähler in (27), in welchen die Ergänzungsfunktion (26) Con(im»N/v) Werte ungleich Null annimmt und seien im0, im,,... , imL die entsprechenden Ergänzungsfaktoren. Dann lässt sich der ergänzte Produktkettenbruch (27) als eine Summe aus dem ursprünglichen Produktkettenbruch (a»b)/p*" und den umskalierten Ergänzungstermen umschreiben
εN(a-b aa-bb jJ'1 NN
Wenn der Modulusteiler v die gebildete natürliche Zahl j1 teilt
V| j' J j' ... + pmL-imL , (30) und man somit nach der Division j'/v = j auch eine natürliche Zahl j e Rl erhält, kann man den ergänzten Produktkettenbruch (27) bzw. (29) in folgender Form darstellen:
£N(a'b/p*) = (a-b + J-NVp* e N; j e N . (31 )
Das ist die ausreichende Bedingung um den ergänzten Produktkettenbruch für die Berechnung der modularen Multiplikation nutzen zu können. Mit einem Wert für K ≥ K und nach Teilen von a»b + j«N e Z durch p* wird bezüglich des Produkts a»b das Ergebnis (31) wesentlich verringert und der ergänzte Produktkettenbruch βN(a»b/p*) wird nur noch ein relativ kleines Vielfaches λdes Modulus N beinhalten, oder wird sogar kleiner als N, d.h. λ= 0. Wenn λ > 0 reicht eine triviale Reduktion durch λ- faches Abziehen des Modulus N vom ergänzten Produktkettenbruch Sufob/p*) aus, sodass
RNN(a-b/p*)] = εN(a»b/p*) - λ • N (32) gilt, wobei λ e N mit einer relativ kleinen oberen Schranke Λ e N existiert (λ ≤Λ). Diese spezielle Form des Rests vom ergänzten Produktkettenbruch (32) wird, sofern j e R! (d.h. (30)) gilt, die Kettenbruchtransformation genannt. Sie wird allgemein mit TCN.* [a.b] = RNN(a.b/p*)] = (a-b + j-N)/p* - λ • N (33)
bezeichnet. Die Transformation TCN,*: [a-b] ist eine Funktion von a und b, der Radix p, dem Modulus N, dem Modulusteiler v sowie den Ergänzungsfaktoren {im | m = 1 , ... , 7C-1}. Sie ermöglicht die Berechnung des modularen Produkts RN[a-b] durch die zusätzliche Berechnung eines anderen modularen Produkts
RN[a.b] = RN[ct], oder nach der Eigenschaft (18b) = RN[TCN,* [a-b] • RNIP*]]. (34b) wobei c = TCN,*- [a-b] die Kettenbruchtransformation und X = p* die Radixpotenz (oder der Rest RN[p*]) ist. Die Relation in (34a) lässt sich, durch Einsetzen von (33) in (34a), einfach beweisen.
Diese direkte Rücktransformation (34) hat nicht die gleiche Form wie die Kettenbruchtransformation (33) und müsste mit einem anderen Algorithmus berechnet werden, was ein Nachteil für den Schaltungsaufbau wäre.
Dennoch ermöglicht es eine identische Rücktransformation (wie die Kettenbruchtransformation nur mit anderen Argumenten), die Berechnung des modularen Produkts auszuführen. Dabei wird die Kettenbruchtransformation 7CN1K-[OCI] berechnet, wobei c = TCN,* [a»b] und t2 =p2*", sodass
7CN,*[o t2] = RN[a-b] = 7CN,*[7CN.*[a.b] .p2*] (35a) gillt.
Die Formel (35a) lässt sich in eine äquivalente Form umschreiben
RN[a.b] = RN[TCN,* [a-b] -p*] = RN[TCN,* [a-b] -P2V] = RN[CP25V]. (35b)
Da c eine ganze Zahl ist, ist auch der Produktbruch c eine ganze Zahl und damit automatisch ein ergänzter Produktbruch c -P2V = SN(OP27V) = SN(C« tV) (35C) mit j = O in (31). Durch Einsetzen von (35c) in (35b) und nach der Definition der Kettenbruchtransformation (33) RN[a.b] = = RN[SN(C tV). = TCN,* [o t2] (35d) lässt sich die Gültigkeit von (35a) einfach beweisen.
Da die Kettenbruchtransformation einen modularen Rest darstellt, nach der Eigenschaft (18b) und (35d) gilt weiter:
RN[a»bj = 'Λ" N,κ-[c»RN[rjj, (36a) oder kurz geschrieben
RN[a.b] = ft^tcd] = TCN,* [d-c], (36b) wobei c = <7CN,,f[a»b] und d = R^t2] = RN[p2*]. Die Kettenbruchtransformation (36) wird mit Kettenbruchrücktransformation bezeichnet.
Somit folgt, dass das Transformationspaar und TCN1K-[OCI] das modulare
Produkt RN[a»b] mit (36b) ergibt, wenn der Radixexponent K. e N\{0} in der Transformation Knx [a»b]=c und in der Rücktransformation %κ% [c«d] den gleichen Wert TC > K hat. Am Anfang dieses Abschnitts in (24) wurde TC = K angenommen, wobei K gleich der Länge des zerlegten Operanden ist (der in gewichteter Form angegeben wird). Wenn der zerlegte Operand in der Kettenbruchrücktransformation länger als K ist (TC < K), liefert diese Annahme ein falsches Ergebnis. Zum Beispiel gilt nach der früher verwendeten Schreibweise (dass immer der erste Operand im Produkt in gewichteter Form angegeben ist) die Kommutativität in (35a) nicht, d.h. TCN.KJP2*» TCN,*- [a«b]] wird im
Allgemeinen nicht RN[a»b] liefern (weil £p(p2<κ) = K = 27C > K).
Um diese unpraktische Abhängigkeit von Operandenlängen zu vermeiden, kann man für den Radixexponent TC einen ausreichend großen Wert 7C- K festlegen, sodass
TC > £p(z) (37)
gilt, wobei £p{z) die Länge des längeren zerlegten Operanden z in einem Transformationspaar ist (z ist der längere zwischen a und c). Wenn
Xp{z) kleiner als TC ist, dann werden die zerlegten Operanden nach ihrem MSD
(engl.: Most Significant Digit) mit Nullen bis zur ^T-ten Digit-Stelle ergänzt. So wird ein ergänzter Produktkettenbruch (29) immer in genau TC Rekursionsschritten durchge¬
führt.
Wenn die Länge des unzerlegten Operanden in einem ergänzten Produktkettenbruch größer als die Länge des Modulus />(N) ist, kann die Schranke Λfür λin (32) zu groß werden und damit die triviale Reduktion zu aufwändig. Das kann in (35a) vorkommen.
Wegen der Eigenschaft (2) ist das in (36a) ausgeschlossen, sodass für praktische
Einsätze nur die Kettenbruchrücktransformation (36a) benutzt wird.
Wenn allerdings die Beschränkungen a, b < N gelten und v = 1 , kann man den Wert Λ
= 1 für die Schranke für λ in (32) garantieren. Der Wert 1 dieser Schranke bedeutet, dass es genügt, den Modulus N höchstens einmal vom ergänzten Produktkettenbruch in (32) abzuziehen, um dessen Rest bezüglich N zu erhalten.
Die Auswahl des Modulusteilers v und die Berechnung der Ergänzungsfaktoren {im | m = 1 ,... , 7C-Vj ist vom Modulus N und von der Radix p abhängig. Für manche Parameterkombinationen p und N ist diese Berechnung einfach, für andere hingegen etwas komplexer und bei einigen sogar unmöglich.
Sehr einfach ist sie beispielsweise für p = 2 und N ungerade. Es gilt dann im e {0, 1} mit v= l. Ein Ergänzungsfaktor im ist gleich 1 , falls im vorherigen Rekursionsschritt eine ungerade Zahl aufgetreten ist, wie das im Beispiel aus der Figur 5 gezeigt ist. Der soeben beschriebene binäre Fall deckt bereits die meisten Moduli ab, wie sie in der asymmetrischen Kryptographie verwendet werden - nämlich die ungeraden Moduli.
Auch für einige gerade Moduli fürp = 2 ist das modulare Produkt mit der vorgestellten Methode einfach zu berechnen. Das ist der Fall wenn ein gerader Modulus in der Binärdarstellung mit nur einer Null endet (d.h. N0= 0 und das vorletzte Gewicht 21 ist mit N, =1 multipliziert). Hier wird v =p = 2 gewählt und die Berechnung der Ergänzungsfaktoren ist gleich wie bei N ungerade, falls die Operanden a oder b (oder beide) gerade sind. Wenn dagegen a und b ungerade sind, kann man aus der Bedingungen (29) und (30) einfach feststellen, dass die Ergänzung nach (31 ) nicht möglich ist. Man kann in solchen Fällen den Operanden a durch a' = a +1 ersetzen (a' wird dann gerade und somit RN[a'»b] einfach zu berechnen). Eine nachträgliche Korrektur RN[a'»b] - b und, falls notwendig, die Berücksichtigung von (3), führt auch in diesem Fall relativ einfach zum Ergebnis RN[a«b]. Wenn ein gerader Modulus für p = 2 mit J >1 aufeinander folgenden Nullen endet, muss v =pJ = 2J gewählt werden, um die Ergänzungsfaktoren zu bestimmen. Aus den Bedingungen (29) und (30) kann man einfach feststellen, dass die Ergänzung des Kettenbruchs aΦ/p^mit Ergänzungsfaktoren nur dann möglich ist, wenn der zerlegte O- πoranrt a αi irh mit I αi ifoinanHor fnlπonrlon Mi illon onH«-t Für rlie» πhriπon Fälle knnnto man a durch die nächstliegende solche Zahl a' ersetzen und eine nachträgliche Korrektur durchführen, diese wäre aber nicht mehr so einfach wie im vorstehendem Fall. Die Auswahl des Modulusteilers v und die Berechnung der Ergänzungsfaktoren {im | m = 1 ,... , 9CA) für nichtbinäre Radixwerte p > 2 ist sehr einfach, wenn N ungerade ist
und sein LS-Digit N0 die Radix p nicht Teilt. Die Ergänzungsfaktoren bestimmt man dann als im»N mit v = 1 wie das im Beispiel aus Figuren 3 und 4 gezeigt ist. Wenn N ungerade ist und sein LS-Digit N0 die Radix p teilt oder bei geraden N mit N0 ungleich Null, bestimmt man die Ergänzungen als im»N/p mit v =p, (siehe vorstehendes Beispiel 2) aber die notwendige Bedingung (30) muss nicht immer erfüllt sein. Für diese Fälle und besonders wenn N mit J > 0 aufeinander folgenden Nullen endet, kann die Berechnung der passenden Ergänzungsfaktoren komplex werden und Lösungen mit nachträglichen Korrekturen notwendig.
Die vorstehend beschriebenen erfindungsgemäßen Verfahrensschritte lassen sich anhand von zwei Ausführungsbeispielen verdeutlichen, deren erstes in Figur 3 zusam- mengefasst ist. Dabei wird die modulare Multiplikation der Zahlen a = 321 und b = 585 bzgl. des Modulus N = 611 berechnet, wobei eine Darstellung bzgl. der Radix p = 10 gewählt wird.
Die Figur 3a zeigt die Zerlegung der vorkommenden Zahlen in die bei dieser Radix auftretenden Digits. Im einfachen Beispiel ist die direkte Berechnung der Lösung ohne größeren Aufwand möglich: Es ist bekannt, dass gelten muss:
0 < R6n [321 - 585]= 321 - 585 - q - 611 < 611 . wobei der zugehörige Quotient q zu bestimmen ist. Berechnet man (321 >585)/611 , erhält man 307,34..., also ist q = 307 und der gesuchte Rest durch 321 «585 - 307 «611 = 208 gegeben. Dieser Wert muss also unter Verwendung des erfindungsgemäßen Verfahrens reproduziert werden. Zunächst ist der Produktkettenbruch zu bestimmen wie in Figur 2b, um zu überprüfen ob er im konkreten Fall eine ganze Zahl ist. Der Operand a besteht aus den Digits a2 = 3, a^ - 2 und a0 = 1 , so dass die Laufvariable m die Werte 0,1 und 2 durchläuft und sich für K = K der Wert 3 ergibt. Dementsprechend ist der Zähler Z0 gegeben durch 1 «585, der Zähler Zi durch Z0/10+2 «585 = 58,5+1170 = 1228,5 und der Zähler Z2 durch Zi/10+3 -585 = 122,85+1755 = 1877,85. Der gesamte Kettenbruch wird dargestellt durch Z2/10 = 187,785, was offenbar keine ganze Zahl ist, aber den Wert a • blp* darstellt. f>o rliα Δ ri+hmαHLr fι"ιr or<ht roti<->nαlo 7αhlon nifht Hofiniort ict mι ICC nι in rlor ergänzte Produktkettenbruch gebildet werden. Dazu ist die Zahl b, also 585 mit den jeweiligen Digits der Zahl a zu multiplizieren. Bei jeder Multiplikation ist das Ergebnis, falls notwendig, so mit einem Vielfachen des Modulus zu ergänzen, dass der ergänzte Zähler durch die Radix teilbar wird, wobei der jeweilige ergänzte Zähler nach Verschieben in LSD-Richtung in die folgende Berechnung als Additionswert einfließt. Im konkreten Beispiel in Figur 3c gilt:
Für das Digit a0 =1 ist 585 mit 1 zu multiplizieren. Damit aus dem Resultat 585 eine durch 10 teilbare Zahl entsteht, muss das Produkt iO'N = io «611 auf 5 enden. Die kleinste Zahl i0, die diese Bedingung erfüllt ist 5, also muss 5*611 = 3055 zu 585 ergänzt werden und i0 ist gefunden. Da der ergänzte LSD-Zähler Z0' = 3055 + 585 = 3640 beträgt, ergibt sich nach Verschieben in LSD-Richtung als Additionswert 364. Aus der Multiplikation von 585 mit dem Digit ai =2 erhält man die Zahl 1170, zu der der Additionswert 364 zu addieren ist, was 1534 ergibt. Diese Zahl muss mit einem Vielfachen ii von N so ergänzt werden, dass das Resultat durch die Radix 10 teilbar ist. Also muss h «611 auf 6 enden, was für h = 6 erstmalig erfüllt wird. Zu ergänzen ist somit 6*611 = 3666, der erste ergänzte Zähler ist Z1' = 1534 + 3666 = 5200, nach Verschieben in LSD-Richtung (durch Division durch 10) ergibt sich als Additionswert 520.
Analog verläuft die Rechnung für das dritte Digit: Die Multiplikation mit a2 = 3 ergibt 585 »3 = 1755; nach Addition des Additionswerts 520 erhält man 1755 + 520 = 2275; das zu ergänzende Vielfache von 611 muss auf 5 enden, was für i2 = 5 erfüllt ist, so dass 3055 zu ergänzen ist; 2275 + 3055 ergibt 5330 und nach Division durch p =10 erhält man für den ergänzten Produktkettenbruch S^blp*) = £611(321«585/1OJ) =
533, und somit - wie gewünscht - eine ganze Zahl. Zu beachten ist hier, dass es möglich ist, eine Zahl zu erhalten, die größer als der Modulus ist. Falls dies der Fall ist, ist so lange der Modulus von dem Ergebnis abzuziehen, bis das Ergebnis kleiner ist als der Modulus. Da 533 < 611 ist, beträgt die Kettenbruchtransformation 'K^ia'b] =
K"„i,,j[321«585] = 533. Anhand der Figur 3d vollzieht man leicht nach, dass das so bestimmte Ergebnis in der Tat dazu führt, dass der ergänzte Produktkettenbruch eine ganze Zahl darstellt, mit j' = 565 im umskalierten Ergänzungsterm aus (29).
Damit ist jedoch erst der erste Schritt zur Bestimmung des Ergebnisses der modularen Multiplikation erfolgt.
Die weiteren Schritte, die noch für die Lösung der modularen Multiplikation benötigt werden, d.h. die notwendige Rücktransformation, ausgehend von den Ergebnissen der Transformation, sind in Figur 4 abgebildet. Dabei reproduziert Figur 4a noch einmal das Ergebnis der direkten Berechnung, um den Vergleich mit den Lösungen gemäß dem erfindungsgemäßen Verfahren zu erläutern.
In der Figur 4b ist die direkte Rücktransformation (34) dargestellt. Das korrekte Ergebnis ergibt sich direkt, wenn man die modulare Multiplikation zwischen dem zuvor erhaltenen Ergebnis TC611 .,[321 »585] = 533 und der Radixpotenz pκ = 103 ausführt. Damit wäre aber nichts gewonnen, denn diese Berechnung hat nicht die gleiche Form wie die Kettenbruchtransformation (33) und müsste mit einem anderen Algorithmus berechnet werden.
Stattdessen kann man die Rücktransformation mittels einer zweiten Kettenbruchtransformation (36) durchführen, wie der Figur 4c zu entnehmen ist. Dies ist auch im Hinblick auf eine schaltungstechnische Umsetzung vorteilhaft, weil man auf dieselbe Hardware-Implementierung zurückgreifen kann.
Zwar ist auch hier zunächst zumindest eine modulare Reduktion einer relativ großen Zahl durchzuführen - im konkreten Fall d = Ru\p2<κ] = Ren[106] = 404, diese kann aber vorab berechnet werden. Die konkret auszuführende Berechnung lässt sich anhand der Figur 4d Schritt für Schritt nachvollziehen.
Figur 4d zeigt wieder den Ablauf der Berechnung im Detail. Das Verfahren entspricht exakt dem anhand der Figur 3c ausführlich demonstrierten Vorgehen: Der Operand d = R6ii[106] = 404 wird in seine Digits d2 = 4, ό-i = 0, do = 4 zerlegt. Beginnend mit dem Digit d0 beginnt dann wieder die Abfolge der Operationen Multiplikation mit dem Digit, Addition des Additionswertes, ggf. Ergänzung mit dem kleinsten Vielfachen des Modu- lus, das zu einer durch die Radix teilbaren Zahl führt, Verschieben in LSD-Richtung. Anzumerken ist, dass hier in der Tat ein Ergebnis £6n (404*533/10J) = 819 erzielt wird, das größer als der Modulus-Wert 611 ist, also ist dieser Wert einmal vom Ergebnis abzuziehen (819 - 611 = 208). Wie es sein sollte, stellt man fest, dass das Ergebnis der direkten Berechnung, wie es in den Figuren 3a bzw. 4a dargestellt ist, richtig reproduziert wird.
Anhand der Figur 4e vollzieht man leicht nach, dass das so bestimmte Ergebnis in der Tat dazu führt, dass der hier ergänzte Produktkettenbruch eine ganze Zahl j = j' = 988 (für v = 1) im umskalierten Ergänzungsterm aus (29) ergibt.
Die Figur 5 zeigt detailliert die analoge Berechnung für dasselbe modulare Produkt bei Verwendung der Radix p = 2. Diese Wahl ist deshalb besonders interessant, weil sich, wie nachfolgend detailliert dargestellt wird, in der Hardware-Implementierung signifikante schaltungstechnische Vereinfachungen ergeben, die insbesondere auf der Möglichkeit zur Division durch die Radix mittels Bit-Shift und der einfachen Bestimmung der Ergänzungsterme sowie einer einheitlichen Berechnung für alle Modulus-Werte basieren.
Figur 5a zeigt die Darstellungen der Operanden in einer auf die Radix p = 2 bezogenen Zerlegung. In Figur 5b lassen sich die einzelnen Schritte bei der Berechnung des ergänzten Produktkettenbruches nachvollziehen. Insbesondere muss stets einmal der Modulus ergänzt werden, wenn das letzte Bit des nicht ergänzten Zählers eine 1 ist. Insbesondere ist die Tatsache zu betonen, dass die Kettenbruchtransformation desselben Produkts in einer Darstellung bezüglich einer anderen Radix zu einem anderen Ergebnis führt. Erst die entsprechende Rücktransformation, die auf direktem Weg für p = 10 in Figur 5c dargestellt ist, führt wieder auf das richtige Endergebnis. Die vorgestellte Methode für die Berechnung der modularen Multiplikation mit Kettenbruchtransformation (33) lässt sich auch für die Rechnung mit Polynomen herleiten, wenn man die Radixpotenz p^ durch x^ ersetzt und zusätzlich berücksichtigt, dass bei der polynomialen Addition s und Subtraktion B keine Überträge betrachtet werden. Aus diesem Grund ist das Vielfache λ immer gleich Null, wenn man die Bedingung (40) und die Eigenschaft (20a) berücksichtigt. Also unter dieser Bedingung bei der Kettenbruchtransformation mit Polynomen ist eine nachträgliche triviale Reduktion durch λ- faches Abziehen des Modulus N(x) überflüssig. Nach (33) die Kettenbruchtransformation für zwei Polynome a(x), b(x) eZN[x]NW, lautet dann
7Cm[a(x) H b(x)] = RN(x)N(x)(a(x)Ξb(x) /x^)]
= (a(x)Ξb(x) Sj(X)HN(X)) /x*. (38)
In Figur 6 ist ein Beispiel für die hier eingeführte Methode der modularen Multiplikation mit Kettenbruchtransformation auf Polynomen aus -Z2[X]N(X) dargestellt. Als konkretes Beispiel wird das modulare Produkt der Polynome a(x) = x2+x+1 und b(x) = x2+1 bezüglich des irreduziblen Moduluspolynoms N(x) = p(x) = x3+x+1 berechnet.
Die direkte Lösung RN(X)[a(x)Ξb(x)] = x2+x erhält man durch eine Polynomdivision (mit dem Rest), die in Figur 6a auf der rechte Seite dargestellt ist. Zu beachten ist hier, dass mit den Koeffizienten der Potenzen von x bei Addition und Multiplikation binär und ohne Übertrag gerechnet wird, was auch durch die Verwendung des speziellen Additions- und Multiplikationszeichens (B und H) angedeutet wird. Während das Ergebnis der „konventionellen" Berechnung (über dem Ring von ganzen Zahlen ZN[x]) des Produktes der beiden Polynome (x2+x+1)*(x2+1) = x4+x3+2x2+x+1 ergibt, erhält man beim Rechnen mit binären Koeffizienten (über dem Ring Z2[X]) das Ergebnis x4+x3+x+1.
Wie bereits aus den vorangehenden Beispielen bekannt, besteht der erste Schritt darin, die einzelnen Digits der Operanden zu bestimmen, wobei hier die „Radix" x ist. Dementsprechend ergeben sich für a(x) die Digits a2 = 1 , = 1 , a0 = 1. Die Bildung des zugehörigen Produktkettenbruchs (nach (24), aber für Polynome) ist im oberen Teil der Figur 6b dargestellt. Der erste Zähler Z0(x) ergibt sich aus der binären Multiplikation von b(x) mit dem Digit a0. Zur Berechnung des jeweils nächsten Zählers wird dann der zuletzt erhaltene Zähler durch die „Radix" x dividiert und binär zu dem Produkt von b(x) mit dem jeweils aktuellen Digit addiert, wobei die Rechenoperationen stets ohne Übertrag erfolgen. Das Endergebnis dieser Vorgehensweise ist (x4+x3+x+1)/ x3, also kein Polynom, so dass wieder der ergänzte Produktkettenbruch nach (27) zu berechnen ist, wie im unteren Teil der Figur 6b dargestellt. Das gleiche Verfahren ist als Schulalgorithmus in Figur 6c durchgeführt. Abschließend ist in Figur 6d die direkte Rücktransformation dargestellt, um die in Figur 6a gegebene Lösung auf kurzem weg zu überprüfen.
Bei der bisherigen Betrachtung der modularen Arithmetik wurde die Durchführung der modularen Multiplikation durch die Kettenbruchtransformation eingeführt. Neben der modularen Multiplikation sind für die vollständige modulare Arithmetik zusätzlich noch die modulare Addition, modulare Subtraktion sowie die Invertierung (bzw. Division) in endlichen Körpern nötig. Wie bereits oben erwähnt, ist die Realisierung von modularer Addition und Subtraktion einfach, wenn die Operanden dieselbe Größenordnung haben wie der Modulus. Wenn man diese Annahme noch verschärft, indem man voraussetzt, dass die beiden Operanden kleiner als der Modulus sind (in Zeichen a, b < N), so muss bei der modularen Addition und Subtraktion höchstens einmal der Modulus abgezogen werden, um das modulare Ergebnis zu erhalten.
Die entsprechende Annahme für die Rechnung mit Polynomen bezieht sich auf die Polynomgrade und bedeutet, dass die Grade der beiden Operandenpolynome kleiner als der Grad des Moduluspolynoms (in Zeichen Grad(a(x)), Grad(b(x)) < Grad(N(x))) sein müssen. Für die Arithmetik in endlichen Körpern und Restklassenringen sind diese Annahmen stets erfüllt, da die einzelnen Elemente oder deren Grad allesamt kleiner als der jeweilige Modulus oder sein Grad sind. Aus diesem Grund werden im weiteren Verlauf dieses Dokumentes die Bedingungen a, b < N (39) und
Grad(a(x)), Grad(b(x)) < Grad(N(x)) (40) berücksichtigt.
Die modulare Division in endlichen Körpern ist auf die modulare Invertierung rück- führbar, indem man eine modulare Multiplikation mit dem modularen Inversen des Divisors durchführt. Die modulare Invertierung ist die Operation, welche zu einer gegebenen Zahl a eine inverse Zahl a'1 ermittelt, für welche RN[a • a'1] = 1 gilt. In Z hat diese Gleichung keine allgemeine Lösung, vielmehr ist sie nur für bestimmte Kombinationen von N und a lösbar. In endlichen Körpern Fp und Fpm hat sie jedoch immer eine Lösung.
Eine Möglichkeit zum praktischen Auffinden von a'1 (bzw. a(x)"1 bei Polynomen) liefert der kleine Satz von Fermat. Er besagt, dass die (N-2)-te Potenz jedes Elements eines endlichen Körpers das modulare Inverse eben dieses Elements ist. Mit dieser Vorgehensweise kann die modulare Invertierung und somit auch die modulare Division auf die mehrfache Ausführung der modularen Multiplikation zurückgeführt werden. Eine alternative Möglichkeit bieten Verfahren, welche auf dem Erweiterten Euklidischen Algorithmus basieren.
Für die modulare Potenzierung mit einer natürlichen Zahl wird häufig die Square-and- Multiply-Methode benutzt, oder einige Verallgemeinerungen dieser Methode die auf Additionsketten basieren [6].
Bisher wurden alle fünf Grundoperationen der modularen Arithmetik für ganze Zahlen sowie für Polynome über ZN[X]NM eingeführt. Die modulare Multiplikation wurde anhand der Kettenbruchtransformation vorgestellt, welche immer eine abschließende Kettenbruchrücktransformation verlangt. Prinzipiell gibt es jedoch, wie in Figur 7 verdeutlicht wird, zwei verschiedene Vorgehensweisen, wenn man das vorstehend für die Durchführung einer modularen Operation beschriebene Verfahren auf mehrere nacheinander folgende modularen Grundoperationen übertragen will. Die modulare Multiplikation mit Verwendung der Kettenbruchtransformation verlangt immer eine abschließende Kettenbruchrücktransformation. Bei Hintereinanderausführung mehrerer modularer Rechenoperationen gibt es daher einerseits die direkte Vorgehensweise, die auf der linken Seite der Figur 7 dargestellt ist, und bei der für jeden Rechenschritt einzeln eine Hin- und eine Rücktransformation durchgeführt werden müssen. Diese Vorgehensweise kann in Ketten von mehreren modularen Grundoperationen, d.h. modularen Operationsketten, in einer anderen, der rechten Seite der Figur 7 zu entnehmenden Reihenfolge durchgeführt werden, was in manchen Fällen weniger Rechenaufwand benötigt. Anstelle einer Kettenbruchrücktransformation nach jeder einzelnen Kettenbruchtransformation eines modularen Produkts in der Operationskette, erfolgt die Rücktransformation erst am Ende der Berechnungen für die ganze Operationskette. Dabei muss man jedoch am Anfang dieser Berechnungsmethode alle verschiedenen Operanden, die in der Operationskette vorkommen mit einer Kettenbruchtransformation transformieren. Das erfolgt durch die Betrachtung der beteiligten Operanden O als Produkte mit einem Identitätsoperator (O = O * 1) und durch anschließende Kettenbruchtransformation dieses formalen Produkts. Danach werden alle modularen Grundoperationen, die in der Operationskette vorkommen, mit diesen Transformierten durchgeführt und das Ergebnis mit einer einzelnen Kettenbruchrücktransformation in das Endergebnis überführt.
Diese Vorgehensweise mit dem Übergang in den Raum der Transformierten ist nicht für alle modularen Operationsketten empfehlenswert, da insbesondere für Operationsketten mit vielen verschiedenen Operanden und einem kleinen Anteil modularer Multiplikation der Aufwand für den Übergang in den Raum der Transformierten die Vorteile überwiegt. Dagegen sind bei langen Operationsketten mit einem großen Anteil an modularer Multiplikation und wenig Anfangsoperanden, wie z.B. bei modularer Potenzierung mit einer natürlichen Zahl, die Vorteile der auf der rechten Seite der Figur 7 vorgestellten Methode überwiegend.
Beginnend mit der Figur 8 wird nun im Detail dargestellt, wie eine schaltungstechnische Ausführung des vorstehend beschriebenen Verfahrens umgesetzt werden kann. Die Umsetzung der Kettenbruchtransformation nach (33) und (38) in einer digitalen Schaltung ist zurückzuführen auf die Umsetzung des ergänzten Produktkettenbruchs 6N(a»b/pir) für ganze Zahlen a und b, einen Modulus N sowie für eine Radix p gemäß (27). Die Umsetzung für Polynome erfolgt nach dem gleichen Prinzip und wird im Folgenden nicht gesondert im Detail betrachtet. Im weiteren Verlauf dieses Dokuments werden alle Schaltungen nur für den Fall v = 1 (N' = N) dargestellt, da sich die andere Fälle v > 1 ; v=pτe N\{0}; Te N nur durch eine entsprechende Verschiebung des Mo- dulus N um T Digits in der LSD Richtung unterscheiden.
Weiterhin werden auch die folgenden früher angenommenen Beschränkungen berücksichtigt: a, b < N, Xp(N) = μ, μ < 9C, sodass K1 I < TC , wobei K = £p(a) und I =
£p(b). Die Radixdarstellungen aller Argumente werden einheitlich mit einer maximalen Länge von 9C Digits angegeben:
N = (N3T., N^2 ... N1 No)p; a = (a*,, a« ... a, ao)p; b = (b*,, b*, ... b, bo)p, wobei die Digits N„ für 9C > k > μ in N, die Digits a„ für TC > k > K in a und die Digits b„ für TC > k > I in b den Wert Null haben.
Der erste Zähler Z'o = ao*b + Con[i0«N] des ergänzten Produktkettenbruchs ist gemäß (27) in Fig. 2 direkt durch eine Schaltung wie in Figur 8 zu berechnen. Sie besteht aus drei Registern Reg b, Reg N und Reg w, wobei die ersten beiden an je eine Reihe von Multiplizierern mit zwei 1-Digit-Eingängen (siehe Fig. 9a) angeschlossen sind. Die Ausgänge der Multiplizierer sind wiederum an eine Kette von Addierern angeschlossen, deren Ausgänge O mit dem Arbeitsregister Reg w verbunden sind. In diesem Register wird ZO als Zwischenergebnis der Berechnung des ergänzten Produktkettenbruchs gespeichert. Die genaue Struktur der einzelnen Addierer ist in Figur 9b gesondert gezeigt. In Figur 9c ist die Digit-Struktur der Addition bei größtmöglichen Eingangswerten mit zwei Beispielen (für p =10 und p= 2) dargestellt. Aus den Forderungen a < N und b < N folgt, dass Reg b höchstens so lang sein muss wie Reg N. Aus Figur 9c folgt, dass die Länge des Arbeitsregisters Reg w nur höchstens zwei Digits größer sein muss als die Länge 9C von Reg N, damit die beiden Überträge (engl. carries) aus dem höchstwertigen Addierer der Kette aufgenommen werden können. Die Ergänzungsschaltung Con für die Ergänzungsfunktion (26) bestimmt, abhängig von p und N1 den Ergänzungsfaktor i0. Die Eingänge E der Addierer werden in dieser Schaltung nicht benutzt (logische Nullen sind angeschlossen), da Z'o der erste Zähler des ergänzten Produktkettenbruchs ist und keine Vorgänger hat. Die Eingänge E der Addierer werden für die nächste Stufe benötigt.
Der nächste Zähler Z1' des ergänzten Produktkettenbruchs (27) in Fig. 2 wird durch eine parallele Schaltung umgesetzt werden. Zur soeben beschriebenen Schaltung wird ein identischer Schaltungsblock hinzugefügt und die Ausgänge von Reg w im ersten Block mit den Eingängen E der Addierer im zweiten Block verbunden. Diese Verbindung wird um eine Stelle in Richtung des LSD verschoben, wodurch eine Division durch p ausgeführt wird, wie in Figur 10 dargestellt. Die Ergänzungsschaltung Con des ersten Blocks erzwingt durch den Ergänzungsfaktor i0, dass der durch die verschobene Verbindung frei gebliebene Ausgang von W0 in Reg w des ersten Blocks stets eine 0 liefert. Die Ergänzungsschaltung Con des zweiten Blocks erzeugt den Ergänzungsfaktor J1, der nach (28) vom Ergebnis des Produkts a^bo sowie von Z01* abhängt. Da Z01* in W1 des ersten Blocks gespeichert ist, sollte der Ausgang von W1 des ersten Blocks mit dem Eingang der Ergänzungsschaltung Con des zweiten Blocks verbunden werden. Wie im ersten Block erzwingt die Ergänzungsschaltung Con des zweiten Blocks durch den Ergänzungsfaktor J1, dass der Ausgang von W0 in Reg w des zweiten Blocks stets eine 0 liefert. Um das verschobene (durch p geteilte) höchstwertige Digit aus dem W^+1 des ersten Blocks, im zweiten Block auf die Stelle "7C aufaddieren zu können, muss der zweite Block mit einem zusätzlichen Addierer /\<κ erweitert werden
(siehe Fig. 10). In Figur 10 entspricht die Verschiebung um eine Stelle in Richtung des LSD einer Verschiebung um eine Stelle nach links. Aufgrund obiger einfacher Erklärung sind Reg b und Reg N in der Figur 10 doppelt dargestellt, obwohl nur je eins benötigt wird.
Die soeben beschriebene Vorgehensweise für den Zähler Zi' kann wie in Figur 11 auf die nachfolgenden Zähler des ergänzten Produktkettenbruchs (27) erweitert werden. Das Arbeitsregister Reg w kann man in allen Schaltungsblöcken weglassen, da man bei paralleler Ausführung die einzelnen Zwischenergebnisse Zm' direkt (ohne Speicherung) in den nächsten Schaltungsblock weiterleiten kann. Dadurch erhält man eine rein kombinatorische parallele Schaltung für die Berechnung des ergänzten Produktkettenbruchs und damit auch für die Berechnung der Kettenbruchtransformation nach (33) und (38). Dafür fehlt jedoch noch die Realisierung der Restberechnung, welche nach (32) in Form von λ-fachem Abziehen des Modulus N erfolgt. Die Umsetzung dieser Subtraktion wird später (im Rahmen der Erklärung der Umsetzung von modularer Addition und Subtraktion) im Detail beschrieben.
Eine allgemeine parallele Version der Schaltung für die Berechnung des ergänzten Produktkettenbruchs ist in Figur 12 dargestellt. Als rein kombinatorische Schaltung hat sie zwar Vorteile in Bezug auf ihre Geschwindigkeit, die Anzahl der benötigten Korn- ponenten ist jedoch (bei entsprechender Länge von N) für viele Anwendungen zu groß.
Mit etwas weniger Aufwand kann man diese parallele Schaltung für den binären Fall realisieren, wenn also die Radix p = 2 verwendet wird. Die allgemeinen Digit-Multipli- zierer in Figur 9 werden in diesem Fall zu einfachen UND-Gattern, während die Ergänzungsfunktion Con durch ein einfaches XOR-Gatter realisiert werden kann, wenn der Modulus N ungerade ist (siehe Beispiel in Figur 5). Die Addierer bestehen nur aus zwei verketteten Volladdierern wie in Figur 13 gezeigt. Eine solche binäre parallele Schaltung für die Berechnung des ergänzten Produktkettenbruchs mit ungeradem Modulus ist in Figur 14 dargestellt.
Bei der Ausführung der modularen Addition mit binären Polynomen über Z2[x]N(X) wird, wie oben schon erwähnt, komponentenweise ohne Überträge gerechnet. Für diese Berechnungen sind die Addierer einfache XOR-Gatter (siehe Fig. 13). Für die Berechnungen des ergänzten Produktkettenbruchs ausschließlich für die binären Polynome über Z2[X]N(X) mit ungeradem Modulus (oder präziser definiert, mit einem Modulus N(x), bei dem der freie Koeffizient N0 ungleich Null ist) ist die parallele Schaltung noch einfacher, wie in Figur 15 zu sehen ist.
Eine Version mit wesentlich geringerem Bedarf an Komponenten erhält man, wenn man die parallelen Schaltungsblöcke in Figur 11 durch eine Struktur mit rückgekoppelten Ausgängen des Arbeitsregisters Reg w ersetzt und damit nur einen einzigen Block mehrmals benutzt. Zu diesem Zweck müssen die Digits des Operanden a einzeln und durch einen Takt gesteuert in die Schaltung eingeschoben werden. Die einfache Rückkopplungsregel folgt direkt aus der zuvor beschriebenen parallelen Schaltung und wird in Figur 16 gezeigt. Diese Schaltung wird als allgemeine seriell-parallele Schaltung für die Berechnung des ergänzten Produktkettenbruchs bezeichnet. Besonders günstig zu realisieren ist diese rückgekoppelte Schaltung im binären Fall, wenn also die Radix p = 2 verwendet wird. Wie in der parallelen binären Version werden die Digit-Multiplizierer in diesem Fall zu einfachen UND-Gattern, während die Ergänzungsfunktion Con durch ein einfaches XOR-Gatter realisiert werden kann, wenn der Modulus N ungerade ist. Die einzelnen Speicherelemente der benötigten Register werden zu einfachen D-Flipflops und die Addierer bestehen nur aus zwei verketteten Volladdierern wie in Figur 13 gezeigt. Aufgrund dieser strukturellen Eigenschaften ist diese binäre seriell-parallele Schaltung für die Berechnung des ergänzten Produktkettenbruchs mit ungeradem Modulus einfach zu realisieren. Sie ist als Sonderfall der Schaltung in Figur 17 dargestellt. Im weiteren Verlauf dieses Dokuments wird nur der binäre Fall (p = 2) und N ungerade betrachtet. Für p = 2 mit N gerade und für andere Radixwerte muss zu Beginn die Ergänzungsfunktion (26) bestimmt werden, welche vom Modulus N und Radix p abhängt. Wie oben bereits beschrieben kann die Bestimmung dieser Funktion sehr einfach sein (wie etwa im binären Fall und N ungerade) für manche Parameterkombinationen p und N etwas komplexer und bei einigen sogar unmöglich. Falls man die Bestimmung der Ergänzungsfunktion (26) bewerkstelligen kann und somit die Ergänzungsschaltung Con spezifiziert ist, so ist die weitere Struktur der Schaltung für die Fälle p = 2 und N gerade sowie p ≠ 2 identisch mit dem im folgenden Sonderfall (für p = 2 und N ungerade). Aus diesem Grund werden diese Fälle nicht mehr betrachtet. In der Version der Schaltung in Figur 17 ist die maximale Taktrate der Schaltung bei der Ausführung der modularen Arithmetik mit ganzen Zahlen durch die dort auftretende Verbreitung von Überträgen zwischen den einzelnen Addierern stark limitiert. Ist die Operandenlänge hinreichend groß, so sind aus diesem Grund nur niedrige Taktraten möglich. Bei der Ausführung der modularen Multiplikation mit binären Polynomen über Z2[X]N(X) tritt dieses Problem nicht auf, da in diesem Fall keine Überträge zu betrachten sind: Es wird ja, wie oben erwähnt, komponentenweise ohne Überträge gerechnet. Für diese Berechnungen sind die Addierer durch den Steuerungseingang G/P umschaltbar (siehe Fig. 13). Für die Berechnungen des ergänzten Produktkettenbruchs ausschließlich für die binären Polynomen über Z2[x]N(x) mit ungeradem Modulus (oder präziser definiert, mit einem Modulus N(x), bei dem der freie Koeffizient N0 ungleich Null ist) ist die binäre seriell-parallele Schaltung wesentlich einfacher, wie in Figur 18 zu sehen ist.
Aufgrund der gewünschten Universalität der vorher beschriebenen binären seriellparallelen Schaltung muss jedoch die Problematik der Überträge stets berücksichtigt werden. In der Schaltung in Figur 17 wird in jeder Taktperiode eine Multiplikation des Operanden b mit dem aktuellen Bit at des Operanden a und eine gleichzeitige Ergänzung mit dem entsprechenden Ergänzungsfaktor it durchgeführt. Um ein korrektes Ergebnis zu erhalten, muss man abwarten bis sich die Überträge durch alle 7C+Λ Addierer verbreitet haben. Diese Verbreitung der Überträge durch eine lange Kette von Addierern beschränkt die Taktrate wesentlich.
Um dem Problem der limitierten Taktraten im Fall der Betrachtung von Überträgen (d. h. bei modularer Multiplikation mit ganzen Zahlen) zu entgegnen, soll im Folgenden eine Pipeline-Struktur beschrieben werden, welche trotz Berücksichtigung von Überträgen mit hohen Taktraten getrieben werden kann. Diese Struktur wird durch den Ein- satz von Zwischenspeichern ermöglicht, welche in bestimmten, äquidistanten Abständen in die binäre seriell-parallele Schaltung (Fig. 17) eingefügt werden sollen. Siehe dazu Figur 19.
Die Blöcke, welche durch Einfügen der Zwischenspeicher (ZS) entstehen, werden Pipeline-Stufen (PS) genannt. Ihre Länge in Bit wird mit p bezeichnet und die Anzahl der Pipeline-Stufen in der gesamten Schaltung mit P. Daraus ergibt sich, dass das
Produkt p«P = TC genau die maximale Länge der Operanden (in Bit) ergeben muss.
Abgesehen von der letzten Pipeline-Stufe sind alle Pipeline-Stufen identisch. In der letzten Stufe werden in einer Verlängerung der arithmetischen Einheit (VAE) die Überträge des Addierers A9C-I in zwei zusätzlichen D-Flipflops über einen zusätzlichen Addierer A-X- aufgefangen. Die Zwischenspeicher sind in der letzten Stufe mangels einer nachfolgenden Stufe nicht mehr erforderlich.
Der ersten Pipeline-Stufe vorgeschaltet ist eine Steuerungseinheit (SE), in welcher der benötigte Takt erzeugt und gezählt wird. Zusätzlich wird in der Steuerungseinheit die Ergänzungsfunktion Con berechnet, die im hier betrachteten Fall mit p = 2 und N ungerade aus einem einfachen XOR-Gatter besteht. Außerdem ist ein D-Flipflop (mit FFa bezeichnet) für die Zwischenspeicherung des jeweils zuletzt eingeschobenen Bits at des Operanden a in der Steuerungseinheit enthalten. Mit diesem Bit werden die ersten p Bits des Operanden b multipliziert und gleichzeitig wird eine Ergänzung mit dem entsprechenden Ergänzungsfaktor i, in der ersten Pipeline-Stufe durchgeführt. Um ein korrektes Ergebnis zu erhalten, muss man abwarten bis sich die Überträge (jetzt nur noch) durch p Addierer der ersten Pipeline-Stufe verbreitet haben. Dieses Ergebnis wird dann im Arbeitsspeicher der ersten Pipeline-Stufe gespeichert (in den ersten p D-Flipflops des Registers Reg w), während die Überträge am Ausgang des p- ten Addierers Ap-1 der ersten Pipeline-Stufe im Zwischenspeicher ZSi gespeichert werden.
Jeder ZS besteht aus vier D-Flipflops bezeichnet mit Za1 Zo2, Zθi und Zi. Der D-Flipflop Za speichert das Bit des Operanden a, mit dem in der Pipeline-Stufe die letzte Multiplikation durchgeführt wurde. Die dabei entstandenen Überträge O2 und O1 des letzten Addierers in der Pipeline-Stufe werden in den D-Flipfllops Zo2 und Zo1 gespeichert, während der D-Flipflop Zi den Ergänzungsfaktor speichert, der dabei benutzt wurde.
Die in ZS1 gespeicherten Bits werden in der zweiten Pipeline-Stufe benutzt. Dort wird die Multiplikation des in Za gespeicherten Bits at mit den nächsten p Bits des Ope- randen b und die entsprechende Ergänzung mit it durchgeführt. Dies kann schon beginnen nachdem sich die Überträge durch p Addierer der ersten Pipeline-Stufe verbreitet haben. Gleichzeitig startet die Multiplikation von at+i mit den ersten p Bits des Operanden b (und die entsprechende Ergänzung mit it+i) in der ersten Pipeline-Stufe. Nach demselben Prinzip funktionieren alle weiteren Pipeline-Stufen und beschleunigen dadurch, je nach gewählter Länge p der Pipeline-Stufen, mehr (für kleinere p - Werte) oder weniger (für größere p - Werte) die Arbeit der binären seriell-parallelen Schaltung.
Die gesamte binäre seriell-parallele Schaltung mit Pipeline-Struktur kann durch 6 funktionale Einheiten dargestellt werden: Die Register Reg a, Reg b und Reg N, die a- rithmetische Einheit (AE) bestehend aus der Addiererkette mit Zwischenspeicher und dem damit gekoppelten Arbeitsregister Reg w, die Taktverteilungseinheit (TVE), die durch Taktverteilungsstufen (TVS) die einzelnen Pipeline-Stufen treibt, sowie die Steuerungseinheit (SE), die den Takt generiert, zählt und alle zusätzlich üblichen Steuerungsfunktionen umsetzt (z.B. eine Rücksetzfunktion der Schaltung, oder den Start einer bestimmten modularen Operation). Einige einfach realisierbare Steuerungsfunktionen werden hier zugunsten einer besseren Übersichtlichkeit des Wesentlichen nicht betrachtet. Es werden in SE noch zwei Multiplexer Mi und M2 mit je drei
Eingängen hinzugefügt, die eine wichtige Rolle bei der Umsetzung von modularer Addition und Subtraktion spielen. Ihre Funktion wird später im Detail erklärt. Die gesamte binäre seriell-parallele Schaltung mit der Pipeline-Struktur ist in Figur 19 gezeigt. Ihre Block-Struktur, die auf Registern basiert, ist in Figur 20a dargestellt. In Figur 21 ist eine Pipeline-Stufe im Detail dargestellt. In Figur 22 ist die letzte, mit VAE erweiterte, Pipeline-Stufe gezeigt.
Wie in Figur 21 zu erkennen ist, kann man eine Pipeline-Stufe auch in eine serielle Verbindung von identischen Elementarschaltungen zerlegen, die die atomaren Zellen für die Berechnung des ergänzten Produktkettenbruchs ßN(a»b/2sr) oder ßN(x)(a(x)«b(x)/x:ir) für p= 2 darstellen. Eine solche Zelle multipliziert, addiert und teilt mit p = 2 und wird deshalb als MAT-ZeIIe bezeichnet (siehe Figur 23). Die Block- Struktur der binären seriell-parallelen Schaltung mit der Pipeline-Struktur, die auf MAT-Zellen basiert, ist in Figur 20b gezeigt. In Figur 23 ist, neben einer detailtreuen MAT-ZeIIe, auch die Steuerungseinheit und ihre Verbindung mit der ersten Pipeline- Stufe dargestellt. In Figur 24 ist das Prinzip der Taktverteilung in den einzelnen Pipeline-Stufen (PS) für ein Beispiel mit der PS-Länge p = 4 und nur mit den ersten beiden PS dargestellt. Das ist für eine vollständige Erklärung der Taktverteilung bei der Berechnung des ergänzten Produktkettenbruchs ausreichend. Wie in Figur 21 gezeigt, gehört zu einer Pipeline-Stufe noch eine Taktverteilungsstufe (TVS) bestehend aus je einem D-Flipflop Tm, einem UND-Gatter 1/m und einem Inverter Jm. Die TVS sind bei allen Pipeline-Stufen identisch und bilden in einer seriellen Verbindung die gesamte Taktverteilungseinheit (TVE). Nur die letzte Pipeline-Stufe ist ohne TVS. Die TVE (siehe Fig. 19) steuert die einzelnen Pipeline-Stufen, sodass minimale Verzögerungen bei der Berechnung des ergänzten Produktkettenbruchs entstehen und zu den richtigen Zeitpunkten das korrekte Endergebnis in Reg w abgefangen und gespeichert werden kann. Um die Zwischenergebnisse in der ersten Pipeline-Stufe immer rechtzeitig zu berechnen, wird der D-Flipflop FFa (in welchem sich das aktuell benutzte Bit at des Operanden a befindet) mit den steigenden Flanken (Fi1 F2 F^) des Taktes T getaktet
(siehe Fig. 24). Da das Register Reg a vom selben Takt gesteuert ist, startet jede steigende Flanke von T eine neue Zwischenberechnung in der ersten Pipeline-Stufe PSi mit dem jeweils nächsten Bit des Operanden a. Die steigenden Flanken des Taktes T finden eine halbe Taktperiode früher statt als die steigenden Flanken (Fn, Fi2 Für) des invertierten Taktes Ti. In dieser halben Taktperiode sollen sich alle Überträge in der Additionskette (A0, Ai, A2, A3) der PSi schon verbreitet haben um damit dem Arbeitsregister das korrekte Zwischenergebnis der aktuellen Zwischenberechnung (mit dem Bit at) übergeben zu können. Aus diesem Grund werden die D-Flipflops W0 bis W3 des Arbeitsregisters in PSi mit den steigenden Flanken des invertierten Taktes Ti getaktet. Mit den selben Flanken werden auch die D-Flipflops Za1, ZO2-,, ZOi1 und Zi1 des Zwischenspeichers ZSi getaktet. Damit werden die notwendigen Parameter des Zwischenergebnisses der aktuellen Zwischenberechnung in PS1 sowie das Bit at und der Ergänzungsfaktor it der nächsten (zweiten) Pipeline-Stufe PS2 ohne weitere Verzögerung übergeben. Somit kann PS2 die Zwischenberechnungen mit at und it sofort starten, während PS1 die Zwischenberechnungen mit at+1 und it+1 startet. In PS2 werden jedoch die D-Flipflops W4 bis w7 des Arbeitsregisters und des Zwischenspeichers ZS2 mit den steigenden Flanken des Taktes T getaktet (umgekehrt wie in PS1, wo dafür Ti benutzt wurde). Deshalb wird Ti mit J1 invertiert um T in PS2 zu erzeugen. Die dritte Pipeline-Stufe wird dann genau wie die erste getaktet, die vierte wie die zweite, usw. bis zur letzten Pipeline-Stufe PSP.
Der Zähler Zä in der Steuerungseinheit (SE) liefert nach 9C gezählten Taktperioden von Ti einen Anhalteimpuls (fallende Flanke), welcher mit Hilfe der D-Flipflops in der TVE söCjuθπziθii jeweils noch einer halben Taktpθricdθ die Tsktuπg der cinzεlnsn Pipelinestufen stoppt, da aufgrund der Pipelinestruktur das korrekte Endergebnis im Arbeitsregister Reg w zu verschiedenen, sequenziellen Zeitpunkten verfügbar ist. So werden die D-Flipflops W0 bis w3 in der PSi getaktet bis der Zähler Zä in SE 9C Taktperioden vom Anfang der Berechnung des ergänzten Produktkettenbruchs (in dem invertiertem Takt Ti) gezählt hat. Danach wird über das UND-Gatter VQ die Zuführung des invertierten Taktes gestoppt und damit das Endergebnis von PSi in W0 bis W3 zur Verfügung gestellt. Dieser nach TC Taktintervallen gestoppte invertierte Takt ist in Figur 25 mit (Ti)-K- bezeichnet. Um die Endergebnisse von PS2 zum richtigen Zeitpunkt zu erfassen, wird über das UND-Gatter 1/i die Zuführung des Taktes T nach 7C+1/2 Taktperioden gestoppt (das D-Flipflop 7i verzögert den Anhalteimpuls um eine halbe Taktperiode). Der nach Tf +1/2 Taktperioden gestoppte Takt ist in Figur 25 mit
(T)<κ+i/2 bezeichnet. Der weitere Verlauf der Taktverteilung wird in den nachfolgenden
Pipeline-Stufen bis zu PSP nach dem gleichen Prinzip durchgeführt. Nachdem der in halben Taktperioden durch TVE verbreitete Anhalteimpuls die letzte Pipeline-Stufe PSP gestoppt hat, kann man mit ihm die ganze Schaltung durch Rücksetzen (engl, reset) für eine neue Berechnung des ergänzten Produktkettenbruchs bereitstellen. Dafür müssen vorher die neuen Operanden in dem entsprechenden Register gespeichert werden.
Mit dem vorgestellten Prinzip der Taktverteilung ist die Berechnung des ergänzten Produktkettenbruchs nur von der Steuerungseinheit SE gesteuert. Die bisher beschriebene binäre seriell-parallele Schaltung mit der Pipeline-Struktur für die Berechnung des ergänzten Produktkettenbruchs ^(aΦß*") oder (mit Polynomen) βN(x)(a(x)#b(x)/x*r) mit ungeradem Modulus lässt sich durch einfache Maßnahmen um die modulare Addition RN[a+b] und die modulare Subtraktion RN[b-a] erweitern. Diese Maßnahmen sind auch für die abschließende Korrektursubtraktion des Modulus N gemäß (32) bei der Auswertung der Kettenbruchtransformation notwendig. Dazu ist eine zusätzliche Multiplexer-Reihe At = { Mm; (m = 1,... , 7C)} mit je fünf Eingängen erforderlich um einen parallelen Zugriff auf den Operanden a, sein Komplement ac, den Modulus N, dessen Zweierkomplement N20 sowie auf die Konstante 1 = (00....0Oi)2 zu ermöglichen. Der Operand b ist in der bisher beschriebenen Schaltung ohnehin in paraiieief Form verfügbar. Weiterhin muss zusätzlich eine Verbindung zwischen den Ausgängen der Addierer A0,... Ax- und dem Register Reg b geschaffen werden, da dieses die Ergebnisse von Addition und Subtraktion sowie Multiplikation aufnehmen soll. Bei der Multiplikation passiert das über den Umweg der abschließenden Korrektursubtraktion des Modulus gemäß (32) bei der Auswertung der Ketten- bruch(rück)transformation. Alle hier eingeführten Erweiterungen innerhalb einer PSm; m = 2,... ,(P-1) zeigt Figur 25. Sie sind in allen PS identisch bis auf die erste und die letzte Pipeline-Stufe. Die eingeführten Erweiterungen in PSP sind gesondert in Figur 26 dargestellt, wobei die kleinen Unterschiede zwischen PSm m = 2,... ,(P-1) und PSi in Figur 25 gekennzeichnet sind. In Figur 27 ist die Register-Struktur der ganzen erweiterten Schaltung dargestellt und sie zeigt, welche Argumente in paralleler Form verfügbar sind und welche Register indirekt (über die Addiererkette) parallel ladbar sind. Die modulare Addition RN[b+a] kann nun einfach durch die parallele Auswahl des O- peranden a über die Multiplexer-Reihe At1 durch Einspeisung eines Bits mit dem Wert 1 in FFa über den Multiplexer At? sowie durch Auswahl eines Bits mit dem Wert 1 ü- ber den Multiplexer At2 in SE gestartet werden. Damit wird nur ein Teil des Zwischenergebnisses b+a von RN[b+a] in Reg b der ersten PS geschrieben. Mit weiteren P-1 halben Taktperioden werden die Bits mit dem Wert 1 an den Ausgängen von At; und
At2 mit Hilfe von TVE durch alle D-Flipflops Zam und Zim geschoben und somit b+a in Reg b vollständig erhalten. Dabei zählt der Zähler Zä nur bis 1 (nicht wie bei der Berechnung des ergänzten Produktkettenbruchs bis 1TC). Bei der Berechnung von b+a ist das Register Reg w rückgesetzt (sein Inhalt wird auf 0 gesetzt) und wird nicht getaktet. Stattdessen wird das Register Reg b mit einem Taktanschluss Tb versorgt um das Ergebnis b+a in den einzelnen Pipeline-Stufen parallel übernehmen zu können. Die dadurch in Reg b entstandene Summe b+a ist eventuell größer als der Modulus, also muss N in diesem Fall höchstens einmal (weil a < N und b < N angenommen wurde) abgezogen werden. Dazu muss das Zweierkomplement Nzc des Modulus auf den Inhalt (b+a) von Reg b addiert werden. Das Zweierkomplement von ungeraden Zahlen, wie der Modulus N eine ist, kann man durch bitweise Invertierung der einzelnen Bits und Setzen des LSB auf 1 erhalten. Das Zweierkomplement wird schon bereitgestellt und man kann es einfach über die Multiplexer M = { Mm; (m = 1 ,... , %)} auswählen. Durch Einspeisung eines Bits mit dem Wert 1 in FFa über den Multiplexer Mi sowie durcn Auswani eines Bits mit dem Weil 1 den Multiplexer Al2 in SE wird die Addition (b+a)+Nzc gestartet und nach P halben Taktperioden (wie im Fall b+a) in Reg b erhalten.
Die Entscheidung über das Abziehen des Modulus ist nicht ganz trivial, es müsste dazu überprüft werden, ob der Inhalt (b+a) in Reg b größer als N ist. Eine Lösung dieses Problems ohne einen aufwändigen Wort-Komparator einzuführen, liefert die Trial-And- E/ror-Methode. Bei ihr wird der Modulus auf jeden Fall einmal nach der oben beschriebenen Methode abgezogen. War das Zwischenergebnis b+a kleiner als der Modulus, entstand dabei ein Überlauf im TC+i-ten Bit von Reg b (Register Reg b ist um zwei Bitstellen erweitert, siehe RbE in Fig. 26). Dieser Überlauf kann einfach detektiert werden. Wenn er aufgetreten ist wird der Modulus N wieder (über eine Auswahl durch die Multiplexer M) aufaddiert.
Die modulare Subtraktion RN[b-a] erfolgt ganz ähnlich, nämlich durch Addition des Zweierkomplements azc von a auf b. Dieses Zweierkomplement ist jedoch etwas schwieriger zu berechnen, da a im Allgemeinen nicht als ungerade vorausgesetzt werden kann. Aus diesem Grund muss die Addition des Zweierkomplements in eine Addition des (einfach zu erhaltenden) bitweisen Komplements ac und der Konstante 1 zerlegt werden. Die Multiplexer M bieten diese Möglichkeit (siehe Fig. 27).
Auch hier kann wieder der Fall auftreten, dass a > b galt, durch die Subtraktion also ein negatives Zwischenergebnis (zu erkennen am Überlauf im TC+i-ten Bit von Reg b) aufgetreten ist. In diesem Fall muss der Modulus noch einmal auf den Inhalt von Reg b addiert werden.
Die Korrektursubtraktion gemäß (32) bei der Auswertung der Kettenbruchtransforma- tion erfolgt ebenfalls durch die Trial-And-Error-Methode wie bei der modularen Addition. Nach der Auswertung des ergänzten Produktkettenbruchs wird der Inhalt des Arbeitsregisters Reg w (wo das Ergebnis des ergänzten Produktkettenbruchs gespeichert ist) in das Operandenregister Reg b kopiert. Das wird wie eine Addition ausgeführt, nur werden die Ausgänge der beiden Multiplexer Mi und M2 auf den Wert 0 gesetzt. Danach wird bei Bedarf mit der Trial-and-Error Methode der Modulus N, wie oben beschrieben, abgezogen.
Im polynomialen Fall ist der einzige Unterschied zu der oben beschriebenen Schaltung die Funktion der Addierer {Am}. Sie führen dann keine Addition mit Übertrag aus, sondern ein einfaches XOR ihrer Operanden. Ein solcher einstellbarer Addierer ist schon in Figur 13 gezeigt. Es ist festzuhalten, dass im polynomialen Fall die modulare Addition nicht die bestmögliche Laufzeit hat. Es muss die gesamte Pipeline passiert werden - auch wenn dies aufgrund der fehlenden Überträge keinen Mehrwert bringt. Aus diesem Grund benötigt eine modulare Addition auch im polynomialen Fall P/2 Taktperioden.
Die Invertierung bzw. Division wird von der hier beschriebenen Schaltung nicht berücksichtigt, da sie (wie oben beschrieben) mit Hilfe des kleinen Satzes von Fermat durch mehrfache Multiplikation durchgeführt werden kann. Dasselbe gilt für modulare Potenzierung mit einer natürlichen Zahl die z.B. durch die Square-and-Multiply- Methode durchgeführt werden kann.
Für die vorstehend vorgestellten parallelen Schaltungen für die Berechnung des ergänzten Produktkettenbruchs sind die Erweiterungen auf andere modulare Grundoperationen prinzipiell identisch mit der hier betrachteten binären seriell-parallelen Schaltung.
Alle Vorgänge bei der Auswertung des ergänzten Produktkettenbruchs sowie bei mo- dularer Addition, Subtraktion, Potenzierung mit einer natürlichen Zahl und Division können durch einen relativ einfachen endlichen Steuerungsautomaten in der Steuerungseinheit SE (Fig. 23) vorgenommen werden. Eine alternative Möglichkeit ist die Verwendung eines externen Prozessors, welcher diese Aufgabe übernimmt. Damit ermöglicht die binäre seriell-parallele Schaltung mit der Pipeline-Struktur eine sehr effiziente Durchführung der vollständigen modularen Arithmetik sowohl für ganze Zahlen als auch für Polynome über Z2[X]N(*) und erfüllt somit die Forderung nach einer kompletten Schaltung.
Neben parallelen und seriell-parallelen Ausführungen die oben beschrieben wurden, lässt sich die Kettenbruchtransformation auch seriell implementieren. Diese Implementierung benötigt nur eine Pipeline Stufe (PS) deren Länge der Breite des Daten- Busses angepasst ist. Die PS ist durch eine Ergänzungsfunktions-Einheit EF, einen Zwischenspeicher ZS und eine Verlängerung der arithmetischen Einheit (VAE) ergänzt, wie in Figur 28 für den binären Fall dargestellt. Alle Operanden und Zwischenergebnisse werden in einem RAM-Speicher, der durch einen Mikrokontroller μC ge- steuert ist, zwischengespeichert. Die Pipeline Stufe hat kein Arbeitsregister, da die Zwischenergebnisse direkt über die Datenbus Schnittstelle in den RAM geleitet werden. Wegen der Verschiebung um ein Bit (Teilen durch 2), benötigt die Berechnung eines ergänzten Zählers Zn' des ergänzten Produktkettenbruchs in PS zwei passende, im RAM gespeicherte. Zwischenergebnisse die schon bei der Berechnung des Zählers Zn-i' gespeichert worden sind. Diese werden in die Register reg w' und reg w aus dem RAM geholt. Am Anfang der Berechnung von Zn' holt man gleich zwei passende Zwischenergebnisse in reg w' und reg w. In weiteren Verlauf der Berechnung von Zn' holt man aus dem RAM nur noch ein Zwischenergebnis in reg w', da das andere vorher aus reg w' in reg w einfach übernommen werden kann. Die Überträge die am Ende der Pipeline Stufe in ZS gespeichert sind, werden über eine Rückkopplung vom Addierer A0 für die nächste Berechnung übernommen. Am Ende der Berechnung von Zn' wird noch über die Multiplexer Mux die VAE Einheit eingeschaltet um das MSB von Zn' zu berechnen. Auch Blöcke der Operanden a holt man aus dem RAM in reg a, wo dann die einzelnen Bits an in der Berechnung von Zn' seriell eingeführt werden. Die vorgestellte binäre serielle Schaltung für die Berechnung des ergänzten Produktkettenbruchs eN(a»b/2sr) oder βN(X)(a(x)»b(x)/xir) mit ungeradem Modulus (N0=I) ist besonders für platzsparende Schaltungen wie Sensoren oder RFIDs geeignet. Damit wurde gezeigt, dass die Kettenbruchtransformation auch implementierungsflexibel ist. Sie kann als eigenständige Schaltung, als Schaltung, die durch Mikrocontrol- ler gesteuert ist, oder sogar als reines Software-Modul für einen Mikrocontroller eingesetzt werden.
Literatur
[I] Whitfield Diffie, Martin E. Hellman: „New Directions in Cryptography", IEEE Transactions on Information Theory 22(6), pp. 644-654, November 1976.
[2] Ronald L. Rivest, Adi Shamir, Leonard M. Adleman: „A Method for Obtaining Digital Signaturcs ar.d Public Key Cryptoεyεtems", CACM 21(2), pn. 120-126, Feb. 1978.
[3] Taher EIGamal: „A public key cryptosystem and a signature scheme based on discrete logarithms", IEEE Transactions on Information Theory 31(4), pp. 469- 472, 1985.
[4] Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone: „Handbook of Applied Cryptography", CRC Press series on discrete mathematics and its appli- cations, CRC Press, ISBN: 0-8493-8523-7, 1997.
[5] Henri Cohen, Gerhard Frey, Roberto Avanzi, Christophe Doche, Tanja Lange, Kim Nguyen and Frederik Vercauteren: „Handbook of Elliptic and Hyperelliptic Curve Cryptography", Chapter 26, pp. 617-645, Chapman & Hall/ CRC, 2006.
[6] Donald Knuth: „The Art of Computer Programming", Volume 2: Seminumerical Algorithms, Addison-Wesley, Reading, Massachusetts, Sections 4.3.2. and 4.3.3., pp. 268-303, 1981.
[7] Niels Ferguson, Bruce Schneier: „Practical Cryptography", Wiley, Indianapolis, Indiana, Chapter 16, pp. 279-294, ISBN: 0-471-22357-3, 2003.
[8] IEEE P1363: „Standard Specifications For Public Key Cryptography", Draft P1363/D13, November 1999.
[9] Michael Rosing: „Implementing Elliptic Curve Cryptography", Manning Publi- cations Co., Greenwich, CT, Chapter 5, pp. 103-127, ISBN: 1-884777-69-4, 1999.
[10] Darrel Hankerson, Alfred J. Menezes and Scott A. Vanstone: „Guide to Elliptic Curve Cryptography", Springer-Verlag, Berlin, Germany / Heidelberg, Germa- ny / London, UK, Chapter 5, pp. 205-256, ISBN: 0-387-95273-X, 2004.
[I I] Douglas R., Stinson: „Cryptography: Theory and Practice", CRC Press, Inc., Sections 5.1 and 5.2, pp. 162-191 , ISBN: 0-8493-8521-0, 1986.
[12] Willi Geiselmann: „Algebraische Algorithmenentwicklung am Beispiel der A- rithmetik in endlichen Körpern", Shaker Verlag, Aachen, pp. 1-22, 1994.
[13] T. Beth, D. Gollman: „Algorithm Engineering for Public Key Algorithms", IEEE J. Selected Areas in Communications, 7(4):458_465, May 1989.
[14] Paul Barrett: „Implementing the Rivest Shamir and Adleman Public Key Enc- ryption Algorithm on a Standard Digital Signal Processor", in A. M. Odlyzko (E- ClIt-), Advances in Cryptology — CRYPTO '86, Vol. 263, Lecture Notes in Computer Science, Springer-Verlag, pp. 311-323, 1987. [15] Andrew D. Booth: „A signed binary multiplication technique", Quarterly Journal of Mechanics and Applied Mathematics, Vol. 4, pp. 236-240, 1951.
[16] Ernest F. Brickell: „A Fast Modular Multiplication Algorithm With Application To Two Key Cryptography", In David Chaum, Ronald L. Rivest und Alan T. Sherman (Edit.), Advances in Cryptology: Proceedings of Crypto 82. Plenum Press, New York and London, pp. 51-60, 1983.
[17] Peter L. Montgomery: „Modular Multiplication Without Trial Division", Mathematics of Computation 44(170), pp. 519-521 , April 1985.
[18] Holger Sedlak: „The RSA Cryptography Processor", in David Chaum und Wyn L. Price (Edit.), Advances in Cryptology— EUROCRYPT 87, Vol. 304, Lectu- re Notes in Computer Science. Springer- Verlag, pp. 95-105, 1988.
[19] Dan Zuras: „More On Squaring and Multiplying Large Integers", IEEE Transactions on Computers, Vol. 43, No. 8, pp. 899-908, August 1994.
[20] Blakley, G. R.: „A Computer Algorithm for Calculating the Product A*B modu- Io M", IEEE on Computers, Vol. C-32, No. 5, pp. 497-500, May 1983.
[21] Morita Hikaru: „A Fast Modular-multiplication Algorithm based on a Higher Radix", in G. Brassard (Edit.): Advances in Cryptology-CRYPTO1 89, LNCS 435, pp. 387-399, 1990, Springer Verlag Berlin Heidelberg 1990.
[22] J. Großschädl: „A Bit-Serial Unified Multiplier Architecture for Finite Fields GF(p) and GF(2m)", LNCS 2162, Lecture Notes in Computer Science. Springer- Verlag, Berlin, Germany / Heidelberg, Germany / London, UK, p. 202 ff., 2001.
[23] J. Wolkerstorfer: „Dual-Field Arithmetic Unit for GF(p) and GF{2m)", LNCS 2523, Lecture Notes in Computer Science. Springer-Verlag, Berlin, Germany / Heidelberg, Germany / London, UK, p. 500 ff, 2002.
[24] Laszlo Hars: „Long Modular Multiplication for Cryptographic Applications", LNCS 3156, Lecture Notes in Computer Science, Springer-Verlag, Berlin, Germany / Heidelberg, Germany / London, UK, p. 45 ff, 2004.
[25] S.E. Eldridge, CD. Walter: „Hardware implementation of Montgomery's modular multiplication algorithm," IEEE Transactions on Computers, vol. 42, no. 6, pp. 693-699, 1993.
[26] Erkay Savas, Alexandre F. Tenca, Cetin Kaya Koc: „A Scalable and Unified Multiplier Architecture for Finite Fields GF(p) and GF(2m)", in CHES: International Workshop on Cryptographic Hardware and Embedded Systems, CHES, LNCS- 1965, Springer-Verlag, Berlin, Germany / Heidelberg, Germany / London, UK, p. 277 ff., 2000.
[27] Wieland Fischer, Jean-Pierre Seifert: „High-Speed Modular Multiplication", in CHES: International Workshop on Cryptographic Hardware and Embedded Systems, CHES, LNCS-2964, Springer-Verlag, Berlin, Germany / Heidelberg, Germany / London, UK, p. 264 ff., 2004. [28] Kai Schramm, Kerstin Lemke, Christof Paar: „Embedded Cryptography: Side Channel Attacks", in Kerstin Lemke, Christof Paar Marko Wolf (Eds.): „Embedded Security in Cars", Springer-Verlag, pp. 187-206, 2006.
[29] Kerstin Lemke: „Embedded Security: Physical Protection against Tampering Attacks", in Kerstin Lemke, Christof Paar, Marko Wolf (Eds.): „Embedded Security in Cars", Springer-Verlag, pp. 207-220, 2006.
[30] K. Gandolfi, C. Mourtel, F. Olivier: „Electromagnetic Analysis: Concrete Re- sults", LNCS 2162, Lecture Notes in Computer Science. Springer-Verlag, Berlin, Germany / Heidelberg, Germany / London, UK, p. 251 ff, 2001.
[31] S. Chari, J. R. Rao, P. Rohatgi: „Template Attacks", LNCS 2523, Lecture Notes in Computer Science. Springer-Verlag, Berlin, Germany / Heidelberg, Germany / London, UK, p. 13 ff, 2002.
[32] C. Clavier, J. -S. Coron, N. Dabbous: „Differential Power Analysis in the Pre- sence of Hardware Countermeasures", LNCS 1965, Lecture Notes in Computer Science. Springer-Verlag, Berlin, Germany / Heidelberg, Germany / London, UK, p. 252 ff, 2000.
[33] J. -S. Coron: „Resistance against Differential Power Analysis for Elliptic Curve Cryptosystems", LNCS 1717, Lecture Notes in Computer Science. Springer- Verlag, Berlin, Germany / Heidelberg, Germany / London, UK, p. 292 ff, 1999.
[34] T.S. Messerges, E.A. Dabbish, R. H. Sloan: „Power Analysis Attacks of Mo- dular Exponentiation in Smartcards", LNCS 1717, Lecture Notes in Computer Science. Springer-Verlag, Berlin, Germany / Heidelberg, Germany / London, UK, p. 144 ff, 1999.

Claims

Patentansprüche:
1. Verfahren zur Durchführung der modularen Multiplikation RN[ab] von ganzen Zahlen bezüglich eines Modulus N und der modularen Multiplikation
1 λN(X)LαVΛyk-'VΛyj v ui i I υiy i iui nci i uctuy noi ι cn ioo iϊiuuuιuopuι; ι ιuπ ιo ι i — i i y/Λy , wobei die ganzen Zahlen a < N, b < N, und N bezüglich einer Radix p dargestellt sind, während die Polynome a = a(x) mit Grad(a(x)) < Grad(N(x)), b = b(x) mit Grad(b(x)) < Grad(N(x)) und N(x) bezüglich Potenzen der freien Variablen x und mit Koeffizienten aus einem ganzzahligen Restklassenring ZM dargestellt sind, umfassend die Schritte:
- Berechnung eines ergänzten Produktkettenbruchs c = (ab+jN)/t durch Ergänzungen von einzelnen Zählern eines als Kettenbruch dargestellten Produktbruchs (ab)/t, wobei im ersten Fall der Berechnung mit ganzen Zahlen, c und j ebenfalls ganze Zahlen sind sowie t = p*", während im zweiten Fall der Berechnung mit Polynomen, c = c(x) und j = j(x) ebenfalls Polynome mit Koeffizienten aus ZM sind sowie t = t(x) =x5r und wobei in beiden Fällen 9C eine ganze Zahl größer oder gleich der Länge £p{a) des im Kettenbruch zerlegten Operanden a ist
- Berechnung eines zweiten ergänzten Produktkettenbruchs r = (cd+kN)/t aus dem vorab berechneten modularen Rest d = RN[t2] und dem Ergebnis c der im oben genannten Schritt durchgeführten Rechnung, wobei im ersten Fall r, k und d ganze Zahlen sind und im zweiten Fall r = r(x) = RN(x)[a(x)b(x)], k = k(x) und d = d(x) Polynome mit Koeffizienten aus ZM sind.
2. Verfahren nach Anspruch 1 , dadurch gekennzeichnet, dass eine modulare Multiplikation RN[ab] von ganzen Zahlen bezüglich eines Modulus N durchgeführt wird, in einem zusätzlichen Schritt nach der Berechnung der ergänzten Produktkettenbrüche c und r jeweils überprüft wird, ob die ergänzten Produktkettenbrüche c und r kleiner als der Modulus N sind, und wenn dies nicht der Fall ist, so oft der Modulus N subtrahiert wird, bis die ergänzten Produktkettenbrüche c und r kleiner als der Modulus N sind.
3. Schaltung für die modulare Arithmetik mit mindestens einer Einheit zur Berechnung und Ergänzung von einzelnen Zählern eines als Kettenbruch dargestellten Produktbruchs ab/t, umfassend
- ein Register Reg b mit 9C Registerzellen bo,^,...^^ für alle Digits des Multiplikanten b
- ein Register Reg N mit 9C Registerzellen N01N1 N^1 für alle Digits des Modulus N
- ein Arbeitsregister Reg w mit 7<~+2 Zellen wo,Wi,...,wκ+i oder einen über eine p Bit breite Datenbus-Schnittstelle zugänglichen Arbeitsspeicher RAM, wobei ein Mikroprozessor μC vorhanden ist, der Arbeitsspeicher Datenbus-Schnittstelle steuert und kontrolliert
- eine Speicherzelle aofür ein Digit des Multiplikanten a
- eine Speicherzelle iofür einen Ergänzungsfaktor
- einen Schaltungsblock Con zur Bestimmung des Ergänzungsfaktors zur Ergänzung von Zählern des Produktkettenbruchs
- TC Multiplizierer Mb0, Mbi,... Mb5^1 für Multiplikationen von Digits bo.bi b^ mit einem Digit des Multiplikanten a
- 9C Multiplizierer MN0, MN1,... MN-^1 für Multiplikationen von Digits N01N1, ...,H9CA mit dem Ergänzungsfaktor
- ^" Addierer A01A1,... ,A^1 für die Addition von einzelnen Ergebnissen der Multiplikation mit einem Digit des Multiplikanten a und der Multiplikation mit dem Ergänzungsfaktor wobei
- bei jedem Multiplizierer Mbk ein Eingang des Multiplizierers Mbk mit dem Ausgang der Registerzelle bk verbunden ist, ein anderer Eingang des Multiplizierers Mbk mit dem Ausgang der Speicherzelle a0 verbunden ist, zwei Ausgänge des Multiplizierers mit nur dafür vorgesehenen Eingängen des Addierers Ak verbunden sind und die Ausgänge des Multiplizierers Mb0 zusätzlich mit Eingängen des Schaltungsblocks Con verbunden sind
- bei jedem Multiplizierer MNk ein Eingang des Multiplizierers MNk mit dem Ausgang der Registerzelle Nk verbunden ist, ein anderer Eingang des Multiplizierers MNk mit dem Ausgang der Speicherzelle i0 verbunden ist und zwei Ausgänge des Multipliers MNk mit nur dafür vorgesehenen Eingängen des Addierers Ak verbunden sind
- bei jedem Addierer Ak ein Ausgang des Addierers Ak mit der Registerzelle wk verbunden ist, für k < TCA zwei andere Ausgänge des
Addierers Ak mit nur dafür vorgesehenen Eingängen des Addierers Ak+1 verbunden sind, und bei dem Addierer A^1 ein nur dafür vorgesehener Ausgang mit dem Eingang der Registerzelle w^- verbunden ist und ein nur dafür vorgesehener Ausgang mit dem Eingang der Registerzelle verbunden ist und
- ein Ausgang des Schaltungsblocks Con mit dem Eingang der Speicherzelle i0 verbunden ist.
4. Schaltung für die modulare Arithmetik gemäß Anspruch 3, dadurch gekennzeichnet, dass die Schaltung das Arbeitsregister Reg w mit 7C+2 Registerzellen wo,Wi,...,Wκ+i aufweist.
5. Schaltung für die modulare Arithmetik gemäß Anspruch 4, dadurch gekennzeichnet, dass die Addierer Ak (k = 0,1, ....7CA) für jedes Eingangsdigit der in sie eingespeisten zweistelligen Werte (C1C0), (P1Po), (S1S0) und des in sie eingespeisten einstelligen Wertes E einen separaten Eingang aufweisen und jeweils pro Addierer drei Digit-Ausgänge (O2O1O) vorgesehen sind, um das durch digitweise Addition der Digits Co,po,so, E mit Übertrag gefolgt von digitweiser Addition der Digits C11P11S1, und des Übertrags gegeben Ergebnis der Berechnung (O2O1O) = CTCO+PΦO+S^O+E auszugeben.
6. Schaltung für die modulare Arithmetik gemäß Anspruch 4, dadurch gekennzeichnet, dass die Multiplizierer Mbk und MNk (k = 0,1, ....9CA) als UND-Gatter ausgeführt sind.
7. Schaltung für die (nodulare Arithmetik gemäß Anspruch 4,
U d u u i U li y c ι\c ιι ιι z. c ι oιι ιι c ι, uoas uic nuuici cι r\y [t\ — u, ι , ....y\- ι ) als XOR-Gatter ausgeführt sind.
8. Schaltung für die modulare Arithmetik gemäß einem der Ansprüche 4 bis 7, dadurch gekennzeichnet, dass der Schaltungsblock Con als XOR-Gatter ausgeführt ist.
9. Schaltung für die modulare Arithmetik gemäß einem der Ansprüche 4 bis 8, dadurch gekennzeichnet, dass die Ausgänge der Registerzellen wk der Schaltung derart mit Eingängen der Addierer Ak' einer weiteren Schaltung gemäß Anspruch 2 verbunden sind, dass für k > 0 der Ausgang der Registerzelle wk mit einem nur dafür vorgesehenen Eingang des Addierers Ak-1' verbunden ist und der Ausgang der Registerzelle W1 zusätzlich mit dem Schaltungsblock Con' verbunden ist.
10. Schaltung für die modulare Arithmetik gemäß einem der Ansprüche 4 bis 8, dadurch gekennzeichnet, dass zusätzlich vorgesehen sind
- ein Register Reg a mit 9C Zellen ao,...,ajpi, in das die Speicherzelle a0 als erste Speicherzelle des Registers integriert ist und
- ein Taktgeber zur Ansteuerung der Register Reg a und Reg w, wobei die Ausgänge der Registerzellen wr der Schaltung derart mit Eingängen der Addierer Ar der Schaltung verbunden sind, dass für r > 0 der Ausgang der Registerzelle wr mit einem nur dafür vorgesehenen Eingang des Addierers AM verbunden ist und der Ausgang der Registerzelle Wi zusätzlich mit dem Schaltungsblock Con verbunden ist.
11. Schaltung für die modulare Arithmetik gemäß Anspruch 10, dadurch gekennzeichnet, dass die Schaltung durch zusätzliche Zwischenspeicherzellen Zam, ZO2m, ZOim und Zim in Pipeline-Stufen zerlegt wird, die jeweils dieselbe Anzahl von Registerzellen umfassen, und so in die Schaltung eingefügt sind, dass die Speicherung der Bits des Operanden a, mit dem in der Pipeline-Stufe die letzte Multiplikation durchgeführt wurde in der Zwischenspeicherzelle Zam, die Speicherung der dabei entstandenen LJ- berträge O2 und O1 in den Zwischenspeicherzellen ZO2m und ZOim sowie die Speicherung des dabei benutzten Ergänzungsfaktors in der Zwischenspeicherzelle Zim erfolgt.
EP07764859A 2006-09-07 2007-06-26 Schaltungen für die modulare arithmetik basierend auf der ergänzung von kettenbrüchen Withdrawn EP2062131A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102006042513 2006-09-07
PCT/EP2007/005635 WO2008028529A1 (de) 2006-09-07 2007-06-26 Schaltungen für die modulare arithmetik basierend auf der ergänzung von kettenbrüchen

Publications (1)

Publication Number Publication Date
EP2062131A1 true EP2062131A1 (de) 2009-05-27

Family

ID=38442066

Family Applications (1)

Application Number Title Priority Date Filing Date
EP07764859A Withdrawn EP2062131A1 (de) 2006-09-07 2007-06-26 Schaltungen für die modulare arithmetik basierend auf der ergänzung von kettenbrüchen

Country Status (3)

Country Link
US (1) US20120057695A1 (de)
EP (1) EP2062131A1 (de)
WO (1) WO2008028529A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109669670A (zh) * 2018-12-26 2019-04-23 贵州华芯通半导体技术有限公司 用于蒙哥马利模乘中的不均等分块的数据处理方法及装置

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8290151B2 (en) * 2007-10-12 2012-10-16 Infineon Technologies Ag Device and method for determining an inverse of a value related to a modulus
US9122563B2 (en) * 2009-02-03 2015-09-01 Microsoft Technology Licensing, Llc Computing minimal polynomials
WO2010105900A1 (en) * 2009-03-16 2010-09-23 Thomson Licensing Exponentiation method resistant against side-channel and safe-error attacks
RU2445681C2 (ru) * 2009-12-15 2012-03-20 Государственное образовательное учреждение высшего профессионального образования "Ставропольский государственный университет" Умножитель на два по модулю
US8332651B2 (en) * 2010-02-18 2012-12-11 King Fahd University Of Petroleum And Minerals Method of generating a password protocol using elliptic polynomial cryptography
US9645794B2 (en) * 2014-09-23 2017-05-09 Texas Instruments Incorporated Homogeneous atomic pattern for double, add, and subtract operations for digital authentication using elliptic curve cryptography
US9992013B2 (en) * 2016-03-23 2018-06-05 Gemalto Sa System and method for providing defence to a cryptographic device against side-channel attacks targeting the extended euclidean algorithm during decryption operations
CN106254059B (zh) * 2016-07-26 2020-03-20 华为技术有限公司 一种运算方法和安全芯片
CN109710308B (zh) 2017-10-25 2023-03-31 阿里巴巴集团控股有限公司 任务的处理方法、装置和系统
US10218494B1 (en) * 2018-02-23 2019-02-26 ISARA Corporation Performing block form reductions modulo non-Mersenne primes in cryptographic protocols
KR102510077B1 (ko) * 2018-04-24 2023-03-14 삼성에스디에스 주식회사 부채널 공격에 안전한 연산 장치 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2008028529A1 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109669670A (zh) * 2018-12-26 2019-04-23 贵州华芯通半导体技术有限公司 用于蒙哥马利模乘中的不均等分块的数据处理方法及装置

Also Published As

Publication number Publication date
WO2008028529A1 (de) 2008-03-13
US20120057695A1 (en) 2012-03-08

Similar Documents

Publication Publication Date Title
EP2062131A1 (de) Schaltungen für die modulare arithmetik basierend auf der ergänzung von kettenbrüchen
EP1360579B1 (de) Verfahren und vorrichtung zum modularen multiplizieren und rechenwerk zum modularen multiplizieren
DE69534603T2 (de) Verschlüsselungssystem für elliptische kurve
DE3650335T2 (de) Rechenverfahren und -gerät für endlichfeldmultiplikation.
DE102006025673B4 (de) Rechenwerk zum Reduzieren einer Eingabe-Zahl bezüglich eines Moduls
DE69826963T2 (de) Gerät für die modulare Inversion zur Sicherung von Information
DE69727796T2 (de) Koprozessor zum Ausführen von modularer Multiplikation
EP1922837B1 (de) Verfahren zum sicheren ver- oder entschlüsseln einer nachricht
DE102005041102A1 (de) Verfahren zur Skalarmultiplikation von Punkten auf einer elliptischen Kurve
DE102007054316A1 (de) Modulares Multiplikationsverfahren, modularer Multiplizierer und Kryptosystem
DE10260655B3 (de) Vorrichtung und Verfahren zum Berechnen einer Multiplikation mit einer Verschiebung des Multiplikanden, insbesondere bei der kryptographischen Berechnung
EP1499954B1 (de) Berechnung eines ergebnisses einer modularen multiplikation
DE10141460A1 (de) Potenzrestberechnungseinheit unter Verwendung eines Montgomery-Algorithmus
DE102006025713B9 (de) Kryptographie-Vorrichtung und Kryptographie-Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
US6957243B2 (en) Block-serial finite field multipliers
DE10260660B3 (de) Modulare Multiplikation mit paralleler Berechnung der Look-Ahead-Parameter u.a. bei der kryptographischen Berechnung
EP2641241A1 (de) Verfahren zur langzahldivision oder modulare reduktion
EP1428112B1 (de) Verfahren und vorrichtung zum berechnen eines ergebnisses einer exponentiation
Zalka Shor's algorithm with fewer (pure) qubits
EP1999571A2 (de) Verfahren und vorrichtung zur reduktion eines polynoms in einem binären finiten feld, insbesondere im rahmen einer kryptographischen anwendung
DE10161138B4 (de) Verfahren und Vorrichtung zum Ermitteln einer elliptischen Kurve, Verfahren und Vorrichtung zum Multiplizieren eines Punktes mit einem Skalar
EP2649515B1 (de) UNIFIZIERTER MULTIPLIZIERER FÜR DIE GALOIS-KÖRPER GF(2n) UND GF(p), SOWIE KRYPTOGRAPHIE-VERFAHREN UND KRYPTOGRAPHIE-VORRICHTUNG
DE10156708A1 (de) Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen Kurve
Phatak et al. Fast modular reduction for large wordlengths via one linear and one cyclic convolution
DE102022201745A1 (de) Schnelle vorberechnung für montgomery- multiplikator

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC MT NL PL PT RO SE SI SK TR

AX Request for extension of the european patent

Extension state: AL BA HR MK RS

17P Request for examination filed

Effective date: 20090402

17Q First examination report despatched

Effective date: 20100119

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20100601