Condividi tramite


Componenti di un messaggio CMS/PKCS #7

La struttura dei messaggi CMS/PKCS #7 rende semplice l'implementazione di uno o più servizi di protezione in un messaggio. È inoltre possibile associare attributi al messaggio CMS/PKCS #7, che offrono ulteriori informazioni sul messaggio.

Dati da proteggere

CMS/PKCS #7 consente di applicare ai dati più servizi di protezione, archiviandoli in un oggettoContentInfo. Tale oggetto è una proprietà delle due classi principali che proteggono i dati nello spazio dei nomi System.Security.Cryptography.PkcsSignedCms e EnvelopedCms. L'oggetto ContentInfo può archiviare dati non protetti, ma può anche incapsulare dati protetti in precedenza da un servizio di protezione CMS/PKCS #7. L'incapsulamento consente di applicare ai dati livelli nidificati di protezione. I dati già firmati digitalmente, ad esempio, possono essere protetti digitalmente.

I dati ai quali viene applicato un nuovo livello di protezione in un messaggio CMS/PKCS #7, che incluso nell'oggettoContentInfo, vengono definiti contenuto interno del messaggio CMS/PKCS #7. I dati risultanti dall'applicazione di tale protezione vengono definiti contenuto esterno del messaggio CMS/PKCS #7. Il contenuto esterno viene ottenuto richiamando il metodo Encode dell'oggetto del messaggio CMS/PKCS #7 applicabile. Ciò in pratica significa richiamare System.Security.Cryptography.Pkcs.SignedCms.Encode o System.Security.Cryptography.Pkcs.EnvelopedCms.Encode.

Per ulteriori informazioni sui dati protetti da più servizi di protezione, vedere Messaggio CMS/PKCS #7 firmato e protetto digitalmente. Per un esempio di codice relativo a dati protetti da più servizi di protezione, vedere Procedura: firmare e proteggere digitalmente un messaggio.

Attributi

CMS/PKCS #7 consente di inserire attributi nei messaggi protetti. Un attributo è costituito da un identificatore di oggetto (Oid) che specifica il tipo di attributo, nonché dai dati che contengono il valore dell'attributo. La scelta, la posizione e le caratteristiche degli attributi dipendono dal tipo di messaggio CMS/PKCS #7.

Un messaggio SignedCms può includere due tipi di attributi specifici della firma, ovvero quelli che vengono firmati unitamente al contenuto del messaggio e quelli che rimangono non firmati. Per ulteriori informazioni, vedere Messaggio SignedCms. Un messaggio EnvelopedCms può includere attributi che non vengono crittografati. Per ulteriori informazioni, vedere Messaggio EnvelopedCms.

Le classi Attribute seguenti vengono incluse nello spazio dei nomi System.Security.Cryptography.Pkcs. Alcune sono classi necessarie per gli standard CMS/PKCS #7, mentre altre sono attributi utili in molti scenari di applicazione:

Gli attributi personalizzati possono inoltre essere modificati per soddisfare le necessità di un'applicazione. Derivare una classe Attribute personalizzata da Pkcs9AttributeObject.

Soggetti

Un soggetto di un messaggio CMS/PKCS #7 è un'entità che partecipa alla produzione o all'utilizzo del messaggio. In base al comportamento di un'applicazione, un soggetto può avere più ruoli, ad esempio mittente, autore, firmatario, controfirmatario, lettore di un messaggio o una combinazione di questi. Il soggetto può essere un utente, un'applicazione software o qualsiasi altra entità con un'identità univoca. Le due classi principali che includono soggetti in System.Security.Cryptography.Pkcs sono CmsSigner e CmsRecipient.

I soggetti in CMS/PKCS #7 utilizzano credenziali di crittografia per eseguire le operazioni richieste. Tali credenziali sono in genere certificati di chiavi pubbliche con una chiave privata associata. Un soggetto viene identificato e individuato in base al relativo certificato di chiave pubblica. Il certificato può essere identificato in modo univoco in due modi.

  • Il nome distinto dell'autorità emittente insieme a un numero di serie del certificato specifico dell'autorità emittente

  • Un identificatore di chiave del soggetto

Questi meccanismi di identificazione sono rappresentati nell'enumerazione SubjectIdentifierType. Alcuni dei costruttori utilizzati nelle classi CmsSigner e CmsRecipient accettano un membro SubjectIdentifierType come input.

Footer image

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.