Primzahlen sind ein zentraler Bestandteil des asymmetrischen Verschlüsselungsverfahrens RSA (benannt nach den Erfindern Ron Riverst, Adi Shamir und Leonard Adleman). Lassen sich Zahlen einfach in ihre Primzahlen zerlegen, so ist auch RSA gebrochen. Lassen sich Zahlen einfacher faktorisieren, indem wir die Primzahlen im Voraus generieren? Wie effizient ist dies möglich?

Aufträge
Vorbereitung
- Macht euch mit der Funktionsweise von RSA (asymmetrische Verschlüsselung) vertraut.[1]
- Informiert euch über Angriffsmöglichkeiten gegen die RSA-Verschlüsselung.
- Entwerft ein Konzept für ein Programm und stellt es uns vor:
- Wie soll das Programm beim Angriff vorgehen?
- In welchen Schritten wollt ihr beim Programmieren vorgehen, so dass ihr schnell eine brauchbare Ausgabe erhaltet?
- Welche Zusatzkenntnisse braucht ihr noch?
Programm
- Entschlüsselt die vorgegebenen (mit RSA verschlüsselten) Kurzmitteilungen durch Faktorisierung des Modulus. Dies soll nicht von Hand, sondern mit Hilfe eines selbst geschriebenen Programms automatisiert geschehen.
- Bibliothek rsa
- Bibliothek time
- Bibliothek numpy
Präsentation
- Bereitet eine Präsentation vor, die 15 Minuten (plus 5 Minuten für Fragen) dauert. Sie soll die benötigte Theorie, eigene Überlegungen, das Programm und die Erkenntnisse der Klasse näherbringen.
Zusatzaufträge
Grafische Oberfläche
- Programmiert eine eigene grafische Oberfläche, damit die verschiedenen Angriffe in einem Programm vereint werden können.
- Bibliothek guizero
RSA-Verschlüsselung
- Programmiert eine eigene Bibliothek für die RSA-Verschlüsselung, damit ihr nicht unsere Vorgabe verwenden müsst.
Material
Geheimtext 1
Geheimtext: NjkyNzI=
Öffentlicher Exponent: 108779
Modulus: 166057
Geheimtext 2
Geheimtext: MTY3NTEwOTUxMTQ5
Öffentlicher Exponent: 251465185343
Modulus: 484356910049
Geheimtext: NDEwOTE1MzA3NTAzNzM5MzAz
Öffentlicher Exponent: 597098754483607619
Modulus: 633631849777339037