Zum Hauptinhalt springen

7.2.1. Input Length Restrictions (Eingabelängenbeschränkungen)

7.2.1. Input Length Restrictions (Eingabelängenbeschränkungen)

Dieses Dokument definiert LabeledExtract() und LabeledExpand() basierend auf den oben aufgelisteten KDFs. Diese Funktionen fügen Präfixe zu ihren jeweiligen Eingaben ikm und info hinzu, bevor sie die Extract()- und Expand()-Funktionen des KDF aufrufen. Dies führt zu einer Verringerung der maximalen Eingabelänge, die für die Eingaben psk, psk_id, info, exporter_context, ikm verfügbar ist, d.h. die variablen Längenparameter, die von HPKE-Anwendungen bereitgestellt werden. Die folgende Tabelle listet die maximal zulässigen Längen dieser Felder für die in diesem Dokument definierten KDFs als inklusive Grenzen in Bytes auf:

InputHKDF-SHA256HKDF-SHA384HKDF-SHA512
psk2^61 - 882^125 - 1522^125 - 152
psk_id2^61 - 932^125 - 1572^125 - 157
info2^61 - 912^125 - 1552^125 - 155
exporter_context2^61 - 1202^125 - 2002^125 - 216
ikm (DeriveKeyPair)2^61 - 842^125 - 1482^125 - 148

Tabelle 4: Anwendungseingabegrenzen

Dies zeigt, dass die Grenzen nur geringfügig kleiner als die maximale Eingabelänge der zugrunde liegenden Hash-Funktion sind; diese Grenzen sind groß und werden in praktischen Anwendungen wahrscheinlich nicht erreicht. Zukünftige Spezifikationen, die neue KDFs definieren, MÜSSEN Grenzen für diese variablen Längenparameter angeben.

Die EMPFOHLENE Grenze für diese Werte beträgt 64 Bytes. Dies würde die Interoperabilität mit Implementierungen ermöglichen, die Speicher für diese Eingaben statisch zuweisen, um Speicherzuweisungen zu vermeiden.

Die Werte für psk, psk_id, info und ikm, die Eingaben für LabeledExtract() sind, wurden mit dem folgenden Ausdruck berechnet:

max_size_hash_input - Nb - size_version_label -
size_suite_id - size_input_label

Der Wert für exporter_context, der eine Eingabe für LabeledExpand() ist, wurde mit dem folgenden Ausdruck berechnet:

max_size_hash_input - Nb - Nh - size_version_label -
size_suite_id - size_input_label - 2 - 1

In diesen Gleichungen ist max_size_hash_input die maximale Eingabelänge der zugrunde liegenden Hash-Funktion in Bytes, Nb ist die Blockgröße der zugrunde liegenden Hash-Funktion in Bytes, size_version_label ist die Größe von "HPKE-v1" in Bytes und gleich 7, size_suite_id ist die Größe der suite_id in Bytes und gleich 5 für DHKEM (relevant für ikm) und 10 für den Rest von HPKE (relevant für psk, psk_id, info und exporter_context), und size_input_label ist die Größe in Bytes des Labels, das als Parameter für LabeledExtract() oder LabeledExpand() verwendet wird, wobei das Maximum 13 über alle Labels in diesem Dokument beträgt.