コンテンツにスキップ

レシピ

レシピ #1 最小フットプリント

多くのユーザーは、メモリリソースが限られている深く組み込まれたシステムを使用しています。 このセクションでは、wolfSSLのフットプリントサイズを削減する方法を説明します。

  1. 必要なプロトコルバージョンのみをサポートするように制限します。たとえば、TLS 1.2接続のみを許可します。
  2. コンパイル時に不要なライブラリ機能を削除します - wolfSSLマニュアルの2.4.1節を参照してください。
  3. 限定されたセットの暗号スイートを選択します: a. RSA、ECC、PSKのメモリ使用量の違い。 b. 小さい鍵サイズを選択します - wolfSSLマニュアルの4.3節を参照してください。
  4. ハードウェア暗号が利用可能であればそれを活用します - wolfSSLマニュアルの4.4節を参照してください。
  5. コンパイラとツールチェーンの最適化を利用します。
  6. 接続の両端を制御できる場合は、最大SSLレコードサイズを減らします。

レシピ #2 最高速度

接続にSSL/TLSを追加すると、パフォーマンスの低下は避けられません。 私たちの目標は、そのパフォーマンス低下をできるだけ小さくすることです。 このセクションでは、ハンドシェイク中およびハンドシェイク後のwolfSSLの速度を向上させる方法を説明します。

パフォーマンスに関して懸念される主な分野は2つあります:

  1. SSL/TLSハンドシェイク速度。
  2. データフロー速度(SSLハンドシェイク後の大量データ転送)。

SSLハンドシェイクのパフォーマンスを最適化する際に考慮すべき項目は次のとおりです:

  1. より速い数学ライブラリを使用します(big integer vs. fastmath)。
  2. ハードウェア暗号が利用可能であればそれを活用します - wolfSSLマニュアルの4.4節を参照してください。
  3. 鍵サイズ - wolfSSLマニュアルの4章を参照してください。
  4. 鍵タイプ(例:RSA vs ECC)。
  5. ハンドシェイク速度とセキュリティレベルのトレードオフ(例:クライアント/サーバー証明書検証 - wolfSSLマニュアルの4.8節を参照)。
  6. PSK(事前共有鍵)を使用することを検討します - wolfSSLマニュアルの4.7節を参照してください。

ストリーミングメディア環境での最大データフロー速度(例:ビデオゲーム、VoIPアプリケーション、クラウドインフラストラクチャ)では、暗号スイートの選択が重要です。 このレシピでは、ハードウェア環境や接続数に応じて多くのオプションがあります。 レシピをシンプルにするために、典型的なクラウドベースのサーバーで動作する単一接続環境に焦点を当てます。

最大データフロー速度を最適化する際に考慮すべき項目は次のとおりです:

  1. ストリーム暗号、Rabbit、HC-128など、遅いアルゴリズムよりも速いアルゴリズムを優先する暗号スイートを選択します。
  2. より良いコンパイラの最適化を利用します。(これはユーザーにとって実用的なオプションではないかもしれません)
  3. ハードウェア暗号が利用可能であればそれを活用します。

レシピ #3 最高のセキュリティ

SSL/TLS接続のセキュリティは非常に重要です。 プロジェクトにSSL/TLSを追加する主な理由は、安全な通信チャネルを確保することだからです。

すべての暗号ベースのプロトコルと同様に、新しい攻撃や脆弱性が発見され公開されると、SSL/TLSのセキュリティ推奨事項は変更されることがあります。 最高のセキュリティを最適化すると、構成に応じてメモリ使用量とパフォーマンスの両方に悪影響を及ぼす可能性があります。

  1. 現在利用可能な最高の情報に基づいた、暗号スイートの選択。
  2. 現在利用可能な最高の情報に基づいた、鍵サイズの選択。
  3. その他の考慮事項

上記の基本レシピからわかるように、SSL/TLSの最適化は複雑な多変量問題であり、初期環境に関するさまざまな前提に大きく依存します。 wolfSSLチームは、これらの選択に際し多くのお客様にサポートを提供してまいりました。 シンプルなご質問のほか、短期間のプロフェッショナルデザインコンサルティング、さらにはSSL/TLSプロジェクト全体の実装管理まで、さまざまな方法でサポートいたします。 ご興味がありましたら、ぜひ info@wolfssl.jp までお問い合わせください。