Kryptool - der Passwort-Tresor

 Oktober 2007


-----

Kurzfassung
Ausgangssituation
Meine Lösung
Vorgaben
Mein Programm
Passworteingabe
Entschlüsselung
Verschlüsselung
Sicherheit
Das Programm
Nachtrag: Neue Passworteingabe
Version zwei zum runterladen


-----
 

Kurzfassung

Da wollen die Politiker im Ernst Online-Durchsuchungen und Bundestrojaner als Mittel gegen Terrorismus einsetzen?
In meinen Augen ist das großer Quatsch, da man die Zugriffe mit einfachen Mitteln verhindern kann.  

  Auch als Nicht-Terrorist habe ich Texte auf meinem Computer, die rein privat sind. Um zu zeigen, wie einfach man solche Daten vor dem ausspionieren sicher schützen kann, habe ich einen simplen Passwort-Tresor programmiert, in dem ich all meine Pins, PUKs, Passwörter und Benutzernamen einlagere.  

  Die Software gibt's inklusive Quelltext (Delphi5) und verschlüsseltem Beispiel kostenlos hier zum runterladen (905K) (Psst - weiter unten steht 'ne neuere Version...)  

   

  Damit ist alles wesentliche gesagt. Aber wer es genauer wissen will, darf natürlich weiterlesen...  

 
-----
 

   

Ausgangssituation

Heutzutage muss man sich Unmengen an Passwörtern, Geheimzahlen und Benutzernamen merken.  

  Spontan fallen mir folgende Stellen ein, bei denen ich so ein geheimes Wort brauche:  

   

[Bild(3.9k)]

PIN für EC-Karte, Kreditkarte und Handy,
Passwort und Benutzername für diverse Rechner zu Hause (mein PC, der Videorekorder, die Fritz!box, das Wlan).  

  Im Internet gibt es Unmengen an Kram:
diverse Mailkonten, diverse Foren,
Homepageadministration, Bankkonten,
Voip-Zugang, Voip-Anrufbeantworter,
dyndns, Bahn, Krankenkasse,
Fotodienst, eBay, Paypal
und natürlich mein Steam-Account.  

  Das nimmt Formen an, die mein alterndes Gehirn so langsam überfordern.
Wenn ich denn mal krank werde, fällt mir bestimmt nicht mehr ein, unter welchem Benutzernamen ich mich bei der Krankenkasse einloggen muss. Und das Passwort dazu schon gar nicht.  

[Bild(10.0k)]

 

  Also könnte ich mir ein schönes kompliziertes Passwort ausdenken und dann überall nur dieses benutzen. Hm - nicht besonders sicher.
Oder ich schreibe mir die alle auf.
Ein Einbrecher, welcher den Zettel findet wäre dann eine Katastrophe!  


Zum Glück gibt es ja Programme wie den Passworttresor oder auch keepass . Mit so einem Programm muss ich mir nur ein Passwort (Master-Passwort) merken, mit dem ich dann Zugriff auf alle meine gespeicherten Passwörter bekomme.
Aber ist das auch sicher? Und wie verschlüsseln die die Daten? Kommt da echt keiner dran?  

  Kann nicht ein Key-Logger das Eintippen meines Master-Passworts mitbekommen?
Oder stehen nach der Entschlüsselung vielleicht die ganzen Passwörter unverschlüsselt im Arbeitsspeicher, so dass der Bundestrojaner leichtes Spiel hat und sie heimlich an die halbe Unterwelt verteilt?
-----
 

   

Meine Lösung

Gemäß dem Motto Vertrauen ist gut - Kontrolle ist besser denke ich
*** Runterladen ist gut, selbermachen ist besser ***
Und es macht irre Spaß, sich für potenzielle Angreifer ein paar Besonderheiten auszudenken, die ihnen das Leben schwer machen sollten!  

[Bild(90.7k)]

 

  Also hab ich mich hingesetzt und selber so einen Tresor programmiert. Natürlich könnt ihr den Quelltext dazu haben, damit ihr alles nachprüfen und eigene Veränderungen vornehmen könnt.  

   

Vorgaben

