Zum Hauptinhalt springen

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.