ウェビナー『TLSとwolfSSLの2日間集中トレーニング』5/30(火)〜31(水)。第五回:ヒープメモリーを深堀りしてみる2020-06-22組込みデバイスの設計で気になるのは処理スピードだけではありません。メモリー容量についても以前よりは制約は緩くなってきたとはいえ、多くの場合できるかぎりの節減がもとめられるのが実情で、特にRAMエリアの容量には注意が求められるケースが多いかと思います。wolfSSLの場合、設計ポリシーとして静的に確保されるデータエリアは最小限となるよう設計されていますので、今回は、必要の都度確保されるヒープ領域について、その挙動、サイズについて見ていくことにします。TLSの通信をヒープエリア利用の観点からみると、次のようなステップを踏むことになります。かっこの中はそれぞれのステップで代表的に使用するwolfSSLのAPI名です。(wolfSSL_write/read)図1は、1)~4)の準備段階でのヒープエリアの使用量の一例を示しています。必要とするヒープエリアは、前のステップで確保し引き続き必要とされるエリア(濃い青の部分)とそのフェーズで使用するエリア(薄い青の部分)があります。図1ではTLSクライアント側での値を示しています。サーバ側では絶対値に多少の違いはあるものの、全体として大きな傾向は変わりません。1)と2)は特定のTLSコンテクストで使用される共通情報を設定するステップです。このフェーズでは、メモリー容量としては使用される鍵や証明書のサイズが大きなファクターとなります。この例では、サーバ認証用の証明書だけが確保されています。実際の利用状況では、クライアント認証のための鍵、証明書を格納する必要がある場合もあります。3)は、特定の相手方との通信を行うためのTLSセッションの管理エリアを確保します。この例では、1セッション分のエリアを確保していますが、同時に複数のセッションを扱う場合はその分だけのエリアを確保する必要があります。4)は通信の相手方とのハンドシェークを実際に行うステップです。このステップではメモリー消費の観点からも公開鍵の大きな処理が行われます。(特定鍵長)最適化が大きな効果を発揮します。ヒープ領域の使用量についてもこの最適化が大きな効果を示しますので、ここではその最適化を適用した場合の例をお見せしています。3072ビットの各鍵長をサポートしていますが、それ以外の場合はこの最適化は適用できません。SP最適化はトレードオフとしてコードサイズが大きくなる傾向にあるので、ROMエリアに制限がある場合には注意が必要です。図2はアプリケーションデータ転送時のヒープエリアの使用量の一例を示しています。アプリケーションデータ転送時には、公開鍵のようなヒープを多用する暗号化アルゴリズムは必要とされないため、暗号化処理に関するデータエリアは比較的小さくなります。データ転送のためのバッファエリアが大きなウェイトを占めることになります。TLSレコードはデフォルトでは最大16kバイトとなるため、wolfSSLでもデフォルトではそのサイズのバッファを確保することになるので、ヒープエリアが潤沢に利用で着ない場合は、このサイズを気にする必要が出てきます。TLSではこの最大レコードサイズをプロトコル実行時に制限することができ、サーバ側が合意するならば、そのサイズを例えば4096、あるいは8196バイトなどの2のn乗バイトで指定することができます。実際のサイズを指定します。までお知らせください。好評販売中wolfSSLをもとに、SSL/TLSの利用法と仕組みを解説。(1)wolfSSL軽量SSL/TLSライブラリwolfSSLは組み込みシステム向けの軽量SSL/TLSライブラリです。既存のネットワークスタックにも容易にSSL/TLS層を追加することができます。最新プロトコルTLS1.3、DTLS1.2をサポートしています。wolfSSL製品ページwolfCrypt暗号エンジンwolfCryptは組み込みシステム向けのコンパクトな暗号アルゴリズムのライブラリです。楕円暗号、Curve25519など最新のアルゴリズムにも対応します。CMVP認証を取得しています(認証#3389)。FIPS認証版、wolfSSLの認証取得サービスについてはこちらのページを参照ください。FIPS認証版wolfMQTTIoTクライアントライブラリwolfMQTTはIoTデバイス向けのMQTTクライアントライブラリです。wolfSSLを併用することでSSL/TLSをサポートします。MQTT3.1に準拠し、すべてのパケットタイプ、QoSをサポートします。wolfMQTT製品ページご質問、ご不明点がありましたら、お気軽にお問い合わせください。reserved.サポートとヘルプサポートフォーラムサポートパッケージコンサルティングサービス脆弱性情報お問い合わせリファレンスアルゴリズム/プロトコルリファレンスプレゼンテーションイベント。