Browsed by
Tag: Open Source

Passwörter, Sicherheit und Verwaltung

Passwörter, Sicherheit und Verwaltung

Passwörter braucht man heute im Internet für beinahe alles. In Foren, bei Social Networks, auf Verkaufsplattformen, bei Banken, beim eMailanbieter oder beim Jabber Konto, überall werden heute Passwörter verlangt und diese Flut der benötigten Authentifizierungen verleitet viele Benutzer dazu überall das gleiche (im Zweifel noch sehr unsichere) Passwort zu benutzen. DIe Probleme die dieses Vorgehen mit sich bringt sollten eigentlich auf der Hand liegen. Kann ich einmal ein Passwort des Benutzers knacken oder in Besitz bringen ist es sehr leicht einfach auf allen möglichen Webseiten mit der selben Benutzername/Passwort Kombination auszoprobieren ob ich mich einloggen kann. Die Folgen können Informationsdiebstahl sein, Beschädigung des Rufes, Versenden von Spam und natürlich das Erzeugen von Schulden durch z.B. Einkäufe bei eBay Amazon und Co.

Um sich zu schützen sollte man ein paar Dinge beachten. An fremden PCs (wie z:b. in Hotels oder Internet Cafes) sollte man nur wenn unbedingt nötig sensible Passwörter wie z.B. Banking Accounts nutzen, denn hier fehlt einem meistens gänzlich die Kontrolle nachzuvollziehen ob irgendwelche Programme installiert sind die die eingegebenen Daten mit loggen und abspeichern könnten. Auch das Speichern von hoch sensiblen Passwörtern im Browsercache sollte vermieden werden, denn das ist zwar unheimlich praktisch und hilft gegen Vergesslichkeit doch hat es auch einige Nachteile. Meist werden die Passwörter heute verschlüsselt abgelegt aber oft ist die Frage wo. Eine Sicherung der Passwortdaten und anschließendes Wiedereinspielen ist oft nicht vorgesehen, daher steht der Benutzer beim Betriebssystemwechsel schonmal dumm da. Doch auch die Sicherheit ist nicht immer nachvollziehbar. Ich würde niemals einer unfreien Software mit geschlossenem Quellcode meine Passwörter anvertrauen wollen. Wieso? Der Grund ist eigentlich ganz einfach, im Normalfall weiß man nicht wie die Sicherheitskonzepte aussehen. Welche Verschlüsselung wird verwendet? Haben überhaupt Fachleute auf diesem Gebiet sich die Sache mal näher angesehen und auf Schwachstellen abgeklopft oder hat sich bloß der aktuelle Praktikant mal 14 Tage eingelesen und dann schnell was hingepfuscht? Generell haben bei Proprietärer Software sehr viel weniger Entwickler Einblick in den Code als bei Open Source Projekten wodurch eine geringere Kontrolle statt findet und auch der Code oft schlechter sein dürfte. Die Beispiele der letzten Jahre wie die DECT Verschlüsselung oder diverse RFID Hacks haben gezeigt das geschlossene Software, auch in Sicherheitskritischen Bereichen, ihre Sicherheit gerne darauf begründet das niemand weiß wie sie funktioniert und nicht darauf das die Konzepte tatsächlich besonders sicher sind.

Der vielleicht wichtigste Punkt bleibt aber wohl die Länge des Passworts und die Art der Verschlüsselung selbst. Als bislang ungeknackter Quasi Standard hat sich in den letzten Jahren der AES256 etabliert. Hier ist zum heutigen Zeitpunkt von einer ausreichend großen Sicherheit auszugehen. Doch auch der Beste Algorithmus nutzt nur wenig wenn das Passwort binnen kürzester Zeit erraten werden kann. Hierzu gibt es im Internet einige Quellen mit Rechenbeispielen. Diese möchte ich an dieser Stelle nicht wiederholen sondern lediglich darauf hinweisen das bei der heutigen Rechnergeschwindigkeit davon ausgegangen werden muss das ein Passwort mit weniger als zehn Stellen und minimum Groß- und Kleinbuchstaben (besser wären noch zusätzlich Zahlen) in einer hinreichenden Zeitspanne brechbar ist. Wer auch die nächste Zeit auf der sicheren Seite sein möchte sollte auf eine Kombination von Groß- und Kleinbuchstaben, sowie Sonderzeichen mit einer Länge von ca. 14 Zeichen in einer sinnlosen Reihenfolge vertrauen und kein Passwort mehr als einmal einsetzen.

Um solche Passwörter zu realisieren gibt es nun verschiedene Ansätze. Man kann sich z.B. seine Lieblingsfilmzitate, Textstellen in Büchern oder Lieblingslieder nehmen und z.B. die ersten 14 Wörter herausgreifen. Von diesen nimmt man nun die Anfangsbuchstaben, versieht diese mit Groß- und Kleinschriebung und ersetzt sie an sinnvollen Stellen durch Zahlen. Ein Beispiel:

