7.1.2. SerializePrivateKey and DeserializePrivateKey (Serialisierung und Deserialisierung privater Schlüssel)
7.1.2. SerializePrivateKey and DeserializePrivateKey (Serialisierung und Deserialisierung privater Schlüssel)
Gemäß [SECG] sind private Schlüssel für P-256, P-384 und P-521 Feldelemente im Skalarfeld der verwendeten Kurve. Für diesen Abschnitt und für Abschnitt 7.1.3 wird angenommen, dass Implementierer von ECDH über diese Kurven eine ganzzahlige Darstellung privater Schlüssel verwenden, die mit der OS2IP()-Funktion kompatibel ist.
Für P-256, P-384 und P-521 führt die SerializePrivateKey()-Funktion des KEM die Field-Element-to-Octet-String-Konvertierung gemäß [SECG] durch. Wenn der private Schlüssel eine ganze Zahl außerhalb des Bereichs [0, order-1] ist, wobei order die Ordnung der verwendeten Kurve ist, MUSS der private Schlüssel auf seinen Repräsentanten in [0, order-1] reduziert werden, bevor er serialisiert wird. DeserializePrivateKey() führt die Octet-String-to-Field-Element-Konvertierung gemäß [SECG] durch.
Für X25519 und X448 sind private Schlüssel identisch mit ihrer Byte-String-Darstellung, sodass wenig Verarbeitung erforderlich ist. Die SerializePrivateKey()-Funktion MUSS ihre Ausgabe clampen und die DeserializePrivateKey()-Funktion MUSS ihre Eingabe clampen, wobei clamping sich auf die bitweisen Operationen bezieht, die auf k in den decodeScalar25519()- und decodeScalar448()-Funktionen durchgeführt werden, die in Abschnitt 5 von [RFC7748] definiert sind.
Um ungültige Schlüssel frühzeitig zu erkennen, SOLLTEN Implementierer von DHKEMs prüfen, dass deserialisierte private Schlüssel nicht äquivalent zu 0 (mod order) sind, wobei order die Ordnung der DH-Gruppe ist. Beachten Sie, dass diese Eigenschaft für X25519- und X448-Gruppen trivialerweise wahr ist, da geklammerte Werte niemals 0 (mod order) sein können.