Trojaner? Is nich! Punkt.
Der Wirbel um den vom CCC entdeckten und analysierten Staatstrojaner ist etwas abgelauft, nachdem in der letzten Woche ein kurze Anhörung vor dem Bundestag stattfand. Bei der Dimension des Themas hatte ich eigentlich erwartet, das die ARD in ihren Talk-Shows nur noch zu diesem Thema plaudern würde, komischerweise ist das Thema Mainstream-Medien (bis auf ein paar löbliche Ausnahmen) völlig vorbeigerauscht.
Heute abe ich das dumpfe Gefühl, dass das Thema zu schnell wieder verschwindet. Und vorallem, dass die Nachlese und die politischen Konsquenzen aus dem Skandal in die völlig falsche Richtung gehen. Die Justizministerin denkt jetzt über schärfere Gesetze zum Schutze der Privatsphäre der Bürger nach und ich stehe daneben und denke mir: “Ach Schnarre, das Gesetz gibt es schon, nennt sich Grundgesetz und du solltest dem Schmöker mal wieder zur Geltung verhelfen.”
Das Bundesverfassungsgericht hat im Zuge der Verhandlungen um die songenannte Online-Durchsuchung 2008 festgestellt, dass die Quellen-TKÜ nur unter strengen Auflagen erfolgen darf. Dazu muss durch “technische Vorkehrungen und rechtliche Vorgaben” sichergestellt werden, dass lediglich Daten aus einer laufenden Telekommunikation ausgeleitet werden. Als Juristin interessiert sich die Justizministerin offenbar nur für die rechtlichen Vorgaben, nicht jedoch für die technischen Aspkete des Ganzen. Was schade ist, denn schaute man auf die technischen Fragen der Quellen-TKÜ und wie deren verfassungskonforme Umseztung technisch nach den Vorgaben des Bundesverfassungsgerichts aussehen könnte, dann wäre die Diskussion um diese Art der Überwachung sehr schnell wieder beendet. Denn faktisch hat das Gericht die Quellen-TKÜ, ohne es zu wissen oder gar zu wollen, verobten. Die Law-and-Order-Fraktion im Deutschen Bundestag könnte ihre Klamotten umgehend wieder einpacken und wie gewohnt in der zweiten oder dritten Reihe platznehmen. Aber alles der Reihe nach.
Ein “sicherstellen”, im Sinne von Beweisen, dass ein Programm das (und nur das) macht, was der Autor der Software beabsichtigt hat, ist im Rahmen der Softwareentwicklung nicht möglich. Turing hat der Informatik mit dem Halteproblem nämlich ein ziemliches Ei ins Nest gelegt. Eigentlich hat er nur gezeigt, das es kein Programm (keine Maschine) geben kann, die eine andere Maschine (ein anderes Programm) dahingehend analysieren kann, ob es terminiert oder nicht. Was hier in einen Satz passt, in Wirklichkeit aber etliches an Gerhinschmalz erfordert, um es nachzuvollziehen (von selbst erdenken ganz zu schweigen), hat gehörige Konsequenzen. Für Softwareentwickler heißt es, dass es keine Software geben kann, mit der ich überprüfen könnte, ob ein gegebenes Programm fehlerfrei ist (von dem Problem abgesehen, dass man noch beweisen müsste, dass die Verifikationssoftware fehlerfrei ist. Siehe auch: Henne-Ei-Problem). Ein automatisches Beweisen ist jedenfalls nicht möglich. Es lässt sich kein Algorithmus formulieren, der dies für ein beliebiges Programm leisten könnte.
Es wäre denkbar diesen Beweis dann händisch und eben nicht automatisch zu versuchen, doch was wäre damit gewonnen? Würde man versuchen die Richtigkeit eines Programms mit Hilfe von (sagen wir einfach) der Prädikatenlogik zu zeigen, stünde man vor dem Problem, dass man nach Vollendung des Beweises beweisen müsste, das der Beweis, den man soeben erbracht hat auch korrekt ist. An der Stelle hakt es sich natürlich aus, denn der Vorgang würde sich umgehend wiederholen, sobald man den Beweis für den Beweis erbracht hat (abermals: Henne-Ei-Problem). Bei einem Beweis mit beispielsweise der Aussagenlogik würde man im Grunde nur die Programmiersprache wechseln. Man wechselt von einer formalen Sprache in die nächste. Und derjenige der in ihr formuliert macht Fehler.
Zugegeben, dass sind erstmal “nur” theoretische Probleme, dennoch hat dieser Umstand immense Tragweite: Ließe sich das Problem der Programmverifikation abschließend und zufriedenstellen lösen, dann wären schlagartig alle Programme auf dem Weltmarkt fehlerfei. In der Realität sieht es aber so aus, dass jedes neu installierte Programm als allererstes nach einer Internetverbindung schreit, um Aktualisierungen vom Hersteller herunter zu laden.
In der Anhörung vor dem Bundestag letzte Woche hat ein findiger SPD-Abgeordneter (dessen Name ich leider wieder vergessen habe) süffisant angemerkt, dass das BKA scheinbar über Mittel zur Programmverifikation verfüge, die die Inforamtik noch nicht kennen würde. Er frage sich, ob die Bundesregierung plane dieses Wissen mit der Welt zu teilen. Sie könnte es gebrauchen, denn faktisch ist alle Software ein Bannanenprodukt: Reift beim Kunden. Mit der Einschränkung: Wird selten wirklich genießbar.
Es bleibt also festzuhalten: Es ist nicht möglich sicherzustellen, das Software genau das und nur das macht, was sie machen soll. Selbst wenn man Zugriff auf die Quelltexte hätte, die in aller Regel wesentlich leichter zu überblicken und zu bewerten sind, als die Assembler-Quellen, die der CCC vorgelegt hat, bliebe noch immer das Problem der Komplexität. Zum einen die Komplexität des Quellcodes selbst. Schon die Masse von Quelltexten kann überfordern und auch relativ “funktionsarme” Programm können schnell den Umfang einer “Mittelerde Saga” oder eines George R. R. Martin-Romans annehmen kann. Solche Werke soweit zu “lektorieren”, dass sie komplett fehlerfrei sind, ist ein erheblicher Aufwand und will dennoch so gut wie nie gelingen.
Zum anderen wäre das das Problem der Umgebung, in die das Programm eingebettet wird. Software, also auch ein etwaiger Trojaner, arbeitet nicht in einem luftleeren Raum. Sie interagieren laufend und häufig mit dem Betriebssystem und anderer Software auf einem Rechner. Selbst, wenn man einen Trojaner unter Laborbedingungen zur Ausführung bringt und dann durch probieren ein gewisses Maß an Sicherheit gewinnt, das das Programm korrekt arbeitet (arbeiten müsste), verfliegt diese Gewissheit sehr schnell, wenn man ihn in die “freie Wildbahn” entlässt. Niemand kann vorhersehen, welche Software auf einem System installiert ist oder noch installiert werden wird. Niemand weiß, welches Update das Betriebssystem selbst morgen bekommen wird und wie sich das auf bereits installierte Programme auswirkt. Was ist mit neu verbauter Hardware, oder neuen Geräten die nur gelegentlich angeschlossen werden? Es ist nicht möglich alle diese Variabeln auszulösen und “sicherzustellen” das eine Software korrekt arbeitet und keine Fehler enthält. Softwaresysteme sind hoch dynamisch. Schon das Hochfahren eines Rechners ist mit vielen Veränderungen auf den Datenbeständen verbunden, von neuen Programmen oder veränderten Programmversionen ganz zu schweigen. Alle diese Eventualitäten im Blick zu behalten ist schlicht nicht möglich.
Insofern ist es zutreffend die Idee einer Prüfinstanz für Überwachungssoftware, die letzte Woche aufkam und wohl insbesondere von der SPD favorisiert wird, als Feigenblatt zu bezeichnen. Salopp gesagt ist das einzige, was ein Analytiker mit Sicherheit über ein vorgelegtes Programm sagen kann: Ja, du bist ein Softwaresystem. Genau wie der Richtervorbehalt wäre das nur Diazepam für die irritierte Öffentlichkeit; löst aber exakt kein Problem. Da es nicht möglich ist, sich Gewissheit über die Funktion eines Programms zu verschaffen, was soll dann eine Prüfinstanz? Uns nochmal bestätigen, das es nicht geht?
Die Lösung muss lauten, auf den Einsatz von Überwachungssoftware generell zu verzichten und stattdessen auf die Anbieter von VoiP-Diensten zu zu gehen und diese dazu zu bringen, eine Kommunikationsüberwachung zu ermöglichen (bei herkömmlichen Telekommunikationsdienstleistern geht es ja auch). Zumindest bei Skype heißt es, dass diese Firma sich nicht verweigern würde. Das hätte den Vorteil, das man “nur” in ein Grundrecht eingreifen muss und nicht auch noch die Integrität von IT-Systemen verletzt und ggf. sogar die Unverletzlichkeit der Wohnung beschneidet (wenn Beamte in anderer Leute Wohnungen eindringen, um dort einen Trojaner zu installieren). Obwohl ich generell skeptisch bleibe, was Überwachungsmaßnahmen angeht. Wenn man gelegentlich solche Artikel liest, kann man kaum der Meinung sein, dass Richter und Staatsanwälte mit den Möglichkeiten der Überwachung (selbst solche, die es schon gibt), tatsächlich verantwortungsvoll umgehen.
In diesem Sinne: Trojaner? Is nich. Geht woanders spielen.








