Sicherheit – Ist OpenSource wirklich besser als kommerzielle Software?

Kommentar

Vielleicht kennt der eine oder andere die „Glaubenskriege“ zwischen Verfechtern von OpenSource Software (allen voran die Linux Anhänger) und Windows Fans oder den Marketingleuten von Microsoft.
Jeder argumentiert fuer sich und zeigt die Vorteile des eigenen Systems auf. Beide Seiten haben mit ihren jeweiligen Argumenten teilweise sicher recht und es mag Vor- und Nachteile auf beiden Seiten geben. Aber wenn es um die Sicherheit von Systemen geht sollte man schon etwas genauer hinsehen.

Vor allem Microsoft hatte in den letzen paar Monaten mit grossen Problemen zu käempfen was die Sicherheit beim Internet Explorer, Outlook oder auch in Teilen von Windows 2000 und XP betrifft.
Dadurch ist eine alte Diskussion wieder aufgeheizt worden: Was ist denn nun besser: Software, die eine einzelne Firma wie Microsoft entwickelt (oder einkauft) und wo niemand von ausserhalb Einblick auf Programmstrukturen, Mechanismen oder Konzepte hat oder Software wo eine ganze Reihe von Leuten ein Auge drauf werfen?

Ein Argument ist sicher richtig: es ist definitiv besser wenn einige wenige Spezialisten ständig die Qualitaet von Software ueberprüfen als wenn tausende von Leuten ab und zu mal zufällig ein Auge drauf werfen.

Denn „OpenSource“ heisst zwar, dass sich jeder den Sourcecode ansehen kann und sich ein Bild davon machen kann was da im Programm passiert. Aber mal Hand auf’s Herz – wer schaut sich denn wirklich von jedem Programm das er bekommt oder einsetzt den Sourcecode an? Das ist schlichtweg unmöglich. Erst wenn man gezielt nach was sucht (das machen aber auch Hacker) oder wenn man ein spezielles Problem hat oder man glaubt einen Bug gefunden zu haben wird man sich an den Sourcecode setzen.
Dagegen zu halten ist sicher folgendes Argument: Es mag zwar auch sein, dass sich „einige wenige Experten“ bei Microsoft oder anderen Firmen um den Code kümmern und den dann auch auf Fehler und Bugs ueberprüfen.
Ich kann mir aber kaum vorstellen, dass die Leute die Software immer wieder von vorne neu durchsehen und immer wieder neu auf Fehler durchforsten. Ausser es wurde ein Bug gefunden – schon klar. Aber wenn ich von einer Sache überzeugt bin dass sie Fehlerfrei ist (ausser es wird mir das Gegenteil bewiesen) dann setze ich mich nicht jeden Tag hin und suche dasselbe Programm von Neuem durch, oder?

Nun, ich denke schon, dass beide Seiten ihr grossen Nachteile haben. Die OpenSource Community ist in auch selten strukturiert und organisiert. Man bedenke nur wie schwer es war (und immer noch ist) eine gewisse Ordnung in das Entwickeln des Linux Kerns zu bringen. Andererseits gibt es durchaus zentralistischere Projekte und Ansätze die sehr gute Resultate liefern — etwa die BSD Projekte, allen voran OpenBSD mit seinem sehr zentralistischen Ansatz. Vor allem OpenBSD kann als Vorzeigemodell in Bezug auf Sicherheit in OpenSource verwendet werden. Die Entwickler haben ueber 2 Jahre hinweg jede einzelne Zeile Code ueberprüft und haben Haufenweise Bugs und Sicherheitslücken entfernt. Aber auch hier sieht man – strukturiert und mit einem gemeinsamen Ziel. Es ist einfach nicht richtig, dass es automatisch keine Probleme mit OpenSource Software gibt nur weil viele Leute den Programmcode einsehen koennen. Oder besser könnten.
Andererseits gibt es genug Leute, die bestimmte Software brauchen und bei denen es vielleicht auch ueberlebensnotwendig ist, dass sie funktioniert und sicher ist. Es gibt mittlerweile genügend Firmen oder auch Privatleute die OpenSource Software auch an kritischen Stellen einsetzen. Und von diesen Leuten und Programmierern kann man sehr wohl davon ausgehen, dass sie sich auch genau ansehen, wo Probleme und Bugs auftreten können.
Und genau hier ist der Knackpunkt: Bei proprietaerer Software kann man das nicht. Man muss dem Hersteller vertrauen und darauf hoffen, dass er so schnell wie möglich einen Bugfix herausbringt wenn es wirklich mal ein Problem gibt. Bei OpenSource Software kann man zur Not selbst Hand anlegen.

Aber ist es denn nun gut oder schlecht wenn es nun „Geheimnisse“ – was Sicherheit betrifft – gibt? Nun, potenzielle Sicherheitslücken werden sicher bei solcher Software schneller gefunden die jeder kennt und in die jeder Einblick hat. Aber umgekehrt kann man aus der Kryptographie lernen, dass durchaus die öffentlich bekannten Verschlüsselungsalgorithmen jene sind, die am verbreitetsten und wohl auch sehr sicher sind. Praktisch alle zur Zeit verwendeten Verfahren basieren auf Algorithmen die gut verstanden und analysiert sind. Das tut der Sicherheit keinen Abbruch.
Warum soll es also Geheimnisse geben? Und angenommen es wuerde was bringen: was passiert, wenn so ein geheimes Verfahren durchsickert – etwa durch einen ausscheidenden Mitarbeiter aus einer Firma oder so. Wenn es einfach zu ändern ist – wie einen Schlüssel eines Verschlüsselungsverfahren passiert vielleicht nicht viel. Aber ansonsten muss unter Umständen das gesamte Design und Konzept der Software umgestrickt werden nur damit man wieder die benötigte Sicherheit erlangt.

Ich glaube kaum, dass das ein gangbarer oder vernünftiger Weg ist, oder? Sicher, Geheimniskrämerei ist manchmal auch sinnvoll: Passworte und ähnliches sollten nicht unbedingt öffentlich bekannt werden. Ich würde trotzdem sagen: bei allem was mit Sicherheit zu tun hat sind weniger Geheimnisse mehr…

Zur Person

Gregor Longariva ist derzeit als Sicherheits-Administrator für den Lehrstuhl 4 des Instituts für Informatik an der Friedrich-Alexander-Universität Erlangen-Nürnberg tätig.
Desweiteren ist er Autor diverser Artikel in IT-Fachmagazinen zum Thema Systemadministration und Sicherheit.