Nel precedente articolo della rubrica tech corner, abbiamo analizzato il processo di registrazione (Metodo REGISTER) di un account VoIP SIP. Con questo ulteriore approfondimento andremo ad analizzare il processo di autenticazione di un’utenza SIP attraverso la procedura di Digest Authentication.
Il processo di autenticazione viene utilizzato per consentire l’accesso autorizzato a un servizio e prevenire l’uso dannoso o non autorizzato da parte di altre applicazioni o utilizzatori. Ciò è necessario al fine di impedire l’uso fraudolento dell’account fornito dal provider VoIP.
Ma come ci si autentica su un server SIP e con quale gradi di sicurezza?
La Digest Authentication e il Protocollo SIP
L’autenticazione Digest è un semplice metodo di challenge/response basato su HTTP. In base a quanto stabilito dalla RFC 2069, essa impiega un algoritmo hash MD5 per codificare lo username, il realm, la password, l’URI digest e la “nonce” generata dal server come segue:
HA1 = MD5(username : realm : password)
HA2 = MD5(method : digestURI)
Response = MD5(HA1 : nonce : HA2)
Con il termine “nonce” si identifica la chiave di cifratura generata automaticamente ed in maniera casuale dal server, per ogni nuova richiesta di INVITE. Il termine “nonce” è acronimo di “number used once”, ossia numero utilizzato una sola volta.
Alcune osservazioni per non fare confusione
- L’autenticazione Digest è impiegata sia durante la richiesta di registrazione dell’account VoIP SIP che durante il processo di setup (INVITE) di ogni chiamata. Con le numerazioni di rete pubblica fornite da VoipVoice, dobbiamo sempre attenderci di trovare la Digest Authentication sia nel processo di registrazione che in quello di chiamata. Si tratta in questo caso di una doppia verifica.
- La Registrazione è sempre necessaria per ricevere le chiamate in ingresso. E’ importante osservare che nelle chiamate in ingresso (flussi di chiamata dal provider VoIP verso il PBX) non sarà presente alcun processo di Digest Authentication.
- Per le chiamate in uscita (flussi di chiamata dal PBX verso il provider VoIP) sarà sempre necessaria la procedura di Digest Authentication. Vi invito a notare che per eseguire le chiamate in uscita NON è necessario aver effettuato la procedura di registrazione dell’account. La chiamata potrà sempre essere effettuata semplicemente con una richiesta di INVITE contenente la procedura di autenticazione Digest.
- Le risposte “401 Unauthorized“, per le richieste di REGISTER e “407 Proxy Authentication Required” (per REGISTER o per INVITE) NON devono mai essere interpretate come risposte di errore. Esse costituiscono la risposta SIP attraverso la quale il Server SIP (UAS) fornisce al client SIP (UAC) la chiave di cifratura (nonce). Sono parte integrante della procedura di Digest Authentication che ogni installatore SIP specializzato deve necessariamente conoscere e sapere correttamente interpretare.
Come abbiamo già avuto modo di vedere in altri articoli di approfondimento, la procedura di autenticazione durante la registrazione, non esclude la necessità di una successiva autenticazione
Digest Authentication nel processo di REGISTER
durante il processo registrazione di un account VoIP SIP, viene utilizzata la Digest Authentication con algoritmo MD5. Lo scambio (challenge/response) avviene in 4 fasi:
- Il Client (UA) invia una richiesta “REGISTER” al SIP Proxy Server senza credenziali di autenticazione (username e password).
- Il Server risponde con un “401 Unauthorized” oppure con un “407 Proxy Authentication Required” . In questo pacchetto di risposta è presente l’header “WWW-Authenticate” e la chiave di cifratura (nonce). Il tipo di risposta (401 o 407) dipende dal server VoIP di riferimento. Con gli account VoIP Voipvoice è possibile osservare entrambe le tipologie di risposte, a seconda del vettore utilizzato.
- Il Client Riformula la richiesta utilizzando l’algoritmo e la chiave di cifratura ricevuta. È presente l’header “Authorization“. Lo username è presente in chiaro. La password è cifrata e contenuta nell’header “response“.
- Il Server decifra la risposta e confronta la password con quella contenuta nel database. Se corrisponde, risponde con un 200 OK.
Digest Authentication nel processo di INVITE e Call Setup
Come già anticipato, anche nell’INVITE viene utilizzato lo schema di Autenticazione Digest. Questo significa che ogni singola chiamata in uscita viene autorizzata singolarmente dal server SIP di riferimento. Il processo di autenticazione avviene in maniera analoga a quanto avviene con il metodo di REGISTER per la registrazione iniziale dell’account. Le fasi previste sono quindi le seguenti:
- Il Client (UA) invia una richiesta “INVITE” al SIP Proxy Server senza credenziali di autenticazione (username e password).
- Il Server risponde con un “407 Proxy Authentication Required”. In questo pacchetto di risposta è presente l’header “Proxy-Authenticate” e la chiave di cifratura (nonce).
- Il Client Riformula la richiesta utilizzando l’algoritmo e la chiave di cifratura ricevuta. È presente l’header “Proxy-Authorization“. Lo username è presente in chiaro. La password è invece cifrata e contenuta nell’header “response“.
- Il Server decifra la risposta e confronta la password con quella contenuta nel database. Se corrisponde, risponde con un 200 OK.
Come approfondire
Sei un installatore nel mondo del VoIP e vuoi apprendere il protocollo VoIP SIP indipendentemente da qualunque telefono o centralino IP? Desideri collaborare con un fornitore in grado di trasmetterti tutte le informazioni necessarie per operare in maniera efficace ed efficiente? VoipVoice ti mette a disposizione un percorso formativo professionale unico in Italia. Clicca qui per maggiori informazioni sui nostri corsi formativi e di certificazione.