Kryptokiddies

Nachdem die Wortschöpfung „Skriptkiddie“ mittlerweile schon in verschiedenen Lexika zu finden ist, möchte ich euch an dieser Stelle ein neues Volk vorstellen, welches unmittelbar davon abzustammen scheint: der Kryptokiddie.

Nachdem ich mich im Internet ein wenig über Kryptoimplementierungen informiert hatte, fand ich nach kurzer Zeit folgende PHP Implementierung des asymmetrischen Verschlüsselungsverfahren RSA:

http://scripts.ringsworld.com/development-tools/rsa1.3/rsa.php.html

Bevor ich nun erkläre warum der Code wirklich wertlos ist, einige Worte zu dem Verfahren selbst. Dies beruht darauf, das zwei große Primzahlen miteinander multipliziert werden. Diese ergeben das RSA Modul m. Mit Hilfe dieser Primzahlen (unter Verwendung der Eulerschen Phi Funktion) wird ein öffentlicher Schlüssel e und ein privater d ausgerechnet. Bei der Verschlüsselung wird einfach nur der Klartext p mit dem öffentlichen Schlüssel e exponenziert, also c = p^e mod m ausgerechnet. Zur Entschlüsselung passiert das selbe mit dem Chiffretext c und dem privaten Schlüssel d und ergibt sich zu p‘ = c^d mod m. Falls alles korrekt ist, entspricht p=p‘.

Wem das nun zu schnell ging: bei diesem Verfahren gibt es 2 Schlüssel, einen öffentlichen und einen privaten. Mit dem öffentlichen lässt sich lediglich ver- und mit dem privaten entschlüsseln. Will man nun jemandem eine Nachricht schicken, wird der Text mit dem öffentlichen Schlüssel (des Empfängers) verschlüsselt und da nur er den privaten besitzt, kann auch nur dieser den Text wieder entschlüsseln.

Mit dem Zeitalter der asymmetrischen Verschlüsselungsverfahren ist die Zeit des „Schlüssel im Aktenkoffer mit Handschellen übergeben“ vorbei und überflüssig geworden.

Das ganze funktioniert jedoch nur praktisch sicher, wenn das o.g. RSA Modul (also das Produkt der 2 Primzahlen) groß genug gewählt wurde. Groß bedeutet bei dem heutigen Stand der Technik: 1024 – 2048 Bit. Im Privatgebrauch sind 1024 völlig ausreichend, Banken und Zertifizierungsstellen verwenden 2048. In unserem Implementierungsbeispiel werden jenoch nur zwei 13 Bit Primzahlen multipliziert was sich zu einem 26 Bit RSA Modul ergibt.

Die Faktorisierung (also das zurückrechnen von einem Modul zu 2 Primzahlen) benötigt ca. 1 Sekunde. Also nach einer ganzen Sekunde sind die zwei Primzahlen und der private Schlüssel ausgerechnet. Es macht mir wirklich Angst, das es vielleicht Leute gibt die diesen Quelltext einsetzen.

Was lernen wir daraus:

  • wenn bei einer RSA Implementierung ein Array mit Zahlen zu sehen ist: skeptisch sein
  • wenn die Zahlen auch noch vom Typ Integer sind: Alarm!
  • wenn lediglich aus diesen Zahlen das Modul gebastelt wird: HÄNDE WEG!!!

Ich danke für die Aufmerksamkeit bei meinem zweiten konstruktiven Blogeintrag.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.