ICE - Interactive Connectivity Establishment

Die Forderung war: Das System soll sich wie ein Telefon bedienen lassen. Wir haben deshalb ZSipOs als Krypto-Box aufgebaut, die zwischen das Netz und ein normales SIP-Telefon geschaltet wird.

ZSipOs Box


Die Bedienung (wählen, abheben, sprechen, auflegen) erfolgt über das Telefon. An der Box wird nur der Verbindungs- und Sicherheitsstatus angezeigt sowie der SAS (siehe ZRTP).
Solange beide Seiten mit einer routbaren IP-Adresse transparent mit dem Internet verbunden sind, funktioniert die ZRTP-Kommunikation direkt über die ausgehandelte RTP-Verbindung, die im SIP Protokoll ausgehandelt wurde.

In verschieden Fällen funktioniert das nicht:

a) Die Verbindung im Telefonnetz erfolgt noch nicht vollständig über das IP-Netz (ISDN statt All-IP).
b) Die Teilnehmer sind nur eingeschränkt mit dem Internet verbunden (NAT/Firewall).
c) Die IP-Verbindung wird im Netzt nicht transparent geführt, sondern z. B. vom Proxy oder einem Netzwerkprovider verändert oder gefiltert. Spezielle Protokollvarianten, wie z. B. ZRTP, können hierdurch blockiert werden.

Die Fälle b) oder c) sind ziemlich typisch in der IP-Telefonie. Hier gibt es etablierte Lösungsansätze, um einen direkten Kommunikationsweg zwischen den Teilnehmern aufzubauen.

Der STUN-Algorithmus dient einem Client dazu zu ermitteln, unter welcher Adresse (Adr./Port) er aus dem Internet direkt angesprochen werden kann. Ein TURN-Server dient als Relay, um die Kommunikation durch eine NAT-Firewall zu ermöglichen.

Unter der Bezeichnung „ICE“ ist eine Methode standardisiert, mit der ein Client seine Kommunikationsmöglichkeiten im Netz ermitteln kann. Funktioniert die transparente Kommunikation durch die primäre RTP-Verbindung nicht, so ermitteln beide Teilnehmer über ICE ihre Kommunikationsoptionen, tauschen diese aus, wählen die beste Möglichkeit und starten ZRTP.

Aber wie kann dieser Austausch stattfinden, bevor eine transparente Verbindung besteht?

Unser Weg

Wir haben bereits eine normale, ungesicherte Telefonverbindung zur Gegenstelle. Der einfachste Weg, über eine Telefonverbindung Daten auszutauschen, besteht in der Übertragung von Wähltönen. Leider dauert es ziemlich lange, um den kompletten Satz der Kommunikationsmöglichkeiten („Offer“) auszutauschen. Wir setzen deshalb einen kleinen Hilfsserver (ICE Helper) ein. Jeder Teilnehmer ermittelt über ICE seine Kommunikationsoptionen und hinterlegt diese beim ICE-Helper und erhält dafür eine Registrierungsnummer. Er sendet dann diese Nummer als Folge von Wahltönen an den Gesprächspartner. Der ruft die Offer unter dieser Nummer beim ICE-Helper ab, wählt den besten Kommunikationsweg und startet die ZRTP-Kommunikation.

  • Wichtig: Der ICE-Helper unterstützt nur beim Aufbau einer direkten Verbindung der Teilnehmer. Er ist kein Geheimnisträger. Die kryptografische Absicherung der Verbindung ist davon völlig unabhängig.