SAML: lo standard aperto che consente il single sign-on

saml
Il Security Assertion Markup Language (SAML) è uno standard che definisce il modo in cui i provider possono offrire servizi di autenticazione e autorizzazione. Ecco tutto quello che dovete sapere.

Il Security Assertion Markup Language (SAML) è uno standard aperto che consente la condivisione delle credenziali di sicurezza da più computer in una rete. Descrive un framework che consente a un computer di eseguire alcune funzioni di sicurezza per conto di uno o più altri computer:

  • Autenticazione: determinare che gli utenti sono chi affermano di essere
  • Autorizzazione: determinare se gli utenti hanno il diritto di accedere a determinati sistemi o contenuti

SAML si riferisce alla variante del linguaggio XML utilizzata per codificare tutte queste informazioni, ma il termine può anche coprire vari messaggi di protocollo e profili che fanno parte dello standard. SAML 2.0 è stato introdotto nel 2005 e rimane la versione attuale dello standard, mentre la versione precedente 1.1 è ora in gran parte inutilizzata. SAMLDiffs offre un ottimo riassunto sulla differenza tra le due versioni.

A cosa serve SAML?

SAML è un modo per implementare il Single Sign-On (SSO), che infatti è di gran lunga il caso d’uso più comune di SAML. SSO, come suggerisce il nome, consente a un utente di accedere una volta a più servizi come siti Web, app cloud o SaaS, condivisioni di file e così via. In uno scenario SSO, tutti questi servizi esternalizzano le proprie funzionalità di autenticazione e autorizzazione a un unico sistema che invia a tali servizi le informazioni sull’identità dell’utente. I documenti scritti in SAML sono un modo per trasmettere le informazioni.

Che cos’è un provider SAML?

Nel gergo SAML, un provider è un’entità, generalmente un server o un altro computer, all’interno di un sistema che aiuta l’utente ad accedere ai servizi che desidera. I sistemi che forniscono servizi SAML sono genericamente chiamati fornitori di servizi; il tipo più importante di provider di servizi è un provider di identità.

Abbiamo accennato a ciò che fa un provider di identità: è l’entità all’interno del sistema che si assicura che l’utente sia veramente chi afferma di essere e, così facendo, fornisce l’autenticazione. Può anche determinare a quali servizi, se presenti, quell’utente è autorizzato ad accedere attraverso varie entità nel sistema.

SAML è uno standard aperto, quindi chiunque può creare un’implementazione commerciale o open source che fornisca servizi di autenticazione in linea con esso. In generale, questa funzionalità è incorporata in un prodotto di gestione delle identità e degli accessi (IAM), sebbene tale funzionalità IAM possa a sua volta essere inclusa in un sistema o una piattaforma di infrastruttura più onnicomprensivi. I fornitori attuali includono:

  • Active Directory Federation Services (ADFS)
  • Auth0
  • Azure AD (Microsoft Azure Active Directory)
  • NetIQ Access Manager
  • Okta
  • OneLogin
  • OpenAM
  • Ping Identity
  • Salesforce
  • Shibboleth
  • SimpleSAMLphp

Che cos’è un’asserzione SAML?

Un’asserzione SAML è il documento XML mediante il quale tutte le informazioni di cui abbiamo discusso vengono trasmesse da un computer all’altro. Una volta che un provider di identità ha determinato che siete chi dite di essere e avete quindi il diritto di accedere al contenuto o ai servizi che vi interessano, invia un’asserzione SAML al server che può effettivamente fornirvi quei servizi. Un’asserzione SAML può essere crittografata per una maggiore sicurezza. Per ulteriori informazioni su tutti questi termini, consultate il glossario ufficiale di OASIS.

Come funziona l’autenticazione SAML?

Tutto questo potrebbe sembrare un po’ astratto, quindi ecco un esempio più pratico di come si svolgerebbe una transazione di autenticazione SAML. Un’illustrazione grafica è fornita nella figura qui sotto. Lo user agent nella maggior parte dei casi è un browser web.