Mein Passworttresor soll möglichst simpel programmiert sein, damit nachvollziehbar ist, wie er arbeitet. Er muss Schutz gegen das Aufzeichnen von Tastendrücken bei der Passworteingabe bieten und darf das Masterpasswort und die gespeicherten Passwörter nicht im Klartext im Arbeitsspeicher ablegen.  

  Nun gibt es eine Reihe von etablierten Verschlüsselungsverfahren. Siehe
AES-Kandidaten
twofish
AES-Verschlüsselung Rijndael  

  Wer sich die Links näher ansieht, wird feststellen, dass man das nicht mal eben blickt . Bei der Implementierung könnte ich also Fehler machen, welche die ganze Sicherheit zunichte machen.  

  Diese Algorithmen sind auf Effektivität bezüglich Rechendauer und Datengröße getrimmt. Aber das brauch ich ja gar nicht. Ob meine 35 Passwörter nun in 0.003s oder in 3s decodiert werden, spielt keine Rolle. Ob ich dafür 1000 Bytes oder 1 Megabyte brauche ist mir auch egal. Hauptsache, der Kram ist nur für mich decodierbar.  

   

Mein Programm

Ok, ganz so einfach, wie das Teil, was ich letztens im Überraschungs-Ei gefunden habe, möchte ich es potenziellen Crackern natürlich nicht machen:  

[Bild(29.7k)] [Bild(27.7k)] [Bild(27.9k)]

 

  In Sachen Verschlüsselung gehe ich daher einen völlig anderen Weg. Statt durch ausgeklügelte mathematische Verfahren meine Daten bis zur absoluten Unkenntlichkeit zu verändern, mach ich es viel verständlicher:  

  Ich verstecke sie geschickt!  

  Grob gesehen funktioniert das so: Eine Textdatei von sagen wir mal 4000 Bytes wird bitweise in einem 250 mal so großen (1000000 Byte) Haufen Zufallsdaten verstreut. Welche Bits Rauschen und welche Nutzdaten sind, wird durch den Zugangscode (Passwort) bestimmt.  

  Wahrscheinlich hat noch nie jemand wirklich eine Nadel in einem Heuhaufen gesucht. Aber man kann sich sehr gut vorstellen, was das für eine bescheuert aussichtslose Wochenendtätigkeit ist.  

[Bild(126.9k)]

 

  So ähnlich mach ich es aber: ein paar wichtige Nutzdaten werden in einer riesigen Datenmenge, die genau so aussehen wie die Nutzdaten, eingestreut.
-----
 

Passworteingabe

Die Eingabe des Zugangscodes ist ein heikler Vorgang. Wenn dabei jemand zusieht, ist es um die Sicherheit geschehen! Für einen Trojaner ist so was eine Steilvorlage:  

[Bild(7.1k)]

Da braucht er bloß die Tastendrücke mitzulesen, einmal nach Hause telefonieren - und schon ist der Hacker glücklich.  

  Aber für solches Gewürm hab ich nix übrig!  

[Bild(24.5k)]

 

  Meine Passworteingabe malt eine Tastatur auf den Bildschirm. Nun kann man entweder eine Taste auf der Tastatur drücken, oder eine Taste auf der (frei definierbaren) Bildschirmtastatur anklicken. Oder beides prima mischen!  

[Bild(25.0k)]

Ja, da sind auch ein paar komische Sonderzeichen dabei, um es den Crackern echt schwer zu machen!  

  Ok, der Trojaner hat wohl verschissen.  

[Bild(20.5k)]

 

  Bleibt die neugierige Sau, die mir über die Schulter sieht.  

[Bild(10.0k)]


Selbst wer mitschreibt welche Buchstaben ich eingebe, bekommt meinen Tresor nicht ohne weiteres auf. Ich merke nämlich, wie das Passwort eingegeben wird.  

  Dazu bestimme ich die Zeit zwischen den Tastendrücken vor und nach einem Leerzeichen.  

[Bild(2.3k)]


Ja - mein Passwort besteht aus mehreren Wörtern. Deshalb nenne ich es auch Zugangscode.  

  Bei der Zeitbestimmung wird gemessen, ob ich am Wortende eine größere Pause mache als am Wortanfang - oder umgekehrt. Macht man es falsch, bleiben die Daten verborgen.  

   