Eine Textzeile in einem Lieblingsbuch lautet:

Als sie ankamen war es bereits Nacht

Nun würde man sich die Anfangsbuchstaben herausnehmen und dabei auf die Großschriebung achten:

AsawebN

und um es zu komplizieren könnte man nun an das N eine 8 anhängen (8 = Nacht) in englischen Texten bietet es sich z.B. oft an ein "to" durch eine 2 zu ersetzen und ähnliches:

AsawebN8

Auf diese Weise lassen sich recht komplexe und nicht trivial zu erratende Passwörter genrieren die noch relativ einfach zu merken sind. Wer das nicht kann oder möchte kann über den Einsatz einer Passwortverwaltung wie z.B. KeePass nachdenken. Hierbei handelt es sich um ein Open Source Programm das Passwörter und Zugangsdaten in einer AES256 verschlüsselten Datenbank abspeichert und somit zunächst einmal als relativ sicher gelten kann. Die Datenbank selbst wir mit einem Masterpasswort geschützt das man sich natürlich noch merken muss. Der große Vorteil des Programms ist sein Passwortgenerator. Dieser generiert beliebig lange Zufallspasswörter denen man mitgeben kann ob sie nur Buchstaben, oder auch Zahlen und Sonderzeichen etc. enthalten sollen. Diese Passwörter können als besonders sicher angesehen werden da sie keinem bestimmten Muster folgen. Jetzt kann man einwenden das bei Verlust des Masterpasswortes alle Passwörter gefährdet sind. Das ist sicher richtig, aber es bleibt die Abwägung was die größere Gefahr bedeutet. Entweder ein gemerktes extrem Sicheres Masterpasswort oder die Alternative mit viellecht 15-20 Internetaccounts von denen die Hälfte das gleiche fünfstellige leicht erratbare Passwort benutzt. In jedem Fall sollte bei einer Entscheidung für ein Programm für KeePass (was den Vorteil hat das es als Windows-, Mac- und Linuxversion sowie für viele Handys wie Android und als Portable Version für den USB Stick verfügbar ist) beachtet werden immer ein backup der Datenbank zu machen. Falls das Programm mal durch eine Fehlfunktion die Datenbank beschädigt oder der PC durch einen Hardwaredefekt nicht mehr nutzbar ist sollte man die Möglichkeit haben zumindest seine Passwörter vom Backup wieder zu bekommen.

Warum Open Source gut ist

Warum Open Source gut ist

Da ich die Diskussion in letzter Zeit öfter geführt habe möchte ich mal meine Gedanken zu Open Source Entwicklungstools im Vergleich mit Proprietären hier veröffentlichen. Vieles davon ist uneingeschränkt auch für jede andere Software gültig, aber ich beziehe mich vorrangig auf Entwicklertools.

Oft wird Open Source Software immer mit "Frickeltools", niederer Qualität, Unvollständigkeit, Unbeständigkeit usw. assoziiert. Diese Wahrnehmung mag durchaus gelegentlich auch nicht unbedingt falsch sein, aber meistens ist es auch genau andersrum. Open Source hat im Vergleich zu kommerzieller Software sogar einige unschätzbare Vorteile die viele nicht bedenken oder sogar erst gar nicht sehen.

Obwohl ich meine Diplomarbeit mit dem Visual Studio und .Net in C# entwickelt habe, und ganz nebenbei das VS auch für eine der Besten IDEs überhaupt halte, so bin ich doch überzeugt das die Open Source Gegenstücke in einigen Bereichen sehr viel besser da stehen. Oft kann man bemerken das Leute vor allem von den "Shiny" GUIs geblendet sind und man muss zugeben das auch beim VS darauf geachtet wurde das sich ämtliche Komponenten sehr gut integrieren, es ist auch ohne Plugins bereits sehr vollständig und selbst der GUI Editor für WPF ist im Grunde selbsterklärend. Die Lernkurve bei Alternativen ala Eclipse, Netbeans, MonoDevelop oder wie sie alle heißen ist beinahe immer höher und vor allem bei Eclipse heißt es oft erstmal Plugins installieren, Sprachpakete laden usw.. Der erste große Vorteil erschließt sich schon aus dem eben geschriebenen. Bei Open Source habe ich die absolut freie Toolwahl. Jeder Entwickler kann das Tool einsetzen was ihm am meisten zusagt und die wenigsten Probleme bereitet. Man macht sich außerdem nicht abhängig von einer einzigen Firma deren Tools man zumindest dann benutzen muss wenn man den größtmöglichen Komfort und die schnellst Mögliche Umsetzung aktueller Spracherweiterungen nutzen möchte. Dazu kosten diese Tools dann meist viel Geld, Upgrademöglichkeiten werden oft nicht angeboten und so muss ich alle paar Jahre meine Tools wieder neu kaufen um alle Features nutzen zu können. Bei den Updates und Upgrades liegt sowieso einer der größten Vorteile von Open Source Tools. Hier bekomme ich i.d.R. neue moderne Features, Bugfixes und Optimierungen sehr viel schneller und regelmäßiger als bei Proprietären Produkten. Generell kamen viele Neuerungen und Innovationen in den letzten Jahren durchaus aus der Open Source Szene und wurden später erst in Proprietäre Produkte aufgenommen. Neue Versionen kann ich mir einfach herunterladen und testen, da sie eh frei verfügbar sind. Ein neues Visual Studio gibt es maximal in der abgespeckten Express Edition und viele ergänzende Dinge wie Expression Blend bekomme ich vor dem kostenintensiven Kauf maximal in Videos zu Gesicht.

