SSL フォワード プロキシの概要
Secure Sockets Layer (SSL) は、インターネットに暗号化技術を提供するアプリケーションレベルのプロトコルです。SSLは、 Transport Layer Security (TLS)とも呼ばれ、プライバシー、認証、機密性、およびデータの整合性を組み合わせて、クライアントとサーバー間のデータの安全な送信を保証します。SSLは、このレベルのセキュリティのために、証明書と秘密鍵と公開鍵の交換ペアに依存しています。
サーバー認証は、Web ブラウザーで Web サーバーの ID を検証できるようにすることで、不正な送信を防止します。機密保持メカニズムにより、通信の機密性が確保されます。SSLは、データを暗号化して機密性を確保し、権限のないユーザーが電子通信を盗聴するのを防ぎます。最後に、メッセージの整合性は、通信の内容が改ざんされていないことを保証します。
SSL フォワードプロキシは透過プロキシです。つまり、クライアントとサーバー間でSSL暗号および復号化を実行しますが、サーバーもクライアントもその存在を検出することはできません。SSLフォワードプロキシは、ペイロードを暗号化および復号化するためのキーを持っていることを確認します。
-
サーバーの場合、SSL フォワードプロキシはクライアントとして機能します - SSL フォワードプロキシは共有のプレプライマリキーを生成するため、暗号化および復号化するキーを決定します。
-
クライアントの場合、SSL フォワード プロキシはサーバーとして機能します。SSL フォワード プロキシは、最初に元のサーバーを認証し、元のサーバー証明書の公開キーを既知のキーに置き換えます。次に、証明書の元の発行者を独自の ID に置き換えて新しい証明書を生成し、この新しい証明書に独自の公開キー (プロキシ プロファイル構成の一部として提供) で署名します。クライアントは、このような証明書を受け入れると、証明書の公開キーで暗号化された共有のプレプライマリキーを送信します。SSL フォワードプロキシは元のキーを独自のキーに置き換えたため、共有されたプレプライマリキーを受け取ることができます。復号化と暗号化は各方向(クライアントとサーバー)で行われ、キーは暗号化と復号化の両方で異なります。
図 1 は、(既存の SRXシリーズ IPS モジュール上で)一般的なサーバー保護に SSL インスペクションがどのように使用されるかを示しています。SSLインスペクションでは、SRXシリーズデバイスがencrypted trafficを復号化できるように、サーバーが使用するプライベートキーにアクセスする必要があります。
でのSSLインスペクション
図 2 は、暗号化されたペイロードに対して SSL フォワード プロキシがどのように機能するかを示しています。アプリケーション ファイアウォール(AppFW)、侵入防御システム(IPS)、またはアプリケーション トラッキング(AppTrack)が設定されている場合、SSL フォワード プロキシは SSL サーバーとして機能し、クライアントからの SSL セッションを終了し、サーバーへの新しい SSL セッションが確立されます。デバイスは、すべての SSL フォワードプロキシトラフィックを復号化してから、再暗号化します。SSL フォワードプロキシは、次のサービスを使用します。
-
クライアント側の SSL-T-SSL ターミネーター。
-
サーバー側の SSL-I-SSL イニシエータ。
-
設定された AppFW、IPS、または AppTrack サービスは、復号化された SSL セッションを使用します。
どのサービス(AppFW、IPS、または AppTrack)も設定されていない場合、SSL プロキシ プロファイルがファイアウォール ポリシーにアタッチされていても、SSL フォワード プロキシ サービスはバイパスされます。SSLフォワードプロキシがセッションで有効になっている場合、IPSはセッションでSSLインスペクションを実行しません。つまり、SSL インスペクションと SSL フォワードプロキシの両方がセッションで有効になっている場合、SSL フォワードプロキシが常に優先されます。
上のSSLプロキシー
プロキシ モードでサポートされる暗号方式
SSL暗号は、暗号化方式、認証方式、および圧縮で構成されています。 表 1 は、サポートされている暗号方式のリストを示しています。NULL 暗号は除外されます。
以下の SSL プロトコルがサポートされています。
-
SSLv3
-
TLS1
| SSL 暗号 |
鍵交換アルゴリズム |
データ暗号化 |
メッセージの整合性 |
|---|---|---|---|
| RSA_WITH_RC4_128_MD5 |
RSA 鍵交換 |
128ビットRC4 |
Message Digest 5(MD5)ハッシュ |
| RSA_WITH_RC4_128_SHA |
RSA 鍵交換 |
128ビットRC4 |
セキュア ハッシュ アルゴリズム(SHA)ハッシュ |
| RSA_WITH_DES_CBC_SHA |
RSA 鍵交換 |
DES CBC |
SHA ハッシュ |
| RSA_WITH_3DES_EDE_CBC_SHA |
RSA 鍵交換 |
3DES EDE/CBC |
SHA ハッシュ |
| RSA_WITH_AES_128_CBC_SHA |
RSA 鍵交換 |
128ビットAES/CBC |
SHA ハッシュ |
| RSA_WITH_AES_256_CBC_SHA |
RSA 鍵交換 |
256ビットAES/CBC |
SHA ハッシュ |
| RSA_EXPORT_WITH_RC4_40_MD5 |
RSA エクスポート |
40ビットRC4 |
MD5 ハッシュ |
| RSA_EXPORT_WITH_DES40_CBC_SHA |
RSA エクスポート |
40 ビット DES/CBC |
SHA ハッシュ |
| RSA_EXPORT1024_WITH_DES_CBC_SHA |
RSA 1024ビットエクスポート |
DES/CBC |
SHA ハッシュ |
| RSA_EXPORT1024_WITH_RC4_56_MD5 |
RSA 1024ビットエクスポート |
56ビットRC4 |
MD5 ハッシュ |
| RSA_EXPORT1024_WITH_RC4_56_SHA |
RSA 1024ビットエクスポート |
56ビットRC4 |
SHA ハッシュ |
| RSA-WITH-AES-256-GCM-SHA384 |
RSA 鍵交換 |
256ビットAES/GCM |
SHA384 ハッシュ |
| RSA-WITH-AES-256-CBC-SHA256 |
RSA 鍵交換 |
256ビットAES/CBC |
SHA256 ハッシュ |
| RSA-WITH-AES-128-GCM-SHA256 |
RSA 鍵交換 |
128ビットAES/GCM |
SHA256 ハッシュ |
| RSA-WITH-AES-128-CBC-SHA256 |
RSA 鍵交換 |
128ビットAES/CBC |
SHA256 ハッシュ |
サーバー認証
クライアントとデバイス間の暗黙の信頼(クライアントがデバイスによって生成された証明書を受け入れるため)は、SSLプロキシの重要な側面です。サーバー認証が危険にさらされないことは非常に重要です。しかし、実際には、自己署名証明書や異常のある証明書が豊富にあります。異常には、期限切れの証明書、ドメイン名と一致しない共通名のインスタンスなどが含まれます。
サーバー認証は、SSL フォワード・プロキシー・プロファイルで「サーバー認証を無視する」オプションを選択することによって制御されます。
「サーバー認証を無視する」オプションが選択されていない場合、以下のシナリオが発生します。
-
認証が成功すると、鍵を置き換え、発行者名をプロキシー・プロファイルのルート CA 証明書で構成されている発行者名に変更することで、新しい証明書が生成されます。
-
認証に失敗すると、接続は切断されます。
SSL フォワード・プロキシー・プロファイルのアクションとして「サーバー認証を無視する」オプションが定義されている場合、以下のシナリオが発生します。
-
証明書が自己署名の場合、新しい証明書はキーのみを置き換えて生成されます。発行者名は変更されません。これにより、証明書が無効であるという警告がクライアントブラウザに表示されます。
-
証明書の有効期限が切れている場合、または共通名がドメイン名と一致しない場合は、キーを置き換えて発行者名をSSL-PROXY: DUMMY_CERT:GENERATED DUE TO SRVR AUTH FAILUREに変更することで、新しい証明書が生成されます。これにより、証明書が無効であるという警告がクライアントブラウザに表示されます。
信頼されたcaリスト
SSLフォワードプロキシは、クライアントとサーバー間の安全なデータ送信を保証します。セキュア接続を確立する前に、SSL フォワード・プロキシーは認証 局 (CA) 証明書を検査して、サーバー証明書の署名を検証します。このため、サーバーを効果的に認証するには、信頼できる CA 証明の妥当なリストが必要です。
サーバー認証を無視する
[サーバー認証を無視する] オプションを使用すると、サーバー認証を完全に無視できます。この場合、SSL フォワード・プロキシーは、サーバー証明書の検証プロセス中に発生したエラー (CA 署名検査の失敗、自己署名証明書、証明書の有効期限など) を無視します。
このオプションを設定すると、Web サイトがまったく認証されなくなるため、認証にはお勧めしません。ただし、このオプションを使用すると、SSL セッションがドロップされた根本原因を効果的に特定できます。
ルート CA
公開鍵基盤(PKI)階層では、ルート CA は信頼パスの最上位にあります。ルート CA は、サーバー証明書を信頼できる証明書として識別します。
セッションの再開
SSL セッションとは、完全なハンドシェイクを実行することによって作成されるパラメーターと暗号鍵のセットを指します。接続は、セッション内で発生する会話またはアクティブなデータ転送です。完全な SSL ハンドシェークと主キーの生成の計算オーバーヘッドは相当なものです。短時間のセッションでは、SSL ハンドシェークに要する時間がデータ転送に要する時間よりも長くなることがあります。スループットを向上させ、適切なレベルのセキュリティーを維持するために、SSL セッション再開はセッション・キャッシング・メカニズムを提供し、プリプライマリ秘密鍵や合意された暗号方式などのセッション情報をクライアントとサーバーの両方にキャッシュできるようにします。キャッシュされた情報は、セッション ID によって識別されます。その後の接続では、両当事者は、新しいプレプライマリ秘密鍵を作成するのではなく、セッションIDを使用して情報を取得することに同意します。セッションの再開により、 ハンドシェイク プロセスが短縮され、SSL トランザクションが高速化されます。
SSL プロキシ ログ
SSL プロキシー・プロファイルでロギングが使用可能になっている場合、SSL プロキシーは 表 2 に示すメッセージを生成できます。
| ログの種類 |
形容 |
|---|---|
| SSL_PROXY_SSL_SESSION_DROP |
SSL プロキシーによってセッションがドロップされたときに生成されるログ。 |
| SSL_PROXY_SSL_SESSION_ALLOW |
いくつかのマイナーなエラーが発生した後でも、セッションがSSLプロキシによって処理されたときに生成されるログ。 |
| SSL_PROXY_SESSION_IGNORE |
非 SSL セッションが最初に SSL セッションと間違えられた場合に生成されるログ。 |
| SSL_PROXY_SESSION_ALLOWLIST |
セッションが許可リストに登録されたときに生成されるログ。 |
| SSL_PROXY_ERROR |
エラーの報告に使用されるログ。 |
| SSL_PROXY_WARNING |
警告の報告に使用されるログ。 |
| SSL_PROXY_INFO |
一般情報のレポートに使用されるログ。 |
すべてのログには同様の情報が含まれています。メッセージフィールドには、ログ生成の理由が含まれます。 表 3 に示されている 3 つのプレフィックスのうちの 1 つが、メッセージの送信元を識別します。その他のフィールドには、わかりやすいラベルが付けられています。
| 接頭辞 |
形容 |
|---|---|
| 制 |
デバイスに関連するエラー、または SSL プロキシ プロファイルの一部として実行されたアクションが原因で生成されるログ。ほとんどのログはこのカテゴリに分類されます。 |
| OpenSSL エラー |
ハンドシェイク プロセス中に、openssl ライブラリによってエラーが検出された場合に生成されるログ。 |
| 証明書エラー |
証明書でエラーが検出された場合、 ハンドシェイク プロセス中に生成されるログ (x509 関連のエラー)。 |
完全転送機密保持
完全転送機密保持は、サーバーの秘密キーが侵害された場合でもセッション キーが侵害されないことを保証する特定のキー合意プロトコルです。ユーザーが開始するセッションごとに一意のセッションキーを生成することで、1つのセッションキーが侵害されたとしても、その特定のキーによって保護されている特定のセッションで交換されたデータ以外のデータには影響しません。
楕円曲線 DHE(ECDHE)暗号スーツがサポートされており、SSL フォワード プロキシで完全前方秘匿性を可能にします。SSL フォワードプロキシは、認証に RSA を引き続き使用します。ただし、EC Diffie-Hellman 一時鍵交換を使用して、共有秘密に合意します。
ECDHE 暗号スイートは DHE 暗号スイートよりも高速であるため、SSL フォワード プロキシは ECDHE 暗号スイートのみをサポートします。ECDHE 暗号スーツは楕円曲線暗号に基づいているため、より小さな鍵で RSA と同じレベルのセキュリティを実現できます。たとえば、224 ビットの楕円曲線は、2048 ビットの RSA キーと同じくらい安全です。
表 4 は、サポートされる ECDHE 暗号スートを示しています。
| SSL 暗号 |
鍵交換アルゴリズム |
データ暗号化 |
メッセージの整合性 |
|---|---|---|---|
| ECDHE-RSA-WITH-AES-256-GCM-SHA384 |
ECDHE RSAの |
256ビットAES/GCM |
SHA 384 ハッシュ |
| ECDHE-RSA-WITH-AES-256-CBC-SHA384 |
ECDHE RSAの |
256ビットAES/CBC |
SHA 384 ハッシュ |
| ECDHE-RSA-WITH-AES-256-CBC-SHA |
ECDHE RSAの |
256ビットAES/CBC |
SHA ハッシュ |
| ECDHE-RSA-WITH-AES-3DES-EDE-CBC-SHA |
ECDHE RSAの |
3DES AES/EDE/CBC |
SHA ハッシュ |
| ECDHE-RSA-WITH-AES-128-GCM-SHA256 |
ECDHE RSAの |
128ビットAES/GCM |
SHA 256 ハッシュ |
| ECDHE-RSA-WITH-AES-128-CBC-SHA256 |
ECDHE RSAの |
128ビットAES/CBC |
SHA 256 ハッシュ |
| ECDHE-RSA-WITH-AES-128-CBC-SHA |
ECDHE RSAの |
128ビットAES/CBC |
SHA ハッシュ |