DE3924344A1 - Digitalrechner-betriebsverfahren zur modularen reduktion eines produktes zweier grosser zahlen und entsprechender arithmetikprozessor - Google Patents

Digitalrechner-betriebsverfahren zur modularen reduktion eines produktes zweier grosser zahlen und entsprechender arithmetikprozessor

Info

Publication number
DE3924344A1
DE3924344A1 DE19893924344 DE3924344A DE3924344A1 DE 3924344 A1 DE3924344 A1 DE 3924344A1 DE 19893924344 DE19893924344 DE 19893924344 DE 3924344 A DE3924344 A DE 3924344A DE 3924344 A1 DE3924344 A1 DE 3924344A1
Authority
DE
Germany
Prior art keywords
auxiliary products
basic
unit
auxiliary
product
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE19893924344
Other languages
English (en)
Other versions
DE3924344C2 (de
Inventor
Michael Johannes Vielhaber
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VIELHABER MICHAEL JOHANNES DIP
Original Assignee
VIELHABER MICHAEL JOHANNES DIP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by VIELHABER MICHAEL JOHANNES DIP filed Critical VIELHABER MICHAEL JOHANNES DIP
Priority to DE19893924344 priority Critical patent/DE3924344A1/de
Publication of DE3924344A1 publication Critical patent/DE3924344A1/de
Application granted granted Critical
Publication of DE3924344C2 publication Critical patent/DE3924344C2/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/722Modular multiplication

Landscapes

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

Description

Die Erfindung betrifft ein Digitalrechner-Betriebsverfahren zur modularen Reduktion des Produktes eines Multiplikanden A und eines Multiplikators B bezüglich eines Modulus M mitteles eines Rechenwerks, welches Verfahren mehrere sich zyklisch wiederholende Schritte auf Basis eines Shift-and-Add-Algorithmus umfaßt, in denen jeweils eine Summation und bei mindestens einem Teil der Schritte eine modulare Reduktion erfolgt. Weiter richtet sich die Erfindung auf einen Arithmetikprozessor gemäß dem Oberbegriff des Anspruchs 6.
Die schnelle Reduktion eines Produktes zweier sehr großer binärer Zahlen A und B bezüglich eines Modulus M ist derzeit vor allem für die Verschlüsselung bzw. Entschlüsselung ("Kryptographie") von in öffentlichen Netzen übertragenen Nachrichten von Bedeutung. Dabei wird die Verwendung eines Public-Key-Verfahrens angestrebt.
Derartige Verfahren zeichnen sich dadurch aus, daß eine asymmetrische Verschlüsselung verwendet wird, bei der zum Ver- und Entschlüsseln zwei verschiedene Schlüssel benutzt werden. Dabei ist sichergestellt, daß der eine Schlüssel sich nicht ohne zusätzliche Informationen aus dem anderen berechnen läßt. Der Schlüssel zum Verschlüsseln von Nachrichten kann daher veröffentlicht werden.
Will ein Teilnehmer des Netzes einem bestimmten Empfänger eine Nachricht zukommen lassen, so besorgt er sich dessen Verschlüsselungs-Schlüssel in einer öffentlichen Datenbank und verschlüsselt damit die Nachricht. Da nur der Empfänger den passenden Entschlüsselungs-Schlüssel besitzt, ist die Nachricht für andere Teilnehmer des Netzes nicht lesbar. Darüber hinaus ist es möglich, die Nachricht mit einer "elektronischen Signatur" zu versehen, durch die die Identität des Absenders nachprüfbar wird.
Wie erwähnt, erfordert das Public-Key-Code-Verfahren, daß der Entschlüsselungs-Schlüssel sich nicht aus dem Verschlüsselungs-Schlüssel berechnen läßt. Das wohl wichtigste derartige Verfahren ist das nach den Anfangsbuchstaben der Namen seiner Erfinder Rivest, Shamir und Adleman bekannte RSA-Verfahren. Dieses Verfahren erfordert die modulare Reduktion einer Potenz zweier sehr großer Zahlen: Ci=Pi E modulo M.
Die Entschlüsselungssicherheit des Verfahrens ist davon abhängig, daß E und M sehr große Zahlen sind. Vorzugsweise sollten sie mindestens 500 Binärstellen haben.
Andererseits ist die praktische Anwendung davon abhängig, daß die Geschwindigkeit der Ver- und Entschlüsselung in Relation zur Übertragungsgeschwindigkeit in dem jeweiligen Netz ausreichend groß ist. Für das ISDN-Netz bedeutet dies beispielsweise eine Datenrate von 64 kbit/sec.
Mit den bisher bekannten Methoden war es nicht möglich, diese beiden Forderungen in Einklang zu bringen. Rein softwaremäßige Realisierungen scheitern an völlig unakzeptablen Ver- bzw. Entschlüsselungsraten von größenordnungsmäßig 10 bit/sec.
Die Lösung kann deshalb nur auf einer spezialisierten Hardware-Prozessoreinheit basieren. Dabei sind Mehr-Chip- Implementierungen nicht nur wegen des damit verbundenen großen Hardware-Aufwandes von Nachteil, sondern sie bieten - wegen des möglichen Eingriffs in die Verbindungsleitungen zwischen den Chips - auch eine geringere Sicherheit gegen die Entschlüsselung des Codes.
Nähere Einzelheiten sind der DE-C 36 31 992 und den darin zitierten Literaturstellen zu entnehmen, auf welche hier ausdrücklich Bezug genommen wird.
Das in dieser Druckschrift beschriebene Verfahren geht davon aus, daß die für das RSA-Verfahren erforderliche Potenzierung üblicherweise in eine Serie von Multiplikationen zerlegt wird, wobei die Produkte bezüglich des Modulus M reduziert werden. Dadurch ist sichergestellt, daß die Stellenzahl des Multiplikators jeweils kleiner oder gleich der Stellenzahl von M ist. Jede Multiplikation wird ihrerseits in eine Reihe von Additionen zerlegt, die in dem entsprechenden Prozessor in mehreren sich zyklisch wiederholenden Schritten auf Basis eines Shift-and-Add-Algorithmus abgearbeitet werden. Nach jeder Addition erfolgt eine modulare Reduktion mit dem Modulus M, so daß auch hier sichergestellt ist, daß die Stellenzahl nach der Reduktion nicht wesentlich größer ist als die von M. Von diesem Stand der Technik geht auch die vorliegende Erfindung aus.
Bei dem in der DE-C 36 31 992 beschriebenen Verfahren wird eine Reduzierung der Rechenzeit bei den Additions- und modularen Reduzierungsschritten innerhalb des Shift- and-Add-Algorithmus durch Verwendung eines Look-Ahead- Verfahrens erreicht. Durch diese Verfahrensweise wird die Zahl der für die Addition und Reduktion erforderlichen Prozessorzyklen reduziert und damit die Geschwindigkeit erhöht. Eine den Erfordernissen des ISDN-Netzes entsprechende Verarbeitungsgeschwindigkeit setzt jedoch eine sehr hohe Taktfrequenz von 30 MHz voraus. Ein weiterer Nachteil ist darin zu sehen, daß die Rechenzeit bei Verwendung eines Look-Ahead-Algorithmus von der Ziffernfolge der verarbeiteten Zahlen abhängig ist. Damit ist die Verschlüsselungsgeschwindigkeit abhängig von der übertragenen Nachricht.
Der Erfindung liegt die Aufgabe zugrunde, ein Verfahren der eingangs bezeichneten Art, insbesondere zur Durchführung des RSA-Algorithmus, aber auch für andere Anwendungszwecke, bei denen große Zahlen mit hoher Geschwindigkeit multipliziert und modular reduziert werden müssen, zur Verfügung zu stellen, welches sich mit vertretbarem Aufwand in Form eines VLSI-Chip integrieren läßt. Insbesondere soll das Verfahren zur Integration auf einer tragbaren, einen Halbleiterchip enthaltenden Karte ("smart card") geeignet sein.
Die Aufgabe wird bei einem Digitalrechner-Betriebsverfahren der eingangs bezeichneten Art durch die kennzeichnenden Merkmale des Anspruchs 1 gelöst. Ein erfindungsgemäßer Arithmetikprozessor ist gekennzeichnet durch die Merkmale von Anspruch 6.
Für die in den Ansprüchen verwendeten Begriffe gelten folgende Erläuterungen:
Die Blöcke bi werden beginnend mit dem vordersten Block von B abgearbeitet.
Die Länge des Rechenwerkes L ist die von der Hardware maximal verarbeitbare Stellenzahl der Schrittsumme S. Selbstverständlich kann die Verarbeitung auch auf mehrere Module der Hardware (die insgesamt das Rechenwerk bilden) verteilt werden, wobei diese jeweils eine geringere Stellenzahl haben. Dies ist gemäß einer weiter unten erläuterten, bevorzugten Ausführungsform sogar zweckmäßig.
Der Begriff Schrittsumme bezieht sich auf den Inhalt des Summenregisters des Rechenwerkes nach dem vorhergehenden Zyklusschritt. Soweit die Summe der drei Summanden weniger Stellen hat, wird nach vorn mit Nullen aufgefüllt. In diesem Fall besteht das im nächsten Zyklusschritt verarbeitete vt ganz oder teilweise aus Nullen. Selbstverständlich ist auch hier eine Aufteilung des "Summenregisters" auf mehrere Module der Hardware möglich oder sogar zweckmäßig.
Die Summation muß die drei in den Merkmalen a, b und c genannten Summanden nicht explizit in einem Zyklusschritt enthalten. Selbstverständlich ist es zum Beispiel möglich, additive Varianten der Hilfsprodukte A * bi bzw. K * v zu verwenden, welche sich von diesen um ein ganzzahliges Vielfaches von A bzw. K unterscheiden. Der Rest wird nach entsprechendem Schieben um z Stellen im nächsten (bzw. nach Schieben um 2 * z Stellen im übernächsten usw.) Zyklusschritt verarbeitet. Dies entspricht einer weiter unten erläuterten bevorzugten Ausführungsform der Erfindung.
"Zurückführen" der ersten und zweiten Hilfsprodukte auf die ersten und zweiten Basishilfsprodukte im Sinne der Merkmale dd) und ee) ist so zu verstehen, daß die Hilfsprodukte entweder aus den Basishilfsprodukten explizit abgeleitet oder ihre explizite Verwendung, beispielsweise durch Addition und nachfolgende Subtraktion eines ganzzahligen Vielfachen von A bzw. K, ganz vermieden wird. Beispiele sind Gegenstand der Unteransprüche 4 und 5.
Die Unterteilung des Multiplikators B in gleichgroße Blöcke bi einer Blocklänge z und die Verwendung des entsprechenden Produktes A * bi in den Schritten des Shift- and-Add-Algorithmus führt dazu, daß mehrere Stellen von B jeweils gleichzeitig abgearbeitet werden. Mit anderen Worten wird in einem höheren Zahlensystem als dem Binärsystem gerechnet. Bevorzugt liegt die Blocklänge z zwischen 2 und 5 Binärstellen. Das Rechnen im Oktal- bzw. Hexadezimal-System (z=3 bzw. z=4) ist besonders bevorzugt.
Bei der Durchführung eines Shift-and-Add-Algorithmus zur Multiplikation und Reduktion im Binärsystem wird in jedem Zyklusschritt die nächstfolgende Schrittsumme St+1 berechnet gemäß
St+1 = (St * 2 + A * bi t) mod M (1)
wobei in diesem Fall die bi jeweils nur eine Stelle haben, welche die Werte 0 oder 1 annehmen kann. Das Hilfsprodukt A * bi kann deswegen nur die Werte A oder 0 annehmen.
Beim Rechnen in einem höheren System wird Gleichung (1) ersetzt durch
St+1 = (St * Z + A * bi t) mod M (2)
Die Multiplikation St * Z kann einfach durch entsprechendes Schieben von St um die Blocklänge z erfolgen. Die gleichzeitige Abarbeitung mehrerer Stellen von B führt zu einer erheblichen Erhöhung der Geschwindigkeit.
Diesem potentiellen Vorteil des Rechnens in einem höheren Zahlensystem stehen aber erhebliche Probleme gegenüber, die erst durch die weiteren erfindungsgemäßen Maßnahmen gelöst werden. Da die bi in diesem Fall je nach dem gewählten Zahlensystem 4, 8, 16 oder 32 verschiedene Werte einnehmen können, stehen die entsprechenden Hilfsprodukte A * bi t nicht mehr ohne weiteres zur Verfügung. Sie müssen vielmehr vorab berechnet, abgespeichert und nach Bedarf aufgerufen werden. Dies ist mit einem erheblichen Aufwand verbunden. Zum einen ist der Speicherplatzbedarf zur Abspeicherung der Z möglichen Werte von A * bi t sehr hoch, wenn A beispielsweise 500 Binärstellen hat. Zum zweiten wird die Geschwindigkeit durch die notwendige Auswahl unter den möglichen Werten von A * bi vermindert.
Eine wesentliche Erkenntnis der Erfindung ist daher, daß aufgrund der in Merkmal cc) enthaltenen Kongruenzrelation (wonach für K=2L mod M die Summe St * Z+A * bi t modular kongruent ist zu vt * K+ht * Z+A * bi t) einer Zerlegung von St möglich ist, die zu einer außerordentlichen Verringerung des Hardware-Aufwandes führt:
  • - ht * Z läßt sich einfach durch Schieben um z Stellen berechnen.
  • - Da vt und bi t die gleiche Stellenzahl und die gleiche Zahl möglicher Zustände haben, können große Teile der Hardware, die zur Auswahl des jeweils benötigten Wertes von K * vt bzw. A * bi t erforderlich sind, doppelt verwendet werden, d. h., sie brauchen nur einmal vorhanden zu sein.
  • - Die Addition der drei Hilfsprodukte entspricht nicht nur einem konventionellen Shift-and-Add-Algorithmus in einem höheren Zahlensystem, sondern bedeutet zugleich eine modulare Reduktion bezüglich des Modulus M, wodurch die Stellenzahl der Schrittsumme nicht über die Länge des Rechenwerkes L anwachsen kann. Es genügt daher eine Rechenwerklänge L, welche nur geringfügig größer ist als die Stellenzahl m des Modulus M. Die minimale Länge des Rechenwerkes beträgt L=m+2 * z+1.
