Zum Hauptinhalt springen

5.1.3 Authentication Using an Asymmetric Key (Authentifizierung mit einem asymmetrischen Schlüssel)

5.1.3 Authentication Using an Asymmetric Key (Authentifizierung mit einem asymmetrischen Schlüssel)

Diese Variante erweitert den Basismechanismus, indem sie dem Empfänger ermöglicht zu authentifizieren, dass der Sender einen gegebenen privaten KEM-Schlüssel besaß. Dies liegt daran, dass AuthDecap(enc, skR, pkS) nur dann das korrekte gemeinsame KEM-Geheimnis erzeugt, wenn der gekapselte Wert enc durch AuthEncap(pkR, skS) erzeugt wurde, wobei skS der private Schlüssel ist, der pkS entspricht. Mit anderen Worten, höchstens zwei Entitäten (genau zwei im Fall von DHKEM) hätten dieses Geheimnis erzeugen können, also wenn der Empfänger höchstens eine ist, dann ist der Sender mit überwältigender Wahrscheinlichkeit die andere.

Der Hauptunterschied zum Basisfall besteht darin, dass die Aufrufe von Encap() und Decap() durch Aufrufe von AuthEncap() und AuthDecap() ersetzt werden, die den öffentlichen Senderschlüssel zu ihrer internen Kontextzeichenfolge hinzufügen. Die Funktionsparameter pkR und pkS sind öffentliche Schlüssel, und enc ist ein gekapseltes gemeinsames KEM-Geheimnis.

Offensichtlich kann diese Variante nur mit einem KEM verwendet werden, das die Prozeduren AuthEncap() und AuthDecap() bereitstellt.

Dieser Mechanismus authentifiziert nur das Schlüsselpaar des Senders, keine andere Kennung. Wenn eine Anwendung HPKE-Chiffretexte oder exportierte Geheimnisse an eine andere Identität für den Sender binden möchte (z.B. eine E-Mail-Adresse oder einen Domainnamen), dann sollte diese Kennung im info-Parameter enthalten sein, um Probleme mit falscher Identitätsbindung zu vermeiden [IMB].

def SetupAuthS(pkR, info, skS):
shared_secret, enc = AuthEncap(pkR, skS)
return enc, KeyScheduleS(mode_auth, shared_secret, info,
default_psk, default_psk_id)

def SetupAuthR(enc, skR, info, pkS):
shared_secret = AuthDecap(enc, skR, pkS)
return KeyScheduleR(mode_auth, shared_secret, info,
default_psk, default_psk_id)