2.5 Il messaggio S/MIME

 

I messaggi S/MIME sono una combinazione di corpi MIME ed oggetti PKCS. Diversi tipi MIME come pure diversi oggetti PKCS sono usati. I dati che devono essere resi sicuri sono sempre un’entità MIME canonica.

Le entità MIME e gli altri dati, come certificati e identificatori di algoritmi, sono dati a funzionalità di elaborazione PKCS che producono un oggetto PKCS.

L’oggetto PKCS è infine racchiuso in MIME.

S/MIME fornisce un formato per i dati solo imbustati (solo cifrati), diversi formati per dati solo firmati, e diversi formati per dati firmati e imbustati.

I diversi formati sono richiesti per accomodare diversi ambienti, in particolare per i messaggi firmati.

 

 

Preparazione di un’entità MIME per la firma e la cifratura (imbustamento)

S/MIME è usato per rendere sicure le entità MIME.

Un’entità MIME potrebbe essere una sottoparte, sottoparti di un messaggio, o un intero messaggio con tutte le sue sottoparti.

Un’entità MIME che è un intero messaggio include solo gli header MIME e il corpo MIME, ma non include gli header RFC-822.

Nota che S/MIME può anche essere usato per rendere sicure le entità MIME usate in applicazioni che non siano Internet Mail.

L’entità MIME che è resa sicura e descritta in questa sezione può essere pensata l’entità MIME “interna”. Cioè l’oggetto “più interno” di un possibile messaggio MIME più grande.

La procedura per la preparazione di un’entità MIME è data in [MIME-SPEC]. La stessa procedura è usata qui con qualche restrizione addizionale quando si firma.

Una singola procedura è usata per la creazione di entità MIME che devono essere firmate, cifrate, o sia firmate che imbustate.

Alcuni passi addizionali sono raccomandati per difendersi contro problemi che possono occorrere durante il trasposto della posta.

Si raccomanda che tali passi addizionali siano eseguiti sia per la firma che la cifratura di un messaggio in modo che il messaggio possa essere inoltrato a qualsiasi ambiente senza modifiche.

 

Questi passi sono descrittivi piuttosto che prescrittivi.

L’implementatore è libero di usare una qualsiasi procedura purché il risultato sia lo stesso.

 

Step 1.    L’entità MIME è preparata secondo le convenzioni locali.

 

Step 2.    Le parti foglia dell’entità MIME sono convertite in forma canonica.

 

Step 3.    Una appropriata codifica di trasferimento è applicata alle foglie dell’entità MIME.

 

Quando un messaggio S/MIME è ricevuto, i servizi di sicurezza sul messaggio sono rimossi, e il risultato è l’entità MIME.

L’entità MIME è tipicamente passata ad un agente MIME, essa è decodificata e presentata all’utente o all’applicazione ricevente.

 

 

Forma canonica

Ogni entità MIME DEVE essere convertita in una forma canonica che è rappresentabile unicamente e in modo non ambiguo nell’ambiente dove la firma è creata e nell’ambiente dove la firma sarà verificata.

Le entità MIME DEVONO essere messe in forma canonica sia per la cifratura (imbustamento) che per la firma.

I dettagli esatti della forma canonica dipendono dal tipo e sottotipo MIME dell’entità.

In generale la forma canonica sarà elaborata dall’agente in trasmissione piuttosto che dall’implementazione S/MIME.

I dettagli della forma canonica sono specificati in [MIME-SPEC].

 

 

Codifica di trasferimento

Le implementazioni S/MIME DEVONO essere capaci di trattare con oggetti MIME binari.

Se nessun header Content-Transfer-Encoding è presente, la codifica di trasferimento dovrebbe essere considerata 7BIT.

Le implementazioni S/MIME DOVREBBERO comunque usare la codifica di trasferimento descritta di seguito nel paragrafo successivo per tutte le entità MIME che rendono sicure.

La ragione del rendere sicure solo entità MIME a 7-bit, anche per dati cifrati (imbustati) che non sono mostrati durante il trasporto, è che ciò permette alle entità MIME di essere trattate in qualsiasi ambiente senza essere cambiate.

 

 

Codifica di trasferimento per la firma usando il formato multipart/signed

Un’entità multipart/signed che è trasmessa sull’infrastruttura internet standard SMTP o un altro trasporto che è vincolato a testo a 7-bit, DEVE avere una codifica di trasferimento applicata in modo da essere rappresentata come testo a 7-bit.

Le entità MIME che sono gia dati a 7-bit non hanno bisogno di una codifica di trasferimento.

Le entità come testo ad 8-bit e dati binari possono essere codificati con codifica di trasferimento quoted-printable o base-64.

 

La ragione primaria per cui sono richiesti 7-bit è che l’infrastruttura di trasporto mail Internet non garantisce il trasporto di dati ad 8-bit o binari.

Anche se alcuni segmenti dell’infrastruttura possono ora trattare dati ad 8-bit e dati binari, spesso non è possibile conoscere dove il percorso del trasporto è ad 8-bit.

Se un messaggio di posta ad 8-bit incontra un agente di trasferimento messaggi che non può trasmetter dati ad 8-bit o binari, l’agente ha tre opzioni, nessuna delle quali accettabile per un messaggio firmato in chiaro:

 

 

[MIME-SPEC] proibisce ad un agente di cambiare la codifica di trasferimento della prima parte di un messaggio multipart/signed.

Se un agente che non può trasmettere dati ad 8-bit o binari incontra un messaggio con dati ad 8-bit o binari nella prima parte, dovrebbe ritornare il messaggio al mittente come non consegnato.