Domanda

Mi rendo conto questa domanda può essere un po 'vago o io può utilizzare una terminologia corretta, che è perché sto cercando di fare i conti con questa roba :).

Ho un obbligo di attuare la firma digitale di un messaggio XML utilizzando un dsig: sezione di firma. Credo di capire questo processo; Userò una chiave privata per firmare che garantirà al destinatario che ero io che ha inviato il messaggio e che nessuno ha manomesso con esso.

ho ragione che questo è diverso da implementare TLS certificati client, ma l'obiettivo è lo stesso? (Perché TLS è livello di trasporto, giusto?) Sarebbe all'attuazione di certificati client essere più facile? È uno migliore dell'altro?

Molte grazie per la risposta,

Martijn

Aggiornamento 1:

Credo che un'altra differenza è che l'utilizzo di un certificato TLS client l'intero messaggio sarà criptato, mentre con la firma digitale del messaggio stesso sarà solo testo, che contiene una sezione di firma.

È stato utile?

Soluzione

Si sta confrontando la sicurezza a livello di messaggio con la sicurezza a livello di trasporto. Anche se hanno somiglianze, hanno scopi diversi.

Utilizzando TLS protegge la comunicazione di essere visto e modificato dai partiti intermedi. Il certificato X.509 sulle garanzie lato server che i messaggi inviati ad esso possono essere letti solo dal server con questa chiave privata e che ciò che si trasmette proviene dal server con questa chiave privata. Questo potrebbe senza bloccare essere considerato come la firma da parte del server e la crittografia per il server con il certificato X.509, anche se realmente si applica solo ai messaggi di handshake TLS, non i dati dell'applicazione che sta scambiati in seguito. (Sto tralasciando il fatto che si ottiene la crittografia simmetrica del canale in ogni caso, anche se non tutto il partito ha presentato un certificato; è importante avere almeno l'uso di server un certificato in modo che il cliente sa cosa sta comunicando con al posto di comunicante con un potenziale man-in-the-middle). Quando si aggiunge un certificato client a questo, il cliente firma anche i messaggi TLS ha scambiato durante la stretta di mano.

Quando si utilizzano entrambi i certificati client e server, si potrebbe (con attenzione) tracciare un'analogia con la sicurezza a livello di messaggio, in quanto i messaggi che vengono firmati e crittografati sono i messaggi di handshake TLS che vengono utilizzati per stabilito il canale TLS.

Tuttavia, ci sono grandi differenze con la sicurezza a livello di messaggio (ad esempio XML-DSig e XML-Enc).

In primo luogo, una delle caratteristiche del messaggio di firma (XML-DSig) è il controllo, in modo da poter tenere un registro di ciò che è stato detto. Non è specificamente limitata nel tempo. Questo è molto più difficile da fare anche se avete registrato i pacchetti TLS. Con le moderne suite di cifratura di SSL / TLS che l'uso DHE (Diffie-Hellman modalità effimera), anche se si ha la chiave privata del server, è possibile non necessariamente decifrare il canale se si hanno registrato tutti i suoi pacchetti (senza ulteriore conoscenza del DHE meccanismo).

In secondo luogo, in termini di implementazioni, XML-DSig tende ad essere fatto a livello di applicazione, mentre TLS tende ad essere fatto tramite il connettore server. La differenza può essere offuscata a seconda delle condizioni di distribuzione, ma TLS è di comunicare con la macchina / contenitore piuttosto che l'applicazione alle spalle. In genere, il certificato TLS sarà allestito su un contenitore Java o al livello di WCF, mentre il certificato utilizzato per XML-DSig verrà utilizzato dal webapp / applicazione in esecuzione dietro. Ci possono essere diverse persone o procedura in carica lì.

(si sta anche giusto che se si sta utilizzando XML-DSig senza XML-Enc, tu non la crittografia dei dati.)

Altri suggerimenti

Finora si confrontano le mele alle arance.

I dati XML possono essere firmati in molti modi, ad esempio utilizzando standard di XMLDSig e X.509 certificato (è possibile utilizzare altri tipi di chiavi in ??XMLDSig pure). certifica Firma la paternità del documento (o meglio, in una certa misura, naturalmente).

TLS sta per Transport Layer Security e viene utilizzato per Encrypt (non firmare) i dati, mentre nel trasferimento. Non ha nulla a che fare con XML specifico. TLS utilizza certificati X.509 pure, ma non è possibile utilizzare lo stesso certificato per XMLSDig e TLS causa i certificati devono avere scopi specifici (campo di utilizzo chiave).

Vi suggerisco di prendere qualche libro su PKI (mi raccomando sempre Rsa Security di Guida Ufficiale alla crittografia per la sua semplicità) e leggerlo con attenzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top