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