0:00:00.000,0:00:09.959 Vorspannmusik 0:00:09.959,0:00:13.859 Herald: Heute geht es um[br]„Hardware-Trojaner in Security-Chips“. 0:00:13.859,0:00:18.720 Also nicht um Software-[br]Trojaner, die die Polizei einsetzen will. 0:00:18.720,0:00:22.550 Die beiden Herren neben[br]mir, Peter und Marcus, 0:00:22.550,0:00:27.210 forschen seit mehreren Jahren[br]zu Smartcards und arbeiten 0:00:27.210,0:00:32.600 komischerweise beide für Infineon,[br]sind aber beide privat hier, und… 0:00:32.600,0:00:35.110 heißt sie herzlich willkommen! 0:00:35.110,0:00:43.720 Applaus 0:00:43.720,0:00:46.469 Peter: Ja vielen Dank und herzlich[br]willkommen zu unserem Vortrag über 0:00:46.469,0:00:51.309 „Hardware-Trojaner and Security-Chips“.[br]Wie versprochen reisen wir gleich auf die 0:00:51.309,0:00:56.600 dunklere Seite der Chip-Technologien, aber[br]bevor wir das machen, ganz kurz zu unserer 0:00:56.600,0:00:59.830 Person: was machen wir, wo kommen wir[br]her? Und, ja, vielen Dank noch mal für die 0:00:59.830,0:01:05.960 Einführung; In der Tat sind wir seit 1989[br]aktiv im Bereich der Chipkarten-Forschung; 0:01:05.960,0:01:09.860 und das Ganze fing an in Brunsbüttel,[br]eine kleine Schleusenstadt, ungefähr 0:01:09.860,0:01:15.600 80 km nordwestlich von hier, mit der[br]Forschung an der deutschen Telefonkarte. 0:01:15.600,0:01:19.850 Die war damals ganz neu und wir wollten[br]natürlich unbedingt wissen: Was verbirgt 0:01:19.850,0:01:23.770 sich hinter diesen kleinen Goldkontakten[br]in der Chipkarte, wie funktioniert der 0:01:23.770,0:01:29.160 Chip und vor allem wie werden da die[br]Gebühren drauf gespeichert? Ungefähr 0:01:29.160,0:01:33.930 1991, also zwei Jahre später haben wir[br]auch das erste Mal für den CCC-Kongress 0:01:33.930,0:01:38.430 einen Vortrag gehalten. Es war damals[br]noch im Eidelstädter Bürgerhaus – also 0:01:38.430,0:01:42.341 viel, viel kleiner als das hier – hat aber[br]auch schon Riesenspaß gemacht, dabei 0:01:42.341,0:01:48.500 zu sein und auch das Wissen mit anderen zu[br]teilen. Ja, neben dem Studium – das war 0:01:48.500,0:01:51.730 bei Marcus in Hamburg und bei mir in Kiel[br]– haben wir uns weiter mit dem Thema 0:01:51.730,0:01:56.520 auseinandergesetzt und auch so die[br]eine oder andere Sicherheitsschwäche 0:01:56.520,0:02:00.010 aufgedeckt und das Ganze auch etwas[br]erweitert im Bereiche ‚Datensicherheit und 0:02:00.010,0:02:05.880 Datenschutz‘. Und wie schon angekündigt[br]arbeiten wir momentan auch professionell 0:02:05.880,0:02:13.140 in dem Bereich, unter anderem für einen[br]Halbleiterhersteller, bei dem wir eine 0:02:13.140,0:02:15.990 kleine Expertengruppe dann[br]damals aufgebaut haben. 0:02:15.990,0:02:19.890 Aber interessant für uns ist: die private[br]Forschung läuft weiter und wir schauen 0:02:19.890,0:02:24.080 uns zum Beispiel momentan an, was[br]es so auf dem Surplus-Markt gibt an 0:02:24.080,0:02:28.970 Equipment, mit dem man dann fröhlich[br]forschen kann und schlagkräftiges 0:02:28.970,0:02:34.920 Equipment zusammenstellen kann. Deshalb,[br]kommen wir auch gleich zum eigentlichen 0:02:34.920,0:02:39.430 Thema: Die Hardware-Trojaner.[br]Software-Trojaner, kam in der Einführung 0:02:39.430,0:02:46.319 schon ganz gut rüber, sind schon lange[br]bekannt, deshalb wollen wir hier ein 0:02:46.319,0:02:50.450 bisschen mehr über die Hardware-Trojaner[br]berichten. Die werden ziemlich 0:02:50.450,0:02:54.520 vernachlässigt – in der Literatur[br]und auch in der Öffentlichkeit. 0:02:54.520,0:02:58.319 Hardware-Trojaner genauso wie[br]Software-Trojaner dienen zwei Zwecken und 0:02:58.319,0:03:02.980 zwar einerseits der Exfiltration und[br]andererseits der Infiltration. 0:03:02.980,0:03:06.809 Exfiltration – da denkt sofort jeder[br]dran. Zum Beispiel, wenn man einen 0:03:06.809,0:03:09.840 Software-Trojaner hat, der möchte[br]Kreditkartendaten irgendwo aus einem 0:03:09.840,0:03:13.770 System herausschleusen/herausholen,[br]oder auch die berühmten Staats- und 0:03:13.770,0:03:17.940 Bundestrojaner die aus einem geschützten[br]System dann private Daten zum Beispiel 0:03:17.940,0:03:22.730 heraus-exfiltrieren sollen. Das können[br]aber auch anderen Dinge sein, die mit 0:03:22.730,0:03:26.430 dieser Exfiltration verbunden sind, zum[br]Beispiel können das kryptografische 0:03:26.430,0:03:30.260 Schlüssel sein. Wenn ein System[br]z.B. Nachrichten bereits 0:03:30.260,0:03:33.020 verschlüsselt hat – man hat jetzt diese[br]verschlüsselten Nachrichten zum Beispiel 0:03:33.020,0:03:38.610 abgefangen – dann möchte man eventuell[br]heran an diesen Schlüssel, der das Ganze 0:03:38.610,0:03:42.640 verschlüsselt hat, um im Nachhinein diese[br]Daten wieder entschlüsseln zu können. 0:03:42.640,0:03:48.470 Oder: noch perfider sind die Startwerte[br]für Pseudo-Zufallszahlen-Generatoren. 0:03:48.470,0:03:53.630 Heute ist es häufig so, dass[br]Zufallszahlen nicht NUR durch reinen, 0:03:53.630,0:03:58.300 echten, physikalischen Zufall erzeugt[br]werden, sondern dass man Startwerte nimmt, 0:03:58.300,0:04:01.260 die wirft man in[br]Pseudo-Zufallszahlen-Generatoren hinein 0:04:01.260,0:04:04.930 und wenn man die dann kennt – und auch[br]den Startwert – dann weiß man, was 0:04:04.930,0:04:08.870 diese Pseudo-Zufallszahlen-Generatoren als[br]nächstes ausspucken werden. Wenn man also 0:04:08.870,0:04:13.530 den Startwert kennt, weiß man, was als[br]nächstes kommt. Und schließlich kann es 0:04:13.530,0:04:19.200 Code sein, also Software, Firmware, zum[br]Beispiel im Bereich der Industriespionage, 0:04:19.200,0:04:24.200 wenn man Code herausholen möchte aus[br]einem System, Code Dump tun möchte. Was 0:04:24.200,0:04:28.770 immer so ein bisschen vernachlässigt wird[br]ist die Infiltration – was ja eigentlich 0:04:28.770,0:04:32.780 ein Trojaner macht, der infiltriert ja ein[br]System. Am ehesten kennt man das noch im 0:04:32.780,0:04:38.060 Bereich der Software – also Malware in[br]ein System einzubringen; dafür benutzt 0:04:38.060,0:04:43.480 man trojanische Pferde in Software, aber[br]das können genauso auch andere Daten 0:04:43.480,0:04:48.620 sein, oder Parameter, z.B. falsche[br]Parameter für Industriesteuerungen, da 0:04:48.620,0:04:51.990 gibt es ja auch so einige Beispiele[br]dafür. Oder das können zum Beispiel 0:04:51.990,0:04:56.610 bekannte Werte für Verschlüsselungen[br]sein, wenn ein Verschlüsselungssystem 0:04:56.610,0:05:00.380 intern eine Verschlüsselung benutzt, die[br]der Angreifer dann hinterher brechen kann, 0:05:00.380,0:05:04.610 dann ist das für ihn natürlich auch[br]interessant. Und schließlich – das 0:05:04.610,0:05:08.100 sollte man auch nicht vergessen, deshalb[br]kommen wir nachher auch noch zu den 0:05:08.100,0:05:12.389 ethischen Themen und den moralischen[br]Aspekten: das „Kompromat“, also 0:05:12.389,0:05:17.560 kompromittierendes Material, denn mit[br]Hilfe eines Trojaners oder einer Backdoor 0:05:17.560,0:05:22.100 kann man natürlich auch belastendes[br]Material in ein System hineinbringen und 0:05:22.100,0:05:25.419 das kann Leute, die das System benutzen[br]oder damit zum Beispiel eine Grenze 0:05:25.419,0:05:29.530 überqueren möchten und ähnliches, dann[br]durchaus in richtige Schwierigkeiten 0:05:29.530,0:05:36.820 bringen. Dann gibt’s neben den Trojanern[br]auch die Begriffe Bugdoor und Backdoor und 0:05:36.820,0:05:40.510 oft wird das miteinander vermischt;[br]dementsprechend haben wir hier mal 0:05:40.510,0:05:45.050 aufgezeichnet: was ist das eigentlich und[br]wie hängt das ganze zusammen? Man kann 0:05:45.050,0:05:50.820 sich das eigentlich ganz einfach merken[br]anhand des historischen Vorbildes: Das 0:05:50.820,0:05:56.430 trojanische Pferd ist eigentlich ja ein[br]Vehikel, das eine Nutzlast trägt – wird 0:05:56.430,0:06:00.949 aufgemacht, kommen die Soldaten rein, das[br]trojanische Pferd wird von der Stadt, also 0:06:00.949,0:06:05.510 vom System durch die User, hereingeholt[br]– heute würde man sagen: „Oh toll, 0:06:05.510,0:06:10.520 eine gratis App! Muss ich haben!“.[br]Wird also in das System integriert, 0:06:10.520,0:06:17.061 „Gratispferd“ sozusagen. Und… in der[br]Stadt angekommen, schaltet die Nutzlast in 0:06:17.061,0:06:20.790 dem Pferd, also die Soldaten, zunächst[br]einmal die Sicherheitsfeatures aus (die 0:06:20.790,0:06:25.349 Wachen) und öffnen dann die Tür für den[br]Rest der Armee. Und das ist genau die 0:06:25.349,0:06:31.010 Backdoor. Das heißt der Trojaner, oder[br]das trojanische Pferd, bewegt und steuert 0:06:31.010,0:06:34.550 im Prinzip die Backdoor. Das wär also die[br]richtige Bezeichnung, aber wie gesagt: 0:06:34.550,0:06:39.140 wird oft vermischt, wollen wir auch jetzt[br]nicht so streng sein. Dann gibt’s noch 0:06:39.140,0:06:43.590 eine ganz interessante Wortschöpfung –[br]die „Bugdoor“, aus „Bug“ und 0:06:43.590,0:06:46.760 „Backdoor“. Und das ist im Prinzip[br]einfach schlechte Programmierung oder 0:06:46.760,0:06:52.640 schlampige Programmierung. Z.B.[br]können das Hintertüren sein in einer 0:06:52.640,0:06:57.389 entsprechenden Software, die einem[br]Entwickler mal erlaubt haben, z.B. 0:06:57.389,0:07:01.189 Änderungen vorzunehmen, die dann[br]hinterher aber nicht ausgebaut wurden. Und 0:07:01.189,0:07:06.450 davon gibt es in der Tat eine ganze Menge.[br]Jetzt ist natürlich die Frage: wo können 0:07:06.450,0:07:13.040 sich solche Trojaner oder Backdoors[br]eigentlich verstecken? Wo kommen sie her? 0:07:13.040,0:07:16.889 Das wichtige hierbei ist, dass die[br]Trojaner immer im System selber wirken, 0:07:16.889,0:07:21.880 also das System ist der Wirkungsort der[br]Trojaner – egal wo sie jetzt herkommen. 0:07:21.880,0:07:26.320 Sie können auch ihre Plätze tauschen –[br]auch ganz interessant. Und das System 0:07:26.320,0:07:30.660 besteht immer – jedenfalls die Systeme[br]über die wir hier so sprechen – besteht 0:07:30.660,0:07:36.060 immer aus Software und Hardware. In der[br]Software ist die Programmierung eines 0:07:36.060,0:07:41.090 Trojaners eigentlich relativ einfach;[br]jeder, der sich einigermaßen auskennt mit 0:07:41.090,0:07:45.210 Programmierung, wird in der Lage sein,[br]wenn er lange genug dran arbeitet, einen 0:07:45.210,0:07:51.030 Trojaner zu schreiben. Das heißt, das[br]Hindernis, so etwas einzubauen ist relativ 0:07:51.030,0:07:56.330 einfach oder relativ niedrig. Aber[br]es gibt auch einen Nachteil dieser 0:07:56.330,0:07:59.920 Software-Trojaner natürlich, denn die[br]sind auch relativ leicht zu entdecken. Das 0:07:59.920,0:08:02.980 heißt, jeder, der an die Software[br]herankommt, der die also disassemblieren 0:08:02.980,0:08:07.550 kann und verstehen kann, der wird auch[br]sehen, dass da etwas nicht stimmt. Und 0:08:07.550,0:08:12.120 wenn er das erstmal gefunden hat, dass da[br]irgendetwas faul ist, dann kann er auch 0:08:12.120,0:08:17.650 einigermaßen leicht einen Beweis führen,[br]was dieser Trojaner eigentlich tut. Da 0:08:17.650,0:08:21.790 gibt’s ja auch schon bestimmte Arbeiten[br]dazu, die wirklich dann nachgewiesen 0:08:21.790,0:08:25.060 haben, wie solche Trojaner funktionieren[br]und wann sie aktiv werden und was sie 0:08:25.060,0:08:28.830 alles können. Anders ist das bei[br]den Hardware-Trojanern: bei den 0:08:28.830,0:08:31.249 Hardware-Trojanern wird nicht die Software[br]geändert, sondern es wird die Hardware 0:08:31.249,0:08:37.250 selber geändert und zwar in dem Sinne,[br]dass ein Chip zum Beispiel verändert 0:08:37.250,0:08:41.489 wird, dass die Funktionalität[br]tatsächlich in der Hardware anders ist. 0:08:41.489,0:08:44.919 Und da kann man sich vorstellen, dass der[br]Aufwand – das werden wir gleich noch 0:08:44.919,0:08:49.300 sehen, wie hoch der Aufwand tatsächlich[br]ist – dass der Aufwand recht hoch ist, 0:08:49.300,0:08:52.320 dass das Ganze teuer ist, dass es[br]vielleicht auch nicht so einfach zu 0:08:52.320,0:08:57.040 verbergen ist gegenüber anderen Leuten,[br]zum Beispiel in der Entwicklung solcher 0:08:57.040,0:09:01.290 Geräte. Aber auf der anderen Seite[br]ist es so, dass der Angreifer, oder 0:09:01.290,0:09:04.970 beziehungsweise derjenige der so etwas[br]macht, auch Vorteile hat. Z.B. ist die 0:09:04.970,0:09:09.410 Identifizierung relativ schwer. Will man[br]einen Hardware-Trojaner wirklich finden 0:09:09.410,0:09:13.480 und will man den identifizieren, muss[br]man üblicherweise so einen Chip 0:09:13.480,0:09:17.030 reverse-engineeren – sich den wirklich ganz[br]genau anschauen. Und selbst wenn man 0:09:17.030,0:09:21.980 das gemacht hat, ist immer noch die Frage:[br]eine bestimmte Hardwarefunktionalität, 0:09:21.980,0:09:26.519 die man dann gefunden hat – Was tut sie[br]wirklich? Ist sie wirklich noch aktiv? 0:09:26.519,0:09:30.480 Oder ist es vielleicht eine schlafende[br]Funktionalität, die nie verwendet wird? 0:09:30.480,0:09:37.390 Wie dem auch sei – der Beweis ist[br]aufwändig. Um jetzt herauszufinden, wie 0:09:37.390,0:09:42.540 aufwändig tatsächlich der Einbau eines[br]Hardware-Trojaners ist, ist es natürlich 0:09:42.540,0:09:46.100 zunächst mal interessant, sich[br]anzuschauen: Wie baut man so einen Chip? 0:09:46.100,0:09:48.910 Und wenn man das weiß und wenn man diese[br]Prozesse kennt, dann kann man sich auch 0:09:48.910,0:09:53.520 ansehen: Wo könnte man an diesen Stellen[br]einen Trojaner einsetzen? Und hier einfach 0:09:53.520,0:09:59.520 mal ganz kurz gezeigt: Wie baut man einen[br]Chip? Wie wird so etwas hergestellt? Links 0:09:59.520,0:10:03.190 fängt das Ganze an, mit der[br]Hardware-Beschreibungssprache, das ist 0:10:03.190,0:10:07.840 hier in diesem Fall VHDL zum Beispiel.[br]VHDL ist so etwas wie eine 0:10:07.840,0:10:11.930 Programmiersprache für Software, bloß[br]dass man ‚Hardware direkt schreibt‘. 0:10:11.930,0:10:15.990 Und dieser Code enthält im Prinzip[br]dann die Funktionalität – was soll die 0:10:15.990,0:10:20.670 Hardware tun: Logische Funktionen, ganze[br]CPUen kann man da drin schreiben. Jeder 0:10:20.670,0:10:24.800 der schon mal mit ‘nem FPGA vielleicht[br]was gemacht hat, der kennt das gut. Wenn 0:10:24.800,0:10:29.320 diese VHDL-Sprache, wenn der Code fertig[br]ist, dann wirft man den, genau wie 0:10:29.320,0:10:33.220 Software-Code in einen Compiler und aus[br]diesem Compiler kommt zunächst mal ein 0:10:33.220,0:10:37.990 Schaltplan heraus. Da sind die einzelnen[br]Funktionalitäten miteinander verbunden, 0:10:37.990,0:10:41.629 im Prinzip so, wie bei normalen[br]Schaltplänen auch. Und aus diesem 0:10:41.629,0:10:45.350 Schaltplan kann man dann – das ist das[br]zweite Bild – ein Layout erstellen. Das 0:10:45.350,0:10:50.390 Layout zeigt, wo auf dem Chip die[br]verschiedenen Funktionselemente liegen und 0:10:50.390,0:10:53.760 wie die miteinander verbunden sind. Kann[br]man sich so ungefähr vorstellen wie eine 0:10:53.760,0:10:56.899 Platine – da sind auch die verschiedenen[br]Bauelemente drauf und es gibt 0:10:56.899,0:11:00.580 Metallverbindungsleitungen dazwischen;[br]hier ist das genauso: die verschiedenen 0:11:00.580,0:11:03.150 Farben sind auch[br]Metallverbindungsleitungen bloß auf 0:11:03.150,0:11:07.330 verschiedenen Ebenen. Wenn man daraus[br]jetzt tatsächlich einen Chip machen 0:11:07.330,0:11:13.080 möchte, dann muss man das Ganze auf ein[br]optisches System übertragen. Das ist hier 0:11:13.080,0:11:17.640 aufgezeigt anhand eines sogenannten[br]„Maskensatzes“. Das sind also 0:11:17.640,0:11:24.500 Quarzglasscheiben; ich habe hier mal so[br]einen Rohling mitgebracht. Auf diesen 0:11:24.500,0:11:28.370 Quarzglasscheiben wird Chrom abgeschieden[br]– eine ganz dünne Schicht – und 0:11:28.370,0:11:35.031 mikrostrukturiert. Und das benutzt man[br]dann als optische Maske, um einzelne 0:11:35.031,0:11:39.390 Schichten auf einen Rohsilizium-Wafer[br]nacheinander aufzubringen. Davon braucht 0:11:39.390,0:11:43.410 man so einige Dutzend von diesen Masken.[br]Und wenn man die dann nacheinander 0:11:43.410,0:11:47.380 prozessiert hat, dann hat man schließlich[br]den Wafer – ich denke mal das kennt 0:11:47.380,0:11:49.990 jeder – brauchen wir gar nicht viel[br]drüber zu erzählen. Auf so ‘nem Wafer 0:11:49.990,0:11:53.820 sind dann die ganzen Chips angeordnet und[br]den muss man nur noch auseinander sägen 0:11:53.820,0:11:58.240 oder auseinander lasern um dann[br]die einzelnen Chips zu bekommen. 0:11:58.240,0:12:01.980 Marcus: Nun ist da natürlich die Frage:[br]Wo ist jetzt hier eigentlich der Trojaner? 0:12:01.980,0:12:05.860 Das heißt, wir sehen: hier gibt’s viel,[br]viel mehr Fertigungsschritte als zum 0:12:05.860,0:12:09.220 Beispiel wenn man eine Software[br]implementiert. Infolge dessen gibt es 0:12:09.220,0:12:11.810 natürlich auch viel, viel mehr[br]Möglichkeiten, wo man einen Trojaner 0:12:11.810,0:12:16.040 implementieren kann. Und in der Tat ist[br]es so, dass es in jeder der einzelnen 0:12:16.040,0:12:20.380 Fertigungsstufen ein Trojaner prinzipiell[br]eingebracht werden kann, das heißt sowohl 0:12:20.380,0:12:25.930 im VHDL als auch im Layout oder im[br]Maskensatz. Gehen wir schrittweise vor: 0:12:25.930,0:12:31.459 Was kann man im VHDL machen? Nun, Peter[br]hatte ja schon gesagt: im VHDL ist die 0:12:31.459,0:12:36.890 Funktionalität genau beschrieben. Was hindert[br]mich daran, ein paar Zeilen Code mehr 0:12:36.890,0:12:40.479 reinzuschreiben und eine zusätzliche[br]Funktionalität, nämlich die 0:12:40.479,0:12:45.810 Trojanerfunktionalität, hier zu[br]integrieren? Das heißt, ein Trojaner kann 0:12:45.810,0:12:51.510 durch die direkte Implementierung eines[br]VHDL-Codes in ein großes Projekt direkt 0:12:51.510,0:12:55.430 mit implementiert werden und wird dann[br]natürlich in den folgenden Schritten auch 0:12:55.430,0:13:00.589 ins Layout, in den Maskensatz und damit in[br]das fertige Produkt mit übernommen. Man 0:13:00.589,0:13:05.030 merkt schon: die Implementierung ist an[br]der Stelle relativ einfach. Allerdings 0:13:05.030,0:13:09.170 auch wenn dieser Code genau gereviewt[br]wird und man genauer überprüft „Was 0:13:09.170,0:13:12.930 steht eigentlich da drin? Was sind die[br]einzelnen Funktionalitäten, die im VHDL 0:13:12.930,0:13:16.279 beschrieben sind?“, ist auch die[br]Entdeckwahrscheinlichkeit normalerweise 0:13:16.279,0:13:20.590 recht einfach. Hinzu kommt dann noch, dass[br]dieser VHDL-Code natürlich noch durch 0:13:20.590,0:13:25.040 viele Schritte prozessiert wird, das[br]heißt viele Leute schauen da noch mal 0:13:25.040,0:13:31.500 drauf und die Entdeckwahrscheinlichkeit[br]steigt damit. Selbst wenn der VHDL-Code 0:13:31.500,0:13:36.790 ohne Trojaner geschrieben worden ist,[br]könnte im Schritt des Layoutes noch ein 0:13:36.790,0:13:41.520 Trojaner eingebracht werden. Wir sehen[br]hier auf dem Beispiel ja die verschiedenen 0:13:41.520,0:13:45.560 elektrischen Verbindungen, wie Peter schon[br]gesagt hat, in den verschiedenen Farben. 0:13:45.560,0:13:50.019 Und mit einem speziellen Layout-Programm,[br]vergleichbar praktisch mit einem 0:13:50.019,0:13:53.210 Bildbearbeitungsprogramm, kann man[br]natürlich auch diese Verbindungen 0:13:53.210,0:13:57.730 verändern, kann neue Elemente einfügen,[br]kann die elektrischen Verbindungen so 0:13:57.730,0:14:00.740 verändern, dass eine zusätzliche[br]Funktionalität – die 0:14:00.740,0:14:05.520 Trojaner-Funktionalität – implementiert[br]wird. Schon allein da dran merkt man 0:14:05.520,0:14:08.459 allerdings, dass der Aufwand[br]natürlich deutlich höher wird. Eine 0:14:08.459,0:14:12.220 Vielzahl von Elementen und eine Vielzahl[br]von Leitungen müssen verändert werden 0:14:12.220,0:14:16.430 und das heißt, dies ist nichts mehr, was[br]man schnell nebenbei in einen Code 0:14:16.430,0:14:21.730 reinschreibt, sondern tatsächlich viele[br]Stunden Arbeit. Dafür: Wer schaut sich 0:14:21.730,0:14:27.059 das Layout schon genau an? Das heißt also[br]auch, die Entdeckung ist an dieser Stelle 0:14:27.059,0:14:31.130 normalerweise zumindest mal schwerer[br]als beim VHDL. Man müsste wirklich jede 0:14:31.130,0:14:35.120 einzelne Leitung dann wieder verfolgen,[br]wo geht sie hin, ist das die gewünschte 0:14:35.120,0:14:40.880 Funktionalität. Naja, und so, wie man aus[br]dem Layout den Maskensatz macht, kann man 0:14:40.880,0:14:45.250 natürlich auch im Maskensatz selber auch[br]einen Trojaner einbringen. Das heißt 0:14:45.250,0:14:49.690 also: die Strukturen, die auf der Maske[br]vorgezeichnet sind und dann später in dem 0:14:49.690,0:14:53.960 Chip realisiert werden sollen, kann man[br]natürlich auch auf der Maske verändern. 0:14:53.960,0:14:59.210 Jetzt kann man schwererdings einfach die[br]Belichtungsmaske hernehmen und da mit 0:14:59.210,0:15:03.290 ‘nem Skalpell oder sowas kratzen[br]– das ist einfach viel, viel zu grob. 0:15:03.290,0:15:07.089 Stattdessen muss man dann natürlich[br]tatsächlich einen neuen Maskensatz oder 0:15:07.089,0:15:11.110 zumindest neue Masken, die man geändert[br]hat, erzeugen und dafür braucht man 0:15:11.110,0:15:15.320 natürlich schon hochpräzises[br]Spezialequipment. Infolgedessen ist die 0:15:15.320,0:15:19.050 Implementierung nochmal komplizierter[br]als beim Layout; man muss nicht nur die 0:15:19.050,0:15:22.250 Leitungen und die Elemente verändern,[br]sondern auch noch die Gerätschaften 0:15:22.250,0:15:26.180 dafür haben. Die Entdeckung auf[br]der anderen Seite ist dafür dann 0:15:26.180,0:15:31.680 normalerweise natürlich nochmal eine[br]ganze Stufe schwerer, denn: Wie soll man 0:15:31.680,0:15:36.839 genau so eine Maske verifizieren, dass[br]sie keine veränderten Funktionalitäten 0:15:36.839,0:15:40.339 enthält? Man müsste dann wieder einen[br]Vergleich zum Layout (machen) – und 0:15:40.339,0:15:43.700 hoffen, dass das sich das Layout nicht[br]verändert hat in der Zwischenzeit durch 0:15:43.700,0:15:48.399 jemanden, der den Trojaner einbringen[br]möchte… Also man merkt: die Entdeckung 0:15:48.399,0:15:53.480 wird hier schon sehr kompliziert. Das[br]waren jetzt Möglichkeiten, wie man 0:15:53.480,0:15:57.610 Trojaner – so wie man es sich jetzt[br]direkt denkt – einfach implementieren 0:15:57.610,0:16:02.260 kann. Aber: ihr seht auch hier haben wir[br]schon angegeben, dass die Entdeckung 0:16:02.260,0:16:07.620 normalerweise einfach, mittelschwer oder[br]schwer ist. Warum „normalerweise“? 0:16:07.620,0:16:12.970 Denn es gibt – wir nennen es[br]„Snakeoil-Features“, die stark 0:16:12.970,0:16:17.010 begünstigen können, dass man Trojaner[br]einbringen kann und auf der anderen Seite 0:16:17.010,0:16:22.499 sogar sehr stark erschweren können,[br]dass man Trojaner detektieren kann. 0:16:22.499,0:16:27.829 Snakeoil-Features, klar, das Schlangenöl,[br]das angepriesen wird wie ein 0:16:27.829,0:16:33.160 Wunderheilmittel, tolle Wirkung haben[br]soll, aber vielleicht auch tatsächlich 0:16:33.160,0:16:36.292 die Wirkung nicht ganz so entfaltet – oder[br]sogar noch viel schlimmer: sogar noch 0:16:36.292,0:16:40.730 eine Nebenwirkung, eine gefährliche[br]Nebenwirkung ausprägen kann. Und genau 0:16:40.730,0:16:45.180 das kann hier auch passieren: etwas, was[br]man vielleicht mit dem guten Gefühl 0:16:45.180,0:16:50.920 eingebaut hat in den VHDL-Code, um eine[br]Funktionalität, um ein Security-Feature 0:16:50.920,0:16:55.120 zu realisieren, dass sich dann natürlich[br]im Layout, im Maskensatz und letztlich im 0:16:55.120,0:17:01.500 Produkt auch wiederfindet. Aber:[br]vielleicht ermöglichen solche Features 0:17:01.500,0:17:07.199 auch ‘ne ganz leichte Modifikation in[br]dem Herstellungsprozess. Schauen wir uns 0:17:07.199,0:17:11.860 an, wie das zum Beispiel am Anfang der[br]Prozesskette ausschauen kann. Stellen wir 0:17:11.860,0:17:18.010 uns vor, dass der VHDL-Code nicht einfach[br]geschrieben ist, sondern komplexer ist – 0:17:18.010,0:17:26.440 ein VHDL-Code, direkt ansehen kann:[br]Was steckt da eigentlich drin? In diesem 0:17:26.440,0:17:30.360 komplexen Quellcode ist es natürlich[br]auch viel, viel leichter, andere 0:17:30.360,0:17:33.520 Funktionalitäten mit reinzubringen, die[br]man zunächst einmal vielleicht gar nicht 0:17:33.520,0:17:38.099 vermutet. Die Detektion, dadurch dass er[br]ja komplexer ist, ist automatisch auch 0:17:38.099,0:17:41.449 schwerer. Man muss diese ganzen komplexen[br]Funktionen dann natürlich genau 0:17:41.449,0:17:46.289 nachvollziehen; was passiert da[br]eigentlich? Ist das nur Theorie? 0:17:46.289,0:17:51.310 Naja, wir kennen ja aus der Software-Welt die[br]sogenannte „White-Box-Kryptografie“. 0:17:51.310,0:17:56.830 Die White-Box-Kryptografie nutzt ja gerade[br]möglichst komplexe Software-Codes, um da 0:17:56.830,0:18:01.519 drin kryptografische Schlüssel zu[br]verstecken. Das heißt: um einen 0:18:01.519,0:18:06.130 kryptografischen Schlüssel in einer[br]Software möglichst gut gegen Ausspähen 0:18:06.130,0:18:12.439 zu verstecken, wird halt das Thema[br]White-Box-Kryptografie angepriesen. Die 0:18:12.439,0:18:15.559 Codes hier drin sind so komplex, dass[br]man sie an sich kaum noch wirklich 0:18:15.559,0:18:20.729 durchschauen kann. Übertragen wir das auf[br]die Hardware: Was bedeutet, wenn man statt 0:18:20.729,0:18:24.929 dem VHDL-Code, der hier abgebildet ist,[br]plötzlich eine viel komplexere Struktur 0:18:24.929,0:18:29.680 einbaut, wie wir hier symbolhaft in dem[br]roten Kasten abgebildet haben. Diese 0:18:29.680,0:18:32.789 komplexen Funktionen genau zu[br]durchleuchten – was steckt da eigentlich 0:18:32.789,0:18:37.309 alles hinter? – ist natürlich ungleich[br]schwerer, und somit kann man relativ 0:18:37.309,0:18:43.109 einfach dann auch schwer erkennbare[br]Trojaner einschleusen. Selbst, wenn es 0:18:43.109,0:18:48.059 nicht am vorderen Teil der[br]Herstellungskette eingeschleust wird, 0:18:48.059,0:18:57.509 können (…) Snakeoil-Features[br]begünstigen, das man zu einem späteren 0:18:57.509,0:19:01.169 Prozessschritt entsprechend noch[br]Veränderungen vornimmt. Stellen wir uns 0:19:01.169,0:19:06.990 vor, ein Snakeoil-Feature ist im VHDL-Code[br]integriert worden mit dem guten Gefühl 0:19:06.990,0:19:11.390 „Ja, das ist jetzt das Wundermittel. Das[br]hilft uns. Das macht den Chip jetzt so 0:19:11.390,0:19:18.010 viel sicherer.“ Aber erlaubt vielleicht[br]bei dem Maskensatz mit einer einfachen 0:19:18.010,0:19:23.410 zusätzlichen Maske eine Manipulation[br]vorzunehmen und damit tatsächlich die 0:19:23.410,0:19:26.950 Chips in einer Art und Weise zu[br]verändern, dass man sie leicht 0:19:26.950,0:19:33.439 kontrollieren kann. Wie könnte sowas[br]aussehen? Ein praktisches Beispiel dafür 0:19:33.439,0:19:38.179 sind die sogenannten „physical[br]unclonable functions“, die eine hohe 0:19:38.179,0:19:43.000 Gefahr bergen, dass sie manipuliert werden[br]können. Bei den physical unclonable 0:19:43.000,0:19:48.480 functions wird ja bei den S-RAM physical[br]unclonable functions der interne 0:19:48.480,0:19:53.269 Arbeitsspeicher verwendet, der[br]beim Einschalten die Zellen eher… 0:19:53.269,0:19:57.799 einige Zellen eher nach 0 kippen lassen,[br]andere Zellen eher die Vorzugsrichtung 0:19:57.799,0:20:01.689 nach 1 haben. Das ist bausteinindividuell[br]und hängt von ganz kleinen 0:20:01.689,0:20:07.350 Herstellungstoleranzen ab. Damit hat man[br]also einen bausteinindividuellen Wert, der 0:20:07.350,0:20:10.960 hier erzeugt wird; insbesondere, wenn bei[br]jedem Einschalten wieder das gleiche 0:20:10.960,0:20:14.679 Muster entsteht, kann man hieraus[br]natürlich versuchen, zum Beispiel 0:20:14.679,0:20:21.359 kryptografische Schlüssel abzuleiten,[br]eben die Funktionalität einer „physical 0:20:21.359,0:20:25.910 unclonable function“. Dieses[br]Einschaltverhalten ist aber natürlich 0:20:25.910,0:20:30.090 insbesondere durch eine einfache[br]zusätzliche Maske im Herstellungsprozess 0:20:30.090,0:20:36.120 leicht manipulierbar: Ich kann einfach[br]die RAM-Zellen durch eine Maske in eine 0:20:36.120,0:20:40.720 Vorzugslage bringen, dass eben gewisse[br]Zellen, die ich kenne als Einbringer 0:20:40.720,0:20:46.519 dieser Maske, eher nach 0 kippen, oder[br]andere eher nach 1 kippen. Was passiert 0:20:46.519,0:20:52.149 ist, dass ich die Veränderung in diesem[br]Chip kennen würde, jemand anderes, der 0:20:52.149,0:20:56.320 den Chip aber beobachtet, zunächst[br]einmal nicht weiß: Ist das jetzt ein 0:20:56.320,0:21:00.830 bausteinindividueller zufälliger Wert,[br]oder ist das ein Wert, der verändert 0:21:00.830,0:21:06.460 worden ist? Und genau das zeigt ja schon,[br]wie kompliziert es ist, solche Trojaner 0:21:06.460,0:21:12.249 dann zu identifizieren. Eine ähnliche[br]Methode ist auch denkbar bei den 0:21:12.249,0:21:16.859 sogenannten „Camouflage Chip Designs“[br]– hier handelt es sich nicht um eine 0:21:16.859,0:21:22.140 einfache Speicherzelle, sondern um ein[br]universelles Logik-Element. Dieses 0:21:22.140,0:21:25.840 Logik-Element wird zunächst einmal im[br]Schaltplan platziert und kann zu einem 0:21:25.840,0:21:30.989 späteren Zeitpunkt im Herstellungsprozess[br]festgelegt werden, ob es jetzt zum 0:21:30.989,0:21:33.609 Beispiel eine UND- oder eine[br]ODER-Verknüpfung oder eine andere 0:21:33.609,0:21:38.859 logische Verknüpfung darstellen soll.[br]Genauso, wie die Programmierung in diesem 0:21:38.859,0:21:43.770 letzten Schritt durch die Maske erfolgt,[br]kann ich natürlich auch, wenn ich einen 0:21:43.770,0:21:48.499 Trojaner einbringen möchte, hier eine[br]spezielle Maske einschmuggeln und damit 0:21:48.499,0:21:52.950 dann entsprechend die Funktionalität[br]so verändern, wie sie für mich als 0:21:52.950,0:21:59.330 Hardware-Trojaner-Anwender dann von[br]Vorteil wäre. Also man sieht schon, dass 0:21:59.330,0:22:03.849 neben den normalen Arten, wie man einen[br]Trojaner in einen Chip einbringen kann 0:22:03.849,0:22:07.629 auch viele Möglichkeiten bestehen,[br]die zum Beispiel über solche 0:22:07.629,0:22:12.160 Snakeoil-Features dann deutlich[br]begünstigt werden und die sehr schwer 0:22:12.160,0:22:16.869 teilweise zu detektieren sind. Und[br]selbst wenn man sagt: „Moment, der 0:22:16.869,0:22:21.219 Hardware-Trojaner muss ja irgendwann mit[br]der Außenwelt kommunizieren. Kann man das 0:22:21.219,0:22:25.259 dann nicht einfach detektieren?“, so[br]sehen wir, dass es auch sehr, sehr viele 0:22:25.259,0:22:29.720 verschiedenartige Backdoors gibt, die als[br]Mittel zur versteckten Kommunikation 0:22:29.720,0:22:35.299 genutzt werden können. Das kann sowohl[br]über Protokolle erfolgen, das kann über 0:22:35.299,0:22:40.269 Seitenkanal-Informationen erfolgen – die[br]aber im Gegensatz zu Seitenkanal-Angriffen 0:22:40.269,0:22:45.970 hier gezielt Informationen ausgeben –[br]das kann über Chip-Manipulation, das 0:22:45.970,0:22:49.399 heißt also tatsächlich über[br]physikalisches Beeinflussen des Chips oder 0:22:49.399,0:22:54.629 sogar über Fehlerinduktion erfolgen.[br]Und diese Vielfältigkeit, die man hier hat 0:22:54.629,0:22:59.019 für diese Backdoors finden wir sehr[br]spannend und deshalb möchten wir auch auf 0:22:59.019,0:23:03.939 einige dieser Fälle jetzt genauer drauf[br]eingehen. Hier haben wir für uns aber 0:23:03.939,0:23:07.710 insbesondere eine Auswahl getroffen, wie[br]man auch unten an den Beispielquellen 0:23:07.710,0:23:11.909 sieht, die auch publiziert sind; denn wir[br]möchten jetzt natürlich nicht noch 0:23:11.909,0:23:15.530 Dienste auf irgendwelche neuen,[br]interessanten Ideen bringen, sondern wir 0:23:15.530,0:23:20.129 möchten eher aufklären und zeigen, was[br]für Möglichkeiten gibt es überhaupt, 0:23:20.129,0:23:25.220 wie Protokolle missbraucht werden können[br]um Daten zu übertragen. Und das 0:23:25.220,0:23:29.570 bekannteste natürlich, was man[br]auch von Software-Trojanern kennt, 0:23:29.570,0:23:33.339 ist natürlich, dass undokumentierte[br]Befehle oder Befehlssequenzen akzeptiert 0:23:33.339,0:23:37.929 werden, oder auch ein Generalschlüssel[br]integriert wird, mithilfe dessen man dann 0:23:37.929,0:23:44.169 unbemerkten Zugang auf die internen Daten[br]oder auf den Code haben kann. Eine andere 0:23:44.169,0:23:48.769 Methode, ebenfalls aus der Welt der[br]Software-Trojaner relativ gut bekannt, 0:23:48.769,0:23:53.519 sind geschwächte Krypto-Algorithmen.[br]Derjenige, der den Trojaner einbringt, der 0:23:53.519,0:23:58.179 kennt halt: welche Funktionalität hat er[br]hier als Backdoor gewählt und wie kann er 0:23:58.179,0:24:03.230 den kryptografischen Algorithmus relativ[br]leicht angreifen. Das heißt, er kann dann 0:24:03.230,0:24:08.190 die kryptografischen Geheimnisse[br]extrahieren und damit dann an die internen 0:24:08.190,0:24:13.340 Daten rankommen. Ein Szenario, was aber[br]auf den Protokollen bisher noch nicht so 0:24:13.340,0:24:17.830 groß diskutiert worden ist, ist das Thema[br]„Watermarking“. Klar, Watermarking 0:24:17.830,0:24:22.519 kennen wir zum Beispiel aus dem Bereich,[br]wo Videos, Bilder oder Audiofiles 0:24:22.519,0:24:29.289 übertragen werden, als Kennung „Wo[br]kommt diese Datei eigentlich her?“. Aber 0:24:29.289,0:24:34.539 was passiert eigentlich, wenn ein Chip[br]eine größere Menge Daten ausgeben muss 0:24:34.539,0:24:38.869 und hier einfach ein Watermarking[br]sozusagen steganografisch 0:24:38.869,0:24:44.210 Zusatzinformationen in dem Output[br]versteckt? Wer nicht das Verfahren kennt, 0:24:44.210,0:24:48.410 wie man diese Daten daraus extrahiert,[br]wird sich sehr schwertun, festzustellen: 0:24:48.410,0:24:52.049 Ist das eigentlich jetzt die normale[br]Datei, die normale Information, die 0:24:52.049,0:24:56.809 rauskommt, oder sind da vielleicht ein[br]paar einzelne Bits eben verändert über 0:24:56.809,0:25:02.030 die dann Informationen aus dem Chip[br]herausextrahiert werden? Und genau dieses 0:25:02.030,0:25:07.519 Wissen ist besonders auch, was bei[br]Seitenkanal-Backdoors schwer ist, diese zu 0:25:07.519,0:25:12.109 detektieren. Beobachte ich das[br]Stromprofil, oder zum Beispiel die 0:25:12.109,0:25:17.799 elektromagnetische Abstrahlung, so kann[br]ich relativ einfach detektieren: Ja, das 0:25:17.799,0:25:22.779 schaut alles zufällig aus. Oder: Das[br]schaut alles irgendwie aus, als ob es 0:25:22.779,0:25:28.199 einfach der Funktionalität geschuldet[br]ist. Aber jemand der speziell diese 0:25:28.199,0:25:32.259 Backdoor eingebracht hat, weiß[br]vielleicht, dass er genau zu gewissen 0:25:32.259,0:25:37.200 Zeitpunkten den Stromverlauf oder die[br]elektromagnetische Abstrahlung sich 0:25:37.200,0:25:41.950 anschauen muss, und kriegt damit dann die[br]einzelnen Informationen übertragen über 0:25:41.950,0:25:46.669 eben zum Beispiel die Amplitude, wieviel[br]Strom verbraucht worden ist, oder wieviel 0:25:46.669,0:25:50.609 abgestrahlt worden ist. Also ein[br]Verfahren, was auch relativ schwer zu 0:25:50.609,0:25:54.640 detektieren ist, um zu sehen: ist da jetzt[br]eigentlich eine zusätzliche 0:25:54.640,0:26:00.879 Informationsausgabe oder nicht? Noch[br]komplizierter wird es beim Thema 0:26:00.879,0:26:06.489 Lichtabstrahlung. Viele kennen sicherlich,[br]dass wenn ein Transistor mehrere Male 0:26:06.489,0:26:12.489 schaltet – typischerweise so 1000 bis[br]10.000 Mal – entsteht als Nebenprodukt 0:26:12.489,0:26:17.579 auch ein Photon, ein infrarotes[br]Lichtteilchen. Und dieses kann man 0:26:17.579,0:26:22.149 natürlich messen oder zum Beispiel mit[br]speziellen Kameras aufnehmen. Damit kann 0:26:22.149,0:26:25.849 man sehen, wo ist zum Bespiel Aktivität[br]im Chip, wo sind viele Transistoren, die 0:26:25.849,0:26:30.819 schalten. Aber, wenn man eine[br]entsprechende Backdoor einbaut, könnte 0:26:30.819,0:26:35.159 man natürlich auch ein Element auch so[br]gezielt manipulieren, dass es besonders 0:26:35.159,0:26:39.399 häufig Informationen oder häufig[br]Photonen ausstrahlt, oder noch viel 0:26:39.399,0:26:43.490 interessanter: man weiß einfach, an[br]welcher Stelle ist dieser Transistor, den 0:26:43.490,0:26:48.820 ich beobachten muss, und damit „morst“[br]sozusagen, wie mit einer Taschenlampe 0:26:48.820,0:26:55.210 dieser Transistor dann die Informationen[br]halt entsprechend raus. Genauso messen 0:26:55.210,0:27:00.649 kann man auch das Potenzial natürlich auf[br]Signalleitungen; sicherlich habt ihr bei 0:27:00.649,0:27:05.109 unserem Vortrag „25 Jahre[br]Chipkarten-Angriffe“ auch gesehen, wie 0:27:05.109,0:27:10.179 man mittels Elektronen-Rastermikroskop[br]die Potenziale auf elektrischen Leitungen 0:27:10.179,0:27:15.189 messen kann. Wenn ich jetzt den gesamten[br]Chip beobachte, dann sehe ich natürlich 0:27:15.189,0:27:20.469 eine Vielzahl von Potenzialen auf den[br]einzelnen Leitungen. Aber: Jemand der 0:27:20.469,0:27:24.929 gezielt diese Backdoor nutzt, hat sich[br]vielleicht eine Leitung in eine obere 0:27:24.929,0:27:30.269 Metalllage gelegt, von der er weiß, hier[br]laufen alle kritischen Daten rüber. Jetzt 0:27:30.269,0:27:34.559 kann er diese einfach mit dem[br]Elektronenstrahl ausmessen und damit dann 0:27:34.559,0:27:38.759 die Informationsübertragung aus dem[br]Chip heraus in das System – in das 0:27:38.759,0:27:44.320 Analysesytem – vornehmen. Ja, und wie[br]vielfältig das Ganze ist, sieht man sogar 0:27:44.320,0:27:48.529 (daran), dass selbst die Temperatur[br]genutzt werden kann. Auch hier gibt es 0:27:48.529,0:27:54.259 gerade jüngste Quellen, die zeigen, dass[br]auf einem Multi-Core-System auf dem einen 0:27:54.259,0:28:00.029 Prozessor viel gerechnet wird und das die[br]Bearbeitung auf dem anderen Core in diesem 0:28:00.029,0:28:04.500 System beeinflusst. Ja, viel mehr noch:[br]es gibt sogar eine entsprechende 0:28:04.500,0:28:09.619 Veröffentlichung, wo einfach zwei PCs[br]nebeneinander stehen; auf dem einen PC 0:28:09.619,0:28:14.029 wird gerechnet und auf dem anderen PC[br]wird aufgrund der intern integrierten 0:28:14.029,0:28:19.269 Temperatursensoren dann die Erwärmung[br]beobachtet und somit praktisch kontaktlos 0:28:19.269,0:28:23.109 von einem System zum anderen die[br]Information übertragen. Natürlich: das 0:28:23.109,0:28:26.770 ist sehr, sehr langsam, weil so[br]Temperatur ändert sich natürlich nicht 0:28:26.770,0:28:30.710 so schnell, da spricht man nur von wenigen[br]Bits pro Stunde, die übertragen werden 0:28:30.710,0:28:35.090 können, aber immerhin – auch solche[br]Seitenkanäle können dafür genutzt 0:28:35.090,0:28:45.009 werden. Sehr viel bekannter sind wiederum[br]Manipulations-Backdoors; wer kennt es 0:28:45.009,0:28:48.769 nicht, dass auf einem Chip, wenn man sich[br]den mal genauer anschaut, vielleicht nicht 0:28:48.769,0:28:52.570 nur die angeschlossenen Kontaktfelder[br]sind, sondern vielleicht auch zusätzliche 0:28:52.570,0:28:56.720 Kontaktfelder, wo im Datenblatt[br]ganz lapidar „n/c“ – not connected 0:28:56.720,0:29:03.279 dransteht, oder „RFU“ – for future[br]use. Wer weiß, was dahinter wirklich 0:29:03.279,0:29:07.760 steckt, ob die wirklich nicht[br]angeschlossen sind, oder ob da nicht eine 0:29:07.760,0:29:11.859 zusätzliche Funktionalität ist – sei[br]es eine Debug-Schnittstelle oder andere 0:29:11.859,0:29:17.539 Funktionalitäten, über die man dann mit[br]dem Chip entsprechend kommunizieren kann? 0:29:17.539,0:29:22.299 Und genauso, wie man das auf den[br]Kontaktfeldern beobachten kann, ist 0:29:22.299,0:29:28.369 natürlich auch denkbar, dass man (…)[br]bei der Implementierung eines Trojaners 0:29:28.369,0:29:33.010 eine vorbestimmte Signalleitung auf dem[br]Chip implementiert und wird diese zum 0:29:33.010,0:29:37.029 Beispiel mittels eines Laserstrahls[br]durchgeschnitten – ein normaler 0:29:37.029,0:29:41.460 Lasercutter, der auch auf dem[br]Gebrauchtmarkt recht preiswert zu haben 0:29:41.460,0:29:46.139 ist – dann kann man entsprechend die[br]Zusatzfunktionalität in diesem Chip 0:29:46.139,0:29:50.440 vielleicht freischalten und dann[br]plötzlich erst nach dieser Manipulation, 0:29:50.440,0:29:56.789 nach diese physikalischen Manipulation mit[br]dem Chip kommunizieren. Und selbst 0:29:56.789,0:30:01.219 Speicherzellen wie zum Beispiel das RAM,[br]hatten wir eben ja schon gesehen bei 0:30:01.219,0:30:04.780 physical unclonable functions, bei[br]den sogenannten „unklonierbaren 0:30:04.780,0:30:10.080 Funktionen“, kann man mittels zum[br]Beispiel Ionenimplantation auch verändern 0:30:10.080,0:30:16.479 und damit andere Daten vorgeben oder die[br]Funktion der Schaltung verändern. Last 0:30:16.479,0:30:20.739 but not least: der Bereich der[br]Fehlerinduktion kann auch noch genutzt 0:30:20.739,0:30:27.639 werden, um (…) durch die Backdoor zu[br]kommunizieren und dem Trojaner 0:30:27.639,0:30:32.899 entsprechend Informationen mitzuteilen.[br]Zum Beispiel könnte man spezielle 0:30:32.899,0:30:38.479 Elemente mit einem Laserstrahl anleuchten[br]– und klar, der Chip ist aus Silizium, 0:30:38.479,0:30:42.309 das ist am Ende nichts anderes als auch[br]eine Solarzelle vielleicht auf dem Dach 0:30:42.309,0:30:46.589 – das heißt, der Laserstrahl induziert[br]dann eine kleine Photospannung oder einen 0:30:46.589,0:30:50.999 Photostrom und kann dadurch dann[br]natürlich eine Schaltfunktionalität 0:30:50.999,0:30:55.609 auslösen, die man von außen so gar nicht[br]direkt steuern kann, wenn man nicht genau 0:30:55.609,0:31:01.209 weiß, wo man mit dem Laser draufblitzen[br]muss. Was bekannter ist, ist auch, das 0:31:01.209,0:31:06.699 häufig Speicher mit Schutzmechanismen[br]ausgestattet werden. Wer kennt es nicht: 0:31:06.699,0:31:10.669 nachdem man ein Programm in einem[br]Mikrocontroller heruntergeladen hat, dann 0:31:10.669,0:31:15.080 wird ein Schreibschutz-Bit gesetzt und[br]anschließend soll es nicht mehr möglich 0:31:15.080,0:31:20.739 sein, die Daten auszulesen. Wenn man aber[br]als Designer vielleicht genau weiß: diese 0:31:20.739,0:31:24.629 Transistorzelle entscheidet jetzt[br]darüber, ob man einen Zugriff hat, oder 0:31:24.629,0:31:29.759 nicht, weiß man vielleicht auch wo man[br]genau mit dem ultravioletten Licht 0:31:29.759,0:31:33.899 draufleuchten muss, um diesen[br]Schreibschutz halt zu deaktivieren und 0:31:33.899,0:31:38.349 dann doch wieder einen Zugriff auf den[br]Speicher zu bekommen. Jetzt gibt es das 0:31:38.349,0:31:42.550 teilweise, dass das tatsächlich als[br]Bugdoor, wie Peter ja auch schon erklärt 0:31:42.550,0:31:46.879 hat, einfach als schlechtes Design[br]implementiert ist. Aber es könnte 0:31:46.879,0:31:51.070 natürlich auch vorsätzlich implementiert[br]sein, als Backdoor, dass der Designer 0:31:51.070,0:31:55.230 genau weiß wenn ich die Daten hier raus[br]haben möchte, dann lösche ich diese eine 0:31:55.230,0:32:02.490 Speicherzelle, z.B. mittels UV-Strahlung[br]und habe dann den Zugriff. Eine sehr 0:32:02.490,0:32:07.999 spannende, aber auch kniffligere Sache ist[br]das Thema der Zufallszahlen-Generatoren. 0:32:07.999,0:32:13.190 Die Zufallszahlen-Generatoren werden[br]ja viel genutzt um kryptographische 0:32:13.190,0:32:19.119 Funktionen abzusichern. Der Zufall, eben[br]eine nicht vorhersagbare Funktion 0:32:19.119,0:32:25.790 innerhalb dieses Chips, auszunutzen um[br]z.B. Daten zu randomisieren, oder aber 0:32:25.790,0:32:31.869 Abläufe zufällig zu gestalten. Das Ganze[br]wir aber natürlich ad-absurdum geführt, 0:32:31.869,0:32:36.499 wenn man diese Zufallszahlen von außen[br]beeinflussen kann. Oder aber sogar deren 0:32:36.499,0:32:41.910 Werte vorgeben kann. Und genau auch das[br]ist mit Fehlerinduktion denkbar, dass man 0:32:41.910,0:32:47.219 z.B. von außen ein elektromagnetisches[br]Feld, also im Prinzip eine Radiofrequenz 0:32:47.219,0:32:52.919 vorgibt, und damit die internen[br]Zufallszahlen in einer Weise beeinflusst, 0:32:52.919,0:32:58.189 dass man direkt Daten einprägen kann,[br]oder aber zumindest aufsynchronisieren 0:32:58.189,0:33:03.390 kann, dass man nicht mehr unvorhersagbare,[br]sondern vorhersagbare Zufallszahlen 0:33:03.390,0:33:09.880 generiert. Eine Geschichte, nur wer genau[br]diese Frequenz kennt, wie er es einkoppeln 0:33:09.880,0:33:14.859 kann, kann diese Backdoor dann nutzen[br]um z.B. die Zufallsprozesse innerhalb des 0:33:14.859,0:33:21.099 Chips außer Gefecht zu setzen. Naja und[br]wenn wir über Sicherheitschips sprechen, 0:33:21.099,0:33:26.249 dann wissen wir ja auch, dass sehr häufig[br]z.B. Sensoren eingebaut werden. Sensoren 0:33:26.249,0:33:31.339 um Angriffe zu vermeiden, seien es z.B.[br]Spannungssensoren, Sensoren gegen 0:33:31.339,0:33:41.410 Lichtbestrahlung, Temperatursensoren usw.[br]Wer sagt denn, dass diese Sensoren 0:33:41.410,0:33:47.190 tatsächlich den gesamten Raum abdecken,[br]oder ob vielleicht nicht absichtlich eine 0:33:47.190,0:33:51.399 Schutzlücke eingebaut worden ist, das[br]heißt derjenige, der diesen Sensor 0:33:51.399,0:33:55.859 implementiert hat, weiß vielleicht dass[br]genau bei diesem genauen Parametersatz ist 0:33:55.859,0:34:00.809 der Sensor „blind“ sozusagen, und er[br]kann diesen Parametersatz nutzen, um 0:34:00.809,0:34:05.229 gezielt eine Fehlerinduktion in dem[br]Programmablauf oder in den verrechneten 0:34:05.229,0:34:10.200 Daten einzuführen. Und damit dann[br]entsprechend, auch wieder mit dem Trojaner 0:34:10.200,0:34:16.209 zu kommunizieren. Also man sieht schon,[br]es gibt rund um das Thema Backdoors sehr, 0:34:16.209,0:34:20.440 sehr viele verschiedene Möglichkeiten[br]in der Hardware – weitaus mehr 0:34:20.440,0:34:25.199 Möglichkeiten als bei Software-Trojanern[br]– wie man mit ihm kommunizieren kann und 0:34:25.199,0:34:30.770 wie man hier auch tatsächlich[br]Informationen austauschen kann. Eine 0:34:30.770,0:34:36.740 besondere, große Bedrohung geht von[br]den Analyseschnittstellen aus. Denn die 0:34:36.740,0:34:41.418 Analyseschnittstellen sind ja meistens[br]ein Feature was sogar mit einer guten 0:34:41.418,0:34:46.569 Intention eingebaut worden ist. Z.B. bei[br]den Festplatten, wie man hier im oberen 0:34:46.569,0:34:52.400 Bild sieht, wo ein Debug-Port eingebaut[br]worden ist, um, wenn die Festplatte nicht 0:34:52.400,0:34:56.369 richtig funktioniert, festzustellen, was[br]ist da jetzt wirklich kaputt, kann man 0:34:56.369,0:35:00.969 vielleicht eine neue Firmware einspielen,[br]kann man vielleicht noch Daten retten. Auf 0:35:00.969,0:35:04.339 der anderen Seite kann genau dieser[br]Debug-Port natürlich auch dafür 0:35:04.339,0:35:10.080 missbraucht werden, um auf Daten direkt[br]zuzugreifen oder aber um Trojaner in die 0:35:10.080,0:35:15.049 Firmware der Festplatte einzuspielen.[br]Ja, und noch größer ist natürlich der 0:35:15.049,0:35:19.740 Bereich der sogenannten JTAG-Ports, die[br]Analyse-Schnittstelle, die sich in vielen 0:35:19.740,0:35:25.189 Geräten wiederfindet und teilweise sehr[br]mangelhaft abgesichert ist. Denn hier 0:35:25.189,0:35:29.400 haben wir ein Beispiel von einem[br]WLAN-Router, wo man über den JTAG-Port 0:35:29.400,0:35:35.999 auch neue Firmware, z.B. mit Trojanern,[br]in die WLAN-Router einbringen kann. 0:35:35.999,0:35:37.730 Denken wir das jetzt noch einmal weiter: 0:35:37.730,0:35:40.970 was passiert, wenn jetzt eigentlich[br]ein Sicherheits-Chip mit solch einem 0:35:40.970,0:35:45.960 Analyse-Port ausgestattet ist? Nun, da[br]kann man natürlich sagen, wenn dieser 0:35:45.960,0:35:49.650 Chip mal ausfällt, kann ich versuchen,[br]darüber dann tatsächlich nochmal 0:35:49.650,0:35:54.190 den zu reparieren, oder zumindestens[br]an die Daten wieder ranzukommen, sie 0:35:54.190,0:35:58.340 zu restaurieren. Ja, aber, genau das[br]ist ja das was man nicht möchte. Ein 0:35:58.340,0:36:02.519 Sicherheits-Chip soll doch bitte die[br]Daten auch wirklich geheim in sich halten 0:36:02.519,0:36:06.470 und nicht dann über einen Analyse-Port[br]vielleicht doch wieder zugänglich 0:36:06.470,0:36:12.380 machen. Und deshalb sind insbesondere auf[br]Sicherheits-Chips natürlich Analyse-Ports 0:36:12.380,0:36:17.799 alles andere als eine gute Wahl. Und[br]wie manches Mal aus einem guten 0:36:17.799,0:36:22.599 Feature tatsächlich dann auch eine[br]missbräuchliche Nutzung entstehen kann, 0:36:22.599,0:36:27.230 haben wir einfach mal dargestellt an[br]dem Beispiel eines Türspions. Wir sehen 0:36:27.230,0:36:31.710 hier den Türspion. Und im zweiten Bild[br]einfach mal was passiert eigentlich, 0:36:31.710,0:36:35.119 wenn ich durch den Türspion nach[br]draußen schaue: naja, ich habe die 0:36:35.119,0:36:39.470 gute Möglichkeit, zu sehen: wer steht[br]da eigentlich vor der Tür? Ist das 0:36:39.470,0:36:43.229 eine zumindestens dem Anschein nach[br]vertrauenswürdige Person? Sollte 0:36:43.229,0:36:47.759 ich jetzt besser die Tür öffnen oder[br]lieber besser geschlossen lassen? Genauso 0:36:47.759,0:36:51.040 wie diese gute Funktionalität in dem[br]Türspion drin ist, kann sie aber auch 0:36:51.040,0:36:55.170 missbräuchlich genutzt werden. Wenn[br]ich z.B. wie im 4. Bild zu sehen, eine 0:36:55.170,0:36:59.029 Umkehr-Optik von draußen aufsetze,[br]dann sehe ich nicht mehr nur den 0:36:59.029,0:37:03.660 kleinen Lichtpunkt hinter der Tür,[br]wo das ganze Bild zusammengezerrt ist; 0:37:03.660,0:37:07.569 sondern aufgrund dieser Umkehr-Optik[br]kann ich plötzlich feststellen, was ist 0:37:07.569,0:37:11.980 eigentlich in der Wohnung? Es erlaubt[br]mir den Blick nach innen und damit: 0:37:11.980,0:37:15.460 wer ist eigentlich in der Wohnung,[br]oder ist da überhaupt jemand? Wie ist 0:37:15.460,0:37:19.890 sie ausgestattet? Und so weiter. Das[br]ist unseres Erachtens nach ein schönes 0:37:19.890,0:37:25.200 Beispiel, wie tatsächlich auch ein gut[br]gemeintes Feature eventuell dann eben 0:37:25.200,0:37:28.880 als Backdoor missbraucht wird. 0:37:28.880,0:37:33.950 Peter: Ja, in den 90er Jahren – Ende[br]der 90er Jahre, würde ich sagen 0:37:33.950,0:37:37.540 – war ziemlich klar, dass nach[br]Software-Trojanern als nächstes 0:37:37.540,0:37:40.490 Hardware-Trojaner auf dem Plan[br]stehen. Dass das also eine echte 0:37:40.490,0:37:43.959 Bedrohung ist. Und dementsprechend[br]haben wir uns zu der Zeit auch schon 0:37:43.959,0:37:48.330 mal überlegt, was kann man eigentlich[br]machen, prophylaktisch, um sowas zu 0:37:48.330,0:37:53.100 verhindern, um das Risiko zu minimieren;[br]und überhaupt Technik so zu bauen, dass 0:37:53.100,0:37:59.459 sie Trojaner- und Backdoor-resistent[br]ist. In dem Rahmen, wie das möglich ist. 0:37:59.459,0:38:02.970 Und um uns dieser Sache zu nähern,[br]haben wir uns zunächst mal überlegt, 0:38:02.970,0:38:05.500 was können das eigentlich für Motive[br]sein? Also was bringt eigentlich die 0:38:05.500,0:38:09.840 Leute dazu, Trojaner und Backdoors[br]einzubauen? Ob das jetzt willentlich 0:38:09.840,0:38:15.239 ist oder unwillentlich. Das zeigen wir[br]hier in diesen 4 Kategorien. Es fängt 0:38:15.239,0:38:20.450 an mit dem „Bösen Willen“, hier auf[br]dem ersten Foto mal zu sehen. Beim 0:38:20.450,0:38:24.190 Bösen Willen ist es im Prinzip ganz[br]klar, daran denkt jeder zunächst mal 0:38:24.190,0:38:28.660 als erstes. Es könnten Sabotagegründe[br]sein, z.B. Erpressung könnte eine Rolle 0:38:28.660,0:38:34.000 spielen. Ein bestimmtes System ist schon[br]im Feld und ein Hersteller, z.B. dieses 0:38:34.000,0:38:37.619 Systems wird erpresst, dass man mit einem[br]bestimmten Kommando einer Backdoor dieses 0:38:37.619,0:38:41.320 System komplett lahmlegen könnte. Zum[br]Beispiel. Aber es können auch politische 0:38:41.320,0:38:46.439 Motive da eine Rolle spielen. Auch[br]alles bekannt; also der Diktator unserer 0:38:46.439,0:38:50.869 Wahl sozusagen möchte seinen Bürgern[br]etwas näher auf den Zahn fühlen und 0:38:50.869,0:38:55.179 die Kommunikation überwachen, baut[br]dementsprechend Backdoors ein. Oder, 0:38:55.179,0:38:59.179 bringt Trojaner ins Spiel. Auf der[br]anderen Seite des Spektrums, ganz 0:38:59.179,0:39:03.400 interessant, der Gute Wille. Auch das[br]geschieht dann aus Vorsatz. Und Markus 0:39:03.400,0:39:07.490 hatte da ja schon einige Beispiele[br]mal gezeigt: das können Dinge sein, 0:39:07.490,0:39:11.650 wie z.B. Service-Schnittstellen, das[br]können Debugging-Sachen sein. Im 0:39:11.650,0:39:15.950 Prinzip, letztlich sogar, Kundendienst,[br]dass jemand also wirklich fragt, 0:39:15.950,0:39:19.570 er möchte bei so einem Chip die[br]Möglichkeit haben, im Nachhinein was 0:39:19.570,0:39:23.000 zu reparieren oder die Daten wieder[br]rauszuholen. Passt natürlich nicht zu 0:39:23.000,0:39:27.190 Sicherheits-Chips. Und dann schließlich,[br]auch da gibt’s politische Motive. Da ist 0:39:27.190,0:39:30.749 es dann nicht der fiese Diktator unserer[br]Wahl, sondern der freundliche Monarch 0:39:30.749,0:39:34.289 unserer Wahl, der aber das Gleiche will,[br]seinen Bürgern auf den Zahn fühlen 0:39:34.289,0:39:40.420 und alles mitlesen können. Wir haben[br]auch noch zwei andere Kategorien hier 0:39:40.420,0:39:44.730 aufgezeigt. Die sind nicht aktiver[br]Natur. Also nicht vorsätzlicher Natur, 0:39:44.730,0:39:49.059 sondern eher passiver Natur. Und zwar[br]haben wir die erstmal als Ignoranz 0:39:49.059,0:39:53.130 und Dummheit bezeichnet, und das auch[br]voneinander getrennt. Warum haben 0:39:53.130,0:39:57.910 wir das voneinander getrennt? Bei der[br]Ignoranz ist es so, dass die Auswirkungen 0:39:57.910,0:40:02.170 zumindest teilweise bekannt sind. D.h.[br]jemand weiß eigentlich, das was er da 0:40:02.170,0:40:06.309 gerade macht, in einer bestimmten[br]Entwicklung oder Konzeptionierungsphase, 0:40:06.309,0:40:10.680 dass das eigentlich falsch ist. Es[br]könnten z.B. Gründe dahinterstehen, wie 0:40:10.680,0:40:14.450 Zeitdruck. Eine Analyse-Schnittstelle[br]z.B. soll für ein fertiges Produkt noch 0:40:14.450,0:40:17.969 ausgebaut werden. Eigentlich muss man[br]das machen, um den Chip dann sicher zu 0:40:17.969,0:40:21.520 bekommen. Es wird aber aus Zeitdruck[br]nicht gemacht. Dazu kann z.B. auch noch 0:40:21.520,0:40:25.240 Verdrängung kommen, dass man dann sich[br]sagt „Ja, es ist ja nicht so schlimm, das 0:40:25.240,0:40:29.850 wird schon keiner finden“. Oder eben auch,[br]dass Hierarchien eine wesentliche Rolle 0:40:29.850,0:40:34.469 spielen; dass jemandem gesagt wird „Mach’[br]das mal so, bau’ das mal so ein!“ und das 0:40:34.469,0:40:37.869 nicht hinterfragt wird, warum das[br]eigentlich notwendig ist, wofür man das 0:40:37.869,0:40:40.510 eigentlich braucht, und ob man das[br]hinterher wieder ausbauen soll. Oder 0:40:40.510,0:40:45.280 drinlassen soll. Ja, und dann[br]schließlich, das Thema ‚Dummheit‘ haben 0:40:45.280,0:40:49.870 wir hier auch explizit mal so genannt,[br]so plakativ. Einerseits Bildungsmangel, 0:40:49.870,0:40:55.130 Überforderung kann eine Rolle spielen.[br]Auch etwas plakativ hier mal dargestellt, 0:40:55.130,0:40:59.000 das Thema ‚Fachidiotie‘ wirklich zu[br]nennen. Das ist wirklich die Plage des 0:40:59.000,0:41:04.600 21. Jahrhunderts. Denn die Systeme die man[br]heute baut, die sind sehr, sehr komplex 0:41:04.600,0:41:09.730 und da sind teilweise Hunderte von[br]Entwicklern, Hunderte von Leuten dabei 0:41:09.730,0:41:14.910 sowas zu machen. Wie das Einzelne[br]ineinander spielt, also welches Zahnrad in 0:41:14.910,0:41:19.410 welches andere Zahnrad greift, und welche[br]Zahnräder in Kombination zusammen ein 0:41:19.410,0:41:23.940 Schlangenöl ergeben oder auch nicht,[br]das ist oft nicht bekannt. Und auch da 0:41:23.940,0:41:28.880 hatte Marcus ja schon so einige Beispiele[br]mal gezeigt, wie eine eigentlich gut 0:41:28.880,0:41:34.250 gemeinte Sache dann schließlich zu einer[br]Backdoor führt oder zu einem hohen Risiko 0:41:34.250,0:41:40.440 des Backdoor-Auftretens. Und natürlich[br]für uns interessant gewesen: was kann man 0:41:40.440,0:41:47.570 dagegen tun? Und auch hier haben wir uns[br]3 Kategorien ausgedacht: die Aufklärung 0:41:47.570,0:41:51.470 Technologie – also technologische Gegen-[br]maßnahmen, und die Verpflichtung – kann 0:41:51.470,0:41:58.019 von extern oder auch selbst passieren. Und[br]hier an diesem grünen und grauen Streifen 0:41:58.019,0:42:03.430 haben wir mal versucht aufzuzeigen, wie[br]wirksam das Ganze ist. Und das erste, was 0:42:03.430,0:42:08.670 wir da aufgezählt haben, die Aufklärung,[br]ist natürlich ganz klar gegen Dummheit, 0:42:08.670,0:42:14.230 gegen Nichtwissen nützt am besten[br]Aufklärung. Gegen bösen Willen auf der 0:42:14.230,0:42:17.970 anderen Seite nützt Aufklärung wenig.[br]Vielleicht sogar im Gegenteil, wenn man 0:42:17.970,0:42:22.109 jemandem sagt: „Das wäre also wirklich[br]der Tod des Unternehmens, wenn da so eine 0:42:22.109,0:42:26.050 Backdoor eingebaut wäre, die so und so[br]aussieht“, dann kann das natürlich sein, 0:42:26.050,0:42:30.280 dass der Saboteur genau das dann[br]einbringt. Klar. Aber wie gesagt, die 0:42:30.280,0:42:34.779 Aufklärung sehen wir als ganz, ganz[br]wichtig an. Bei der Technologie... bei den 0:42:34.779,0:42:39.269 technologischen Gegenmaßnahmen, da ist es[br]so, dass einerseits man sagen muss, ist 0:42:39.269,0:42:43.090 vom Motiv des Angreifers eigentlich[br]unabhängig. Technologische 0:42:43.090,0:42:50.000 Gegenmaßnahmen erschweren den Einbau von[br]Backdoors und Trojanern generell. Trotzdem 0:42:50.000,0:42:54.260 haben wir das Ganze etwas eingekerbt, auf[br]der rechten und auf der linken Seite. Und 0:42:54.260,0:42:58.500 das hat auch seinen Grund: weil diese[br]beiden Bereiche mit Vorsatz verbunden 0:42:58.500,0:43:03.510 sind. Und das könnte heißen, dass jemand[br]z.B. der so etwas vorhat sich schlaumacht: 0:43:03.510,0:43:07.260 was sind denn da für technologische[br]Gegenmaßnahmen eingebaut; und dann 0:43:07.260,0:43:11.870 versucht, vielleicht auch mit anderen[br]Leuten zusammen, um diese technologischen 0:43:11.870,0:43:16.299 Gegenmaßnahmen herumzukommen und[br]die außer Kraft zu setzen. Und dann 0:43:16.299,0:43:20.940 schließlich gibt es noch die dritte[br]Kategorie: die Verpflichtung, kann 0:43:20.940,0:43:24.030 Selbstverpflichtung sein oder auch externe[br]Verpflichtung, da kommen wir gleich noch 0:43:24.030,0:43:28.449 drauf zu sprechen, auf diese 3 Bereiche.[br]Und auch da ist es so, dass das sehr, sehr 0:43:28.449,0:43:32.860 unterschiedlich wirksam ist. Beim Bösen[br]Willen natürlich am wenigsten, aber bei 0:43:32.860,0:43:39.209 den anderen Motiven schon etwas mehr.[br]Aber wie versprochen etwas mehr über diese 0:43:39.209,0:43:44.880 Möglichkeiten, was kann also jeder tun,[br]der in einem dieser Bereiche Entwicklung, 0:43:44.880,0:43:48.940 Konzeption oder auch Test arbeitet, um[br]Backdoors zu verhindern oder die zu 0:43:48.940,0:43:53.660 erkennen. Und einerseits hier nochmal[br]die Punkte der Aufklärung. Das kann 0:43:53.660,0:43:58.329 technische Aufklärung sein, das steht[br]natürlich im Vordergrund. Security by 0:43:58.329,0:44:03.490 Obscurity darf nicht das Ziel sein.[br]Kerckhoffs sollte man schon berücksichtigen, 0:44:03.490,0:44:07.480 wenn man irgendetwas baut.[br]Debug-Schnittstellen passen nicht zu 0:44:07.480,0:44:11.479 Sicherheits-Chips – auch ganz wichtig.[br]Obwohl es immer wieder nachgefragt wird, 0:44:11.479,0:44:16.200 kann man nicht für eigene Entwicklungen,[br]für eigene Fehleranalyse z.B so etwas 0:44:16.200,0:44:21.020 einbauen. Gehört da nicht rein. Muss[br]leider draußen bleiben. Und nicht zu 0:44:21.020,0:44:24.599 vergessen unser Aspekt auch hier,[br]Entwickler denken sehr oft nicht wie 0:44:24.599,0:44:29.839 Hacker. D.h. sie sind eher konstruktiv,[br]manchmal konstruktivistisch unterwegs, und 0:44:29.839,0:44:34.619 das bedeutet, dass man oft seinen eigenen[br]Resultaten oder dem was man da 0:44:34.619,0:44:40.050 zusammengebaut hat, dann sehr hoch[br]vertraut. Und einen Angriff z.B. oder 0:44:40.050,0:44:43.970 einen Sicherheits-Penetrationstest dann[br]eher so als Angriff auf die eigene Person 0:44:43.970,0:44:48.830 sieht. Und jeder der im[br]IT-Sicherheits-Business tätig ist, der 0:44:48.830,0:44:52.920 kennt das auch, dass man da erstmal so[br]eine konstruktive Atmosphäre schaffen 0:44:52.920,0:44:57.870 muss. Indem man zusammen das Produkt dann[br]besser macht. Politische Aspekte sind 0:44:57.870,0:45:04.300 natürlich auch ein wichtiges Thema. Hier[br]der Frankenstein-Effekt, sozusagen, zu 0:45:04.300,0:45:07.809 nennen. Wenn man so einen Trojaner[br]tatsächlich irgendwo in der Praxis hat, 0:45:07.809,0:45:11.210 dann ist der unkontrollierbar. D.h. man[br]weiß nicht, was damit passiert, wer den 0:45:11.210,0:45:14.709 benutzt, schließlich. Er kann sich[br]natürlich auch gegen seinen eigenen 0:45:14.709,0:45:18.819 Urheber richten. Und gleichzeitig ist[br]es auch so, braucht man bloß ins 0:45:18.819,0:45:22.230 Geschicht-Buch reinzuschauen, dass die[br]politischen Situationen sich auch ändern 0:45:22.230,0:45:26.780 können. Das ist hier vielleicht nicht[br]unbedingt so stark der Fall, im eigenen 0:45:26.780,0:45:31.059 Land. Aber wenn ein Hersteller z.B. in[br]verschiedene Länder exportiert, 100..150 0:45:31.059,0:45:35.390 Länder, dann ist die Wahrscheinlichkeit[br]doch relativ hoch, dass eins davon in den 0:45:35.390,0:45:39.160 nächsten Monaten oder Jahren dann mal[br]umkippen könnte. Und dementsprechend 0:45:39.160,0:45:42.790 wäre auch darauf natürlich zu achten.[br]Das Ganze verbunden auch mit den ethischen 0:45:42.790,0:45:47.259 Aspekten. Für uns auch wichtig, denn[br]Backdoors können Personen in tödliche 0:45:47.259,0:45:51.729 Gefahr bringen. Das ist also kein Spiel.[br]Und kein Spielzeug, sondern, wenn, gerade 0:45:51.729,0:45:55.540 wenn man z.B. an das Thema Kompromat[br]denkt, und jemanden mit 0:45:55.540,0:45:58.980 Top-Secret-Material, was ihm da[br]‚aufgeschleust‘ wurde, sozusagen 0:45:58.980,0:46:02.119 ‚angeschleust‘ wurde, an einer Grenze[br]festgehalten wird, dann ist das schon 0:46:02.119,0:46:06.830 durchaus unangenehm. Wir sagen da immer:[br]„The road to hell is paved with good 0:46:06.830,0:46:12.949 intentions“, gilt eigentlich für alles[br]da, was da steht. Oder auf Deutsch, frei 0:46:12.949,0:46:18.650 nach diesem Motto „Gut gemeint ist[br]nicht gut gemacht“. Ja, es gibt einige 0:46:18.650,0:46:21.759 technologische Gegenmaßnahmen gegen[br]Trojaner und Backdoors, also rein 0:46:21.759,0:46:25.950 prophylaktisch, was auch sehr, sehr[br]wirksam ist. Dazu gehört zunächst mal: 0:46:25.950,0:46:30.629 keine backdoor-fördernden Technologien[br]einzusetzen. Die gehören raus, und 0:46:30.629,0:46:33.920 wenn man merkt, dass eine Technologie[br]backdoor-fördernd ist, oder sowas 0:46:33.920,0:46:38.870 begünstigt, dann sollte man die in[br]Sicherheits-Chips nicht verwenden. 0:46:38.870,0:46:41.740 Darüber hinaus gibt es ein paar[br]Möglichkeiten, dass man das Design so 0:46:41.740,0:46:45.710 anlegt, dass Änderungen auffallen. D.h.[br]jemand anderes, der auch an dem Design 0:46:45.710,0:46:50.390 arbeitet, eher merkt, dass etwas nicht[br]stimmt, oder dass im Test oder in der 0:46:50.390,0:46:54.680 Evaluierung dann auffällt, dass etwas[br]nicht stimmt, weil die Änderungen, die 0:46:54.680,0:46:58.400 durchzuführen sind, größer sind als[br]das was man bei schlangenöl-haltiger 0:46:58.400,0:47:03.410 Technologie machen muss. Der Rest ist[br]im Prinzip ähnlich wie beim Thema der 0:47:03.410,0:47:10.500 technologischen Aufklärung. Aber wir[br]haben hier auch gleichzeitig noch 2 andere 0:47:10.500,0:47:15.840 Möglichkeiten aufgeführt. Das sind die[br]Selbsttest von Chips. Und die Erkennung 0:47:15.840,0:47:19.239 nachdem ein Chip fertig ist. Aber da muss[br]man ein bisschen vorsichtig sein. Bei den 0:47:19.239,0:47:23.510 Selbsttest ist es noch so, dass die[br]einigermaßen wirksam sind. Das bedeutet, 0:47:23.510,0:47:27.470 dass ein Chip bevor er eine wirklich[br]kritische Operation macht, also z.B. eine 0:47:27.470,0:47:31.259 Nachricht verschlüsseln, dass er vorher[br]eine Testoperation durchführt und schaut 0:47:31.259,0:47:34.740 ob alles okay ist. Ob die Schlüssel nicht[br]manipuliert sind, die Zufallszahlen in 0:47:34.740,0:47:39.310 Ordnung sind usw. Da gibt’s also ’ne ganze[br]Menge dieser Selbsttest, und wenn die alle 0:47:39.310,0:47:45.509 vernünftig durchgelaufen sind, dann macht[br]ein Chip die eigentliche Operation. Aber 0:47:45.509,0:47:49.579 kann natürlich sein, dass ein Insider[br]sich Gedanken macht und überlegt, was 0:47:49.579,0:47:52.679 könnte da alles eingebaut sein das[br]mir das Leben schwer macht. Und 0:47:52.679,0:47:57.219 dementsprechend auch diese Tests[br]manipuliert. Bedeutet aber, dass man da 0:47:57.219,0:48:01.440 mehr Einfluss braucht, mehr Aufwand,[br]und vielleicht sogar Mitwisser. Das ist 0:48:01.440,0:48:07.510 natürlich dann auch ein Problem. Bei der[br]Erkennung sind wir etwas skeptischer, also 0:48:07.510,0:48:11.289 es gibt einige Resultate, einige[br]Arbeitsgruppen, auch die sich mit dem 0:48:11.289,0:48:14.910 Thema Erkennung auseinandersetzen und[br]sagen man könnte doch bei einem fertigen 0:48:14.910,0:48:18.329 Chip, wenn der sozusagen fertig[br]prozessiert ist, schauen ob da ’ne 0:48:18.329,0:48:22.599 Backdoor drin ist, anhand z.B. der[br]Stromaufnahmekurven, die dieser Chip dann 0:48:22.599,0:48:26.920 liefert. Da muss man aber sehr vorsichtig[br]sein, denn üblicherweise würde so eine 0:48:26.920,0:48:31.449 Backdoor ja so angelegt werden, dass sie[br]nicht ständig aktiv ist. Und außerdem 0:48:31.449,0:48:34.120 ist es so bei Sicherheits-Chips, bei[br]Sicherheits-Software und auch bei 0:48:34.120,0:48:37.140 Sicherheits-Hardware, dass der[br]Stromverbrauch sowieso immer relativ 0:48:37.140,0:48:42.919 zufällig gewählt wird. Einfach auch[br]um Seitenkanal-Angriffe abzuhalten. 0:48:42.919,0:48:48.630 Dementsprechend ist so eine Entdeckung von[br]Manipulation am fertigen Chip sehr, sehr 0:48:48.630,0:48:53.380 schwierig. Es gibt aber noch eine dritte[br]Möglichkeit, gegen Trojaner vorzugehen, 0:48:53.380,0:48:57.949 auch präventiv. Und das ist die[br]Verpflichtung. Gibt 2 Möglichkeiten, also 0:48:57.949,0:49:03.280 einerseits eine auferlegte Verpflichtung.[br]Und was man heute auch durchaus mal sieht, 0:49:03.280,0:49:07.049 ist, dass Leute die Sicherheits-Chips[br]einsetzen, die die also kaufen oder sich 0:49:07.049,0:49:11.930 umsehen, wo gibt’s die, dass die sehr,[br]sehr genau schauen, wer stellt die her, 0:49:11.930,0:49:16.210 was haben die für eine Historie[br]z.B. die Hersteller, wie sind die 0:49:16.210,0:49:19.969 Besitzverhältnisse, wo ist der[br]Hauptsitz z.B. der Firma, welche 0:49:19.969,0:49:24.819 Einflussmöglichkeiten gibt es von[br]anderen, von Dritten, auf diese Firmen. 0:49:24.819,0:49:30.749 Also das kommt immer mehr, man merkt[br]es eigentlich sehr schön. Ja, Gesetze und 0:49:30.749,0:49:37.239 Richtlinien – zunächst mal zu nennen die[br]Datenschutzgesetze, natürlich. Ganz nett, 0:49:37.239,0:49:41.380 die Frage natürlich: wer setzt die durch?[br]Und wer überprüft die Einhaltung dieser 0:49:41.380,0:49:45.660 Gesetze die es schon gibt eigentlich? Und[br]da ist natürlich ein Realitätsabgleich 0:49:45.660,0:49:50.670 nötig. Z.B. die Frage: Wo gelten die?[br]Also, zu Lande, im Weltraum und 0:49:50.670,0:49:55.479 ähnliches? Ist ja immer die Frage wie wir[br]wissen. Und dann gibt’s schließlich noch 0:49:55.479,0:50:00.110 die Selbstverpflichtung, die eigentlich[br]gar nicht so schlecht ist. In diesem Fall 0:50:00.110,0:50:05.200 ist es so, dass der Hersteller selber[br]sich selbst verpflichten würde, keine 0:50:05.200,0:50:09.430 Backdoors und keine Trojaner einzusetzen.[br]Jetzt natürlich die Frage: "Wieviel bringt 0:50:09.430,0:50:15.060 das, wenn er sich nur selber verpflichtet?[br]Was da passiert ist im Prinzip, dass ein 0:50:15.060,0:50:19.409 künstliches ökonomisches Risiko erzeugt[br]wird. Das heißt, wenn der Hersteller z.B. 0:50:19.409,0:50:23.220 überführt wird, dass er also trotz[br]dieser Selbstverpflichtung trotzdem so 0:50:23.220,0:50:26.849 eine Backdoor eingesetzt hat, oder[br]die verwendet, dann hat das für ihn 0:50:26.849,0:50:31.500 natürlich negative Konsequenzen. Und[br]dieses ökonomische Risiko was dann 0:50:31.500,0:50:34.780 entsteht, das führt dazu, dass[br]beim Hersteller selbst und in 0:50:34.780,0:50:40.200 Entwicklungsprozessen mehr darauf geachtet[br]wird, solche Backdoors nicht einzubauen. 0:50:40.200,0:50:44.480 Bzw. auch nicht unbeabsichtigt einzubauen.[br]D.h. die Tests... könnte man erwarten, 0:50:44.480,0:50:48.610 dass die Tests z.B. besser werden, dass[br]die Evaluierungsmöglichkeiten besser 0:50:48.610,0:50:52.250 werden, und dass natürlich auch die[br]Beeinflussungsmöglichkeiten schlechter 0:50:52.250,0:50:58.070 werden. Dass die Aufklärung besser wird.[br]Also im Prinzip alles prima. Die Frage 0:50:58.070,0:51:01.559 natürlich: Warum soll sich ein Hersteller[br]so einem ökonomischen Risiko aussetzen, 0:51:01.559,0:51:05.949 wenn es nicht belohnt wird? Aber auch da[br]ändert sich momentan so ein wenig die 0:51:05.949,0:51:11.640 Lage. Man sieht schon, dass Hersteller[br]die da vorpreschen, dass die schon eine 0:51:11.640,0:51:15.730 Vorbildfunktion dann für andere auch[br]darstellen können. Man kann das Ganze mit 0:51:15.730,0:51:21.749 anderen ethischen Werten koppeln. Aber[br]natürlich, schließlich die Frage: Lohnt 0:51:21.749,0:51:24.969 es sich für einen Hersteller, wer macht[br]das bisher? Wir hoffen, dass das besser 0:51:24.969,0:51:32.479 wird. Und dass da mehr Unternehmen sich[br]diesen Sachen dann widmen. So kommen wir 0:51:32.479,0:51:35.380 auch schon zum Ende unseres Vortrages.[br]Wir haben einige Literatur noch 0:51:35.380,0:51:40.659 zusammengestellt für euch. Wen es[br]interessiert, also hier z.B. von 1972 0:51:40.659,0:51:46.740 die erste Literaturstelle, die erste[br]Fundstelle, wo wirklich von Computer- 0:51:46.740,0:51:50.929 Trojanern wirklich gesprochen wird und wo[br]so die Konzepte aufgestellt werden. Bis 0:51:50.929,0:51:55.990 hin zur letzten Fundstelle, gerade jetzt[br]von Dezember, eigentlich eine ganz 0:51:55.990,0:52:00.900 interessante Arbeit. Kann sich jeder[br]gerne mal durchlesen, wenn er Zeit hat. 0:52:00.900,0:52:05.110 Ja, damit wie gesagt, möchten wir dann[br]auch schließen. Wir wünschen euch viel 0:52:05.110,0:52:07.979 Spaß bei der eigenen Forschung. Wenn[br]es Fragen gibt, sind wir noch ein paar 0:52:07.979,0:52:12.299 Minuten hier. Und ansonsten können wir[br]auch darauf verweisen, wir wären morgen 0:52:12.299,0:52:15.563 in unserem Assembly. Und wer Lust hat kann[br]gern vorbeikommen, mit uns diskutieren. 0:52:15.563,0:52:19.849 Vielleicht gibt es ja auch noch[br]interessante Ideen, die wir dann 0:52:19.849,0:52:22.990 zusammen besprechen können.[br]Also vielen Dank schon mal! 0:52:22.990,0:52:33.420 Applaus 0:52:33.420,0:52:36.589 Herald: Vielen Dank! Also, ihr habt[br]gehört, ihr habt jetzt ein paar Minuten 0:52:36.589,0:52:41.690 Zeit, Fragen zu stellen. Wenn es Fragen[br]gibt, stellt euch bitte an die Mikrofone. 0:52:41.690,0:52:47.649 Die anderen die jetzt schon den Saal[br]verlassen, tun dies bitte möglichst leise! 0:52:47.649,0:52:52.330 Gibt’s irgendwelche Fragen? 0:52:52.330,0:52:57.000 Peter: Ah, da ist einer! 0:52:57.000,0:53:02.010 Herald: Ah, dort hinten erkenne ich[br]jemanden an Mikrofon 3. Bitte! 0:53:02.010,0:53:06.420 Frage: Und zwar stellt sich mir die Frage,[br]dass man ja Software gut eigentlich 0:53:06.420,0:53:10.459 damit absichern kann, indem man beweist,[br]dass sie der Spezifikation genügt. 0:53:10.459,0:53:13.450 Gibt es da Ansätze für Hardware[br]in den verschiedenen Leveln, 0:53:13.450,0:53:18.289 also für VHDL, für die[br]Implementierung usw.? 0:53:18.289,0:53:22.240 Marcus: Es gibt in der Tat, natürlich,[br]den Versuch, zu analysieren, 0:53:22.240,0:53:26.849 ist da eine unbemerkte Funktionalität[br]eingebaut worden? Da gibt es auch 0:53:26.849,0:53:31.019 entsprechende Ansätze. Allerdings muss[br]man ganz fairerweise sagen, dass natürlich 0:53:31.019,0:53:36.060 diese Ansätze es sehr schwer haben,[br]eine Vollständigkeit nachzuweisen. 0:53:36.060,0:53:40.139 Und wir haben es gerade gesehen, z.B. im[br]Herstellungsprozess stelle ich mir vor, 0:53:40.139,0:53:45.399 ganz zum Schluss, in der Veränderung des[br]Maskensatzes, so ist dieses nur noch 0:53:45.399,0:53:49.670 am fertigen Produkt oder an der Maske[br]selber nachweisbar. Infolgedessen 0:53:49.670,0:53:53.690 ist an sich hier der Rückschluss – ist[br]das die ursprüngliche Funktionalität 0:53:53.690,0:53:59.170 oder nicht? – kaum noch feststellbar. Also[br]ja, es gibt Ansätze, aber nein, sie sind 0:53:59.170,0:54:03.139 bei weitem noch nicht voll umfassend.[br]Frage: Danke! 0:54:03.139,0:54:08.169 Herald: Schhhhhhh![br]Mikro 4, bitte! 0:54:08.169,0:54:14.139 Frage: Hallo hallo! Ich hätte die Frage:[br]wie sieht ganz operativ der Aufwand aus 0:54:14.139,0:54:17.419 für einen – ich nenn’s mal[br]Maulwurfentwickler – der jetzt eine 0:54:17.419,0:54:23.450 zusätzliche Maske reinbringen will. Wenn[br]ich mir vorstelle, dass die Lagen, die 0:54:23.450,0:54:28.969 Oxide etc. die man da mittlerweile plant,[br]so dünn sind, dass wenn ich ’ne 0:54:28.969,0:54:34.049 Zusatzstruktur in bestehende Layer[br]dazwischenschiebe, dass ich dann Shunts 0:54:34.049,0:54:39.170 produziere etc. und wenn ich was nebenan[br]lege, also abseits des normalen 0:54:39.170,0:54:42.750 footprints, dann passts beim Dicing nicht[br]mehr, dann fällt das auf, dass da einfach 0:54:42.750,0:54:46.210 zusätzliche Pfade liegen,[br]wo eigentlich nix hingehört. 0:54:46.210,0:54:50.960 Peter: hustet Entschuldigung. Ja, also,[br]als Antwort, vielleicht: das Schöne ist, 0:54:50.960,0:54:55.460 bei der Vermeidung der Trojaner, dass je[br]weiter man in Bereich der Masken geht, 0:54:55.460,0:55:00.069 dass es umso aufwändiger wird. Hatten wir[br]vorhin auch ansatzweise so dargestellt. 0:55:00.069,0:55:04.309 Also wenn man gleich in den VHDL-Code das[br]einbringt, so eine Schad„soft“ware, so 0:55:04.309,0:55:08.049 einen Trojaner, ist es relativ einfach.[br]Nachher wird’s immer schwerer. Und 0:55:08.049,0:55:15.150 das Interessante ist da, dass man wirklich[br]Technologien vermeiden muss, wo es einfach 0:55:15.150,0:55:19.729 wird, sozusagen diese Manipulation[br]durchzuführen. Z.B. denken wir mal an 0:55:19.729,0:55:24.660 diese RAM-Zellen. Da ist es so, der[br]RAM-Zelle ist es eigentlich mehr oder 0:55:24.660,0:55:30.699 weniger egal, ob der eine Treiber dieser[br]RAM-Zelle etwas stärker ist oder etwas 0:55:30.699,0:55:35.700 weniger stark. Die funktionieren[br]normalerweise. D.h. wenn man jetzt z.B. 0:55:35.700,0:55:39.140 diese physical unclonable functions[br]anwendet und aus diesen RAM-Zellen etwas 0:55:39.140,0:55:44.109 ableitet, z.B. einen Schlüssel, dann wird[br]das nicht auffallen, wenn jemand das 0:55:44.109,0:55:47.820 manipuliert hat. Wenn es allerdings eine[br]Funktionalität ist, auf die der Chip 0:55:47.820,0:55:51.700 wirklich angewiesen ist, und die auf gar[br]keinen Fall schieflaufen darf, dann ist 0:55:51.700,0:55:56.340 das viel schwerer. Und dementsprechend[br]ist es so, dass zunächst mal wichtig ist, 0:55:56.340,0:56:02.250 alles rauszuwerfen, was sozusagen diesen[br]Backdoors Vorschub leistet. Und, ja, da 0:56:02.250,0:56:07.000 hattest du völlig recht, also es ist in[br]der Tat schwierig, aber wenn die falschen 0:56:07.000,0:56:11.129 Technologien verbaut sind, dann wird es[br]ziemlich einfach. Und das ist genau das 0:56:11.129,0:56:13.559 Problem dabei. 0:56:13.559,0:56:15.340 Herald: So, die Zeit ist leider knapp. 0:56:15.340,0:56:19.159 Deshalb die letzte Frage[br]aus dem Internet, bitte. 0:56:19.159,0:56:22.719 Signal Angel: Die Frage ist: Wurden schon[br]mal wirklich absichtlich eingebrachte 0:56:22.719,0:56:26.729 Trojaner gefunden? Also nicht im Sinne von[br]Debug-Stelle ausnutzen oder JTAG 0:56:26.729,0:56:31.249 ausnutzen? Und wurde das[br]auch explizit verwendet? 0:56:31.249,0:56:34.990 Marcus: Es gibt in der Tat einige[br]Beispiele, wo insbesondere auch 0:56:34.990,0:56:40.079 Zufallszahlengeneratoren, die in Hardware[br]ausgelegt worden sind, verändert worden 0:56:40.079,0:56:44.470 sind und damit praktisch die Zufallszahlen[br]nicht mehr wirklich komplett zufällig 0:56:44.470,0:56:49.039 waren sondern beeinflusst waren. Also –[br]ja, es gibt auch praktische Beispiele, wo 0:56:49.039,0:56:52.419 Hardware-Trojaner eingesetzt worden sind. 0:56:52.419,0:56:55.219 Signal Angel: Gibt’s dazu[br]auch einen Namen? 0:56:55.219,0:56:58.879 Herald: grinst dämlich[br]– Eigentlich keine Dialoge! 0:56:58.879,0:57:04.709 Deshalb, vielen Dank, ihr[br]könnt nochmal applaudieren! 0:57:04.709,0:57:12.349 Applaus 0:57:12.349,0:57:17.549 Abspannmusik 0:57:17.549,0:57:23.041 Untertitel erstellt von c3subtitles.de[br]im Jahr 2016. Unterstütze uns!