Slides of the talk Giuseppe Dongu gave at the HTML5 Frontend Development @L'Aquila (Italy). 13th November 2013.
Speaker: Giuseppe Dongu (Smyrtle Cyber Security)
Abstract:
WebRTC si sta imponendo come una delle più interessanti novità degli ultimi anni, giocando il ruolo di ponte tra due mondi fino a poco tempo fa considerati separati: il web e l'ip communication. In questa chiacchierata, daremo un'occhiata a come questo ponte esista, implementato ed integrato in HTML5.
2. Cosa è WebRTC
●
Web Real-Time Communications
–
–
Lavoro comune di W3C, IETF, Google, Mozilla, Opera
e (forse) Microsoft. Apple ??
–
●
Standard e API per permettere la comunicazione realtime direttamente fra browser
Tutte le caratteristiche accessibili via tag HTML5
standard e API Javascript
“Our mission: To enable rich, high quality, RTC
applications to be developed in the browser via simple
Javascript APIs and HTML5.” (webrtc.org)
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
2
3. Lo stato
●
●
●
●
●
Pre-Standard, per cui tutto quello che si trova sul browser è
ancora sperimentale.
Si sta lavorando e si sta evolvendo molto velocemente:
settimane e mesi, non anni.
Ci sono ancora tante dispute, che riguardano codec (google
contro mozilla contro cisco contro …)
Microsoft nicchia e Apple è “non pervenuta”.
Ha risvegliato l'interesse di molte Telco, per la possibilità di
integrazione con i prodotti già esistenti e di crearne di
nuovi.
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
3
4. Features
Feature
Realizzata tramite
Importante perché
Indipendente dalla
piattaforma
API definite da W3C e protocolli da
IETF
Nessuna preoccupazione per
device, codec, browser
Trasmissione sicura di
voce e video
DTLS-SRTP
Garantisce comunicazioni sicure,
anche in WiFi o ambienti “ostili”
Elevata qualità delle
immagini e dell'audio
Opus, G711, VP8, H264, etc..
Nessuna necessità di download
codec, garantisce interoperabilità
Sessioni con bassa
latenza e alta affidabilità
Hole-Punching
Peer-to-Peer più affidabile, meno
latenza, meno carico sui server,
meno infrastrutture
Adattativo
Multiplexed Real Time Control Protocol
(RTCP) e Secure Audio Video Profile
with Feedback (SAVPF)
Essere in grado di avere stime sulle
condizioni della rete è fondamentale
per il video in Real Time
Interoperabilità con i
sistemi VoIP
SRTP, SDP
Possibilità di connettere sistemi
VoIP esistenti tramite protocolli
standard
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
4
7. Protocolli
Protocollo
Uso
Layer
HTTP
Hyper-Text Transfer Protocol
Application
WebSocket
Comunicazione Browser - Server
Application
SRTP
Secure Realtime Transfer Protocol
Application
SDP
Session Description Protocol
Application
STUN
Session Traversal Utilities for NAT
Application
TURN
Traversal Using Relay around NAT
Application
ICE
Interactive Connectivity Establishement
Application
TLS
Transport Layer Security
Transport
TCP
Transmission Control Protocol
Transport
DTLS
Datagram Transport Layer Security
Transport
UDP
User Datagram Protocol
Transport
SCTP
Stream Control Transport Protocol
Transport
IP
Internet Protocol
Network
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
7
8. SDP: Session Description Protocol
●
●
●
●
●
Session Description Protocol (SDP) [RFC4566] descrive le
caratteristiche multimediali delle connessioni fra i peer.
Fornisce una lista complessa di caratteristiche che descrivono le
capacità del peer, indirizzi IP, metadati, in modo agnostico rispetto al
trasporto.
I peer devono scambiarsi fra loro queste informazioni per realizzare
la connessione multimediale. Il meccanismo utilizzato è quello OfferAnswer
In JavaScript è encodato tramite l'oggetto
RTCSessionDescription
SDP_Track
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
8
9. SDP
●
Ce ne preoccupiamo:
–
quando creiamo un'offerta ed una risposta tra i peer
affinché comunichino quali sono le loro capacità:
RTCPeerConnection.createOffer
● RTCPeerConnection.createAnswer
● RTCPeerConnection.setLocalDescription(SDP)
● RTCPeerConnection.setRemoteDescription(SDP)
RTCSessionDescription è l'oggetto che rappresenta
SDP
●
–
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
9
10. STUN – TURN – ICE
●
Protocolli necessari per aggirare il limite imposto dal
Network Address Translation (NAT)
●
STUN: Session Traversal Utilities for NAT
●
TURN: Traversal Using Relays around NAT
●
ICE: Interactive Connectivity Establishment
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
10
11. STUN
●
●
●
●
Restituisce il “punto di vista” esterno
sull'indirizzo di un Peer.
Alla richiesta da parte del Peer,
risponde con l'indirizzo IP dell'ultimo
NAT attraversato dal Peer e con la porta
dalla quale la richiesta è arrivata.
stun:stun.services.mozilla.com
stun:stun.l.google.com:19302
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
11
12. TURN
●
●
E' un' estensione di STUN,
praticamente implementato sullo stesso
server che implementa STUN
Fornisce un “relay” di last resort verso il
quale converge il flusso multimediale
dei Peer , quando ogni altro tentativo di
stabilire una connessione diretta
fallisce.
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
12
13. ICE
●
●
●
●
Permette di stabilire connessioni dirette fra Peer.
Fornisce la verifica che la comunicazione tra i Peer sia
effettivamente voluta (no DOS flooding).
Raccoglie un elenco di Candidates, ossia di transport
address (IP + porta)
Usa hole-punching per fare il candidates gathering
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
13
14. ICE
●
Classifica i candidati in 4 tipi:
–
Host: local transport address via NIC
–
Server Reflexive: transport address via STUN server
–
Peer Reflexive: public transport address via STUN
check
–
Relayed: TURN transport address
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
14
15. ICE
●
Ce ne preoccupiamo:
–
la RTCPeerConnection ha come parametro un array di
iceServers:
●
–
dovremo gestire cosa succede quando un Peer troverà
dei candidati:
●
–
{"iceServers":[{"url":"stun:stun.services.mozilla.com"},
{"url":"stun:stun.l.google.com:19302"}]};
peerConn.onicecandidate = function(){...};
dovremo gestire quando un Peer riceverà dei candidati:
●
peerConn.addIceCandidate(new
RTCIceCandidate({sdpMLineIndex:msg.mlineindex,
candidate:msg.candidate}));
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
15
16. SRTP: Secure Real Time Protocol
●
●
●
Protocollo utilizzato per il trasporto dell'audio e del video
fra i client.
L'esito positivo della fase di Offer – Answer porta alla
connessione SRTP
WebRTC prevede che venga usato soltanto il profilo
sicuro di RTP con (preferibilmente) DTLS-SRTP per lo
scambio delle chiavi.
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
16
17. Segnalazione e Trasporto
●
La segnalazione viene utilizzata solitamente per la negoziazione, la
gestione degli stati, autenticazione e autorizzazione
●
In WebRTC la segnalazione non è standardizzata
●
Perché ?
–
–
●
Perché non serve che lo sia
Possiamo decidere di propagare SDP, ICE e gli stati sul canale che
meglio crediamo.
Canali utilizzati:
–
HTTP
–
WebSocket
–
dataChannel
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
17
21. Canale
●
●
●
●
Il canale è necessario per lo scambio dei messaggi fra i
peer
Massima libertà nella scelta implementativa tra Http,
WebSocket, dataChannel
Per la cronaca, quello utilizzato nel seguito è implementato
via Xml Http Request (XHR), con polling.
E' totalmente trasparente...
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
21
24. HTML
L'unica cosa di cui abbiamo bisogno, sono i tag video:
<video id="localVideo" autoplay="autoplay"
controls muted="true"></video>
<video id="remoteVideo" autoplay="autoplay"
controls muted="true"></video>
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
24
26. RTCPeerConnection
●
●
Il cuore di WebRTC è RTCPeerConnection
Una RTCPeerConnection permette a due utenti di
comunicare direttamente, browser-to-browser. Le
comunicazioni sono coordinate dal canale di segnalazione.
13 Novembre 2013
Giuseppe Dongu - Smyrtle Cyber Security
26