-
Die
vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung
zum Bereitstellen eines kryptografischen Schlüssels, wie
er beispielsweise bei Verschlüsselungs- oder Authentifizierungsverfahren
benötigt wird.
-
Unter
Kryptografie werden üblicherweise Methoden zur Verschlüsselung
und Entschlüsselung von Daten verstanden. Bei einer Verschlüsselung
ist es grundsätzlich gewünscht, Daten derart einer
mathematischen Transformation zu unterwerfen, dass es einem Angreifer,
der die Daten oder eine Kopie in seinen Besitz bringt, nicht möglich
ist, die Originaldaten aus den transformierten Daten zu rekonstruieren. Bei
der symmetrischen Verschlüsselung wird beispielsweise ein
geheimer Schlüssel, der als möglichst lange Binärzahl
festgelegt ist, zur Verschlüsselung bzw. Chiffrierung verwendet.
Die verschlüsselten Daten können anschließend
von dem Empfänger in Kenntnis des geheimen Schlüssels
dechiffriert bzw. entschlüsselt werden, um den Klartext
zu erhalten. Der kryptografische Schlüssel muss somit möglichst
sicher abgelegt werden und darf nicht von einem Eindringling zum
Beispiel durch eine sogenannte Kryptoanalyse ermittelt werden können.
-
Heutzutage
greifen viele Systeme mit Sicherheitsfunktionalität auf
Flash-Speicher zurück, in denen die jeweiligen Schlüsselbitfolgen
als kryptografischer Schlüssel gespeichert werden. Insbesondere
bei Flash-Speichern erfolgt die Speicherung der Informationen im
Form von logischen Zuständen durch elektrische Ladungen.
Es sind allerdings Verfahren bekannt geworden, um die in Flash-Speichern als
Ladungen codierten Bitzustände zu manipulieren. Zum Beispiel
lassen sich bei Flash-Speichern die gespeicherten Ladungszustände
durch radioaktive Strahlung oder UV-Licht verändern.
-
In E.
Biham und A. Shamir „Differential Fault Analysis of Secret
Key Cryptosystems" in Proceedings of Advances in Cryptology-Crypto
'97, l7tn International Cryptology Conference Santa Barbara, California,
U.S.A., August 17–21, 1997, wird zum Beispiel
ein Verfahren zum Ermitteln eines gespeicherten kryptografischen
Schlüssels von k Bits beschrieben. Zunächst wird
ein Klartext P verschlüsselt und das sich ergebende Chiffrat
gespeichert. Anschließend wird der Flash-Speicher einem
schwachen äußeren Einfluss ausgesetzt, der einzelne
Schlüsselbits zu Null setzen kann. Das sich ergebende Chiffrat, welches
sich wegen des sich veränderten kryptografischen Schlüssels ändert,
wird ebenfalls ermittelt. Dies wird solange wiederholt, bis sich
durch die Manipulation der Schlüsselbits keine weitere
Veränderung im Chiffrat ergibt. D. h., alle Schlüsselbits
sind in einem wohldefinierten gleichen logischen Zustand, zum Beispiel
Null (oder Low). Somit ist davon auszugehen, dass das zuletzt erhaltene
Chiffrat mit hoher Wahrscheinlichkeit in Abhängigkeit von
einem kryptografischen Schlüssel entstanden ist, in dem
nur ein Bit gesetzt ist. Die Position dieses Bits kann durch Ausprobieren
der k Bitposition gefunden werden. Durch wiederholte Anwendung dieses
Angriffs und der Manipulierung der gespeicherten Schlüsselbits, kann
somit ein Angreifer den ursprünglichen Schlüssel
rekonstruieren.
-
Es
ist einerseits gewünscht, möglichst einfache und
zuverlässige Speicher, wie zum Beispiel Flash-Speicher,
zu verwenden und andererseits eine hohe Sicherheit gegenüber
dem Ausspähen von gespeicherten sicherheitsrelevanten Informationen,
wie insbesondere kryptografischen Schlüsseln, zu erzielen.
In der Vergangenheit sind immer häufiger sogenannte Smartcards
oder Chipkarten mit Sicherheitsmerkmalen versehen worden, die mit äußeren
Kommunikationseinrichtungen Daten austauschen. Zur Authentifizierung
oder gesicherten Datenübertragung werden dabei auf der
Chipkarte abgespeicherte kryptografische Schlüssel verwendet,
die in Flash-Speichern oder technologisch verwandten Speichern,
wie beispielsweise EEPROM Speicher, abgelegt sind.
-
Es
ist daher eine Aufgabe der vorliegenden Erfindung, ein verbessertes
Verfahren und eine verbesserte Vorrichtung zu schaffen, die zum
sicheren Abspeichern von kryptografischen Schlüsseln geeignet
ist.
-
Diese
Aufgabe wird durch ein Verfahren gemäß Patentanspruch
1 gelöst.
-
Demgemäß ist
ein Verfahren zum Bereitstellen eines kryptografischen Schlüssels
mit mehreren Schlüsselbits vorgesehen. Dabei werden die
Schlüsselbits in einem Speicher, wie zum Beispiel in einem Flash-Speicher
abgespeichert und aus dem Speicher ausgelesen. Jeweils vor dem Abspeichern
und nach dem Auslesen der Schlüsselbits wird mindestens
ein Schlüsselbit an einer vorgegebenen Bitposition invertiert.
-
Ein
Angriff, wie er eingangs erläutert wurde, führt
bei kryptografischen Schlüsseln, die nach dem vorbeschriebenen
Verfahren bereitgestellt werden, nicht zum Erfolg. Die Schlüsselbits
werden nicht in ihrer ursprünglichen Form im jeweiligen
Speicher abgelegt. Vielmehr wird mit einer Wahrscheinlichkeit von
0,5 jedes Schlüsselbit als invertiertes Schlüsselbit
gespeichert. Die Information über die jeweilige Bitposition,
an der eine Invertierung vorgenommen werden soll, kann ebenfalls
auf verschiedene Art gespeichert oder bekannt gemacht werden. Es
ist zum Beispiel möglich, mehrere Schlüsselbits
beim Abspeichern und/oder Auslesen an den vorgegebenen Bitpositionen
zu invertieren. Die vorgegebene Bitposition kann durch entsprechende
Maskierungsdaten, welche abgespeichert werden, festgelegt sein.
-
Das
Verfahren kann die folgenden Schritte umfassen: Invertieren mindestens
eines Schlüsselbits an einer vorgegeben Bitposition zum
Erzeugen eines veränderten kryptografischen Schlüssels; Speichern
des veränderten kryptografischen Schlüssels; Auslesen
der Schlüsselbits des veränderten kryptografischen
Schlüssels; und Invertieren der ausgelesenen Schlüsselbits
des veränderten kryptografischen Schlüssels an
der mindestens einen vorgegeben Bitposition zum Wiederherstellen
des kryptografischen Schlüssels.
-
Die
Erfindung umfasst ferner ein Verfahren zum Speichern eines kryptografischen
Schlüssels, welcher mehrere Schlüsselbits aufweist,
insbesondere in einem Flash-Speicher. Dabei wird mindestens eines
der Schlüsselbits an einer vorgegebenen Bitposition invertiert
abgespeichert.
-
Analog
schafft die Erfindung ein Verfahren zum Auslesen eines kryptografischen
Schlüssels, welcher mehrere Schlüsselbits aufweist,
insbesondere aus einem Flash-Speicher. Dabei wird mindestens eines
der abgespeicherten Schlüsselbits an einer vorgegebenen
Bitposition invertiert.
-
Wenn
die jeweiligen Bitpositionen beispielsweise durch Maskierungsdaten
festgelegt sind, kann durch logisches Verknüpfen, beispielsweise
mit einer XOR-Verknüpfung, des jeweiligen kryptografischen Schlüssels
mit den Maskierungsdaten die Schlüsselbits an den gewünschten
Positionen invertiert werden.
-
Die
Erfindung schafft ferner eine Speichervorrichtung, welche sich insbesondere
zur Durchführung der vorbeschriebenen Verfahren eignet.
Eine Speichereinrichtung für einen kryptografischen Schlüssel,
welcher mehrere Schlüsselbits aufweist, hat demnach mindestens
eine Invertereinrichtung zum Invertieren mindestens eines gespeicherten Schlüsselbits
an einer vorgegebenen Bitposition und eine Speichereinrichtung zum
Speichern der Schlüsselbits und des invertierten Schlüsselbits.
-
Es
kann eine weitere Speichereinrichtung vorgesehen werden, welche
Maskierungsdaten zum Festlegen der vorgegebenen Bitpositionen speichert. Durch
logisches Verknüpfen, beispielsweise mit einem XOR-Gatter,
der Maskierungsdaten mit dem gespeicherten, veränderten
kryptografischen Schlüssel, ergibt sich die für
die jeweilige kryptografische Anwendung bzw. Verschlüsselung
notwendige Bitfolge des ursprünglichen kryptografischen
Schlüssels. Die Invertereinrichtung kann insofern als Software-Modul
oder Software-implementiert ausgebildet sein. Es ist jedoch auch
denkbar, entsprechende Inverter hardwaremäßig
vorzusehen, die beim Auslesen aus dem Flash-Speicher, der die Schlüsselbits trägt,
bestimmte Bitpositionen invertieren.
-
Eine
entsprechende Speichervorrichtung eignet sich insbesondere zum Einsatz
in einer Smartcard, die neben der Speichervorrichtung eine Verarbeitungseinheit,
wie zum Beispiel einen Mikroprozessor aufweist, der einen Verschlüsselungsalgorithmus in
Abhängigkeit von dem kryptografischen Schlüssel durchführt.
Mögliche Anwendungen sind zum Beispiel Zugangskarten, Geldkarten
oder andere als Chip- oder Smartcards ausgeführte Systeme
mit Sicherheitsfunktionalitäten.
-
Schließlich
sieht die Erfindung ein Computerprogrammprodukt vor, welches die
Durchführung eines der vorbeschriebenen Verfahren auf einer
programmgesteuerten Einrichtung veranlasst. Als programmgesteuerte
Rechnereinrichtung kommt zum Beispiel ein PC in Frage, auf dem entsprechende Software
installiert ist. Ferner kann das Computerprogramm auf einem eingebetteten
Mikrocontroller oder Mikroprozessor, beispielsweise auf einer Chip- oder
Smartcard ablaufen. Das Computerprogrammprodukt kann beispielsweise
in der Art eines Datenträgers, wie zum Beispiel USB-Sticks
oder Speicherkarten implementiert werden.
-
Weitere
vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand der Unteransprüche
sowie der im Folgenden beschriebenen Ausführungsbeispiele.
Im Weiteren wird die Erfindung anhand einzelner Ausführungsbeispiele
unter Bezugnahme auf die Figuren näher erläutert.
Es zeigt dabei
-
1A, 1B ein
beispielhaftes Ablaufdiagramm eines Verfahrens zum Speichern eines
kryptografischen Schlüssels und einen kryptographischen
Schlüssel;
-
2A, 2B ein
beispielhaftes Ablaufdiagramm eines Verfahrens zum Auslesen eines
kryptografischen Schlüssels und einen kryptographischen
Schlüssel;
-
3 ein
Blockdiagramm einer Chipkarte mit einem Ausführungsbeispiel
einer Speichervorrichtung zum Bereitstellen eines kryptografischen Schlüssels;
-
4 ein
Prinzipschaltbild einer ersten Ausführungsform einer Speichereinrichtung
zum Speichern eines kryptografischen Schlüssels; und
-
5 ein
Prinzipschaltbild einer zweiten Ausführungsform einer Speichereinrichtung
zum Speichern eines kryptografischen Schlüssels.
-
In
den Figuren sind gleiche oder funktionsgleiche Elemente mit denselben
Bezugszeichen versehen worden, sofern nichts anderes angegeben ist.
-
In
der 1A ist ein beispielhaftes Ablaufdiagramm für
ein Verfahren zum Speichern eines kryptografischen Schlüssels
dargestellt. Dazu wird im Schritt A1 zunächst ein kryptografischer
Schlüssel bereitgestellt. In der 1B ist
zum Beispiel ein kryptografischer Schlüssel KS mit mehreren
Schlüsselbits SO-SN illustriert. Werden diese Schlüsselbits SO-SN
des kryptografischen Schlüssels KS in ursprünglichen
Form, beispielsweise in einem Flash-Speicher abgelegt, kann durch
einen, wie in der Einleitung dargelegten, kryptografischen Angriff, der
kryptografische Schlüssel rekonstruiert werden.
-
Im
Schritt A2 werden deshalb an vorgegebenen Bitpositionen die Schlüsselbits
invertiert. Dies ist in der 1B illustriert.
Die Bitpositionen P und Q des kryptografischen Schlüssels
KS werden invertiert, so dass invertierte Schlüsselbits
SP und SQ an der jeweiligen Bitposition vorliegen. Es ergibt sich
somit ein veränderter kryptografischer Schlüssel
KS'.
-
Dieser
veränderte kryptografische Schlüssel KS' wird
im Schritt A3, wie in der 1A angedeutet ist,
abgespeichert. Wenn einem potenziellen Angreifer unbekannt ist,
welche der Bitpositionen beim Abspeichern invertiert wurden, kann
auch durch Manipulieren der abgespeicherten Schlüsselbits,
also der Bits des veränderten kryptografischen Schlüssels KS',
durch ein Verfahren der differentiellen Fehleranalyse nicht erkannt
werden, welcher tatsächliche kryptografische Schlüssel
KS verwendet wird. Ein entsprechender kryptografischer Angriff ist
bei konventionellen Speichermethoden nur deshalb möglich, weil
am Ende ein bekannter Schlüssel, der zum Beispiel nur Null-Bits
aufweist, erzeugt wird und rückwärts schrittweise
nach 1-Bit-Veränderungen gesucht werden kann, so dass der
eigentliche Schlüssel rekonstruiert wird. Bei dem vorgeschlagenen
Verfahren zum Abspeichern eines kryptografischen Schlüssels
kann ein Angreifer potenziell zwar die, beispielsweise in einem
Flash-Speicher abgelegten Schlüsselbits des veränderten
kryptografischen Schlüssels KS' zu Null setzen, allerdings
kann der Angreifer nicht ohne hohen Aufwand die unbekannten Bitpositionen, an
denen eine Inversion erfolgt, feststellen. Je mehr unbekannte Bitpositionen
invertiert werden, desto schwieriger wird es für einen
Angreifer, den ursprünglichen kryptografischen Schlüssel
KS zu erraten.
-
In
der 2A ist ein Verfahren zum Auslesen eines kryptografischen
Schlüssels als Ablaufdiagramm illustriert.
-
Im
Schritt A4 wird ein veränderter kryptografischer Schlüssel
KS', wie er beispielsweise in der 2B dargestellt
ist, ausgelesen.
-
Anschließend
erfolgt im Schritt A5 eine Inversion von ausgelesenen Schlüsselbits
des veränderten kryptografischen Schlüssels an
vorgegebenen Bitpositionen P und Q. Somit werden die Schlüsselbits
SP und SQ invertiert und erhalten die Werte des ursprünglichen
Schlüsselbitwerte SP und SQ des kryptografischen Schlüssels
KS. Anschließend kann im Schritt A6 der kryptografische
Schlüssel bereitgestellt werden.
-
Der
ursprüngliche gewünschte kryptografische Schlüssel
KS kann lediglich dann gelesen werden, wenn die Bitpositionen, an
denen beim Abspeichern eine Inversion erfolgte, bekannt sind. Es
ist zum Beispiel möglich, entsprechende Maskierungsdaten
sicher abzuspeichern, die die jeweiligen vorgegebenen Bitpositionen
anzeigen.
-
Die
in den 1A und 2A angedeuteten Verfahrensschritte
können auch als ein einziges Verfahren zum Bereitstellen
eines kryptografischen Schlüssels mit den Schritten A1–A6
verstanden werden. Das jeweilige Zurückrechnen der in beispielsweise
einem Flash-Speicher abgelegten Schlüsselbits bzw. invertierten
Schlüsselbits, kann Software-implementiert bei der Durchführung
beispielsweise eines Verschlüsselungsalgorithmus erfolgen. Denkbar
ist jedoch auch eine hardwarebasierte Inversion von Schlüsselbits
an vorgegebenen Positionen.
-
In
der 3 ist ein beispielhaftes Blockdiagramm einer Chipkarte 1,
die zum Beispiel ein kryptografisches Verfahren implementiert, dargestellt.
Die Chipkarte oder Smartcard 1 hat dazu beispielsweise eine
als Mikrokontroller oder Mikroprozessor ausgeführte Verarbeitungseinheit 2,
welche über geeignete Leitungen 8 an einen Datenbus 5 gekoppelt
ist. An den Datenbus ist ebenfalls über geeignete Leitungen 8 eine
Schnittstelle 3 gekoppelt, welche Kopplungssignale CC,
beispielsweise mit externen Einrichtungen, austauscht. An den Datenbus
ist ferner ein Speicher 4 mit beispielsweise einem RAM-Speicher 4A und
einem ROM-Speicher 4B gekoppelt, wobei im RAM-Speicher
beispielsweise zu verschlüsselnde oder ver schlüsselte
Daten abgelegt sind und im ROM-Speicher ein Betriebssystem oder
Betriebssoftware implementiert sind.
-
An
den Datenbus ist schließlich eine Speichereinrichtung 10 gekoppelt,
die zur Durchführung der vorbeschriebenen Verfahren zum
Bereitstellen von kryptografischen Schlüsseln geeignet
ist. Die Speichereinrichtung 10 hat dabei einen Flash-Speicher 6 und
eine Invertierungseinrichtung 7. Der Flash-Speicher 6 kann
durch ein externes Programmiersignal PRG programmiert werden. Beispielsweise
können Schlüsselbits bzw. invertierte Schlüsselbits
eines kryptografischen Schlüssels in den Flash-Speicher
von extern einprogrammiert werden.
-
Die
Invertereinrichtung 7 ist derart eingerichtet, dass an
den vorgegebenen Bitpositionen die ausgelesenen, im Flash-Speicher 6 vorliegenden, Schlüsselbitwerte
invertiert werden und von der Verarbeitungseinheit bzw. dem Mikroprozessor 2 bei dem
jeweils implementierten Kryptoalgorithmus verwendet werden. D. h.
im Flash-Speicher ist ein veränderter kryptografischer
Schlüssel KS' abgespeichert. Die Verarbeitungseinheit bzw.
der Mikroprozessor oder Kontroller 2 erhält jedoch
durch die Inversion der vorbestimmten Bits an vorbestimmten Bitpositionen
den ursprünglichen tatsächlichen kryptografischen
Schlüssel. Die Verarbeitungseinheit 2 ist zusammen
mit der Betriebssoftware derart eingerichtet, dass zum Beispiel
die Verfahren gemäß 1A und 2A durchgeführt
werden.
-
In
der 4 ist ein erstes Ausführungsbeispiel
einer Speichereinrichtung 10 zum Speichern eines kryptografischen
bzw. eines veränderten kryptografischen Schlüssels
dargestellt. Die Speichereinrichtung 10 hat dabei einen
Flash-Speicher mit, in dem Beispiel der 4, acht
Speicherzellen 12. In den Speicherzellen 12 sind
acht Schlüsselbits S0–S7 abgelegt, wovon an den
Bitpositionen 0 und 2 invertierte Schlüsselbits S0 und
S2 vorliegen. Die Invertereinrichtung 7 empfängt
die in den Speicherzellen 12 abgelegten Schlüsselbits
S0, S1, S2, S3–S7 parallel und gibt die ursprünglichen
Schlüsselbits S0–S7 aus. An den Bitpositionen
0 und 2 hat die Inverterein richtung 7 jeweils Inverter
bzw. ein NOT-Gatter 9, 11, welche eine Änderung
des logischen Pegels der zugeführten Bitwerte verursacht.
Beim Einsatz in einer Chipkarte können beispielsweise die
Inverter 9, 11 durch Transistoren im entsprechenden
Halbleiterchip implementiert werden.
-
Die 5 zeigt
ein zweites Ausführungsbeispiel für eine Speichereinrichtung 10 zum
Bereitstellen eines kryptografischen Schlüssels KS. Wie
bereits in der 4 dargestellt ist, weist die
Speichereinrichtung 10 einen Flash-Speicher 6 mit
Speicherzellen auf, in die die Schlüsselbits S0, S1, S2,
S3–S7 des veränderten kryptografischen Schlüssels
KS' einprogrammiert sind.
-
Beispielsweise
im ROM-Speicher 4B sind Maskierungsdaten MD abgelegt, welche
die Bitpositionen derjenigen Schlüsselbits festlegen, die
invertiert abgespeichert sind. Beispielsweise ist dies in der 7 ist die Bitposition 0 und 2. Die Maskierungsdaten
MD haben dieselbe Bitlänge wie der veränderte kryptografische
Schlüssel KS', und an den Positionen 0 und 2 ist jeweils
eine logische 1 eingeschrieben. Die restlichen Stellen sind 0. Sowohl
die Maskierungsdaten MD wie auch die Schlüsselbits des
veränderten kryptografischen Schlüssels KS' werden
einem XOR-Gatter 13 zugeführt. Das XOR-Gatter 13 verknüpft
die jeweiligen Bits, also die an derselben Bitposition vorliegenden
Schlüsselbits, und Maskierungsdatenbits. Das XOR-Gatter 13 liefert
somit durch das logische Verknüpfen mit einer XOR-Verknüpfung
den ursprünglichen kryptografischen Schlüssel
KS.
-
Die
Maskierungsdaten MD, welche zur Rekonstruktion des tatsächlichen
kryptografischen Schlüssels KS notwendig sind und eine
Bitmaske darstellen, sowie die logische XOR-Verknüpfung 13, können
auch im Programmcode des Kryptoalgorithmus für die Verarbeitungseinheit
bzw. den Prozessor 2 implementiert werden. Der entsprechende
Programmcode kann zum Beispiel ebenfalls in einem Flash-Speicher
abgelegt werden. Bei einem Manipulationsversuch an dem entsprechenden
Flash-Inhalt, wel cher nicht nur die Masken- und Schlüsseldaten, sondern
auch den Programmcode für die kryptografischen Verfahren
enthält, würde bei einer versuchten Manipulation
auch der Programmcode voraussichtlich gestört werden, so
dass der Kryptoalgorithmus nicht mehr korrekt ablaufen kann. Ein
Angreifer kann wegen des Eingriffs in den Programmcode dann nicht mehr
das notwendige kryptografische Verfahren in Gang setzten und somit
auch nicht mehr den ursprünglichen kryptografischen Schlüssel
und/oder die Maskendaten ermitteln.
-
Bei
einem Abspeichern der Maskendaten in einem ROM-Speicher muss ein
potenzieller Angreifer, um die Maskendaten zu erkennen, Eingriffe
in den jeweiligen Halbleiterchip vornehmen.
-
Obwohl
die vorliegende Erfindung Verfahren und Vorrichtungen zum Bereitstellen
von kryptografischen Schlüsseln bzw. Schlüsselbits
anhand von Ausführungsbeispielen näher erläutert
ist, können diese vielfältig modifiziert werden.
Die angegebenen Bitlängen der Schlüssel und die
Anzahl der invertierten Schlüsselbits ist lediglich beispielhaft
zu verstehen. Besonders geeignet ist zum Beispiel eine Anzahl von
invertierten Bits, die ungefähr der Hälfte der Bitlänge
des bereitzustellenden kryptografischen Schlüssels entspricht. Übliche
Schlüssellängen sind zum Beispiel größer
als 80 Bit. Durch den einfachen geringen Implementierungsmehraufwand
gegenüber üblichen Speicherverfahren in Flash-Speichern
eignet sich das vorgeschlagene Verfahren bzw. die Vorrichtung insbesondere
zum Einsatz in Smartcards und einfachen kryptografischen Token für
Massenanwendungen.
-
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 Nicht-Patentliteratur
-
- - E. Biham und
A. Shamir „Differential Fault Analysis of Secret Key Cryptosystems” in
Proceedings of Advances in Cryptology-Crypto '97, l7tn International
Cryptology Conference Santa Barbara, California, U.S.A., August
17–21, 1997 [0004]