-
Die Erfindung betrifft ein Verfahren und eine Prozessor-Einrichtung zum Implementieren einer Charakteristik-2-Multiplikation von zumindest zwei Eingangs-Bitstrings.
-
Die Charakteristik-2-Multiplikation kommt bei einer Vielzahl kryptographischer Verfahren, dabei insbesondere bei Public-Key-Verfahren, wie z. B. bei einer hardwarenahen Implementierung von kryptographischen Verfahren auf der Basis elliptischer Kurven, zum Einsatz. Die bei einer solchen Charakteristik-2-Arithmetik verwendeten Zahlen lassen sich auf einer Prozessor-Einrichtung, einem Prozessor oder einem Computer effizient als Bitstrings darstellen. Solch ein Bitstring kann durch ein Register zwischengespeichert werden. Die Addition von zwei Zahlen in einer solchen Darstellung entspricht der bitweisen XOR-Verknüpfung der repräsentierenden Bitstrings. Eine Multiplikation von zwei Bitstrings oder Operanden in der Charakteristik-2-Arithmetik entspricht mathematisch dem Produkt zweier Polynome aus GF(2)[X]. Dabei entsprechen die Bitstrings, welche zur Repräsentation der Zahlen verwendet werden, der 0/1-Folge der Koeffizienten der jeweiligen Polynome.
-
Die mathematische Grundlage für eine Charakteristik-2-Multiplikation besteht darin, das Produkt zweier Zahlen auf eine vorbestimmte Menge von Partialprodukten zurückzuführen, welche anschließend zum Ergebnis aufaddiert werden. Als Beispiel werden für die Multiplikation der Zahlen 1011 und 1101 im Folgenden die Partialprodukte und die Summe angeführt:
-
Zur Bereitstellung des Ergebnisses wird eine Addition der Partialprodukte durch eine spaltenweise XOR-Verknüpfung ausgeführt. Als Grundoperationen zur Durchführung einer solchen Multiplikation kommen dabei Schiebeoperationen und bitweise UND-Verknüpfungen zur Berechnung der Partialprodukte in den Zeilen der oben stehenden Tabelle sowie bitweise XOR-Verknüpfungen zur Berechnung der jeweiligen Spaltensumme der Partialprodukte zum Einsatz.
-
Als optimierte Varianten dieses Multiplikationsverfahrens sind die so genannten Fenstermethoden bekannt. Bei den Fenstermethoden lässt sich die Zahl der benötigten Additionen von Partialprodukten reduzieren, insbesondere weil eine kleine Tabelle von Vielfachen des einen Operanden vorberechnet wird. Mit Hilfe dieser vorberechneten Tabelle können dann in jedem anschließenden Schritt mehrere Bits auf einmal zur Berechnung von Partialprodukten verwendet werden. Folglich wird die Berechnung der Partialprodukte auf ein Nachschlagen in der vorberechneten Tabelle zurückgeführt. Bei einer optimierten Wahl der Parameter kann die Einsparung von Additionen von Partialprodukten durch ein Abarbeiten von mehreren Bits auf einmal höher als der notwendige Aufwand sein, der für die zusätzliche Vorberechnung der Tabelle nötig ist.
-
Ferner lassen sich Fenstermethoden auf effiziente Weise mit Schiebebefehlen kombinieren. Wenn der zur Implementierung verwendete Prozessor effiziente Schiebebefehle für bestimmte Schrittweiten bereitstellt, kann es vorteilhaft sein, die Partialprodukte in mehreren Teilsummen aufzuaddieren. Beispielsweise bei einem Prozessor mit einer Busbreite von 8 Bits und der Anwendung einer Fenstermethode mit 4 Bit breiten Fenstern wird das Zwischenergebnis im Akkumulator zwischen zwei Additionen um 4 Bits nach links geschoben. Werden aber zwei unterschiedliche Akkumulatoren zum Aufaddieren der Partialsummen abwechselnd verwendet, so kann der Inhalt der Akkumulatoren jeweils um 8 Bits geschoben werden. Eine Verschiebung um 1 Byte, also 8 Bits, kann auf einem herkömmlichen Prozessor sehr effizient durch Umkopieren der Daten im Speicher erreicht werden. Erst im abschließenden Schritt, wenn die bis dahin berechneten Zwischenergebnisse der beiden Akkumulatoren aufaddiert werden, muss der Inhalt eines Akkumulators um 4 Bits nach links geschoben werden. Bei dieser Vorgehensweise kann eine Vielzahl kostenintensiver Schiebebefehle während der Berechnung des Produktes eingespart werden.
-
Bei längeren Operanden kann die Verwendung asymptotisch schnellerer Algorithmen zur Berechnung der Multiplikation, wie beispielsweise die Karatsuba- oder Fourier-Multiplikation, vorteilhaft sein. Die oben beschriebene Methode zur Multiplikation kann dann auch auf kürzere Teilstücke der zu multiplizierenden Zahlen angewendet werden.
-
Obwohl allerdings nahezu alle herkömmlichen Prozessoren oder Prozessor-Einrichtungen Hardware zur schnellen Integer-Multiplikation zweier Bitstrings in der Busbreite der Prozessor-Einrichtung besitzen, unterstützt keiner dieser herkömmlichen Prozessoren die Charakteristik-2-Multiplikationen in Hardware.
-
Das bedeutet, dass eine solche Multiplikation stets in Software realisiert werden muss und daher im Allgemeinen deutlich langsamer als die hardware-technische Integer-Multiplikation ist.
-
Demnach ist es eine Aufgabe der vorliegenden Erfindung, ein Verfahren zur Charakteristik-2-Multiplikation von zumindest zwei Bitstrings anzugeben, welches im Vergleich zu bisher bekannten Verfahren eine deutlich kürzere Ausführungszeit aufweist.
-
Erfindungsgemäß wird diese gestellte Aufgabe durch ein Verfahren mit den Merkmalen des Patentanspruchs 1 und/oder durch eine Prozessor-Einrichtung mit den Merkmalen des Patentanspruchs 14 gelöst.
-
Demgemäß wird ein Verfahren zum Implementieren einer Charakteristik-2-Multiplikation von zumindest zwei Eingangs-Bitstrings mit jeweils einer Anzahl N von Bits mittels einer Prozessor-Einrichtung vorgeschlagen, wobei die Prozessoreinrichtung ein Bit-weises Schieben oder Schiebebefehle mit langen Ausführungszeiten bereitstellt, und bei dem das Verfahren die folgenden Schritte aufweist:
- a) Erzeugen zumindest einer Folge einer Anzahl K von Nullbits, mit K ∊ {1, ..., N}, mittels einer ersten Transformation des jeweiligen Eingangs-Bitstrings an zumindest einer vorbestimmten Position in dem jeweiligen Eingangs-Bitstring zur Erzeugung von zumindest einem ersten Zwischen-Bitstring für jeden Eingangs-Bitstring;
- b) Verknüpfen der zumindest zwei ersten Zwischen-Bitstrings durch die hardware-technische Integer-Multiplikation der Prozessor-Einrichtung zur Erzeugung mindestens eines zweiten Zwischen-Bitstrings; und
- c) Transformieren des zumindest einen zweiten Zwischen-Bitstrings mittels einer zweiten Transformation zum Bilden eines Ergebnis-Bitstrings.
-
Ferner wird eine Prozessor-Einrichtung zur Implementierung einer Charakteristik-2-Multiplikation von zumindest zwei Eingangs-Bitstrings mit jeweils einer Anzahl N Bits vorgeschlagen, wobei die Prozessoreinrichtung ein Bit-weises Schieben oder Schiebebefehle mit langen Ausführungszeiten bereitstellt, und aufweist:
- – eine Erzeugungseinrichtung, welche dazu geeignet ist, eine Folge einer Anzahl K von Nullbits, mit K ∊ {1, ..., N}, mittels einer ersten Transformation des jeweiligen Eingangs-Bitstrings an zumindest einer vorbestimmten Position in dem jeweiligen Eingangs-Bitstring zur Erzeugung von zumindest eifern ersten Zwischen-Bitstring zu erzeugen;
- – eine logische Verknüpfungseinrichtung, welche dazu geeignet ist, die mindestens zwei ersten Zwischen-Bitstrings durch eine hardware-technische Integer-Multiplikation zur Erzeugung zumindest eines zweiten Zwischen-Bitstrings zu verknüpfen; und
-
– eine Transformationseinrichtung, welche dazu eingerichtet ist, den zumindest einen zweiten Zwischen-Bitstring mittels zumindest einer zweiten Transformation zum Bilden eines Ergebnis-Bitstrings zu transformieren.
-
Ein Vorteil der vorliegenden Erfindung liegt darin, dass eine Charakteristik-2-Multiplikation zweier Bitstrings, Eingangs-Bitstrings oder Zahlen mittels eines herkömmlichen Prozessors oder einer herkömmlichen Prozessor-Einrichtung, die nur zur hardware-technischen Integer-Multiplikation geeignet ist, ermöglicht wird.
-
Die Charakteristik-2-Multiplikation und die herkömmliche Integer-Multiplikation unterscheiden sich insbesondere in der Weise, wie die berechneten Partialprodukte aufaddiert werden. Während bei der Charakteristik-2-Multiplikation eine spaltenweise XOR-Verknüpfung eingesetzt wird, was einer Summe ohne Überträge entspricht, werden bei der herkömmlichen Integer-Multiplikation die Spaltensummen mit Überträgen berechnet. Herkömmlicherweise können diese Überträge aber auch die Spaltensumme von benachbarten Spalten beeinflussen und verändern.
-
Gemäß der vorliegenden Erfindung werden demnach künstlich Lücken in die zu multiplizierenden Zahlen mittels der Folge der Anzahl K von Nullbits eingefügt, in welche die Überträge, die bei der herkömmlichen Integer-Multiplikation zwangsweise entstehen, aufgesammelt werden können. Somit können diese entstehenden Überträge nicht mehr die weiter links liegenden Spaltensummen verändern oder beeinflussen.
-
Wie oben bereits ausgeführt, können die bei der herkömmlichen Integer-Multiplikation nach Verfahrensschritt b) zwangsweise entstehenden Übertrage aufgesammelt werden, ohne dass sie andere Summenbits für die Charakteristik-2-Multiplikation verfälschen könnten.
-
Viele herkömmliche Prozessoren besitzen Hardware zur schnellen und effizienten Durchführung einer Integer-Multiplikation. Herkömmlicherweise ist dazu ein einzelner Assemblerbefehl notwendig.
-
Während der Ausführung eines solchen Multiplikationsbefehls kann die erfindungsgemäße Methode zur Charakteristik-2-Multiplikation ausgeführt werden. Das heißt, dass der einzelne Assemblerbefehl die Berechnung und Addition der Partialprodukte inklusive der dazu notwendigen Schiebeoperationen bewirken kann. Im Gegensatz dazu kann bei einem in Software realisierten Algorithmus zur Charakteristik-2-Multiplikation im Allgemeinen nicht eine solche schnelle und effiziente Implementierung erreicht werden, wie sie die Hardware der Prozessor-Einrichtung bereits bietet.
-
Demnach ist die vorliegende Erfindung insbesondere dann vorteilhaft, wenn die verwendete Prozessor-Einrichtung nur ein bitweises Schieben bereitstellt oder die bereitgestellten Schiebebefehle lange Ausführungszeiten haben.
-
Vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung ergeben sich aus den Unteransprüchen sowie der Beschreibung unter Bezugnahme auf die Zeichnungen.
-
Gemäß einer bevorzugten Weiterbildung wird die Anzahl K der Nullbits der Folge in Abhängigkeit von der Anzahl N der Bits der Eingangs-Bitstrings bestimmt.
-
Gemäß einer weiteren bevorzugten Weiterbildung wird der Schritt a) des oben beschriebenen Verfahrens ausgestaltet durch ein Maskieren des jeweiligen Eingangs-Bitstrings mit zumindest zwei unterschiedlichen Masken durch eine jeweilige bitweise UND-Verknüpfung des jeweiligen Eingangs-Bitstrings mit der jeweiligen Maske zur Erzeugung von zumindest zwei ersten Zwischen-Bitstrings.
-
Gemäß einer weiteren bevorzugten Weiterbildung bildet die jeweilige Folge mit der Anzahl K der Nullbits jeweils ein Maskenfenster in der jeweiligen vorbestimmten Maske mit einer Anzahl N von Bits, wobei K die folgende Bedingung erfüllt:
-
Gemäß einer weiteren bevorzugten Weiterbildung ist eine Anzahl M der vorbestimmten, unterschiedlichen Masken gleich K + 1 (M = K + 1).
-
Gemäß einer weiteren bevorzugten Weiterbildung wird die jeweilige m-te Maske, mit m ∊ {1, ..., M}, aus zumindest einem Teil eines periodischen Musters bestehend aus einem jeweiligen Einsbit und darauf folgend eine jeweilige Folge von K Nullbits gebildet.
-
Gemäß einer weiteren bevorzugten Weiterbildung wird die jeweilige (m + 1)-te Maske durch eine Bitverschiebung der jeweiligen m-ten Maske um 1 Bit gebildet.
-
Gemäß einer weiteren bevorzugten Weiterbildung wird der Schritt c) des oben beschriebenen Verfahrens ausgestaltet durch:
- – Maskieren jeweils der zumindest vier zweiten Zwischen Bitstrings mit den zumindest zwei unterschiedlichen Masken mit einer jeweiligen verdoppelten Länge durch bitweise UND-Verknüpfen zur Erzeugung von zumindest vier dritten Zwischen-Bitstrings; und
- – XOR-Verknüpfen der zumindest vier dritten Zwischen-Bitstrings zur Erzeugung des Ergebnis-Bitstrings.
-
Gemäß einer bevorzugten Ausgestaltung der Erfindung wird der Schritt a) des oben beschriebenen Verfahrens ausgestaltet durch ein Spreizen des jeweiligen Eingangs-Bitstrings durch Einfügen der Folge der K Nullbits zwischen allen N Bits des entsprechenden Eingangs-Bitstrings (insgesamt N – 1 mal) zur Erzeugung eines jeweiligen Zwischen-Bitstrings für jeden Eingangs-Bitstring.
-
Gemäß einer weiteren bevorzugten Ausgestaltung bildet die jeweilige Folge mit der Anzahl K von Nullbits ein Fenster in dem jeweiligen ersten Zwischen-Bitstring, wobei K die folgende Bedingung erfüllt: ⌊log2(N)⌋ ≤ K
-
Gemäß einer weiteren bevorzugten Ausgestaltung wird der Schritt b) des oben beschriebenen Verfahrens ausgestaltet durch ein Verknüpfen der zwei ersten Zwischen-Bitstrings durch die Integer-Multiplikation der Prozessor-Einrichtung zur Erzeugung eines einzigen zweiten Zwischen-Bitstrings.
-
Gemäß einer weiteren bevorzugten Ausgestaltung wird der Schritt c) ausgebildet durch:
- – Extrahieren von Bits des erzeugten, zweiten Zwischen-Bitstrings an vorbestimmten Positionen i·(K + 1), mit i ∊ {0, ..., 2N – 2}, beginnend beim niedrigstwertigen Bit des zweiten Zwischen-Bitstrings mit der Position 0.
-
Weiter wird ein Computerprogramm-Produkt vorgeschlagen, welches auf einer programmgesteuerten Einrichtung die Durchführung eines wie oben beschriebenen Verfahrens gemäß der Erfindung veranlasst.
-
Ein Computerprogramm-Produkt wie ein Computerprogramm-Mittel kann beispielsweise als Speichermedium, wie Speicherkarte, USB-Stick, Floppy, CD-Stick, CD-ROM, DVD oder auch in Form einer herunterladbaren Datei von einem Server in einem Netzwerk bereitgestellt oder geliefert werden. Dies kann zum Beispiel in einem drahtlosen Kommunikationsnetzwerk durch die Übertragung einer entsprechenden Datei mit dem Computerprogramm-Produkt oder dem Computerprogramm-Mittel erfolgen.
-
Die Erfindung wird nachfolgend anhand der in den schematischen Figuren angegebenen Ausführungsbeispielen näher erläutert. Es zeigen:
-
1 ein schematisches Ablaufdiagramm eines ersten Ausführungsbeispiels des erfindungsgemäßen Verfahrens zum Implementieren einer Charakteristik-2-Multiplikation;
-
2 ein schematisches Ablaufdiagramm eines zweiten Ausführungsbeispiels des erfindungsgemäßen Verfahrens zum Implementieren einer Charakteristik-2-Multiplikation;
-
3 ein schematisches Beispiel einer Anwendung des zweiten Ausführungsbeispiels des erfindungsgemäßen Verfahrens nach 2;
-
4 ein schematisches Ablaufdiagramm eines dritten Ausführungsbeispiels des erfindungsgemäßen Verfahrens zum Implementieren einer Charakteristik-2-Multiplikation;
-
5 ein schematisches Beispiel einer Anwendung des dritten Ausführungsbeispiels des erfindungsgemäßen Verfahrens nach 4
-
6 ein schematisches Blockschaltbild eines Ausführungsbeispiels der erfindungsgemäßen Prozessor-Einrichtung zum Implementieren einer Charakteristik-2-Multiplikation; und
-
7 ein schematisches Beispiel einer Integer-Multiplikation von zwei ersten Zwischen-Bitstrings.
-
In allen Figuren sind gleiche bzw. funktionsgleiche Mittel und Einrichtungen – sofern nichts anderes angegeben – mit denselben Bezugszeichen versehen.
-
1 zeigt ein schematisches Ablaufdiagramm eines ersten Ausführungsbeispiels zum Implementieren einer Charakteristik 2-Multiplikation von zumindest zwei Eingangs-Bitstrings EB1, EB2 mit jeweils einer Anzahl N von Bits mittels einer zur Durchführung einer Integer-Multiplikation geeigneten Prozessor-Einrichtung 10.
-
Nachfolgend wird das erfindungsgemäße Verfahren anhand des Blockschaltbildes in 1 mit Bezug auf die Beispiele in den 3 und 5 erläutert.
-
In den 3 und 5 bezeichnet das Bezugszeichen EBi mit i ∊ {1, 2} den jeweiligen i-ten Eingangs-Bitstring EB1, EB2. Weiterhin bezeichnet M1i die jeweilige erste Maske M11, M12. Weiter bezeichnet M2i die jeweilige zweite Maske M21, M22. Ferner bezeichnet Z1j mit j ∊ {1, 2, 3, 4} den jeweiligen ersten Zwischen-Bitstring Z11, Z12, Z13 und Z14. Des Weiteren bezeichnet Z2j den jeweiligen zweiten Zwischen-Bitstring Z21, Z22, Z23, Z24. E bezeichnet den Ergebnis-Bitstring, und die Bezugszeichen r1–r6 bezeichnen jeweils eine Zeile in den 3 und 5 zur verbesserten Referenzierung in diesen Figuren.
-
Das erfindungsgemäße Verfahren nach 1 weist die Verfahrensschritte R1 bis R3 auf:
-
Verfahrensschritt R1:
-
Zumindest eine Folge F einer Anzahl K von Nullbits, mit K ∊ {1, ..., N}, wird mittels einer ersten Transformation des jeweiligen Eingangs-Bitstrings EB1, EB2 an zumindest einer vorbestimmten Position in dem jeweiligen Eingangs-Bitstring EB1, EB2 zur Erzeugung von zumindest einem ersten Zwischen-Bitstring Z11–Z14 erzeugt. Dabei wird die Anzahl K der Nullbits der Folge F vorzugsweise in Abhängigkeit von der Anzahl N der Bits der Eingangs-Bitstrings EB1, EB2 bestimmt.
-
Verfahrensschritt R2:
-
Die zumindest zwei ersten Zwischen-Bitstrings Z11–Z14 werden durch die Hardware-technische Integer-Multiplikation der Prozessor-Einrichtung 10 zur Erzeugung mindestens eines zweiten Zwischen-Bitstrings Z21–Z24 logisch verknüpft.
-
Verfahrensschritt R3:
-
Mittels einer zweiten vorbestimmten Transformation wird der zumindest eine zweite Zwischen-Bitstring Z21–Z24 zum Bilden eines Ergebnis-Bitstrings E transformiert.
-
In 2 ist ein schematisches Ablaufdiagramm eines zweiten Ausführungsbeispiels des erfindungsgemäßen Verfahrens zum Implementieren einer Charakteristik-2-Multiplikation von zumindest zwei Eingangs-Bitstrings EB1, EB2 mit jeweils einer Anzahl N von Bits mittels einer zur Durchführung einer Integer-Multiplikation geeigneten Prozessor-Einrichtung 10 dargestellt.
-
Das zweite Ausführungsbeispiel gemäß 2 weist die folgenden Verfahrensschritte S1–S4 auf:
-
Verfahrensschritt S1:
-
Der jeweilige Eingangs-Bitstring EB1, EB2 der zumindest zwei Eingangs-Bitstrings EB1, EB2 wird mit zumindest zwei unterschiedlichen Masken M11, M12 durch eine jeweilige bitweise UND-Verknüpfung des jeweiligen Eingangs-Bitstrings EB1, EB2 mit der jeweiligen Maske M11, M12 zur Erzeugung von zumindest zwei ersten Zwischen-Bitstrings Z11–Z14 maskiert. Damit ist die mit Bezug auf den Verfahrensschritt R1 nach 1 dargestellte erste Transformation als eine Maskierung gemäß 2 ausgebildet.
-
Dabei bildet die jeweilige Folge F mit der Anzahl K der Nullbits jeweils ein Maskenfenster in der jeweiligen vorbestimmten Maske M11, M12 mit einer Anzahl N von Bits, wobei K die folgende Bedingung erfüllt:
-
Die Anzahl M der vorbestimmten unterschiedlichen Masken M11, M12 ist vorzugsweise gleich K + 1 (M = K + 1).
-
Dabei wird die jeweilige m-te Maske M11, M12, mit m ∊ {1, ..., N}, aus zumindest einem Teil eines periodischen Musters bestehend aus einem jeweiligen Einsbit und darauf folgend eine jeweilige Folge F von K Nullbits gebildet. Dazu zeigt 3 ein schematisches Beispiel einer Anwendung des zweiten Ausführungsbeispiels des erfindungsgemäßen Verfahrens nach 2. Dabei zeigt die Zeile r1 zwei Eingangs-Bitstrings EB1, EB2 mit EB1 = ”ABCD” und EB2 = ”EFGH”. Weiter zeigt die Zeile r2 zwei Masken M11 und M12 mit M11 ”0101” und M12 ”1010”. Nach dem Beispiel der Zeile r2 der 3 ist K = 1 und M = 2. Das Beispiel zeigt auch, dass die jeweilige (m + 1)-te Maske M12, M11 durch eine Bitverschiebung der jeweiligen m-ten Masken M11, M12 um einen Bit gebildet wird.
-
Des Weiteren zeigt die Zeile r3 die ersten Zwischen-Bitstrings Z11–Z14, welche das Ergebnis einer Maskierung der Eingangs-Bitstrings EB1, EB2 mit den Masken M11, M12 darstellen.
-
Weiter zeigt die Zeile r4 eine abstrakte Darstellung der Zeile r3, wobei die Hexadezimalzahlen A–H der Zeile r3 jeweils durch ein Abstraktum ”*” ersetzt sind, welches nur angibt, dass der jeweilige Wert ungleich Null sein kann.
-
Verfahrensschritt S2: Die vier zweiten Zwischen-Bitstrings Z21–Z24 gemäß Zeile r5 ergeben sich aus einer logischen Verknüpfung der ersten Zwischen-Bitstrings Z11–Z14 gemäß Zeile r4 mittels der Integer-Multiplikation der Prozessor Einrichtung 10. Dazu werden die Produkte Z11*Z13, Z11*Z14, Z12*Z13 und Z12*Z14 mittels der Integer-Multiplikation der Prozessor-Einrichtung 10 berechnet. Die Ergebnisse dieser Berechnungsschritte bilden die zweiten Zwischen-Bitstrings Z21–Z24.
-
Verfahrensschritt S3:
-
Weiter werden die vier zweiten Zwischen-Bitstrings Z21–Z24 mit den zwei unterschiedlichen Masken M21, M22 gemäß Zeile r6 durch eine bitweise UND-Verknüpfung zur Erzeugung von zumindest vier dritten Zwischen-Bitstrings maskiert (nicht gezeigt).
-
Verfahrensschritt S4:
-
Die zumindest vier vierten Zwischen-Bitstrings werden zur Erzeugung des Ergebnis-Bitstrings E im Weiteren bitweise XOR-verknüpft.
-
4 zeigt ein schematisches Ablaufdiagramm eines dritten Ausführungsbeispiels des erfindungsgemäßen Verfahrens zum Implementieren einer Charakteristik-2-Multiplikation von zumindest zwei Eingangs-Bitstrings EB1, EB2 mit jeweils einer Anzahl N von Bits mittels einer zur Durchführung einer Integer-Multiplikation geeigneten Prozessor-Einrichtung.
-
Das Ausführungsbeispiel gemäß 4 weist die Verfahrensschritte T1–T3 auf:
-
Verfahrensschritt T1:
-
Der jeweilige Eingangs-Bitstring EB1, EB2 wird durch Einfügen einer Folge F einer Anzahl K von Nullbits zwischen allen benachbarten Bits des entsprechenden Eingangs-Bitstrings EB1, EB2 (insgesamt N – 1 mal) zur Erzeugung eines jeweiligen ersten Zwischen-Bitstrings Z11, Z12 für jeden Eingangs-Bitstring EB1, EB2 gespreizt. Dazu zeigt 5 in Zeile r1 zwei unterschiedliche Eingangs-Bitstrings EB1, EB2, und Zeile r2 zeigt die mit der Folge F gespreizten jeweiligen Eingangs-Bitstrings EB1, EB2 zur Erzeugung der entsprechenden ersten Zwischen-Bitstrings Z11, Z12. So ergibt sich der linke erste Zwischen-Bitstring Z11 aus der Spreizung des ersten Eingangs-Bitstrings EB1 und der rechte erste Zwischen-Bitstring Z12 ergibt sich aus der Spreizung des zweiten Eingangs Bitstrings EB2.
-
Wie in Zeile r2 der 5 gezeigt, bildet die jeweilige Folge F mit der Anzahl K von Nullbits ein Fenster in dem jeweiligen ersten Zwischen-Bitstring Z11, Z12.
-
Ferner genügt die Anzahl K von Nullbits einer jeweiligen Folge F der folgenden Bedingung: ⌊log2(N)⌋ ≤ K
-
Verfahrensschritt T2:
-
Die beiden ersten Zwischen-Bitstrings Z11, Z12 gemäß Zeile r2 der 5 werden durch die Integer-Multiplikation der Prozessor-Einrichtung 10 zur Erzeugung eines einzigen zweiten Zwischen-Bitstrings Z2 gemäß Zeile r3 logisch verknüpft.
-
Verfahrensschritt T3:
-
An den vorbestimmten Positionen i·(K + 1), mit i ∊ {0, ..., 2N – 2}, beginnend beim niedrigstwertigen Bit des zweiten Zwischen-Bitstrings Z2 mit der Position 0 werden Bits des erzeugten zweiten Zwischen-Bitstrings Z2 (siehe Zeile r4) extrahiert. Durch die Extraktion ergibt sich der Ergebnis-Bitstring E gemäß Zeile r5 der 5.
-
6 zeigt ein schematisches Blockschaltbild eines Ausführungsbeispiels der erfindungsgemäßen Prozessor-Einrichtung 10 zum Implementieren einer Charakteristik-2-Multiplikation von zumindest zwei Eingangs-Bitstrings EB1, EB2 mit jeweils einer Anzahl N von Bits.
-
Die Prozessor-Einrichtung 10 weist dazu eine Erzeugungseinrichtung 11, eine logische Verknüpfungseinrichtung 12 und eine Transformationseinrichtung 13 auf.
-
Die Erzeugungseinrichtung 11 ist dazu geeignet, eine Folge F einer Anzahl K von Nullbits, mit K ∊ {1, ..., N}, mittels einer ersten Transformation des jeweiligen Eingangs-Bitstrings EB1, EB2 an zumindest einer vorbestimmten Position in dem jeweiligen Eingangs-Bitstring EB1, EB2 zur Erzeugung von zumindest einem ersten Zwischen-Bitstring Z11–Z12 zu erzeugen.
-
Weiter ist die logische Verknüpfungseinrichtung 12 dazu eingerichtet, die mindestens zwei ersten Zwischen-Bitstrings Z11–Z12 durch eine Integer-Multiplikation zur Erzeugung zumindest eines zweiten Zwischen-Bitstrings Z21 zu verknüpfen.
-
Des Weiteren ist die Transformationseinrichtung 13 dazu eingerichtet, den zumindest einen zweiten Zwischen-Bitstring Z21 mittels zumindest einer zweiten Transformation zum Bilden eines Ergebnis-Bitstrings E zu transformieren.
-
Ferner zeigt 7 ein schematisches Beispiel einer Integer-Multiplikation von zwei ersten Zwischen-Bitstrings. Beispielsweise seien diese beiden ersten Zwischen-Bitstrings durch die Bitmuster ”ABCD” und ”EFGH” gegeben. Im ersten Schritt werden diese ersten Zwischen-Bitstrings mit den Masken ”0101” und ”1010” maskiert, das heißt bitweise UND-verknüpft. Dadurch entstehen die vier Bitmuster oder Zahlen ”0B0D”, ”A0C0”, ”0F0H” und ”E0G0”. Anschließend werden alle aus ”ABCD” entstandenen Bitmuster mit allen aus ”EFGH” entstandenen Bitmustern unter Verwendung der herkömmlichen Integer-Multiplikation multipliziert. Diese Multiplikation ist exemplarisch für die Muster ”0B0D” und ”0F0H” in 7 gezeigt.
-
Durch die Maskierung bilden die von Null verschiedenen Einträge in der Tabelle der Partialprodukte nach 7 notwendigerweise ein regelmäßiges Zeilen- und Spaltengitter mit Einbit-Lücken zwischen den Einträgen. Demnach können die Überträge, welche sich bei der Addition der Spaltensummen unter Verwendung der Integer-Multiplikation ergeben können, genau in diese künstlich gebildeten Lücken der maskierten Zahlen eingefügt werden. Im Beispiel nach 7 ist dieser mögliche Übertrag ”BH UND DF” als ein ”*” dargestellt. Wird nun das Ergebnis mit der Maske ”1010101” bitweise UND-verknüpft, so fallen die Überträge heraus (wie in 3 angedeutet) und es wird ein Teil des Ergebnisses der gewünschten Charakteristik-2-Multiplikation erhalten. Die drei verbleibenden Produkte zwischen den verschiedenen maskierten Zahlen liefern die restlichen Werte und werden mittels entsprechend angepasster Bitmasken berechnet. Eine bitweise XOR-Verknüpfung der vier auf diese Weise berechneten Werte liefert das Ergebnis der Charakteristik-2-Multiplikation.
-
Insgesamt verwendet die vorliegende Erfindung lediglich bitweise UND-Verknüpfung zur Maskierung der Zahlen und zur Maskierung der Teilprodukte, die herkömmliche Integer-Multiplikation der Prozessor-Einrichtung sowie eine bitweise XOR-Verknüpfung zum Aufaddierender verschiedenen Teilergebnisse. Insbesondere sind erfindungsgemäß keine Schiebebefehle mehr notwendig. Diese werden implizit durch die Integer-Multiplikation ausgeführt.
-
Die exakte Wahl der Masken zur Implementierung der vorliegenden Erfindung hängt von der Länge (Anzahl N der Bits) der zu multiplizierenden Zahlen oder Eingangs-Bitstrings ab. In der nachfolgenden Tabelle sind für verschiedene Bitlängen N der zu multiplizierenden Eingangs-Bitstrings EB1, EB2 oder Zahlen die Breiten der Fenster in den Masken in Bits sowie die Anzahl der benötigten Integer-Multiplikationen aufgeführt:
Bitlänge der Zahlen | Bitlänge der Maskenfenster | Anzahl Integer Multiplikationen |
4 | 1 | 4 |
8 | 2 | 9 |
16 | 2 | 9 |
32 | 3 | 16 |
-
Im Folgenden wird ein Ausführungsbeispiel einer erfindungsgemäßen Implementierung einer Charakteristik-2-Multiplikation für einen 32-bit Intel Pentium 4 oder AMD Athlon Prozessor mit SSE2-Einheit beschrieben. Diese Prozessoren besitzen acht Register der Länge 128 bit mit den Bezeichnungen xmm0–xmm7. Dabei existieren Assembler-Befehle pand und pxor für eine bitweise UND- und XOR-Verknüpfung zweier Register oder eines Registers mit einem Speicherinhalt. Außerdem haben diese Prozessoren einen Befehl pmuludq, welcher zwei Integer-Multiplikationen mit jeweils 32-Bit-Operanden und 64-bit-Ergebnis parallel durchführt. Unter Verwendung dieser Befehle ist untenstehende Assembler-Routine zur Charakteristik-2-Multiplikation von 64-bit-Zahlen mit 128 Bit-Ergebnis erstellt. Diese untenstehende Assembler-Routine kann mit dem nasm-Assembler übersetzt werden und ist unter dem gcc-Compiler lauffähig. Es werden vier verschiedene Masken verwendet und die Bitlänge der Maskenfenster ist 3: