Beschreibung
Vorrichtung und Verfahren zum Berechnen eines ganzzahligen Quotienten
Die vorliegende Erfindung bezieht sich auf Rechenalgorithmen und insbesondere auf Rechenalgorithmen, die für kryptographische Anwendungen benötigt werden.
Insbesondere in der Public-Key-Kryptographie, jedoch auch in anderen Kryptographiegebieten, wachsen die Schlüssellängen stetig. Dies ist darin begründet, daß auch die Sicherheitsanforderungen an solche kryptographische Algorithmen immer mehr zunehmen. Anhand des RSA-Verfahrens als Vertreter eines asym- metrischen Kryptographiekonzepts, also eines Public-Key-
Verfahrens, nimmt die Sicherheit gegenüber sogenannten Brute- Force-Angriffen mit der verwendeten Schlüssellänge zu. Brute- Force-Angriffe sind Angriffe auf einen kryptographischen Algorithmus, bei dem durch Durchprobieren sämtlicher Möglich- keiten auf einen Schlüssel geschlossen werden soll. Es ist unmittelbar einsichtig, daß mit zunehmender Schlüssellänge die Zeit, die theoretisch für einen Brute-Force-Angriff benötigt wird, um alle Möglichkeiten durchzuprobieren, stark ansteigt.
In diesem Zusammenhang sei angemerkt, daß zu früheren Zeiten RSA-Anwendungen mit Schlüssellängen von 512 Bits als ausreichend angesehen wurden. Aufgrund technischer und mathematischer Fortschritte der „Gegenseite" wurden dann die Schlüs- seilängen für typische RSA-Anwendungen auf 1024 Bits erhöht. Inzwischen wird von manchen Seiten die Ansicht vertreten, daß auch diese Schlüssellänge nicht ausreichend ist, so daß RSA- Schlüssellängen von 2048 Bits angestrebt werden.
Wenn andererseits existierende kryptographische Coprozessoren, wie z. B. auf SmartCards, betrachtet werden, so ist zu sehen, daß selbstverständlich der Wunsch besteht, auch RSA-
Anwendungen mit beispielsweise 2048 Bits Schlüssellängen auf kryptographischen Schaltungen laufen zu lassen, die eigentlich nur für Schlüssellängen von z. B. 1024 Bits entwickelt' worden sind. So ist es gerade ein Kennzeichen von arithmeti- sehen Coprozessoren für existierende SmartCard-Anwendungen, daß sie für eine feste Bitlänge entwickelt worden sind, die nicht für die neuesten Sicherheitsanforderungen geeignet sind, d. h. zu klein sind. Dies führt dazu, daß beispielsweise ein 2048-Bit-RSA-Algorithrαus auf 1024 Bit-Coprozessoren nicht effizient gehandhabt werden kann. Für RSA-Anwendungen ist beispielsweise der Chinesische Restsatz (CRT; CRT = Chinese Remainder Theorem) bekannt, bei dem eine modulare Expo- nentiation mit großer Schlüssellänge in zwei modulare Exponentiationen mit halb so großer Schlüssellänge zerlegt wird, wonach die Ergebnisse der beiden modularen Exponentiationen halber Länge entsprechend zusammengefaßt werden.
In jüngster Zeit hat sich herausgestellt, daß der chinesische Restsatz besonders anfällig gegenüber DFA-Angriffen (DFA = Differential Fault Analysis) ist.
Ein Problem bei vielen Verfahren ist daher das „Aufdoppeln" der sogenannten modularen Multiplikation, die eine zentrale Operation in kryptographischen Berechnungen ist. So kann eine modulare Exponentiation in viele modulare Multiplikationen zerlegt werden, d. h. in eine Operation, bei dem ein Produkt eines ersten Operanden A und eines zweiten Operanden B in einer Restklasse bezüglich eines Moduls N berechnet wird. Wenn die Operanden A und B jeweils 2 n Bits haben, so werden typi- scherweise Rechenwerke verwendet, die eine Länge von 2 n Bits haben. Diese Rechenwerke werden aufgrund ihrer hohen Länge als Langzahlrechenwerke bezeichnet, im Gegensatz zu beispielsweise klassischen 8-, 16-, 32- oder 64-Bit- Architekturen, die z. B. für PC- oder Workstation-Prozessoren eingesetzt werden.
Wünsche bestehen daher dahingehend, eine modulare Multiplikation A * B mod N mit Zahlen A, B und N der Bit-Länge 2 n auf einem n-Bit-Rechenwerk auszuführen. Dies ist sehr zeitaufwendig, da die Zahlen A, B, N, ... immer nur bruchstückweise ge- laden werden können, weshalb konventionelle Methoden, sofern sie nicht gänzlich versagen, organisatorisch aufwendig und fehleranfällig sind. In der Technik gibt es mehrere Verfahren, mit denen dieses Problem bisher gelöst worden ist. Diese Verfahren sind unter dem Stichwort Montgomery-Multiplikation, normale Multiplikation, z. B. mit Karatsuba-Ofman und späterer Reduktion, wie z. B. Barret-Reduktion, bekannt.
Ein weiteres Konzept, bei dem eine Montgomery-Rechnung in einem „CRT-Fenster" verwendet wird, ist in P. Pailler, „Low- cost double size modular exponentiation or how to Stretch y- our cryptocoprocessor" dargelegt.
Sämtliche derartigen Konzepte sind aufwendig hinsichtlich der Rechenzeit und der Datenorganisation und daher nicht immer effizient.
In der am gleichen Tag eingereichten deutschen Patentanmeldung mit dem Titel „Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation", wird ein Konzept beschrieben, bei dem eine modulare Multiplikation für Operanden von 2 n Bits in mehrere sogenannte MMD-Operationen umgesetzt werden, für die Operanden der halben Länge, also mit n Bits, ausreichend sind. Eine MMD-Operation liefert neben dem Rest, der sich durch A x B mod N ergibt, auch das Er- gebnis der entsprechenden ganzzahligen Division, d. h. der DIV-Operation, wobei dieses Ergebnis auch als ganzzahliger Quotient Q bezeichnet ist.
Allgemein führt die Operation T mod N zu einem Rest R, wenn ein Term T bezüglich eines Moduls N reduziert wird. Die Operation T div N liefert dagegen den ganzzahligen Quotienten hinsichtlich des Moduls N, so daß der Term T aus Q x N + R
rekonstruierbar ist. Die MMD-Operation (MMD = MultModDiv) dient daher einer Umrechnung eines beliebigen Ter s T in einen ganzzahligen Quotienten Q und einen Rest R bezüglich eines Moduls N.
In der üblichen modularen Arithmetik, die für Kryptographietechniken verwendet wird, wird normalerweise das Ergebnis der DIV-Operation, also der ganzzahlige Quotient nicht benötigt und auch nicht berechnet. Das oben beschriebenen Konzept ba- siert jedoch darauf, auch die DIV-Information, also den ganzzahligen Quotienten zu verwerten. So können auch andere Anwendungen in der Technik existieren, bei denen nicht nur das Ergebnis der MOD-Operation, also der Rest, benötigt wird, sondern bei denen auch der ganzzahlige Quotient, also das Er- gebnis der DIV-Operation benötigt wird.
Eine bekannte, effiziente und oft verwendete Möglichkeit, um die modulare Multiplikation zu berechnen, ist in der Technik als Montgomery-Multiplikation bekannt und z. B. im „Handbook of Applied Cryptography", Menezes, van Oorschot, Vanstone, CRC Press, Seiten 600-603, beschrieben. Die Montgomery- Reduktion ist eine Technik, die eine effiziente Implementation der modularen Multiplikation erlaubt, ohne daß der klassische modulare Reduktionsschritt explizit ausgeführt wird. Allgemein gesagt wird bei der Montogomery-Reduktion die Divisionsoperation durch einfache Verschiebungsoperationen ausgedrückt .
Mittlerweile ist auch eine Erweiterung der Montgomery- Multiplikationsoperation auf den elliptischen Körper GF(2n) bekannt. Diese Erweiterung ist in „Montgomery Multiplication in GF(2k)", Koc, Azar, Designs, Codes and Cryptography, Bd.
14, 1998, S. 57 - 69, beschrieben. Diese Erweiterung ist ferner in „A Scalable and Unified Multiplier Architecture for Finite Fields Z/NZ and GF(2n)", Erkay Savas u. a., Crypto- graphic Hardware and Embedded Systems (CHESS 2000), S. 281 -
289, Springer Lecture Notes, beschrieben.
Nachteilig an der Montgomery-Multiplikation über Z/NZ oder GF(2n) ist die Tatsache, daß zwar die hardwaremäßig schlecht implementierbare Divisionsoperation zur modularen Reduktion durch Verschiebungsoperationen umgangen wird, aber keine Look-Ahead-Verfahren oder Vorausschau-Verfahren eingesetzt werden, um die modulare Multiplikationsoperation hardwaremäßig zu beschleunigen.
Die DE 3631992 C2 offenbart ein Verfahren, bei dem die modulare Multiplikation über Z/NZ unter Verwendung eines Mul- tiplikations-Vorausschau-Verfahrens und unter Verwendung eines Reduktions-Vorausschau-Verfahrens beschleunigt werden kann. Das in der DE 3631992 C2 beschriebene Verfahren wird auch als ZDN-Verfahren bezeichnet und anhand von Fig. 6 näher beschrieben. Nach einem Startschritt 900 des Algorithmus werden die globalen Variablen M, C und N initialisiert. Ziel ist es, folgende modulare Multiplikation zu berechnen:
Z = M * C mod N.
M wird als der Multiplikator bezeichnet, während C als der Multiplikand bezeichnet wird. Z ist das Ergebnis der modularen Multiplikation, während N der Modul ist.
Hierauf werden verschiedene lokale Variablen initialisiert, auf die zunächst nicht näher eingegangen werden braucht. Anschließend werden zwei Vorausschau-Verfahren angewandt. Im Multiplikations-Vorausschau-Verfahren GEN_MÜLT_LA wird unter Verwendung verschiedener Look-Ahead-Regeln ein Multiplikati- ons-Verschiebungswert sz sowie ein Multiplikations- Vorausschau-Parameter a berechnet (910) . Hierauf wird der gegenwärtige Inhalt des Z-Registers einer Links-Verschiebungs- Operation um sz-Stellen unterzogen (920).
Im wesentlichen parallel dazu wird ein Reduktions- Vorausschau-Verfahren GEN_Mod_LA (930) durchgeführt, um einen
Reduktionsverschiebungswert sN und einen Reduktions-Parameter b zu berechnen. In einem Schritt 940 wird dann der gegenwärtige Inhalt des Modul-Registers, also N, um sN Stellen verschoben, um einen verschobenen Modulwert N' zu erzeugen. Die zentrale Drei-Operanden-Operation des ZDN-Verfahrens findet in einem Schritt 950 statt. Hierbei wird das Zwischenergebnis Z' nach dem Schritt 920 zu dem Multiplikanden C, der mit dem Multiplikations-Vorausschau-Parameter a multipliziert ist, und zu dem verschobenen Modul N ' , der mit dem Reduktions- Vorausschau-Parameter b multipliziert ist, addiert. Je nach aktueller Situation können die Vorausschau-Parameter a und b einen Wert von +1, 0 oder -1 haben.
Ein Fall besteht darin, daß der Multiplikations-Vorausschau- Parameter a +1 beträgt, und daß der Reduktion-Vorausschau- Parameter b -1 beträgt, so daß zu einem verschobenen Zwischenergebnis Z' der Multiplikand C hinzu addiert wird, und der verschobene Modul N' davon subtrahiert wird, a wird u. a. einen Wert gleich 0 haben, wenn das Multiplikations- Vorausschau-Verfahren mehr als eine voreingestellte Anzahl von einzelnen Links-Verschiebungen zulassen würde, also wenn sz größer als der maximal zulässige Wert von sz ist, der auch als k bezeichnet wird. Für den Fall, daß a gleich 0 ist, und daß Z' aufgrund der vorausgehenden modularen Reduktion, also der vorausgehenden Subtraktion des verschobenen Moduls noch ziemlich klein ist, und insbesondere kleiner als der verschobene Modul N' ist, muß keine Reduktion stattfinden, so daß der Parameter b gleich 0 ist.
Die Schritte 910 bis 950 werden so lange durchgeführt, bis sämtliche Stellen des Multiplikanden abgearbeitet sind, also bis m gleich 0 ist, und bis auch ein Parameter n gleich 0 ist, welcher angibt, ob der verschobene Modul N' noch größer als der ursprüngliche Modul N ist, oder ob trotz der Tatsa- ehe, daß bereits sämtliche Stellen des Multiplikanden abgearbeitet sind, noch weitere Reduktionsschritte durch Subtrahieren des Moduls von Z durchgeführt werden müssen.
Abschließend wird noch bestimmt, ob Z kleiner als 0 ist. Falls dies der Fall ist, muß, um eine abschließende Reduktion zu erreichen, der Modul N zu Z hinzuaddiert werden, damit schließlich das korrekte Ergebnis Z der modularen Multiplikation erhalten wird. In einem Schritt 960 ist die modulare Multiplikation mittels des ZDN-Verfahrens beendet.
Der Multiplikations-Verschiebungswert sz sowie der Multipli- kations-Parameter a, welche im Schritt 910 durch den Mul- tiplikations-Vorausschau-Algorithmus berechnet werden, ergeben sich durch die Topologie des Multiplikators sowie durch die eingesetzten Vorausschau-Regeln, die in der DE 3631992 C2 beschrieben sind.
Der Reduktions-Verschiebungswert sN und der Reduktions- Parameter b werden, wie es ebenfalls in der DE 3631992 C2 beschrieben ist, durch Vergleich des gegenwärtigen Inhalts des Z-Registers mit einem Wert 2/3 mal N bestimmt. Aufgrund die- ses Vergleiches trägt das ZDN-Verfahren seinen Namen (ZDN = Zwei Drittel N) .
Das ZDN-Verfahren, wie es in Fig. 6 dargestellt ist, führt die modulare Multiplikation auf eine Drei-Operanden-Addition (Block 950 in Fig. 6) zurück, wobei zur Steigerung der Rechenzeiteffizienz das Multiplikations-Vorausschau-Verfahren und damit einhergehend das Reduktions-Vorausschau-Verfahren eingesetzt werden. Im Vergleich zur Montgomery-Reduktion für Z/NZ kann daher ein Rechenzeitvorteil um einen Faktor in der Größenordnung von 3 erreicht werden.
Nachteilig an den oben beschriebenen Multiplikationskonzepten ist, daß lediglich die Modulo-Operation berechnet wird, daß jedoch nicht die DIV-Operation berechnet wird, also die Ope- ration, die den ganzzahligen Quotienten Q bezüglich des Moduls N des Produkts aus dem Multiplikator M und dem Multiplikanden C liefert, so daß das Produkt C x M = Q - N + Z darge-
stellt ist. Wie es jedoch ausgeführt worden ist, ist der ganzzahlige Quotient jedoch für bestimmte Anwendungen nützlich, wobei eine dieser Anwendungen, wie es vorstehend beschrieben worden ist, darin besteht, eine modulare Multipli- kation mit Zahlen einer bestimmten Länge auf einem Rechenwerk der halben Länge effizient auszuführen.
Die Aufgabe der vorliegenden Erfindung besteht darin, ein Konzept zum einfach und effizient implementierbaren Berechnen eines ganzzahligen Quotienten zu schaffen.
Diese Aufgabe wir durch eine Vorrichtung nach Anspruch 1 oder ein Verfahren nach Anspruch 16 gelöst.
Der vorliegenden Erfindung liegt die Erkenntnis zugrunde, daß bei Prozessoren zum Berechnen des Rests Z eines Produkts aus einem Multiplikator und einem Multiplikanden - und optional aus einer Addition dieses Produkts mit einem dritten Operanden multipliziert mit dem Faktor 2n -, die die Bits des Mul- tiplikators in mehreren Verarbeitungsschritten sequentiell abarbeiten oder „abscannen", der ganzzahlige Quotient ohne Eingriff in das Rechenwerk selbst und ferner ohne einen oder einen minimalen Eingriff in den Controlteil, das das Rechenwerk steuert, extrahierbar ist.
Bei der üblichen modularen Arithmetik ist der ganzzahlige Quotient, also das Ergebnis der DIV-Operation mangels geeigneter Verwendung immer ignoriert worden. Erfindungsgemäß wird der ganzzahlige Quotient unter Verwendung eines Prozessors zum Berechnen des Rests eines Terms bezüglich eines Moduls erhalten, derart, daß in jedem Verarbeitungsschritt, in dem der Prozessor ein bezüglich des Moduls reduziertes Zwischenergebnis berechnet, Reduktionsinformationen einerseits und Ordnungsinformationen andererseits, welche sich auf Stellen des ganzzahligen Quotienten beziehen, die in dem jeweiligen
Verarbeitungsschritt betroffen sind, mitprotokolliert werden. Dann, nachdem die Multiplikatorbits mittels der mehrere Ver-
arbeitungsschritte abgearbeitet sind, werden die mitprotokollierten Reduktionsinformationen und Ordnungsinformationen von den jeweiligen Schritten ausgewertet, um daraufhin ohne aufwendige arithmetische Operationen den ganzzahligen Quotienten zu erhalten.
Bei einem bevorzugten Ausführungsbeispiel werden parallel zum Verarbeiten der Multiplikatorbits durch die Verarbeitungseinrichtung Protokollregister geführt, wobei Bits bestimmter Ordnung, die durch die Ordnungsinformationen bestimmt ist, unter Verwendung der Reduktionsinformationen nach jedem Verarbeitungsschritt gesetzt oder nicht gesetzt werden. Werden zwei oder mehrere solche Protokollregister eingesetzt, so ist die Einrichtung zum Auswerten in der Lage, durch einfaches Addieren oder Subtrahieren der Protokollregister nach der Abarbeitung sämtlicher Multiplikatorbits den ganzzahligen Quotienten zu erhalten.
Das erfindungsgemäße Konzept ist insbesondere dahin gehend vorteilhaft, daß keine Informationen benötigt werden, die ü- ber Informationen hinausgehen, die ohnehin von einer solchen Verarbeitungseinrichtung zum Berechnen der Modulo-Operation ausgegeben werden. Der ganzzahlige Quotient wird somit gewissermaßen „kostenlos" (insbesondere bezüglich der Rechenzeit) und ohne Eingriffe in das Rechenwerk der Verarbeitungseinrichtung erhalten. Lediglich eine Protokollierungseinrichtung muß vorgesehen werden, die die benötigten Reduktionsinformationen oder Ordnungsinformationen am Ende jedes Verarbeitungsschrittes aus dem Controlteil extrahiert.
Bei einer abschließenden Auswertung der Protokollinformationen durch eine Auswertungseinrichtung ergibt sich dann der ganzzahlige Quotient, ohne daß eine einzige Änderung am festverdrahteten Rechenwerk nötig war.
Diese Tatsache ist insbesondere dahin gehend von Bedeutung, daß kryptographische Rechenwerke typischerweise Langzahl-
Rechenwerke sind, die auf bestimmte Operationen, wie z. B. die modulare Multiplikation, optimiert sind. Eingriffe in solche Langzahl-Rechenwerke, die typischerweise Addierer mit 1024 oder mehr Einzeladdierern oder „Bit-Slices" umfassen, sind im Entwurf aufwendig, fehleranfällig und dahin gehend nachteilhaft, daß wieder komplette Funktionstests durchzuführen sind. Insbesondere für sicherheitskritische Anwendungen, für die üblicherweise Kryptographie-Algorithmen eingesetzt werden, ist der Sicherheitsaspekt von besonderer Bedeutung, da sensible Informationen, wie beispielsweise Geldbeträge o- der persönliche Informationen, verarbeitet werden, wenn z. B. an Smartcards oder allgemein Chipkarten gedacht wird.
Das erfindungsgemäße Verfahren ist ferner dahin gehend vor- teilhaft, daß es außerdem wenig rechenzeitintensiv ist, was insbesondere dann von Bedeutung ist, wenn aufwendige kryptographische Algorithmen zu berechnen sind, und zwar mit Prozessoren, die aufgrund der Tatsache, daß ihre Chipfläche begrenzt ist, wenn wieder an Chipkarten gedacht wird, begrenzte Rechen- und Speicherressourcen haben.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend bezug nehmend auf die beiliegenden Zeichnungen detailliert erläutert. Es zeigen:
Fig. 1 ein Blockschaltbild einer erfindungsgemäßen Vorrichtung zum Berechnen eines ganzzahligen Quotienten;
Fig. 2 ein Ablaufdiagramm eines einfachen modularen Multiplikationsalgorithmus;
Fig. 3 ein Ablaufdiagramm des in Fig. 2 gezeigten einfachen Multiplikationsalgorithmus, bei dem neben der Modulo-Operation auch die DIV-Operation ausgeführt wird;
Fig. 4 ein zusammengefaßtes Ablaufdiagramm des bekannten ZDN-Algorithmus;
Fig. 5 ein Ablaufdiagramm des ZDN-Algorithmus zum zusätz- liehen Berechnen des ganzzahligen Quotienten; und
Fig. 6 ein detailliertes Ablaufdiagramm des bekannten ZDN- Algorithmus .
Fig. 1 zeigt ein Blockschaltbild einer erfindungsgemäßen Vorrichtung zum Berechnen eines ganzzahligen Quotienten eines Terms T bezüglich eines Moduls N, wobei der Term ein Produkt aus einem binären Multiplikator M und einem binären Multiplikanden C aufweist. Die Vorrichtung umfaßt eine Verarbeitungs- einrichtung 10, die sich in ein Rechenwerk 10a und ein
Controlteil 10b aufgliedert. Das Rechenwerk besteht typischerweise aus einem Langzahladdierer für zwei oder mehr Operanden, während der Controlteil 10b ausgebildet ist, um das Rechenwerk zu steuern, damit dasselbe sequentiell die Multi- plikatorbits abarbeitet und schließlich, wenn alle Multiplikatorbits abgearbeitet sind, das Ergebnis Z der modularen Reduktion des Terms, der das Produkt C • M aufweist, liefert.
Die erfindungsgemäße Vorrichtung umfaßt ferner eine Protokol- lierungseinrichtung 12 zum Protokollieren von Reduktionsinformationen in den jeweiligen Schritten und zum Protokollieren von Ordnungsinformationen über durch eine oder mehrere durch den jeweiligen Verarbeitungsschritt betroffene Stellen des ganzzahligen Quotienten. Die Protokollierungseinrichtung 12 ist wirksam mit dem Controlteil 10b gekoppelt, um die Pro- tokollierungsinformationen für jeden Schritt zu extrahieren. Wenn der Controlteil 10b einer ferner vorgesehenen Auswertungseinrichtung 14 signalisiert, daß alle Multiplikatorbits abgearbeitet sind und das Endergebnis Z vorliegt, greift die Auswertungseinrichtung 14 auf die Protokollierungseinrichtung 12 zu, um die Reduktionsinformationen und die Ordnungsinfor-
mationen auszuwerten, um schließlich den ganzzahligen Quotienten Q auszugeben.
Hardware-technisch wird es bevorzugt, die modulare Reduktion durch Subtraktion des Moduls durchzuführen, wobei in einem Verarbeitungsschritt je nach Implementierung des Rechenwerks 10a eine oder mehrere Modul-Subtraktionen stattfinden können. Werden, wie es nachfolgend erläutert wird, Multiplikations- Look-Ahead-Algorithmen und ferner noch Reduktions-Look-Ahead- Algorithmen eingesetzt, so kann in einem Verarbeitungsschritt der Fall auftreten, daß ein Modul zu dem Zwischenergebnis hinzuaddiert wird. Diese Reduktionsinformationen, also ob ein Modul subtrahiert wird, ob ein Modul addiert wird, oder ob, was ebenfalls auftreten kann, weder eine Addition des Moduls noch eine Subtraktion des Moduls auftritt, können von der
Protokollierungseinrichtung 12 in jedem Verarbeitungsschritt protokolliert werden. Die OrdnungsInformationen beziehen sich darauf, welche Stellen des Quotienten durch den jeweiligen Verarbeitungsschritt tangiert werden. So werden die Multipli- katorbits typischerweise von oben, also vom MSB aus (MSB =
Most Significant Bit) ausgehend abgearbeitet oder abgescannt. Die Ordnungsinformationen können bei einfacheren modularen Multiplikationsalgorithmen direkt der Ordnung des in einem Schritt betrachteten Multiplikatorbits entsprechen. Wird le- diglich ein Multiplikations-Look-Ahead-Algorithmus eingesetzt, so werden in einem Verarbeitungsschritt mehrere Bits des Multiplikators betrachtet und verarbeitet. In diesem Fall werden die Ordnungsinformationen von den mehreren Bits des Multiplikators abhängen. Im Falle gekoppelter Multiplikati- ons-Look-Ahead-Algorithmen und Reduktions-Look-Ahead-
Algorithmen hängen die Ordnungsinformationen indirekt von der Ordnung der in einem Verarbeitungsschritt betrachteten Multiplikatorbits ab. Dieser Zusammenhang ist, wie es für Look- Ahead-Algorithmen typisch ist, einerseits datenabhängig und andererseits von der Vorgeschichte bestimmt.
Bei einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung ist die Protokollierungseinrichtung aufgrund der Hardware-technischen einfachen Implementierbarkeit als Registersatz mit einem oder mehreren Registern ausgebildet, welche Schritt für Schritt beschrieben werden und schließlich, nach der Verarbeitung des kompletten Multiplikators durch die Auswertungseinrichtung in geeigneter Weise ausgewertet, wie z. B. addiert oder subtrahiert, werden, um den ganzzahligen Quotienten Q zu erhalten.
Im nachfolgenden wird Bezug nehmend auf Fig. 2 ein einfacher Multiplikationsalgorithmus dargestellt, der auch als „Schulbuchalgorithmus" bekannt ist. Dieser Algorithmus erhält als Eingabe den Modul N, den Multiplikanden C, welcher definiti- onsgemäß kleiner als der Modul N ist, und den Multiplikator M, der aus binären Multiplikatorbits M0 (lsb) bis Mm-ι (msb) besteht und größer als 0 ist. Dieser Algorithmus liefert als Ausgabe Z = C x M mod N. In einem ersten Initialisierungsschritt wird die Ordnung des Multiplikators i auf m-1 initia- lisiert. Ferner wird das Z-Register, das während der Verarbeitung als Zwischenergebnisregister und schließlich als Endergebnisregister fungiert, ebenfalls initialisiert (20). Hierauf wird in einer Stufe 21 untersucht, ob das gerade betrachtete Bit des Multiplikators, also Mi gleich 0 oder 1 ist. Ist das Bit gleich 0, so wird lediglich eine Multiplikation mit dem Faktor 2 oder eine Verschiebung um eine Stelle im Z-Register durchgeführt (22a) . Ist das Bit dagegen gleich 1, so wird der Inhalt des Registers um eine Stelle nach links verschoben, was einer Multiplikation mit 2 entspricht, und es wird ferner, wie es aus einem Block 22b ersichtlich ist, der Multiplikand C hinzuaddiert. Die modulare Reduktion findet dahin gehend statt, daß zunächst in einer Stufe 23 untersucht wird, ob der Inhalt des Zwischenergebnisregisters Z größer oder gleich N ist. Wird diese Frage bejaht, so wird ein ers- tes Mal der Modul N von dem Zwischenergebnisregister Z subtrahiert (24). Dann wird erneut untersucht, ob der jetzige Inhalt des Zwischenergebnisregisters Z größer oder gleich N
ist (25) . Wird diese Frage wieder bejaht, so wird ein weiteres Mal der Modul N subtrahiert (26). Dieses Prozedere wird wiederholt, bis i gleich 0 ist, was in einem Block 27 überprüft wird. Wird die Frage mit Ja beantwortet, so ist der Al- gorithmus zu Ende. Wird diese Frage dagegen mit Nein beantwortet, so wird i in einem Block 28 um „1" dekrementiert, und es wird eine weitere Iterationsschleife unter Verwendung der Blöcke 21 bis 27 durchlaufen.
Nachfolgend wird anhand von Fig. 3 die erfindungsgemäße Erweiterung des in Fig. 2 gezeigten Algorithmus, also die Funktionalität der Protokollierungseinrichtung 12 von Fig. 1 und der Auswertungseinrichtung 14 von Fig. 1 erläutert. Elemente in Fig. 3, die die gleichen Bezugszeichen tragen wie in Fig. 2 haben die selbe Funktion und werden nicht erneut erläutert. Die Protokollierungseinrichtung umfaßt bei einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung zur Erweiterung des in Fig. 2 gezeigten bekannten „Schulbuchalgorithmus" zwei Hilfsregister Q und Q' , die in einem Schritt 20' initia- lisiert werden. Abhängig von der Beantwortung der Frage im Block 23, also ob das Zwischenergebnis Z, das durch den Schritt 22a und den Schritt 22b erhalten worden ist, größer oder gleich n ist, werden Bits der Ordnung i in dem ersten Hilfsregister Qi oder im zweiten Hilfsregister Q'i mit „0" beschrieben. , Die Reduktionsinformationen bestehen hier in den „Nullen", die an durch die Ordnungsinformationen bestimmten Stellen i der Register eingetragen werden. War das Zwischenergebnis Z kleiner als N, wie es im Block 23 bestimmt worden ist, wurde keine Modulsubtraktion durchgeführt, was sich unmittelbar darin äußert, daß die entsprechenden Hilfs- registerbits gleich 0 gesetzt werden. Wird dagegen eine Modulsubtraktion (Schritt 24) durchgeführt, so wird das Bit i des ersten Hilfsregisters Q auf 1 gesetzt, während das Bit des zweiten Hilfsregisters Q'i auf 0 gesetzt wird, wie es in einem Block 30b zu sehen ist.
Wird eine zweite Modulsubtraktion durchgeführt (Block 26 von Fig. 3) , so werden sowohl das Bit i des ersten Hilfsregisters Q als auch das Bit i des zweiten Hilfsregisters Q' auf 1 gesetzt, wie es durch einen Block 30c zu sehen ist. Dieses Pro- zedere wird für jeden Verarbeitungsschritt durchgeführt, bis im Block 27 bestimmt worden ist, daß i gleich 0 ist. Dann wird die Auswertungseinrichtung 14 von Fig. 1 aktiv, um die beiden Register Q und Q' zu addieren, wie es in einem Block 32 dargestellt ist, um als Ergebnis schließlich den ganzzah- ligen Quotienten Q zu erhalten. Die Funktionalität der Protokollierungseinrichtung wird somit durch die Blöcke 30a, 30b, 30c implementiert, während die Funktionalität durch die Auswertungseinrichtung 14 von Fig. 1 durch den Block 32 in Fig. 3 implementiert wird.
Aus Fig. 3 wird ersichtlich, daß keine Änderung am grundsätzlichen Algorithmus erforderlich ist, um die Quotienteninformation zu erhalten. Im Hinblick auf Fig. 1 bedeutet dies, daß sowohl das Rechenwerk 10a als auch der Controlteil 10b der Verarbeitungseinrichtung 10 nicht geändert werden müssen und somit zur Berechnung der Quotienteninformation nicht neu entwickelt und getestet werden müssen.
Aus Fig. 3 wird ferner ersichtlich, daß das Mit- Protokollieren der Reduktionsinformationen und der Ordnungsinformationen keinen weiteren Rechenschritt benötigt. Lediglich die Auswertungseinrichtung, die die beiden Register addieren muß, benötigt einen Addierzyklus, der jedoch nicht ins Gewicht fällt, wenn bedacht wird, daß die Größen N, C, M z. B. 1024 Stellen haben, was bei dem in Fig. 3 gezeigten Algorithmus bedeutet, daß die Iterationsschleife 1024 Mal durchlaufen werden muß.
Der in Fig. 3 gezeigte Algorithmus kann einfach dahin gehend erweitert werden, um nicht nur den Term C x M zu verarbeiten, sondern einen Term C x M + D x 2n. Dies kann einfach dadurch erreicht werden, daß in dem Initialisierungsschritt 20' das
Zwischenergebnis Z nicht auf 0 initialisiert wird, sondern auf D initialisiert wird. Aus diesem Grund trägt die Operation, die durch die in Fig. 3 gezeigte Schaltung ausgeführt wird, den Namen Initialisierungs-MMD-Operation, wenn das Zwi- schenergebnisregister Z vor dem ersten Iterationsschritt auf einen Wert D initialisiert wird. In diesem Zusammenhang steht MMD für MultModDiv, um anzuzeigen, daß der in Fig. 3 gezeigte Algorithmus sowohl das modular reduzierte Ergebnis des Terms als auch den ganzzahligen Quotienten des Terms C x M + D x 2n liefert, wobei sich für D gleich 0 die übliche Multiplikation ergibt.
Fig. 4 zeigt eine etwas komprimierte Darstellung von Fig. 6, nämlich den bekannten ZDN-Algorithmus, der vorstehend erläu- tert worden ist. Ein Initialisierungsblock 40 zeigt die für die vorliegende Erfindung bedeutsamen Größen i, Z und c. Wieder kann Z entweder auf 0 oder auf D initialisiert werden, um entweder eine MMD-Operation oder eine Initialisierungs-MMD- Operation auszuführen.
Wie es durch einen nachfolgenden Block dargestellt ist, erzeugt die ZDN-Einrichtung 910, 920, 930 von Fig. 6 einen Mul- tiplikations-Verschiebungswert sz, der üblicherweise immer größer 0 ist, einen Multiplikator-Bit-Wert sM, der anzeigt, wie viele Multiplikator-Bits in einem Look-Ahead-Schritt verarbeitet worden sind, den Reduktions-Verschiebungswert sN, sowie den Multiplikations-Look-Ahead-Parameter a und den Re- duktions-Look-Ahead-Parameter b. Die Multiplikator-Bit- Ordnungszahl i wird nach jedem Schritt um sM reduziert. Die Größe c gibt an, an welcher Stelle eines Puffers für den Modul das Komma des Moduls, also das LSB des ursprünglichen Moduls steht. Die Größe c wird nach jedem Schritt durch c + sN geändert .
In einem Schritt 940 findet dann die Modul-Verschiebung statt, die durch Multiplikation des alten Inhalts des Modul- Registers N mit einem Faktor 2S N darstellbar ist. In einem
Schritt 950 findet dann die bereits bezug nehmend auf Fig. 6 beschriebene 3-Operanden-Addition statt, die so lange fortgesetzt wird, bis i gleich 0 ist und c ebenfalls gleich 0 ist (Block 42) . Ist dies der Fall, wird in einem Schritt 44 un- tersucht, ob das Zwischenergebnisregister Z kleiner als 0 ist. Ist dies der Fall, so wird noch einmal der Modul N hinzuaddiert (Block 46) , da der Rest der modularen Multiplikation, also Z, per Definition größer als 0 sein muß. Wird dagegen Block 42 mit Ja beantwortet, wo wird eine weitere Itera- tion durchgeführt, um eines oder mehrere Multiplikatorbits, je nach Look-Ahead-Eigenschaft des Multiplikators zu verarbeiten.
Im nachfolgenden wird anhand von Fig. 5 die erfindungsgemäße Erweiterung des in den Figuren 4 und 6 gezeigten bekannten
ZDN-Algorithmus dargestellt. Gleiche Bezugszeichen in den Figuren 4 und 5 bedeuten gleiche Elemente. Aus diesem Grund werden diese Elemente nicht noch einmal erläutert. Der durch einen Block 910, 920, 930 bezeichnete ZDN-Prozessor liefert wieder sz, sN, a und b. Hierauf wird der in dem Initialisierungsblock 40' initialisierte Quotienten-Ordnungswert j, welcher auf m initialisiert worden ist, in einem Block 50 verringert, und zwar um die Differenz aus dem Multiplikations- Verschiebungswert sz und dem Reduktions-Verschiebungswert sN. Stellt der Multiplikations-Look-Ahead-Algorithmus, welcher für den Multiplikations-Verschiebungswert sz verantwortlich ist, fest, daß das Zwischenergebnis nach oben verschoben werden soll, also zu höherwertigen Bits hin, so wird dies hinsichtlich der Ordnungsinformationen der Protokollierungsein- richtung, welche durch Block 50 dargestellt ist, dahin gehend berücksichtigt, daß geringerwertige Bits des Quotienten betroffen sind. Die Ordnung eines Quotientenbits im aktuellen Schritt ist daher um (sz - sN) niedriger als die Ordnung des entsprechenden Quotientenregisterbits aus dem vorherigen Schritt.
Ist dagegen ein positiver Reduktions-Verschiebungswert sN vorhanden, so bedeutet dies, daß der Inhalt des Modul- Registers N um den Faktor 2S N größer ist als im vorherigen Schritt. Wenn ein solcher „vergrößerter" Modul subtrahiert wird, was durch einen Reduktions-Look-Ahead-Parameter b von „-1" bewirkt wird, so wird dies in den Ordnungsinformationen (Block 50, Parameter j) dahin gehend berücksichtigt, daß hö- herwertige Bits des ganzzahligen Quotienten betroffen sind, als im vorherigen Iterationsschritt.
Die Reduktionsinformationen sind tabellarisch in einem Block 52 von Fig. 5 dargestellt. Die Protokollierungseinrichtung verwendet wieder zwei Hilfsregister Q und Q' , wobei die Bitwerte in den beiden Registern von dem Reduktions-Parameter b abhängen. Ist b durch die ZDN-Einrichtung zu 0 berechnet worden, so findet überhaupt keine Reduktion statt. Daher werden die Bits der Ordnung j beider Register Q und Q' auf 0 gesetzt. Ist der Reduktions-Parameter b dagegen gleich „1", so wurde in der 3-Operanden-Operation zum aktuellen Zwischener- gebnis ein Modul hinzuaddiert. Dies wird im Block 52 dadurch berücksichtigt, daß das entsprechende Bit j des zweiten Hilfsregisters Q' zu 1 gesetzt wird, während das entsprechende Bit des ersten Hilfsregisters zu 0 gesetzt wird. Wird dagegen ein Modul subtrahiert, also tatsächlich eine Reduktion durchgeführt, was durch einen Reduktions-Parameter von „-1" dargestellt wird, so äußert sich dies in den beiden Hilfsregistern dahin gehend, daß das entsprechende Bit j des ersten Hilfsregisters Q zu 1 gesetzt wird, während das entsprechende Bit j des zweiten Hilfsregisters Q' zu 0 gesetzt wird. In ei- nem Block 54 wird eine Korrektur gewissermaßen ähnlich zu dem Fall von b gleich 1 durchgeführt. Wenn in dem Block 44 herausgefunden worden ist, daß das Zwischenergebnis Z nach der Abarbeitung sämtlicher Multiplikatorbits kleiner 0 war, so bedeutet dies, daß eine Reduktion zu viel stattgefunden hat. Z wird im Block 46 daher um N erhöht. Dies wird in den Reduktionsinformationen dahin gehend berücksichtigt, daß im Block
54 das niedrigste Bit Q0 des zweiten Hilfsregisters Q' zu 1 gesetzt wird.
Die Auswertungseinrichtung 14 von Fig. 1 wird schließlich da- hin gehend aktiv, daß sie von dem ersten Hilfsregister Q das zweite Hilfsregister Q' abzieht (Block 56) , um den ganzzahligen Quotienten Q in binärer Form zu erhalten. Die Subtraktion im Block 56 ist dahin gehend zu verstehen, daß das Register Q einen Zählwert für alle tatsächlich durchgeführten Modulsub- traktionen in der 3-Operanden-Operation umfaßt, wobei diese Zahl zu hoch ist, wenn Z kleiner als 0 wird (Block 44), so daß der Inhalt des zweiten Hilfsregisters Q' und insbesondere das niederstwertige Bit, das im Block 54 gesetzt wird, wieder abgezogen werden muß. Das selbe trifft für den Fall zu, bei dem der Reduktions-Parameter b gleich 1 ist. Hier wird kein Modul subtrahiert, sondern ein Modul addiert. Dies muß im ganzzahligen Quotienten wieder dahin gehend berücksichtigt werden, daß das Hilfsregister von dem ersten Hilfsregister subtrahiert wird. Für Fachleute ist es ersichtlich, daß, wenn die Bits des zweiten Hilfsregisters Q' statt auf „+1" auf „- 1" gesetzt werden würden, in dem Block 56 durch die Auswertungseinrichtung keine Subtraktion, sondern eine Addition vorgenommen werden müßte.
Aus dem Vorstehenden ist für Fachleute ersichtlich, daß das erfindungsgemäße Konzept besonders für eine Hardwaretechnische Realisierung geeignet ist. Dies ist vorteilhaft, da eine Software-technische Realisierung des MMD-Befehls Performance- und Verwaltungsaufwand kostet. Das erfindungsgemäße Konzept ersetzt eine solche Software-technische Realisierung. Insbesondere kann das vorgestellte Konzept günstig in bestehende Kryptoprozessoren integriert werden, wobei hier nur VHDL-Änderungen des Krypto-Controllers nötig sind, um sowohl die Protokollierungseinrichtung als auch die Auswertungsein- richtung in die bestehende Verarbeitungseinrichtung einzufügen. Der üblicherweise vorhandene modulare Multiplikationsbefehl kann somit einfach und wenig fehleranfällig um das Er-
gebnis der DIV-Operation, also den ganzzahligen Quotienten, ergänzt werden.
Bezugszeichenliste
10 Verarbeitungseinrichtung 10a Rechenwerk
10b Controlteil
12 Protokollierungseinrichtung
14 Auswertungseinrichtung
20 Initialisierungsschritt 20' Initialisierung
21 Bituntersuchungsschritt 22a, 22b Zwischenergebnisberechnung
23 Erster Modulvergleich
24 Erste Modulsubtraktion 25 Zweiter Modulvergleich
26 Zweite Modulsubtraktion
27 Indexuntersuchung
28 Indexinkrementierung
30a Reduktionsinformationen ohne Modulsubtraktion 30b Reduktionsinformationen nach einer Modul- Subtraktion
30c Reduktionsinformationen nach zwei Modul- Subtraktionen
32 Addition der Hilfsregister 40 Initialisierung
40' Initialisierung
42 Iterationsuntersuchung
44 Zwischenergebnisuntersuchung
46 Moduladdition 50 Ordnungsinformationsberechnung
52 Reduktionsinformationsberechnung
54 Reduktionsinformationskorrektur
56 Subtraktion der Hilfsregister
900 Start des ZDN-Algorithmus 910 Multiplikations-Look-Ahead-Algorithmus
920 Zwischenergebnis-Verschiebung
930 Reduktions-Look-Ahead-Algorithmus
940 Modulverschiebung
950 3-Operanden-Operation
960 Ende des ZDN-Algorithmus