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 arithmetikprozessorInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/722—Modular 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
= [(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
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.
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.
Innerhalb der Zyklusschleife 2 (Fig. 2) sind folgende
Schritte zu unterscheiden:
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.
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.
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.
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.
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
- - 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.
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.
Da in der Initialisierungsphase S=0 gesetzt wurde, haben
v und h in der ersten Iterationsschleife den Wert 0.
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.
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.
Der benötigte Wert A * b₁ für b₁=4 konnte ohne weiteres dem
vorausberechneten Wertevorrat entnommen werden.
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.
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.
Der negative Wert A * (-4) ist aus dem abgespeicherten
positiven Wert durch Bildung des Zweierkomplements sofort
erhältlich.
Die Schrittsumme ist nunmehr auf 14 Stellen angewachsen,
die hinteren 13 Stellen bilden h, die vorderste Stelle
v=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.
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.
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.
Der Ablauf entspricht im wesentlichen dem vorhergehenden
Abschnitt 2.2: aus v=1 wird v=-2, Fv behält den Wert 1.
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.
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.
Wegen Fv=1 wird v um 4 vermindert, der so erhaltene Wert
-2 ist gerade und bleibt erhalten, Fv wird 0.
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
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:
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:
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.
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.
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.
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)
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)
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 |
-
1989
- 1989-07-22 DE DE19893924344 patent/DE3924344A1/de active Granted
Patent Citations (3)
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)
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 |