Appendix A. ASN.1-Syntax (ASN.1 Syntax)
Dieser Anhang fasst die in diesem Dokument verwendete ASN.1-Syntax zusammen. Anhang C enthält das vollständige ASN.1-Modul.
A.1. RSA Key Representation (RSA-Schlüsseldarstellung)
Dieser Abschnitt definiert die ASN.1-Syntax für öffentliche und private RSA-Schlüssel.
A.1.1. RSA Public Key Syntax (RSA-Öffentlichschlüssel-Syntax)
Der öffentliche RSA-Schlüssel sollte als ASN.1-Typ RSAPublicKey dargestellt werden:
RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n
publicExponent INTEGER -- e
}
Feldbeschreibung:
- modulus: RSA-Modulus n
- publicExponent: RSA-Öffentlichschlüssel-Exponent e
In einem gültigen öffentlichen RSA-Schlüssel sollte der Wert des Modulus n das Produkt von u verschiedenen ungeraden Primzahlen r_i (i = 1, 2, ..., u) sein, wobei u >= 2, und der Öffentlichschlüssel-Exponent e sollte eine ganze Zahl zwischen 3 und n - 1 sein, die GCD(e, λ(n)) = 1 erfüllt.
A.1.2. RSA Private Key Syntax (RSA-Privatschlüssel-Syntax)
Der private RSA-Schlüssel sollte als ASN.1-Typ RSAPrivateKey dargestellt werden:
RSAPrivateKey ::= SEQUENCE {
version Version,
modulus INTEGER, -- n
publicExponent INTEGER, -- e
privateExponent INTEGER, -- d
prime1 INTEGER, -- p
prime2 INTEGER, -- q
exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p
otherPrimeInfos OtherPrimeInfos OPTIONAL
}
Version ::= INTEGER { two-prime(0), multi(1) }
(CONSTRAINED BY {
-- version must be multi if otherPrimeInfos present --
})
OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo
OtherPrimeInfo ::= SEQUENCE {
prime INTEGER, -- r_i
exponent INTEGER, -- d_i
coefficient INTEGER -- t_i
}
Feldbeschreibung:
- version: Versionsnummer (two-prime steht für Zwei-Prim-RSA, multi steht für Multi-Prim-RSA)
- modulus: RSA-Modulus n
- publicExponent: RSA-Öffentlichschlüssel-Exponent e
- privateExponent: RSA-Privatschlüssel-Exponent d
- prime1: Erster Primfaktor p
- prime2: Zweiter Primfaktor q
- exponent1: d mod (p-1)
- exponent2: d mod (q-1)
- coefficient: CRT-Koeffizient qInv, (q^-1) mod p
- otherPrimeInfos: Optional, verwendet für zusätzliche Primfaktor-Informationen für Multi-Prim-RSA
A.2. Scheme Identification (Schema-Identifikation)
Dieser Abschnitt definiert die Objektidentifikatoren (Object Identifiers) für die verschiedenen in diesem Dokument definierten Schemata.
A.2.1. RSAES-OAEP
Objektidentifikator für das RSAES-OAEP-Verschlüsselungsschema:
id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 }
Algorithmusparametertyp für RSAES-OAEP:
RSAES-OAEP-params ::= SEQUENCE {
hashFunc [0] AlgorithmIdentifier DEFAULT sha1,
maskGenFunc [1] AlgorithmIdentifier DEFAULT mgf1SHA1,
pSourceFunc [2] AlgorithmIdentifier DEFAULT pSpecifiedEmpty
}
A.2.2. RSAES-PKCS1-v1_5
Objektidentifikator für das RSAES-PKCS1-v1_5-Verschlüsselungsschema:
id-RSAES-PKCS1-v1_5 OBJECT IDENTIFIER ::= { pkcs-1 1 }
Dieses Schema hat keine zugeordneten Parameter.
A.2.3. RSASSA-PSS
Objektidentifikator für das RSASSA-PSS-Signaturschema:
id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 }
Algorithmusparametertyp für RSASSA-PSS:
RSASSA-PSS-params ::= SEQUENCE {
hashAlgorithm [0] AlgorithmIdentifier DEFAULT sha1,
maskGenAlgorithm [1] AlgorithmIdentifier DEFAULT mgf1SHA1,
saltLength [2] INTEGER DEFAULT 20,
trailerField [3] INTEGER DEFAULT 1
}
A.2.4. RSASSA-PKCS1-v1_5
Das RSASSA-PKCS1-v1_5-Signaturschema verwendet die folgenden Objektidentifikatoren für verschiedene Hash-Funktionen:
sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 }
sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 }
sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 }
Diese Objektidentifikatoren sind mit spezifischen Hash-Funktionen verknüpft.