Diese Vorteile sind - wie erwähnt - wesentlich verknüpft mit der in Merkmal cc) enthaltenen Kongruenzrelation, welche sich wie folgt herleiten läßt:
St+1 = (St * Z + A * bi t) mod M
= [(vt * 2L-z + ht) Z + A * bi t] mod M
= (vt * 2L + ht * Z + A * bi t) mod M (3)
mit K = 2L mod M folgt
St+1 ≡ (vt * K + ht * Z + A * bi t) mod M
Wie oben erwähnt, erfordert die Abspeicherung sämtlicher für die zulässigen Werte von bi und v möglichen Hilfsprodukte einen großen Speicherbedarf, welcher um so größer ist, je höher die Basiszahl Z des Zahlensystems ist, in dem gerechnet wird. Für Z=8 wären beispielsweise insgesamt 16 Hilfsprodukte mit jeweils über 500 Stellen abzuspeichern.
Gemäß einer bevorzugten Ausführungsform der Erfindung wird deswegen nur eine Anzahl von Basishilfsprodukten abgespeichert, welche kleiner als Z ist. Die in dem Shift- and-Add-Algorithmus benötigten Hilfsprodukte werden jeweils bei Bedarf durch Operationen, die die Rechengeschwindigkeit nicht nennenswert beeinträchtigen, ermittelt.
Eine erhebliche Reduktion der notwendigen Zahl abgespeicherter Hilfsprodukte um einen Faktor 2 läßt sich gemäß Anspruch 4 dadurch erreichen, daß diejenigen Hilfsprodukte A * bi bzw. K * v, die sich von einem der abgespeicherten Basishilfsprodukte nur um einen Faktor unterscheiden, der eine 2er-Potenz ist, durch stellenverschobenes Zuführen aus dem Basishilfsprodukt gewonnen werden. Für Z=16 genügt es beispielsweise, als Basishilfsprodukte die Produkte von A und K mit den Zahlen 10, 12, 14 und 16 abzuspeichern, um daraus durch stellenverschobenes Zuführen die Hilfsprodukte für die Zahlenwerte 5; 3, 6; 7; 1, 2, 4, 8 zu berechnen. Dies bedeutet, daß die Zahl der abgespeicherten Hilfsprodukte um einen Faktor 2 reduziert werden kann (die Hilfsprodukte für die Zahlenwerte 9, 11, 13, 15 müssen als weitere Basishilfsprodukte abgespeichert sein).
Eine weitere Reduzierung um einen Faktor 2 läßt sich gemäß Anspruch 5 dadurch erreichen, daß ungerade bi t bzw. vt der Formel
bi = (bi + 1) * Z - Z (4)
v = (v + 1) * Z - Z
auf das nächstgrößere gerade bi bzw. v zurückgeführt werden.
Dies geschieht bevorzugt folgendermaßen:
In einem Schritt t des Shift-and-Add-Algorithmus wird bi t bzw. vt um 1 auf den nächstgrößeren geraden Wert erhöht und folglich statt A * bi t bzw. K * vt das (zu große) Hilfsprodukt A * (bi t+1) bzw. K * (vt+1) dem Addierwerk zugeführt. Im nächstfolgenden Schritt des Shift-and-Add-Algorithmus wird
  • a) für den Fall, daß bi t+1 gerade ist, statt des Hilfsproduktes A * bi t+1 das Hilfsprodukt A * (bi t+1-Z) dem Addierwerk zugeführt und
  • b) für den Fall, daß bi t+1 ungerade ist, das Hilfsprodukt A * (bi t+1-Z+1) dem Addierwerk zugeführt.
