1 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. 2 00:00:15,042 --> 00:00:19,208 Hallo, ich bin Tanja und neben mir ist Dan, falls das noch nicht bekannt war. 3 00:00:19,208 --> 00:00:20,786 (Gelächter) 4 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 5 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, 6 00:00:29,223 --> 00:00:32,799 wachen Sie ab zu und zu auf und schauen, ob sie noch mitkommen. 7 00:00:32,799 --> 00:00:34,844 Also warum Kryptographie? 8 00:00:34,885 --> 00:00:38,950 Wenn Sie Kryptographie im Internet oder für elektronische Zahlungen verwenden, 9 00:00:38,971 --> 00:00:43,232 dann sehen sie zum Beispiel ein SSL Zertifikat in welchem Kryptographie verwendet wird. 10 00:00:43,285 --> 00:00:47,285 Wenn Sie einen elektronischen Pass oder einen elektronischen Personalausweis haben, welcher Signaturen nutzt, oder 11 00:00:47,355 --> 00:00:52,765 wenn Sie TLS verwenden um vertrauliche Daten zu senden, dann möchten Sie Verschlüsselung nutzen. 12 00:00:52,845 --> 00:00:59,845 Wenn Sie einen SSL-Exchange haben, nutzen sie z.B. RSA, Diffie-Hellmann oder ECDH. 13 00:00:59,851 --> 00:01:05,571 Und um EC, ECDH und ECDSA geht es heute in diesem Vortrag. 14 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". 15 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. 16 00:01:14,305 --> 00:01:19,248 Aber sie setzt voraus, dass die beiden Parteien, die miteinander reden möchten sich bereits kennen, 17 00:01:19,248 --> 00:01:21,742 also dass sie bereits einen Schlüsselaustausch durchgeführt haben 18 00:01:21,742 --> 00:01:23,164 Wir werden Ihnen zeigen wie man diesen Schlüsselaustausch durchführt. 19 00:01:23,164 --> 00:01:29,824 Und vielleicht dann im nächsten Jahr, die symmetrische Kryptographie. 20 00:01:29,824 --> 00:01:35,264 Okay, also warum sollte man in public key Kryptographie ECC (elliptic curve cryptography) nutzen 21 00:01:35,517 --> 00:01:39,322 Was hat dazu geführt, dass Personen sich für ECC interessieren? 22 00:01:39,501 --> 00:01:43,501 Die einfache Antwort dafür ist eine Angriffsstrategie namens Index-Calculus. 23 00:01:43,808 --> 00:01:47,338 Nun diese nutzen Sie, wenn Sie den RSA Schlüssel von jemanden faktorisieren, 24 00:01:47,434 --> 00:01:50,654 oder den ursprünglichen nicht-elliptischen Diffie-Hellman knacken, möchten. 25 00:01:50,677 --> 00:01:52,468 Dann nutzten Sie Index-Calculus. 26 00:01:52,685 --> 00:01:54,821 Dies ist eine ausgefallene Nutzung von Mathematik sowie die damit einhergehenden Algorithmen. 27 00:01:54,821 --> 00:01:58,089 Im Endeffekt werden diese immer schneller und schneller, 28 00:01:58,089 --> 00:02:00,717 sodass wir am Ende gar nicht wissen, wie schnell sie einmal sein werden. 29 00:02:00,717 --> 00:02:03,740 Hier ist ein Teil der Geschichte, wann die Algorithmen erfunden wurden: 30 00:02:03,740 --> 00:02:08,449 1975 wurde einer der ersten Index-Calculus Algorithmen, CFRAC, 31 00:02:08,449 --> 00:02:09,863 zum Faktorisieren von großen Zahlen entwickelt. 32 00:02:09,863 --> 00:02:14,962 In 1977, 1982, 1990. 1994 gab es dann alle möglichen Arten von Fortschritten. 33 00:02:14,962 --> 00:02:17,562 Sie haben letztes Jahr von der Cryptoapocalypse gehört. 34 00:02:17,562 --> 00:02:22,061 Und diese ist eine der neusten Fortschritte in Indexcalculus 35 00:02:22,061 --> 00:02:24,795 Es ist zwar nicht relevant für das Knacken von RSA, 36 00:02:24,795 --> 00:02:28,562 aber es ist ein Beispiel dafür, dass die allgemeine Strategie des Index-Calculus 37 00:02:28,562 --> 00:02:36,088 immer weiter verfeinert, hochwertiger und schneller wird. 38 00:02:36,088 --> 00:02:38,490 Das ist nicht die ganze Geschichte. 39 00:02:38,490 --> 00:02:41,977 Wenn man sich die wissenschaftliche Fachliteratur anschaut, dann gibt es dort auch viele Verbesserungen. 40 00:02:41,977 --> 00:02:44,406 Wir sind glücklich, wenn wir doppelt so schnell faktorisieren können, 41 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. 42 00:02:49,642 --> 00:02:53,127 Also da ist RSA 1024, was man noch häufig im Internet sehen kann 43 00:02:53,127 --> 00:02:56,895 und da ist RSA 2028, was hoffentlich Ihre Bank nutzt. 44 00:02:56,895 --> 00:02:59,494 Dann sind dort zwei Zeilen mit Nummern... 45 00:02:59,494 --> 00:03:00,561 Entschuldigung 46 00:03:00,561 --> 00:03:04,226 Zwei Spalten mit Nummern, wo Sie sehen können, wie sehr die Sicherheit abgenommen hat. 47 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, 48 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. 49 00:03:14,861 --> 00:03:18,061 Also in den 80er würde nur 2 hoch 80 Operationen notwendig sein. 50 00:03:18,061 --> 00:03:19,426 Daher ist hier ein großer Rückgang vorhanden, 51 00:03:19,426 --> 00:03:20,495 von 120 Operations auf 80. 52 00:03:20,495 --> 00:03:25,348 Und es ist nicht nur eine Verringerung um 40 im Exponenten, es ist deutlich größer, 53 00:03:25,348 --> 00:03:29,661 Es reduziert diesen von 170 auf 112. 54 00:03:29,661 --> 00:03:32,615 Somit ist es nicht nur eine lineare Verringerung im Exponent. 55 00:03:32,615 --> 00:03:35,061 Es ist mehr als eine lineare Verringerung im Exponent. 56 00:03:35,061 --> 00:03:45,661 In '85, als die [unverständlich], 57 00:03:45,661 --> 00:03:52,027 hat Miller elliptic curves als Alternative zu faktorisierungsbasierten Methoden vorgeschlagen, 58 00:03:52,027 --> 00:03:56,984 da Faktorisierung und Diffie-Hellman von den Algorithmen geknackt werden. 59 00:03:57,266 --> 00:04:01,353 Miller sagte: "Nun, ich habe mir dieses neue Prinzip der elliptic curves angesehen, 60 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. 61 00:04:08,620 --> 00:04:13,653 Also können wir alle die Verbesserungen dieser Methoden ignorieren, 62 00:04:13,653 --> 00:04:20,436 die die Faktorisierung und Diffie-Hellman geschwächt haben." 63 00:04:20,436 --> 00:04:29,606 Um in elliptic curve cryptography sanft einzusteigen, haben wir hier die clock cryptography. 64 00:04:29,606 --> 00:04:32,652 Nun, hier ist Bild von einer Uhr. 65 00:04:32,652 --> 00:04:34,845 Hast du zufällig eine Uhr um sie den Menschen zu zeigen, 66 00:04:34,845 --> 00:04:37,332 falls sie nicht mehr dran gewöhnt sind, wie eine Uhr aussieht? 67 00:04:37,332 --> 00:04:38,961 Also ein rundes Ding. 68 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. 69 00:04:44,450 --> 00:04:47,400 Für Mathematiker, es ist x^2 + y^2 = 1 70 00:04:47,400 --> 00:04:49,192 Es ist etwas kaputt, deswegen sind wir zu spät. 71 00:04:49,192 --> 00:04:50,393 (schmunzeln) 72 00:04:50,393 --> 00:04:54,992 Die elliptic curves die wir Ihnen später im Vortrag zeigen, 73 00:04:54,992 --> 00:04:57,292 beinhalten nicht die Uhr. 74 00:04:57,292 --> 00:05:00,961 Die clock cryptography ist kein Beispiel für elliptic curve cryptography, 75 00:05:00,961 --> 00:05:03,228 aber sehr, sehr nah dran. 76 00:05:03,228 --> 00:05:06,560 Daher starten wir mit der clock cryptography und wenn Sie damit vertraut sind, 77 00:05:06,560 --> 00:05:11,193 machen wir eine kleine Anpassung und dann haben wir die elliptic curve cryptography. 78 00:05:11,193 --> 00:05:14,626 In Ordnung, also zum Beweis, dass ich den Kindergarten abgeschlossen habe, 79 00:05:14,626 --> 00:05:16,828 hier sind ein paar Punkte auf der Uhr. 80 00:05:16,828 --> 00:05:20,027 Dort oben ist 12 Uhr, so habe ich das gelernt. 81 00:05:20,027 --> 00:05:24,828 Nun ich bin später Mathematikerin geworden und Mathematiker arbeiten gerne mit Koordinaten. 82 00:05:24,828 --> 00:05:32,060 Also 12 Uhr hat die x-Koordinate 0 und die y-Koordinate 1. 83 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. 84 00:05:40,360 --> 00:05:41,859 x^2=0, daher y^2=1 und y=1. 85 00:05:41,859 --> 00:05:42,942 Aber es gibt viel mehr Punkte, 86 00:05:42,942 --> 00:05:44,541 also dort ist 18 Uhr. 87 00:05:44,541 --> 00:05:49,109 Dort haben Sie Frühstück, ähm Lunch. 88 00:05:49,109 --> 00:05:53,075 Das ist die 15 Uhr Marke, da ist die 21 Uhr Marke, 89 00:05:53,075 --> 00:05:55,108 da ist, ... ,oh was ist das? 90 00:05:55,108 --> 00:05:58,864 Das habe ich nicht im Kindergarten gelernt. 91 00:05:58,864 --> 00:06:03,476 So es ist, ähm, halb nach oben dann schauen, wo ist die eins, 92 00:06:03,476 --> 00:06:05,510 dann halb rüber. 93 00:06:05,510 --> 00:06:06,941 Das schaut aus, ähm, wie die 2 Uhr Marke. 94 00:06:06,941 --> 00:06:10,376 Hier wurden die Koordinaten umgedreht. 95 00:06:10,376 --> 00:06:14,676 Nun x = 1/2, also sind wir irgendwo hier drüben, 96 00:06:14,676 --> 00:06:18,143 und dann ins negative, das wäre die 5 Uhr Marke. 97 00:06:18,143 --> 00:06:20,674 Und mehr und mehr Punkte... 98 00:06:20,674 --> 00:06:22,109 Sollte es nicht sanft sein? 99 00:06:22,109 --> 00:06:25,808 Ist es nicht sanft? 100 00:06:25,808 --> 00:06:32,497 [Applaus] 101 00:06:32,497 --> 00:06:33,742 Okay, also... 102 00:06:33,742 --> 00:06:36,142 Hey, hier sind ein paar Punkte die ich noch nicht gesehen habe. 103 00:06:36,142 --> 00:06:40,309 Oh, tut mir leid, ähm, ich glaube wir wollten mehr über Punkte wie diese erzählen. 104 00:06:40,309 --> 00:06:43,676 3/5, 4/5, ich meine, hier muss man richtig komplizierte Mathematik nutzen, 105 00:06:43,676 --> 00:06:46,674 um zu sehen, dass eine Formel (3/5)^2+(4/5)^2=1 ist. 106 00:06:46,674 --> 00:06:49,909 Dies ist ein weiterer Punkt auf der Uhr und es ist nicht ersichtlich, 107 00:06:49,909 --> 00:06:51,108 wie viel Uhr es ist. 108 00:06:51,108 --> 00:06:53,142 Sie müssen wirklich intensiv auf ihre Uhr schauen um das herauszufinden. 109 00:06:53,142 --> 00:06:54,109 Immer am Aussteigen wenn es knifflig wird. 110 00:06:54,109 --> 00:06:55,109 Entschuldigung? 111 00:06:55,109 --> 00:06:56,509 Nun steigst du aus, wenn es es knifflig wird. 112 00:06:56,509 --> 00:06:58,075 Aussteigen wenn es knifflig wird? 113 00:06:58,075 --> 00:07:01,030 [Lachen] 114 00:07:01,030 --> 00:07:03,843 Okay, also willst du wirklich, dass ich das Quadrat, das halbe Quadrat, ... 115 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. 116 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. 117 00:07:12,976 --> 00:07:20,209 Sie können es auch etwas komplizierter machen in dem Sie die Uhr parametisieren. 118 00:07:20,209 --> 00:07:24,742 Also wenn Leute Punkte auf der Uhr nehmen, 119 00:07:24,742 --> 00:07:28,195 dann denken sie an eine voranschreitende Zeit. 120 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. 121 00:07:30,996 --> 00:07:33,288 Zwei Stunden nach 3 Uhr oder drei Stunden nach 2 Uhr ist 5 Uhr. 122 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. 123 00:07:38,964 --> 00:07:42,215 Also hier sind ein paar Punkte p1, p2 und p3 auf der Uhr. 124 00:07:42,215 --> 00:07:44,848 Und Sie können p1 und p2 addieren, um p3 zu erhalten. 125 00:07:44,848 --> 00:07:51,981 Hier kommt der schreckliche mathematische Teil, den wir gleich verwerfen werden - die Trigonometrie. 126 00:07:51,981 --> 00:07:59,049 Wenn Sie einen Punkt auf der Uhr haben, hat er einen Winkel von Alpha. 127 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. 128 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 ... 129 00:08:13,915 --> 00:08:16,968 Die Summe von zwei Winkeln und der Sinus von Alpha 1 plus Alpha 2 ist... 130 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. 131 00:08:21,682 --> 00:08:24,348 Etwas Ähnliches gibt es für den Cosinus. 132 00:08:24,348 --> 00:08:29,349 Sie können Punkte hinzufügen mithilfe der Sinus und Cosinus Funktionen. 133 00:08:29,349 --> 00:08:33,149 Normalerweise überreden wir die Leute, sich der Crypto-Seite zuzuwenden indem wir ihnen sagen: 134 00:08:33,149 --> 00:08:36,881 "Sie können die ganze nichtdiskrete Mathematik vergessen" 135 00:08:36,881 --> 00:08:39,381 "Wir möge diskrete Mathematik, wir sind die diskreten Typen, 136 00:08:39,381 --> 00:08:41,983 also wird es keine Sinus und Cosinus geben." 137 00:08:41,983 --> 00:08:48,510 Okay, lasst uns sie loswerden. Wir wollen keinen Sinus und Cosinus haben. 138 00:08:48,510 --> 00:08:52,202 Eigentlich würden wir gerne mit normalen Uhrzeiten arbeiten. 139 00:08:52,202 --> 00:09:01,997 Sinus 1, Cosinus 2 und so weiter sind einfach meine x- und y-Koordinaten. 140 00:09:01,997 --> 00:09:06,469 Alles, was ich hier gesagt habe, war, dass die x-Koordinate ein Sinus von Alpha ist. 141 00:09:06,473 --> 00:09:08,607 Die y-Koordinate ist der Kosinus von Alpha. 142 00:09:08,629 --> 00:09:12,358 In diesem ganzen Durcheinander mit den Trigonometrieformeln, 143 00:09:12,358 --> 00:09:17,593 kann ich einfach jeden Sinus von Alpha durch das entsprechende x ersetzen. 144 00:09:17,593 --> 00:09:19,892 Und jeder Cosinus von Alpha wird durch das entsprechende y ersetzt. 145 00:09:19,892 --> 00:09:23,691 Dadurch wird dies viel schöner und kürzer. 146 00:09:23,691 --> 00:09:27,192 Keine trigonometrische Additionsformel. Also wenn Ihnen bei der Addition auf der Uhr 147 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 148 00:09:35,326 --> 00:09:38,426 und die y-Koordinate des zweiten Punktes nehmen und diese multiplizieren. 149 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. 150 00:09:42,713 --> 00:09:44,059 Addieren sie das. 151 00:09:44,059 --> 00:09:48,112 Das gibt Sie die neue X-Koordinate. Warum? 152 00:09:48,112 --> 00:09:52,893 Wir können einfach vergessen, woher sie stammt. 153 00:09:52,893 --> 00:09:56,492 Dann machen wir dasselbe mit der Y-Koordinate. 154 00:09:56,492 --> 00:09:59,791 Sie ist das Produkt aus den Y-Koordinaten minus dem Produkt der X-Koordinaten. 155 00:09:59,791 --> 00:10:02,326 Okay. 156 00:10:02,326 --> 00:10:07,360 Hier sind einige Beispiele für die Addition von Uhrzeiten, die wir noch nicht behandelt haben. 157 00:10:07,360 --> 00:10:10,593 Wir haben keinen Computer hier, daher wird dies etwas mühsames Rechnen. 158 00:10:10,593 --> 00:10:11,592 2 Uhr plus 5 Uhr. 159 00:10:11,592 --> 00:10:13,692 Wir erinnern uns, dass dies im Test sein wird. 160 00:10:13,692 --> 00:10:16,693 2 Uhr war diese Quadratwurzel aus 3/4 und 1/2. 161 00:10:16,693 --> 00:10:17,958 Sie hat am Anfang darüber gesprochen. 162 00:10:17,958 --> 00:10:21,426 Und 5 Uhr war 1/2 und minus Quadratwurzel von 3/4. 163 00:10:21,426 --> 00:10:23,459 Wenn Sie das in die Formel einsetzen... 164 00:10:23,459 --> 00:10:24,693 Okay, ich werde es mal versuchen. 165 00:10:24,693 --> 00:10:26,493 x1 ist Quadratwurzel von 3/4. 166 00:10:26,493 --> 00:10:27,992 y1 ist 1/2. 167 00:10:27,992 --> 00:10:32,726 x2 ist 1/2 und y2 ist minus Quadratwurzel von 3/4. 168 00:10:32,726 --> 00:10:37,885 Wenn Sie x1 mit y2 multiplizieren ist, dann ist das die Quadratwurzel von 3/4 multipliziert 169 00:10:37,885 --> 00:10:40,916 mit der minus Quadratwurzel von 3/4, welche minus 3/4 ist. 170 00:10:40,916 --> 00:10:45,898 Dann müsste y1 mal x2, 1/2 mal 1/2 sein, was 1/4 ist. 171 00:10:45,898 --> 00:10:49,231 Addiert man diese, ist es ungefähr minus 1/2. 172 00:10:49,231 --> 00:10:53,251 Führt man eine ähnliche Berechnung durch, erhält man den 2. Teil des Ergebnisses. 173 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. 174 00:10:57,326 --> 00:11:00,992 Ähnliches können Sie mit 5 Uhr plus 9 Uhr machen. 175 00:11:00,992 --> 00:11:04,493 Ich denke, wir werden es überspringen. 176 00:11:04,493 --> 00:11:06,791 Versuchen wir es mit einem anderen Beispiel. 177 00:11:06,791 --> 00:11:08,833 Sie können 3/5 und 4/5 nehmen und sie addieren. 178 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. 179 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. 180 00:11:19,808 --> 00:11:24,350 Sie erhalten einfach eine Antwort, 24/25 und 7/25 181 00:11:24,350 --> 00:11:28,307 Und Sie können immer mehr Kopien, des Punktes auf den Punkt selbst hinzufügen. 182 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 183 00:11:33,173 --> 00:11:37,940 Setzen Sie ihn einfach in die Formeln ein und Sie erhalten etwas mit mehr Ziffern. 184 00:11:37,940 --> 00:11:40,874 Wenn Sie immer mehr Kopien hinzufügen, erhalten Sie immer mehr Stellen. 185 00:11:40,874 --> 00:11:44,374 Der Nenner ist nun 625 und er wird immer größer. 186 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. 187 00:11:50,641 --> 00:11:53,374 12 Uhr mit 0,1 (Koordinaten) 188 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. 189 00:11:56,807 --> 00:11:58,473 12 Uhr plus 5 Uhr ist 5 Uhr 190 00:11:58,473 --> 00:12:00,774 12 Uhr plus irgendein Wert ergibt als Ergebnis diesen Wert. 191 00:12:00,774 --> 00:12:05,575 Das ist sofort ersichtlich aus der Formel zur Addition von zwei Punkten. 192 00:12:05,575 --> 00:12:10,174 Ein letztes Beispiel dafür, wie Sie mit dieser Additionsformel arbeiten können. 193 00:12:10,174 --> 00:12:14,273 Sie nehmen beispielsweise 10 Uhr + 2 Uhr. Das sollte 12 Uhr sein. 194 00:12:14,273 --> 00:12:16,974 10 + 2 = 12. Das ist logisch. 195 00:12:16,974 --> 00:12:23,574 Das Gegenteil wäre 10 + 2, wenn man 9 + 3 oder 11 + 1 oder irgendetwas nimmt, 196 00:12:23,574 --> 00:12:26,841 was die gleiche Höhe, die gleiche Y-Koordinate hat, aber die X-Koordinate negativ ist. 197 00:12:26,841 --> 00:12:28,875 Diese ergeben zusammen 12 Uhr. 198 00:12:28,875 --> 00:12:32,764 Sie können einfach versuchen x1 und y1 und minus x1y1 in die Formel einzusetzen. 199 00:12:32,764 --> 00:12:35,308 Versuchen wir das mal: 200 00:12:35,308 --> 00:12:37,807 Angenommen, wir sagen, x2 ist minus x1 und y2 ist y1 201 00:12:37,807 --> 00:12:39,641 und setzten es in die Formel ein. 202 00:12:39,641 --> 00:12:41,308 Sie sehen die erste ähm... 203 00:12:41,308 --> 00:12:47,509 Die erste Koordinate der Antwort, welche ist: x1*y2 = y1 204 00:12:47,509 --> 00:12:54,224 Und y1= -x1*x2... ähm sorry, 205 00:12:54,224 --> 00:12:59,666 x2 ist -x1*y1. Die ergibt im Endeffekt null. 206 00:12:59,666 --> 00:13:01,848 Das ist, was wir für 12 Uhr erwartet haben. 207 00:13:01,884 --> 00:13:10,016 Nächster Teil: y1y2 = y1 mal y1 minus x1*x2, das ist 208 00:13:10,016 --> 00:13:15,149 minus x1 mal minus x1 = x1 im Quadrat, 209 00:13:15,149 --> 00:13:22,002 und x1 im Quadrat + x1 im Quadrat ist gleich 1. 210 00:13:22,002 --> 00:13:24,602 Wir können etwas herumspielen mit Additionen und Multiplikationen. 211 00:13:24,602 --> 00:13:27,834 Diese Formel können wir verwenden, um alle möglichen Punkte zu addieren. 212 00:13:27,834 --> 00:13:28,801 Okay. 213 00:13:28,801 --> 00:13:30,734 Nun wird es noch etwas diskreter. 214 00:13:30,734 --> 00:13:34,601 Wir können den Kreis vergessen der unendlich viele Punkte hat. 215 00:13:34,601 --> 00:13:37,834 Sie können jede reelle Zahl nehmen und einfach Quadratwurzeln ziehen. 216 00:13:37,834 --> 00:13:40,767 Wir machen das mit einem sehr kleinen Menge von Elementen. 217 00:13:40,767 --> 00:13:43,834 Wir machen mit Uhrzeiten über Suchfelder. 218 00:13:43,834 --> 00:13:48,802 Ich beschränke mich jetzt nur auf die Zahlen 0, 1, bis 6. 219 00:13:48,802 --> 00:13:53,001 Das ist also, wofür diese F7 steht. 220 00:13:53,001 --> 00:13:57,434 Ich will diese Zahlen addieren und multiplizieren können. 221 00:13:57,434 --> 00:14:02,569 Wenn ich 2 und 5 multipliziere, ist das ist größer als 10. 222 00:14:02,569 --> 00:14:06,435 Diese Zahl ist größer als die Menge, die ich dort zur Verfügung habe. 223 00:14:06,435 --> 00:14:09,889 Lasse ich nur 6 als größte Zahl zu, gehört 10 nicht zur Menge. 224 00:14:09,889 --> 00:14:14,001 Also werde ich das reduzieren und den Modulus 7 nehmen. 225 00:14:14,001 --> 00:14:16,855 Wir haben einige Python-Schnipsel versprochen. 226 00:14:16,855 --> 00:14:21,602 Wir erfahren nun, wir wir beispielsweise alle diese Elemente finden können. 227 00:14:21,602 --> 00:14:26,768 Wir gehen alle x zwischen 0 und 7 und y zwischen 0 und 7 durch. 228 00:14:26,768 --> 00:14:31,302 Wir überprüfen einfach, ob x mal x plus y mal y = 1 ist. 229 00:14:31,302 --> 00:14:34,935 Ist dies der Fall, drucke ich das Doppelte xy aus. 230 00:14:34,935 --> 00:14:38,369 Dann drücke ich die Eingabetaste und wir erhalten diese Punkte für das Bild. 231 00:14:38,369 --> 00:14:44,535 Wir haben keine bis 6 verwendet, wir möchten die Symmetrie beibehalten. 232 00:14:44,535 --> 00:14:51,302 Wir haben -3 bis + 3 genutzt. -3 ist hier drüber, +3 hier. 233 00:14:51,302 --> 00:14:55,069 + 3 ist in der y-Richtung und - 3 ist in der y-Richtung 234 00:14:55,069 --> 00:15:01,763 Das ist der Punkt 0,1, also derselbe Punkt, den wir vorher auf der Uhr hatten. 235 00:15:01,763 --> 00:15:03,648 Also ist dies die Uhrzeit. 236 00:15:03,648 --> 00:15:06,781 Es ist der Punkt 2,2 237 00:15:06,781 --> 00:15:09,515 Okay. 238 00:15:09,515 --> 00:15:12,415 Wir verwenden die Uhradditionsfunktion. 239 00:15:12,415 --> 00:15:18,780 Wir zeigen eine Funktion, um Punkte der Uhr hinzuzufügen. 240 00:15:18,780 --> 00:15:25,082 Es ist hilfreich, Plus und Minus bei den Uhrzeiten schreiben zu können, 241 00:15:25,082 --> 00:15:27,215 die diese Reduzierung automatisch durchführen, Mod 7. 242 00:15:27,215 --> 00:15:32,114 In Python können wir einen Plus- und Minus- und Hoch-4 und F7-Klasse einrichten. 243 00:15:32,114 --> 00:15:33,509 Diese sind getrennt, von den 244 00:15:33,509 --> 00:15:37,940 üblichen für Plus-Minus und die Multiplikationen für Ganzzahlen. 245 00:15:37,940 --> 00:15:39,076 Um dies einzurichten gehen Sie bitte wie folgt vor: 246 00:15:39,076 --> 00:15:45,908 Hier ist eine F7-Klasse, einen Integer x liest und ein F7-Element initiiert. 247 00:15:45,908 --> 00:15:52,739 Hierbei handelt es sich um die in den Integer Mod 7. 248 00:15:52,739 --> 00:15:57,218 Wenn Sie F7 von 7 nehmen, wird 7 mod 7 berechnet. 249 00:15:57,218 --> 00:16:01,417 Der Quotient ist 1 250 00:16:01,417 --> 00:16:03,249 Der Rest ist 0 251 00:16:03,249 --> 00:16:04,770 Man fügt 0 in self.int ein. 252 00:16:04,770 --> 00:16:08,270 Dieser Stir-and-Wrapper, eventuell nicht die eleganteste Möglichkeit zum Drucken von Dingen, 253 00:16:08,270 --> 00:16:11,184 gibt aus, dass alles Mod 7 ist. 254 00:16:11,184 --> 00:16:14,683 Wir drucken nur die Ganzzahl aus, die wir bei 7 erhalten. 255 00:16:14,683 --> 00:16:20,381 7 Mod 7 gibt 0 und 10 mod 7, 256 00:16:20,381 --> 00:16:22,632 war das Beispiel von Tanja eben, wo der Rest 3 ergibt. 257 00:16:22,632 --> 00:16:26,365 Und 20 mod 7, subtrahiert man 7, und subtrahiert wieder 7, erhält man eine 6. 258 00:16:26,365 --> 00:16:30,585 Man kann also in diese F7 jeden integer eingeben, den man möchte. 259 00:16:30,585 --> 00:16:32,399 Dafür nehmen wir diesen Integer-Mod7. 260 00:16:32,399 --> 00:16:37,899 Nun können wir F7 einige weitere Funktionen hinzufügen. 261 00:16:37,899 --> 00:16:41,199 Beispielsweise können Sie einen Gleichheitstest durchführen. 262 00:16:41,199 --> 00:16:43,519 Pythons default Gleichheit ist ziemlich dumm. 263 00:16:43,519 --> 00:16:46,833 Das was ich eigentlich tun möchte, ist folgendes: 264 00:16:46,833 --> 00:16:51,867 Ich möchte diese Punkte vergleichen, die den gleichen F7-Wert haben. 265 00:16:51,867 --> 00:16:53,063 Okay. 266 00:16:53,093 --> 00:16:56,708 Nun wurde dieser F7-Typ um eine Gleichheit erweitert. 267 00:16:56,708 --> 00:16:59,975 Sie können sehen, dass F7 von 10 und F7 von 3 gleich sind. 268 00:16:59,975 --> 00:17:02,874 F7 von 0 und F7 von 2 sind nicht gleich. 269 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. 270 00:17:09,294 --> 00:17:14,141 Dann folgt die Addition, Subtraktionen und Multiplikation. 271 00:17:14,141 --> 00:17:17,574 Schauen wir uns die Addition an, dann ist der typische Fall. 272 00:17:17,574 --> 00:17:20,075 Sie nehmen zwei a und b. 273 00:17:20,075 --> 00:17:23,774 Dann nehmen Sie eine Integer innerhalb einer Integerrange von 0 bis 6. 274 00:17:23,774 --> 00:17:25,774 Addieren Sie diese auf der Seite b von 0 bis 6. 275 00:17:25,774 --> 00:17:27,774 Sie erhalten 0 bis 12. 276 00:17:27,774 --> 00:17:30,475 Diese geben Sie dann wieder in den F7 Konstruktor ein. 277 00:17:30,475 --> 00:17:32,641 Sie haben jetzt wieder 0 bis 6. 278 00:17:32,641 --> 00:17:36,193 Unten sind einige Beispiele von 2 plus 5 = 0 279 00:17:36,193 --> 00:17:38,508 2 minus 5 ist -3. 280 00:17:38,508 --> 00:17:40,308 Das ist 4. 281 00:17:40,308 --> 00:17:43,441 Wenn Sie in C programmieren, achten Sie auf folgendes: 282 00:17:43,441 --> 00:17:45,742 Der Prozentwert darf den Mod nicht ausführen, den wir mathematisch wollen. 283 00:17:45,742 --> 00:17:48,975 Pythons Prozentwert macht das Richtige und C gibt negative Zahlen aus. 284 00:17:48,975 --> 00:17:51,973 Prozent in Python gibt Ihnen immer 0 bis 6. 285 00:17:51,973 --> 00:17:54,013 Oder 0 bis zu jeder Zahl, die Sie genommen haben. 286 00:17:54,013 --> 00:17:54,906 Ähm 287 00:17:54,906 --> 00:17:59,508 2 mal 5 war wieder das Beispiel von 10, wo Mod 7= 3 ergibt. 288 00:17:59,508 --> 00:18:02,442 Okay. 289 00:18:02,442 --> 00:18:04,374 Jetzt haben wir eine kleine Uhr gesehen. 290 00:18:04,374 --> 00:18:06,041 Da konnte ich einfach alle Elemente zeichnen, 291 00:18:06,041 --> 00:18:08,641 und wir konnten sie durchgehen und ausprobieren. 292 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. 293 00:18:15,241 --> 00:18:17,775 Sagen wir mal 1.000.003, das ist auch eine Primzahl. 294 00:18:17,775 --> 00:18:21,708 Ich gehe hin und definiere eine Addition von Kurvenpunkten. 295 00:18:21,708 --> 00:18:26,075 Das ist genau das, was wir vorhin auf der echten Uhr gemacht haben. 296 00:18:26,075 --> 00:18:30,041 Nun werde ich die Elemente 1.000.003 einfügen. 297 00:18:30,041 --> 00:18:36,240 Ich nehme also meine Punkte und mache x1y2, y1x2 und so weiter. 298 00:18:36,240 --> 00:18:38,207 Dann bekomme ich den Punkt zurück. 299 00:18:38,207 --> 00:18:41,374 Wir machen nun ein Beispiel dazu. 300 00:18:41,374 --> 00:18:45,840 Einer der vielen Punkte, die ich in die x-Koordinate einfüge ist 1000. 301 00:18:45,840 --> 00:18:49,106 Denken Sie daran, dass es aus 1000 aus 1.000.003 ist. 302 00:18:49,106 --> 00:18:53,574 Anschließend überprüfe ich, ob es eine y-Koordinate gibt und dazu passt. 303 00:18:53,574 --> 00:18:56,640 Ja, gibt es grob. 304 00:18:56,640 --> 00:19:03,307 Habe ich also 1000, erhalte ich eine Million im Quadrat und 2 ergibt 4. 305 00:19:03,307 --> 00:19:06,307 Das ist nur 1 größer als die 1.000.003. 306 00:19:06,307 --> 00:19:07,939 Ja, das ist also ein gültiger Punkt. 307 00:19:07,939 --> 00:19:12,108 Jetzt kann ich diesen Punkt übernehmen und addiere ihn zu sich selbst. 308 00:19:12,108 --> 00:19:17,358 Ich setzt einfach p und p in die Addition ein, die 4007 ergibt. 309 00:19:17,358 --> 00:19:25,294 Ich kann es immer und immer wieder zu sich selbst addieren. 310 00:19:25,294 --> 00:19:29,986 Ich addiere immer weiter bis ich am Ende 6 Kopien habe. 311 00:19:30,016 --> 00:19:32,602 Ich füge sie zusammen und habe nun diesen Punkt. 312 00:19:32,602 --> 00:19:35,669 Wenn Sie das sehen, denken Sie natürlich: Warte mal. 313 00:19:35,669 --> 00:19:38,402 Muss ich tatsächlich alle diese 5 Additionen machen? 314 00:19:38,402 --> 00:19:38,837 Nein. 315 00:19:38,837 --> 00:19:41,944 Wenn ich beispielsweise bei p3 aufgehört hätte. 316 00:19:41,944 --> 00:19:47,791 Das ist dreimal der Punkt und addiere dann p3 plus p3 317 00:19:47,791 --> 00:19:51,757 Das sind also 3 Kopien plus weitere 3 Kopien, sind auch 6 Kopien. 318 00:19:51,757 --> 00:19:54,358 Diese beiden Dinge haben das gleich Ergebnis. 319 00:19:54,358 --> 00:19:59,057 Möchte ich das also professioneller machen, 320 00:19:59,057 --> 00:20:02,123 ist hier die Modifikation der Scale. 321 00:20:02,123 --> 00:20:02,890 Okay 322 00:20:02,890 --> 00:20:07,091 Das ist eine rekursive Funktion zur Berechnung von n mal p. 323 00:20:07,091 --> 00:20:10,191 Sie haben einen beliebigen Punkt auf der Uhr p in einem beliebigen Skalar, 324 00:20:10,191 --> 00:20:17,537 Jeden nicht negativen Integer n, den Sie möchten. 325 00:20:17,537 --> 00:20:18,540 Wenn n 0 ist, 326 00:20:18,540 --> 00:20:20,506 dann geben Sie den 12-Uhr-Punkt zurück. 327 00:20:20,506 --> 00:20:22,721 Wenn n = 1 ist, geben Sie den Punkt p einmal zurück, 328 00:20:22,721 --> 00:20:24,156 also p ist p. 329 00:20:24,156 --> 00:20:28,474 Und dann, wenn n gerade ist, dann ändert der Python seine Notation im Laufe leicht. 330 00:20:28,474 --> 00:20:34,286 n // 2 ist der richtige Weg, um eine durch 2 geteilte Integer nehmen. 331 00:20:34,286 --> 00:20:36,551 Und den Rest wegzuwerfen. 332 00:20:36,551 --> 00:20:39,883 So ist n // 2, gerade bei n^2. 333 00:20:39,883 --> 00:20:43,384 Wenn n*2 ist wird rekursiv n mal p berechnet. 334 00:20:43,384 --> 00:20:46,084 Wie zum Beispiel 3 mal p, wenn n gleich 6 ist. 335 00:20:46,084 --> 00:20:51,327 Dann kommt bei (Q,Q) heraus, das n^2 mal p zu verdoppeln. 336 00:20:51,327 --> 00:20:56,895 Man erhält np, wenn n ungerade ist. 337 00:20:56,895 --> 00:20:58,761 Dann ist das n über 2 . 338 00:20:58,761 --> 00:21:01,128 Anschließend nehmen Sie das dann mal p. 339 00:21:01,128 --> 00:21:05,118 Verdoppeln sie das, was n minus 1 mal p ergibt. 340 00:21:05,118 --> 00:21:06,394 Addieren Sie p dazu. 341 00:21:06,394 --> 00:21:10,484 Das heißt, wenn n mod 2 ungleich Null ist, dann addieren Sie p zu q. 342 00:21:10,484 --> 00:21:13,081 Schließlich erhalten Sie n mal p in allen unterschiedlichen Fällen. 343 00:21:13,081 --> 00:21:17,081 Anschließend haben wir für das eine 6stellige Zahl n versucht. 344 00:21:17,081 --> 00:21:18,748 Das wird hier auf der Folie nicht gezeigt. 345 00:21:18,748 --> 00:21:24,114 Es ist geheim und es waren etwa 30 Uhrzeit-Additionen erforderlich. 346 00:21:24,114 --> 00:21:27,281 Das waren nicht sehr viele Multiplikationen, um n mal p zu berechnen. 347 00:21:27,281 --> 00:21:28,348 Das ging sehr schnell. 348 00:21:28,348 --> 00:21:30,248 Es kommt sofort heraus und das ist die Antwort. 349 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. 350 00:21:34,045 --> 00:21:39,246 Nun ist es nicht mehr so offensichtlich, wie man herausfinden kann, was n ist. 351 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. 352 00:21:43,345 --> 00:21:45,360 Sie wissen was n mal p ist. 353 00:21:45,400 --> 00:21:46,850 Sie wissen, dass n nicht zu groß ist. 354 00:21:46,900 --> 00:21:47,850 Okay 355 00:21:47,850 --> 00:21:49,516 Es gibt nur eine Million Möglichkeiten. 356 00:21:49,516 --> 00:21:50,917 Das ist keine wirklich ausgefallene Berechnung. 357 00:21:50,917 --> 00:21:52,850 Es wird allerdings einen Moment dauern, bis es erledigt ist. 358 00:21:52,850 --> 00:21:57,072 Es ist etwas, bei dem der Computer einiges rechnen muss. 359 00:21:57,072 --> 00:21:58,883 Sie können nun vielleicht versuchen, das schneller zu machen. 360 00:21:58,883 --> 00:22:00,784 Allerdings könnten wir dann versuchen, die Zahlen größer zu machen. 361 00:22:00,784 --> 00:22:03,585 Statt 1.000.003 könnten wir immer noch n mal p machen. 362 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. 363 00:22:06,918 --> 00:22:08,717 Hier gibt es also eine kleine Herausforderung. 364 00:22:08,717 --> 00:22:10,851 Sie können nun versuchen herauszufinden, was dieses n ist. 365 00:22:10,851 --> 00:22:14,817 Dies ist schwieriger, als eine SMS an die Telefonnummer zu senden, die gerade nicht funktioniert. 366 00:22:14,817 --> 00:22:17,651 Ooh! ... Gemurmel 367 00:22:17,651 --> 00:22:21,218 Nehmen wir also an, wir machen es viel schwieriger. 368 00:22:21,218 --> 00:22:22,584 Wir machen es sehr schwierig. 369 00:22:22,584 --> 00:22:24,251 Wir haben das Gefühl, dass Sie es für Kryptographie verwenden möchten. 370 00:22:24,251 --> 00:22:27,516 Jemand möchte die Uhrzeit-Kryptographie standardisieren . 371 00:22:27,516 --> 00:22:31,184 Dann beginnen Sie mit der Standardisierung einer großen Primzahl p. 372 00:22:31,184 --> 00:22:33,950 Große Zahl, also keine Million. 373 00:22:33,950 --> 00:22:36,584 So groß mit mehreren Tausend Bits. 374 00:22:36,584 --> 00:22:38,817 Sie können auch folgendes machen: 375 00:22:38,817 --> 00:22:39,884 Sie standardisieren einen Basispunkt. 376 00:22:39,884 --> 00:22:41,418 Diese p auf der vorherigen Folie bedeutet: 377 00:22:41,418 --> 00:22:44,252 Wir geben Ihnen p, wir geben Ihnen n-mal p. 378 00:22:44,252 --> 00:22:45,585 Wir geben Ihnen einfach kein n. 379 00:22:45,585 --> 00:22:48,884 Wir nehmen an, dass Ihnen jemand ein kleines p gibt, das die Primzahl ist. 380 00:22:48,884 --> 00:22:53,650 Dieser Basispunkt P, x- und y-Koordinaten , die auf der Uhr stehen. 381 00:22:53,650 --> 00:22:57,184 Was machen Alice und Bob, wenn sie kommunizieren wollen? 382 00:22:57,184 --> 00:23:00,600 Ich würde gerne etwa an den Bob schicken. 383 00:23:00,600 --> 00:23:01,585 "Ich bin Bob". 384 00:23:01,585 --> 00:23:04,552 Dann wählt Alice, bzw. ich aus: 385 00:23:04,552 --> 00:23:05,683 Mein Geheimnis, a. 386 00:23:05,683 --> 00:23:08,150 Berechne a mal diesen Basispunkt. 387 00:23:08,150 --> 00:23:10,783 Dies ist die Berechnung, die du gerade auf der vorigen Folie gesehen hast. 388 00:23:10,783 --> 00:23:12,183 Sie ist immer noch sichtbar. 389 00:23:12,183 --> 00:23:15,585 Dies ist also genau wie eine logarithmische Zeit von der Größe a. 390 00:23:15,585 --> 00:23:19,466 Anschließend sende ich das an Dan. 391 00:23:19,466 --> 00:23:22,432 Dann denke ich, ich muss etwas berechnen. 392 00:23:22,432 --> 00:23:24,632 Ich nehme mein eigenes großes Geheimnis b, das ich niemandem verraten werde. 393 00:23:24,632 --> 00:23:28,331 Dann berechne ich b mal das gleiche Standard (X,Y) 394 00:23:28,331 --> 00:23:30,732 Ich sende mein b-mal (X,Y) an Alice zurück. 395 00:23:30,732 --> 00:23:32,132 Alles klar. 396 00:23:32,132 --> 00:23:34,966 Jetzt habe ich also sein b mal den Basispunkt. 397 00:23:34,966 --> 00:23:36,834 Er hat mein a mal Basispunkt. 398 00:23:36,834 --> 00:23:39,032 Ich weiß jetzt noch, was mein a war. 399 00:23:39,032 --> 00:23:44,566 Ich nehme nun dieses a und den neuen Punkt, den er mir gerade gesendet hat. 400 00:23:44,566 --> 00:23:47,265 Dann setze ich diesen Punkt in die Skarlarmultiplikation ein. 401 00:23:47,265 --> 00:23:51,765 Ich mache die gleichen Schritte, addiere den Punkt zu sich selbst. 402 00:23:51,765 --> 00:23:54,998 Und den Punkt zu dem Punkt, den er mir geschickt hat. 403 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. 404 00:23:59,066 --> 00:24:00,732 Es ist nicht mehr der Basispunkt. 405 00:24:00,732 --> 00:24:03,900 Auf diese Art und Weise berechne ich a mal b mal p. 406 00:24:03,900 --> 00:24:06,200 Okay. 407 00:24:06,200 --> 00:24:08,653 Nun bekomme ich ihr a mal (X,Y). 408 00:24:08,653 --> 00:24:12,066 Ich nehme mein geheimes b und multipliziere es mit dem a mal (X,Y). 409 00:24:12,066 --> 00:24:15,600 Nun bekomme ich mein b mal a mal den Punkt (X,Y). 410 00:24:15,600 --> 00:24:19,566 Ich habe das gleiche Ergebnis erhalten. 411 00:24:19,566 --> 00:24:23,300 Nun hat sie a* b mal (X,Y) berechnet. 412 00:24:23,300 --> 00:24:24,799 Ich habe b*a mal (X,Y) berechnet. 413 00:24:24,799 --> 00:24:25,934 Das ist dasselbe. 414 00:24:25,934 --> 00:24:28,587 Sie sind beide a mal b Vielfache von (X,Y). 415 00:24:28,587 --> 00:24:30,665 Wir addieren a mal b Kopien von (X,Y). 416 00:24:30,665 --> 00:24:33,719 Nun verwenden wir das geteilte Geheimnis zum Verschlüsseln von Daten. 417 00:24:33,719 --> 00:24:34,853 In Ordnung. 418 00:24:34,853 --> 00:24:36,006 Wir haben auch ein Bild davon. 419 00:24:36,006 --> 00:24:37,853 Auch wenn wir nichts anderes machen. 420 00:24:37,853 --> 00:24:40,486 Und Bob, hier sehen Sie, wie die Nachricht jetzt verbreitet wird. 421 00:24:40,486 --> 00:24:43,653 Sollten Sie der Lauscher sein, wollen Sie herausfinden, was wir haben. 422 00:24:43,653 --> 00:24:46,721 Du kannst nicht sehen, was ich hier mache. 423 00:24:46,721 --> 00:24:48,486 Du kannst nicht sehen, was Dan hier macht. 424 00:24:48,486 --> 00:24:50,721 Du kannst nur sehen, was hierher gesendet wird. 425 00:24:50,721 --> 00:24:54,020 Du weißt, was das kleine p ist und was der Basispunkt ist. 426 00:24:54,020 --> 00:24:58,148 Zumindest ist das ist das, was wir uns wünschen. 427 00:24:58,148 --> 00:24:59,981 Nun gibt es aber einige Vorbehalte: 428 00:24:59,981 --> 00:25:03,914 Verwenden Sie nicht einfach irgendein Primzahl-p. 429 00:25:03,914 --> 00:25:06,247 Viele Auswahlmöglichkeiten von p sind unsicher. 430 00:25:06,247 --> 00:25:07,681 Warnung 2! 431 00:25:07,681 --> 00:25:11,366 Dies ist immer noch die Uhr. 432 00:25:11,366 --> 00:25:13,415 Und wir haben am Anfang gesagt, dass Uhren keine elliptischen Kurven sind. 433 00:25:13,415 --> 00:25:14,814 Nur elliptische Kurven sind gut. 434 00:25:14,814 --> 00:25:16,748 Demnach sind die Uhren eigentlich eigentlich fast das 435 00:25:16,748 --> 00:25:19,434 Gleiche wie "RSA" oder "Finde das Feld". 436 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. 437 00:25:28,315 --> 00:25:33,081 Die Uhr muss 1536 haben, also halb so viele Bits wie RSA Zahlen. 438 00:25:33,081 --> 00:25:35,115 Das ist nicht das, was Sie tatsächlich möchten. 439 00:25:35,115 --> 00:25:39,548 Okay. 440 00:25:39,548 --> 00:25:42,201 Dritte Warnung: Timing-Angriffe 441 00:25:42,201 --> 00:25:47,681 Eben haben viele von Ihnen über Bleichenbacher-Angriffe gegen SSL gesprochen. 442 00:25:47,681 --> 00:25:54,381 Viele der Informationen von einem angegriffenen Server oder Client stammen vom Timing. 443 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. 444 00:26:00,481 --> 00:26:04,303 Er sieht auch, wie lange Sie für Berechnungen gebraucht haben. 445 00:26:04,303 --> 00:26:07,281 Der Angreifer kann sogar oft sehen, 446 00:26:07,281 --> 00:26:10,815 wie lange Sie für jeden einzelnen Vorgang gebraucht haben. 447 00:26:10,815 --> 00:26:14,282 Die funktioniert, weil es elektromagnetische Emissionen oder Funkemissionen 448 00:26:14,282 --> 00:26:17,748 oder Cache-Effekte auf virtuellen Maschinen gibt. 449 00:26:17,748 --> 00:26:21,649 Diese wirken sich auf andere virtuelle Maschinen aus, die unter demselben Hypervisor 450 00:26:21,649 --> 00:26:23,014 auf derselben physischen Hardware ausgeführt werden. 451 00:26:23,014 --> 00:26:27,849 Sie können dann als Angreifer auf Informationen zugreifen, 452 00:26:27,849 --> 00:26:30,182 wie lange Alice und Bob brauchen. 453 00:26:30,182 --> 00:26:32,749 Sie sehen diese Berechnung nicht wirklich, 454 00:26:32,749 --> 00:26:35,482 aber Sie sehen die physikalischen Auswirkungen dieser Berechnung. 455 00:26:35,482 --> 00:26:37,704 Stellen Sie sich einfach vor, Eves Ohr ist genau hier. 456 00:26:37,704 --> 00:26:42,699 Sie kann hören und sie kann spüren, was die Berechnungen bewirken. 457 00:26:42,699 --> 00:26:46,072 Tatsächliche können Sie das akustische Summen von Ihrer CPU hören, 458 00:26:46,072 --> 00:26:47,737 sofern Sie ein ausreichend gutes Mikrofon daneben platzieren. 459 00:26:47,737 --> 00:26:49,738 Dies hängt auch von den Berechnungen ab, die es ausführt. 460 00:26:49,738 --> 00:26:52,104 Es gibt hier einige echte Beispiele für Timing-Angriffe. 461 00:26:52,104 --> 00:26:56,071 2 von den 3 ausgewählten Beispielen sind ECC Beispiele. 462 00:26:56,071 --> 00:26:58,505 Ein Beispiel davon ist der Lucky-13-Angriff. 463 00:26:58,505 --> 00:27:01,803 Das war nicht gegen ECC. Das ist eine andere Art von Timing-Angriff. 464 00:27:01,803 --> 00:27:04,702 Wir wollen Ihnen die Vorstellung vermitteln, dass Timing-Angriffe wirklich wichtig sind. 465 00:27:04,702 --> 00:27:07,854 Dies ist ein Großteil dessen, was bei echten Kryptographie schief läuft. 466 00:27:07,854 --> 00:27:09,555 Abgesehen von deren Unbrauchbarkeit und anderen kleinen Problemen. 467 00:27:09,555 --> 00:27:11,154 Ähm. 468 00:27:11,154 --> 00:27:18,008 Die Lösung für dieses spezielle Problem und das Timing zu sehen ist folgendes: 469 00:27:18,008 --> 00:27:21,855 Die Berechnungen müssen immer in konstanter Zeit durchgeführt werden. 470 00:27:21,855 --> 00:27:24,321 Abhängig von Ihrem Skalar, 471 00:27:24,321 --> 00:27:27,333 dürfen Sie nicht unterschiedlich viel Zeit aufwenden. 472 00:27:27,333 --> 00:27:33,741 Wenn Sie einfach immer dieser Regel folgen, haben Sie bei jedem Geheimnis bei geheimes Timing mehr. 473 00:27:33,848 --> 00:27:35,797 Der Angreifer erhält nichts. 474 00:27:35,797 --> 00:27:37,297 Ihr gesamtes Timing ist öffentlich. 475 00:27:37,297 --> 00:27:40,485 Selbstverständlich ist es etwas mühsam, so Berechnungen durchzuführen. 476 00:27:40,485 --> 00:27:42,731 Auf diese Weise können Sie es immer tun, aber es verlangsamt die Dinge sehr. 477 00:27:42,731 --> 00:27:45,530 Ich denke, das ist leichter gesagt als getan. 478 00:27:45,530 --> 00:27:50,330 Lasst uns zurück zu Warnung Nr. 2 gehen. 479 00:27:50,330 --> 00:27:54,158 Wir nehmen an, dass konstante Zeit für Berechnungen sich um Warnung Nr. 3 kümmert. 480 00:27:54,190 --> 00:27:55,424 Wir gehen zurück zu Warnung Nr. 2. 481 00:27:55,424 --> 00:27:57,091 Uhren sind nicht elliptisch. 482 00:27:57,091 --> 00:28:00,724 Lasst uns diesen Kreis, diese Uhr, in eine elliptische Kurve verwandeln. 483 00:28:00,724 --> 00:28:05,557 Wir nehmen also den Kreis und drücken ihn nach innen. 484 00:28:05,557 --> 00:28:09,323 Mathematisch führen wir nun einen zusätzlichen Term ein, 485 00:28:09,323 --> 00:28:12,057 statt dass x zum Quadrat plus y zum Quadrat = 1 ist. 486 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. 487 00:28:18,335 --> 00:28:26,335 Also ist dieser zusätzliche Term hier die Differenz zwischen einem Kreis und einer Edwards-Kurve. 488 00:28:26,335 --> 00:28:28,435 Oder eine elliptische Kurve. 489 00:28:28,435 --> 00:28:30,703 Diese bestimmte Kurve wird also eine Edwards-Kurve genannt. 490 00:28:30,703 --> 00:28:33,403 Aber es ist ein Beispiel für elliptische Kurven. 491 00:28:33,403 --> 00:28:36,637 Ich möchte nun Punkte hinzufügen. 492 00:28:36,637 --> 00:28:39,303 Wir erinnern uns daran, wie es auf dem Kreis aussah. 493 00:28:39,303 --> 00:28:43,435 Auf dem Kreis hatte ich den neutralen Betrag oben. 494 00:28:43,435 --> 00:28:44,657 Ich behalte das bei. 495 00:28:44,657 --> 00:28:47,935 Sodass das Hinzufügen von irgendetwas zur 12-Uhr-Position nicht an dem Wert ändert . 496 00:28:47,935 --> 00:28:50,169 Der Wert ist hier immer noch derselbe. 497 00:28:50,169 --> 00:28:56,469 Ich habe hier nur p1, p2 und p3 durch diese Formeln hinzugefügt. 498 00:28:56,469 --> 00:29:00,502 Nun funktionieren diese normalerweise nicht auf der elliptischen Kurve. 499 00:29:00,502 --> 00:29:06,302 Der Grund ist, da es dieses - 30 x^2 * y^2 gibt. 500 00:29:06,302 --> 00:29:08,803 Daher müssen wir auch hier unten eine kleine Anpassung vornehmen. 501 00:29:08,803 --> 00:29:10,570 Daher gibt es nun einen Nenner. 502 00:29:10,570 --> 00:29:17,570 Nehmen Sie d = 0 an, dann ändert sich die Formel in den Kreis 503 00:29:17,570 --> 00:29:23,269 Auch in die Additionsformeln ändern den Kreis, denn diese 30 hier ist eine Null. 504 00:29:23,269 --> 00:29:24,870 Sie wird also einfach durch 1 geteilt. 505 00:29:24,870 --> 00:29:28,836 Der Kreis kommt als Sonderfall für diese elliptische Kurve heraus. 506 00:29:28,836 --> 00:29:32,735 Nun nehmen wir minus 30 und haben eine schöne elliptische Kurve. 507 00:29:32,735 --> 00:29:38,135 Die Additionsformeln sind nicht viel schlimmer. Sie sind nur ein kleiner zusätzlicher Term. 508 00:29:38,135 --> 00:29:41,236 Okay 509 00:29:41,236 --> 00:29:46,803 Sie können, wenn Sie eine Primzahl p haben, 7.000.003, 510 00:29:46,803 --> 00:29:48,337 irgendetwas viel größeres nehmen. 511 00:29:48,337 --> 00:29:53,803 Sie können jedes nichtquadratische d nehmen, wie minus 30, 512 00:29:53,803 --> 00:29:58,102 jedes d, das kein Quadrat von irgendetwas Modulo p. 513 00:29:58,102 --> 00:30:00,410 Dies ist etwas, das Sie schnell überprüfen können. 514 00:30:00,410 --> 00:30:03,168 Dann können Sie folgendes aufschreiben: 515 00:30:03,168 --> 00:30:05,404 Die Kurve mit x^2y^2 = 1 plus d. 516 00:30:05,404 --> 00:30:08,503 Das ist eine elliptische Kurve. 517 00:30:08,503 --> 00:30:13,441 Und es ist nur das zusätzliche d als zusätzliche Komplikation. 518 00:30:13,441 --> 00:30:15,169 Wenn Sie clock cryptography verstanden haben, 519 00:30:15,169 --> 00:30:17,836 dann ist diese zusätzliche kleine Komplikation alles, 520 00:30:17,836 --> 00:30:20,836 was Sie für die Elliptische-Kurven-Kryptographie benötigen. 521 00:30:20,836 --> 00:30:24,668 Es gib die Additionsformel, die gerade aus den mathematischen Formeln 522 00:30:24,668 --> 00:30:26,703 aus vorangegangenen Folien übersetzt wurde. 523 00:30:26,703 --> 00:30:28,335 Sie sieht fast genauso aus, wie zuvor. 524 00:30:28,335 --> 00:30:32,568 Außer, dass bei x3 und y3 das d an der Stelle des Nenner haben. 525 00:30:32,568 --> 00:30:35,368 Nun könnten Sie sich über dieses Aussage beklagen. 526 00:30:35,368 --> 00:30:37,668 Warten Sie eine Minute, bevor Sie dividieren. 527 00:30:37,668 --> 00:30:40,170 Sind Sie überhaupt in der Lage zu dividieren? 528 00:30:40,170 --> 00:30:42,235 Was passiert, wenn Sie durch Null dividieren? 529 00:30:42,235 --> 00:30:43,969 Vielleicht funktionieren diese Formeln nicht immer. 530 00:30:43,969 --> 00:30:46,970 Das ist ein wichtiger Punkt, auf den Sie achten müssen. 531 00:30:46,970 --> 00:30:51,334 Achten Sie daraus, dass Sie, wenn Sie durch etwas dividieren, nicht durch Null dividieren dürfen. 532 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 533 00:31:02,989 --> 00:31:04,350 niemals gleich 0 sind. 534 00:31:04,350 --> 00:31:06,598 Diese Formeln sind vollständig. 535 00:31:06,598 --> 00:31:08,104 Sie funktionieren immer. 536 00:31:08,104 --> 00:31:11,492 Ich denke, dass Sie annehmen, dass Formeln immer funktionieren sollten. 537 00:31:11,492 --> 00:31:12,389 Es ist ganz ärgerlich, wenn es Ausnahmefälle gibt. 538 00:31:12,389 --> 00:31:18,121 Aber in der Kryptographie mit elliptischen Kurven gibt es so viele Ausnahmefälle. 539 00:31:18,121 --> 00:31:20,198 Die Menschen machen sich oft Sorgen. 540 00:31:20,198 --> 00:31:24,159 Einer der Gründe, warum wir diese diese Art von elliptischer Kurve mögen, 541 00:31:24,207 --> 00:31:25,858 ist, dass es keine Ausnahmefälle gibt. 542 00:31:25,858 --> 00:31:28,244 Wir bezeichnen das Additionsgesetz als vollständig. 543 00:31:28,244 --> 00:31:34,923 Falls Sie sich ansehen, wie der mathematische Teil des Beweises funktioniert, ist folgendes wichtig: 544 00:31:34,923 --> 00:31:38,411 d war kein Quadrat. Aber auch das ist etwas, das Sie leicht überprüfen können. 545 00:31:38,411 --> 00:31:41,092 Und haben Sie sich erst einmal für ein d entschieden, das nicht quadratisch ist 546 00:31:41,092 --> 00:31:43,924 und das jeder verwenden kann, wird es in den Formeln nie Ausnahmen geben. 547 00:31:43,924 --> 00:31:52,257 Wenn Ihr d - äh - quadratisch ist, dann können Sie sich die gleichen Formeln aufschreiben. 548 00:31:52,257 --> 00:31:56,098 Meistens funktionieren sie, aber es gibt Ausnahmefälle. 549 00:31:56,098 --> 00:31:59,063 Und wir werden noch viel mehr über Ausnahmefälle erfahren. 550 00:31:59,063 --> 00:32:02,962 Und das Ärgerliche daran ist nicht nur, dass sie schwer zu programmieren sind. 551 00:32:02,962 --> 00:32:05,863 Sondern, wenn man irgendwelche Fehler macht, wird es schwierig sein, 552 00:32:05,863 --> 00:32:07,797 diese Fehler zu finden und auf diese Fehler zu testen. 553 00:32:07,797 --> 00:32:10,163 Und wenn ein Angreifer mehr darüber nachdenkt 554 00:32:10,163 --> 00:32:15,033 und ihnen einige Punkte findet, die diese Fehler ausnutzen, bricht das oft echtes ECC. 555 00:32:15,033 --> 00:32:18,830 Es ist also besser, eine Kurve zu nehmen, wo das d kein Quadrat ist. 556 00:32:18,830 --> 00:32:20,763 Dann müssen Sie sich überhaupt keine Sorgen mehr darüber machen. 557 00:32:20,763 --> 00:32:21,063 Okay. 558 00:32:21,063 --> 00:32:23,497 Kurz dazwischen... (schwer verständlich) 559 00:32:23,497 --> 00:32:25,730 Mit über einem finalen Feld (?) jedes zweite d ist kein quadratisches. 560 00:32:25,730 --> 00:32:26,800 Daher ist dies keine große Einschränkung. 561 00:32:26,800 --> 00:32:29,464 Und entfernt nur die Hälfte der Möglichkeiten. 562 00:32:29,464 --> 00:32:32,930 Weiterhin sind Divisionen wirklich langsam. 563 00:32:32,930 --> 00:32:37,664 Wenn Sie die implementieren, die Sie vorher im Python-Skript gesehen haben, 564 00:32:37,664 --> 00:32:39,996 haben wir noch nicht mal Divisionen eingefügt. 565 00:32:39,996 --> 00:32:43,130 Wir haben Sie online, aber es ist so, dass es eine Weile dauert. 566 00:32:43,130 --> 00:32:44,163 Es ist unangenehm. 567 00:32:44,163 --> 00:32:47,130 Es dauert sogar noch länger, wenn Sie sich Sorgen über ständige Zeitbeschränkungen machen. 568 00:32:47,130 --> 00:32:48,830 Also fangen wir an Divisionen loszuwerden. 569 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". 570 00:32:52,264 --> 00:32:57,085 Aber mathematisch, hier können wir die Verwendung von Divisionen vermeiden. 571 00:32:57,085 --> 00:33:02,019 Wenn Sie sich daran erinnern, wie Sie mit Brüchen a/b + c/d gearbeitet haben, 572 00:33:02,019 --> 00:33:03,551 dann wissen sie, dass wir sie als Brüche behalten. 573 00:33:03,551 --> 00:33:05,695 Bei einem Bruch multiplizieren Sie einfach die Nenner und 574 00:33:05,695 --> 00:33:07,494 kreuzmuliplizieren die Zähler und dann können sie addieren. 575 00:33:07,494 --> 00:33:10,494 Daher machen wir mit unseren Punkten das Gleiche. 576 00:33:10,494 --> 00:33:15,260 Wir führen eine zusätzliche Koordinate ein, die Z-Koordinate. 577 00:33:15,260 --> 00:33:16,828 Sie ist nur der Nenner. 578 00:33:16,828 --> 00:33:21,628 Anstatt Punkte als (X,Y) zu speichern, speichern wir jetzt (X,Y,Z). 579 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. 580 00:33:29,960 --> 00:33:32,028 Sie können aber auch etwas abenteuerlustiger sein. 581 00:33:32,028 --> 00:33:34,961 Und erzielen dann eine bessere Geschwindigkeit, 582 00:33:34,961 --> 00:33:37,526 wenn Sie eine zusätzliche Koordinate namens t einführen. 583 00:33:37,526 --> 00:33:39,162 T = XY / Z 584 00:33:39,162 --> 00:33:41,628 Sind Sie daran interessiert, wie sie das effizient tun 585 00:33:41,628 --> 00:33:43,895 und tatsächlich computerverifizierte Formeln erhalten? 586 00:33:43,895 --> 00:33:46,762 Dann besuchen Sie bitte die "Explicit Formulas Database" unter dem dortigen Link, 587 00:33:46,762 --> 00:33:49,195 um zu sehen wie man Additionen durchführt. 588 00:33:49,195 --> 00:33:51,360 Okay. 589 00:33:51,360 --> 00:33:56,262 Wir kommen nun zu der Darstellung von Crypto zurück. 590 00:33:56,262 --> 00:33:59,061 Wir ersetzen die Uhr durch eine elliptische Kurve. 591 00:33:59,061 --> 00:34:02,183 Das macht die Formeln etwas komplizierter. 592 00:34:02,183 --> 00:34:04,062 Außerdem muss noch eine zusätzliche Auswahl getroffen werden. 593 00:34:04,062 --> 00:34:07,294 Nicht nur die Primzahl p ist standardisiert, sodass jeder sie verwenden kann. 594 00:34:07,294 --> 00:34:10,161 Standardisieren Sie dieses d, das kein Quadrat ist, 595 00:34:10,161 --> 00:34:12,429 sodass jeder sie verwenden kann. 596 00:34:12,429 --> 00:34:14,361 Es muss eine sichere Wahl sein. 597 00:34:14,361 --> 00:34:15,729 Denken Sie an die Warnung Nr. 1 598 00:34:15,729 --> 00:34:17,216 Es gibt viele unsichere Entscheidungen. 599 00:34:17,216 --> 00:34:18,763 Es gibt viele mögliche Standardkriterien. 600 00:34:18,763 --> 00:34:20,696 Diese müssen überprüft werden, um sicherzustellen, 601 00:34:20,696 --> 00:34:22,527 dass es sich um sichere Entscheidungen für Kurven handelt. 602 00:34:22,527 --> 00:34:24,894 Am Ende des Vortrags werden mehr über Standards sagen. 603 00:34:24,894 --> 00:34:35,095 Alice hat dann wie vorher ihren geheimen Schlüssel und multipliziert diesen mit x, y und 604 00:34:35,095 --> 00:34:35,861 Oh 605 00:34:35,861 --> 00:34:37,495 Ich überspringe, was auf dieser Folie steht. 606 00:34:37,495 --> 00:34:42,262 Auf dieser Folie steht Alice auch Bobs öffentlicher Schlüssel b(x,y) besitzt. 607 00:34:42,262 --> 00:34:44,828 Das hört sich alles so an, wie bei der Uhr. 608 00:34:44,828 --> 00:34:47,816 Alice nimmt jetzt das b(x,y) und 609 00:34:47,816 --> 00:34:50,728 multipliziert es mit a. 610 00:34:50,728 --> 00:34:53,430 Das ergibt a(b(x,y)). 611 00:34:53,430 --> 00:34:56,029 Sie merkt sich dann, 612 00:34:56,029 --> 00:34:59,495 dass a(b(x,y)) das Geheimnis zum Verschlüsseln und Authentifizieren von Daten ist. 613 00:34:59,495 --> 00:35:02,862 Da wir jetzt elliptische Kurven haben, 614 00:35:02,862 --> 00:35:06,562 müssen wir uns keine Sorgen mehr darüber machen, dass eine Indexrechnung alles kaputt macht. 615 00:35:06,562 --> 00:35:08,128 Wir brauchen keine Tausenden von Bits. 616 00:35:08,128 --> 00:35:12,063 Hier sind nun einige tatsächliche reale Größen für elliptische Kurven Kryptographie. 617 00:35:12,063 --> 00:35:14,729 Inklusive ist die gesamte und secret key encryption 618 00:35:14,729 --> 00:35:16,095 und Authentifizierung des öffentlichen Schlüssels. 619 00:35:16,095 --> 00:35:20,027 Sie können eine Primzahl haben, die nur 256 Bit groß ist. 620 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. 621 00:35:26,775 --> 00:35:32,783 Das reduziert dann den öffentlichen Schlüssel von Alice a(x,y) um ein Vielfaches. 622 00:35:32,783 --> 00:35:35,073 a(x,y) wird auf nur 32 Bytes reduziert. 623 00:35:35,158 --> 00:35:36,676 Diese wird Alice an Bob senden. 624 00:35:36,676 --> 00:35:40,684 Dann gibt es noch ein paar zusätzliche Dinge, wie eine Nonce, eine Zufallszahl. 625 00:35:40,684 --> 00:35:41,803 Damit Sie nicht jedes Mal, wenn eine Nachricht senden, 626 00:35:41,803 --> 00:35:44,806 diese auf die gleiche Weise verschlüsseln müssen. 627 00:35:44,779 --> 00:35:47,507 Sonst könnte jemand sehen, dass sich die Verschlüsselung wiederholt. 628 00:35:47,507 --> 00:35:48,988 Es gibt es auch einen Authentificator. 629 00:35:48,988 --> 00:35:52,515 Bob kann damit überprüfen, ob das Paket korrekt ist. 630 00:35:52,515 --> 00:35:56,115 Dann erhält Bob sein Paket. 631 00:35:56,115 --> 00:35:58,682 Er sagt: "oh ja, es ist ein Paket von Alice." 632 00:35:58,682 --> 00:36:02,448 Es gibt Alices öffentlichen Schlüssel, wenn Bob den geteilten Schlüssel noch nicht kennt, 633 00:36:02,448 --> 00:36:03,781 dann nimmt Bob sein Geheimnis, 634 00:36:03,781 --> 00:36:07,882 multipliziert es mit dem öffentlichen Schlüssel und erhalt dasselbe b(a(x,y). 635 00:36:07,882 --> 00:36:10,447 Dann führt er die Krytographie mit geheimem Schlüssel durch. 636 00:36:10,447 --> 00:36:12,415 Er verifiziert das eingehende Paket. 637 00:36:12,415 --> 00:36:14,515 Er verifiziert den Authentifikator unter Verwendung der Nonce 638 00:36:14,515 --> 00:36:15,915 und des öffentlichen Schlüssels von Alice. 639 00:36:15,915 --> 00:36:19,548 Er hat zu diesem Zeitpunkt bestätigt, dass das von Alice ist. 640 00:36:19,548 --> 00:36:22,482 Hat Bob noch nie von Alices öffentlichem Schlüssel gehört, 641 00:36:22,482 --> 00:36:24,315 weiß er nicht, wer Alice ist. 642 00:36:24,315 --> 00:36:26,882 Aber er erhält Kontinuität zwischen den unterschiedlichen Nutzungen. 643 00:36:26,882 --> 00:36:29,968 Und fügen Sie dann Zertifikate oder andere öffentliche Schlüsselinfrastruktur hinzu, 644 00:36:29,968 --> 00:36:31,815 wissen Sie tatsächlich, mit wem sie kommunizieren. 645 00:36:31,815 --> 00:36:34,782 Alles worüber wir hier reden, 646 00:36:34,782 --> 00:36:37,168 die ganze public key und secret key Sache, ist so schnell, 647 00:36:37,168 --> 00:36:38,716 dass wir uns es leisten können, 648 00:36:38,716 --> 00:36:40,815 das für jedes einzelne Paket zu machen, das das Internet durchquert. 649 00:36:40,815 --> 00:36:42,248 Gut. 650 00:36:42,248 --> 00:36:45,615 Wir haben Ihnen im Moment noch nicht gesagt, was Sie verwenden sollen. 651 00:36:45,615 --> 00:36:47,515 Hier ist nun ein sicheres Beispiel. 652 00:36:47,515 --> 00:36:50,082 Du bist leise! 653 00:36:50,082 --> 00:36:53,515 Dies ist also ein sicheres Beispiel, das dann nicht beworben werden sollte. 654 00:36:53,515 --> 00:36:54,716 Es ist sein eigenes. 655 00:36:54,716 --> 00:36:55,683 Ähm 656 00:36:55,683 --> 00:36:57,382 Ich kann aber sagen, dass es ein gutes Beispiel ist. 657 00:36:57,382 --> 00:36:59,982 Sollten Sie also eine große Primzahl als Ihre Primzahl nehmen, hat sie 255 Bits. 658 00:36:59,982 --> 00:37:01,815 Es ist eine sehr schöne Primzahl. 659 00:37:01,815 --> 00:37:04,614 Das Berechnungsmodul für diese Primzahl ist schnell. 660 00:37:04,614 --> 00:37:06,716 Sie liegt sehr nahe an einer Zweierpotenz. 661 00:37:06,716 --> 00:37:09,282 Sie führen also diesen Mod aus. 662 00:37:09,282 --> 00:37:13,305 Diese Prozentoperation kann diese Zahl sehr schnell reduzieren. 663 00:37:13,305 --> 00:37:16,182 Dann sieht d ziemlich klein aus. 664 00:37:16,182 --> 00:37:19,678 Hier haben Sie auch eine Edwards -Kurve. 665 00:37:19,678 --> 00:37:21,901 Es gibt eine andere Edwards-Kurve. 666 00:37:21,901 --> 00:37:23,335 Diese nutzt das gleiche d 667 00:37:23,335 --> 00:37:24,877 und fügt dort nur ein Minus ein. 668 00:37:24,877 --> 00:37:29,094 Außerdem fügt man ein Minus vor dem x^2 ein. 669 00:37:29,094 --> 00:37:31,961 Dies ist eine andere Kurve, aber fast die gleiche. 670 00:37:31,961 --> 00:37:37,556 Für jedes (x,y) von zuvor, haben wir nun 671 00:37:37,556 --> 00:37:41,785 die Quadratwurzel von Minus 1 *xy und das gleich y wie zuvor. 672 00:37:41,785 --> 00:37:45,265 Somit ist es nur mit einer kleinen Änderung die erste Kurve. 673 00:37:45,265 --> 00:37:49,355 Außerdem haben wir viele Wege wie man elliptic curves schreibt. 674 00:37:49,355 --> 00:37:53,470 Hier ist eine ganze Liste mit verschiedenen Arten von elliptic curves. 675 00:37:53,470 --> 00:37:55,676 Also das erste was wir Ihnen bereits gezeigt haben, 676 00:37:55,774 --> 00:37:59,976 die Uhr, in der Sie in die Ecken reindrücken, ist eine Edwards-Kurve. 677 00:37:59,976 --> 00:38:05,346 Ich hätte hier gerne einen zusätzlichen Term wie dieses minus 1. 678 00:38:05,396 --> 00:38:07,827 Ich behalte mir hier im Allgemeinen einen Koeffizienten a vor. 679 00:38:07,827 --> 00:38:09,370 Den kann ich dann etwas eingeben. 680 00:38:09,370 --> 00:38:10,127 Äh 681 00:38:10,127 --> 00:38:11,309 Zum Beispiel minus 1. 682 00:38:11,339 --> 00:38:12,995 Das nennt man eine verdrehte Edwards-Kurve. 683 00:38:12,995 --> 00:38:16,729 Es gibt noch ein paar andere Dinge, die man in Lehrbüchern findet. 684 00:38:16,729 --> 00:38:18,262 Diese nennt man Weierstrass-Kurven. 685 00:38:18,262 --> 00:38:20,929 Es gibt auch noch die Montgomery-Kurven. 686 00:38:20,929 --> 00:38:24,627 Diesen kann man sich als Sonderfall von Weierstrass-Kurven vorstellen. 687 00:38:24,627 --> 00:38:28,096 Sie haben eine ähnliche Form wie y^2 = x^3 688 00:38:28,096 --> 00:38:30,329 Hier gibt es einige unterschiedliche Terme. 689 00:38:30,329 --> 00:38:35,362 Wenn Sie eine Kurve haben, können Sie von einem zum anderen und zurück wechseln. 690 00:38:35,362 --> 00:38:38,696 Beispielsweise von einer Montgomery-Kurve zu einer Edward Kurve. 691 00:38:38,696 --> 00:38:41,496 Okay. 692 00:38:41,496 --> 00:38:47,889 Aus historischen Gründen findet man Standards für ECC. 693 00:38:47,889 --> 00:38:48,266 Okay. 694 00:38:48,266 --> 00:38:49,795 Haltet Euch zurück. Das wird schrecklich. 695 00:38:49,896 --> 00:38:51,799 Das sind Weierstrass-Kurven. 696 00:38:51,799 --> 00:38:54,145 Hier ist das Additionsgesetz. 697 00:38:54,145 --> 00:38:56,345 Es zeigt, wie man 2 Punkte auf einer Weierstrasskurve addiert. 698 00:38:56,345 --> 00:39:02,378 Kurze Pause. Zwischenrufe! 699 00:39:02,378 --> 00:39:03,613 Oh, das ist gar nicht so schlecht. 700 00:39:03,613 --> 00:39:05,345 Es gibt 6 verschiedene Fälle. 701 00:39:05,345 --> 00:39:06,745 Wir gehen sie mal durch. 702 00:39:06,745 --> 00:39:07,512 Nein, nein, lasst uns sie nicht durchgehen. 703 00:39:07,512 --> 00:39:11,411 Das ist - äh - wenn Du nur einen Teil davon nimmst. 704 00:39:11,411 --> 00:39:13,338 Dann könnte es so aussehen, als würde es die meiste Zeit funktionieren. 705 00:39:13,338 --> 00:39:15,505 Meistens funktionieren die ersten Formeln. 706 00:39:15,505 --> 00:39:18,572 Solange, bis man etwas Verrücktes wie p + p macht und es dann nicht funktioniert. 707 00:39:18,572 --> 00:39:20,871 Dann gibt es immer mehr Ausnahmefälle. 708 00:39:20,871 --> 00:39:23,205 In einigen dieser Fälle merkt man es zunächst gar nicht. 709 00:39:23,205 --> 00:39:25,605 Un dann versucht man einen Code dafür zu schreiben. 710 00:39:25,605 --> 00:39:27,217 Es geht einfach immer weiter. 711 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. 712 00:39:30,205 --> 00:39:32,115 Aber okay. 713 00:39:32,156 --> 00:39:34,706 Das ist das, was man in ECC-Standards findet. 714 00:39:34,706 --> 00:39:36,656 Alles klar. 715 00:39:36,722 --> 00:39:41,882 Schöner als Weierstrass- und Montgomery-Kurven ist eine unserer Lieblingskurven. 716 00:39:41,904 --> 00:39:44,245 Hier sehen Sie die gesamte Arithmetik. 717 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. 718 00:39:49,977 --> 00:39:53,444 Hier gibt es ein bedingtes Bit, das x2 mit x3 vertauscht. 719 00:39:53,444 --> 00:39:56,178 Wir können das in konstanter Zeit erledigen. 720 00:39:56,178 --> 00:39:59,044 Ersetzen Sie diese Anweisung durch etwas, das folgendes besagt: 721 00:39:59,044 --> 00:40:00,978 "Es bleibt oder es wird ausgetauscht." 722 00:40:00,978 --> 00:40:04,277 Das ist eine ganze Addition auf Montgomery. 723 00:40:04,277 --> 00:40:07,076 Für jedes Bit machen Sie diese paar Schritte. 724 00:40:07,076 --> 00:40:10,410 Und Sie gehen die 255 Bits durch, die dort angegeben sind. 725 00:40:10,410 --> 00:40:13,577 Dies ist ein weiterer schöner Fall von Arithmetik. 726 00:40:13,577 --> 00:40:17,678 Beachten Sie bitte, dass wir hier nur eine x-Koordinate. 727 00:40:17,678 --> 00:40:20,910 Für die Edwards-Kurve hätten wir x und y. 728 00:40:20,910 --> 00:40:23,178 Es gibt also einige Unterschiede in dem, was wir damit machen. 729 00:40:23,178 --> 00:40:27,077 Wir teilten Ihnen mit, dass wir über Standards sprechen werden. 730 00:40:27,077 --> 00:40:31,077 Woher beziehen Sie Ihre Standards und wie können Sie diese verteidigen? 731 00:40:31,077 --> 00:40:33,543 Sie treten gegen jemanden an, der mit einem Mathematiker antritt. 732 00:40:33,543 --> 00:40:37,110 Mathematiker sind gruselige Menschen. 733 00:40:37,110 --> 00:40:38,512 Sie kennen alle Arten von Angriffen. 734 00:40:38,512 --> 00:40:40,977 Falls Sie diese Angriffe sehen wollen, haben wir am Ende ein paar URLs. 735 00:40:40,977 --> 00:40:43,310 Aber im Grund kennen wir diese Angriffe. 736 00:40:43,310 --> 00:40:52,050 Vereinbaren Sie bestimmte Eigenschaften, die Ihre Kurve haben soll. 737 00:40:52,050 --> 00:40:54,187 Und was diese Standards Ihnen garantieren. 738 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. 739 00:41:00,144 --> 00:41:02,287 Jemand sieht das Ergebnis Ihrer Berechnung. 740 00:41:02,287 --> 00:41:03,587 Er kennt den Basispunkt. 741 00:41:03,587 --> 00:41:05,720 Er kennt Ihren öffentlichen Schlüssel. 742 00:41:05,720 --> 00:41:09,053 Er ist aber nicht in der Lage herauszufinden, was Ihr a oder b war. 743 00:41:09,053 --> 00:41:12,353 Man nennt dies das Problem des elliptischen diskreten Logarithmus. 744 00:41:12,353 --> 00:41:16,854 Und wir haben ganz viele Arbeiten, um die Schwierigkeit zu untersuchen. 745 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. 746 00:41:22,054 --> 00:41:23,820 Um so die elliptische, diskrete Protokoll zu knacken. 747 00:41:23,820 --> 00:41:28,954 Sie möchten beispielsweise, dass Ihr Punkt, wenn Sie ihn mehrmals mit sich selbst addieren, 748 00:41:28,954 --> 00:41:33,320 über eine lange, lange, Zeit verschiedene Punkte ergibt, 749 00:41:33,320 --> 00:41:36,587 bis Sie zum Beispiel wieder zum gleichen Punkt zurück gelangen. 750 00:41:36,587 --> 00:41:39,254 Also z.B. nach l Phasen sind Sie wieder zurück. 751 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. 752 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. 753 00:41:49,788 --> 00:41:54,254 Okay, lasse wir uns annehmen, dass Sie es implementieren. 754 00:41:54,254 --> 00:41:57,687 Sie nehmen eines der Standards und wieder mal sind sind sie alle ähnlich. 755 00:41:57,687 --> 00:41:59,121 Klar, es gibt Unterschiede im Detail, 756 00:41:59,121 --> 00:42:00,688 aber sie alle beschützen uns. 757 00:42:00,688 --> 00:42:03,154 Und Sie implementieren den Standart... 758 00:42:03,154 --> 00:42:06,555 Und Sie sagen, okay wir sind in Deutschland, wir nehmen die Brainpool Kurven, 759 00:42:06,555 --> 00:42:08,821 da diese in deutschen Pässen verwendet werden. 760 00:42:08,821 --> 00:42:11,753 In Ordnung, also wir nehmen Brainpool P256 t1, 761 00:42:11,879 --> 00:42:15,445 dies gibt Ihnen eine Primzahl, die 256 Bits lang ist. 762 00:42:15,445 --> 00:42:20,779 Außerdem eine Weierstrass-Kurve, y^2 = x^3 - 3x + etwas großes. 763 00:42:20,779 --> 00:42:23,945 Und dann gibt es Ihnen einen Basispunkt (x,y), 764 00:42:23,945 --> 00:42:26,380 und dann schauen Sie darauf und merken: 765 00:42:26,380 --> 00:42:30,077 Oh, alle netten Formeln die vorher genannt wurden, ohne Ausnahmefälle, 766 00:42:30,077 --> 00:42:35,511 wie Edwards und Montgomery, diese Formeln funktionieren nicht bei dieser Kurve. 767 00:42:35,511 --> 00:42:38,645 Wenn Sie eine Kurve haben, die kompatibel mit den Formeln ist, 768 00:42:38,645 --> 00:42:40,778 dann standardisieren Sie diese. 769 00:42:40,778 --> 00:42:44,244 Dann kann jeder Punkt erfolgreich addiert werden und Sie können alle Ausnahmefälle vergessen. 770 00:42:44,244 --> 00:42:46,812 Dafür brauchen Sie eine Kurve die mit den Formeln übereinstimmt, 771 00:42:46,812 --> 00:42:51,656 leider funktioniert diese Kurve nicht mit Edwards und Montgomery, 772 00:42:51,656 --> 00:42:56,193 daher müssen Sie zurück zu den chaotischen Weierstrass Formeln gehen. 773 00:42:56,193 --> 00:43:00,012 Okay, Sie sind sehr vorsichtig und tun genau das was die Formeln aussagen. 774 00:43:00,012 --> 00:43:05,012 Dabei nutzen Sie Testfälle für alles und haben die Weierstrass Konditionen 775 00:43:05,012 --> 00:43:06,179 in allen sechs Fällen richtig implementiert . 776 00:43:06,179 --> 00:43:12,757 Und Sie arbeiten in konstanter Zeit, sodass keine Informationen an Angreifer gegeben werden. 777 00:43:12,757 --> 00:43:17,211 Dann haben sie eine Lösung die schmerzhaft langsam ist, 778 00:43:17,211 --> 00:43:20,345 aber Sie können sich sicher über die Sicherheit sein. 779 00:43:20,345 --> 00:43:25,712 Bis ein Angreifer kommt und sagt: 780 00:43:25,712 --> 00:43:27,412 "Hi, lass uns uns Diffie-Hellmann hier nutzen. 781 00:43:27,412 --> 00:43:28,012 Hier ist mein Punkt." 782 00:43:28,012 --> 00:43:31,279 Okay, ich nehme... Ähm ich glaube ich bin Alice. 783 00:43:31,279 --> 00:43:40,412 Ich habe ein a und nehmen den Punkt, den sie mir gesendet hat a mal. 784 00:43:40,412 --> 00:43:41,745 Dies ist ihr öffentlicher Schlüssel. 785 00:43:41,745 --> 00:43:44,144 Dies ist nicht das originale (x,y), 786 00:43:44,144 --> 00:43:45,647 es ist ein anderes (x', y') 787 00:43:45,647 --> 00:43:46,679 welches sie mir gesendet hat. 788 00:43:46,679 --> 00:43:49,145 Und ich sende zurück mein a(x',y') 789 00:43:49,145 --> 00:43:53,312 Und dann, wenn ich dies korrekt berechnet habe, 790 00:43:53,312 --> 00:44:00,713 dann habe ich nun den Verschlüsselung- Authentifikations-Mechanismus genutzt. 791 00:44:00,713 --> 00:44:01,812 Da mir jemand gesagt hat, dass ich Standard-Mechanismen nutzen soll. 792 00:44:01,812 --> 00:44:05,112 Ich habe Daten verschlüsselt und diese durch das Netzwerk geschickt. 793 00:44:05,112 --> 00:44:08,012 Ich bin im Netzwerk, 794 00:44:08,012 --> 00:44:11,081 ich sehe seine AES-GMC verschlüsselte Nachricht. 795 00:44:11,081 --> 00:44:13,412 Und nun, er weiß nicht, 796 00:44:13,412 --> 00:44:16,546 dass es unabhängig von seinen a, 797 00:44:16,546 --> 00:44:19,812 nicht viele verschiedenen Punkte gibt. 798 00:44:19,812 --> 00:44:21,811 Ich habe ihm keinen Punkt auf der brainpool-Kurve genannt, 799 00:44:21,811 --> 00:44:24,696 nein, ich habe ihm einen Punkt auf einer einfacheren Kurve gerannt. 800 00:44:24,696 --> 00:44:26,245 Zum Beispiel hier, hat es nur fünf. 801 00:44:26,245 --> 00:44:27,714 Die Brainpoolkurve ist viel viel größer, 802 00:44:27,714 --> 00:44:28,863 dies hier ist eine nette Kurve. 803 00:44:28,863 --> 00:44:34,078 Also dieser Punkt hat nur 4999 verschiedene Kopien. 804 00:44:34,078 --> 00:44:39,012 Dies heißt, dass er nicht wirklich ausrechnet, was er denkt. 805 00:44:39,012 --> 00:44:40,247 Ups! 806 00:44:40,247 --> 00:44:43,746 Nun der Grund für diese Möglichkeit ist, 807 00:44:43,746 --> 00:44:47,381 dass im ganzen Chaos der Weierstrass-Kurven, kein a6 existiert. 808 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, 809 00:44:53,012 --> 00:44:55,947 oder die 5 die ich eben für leichtere eingesetzt habe. 810 00:44:55,947 --> 00:44:59,280 Es ist egal, der Angreifer nutzt eine der Formeln. 811 00:44:59,280 --> 00:45:05,713 Dann gibt mir das a einen der 4999 verschiedenen Punkte, 812 00:45:05,713 --> 00:45:09,712 woraus ich ein Modulo 4999 entwickeln kann. 813 00:45:09,712 --> 00:45:12,246 Lassen wir uns das wiederholen! 814 00:45:12,246 --> 00:45:14,181 Sie sendet mir einen anderen Punkt. 815 00:45:14,181 --> 00:45:16,179 Hi Dan, hier ist ein anderer Punkt. 816 00:45:16,179 --> 00:45:19,761 Ich nehme das neue (x',y') und berechne es a mal. 817 00:45:19,761 --> 00:45:23,628 Dann sende ich etwas verschlüsseltes zurück mithilfe des geteilten Geheimnisses. 818 00:45:23,628 --> 00:45:29,228 Und nun berechnet sie das gleiche. 819 00:45:29,228 --> 00:45:31,993 Sie hat mir heimlich einen Punkt von einer kleinen Ordnung geschickt, 820 00:45:31,993 --> 00:45:33,411 was ich nie bemerkt habe. 821 00:45:33,411 --> 00:45:37,762 Nun hat sie mein geheimes modulo herausgefunden und nutzt verschiedene Nummern. 822 00:45:37,762 --> 00:45:39,228 Wieder und wieder. 823 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. 824 00:45:46,094 --> 00:45:48,729 Auch wenn nur ein paar Schwachstellen gefunden werden, 825 00:45:48,729 --> 00:45:52,496 ist dies genug um das ganze Sicherheitssystem ernsthaft zu beschädigen. 826 00:45:52,496 --> 00:45:58,231 Wenn dies dann 20 mal passiert, dann habe ich ein echtes Problem. 827 00:45:58,231 --> 00:46:02,062 Nun, was Leute dem häufig entgegnen ist, dass sie sagen: 828 00:46:02,062 --> 00:46:05,695 Oh, ist dir die Fußnote im Standart nicht aufgefallen, welche besagt, 829 00:46:05,695 --> 00:46:09,662 dass wenn du einen Punkt bekommst, du testen sollst, ob dieser auf der Kurve liegt? 830 00:46:09,662 --> 00:46:15,262 Dh. schuld an der Attacke ist die Person, die die Implementierung vornimmt. 831 00:46:15,262 --> 00:46:17,396 Dies ist der Weg, wie wir sichere Systeme erhalten, 832 00:46:17,396 --> 00:46:18,859 wir weisen die Schuld immer dem Implementierer zu. 833 00:46:18,859 --> 00:46:21,594 Das ist super, wenn etwas falsch mit dem System ist, 834 00:46:21,594 --> 00:46:24,029 ist es der Fehler des Implementierers, dass das nicht überprüft wurde. 835 00:46:24,029 --> 00:46:27,196 Applaus 836 00:46:27,196 --> 00:46:29,662 Lassen Sie mich nicht von stir copy anfangen... 837 00:46:29,662 --> 00:46:34,328 Sie sollten die Länge vom String... Sorry, das war falsch 838 00:46:34,328 --> 00:46:37,461 Sie sollten aufpassen, dass dieser Punkt auf der Kurve ist, 839 00:46:37,461 --> 00:46:39,762 Sie sollten aufpassen, dass die richtige Reihenfolge vorliegt. 840 00:46:39,762 --> 00:46:41,361 wegen einer anderen ähnlichen Attacke. 841 00:46:41,361 --> 00:46:44,728 Über die Art und Weise wie Patentgebühren an certicom gezahlt werden... 842 00:46:44,728 --> 00:46:50,336 Okay, ich referiere dazu, wenn Sie einen Telefonanruf bekommen würden. 843 00:46:50,336 --> 00:46:55,826 Wo gesagt wird, dass ein Patent zur Validieren steht... 844 00:46:55,826 --> 00:47:02,685 Statt dem Implementierer die Schuld zuzuweisen, warum sollten wir nicht die Umstände verbessern. 845 00:47:02,685 --> 00:47:05,154 Warum designen wir nicht Kryptographie anders? 846 00:47:05,154 --> 00:47:06,955 Warum designen wir keine anderen Kurven, 847 00:47:06,955 --> 00:47:10,720 sodass es nicht möglich ist bei der Implementierung zu versagen? 848 00:47:10,720 --> 00:47:13,787 Wir wissen wir Implementierer ticken. 849 00:47:13,787 --> 00:47:16,420 Wir sind Implementierer und wissen was wir falsch machen. 850 00:47:16,420 --> 00:47:21,288 Und die Fehler wiederholen sich wieder und wieder. 851 00:47:21,288 --> 00:47:25,502 Also lasst uns uns gegen diese Fehler schützen und ein robustes Design wählen. 852 00:47:25,502 --> 00:47:32,021 Dies heisst für ECC, Sie nehmen das (x,y) was durchs Netzwerk ankommt 853 00:47:32,021 --> 00:47:35,054 und verbieten, dass dieses (x,y) durch das Netzwerk weitergeschickt wird. 854 00:47:35,054 --> 00:47:36,853 Sie haben nur ein x. 855 00:47:36,853 --> 00:47:41,753 Und wenn das y^2 gleich zu etwas ist, dann könnte man, wenn man will, 856 00:47:41,753 --> 00:47:42,721 das kommunizieren. 857 00:47:42,721 --> 00:47:45,988 Sie können ein Bit senden, das angibt ob es plus oder minus die Quadratwurzel 858 00:47:45,988 --> 00:47:49,070 von diesem y ist. 859 00:47:49,070 --> 00:47:51,131 Oder man sendet einfach kein y. 860 00:47:51,131 --> 00:47:54,298 Erinnern Sie sich an die Montgomery Formeln, diese brauchen noch nicht mal y. 861 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 862 00:48:00,731 --> 00:48:06,964 um Punkte auszusuchen und Sie so zu veralbern wie eben. 863 00:48:06,964 --> 00:48:11,033 Es gibt ein paar mehr Regeln, welche beim Aussuchen der Kurve 864 00:48:11,033 --> 00:48:13,732 und beim Designen des Protokolls beachtet werden können. 865 00:48:13,732 --> 00:48:17,997 Dies heißt, dass Sie als Implementierer leichter arbeiten können. 866 00:48:17,997 --> 00:48:24,697 Der Protokol Designer kann sagen, dass Sie die Skalare a und b, 867 00:48:24,697 --> 00:48:27,131 die Geheimnisse die Sie für Diffie-Hellmann nutzen, 868 00:48:27,131 --> 00:48:30,697 immer multiplizieren sollen mit dem sogenannten Kofaktor der Kurve. 869 00:48:30,697 --> 00:48:33,698 Die ist der Basispunkt der Ordnung l, 870 00:48:33,698 --> 00:48:35,132 es hat l unterschiedliche Vielfache. 871 00:48:35,132 --> 00:48:39,397 Z.B. sind dort vier mal l, oder acht mal l Punkte auf der Kurve, 872 00:48:39,397 --> 00:48:40,802 dann sieht man nur l. 873 00:48:40,802 --> 00:48:44,065 Um für die daraus resultieren Lücke aufzukommen und ausgeklügelteren Attacken zuvorzukommen, 874 00:48:44,065 --> 00:48:47,132 multiplizieren wir die geheimnisse a und b immer mit acht. 875 00:48:47,132 --> 00:48:50,166 Dies beschützt uns komplett vor diesen Attacken 876 00:48:50,166 --> 00:48:53,665 und kann im Protokoll aufgenommen und getestet werden. 877 00:48:53,665 --> 00:48:58,730 Weiterhin kann der Designer der Kurve immer Kurven aussuchen, 878 00:48:58,730 --> 00:49:00,897 die"verdrehungssicher" sind. 879 00:49:00,897 --> 00:49:04,431 Da ist immer ein bisschen Spielraum, wenn jemand einen komprimierten Punkt schickt. 880 00:49:04,431 --> 00:49:07,131 Und diese "Verdrehungssicherheit" sagt etwa aus: 881 00:49:07,131 --> 00:49:11,798 Dieser Spielraum lässt Ihnen die Möglichkeit zwischen verschiedenen Kurven auszusuchen. 882 00:49:11,798 --> 00:49:16,182 Da gibt es die erste Kurve aber auch ihre verwandte Kurve, die "verdrehte Kurve" genannt wird. 883 00:49:16,182 --> 00:49:20,932 Der Designer der Kurve kann sicherstellen, dass beide sicher sind. 884 00:49:20,932 --> 00:49:24,465 Beie haben große Primzahlen, dann ist da ein l und ein verwandtes l 885 00:49:24,465 --> 00:49:28,199 und ein kleiner Kofaktor sowie ein weiterer kleiner Kofaktor. 886 00:49:28,199 --> 00:49:31,364 Wenn der Designer eine der "verdrehungsicheren" Kurven wählt, 887 00:49:31,364 --> 00:49:34,398 bleibt dem Angreifer keine Flexibilität mehr übrig. 888 00:49:34,398 --> 00:49:38,833 Der Angreifer hat dann keine Informationen mehr über Ihr Geheimnis a und b. 889 00:49:38,833 --> 00:49:41,965 So, warum machen wir dies nicht einfach? 890 00:49:41,965 --> 00:49:44,065 Naja, es geschieht in Teilen. 891 00:49:44,065 --> 00:49:47,766 Es gibt bereits eine Bewegung für die nächste Generation von einfachen Standards. 892 00:49:47,766 --> 00:49:50,680 Nächste Generation meint, dass es Kurven geben soll, 893 00:49:50,680 --> 00:49:52,647 bei denen man sich nicht selber verzettelt, wenn man diese 894 00:49:52,647 --> 00:49:54,111 auf die einfachste Weise implementiert. 895 00:49:54,111 --> 00:49:57,445 Das heißt, dass eine einfache Implantation auch eine sichere Implantation sein soll. 896 00:49:57,445 --> 00:50:01,278 Normalerweise, wenn man etwas sicherer gestaltet, 897 00:50:01,278 --> 00:50:02,379 wird es langsamer. 898 00:50:02,379 --> 00:50:04,214 Nun der Bonus in diesem Fall ist, dass es schneller wird. 899 00:50:04,214 --> 00:50:09,046 Bereits in 2010 hat Adam Langley von Google in die TLS mailing list geschrieben: 900 00:50:09,046 --> 00:50:13,012 " Hey Leute, da Kryptographie weiter fortgeschritten ist, 901 00:50:13,012 --> 00:50:17,679 wäre es nicht gut, wenn wir Kurve 25519 als benannte Kurve haben?" 902 00:50:17,679 --> 00:50:19,445 Dann ist nicht viel passiert. 903 00:50:19,445 --> 00:50:23,512 Wir haben daran gearbeitet gute Methoden, 904 00:50:23,512 --> 00:50:25,679 naja zumindest denken wir das, 905 00:50:25,679 --> 00:50:27,713 zum Erstellen von Kurven zu entwicklen. 906 00:50:27,713 --> 00:50:31,079 Naja, dank Snowden im letzten September, 907 00:50:31,079 --> 00:50:34,979 gibt es nun emotionale Reaktionen von Leuten. 908 00:50:34,979 --> 00:50:39,379 Die sagen, da NIST Kurven einen Teil ihrer Vertraulichkeit verloren haben, 909 00:50:39,379 --> 00:50:41,879 und wir denken, vielleicht ist die NSA nicht nur gut, 910 00:50:41,879 --> 00:50:44,346 sollten wir nicht eine neue Bewegung haben? 911 00:50:44,346 --> 00:50:46,046 Zum Glück gibt es viele weitere Leute die sagen: 912 00:50:46,046 --> 00:50:50,212 "Es ist nicht, dass wir paranoid sind, wir wissen nicht ob die NIST Kurven unsicher sind, 913 00:50:50,212 --> 00:50:54,645 aber sie sind garantiert nicht gut zu implementieren." 914 00:50:54,645 --> 00:50:57,413 Wir könnten schneller und sicherer sein. 915 00:50:57,413 --> 00:51:02,313 Dazu gibt es einige Zitate und auch ein Entwurf. 916 00:51:02,313 --> 00:51:08,147 Wenn jemand ein paranoides Sicherheitslevel erreichen will, haben wir hier 41417 Bits. 917 00:51:08,147 --> 00:51:17,846 Ähm, eine SafeCurves Seite und so weiter. 918 00:51:17,846 --> 00:51:20,546 Final, CFRG verändert sich. 919 00:51:20,546 --> 00:51:25,247 Da war ein Typ von der NSA, der ein Co-Leader von CFRG war. 920 00:51:25,247 --> 00:51:28,647 Also CFRG ist eine Kryptogramme Forschungsgruppe von der Internet Engineering Task Force. 921 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. 922 00:51:37,313 --> 00:51:40,646 Nun, ich hatte gehofft dass wir im Guten enden. 923 00:51:40,646 --> 00:51:42,214 Dass wir sagen können, es ist alles gut hier. 924 00:51:42,214 --> 00:51:46,980 Immerhin gibt es einen guten Punkt, Microsoft hat Kurven gewählt... 925 00:51:46,980 --> 00:51:49,980 Wissen Sie, sobald Microsoft in die Diskussion eingreift, ist diese beendet, 926 00:51:49,980 --> 00:51:52,581 Nunja die letzte Seite sollte etwas Nettes sein, aber aktuell geht die Diskussion einfach weiter. 927 00:51:52,581 --> 00:52:04,713 Danke für ihre Aufmerksamkeit! 928 00:52:04,713 --> 00:52:18,279 Applaus 929 00:52:18,279 --> 00:52:20,313 Moderator: "Danke für Euren Vortrag! 930 00:52:20,313 --> 00:52:24,047 Wir haben nur ein paar Minuten für Fragen und Antworten, 931 00:52:24,047 --> 00:52:36,019 daher beeilen sie sich bitte und fragen nur kurze Fragen. 932 00:52:36,019 --> 00:52:37,904 Okay, los gehts!" 933 00:52:37,952 --> 00:52:49,978 Wissen Sie, dass von Attacken oder Schwachstellen in NIST 186-2? 934 00:52:49,978 --> 00:52:57,955 Ja, zum Beispiel, ist NIST P224 nicht verdrehungssicher. 935 00:52:57,955 --> 00:53:01,944 Dies ist das einzig bekannte Problem. 936 00:53:01,944 --> 00:53:05,489 Schauen Sie, wenn Sie sich die Arbeit der ganzen Implentierungen machen 937 00:53:05,489 --> 00:53:10,221 und ganz vorsichtig arbeiten und sich schauen ob ein Punkt auf der Kurve liegt, 938 00:53:10,221 --> 00:53:12,189 und die richtige Ordnung hat, usw. 939 00:53:12,189 --> 00:53:14,222 Wenn Sie eine Menge Arbeit hineinstecken in etwas, 940 00:53:14,222 --> 00:53:17,689 was so langsam und fragil ist und hart zu testen und hart zu implementieren. 941 00:53:17,689 --> 00:53:21,355 Dann können sie etwas sicheres mit den NIST elliptischen Kurven machen. 942 00:53:21,355 --> 00:53:27,352 Ein Schritt in die Zukunft von modernen ECC ist aber etwas zu schaffen, 943 00:53:27,352 --> 00:53:29,390 was schneller und einfacher zu implementieren ist. 944 00:53:29,390 --> 00:53:33,152 Damit sind auch mehr Leute glücklich. 945 00:53:33,152 --> 00:53:33,853 Danke! 946 00:53:33,853 --> 00:53:36,337 Okay, bitte 947 00:53:36,337 --> 00:53:39,382 "Ja, ganz kurze frage, wenn Sie die NSA leiten würden, 948 00:53:39,382 --> 00:53:43,615 könnten Sie Ihren eigenen Standard so beeinflussen, dass Sie ihn knacken könnten? 949 00:53:43,615 --> 00:53:45,449 Und wie würden Sie das machen?" 950 00:53:45,449 --> 00:53:50,148 Naja, die kurze Antwort wäre, dass das Gute bei Standards ist, 951 00:53:50,148 --> 00:53:56,626 dass es viele gibt aus denen man aussuchen kann. 952 00:53:56,626 --> 00:54:00,109 Moderator: "Ist das die Antwort?" 953 00:54:00,335 --> 00:54:03,795 Also die längere Antwort wäre, 954 00:54:03,795 --> 00:54:08,307 dass ich beispielsweise den NC zum französischen Standard (?) wählen könnte. 955 00:54:08,307 --> 00:54:14,575 Es gibt keine Rechtfertigung dafür, welche Kurve ich wähle. 956 00:54:18,205 --> 00:54:22,182 Zuschauer: "Wir kamen Sie auf die Schlüssellänge von 45 Bits, 957 00:54:22,182 --> 00:54:24,442 und woher wissen Sie, dass das sicher ist? 958 00:54:24,442 --> 00:54:27,750 Ist es nur die Abwesenheit von sowas wie Indexcalculus?" 959 00:54:27,750 --> 00:54:31,810 Ja, die Tatsachen, dass IndexCalculus nicht ausgeführt werden kann, 960 00:54:31,982 --> 00:54:37,180 erlaubt ECC mit kleineren Schlüsselgrößen als RSA zu arbeiten. 961 00:54:37,180 --> 00:54:40,970 Und die 256 Bits kommen von Schätzungen, 962 00:54:41,020 --> 00:54:46,801 was die größten Rechnungen sein werden, die in zehn Jahren mit aktueller Technologie 963 00:54:46,801 --> 00:54:48,299 ausgeführt werden können. 964 00:54:48,299 --> 00:54:51,566 Zum Beispiel, mit einem 65 Watt Stromwerk, 965 00:54:51,566 --> 00:54:56,134 würde die größte Rechenleistung nicht ausreichen um 200 Bit elliptic curves zu knacken. 966 00:54:56,134 --> 00:54:58,800 Daher fühlen wir uns mit 256 Bit sicher. 967 00:54:58,800 --> 00:55:05,900 Im Bezug auf die Attacken, die wir kennen, sind die Kurven sicher. 968 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. 969 00:55:17,411 --> 00:55:19,099 Wir haben leider keine Zeit mehr, 970 00:55:20,307 --> 00:55:22,475 daher nochmal Danke an die Vortragenden! 971 00:55:22,475 --> 00:55:26,086 Applaus