-
Die Erfindung betrifft ein Verfahren zum Durchführen einer mehrfach durchgeführten kryptographischen Berechnung unter Verwendung von Geheimdaten, das gegen Ausspähen der Geheimdaten geschützt ist.
-
Kryptographische Berechnungen werden z. B. von allgemeinen Prozessoren (CPUs) durchgeführt, alternativ häufig von Krypto-Coprozessoren, die den allgemeinen Prozessoren zugeordnete spezielle Prozessoren sind. Insbesondere Chipkarten für Zahlungsverkehr- oder Mobilfunkanwendungen haben Prozessoren mit Krypto-Coprozessoren. Geheimdaten, z. B. Schlüssel, für eine auf dem Prozessor (allgemeiner Prozessor oder Krypto-Coprozessor) auszuführende Berechnung werden in der Regel in ein oder mehreren dem Prozessor zugeordneten Registern, z. B. Schlüsselregistern, bereitgehalten.
-
Manche Prozessoren, z. B. solche mit Multitasking- oder Multithreadingfähigkeit, sind in der Lage, bei ihrem Betrieb mehrere Kontexte zu betreiben, d. h. mehrere voneinander isolierte Ausführungsumgebungen für durch den Prozessor auszuführende Programmcodes. Nur ein einziger Kontext ist auf einmal aktiv, die anderen Kontexte sind in Wartestellung. Der Programmcode im gerade aktiven Kontext wird vom Prozessor abgearbeitet. Die Programmcodes in den nicht aktiven Kontexten sind währenddessen zurückgestellt und werden erst ausgeführt, wenn der zugehörige Kontext aktiviert wird. Soll von der Abarbeitung eines Programmcodes in einem ersten, gerade aktiven Kontext zur Abarbeitung eines anderen Programmcodes in einem zweiten, gerade nicht aktiven Kontext gewechselt werden, schaltet der Prozessor vom ersten Kontext zum zweiten Kontext. Typischerweise laufen z. B. unterschiedliche Applikationen, Threads, oder Tasks in unterschiedlichen Kontexten. Viele Prozessoren, z. B. der ARM7-Prozessor, sehen zudem einen User-Modus und System-Modus als voneinander getrennte Kontexte vor.
-
Im allgemeinsten Fall werden durch eine kryptographische Berechnung Eingangsdaten unter Verwendung von Geheimdaten, z. B. eines geheimen Schlüssels, zu Ausgangsdaten verarbeitet, z. B. Klartextdaten mit einem Schlüssel zu Chiffredaten verschlüsselt oder umgekehrt Chiffredaten mit einem Schlüssel zu Klartextdaten entschlüsselt.
-
Viele kryptographische Berechnungen lassen sich in eine Mehrzahl von Blöcken unterteilen, die in ihrer Gesamtheit die Berechnung bilden. Als Blöcke können insbesondere Runden eines zyklischen Verfahrens vorgesehen sein. So umfasst beispielsweise das kryptographische Berechnungsverfahren DES (Data Encryption Standard) 16 Runden, wobei in jeder Runde ein Teil der Eingangsdaten mit einem Teil des Schlüssels verarbeitet wird. Es gibt aber auch nicht-zyklische kryptographische Verfahren, wobei jeder Block eine Programmcode-Sequenz darstellt.
-
In kryptographischen Berechnungen werden Geheimdaten, wie beispielsweise kryptographische Schlüssel, verarbeitet, die geheim bleiben sollen. Mittlerweile existieren ausgeklügelte Spähangriffe, mit denen sich die Geheimdaten aus einer ungeschützten Berechnung ausspähen lassen. Bei Seitenkanalangriffen wird z. B. der Stromverbrauch oder die elektromagnetische Abstrahlung des Prozessors, der die Berechnung durchführt, gemessen und daraus auf die Geheimdaten rückgeschlossen. Maskierung der Geheimdaten bietet hiergegen einen gewissen Schutz. Bei DFA-Angriffen (DFA = Differential Fault Analysis) werden gezielt Fehler in den Prozessor injiziert und aus der resultierenden Störung des Ergebnisses der Berechnung auf die Geheimdaten geschlossen. Bei kombinierten Spähangriffen wird über Seitenkanäle wie z. B. Stromverbrauch oder elektromagnetische Abstrahlung ein geeigneter Zeitpunkt für eine gezielte Störung, z. B. DFA, ermittelt und an diesem Zeitpunkt die Störung durchgeführt. Beispielsweise können signifikante Merkmale im Stromverbrauch wie z. B. Peaks auf geeignete Zeitpunkte zum Einbringen einer Störung hinweisen.
-
Als Gegenmaßnahme gegen Spähangriffe werden sicherheitskritische Berechnungen von Algorithmen wie z. B. DES (Data Encryption Standard) oft doppelt oder mehrfach ausgeführt. Die zwei oder mehreren Rechenergebnisse der mehreren Durchführungen werden verglichen. Falls gemäß dem Vergleich der Verdacht einer Störung bei einer der Durchführungen auftaucht, wird das Rechenergebnis verworfen. Ggf. werden weitere Maßnahmen ergriffen, wie beispielsweise Sperren des Prozessors oder Co-Prozessors bzw. der Chipkarte, Löschen von Speicherbereichen oder dergleichen.
-
So beschreibt
EP 1 569 118 B1 ein Verfahren zum sicheren Berechnen eines Ergebniswerts E (z. B. einer Speicheradresse) ausgehend von einem Parameter P (z. B. einer Basis-Speicheradresse), bei dem der Ergebniswert zweimal berechnet wird, die beiden Ergebniswerte verglichen werden und der Ergebniswert nur bei zufriedenstellendem Vergleichsergebnis verwendet wird, und sonst der berechnete Ergebniswert als fehlerhaft verworfen wird. Bei den beiden Berechnungen wird einmal der Parameter P und das andere Mal der Komplementärwert ~P des Parameters verwendet.
-
Die mehrfache Durchführung ein- und derselben Berechnung ermöglicht zwar eine Überprüfung des Rechenergebnisses, erhöht aber andererseits die Erfolgschancen eines Angreifers bei Manipulationen wie z. B. DFA-Angriffen, da er mehrmals dieselbe Rechnung gezielt angreifen kann.
-
US-2009/0285398 A1 beschreibt ein Verfahren zur Verifizierung der Integrität eines Schlüssels eines symmetrischen kryptographischen Algorithmus wie beispielsweise DES (Data Encryption Standard). Hierbei wird der Algorithmus zweimal ausgeführt, einmal mit einem kryptographischen Schlüssel, und einmal mit dem 1er-Komplement des Schlüssels. Hierdurch sind die beiden Durchführungen nicht mehr identisch, reagieren somit unterschiedlich auf Manipulationen. Folglich werden auch Manipulationen erkannt, die beispielsweise bei jeder Ausführung des Algorithmus dasselbe Schlüsselbit auf dieselbe Weise manipulieren.
-
Für einen Datenträger mit einem Betriebsprogramm mit mehreren Operationen offenbart
DE 198 22 218 A1 Maßnahmen zum Schutz des Betriebsprogramms gegen Seitenkanal-Angriffe. Sofern sicherheitsrelevante Operationen vorkommen, werden manche Operationen, bei denen das Gesamtergebnis nicht von der Reihenfolge der Berechnung abhängt, in geänderter Reihenfolge durchgeführt, beispielsweise in zufallsgesteuert festgelegter Reihenfolge. Durch die Vertauschung der Operationen wird vor einem Angreifer verheimlicht, zu welchem Zeitpunkt welche Operation durchgeführt wird. Daher kann beispielsweise ein Stromprofil nicht mehr eindeutig einer Operation zugeordnet werden, so dass die Auswahl einer bestimmten Operation für einen gezielten Angriff anhand des Stromprofils nicht möglich ist.
-
Der Erfindung liegt die Aufgabe zu Grunde, ein Verfahren zu schaffen, bei dem eine kryptographische Berechnung, die mehrfach durchgeführt wird, gegen Ausspähen von Geheimdaten geschützt ist.
-
Die Aufgabe wird gelöst durch ein Verfahren nach Anspruch 1. Vorteilhafte Ausgestaltungen der Erfindung sind in den abhängigen Ansprüchen angegeben.
-
In Anspruch 1 ist ein Verfahren zum gegen Ausspähen von Geheimdaten geschützten Durchführen einer kryptographischen Berechnung angegeben. Die Berechnung umfasst eine Mehrzahl von Blöcken. Bei der Berechnung werden Geheimdaten verwendet, um ein Rechenergebnis zu erzeugen; in der Regel werden aus Eingangsdaten und den Geheimdaten Ausgangsdaten, die das Rechenergebnis darstellen, erzeugt. Das Verfahren wird in einem Prozessor durchgeführt. Um das Rechenergebnis der Berechnung zu erzielen, wird eine Mehrfachberechnung durchgeführt, d. h. ein die Berechnung bildender Algorithmus wird mehrmals, zumindest zweimal, (oder dreimal, viermal, ...) durchgeführt. Dies geschieht, damit nachfolgend eine Verifizierung des Rechenergebnisses durch Vergleich der einzelnen Rechenergebnisse der mehreren Durchführungen erfolgen kann. Wahlweise wird, wie für sich betrachtet aus dem Stand der Technik bekannt, eine solche Verifizierung des Rechenergebnisses durch Vergleich der Rechenergebnisse der mehreren Durchführungen durchgeführt und je nach Ergebnis das Rechenergebnis verwendet oder verworfen.
-
Das Verfahren zeichnet sich dadurch aus, dass innerhalb der Mehrfachberechnung Blöcke der mehreren Durchführungen – zumindest zwei Durchführungen – der Berechnung in verschachtelter Reihenfolge durchgeführt werden. Mit anderen Worten werden nicht zuerst alle Blöcke der einen Durchführung abgearbeitet, und erst anschließend die Blöcke der anderen oder nächsten Durchführung abgearbeitet, sondern es wird in wechselnder Abfolge mal ein Block der einen Durchführung, mal ein Block einer anderen Durchführung ausgeführt. Beispielsweise werden Blöcke (oder zumindest ein Block) einer zweiten Durchführung zwischen die Blöcke einer ersten Durchführung eingestreut.
-
Durch das Verschachteln der Blöcke unterschiedlicher Durchführungen hat ein potentieller Angreifer keine zwei identischen Berechnungen (Durchführungen) mehr zur Verfügung, in denen er gezielt nach Angriffszeitpunkten suchen könnte. Von außen gesehen erscheint die Mehrfachberechnung, umfassend die mehreren Durchführungen, wie eine wirre Abfolge von Code-Blöcken. Hierdurch ist das Auffinden von guten Zeitpunkten für eine Störung der Berechnung stark erschwert oder verhindert.
-
Daher ist gemäß Anspruch 1 eine gegen Ausspähen geschützte Mehrfachberechnung einer kryptographischen Berechnung geschaffen.
-
Wahlweise bleibt die Abfolge der Blöcke innerhalb jeder einzelnen Durchführung unverändert. Hierdurch ist das Verfahren auch dann anwendbar, wenn aufeinanderfolgende Blöcke voneinander abhängig sind, so dass also ein nachfolgender Block einer einzelnen Durchführung als Eingangsdaten Ausgangsdaten zumindest eines vorangehenden Blocks benötigt. Unterschiedliche Durchführungen sind dagegen voneinander unabhängig und können daher verschachtelt durchgeführt werden, also mit Einstreuen von Blöcken einer zweiten (dritten, vierten, ...) Durchführung zwischen Blöcke einer ersten Durchführung der Berechnung.
-
Wahlweise werden zumindest eine erste Durchführung und eine zweite Durchführung der Berechnung durchgeführt. Dabei werden die Blöcke der mehreren, zumindest zwei, Durchführungen der Berechnung dahingehend in verschachtelter Reihenfolge durchgeführt, dass es zumindest einen Block der ersten Durchführung gibt, der in der Abfolge vor einem Block der zweiten Durchführung durchgeführt wird, und zumindest einen weiteren Block der ersten Durchführung gibt, der nach einem Block der zweiten Durchführung durchgeführt wird.
-
Wahlweise wird als Berechnung eine zyklische kryptographische Berechnung mit mehreren Runden durchgeführt, beispielsweise DES (Data Encryption Standard). In diesem Fall sind als Blöcke Runden vorgesehen, beim DES z. B. 16 Runden.
-
Wahlweise ist als Berechnung eine nicht-zyklische kryptographische Berechnung vorgesehen, wobei die Berechnung also aus einer Abfolge von Blöcken besteht, die sich nicht zyklisch wiederholen.
-
Wahlweise wird für jede Mehrfachberechnung eine neue verschachtelte Reihenfolge festgesetzt. Andernfalls könnte ein Angreifer aus der immer gleichen Verschachtelung Muster erkennen und für Angriffe nutzen. Wahlweise werden die Blöcke in zufallsgesteuerter Weise verschachtelt.
-
Wahlweise wird jede Durchführung von den mehreren Durchführungen der Berechnung, die zu einer einzelnen Mehrfachberechnung gehören, in einem eigenen Kontext des Prozessors durchgeführt (ausgeführt). Dabei werden die Blöcke der mehreren Durchführungen der Berechnung dadurch in verschachtelter Reihenfolge durchgeführt, dass der Prozessor (ggf. optional der allgemeine Prozessor oder der Krypto-Coprozessor) entsprechend der verschachtelten Reihenfolge zwischen den Kontexten schaltet. Soll also ein Block einer ersten Durchführung in einem ersten Kontext abgearbeitet werden, ist der erste Kontext aktiv. Soll nachfolgend ein Block zu einer zweiten Durchführung in einem zweiten, im Moment inaktiven Kontext abgearbeitet werden, schaltet der Prozessor vom ersten Kontext zum zweiten Kontext, so dass nun nicht mehr der erste sondern der zweite Kontext aktiv ist, und der Block der zweiten Durchführung wird auf dem Prozessor abgearbeitet.
-
Wahlweise ist als ein erster Kontext ein User-Modus und als ein zweiter Kontext ein System-Modus des Prozessors vorgesehen, oder umgekehrt. Wahlweise ist der Prozessor ein Prozessor, bei welchem ein solcher User-Modus und System-Modus als voneinander getrennte Kontexte vorgesehen sind, wie z. B. der ARM7-Prozessor.
-
Wahlweise werden mehr als zwei (drei, vier, fünf, sechs, ...) Durchführungen der Berechnung in mehr als zwei (drei, vier, fünf, sechs, ...) Kontexten durchgeführt und wird das Verschachteln durch (insbesondere zufallsgesteuertes) Schalten zwischen diesen mehr als zwei Kontexten bewirkt.
-
Wahlweise schaltet der Prozessor durch eine zufallsgesteuerte Zeitintervalls-Unterbrechungsroutine (Timer-Interrupt), die jedem Kontext jeweils ein Zeitintervall mit einer zufallsgesteuerten Länge an Rechenzeit auf dem Prozessor zuweist, und dann zu einem anderen Kontext schaltet, zwischen den Kontexten.
-
Wahlweise werden die Geheimdaten für in unterschiedlichen Kontexten durchzuführende Berechnungen in unterschiedlichen Registern des Prozessors bereitgehalten. Hierdurch greift der Prozessor beim Abarbeiten von Programmcode für Durchführungen in unterschiedlichen Kontexten jeweils auf unterschiedliche Register zu. Ein räumlich stets an derselben Stelle auf dem Chip des Prozessors erfolgender physikalischer Störungsangriff trifft so z. B. in einem ersten Kontext ein benutztes Register, in einem anderen zweiten Kontext aber ein nicht verwendetes Register. Somit ist der Angriff, während der Prozessor im zweiten Kontext arbeitet, wirkungslos. Hierdurch kann ein aktiv störender Angreifer kaum oder keine Rückschlüsse aus seinen Störungen auf die bei der Berechnung verwendeten Geheimdaten ziehen.
-
Wahlweise wird innerhalb der Mehrfachberechnung zumindest eine weitere Gegenmaßnahme durchgeführt aus der Gruppe von Gegenmaßnahmen umfassend: zufallsgesteuerte Zeit-Verzögerungen; wiederholtes Berechnen zumindest eines Blocks, d. h. Einstreuen von Dummy-Ausführungen einzelner Blöcke.
-
Ein erfindungsgemäßer Prozessor ist eingerichtet mit Mitteln zur Durchführung eines erfindungsgemäßen Verfahrens, insbesondere mit Mitteln, um innerhalb der Mehrfachberechnung Blöcke der mehreren, zumindest zwei, Durchführungen der Berechnung in verschachtelter Reihenfolge durchzuführen. Wahlweise sieht der Prozessor mehrere voneinander getrennte Kontexte vor, hat wahlweise Multithreadingfähigkeit, wobei unterschiedliche Kontexte unterschiedlichen Threads zugeordnet sind. Wahlweise läuft z. B. jede Durchführung der kryptographischen Berechnung als eigener Thread in einem eigenen Kontext ab.
-
Im Folgenden wird die Erfindung an Hand von Ausführungsbeispielen und unter Bezugnahme auf die Zeichnung näher erläutert, in der zeigen:
-
1 eine Doppelberechnung des DES nach dem Stand der Technik;
-
2 eine Doppelberechnung des DES gemäß einer Ausführungsform der Erfindung;
-
3 eine Vierfachberechnung eines nicht-zyklischen Krypto-Algorithmus, gemäß einer Ausführungsform der Erfindung.
-
1 zeigt in schematischer Darstellung die Runderfolge bei einer Doppelberechnung des DES (Data Encryption Standard) nach dem Stand der Technik. Der DES umfasst 16 Runden, in 1 mit Runde a, b, ..., o, p bezeichnet. Mit der Ziffer 1 ist die erste Durchführung des DES bezeichnet, mit der Ziffer. 2 ist die zweite Durchführung des DES bezeichnet. Gemäß 1 werden zuerst alle 16 Runden der ersten Durchführung des DES ausgeführt, dargestellt durch die Abfolge 1a-1b-1c-1d-1e-1f-1g-1h-1i-1j-1k-1l-1m-1n-1o-1p. Nachfolgend wird die Abfolge 2a-2b-2c-2d-2e-2f-2g-2h-2i-2j-2k-2l-2m-2n-2o-2p, also die komplette zweite Durchführung der 16 Runden des DES ausgeführt.
-
2 zeigt in schematischer Darstellung die Rundenfolge bei einer Doppelberechnung des DES (Data Encryption Standard) gemäß einer Ausführungsform der Erfindung. Im Unterschied zur Abfolge aus 1 sind bei der Abfolge aus 2 einige Runden der zweiten Durchführung des DES zwischen die Runden der ersten Durchführung des DES gestreut. Beispielsweise werden die ersten beiden Runden 1a, 1b der ersten Durchführung des DES ausgeführt, dann aber nach der zweiten Runde 1b der ersten Durchführung die erste Runde 2a der zweiten Durchführung des DES eingestreut. Es folgen die dritte, vierte, fünfte Runde 1c, 1d, 1e der ersten Durchführung, anschließend die zweite, dritte, vierte Runde 2b, 2c, 2d der zweiten Durchführung, etc. Die Reihenfolge der Runden innerhalb einer einzelnen Durchführung ist dabei beibehalten, d. h. die Abfolge a-b-c-d-e-f... ist nicht vertauscht.
-
3 zeigt eine Vierfachberechnung eines nicht-zyklischen Krypto-Algorithmus in einem Prozessor, gemäß einer weiteren Ausführungsform der Erfindung.
-
Der Krypto-Algorithmus wird vier Mal durchgeführt, entsprechend den vier Zeilen 1, 2, 3, 4 in 3. Der Krypto-Algorithmus umfasst sieben Blöcke a, b, c, d, e, f, g, die der Einfachheit halber als identische Kästchen dargestellt sind. Tatsächlich umfasst jeder der sieben Blöcke a, b, c, d, e, f, g nicht notwendig die gleichen, und sogar in der Regel unterschiedliche Rechenschritte.
-
Jede der vier Durchführungen 1, 2, 3, 4 wird in einem eigenen Kontext 1, 2, 3, 4 berechnet. Durch die Pfeile in 3 ist das Schalten zwischen den vier Kontexten 1, 2, 3, 4 angedeutet, wenn zwischen den vier Durchführungen des Krypto-Algorithmus geschaltet wird. Der Prozessor beginnt die Vierfachberechnung in Kontext 1 mit Block a der ersten Durchführung („Start”, Kästchen 1a). Der Prozessor schaltet von Kontext 1 zu Kontext 4 (Pfeil von Kästchen 1a zu Kästchen 4a) und rechnet Block a der vierten Durchführung. Der Prozessor schaltet von Kontext 4 zu Kontext 1 (Pfeil von Kästchen 4a zu Kästchen 1b) und rechnet Block b der ersten Durchführung. Der Prozessor schaltet von Kontext 1 zu Kontext 2 (Pfeil von Kästchen 1b zu Kästchen 2a) und rechnet Block a der zweiten Durchführung. Der Prozessor schaltet von Kontext 2 zu Kontext 4 (Pfeil von Kästchen 2a zu Kästchen 4b) und rechnet Block b der vierten Durchführung. In 3 ist der Prozessor nach einigen weiteren Kontext-Umschaltungen gerade dabei im vierten Kontext Block c der vierten Durchführung zu berechnen. So werden schließlich alle Blöcke a–g aller vier 1–4 Durchführungen in verschachtelter Reihenfolge berechnet,
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- EP 1569118 B1 [0008]
- US 2009/0285398 A1 [0010]
- DE 19822218 A1 [0011]