• Non ci sono risultati.

Funzioni che lavorano sui contesti di sicurezza

Capitolo 10 Conclusioni

A.4 Funzioni che lavorano sui contesti di sicurezza

A.4.1 Funzione gss_init_sec_context()

Vediamo il prototipo della funzione e cosa indica ogni parametro.

OM_uint32 gss_init_sec_context (

OM_uint32 *minor_status,

const gss_cred_id_t initiator_cred_handle, gss_ctx_id_t *context_handle, const gss_name_t target_name, const gss_OID mech_type, OM_uint32 req_flags, OM_uint32 time_req,

const gss_channel_bindings_t input_chan_bindings, const gss_buffer_t input_token

gss_OID *actual_mech_type, gss_buffer_t output_token, OM_uint32 *ret_flags, OM_uint32 *time_rec )

Parametri:

• minor_status status code restituito dal meccanismo sottostante.

• initiator_cred_handle l’handle delle credenziali, tramite il quale le applicazioni possono usare le credenziali. Va inizializzato a

GSS_NO_CREDENTIAL per utilizzare le credenziali di default.

• context_handle è ciò che si restituisce, cioè l’handle per il contesto inizializzato. La prima chiamata prevede che questo argomento sia inizializzato

a GSS_C_NO_CONTEXT.

• target_name

