Berlin, 6. März 2006
Unser Zeichen: IB 1284-03WO LE/jwd
Durchwahl: 030/841 887 16
Anmelder/Inhaber: IHP GMBH Amtsaktenzeichen: Neuanmeldung
IHP GmbH - Innovations for High Performance Microelectronics / Institut für innovative Mikroelektronik
Im Technologiepark 25, D-15236 Frankfurt (Oder)
Verfahren und Vorrichtung zum Berechnen einer Polynom-Multiplikation, insbesondere für die elliptische Kurven-Kryptographie
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.
1. Einleitung
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.
Bekannte asymmetrische Verschlüsselungsverfahren sind RSA sowie Diffie- Hellmann-Verfahren und der darauf basierende Digitale Signatur Algorithmus DSA.
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.
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).
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.
2. Stand der Technik
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.
2.1 Polynom-Multiplikation
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-
H-I H-I
Stellung von Polynomen A(x) = £a,x' hier abgeändert in A(x) = @a,x' Im Rah-
I=O (=0 men dieser Anmeldung ist die XOR-Operation als „Θ" gekennzeichnet. Das Sym- bol „+" bezeichnet immer eine gewöhnliche Addition.
Das Produkt zweier Polynome
H-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)
I=O
wobei C, = ■b,,d. h.: k+l=ι
C0 = uo-bo
C1 = uvb0®u0-bx
c„_L =an_ι -bo®an_2 -bγ ®...®a0 -bH_γ
Cin-3 =a„-ι -b„_2 ®a„_2 -bn_γ
C2n-2 =an-l '"n-Y
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.
2.2 Karatsuba-basierte Verfahren zur Polynom-Multiplikation
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:
A(x) = an_x...anan ...aιa0=an_ι...an -x2 ®an ...U1U0 =
~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
n
C(x) = a°b° © [α V © aΨ © (α° © aι)(b° © b1)]- x2 © 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.
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.
3. Technisches Problem der Erfindung
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.
4. Zusammenfassung der Erfindung
Gemäß einem ersten Aspekt wird ein Verfahren zum Berechnen einer Polynom- Multiplikation angegeben, mit den Schritten:
H-I
Bereitstellen von Koeffizienten a„ b, zweier Polynome A(x) = @a,x' und
;=0
H-I
B(x) = @btx' , wobei " 0 " eine Addition oder eine XOR-Operation kenn-
;=0 zeichnet und a„ b, binäre Ein-Bit-Werte sind, d. h . 0 oder 1 , sowie x' = 1 ist,
Auswählen von entweder zwei oder mehr als zwei Fragmenten, eines von jedem Polynom, als Operanden für eine partielle Multiplikation,
partielles Multiplizieren der ausgewählten Fragmente, um ein partielles Produkt zu erhalten,
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 erfordert,
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.
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.
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.
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.
Das erfindungsgemäße Verfahren ermöglicht zudem gegenüber bekannten Verfahren eine erhöhte Flexibilität.
Fragmente von Polynomen werden in der nachfolgenden Beschreibung mit gleicher Bedeutung gelegentlich auch als Segmente bezeichnet. Anstelle von Fragmentierung wird auch von Segmentierung gesprochen.
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.
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.
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.
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)
Gemäß einem dritten Aspekt der Erfindung wird ein Polynom-Multiplizierer bereitgestellt , mit
einer Auswähleinheit, die ausgebildet ist,
H-I
Koeffizienten a„ b, von zwei Polynomen A(x) = (+) a,x und
;=0
H-I
B(x) = @btx' zu empfangen, wobei " 0 " eine Addition oder eine
;=0
XOR-Operation bezeichnet, a, und b, Ein-Bit-Binär-Werte sind, d. h. 0 oder 1 , und x' = 1 , und
- 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,
wobei die Auswähleinheit zusätzlich ausgebildet ist, die Fragmente in aufeinanderfolgenden Arbeitsschritten iterativ nach einem vordefinierten Auswahlplan auszuwählen,
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 bereitzustellen
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,
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.
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.
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 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.
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.
Auswahl-Steuereinheit und Akkumulations-Steuereinheit sind vorzugsweise in einer einzigen Multiplikations-Steuereinheit integriert.
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 Typ
n
C(x) = a°b° © [α V © aΨ © (α° © aι)(b° © b1)]- x1 © aιbι ■ x" ,
und das partielle Produkt an seinem Ausgang bereitzustellen.
Ein bevorzugtes Ausführungsbeispiel des Polynom-Multiplizierers ist in Form eines integrierten Schaltkreises ausgebildet.
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.
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.
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.
5. Kurzbeschreibung der Figuren
Im Folgenden werden die Erfindung und weitere bevorzugte Ausführungsbeispiele unter Heranziehung der Figuren im Einzelnen erläutert. Es zeigen:
Figur 1 die Struktur eines Ausführungsbeispiels eines Polynom-Multiplizierers
Figur 2 eine detaillierte Darstellung eines Ausführungsbeispiels eines Verfah- rens zur Polynommultiplikation am Beispiel einer 4-Wort Karatsuba-
Polynom-Multiplikation im GF (2m) und
Figur 3 eine am Datenfluss orientierte Block-Darstellung eines Ausführungsbeispiels eines Verfahrens zur Datenverschlüsselung
Figur 4 ein Blockdiagramm eines Ausführungsbeispiels-Verschlüsselungs- einheit
Figur 5 ein Blockdiagramm eines weiteren Ausführungsbeispiels eines PoIy- nom-Multipliziers gemäß der Erfindung.
Figur 6 eine schematische Ansicht des partiellen Multiplizierers und der Akkumulations-Einheit der Figur 5 mit näheren Details.
6. Detaillierte Beschreibung von Ausführungsbeispielen
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.
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.
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.
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 .
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 dieser
;=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.
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.
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:
- ein geringerer Flächenbedarf von Hardwarebeschleunigern aufgrund der Möglichkeit, partielle Multiplikationen seriell durchzuführen
- eine geringere Anzahl von XOR-Operationen im Vergleich mit der rekursiven Variante von Karatsubas Verfahren.
Die Karatsuba-Formel für das Produkt C(x)=A(x)-B(x) ist
n
C(x) = a°b° © [α V © aΨ © (α° © aι)(b° © b1)]- x2 © 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.
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.
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.
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:
Das Ergebnis der Anwendung von Karatsubas Formel ist:
C{x) = aιa° - bιb° ®
® [αV • bΨ ® a3a2 - b3b2 ® a13a02 • b13b02 ]• x2n (5)
® a3a2 - b3b2 - x4n
wobei
al3a02 = a13 - xn ® a02 = (aι ® a3) - xn ® (a° ® a2) =
(6) (α1 • x" ® a°) ® (α3 • x" ® a2) = aιa° ® a3a2
und
bl3b°2=blb°®b3b2 (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.
Das Endergebnis ist in der nachfolgenden Formel (8) wiedergegeben:
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
®a01 boι@a02 bO2@a13 bl3@a23 b23 (8)
®α0123 bol23)-x3n
®(a° b°@aι bι@a2 b2@a02 bO2)-x2" ®(α° b°@aι bι@a01 boι)-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]:
Mit der in Gleichung (9) eingeführten Notation kann die Formel (8) wie in der nachfolgenden Tabelle 1 dargestellt werden:
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.
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:
c5=a1b1[1 ]θ a2b2[0]Θ a2b2[1 ]Θ a3b3[0]Θ a3b3[1 ]Θ ((a1 θ a3)(b1 θ b3)[1 ])θ ((a2θ a3)(b2θ b3)[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:
Tabelle 2: Beispiel der Berechnung von Produktsegmenten unter Verwendung bereits vorliegender Ergebnisse
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.
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.
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,
2.1 mm2. Für die Standard-Anwendung der Karatsuba-Methode werden dagegen
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.
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.
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 :
- 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.
- 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.
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.
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.
Tabelle 3: Parameter der hergestellten partiellen Multiplizierer
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.
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.
Tabelle 4: Parameter unterschiedlicher 233-Bit iterativer Karatsuba-Multiplizierer
Für einen Benchmarking-Test wurden Polynom-Multiplizierer mit einer Implementierung der folgenden Verfahren hergestellt:
- iteratives Karatsuba- Verfahren
- iteratives Bailey-Verfahren
- 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.
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.
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.
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.
Tabelle 5: Parameter der synthetisierten Polynom-Multiplizierer
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.
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.
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.
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.
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.
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.
Die Verschlüsselungseinheit 300 kann sowohl in Form von Hardware als auch in Form einer Software implementiert werden.
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.
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.
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.
Die Funktionsweise der Verschlüsselungseinheit 400 entspricht der anhand von Figur 3 dargestellten Funktionsweise, wobei die Steuereinheit 404 die Funktion der Transformationseinheit 312 wahrnimmt.
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.
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.
Die vom Addierer 416 durchgeführte Addition basiert, wie bereits vorher erwähnt, auf der XOR-Operation.
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.
Der Vergleich der durchschnittlichen Berechnungszeiten auf dem PC zeigt eine Leistungssteigerung im Vergleich zur rekursiven Anwendung des Karatsuba Ansatzes um:
- bis zu 17% bei Verwendung von Compileroptimierungen und
bis zu 37% ohne Verwendung der Compiler Optimierungen.
Auf dem PDA haben sich folgende Leistungssteigerungen im Vergleich mit der rekursiven Karatsuba Methode ergeben:
bis zu 11 % bei Verwendung von Compileroptimierungen und
- bis zu 17% ohne Verwendung der Compiler Optimierungen.
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.
Figur 5 zeigt ein Blockdiagramm eines Ausführungsbeispiels eines erfindungs- gemäßen Polynom-Multiplizierers 500.
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.
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.
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.
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.
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.
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.
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.
Die Datenbreite der Registerstruktur bei einem nxn-partiellen Multiplizierer 504 beträgt 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.
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.
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.
Die Auswählsteuerung kann auf die selbe Weise realisiert werden und ist hier nicht näher dargestellt.
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üche
1 . Verfahren zum Berechnen einer Polynom-Multiplikation, mit den Schritten:
H-I
Bereitstellen von Koeffizienten a„ b, zweier Polynome A(x) = @a,x' und
;=0 n-1
B(x) = @b,x' , wobei " 0 " eine Addition oder eine XOR-Operation kenn-
;=0 zeichnet und a„ b, binäre Ein-Bit-Werte sind, d. h . 0 oder 1 , sowie x' = 1 ist,
- Auswählen von entweder zwei oder mehr als zwei Fragmenten, eines von jedem Polynom, als Operanden für eine partielle Multiplikation,
- partielles Multiplizieren der ausgewählten Fragmente, um ein partielles Produkt zu erhalten,
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,
- 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.
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.