5.1.5 Key Generation (Schlüsselerzeugung)
5.1.5 Key Generation (Schlüsselerzeugung)
Der private Schlüssel besteht aus 32 Oktetten (256 Bits, entsprechend b) kryptographisch sicherer Zufallsdaten. Siehe [RFC4086] zur Diskussion von Zufälligkeit.
Der 32-Byte-öffentliche Schlüssel wird durch folgende Schritte erzeugt.
-
Hashe den 32-Byte-Privatschlüssel mit SHA-512 und speichere den Digest in einem 64-Oktett großen Puffer h. Nur die unteren 32 Bytes werden zur Erzeugung des öffentlichen Schlüssels verwendet.
-
Beschneide (prune) den Puffer: Die niedrigsten drei Bits des ersten Oktetts werden gelöscht, das höchstwertige Bit des letzten Oktetts wird gelöscht, und das zweithöchste Bit des letzten Oktetts wird gesetzt.
-
Interpretiere den Puffer als Little-Endian-Ganzzahl und bilde den geheimen Skalar s. Führe eine feste-Basis-Skalarmultiplikation [s]B aus.
-
Der öffentliche Schlüssel A ist die Kodierung des Punkts [s]B. Kodiere zuerst die y-Koordinate (im Bereich 0 <= y < p) als Little-Endian-Zeichenkette aus 32 Oktetten. Das höchstwertige Bit des letzten Oktetts ist stets null. Um die Kodierung des Punkts [s]B zu bilden, kopiere das niedrigstwertige Bit der x-Koordinate in das höchstwertige Bit des letzten Oktetts. Das Ergebnis ist der öffentliche Schlüssel.