98 lines
13 KiB
Markdown

# Osnovni VoIP protokoli
{{#include ../../../banners/hacktricks-training.md}}
## Protokoli signalizacije
### SIP (Session Initiation Protocol)
Ovo je industrijski standard, za više informacija pogledajte:
{{#ref}}
sip-session-initiation-protocol.md
{{#endref}}
### MGCP (Media Gateway Control Protocol)
MGCP (Media Gateway Control Protocol) je **protokol za signalizaciju** i **kontrolu poziva** opisan u RFC 3435. Deluje u centralizovanoj arhitekturi, koja se sastoji od tri glavne komponente:
1. **Agent za pozive ili Kontroler medijskih prolaza (MGC)**: Glavni prolaz u MGCP arhitekturi je odgovoran za **upravljanje i kontrolu medijskih prolaza**. Rukuje procesima postavljanja, modifikacije i prekida poziva. MGC komunicira sa medijskim prolazima koristeći MGCP protokol.
2. **Medijski prolazi (MGs) ili Robusni prolazi**: Ovi uređaji **konvertuju digitalne medijske tokove između različitih mreža**, kao što su tradicionalna telefonija sa preklapanjem i IP mreže sa paketima. Njima upravlja MGC i izvršavaju komande koje od njega dobijaju. Medijski prolazi mogu uključivati funkcije kao što su transkodiranje, paketizacija i poništavanje eha.
3. **Signalizacijski prolazi (SGs)**: Ovi prolazi su odgovorni za **konvertovanje signalizacijskih poruka između različitih mreža**, omogućavajući nesmetanu komunikaciju između tradicionalnih telefonskih sistema (npr. SS7) i IP mreža (npr. SIP ili H.323). Signalizacijski prolazi su ključni za interoperabilnost i osiguranje da se informacije o kontroli poziva pravilno komuniciraju između različitih mreža.
Ukratko, MGCP centralizuje logiku kontrole poziva u agentu za pozive, što pojednostavljuje upravljanje medijskim i signalizacijskim prolazima, pružajući bolju skalabilnost, pouzdanost i efikasnost u telekomunikacionim mrežama.
### SCCP (Skinny Client Control Protocol)
Skinny Client Control Protocol (SCCP) je **proprietarni protokol za signalizaciju i kontrolu poziva** u vlasništvu Cisco Systems. Primarno se **koristi** za komunikaciju između **Cisco Unified Communications Manager** (ranije poznatog kao CallManager) i Cisco IP telefona ili drugih Cisco glasovnih i video uređaja.
SCCP je lagan protokol koji pojednostavljuje komunikaciju između servera za kontrolu poziva i krajnjih uređaja. Naziva se "Skinny" zbog svog minimalističkog dizajna i smanjenih zahteva za propusnost u poređenju sa drugim VoIP protokolima kao što su H.323 ili SIP.
Glavne komponente sistema zasnovanog na SCCP-u su:
1. **Server za kontrolu poziva**: Ovaj server, obično Cisco Unified Communications Manager, upravlja procesima postavljanja, modifikacije i prekida poziva, kao i drugim telefonskim funkcijama kao što su preusmeravanje poziva, prebacivanje poziva i zadržavanje poziva.
2. **SCCP krajnji uređaji**: Ovi uređaji, kao što su IP telefoni, jedinice za video konferencije ili drugi Cisco glasovni i video uređaji, koriste SCCP za komunikaciju sa serverom za kontrolu poziva. Registruju se kod servera, šalju i primaju signalizacijske poruke i prate uputstva koja im daje server za kontrolu poziva za upravljanje pozivima.
3. **Prolazi**: Ovi uređaji, kao što su glasovni prolazi ili medijski prolazi, odgovorni su za konvertovanje medijskih tokova između različitih mreža, kao što su tradicionalna telefonija sa preklapanjem i IP mreže sa paketima. Mogu takođe uključivati dodatne funkcionalnosti, kao što su transkodiranje ili poništavanje eha.
SCCP nudi jednostavnu i efikasnu metodu komunikacije između Cisco servera za kontrolu poziva i krajnjih uređaja. Međutim, vredi napomenuti da je **SCCP proprietarni protokol**, što može ograničiti interoperabilnost sa ne-Cisco sistemima. U takvim slučajevima, drugi standardni VoIP protokoli kao što je SIP mogu biti pogodniji.
### H.323
H.323 je **skup protokola** za multimedijalnu komunikaciju, uključujući glas, video i konferencije podataka preko mreža sa paketima, kao što su IP mreže. Razvila ga je **Međunarodna telekomunikaciona unija** (ITU-T) i pruža sveobuhvatan okvir za upravljanje multimedijalnim komunikacionim sesijama.
Neki ključni sastavni delovi H.323 skupa uključuju:
1. **Terminali**: Ovi su krajnji uređaji, kao što su IP telefoni, sistemi za video konferencije ili softverske aplikacije, koji podržavaju H.323 i mogu učestvovati u multimedijalnim komunikacionim sesijama.
2. **Prolazi**: Ovi uređaji konvertuju medijske tokove između različitih mreža, kao što su tradicionalna telefonija sa preklapanjem i IP mreže sa paketima, omogućavajući interoperabilnost između H.323 i drugih komunikacionih sistema. Mogu takođe uključivati dodatne funkcionalnosti, kao što su transkodiranje ili poništavanje eha.
3. **Gatekeepers**: Ovi su opcioni sastavni delovi koji pružaju usluge kontrole i upravljanja pozivima u H.323 mreži. Izvršavaju funkcije kao što su prevođenje adresa, upravljanje propusnošću i kontrola pristupa, pomažući u upravljanju i optimizaciji mrežnih resursa.
4. **Multipoint Control Units (MCUs)**: Ovi uređaji olakšavaju multipoint konferencije upravljanjem i mešanjem medijskih tokova iz više krajnjih uređaja. MCUs omogućavaju funkcije kao što su kontrola rasporeda videa, prebacivanje aktiviranjem glasa i kontinuirana prisutnost, omogućavajući organizovanje velikih konferencija sa više učesnika.
H.323 podržava niz audio i video kodeka, kao i druge dodatne usluge kao što su preusmeravanje poziva, prebacivanje poziva, zadržavanje poziva i čekanje poziva. Iako je široko usvojen u ranim danima VoIP-a, H.323 je postepeno zamenjen modernijim i fleksibilnijim protokolima kao što je **Session Initiation Protocol (SIP)**, koji nudi bolju interoperabilnost i lakšu implementaciju. Ipak, H.323 se i dalje koristi u mnogim nasleđenim sistemima i nastavlja da ga podržavaju različiti dobavljači opreme.
### IAX (Inter Asterisk eXchange)
IAX (Inter-Asterisk eXchange) je **protokol za signalizaciju i kontrolu poziva** koji se primarno koristi za komunikaciju između Asterisk PBX (Privatna centralna telefonska centrala) servera i drugih VoIP uređaja. Razvio ga je Mark Spencer, tvorac Asterisk open-source PBX softvera, kao alternativu drugim VoIP protokolima kao što su SIP i H.323.
IAX je poznat po svojoj **jednostavnosti, efikasnosti i lakoći implementacije**. Neke ključne karakteristike IAX-a uključuju:
1. **Jedan UDP port**: IAX koristi jedan UDP port (4569) za signalizaciju i medijski saobraćaj, što pojednostavljuje prolaz kroz vatrozid i NAT, olakšavajući implementaciju u različitim mrežnim okruženjima.
2. **Binarni protokol**: Za razliku od protokola zasnovanih na tekstu kao što je SIP, IAX je binarni protokol, što smanjuje njegovu potrošnju propusnosti i čini ga efikasnijim za prenos signalizacijskih i medijskih podataka.
3. **Trunking**: IAX podržava trunking, što omogućava kombinovanje više poziva u jednu mrežnu vezu, smanjujući preopterećenje i poboljšavajući iskorišćenje propusnosti.
4. **Nativna enkripcija**: IAX ima ugrađenu podršku za enkripciju, koristeći metode kao što su RSA za razmenu ključeva i AES za enkripciju medija, pružajući sigurnu komunikaciju između krajnjih uređaja.
5. **Peer-to-Peer komunikacija**: IAX se može koristiti za direktnu komunikaciju između krajnjih uređaja bez potrebe za centralnim serverom, omogućavajući jednostavnije i efikasnije usmeravanje poziva.
I pored svojih prednosti, IAX ima neka ograničenja, kao što je primarni fokus na Asterisk ekosistem i manja rasprostranjenost u poređenju sa etabliranim protokolima kao što je SIP. Kao rezultat, IAX možda neće biti najbolji izbor za interoperabilnost sa ne-Asterisk sistemima ili uređajima. Međutim, za one koji rade unutar Asterisk okruženja, IAX nudi robusno i efikasno rešenje za VoIP komunikaciju.
## Protokoli prenosa i transporta
### SDP (Session Description Protocol)
SDP (Session Description Protocol) je **format zasnovan na tekstu** koji se koristi za opisivanje karakteristika multimedijalnih sesija, kao što su glas, video ili konferencije podataka, preko IP mreža. Razvila ga je **Internet Engineering Task Force (IETF)** i definisan je u **RFC 4566**. SDP ne upravlja stvarnim prenosom medija ili uspostavljanjem sesije, već se koristi u kombinaciji sa drugim signalizacijskim protokolima, kao što je **SIP (Session Initiation Protocol)**, za pregovaranje i razmenu informacija o medijskim tokovima i njihovim atributima.
Neki ključni elementi SDP-a uključuju:
1. **Informacije o sesiji**: SDP opisuje detalje multimedijalne sesije, uključujući naziv sesije, opis sesije, vreme početka i vreme završetka.
2. **Medijski tokovi**: SDP definiše karakteristike medijskih tokova, kao što su tip medija (audio, video ili tekst), transportni protokol (npr. RTP ili SRTP) i format medija (npr. informacije o kodeku).
3. **Informacije o vezi**: SDP pruža informacije o mrežnoj adresi (IP adresa) i broju porta na koji bi mediji trebali biti poslati ili primljeni.
4. **Atributi**: SDP podržava korišćenje atributa za pružanje dodatnih, opcionalnih informacija o sesiji ili medijskom toku. Atributi se mogu koristiti za specificiranje različitih funkcija kao što su ključevi za enkripciju, zahtevi za propusnost ili mehanizmi kontrole medija.
SDP se obično koristi u sledećem procesu:
1. Inicirajuća strana kreira SDP opis predložene multimedijalne sesije, uključujući detalje o medijskim tokovima i njihovim atributima.
2. SDP opis se šalje primajućoj strani, obično ugrađen u poruku signalizacijskog protokola kao što su SIP ili RTSP.
3. Primajuća strana obrađuje SDP opis, i na osnovu svojih mogućnosti, može prihvatiti, odbiti ili modifikovati predloženu sesiju.
4. Konačni SDP opis se šalje nazad inicirajućoj strani kao deo poruke signalizacijskog protokola, završavajući proces pregovaranja.
Jednostavnost i fleksibilnost SDP-a čine ga široko usvojenim standardom za opisivanje multimedijalnih sesija u raznim komunikacionim sistemima, igrajući ključnu ulogu u uspostavljanju i upravljanju real-time multimedijalnim sesijama preko IP mreža.
### RTP / RTCP / SRTP / ZRTP
1. **RTP (Real-time Transport Protocol)**: RTP je mrežni protokol dizajniran za isporuku audio i video podataka, ili drugih medija u realnom vremenu, preko IP mreža. Razvijen od strane **IETF** i definisan u **RFC 3550**, RTP se obično koristi sa signalizacijskim protokolima kao što su SIP i H.323 kako bi omogućio multimedijalnu komunikaciju. RTP pruža mehanizme za **sinhronizaciju**, **sekvenciranje** i **vremensko označavanje** medijskih tokova, pomažući da se osigura glatko i pravovremeno reprodukovanje medija.
2. **RTCP (Real-time Transport Control Protocol)**: RTCP je prateći protokol za RTP, koji se koristi za praćenje kvaliteta usluge (QoS) i pružanje povratnih informacija o prenosu medijskih tokova. Definisan u istom **RFC 3550** kao RTP, RTCP **periodično razmenjuje kontrolne pakete između učesnika u RTP sesiji**. Deljenje informacija kao što su gubitak paketa, jitter i vreme povratka pomaže u dijagnostikovanju i prilagođavanju mrežnim uslovima, poboljšavajući ukupni kvalitet medija.
3. **SRTP (Secure Real-time Transport Protocol)**: SRTP je proširenje RTP-a koje pruža **enkripciju**, **autentifikaciju poruka** i **zaštitu od ponovnog korišćenja** za medijske tokove, osiguravajući sigurnu transmisiju osetljivih audio i video podataka. Definisan u **RFC 3711**, SRTP koristi kriptografske algoritme kao što su AES za enkripciju i HMAC-SHA1 za autentifikaciju poruka. SRTP se često koristi u kombinaciji sa sigurnim signalizacijskim protokolima kao što je SIP preko TLS kako bi se obezbedila end-to-end sigurnost u multimedijalnoj komunikaciji.
4. **ZRTP (Zimmermann Real-time Transport Protocol)**: ZRTP je protokol za dogovor o kriptografskim ključevima koji pruža **end-to-end enkripciju** za RTP medijske tokove. Razvio ga je Phil Zimmermann, tvorac PGP-a, ZRTP je opisan u **RFC 6189**. Za razliku od SRTP-a, koji se oslanja na signalizacijske protokole za razmenu ključeva, ZRTP je dizajniran da funkcioniše nezavisno od signalizacijskog protokola. Koristi **Diffie-Hellman razmenu ključeva** za uspostavljanje zajedničke tajne između komunikacionih strana, bez potrebe za prethodnim poverenjem ili infrastrukturom javnog ključa (PKI). ZRTP takođe uključuje funkcije kao što su **Kratke autentifikacione niske (SAS)** za zaštitu od napada "čovek u sredini".
Ovi protokoli igraju ključne uloge u **isporuci i obezbeđivanju real-time multimedijalne komunikacije preko IP mreža**. Dok RTP i RTCP upravljaju stvarnim prenosom medija i praćenjem kvaliteta, SRTP i ZRTP osiguravaju da je preneseni medij zaštićen od prisluškivanja, manipulacije i napada ponovnog korišćenja.
{{#include ../../../banners/hacktricks-training.md}}