NXP JN516X (TWELITE) をプログラミングする(AES)

なぜか暗号化機能(AES)があることをを失念していたので今更ながらライブラリを作ってみた。(笑)

AESMODE_CCM_32なら8バイトというように暗号化モードによりチェックサムの長さが決まる。チェックサムは受側で認証のために利用される。復号化のさいチェックサムを省略すると復号化のみ行い認証はしないのでfalseが返される。

リプレイ攻撃などを防ぐためにnonceにはランダム値やカウンター値など毎回違う値を指定するのが良いらしい。暗号化キーは何らかの方法で共有する必要があるが受側はnonce値も知らないと復号化できないのでnonceに加えて認証データやチェックサムも何らかの方法で受側と共有できるようにする必要がある。

なお、認証データや暗号化データ及びチェックサムについてはワードアライン(4バイト境界)されたアドレスが必要なことに注意を要する。普通に変数宣言した場合は問題はないがパッキングされた構造体のメンバーアドレスを指定する場合には注意が必要だ。

必要ないとは思うが、もし、構造体以外でアライン問題が発生した場合にはその変数宣言の最後にWORD_ALIGN属性を追加すればOKだ。

#define WORD_ALIGN __attribute__((aligned(4)))

なお、認証が必要なく暗号化のみ利用したい場合は、次のように第二引数までを指定すれば良い。

AES::begin(AES::AESMODE_CCM_0, key, keylen);
AES::encryption(data, datalen);
AES::decryption(data, datalen);

【サンプル】

【ライブラリ】

【関連投稿】
NXP JN516X (TWELITE) をプログラミングする(開発環境の構築)
NXP JN516X (TWELITE) をプログラミングする(メイン・ルーチン)
NXP JN516X (TWELITE) をプログラミングする(TICKTIMER)
NXP JN516X (TWELITE) をプログラミングする(UART)
NXP JN516X (TWELITE) をプログラミングする(SYSTEM)
NXP JN516X (TWELITE) をプログラミングする(GPIO)
NXP JN516X (TWELITE) をプログラミングする(TIMER)
NXP JN516X (TWELITE) をプログラミングする(ALARM)
NXP JN516X (TWELITE) をプログラミングする(WAKETIMER)
NXP JN516X (TWELITE) をプログラミングする(WATCHDOG)
NXP JN516X (TWELITE) をプログラミングする(I2C)
NXP JN516X (TWELITE) をプログラミングする(SPI)
NXP JN516X (TWELITE) をプログラミングする(ADC)
NXP JN516X (TWELITE) をプログラミングする(COMPARATOR)
NXP JN516X (TWELITE) をプログラミングする(CLOCK)
NXP JN516X (TWELITE) をプログラミングする(BROWNOUT)
NXP JN516X (TWELITE) をプログラミングする(PULSCOUNTER)
NXP JN516X (TWELITE) をプログラミングする(INFRARED)
NXP JN516X (TWELITE) をプログラミングする(RANDOM-GENERATOR)
NXP JN516X (TWELITE) をプログラミングする(FLASH)
NXP JN516X (TWELITE) をプログラミングする(EEPROM)
NXP JN516X (TWELITE) をプログラミングする(WPAN)
NXP JN516X (TWELITE) をプログラミングする(Eclipse-CDT+MWSTAGE)
NXP JN516X (TWELITE) をプログラミングする(乗算と除算)
NXP JN516X (TWELITE) をプログラミングする(マルチタスク)
NXP JN516X (TWELITE) をプログラミングする(フラッシュ・プログラマー)
NXP JN516X (TWELITE) をプログラミングする(OTA UPDATE)
NXP JN516X (TWELITE) をプログラミングする(TWELITE CUE/MC3630)
NXP JN516X (TWELITE) をプログラミングする(LED)
NXP JN516X (TWELITE) をプログラミングする(AES)
NXP JN516X (TWELITE) をプログラミングする(Downloads)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください