Zum Hauptinhalt springen

2. Notation and Conventions (Notation und Konventionen)

2. Notation and Conventions (Notation und Konventionen)

Im gesamten Dokument wird folgende Notation verwendet:

p - Bezeichnet die Primzahl, die das zugrunde liegende Feld definiert

GF(p) - Endlicher Körper (Finite field) mit p Elementen

x^y - x mit sich selbst y-mal multipliziert

B - Generator der interessierenden Gruppe oder Untergruppe

[n]X - X n-mal zu sich selbst addiert

h[i] - Das i-te Oktett der Oktett-Zeichenkette h

h_i - Das i-te Bit von h

a || b - (Bit-)Zeichenkette a konkateniert mit (Bit-)Zeichenkette b

a <= b - a ist kleiner oder gleich b

a >= b - a ist größer oder gleich b

i+j - Summe von i und j

i*j - Multiplikation von i und j

i-j - Subtraktion von j von i

i/j - Division von i durch j

i x j - Kartesisches Produkt (Cartesian product) von i und j

(u,v) - Elliptischer Kurvenpunkt mit x-Koordinate u und y-Koordinate v

SHAKE256(x, y) - Die ersten y Oktette der SHAKE256 [FIPS202] Ausgabe für Eingabe x

OCTET(x) - Das Oktett mit Wert x

OLEN(x) - Die Anzahl der Oktette in Zeichenkette x

dom2(x, y) - Die leere Oktett-Zeichenkette beim Signieren oder Verifizieren von Ed25519. Ansonsten die Oktett-Zeichenkette: "SigEd25519 no Ed25519 collisions" || octet(x) || octet(OLEN(y)) || y, wobei x im Bereich 0-255 liegt und y eine Oktett-Zeichenkette von höchstens 255 Oktetten ist. "SigEd25519 no Ed25519 collisions" ist in ASCII (32 Oktette).

dom4(x, y) - Die Oktett-Zeichenkette "SigEd448" || octet(x) || octet(OLEN(y)) || y, wobei x im Bereich 0-255 liegt und y eine Oktett-Zeichenkette von höchstens 255 Oktetten ist. "SigEd448" ist in ASCII (8 Oktette).

Klammern (d.h. '(' und ')') werden verwendet, um Ausdrücke zu gruppieren, um zu vermeiden, dass die Beschreibung von einer Bindungsreihenfolge zwischen Operatoren abhängt.

Bit-Zeichenketten werden in Oktett-Zeichenketten konvertiert, indem Bits von links nach rechts genommen werden, diese vom niedrigstwertigen Bit jedes Oktetts zum höchstwertigen Bit gepackt werden und zum nächsten Oktett übergegangen wird, wenn jedes Oktett voll ist. Die Konvertierung von Oktett-Zeichenkette zu Bit-Zeichenkette ist die Umkehrung dieses Prozesses; zum Beispiel wird die 16-Bit-Bit-Zeichenkette

b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15

in zwei Oktette x0 und x1 (in dieser Reihenfolge) konvertiert als

x0 = b7*128+b6*64+b5*32+b4*16+b3*8+b2*4+b1*2+b0
x1 = b15*128+b14*64+b13*32+b12*16+b11*8+b10*4+b9*2+b8

Little-Endian-Kodierung in Bits platziert Bits von links nach rechts und vom niedrigstwertigen zum höchstwertigen. Wenn dies mit der oben definierten Bit-Zeichenkette-zu-Oktett-Zeichenkette-Konvertierung kombiniert wird, ergibt sich eine Little-Endian-Kodierung in Oktette (wenn die Länge kein Vielfaches von 8 ist, bleiben die höchstwertigen Bits des letzten Oktetts ungenutzt).

Die Schlüsselwörter "MUST" (MUSS), "MUST NOT" (DARF NICHT), "REQUIRED" (ERFORDERLICH), "SHALL" (SOLL), "SHALL NOT" (SOLL NICHT), "SHOULD" (SOLLTE), "SHOULD NOT" (SOLLTE NICHT), "RECOMMENDED" (EMPFOHLEN), "MAY" (KANN), und "OPTIONAL" (OPTIONAL) in diesem Dokument sind wie in [RFC2119] beschrieben zu interpretieren.