8. Suiten für das Hashing
- Suiten für das Hashing
Dieser Abschnitt führt die empfohlenen Suiten für das Hashing auf standardisierte elliptische Kurven auf.
Eine Hash-to-Curve-Suite legt das Verfahren zum Hashing von Bytestrings auf Punkte einer gegebenen elliptischen Kurvengruppe vollständig fest. Abschnitt 8.1 beschreibt, wie eine Suite zu implementieren ist. Anwendungen, die ein Hashing auf eine elliptische Kurve benötigen, sollten entweder eine bestehende Suite oder eine neue, wie in Abschnitt 8.9 beschrieben spezifizierte Suite verwenden.
Alle Anwendungen, die eine Hash-to-Curve-Suite verwenden, MÜSSEN ein Domänentrennungs-Tag (DST) gemäß den Empfehlungen aus Abschnitt 3.1 wählen. Darüber hinaus MÜSSEN Anwendungen, deren Sicherheit ein Zufallsorakel erfordert, das gleichverteilt zufällige Punkte auf der Zielkurve liefert, eine Suite verwenden, deren Codierungstyp hash_to_curve ist; siehe Abschnitt 3 und den nachfolgenden Text für weitere Informationen.
Eine Hash-to-Curve-Suite umfasst die folgenden Parameter:
-
Suite ID, ein kurzer Name zur Bezeichnung einer gegebenen Suite. Abschnitt 8.10 behandelt die Namenskonventionen für Suite-IDs.
-
Codierungstyp, entweder gleichmäßig (hash_to_curve) oder nicht gleichmäßig (encode_to_curve). Siehe Abschnitt 3 für die Definition dieser Codierungstypen.
-
E, die elliptische Zielkurve über einem Körper F.
-
p, die Charakteristik des Körpers F.
-
m, der Erweiterungsgrad des Körpers F. Ist m > 1, so MUSS die Suite zusätzlich die zur Darstellung der Elemente des Erweiterungskörpers verwendete Polynombasis spezifizieren.
-
k, das von der Suite angestrebte Sicherheitsniveau in Bit. (Siehe Abschnitt 10.8 für eine Erörterung.)
-
L, der Längenparameter für hash_to_field (Abschnitt 5).
-
expand_message, eine der in Abschnitt 5.3 spezifizierten Varianten, samt aller von der spezifizierten Variante benötigten Parameter (beispielsweise H, die zugrunde liegende Hashfunktion).
-
f, eine Abbildungsfunktion aus Abschnitt 6.
-
h_eff, der Skalarparameter für clear_cofactor (Abschnitt 7).
Zusätzlich zu den obigen Parametern kann die Abbildung f weitere Parameter Z, M, rational_map, E' oder iso_map erfordern. Sofern zutreffend, MÜSSEN diese spezifiziert werden.
Die nachstehende Tabelle führt die EMPFOHLENEN Suiten für bestimmte elliptische Kurven auf. Die zugehörigen Parameter sind in den nachfolgenden Unterabschnitten angegeben. Anwendungen, die kryptografische Protokolle instanziieren, deren Sicherheitsanalyse auf einem Zufallsorakel mit gleichmäßiger Punktverteilung beruht, DÜRFEN KEINE nicht gleichmäßige Codierung verwenden. Darüber hinaus SOLLTEN Anwendungen, die eine nicht gleichmäßige Codierung verwenden, die Sicherheitsimplikationen dieser Ungleichmäßigkeit sorgfältig analysieren. Ist unklar, welche Codierung erforderlich ist, SOLLTEN Anwendungen sicherheitshalber eine gleichmäßige Codierung verwenden.
+==============+===================================+=========+
| E | Suiten | Abschn. |
+==============+===================================+=========+
| NIST P-256 | P256_XMD:SHA-256_SSWU_RO_ | 8.2 |
| | P256_XMD:SHA-256_SSWU_NU_ | |
+--------------+-----------------------------------+---------+
| NIST P-384 | P384_XMD:SHA-384_SSWU_RO_ | 8.3 |
| | P384_XMD:SHA-384_SSWU_NU_ | |
+--------------+-----------------------------------+---------+
| NIST P-521 | P521_XMD:SHA-512_SSWU_RO_ | 8.4 |
| | P521_XMD:SHA-512_SSWU_NU_ | |
+--------------+-----------------------------------+---------+
| curve25519 | curve25519_XMD:SHA-512_ELL2_RO_ | 8.5 |
| | curve25519_XMD:SHA-512_ELL2_NU_ | |
+--------------+-----------------------------------+---------+
| edwards25519 | edwards25519_XMD:SHA-512_ELL2_RO_ | 8.5 |
| | edwards25519_XMD:SHA-512_ELL2_NU_ | |
+--------------+-----------------------------------+---------+
| curve448 | curve448_XOF:SHAKE256_ELL2_RO_ | 8.6 |
| | curve448_XOF:SHAKE256_ELL2_NU_ | |
+--------------+-----------------------------------+---------+
| edwards448 | edwards448_XOF:SHAKE256_ELL2_RO_ | 8.6 |
| | edwards448_XOF:SHAKE256_ELL2_NU_ | |
+--------------+-----------------------------------+---------+
| secp256k1 | secp256k1_XMD:SHA-256_SSWU_RO_ | 8.7 |
| | secp256k1_XMD:SHA-256_SSWU_NU_ | |
+--------------+-----------------------------------+---------+
| BLS12-381 G1 | BLS12381G1_XMD:SHA-256_SSWU_RO_ | 8.8 |
| | BLS12381G1_XMD:SHA-256_SSWU_NU_ | |
+--------------+-----------------------------------+---------+
| BLS12-381 G2 | BLS12381G2_XMD:SHA-256_SSWU_RO_ | 8.8 |
| | BLS12381G2_XMD:SHA-256_SSWU_NU_ | |
+--------------+-----------------------------------+---------+
Tabelle 2: Suiten für das Hashing auf elliptische Kurven.
8.1. Implementierung einer Hash-to-Curve-Suite
Eine Hash-to-Curve-Suite erfordert die folgenden Funktionen. Man beachte, dass einige davon die Hilfsfunktionen aus Abschnitt 4 benötigen.
-
Die arithmetischen Operationen des Basiskörpers der elliptischen Zielkurve, beispielsweise Addition, Multiplikation und Quadratwurzel.
-
Die Operationen auf Punkten der elliptischen Zielkurve, beispielsweise Punktaddition und Skalarmultiplikation.
-
Die Funktion hash_to_field; siehe Abschnitt 5. Dies umfasst die expand_message-Variante (Abschnitt 5.3) sowie alle beteiligten Hashfunktionen oder XOFs.
-
Die von der Suite spezifizierte Abbildungsfunktion; siehe den entsprechenden Unterabschnitt von Abschnitt 6.
-
Eine Funktion zur Kofaktor-Beseitigung; siehe Abschnitt 7. Diese kann durch Skalarmultiplikation mit h_eff oder durch eine äquivalente schnellere Methode implementiert werden.
-
Die gewünschte Codierungsfunktion; siehe Abschnitt 3. Dies ist entweder hash_to_curve oder encode_to_curve.
8.2. Suiten für NIST P-256
Dieser Abschnitt definiert die Cipher Suites für die elliptische Kurve NIST P-256 [FIPS186-4].
P256_XMD:SHA-256_SSWU_RO_ ist wie folgt definiert:
-
Codierungstyp: hash_to_curve (Abschnitt 3)
-
E: y^2 = x^3 + A * x + B, wobei
-
A = -3
-
B = 0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e2 7d2604b
-
-
p: 2^256 - 2^224 + 2^192 + 2^96 - 1
-
m: 1
-
k: 128
-
expand_message: expand_message_xmd (Abschnitt 5.3.1)
-
H: SHA-256
-
L: 48
-
f: vereinfachte SWU-Methode (Abschnitt 6.6.2)
-
Z: -10
-
h_eff: 1
P256_XMD:SHA-256_SSWU_NU_ ist identisch mit P256_XMD:SHA-256_SSWU_RO_, mit der Ausnahme, dass der Codierungstyp encode_to_curve (Abschnitt 3) ist.
Ein Beispiel für eine optimierte Implementierung der vereinfachten SWU-Abbildung auf P-256 findet sich in Anhang F.2.
8.3. Suiten für NIST P-384
Dieser Abschnitt definiert die Cipher Suites für die elliptische Kurve NIST P-384 [FIPS186-4].
P384_XMD:SHA-384_SSWU_RO_ ist wie folgt definiert:
-
Codierungstyp: hash_to_curve (Abschnitt 3)
-
E: y^2 = x^3 + A * x + B, wobei
-
A = -3
-
B = 0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5 013875ac656398d8a2ed19d2a85c8edd3ec2aef
-
-
p: 2^384 - 2^128 - 2^96 + 2^32 - 1
-
m: 1
-
k: 192
-
expand_message: expand_message_xmd (Abschnitt 5.3.1)
-
H: SHA-384
-
L: 72
-
f: vereinfachte SWU-Methode (Abschnitt 6.6.2)
-
Z: -12
-
h_eff: 1
P384_XMD:SHA-384_SSWU_NU_ ist identisch mit P384_XMD:SHA-384_SSWU_RO_, mit der Ausnahme, dass der Codierungstyp encode_to_curve (Abschnitt 3) ist.
Ein Beispiel für eine optimierte Implementierung der vereinfachten SWU-Abbildung auf P-384 findet sich in Anhang F.2.
8.4. Suiten für NIST P-521
Dieser Abschnitt definiert die Cipher Suites für die elliptische Kurve NIST P-521 [FIPS186-4].
P521_XMD:SHA-512_SSWU_RO_ ist wie folgt definiert:
-
Codierungstyp: hash_to_curve (Abschnitt 3)
-
E: y^2 = x^3 + A * x + B, wobei
-
A = -3
-
B = 0x51953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b4899 18ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451f d46b503f00
-
-
p: 2^521 - 1
-
m: 1
-
k: 256
-
expand_message: expand_message_xmd (Abschnitt 5.3.1)
-
H: SHA-512
-
L: 98
-
f: vereinfachte SWU-Methode (Abschnitt 6.6.2)
-
Z: -4
-
h_eff: 1
P521_XMD:SHA-512_SSWU_NU_ ist identisch mit P521_XMD:SHA-512_SSWU_RO_, mit der Ausnahme, dass der Codierungstyp encode_to_curve (Abschnitt 3) ist.
Ein Beispiel für eine optimierte Implementierung der vereinfachten SWU-Abbildung auf P-521 findet sich in Anhang F.2.
8.5. Suiten für curve25519 und edwards25519
Dieser Abschnitt definiert die Cipher Suites für curve25519 und edwards25519 [RFC7748]. Man beachte, dass diese Cipher Suites NICHT für das Hashing auf ristretto255 [ristretto255-decaf448] verwendet werden DÜRFEN. Siehe Anhang B für Informationen dazu, wie auf diese Gruppe gehasht wird.
curve25519_XMD:SHA-512_ELL2_RO_ ist wie folgt definiert:
-
Codierungstyp: hash_to_curve (Abschnitt 3)
-
E: K * t^2 = s^3 + J * s^2 + s, wobei
-
J = 486662
-
K = 1
-
-
p: 2^255 - 19
-
m: 1
-
k: 128
-
expand_message: expand_message_xmd (Abschnitt 5.3.1)
-
H: SHA-512
-
L: 48
-
f: Elligator-2-Methode (Abschnitt 6.7.1)
-
Z: 2
-
h_eff: 8
edwards25519_XMD:SHA-512_ELL2_RO_ ist identisch mit curve25519_XMD:SHA-512_ELL2_RO_, mit Ausnahme der folgenden Parameter:
-
E: a * v^2 + w^2 = 1 + d * v^2 * w^2, wobei
-
a = -1
-
d = 0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca1 35978a3
-
-
f: Elligator-2-Methode für verdrehte Edwards-Kurven (Abschnitt 6.8.2)
-
M: curve25519, definiert in [RFC7748], Abschnitt 4.1
-
rational_map: die in [RFC7748], Abschnitt 4.1 definierten birationalen Abbildungen
curve25519_XMD:SHA-512_ELL2_NU_ ist identisch mit curve25519_XMD:SHA-512_ELL2_RO_, mit der Ausnahme, dass der Codierungstyp encode_to_curve (Abschnitt 3) ist.
edwards25519_XMD:SHA-512_ELL2_NU_ ist identisch mit edwards25519_XMD:SHA-512_ELL2_RO_, mit der Ausnahme, dass der Codierungstyp encode_to_curve (Abschnitt 3) ist.
Beispiele für optimierte Implementierungen der obigen Abbildungen finden sich in Anhang G.2.1 und Anhang G.2.2.
8.6. Suiten für curve448 und edwards448
Dieser Abschnitt definiert die Cipher Suites für curve448 und edwards448 [RFC7748]. Man beachte, dass diese Cipher Suites NICHT für das Hashing auf decaf448 [ristretto255-decaf448] verwendet werden DÜRFEN. Siehe Anhang C für Informationen dazu, wie auf diese Gruppe gehasht wird.
curve448_XOF:SHAKE256_ELL2_RO_ ist wie folgt definiert:
-
Codierungstyp: hash_to_curve (Abschnitt 3)
-
E: K * t^2 = s^3 + J * s^2 + s, wobei
-
J = 156326
-
K = 1
-
-
p: 2^448 - 2^224 - 1
-
m: 1
-
k: 224
-
expand_message: expand_message_xof (Abschnitt 5.3.2)
-
H: SHAKE256
-
L: 84
-
f: Elligator-2-Methode (Abschnitt 6.7.1)
-
Z: -1
-
h_eff: 4
edwards448_XOF:SHAKE256_ELL2_RO_ ist identisch mit curve448_XOF:SHAKE256_ELL2_RO_, mit Ausnahme der folgenden Parameter:
-
E: a * v^2 + w^2 = 1 + d * v^2 * w^2, wobei
-
a = 1
-
d = -39081
-
-
f: Elligator-2-Methode für verdrehte Edwards-Kurven (Abschnitt 6.8.2)
-
M: curve448, definiert in [RFC7748], Abschnitt 4.2
-
rational_map: die in [RFC7748], Abschnitt 4.2 definierte 4-Isogenie-Abbildung
curve448_XOF:SHAKE256_ELL2_NU_ ist identisch mit curve448_XOF:SHAKE256_ELL2_RO_, mit der Ausnahme, dass der Codierungstyp encode_to_curve (Abschnitt 3) ist.
edwards448_XOF:SHAKE256_ELL2_NU_ ist identisch mit edwards448_XOF:SHAKE256_ELL2_RO_, mit der Ausnahme, dass der Codierungstyp encode_to_curve (Abschnitt 3) ist.
Beispiele für optimierte Implementierungen der obigen Abbildungen finden sich in Anhang G.2.3 und Anhang G.2.4.
8.7. Suiten für secp256k1
Dieser Abschnitt definiert die Cipher Suites für die elliptische Kurve secp256k1 [SEC2].
secp256k1_XMD:SHA-256_SSWU_RO_ ist wie folgt definiert:
-
Codierungstyp: hash_to_curve (Abschnitt 3)
-
E: y^2 = x^3 + 7
-
p: 2^256 - 2^32 - 2^9 - 2^8 - 2^7 - 2^6 - 2^4 - 1
-
m: 1
-
k: 128
-
expand_message: expand_message_xmd (Abschnitt 5.3.1)
-
H: SHA-256
-
L: 48
-
f: vereinfachtes SWU für AB == 0 (Abschnitt 6.6.3)
-
Z: -11
-
E': y'^2 = x'^3 + A' * x' + B', wobei
-
A': 0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01 a444533
-
B': 1771
-
-
iso_map: die in Anhang E.1 angegebene 3-Isogenie-Abbildung von E' nach E
-
h_eff: 1
secp256k1_XMD:SHA-256_SSWU_NU_ ist identisch mit secp256k1_XMD:SHA-256_SSWU_RO_, mit der Ausnahme, dass der Codierungstyp encode_to_curve (Abschnitt 3) ist.
Ein Beispiel für eine optimierte Implementierung der vereinfachten SWU-Abbildung auf die zu secp256k1 isogene Kurve E' findet sich in Anhang F.2.
8.8. Suiten für BLS12-381
Dieser Abschnitt definiert die Cipher Suites für die Gruppen G1 und G2 der elliptischen Kurve BLS12-381 [BLS12-381].
8.8.1. BLS12-381 G1
BLS12381G1_XMD:SHA-256_SSWU_RO_ ist wie folgt definiert:
-
Codierungstyp: hash_to_curve (Abschnitt 3)
-
E: y^2 = x^3 + 4
-
p: 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f 6241eabfffeb153ffffb9feffffffffaaab
-
m: 1
-
k: 128
-
expand_message: expand_message_xmd (Abschnitt 5.3.1)
-
H: SHA-256
-
L: 64
-
f: vereinfachtes SWU für AB == 0 (Abschnitt 6.6.3)
-
Z: 11
-
E': y'^2 = x'^3 + A' * x' + B', wobei
-
A' = 0x144698a3b8e9433d693a02c96d4982b0ea985383ee66a8d8e8981aef d881ac98936f8da0e0f97f5cf428082d584c1d
-
B' = 0x12e2908d11688030018b12e8753eee3b2016c1f0f24f4070a0b9c14f cef35ef55a23215a316ceaa5d1cc48e98e172be0
-
-
iso_map: die in Anhang E.2 angegebene 11-Isogenie-Abbildung von E' nach E
-
h_eff: 0xd201000000010001
BLS12381G1_XMD:SHA-256_SSWU_NU_ ist identisch mit BLS12381G1_XMD:SHA-256_SSWU_RO_, mit der Ausnahme, dass der Codierungstyp encode_to_curve (Abschnitt 3) ist.
Man beachte, dass die h_eff-Werte dieser Suiten so gewählt sind, dass Kompatibilität mit der von Scott beschriebenen schnellen Methode zur Kofaktor-Beseitigung ([WB19], Abschnitt 5) besteht.
Ein Beispiel für eine optimierte Implementierung der vereinfachten SWU-Abbildung auf die zu BLS12-381 G1 isogene Kurve E' findet sich in Anhang F.2.
8.8.2. BLS12-381 G2
BLS12381G2_XMD:SHA-256_SSWU_RO_ ist wie folgt definiert:
-
Codierungstyp: hash_to_curve (Abschnitt 3)
-
E: y^2 = x^3 + 4 * (1 + I)
-
der Basiskörper F ist GF(p^m), wobei
-
p: 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6 b0f6241eabfffeb153ffffb9feffffffffaaab
-
m: 2
-
(1, I) ist die Basis von F, wobei I^2 + 1 == 0 in F gilt
-
-
k: 128
-
expand_message: expand_message_xmd (Abschnitt 5.3.1)
-
H: SHA-256
-
L: 64
-
f: vereinfachtes SWU für AB == 0 (Abschnitt 6.6.3)
-
Z: -(2 + I)
-
E': y'^2 = x'^3 + A' * x' + B', wobei
-
A' = 240 * I
-
B' = 1012 * (1 + I)
-
-
iso_map: die in Anhang E.3 angegebene Isogenie-Abbildung von E' nach E
-
h_eff: 0xbc69f08f2ee75b3584c6a0ea91b352888e2a8e9145ad7689986ff0315 08ffe1329c2f178731db956d82bf015d1212b02ec0ec69d7477c1ae954cbc06689 f6a359894c0adebbf6b4e8020005aaa95551
BLS12381G2_XMD:SHA-256_SSWU_NU_ ist identisch mit BLS12381G2_XMD:SHA-256_SSWU_RO_, mit der Ausnahme, dass der Codierungstyp encode_to_curve (Abschnitt 3) ist.
Man beachte, dass die h_eff-Werte dieser Suiten so gewählt sind, dass Kompatibilität mit der von Budroni und Pintore beschriebenen schnellen Methode zur Kofaktor-Beseitigung ([BP17], Abschnitt 4.1) besteht; sie sind in Anhang G.3 zusammengefasst.
Ein Beispiel für eine optimierte Implementierung der vereinfachten SWU-Abbildung auf die zu BLS12-381 G2 isogene Kurve E' findet sich in Anhang F.2.
8.9. Definition einer neuen Hash-to-Curve-Suite
Für elliptische Kurven, die an anderer Stelle in Abschnitt 8 nicht aufgeführt sind, kann eine neue Hash-to-Curve-Suite wie folgt definiert werden:
-
E, F, p und m werden durch die elliptische Kurve und ihren Basiskörper bestimmt.
-
k ist eine obere Schranke für das von der Suite angestrebte Sicherheitsniveau (Abschnitt 10.8). Eine sinnvolle Wahl für k ist ceil(log2(r) / 2), wobei r die Ordnung der Untergruppe G der Kurve E ist (Abschnitt 2.1).
-
Wählen Sie den Codierungstyp, entweder hash_to_curve oder encode_to_curve (Abschnitt 3).
-
Berechnen Sie L wie in Abschnitt 5 beschrieben.
-
Wählen Sie eine expand_message-Variante aus Abschnitt 5.3 sowie alle zugrunde liegenden kryptografischen Primitive (beispielsweise eine Hashfunktion H).
-
Wählen Sie eine Abbildung gemäß den Empfehlungen aus Abschnitt 6.1 und legen Sie alle von dieser Abbildung benötigten Parameter fest.
-
Wählen Sie h_eff entweder gleich dem Kofaktor von E oder, falls eine schnelle Methode zur Kofaktor-Beseitigung verwendet werden soll, gleich einem für diese Methode geeigneten Wert, wie in Abschnitt 7 erörtert.
-
Konstruieren Sie eine Suite-ID gemäß den Empfehlungen aus Abschnitt 8.10.
8.10. Namenskonventionen für Suite-IDs
Suite-IDs MÜSSEN wie folgt konstruiert werden:
CURVE_ID || "" || HASH_ID || "" || MAP_ID || "" || ENC_VAR || ""
Die Felder CURVE_ID, HASH_ID, MAP_ID und ENC_VAR sind ASCII-codierte Strings von jeweils höchstens 64 Zeichen. Die Felder DÜRFEN ausschließlich ASCII-Zeichen zwischen 0x21 und 0x7E (einschließlich) enthalten, mit Ausnahme des Unterstrichs (d. h. 0x5F), der nicht zulässig ist.
Wie oben angegeben, folgt auf jedes Feld (einschließlich des letzten) ein Unterstrich („_", ASCII 0x5F). Dies trägt dazu bei sicherzustellen, dass Suite-IDs präfixfrei (prefix free) sind. Suite-IDs MÜSSEN den abschließenden Unterstrich enthalten und DÜRFEN nach diesem abschließenden Unterstrich kein weiteres Zeichen enthalten.
Die Felder von Suite-IDs MÜSSEN wie folgt gewählt werden:
-
CURVE_ID: eine für Menschen lesbare Darstellung der elliptischen Zielkurve.
-
HASH_ID: eine für Menschen lesbare Darstellung der Funktion expand_message und aller zugrunde liegenden Hash-Primitive, die in hash_to_field (Abschnitt 5) verwendet werden. Dieses Feld MUSS wie folgt konstruiert werden:
EXP_TAG || ":" || HASH_NAME
EXP_TAG gibt die expand_message-Variante an:
-
„XMD" für expand_message_xmd (Abschnitt 5.3.1).
-
„XOF" für expand_message_xof (Abschnitt 5.3.2).
HASH_NAME ist ein für Menschen lesbarer Name zur Bezeichnung der zugrunde liegenden Hash-Primitive. Beispiele:
-
Für expand_message_xof (Abschnitt 5.3.2) mit SHAKE128 lautet HASH_ID „XOF:SHAKE128".
-
Für expand_message_xmd (Abschnitt 5.3.1) mit SHA3-256 lautet HASH_ID „XMD:SHA3-256".
Suiten, die eine alternative hash_to_field-Funktion verwenden, welche die Anforderungen aus Abschnitt 5.1 erfüllt, MÜSSEN dies kenntlich machen, indem sie dem Feld HASH_ID ein Tag zur Kennzeichnung dieser Funktion anfügen, getrennt durch einen Doppelpunkt („:", ASCII 0x3A).
-
-
MAP_ID: eine für Menschen lesbare Darstellung der Funktion map_to_curve gemäß der Definition in Abschnitt 6. Diese sind wie folgt definiert:
-
„SVDW" für Shallue und van de Woestijne (Abschnitt 6.6.1).
-
„SSWU" für vereinfachtes SWU (Abschnitte 6.6.2 und 6.6.3).
-
„ELL2" für Elligator 2 (Abschnitte 6.7.1 und 6.8.2).
-
-
ENC_VAR: ein String, der den Codierungstyp und weitere Informationen angibt. Die ersten beiden Zeichen dieses Strings geben an, ob die Suite eine hash_to_curve- oder eine encode_to_curve-Operation darstellt (Abschnitt 3), und zwar wie folgt:
-
Beginnt ENC_VAR mit „RO", so verwendet die Suite hash_to_curve.
-
Beginnt ENC_VAR mit „NU", so verwendet die Suite encode_to_curve.
-
ENC_VAR DARF NICHT mit einem anderen String beginnen.
ENC_VAR KANN darüber hinaus zur Codierung weiterer Informationen dienen, die zur Kennzeichnung von Varianten verwendet werden, beispielsweise einer Versionsnummer. Der EMPFOHLENE Weg hierfür besteht darin, ein oder mehrere durch Doppelpunkte getrennte Unterfelder anzufügen. Beispielsweise ist „RO:V02" ein geeigneter ENC_VAR-Wert für die zweite Version einer Suite mit gleichmäßiger Codierung, während „RO:V02:FOO01:BAR17" zur Kennzeichnung einer Variante dieser Suite verwendet werden könnte.
-