security-assertion-markup-language-saml-explainer-100738529-large

Immaginate di essere l’utente in un ambiente con single sign-on e state cercando di accedere a qualche risorsa su un server. La sequenza degli eventi è la seguente:

  1. Si tenta di accedere alla risorsa sul server, che nella terminologia SAML è un fornitore di servizi. Il fornitore di servizi verifica se siete già autenticati all’interno del sistema. Se lo siete, andate al passaggio7; in caso contrario, il fornitore di servizi avvia il processo di autenticazione.
  2. Il provider di servizi determina il provider di identità appropriato per voi e vi reindirizza a quel provider, in questo caso il servizio Single Sign-On.
  3. Il vostro browser invia una richiesta di autenticazione al servizio SSO; il servizio vi identifica.
  4. Il servizio SSO restituisce un documento XHTML, che include le informazioni di autenticazione necessarie al provider di servizi in un parametro SAMLResponse.
  5. Il parametro SAMLResponse viene passato al provider di servizi.
  6. Il fornitore di servizi elabora questa risposta e crea un contesto di sicurezza per voi, vi fa accedere e vi dice dove si trova la risorsa richiesta.
  7. Con queste informazioni, ora potete richiedere nuovamente la risorsa che vi interessa.

Se volete dare un’occhiata più da vicino alla natura dei messaggi che vengono passati avanti e indietro in una transazione SAML, controllate questi esempi di OneLogin. È possibile esaminare il codice XML completo per i tipi di asserzioni passati dal provider di identità al provider di servizi nello scenario descritto sopra.

Implementazione di SAML

Noterete che quanto detto finora non spiega l’intero processo. Ad esempio, non c’è spiegazione di come SAML sappia qual è il provider di identità appropriato o come il provider di identità determini che siete chi dite di essere. Queste mancanze però non dipendono da noi: lo standard SAML, infatti, non definisce il modo in cui accadono questi passaggi, lasciando all’IT un ampio margine di manovra su come impostare le cose.

Come notato sopra, ad esempio, più tecnologie possono essere utilizzate per l’effettiva parte di autenticazione e le tecnologie scelte forniranno i dettagli di come effettivamente implementerete SAML nel vostro ambiente. Ma indipendentemente dalla scelta che farete, le asserzioni SAML trasporteranno i dati di autenticazione e autorizzazione da un provider all’altro.

Vantaggi dell’autenticazione SAML

Il vantaggio più importante di SAML come base per una soluzione SSO è che si tratta di uno standard aperto. Come abbiamo visto, ciò significa che può essere implementato da un’ampia varietà di fornitori IAM e integrato in sistemi onnicomprensivi come Salesforce. Significa anche che fornitori diversi possono comunicare tra loro purché aderiscano allo standard SAML. Poiché SAML è un “dialetto” XML, è anche molto flessibile. Tutti i tipi di dati possono essere trasmessi in un documento SAML, purché possa essere reso in XML.

SAML e OAuth: qual è la differenza?

OAuth è uno standard un po’ più recente di SAML, sviluppato congiuntamente da Google e Twitter a partire dal 2006. È stato sviluppato in parte per compensare le carenze di SAML sulle piattaforme mobili ed è basato su JSON anziché su XML. A parte il supporto mobile tutt’altro che stellare di SAML, qual è la differenza tra i due?

Come abbiamo visto, lo standard SAML definisce come i provider possono offrire servizi sia di autenticazione che di autorizzazione. OAuth, invece, si occupa solo di autorizzazione. OpenID Connect è uno standard ancora più recente, sviluppato nel 2014, che fornisce servizi di autenticazione ed è sovrapposto a OAuth.

