Keweon - Zertifikate - Private Key berechnen

Keweon - Zertifikate - Private Key berechnen

Citation preview

Zertifikat & Sicherheit Tutorial: Privaten CertKey zurückrechnen

TORSTEN JAHNKE CERTIFICATE RECALCULATE DONNERSTAG, 20. OKTOBER 2016

1. Rechtlicher Hinweis

Bei der hier vorliegenden Anleitung handelt es sich nicht um theoretische Informationen, sondern es kann aus technischer Sicht auch in der Praxis angewendet werden. Diese Anleitung dient auf keine Fall dazu um zu Straftaten anzustiften oder zu verleiten oder diese zu unterstützen. Diese Anleitung soll lediglich zum technischen Verständnis und zur Aufklärung dienen. Bereits das Herunterladen von Zertifikaten und das berechnen eines privaten Schlüssels von einem fremden Zertifikat stellt eine strafbare Handlung dar, was auf keinen Fall von meiner Seite aus unterstützt werden wird. Ich weise ausdrücklich darauf hin, dass das verwenden der nachfolgenden Informationen zu kriminellen

Zwecken

verboten

ist

und

das

benutzen dieser Anleitung hierfür untersagt wird. Das zurückrechnen von Schlüsseln bei öffentlichen Zertifikaten ist strengstens verboten!

Seite 1 von 12

2. Einführung Immer wieder habe ich Diskussionen mit Sicherheitsverantwortlichen, in denen mir erkläret wird, wie sicher ihre System sind weil auf Zertifikate für die Verschlüsselung gesetzt wird. Dabei ist es völlig egal welche Verschlüsselung oder welches System dahinter steckt, Zertifikate sind die ultimative Lösung. Wenn ich provokativ dann die Frage stelle, was wäre wenn es nicht sicher wäre, bekomme ich auf eine sehr herablassende Art und Weise zu hören, Zertifikate sind nicht zu knacken weil es Zertifikate sind und es technisch nicht geht. Dass das jedoch falsch ist, werde ich hier entsprechend zeigen und Sie können das auch selbst ausprobieren. Es ist problemlos möglich einen privaten Schlüssel von einem Public Zertifikat zurückzurechnen. Und das sogar innerhalb von wenigen Minuten. Damit die Theorie einen entsprechenden Sinn bekommt, verwende ich hier in dem Beispiel ein 256-Bit Verschlüsselung bei welchem ich aus dem Zertifikat den entsprechenden „privaten Key“ zurückrechnen werde.

Seite 2 von 12

3. Mathematik Gerade in Deutschland kommt zu oft der Satz „Erklären Sie es einfach, denn ich muss es schnell verstehen“. Also gut, wenn man es einfach darstellen möchte dann ist ein Zurückrechnen eine simple Gleichung. Schematisch dargestellt kann man für eine Verschlüsselung von Daten folgende Gleichung aufstellen: PublicKey + PrivateKey + Daten = Verschlüsselte-Daten Stellt man die Gleichung nun um, kommt man auf folgende schematische Darstellung: (Verschlüsselte-Daten) – Daten – PublicKey = PrivateKey Somit ist der PrivateKey = X und damit lautet die Aufgabe: Lösen Sie die Gleichung nach X und fertig. Keine Sorge, ganz so einfach ist es wirklich nicht. Um den private Key eines Zertifikates zurückrechnen zu können, ist es notwendig zu wissen wie eine Verschlüsselung aufgebaut ist. Jede Zertifikatsverschlüsslung basiert mathematisch auf einen Tupel (Liste) von mindestens 2, jedoch höchstens 6 Long-Integer Objekten. Die jeweiligen Objekte treten in fester und folgender Reihenfolge auf: 1. RSA Modulus (n) 2. Public Exponent (e) 3. Private Exponent (d) 4. Erster Faktor von n (p) 5. Zweiter Faktor von n (q) 6. CRT (Chinese Remainder Theorem) Koeffizient (1/p) mod q (u) Der Modulus „n“ ist das Produkt von zwei Primzahlen. Der öffentliche Exponent „e“ muss größer als 1 und ungerade sein. Im Falle eines privaten Schlüssels gilt somit folgendes: 1. e != 1 2. p*q = n 3. e*d = 1 mod (p-1)(q-1) 4. p*u = 1 mod q Das war es auch schon im Großen und Ganzen. Das hier ist sicherlich keine detaillierte mathematische Erklärung oder Formel. Das würde an der Stelle doch etwas zu weit führen. Die Grundlagen sind damit jedoch erklärt.

Seite 3 von 12

4. Benötigte Tools Die Berechnungen des „private Key“ führt man am einfachsten auf einem Linux System durch. Ich verwende hier ein Ubuntu 16.10 Server System und nutze nur die sogenannte Shell, al