Concetti di sintassi di messaggistica crittografica PKCS #7

Le funzioni del messaggio CryptoAPI rispettano lo standard PKCS #7Cryptographic 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 che possono essere applicati alla 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 una parte può firmare i dati digitali già inseriti in una busta. Consente inoltre di autenticare gli attributi arbitrari, ad esempio l'ora di firma, insieme al contenuto di un messaggio. Fornisce inoltre altri attributi, ad esempio controsignature, 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 Avanzato.

  • I tipi di contenuto di base contengono solo dati senza miglioramenti crittografici. Attualmente è presente un solo tipo di contenuto in questa classe, il tipo di contenuto dei dati.
  • I tipi di contenuto avanzati contengono dati di alcuni tipi (possibilmente crittografati) e altri miglioramenti crittografici (ad esempio hash o firme).

Il contenuto della classe Avanzata 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 avanzata potrebbe contenere il tipo di contenuto dati (classe Base) con una firma inclusa. In questo caso, il tipo di contenuto dati è il contenuto interno e la combinazione del tipo di contenuto dei dati e la firma forma 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 di crittografia del contenuto crittografata per un destinatario è una busta digitale per tale destinatario.
Dati firmati e con busta Contenuto crittografato di qualsiasi tipo, chiavi di crittografia contenuto crittografate per uno o più destinatari e digest di messaggi crittografati 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 di dati in busta, il tipo di contenuto crittografato-dati 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 di hash ai dati. Questa documentazione usa i termini hash e hashing per lo stesso scopo. Ad esempio, il tipo di dati usato con le funzioni di messaggio di basso livello viene chiamato hashed anziché digerito. Ai fini di questa documentazione, i due set di termini possono essere usati in modo interscambiabile.