WEBVTT
00:00:09.440 --> 00:00:14.582
Entschuldigung für die technischen Schwierigkeiten, für den wirklich sinnvollen Teil des Vortrags gebe ich nun hier weiter an Tanja.
00:00:15.042 --> 00:00:19.208
Hallo, ich bin Tanja und neben mir ist Dan, falls das noch nicht bekannt war.
00:00:19.208 --> 00:00:20.786
(Gelächter)
00:00:20.800 --> 00:00:26.890
Also wir werden über Crypto und ein paar Elliptic curves reden, und hoffen, dass dies ist eine sanfte Einführung ist
00:00:26.930 --> 00:00:29.223
Wenn es zu langweilig ist, naja, es ist spät am Abend, also machen Sie ein kurzes Schläfchen,
00:00:29.223 --> 00:00:32.799
wachen Sie ab zu und zu auf und schauen, ob sie noch mitkommen.
00:00:32.799 --> 00:00:34.844
Also warum Kryptographie?
00:00:34.885 --> 00:00:38.950
Wenn Sie Kryptographie im Internet oder für elektronische Zahlungen verwenden,
00:00:38.971 --> 00:00:43.232
dann sehen sie zum Beispiel ein SSL Zertifikat in welchem Kryptographie verwendet wird.
00:00:43.285 --> 00:00:47.285
Wenn Sie einen elektronischen Pass oder einen elektronischen Personalausweis haben, welcher Signaturen nutzt, oder
00:00:47.355 --> 00:00:52.765
wenn Sie TLS verwenden um vertrauliche Daten zu senden, dann möchten Sie Verschlüsselung nutzen.
00:00:52.845 --> 00:00:59.845
Wenn Sie einen SSL-Exchange haben, nutzen sie z.B. RSA, Diffie-Hellmann oder ECDH.
00:00:59.851 --> 00:01:05.571
Und um EC, ECDH und ECDSA geht es heute in diesem Vortrag.
00:01:05.577 --> 00:01:10.305
Außerdem gibt es noch einen großer Anteil an der Kryptographie, die sogenannte "secret key cryptography".
00:01:10.305 --> 00:01:14.305
Das ist wirkliche eine coole Sache, es sie ist viel viel schneller als alles was wir Ihnen heute vorstellen.
00:01:14.305 --> 00:01:19.248
Aber sie setzt voraus, dass die beiden Parteien, die miteinander reden möchten sich bereits kennen,
00:01:19.248 --> 00:01:21.742
also dass sie bereits einen Schlüsselaustausch durchgeführt haben
00:01:21.742 --> 00:01:23.164
Wir werden Ihnen zeigen wie man diesen Schlüsselaustausch durchführt.
00:01:23.164 --> 00:01:29.824
Und vielleicht dann im nächsten Jahr, die symmetrische Kryptographie.
00:01:29.824 --> 00:01:35.264
Okay, also warum sollte man in public key Kryptographie ECC (elliptic curve cryptography) nutzen
00:01:35.517 --> 00:01:39.322
Was hat dazu geführt, dass Personen sich für ECC interessieren?
00:01:39.501 --> 00:01:43.501
Die einfache Antwort dafür ist eine Angriffsstrategie namens Index-Calculus.
00:01:43.808 --> 00:01:47.338
Nun diese nutzen Sie, wenn Sie den RSA Schlüssel von jemanden faktorisieren,
00:01:47.434 --> 00:01:50.654
oder den ursprünglichen nicht-elliptischen Diffie-Hellman knacken, möchten.
00:01:50.677 --> 00:01:52.468
Dann nutzten Sie Index-Calculus.
00:01:52.685 --> 00:01:54.821
Dies ist eine ausgefallene Nutzung von Mathematik sowie die damit einhergehenden Algorithmen.
00:01:54.821 --> 00:01:58.089
Im Endeffekt werden diese immer schneller und schneller,
00:01:58.089 --> 00:02:00.717
sodass wir am Ende gar nicht wissen, wie schnell sie einmal sein werden.
00:02:00.717 --> 00:02:03.740
Hier ist ein Teil der Geschichte, wann die Algorithmen erfunden wurden:
00:02:03.740 --> 00:02:08.449
1975 wurde einer der ersten Index-Calculus Algorithmen, CFRAC,
00:02:08.449 --> 00:02:09.863
zum Faktorisieren von großen Zahlen entwickelt.
00:02:09.863 --> 00:02:14.962
In 1977, 1982, 1990. 1994 gab es dann alle möglichen Arten von Fortschritten.
00:02:14.962 --> 00:02:17.562
Sie haben letztes Jahr von der Cryptoapocalypse gehört.
00:02:17.562 --> 00:02:22.061
Und diese ist eine der neusten Fortschritte in Indexcalculus
00:02:22.061 --> 00:02:24.795
Es ist zwar nicht relevant für das Knacken von RSA,
00:02:24.795 --> 00:02:28.562
aber es ist ein Beispiel dafür, dass die allgemeine Strategie des Index-Calculus
00:02:28.562 --> 00:02:36.088
immer weiter verfeinert, hochwertiger und schneller wird.
00:02:36.088 --> 00:02:38.490
Das ist nicht die ganze Geschichte.
00:02:38.490 --> 00:02:41.977
Wenn man sich die wissenschaftliche Fachliteratur anschaut, dann gibt es dort auch viele Verbesserungen.
00:02:41.977 --> 00:02:44.406
Wir sind glücklich, wenn wir doppelt so schnell faktorisieren können,
00:02:44.406 --> 00:02:49.633
aber das sind große Schritte, wenn man die Sicherheit von zwei typischen RSA Größenordnungen bedenkt.
00:02:49.642 --> 00:02:53.127
Also da ist RSA 1024, was man noch häufig im Internet sehen kann
00:02:53.127 --> 00:02:56.895
und da ist RSA 2028, was hoffentlich Ihre Bank nutzt.
00:02:56.895 --> 00:02:59.494
Dann sind dort zwei Zeilen mit Nummern...
00:02:59.494 --> 00:03:00.561
Entschuldigung
00:03:00.561 --> 00:03:04.226
Zwei Spalten mit Nummern, wo Sie sehen können, wie sehr die Sicherheit abgenommen hat.
00:03:04.226 --> 00:03:10.694
Also zurück in 1975, der CFRAC Algorithmus würde immer noch 2 hoch 120 Operation brauchen,
00:03:10.694 --> 00:03:14.861
um die selbe Arbeit zu machen, welche in vielen Jahren später ein mit Zahlen gefülltes Sieb macht.
00:03:14.861 --> 00:03:18.061
Also in den 80er würde nur 2 hoch 80 Operationen notwendig sein.
00:03:18.061 --> 00:03:19.426
Daher ist hier ein großer Rückgang vorhanden,
00:03:19.426 --> 00:03:20.495
von 120 Operations auf 80.
00:03:20.495 --> 00:03:25.348
Und es ist nicht nur eine Verringerung um 40 im Exponenten, es ist deutlich größer,
00:03:25.348 --> 00:03:29.661
Es reduziert diesen von 170 auf 112.
00:03:29.661 --> 00:03:32.615
Somit ist es nicht nur eine lineare Verringerung im Exponent.
00:03:32.615 --> 00:03:35.061
Es ist mehr als eine lineare Verringerung im Exponent.
00:03:35.061 --> 00:03:45.661
In '85, als die [unverständlich],
00:03:45.661 --> 00:03:52.027
hat Miller elliptic curves als Alternative zu faktorisierungsbasierten Methoden vorgeschlagen,
00:03:52.027 --> 00:03:56.984
da Faktorisierung und Diffie-Hellman von den Algorithmen geknackt werden.
00:03:57.266 --> 00:04:01.353
Miller sagte: "Nun, ich habe mir dieses neue Prinzip der elliptic curves angesehen,
00:04:01.353 --> 00:04:08.620
und es ist extrem unwahrscheinlich, dass eine Index-Calculus Attacke auf die elliptic curves Methode jemals klappen würde.
00:04:08.620 --> 00:04:13.653
Also können wir alle die Verbesserungen dieser Methoden ignorieren,
00:04:13.653 --> 00:04:20.436
die die Faktorisierung und Diffie-Hellman geschwächt haben."
00:04:20.436 --> 00:04:29.606
Um in elliptic curve cryptography sanft einzusteigen, haben wir hier die clock cryptography.
00:04:29.606 --> 00:04:32.652
Nun, hier ist Bild von einer Uhr.
00:04:32.652 --> 00:04:34.845
Hast du zufällig eine Uhr um sie den Menschen zu zeigen,
00:04:34.845 --> 00:04:37.332
falls sie nicht mehr dran gewöhnt sind, wie eine Uhr aussieht?
00:04:37.332 --> 00:04:38.961
Also ein rundes Ding.
00:04:38.961 --> 00:04:44.450
Wissen Sie, wenn Sie denken dass eine Uhr Ihnen Ziffern nebeneinander anzeigt, hier, so sahen Uhren früher aus.
00:04:44.450 --> 00:04:47.400
Für Mathematiker, es ist x^2 + y^2 = 1
00:04:47.400 --> 00:04:49.192
Es ist etwas kaputt, deswegen sind wir zu spät.
00:04:49.192 --> 00:04:50.393
(schmunzeln)
00:04:50.393 --> 00:04:54.992
Die elliptic curves die wir Ihnen später im Vortrag zeigen,
00:04:54.992 --> 00:04:57.292
beinhalten nicht die Uhr.
00:04:57.292 --> 00:05:00.961
Die clock cryptography ist kein Beispiel für elliptic curve cryptography,
00:05:00.961 --> 00:05:03.228
aber sehr, sehr nah dran.
00:05:03.228 --> 00:05:06.560
Daher starten wir mit der clock cryptography und wenn Sie damit vertraut sind,
00:05:06.560 --> 00:05:11.193
machen wir eine kleine Anpassung und dann haben wir die elliptic curve cryptography.
00:05:11.193 --> 00:05:14.626
In Ordnung, also zum Beweis, dass ich den Kindergarten abgeschlossen habe,
00:05:14.626 --> 00:05:16.828
hier sind ein paar Punkte auf der Uhr.
00:05:16.828 --> 00:05:20.027
Dort oben ist 12 Uhr, so habe ich das gelernt.
00:05:20.027 --> 00:05:24.828
Nun ich bin später Mathematikerin geworden und Mathematiker arbeiten gerne mit Koordinaten.
00:05:24.828 --> 00:05:32.060
Also 12 Uhr hat die x-Koordinate 0 und die y-Koordinate 1.
00:05:32.060 --> 00:05:40.360
Ich weiß, dass die 1 da sein muss, da es die Formel x^2+y^2=1 erfüllen soll.
00:05:40.360 --> 00:05:41.859
x^2=0, daher y^2=1 und y=1.
00:05:41.859 --> 00:05:42.942
Aber es gibt viel mehr Punkte,
00:05:42.942 --> 00:05:44.541
also dort ist 18 Uhr.
00:05:44.541 --> 00:05:49.109
Dort haben Sie Frühstück, ähm Lunch.
00:05:49.109 --> 00:05:53.075
Das ist die 15 Uhr Marke, da ist die 21 Uhr Marke,
00:05:53.075 --> 00:05:55.108
da ist, ... ,oh was ist das?
00:05:55.108 --> 00:05:58.864
Das habe ich nicht im Kindergarten gelernt.
00:05:58.864 --> 00:06:03.476
So es ist, ähm, halb nach oben dann schauen, wo ist die eins,
00:06:03.476 --> 00:06:05.510
dann halb rüber.
00:06:05.510 --> 00:06:06.941
Das schaut aus, ähm, wie die 2 Uhr Marke.
00:06:06.941 --> 00:06:10.376
Hier wurden die Koordinaten umgedreht.
00:06:10.376 --> 00:06:14.676
Nun x = 1/2, also sind wir irgendwo hier drüben,
00:06:14.676 --> 00:06:18.143
und dann ins negative, das wäre die 5 Uhr Marke.
00:06:18.143 --> 00:06:20.674
Und mehr und mehr Punkte...
00:06:20.674 --> 00:06:22.109
Sollte es nicht sanft sein?
00:06:22.109 --> 00:06:25.808
Ist es nicht sanft?
00:06:25.808 --> 00:06:32.497
[Applaus]
00:06:32.497 --> 00:06:33.742
Okay, also...
00:06:33.742 --> 00:06:36.142
Hey, hier sind ein paar Punkte die ich noch nicht gesehen habe.
00:06:36.142 --> 00:06:40.309
Oh, tut mir leid, ähm, ich glaube wir wollten mehr über Punkte wie diese erzählen.
00:06:40.309 --> 00:06:43.676
3/5, 4/5, ich meine, hier muss man richtig komplizierte Mathematik nutzen,
00:06:43.676 --> 00:06:46.674
um zu sehen, dass eine Formel (3/5)^2+(4/5)^2=1 ist.
00:06:46.674 --> 00:06:49.909
Dies ist ein weiterer Punkt auf der Uhr und es ist nicht ersichtlich,
00:06:49.909 --> 00:06:51.108
wie viel Uhr es ist.
00:06:51.108 --> 00:06:53.142
Sie müssen wirklich intensiv auf ihre Uhr schauen um das herauszufinden.
00:06:53.142 --> 00:06:54.109
Immer am Aussteigen wenn es knifflig wird.
00:06:54.109 --> 00:06:55.109
Entschuldigung?
00:06:55.109 --> 00:06:56.509
Nun steigst du aus, wenn es es knifflig wird.
00:06:56.509 --> 00:06:58.075
Aussteigen wenn es knifflig wird?
00:06:58.075 --> 00:07:01.030
[Lachen]
00:07:01.030 --> 00:07:03.843
Okay, also willst du wirklich, dass ich das Quadrat, das halbe Quadrat, ...
00:07:03.843 --> 00:07:09.208
Nein, nein, ich weiß einfach nicht wo der Punkt ist, aber ich weiß er ist auf der Uhr.
00:07:09.208 --> 00:07:12.976
Okay, also du kannst herausfinden, wo der 3/5, 4/5 Punkt ist, im Bezug auf die Uhrzeit.
00:07:12.976 --> 00:07:20.209
Sie können es auch etwas komplizierter machen in dem Sie die Uhr parametisieren.
00:07:20.209 --> 00:07:24.742
Also wenn Leute Punkte auf der Uhr nehmen,
00:07:24.742 --> 00:07:28.195
dann denken sie an eine voranschreitende Zeit.
00:07:28.195 --> 00:07:30.996
Also es gibt 2 Uhr, 3 Uhr und das kann addiert werde, und man bekommt 5 Uhr.
00:07:30.996 --> 00:07:33.288
Zwei Stunden nach 3 Uhr oder drei Stunden nach 2 Uhr ist 5 Uhr.
00:07:33.288 --> 00:07:38.928
Und hier ist ein Bild, das etwa so aussieht, als ob 1:30 plus 2 Uhr so etwas wie 3:30 ergibt.
00:07:38.964 --> 00:07:42.215
Also hier sind ein paar Punkte p1, p2 und p3 auf der Uhr.
00:07:42.215 --> 00:07:44.848
Und Sie können p1 und p2 addieren, um p3 zu erhalten.
00:07:44.848 --> 00:07:51.981
Hier kommt der schreckliche mathematische Teil, den wir gleich verwerfen werden - die Trigonometrie.
00:07:51.981 --> 00:07:59.049
Wenn Sie einen Punkt auf der Uhr haben, hat er einen Winkel von Alpha.
00:07:59.049 --> 00:08:05.515
Die Zeit von Alpha beginnt bei 12 Uhr, dann ist dieser Punkt x gleich Sinus von Alpha, Y gleich Kosinus Alpha.
00:08:05.515 --> 00:08:13.915
Es gab es diese schrecklichen trigonometrischen Formeln für den Sinus der Summe zweier Winkel und den Kosinus von ...
00:08:13.915 --> 00:08:16.968
Die Summe von zwei Winkeln und der Sinus von Alpha 1 plus Alpha 2 ist...
00:08:16.968 --> 00:08:21.682
Okay, Sinus von Alpha 1, Cosinus von Alpha 2 plus Cosinus von Alpha 1, Sinus von Alpha 2.
00:08:21.682 --> 00:08:24.348
Etwas Ähnliches gibt es für den Cosinus.
00:08:24.348 --> 00:08:29.349
Sie können Punkte hinzufügen mithilfe der Sinus und Cosinus Funktionen.
00:08:29.349 --> 00:08:33.149
Normalerweise überreden wir die Leute, sich der Crypto-Seite zuzuwenden indem wir ihnen sagen:
00:08:33.149 --> 00:08:36.881
"Sie können die ganze nichtdiskrete Mathematik vergessen"
00:08:36.881 --> 00:08:39.381
"Wir möge diskrete Mathematik, wir sind die diskreten Typen,
00:08:39.381 --> 00:08:41.983
also wird es keine Sinus und Cosinus geben."
00:08:41.983 --> 00:08:48.510
Okay, lasst uns sie loswerden. Wir wollen keinen Sinus und Cosinus haben.
00:08:48.510 --> 00:08:52.202
Eigentlich würden wir gerne mit normalen Uhrzeiten arbeiten.
NOTE Paragraph
00:08:52.202 --> 00:09:01.997
Sinus 1, Cosinus 2 und so weiter sind einfach meine x- und y-Koordinaten.
00:09:01.997 --> 00:09:06.469
Alles, was ich hier gesagt habe, war, dass die x-Koordinate ein Sinus von Alpha ist.
00:09:06.473 --> 00:09:08.607
Die y-Koordinate ist der Kosinus von Alpha.
00:09:08.629 --> 00:09:12.358
In diesem ganzen Durcheinander mit den Trigonometrieformeln,
00:09:12.358 --> 00:09:17.593
kann ich einfach jeden Sinus von Alpha durch das entsprechende x ersetzen.
00:09:17.593 --> 00:09:19.892
Und jeder Cosinus von Alpha wird durch das entsprechende y ersetzt.
00:09:19.892 --> 00:09:23.691
Dadurch wird dies viel schöner und kürzer.
00:09:23.691 --> 00:09:27.192
Keine trigonometrische Additionsformel. Also wenn Ihnen bei der Addition auf der Uhr
00:09:27.192 --> 00:09:35.326
Ihnen zwei Punkte x1 y1 und x2 y2, gibt, dann müssen Sie nur die x-Koordinate des ersten Punktes
00:09:35.326 --> 00:09:38.426
und die y-Koordinate des zweiten Punktes nehmen und diese multiplizieren.
00:09:38.426 --> 00:09:42.713
Nehmen Sie dann die y-Koordinate des ersten Punktes und die x-Koordinate des zweiten Punktes und multiplizieren Sie diese.
00:09:42.713 --> 00:09:44.059
Addieren sie das.
00:09:44.059 --> 00:09:48.112
Das gibt Sie die neue X-Koordinate. Warum?
00:09:48.112 --> 00:09:52.893
Wir können einfach vergessen, woher sie stammt.
00:09:52.893 --> 00:09:56.492
Dann machen wir dasselbe mit der Y-Koordinate.
00:09:56.492 --> 00:09:59.791
Sie ist das Produkt aus den Y-Koordinaten minus dem Produkt der X-Koordinaten.
00:09:59.791 --> 00:10:02.326
Okay.
00:10:02.326 --> 00:10:07.360
Hier sind einige Beispiele für die Addition von Uhrzeiten, die wir noch nicht behandelt haben.
00:10:07.360 --> 00:10:10.593
Wir haben keinen Computer hier, daher wird dies etwas mühsames Rechnen.
00:10:10.593 --> 00:10:11.592
2 Uhr plus 5 Uhr.
00:10:11.592 --> 00:10:13.692
Wir erinnern uns, dass dies im Test sein wird.
00:10:13.692 --> 00:10:16.693
2 Uhr war diese Quadratwurzel aus 3/4 und 1/2.
00:10:16.693 --> 00:10:17.958
Sie hat am Anfang darüber gesprochen.
00:10:17.958 --> 00:10:21.426
Und 5 Uhr war 1/2 und minus Quadratwurzel von 3/4.
00:10:21.426 --> 00:10:23.459
Wenn Sie das in die Formel einsetzen...
00:10:23.459 --> 00:10:24.693
Okay, ich werde es mal versuchen.
00:10:24.693 --> 00:10:26.493
x1 ist Quadratwurzel von 3/4.
00:10:26.493 --> 00:10:27.992
y1 ist 1/2.
00:10:27.992 --> 00:10:32.726
x2 ist 1/2 und y2 ist minus Quadratwurzel von 3/4.
00:10:32.726 --> 00:10:37.885
Wenn Sie x1 mit y2 multiplizieren ist, dann ist das die Quadratwurzel von 3/4 multipliziert
00:10:37.885 --> 00:10:40.916
mit der minus Quadratwurzel von 3/4, welche minus 3/4 ist.
00:10:40.916 --> 00:10:45.898
Dann müsste y1 mal x2, 1/2 mal 1/2 sein, was 1/4 ist.
00:10:45.898 --> 00:10:49.231
Addiert man diese, ist es ungefähr minus 1/2.
00:10:49.231 --> 00:10:53.251
Führt man eine ähnliche Berechnung durch, erhält man den 2. Teil des Ergebnisses.
00:10:53.251 --> 00:10:57.326
Man erkennt, dass 2 Uhr plus 5 Uhr mit diesen Formeln das ist, was Sie wollten, nämlich 7 Uhr.
00:10:57.326 --> 00:11:00.992
Ähnliches können Sie mit 5 Uhr plus 9 Uhr machen.
00:11:00.992 --> 00:11:04.493
Ich denke, wir werden es überspringen.
00:11:04.493 --> 00:11:06.791
Versuchen wir es mit einem anderen Beispiel.
00:11:06.791 --> 00:11:08.833
Sie können 3/5 und 4/5 nehmen und sie addieren.
00:11:08.833 --> 00:11:15.155
Das bedeutet, dass 2 mal (3/5 mal 4/5) dann 3/5 mal 4/5 plus 3/5 und 4/5 sind.
00:11:15.155 --> 00:11:19.808
Fügen Sie dies in die Formeln ein und Sie wissen nicht, wie spät es ist.
00:11:19.808 --> 00:11:24.350
Sie erhalten einfach eine Antwort, 24/25 und 7/25
00:11:24.350 --> 00:11:28.307
Und Sie können immer mehr Kopien, des Punktes auf den Punkt selbst hinzufügen.
00:11:28.307 --> 00:11:33.173
3 mal 3/5, 4/5, das ist also der Punkt plus sich selbst plus sich selbst
00:11:33.173 --> 00:11:37.940
Setzen Sie ihn einfach in die Formeln ein und Sie erhalten etwas mit mehr Ziffern.
00:11:37.940 --> 00:11:40.874
Wenn Sie immer mehr Kopien hinzufügen, erhalten Sie immer mehr Stellen.
00:11:40.874 --> 00:11:44.374
Der Nenner ist nun 625 und er wird immer größer.
00:11:44.374 --> 00:11:50.641
Sie können auch versuchen, jeden gewünschten Punkt zu 12 Uhr hinzuzufügen, ohne überhaupt zu wissen, welcher es ist.
00:11:50.641 --> 00:11:53.374
12 Uhr mit 0,1 (Koordinaten)
00:11:53.374 --> 00:11:56.807
Wenn Sie diese in die Formeln einsetzen, erhalten Sie 12 Uhr plus 3 Uhr ist 3 Uhr.
00:11:56.807 --> 00:11:58.473
12 Uhr plus 5 Uhr ist 5 Uhr
00:11:58.473 --> 00:12:00.774
12 Uhr plus irgendein Wert ergibt als Ergebnis diesen Wert.
00:12:00.774 --> 00:12:05.575
Das ist sofort ersichtlich aus der Formel zur Addition von zwei Punkten.
00:12:05.575 --> 00:12:10.174
Ein letztes Beispiel dafür, wie Sie mit dieser Additionsformel arbeiten können.
00:12:10.174 --> 00:12:14.273
Sie nehmen beispielsweise 10 Uhr + 2 Uhr. Das sollte 12 Uhr sein.
00:12:14.273 --> 00:12:16.974
10 + 2 = 12. Das ist logisch.
00:12:16.974 --> 00:12:23.574
Das Gegenteil wäre 10 + 2, wenn man 9 + 3 oder 11 + 1 oder irgendetwas nimmt,
00:12:23.574 --> 00:12:26.841
was die gleiche Höhe, die gleiche Y-Koordinate hat, aber die X-Koordinate negativ ist.
00:12:26.841 --> 00:12:28.875
Diese ergeben zusammen 12 Uhr.
00:12:28.875 --> 00:12:32.764
Sie können einfach versuchen x1 und y1 und minus x1y1 in die Formel einzusetzen.
00:12:32.764 --> 00:12:35.308
Versuchen wir das mal:
00:12:35.308 --> 00:12:37.807
Angenommen, wir sagen, x2 ist minus x1 und y2 ist y1
00:12:37.807 --> 00:12:39.641
und setzten es in die Formel ein.
00:12:39.641 --> 00:12:41.308
Sie sehen die erste ähm...
00:12:41.308 --> 00:12:47.509
Die erste Koordinate der Antwort, welche ist: x1*y2 = y1
00:12:47.509 --> 00:12:54.224
Und y1= -x1*x2... ähm sorry,
00:12:54.224 --> 00:12:59.666
x2 ist -x1*y1. Die ergibt im Endeffekt null.
00:12:59.666 --> 00:13:01.848
Das ist, was wir für 12 Uhr erwartet haben.
00:13:01.884 --> 00:13:10.016
Nächster Teil: y1y2 = y1 mal y1 minus x1*x2, das ist
00:13:10.016 --> 00:13:15.149
minus x1 mal minus x1 = x1 im Quadrat,
00:13:15.149 --> 00:13:22.002
und x1 im Quadrat + x1 im Quadrat ist gleich 1.
00:13:22.002 --> 00:13:24.602
Wir können etwas herumspielen mit Additionen und Multiplikationen.
00:13:24.602 --> 00:13:27.834
Diese Formel können wir verwenden, um alle möglichen Punkte zu addieren.
00:13:27.834 --> 00:13:28.801
Okay.
00:13:28.801 --> 00:13:30.734
Nun wird es noch etwas diskreter.
00:13:30.734 --> 00:13:34.601
Wir können den Kreis vergessen der unendlich viele Punkte hat.
00:13:34.601 --> 00:13:37.834
Sie können jede reelle Zahl nehmen und einfach Quadratwurzeln ziehen.
00:13:37.834 --> 00:13:40.767
Wir machen das mit einem sehr kleinen Menge von Elementen.
00:13:40.767 --> 00:13:43.834
Wir machen mit Uhrzeiten über Suchfelder.
00:13:43.834 --> 00:13:48.802
Ich beschränke mich jetzt nur auf die Zahlen 0, 1, bis 6.
00:13:48.802 --> 00:13:53.001
Das ist also, wofür diese F7 steht.
00:13:53.001 --> 00:13:57.434
Ich will diese Zahlen addieren und multiplizieren können.
00:13:57.434 --> 00:14:02.569
Wenn ich 2 und 5 multipliziere, ist das ist größer als 10.
00:14:02.569 --> 00:14:06.435
Diese Zahl ist größer als die Menge, die ich dort zur Verfügung habe.
00:14:06.435 --> 00:14:09.889
Lasse ich nur 6 als größte Zahl zu, gehört 10 nicht zur Menge.
00:14:09.889 --> 00:14:14.001
Also werde ich das reduzieren und den Modulus 7 nehmen.
00:14:14.001 --> 00:14:16.855
Wir haben einige Python-Schnipsel versprochen.
00:14:16.855 --> 00:14:21.602
Wir erfahren nun, wir wir beispielsweise alle diese Elemente finden können.
00:14:21.602 --> 00:14:26.768
Wir gehen alle x zwischen 0 und 7 und y zwischen 0 und 7 durch.
00:14:26.768 --> 00:14:31.302
Wir überprüfen einfach, ob x mal x plus y mal y = 1 ist.
00:14:31.302 --> 00:14:34.935
Ist dies der Fall, drucke ich das Doppelte xy aus.
00:14:34.935 --> 00:14:38.369
Dann drücke ich die Eingabetaste und wir erhalten diese Punkte für das Bild.
00:14:38.369 --> 00:14:44.535
Wir haben keine bis 6 verwendet, wir möchten die Symmetrie beibehalten.
00:14:44.535 --> 00:14:51.302
Wir haben -3 bis + 3 genutzt. -3 ist hier drüber, +3 hier.
00:14:51.302 --> 00:14:55.069
+ 3 ist in der y-Richtung und - 3 ist in der y-Richtung
00:14:55.069 --> 00:15:01.763
Das ist der Punkt 0,1, also derselbe Punkt, den wir vorher auf der Uhr hatten.
00:15:01.763 --> 00:15:03.648
Also ist dies die Uhrzeit.
00:15:03.648 --> 00:15:06.781
Es ist der Punkt 2,2
00:15:06.781 --> 00:15:09.515
Okay.
00:15:09.515 --> 00:15:12.415
Wir verwenden die Uhradditionsfunktion.
00:15:12.415 --> 00:15:18.780
Wir zeigen eine Funktion, um Punkte der Uhr hinzuzufügen.
00:15:18.780 --> 00:15:25.082
Es ist hilfreich, Plus und Minus bei den Uhrzeiten schreiben zu können,
00:15:25.082 --> 00:15:27.215
die diese Reduzierung automatisch durchführen, Mod 7.
00:15:27.215 --> 00:15:32.114
In Python können wir einen Plus- und Minus- und Hoch-4 und F7-Klasse einrichten.
00:15:32.114 --> 00:15:33.509
Diese sind getrennt, von den
00:15:33.509 --> 00:15:37.940
üblichen für Plus-Minus und die Multiplikationen für Ganzzahlen.
00:15:37.940 --> 00:15:39.076
Um dies einzurichten gehen Sie bitte wie folgt vor:
00:15:39.076 --> 00:15:45.908
Hier ist eine F7-Klasse, einen Integer x liest und ein F7-Element initiiert.
00:15:45.908 --> 00:15:52.739
Hierbei handelt es sich um die in den Integer Mod 7.
00:15:52.739 --> 00:15:57.218
Wenn Sie F7 von 7 nehmen, wird 7 mod 7 berechnet.
00:15:57.218 --> 00:16:01.417
Der Quotient ist 1
00:16:01.417 --> 00:16:03.249
Der Rest ist 0
00:16:03.249 --> 00:16:04.770
Man fügt 0 in self.int ein.
00:16:04.770 --> 00:16:08.270
Dieser Stir-and-Wrapper, eventuell nicht die eleganteste Möglichkeit zum Drucken von Dingen,
00:16:08.270 --> 00:16:11.184
gibt aus, dass alles Mod 7 ist.
00:16:11.184 --> 00:16:14.683
Wir drucken nur die Ganzzahl aus, die wir bei 7 erhalten.
00:16:14.683 --> 00:16:20.381
7 Mod 7 gibt 0 und 10 mod 7,
00:16:20.381 --> 00:16:22.632
war das Beispiel von Tanja eben, wo der Rest 3 ergibt.
00:16:22.632 --> 00:16:26.365
Und 20 mod 7, subtrahiert man 7, und subtrahiert wieder 7, erhält man eine 6.
00:16:26.365 --> 00:16:30.585
Man kann also in diese F7 jeden integer eingeben, den man möchte.
00:16:30.585 --> 00:16:32.399
Dafür nehmen wir diesen Integer-Mod7.
00:16:32.399 --> 00:16:37.899
Nun können wir F7 einige weitere Funktionen hinzufügen.
00:16:37.899 --> 00:16:41.199
Beispielsweise können Sie einen Gleichheitstest durchführen.
00:16:41.199 --> 00:16:43.519
Pythons default Gleichheit ist ziemlich dumm.
00:16:43.519 --> 00:16:46.833
Das was ich eigentlich tun möchte, ist folgendes:
00:16:46.833 --> 00:16:51.867
Ich möchte diese Punkte vergleichen, die den gleichen F7-Wert haben.
00:16:51.867 --> 00:16:53.063
Okay.
00:16:53.093 --> 00:16:56.708
Nun wurde dieser F7-Typ um eine Gleichheit erweitert.
00:16:56.708 --> 00:16:59.975
Sie können sehen, dass F7 von 10 und F7 von 3 gleich sind.
00:16:59.975 --> 00:17:02.874
F7 von 0 und F7 von 2 sind nicht gleich.
00:17:02.874 --> 00:17:09.294
Wir haben von 0 bis 6 als Möglichkeiten für die Werte einer Variablen ausgedrückt.
00:17:09.294 --> 00:17:14.141
Dann folgt die Addition, Subtraktionen und Multiplikation.
00:17:14.141 --> 00:17:17.574
Schauen wir uns die Addition an, dann ist der typische Fall.
00:17:17.574 --> 00:17:20.075
Sie nehmen zwei a und b.
00:17:20.075 --> 00:17:23.774
Dann nehmen Sie eine Integer innerhalb einer Integerrange von 0 bis 6.
00:17:23.774 --> 00:17:25.774
Addieren Sie diese auf der Seite b von 0 bis 6.
00:17:25.774 --> 00:17:27.774
Sie erhalten 0 bis 12.
00:17:27.774 --> 00:17:30.475
Diese geben Sie dann wieder in den F7 Konstruktor ein.
00:17:30.475 --> 00:17:32.641
Sie haben jetzt wieder 0 bis 6.
00:17:32.641 --> 00:17:36.193
Unten sind einige Beispiele von 2 plus 5 = 0
00:17:36.193 --> 00:17:38.508
2 minus 5 ist -3.
00:17:38.508 --> 00:17:40.308
Das ist 4.
00:17:40.308 --> 00:17:43.441
Wenn Sie in C programmieren, achten Sie auf folgendes:
00:17:43.441 --> 00:17:45.742
Der Prozentwert darf den Mod nicht ausführen, den wir mathematisch wollen.
00:17:45.742 --> 00:17:48.975
Pythons Prozentwert macht das Richtige und C gibt negative Zahlen aus.
00:17:48.975 --> 00:17:51.973
Prozent in Python gibt Ihnen immer 0 bis 6.
00:17:51.973 --> 00:17:54.013
Oder 0 bis zu jeder Zahl, die Sie genommen haben.
00:17:54.013 --> 00:17:54.906
Ähm
00:17:54.906 --> 00:17:59.508
2 mal 5 war wieder das Beispiel von 10, wo Mod 7= 3 ergibt.
00:17:59.508 --> 00:18:02.442
Okay.
00:18:02.442 --> 00:18:04.374
Jetzt haben wir eine kleine Uhr gesehen.
00:18:04.374 --> 00:18:06.041
Da konnte ich einfach alle Elemente zeichnen,
00:18:06.041 --> 00:18:08.641
und wir konnten sie durchgehen und ausprobieren.
00:18:08.641 --> 00:18:15.241
Alles was Dan mit dem Python-Setup gezeigt hat, da kann ich 7 durch eine größere Zahl ersetzen.
00:18:15.241 --> 00:18:17.775
Sagen wir mal 1.000.003, das ist auch eine Primzahl.
00:18:17.775 --> 00:18:21.708
Ich gehe hin und definiere eine Addition von Kurvenpunkten.
00:18:21.708 --> 00:18:26.075
Das ist genau das, was wir vorhin auf der echten Uhr gemacht haben.
00:18:26.075 --> 00:18:30.041
Nun werde ich die Elemente 1.000.003 einfügen.
00:18:30.041 --> 00:18:36.240
Ich nehme also meine Punkte und mache x1y2, y1x2 und so weiter.
00:18:36.240 --> 00:18:38.207
Dann bekomme ich den Punkt zurück.
00:18:38.207 --> 00:18:41.374
Wir machen nun ein Beispiel dazu.
00:18:41.374 --> 00:18:45.840
Einer der vielen Punkte, die ich in die x-Koordinate einfüge ist 1000.
00:18:45.840 --> 00:18:49.106
Denken Sie daran, dass es aus 1000 aus 1.000.003 ist.
00:18:49.106 --> 00:18:53.574
Anschließend überprüfe ich, ob es eine y-Koordinate gibt und dazu passt.
00:18:53.574 --> 00:18:56.640
Ja, gibt es grob.
00:18:56.640 --> 00:19:03.307
Habe ich also 1000, erhalte ich eine Million im Quadrat und 2 ergibt 4.
00:19:03.307 --> 00:19:06.307
Das ist nur 1 größer als die 1.000.003.
00:19:06.307 --> 00:19:07.939
Ja, das ist also ein gültiger Punkt.
00:19:07.939 --> 00:19:12.108
Jetzt kann ich diesen Punkt übernehmen und addiere ihn zu sich selbst.
00:19:12.108 --> 00:19:17.358
Ich setzt einfach p und p in die Addition ein, die 4007 ergibt.
00:19:17.358 --> 00:19:25.294
Ich kann es immer und immer wieder zu sich selbst addieren.
00:19:25.294 --> 00:19:29.986
Ich addiere immer weiter bis ich am Ende 6 Kopien habe.
00:19:30.016 --> 00:19:32.602
Ich füge sie zusammen und habe nun diesen Punkt.
00:19:32.602 --> 00:19:35.669
Wenn Sie das sehen, denken Sie natürlich: Warte mal.
00:19:35.669 --> 00:19:38.402
Muss ich tatsächlich alle diese 5 Additionen machen?
00:19:38.402 --> 00:19:38.837
Nein.
00:19:38.837 --> 00:19:41.944
Wenn ich beispielsweise bei p3 aufgehört hätte.
00:19:41.944 --> 00:19:47.791
Das ist dreimal der Punkt und addiere dann p3 plus p3
00:19:47.791 --> 00:19:51.757
Das sind also 3 Kopien plus weitere 3 Kopien, sind auch 6 Kopien.
00:19:51.757 --> 00:19:54.358
Diese beiden Dinge haben das gleich Ergebnis.
00:19:54.358 --> 00:19:59.057
Möchte ich das also professioneller machen,
00:19:59.057 --> 00:20:02.123
ist hier die Modifikation der Scale.
00:20:02.123 --> 00:20:02.890
Okay
00:20:02.890 --> 00:20:07.091
Das ist eine rekursive Funktion zur Berechnung von n mal p.
00:20:07.091 --> 00:20:10.191
Sie haben einen beliebigen Punkt auf der Uhr p in einem beliebigen Skalar,
00:20:10.191 --> 00:20:17.537
Jeden nicht negativen Integer n, den Sie möchten.
00:20:17.537 --> 00:20:18.540
Wenn n 0 ist,
00:20:18.540 --> 00:20:20.506
dann geben Sie den 12-Uhr-Punkt zurück.
00:20:20.506 --> 00:20:22.721
Wenn n = 1 ist, geben Sie den Punkt p einmal zurück,
00:20:22.721 --> 00:20:24.156
also p ist p.
00:20:24.156 --> 00:20:28.474
Und dann, wenn n gerade ist, dann ändert der Python seine Notation im Laufe leicht.
00:20:28.474 --> 00:20:34.286
n // 2 ist der richtige Weg, um eine durch 2 geteilte Integer nehmen.
00:20:34.286 --> 00:20:36.551
Und den Rest wegzuwerfen.
00:20:36.551 --> 00:20:39.883
So ist n // 2, gerade bei n^2.
00:20:39.883 --> 00:20:43.384
Wenn n*2 ist wird rekursiv n mal p berechnet.
00:20:43.384 --> 00:20:46.084
Wie zum Beispiel 3 mal p, wenn n gleich 6 ist.
00:20:46.084 --> 00:20:51.327
Dann kommt bei (Q,Q) heraus, das n^2 mal p zu verdoppeln.
00:20:51.327 --> 00:20:56.895
Man erhält np, wenn n ungerade ist.
00:20:56.895 --> 00:20:58.761
Dann ist das n über 2 .
00:20:58.761 --> 00:21:01.128
Anschließend nehmen Sie das dann mal p.
00:21:01.128 --> 00:21:05.118
Verdoppeln sie das, was n minus 1 mal p ergibt.
00:21:05.118 --> 00:21:06.394
Addieren Sie p dazu.
00:21:06.394 --> 00:21:10.484
Das heißt, wenn n mod 2 ungleich Null ist, dann addieren Sie p zu q.
00:21:10.484 --> 00:21:13.081
Schließlich erhalten Sie n mal p in allen unterschiedlichen Fällen.
00:21:13.081 --> 00:21:17.081
Anschließend haben wir für das eine 6stellige Zahl n versucht.
00:21:17.081 --> 00:21:18.748
Das wird hier auf der Folie nicht gezeigt.
00:21:18.748 --> 00:21:24.114
Es ist geheim und es waren etwa 30 Uhrzeit-Additionen erforderlich.
00:21:24.114 --> 00:21:27.281
Das waren nicht sehr viele Multiplikationen, um n mal p zu berechnen.
00:21:27.281 --> 00:21:28.348
Das ging sehr schnell.
00:21:28.348 --> 00:21:30.248
Es kommt sofort heraus und das ist die Antwort.
00:21:30.248 --> 00:21:34.045
Es gibt die x- und y-Koordinaten von n mal p für das geheime n, das es war.
00:21:34.045 --> 00:21:39.246
Nun ist es nicht mehr so offensichtlich, wie man herausfinden kann, was n ist.
00:21:39.246 --> 00:21:43.345
Sieht man das n mal p, und arbeitet dann rückwärts zum n, dann weiß man, welches p ist.
00:21:43.345 --> 00:21:45.360
Sie wissen was n mal p ist.
00:21:45.400 --> 00:21:46.850
Sie wissen, dass n nicht zu groß ist.
00:21:46.900 --> 00:21:47.850
Okay
00:21:47.850 --> 00:21:49.516
Es gibt nur eine Million Möglichkeiten.
00:21:49.516 --> 00:21:50.917
Das ist keine wirklich ausgefallene Berechnung.
00:21:50.917 --> 00:21:52.850
Es wird allerdings einen Moment dauern, bis es erledigt ist.
00:21:52.850 --> 00:21:57.072
Es ist etwas, bei dem der Computer einiges rechnen muss.
00:21:57.072 --> 00:21:58.883
Sie können nun vielleicht versuchen, das schneller zu machen.
00:21:58.883 --> 00:22:00.784
Allerdings könnten wir dann versuchen, die Zahlen größer zu machen.
00:22:00.784 --> 00:22:03.585
Statt 1.000.003 könnten wir immer noch n mal p machen.
00:22:03.585 --> 00:22:06.918
Wobei n viel größer ist und die 1.000.003 eine viel größere Primzahl ist.
00:22:06.918 --> 00:22:08.717
Hier gibt es also eine kleine Herausforderung.
00:22:08.717 --> 00:22:10.851
Sie können nun versuchen herauszufinden, was dieses n ist.
00:22:10.851 --> 00:22:14.817
Dies ist schwieriger, als eine SMS an die Telefonnummer zu senden, die gerade nicht funktioniert.
00:22:14.817 --> 00:22:17.651
Ooh! ... Gemurmel
00:22:17.651 --> 00:22:21.218
Nehmen wir also an, wir machen es viel schwieriger.
00:22:21.218 --> 00:22:22.584
Wir machen es sehr schwierig.
00:22:22.584 --> 00:22:24.251
Wir haben das Gefühl, dass Sie es für Kryptographie verwenden möchten.
00:22:24.251 --> 00:22:27.516
Jemand möchte die Uhrzeit-Kryptographie standardisieren .
00:22:27.516 --> 00:22:31.184
Dann beginnen Sie mit der Standardisierung einer großen Primzahl p.
00:22:31.184 --> 00:22:33.950
Große Zahl, also keine Million.
00:22:33.950 --> 00:22:36.584
So groß mit mehreren Tausend Bits.
00:22:36.584 --> 00:22:38.817
Sie können auch folgendes machen:
00:22:38.817 --> 00:22:39.884
Sie standardisieren einen Basispunkt.
00:22:39.884 --> 00:22:41.418
Diese p auf der vorherigen Folie bedeutet:
00:22:41.418 --> 00:22:44.252
Wir geben Ihnen p, wir geben Ihnen n-mal p.
00:22:44.252 --> 00:22:45.585
Wir geben Ihnen einfach kein n.
00:22:45.585 --> 00:22:48.884
Wir nehmen an, dass Ihnen jemand ein kleines p gibt, das die Primzahl ist.
00:22:48.884 --> 00:22:53.650
Dieser Basispunkt P, x- und y-Koordinaten , die auf der Uhr stehen.
00:22:53.650 --> 00:22:57.184
Was machen Alice und Bob, wenn sie kommunizieren wollen?
00:22:57.184 --> 00:23:00.600
Ich würde gerne etwa an den Bob schicken.
00:23:00.600 --> 00:23:01.585
"Ich bin Bob".
00:23:01.585 --> 00:23:04.552
Dann wählt Alice, bzw. ich aus:
00:23:04.552 --> 00:23:05.683
Mein Geheimnis, a.
00:23:05.683 --> 00:23:08.150
Berechne a mal diesen Basispunkt.
00:23:08.150 --> 00:23:10.783
Dies ist die Berechnung, die du gerade auf der vorigen Folie gesehen hast.
00:23:10.783 --> 00:23:12.183
Sie ist immer noch sichtbar.
00:23:12.183 --> 00:23:15.585
Dies ist also genau wie eine logarithmische Zeit von der Größe a.
00:23:15.585 --> 00:23:19.466
Anschließend sende ich das an Dan.
00:23:19.466 --> 00:23:22.432
Dann denke ich, ich muss etwas berechnen.
00:23:22.432 --> 00:23:24.632
Ich nehme mein eigenes großes Geheimnis b, das ich niemandem verraten werde.
00:23:24.632 --> 00:23:28.331
Dann berechne ich b mal das gleiche Standard (X,Y)
00:23:28.331 --> 00:23:30.732
Ich sende mein b-mal (X,Y) an Alice zurück.
00:23:30.732 --> 00:23:32.132
Alles klar.
00:23:32.132 --> 00:23:34.966
Jetzt habe ich also sein b mal den Basispunkt.
00:23:34.966 --> 00:23:36.834
Er hat mein a mal Basispunkt.
00:23:36.834 --> 00:23:39.032
Ich weiß jetzt noch, was mein a war.
00:23:39.032 --> 00:23:44.566
Ich nehme nun dieses a und den neuen Punkt, den er mir gerade gesendet hat.
00:23:44.566 --> 00:23:47.265
Dann setze ich diesen Punkt in die Skarlarmultiplikation ein.
00:23:47.265 --> 00:23:51.765
Ich mache die gleichen Schritte, addiere den Punkt zu sich selbst.
00:23:51.765 --> 00:23:54.998
Und den Punkt zu dem Punkt, den er mir geschickt hat.
00:23:54.998 --> 00:23:59.066
Dies sind also die gleichen Schritte hier, außer dass dieses p jetzt der Punkt ist, den er mir gesendet hat.
00:23:59.066 --> 00:24:00.732
Es ist nicht mehr der Basispunkt.
00:24:00.732 --> 00:24:03.900
Auf diese Art und Weise berechne ich a mal b mal p.
00:24:03.900 --> 00:24:06.200
Okay.
00:24:06.200 --> 00:24:08.653
Nun bekomme ich ihr a mal (X,Y).
00:24:08.653 --> 00:24:12.066
Ich nehme mein geheimes b und multipliziere es mit dem a mal (X,Y).
00:24:12.066 --> 00:24:15.600
Nun bekomme ich mein b mal a mal den Punkt (X,Y).
00:24:15.600 --> 00:24:19.566
Ich habe das gleiche Ergebnis erhalten.
00:24:19.566 --> 00:24:23.300
Nun hat sie a* b mal (X,Y) berechnet.
00:24:23.300 --> 00:24:24.799
Ich habe b*a mal (X,Y) berechnet.
00:24:24.799 --> 00:24:25.934
Das ist dasselbe.
00:24:25.934 --> 00:24:28.587
Sie sind beide a mal b Vielfache von (X,Y).
00:24:28.587 --> 00:24:30.665
Wir addieren a mal b Kopien von (X,Y).
00:24:30.665 --> 00:24:33.719
Nun verwenden wir das geteilte Geheimnis zum Verschlüsseln von Daten.
00:24:33.719 --> 00:24:34.853
In Ordnung.
00:24:34.853 --> 00:24:36.006
Wir haben auch ein Bild davon.
00:24:36.006 --> 00:24:37.853
Auch wenn wir nichts anderes machen.
00:24:37.853 --> 00:24:40.486
Und Bob, hier sehen Sie, wie die Nachricht jetzt verbreitet wird.
00:24:40.486 --> 00:24:43.653
Sollten Sie der Lauscher sein, wollen Sie herausfinden, was wir haben.
00:24:43.653 --> 00:24:46.721
Du kannst nicht sehen, was ich hier mache.
00:24:46.721 --> 00:24:48.486
Du kannst nicht sehen, was Dan hier macht.
00:24:48.486 --> 00:24:50.721
Du kannst nur sehen, was hierher gesendet wird.
00:24:50.721 --> 00:24:54.020
Du weißt, was das kleine p ist und was der Basispunkt ist.
00:24:54.020 --> 00:24:58.148
Zumindest ist das ist das, was wir uns wünschen.
00:24:58.148 --> 00:24:59.981
Nun gibt es aber einige Vorbehalte:
00:24:59.981 --> 00:25:03.914
Verwenden Sie nicht einfach irgendein Primzahl-p.
00:25:03.914 --> 00:25:06.247
Viele Auswahlmöglichkeiten von p sind unsicher.
00:25:06.247 --> 00:25:07.681
Warnung 2!
00:25:07.681 --> 00:25:11.366
Dies ist immer noch die Uhr.
00:25:11.366 --> 00:25:13.415
Und wir haben am Anfang gesagt, dass Uhren keine elliptischen Kurven sind.
00:25:13.415 --> 00:25:14.814
Nur elliptische Kurven sind gut.
00:25:14.814 --> 00:25:16.748
Demnach sind die Uhren eigentlich eigentlich fast das
00:25:16.748 --> 00:25:19.434
Gleiche wie "RSA" oder "Finde das Feld".
00:25:19.434 --> 00:25:28.315
Wenn Sie etwas finden möchten, das RSA 3072 Bits hat, dann muss Ihre Uhr die Primzahl haben.
00:25:28.315 --> 00:25:33.081
Die Uhr muss 1536 haben, also halb so viele Bits wie RSA Zahlen.
00:25:33.081 --> 00:25:35.115
Das ist nicht das, was Sie tatsächlich möchten.
00:25:35.115 --> 00:25:39.548
Okay.
00:25:39.548 --> 00:25:42.201
Dritte Warnung: Timing-Angriffe
00:25:42.201 --> 00:25:47.681
Eben haben viele von Ihnen über Bleichenbacher-Angriffe gegen SSL gesprochen.
00:25:47.681 --> 00:25:54.381
Viele der Informationen von einem angegriffenen Server oder Client stammen vom Timing.
00:25:54.381 --> 00:26:00.481
Der Angreifer sieht sich nicht nur das Abhören der öffentlichen Schlüssel a mal x y und b mal x y an.
00:26:00.481 --> 00:26:04.303
Er sieht auch, wie lange Sie für Berechnungen gebraucht haben.
00:26:04.303 --> 00:26:07.281
Der Angreifer kann sogar oft sehen,
00:26:07.281 --> 00:26:10.815
wie lange Sie für jeden einzelnen Vorgang gebraucht haben.
00:26:10.815 --> 00:26:14.282
Die funktioniert, weil es elektromagnetische Emissionen oder Funkemissionen
00:26:14.282 --> 00:26:17.748
oder Cache-Effekte auf virtuellen Maschinen gibt.
00:26:17.748 --> 00:26:21.649
Diese wirken sich auf andere virtuelle Maschinen aus, die unter demselben Hypervisor
00:26:21.649 --> 00:26:23.014
auf derselben physischen Hardware ausgeführt werden.
00:26:23.014 --> 00:26:27.849
Sie können dann als Angreifer auf Informationen zugreifen,
00:26:27.849 --> 00:26:30.182
wie lange Alice und Bob brauchen.
00:26:30.182 --> 00:26:32.749
Sie sehen diese Berechnung nicht wirklich,
00:26:32.749 --> 00:26:35.482
aber Sie sehen die physikalischen Auswirkungen dieser Berechnung.
00:26:35.482 --> 00:26:37.704
Stellen Sie sich einfach vor, Eves Ohr ist genau hier.
00:26:37.704 --> 00:26:42.699
Sie kann hören und sie kann spüren, was die Berechnungen bewirken.
00:26:42.699 --> 00:26:46.072
Tatsächliche können Sie das akustische Summen von Ihrer CPU hören,
00:26:46.072 --> 00:26:47.737
sofern Sie ein ausreichend gutes Mikrofon daneben platzieren.
00:26:47.737 --> 00:26:49.738
Dies hängt auch von den Berechnungen ab, die es ausführt.
00:26:49.738 --> 00:26:52.104
Es gibt hier einige echte Beispiele für Timing-Angriffe.
00:26:52.104 --> 00:26:56.071
2 von den 3 ausgewählten Beispielen sind ECC Beispiele.
00:26:56.071 --> 00:26:58.505
Ein Beispiel davon ist der Lucky-13-Angriff.
00:26:58.505 --> 00:27:01.803
Das war nicht gegen ECC. Das ist eine andere Art von Timing-Angriff.
00:27:01.803 --> 00:27:04.702
Wir wollen Ihnen die Vorstellung vermitteln, dass Timing-Angriffe wirklich wichtig sind.
00:27:04.702 --> 00:27:07.854
Dies ist ein Großteil dessen, was bei echten Kryptographie schief läuft.
00:27:07.854 --> 00:27:09.555
Abgesehen von deren Unbrauchbarkeit und anderen kleinen Problemen.
00:27:09.555 --> 00:27:11.154
Ähm.
00:27:11.154 --> 00:27:18.008
Die Lösung für dieses spezielle Problem und das Timing zu sehen ist folgendes:
00:27:18.008 --> 00:27:21.855
Die Berechnungen müssen immer in konstanter Zeit durchgeführt werden.
00:27:21.855 --> 00:27:24.321
Abhängig von Ihrem Skalar,
00:27:24.321 --> 00:27:27.333
dürfen Sie nicht unterschiedlich viel Zeit aufwenden.
00:27:27.333 --> 00:27:33.741
Wenn Sie einfach immer dieser Regel folgen, haben Sie bei jedem Geheimnis bei geheimes Timing mehr.
00:27:33.848 --> 00:27:35.797
Der Angreifer erhält nichts.
00:27:35.797 --> 00:27:37.297
Ihr gesamtes Timing ist öffentlich.
00:27:37.297 --> 00:27:40.485
Selbstverständlich ist es etwas mühsam, so Berechnungen durchzuführen.
00:27:40.485 --> 00:27:42.731
Auf diese Weise können Sie es immer tun, aber es verlangsamt die Dinge sehr.
00:27:42.731 --> 00:27:45.530
Ich denke, das ist leichter gesagt als getan.
00:27:45.530 --> 00:27:50.330
Lasst uns zurück zu Warnung Nr. 2 gehen.
00:27:50.330 --> 00:27:54.158
Wir nehmen an, dass konstante Zeit für Berechnungen sich um Warnung Nr. 3 kümmert.
00:27:54.190 --> 00:27:55.424
Wir gehen zurück zu Warnung Nr. 2.
00:27:55.424 --> 00:27:57.091
Uhren sind nicht elliptisch.
00:27:57.091 --> 00:28:00.724
Lasst uns diesen Kreis, diese Uhr, in eine elliptische Kurve verwandeln.
00:28:00.724 --> 00:28:05.557
Wir nehmen also den Kreis und drücken ihn nach innen.
00:28:05.557 --> 00:28:09.323
Mathematisch führen wir nun einen zusätzlichen Term ein,
00:28:09.323 --> 00:28:12.057
statt dass x zum Quadrat plus y zum Quadrat = 1 ist.
00:28:12.057 --> 00:28:18.335
Sagen wir, dass x zum Quadrat plus y zum Quadrat = 1- 30 x^2 y^2 ist.
00:28:18.335 --> 00:28:26.335
Also ist dieser zusätzliche Term hier die Differenz zwischen einem Kreis und einer Edwards-Kurve.
00:28:26.335 --> 00:28:28.435
Oder eine elliptische Kurve.
00:28:28.435 --> 00:28:30.703
Diese bestimmte Kurve wird also eine Edwards-Kurve genannt.
00:28:30.703 --> 00:28:33.403
Aber es ist ein Beispiel für elliptische Kurven.
00:28:33.403 --> 00:28:36.637
Ich möchte nun Punkte hinzufügen.
00:28:36.637 --> 00:28:39.303
Wir erinnern uns daran, wie es auf dem Kreis aussah.
00:28:39.303 --> 00:28:43.435
Auf dem Kreis hatte ich den neutralen Betrag oben.
00:28:43.435 --> 00:28:44.657
Ich behalte das bei.
00:28:44.657 --> 00:28:47.935
Sodass das Hinzufügen von irgendetwas zur 12-Uhr-Position nicht an dem Wert ändert .
00:28:47.935 --> 00:28:50.169
Der Wert ist hier immer noch derselbe.
00:28:50.169 --> 00:28:56.469
Ich habe hier nur p1, p2 und p3 durch diese Formeln hinzugefügt.
00:28:56.469 --> 00:29:00.502
Nun funktionieren diese normalerweise nicht auf der elliptischen Kurve.
00:29:00.502 --> 00:29:06.302
Der Grund ist, da es dieses - 30 x^2 * y^2 gibt.
00:29:06.302 --> 00:29:08.803
Daher müssen wir auch hier unten eine kleine Anpassung vornehmen.
00:29:08.803 --> 00:29:10.570
Daher gibt es nun einen Nenner.
00:29:10.570 --> 00:29:17.570
Nehmen Sie d = 0 an, dann ändert sich die Formel in den Kreis
00:29:17.570 --> 00:29:23.269
Auch in die Additionsformeln ändern den Kreis, denn diese 30 hier ist eine Null.
00:29:23.269 --> 00:29:24.870
Sie wird also einfach durch 1 geteilt.
00:29:24.870 --> 00:29:28.836
Der Kreis kommt als Sonderfall für diese elliptische Kurve heraus.
00:29:28.836 --> 00:29:32.735
Nun nehmen wir minus 30 und haben eine schöne elliptische Kurve.
00:29:32.735 --> 00:29:38.135
Die Additionsformeln sind nicht viel schlimmer. Sie sind nur ein kleiner zusätzlicher Term.
00:29:38.135 --> 00:29:41.236
Okay
00:29:41.236 --> 00:29:46.803
Sie können, wenn Sie eine Primzahl p haben, 7.000.003,
00:29:46.803 --> 00:29:48.337
irgendetwas viel größeres nehmen.
00:29:48.337 --> 00:29:53.803
Sie können jedes nichtquadratische d nehmen, wie minus 30,
00:29:53.803 --> 00:29:58.102
jedes d, das kein Quadrat von irgendetwas Modulo p.
00:29:58.102 --> 00:30:00.410
Dies ist etwas, das Sie schnell überprüfen können.
00:30:00.410 --> 00:30:03.168
Dann können Sie folgendes aufschreiben:
00:30:03.168 --> 00:30:05.404
Die Kurve mit x^2y^2 = 1 plus d.
00:30:05.404 --> 00:30:08.503
Das ist eine elliptische Kurve.
00:30:08.503 --> 00:30:13.441
Und es ist nur das zusätzliche d als zusätzliche Komplikation.
00:30:13.441 --> 00:30:15.169
Wenn Sie clock cryptography verstanden haben,
00:30:15.169 --> 00:30:17.836
dann ist diese zusätzliche kleine Komplikation alles,
00:30:17.836 --> 00:30:20.836
was Sie für die Elliptische-Kurven-Kryptographie benötigen.
00:30:20.836 --> 00:30:24.668
Es gib die Additionsformel, die gerade aus den mathematischen Formeln
00:30:24.668 --> 00:30:26.703
aus vorangegangenen Folien übersetzt wurde.
00:30:26.703 --> 00:30:28.335
Sie sieht fast genauso aus, wie zuvor.
00:30:28.335 --> 00:30:32.568
Außer, dass bei x3 und y3 das d an der Stelle des Nenner haben.
00:30:32.568 --> 00:30:35.368
Nun könnten Sie sich über dieses Aussage beklagen.
00:30:35.368 --> 00:30:37.668
Warten Sie eine Minute, bevor Sie dividieren.
00:30:37.668 --> 00:30:40.170
Sind Sie überhaupt in der Lage zu dividieren?
00:30:40.170 --> 00:30:42.235
Was passiert, wenn Sie durch Null dividieren?
00:30:42.235 --> 00:30:43.969
Vielleicht funktionieren diese Formeln nicht immer.
00:30:43.969 --> 00:30:46.970
Das ist ein wichtiger Punkt, auf den Sie achten müssen.
00:30:46.970 --> 00:30:51.334
Achten Sie daraus, dass Sie, wenn Sie durch etwas dividieren, nicht durch Null dividieren dürfen.
00:30:51.334 --> 00:31:02.989
Es stellt sich aber heraus, dass die Nenner dort 1+d x1 x2 y1 y2 und 1- d x1 x2 y1 y2
00:31:02.989 --> 00:31:04.350
niemals gleich 0 sind.
00:31:04.350 --> 00:31:06.598
Diese Formeln sind vollständig.
00:31:06.598 --> 00:31:08.104
Sie funktionieren immer.
00:31:08.104 --> 00:31:11.492
Ich denke, dass Sie annehmen, dass Formeln immer funktionieren sollten.
00:31:11.492 --> 00:31:12.389
Es ist ganz ärgerlich, wenn es Ausnahmefälle gibt.
00:31:12.389 --> 00:31:18.121
Aber in der Kryptographie mit elliptischen Kurven gibt es so viele Ausnahmefälle.
00:31:18.121 --> 00:31:20.198
Die Menschen machen sich oft Sorgen.
00:31:20.198 --> 00:31:24.159
Einer der Gründe, warum wir diese diese Art von elliptischer Kurve mögen,
00:31:24.207 --> 00:31:25.858
ist, dass es keine Ausnahmefälle gibt.
00:31:25.858 --> 00:31:28.244
Wir bezeichnen das Additionsgesetz als vollständig.
00:31:28.244 --> 00:31:34.923
Falls Sie sich ansehen, wie der mathematische Teil des Beweises funktioniert, ist folgendes wichtig:
00:31:34.923 --> 00:31:38.411
d war kein Quadrat. Aber auch das ist etwas, das Sie leicht überprüfen können.
00:31:38.411 --> 00:31:41.092
Und haben Sie sich erst einmal für ein d entschieden, das nicht quadratisch ist
00:31:41.092 --> 00:31:43.924
und das jeder verwenden kann, wird es in den Formeln nie Ausnahmen geben.
00:31:43.924 --> 00:31:52.257
Wenn Ihr d - äh - quadratisch ist, dann können Sie sich die gleichen Formeln aufschreiben.
00:31:52.257 --> 00:31:56.098
Meistens funktionieren sie, aber es gibt Ausnahmefälle.
00:31:56.098 --> 00:31:59.063
Und wir werden noch viel mehr über Ausnahmefälle erfahren.
00:31:59.063 --> 00:32:02.962
Und das Ärgerliche daran ist nicht nur, dass sie schwer zu programmieren sind.
00:32:02.962 --> 00:32:05.863
Sondern, wenn man irgendwelche Fehler macht, wird es schwierig sein,
00:32:05.863 --> 00:32:07.797
diese Fehler zu finden und auf diese Fehler zu testen.
00:32:07.797 --> 00:32:10.163
Und wenn ein Angreifer mehr darüber nachdenkt
00:32:10.163 --> 00:32:15.033
und ihnen einige Punkte findet, die diese Fehler ausnutzen, bricht das oft echtes ECC.
00:32:15.033 --> 00:32:18.830
Es ist also besser, eine Kurve zu nehmen, wo das d kein Quadrat ist.
00:32:18.830 --> 00:32:20.763
Dann müssen Sie sich überhaupt keine Sorgen mehr darüber machen.
00:32:20.763 --> 00:32:21.063
Okay.
00:32:21.063 --> 00:32:23.497
Kurz dazwischen... (schwer verständlich)
00:32:23.497 --> 00:32:25.730
Mit über einem finalen Feld (?) jedes zweite d ist kein quadratisches.
00:32:25.730 --> 00:32:26.800
Daher ist dies keine große Einschränkung.
00:32:26.800 --> 00:32:29.464
Und entfernt nur die Hälfte der Möglichkeiten.
00:32:29.464 --> 00:32:32.930
Weiterhin sind Divisionen wirklich langsam.
00:32:32.930 --> 00:32:37.664
Wenn Sie die implementieren, die Sie vorher im Python-Skript gesehen haben,
00:32:37.664 --> 00:32:39.996
haben wir noch nicht mal Divisionen eingefügt.
00:32:39.996 --> 00:32:43.130
Wir haben Sie online, aber es ist so, dass es eine Weile dauert.
00:32:43.130 --> 00:32:44.163
Es ist unangenehm.
00:32:44.163 --> 00:32:47.130
Es dauert sogar noch länger, wenn Sie sich Sorgen über ständige Zeitbeschränkungen machen.
00:32:47.130 --> 00:32:48.830
Also fangen wir an Divisionen loszuwerden.
00:32:48.830 --> 00:32:52.264
Das ist so wie "Doktor, Doktor, mein Knie schmerzt" und er sagt dann: "Verwenden Sie es nicht".
00:32:52.264 --> 00:32:57.085
Aber mathematisch, hier können wir die Verwendung von Divisionen vermeiden.
00:32:57.085 --> 00:33:02.019
Wenn Sie sich daran erinnern, wie Sie mit Brüchen a/b + c/d gearbeitet haben,
00:33:02.019 --> 00:33:03.551
dann wissen sie, dass wir sie als Brüche behalten.
00:33:03.551 --> 00:33:05.695
Bei einem Bruch multiplizieren Sie einfach die Nenner und
00:33:05.695 --> 00:33:07.494
kreuzmuliplizieren die Zähler und dann können sie addieren.
00:33:07.494 --> 00:33:10.494
Daher machen wir mit unseren Punkten das Gleiche.
00:33:10.494 --> 00:33:15.260
Wir führen eine zusätzliche Koordinate ein, die Z-Koordinate.
00:33:15.260 --> 00:33:16.828
Sie ist nur der Nenner.
00:33:16.828 --> 00:33:21.628
Anstatt Punkte als (X,Y) zu speichern, speichern wir jetzt (X,Y,Z).
00:33:21.628 --> 00:33:29.960
Hierbei bedeutet X und Y, dass das alte x und y, x/z und y/z ist.
00:33:29.960 --> 00:33:32.028
Sie können aber auch etwas abenteuerlustiger sein.
00:33:32.028 --> 00:33:34.961
Und erzielen dann eine bessere Geschwindigkeit,
00:33:34.961 --> 00:33:37.526
wenn Sie eine zusätzliche Koordinate namens t einführen.
00:33:37.526 --> 00:33:39.162
T = XY / Z
00:33:39.162 --> 00:33:41.628
Sind Sie daran interessiert, wie sie das effizient tun
00:33:41.628 --> 00:33:43.895
und tatsächlich computerverifizierte Formeln erhalten?
00:33:43.895 --> 00:33:46.762
Dann besuchen Sie bitte die "Explicit Formulas Database" unter dem dortigen Link,
00:33:46.762 --> 00:33:49.195
um zu sehen wie man Additionen durchführt.
00:33:49.195 --> 00:33:51.360
Okay.
00:33:51.360 --> 00:33:56.262
Wir kommen nun zu der Darstellung von Crypto zurück.
00:33:56.262 --> 00:33:59.061
Wir ersetzen die Uhr durch eine elliptische Kurve.
00:33:59.061 --> 00:34:02.183
Das macht die Formeln etwas komplizierter.
00:34:02.183 --> 00:34:04.062
Außerdem muss noch eine zusätzliche Auswahl getroffen werden.
00:34:04.062 --> 00:34:07.294
Nicht nur die Primzahl p ist standardisiert, sodass jeder sie verwenden kann.
00:34:07.294 --> 00:34:10.161
Standardisieren Sie dieses d, das kein Quadrat ist,
00:34:10.161 --> 00:34:12.429
sodass jeder sie verwenden kann.
00:34:12.429 --> 00:34:14.361
Es muss eine sichere Wahl sein.
00:34:14.361 --> 00:34:15.729
Denken Sie an die Warnung Nr. 1
00:34:15.729 --> 00:34:17.216
Es gibt viele unsichere Entscheidungen.
00:34:17.216 --> 00:34:18.763
Es gibt viele mögliche Standardkriterien.
00:34:18.763 --> 00:34:20.696
Diese müssen überprüft werden, um sicherzustellen,
00:34:20.696 --> 00:34:22.527
dass es sich um sichere Entscheidungen für Kurven handelt.
00:34:22.527 --> 00:34:24.894
Am Ende des Vortrags werden mehr über Standards sagen.
00:34:24.894 --> 00:34:35.095
Alice hat dann wie vorher ihren geheimen Schlüssel und multipliziert diesen mit x, y und
00:34:35.095 --> 00:34:35.861
Oh
00:34:35.861 --> 00:34:37.495
Ich überspringe, was auf dieser Folie steht.
00:34:37.495 --> 00:34:42.262
Auf dieser Folie steht Alice auch Bobs öffentlicher Schlüssel b(x,y) besitzt.
00:34:42.262 --> 00:34:44.828
Das hört sich alles so an, wie bei der Uhr.
00:34:44.828 --> 00:34:47.816
Alice nimmt jetzt das b(x,y) und
00:34:47.816 --> 00:34:50.728
multipliziert es mit a.
00:34:50.728 --> 00:34:53.430
Das ergibt a(b(x,y)).
00:34:53.430 --> 00:34:56.029
Sie merkt sich dann,
00:34:56.029 --> 00:34:59.495
dass a(b(x,y)) das Geheimnis zum Verschlüsseln und Authentifizieren von Daten ist.
00:34:59.495 --> 00:35:02.862
Da wir jetzt elliptische Kurven haben,
00:35:02.862 --> 00:35:06.562
müssen wir uns keine Sorgen mehr darüber machen, dass eine Indexrechnung alles kaputt macht.
00:35:06.562 --> 00:35:08.128
Wir brauchen keine Tausenden von Bits.
00:35:08.128 --> 00:35:12.063
Hier sind nun einige tatsächliche reale Größen für elliptische Kurven Kryptographie.
00:35:12.063 --> 00:35:14.729
Inklusive ist die gesamte und secret key encryption
00:35:14.729 --> 00:35:16.095
und Authentifizierung des öffentlichen Schlüssels.
00:35:16.095 --> 00:35:20.027
Sie können eine Primzahl haben, die nur 256 Bit groß ist.
00:35:20.027 --> 00:35:26.775
Wir werden später sagen, dass Sie x und y zusammen nur auf 256 Bit reduzieren können.
00:35:26.775 --> 00:35:32.783
Das reduziert dann den öffentlichen Schlüssel von Alice a(x,y) um ein Vielfaches.
00:35:32.783 --> 00:35:35.073
a(x,y) wird auf nur 32 Bytes reduziert.
00:35:35.158 --> 00:35:36.676
Diese wird Alice an Bob senden.
00:35:36.676 --> 00:35:40.684
Dann gibt es noch ein paar zusätzliche Dinge, wie eine Nonce, eine Zufallszahl.
00:35:40.684 --> 00:35:41.803
Damit Sie nicht jedes Mal, wenn eine Nachricht senden,
00:35:41.803 --> 00:35:44.806
diese auf die gleiche Weise verschlüsseln müssen.
00:35:44.779 --> 00:35:47.507
Sonst könnte jemand sehen, dass sich die Verschlüsselung wiederholt.
00:35:47.507 --> 00:35:48.988
Es gibt es auch einen Authentificator.
00:35:48.988 --> 00:35:52.515
Bob kann damit überprüfen, ob das Paket korrekt ist.
00:35:52.515 --> 00:35:56.115
Dann erhält Bob sein Paket.
00:35:56.115 --> 00:35:58.682
Er sagt: "oh ja, es ist ein Paket von Alice."
00:35:58.682 --> 00:36:02.448
Es gibt Alices öffentlichen Schlüssel, wenn Bob den geteilten Schlüssel noch nicht kennt,
00:36:02.448 --> 00:36:03.781
dann nimmt Bob sein Geheimnis,
00:36:03.781 --> 00:36:07.882
multipliziert es mit dem öffentlichen Schlüssel und erhalt dasselbe b(a(x,y).
00:36:07.882 --> 00:36:10.447
Dann führt er die Krytographie mit geheimem Schlüssel durch.
00:36:10.447 --> 00:36:12.415
Er verifiziert das eingehende Paket.
00:36:12.415 --> 00:36:14.515
Er verifiziert den Authentifikator unter Verwendung der Nonce
00:36:14.515 --> 00:36:15.915
und des öffentlichen Schlüssels von Alice.
00:36:15.915 --> 00:36:19.548
Er hat zu diesem Zeitpunkt bestätigt, dass das von Alice ist.
00:36:19.548 --> 00:36:22.482
Hat Bob noch nie von Alices öffentlichem Schlüssel gehört,
00:36:22.482 --> 00:36:24.315
weiß er nicht, wer Alice ist.
00:36:24.315 --> 00:36:26.882
Aber er erhält Kontinuität zwischen den unterschiedlichen Nutzungen.
00:36:26.882 --> 00:36:29.968
Und fügen Sie dann Zertifikate oder andere öffentliche Schlüsselinfrastruktur hinzu,
00:36:29.968 --> 00:36:31.815
wissen Sie tatsächlich, mit wem sie kommunizieren.
00:36:31.815 --> 00:36:34.782
Alles worüber wir hier reden,
00:36:34.782 --> 00:36:37.168
die ganze public key und secret key Sache, ist so schnell,
NOTE Paragraph
00:36:37.168 --> 00:36:38.716
dass wir uns es leisten können,
00:36:38.716 --> 00:36:40.815
das für jedes einzelne Paket zu machen, das das Internet durchquert.
00:36:40.815 --> 00:36:42.248
Gut.
00:36:42.248 --> 00:36:45.615
Wir haben Ihnen im Moment noch nicht gesagt, was Sie verwenden sollen.
00:36:45.615 --> 00:36:47.515
Hier ist nun ein sicheres Beispiel.
00:36:47.515 --> 00:36:50.082
Du bist leise!
00:36:50.082 --> 00:36:53.515
Dies ist also ein sicheres Beispiel, das dann nicht beworben werden sollte.
00:36:53.515 --> 00:36:54.716
Es ist sein eigenes.
00:36:54.716 --> 00:36:55.683
Ähm
00:36:55.683 --> 00:36:57.382
Ich kann aber sagen, dass es ein gutes Beispiel ist.
00:36:57.382 --> 00:36:59.982
Sollten Sie also eine große Primzahl als Ihre Primzahl nehmen, hat sie 255 Bits.
00:36:59.982 --> 00:37:01.815
Es ist eine sehr schöne Primzahl.
00:37:01.815 --> 00:37:04.614
Das Berechnungsmodul für diese Primzahl ist schnell.
00:37:04.614 --> 00:37:06.716
Sie liegt sehr nahe an einer Zweierpotenz.
00:37:06.716 --> 00:37:09.282
Sie führen also diesen Mod aus.
00:37:09.282 --> 00:37:13.305
Diese Prozentoperation kann diese Zahl sehr schnell reduzieren.
00:37:13.305 --> 00:37:16.182
Dann sieht d ziemlich klein aus.
00:37:16.182 --> 00:37:19.678
Hier haben Sie auch eine Edwards -Kurve.
00:37:19.678 --> 00:37:21.901
Es gibt eine andere Edwards-Kurve.
00:37:21.901 --> 00:37:23.335
Diese nutzt das gleiche d
00:37:23.335 --> 00:37:24.877
und fügt dort nur ein Minus ein.
00:37:24.877 --> 00:37:29.094
Außerdem fügt man ein Minus vor dem x^2 ein.
00:37:29.094 --> 00:37:31.961
Dies ist eine andere Kurve, aber fast die gleiche.
00:37:31.961 --> 00:37:37.556
Für jedes (x,y) von zuvor, haben wir nun
00:37:37.556 --> 00:37:41.785
die Quadratwurzel von Minus 1 *xy und das gleich y wie zuvor.
00:37:41.785 --> 00:37:45.265
Somit ist es nur mit einer kleinen Änderung die erste Kurve.
00:37:45.265 --> 00:37:49.355
Außerdem haben wir viele Wege wie man elliptic curves schreibt.
00:37:49.355 --> 00:37:53.470
Hier ist eine ganze Liste mit verschiedenen Arten von elliptic curves.
00:37:53.470 --> 00:37:55.676
Also das erste was wir Ihnen bereits gezeigt haben,
00:37:55.774 --> 00:37:59.976
die Uhr, in der Sie in die Ecken reindrücken, ist eine Edwards-Kurve.
00:37:59.976 --> 00:38:05.346
Ich hätte hier gerne einen zusätzlichen Term wie dieses minus 1.
00:38:05.396 --> 00:38:07.827
Ich behalte mir hier im Allgemeinen einen Koeffizienten a vor.
00:38:07.827 --> 00:38:09.370
Den kann ich dann etwas eingeben.
00:38:09.370 --> 00:38:10.127
Äh
00:38:10.127 --> 00:38:11.309
Zum Beispiel minus 1.
00:38:11.339 --> 00:38:12.995
Das nennt man eine verdrehte Edwards-Kurve.
00:38:12.995 --> 00:38:16.729
Es gibt noch ein paar andere Dinge, die man in Lehrbüchern findet.
00:38:16.729 --> 00:38:18.262
Diese nennt man Weierstrass-Kurven.
00:38:18.262 --> 00:38:20.929
Es gibt auch noch die Montgomery-Kurven.
00:38:20.929 --> 00:38:24.627
Diesen kann man sich als Sonderfall von Weierstrass-Kurven vorstellen.
00:38:24.627 --> 00:38:28.096
Sie haben eine ähnliche Form wie y^2 = x^3
00:38:28.096 --> 00:38:30.329
Hier gibt es einige unterschiedliche Terme.
00:38:30.329 --> 00:38:35.362
Wenn Sie eine Kurve haben, können Sie von einem zum anderen und zurück wechseln.
00:38:35.362 --> 00:38:38.696
Beispielsweise von einer Montgomery-Kurve zu einer Edward Kurve.
00:38:38.696 --> 00:38:41.496
Okay.
00:38:41.496 --> 00:38:47.889
Aus historischen Gründen findet man Standards für ECC.
00:38:47.889 --> 00:38:48.266
Okay.
00:38:48.266 --> 00:38:49.795
Haltet Euch zurück. Das wird schrecklich.
00:38:49.896 --> 00:38:51.799
Das sind Weierstrass-Kurven.
00:38:51.799 --> 00:38:54.145
Hier ist das Additionsgesetz.
00:38:54.145 --> 00:38:56.345
Es zeigt, wie man 2 Punkte auf einer Weierstrasskurve addiert.
00:38:56.345 --> 00:39:02.378
Kurze Pause. Zwischenrufe!
00:39:02.378 --> 00:39:03.613
Oh, das ist gar nicht so schlecht.
00:39:03.613 --> 00:39:05.345
Es gibt 6 verschiedene Fälle.
00:39:05.345 --> 00:39:06.745
Wir gehen sie mal durch.
00:39:06.745 --> 00:39:07.512
Nein, nein, lasst uns sie nicht durchgehen.
00:39:07.512 --> 00:39:11.411
Das ist - äh - wenn Du nur einen Teil davon nimmst.
00:39:11.411 --> 00:39:13.338
Dann könnte es so aussehen, als würde es die meiste Zeit funktionieren.
00:39:13.338 --> 00:39:15.505
Meistens funktionieren die ersten Formeln.
00:39:15.505 --> 00:39:18.572
Solange, bis man etwas Verrücktes wie p + p macht und es dann nicht funktioniert.
00:39:18.572 --> 00:39:20.871
Dann gibt es immer mehr Ausnahmefälle.
00:39:20.871 --> 00:39:23.205
In einigen dieser Fälle merkt man es zunächst gar nicht.
00:39:23.205 --> 00:39:25.605
Un dann versucht man einen Code dafür zu schreiben.
00:39:25.605 --> 00:39:27.217
Es geht einfach immer weiter.
00:39:27.217 --> 00:39:30.205
Dann versucht man es zu testen und ist sich nicht sicher, ob man alle Tests richtig gemacht hat.
00:39:30.205 --> 00:39:32.115
Aber okay.
00:39:32.156 --> 00:39:34.706
Das ist das, was man in ECC-Standards findet.
00:39:34.706 --> 00:39:36.656
Alles klar.
00:39:36.722 --> 00:39:41.882
Schöner als Weierstrass- und Montgomery-Kurven ist eine unserer Lieblingskurven.
00:39:41.904 --> 00:39:44.245
Hier sehen Sie die gesamte Arithmetik.
00:39:44.245 --> 00:39:49.977
Die Ausnahme ist, dass ich Ihnen nicht gezeigt habe, wie ich den Austausch mit konstanter Zeit durchführen werde.
00:39:49.977 --> 00:39:53.444
Hier gibt es ein bedingtes Bit, das x2 mit x3 vertauscht.
00:39:53.444 --> 00:39:56.178
Wir können das in konstanter Zeit erledigen.
00:39:56.178 --> 00:39:59.044
Ersetzen Sie diese Anweisung durch etwas, das folgendes besagt:
00:39:59.044 --> 00:40:00.978
"Es bleibt oder es wird ausgetauscht."
00:40:00.978 --> 00:40:04.277
Das ist eine ganze Addition auf Montgomery.
00:40:04.277 --> 00:40:07.076
Für jedes Bit machen Sie diese paar Schritte.
00:40:07.076 --> 00:40:10.410
Und Sie gehen die 255 Bits durch, die dort angegeben sind.
00:40:10.410 --> 00:40:13.577
Dies ist ein weiterer schöner Fall von Arithmetik.
00:40:13.577 --> 00:40:17.678
Beachten Sie bitte, dass wir hier nur eine x-Koordinate.
00:40:17.678 --> 00:40:20.910
Für die Edwards-Kurve hätten wir x und y.
00:40:20.910 --> 00:40:23.178
Es gibt also einige Unterschiede in dem, was wir damit machen.
00:40:23.178 --> 00:40:27.077
Wir teilten Ihnen mit, dass wir über Standards sprechen werden.
00:40:27.077 --> 00:40:31.077
Woher beziehen Sie Ihre Standards und wie können Sie diese verteidigen?
00:40:31.077 --> 00:40:33.543
Sie treten gegen jemanden an, der mit einem Mathematiker antritt.
00:40:33.543 --> 00:40:37.110
Mathematiker sind gruselige Menschen.
00:40:37.110 --> 00:40:38.512
Sie kennen alle Arten von Angriffen.
00:40:38.512 --> 00:40:40.977
Falls Sie diese Angriffe sehen wollen, haben wir am Ende ein paar URLs.
00:40:40.977 --> 00:40:43.310
Aber im Grund kennen wir diese Angriffe.
00:40:43.310 --> 00:40:52.050
Vereinbaren Sie bestimmte Eigenschaften, die Ihre Kurve haben soll.
00:40:52.050 --> 00:40:54.187
Und was diese Standards Ihnen garantieren.
00:40:54.187 --> 00:40:59.979
Wenn Sie einen dieser Standards auswählen, ist die Kurve ist für den folgenden Angriff sicher.
00:41:00.144 --> 00:41:02.287
Jemand sieht das Ergebnis Ihrer Berechnung.
00:41:02.287 --> 00:41:03.587
Er kennt den Basispunkt.
00:41:03.587 --> 00:41:05.720
Er kennt Ihren öffentlichen Schlüssel.
00:41:05.720 --> 00:41:09.053
Er ist aber nicht in der Lage herauszufinden, was Ihr a oder b war.
00:41:09.053 --> 00:41:12.353
Man nennt dies das Problem des elliptischen diskreten Logarithmus.
00:41:12.353 --> 00:41:16.854
Und wir haben ganz viele Arbeiten, um die Schwierigkeit zu untersuchen.
00:41:16.854 --> 00:41:22.054
Als Mathematiker untersuchen wir, wie schwer es bei einer bestimmten Kurve ist, eine Lösung zu finden.
00:41:22.054 --> 00:41:23.820
Um so die elliptische, diskrete Protokoll zu knacken.
00:41:23.820 --> 00:41:28.954
Sie möchten beispielsweise, dass Ihr Punkt, wenn Sie ihn mehrmals mit sich selbst addieren,
00:41:28.954 --> 00:41:33.320
über eine lange, lange, Zeit verschiedene Punkte ergibt,
00:41:33.320 --> 00:41:36.587
bis Sie zum Beispiel wieder zum gleichen Punkt zurück gelangen.
00:41:36.587 --> 00:41:39.254
Also z.B. nach l Phasen sind Sie wieder zurück.
00:41:39.254 --> 00:41:45.588
Dieses l sollte groß sein, Ich denke z.B. 2 hoch 250 oder etwas anderes großes.
00:41:45.588 --> 00:41:49.788
Und ja das sind alle Skripte also ist dies eines der Eigenschaften aber da sind viele weitere.
00:41:49.788 --> 00:41:54.254
Okay, lasse wir uns annehmen, dass Sie es implementieren.
00:41:54.254 --> 00:41:57.687
Sie nehmen eines der Standards und wieder mal sind sind sie alle ähnlich.
00:41:57.687 --> 00:41:59.121
Klar, es gibt Unterschiede im Detail,
00:41:59.121 --> 00:42:00.688
aber sie alle beschützen uns.
00:42:00.688 --> 00:42:03.154
Und Sie implementieren den Standart...
00:42:03.154 --> 00:42:06.555
Und Sie sagen, okay wir sind in Deutschland, wir nehmen die Brainpool Kurven,
00:42:06.555 --> 00:42:08.821
da diese in deutschen Pässen verwendet werden.
00:42:08.821 --> 00:42:11.753
In Ordnung, also wir nehmen Brainpool P256 t1,
00:42:11.879 --> 00:42:15.445
dies gibt Ihnen eine Primzahl, die 256 Bits lang ist.
00:42:15.445 --> 00:42:20.779
Außerdem eine Weierstrass-Kurve, y^2 = x^3 - 3x + etwas großes.
00:42:20.779 --> 00:42:23.945
Und dann gibt es Ihnen einen Basispunkt (x,y),
00:42:23.945 --> 00:42:26.380
und dann schauen Sie darauf und merken:
00:42:26.380 --> 00:42:30.077
Oh, alle netten Formeln die vorher genannt wurden, ohne Ausnahmefälle,
00:42:30.077 --> 00:42:35.511
wie Edwards und Montgomery, diese Formeln funktionieren nicht bei dieser Kurve.
00:42:35.511 --> 00:42:38.645
Wenn Sie eine Kurve haben, die kompatibel mit den Formeln ist,
00:42:38.645 --> 00:42:40.778
dann standardisieren Sie diese.
00:42:40.778 --> 00:42:44.244
Dann kann jeder Punkt erfolgreich addiert werden und Sie können alle Ausnahmefälle vergessen.
00:42:44.244 --> 00:42:46.812
Dafür brauchen Sie eine Kurve die mit den Formeln übereinstimmt,
00:42:46.812 --> 00:42:51.656
leider funktioniert diese Kurve nicht mit Edwards und Montgomery,
00:42:51.656 --> 00:42:56.193
daher müssen Sie zurück zu den chaotischen Weierstrass Formeln gehen.
00:42:56.193 --> 00:43:00.012
Okay, Sie sind sehr vorsichtig und tun genau das was die Formeln aussagen.
00:43:00.012 --> 00:43:05.012
Dabei nutzen Sie Testfälle für alles und haben die Weierstrass Konditionen
00:43:05.012 --> 00:43:06.179
in allen sechs Fällen richtig implementiert .
00:43:06.179 --> 00:43:12.757
Und Sie arbeiten in konstanter Zeit, sodass keine Informationen an Angreifer gegeben werden.
00:43:12.757 --> 00:43:17.211
Dann haben sie eine Lösung die schmerzhaft langsam ist,
00:43:17.211 --> 00:43:20.345
aber Sie können sich sicher über die Sicherheit sein.
00:43:20.345 --> 00:43:25.712
Bis ein Angreifer kommt und sagt:
00:43:25.712 --> 00:43:27.412
"Hi, lass uns uns Diffie-Hellmann hier nutzen.
00:43:27.412 --> 00:43:28.012
Hier ist mein Punkt."
00:43:28.012 --> 00:43:31.279
Okay, ich nehme... Ähm ich glaube ich bin Alice.
00:43:31.279 --> 00:43:40.412
Ich habe ein a und nehmen den Punkt, den sie mir gesendet hat a mal.
00:43:40.412 --> 00:43:41.745
Dies ist ihr öffentlicher Schlüssel.
00:43:41.745 --> 00:43:44.144
Dies ist nicht das originale (x,y),
00:43:44.144 --> 00:43:45.647
es ist ein anderes (x', y')
00:43:45.647 --> 00:43:46.679
welches sie mir gesendet hat.
00:43:46.679 --> 00:43:49.145
Und ich sende zurück mein a(x',y')
00:43:49.145 --> 00:43:53.312
Und dann, wenn ich dies korrekt berechnet habe,
00:43:53.312 --> 00:44:00.713
dann habe ich nun den Verschlüsselung- Authentifikations-Mechanismus genutzt.
00:44:00.713 --> 00:44:01.812
Da mir jemand gesagt hat, dass ich Standard-Mechanismen nutzen soll.
00:44:01.812 --> 00:44:05.112
Ich habe Daten verschlüsselt und diese durch das Netzwerk geschickt.
00:44:05.112 --> 00:44:08.012
Ich bin im Netzwerk,
00:44:08.012 --> 00:44:11.081
ich sehe seine AES-GMC verschlüsselte Nachricht.
00:44:11.081 --> 00:44:13.412
Und nun, er weiß nicht,
00:44:13.412 --> 00:44:16.546
dass es unabhängig von seinen a,
00:44:16.546 --> 00:44:19.812
nicht viele verschiedenen Punkte gibt.
00:44:19.812 --> 00:44:21.811
Ich habe ihm keinen Punkt auf der brainpool-Kurve genannt,
00:44:21.811 --> 00:44:24.696
nein, ich habe ihm einen Punkt auf einer einfacheren Kurve gerannt.
00:44:24.696 --> 00:44:26.245
Zum Beispiel hier, hat es nur fünf.
00:44:26.245 --> 00:44:27.714
Die Brainpoolkurve ist viel viel größer,
00:44:27.714 --> 00:44:28.863
dies hier ist eine nette Kurve.
00:44:28.863 --> 00:44:34.078
Also dieser Punkt hat nur 4999 verschiedene Kopien.
00:44:34.078 --> 00:44:39.012
Dies heißt, dass er nicht wirklich ausrechnet, was er denkt.
00:44:39.012 --> 00:44:40.247
Ups!
00:44:40.247 --> 00:44:43.746
Nun der Grund für diese Möglichkeit ist,
00:44:43.746 --> 00:44:47.381
dass im ganzen Chaos der Weierstrass-Kurven, kein a6 existiert.
00:44:47.381 --> 00:44:53.012
Also unabhängig davon, ob es das a6 ist als große Zahl für harte Kurven,
00:44:53.012 --> 00:44:55.947
oder die 5 die ich eben für leichtere eingesetzt habe.
00:44:55.947 --> 00:44:59.280
Es ist egal, der Angreifer nutzt eine der Formeln.
00:44:59.280 --> 00:45:05.713
Dann gibt mir das a einen der 4999 verschiedenen Punkte,
00:45:05.713 --> 00:45:09.712
woraus ich ein Modulo 4999 entwickeln kann.
00:45:09.712 --> 00:45:12.246
Lassen wir uns das wiederholen!
00:45:12.246 --> 00:45:14.181
Sie sendet mir einen anderen Punkt.
00:45:14.181 --> 00:45:16.179
Hi Dan, hier ist ein anderer Punkt.
00:45:16.179 --> 00:45:19.761
Ich nehme das neue (x',y') und berechne es a mal.
00:45:19.761 --> 00:45:23.628
Dann sende ich etwas verschlüsseltes zurück mithilfe des geteilten Geheimnisses.
00:45:23.628 --> 00:45:29.228
Und nun berechnet sie das gleiche.
00:45:29.228 --> 00:45:31.993
Sie hat mir heimlich einen Punkt von einer kleinen Ordnung geschickt,
00:45:31.993 --> 00:45:33.411
was ich nie bemerkt habe.
00:45:33.411 --> 00:45:37.762
Nun hat sie mein geheimes modulo herausgefunden und nutzt verschiedene Nummern.
00:45:37.762 --> 00:45:39.228
Wieder und wieder.
00:45:39.228 --> 00:45:46.094
Dies geschieht etwa 20 mal und dann nutzt sie den Chinesischen Restsatz um mein ganzes Geheimnis zu knacken.
00:45:46.094 --> 00:45:48.729
Auch wenn nur ein paar Schwachstellen gefunden werden,
00:45:48.729 --> 00:45:52.496
ist dies genug um das ganze Sicherheitssystem ernsthaft zu beschädigen.
00:45:52.496 --> 00:45:58.231
Wenn dies dann 20 mal passiert, dann habe ich ein echtes Problem.
00:45:58.231 --> 00:46:02.062
Nun, was Leute dem häufig entgegnen ist, dass sie sagen:
00:46:02.062 --> 00:46:05.695
Oh, ist dir die Fußnote im Standart nicht aufgefallen, welche besagt,
00:46:05.695 --> 00:46:09.662
dass wenn du einen Punkt bekommst, du testen sollst, ob dieser auf der Kurve liegt?
00:46:09.662 --> 00:46:15.262
Dh. schuld an der Attacke ist die Person, die die Implementierung vornimmt.
00:46:15.262 --> 00:46:17.396
Dies ist der Weg, wie wir sichere Systeme erhalten,
00:46:17.396 --> 00:46:18.859
wir weisen die Schuld immer dem Implementierer zu.
00:46:18.859 --> 00:46:21.594
Das ist super, wenn etwas falsch mit dem System ist,
00:46:21.594 --> 00:46:24.029
ist es der Fehler des Implementierers, dass das nicht überprüft wurde.
00:46:24.029 --> 00:46:27.196
Applaus
00:46:27.196 --> 00:46:29.662
Lassen Sie mich nicht von stir copy anfangen...
00:46:29.662 --> 00:46:34.328
Sie sollten die Länge vom String... Sorry, das war falsch
00:46:34.328 --> 00:46:37.461
Sie sollten aufpassen, dass dieser Punkt auf der Kurve ist,
00:46:37.461 --> 00:46:39.762
Sie sollten aufpassen, dass die richtige Reihenfolge vorliegt.
00:46:39.762 --> 00:46:41.361
wegen einer anderen ähnlichen Attacke.
00:46:41.361 --> 00:46:44.728
Über die Art und Weise wie Patentgebühren an certicom gezahlt werden...
00:46:44.728 --> 00:46:50.336
Okay, ich referiere dazu, wenn Sie einen Telefonanruf bekommen würden.
00:46:50.336 --> 00:46:55.826
Wo gesagt wird, dass ein Patent zur Validieren steht...
00:46:55.826 --> 00:47:02.685
Statt dem Implementierer die Schuld zuzuweisen, warum sollten wir nicht die Umstände verbessern.
00:47:02.685 --> 00:47:05.154
Warum designen wir nicht Kryptographie anders?
00:47:05.154 --> 00:47:06.955
Warum designen wir keine anderen Kurven,
00:47:06.955 --> 00:47:10.720
sodass es nicht möglich ist bei der Implementierung zu versagen?
00:47:10.720 --> 00:47:13.787
Wir wissen wir Implementierer ticken.
00:47:13.787 --> 00:47:16.420
Wir sind Implementierer und wissen was wir falsch machen.
00:47:16.420 --> 00:47:21.288
Und die Fehler wiederholen sich wieder und wieder.
00:47:21.288 --> 00:47:25.502
Also lasst uns uns gegen diese Fehler schützen und ein robustes Design wählen.
00:47:25.502 --> 00:47:32.021
Dies heisst für ECC, Sie nehmen das (x,y) was durchs Netzwerk ankommt
00:47:32.021 --> 00:47:35.054
und verbieten, dass dieses (x,y) durch das Netzwerk weitergeschickt wird.
00:47:35.054 --> 00:47:36.853
Sie haben nur ein x.
00:47:36.853 --> 00:47:41.753
Und wenn das y^2 gleich zu etwas ist, dann könnte man, wenn man will,
00:47:41.753 --> 00:47:42.721
das kommunizieren.
00:47:42.721 --> 00:47:45.988
Sie können ein Bit senden, das angibt ob es plus oder minus die Quadratwurzel
00:47:45.988 --> 00:47:49.070
von diesem y ist.
00:47:49.070 --> 00:47:51.131
Oder man sendet einfach kein y.
00:47:51.131 --> 00:47:54.298
Erinnern Sie sich an die Montgomery Formeln, diese brauchen noch nicht mal y.
00:47:54.298 --> 00:48:00.731
So wenn Sie nur ein x senden, dass gibt es deutlich weniger Möglichkeiten für den Angreifer
00:48:00.731 --> 00:48:06.964
um Punkte auszusuchen und Sie so zu veralbern wie eben.
00:48:06.964 --> 00:48:11.033
Es gibt ein paar mehr Regeln, welche beim Aussuchen der Kurve
00:48:11.033 --> 00:48:13.732
und beim Designen des Protokolls beachtet werden können.
00:48:13.732 --> 00:48:17.997
Dies heißt, dass Sie als Implementierer leichter arbeiten können.
00:48:17.997 --> 00:48:24.697
Der Protokol Designer kann sagen, dass Sie die Skalare a und b,
00:48:24.697 --> 00:48:27.131
die Geheimnisse die Sie für Diffie-Hellmann nutzen,
00:48:27.131 --> 00:48:30.697
immer multiplizieren sollen mit dem sogenannten Kofaktor der Kurve.
00:48:30.697 --> 00:48:33.698
Die ist der Basispunkt der Ordnung l,
00:48:33.698 --> 00:48:35.132
es hat l unterschiedliche Vielfache.
00:48:35.132 --> 00:48:39.397
Z.B. sind dort vier mal l, oder acht mal l Punkte auf der Kurve,
00:48:39.397 --> 00:48:40.802
dann sieht man nur l.
00:48:40.802 --> 00:48:44.065
Um für die daraus resultieren Lücke aufzukommen und ausgeklügelteren Attacken zuvorzukommen,
00:48:44.065 --> 00:48:47.132
multiplizieren wir die geheimnisse a und b immer mit acht.
00:48:47.132 --> 00:48:50.166
Dies beschützt uns komplett vor diesen Attacken
00:48:50.166 --> 00:48:53.665
und kann im Protokoll aufgenommen und getestet werden.
00:48:53.665 --> 00:48:58.730
Weiterhin kann der Designer der Kurve immer Kurven aussuchen,
00:48:58.730 --> 00:49:00.897
die"verdrehungssicher" sind.
00:49:00.897 --> 00:49:04.431
Da ist immer ein bisschen Spielraum, wenn jemand einen komprimierten Punkt schickt.
00:49:04.431 --> 00:49:07.131
Und diese "Verdrehungssicherheit" sagt etwa aus:
00:49:07.131 --> 00:49:11.798
Dieser Spielraum lässt Ihnen die Möglichkeit zwischen verschiedenen Kurven auszusuchen.
00:49:11.798 --> 00:49:16.182
Da gibt es die erste Kurve aber auch ihre verwandte Kurve, die "verdrehte Kurve" genannt wird.
00:49:16.182 --> 00:49:20.932
Der Designer der Kurve kann sicherstellen, dass beide sicher sind.
00:49:20.932 --> 00:49:24.465
Beie haben große Primzahlen, dann ist da ein l und ein verwandtes l
00:49:24.465 --> 00:49:28.199
und ein kleiner Kofaktor sowie ein weiterer kleiner Kofaktor.
00:49:28.199 --> 00:49:31.364
Wenn der Designer eine der "verdrehungsicheren" Kurven wählt,
00:49:31.364 --> 00:49:34.398
bleibt dem Angreifer keine Flexibilität mehr übrig.
00:49:34.398 --> 00:49:38.833
Der Angreifer hat dann keine Informationen mehr über Ihr Geheimnis a und b.
00:49:38.833 --> 00:49:41.965
So, warum machen wir dies nicht einfach?
00:49:41.965 --> 00:49:44.065
Naja, es geschieht in Teilen.
00:49:44.065 --> 00:49:47.766
Es gibt bereits eine Bewegung für die nächste Generation von einfachen Standards.
00:49:47.766 --> 00:49:50.680
Nächste Generation meint, dass es Kurven geben soll,
00:49:50.680 --> 00:49:52.647
bei denen man sich nicht selber verzettelt, wenn man diese
00:49:52.647 --> 00:49:54.111
auf die einfachste Weise implementiert.
00:49:54.111 --> 00:49:57.445
Das heißt, dass eine einfache Implantation auch eine sichere Implantation sein soll.
00:49:57.445 --> 00:50:01.278
Normalerweise, wenn man etwas sicherer gestaltet,
00:50:01.278 --> 00:50:02.379
wird es langsamer.
00:50:02.379 --> 00:50:04.214
Nun der Bonus in diesem Fall ist, dass es schneller wird.
00:50:04.214 --> 00:50:09.046
Bereits in 2010 hat Adam Langley von Google in die TLS mailing list geschrieben:
00:50:09.046 --> 00:50:13.012
" Hey Leute, da Kryptographie weiter fortgeschritten ist,
00:50:13.012 --> 00:50:17.679
wäre es nicht gut, wenn wir Kurve 25519 als benannte Kurve haben?"
00:50:17.679 --> 00:50:19.445
Dann ist nicht viel passiert.
00:50:19.445 --> 00:50:23.512
Wir haben daran gearbeitet gute Methoden,
00:50:23.512 --> 00:50:25.679
naja zumindest denken wir das,
00:50:25.679 --> 00:50:27.713
zum Erstellen von Kurven zu entwicklen.
00:50:27.713 --> 00:50:31.079
Naja, dank Snowden im letzten September,
00:50:31.079 --> 00:50:34.979
gibt es nun emotionale Reaktionen von Leuten.
00:50:34.979 --> 00:50:39.379
Die sagen, da NIST Kurven einen Teil ihrer Vertraulichkeit verloren haben,
00:50:39.379 --> 00:50:41.879
und wir denken, vielleicht ist die NSA nicht nur gut,
00:50:41.879 --> 00:50:44.346
sollten wir nicht eine neue Bewegung haben?
00:50:44.346 --> 00:50:46.046
Zum Glück gibt es viele weitere Leute die sagen:
00:50:46.046 --> 00:50:50.212
"Es ist nicht, dass wir paranoid sind, wir wissen nicht ob die NIST Kurven unsicher sind,
00:50:50.212 --> 00:50:54.645
aber sie sind garantiert nicht gut zu implementieren."
00:50:54.645 --> 00:50:57.413
Wir könnten schneller und sicherer sein.
00:50:57.413 --> 00:51:02.313
Dazu gibt es einige Zitate und auch ein Entwurf.
00:51:02.313 --> 00:51:08.147
Wenn jemand ein paranoides Sicherheitslevel erreichen will, haben wir hier 41417 Bits.
00:51:08.147 --> 00:51:17.846
Ähm, eine SafeCurves Seite und so weiter.
00:51:17.846 --> 00:51:20.546
Final, CFRG verändert sich.
00:51:20.546 --> 00:51:25.247
Da war ein Typ von der NSA, der ein Co-Leader von CFRG war.
00:51:25.247 --> 00:51:28.647
Also CFRG ist eine Kryptogramme Forschungsgruppe von der Internet Engineering Task Force.
00:51:28.647 --> 00:51:37.313
Und er NSA co-chair wird weiter dort sein um sie zu unterstützen und zu sagen, wem sie vertrauen sollen.
00:51:37.313 --> 00:51:40.646
Nun, ich hatte gehofft dass wir im Guten enden.
00:51:40.646 --> 00:51:42.214
Dass wir sagen können, es ist alles gut hier.
00:51:42.214 --> 00:51:46.980
Immerhin gibt es einen guten Punkt, Microsoft hat Kurven gewählt...
00:51:46.980 --> 00:51:49.980
Wissen Sie, sobald Microsoft in die Diskussion eingreift, ist diese beendet,
00:51:49.980 --> 00:51:52.581
Nunja die letzte Seite sollte etwas Nettes sein, aber aktuell geht die Diskussion einfach weiter.
00:51:52.581 --> 00:52:04.713
Danke für ihre Aufmerksamkeit!
00:52:04.713 --> 00:52:18.279
Applaus
00:52:18.279 --> 00:52:20.313
Moderator: "Danke für Euren Vortrag!
00:52:20.313 --> 00:52:24.047
Wir haben nur ein paar Minuten für Fragen und Antworten,
00:52:24.047 --> 00:52:36.019
daher beeilen sie sich bitte und fragen nur kurze Fragen.
00:52:36.019 --> 00:52:37.904
Okay, los gehts!"
00:52:37.952 --> 00:52:49.978
Wissen Sie, dass von Attacken oder Schwachstellen in NIST 186-2?
00:52:49.978 --> 00:52:57.955
Ja, zum Beispiel, ist NIST P224 nicht verdrehungssicher.
00:52:57.955 --> 00:53:01.944
Dies ist das einzig bekannte Problem.
00:53:01.944 --> 00:53:05.489
Schauen Sie, wenn Sie sich die Arbeit der ganzen Implentierungen machen
00:53:05.489 --> 00:53:10.221
und ganz vorsichtig arbeiten und sich schauen ob ein Punkt auf der Kurve liegt,
00:53:10.221 --> 00:53:12.189
und die richtige Ordnung hat, usw.
00:53:12.189 --> 00:53:14.222
Wenn Sie eine Menge Arbeit hineinstecken in etwas,
00:53:14.222 --> 00:53:17.689
was so langsam und fragil ist und hart zu testen und hart zu implementieren.
00:53:17.689 --> 00:53:21.355
Dann können sie etwas sicheres mit den NIST elliptischen Kurven machen.
00:53:21.355 --> 00:53:27.352
Ein Schritt in die Zukunft von modernen ECC ist aber etwas zu schaffen,
00:53:27.352 --> 00:53:29.390
was schneller und einfacher zu implementieren ist.
00:53:29.390 --> 00:53:33.152
Damit sind auch mehr Leute glücklich.
00:53:33.152 --> 00:53:33.853
Danke!
00:53:33.853 --> 00:53:36.337
Okay, bitte
00:53:36.337 --> 00:53:39.382
"Ja, ganz kurze frage, wenn Sie die NSA leiten würden,
00:53:39.382 --> 00:53:43.615
könnten Sie Ihren eigenen Standard so beeinflussen, dass Sie ihn knacken könnten?
00:53:43.615 --> 00:53:45.449
Und wie würden Sie das machen?"
00:53:45.449 --> 00:53:50.148
Naja, die kurze Antwort wäre, dass das Gute bei Standards ist,
00:53:50.148 --> 00:53:56.626
dass es viele gibt aus denen man aussuchen kann.
00:53:56.626 --> 00:54:00.109
Moderator: "Ist das die Antwort?"
00:54:00.335 --> 00:54:03.795
Also die längere Antwort wäre,
00:54:03.795 --> 00:54:08.307
dass ich beispielsweise den NC zum französischen Standard (?) wählen könnte.
00:54:08.307 --> 00:54:14.575
Es gibt keine Rechtfertigung dafür, welche Kurve ich wähle.
00:54:18.205 --> 00:54:22.182
Zuschauer: "Wir kamen Sie auf die Schlüssellänge von 45 Bits,
00:54:22.182 --> 00:54:24.442
und woher wissen Sie, dass das sicher ist?
00:54:24.442 --> 00:54:27.750
Ist es nur die Abwesenheit von sowas wie Indexcalculus?"
00:54:27.750 --> 00:54:31.810
Ja, die Tatsachen, dass IndexCalculus nicht ausgeführt werden kann,
00:54:31.982 --> 00:54:37.180
erlaubt ECC mit kleineren Schlüsselgrößen als RSA zu arbeiten.
00:54:37.180 --> 00:54:40.970
Und die 256 Bits kommen von Schätzungen,
00:54:41.020 --> 00:54:46.801
was die größten Rechnungen sein werden, die in zehn Jahren mit aktueller Technologie
00:54:46.801 --> 00:54:48.299
ausgeführt werden können.
00:54:48.299 --> 00:54:51.566
Zum Beispiel, mit einem 65 Watt Stromwerk,
00:54:51.566 --> 00:54:56.134
würde die größte Rechenleistung nicht ausreichen um 200 Bit elliptic curves zu knacken.
00:54:56.134 --> 00:54:58.800
Daher fühlen wir uns mit 256 Bit sicher.
00:54:58.800 --> 00:55:05.900
Im Bezug auf die Attacken, die wir kennen, sind die Kurven sicher.
00:55:05.900 --> 00:55:15.221
Auf cryp.to (?) können Sie sehen wie viele Operationen notwendig sind um eine 414 Bit Kurve zu knacken.
00:55:17.411 --> 00:55:19.099
Wir haben leider keine Zeit mehr,
00:55:20.307 --> 00:55:22.475
daher nochmal Danke an die Vortragenden!
00:55:22.475 --> 00:55:26.086
Applaus