SIP - Gruppo Telecomunicazioni e Tecnologie dell`Informazione
Transcript
SIP - Gruppo Telecomunicazioni e Tecnologie dell`Informazione
Servizi Applicativi su Internet SIP Session Initiation Protocol Ing. Pierluigi Gallo Introduzione 1/2 2 Protocollo di segnalazione basato su IP Standard IETF (poi accettato anche da 3GPP) Utilizza alcuni paradigmi e strumenti di Internet (URL, DNS, proxy, …) Protocollo di controllo e segnalazione per la gestione delle sessioni tra utenti Registrations, invitations, acceptations, and disconnections Non dipende dai protocolli di livello inferiore (TCP, UDP, X.25, ATM, …) Ing. Pierluigi Gallo a.a. 2010/2011 Introduzione 2/2 3 1996 - Henning Schulzrinne, Mark Handley Prima RFC nel 1999 (RFC n. 2543) RFC 3261 del 2000 Alternativa ad H.323 Flessibile e semplice Offre funzionalità avanzate Consente di gestire sessioni I cui dati possono essere di diverso tipo: Audio (Fonia) Video Instant messaging Notifica presenza Ing. Pierluigi Gallo a.a. 2010/2011 4 SIP - Session Initiation Protocol Controlla la segnalazione su reti IP Determina la locazione del terminale chiamato Determina la sua eventuale disponibilità Supporta trasferimento e terminazione chiamata E’ basato su un modello clientserver E’ un protocollo text-based (come HTTP) basato su richieste/ risposte Ing. Pierluigi Gallo Inizia, modifica e termina la sessione Assume che il livello di trasporto sia inattendibile Non definisce attributi di sessione rimanendo indipendente Supporta servizi unicast e multicast Supporta la mobilità Usato per il VoIP a.a. 2010/2011 SIP ed il livello applicazione 5 Livello applicazione DHCP, HTTP, HTTPS , SMTP, POP3, IMAP, FTP, SFTP, DNS, SSH, IRC, SNMP, SIP, RTSP, Rsync, Telnet, HSRP, RTP, BGP, RIP, IGRP,... Livello di trasporto TCP, UDP, SCTP, DCCP ... Livello di rete IPv4, IPv6, ICMP, ICMPv6, IGMP, IPsec, OSPF ... Data link Ethernet, WiFi, PPP, Token ring, ARP, ATM, FDDI, LLC, SLIP, WiMAX, HSDPA, MPLS ... Ing. Pierluigi Gallo a.a. 2010/2011 Caratteristiche 6 E’ un protocollo di livello applicazione Supporta i seguenti protocolli: SDP (Session Description Protocol) per negoziare le caratteristiche della sessione multimediale RTP (Real-time Transport Protocol) per il trasporto dei dati multimediali RTSP (Realt-Time Streaming Protocol) RTCP (Real Time Control Protocol) per monitorare la qualità del servizio e per comunicare informazioni sui partecipanti di una sessione in corso MGCP (Media Gateway Control Protocol) per controllare un eventuale accesso alla PSTN SAP (Session Announcement Protocol) Ing. Pierluigi Gallo a.a. 2010/2011 7 Caratteristiche Porta di default 5060 (TCP UDP) non criptato porta 5061 (TLS) criptato sessioni unicast e multicast ciascuna sessione puo’ riguardare uno o piu’ flussi multimediali I flussi multimediali sono trasportati da altri protocolli RTP/RTSP (SIP si occupa solo della segnalazione) I parametri vengono negoziati mediante altri protocolli porte, protocolli, codec, Ing. Pierluigi Gallo a.a. 2010/2011 Applicazioni 8 chiamate voce videoconferenze instant messaging presence notification trasferimento files giochi online mobilita’ Ing. Pierluigi Gallo a.a. 2010/2011 Altri protocolli di segnalazione 9 segnalazione PSTN Ing. Pierluigi Gallo a.a. 2010/2011 10 Architettura Segnalazione e dati viaggiano in flussi differenti UAC: user agent client che fa le richieste UAS: user agent che risponde alle richieste UAC CHIAMANTE INVITE UAS UAC SIP PROXY UAC UAS INVITE UAS CHIAMATO UAC BYE Ing. Pierluigi Gallo a.a. 2010/2011 SIP: Funzionalità di base 11 User location: dispositivo terminale usato per la comunicazione User capabilities: mezzo e parametri di trasmissione User availability: capacità, disponibilità e volontà del chiamato di stabilire la comunicazione Call setup: "ringing", instaurazione di una chiamata tra chiamante e chiamato (in modo simile alla PSTN) Call handling: gestione della chiamata dall’instaurazione all’abbattimento Ing. Pierluigi Gallo a.a. 2010/2011 Lo stack protocollare SIP Audio/Video Coding RTP/RTCP 12 SIP UDP o TCP (tipicamente su porta 5060) IP Network Access Layer (ATM, Ethernet, PPP, …) Ing. Pierluigi Gallo a.a. 2010/2011 Elementi del sistema SIP 13 UA - User Agent UAC - User Agent Client (per l’invio delle richieste) UAS - User Agent Server (per ricevere i messaggi ed inviare le risposte) Registrar Server (contiene le informazioni di accesso agli UA per la risoluzione degli indirizzi SIP) Location Server (contiene le corrispondenze tra gli UA e gli indirizzi Ip e consente una loro variazione dinamica per gestire la mobilità) Network Server Proxy Redirect Ing. Pierluigi Gallo a.a. 2010/2011 14 Indirizzi SIP Sono identificati attraverso un URL (Universal Resource Locator) SIP Il formato è identico a quello degli indirizzi e-mail: user@host Nome utente Oppure Numero di telefono Nome Dominio Oppure Indirizzo IP Esempi: [email protected] [email protected];user=phone nomeutente:password@host:port;uri-parameters?headers Ing. Pierluigi Gallo a.a. 2010/2011 Messaggi: 15 • Messaggi di testo simili all’HTTP • Start line – Request (client-server) – Response (server-client) • Uno o più campi di header • Chiamante e chiamato • oggetto • Una linea vuota che simboleggia le fine degli header • Message body (opzionale) • Tipo di sessione • Tipo di protocollo Ing. Pierluigi Gallo a.a. 2010/2011 Message – Transaction - Dialog 16 • Un messaggio è una richiesta o una risposta • L’insieme di una richiesta e della/e successiva/e risposta/e viene detta Transaction • Una transazione è individuata da una transaction-ID che tiene conto della sorgente, del destinatario e del numero di sequenza • Una relazione tra entità paritetiche che si scambiano richieste e risposte viene detta Dialog Ing. Pierluigi Gallo a.a. 2010/2011 17 Metodi Sono composte da: Metodi Request URI (Universal Resource Identifier) Versione del protocollo SIP in uso I metodi possibili sono: Invite Ack Options Bye Cancel Register Info Ing. Pierluigi Gallo a.a. 2010/2011 Metodi 18 Un messaggio SIP contiene un metodo Dopo I metodi vengono gli headers Riga vuota Headers del protocollo SDP Ing. Pierluigi Gallo a.a. 2010/2011 19 Richieste Ing. Pierluigi Gallo a.a. 2010/2011 Register 20 Consente ad un client di registrare su un register server un utente identificato dall’indirizzo contenuto nel campo to Registrazione su più server diverse registrazioni su un unico server Ing. Pierluigi Gallo a.a. 2010/2011 Invite 21 Inizia una sessione invitando il chiamato a parteciparvi Indicazione del chiamante e del chiamato Specifica il tipo di dati Contiene, tipicamente, una descrizione di sessione scritta in SDP, con le informazioni sufficienti all’instaurazione della connessione Viene confermato con un ACK sulla risposta finale Ing. Pierluigi Gallo a.a. 2010/2011 Cancel 22 Permette ad un client di cancellare una richiesta inviata precedentemente Termina una richiesta pendente Si usa cancel quando la sessione non ha ancora avuto inizio, altrimenti BYE Ing. Pierluigi Gallo a.a. 2010/2011 BYE 23 Abbatte una sessione (Dialog) Può essere inviato sia dal chiamante che dal chiamato Ing. Pierluigi Gallo a.a. 2010/2011 Info 24 • Permette lo scambio di informazioni personali lungo un percorso di segnalazione • Consente lo scambio di informazioni di sessioni in corso • DTMF Ing. Pierluigi Gallo a.a. 2010/2011 25 Risposte Ing. Pierluigi Gallo a.a. 2010/2011 26 Risposte Sei classi di risposte: Informational 1XX Success 2XX Redirection 3XX Request Failure 4XX Server Failure 5XX Global Failure 6XX Tutte le risposte eccetto le 1xx sono considerate final e quindi vanno seguite da ACK Ing. Pierluigi Gallo a.a. 2010/2011 27 Informational 1XX Viene inviato quando il server sta contattando il chiamato e il tempo risulta superiore a 200ms Esempio: 180 - ringing - l’utente localizzato è in attesa di risp. Trying Success 2XX • Indica che la richiesta è stata accettata con successo • Esempio: 200 - messaggio di OK Redirection 3XX • Vengono passate informazioni riguardo alla nuova posizione dell’utente cercato Ing. Pierluigi Gallo a.a. 2010/2011 Request Failure 4XX 28 Richiesta fallita a causa del client Esempio: 404 - not found - utente non reperibile Server Failure 5XX • Richiesta fallita a causa del server • Esempio: 501 - not implemented - il server non supporta le modalità necessarie per soddisfare la richiesta Global Failure 6XX • Il server non risponde ad informazioni definitive Ing. Pierluigi Gallo a.a. 2010/2011 29 SIP Diagram A ……. Proxy ……. Proxy ……. B (Registrar local services) Register Register 200 Ok 200 Ok Invite 100 Trying 180 Ringing 200 Ok Invite 100 Trying 180 Ringing 200 Ok Invite 180 Ringing 200 Ok Ack Media Session Bye 200 Ok Ing. Pierluigi Gallo a.a. 2010/2011 Registrar server 30 Server dedicato alla registrazione di un utente alla rete Puo’ essere integrato all’interno del Proxy le richieste di registrazione vengono memorizzate all’interno dei location server, i quali forniscono la corrispondenza tra indirizzo e location Una registrazione puo’ essere effettuata in multicast (sip.mcast.net 224.0.1.75) Ing. Pierluigi Gallo a.a. 2010/2011 Registration and invite 31 Tratto dalla RFC 3261 Ing. Pierluigi Gallo a.a. 2010/2011 32 Processo di registrazione REGISTER sip:registrar.work.com SIP/2.0 SIP/2.0 200 OK REGISTER sip:registrar.work.com SIP/2.0 Via: SIP/2.0/UDP station1.work.com; branch=z9hG4bK123 Max-Forwards: 70 From: SIP: [email protected];tag=123456 To: sip:[email protected] Call-ID: [email protected] Cseq: 1 REGISTER Contact: sip: [email protected] Expires: 7200 Content-Length: 0 SIP/2.0 200 OK Via: SIP/2/0/UDP station1.work.com; branch=z9hG4bK123 From: sip:[email protected] Call-ID: [email protected] CSEQ: 1 REGISTER Contact: sip:[email protected] Expires: 3600 Content-Length: 0 Ing. Pierluigi Gallo a.a. 2010/2011 Proxy server Gestisce le richieste o le inoltra ad altri server Può essere usato per inoltrare una chiamata Ing. Pierluigi Gallo 33 Redirect servers 34 Map the destination address to zero or more new addresses Do not initiate any SIP requests Ing. Pierluigi Gallo a.a. 2010/2011 SIP Call Establishment Ing. Pierluigi Gallo 35 a.a. 2010/2011 Chiamata ad un numero 36 Prova a chiamare lo stesso utente su più destinazioni Il primo che risponde va a buon fine, gli altri vengono chiusi Ing. Pierluigi Gallo a.a. 2010/2011 Header: 37 Consente di specificare: Chiamante Chiamato Percorso Tipo di messaggio Il protocollo prevede 37 tipi di intestazioni, divisi in 4 gruppi: Intestazioni generale (richieste e risposte) Intestazioni di entità (relative a tipo e lunghezza del messaggio) Intestazioni di richiesta (consentono informazioni di richiesta aggiuntive) Intestazioni di risposta (consentono informazioni di risposta aggiuntive) Ing. Pierluigi Gallo a.a. 2010/2011 Gestione della mobilità 38 Il messaggio Register consente la registrazione di uno UA nel Registrar Server della rete corrente Il Registrar Server può essere individuato: Mandando un messaggio multicast ad un indirizzo noto Contattando l’Home Domain Registrar (individuabile attraverso il server DNS) Usando SLP (Server Location Protocol) SLP è stato progettato per facilitare l’operazione di discovery di risorse della rete quali Web Servers, stampanti, fax… Ing. Pierluigi Gallo a.a. 2010/2011 Uno scenario di funzionamento Proxy/Registrar Server Register UA 200 OK 39 UA Registration Invite Invite 100 Trying 180 Ringing 180 Ringing 200 OK 200 OK Ack Ack Call Setup Bye Bye 100 Trying 200 OK 200 OK Teardown Ing. Pierluigi Gallo a.a. 2010/2011 Dettaglio di un pacchetto “Invite” 40 INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP vo1.hq.university.com To: Bob <sip:[email protected]> From: Alice <sip:[email protected]>; tag=18271 Call-ID: [email protected] CSeq: 12921 INVITE Contact: <sip:[email protected]> Alice invita Bob. Il pacchetto Invite viene inoltrato dallo UA di Alice al proxy server vo1.hq.university.com. La chiamata viene indentificata univocamente grazie al campo Call-ID. Ing. Pierluigi Gallo a.a. 2010/2011 a.a. 2010/2011 Transactions Ing. Pierluigi Gallo 41 42 Transazione UAC Ing. Pierluigi Gallo Outbound Proxy Inbound proxy response Server transaction Client transaction response request Server transaction Client transaction response request Server transaction Client transaction request UAS a.a. 2010/2011 Client Transaction 43 Una client transaction é implementata con una State Machine TU = transaction user (ogni entita’ SIP eccetto i proxy stateless) Quando TU vuole iniziare una nuova transaction, crea una client transaction la quale inizia l’esecuzione di una macchina a stati (ce ne sono diverse in base al tipo di transaction) Due tipi di client transaction INVITE transaction (relativa ad una richiesta INVITE) hanno una durata maggiore rispetto a quelle di altro tipo in quanto richiedono l’intervento umano per accettare la chiamata Non-INVITE transaction (per gli altri tipi di richieste) Terminano immediatamente Ing. Pierluigi Gallo a.a. 2010/2011 44 INVITE transaction A ……. Proxy ……. Proxy ……. B (Registrar local services) Register Register 200 Ok 200 Ok 3-way handshake Invite 100 Trying 180 Ringing 200 Ok Invite 100 Trying 180 Ringing 200 Ok Invite 180 Ringing 200 Ok Ack Media Session Bye Ing. Pierluigi Gallo 200 Ok a.a. 2010/2011 INVITE transaction 45 Se il protocollo di trasporto é inaffidabile (UDP), la client transaction ritrasmette le richieste con un intervallo che inizialmente é T1 e poi va raddoppiando ad ogni ritrasmissione Se il protocollo di trasporto é affidabile -> no ritrasmissione T = 2n Ti con n = numero di ritrasmissioni Ti é l’RTT stimato (default 500 ms) Ti influenza tutti gli altri timers Dopo la ricezione di un messaggio 1XX cessano le ritrasmissioni Ing. Pierluigi Gallo a.a. 2010/2011 FSM INVITE transaction 46 RFC 3261 Ing. Pierluigi Gallo a.a. 2010/2011 47 SIP Model (1) Simplified message formats: REGISTER <Domain> <To> <From> <Contact(device) > OK <To> <From> INVITE <To> <From><Via><Content> BYE <To> <From> ACK <To> <From> Ing. Pierluigi Gallo a.a. 2010/2011 SIP: aspetti di sicurezza 48 Model SIP URI registration and look for registration hijack attacks. Model interdomain session setup and look for message tampering and proxy impersonation attacks. Add proxy-to-proxy authentication and secrecy (TLS) to model. Ing. Pierluigi Gallo a.a. 2010/2011 Authentication 49 Server Authentication: using TLS: server offers a certificate to the UA, preventing proxy impersonating User Authentication: using HTTP digest: server challenges a user with a 401 Proxy Authentication, preventing registration hijacking Ing. Pierluigi Gallo a.a. 2010/2011 Secretezza del messaggio 50 Mechanisms that rely on existence of end-user certificates are seriously limited (S/MIME). May use self-signed certificates Susceptible to obvious MITM attack, but… Attacker can only exploit on initial key exchange. Difficult for attacker to remain in path of all future dialogs. Same vulnerability in SSH => key fingerprints. For VoIP, users could read off key fingerprint. Or, use preconfigured certificates when there is an established trust between all SIP entities. Ing. Pierluigi Gallo a.a. 2010/2011 Attacchi DoS 51 Floods of messages directed at proxies can lock up resources on the server. UAs and proxies should challenge questionable requests. Mutual authentication of proxies (TLS) Reduces potential for intermediaries to introduce falsified requests or responses. Harder for attackers to make innocent SIP nodes into agents of amplification. Ing. Pierluigi Gallo a.a. 2010/2011 SIP Vulnerabilities 52 Proxy Impersonation Message Tampering Session Teardown Spoofed BYEs Denial of Service Malformed packets REGISTER and INVITE flooding Registration Hijacking Ing. Pierluigi Gallo a.a. 2010/2011 53 SIP Security Registration hijacking Authenticate originators of requests Proxy impersonation Authenticate servers Message tampering Secure body and certain headers end-toend Session teardown Authenticate sender of BYE Confidentiality so attacker can’t learn To, From tags Denial of Service Authenticate and authorize registrations Ing. Pierluigi Gallo a.a. 2010/2011 a.a. 2010/2011 Esercitazione UA, Proxy, Java API e programmazione Ing. Pierluigi Gallo 54 Esercitazione SIP 55 Visualizzazione dei messaggi tramite Wireshark Utilizzo di un SIP client (softphone e.g. Xlite) Le JAIN API ed implementazione di un semplice UA Ing. Pierluigi Gallo a.a. 2010/2011 Software SIP open source 56 Server: Sip X SER – Sip Express Router Asterisk User Agents: X-Lite SoftPhone Windows Messenger Ing. Pierluigi Gallo a.a. 2010/2011 Jain: API Java per SIP 57 Fornisce un’interfaccia standard in Java allo stack di segnalazione SIP – interfaccia allo stack – interfaccia ai messaggi – gestione degli eventi e della loro semantica – garantisce la portabilità delle applicazioni API in Java per SIP Ing. Pierluigi Gallo a.a. 2010/2011 Caratteristiche del Server: 58 Configurabilità dello stack SIP Implementazione del Location/Registrar Accessibilità controllata dall’amministratore Gestione dinamica dei bind secondo le specifiche di protocollo Implementazione del Proxy Statefull Stetelless Ing. Pierluigi Gallo a.a. 2010/2011 Implementazione del Registrar 59 Dall’RFC 3261: When receiving a REGISTER request, a registrar follows these steps: The registrar inspects the Request-URI to determine whether it has access to bindings for the domain identified in the Request-URI. The registrar extracts the address-of-record from the To header field of the request. If the address-of-record is not valid for the domain in the Request-URI, the registrar MUST send a 404 (Not Found) response and skip the remaining steps. Ing. Pierluigi Gallo a.a. 2010/2011 Implementazione del Registrar (2) 60 Dall’RFC 3261: The registrar now processes each contact address in the Contact header field in turn. For each address, it determines the expiration interval The registrar returns a 200 (OK) response. The response MUST contain Contact header field values enumerating all current bindings. Ing. Pierluigi Gallo a.a. 2010/2011 Implementazione del Proxy (1) 61 Dall’RFC 3261: For all new requests, including any with unknown methods, an element intending to proxy the request MUST: 1. Validate the request 2. Preprocess routing information 3. Determine target(s) for the request 4. Forward the request to each target 5. Process all responses Ing. Pierluigi Gallo a.a. 2010/2011 Implementazione del Proxy (2) 62 Dettaglio del “Forward the request to each target” (dall’RFC 3261): 1. Make a copy of the received request 2. Update the Request-URI 3. Update the Max-Forwards header field 4. Optionally add a Record-route header field value 5. Optionally add additional header fields 6. Postprocess routing information Ing. Pierluigi Gallo a.a. 2010/2011 Implementazione del Proxy (3) 63 Dall’RFC 3261: 7. Determine the next-hop address, port, and transport 8. Add a Via header field value 9. Add a Content-Length header field if necessary 10. Forward the new request 11. Set timer C Ing. Pierluigi Gallo a.a. 2010/2011 Link utili 64 SIP Center: www.sipcenter.com SIP Forum: www.sipforum.org Lista di Server Pubblici SIP: www.cs.columbia.edu/sip/servers.html GNU o SIP library: www.fsf.org/software/osip/ Ing. Pierluigi Gallo a.a. 2010/2011
Documenti analoghi
presentazione in formato pdf
A livello applicativo i problemi che si possono avere sono molto più preoccupanti
data la complessità dei sistemi utilizzati, infatti più un sistema è complesso e più
facile risulta la probabilità ...