TPM 2.0 ライブラリ比較(コードサイズとメモリ使用量)

皆さんからwolfTPMポータブルライブラリのサイズとメモリ使用量について、よく問い合わせをお受けします。この記事ではwolfTPMと他の著名なTPM2.0ライブラリであるIBM製の”ibmtss2″とインテル社のコードがベースとなっている”tpm2-tss”との比較を紹介します。

wolfTPMは、組み込み機器やリソース制限のある環境向けに最適となるようにスクラッチから記述しています。その為、フットプリントは小さいながらも要望簿高い機能を提供することができています。

このブログの執筆時における各TPM2.0ライブラリのバージョンは次の通りです:

  • wolfTMP メジャーバージョン 2.0.0
  • ibmtss2 バージョン 1.5.0
  • tss2-tpm バージョン 3.0.3

テスト環境はx86_64 マシン上でUbuntu 20.04.01 LTSを動作させ、gcc コンパイラバージョン9.0.3(公式Ubuntu

9.3.0-17ubuntu1~20.04 package)を使用しています。

各モジュールのメモリフットプリントを示します(GNU Size toolを使って計測):

 ibmtss keygenTpm2-tss keygenwolfTPM keygen
Code(text)26586492730620119980
Memory(data)1861201767361040
bss1861203388824
Total(dec)28799052941244121044

比較結果

3ライブラリの比較結果として以下が明らかになりました。

  1. wolfTPMはRAM使用量は最小
  2. wolfTPMはビルドしたコードサイズも最小
  3. wolfTPMはヒープを使わない
  4. wolfTPMは外部依存しない

 

なお、各ライブラリの生成は以下の条件で行いました:

tpm2-tss


./configure –enable-shared=no –enable-nodl –disable-fapi -disable-tcti-mssim -disable-tcti-swtpm

これらのオプションは以下を意味しています。

  • シェアードライブラリビルドを抑制(スタティックリンクライブラリを生成)
  • 動的ライブラリローディングを抑制
  • feature apiの使用を抑制
  • Microsoft TPM シミュレーターの使用を抑制
  • IBM TPM シミュレーターの使用を抑制

tpm2-tss のテストアプリケーション: https://github.com/tomoveu/tpm2-tss/tree/size-9

Ibmtss


./configure –disable-tpm-1.2 –disable-rmtpm –disable-shared

これらのオプションは以下を意味しています。

  • 旧仕様のTPM1.2のサポートを抑制
  • リソースマネジャのサポートを抑制
  • シェアードライブラリビルドを抑制(スタティックリンクライブラリを生成)

ibmtssのテストアプリケーション:https://github.com/tomoveu/ibmtss/tree/ibm-size-3

wolfTPM


./configure –enable-devtpm –enable-wolfcrypt –disable-shared

これらのオプションは以下を意味しています。

  • Linuxにおける/dev/tpmX インターフェイスを有効化
  • パラメータ暗号化の為にwolfCryptを有効化
  • シェアードライブラリビルドを抑制(スタティックリンクライブラリを生成)

wolfTPMのテストアプリケーション:https://github.com/tomoveu/wolfTPM/tree/size-6

 

ご質問は、info@wolfssl.jpまでお問い合わせください。テクニカルサポートについては、support@wolfssl.comにお問い合わせください。

原文:https://www.wolfssl.com/tpm-2-0-library-comparison/