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!