レシピ
レシピ #1 最小フットプリント
多くのユーザーは、メモリリソースが限られている深く組み込まれたシステムを使用しています。 このセクションでは、wolfSSLのフットプリントサイズを削減する方法を説明します。
- 必要なプロトコルバージョンのみをサポートするように制限します。たとえば、TLS 1.2接続のみを許可します。
- コンパイル時に不要なライブラリ機能を削除します - wolfSSLマニュアルの2.4.1節を参照してください。
- 限定されたセットの暗号スイートを選択します: a. RSA、ECC、PSKのメモリ使用量の違い。 b. 小さい鍵サイズを選択します - wolfSSLマニュアルの4.3節を参照してください。
- ハードウェア暗号が利用可能であればそれを活用します - wolfSSLマニュアルの4.4節を参照してください。
- コンパイラとツールチェーンの最適化を利用します。
- 接続の両端を制御できる場合は、最大SSLレコードサイズを減らします。
レシピ #2 最高速度
接続にSSL/TLSを追加すると、パフォーマンスの低下は避けられません。 私たちの目標は、そのパフォーマンス低下をできるだけ小さくすることです。 このセクションでは、ハンドシェイク中およびハンドシェイク後のwolfSSLの速度を向上させる方法を説明します。
パフォーマンスに関して懸念される主な分野は2つあります:
- SSL/TLSハンドシェイク速度。
- データフロー速度(SSLハンドシェイク後の大量データ転送)。
SSLハンドシェイクのパフォーマンスを最適化する際に考慮すべき項目は次のとおりです:
- より速い数学ライブラリを使用します(big integer vs. fastmath)。
- ハードウェア暗号が利用可能であればそれを活用します - wolfSSLマニュアルの4.4節を参照してください。
- 鍵サイズ - wolfSSLマニュアルの4章を参照してください。
- 鍵タイプ(例:RSA vs ECC)。
- ハンドシェイク速度とセキュリティレベルのトレードオフ(例:クライアント/サーバー証明書検証 - wolfSSLマニュアルの4.8節を参照)。
- PSK(事前共有鍵)を使用することを検討します - wolfSSLマニュアルの4.7節を参照してください。
ストリーミングメディア環境での最大データフロー速度(例:ビデオゲーム、VoIPアプリケーション、クラウドインフラストラクチャ)では、暗号スイートの選択が重要です。 このレシピでは、ハードウェア環境や接続数に応じて多くのオプションがあります。 レシピをシンプルにするために、典型的なクラウドベースのサーバーで動作する単一接続環境に焦点を当てます。
最大データフロー速度を最適化する際に考慮すべき項目は次のとおりです:
- ストリーム暗号、Rabbit、HC-128など、遅いアルゴリズムよりも速いアルゴリズムを優先する暗号スイートを選択します。
- より良いコンパイラの最適化を利用します。(これはユーザーにとって実用的なオプションではないかもしれません)
- ハードウェア暗号が利用可能であればそれを活用します。
レシピ #3 最高のセキュリティ
SSL/TLS接続のセキュリティは非常に重要です。 プロジェクトにSSL/TLSを追加する主な理由は、安全な通信チャネルを確保することだからです。
すべての暗号ベースのプロトコルと同様に、新しい攻撃や脆弱性が発見され公開されると、SSL/TLSのセキュリティ推奨事項は変更されることがあります。 最高のセキュリティを最適化すると、構成に応じてメモリ使用量とパフォーマンスの両方に悪影響を及ぼす可能性があります。
- 現在利用可能な最高の情報に基づいた、暗号スイートの選択。
- 現在利用可能な最高の情報に基づいた、鍵サイズの選択。
- その他の考慮事項
上記の基本レシピからわかるように、SSL/TLSの最適化は複雑な多変量問題であり、初期環境に関するさまざまな前提に大きく依存します。 wolfSSLチームは、これらの選択に際し多くのお客様にサポートを提供してまいりました。 シンプルなご質問のほか、短期間のプロフェッショナルデザインコンサルティング、さらにはSSL/TLSプロジェクト全体の実装管理まで、さまざまな方法でサポートいたします。 ご興味がありましたら、ぜひ info@wolfssl.jp までお問い合わせください。