Bei dieser Ausführungsform werden auch negative (-Z, -Z+2, . . . , -2) gerade Vielfache von A bzw. K benötigt. Diese lassen sich praktisch verzögerungsfrei mit sehr geringem Hardwareaufwand (z. B. Inverter, als Zweierkomplement) aus den vorhandenen positiven erzeugen.
Somit müssen nur die Basishilfsprodukte mit geradem positivem bi bzw. v vorrätig gehalten werden. Im genannten Beispiel verbleiben nur noch die Zahlenwerte 16, 14, 12 und 10 für bi und v, so daß nur noch je 4 Basishilfsprodukte berechnet und abgespeichert werden müssen, obwohl es insgesamt je 16 mögliche Hilfsprodukte A * bi bzw. K * v gibt. Hier wird deutlich, daß die ersten und zweiten Basishilfsprodukte nicht eine Untermenge der ersten bzw. zweiten Hilfsprodukte sein müssen. Im Beispielsfall gehört die Zahl 16 nicht zum Wertebereich von bi bzw. v.
Die Erfindung wird im folgenden anhand der Figuren und eines Zahlenbeispiels näher erläutert; es zeigt
Fig. 1 ein Flußdiagramm des erfindungsgemäßen Digitalrechner-Betriebsverfahrens,
Fig. 2 einen Ausschnitt aus Fig. 1,
Fig. 3 ein Blockdiagramm eines erfindungsgemäßen Arithmetikprozessors,
Fig. 4 ein Blockdiagramm einer Recheneinheit (Arithmetic Unit) aus dem Prozessor nach Fig. 3,
Fig. 5 ein Blockdiagramm zur Darstellung von Details der Arithmetikeinheit nach Fig. 4,
Fig. 6 ein Blockdiagramm eines Prozessormoduls zur Bestimmung von Kontrollvariablen (DCV=Determination of Control Variables) aus Fig. 3,
Fig. 7 einen Ausschnitt aus Fig. 6 in detaillierterer Darstellung.
Das in Fig. 1 und Fig. 2 dargestellte Flußdiagramm verdeutlicht das erfindungsgemäße Betriebsverfahren. Es ist in die Initialisierungsphase 1, die Schleife 2 des Shift- and-Add-Algorithmus und die Abschlußphase 3 eingeteilt.
1.
In der Initialisierungsphase 1 wird zunächst der Modulus M eingelesen. Danach wird die Konstante K mit Hilfe des Modulus M und der festen Länge L des Rechenwerkes berechnet.
Im nächsten Schritt erfolgt die Berechnung der Basishilfsprodukte K * n für alle Werte von n, für die die Abspeicherung erforderlich ist (im angesprochenen Beispiel des Hexadezimalsystems für die Zahlenwerte n= 16, 14, 12 und 10).
In den nächsten beiden Schritten werden der Multiplikand A und der Multiplikator B eingelesen. Danach werden die Basishilfsprodukte A * n für die gleichen Zahlenwerte von n wie bei K * n berechnet.
Weiter wird die Laufvariable t und die Schrittsumme S auf den Ausgangswert 0 gesetzt. Ebenso werden die beiden Flags Fb und Fc, deren Funktion im folgenden noch näher erläutert wird, auf 0 gesetzt.
2.
Innerhalb der Zyklusschleife 2 (Fig. 2) sind folgende Schritte zu unterscheiden:
2.1
Die Laufvariable t wird bei jedem Zyklusschritt, also bei jedem Durchlauf der Schleife 2, um 1 erhöht.
v und h werden aus der Schrittsumme des vorhergehenden Zyklusschrittes ermittelt. Die im Flußdiagramm angegebenen mathematischen Formeln sollen lediglich verdeutlichen, daß v die ersten z Stellen von S umfaßt, während h die übrigen L-z Stellen von S umfaßt. In der hardware- mäßigen Realisierung ist keine solche Berechnung erforderlich. Vielmehr bleibt die jeweils aktuelle Schrittsumme S in ihrem Speicherplatz stehen und wird im nächstfolgenden Durchlauf der Schleife 2 abgerufen. Selbstverständlich wäre es aber auch möglich, die beiden Teile v und h von S getrennt abzuspeichern. Gemäß einer bevorzugten Ausführungsform ist sogar eine teilweise getrennte Berechnung von v und h zweckmäßig, wie im folgenden noch näher erläutert wird.
Schließlich wird der in dem jeweiligen Zyklusschritt abzuarbeitende Block bi des Multiplikators B abgefragt.
2.2
Dieser Abschnitt des Flußdiagramms beschreibt eine mögliche Realisierung der bevorzugten Ausführungsform gemäß Anspruch 5. In der allgemeinsten Form der Erfindung, bei der auch die A * bi für ungerade bi abgespeichert sind, könnte dieser Abschnitt entfallen.
Geht man zunächst davon aus, daß im ersten Durchlauf der Schleife 2 das Flag Fb den in der Initialisierungsphase eingestellten Wert 0 hat, so führt die erste Abfrage Fb= 1? unmittelbar zu der zweiten Abfrage bi ungerade (bi odd)? Falls der Block bi einen ungeraden Wert hat, führt dies wie dargestellt zur Erhöhung von bi auf den nächsten geraden Wert, und das Flag Fb wird auf 1 gesetzt.
Dies wiederum führt in der nächsten Schleife (also beim nächsten Zyklusschritt) dazu, daß die Abfrage Fb=1? in den Ja-Zweig verzweigt und demzufolge Bi um Z vermindert wird. Da die nunmehr verarbeitete Schrittsumme St+1 gegenüber St um z Stellen nach links verschoben ist, wird die Erhöhung um 1 durch die Subtraktion von Z ausgeglichen. Dadurch wird die beanspruchte Zurückführung der ungeraden bi t auf gerade bi t gemäß bi t=(bi t+1) * Z-Z realisiert.
Falls mehrere ungerade bi in B aufeinanderfolgen, wiederholt sich die Prozedur aus Erhöhung um 1, Setzen von Fb=1 und Subtraktion von Z im nächsten Durchlauf der Schleife 2.
2.3
Dieser Abschnitt des Flußdiagramms beschreibt den zu 2.2 völlig analogen Ablauf bezüglich vt. Eine nähere Beschreibung ist daher nicht erforderlich.
2.4
Hier erfolgt die Addition der drei Summanden zur neuen Schrittsumme. Da in einem Rechenwerk der Länge L in Blöcken zu je z Bits gearbeitet wird, durchläuft der Index t die Werte 1 . . . L/z und verzweigt dann in die Abschlußphase.
3.
Die Abschlußphase enthält noch eine zusätzliche Verzweigung, die erforderlich ist, um für den Fall, daß Fb=1 ist, eine Korrekturrechnung durchzuführen, nämlich die Verminderung von S um A. Entsprechend wird bei Fv=1 noch K abgezogen. Schließlich wird der Endwert ausgegeben, welcher (A * B) mod M entspricht. Das Ergebnis ist in der Regel nicht der Repräsentant, sondern ein größeres Mitglied der Restklasse. Falls erforderlich, kann dies mit bekannten Mitteln leicht auf den Repräsentanten der Restklasse zurückgeführt werden. Im RSA-Algorithmus ist die Abbildung auf dem Repräsentanten der Restklasse innerhalb des Multiplikationsschrittes nicht notwendig. Es genügt, wenn sie - mit bekannten Mitteln - zum Abschluß des Potenzierungsschrittes erreicht wird.
Im folgenden wird die Erfindung anhand eines Beispiels erläutert. Die dabei gewählten Zahlen sind selbstverständlich sehr viel kleiner, als sie von einer entsprechenden spezialisierten Hardware, beispielsweise für kryptographische Zwecke, verarbeitet würden. Der Übersichtlichkeit halber sind die Zahlen weitgehend in dezimaler Schreibweise angegeben. Die Binärschreibweise wurde nur dort gewählt, wo dies zum Verständnis der Arbeitsabläufe in einem Rechner zweckmäßig erscheint. Binärzahlen sind durch tiefgesetzte 2 gekennzeichnet.
Die Hardware sei auf folgende Werte ausgelegt:
  • - Länge des Modulus m=10
  • - Blocklänge z=2, daher Basiszahl Z=4, bi und v haben somit jeweils vier mögliche Zustände zwischen 0 und
