Forum: Mikrocontroller und Digitale Elektronik AES und ECC Ver-/Entschlüsselung (o. Ä.) auf AVR (o. Ä.). Realisierbar?


von Tuxpilot (Gast)


Lesenswert?

Hi!

Ich möchte gerne eine kleine Tastatur bauen, die aus zwei (oder mehr) 
Hälften besteht, die über ein einfaches Kabel verbunden sind (UART). 
Irgendwo ist dann ein USB-Adapter, der mein UART nach USB-HID übersetzt.

Damit nicht jede Passworteingabe über das UART (oder später Funk) an 
jeden Blödmann abgestahlt wird, möchte ich die Daten, die von der 
Tastaturhälfte gesendet werden, mit AES verschlüsseln.

(Dabei soll etwa alle 10ms gesendet werden, welche Tasten 
zwischenzeitlich gedrückt wurden (evtl. gar keine), und wie der 
Trackpoint bewegt wurde. 128 Bit (ein AES-Block) reichen dafür locker, 
sogar inkl. CRC und 32 Bit Zufall, um EBC statt CBC benutzen zu können.)

Der Schlüssel soll im EEPROM gespeichert werden (mit Lockbits), oder 
(wenn noch nicht ausgetauscht) beim Einschalten über ECC ausgetauscht 
werden. Also: Der Empfänger generiert ein Schlüsselpaar, sendet den 
öffentlichen Schlüssel, und der Sender verschlüsselt damit einen 
zufälligen AES-Schlüssel. (In die andere Richtung sollte keine 
Verschlüsselung nötig sein. Andernfalls: Diffie-Hellman.)

Meine Probleme bis jetzt sind:
Ich habe einige Berichte über AES- und ECC-Implementierungen auf Atmega 
gefunden (jeweils locker schnell genug), jedoch finde ich nirgendwo den 
Quelltext.

Kennt jemand die Bezugsquelle für solchen Quelltext (AES und ECC inkl. 
Schlüsselerzeugung, und Ver-/Entschlüsselung eines anderen Schlüssels)? 
Selbst nachprogrammieren möchte ich das lieber nicht.

Ich brauche auch nicht unbedingt den AVR; ein anderer Controller, den 
Privatpersonen günstig programmieren können, wäre auch in Ordnung. Ein 
anderer Ansatz (als AES und ECC) wäre auch in Ordnung.

Gruß, Tuxpilot


P. S.:
1. Wo ich etwas wie einen Trackpoint (Mini-Joystick) herkriege, ist eine 
andere Frage.
2. Das UART-Kabel dient dazu, die Tastaturhälften trennen zu können, 
insbesondere um auch nur eine einzelne Hälfte benutzen zu können.

von Wolfgang (Gast)


Lesenswert?

Tuxpilot schrieb:
> Kennt jemand die Bezugsquelle für solchen Quelltext (AES und ECC inkl.
> Schlüsselerzeugung, und Ver-/Entschlüsselung eines anderen Schlüssels)?

Wenn du das Wort "Arduino" nicht scheust, suche doch einfach mal nach 
"Ardino AES"

von MaRe (Gast)


Lesenswert?

Hier wurde schon so was umgesetzt:
https://wiki.das-labor.org/w/AVR-Crypto-Lib

Vielleicht ist da was für dich dabei.

von Tuxpilot (Gast)


Lesenswert?

> Wenn du das Wort "Arduino" nicht scheust, suche doch einfach mal nach
> "Ardino AES"
Wow, Arduino ist ein tolles Wort, da kommt Code bei raus!

Ok, habe das hier gefunden:
https://github.com/DavyLandman/AESLib

Dann werde ich morgen mal schauen, wieweit man Arduino-Quelltext für 
normales avr-gcc benutzen kann.

Das scheint soweit der Code von 
https://wiki.das-labor.org/w/AVR-Crypto-Lib
 zu sein. Das hatte ich zwar schon gefunden, aber der Link zum 
Repository funktioniert nicht mehr.

Mit Arduino findet man auch was zu RSA und ECC, zum Beispiel 
https://github.com/kmackay/micro-ecc , da steht nur nichts zur 
Geschwindigkeit. (Ist dort aber nicht so kritisch.)

> Der Empfänger generiert ein Schlüsselpaar, sendet den
> öffentlichen Schlüssel, und der Sender verschlüsselt damit einen
> zufälligen AES-Schlüssel. (In die andere Richtung sollte keine
> Verschlüsselung nötig sein. Andernfalls: Diffie-Hellman.)
Ok, das war jetzt missverständlich. Die Tastaturhälfte soll Daten 
schicken, die nur mein eigener USB-Adapter versteht. Wenn jemand anderes 
etwas an meinen USB-Adapter anschließt: Nicht schlimm, er könnte auch 
gleich eine ganze USB-Tastatur anschließen um mich zu ärgern. Er soll 
nur nicht meine Passworteingabe mitlesen können.

Wenn Diffie-Hellman sinnvoller / leichter zu finden ist, nehme ich das 
natürlich.

von Wolfgang (Gast)


Lesenswert?

Tuxpilot schrieb:
> Dann werde ich morgen mal schauen, wieweit man Arduino-Quelltext für
> normales avr-gcc benutzen kann.

Arduino benutzt den gcc Compiler, also keine Sorgen.

von Kaj (Gast)


Lesenswert?

Tuxpilot schrieb:
> Damit nicht jede Passworteingabe über das UART (oder später Funk) an
> jeden Blödmann abgestahlt wird, möchte ich die Daten, die von der
> Tastaturhälfte gesendet werden, mit AES verschlüsseln.
Nur so ein Gedanke:
Nimm einen uC wie den Atmel SAM-R21, der hat die Funkhardware gleich mit 
drin, und kann AES in Hardware. Keine notwendigkeit da Code zu 
schreiben.

Gibt es auch gleich als Board (fuer die ersten Versuche):
http://www.microchip.com/developmenttools/productdetails.aspx?partno=atsamr21-xpro

Debugger ist on Board. Nur noch passende Antenne ran und los gehts.

von Kaj (Gast)


Lesenswert?

Und USB kann der auch. Also auch kein USB-UART Wandler noetig.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.