Das RSA-Verfahren
Abschließend wird als real benutztes Verfahren das RSA-Verfahren im Rahmen des Arbeitsblattes Das RSA-Verfahren vorgestellt.
Bemerkung: Im Zusammenhang mit dem RSA-Verfahren kann auch der Schlüsselaustausch nach Diffie-Hellman als ein weiteres Beispiel für ein asymmetrisches Verfahren behandelt werden. Dies ist auch aus historischer Sicht interessant. Wenn dies im Rahmen der RSA-Einheit thematisiert werden soll (was durchaus sinnvoll ist), so kann hier das Arbeitsblatt 02_iud_ab_asym_RSA aus der Einheit „Informationsgesellschaft und Datensicherheit (iud)“ verwendet werden.
Eine Liste verfügbarer Primzahlen, bei denen noch mit geringen Hilfmitteln gerechnet werden kann, findet man im Internet, z.B. bei Walter Fendt; ebenso ASCII-Tabellen der Buchstaben und Zahlen.
Um die Komplexität zu reduzieren, wird hier in diesem Unterrichtsgang lediglich der Kommunikationsweg A → B betrachtet, nicht die beiderseitige Kommunikation. Nachdem der Unterrichtsgang bis hier verfolgt wurde, kann die Erweiterung auf eine beiderseitige Kommunikation aufgesetzt werden.
Tiefergehende Hintergrundinformationen zu grundlegenden Fragen:
Wie sicher ist RSA?
Um den Algorithmus anwenden zu können, muss der Benutzer das Produkt kennen. Der öffentliche Schlüssel informiert aber lediglich über die Zahl (bestimmt als ) und nicht über die beiden erzeugenden Primfaktoren und selbst. Diese müssten eben über Faktorisierung herausgefunden werden, Stichwort „Einwegfunktion“.
In der Praxis setzt man also aus so großen Primfaktoren zusammen, dass die Zerlegung selbst mit leistungsfähigen Computern Jahre dauern würde (siehe Info in den Arbeitsblättern).
Da das Problem der Faktorisierung prinzipiell gelöst werden kann, bedeutet das, dass RSA theoretisch gesehen nicht sicher ist. Es dauert eben nach derzeitigem Stand der Technik und Mathematik so lange, dass die Information bis zum Zeitpunkt der Lösung nicht mehr relevant ist (diesen generellen Aspekt von „Sicherheit“ lohnt es sich durchaus, im Unterricht zu thematisieren: Auch z.B. Tresore werden mit einer Garantie verkauft, wie lange sie unbefugten Öffnungsversuchen widerstehen können).
In dieser Hinsicht ist also RSA solange sicher, bis ein entsprechend schneller Algorithmus für die Primfaktorzerlegung gefunden ist.
Bemerkung zu Diskrepanzen im Vergleich zu realem RSA
Beim zur Verfügung gestellten Arbeitsblatt werden jeweils nur einzelne Zahlen (nämlich die Dezimalcodes der Buchstaben nach der ASCII-Tabelle) mit RSA verschlüsselt.
- In der Regel werden keine Dezimal-, sondern Hexadezimalzahlen verwendet. Für das RSA-Prinzip ist dieser Unterschied jedoch nicht von Bedeutung
-
In der Realität macht eine RSA-Verschlüsselung der einzelnen Zeichen keinen Sinn: Würde so verschlüsselt werden, so ergäbe sich eine eindeutige Zuordnung der Klar- und Geheimbuchstaben wie im monoalphabetischen Fall. Dies würde die Errungenschaften von RSA zunichte machen, da man nun mit einer einfachen Häufigkeitsanalyse angreifen könnte. Das bedeutet, dass in der Realität die ASCII-Codes maskiert werden müssen. Hierzu gibt es verschiedenste Möglichkeiten, wobei sich eine häufig gebrauchte oder gar einheitliche Methode nicht angeben lässt. Eine mögliche sei hier beschrieben (aufbauend auf Joachim Mohr, 06.07.2020):
-
Die Buchstaben werden z.B. in 2er-Gruppen zusammengefasst. Die ASCII-Codes werden z.B. maskiert, indem man die Zahl des zweiten Buchstabens mit einer Zahl multipliziert, die größer ist als die größte zu verschlüsselnde Zahl (ASCII besitzt 255 Zeichen, also Multiplikation mit einer Zahl z > 255). Danach wird das Ergebnis zur ersten Zahl (des ersten Buchstabens) addiert.
Beispiel: Verschlüsselt werden soll ZPG IMP.
2er-Gruppen:ZP GI MP.
Nach der ASCII-Tabelle ergibt sich 136 126 117 119 123 126.
Nun wird maskiert mit z.B. 256:
- Diese Zahlen werden nun mit RSA ver- und entschlüsselt. Um die ursprüngliche Kombination wieder zu erhalten, bestimmt man (hier am ersten Beispiel durchgeführt) , bestimmt daraus den Faktor und hat so beide ursprünglichen ASCII-Codes zurückgewonnen. Ein ausführliches Beispiel ist unter der o.g. Quelle einsehbar.
-
-
Hier sind weitere Möglichkeiten denkbar, z.B. die Zusammenfassung größerer Buchstabengruppen mit der Maskierung durch Multiplikation mit Potenzen der gewählten Zahl. Bsp.: ZPG IMP mit 3er-Gruppen und gewählter Zahl 301 ergibt die mit RSA zu verschlüsselnden Zahlen:
und
Demaskierung würde hier erfolgen (am ersten Beispiel) durch und anschließend den erhaltenen Rest inklusive der Bestimmung der Faktoren im ersten Schritt und im zweiten Schritt.
Das RSA-Verfahren durchzuführen ist mit den besprochenen Inhalten nun problemlos möglich. Schwieriger wird es jedoch, wenn man die Frage nach dem grundlegenden mathematischen Fundament des RSA-Verfahrens stellt: Warum funktioniert RSA? Welche Zusammenhänge müssen dazu bewiesen werden? Hierbei stößt man sehr schnell an die Grenzen dessen, was in der Schule machbar ist.
Hier als Anregung einige grundlegenden Sätze und der Beweis zur Korrektheit von RSA:
Grundlegende Sätze
-
Die Euler'sche -Funktion
Ist eine natürliche Zahl, so gibt die Anzahl der zu teilerfremden Zahlen an, die nicht größer als sind. Damit ist insbesondere klar: Ist eine Primzahl, so ist teilerfremd zu den Zahlen bis . Daher gilt für Primzahlen . Für teilerfremde Zahlen und gilt: . Daher gilt für Primzahlen und : . Beweise zur Euler'schen -Funktion sind sehr langwierig und in diesem Zusammenhang nicht weiterführend. Deshalb sei hier für Interessierte auf die gängige Fachliteratur verwiesen.
-
Der Satz von Fermat-Euler und der kleine Satz des Fermat
Satz von Fermat-Euler: Für gilt:
Einen Spezialfall davon stellt der kleine Fermat'sche Satz dar:
Ist eine Primzahl und , gilt: .
Bem.: Satz von Fermat-Euler für , da
Der Beweis des Satzes von Fermat-Euler geht über das in Klasse 10 Mögliche hinaus. Eine mögliche kombinatorische Variante (als „Kettenbasteln“) kann evtl. für sehr interessierte SuS thematisiert werden. Diese und einige weitere Beweismöglichkeiten findet man unter https://de.wikibooks.org/wiki/Beweisarchiv:_Zahlentheorie:_Elementare_Zahlentheorie:_Kleiner_Satz_von_Fermat
Der Beweis: Warum funktioniert RSA?
Die Beweise zur theoretischen Begründung der Korrektheit des RSA-Verfahrens sind ebenfalls oft aufwändig und mathematisch in der Schule nicht durchführbar. Hier jedoch eine mögliche Skizze, die man (unter Auslassung der Beweise zur Euler'schen Funktion) schrittweise nachvollziehen kann:
Die Botschaft B wird zum Geheimtext S verschlüsselt durch Berechnung von . Die Entschlüsselung wird vorgenommen durch . Also gilt:
Dabei war das (modulare) multiplikative Inverse zu bezüglich und es gilt:
Mit und gilt die die Beziehung: und somit:
Wir erinnern uns: Der entschlüsselte Geheimtext war:
Wenn RSA funktionieren soll, muss also gelten: Mit der obigen Beziehung: muss also gelten:
Zusammenfassend die zu beweisende zentrale Aussage (Korrektheit von RSA):
Es seien verschiedene Primzahlen und Dann gilt für jede Zahl |
Beweis1: Zunächst getrennt nach den Primzahlen und (1), (2), dann Zusammenführung (3):
-
Mit den elementare Potenzregel und folgt:
Mit den Regeln für modulares Potenzieren, dem kleinen Fermat'schen Satz sowie , da Primzahl und ist, folgt:
Zusammenfassend:
-
Für analog, lediglich mit anderer Sortierung im Exponenten.
Zusammenfassend:
-
: Hierzu führen wir der Übersichtlichkeit halber ein
In den beiden in (1) und (2) erhaltenen Gleichungen und bringen wir jeweils auf die andere Seite und erhalten: und
Mit Anwendung der Regel über modulare Addition folgt: und Sowohl als auch teilen also
und sind jedoch verschiedene Primzahlen, also muss die Zahl teilen.
Mit den Rechenregel für modulares Addieren und gilt damit:
Die einzelnen Schritte sind so mit den im Verlauf des Unterrichts bewiesenen Gesetzen begründet nachvollziehbar. Allerdings bleibt der Beweis aufwändig.
1 Angelehnt an http://www.mathematik-netz.de/pdf/RSA.pdf.
Unterrichtsverlauf: Herunterladen [odt][244 KB]
Unterrichtsverlauf: Herunterladen [pdf][615 KB]
Weiter zu Kopiervorlagen