3.
  • - Länge des Rechenwerkes L=15; folglich L-z=13; 2L=32 768; 2L-z=8192=10.0000.0000.0000₂.
    Die Zahlenwerte seien wie folgt angenommen:
  • - M=1003=11.1110.1011₂, somit K=2L mod 1003 =672=10.1010.0000₂.
  • - A=910=11.1000.1110₂, B=798=11.0001.1110₂.
Der Funktionsablauf wird in Anlehnung an das Flußdiagramm gemäß Fig. 1 beschrieben, wobei die dort eingeführten Gliederungspunkte auch hier verwendet werden.
1. Initialisierung: S₀=0; Fb=0; Fv=0
Berechnung der Basishilfsprodukte A * 4 und K * 4. Im vorliegenden Beispielsfall für z=2 lassen sich alle Hilfsprodukte für bi bzw. v=0, 1, 2, 3 schnell (ohne zusätzliche Prozessortakte) auf die Werte von A * 4 und K * 4 (wobei die 4 nicht zum Wertebereich von bi bzw. v gehört) zurückführen.
2. Schleife des Shift-and-Add-Algorithmus a) Erster Schleifendurchlauf 2.1 S₀=0 → v:=0, h:=0
Da in der Initialisierungsphase S=0 gesetzt wurde, haben v und h in der ersten Iterationsschleife den Wert 0.
2.2 b₁=11₂=3 → [Fb=1?] b₁:=3 → [b₁ ungerade?] b₁:=4, Fb:=1
Die erste Abfrage in Abschnitt 2.2 des Flußdiagramms läßt den Zahlenwert von b₁ (erste beiden Stellen von B) unverändert. Da die resultierende Zahl 3 ungerade ist, findet eine Erhöhung auf 4 statt, und das Flag Fb wird auf 1 gesetzt.
2.3 v=0 → [Fv=1?] v:=0 → [v ungerade?] v:=0, Fv=0
Das Flag Fv ist 0, ebenso der Wert von v. Es bleibt daher bei beiden Abfragen von 2.3 bei diesem Wert, und das Flag Fv bleibt 0.
2.4
Der benötigte Wert A * b₁ für b₁=4 konnte ohne weiteres dem vorausberechneten Wertevorrat entnommen werden.
b) Zweiter Schleifendurchlauf 2.1 S₁=3640 → v=0, h=3640=1110.0011.1000₂
Da die erste Schrittsumme nur 12 signifikante Binärstellen hat, während die Rechenwerkslänge 15 Stellen beträgt, behält v den Wert 0, h stimmt mit S₁ überein.
2.2 b₂=00₂=0 → [Fb=1?] b₂:=-4 → [b₂ ungerade?] b₂:=-4, Fb:=0
Da das Flag Fb von der vorhergehenden Schleife den Wert 1 hat, wird b₂ (3. und 4. Stelle von B) um Z erniedrigt. Es ergibt sich der Wert -4. Da dieser gerade ist, bleibt er unverändert, und Fb wird auf 0 gesetzt.
2.3 v=0 → [Fv=1?] v:=0 → [v ungerade?] v:=0, Fv=0 2.4
Der negative Wert A * (-4) ist aus dem abgespeicherten positiven Wert durch Bildung des Zweierkomplements sofort erhältlich.
c) Dritter Schleifendurchlauf 2.1 S₂=10 920 → v=1 h=2728=0.1010.1010.1000₂
Die Schrittsumme ist nunmehr auf 14 Stellen angewachsen, die hinteren 13 Stellen bilden h, die vorderste Stelle v=1.
2.2 b₃=01₂=1 → [Fb=1?] b₃:=1 → [ungerade?] b₃:=2 Fb:=1 2.3 v=1 → [Fv=1?] v:=1 → [ungerade?] v:=2 Fv:=1
Sowohl Fb als auch Fv waren aus der vorhergehenden Schleife 0. Die Zahlenwerte von b₃ und v bleiben nach der ersten Abfrage daher erhalten; da die 1 ungerade ist, erfolgt eine Erhöhung auf 2 und Fb und Fv werden auf 1 gesetzt.
2.4
Die Zahlenwerte für A * bi und K * v, bei denen bi bzw. v den Wert 2 hat, lassen sich aus den abgespeicherten Werten für bi bzw. v=4 durch um eine Stelle verschobenes Zuführen ohne weiteres gewinnen.
d) Vierter Schleifendurchlauf 2.1 S₃=14 076 → v=1 h=5884=1.0110.1111.1100₂ 2.2 b₄=11₂=3 → [Fb=1?] b₄:-1 → [ungerade?] b₄:=0 Fb:=1
In diesem Fall war Fb auf 1 gesetzt. Der Zahlenwert von b₄ (7. und 8. Stelle von B) wird daher um Z=4 vermindert auf -1; da dieser Wert ungerade ist, findet eine Erhöhung auf 0 statt, und Fb wird auf 1 gesetzt.
2.3 v=1 → [Fv=1?] v:=-3 → [ungerade?] v:=-2 Fv:=1
Der Ablauf entspricht im wesentlichen dem vorhergehenden Abschnitt 2.2: aus v=1 wird v=-2, Fv behält den Wert 1.
2.4
Nunmehr ist die Schrittsumme auf 15 Stellen angewachsen, d. h., die Kapazität des Rechenwerkes wird voll ausgeschöpft. Das erfindungsgemäße Verfahren gewährleistet, daß ein weiteres Anwachsen der Schrittsummen ausgeschlossen ist. Der Zahlenwert für h * v mit v=-2 wird durch stellenverschobenes Zuführen und Invertieren (Zweierkomplementbildung) erzeugt.
e) Fünfter Schleifendurchlauf 2.1 S₄=22 192 → v=10₂=2, h=5808=1.0110.1011.0000₂ 2.2 b₅=10₂=2 → [Fb=1?] b₅:=-2 → [ungerade?] b₅:=-2 Fb:=0
Das auf 1 gesetzte Flag Fb führt dazu, daß Z von 2 abgezogen wird, damit erhält b₅ den Wert -2. Dieser ist gerade und bleibt daher erhalten.
2.3 v=2 → [Fv=1?] v:=-2 → [ungerade?] v:=-2 Fv:=0
Wegen Fv=1 wird v um 4 vermindert, der so erhaltene Wert -2 ist gerade und bleibt erhalten, Fv wird 0.
2.4
Da das letzte Fv=0 war, findet in der Abschlußphase keine Subtraktion von A oder K statt. Der Wert 20 068 ist das Endergebnis. Die Überprüfung zeigt folgende Kongruenzrelation:
910 * 798 ≡ 20 068 ≡ 8 mod 1003
Der Repräsentant der Restklasse wäre 8. Das gefundene Mitglied der Restklasse unterscheidet sich hier von um den 20fachen Modulus. Die entsprechende Rückführung ist, sofern der echte Repräsentant der Restklasse benötigt wird, nach bekannten Verfahren ohne weiteres möglich.
Im gewählten Zahlenbeispiel ist die Reduzierung vom unreduzierten Ausgangsprodukt A * B relativ gering (5 Binärstellen). Im echten Anwendungsfall ist der Effekt wesentlich größer. Beispielsweise würde ein Produkt mit 2mal 500 Binärstellen von 1000 Stellen auf 505 Stellen reduziert.
Je besser die Rechenwerksgröße L auf die Länge m des Modulus abgestimmt ist, desto näher ist das erhaltene Ergebnis beim Repräsentanten der Restklasse. Im Falle der Anwendung des erfindungsgemäßen Verfahrens für Kryptographieprozessoren liegt die Länge m des Modulus durch Vereinbarung zwischen den Benutzern des Informationsübertragungsnetzes fest. Es ist daher möglich, L exakt auf m abzustimmen (optimal L=m+2z+1).
Ein nach dem erfindungsgemäßen Verfahren arbeitender Arithmetikprozessor kann aufgrund der vorstehenden Angaben entwickelt werden. Zur Umsetzung in die Hardware wird der funktionelle Ablauf in die Grundoperationen Addieren, Invertieren (Bildung des Zweierkomplements), Verschieben, Abfragen zerlegt. Es werden Hardware-Beschreibungssprachen angeboten, die zweckmäßigerweise auch im vorliegenden Fall angewendet werden.
Wie üblich, werden auch beim erfindungsgemäßen Arithmetikprozessor diejenigen Schritte, die nur verhältnismäßig selten vorkommen, softwaremäßig realisiert. Hierzu gehört zweckmäßigerweise die Initialisierungsphase und die Abschlußphase. Soweit der Prozessor zur Realisierung eines RSA-Algorithmus dient, ist es zweckmäßig, auch die übergeordneten Algorithmen, insbesondere die Potenzierung in Form einer Vielzahl von Multiplikationen, in bekannter Weise softwaremäßig zu realisieren.
Dagegen werden die Schleifendurchläufe des Shift-and-Add- Algorithmus vorzugsweise mit einer spezialisierten Hardware jeweils innerhalb eines einzigen Prozessortaktes abgearbeitet. Die dafür notwendige Durchlaufzeit (bedingt durch die angesteuerten Bauelemente, beispielsweise die Ladezeiten von Flip-Flops) ist bestimmend für die Taktfrequenz, mit der gearbeitet werden kann. Sie soll deswegen so niedrig wie möglich sein und auf beide Halbtakte gleichmäßig verteilt werden. Hierzu werden besondere Maßnahmen ergriffen, die weiter unten näher erläutert werden. Von besonderer Bedeutung ist dabei, daß für die Variablen bi und v exakt die gleichen Vergleichs-, Rechen- und Auswahlschritte erforderlich sind. Die hierzu notwendige Hardware muß deshalb nur einmal vorhanden sein. Innerhalb eines Prozessortaktes wird sie vorzugsweise während des ersten Halbtaktes für die eine und während des zweiten Halbtaktes für die andere Variable benutzt.
Fig. 3 zeigt die Verknüpfung der Hauptkomponenten eines erfindungsgemäßen Arithmetikprozessors. Eine Arithmetikeinheit AU (Arithmetic Unit) wird von einem mikroprogrammierten Steuerwerk µCU (µ-Programmed Control Unit) gesteuert. Dieses wiederum kommuniziert mit einer Eingabe/Ausgabe-Einheit IOU (Input/Output Unit), welche zur Eingabe und Ausgabe von Daten bzw. Befehlen dient. Die Eingabe/Ausgabe-Einheit IOU und das mikroprogrammierte Steuerwerk µCU werden nicht näher beschrieben, weil ihr Aufbau im wesentlichen konventionell ist und es für den Fachmann kein Problem darstellt, Details aufgrund der vorliegenden Beschreibung festzulegen.
Ein Spezialmodul ist die Einheit zur Ermittlung von Kontrollvariablen DCV (Determination of Control Variables). Sie dient dazu, Befehle (Kontrollvariablen) zu erzeugen, um das erfindungsgemäße Verfahren möglichst rationell (vorzugsweise so, daß für einen Schritt des Shift-and- Add-Algorithmus nur ein Prozessortakt benötigt wird) auszuführen.
Die Arithmetikeinheit AU basiert auf einem konventionellen Addierwerk, ist jedoch ergänzt um zusätzliche Maßnahmen, die im folgenden anhand von Fig. 4 und Fig. 5 näher erläutert werden.
Fig. 4 zeigt eine Bitscheibe (bit slice) der AU detaillierter. Kernstück ist der Addierer AD, welchem das in der jeweiligen Bitscheibe verarbeitete Bit der drei Summanden (A * bi)s, (K * v)s, (h * Z)s zugeführt wird, wobei der Index s die s-te Stelle des Rechenwerkes bezeichnet.
Die Basishilfsprodukte (A * bi)s und (K * v)s werden aus einer Basisproduktauswahleinheit BPSU (Basic Product Selection Unit) über eie Eingänge a und b zugeführt. Die BPSU enthält ein Basisproduktregister BPR (Basic Product Register), einen Multiplexerbaum MUXT (Multiplexer Tree) und ein Zwischenregister IR (Intermediate Register), wie weiter unten noch näher erläutert wird.
Der Summand (h * Z)s wird unmittelbar aus dem Summenregister SR der AU zugeführt, wobei der Wert der um z Stellen weiter rechts stehenden Registerzelle (SR)s-z übertragen wird, welcher dem Produkt h * Z entspricht.
Der Übertrag (Carry) von der Stelle s-1 wird über den Eingang d zugeführt. Der resultierende Übertrag zur Stelle s+1 liegt am Ausgang e des Addierers an und wird der nächsten Bitscheibe zugeführt. Dem Addierwerk nachgeschaltet ist ein 2 : 1-Multiplexer M10, der von einer Kontrollvariablen CV₁₀ des Steuerwerkes gesteuert wird. Er dient dazu, in der Initialisierungsphase die Null an das Summenregister anzulegen. Im übrigen schaltet er den Ausgang f des Addierers unmittelbar an das Summenregister SR durch. Der Ausgang des Summenregisters liegt parallel einerseits an der Basisproduktauswahleinheit BPSU und an der um z Stellen höheren Zelle des Addierwerkes AD an.
Sofern der Multiplikator B (wie beim RSA-Algorithmus) die gleiche Länge wie der Multiplikand A und die Konstante K hat, ist es zweckmäßig, ihn ebenfalls in einem Register der AU abzuspeichern. Dargestellt ist ein Multiplikatorregister MR, dessen Inhalt bei jedem Schritt des Shift- and-Add-Algorithmus um z Stellen geschoben wird, wobei jeweils die z vordersten Stellen an die DCV angelegt werden (Fig. 6).
Fig. 5 zeigt Einzelheiten der Basisproduktauswahleinheit BPSU, wobei wiederum eine Bitscheibe dargestellt ist.
Das Basisproduktregister BPR enthält je ein Register für jedes Basishilfsprodukt A * n bzw. K * n. Dargestellt ist eine Ausführungsform, bei der von Anspruch 4 kein Gebrauch gemacht wird, so daß alle geraden Vielfachen (von 2 bis Z) von A und K als Basishilfsprodukte abgespeichert werden müssen. Falls Anspruch 4 realisiert wird, reduziert sich die Zahl der Register auf die Hälfte, und es müssen Leitungen zum stellenverschobenen Zuführen vorgesehen sein.
Die Basishilfsprodukte sind jeweils paarweise, wie dargestellt, an vom Prozessortakt gesteuerte 2 : 1-Multiplexer M11, M12 . . . M1X angelegt. Dadurch liegt jeweils bei einem Halbtakt das erste Basishilfsprodukt und im anderen Halbtakt das zweite Basishilfsprodukt an dem Multiplexerbaum MUXT an. Dieser wählt, gesteuert durch Kontrollvariable CV40 . . . 4x, die von der DCV und der µCU erzeugt werden, die in dem jeweiligen Schritt des Shift-and-Add- Algorithmus benötigten Basishilfsprodukte aus.
Dem Multiplexerbaum MUXT ist eine Invertereinheit IU nachgeschaltet, welche aus einem Inverter INV und einem 2 : 1-Multiplexer M20 besteht. Sie ermöglicht, den Ausgang des Multiplexerbaumes, gesteuert durch eine weitere Kontrollvariable CV₅₀, nach Bedarf zu invertieren. Das Zwischenregister IR enthält zwei getrennte Register für (A * bi)t und (K * v)t.
An den Eingängen des Basisproduktregister liegt, wie erwähnt, der Inhalt des Summenregisters R an und kann, wahlweise gesteuert durch Kontrollvariable CV₂₁, CV₂₂ . . . CV2x bzw. CV₃₁, CV₃₂ . . . CV3x übernommen werden. Dies dient dazu, in der Initialisierungsphase die Basishilfsprodukte weitgehend mit der gleichen Hardware zu berechnen, welche während des Shift-and-Add-Algorithmus benutzt wird, um das jeweils benötigte Basishilfsprodukt auszuwählen. Hierzu wird zunächst (beschrieben am Beispiel von K * n) der Wert von K * 1 in das Register des BPR eingelesen, in welchem während des Shift-and-Add-Algorithmus das höchste Basishilfsprodukt K * Z steht. Dieser Wert wird dann zur Berechnung und Anspeicherung der niedrigeren Basishilfsprodukte mit Hilfe des Addierwerkes AD verwendet, wobei zunächst der Wert K * 1 zweifach angewendet wird, um K * 2 zu erhalten, danach K * 1 und K * 2 angelegt wird, um K * 3 zu erhalten usw. Zuletzt wird der Wert für K * Z in dem genannten Register abgespeichert. Während dieser Rechnung wird die Summe über einen Multiplexer M9 (gesteuert über eine Kontrollvariable CV₉) unmittelbar wieder als Summand dem Addierwerk zugeführt, während im Shift-and-Add-Algorithmus jeweils der Wert aus der Zelle (s-z) über M9 angewählt wird.
Wie oben erwähnt, hat die Einheit zur Bestimmung der Kontrollvariablen DCV die Aufgabe, innerhalb der Schleifen des Shift-and-Add-Algorithmus jeweils die Kontrollvariablen, insbesondere zur Steurung des Multiplexerbaumes MUXT jeweils so zu bestimmen, daß die jeweils benötigten Hilfsprodukte am Addierwerk AD anliegen.
Bezüglich der Auswahl der A * bi ist hiermit kein besonderes Problem verbunden. Wie im Zusammenhang mit Fig. 3 beschrieben, enthält das Multiplikandenregister MR jeweils auf seinen vordersten Stellen den nächsten abzuarbeitenden Block bi, aus dem sich in bekannter Weise mit Hilfe logischer Elemente die Kontrollvariablen zur Auswahl des entsprechenden A * bi bestimmen lassen.
Im Falle der Werte K * v erfolgt die Bestimmung der Kontrollvariablen aus v grundsätzlich analog. Hier besteht jedoch ein zusätzliches Problem, weil die Kontrollvariablen für einen nachfolgenden Schritt t+1 des Shift-and- Add-Algorithmus erst erzeugt werden können, wenn der vordere Teil vt der Schrittsumme St des vorhergehenden Schrittes t berechnet ist. Hierbei ist zu berücksichtigen, daß der Durchlauf des Übertrages (carry) durch die große Stellenzahl der zu verarbeitenden Zahlen verhältnismäßig lang dauert. Hierzu kommt die Zeit, die zur Erzeugung der Kontrollvariablen mit Hilfe eines Logic moduls benötigt wird. Ohne zusätzliche Maßnahmen könnten deswegen die Schritte des Shift-and-Add-Algorithmus nur mit einer sehr geringen Taktgeschwindigkeit abgearbeitet werden.
Selbstverständlich können bekannte Verfahren zur Beschleunigung des Carry-Durchlaufes verwendet werden, insbesondere kann ein Carry-Look-Ahead-Algorithmus angewandt werden, oder es wird (bevorzugt) ein Delayed-Carry-Adder eingesetzt.
Gemäß einer besonders bevorzugten Ausführungsform wird eine zusätzliche bedeutende Beschleunigung dadurch erreicht, daß innerhalb der DCV eine Steuergröße U jeweils um einen Takt vorausberechnet wird, aus der v sofort ohne weitere Rechenschritte abgeleitet werden kann, sobald der Carry-Durchlauf beendet ist.
Die Steuergröße U ist eine Summe der vordersten u Stellen der drei Hilfsprodukte, welche mit (h * Z)u, (A * bi)u und (K * v)u bezeichnet werden. Die hinteren L-u Stellen der drei Summanden werden mit (h * Z)w, (A * bi)w und (K * v)w bezeichnet, ihre Summe als W. Es gilt also:
U = (h * Z)u + (K * v)u + (A * bi)u
W = (h * Z)w + (K * v)w + (A * bi)w
Die Schrittsumme ergibt sich durch stellenrichtige Addition:
S = U * 2w + W
Dabei ist die Stellenzahl u von U so gewählt, daß der gesamte Maximalübertrag von W sich in den ersten z Stellen von U maximal als Erhöhung von 1 auswirkt, d. h., die ersten z Stellen von U stimmen mit v bis auf einen Fehler von höchstens S+1 überein.
Die Funktionsweise der DCV läßt sich anhand der folgenden Tabelle erläutern:
Bestimmung der Kontrollvariablen in DCV
Wie aus der Tabelle zu ersehen ist, berechnet die DCV jeweils innerhalb eines (aus zwei Halbtakten bestehenden) Prozessortaktes t, in dem die AU eine Schrittsumme St berechnet, die Steuergröße Ut+1, also eine Steuergröße, aus der vt+1 für den nächstfolgenden Prozessortakt abgeleitet werden kann.
Eine entsprechende Hardware ist schematisch in den Fig. 6 und 7 dargestellt.
Wei aus Fig. 6 hervorgeht, liegen jeweils die vordersten u Stellen von h * Z, A * bi und K * v an zwei hintereinandergeschalteten Addierern mit jeweils einem Register an. Im ersten Halbtakt summiert die Addierer-Registereinheit AR1 (h * Z)u und (A * bi)u zu U. Im zweiten Halbtakt wird die Summe hieraus in dem Register von AR1 gehalten und mit Hilfe der Addierer-Registereinheit AR2 mit (K * v)u zu U addiert.
Das Ergebnis U wird in zwei Teile U₁ und U₂ aufgeteilt, wobei U₁ die vorderen z Stellen von U umfaßt, während U₂ aus den u-z folgenden Stellen besteht. U₁ liegt an einem 2 : 1-Multiplexer M40 an, der vom Prozessortakt gesteuert ist, so daß abwechselnd in einem Halbtakt bi und im nächsten Halbtakt U₁ an einem Kontrollvariablen-Berechnungsmodul CVCM (Control Variables Computing Modul) anliegt.
Fig. 7 zeigt Einzelheiten dieses Moduls. U₁ bis bi liegen über einem Subtrahierer SUB an zwei Logikmodulen zur Bestimmung von Kontrollvariablen CVL₁ und CVL₂ an, wobei einem der Module ein Inkrementer INC vorgeschaltet ist, der den Eingangswert um 1 erhöht.
In den Modulen CVL₁ und CVL₂ wird jeweils ein vollständiger Satz Kontrollvariablen sowohl für den unveränderten Eingangswert als auch für den um 1 erhöhten Eingangswert ermittelt. Die Auswahl des "richtigen" Kontrollvariablensatzes erfolgt mit Hilfe eines 2 : 1-Multiplexers M50 und eines Übertragsprüfers CC (Carry Checker), an welchem als Eingangssignale U₂ und der Übertrag von W anliegen. Wenn der daraus ermittelte Gesamtübertrag in die letzte Stelle von U₁ hineinläuft, wird der Kontrollvariablensatz aus CVL₁ verwendet, andernfalls derjenige aus CVL₂.
Die CVCM enthält weiterhin eine Flageinheit FU (Flag Unit), die dazu dient, entsprechend dem beschriebenen Funktionsablauf die Flags Fb und Fv abzufragen und gegebenenfalls eine Subtraktion von Z mit Hilfe von Sub vorzunehmen sowie in Abhängigkeit von bi bzw. U₁ in Verbindung mit dem Signal des Carry Checkers die Flags zu setzen.