Entschlüsselung

Wenn sich ein Spionage-Programm tief ins Betriebssystem einklinkt, kann es unter Umständen auf den gesamten Arbeitsspeicher zugreifen. Nachdem ich meinen Zugangscode eingegeben habe, dürfen meine geheimen Passwörter also nicht komplett entschlüsselt im RAM liegen.  

[Bild(4.3k)]

 

  Ist natürlich auch nicht so!  

  Mein Algorithmus vermischt die von mir eingegebenen Daten und legt sie auch nur gemischt im Speicher ab. Zugegeben, der Algorithmus ist total simpel. Aber im Speicher würde man halt den Text "Bank-Passwort" nicht mehr erkennen.  

  Die eigentliche Decodierung passiert nur durch das menschliche Auge (und da kommt auch der Bundestrojaner nicht ran)!  

[Bild(16.7k)]

 

  Gesteuert durch den Zugangscode wird ein Mischindex erstellt. Der gibt an, an welcher Stelle im Dokument ein Zeichen dargestellt werden soll. Beim Anzeigen des entschlüsselten Textes wird daher nicht einfach der Text ausgegeben, sondern durch den Mischindex wird bestimmt, an welcher Stelle auf dem Bildschirm das Zeichen erscheinen soll.
 

[Bild(27.3k)]


Nur dadurch, dass am Ende alle Zeichen an ihrer Position sind, entsteht ein lesbarer Text.  

[Bild(48.6k)]

Ist auch nur ein Detail im Zugangscode falsch, liefert die Anzeige totalen Schrott:  

[Bild(176.5k)]

 

   

Verschlüsselung

Damit man nicht durch recht simple Attacken an meine geschützten Daten kommt, habe ich mir einiges einfallen lassen. So sieht die verschlüsselt gespeicherte Datei nach jedem Speichern total anders aus.  

  Klar, wenn nur der Zugangscode die Position der Nutzdaten bestimmen würde, bräuchte man nur mehrere Versionen der mit dem gleichen Passwort verschlüsselten Datei übereinander legen , und könnte dann an den immer gleich bleibenden Daten die Positionen der Nutzdaten erkennen.  

  Details dazu finden sich in der Programmdokumentation - das ist ein wenig trocken, weshalb ich hier damit nicht langweilen möchte.  

   

Sicherheit

Das Programm geht extrem verschwenderisch mit Ressourcen um. Es braucht selbst für eine kleine Datei eine irre Rechenkapazität und erzeugt unglaublich große verschlüsselte Dateien.  

  Na und - ist doch prima.  

[Bild(2.6k)]

 

  Wenn jemand das knacken will, ist mir doch lieber, er braucht pro Versuch 1 Sekunde auf 'nem Großrechner statt dass man eine Million Passwörter pro Sekunde auf 'nem Pentium 1 durchhecheln kann.  

  Auch dieses Programm lebt davon, dass es letztendlich viel einfacher ist, die PIN meiner ec-Karte zu erraten, als zu versuchen, meine Tresordatei zu knacken!  

  Für Cracker blöd ist auch, dass man erst ganz am Ende erkennen kann, ob der Zugangscode korrekt war. Das kostet richtig Rechenzeit, mal eben ein Passwort auszuprobieren!
-----
 

Das Programm

Die Bedienoberfläche ist extrem simpel. Man kann halt einfach nur eine Textdatei ansehen/editieren/speichern.
Also genau das, was ich brauche!  

  Dass man zu Anfang eine Textdatei (mit Passwörtern, GeheimCodes, Pins etc.) laden soll, diese dann verschlüsselt speichert und dann das Programm neu starten muss um schon wieder das Passwort eingeben zu müssen - und erst dann die Daten editieren kann - hat einen Sinn: Dadurch muss man das Passwort 2x eingeben, bevor man Daten eingibt. Wenn man einen Tippfehler bei der ersten Passworteingabe gemacht hat, käme man nie wieder an die Daten ran!  

  Hier nochmal der Link zur Software Version 1 inklusive Quelltext: kryptool1.zip (905K)  

  In dem Archiv befindet sich auch eine verschlüsselte Beispieldatei, in der erklärt wird, wie die Verschlüsselung funktioniert. Das Passwort ist natürlich Zabex !  

[Bild(26.7k)]


-----
 

   

Nachtrag: Neue Passworteingabe

 

  Damit das Mitprotokollieren von Mauspositionen und Mausklicks nichts nützt, um das Passwort nochmals eingeben zu können, ist mir eine neue Idee gekommen: Die Alphabetuhr.  

  Dabei muss der Klick im richtigen Moment erfolgen. Ein Spitzel bräuchte dann den Bildschirminhalt zum Mausklickzeitpunkt.  

  Das Fenster für die Passworteingabe sieht nun im oberen Teil so aus:  

[Bild(35.1k)]


Die Zeiger oben rotieren. Klickt man nun irgendwo in den Bereich einer der 4 Uhren, so wird das Zeichen eingegeben, welches dem Zeiger am nächsten ist. Damit man das üben kann, wird das Zeichen im Klartext angezeigt.
Sobald man aber eine Taste gedrückt hat (auf der Tastatur vor dem Monitor), werden auch die Alphabetuhr-Eingaben als zufällige Zeichen angezeigt.  

  Klicken kann man übrigends auch deutlich unterhalb der Uhren - z.B neben der Leertaste. Oder auch zwischen den Tastenfeldern. Zur Verdeutlichung habe ich die Zonen mal farbig hinterlegt.  

[Bild(173.0k)]

 

  Zeichnet man einfach die Mausbewegungen und Klicks auf, ergibt das beim nächsten Abspielen ein völlig anderes Passwort, da die Zeiger an zufälliger Position starten - und mit unterschiedlicher Geschwindigkeit laufen.  

  Diese zusätzliche Eingabemöglichkeit macht das Programm noch sicherer - und sieht schön kompliziert aus!  

   

Version zwei zum runterladen

 

  Hier der Link zur neuen Software inklusive Quelltext: kryptool2zip (155K).
Zum ausprobieren kann man sich diese Textdatei runterladen: kryptool2beispiel.zip (814K)
Sie enthält die Beschreibung des Codierverfahrens.
Einfach die ausgepackte Datei ins gleiche Verzeichnis wie das Programm kopieren.
Das Passwort ist ZABEXprotect  

 
-----
 

  Ich hatte auch schon daran gedacht, das Alphabet als Schwarm oder Schlange zufällig über den Bildschirm fliegen zu lassen. Dann muss man mit der Maus hinterher und die richtige Taste im Flug erwischen. Das ist aber wahrscheinlich ziemlich nervig, damit ein längeres Passwort einzugeben, da man sich dauernd neu orientieren muss.  

  Eine weitere Idee ist, eine Tastatur mit QWERTZ-Schema anzuzeigen, wo an jeder Taste das Zeichen steht, welches man auf der echten Tastatur drücken muss, um dieses Zeichen einzugeben.  

  Ein Beispiel:
Wenn ich ein Z eingeben will, schaue ich auf die Z-Taste auf dem Bildschirm. Dort sehe ich, dass an der Z-Taste z.B. "ö" steht. Nun muss ich also auf ö tippen, um Z einzugeben. Die Belegung wird bei jedem Start zufällig vergeben. Damit hat der Keylogger keine Chance.
Der normale über die Schulter Schauende aber auch nicht - da er beim "ö" tippen wohl nicht so schnell zurückverfolgen kann, dass man Z eingeben wollte. Und beim nächsten Start steht vielleicht ein "k" an der Z-Taste - da wird das mit dem "ö" nix.  

  Mal sehen, vielleicht bau ich so eine Software mal - jeder der mitmachen will ist willkommen!  

Kommentieren
   
Startseite

Diese Seiten sind darauf optimiert mit möglichst jedem Browser zu funktionieren.

Aber der Seitenquelltext (strg-U) sieht auch interessant aus, zumindest wenn man ihn mit einem Monospace Font in sehr kleiner Schriftgröße betrachtet.

Valid HTML 4.01! CSS ist valide!