§ 3.4.1

SIPS et TLS.

SIPS = SIP sur TLS. Schéma d'URI sips: au lieu de sip:. Le transport est typiquement TCP/5061 au lieu d'UDP/5060. Le proxy présente un certificat, le client le valide.

# URI
sips:bob@sip.ippi.com   # obligatoirement TLS
sip:bob@sip.ippi.com    # pourrait être en clair

Subtilité : l'usage de SIPS n'est garanti que de bout en bout si tous les sauts utilisent TLS. Un proxy intermédiaire pourrait théoriquement retransmettre en clair. C'est pourquoi la RFC recommande de vérifier que la dernière étape est bien sécurisée.

§ 3.4.2

SRTP.

Secure RTP — RFC 3711. Le profil RTP devient RTP/SAVP au lieu de RTP/AVP. Chaque paquet RTP est chiffré (AES-CM ou AES-GCM) et authentifié (HMAC-SHA1 ou AEAD).

m=audio 38214 RTP/SAVP 96
a=rtpmap:96 opus/48000/2
a=crypto:1 AES_CM_128_HMAC_SHA1_80
       inline:WVNfX19zZW1jdGwgKCkgewogIH0K|2^31|1:1

Trois mécanismes possibles pour échanger la clé : SDES (la clé est dans le SDP, en base64), DTLS-SRTP (handshake DTLS sur le port RTP), ou ZRTP (échange Diffie-Hellman en bande, sans confiance dans le signaling).

§ 3.4.3

ZRTP.

Inventé par Phil Zimmermann (l'auteur de PGP) en 2006, normalisé RFC 6189. Particularité : l'échange Diffie-Hellman se fait dans le flux RTP, sans dépendre du SIP. Vous pouvez chiffrer un appel même si la signalisation passe par un proxy hostile.

Pour parer l'attaque man-in-the-middle, ZRTP affiche aux deux extrémités une Short Authentication String de 4 caractères, dérivée du secret partagé. Alice et Bob se la lisent à voix haute — si elle correspond, personne n'est au milieu.

# Sur l'écran Linphone après décroché :
ZRTP Authentication: JK7P
# Alice : "Mon SAS dit JK7P, et toi ?"
# Bob   : "Pareil. On est OK."

C'est élégant : la voix humaine sert d'authentification de la clé symétrique. Pas besoin de PKI, pas besoin de tiers de confiance.

§ 3.4.4

DTLS-SRTP.

Le mécanisme retenu par WebRTC, RFC 5763. Avant le premier paquet RTP, les deux extrémités font un handshake DTLS sur le port RTP. La clé SRTP en est dérivée. Les certificats sont auto-signés mais leur empreinte (fingerprint) est annoncée dans le SDP, ce qui ferme la porte au MITM si la signalisation est intègre.

a=setup:actpass
a=fingerprint:sha-256
       D5:8E:1F:6B:7C:...:91:A2

Avantage : pas besoin de SDES, donc pas de clé en clair dans le SDP. Inconvénient : première négociation un peu plus lente, et la confiance repose sur l'intégrité du SDP transmis par le SIP.

§ 3.4.5

Qui choisir.

ContexteSignalisationMédia
Entreprise PABXSIPS / TLSSRTP avec SDES.
Activisme, journalismeSIPS / TLSZRTP — pas confiance dans l'opérateur.
WebRTCWSS (WebSocket TLS)DTLS-SRTP obligatoire.
Grand public, opérateurSIP en clair toléréSRTP optionnel ou absent.
§ 3.4.6

« Le silence sur le fil ne fait pas la confidentialité. La voix chiffrée non plus si la signalisation parle. » — note de fin

Retour à : VoIP — vue d'ensemble →