Claims (8)

1. Digitalrechner-Betriebsverfahren zur modularen Reduktion des Produktes eines Multiplikanden A und eines Multiplikators B bezüglich eines Modulus M mittels eines Rechenwerkes, welches Verfahren mehrere sich zyklisch wiederholende Schritte auf Basis eines Shift-and-Add-Algorithmus umfaßt, in denen jeweils eine Summation und bei mindestens einem Teil der Schritte eine modulare Reduktion erfolgt,
dadurch gekennzeichnet, daß
der Multiplikator B in gleichgroße Blöcke bi einer bestimmten Blocklänge z aufgeteilt wird, wobei B vorn notwendigenfalls mit Nullen aufgefüllt wird und die Anzahl möglicher Zustände (0 bis Z-1) jedes Blockes bi einer Basiszahl Z=2z entspricht, und
die sich zyklisch wiederholenden Schritte eine Summation zu einer Schrittsumme St+1 mittels eines Rechenwerkes enthalten, welche folgende drei Summanden enthält:
  • a) ein erstes Hilfsprodukt A * bi t aus dem Multiplikanden A und einem Block bi t des Multiplikators B,
  • b) ein zweites Hilfsprodukt K * vt aus einer Konstanten K und dem vorderen Teil vt der Schrittsumme St des vorhergehenden Zyklusschrittes,
  • c) ein drittes Hilfsprodukt ht * Z aus dem hinteren Teil ht der Schrittsumme St des vorhergehenden Zyklusschrittes und der Basiszahl Z,
    wobei
    • aa) die Konstante K sich aus der Länge L des Rechenwerkes berechnet zu K=2L mod M, so daß gilt: (St * Z+A * bi t) = (vt * K+ht * Z+A * bi t) mod M
    • bb) der vordere Teil vt einer Schrittsumme St jeweils die gleiche Länge z wie die Blöcke bi t hat, so daß die Zahl möglicher Zustände von vt gleich der Basiszahl Z ist,
    • cc) der hintere Teil ht einer Schrittsumme St jeweils die übrigen L-z Stellen der Schrittsumme umfaßt,
    • dd) mindestens ein erstes Basishilfsprodukt (A * n) für die ersten Hilfsprodukte berechnet und abgespeichert wird, welches ein ganzzahliges (n) Vielfaches des Multiplikanden A ist und auf welches die ersten Hilfsprodukte (A * bi) schnell zurückgeführt werden können,
    • ee) mindestens ein zweites Basishilfsprodukt (K * n) für die zweiten Hilfsprodukte berechnet und abgespeichert wird, welches ein ganzzahliges Vielfaches (n) der Konstanten K ist und auf welches die zweiten Hilfsprodukte (K * v) schnell zurückgeführt werden können.
