Aller au contenu principal

Appendix A. Syntaxe ASN.1 (ASN.1 Syntax)

Cette annexe résume la syntaxe ASN.1 utilisée dans ce document. L'annexe C contient le module ASN.1 complet.

A.1. RSA Key Representation (Représentation des clés RSA)

Cette section définit la syntaxe ASN.1 pour les clés publiques et privées RSA.

A.1.1. RSA Public Key Syntax (Syntaxe de clé publique RSA)

La clé publique RSA doit être représentée comme le type ASN.1 RSAPublicKey :

RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n
publicExponent INTEGER -- e
}

Description des champs :

  • modulus : Module RSA n
  • publicExponent : Exposant de clé publique RSA e

Dans une clé publique RSA valide, la valeur du module n doit être le produit de u nombres premiers impairs distincts r_i (i = 1, 2, ..., u), où u >= 2, et l'exposant de clé publique e doit être un entier entre 3 et n - 1, satisfaisant GCD(e, λ(n)) = 1.

A.1.2. RSA Private Key Syntax (Syntaxe de clé privée RSA)

La clé privée RSA doit être représentée comme le type ASN.1 RSAPrivateKey :

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
}

Description des champs :

  • version : Numéro de version (two-prime indique RSA à deux premiers, multi indique RSA multi-premier)
  • modulus : Module RSA n
  • publicExponent : Exposant de clé publique RSA e
  • privateExponent : Exposant de clé privée RSA d
  • prime1 : Premier facteur premier p
  • prime2 : Deuxième facteur premier q
  • exponent1 : d mod (p-1)
  • exponent2 : d mod (q-1)
  • coefficient : Coefficient CRT qInv, (q^-1) mod p
  • otherPrimeInfos : Optionnel, utilisé pour les informations de facteurs premiers supplémentaires pour RSA multi-premier

A.2. Scheme Identification (Identification des schémas)

Cette section définit les identificateurs d'objets (Object Identifiers) pour les différents schémas définis dans ce document.

A.2.1. RSAES-OAEP

Identificateur d'objet pour le schéma de chiffrement RSAES-OAEP :

id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 }

Type de paramètres d'algorithme pour 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

Identificateur d'objet pour le schéma de chiffrement RSAES-PKCS1-v1_5 :

id-RSAES-PKCS1-v1_5 OBJECT IDENTIFIER ::= { pkcs-1 1 }

Ce schéma n'a pas de paramètres associés.

A.2.3. RSASSA-PSS

Identificateur d'objet pour le schéma de signature RSASSA-PSS :

id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 }

Type de paramètres d'algorithme pour 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

Le schéma de signature RSASSA-PKCS1-v1_5 utilise les identificateurs d'objets suivants pour différentes fonctions de hachage :

sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 }
sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 }
sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 }

Ces identificateurs d'objets sont associés à des fonctions de hachage spécifiques.