2.8 Messaggio solo firmato

 

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.

 

 

Scelta del formato per i messaggi solo firmati

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.

I messaggi firmati usando il formato multipart/signed può sempre essere visto dal ricevitore sia quando ha software S/MIME che meno.

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.

I messaggi firmati usando il formato signedData non possono essere visti da un destinatario senza avere funzionalità S/MIME.

 

 

Firma usando application/pkcs7-mime e SignedData

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 2.   L’entità MIME e gli altri dati richiesti sono elaborati in un oggetto PKCS #7 di tipo signedData

 

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”.

Un esempio di messaggio potrebbe essere:

 

 Content-Type: application/pkcs7-mime; smime-type=signed-data;

                         name=smime.p7m

 Content-Transfer-Encoding: base64

 Content-Disposition: attachment; filename=smime.p7m

 

 567GhIGfHfYT6ghyHhHUujpfyF4f8HHGTrfvhJhjH776tbB9HG4VQbnj7

 77n8HHGT9HG4VQpfyF467GhIGfHfYT6rfvbnj756tbBghyHhHUujhJhjH

 HUujhJh4VQpfyF467GhIGfHfYGTrfvbnjT6jH7756tbB9H7n8HHGghyHh

 6YT64V0GhIGfHfQbnj75

 

 

Firma usando il formato multipart/signed

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.

 

 

Il tipo MIME application/pkcs7-signature

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.

L’estensione del file per messaggi solo firmati usando application/pkcs7-signature è “p7s”.

 

 

Creazione di un messaggio multipart/signed

 

Step 1.    L’entità MIME deve essere firmata e preparata in accordo   alla sezione 2.5.

 

Step 2.    L’entità MIME è presentata all’elaborazione PKCS #7 in modo da ottenere un oggetto di tipo signedData con un campo contentInfo vuoto.

 

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.

Il parametro protocol DEVE essere “application/pkcs7-signature”.

Nota che le virgolette sono richieste dal parametro protocol poiché MIME richiede che il carattere “/” nel valore del parametro sia tra virgolette.

Il parametro micalg permette un solo passo di elaborazione quando la firma verrà verificata.

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:

 

Algoritmo usato            Valore

   --------------               ---------

       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.