WEBVTT
00:00:08.850 --> 00:00:10.620
Wunderbar. Äh ja...
00:00:10.670 --> 00:00:12.330
Willkommen zu meinem Vortrag über calc.pw,
00:00:12.330 --> 00:00:13.830
Passwortberechnung mit Arduino
00:00:14.500 --> 00:00:17.010
Vielleicht kurz vorher: die Folien selber sind auf Englisch gehalten,
00:00:17.010 --> 00:00:19.310
damit non-native speaker sich daran orientieren können.
00:00:19.340 --> 00:00:21.660
Ich selbst werde aber trotzdem auf Deutsch vortragen.
00:00:22.860 --> 00:00:24.510
Vielleicht kurz zu mir, mein Name ist Kenny,
00:00:24.720 --> 00:00:28.240
und man kann mich erreichen per E-Mail, per Twitter, per Website
00:00:28.270 --> 00:00:30.230
und noch so ein paar andere Sachen, die ich nicht aufgeschrieben habe.
00:00:32.100 --> 00:00:33.130
Was ich heute erzählen werde,
00:00:33.130 --> 00:00:35.280
ist zum einen das Problem, was ich lösen wollte,
00:00:35.320 --> 00:00:37.860
dann meine Idee, wie ich dieses Problem lösen wollte,
00:00:37.920 --> 00:00:39.740
dann, wie die Lösung derzeit aussieht,
00:00:40.130 --> 00:00:41.620
wie die Lösung funktioniert,
00:00:41.680 --> 00:00:44.140
und was so die Fallstricke waren, die ich versucht habe,
00:00:44.140 --> 00:00:46.500
oder die mir begegnet sind, die ich lösen musste...
00:00:46.850 --> 00:00:48.590
Ja, fangen wir mit dem Problem einfach mal an.
00:00:49.790 --> 00:00:52.220
Viele von euch werden sicherlich das Internet benutzen,
00:00:52.460 --> 00:00:54.380
mit keine Ahnung wievielen verschiedenen Diensten,
00:00:54.410 --> 00:00:57.760
ihr werdet eigene Server haben, wo ihr euch per SSH einwählt,
00:00:57.780 --> 00:01:00.500
ihr habt E-Mail-Accounts, wo ihr euch einloggen müsst usw.,
00:01:01.200 --> 00:01:03.510
und wie ihr sicherlich wisst, sollte man für jeden Dienst
00:01:03.540 --> 00:01:04.980
ein eigenenes Passwort verwenden.
00:01:05.390 --> 00:01:06.400
Einfacher Grund:
00:01:06.500 --> 00:01:10.380
wird ein so ein Dienst mal angegriffen und die Passwörter entwendet,
00:01:10.500 --> 00:01:12.860
können diese Passwörter bei anderen Diensten ausprobiert werden,
00:01:13.250 --> 00:01:15.540
und schon habt ihr einen viel größeren Angriffsvektor.
00:01:16.540 --> 00:01:18.210
Deswegen: ein Passwort pro Dienst,
00:01:18.240 --> 00:01:20.720
das ist so das, was man einsetzen sollte.
00:01:21.240 --> 00:01:23.560
Das Problem ist, sich diese ganzen Passwörter zu merken.
00:01:23.580 --> 00:01:26.660
Also bei mir sind es im Schnitt so zwischen 25 und 50 Passwörter,
00:01:26.660 --> 00:01:27.700
die ich jede Woche verwende,
00:01:27.970 --> 00:01:29.760
je nachdem, wieviele Dienste ich gerade benutze.
00:01:31.560 --> 00:01:34.400
Weil man sich so viele starke Passwörter einfach nicht merken kann,
00:01:34.400 --> 00:01:37.120
haben Leute angefangen, sich Passwort-Schemen auszudenken.
00:01:37.360 --> 00:01:39.750
Zum Beispiel hat man ein starkes Passwort, das man vorne dranpackt,
00:01:39.750 --> 00:01:41.230
und hinten dann den Namen vom Dienst.
00:01:43.160 --> 00:01:47.400
Ist dann ein Problem, wenn ein Dienst z.B. Passwörter Plaintext abspeichert,
00:01:47.540 --> 00:01:51.420
weil dann kann man sich einfach dieses Präfix-Passwort nehmen,
00:01:51.420 --> 00:01:53.470
kann irgendeinen anderen Dienstnamen hinten dranschreiben
00:01:53.620 --> 00:01:55.320
und kann damit wieder Passwörter ausprobieren.
00:01:56.300 --> 00:02:00.740
Es gibt noch andere Möglichkeiten, Passwörter sich selber zu generieren,
00:02:00.740 --> 00:02:04.020
indem man z.B. einen Satz benutzt, da die Leerzeichen rausnimmt,
00:02:04.020 --> 00:02:06.260
noch ein paar Buchstaben durch Zahlen & Sonderzeichen ersetzt,
00:02:06.380 --> 00:02:07.790
und dann hat man wieder ein Passwort.
00:02:08.139 --> 00:02:10.639
Macht aber auch dann wieder Probleme, wenn man viele Dienste verwendet,
00:02:10.639 --> 00:02:12.680
weil für jeden Dienst muss man sich einen Satz merken,
00:02:12.680 --> 00:02:15.840
man muss sich merken, welchen Satz man für welchen Dienst benutzt hat,
00:02:15.840 --> 00:02:18.210
welche Buchstaben man wann ersetzt hat, und so weiter.
00:02:20.400 --> 00:02:23.080
Die andere Sache, die in den letzten Jahren sehr beliebt geworden ist,
00:02:23.080 --> 00:02:24.280
sind Passwortdatenbanken.
00:02:24.680 --> 00:02:25.800
Wenn man es sich mal genau überlegt,
00:02:25.820 --> 00:02:28.190
das ist im Grunde eine Datei, da schreibt man seine Passwörter rein,
00:02:28.190 --> 00:02:31.960
da schreibt man rein, auch noch, wie der Benutzername ist,
00:02:31.990 --> 00:02:34.580
wie der Dienst heißt, vielleicht noch die URL vom Dienst,
00:02:35.210 --> 00:02:37.240
verschlüsselt das ganze mit einem Passwort,
00:02:37.620 --> 00:02:40.680
und hofft, dass niemals diese Datei abhanden kommt,
00:02:40.680 --> 00:02:43.040
und dass niemals gleichzeitig das Passwort dazu abhanden kommt.
00:02:43.710 --> 00:02:46.020
Benutzt man dann sehr gerne auf Windows z.B.,
00:02:46.020 --> 00:02:49.020
wo Trojaner und Viren durchaus vorherrschend sind,
00:02:49.260 --> 00:02:52.330
und wir müssen, wenn wir Passwort-Datenbanken benutzen,
00:02:52.340 --> 00:02:55.700
hoffen, dass niemals ein Trojaner kommt, der genau darauf abzielt.
00:02:56.860 --> 00:02:57.340
Ja.
00:02:59.400 --> 00:03:00.580
Was ist jetzt so die Idee?
00:03:02.080 --> 00:03:04.240
Die Idee hinter dem ganzen ist zum einen,
00:03:04.240 --> 00:03:06.820
ich möchte die Passwortauswahl vereinfachen,
00:03:06.820 --> 00:03:09.900
sprich, welches Passwort wird für welchen Dienst wann verwendet.
00:03:10.660 --> 00:03:12.670
Ich möchte gleichzeitig das Problem lösen,
00:03:12.670 --> 00:03:14.710
wie man sich diese ganzen Passwörter merken soll.
00:03:15.760 --> 00:03:18.310
Es soll obendrein soweit wie möglich verhindert werden,
00:03:18.310 --> 00:03:19.660
dass diese Passwörter verloren gehen,
00:03:19.660 --> 00:03:20.780
z.B. durch einen Festplattencrash,
00:03:20.780 --> 00:03:22.910
wo dann plötzlich die Passwort-Datenbank weg ist,
00:03:23.200 --> 00:03:26.240
oder sie gestohlen werden, z.B. durch Trojaner.
00:03:26.640 --> 00:03:28.500
Und das ganze soll Open Source sein,
00:03:28.520 --> 00:03:30.640
einfach, damit jeder diese Technologie benutzen kann,
00:03:30.640 --> 00:03:33.360
und nicht sich an irgenwelche teuren Firmen wenden muss,
00:03:33.370 --> 00:03:35.110
um sowas in der Art haben zu können.
00:03:36.810 --> 00:03:39.900
Die Frage ist jetzt natürlich, wie soll das ganze funktionieren?
00:03:42.180 --> 00:03:42.840
so...
00:03:43.450 --> 00:03:44.400
...meiner Meinung nach.
00:03:44.400 --> 00:03:47.100
und zwar indem die pw kryptografisch berechnet werden
00:03:47.940 --> 00:03:49.060
es gibt da mehrere Faktoren
00:03:49.060 --> 00:03:51.800
das ist zum Beispiel das ist zum einen das Master-Passwort
00:03:52.450 --> 00:03:54.830
was die Stärke des ganzen darstellen soll
00:03:54.830 --> 00:03:56.660
einfach weil es schlussendlich eine Verschlüsselung ist
00:03:57.660 --> 00:04:00.240
wir haben eine Service-Information für die einfache Merkbarkeit
00:04:00.480 --> 00:04:05.120
das geht so in Richtung starkes Präfix und dann einfacs Service-Suffix
00:04:05.890 --> 00:04:07.800
es sollen öffentlichen Algorithmen verwendet werden
00:04:07.800 --> 00:04:09.910
einfach, damit man das ganze reproduzieren kann
00:04:10.180 --> 00:04:12.710
wenn man also ein Gerät hat, was Passwörter berechnet,
00:04:12.710 --> 00:04:15.340
und ein neues Gerät kauft, was die gleichen Algorithmen verwendet
00:04:15.540 --> 00:04:17.320
soll schlussendlich die gleichen PW dabei heraus kommen
00:04:17.820 --> 00:04:20.370
und das ganze soll dedizierte Hardware verwenden
00:04:20.670 --> 00:04:23.940
einfach, damit wir nicht durch normale Trojaner und Viren angegriffen werden können
00:04:23.950 --> 00:04:24.960
bei der Passwort-Berechnung.
00:04:26.840 --> 00:04:28.190
So, wie sieht die Lösung aus?
00:04:28.490 --> 00:04:31.800
Ich geh mal ein bisschen zurück, ins Jahre 2003 äh 2010
00:04:31.800 --> 00:04:34.500
da hab ich ein Programm geschrieben
00:04:34.500 --> 00:04:36.860
den Passwordcalculatur, der schon genau das gemacht hat
00:04:36.860 --> 00:04:38.940
man hat ein Master-Passwort eingegeben
00:04:39.100 --> 00:04:41.300
hat die Information eingegeben, hat auf berechnen geklickt
00:04:41.300 --> 00:04:42.840
und hat schlussendlich sein Passwort rausgekriegt
00:04:44.770 --> 00:04:46.970
hat funktioniert, funktioniert auch immer noch,
00:04:47.080 --> 00:04:49.170
hat aber eine unschöne Eigenschaft, nämlich,
00:04:49.280 --> 00:04:52.300
wo immer man sein Passwort braucht, muss man dieses Programm runterladen
00:04:52.630 --> 00:04:55.600
an dem Rechner muss man entsprechend auch sein Masterpasswort eingeben
00:04:55.940 --> 00:04:59.060
und ich habs mehrfach, also zweimal,
00:04:59.260 --> 00:05:02.030
dass ich bei einem Freund war, hab da irgendwas an einem Server machen müssen,
00:05:02.030 --> 00:05:04.390
hab das Programm runtergeladen, Passwort eingegeben,
00:05:04.580 --> 00:05:06.520
und als ich dann fertig war mit meiner Arbeit, wurde mir dann gesagt:
00:05:06.720 --> 00:05:10.520
"Du, mein Computer benimmt sich seit zwei Wochen ein bisschen merkwuerdig...
00:05:10.520 --> 00:05:12.540
wenn du schonmal da bist, kannst du nichtmal kucken?"
00:05:12.860 --> 00:05:15.860
Hmm. Schön. Erstmal alle Passwörter wechseln.
00:05:17.050 --> 00:05:18.850
Genau das soll eben nicht mehr vorkommen.
00:05:19.000 --> 00:05:23.520
Deswegen, calc.pw als wirklich Hardware-Anwendung
00:05:23.940 --> 00:05:26.740
sieht ungefähr so aus, schön in einer Box
00:05:27.460 --> 00:05:28.810
das ist noch die Revision "c",
00:05:28.820 --> 00:05:30.580
es gibt mittlerweise eine Revision "d",
00:05:31.140 --> 00:05:32.390
die ist noch nicht ganz fertig, wie man sieht
00:05:32.910 --> 00:05:33.980
aber wird noch.
00:05:34.720 --> 00:05:38.360
Wie man sieht, soll ein bisschen modularer werden, als es vorher gewesen ist
00:05:38.620 --> 00:05:46.280
soll auch... eher in Richtung Produktion in... ja... Fabriken kommen
00:05:47.770 --> 00:05:48.610
daran arbeite ich noch.
00:05:49.460 --> 00:05:50.680
Was ist da schlussendlich drin?
00:05:51.010 --> 00:05:54.690
In der Revision "d", also das ist ein verteiltes,
00:05:55.620 --> 00:05:58.300
ist einmal ein Arduino Leonardo drin, als Output-Device,
00:05:58.390 --> 00:06:01.260
das emuliert eine Tastatur gegenüber dem Computer
00:06:01.490 --> 00:06:03.640
spricht das LCD an und spricht auch ein paar LEDs an
00:06:03.640 --> 00:06:05.150
damit man so Status-Informationen kriegt,
00:06:05.920 --> 00:06:08.770
dazu noch ein Ardiuino Uno, als Eingabegerät,
00:06:08.920 --> 00:06:12.110
dort wird schlussendlich eine Tastaur angeschlossen
00:06:12.580 --> 00:06:14.670
es kann auch optional noch ein Keypad angeschlossen werden,
00:06:14.670 --> 00:06:15.620
daran arbeite ich gerade
00:06:15.850 --> 00:06:19.880
und dieses Arduino Uno führt auch die Berechnung schlussendlich durch
00:06:20.420 --> 00:06:23.630
und dann noch als 3. ein sogenanntes USB-Host-Shield
00:06:23.730 --> 00:06:26.750
das ist das, was eigentlich dann den USB-Anschluss hat
00:06:27.520 --> 00:06:30.520
was dann die Kommunikation mit dem USB-Gerät vornimmt
00:06:30.850 --> 00:06:32.380
und hier schon mal eine Empfehlung:
00:06:32.610 --> 00:06:35.200
dringend oder am besten das von circuits at home nehmen
00:06:35.200 --> 00:06:38.340
das ist das ursprünglich shield, wo auch die Bibliothek für geschrieben wird
00:06:38.760 --> 00:06:41.360
wo auch die Entwickler von dieser Bibliothek stark dahinter sind
00:06:42.040 --> 00:06:43.120
das es gut funktioniert
00:06:44.520 --> 00:06:46.810
So, wie funktioniert das ganze nun?
00:06:46.990 --> 00:06:48.460
Ich habe da mal eine Schematik gemacht
00:06:49.860 --> 00:06:52.420
im Grund, man hat seinen Computer, man hat seine Tastatur
00:06:52.420 --> 00:06:54.320
und genau dazwischen sitzt calc.pw
00:06:54.950 --> 00:06:56.740
ist so in der Art "man in the middle"
00:06:57.900 --> 00:07:00.130
liest ein, was über die Tastatur eingegeben wird,
00:07:00.130 --> 00:07:01.770
und gibt dann irgendwas an den Computer aus.
00:07:02.220 --> 00:07:05.730
Genauer gesagt, beim hochfahren fragt es einmal nach dem Masterpasswort
00:07:06.200 --> 00:07:07.420
was man dann nochmal wiederholt,
00:07:07.810 --> 00:07:10.260
und dann geht es in einen sogenannten passthrough-Modus
00:07:10.450 --> 00:07:13.340
heißt: die Eingaben, die dann über die Tastatur erfolgen,
00:07:13.360 --> 00:07:15.570
werden eins zu eins an den Rechner weitergegeben
00:07:15.720 --> 00:07:18.080
einfach damit man die Tastatur weiter benutzen kann, ganz normal
00:07:18.660 --> 00:07:21.260
erst durch eine spezielle Tastenkombination kommt man dann
00:07:21.260 --> 00:07:22.810
in den Passwort-berechnen-Modus
00:07:22.980 --> 00:07:24.230
wo man seine information eingibt,
00:07:24.470 --> 00:07:26.260
Enter drückt, das Passwort berechnet wird,
00:07:26.510 --> 00:07:28.910
und das Passwort als normale Tastatureingaben
00:07:28.910 --> 00:07:30.240
an den Rechner weitergegeben werden
00:07:30.540 --> 00:07:34.200
sprich; der kriegt nichtmal mit, dass da jetzt nicht über eine Tastatur
00:07:34.200 --> 00:07:36.390
ein Passwort eingegeben wurde sondern berechnet worden ist.
00:07:37.670 --> 00:07:38.160
So.
00:07:39.920 --> 00:07:41.180
Wie funktioniert die Berechnung?
00:07:41.740 --> 00:07:43.410
Nicht aufregen, komme ich gleich noch zu
00:07:45.510 --> 00:07:46.760
was zu erst gemacht wird,
00:07:46.760 --> 00:07:49.540
es wird aus dem Master-Passwort und der eingegebenen Information
00:07:49.540 --> 00:07:50.880
ein termporäres Passwort gebildet.
00:07:51.040 --> 00:07:53.180
das ist einfach gegen Rainbow-Attacks,
00:07:53.550 --> 00:07:56.540
dass sozusagen nicht vorher schon Passwörter vorberechnet werden können.
00:07:57.540 --> 00:07:58.980
Als nächstes wird die Information genommen,
00:07:59.140 --> 00:08:00.470
und die wird expandiert.
00:08:00.520 --> 00:08:03.940
Wenn wir uns vorstellen, wir haben eine ganz kurze Dienstinformation, wie z.B. "ebay"
00:08:04.120 --> 00:08:06.400
wir wollen nicht nur vier Zeichen kurze Passwörter generieren
00:08:06.780 --> 00:08:08.570
das ganze wird also entsprechend expandiert,
00:08:09.670 --> 00:08:11.810
wird verschlüsselt, noch ein bisschen sauber gemacht
00:08:11.810 --> 00:08:13.340
dass man es auch wirklich als Passwort benutzen kann
00:08:13.610 --> 00:08:14.960
und dass ist schlussendlich unser Passwort.
00:08:16.530 --> 00:08:20.280
Wir wissen, dass da ist das eine Problem: SHA1
00:08:21.430 --> 00:08:23.340
ist nicht mehr so ganz "state of the art"
00:08:24.180 --> 00:08:28.400
und das andere, seit Snowden, das da [RC4] auch nicht mehr so "state of the art"
00:08:29.190 --> 00:08:31.700
warum die noch eingesetzt werden, darauf komm ich später noch zu sprechen.
00:08:33.320 --> 00:08:36.210
So, was waren denn so die Fallstricke?
00:08:37.299 --> 00:08:40.919
im Grunde die vier hier als allererstes, und größtes
00:08:41.240 --> 00:08:43.659
diese Tastaturen, die man dort anschließt
00:08:43.659 --> 00:08:45.770
und selber ne tastatur darstellen,
00:08:46.060 --> 00:08:48.030
ist ziemlich ekelhaft
00:08:49.190 --> 00:08:52.690
das zweite ist, unser ram, den wir haben, unseren Arbeitsspeicher
00:08:52.690 --> 00:08:58.340
ist bei so einem Arduino sehr beschränkt, bei so einem Arduino Leonardo sind es 2.5 kB
00:08:59.180 --> 00:09:03.200
Unser Programmspeicher, wo sozusagen die Anwendung reingeladen wird auf das Arduino
00:09:03.200 --> 00:09:05.740
ist auch relativ klein mit 28 kb
00:09:06.170 --> 00:09:09.960
und das dritte, bzw das vierte, ist die...
00:09:09.970 --> 00:09:11.820
ich habs "mobile technology gap" genannt
00:09:11.820 --> 00:09:13.740
da komm ich gleich noch drauf zu sprechen, was ich damit meine
00:09:14.390 --> 00:09:15.700
So. Die Tastaturen.
00:09:16.480 --> 00:09:18.940
Jeder von euch hat sicherlich schonmal ein Betriebssystem eingerichtet
00:09:18.940 --> 00:09:19.750
und da wurde dann gefragt:
00:09:19.750 --> 00:09:21.660
ja, was für eine Tastatur hast du denn bei dir angeschlossen?
00:09:21.950 --> 00:09:24.600
Dann darf man auswählen, dass man eine deutsche Tastatur hat, eine de-DE
00:09:24.600 --> 00:09:26.500
oder eine de-CH oder was auch immer
00:09:27.280 --> 00:09:29.570
wo schlussendlich definiert wird, wenn man auf eine Taste drückt,
00:09:29.570 --> 00:09:31.130
was für ein Zeichen fällt hinten bei raus
00:09:32.730 --> 00:09:38.760
ich hab mal die häufigsten, die man in Europa sieht, aufgeschrieben
00:09:39.040 --> 00:09:42.480
gibt da dann zum Beispiel wie gesagt qwertz-de, qwertz aus der Schweiz
00:09:42.540 --> 00:09:45.860
qwertz aus Dänemark, qwerty aus Großbritannien, qwerty aus den USA
00:09:46.050 --> 00:09:48.080
azerty aus frankreich, azerty aus belgien,
00:09:48.260 --> 00:09:51.450
dann noch mal schon gemixt zwischen Mac und Windows und so weiter und so fort.
00:09:52.457 --> 00:09:55.360
wie gerade schon gesagt, unser Programmflash ist 28 kb groß
00:09:55.360 --> 00:09:58.240
und so ein Layout was sozusagen diese Umwandlung macht
00:09:58.251 --> 00:10:00.011
zwischen welche Taste zu welchem Zeichen
00:10:00.800 --> 00:10:02.091
braucht ein bisschen an Bytes.
00:10:03.211 --> 00:10:06.685
Zuviel, um alle möglichen abbilden zu können im Ardiuno selber.
00:10:07.577 --> 00:10:09.634
Wir haben auch einen Datenflash, der ist 1 kb groß,
00:10:09.725 --> 00:10:12.000
sozusagen Permamentspeicher, den man nochmal selber beschrieben kann,
00:10:12.274 --> 00:10:14.605
der ist nur 1kb groß, da passt grad mal eins rein,
00:10:15.400 --> 00:10:19.000
deswegen braucht man eine Lösung einfach, eines drauf flashen zu können,
00:10:19.000 --> 00:10:20.780
und wenn man seine Tastatur auf einmal wechseln sollte,
00:10:20.780 --> 00:10:23.090
- warum auch immer - einfach ein neues draufflashen zu können.
00:10:24.220 --> 00:10:26.580
So. So sieht das ganze dann aus:
00:10:26.580 --> 00:10:29.370
Das rechts ist sozusagen ein qwertz-de-Layout
00:10:30.500 --> 00:10:31.950
schön encodiert einfach als Hex
00:10:33.070 --> 00:10:34.930
und links sieht man dann wie das ganze aussieht
00:10:34.930 --> 00:10:35.960
wenn es dann gerade gesfllasht wird.
00:10:37.640 --> 00:10:40.060
So. Das zweite Problem ist der RAM.
00:10:40.650 --> 00:10:44.100
Wie gesagt 2.5 kb bei so einem Arduino Leonardo ist nicht gerade viel
00:10:44.290 --> 00:10:45.150
und was wir auch noch machen
00:10:45.150 --> 00:10:46.900
wir machen ja auch noch String-Bearbeitung,
00:10:47.060 --> 00:10:48.510
was nicht so schön ist.
00:10:48.960 --> 00:10:51.640
Weil, wenn man sich vorstellt, so ein kleiner Speicher, man allkoiert zwei Blöcke,
00:10:51.880 --> 00:10:53.920
deallokiert den ersten, und schon hat man ein Speicherloch
00:10:54.830 --> 00:10:57.040
sprich, fragmentierten Speicher,
00:10:57.670 --> 00:10:59.890
und wenn man das oft genug macht, dann ist der Ram voll,
00:10:59.890 --> 00:11:01.770
und man kann keine neuen Blöcke allokieren,
00:11:01.770 --> 00:11:04.060
und schon ist man in einer Deadlock Situation.
00:11:05.730 --> 00:11:08.640
Was ich deswegen gemacht habe, ich habe einen eigenen kleinen Speichermanager geschrieben
00:11:08.890 --> 00:11:11.930
dem man im Grunde übergibt, so viel Speicher sollst du verwalten
00:11:11.930 --> 00:11:13.930
soviele Blöcke sind maximal nöglich
00:11:14.450 --> 00:11:16.590
und sobald ein block deallokiert wird,
00:11:16.590 --> 00:11:18.840
werden einfach alle blöcke dahinter nach vorne geschoben.
00:11:19.110 --> 00:11:21.620
sodass man permanent eine Defragmentiertung des Speichers hat.
00:11:22.440 --> 00:11:23.460
Funktioniert ziemlich gut.
00:11:24.350 --> 00:11:25.290
Braucht auch nicht so lange.
00:11:26.540 --> 00:11:28.110
Ja. So würde es ansonsten aussehen,
00:11:28.110 --> 00:11:29.760
man hat überall kleine Miniblöcke,
00:11:30.910 --> 00:11:32.250
die man nicht mehr ordentlich benutzen kann
00:11:32.250 --> 00:11:34.090
und irgendwann ist der Speicher voll, wenn man neu allokieren will.
00:11:34.270 --> 00:11:34.590
Doof.
00:11:35.730 --> 00:11:36.070
So.
00:11:37.440 --> 00:11:39.490
Mein größtes Problem ist eigentlich der Programmflash,
00:11:39.490 --> 00:11:41.180
also sprich, wie groß kann die Anwendung sein.
00:11:42.540 --> 00:11:44.010
Das Usb-Host-Shield, was ich verwende,
00:11:44.100 --> 00:11:45.620
hat eine eigenen Bibliothek, wie gesagt,
00:11:46.020 --> 00:11:48.150
die immer mehr Funktionen bekommt,
00:11:48.150 --> 00:11:49.550
die entspchend aber auch immer größer wird,
00:11:49.550 --> 00:11:51.780
und auch immer mehr Programflash weg frisst.
00:11:53.500 --> 00:11:56.060
Wie auch schon gesagt, derzeit wird noch sha1 und rc4 benutzt,
00:11:56.060 --> 00:11:58.220
einfach deswegen, es passt gut in den Ram rein,
00:11:58.220 --> 00:11:59.830
und passt gut in den program flash rein
00:11:59.830 --> 00:12:01.850
also relativ schmal zu implementieren.
00:12:02.900 --> 00:12:04.740
Bessere Crypto braucht einfach mehr Platz,
00:12:05.550 --> 00:12:08.080
das ist eins der Themen an denen ich derzeit arbeite.
00:12:08.980 --> 00:12:12.210
Die andere Sache ist, auch neue Features brauchen mehr Platz.
00:12:13.540 --> 00:12:15.740
Ein Feature, was ich mir z.B. noch vorstelle,
00:12:15.740 --> 00:12:17.930
hab ich einfach mal type-through encryption genannt
00:12:18.210 --> 00:12:19.850
sprich, wie damals bei der Enigma,
00:12:20.010 --> 00:12:23.830
man hat sein calcpw, hat das in den Modus geschaltet,
00:12:24.110 --> 00:12:27.020
und während man seinen Text eintippt, wird der Text verschlüsselt
00:12:27.020 --> 00:12:28.900
und erst vershlüsselt an den Rechner übertagen
00:12:29.180 --> 00:12:30.050
der angeschlossen ist.
00:12:30.290 --> 00:12:34.060
So kann man z.B. dann in Internetcafés oder sowas
00:12:34.340 --> 00:12:36.150
vertrauliche Infromationen schreiben
00:12:36.150 --> 00:12:40.200
könnte sie auf, ja was auch immer, Pastebin oder sowas ablegen
00:12:40.510 --> 00:12:42.690
und derjenige, der es lesen soll, kann es dann entschlüsseln.
00:12:43.440 --> 00:12:44.010
So.
00:12:44.100 --> 00:12:46.070
Die Lösung, die ich jetzt gemacht habe, bei Revision "d"
00:12:46.070 --> 00:12:47.910
ist einfach ein zweites Arduino dazuzu nehmen,
00:12:48.200 --> 00:12:49.540
genauer gesagt ein Arduino Uno.
00:12:50.010 --> 00:12:51.390
Vorteil am Arduino Uno:
00:12:51.390 --> 00:12:54.360
Die Bauteile für den Kern des ganzen kosten gerade mal 5€
00:12:54.360 --> 00:12:55.570
und die kann man selber zusammenlöten
00:12:58.290 --> 00:13:01.620
so sieht das übrigens aus, wenn ein sogenannter Sketch zu groß wird,
00:13:01.620 --> 00:13:03.240
man kriegt einfach nur die Meldung "zu groß"
00:13:03.240 --> 00:13:05.440
kannste ja mal da kucken, wie du das vielleicht kleiner kriegst,
00:13:05.750 --> 00:13:08.970
ist poblematisch wenn eben der Code gebraucht wird,
00:13:08.970 --> 00:13:10.350
weil die Funktion ansonsten nicht funktioniert.
00:13:12.470 --> 00:13:15.690
Und das letzte, mobile technology gap:
00:13:16.460 --> 00:13:20.770
wir werden immer mobiler, wir haben unsere Laptops dabei,
00:13:20.770 --> 00:13:22.930
wo wir keine Tastatur unbedingt mitschleppen wollen,
00:13:22.930 --> 00:13:24.640
mit noch einem Extragerät, was wir anschließen,
00:13:24.910 --> 00:13:27.750
wir haben unsere Tablets, wo wir keine Usb-Tastaturen anschließen können,
00:13:27.750 --> 00:13:30.480
wir haben unsere Smartphones, wo wir keine Usb-Tastaturen anschließen können,
00:13:31.730 --> 00:13:32.990
ist etwas umständlich.
00:13:33.530 --> 00:13:37.220
So, und deswegen zwei Sachen, an denen ich derzeit arbeite,
00:13:37.220 --> 00:13:39.830
ist zum einen die calcpw-Funktionalität
00:13:39.830 --> 00:13:41.260
in eine Tastatur zu integrieren
00:13:41.560 --> 00:13:45.530
und die andere ist, dass calcpw nicht mehr nur über Usb funktioniert
00:13:45.530 --> 00:13:47.640
sondern auch über Bluetooth angeschlossen werden kann.
00:13:48.130 --> 00:13:51.850
Bluetooth haben wir Glück, funktioniert inzwischen mit Android realtiv gut,
00:13:51.850 --> 00:13:54.220
funktioniert auch mit iOS relativ gut,
00:13:55.230 --> 00:13:59.000
wo wir also Smartphones und Tablets abdecken können.
00:13:59.190 --> 00:14:01.340
Wenn man sozusagen eine Tastatur hätte, wo die Funktion drin ist,
00:14:01.340 --> 00:14:03.690
diese Tastatur funktioniert per Bluetooth,
00:14:04.680 --> 00:14:08.020
würde einige Probleme zumindest lösen können.
00:14:09.720 --> 00:14:12.660
So sieht ein Test aus, den ich derzeit gemacht habe,
00:14:12.660 --> 00:14:15.580
das ist ein einfaches Numpad, wie man früher hatte,
00:14:15.580 --> 00:14:17.680
wenn man dreimal auf die 2 drückt, kommt ein C raus
00:14:18.370 --> 00:14:19.850
die ganzen Sachen eingeben kann,
00:14:20.150 --> 00:14:21.290
funktioniert erstmal,
00:14:23.250 --> 00:14:25.300
das ist eine andere Sache, an der ich gearbeitet habe
00:14:25.990 --> 00:14:27.520
das da unten ist eine Tastaturmatrix,
00:14:27.520 --> 00:14:30.330
die ich aus einer normalen Kauftastatur rausgeholt habe,
00:14:30.880 --> 00:14:32.610
besteht im Grunde aus drei Schichten,
00:14:32.850 --> 00:14:34.740
eine untere leitenden Schicht, eine obere leitende Schicht
00:14:34.740 --> 00:14:35.510
und eine Trennschicht
00:14:35.510 --> 00:14:37.940
und jedesmal wenn man eine Taste drückt, wird die Oberschicht
00:14:37.940 --> 00:14:39.780
durch die Trennschicht auf die Unterschicht gedrückt
00:14:39.990 --> 00:14:43.730
und man kann herausfinden durch einfaches durchschalten
00:14:43.730 --> 00:14:45.180
welche Taste gerade gedrückt wurde
00:14:45.530 --> 00:14:47.080
und genau das ist was ich vorhabe.
00:14:47.080 --> 00:14:50.420
Sozusagen mich selber zwischen diese Matrix
00:14:50.650 --> 00:14:54.160
und den eigentlichen Controller der Tastatur zu bringen
00:14:54.580 --> 00:14:56.540
um dann den Controller zu benutzen als Output
00:14:56.540 --> 00:14:58.840
und die Matrix zu verwenden als Input.
00:14:59.430 --> 00:15:00.910
Man sieht, ist gar nicht so einfach,
00:15:01.460 --> 00:15:04.850
weil diese Matrix ist schlussendlich ein bisschen Plastik
00:15:04.850 --> 00:15:06.500
wo ein bisschen Silber aufgedampft ist,
00:15:07.400 --> 00:15:08.870
da dran löten funktioniert nicht.
00:15:09.650 --> 00:15:12.400
Mein derzeitiger Versuch ist, mit sogenanntem Leitfaden
00:15:13.160 --> 00:15:16.740
in die einzelnen Auflagekontakte von dieser Matrix zu stechen,
00:15:16.940 --> 00:15:21.160
dort einen Knoten zu machen, das ganze mit Nagellack zu fixieren
00:15:21.160 --> 00:15:24.380
und dann zu versuchen, das ganze an den Microcontroller anzuschließen
00:15:24.380 --> 00:15:31.110
Applaus
00:15:31.440 --> 00:15:35.680
Aber falls jemand eine Ahnung hat, wie man solche Auflagekontakte herstellen kann,
00:15:35.680 --> 00:15:38.600
wär das natürlich sehr hilfreich das würde nicht so viel frickeln sein.
00:15:39.540 --> 00:15:40.140
Ja.
00:15:41.870 --> 00:15:43.620
Gut, ich hab noch mehr als genug Zeit,
00:15:44.230 --> 00:15:45.650
aber trotzdem kann ich euch schonmal sagen,
00:15:45.650 --> 00:15:47.710
wenn ihr weitere Informationen haben wollt,
00:15:47.800 --> 00:15:49.360
könnt ihr einfach auf http://calc.pw gehen
00:15:49.680 --> 00:15:52.960
die Slides selber findet ihr auf http://calc.pw/30c3
00:15:53.860 --> 00:15:56.890
und da ich noch Zeit habe, kann ich ja noch ein bisschen weiter gehen.
00:15:59.980 --> 00:16:01.600
Eine Frage, die sich sicherlich stellen wird, ist
00:16:01.600 --> 00:16:04.780
wenn man jetzt so ein Ding hat, was Passwörter berechnet,
00:16:05.100 --> 00:16:07.810
wie kann man z.B. denn bestimmen, wie lang diese Passwörter sein sollen
00:16:07.810 --> 00:16:09.570
oder welche Sonderzeichen verwendet werden?
00:16:10.320 --> 00:16:12.380
Das wird bei calcpw derzeit inline gemacht,
00:16:12.620 --> 00:16:16.010
sprich man hat seine Information und kann hinten drann noch ein paar Sachen hinzuschreiben
00:16:16.300 --> 00:16:19.870
die die Passwörtberechnung beeinflussen
00:16:20.060 --> 00:16:23.940
das ist zum einen das Fragezeichen gefolgt von einem Integer bis 50
00:16:24.290 --> 00:16:27.010
wo man angibt wie lange das Passwort sein soll, das generiert wird
00:16:27.440 --> 00:16:30.210
50 einfach deswegen weil wir wenig RAM haben
00:16:30.210 --> 00:16:32.840
und ewiglange Passwörter generieren und im Ram halten ist schwierig
00:16:33.930 --> 00:16:35.720
dann gibt es noch das Ausrufezeichen
00:16:36.200 --> 00:16:39.190
wo man angeben kann welche Sonderzeichen verwendet werden dürfen,
00:16:39.610 --> 00:16:44.350
aus meiner Erfahrung mit dem Passwortcalculator Pass Calc also dieser Windows Software
00:16:45.340 --> 00:16:52.600
kann ich sagen, dass in 99,9% braucht man keine Sonderzeichen in Passwörtern
00:16:54.280 --> 00:16:59.160
deswegen eher so, dass man ihm wirklich sagt ok Ausrufezeichen welche Sonderzeichen sind erlaubt
00:16:59.630 --> 00:17:03.480
die kann man auch wild durcheinander mixen also egal in welcher Reihnefolge man sie angibt
00:17:03.780 --> 00:17:05.240
man muss halt immer wieder alle angeben.
00:17:05.867 --> 00:17:12.050
So. Dann gibt es noch ein großes Problem, was Passwortformulare häufig wollen oder manchmal wollen,
00:17:12.780 --> 00:17:16.490
dass man mindestens das eingibt und mindestens das eingibt und mindestens das eingibt
00:17:17.140 --> 00:17:19.910
dafür gibt es noch die Route die man vorne ran schreiben kann, die macht einfach einen Check:
00:17:20.220 --> 00:17:22.950
Ok, ist mindestenes ein Buchstabe enthalten ist mindestens eine Zahl enthalten?
00:17:23.280 --> 00:17:27.108
wenn man das Ausrufezeichen benutzt ist sowieso immer mindestens ein Sonderzeichen enthalten.
00:17:27.579 --> 00:17:32.270
Und so kann man auch solche Checks einbauen, dass ein Passwort irgendwelche Anforderungen erfüllt.
00:17:32.940 --> 00:17:36.710
So sehen dann Informationen aus die man eingeben kann "SomeINFO".
00:17:36.710 --> 00:17:40.830
"SomeINFO?25" wäre entsprechend Passwort 25 Zeichen lang,
00:17:40.830 --> 00:17:44.110
"SomeINFO" mit plus minus mal geteilt - eines davon wird genommen -
00:17:44.540 --> 00:17:47.530
dann eben "SomeINFO" 8 Zeichen langes Passwort als Default
00:17:47.530 --> 00:17:49.840
und da muss dann mindestens eine Zahl und ein Buchstabe drinn sein.
00:17:50.150 --> 00:17:52.820
Das ganze dann nochmal kombiniert und das ganze dann nochmal kombiniert.
00:17:53.690 --> 00:17:56.000
Ja, eine Folie hatte ich noch.
00:17:56.000 --> 00:17:56.670
Ja genau.
00:17:57.720 --> 00:18:00.890
So sieht der Ablauf aus wenn man das ganze verwendet,
00:18:02.200 --> 00:18:05.040
wie gesagt wenn es hoch fährt wird man einmal nach dem Passwort gefragt,
00:18:05.710 --> 00:18:08.680
das ganze soll man nochmal eingeben falls man sich vertippt hat, das man das mitkriegt
00:18:08.680 --> 00:18:12.470
und kommt dann eben in diesen pass-through-Modus wo die Daten einfach durchgereicht werden
00:18:12.920 --> 00:18:17.020
und wenn man den Passwortmodus wechselt gibt man die Information ein und drückt dann Enter
00:18:17.020 --> 00:18:19.530
Passwort wird berechnet und man kommt zurück in den pass-through Modus.
00:18:20.140 --> 00:18:21.950
Ja. Damit ist auch mein Backup zu Ende.
00:18:22.750 --> 00:18:23.060
Danke.
00:18:23.060 --> 00:18:31.680
Applaus
00:18:31.680 --> 00:18:33.960
Herald Engel: Ja vielen Dank für diesen hervorragenden Talk
00:18:33.960 --> 00:18:37.690
ich denke er ist sehr interessant und vielleicht haben wir ja auch ein paar interessante Ideen
00:18:37.690 --> 00:18:39.530
wie man das zum Beispiel erweitern könnte.
00:18:40.030 --> 00:18:41.630
Und damit sind dann die Fragen eröffnet.
00:18:42.390 --> 00:18:48.510
Ich bitte euch einfach an den Mikrofonen aufzustellen, an eins und zwei... vor allem.
00:18:54.740 --> 00:18:58.520
Frage 1: Mich interessiert, du sagt wenn du die reine Software verwendest
00:18:59.370 --> 00:19:03.300
und der Rechner ist kompromittiert, dann hast du hinterher ein Problem und kannst alle Passwörter ändern
00:19:03.720 --> 00:19:07.590
aber wenn der Rechner so kompromittiert ist, kann ja immer noch passieren,
00:19:08.940 --> 00:19:12.580
musst du nicht alle verwenden, man kommt auch nicht an dein Master Passwort ran,
00:19:12.910 --> 00:19:16.640
aber die expliziten Passwörter die du da verwendet hast sind auch tot.
00:19:17.140 --> 00:19:20.440
Kenny: Ja die sind schlussendlich tot wenn man dem Gerät nicht vertrauen kann, richtig.
00:19:20.440 --> 00:19:23.990
Ist eben der primäre Vorteil deswegen auch in dem Algorithmus entsprechend ...
00:19:32.180 --> 00:19:36.090
Ich wurde ein paar mal gefragt warum ich einfach nur hashe oder nur verschlüssele:
00:19:36.440 --> 00:19:39.100
Einfacher Hintergrund: Wir wollen dieses Master Passwort schützen,
00:19:39.370 --> 00:19:42.940
und dadurch das beides eingesetzt wird haben wir zwei Ebenen von Schutz drin,
00:19:43.860 --> 00:19:48.190
wenn sozusagen ein Passwort kompromittiert wird müssen wir nicht nur durch den Hash-Algorithmus durchbrechen können,
00:19:48.190 --> 00:19:50.140
sondern wir müssen auch durch die Verschlüsselung durchbrechen können.
00:19:50.350 --> 00:19:52.440
Das ist das gleiche wie wenn wir Firewalls aufbauen,
00:19:52.630 --> 00:19:55.130
da sollte man immer zwei nehmen und zwar von verschiedenen Herstellern.
00:19:55.620 --> 00:19:56.590
Ist hier genau das gleiche.
00:19:57.660 --> 00:20:02.080
Ja, wenn dieses eine Passwort auf einem Rechner verwendet wird der komprommitiert ist,
00:20:02.080 --> 00:20:06.240
ist dieses Passwort verbrannt, weil es wird schlussendlich unverschlüsselt an den Rechner geschickt.
00:20:08.360 --> 00:20:12.680
Hauptziel hier ist es, das aufgrund eines Passwortes oder aufgrund von n Passwörtern,
00:20:14.210 --> 00:20:18.690
die abgelesen werden, nicht auf das Master-Passwort zurückgeführt werden kann.
00:20:19.110 --> 00:20:20.670
Das ist hier einer der Hauptgründe.
00:20:21.370 --> 00:20:24.220
Deswegen Hardware und deswegen auch die Wahl des Algorithmus.
00:20:27.850 --> 00:20:34.490
Frage 2: Was machst denn du wenn dann eines deiner Passwörter bekannt geworden ist?
00:20:34.490 --> 00:20:38.180
Also dein ebay-Passwort, deine Info ebay ist genommen.
00:20:38.330 --> 00:20:42.200
Musst du dann künftig "ebay2" eintippen damit du die nächste Info hast, oder?
00:20:43.780 --> 00:20:44.690
Kenny: Ja, leider.
00:20:44.690 --> 00:20:48.400
Es gibt möglicherweise verschiedene Möglichkeiten,
00:20:48.400 --> 00:20:50.330
man kann z.B. anstatt "ebay" "ebay.com" nehmen.
00:20:51.270 --> 00:20:54.050
Frage 2: Jaja okay, aber du musst dir wieder ein neues ausdenken.
00:20:54.050 --> 00:20:56.180
Kenny: Ja, schlussendlich muss man sich eine neue Information ausdenken, das ist richtig.
00:20:56.810 --> 00:20:59.760
Man hat aber immer noch den Vorteil, das nicht plötzlich sämtliche Passwörter ändern muss.
00:21:00.230 --> 00:21:01.820
Frage 2: Ok, und dann habe ich noch eine Frage:
00:21:03.430 --> 00:21:06.990
In diesem pass-through Modus, gibt es da irgendwie eine spürbare Latenz von der Tastatur
00:21:06.990 --> 00:21:08.380
oder verlierst du irgendwelche Features?
00:21:09.340 --> 00:21:11.750
Kenny: In dem pass-through Modus habe ich noch keine Latenz mitbekommen.
00:21:11.750 --> 00:21:16.170
Man muss dazu sagen ich bin nur Entwickler und schreibe Texte, ich bin kein Gamer,
00:21:17.000 --> 00:21:20.090
man sollte also nicht unbedingt als Gamer da seine Gaming-Tastatur anschließen.
00:21:25.550 --> 00:21:27.250
Herald: Okay, wenn es keine Fragen mehr gibt hätte...
00:21:27.250 --> 00:21:28.410
Kenny: Doch ich glaube noch da, zwei.
00:21:28.720 --> 00:21:30.090
Herald: ... hätte ich sonst eine gehabt.
00:21:30.380 --> 00:21:32.290
Frage 3: Ja ich hätte da noch eine Frage und zwar:
00:21:32.290 --> 00:21:35.840
wie genau sieht das dann aus, weil das lädt ja eher dazu ein,
00:21:35.840 --> 00:21:38.060
dass man eher schwache Passwörter verwendet
00:21:38.060 --> 00:21:40.250
wie gerade geschrieben "ebay" einfach nur.
00:21:40.650 --> 00:21:43.120
Wenn dann jemand Zugriff auf das Gerät hat,
00:21:43.120 --> 00:21:46.100
das er dann ganz einfach an viele Accounts ran kommen kann?
00:21:48.610 --> 00:21:49.910
Kenny: Nicht unbedingt... lacht
00:21:51.220 --> 00:21:56.210
Schlussendlich, auch wieder hier aufgrund des Algorithmus, wir versuchen sowas wie...
00:21:56.210 --> 00:21:59.440
also, es wird versucht sowas wie Rainbowtables zu verhindern
00:21:59.440 --> 00:22:03.670
in dem eben du damit du überhaupt die Verschlüsselung im zweiten Schritt machen zu können
00:22:04.720 --> 00:22:06.730
du jedes Master Passwort nehmen musst
00:22:06.730 --> 00:22:09.120
und dort jede Information nehmen musst, die du durchprobieren willst.
00:22:10.610 --> 00:22:13.600
Das generieren deiner Rainbowtable dauert schlussendlich länger,
00:22:13.970 --> 00:22:16.530
und auch dann ist deine Rainbow table größer, weil du
00:22:16.860 --> 00:22:18.760
kannst ja nicht nur davon ausgehen das jemand "ebay" benutzt,
00:22:18.760 --> 00:22:20.810
du kannst auch "ebay.com" nehmen, du kannst "ebay.de" nehmen,
00:22:20.810 --> 00:22:22.850
du kannst was auch immer
00:22:24.920 --> 00:22:27.560
irgendwie deinen Usernamen nehmen,
00:22:29.230 --> 00:22:31.030
es wird dadurch divergierter.
00:22:31.630 --> 00:22:32.260
Frage 3: Ja okay.
00:22:34.740 --> 00:22:37.840
Frage 4: I've got a question about the iteration,
00:22:38.020 --> 00:22:42.830
most passwords do have an expiration date, so they have 90 days
00:22:43.410 --> 00:22:46.950
you've got to just change your password.
00:22:46.950 --> 00:22:48.660
How do you handle that?
00:22:49.020 --> 00:22:51.900
Kenny: Well, the question is how do we handle that with passwort schemes?
00:22:51.970 --> 00:22:58.700
Normally you have one character where you just increment a character or a number
00:22:58.700 --> 00:23:04.950
or you add something like "q1" for the first quarter of the year.
00:23:05.370 --> 00:23:13.300
Thats the same here so you could add for example "ebay" space then "q12014"
00:23:13.610 --> 00:23:17.050
than you have your passwort for that actual quarter of the year.
00:23:17.780 --> 00:23:18.220
Frage 4: Okay thanks.
00:23:18.510 --> 00:23:18.790
Kenny: Ok
00:23:23.850 --> 00:23:24.750
Herald: More questions?
00:23:26.120 --> 00:23:30.340
Is there something from the internet maybe? Where is the signal angel anyway? Yeah?
00:23:33.060 --> 00:23:34.130
Frage 5: I have one question,
00:23:34.130 --> 00:23:39.560
I was wondering wheter you could use - I don't know - maybe I should stick to english?
00:23:40.550 --> 00:23:43.580
I was wondering how you could use that system
00:23:43.580 --> 00:23:47.710
to somehow prevent that keyloggers can
00:23:48.480 --> 00:23:51.630
kind of get what you are typing.
00:23:51.830 --> 00:23:56.090
Kenny: Oh well, should I answer in English? laughs
00:23:58.330 --> 00:24:05.510
You have to differentiate between software keyloggers that are run on your computer
00:24:05.800 --> 00:24:07.200
you can't prevent that
00:24:07.560 --> 00:24:09.610
but when you use such a hardware
00:24:09.850 --> 00:24:15.290
and you have to look at it because it has an LED or an LCD where your information is shown
00:24:16.450 --> 00:24:21.160
you can see where your usb cable is going along
00:24:21.160 --> 00:24:24.930
and thus can see when there is another piece of hardware attatched to it.
00:24:24.930 --> 00:24:25.360
Frage 5: Yeah, ok.
00:24:31.070 --> 00:24:31.910
Herald: Next question?
00:24:33.590 --> 00:24:36.970
Frage 6: I'm really not sure if I should continue in English, I'll just do it..
00:24:36.970 --> 00:24:37.990
Herald: Wir könnten auch auf D...
00:24:38.470 --> 00:24:39.150
Kenny: Wir können auch auf Deutsch!
00:24:39.150 --> 00:24:40.420
Frage 6: lacht Dann machen wir auf Deutsch.
00:24:42.530 --> 00:24:47.900
Eine kleine Frage zu dem ganze Konzept von diesem sozusagen Zwischenschalten
00:24:47.900 --> 00:24:52.840
eines neuen Gerätes zwischen sozusagen Keyboard und dem tatsächlichen Computer,
00:24:53.190 --> 00:24:57.120
ich bin jetzt nicht wirklich technik-affin und würde einfach fragen, ob du
00:24:57.770 --> 00:25:03.920
darin sozusagen die Zukunft der persönlichen Sicherheit für Computer oder Passwörter allgemein siehst?
00:25:05.580 --> 00:25:11.260
kenny: Ich sehe die Zukunft von Logins definitiv in zusätzlicher Hardware, ja,
00:25:11.620 --> 00:25:14.400
wir haben es ja schon mit verschiedenen Tokens, wir haben RSA Tokens,
00:25:14.710 --> 00:25:16.180
wir haben irgend welche anderen Tokens
00:25:16.180 --> 00:25:18.620
die du dir von Google zuschicken kannst - whatever
00:25:18.980 --> 00:25:21.070
ich denke schon, dass es in diese Richtung gehen wird, ja.
00:25:29.330 --> 00:25:31.920
Frage 7: Denkst du auch über sowas wie "challenge response" nach?
00:25:31.920 --> 00:25:34.960
Also letzendlich hast du ja das Problem
00:25:34.960 --> 00:25:36.860
wenn du das Passwort einmal über den Computer geschickt hast,
00:25:36.860 --> 00:25:40.120
mag es abgegriffen worden sein,
00:25:40.460 --> 00:25:43.400
aber wenn du z.B. einen challenge response system einführen würdest,
00:25:43.400 --> 00:25:49.070
also sprich der Computer schickt etwas an dein Device, USB geht in beide Richtungen,
00:25:49.820 --> 00:25:51.050
rechnen rechnen, zurück.
00:25:53.230 --> 00:25:57.440
Kenny: Dir geht es also darum, dass du etwas vom Computer über USB an das Gerät schickst
00:25:57.440 --> 00:25:59.350
das irgendwas macht und es dir wieder zurück schickt?
00:26:00.960 --> 00:26:05.160
War so schon implementiert, nannte sich Revision "A", nicht ohne Grund.
00:26:06.650 --> 00:26:08.230
Denn hier hat man dann genau das Problem,
00:26:08.230 --> 00:26:10.460
das man das ganze schon an den Rechner eintippt,
00:26:10.770 --> 00:26:12.410
der entsprechend angreifbar ist,
00:26:12.790 --> 00:26:14.280
und dann kann man auch gleich ein Stück Software nehmen.
00:26:17.370 --> 00:26:19.260
Weil man schlussendlich, man gibt es am Rechner ein,
00:26:19.260 --> 00:26:21.300
der ist kompromittiert, kann das Master-Passwort auslesen,
00:26:21.550 --> 00:26:26.200
schickt das ganze dann an ein Gerät was offene Algorithmen verwendet,
00:26:26.290 --> 00:26:28.500
berechnet irgendwas, was man auch selber dann berechnen kann,
00:26:28.500 --> 00:26:31.270
denn es sind ja offene Algorithmen, schickt das ganze dann wieder zurück.
00:26:31.400 --> 00:26:35.860
Also schlussendlich hast du dann höchstens einen Prozessor der dir das ganze abnimmt
00:26:35.960 --> 00:26:37.460
der vielleicht optimiert sein könnte.
00:26:37.810 --> 00:26:40.400
Aber der Angriffsvektor von der normalen Software ist wieder da.
00:26:43.610 --> 00:26:49.680
Frage 7: Ich dachte mehr so an z.B. einen SSH-Login über private Keys
00:26:49.680 --> 00:26:52.710
die dann halt nicht auf dem Rechner gespeichert sind sondern halt nur auf deiner Device
00:26:52.710 --> 00:26:55.960
und das heißt die Informationen die nötig sind um das zu brechen
00:26:55.960 --> 00:26:57.360
sind überhaupt nie auf deinem Rechner.
00:26:59.980 --> 00:27:01.740
Kenny: Ich weiß nicht ob es in die gleiche Richtung geht,
00:27:01.740 --> 00:27:04.860
ich bin derzeit dabei ein Paper zu schreiben über das ganze
00:27:06.580 --> 00:27:09.680
wo es darum geht Smartcards zu verwenden
00:27:09.680 --> 00:27:11.480
um dort die Informationen darauf zu speichern.
00:27:11.480 --> 00:27:13.300
Ich weiß nicht ob es so ein bisschen in die Richtung geht.
00:27:14.090 --> 00:27:17.440
Man würde eben das ganze nicht über den Computer
00:27:17.440 --> 00:27:20.280
oder über das Betriebssystem hinschicken lassen,
00:27:20.280 --> 00:27:23.640
sondern man würde die Information auslagern auf nochmal ein separates Gerät
00:27:23.970 --> 00:27:27.250
was man entsprechend auch blacklisten kann - und weiß der Teufel.
00:27:27.460 --> 00:27:31.320
Publikum (leise, unverständlich): Es gibt ja auch einen Crypto-Stick, z.B. der sowas wieder macht.
00:27:31.320 --> 00:27:31.780
Kenny: Bitte?
00:27:31.780 --> 00:27:32.490
Herald: Die F...
00:27:32.490 --> 00:27:33.170
Publikum (leise, unverständlich): Crypto-Stick!
00:27:33.170 --> 00:27:35.460
Herald: Es gäbe einen Crypto-Stick der so etwas auch macht?
00:27:36.870 --> 00:27:37.810
Kenny: Der ist mir nicht bekannt.
00:27:38.360 --> 00:27:39.630
Publikum (leise, unverständlich): Der war unvollständig.
00:27:39.630 --> 00:27:40.080
Kenny: Ach so.
00:27:42.230 --> 00:27:43.280
Herald: Okay, Micro zwei.
00:27:43.720 --> 00:27:47.270
Frage 8: Die Frage ist, kann man auch irgendwie das Masterpasswort
00:27:47.750 --> 00:27:52.500
irgendwie auf eine Smartcard oder etwas anderes mit zusätzlicher Hardware auslagern,
00:27:52.500 --> 00:27:55.950
die du quasi mitnehmen kannst und vom Gerät trennen kannst.
00:27:56.230 --> 00:28:01.590
Also und so des, weil das Masterpasswort - wenn man sich dann noch ein, wenn man, weiß nicht,
00:28:01.590 --> 00:28:05.050
man neigt dazu, wenn man das Masterpasswort ständig eingeben muss,
00:28:05.050 --> 00:28:07.670
das auch wieder zu verkürzen und sich einfacher merkbar zu machen,
00:28:08.250 --> 00:28:11.800
das irgendwie besser zu merken auf dem Gerät und...
00:28:13.430 --> 00:28:14.960
Kenny: Hatte ich ja gerade schon kurz angesprochen,
00:28:14.960 --> 00:28:18.140
in dem Paper das ich gerade schreibe zeige ich genau sowas auf,
00:28:18.350 --> 00:28:24.460
zwar eher für Firmen, dass die damit die Passwortverwaltung ihrer Mitarbeiter verbessern könnnen,
00:28:24.670 --> 00:28:27.740
aber schlussendlich ja, es macht Sinn das ganze auf ein Gerät zu speichern,
00:28:28.520 --> 00:28:31.160
es sollte dann aber ein Gerät sein was sicherer ist,
00:28:31.280 --> 00:28:33.400
also sprich Smartcard schlussendlich.
00:28:36.180 --> 00:28:41.790
Frage 9: Ja ich hab da ein Problem, wenn die Tastatur an dieses Arduino angeschlossen wird
00:28:41.790 --> 00:28:43.380
und das ist dann sozusagen da in der Mitte,
00:28:43.760 --> 00:28:47.020
was ist wenn noch irgendwie eine kriminelle Energie -
00:28:47.020 --> 00:28:49.970
man sagt ja wenn man physikalsichen Zugriff hat, zum Beispiel auf die Tastatur
00:28:49.970 --> 00:28:52.850
und dann zwischen - im Prinzip - irgendwie in der Tastatur
00:28:52.850 --> 00:28:56.770
aber zwischen Tastatur und Arduino wieder einen Logger zwischen setzt,
00:28:56.770 --> 00:28:59.930
dass dann ja das Passwort wieder, das Masterpasswort
00:28:59.930 --> 00:29:06.660
inklusive den anderen Teil dieses Passwortes abgegriffen weden kann.
00:29:07.310 --> 00:29:08.960
Also so wohl wenn kriminelle Energie ist,
00:29:08.960 --> 00:29:13.000
dann lässt man zwischen Arduino und Tastatur den Logger dazwischen.
00:29:13.460 --> 00:29:19.260
Kenny: Ja man muss dazu sagen, Hintergrund ist hier nicht gegen Hardwarekeylogger zu arbeiten.
00:29:19.260 --> 00:29:21.480
Einfach deswegen weil man die nicht ordentlich erkennen kann.
00:29:22.190 --> 00:29:25.580
Du könntest es irgendwie auf irgend eine bestimmte Tastatur prägen
00:29:25.580 --> 00:29:27.900
und könntest dann hoffen, dass du mit den Latenzen heraus findest,
00:29:27.900 --> 00:29:29.560
dass wirklich die Tastatur angeschlossen ist.
00:29:32.430 --> 00:29:35.180
Macht aber in dem Umfang keinen Sinn,
00:29:35.180 --> 00:29:38.320
das ist dann, das geht dann viel zu tief rein, also...
00:29:40.160 --> 00:29:42.700
eine Sache hier drann ist, es soll möglichst einfach sein.
00:29:42.850 --> 00:29:46.570
Und ein Masterpasswort sich merken und dann irgend eine beliebige Information eingeben
00:29:46.570 --> 00:29:48.300
die man sich gut merken oder herleiten kann,
00:29:48.870 --> 00:29:51.120
ist noch im Rahmen der Dinge was normaler Nutzer tun kann.
00:29:51.450 --> 00:29:54.970
Und dann plötzlich anzufangen irgendwelche speziellen Konfigurationen durchzuführen,
00:29:54.970 --> 00:29:56.930
damit nur noch seine Tastatur erkannt wird,
00:29:57.690 --> 00:29:58.950
läuft dem ganzen schon wieder zu wider.
00:29:59.530 --> 00:30:02.430
Ganz abgesehen davon, es gibt ein Grund warum ihr...
00:30:02.810 --> 00:30:05.150
das Passwort immer wieder eingegeben werden soll beim Start
00:30:05.150 --> 00:30:08.530
nämlich, dass das Gerät selber nicht Angriffsziel wird.
00:30:08.530 --> 00:30:11.020
Wenn es z.B. verloren gehen würde und da würde das Masterpasswort drinn stehen,
00:30:11.730 --> 00:30:12.970
hätte man ein großes Problem.
00:30:14.100 --> 00:30:16.180
Deswegen eben wirklich so, dass man es immer wieder eingibt.
00:30:18.080 --> 00:30:19.910
Herald: Okay das war dann die letze Frage.
00:30:19.910 --> 00:30:22.580
Herzlichen Dank nochmal, einen großen Applaus für Kenny
00:30:22.580 --> 00:30:30.480
Applaus
00:30:30.480 --> 00:30:33.140
Herald: Und wer sich die Technologie nochmal näher ankucken kann,
00:30:33.500 --> 00:30:35.060
kann gerne hier nach vornen kommen,
00:30:35.060 --> 00:30:37.130
wir haben noch ein paar Minuten zwischen den Talks,
00:30:37.130 --> 00:30:38.700
da könnt ihr ihn gerne ausfragen.
00:30:38.960 --> 00:30:39.810
Kenny: Danke
00:30:39.810 --> 00:30:49.082
subtitles created by c3subtitles.de