2. Digitalrechner-Betriebsverfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Blocklänge z zwischen zwei und fünf Binärstellen liegt.
3. Digitalrechner-Betriebsverfahren nach Anspruch 2, dadurch gekennzeichnet, daß die Anzahl der abgespeicherten Hilfsprodukte A * bi bzw. K * v gleich groß ist, daß sie kleiner als die Basiszahl Z ist und daß die Notwendigkeit der Abspeicherung der übrigen möglichen Hilfsprodukte durch Operationen, die keine zusätzlichen Takte des Digitalrechners benötigen, vermieden wird.
4. Digitalrechner-Betriebsverfahren nach Anspruch 3, dadurch gekennzeichnet, daß die Abspeicherung von Hilfsprodukten A * bi bzw. K * v, die sich von einem der abgespeicherten Hilfsprodukte um einen Faktor unterscheiden, der eine 2er-Potenz ist, dadurch vermieden wird, daß sie durch stellenverschobenes Zuführen aus dem entsprechenden Basishilfsprodukt gewonnen werden.
5. Digitalrechner-Betriebsverfahren nach Anspruch 3, dadurch gekennzeichnet, daß die Abspeicherung von Hilfsprodukten A * bi bzw. K * v, bei denen bi bzw. v einen ungeraden Zahlenwert hat, dadurch vermieden wird, daß ungerade bi bzw. v gemäß der Formel bi = (bi+1) * Z-Z bzw.
v = (v+1) * Z-Zauf das nächstgrößere gerade (bi+1) bzw. (v+1) zurückgeführt werden.
6. Arithmetikprozessor zur Durchführung eines Verfahrens nach Anspruch 1, mit einer Arithmetikeinheit (AU), einem mikroprogrammierten Steuerwerk (µCU) und einer Eingabe/Ausgabe-Einheit (IOU), wobei die Arithmetikeinheit (AU) ein Addierwerk (AD) einschließt, dadurch gekennzeichnet, daß
dem Addierwerk eine Basishilfsproduktauswahleinheit (BPSU) zur Auswahl der in einem Basishilfsproduktregister abgespeicherten Basishilfsprodukte vorgeschaltet ist,
eine Einheit zur Ermittlung von Kontrollvariablen (DCV) aus den Blöcken bi und den vorderen Teilen v der Schrittsummen S vorgesehen ist und
von der Einheit zur Ermittlung von Kontrollvariablen (DCV) erzeugte Kontrollvariable an der Basishilfsproduktauswahleinheit (BPSU) anliegen, um die Auswahl der Basishilfsprodukte zu steuern.
7. Arithmetikprozessor nach Anspruch 6, dadurch gekennzeichnet, daß die Basishilfsproduktauswahleinheit (BPSU) einen Multiplexerbaum (MUXT) und einen dem Multiplexerbaum vorgeschalteten 2 : 1-Multiplexer enthält, um wahlweise nacheinander die ersten Basishilfsprodukte und die zweiten Basishilfsprodukte an den Multiplexerbaum anzulegen, so daß dieser für die Auswahl sowohl der ersten Basishilfsprodukte als auch der zweiten Basishilfsprodukte dient.
8. Arithmetikprozessor nach Anspruch 6 oder 7, dadurch gekennzeichnet, daß die Einheit zur Ermittlung von Kontrollvariablen (DCV) zwei getrennte Logikmodule zur Bestimmung von Kontrollvariablen (CVL₁, CVL₂) zur Ermittlung von Kontrollvariablen für zwei verschiedene Werte von v enthält und ein Übertragsprüfer (CC) zur Auswahl des von einem der Logikmodule ermittelten Kontrollvariablensatzes in Abhängigkeit vom endgültigen Wert von v nach Durchlauf des Übertrages vorgesehen ist.
DE19893924344 1989-07-22 1989-07-22 Digitalrechner-betriebsverfahren zur modularen reduktion eines produktes zweier grosser zahlen und entsprechender arithmetikprozessor Granted DE3924344A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE19893924344 DE3924344A1 (de) 1989-07-22 1989-07-22 Digitalrechner-betriebsverfahren zur modularen reduktion eines produktes zweier grosser zahlen und entsprechender arithmetikprozessor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE19893924344 DE3924344A1 (de) 1989-07-22 1989-07-22 Digitalrechner-betriebsverfahren zur modularen reduktion eines produktes zweier grosser zahlen und entsprechender arithmetikprozessor

