Passa al contenuto principale

1. Introduzione

Il protocollo Transport Layer Security (TLS) ([TLS1.0], [TLS1.1], [TLS1.2]) viene utilizzato in una varietà crescente di ambienti operativi, inclusi quelli che non erano previsti al momento della progettazione originale di TLS. Le estensioni introdotte in questo documento sono progettate per consentire a TLS di operare in ambienti in cui è necessario scambiare informazioni di autorizzazione tra client e server prima dello scambio di dati protetti. L'uso di queste estensioni di autorizzazione TLS è particolarmente interessante quando più protocolli applicativi possono utilizzare le stesse informazioni di autorizzazione.

Il formato e il contenuto delle informazioni di autorizzazione trasportate in queste estensioni sono estensibili. Questo documento fa riferimento ai formati di autorizzazione di asserzione Security Assertion Markup Language (SAML) ([SAML1.1], [SAML2.0]) e certificato di attributo (AC) X.509 [ATTRCERT], ma possono essere utilizzati altri formati. Le future estensioni di autorizzazione possono includere qualsiasi asserzione opaca firmata digitalmente da un emittente fidato. Riconoscendo la somiglianza con la validazione del percorso di certificazione, questo documento raccomanda l'uso di messaggi di avviso TLS relativi all'elaborazione dei certificati per segnalare errori nell'elaborazione delle informazioni di autorizzazione.

Un legame diretto delle informazioni di identificazione, autenticazione e autorizzazione a una sessione crittografata è possibile quando tutte queste sono gestite all'interno di TLS. Se ogni applicazione richiede informazioni di autorizzazione uniche, potrebbe essere meglio trasportarle all'interno del protocollo applicativo protetto da TLS. Tuttavia, è necessario prestare attenzione per garantire legami appropriati quando le informazioni di identificazione, autenticazione e autorizzazione sono gestite a diversi livelli di protocollo.

Questo documento descrive le estensioni di autorizzazione per il protocollo di handshake TLS in TLS 1.0, TLS 1.1 e TLS 1.2. Queste estensioni osservano le convenzioni definite per le estensioni TLS che sono state originariamente definite in [TLSEXT1] e riviste in [TLSEXT2]; le estensioni TLS ora fanno parte di TLS 1.2 [TLS1.2]. Le estensioni TLS utilizzano meccanismi di estensione generali per il messaggio client hello e il messaggio server hello. Le estensioni descritte in questo documento confermano che sia il client che il server supportano i tipi di dati di autorizzazione desiderati. Quindi, se supportate, le informazioni di autorizzazione vengono scambiate nel messaggio di handshake dei dati supplementari [TLSSUPP].

Le estensioni di autorizzazione possono essere utilizzate in combinazione con TLS 1.0, TLS 1.1 e TLS 1.2. Le estensioni sono progettate per essere retrocompatibili, il che significa che i messaggi di dati supplementari del protocollo di handshake conterranno informazioni di autorizzazione di un tipo particolare solo se il client indica il supporto per esse nel messaggio client hello e il server indica il supporto per esse nel messaggio server hello.

I client conoscono tipicamente il contesto della sessione TLS in corso di instaurazione; pertanto, il client può utilizzare le estensioni di autorizzazione quando sono necessarie. I server devono accettare messaggi client hello estesi, anche se il server non "comprende" tutte le estensioni elencate. Tuttavia, il server non indicherà il supporto per queste estensioni "non comprese". I client possono quindi rifiutare le comunicazioni con i server che non supportano le estensioni di autorizzazione.

1.1. Convenzioni

La sintassi per i messaggi di autorizzazione è definita utilizzando il linguaggio di presentazione TLS, che è specificato nella Sezione 4 di [TLS1.0].

Le parole chiave "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" e "OPTIONAL" in questo documento devono essere interpretate come descritto in RFC 2119 [STDWORDS].

1.2. Panoramica

La Figura 1 illustra il posizionamento delle estensioni di autorizzazione e dei messaggi di dati supplementari nell'handshake TLS completo.

Il messaggio ClientHello include un'indicazione dei formati di dati di autorizzazione client supportati e un'indicazione dei formati di dati di autorizzazione server supportati. Il messaggio ServerHello contiene indicazioni simili, ma eventuali formati di dati di autorizzazione non supportati dal server non sono inclusi. Sia il client che il server DEVONO indicare il supporto per i tipi di dati di autorizzazione. Se l'elenco dei formati di dati di autorizzazione reciprocamente supportati è vuoto, il messaggio ServerHello NON DEVE trasportare affatto l'estensione interessata.

Una ripresa di sessione riuscita utilizza le stesse informazioni di autorizzazione della sessione originale.

Client                                                   Server

ClientHello (w/ extensions) -------->

ServerHello (w/ extensions)
SupplementalData*
Certificate*
ServerKeyExchange*
CertificateRequest*
<-------- ServerHelloDone
SupplementalData*
Certificate*
ClientKeyExchange
CertificateVerify*
[ChangeCipherSpec]
Finished -------->
[ChangeCipherSpec]
<-------- Finished
Application Data <-------> Application Data

* Indica messaggi opzionali o dipendenti dalla situazione che
non vengono sempre inviati.

[] Indica che ChangeCipherSpec è un tipo di contenuto del protocollo
TLS indipendente; non è effettivamente un messaggio di handshake
TLS.

Figura 1. Scambio di dati di autorizzazione nell'handshake TLS completo