皆さんから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 keygen | Tpm2-tss keygen | wolfTPM keygen | |
---|---|---|---|
Code(text) | 2658649 | 2730620 | 119980 |
Memory(data) | 186120 | 176736 | 1040 |
bss | 186120 | 33888 | 24 |
Total(dec) | 2879905 | 2941244 | 121044 |
比較結果
3ライブラリの比較結果として以下が明らかになりました。
- wolfTPMはRAM使用量は最小
- wolfTPMはビルドしたコードサイズも最小
- wolfTPMはヒープを使わない
- 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にお問い合わせください。