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