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: Ich habe eine Frage zum Passwortwechsel: Die meisten Passwörter haben ein Ablaufdatum, beispielsweise 90 Tage, und du musst danach dein Passwort ändern. Wie hast du das gelöst? Kenny: Nun, die Frage ist, wie haben wir Passwort-Pläne umgesetzt? Normalerweise hast du ein Zeichen oder eine Zahl, die du einfach erhöhst oder du fügst einfach etwas wie "q1" für das erste Quartal hinzu. Das ist hier genau so, du kannst beispielsweise an "ebay" einfach Leerzeichen "q12014" anhängen, dann hast du dein Passwort für das jeweilige Quartal des Jahres. Frage 4: Okay, Danke. Kenny: Ok Herald: Weitere Fragen? Gibt es vielleicht etwas aus dem Internet? Wo ist denn überhaupt der Signal-Engel? Ja? Frage 5: Ich habe eine Frage, ich habe mich gefragt, wie du - ich weiß nicht - vielleicht sollte ich weiter Englisch spechen? Ich habe mich gefragt, wie du dieses System verwenden kannst, um irgendwie Keylogger daran zu hindern, das, was du schreibst, mitzuschneiden? Kenny: Oh gut, soll ich auf Englisch anfworten? lacht Du musst zwischen Hardware- und Software-Keyloggern unterscheiden. Letztere laufen auf deinem Computer, was du nicht verhindern kannst. Aber wenn du so eine Hardware benutzt, und die hat eine LED oder ein LCD, und du musst diese wegen der dort angezeigten Information ansehen, dann kannst du sehen, wo dein USB-Kabel entlang geht, und somit sehen, ob ein anderes Stück Hardware angesteckt wurde. Frage 5: Ja, ok. Herald: Nächste Frage? Frage 6: Ich bin wirklich nicht sicher, ob ich auf Englisch fragen sollte, ich werds einfach machen... 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