サイト内検索



 

IoT分野では、セキュリティの観点から、或いはプライバシーの観点から、暗号化に対する関心が高まってきています。
そんな中Silicon Labs社から発売されたEFM32PG/JGには、暗号化ハードウェアが搭載されており、ECDSAのサンプルコードを試してみたところ、処理時間の大幅な短縮を実感できる結果になりました。(前回の記事はこちら)

今回はAESのサンプルコードを使用してハードウェア化の効果を見ていきたいと思います。

AES搭載って珍しい?

AESアクセラレータを搭載したマイコンって、結構ありますよね。対応したマイコンを各社リリースしていますし、Silicon Labs社のEFM32ファミリも従来から搭載しています。
ただAESと一口に言っても、鍵長や暗号利用モード(BlockCipher modes of operation)に色々と種類があります。EFM32PG/JGのように多くのコンフィギュレーションに対応した製品は、なかなかないかもしれないですね。

サンプルコードを試してみる(暗号化)

では、さっそくサンプルコード(SLSTK3401A_aescrypt)を試してみたいと思います。まずは暗号化ハードウェア有効から。
前回の記事で取り上げたECDSAのサンプルコードと作業手順は同じで、EFM32PGにバイナリをダウンロードすると、Tera Term上にメッセージが。

Article header 4 1  1


「エンクリプト(暗号化)しますか?デクリプト(復号)しますか?」とのことですので、エンクリプトの“e”を入力。すると次のメッセージ。対話しながら進めていくサンプルコードのようです。

Article header 4 2  1


「暗号化のイニシャルベクタ生成に使うから、何か短いフレーズを入力して」とのことなので、macnicaと入力してみます。

Article header 4 3  1


次のメッセージは「暗号化したい文字列を入力して、終わったら<Enter>を押して」とのこと。「HelloNew World !!」と入力してリターン!瞬時にエンクリプトの結果(D69E3…)が表示されました。

Article header 4 4  1


これで終了のようです。暗号化の処理に要した時間(クロック数など)が表示されていないですが、ソフト処理にすれば、明らかに差が判るほどの時間差があるのでしょうか。楽しみは置いておいて、復号を行ってみます。

サンプルコードを試してみる(復号)

復号するには暗号化の結果が必要になりますので、先ほどの結果をコピーしておきます。

Article header 4 5  1


それから基板をリセット!暗号化 or 復号の選択では、今度はデクリプト(復号)を選んで先に進みます。

次のメッセージは、いよいよ「復号したいメッセージ(暗号文)を送って」とのこと。先ほどコピーしておいた暗号結果を貼り付けます。

Article header 4 6  1


そしてリターン。無事に、HelloNew World !!という文字列が複合できました。この処理時間も一瞬でした。

Article header 4 7  1

ソフト処理設定だとどうか?

さて、次はソフト処理です。前回の記事と同様にコンパイルオプションにおまじない
(-DNO_CRYPTO_ACCELERATION)を施して比較してみました。

  エンクリプト時間 デクリプト時間
ハード処理 0.5秒 0.4秒
ソフト処理 2.3秒 2.1秒

結果については、ご意見分かれるところだと思います。暗号化・復号処理を行ってから、ターミナルソフト上に結果が表示されるまでの間にUSB-UART変換を行っていますので、生じた時間差がハード/ソフトの差、とまでは言い切れないかもしれないですね。処理時間の差を見るには、クロック数をカウントするようにサンプルコードを修正した方が良いかもしれません。

 

サイクル数の比較

他に適当なサンプルコードがないか探してみたところ、アプリケーションノートAN0955「CRYPTO」にAESのサンプルコードが含まれていました。しかも、暗号化・復号に要したクロックサイクル数をLCDに表示する、というものです。

Article header 4 8  3

128バイトのデータを暗号化・復号した場合のクロックサイクル数は、下表の通りでした。AESは鍵長256ビット、CBC(Cipher Block Chaining)モードを使用しています。このサンプルコードでは、データサイズを64バイトや256バイトに変えて試すことができますので、スターターキットをお持ちの方はぜひ試してみてください。

  ソフト処理(暗号化ハードウェア無効) ハード処理(暗号化ハードウェア有効)
暗号化 89182 clock 6267 clock
復号 50962 clock 7396 clock

最後に

IoTが普及していく上で、重要な課題の1つがセキュリティと言われています。

機器がゲートウェイを介してクラウドに繋がるといったモデルで考えた場合、インターネットやクラウドのセキュリティについては色々とサービスが充実してきています。しかし、IoT機器そのものにおけるセキュリティや、或いはIoT機器内のチップ間通信におけるセキュリティについては、チップ性能に依存する側面も強く、課題も多いのではないでしょうか。

EFM32PG/JGファミリは、様々な暗号をハードウェア処理することができる、時代を先取りしたような製品です。今後の製品設計を考える上で、ユーザに選択肢を与えてくれる貴重な存在となりそうです。


EFM32シリーズマイコンが気になった方はこちらもご覧ください

関連記事