私はこの質問が少し古いことを知っていますが、PIC16と8051にAES128を実装しているので、最近自分で調査しなければならなかったので、この質問にも興味がありました。
私はこのようなものを使用しました:http : //cs.ucsb.edu/~koc/cs178/projects/JT/aes.c
と私のRAMの使用量は数百バイトであり、バイナリサイズは3kb ROM未満です。
私の最善のアドバイスは、Wikipediaページhttp://en.wikipedia.org/wiki/Block_cipher_modes_of_operationを読んで
、さまざまなモード、たとえばOFBモードでのAESが基本的な構成要素としてECBモードを利用する方法を理解することです。また、(OFBモードの)XORにより対称操作になるため、暗号化/復号化は同じ機能であり、スペースも節約できます。
AESが実際にどのように機能するかを理解したら、Cで実装し、NIST仕様に対してテストします**(これを行う!オンラインで見つかった多くのコードに欠陥があります)。
このカスタマイズと最適化を行うことで、他のRFファームウェアと一緒に8051にAES128を取り付けることができました。(システム全体の)RAM使用量は〜2.5kbから2kb未満に低下しました。つまり、4kb SRAMを備えた8051にアップグレードする必要はありませんでしたが、安価な2kb SRAMバージョンを使用し続けることができました。
**テストベクトルは、付録Fのhttp://csrc.nist.gov/publications/nistpubs/800-38a/addendum-to-nist_sp800-38A.pdfにあります。
編集:
最後にGithubでコードを入手しました:https : //github.com/kokke/tiny-AES-c
サイズを少し最適化しました。ARM用にコンパイルされた場合のGCCサイズ出力:
$ arm-none-eabi-gcc -O2 -c aes.c -o aes.o
$ size aes.o
text data bss dec hex filename
1024 0 204 1228 4cc aes.o
そのため、リソース使用量は1KBコード、204バイトRAMになりました。
PIC用のビルド方法は覚えていませんが、8ビットAVR Atmel Mega16がPICのようなものである場合、リソースの使用量は次のとおりです。
$ avr-gcc -Wall -Wextra -mmcu=atmega16 -O2 -c aes.c -o aes.o
$ avr-size aes.o
text data bss dec hex filename
1553 0 198 1751 6d7 aes.o
1.5Kコードと198バイトのRAM。