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 aGSS_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: