-
Die vorliegende Offenbarung betrifft Kommunikationsanordnungen und Verfahren zum Generieren eines Kryptografieschlüssels.
-
Kleine elektronische Einrichtungen, die für drahtlose Kommunikation ausgestattet sind, wie etwa Chipkarten und RFID-Markierungen, erfordern bei bestimmten Anwendungen möglicherweise einen Kryptografieschlüssel, zum Beispiel für sichere Kommunikation mit einem Endgerät oder zur Autorisierung. Da die Chipfläche und die Rechenressourcen solcher elektronischer Einrichtungen begrenzt sind, sind Verfahrensweisen zum sicheren Ausrüsten einer solchen elektronischen Einrichtung mit einem Kryptografieschlüssel bei geringer Rechenbelastung für die elektronische Einrichtung wünschenswert.
-
Aus der
US 2012/0072737 A1 ist Einrichtung mit einem Verarbeitungselement bekannt, das eine einrichtungsspezifische Zahl mit einer Zufallszahl maskiert. Die so gebildete maskierte einrichtungsspezifische Zahl soll innerhalb eines von einem Fehlerkorrekturcode liegenden korrigierbaren Bereichs liegen. Diese Zahl wird mit Hilfe einer Fehlerkorrektur auf ein Codewort abgebildet. Durch die Maskierung mit der Zufallszahl werden Rückschlüsse aus diesem Codewort durch Seitenkanalattacken erschwert. Schließlich wird in dieser bekannten Einrichtung die Wirkung der Zufallszahl aus dem Codewort entfernt und ein weiteres Codewort erhalten, um daraus einen Kryptografieschlüssel zu erzeugen.
-
Der vorliegenden Erfindung liegt demgegenüber die Aufgabe zugrunde, insbesondere kleine elektronische Einrichtungen mit kleiner Chipfläche trotz geringer eigener Rechenbelastung mit einem Kryptografieschlüssel entsprechend sicher auszurüsten.
-
Gemäß einer Ausführungsform der Erfindung wird eine Kommunikationsanordnung bereitgestellt, die eine erste Kommunikationseinrichtung und eine zweite Kommunikationseinrichtung enthält, wobei die erste Kommunikationseinrichtung ein Verarbeitungselement enthält, das konfiguriert ist, eine einrichtungsspezifische Zahl aus einer Komponente der ersten Kommunikationseinrichtung auszulesen, die einrichtungsspezifische Zahl mittels einer Zufallszahl zu maskieren und die maskierte einrichtungsspezifische Zahl an die zweite Kommunikationseinrichtung zu übermitteln; wobei die zweite Kommunikationseinrichtung ein Abbildungselement enthält, das konfiguriert ist, die maskierte einrichtungsspezifische Zahl auf ein Codewort eines Codes abzubilden und das Codewort drahtlos an die erste Kommunikationseinrichtung zu übermitteln, und wobei die erste Kommunikationseinrichtung weiter einen Schlüsselgenerator enthält, der konfiguriert ist, das Codewort mittels der Zufallszahl zu demaskieren und einen Kryptografieschlüssel basierend auf dem demaskierten Codewort zu bestimmen.
-
Somit wird die Erzeugung des Codeworts von der ersten Kommunikationseinrichtung (z. B. einer Chipkarte und RFID-Markierung) auf die andere drahtlos verbundene zweite Kommunikationseinrichtung (z. B. Endgerät) ausgelagert. Dies erlaubt die Einsparung von Ressourcen auf der ersten Kommunikationseinrichtung (z. B. Chipfläche und Rechenressourcen). Ermöglicht wird diese Auslagerung durch das Maskieren der einrichtungsspezifischen Zahl, da dies verhindert dass ein Angreifer die einrichtungsspezifische Zahl bei der drahtlosen Übertragung abhört.
-
Eine solche Aufteilung auf eine erste und zweite Einrichtung, die das Maskieren der einrichtungsspezifischen Zahl ermöglicht, wird durch die
US 2012/0072737 A1 nicht nahegelegt, da dort das Maskieren nicht zu dem Zweck erfolgt, die Codeworterzeugung auszulagern, sondern dazu, Seitenkanalattacken zu vermeiden (siehe Absatz [0114] in
US 2012/0072737 A1 ).
-
Die
US 2013/0322619 A1 beschreibt unter anderem eine Kommunikationsanordnung, bei welcher eine einrichtungsspezifische Zahl (unique ID) einer ersten Kommunikationseinrichtung (z. B. IC Karte) mit einer Zufallszahl maskiert wird. Diese Zahl wird an eine zweite Kommunikationseinrichtung (z. B. einem Lese-/Schreibgerät) übertragen (siehe Absätze [0092] bis [0099]). Sowohl die erste als auch die zweite Kommunikationseinrichtung bilden damit jeweils einen Zugriffsschlüssel für die gegenseitige Authentifizierung (siehe Absatz [0127]).
-
Weiter wird ein Verfahren zum Generieren eines Kryptografieschlüssels gemäß der obigen Kommunikationsanordnung bereitgestellt.
-
In den Zeichnungen beziehen sich gleiche Bezugszeichen in den unterschiedlichen Ansichten allgemein je auf dieselben Teile. Die Zeichnungen sind nicht zwingend maßstabgetreu, vielmehr wird der Schwerpunkt allgemein auf die Veranschaulichung der Prinzipien der Erfindung gelegt. In der folgenden Beschreibung werden verschiedene Aspekte mit Bezug auf die folgenden Zeichnungen beschrieben, in denen:
-
1 eine Kommunikationsanordnung zeigt.
-
2 die Einstellung für eine PUF-basierte Generierung eines Schlüssels veranschaulicht.
-
3 die Rekonstruktion eines Schlüssels basierend auf einem PUF-Wert und Hilfsdaten veranschaulicht.
-
4 den Datenfluss für eine Einstellung für eine PUF-basierte Generierung eines Schlüssels zeigt.
-
5 den Datenfluss für eine Rekonstruktion eines PUF-basiert generierten Schlüssels zeigt.
-
6 eine Kommunikationsanordnung zeigt.
-
7 ein Flussdiagramm, das ein Verfahren zum Generieren eines Kryptografieschlüssels veranschaulicht, zeigt.
-
8 den Datenfluss für eine Einstellung für eine PUF-basierte Generierung eines Schlüssels zeigt.
-
9 den Datenfluss für eine Rekonstruktion eines PUF-basiert generierten Schlüssels zeigt.
-
Die folgende detaillierte Beschreibung bezieht sich auf die beiliegenden Zeichnungen, die zur Veranschaulichung konkrete Details und Aspekte dieser Offenbarung zeigen, gemäß denen sich die Erfindung praktisch umsetzen lässt. Es können noch andere Aspekte verwendet und strukturelle, logische und elektrische Änderungen vorgenommen werden, ohne vom Schutzbereich der Erfindung abzuweichen. Die verschiedenen Aspekte dieser Offenbarung schließen einander nicht zwangsläufig aus, da einige Aspekte dieser Offenbarung mit einem oder mehreren anderen Aspekten dieser Offenbarung kombiniert werden können, um neue Aspekte auszubilden.
-
Physically Unclonable Functions (PUFs) sind anwendbar für kryptografische Anwendungen und in Fällen, in denen Daten oder Zahlen benötigt werden, die von Einrichtung zu Einrichtung (z. B. von Chipkarte zu Chipkarte oder RFID-Markierung zu RFID-Markierung) unterschiedlich, jedoch für eine bestimmte Einrichtung zuverlässig reproduzierbar sein sollen. Eine Zahl, die auf einem PUF-Wert einer Einrichtung basiert, d. h. auf einem von einer PUF einer Einrichtung generierten Wert basiert, kann zum Beispiel als eindeutige Kennung (ID) der Einrichtung benutzt werden oder kann auch als geheimer Schlüssel (oder als Basis für einen geheimen Schlüssel) für eine kryptografische Anwendung benutzt werden. Bei einer solchen Anwendung arbeitet die Einrichtung in der Regel zusammen mit einem System, wie in 1 veranschaulicht.
-
1 zeigt eine Kommunikationsanordnung 100.
-
Die Kommunikationsanordnung enthält eine Einrichtung 101 (z. B. eine Chipkarte oder eine RFID-Markierung) und ein System 102 (das z. B. eine oder mehrere andere Einrichtungen enthält).
-
Das System 102 kommuniziert mit der Einrichtung, zum Beispiel drahtlos, wie durch den Pfeil 103 angegeben. Zum Beispiel ist die Einrichtung 101 am Anfang einer Kommunikation bezüglich des Systems 102 autorisiert. Diese kann in einem einfachen Fall aus der Übermittlung einer (eindeutigen) Kennung der Einrichtung 101 bestehen. Für ein System mit höheren Sicherheitsanforderungen enthält die Autorisierung möglicherweise weiter ein Kryptografieprotokoll zum Nachweisen der Authentizität der Einrichtung. Das System kann zum Beispiel ein einzelnes Endgerät oder eine Anordnung von Endgeräten und Leseeinrichtungen sein, die zum Beispiel möglicherweise verbunden sind (z. B. über eine Internetverbindung). Im Folgenden ist unter einem „System” stets eine dieser Alternativen zu verstehen.
-
Während es im Fall der Nutzung eines PUF-Werts als Kennung einer Einrichtung in der Regel nur wichtig ist, dass der PUF-Wert zuverlässig reproduziert werden kann und dass er eindeutig ist (d. h. von einer anderen Einrichtung nicht reproduziert werden kann), ist es im Fall der Nutzung eines PUF-Werts zum Generieren eines Kryptografieschlüssels wichtig, dass der PUF-Wert nicht von einem unautorisierten Dritten erraten werden kann (wobei es vom Gesamtszenario der kryptografischen Anwendung abhängt, wer ein unautorisierter Dritter ist).
-
Folgende Eigenschaften lassen sich mittels PUFs realisieren:
- (1) Zufälligkeit,
- (2) zuverlässige Reproduzierbarkeit,
- (3) Geheimhaltung.
-
Aus elektrotechnischer Sicht kann eine PUF als Schaltung angesehen werden, die auf eine Anregung (z. B. Einschalten oder die Zuführung von Eingabedaten) mit einer Antwort (z. B. einem oder mehreren Bits) reagiert. Eine wichtige Eigenschaft besteht darin, dass eine Instanz einer solchen Schaltung auf die gleiche Anregung mit hoher Wahrscheinlichkeit (d. h. fast ständig) mit der gleichen Antwort reagiert, weil darauf die Eigenschaft (2) oben beruht. Für die Eigenschaft (1) soll die Antwort nur von der Instanz der Schaltung abhängen. Idealerweise ist eine Instanz der Schaltung mit einer Wahrscheinlichkeit von 50% eine Schaltung, die auf eine bestimmte Anregung stets mit 1 reagiert, und mit einer Wahrscheinlichkeit von 50% eine Schaltung, die auf die Anregung stets mit 0 reagiert.
-
Für die Eigenschaft (3) ist es in der Regel wünschenswert, dass die Antwort der Schaltung nicht aktiv in die Schaltung programmiert werden muss. Zum Beispiel könnte ein mit einem Zufallsbit programmiertes NVM (nichtflüchtige Speicherzelle) genutzt werden, um den Eigenschaften (1) und (2) gerecht zu werden, doch das Bit wäre zumindest dem Programmierer bekannt. Im Gegensatz dazu zeichnet sich eine PUF, d. h. eine Schaltung, die eine PUF realisiert (implementiert), in der Regel dadurch aus, dass ihre Antwort (z. B. die Bitantwort 0 oder 1) von geringen Prozessvariationen ihres Fertigungsprozesses abhängt, die nicht aktiv gesteuert werden können. Ein Beispiel für eine PUF ist eine SRAM-Zelle auf einem Chip, die symmetrisch gestaltet ist (d. h. auch die zu ihrer Fertigung genutzten Lithografiemasken sind symmetrisch). Dennoch können beim Fertigungsprozess geringe Asymmetrien auftreten, die zum Beispiel möglicherweise von der jeweiligen Belichtung, den Ätzprozessen, den Dotierprozessen etc. abhängen. Die Instanz der SRAM-Zelle (oder allgemein der Schaltung) ist mithin leicht asymmetrisch, in der Regel jedoch in nicht sichtbarer Weise. Wenn die SRAM-Zelle eingeschaltet ist, weist sie mithin eine Vorspannung auf einen ihrer möglichen Zustände 0 oder 1 auf und übernimmt einen dieser Zustände mit höherer Wahrscheinlichkeit als den anderen. Zum Beispiel kann ein Feld von PUF-Zellen, d. h. von Zellen, die mit einem Bit antworten, welches im Folgenden auch als PUF-Feld bezeichnet wird, z. B. ein Feld von 128 SRAM-Zellen, auf einem Chip zum Generieren eines Kryptografieschlüssels, z. B. gemäß AES (Advanced Encryption Standard), in einer Weise genutzt werden, die den Eigenschaften (1) bis (3) ideal gerecht wird, da für zwei solche Chips, die gleich gestaltet sind (selbst zwei Chips, die nebeneinander auf demselben Wafer oder an der gleichen Stelle auf zwei unterschiedlichen Wafern gefertigt wurden), eine hohe Wahrscheinlichkeit besteht, dass ihre PUF-Felder auf ein Einschalten mit unterschiedlichen 128-Bit-Werten antworten.
-
Jedoch wird eine SRAM-Zelle bei der praktischen Anwendung in der Regel eher symmetrisch gefertigt, sodass die Vorspannung auf einen der Anfangszustände (0 oder 1) in der Regel relativ schwach ist, sodass eine solche Zelle beim Einschalten mit ziemlich hoher Wahrscheinlichkeit beide Zustände annimmt. Das Verhalten einer PUF-Zelle (z. B. einer SRAM-Zelle) lässt sich durch eine Wahrscheinlichkeit p beschreiben, welche die Wahrscheinlichkeit angibt, dass die PUF-Zelle mit einer 0 antwortet. In einem PUF-Feld sind in der Regel Werte wie p < 0,01 oder p > 0,99 gewünscht. Jedoch ist dies bei der praktischen Anwendung in der Regel schwer zu realisieren.
-
Deshalb kann ein durch ein PUF-Feld generierter PUF-Wert durch Hilfsdaten ergänzt werden. Diese Hilfsdaten werden generiert, wenn eine Einrichtung mittels eines PUF-Felds einen geheimen (oder eine Kennung) generiert. Dieser Prozess wird zum Beispiel nach der Fertigung des Chips oder zur Zeit der Personalisierung des Chips ausgeführt und wird im Folgenden als Einstellung bezeichnet. Bei der Einstellung werden durch ein PUF-Feld, das n (oder mehr) Zellen Z1, ... Zn enthält, n Bits B = (b1, ..., bn) generiert. Zum Beispiel ist das Bit bi die Antwort der Zelle Zi. Alternativ wird die Zelle Zi mehrmals angeregt und bi ist das Bit, mit dem die Zelle Zi öfter geantwortet hat. Die n Bits können auch auf andere Weisen vom PUF-Feld generiert werden. Der Prozess des Generierens der n Bits durch ein PUF-Feld wird im Folgenden als Leseprozess bezeichnet.
-
Wenn der Leseprozess in einer späteren Phase wiederholt wird, haben einige der bi mit nicht vernachlässigbarer Wahrscheinlichkeit einen anderen Wert als beim anfänglichen Leseprozess bei der Einstellung. Um damit umzugehen, können Hilfsdaten H = (h1, ..., hr) (wobei die hi z. B. Bits sind) bei der Einstellung generiert werden, sodass Folgendes erfüllt ist:
- (a) ein Wert K = (k1, ..., km) (wobei die ki z. B. Bits sind) ist ableitbar von den bei der Einstellung generierten Daten B und H. Dieser Wert wird zum Beispiel als Kennung oder geheimer Wert, als Kryptografieschlüssel oder Basis für einen Kryptografieschlüssel genutzt.
- (b) Die Abbildung (B, H) -> K von (a) ist stabil gegenüber einer Änderung von zum Beispiel höchstens d Bits von B (d. h. K ändert sich nicht, wenn d Bits von B geändert werden). Dafür werden d und entsprechend r an die physikalischen Parameter der Hardware des Chips und den Leseprozess angepasst.
- (c) H sind im Prinzip öffentliche Daten. Deshalb soll das Bekanntsein von H keine oder wenige Informationen über B und K liefern.
-
Punkt (c) ist zum Beispiel wichtig, falls K ein geheimer Schlüssel ist. Punkt (c) ermöglicht die Speicherung der Hilfsdaten außerhalb der Einrichtung (und ihre Übermittlung an die Einrichtung, wenn sie benötigt werden). Im Zusammenhang mit (c) können weitere Anforderungen gegeben sein, etwa dass Experimentieren mit H (durch Ändern von H, Eingeben des geänderten H in die Einrichtung und Überwachen der Reaktion der Einrichtung) nur eine Ableitung von höchstens wenigen Informationen über B oder K ermöglichen darf. Um die obigen Anforderungen (zunächst (a) und (b)) zu erfüllen, können Codes benutzt werden. Ein Beispiel für die Nutzung von Codes zum Generieren eines Schlüssels basierend auf einem PUF-Wert wird im Folgenden mit Bezug auf die 2 und 3 erläutert.
-
2 veranschaulicht die Einstellung für eine PUF-basierte Generierung eines Schlüssels.
-
Ein Wert für den Schlüssel K ∊ MK := F2 m (d. h. GF(2m)) wird bei 201 generiert, z. B. unabhängig von der PUF, z. B. mittels eines Zufallszahlengenerators (RNG). Bei 202 wird dieser Wert in ein Codewort C = c(K) mittels einer Codierungsabbildung c: MK = F2 m → MC ⊂ F2 n =: MD umgewandelt, wobei m < n. Hier bezeichnet MK die Menge aller möglichen Schlüssel, MC ist die Menge von Codes im Raum MD. Bei 203 wird das PUF-Feld ausgelesen und ein PUF-Wert B ∊ MB bestimmt, wobei MB die Menge der möglichen Werte für B ist. Zum Beispiel MC ⊂ MB = MD.
-
Bei 204 werden die Hilfsdaten als das bitweise XOR von C und B bestimmt, d. h. H := C ⊕ B ∊ MH = MB.
-
3 veranschaulicht die Rekonstruktion eines Schlüssels basierend auf einem PUF-Wert und Hilfsdaten.
-
Bei 301 wird das PUF-Feld ausgelesen, um einen Wert B' ∊ MB zu bestimmen. Dieser Wert ist in der Regel B ähnlich, d. h. differiert von B nur um eine geringe Anzahl von Bits.
-
Bei 302 wird der Wert B' XOR-kombiniert, was einen Wert C' = H ⊕ B' = C ⊕ (B' ⊕ B) ergibt. Der Wert C' differiert von C nur um die geringe Anzahl von Bits, um die B' von B differiert. Da C das Codewort eines Codes ist, kann C aus C' unter der Annahme rekonstruiert werden, dass der Code die Anzahl von Fehlern, die beim Leseprozess (höchstens) vorkommt (d. h. die Anzahl differierender Bits zwischen B und B'), detektieren und korrigieren kann. Somit kann bei 303 der Wert K mittels der Decodierungsabbildung d: MD → MK rekonstruiert werden.
-
Die Rekonstruktion kann in einer Schlüsselbestimmungsabbildung k: MB × MH → MK kombiniert werden.
-
Die Anforderungen (a) und (b) können erfüllt sein, falls der Code MC ⊂ MB = MD hinreichend gut dafür ist, um die Lesefehler von B korrigieren zu können.
-
Ob (c) erfüllt ist, ist nicht offensichtlich und erfordert in der Regel eine tiefer gehende kryptografische Analyse. Für (c) ist es zum Beispiel von Wichtigkeit, dass beide Zufallsquellen, d. h. der Zufallszahlengenerator (für K) und das PUF-Feld, eine hinreichende Entropie generieren. Falls die Entropie des RNG zu gering ist, kann ein Angreifer K direkt und unabhängig von B und H erraten. Falls die Entropie des PUF-Felds zu gering ist, kann der Angreifer B erraten und C und mithin K aus H bestimmen.
-
Ein typisches Anwendungsszenario einer PUF-basierten Generierung eines geheimen Schlüssels wird im Folgenden mit Bezug auf die 4 und 5 beschrieben.
-
4 zeigt den Datenfluss für eine Einstellung für eine PUF-basierte Generierung eines Schlüssels.
-
Der Datenfluss verläuft zwischen einer Einrichtung 401 und einem System 402, wie mit Bezug auf 1 beschrieben.
-
Die Einrichtung 401 (z. B. eine Chipkarte) enthält ein PUF-Feld 403, das einen PUF-Wert liefert. Zu einer Personalisierungszeit (Einstellung) generiert die Einrichtung mittels eines Fuzzy Extractor 404 einen geheimen Wert (Schlüssel) K und Hilfsdaten H basierend auf einer von einem Zufallszahlengenerator 405 gelieferten Zufallszahl und basierend auf dem PUF-Wert (z. B. wie mit Bezug auf 2 beschrieben). Die Hilfsdaten werden bei 407, z. B. zusammen mit einer Kennung der Einrichtung bei 406, falls die Kennung dem System 402 nicht bereits bekannt ist, in irgendeiner Weise exportiert und können systemweit (oder sogar jenseits des Systems) veröffentlicht werden.
-
K wird zum Beispiel über einen sicheren Kanal bei 408 an das System 402 (z. B. ein Endgerät) übermittelt. Alternativ kann die Einrichtung 401 einen öffentlichen Schlüssel K' aus dem geheimen Schlüssel K generieren, der z. B. bezogen ist auf ein Kryptosystem mit öffentlich bekanntem Schlüssel (Public Key Cryptosystem, PKC) wie RSA oder ein Elliptische-Kurven-Verschlüsselungs-/Entschlüsselungsschema, den die Einrichtung 401 bei 408 an das System 402 statt des Schlüssels K übermittelt. Im Fall eines öffentlichen Schlüssels K' kann das System ihn veröffentlichen. Nach der Personalisierung hat das System 402 Zugriff auf die Daten H und K bzw. K'. Andere Alternativen sind möglich, zum Beispiel kann die Einrichtung 401 manche Verschlüsselungen mit K für bestimmte Werte durchführen und die resultierenden verschlüsselten Werte übermitteln. Eine andere Alternative besteht darin, dass die Einrichtung 401 K nur intern nutzt, zum Beispiel in einem Szenario, in dem die Einrichtung 401 einen nichtflüchtigen Speicher aufweist und eine Speicherverschlüsselung unter Nutzung von K ausführt. In diesem Fall lässt sich zum Beispiel realisieren, dass die Einrichtung nur Daten aus ihrem Speicher lesen kann, wenn sie in Kontakt mit dem System 402 ist, indem die Schlüsselrekonstruktion derart implementiert wird, dass die Einrichtung 401 Daten aus dem System 402 benötigt, wie es in 5 veranschaulicht ist.
-
5 zeigt den Datenfluss für eine Rekonstruktion eines PUF-basiert generierten Schlüssels.
-
Der Datenfluss verläuft zwischen einer Einrichtung 501 und einem System 502, die mit der Einrichtung 401 und dem System 402 von 4 korrespondieren.
-
Zum Rekonstruieren des Schlüssels stellt die Einrichtung 501 Kontakt (d. h. Kommunikation) zum System 502 her. Das System 502 hat Zugriff auf die einrichtungsspezifischen Hilfsdaten H (zum Beispiel abhängig von der Kennung der Einrichtung, die sie zum Beispiel bei 505 an das System 502 übermittelt). Bei 506 übermittelt das System 502 die Hilfsdaten H an die Einrichtung 501. Folglich kann die Einrichtung den Schlüssel K mittels des (eventuell leicht veränderten) PUF-Werts aus dem PUF-Feld 503 und dem Fuzzy Extractor 504 rekonstruieren (z. B. wie mit Bezug auf 3 beschrieben). Abhängig davon, welcher Wert K oder K' dem System 502 bekannt ist, kann ein symmetrischer oder ein asymmetrischer Kryptografiealgorithmus/ein symmetrisches oder ein asymmetrisches Kryptografieprotokoll zum sicheren Übermitteln von Daten zwischen der Einrichtung 501 und dem System 502 genutzt werden oder ein Authentifizierungsprotokoll kann zum Nachweisen der Identität der Einrichtung gegenüber dem System 502 bei 507 genutzt werden. Andere Protokolle können basierend auf dem generierten Schlüssel benutzt werden.
-
Die Veröffentlichung der Hilfsdaten H kann zurückgestellt werden, da nur die korrespondierende Einrichtung 401, 501 davon Gebrauch machen kann. Die Einrichtung 401, 501 kann die Hilfsdaten H auch intern speichern, d. h. in einem Langzeitspeicher wie einem EEPROM oder einem Flashspeicher. Jedoch benötigt die Einrichtung 401, 501 dafür ihren eigenen nichtflüchtigen Speicher. Dies ist möglicherweise nicht wünschenswert, da die Kosten der Einrichtung (etwa einer Chipkarte) in der Regel gering gehalten werden sollen.
-
Insgesamt benötigt die Einrichtung 401, 501, die mit einem geheimen, PUF-basierten Schlüssel ausgerüstet werden soll, für die in den 4 und 5 veranschaulichte Verfahrensweise zusätzlich zu den für ihren Normalbetrieb (d. h. ihre Kernfunktionalität) erforderlichen Komponenten ein PUF-Feld, einen Fuzzy Extractor, einen Zufallszahlengenerator und (eventuell zusätzliche) Kommunikationskomponenten (die zum Beispiel die Übermittlung der Hilfsdaten H ermöglichen). Eine Reduzierung der Anzahl von nötigen Komponenten ist in der Regel wünschenswert, um die Kosten der Einrichtung zu reduzieren. Jedoch wird ein PUF-Feld für den Fall benötigt, dass die Einrichtung eine PUF-basierte Generierung eines Schlüssels unterstützen soll. Weiter ist ein Zufallszahlengenerator in der Regel für viele Protokolle sowieso erforderlich. Der Fuzzy Extractor (oder eine ähnliche Komponente) kann jedoch erhebliche Kosten mit sich bringen, z. B. hinsichtlich der nötigen Chipfläche und der Implementierung sowie der Verarbeitungszeit im Fall einer Software-Implementierung.
-
Dementsprechend werden im Folgenden Ausführungsformen beschrieben, die eine Verlagerung des Fuzzy Extractors (oder mindestens von beträchtlichen Teilen seiner Funktionalität, z. B. der Decodierung) zur Seite des Systems ermöglichen, da in der Regel auf der Systemseite hinreichende Rechenressourcen verfügbar sind, die eine Decodierung auch komplexer Codes ermöglichen, und die Decodierung in der Regel die teuerste Funktionalität des Fuzzy Extractors ist.
-
6 zeigt eine Kommunikationsanordnung 600.
-
Die Kommunikationsanordnung 600 enthält eine erste Kommunikationseinrichtung 601 und eine zweite Kommunikationseinrichtung 602.
-
Die erste Kommunikationseinrichtung 601 enthält ein Verarbeitungselement 603, das konfiguriert ist, eine einrichtungsspezifische Zahl aus einer Komponente 604 der ersten Kommunikationseinrichtung 601 auszulesen, die einrichtungsspezifische Zahl mittels der Zufallszahl zu maskieren und die maskierte einrichtungsspezifische Zahl drahtlos an die zweite Kommunikationseinrichtung 602 zu übermitteln.
-
Die zweite Kommunikationseinrichtung 602 enthält ein Abbildungselement 605, das konfiguriert ist, die maskierte einrichtungsspezifische Zahl auf ein Codewort eines Codes abzubilden und das Codewort drahtlos an die erste Kommunikationseinrichtung 601 zu übermitteln.
-
Die erste Kommunikationseinrichtung 601 enthält weiter einen Schlüsselgenerator 606, der konfiguriert ist, das Codewort mittels der Zufallszahl zu demaskieren und einen Kryptografieschlüssel basierend auf dem demaskierten Codewort zu bestimmen.
-
Gemäß einer Ausführungsform wird mit anderen Worten eine Zahl, etwa ein PUF-Wert, aus einer Komponente eines Chips ausgelesen, mit einer Zufallszahl maskiert und an eine andere Einrichtung übermittelt. Die andere Einrichtung bildet die maskierte Zahl auf ein Codewort ab (führt z. B. eine Decodierung durch) und übermittelt das Codewort zurück an die Einrichtung, auf dem basierend die Einrichtung einen Schlüssel bestimmt. Somit lässt sich die Abbildung der maskierten Zahl auf ein Codewort (die z. B. eine Decodierung enthält) so ansehen, als ob sie von der Einrichtung zur anderen Einrichtung verlagert wird, sodass von der Einrichtung keine korrespondierende Verarbeitungskomponente oder korrespondierende Rechenleistung bereitgestellt werden muss. Die Demaskierung kann als umgekehrter Vorgang der Maskierung angesehen werden, mit anderen Worten die Entfernung der Maske. Zum Beispiel ist das Ergebnis der Demaskierung das Codewort, auf das die (unmaskierte) Zahl von der anderen Einrichtung abgebildet worden wäre.
-
Beim mit Bezug auf die 4 und 5 beschriebenen Beispiel wird das geheime rohe B (d. h. der PUF-Wert), um die Decodierungsfunktionalität zur Systemseite hin zu verlagern, gemäß der Verfahrensweise von 6 maskiert, bevor er an die Systemseite übermittelt wird. Dadurch wird verhindert, dass ein Angreifer den PUF-Wert bestimmen kann, indem er den Kommunikationskanal zwischen der Einrichtung 401, 501 und dem System 402, 502 überwacht. Zusätzlich bleibt der Schlüssel K abhängig von der Anwendung, z. B. im PKC-Fall, dem System 402, 502 mithin unbekannt.
-
Die einrichtungsspezifische Zahl ist zum Beispiel eine für die erste Kommunikationseinrichtung spezifische Zahl.
-
Zum Beispiel ist die einrichtungsspezifische Zahl ein PUF-Wert.
-
Dementsprechend implementiert die Komponente zum Beispiel eine PUF.
-
Gemäß einer Ausführungsform umfasst die Abbildung der maskierten einrichtungsspezifischen Zahl auf ein Codewort eines Codes durch das Abbildungselement Kombinieren der maskierten einrichtungsspezifischen Zahl mit Hilfsdaten.
-
Gemäß einer Ausführungsform umfasst die Abbildung der maskierten einrichtungsspezifischen Zahl auf ein Codewort eines Codes durch das Abbildungselement Zentrieren der maskierten einrichtungsspezifischen Zahl mittels Hilfsdaten.
-
Die Hilfsdaten sind zum Beispiel Hilfsdaten, die bei einer anfänglichen Abbildung der maskierten einrichtungsspezifischen Zahl auf ein Codewort des Codes generiert oder gespeichert werden.
-
Gemäß einer Ausführungsform ist das Abbildungselement konfiguriert, bei einer anfänglichen Abbildung der maskierten einrichtungsspezifischen Zahl auf ein Codewort des Codes Hilfsdaten, die eine Differenz zwischen der maskierten einrichtungsspezifischen Zahl und dem Codewort darstellen, zu generieren und zu speichern (z. B. zur Zeit einer Einstellung).
-
Zum Beispiel ist die anfängliche Abbildung der maskierten einrichtungsspezifischen Zahl auf ein Codewort des Codes eine Abbildung einer anfänglichen Version der maskierten einrichtungsspezifischen Zahl, die sich aus einer anfänglichen Auslesung der einrichtungsspezifischen Zahl von der Komponente ergibt, auf ein Codewort des Codes.
-
Gemäß einer Ausführungsform kann die Komponente unterschiedliche Versionen der einrichtungsspezifischen Zahl bei unterschiedlichen Auslesungen liefern.
-
Gemäß einer Ausführungsform umfasst die Abbildung der maskierten einrichtungsspezifischen Zahl auf ein Codewort eines Codes durch das Abbildungselement Decodieren der maskierten einrichtungsspezifischen Zahl gemäß dem Code.
-
Gemäß einer Ausführungsform sind die erste Kommunikationseinrichtung und die zweite Kommunikationseinrichtung konfiguriert, eine sichere Kommunikation unter Nutzung des Kryptografieschlüssels durchzuführen oder einen Authentifizierungsprozess unter Nutzung des Kryptografieschlüssels durchzuführen.
-
Die Zufallszahl ist zum Beispiel möglicherweise ein zufälliges Codewort des Codes.
-
Die Maskierung der einrichtungsspezifischen Zahl mittels der Zufallszahl enthält zum Beispiel möglicherweise Addieren der Zufallszahl zur einrichtungsspezifischen Zahl.
-
Der Code ist zum Beispiel ein linearer Code.
-
Gemäß einer Ausführungsform kommutiert die Abbildung der maskierten einrichtungsspezifischen Zahl auf ein Codewort des Codes mit der Maskierung mittels der Zufallszahl.
-
7 zeigt ein Flussdiagramm 700, das ein Verfahren zum Generieren eines Kryptografieschlüssels veranschaulicht.
-
Bei 701 wird eine einrichtungsspezifische Zahl aus einer Komponente einer ersten Kommunikationseinrichtung ausgelesen.
-
Bei 702 wird die einrichtungsspezifische Zahl mittels der Zufallszahl maskiert.
-
Bei 703 wird die maskierte einrichtungsspezifische Zahl von der ersten Kommunikationseinrichtung an die zweite Kommunikationseinrichtung übermittelt.
-
Bei 704 wird die maskierte einrichtungsspezifische Zahl auf ein Codewort eines Codes abgebildet.
-
Bei 705 wird das Codewort von der zweiten Kommunikationseinrichtung an die erste Kommunikationseinrichtung übermittelt.
-
Bei 706 wird das Codewort mittels der Zufallszahl demaskiert.
-
Bei 707 wird ein Kryptografieschlüssel basierend auf dem demaskierten Codewort bestimmt.
-
Weiter kann eine mit der ersten Kommunikationseinrichtung 601 korrespondierende Kommunikationseinrichtung bereitgestellt werden, die z. B. ein Verarbeitungselement, das konfiguriert ist, eine einrichtungsspezifische Zahl aus einer Komponente der Kommunikationseinrichtung auszulesen und die einrichtungsspezifische Zahl mittels der Zufallszahl zu maskieren, einen Sender, der konfiguriert ist, die maskierte einrichtungsspezifische Zahl an die andere Kommunikationseinrichtung zu übermitteln, einen Empfänger, der konfiguriert ist, ein Codewort von der zweiten Kommunikationseinrichtung zu empfangen, und einen Schlüsselgenerator, der konfiguriert ist, das Codewort mittels der Zufallszahl zu demaskieren und einen Kryptografieschlüssel basierend auf dem demaskierten Codewort zu bestimmen, enthält.
-
Ähnlich kann eine mit der zweiten Kommunikationseinrichtung korrespondierende Kommunikationseinrichtung bereitgestellt werden, die einen Empfänger, der konfiguriert ist, eine maskierte einrichtungsspezifische Zahl von einer anderen Kommunikationseinrichtung zu empfangen, ein Abbildungselement, das konfiguriert ist, die maskierte einrichtungsspezifische Zahl auf ein Codewort eines Codes abzubilden, und einen Sender, der konfiguriert ist, das Codewort an die andere Kommunikationseinrichtung zu übermitteln, enthält.
-
Weiter können ein Verfahren zum Generieren eines Kryptografieschlüssels und ein Verfahren zum Ausstatten einer Kommunikationseinrichtung mit einem Codewort gemäß diesen Kommunikationseinrichtungen bereitgestellt werden.
-
Die Komponenten der Kommunikationseinrichtungen (z. B. das Verarbeitungselement, das Abbildungselement und der Schlüsselgenerator) werden zum Beispiel möglicherweise durch eine oder mehrere Schaltungen implementiert. Unter einer „Schaltung” ist eine beliebige Art einer Logik implementierenden Einheit zu verstehen, die ein Spezialschaltkreis oder ein Prozessor sein kann, der Software ausführt, die in einem Speicher, Firmware oder einer beliebigen Kombination davon gespeichert ist. Somit ist eine „Schaltung” möglicherweise eine festverdrahtete logische Schaltung oder eine programmierbare logische Schaltung wie ein programmierbarer Prozessor, z. B. ein Mikroprozessor. Eine „Schaltung” ist möglicherweise auch ein Prozessor, der Software ausführt, z. B. eine beliebige Art eines Computerprogramms. Unter jeder anderen Art einer Implementierung der jeweiligen Funktionen, die unten detaillierter beschrieben werden, ist ebenfalls eine „Schaltung” zu verstehen.
-
Im Folgenden werden Ausführungsformen detaillierter beschrieben.
-
8 zeigt den Datenfluss für eine Einstellung für eine PUF-basierte Generierung eines Schlüssels.
-
Der Datenfluss verläuft zwischen einer Einrichtung 801 und einem System 802, wie mit Bezug auf 1 beschrieben.
-
Die Einrichtung 801 enthält ein PUF-Feld 803, aus dem ein PUF-Wert B ∊ MB ausgelesen wird. Ein Wert D ∊ MD wird durch ein Verarbeitungselement 804 vom PUF-Wert B abgeleitet. Zum Beispiel MB = MD und D = B, aber es können auch andere Verfahrensweisen genutzt werden.
-
Ein Zufallszahlengenerator 805 liefert eine Zufallszahl R ∊ MR an das Verarbeitungselement 804, das ein Wort (Wert) Drand gemäß einer Abbildung r: MR × MD → MD, (R, D) → Drand generiert.
-
Die Abbildung r hat Merkmale wie unten erörtert. Bei 806 übermittelt die Einrichtung 801 den Wert Drand an das System 802. Das System 802 empfängt Drand ∊ MD und bestimmt ein korrespondierendes Codewort Crand eines Codes MC gemäß j: MD → MC, Drand → Crand.
-
Es sei angemerkt, dass das Wort Drand nicht zwangsläufig ein Codewort in MC sein muss. Zum Beispiel ist das Codewort Crand ∊ MC ⊂ MD das Codewort, das am nächsten an Drand ist. In diesem Fall ist die Abbildung j die Decodierungsabbildung d: MD → MC, die von einem Decoder 807 ausgeführt wird. Jedoch können für j auch andere Abbildungen genutzt werden. Die Abbildung j ist möglicherweise sogar eine zufällige Abbildung.
-
Bei 808 sendet das System 802 das Codewort Crand an die Einrichtung 801 und speichert das Paar (Drand, Crand) als Hilfsdaten (z. B. in einem Speicher 809 des Systems 802). Abhängig vom Typ des Codes können komprimierte Informationen als Hilfsdaten gespeichert werden. Falls der Code zum Beispiel ein linearer Code ist, kann H = Drand ⊕ Crand als Hilfsdaten gespeichert werden.
-
Die Einrichtung 801 wendet dann die Abbildung s an, welche die inverse Abbildung von r auf Crand ist, um ein Codewort C gemäß s: MR × MC → MC, (R, Crand) → C zu generieren.
-
Die Abbildungen r und s sind inverse Abbildungen im folgenden Sinne: die Funktion s ist definiert auf MD, d. h. s: MR × MD → MD und pro R ∊ MR gibt sie vor, dass s(R, –)∘r(R, –): MD → MD → MD die Identitätsabbildung auf MD ist. Sowohl s als auch r bilden MC bijektiv auf MC ab. Weiter gibt sie für r (sowie s) vor, dass rR := r(R, –) Distanzen berücksichtigt, d. h. falls zwei Werte D und D' nur um eine geringe Anzahl von Bits differieren, differieren rR(D) und rR(D') nur um eine (z. B. die gleiche) geringe Anzahl von Bits. Die Bedeutung von „geringe Anzahl von Bits” kann für unterschiedliche Anwendungen unterschiedlich sein. Zum Beispiel erhält rR bei einer Anwendung wie weiter unten beschrieben die Hamming-Distanz aufrecht, d. h. die Hamming-Distanz von D und D' ist die gleiche wie die von rR(D) und rR(D').
-
Das Verarbeitungselement 804 generiert dann das geheime K aus C mittels einer Abbildung k: MC → MK, C → K.
-
Die Abbildung k kann zum Beispiel eine einfache lineare Abbildung, eine Projektion oder die Identitätsfunktion sein. Sie kann auch einhergehen mit kryptografischen Funktionen wie einer Hash-Funktion und anderen. Die Einrichtung 801 kann den Schlüssel K bei 810 an das System 802 übermitteln oder kann einen öffentlichen Schlüssel K' (der mit dem privaten Schlüssel K korrespondiert) generieren und kann ihn für das System 802 öffentlich machen. Die Einrichtung 801 kann dies auch mit den Hilfsdaten H tun, falls das System 802 sie nicht selbst bestimmt hat.
-
9 zeigt den Datenfluss für eine Rekonstruktion eines PUF-basiert generierten Schlüssels.
-
Der Datenfluss verläuft zwischen einer Einrichtung 901 und einem System 902, die mit der Einrichtung 801 und dem System 802 von 8 korrespondieren.
-
Die Rekonstruktion beginnt damit, dass die Einrichtung 901 das PUF-Feld 903 ausliest, um einen PUF-Wert B' ∊ MB zu generieren, von dem erwartet werden kann, dass er um eine geringe Anzahl von Stellen vom PUF-Wert B differiert. Das Verarbeitungselement 904 leitet einen Wert D' ∊ MD vom PUF-Wert B' ab. Zum Beispiel, falls MD = MB, D' = B'. Der Zufallszahlengenerator 905 generiert einen Zufallswert R' ∊ MR und das Verarbeitungselement 904 bestimmt D'rand gemäß r: MR × MD → MD, (R', D') → D'rand und übermittelt ihn bei 906 an das System 902.
-
Das System 902 empfängt D'rand ∊ MD, doch führt ihn nicht direkt dem Decoder 907 zu, sondern zentriert ihn mittels der Hilfsdaten gemäß z: MH × MD → MD, (H, D'rand) → D''rand.
-
Danach führt es D''rand dem Decoder 907 zu, der das nächste Codewort C'rand gemäß d: MD → MC bestimmt.
-
Die zentrale Abbildung z wird so gewählt, dass sie Fehler von Drand bezüglich Crand direkt korrigiert würde direkt korrigiert würden. Konkret hat die Abbildung z folgende drei Eigenschaften:
- (i) zH := z(H, –) bildet Drand auf Crand ab, wobei H = (Drand, Crand), d. h. zH(Drand) = Crand
- (ii) zH kommutiert mit r, d. h. pro R und rR := r(R, –) zH∘rR = rR∘zH:MD → MD. Mit anderen Worten: zH(rR(D)) = rR(zH(D)) und sR(zH(rR(D))) = zH(D), pro R ∊ MR und D ∊ MD.
- (iii) zH berücksichtigt Distanzen, d. h. falls zwei Werte D und D' nur um eine geringe Anzahl von Bits differieren, differieren z(D) und z(D') nur um eine (z. B. die gleiche) geringe Anzahl von Bits. Die Bedeutung von „geringe Anzahl von Bits” kann für unterschiedliche Anwendungen unterschiedlich sein. Zum Beispiel erhält z bei einer Anwendung wie weiter unten beschrieben die Hamming-Distanz aufrecht, d. h. die Hamming-Distanz von D und D' ist die gleiche wie die von z(D) und z(D').
-
Bei 908 übermittelt das System 902 C'rand an die Einrichtung 901 und das Verarbeitungselement 904 bestimmt s(R', C'rand) = C und k(C) = K. Bei 909 kann es dann eine authentifizierungsbasierte oder sichere Kommunikation basierend auf K und/oder K' durchführen.
-
Um zu zeigen, dass die Rekonstruktion wie mit Bezug auf 9 beschrieben funktioniert, wird zuerst angenommen, dass B' = B. Mithin D' = D und D'rand = r(R', D) Drand = r(R, D).
-
Wegen der Eigenschaft (i) von z C = s(R, Crand) = s(R, zH(Drand)) = s(R, zH(r(R, D))) = s(R, r(R, zH(D))) = zH(D), denn s und r sind invers.
-
Somit
(zH(r(R', D)))) = d(r(R', zH(D))) | (wegen der Eigenschaft (ii) von z) |
= d(r(R', C)) | (denn s und r sind invers) |
= r(R', C) | (denn d angewendet auf ein Codewort ist die |
| Identität und r bildet MC identisch auf MC |
| ab.) |
Deshalb
s(R', d(zH(r(R', D))))) = C.
-
Nun soll B' um eine geringe Anzahl von Bits von B differieren. Dann differiert r(R', D') auch um eine geringe Anzahl von Bits von r(R', D). Wegen der Eigenschaft (iii) von z differiert zH(r(R', D')) dann von zH(r(R', D)) ebenfalls um eine geringe Anzahl von Bits. Deshalb bildet die Abbildung d zH(r(R', D')) und zH(r(R', D)) auf dasselbe Codewort ab, sodass das Ergebnis erneut C ist.
-
Im Folgenden wird ein konkretes Beispiel basierend auf einem linearen Code dargelegt. Es wird angenommen, dass MC ⊂ MD ein linearer [n, m, f]-Code ist, MD = F2 n und MC ein m-dimensionaler Teilraum von MD ist. Der Code kann bis zu [f/2] Bitfehler in einem Wort detektieren und korrigieren. Das PUF-Feld 803 generiert einen Wert B der Menge MB = F2 n. Bei diesem Beispiel wird MB = MD gewählt. Die Menge von Zufallszahlen ist definiert als MR := F2 m und die Codierungsabbildung c: MR = F2 m → MC ⊂ F2 n = MD wird benutzt, um eine vom Zufallszahlengenerator 805 gelieferte Zufallszahl R auf ein Codewort c(R) abzubilden, z. B. durch Multiplizieren des mit R korrespondierenden Binärvektors mit der Generatormatrix des Codes.
-
Die Abbildung r ist bei diesem Beispiel definiert als r: MR × MD → MD r(R, D) := c(R) ⊕ D. Als XOR-Kombination mit dem Codewort c(R) erfüllt die Abbildung rR die Anforderung einer bijektiven Abbildung von MC auf MC. Weiter erhält rR die Hamming-Distanz aufrecht. Die inverse Abbildung s ergibt sich einfach durch s = r. Für j wird zum Beispiel die Decodierungsabbildung d: MD → MC gewählt. Alternativ kann eine andere Abbildung genutzt werden, wie etwa eine Zufallsfunktion, die jedes Element D auf ein zufälliges Codewort abbildet.
-
Für z wird bei diesem Beispiel die Abbildung z: MH × MD → MD, ((Drand, Crand), D) → Drand ⊕ Crand ⊕ D benutzt. Die Menge MH ist zum Beispiel definiert als MH = MD × MD und die Hilfsdaten sind (Drand, Crand). Alternativ ist die Menge MH definiert als MH = MD und die Hilfsdaten sind Drand ⊕ Crand, was für die Rekonstruktion hinreichend ist.
-
Es ist ersichtlich, dass z, wenn so definiert, die oben dargelegten Anforderungen (i), (ii) und (iii) erfüllt.
-
Da der PUF-Wert B (oder B') nicht selbst übermittelt, sondern vom Codewort c(R) maskiert wird, wird verhindert, dass ein Angreifer den PUF-Wert herausfinden kann, indem er den Kommunikationskanal zwischen der Einrichtung 801, 901 und dem System 802, 902 abhört. Da die Anzahl der Codewörter im obigen Beispiel 2m beträgt, liegt die Sicherheitsstufe bei maximal m Bits. Ein Angreifer oder das System 802, 902 kann nicht mehr Informationen aus dem Prozess ableiten und besitzt mithin keine Kenntnis von m Bits, da nicht unterschieden werden kann, ob sich ein Bit im von der Einrichtung 801, 901 her übermittelten Wert aus B oder aus B ⊕ c(R) ergibt (wobei eine beständige zufällige Generierung von R angenommen wird). Somit wird eine Entropie von m generiert.
-
Auch wenn konkrete Aspekte beschrieben wurden, versteht es sich für den Fachmann, dass darin verschiedene Änderungen hinsichtlich der Ausbildung und der Details vorgenommen werden können, ohne vom Gedanken und vom Schutzbereich der Aspekte dieser Offenbarung, wie von den beigefügten Ansprüchen definiert, abzuweichen. Der Schutzbereich wird somit von den beigefügten Ansprüchen angegeben und alle Änderungen, die mit dem Sinngehalt der Ansprüche vereinbar sind und in ihrem Äquivalenzbereich liegen, sollen deshalb darin einbezogen sein.