mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
98 lines
14 KiB
Markdown
98 lines
14 KiB
Markdown
# Basic VoIP Protocols
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|
|
|
|
## Signaling Protocols
|
|
|
|
### SIP (Session Initiation Protocol)
|
|
|
|
Questo è lo standard del settore, per ulteriori informazioni controlla:
|
|
|
|
{{#ref}}
|
|
sip-session-initiation-protocol.md
|
|
{{#endref}}
|
|
|
|
### MGCP (Media Gateway Control Protocol)
|
|
|
|
MGCP (Media Gateway Control Protocol) è un **protocollo di segnalazione** e **controllo delle chiamate** delineato nella RFC 3435. Opera in un'architettura centralizzata, che consiste in tre componenti principali:
|
|
|
|
1. **Call Agent o Media Gateway Controller (MGC)**: Il gateway principale nell'architettura MGCP è responsabile per **gestire e controllare i gateway multimediali**. Gestisce i processi di impostazione, modifica e terminazione delle chiamate. L'MGC comunica con i gateway multimediali utilizzando il protocollo MGCP.
|
|
2. **Media Gateways (MGs) o Slave Gateways**: Questi dispositivi **convertono flussi multimediali digitali tra diverse reti**, come la telefonia tradizionale a commutazione di circuito e le reti IP a commutazione di pacchetto. Sono gestiti dall'MGC ed eseguono i comandi ricevuti da esso. I gateway multimediali possono includere funzioni come transcoding, pacchettizzazione e cancellazione dell'eco.
|
|
3. **Signaling Gateways (SGs)**: Questi gateway sono responsabili per **convertire i messaggi di segnalazione tra diverse reti**, abilitando una comunicazione senza soluzione di continuità tra i sistemi telefonici tradizionali (ad es., SS7) e le reti basate su IP (ad es., SIP o H.323). I gateway di segnalazione sono cruciali per l'interoperabilità e per garantire che le informazioni di controllo delle chiamate siano comunicate correttamente tra le diverse reti.
|
|
|
|
In sintesi, MGCP centralizza la logica di controllo delle chiamate nell'agente di chiamata, semplificando la gestione dei gateway multimediali e di segnalazione, fornendo una migliore scalabilità, affidabilità ed efficienza nelle reti di telecomunicazione.
|
|
|
|
### SCCP (Skinny Client Control Protocol)
|
|
|
|
Skinny Client Control Protocol (SCCP) è un **protocollo di segnalazione e controllo delle chiamate proprietario** di Cisco Systems. È principalmente **utilizzato** per la comunicazione tra **Cisco Unified Communications Manager** (precedentemente noto come CallManager) e telefoni IP Cisco o altri endpoint vocali e video Cisco.
|
|
|
|
SCCP è un protocollo leggero che semplifica la comunicazione tra il server di controllo delle chiamate e i dispositivi endpoint. È chiamato "Skinny" a causa del suo design minimalista e dei requisiti di larghezza di banda ridotti rispetto ad altri protocolli VoIP come H.323 o SIP.
|
|
|
|
I principali componenti di un sistema basato su SCCP sono:
|
|
|
|
1. **Call Control Server**: Questo server, tipicamente un Cisco Unified Communications Manager, gestisce i processi di impostazione, modifica e terminazione delle chiamate, così come altre funzionalità telefoniche come inoltro di chiamata, trasferimento di chiamata e attesa di chiamata.
|
|
2. **SCCP Endpoints**: Questi sono dispositivi come telefoni IP, unità di videoconferenza o altri endpoint vocali e video Cisco che utilizzano SCCP per comunicare con il server di controllo delle chiamate. Si registrano con il server, inviano e ricevono messaggi di segnalazione e seguono le istruzioni fornite dal server di controllo delle chiamate per la gestione delle chiamate.
|
|
3. **Gateways**: Questi dispositivi, come i gateway vocali o i gateway multimediali, sono responsabili per la conversione dei flussi multimediali tra diverse reti, come la telefonia tradizionale a commutazione di circuito e le reti IP a commutazione di pacchetto. Possono anche includere funzionalità aggiuntive, come transcoding o cancellazione dell'eco.
|
|
|
|
SCCP offre un metodo di comunicazione semplice ed efficiente tra i server di controllo delle chiamate Cisco e i dispositivi endpoint. Tuttavia, è importante notare che **SCCP è un protocollo proprietario**, il che può limitare l'interoperabilità con sistemi non Cisco. In tali casi, altri protocolli VoIP standard come SIP potrebbero essere più adatti.
|
|
|
|
### H.323
|
|
|
|
H.323 è una **suite di protocolli** per la comunicazione multimediale, inclusi voce, video e conferenze dati su reti a commutazione di pacchetto, come le reti basate su IP. È stato sviluppato dall'**Unione Internazionale delle Telecomunicazioni** (ITU-T) e fornisce un quadro completo per la gestione delle sessioni di comunicazione multimediale.
|
|
|
|
Alcuni componenti chiave della suite H.323 includono:
|
|
|
|
1. **Terminals**: Questi sono dispositivi endpoint, come telefoni IP, sistemi di videoconferenza o applicazioni software, che supportano H.323 e possono partecipare a sessioni di comunicazione multimediale.
|
|
2. **Gateways**: Questi dispositivi convertono flussi multimediali tra diverse reti, come la telefonia tradizionale a commutazione di circuito e le reti IP a commutazione di pacchetto, abilitando l'interoperabilità tra H.323 e altri sistemi di comunicazione. Possono anche includere funzionalità aggiuntive, come transcoding o cancellazione dell'eco.
|
|
3. **Gatekeepers**: Questi sono componenti opzionali che forniscono servizi di controllo e gestione delle chiamate in una rete H.323. Eseguono funzioni come traduzione degli indirizzi, gestione della larghezza di banda e controllo degli accessi, aiutando a gestire e ottimizzare le risorse di rete.
|
|
4. **Multipoint Control Units (MCUs)**: Questi dispositivi facilitano conferenze multipunto gestendo e mescolando flussi multimediali da più endpoint. Le MCU abilitano funzionalità come il controllo del layout video, il passaggio attivato dalla voce e la presenza continua, rendendo possibile ospitare conferenze su larga scala con più partecipanti.
|
|
|
|
H.323 supporta una gamma di codec audio e video, così come altri servizi supplementari come inoltro di chiamata, trasferimento di chiamata, attesa di chiamata e chiamata in attesa. Nonostante la sua ampia adozione nei primi giorni del VoIP, H.323 è stato gradualmente sostituito da protocolli più moderni e flessibili come il **Session Initiation Protocol (SIP)**, che offre una migliore interoperabilità e una più facile implementazione. Tuttavia, H.323 rimane in uso in molti sistemi legacy e continua a essere supportato da vari fornitori di attrezzature.
|
|
|
|
### IAX (Inter Asterisk eXchange)
|
|
|
|
IAX (Inter-Asterisk eXchange) è un **protocollo di segnalazione e controllo delle chiamate** principalmente utilizzato per la comunicazione tra server Asterisk PBX (Private Branch Exchange) e altri dispositivi VoIP. È stato sviluppato da Mark Spencer, il creatore del software PBX open-source Asterisk, come alternativa ad altri protocolli VoIP come SIP e H.323.
|
|
|
|
IAX è noto per la sua **semplicità, efficienza e facilità di implementazione**. Alcune caratteristiche chiave di IAX includono:
|
|
|
|
1. **Single UDP Port**: IAX utilizza una singola porta UDP (4569) sia per la segnalazione che per il traffico multimediale, il che semplifica il passaggio attraverso firewall e NAT, rendendo più facile il deployment in vari ambienti di rete.
|
|
2. **Binary Protocol**: A differenza dei protocolli basati su testo come SIP, IAX è un protocollo binario, che riduce il consumo di larghezza di banda e lo rende più efficiente per la trasmissione di dati di segnalazione e multimediali.
|
|
3. **Trunking**: IAX supporta il trunking, che consente di combinare più chiamate in una singola connessione di rete, riducendo l'overhead e migliorando l'utilizzo della larghezza di banda.
|
|
4. **Native Encryption**: IAX ha il supporto integrato per la crittografia, utilizzando metodi come RSA per lo scambio di chiavi e AES per la crittografia dei media, fornendo comunicazioni sicure tra gli endpoint.
|
|
5. **Peer-to-Peer Communication**: IAX può essere utilizzato per la comunicazione diretta tra endpoint senza la necessità di un server centrale, abilitando un instradamento delle chiamate più semplice ed efficiente.
|
|
|
|
Nonostante i suoi vantaggi, IAX ha alcune limitazioni, come il suo focus principale sull'ecosistema Asterisk e una minore adozione rispetto a protocolli più consolidati come SIP. Di conseguenza, IAX potrebbe non essere la scelta migliore per l'interoperabilità con sistemi o dispositivi non Asterisk. Tuttavia, per coloro che lavorano all'interno dell'ambiente Asterisk, IAX offre una soluzione robusta ed efficiente per la comunicazione VoIP.
|
|
|
|
## Transmission & Transport Protocols
|
|
|
|
### SDP (Session Description Protocol)
|
|
|
|
SDP (Session Description Protocol) è un **formato basato su testo** utilizzato per descrivere le caratteristiche delle sessioni multimediali, come voce, video o conferenze dati, su reti IP. È stato sviluppato dall'**Internet Engineering Task Force (IETF)** ed è definito nella **RFC 4566**. SDP non gestisce la trasmissione effettiva dei media o l'instaurazione della sessione, ma viene utilizzato in combinazione con altri protocolli di segnalazione, come **SIP (Session Initiation Protocol)**, per negoziare e scambiare informazioni sui flussi multimediali e le loro caratteristiche.
|
|
|
|
Alcuni elementi chiave di SDP includono:
|
|
|
|
1. **Session Information**: SDP descrive i dettagli di una sessione multimediale, inclusi nome della sessione, descrizione della sessione, ora di inizio e ora di fine.
|
|
2. **Media Streams**: SDP definisce le caratteristiche dei flussi multimediali, come il tipo di media (audio, video o testo), il protocollo di trasporto (ad es., RTP o SRTP) e il formato dei media (ad es., informazioni sul codec).
|
|
3. **Connection Information**: SDP fornisce informazioni sull'indirizzo di rete (indirizzo IP) e sul numero di porta dove i media devono essere inviati o ricevuti.
|
|
4. **Attributes**: SDP supporta l'uso di attributi per fornire informazioni aggiuntive e opzionali su una sessione o un flusso multimediale. Gli attributi possono essere utilizzati per specificare varie funzionalità come chiavi di crittografia, requisiti di larghezza di banda o meccanismi di controllo dei media.
|
|
|
|
SDP è tipicamente utilizzato nel seguente processo:
|
|
|
|
1. Una parte iniziante crea una descrizione SDP della sessione multimediale proposta, inclusi i dettagli dei flussi multimediali e le loro caratteristiche.
|
|
2. La descrizione SDP viene inviata alla parte ricevente, solitamente incorporata all'interno di un messaggio di protocollo di segnalazione come SIP o RTSP.
|
|
3. La parte ricevente elabora la descrizione SDP e, in base alle proprie capacità, può accettare, rifiutare o modificare la sessione proposta.
|
|
4. La descrizione SDP finale viene inviata di nuovo alla parte iniziante come parte del messaggio del protocollo di segnalazione, completando il processo di negoziazione.
|
|
|
|
La semplicità e la flessibilità di SDP lo rendono uno standard ampiamente adottato per descrivere sessioni multimediali in vari sistemi di comunicazione, svolgendo un ruolo cruciale nell'instaurazione e nella gestione di sessioni multimediali in tempo reale su reti IP.
|
|
|
|
### RTP / RTCP / SRTP / ZRTP
|
|
|
|
1. **RTP (Real-time Transport Protocol)**: RTP è un protocollo di rete progettato per la consegna di dati audio e video, o altri media in tempo reale, su reti IP. Sviluppato dall'**IETF** e definito nella **RFC 3550**, RTP è comunemente utilizzato con protocolli di segnalazione come SIP e H.323 per abilitare la comunicazione multimediale. RTP fornisce meccanismi per **sincronizzazione**, **sequenziamento** e **timestamping** dei flussi multimediali, aiutando a garantire una riproduzione fluida e tempestiva dei media.
|
|
2. **RTCP (Real-time Transport Control Protocol)**: RTCP è un protocollo complementare a RTP, utilizzato per monitorare la qualità del servizio (QoS) e fornire feedback sulla trasmissione dei flussi multimediali. Definito nella stessa **RFC 3550** di RTP, RTCP **scambia periodicamente pacchetti di controllo tra i partecipanti a una sessione RTP**. Condivide informazioni come perdita di pacchetti, jitter e tempo di andata e ritorno, che aiutano a diagnosticare e adattarsi alle condizioni di rete, migliorando la qualità complessiva dei media.
|
|
3. **SRTP (Secure Real-time Transport Protocol)**: SRTP è un'estensione di RTP che fornisce **crittografia**, **autenticazione dei messaggi** e **protezione contro la ripetizione** per i flussi multimediali, garantendo una trasmissione sicura di dati audio e video sensibili. Definito nella **RFC 3711**, SRTP utilizza algoritmi crittografici come AES per la crittografia e HMAC-SHA1 per l'autenticazione dei messaggi. SRTP è spesso utilizzato in combinazione con protocolli di segnalazione sicuri come SIP su TLS per fornire sicurezza end-to-end nella comunicazione multimediale.
|
|
4. **ZRTP (Zimmermann Real-time Transport Protocol)**: ZRTP è un protocollo di accordo di chiavi crittografiche che fornisce **crittografia end-to-end** per i flussi multimediali RTP. Sviluppato da Phil Zimmermann, il creatore di PGP, ZRTP è descritto nella **RFC 6189**. A differenza di SRTP, che si basa su protocolli di segnalazione per lo scambio di chiavi, ZRTP è progettato per funzionare indipendentemente dal protocollo di segnalazione. Utilizza **scambio di chiavi Diffie-Hellman** per stabilire un segreto condiviso tra le parti comunicanti, senza richiedere fiducia preventiva o un'infrastruttura di chiavi pubbliche (PKI). ZRTP include anche funzionalità come **Short Authentication Strings (SAS)** per proteggere contro attacchi man-in-the-middle.
|
|
|
|
Questi protocolli svolgono ruoli essenziali nel **fornire e proteggere la comunicazione multimediale in tempo reale su reti IP**. Mentre RTP e RTCP gestiscono la trasmissione effettiva dei media e il monitoraggio della qualità, SRTP e ZRTP garantiscono che i media trasmessi siano protetti contro intercettazioni, manomissioni e attacchi di ripetizione.
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|