Concetti relativi alla sintassi della messaggistica crittografica PKCS #7
Le funzioni di messaggio CryptoAPI rispettano lo standard PKCS #7 Cryptographic Message Syntax (CMS). Gli sviluppatori devono avere familiarità con questa specifica per usare in modo più efficace le funzioni di messaggio di basso livello. Alcune delle relative definizioni sono evidenziate qui.
Lo standard PKCS #7 descrive una sintassi generale per i dati a cui può essere applicata la crittografia, ad esempio firme digitali e buste digitali. La sintassi ammette la ricorsione, in modo che, ad esempio, una busta possa essere annidata all'interno di un'altra o che una parte possa firmare dati digitali già inseriti in una busta. Consente inoltre l'autenticazione di attributi arbitrari, ad esempio l'ora di firma, insieme al contenuto di un messaggio. Fornisce inoltre altri attributi, ad esempio controfirma, da associare a una firma.
Il tipo di dati contenuti in un messaggio PKCS #7 è denominato tipo di contenuto. Esistono due classi di tipi di contenuto: Base e Enhanced.
- I tipi di contenuto di base contengono solo dati senza miglioramenti crittografici. Attualmente in questa classe è presente un solo tipo di contenuto, ovvero il tipo di contenuto dati.
- I tipi di contenuto avanzati contengono dati di tipo (possibilmente crittografati) e altri miglioramenti crittografici (ad esempio hash o firme).
Il contenuto nella classe Enhanced usa l'incapsulamento, dando origine ai termini contenuti esterni (quello contenente i miglioramenti) e il contenuto interno (quello che viene migliorato). Ad esempio, una classe Enhanced potrebbe contenere il tipo di contenuto di dati (classe Base) che include una firma. In questo caso, il tipo di contenuto dati è il contenuto interno e la combinazione del tipo di contenuto dati e la firma costituisce il contenuto esterno.
I tipi di contenuto definiti nello standard PKCS #7 sono i seguenti.
Tipo di contenuto | Descrizione |
---|---|
Dati | Stringa ottetto (BYTE). |
Dati firmati | Contenuto di qualsiasi tipo e hash dei messaggi crittografati (digest) del contenuto per zero o più firmatari. |
Dati in busta | Contenuto crittografato di qualsiasi tipo e chiavi di crittografia del contenuto crittografate per uno o più destinatari. La combinazione di contenuto crittografato e chiave crittografata di crittografia del contenuto per un destinatario è una busta digitale per il destinatario. |
Dati con segno e in busta | Contenuto crittografato di qualsiasi tipo, chiavi di crittografia del contenuto crittografate per uno o più destinatari e digest dei messaggi crittografati in modo doubly per uno o più firmatari. La doppia crittografia è costituita da una crittografia con una chiave privata del firmatario seguita da una crittografia con la chiave di crittografia del contenuto. |
Dati inseriti | Contenuto di qualsiasi tipo e hash del messaggio (digest) del contenuto. |
Dati crittografati | Contenuto crittografato di qualsiasi tipo. A differenza del tipo di contenuto enveloped-data, il tipo di contenuto encrypted-data non ha destinatari né chiavi di crittografia del contenuto crittografate. Si presuppone che le chiavi siano gestite da altri mezzi. |
Nota
In tutta la specifica PKCS #7, i termini digest e digeriti fanno riferimento al valore prodotto dall'applicazione di un algoritmo hash ai dati. Questa documentazione usa i termini hash e hash per lo stesso scopo. Ad esempio, il tipo di dati usato con le funzioni di messaggio di basso livello viene chiamato hash anziché digerito. Ai fini di questa documentazione, i due set di termini possono essere usati in modo intercambiabile.