Wunderbar. Äh ja...
Willkommen zu meinem Vortrag über calc.pw,
Passwortberechnung mit Arduino
Vielleicht kurz vorher: die Folien selber sind auf Englisch gehalten,
damit non-native speaker sich daran orientieren können.
Ich selbst werde aber trotzdem auf Deutsch vortragen.
Vielleicht kurz zu mir, mein Name ist Kenny,
und man kann mich erreichen per E-Mail, per Twitter, per Website
und noch so ein paar andere Sachen, die ich nicht aufgeschrieben habe.
Was ich heute erzählen werde,
ist zum einen das Problem, was ich lösen wollte,
dann meine Idee, wie ich dieses Problem lösen wollte,
dann, wie die Lösung derzeit aussieht,
wie die Lösung funktioniert,
und was so die Fallstricke waren, die ich versucht habe,
oder die mir begegnet sind, die ich lösen musste...
Ja, fangen wir mit dem Problem einfach mal an.
Viele von euch werden sicherlich das Internet benutzen,
mit keine Ahnung wievielen verschiedenen Diensten,
ihr werdet eigene Server haben, wo ihr euch per SSH einwählt,
ihr habt E-Mail-Accounts, wo ihr euch einloggen müsst usw.,
und wie ihr sicherlich wisst, sollte man für jeden Dienst
ein eigenenes Passwort verwenden.
Einfacher Grund:
wird ein so ein Dienst mal angegriffen und die Passwörter entwendet,
können diese Passwörter bei anderen Diensten ausprobiert werden,
und schon habt ihr einen viel größeren Angriffsvektor.
Deswegen: ein Passwort pro Dienst,
das ist so das, was man einsetzen sollte.
Das Problem ist, sich diese ganzen Passwörter zu merken.
Also bei mir sind es im Schnitt so zwischen 25 und 50 Passwörter,
die ich jede Woche verwende,
je nachdem, wieviele Dienste ich gerade benutze.
Weil man sich so viele starke Passwörter einfach nicht merken kann,
haben Leute angefangen, sich Passwort-Schemen auszudenken.
Zum Beispiel hat man ein starkes Passwort, das man vorne dranpackt,
und hinten dann den Namen vom Dienst.
Ist dann ein Problem, wenn ein Dienst z.B. Passwörter Plaintext abspeichert,
weil dann kann man sich einfach dieses Präfix-Passwort nehmen,
kann irgendeinen anderen Dienstnamen hinten dranschreiben
und kann damit wieder Passwörter ausprobieren.
Es gibt noch andere Möglichkeiten, Passwörter sich selber zu generieren,
indem man z.B. einen Satz benutzt, da die Leerzeichen rausnimmt,
noch ein paar Buchstaben durch Zahlen & Sonderzeichen ersetzt,
und dann hat man wieder ein Passwort.
Macht aber auch dann wieder Probleme, wenn man viele Dienste verwendet,
weil für jeden Dienst muss man sich einen Satz merken,
man muss sich merken, welchen Satz man für welchen Dienst benutzt hat,
welche Buchstaben man wann ersetzt hat, und so weiter.
Die andere Sache, die in den letzten Jahren sehr beliebt geworden ist,
sind Passwortdatenbanken.
Wenn man es sich mal genau überlegt,
das ist im Grunde eine Datei, da schreibt man seine Passwörter rein,
da schreibt man rein, auch noch, wie der Benutzername ist,
wie der Dienst heißt, vielleicht noch die URL vom Dienst,
verschlüsselt das ganze mit einem Passwort,
und hofft, dass niemals diese Datei abhanden kommt,
und dass niemals gleichzeitig das Passwort dazu abhanden kommt.
Benutzt man dann sehr gerne auf Windows z.B.,
wo Trojaner und Viren durchaus vorherrschend sind,
und wir müssen, wenn wir Passwort-Datenbanken benutzen,
hoffen, dass niemals ein Trojaner kommt, der genau darauf abzielt.
Ja.
Was ist jetzt so die Idee?
Die Idee hinter dem ganzen ist zum einen,
ich möchte die Passwortauswahl vereinfachen,
sprich, welches Passwort wird für welchen Dienst wann verwendet.
Ich möchte gleichzeitig das Problem lösen,
wie man sich diese ganzen Passwörter merken soll.
Es soll obendrein soweit wie möglich verhindert werden,
dass diese Passwörter verloren gehen,
z.B. durch einen Festplattencrash,
wo dann plötzlich die Passwort-Datenbank weg ist,
oder sie gestohlen werden, z.B. durch Trojaner.
Und das ganze soll Open Source sein,
einfach, damit jeder diese Technologie benutzen kann,
und nicht sich an irgenwelche teuren Firmen wenden muss,
um sowas in der Art haben zu können.
Die Frage ist jetzt natürlich, wie soll das ganze funktionieren?
so...
...meiner Meinung nach.
und zwar indem die pw kryptografisch berechnet werden
es gibt da mehrere Faktoren
das ist zum Beispiel das ist zum einen das Master-Passwort
was die Stärke des ganzen darstellen soll
einfach weil es schlussendlich eine Verschlüsselung ist
wir haben eine Service-Information für die einfache Merkbarkeit
das geht so in Richtung starkes Präfix und dann einfacs Service-Suffix
es sollen öffentlichen Algorithmen verwendet werden
einfach, damit man das ganze reproduzieren kann
wenn man also ein Gerät hat, was Passwörter berechnet,
und ein neues Gerät kauft, was die gleichen Algorithmen verwendet
soll schlussendlich die gleichen PW dabei heraus kommen
und das ganze soll dedizierte Hardware verwenden
einfach, damit wir nicht durch normale Trojaner und Viren angegriffen werden können
bei der Passwort-Berechnung.
So, wie sieht die Lösung aus?
Ich geh mal ein bisschen zurück, ins Jahre 2003 äh 2010
da hab ich ein Programm geschrieben
den Passwordcalculatur, der schon genau das gemacht hat
man hat ein Master-Passwort eingegeben
hat die Information eingegeben, hat auf berechnen geklickt
und hat schlussendlich sein Passwort rausgekriegt
hat funktioniert, funktioniert auch immer noch,
hat aber eine unschöne Eigenschaft, nämlich,
wo immer man sein Passwort braucht, muss man dieses Programm runterladen
an dem Rechner muss man entsprechend auch sein Masterpasswort eingeben
und ich habs mehrfach, also zweimal,
dass ich bei einem Freund war, hab da irgendwas an einem Server machen müssen,
hab das Programm runtergeladen, Passwort eingegeben,
und als ich dann fertig war mit meiner Arbeit, wurde mir dann gesagt:
"Du, mein Computer benimmt sich seit zwei Wochen ein bisschen merkwuerdig...
wenn du schonmal da bist, kannst du nichtmal kucken?"
Hmm. Schön. Erstmal alle Passwörter wechseln.
Genau das soll eben nicht mehr vorkommen.
Deswegen, calc.pw als wirklich Hardware-Anwendung
sieht ungefähr so aus, schön in einer Box
das ist noch die Revision "c",
es gibt mittlerweise eine Revision "d",
die ist noch nicht ganz fertig, wie man sieht
aber wird noch.
Wie man sieht, soll ein bisschen modularer werden, als es vorher gewesen ist
soll auch... eher in Richtung Produktion in... ja... Fabriken kommen
daran arbeite ich noch.
Was ist da schlussendlich drin?
In der Revision "d", also das ist ein verteiltes,
ist einmal ein Arduino Leonardo drin, als Output-Device,
das emuliert eine Tastatur gegenüber dem Computer
spricht das LCD an und spricht auch ein paar LEDs an
damit man so Status-Informationen kriegt,
dazu noch ein Ardiuino Uno, als Eingabegerät,
dort wird schlussendlich eine Tastaur angeschlossen
es kann auch optional noch ein Keypad angeschlossen werden,
daran arbeite ich gerade
und dieses Arduino Uno führt auch die Berechnung schlussendlich durch
und dann noch als 3. ein sogenanntes USB-Host-Shield
das ist das, was eigentlich dann den USB-Anschluss hat
was dann die Kommunikation mit dem USB-Gerät vornimmt
und hier schon mal eine Empfehlung:
dringend oder am besten das von circuits at home nehmen
das ist das ursprünglich shield, wo auch die Bibliothek für geschrieben wird
wo auch die Entwickler von dieser Bibliothek stark dahinter sind
das es gut funktioniert
So, wie funktioniert das ganze nun?
Ich habe da mal eine Schematik gemacht
im Grund, man hat seinen Computer, man hat seine Tastatur
und genau dazwischen sitzt calc.pw
ist so in der Art "man in the middle"
liest ein, was über die Tastatur eingegeben wird,
und gibt dann irgendwas an den Computer aus.
Genauer gesagt, beim hochfahren fragt es einmal nach dem Masterpasswort
was man dann nochmal wiederholt,
und dann geht es in einen sogenannten passthrough-Modus
heißt: die Eingaben, die dann über die Tastatur erfolgen,
werden eins zu eins an den Rechner weitergegeben
einfach damit man die Tastatur weiter benutzen kann, ganz normal
erst durch eine spezielle Tastenkombination kommt man dann
in den Passwort-berechnen-Modus
wo man seine information eingibt,
Enter drückt, das Passwort berechnet wird,
und das Passwort als normale Tastatureingaben
an den Rechner weitergegeben werden
sprich; der kriegt nichtmal mit, dass da jetzt nicht über eine Tastatur
ein Passwort eingegeben wurde sondern berechnet worden ist.
So.
Wie funktioniert die Berechnung?
Nicht aufregen, komme ich gleich noch zu
was zu erst gemacht wird,
es wird aus dem Master-Passwort und der eingegebenen Information
ein termporäres Passwort gebildet.
das ist einfach gegen Rainbow-Attacks,
dass sozusagen nicht vorher schon Passwörter vorberechnet werden können.
Als nächstes wird die Information genommen,
und die wird expandiert.
Wenn wir uns vorstellen, wir haben eine ganz kurze Dienstinformation, wie z.B. "ebay"
wir wollen nicht nur vier Zeichen kurze Passwörter generieren
das ganze wird also entsprechend expandiert,
wird verschlüsselt, noch ein bisschen sauber gemacht
dass man es auch wirklich als Passwort benutzen kann
und dass ist schlussendlich unser Passwort.
Wir wissen, dass da ist das eine Problem: SHA1
ist nicht mehr so ganz "state of the art"
und das andere, seit Snowden, das da [RC4] auch nicht mehr so "state of the art"
warum die noch eingesetzt werden, darauf komm ich später noch zu sprechen.
So, was waren denn so die Fallstricke?
im Grunde die vier hier als allererstes, und größtes
diese Tastaturen, die man dort anschließt
und selber ne tastatur darstellen,
ist ziemlich ekelhaft
das zweite ist, unser ram, den wir haben, unseren Arbeitsspeicher
ist bei so einem Arduino sehr beschränkt, bei so einem Arduino Leonardo sind es 2.5 kB
Unser Programmspeicher, wo sozusagen die Anwendung reingeladen wird auf das Arduino
ist auch relativ klein mit 28 kb
und das dritte, bzw das vierte, ist die...
ich habs "mobile technology gap" genannt
da komm ich gleich noch drauf zu sprechen, was ich damit meine
So. Die Tastaturen.
Jeder von euch hat sicherlich schonmal ein Betriebssystem eingerichtet
und da wurde dann gefragt:
ja, was für eine Tastatur hast du denn bei dir angeschlossen?
Dann darf man auswählen, dass man eine deutsche Tastatur hat, eine de-DE
oder eine de-CH oder was auch immer
wo schlussendlich definiert wird, wenn man auf eine Taste drückt,
was für ein Zeichen fällt hinten bei raus
ich hab mal die häufigsten, die man in Europa sieht, aufgeschrieben
gibt da dann zum Beispiel wie gesagt qwertz-de, qwertz aus der Schweiz
qwertz aus Dänemark, qwerty aus Großbritannien, qwerty aus den USA
azerty aus frankreich, azerty aus belgien,
dann noch mal schon gemixt zwischen Mac und Windows und so weiter und so fort.
wie gerade schon gesagt, unser Programmflash ist 28 kb groß
und so ein Layout was sozusagen diese Umwandlung macht
zwischen welche Taste zu welchem Zeichen
braucht ein bisschen an Bytes.
Zuviel, um alle möglichen abbilden zu können im Ardiuno selber.
Wir haben auch einen Datenflash, der ist 1 kb groß,
sozusagen Permamentspeicher, den man nochmal selber beschrieben kann,
der ist nur 1kb groß, da passt grad mal eins rein,
deswegen braucht man eine Lösung einfach, eines drauf flashen zu können,
und wenn man seine Tastatur auf einmal wechseln sollte,
- warum auch immer - einfach ein neues draufflashen zu können.
So. So sieht das ganze dann aus:
Das rechts ist sozusagen ein qwertz-de-Layout
schön encodiert einfach als Hex
und links sieht man dann wie das ganze aussieht
wenn es dann gerade gesfllasht wird.
So. Das zweite Problem ist der RAM.
Wie gesagt 2.5 kb bei so einem Arduino Leonardo ist nicht gerade viel
und was wir auch noch machen
wir machen ja auch noch String-Bearbeitung,
was nicht so schön ist.
Weil, wenn man sich vorstellt, so ein kleiner Speicher, man allkoiert zwei Blöcke,
deallokiert den ersten, und schon hat man ein Speicherloch
sprich, fragmentierten Speicher,
und wenn man das oft genug macht, dann ist der Ram voll,
und man kann keine neuen Blöcke allokieren,
und schon ist man in einer Deadlock Situation.
Was ich deswegen gemacht habe, ich habe einen eigenen kleinen Speichermanager geschrieben
dem man im Grunde übergibt, so viel Speicher sollst du verwalten
soviele Blöcke sind maximal nöglich
und sobald ein block deallokiert wird,
werden einfach alle blöcke dahinter nach vorne geschoben.
sodass man permanent eine Defragmentiertung des Speichers hat.
Funktioniert ziemlich gut.
Braucht auch nicht so lange.
Ja. So würde es ansonsten aussehen,
man hat überall kleine Miniblöcke,
die man nicht mehr ordentlich benutzen kann
und irgendwann ist der Speicher voll, wenn man neu allokieren will.
Doof.
So.
Mein größtes Problem ist eigentlich der Programmflash,
also sprich, wie groß kann die Anwendung sein.
Das Usb-Host-Shield, was ich verwende,
hat eine eigenen Bibliothek, wie gesagt,
die immer mehr Funktionen bekommt,
die entspchend aber auch immer größer wird,
und auch immer mehr Programflash weg frisst.
Wie auch schon gesagt, derzeit wird noch sha1 und rc4 benutzt,
einfach deswegen, es passt gut in den Ram rein,
und passt gut in den program flash rein
also relativ schmal zu implementieren.
Bessere Crypto braucht einfach mehr Platz,
das ist eins der Themen an denen ich derzeit arbeite.
Die andere Sache ist, auch neue Features brauchen mehr Platz.
Ein Feature, was ich mir z.B. noch vorstelle,
hab ich einfach mal type-through encryption genannt
sprich, wie damals bei der Enigma,
man hat sein calcpw, hat das in den Modus geschaltet,
und während man seinen Text eintippt, wird der Text verschlüsselt
und erst vershlüsselt an den Rechner übertagen
der angeschlossen ist.
So kann man z.B. dann in Internetcafés oder sowas
vertrauliche Infromationen schreiben
könnte sie auf, ja was auch immer, Pastebin oder sowas ablegen
und derjenige, der es lesen soll, kann es dann entschlüsseln.
So.
Die Lösung, die ich jetzt gemacht habe, bei Revision "d"
ist einfach ein zweites Arduino dazuzu nehmen,
genauer gesagt ein Arduino Uno.
Vorteil am Arduino Uno:
Die Bauteile für den Kern des ganzen kosten gerade mal 5€
und die kann man selber zusammenlöten
so sieht das übrigens aus, wenn ein sogenannter Sketch zu groß wird,
man kriegt einfach nur die Meldung "zu groß"
kannste ja mal da kucken, wie du das vielleicht kleiner kriegst,
ist poblematisch wenn eben der Code gebraucht wird,
weil die Funktion ansonsten nicht funktioniert.
Und das letzte, mobile technology gap:
wir werden immer mobiler, wir haben unsere Laptops dabei,
wo wir keine Tastatur unbedingt mitschleppen wollen,
mit noch einem Extragerät, was wir anschließen,
wir haben unsere Tablets, wo wir keine Usb-Tastaturen anschließen können,
wir haben unsere Smartphones, wo wir keine Usb-Tastaturen anschließen können,
ist etwas umständlich.
So, und deswegen zwei Sachen, an denen ich derzeit arbeite,
ist zum einen die calcpw-Funktionalität
in eine Tastatur zu integrieren
und die andere ist, dass calcpw nicht mehr nur über Usb funktioniert
sondern auch über Bluetooth angeschlossen werden kann.
Bluetooth haben wir Glück, funktioniert inzwischen mit Android realtiv gut,
funktioniert auch mit iOS relativ gut,
wo wir also Smartphones und Tablets abdecken können.
Wenn man sozusagen eine Tastatur hätte, wo die Funktion drin ist,
diese Tastatur funktioniert per Bluetooth,
würde einige Probleme zumindest lösen können.
So sieht ein Test aus, den ich derzeit gemacht habe,
das ist ein einfaches Numpad, wie man früher hatte,
wenn man dreimal auf die 2 drückt, kommt ein C raus
die ganzen Sachen eingeben kann,
funktioniert erstmal,
das ist eine andere Sache, an der ich gearbeitet habe
das da unten ist eine Tastaturmatrix,
die ich aus einer normalen Kauftastatur rausgeholt habe,
besteht im Grunde aus drei Schichten,
eine untere leitenden Schicht, eine obere leitende Schicht
und eine Trennschicht
und jedesmal wenn man eine Taste drückt, wird die Oberschicht
durch die Trennschicht auf die Unterschicht gedrückt
und man kann herausfinden durch einfaches durchschalten
welche Taste gerade gedrückt wurde
und genau das ist was ich vorhabe.
Sozusagen mich selber zwischen diese Matrix
und den eigentlichen Controller der Tastatur zu bringen
um dann den Controller zu benutzen als Output
und die Matrix zu verwenden als Input.
Man sieht, ist gar nicht so einfach,
weil diese Matrix ist schlussendlich ein bisschen Plastik
wo ein bisschen Silber aufgedampft ist,
da dran löten funktioniert nicht.
Mein derzeitiger Versuch ist, mit sogenanntem Leitfaden
in die einzelnen Auflagekontakte von dieser Matrix zu stechen,
dort einen Knoten zu machen, das ganze mit Nagellack zu fixieren
und dann zu versuchen, das ganze an den Microcontroller anzuschließen
*Applaus*
Aber falls jemand eine Ahnung hat, wie man solche Auflagekontakte herstellen kann,
wär das natürlich sehr hilfreich das würde nicht so viel frickeln sein.
Ja.
Gut, ich hab noch mehr als genug Zeit,
aber trotzdem kann ich euch schonmal sagen,
wenn ihr weitere Informationen haben wollt,
könnt ihr einfach auf http://calc.pw gehen
die Slides selber findet ihr auf http://calc.pw/30c3
und da ich noch Zeit habe, kann ich ja noch ein bisschen weiter gehen.
Eine Frage, die sich sicherlich stellen wird, ist
wenn man jetzt so ein Ding hat, was Passwörter berechnet,
wie kann man z.B. denn bestimmen, wie lang diese Passwörter sein sollen
oder welche Sonderzeichen verwendet werden?
Das wird bei calcpw derzeit inline gemacht,
sprich man hat seine Information und kann hinten drann noch ein paar Sachen hinzuschreiben
die die Passwörtberechnung beeinflussen
das ist zum einen das Fragezeichen gefolgt von einem Integer bis 50
wo man angibt wie lange das Passwort sein soll, das generiert wird
50 einfach deswegen weil wir wenig RAM haben
und ewiglange Passwörter generieren und im Ram halten ist schwierig
dann gibt es noch das Ausrufezeichen
wo man angeben kann welche Sonderzeichen verwendet werden dürfen,
aus meiner Erfahrung mit dem Passwortcalculator Pass Calc also dieser Windows Software
kann ich sagen, dass in 99,9% braucht man keine Sonderzeichen in Passwörtern
deswegen eher so, dass man ihm wirklich sagt ok Ausrufezeichen welche Sonderzeichen sind erlaubt
die kann man auch wild durcheinander mixen also egal in welcher Reihnefolge man sie angibt
man muss halt immer wieder alle angeben.
So. Dann gibt es noch ein großes Problem, was Passwortformulare häufig wollen oder manchmal wollen,
dass man mindestens das eingibt und mindestens das eingibt und mindestens das eingibt
dafür gibt es noch die Route die man vorne ran schreiben kann, die macht einfach einen Check:
Ok, ist mindestenes ein Buchstabe enthalten ist mindestens eine Zahl enthalten?
wenn man das Ausrufezeichen benutzt ist sowieso immer mindestens ein Sonderzeichen enthalten.
Und so kann man auch solche Checks einbauen, dass ein Passwort irgendwelche Anforderungen erfüllt.
So sehen dann Informationen aus die man eingeben kann "SomeINFO".
"SomeINFO?25" wäre entsprechend Passwort 25 Zeichen lang,
"SomeINFO" mit plus minus mal geteilt - eines davon wird genommen -
dann eben "SomeINFO" 8 Zeichen langes Passwort als Default
und da muss dann mindestens eine Zahl und ein Buchstabe drinn sein.
Das ganze dann nochmal kombiniert und das ganze dann nochmal kombiniert.
Ja, eine Folie hatte ich noch.
Ja genau.
So sieht der Ablauf aus wenn man das ganze verwendet,
wie gesagt wenn es hoch fährt wird man einmal nach dem Passwort gefragt,
das ganze soll man nochmal eingeben falls man sich vertippt hat, das man das mitkriegt
und kommt dann eben in diesen pass-through-Modus wo die Daten einfach durchgereicht werden
und wenn man den Passwortmodus wechselt gibt man die Information ein und drückt dann Enter
Passwort wird berechnet und man kommt zurück in den pass-through Modus.
Ja. Damit ist auch mein Backup zu Ende.
Danke.
*Applaus*
Herald Engel: Ja vielen Dank für diesen hervorragenden Talk
ich denke er ist sehr interessant und vielleicht haben wir ja auch ein paar interessante Ideen
wie man das zum Beispiel erweitern könnte.
Und damit sind dann die Fragen eröffnet.
Ich bitte euch einfach an den Mikrofonen aufzustellen, an eins und zwei... vor allem.
Frage 1: Mich interessiert, du sagt wenn du die reine Software verwendest
und der Rechner ist kompromittiert, dann hast du hinterher ein Problem und kannst alle Passwörter ändern
aber wenn der Rechner so kompromittiert ist, kann ja immer noch passieren,
musst du nicht alle verwenden, man kommt auch nicht an dein Master Passwort ran,
aber die expliziten Passwörter die du da verwendet hast sind auch tot.
Kenny: Ja die sind schlussendlich tot wenn man dem Gerät nicht vertrauen kann, richtig.
Ist eben der primäre Vorteil deswegen auch in dem Algorithmus entsprechend ...
Ich wurde ein paar mal gefragt warum ich einfach nur hashe oder nur verschlüssele:
Einfacher Hintergrund: Wir wollen dieses Master Passwort schützen,
und dadurch das beides eingesetzt wird haben wir zwei Ebenen von Schutz drin,
wenn sozusagen ein Passwort kompromittiert wird müssen wir nicht nur durch den Hash-Algorithmus durchbrechen können,
sondern wir müssen auch durch die Verschlüsselung durchbrechen können.
Das ist das gleiche wie wenn wir Firewalls aufbauen,
da sollte man immer zwei nehmen und zwar von verschiedenen Herstellern.
Ist hier genau das gleiche.
Ja, wenn dieses eine Passwort auf einem Rechner verwendet wird der komprommitiert ist,
ist dieses Passwort verbrannt, weil es wird schlussendlich unverschlüsselt an den Rechner geschickt.
Hauptziel hier ist es, das aufgrund eines Passwortes oder aufgrund von n Passwörtern,
die abgelesen werden, nicht auf das Master-Passwort zurückgeführt werden kann.
Das ist hier einer der Hauptgründe.
Deswegen Hardware und deswegen auch die Wahl des Algorithmus.
Frage 2: Was machst denn du wenn dann eines deiner Passwörter bekannt geworden ist?
Also dein ebay-Passwort, deine Info ebay ist genommen.
Musst du dann künftig "ebay2" eintippen damit du die nächste Info hast, oder?
Kenny: Ja, leider.
Es gibt möglicherweise verschiedene Möglichkeiten,
man kann z.B. anstatt "ebay" "ebay.com" nehmen.
Frage 2: Jaja okay, aber du musst dir wieder ein neues ausdenken.
Kenny: Ja, schlussendlich muss man sich eine neue Information ausdenken, das ist richtig.
Man hat aber immer noch den Vorteil, das nicht plötzlich sämtliche Passwörter ändern muss.
Frage 2: Ok, und dann habe ich noch eine Frage:
In diesem pass-through Modus, gibt es da irgendwie eine spürbare Latenz von der Tastatur
oder verlierst du irgendwelche Features?
Kenny: In dem pass-through Modus habe ich noch keine Latenz mitbekommen.
Man muss dazu sagen ich bin nur Entwickler und schreibe Texte, ich bin kein Gamer,
man sollte also nicht unbedingt als Gamer da seine Gaming-Tastatur anschließen.
Herald: Okay, wenn es keine Fragen mehr gibt hätte...
Kenny: Doch ich glaube noch da, zwei.
Herald: ... hätte ich sonst eine gehabt.
Frage 3: Ja ich hätte da noch eine Frage und zwar:
wie genau sieht das dann aus, weil das lädt ja eher dazu ein,
dass man eher schwache Passwörter verwendet
wie gerade geschrieben "ebay" einfach nur.
Wenn dann jemand Zugriff auf das Gerät hat,
das er dann ganz einfach an viele Accounts ran kommen kann?
Kenny: Nicht unbedingt... *lacht*
Schlussendlich, auch wieder hier aufgrund des Algorithmus, wir versuchen sowas wie...
also, es wird versucht sowas wie Rainbowtables zu verhindern
in dem eben du damit du überhaupt die Verschlüsselung im zweiten Schritt machen zu können
du jedes Master Passwort nehmen musst
und dort jede Information nehmen musst, die du durchprobieren willst.
Das generieren deiner Rainbowtable dauert schlussendlich länger,
und auch dann ist deine Rainbow table größer, weil du
kannst ja nicht nur davon ausgehen das jemand "ebay" benutzt,
du kannst auch "ebay.com" nehmen, du kannst "ebay.de" nehmen,
du kannst was auch immer
irgendwie deinen Usernamen nehmen,
es wird dadurch divergierter.
Frage 3: Ja okay.
Frage 4: I've got a question about the iteration,
most passwords do have an expiration date, so they have 90 days
you've got to just change your password.
How do you handle that?
Kenny: Well, the question is how do we handle that with passwort schemes?
Normally you have one character where you just increment a character or a number
or you add something like "q1" for the first quarter of the year.
Thats the same here so you could add for example "ebay" space then "q12014"
than you have your passwort for that actual quarter of the year.
Frage 4: Okay thanks.
Kenny: Ok
Herald: More questions?
Is there something from the internet maybe? Where is the signal angel anyway? Yeah?
Frage 5: I have one question,
I was wondering wheter you could use - I don't know - maybe I should stick to english?
I was wondering how you could use that system
to somehow prevent that keyloggers can
kind of get what you are typing.
Kenny: Oh well, should I answer in English? *laughs*
You have to differentiate between software keyloggers that are run on your computer
you can't prevent that
but when you use such a hardware
and you have to look at it because it has an LED or an LCD where your information is shown
you can see where your usb cable is going along
and thus can see when there is another piece of hardware attatched to it.
Frage 5: Yeah, ok.
Herald: Next question?
Frage 6: I'm really not sure if I should continue in English, I'll just do it..
Herald: Wir könnten auch auf D...
Kenny: Wir können auch auf Deutsch!
Frage 6: *lacht* Dann machen wir auf Deutsch.
Eine kleine Frage zu dem ganze Konzept von diesem sozusagen Zwischenschalten
eines neuen Gerätes zwischen sozusagen Keyboard und dem tatsächlichen Computer,
ich bin jetzt nicht wirklich technik-affin und würde einfach fragen, ob du
darin sozusagen die Zukunft der persönlichen Sicherheit für Computer oder Passwörter allgemein siehst?
kenny: Ich sehe die Zukunft von Logins definitiv in zusätzlicher Hardware, ja,
wir haben es ja schon mit verschiedenen Tokens, wir haben RSA Tokens,
wir haben irgend welche anderen Tokens
die du dir von Google zuschicken kannst - whatever
ich denke schon, dass es in diese Richtung gehen wird, ja.
Frage 7: Denkst du auch über sowas wie "challenge response" nach?
Also letzendlich hast du ja das Problem
wenn du das Passwort einmal über den Computer geschickt hast,
mag es abgegriffen worden sein,
aber wenn du z.B. einen challenge response system einführen würdest,
also sprich der Computer schickt etwas an dein Device, USB geht in beide Richtungen,
rechnen rechnen, zurück.
Kenny: Dir geht es also darum, dass du etwas vom Computer über USB an das Gerät schickst
das irgendwas macht und es dir wieder zurück schickt?
War so schon implementiert, nannte sich Revision "A", nicht ohne Grund.
Denn hier hat man dann genau das Problem,
das man das ganze schon an den Rechner eintippt,
der entsprechend angreifbar ist,
und dann kann man auch gleich ein Stück Software nehmen.
Weil man schlussendlich, man gibt es am Rechner ein,
der ist kompromittiert, kann das Master-Passwort auslesen,
schickt das ganze dann an ein Gerät was offene Algorithmen verwendet,
berechnet irgendwas, was man auch selber dann berechnen kann,
denn es sind ja offene Algorithmen, schickt das ganze dann wieder zurück.
Also schlussendlich hast du dann höchstens einen Prozessor der dir das ganze abnimmt
der vielleicht optimiert sein könnte.
Aber der Angriffsvektor von der normalen Software ist wieder da.
Frage 7: Ich dachte mehr so an z.B. einen SSH-Login über private Keys
die dann halt nicht auf dem Rechner gespeichert sind sondern halt nur auf deiner Device
und das heißt die Informationen die nötig sind um das zu brechen
sind überhaupt nie auf deinem Rechner.
Kenny: Ich weiß nicht ob es in die gleiche Richtung geht,
ich bin derzeit dabei ein Paper zu schreiben über das ganze
wo es darum geht Smartcards zu verwenden
um dort die Informationen darauf zu speichern.
Ich weiß nicht ob es so ein bisschen in die Richtung geht.
Man würde eben das ganze nicht über den Computer
oder über das Betriebssystem hinschicken lassen,
sondern man würde die Information auslagern auf nochmal ein separates Gerät
was man entsprechend auch blacklisten kann - und weiß der Teufel.
Publikum (leise, unverständlich): Es gibt ja auch einen Crypto-Stick, z.B. der sowas wieder macht.
Kenny: Bitte?
Herald: Die F...
Publikum (leise, unverständlich): Crypto-Stick!
Herald: Es gäbe einen Crypto-Stick der so etwas auch macht?
Kenny: Der ist mir nicht bekannt.
Publikum (leise, unverständlich): Der war unvollständig.
Kenny: Ach so.
Herald: Okay, Micro zwei.
Frage 8: Die Frage ist, kann man auch irgendwie das Masterpasswort
irgendwie auf eine Smartcard oder etwas anderes mit zusätzlicher Hardware auslagern,
die du quasi mitnehmen kannst und vom Gerät trennen kannst.
Also und so des, weil das Masterpasswort - wenn man sich dann noch ein, wenn man, weiß nicht,
man neigt dazu, wenn man das Masterpasswort ständig eingeben muss,
das auch wieder zu verkürzen und sich einfacher merkbar zu machen,
das irgendwie besser zu merken auf dem Gerät und...
Kenny: Hatte ich ja gerade schon kurz angesprochen,
in dem Paper das ich gerade schreibe zeige ich genau sowas auf,
zwar eher für Firmen, dass die damit die Passwortverwaltung ihrer Mitarbeiter verbessern könnnen,
aber schlussendlich ja, es macht Sinn das ganze auf ein Gerät zu speichern,
es sollte dann aber ein Gerät sein was sicherer ist,
also sprich Smartcard schlussendlich.
Frage 9: Ja ich hab da ein Problem, wenn die Tastatur an dieses Arduino angeschlossen wird
und das ist dann sozusagen da in der Mitte,
was ist wenn noch irgendwie eine kriminelle Energie -
man sagt ja wenn man physikalsichen Zugriff hat, zum Beispiel auf die Tastatur
und dann zwischen - im Prinzip - irgendwie in der Tastatur
aber zwischen Tastatur und Arduino wieder einen Logger zwischen setzt,
dass dann ja das Passwort wieder, das Masterpasswort
inklusive den anderen Teil dieses Passwortes abgegriffen weden kann.
Also so wohl wenn kriminelle Energie ist,
dann lässt man zwischen Arduino und Tastatur den Logger dazwischen.
Kenny: Ja man muss dazu sagen, Hintergrund ist hier nicht gegen Hardwarekeylogger zu arbeiten.
Einfach deswegen weil man die nicht ordentlich erkennen kann.
Du könntest es irgendwie auf irgend eine bestimmte Tastatur prägen
und könntest dann hoffen, dass du mit den Latenzen heraus findest,
dass wirklich die Tastatur angeschlossen ist.
Macht aber in dem Umfang keinen Sinn,
das ist dann, das geht dann viel zu tief rein, also...
eine Sache hier drann ist, es soll möglichst einfach sein.
Und ein Masterpasswort sich merken und dann irgend eine beliebige Information eingeben
die man sich gut merken oder herleiten kann,
ist noch im Rahmen der Dinge was normaler Nutzer tun kann.
Und dann plötzlich anzufangen irgendwelche speziellen Konfigurationen durchzuführen,
damit nur noch seine Tastatur erkannt wird,
läuft dem ganzen schon wieder zu wider.
Ganz abgesehen davon, es gibt ein Grund warum ihr...
das Passwort immer wieder eingegeben werden soll beim Start
nämlich, dass das Gerät selber nicht Angriffsziel wird.
Wenn es z.B. verloren gehen würde und da würde das Masterpasswort drinn stehen,
hätte man ein großes Problem.
Deswegen eben wirklich so, dass man es immer wieder eingibt.
Herald: Okay das war dann die letze Frage.
Herzlichen Dank nochmal, einen großen Applaus für Kenny
*Applaus*
Herald: Und wer sich die Technologie nochmal näher ankucken kann,
kann gerne hier nach vornen kommen,
wir haben noch ein paar Minuten zwischen den Talks,
da könnt ihr ihn gerne ausfragen.
Kenny: Danke
subtitles created by c3subtitles.de