Berlin, 6. März 2006Berlin, March 6, 2006
Unser Zeichen: IB 1284-03WO LE/jwdOur sign: IB 1284-03WO LE / jwd
Durchwahl: 030/841 887 16Direct dial: 030/841 887 16
Anmelder/Inhaber: IHP GMBH Amtsaktenzeichen: NeuanmeldungApplicant / owner: IHP GMBH Official file: new registration
IHP GmbH - Innovations for High Performance Microelectronics / Institut für innovative MikroelektronikIHP GmbH - Innovation for High Performance Microelectronics / Institute for Innovative Microelectronics
Im Technologiepark 25, D-15236 Frankfurt (Oder)In the Technology Park 25, D-15236 Frankfurt (Oder)
Verfahren und Vorrichtung zum Berechnen einer Polynom-Multiplikation, insbesondere für die elliptische Kurven-KryptographieMethod and apparatus for calculating polynomial multiplication, in particular for elliptic curve cryptography
Die Erfindung betrifft ein Verfahren und eine Vorrichtung zum Berechnen einer Polynom-Multiplikation. Weiterhin betrifft sie ein Verfahren zur Verschlüsselung von Daten sowie eine Verschlüsselungseinheit.The invention relates to a method and an apparatus for calculating a polynomial multiplication. Furthermore, it relates to a method for encrypting data and an encryption unit.
1. Einleitung1 Introduction
Mobile Endgeräte dringen in immer weitere Bereiche des Alltagslebens vor. Immer mehr sensible Informationen werden zwischen mobilen Endgeräten oder zwischen mobilen Endgeräten und ortsfesten Kommunikations-Endpunkten ausgetauscht. Der Datenaustausch ist normaler Weise durch Verschlüsselungsmechanismen geschützt. Wegen der knappen Ressourcen mobiler Endgeräte ist jedoch ein umfassender Gebrauch kryptographischer Verfahren nicht möglich. Dies gilt insbesondere für die Kryptographie mit öffentlichen Schlüsseln (engl. Public Key Cryptography), die in der Regel zur Bereitstellung eines sicheren Kanals zwischen den Kommunikationspartnern sowie für die Erstellung digitaler Signaturen verwendet wird.
Bei der Kryptographie mit öffentlichen Schlüsseln werden so genannte asymmetrische Verschlüsselungsverfahren verwendet. Hierbei wird ein öffentlicher Schlüssel zur Verschlüsselung von Daten verwendet, der hierfür seinem Namen entsprechend dritten Personen bekannt gemacht wird. Eine Entschlüsselung der mit dem öffentlichen Schlüssel verschlüsselten Daten kann nur mit einem privaten Schlüssel erfolgen, über den nur der Empfänger der Nachricht verfügt. Eine Entschlüsselung der verschlüsselten Nachricht mit dem öffentlichen Schlüssel ist dagegen praktisch nicht möglich. Diese praktische Unmöglichkeit der Entschlüsselung liegt in der Asymmetrie des Verschlüsselungsverfahrens begründet, das einen nur relativ wenige Rechenschritte erfordernden Verschlüsselungsalgorithmus auf der Basis des öffentlichen Schlüssels verwendet. Die Entschlüsselung, die eine mathematische Inversion des Verschlüsselungsalgorithmus beinhaltet, erfordert jedoch bei alleiniger Kenntnis des öffentlichen Schlüssels so viele Rechenschritte, dass der Zeitaufwand eines solchen Entschlüsselungsversuches selbst unter Verwendung modernster und aufwändigster Rechentechnik praktisch unendlich groß ist.Mobile devices are penetrating more and more areas of everyday life. More and more sensitive information is exchanged between mobile devices or between mobile devices and fixed communication endpoints. Data exchange is normally protected by encryption mechanisms. Due to the scarce resources of mobile devices, however, a comprehensive use of cryptographic methods is not possible. This is especially true for Public Key Cryptography, which is typically used to provide a secure channel between the communication partners and to create digital signatures. Public key cryptography uses so-called asymmetric encryption techniques. In this case, a public key is used to encrypt data, which according to its name is made known to third parties. Decryption of data encrypted with the public key can only be done with a private key that only the recipient of the message has. A decryption of the encrypted message with the public key, however, is virtually impossible. This practical impossibility of decryption is due to the asymmetry of the encryption scheme, which uses a public key based encryption algorithm requiring only relatively few computation steps. However, decryption, which involves a mathematical inversion of the encryption algorithm, requires so many computational steps when the public key alone is known that the time required for such a decryption attempt is virtually infinitely large, even using the most modern and elaborate computational technology.
Bekannte asymmetrische Verschlüsselungsverfahren sind RSA sowie Diffie- Hellmann-Verfahren und der darauf basierende Digitale Signatur Algorithmus DSA.Well-known asymmetric encryption methods are RSA and Diffie-Hellmann methods and the digital signature algorithm DSA based thereon.
In jüngerer Zeit ist die Elliptische Kurvenkryptographie (engl. Elliptic Curve Cry- pography, ECC) verstärkt entwickelt worden. Der Vorteil der ECC gegenüber den anderen genannten Verfahren liegt darin, dass kürzere Schlüssel verwendet werden können, ohne die Sicherheit der Verschlüsselung zu reduzieren. Zusätzlich sind ECC-Operationen schneller als solche des RSA-Verfahrens. Eine Ein- führung in die Elliptische Kurvenkryptographie ist im Internet unter der Seite http://www.deviceforge.com/articles/AT4234154468.html veröffentlicht.More recently, Elliptic Curve Cryptography (ECC) has been increasingly developed. The advantage of ECC over the other methods mentioned is that shorter keys can be used without reducing the security of the encryption. In addition, ECC operations are faster than those of the RSA method. An introduction to elliptic curve cryptography has been published on the Internet at http://www.deviceforge.com/articles/AT4234154468.html.
Die Verschlüsselung bei der ECC beruht auf der Berechnung eines Produkts zweier Operanden, das als „kP" bezeichnet wird. Dabei ist P ein Punkt auf einer elliptischen Kurve (engl. Elliptic Curve, EC) und k ist eine große Zahl. Die „kP"- Multiplikation basiert auf der Punkt-Verdopplung und der Punkt-Addition. Alle EC-
Punkt-Operationen basieren auf Addition, Subtraktion, Quadrierung, Multiplikation und Division in einem ausgewählten Galois-Feld (GF).The ECC encryption is based on the calculation of a product of two operands called "kP" where P is a point on an elliptic curve (EC) and k is a large number. - Multiplication is based on the point doubling and the point addition. All EC Point operations are based on addition, subtraction, squaring, multiplication and division in a selected Galois field (GF).
Hardwarebeschleuniger für Kryptographie-Operationen mit öffentlichen Schlüsseln sind ideale Mittel, um die Berechnungszeit und den Energieverbrauch zu reduzieren. Eine direkte Umsetzung kryptographischer Operationen führt jedoch zu einem relativ großen Flächenbedarf auf einem Chip. Dies erschwert die Anwendung von Hardwarebeschleunigern unter wirtschaftlichen Gesichtspunkten. Die Randbedingungen des Designs von Hardwarebeschleunigern sind daher die benötige Berechnungszeit, der Energieverbrauch sowie der Flächenbedarf.Hardware accelerators for public-key cryptography operations are ideal tools for reducing computation time and energy consumption. However, a direct implementation of cryptographic operations leads to a relatively large space requirement on a chip. This complicates the application of hardware accelerators from an economic point of view. The boundary conditions of the design of hardware accelerators are therefore the required calculation time, the energy consumption and the space requirement.
2. Stand der Technik2. State of the art
Nachfolgend werden bekannte Verfahren zur Polynom-Multiplikation in einer po- lynomialen Basis beschrieben. Hierzu wird zunächst die Polynom-Multiplikation allgemein beleuchtet und anschließend werden bekannte Verfahren zur Beschleunigung der Polynom-Multiplikation erläutert.Hereinafter, known methods for polynomial multiplication in a polynomial basis will be described. For this purpose, first the polynomial multiplication is generally illuminated and then known methods for the acceleration of the polynomial multiplication are explained.
2.1 Polynom-Multiplikation2.1 polynomial multiplication
In einem Galois-Feld GF(2n) sind Addition und Subtraktion XOR-Operationen. Deshalb und zum einfacheren Verständnis der Formeln ist die gewöhnliche Dar-In a Galois field GF (2 n ), addition and subtraction are XOR operations. Therefore, and for easier understanding of the formulas, the common
H-I H-IH-I H-I
Stellung von Polynomen A(x) = £a,x' hier abgeändert in A(x) = @a,x' Im Rah-Position of polynomials A (x) = £ a, x 'modified here in A (x) = @ a, x' In the frame
I=O (=0 men dieser Anmeldung ist die XOR-Operation als „Θ" gekennzeichnet. Das Sym- bol „+" bezeichnet immer eine gewöhnliche Addition.I = O (= 0 men of this application, the XOR operation is marked as "Θ." The symbol "+" always denotes an ordinary addition.
Das Produkt zweier PolynomeThe product of two polynomials
H-I H-IH-I H-I
A(x) = @ a,x' und B(x) = @b,x' ι=0 ι=0
ist das Polynom C(x) = A(x) ■ B(x) = 0 cfx' (1)A (x) = @ a, x 'and B (x) = @ b, x' ι = 0 ι = 0 is the polynomial C (x) = A (x) ■ B (x) = 0 c f x '(1)
I=OI = O
wobei C, = ■b,,d. h.: k+l=ιwhere C, = ■ b, ie: k + l = ι
C0 = uo-bo C 0 = u o -b o
C1 = uvb0®u0-bx C 1 = u v b 0 ®u 0 -b x
c„_L =an_ι -bo®an_2 -bγ ®...®a0 -bH_γ c "_ L = a n _ ι o -b ®ã n _ 2 -b γ ® ... ®ã 0 b _ H γ
Cin-3 =a„-ι -b„_2 ®a„_2 -bn_γ Ci n - 3 = a "-ι -b" _ 2 ®ã "_ 2 _ n -b γ
C2n-2 =an-l '"n-Y C 2n-2 = a nl ' "nY
Eine direkte Implementierung von Formel (1) erfordert n2 partielle Multiplikationen und (n-1)2 XOR-Operationen partieller Produkte, um die Koeffizienten c, zu berechnen. Alle Operanden in Formel (1) sind nur ein Bit lang. Bei Verwendung von EC B-233 sind beide Polynome A(x) und B(x) 233 Bit lang. Das bedeutet, dass insgesamt 2332 Ein-Bit partielle Multiplikationen und 2322 XOR-Operationen erforderlich sind.A direct implementation of formula (1) requires n 2 partial multiplications and (n-1) 2 XOR operations of partial products to calculate the coefficients c i. All operands in formula (1) are only one bit long. When using EC B-233, both polynomials A (x) and B (x) are 233 bits long. This means that a total of 233 2 one-bit partial multiplications and 232 2 XOR operations are required.
2.2 Karatsuba-basierte Verfahren zur Polynom-Multiplikation2.2 Karatsuba-based polynomial multiplication method
Für eine Polynom-Multiplikation mit dem ursprünglichen Karatsuba-Verfahren müssen beide Operanden in zwei gleich lange Teile fragmentiert werden. Wenn die Länge n der Operanden ungerade ist, müssen sie mit einer führenden „0" ergänzt werden. Bezeichnet man mit aι das i-te Bit und als a1 das i-te Segment des Operanden A(x), so können die Operanden wie folgt dargestellt werden:For a polynomial multiplication with the original Karatsuba method, both operands must be fragmented into two equal parts. When the length n of the operands is odd, they must be "0" to be supplemented with a leading. Denoting with aι the i-th bit, and as a 1, the i-th segment of operand A (x), so can the operands as follows:
A(x) = an_x...anan ...aιa0=an_ι...an -x2 ®an ...U1U0 =A (x) = a n _ x ... a n a n ... a ι a 0 = a n _ ι ... a n -x 2 ®a n ... U 1 U 0 =
~2 T1 ~2 T1 (2) n
Das Polynom B(x) kann auf die selbe Weise dargestellt werden. Karatsubas Formel für das Produkt C(x)=A(x)-B(x) ist ~ 2 T 1 ~ 2 T 1 (2) n The polynomial B (x) can be represented in the same way. Karatsuba's formula for the product C (x) = A (x) -B (x)
nn
C(x) = a°b° © [α V © aΨ © (α° © aι)(b° © b1)]- x2 © aΨ ■ x" (3)C (x) = a ° b ° © [α V © aΨ © (α ° © a ι ) (b ° © b 1 )] - x 2 © aΨ ■ x "(3)
In der Veröffentlichung Bailey, D. V.; Paar, C: Efficient Arithmetic in Finite Field Extensions with Application in Elliptic Curve Cryptography. Journal of Cryptology, vol. 14, no. 3, 153-176. 2001 wird ein Verfahren für die Anwendung von Karatsubas Idee vorgeschlagen. Nachfolgend wird dieses Verfahren als Baileys Verfahren bezeichnet. In diesem Verfahren werden die Operanden in drei Teile geteilt.. Baileys Verfahren erfordert sechs partielle Multiplikationen von n/3-Bit lan- gen Operanden. Dieses Verfahren kann mit der ursprünglichen Karatsuba-For- mel für solche Operanden kombiniert werden, deren Länge durch sechs teilbar ist.In the publication Bailey, D. V .; Pair, C: Efficient Arithmetic in Finite Field Extensions with Application in Elliptic Curve Cryptography. Journal of Cryptology, vol. 14, no. 3, 153-176. In 2001, a procedure for the application of Karatsuba's idea is proposed. Hereinafter, this method will be referred to as Bailey's method. In this procedure, the operands are divided into three parts. Bailey's method requires six partial multiplications of n / 3-bit long operands. This method can be combined with the original Karatsuba formula for such operands whose length is divisible by six.
Die US 2004/0109561 A1 beschreibt ein Verfahren zur Multiplikation von Zahlen über einem Galois-Feld GF (2m). Bei diesem Verfahren wird ein rekursiver Algo- rithmus zur Zerlegung eines Produktes in eine Anzahl Subprodukte verwendet, bis die verbleibende Größe ausreicht, einen nicht-rekursiven Algorithmus zur Vervollständigung der Multiplikation durchzuführen. Nachteil des in diesem Dokument beschriebenen Verfahrens ist seine relativ geringe Flächeneffizienz.US 2004/0109561 A1 describes a method for multiplying numbers over a Galois field GF (2 m ). In this method, a recursive algorithm is used to decompose a product into a number of subproducts until the remaining size is sufficient to perform a non-recursive algorithm to complete the multiplication. Disadvantage of the method described in this document is its relatively low area efficiency.
3. Technisches Problem der Erfindung3. Technical problem of the invention
Das der Erfindung zugrunde liegende technische Problem ist es, ein Verfahren und eine Vorrichtung zur Polynom-Multiplikation anzugeben, die eine flächeneffiziente Realisierung elementarer mathematischer Operationen ermöglichen.The technical problem underlying the invention is to provide a method and a device for polynomial multiplication, which allow an area-efficient realization of elementary mathematical operations.
4. Zusammenfassung der Erfindung4. Summary of the invention
Gemäß einem ersten Aspekt wird ein Verfahren zum Berechnen einer Polynom- Multiplikation angegeben, mit den Schritten:
H-IAccording to a first aspect, a method for calculating a polynomial multiplication is specified, with the steps: HI
Bereitstellen von Koeffizienten a„ b, zweier Polynome A(x) = @a,x' undProviding coefficients a "b, two polynomials A (x) = @ a, x 'and
;=0= 0
H-IHI
B(x) = @btx' , wobei " 0 " eine Addition oder eine XOR-Operation kenn-B (x) = @b t x ', where "0" indicates an addition or an XOR operation.
;=0 zeichnet und a„ b, binäre Ein-Bit-Werte sind, d. h . 0 oder 1 , sowie x' = 1 ist,; = 0 and a "b, are binary one-bit values, i. H . 0 or 1, and x '= 1,
Auswählen von entweder zwei oder mehr als zwei Fragmenten, eines von jedem Polynom, als Operanden für eine partielle Multiplikation,Selecting either two or more than two fragments, one from each polynomial, as operands for a partial multiplication,
partielles Multiplizieren der ausgewählten Fragmente, um ein partielles Produkt zu erhalten,partially multiplying the selected fragments to obtain a partial product
wobei der Auswählschritt iterativ nach einem vordefinierten Auswahlplan durchgeführt wird, und wobei Fragmente verwendet werden, bei denen der jeweilige Multiplizierschritt zur Bildung eines partiellen Produkts jeweiligerwherein the selecting step is performed iteratively according to a predefined selection plan, and using fragments in which the respective multiplying step results in the formation of a partial product
Fragmente lediglich einen Berechnungsschritt erfordert,Fragments requires only one calculation step,
Akkumulieren der partiellen Produkte, wobei das Akkumulieren entsprechend einem vordefinierten Akkumulationsplan zur Akkumulation eines aktuell am Ausgang des partiellen Multiplizierers anliegenden partiellen Pro- duktes mit einem oder mehreren Termen eines Iterationsschritt für Iterationsschritt weiterentwickelten Ergebnispolynoms gesteuert wird.Accumulating the partial products, wherein the accumulation is controlled in accordance with a predefined accumulation plan for accumulation of a partial product currently present at the output of the partial multiplier with one or more terms of an iteration step further developed iteration step result polynomial.
Die erfindungsgemäße iterative Anwendung der Auswähl- und Multiplizier- Schritte ermöglicht eine Hardware-Implementierung mit einem reduzierten Flächenbedarf und Energieverbrauch. Dies gilt insbesondere im Vergleich mit einer Hardware-Implementierung eines rekursiven Algorithmus wie er in der US2004/0109561 A1 beschrieben ist. Beispielsweise beträgt die Chipfläche, die für die Berechnung des Produkts von zwei 233 Bit langen Operanden benötigt wird, 2,18 mm2 (2-Segment-Aufbau). Diese Fortschritte werden lediglich mit einer geringfügig erhöhten Berechnungszeit bezahlt.
Eine zusätzliche Flächeneinsparung wird durch die erfindungsgemäße Verwendung eines vordefinierten Akkumulationsplans erzielt, der die Verwendung einer steuersignal-basierten Akkumulationssteuerung in einem einfachen Schaltsystem anstelle komplizierter Datenpfade zwischen hartverdrahteten Bauteilen des PoIy- nom-Multiplizierers ermöglicht. Hier wurde am Beispiel eines erfindungsgemäßen iterativen Karatsuba-Multiplizierers für 233 Bit ein Flächenbedarf von nur 1 ,52 mm2 (4-Segment-Aufbau) erzielt, wobei in diesem Fall die Anzahl der Taktzyklen durch den Einsatz des Akkumulationsplanes nicht erhöht wird.The inventive iterative application of the selection and multiplication steps enables a hardware implementation with a reduced footprint and power consumption. This applies in particular in comparison with a hardware implementation of a recursive algorithm as described in US2004 / 0109561 A1. For example, the chip area needed to calculate the product of two 233-bit operands is 2.18 mm 2 (2-segment layout). These advances are paid only with a slightly increased calculation time. An additional area saving is achieved by the use according to the invention of a predefined accumulation plan, which enables the use of a control signal-based accumulation control in a simple switching system instead of complicated data paths between hard-wired components of the polynomial multiplier. Here, an area requirement of only 1.52 mm 2 (4-segment structure) was achieved on the example of an inventive iterative Karatsuba multiplier for 233 bits, in which case the number of clock cycles is not increased by the use of the accumulation plan.
Für die Standard-Anwendung der Karatsuba-Methode werden dagegen 6,2 mm2 benötigt. Die erfindungsgemäße Lösung reduziert auch den Energieverbrauch um 30 % gegenüber den bekannten vollständig rekursiven Lösungsansätzen.For the standard application of the Karatsuba method, however, 6.2 mm 2 are needed. The solution according to the invention also reduces the energy consumption by 30% compared to the known completely recursive solution approaches.
Das erfindungsgemäße Verfahren entfaltet seine Vorteile insbesondere bei einer Hardware-Implementierung. Es kann jedoch auch in Form von Software implementiert werden. Eine Software- Implementierung des erfindungsgemäßen Ver- fahrens hat gegenüber bekannten Software-Lösungen zur Polynom-Multiplikation den Vorteil einer besseren Performanz im Hinblick auf die Berechnung des Polynom-Produktes.The inventive method develops its advantages, in particular in a hardware implementation. However, it can also be implemented in the form of software. A software implementation of the method according to the invention has the advantage of better performance with respect to the calculation of the polynomial product compared to known software solutions for polynomial multiplication.
Das erfindungsgemäße Verfahren ermöglicht zudem gegenüber bekannten Verfahren eine erhöhte Flexibilität.The inventive method also allows over known methods increased flexibility.
Fragmente von Polynomen werden in der nachfolgenden Beschreibung mit gleicher Bedeutung gelegentlich auch als Segmente bezeichnet. Anstelle von Fragmentierung wird auch von Segmentierung gesprochen.Fragments of polynomials are sometimes referred to as segments in the following description of like meaning. Instead of fragmentation is also spoken of segmentation.
In einem bevorzugten Ausführungsbeispiel des erfindungsgemäßen Verfahrens wird der Akkumulierungsschritt parallel mit der iterativen Fragmentierung durch- geführt und umfasst einen partiellen Akkumulierungsschritt, der nach einer Iteration eines Multiplizierschrittes durchgeführt wird.
In einem weiteren bevorzugten Ausführungsbeispiel des erfindungsgemäßen Verfahrens beruhen die Auswähl-, Multiplizier- und Akkumulationsschritte auf einem Karatsuba-Verfahren zur Durchführung einer Polynom-Multiplikation. Ein Beispiel der Anwendung des Karatsuba- Verfahrens wird weiter unten im Zusam- menhang der Beschreibung der Figuren 1 und 2 anhand der Formeln (3) bis (8) näher erläutert.In a preferred embodiment of the method according to the invention, the accumulation step is carried out in parallel with the iterative fragmentation and comprises a partial accumulation step which is carried out after an iteration of a multiplication step. In a further preferred embodiment of the method according to the invention, the selection, multiplication and accumulation steps are based on a Karatsuba method for carrying out a polynomial multiplication. An example of the application of the Karatsuba method will be explained in more detail below in connection with the description of FIGS. 1 and 2 with reference to the formulas (3) to (8).
Bei einem weiteren Ausführungsbeispiel werden vor dem Auswählschritt der Auswählplan und der Akkumulationsplan entsprechend einer jeweiligen Länge der Polynome und einer vorgegebenen Wortbreite eines zur Durchführung des partiellen Multiplizierschrittes verwendeten partiellen Multiplizierers aus einer Vielzahl abgespeicherter Auswahl- und Akkumulationspläne ausgewählt. Die Länge der Teil-Polynome entspricht der Länge der am Eingang des Polynom- Multiplizierers anlegbaren Datenworte, die mit einander entsprechend einer Polynommultiplikation zu multiplizieren sind. Dieses Ausführungsbeispiel profitiert besonders von der erfindungsgemäß vorgegebenen Flexibilität, so dass ein und dieselbe Hardware für unterschiedliche Polynomlängen verwendet werden kann.In another embodiment, prior to the selecting step, the selection schedule and the accumulation schedule are selected from a plurality of stored selection and accumulation schedules corresponding to a respective length of the polynomials and a predetermined word width of a partial multiplier used to perform the partial multiplying step. The length of the partial polynomials corresponds to the length of the data words which can be applied to the input of the polynomial multiplier and which are to be multiplied by one another according to a polynomial multiplication. This embodiment particularly benefits from the flexibility specified according to the invention, so that one and the same hardware can be used for different polynomial lengths.
Gemäß einem zweiten Aspekt der Erfindung wird ein Verfahren zur Verschlüsselung von Daten angegeben, das einen Schritt der Berechnung eines Produktes zweier Polynome umfasst. Erfindungsgemäß erfolgt die Berechnung des Produk- tes der Polynome gemäß dem Verfahren des ersten Aspektes der Erfindung oder nach einem der beschriebenen Ausführungsbeispiele.According to a second aspect of the invention, there is provided a method of encrypting data comprising a step of computing a product of two polynomials. According to the invention, the product of the polynomials is calculated according to the method of the first aspect of the invention or according to one of the described embodiments.
Vorzugsweise wird die Verschlüsselung der Daten mit Hilfe der Elliptischen Kurvenkryptographie durchgeführt. Das heißt: die Verschlüsselung der Daten wird mit Hilfe einer elliptischen Kurve über einem Galois-Feld durchgeführt. Dabei wird bevorzugt eine der folgenden Kurven verwendet: die Kurve B-163 über dem Galois-Feld GF(2163) oder die Kurve B-233 über dem Galois-Feld GF(2233), oder die Kurve B-283 über dem Galois-Feld GF(2283) oder die Kurve B-409 über dem Galois-Feld GF(2409), oder die Kurve B-571 über dem Galois-Feld GF(2571), oder die Kurve K-163 über dem Galois-Feld GF(2163) oder die Kurve K-233 über dem Ga- lois-Feld GF(2233), oder die Kurve K-283 über dem Galois-Feld GF(2283) oder die
Kurve K-409 über dem Galois-Feld GF(2409), oder die Kurve K-571 über dem Galois-Feld GF(2571)Preferably, the encryption of the data is performed by elliptic curve cryptography. That is, the encryption of the data is performed by means of an elliptic curve over a Galois field. One of the following curves is preferably used: the curve B-163 over the Galois field GF (2 163 ) or the curve B-233 over the Galois field GF (2 233 ), or the curve B-283 over the Galois Field GF (2 283 ) or the curve B-409 over the Galois field GF (2 409 ), or the curve B-571 over the Galois field GF (2 571 ), or the curve K-163 over the Galois Field GF (2 163 ) or the curve K-233 over the glocal field GF (2 233 ), or the curve K-283 over the Galois field GF (2 283 ) or the Curve K-409 over the Galois field GF (2 409 ), or the curve K-571 over the Galois field GF (2 571 )
Gemäß einem dritten Aspekt der Erfindung wird ein Polynom-Multiplizierer bereitgestellt , mitAccording to a third aspect of the invention, there is provided a polynomial multiplier, comprising
einer Auswähleinheit, die ausgebildet ist,a selection unit that is designed
H-IHI
Koeffizienten a„ b, von zwei Polynomen A(x) = (+) a,x undCoefficients a "b, of two polynomials A (x) = (+) a, x and
;=0= 0
H-IHI
B(x) = @btx' zu empfangen, wobei " 0 " eine Addition oder eineB (x) = @b t x ', where "0" is an addition or a
;=0= 0
XOR-Operation bezeichnet, a, und b, Ein-Bit-Binär-Werte sind, d. h. 0 oder 1 , und x' = 1 , undXOR operation, a, and b, are one-bit binary values, i. H. 0 or 1, and x '= 1, and
- in einem Arbeitsschritt entweder zwei oder mehr als zwei Fragmente, eines von jedem Polynom, mit einer solchen Länge als Operanden für eine partielle Multiplikation auszuwählen und an ihrem Ausgang bereitzustellen, dass die partielle Multiplikation lediglich einen Berechnungsschritt erfordert,to select either one or two fragments, one of each polynomial, having such a length as operands for a partial multiplication and to provide at their output in a working step that the partial multiplication requires only one calculation step,
wobei die Auswähleinheit zusätzlich ausgebildet ist, die Fragmente in aufeinanderfolgenden Arbeitsschritten iterativ nach einem vordefinierten Auswahlplan auszuwählen,wherein the selection unit is additionally designed to iteratively select the fragments in successive operating steps according to a predefined selection plan,
mindestens ein partieller Multiplizierer, der mit der Auswähleinheit verbunden ist und der ausgebildet ist, in einem Iterationsschritt eine partielle Multi- plikation der entweder zwei oder der mehr als zwei Operanden durchzuführen und das erhaltene partielle Produkt an seinem Ausgang bereitzustellenat least one partial multiplier connected to the selection unit and configured to carry out a partial multiplication of the two or more than two operands in an iteration step and to provide the resulting partial product at its output
eine Akkumulationseinheit, die mit dem partiellen Multiplizierer verbunden ist und die ausgebildet ist, das vollständige Polynom-Produkt durch eine Iterationsschritt für Iterationsschritt vervollständigte Akkumulation der partiel-
len Produkte zu berechnen, die sie vom partiellen Multiplizierer empfangen hat,an accumulation unit, which is connected to the partial multiplier and which is designed to amplify the complete polynomial product by an iteration step for iteration step completed accumulation of the partial multiplier. calculate the products received from the partial multiplier,
eine Akkumulations-Steuereinheit, die mit dem partiellen Multiplizierer und der Akkumulationseinheit verbunden ist, und die ausgebildet ist, je nach ak- tuellem Iterationsschritt ein Steuersignal auszugeben, das die Akkumulationseinheit entsprechend einem vorbestimmten Akkumulationsplan zur Akkumulation eines aktuell am Ausgang des partiellen Multiplizierers anliegenden partiellen Produktes mit einem oder mehreren Termen eines Iterationsschritt für Iterationsschritt weiterentwickelten Ergebnispolynoms in- struiert.an accumulation control unit which is connected to the partial multiplier and the accumulation unit and which is designed to output a control signal depending on the current iteration step, the accumulation unit corresponding to a predetermined accumulation plan for the accumulation of a partial product currently present at the output of the partial multiplier is constructed with one or more terms of an iteration step for iteration step refined result polynomial.
Der Polynom-Multiplizierer gemäß dem zweiten Aspekt der Erfindung zeichnet sich durch einen verringerten Flächenbedarf und einen verringerten Energieverbrauch bei gegenüber dem Stand der Technik erhöhter Flexibilität im Hinblick auf die Wortlänge der zu multiplizierenden Datenworte aus. Letzteres wird durch die Verwendung eines programmierbaren Akkumulationsplans durch die Akkumulations-Steuereinheit bewirkt.The polynomial multiplier according to the second aspect of the invention is characterized by a reduced area requirement and a reduced power consumption with increased flexibility compared to the prior art with regard to the word length of the data words to be multiplied. The latter is effected by the use of a programmable accumulation schedule by the accumulation control unit.
In einem Ausführungsbeispiel des erfindungsgemäßen Polynom-Multiplizierers enthält die Akkumulationseinheit eine Anzahl XOR-Gatter, wobei jedes XOR- Gatter an einem Eingang mit einem oder mehreren Termen des entstehenden Ergebnispolynoms und an einem anderen Eingang mit dem partiellen Multiplizierer verbunden ist. Bevorzugt hat hierbei die Akkumulations-Steuereinheit eine Anzahl Steuer-Logikgatter, die der Anzahl der XOR-Gater der Akkumulationseinheit entspricht. Jedes Steuer-Logikgatter ist einem jeweiligen XOR-Gatter zugeordnet. Die Akkumulations-Steuereinheit ist ausgebildet, in einem jeweiligen Ite- rationsschritt einen vorbestimmten Satz Steuersignale zu erzeugen und an die Steuer-Logikgatter anzulegen, wobei ein jeweiliges Steuersignal festlegt, ob ein jeweiliges XOR-Gatter im aktuellen Iterationsschritt zur Akkumulation aktiviert ist oder nicht. Dieses Ausführungsbeispiel ermöglicht eine besonders einfache, flächensparende Ausführung der Akkumulations-Steuereinheit. Ein aktueller Akku- mulationsschritt wird beispielsweise durch ein Steuerwort gesteuert, das dem
Satz Steuersignale entspricht. Jedes Steuerbit des Steuerwortes entspricht einem Steuersignal, und steuert über ein jeweiliges Steuer-Logikgatter die Aktivierung eines bestimmten XOR-Gatters im jeweiligen Akkumulationsschritt. Dabei sind die Steuer-Logikgatter vorzugsweise UND-Gatter mit zwei Eingängen, von denen ein erster Eingang mit einer logischen Eins beaufschlagt ist und ein zweiter Eingang mit einem jeweiligen Steuersignal beaufschlagt ist.In one embodiment of the polynomial multiplier according to the invention, the accumulation unit contains a number of XOR gates, each XOR gate being connected at one input to one or more terms of the resulting result polynomial and at another input to the partial multiplier. In this case, the accumulation control unit preferably has a number of control logic gates that corresponds to the number of XOR gates of the accumulation unit. Each control logic gate is associated with a respective XOR gate. The accumulation control unit is designed to generate a predetermined set of control signals in a respective iteration step and to apply them to the control logic gates, wherein a respective control signal determines whether or not a respective XOR gate is activated for accumulation in the current iteration step. This embodiment enables a particularly simple, space-saving design of the accumulation control unit. A current accumulation step is controlled, for example, by a control word that corresponds to the Set of control signals corresponds. Each control bit of the control word corresponds to a control signal, and controls the activation of a particular XOR gate in the respective accumulation step via a respective control logic gate. The control logic gates are preferably AND gates with two inputs, of which a first input is applied to a logical one and a second input is acted upon by a respective control signal.
In einem weiteren bevorzugten Ausführungsbeispiel des erfindungsgemäßen Polynom-Multiplizierers ist der partielle Multiplizierer ausgebildet, in einem Taktzyklus einen Berechnungsschritt einer partiellen Multiplikation durchzuführen.In a further preferred embodiment of the polynomial multiplier according to the invention, the partial multiplier is designed to perform a partial multiplication calculation step in one clock cycle.
Vorzugsweise wird nicht nur die Akkumulation durch eine programmierbare Steuereinheit kontrolliert, sondern auch die Auswahl der Fragmente. Ein Ausführungsbeispiel hat eine Auswahl-Steuereinheit, die mit der Auswähleinheit verbunden und ausgebildet ist, je nach aktuellem Iterationsschritt Steuersignal auszugeben, das die Auswähleinheit entsprechend dem vorbestimmten Auswahlplan zur Auswahl eines jeweiliges Fragments vorbestimmter Größe von jedem Polynom instruiert. Die Hardware-Implementierung kann in ähnlicher Weise wie bei der Akkumulations-Steuereinheit mit Steuer-Logikgattern erfolgen, so dass wiederum lediglich ein entsprechender Satz Steuersignale abgegeben werden muss, was wiederum Datenpfade vereinfacht und verkürzt und so die Flächeneffizienz erhöht.Preferably, not only the accumulation is controlled by a programmable controller, but also the selection of the fragments. One embodiment has a selection control unit connected to the selection unit and configured to output, according to the current iteration step, control signal instructing the selection unit to select a respective predetermined size fragment of each polynomial in accordance with the predetermined selection plan. The hardware implementation may be similar to the accumulation controller with control logic gates, such that in turn only a corresponding set of control signals must be delivered, which in turn simplifies and shortens data paths, thereby increasing area efficiency.
Auswahl-Steuereinheit und Akkumulations-Steuereinheit sind vorzugsweise in einer einzigen Multiplikations-Steuereinheit integriert.Selection control unit and accumulation control unit are preferably integrated in a single multiplication control unit.
Bevorzugt sind die Akkumulations-Steuereinheit und die Auswahl-Steuereinheit ausgebildet, auf den Empfang von Polynomen am Eingang der Auswähleinheit hin den Auswählplan und den Akkumulationsplan entsprechend einer jeweiligen Länge der Polynome und einer vorgegebenen Wortbreite des partiellen Multiplizierers aus einer Vielzahl abgespeicherter Auswahl- und Akkumulationspläne auszuwählen. Dieses Ausführungsbeispiel nutzt den Vorteil der hohen Flexibilität des Polynom-Multiplizierers.
In einem weiteren bevorzugten Ausführungsbeispiel des erfindungsgemäßen Polynom-Multiplizierers ist der partielle Multiplizierer ausgebildet, eine partielle Multiplikation zweier Operanden, die am Ausgang der Auswähleinheit bereitgestellt werden, mit Hilfe einer Karatsuba-Formel für ein partielles Produkt C(x)=A(x)-B(x) durchzuführen, entsprechend dem TypPreferably, the accumulation control unit and the selection control unit are arranged to select, on receipt of polynomials at the input of the selection unit, the selection plan and the accumulation plan corresponding to a respective length of the polynomials and a predetermined word width of the partial multiplier from a plurality of stored selection and accumulation schedules , This embodiment takes advantage of the high flexibility of the polynomial multiplier. In a further preferred embodiment of the polynomial multiplier according to the invention, the partial multiplier is designed to perform a partial multiplication of two operands provided at the output of the selection unit by means of a Karatsuba formula for a partial product C (x) = A (x) - B (x), according to the type
nn
C(x) = a°b° © [α V © aΨ © (α° © aι)(b° © b1)]- x1 © aιbι ■ x" ,C (x) = a ° b ° © [α V © aΨ © (α ° © a ι ) (b ° © b 1 )] - x 1 © a ι b ι ■ x ",
und das partielle Produkt an seinem Ausgang bereitzustellen.and to provide the partial product at its exit.
Ein bevorzugtes Ausführungsbeispiel des Polynom-Multiplizierers ist in Form eines integrierten Schaltkreises ausgebildet.A preferred embodiment of the polynomial multiplier is formed in the form of an integrated circuit.
Ein vierter Aspekt der Erfindung betrifft eine Verschlüsselungseinheit zur Verschlüsselung von Daten unter Durchführung einer Polynom-Multiplikation, mit einem Dateneingang für unverschlüsselte Daten, einem mit dem Dateneingang verbundenen Polynom-Multiplizierer gemäß dem dritten Aspekt der Erfindung oder eines seiner Ausführungsbeispiele, und einem mit dem Polynom- Multiplizierer verbundenen Datenausgang zur Ausgabe der verschlüsselten Daten.A fourth aspect of the invention relates to an encryption unit for encrypting data performing a polynomial multiplication, a data input for unencrypted data, a polynomial multiplier connected to the data input according to the third aspect of the invention or one of its embodiments, and one with the polynomial - Multiplier connected data output to output the encrypted data.
Ein bevorzugtes Ausführungsbeispiel der Verschlüsselungseinheit ist zur Verschlüsselung der Daten mit Hilfe der Elliptischen Kurvenkryptographie ausgebildet, das heißt insbesondere, zur Verschlüsselung der am Dateneingang anlie- genden Daten mit Hilfe einer elliptischen Kurve über einem Galois-Feld. Hierzu kann eine der bereits im Zusammenhang mit dem Verfahren des zweiten Aspektes der Erfindungen beschriebenen Kurven verwendet werden.A preferred embodiment of the encryption unit is designed to encrypt the data by means of elliptic curve cryptography, that is to say in particular to encrypt the data present at the data input by means of an elliptic curve over a Galois field. For this purpose, one of the curves already described in connection with the method of the second aspect of the invention may be used.
Die Verschlüsselungseinheit kann in Form eines integrierten Schaltkreises oder in Form eines ausführbaren Computerprogramms implementiert werden.
Einen weiteren Aspekt der Erfindung bildet daher ein Datenträger mit einem ausführbaren Programm, das ein Verfahren zur Verschlüsselung von Daten gemäß dem zweiten Aspekt der Erfindung oder eines seiner Ausführungsbeispiele implementiert.The encryption unit may be implemented in the form of an integrated circuit or in the form of an executable computer program. A further aspect of the invention therefore forms a data carrier with an executable program which implements a method for encrypting data according to the second aspect of the invention or one of its embodiments.
5. Kurzbeschreibung der Figuren5. Brief description of the figures
Im Folgenden werden die Erfindung und weitere bevorzugte Ausführungsbeispiele unter Heranziehung der Figuren im Einzelnen erläutert. Es zeigen:In the following, the invention and further preferred embodiments will be explained in detail with reference to the figures. Show it:
Figur 1 die Struktur eines Ausführungsbeispiels eines Polynom-Multiplizierers1 shows the structure of an embodiment of a polynomial multiplier
Figur 2 eine detaillierte Darstellung eines Ausführungsbeispiels eines Verfah- rens zur Polynommultiplikation am Beispiel einer 4-Wort Karatsuba-FIG. 2 shows a detailed representation of an exemplary embodiment of a method for polynomial multiplication using the example of a 4-word karatsuba
Polynom-Multiplikation im GF (2m) undPolynomial multiplication in GF (2 m ) and
Figur 3 eine am Datenfluss orientierte Block-Darstellung eines Ausführungsbeispiels eines Verfahrens zur DatenverschlüsselungFIG. 3 shows a block diagram of an embodiment of a method for data encryption oriented on the data flow
Figur 4 ein Blockdiagramm eines Ausführungsbeispiels-Verschlüsselungs- einheitFIG. 4 shows a block diagram of an embodiment encryption unit
Figur 5 ein Blockdiagramm eines weiteren Ausführungsbeispiels eines PoIy- nom-Multipliziers gemäß der Erfindung.FIG. 5 shows a block diagram of a further exemplary embodiment of a polarity multiplier according to the invention.
Figur 6 eine schematische Ansicht des partiellen Multiplizierers und der Akkumulations-Einheit der Figur 5 mit näheren Details.Figure 6 is a schematic view of the partial multiplier and the accumulation unit of Figure 5 in more detail.
6. Detaillierte Beschreibung von Ausführungsbeispielen6. Detailed description of embodiments
Zunächst wird die Erfindung anhand eines konkreten Beispiels erläutert. Dabei wird auf die Figuren 1 und 2 parallel Bezug genommen.
Figur 1 zeigt die Struktur eines Ausführungsbeispiels eines Polynom- Multiplizierers. Ein Flussdiagramm eines Ausführungsbeispiels des erfindungsgemäßen Verfahrens, bei dem beispielhaft eine Vier-Wort iterative Karatsuba- Polynom-Multiplikation in GF(2m) verwendet wird, ist in Figur 2 dargestellt.First, the invention will be explained with reference to a concrete example. Reference is made to FIGS. 1 and 2 in parallel. Figure 1 shows the structure of an embodiment of a polynomial multiplier. A flow diagram of an exemplary embodiment of the method according to the invention, in which a four-word iterative Karatsuba polynomial multiplication in GF (2 m ) is used by way of example, is shown in FIG.
Die nachfolgende Beschreibung verwendet als Beispiel die Kurve B-233 über einem Galois-Feld GF(2233), welche durch das National Institute of Standards and Technology der Vereinigten Staaten von Amerika (NIST) empfohlen ist und zur Implementierung als Hardware besonders geeignet ist.The following description uses as an example the curve B-233 over a Galois field GF (2 233 ), which is recommended by the National Institute of Standards and Technology of the United States of America (NIST) and is particularly suitable for implementation as hardware.
Die elliptische Kurven-Kryptographie (engl. Elliptic Curve Cryptography, ECC) garantiert die selbe Sicherheit wie das bekannte Verfahren RSA, ermöglicht jedoch die Verwendung deutlich kürzerer Schlüssel. Zusätzlich sind ECC- Operationen schneller als solche des RSA-Verfahrens. Obwohl ECC weniger rechenintensiv ist als RSA, erfordert es relativ viel Energie und Zeit, um das Produkt von einer 233 Bit langen Zahl k und einem Punkt P mit zwei 233 Bit langen Koordinaten zu berechnen. Diese Operation wird, die als 'kP'"-Multiplikation bezeichnet. Dabei ist P ein Punkt auf einer elliptischen Kurve (engl. Elliptic Curve, EC) und k ist eine große Zahl. Die „kP"-Multiplikation kann mit Hilfe der „Double and Add" Methode (Punkt-Verdopplung und der Punkt-Addition) oder mit der Montgomery Methode berechnet werden.Elliptic Curve Cryptography (ECC) guarantees the same level of security as the well-known RSA method, but allows the use of significantly shorter keys. In addition, ECC operations are faster than those of the RSA method. Although ECC is less computationally intensive than RSA, it requires relatively much energy and time to compute the product of a 233-bit number k and a point P with two 233-bit coordinates. This operation is referred to as 'kP' 'multiplication, where P is a point on an elliptic curve (EC) and k is a large number.The' kP 'multiplication can be done using the' Double and Add "method (point doubling and point addition) or using the Montgomery method.
Unabhängig von der verwendeten Methode muss das Ergebnis der ,kP'-Multiplikation reduziert werden. Die Reduzierung wird unter Verwendung sogenannter irreduzibler Polynome durchgeführt und kann eine sehr aufwändige Operation im Galois-Feld GF(2m) sein. Das irreduzible Polynom für B-233 ist das Trinom: /W = X233 Θ / ΘI .Regardless of the method used, the result of the 'kP' multiplication must be reduced. The reduction is performed using so-called irreducible polynomials and can be a very elaborate operation in the Galois field GF (2 m ). The irreducible polynomial for B-233 is the trinomial: / W = X 233 Θ / ΘI.
Im Galois-Feld GF(2m) sind Addition und Subtraktion XOR-Operationen. Deshalb und zum einfacheren Verständnis der Formeln ist die gewöhnliche Darstellung n-l n-1 von Polynomen A(x) = £a,x' hier abgeändert in A(x) = @a,x' Im Rahmen dieserIn the Galois field GF (2 m ), addition and subtraction are XOR operations. Therefore, and for easier understanding of the formulas, the ordinary representation nl n-1 of polynomials A (x) = £ a, x 'is here modified in A (x) = @ a, x' In this context
;=0 /=0; = 0 / = 0
Anmeldung ist die XOR-Operation als „θ" gekennzeichnet. Das Symbol „+" be-
zeichnet immer eine gewöhnliche Addition. Die Division von Polynomen wird normaler Weise in zwei Schritten durchgeführt: zunächst wird das Inverse des Divisors mit Hilfe des irreduzieblen Polynoms identifiziert, und anschließend wird das Inverse mit dem Dividenden multipliziert.Logon, the XOR operation is marked as "θ". always draws an ordinary addition. The division of polynomials is normally done in two steps: first, the inverse of the divisor is identified using the irreducible polynomial, and then the inverse is multiplied by the dividend.
Der Vorteil der Montgomery Methode ist, dass maximal zweimal die Inverse des Produktes zur Reduktion berechnet werden muss. Dies wird in der Montgomery Methode durch eine größere Anzahl von Multiplikationen erreicht, die weniger Rechenaufwand erzeugen als das Berechnen der Inversen. Dies gilt insbesondere bei Verwendung des hier vorgeschlagenen effizienten Polynom-Multiplizierers.The advantage of the Montgomery method is that a maximum of twice the inverse of the product must be calculated for reduction. This is achieved in the Montgomery method by a larger number of multiplications, which generate less computational effort than computing the inverse. This applies in particular when using the efficient polynomial multiplier proposed here.
Ein Ansatzpunkt der vorliegenden Erfindung ist es, das ursprüngliche Karatsuba- Verfahren iterativ anzuwenden. Daher bezeichnen wir das erfindungsgemäße Verfahren auch als iteratives Karatsuba-Verfahren. Die wesentlichen Vorteile dieses Verfahrens sind:One approach of the present invention is to iteratively apply the original Karatsuba method. Therefore, we refer to the inventive method as iterative Karatsuba method. The main advantages of this process are:
- ein geringerer Flächenbedarf von Hardwarebeschleunigern aufgrund der Möglichkeit, partielle Multiplikationen seriell durchzuführena smaller footprint of hardware accelerators due to the ability to serially perform partial multiplications
- eine geringere Anzahl von XOR-Operationen im Vergleich mit der rekursiven Variante von Karatsubas Verfahren.- a lower number of XOR operations compared to the recursive variant of Karatsuba's method.
Die Karatsuba-Formel für das Produkt C(x)=A(x)-B(x) istThe Karatsuba formula for the product C (x) = A (x) -B (x)
nn
C(x) = a°b° © [α V © aΨ © (α° © aι)(b° © b1)]- x2 © aΨ ■ x" (3)C (x) = a ° b ° © [α V © aΨ © (α ° © a ι ) (b ° © b 1 )] - x 2 © aΨ ■ x "(3)
Erfindungsgemäß wird Karatsubas Formel iterativ angewendet, um die partiellen Produkte a'b1 zu berechnen. In diesem Falle sind insgesamt slog23 ~ ,y158 partielle Multiplikationen erforderlich, wobei s die Anzahl der Segmente ist. Die Anzahl der Segmente (s), in die die Operanden zerlegt werden müssen, wird durch die Länge der Eingangsworte des Multiplizierers bestimmt und kann vor der Berechnung
folgendermaßen bestimmt werden: s = Länge des Operanden / Wortlänge der Multiplizierers.According to the invention, Karatsuba's formula is iteratively applied to calculate the partial products a'b 1 . In this case a total of s log23 ~, y 158 partial multiplications are required, where s is the number of segments. The number of segments (s) into which the operands must be decomposed is determined by the length of the input words of the multiplier and may be before the calculation be determined as follows: s = length of the operand / word length of the multiplier.
Dieses Verfahren kann verwendet werden, um sowohl Software- als auch Hardware-Implementationen zu beschleunigen. In Software- Implementationen wird das Karatsuba- Verfahren gewöhnlich angewendet, bis beide Operanden die Länge eines Datenwortes haben.This method can be used to speed up both software and hardware implementations. In software implementations, the Karatsuba method is usually used until both operands are the length of a data word.
Nachfolgend wird das Prinzip der erfindungsgemäßen iterativen Anwendung von Karatsubas Formel anhand eines Beispiels erläutert, in dem die Operanden in vier Segmente aufgespalten sind. Zunächst wird Karatsubas Formel verwendet, um eine Formel für ein Produkt zu erhalten, in dem lediglich Ein-Segment lange Operanden für die partielle Multiplikation verwendet werden.The principle of the inventive iterative application of Karatsuba's formula will now be explained by way of example in which the operands are split into four segments. First, Karatsuba's formula is used to obtain a formula for a product using only one-segment long operands for partial multiplication.
Zu Beginn liegen jedoch zwei Operanden vor, von denen jeder 4n-Bit lang ist. Jeder Operand lässt sich in Form einer Summe zweier 2n-Bit langer Teile darstellen und zerlegen:Initially, however, there are two operands, each 4n-bits long. Each operand can be represented and decomposed in the form of a sum of two 2n-bit parts:
Das Ergebnis der Anwendung von Karatsubas Formel ist:The result of using Karatsuba's formula is:
C{x) = aιa° - bιb° ®C {x) = a ι a ° - b ι b ° ®
® [αV • bΨ ® a3a2 - b3b2 ® a13a02 • b13b02 ]• x2n (5)® [αV • bΨ ® a 3 a 2 - b 3 b 2 ® a 13 a 02 • b 13 b 02 ] • x 2n (5)
® a3a2 - b3b2 - x4n ® a 3 a 2 - b 3 b 2 - x 4n
wobeiin which
al3a02 = a13 - xn ® a02 = (aι ® a3) - xn ® (a° ® a2) =a l3 a 02 = a 13 - x n ® a 02 = (a ι ® a 3 ) - x n ® (a ° ® a 2 ) logo CNRS logo INIST
(6) (α1 • x" ® a°) ® (α3 • x" ® a2) = aιa° ® a3a2
und(6) (α 1 • x "® a °) ® (α 3 • x" ® a 2 ) = a ι a ° ® a 3 a 2 and
bl3b°2=blb°®b3b2 (7)b l3 b ° 2 = b l b ° b 3 b 2 (7)
Jedes Element mit zwei Segmenten lässt sich darstellen als a'aJ =a' -x" ®a] . Für jede partielle Multiplikation aus den Gleichungen (6) und (7) wird das Ergeb- nis der Anwendung von Karatsubas Formel erneut genutzt. Die Berechnung erfolgt durch iterative Anwendung der Schritte 204 und 206 (Fig.2) mit Berücksichtigung der durch den aktuellen Taktzyklus („clk") bestimmten Fallunterscheidung („case"), die einen auf dieses Ausführungsbeispiel bezogenen Auswahlplan repräsentiert.Each element having two segments can be represented as J = a'a a '-x "®ã]. For each partial multiplication of equations (6) and (7) is used The result of the application of the Karatsuba formula again. The calculation is carried out by iteratively applying steps 204 and 206 (FIG. 2), taking into account the case differentiation determined by the current clock cycle ("clk"), which represents a selection plan related to this exemplary embodiment.
Das Endergebnis ist in der nachfolgenden Formel (8) wiedergegeben:The final result is shown in the following formula (8):
C(x) = a3 b3-x6"@(a2 b2 ® a3 b3 ® a23 b23)-x5" ®(aι bι@a2 b2@a3 b3 ® a13 bl3)-x4n ®(a° b°@aι bι@a2 b2@a3 b3 C (x) = a 3 b 3 -x 6 "@ (a 2 b 2 a 3 b 3 ® ® a 23 b 23) -x 5" ® (a ι ι @a b 2 b 2 b 3 3 @a ® A 13 b l3) 4n -x ® (a ° b ° @ a ι ι @a b 2 b 2 b 3 3 @a
®a01 boι@a02 bO2@a13 bl3@a23 b23 (8)®a 01 b oι @a 02 b O2 @a 13 b l3 @a 23 b 23 (8)
®α0123 bol23)-x3n ®α 0123 b ol23 ) -x 3n
®(a° b°@aι bι@a2 b2@a02 bO2)-x2" ®(α° b°@aι bι@a01 boι)-x"@a° b°® (a ° b ° @ a ι b ι @a 2 b 2 @a 02 b O2 ) -x 2 "® (α ° b ° @ a ι b ι @a 01 b oι ) -x" @ a ° b °
Jeder der Operanden des rechten Terms der Formel (8) ist ein Segment lang, so dass das resultierende partielle Produkt (2n-1)-Bit lang ist. Die Bits von n-1 bis 0 des Produktes a'-b' werden in der Form a'b'[0] notiert und die Bits von 2n-1 bis n in der Form a'b'[1]:Each of the operands of the right term of formula (8) is one segment long so that the resulting partial product (2n-1) bit is long. The bits from n-1 to 0 of the product a'-b 'are noted in the form a'b' [0] and the bits from 2n-1 to n in the form a'b '[1]:
Mit der in Gleichung (9) eingeführten Notation kann die Formel (8) wie in der nachfolgenden Tabelle 1 dargestellt werden:
With the notation introduced in equation (9), formula (8) can be represented as shown in Table 1 below:
Tabelle 1 : Akkumulationsplan entsprechend der Formel (8)
AIIe Spalten in Tabelle 1 , die unter der Überschrift „Ergebnissegmente" aufgeführt sind, repräsentieren ein bestimmtes Segment c', das durch partielle Multiplikation der jeweils genannten ausgewählten Fragmente entsteht. Für jedes partielle Produkt sind in Tabelle 1 zwei Zeilen vorgesehen, wobei eine Zeile den unteren Abschnitt (axbx[0]), und die zweite Zeile den oberen Abschnitt (axbx[1 ]) des Produkts repräsentiert, wie oben angegeben.Table 1: Accumulation schedule according to formula (8) All columns in Table 1, listed under the heading "Result Segments", represent a particular segment c 'that results from partial multiplication of each of the selected fragments mentioned above For each partial product, two rows are provided in Table 1, one row containing the lower portion (a x b x [0]), and the second row represents the upper portion (a x b x [1]) of the product as stated above.
Das Segment c' kann als XOR-Verknüpfung aller Zeilen in Tabelle 1 berechnet werden, die das Symbol „ Θ " in der dem Segment c' zugeordneten Spalte enthalten. Beispielsweise kann c5 wie folgt berechnet werden:The segment c 'can be calculated in Table 1 as the XOR of all the rows in the c the "Θ" symbol segment' associated column contained For example, 5 c can be calculated as follows.:
c5=a1b1[1 ]θ a2b2[0]Θ a2b2[1 ]Θ a3b3[0]Θ a3b3[1 ]Θ ((a1 θ a3)(b1 θ b3)[1 ])θ ((a2θ a3)(b2θ b3)[0]) (10)c 5 = a 1 b 1 [1] θ a 2 b 2 [0] Θ a 2 b 2 [1] Θ a 3 b 3 [0] Θ a 3 b 3 [1] Θ ((a 1 θ a 3 ) (b 1 θ b 3 ) [1]) θ ((a 2 θ a 3 ) (b 2 θ b 3 ) [0]) (10)
Jedes Segment c' kann iterativ berechnet werden, d. h. Schritt für Schritt wie bei der Berechnung der partiellen Produkte, beginnend mit a°b° bis zu (flo ®fl1 ®fl2 ®fl3) (foo ®/71 ®/72 ®/73) . Anschließend wird mit der Berechnung der Segmente von Produkten begonnen, wobei die bereits vorliegenden Ergebnisse verwendet werden (Schritt 208 in Fig. 2). Beispielsweise:Each segment c 'can be calculated iteratively, ie step by step as in the calculation of the partial products, starting with a ° b ° up to (fl o ®fl 1 ® fl 2 ®fl 3 ) (fo o ® / 7 1 ® / 7 2 ® / 7 3 ). Subsequently, the calculation of the segments of products is started using the already existing results (step 208 in FIG. 2). For example:
Tabelle 2: Beispiel der Berechnung von Produktsegmenten unter Verwendung bereits vorliegender ErgebnisseTable 2: Example of calculation of product segments using existing results
Parallel zur Berechnung der Segmente erfolgt in jedem Iterationsschritt auch ein Akkumulationsschritt entsprechend den durch Tabelle 1 repräsentierten Akkumu-
lationsplan. Auf diese Weise vervollständigt sich das Ergebnis C(x) mit jedem Iterationsschritt von der ersten bis zur letzten Zeile der zu berechnenden partiellen Produkte.In parallel with the calculation of the segments, an accumulation step is carried out in each iteration step in accordance with the accumulations represented by Table 1. lationsplan. In this way, the result C (x) completes with each iteration step from the first to the last line of the partial products to be calculated.
Diese iterative Berechnung des Produktes C(x) reduziert den Flächenbedarf ei- nes Hardware-Multiplizierers. Es wird nur ein partieller Multiplizierer für EinSegment lange Operanden benötigt. Nach jedem neuen Taktsignal liefert dieser Multiplizierer das nächste partielle Produkt. Auf diese Weise werden die Segmente des Produktes C(x) gesammelt. Bei dem oben gegebenen Beispiel enthalten demnach alle Segmente nach neun Taktzyklen das korrekte Produkt der PoIy- nom-Multiplikation.This iterative calculation of the product C (x) reduces the area requirement of a hardware multiplier. Only a partial multiplier for single-segment long operands is needed. After each new clock signal, this multiplier delivers the next partial product. In this way the segments of product C (x) are collected. Thus, in the example given above, after nine clock cycles, all segments contain the correct product of the polygon multiplication.
Mit der beschriebenen iterativen Hardwarelösung beträgt die Chipfläche, die für die Berechnung des Produkts von zwei 233 Bit langen Operanden benötigt wird,With the described iterative hardware solution, the chip area required to compute the product of two 233-bit operands is
2.1 mm2. Für die Standard-Anwendung der Karatsuba-Methode werden dagegen2.1 mm 2 . For the standard application of the Karatsuba method will be against
6.2 mm2 benötigt. Die erfindungsgemäße Lösung reduziert auch den Energie- verbrauch um 30% gegenüber dem ursprünglichen Lösungsansatz. Diese Fortschritte werden lediglich mit einer erhöhten Berechnungszeit bezahlt. In einem Ausführungsbeispiel benötigt eine Polynom-Multiplikation drei Taktzyklen während im ursprünglichen Karatsuba-Verfahren nur 1 Taktzyklus benötigt wird.6.2 mm 2 needed. The solution according to the invention also reduces the energy consumption by 30% compared to the original solution. These advances are paid only with an increased calculation time. In one embodiment, a polynomial multiplication requires three clock cycles while in the original Karatsuba method only one clock cycle is needed.
Auf ähnliche Weise kann der erfindungsgemäße iterative Ansatz auf die Methode von Bailey angewendet werden, was im Rahmen dieser Anmeldung als iterative Bailey-Methode bezeichnet wird.Similarly, the iterative approach of the invention may be applied to the Bailey method, which is referred to in this application as the Bauter iterative method.
Nachfolgend werden der Aufbau und die wesentlichen Parameter eines Ausführungsbeispiels einer Hardware-Implementierung des iterativen Karatsuba- Verfahrens erläutert. Die Struktur eines iterativen Karatsuba-Beschleunigers be- steht aus drei wesentlichen Teilen, vgl. Figur 1 :The structure and the essential parameters of an embodiment of a hardware implementation of the iterative Karatsuba method will be explained below. The structure of an iterative Karatsuba accelerator consists of three essential parts, cf. FIG. 1:
- Eine Auswähleinheit 100 stellt bei jedem neuen Taktsignal an ihrem Ausgang bestimmte Teile beider Operanden einem nachgeschalteten partiellen Multiplizierer zur Verfügung.
- Ein partieller Multiplizierer 102 berechnet das partielle Produkt der von der Auswähleinheit gelieferten Operanden und stellt die Ergebnisse einer Produkt-Akkumulations-Einheit zur verfügen.A selection unit 100 makes certain parts of both operands available to a downstream partial multiplier at each new clock signal at its output. A partial multiplier 102 computes the partial product of the operands provided by the selection unit and provides the results of a product accumulation unit.
- Die Produkt-Akkumulationseinheit 104 berechnet das Endergebnis des Pro- dukts aus den partiellen Produkten, die sie von dem partiellen Multiplizierer erhält. Die theoretische Basis und die genaue Schrittfolge wurden in den obigen Abschnitten 4 und 5 im Einzelnen erläutert.The product accumulation unit 104 calculates the end result of the product from the partial products that it receives from the partial multiplier. The theoretical basis and the exact sequence of steps were explained in detail in sections 4 and 5 above.
Die Leistungsdaten, die Chipfläche und der Energiebedarf eines Polynom- Multiplizieres werden wesentlich vom verwendeten partiellen Multiplizierer beein- flusst. Je größer die Eingangssignale des partiellen Multiplizierers sein können, desto schneller ist der partielle Multiplizierer. Andererseits führt dies auch zu einem relativ großen Flächenbedarf. Daher ist beim Hardware-Design eine Entscheidung zwischen Berechnungsdauer und Chipfläche zu treffen. Dies gilt jedoch nur so lange, wie allein der partielle Multiplizierer in Betracht gezogen wird. Für den Polynom-Multiplizierer ist darüber hinaus auch die Fläche der Auswähl- und der Produkt-Akkumulations-Einheiten von Bedeutung. Die Chipfläche, die die Produkt-Akkumulations-Einheit benötigt, hängt von dem Flächenbedarf des partiellen Multiplizierers in einer invers proportionalen Weise ab. Das heißt, je kleiner der partielle Multiplizierer, desto größer ist die Produkt-Akkumulations-Einheit. Dies ergibt sich aus der Tatsache, dass im Falle kleiner partieller Multiplizierer mehr Zwischenergebnisse gespeichert werden müssen, um die abschließende Berechnung des Polynom-Produkts durchzuführen. Beispielsweise ist die Fläche der Produkt-Akkumulations-Einheit 0,649 mm2, wenn der partielle Multiplizierer 128 Bit lange Operanden akzeptiert. Die Fläche beträgt dagegen 1 ,466 mm2, wenn die maximale akzeptierte Länge der Operanden lediglich 32 Bit beträgt.The performance data, the chip area and the energy requirement of a polynomial multiplier are significantly influenced by the partial multiplier used. The larger the input signals of the partial multiplier, the faster the partial multiplier. On the other hand, this also leads to a relatively large space requirement. Therefore, the hardware design has to make a decision between calculation time and chip area. However, this only applies as long as the partial multiplier alone is taken into account. In addition, the area of the selection and product accumulation units is important for the polynomial multiplier. The chip area required by the product accumulation unit depends on the area requirement of the partial multiplier in an inversely proportional manner. That is, the smaller the partial multiplier, the larger the product accumulation unit. This results from the fact that in the case of small partial multipliers, more intermediate results must be stored in order to perform the final computation of the polynomial product. For example, the area of the product accumulation unit is 0.649 mm 2 when the partial multiplier accepts 128 bit long operands. In contrast, the area is 1.466 mm 2 if the maximum accepted length of the operands is only 32 bits.
Um ein möglichst gut angepasstes Design für ein Polynom-Multiplizierer zu erhalten, wurden verschiedene partielle Multiplizierer realisiert. Es wurden drei EinTakt partielle Multiplizierer für das erfindungsgemäße Karatsuba-Verfahren als auch für ein erfindungsgemäßes iteratives Bailey-Verfahren verwendet. Diese partiellen Multiplizierer akzeptieren Operanden mit einer maximalen Länge von
jeweils 128, 64 und 32 Bit. Sie wurden mit Hilfe der Schaltungsbibliothek der Anmelderin und der eigenen 0,25 μm-CMOS-Technologie synthetisiert. Tabelle 3 zeigt die Parameterfläche, Zeit und Energieverbrauch jedes dieser sechs partiellen Multiplizierer. Die Werte wurden mit Hilfe des Design-Analyse-Werkzeugs der Firma Synopsys ermittelt.In order to obtain a well adapted design for a polynomial multiplier, various partial multipliers have been realized. Three one-clock partial multipliers were used for the Karatsuba method according to the invention as well as for an iterative Bailey method according to the invention. These partial multipliers accept operands with a maximum length of 128, 64 and 32 bits each. They were synthesized using Applicant's circuit library and proprietary 0.25 μm CMOS technology. Table 3 shows the parameter area, time and energy consumption of each of these six partial multipliers. The values were determined using the design analysis tool from Synopsys.
Tabelle 3: Parameter der hergestellten partiellen MultipliziererTable 3: Parameters of the produced partial multipliers
Ausführungsbeispiele mit einer Akkumulations-Steuereinheit und einer Auswahl- Steuereinheit, die in einer Multiplikations-Steuereinheit integriert sind, können die Flexibilität hinsichtlich der erforderlichen Gesamtdauer, der möglichen Taktfrequenzen und der benötigten Chipfläche weiter erhöhen. In der nachfolgenden Tabelle 4 werden Parameter unterschiedlicher 233-Bit interativer Karatsuba- Multiplizierer verglichen. Dabei ist erkennbar, dass ein 1 -Takt-Multiplizierer die geringste Gesamtzeit für eine Polynommultiplikation benötigt, jedoch anderer- seits bei weitem die größte Chipfläche benötigt.Embodiments with an accumulation control unit and a selection control unit, which are integrated in a multiplication control unit, can further increase the flexibility with regard to the required total duration, the possible clock frequencies and the required chip area. Table 4 below compares parameters of different 233-bit Karatsuba interactive multipliers. It can be seen that a 1-clock multiplier requires the least overall time for a polynomial multiplication, but on the other hand requires by far the largest chip area.
Es fällt anhand der Daten von Tabelle 4 auf, dass eine 4-Segment-Karatsuba- Implementierung eine geringere Chipfläche benötigt als eine 8-Segment- Implementierung. Hier kommt zum Tragen, dass die Logik für die Auswahl der
Fragmente (Segmente) und für die Akkumulation der partiellen Produkte in Ausführungsbeispielen mit einer höheren Fragmentierung einen beträchtlichen Ein- fluss auf den Flächenbedarf hat. Es zeigt sich, dass in der 8-Segment- Implementierung diese Logikteile mehr als 75 % der vom Multiplizierer eingenommenen Chipfläche benötigen. Insgesamt nehmen die Selektions- und Auswahllogiken im 2-Segment-Multiplizierer 0,30 mm2, im 4-Segment-Multiplizierer 0,78 mm2 und im 8-Segment-Multiplizierer 1 ,18 mm2 ein. Die Segmentierung hat aufgrund des sich ergebenden komplizierten Datenpfades einen hohen Einfluss auf die benötigte Chipfläche. Aus diesem Grund werden in einem bevorzugten Ausführungsbeispiel die Akkumulations-Steuereinheit und die Auswahl- Steuereinheit mit einer alternativen Struktur ausgebildet, die weiter unten anhand von Figur 5 näher beschrieben wird.It is apparent from the data in Table 4 that a 4-segment Karatsuba implementation requires less chip area than an 8-segment implementation. Here comes to fruition that the logic for choosing the Fragments (segments) and for the accumulation of partial products in embodiments with a higher fragmentation has a considerable influence on the space requirement. It turns out that in the 8-segment implementation these logic parts require more than 75% of the chip area occupied by the multiplier. Overall, the selection and selection logics in the 2-segment multiplier take 0.30 mm 2 , in the 4-segment multiplier 0.78 mm 2 and in the 8-segment multiplier 1, 18 mm 2 . The segmentation has a high impact on the required chip area due to the resulting complicated data path. For this reason, in a preferred embodiment, the accumulation control unit and the selection control unit are formed with an alternative structure, which will be described in more detail below with reference to FIG.
Tabelle 4: Parameter unterschiedlicher 233-Bit iterativer Karatsuba-MultipliziererTable 4: Parameters of different 233-bit iterative Karatsuba multipliers
Für einen Benchmarking-Test wurden Polynom-Multiplizierer mit einer Implementierung der folgenden Verfahren hergestellt:For a benchmarking test, polynomial multipliers were made with an implementation of the following methods:
- iteratives Karatsuba- Verfahren- iterative Karatsuba process
- iteratives Bailey-Verfahren- Iterative Bailey procedure
- rekursives Karatsuba- Verfahren nach dem Stand der Technik - rekursives Bailey-Verfahren nach dem Stand der Technik
Für die ersten beiden Verfahrens-Implementierungen wurden drei Polynom- Multiplizierer mit unterschiedlichen partiellen Multiplizierern verwendet (vgl. Tabelle 4), um den Einfluss des jeweiligen partiellen Multiplizierers auf die Leistungsparameter feststellen zu können. Diese Multiplizierer wurden so benannte, dass der Namen auf das verwendete Verfahren hinweist. Beispielsweise bedeutet der Name iterative_Karatsuba_8segments: iteratives Karatsuba-Verfahren, bei dem eingehende Operanden in acht Segmente fragmentiert werden.- Recursive Karatsuba method according to the prior art - recursive Bailey method according to the prior art For the first two method implementations, three polynomial multipliers with different partial multipliers were used (see Table 4) to determine the influence of each partial multiplier on the performance parameters. These multipliers were named so that the name indicates the method used. For example, the name iterative_Karatsuba_8segments means: iterative Karatsuba method in which incoming operands are fragmented into eight segments.
Bei den zwei rekursiven Multiplizierern wird die ursprüngliche Karatsuba- bzw. Bailey-Formel bis hinab zu Ein-Bit-Operanden angewendet. Beide Multiplizierer liefern das Polynom-Produkt nach einem Taktzyklus. Sie unterscheiden sich in der Länge der Eingabe-Operanden. Der Karatsuba-Multiplizierer erwartet stets zwei 256 Bit lange Eingabewerte, während der Bailey-Multiplizierer zwei 243 Bit lange Eingabewerte erwartet.The two recursive multipliers use the original Karatsuba or Bailey formula down to one-bit operands. Both multipliers supply the polynomial product after one clock cycle. They differ in the length of the input operands. The Karatsuba multiplier always expects two 256-bit input values, while the Bailey multiplier expects two 243-bit input values.
Wegen der beabsichtigten Verwendung dieser Multiplizierer für EC B-233, sind die zu erwartenden Eingabewerte nur 233 Bit lang. Daher wurden die Operanden mit vorangehenden Nullen aufgefüllt, wo dies erforderlich war. Das Ergebnis der Multiplikation ist stets 465 Bit lang.Because of the intended use of these multipliers for EC B-233, the expected input values are only 233 bits long. Therefore, the operands were padded with leading zeros where necessary. The result of the multiplication is always 465 bits long.
Alle Polynom-Multiplizierer wurden unter Verwendung einer Schaltungsbibliothek der 0,25 μm-CMOS-Technologie der Anmelderin synthetisiert. Die Parameter der implementierten Polynom-Multiplizierer sind in Tabelle 4 angegeben. Die darin enthaltenen Daten wurden mit Hilfe unterschiedlicher Arten von Analysen- Reports aus dem „Design Analyzer" von Synopsys erhalten.
All polynomial multipliers were synthesized using Applicants' 0.25 μm CMOS circuit library. The parameters of the implemented polynomial multipliers are given in Table 4. The data contained was obtained from Synopsys' Design Analyzer using various types of analysis reports.
Tabelle 5: Parameter der synthetisierten Polynom-MultipliziererTable 5: Parameters of the synthesized polynomial multipliers
Die in Tabelle 5 wiedergegebenen Ergebnisse zeigen deutlich, dass eine iterative Anwendung der Verfahren von Karatsuba und Bailey benötigte Chipfläche signifikant verringert. Wird die Anzahl der Iterationen klein gehalten, hilft der erfindungsgemäße Ansatz auch bei einer Reduzierung des Energieverbrauchs. In diesen Designvarianten wird ein geringerer Flächenbedarf und ein geringerer
Energieverbrauch auf Kosten einer langsameren Ausführungszeit erzielt. Bei einer Erhöhung der Anzahl von Iterationen wird die benötigte Chipfläche reduziert, jedoch auch die benötigte Leistungsaufnahme und Rechenzeit erhöht. Diese Implementierungen sind nur dann von Nutzen, wenn Kosten den entscheiden- den Parameter bilden.The results presented in Table 5 clearly show that iterative application of the Karatsuba and Bailey methods significantly reduces required chip area. If the number of iterations is kept small, the inventive approach also helps to reduce energy consumption. In these design variants, a smaller space requirement and a lesser Energy consumption achieved at the expense of a slower execution time. Increasing the number of iterations reduces the required chip area, but also increases the required power consumption and computing time. These implementations are only useful if costs are the deciding parameter.
Die iterative Anwendung des Karatsuba-Verfahrens für Polynom-Multiplikationen ermöglicht also eine Reduzierung der benötigten Chipfläche sowie der für die Durchführung einer elliptischen Kurvenkryptographie auf mobilen Endgeräte erforderlichen Energie. Es wurden verschiedene Verfahren für die Polynom- Multiplikation in GF(2n) analysiert sowie verschiedene Polynom-Multiplikations- Algorithmen implementiert. Verschiedene partielle Multiplizierer wurden hergestellt. Sie wurden zur Implementierung einer Anzahl iterativer Polynom- Multiplizierer verwendet, um die bestmögliche Variante für die Anwendung in mobilen Endgeräten zu ermitteln. Unsere Ergebnisse zeigen deutlich, dass der erfindungsgemäße iterative Ansatz zu signifikant besseren Ergebnissen im Hinblick auf Chipfläche und Energieverbrauch führt als die ursprünglichen direkten Anwendungen.The iterative application of the Karatsuba method for polynomial multiplications thus makes it possible to reduce the required chip area and the energy required to perform elliptic curve cryptography on mobile terminals. Different methods for polynomial multiplication in GF (2 n ) were analyzed and different polynomial multiplication algorithms were implemented. Various partial multipliers were made. They were used to implement a number of iterative polynomial multipliers to determine the best possible variant for use in mobile devices. Our results clearly show that the inventive iterative approach leads to significantly better results in terms of chip area and energy consumption than the original direct applications.
Figur 3 zeigt eine am Datenfluss orientierte Block-Darstellung eines Ausführungsbeispiels einer Vorrichtung zur Datenverschlüsselung, die nachfolgend als Verschlüsselungseinheit 300 bezeichnet wird. Die Verschlüsselungseinheit 300 enthält einen Festwertspeicher 302, in dem die Koordinaten eines Basispunktes G einer vorbestimmten elliptischen Kurve abgelegt sind. Ein Zufallszahlengenerator 304 erzeugt jeweils eine Zufallszahl k pro Abschnitt M zu verschlüsselnder Nutzdaten. Ein Speicher 306 enthält einen öffentlichen Schlüssel S des Empfän- gers der Nachricht. Ein Datensegmentierer 308 zerlegt eingehende und zu verschlüsselnde Nutzdaten in Nutzdatenabschnitte M einer vorbestimmten Länge.FIG. 3 shows a data flow-oriented block diagram of an exemplary embodiment of a device for data encryption, which is referred to below as encryption unit 300. The encryption unit 300 contains a read-only memory 302 in which the coordinates of a base point G of a predetermined elliptic curve are stored. A random number generator 304 generates in each case a random number k per section M for user data to be encrypted. A memory 306 contains a public key S of the recipient of the message. A data segmenter 308 decomposes incoming and to-be-encrypted payload data into payload portions M of a predetermined length.
Im Rahmen der Verschlüsselung eines Nutzdatenabschnitts M wird in einem Ga- lois— Feld-Multiplizierer 310, der einen iterativen Polynom-Multiplizierer gemäß der Erfindung enthält, zum einen das Produkt kG des Basispunkts G mit der ak- tuellen Zufallszahl k berechnet. Dies ist durch einen Block 310.1 symbolisiert.
Weiterhin wird im Galois-Feld-Multiplizierer 310 das Produkt kS derselben aktuellen Zufallszahl k und des öffentlichen Schlüssels S bestimmt, was durch den Block 310.2 symbolisiert ist. Es wird darauf hingewiesen, dass es zwar denkbar ist, zwei unabhängige Galois-Feld-Multiplizierer für die Berechnung der Produkte kG und kS vorzusehen. Bevorzugt ist jedoch nur ein Galois-Feld-Multiplizierer vorhanden, um den Flächenbedarf nicht unnötig zu erhöhen. Die damit verbundene Zeitverzögerung ist für die meisten Verschlüsselungsanwendungen tolera- bel.As part of the encryption of a useful data section M, in a gated field multiplier 310, which contains an iterative polynomial multiplier according to the invention, the product kG of the base point G with the current random number k is calculated on the one hand. This is symbolized by a block 310.1. Furthermore, in the Galois field multiplier 310, the product kS of the same current random number k and the public key S is determined, which is symbolized by the block 310.2. It should be noted that although it is conceivable to provide two independent Galois field multipliers for the calculation of the products kG and kS. Preferably, however, there is only one Galois field multiplier so as not to unnecessarily increase the area requirement. The associated time delay is tolerable for most encryption applications.
In einer Transformationseinheit 312 wird der von dem Datensegmentierer 308 gelieferte Nutzdaten abschnitt auf Übereinstimmung mit der X-Koordinate eines Punktes der elliptischen Kurve überprüft. Dabei werden gegebenenfalls nicht festgelegte Bits des Nutzdatenabschnitts M verändert, so dass ein abgewandelter Nutzdatenabschnitt M* entsteht. Die nicht festgelegten Bits sind frei änderbar, ohne die Gefahr einer Modifizierung der Nutzinformation. Diese Abwandlung hat also keinen Einfluss auf die im Nutzdaten abschnitt M* enthaltene Nutzinformation. Nach jeder Erzeugung eines abgewandelten Nutzdatenabschnitts M* wird erneut geprüft, ob dieser veränderte Nutzdatenabschnitt mit der X-Koordinate eines Punktes auf der elliptischen Kurve übereinstimmt.In a transformation unit 312, the payload data section provided by the data segmenter 308 is checked for correspondence with the X coordinate of a point of the elliptic curve. Unwanted bits of the user data section M are possibly changed, so that a modified user data section M * is created. The undefined bits are freely changeable without the risk of modifying the payload. This modification therefore has no influence on the useful information contained in the payload data M * . After each generation of a modified payload data section M * , it is checked again whether this modified payload data section coincides with the X coordinate of a point on the elliptic curve.
Die Funktionsweise der Transformationseinheit 312 wird nachfolgend anhand eines Beispiels näher erläutert. Ein Nutzdatenabschnitt enthält beispielsweise den Text „zojka", der durch die Datensymbolsequenz (5A, 6F, 6A, 6B, 61 , 00) symbolisiert ist. Hierbei ist das letzte Datensymbol „00" nicht festgelegt und kann verändert werden, um die Folge der Datensymbole der X-Koordinate eines Punktes auf der elliptischen Kurve anzugleichen. Angenommen, in einem ersten Schritt werde das nicht festgelegte Datensymbol als „01 " definiert, so wird die Transformationseinheit 312 feststellen, dass die dadurch entstehende Folge von Datensymbolen keine Entsprechung in einem Punkt der elliptischen Kurve hat. Wird jedoch das nicht festgelegte Datensymbol als „02" definiert, wird die Transformationseinheit 312 feststellen, dass die dadurch entstehende Folge von Da- tensymbolen einem Punkt auf der elliptischen Kurve entspricht, der folgende Y- Koordinate hat: 7D3C7D654AAB7068E1 DA366C49588A27F252D410.
Die Transformationseinheit 312 leitet vom ermittelten Punkt der elliptischen Kurve X- und Y-Koordinate an einen Eingang eines Addierers 314, an dessen anderem Eingang das Produkt kS des öffentlichen Schlüssels mit der aktuellen Zufallszahl k anliegt. Die Summe kS + Y gibt der Addierer 314 an eine Ausgabeeinheit 316, der an einem weiteren Eingang das Produkt kG zugeleitet wird. Die Ausgabeeinheit 316 fügt die Datensymbole kG und der Summe kS + Y zu einer Datensequenz zusammen und gibt diese aus. Die Ausgabe kann entweder seriell oder parallel erfolgen.The mode of operation of the transformation unit 312 will be explained in more detail below by means of an example. A payload section, for example, contains the text "zojka" symbolized by the data symbol sequence (Fig. 5A, 6F, 6A, 6B, 61, 00), where the last data symbol "00" is not fixed and can be changed to the sequence of data symbols to match the X coordinate of a point on the elliptic curve. Assuming that, in a first step, the unspecified data symbol is defined as "01", the transformation unit 312 will determine that the resulting sequence of data symbols has no correspondence at any point on the elliptic curve, but if the unspecified data symbol is written as "02 "defines, the transformation unit 312 will determine that the resulting sequence of data symbols corresponds to a point on the elliptic curve having the following Y coordinate: 7D3C7D654AAB7068E1 DA366C49588A27F252D410. The transformation unit 312 derives from the determined point of the elliptic curve X and Y coordinates to an input of an adder 314, to whose other input the product kS of the public key with the current random number k is present. The sum kS + Y is given by the adder 314 to an output unit 316, which is supplied with the product kG at a further input. The output unit 316 assembles the data symbols kG and the sum kS + Y into a data sequence and outputs them. The output can be either serial or parallel.
Die Verschlüsselungseinheit 300 kann sowohl in Form von Hardware als auch in Form einer Software implementiert werden.The encryption unit 300 can be implemented both in the form of hardware and in the form of software.
Figur 4 zeigt ein Blockdiagramm eines weiteren Ausführungsbeispiels einer Verschlüsselungseinheit, das nachfolgend als Verschlüsselungseinheit 400 bezeichnet wird. Die Darstellung der Figur 4 zeigt eine Hardware-Implementierung.FIG. 4 shows a block diagram of a further embodiment of an encryption unit, which is referred to below as encryption unit 400. The representation of FIG. 4 shows a hardware implementation.
Die einzelnen Einheiten der Verschlüsselungseinheit sind über einen zentralen Bus 402 verbunden. An den Bus 402 ist eine Steuereinheit 404 angeschlossen, die eine Kontrolllogik zur Durchführung der Montgomery-Methode enthält. Die Steuereinheit 404 steuert das Zusammenwirken der nachfolgend beschriebenen Einheiten. Über eine Eingabe/Ausgabe-Einheit 406 können der Verschlüsselungseinheit 400 ein Basispunkt G, ein öffentlicher Schlüssel S und ein Nutzda- tenabschnitt M zugeführt werden. Die Eingabe/Ausgabe-Einheit 406 ist gleichzeitig ausgebildet, eine von der Verschlüsselungseinheit 400 erzeugte verschlüsselte Nachricht, wie im Zusammenhang mit der Ausgabeeinheit 316 der Figur 3 beschrieben, zusammenzusetzen und auszugeben.The individual units of the encryption unit are connected via a central bus 402. Connected to the bus 402 is a control unit 404 which contains control logic for performing the Montgomery method. The control unit 404 controls the cooperation of the units described below. Via an input / output unit 406, a base point G, a public key S and a user data section M can be supplied to the encryption unit 400. The input / output unit 406 is simultaneously configured to assemble and output an encrypted message generated by the encryption unit 400, as described in connection with the output unit 316 of FIG.
Ein Zufallszahlengenerator 408 liefert für jeden eingehenden Nutzdatenabschnitt M eine Zufallszahl k. Ein Karatsuba-Polynom-Multiplizierer 410 ist mit einer Polynom-Reduktionseinheit 412 verbunden. Eine ebenfalls mit dem Datenbus 402 verbundene Inversionseinheit 414 ist ausgebildet, die multiplikative Inverse eines Polynoms zu bilden. Weiterhin ist ein Addierer 416 vorgesehen sowie eine PoIy-
nom-Quadrierungseinheit 418, die mit einem weiteren Polynom-Reduzierer 420 verbunden ist.A random number generator 408 provides a random number k for each incoming payload section M. A Karatsuba polynomial multiplier 410 is connected to a polynomial reduction unit 412. An inversion unit 414 also connected to the data bus 402 is configured to form the multiplicative inverse of a polynomial. Furthermore, an adder 416 is provided as well as a polyhedron. nom squaring unit 418 connected to another polynomial reducer 420.
Die Funktionsweise der Verschlüsselungseinheit 400 entspricht der anhand von Figur 3 dargestellten Funktionsweise, wobei die Steuereinheit 404 die Funktion der Transformationseinheit 312 wahrnimmt.The mode of operation of the encryption unit 400 corresponds to the mode of operation illustrated with reference to FIG. 3, wherein the control unit 404 performs the function of the transformation unit 312.
Verschiedene Varianten der Verschlüsselungseinheit 400 sind möglich. Beispielsweise kann vorgesehen sein, den Basispunkt G und/oder den öffentlichen Schlüssel S nicht über die Eingabe/Ausgabe-Einheit 406 zuzuführen, sondern in einem Speicher fest abzulegen. Hierfür kann der auch im Rahmen der Polynom- Multiplikation verwendete Speicher 422 genutzt werden.Various variants of the encryption unit 400 are possible. For example, it may be provided that the base point G and / or the public key S are not supplied via the input / output unit 406, but stored permanently in a memory. For this purpose, the memory 422 also used in the polynomial multiplication can be used.
Andererseits ist auch denkbar, nicht nur den Basispunkt G, den öffentlichen Schlüssel S und die Nutzdaten M, sondern auch die aktuelle Zufallszahl k von extern zuzuführen und den Zufallsgenerator 408 nicht in die Verschlüsselungseinheit 400 zu integrieren. Auf diese Weise kann der Flächenbedarf der Ver- schlüsselungseinheit 400 bei einer Hardware-Implementierung weiter reduziert werden.On the other hand, it is also conceivable to externally supply not only the base point G, the public key S and the user data M, but also the current random number k and not to integrate the random number generator 408 into the encryption unit 400. In this way, the area requirement of the encryption unit 400 can be further reduced in a hardware implementation.
Die vom Addierer 416 durchgeführte Addition basiert, wie bereits vorher erwähnt, auf der XOR-Operation.The addition performed by adder 416 is based on the XOR operation, as previously mentioned.
Die Software-Variante wurde mit dem Polynommultiplizierer der Miracle- Bibliothek", Version 4.7, Shamus Software Ltd. (Ireland), http://indiqo.ie/~mscott/), der einen rekursiven Karatsuba-Ansatz nutzt, sowie mit einer Implementierung der von Lopez vorgeschlagenen Multiplikations-Alternative verglichen. Für die Implementierung der Software Variante wurde Microsoft Visual C++ 6.0 genutzt. Die Vergleichsmessungen wurden auf einem PC (Intel Penti- um III Processor, 800 MHz, Microsoft Windows XP Professional Version 2002, 256 MB RAM) sowie auf einem PDA (Pocket PC iPAQ Hewlett-Packard Company, 48MB ROM; 128 MB RAM, 400 MHz Intel XScale Processor Modell h5500, OS: Pocket PC 2003 Prem mit Outlook 2002) durchgeführt. Für den Vergleich
wurden zunächst eine Anzahl von 1 Million jeweils 233 Bit langen Operanden einem Datenfile gespeichert. Diese Operanden wurden für alle Messungen verwendet, um eine Vergleichbarkeit der Ergebnisse sicherzustellen. Eintrag Nummer n des Datenfiles wurde mit Eintrag Nummer n+1 multipliziert, bis alle Ope- randen verwendet waren. Der Test bestand also in der Durchführung 1 Million Multiplikationen.The software variant was used with the Miracle Library Polynomial Multiplier, version 4.7, Shamus Software Ltd. (Ireland), http://indiqo.ie/~mscott/), which uses a recursive Karatsuba approach, and with an implementation For the implementation of the software variant Microsoft Visual C ++ 6.0 was used The comparison measurements were made on a PC (Intel Pentium III Processor, 800 MHz, Microsoft Windows XP Professional Version 2002, 256 MB RAM). as well as on a PDA (Pocket PC iPAQ Hewlett-Packard Company, 48MB ROM, 128MB RAM, 400MHz Intel XScale Processor Model h5500, OS: Pocket PC 2003 Prem with Outlook 2002) performed for comparison First, a number of 1 million each 233-bit operands were stored in a data file. These operands were used for all measurements to ensure comparability of the results. Entry number n of the data file was multiplied by entry number n + 1 until all operands were used. So the test consisted of performing 1 million multiplications.
Der Vergleich der durchschnittlichen Berechnungszeiten auf dem PC zeigt eine Leistungssteigerung im Vergleich zur rekursiven Anwendung des Karatsuba Ansatzes um:The comparison of the average calculation times on the PC shows an increase in performance compared to the recursive application of the Karatsuba approach:
- bis zu 17% bei Verwendung von Compileroptimierungen und- up to 17% when using compiler optimizations and
bis zu 37% ohne Verwendung der Compiler Optimierungen.up to 37% without using the compiler optimizations.
Auf dem PDA haben sich folgende Leistungssteigerungen im Vergleich mit der rekursiven Karatsuba Methode ergeben:On the PDA, the following performance improvements compared to the recursive Karatsuba method have resulted:
bis zu 11 % bei Verwendung von Compileroptimierungen undup to 11% when using compiler optimizations and
- bis zu 17% ohne Verwendung der Compiler Optimierungen.- up to 17% without using the compiler optimizations.
Diese Werte zeigen, dass das erfindungsgemäße Verfahren nicht nur in einer Hardware-Implementation, sondern auch in einer Software-Implementation Vorteile gegenüber bekannten Verfahren aufweist.These values show that the method according to the invention has advantages over known methods not only in a hardware implementation but also in a software implementation.
Figur 5 zeigt ein Blockdiagramm eines Ausführungsbeispiels eines erfindungs- gemäßen Polynom-Multiplizierers 500.FIG. 5 shows a block diagram of an embodiment of a polynomial multiplier 500 according to the invention.
Die Struktur des Polynom-Multiplizierers 500 gleicht in weiten Teilen der Struktur des in Figur 1 beschriebenen Polynom-Multiplizierers. So enthält auch der Polynom-Multiplizierer 500 eine Auswähleinheit 502, einen partiellen Multiplizierer 504 und eine Produkt-Akkumulationseinheit 506.
Während jedoch im Ausführungsbeispiel der Figur 1 der Betrieb der Auswähl- und der Akkumulationseinheit durch hartverdrahtete Datenpfade vorgegeben ist und Taktsignal für Taktsignal einen hartverdrahteten Auswahlplan sowie einen hartverdrahteten Akkumulationsplan abarbeitet, ist im vorliegenden Ausführungs- beispiel eine separate Multiplizier-Steuereinheit 508 vorgesehen, die eine Auswahl-Steuereinheit 508.1 und eine Akkumulations-Steuereinheit 508.2 in sich integriert. Die Multiplizier-Steuereinheit ist dementsprechend zum einen mit der Auswähleinheit 502 und zum anderen mit der Akkumulationseinheit 506 verbunden.The structure of the polynomial multiplier 500 is similar in many parts to the structure of the polynomial multiplier described in FIG. Thus, the polynomial multiplier 500 also includes a selection unit 502, a partial multiplier 504, and a product accumulation unit 506. However, in the exemplary embodiment of FIG. 1, the operation of the selection and accumulation unit is predetermined by hard-wired data paths and clock signal for clock signal executes a hardwired selection plan and a hardwired accumulation plan, in the present exemplary embodiment a separate multiplier control unit 508 is provided, which selects Control unit 508.1 and an accumulation control unit 508.2 integrated into it. The multiplier control unit is accordingly connected to the selection unit 502 on the one hand and to the accumulation unit 506 on the other hand.
Ebenfalls dargestellt sind Eingangsregister 510 und 512, die der Auswähleinheit 502 vorgeschaltet sind und zur Aufnahme eingehender Datenworte A und B ausgebildet sind, deren Produkt vom Polynom-Multiplizierer zu berechnen ist. Das berechnete Produkt C wird am Ausgang eines Ausgangsregisters 514 anliegen, das hier als Teil der Akkumulationseinheit 506 dargestellt ist.Also shown are input registers 510 and 512, which are connected upstream of the selector 502 and configured to receive incoming data words A and B whose product is to be calculated by the polynomial multiplier. The calculated product C will be present at the output of an output register 514, shown here as part of the accumulation unit 506.
In einem bevorzugten Ausführungsbeispiel integriert die Akkumulationseinheit 506 zugleich eine Reduktionseinheit, so dass ein auf die Wortlänge der eingehenden Datenworte reduziertes Produkt C ausgegeben werden kann.In a preferred embodiment, the accumulation unit 506 simultaneously integrates a reduction unit, so that a product C reduced to the word length of the incoming data words can be output.
Es ist jedoch alternativ auch denkbar, die Reduktionseinheit dem Polynom- Multiplizierer 500 nachzuschalten. In diesem Fall muss das Ausgangsregister 514 eine entsprechend größere Wortbreite zur Verfügung stellen.However, it is alternatively also conceivable to connect the reduction unit downstream of the polynomial multiplier 500. In this case, the output register 514 must provide a correspondingly larger word width.
Die gegenüber dem Ausführungsbeispiel der Figur 1 geänderte Betriebsweise des Polynom-Multiplizierers 500 der Figur 5 wird nachfolgend unter Heranziehung der Figur 6 näher erläutert.The mode of operation of the polynomial multiplier 500 of FIG. 5, which has changed compared to the exemplary embodiment of FIG. 1, will be explained in more detail below with reference to FIG.
Figur 6 zeigt eine schematische Ansicht des partiellen Multiplizierers und der Akkumulations-Einheit der Figur 5 mit näheren Details. Die Darstellung ist insofern schematisch als sie einige Strukturelemente zur Verdeutlichung des Betriebsablaufs der Akkumulation in einem Iterationsschritt mehrfach darstellt, wie nachfolgend näher erläutert wird.
Die Struktur der Akkumulationseinheit wird anhand eines Beispiels eines iterativen Karatsuba-Multiplizierers mit einer 4-Segment-Multiplikation 233-Bit langer Datenwörter beschrieben, wie sie auch in Fig. 5 beispielhaft vorgegeben ist. In diesem Fall stehen am Ende jeder Iteration in der Akkumulationseinheit 8 Pro- duktsegmente cθ bis c7 zur Verfügung, wie in Tabelle 1 an einem entsprechenden Beispiel erläutert wurde. Diese Segmente cθ bis c7 befinden sich in entsprechenden Registern 516 bis 530.Figure 6 is a schematic view of the partial multiplier and the accumulation unit of Figure 5 in more detail. The representation is schematic in that it represents several structural elements for clarification of the operation of the accumulation in an iteration step several times, as will be explained in more detail below. The structure of the accumulation unit will be described with reference to an example of an iterative Karatsuba multiplier with a 4-segment multiplication of 233-bit long data words, as also exemplified in FIG. In this case, 8 product segments cθ to c7 are available at the end of each iteration in the accumulation unit, as was explained in Table 1 in a corresponding example. These segments cθ to c7 are located in respective registers 516 to 530.
Die Struktur der Register 516 bis 530 ist in Figur 6 insgesamt dreimal dargestellt, um den Ablauf eines Iterationsschrittes zu verdeutlichen. Dabei repräsentiert die in der Figur linksseitigdargestellte Registerstruktur einen anfänglichen Registerzustand, die in der Mitte gestrichelt dargestellte Registerstruktur einen temporären Zwischenzustand, der nicht abgespeichert wird, und die rechtsseitig dargestellte Registerstruktur einen Endzustand eines jeweiligen Iterationsschrittes dar. Alle drei Darstellungen betreffen jedoch, wie erwähnt, in der tatsächlichen Akku- mulationseinheit 506 dieselbe Registerstruktur 516 bis 530.The structure of registers 516 to 530 is shown three times in FIG. 6 overall in order to illustrate the sequence of an iteration step. Here, the register structure shown on the left side in the figure represents an initial register state, the register structure shown in broken line in the middle represents a temporary intermediate state which is not stored, and the register structure shown on the right represents an end state of each iteration step. However, as mentioned, all three representations refer to FIG the actual accumulation unit 506 has the same register structure 516 to 530.
Die Datenbreite der Registerstruktur bei einem nxn-partiellen Multiplizierer 504 beträgt 8n.The data width of the register structure in an nxn-partial multiplier 504 is 8n.
Der Übergang vom anfänglichen Registerzustand zum abschließenden Registerzustand während eines Iterationsschrittes ergibt sich durch eine Anzahl XOR- Verknüpfungen, die mit insgesamt 7 XOR-Gattern 532 bis 544 durchgeführt werden. Jedes XOR-Gatter verknüpft 2n Bit aus zwei benachbarten Registern mit dem aktuellen Ergebnis einer partiellen Multiplikation, das in einem Register 504.1 am Ausgang des partiellen Multiplizierers 504 bereitliegt.The transition from the initial register state to the final register state during an iteration step results from a number of XOR operations performed on a total of seven XOR gates 532 through 544. Each XOR gate combines 2n bits from two adjacent registers with the current result of a partial multiplication, which is available in a register 504.1 at the output of the partial multiplier 504.
Jedes XOR-Gatter ist eingangsseitig mit einem Steuer-Logik-Gatter verknüpft. Ob eine XOR-Verknüpfung des jeweiligen Registers mit dem aktuellen partiellen Produkt aus dem Register 504.1 tatsächlich vorgenommen wird, entscheidet der Zustand eines jeweiligen Steuer-Logik-Gatters. Die Steuer-Logik-Gatter sind im vorliegenden Ausführungsbeispiel UND-Gatter 546 bis 558, an deren einem Eingang das Ergebnis der partiellen Multiplikation und an deren anderem Eingang je
ein Steuerbit cw [0], cw[1], ... , cw[6] eines Steuerwortes (control word, cw) anliegt. Je nach Wert des jeweiligen Steuerbits im aktuellen Iterationszyklus wird also das partielle Multiplikationsergebnis zur Akkumulation an einem jeweiligen Register 516 bis 530 vom jeweiligen UND-Gatter zugelassen oder blockiert. Ist das Steuerbit gesetzt, erfolgt eine Addition bzw. XOR-Verknüpfung, ist das Steuerbit nicht gesetzt, erfolgt keine XOR-Verknüpfung am jeweiligen XOR- Gatter. Durch Steuerung der Verknüpfungen in jedem Akkumulations-Zyklus, also in jedem Iterationsschritt, kann auf diese Weise ein Akkumulationsplan entsprechend Tabelle 1 umgesetzt werden.Each XOR gate is linked on the input side to a control logic gate. Whether an XOR connection of the respective register with the current partial product from the register 504.1 is actually made, decides the state of a respective control logic gate. The control logic gates in the present embodiment are AND gates 546-558, at one input of which is the result of the partial multiplication and at the other input each a control bit cw [0], cw [1], ..., cw [6] of a control word (control word, cw) is present. Depending on the value of the respective control bit in the current iteration cycle, therefore, the partial multiplication result for accumulation at a respective register 516 to 530 is allowed or blocked by the respective AND gate. If the control bit is set, there is an addition or XOR operation; if the control bit is not set, no XOR operation takes place at the respective XOR gate. By controlling the links in each accumulation cycle, ie in each iteration step, an accumulation plan according to Table 1 can be implemented in this way.
Diese Form der Kontrolle der Akkumulation mit Hilfe eines Steuerwortes erspart komplizierte Datenpfade und führt zu einer beträchtlichen Flächeneinsparung. Ein weiterer Vorteil dieser Ausführungsform ist, dass auf diese Weise unterschiedliche Akkumulationspläne implementiert werden können. Diese können in einem Speicher bereitliegen oder nachträglich der Akkumulations-Steuereinheit 508.2 eingespeichert werden.This form of control of the accumulation with the help of a control word saves complicated data paths and leads to a considerable space saving. Another advantage of this embodiment is that different accumulation schedules can be implemented in this way. These may be available in a memory or may be subsequently stored in the accumulation control unit 508.2.
Die Auswählsteuerung kann auf die selbe Weise realisiert werden und ist hier nicht näher dargestellt.The selection control can be realized in the same way and is not shown here.
Der mit dem vorliegenden Ausführungsbeispiel erzielte Flächenvorteil ist um so größer, je höher die Segmentierung der zur Multiplikation vorgesehenen Daten- worte ist. Während beim Ausführungsbeispiel der Figur 1 der Datenpfad mit zunehmender Segmentierung komplizierter wird und daher zunehmend Chipfläche beansprucht (von 0,30 mm2 für ein 2-Segment-Verfahren über 0,78 mm2 für ein 4-Segment- Verfahren bis zu 1 ,18 mm2 für ein 8-Segment-Verfahren), bleibt der Flächenbedarf der Multiplizier-Steuereinheit 508, die sowohl die Auswahl- Steuereinheit 508.1 als auch die Akkumulations-Steuereinheit 508.2 enthält, nahezu konstant und bewegt sich im Bereich von 0,30 mm2.
PatentansprücheThe area advantage achieved with the present exemplary embodiment is the greater the higher the segmentation of the data words provided for multiplication. While in the embodiment of Figure 1, the data path with increasing segmentation is complicated and therefore increasingly claimed chip area (from 0.30 mm 2 for a 2-segment method over 0.78 mm 2 for a 4-segment method up to 1.18 mm 2 for an 8-segment method), the area requirement of the multiplier control unit 508 including both the selection control unit 508.1 and the accumulation control unit 508.2 remains almost constant and is in the range of 0.30 mm 2 . claims
1 . Verfahren zum Berechnen einer Polynom-Multiplikation, mit den Schritten:1 . Method for calculating a polynomial multiplication, comprising the steps:
H-IHI
Bereitstellen von Koeffizienten a„ b, zweier Polynome A(x) = @a,x' undProviding coefficients a "b, two polynomials A (x) = @ a, x 'and
;=0 n-1; = 0 n-1
B(x) = @b,x' , wobei " 0 " eine Addition oder eine XOR-Operation kenn-B (x) = @ b, x ', where "0" indicates an addition or an XOR operation.
;=0 zeichnet und a„ b, binäre Ein-Bit-Werte sind, d. h . 0 oder 1 , sowie x' = 1 ist,; = 0 and a "b, are binary one-bit values, i. H . 0 or 1, and x '= 1,
- Auswählen von entweder zwei oder mehr als zwei Fragmenten, eines von jedem Polynom, als Operanden für eine partielle Multiplikation,Selecting either two or more than two fragments, one from each polynomial, as operands for a partial multiplication,
- partielles Multiplizieren der ausgewählten Fragmente, um ein partielles Produkt zu erhalten,partially multiplying the selected fragments to obtain a partial product
wobei der Auswählschritt iterativ nach einem vordefinierten Auswahlplan durchgeführt wird, und wobei Fragmente verwendet werden, bei denen der jeweilige Multiplizierschritt zur Bildung eines partiellen Produkts jeweiliger Fragmente lediglich einen Berechnungsschritt erfor- dert,wherein the selection step is carried out iteratively according to a predefined selection plan, and wherein fragments are used in which the respective multiplying step for forming a partial product of respective fragments requires only one calculation step,
- Akkumulieren der partiellen Produkte, wobei das Akkumulieren entsprechend einem vordefinierten Akkumulationsplan zur Akkumulation eines aktuell am Ausgang des partiellen Multiplizierers anliegenden partiellen Produktes mit einem oder mehreren Termen eines Iterationsschritt für Iterationsschritt weiterentwickelten Ergebnispolynoms gesteuert wird.Accumulating the partial products, the accumulation being controlled in accordance with a predefined accumulation plan for the accumulation of a partial product currently present at the output of the partial multiplier with one or more terms of an iteration step further developed by the iteration step.
2. Verfahren nach Anspruch 1 , bei dem das Akkumulieren parallel mit dem Fragmentieren durchgeführt wird und einen partiellen Akkumulierungsschritt gemäß dem Akkumulationsplan umfasst, der nach einer jeweiligen Iteration eines Multiplizierschrittes durchgeführt wird.
2. The method of claim 1, wherein the accumulating is performed in parallel with the fragmenting and comprises a partial accumulating step according to the accumulation schedule performed after a respective iteration of a multiplying step.