Gestaffelte Abwehr
Captchas aus verzerrtem Text sind zwar ein beliebter Sicherheitsmechanismus. Jedoch bereitet ihre Lösung Anwendern häufig zu viel Mühe, und Computern fällt es leichter als erwünscht. Andere Verfahren stören weniger und sind ebenso zuverlässig.
- Jörn Wagner
Im Januar stellte iX eine Methode vor, mit PHP sogenannte Bild-Captchas zu erstellen [1]. Ein Captcha (Completely Automated Public Turing Test to Tell Computers and Humans Apart) soll Menschen von Softwarerobotern (Bots) unterscheiden. Dazu dienen häufig Bilder, aus denen der Anwender versteckte Buchstaben und Zahlen in ein Textfeld übertragen muss. Obwohl wesentlich bessere Captcha-Verfahren existieren, halten sich die Bildchen hartnäckig.
Es gibt verschiedene Gründe für die Anwendung von Captchas und damit verbundene Einsatzgebiete. Von Blogs, Foren und sozialen Netzen über freie Mail-Angebote bis hin zu Banken – viele Dienste setzen ein Captcha als Schutz vor dem automatisierten Missbrauch ein. Dabei geht es ebenso um die Abwehr von Spam wie um den Schutz von Informationen, zum Beispiel bei einer Seite mit Börsenkursen oder einer Onlineumfrage. Das simple Prinzip: Ein oder mehrere Tests entscheiden, ob die Eingabe von einem Menschen oder einem Programm stammt. Die Umsetzung dagegen ist knifflig und fehlerbehaftet.
Ein ideales Captcha erfĂĽllt folgende Bedingungen:
- Heutige Computer können den Test nicht lösen.
- Menschen können ihn (meistens) lösen.
- Es lassen sich neue Frage-Antwort-Kombinationen generieren.
- Menschen sollen den Test in möglichst kurzer Zeit lösen.
Als Alan Turing 1950 den Test formulierte, glaubte er, dass Computer 50 Jahre später einem Anwender nach einem fünfminütigen Dialog in 70 % der Fälle vorgaukeln könnten, sie seien menschlich. Da sich diese vier Vorgaben beeinflussen, gibt es bisher kein Verfahren, das alle erfüllt und so perfekt Menschen von Maschinen unterscheidet.
Wer verzerrten Text entziffern kann
Als De-facto-Standard hat es sich durchgesetzt, verzerrte, schlecht zu erkennende Texte anzuzeigen und den Benutzer zu fragen, was er lesen kann. Die Bildchen mit wirren Mustern und schlecht erkennbaren Zahlen- und Buchstabenkombinationen erfüllen aber nur die dritte Bedingung. Denn Computer sind heutzutage in der Lage, mit Optical Character Recognition Texte aus einem Bild zu extrahieren. So arbeiten viele Projekte wie PWNtcha, Anti-Gimpy und aiCaptcha (siehe „Onlinequellen“) bereits erfolgreich an der Erkennung von Bild-Captchas, die unter anderem Yahoo, Microsoft, Paypal und die weit verbreitete Forensoftware phpBB einsetzen. Dass diese Seiten bisher noch nicht in großem Stil Ziel von Angriffen geworden sind, hängt nur damit zusammen, dass die Projekte ihren Code nicht veröffentlichen. Einzig von Anti-Gimpy gibt es eine öffentlich einsehbare Beschreibung des Algorithmus.
Die Zwickmühle bei der Verbesserung der Bild-Captchas ist schnell erklärt: Je aufwendiger es für den Computer ist, die Informationen zu erkennen, desto größer auch die Schwierigkeiten für Menschen. So sind Wörter im Allgemeinen besser zu erkennen als abstrakte Zeichenfolgen; allerdings basiert der Test dann auf einem begrenzten Wortschatz. Damit verletzt er die dritte Bedingung, da sich keine neuen Frage-Antwort-Kombinationen generieren lassen. Verzerrt man die Zeichen immer stärker und überlagert sie mit Störungen, fällt es sogar sehr gut sehenden Menschen schwer, die richtige Zeichenfolge zu erkennen.
Solche Falscherkennungen steigern vor allem die Frustration beim Anwender. Auf einer bekannten deutschen Studentenseite ist für beinahe jede Aktion ein Captcha zu lösen, was die Zeit zur Erledigung des Gewünschten schnell auf ein Vielfaches ansteigen lässt. Ein entnervter Benutzer besucht unter Umständen die Seite nicht mehr, wenn kein Nutzen den erhöhten Aufwand rechtfertigt.
Zudem diskriminiert das Verfahren Menschen mit Sehschwächen, etwa Farbfehlsichtigkeiten, denen es unter Umständen schwerer fällt, den Test zu bestehen als einem Spam-Bot. Bild-Captchas sind also von Maschinen zu knacken, von Menschen dagegen immer seltener und lassen sich, wenn sie gut sind, nicht schnell lösen. Es gibt allerdings Alternativen.
Neben verzerrten Bildern findet man hin und wieder auch die einfache Aufforderung „Geben Sie folgenden Sicherheitscode ein“ und ein Feld namens „Sicherheitscode“. Sogar dieser geringe Schutz reicht oft aus. Obwohl ein wenig semantische Analyse für das Knacken erforderlich ist, kann man für jedes Verfahren einen eigenen, einfachen Angriff entwerfen. Damit besteht der einzige Schutz darin, dass nicht viele Seiten es einsetzen und sich der Aufwand für den Angreifer deshalb nicht lohnt.
Warum jede Lösung richtig ist
Ein weiteres Verfahren namens Anti-Captcha geht sogar noch einen Schritt weiter in Richtung Unsicherheit: Statt der Lösung soll man einen beliebigen anderen Text eingeben. Dies hilft vielleicht gegen Bots, die zufällig auf das verwendete Verfahren trainiert sind, weil sie fälschlicherweise den Code richtig eingeben. Allerdings öffnet es Tür und Tor für falsch programmierte, schlecht arbeitende und überhaupt nicht trainierte Bots. Denn statt einer gelten unendlich viele Lösungen. Die Hauptmotivation ist hier, die Hürde für den Benutzer niedrig zu halten.
Die Netbank sichert den Zugang zu Onlinekonten auch durch ein visuelles Captcha. Um Menschen mit Sehbehinderungen nicht auszuschließen, bietet sie ein auditives Captcha (oder Soundcha) an, das die Ziffern einzeln mit großen Pausen „vorliest“. Das eröffnet jedoch eine einfache Angriffsmöglichkeit, da der Vorrat an Tonschnipseln auf zehn begrenzt ist und sie sich durch die Pausen und die deutliche Aussprache gut voneinander unterscheiden lassen. Eine Verzerrung, wie früher bei Hotmail, würde wiederum die Barriere für Menschen mit schlechtem Hör- und Sehvermögen erhöhen. Zudem setzen Soundchas zu viel voraus: Der Benutzer darf sich nicht in einer lauten Umgebung befinden oder in einer, die das Abspielen von Geräuschen verbietet, er muss mit Sprache und Dialekt des Sprechers vertraut sein, eine funktionsfähige Soundkarte besitzen und sein Betriebssystem muss das verwendete Audioformat wiedergeben können.
Bereits Ende 2005 veröffentlichte das World Wide Web Consortium einen Artikel, der logische Puzzles, Nutzungsbeschränkungen und heuristische Tests vorschlug. Logische Puzzles sind zum Beispiel die (vermeintlich) leichten Fragen „Was ergibt 1 + 1?“ oder „Welches Tier macht ‚miau’?“. Die erste ist jedoch ziemlich gut maschinenles- und -lösbar, und bei der zweiten ergeben sich andere Zweifel: Was soll mit Eingaben wie „katse“ passieren? Ist „Kater“ ebenfalls richtig? Versteht der Benutzer die Frage noch, wenn sie auf Englisch gestellt wird? Sind dann Eingaben wie „cat“, „chat“ und „felino“ gültig? Außerdem bieten solche Puzzles immer nur einen begrenzten Fragenschatz und verletzen damit ebenfalls die Bedingung, dass sich neue Frage-Antwort-Kombinationen erzeugen lassen. Bei mathematischen Aufgaben ist dies nicht so, allerdings könnten Rechnungen der Art „Bilden Sie die Quadratwurzel aus der achten Potenz vom Zehner-Logarithmus von einhundert“ Benutzer vergraulen.
Wenn das Textfeld ausgefĂĽllt ist
Heuristische Tests auf Schlüsselworte haben dieselben Nachteile wie aktuelle Anti-Spam-Software: Ihre Qualität hängt von den verwendeten Algorithmen und von der Pflege der Black- und Badword-Listen ab. Damit entbrennt ein stetiges Wettrennen zwischen Spammern und Captcha-Herstellern.
Ein Formularfeld per CSS auszublenden und bei ausgefülltem Feld den Zugriff zu verweigern, basiert auf dem Verhalten von Spam-Bots, mangels semantischer Analyse jedes Feld auszufüllen, um überall ihre Werbebotschaft zu hinterlassen. Alternativ könnte man den Wert von Standardfeldern wie „Name“ prüfen – im Blog des Autors finden sich viele Spam-Kommentare von „Name“ (die Standardbelegung).
Microsofts ASP.Net Control „NoBot“ hält sich im Grunde an die vom W3C vorgeschlagenen Nutzungsbeschränkungen und prüft, wie schnell der Benutzer das Formular absendet (Menschen brauchen länger als drei Sekunden) und wie häufig er dies tut (Spammer liefern meistens viele Nachrichten hintereinander ab). Zusätzlich führt es eine Rechnung in Javascript durch, deren Ergebnis stimmen muss. Streng genommen prüft es hierbei nicht, ob ein Mensch das Formular benutzt, sondern nur, ob ein Javascript-fähiger Browser verwendet wird. Allerdings erfüllt dieses Verfahren immerhin alle Bedingungen außer der zweiten. Bei abgeschaltetem Javascript weist dieses Verfahren einen Mensch immer ab.
Eine möglichst effiziente Kontrolle sollte mehrere Verfahren kombiniert anwenden. Zwar bietet eine transparente Lösung nicht notwendigerweise mehr Sicherheit als ein Bild-Captcha, belästigt aber immerhin den Benutzer nicht.
FĂĽr Wordpress existiert ein Plug-in, das ein logisches Puzzle benutzt, aber die Antwort bei aktiviertem Javascript automatisch gibt. Der Autor konnte damit den Spam in seinem Blog eliminieren, ohne dass die Benutzer etwas von dem Test merken.
Was das Kombinieren bringt
Kombiniert man dieses Vorgehen mit den oben genannten Nutzungsbeschränkungen und Verhaltensauffälligkeiten von Bots, hat man einen effektiven und für den Benutzer komfortablen Turing-Test. Eine zusätzliche Prüfung, ob das Gegenüber einen handelsüblichen Browser einsetzt, schadet nicht, da Spammer häufig selbstgeschriebene Programme verwenden. Sie sollte allerdings nicht den manipulierbaren User-Agent-String auswerten, sondern eher browserspezifische Variablen und Verhaltensweisen, die unter anderem bei Javascript-Weichen zum Zuge kommen.
Fast nebenbei beseitigt man so eine weitere Schwachstelle von Bild-Captchas: Selbst das beste, das ein Computer nicht erkennt, jeder Mensch aber identifizieren kann, ist anfällig für einen verteilten Angriff, auch bekannt als „Spam for Porn“. Dabei bekommt der Besucher einer anderen Webseite das zu lösende Captcha angeboten, das kostenlosen Zugriff auf für ihn interessante Informationen gewähren soll. Unwissentlich löst er die Aufgabe für den Spammer, der sich dadurch als Mensch ausgeben kann. Bei einem kombinierten Ansatz müsste der Übeltäter das gesamte Browserfenster präsentieren, damit sein Bot alle Tests besteht. Und das sollte auffallen.
Fazit
Webseiten werden oft von Bots heimgesucht. Zur Abwehr dienen sogenannte Captchas. Die häufig verwendeten Bild-Captchas haben jedoch zwei Schwachpunkte: Sie sind von Computern zu lösen und verursachen bei Menschen immer öfter Frustration und Zeitverlust.
Gerade wer das Verfahren fĂĽr sicherheitskritische Anwendungen wie Onlinebanking einsetzt, sollte es ĂĽberprĂĽfen, um dem Benutzer keine falsche Sicherheit vorzugaukeln. Es gibt eine Reihe weiterer Tests, deren Kombination sicherer und komfortabler funktioniert als Bild-Captchas.
Jörn Wagner
ist Diplomand im Fach Wirtschaftsinformatik an der Universität zu Köln und arbeitet freiberuflich als Softwareentwickler.
Literatur
[1] Hubert Benjamin Ritzdorf; Webprogrammierung; Captchas in PHP; Mensch oder Maschine; iX 1/2008, S. 142
[2] Alan M. Turing: Computing Machinery and Intelligence, Mind, vol. LIX, no. 236, October 1950, pp. 433-460
[3] L. von Ahn, M. Blum, J. Langford: Telling humans and computers apart (automatically), CMU Tech Report CMUCS-02-117, February 2002 (ck)