Computer-Schutz für Jedermann
Große Unternehmen sind vor Angriffen aus dem Netz in der Regel sicher. Viele von ihnen haben bereits besondere Schutzmaßnahmen, z.B. "firewalls" eingerichtet. Der Privatanwender erhält von seinem Internetprovider oder Onlinedienst üblicherweise nur den kurzen Hinweis, vorsichtig mit seinen Passwörtern umzugehen.
Anhand eines Internet-Zugangsprogramms als Beispielanwendung sollte mein Jugend forscht - Projekt daher zeigen, wie ein sicherer Passwort-Zugang, der frei konfigurierbar und leicht zu bedienen ist, für Privatanwender ermöglicht werden kann.
Die Zugangssoftware für das Internet bietet meistens nur sehr geringen Schutz vor Passwortdiebstahl: Sie zeigt statt des eingegebenen Passworts eine Reihe von Sternchen (******) an. Bei diesem Schutz handelt es sich aber um keine echte Chiffrierung. Die Sternchenreihe lässt sich eher mit einer anderen Schriftart vergleichen, die einfach in das normale Format gebracht werden muss, um wieder als normale Zeichenfolge erkannt zu werden.
Entsprechend gibt es weitverbreitete Hacker-Programme, die jedes auf diese Weise angezeigte Passwort sofort wieder sichtbar machen. Dieses Problem tritt bei praktisch jeder Internet-Zugangssoftware auf, selbst bei einer direkten Verbindung über das Windows-DFÜ-Netzwerk: Sie alle verwenden die Sternchenfolge als Anzeige.
Außerdem bieten die Zugangsprogramme häufig eine besonders gefährliche Option an: Das Passwort kann auf dem Rechner gespeichert werden. Diese Passwörter können von Angreifern besonders schnell ausgelesen werden: Bei Standard-DFÜ-Verbindungen sind sie so schlecht gesichert, das mittlerweile viele im Internet weitverbreitete Programme, die oben erwähnten "Trojanischen Pferde", standardmäßig alle DFÜ-Passwörter an den Angreifer senden können.
Brute force-Attacke
Von Hackern angewendete Methode zum Knacken von Passwörtern und Schlüsseln. Hierbei probiert man einfach alle Schlüssel bzw. alle Paßwörter aus, um daß echte Paßwort zu finden.
Das konkrete Ziel meines Projekts war deshalb, ein Internet-Zugangsprogramm zu entwickeln, das die Speicherung des Passworts auf der Festplatte, die Sternchenanzeige und die manuelle Eingabe durch sichere Methoden ersetzt. Der Internetzugang sollte trotz aller Sicherheitsmaßnahmen möglichst benutzerfreundlich bleiben.
Das Grundprinzip ist eigentlich sehr einfach: Bei der Installation des Systems wird mit einem "Schlüsselgenerator" ein Passwort verschlüsselt und auf einem beliebigen Speichermedium, z.B. einer Diskette, abgespeichert. Für die Verschlüsselung reicht im Prinzip eine sogenannte polyalphabetische XOR-Kodierung aus, bei der die Anzahl der Schlüsselwerte gleich der Anzahl der Buchstaben ist (die Schlüsselwerte zu erraten ist dann genauso schwer, wie die Buchstaben zu erraten ohne Kenntnis der verschlüsselten Buchstabenfolge).
Debugger
Programme, die eingesetzt werden, um den Quelltext einer compilierten exe-Datei zu manipulieren bzw. Schlüsselwerte daraus auszulesen.
In meinem Beispielprojekt verwendete ich zusätzlich verschiedene weitere Verschlüsselungstechniken, um die Passwortlänge zu verschleiern, um Brute-force-Attacken zu erschweren (siehe Kasten 1), und zu zeigen, dass die Verschlüsselung leicht erweiterbar ist.
Die hierfür verwendeten Schlüssel sind wiederum Teil der Anwendung selbst. Die Anwendung lädt die Schlüsselwerte aus der Registrierung, entschlüsselt diese und damit dann schließlich das verschlüsselte Passwort. Vorher überprüft die Anwendung, ob sie auf dem richtigen Rechner installiert ist, indem sie charakteristische Daten (z.B. die Festplatten ID) ausliest und mit einem in der Systemregistrieung verschlüsselten über den Schlüsselgenerator installierten Schlüssel vergleicht.
Das Auslesen des Passworts aus der Tastatureingabe kann so auf jeden Fall verhindert werden. Es bleibt jedoch die Gefahr übrig, dass das Passwort bzw. die Schlüsselwerte durch Debugging (siehe Kasten 2) abgefangen werden. Dieses Problem kann unter Windows nicht vollständig gelöst werden. Das Programm verwendet jedoch verschiedene Techniken, um das Debugging soweit wie möglich zu erschweren. Bekannte Debugging-Programme wie SoftIce werden von der Anwendung während der Laufzeit direkt erkannt und führen zum Abbruch des Programms.
Der Quelltext ist, wenn das Programm nicht geöffnet ist, durch Verschlüsselung, Prüfsumme und die sogenannte UPX-Komprimierung, geschützt. Grundsätzlich kann Debugging während der Laufzeit mit den für das Programm unbekannten Debugging-Programmen jedoch nicht verhindert werden. Das Debugging-Programm müsste in der Regel jedoch über einen Trojaner im Hintergrund während der Passworteingabe über Diskette durch das Opfer arbeiten, d.h. es könnte auch noch nicht über eine Online-Verbindung von außen gesteuert werden, sondern müsste automatisch debuggen und auswerten. Solche "intelligenten" Trojanischen Pferde gibt es bis jetzt noch nicht.
Das Programm kann damit natürlich noch keine absolute Sicherheit gewährleisten, die Sicherheit bei der Passworteingabe aber drastisch erhöhen. Damit das Ausspionieren des Passworts weiter erschwert wird, plane ich z.B. noch, die Diskette auf unberechtigte Zugriffe nach dem Einlegen zu überprüfen und "applikationsabhängige Rechtevergabe" einzusetzen.
Das System kann allerdings nur Sicherheit auf dem eigenen Rechner anbieten: Viele Internet Provider verwenden leider keine weitere Verschlüsselung und überprüfen nicht, woher der Anruf kommt. So besteht immer noch die (allerdings vergleichsweise geringe) Gefahr, dass das Passwort auf dem Weg zum Provider abgefangen wird, z.B. durch Abhören der Leitung.
Die Idee habe ich allerdings nicht nur auf Internetpasswörter angewandt, sondern auch für Passwörter in anderen Anwendungen (Zip-Archiv, Word-Dokument, Internet-Formular) verwendet. Hierbei wird das verschlüsselte Passwort von einer Zwischenanwendung geladen und entschlüsselt und dann an das eigentliche Passworteingabefeld geschickt. Beim Versenden besteht diesmal natürlich eine größere Gefahr, dass das Passwort abgefangen wird, als beim Internetassistenten. Durch applikationsabhängige Rechtevergabe kann aber auch hier ein hoher Grad an Sicherheit erreicht werden.
Neben dem Verzicht auf die unsichere Eingabe des Passworts über die Tastatur, hat das System noch einige weitere Vorteile: Das Passwort kann schneller eingegeben werden (nur noch Einlegen und Laden des Speichermediums) und man muss es nicht mehr auswendig lernen und kann deshalb auch ein komplizierteres Passwort verwenden.
Links zum Thema
- Weitere Informationen und Erklärungen
Zur Person
Der 18-jährige Enrico Glaab aus Hessen wurde im Mai 2001 Bundessieger im Fachgebiet Mathematik/Informatik beim Wettbewerb "Jugend forscht".
Bildquelle Enrico Glaab: Stiftung Jugend forscht e.V.
Kategorien
Themen: Computertechnik