Wieso Open Source nicht unsicher ist

Gefahr durch Open Source?

15.01.2016 von Frank Hißen
Kürzlich erreichte mich die Frage, ob es nicht gefährlich sei, wenn der Quellcode für eine Verschlüsselungssoftware zugänglich ist. In diesem Beitrag gebe ich die Antwort auf diese Frage.

Als Informatiker mit mehrjähriger Berufserfahrung im Bereich IT-Sicherheit und speziell im Bereich Kryptografie nimmt man viele Sachverhalte als selbstverständlich hin, die für den durchschnittlichen IT-Anwender manchmal alles andere als verständlich sind. Gerade der Bereich IT-Sicherheit erfordert viel fundiertes Wissen und praktische Erfahrung, selbst erfahrene IT-Spezialisten sind mit dem Thema des Öfteren überfordert.

Gefahr durch Open Source?

Als mich die Frage erreichte, ob es nicht "gefährlich" sei, wenn der Quellcode für eine Verschlüsselungssoftware öffentlich zugänglich ist, die Software also open source gestellt wird, war ich im ersten Moment sehr überrascht. Zwei wesentliche Gedanken waren der Hintergrund der Frage:

1. Wenn der Quellcode offenliegt, wäre es nicht viel einfacher, eine unautorisierte Entschlüsselung durchzuführen, also eine "Angriffssoftware" gegen die Verschlüsselung zu entwickeln?

2. Wenn der Quellcode offenliegt, wäre es nicht viel leichter, schädlichen Programmcode in die Software einzufügen?

Für einen einfachen Endanwender offensichtlich berechtigte Gedanken.

Sicherheit durch Offenlegung

Antwort auf Frage 1:

"Geheime" Verschlüsselungsalgorithmen gibt es im Alltag im Grunde nicht. Bei Geheimdiensten mag das vielleicht anders sein - wer weiß das schon. Aber jede Verschlüsselungstechnik, die wir im Alltag benutzen, ist offen, öffentlich von Fachleuten diskutiert und allgemein anerkannt. Die Sicherheit hängt nicht von der Geheimhaltung ab. Das ist ein Grundprinzip der IT-Sicherheit. Ob man HTTPS (TLS/SSL), E-Mail-Verschlüsselung (S/MIME, PGP) oder SSH (Secure Shell) betrachtet, die verwendeten Algorithmen, wie zum Beispiel RSA oder AES, sowie die konkreten Protokolle sind aktuell und, soweit absehbar, auch in Zukunft sicher.

In der Vergangenheit gab es zwar immer wieder Lücken, zum Beispiel in der TLS-SSL-Protokollfamilie oder in einzelnen Implementierungen. Aber diese wären früher oder später auch bei einer Geheimhaltung der Protokolle und Implementierungen entdeckt worden. Des Weiteren handelte es sich hierbei nicht um fundamentale Fehler, die die Verfahren an sich unbrauchbar gemacht haben. Bugfixes oder Handlungsempfehlungen waren schnell verfügbar.

Das Ziel von Open-Source-Produkten ist im Gegenzug, Vertrauen zu schaffen. Viele machen sich - angesichts der NSA-Enthüllungen der letzten Jahre offensichtlich durchaus berechtigt - Sorgen, in einer bestimmten Software könnten Hintertüren enthalten sein. Der Gedanke, dass insbesondere Software, die mit sensiblen Daten in Berührung kommt, ein guter Kandidat für eine von wem auch immer initiierte Hintertür ist, ist mehr als berechtigt. Was liegt näher, als Verschlüsselungssoftware als einen solchen Kandidaten einzustufen?

Bei kommerziellen Herstellern von Sicherheitssoftware steht natürlich das Interesse im Vordergrund, das geistige Eigentum des eigenen Unternehmens zu schützen. Ein ebenfalls verständliches Interesse. In diesem Fall lässt sich Vertrauen zumindest teilweise durch Zertifizierungen von anerkannten Stellen erreichen, auch ohne den Quellcode offenzulegen.
Übrigens ein Vorgehen, das gerade kleineren Open-Source-Projekten fehlt: Nur weil der Quellcode öffentlich ist oder die Software viele Anwender hat, bedeutet das nicht, die Software würde alles richtig machen. Als Beispiel sei TrueCrypt genannt, das trotz der Abkündigung durch die ursprünglichen Entwickler viele Jahre zu den meistgenutzten Festplattenverschlüsselungen zählte und von Anfang an open source war. Es dauerte fast zehn Jahre, bis es zum ersten Audit kam - finanziert durch ein Crowdfunding-Projekt.
Ein schwerer erster Schritt dieses Audits war es nachzuweisen, dass die vertriebenen Binaries (Binärprogramme) auch aus dem veröffentlichten Quellcode gebaut wurden. Denn was nützt selbst ein Beweis, dass der Quellcode einwandfrei ist, wenn die zum Download stehende Software gar nicht aus diesem Quellcode hervorgeht. Dies ist natürlich für den einfachen Anwender nicht ohne Weiteres ersichtlich.

Hacker brauchen keinen Quellcode

Antwort auf Frage 2:

Wenn man IT-Nachrichten verfolgt und Meldungen zu Hacking-Vorfällen ansieht, wird man schnell feststellen, dass Hacker keinen Quellcode brauchen, um Systeme zu hacken, Software zu manipulieren oder Anwendern Trojaner unterzujubeln. Dies gelingt offensichtlich bei Open- wie Closed-Source-Software gleichermaßen. Das liegt schlicht daran, dass gute Hacker zu den technisch versiertesten IT-Fachleuten gehören. Sie analysieren Software oder ganze Systeme mit Tools und Know-how in einer Weise, dass sie keinen Quellcode benötigen oder soweit notwendig Teile des Codes aus dem Binärprogramm wiederherstellen.

Quelloffenheit bedeutet übrigens nicht, dass jeder, der möchte, beliebig am Programmcode eines Projekts Änderungen vornehmen darf und kann. Als Beispiel betrachte man Linux, das vermutlich auch kommerziell am meisten eingesetzte Serverbetriebssystem. Trotz Quelloffenheit wird die Entwicklung kontrolliert durchgeführt und systematisch gesteuert.

Für den Endanwender gilt natürlich die bekannte Regel, nur Software zu installieren, die von vertrauenswürdigen Quellen beziehungsweise Seiten stammt. Dazu zählen neben einschlägigen Download-Portalen - von denen leider nicht alle vertrauenswürdig sind - vor allem die Seiten der Hersteller selbst.

Fazit

Selbst wenn man Open-Source-Software kritisch gegenübersteht, muss man festhalten, dass alleine die Quelloffenheit von Verschlüsselungssoftware an sich keine Sicherheitslücken verursacht, sondern im Gegenteil Vertrauen und Kontrolle schaffen kann.

Für die Kritiker von Open-Source-Software sei zumindest hinsichtlich des Themas Sicherheit gesagt: Wenn Sie Online-Shopping oder Online-Banking machen, nutzen Sie mit sehr hoher Wahrscheinlichkeit bereits mehr als nur eine Open-Source-Komponente, zum Beispiel Ihren Browser, den Webserver der Bank oder das Betriebssystem des Online-Shops. (bw)