Zum Hauptinhalt springen

5.2.5 Key Generation (Schlüsselerzeugung)

5.2.5 Key Generation (Schlüsselerzeugung)

Der private Schlüssel besteht aus 57 Oktetten (456 Bits, entsprechend b) kryptographisch sicherer Zufallsdaten. Siehe [RFC4086] zur Diskussion von Zufälligkeit.

Der 57-Byte-öffentliche Schlüssel wird durch folgende Schritte erzeugt:

  1. Den 57-Byte-Privatschlüssel mit SHAKE256(x, 114) hashen und den Digest in einen 114-Oktett großen Puffer h speichern. Nur die unteren 57 Bytes werden zur Erzeugung des öffentlichen Schlüssels verwendet.

  2. Den Puffer beschneiden: Die zwei niederwertigsten Bits des ersten Oktetts werden gelöscht, alle acht Bits des letzten Oktetts werden gelöscht, und das höchstwertige Bit des vorletzten Oktetts wird gesetzt.

  3. Den Puffer als Little-Endian-Ganzzahl interpretieren und damit den geheimen Skalar s bilden. Bekannte-Basis-Punkt-Skalarmultiplikation [s]B ausführen.

  4. Der öffentliche Schlüssel A ist die Kodierung des Punktes [s]B. Zuerst die y-Koordinate (im Bereich 0 <= y < p) als Little-Endian-Zeichenkette aus 57 Oktetten kodieren. Das höchstwertige Bit des letzten Oktetts ist stets Null. Um die Kodierung des Punktes [s]B zu bilden, das niederwertigste Bit der x-Koordinate in das höchstwertige Bit des letzten Oktetts kopieren. Das Ergebnis ist der öffentliche Schlüssel.