RSA entschlüsseln

Zu Beginn der Stunde haben wir versucht aus Frederiks öffentlichen Schlüssel auf den Privaten zu schließen. Ein öffentlicher Schlüssel besteht aus e (13) und n (899). Die Schwierigkeit besteht nun darin, die beiden Primzahlen zu finden, deren Produkt n ergibt. Zerlegt man 899 in seine Primzahlen, so erhält man 29 und 31. Doch wie schließt man daraus auf den privaten Schlüssel? Da der private Schlüssel aus d und n besteht und n ja bereits im öffentlichen Schlüssel vorhanden ist (899), muss man nurnoch d bestimmen. D muss so gewählt worden sein, dass [e*d]%φ(n)=1 ist. Dies sieht erstmal kompliziert aus, jedoch können wir unsere bereits bekannten Zahlen hier einsetzen. Dann sieht die Formel folgendermaßen aus: [13*d]%φ(n)=1 . Nun fehlen jedoch immernoch 2 Variablen, was das Lösen extrem schwer macht. Dieses Problem ist jedoch schnell gelöst, denn die Faktorisierung von n, welche für die Sicherheit von RSA verantwortlich ist, wurde bereits durchgeführt. Aus den erhaltenen Primzahlen kann man nun nach der Formel φ(n) = (p-1) * (q-1) das phi berechnen. In diesem Fall wäre das phi also (29-1)*(31-1)=840. Jetzt fehlt nurnoch eine Variable, welche durch stupides ausprobieren gelöst werden kann. Ein Programm, welches dies automatisiert durchführt, kann z.B. folgendermaßen aussehen:

def calc(p,q,e):
    n=p*q
    phi=(p-1)*(q-1)
    d=0
    while (e*d) % phi !=1:
        d=d+1
    else:
        return [e,n,d]

Diese relativ ineffiziente Variante gibt als 3. Parameter das d zurück, bei der die Gleichung (e*d) % phi ==1 wahr ist. In diesem Fall wäre d=517 . Eine verschlüsselte Nachricht müsste also hoch 517 und dann %899 gerechnet werden um sie zu entschlüsseln. Überprüft man dies durch einsetzen, so ergibt 13*517 %840 tatsächlich 1. Somit ist der erechnete private Schlüssel (517,899) und die RSA Verschlüsselung wurde geknackt. Jedoch ist dies bei heutigen Schlüsseln mit Längen von z.B. 4000 bit momentan praktisch unmöglich. Um die Sicherheit zu gewährleisten muss jedoch auf weitere Faktoren geachtet werden, wie zum Beispiel, dass die zu verschlüsselnde Zahl^n größer als das gewählte n ist. Ist dies nicht der Fall, so wirkt sich das % nicht aus und es wird nicht vollständig verschlüsselt.

Signatur

Möchte man sicherstellen, dass eine Nachricht von einem bestimmten Absender kommt und sie nicht unbefugt verändert wurde, so kann man sie signieren. Im Folgenden wird eine verschlüsselte Nachricht von Lennart signiert und an Frederik versendet. Zunächst verschlüsselt man die gewünschte Nachricht (z.B. 20) mit dem öffentlichen Schlüssel des Empfängers. Dannach verschlüsselt man diese Zahl( z.B. 103) erneut, jedoch nun mit dem eigenen privaten Schlüssel, sodass nun zwei Zahlen an den Empfänger verschickt werden(z.B. 103 UND 317782). Jetzt verschlüsselt der Empfänger die Signatur(317782) mit dem öffentlichen Schlüssel des Senders. Da der öffentliche Schlüssel die Umkehr des Privaten ist, sollte als Ergebnis wieder die verschlüsselte Zahl herauskommen(103). Da man für das Erstellen der Signatur den privaten Sc

Nachricht zu gewährleisten.

Zertifikate

Um zu Verhindern, dass sich unbefugte Personen z.B. als Google ausgeben, gibt es Organisationen, wie z.B. Let´s Encrypt, die bestätigen das die Person oder Firma tatsächlich zu dem öffentlichen Schlüssel gehört. So kann man nicht behaupten, man wäre der Eigentümer von Googles Schlüssel, denn man hat kein Zertifikat, welches dies Bestätigt. Um zu sichern, dass Let´s Encrypt vertrauenswürdig ist und Zertifikate verteilen darf, hat diese Organisation selbst wiederrum ein Zertifikat, welches von ROOT Organisationen vergeben wird. Im Falle von infofmsg versichert DST ROOT CA X3 die Authentizität und vertrauenswürdigkeit von Let´s Encrypt, welche dann dazu befugt ist, Zertifikate für Websiten selbst auszustellen. Um die fortbestehende Sicherheit der Websiten zu gewährleisten haben sowohl die Zertifikate für Websiten, als auch für Zertifikatvergeber ein Ablaufdatum von wenigen Monaten oder Jahren. Nach diesem Zeitraum wird erneut überprüft, ob z.B. Let´s Encrypt vertrauenswürdig ist und ob infofmsg immernoch zu dem öffentlichen Schlüssel gehört. Besucht man mit einem Browser z.B. Google, überprüft dieser ob das Zertifikat von einer anerkannten Organisation ausgegeben wurde und warnt ggf. den Nutzer.

Schreibe einen Kommentar