| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
| gf2:schluesseltausch [2023/04/21 06:41] – marroc | gf2:schluesseltausch [2025/05/19 13:59] (aktuell) – marroc |
|---|
| Wie können Alice und Bob einen gemeinsamen Schlüssel generieren (z.B. eine Zahl), sodass es einer Angreiferin (Eve) unmöglich ist, den Schlüssel zu finden, auch wenn sie jede Kommunikation mithört? | Wie können Alice und Bob einen gemeinsamen Schlüssel generieren (z.B. eine Zahl), sodass es einer Angreiferin (Eve) unmöglich ist, den Schlüssel zu finden, auch wenn sie jede Kommunikation mithört? |
| </WRAP> | </WRAP> |
| Lange dachte man, dass für dieses Problem keine Lösung existiert: Wenn Eve alles mithört, was Alice und Bob vereinbaren, dann hat sie genau dieselben Informationen wie Alice und Bob und sie kann doch den Schlüssel ihrerseits auch erstellen? Man dachte also, dass die einzige Lösung sei, den Schlüssel selbst verschlüsselt zu übertragen, wofür man wiederum einen Schlüssel benötigen würde u.s.w. Man spricht deshalb auch vom Schlüsselaustausch-Paradoxon. Lange Zeit wurden die Schlüssel somit persönlich übergeben, was natürlich sehr umständlich ist. | Lange dachte man, dass für dieses Problem keine Lösung existiert: \\ Wenn Eve alles mithört, was Alice und Bob vereinbaren, dann hat sie genau dieselben Informationen wie Alice und Bob und sie kann doch den Schlüssel ihrerseits auch erstellen? Man dachte also, dass die einzige Lösung sei, den Schlüssel selbst verschlüsselt zu übertragen, wofür man wiederum einen Schlüssel benötigen würde u.s.w. Man spricht deshalb auch vom Schlüsselaustausch-Paradoxon. Lange Zeit wurden die Schlüssel somit persönlich übergeben, was natürlich sehr umständlich ist. |
| |
| ==== Ein Gedankenexperiment zur Lösung des Schlüsseltauschproblems ==== | ==== Ein Gedankenexperiment zur Lösung des Schlüsseltauschproblems ==== |
| {{ :gf2:uhrzeiten.png?direct&200|}} | {{ :gf2:uhrzeiten.png?direct&200|}} |
| |
| Telefonieren nun zwei Freunde miteinander um 16:00 Uhr und beschliessen, sich in fünf Stunden zu treffen, so rechnen beide 16 + 5 = 21. Sie treffen sich also um 21:00 Uhr. Die Rechnung bezüglich der Tagesstunden entspricht genau derjenigen bezüglich der ganzen Zahlen. \\ \\ | Telefonieren zwei Freunde miteinander um 16:00 Uhr und beschliessen, sich in fünf Stunden zu treffen, so rechnen beide 16 + 5 = 21. Sie treffen sich also um 21:00 Uhr. Die Rechnung bezüglich der Tagesstunden entspricht genau derjenigen bezüglich der ganzen Zahlen. \\ \\ |
| |
| Würden die beiden Freunde jedoch bei diesem Telefonat ein Treffen in elf Stunden vereinbaren, so sähe die Rechnung anders aus: 16 + 11 = 27 = 24 + 3 = 3. D.h. die Zwei würden sich um 3:00 Uhr treffen. Die Zeit wird modulo 24 gerechnet. Wird „der Bereich überschritten“, so beginnt es wieder von vorne und jede Rechnung ergibt Werte zwischen 0 und 23. Die Zahl 27 existiert also in diesem System gar nicht, sie ist mit der Zahl 3 identisch. Wenn wir also modulo 24 rechnen, so gilt 16+11 = 3. \\ \\ | Würden die beiden Freunde jedoch bei diesem Telefonat ein Treffen in elf Stunden vereinbaren, so sähe die Rechnung anders aus: 16 + 11 = 27 = 24 + 3 = 3. D.h. die Zwei würden sich um 3:00 Uhr treffen. Die Zeit wird modulo 24 gerechnet. Wird „der Bereich überschritten“, so beginnt es wieder von vorne und jede Rechnung ergibt Werte zwischen 0 und 23. Die Zahl 27 existiert also in diesem System gar nicht, sie ist mit der Zahl 3 identisch. Wenn wir also modulo 24 rechnen, so gilt 16+11 = 3. \\ \\ |
| ** Aufgaben zu Modulo** \\ \\ | ** Aufgaben zu Modulo** \\ \\ |
| - Berechne jeweils die Lösung modulo 7: \\ \\ a)$ \quad 5+8 = \hspace{1cm} b)\quad 8*5 = \hspace{1cm} c)\quad 32*11 = \hspace{1cm} d)\quad 1234533 = \hspace{1cm} e)\quad 2^{13} = \hspace{1cm} f)\quad 5^{-1} = $ \\ \\ | - Berechne jeweils die Lösung modulo 7: \\ \\ a)$ \quad 5+8 = \hspace{1cm} b)\quad 8*5 = \hspace{1cm} c)\quad 32*11 = \hspace{1cm} d)\quad 1234533 = \hspace{1cm} e)\quad 2^{13} = \hspace{1cm} f)\quad 5^{-1} = $ \\ \\ |
| - Python rechnet mit dem %-Zeichen modulo. \\ Die Rechnung 17 modulo 5 wäre in Python also ''17 % 5''. $3^8$ modulo 7 wäre ''(3%%**%%8) % 7'' . \\ Wir betrachten die Funktion $f(x) = 11^x \mod 19$. Berechne mit Python alle y-Werte für $x=1,2,3,4...19$. (Thonny oder einen Python-online-Editor) \\ | - Python rechnet mit dem %-Zeichen modulo. \\ Die Rechnung 17 modulo 5 wäre in Python also ''17 % 5''. Und $3^8$ modulo 7 wäre ''(3%%**%%8) % 7'' . \\ Wir betrachten die Funktion $f(x) = 11^x \mod 19$. Berechne mit Python alle y-Werte für $x=1,2,3,4...19$. (Thonny oder einen Python-online-Editor) \\ |
| - Nun betrachten wir die Funktion $f(x) = 3^x \mod 19$. Berechne wieder alle y-Werte, setzten Sie dazu die x-Werte in die Funktion ein. Was fällt dir auf? Halten Sie die wichtigsten Erkenntnisse in eigenen Worten fest. \\ \\ | - Nun betrachten wir die Funktion $f(x) = 3^x \mod 19$. Berechne wieder alle y-Werte, setzten Sie dazu die x-Werte in die Funktion ein. Was fällt dir auf? Halten Sie die wichtigsten Erkenntnisse in eigenen Worten fest. \\ \\ |
| - Man weiss, dass die Funktion $f(x) = 7^x \mod 97$ ist und dass der y-Wert 23 ist. Finden Sie den x-Wert? Welche Strategien zum Finden von x gibt es? Halten Sie die wichtigsten Erkenntnisse in eigenen Worten fest. | - Man weiss, dass die Funktion $f(x) = 7^x \mod 97$ ist und dass der y-Wert 23 ist. Finden Sie den x-Wert? Welche Strategien zum Finden von x gibt es? Halten Sie die wichtigsten Erkenntnisse in eigenen Worten fest. |
| </WRAP> | </WRAP> |
| | <accordion> |
| | <panel title="Lösungen"> |
| | Aufgabe 1 auf Papier \\ |
| | Aufgabe 2 \\ |
| | Hier kann das kurze Pythonprogramm helfen: \\ |
| | |
| | <code python> |
| | def funktion(base,mod): |
| | for i in range (20): |
| | print (base**i%mod) |
| | </code> |
| | |
| | Für Basis 11 und mod 19 fällt auf, dass es nur die drei Werte 1, 11 und 7 ergibt. (Es gibt somit nur drei sog. Restklassen) \\ |
| | Aufgabe 3 \\ |
| | Für die Basis 3 und mod 19 fällt auf, dass es alle Werte zwischen 1 und 19 einmal ergibt (somit wäre diese Wahl der Basis besser, da es mehr Restklassen gibt).\\ |
| | Aufgabe 4 |
| | Gemeinsam diskutieren ;) |
| | </panel> |
| | </accordion> |
| | |
| Link zum Video: https://youtu.be/bjWOG50PfdI | Link zum Video: https://youtu.be/bjWOG50PfdI |
| {{ youtube>bjWOG50PfdI}} | {{ youtube>bjWOG50PfdI}} |
| |
| ==== Der Schlüsseltausch nach Diffie/Hellman ==== | ==== Der Schlüsseltausch nach Diffie/Hellman ==== |
| {{ :planung:kryptologie:verschluesselung_farben.png?nolink&600|}} | {{ verschluesselung_farben.png?nolink&600|}} |
| Nun wollen wir uns an einem Beispiel den Schlüsseltausch nach Diffie und Hellman anschauen. Genau wie im Gedankenexperiment mit den Farben gibt es eine öffentliche Information, die Alice und Bob austauschen und es gibt eine private Information, die Alice und Bob für sich behalten. Der Schlüsseltausch funktioniert folgendermassen: | Nun wollen wir uns an einem Beispiel den Schlüsseltausch nach Diffie und Hellman anschauen. Genau wie im Gedankenexperiment mit den Farben gibt es eine öffentliche Information, die Alice und Bob austauschen und es gibt eine private Information, die Alice und Bob für sich behalten. Der Schlüsseltausch funktioniert folgendermassen: |
| - Alice und Bob vereinbaren eine Zahl **<color #00a2e8>g</color>** und eine Zahl **<color #00a2e8>p</color>** und tauschen diese aus. \\ Sie definieren damit eine Funktion $f(x) = g^x$ und beschliessen, alles modulo p zu rechnen. \\ Sie wählen beispielsweise **<color #00a2e8>g = 53</color>** und **<color #00a2e8>p = 127</color>** und erhalten die Funktion $f(x) = 53^x$ und rechnen alle Resultate modulo **<color #00a2e8>127</color>**. | - Alice und Bob vereinbaren eine Zahl **<color #00a2e8>g</color>** und eine Zahl **<color #00a2e8>p</color>** und tauschen diese aus. \\ Sie definieren damit eine Funktion $f(x) = g^x$ und beschliessen, alles modulo p zu rechnen. \\ Sie wählen beispielsweise **<color #00a2e8>g = 53</color>** und **<color #00a2e8>p = 127</color>** und erhalten die Funktion $f(x) = 53^x$ und rechnen alle Resultate modulo **<color #00a2e8>127</color>**. |
| - Bob erhält die Zahl **<color #264dc7>$\alpha = 97$</color>** von Alice und rechnet diese Zahl hoch seine **<color #ffc90e>Geheimzahl</color>** (modulo 127). Er erhält **<color #7f6000>91</color>**. | - Bob erhält die Zahl **<color #264dc7>$\alpha = 97$</color>** von Alice und rechnet diese Zahl hoch seine **<color #ffc90e>Geheimzahl</color>** (modulo 127). Er erhält **<color #7f6000>91</color>**. |
| |
| {{:planung:kryptologie:diffiehellman2.png|}} | {{ :gf2:diffiehellman1.png?800 |}} |
| |
| <WRAP nicebox green> | <WRAP nicebox green> |
| - Führen Sie mit Hilfe von Python den Schlüsseltausch nach Diffie-Hellman durch mit **<color #00a2e8>$g=39, p=211,$</color> <color #ed1c24>$A=67$</color>, <color #ffc90e>$B=191$</color>**. Welchen gemeinsamen Schlüssel erhalten Alice und Bob? \\ \\ | - Führen Sie mit Hilfe von Python den Schlüsseltausch nach Diffie-Hellman durch mit **<color #00a2e8>$g=39, p=211,$</color> <color #ed1c24>$A=67$</color>, <color #ffc90e>$B=191$</color>**. Welchen gemeinsamen Schlüssel erhalten Alice und Bob? \\ \\ |
| - Führen Sie jeweils in Zweiergruppen den Schlüsseltausch mit einem eigenen Beispiel durch. D.h. wählen Sie ein gemeinsame Zahlen <color #00a2e8>$g$</color> und <color #00a2e8>$p$</color> und jeweils eine Geheimzahl $A$ bzw. $B$ und generieren Sie einen gemeinsamen Schlüssel.\\ | - Führen Sie jeweils in Zweiergruppen den Schlüsseltausch mit einem eigenen Beispiel durch. D.h. wählen Sie ein gemeinsame Zahlen <color #00a2e8>$g$</color> und <color #00a2e8>$p$</color> und jeweils eine Geheimzahl $A$ bzw. $B$ und generieren Sie einen gemeinsamen Schlüssel.\\ |
| - Schlüpfen Sie in die Rolle von Eve: lassen Sie sich von einer Gruppe die Zahlen <color #00a2e8>$g, p,$</color> <color #ed1c24>$\alpha$</color>, <color #ffc90e>$\beta$</color> geben, und versuchen Sie den Schlüssel dieser Gruppe zu knacken.\\ | - Schlüpfen Sie in die Rolle von Eve: lassen Sie sich von einer Gruppe die Zahlen <color #00a2e8>$g, p,$</color> <color #ed1c24>$\alpha$</color>, <color #ffc90e>$\beta$</color> geben, und versuchen Sie den Schlüssel dieser Gruppe zu knacken. |
| - Kann <color #00a2e8>$p$</color> frei gewählt werden oder nicht? Was muss bei der Wahl von <color #00a2e8>$p$</color> beachtet werden, damit die Verschlüsselung nicht leicht zu knacken ist? Erfüllt ihr gewähltes<color #00a2e8> $g$</color> dieses Kriterium? Erklären Sie in eigenen Worten und anhand eines eigenen Beispiels. | - Kann <color #00a2e8>$p$</color> frei gewählt werden oder nicht? Was muss bei der Wahl von <color #00a2e8>$p$</color> beachtet werden, damit die Verschlüsselung nicht leicht zu knacken ist? Erfüllt ihr gewähltes<color #00a2e8> $g$</color> dieses Kriterium? Erklären Sie in eigenen Worten und anhand eines eigenen Beispiels. |
| - Mit dem folgenden [[https://www.inf-schule.de/kryptologie/modernechiffriersysteme/exkurs_diffie|Link]] (unterer Teil der Website) kann das Diffie-Hellmann-Prinzip weiter geübt werden! | - Mit dem folgenden [[https://www.inf-schule.de/kryptologie/modernechiffriersysteme/exkurs_diffie|Link]] (unterer Teil der Website) kann das Diffie-Hellmann-Prinzip weiter geübt werden! |
| | - Alice und Bob tauschen die Zahlen $g=29$ und $p=127$ aus. Danach sendet Alice $\alpha= 101$ an Bob und Bob $\beta = 83$ an Alice. Du als Eve hast dies alles mitbekommen. Knacke den Schlüssel von Alice und Bob mithilfe von Python. |
| </WRAP> | </WRAP> |
| <WRAP nicebox blue> | <WRAP nicebox blue> |