-
Gebiet der Erfindung
-
Die Erfindung betrifft ein Schlüsselgenerierungsverfahren, das Teil eines Authentisierungsverfahrens und Schlüsseleinigungsverfahrens zwischen einem Client und einem Terminal ist. Das Authentisierungsverfahren und Schlüsseleinigungsverfahren ist insbesondere im PACE-Protokoll zur Authentisierung und zum Aufbau einer verschlüsselten Kommunikation zwischen einem maschinenlesbaren Reisedokument mit Chip und einem Terminal anwendbar, mit dem maschinenlesbaren Reisedokument als Client.
-
Stand der Technik
-
Das PACE-Protokoll BSI TR-03110 (PACE = Password AuthenticatedConnection Establishment) ist ein Verfahren zur Authentisierung und Schlüsseleinigung zwischen dem Chip eines maschinenlesbaren Reisedokuments (Client) und einem Terminal, das Zugriff auf den Chip hat, unter Verwendung eines Passworts, das im Client zugriffsgesichert gespeichert ist, und das am Terminal zu Beginn des PACE-Protokolls einzugeben ist.
-
BSI-TR-03111 beschreibt eine Umsetzung des PACE-Protokolls in elliptische Kurven Kryptographie. Diese Umsetzung in elliptische Kurven Kryptographie ist gebildet durch eine Folge von Berechnungen. Jede Berechnung ist als Kombination von ein oder mehreren Operationen gebildet. Als Operationen sind beispielsweise Punktadditionen + auf einer elliptischen Kurve, Punktmultiplikationen • auf der elliptischen Kurve, modulare Multiplikationen • , modulare Divisionen /, modulare Additionen + oder/und modulare Subtraktionen - vorgesehen. In der Folge von Berechnungen berechnet jede Berechnung ein Ergebnis. Ebenso berechnet jede Operation innerhalb einer Berechnung ein Ergebnis.
-
Das PACE-Verfahren umfasst folgende Schritte, die in 1 anhand eines Beispiels eines Elliptische-Kurven-basierten PACE-Verfahrens veranschaulicht sind. 1 und 2 enthalten teilweise sprachlichen Text, und teilweise Pseudo-Programmcode-Teile wie z.B. „if <Bedingung> then <Folge>“ um eine entsprechende Aktion, z.B. Prüfen des Zutreffens einer Bedingung und Feststellen oder Veranlassen einer Folge, einer Prozessoreinrichtung anzudeuten.
- 1. Generierung und Übertragung der Nonce. Schritt 1.1: Der Chip im Client (Reisedokument) generiert eine Zufallszahl (Nonce) s, die geheim gehalten wird, und verschlüsselt sie mit dem intern im Client gespeicherten Passwort PIN als Schlüssel zu einer verschlüsselten Zufallszahl (Nonce) s'. Schritt 1.2:
- Der Client sendet die verschlüsselte Zufallszahl s' an das Terminal. Am Terminal gibt ein Nutzer (User) das Passwort PIN_user ein. Schritt 1.3: das Terminal nimmt die vom Nutzer eingegebene Zufallszahl PIN_user entgegen. Schritt 1.4: das Terminal entschlüsselt die empfangene verschlüsselte Zufallszahl s' mit dem vom Nutzer eingegebenen Passwort PIN_user und erhält eine Zahl st, die mit s übereinstimmt, falls der Benutzer das korrekte Passwort (PIN = PIN_user) eingegeben hat.
- 2. Erste ECDH Schlüsselgenerierung und Berechnung eines neuen Erzeugers. Schritt 2.1: Der Chip und das Terminal erzeugen jeweils ein asymmetrisches Schlüsselpaar [kc, Pc] bzw. [kt, Pt] umfassend einen privaten Schlüssel kc bzw. kt und einen öffentlichen Schlüssel Pc bzw. Pt; Schritt 2.2: Client und Terminal senden sich gegenseitig jeweils den öffentlichen Schlüssel zu; Schritte 2.3-2.4: Client und Terminal bilden die Zufallszahl s bzw. st mithilfe einer Mapping-Funktion, hier generisches Mapping, auf einen Erzeuger Gc' bzw. Gt' der verwendeten mathematischen Gruppe ab, hier einer elliptische Kurve. Das Mapping ist dabei im Wesentlichen eine Abfolge von Operationen - Punktmultiplikationen und Punktadditionen - auf der elliptischen Kurve. Falls der Benutzer das richtige Passwort (PIN = PIN_user) eingegeben hat, so stimmt Gc' mit Gt' überein.
- 3. Zweite ECDH Schlüsselgenerierung. Der Chip und das Terminal führen eine ECDH- - Elliptische Kurven-Diffie-Hellman- - Schlüsselgenerierung durch. Schritte 3.1-3.2: Der Chip und das Terminal erzeugen in der ECDH-Schlüsselgenerierung jeweils ein zweites asymmetrisches Schlüsselpaar [kc', Pc'] bzw. [kt', Pt'] umfassend einen privaten Schlüssel kc' bzw. kt' und einen öffentlichen Schlüssel Pc' bzw. Pt' basierend auf den in 2 berechneten Erzeugern Gc' bzw. Gt'.
-
Im PACE-Protokoll erfolgen im Anschluss an die Schlüsselgenerierung ( 1: 3.2) Schlüsselableitungsschritte und Schlüsselaustauschschritte (1: 3.3, ähnlich Schritt 2.2 und 2.3 von 1) zwischen Client und Terminal, bis schließlich der Client und das Terminal ein gemeinsames Geheimnis (shared secret) abgeleitet haben, das zur Authentisierung und Verschlüsselung der Kommunikation zwischen Client und Terminal verwendet wird. Diese der Schlüsselgenerierung nachfolgenden weiteren Schritte werden hier nicht weiter betrachtet und können im Zusammenhang mit der erfindungsgemäßen Schlüsselgenerierung wie aus dem PACE-Protokoll bekannt durchgeführt werden.
-
Genauer wird in Schritt 2.1 beim Client ein Schlüsselpaar [kc, Pc] abgeleitet mit folgenden Schlüsseln. Privater Schlüssel kc des Client; dieser ist eine mittels einer Chip-internen Funktion Generate_secret_key() erzeugte Zufallszahl. Öffentlicher Schlüssel Pc des Client; dieser ist mittels einer Chip-internen Funktion Generate_public_key(G; kc) abgeleitet gemäß Pc = kc•G, durch Punktmultiplikation • des privaten Schlüssels kc des Client mit dem Generatorpunkt G der elliptischen Kurve. Weiter wird in Schritt 2.1 beim Terminal ein Schlüsselpaar [kt, Pt] abgeleitet mit folgenden Schlüsseln. Privater Schlüssel kt des Terminals; dieser ist eine mittels einer Terminal-internen Funktion Generate_secret_key() erzeugte Zufallszahl. Öffentlicher Schlüssel Pt des Terminals; dieser ist mittels einer Terminal-internen Funktion Generate_public_key(G; kt) abgeleitet gemäß Pt = Generate_public_key(G; kt) = kt•G, durch Punktmultiplikation • des privaten Terminal-Schlüssels kt mit dem Generatorpunkt G der elliptischen Kurve.
-
Beim in Schritten 2.3-2.4 dargestellten generischen Mapping wird in Schritt 2.3 im Client ein Hilfspunkt Hc auf der elliptischen Kurve berechnet gemäß Hc = kc•Pt, und im Terminal ein Hilfspunkt Ht auf der elliptischen Kurve berechnet gemäß Ht = kt•Pc. In Schritt 2.4 wird im Client ein gemappter Generatorpunkt Gc' abgeleitet gemäß Gc' = s•G + Hc, und im Terminal ein gemappter Generatorpunkt Gt' abgeleitet gemäß Gt' = st•G + Ht. Bei korrekter Ausführung des Protokolls gilt Ht = Hc unabhängig von dem vom Nutzer eingegebenen Passwort PIN_user.
-
Im PACE-Protokoll werden sogenannte öffentliche Parameter verwendet. Unter öffentlichen Parametern werden Parameter verstanden, die zu Beginn des Protokolls sowohl dem Client als auch dem Terminal bekannt sind. Parameter sind beispielsweise Kurvenparameter der elliptischen Kurve. Wir benutzen im Folgenden den Begriff der öffentlichen Werte, durch welchen die öffentlichen Parameter als auch alle Werte, die das Terminal ohne Wissen der PIN selbst generieren oder berechnen (= bilden) kann (und daher natürlich selbst kennt), bezeichnet sind. Zu den öffentlichen Werten zählt z.B. auch der Hilfspunkt Ht, sowie der private Terminal-Schlüssel kt. Daneben gibt e nicht-öffentliche Werte, worunter Werte verstanden werden, die dem Terminal nicht bekannt sind, und wozu insbesondere der erste private Client-Schlüssel kc, der zweite private Client-Schlüssel kc' zählen.
-
In Seitenkanalangriffen werden Seitenkanalinformationen einer eine Berechnung ausführenden Prozessoreinrichtung ausgewertet, um darin Charakteristika zu finden, welche die in der Berechnung verwendeten Daten widerspiegeln. Seitenkanalinformationen können beispielsweise der Stromverbrauch der Prozessoreinrichtung sein, oder die von ihr während der Ausführung der Berechnung austretende elektromagnetische Abstrahlung. Die Berechnung kann beispielsweise eine kryptographische Berechnung sein. Daten können beispielsweise Eingangsdaten, geheime Schlüssel, Zwischenwerte und Ausgangsdaten der Berechnung sein.
-
Wie aus 1 der obigen Darstellung ersichtlich ist, wird in den Rechenschritten 2.4 und 3.2 jeweils eine Punktmultiplikation auf der verwendeten elliptischen Kurve durchgeführt, in welcher die Nonce s bzw. der Punkt Gc' in ungeschützter Form verarbeitet wird. Dies führt dazu, dass Seitenkanalinformationen wie Stromprofil oder elektromagnetische Abstrahlung der Prozessoreinrichtung, in welcher die Berechnung erfolgt, Charakteristika aufweisen können, die für den Wert der Nonce s bzw. des Punktes Gc' charakteristisch sind.
-
Durch bekannte Seitenkanalangriffe wie Simple Power Analysis SPA oder Differential Power Analysis DPA könnte die Nonce s ausgespäht werden, der aber geheim zu bleiben hat. Ergebnisse von Berechnungen und Ergebnisse von Operationen können in Seitenkanalangriffen Information liefern, die ein Angreifern ausnutzen kann.
-
Zusammenfassung der Erfindung
-
Der Erfindung liegt die Aufgabe zu Grunde, ein Verfahren zur Schlüsselgenerierung zu schaffen, das einen verbesserten Schutz gegen Seitenkanalangriffe aufweist.
-
Die Aufgabe wird gelöst durch ein Verfahren zur Schlüsselgenerierung nach Anspruch 1 oder 2. Das Verfahren zur Schlüsselgenerierung ist vorteilhaft anwendbar in einem Verfahren zur Schlüsseleinigung und Authentisierung . Vorteilhafte Ausgestaltungen der Erfindung sind in den abhängigen Ansprüchen angegeben.
-
Das erfindungsgemäße Verfahren zur Schlüsselgenerierung nach Anspruch 1 und 2 ist in einer Client-Prozessoreinrichtung eingerichtet. Das Verfahren ist eingerichtet, einen zweiten öffentlichen Client-Schlüssel Pc' des Client zu erzeugen.
-
Das Verfahren zur Schlüsselgenerierung umfasst die in der Client-Prozessoreinrichtung durchgeführten Schritte:
- (1.1) Erzeugen einer Nonce s;
- (2.1) Erzeugen eines ersten asymmetrischen Schlüsselpaars [kc, Pc] des Client, umfassend einen ersten öffentlichen Client-Schlüssel Pc und einen ersten privaten Client-Schlüssel kc, wobei der erste öffentliche Client-Schlüssel Pc gebildet wird als Ergebnis der Punktmultiplikation Pc = kc • G des privaten Client-Schlüssels kc mit dem Generatorpunkt G der elliptischen Kurve;
- (2.2) Empfangen, von einem Terminal, eines ersten öffentlichen Terminal-Schlüssels Pt, der Teil des ersten asymmetrischen Schlüsselpaares des Terminals ist, das den ersten öffentlichen Terminal-Schlüssel Pt und den ersten privaten Terminal-Schlüssel kt umfasst;
- (3.1), (3.2) Erzeugen eines zweiten asymmetrischen Schlüsselpaars [kc', Pc'] des Client, umfassend den zweiten öffentlichen Client-Schlüssel Pc' und einen zweiten privaten Client-Schlüssel kc';
-
Das Verfahren gemäß einer ersten Alternative der Erfindung zeichnet sich dadurch aus, dass der öffentliche Schlüssel Pc' durch eine Berechnung, oder Folge von Berechnungen, gebildet wird, welche keine Operation enthält, deren Ergebnis ausschließlich von der Nonce s und mindestens einem öffentlichen Wert abhängt.
-
Das Verfahren gemäß einer zweiten Alternative der Erfindung zeichnet sich dadurch aus, dass der öffentliche Schlüssel Pc' durch eine Berechnung, oder Folge von Berechnungen, gebildet wird, in welcher in jede Operation, in welche die Nonce s eingeht, mindestens ein nicht-öffentlicher Wert eingeht, insbesondere der erste private Client-Schlüssel kc oder der zweite private Client-Schlüssel kc'.
-
Die Schritte (1.1), (2.1), (2.2) und (3.1) werden im Wesentlichen wie im in 1 dargestellten herkömmlichen Verfahren zur Schlüsselgenerierung durchgeführt. Die herkömmlichen Schritte (2.3), (2.4) entfallen beim Client.
-
Im herkömmlichen Schritt (2.4) wird eine Punktmultiplikation s•G des Generatorpunkts G mit der in Klartext vorliegender Nonce s durchgeführt, so dass in die Berechnung nur zwei Eingangswerte Generatorpunkt G und Nonce s eingehen.
-
Der Generatorpunkt G und die öffentlichen Schlüssel, d.h. der erste und zweite öffentliche Terminal-Schlüssel und der erste und zweite öffentliche Client-Schlüssel, sind öffentliche Parameter, die einem Angreifer bekannt sind. Daher ist in der Operation s•G nur die Nonce s unbekannt. Sowohl die Operation s•G als auch das Ergebnis der Operation s•G kann einem Angreifer Seitenkanalinformation liefern, die es ermöglichen können, auf die geheime Nonce s zu schließen. Daher sind insbesondere Berechnungen, in die zusätzlich zu einem geheimen Wert nur öffentliche Parameter eingehen, anfällig für Seitenkanalangriffe. Die Punktmultiplikation s·G im herkömmlichen Schritt (2.4) ist daher anfällig für Seitenkanalangriffe.
-
Erfindungsgemäß werden Operationen vermieden, in die lediglich die Nonce s und ein öffentlicher Wert bzw. die Nonce s und mehrere öffentliche Werte eingehen. Vielmehr geht in jede Operation mindestens ein Wert ein, der weder die Nonce s noch ein öffentlicher Wert ist.
-
Hierdurch sind Seitenkanalabstrahlungen der Nonce s durch die zusätzlichen Seitenkanalabstrahlungen des Werts oder der Werte, die weder die Nonce s noch ein öffentlicher Wert sind, verwischt, wodurch Seitenkanalangriffe stark erschwert oder gänzlich verhindert sind.
-
Daher ist gemäß Anspruch 1 ein Verfahren zur Schlüsselgenerierung geschaffen, das einen verbesserten Schutz gegen Seitenkanalangriffe, insbesondere den weiter oben beschriebenen Angriff, aufweist.
-
Beispielsweise kann in (E3.2*) der zweite öffentliche Client-Schlüssel Pc' gebildet werden als Ergebnis einer Berechnung, worin der Generatorpunkt G, die Nonce s und der zweite private Client-Schlüssel kc' in einer gemeinsamen Operation verarbeitet werden. Dann ist in der Operation zusätzlich der zweite private Client-Schlüssel kc' enthalten, so dass Seitenkanalabstrahlungen der Operation verwischt werden.
-
Hierdurch sind Seitenkanalabstrahlungen der Nonce s durch die zusätzlichen Seitenkanalabstrahlungen des zweiten privaten Client-Schlüssel kc' verwischt, wodurch wodurch Seitenkanalangriffe stark erschwert oder gänzlich verhindert sind.
-
Eine weitere Verfahrensvariante nutzt anstelle der Nonce eine maskierte Nonce und deren Maske oder Masken. Eine Maskierung des Nonce s ist bei derzeitigen Verfahren zur Schlüsselgenerierung nicht vorgesehen, kann aber in künftigen Verfahren gewünscht sein, um die Sicherheit gegen Seitenkanalangriffe weiter zu erhöhen.
-
Gemäß einer vorteilhaften Weiterbildung umfasst das Verfahren zur Schlüsselgenerierung in Schritt (1.1) weiter:
- (E1.1*) Erzeugen und Bereitstellen, oder nur Bereitstellen (ohne internes Berechnen im Client, d.h. z.B. externes Berechnen und sicheres Übertragen in den Client), einer maskierten Nonce sm und eines zur maskierten Nonce sm zugehörigen Maskierungswertes m (oder mehrerer zugehöriger Maskierungswerte).
-
Gemäß manchen Ausführungsformen wird, falls die maskierte Nonce s
m z.B. additiv maskiert ist mit s = (s
m + m) mod n und
mod n im Falle von k Maskierungswerten, n die Gruppenordnung der elliptischen Kurve, im Schritt (E3.2*) die maskierte Nonce s
m zusammen mit der Maske (Masken) verwendet. Der zweite öffentliche Client-Schlüssel P
c' wird dabei gebildet als das Ergebnis einer Kombination von Operationen, wie in den entsprechenden Unteransprüchen angegeben.
-
Ein erfindungsgemäßes Verfahren zur Schlüsseleinigung und Authentisierung zwischen einem Client und einem Terminal umfasst, zusätzlich zu den Schritten des oben angegebenen Verfahrens zur Schlüsselgenerierung im Client, noch weitere Schritte im Client, Schritte eines Verfahrens zur Schlüsselgenerierung im Terminal, sowie Schritte, in denen das Terminal Daten an den Client sendet oder vom Client empfängt. Hierbei ist Schritten, die im oder durch den Client erfolgen, ein (C) vorangestellt, und Schritten, die im oder durch das Terminal erfolgen ein (T) vorangestellt, nachfolgenden Schritten, die nach der Schlüsselgenerierung folgen, ist ein (AUTH) vorangestellt. Im Einzelnen sind im Verfahren zur Schlüsseleinigung und Authentisierung die folgenden Schritte umfasst:
- (C) (1.1) Im Client, Verschlüsseln der Nonce s, (wobei ggf. der Input der Verschlüsselung die maskierte Nonce und die Maske(n) sind), mit einem im Client gespeicherten Passwort (PIN), so dass eine verschlüsselte Nonce s' = Enc(s; PIN) (oder ggf. Enc'(sm, m; PIN), wobei Enc(s; PIN) = Enc'(sm, m; PIN) gilt, das heißt die Verschlüsselungsfunktion Enc' und die Maske m sind aufeinander abgestimmt, so dass das Ergebnis s' so wie ohne Maskierung erzeugt wird) erzeugt wird; das Passwort ist bevorzugt zugriffsgesichert gespeichert, so dass es die Prozessoreinrichtung des Client aufrufen und in Berechnungen verwenden kann, dass aber ein Auslesen des Passworts aus dem Client heraus nicht möglich ist;
- (C) (1.2) Übermitteln der verschlüsselten Nonce s' vom Client an das Terminal;
- (C) Im Client, Ausführen eines Verfahrens zur Schlüsselgenerierung wie oben beschrieben, so dass ein zweiter öffentlicher Client-Schlüssel Pc' des Client abgeleitet wird;
- (C) (2.2) Im Verlauf des Verfahrens zur Schlüsselgenerierung im Client, Übermitteln des dabei erzeugten ersten öffentlichen Client-Schlüssels Pc an das Terminal;
- (T) (1.3) Im Terminal, Entgegennehmen eines Passworts PIN_user, das von einem Nutzer an dem Terminal eingegeben worden ist;
- (T) (1.4) Im Terminal, Empfangen der vom Client gesendeten verschlüsselten Nonce s' und Entschlüsseln der verschlüsselten Nonce s' mit dem vom Nutzer eingegebenen Passwort, so dass eine Terminal-Nonce st = Dec(s,' PINuser) abgeleitet wird; Bemerkung: war das vom Nutzer am Terminal eingegebene Passwort PIN_user gleich dem richtigen Passwort PIN des Client, dann ist auch die Terminal-Nonce st gleich der ursprünglichen Nonce s;
- (T) Im Terminal, Durchführen eines Terminal-Verfahrens zur Schlüsselgenerierung, umfassend die Schritte:
- (T) (2.1) Im Terminal, Erzeugen des ersten asymmetrischen Schlüsselpaars [kt, Pt] des Terminals, umfassend den ersten öffentlichen Terminal-Schlüssel Pt und einen ersten privaten Terminal-Schlüssel kt, wobei der erste öffentliche Terminal-Schlüssel Pt gebildet wird als Ergebnis der Punktmultiplikation Pt = kt • G des ersten privaten Terminal-Schlüssels kt mit dem Generatorpunkt G der elliptischen Kurve;
- (T) (2.2) Im Terminal, Empfangen, vom Client, des ersten öffentlichen Client-Schlüssels Pc;
- (T) (3.1), (E3.2*) Im Terminal, Erzeugen eines zweiten asymmetrischen Schlüsselpaars [kt', Pt'] des Terminals, umfassend einen zweiten öffentlichen Terminal-Schlüssel Pt' und einen zweiten privaten Terminal-Schlüssel kt', wobei der zweite öffentliche Terminal-Schlüssel Pt' gebildet wird als Ergebnis der Punktmultiplikation Pt' = kt' • Gt' des ersten privaten Terminal-Schlüssels kt' mit dem Erzeuger Gt' der elliptischen Kurve;
(AUTH) Verwendung des zweiten öffentlichen Client-Schlüssels Pc' und des zweiten öffentlichen Terminal-Schlüssels Pt' in einem Schlüsseleinigungs- und Authentisierungs-Protokoll zwischen dem Client und dem Terminal, beispielsweise im PACE-Protokoll.
-
Figurenliste
-
Im Folgenden wird die Erfindung an Hand von Ausführungsbeispielen und unter Bezugnahme auf die Zeichnung näher erläutert, in der zeigen:
- 1 Auszüge aus einem beispielhaften herkömmlichen PACE-Protokoll umfassend ein Elliptische Kurven Diffie-Hellman Verfahren zur Schlüsselgenerierung;
- 2 Auszüge aus einem beispielhaften erfindungsgemäß abgewandelten PACE-Protokoll umfassend ein Verfahren zur Schlüsselgenerierung, gemäß einer Ausführungsform der Erfindung, das auf Elementen des Verfahrens aus 1 aufsetzt.
-
Detaillierte Beschreibung von Ausführungsbeispielen
-
1 zeigt Auszüge aus einem beispielhaften herkömmlichen PACE-Protokoll umfassend ein Elliptische Kurven Diffie-Hellman Verfahren zur Schlüsselgenerierung, das bereits eingangs beschrieben wurde.
-
2 zeigt Auszüge aus einem beispielhaften erfindungsgemäß abgewandelten PACE-Protokoll umfassend ein Verfahren zur Schlüsselgenerierung, gemäß einer Ausführungsform der Erfindung, das auf Elementen des Verfahrens aus 1 aufsetzt.
-
In einer bereits verwirklichten, noch unveröffentlichten Implementierung wurde das PACE-Protokoll entsprechend der in Tabelle 1 beschriebenen Schritte implementiert und eine Mult-Add-Funktion, wie in 2.4 beschrieben, bereitgestellt. Alle anderen benötigten Funktionen entsprechen denen, welche auch für andere ECC Implementierungen benötigt werden. Die zugrunde liegende Gruppe ist eine elliptische Kurve mit Generator-Punkt G, der Primzahlordnung hat. In 1 und 2 werden Integer-Variablen mit kleinen Buchstaben und Punkte auf der elliptischen Kurve mit großen Buchstaben bezeichnet.
-
Der Unterschied des erfindungsgemäßen Verfahrens aus 2 gegenüber dem herkömmlichen Verfahren 1 besteht im Wesentlichen in den im Client ausgeführten Schritten (2.3), (2.4), die im erfindungsgemäßen Verfahren entfallen, und in dem im Client ausgeführten Schritt (E3.2*), der gegenüber dem herkömmlichen Verfahren verändert ist, und in welchem die entfallenen Schritte (2.3), (2.4) aufgehen.
-
Gemäß der Erfindung wird der zweite öffentliche Client Schlüssel berechnet gemäß einer Funktion Pc' = Generate_public_key_with_mapping(G, Pt; sm, m, kc, kc') = (kc'·s)•G + (kc'·kc)•Pt.
-
Gemäß der in 2 dargestellten Ausführungsform der Erfindung wird das Schlüsseleinigungs- und Authentisierungsverfahren zwischen dem Client und dem Terminal wie folgt ausgeführt. Die Reihenfolge der Schritte erfolgt soweit durch den Verfahrensverlauf erforderlich, in der angegebenen Reihenfolge. Soweit eine Reihenfolge nicht durch das Verfahren festgelegt ist, kann die Reihenfolge der Durchführung der Schritte auch von der Reihenfolge, in der die Schritte angeführt sind, abweichen. Als Nonce kann eine maskierte Nonce sm verwendet werden, wie in 2 als Schritt E1.1* gezeigt. Alternativ kann als Nonce eine unmaskierte Nonce s verwendet werden, gemäß Schritt 1.1 von 1, wie in 2 durch den Verweis auf Schritt 1.1 von 1 angedeutet ist.
-
Schritt 1.1 im Client erfolgt entweder ohne Maskierung der Nonce (1.1 wie in 1) oder mit Maskierung der Nonce (E1.1* gemäß 2):
- (1.1) Ohne Maskierung der Nonce:
- (C) (1.1) Im Client, Erzeugen einer Nonce s;
- (C) (1.1) Im Client, Verschlüsseln der Nonce s, mit einem im Client gespeicherten Passwort (PIN), so dass eine verschlüsselter Nonce s' = Enc(s; PIN) erzeugt wird;
- (C) (E1.1*) Mit Maskierung der Nonce:
- (C) (E1.1*) Im Client, Erzeugen einer Maske m durch die Funktion m = Gene-rate_Mask();
- (C) (E1.1*) Im Client, Erzeugen einer maskierten Nonce sm durch die Funktion sm = Generate_masked_Nonce(m);
- (C) (E1.1*) Im Client, Verschlüsseln der Nonce sm mit der Maske m und dem im Client abgespeicherten Passwort PIN durch die Funktion s' = Enc(sm, m; PIN), so dass die verschlüsselte Nonce s' erzeugt wird.
-
In beiden Fällen, nicht-maskierte und maskierte Nonce, wird das Verfahren wie folgt weitergeführt:
- (C) (1.2) Übermitteln der verschlüsselten Nonce s' vom Client an das Terminal;
- (T) (1.3) Im Terminal, Entgegennehmen eines Passworts PIN_user, das von einem Nutzer an dem Terminal eingegeben worden ist;
- (T) (1.4) Im Terminal, Empfangen der vom Client gesendeten verschlüsselten Nonce s' und Entschlüsseln der verschlüsselten Nonce s' mit dem vom Nutzer eingegebenen Passwort so dass eine Terminal-Nonce st = Dec(s,' PINuser) abgeleitet wird;
- (C) (2.1) Im Client, Erzeugen eines ersten asymmetrischen Schlüsselpaars [kc, Pc] des Client, umfassend einen ersten öffentlichen Client-Schlüssel Pc und einen ersten privaten Client-Schlüssel kc, wobei der erste öffentliche Client-Schlüssel Pc gebildet wird als Ergebnis der Punktmultiplikation Pc = kc • G des ersten privaten Client-Schlüssels kc mit dem Generatorpunkt G der elliptischen Kurve; der erste private Client-Schlüssel kc ist eine Zufallszahl, die im Client erzeugt wird;
- (T) (2.1) Im Terminal, Erzeugen eines ersten asymmetrischen Schlüsselpaars [kt, Pt] des Terminals, umfassend einen ersten öffentlichen Terminal-Schlüssel Pt und einen ersten privaten Terminal-Schlüssel kt, wobei der erste öffentliche Terminal-Schlüssel Pt gebildet wird als Ergebnis der Punktmultiplikation Pt = kt • G des ersten privaten Terminal-Schlüssels kt mit dem Generatorpunkt G der elliptischen Kurve; der erste private Terminal-Schlüssel kt ist bevorzugt eine Zufallszahl, die bevorzugt im Terminal erzeugt wird;
- (C) (2.2) Übermitteln des ersten öffentlichen Client-Schlüssels Pc vom Client an das Terminal;
- (T) (2.2) Übermitteln des ersten öffentlichen Terminal-Schlüssels Pt vom Terminal an den Client;
- (C) (2.2) Im Client, Empfangen, von dem Terminal, des ersten öffentlichen Terminal-Schlüssels Pt;
- (T) (2.2) Im Terminal, Empfangen, von dem Client, des ersten öffentlichen Client-Schlüssels Pc;
- (T) (E2.3*) Im Terminal, Erzeugen eines abgeleiteten Punktes Ht auf der elliptischen Kurve durch Punktmultiplikation Ht = kt • Pc des vom Client empfangenen ersten öffentlichen Client-Schlüssels Pc mit dem ersten privaten Terminal-Schlüssel kt;
- (T) (E2.4*) Im Terminal, Ableiten eines abgeleiteten Generatorpunkts Gt' auf der elliptischen Kurve durch Punktmultiplikation der Terminal-Nonce st mit dem Generatorpunkt G und Punktaddition des dabei erzeugten Punkts mit dem abgeleiteten Punkt Ht, gemäß Gt' = st • G + Ht;
- (T) (3.1) Im Terminal, Erzeugen des zweiten privaten Terminal-Schlüssels kt'; (T) (E3.2*) Im Terminal, Ableiten des zweiten öffentlichen Terminal-Schlüssels Pt' durch Punktmultiplikation Pt' = kt' • Gt' des abgeleiteten Generatorpunkts Gt' mit dem zweiten privaten Terminal-Schlüssel kt'.
- (C) (3.1) Im Client, Erzeugen eines zweiten asymmetrischen Schlüsselpaars [kc', Pc'] des Client, umfassend einen zweiten öffentlichen Client-Schlüssel Pc' und einen zweiten privaten Client-Schlüssel kc'; der zweite private Client-Schlüssel kc' ist eine Zufallszahl, die im Client erzeugt wird;
- (C) (E3.2*) Dabei wird der zweite öffentliche Client-Schlüssel Pc' gebildet als Ergebnis der Punktoperation Pc'= (kc'·s)•G + (kc'·kc)•Pt; hierbei werden zwei Ergebnisse von zwei Punktmultiplikationen (kc'·s)•G und (kc'·kc)•Pt erzeugt, einmal durch Punktmultiplikation des Produkts aus dem zweiten privaten Client-Schlüssel kc' und der Client Nonce s (die wahlweise in maskierter Form vorliegen kann) mit dem Generatorpunkt G, und einmal durch Punktmultiplikation des Produkts aus dem zweiten privaten Client-Schlüssel kc' und dem ersten privaten Client-Schlüssel kc mit dem ersten öffentlichen Terminal-Schlüssel Pt; die zwei Ergebnisse werden durch eine Punktaddition kombiniert, so dass schließlich der zweite öffentliche Schlüssel Pc' des Client abgeleitet wird;
- (AUTH) Verwendung des zweiten öffentlichen Client-Schlüssels Pc' und des zweiten öffentlichen Terminal-Schlüssels Pt' in einem Authentisierungs- und Schlüsseleinigungs-Protokoll zwischen dem Client und dem Terminal, beispielsweise im PACE-Protokoll.