• mech_type meccanismo di sicurezza da usare (impostare l’argomento a

A.4 Funzioni che lavorano sui contesti di sicurezza

• req_flags flag indicante i servizi addizionali di sicurezza che si vogliono per quel contesto. Si crea una maschera mettendo in OR le varie opzioni desiderate scegliendole fra quelle elencate:

o GSS_C_DELEGATE_FLAG serve per chiedere che sia permesso

delegare le credenziali utente.

o GSS_C_MUTUAL_FLAG serve per chiedere la mutua autenticazione. o GSS_C_REPLAY_FLAG serve per chiedere di controllare eventuali

ripetizioni di messaggi.

o GSS_C_SEQUENCE_FLAG serve per chiedere di controllare eventuali messaggi fuori sequenza.

o GSS_C_CONF_FLAG chiede la disponibilità del servizio di segretezza per i messaggi trasmessi nel contesto.

o GSS_C_INTEG_FLAG chiede la disponibilità del servizio d’integrità per i messaggi trasmessi nel contesto (ai messaggi verrà associato un MIC). o GSS_C_ANON_FLAG chiede che l’initiator rimanga anonimo.

• time_req numero dei secondi per cui il contesto deve rimanere valido (0 per indicare un valore di default).

• input_chan_bindings informazioni sul canale peer_to_peer (se non le voglio impostare l’argomento a GSS_C_NO_CHANNEL_BINDINGS).

• input_token token ricevuto dal server. Va inizializzato a

GSS_NO_BUFFER.

• actual_mech_type meccanismo realmente usato (metterlo a NULL se non mi interessa conoscerlo).

• output_token token da inviare al server.

• ret_flags Flag che indica se i servizi di sicurezza addizionali richiesti sono disponibili. Va testato con l’AND bit a bit. Può assumere uno dei seguenti valori:

o GSS_C_DELEGATE_FLAG indica che é permesso delegare le credenziali utente

o GSS_C_SEQUENCE_FLAG indica che verrà controllata la presenza di eventuali messaggi fuori sequenza.

o GSS_C_CONF_FLAG indica che sul contesto è disponibile il servizio di segretezza per i messaggi trasmessi.

o GSS_C_INTEG_FLAG indica che sul contesto è disponibile il servizio d’integrità per i messaggi trasmessi (ai messaggi verrà associato un MIC). o GSS_C_ANON_FLAG indica che il client può rimanere anonimo.

o GSS_C_TRANS_FLAG indica se il contesto può essere esportato.

o GSS_C_PROT_READY_FLAG indica che eventuali servizi di protezione sono già disponibili anche se il contesto no è ancora stabilito.

• time_rec numero di secondi per cui il contesto rimarrà valido (NULL se non si è interessati).

La funzione gss_init_sec_context() ritorna GSS_S_COMPLETE se completata con successo e GSS_S_CONTINUE_NEEDED se l’altra applicazione richiede altri token per stabilire il contesto, errore altrimenti.

A.4 Funzioni che lavorano sui contesti di sicurezza

A.4.2 Funzione gss_accept_sec_context ()

Vediamo il prototipo della funzione e una spiegazione dei parametri.

OM_uint32 gss_accept_sec_context (

OM_uint32 *minor_status, gss_ctx_id_t *context_handle, const gss_cred_id_t acceptor_cred_handle, const gss_buffer_t input_token_buffer, const gss_channel_bindings_t input_chan_bindings, const gss_name_t *src_name,

gss_OID *mech_type, gss_buffer_t output_token, OM_uint32 *ret_flags, OM_uint32 *time_req, gss_cred_id_t *delegated_cred_handle) Parametri:

minor_status lo status code restituito dal meccanismo sottostante.

context_handle L’handle di contesto da restituire al client. Questo argomento va messo a GSS_C_NO_CONTEXT prima che inizi il ciclo.

acceptor_cred_handle L’handle delle credenziali acquisite dal server (di solito attraverso la funzione gss_acquire_cred() ). Può essere inizializzato a GSS_C_NO_CREDENTIAL per indicare che si utilizza una credenziale di default. Se nessuna credenziale è definita, la funzione restituisce GSS_C_NO_CRED.

input_token_buffer Token ricevuto dal client.

input_chan_bindings Informazioni specifiche di identificazione del canale peer-to-peer. Va settato a GSS_C_NO_CHANNEL_BINDINGSse non

mech_type meccanismo di sicurezza usato. Va messo a null se non interessa.

output_token il token inviato al client. Va inizializzato a

GSS_C_NO_BUFFER prima della chiamata della funzione (o in alternativa si può mettere il campo lunghezza della struttura a zero). Se il campo lunghezza della struttura identificante il token è zero significa che nessun token deve essere inviato.

ret_flags Flag indicanti alla controparte i servizi addizionali per il contesto.

Si usano così:

if (ret_flags & GSS_C_CONF_FLAG)

confidentiality = TRUE;

Può assumere uno dei seguenti valori:

o GSS_C_DELEGATE_FLAG indica che é permesso delegare le credenziali utente.

o GSS_C_MUTUAL_FLAG indica che si usa la mutua autenticazione. o GSS_C_REPLAY_FLAG indica che verrà controllata la presenza di

eventuali messaggi ripetuti.

o GSS_C_SEQUENCE_FLAG indica che verrà controllata la presenza di eventuali messaggi fuori sequenza.

o GSS_C_CONF_FLAG indica che sul contesto è disponibile il servizio di segretezza per i messaggi trasmessi.

o GSS_C_INTEG_FLAG indica che sul contesto è disponibile il servizio d’integrità per i messaggi trasmessi (ai messaggi verrà associato un MIC). o GSS_C_ANON_FLAG indica che il client può rimanere anonimo.

o GSS_C_TRANS_FLAG indica se il contesto può essere esportato.

o GSS_C_PROT_READY_FLAG indica che eventuali servizi di protezione sono già disponibili anche se il contesto no è ancora stabilito.

time_rec Numero di secondi per cui il contesto deve rimanere valido (va messo a NULL se non interessa).

A.4 Funzioni che lavorano sui contesti di sicurezza

delegated_cred_handle L'handle per le credenziali ricevute dal client. Valido solo se il client ha chiesto che l’acceptor lavori come proxy: cioè, se l'argomento ret_flags è GSS_C_DELEG_FLAG.

gss_accept_sec_context() restituisce GSS_S_COMPLETE se completata

con successo. Se il contesto non è completo, restituisce

GSS_S_CONTINUE_NEEDED. Se ci sono errori, restituisce un codice di errore.

A.4.3 Funzione gss_delete_sec_context()

Funzione per cancellare un contesto di sicurezza:

OM_uint32 gss_delete_sec_context ( OM_uint32 *minor_status, gss_ctx_id_t *context_handle, gss_buffer_t output_token)

Parametri:

minor_status è il codice di stato restituito dal meccanismo sottostante.

context_handle è l’handle del contesto da cancellare.

output_token dovrebbe essere impostato a GSS_C_NO_BUFFER.

Documenti correlati