Arduino geeignet für Keyboard-Encryption?

Hallo,

ich bin noch am Anfang, was Arduino angeht und bin gerade am recherchieren ob folgendes möglich ist:

Ich möchte auf Arduino aufbauend eine HID-Verschlüsselungslösung erstellen.

Folgendes habe ich mir dabei gedacht:

Das Arduinoboard wird mittels der auf ihm existierenden und eines noch hinzuzufügenden USB-to-Seriellsteckteils zwischen Tastatur und nichtvertrauenswürdigem Rechner gesteckt.
Auf das Board würde ich noch ein LCD-Shield stecken.
Der Nutzer tippt nun normal und unverschlüsselt, hierbei wird das Signal einfach durch das Board in Richtung PC geschleift.
Der Nutzer aktiviert mittels Button auf dem Board die Verschlüsselungsfunktionalität, er wird um Eingabe von Keymaterial gebeten.
Danach sieht er seine Klartexteingaben auf dem LCD-Shield während das Arduinoboard (vermutlich mittels RC4 verschlüsselt) die Krypotexte an den Rechner weitersendet.

Ggf. als Erweiterung könnte man noch einen SD-Schacht vorsehen, um dort GPG Publickeymaterial zu nutzen.

Da ich wie gesagt noch ziemlich wenig selbst mit Arduino gemacht habe, hoffe ich, dass mir hier jemand sagen kann, ob das funktionieren kann wie ich es mir vorstelle und wo mögliche Probleme liegen.

Danke schonmal im Voraus

  • mrueg

USB-Seriell-Adapter funktionieren nur in eine Richtung, und dann auch nur mit einem bestimmten Protokoll. Was du für die Verwendung einer USB-Tastatur am Arduino bräuchtest, wäre ein USB-Hostcontroller. Weiterhin wäre ein Mikrocontroller mit nativer USB-Unterstützung sinnvoll, um sich dem PC auch als eine echte Tastatur zu zeigen. Mit PS/2-Schnittstellen hätte man ersteres Problem behoben, aber auf der Rechnerseite ist PS/2 vielleicht nicht so sinnvoll, da die PS/2-Schnittstelle an solchen "nicht vertrauenswürdigen" Rechnern üblicherweise nicht für die Verwendung von Privatgeräten gedacht ist. Da würde sich also weiterhin ein Mikrocontroller mit nativem USB anbieten, zum Beispiel der ATmega32u4, wie er auf dem kommenden Arduino Leonardo, dem Teensy und dem Adafruit ATmega32u4-Breakoutboard installiert ist. Leonardo ist noch nicht draußen, aber natürlich voll mit Arduino 1.0 kompatibel, für Teensy und andere Umgebungen (wie das Ada-Board) gibt es Teensyduino.

Ich sehe das Problem in der Rechenleistung und der Implementierung des Verschlüsselungsalogaritmus.
Des weiteren sehe ich keinen Sinn in dem ganzen Unterfangen. Was machst Du mit den verschlüsselten Texten? Hast Du schon daran gedacht daß Du sie zum korrigieren wieder entschlüsseln mußt.
Grüße Uwe

Hast wohl Angst vor'm Bundestrojaner ... :smiley:

Danke euch schon mal für die Antworten.

Ah mist, dass USB ja eine Master/Slave Architektur hat, habe ich verzockt. Schade, dass sich Firewire nicht durchgesetzt hat. :wink:

Mit dem Arduino Leonardo könnte ich quasi einen USB-Host komplett nachbilden, dort die USB Tastatur als USB-Device anschließen und würde dann per USB-Seriell-Adapter, den ich aufstecke, den Rechner ansteuern, richtig?

Wenn ich mich richtig informiert habe, soll das Leonardo-Board noch dieses Jahr erscheinen, richtig?

Ein Usecase wäre z.B.

Ich möchte eine Mail schreiben und habe keinen Rechner bei. Ein Freund bietet mir seinen virenverseuchten Windowsrechner an. Ich packe also das Board zwischen Keyboard und Rechner. Nun gebe ich den Empfänger ein und habe zufällig seinen Public-Key auf meiner Speicherkarte dabei. Jetzt wird die Verschlüsselung mittels Schalter/Button/Hotkey aktiviert und ich wähle das passende Schlüsselmaterial von der SD Karte aus. Jetzt gebe ich den Body der Email ein und kann per LCD überprüfen ob der Text korrekt ist. Auf dem Bildschirm des eigentlichen PCs erscheint nur der Kryptotext. Der Empfänger der EMail kann das ganze dann wie gewohnt per GPG entschlüsseln.

Joa der Bundestrojaner sollte wohl im Idealfall keine Chance haben. ;D

Ich bezweifle, daß Du rein zufälligerweise den Arduino-Zwischenverschlüssler dabei hast, wenn Du Deinen PC zuhause läßt und das unwiederstehliche Bedürfnis verspürst, eine geheime Email zu verschicken.

Aber eine Böse Frage:
Du willst Dich über den (Viren,Troianer, Keylogger ecc) verseuchten Win PC Deines Bekannten bei Deinem Mail Provider einloggen und da über das Browseinterface deine Geheim Email verschicken?
Wie gibst den Username und das Password für dein Emailaccount ein ohne gekeylogt zu werden?

Grüße Uwe

Sicher mag das Usecase etwas an den Haaren herbeigezogen sein. Aber irgendwann kann man vllt. seinem eigenem Rechner nicht mehr vertrauen und will sein Schlüsselmaterial extern speichern, so dass kein Zugriff darauf geschehen kann. Eine Arduino-Smartcard wäre auch eine interessante Idee.

