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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tuxpilot (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Und USB kann der auch. Also auch kein USB-UART Wandler noetig.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.