Un’altra importante differenza tra SAML e OAuth sono i loro casi d’uso. Sebbene in teoria SAML sia stato progettato per l’uso su Internet aperto, in pratica è più spesso distribuito all’interno di reti aziendali per il Single Sign-On. OAuth, al contrario, è stato progettato da Google e Twitter per la scalabilità di Internet.

Conoscere meglio SAML

Ecco alcuni tutorial SAML approfonditi e perfetti per approfondire l’argomento:

Condividi:
 

Crittografia: i nostri dati al sicuro da occhi indiscreti

Crittografia
La crittografia protegge i nostri dati privati da occhi indiscreti. Ecco una spiegazione di base su come funziona e su quali sono i suoi usi più frequenti.

Se avete letto qualcosa sulla tecnologia negli ultimi anni, potreste aver visto spesso il termine “crittografia”. È un concetto semplice, ma le realtà del suo utilizzo sono enormemente complicate. Se avete bisogno di un rapido excursus su cosa sua la crittografia e su come viene utilizzata sui dispositivi moderni, siete nel posto giusto.

Le basi della crittografia

Al livello più semplice e basico, la crittografia è un modo per mascherare le informazioni in modo che non sia possibile accedervi immediatamente. La crittografia è stata utilizzata per migliaia di anni, molto prima dell’avvento dell’era dell’informazione, per proteggere la conoscenza sensibile o preziosa. L’uso e lo studio della crittografia, dei codici e di altri mezzi per proteggere o nascondere le informazioni è chiamato crittografia.

La versione più semplice della crittografia è un codice sostitutivo di base. Se usate i numeri per indicare le lettere dell’alfabeto latino (A=1, B=2, eccetera) potete inviare un messaggio con questo codice. Non è immediatamente riconoscibile, ma chiunque conosca il codice può decifrare rapidamente il messaggio. Quindi, una stringa di numeri apparentemente casuale:

20 8 5 16 1 19 19 23 15 18 4 9 19 19 23 15 18 4 6 9 19 8

…può diventare un’informazione vitale, per chi sa leggerla.

t h e p a s s w o r d i s s w o r d f i s h

Gli archeologi hanno trovato esempi di persone che crittografavano informazioni scritte vecchie di migliaia di anni: i vasai mesopotamici si scambiavano messaggi in codice nell’argilla, dicendo ai loro amici come fare un nuovo “impasto” senza che i loro concorrenti lo sapessero. Un altro esempio è l’insieme di sostituzioni greche chiamato quadrato Polybus, che richiedeva una chiave per sbloccare il messaggio e che fu utilizzato fino al Medioevo.

Crittografia in tempo di guerra

La crittografia viene utilizzata per proteggere le informazioni e non esiste un’applicazione più vitale della guerra. I militari hanno crittografato i loro messaggi per assicurarsi che i nemici non conoscessero i loro piani se la comunicazione veniva intercettata. Allo stesso modo, i militari cercano anche di violare la crittografia e di scoprire il modello di un codice senza avere la chiave originale.

Prendete la Seconda Guerra Mondiale per due esempi illustrativi di crittografia pratica. L’esercito tedesco usava un dispositivo elettronico fisico chiamato macchina Enigma che poteva codificare e decodificare messaggi con incredibile complessità, consentendo una comunicazione veloce e segreta. Ma attraverso una combinazione di ricerca di codici giornalieri rotanti e analisi avanzate, gli Alleati furono in grado di violare la crittografia delle macchine Enigma. Ottennero così un vantaggio militare decisivo, ascoltando i messaggi radio tedeschi crittografati e comprendendo i loro veri contenuti.

Ma un codice di crittografia non deve necessariamente essere basato su una matematica complessa. Per le proprie comunicazioni radio segrete, l’esercito americano usò i “codificatori” dei nativi americani come Comanche e Navajo. Parlando tra loro in queste lingue, sia in parole semplici che in codici di cifratura da parola a lettera di base, questi “code talker” potevano comunicare ordini e altre informazioni via radio. I militari tedeschi, italiani e giapponesi potevano facilmente intercettare queste trasmissioni, ma non avendo accesso a nativi americani, questo metodo di crittografia relativamente semplice era di fatto inviolabile per loro.

