wolfSSL の新しい tinytls13 プロファイルと、条件をそろえた Mbed TLS のコードサイズを、Cortex-M33、x86_64、aarch64 で計測しました。
wolfSSL と Mbed TLS はいずれも組み込み向けの小さな TLS を目指していますが、同等のオプションで設定してビルドすると、サイズは同じにはなりません。新しい tinytls13 プロファイルは TLS 1.3 だけをビルドする構成で、それ以外をすべて取り除き、PSK と ECDHE のみの最小構成をデフォルトとしています。これにより、完全な TLS 1.3 PSK クライアントを Cortex-M33 上で 30.8 KB に収めました。これは最小化を徹底した Mbed TLS より 44% 小さい数値です。今回計測したプラットフォームと構成のすべてで、wolfSSL の方が小さくなりました。
計測結果

命令セットの密度は Thumb-2 が最も高く、aarch64 がその中間で、x86_64 ではコードサイズが最も大きくなりますが、wolfSSL 側の相対的な優位性は 3 つのプラットフォームすべてで維持されます。Cortex-M33 での 4 つの構成の結果は次のとおりです。
| 構成 | wolfSSL(バイト) | Mbed TLS(バイト) | サイズ差 |
|---|---|---|---|
| PSK X25519 | 30,836 | 55,544 | −44% |
| PSK P-256 | 37,347 | 55,544 | −33% |
| 証明書(ECDSA P-256) | 62,765 | 69,348 | −9% |
| mTLS | 66,554 | 70,116 | −5% |
最小構成に含まれない機能は、必要なものだけを追加できます。システムの malloc に依存しない静的メモリプールを使う場合は 31.4 KB、X25519 の代わりに P-256 を使う場合は 36.5 KB、ML-DSA-44 による耐量子暗号の署名検証を加えた場合は、あわせて必要になる SHA-3/SHAKE を含めて 42.8 KB に収まります。
最小構成で差が大きい理由
44% の差の大部分は、1 つの依存関係で説明できます。Mbed TLS の TLS 1.3 は mbedtls_x509_crt がないとビルドがエラーになるため、MBEDTLS_X509_CRT_PARSE_C は有効にしておく必要があります。つまり Mbed TLS では、証明書を一度も扱わない PSK のみのハンドシェイクであっても、自身の X.509 処理コードを含めずに TLS 1.3 クライアントをビルドすることはできません。tinytls13 にはこの依存関係がないため、X.509 を完全にコンパイル対象から外しています。どちらのライブラリも証明書を扱うことを前提とした構成にすると、差は 4%〜9% の範囲に縮まります。
コードサイズの内訳

暗号処理は 約 12 KB(全体の 32%)にすぎません。ハンドシェイク、拡張、レコード層、鍵スケジュールを含む TLS 1.3 プロトコル部分が 約 18 KB(同 49%)を占めます。フットプリントの大半は、暗号演算ではなくプロトコルです。
計測方法
- 同じ処理、同じフラグ。どちらのライブラリも
-Os -flto -ffunction-sections -fdata-sectionsと-Wl,--gc-sectionsを付けてソースからビルドし、wolfSSL_connectとmbedtls_ssl_handshakeを実行して比較しました - Mbed TLS 側も十分に最適化。
baremetal_sizeプリセット、PSA_WANT_*を最小限にした設定、AES のテーブル縮小オプションを適用し、SHA-256 のみという wolfSSL 側の最小構成に合わせて SHA-384 を無効にしました - サイズはリンク後のバイナリから取得。フラッシュは text と data の合計で、内訳は
nmが出力するシンボル単位のサイズを集計したもので、全体の 96% を分類できています
クイックスタート
最小構成の wolfSSL TLS 1.3 クライアントは、フラグ 1 つでビルドできます。
./configure --enable-tinytls13
make
すべての構成を CI 上でビルドし、TLS13-AES128-GCM-SHA256 で実際にハンドシェイクを行う make check まで通しています。各数値の正確なビルド手順は、ホワイトペーパーに記載しています。
※2026 年 6 月の計測:wolfSSL v5.9.x(tinytls13)と Mbed TLS 3.6.x を、いずれもソースからビルドしています。Cortex-M33 と aarch64 は GCC 14.2、x86_64 は clang を使用しました。
今すぐ wolfSSL をダウンロード
もし弊社製品についてご質問があれば、お問い合わせ窓口info@wolfssl.jpまでご連絡をお願い致します。
原文:https://www.wolfssl.com/tls-1-3-in-30-8-kb-wolfssl-vs-mbedtls/