Perché utilizzare un certificato x.509 per crittografare XML?Perché non trasmettere semplicemente tramite https?

StackOverflow https://stackoverflow.com/questions/954337

Domanda

Non so molto di crittografia...

Supponiamo che sto preparando una richiesta SAML da inviare a un provider di identità.Perché dovrei applicare un certificato x.509 a questa richiesta?La sola trasmissione tramite SSL non è sufficientemente sicura?

È stato utile?

Soluzione

Sì - SSL è sufficiente - ma SSL è solo point-to-point. Non è possibile proteggere la connessione tramite SSL se ci sono un paio di intermediari nella strada tra la sorgente e il vostro computer di destinazione.

In questo caso, ad esempio durante la trasmissione su Internet, è necessario salvaguardare il messaggio vero e proprio, invece del livello di trasporto. Ecco perché è necessario crittografare il XML (o almeno una parte di esso).

Marc

Altri suggerimenti

Nel caso di SAML, la sicurezza a livello di messaggio (vale a dire l'XML stesso è firmato e qualche volta crittografati) perché la comunicazione coinvolge soggetti che non comunicano direttamente. SSL / TLS è per la sicurezza a livello di trasporto, usato solo tra le due parti che stanno comunicando direttamente e per la durata di questa comunicazione solo.

A seconda di quale SAML vincolante si utilizza, la finestra può apparire come questo (per esempio lungo le linee di Shibboleth):

  • del browser dell'utente si connette al provider di servizi (SP)
  • SP offre all'utente una richiesta SAML, non necessariamente visibili, ma nascosta all'interno di una forma o equivalente.
  • del browser dell'utente (in un collegamento diretto con l'IdP) invia la richiesta SAML per IDP.
  • L'utente effettua l'autenticazione con esso e ottiene una risposta SAML indietro.
  • Il browser dell'utente invia che la risposta SAML al SP.

In questo scenario, non c'è SSL diretta / connessione TLS tra la SP e IDP, anche se tutti e 3 i partiti sono coinvolti. (Alcune varianti di questo comportano una comunicazione di back-end tra SP e IdP per gli attributi, ma questo è un problema diverso.)

  • Una connessione SSL / TLS non sarebbe sufficiente per IDP di sapere che la richiesta SAML proveniva da una SP per i quali è consentita l'autenticazione e rilasciare l'attributo, in quanto la connessione al IdP viene dal browser dell'utente, non il SP stesso. Per questo motivo, la SP dovrà firmare la richiesta SAML Messaggio prima di consegnarlo al browser dell'utente.
  • Una connessione SSL / TLS non sarebbe sufficiente per la SP di conoscere la risposta SAML è venuto da un IDP si fida. Anche in questo caso, è per questo che la risposta SAML stesso è anche firmato.

Ciò che vale per la firma vale anche per la crittografia, se il partito di mezzo, cioè l'utente, non è destinata a vedere cosa c'è nel messaggio SAML e / o se la connessione tra l'utente e la SP o IdP non è finita SSL / TLS (di solito, dovrebbe essere su HTTPS).

Tutto ciò che HTTPS farà sarà crittografare la comunicazione tra due punti e prevenire eventuali intercettazioni: non confermerà Chi è stato lui a mandare il messaggio.Né garantirà una comunicazione sicura se il tuo messaggio viene poi inoltrato.

Se firmi la tua richiesta con il certificato X.509 puoi essere certo che il decryptor ha il segreto condiviso contenuto nel certificato.In altre parole, puoi essere certo che il messaggio potrà essere decrittografato solo dall'organizzazione da cui desideri che venga decrittografato.

Nel tuo caso, il requisito di crittografia X.509 significa che dovresti essere certo che il provider di identità sia l'unica organizzazione che riceverà la tua richiesta.

Un utile manuale di Wikipedia è Qui.

Molto probabilmente perché vogliono per autenticare l'utente (il cliente). HTTPS può essere utilizzato per l'autenticazione del client, ma raramente è in pratica.

In pratica, è possibile utilizzare HTTPS (SSL / TLS) per proteggere il vostro messaggio SAML. Ma si vorrebbe utilizzare due vie certificato SSL di verifica / validazione, il che significa il vostro cliente avrebbe bisogno di verificare il certificato X.509 del server e avrebbe bisogno di server per essere configurato per eseguire l'autenticazione del client, che richiederebbe per controllare una X. 509 certificato che il client presenta. Quindi, il cliente avrebbe bisogno in ogni caso il proprio certificato.

SSL / TLS non è realmente progettato per questo ... era / è progettato per proteggere il traffico web di essere visto, mentre nel settore dei trasporti e per il cliente di essere in grado di dire a quale server stanno parlando e l'invio di informazioni sensibili a (è stato davvero concepito per l'e-commerce dove il cliente (utente di acquistare qualcosa) sa che stanno inviando le loro informazioni della carta di credito a). Nel caso di SAML, il punto è che le parti sappiano che le informazioni che si scambiano non è stato alterato nel settore dei trasporti e che ogni sta parlando a chi pensano di essere. Utilizzo di certificati per firmare / cifrare il messaggio si riesce a far questo.

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