Autenticazione nelle comunicazioni : sicurezza a livello di canale

Quando ci troviamo a progettare la forma di autenticazione nelle architetture Service-Oriented dobbiamo considerare vari aspetti relativi allo scenario.

L’identificazione dell’utente che sta compiendo una determinata operazione è alla base di ogni sistema di sicurezza.

Indipendente dal modello di autenticazione utilizzato, il processo di riconoscimento dell’utente prevede la definizione di un protocollo di autenticazione end to end tra i vari (spesso due, ma non è detto) attori della comunicazione a livello di sistema o applicativo per garantire il riconoscimento dell’utente. Il protocollo di autenticazione definisce, quindi, le modalità con le quali il servizio riconosce il chiamante.

Una comunicazione tra due servizi (end to end) costituisce l’elemento base della classica catena di chiamate a cascata tipiche degli scenari complessi. Una volta stabilite le modalità di autenticazione, il processo di riconoscimento dell’utente deve implementare un ben determinato modello di autenticazione per consentire al servizio chiamato di ottenere il corretto contesto di sicurezza (security context) del chiamante, indipendentemente dal flusso di chiamate e dalla posizione del servizio all’interno della catena di chiamate stesse. Al servizio chiamato a sua volta può utilizzare nel modo corretto le informazioni messe a disposizione dal modello utilizzato per realizzare le politiche di sicurezza necessarie.

Le modalità di autenticazione, come detto, definiscono il protocollo con cui il chiamante fornisce al servizio le informazioni di sicurezza per il riconoscimento dell’utente. La scelta della modalità di autenticazione da utilizzare è condizionata da vari fattori: tipo di applicazioni, modalità di colloqui tra chiamante e servizio, piattaforma utilizzata,….Le modalità di autenticazione offrono caratteristiche diverse dipendenti dal livello a cui vengono implementate. In generale esistono tre grandi famiglie di modalità di autenticazione:

  • a livello di canale di comunicazione.
  • a livello applicativo.
  • a livello di messaggio (anche di infrastruttura applicativa).

 

Sicurezza a livello di canale

La modalità basata sulla sicurezza a livello di canale di comunicazione utilizza il canale di trasporto tra i due end point della comunicazione, per lo scambio delle informazioni necessarie al riconoscimento dell’utente.

image

Figura 1: modelli di autenticazione a livello di canale di comunicazione

Il protocollo di autenticazione utilizzato in questo caso è strettamente dipendente sia dal canale di comunicazione utilizzato che dalla sicurezza supportata dalla piattaforma.

L’autenticazione è, quindi, trasparente alle applicazioni e configurata a livello di sistema in moda da consentire al chiamante e servizio di instaurare il corretto protocollo per lo scambio delle informazioni.

I vantaggi di questa modalità sono essenzialmente nella semplicità di utilizzo (da parte delle applicazioni) e nella sicurezza offerta, definita dallo stesso canale di comunicazione utilizzato.

Di contro, però la sicurezza di canale, avendo come unica granularità applicabile l’intero messaggio, è molto rigida e non consente di applicare politiche di sicurezza su singole porzioni di messaggio.

Quando usarla

La modalità di autenticazione a livello di canale (trasporto) è semplice e generalmente adeguata in scenari dove i meccanismi di trasporto e i partner della comunicazione sono fortemente controllati.

I maggiori vincoli sono:

  • basando tutto a livello di trasporto, l’autenticazione è fortemente dipendente dalla piattaforma utilizzata e dai servizi di sicurezza forniti da questa,
  • l’autenticazione non dipende dalla tipologia di messaggio/richiesta effettuata, non entra nel merito del formato, dei dati e non distingue singole porzioni di messaggio,
  • l’autenticazione è applicata agli end point della comunicazione senza la possibilità (se non supportata dai meccanismi di sicurezza della piattaforma utilizzata) di fluire in una catena di richieste e tra intermediari.

 

Nel prossimo post analizzeremo l'autenticazione a livello applicativo....

--Mario