組み込み向けwolfSSL SSL/TLSライブラリはRenesas Trusted Secure IP Driver(TSIP)をサポートし、Renesas RX65N プラットフォーム上でのテストを行っています。TSIPドライバーを使うことにより、wolfSSLが担っていた暗号化処理とTLS処理の一部をハードウエア処理に任せることができるのでパフォーマンス向上が図れます。
サポートするTSIPの機能
wolfSSLは下記のTSIP機能を統合しています:
- TSIPドライバーのopen/close
- 乱数発生機能(SP 800-22でテスト)
- SHA-1とSHA2565ハッシュ機能
- AES-128-CBCとAES-256-CBCアルゴリズムでの暗号/復号化処理
- 以下のTLS機能:
- Root CA証明書の検証機能
- 中間証明書を含むクライアントおよびサーバー証明書の検証機能
- TLS暗号化スイート(4種類):
- TLS_RSA_WITH_AES_128_CBC_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA256
- TLS_RSA_WITH_AES_256_CBC_SHA
- TLS_RSA_WITH_AES_256_CBC_SHA256
使用しているTSIPドライバー関数一覧
機能 | TSIP API |
---|---|
TSIP driver open/close | R_TSIP_Open R_TSIP_Close |
Random Number Generation | R_TSIP_GenerateRandomNumber |
SHA-1 and SHA-256 | R_TSIP_Sha1/256Init R_TSIP_Sha1/256Update R_TSIP_Sha1/256Final |
AES-128-CBC and AES-256-CBC | R_TSIP_Aes128/256CbcEncryptInit R_TSIP_Aes128/256CbcEncryptUpdate R_TSIP_Aes128/256CbcEncryptFinal R_TSIP_Aes128/256CbcDecryptInit R_TSIP_Aes128/256CbcDecryptUpdate R_TSIP_Aes128/256CbcDecryptFinal |
Root CA Verification | R_TSIP_GenerateTlsRsaPublicKeyIndex R_TSIP_TlsRootCertificateVerification |
Client or Server Certificate Verification | R_TSIP_TlsCertificateVerification |
TLS cipher suite support including AES-128-CBC, AES-256-CBC | R_TSIP_TlsGeneratePreMasterSecret R_TSIP_TlsEncryptPreMasterSecret R_TSIP_TlsGenerateMasterSecret R_TSIP_TlsGenerateSessionKey R_TSIP_TlsGenerateVerifyData R_TSIP_Sha1/256HmacVerifyInit R_TSIP_Sha1/256HmacVerifyUpdate R_TSIP_Sha1HmacVerifyFinal |
(注)Renesas TSIPドライバーはwolfSSLダウンロードパッケージには含まれていませんので、Renesas社から別途入手が必要です。
wolfSSLをビルドしてRX65N上でTSIPサポートを有効にする
Renesas RX65NとTSIPドライバーを有効にする為には以下の2つの定義が必要です:
WOLFSSL_RENESAS_TSIP – Renesas TSIPドライバー利用を有効にします
WOLFSSL_RENESAS_RX65N – Renesas RX65Nのサポートを有効にします
wolfSSL ベンチマーク
下記のベンチマーク結果は暗号化機能がTSIPドライバーを利用した際のパフォーマンス向上を示すものです。
アルゴリズ | ソフトウエア暗号化 | TSIP(H/W)暗号化 |
---|---|---|
RNG | 231.160 KB/s | 1.423 MB/s |
SHA | 1.239 MB/s | 22.254 MB/s |
SHA-256 | 515.565 KB/s | 25.217 MB/s |
暗号化スイート | ソフトウエア暗号化 (sec) | TSIP(H/W)暗号化 (sec) |
---|---|---|
TLS_RSA_WITH_AES_128_CBC_SHA | 0.381 | 0.028 |
TLS_RSA_WITH_AES_128_CBC_SHA256 | 0.383 | 0.028 |
TLS_RSA_WITH_AES_256_CBC_SHA | 0.382 | 0.030 |
TLS_RSA_WITH_AES_256_CBC_SHA256 | 0.385 | 0.029 |
我々のテストによりTSIPドライバーを使ったH/W暗号化は処理速度を平均2334%向上させ、結果として処理時間を92%短縮させることを示しています。
wolfSSLによるTSIPサポートの制限
wolfSSLがRenesas TSIPドライバーを使用するにあたり下記の制限があります:
- TSIPドライバーが提供するTLS機能は次の暗号化スイートを使用する場合に限り利用可能です:
- TLS_RSA_WITH_AES_128_CBC_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA256
- TLS_RSA_WITH_AES_256_CBC_SHA
- TLS_RSA_WITH_AES_256_CBC_SHA256
- TSIPドライバーが提供するTLS機能は「TLSマスターシークレット」の生成をサポートしていますが、「TLS拡張マスターシークレット」の生成はサポートしていません。TLS拡張マスターシークレットが利用される場合には、TSIPのTLS機能は利用できません。
- TSIPドライバーが提供する証明書検証機能は証明書が”RSA 2048 PSS with SHA-256″で署名されている場合にのみ利用できます。
- TSIPドライバーが提供するTLS機能と暗号化機能はクライアントとして動作する場合にのみ利用可能です。サーバーとしての動作は現時点でTSIPドライバーではサポートされていません。
- TSIPドライバーは実行時には単一のRoot CA証明書(RSA-2048-PSSーSHA256で署名されたもの)に限り利用可能です。異なるroot CA証明書を使ってTLS機能を利用する場合には、アプリケーションはwolfCrypt_Init()関数を呼び出してTSIPドライバーをリセットした後にTSIPドライバーに、tsip_inform_cert_sign()関数とtsip_inform_user_keys()関数を使って署名、鍵等を設定する必要があります。
参考資料
・TSIP (Trusted Secure IP) Module Firmware Integration Technology APPLICATION NOTE Rev. 1.06
・ルネサス社のTrusted Secure IPドライバのページ
・wolfSSL: ルネサスサポート
原文: https://www.wolfssl.com/renesas-tsip-support/
ご質問は、info@wolfssl.jpまでお問い合わせください。テクニカルサポートについては、support@wolfssl.comにお問い合わせください。