Ein weiteres Problem ist die Codequalität der Tools selbst. Auch wenn hier einige sofort denken möchten das Open Source Tools aus schlechtem Code bestehen müssen so ist das absolut falsch. Ein Open Source Tool kann von jedem der es möchte angesehen und sein Code kontrolliert werden. Schreibt ein Open Source Entwickler nun schlechten Code wird sofort eine hitzige Diskussion entbrennen bis der Code allgemeinen Maßstäben genügt. Bei Proprietären Tools sieht das ganz anders aus. Hier kann hinterher sowieso niemand in den Code schauen, dafür zählt aber die Releasedeadline gnadenlos herunter. Priorität dürfte in den meisten Proprietären Projekten haben das die Arbeit schnellstmöglich fertig ist. Es gibt bereits einige Beispiele wo ehemals geschlossener Code geöffnet wurde und vorher "aufgeräumt" werden musste da die Öffnung des Codes so wohl zu peinlich war.

Vor einem großen Problem stehen viele Anwender auch wenn eine neue Version eines Programmes veröffentlicht wird und sie einen kritischen Fehler aufweist, nicht mehr mit bestehender Zusatzsoftware zusammenarbeitet oder lieb gewonnene Funktionen einfach weggelassen wurden. Im Falle von Proprietären Produkten wie dem Visual Studio bleibt mir nichts übrig als zu warten das Microsoft dieses Problem behebt. Bei einem Tool wie Eclipse könnte ich entweder ein Plugin austauschen (falls der Fehler davon verursacht wurde) oder mir einfach eine andere IDE suchen die derzeit besser funktioniert, aber auch hier würde sicher zum tragen kommen das der Kontakt zu den Entwicklern und das einchecken von Bugs sowie das Fixen derselben jedem möglich ist und so wird der Fehler hier tendenziell viel schneller behoben sein, da es potenziell auch viel mehr Entwickler gibt.

Zu guter letzt ist es sicher auch ein ernst zu nehmender Grund das es so gut wie noch nie bei Open Source erzwungene Technologiewechsel gab. Wenn ich heute moderen Windows Programme mit .Net entwickeln möchte komme ich an C# und .Net 4.0 sowie der WPF kaum vorbei. Vor einigen Jahren hatten wir auch schon C#, aber noch .Net 2.0 und Forms, einige Zeit davor war C++ mit Win32 und MFC aktuell. Dies sind keine fließenden Übergänge gewesen sondern erforderten beim Entwickler immer das Kaufen neuer Tools und brachten teils extreme Lernkurven mit sich. Eine Alternative gab es kaum, da viele neue Features oft auch nur für die neue Technologie vorhanden sind. Im Open Source Bereich liefen solche Dinge ungleich anders ab. Technologiewechsel wie z.B. bei Jave von AWT auf Swing waren immer optional und selbst heute kann ich noch AWT Anwendungen bauen die zwar nicht so schön aussehen, aber viele der modernen Features nutzen können. Auch Versionssprünge der Programmiersprache selbst laufen sehr viel sanfter ab und erfordern selten eine Neuinstallierung der ganzen Entwicklungsumgebung. Neue Features werden öfter und dafür in kleineren Schüben eingepflegt. Somit ist die Lernkurve sehr viel schmaler. Allerdings sind beinahe immer auch die alten Technologien noch voll weiterhin nutzbar.

Zum Schluß möchte ich noch einmal sagen das auch ich natürlich sehe das aufpolierte Tools wie das Visual Studio und Expression Blend es erlauben in kürzester Einarbeitungszeit extrem schicke GUIs zu stricken und einem möglichst viel Arbeit abnehmen. Hier sind Open Source Tools noch ein ganzes Stück hinten dran, aber man gibt damit auch einen großen Teil seiner Freiheit auf. Nach einer Gewissen Einarbeitungszeit stehen die Ergebnisse die man mit freien Tools erzielt denen die man mit z.B. VS erreicht in nichts nach aber man erhält sich seine Unabhängigkeit.