Passa al contenuto principale

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

Questa appendice riassume la sintassi ASN.1 utilizzata in questo documento. L'appendice C contiene il modulo ASN.1 completo.

A.1. RSA Key Representation (Rappresentazione delle chiavi RSA)

Questa sezione definisce la sintassi ASN.1 per le chiavi pubbliche e private RSA.

A.1.1. RSA Public Key Syntax (Sintassi della chiave pubblica RSA)

La chiave pubblica RSA deve essere rappresentata come tipo ASN.1 RSAPublicKey:

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

Descrizione dei campi:

  • modulus: Modulo RSA n
  • publicExponent: Esponente della chiave pubblica RSA e

In una chiave pubblica RSA valida, il valore del modulo n deve essere il prodotto di u numeri primi dispari distinti r_i (i = 1, 2, ..., u), dove u >= 2, e l'esponente della chiave pubblica e deve essere un intero tra 3 e n - 1, che soddisfa GCD(e, λ(n)) = 1.

A.1.2. RSA Private Key Syntax (Sintassi della chiave privata RSA)

La chiave privata RSA deve essere rappresentata come tipo 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
}

Descrizione dei campi:

  • version: Numero di versione (two-prime indica RSA a due primi, multi indica RSA multi-primo)
  • modulus: Modulo RSA n
  • publicExponent: Esponente della chiave pubblica RSA e
  • privateExponent: Esponente della chiave privata RSA d
  • prime1: Primo fattore primo p
  • prime2: Secondo fattore primo q
  • exponent1: d mod (p-1)
  • exponent2: d mod (q-1)
  • coefficient: Coefficiente CRT qInv, (q^-1) mod p
  • otherPrimeInfos: Opzionale, utilizzato per informazioni sui fattori primi aggiuntivi per RSA multi-primo

A.2. Scheme Identification (Identificazione dello schema)

Questa sezione definisce gli identificatori di oggetto (Object Identifiers) per i vari schemi definiti in questo documento.

A.2.1. RSAES-OAEP

Identificatore di oggetto per lo schema di cifratura RSAES-OAEP:

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

Tipo di parametri di algoritmo per 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

Identificatore di oggetto per lo schema di cifratura RSAES-PKCS1-v1_5:

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

Questo schema non ha parametri associati.

A.2.3. RSASSA-PSS

Identificatore di oggetto per lo schema di firma RSASSA-PSS:

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

Tipo di parametri di algoritmo per 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

Lo schema di firma RSASSA-PKCS1-v1_5 utilizza i seguenti identificatori di oggetto per diverse funzioni hash:

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

Questi identificatori di oggetto sono associati a funzioni hash specifiche.