Publications (2)

Publication Number Publication Date
DE3924344A1 true DE3924344A1 (de) 1991-02-14
DE3924344C2 DE3924344C2 (de) 1992-10-08

Family

ID=6385650

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19893924344 Granted DE3924344A1 (de) 1989-07-22 1989-07-22 Digitalrechner-betriebsverfahren zur modularen reduktion eines produktes zweier grosser zahlen und entsprechender arithmetikprozessor

Country Status (1)

Country Link
DE (1) DE3924344A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0502712A2 (de) * 1991-03-05 1992-09-09 Canon Kabushiki Kaisha Rechengerät und Verfahren zum Verschlüsseln/Entschlüsseln von Kommunikationsdaten unter Verwendung desselben

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2550283A1 (de) * 1974-12-03 1976-06-10 Ibm Multiplikationseinrichtung
DE2310553C2 (de) * 1972-03-06 1987-03-05 Institut Français du Pétrole, Rueil-Malmaison, Hauts-de-Seine Vorrichtung zur Durchführung von Operationen an zwei binären Operanden unter Befehl eines Mikroprogramms
DE3631992A1 (de) * 1986-03-05 1987-11-05 Holger Sedlak Kryptographie-verfahren und kryptographie-prozessor zur durchfuehrung des verfahrens

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2310553C2 (de) * 1972-03-06 1987-03-05 Institut Français du Pétrole, Rueil-Malmaison, Hauts-de-Seine Vorrichtung zur Durchführung von Operationen an zwei binären Operanden unter Befehl eines Mikroprogramms
DE2550283A1 (de) * 1974-12-03 1976-06-10 Ibm Multiplikationseinrichtung
DE3631992A1 (de) * 1986-03-05 1987-11-05 Holger Sedlak Kryptographie-verfahren und kryptographie-prozessor zur durchfuehrung des verfahrens

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0502712A2 (de) * 1991-03-05 1992-09-09 Canon Kabushiki Kaisha Rechengerät und Verfahren zum Verschlüsseln/Entschlüsseln von Kommunikationsdaten unter Verwendung desselben
EP0502712A3 (de) * 1991-03-05 1994-02-02 Canon Kk
US5313530A (en) * 1991-03-05 1994-05-17 Canon Kabushiki Kaisha Calculating apparatus and method of encrypting/decrypting communication data by using the same

