DE10162496A1 - Verfahren und Vorrichtung zum Absichern einer Berechnung in einem kryptographischen Algorithmus - Google Patents
Verfahren und Vorrichtung zum Absichern einer Berechnung in einem kryptographischen AlgorithmusInfo
- Publication number
- DE10162496A1 DE10162496A1 DE10162496A DE10162496A DE10162496A1 DE 10162496 A1 DE10162496 A1 DE 10162496A1 DE 10162496 A DE10162496 A DE 10162496A DE 10162496 A DE10162496 A DE 10162496A DE 10162496 A1 DE10162496 A1 DE 10162496A1
- Authority
- DE
- Germany
- Prior art keywords
- calculation
- input data
- algorithm
- mod
- storage location
- 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/723—Modular exponentiation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
Bei einem Verfahren zum Absichern einer Berechnung in einem kryptographischen Algorithmus, wobei die Berechnung Eingangsdaten erhält, um Ausgangsdaten zu erzeugen, werden zunächst Eingangsdaten für die Berechnung bereitgestellt (10). Dann wird die Berechnung durchgeführt (12), um die Ausgangsdaten der Berechnung zu erhalten. Nach dem Durchführen der Berechnung wird überprüft (14), ob die Eingangsdaten während der Berechnung verändert wurden, und zwar unter Verwendung eines Überprüfungsalgorithmus, der sich von der Berechnung selbst unterscheidet. Falls die Überprüfung ergibt, daß die Eingangsdaten während der Berechnung verändert wurden, wird eine Weitergabe der Ausgangsdaten unterdrückt (16). Damit wird mit hoher Sicherheit verhindert, daß falsche Ergebnisse der Berechnung des kryptographischen Algorithmus ausgegeben werden, da die Eingangsdaten für Hardware-Attacken besonders anfällig sind. Außerdem können die Eingangsdaten mit geringem Aufwand im Vergleich zur Berechnung des kryptographischen Algorithmus selbst hinsichtlich ihrer Integrität untersucht werden.
Description
- Die vorliegende Erfindung bezieht sich auf die Kryptographie und insbesondere auf ein Verfahren und eine Vorrichtung zum Absichern einer Berechnung in einem kryptographischen Algorithmus.
- Die modulare Exponentiation ist eine der Kernberechnungen für verschiedene kryptographische Algorithmen. Ein Beispiel für einen weit verbreiteten kryptographischen Algorithmus ist das RSA-Kryptosystem, das beispielsweise in "Handbook of Applied Cryptography", Menezes, von Oorschot, Vanstone, CRC Press, 1996, Kapitel 8.2, beschrieben ist. Das RSA-Kryptosystem arbeitet folgendermaßen. Bei der Verschlüsselung verschlüsselt eine Partei B eine Nachricht m für eine andere Partei A. Nur die Partei A soll die von B erhaltene verschlüsselte Nachricht entschlüsseln. Die Partei B erhält zunächst den öffentlichen Schlüssel von der Partei A. Die Partei B stellt dann die zu verschlüsselnde Nachricht als Ganzzahl m dar. Dann verschlüsselt die Partei B die Nachricht m folgendermaßen:
c = me mod n (1)
- In Gleichung (1) stellt m die Klartext-Nachricht dar. e ist der öffentliche Schlüssel. n ist der Modul und ist ebenfalls öffentlich. c stellt die verschlüsselte Nachricht dar.
- Die Partei B sendet nun die verschlüsselte Nachricht c zu der Partei A.
- Zur Entschlüsselung, also um den Klartext m wieder aus dem Geheimtext c zu erhalten, führt A folgende Berechnung aus:
m = cd mod n (2)
- In Gleichung (2) stellt d den privaten Schlüssel der Partei A dar, der vor Angriffen zu schützen ist.
- In der Technik ist ferner auch ein RSA-Signaturalgorithmus bekannt. Hierbei wird folgendermaßen vorgegangen. Jede Entität A erzeugt zunächst zwei große Primzahlen p und q und berechnet dann den Modul n aus dem Produkt von p und q. Daraus wird dann, wie es ebenfalls im oben bezeichneten Fachbuch im Kapitel 11.3 beschrieben ist, eine Schlüsselerzeugung vorgenommen, so daß jede Partei einen öffentlichen Schlüssel hat, der aus n, also dem Modul, und e besteht, während jede Partei zusätzlich einen privaten Schlüssel d hat.
- Zur RSA-Signaturerzeugung und Verifikation signiert die Entität A eine Nachricht m. Jede Entität B soll dann die Signatur von A verifizieren und die Nachricht m aus der Signatur wiedergewinnen können.
- Bei der Signaturerzeugung berechnet die Entität A zunächst eine Ganzzahl m' = R(m). Danach führt die Entität A folgende Berechnung durch:
s = m'd mod n (3)
s ist dabei die Signatur von A für die Nachricht m. - Zur Verifikation der Signatur der Partei A und zum Wiedergewinnen der Nachricht m muß die Partei B folgendermaßen vorgehen:
Zunächst muß die Partei B den öffentlichen Schlüssel (n, e) von A erhalten. Dann führt die Partei B folgende Berechnung durch:
m' = se mod n (4)
- In Gleichung (4) ist e der öffentliche Schlüssel von A.
- Die Partei B wird dann verifizieren, ob m' das Element aus einem Raum MR ist. Wenn dies nicht der Fall ist, wird die Signatur zurückgewiesen. Wenn dies der Fall ist, wird die Nachricht m wiedergewonnen, indem m = R-1(m') berechnet wird.
- Aus der obigen Darstellung wird ersichtlich, daß die modulare Exponentiation an vielerlei Stellen benötigt wird. Insbesondere wird zur RSA-Verschlüsselung in Gleichung (2) und zur RSA-Signaturerzeugung in Gleichung (3) mit dem geheimen Schlüssel d gerechnet.
- Nachdem der geheime Schlüssel - genauso wie der öffentliche Schlüssel - bei typischen RSA-Systemen beträchtliche Längen annehmen kann, wie z. B. 1024 oder 2048 Bits, ist die modulare Exponentiation eine relativ aufwendige Berechnung insbesondere für Low Power Devices, wie z. B. Smart Cards, Mobiltelefone oder PDAS.
- Um die modulare Exponentiation schneller berechnen zu können, ist es bekannt, den sogenannten chinesischen Restsatz (CRT; CRT = Chinese Remainder Theorem) einzusetzen, der im Absatz 2.120 des oben bezeichneten Fachbuchs beschrieben ist. Für RSA-Systeme wird insbesondere der Algorithmus von Garner bevorzugt, der ebenfalls in dem oben beschriebenen Fachbuch im Abschnitt 14.5.2 beschrieben ist. Der klassische Algorithmus für den CRT benötigt typischerweise eine modulare Reduktion mit dem Modul M, während dies bei dem Algorithmus nach Garner nicht der Fall ist. Statt dessen wird hier die eine "große" modulare Exponentiation in zwei "kleine" modulare Exponentiationen aufgeteilt, deren Ergebnisse dann gemäß dem chinesischen Restsatz zusammengesetzt werden. Obwohl hier zwei Exponentiationen benötigt werden, ist es dennoch günstiger, zwei "kleine" modulare Exponentiationen zu berechnen, als eine "große" modulare Exponentiation.
- Zur Darstellung des RSA-CRT-Verfahren unter Verwendung des Algorithmus von Garner wird auf Fig. 5 Bezug genommen. In einem Block 100 sind die Eingangsparameter dargelegt, die alle lediglich von p und q sowie vom Schlüssel d abhängen, jedoch nicht von der beispielsweise zu signierenden Nachricht m. In einem Block 102 ist die Ausgabe des Algorithmus dargestellt, wie sie anhand von Gleichung (2) oder Gleichung (3) dargestellt worden ist. Es sei darauf hingewiesen, daß das in Fig. 5 beschriebene Verfahren nicht nur für eine Berechnung mit geheimen Schlüsseln verwendet wird, sondern selbstverständlich auch für eine modulare Exponentiation unter Verwendung des öffentlichen Schlüssels.
- Aus den im Block 100 dargestellten Eingangsgrößen wird dann in einem Block 104 eine erste modulare Hilfs-Exponentiation (sp) berechnet. Analog dazu wird in einem Block 106 dann eine zweite modulare Hilfs-Exponentiation (sq) berechnet. Die Ergebnisse der ersten und der zweiten modularen Hilfs- Exponentiation werden dann in einem Block 108 gemäß dem chinesischen Restsatz zusammengesetzt, um das Ergebnis s = md mod n zu erhalten. Generell ist das in Fig. 5 dargestellte RSA-CRT-Verfahren etwa um das Vierfache schneller als die direkte Berechnung der im Block 102 dargestellten Ausgabe beispielsweise mittels des Square-and-Multiply-Algorithmus.
- Aufgrund der Recheneffizienz ist der RSA-CRT-Algorithmus, der in Fig. 5 dargestellt ist, dem Square-and-Multiply-Algorithmus in jedem Fall vorzuziehen. Nachteilig am RSA-CRT-Algorithmus ist jedoch die Tatsache, daß er gegenüber kryptographischen "Angriffen" dahingehend sehr anfällig ist, daß der geheime Schlüssel d ermittelt werden kann, wenn eine fehlerhafte Berechnung des RSA-CRT-Algorithmus entsprechend ausgewertet wird. Diese Tatsache ist in "On the Importance of Eliminating Errors in Cryptographic Computations", Boneh, De-Millo, Lipton, J. Cryptology (2001) 14, S. 101 bis 119, beschrieben. Es wird ausgeführt, daß der geheime Signaturschlüssel, der bei einer Implementation des RSA-Verfahrens, das auf dem chinesischen Restsatz (CRT) basiert, aus einer einzigen fehlerhaften RSA-Signatur ermittelt werden kann.
- Eine fehlerhafte RSA-Signatur kann dadurch erhalten werden, daß die Software oder die Hardware, die den Algorithmus ausführt, zu Fehlern gebracht wird, beispielsweise durch Aussetzen des Kryptoprozessors gegenüber einer elektrischen oder thermischen Belastung.
- Als Gegenmaßnahmen gegen solche Angriffe, die auf Hardware- Fehlern basieren, wird vorgeschlagen, die Ausgabe jeder Berechnung zu überprüfen, bevor dieselbe aus dem Chip ausgegeben wird. Obwohl dieser zusätzliche Verifikationsschritt das Systemverhalten verschlechtern kann, wird davon gesprochen, daß diese zusätzliche Verifikation aus Sicherheitsgründen wesentlich ist.
- Die einfachste Art und Weise der Verifikation besteht darin, eine Gegenrechnung mit dem öffentlichen Exponenten e durchzuführen, wobei folgende Identität festgestellt werden soll:
(md)e = m mod n (5)
- Dieser zusätzliche Verifikationsschritt ist jedoch vom Rechenaufwand her unmittelbar vergleichbar mit dem eigentlichen Signatur- bzw. Entschlüsselungs-Schritt und führt daher zu einer Halbierung des Systemverhaltens, liefert jedoch eine hohe Sicherheit.
- Nachteilig ist jedoch auch, daß der öffentliche Schlüssel e in üblichen Protokollen, wie z. B. der ZKA-lib, nicht verfügbar ist. Die ZKA-lib ist eine Sammlung von Spezifikationen des zentralen Kreditausschusses, die regeln, welche Daten verfügbar sind. Für das RSA-CRT-Verfahren sind lediglich die im Block 100 von Fig. 5 gegebenen Eingangsdaten verfügbar. Der öffentliche Schlüssel e ist hierbei nicht Teil der in der ZKA-lib-Beschreibung vorgegebenen Parameter. Der Exponent e müßte daher aufwendig berechnet werden, um die "Gegenrechnung" gemäß Gleichung (5) durchführen zu können. Dies würde die Leistung der Signatur-Chipkarte weiter reduzieren und dürfte dazu führen, daß solche Algorithmen aufgrund ihrer langsamen Arbeitsweise keine Chance auf eine Durchsetzung am Markt haben.
- In der Fachveröffentlichung von A. Shamir, "How to check modular Exponentiation", Rump Session, Eurocrypt 97, ist ein weiteres Verfahren beschrieben, um Signaturen zu verifizieren, die durch RSA-CRT-Verfahren erzeugt werden. In dieser Fachveröffentlichung wird vorgeschlagen, eine kleine Zufallszahl r (beispielsweise 32 Bits) zu verwenden und statt der Berechnung im Block 104 folgende Berechnung auszuführen:
sp' = md mod pr (6)
- Statt dem Block 106 wird folgende Berechnung ausgeführt:
sp' md mod qr (7)
- Dann, unmittelbar nach den Berechnungen gemäß den Gleichungen (6) und (7) werden folgende Überprüfungsberechnungen durchgeführt:
sp' mod r = sq' mod r (8)
- Wenn die Überprüfung gemäß Gleichung (8) wahr ist, wird sp und sq aus folgender Gleichung (9) erhalten:
sp' mod p = sp; sq' mod q = sq (9)
- Aus den durch Gleichung (9) erhaltenen Werten sp und sq wird dann die im Block 108 in Fig. 5 dargestellte Berechnung durchgeführt, um aus den modularen Hilfs-Exponentiationen das Gesamtergebnis s mittels des chinesischen Restsatzes zusammenzufügen.
- Nachteilig an diesem Verfahren ist die Tatsache, daß zur Überprüfung lediglich der Hilfsparameter r sowie die Zwischenergebnisse sp' und sq' herangezogen werden, wobei die Überprüfung nicht zur Unterdrückung eines Ausgabewerts führt, wenn eine kryptographische Attacke stattgefunden hat, die möglicherweise nicht die Zwischenergebnisse sp', sq' oder den Parameter r beeinträchtigt hat, aber dann, beispielsweise in den in Gleichung (9) gegebenen Schritten und der abschließenden Zusammensetzung des Algorithmus zu einem Hardware-Fehler führt, der dazu verwendet werden kann, um den geheimen Schlüssel d unerlaubterweise auszuspähen.
- Darüber hinaus wird in der zitierten Fachveröffentlichung von Boneh u. a. beispielsweise als Abwehrmaßnahme zur Sicherung des Fiat-Shamir-Schemas vorgeschlagen, Registerfehler, die auftreten, während der Prozessor auf eine Antwort von außen wartet, dadurch abzuwehren, daß Fehlererfassungsbits zum Schutz des internen Speichers eines Prozessors eingesetzt werden. Weitere Maßnahmen, um RSA-Signaturen zu schützen, bestehen darin, eine Zufälligkeit in das Signaturverfahren einzuführen. Die Zufälligkeit stellt sicher, daß der Unterzeichner niemals die gleiche Nachricht zweimal unterzeichnet. Ferner weiß der Verifizierer, wenn er eine fehlerhafte Signatur vorliegen hat, nicht den vollständigen Klartext, der unterzeichnet worden ist.
- Die Aufgabe der vorliegenden Erfindung besteht darin, ein sicheres und effizientes Konzept zum Absichern einer Berechnung in einem kryptographischen Algorithmus zu schaffen.
- Diese Aufgabe wird durch ein Verfahren gemäß Patentanspruch 1 oder durch eine Vorrichtung gemäß Patentanspruch 14 gelöst.
- Der vorliegenden Erfindung liegt die Erkenntnis zugrunde, daß die Eingangsdaten in eine kryptographische Berechnung, wie z. B. die im Block 100 von Fig. 5 dargestellten Daten, am ehesten "Opfer" einer kryptographischen Attacke werden. Untersuchungen haben gezeigt, daß kryptographische Attacken dadurch erfaßt werden können, daß Eingangsdaten für eine Berechnung in einem kryptographischen Algorithmus am ehestens durch einen feindlichen Angriff beeinträchtigt werden, während dies für Ergebnisse der kryptographischen Berechnung nicht derart signifikant zutrifft. Es wurde herausgefunden, daß die Eingangsdaten gewissermaßen ein Indikator für einen kryptographischen Angriff sind. Sind die Eingangsdaten nach dem Ausführen einer Berechnung in einem kryptographischen Algorithmus im Vergleich zu ihrem Zustand vor der Ausführung des kryptographischen Algorithmus unverändert, so kann mit hoher Sicherheit davon ausgegangen werden, daß keine kryptographische Attacke stattgefunden hat. Wird dagegen nach dem Ausführen einer Berechnung für einen kryptographischen Algorithmus festgestellt, daß sich die Eingangsdaten gegenüber ihrem Ursprungszustand verändert haben, so kann mit Sicherheit davon ausgegangen werden, daß eine kryptographische Attacke stattgefunden hat.
- Beim erfindungsgemäßen Verfahren zum Absichern einer Berechnung in einem kryptographischen Algorithmus werden daher zunächst die Eingangsdaten für die kryptographische Berechnung bereitgestellt. Dann wird die Berechnung durchgeführt, um die Ausgangsdaten der Berechnung zu erhalten. Nach einer Durchführung der Berechnung wird dann überprüft, ob die Eingangsdaten während der Berechnung verändert wurden, und zwar unter Verwendung eines Überprüfungsalgorithmus, der sich von der Berechnung selbst unterscheidet. Falls die Überprüfung ergibt, daß die Eingangsdaten während der Berechnung verändert worden sind, wird eine Weitergabe der Ausgangsdaten der Berechnung unterdrückt.
- Ein Vorteil der vorliegenden Erfindung besteht darin, daß das erfindungsgemäße Konzept ohne Verwendung von Zwischenergebnissen, also z. B. den Ausgangsdaten, der Berechnung auskommen kann. Nachdem die Eingangsdaten ein sicherer Indikator dafür sind, ob eine Attacke stattgefunden hat, wird erfindungsgemäß, bevor Ausgangsdaten der Berechnung entweder an eine Ausgabe oder an eine nächste Berechnung weitergegeben werden, überprüft, ob die Eingangsdaten während der Berechnung verändert worden sind. Die Eingangsdaten werden daher als "Sensor" für eine kryptographische Attacke verwendet.
- Ein Vorteil der vorliegenden Erfindung besteht darin, daß ein Überprüfungsalgorithmus eingesetzt werden kann, der wesentlich weniger aufwendig als die kryptographische Berechnung selbst sein kann, so daß der durch das "Gegenrechnen" mit dem öffentlichen Exponenten benötigte Aufwand vermieden wird.
- Ein weiterer Vorteil der vorliegenden Erfindung besteht darin, daß kryptographische Attacken sicherer als beim bekannten Konzept erkannt werden, bei dem Ausgangsdaten der Hilfs- Exponentiationen benötigt werden, um eine Verifikation durchzuführen. Generell werden Konzepte, die Zwischenergebnisse einer Berechnung benötigen, lediglich feststellen können, ob während der Berechnung der Zwischenergebnisse ein Fehler aufgetreten ist, d. h. ob das innere Rechenwerk des Prozessors aufgrund einer Fehlerattacke fehlerhaft gearbeitet hat.
- War die kryptographische Attacke jedoch so "schwach", daß lediglich der Speicher, nicht aber das Rechenwerk beeinträchtigt wird, so wird eine Überprüfung auf der Basis von Zwischenergebnissen diesen Fehler nicht feststellen. Sobald das Rechenwerk jedoch später auf den - nunmehr fehlerhaften - Speicher zugreift, um Parameter für eine nächste Berechnung abzurufen, wird ein Fehler auftreten, der von einem Angreifer genutzt werden kann. Ein solcher Zugriff würde beispielsweise stattfinden, wenn das Rechenwerk im Block 108 auf den Speicher zugreift, um qinv, p oder q abzurufen. Die bekannte Sicherungsmaßnahme hat keine Funktionalität mehr um einen solchen Fehler abzufangen.
- Zur Überprüfung der Eingangsdaten nach der Durchführung der kryptographischen Berechnung existieren verschiedene Möglichkeiten. Eine Möglichkeit besteht darin, beim Abspeichern der Eingangsdaten eine Prüfsumme zu bilden und diese Prüfsumme ebenfalls abzuspeichern. Nach der Ausführung der kryptographischen Berechnung wird dann auf dieselbe Speicherstelle zugegriffen, um deren Inhalt wiederzugewinnen, und um mit dem Inhalt der Speicherstelle, an der die Eingangsdaten stehen sollten, eine Prüfsumme zu bilden. Entspricht die Prüfsumme der abgespeicherten Prüfsumme, so kann das Ergebnis der Berechnung ausgegeben werden. Entspricht die auf der Basis des Eingangsdaten-Speicherinhalts gebildete Prüfsumme nicht der im Speicher abgespeicherten Prüfsumme, so kann davon ausgegangen werden, daß eine kryptographische Attacke stattgefunden hat, weshalb keine Daten ausgegeben werden, sondern eine Fehlermeldung oder überhaupt nichts.
- Ein weitere Alternative zum Überprüfen der Eingangsdaten, die bevorzugt wird, besteht darin, entweder beim Abspeichern der Eingangsdaten auf der Chipkarte selbst oder bei Beginn einer Berechnung die Eingangsdaten mittels eine Verarbeitungsalgorithmus zu verarbeiten, um Sicherheitsinformationen zu ermitteln, die an einer Sicherheitsinformationen-Speicherstelle gespeichert werden. Nach der Ausführung des kryptographischen Algorithmus kann dann der Inhalt der Sicherheitsinformationen-Speicherstelle wiedergewonnen werden und gemäß einem Kontrollalgorithmus verarbeitet werden. Der Kontrollalgorithmus ist so ausgestaltet, daß bei unverändertem Inhalt der Sicherheitsinformationen-Speicherstelle ein vorbestimmtes Resultat erhalten wird. Wird dieses Resultat erhalten, so kann davon ausgegangen werden, daß keine Attacke stattgefunden hat. Wird dieses Resultat jedoch nicht erhalten, so hat wahrscheinlich eine Attacke stattgefunden, und so müssen die Ausgangsdaten der Berechnung des kryptographischen Algorithmus unterdrückt werden.
- Als Verarbeitungsalgorithmus bietet sich beispielsweise an, eine Zahl mit einer Ganzzahl zu multiplizieren. Der Kontrollalgorithmus, der mit diesem Verarbeitungsalgorithmus korrespondiert, besteht dann darin, eine modulare Reduktion der Sicherheitsinformationen mit der ursprünglichen Zahl durchzuführen. Als vorbestimmtes Resultat wird dann eine "0" erwartet. Selbstverständlich sind weitere Kontrollalgorithmen denkbar, die alle die Eigenschaft haben, daß sie nach einer Verarbeitung der Sicherheitsinformationen, die von den Eingangsdaten abgeleitet worden sind, und zwar bevor die Berechnung ausgeführt worden ist, ein vorbestimmtes Resultat liefern.
- Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen detailliert erläutert. Es zeigen:
- Fig. 1 eine Blockdiagrammdarstellung des erfindungsgemäßen Konzepts;
- Fig. 2a und 2b eine detailliertere Darstellung des erfindungsgemäßen Konzepts mit Prüfsummenalgorithmus gemäß einem ersten Ausführungsbeispiel der vorliegenden Erfindung;
- Fig. 3a und 3b eine detailliertere Darstellung des erfindungsgemäßen Konzepts unter Verwendung eines zweiten Ausführungsbeispiels der vorliegenden Erfindung;
- Fig. 4 eine detaillierte Darstellung des erfindungsgemäßen Konzepts anhand des RSA-CRT-Verfahrens; und
- Fig. 5 eine Blockdiagrammdarstellung des bekannten RSA-CRT-Verfahrens.
- Die erfindungsgemäße Vorrichtung zum Absichern einer Berechnung in einem kryptographischen Algorithmus umfaßt zunächst eine Einrichtung 10 zum Bereitstellen von Eingangsdaten für die Berechnung, die Teil eines kryptographischen Algorithmus ist, wie z. B. eines RSA-Algorithmus zu Zwecken der Verschlüsselung/Entschlüsselung oder Signatur/Verifikation. Die Einrichtung 10 zum Bereitstellen liefert Eingangsdaten für die Berechnung, die einer Einrichtung 12 zum Durchführen der kryptographischen Berechnung bzw. der Berechnung für eine kryptographischen Algorithmus zugeführt werden. Die Einrichtung 12 liefert Ausgangsdaten der Berechnung. Die Ausgangsdaten der Berechnung werden nunmehr, aus Sicherheitsgründen, nicht einfach beispielsweise ausgegeben oder einer weiteren Berechnung zugeführt, sondern so lange verzögert, bis eine Einrichtung 14 zum Überprüfen einer Veränderung in den Eingangsdaten festgestellt hat, ob eine kryptographische Attacke stattgefunden hat oder nicht.
- Die Einrichtung 14 führt diese Überprüfung anhand der Eingangsdaten durch. Hat sich am Zustand der Eingangsdaten vor der Ausführung der kryptographischen Berechnung im Vergleich zu nach der Ausführung der kryptographischen Berechnung nichts verändert, so wird davon ausgegangen, daß keine Attacke stattgefunden hat, so daß die Ausgangsdaten am Ausgang der Einrichtung 12 beispielsweise an eine Anzeige ausgegeben werden können, oder einer weiteren Berechnung als Eingangsdaten zugeführt werden können. Stellt die Einrichtung 14 jedoch fest, daß sich die Eingangsdaten verändert haben, so wird eine Einrichtung 16 aktiviert, um die Ausgangsdaten zu unterdrücken. Je nach Ausführungsform kann neben einer Unterdrückung der Ausgangsdaten eine Fehlermeldung ausgegeben werden. Alternativ könnte jedoch auch keine Ausgabe stattfinden.
- Die Fig. 2a und 2b zeigen eine detailliertere Darstellung eines ersten Ausführungsbeispiels der vorliegenden Erfindung, das auf einem Prüfsummenalgorithmus basiert. In einem Block 20 werden zunächst Eingangsdaten für eine Berechnung eines kryptographischen Algorithmus, wie z. B. die in Fig. 5 dargestellte RSA-CRT-Berechnung, an einer Eingangsdaten- Speicherstelle eines Kryptographieprozessors gespeichert. Daraufhin wird, beispielsweise bereits beim ersten Einspeichern der Daten auf der Karte, eine Prüfsumme, beispielsweise eine CRT-Prüfsumme, über den Eingangsdaten gebildet, woraufhin die Prüfsumme an einer Prüfsummen-Speicherstelle des Kryptographieprozessors gespeichert wird (Block 22).
- Die Einrichtung 14 von Fig. 1 wird dann, wie es in Fig. 2b dargestellt ist, ausgestaltet sein, um nach einer Durchführung der Berechnung des kryptographischen Algorithmus auf die Eingangsdaten-Speicherstelle zuzugreifen, um den Inhalt der Eingangsdaten-Speicherstelle wiederzugewinnen (Block 24). Dann wird, wie es durch einen Block 26 dargestellt ist, eine Prüfsumme über den wiedergewonnenen Inhalt der Eingangsdaten- Speicherstelle gebildet, wobei derselbe Algorithmus wie im Block 22 verwendet wird. Am Ausgang des Blocks 26 liegt somit eine aktuell berechnete Eingangsdaten-Prüfsumme vor. Durch einen Block 28 wird dann auf die an der Prüfsummen- Speicherstelle durch den Block 22 (Fig. 2a) gespeicherte Prüfsumme zugegriffen. In einem Block 30 werden schließlich die gespeicherte Prüfsumme und die aktuell berechnete Prüfsumme (durch den Block 26 berechnet) miteinander verglichen. Werden Differenzen festgestellt, so kann davon ausgegangen werden, daß die Eingangsdaten während des Durchführens der Berechnung des kryptographischen Algorithmus korrumpiert worden sind, was wiederum ein Indiz für eine Fehlerattacke ist. Daher werden die Ausgangsdaten unterdrückt. Wird keine Differenz in den Prüfsummen festgestellt, so wird davon ausgegangen, daß keine Attacke stattgefunden hat, so daß die Ausgangsdaten ausgegeben werden können, oder an eine weitere kryptographische Berechnung als Eingangsdaten übermittelt werden können.
- Im nachfolgenden wird anhand der Fig. 3a und 3b ein alternatives Ausführungsbeispiel zum Überprüfen einer Veränderung in den Eingangsdaten einer Berechnung eines kryptographischen Algorithmus dargestellt. Zunächst werden, wie bei dem in Fig. 2a gezeigten Ausführungsbeispiel, die Eingangsdaten an einer Eingangsdaten-Speicherstelle gespeichert (Block 32). Im Gegensatz zu dem in Fig. 2a gezeigten Ausführungsbeispiel, bei dem eine Prüfsumme berechnet wurde, wird nun eine Verarbeitung der Eingangsdaten mittels eines Verarbeitungsalgorithmus durchgeführt, um Sicherheitsinformationen zu erhalten (Block 34). In einem Block 36 werden dann die durch den Block 34 berechneten Sicherheitsinformationen an einer Sicherheitsinformationen-Speicherstelle des Kryptoprozessors abgespeichert.
- Zur Überprüfung wird nunmehr folgendermaßen vorgegangen. Zunächst werden, wie es in einem Block 38 von Fig. 3b gezeigt ist, die an der Sicherheitsinformationen-Speicherstelle stehenden Informationen wiedergewonnen. Diese Informationen werden dann in einem Block 40 mittels eines Kontrollalgorithmus verarbeitet, wobei der Kontrollalgorithmus so ausgestaltet ist, daß er bei unverändertem Inhalt der Sicherheitsinformationen-Speicherstelle ein vorbestimmtes Resultat liefert. In einem Block 42 wird überprüft, ob die Verarbeitung durch den Kontrollalgorithmus in dem Block 40 zu dem vorbestimmten Resultat geführt hat. War dies der Fall, so werden die Ausgangsdaten weitergegeben, wie es durch einen Block 44 dargestellt ist. Wird dagegen festgestellt, daß die Verarbeitung durch den Kontrollalgorithmus 40 nicht zu dem vorbestimmten Resultat geführt hat, werden die Ausgangsdaten unterdrückt (Block 16).
- Im nachfolgenden wird anhand von Fig. 4 ein bevorzugtes Ausführungsbeispiel zum sicheren Ausführen des RSA-CRT- Verfahrens beschrieben, bei dem das erfindungsgemäße Konzept des Überprüfens der Eingangsdaten vor der Ausgabe von Ausgangsdaten eines kryptographischen Algorithmus an mehreren Stellen innerhalb des Algorithmus eingesetzt wird.
- Des weiteren wird bei dem in Fig. 4 gezeigten Ausführungsbeispiel auch die Berechnung des kryptographischen Algorithmus selbst, und zwar insbesondere die Berechnung der beiden Hilfs-Exponentiationen überprüft. Schließlich wird bei dem in Fig. 4 gezeigten Ausführungsbeispiel auch überprüft, ob das "Zusammensetzen" der beiden Ergebnisse der Hilfs- Exponentiationen, um die signierte Nachricht s zu erhalten, korrekt stattgefunden hat.
- Zunächst werden, wie es bereits anhand von Fig. 5 dargestellt worden ist, die Parameter p, q, dp, dq, qinv bereitgestellt, die die üblichen Eingabeparameter für das RSA-CRT-Verfahren sind. Ferner werden, wie es in einem Block 50 von Fig. 4 dargestellt ist, die zu verschlüsselnde Nachricht m sowie eine Zahl t und eine Zufallszahl rand als Eingangsdaten bereitgestellt. Die Zahl t ist vorzugsweise eine Primzahl, und vorzugsweise eine kleine Primzahl, welche beispielsweise nicht länger als 16 Bits ist, um den Vorteil des CRT-Verfahrens nicht zu stark zu schmälern, nämlich daß die beiden Hilfs- Exponentiationen mit kleinerem Modul im Vergleich zu einer einzigen modularen Exponentiation mit dem Modul n = p mal q stattfinden. Ist die Zahl t keine Primzahl, so ist dieser Fall ebenfalls möglich, in den Gleichungen müßte jedoch dann der Ausdruck (t-1) durch die Eulersche Phi-Funktion von t ersetzt werden.
- Wie es anhand von Fig. 3a dargestellt ist, werden zunächst Eingangsdaten in Blöcken 52a, 52b verarbeitet. Als Verarbeitungsalgorithmus wird die Multiplikation des ursprünglichen Parameters p bzw. q mit der Primzahl t verwendet. Ferner wird als Verarbeitungsvorschrift die Addition von dp mit dem Produkt aus der Zufallszahl rand und der Zahl (p-1) bzw. entsprechend für q verwendet.
- Es sei darauf hingewiesen, daß prinzipiell auch eine einzige der vier in den Blöcken 52a, 52b gegebenen Verarbeitungsvorschriften einen erfindungsgemäßen Effekt ergeben würde. Nach der Vollendung der Blöcke 52a, 52b werden die durch die Verarbeitung erhaltenen Sicherheitsinformationen p', dp', q' und dq' an einer Sicherheitsinformationen-Speicherstelle gespeichert. Diese Speicherstelle könnte beispielsweise der Arbeitsspeicher eines Kryptoprozessors sein, oder ein inneres Register, das dem Rechenwerk des Kryptoprozessors zugeordnet ist. Dann wird durch das Rechenwerk, wie es durch Blöcke 54a, 54b dargestellt ist, als Berechnung innerhalb des kryptographischen Algorithmus sowohl die erste Hilfs-Exponentiation (sp') als auch die zweite Hilfs-Exponentiation (sq') durchgeführt, wie es in Fig. 4 gezeigt ist. Nach dem Durchführen der Blöcke 54a, 54b werden die Ausgangsdaten der Berechnungen, nämlich sp' und sq' nicht unmittelbar entweder ausgegeben bzw. für eine weitere Berechnung weitergegeben, sondern es wird erfindungsgemäß zunächst in Blöcken 56a, 56b mittels eines Kontrollalgorithmus überprüft, ob die Eingangsdaten für die Berechnung in den Blöcken 54a, 54b während der Berechnung durch die Blöcke 54a, 54b verändert worden sind. Hierzu wird als Kontrollalgorithmus eine modulare Reduktion verwendet, wobei als vorbestimmtes Ergebnis entweder 0 erwartet wird, wie es in den ersten Zeilen der beiden Blöcke 56a, 56b dargestellt ist, oder entweder dp oder dq als vorbestimmtes Resultat erwartet wird. Das vorbestimmte Resultat ergibt sich, wenn die Größe p', die in der Terminologie der vorliegenden Erfindung die Sicherheitsinformation ist, nicht beispielsweise durch eine Fehlerattacke verändert worden ist. Dasselbe gilt für die weitere Sicherheitsinformation dp'.
- Sind die Überprüfungen in den Blöcken 56a, 56b erfolgreich, also werden vorbestimmte Ergebnisse durch den Kontrollalgorithmus erhalten, so wird zu Blöcken 58a, 58b weitergegangen. Die Blöcke 58a, 58b zeigen bevorzugte Vorberechnungen, um neben dem Eingangsdaten-Überprüfungskonzept auch ein Ergebnisdaten-Überprüfungskonzept durchzuführen. Mittels eines Ergebnis-Kontrollalgorithmus (Block 60 in Fig. 4) wird dann überprüft, ob die Berechnung der Hilfs-Exponentiationen in den Blöcken 54a, 54b korrekt stattgefunden hat.
- In Blöcken 62a, 62b werden die Hilfs-Exponentiationen der Blöcke 54a, 54b entsprechend modular reduziert, um den Einfluß des Parameters t bzw. der Zufallszahl zu eliminieren. In einem Block 64 wird schließlich, wie es anhand des Blocks 108 von Fig. 5 klargestellt worden ist, der Zusammensetzungsschritt ausgeführt, um aus den Hilfs-Exponentiationsergebnisse sp, sq die signierte Nachricht s zu erzeugen.
- Bei einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung wird dieses Ergebnis jedoch nicht unmittelbar verwendet, sondern es wird nach dem Zusammensetzen durch den Block 64 eine Überprüfung dahingehend durchgeführt, ob das Zusammensetzen erfolgreich war.
- Dies wird dadurch erreicht, daß zunächst die erhaltene signierte Nachricht s unter Verwendung der Primzahl p als Modul modular reduziert wird. Dieser Kontrollalgorithmus sollte als Ergebnis sp ergeben, wobei dieses sp gleich dem im Block 62a ausgerechneten Wert sp sein muß.
- Analog wird in einem Block 66b vorgegangen, um die Korrektheit des Ergebnisses s auch anhand einer modularen Reduktion mit der Primzahl q als Modul zu überprüfen. Hierzu wird zur Ausführung der in Block 66a gegebenen Berechnung zunächst auf die Zwischenspeicherstelle zugegriffen, an der das Ergebnis des Blocks 64 abgespeichert wurde. Zusätzlich wird auf die Speicherstelle zugegriffen, an der das Eingangsdatum p gespeichert ist. Schließlich wird, um den Vergleich des Blocks 66a durchzuführen, auf die Speicherstelle zugegriffen, in der das Ergebnis des Blocks 62a, also sp, gespeichert ist. Analog wird im Block 66b für s, q und sq vorgegangen.
- Liefert die Berechnung im Block 66a ein vorbestimmtes Resultat dahingehend, daß die linke und die rechte Seite der im Block 66a gegebenen Gleichung nicht gleich sind, so wird ein Fehler ausgegeben, und die Ausgabe des Ergebnisses s des Blocks 64 wird unterdrückt. Dieselbe Unterdrückung des Ergebnisses s findet statt, wenn die Berechnung im Block 66b ergibt, daß ein Fehler stattgefunden hat. Eine Unterdrückung findet somit vorzugsweise bereits dann statt, wenn ein einziger Block einen Fehler ergeben hat bzw., in anderen Worten ausgedrückt, findet eine Ergebnisausgabe mittels eines Blocks 68 nur dann statt, wenn sowohl die Berechnung im Block 66a als auch die Berechnung im Block 66b korrekt waren.
- Anhand des Beispiels in Block 66a wird deutlich, daß dieser Ergebnis-Kontrollalgorithmus dahingehend vorteilhaft ist, daß er unmittelbar das Ergebnis des Blocks 64 zur Überprüfung verwendet, daß er jedoch auch auf den Eingangsdaten- Speicherbereich zugreift, um die Primzahl p zu erhalten bzw. den Inhalt der Speicherstelle, an der p stehen sollte, und daß zusätzlich auch ein Zwischenergebnis verwendet wird, nämlich sp, das im Schritt 62a erhalten worden ist. Mittels einer Berechnung wird somit sowohl überprüft, ob sich Eingangsdaten verändert haben, als auch wird überprüft, ob der Zusammensetzungsschritt 64 des RSA-CRT-Verfahrens von dem Krypto- Rechenwerk korrekt durchgeführt worden ist. Schließlich wird auch ein Zwischenergebnis sp verwendet, so daß in eine einzige einfache Berechnung auch Zwischenergebnis-Register mit einbezogen werden.
- Aus dem in Fig. 4 gezeigten Ausführungsbeispiel wird deutlich, daß sowohl der Verarbeitungsalgorithmus, um die Sicherheitsinformationen zu erzeugen, als auch der Kontrollalgorithmus zum Überprüfen der Eingangsdaten einfache Algorithmen sind, die ohnehin in einem Krypto-Rechenwerk vorhanden sind, wie z. B. ein Multiplikationsalgorithmus oder ein Algorithmus zur Durchführung einer modularen Reduktion. Dasselbe trifft zu für die Verarbeitungsalgorithmen in den Blöcken 62a, 62b, die ebenfalls auf einer modularen Reduktion basieren, und auch für den Kontrollalgorithmus in den Blöcken 66a, 66b, der wiederum auf einer modularen Reduktion basiert.
- Obgleich in dem vorhergehenden in Fig. 4 gezeigten Ausführungsbeispiel als Verarbeitungsalgorithmus die Multiplikation einer Zahl mit einer Konstanten, und als - dazu korrespondierender - Kontrollalgorithmus die modulare Reduktion des Multiplikationsergebnisses mit der ursprünglichen Zahl dargestellt worden sind, ist es für Fachleute offensichtlich, daß eine Vielzahl von miteinander korrespondierenden Verarbeitungsalgorithmen und Kontrollalgorithmen existiert, die es ermöglichen, zu überprüfen, ob Eingangsdaten während der Durchführung einer Berechnung in einem kryptographischen Algorithmus z. B. durch Fehlerattacken verändert worden sind.
- Aus Fig. 4 wird ferner deutlich, daß die Verarbeitungsalgorithmen genauso wie die Kontrollalgorithmen sehr einfach gestaltet werden können, und keine zusätzlichen Parameter benötigen, als die ohnehin vorhandenen Parameter. Insbesondere wird es erfindungsgemäß bevorzugt, nicht zusätzliche Parameter, wie z. B. den öffentlichen Schlüssel e, zunächst aufwendig zu berechnen und dann für eine "Gegenrechnung" zu verwenden, sondern möglichst viele Eingangsdaten, Zwischenergebnisdaten etc. miteinander zu verknüpfen, da damit mittels eines einzigen Überprüfungsschritts mögliche Fehler im Arbeitsspeicher, in den inneren Registern oder in dem Rechenwerk selbst detektiert werden können, um im Falle eines Fehlers eine Datenausgabe zu unterdrücken, damit keine geheimen Informationen aus einer falschen Ausgabe ermittelbar sind. Bezugszeichenliste 10 Einrichtung zum Bereitstellen von Eingangsdaten
12 Einrichtung zum Durchführen einer kryptographischen Berechnung
14 Einrichtung zum Überprüfen einer Veränderung in den Eingangsdaten
16 Einrichtung zum Unterdrücken der Ausgangsdaten
20 Speichern der Eingangsdaten an einer Eingangsdaten-Speicherstelle
22 Bilden einer Prüfsumme und Speichern
24 Wiedergewinnen von der Eingangsdaten-Speicherstelle
26 Bilden einer Prüfsumme über den Eingangsdaten-Speicherstellen-Inhalt
28 Wiedergewinnen des Inhalts der Prüfsummen-Speicherstelle
30 Vergleichen der Prüfsummen
32 Speichern der Eingangsdaten an der Eingangsdaten-Speicherstelle
34 Verarbeiten der Eingangsdaten, um Sicherheitsinformationen zu erhalten
36 Speichern der Sicherheitsinformationen an der Sicherheitsinformationen-Speicherstelle
38 Wiedergewinnen des Inhalts der Sicherheitsinformationen-Speicherstelle
40 Verarbeiten durch eine Kontrollalgorithmus
42 Überprüfen hinsichtlich des vorbestimmten Resultats
44 Weitergabe der Ausgangsdaten
50 Eingangsdaten für RSA-CRT-Algorithmus
52a, 52b Verarbeiten der Eingangsdaten um Sicherheitsinformationen zu erhalten
54a, 54b Rechnung des kryptographischen Algorithmus
56a, 56b Verarbeiten der Sicherheitsinformationen mittels Kontrollalgorithmus und Überprüfen, ob vorbestimmtes Resultat erreicht ist
58a, 58b Ergebnis-Kontrollalgorithmus
60 Überprüfen mittels Ergebnis-Kontrollalgorithmus
62, 62b Reduzieren von sp' bzw. sq'
64 Zusammenfügungsalgorithmus
66a, 66b erster Teil und zweiter Teil des Prüfalgorithmus
68 Ausgabe der digitalen Signatur s
100 Eingangsdaten in das RSA-CRT-Verfahren
102 Ausgangsdaten des RSA-CRT-Verfahrens
104 Berechnen einer ersten Hilfs-Exponentiation
106 Berechnen einer zweiten Hilfs-Exponentiation
108 Zusammenfügen der ersten und der zweiten Hilfs-Exponentiation
Claims (14)
1. Verfahren zum Absichern einer Berechnung in einem
kryptographischen Algorithmus, wobei die Berechnung Eingangsdaten
erhält, um Ausgangsdaten zu erzeugen, mit folgenden
Schritten:
Bereitstellen (10) der Eingangsdaten für die Berechnung;
Durchführen (12) der Berechnung, um die Ausgangsdaten der Berechnung zu erhalten;
nach dem Durchführen der Berechnung, Überprüfen (14), ob die Eingangsdaten während der Berechnung verändert wurden, unter Verwendung einer Überprüfungsalgorithmus, der sich von der Berechnung unterscheidet; und
falls das Überprüfen (14) ergibt, daß die Eingangsdaten während der Berechnung verändert wurden, Unterdrücken (16) einer Weitergabe der Ausgangsdaten der Berechnung.
Bereitstellen (10) der Eingangsdaten für die Berechnung;
Durchführen (12) der Berechnung, um die Ausgangsdaten der Berechnung zu erhalten;
nach dem Durchführen der Berechnung, Überprüfen (14), ob die Eingangsdaten während der Berechnung verändert wurden, unter Verwendung einer Überprüfungsalgorithmus, der sich von der Berechnung unterscheidet; und
falls das Überprüfen (14) ergibt, daß die Eingangsdaten während der Berechnung verändert wurden, Unterdrücken (16) einer Weitergabe der Ausgangsdaten der Berechnung.
2. Verfahren nach Anspruch 1, bei dem im Schritt des
Bereitstellens der Eingangsdaten die Eingangsdaten an einer
Eingangsdaten-Speicherstelle gespeichert werden (20),
bei dem ferner eine Prüfsumme über zumindest einen Teil der Eingangsdaten erzeugt und an einer Prüfsummen-Speicherstelle gespeichert wird (22); und
bei dem der Überprüfungsalgorithmus folgende Teilschritte aufweist:
Wiedergewinnen (24) eines Inhalts der Eingangsdaten- Speicherstelle;
Erzeugen (26) einer Prüfsumme über zumindest einen Teil des wiedergewonnen Inhalts;
Wiedergewinnen (28) eines Inhalts der Prüfsummen- Speicherstelle; und
Vergleichen (30) der erzeugten Prüfsumme mit dem wiedergewonnenen Inhalt der Prüfsummen-Speicherstelle; und
bei dem die Weitergabe (16) der Ausgangsdaten unterdrückt wird, falls der Vergleich eine Abweichung ergibt.
bei dem ferner eine Prüfsumme über zumindest einen Teil der Eingangsdaten erzeugt und an einer Prüfsummen-Speicherstelle gespeichert wird (22); und
bei dem der Überprüfungsalgorithmus folgende Teilschritte aufweist:
Wiedergewinnen (24) eines Inhalts der Eingangsdaten- Speicherstelle;
Erzeugen (26) einer Prüfsumme über zumindest einen Teil des wiedergewonnen Inhalts;
Wiedergewinnen (28) eines Inhalts der Prüfsummen- Speicherstelle; und
Vergleichen (30) der erzeugten Prüfsumme mit dem wiedergewonnenen Inhalt der Prüfsummen-Speicherstelle; und
bei dem die Weitergabe (16) der Ausgangsdaten unterdrückt wird, falls der Vergleich eine Abweichung ergibt.
3. Verfahren nach Anspruch 1,
bei dem im Schritt des Bereitstellens die Eingangsdaten an einer Eingangsdaten-Speicherstelle gespeichert werden (32);
bei dem zumindest ein Teil der Eingangsdaten gemäß einem Verarbeitungsalgorithmus verarbeitet werden (34), um Sicherheitsinformationen zu erhalten, wobei die Sicherheitsinformationen an einer Sicherheitsinformationen-Speicherstelle gespeichert werden (36);
bei dem der Überprüfungsalgorithmus folgende Schritte aufweist:
Wiedergewinnen (38) zumindest eines Teils des Inhalts der Sicherheitsinformationen-Speicherstelle;
Verarbeiten (40) des Inhalts der Sicherheitsinformationen-Speicherstelle mittels eines Kontrollalgorithmus, wobei der Kontrollalgorithmus so ausgestaltet ist, daß er bei unverändertem Inhalt der Sicherheitsinformationen-Speicherstelle ein vorbestimmtes Resultat liefert (42); und
bei dem die Weitergabe der Ausgangsdaten unterdrückt wird (16), falls der Kontrollalgorithmus ein von dem vorbestimmten Resultat abweichendes Resultat liefert.
bei dem im Schritt des Bereitstellens die Eingangsdaten an einer Eingangsdaten-Speicherstelle gespeichert werden (32);
bei dem zumindest ein Teil der Eingangsdaten gemäß einem Verarbeitungsalgorithmus verarbeitet werden (34), um Sicherheitsinformationen zu erhalten, wobei die Sicherheitsinformationen an einer Sicherheitsinformationen-Speicherstelle gespeichert werden (36);
bei dem der Überprüfungsalgorithmus folgende Schritte aufweist:
Wiedergewinnen (38) zumindest eines Teils des Inhalts der Sicherheitsinformationen-Speicherstelle;
Verarbeiten (40) des Inhalts der Sicherheitsinformationen-Speicherstelle mittels eines Kontrollalgorithmus, wobei der Kontrollalgorithmus so ausgestaltet ist, daß er bei unverändertem Inhalt der Sicherheitsinformationen-Speicherstelle ein vorbestimmtes Resultat liefert (42); und
bei dem die Weitergabe der Ausgangsdaten unterdrückt wird (16), falls der Kontrollalgorithmus ein von dem vorbestimmten Resultat abweichendes Resultat liefert.
4. Verfahren nach einem der Ansprüche 1 bis 3,
bei dem der kryptographische Algorithmus eine weitere Berechnung umfaßt, und
bei dem die Sicherheitsinformationen für die weitere Berechnung als Eingangsdaten zur Verfügung gestellt werden, falls der Überprüfungsalgorithmus das vorbestimmte Resultat liefert.
bei dem der kryptographische Algorithmus eine weitere Berechnung umfaßt, und
bei dem die Sicherheitsinformationen für die weitere Berechnung als Eingangsdaten zur Verfügung gestellt werden, falls der Überprüfungsalgorithmus das vorbestimmte Resultat liefert.
5. Verfahren nach Anspruch 3 oder 4,
bei dem der Überprüfungsalgorithmus ferner einen Schritt des Zugreifens auf die Eingangsdaten-Speicherstelle aufweist, um zumindest einen Teil des Inhalts der Eingangsdaten- Speicherstelle wiederzugewinnen, und
bei dem der Kontrollalgorithmus angeordnet ist, um ferner zumindest den Teil des Inhalts der Eingangsdaten-Speicherstelle zu verwenden.
bei dem der Überprüfungsalgorithmus ferner einen Schritt des Zugreifens auf die Eingangsdaten-Speicherstelle aufweist, um zumindest einen Teil des Inhalts der Eingangsdaten- Speicherstelle wiederzugewinnen, und
bei dem der Kontrollalgorithmus angeordnet ist, um ferner zumindest den Teil des Inhalts der Eingangsdaten-Speicherstelle zu verwenden.
6. Verfahren nach einem der Ansprüche 3 bis 5,
bei dem der Verarbeitungsalgorithmus, um die Sicherheitsinformationen zu erzeugen, ein Multiplizieren einer Eingangsgröße, die einen Teil der Eingangsdaten darstellt, mit einer ganzen Zahl umfaßt;
bei dem der Kontrollalgorithmus ein modulares Reduzieren des Inhalts der Sicherheitsinformationen-Speicherstelle mit der Eingangsgröße als Modul umfaßt, und
bei dem das vorbestimmte Resultat "0" ist.
bei dem der Verarbeitungsalgorithmus, um die Sicherheitsinformationen zu erzeugen, ein Multiplizieren einer Eingangsgröße, die einen Teil der Eingangsdaten darstellt, mit einer ganzen Zahl umfaßt;
bei dem der Kontrollalgorithmus ein modulares Reduzieren des Inhalts der Sicherheitsinformationen-Speicherstelle mit der Eingangsgröße als Modul umfaßt, und
bei dem das vorbestimmte Resultat "0" ist.
7. Verfahren nach einem der Ansprüche 3 bis 6,
bei dem der Verarbeitungsalgorithmus ein Summieren einer ersten Eingangsgröße und eines Produkts aus einer Zufallszahl und einer zweiten Eingangsgröße weniger 1 umfaßt;
bei dem der Kontrollalgorithmus ein modulares Reduzieren des Inhalts der Sicherheitsinformationen-Speicherstelle mit der zweiten Eingangsgröße weniger 1 als Modul umfaßt;
bei dem das vorbestimmte Resultat die erste Eingangsgröße ist.
bei dem der Verarbeitungsalgorithmus ein Summieren einer ersten Eingangsgröße und eines Produkts aus einer Zufallszahl und einer zweiten Eingangsgröße weniger 1 umfaßt;
bei dem der Kontrollalgorithmus ein modulares Reduzieren des Inhalts der Sicherheitsinformationen-Speicherstelle mit der zweiten Eingangsgröße weniger 1 als Modul umfaßt;
bei dem das vorbestimmte Resultat die erste Eingangsgröße ist.
8. Verfahren nach einem der vorhergehenden Ansprüche, bei dem
der kryptographische Algorithmus eine modulare Exponentiation
für den RSA-Algorithmus mit chinesischem Restsatz (CRT) ist.
9. Verfahren nach Anspruch 8, bei dem als Eingangsdaten m, p,
q, dp, dq, qinv, t und rand bereitgestellt werden, wobei m
eine zu verarbeitende Klartext-Nachricht ist, wobei p und q
eine erste und eine zweite Primzahl darstellen, deren Produkt
gleich einem Modul n ist, wobei dp ein erster Hilfs-Exponent
ist, wobei dq ein zweiter Hilfs-Exponent ist, wobei qinv
gleich q-1 mod p ist, wobei t eine Primzahl ist, und wobei
rand eine Zufallszahl ist.
10. Verfahren nach Anspruch 9, bei dem der
Verarbeitungsalgorithmus folgendermaßen ausgestaltet ist:
p' = p.t;
dp' = dp + rand.(p-1);
q' = q.t; und/oder
dq' = dq + rand.(q-1), und
bei dem der Kontrollalgorithmus folgendermaßen ausgestaltet ist:
p' mod p = 0;
q' mod q = 0;
dp' mod (p-1) = dp: und/oder
dq' mod (q-1) = dq; und
bei dem die kryptographische Berechnung folgendermaßen lautet:
sp' = mdp' mod p'; oder
sq' = mdq' mod q',
wobei p', q', dp', dq' Sicherheitsinformationen sind, wobei dp, dq und 0 vorbestimmte Resultate sind, und
wobei sp', sq' Ausgangsdaten der Berechnung des kryptographischen Algorithmus sind.
p' = p.t;
dp' = dp + rand.(p-1);
q' = q.t; und/oder
dq' = dq + rand.(q-1), und
bei dem der Kontrollalgorithmus folgendermaßen ausgestaltet ist:
p' mod p = 0;
q' mod q = 0;
dp' mod (p-1) = dp: und/oder
dq' mod (q-1) = dq; und
bei dem die kryptographische Berechnung folgendermaßen lautet:
sp' = mdp' mod p'; oder
sq' = mdq' mod q',
wobei p', q', dp', dq' Sicherheitsinformationen sind, wobei dp, dq und 0 vorbestimmte Resultate sind, und
wobei sp', sq' Ausgangsdaten der Berechnung des kryptographischen Algorithmus sind.
11. Verfahren nach einem der vorhergehenden Schritte, das
ferner folgenden Schritt aufweist:
Durchführen eines Ergebnis-Kontrollalgorithmus mit einem Ergebnis der Berechnung des kryptographischen Algorithmus und einem Inhalt der Eingangsdaten-Speicherstelle, wobei sich der Ergebnis-Kontrollalgorithmus von der Berechnung unterscheidet und ein vorbestimmtes Resultat liefert, wenn die Eingangsdaten-Speicherstelle einen unveränderten Inhalt hat, und wenn die kryptographische Berechnung korrekt ausgeführt worden ist; und
Unterdrücken der Weitergabe, wenn der Ergebnis- Kontrollalgorithmus ein von dem vorbestimmten Resultat abweichendes Resultat liefert.
Durchführen eines Ergebnis-Kontrollalgorithmus mit einem Ergebnis der Berechnung des kryptographischen Algorithmus und einem Inhalt der Eingangsdaten-Speicherstelle, wobei sich der Ergebnis-Kontrollalgorithmus von der Berechnung unterscheidet und ein vorbestimmtes Resultat liefert, wenn die Eingangsdaten-Speicherstelle einen unveränderten Inhalt hat, und wenn die kryptographische Berechnung korrekt ausgeführt worden ist; und
Unterdrücken der Weitergabe, wenn der Ergebnis- Kontrollalgorithmus ein von dem vorbestimmten Resultat abweichendes Resultat liefert.
12. Verfahren nach Anspruch 11, bei dem die Berechnung
folgendermaßen lautet:
sp' = mdp' mod p'; und/oder
sq' = mdq' mod q';
bei dem der Ergebnis-Kontrollalgorithmus folgendermaßen lautet:
spt = sp' mod t
sqt = sq' mod t
dpt = dp' mod(t-1);
dqt = dq' mod(t-1);
sptdqt = sqtdpt mod t, und
wobei das vorbestimmte Resultat eine Gleichheit ist.
sp' = mdp' mod p'; und/oder
sq' = mdq' mod q';
bei dem der Ergebnis-Kontrollalgorithmus folgendermaßen lautet:
spt = sp' mod t
sqt = sq' mod t
dpt = dp' mod(t-1);
dqt = dq' mod(t-1);
sptdqt = sqtdpt mod t, und
wobei das vorbestimmte Resultat eine Gleichheit ist.
13. Verfahren nach Anspruch 11, bei dem der kryptographische
Algorithmus eine modulare Exponentiation für den
RSA-Algorithmus mit chinesischem Restsatz (CRT) aufweist,
bei dem die Berechnung folgendermaßen gegeben ist:
s = sq + {[(sp-sq).qinv]mod p}.q; und
bei dem der Ergebnis-Kontrollalgorithmus folgendermaßen lautet:
s mod p = sp; und/oder
s mod q = sq,
wobei das vorbestimmte Resultat eine Gleichheitsbedingung ist.
s = sq + {[(sp-sq).qinv]mod p}.q; und
bei dem der Ergebnis-Kontrollalgorithmus folgendermaßen lautet:
s mod p = sp; und/oder
s mod q = sq,
wobei das vorbestimmte Resultat eine Gleichheitsbedingung ist.
14. Vorrichtung zum Absichern einer Berechnung in einem
kryptographischen Algorithmus, wobei die Berechnung Eingangsdaten
erhält, um Ausgangsdaten zu erzeugen, mit folgenden
Merkmalen:
einer Einrichtung zum Bereitstellen (10) der Eingangsdaten für die Berechnung;
einer Einrichtung zum Durchführen (12) der Berechnung, um die Ausgangsdaten der Berechnung zu erhalten;
einer Einrichtung zum Überprüfen (14), ob die Eingangsdaten während der Berechnung verändert wurden, unter Verwendung einer Überprüfungsalgorithmus, der sich von der Berechnung unterscheidet, wobei die Einrichtung zum Überprüfen ausgebildet ist, um die Überprüfung durchzuführen, nachdem die Berechnung durchgeführt worden ist; und
einer Einrichtung zum Unterdrücken (16) einer Weitergabe der Ausgangsdaten, falls die Einrichtung (14) zum Überprüfen ermittelt, daß die Eingangsdaten während der Berechnung verändert wurden.
einer Einrichtung zum Bereitstellen (10) der Eingangsdaten für die Berechnung;
einer Einrichtung zum Durchführen (12) der Berechnung, um die Ausgangsdaten der Berechnung zu erhalten;
einer Einrichtung zum Überprüfen (14), ob die Eingangsdaten während der Berechnung verändert wurden, unter Verwendung einer Überprüfungsalgorithmus, der sich von der Berechnung unterscheidet, wobei die Einrichtung zum Überprüfen ausgebildet ist, um die Überprüfung durchzuführen, nachdem die Berechnung durchgeführt worden ist; und
einer Einrichtung zum Unterdrücken (16) einer Weitergabe der Ausgangsdaten, falls die Einrichtung (14) zum Überprüfen ermittelt, daß die Eingangsdaten während der Berechnung verändert wurden.
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10162496A DE10162496C5 (de) | 2001-10-17 | 2001-12-19 | Verfahren und Vorrichtung zum Absichern einer Berechnung in einem kryptographischen Algorithmus |
AU2002340566A AU2002340566A1 (en) | 2001-10-17 | 2002-10-15 | Method and device for guaranteeing a calculation in a cryptographic algorithm |
PCT/EP2002/011523 WO2003034649A2 (de) | 2001-10-17 | 2002-10-15 | Verfahren und vorrichtung zum absichern einer berechnung in einem kryptographischen algorithmus |
EP02774716A EP1442391B1 (de) | 2001-10-17 | 2002-10-15 | Verfahren und vorrichtung zum absichern einer berechnung in einem kryptographischen algorithmus |
DE50204119T DE50204119D1 (de) | 2001-10-17 | 2002-10-15 | Verfahren und vorrichtung zum absichern einer berechnung in einem kryptographischen algorithmus |
TW091123941A TW580655B (en) | 2001-10-17 | 2002-10-17 | Method and apparatus for protecting a calculation in a cryptographic algorithm |
US10/827,913 US7454625B2 (en) | 2001-10-17 | 2004-04-19 | Method and apparatus for protecting a calculation in a cryptographic algorithm |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10151139 | 2001-10-17 | ||
DE10151139.6 | 2001-10-17 | ||
DE10162496A DE10162496C5 (de) | 2001-10-17 | 2001-12-19 | Verfahren und Vorrichtung zum Absichern einer Berechnung in einem kryptographischen Algorithmus |
Publications (3)
Publication Number | Publication Date |
---|---|
DE10162496A1 true DE10162496A1 (de) | 2003-05-08 |
DE10162496B4 DE10162496B4 (de) | 2004-02-05 |
DE10162496C5 DE10162496C5 (de) | 2009-02-26 |
Family
ID=7702733
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10162584A Ceased DE10162584A1 (de) | 2001-10-17 | 2001-12-19 | Verfahren und Vorrichtung zum Absichern einer Exponentiations-Berechnung mittels dem chinesischen Restsatz (CRT) |
DE10162496A Expired - Fee Related DE10162496C5 (de) | 2001-10-17 | 2001-12-19 | Verfahren und Vorrichtung zum Absichern einer Berechnung in einem kryptographischen Algorithmus |
DE50203303T Expired - Lifetime DE50203303D1 (de) | 2001-10-17 | 2002-10-15 | Verfahren und vorrichtung zum absichern einer exponentiations-berechnung mittels dem chinesischen restsatz (crt) |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10162584A Ceased DE10162584A1 (de) | 2001-10-17 | 2001-12-19 | Verfahren und Vorrichtung zum Absichern einer Exponentiations-Berechnung mittels dem chinesischen Restsatz (CRT) |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE50203303T Expired - Lifetime DE50203303D1 (de) | 2001-10-17 | 2002-10-15 | Verfahren und vorrichtung zum absichern einer exponentiations-berechnung mittels dem chinesischen restsatz (crt) |
Country Status (1)
Country | Link |
---|---|
DE (3) | DE10162584A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1577734A2 (de) * | 2004-02-19 | 2005-09-21 | Giesecke & Devrient GmbH | Verfahren zum sicheren Betrieb eines tragbaren Datenträgers |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102005038228A1 (de) * | 2005-08-12 | 2007-02-15 | Giesecke & Devrient Gmbh | Geschütztes kryptographisches Verfahren |
DE102017006169B4 (de) * | 2017-06-29 | 2019-01-24 | Giesecke+Devrient Mobile Security Gmbh | Mikroprozessor-Einrichtung mit Schlüssel-Prüfungs-Routine |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4234165C1 (de) * | 1992-10-09 | 1994-03-03 | Detecon Gmbh | Verfahren zur Ermöglichung der nachträglichen Überprüfung bereits übermittelter Daten |
EP0743774A2 (de) * | 1995-05-18 | 1996-11-20 | Certicom Corp. | Robustes Protokoll mit öffentlichem Schlüssel |
DE19725167A1 (de) * | 1997-06-13 | 1998-12-17 | Utimaco Safeware Ag | Verfahren zur sicheren Anzeige bei der Übertragung von Daten oder Dateien zwischen Teilnehmern |
US6092229A (en) * | 1996-10-09 | 2000-07-18 | Lsi Logic Corporation | Single chip systems using general purpose processors |
DE19961838A1 (de) * | 1999-12-21 | 2001-07-05 | Scm Microsystems Gmbh | Verfahren und Vorrichtung zur Überprüfung einer Datei |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2704341B1 (fr) * | 1993-04-22 | 1995-06-02 | Bull Cp8 | Dispositif de protection des clés d'une carte à puce. |
US6282290B1 (en) * | 1997-03-28 | 2001-08-28 | Mykotronx, Inc. | High speed modular exponentiator |
US5991415A (en) * | 1997-05-12 | 1999-11-23 | Yeda Research And Development Co. Ltd. At The Weizmann Institute Of Science | Method and apparatus for protecting public key schemes from timing and fault attacks |
DE10024325B4 (de) * | 2000-05-17 | 2005-12-15 | Giesecke & Devrient Gmbh | Kryptographisches Verfahren und kryptographische Vorrichtung |
-
2001
- 2001-12-19 DE DE10162584A patent/DE10162584A1/de not_active Ceased
- 2001-12-19 DE DE10162496A patent/DE10162496C5/de not_active Expired - Fee Related
-
2002
- 2002-10-15 DE DE50203303T patent/DE50203303D1/de not_active Expired - Lifetime
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4234165C1 (de) * | 1992-10-09 | 1994-03-03 | Detecon Gmbh | Verfahren zur Ermöglichung der nachträglichen Überprüfung bereits übermittelter Daten |
EP0743774A2 (de) * | 1995-05-18 | 1996-11-20 | Certicom Corp. | Robustes Protokoll mit öffentlichem Schlüssel |
US6092229A (en) * | 1996-10-09 | 2000-07-18 | Lsi Logic Corporation | Single chip systems using general purpose processors |
DE19725167A1 (de) * | 1997-06-13 | 1998-12-17 | Utimaco Safeware Ag | Verfahren zur sicheren Anzeige bei der Übertragung von Daten oder Dateien zwischen Teilnehmern |
DE19961838A1 (de) * | 1999-12-21 | 2001-07-05 | Scm Microsystems Gmbh | Verfahren und Vorrichtung zur Überprüfung einer Datei |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1577734A2 (de) * | 2004-02-19 | 2005-09-21 | Giesecke & Devrient GmbH | Verfahren zum sicheren Betrieb eines tragbaren Datenträgers |
EP1577734A3 (de) * | 2004-02-19 | 2009-10-07 | Giesecke & Devrient GmbH | Verfahren zum sicheren Betrieb eines tragbaren Datenträgers |
Also Published As
Publication number | Publication date |
---|---|
DE10162584A1 (de) | 2003-05-08 |
DE10162496C5 (de) | 2009-02-26 |
DE10162496B4 (de) | 2004-02-05 |
DE50203303D1 (de) | 2005-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2843583C2 (de) | Verfahren für den zugriffsicheren Nachrichtenverkehr über einen ungesicherten Nachrichtenübertragungskanal | |
DE69828787T2 (de) | Verbessertes verfahren und vorrichtung zum schutz eines verschlüsselungsverfahrens mit öffentlichem schlüssel gegen angriffe mit zeitmessung und fehlereinspeisung | |
DE60001630T2 (de) | Sichere gegenseitige Netzwerkauthenifizierung und Schlüselaustauschprotokoll | |
EP2901611B1 (de) | Seitenkanalgeschützte maskierung | |
EP2197149A1 (de) | Verfahren und Vorrichtung zum Verarbeiten von Daten | |
DE10143728B4 (de) | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Exponentiation | |
DE102005037598A1 (de) | Verfahren und System zur Sicherung von Daten | |
DE102008051447B9 (de) | Verfahren und Vorrichtung zum Schützen einer RSA-Berechnung an einer Ausgabe mit Hilfe des chinesischen Restsatzes | |
DE102017002153A1 (de) | Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung | |
DE602004006628T2 (de) | Verfahren zur gesicherten ausführung eines rsa kryptographischen algorithmus, sowie diesbezüglicher baustein. | |
DE10024325B4 (de) | Kryptographisches Verfahren und kryptographische Vorrichtung | |
DE102005024609A1 (de) | Bestimmung einer modularen Inversen | |
EP1442391B1 (de) | Verfahren und vorrichtung zum absichern einer berechnung in einem kryptographischen algorithmus | |
DE10304451B3 (de) | Modulare Exponentiation mit randomisiertem Exponenten | |
EP1540880B1 (de) | Geschützte kryptographische berechnung | |
EP1987421B1 (de) | Verfahren, vorrichtung und system zum verifizieren von auf einer elliptischen kurve ermittelten punkten | |
EP1454260B1 (de) | Verfahren und vorrichtung zum absichern einer exponentiations-berechnung mittels dem chinesischen restsatz (crt) | |
DE102004061312B4 (de) | Vorrichtung und Verfahren zum Detektieren eines potentiellen Angriffs auf eine kryptographische Berechnung | |
DE60218421T2 (de) | Verfahren und Vorrichtung zur Erzeugung von Digitalsignaturen | |
DE10162496B4 (de) | Verfahren und Vorrichtung zum Absichern einer Berechnung in einem kryptographischen Algorithmus | |
DE10328860A1 (de) | Vorrichtung und Verfahren zum Verschlüsseln von Daten | |
DE10042234C2 (de) | Verfahren und Vorrichtung zum Durchführen einer modularen Exponentiation in einem kryptographischen Prozessor | |
DE60221863T2 (de) | Verfahren zur implementierung eines kryptographischen algorithmus zum finden des öffentlichen exponenten in einer elektronischen komponente | |
DE102004001659B4 (de) | Vorrichtung und Verfahren zum Konvertieren einer ersten Nachricht in eine zweite Nachricht | |
EP1760929B1 (de) | Geschütztes kryptographisches Verfahren |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8363 | Opposition against the patent | ||
8366 | Restricted maintained after opposition proceedings | ||
8392 | Publication of changed patent specification | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |