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.