password_entry_amid_binary_code_by_matejmo_gettyimages-808422590_cso_nw_2400x1600-100855218-large

Crittografia elettronica moderna

Nel mondo moderno, la crittografia viene eseguita quasi esclusivamente tramite computer. Invece di crittografare ogni parola o lettera con un’altra, o anche di seguire uno schema per farlo, la crittografia elettronica “rimescola” singoli bit di dati in modo casuale e rimescola anche la chiave per decriptarli. Decifrare manualmente solo una piccola parte di queste informazioni, anche se si dispone della chiave corretta, richiederebbe più di una vita.

Con il rapido calcolo disponibile nel mondo elettronico, i dati crittografati digitalmente sono più o meno impossibili da “craccare” con mezzi convenzionali. Ad esempio, gli uni e gli zeri (bit) che costituiscono il contenuto digitale di un file codificato sul comune Advanced Encryption Standard a 128 bit vengono codificati circa dieci volte diverse in uno schema semi-casuale. Perché un altro computer li riorganizzi nell’ordine corretto, senza la chiave, ci vorrebbe un tempo che facciamo persino fatica a quantificare. E questa è la versione più debole di AES: è disponibile anche quella con chiavi di dimensioni a 192 e 256 bit!

Cosa si può fare con la crittografia?

Tutti i principali sistemi operativi moderni includono almeno alcuni strumenti per crittografare i dati: Windows, MacOS, iOS, Android e Linux. Il sistema Bitlocker in Windows è un esempio. In misura maggiore o minore, potete crittografare tutti i vostri dati in modo che richiedano una chiave per sbloccarli. Lo stesso vale per l’archiviazione di file online e per le vostre informazioni personali archiviate in altri luoghi sicuri, come la banca.

Per accedere alle informazioni crittografate, potete utilizzare uno dei tre diversi tipi di chiavi. Nella sicurezza informatica, questi sono indicati come “qualcosa che conoscete” (una password o PIN), “qualcosa che avete” (una chiave di crittografia fisica come Yubico) e “qualcosa che siete” (autenticazione biometrica, come un’impronta digitale o scansione del viso).

La crittografia dell’archiviazione dei vostri dispositivi li protegge in termini puramente elettronici: senza uno di questi metodi di sblocco, è incredibilmente difficile, quasi impossibile, per chiunque accedere ai vostri dati. L’elaborazione extra necessaria per crittografare e decrittografare i dati può rallentare l’archiviazione del computer, ma il software moderno può aiutare a ridurre al minimo questa riduzione della velocità.

Ovviamente se la password, la chiave fisica o l’impronta digitale sono accessibili da altri, questi possono accedere a quei dati. Ecco perché è una buona idea utilizzare metodi di sicurezza aggiuntivi. Un comune sistema di autenticazione a due fattori (2FA) utilizza sia una password (qualcosa che conoscete), sia un messaggio di testo inviato al vostro smartphone per accedere. Ciò fornisce un ulteriore livello di sicurezza a qualsiasi informazione memorizzata in quel sistema . L’utilizzo di un gestore di password per creare password univoche per ogni sito o servizio che aggiunge ancora più protezione, impedendo agli hacker di riutilizzare le vostre informazioni di accesso nel caso riuscissero a rubare le vostre credenziali per un determinato servizio.

La crittografia dei dati non significa che sia assolutamente impossibile accedervi in modo improprio. Ci sono sempre punti deboli e modi per aggirare la sicurezza. Ma l’utilizzo di strumenti di crittografia (anche di base) può aiutarvi a proteggere i vostri dati ben oltre ciò che è disponibile per impostazione predefinita.

Condividi: