コンテンツにスキップ

考慮事項

予想される要件

wolfSSLを環境に最適化する最初のステップは、予想される要件を文書化することです。 最高レベルでは、SSL/TLSの設計目標は通常以下に集約されます:

  • メモリフットプリント(ROM)
  • セッションごとのメモリ使用量(RAM)
  • SSLハンドシェイクのパフォーマンス
  • データフローパフォーマンス(大量データ転送)
  • 望ましいセキュリティレベル(以下の図1を参照)

望ましいセキュリティレベル

セキュリティレベル レベル名 説明
1 緩やか カジュアルな覗き見を防ぐことができればよい
2 適度 攻撃者が存在するが、彼らはそこまで高いモチベーションがない
3 企業向け プロフェッショナルな攻撃に対して安全
4 軍用グレード 軍事レベルの保護
5 量子コンピュータ耐性 量子コンピュータによる攻撃に耐えることができる

図1:望ましいセキュリティレベル

これらのトップレベルの目標の各々は、設計を進める中で他の目標とトレードオフが発生します。

あらかじめ定義する必要のある重要な変数は次のとおりです:

  1. 利用可能なハードウェア: a. SSL/TLSに利用可能なメモリ(ROM / RAM) b. CPUの種類とクロック速度
  2. 必要なSSL/TLSプロトコルレベル(例:TLS 1.0、TLS 1.1、TLS 1.2など)
  3. 必要な暗号スイート。要件に暗号スイートが定義されていない場合は、パフォーマンス目標に合った暗号スイートを自由に選択できます: a. 公開鍵アルゴリズムとキーの長さ(RSA、ECC、NTRU、PSKなど) b. ブロック / ストリーム暗号(AES、DES、3DES、RC4、HC-128など) c. ハッシュ関数(SHA、SHA2、MD5、Blake2bなど)
  4. 接続のどちら側にいるか:クライアント、サーバー、またはその両方?
  5. クライアント認証?
  6. SSL接続の反対側は定義されていますか? a. どのSSL実装を使用していますか? b. どのSSL/TLSプロトコルバージョンですか? c. キーの長さは? d. クライアントまたはサーバーですか?
  7. 一度に必要なアクティブなSSL/TLS接続/セッションの最大数は?
  8. SSLハンドシェイクのパフォーマンス要件は?
  9. SSLハンドシェイク完了後の大量データ転送のパフォーマンス要件は?
  10. ハードウェア暗号化は利用可能ですか?もしそうなら、どの暗号がハードウェアで利用可能ですか?
  11. 編集者注:このドキュメントを実用的な範囲内に保つために、オペレーティングシステムとTCP/IPスタックのチューニングについては本ドキュメントのスコープから外しています。

上記の変数をすべて考慮すると、多くのことを考慮する必要があることがわかります。 したがって、このガイドでは参考として3つの最適化レシピを提示します:

  1. 最小フットプリントサイズ(ヒープ、スタック、静的データ、コード)のための最適化
  2. 最高速度を実現するための最適化
  3. 最高のセキュリティ性能を保つための最適化

他の最適化レシピも利用可能です。info@wolfssl.jp までご連絡ください。 追加の参考レシピには以下が含まれます:

  1. 大量の接続数に対応するための最適化
  2. 特定のオペレーティングシステム/チップセット環境における最適化
  3. 特定のアプリケーション向けの最適化
  4. 最高のセキュリティと最小のフットプリントの組み合わせなど、複数の目標に向けた最適化
  5. 低消費電力のための最適化
  6. セキュリティレベル1,2のための最適化