Wieso Open Source nicht unsicher ist

Gefahr durch Open Source?

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.