Hallo miteinander,
Ich nutze einen ATXMEGA256A3 mit dem AES128 treiber - als AppNote
AVR1318 verfügbar - um die interne AES128 Hardware Crypto Engine für
Ver- & Entschlüsselung anzusteuern.
Die Verschlüsselung (Encryption) funktioniert tadellos, jedoch musste
ich heute nach langer Suche feststellen, dass die *Entschlüsselung
(Decryption) fehlerhaft* ist.
Ich habe das Resultat mit drei anderen Quellen
(http://www.riscure.com/tech-corner/online-crypto-tools/aes.html,
http://www.unsw.adfa.edu.au/~lpb/src/AEScalc/AEScalc.html, CryptoPP -
Win32 Crypto Lib) überprüft und alle kommen auf dasselbe Resultat, was
aber von demjenigen des AVRs abweicht.
*Nun meine Frage(n)*:
Hat jemand schon die selbe Erfahrung gemacht?
Ist bekannt, dass die AVR1318 fehlerhaft ist?
Oder könnte das womöglich ein hardwaremässiger Fehler im Chip sein? (Ich
denke nicht, denn im Errata ist nichts vermerkt! Btw: Ich nutze Chip
Rev. B)
Ich habe parallel schon bei Atmel um Support angefordert, ich möchte
hier nur die Möglichkeit nutzen um eventuell Erfahrungsaustausch mit
anderen Nutzern zu haben, die vielleicht auch gerade einen guten
Workaround empfehlen können.
Danke für eure Hilfe!
Grüsse
Fabian
Hallo Läubi,
So direkt hab ich's ehrlich gesagt noch nicht versucht, ich habe nur
meine Resultate der En- & Decryption mit denjenigen der Online Tools und
der CryptoPP Library verglichen.
Aber ich würde mal schwer sagen nein, denn wenn die Encryption stimmt
aber die Decryption nicht dann kann's ja nicht funktionieren?!?
Grundsätzlich geht es um eine Portierung einer RFID (Mifare) lib vom
Win32 auf AVR, wobei ich den Crypto Wrapper portieren bzw. umschreiben
musste.
Wie gesagt die Verschlüsselung funktioniert tadellos (verglichen mit den
anderen Tools), die Entschlüsselung aber nicht.
Trotzdem machst du mich jetzt aber doch ein wenig stutzig...Vielleicht
wäre es ja möglich, dass die AES Engine - je nach Implementation - nicht
eindeutige Resultate liefert. Könnte das sein?
Jedoch denke ich wiederum wird dies nicht der Fehler sein, denn dann
würde dei der Encryption auch ein anderes Resultat herauskommen.
Folgender Test hab ich gemacht (siehe Code und Konsolenausgabe unten!).
Hab's auch mit anderen (nicht symmetrischen und homogenen) Keys und
Messages probiert, überall der selbe Fehler: Encryption stimmt
Decryption ist falsch!
Gruess
Fabian
Tja, wieder einmal ein Thread wegen einem Flüchtigkeitsfehler. :-/
1. RTFE (Read the F*** Example :-P)
2. die Decyption nutzt ein sog. Subkey und nicht den effektiven Key
selbst: AES_lastsubkey_generate(sKey, lastsubkey);
AES_decrypt(sMsg,sOut, lastsubkey);
Das sollte das Problem ziemlich sicher lösen. Werd's am Montag sofort
ausprobieren....
und last but not least wär's sinnvoll das AES modul zu resetten vor der
Nutzung: AES_software_reset();
Schönes Wochenede allerseits!
Fabian