Also Published As

Publication number Publication date
DE3924344C2 (de) 1992-10-08

Similar Documents

Publication Publication Date Title
DE69330848T2 (de) Einrichtung und Verfahren zur digitalen Unterschrift
DE3650335T2 (de) Rechenverfahren und -gerät für endlichfeldmultiplikation.
DE69716331T2 (de) Schaltung für Modulo-Multiplikations- und Exponentiationsarithmetik
DE69917592T2 (de) Gegen stromverbrauchsignaturanfall beständige kryptographie
DE69703085T2 (de) Koprozessor mit zwei parallel arbeitenden Multiplizierschaltungen
DE69130581T2 (de) Verfahren zur Berechnung einer Operation des Typus A.X modulo N, in einem Kodierverfahren gemäss der RSA-Methode
DE19758079A1 (de) Verfahren und Vorrichtung zur Galoisfeld-Multiplikation
DE2628473B2 (de) Digitales Faltungsfilter
DE2018452A1 (de) Arithmetische Einrichtung
EP2062131A1 (de) Schaltungen für die modulare arithmetik basierend auf der ergänzung von kettenbrüchen
DE1549584A1 (de) Datenverarbeiter zum Erhalt komplexer Fourierreihe-Koeffizienten
DE10260655B3 (de) Vorrichtung und Verfahren zum Berechnen einer Multiplikation mit einer Verschiebung des Multiplikanden, insbesondere bei der kryptographischen Berechnung
DE10357661B4 (de) Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren
DE10219158B4 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE2221693B2 (de) Schaltungsanordnung zur Ausführung einer Multiplikation zwischen zwei Binärzahlen
DE69226110T2 (de) Recheneinheit zum Multiplizieren langer ganzer Zahlen Modul M und R.S.A-Wandler mit einer derartigen Multiplikationsanordnung
DE69700018T2 (de) Koprozessor für moduläre Arithmetik mit einer schnellen Ausführung von nicht-modulären Operationen
DE10151129B4 (de) Verfahren und Vorrichtung zum Berechnen eines Ergebnisses einer Exponentiation in einer Kryptographieschaltung
DE69707717T2 (de) Modulo-arithmetischer koprozessor mit einer schaltung für die division ganzer zahlen
DE2039228A1 (de) Verfahren und Vorrichtung zum Konvertieren und Stellenwert-Verschieben von Zahlsignalen unterschiedlicher Codes in einer Datenverarbeitungsanlage
DE2705989C2 (de) Schaltungsanordnung zum parallelen Addieren oder Subtrahieren von mindestens zwei Eingangszahlen
DE69601619T2 (de) Verfahren zum Erzeugen eines Fehlerkorrekturparameters bezüglich der Verwendung von modularen Operationen nach der Montgomery-Methode
DE3924344A1 (de) Digitalrechner-betriebsverfahren zur modularen reduktion eines produktes zweier grosser zahlen und entsprechender arithmetikprozessor
EP1515226B1 (de) Modulare Multiplikation
DE1090453B (de) Reihenaddierer fuer in einem Binaercode verschluesselte Dezimalzahlen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee