Bits & Bytes

Hier stelle ich einige Tools vor, die ich selbst entwickelt habe.

Vigenère Solver

Angefangen hat alles mit Geocaching. Bei diesem Hobby gilt es, an Hand von GPS-Koordinaten in der Natur Behälter zu finden. Darin befindet sich ein Logbuch, in das man sich einträgt wenn man die Dose (Auchtung, Geocacher-Jargon!) gefunden hat. Manchmal erhält der Geocacher die Koordinaten erst, nachdem er zuhause ein Rätsel gelöst hat.

Nun gibt es einige solcher sogenannten Mysterie-Caches, die die Vigenère Verschlüsselung verwenden und nur den verschlüsselten Text vorgeben. Der Schlüssel, der für die Entschlüsselung benötigt wird, muss vom Geocacher gefunden werden.

Im Internet gibt es hierfür eine ganze Reihe von Online-Tools, die versuchen, den verschlüsselten Text zu knacken und den Schlüssel zu bestimmen. Von eigentlich allen dieser Tools war ich enttäuscht, und so machte ich mich daran, einen performanten und akuraten Solver mit einer einfachen Benutzerschnittstelle zu entwickeln. Und dieser Solver sollte auch dann noch funktionieren, wenn alle Leer- und Satzzeichen vor der Verschlüsselung entfernt werden.

Das Ergebnis ist der Vigenère Solver.

Substitution Breaker

Als der Vigenère Solver soweit war, dass er meine Erwartungen erfüllte, war die nächste Herausforderung schnell gefunden: Das Dekodieren von Substitution-Ciphern ohne Kenntnis des Schlüssels. Diese Verschlüsselung wird ebenfalls in vielen Mysterie-Caches verwendet. Das Prinzip ist einfach: gleiche Buchstaben des Klartextes werden jeweils durch andere Buchstaben ersetzt. Manchmal werden die Buchstaben auch durch Symbole ausgetauscht.

Die Herausforderung war größer, als zunächst angenommen. Das Verfahren, welches im Vigenere-Solver zum Einsatz kam (Stichwort Bigramme), lieferte keine vorzeigbaren Resultate. Hier musste ich sogar auf Quadgramme umsteigen, also auf kleine Textfragmente, die aus jeweils 4 Buchstaben bestehen.

Viele Verfahren habe ich ausprobiert, aber am Ende war das recht einfache Random-Restart-Hillclimbing am performantesten.

Das Ergebnis ist der Substitution Solver. Eine Pyton-Version der Implementierung stelle ich auf GitLab als Open Source zur Verfügung.

Plausibär

Und wieder schlägt die Geocacher-Seele zu: Auf einer Geocache-Runde im Schwarzwald statteten wir einer Dose nach der anderen einen Besuch ab. Artig notierten wir die Bonuszahlen aus den Caches, um am Ende der Runde einen sogenannten Bonus-Cache lösen zu können. Der Bonus-Cache gibt am Ende der Runde seinen Koordinaten preis, wenn man alle notierten Bonuszahlen in eine vorgegebene Formel einträgt. Unsere Dummheit: Die Beschreibung zu dieser Runde hatten wir nur flüchtig gelesen, sonst hätten wir den Teil bemerkt, der uns darauf hinwies, auch die Farbe der Mönchssymbole (schwarz oder weiß) in den Caches zu notieren. Vor dem Einsetzen in die Formel musste man entsprechend der Mönchsfarbe den Wert der Bonuszahlen verdoppeln oder auch nicht.

Da standen wir nun im Wald und konnten den Bonus-Cache nicht finden.

Ach, hätten wir doch damals nur schon den Plausibär gehabt!

Das ist nämlich ein Tool, welches die Formel als Input nimmt. Für die in die Formal einzusetzenden Bonuszahlen kann der Benutzer mehrere mögliche Werte definieren. Der Bär berechet aus allen möglichen Kombinationen der Bonuszahlenwerte die Koordinaten und zeigt diese alle auf einer Karte an. Nun ist es an dem Benutzer, die dargestellten Marker auf der Karte auf ihre Plausibilität zu untersuchen (welche Marke liegt mitten im Wald, welche am Wegesrand?) und so vielleicht doch noch die ersehnte Dose zu finden.

Der Plausibär ist übrigens auch sehr hilfsbereit, wenn der Cacher z.B. einen Cache der Runde nicht findet, und ihm somit eine Bonuszahl fehlt.

tlsmate

Während meiner beruflichen Karierre habe ich mir unterschiedliche Kompetenzen angeeignet. Beschäftigt habe ich mich intensiv mit dem Testen von Telekommunikationsprotokollen, dem Entwickeln eines Protokollsimulators und mit dem TLS-Protokoll.

Warum jetzt nicht einfach diese Kompetenzen kombinieren und ein neues schickes Python-Project aufsetzen?

Herausgekommen ist tlsmate, ein Tool, welches TLS-Server abscannt und die Konfiguration sowie die verwendeten Zertifikatsketten und zusätzlich noch erkannte Schwachstellen meldet und ausgibt. Ein Tool also für Security- und TLS-Experten.

Aber halt, es gibt doch schon viele solcher Tools, oder?

Ja, aber...

...nicht von mir. Ok, kommen wir zum Punkt: Alle dieser Tools (und ich habe mir wirklich viele davon angeschaut) haben Nachteile. Entweder testen sie nur Server, die im Internet erreichbar sind, oder der Umfang der Scanns läßt zu wünschen übrig, oder sie unterstützen nicht alle TLS-Versionen, Ciphersuites, TLS-Extensions, oder andere relevante Eigenschaften. Das ist schon einmal ein Grund für einen "anderen" TLS-Serverscanner.

Aber es gibt noch einen weiteren Grund: tlsmate ist eigentlich gar kein Scan-Tool, sondern ein Framework, um beliebige TLS-Scenarien zu simulieren. Beliebige Nachrichtenfolgen sind extrem einfach als Plugins zu realisieren, und jeder Protokoll-Parameter kann auf jeden beliebigen Wert gesetzt werden. Damit wird es zu einem mächtigen Testwerkzeug.

Und die zur Verfügung gestellte Scanner-Funktionalität ist ein Plugin, welches viele unterschiedliche Testfälle ausführt und das Resultat in einer JSON-Struktur ablegt.

Und für die Zukunft ist geplant, nicht nur einen TLS-Client zu simulieren, sondern auch einen TLS-Server. Das ermöglicht das Testen von TLS-Clients. Wieviele Tools gibt es hierfür?

Und eigene Testfälle zu erstellen ist extrem einfach.

Und noch viel mehr.