 Hi zusammen. Wir tauchen ein in die Welt der Mathematik. Ein bisschen was mit Krypto. Neben mir steht Alexis, er studiert Mathematik hier in Karlsruhe am KIT, also spricht der Unikarlsruhe, wenn man so will, so wird es überall anders, glaube ich heißen. Und erzählt uns was mit dem Titel Tief im Kaninchenbau der Seitenkanalanalyse der Shake Funktion im Küstelsdelizie. Viel Spaß. Danke. Genau, danke fürs zahlreichen Erscheinen. Der Titel ist ziemlich kompliziert, deswegen möchte ich es kurz einfach sagen. Ich möchte, wir werden jetzt durch den Stromverbrauch messen, also es wird irgendein kryptografisches Verfahren durchgeführt. Wir werden den Stromverbrauch messen und dadurch ein Geheimnis knacken, quasi. Und beim Vortrag wird es quasi darum gehen, diese Begriffe zu erklären, die jetzt im Titel vorkamen. Also ich möchte euch erstmal sagen, was Seitenkanalangriffe allgemein sind. Da gibt es auch mehr, außer nur den Stromverbrauch zu messen. Dann möchte ich den Angriffsweck oder den Angriffsalgorithmus erklären. Das ist Krystis Delizium. Das ist ein Postquantum, Postquantum, Kryptografie-Algorithmus. Wer gerade zur Standardisierung vorbereitet wird, also ziemlich interessante Algorithmus. Und da gibt es dann die Schwachstelle Shake 256, das ist eine Haschfunktion. Die kann man dann ausnutzen, um die Seitenkandidat auszunutzen. Und am Ende möchte ich euch den vollständigen Angriff zeigen, den ich dann vorbereitet habe. So was Interesse, wer kennt den Krystis Delizium? Okay, das sind so sieben Leute, ist gut. Und wer kennt Shake 256 oder Schad 3? Okay, das ist ein bisschen mehr. Erstmal was zu mir. Ich bin Alexis Poulonakis, 23 Jahre alt. Ich studiere eigentlich Mathe im Master. Und das ist auch sehr theoretisch. Also ich studiere Algebra. Ich habe einen Fokus auf Algebra. Und wollte ein bisschen was Praktischeres machen. Ich bin jetzt hier wie am FZI, im Forschungszentrum Informatik seit ungefähr einem Jahr. Und auch wenn ich da viel mit Hardware mache und Stromverbrauch messen, das bleibt trotzdem noch theoretisch und ich hoffe, das kommt auch gut rüber. Ein paar Disclaimer, das ist jetzt kein wissenschaftlicher Vortrag. Also das basiert so auf dem Paper der Angriff. Und dann habe ich jetzt angewandt auf diesen Algorithmus. Und ja, ich versuche das ganz schön darzustellen, damit es verständlich ist. Ich setze auch grundlegende kryptografische Konzepte als bekannt voraus. Also Haschfunktion, RSA oder AES, sollte man mal gehört haben. Und ich habe nicht wirklich Ahnung von Elektrotechnik, Hardware oder Technik. Also es kann sein, dass da falsche Informationen kommen. Gerade vom Strom messen und allem. Also das ist aus Sicht eines Mathe-Heavies und genau. Dann mal dazu was Seitenkanalangriffe sind. Erst mal die greifen immer eine spezifische Implementierung eines Kryptosystems an. Zum Beispiel von Algorithmus. Also wenn man zum Beispiel die Kryptoanalyse hat, dann greift man den Algorithmus an, den man den Cypher Text hat. Und hier greift man immer eine Implementierung an, die auf einer bestimmten Hardware ist. Und die da läuft. Und dann gibt es halt irgendwelche Seitenkanale, die auftreten. Zum Beispiel ein Laptop, der kann Schallwellen ausstoßen. Oder man kann Schallwellen messen. Und ich habe gestern ein Paper gelesen, das dann in RSA-Krieg knacken konnte. Allein durch Geräusche, den Laptop von sich gegeben hat. Und eine Partnerforschungsgruppe von uns, die beschäftigt sich mit elektromagnetischen Emissionen. Weiterhin kann man zum Beispiel Timeline-Informationen anschauen. Das heißt, wenn man eine Passwortabfrage hat und die länger geht, dann weiß man, dass der Passwort länger ist. Also wenn man das jetzt naiv implementiert über eine Vorschleife, über jedes Passwort. Also da muss man sehr, sehr aufpassen, dass man immer konstant bleiben bleibt. Und was wir hier machen ist, den Stromverbrauch anzuschauen. Genau, dann machen wir eine erste Aufgabe als TV. Ah nee, erst mal einen kurzen Einschub, falls man noch kleine Auffrischung braucht. Es gibt also Verschlüsselungsverfahren. Es ist immer für einen geheimen Datenaustausch da gezimetrisch. Das heißt, beide haben einen Key, gemeinsam einen geheimen Key. Oder asymmetrisch. Man hat ein Public Key, mit dem man das Wiesel dann als Resse an, an die man dann jemanden schickt und das verschlüsselt. Und derjenige, der eine Secret Key hat, kann es dann entschlüsseln. Und digitale Signaturen sind sowas wie digitale Unterschriften zur Authentifikation da. Da gibt es auch ein Secret Key, dann authentifiziert man sich damit, signiert eine Nachricht und verifizieren kann es dann jeder mit einem Public Key. Also meine erste Aufgabe war es, eine RSA Implementierung zu brechen. Das war dann so eine Hardware, da lief einfach RSA drauf, ganz naiv implementiert. Und dazu will ich kurz mal wiederholen, was passiert. Erst mal, damit ich irgendwas brechen kann, müssen wir die Entschlüsselung anschauen. Das läuft die Entschlüsselung auf einem Hardware Chip. Weil man dann ein Secret Key braucht, um das zu entschlüsseln. Und da gibt es dann so eine berühmte Formel, dass man so ein Schifrat C hat und der Empfänger so eine Modellareexponentation durchführt mit dem Secret Key E. Und dann bekommt man den Klartext M. So, wenn ich jetzt einfach den Sturmfrauch anschaue, dann sehe ich das hier, dieses Muster. Ich hoffe, da habe ich schon eingetragen, was das Secret Key ist. Also man sieht irgendein unregelgemäßiges Muster auf dem Oszilloskopen. Das habe ich dann Oszilloskopen angeschlossen. Und tatsächlich kann man direkt den Secret Key, dieses E in Binärdarstellung, einfach ablesen. Was daran liegt, dass diese Modellareexponentation, das wurde implementiert, als Square and Multiply Algorithmus. Das heißt immer, wenn eine 1 da ist an der Stelle, also man iteriert über den Secret Key Binär. Und immer wenn eine 1 steht an der Stelle, wird quadriert und multipliziert. Und wenn eine 0 steht, nur quadriert. Und die Multiplikation braucht länger als das Square. Und deswegen hat es so einen langen Peak hier, die Multiplikation. Also immer wenn ein kurzer und langer Peak ist, ist es eine 1. Und wenn nur ein kurzer Peak ist, ist es eine 0. Und so kann man dann direkt das ablesen. Und das war dann den ersten 3-4 Monaten, habe ich das dann damit beschäftigt. Ja, danach bin ich ungestiegen auf eine andere Hardware. Das ist auch sehr zu empfehlen, jeder, der sich damit beschäftigen will. Das ist der Chip Respirat Kit Pro. Da gibt es auch schöne Tutorials zu. Da ist ein Oszilloskop schon integriert. Das ist hier links ein Oszilloskop. In der Mitte ist dann, hier sieht man glaube ich so den Prozessor, auf dem die kryptografischen Operationen laufen. Das ist ein Cortex M4 hier, STM32F. Und so sieht das bis jetzt auch von mir aus. So sieht das Setup ganz primitiv eigentlich. Und da war die nächste Aufgabe von mir, AIS, eine AIS Implementierung zu knacken. AIS, das ist ein symmetrisches Verschlüsselungsverfahren. Also Geheimer Key gehört, ist zum Verschlüsseln und zum Entschlüsseln gleich. Wenn man das dann anschaut in Stromverbrauch, dann sieht man dieses Muster hier. Man erkennt also schon wieder irgendetwas, nämlich dass da irgendwie solche 10 Peaks sind. Wenn man dann die Implementierung ansieht, sieht man, AIS hat 10 Runden. Also wird das erste wohl hier in einer Runde sein. Da gab es schon die Verschlüsselung an, ist auch wichtig. Und das ist dann der Ausschnitt der ersten Runde. Da gibt es auch wieder anscheinend Runden in der Runde und man sieht irgendwelche Peaks, aber so klar, wie ein RSA sieht man jetzt nicht den Secret Key. Also da gibt es alles, sieht regelmäßig aus, nicht unregelmäßig, also es ist schwerer, den Secret Key einfach abzulesen. Deshalb muss man sich überlegen, warum variiert überhaupt der Stromverbrauch? Also warum bleibt es dann nicht einfach nur konstant und das liegt vor allem daran, dass der Stromverbrauch abhängt von Berechnungen. Also man kann sich vorstellen, wir haben 32 Bitregister, da sind jetzt 32 Nullen dran und wenn nach einer Berechnung alles mit 1 gefüllt wird, dann geht immer ein bisschen Strom verloren, wenn es von 0 auf 1 zwitscht oder von 1 auf 0 eben. Das heißt, immer wenn irgendwas in den Registern eingespeichert wird oder gerechnet wird, es sollte der Stromverbrauch höher sein. Also der Stromverbrauch hängt ab von Berechnungen und diese Berechnungen hängen natürlich von geheimen Information ab. Also hängt eigentlich der Stromverbrauch von geheimen Information ab, so die Logik. Jetzt wird es ein bisschen tiefer ins Rebetol. Wir schauen jetzt nicht, als wir als ist es eine große Berechnung, jetzt schauen wir uns irgendeine kleine Zwischenberechnung an, um zu schauen, okay, vielleicht sieht man diese Zwischenberechnung beim Stromverbrauch. Und dann gibt es bei der Implementierung eine kleine Zwischenberechnung, die nimmt die ersten 8 Kibels, also Key 0.7 soll darstellen, das sind die ersten 8 Kibels, die ersten 8 Message Bits, man verschlüsselt ja eine Message mit einem Key, XOR die erst aufeinander, XOR soll es darstellen, das sind dann 8 Bits, die kommen in eine S-Box rein, diese S-Box ist so eine, die nimmt 8 Bits und gibt 8 Bits raus, ist so etwas wie eine Permutation oder eine Lookup-Tabelle, also man kriegt 8 Bits rein und kriegt 8 Bits raus, das ist so festgelegt. Jetzt endlich, dann mutiert das einfach, die ganzen Bites. Und hat man 8 Bits Output. Und jetzt kann man ja denken, okay, wenn ich jetzt irgendwie 0 Bits, also wenn ich 8 mal die 0 hab im Regist, also 8 mal 0 rausbekomme, vielleicht verbraucht das der weniger Strom, als wenn ich 8 mal 1 1 hab, weil 1, wenn es nur auf 1 wechselt, verbraucht es dann mehr Strom. Wie kann man das jetzt testen? Ich habe ein Testzeneil, wie gesagt, ich nehme jetzt 5.000 verschiedene bekannte Messages, schauen wir an, was soll denn rauskommen aus dieser S-Box, schauen wir mal den letzten Bit an, zum Beispiel, ich kann mir auch den ersten, zweiten, dritten Bit anschauen und entweder ist dieser Bit ja 0 oder der Bit ist 1. Und ich messe jetzt den Strom bei der ganzen IES-Verschlüsselung oder auch hier bei der S-Box, die ist ja dabei. Und dann tue ich alle Traces, Stromtraces zu den Messages, in die eine Gruppe und alle Traces, die eine 1 haben, in die andere Gruppe. So, und wenn die jetzt signifikant sich, also wenn dieser Bit einen Einfluss hat auf den Stromverbrauch, dann müssten sich diese 2 Gruppen im Stromverbrauch unterscheiden durchschnittlich. Das habe ich dann aufgemalt, also das ist erstmal oben das normale Stromverbrauch von den 10 Runden und dann sieht man unten die Differenz der Durchschnittstraces dieser 2 Gruppen, jeweils wenn das Bit 0 ist oder der End Bit 1 ist. Und dann sieht man hier, das ist eigentlich nicht wirklich was da, aber in der ersten Runde sieht man den Pieck. Also um das klarer zu zeigen, hier habe ich, sieht man das, hier einmal grün, ist die eine Gruppe von Bit 1 und die rote ist die Gruppe von Bit 0. Das heißt, die unterscheiden sich in diesem Punkt dem Stromverbrauch durchschnittlich. Und das sieht man auch in der Differenz von Pieck. So, das bringt uns ja nichts und jetzt kann man sich überlegen, wie möchte man das jetzt in einem Angriff irgendwas machen. Ein Angriffsszenario, wir haben jetzt folgende Szenario, wir haben unbekannte Kie, den wollen wir herausfinden und wir lassen jetzt so eine Angriffshartware, 5000 verschiedene bekannte Messages, die kennen wir, sie verschlüsseln und messen den Stromverbrauch. So, jetzt wissen wir, wenn wir den richtigen Kie hätten und dann nach Output unterteilen würden, dass der Kie von Bit 0 oder Bit 1 dann würde sehr eine Differenz im Stromverbrauch zu sehen sein, wie gerade eben. Aber den kennen wir ja nicht. Was wir machen können, es sind ja nur 8 Bits dieser Kie, also können wir einfach mal alles ausprobieren. Wir können jeden möglichen Kie ausprobieren, z.B. 0000, 0000, schauen, was würde in dieser S-Box herauskommen und dann tun wir die Messages einmal in Gruppe 0 und einmal in Gruppe 1. Und das machen wir für jeden Kie, für alle 256 Kies und dann machen wir das halt nicht, also dann wir nehmen halt diese Stromtrace-Message-Paare, die wir halt gemessen haben und sortieren die einfach wieder diese 2 Gruppen, z.B. die Differenz an und also wie gesagt, für den richtigen Kie ist die Differenz sehr groß. Und jetzt habe ich mal alle 256 Möglichkeiten, wie ich das in 2 Gruppen sortieren kann, aufgemalt so aus. Also das sind die Differenzen der Durchschnittstraces der 2 Gruppen, wie vorhin, das Rote ist der richtige Kie, das sah schon ähnlich so aus, genau, also so 2 Peaks und ein kleiner und alle anderen sind die 255 möglichen Kiebeits, wie ich das halt dann sortieren kann, nach dem Output 0 oder 1. Und man sieht, dass ich der richtige Kie sehr weit abhebt von allen anderen. Das liegt daran, ich habe ja, wenn ich auf dem richtigen Kie habe, dann habe ich ja wirklich richtig nach 0 und 1 unterscheidet unterschieden und wenn ich den falschen Kie gewählt habe, dann habe ich einfach nur zufällig 5.000 Traces in 2 Gruppen unterteilt. Dann sollte ja gar kein Unterschied zu sehen sein. Also unterscheidet sich für den richtigen Kie der Stromverbrauch der beiden Gruppen am stärksten. Und so kann man, also das ist jetzt Differential Power Analysis, ziemlich erst mal das zu verdauen. Genau, das ist so die gesamte Idee eigentlich, wie ich jetzt in Angriff gestalten werde. Das ist gleich eine kurze Zusammenfassung. Das erste, was wir gemacht haben bei RSA ist Simple Power Analysis, das haben wir jetzt bei RSA gemacht. Das ist simpel, das heißt, wir brauchen nur ein paar Messungen und wir können durch bloßes Hinsicht schon erkennen, was der Kie ist. Und alle Funktionen, die irgendwas mit dem Secret Kie machen, sind gefährdet. Das muss man alles immer checken. Und was wir jetzt gerade gemacht haben bei AIS heißt Differential Power Analysis, DPA abgekürzt, da braucht man ganz viele Messungen. Wir machen ja statistische Methoden, wir nehmen irgendwie den Durchschnitt, wir tun das in 2 Gruppen, schauen, ob sich die Gruppen irgendwie unterscheiden und wir brauchen vor allem irgendwie variablen bekannten Input M. Irgendein Message, damit wir anderen verschiedenen Output bekommen, wir müssen irgendwas in 2 Gruppen unterteilen. Wenn wir immer gleiches M hätten, hätten wir immer einen Output, das geht ja nicht. Also die gesamte Idee des Vortages ist, in einem neuen Algorithmus, den ich jetzt wirklich zeigen werde, ist, wir suchen irgendwas, so eine Funktion F, die was mit dem Kie macht und mit Messages, die wir kennen und variieren können. Dann möchte ich mal zum Angriffsalgorithmus kommen. Was ist Crystal Steelitium? Das ist erstmal unser Angriffstil. Und das ist ein digitales Signaturverfahren. Also man kann Messages signieren, sagen, das ist man. Das ist dann auch theoretisch sicher, EUFCMA sicher, wenn jetzt jemand was sagt. Unter der Annahme, dass sich bestimmte Gitterprobleme nicht effizient lösen lassen. Das sind mathematische Gitter. Kurz gesagt, Quantencomputern können diesen Algorithmus nicht knacken, noch nicht. Und RSA ist natürlich knackbar mit Quantencomputern. Also die Faktorisierung der Primzahlen. Und deshalb hat jetzt die NIST eine Post-Quantenkriptografie Standardisierung in so ein Wettbewerb durchgeführt und hat diesen Algorithmus ausgewählt in 2023. NIST, National Institute of Standard and Technology, Amerika, die sagen dann, Waszenieren staatlichen Behörden mit Geheimhaltung, also wo man Geheimhaltung braucht, was für kryptografische Verfahren angewandt werden. Ja, und das muss man natürlich jetzt auch untersuchen, ob das halt gegen Seitenkanalengriffe ist. Und das war dann so ein bisschen meine Aufgabe im FZI. Wir haben uns dann eine konkrete Implementierung angeschaut. Das sieht erstmal kompliziert aus auf einem Cortex M4. Das war jetzt konkret eine Implementierung, die vor allem sehr kompakt ist. Und die Litzung sieht ungefähr so aus. Und man muss gar nicht so wirklich verstehen, was da passiert. Man muss da bloß verstehen, wo irgendwas Geheimes berechnet wird und wo irgendwas, also wo man DPA-Schutz braucht und SPA-Schutz. Also, alles was blau ist, ist bekannt und alles, die die roten Kreise, das ist ein Secret Key, das gehört zum Secret Key, das gehört zum Secret Key, KAS1 und S2. Ja, und alles was so rauscht, wie gesagt ist geheim, da braucht man natürlich simple Power Analysis Schutz, muss man schauen, ob das nach einem Trace schon alles sichtbar ist. Und was wir uns anschauen ist alles, was DPA-Schutz braucht. Das ist nämlich wie gesagt die Situation, weil wir was Bekanntes haben und was Unbekanntes und da wird irgendwas zusammen berechnet. Und dann gibt es eine Multiplikation, eine Addition und hier ist eine Hash Funktion, die sollte ich dann untersuchen, das ist aber eine Aufgabe als Hivi. Und genau, dann wollte ich das mal genauer anschauen, was da eigentlich passiert. Dazu kann man in die Spezifikation das Secret Key sieht ungefähr so aus, man macht eine Message rein, bekommt eine Signatur raus und in der Linie 4 ist genau das, was wir angreifen wollen. Das ist eine Hash Funktion, die nimmt dieses Secret Key K, konkurreniert mit irgendwas Bekanntem My. Also eine DPA benötigt ja genau das, also wir haben es ja schon, oder nicht, dann können wir doch jetzt wieder das letzte Bit vom Output anschauen, 5000 mal messen und dann eine Kopfer und die Nuller und die eine Ruppe tun. Geht nicht so einfach, weil, was wir gemacht haben, wir sind ja jeden möglichen Key durchgegangen, aber der Key ist hier noch 256 Blitz groß und dann sind wir schon nah bei der Anzahl der Tome im Universum, also man kann einfach 262 hoch, 250 nicht Brut forcen. Und jetzt geht es noch mehr ins Rabbitoll rein, weil wir müssen uns anschauen, wie die Hash Funktion, also wir müssen jetzt eine Zwischenberechnung in der Hash Funktion schauen, damit es noch kleiner wird. Braucht noch eine kleinere Zwischenberechnung. Ja, und deswegen wollte ich erklären, wie eigentlich Shake 250 funktioniert, das ist jetzt die Hash Funktion. Ja, Shake 250 ist erst mal eine Variante von Shard 3, da kann man variable Output länger raus bekommen, bei Shard 3 sind die fest und Shard 3 ist halt eben auch so eine Standard-Hash Funktion, die wird jetzt überall verwendet und die gilt als sicher, theoretisch sicher und vom NIST wieder als Standard-Hash Funktion auskrieg 2015. Und ja, die basieren auf einer Sponge-Konstruktion, die sieht so aus. Die, ähm, ja, die erkläre ich jetzt mal kurz. Was man in die Hash Funktion reinmacht, ist ja jetzt hier in unserem Fall kakonkursiert mit Mühe. So, wir haben, die Hash Funktion hat so ein State von 1600 Bits, das sind einfach 1600 Bits und man teilt jetzt den Input auf in Blöcke von 1088 Bits und Xorty auf diesen State, also erst mal Xorty auf 0 drauf und alles diesen Inner State hier unten lässt man einfach in Ruhe und dann permutiert man diesen ganzen 1600 Bits, das ist F ist eine Permutationsfunktion, die vermischt alles. Und dann nimmt man den nächsten Block vom Input und Xorty auf diesen State drauf, der eben schon gerade da war. Und dann permutiert man wieder und das so lange, bis man eben den ganzen Input verarbeitet hat. Und dann mit dem Output nimmt man 1088 Bits raus permutiert und dann mal wieder 1088 Bits raus eben so viele wie man haben will. In dem Fall, ist es gar nicht so kompliziert, weil unser Input ist 256 plus 385 Bits lang. Es ist deutlich weniger als 1088. Das heißt, eigentlich xoren wir einfach nur auf diesen, wie xoren einmal nur die ersten, also K und Mühe 1600 Bits lang State und permutieren das sofort. Also, wir müssen jetzt noch tiefer reingehen und irgendwie schauen, wir brauchen ja eine Zwischenberechnung. Also, da müssen wir uns tatsächlich die Permutation anschauen von Shake 256 und dafür gibt es einen tollen Pseudocode, aber das will ich jetzt euch nicht antun, deswegen gibt es eine schöne grafische Anordnung. Weil die Permutationen kann man sich vorvorstellen, dass es jetzt so ein Quader gibt, das sind diese 1600 Bits, also mal 5 x 64 Quader, also 5 x 5 x 64 nach hinten und da wird irgendwas mitgemacht, da zeige ich gleich schöne Bilder. Es ist erstmal wichtig, wie das angeordnet wird, dieser Input. Nämlich erstmal den Key, man macht erstmal den Key rein, da wird erstmal diese Läne hier vollgemacht, K0 bis hier K63, also die ersten 64 Bits dann wird die nächste Läne vollgemacht hier 64 Bits die nächste 64 Bits und 256 Bits sind 4 x 64 Bits also hat man 4 Läns voll. Und dasselbe macht man mit My und hat man halt hier my0 bis my64 und weiter und das sind dann halt 6 x 64 Bits. Und oben ist da einfach nur 0, weil ich habe kein Input mehr. Und dann macht man was mit diesem schönen Quader, also erstmal die Permutation besteht aus 10 Runden und eine Runde besteht aus verschiedenen Schritten. Und diese Schritte machen lustiges Zeug. Hier habe ich zum Beispiel also muss man von rechts nach links lesen, Täter wird zuerst angewandt, dann Rho, dann Pi, dann Tier, dann Iter und ich habe zum Beispiel mal Pi aufgemalt, man nimmt also immer solche Slices von diesem Quader und verschiebt die Bits so wie es hier hingeschrieben ist auf einem anderen Platz. Also Pi dann nimmt man solche Lanes und das sind glaube ich Not End und End Gitter und macht irgendwelche arithmetische Operationen zusammen und sort dann nochmal alles auf den Anfangspit. Also es ist kompliziert. Diese Permutationen Schritte sind kompliziert. Deshalb möchte ich auch nur den 1. Schritt anschauen, weil das noch alles schön und gut, da wissen wir wie das alles aussieht. Deswegen schauen wir mal den Täter Schritt an und was der Macht ist was am Ende in diesem Bit hier rauskommt in diesem dunkelgrauen Box ist man sort erstmal diese Säule hier links davon auf also das sind ja alles Bits dann sort man diese Säule aufeinander auf man sort diese Säule aufeinander auf und dann sort man diese beiden Säulen aufeinander auf und dann sort man das auf das ursprüngliche dunkelgraue Bit drauf. Letztendlich was wichtig ist, wir haben hier ein Sort dieser Säule das heißt nochmal was wir eigentlich suchen ist für die DPA für die DPA suchen wir irgendwas Bekanntes M oder Mü und was Unbekanntes, den Key und da soll irgendwas miteinander gemacht werden und jetzt haben wir hier diese Säule hier wird ja auch aufeinander berechnet analog wie bei der S-Box wird also ein Zwischenwert berechnet und da wird also eine ganze Säule aufgesort also K0 XOR 60, weil der 64 Bit dort angeordnet ist XOR 0 XOR 0 XOR 0 also wir haben die selbe Situation wieder bei der S-Box das kann ich jetzt auch aufmalen, also unbekanter Key kann ich also wieder 5000 mal was messen, Messages reinmachen verschiedene Messages, kann das 5000 mal messen und wieder ich habe zwei mögliche Bits, letztes mal hatte ich 256 mögliche Bits ich musste ja diese Sortierungen ich musste ja diese Messages sortieren in zwei Gruppen für jeden Byte immer und hier habe ich hier nur zwei mögliche Bits 0 oder 1 für K0 das heißt, ich sortiere einfach mal was wäre, wenn jetzt der Key 0 wäre was würde da rauskommen ich sortiere nach dem hypothetischen Output was aus diesem XOR rauskommen würde und mach ich das halt auch was würde für den Bit 1 was würde rauskommen und dann bereche ich wieder Differenz das kann ich wieder aufmalen ich habe das ja vorhin habe ich so 256 Traces aufgemalt also 256 Linien und jetzt habe ich nur zwei Linien, weil ich habe nur zwei mögliche Keys das ist jetzt die Differenz der Durchschnittstraces dieser zwei Gruppen, wo ich Output Bit 1 aber der Output Bit 0 und jetzt sehen wir okay also was man hier sieht, auf der X-Achse wieder die Zeit, auf der Y-Achse die Differenz, Stromverbrauch das ist jetzt für den Key Bit K0 und einmal, was wäre wie würde es aussehen, wenn der Key Bit blau also 1 wäre und wie würde es aussehen, wenn es rot wäre und wir sehen okay, beide haben einen gleich großen Pieck tatsächlich sind die in der X-Achse irgendwie symmetrisch das heißt, wir können uns nicht mehr anschauen ja, was hat den höchsten Pieck oder so so funktioniert das nicht ich schau mal weiter, vielleicht kann man irgendwie noch heuristisch erkennen zum Beispiel für Key Bit K1, das kann man ja genauso machen das wird ja auch aufeinander gesort da sehen wir okay, es gibt wieder auch eine Leakage also es scheint ja irgendwas getroffen zu haben hier wird das anscheinend berechnet ich habe einen richtigen Key auch punktiert gemacht wir machen es noch weiter für den Key 2 und da sehen wir hier ist ein ganz anderes Muster und es gibt eine schöne Erklärung, wie das funktioniert aber ich mache jetzt mal eine einfache Erklärung nämlich, wenn der Key Bit 0 der richtige Key ist dann sieht das Muster dieser Leakage komplett anders aus als wenn der Key Bit 1 der richtige Key ist als wenn der Key Bit 1 der richtige Key ist also hier geht es irgendwie so, es geht runter und hoch und hier geht es nur runter und hoch wenn ich jetzt mal weiter anschaufe wie die weiteren 7, 8 Bits dann sehen wir hier immer hier hat dieses Muster das korrekte Bit 1 und hier sind die hier ist immer 0 der korrekte Bit und da ist das Muster komplett anders so könnte eigentlich einfach ablesen wie bei RSA was die richtigen Bits sind ich habe hier nichts gemacht außer Strom gemessen Mathe drauf und Mathe drauf geschmissen also ich habe wirklich nur Strom gemessen ich kenne die Messages und habe Mathe drauf geschmissen und das plotten lassen und ich könnte jetzt direkt ablesen was der Key ist und das ist jetzt genau 64 für die weiteren bis 256 Bits kurz eine Gründe zum Angriff ich kann damit alle Keys also erraten funktioniert immer mit verschiedenen Keys und ich habe natürlich ich habe jetzt die Stromtrails aufgenommen während ich einfach den Algorithmus laufen lassen habe den gesamten Signal Algorithmus ich brauche ungefähr 2500 Messungen und das dauert 40 Sekunden auf meinem Laptop hier der ist eigentlich immer abstürzt also in 40 Sekunden kriege ich den gesamten Key raus ich habe es auch an der Vorausstellung gemessen mein Hardware Setup gesehen habe das neben Laptops mein Laptop gehabt und ja aus K das lässt sich auch der gesamte Secret Key den ich während des Signal Algorithmus ist einfach 11 Cent berechnen also das gesamte Verfahren ist in dieser Implementierung gebrochen quasi ja dafür habe ich leider keine Zeit mehr aber das ist dann wie man den gesamten Key berechnen kann wenn man K hat das 1 und das 2 berechnen ja und wenn ihr das mögt und wenn ihr auch so was machen wollt dann ihr freut uns immer über Verstärkung und FZi ich habe mit seinem Jahr mit seinen Kanälen und das macht es ganz viel Spaß und dann könnt ich gerne bei mir melden oder bei meinem Betreuer Vasili ja hier habe ich die Kontaktdaten also vielen Dank fürs Zuhören ja vielen Dank dir für das Vortrag gibt es Fragen, ich sehe schon die ersten wobei also nicht die Implementierung ist dann gebrochen sondern die Implementierung auf dieser bestimmten Hardware auf der du das analysiert hast ist gebrochen ist auch wichtig zu sagen also klar, wir brauchen Implementierung an aber das ist immer auf einer bestimmten Hardware ich habe es nur für die Hardware gecheckt und deswegen kann man beim Design der Algorithmen zacken schwer werden oder sind die unvermeidlich? es gibt Countermeasures also damit würde ich mich jetzt beschäftigen man kann es wird auch immer gemacht man kann immer Seitenkanal resistente Implementierung machen man kann maskieren, Witzmaskieren und allgemein ich kenne mich leider nicht so gut aus mit den Seitenkanalen es wird auf jeden Fall es gibt Seitenkanal resistente Implementierungen und diese ist es auf jeden Fall nicht man zeigt, es wird angreifbar also muss man jetzt das so implementieren und es geht schon aber es wird meistens nur erschwert und es ist schon möglich man macht nur den Workload, der gebraucht wird um es anzugreifen gibt es weitere Fragen? Jawoll Christos D'Liffium ist ja so ein Gitarre Algorithmus weißt du zufällig welche Dimension das Gitar hat wie viele Gitarre-Vectoren man in dem Ding drin hat da lasst mich mal im Treuer reden ja also das ist jetzt nicht das normale LWE worauf es basiert wo man da so schon Dimension hat die über tausend Kreuztausend gehen schon ziemlich hoch hier hat man basiert es auf Modul LWE da sind einzelne Elemente in den Matrizen oder in dem Gitarre sind Polynome die vom Grad sind 256 und da ist die Dimension dann um einiges kleiner daher ist dann irgendwie so was wie 4 Kreuz 4 aber dafür halt jedes Element recht großer Polynome ist Christos D'Liffium derzeit der Akt oder der einzige Krypto Algorithmus aus diesen Post-Quantum-Dingern von der NIST wo solche Attacken schon analysiert werden oder wurden auch schon andere Algorithmen oder Leste entsprechend analysiert das wäre der Standardisierung? genau das hast du auch was zu sagen aber ich glaube also ich habe da nur also das werde ich auch organisatorisch sagen ja also neben D'Liffium gibt es da noch Felken noch mit dabei bei Felken ist es aber so es wird zwar auch analysiert aber dort stellt man fest dass es noch komplizierter ist als D'Liffium so dass man eigentlich aktuell auf D'Liffium sozusagen die werden setzt weitere Fragen ich sehe zumindest niemanden der sich meldet traut euch Fragen zu stellen wir haben noch ein bisschen Zeit das ist so schnell warte was keine Fragen ok dann von meiner Seite nochmal zwei Veranstaltungshinweise hier im blauen Salon geht es jetzt gleich um 15 Uhr 15 glaube ich weiter mit Softwareentwicklung für Westbury Pie was ansonsten auf dieser GPN ein bisschen untergegangen ist ihr könnt mit euren Batches natürlich auch dieses Jahr wieder ins ZKM gehen heute und morgen bis 18 Uhr dazu bitte mit dem Batch einmal an der ZKM Kasse vorsprechen dann kriegt ihr eine Freikarte genau, Dankeschön ja, danke fürs Zuhören