Zum Hauptinhalt springen

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.

  1. 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.

  2. 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.

  3. Interpretiere den Puffer als Little-Endian-Ganzzahl und bilde den geheimen Skalar s. Führe eine feste-Basis-Skalarmultiplikation [s]B aus.

  4. 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.