Eine "böse" Antwort:
Es darf jeder meine Emailcredentials haben, solange ich nur verschlüsselten und authentifizierten Emailverkehr nutze und keiner die Mails löschen kann. Ansonsten gäbe es ja noch Späßchen wie Lamport Hash / OTP für den Login.

mrueg:
Sicher mag das Usecase etwas an den Haaren herbeigezogen sein. Aber irgendwann kann man vllt. seinem eigenem Rechner nicht mehr vertrauen und will sein Schlüsselmaterial extern speichern, so dass kein Zugriff darauf geschehen kann. Eine Arduino-Smartcard wäre auch eine interessante Idee.

Eine "böse" Antwort:
Es darf jeder meine Emailcredentials haben, solange ich nur verschlüsselten und authentifizierten Emailverkehr nutze und keiner die Mails löschen kann. Ansonsten gäbe es ja noch Späßchen wie Lamport Hash / OTP für den Login.

Eine Einleuchtende Antwort auf die "Eine "böse" Antwort:"
Wenn jemand Deine Zugangsdaten hat, dann kann er Dein Password des Email Account ändern und Dich so aussperren und alle Emailadressen Deiner Freunde kopieren.

Die Zugangsdaten sind ebenso Schützenswerte Daten wie Deine "Hochsicherheitstexte".

Grüße Uwe

Ok, da geb ich dir durchaus Recht. Aber das kann auch nur passieren, wenn Emails vorrätig und nicht gelöscht sind.
Einen Login müsste man dann über ein Challenge-Response-Verfahren mit dem Arduinoboard weiter absichern. :smiley:

Das Problem ist, daß die Logindaten im Browser im Klartext vorhanden sind und unverschlüsselt versendet werden. Da ist es dann egal wie sicher die Verbindung Tastatur-Windows ist.
grüße Uwe

Wenn der Server eine Zufallszeichenfolge ausgibt, die der Nutzer dann auf seinem Keyboard eingibt und mittels eines hinterlegten privaten Schlüssels, der nur für die Authentifizierung dient, signiert und das über den USB Port als Tastatureingaben im Browserfeld an den Server zurückschickt, kann der Server die Authentizität des Nutzers mittels Hinterlegtem public Key überprüfen.
Ein MITM wäre möglich im Zeitfenster des Logins, um das zu verhindern, müsste der Server sich auch noch authentifizieren.

Aber ich sehe schon, das ganz nimmt Ausmaße an, die sich nach Paranoiditätsgrad beliebig steigern lassen. :slight_smile:

Info:
Einen Keylogger kaufen ist kleiner und wahrscheinlich auch günstiger!

Ich verstehe sonst denn Sinn nicht ganz und stimme Uwe zu.

Ich denke kaum, dass der Arduino genug Rechenleistung hat für die üblichen Verschlüsselungen (PGP o.ä.).

mrueg:
Danke euch schon mal für die Antworten.

Ah mist, dass USB ja eine Master/Slave Architektur hat, habe ich verzockt. Schade, dass sich Firewire nicht durchgesetzt hat. :wink:

1394 war doch von Beginn an rein auf Speicher- und Datenstromanbindung ausgelegt). Für Peripherie wie Eingabegeräte war das meines Wissens nie geplant.

Mit dem Arduino Leonardo könnte ich quasi einen USB-Host komplett nachbilden, dort die USB Tastatur als USB-Device anschließen und würde dann per USB-Seriell-Adapter, den ich aufstecke, den Rechner ansteuern, richtig?

Falsch, auch der Leonardo hat keinen Hostcontroller. Den habe ich nur erwähnt, weil man einen USB-UART-Wandler selten als HID nutzen kann. Ein UNO mit umprogrammiertem Mega8u2 würde es vielleicht auch tun. Zum Betreiben der Tastatur empfehle ich wie gesagt PS/2, das kann man relativ brauchbar in Software realisieren. Der Mega ADK und ein paar Shields haben zwar nen Hostcontroller, aber ich denke dass der NUtzen bei einer USB-Tastatur nicht wirklich über dem erhöhten Hardwareaufwand liegt.

Wenn ich mich richtig informiert habe, soll das Leonardo-Board noch dieses Jahr erscheinen, richtig?

Hoffentlich. Die Arduino 1.0-Spezifikation ist meines Wissens auf einen Release gegen Ende des Monats angesetzt, für die Boards gibt es meine ich (außer dass der Due erst nächstes Jahr kommt) keine konkreten Daten.

Ein Usecase wäre z.B.

Ich möchte eine Mail schreiben und habe keinen Rechner bei. Ein Freund bietet mir seinen virenverseuchten Windowsrechner an. Ich packe also das Board zwischen Keyboard und Rechner. Nun gebe ich den Empfänger ein und habe zufällig seinen Public-Key auf meiner Speicherkarte dabei. Jetzt wird die Verschlüsselung mittels Schalter/Button/Hotkey aktiviert und ich wähle das passende Schlüsselmaterial von der SD Karte aus. Jetzt gebe ich den Body der Email ein und kann per LCD überprüfen ob der Text korrekt ist. Auf dem Bildschirm des eigentlichen PCs erscheint nur der Kryptotext. Der Empfänger der EMail kann das ganze dann wie gewohnt per GPG entschlüsseln.

Joa der Bundestrojaner sollte wohl im Idealfall keine Chance haben. ;D

Wie schon von anderen erwähnt, da gibt es genug andere Gründe um besorgt zu sein, als dass ein Keylogger den Text der Mail mitkriegt.

Wie ebenfalls von anderen erwähnt, ist es auch wahrscheinlich, dass Kryptographie, die aktuellen Sicherheitsstandards entspricht, den Mikrocontroller überfordern könnte.