Absolut unverwertbar: SkyECC-Daten
Das Obergericht ZH hatte neulich in Rahmen eines Berufungsverfahrens auf Antrag der Verteidigerin die Verwertbarkeit der in den Akten befindlichen SkyECC-Daten zu klären (II. Strafkammer, Beschluss vom 15.08.2025). Sein Beschluss erfolgte – auch das auf Antrag der Verteidigerin – nach einer zweigeteilten Berufungsverhandlung. Der erste Teil beschränkte sich auf die Frage der Verwertbarkeit.
Die Kammer erkennt auf absolute Unverwertbarkeit und weist die SkyECC-Daten aus den Akten.
Die Anwendbarkeit von Art. 140 Abs. 1 StPO folgte aus der Rechtsprechung des Bundesgerichts, wonach Erkenntnisse absolut unverwertbar sind, die unter Verletzung des Territorialitätsprinzips mittels technischer Überwachungsgeräte gewonnen wurden (BGE 146 IV 36 E. 2).
Das Territorialitätsprinzip war verletzt, weil der Entschlüsselungsvorgang über eine Push-Nachricht an das Gerät des Beschuldigten in der Schweiz ausgelöst wurde (man-in-the-middle). Die Kammer setzt sich ausführlich mit dem Vorgang und seiner rechtlichen Würdigung auseinander.
Ein weiteres Fehlurteil des Zürcher Obergerichts.
Normalerweise stimme ich einem Staatsanwalt (grundsätzlich) nicht zu, aber in diesem Fall liegt er richtig. Das liegt nicht daran, dass das Urteil juristisch falsch wäre, sondern daran, dass die Aussage von KJ bzw. dem Gericht technisch nicht präzise ist.
Konkret geht es um die Annahme, eine Push-Nachricht sei auf dem Gerät des Beschuldigten in der Schweiz durch einen Man-in-the-Middle-Angriff ausgelöst worden. Das ist unmöglich und das wird jeder bestätigen, der Push-Nachrichten verwendet oder gar selbst implementieren musste.
Push-Nachrichten basieren auf einem standardisierten Protokoll, das nur im Detail variiert. Die gängigste Implementierung erfolgt über eine Web-API, wie sie beispielsweise hier dokumentiert ist: https://developer.mozilla.org/en-US/docs/Web/API/PushSubscription . Entscheidend ist der sogenannte „Endpoint“ in der
PushSubscription.endpoint-Eigenschaft, bei dem es sich um eine gewöhnliche URL handelt.Der Prozess funktioniert so: Der Browser (oder das Betriebssystem einer nativen App) fragt diesen Endpoint in regelmässigen Abständen (z.B. bei Chrome alle 5 Minuten) aktiv ab („pullt“), um zu prüfen, ob neue Nachrichten vorliegen. Nur bei neueren Protokollen wie HTTP/2, das noch wenig verbreitet ist, kann der Server von sich aus eine direkte Verbindung zum Gerät herstellen, ohne dass dieses aktiv anfragen muss.
Dieses technische Detail ist von entscheidender Bedeutung, denn es bedeutet, dass sich niemand direkt auf dem Gerät in der Schweiz befand. Stattdessen hat das Gerät die Daten technisch gesehen „freiwillig“ ins Ausland übermittelt, womit keine Verletzung des Territorialprinzips stattgefunden hat.
Weiteres
Zudem werden Push-Nachrichten vom Gerät nicht ausgelöst, sondern empfangen (durch aktives Abfragen, also „pullen“). Das Gerät löst höchstens eine „Push-Subscription“ aus, also das Abonnement für den Empfang von Nachrichten. Für dieses Abonnement holen die meisten Apps die Zustimmung des Nutzers ein (können aber auch ohne Erlaubnis subscriben, jedoch keine Benachrichtigung absenden). Sollte dies nicht der Fall sein, bieten die Betriebssysteme Schutzmechanismen gegen unerwünschte Benachrichtigungen.
Selbst bei wohlwollender Betrachtung ist hier keine Territorialverletzung zu erkennen, da der Beschuldigte die Daten selbst weitergegeben hat. Das Protokoll, das diesen Vorgang beschreibt, kann hier eingesehen werden: https://www.w3.org/TR/push-api/ . Man kann sich solche Protokolle wie Gesetze vorstellen, die nicht immer alle Details abdecken, weshalb es je nach Implementierung zu Abweichungen kommen kann. Im vorliegenden Fall handelt es sich sogar nur um einen Entwurf („Working Draft“), da die Push-API relativ neu ist. Sobald genügend Rückmeldungen und Nutzungsdaten vorliegen, wird das Protokoll verfeinert und in versionierter Form als verbindlich erklärt.
In Abschnitt 3.2 des Entwurfs heisst es:
A push message is delivered to the active worker associated with the push subscription to which the message was submitted. If the service worker is not currently running, the worker is started to enable delivery.
Zusammenfassend lässt sich sagen, dass die Push-Nachricht an den aktiven „Service Worker“ übermittelt wird, der mit dem Push-Abonnement verknüpft ist. Das Abonnement gilt als aktiv, sobald es mit dem „Pullen“ beginnt, also in der Lage ist, Nachrichten zu empfangen und zu verarbeiten.
Der Vollständigkeit halber sei erwähnt, dass nicht jede Push-Nachricht auch eine sichtbare Push-Benachrichtigung für den Nutzer zur Folge hat (Push-Nachricht != Benachrichtigung. Der Service Worker kann man der Nachricht machen was er will). Da der „Service Worker“ jedoch in einer eingeschränkten Umgebung läuft, sind seine Möglichkeiten derzeit noch begrenzt, weshalb meistens eine Benachrichtigung angezeigt wird (da in dieser Umgebung sonst nicht viel machen _kann_). Es ist jedoch anzunehmen, dass die Funktionalität von Service Workern in Zukunft erweitert wird. https://de.wikipedia.org/wiki/Service_Worker#Push-Benachrichtigungen
@Laie: Danke für die Ausführungen und Präzisierungen. Selbst wenn Sie technisch richtig liegen, kann das doch aber nichts daran ändern, dass eine Überwachung eines in der Schweiz benützten Telekommunikationsgeräts vorliegt.
@KJ Ich muss mich da auch etwas korrigieren.
„Note, no encryption backdoors were needed in this case,“ security expert Brian Honan says of the Sky ECC police operation.
Namentlich wurden die Apps folgendermassen „gehackt“:
Sky ECC says in its statement: „Authorized distributors in Belgium and the Netherlands brought to our attention that a fake phishing application falsely branded as SKY ECC was illegally created, modified and side-loaded onto unsecure devices, and security features of authorized SKY ECC phones were eliminated in these bogus devices which were then sold through unauthorized channels.“
Die Geräte hatten also ein Fake-Sky ECC App drauf (und waren wahrscheinlich auch sonst mit Backdoors versehen). Jetzt kann man argumentieren, dass der Nutzer ja es selbst eingeschaltet hat. Quasi, man nimmt eine Wanze mit nach Hause und versorgt sie mit Strom. Der Nutzer hat das Gerät wahrscheinlich irgendwo gekauft (Darknet Angebote für Burner Phones).
Selbst wenn Sie technisch richtig liegen, kann das doch aber nichts daran ändern, dass eine Überwachung eines in der Schweiz benützten Telekommunikationsgeräts vorliegt.
Ja, das kann man so sehen… und im Endeffekt fand auch das statt, aber es war „freiwillig“ aka. die Geräte wurden nicht (während Nutzung) manipuliert, sondern haben genau das getan, wofür sie entwickelt wurden (vorher manipuliert und verkauft). War es freiwillig im rechtlichen Sinne? Um das Problem zu versimpeln: Theoretisch kann man auch (Deine) Cookies dafür missbrauchen. Beispiel: Putin hat kein Handy, also keine assoziierten Cookies. Sein Standort (wo er sich gerade befindet) ist geheim. Aber, Werbetreiber haben Cookies von seinen Angestellten (Koch, Assistenten etc.) und man muss nicht Putin direkt orten, sondern es reicht, seine Angestellten anhand der Cookies zu lokalisieren und dort wird vermutlich auch Putin sein.
Verletzt das auch das Territorialitätsprinzips? Die Leute haben die Cookies freiwillig geteilt (manche wahrscheinlich mit Zustimmung) und die Auswertung fand auch nicht in Russland statt.
Unterschied zu SkyECC
Die Geräte wurden vorher manipuliert und wurden so verkauft. Die Käufer haben somit die Wanze mitgenommen und „freiwillig“ (= das Gerät macht, was es soll) die Daten übermittelt.
Das Gericht argumentiert aber nicht so, sondern behauptet etwas technisch unmögliches, namentlich sollen die ausländischen Behörden ein Payload gesendet haben aka. Schadcode, dass Sicherheitslücken ausnutzt und sich ausführt.
Dieser Akt des „Entschlüsselns“ oder „Sicherheitsmechanismus-Umgehens“ auf dem Gerät ist die eigentliche Zwangsmassnahme. Es ist das digitale Äquivalent einer Hausdurchsuchung. Und eine von einer ausländischen Behörde durchgeführte Hausdurchsuchung in der Schweiz ist der Prototyp (Paradebeispiel) einer Verletzung des Territorialitätsprinzips.
Aber, das kaufe ich (und auch jeder andere Fachmann) denen nicht ab, weil jeder genau weiss wie Push-Nachrichten funktionieren. Ich glaube eher den SkyECC Press Releases, dem Sicherheitsexperten der Polizei und IT-Magazinen, die sich den „Hack“ genauer angesehen haben und zum Schluss gelangt sind, dass es sich um manipulierte Geräte handelte. Würde das stimmen, was das Obergericht sagt, dann könnte man so jede Applikation hacken, die Push-Nachrichten verarbeitet…
Ein weiterer Grund, warum ich die „Payload-Hack-Geschichte“ nicht glauben _kann_, ist, dass der Service Worker in einer sehr eingeschränkten Umgebung läuft, somit eigentlich nichts machen kann (man kann dort z.B. keine Datei speichern/lesen oder sonst was machen, ausser Caching und Benachrichtigungen).
Der Grund, wieso solche Umgebungen eingeschränkt sind, liegt nicht daran, dass man „Hacks“ befürchtete, sondern, weil einige Bad Players diese missbraucht haben, um Crypo-Mining (Bitcoin Farming) zu betreiben, denn es erlaubt Prozesse im Hintergrund auszuführen, selbst wenn die Applikation (z.B. App, Website) nicht aktiv offen ist. Man hat sich halt die Frage gestellt, was man dort (zielführend) programmieren sollen kann und ausser Caching (z.B. Daten wie ein Bild vorausladen, damit die App beim Starten schneller lädt) und Benachrichtigungen gab es keine guten Verwendungszwecke, weshalb sonstige Features (die man in normalen Umgebungen hat wie z.B. Kamera einschalten) dort nicht verfügbar sind. Ergo würde es rein gar nichts bringen, Push-Benachrichtigungen zu „hacken“, ausser eben um Spam-Nachrichten zu verbreiten.
Das Gericht hat die (unmögliche) „Payload-Hack-Geschichte“ genommen, weil es dann mit dem Territorialitätsprinzips argumentieren kann. Abgesehen davon, klingt „Payload-Hack“ viel kompetenter (Hollywood) als „wir haben eine Fake-App erstellt, Geräte gekauft, diese dort installiert und mit einem fetten Minus im Darknet verkauft“.