Ci sono due formati per i messaggi
firmati definiti per S/MIME: application/pkcs7-mime e SignedData, e
multipart/signed.
In generale la forma multipart/signed
è preferita in trasmissione, mentre gli agenti in ricezione DOVREBBERO essere
capaci di trattarle entrambe.
La scelta del formato per i
messaggi solo firmati dipende dalle capacità di tutti i destinatari e dalla
relativa importanza che i destinatari danno alle funzionalità di S/MIME capaci
di verificare la firma contro l’importanza che i destinatari danno al fatto di
essere capaci di vedere i messaggi senza il software S/MIME.
Questi messaggi possono anche
essere visto sia quando il ricevitore sta usando un agente nativo MIME sia
quando sta ricevendo i messaggi tradotti da un gateway.
In questo contesto, “essere visto”
si riferisce alla capacità di elaborare il messaggio essenzialmente come se non
fosse un messaggio firmato, incluso qualsiasi altra struttura MIME che il
messaggio potrebbe avere.
Questo formato di firma usa il tipo
MIME application/pkcs7-mime.
I passi per creare questo formato sono:
Step 1. L’entità MIME è preparata in accordo alla sezione 2.5.
Step 3. L’oggetto PKCS #7 è inserito in un’entità MIME
application/pkcs7-mime
Il parametro smime-type per i
messaggi che usano application/pkcs7-mime e SignedData è “signed-data”.
L’estensione del file per questo
tipo di messaggio è “.p7m”.
name=smime.p7m
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=smime.p7m
567GhIGfHfYT6ghyHhHUujpfyF4f8HHGTrfvhJhjH776tbB9HG4VQbnj7
77n8HHGT9HG4VQpfyF467GhIGfHfYT6rfvbnj756tbBghyHhHUujhJhjH
HUujhJh4VQpfyF467GhIGfHfYGTrfvbnjT6jH7756tbB9H7n8HHGghyHh
6YT64V0GhIGfHfQbnj75
Questo formato è un formato di
firma in chiaro.
I destinatari senza qualsiasi
funzionalità S/MIME o PKCS sono capaci di vedere il messaggio.
Tale formato fa uso del tipo MIME
multipart/signed descritto in [MIME-SECURE].
Il tipo MIME multipart/signed ha
due parti: la prima parte contiene l’entità
MIME che deve essere firmata; la seconda parte contiene la firma, che è una
firma distaccata PKCS #7.
Questo tipo MIME contiene sempre un
singolo oggetto PKCS #7 di tipo signedData.
Il campo contentInfo dell’oggetto
PKCS #7 deve essere vuoto.
Il campo signerInfos contiene le
firme per l’entità MIME.
Step 1. L’entità MIME deve
essere firmata e preparata in accordo
alla sezione 2.5.
Step 3. L’entità MIME è inserita nella prima parte di
un messaggio multipart/signed senza nessuna altra elaborazione che non è
descritta nella sezione 2.5.
Step 4. Una codifica di trasmissione è applicata alla
firma distaccata ed è inserita in una entità MIME di tipo application/pkcs7-signature.
Step 5. L’entità MIME
di application/pkcs7-signature è inserita nella seconda parte dell’entità
mutipart/signed.
Il campo Content Type del formato
nultipart/signed ha due parametri richiesti: il parametro protocol e il
parametro micalg.
Nota che le virgolette sono
richieste dal parametro protocol poiché MIME richiede che il carattere “/” nel
valore del parametro sia tra virgolette.
Il valore del parametro micalg è dipendente dall’algoritmo di message digest usato nel calcolo del check dell’integrità del messaggio.
Il valore del parametro micalg
DOVREBBE essere uno dei seguenti:
-------------- ---------
MD5 md5
SHA-1 sha1
any other
unknown
(Nota storica: alcune delle prime
implementazioni di S/MIME emettevano e si aspettavano “rsa-md5” e “rsa-sha1”
per il parametro micalg.)
Gli agenti in ricezione DOVREBBERO
essere capaci di gestire in modo corretto
valori del parametro micalg che non riconoscono.