-
Die vorliegende Erfindung betrifft ein Verfahren zur Gültigkeitsprüfung eines zu prüfenden digitalen Schlüssels in einem Mikrocontroller, ein Verfahren zur Authentifizierung sowie einen Mikrocontroller und ein Computerprogramm zu deren Durchführung.
-
Hintergrund der Erfindung
-
Zur Authentifizierung, durch einen Mikrocontroller, allgemeiner durch eine Recheneinheit, können geheime digitale Schlüssel bzw. Passwörter verwendet werden, wobei ein eingegebener bzw. zu prüfender, potentiell falscher, Schlüssel mit einem gespeicherten, richtigen, Schlüssel verglichen wird und die Authentizität bestätigt wird, wenn bei einem Vergleich festgestellt wird, dass der zu prüfende gleich dem gespeicherten Schlüssel ist. Der eingegebene bzw. empfangene Schlüssel wird von einer zu authentifizierenden Gegenstelle (Person, anderer Mikrocontroller, andere Recheneinheit, anderes Programm, usw.) eingegeben bzw. übertragen. Ein Zugriff auf den Mikrocontroller oder bestimmte ihrer Funktionalitäten oder Daten wird nur gewährt, wenn ein gültiger, d.h. der richtige, Schlüssel eingegeben wird.
-
Wird der gespeicherte Schlüssel für den Vergleich aus einem Speicher gelesen und in einen Zwischenspeicher geschrieben, kann ein Angreifer, der physischen Zugriff auf den Mikrocontroller, hat, versuchen, durch gezieltes Erzeugen elektrischer Ströme bzw. elektrischer Spannungen in dem Zwischenspeicher oder in Zuleitungen zu diesem, etwa mittels geeigneter Sonden, einen ihm bekannten Wert im Zwischenspeicher einzustellen und diesen Wert dann als Schlüssel zu verwenden. Ein solcher Angriff wird im englischen Sprachgebrauch auch als „fault attack“ bezeichnet.
-
Offenbarung der Erfindung
-
Erfindungsgemäß werden ein Verfahren zur Gültigkeitsprüfung eines zu prüfenden digitalen Schlüssels in einem Mikrocontroller, ein Verfahren zur Authentifizierung sowie einen Mikrocontroller und ein Computerprogramm zu dessen Durchführung mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
-
Die Erfindung bedient sich der Maßnahme, einen Hashwert des eingegebenen Schlüssels zu berechnen und diesen mit einem Referenz-Hashwert des richtigen Schlüssels, der in Bit-Speicherelementen gespeichert bzw. zwischengespeichert wird, zu vergleichen. Versucht ein Angreifer mittels einer „fault attack“ den Zustand der Bit-Speicherelemente mittels einer elektromagnetischen Störung zu beeinflussen, so dass deren Speicherwert beeinflusst bzw. geändert wird, wird dies beim Vergleich erkannt. Gleichzeitig wird durch die Hashwertbildung verhindert, dass ein Angreifer, der den Speicherzustand der beeinflussten Bit-Speicherelemente kennt, etwa weil die elektromagnetische Störung dazu führt, dass alle Bit-Speicherelemente in den gleichen Zustand schalten (der eine logische ,0' oder ,1' repräsentiert), in der Lage ist, einen entsprechenden zu prüfenden Schlüssel einzugeben, da es im Allgemeinen nicht möglich ist, aus der Kenntnis eines Hashwerts einen Schlüssel, auf den ein Anwenden der Hashfunktion genau diesen Hashwert ergibt, zu bestimmen.
-
Im Einzelnen wird ein Verfahren zur Gültigkeitsprüfung eines zu prüfenden Schlüssels in einem Mikrocontroller unter Verwendung von Bit-Speicherelementen des Mikrocontrollers, deren Zustand durch eine elektromagnetische Störung beeinflussbar ist, vorgeschlagen. Das Verfahren umfasst ein Speichern eines Referenz-Hashwerts in den Bit-Speicherelementen, wobei jeweils ein Bit des Referenz-Hashwerts in einem der Bit-Speicherelemente gespeichert wird; ein Bestimmen eines Schlüssel-Hashwerts durch Anwenden einer Hashfunktion auf den Schlüssel; und ein Vergleichen des Schlüssel-Hashwerts mit einem Speicherwert der Bit-Speicherelemente, wobei der zu prüfende digitale Schlüssel als ungültig bestimmt wird, wenn der Schlüssel-Hashwert nicht gleich dem Speicherwert ist. Versucht ein Angreifer die Bit-Speicherelemente oder die Speicherung bzw. Übertragung des Referenz-Hashwerts mittels einer elektromagnetischen Störung zu beeinflussen („fault attack“), schalten die betroffenen Bit-Speicherelemente in einen Zustand, der unterschiedlich von dem gewünschten Zustand (entsprechend dem Referenz-Hashwert) ist, so dass sich der Speicherwert der Bit-Speicherelemente von dem Referenz-Hashwert unterscheidet. Da nicht der Schlüssel selbst, sondern dessen Hashwert (Schlüssel-Hashwert) verwendet wird, ist dem Angreifer selbst bei Kenntnis des Zustands, in den die Bit-Speicherelemente geschaltet werden, nicht möglich, einen zugehörigen passenden digitalen Schlüssel einzugeben.
-
Das Verfahren wird zur Gültigkeitsprüfung von Schlüsseln in Mikrocontrollern verwendet. Mikrocontroller stellen Recheneinheiten dar, die insbesondere für Steuerungsfunktionen von Maschinen, Kraftfahrzeugen usw. verwendet werden. Allgemeiner kann das Verfahren bei Recheneinheiten angewandt werden. Der Mikrocontroller (Recheneinheit) kann insbesondere in einem Steuergerät eines Kraftfahrzeugs oder einer (industriellen) Maschine vorgesehen sein, um Steuerfunktionen zu implementieren. Der Mikrocontroller kann einen oder mehrere Prozessorkerne umfassen und/oder insbesondere als ASIC (anwendungsspezifische integrierte Schaltung; englisch: Application-Specific Integrated Circuit) oder FPGA (im Feld programmierbare Logik-Gatter-Anordnung; englisch: Field Programmable Gate Array) ausgeführt sein oder solche zumindest umfassen. Einzelne oder alle Schritte des Verfahrens können in entsprechenden Hardwaremodulen implementiert sein, d.h. in den Hardwaremodulen sind jeweils Bauelemente vorgesehen, die so zusammengeschaltet sind, dass der jeweilige Verfahrensschritt durchgeführt wird (ohne den Einsatz von Software; also automatisch im Folge einer Taktung des Mikrocontrollers). Die Bit-Speicherelemente sind im Mikrocontroller vorgesehene elektronische Bauelemente, insbesondere in einem Bit-Speichermodul.
-
Die elektromagnetische Störung kann z.B. durch einen elektromagnetischen Impuls oder einen Laser herbeigeführt werden. Auch eine Beeinflussung durch Lichtpulse oder lonenstrahlen sind denkbar. Durch die elektromagnetische Störung werden in Bauelementen des Mikrocontrollers elektrische Ströme bzw. Spannungen induziert, die die Funktion und den Zustand der Bauelemente beeinflussen können.
-
Als Bit-Speicherelemente bzw. Bit-Zwischenspeicherelemente werden im Rahmen dieser Erfindung elektronische Bauelemente bezeichnet, die dazu eingerichtet sind, Bits (d.h. ,0' oder ,1') zu speichern, in dem sie verschiedene, dem jeweiligen Wert eines Bits entsprechende Zustände einnehmen. Bevorzugt sind die Bit-Speicherelemente Flipflops, weiter bevorzugt taktgesteuerte Flipflops (es ist aber auch die Verwendung nicht taktgesteuerter Flipflops denkbar). Da Flipflops, die auch bistabile Kippstufen oder bistabile Kippglieder genannt werden, im Prinzip zwei definierte unterschiedliche Zustände annehmen können, können sie zum Speichern von Bits verwendet werden, wobei ein Flipflop je nach Zustand jeweils den Wert eines Bit repräsentiert. Die Bit-Speicherelemente dienen während der Gültigkeitsprüfung insbesondere als Zwischenspeicher für den in einem nichtflüchtigen Speicher gespeicherten Referenz-Hashwert.
-
Bei Auftreten einer elektromagnetischen Störung ausreichender Größe können die Bit-Speicherelemente/Flipflops in einen bestimmten Zustand schalten, der insbesondere auch von der Art der elektromagnetischen Störung abhängig sein kann, z.B. abhängig davon, ob durch die elektromagnetische Störung ein hohes oder ein niedriges Spannungspotential erzeugt wird. Es wird hier davon ausgegangen, dass die elektromagnetische Störung eine ausreichende Größe aufweist, um das Schalten in einen beeinflussten Zustand zu bewirken. Eine Beeinflussung durch eine elektromagnetische Störung ist bei der Übertragung der zu speichernden Bits in die Bit-Speicherelemente und/oder bei den bereits gespeicherten Bits denkbar.
-
Als Hashfunktion zur Berechnung kann dabei eine kryptographische Hashfunktion verwendet werden. Insbesondere ist eine solche kryptographische Hashfunktion kollisionsresistent, es ist also praktisch nicht möglich, zwei verschiedene Eingabewerte zu finden, die den gleichen Hashwert ergeben. Geeignete Hashfunktionen sind z.B. Hashfunktionen gemäß SHA-1 oder SHA-2, d.h. SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 und SHA-512/256, die etwa aus dem Dokument FIPS PUB 180-4 (http://dx.doi.org/10.6028/NIST.FIPS.180-4) des NIST (National Institute of Standards and Technology) oder auch aus RFC 6234 bekannt sind. Die Länge der Hashwerte ist bei SHA-1 160 Bit, bei Hashfunktionen der SHA-2-Familie 224, 256, 384 bzw. 512 Bit. Ebenso ist auch die Verwendung von MD5 (Message-Digest Algorithm 5, RFC1321), Länge 128 Bit, oder SHA-3 (FIPS PUB 202, http://dx.doi.org/10.6028/NIST.FIPS.202), Länge je nach Version 224, 256, 384, 512 Bit oder beliebig, möglich.
-
Bevorzugt ist die Hashfunktion resistent gegen Urbild-Angriffe (d.h. Preimage-Attacken bzw. erstes-Urbild-Angriffe). Resistenz bzw. Widerstandfähigkeit gegen Urbild-Angriffe bezeichnet die Eigenschaft einer Hashfunktion h, dass es für einen gegebenen Hashwert y nicht praktikabel ist, einen Eingabewert x zu bestimmen, so dass die Hashfunktion h den Eingabewert x auf den gegebenen Hashwert y abbildet, d.h., so dass h(x) = y. „Nicht praktikabel“ soll heißen, dass es nur unter sehr hohem zeitlichem und/oder rechentechnischem Aufwand möglich ist, einen entsprechenden Eingabewert zu finden. Beispielsweise kann hoher zeitlicher Aufwand bedeuten, dass die Zeitspanne, die durchschnittlich benötigt wird, um einen entsprechenden Eingabewert zu finden, um mehrere Größenordnungen länger ist als eine Gültigkeitsdauer des geprüften Schlüssels. Insbesondere soll „nicht praktikabel“ heißen, dass es keine Angriffsmethode gibt bzw. keine Angriffsmethode bekannt ist, mit der sich der Aufwand (im Sinne durchzuführender Rechenoperationen), einen entsprechenden Eingabewert zu finden, gegenüber einem Durchprobieren aller möglichen Eingabewerte (sogenannte „Brute-Force-Attacke“) wesentlich reduzieren lässt. Beispielsweise gibt es bei einer Hashwertlänge von 160 Bit insgesamt 2160 mögliche Hashwerte, so dass entsprechend viele Eingabewerte durchprobiert werden müssten, um einen Eingabewert mit dem gewünschten Hashwert zu finden. Selbst ein Angriff, der den Aufwand um 10 Bit, d.h. um den Faktor 210, reduziert, wäre hier immer noch nicht praktikabel.
-
Bevorzugt umfasst das Verfahren ein Bestimmen eines Validierungswerts durch Anwenden einer Validierungsfunktion auf den Speicherwert der Bit-Speicherelemente und ein Vergleichen des Validierungswerts mit einem Referenz-Wertebereich oder einem Referenz-Wert, wobei der zu prüfende Schlüssel als ungültig bestimmt wird, wenn der Validierungswert nicht in dem Referenz-Wertebereich liegt bzw. nicht gleich dem Referenz-Wert ist. Zweckmäßigerweise liegt der Validierungswert eines Speicherwerts der Bit-Speicherelemente, wenn sich die Bit-Speicherelemente im beeinflussten Zustand befinden, nicht im Referenz-Wertebereich bzw. entspricht nicht dem Referenz-Wert. Wenn es einem Angreifer gelingen sollte, die Bit-Speicherelemente in beeinflusste Zustände zu schalten und er einen Schlüssel kennt, auf den die Hashfunktion angewandt einen Hashwert ergibt, der diesem beeinflussten Zustand entspricht, kann ein darauf basierender Angriff trotzdem verhindert werden, da, wenn sich die Bit-Speicherelemente im beeinflussten Zustand befinden, der Validierungswert nicht im Referenz-Wertebereich liegt bzw. nicht gleich dem Referenz-Wert ist. Referenz-Wertebereich bzw. Referenz-Wert sind insbesondere entsprechend festgelegt. Bei Verwendung eines Referenz-Werts, wird dieser einmalig durch Anwenden der Validierungsfunktion auf den Referenz-Hashwert bestimmt, etwa bei Speicherung des Referenz-Hashwerts im Speicher.
-
Je nach Ausgestaltung ist auch die umgekehrte Lösung vorteilhaft, d.h. dass der zu prüfende Schlüssel als ungültig bestimmt wird, wenn der Validierungswert in dem Referenz-Wertebereich liegt bzw. gleich dem Referenz-Wert ist. Zweckmäßigerweise liegt dann der Validierungswert eines Speicherwerts der Bit-Speicherelemente, wenn sich die Bit-Speicherelemente im beeinflussten Zustand befinden, im Referenz-Wertebereich bzw. entspricht dem Referenz-Wert.
-
Weiter bevorzugt umfasst die Validierungsfunktion eine Berechnung des Hamming-Gewichts des Speicherwerts der Bit-Speicherelemente. Diese vorteilhafte Ausgestaltung macht sich den sogenannten „Lawineneffekt“ (engl.: „avalanche effect“) kryptographischer Hashfunktionen zunutze, der die Eigenschaft bezeichnet, dass zwei Eingaben, die sich nur geringfügig unterscheiden (z.B. nur in einem einzelnen Bit) zu zwei völlig verschiedenen Ausgaben führen. Eine Folge hiervon ist, dass in (binär ausgedrückten) Hashwerten die Häufigkeit der ‚0‘ ähnlich groß ist wie die Häufigkeit der '1'. Das „Hamming-Gewicht“ bezeichnet die Anzahl, mit der ‚1‘ in einem Binärwert enthalten ist. Das Hamming-Gewicht eines Hashwerts wird also normalerweise in etwa bei 50%, z.B. zwischen 40% und 60%, der Gesamtanzahl von Bits im Hashwert liegen. Wird das Hamming-Gewicht als Validierungswert verwendet, kann vorzugsweise ein entsprechender Referenz-Wertebereich von 40% bis 60% der Gesamtzahl von Bits in durch die Hashfunktion berechneten Hashwerten sein. Bei einer Hashwertlänge von 160 Bits ist der Referenz-Wertebereich für das Hamming-Gewicht also von 64 bis 96. Schalten bei versuchter Manipulation einige oder alle Bit-Speicherelemente in einen beeinflussten Zustand, z.B. ‚0‘, kann die Bedingung, dass das Hamming-Gewicht in dem Referenz-Wertebereich liegt, nicht eingehalten werden. Es wird hier davon ausgegangen, dass die elektromagnetische Störung mehrere Bit-Speicherelemente in gleicher Weise beeinflusst; diese mehreren Bit-Speicherelemente schalten also in den gleichen Zustand entsprechend der elektromagnetischen Störung.
-
Insbesondere wird das Hamming-Gewicht selbst als Validierungsfunktion verwendet. Hierbei beträgt bzw. entspricht der zughörige Referenz-Wertebereich bevorzugt 35% bis 65%, weiter bevorzugt 40% bis 60%, am meisten bevorzugt 45% bis 55%, der Hashwert-Länge (d.h. der Anzahl an Bits im Hashwert). Hier ist eventuell eine Rundung auf die nächste ganze Zahl vorzunehmen, die dem jeweiligen Prozentwert entspricht. Gegebenenfalls ist bei der Bestimmung des Referenz-Schlüssels bzw. bei dessen Speicherung zu prüfen, ob die Validierungsfunktion angewandt auf diesen einen Validierungswert im Referenz-Wertebereich ergibt.
-
Die Gültigkeitsprüfung bedient sich im Prinzip eines Ausschlussverfahrens, bei dem geprüft wird, ob der zu prüfende Schlüssel eine oder mehrere Bedingungen erfüllt. Wenn wenigstens eine Bedingung nicht erfüllt ist, wird der zu prüfende Schlüssel als ungültig klassifiziert bzw. bestimmt. Wenn festgestellt wird, dass der zu prüfende Schlüssel nicht im Sinne dieser einen oder der mehreren Bedingungen ungültig ist, wird der zu prüfende Schlüssel als gültig anerkannt bzw. bestimmt.
-
Entsprechend wird bevorzugt der zu prüfende Schlüssel als gültig bestimmt, wenn der Schlüssel-Hashwert gleich dem Speicherwert ist und wenn gegebenenfalls der Validierungswert in dem Referenz-Wertebereich liegt bzw. gleich dem Referenz-Wert ist.
-
Vorzugsweise wird beim Anwenden der Hashfunktion zusätzlich ein Hashschlüssel (z.B. sog. Keyed-Hash Message Authentication Code (HMAC)) verwendet, der insbesondere beim Anwenden der Hashfunktion mit dem digitalen Schlüssel verknüpft wird. Als Hashschlüssel wird hier eine zufällig gewählte Zeichenfolge bezeichnet, die bei der Berechnung des Hashwerts, d.h. dem Anwenden der Hashfunktion zusätzlich, eingeht. Im einfachsten Fall wird der Hashwert an den zu prüfenden Schlüssel angefügt und die Hashfunktion auf den zusammengefügten Wert angewandt. Ein solcher Hashschlüssel wird in der Kryptographie auch als „Salt“ bezeichnet. Der Hashschlüssel sollte spezifisch für die Bit-Speicherelemente bzw. gerätespezifische für ein Gerät (Mikrocontroller), in dem diese eingebaut sind, gewählt werden. Ein Angreifer müsste über eine Regenbogentabelle für jeden Hashschlüssel verfügen, um diese Ausgestaltung angreifen zu können.
-
Vorzugsweise umfasst das Verfahren ein Lesen des Referenz-Hashwerts aus einem Speicher. Typischerweise wird der Referenz-Hashwert in einem Speicher des Mikrocontrollers, der die Bit-Speicherelemente umfasst, gespeichert. Bei der Gültigkeitsprüfung eines zu prüfenden Schlüssels wird dieser aus dem Speicher gelesen.
-
Vorzugsweise umfasst das Verfahren ein Empfangen des zu prüfenden Schlüssels. Dies kann insbesondere durch eine Benutzereingabe, eine Datenübertragung u.ä. erfolgen.
-
In einem erfindungsgemäßen Verfahren zur Authentifizierung eines Zugriffs auf einen Mikrocontroller, der Bit-Speicherelemente umfasst, wird die Gültigkeit eines zu prüfenden digitalen Schlüssels mittels eines erfindungsgemäßen Verfahrens zur Gültigkeitsprüfung geprüft und der Zugriff unterbunden, wenn der zu prüfende digitale Schlüssel als ungültig bestimmt wird; wobei gegebenenfalls bevorzugt der Zugriff zugelassen wird, wenn der zu prüfende Schlüssel als gültig bestimmt wird. „Zugriff‟ ist hier in dem Sinn zu verstehen das eine Person, eine andere Recheneinheit (Mikrocontroller), und/oder ein Computerprogramm Ressourcen der Recheneinheit verwenden darf bzw. auf diese zugreifen darf, d.h. Funktionalitäten, Daten, Computerprogramme der Recheneinheit verwendet darf.
-
Ein erfindungsgemäßer Mikrocontroller (bzw. Recheneinheit), z.B. in einem Steuergerät eines Kraftfahrzeugs, umfasst Bit-Speicherelemente, und ist, insbesondere programmtechnisch, dazu eingerichtet, ein erfindungsgemäßes Verfahren durchzuführen.
-
Bevorzugt umfasst der Mikrocontroller ein als Hardwaremodul implementiertes Hashmodul, das dazu eingerichtet ist, das Anwenden der Hashfunktion auf den digitalen Schlüssel durchzuführen, um den Schlüssel-Hashwert zu bestimmen; und ein als Hardwaremodul implementiertes Hashmodul, das dazu eingerichtet ist, das Vergleichen des Schlüssel-Hashwerts mit dem Speicherwert der Bit-Speicherelemente durchzuführen; und weiter bevorzugt ein als Hardwaremodul implementiertes Validierungsmodul, das dazu eingerichtet ist, das Anwenden der Validierungsfunktion auf den Speicherwert der Bit-Speicherelemente durchzuführen, um den Validierungswert zu bestimmen, und das Vergleichen des Validierungswerts mit dem Referenz-Wertebereich oder dem Referenz-Wert durchzuführen. Eine Implementierung als Hardwaremodule führt insbesondere zu einer hohen Ausführungsgeschwindigkeit.
-
Auch die Implementierung eines erfindungsgemäßen Verfahrens in Form eines Computerprogramms oder Computerprogrammprodukts mit Programmcode zur Durchführung aller Verfahrensschritte ist vorteilhaft, da dies besonders geringe Kosten verursacht, insbesondere wenn ein ausführendes Steuergerät noch für weitere Aufgaben genutzt wird und daher ohnehin vorhanden ist. Geeignete Datenträger zur Bereitstellung des Computerprogramms sind insbesondere magnetische, optische und elektrische Speicher, wie z.B. Festplatten, Flash-Speicher, EEPROMs, DVDs u.a.m. Auch ein Download eines Programms über Computernetze (Internet, Intranet usw.) ist möglich.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.
-
Figurenliste
-
- 1 zeigt einen Mikrocontroller mit einer Anordnung von Modulen, wie sie zur Implementierung der Erfindung verwendet werden kann;
- 2 zeigt ein Ablaufdiagramm gemäß einer bevorzugten Ausführungsform der Erfindung.
-
Ausführungsform(en) der Erfindung
-
1 zeigt in einem Blockdiagramm eine Anordnung von Modulen bzw. Elementen, wie sie zur Implementierung der Erfindung verwendet werden kann. Die Module sind beispielsweise in einem Mikrocontroller 2 (bzw. einer Recheneinheit), etwa in einem Steuergerät eines Kraftfahrzeuges oder einer industriellen Maschine, umfasst. Es handelt sich bevorzugt um Hardwaremodule, die ein hohe Ausführungsgeschwindigkeit gewährleisten und, anders als Software weniger leicht manipuliert werden kann. Abweichend davon ist auch die Ausführung einzelner Module als Softwaremodule denkbar.
-
Die Anordnung umfasst ein Bit-Speichermodul 4 mit mehreren, im Einzelnen nicht dargestellten, Bit-Speicherelementen, die als Hardwareelemente implementiert sind. Weiterhin ist ein Speicher 6 vorgesehen, in dem Referenz-Hashwerte gespeichert sind. Der Speicher 6 kann im Mikrocontroller umfasst oder auch über eine geeignete Schnittstelle an diesen angebunden sein. Die Referenz-Hashwerte sind Hashwerte für geheime Schlüssel bzw. Passwörter, deren Kenntnis beispielsweise Voraussetzung dafür ist, auf den Mikrocontroller oder bestimmte ihrer Funktionen Zugriff zu erhalten. Die Referenz-Hashwerte werden durch Anwenden der Hashfunktion auf den richtigen (gültigen) Schlüssel erhalten. Die Anzahl der Bit-Speicherelemente im Bit-Speichermodul 4 sollte größer oder bevorzugt gleich der Anzahl der Bits der Referenz-Hashwerte sein, z.B. 128, 160, 256 usw.
-
Die Anordnung ist so eingerichtet, dass ein Referenz-Hashwert Y aus dem Speicher 6 gelesen und in dem Bit-Speichermodul 4 bzw. dessen Bit-Speicherelementen gespeichert werden kann, d.h. der Referenz-Hashwert Y wird aus dem Speicher 6 in das Bit-Speichermodul 4 geladen. Dabei wird jeweils ein Bit des Referenz-Hashwerts in einem Bit-Speicherelement gespeichert.
-
In der Anordnung ist ein Hashmodul 8 vorgesehen, das dazu eingerichtet ist, zu einem zu prüfenden bzw. vom Hashmodul empfangenen Schlüssel x einen Hashwert y = h(x) durch Anwenden einer Hashfunktion h auf den Schlüssel x zu berechnen. Die Hashfunktion h ist dieselbe, mit der der Referenz-Hashwert berechnet wurde.
-
Bevorzugt ist auch ein Hashschlüsselmodul 10 vorgesehen, das einen Hashschlüssel K bereitstellt, mit dem die Hashfunktion durch Verknüpfen mit diesem modifiziert wird. Beispielsweise durch Aneinanderfügen des Hashschlüssels K und des zu prüfenden Schlüssels x vor Anwenden der Hashfunktion; der Hashwert y ist dann gegeben als y = h(Kllx). Der Hashschlüssel K ist zweckmäßigerweise spezifisch für das Bit-Speichermodul 4 bzw. für den Mikrocontroller, in der das Bit-Speichermodul eingeschlossen ist, es ist sozusagen ein gerätespezifischer Schlüssel. Das Hashschlüsselmodul kann als Teil des Hashmoduls 8 angesehen werden, so dass im Prinzip eine gerätespezifische Hashfunktion implementiert ist.
-
Weiterhin ist ein Vergleichsmodul 12 vorgesehen, das dazu eingerichtet ist, den vom Hashmodul 8 berechneten Hashwert y mit dem Speicherwert W des Bit-Speichermoduls 4 zu vergleichen. Wenn diese gleich sind, kann (vorbehaltlich insbesondere einer Prüfung eines Validierungswerts) der zu prüfende Schlüssel x als gültig, d.h. als richtiger Schlüssel, angesehen bzw. bestimmt werden; wenn diese nicht gleich sind, wird der zu prüfende Schlüssel x als ungültig, d.h. als falscher Schlüssel, angesehen bzw. bestimmt. Falls also kein Manipulationsversuch des Bit-Speichermoduls vorliegt, d.h. wenn der Speicherwert W des Bit-Speichermoduls gleich dem in dieses geladenen Referenz-Hashwert Y ist, wird der durch das Hashmodul 8 bestimmte Hashwert y mit dem im Speicher 6 gespeicherten Hashwert Y verglichen, wobei bei Gleichheit davon ausgegangen wird, das der Schlüssel gültig ist und bei Ungleichheit bestimmt wird, das der Schlüssel ungültig ist.
-
Falls andererseits ein Manipulationsversuch 14 vorliegt, bei dem versucht wird, durch eine elektrische Spannung und/oder einen elektrischen Strom und/oder ein elektrisches Feld bzw. allgemein durch eine elektromagnetische Störung alle Bit-Speicherelemente oder einzelne Bit-Speicherelemente zu beeinflussen, wird sich der Speicherwert W des Bit-Speichermoduls ändern, wobei beeinflusste Bit-Speicherelemente jeweils in einen anderen, beeinflussten Zustand schalten. Es ist dem Angreifer also nicht möglich, einen Speicherwert W einzustellen, für den er/sie einen Schlüssel kennt, dessen Hashwert gleich dem Speicherwert W ist, da, selbst wenn er/sie den beeinflussten Zustand kennt, der Angreifer im Allgemeinen nicht eine zugehörige Eingabe für die Hashfunktion kennt, d.h. nicht das Urbild kennt. Sollte eine sogenannte Regenbogentabelle für die Hashfunktion bekannt sein, könnte diese durch das optionale Vorsehen eines gerätespezifischen Hashschlüssels K, wie vorstehend beschrieben, unbrauchbar gemacht werden Gleichzeitig wird durch das Anwenden der Hashfunktion die Möglichkeit unterbunden, dass der Angreifer bei Kenntnis des beeinflussten Zustands diesen selbst als Eingabe für das Vergleichsmodul verwendet.
-
Vorzugsweise umfasst die Anordnung ein Validierungsmodul 16, das dazu eingerichtet ist, für den Speicherwert W des Bit-Speichermoduls 4 einen Validierungswert zu bestimmen, z.B. das Hamming-Gewicht oder ein Prüfwert (Check-Summe) des Speicherwerts W, und anhand des Validierungswerts die Validität des Speicherwerts W zu prüfen. Nur wenn der Validierungswert eine vorgegebene Bedingung erfüllt, nämlich, dass der Validierungswert z.B. in einem vorbestimmten Referenzwertebereich liegt oder dass der Validierungswert einen bestimmten Referenzwert t aufweist, wird von einer Gültigkeit des Schlüssels ausgegangen. Andernfalls wird der Schlüssel als ungültig bestimmt, da von einer Manipulation der Bit-Speicherelemente und damit des Speicherwerts W ausgegangen wird. Diese Validierung durch das Validierungsmodul 16 kann vor, parallel oder nach dem Vergleich durch das Vergleichsmodul 12 erfolgen. Das Validierungsmodul 16 kann auch Teil des Vergleichsmoduls 12 sein.
-
Das Bit-Speichermodul 4 bzw. die Bit-Speicherelemente und auch der Speicher 6 sind als Hardwaremodule implementiert. Die weiteren Module, das sind das Hashmodul 8, das Vergleichsmodul 12 und, gegebenenfalls, das Hashschlüsselmodul 10 und das Validierungsmodul 16, können unabhängig voneinander jeweils als Hardwaremodul, als Softwaremodul oder als Kombination davon implementiert sein. Softwaremodule können z.B. in Form von Computerprogrammen, die in einem Prozessor der Recheneinheit ausgeführt werden, realisiert sein. Hardwaremodule sind allerdings, wie bereits weiter oben ausgeführt, bevorzugt.
-
2 zeigt ein Ablaufdiagramm gemäß einer bevorzugten Ausführungsform des Verfahrens zur Gültigkeitsprüfung eines zu prüfenden digitalen Schlüssels. Das Verfahren beginnt beispielhaft mit dem optionalen Schritt 100, in dem der zu prüfende Schlüssel x empfangen bzw. bereitgestellt wird, z.B. im Rahmen einer Authentifizierung, z.B. als Benutzereingabe.
-
In Schritt 110 wird durch Anwenden einer Hashfunktion h auf den zu prüfenden Schlüssel x ein Hashwert y = h(x) berechnet. Hier kann zusätzlich ein Hashschlüssel K (Salt) verwendet werden, in diesem Fall kann der Hashschlüssel K mit dem zu prüfenden Schlüssel zusammengefügt werden und darauf die Hashfunktion angewandt werden y = h(Kllx).
-
Im bevorzugten Schritt 130 wird ein Referenz-Hashwert, der durch Anwenden der Hashfunktion auf den korrekten Schlüssel erhalten wurde, aus einem Speicher, in dem er gespeichert ist, gelesen. Alternativ, statt des Lesens aus dem Speicher, könnte der Referenz-Hashwert auch auf andere Weise bereitgestellt werden, z.B. über eine sichere Datenverbindung empfangen werden.
-
In Schritt 140 wird der Referenz-Hashwert Y in den Bit-Speicherelementen gespeichert. Dabei wird jeweils ein Bit des Referenz-Hashwerts in einem Bit-Speicherelement gespeichert. Ein Speicherwert W der Bit-Speicherelemente ist also gleich dem Referenz-Hashwert oder, falls eine elektromagnetische Störung, etwa durch einen Manipulationsversuch, auftritt, aufgrund derer eines oder mehrere der Bit-Speicherelemente in den jeweiligen beeinflussten Zustand schalten, ungleich dem Referenz-Hashwert.
-
Die Schritte 130 (Lesen des Referenz-Hashwerts) und 140 (Speichern des Referenz-Hashwerts in den Bit-Speicherelementen) können teilweise oder ganz auch vor oder parallel zu den Schritten 100 (Empfangen des zu prüfenden Schlüssels) und 110 (Anwenden der Hashfunktion) erfolgen.
-
Im bevorzugten Schritt 150 erfolgt eine Validierung, wobei für den Speicherwert W der Bit-Speicherelemente ein Validierungswert bestimmt wird und geprüft wird, ob dieser in einem vorgegebenen Referenz-Wertebereich liegt oder gleich einem vorgegebenen Referenz-Wert t ist. Der zu prüfende Schlüssel wird als ungültig eingestuft bzw. bestimmt (Schritt 170), wenn der Validierungswert nicht im Referenz-Wertebereich liegt bzw. nicht gleich dem Referenz-Wert ist.
-
In Schritt 160 erfolgt ein Hashwert-Vergleich, in dem der in Schritt 110 berechnete Hashwert y mit dem Speicherwert W der Bit-Speicherelemente verglichen wird, wobei geprüft wird, ob diese gleich sind oder nicht gleich sind. Dies kann auch vor oder parallel zu Schritt 150 (Validierung) erfolgen. Der zu prüfende Schlüssel wird als ungültig eingestuft bzw. bestimmt (Schritt 170), wenn der Hashwert nicht gleich dem Speicherwert ist.
-
In Schritt 180 wird, falls der zu prüfende Schlüssel in Schritt 160 und gegebenenfalls in Schritt 150 nicht als ungültig eingestuft wurde, bestimmt, dass der zu prüfende Schlüssel gültig ist.