-
Entschuldigung für die technischen Schwierigkeiten, für den wirklich sinnvollen Teil des Vortrags gebe ich nun hier weiter an Tanja.
-
Hallo, ich bin Tanja und neben mir ist Dan, falls das noch nicht bekannt war.
-
(Gelächter)
-
Also wir werden über Crypto und ein paar Elliptic curves reden, und hoffen, dass dies ist eine sanfte Einführung ist
-
Wenn es zu langweilig ist, naja, es ist spät am Abend, also machen Sie ein kurzes Schläfchen,
-
wachen Sie ab zu und zu auf und schauen, ob sie noch mitkommen.
-
Also warum Kryptographie?
-
Wenn Sie Kryptographie im Internet oder für elektronische Zahlungen verwenden,
-
dann sehen sie zum Beispiel ein SSL Zertifikat in welchem Kryptographie verwendet wird.
-
Wenn Sie einen elektronischen Pass oder einen elektronischen Personalausweis haben, welcher Signaturen nutzt, oder
-
wenn Sie TLS verwenden um vertrauliche Daten zu senden, dann möchten Sie Verschlüsselung nutzen.
-
Wenn Sie einen SSL-Exchange haben, nutzen sie z.B. RSA, Diffie-Hellmann oder ECDH.
-
Und um EC, ECDH und ECDSA geht es heute in diesem Vortrag.
-
Außerdem gibt es noch einen großer Anteil an der Kryptographie, die sogenannte "secret key cryptography".
-
Das ist wirkliche eine coole Sache, es sie ist viel viel schneller als alles was wir Ihnen heute vorstellen.
-
Aber sie setzt voraus, dass die beiden Parteien, die miteinander reden möchten sich bereits kennen,
-
also dass sie bereits einen Schlüsselaustausch durchgeführt haben
-
Wir werden Ihnen zeigen wie man diesen Schlüsselaustausch durchführt.
-
Und vielleicht dann im nächsten Jahr, die symmetrische Kryptographie.
-
Okay, also warum sollte man in public key Kryptographie ECC (elliptic curve cryptography) nutzen
-
Was hat dazu geführt, dass Personen sich für ECC interessieren?
-
Die einfache Antwort dafür ist eine Angriffsstrategie namens Index-Calculus.
-
Nun diese nutzen Sie, wenn Sie den RSA Schlüssel von jemanden faktorisieren,
-
oder den ursprünglichen nicht-elliptischen Diffie-Hellman knacken, möchten.
-
Dann nutzten Sie Index-Calculus.
-
Dies ist eine ausgefallene Nutzung von Mathematik sowie die damit einhergehenden Algorithmen.
-
Im Endeffekt werden diese immer schneller und schneller,
-
sodass wir am Ende gar nicht wissen, wie schnell sie einmal sein werden.
-
Hier ist ein Teil der Geschichte, wann die Algorithmen erfunden wurden:
-
1975 wurde einer der ersten Index-Calculus Algorithmen, CFRAC,
-
zum Faktorisieren von großen Zahlen entwickelt.
-
In 1977, 1982, 1990. 1994 gab es dann alle möglichen Arten von Fortschritten.
-
Sie haben letztes Jahr von der Cryptoapocalypse gehört.
-
Und diese ist eine der neusten Fortschritte in Indexcalculus
-
Es ist zwar nicht relevant für das Knacken von RSA,
-
aber es ist ein Beispiel dafür, dass die allgemeine Strategie des Index-Calculus
-
immer weiter verfeinert, hochwertiger und schneller wird.
-
Das ist nicht die ganze Geschichte.
-
Wenn man sich die wissenschaftliche Fachliteratur anschaut, dann gibt es dort auch viele Verbesserungen.
-
Wir sind glücklich, wenn wir doppelt so schnell faktorisieren können,
-
aber das sind große Schritte, wenn man die Sicherheit von zwei typischen RSA Größenordnungen bedenkt.
-
Also da ist RSA 1024, was man noch häufig im Internet sehen kann
-
und da ist RSA 2028, was hoffentlich Ihre Bank nutzt.
-
Dann sind dort zwei Zeilen mit Nummern...
-
Entschuldigung
-
Zwei Spalten mit Nummern, wo Sie sehen können, wie sehr die Sicherheit abgenommen hat.
-
Also zurück in 1975, der CFRAC Algorithmus würde immer noch 2 hoch 120 Operation brauchen,
-
um die selbe Arbeit zu machen, welche in vielen Jahren später ein mit Zahlen gefülltes Sieb macht.
-
Also in den 80er würde nur 2 hoch 80 Operationen notwendig sein.
-
Daher ist hier ein großer Rückgang vorhanden,
-
von 120 Operations auf 80.
-
Und es ist nicht nur eine Verringerung um 40 im Exponenten, es ist deutlich größer,
-
Es reduziert diesen von 170 auf 112.
-
Somit ist es nicht nur eine lineare Verringerung im Exponent.
-
Es ist mehr als eine lineare Verringerung im Exponent.
-
In '85, als die [unverständlich],
-
hat Miller elliptic curves als Alternative zu faktorisierungsbasierten Methoden vorgeschlagen,
-
da Faktorisierung und Diffie-Hellman von den Algorithmen geknackt werden.
-
Miller sagte: "Nun, ich habe mir dieses neue Prinzip der elliptic curves angesehen,
-
und es ist extrem unwahrscheinlich, dass eine Index-Calculus Attacke auf die elliptic curves Methode jemals klappen würde.
-
Also können wir alle die Verbesserungen dieser Methoden ignorieren,
-
die die Faktorisierung und Diffie-Hellman geschwächt haben."
-
Um in elliptic curve cryptography sanft einzusteigen, haben wir hier die clock cryptography.
-
Nun, hier ist Bild von einer Uhr.
-
Hast du zufällig eine Uhr um sie den Menschen zu zeigen,
-
falls sie nicht mehr dran gewöhnt sind, wie eine Uhr aussieht?
-
Also ein rundes Ding.
-
Wissen Sie, wenn Sie denken dass eine Uhr Ihnen Ziffern nebeneinander anzeigt, hier, so sahen Uhren früher aus.
-
Für Mathematiker, es ist x^2 + y^2 = 1
-
Es ist etwas kaputt, deswegen sind wir zu spät.
-
(schmunzeln)
-
Die elliptic curves die wir Ihnen später im Vortrag zeigen,
-
beinhalten nicht die Uhr.
-
Die clock cryptography ist kein Beispiel für elliptic curve cryptography,
-
aber sehr, sehr nah dran.
-
Daher starten wir mit der clock cryptography und wenn Sie damit vertraut sind,
-
machen wir eine kleine Anpassung und dann haben wir die elliptic curve cryptography.
-
In Ordnung, also zum Beweis, dass ich den Kindergarten abgeschlossen habe,
-
hier sind ein paar Punkte auf der Uhr.
-
Dort oben ist 12 Uhr, so habe ich das gelernt.
-
Nun ich bin später Mathematikerin geworden und Mathematiker arbeiten gerne mit Koordinaten.
-
Also 12 Uhr hat die x-Koordinate 0 und die y-Koordinate 1.
-
Ich weiß, dass die 1 da sein muss, da es die Formel x^2+y^2=1 erfüllen soll.
-
x^2=0, daher y^2=1 und y=1.
-
Aber es gibt viel mehr Punkte,
-
also dort ist 18 Uhr.
-
Dort haben Sie Frühstück, ähm Lunch.
-
Das ist die 15 Uhr Marke, da ist die 21 Uhr Marke,
-
da ist, ... ,oh was ist das?
-
Das habe ich nicht im Kindergarten gelernt.
-
So es ist, ähm, halb nach oben dann schauen, wo ist die eins,
-
dann halb rüber.
-
Das schaut aus, ähm, wie die 2 Uhr Marke.
-
Hier wurden die Koordinaten umgedreht.
-
Nun x = 1/2, also sind wir irgendwo hier drüben,
-
und dann ins negative, das wäre die 5 Uhr Marke.
-
Und mehr und mehr Punkte...
-
Sollte es nicht sanft sein?
-
Ist es nicht sanft?
-
[Applaus]
-
Okay, also...
-
Hey, hier sind ein paar Punkte die ich noch nicht gesehen habe.
-
Oh, tut mir leid, ähm, ich glaube wir wollten mehr über Punkte wie diese erzählen.
-
3/5, 4/5, ich meine, hier muss man richtig komplizierte Mathematik nutzen,
-
um zu sehen, dass eine Formel (3/5)^2+(4/5)^2=1 ist.
-
Dies ist ein weiterer Punkt auf der Uhr und es ist nicht ersichtlich,
-
wie viel Uhr es ist.
-
Sie müssen wirklich intensiv auf ihre Uhr schauen um das herauszufinden.
-
Immer am Aussteigen wenn es knifflig wird.
-
Entschuldigung?
-
Nun steigst du aus, wenn es es knifflig wird.
-
Aussteigen wenn es knifflig wird?
-
[Lachen]
-
Okay, also willst du wirklich, dass ich das Quadrat, das halbe Quadrat, ...
-
Nein, nein, ich weiß einfach nicht wo der Punkt ist, aber ich weiß er ist auf der Uhr.
-
Okay, also du kannst herausfinden, wo der 3/5, 4/5 Punkt ist, im Bezug auf die Uhrzeit.
-
Sie können es auch etwas komplizierter machen in dem Sie die Uhr parametisieren.
-
Also wenn Leute Punkte auf der Uhr nehmen,
-
dann denken sie an eine voranschreitende Zeit.
-
Also es gibt 2 Uhr, 3 Uhr und das kann addiert werde, und man bekommt 5 Uhr.
-
Zwei Stunden nach 3 Uhr oder drei Stunden nach 2 Uhr ist 5 Uhr.
-
Und hier ist ein Bild, das etwa so aussieht, als ob 1:30 plus 2 Uhr so etwas wie 3:30 ergibt.
-
Also hier sind ein paar Punkte p1, p2 und p3 auf der Uhr.
-
Und Sie können p1 und p2 addieren, um p3 zu erhalten.
-
Hier kommt der schreckliche mathematische Teil, den wir gleich verwerfen werden - die Trigonometrie.
-
Wenn Sie einen Punkt auf der Uhr haben, hat er einen Winkel von Alpha.
-
Die Zeit von Alpha beginnt bei 12 Uhr, dann ist dieser Punkt x gleich Sinus von Alpha, Y gleich Kosinus Alpha.
-
Es gab es diese schrecklichen trigonometrischen Formeln für den Sinus der Summe zweier Winkel und den Kosinus von ...
-
Die Summe von zwei Winkeln und der Sinus von Alpha 1 plus Alpha 2 ist...
-
Okay, Sinus von Alpha 1, Cosinus von Alpha 2 plus Cosinus von Alpha 1, Sinus von Alpha 2.
-
Etwas Ähnliches gibt es für den Cosinus.
-
Sie können Punkte hinzufügen mithilfe der Sinus und Cosinus Funktionen.
-
Normalerweise überreden wir die Leute, sich der Crypto-Seite zuzuwenden indem wir ihnen sagen:
-
"Sie können die ganze nichtdiskrete Mathematik vergessen"
-
"Wir möge diskrete Mathematik, wir sind die diskreten Typen,
-
also wird es keine Sinus und Cosinus geben."
-
Okay, lasst uns sie loswerden. Wir wollen keinen Sinus und Cosinus haben.
-
Eigentlich würden wir gerne mit normalen Uhrzeiten arbeiten.
-
Sinus 1, Cosinus 2 und so weiter sind einfach meine x- und y-Koordinaten.
-
Alles, was ich hier gesagt habe, war, dass die x-Koordinate ein Sinus von Alpha ist.
-
Die y-Koordinate ist der Kosinus von Alpha.
-
In diesem ganzen Durcheinander mit den Trigonometrieformeln,
-
kann ich einfach jeden Sinus von Alpha durch das entsprechende x ersetzen.
-
Und jeder Cosinus von Alpha wird durch das entsprechende y ersetzt.
-
Dadurch wird dies viel schöner und kürzer.
-
Keine trigonometrische Additionsformel. Also wenn Ihnen bei der Addition auf der Uhr
-
Ihnen zwei Punkte x1 y1 und x2 y2, gibt, dann müssen Sie nur die x-Koordinate des ersten Punktes
-
und die y-Koordinate des zweiten Punktes nehmen und diese multiplizieren.
-
Nehmen Sie dann die y-Koordinate des ersten Punktes und die x-Koordinate des zweiten Punktes und multiplizieren Sie diese.
-
Addieren sie das.
-
Das gibt Sie die neue X-Koordinate. Warum?
-
Wir können einfach vergessen, woher sie stammt.
-
Dann machen wir dasselbe mit der Y-Koordinate.
-
Sie ist das Produkt aus den Y-Koordinaten minus dem Produkt der X-Koordinaten.
-
Okay.
-
Hier sind einige Beispiele für die Addition von Uhrzeiten, die wir noch nicht behandelt haben.
-
Wir haben keinen Computer hier, daher wird dies etwas mühsames Rechnen.
-
2 Uhr plus 5 Uhr.
-
Wir erinnern uns, dass dies im Test sein wird.
-
2 Uhr war diese Quadratwurzel aus 3/4 und 1/2.
-
Sie hat am Anfang darüber gesprochen.
-
Und 5 Uhr war 1/2 und minus Quadratwurzel von 3/4.
-
Wenn Sie das in die Formel einsetzen...
-
Okay, ich werde es mal versuchen.
-
x1 ist Quadratwurzel von 3/4.
-
y1 ist 1/2.
-
x2 ist 1/2 und y2 ist minus Quadratwurzel von 3/4.
-
Wenn Sie x1 mit y2 multiplizieren ist, dann ist das die Quadratwurzel von 3/4 multipliziert
-
mit der minus Quadratwurzel von 3/4, welche minus 3/4 ist.
-
Dann müsste y1 mal x2, 1/2 mal 1/2 sein, was 1/4 ist.
-
Addiert man diese, ist es ungefähr minus 1/2.
-
Führt man eine ähnliche Berechnung durch, erhält man den 2. Teil des Ergebnisses.
-
Man erkennt, dass 2 Uhr plus 5 Uhr mit diesen Formeln das ist, was Sie wollten, nämlich 7 Uhr.
-
Ähnliches können Sie mit 5 Uhr plus 9 Uhr machen.
-
Ich denke, wir werden es überspringen.
-
Versuchen wir es mit einem anderen Beispiel.
-
Sie können 3/5 und 4/5 nehmen und sie addieren.
-
Das bedeutet, dass 2 mal (3/5 mal 4/5) dann 3/5 mal 4/5 plus 3/5 und 4/5 sind.
-
Fügen Sie dies in die Formeln ein und Sie wissen nicht, wie spät es ist.
-
Sie erhalten einfach eine Antwort, 24/25 und 7/25
-
Und Sie können immer mehr Kopien, des Punktes auf den Punkt selbst hinzufügen.
-
3 mal 3/5, 4/5, das ist also der Punkt plus sich selbst plus sich selbst
-
Setzen Sie ihn einfach in die Formeln ein und Sie erhalten etwas mit mehr Ziffern.
-
Wenn Sie immer mehr Kopien hinzufügen, erhalten Sie immer mehr Stellen.
-
Der Nenner ist nun 625 und er wird immer größer.
-
Sie können auch versuchen, jeden gewünschten Punkt zu 12 Uhr hinzuzufügen, ohne überhaupt zu wissen, welcher es ist.
-
12 Uhr mit 0,1 (Koordinaten)
-
Wenn Sie diese in die Formeln einsetzen, erhalten Sie 12 Uhr plus 3 Uhr ist 3 Uhr.
-
12 Uhr plus 5 Uhr ist 5 Uhr
-
12 Uhr plus irgendein Wert ergibt als Ergebnis diesen Wert.
-
Das ist sofort ersichtlich aus der Formel zur Addition von zwei Punkten.
-
Ein letztes Beispiel dafür, wie Sie mit dieser Additionsformel arbeiten können.
-
Sie nehmen beispielsweise 10 Uhr + 2 Uhr. Das sollte 12 Uhr sein.
-
10 + 2 = 12. Das ist logisch.
-
Das Gegenteil wäre 10 + 2, wenn man 9 + 3 oder 11 + 1 oder irgendetwas nimmt,
-
was die gleiche Höhe, die gleiche Y-Koordinate hat, aber die X-Koordinate negativ ist.
-
Diese ergeben zusammen 12 Uhr.
-
Sie können einfach versuchen x1 und y1 und minus x1y1 in die Formel einzusetzen.
-
Versuchen wir das mal:
-
Angenommen, wir sagen, x2 ist minus x1 und y2 ist y1
-
und setzten es in die Formel ein.
-
Sie sehen die erste ähm...
-
Die erste Koordinate der Antwort, welche ist: x1*y2 = y1
-
Und y1= -x1*x2... ähm sorry,
-
x2 ist -x1*y1. Die ergibt im Endeffekt null.
-
Das ist, was wir für 12 Uhr erwartet haben.
-
Nächster Teil: y1y2 = y1 mal y1 minus x1*x2, das ist
-
minus x1 mal minus x1 = x1 im Quadrat,
-
und x1 im Quadrat + x1 im Quadrat ist gleich 1.
-
Wir können etwas herumspielen mit Additionen und Multiplikationen.
-
Diese Formel können wir verwenden, um alle möglichen Punkte zu addieren.
-
Okay.
-
Nun wird es noch etwas diskreter.
-
Wir können den Kreis vergessen der unendlich viele Punkte hat.
-
Sie können jede reelle Zahl nehmen und einfach Quadratwurzeln ziehen.
-
Wir machen das mit einem sehr kleinen Menge von Elementen.
-
Wir machen mit Uhrzeiten über Suchfelder.
-
Ich beschränke mich jetzt nur auf die Zahlen 0, 1, bis 6.
-
Das ist also, wofür diese F7 steht.
-
Ich will diese Zahlen addieren und multiplizieren können.
-
Wenn ich 2 und 5 multipliziere, ist das ist größer als 10.
-
Diese Zahl ist größer als die Menge, die ich dort zur Verfügung habe.
-
Lasse ich nur 6 als größte Zahl zu, gehört 10 nicht zur Menge.
-
Also werde ich das reduzieren und den Modulus 7 nehmen.
-
Wir haben einige Python-Schnipsel versprochen.
-
Wir erfahren nun, wir wir beispielsweise alle diese Elemente finden können.
-
Wir gehen alle x zwischen 0 und 7 und y zwischen 0 und 7 durch.
-
Wir überprüfen einfach, ob x mal x plus y mal y = 1 ist.
-
Ist dies der Fall, drucke ich das Doppelte xy aus.
-
Dann drücke ich die Eingabetaste und wir erhalten diese Punkte für das Bild.
-
Wir haben keine bis 6 verwendet, wir möchten die Symmetrie beibehalten.
-
Wir haben -3 bis + 3 genutzt. -3 ist hier drüber, +3 hier.
-
+ 3 ist in der y-Richtung und - 3 ist in der y-Richtung
-
Das ist der Punkt 0,1, also derselbe Punkt, den wir vorher auf der Uhr hatten.
-
Also ist dies die Uhrzeit.
-
Es ist der Punkt 2,2
-
Okay.
-
Wir verwenden die Uhradditionsfunktion.
-
Wir zeigen eine Funktion, um Punkte der Uhr hinzuzufügen.
-
Es ist hilfreich, Plus und Minus bei den Uhrzeiten schreiben zu können,
-
die diese Reduzierung automatisch durchführen, Mod 7.
-
In Python können wir einen Plus- und Minus- und Hoch-4 und F7-Klasse einrichten.
-
Diese sind getrennt, von den
-
üblichen für Plus-Minus und die Multiplikationen für Ganzzahlen.
-
Um dies einzurichten gehen Sie bitte wie folgt vor:
-
Hier ist eine F7-Klasse, einen Integer x liest und ein F7-Element initiiert.
-
Hierbei handelt es sich um die in den Integer Mod 7.
-
Wenn Sie F7 von 7 nehmen, wird 7 mod 7 berechnet.
-
Der Quotient ist 1
-
Der Rest ist 0
-
Man fügt 0 in self.int ein.
-
Dieser Stir-and-Wrapper, eventuell nicht die eleganteste Möglichkeit zum Drucken von Dingen,
-
gibt aus, dass alles Mod 7 ist.
-
Wir drucken nur die Ganzzahl aus, die wir bei 7 erhalten.
-
7 Mod 7 gibt 0 und 10 mod 7,
-
war das Beispiel von Tanja eben, wo der Rest 3 ergibt.
-
Und 20 mod 7, subtrahiert man 7, und subtrahiert wieder 7, erhält man eine 6.
-
Man kann also in diese F7 jeden integer eingeben, den man möchte.
-
Dafür nehmen wir diesen Integer-Mod7.
-
Nun können wir F7 einige weitere Funktionen hinzufügen.
-
Beispielsweise können Sie einen Gleichheitstest durchführen.
-
Pythons default Gleichheit ist ziemlich dumm.
-
Das was ich eigentlich tun möchte, ist folgendes:
-
Ich möchte diese Punkte vergleichen, die den gleichen F7-Wert haben.
-
Okay.
-
Nun wurde dieser F7-Typ um eine Gleichheit erweitert.
-
Sie können sehen, dass F7 von 10 und F7 von 3 gleich sind.
-
F7 von 0 und F7 von 2 sind nicht gleich.
-
Wir haben von 0 bis 6 als Möglichkeiten für die Werte einer Variablen ausgedrückt.
-
Dann folgt die Addition, Subtraktionen und Multiplikation.
-
Schauen wir uns die Addition an, dann ist der typische Fall.
-
Sie nehmen zwei a und b.
-
Dann nehmen Sie eine Integer innerhalb einer Integerrange von 0 bis 6.
-
Addieren Sie diese auf der Seite b von 0 bis 6.
-
Sie erhalten 0 bis 12.
-
Diese geben Sie dann wieder in den F7 Konstruktor ein.
-
Sie haben jetzt wieder 0 bis 6.
-
Unten sind einige Beispiele von 2 plus 5 = 0
-
2 minus 5 ist -3.
-
Das ist 4.
-
Wenn Sie in C programmieren, achten Sie auf folgendes:
-
Der Prozentwert darf den Mod nicht ausführen, den wir mathematisch wollen.
-
Pythons Prozentwert macht das Richtige und C gibt negative Zahlen aus.
-
Prozent in Python gibt Ihnen immer 0 bis 6.
-
Oder 0 bis zu jeder Zahl, die Sie genommen haben.
-
Ähm
-
2 mal 5 war wieder das Beispiel von 10, wo Mod 7= 3 ergibt.
-
Okay.
-
Jetzt haben wir eine kleine Uhr gesehen.
-
Da konnte ich einfach alle Elemente zeichnen,
-
und wir konnten sie durchgehen und ausprobieren.
-
Alles was Dan mit dem Python-Setup gezeigt hat, da kann ich 7 durch eine größere Zahl ersetzen.
-
Sagen wir mal 1.000.003, das ist auch eine Primzahl.
-
Ich gehe hin und definiere eine Addition von Kurvenpunkten.
-
Das ist genau das, was wir vorhin auf der echten Uhr gemacht haben.
-
Nun werde ich die Elemente 1.000.003 einfügen.
-
Ich nehme also meine Punkte und mache x1y2, y1x2 und so weiter.
-
Dann bekomme ich den Punkt zurück.
-
Wir machen nun ein Beispiel dazu.
-
Einer der vielen Punkte, die ich in die x-Koordinate einfüge ist 1000.
-
Denken Sie daran, dass es aus 1000 aus 1.000.003 ist.
-
Anschließend überprüfe ich, ob es eine y-Koordinate gibt und dazu passt.
-
Ja, gibt es grob.
-
Habe ich also 1000, erhalte ich eine Million im Quadrat und 2 ergibt 4.
-
Das ist nur 1 größer als die 1.000.003.
-
Ja, das ist also ein gültiger Punkt.
-
Jetzt kann ich diesen Punkt übernehmen und addiere ihn zu sich selbst.
-
Ich setzt einfach p und p in die Addition ein, die 4007 ergibt.
-
Ich kann es immer und immer wieder zu sich selbst addieren.
-
Ich addiere immer weiter bis ich am Ende 6 Kopien habe.
-
Ich füge sie zusammen und habe nun diesen Punkt.
-
Wenn Sie das sehen, denken Sie natürlich: Warte mal.
-
Muss ich tatsächlich alle diese 5 Additionen machen?
-
Nein.
-
Wenn ich beispielsweise bei p3 aufgehört hätte.
-
Das ist dreimal der Punkt und addiere dann p3 plus p3
-
Das sind also 3 Kopien plus weitere 3 Kopien, sind auch 6 Kopien.
-
Diese beiden Dinge haben das gleich Ergebnis.
-
Möchte ich das also professioneller machen,
-
ist hier die Modifikation der Scale.
-
Okay
-
Das ist eine rekursive Funktion zur Berechnung von n mal p.
-
Sie haben einen beliebigen Punkt auf der Uhr p in einem beliebigen Skalar,
-
Jeden nicht negativen Integer n, den Sie möchten.
-
Wenn n 0 ist,
-
dann geben Sie den 12-Uhr-Punkt zurück.
-
Wenn n = 1 ist, geben Sie den Punkt p einmal zurück,
-
also p ist p.
-
Und dann, wenn n gerade ist, dann ändert der Python seine Notation im Laufe leicht.
-
n // 2 ist der richtige Weg, um eine durch 2 geteilte Integer nehmen.
-
Und den Rest wegzuwerfen.
-
So ist n // 2, gerade bei n^2.
-
Wenn n*2 ist wird rekursiv n mal p berechnet.
-
Wie zum Beispiel 3 mal p, wenn n gleich 6 ist.
-
Dann kommt bei (Q,Q) heraus, das n^2 mal p zu verdoppeln.
-
Man erhält np, wenn n ungerade ist.
-
Dann ist das n über 2 .
-
Anschließend nehmen Sie das dann mal p.
-
Verdoppeln sie das, was n minus 1 mal p ergibt.
-
Addieren Sie p dazu.
-
Das heißt, wenn n mod 2 ungleich Null ist, dann addieren Sie p zu q.
-
Schließlich erhalten Sie n mal p in allen unterschiedlichen Fällen.
-
Anschließend haben wir für das eine 6stellige Zahl n versucht.
-
Das wird hier auf der Folie nicht gezeigt.
-
Es ist geheim und es waren etwa 30 Uhrzeit-Additionen erforderlich.
-
Das waren nicht sehr viele Multiplikationen, um n mal p zu berechnen.
-
Das ging sehr schnell.
-
Es kommt sofort heraus und das ist die Antwort.
-
Es gibt die x- und y-Koordinaten von n mal p für das geheime n, das es war.
-
Nun ist es nicht mehr so offensichtlich, wie man herausfinden kann, was n ist.
-
Sieht man das n mal p, und arbeitet dann rückwärts zum n, dann weiß man, welches p ist.
-
Sie wissen was n mal p ist.
-
Sie wissen, dass n nicht zu groß ist.
-
Okay
-
Es gibt nur eine Million Möglichkeiten.
-
Das ist keine wirklich ausgefallene Berechnung.
-
Es wird allerdings einen Moment dauern, bis es erledigt ist.
-
Es ist etwas, bei dem der Computer einiges rechnen muss.
-
Sie können nun vielleicht versuchen, das schneller zu machen.
-
Allerdings könnten wir dann versuchen, die Zahlen größer zu machen.
-
Statt 1.000.003 könnten wir immer noch n mal p machen.
-
Wobei n viel größer ist und die 1.000.003 eine viel größere Primzahl ist.
-
Hier gibt es also eine kleine Herausforderung.
-
Sie können nun versuchen herauszufinden, was dieses n ist.
-
Dies ist schwieriger, als eine SMS an die Telefonnummer zu senden, die gerade nicht funktioniert.
-
Ooh! ... Gemurmel
-
Nehmen wir also an, wir machen es viel schwieriger.
-
Wir machen es sehr schwierig.
-
Wir haben das Gefühl, dass Sie es für Kryptographie verwenden möchten.
-
Jemand möchte die Uhrzeit-Kryptographie standardisieren .
-
Dann beginnen Sie mit der Standardisierung einer großen Primzahl p.
-
Große Zahl, also keine Million.
-
So groß mit mehreren Tausend Bits.
-
Sie können auch folgendes machen:
-
Sie standardisieren einen Basispunkt.
-
Diese p auf der vorherigen Folie bedeutet:
-
Wir geben Ihnen p, wir geben Ihnen n-mal p.
-
Wir geben Ihnen einfach kein n.
-
Wir nehmen an, dass Ihnen jemand ein kleines p gibt, das die Primzahl ist.
-
Dieser Basispunkt P, x- und y-Koordinaten , die auf der Uhr stehen.
-
Was machen Alice und Bob, wenn sie kommunizieren wollen?
-
Ich würde gerne etwa an den Bob schicken.
-
"Ich bin Bob".
-
Dann wählt Alice, bzw. ich aus:
-
Mein Geheimnis, a.
-
Berechne a mal diesen Basispunkt.
-
Dies ist die Berechnung, die du gerade auf der vorigen Folie gesehen hast.
-
Sie ist immer noch sichtbar.
-
Dies ist also genau wie eine logarithmische Zeit von der Größe a.
-
Anschließend sende ich das an Dan.
-
Dann denke ich, ich muss etwas berechnen.
-
Ich nehme mein eigenes großes Geheimnis b, das ich niemandem verraten werde.
-
Dann berechne ich b mal das gleiche Standard (X,Y)
-
Ich sende mein b-mal (X,Y) an Alice zurück.
-
Alles klar.
-
Jetzt habe ich also sein b mal den Basispunkt.
-
Er hat mein a mal Basispunkt.
-
Ich weiß jetzt noch, was mein a war.
-
Ich nehme nun dieses a und den neuen Punkt, den er mir gerade gesendet hat.
-
Dann setze ich diesen Punkt in die Skarlarmultiplikation ein.
-
Ich mache die gleichen Schritte, addiere den Punkt zu sich selbst.
-
Und den Punkt zu dem Punkt, den er mir geschickt hat.
-
Dies sind also die gleichen Schritte hier, außer dass dieses p jetzt der Punkt ist, den er mir gesendet hat.
-
Es ist nicht mehr der Basispunkt.
-
Auf diese Art und Weise berechne ich a mal b mal p.
-
Okay.
-
Nun bekomme ich ihr a mal (X,Y).
-
Ich nehme mein geheimes b und multipliziere es mit dem a mal (X,Y).
-
Nun bekomme ich mein b mal a mal den Punkt (X,Y).
-
Ich habe das gleiche Ergebnis erhalten.
-
Nun hat sie a* b mal (X,Y) berechnet.
-
Ich habe b*a mal (X,Y) berechnet.
-
Das ist dasselbe.
-
Sie sind beide a mal b Vielfache von (X,Y).
-
Wir addieren a mal b Kopien von (X,Y).
-
Nun verwenden wir das geteilte Geheimnis zum Verschlüsseln von Daten.
-
In Ordnung.
-
Wir haben auch ein Bild davon.
-
Auch wenn wir nichts anderes machen.
-
Und Bob, hier sehen Sie, wie die Nachricht jetzt verbreitet wird.
-
Sollten Sie der Lauscher sein, wollen Sie herausfinden, was wir haben.
-
Du kannst nicht sehen, was ich hier mache.
-
Du kannst nicht sehen, was Dan hier macht.
-
Du kannst nur sehen, was hierher gesendet wird.
-
Du weißt, was das kleine p ist und was der Basispunkt ist.
-
Zumindest ist das ist das, was wir uns wünschen.
-
Nun gibt es aber einige Vorbehalte:
-
Verwenden Sie nicht einfach irgendein Primzahl-p.
-
Viele Auswahlmöglichkeiten von p sind unsicher.
-
Warnung 2!
-
Dies ist immer noch die Uhr.
-
Und wir haben am Anfang gesagt, dass Uhren keine elliptischen Kurven sind.
-
Nur elliptische Kurven sind gut.
-
Demnach sind die Uhren eigentlich eigentlich fast das
-
Gleiche wie "RSA" oder "Finde das Feld".
-
Wenn Sie etwas finden möchten, das RSA 3072 Bits hat, dann muss Ihre Uhr die Primzahl haben.
-
Die Uhr muss 1536 haben, also halb so viele Bits wie RSA Zahlen.
-
Das ist nicht das, was Sie tatsächlich möchten.
-
Okay.
-
Dritte Warnung: Timing-Angriffe
-
Eben haben viele von Ihnen über Bleichenbacher-Angriffe gegen SSL gesprochen.
-
Viele der Informationen von einem angegriffenen Server oder Client stammen vom Timing.
-
Der Angreifer sieht sich nicht nur das Abhören der öffentlichen Schlüssel a mal x y und b mal x y an.
-
Er sieht auch, wie lange Sie für Berechnungen gebraucht haben.
-
Der Angreifer kann sogar oft sehen,
-
wie lange Sie für jeden einzelnen Vorgang gebraucht haben.
-
Die funktioniert, weil es elektromagnetische Emissionen oder Funkemissionen
-
oder Cache-Effekte auf virtuellen Maschinen gibt.
-
Diese wirken sich auf andere virtuelle Maschinen aus, die unter demselben Hypervisor
-
auf derselben physischen Hardware ausgeführt werden.
-
Sie können dann als Angreifer auf Informationen zugreifen,
-
wie lange Alice und Bob brauchen.
-
Sie sehen diese Berechnung nicht wirklich,
-
aber Sie sehen die physikalischen Auswirkungen dieser Berechnung.
-
Stellen Sie sich einfach vor, Eves Ohr ist genau hier.
-
Sie kann hören und sie kann spüren, was die Berechnungen bewirken.
-
Tatsächliche können Sie das akustische Summen von Ihrer CPU hören,
-
sofern Sie ein ausreichend gutes Mikrofon daneben platzieren.
-
Dies hängt auch von den Berechnungen ab, die es ausführt.
-
Es gibt hier einige echte Beispiele für Timing-Angriffe.
-
2 von den 3 ausgewählten Beispielen sind ECC Beispiele.
-
Ein Beispiel davon ist der Lucky-13-Angriff.
-
Das war nicht gegen ECC. Das ist eine andere Art von Timing-Angriff.
-
Wir wollen Ihnen die Vorstellung vermitteln, dass Timing-Angriffe wirklich wichtig sind.
-
Dies ist ein Großteil dessen, was bei echten Kryptographie schief läuft.
-
Abgesehen von deren Unbrauchbarkeit und anderen kleinen Problemen.
-
Ähm.
-
Die Lösung für dieses spezielle Problem und das Timing zu sehen ist folgendes:
-
Die Berechnungen müssen immer in konstanter Zeit durchgeführt werden.
-
Abhängig von Ihrem Skalar,
-
dürfen Sie nicht unterschiedlich viel Zeit aufwenden.
-
Wenn Sie einfach immer dieser Regel folgen, haben Sie bei jedem Geheimnis bei geheimes Timing mehr.
-
Der Angreifer erhält nichts.
-
Ihr gesamtes Timing ist öffentlich.
-
Selbstverständlich ist es etwas mühsam, so Berechnungen durchzuführen.
-
Auf diese Weise können Sie es immer tun, aber es verlangsamt die Dinge sehr.
-
Ich denke, das ist leichter gesagt als getan.
-
Lasst uns zurück zu Warnung Nr. 2 gehen.
-
Wir nehmen an, dass konstante Zeit für Berechnungen sich um Warnung Nr. 3 kümmert.
-
Wir gehen zurück zu Warnung Nr. 2.
-
Uhren sind nicht elliptisch.
-
Lasst uns diesen Kreis, diese Uhr, in eine elliptische Kurve verwandeln.
-
Wir nehmen also den Kreis und drücken ihn nach innen.
-
Mathematisch führen wir nun einen zusätzlichen Term ein,
-
statt dass x zum Quadrat plus y zum Quadrat = 1 ist.
-
Sagen wir, dass x zum Quadrat plus y zum Quadrat = 1- 30 x^2 y^2 ist.
-
Also ist dieser zusätzliche Term hier die Differenz zwischen einem Kreis und einer Edwards-Kurve.
-
Oder eine elliptische Kurve.
-
Diese bestimmte Kurve wird also eine Edwards-Kurve genannt.
-
Aber es ist ein Beispiel für elliptische Kurven.
-
Ich möchte nun Punkte hinzufügen.
-
Wir erinnern uns daran, wie es auf dem Kreis aussah.
-
Auf dem Kreis hatte ich den neutralen Betrag oben.
-
Ich behalte das bei.
-
Sodass das Hinzufügen von irgendetwas zur 12-Uhr-Position nicht an dem Wert ändert .
-
Der Wert ist hier immer noch derselbe.
-
Ich habe hier nur p1, p2 und p3 durch diese Formeln hinzugefügt.
-
Nun funktionieren diese normalerweise nicht auf der elliptischen Kurve.
-
Der Grund ist, da es dieses - 30 x^2 * y^2 gibt.
-
Daher müssen wir auch hier unten eine kleine Anpassung vornehmen.
-
Daher gibt es nun einen Nenner.
-
Nehmen Sie d = 0 an, dann ändert sich die Formel in den Kreis
-
Auch in die Additionsformeln ändern den Kreis, denn diese 30 hier ist eine Null.
-
Sie wird also einfach durch 1 geteilt.
-
Der Kreis kommt als Sonderfall für diese elliptische Kurve heraus.
-
Nun nehmen wir minus 30 und haben eine schöne elliptische Kurve.
-
Die Additionsformeln sind nicht viel schlimmer. Sie sind nur ein kleiner zusätzlicher Term.
-
Okay
-
Sie können, wenn Sie eine Primzahl p haben, 7.000.003,
-
irgendetwas viel größeres nehmen.
-
Sie können jedes nichtquadratische d nehmen, wie minus 30,
-
jedes d, das kein Quadrat von irgendetwas Modulo p.
-
Dies ist etwas, das Sie schnell überprüfen können.
-
Dann können Sie folgendes aufschreiben:
-
Die Kurve mit x^2y^2 = 1 plus d.
-
Das ist eine elliptische Kurve.
-
Und es ist nur das zusätzliche d als zusätzliche Komplikation.
-
Wenn Sie clock cryptography verstanden haben,
-
dann ist diese zusätzliche kleine Komplikation alles,
-
was Sie für die Elliptische-Kurven-Kryptographie benötigen.
-
Es gib die Additionsformel, die gerade aus den mathematischen Formeln
-
aus vorangegangenen Folien übersetzt wurde.
-
Sie sieht fast genauso aus, wie zuvor.
-
Außer, dass bei x3 und y3 das d an der Stelle des Nenner haben.
-
Nun könnten Sie sich über dieses Aussage beklagen.
-
Warten Sie eine Minute, bevor Sie dividieren.
-
Sind Sie überhaupt in der Lage zu dividieren?
-
Was passiert, wenn Sie durch Null dividieren?
-
Vielleicht funktionieren diese Formeln nicht immer.
-
Das ist ein wichtiger Punkt, auf den Sie achten müssen.
-
Achten Sie daraus, dass Sie, wenn Sie durch etwas dividieren, nicht durch Null dividieren dürfen.
-
Es stellt sich aber heraus, dass die Nenner dort 1+d x1 x2 y1 y2 und 1- d x1 x2 y1 y2
-
niemals gleich 0 sind.
-
Diese Formeln sind vollständig.
-
Sie funktionieren immer.
-
Ich denke, dass Sie annehmen, dass Formeln immer funktionieren sollten.
-
Es ist ganz ärgerlich, wenn es Ausnahmefälle gibt.
-
Aber in der Kryptographie mit elliptischen Kurven gibt es so viele Ausnahmefälle.
-
Die Menschen machen sich oft Sorgen.
-
Einer der Gründe, warum wir diese diese Art von elliptischer Kurve mögen,
-
ist, dass es keine Ausnahmefälle gibt.
-
Wir bezeichnen das Additionsgesetz als vollständig.
-
Falls Sie sich ansehen, wie der mathematische Teil des Beweises funktioniert, ist folgendes wichtig:
-
d war kein Quadrat. Aber auch das ist etwas, das Sie leicht überprüfen können.
-
Und haben Sie sich erst einmal für ein d entschieden, das nicht quadratisch ist
-
und das jeder verwenden kann, wird es in den Formeln nie Ausnahmen geben.
-
Wenn Ihr d - äh - quadratisch ist, dann können Sie sich die gleichen Formeln aufschreiben.
-
Meistens funktionieren sie, aber es gibt Ausnahmefälle.
-
Und wir werden noch viel mehr über Ausnahmefälle erfahren.
-
Und das Ärgerliche daran ist nicht nur, dass sie schwer zu programmieren sind.
-
Sondern, wenn man irgendwelche Fehler macht, wird es schwierig sein,
-
diese Fehler zu finden und auf diese Fehler zu testen.
-
Und wenn ein Angreifer mehr darüber nachdenkt
-
und ihnen einige Punkte findet, die diese Fehler ausnutzen, bricht das oft echtes ECC.
-
Es ist also besser, eine Kurve zu nehmen, wo das d kein Quadrat ist.
-
Dann müssen Sie sich überhaupt keine Sorgen mehr darüber machen.
-
Okay.
-
Kurz dazwischen... (schwer verständlich)
-
Mit über einem finalen Feld (?) jedes zweite d ist kein quadratisches.
-
Daher ist dies keine große Einschränkung.
-
Und entfernt nur die Hälfte der Möglichkeiten.
-
Weiterhin sind Divisionen wirklich langsam.
-
Wenn Sie die implementieren, die Sie vorher im Python-Skript gesehen haben,
-
haben wir noch nicht mal Divisionen eingefügt.
-
Wir haben Sie online, aber es ist so, dass es eine Weile dauert.
-
Es ist unangenehm.
-
Es dauert sogar noch länger, wenn Sie sich Sorgen über ständige Zeitbeschränkungen machen.
-
Also fangen wir an Divisionen loszuwerden.
-
Das ist so wie "Doktor, Doktor, mein Knie schmerzt" und er sagt dann: "Verwenden Sie es nicht".
-
Aber mathematisch, hier können wir die Verwendung von Divisionen vermeiden.
-
Wenn Sie sich daran erinnern, wie Sie mit Brüchen a/b + c/d gearbeitet haben,
-
dann wissen sie, dass wir sie als Brüche behalten.
-
Bei einem Bruch multiplizieren Sie einfach die Nenner und
-
kreuzmuliplizieren die Zähler und dann können sie addieren.
-
Daher machen wir mit unseren Punkten das Gleiche.
-
Wir führen eine zusätzliche Koordinate ein, die Z-Koordinate.
-
Sie ist nur der Nenner.
-
Anstatt Punkte als (X,Y) zu speichern, speichern wir jetzt (X,Y,Z).
-
Hierbei bedeutet X und Y, dass das alte x und y, x/z und y/z ist.
-
Sie können aber auch etwas abenteuerlustiger sein.
-
Und erzielen dann eine bessere Geschwindigkeit,
-
wenn Sie eine zusätzliche Koordinate namens t einführen.
-
T = XY / Z
-
Sind Sie daran interessiert, wie sie das effizient tun
-
und tatsächlich computerverifizierte Formeln erhalten?
-
Dann besuchen Sie bitte die "Explicit Formulas Database" unter dem dortigen Link,
-
um zu sehen wie man Additionen durchführt.
-
Okay.
-
Wir kommen nun zu der Darstellung von Crypto zurück.
-
Wir ersetzen die Uhr durch eine elliptische Kurve.
-
Das macht die Formeln etwas komplizierter.
-
Außerdem muss noch eine zusätzliche Auswahl getroffen werden.
-
Nicht nur die Primzahl p ist standardisiert, sodass jeder sie verwenden kann.
-
Standardisieren Sie dieses d, das kein Quadrat ist,
-
sodass jeder sie verwenden kann.
-
Es muss eine sichere Wahl sein.
-
Denken Sie an die Warnung Nr. 1
-
Es gibt viele unsichere Entscheidungen.
-
Es gibt viele mögliche Standardkriterien.
-
Diese müssen überprüft werden, um sicherzustellen,
-
dass es sich um sichere Entscheidungen für Kurven handelt.
-
Am Ende des Vortrags werden mehr über Standards sagen.
-
Alice hat dann wie vorher ihren geheimen Schlüssel und multipliziert diesen mit x, y und
-
Oh
-
Ich überspringe, was auf dieser Folie steht.
-
Auf dieser Folie steht Alice auch Bobs öffentlicher Schlüssel b(x,y) besitzt.
-
Das hört sich alles so an, wie bei der Uhr.
-
Alice nimmt jetzt das b(x,y) und
-
multipliziert es mit a.
-
Das ergibt a(b(x,y)).
-
Sie merkt sich dann,
-
dass a(b(x,y)) das Geheimnis zum Verschlüsseln und Authentifizieren von Daten ist.
-
Da wir jetzt elliptische Kurven haben,
-
müssen wir uns keine Sorgen mehr darüber machen, dass eine Indexrechnung alles kaputt macht.
-
Wir brauchen keine Tausenden von Bits.
-
Hier sind nun einige tatsächliche reale Größen für elliptische Kurven Kryptographie.
-
Inklusive ist die gesamte und secret key encryption
-
und Authentifizierung des öffentlichen Schlüssels.
-
Sie können eine Primzahl haben, die nur 256 Bit groß ist.
-
Wir werden später sagen, dass Sie x und y zusammen nur auf 256 Bit reduzieren können.
-
Das reduziert dann den öffentlichen Schlüssel von Alice a(x,y) um ein Vielfaches.
-
a(x,y) wird auf nur 32 Bytes reduziert.
-
Diese wird Alice an Bob senden.
-
Dann gibt es noch ein paar zusätzliche Dinge, wie eine Nonce, eine Zufallszahl.
-
Damit Sie nicht jedes Mal, wenn eine Nachricht senden,
-
diese auf die gleiche Weise verschlüsseln müssen.
-
Sonst könnte jemand sehen, dass sich die Verschlüsselung wiederholt.
-
Es gibt es auch einen Authentificator.
-
Bob kann damit überprüfen, ob das Paket korrekt ist.
-
Dann erhält Bob sein Paket.
-
Er sagt: "oh ja, es ist ein Paket von Alice."
-
Es gibt Alices öffentlichen Schlüssel, wenn Bob den geteilten Schlüssel noch nicht kennt,
-
dann nimmt Bob sein Geheimnis,
-
multipliziert es mit dem öffentlichen Schlüssel und erhalt dasselbe b(a(x,y).
-
Dann führt er die Krytographie mit geheimem Schlüssel durch.
-
Er verifiziert das eingehende Paket.
-
Er verifiziert den Authentifikator unter Verwendung der Nonce
-
und des öffentlichen Schlüssels von Alice.
-
Er hat zu diesem Zeitpunkt bestätigt, dass das von Alice ist.
-
Hat Bob noch nie von Alices öffentlichem Schlüssel gehört,
-
weiß er nicht, wer Alice ist.
-
Aber er erhält Kontinuität zwischen den unterschiedlichen Nutzungen.
-
Und fügen Sie dann Zertifikate oder andere öffentliche Schlüsselinfrastruktur hinzu,
-
wissen Sie tatsächlich, mit wem sie kommunizieren.
-
Alles worüber wir hier reden,
-
die ganze public key und secret key Sache, ist so schnell,
-
dass wir uns es leisten können,
-
das für jedes einzelne Paket zu machen, das das Internet durchquert.
-
Gut.
-
Wir haben Ihnen im Moment noch nicht gesagt, was Sie verwenden sollen.
-
Hier ist nun ein sicheres Beispiel.
-
Du bist leise!
-
Dies ist also ein sicheres Beispiel, das dann nicht beworben werden sollte.
-
Es ist sein eigenes.
-
Ähm
-
Ich kann aber sagen, dass es ein gutes Beispiel ist.
-
Sollten Sie also eine große Primzahl als Ihre Primzahl nehmen, hat sie 255 Bits.
-
Es ist eine sehr schöne Primzahl.
-
Das Berechnungsmodul für diese Primzahl ist schnell.
-
Sie liegt sehr nahe an einer Zweierpotenz.
-
Sie führen also diesen Mod aus.
-
Diese Prozentoperation kann diese Zahl sehr schnell reduzieren.
-
Dann sieht d ziemlich klein aus.
-
Hier haben Sie auch eine Edwards -Kurve.
-
Es gibt eine andere Edwards-Kurve.
-
Diese nutzt das gleiche d
-
und fügt dort nur ein Minus ein.
-
Außerdem fügt man ein Minus vor dem x^2 ein.
-
Dies ist eine andere Kurve, aber fast die gleiche.
-
Für jedes (x,y) von zuvor, haben wir nun
-
die Quadratwurzel von Minus 1 *xy und das gleich y wie zuvor.
-
Somit ist es nur mit einer kleinen Änderung die erste Kurve.
-
Außerdem haben wir viele Wege wie man elliptic curves schreibt.
-
Hier ist eine ganze Liste mit verschiedenen Arten von elliptic curves.
-
Also das erste was wir Ihnen bereits gezeigt haben,
-
die Uhr, in der Sie in die Ecken reindrücken, ist eine Edwards-Kurve.
-
Ich hätte hier gerne einen zusätzlichen Term wie dieses minus 1.
-
Ich behalte mir hier im Allgemeinen einen Koeffizienten a vor.
-
Den kann ich dann etwas eingeben.
-
Äh
-
Zum Beispiel minus 1.
-
Das nennt man eine verdrehte Edwards-Kurve.
-
Es gibt noch ein paar andere Dinge, die man in Lehrbüchern findet.
-
Diese nennt man Weierstrass-Kurven.
-
Es gibt auch noch die Montgomery-Kurven.
-
Diesen kann man sich als Sonderfall von Weierstrass-Kurven vorstellen.
-
Sie haben eine ähnliche Form wie y^2 = x^3
-
Hier gibt es einige unterschiedliche Terme.
-
Wenn Sie eine Kurve haben, können Sie von einem zum anderen und zurück wechseln.
-
Beispielsweise von einer Montgomery-Kurve zu einer Edward Kurve.
-
Okay.
-
Aus historischen Gründen findet man Standards für ECC.
-
Okay.
-
Haltet Euch zurück. Das wird schrecklich.
-
Das sind Weierstrass-Kurven.
-
Hier ist das Additionsgesetz.
-
Es zeigt, wie man 2 Punkte auf einer Weierstrasskurve addiert.
-
Kurze Pause. Zwischenrufe!
-
Oh, das ist gar nicht so schlecht.
-
Es gibt 6 verschiedene Fälle.
-
Wir gehen sie mal durch.
-
Nein, nein, lasst uns sie nicht durchgehen.
-
Das ist - äh - wenn Du nur einen Teil davon nimmst.
-
Dann könnte es so aussehen, als würde es die meiste Zeit funktionieren.
-
Meistens funktionieren die ersten Formeln.
-
Solange, bis man etwas Verrücktes wie p + p macht und es dann nicht funktioniert.
-
Dann gibt es immer mehr Ausnahmefälle.
-
In einigen dieser Fälle merkt man es zunächst gar nicht.
-
Un dann versucht man einen Code dafür zu schreiben.
-
Es geht einfach immer weiter.
-
Dann versucht man es zu testen und ist sich nicht sicher, ob man alle Tests richtig gemacht hat.
-
Aber okay.
-
Das ist das, was man in ECC-Standards findet.
-
Alles klar.
-
Schöner als Weierstrass- und Montgomery-Kurven ist eine unserer Lieblingskurven.
-
Hier sehen Sie die gesamte Arithmetik.
-
Die Ausnahme ist, dass ich Ihnen nicht gezeigt habe, wie ich den Austausch mit konstanter Zeit durchführen werde.
-
Hier gibt es ein bedingtes Bit, das x2 mit x3 vertauscht.
-
Wir können das in konstanter Zeit erledigen.
-
Ersetzen Sie diese Anweisung durch etwas, das folgendes besagt:
-
"Es bleibt oder es wird ausgetauscht."
-
Das ist eine ganze Addition auf Montgomery.
-
Für jedes Bit machen Sie diese paar Schritte.
-
Und Sie gehen die 255 Bits durch, die dort angegeben sind.
-
Dies ist ein weiterer schöner Fall von Arithmetik.
-
Beachten Sie bitte, dass wir hier nur eine x-Koordinate.
-
Für die Edwards-Kurve hätten wir x und y.
-
Es gibt also einige Unterschiede in dem, was wir damit machen.
-
Wir teilten Ihnen mit, dass wir über Standards sprechen werden.
-
Woher beziehen Sie Ihre Standards und wie können Sie diese verteidigen?
-
Sie treten gegen jemanden an, der mit einem Mathematiker antritt.
-
Mathematiker sind gruselige Menschen.
-
Sie kennen alle Arten von Angriffen.
-
Falls Sie diese Angriffe sehen wollen, haben wir am Ende ein paar URLs.
-
Aber im Grund kennen wir diese Angriffe.
-
Vereinbaren Sie bestimmte Eigenschaften, die Ihre Kurve haben soll.
-
Und was diese Standards Ihnen garantieren.
-
Wenn Sie einen dieser Standards auswählen, ist die Kurve ist für den folgenden Angriff sicher.
-
Jemand sieht das Ergebnis Ihrer Berechnung.
-
Er kennt den Basispunkt.
-
Er kennt Ihren öffentlichen Schlüssel.
-
Er ist aber nicht in der Lage herauszufinden, was Ihr a oder b war.
-
Man nennt dies das Problem des elliptischen diskreten Logarithmus.
-
Und wir haben ganz viele Arbeiten, um die Schwierigkeit zu untersuchen.
-
Als Mathematiker untersuchen wir, wie schwer es bei einer bestimmten Kurve ist, eine Lösung zu finden.
-
Um so die elliptische, diskrete Protokoll zu knacken.
-
Sie möchten beispielsweise, dass Ihr Punkt, wenn Sie ihn mehrmals mit sich selbst addieren,
-
über eine lange, lange, Zeit verschiedene Punkte ergibt,
-
bis Sie zum Beispiel wieder zum gleichen Punkt zurück gelangen.
-
Also z.B. nach l Phasen sind Sie wieder zurück.
-
Dieses l sollte groß sein, Ich denke z.B. 2 hoch 250 oder etwas anderes großes.
-
Und ja das sind alle Skripte also ist dies eines der Eigenschaften aber da sind viele weitere.
-
Okay, lasse wir uns annehmen, dass Sie es implementieren.
-
Sie nehmen eines der Standards und wieder mal sind sind sie alle ähnlich.
-
Klar, es gibt Unterschiede im Detail,
-
aber sie alle beschützen uns.
-
Und Sie implementieren den Standart...
-
Und Sie sagen, okay wir sind in Deutschland, wir nehmen die Brainpool Kurven,
-
da diese in deutschen Pässen verwendet werden.
-
In Ordnung, also wir nehmen Brainpool P256 t1,
-
dies gibt Ihnen eine Primzahl, die 256 Bits lang ist.
-
Außerdem eine Weierstrass-Kurve, y^2 = x^3 - 3x + etwas großes.
-
Und dann gibt es Ihnen einen Basispunkt (x,y),
-
und dann schauen Sie darauf und merken:
-
Oh, alle netten Formeln die vorher genannt wurden, ohne Ausnahmefälle,
-
wie Edwards und Montgomery, diese Formeln funktionieren nicht bei dieser Kurve.
-
Wenn Sie eine Kurve haben, die kompatibel mit den Formeln ist,
-
dann standardisieren Sie diese.
-
Dann kann jeder Punkt erfolgreich addiert werden und Sie können alle Ausnahmefälle vergessen.
-
Dafür brauchen Sie eine Kurve die mit den Formeln übereinstimmt,
-
leider funktioniert diese Kurve nicht mit Edwards und Montgomery,
-
daher müssen Sie zurück zu den chaotischen Weierstrass Formeln gehen.
-
Okay, Sie sind sehr vorsichtig und tun genau das was die Formeln aussagen.
-
Dabei nutzen Sie Testfälle für alles und haben die Weierstrass Konditionen
-
in allen sechs Fällen richtig implementiert .
-
Und Sie arbeiten in konstanter Zeit, sodass keine Informationen an Angreifer gegeben werden.
-
Dann haben sie eine Lösung die schmerzhaft langsam ist,
-
aber Sie können sich sicher über die Sicherheit sein.
-
Bis ein Angreifer kommt und sagt:
-
"Hi, lass uns uns Diffie-Hellmann hier nutzen.
-
Hier ist mein Punkt."
-
Okay, ich nehme... Ähm ich glaube ich bin Alice.
-
Ich habe ein a und nehmen den Punkt, den sie mir gesendet hat a mal.
-
Dies ist ihr öffentlicher Schlüssel.
-
Dies ist nicht das originale (x,y),
-
es ist ein anderes (x', y')
-
welches sie mir gesendet hat.
-
Und ich sende zurück mein a(x',y')
-
Und dann, wenn ich dies korrekt berechnet habe,
-
dann habe ich nun den Verschlüsselung- Authentifikations-Mechanismus genutzt.
-
Da mir jemand gesagt hat, dass ich Standard-Mechanismen nutzen soll.
-
Ich habe Daten verschlüsselt und diese durch das Netzwerk geschickt.
-
Ich bin im Netzwerk,
-
ich sehe seine AES-GMC verschlüsselte Nachricht.
-
Und nun, er weiß nicht,
-
dass es unabhängig von seinen a,
-
nicht viele verschiedenen Punkte gibt.
-
Ich habe ihm keinen Punkt auf der brainpool-Kurve genannt,
-
nein, ich habe ihm einen Punkt auf einer einfacheren Kurve gerannt.
-
Zum Beispiel hier, hat es nur fünf.
-
Die Brainpoolkurve ist viel viel größer,
-
dies hier ist eine nette Kurve.
-
Also dieser Punkt hat nur 4999 verschiedene Kopien.
-
Dies heißt, dass er nicht wirklich ausrechnet, was er denkt.
-
Ups!
-
Nun der Grund für diese Möglichkeit ist,
-
dass im ganzen Chaos der Weierstrass-Kurven, kein a6 existiert.
-
Also unabhängig davon, ob es das a6 ist als große Zahl für harte Kurven,
-
oder die 5 die ich eben für leichtere eingesetzt habe.
-
Es ist egal, der Angreifer nutzt eine der Formeln.
-
Dann gibt mir das a einen der 4999 verschiedenen Punkte,
-
woraus ich ein Modulo 4999 entwickeln kann.
-
Lassen wir uns das wiederholen!
-
Sie sendet mir einen anderen Punkt.
-
Hi Dan, hier ist ein anderer Punkt.
-
Ich nehme das neue (x',y') und berechne es a mal.
-
Dann sende ich etwas verschlüsseltes zurück mithilfe des geteilten Geheimnisses.
-
Und nun berechnet sie das gleiche.
-
Sie hat mir heimlich einen Punkt von einer kleinen Ordnung geschickt,
-
was ich nie bemerkt habe.
-
Nun hat sie mein geheimes modulo herausgefunden und nutzt verschiedene Nummern.
-
Wieder und wieder.
-
Dies geschieht etwa 20 mal und dann nutzt sie den Chinesischen Restsatz um mein ganzes Geheimnis zu knacken.
-
Auch wenn nur ein paar Schwachstellen gefunden werden,
-
ist dies genug um das ganze Sicherheitssystem ernsthaft zu beschädigen.
-
Wenn dies dann 20 mal passiert, dann habe ich ein echtes Problem.
-
Nun, was Leute dem häufig entgegnen ist, dass sie sagen:
-
Oh, ist dir die Fußnote im Standart nicht aufgefallen, welche besagt,
-
dass wenn du einen Punkt bekommst, du testen sollst, ob dieser auf der Kurve liegt?
-
Dh. schuld an der Attacke ist die Person, die die Implementierung vornimmt.
-
Dies ist der Weg, wie wir sichere Systeme erhalten,
-
wir weisen die Schuld immer dem Implementierer zu.
-
Das ist super, wenn etwas falsch mit dem System ist,
-
ist es der Fehler des Implementierers, dass das nicht überprüft wurde.
-
Applaus
-
Lassen Sie mich nicht von stir copy anfangen...
-
Sie sollten die Länge vom String... Sorry, das war falsch
-
Sie sollten aufpassen, dass dieser Punkt auf der Kurve ist,
-
Sie sollten aufpassen, dass die richtige Reihenfolge vorliegt.
-
wegen einer anderen ähnlichen Attacke.
-
Über die Art und Weise wie Patentgebühren an certicom gezahlt werden...
-
Okay, ich referiere dazu, wenn Sie einen Telefonanruf bekommen würden.
-
Wo gesagt wird, dass ein Patent zur Validieren steht...
-
Statt dem Implementierer die Schuld zuzuweisen, warum sollten wir nicht die Umstände verbessern.
-
Warum designen wir nicht Kryptographie anders?
-
Warum designen wir keine anderen Kurven,
-
sodass es nicht möglich ist bei der Implementierung zu versagen?
-
Wir wissen wir Implementierer ticken.
-
Wir sind Implementierer und wissen was wir falsch machen.
-
Und die Fehler wiederholen sich wieder und wieder.
-
Also lasst uns uns gegen diese Fehler schützen und ein robustes Design wählen.
-
Dies heisst für ECC, Sie nehmen das (x,y) was durchs Netzwerk ankommt
-
und verbieten, dass dieses (x,y) durch das Netzwerk weitergeschickt wird.
-
Sie haben nur ein x.
-
Und wenn das y^2 gleich zu etwas ist, dann könnte man, wenn man will,
-
das kommunizieren.
-
Sie können ein Bit senden, das angibt ob es plus oder minus die Quadratwurzel
-
von diesem y ist.
-
Oder man sendet einfach kein y.
-
Erinnern Sie sich an die Montgomery Formeln, diese brauchen noch nicht mal y.
-
So wenn Sie nur ein x senden, dass gibt es deutlich weniger Möglichkeiten für den Angreifer
-
um Punkte auszusuchen und Sie so zu veralbern wie eben.
-
Es gibt ein paar mehr Regeln, welche beim Aussuchen der Kurve
-
und beim Designen des Protokolls beachtet werden können.
-
Dies heißt, dass Sie als Implementierer leichter arbeiten können.
-
Der Protokol Designer kann sagen, dass Sie die Skalare a und b,
-
die Geheimnisse die Sie für Diffie-Hellmann nutzen,
-
immer multiplizieren sollen mit dem sogenannten Kofaktor der Kurve.
-
Die ist der Basispunkt der Ordnung l,
-
es hat l unterschiedliche Vielfache.
-
Z.B. sind dort vier mal l, oder acht mal l Punkte auf der Kurve,
-
dann sieht man nur l.
-
Um für die daraus resultieren Lücke aufzukommen und ausgeklügelteren Attacken zuvorzukommen,
-
multiplizieren wir die geheimnisse a und b immer mit acht.
-
Dies beschützt uns komplett vor diesen Attacken
-
und kann im Protokoll aufgenommen und getestet werden.
-
Weiterhin kann der Designer der Kurve immer Kurven aussuchen,
-
die"verdrehungssicher" sind.
-
Da ist immer ein bisschen Spielraum, wenn jemand einen komprimierten Punkt schickt.
-
Und diese "Verdrehungssicherheit" sagt etwa aus:
-
Dieser Spielraum lässt Ihnen die Möglichkeit zwischen verschiedenen Kurven auszusuchen.
-
Da gibt es die erste Kurve aber auch ihre verwandte Kurve, die "verdrehte Kurve" genannt wird.
-
Der Designer der Kurve kann sicherstellen, dass beide sicher sind.
-
Beie haben große Primzahlen, dann ist da ein l und ein verwandtes l
-
und ein kleiner Kofaktor sowie ein weiterer kleiner Kofaktor.
-
Wenn der Designer eine der "verdrehungsicheren" Kurven wählt,
-
bleibt dem Angreifer keine Flexibilität mehr übrig.
-
Der Angreifer hat dann keine Informationen mehr über Ihr Geheimnis a und b.
-
So, warum machen wir dies nicht einfach?
-
Naja, es geschieht in Teilen.
-
Es gibt bereits eine Bewegung für die nächste Generation von einfachen Standards.
-
Nächste Generation meint, dass es Kurven geben soll,
-
bei denen man sich nicht selber verzettelt, wenn man diese
-
auf die einfachste Weise implementiert.
-
Das heißt, dass eine einfache Implantation auch eine sichere Implantation sein soll.
-
Normalerweise, wenn man etwas sicherer gestaltet,
-
wird es langsamer.
-
Nun der Bonus in diesem Fall ist, dass es schneller wird.
-
Bereits in 2010 hat Adam Langley von Google in die TLS mailing list geschrieben:
-
" Hey Leute, da Kryptographie weiter fortgeschritten ist,
-
wäre es nicht gut, wenn wir Kurve 25519 als benannte Kurve haben?"
-
Dann ist nicht viel passiert.
-
Wir haben daran gearbeitet gute Methoden,
-
naja zumindest denken wir das,
-
zum Erstellen von Kurven zu entwicklen.
-
Naja, dank Snowden im letzten September,
-
gibt es nun emotionale Reaktionen von Leuten.
-
Die sagen, da NIST Kurven einen Teil ihrer Vertraulichkeit verloren haben,
-
und wir denken, vielleicht ist die NSA nicht nur gut,
-
sollten wir nicht eine neue Bewegung haben?
-
Zum Glück gibt es viele weitere Leute die sagen:
-
"Es ist nicht, dass wir paranoid sind, wir wissen nicht ob die NIST Kurven unsicher sind,
-
aber sie sind garantiert nicht gut zu implementieren."
-
Wir könnten schneller und sicherer sein.
-
Dazu gibt es einige Zitate und auch ein Entwurf.
-
Wenn jemand ein paranoides Sicherheitslevel erreichen will, haben wir hier 41417 Bits.
-
Ähm, eine SafeCurves Seite und so weiter.
-
Final, CFRG verändert sich.
-
Da war ein Typ von der NSA, der ein Co-Leader von CFRG war.
-
Also CFRG ist eine Kryptogramme Forschungsgruppe von der Internet Engineering Task Force.
-
Und er NSA co-chair wird weiter dort sein um sie zu unterstützen und zu sagen, wem sie vertrauen sollen.
-
Nun, ich hatte gehofft dass wir im Guten enden.
-
Dass wir sagen können, es ist alles gut hier.
-
Immerhin gibt es einen guten Punkt, Microsoft hat Kurven gewählt...
-
Wissen Sie, sobald Microsoft in die Diskussion eingreift, ist diese beendet,
-
Nunja die letzte Seite sollte etwas Nettes sein, aber aktuell geht die Diskussion einfach weiter.
-
Danke für ihre Aufmerksamkeit!
-
Applaus
-
Moderator: "Danke für Euren Vortrag!
-
Wir haben nur ein paar Minuten für Fragen und Antworten,
-
daher beeilen sie sich bitte und fragen nur kurze Fragen.
-
Okay, los gehts!"
-
Wissen Sie, dass von Attacken oder Schwachstellen in NIST 186-2?
-
Ja, zum Beispiel, ist NIST P224 nicht verdrehungssicher.
-
Dies ist das einzig bekannte Problem.
-
Schauen Sie, wenn Sie sich die Arbeit der ganzen Implentierungen machen
-
und ganz vorsichtig arbeiten und sich schauen ob ein Punkt auf der Kurve liegt,
-
und die richtige Ordnung hat, usw.
-
Wenn Sie eine Menge Arbeit hineinstecken in etwas,
-
was so langsam und fragil ist und hart zu testen und hart zu implementieren.
-
Dann können sie etwas sicheres mit den NIST elliptischen Kurven machen.
-
Ein Schritt in die Zukunft von modernen ECC ist aber etwas zu schaffen,
-
was schneller und einfacher zu implementieren ist.
-
Damit sind auch mehr Leute glücklich.
-
Danke!
-
Okay, bitte
-
"Ja, ganz kurze frage, wenn Sie die NSA leiten würden,
-
könnten Sie Ihren eigenen Standard so beeinflussen, dass Sie ihn knacken könnten?
-
Und wie würden Sie das machen?"
-
Naja, die kurze Antwort wäre, dass das Gute bei Standards ist,
-
dass es viele gibt aus denen man aussuchen kann.
-
Moderator: "Ist das die Antwort?"
-
Also die längere Antwort wäre,
-
dass ich beispielsweise den NC zum französischen Standard (?) wählen könnte.
-
Es gibt keine Rechtfertigung dafür, welche Kurve ich wähle.
-
Zuschauer: "Wir kamen Sie auf die Schlüssellänge von 45 Bits,
-
und woher wissen Sie, dass das sicher ist?
-
Ist es nur die Abwesenheit von sowas wie Indexcalculus?"
-
Ja, die Tatsachen, dass IndexCalculus nicht ausgeführt werden kann,
-
erlaubt ECC mit kleineren Schlüsselgrößen als RSA zu arbeiten.
-
Und die 256 Bits kommen von Schätzungen,
-
was die größten Rechnungen sein werden, die in zehn Jahren mit aktueller Technologie
-
ausgeführt werden können.
-
Zum Beispiel, mit einem 65 Watt Stromwerk,
-
würde die größte Rechenleistung nicht ausreichen um 200 Bit elliptic curves zu knacken.
-
Daher fühlen wir uns mit 256 Bit sicher.
-
Im Bezug auf die Attacken, die wir kennen, sind die Kurven sicher.
-
Auf cryp.to (?) können Sie sehen wie viele Operationen notwendig sind um eine 414 Bit Kurve zu knacken.
-
Wir haben leider keine Zeit mehr,
-
daher nochmal Danke an die Vortragenden!
-
Applaus