Siri: Protokoll geknackt, Verwendung in anderen Programmen möglich
Stefan Keller, den 14. November 2011Vor genau einem Monat wurde das iPhone 4S veröffentlicht. Das wohl größte neue Feature heißt Siri und stellt eine Sprachsteuerung dar, die viele der iOS 5-Funktionen fernsteuern kann. Findigen Bastlern ist es nun gelungen, zu entschlüsseln, was Siri an Apple funkt und wie die Auswertung aussieht – theoretisch könnte die Technologie nun auf anderen Geräten genutzt werden.
Das Protokoll hinter Siri ist entschlüsselt. Die Entwickler von Applidium haben sich alle Mühe gegeben, hinter die Funktionsweise zu steigen. Sie wollten wissen, wie die Abfragen aussehen, die ein iPhone 4S an Apple sendet, wenn der Anwender einen Befehl an Siri delegiert.
Hierfür haben sie versucht, den Traffic mitzuschneiden, was mit einem eigenen Proxy-Server per se kein Problem ist. Hierbei fanden sie heraus, dass der Traffic an eine IP 17.174.4.4 geht und zwar über den Port 443, der für das verschlüsselte HTTPS genutzt wird. Würde man versuchen, die IP im HTTPS-Protokoll in einem normalen Browser aufzurufen, würde der Server ein Zertifikat für „guzzoni.apple.com“ präsentieren – der Server, mit dem Siri letztlich kommuniziert.
Die Abfragen aufzufangen, war dann nicht ganz so einfach, schließlich ist der Traffic verschlüsselt. Einen gefälschten HTTPS-Server und einen entsprechend präparierten DNS-Server nimmt das iPhone nicht an, weil das Zertifikat nicht gültig ist. Allerdings kann man root-Zertifikate importieren, die dann den gefälschten Server als gültig ausweisen. So fanden die Entwickler heraus, dass eine Abfrage mit folgendem Header startet:
ACE /ace HTTP/1.0
Host: guzzoni.apple.com
User-Agent: Assistant(iPhone/iPhone4,1; iPhone OS/5.0/9A334) Ace/1.0
Content-Length: 2000000000
X-Ace-Host: 4620a9aa-88f4-4ac1-a49d-e2012910921
Sony
Angesprochen wird der Server guzzoni.apple.com mit der nicht-standardkonformen ACE-Methode (die wohl ähnlich der GET-Methode funktioniert). Als Browser-Kennung meldet sich das iPhone 4S, die Länge der Abfrage ist (angeblich) fast 2 GB. X-Ace-Host ist eine Art eindeutige Kennung, wie früher die UDID.
Die Header-Information startet mit 0xAACCEE, danach folgt erst einmal „Datenmüll“. Dieser Müll ist in Wirklichkeit aber die Anfrage, sie beginnt ab dem vierten Byte und ist mit dem zlib-Algorithmus gepackt. In den Daten ist jede Menge Binäres enthalten, aber es gibt auch Pakete, die lesbar sind. Teile, die mit 0x020000xxxx anfangen, sind „plist“-Daten – ein XML-Ableger, den Apple nutzt, um ASCII-Daten zu übertragen. Außerdem gibt es Teile, die mit 0x030000xxxx und 0x040000xxxx anfangen. Dies sind Ping- und Pong-Pakete, die dazu dienen, die Verbindung aufrecht zu erhalten.
In den Binärdaten ist der Audio-Input versteckt. Dieser ist mit dem Speex-Codec komprimiert. Außerdem werden Signaturen gesendet, die das iPhone 4S identifizieren. Würde man Siri auf anderen Geräten nutzen wollen, müsste man hierbei vorgeben, ein iPhone 4S zu sein – und dort liegt der Haken. Apple könnte leicht bestimmte Signaturen sperren. Wirklich sicher wäre man also nur dann, wenn man die Identität seines eigenen iPhone nutzen würde und das macht die Portierung auf andere Plattformen dann eher unattraktiv. Die Entwickler fanden zudem heraus, dass das Protokoll sehr gesprächig ist. Sowohl das iPhone sendet eine Menge, als auch der Server, der eine Vielzahl von Informationen wiedergibt. Bei der Diktatfunktion beispielsweise wird für jedes Wort eine Zeitangabe und eine Punktzahl, die die Wahrscheinlichkeit angibt, übermittelt.
Bei Applidium gibt es nun eine Reihe von Tools zum Download, die interessierten Entwicklern ermöglichen soll, selbst mit dem Siri-Protokoll herumzuspielen. Man gibt an, dass diese noch nicht vollendet sind, aber genügen würden, um eine Anwendung zu schreiben, die mit Siri kommuniziert.