(57)【特許請求の範囲】
【請求項１】
コンピュータに暗号化されたネットワークフローを分析させるためのプログラムであって、
前記コンピュータに、
第１ノードから開始された前記暗号化されたネットワークフローを前記第１ノードと第２ノードとの間で監視する段階と、
前記暗号化されたネットワークフローのコピーを形成すべく、前記暗号化されたネットワークフローを複製する段階と、
前記第１ノードから共有シークレットを抽出する段階と、
前記第１ノードと前記第２ノードとに関連する前記共有シークレットを用いることにより、前記暗号化されたネットワークフローの前記コピーを復号化する段階と、
対象データについての前記ネットワークフローのコピーをスキャンする段階と
を実行させ、
前記共有シークレットを抽出する段階は、
ネットワーク層でネットワークフローを監視する段階と、
暗号化プロトコルセッションのハンドシェイクの開始を特定する段階と、
前記開始を特定することに応答して、前記暗号化プロトコルセッションを開始する処理のメモリ空間を開放する段階と、
前記処理の前記メモリ空間内の前記暗号化プロトコルセッションでの前記共有シークレットを特定する段階とを含む、プログラム。
【請求項２】
暗号化プロトコルセッションにアクセスする前記第１ノード上のアプリケーションに、前記アプリケーションを介した前記暗号化プロトコルセッションへのアクセスを許可する共用ライブラリをロードする段階と、
前記暗号化プロトコルセッション内の前記共有シークレットを特定する段階と
をさらに前記コンピュータに実行させる、請求項１に記載のプログラム。
【請求項３】
前記暗号化されたネットワークフローを遅延させる段階と、
前記暗号化されたネットワークフローを転送する段階と
を前記コンピュータにさらに実行させる、請求項１または２に記載のプログラム。
【請求項４】
前記ネットワークフローのコピー内の対象データを特定することに応答して、前記暗号化されたネットワークフローを終了する段階をさらに前記コンピュータに実行させる、請求項１または２に記載のプログラム。
【請求項５】
前記ネットワークフローのコピー内の対象データを特定することに応答して、前記共有シークレットを用いることにより前記暗号化されたネットワークフローを復号化する段階と、
前記対象データを除去すべく、暗号化されていない前記ネットワークフローを修正する段階と、
前記共有シークレットを用いることにより、修正されたネットワークフローを暗号化する段階と、
前記修正されたネットワークフローを転送する段階と
をさらに前記コンピュータに実行させる、請求項１、２および４のいずれか１つに記載のプログラム。
【請求項６】
前記共有シークレットは、マスターシークレット、プレマスターシークレット、およびセッションコンテキストのうちの少なくとも１つである、請求項１から請求項５のいずれか１つに記載のプログラム。
【請求項７】
前記第１ノードと前記第２ノードとの間のネットワークフローを暗号化するために用いられる暗号化方式の数を制限する段階を前記コンピュータにさらに実行させる、請求項１から請求項６のいずれか１つに記載のプログラム。
【請求項８】
暗号化されたネットワークフローを分析するための方法であって、
第１ノードから開始された、前記第１ノードと第２ノードとの間の前記暗号化されたネットワークフローを、監視する段階と、
前記暗号化されたネットワークフローのコピーを形成すべく、前記暗号化されたネットワークフローを複製する段階と、
前記第１ノードから共有シークレットを抽出する段階と、
前記第１ノードと前記第２ノードとに関連する前記共有シークレットを用いることにより前記暗号化されたネットワークフローの前記コピーを復号化する段階と、
対象データについての前記ネットワークフローのコピーをスキャンする段階と
を備え、
前記共有シークレットを抽出する段階は、
ネットワーク層でネットワークフローを監視する段階と、
暗号化プロトコルセッションのハンドシェイクの開始を特定する段階と、
前記開始を特定することに応答して、前記暗号化プロトコルセッションを開始する処理のメモリ空間を開放する段階と、
前記処理の前記メモリ空間内の前記暗号化プロトコルセッションでの前記共有シークレットを特定する段階とを含む、方法。
【請求項９】
前記ネットワークフローのコピー内の対象データを特定することに応答して、前記暗号化されたネットワークフローを終了する段階をさらに備える、請求項８に記載の方法。
【請求項１０】
前記ネットワークフローのコピー内の対象データを特定することに応答して、前記共有シークレットを用いることにより前記暗号化されたネットワークフローを復号化する段階と、
前記対象データを除去すべく、暗号化されていない前記ネットワークフローを修正する段階と、
前記共有シークレットを用いることにより修正されたネットワークフローを暗号化する段階と、
前記修正されたネットワークフローを転送する段階と
をさらに備える、請求項８または９に記載の方法。
【請求項１１】
第１ノードから開始された暗号化されたネットワークフローを前記第１ノードと第２ノードとの間で監視し、
前記暗号化されたネットワークフローのコピーを形成すべく、前記暗号化されたネットワークフローを複製し、
前記第１ノードと前記第２ノードとに関連する共有シークレットを用いることにより、前記暗号化されたネットワークフローの前記コピーを復号化し、
対象データについての前記ネットワークフローのコピーをスキャンするよう構成されるセキュリティモジュールと、
前記第１ノードから前記共有シークレットを抽出するよう構成された抽出モジュールと
を備え、
前記抽出モジュールは、
ネットワーク層でネットワークフローを監視し、
暗号化プロトコルセッションのハンドシェイクの開始を特定し、
前記開始を特定することに応答して、前記暗号化プロトコルセッションを開始する処理のメモリ空間を開放し、
前記処理の前記メモリ空間内の前記暗号化プロトコルセッションでの前記共有シークレットを特定する、装置。
【請求項１２】
前記抽出モジュールは、
暗号化プロトコルセッションにアクセスする前記第１ノード上のアプリケーションに、前記アプリケーションを介した前記暗号化プロトコルセッションへのアクセスを許可する共用ライブラリをロードし、
前記暗号化プロトコルセッション内の前記共有シークレットを特定する、請求項１１に記載の装置。
【請求項１３】
前記セキュリティモジュールは、
前記暗号化されたネットワークフローを遅延させ、
前記暗号化されたネットワークフローを転送するようさらに構成される、請求項１１または１２に記載の装置。
【請求項１４】
前記セキュリティモジュールは、前記ネットワークフローのコピー内の対象データを特定することに応答して、前記暗号化されたネットワークフローを終了するようさらに構成される、請求項１１から請求項１３のいずれか１つに記載の装置。
【請求項１５】
前記セキュリティモジュールは、
前記ネットワークフローのコピー内の対象データを特定することに応答して、前記共有シークレットを用いることにより前記暗号化されたネットワークフローを復号化し、
前記対象データを除去すべく、暗号化されていない前記ネットワークフローを修正し、
前記共有シークレットを用いることにより、修正されたネットワークフローを暗号化し、
前記修正されたネットワークフローを転送するようさらに構成される、請求項１１、１２、及び１４のいずれか１つに記載の装置。
【請求項１６】
請求項８から請求項１０のいずれか１つに記載の方法を実行するための手段を備える装置。
【請求項１７】
前記手段は、プロセッサおよびメモリを有する、請求項１６に記載の装置。
【請求項１８】
コンピュータに第１ノードから共有シークレットを抽出させるためのプログラムであって、
前記コンピュータに、
ネットワーク層でネットワークフローを監視する段階と、
暗号化プロトコルセッションのハンドシェイクの開始を特定する段階と、
前記開始を特定することに応答して、前記暗号化プロトコルセッションを開始する処理のメモリ空間を開放する段階と、
前記処理の前記メモリ空間内の前記暗号化プロトコルセッションでの前記共有シークレットを特定する段階と
を実行させるためのプログラム。
【請求項１９】
前記処理の前記メモリ空間から前記共有シークレットを抽出する段階をさらに前記コンピュータに実行させる、請求項１８に記載のプログラム。
【請求項２０】
セキュリティモジュールに前記共有シークレットを送信する段階を前記コンピュータに実行させる、請求項１８または請求項１９に記載のプログラム。
【請求項２１】
暗号化されたネットワークフローを分析するための方法であって、
ファイヤウォールで、第１ノード上のアプリケーションに関連する処理によって開始される前記第１ノードと第２ノードとの間の暗号化プロトコルセッションの前記暗号化されたネットワークフローを監視する段階と、
前記暗号化されたネットワークフローのコピーを形成すべく、前記暗号化されたネットワークフローを複製する段階と、
前記ファイヤウォールで、前記暗号化されたネットワークフローに関連する共有シークレットを含むメッセージを前記第１ノード上の抽出モジュールから受信する段階であって、前記共有シークレットは、少なくとも部分的に、前記第１ノードと前記第２ノードとの間で交換された情報に基づいて、前記第１ノード及び前記第２ノードにより決定され、前記暗号化されたプロトコルセッションのハンドシェイクの開始を前記第１ノードで特定することに応答して、前記抽出モジュールが、前記ファイヤウォールに送信する前記共有シークレットを抽出すべく、前記処理のメモリ空間を開放する、段階と、
前記ファイヤウォールで、ネットワークフローのコピーを形成すべく、前記抽出モジュールから受信された前記共有シークレットを用いて前記暗号化されたネットワークフローの前記コピーを復号化する段階と、
対象データについての前記ネットワークフローのコピーをスキャンする段階と
を備える方法。
【請求項２２】
前記共有シークレットは、前記ファイヤウォールによる受信される前に前記第１ノードから抽出される、請求項２１に記載の方法。
【請求項２３】
前記ファイヤウォールで、前記共有シークレットが受信されるまでに、前記暗号化されたネットワークフローを遅延させる段階と、
前記暗号化されたネットワークフローを転送する段階と
をさらに備える、請求項２１または２２に記載の方法。
【請求項２４】
前記ネットワークフローのコピー内の対象データを特定することに応答して、前記暗号化されたネットワークフローを終了する段階をさらに備える、請求項２１から２３のいずれか１つに記載の方法。
【請求項２５】
前記ネットワークフローのコピー内の対象データを特定することに応答して、前記暗号化されたネットワークが転送される前に前記暗号化されたネットワークフローを復号化する段階と、
前記対象データを除去すべく、暗号化されていない前記ネットワークフローを修正して、修正されたネットワークフローを形成する段階と、
前記共有シークレットを用いて前記修正されたネットワークフローを暗号化する段階と、
暗号化された前記修正されたネットワークフローを転送する段階と
をさらに備える、請求項２１から２４のいずれか１つに記載の方法。
【請求項２６】
前記抽出モジュールは、
前記第１ノードで、前記暗号化プロトコルセッションの前記ハンドシェイクの前記開始を特定すべく、ネットワーク層でのネットワークフローを監視し、
前記処理の前記メモリ空間を開放した後に前記処理の前記メモリ空間内の前記暗号化プロトコルセッションにおいて前記共有シークレットを特定する、請求項２１から２５のいずれか１つに記載の方法。
【請求項２７】
前記共有シークレットは、マスターシークレット、プレマスターシークレット、およびセッションコンテキストのうちの少なくとも１つである、請求項２１から２６のいずれか１つに記載の方法。
【請求項２８】
前記第１ノードと前記第２ノードとの間のネットワークフローを暗号化するために用いられる暗号化方式の数を制限する段階をさらに備える、請求項２１から２７のいずれか１つに記載の方法。
【請求項２９】
少なくとも１つのメモリ要素に連結された少なくとも１つのプロセッサと、
セキュリティモジュールと
を備え、
前記セキュリティモジュールは、前記少なくとも１つのプロセッサ上で、
第１ノード上のアプリケーションに関する処理により開始される前記第１ノードと第２ノードとの間の暗号化プロトコルセッションの暗号化されたネットワークフローを監視すること、
前記暗号化されたネットワークフローのコピーを形成すべく、前記暗号化されたネットワークフローを複製すること、
前記暗号化されたネットワークフローに関連する共有シークレットを含むメッセージを他のノード上の抽出モジュールから受信すること、
ネットワークフローのコピーを形成すべく、前記抽出モジュールから受信された前記共有シークレットを用いて前記暗号化されたネットワークフローの前記コピーを復号化すること、
対象データについての前記ネットワークフローのコピーをスキャンすること
を実行し、
前記共有シークレットは、少なくとも部分的に、前記第１ノードと前記第２ノードとの間で交換された情報に基づいて、前記第１ノード及び前記第２ノードにより決定され、前記暗号化されたプロトコルセッションのハンドシェイクの開始を前記第１ノードで特定することに応答して、前記抽出モジュールが、前記他のノードとは別個のファイヤウォールに送信する前記共有シークレットを抽出すべく、前記処理のメモリ空間を開放する、装置。
【請求項３０】
前記抽出モジュールは、前記共有シークレットが前記ファイヤウォールにより受信される前に前記第１ノードから前記共有シークレットを抽出する、請求項２９に記載の装置。
【請求項３１】
前記抽出モジュールは、
前記暗号化プロトコルセッションの前記ハンドシェイクの前記開始を特定すべく、他のノードで、ネットワーク層でのネットワークフローを監視し、
前記処理の前記メモリ空間を開放した後に、前記処理の前記メモリ空間内の前記暗号化プロトコルセッションにおいて前記共有シークレットを特定する、請求項２９または３０に記載の装置。
【請求項３２】
前記セキュリティモジュールは、前記少なくとも１つのプロセッサ上で、
前記共有シークレットが受信されるまで前記暗号化されたネットワークフローを遅延させること、
前記暗号化されたネットワークフローを転送すること
を実行する、請求項２９から３１のいずれか１つに記載の装置。
【請求項３３】
前記セキュリティモジュールは、前記少なくとも１つのプロセッサ上で、
前記ネットワークフローのコピー内の対象データを特定することに応答して、前記暗号化されたネットワークフローを終了することを実行する、請求項２９から３２のいずれか１つに記載の装置。
【請求項３４】
前記セキュリティモジュールは、前記少なくとも１つのプロセッサ上で、
前記ネットワークフローのコピー内の対象データを特定することに応答して、前記暗号化されたネットワークが転送される前に前記暗号化されたネットワークフローを復号化すること、
前記対象データを除去すべく、暗号化されていない前記ネットワークフローを修正して、修正されたネットワークフローを形成すること、
前記共有シークレットを用いて前記修正されたネットワークフローを暗号化すること、
暗号化された前記修正されたネットワークフローを転送すること
を実行する、請求項２９から３３のいずれか１つに記載の装置。
【請求項３５】
前記共有シークレットは、マスターシークレット、プレマスターシークレット、およびセッションコンテキストのうちの少なくとも１つである、請求項２９から３４のいずれか１つに記載の装置。
【請求項３６】
前記セキュリティモジュールは、前記少なくとも１つのプロセッサ上で、
前記第１ノードと前記第２ノードとの間のネットワークフローを暗号化するために用いられる暗号化方式の数を制限すること
を実行する、請求項２９から３５のいずれか１つに記載の装置。
【請求項３７】
前記第１ノードと前記他のノードとは別個のノードである、請求項２９から３６のいずれか１つに記載の装置。
【請求項３８】
ファイヤウォールで、第１ノード上のアプリケーションに関する処理により開始される前記第１ノードと第２ノードとの間の暗号化プロトコルセッションの暗号化されたネットワークフローを監視する段階と、
前記暗号化されたネットワークフローのコピーを形成すべく、前記暗号化されたネットワークフローを複製する段階と、
前記ファイヤウォールで、前記暗号化されたネットワークフローに関連する共有シークレットを含むメッセージを他のノード上の抽出モジュールから受信する段階と、
前記ファイヤウォールで、ネットワークフローを形成すべく、前記抽出モジュールから受信された前記共有シークレットを用いて前記暗号化されたネットワークフローの前記コピーを復号化する段階と、
対象データについての前記ネットワークフローの前記コピーをスキャンする段階と
をコンピュータに実行させ、
前記共有シークレットは、少なくとも部分的に、前記第１ノードと前記第２ノードとの間で交換された情報に基づいて、前記第１ノード及び前記第２ノードにより決定され、前記暗号化されたプロトコルセッションのハンドシェイクの開始を前記第１ノードで特定することに応答して、前記抽出モジュールが、前記ファイヤウォールに送信する前記共有シークレットを抽出すべく、前記処理のメモリ空間を開放し、前記ファイヤウォールと前記他のノードとは別個のノードである、プログラム。
【請求項３９】
前記共有シークレットは、前記ファイヤウォールにより受信される前に前記第１ノードから抽出される、請求項３８に記載のプログラム。
【請求項４０】
前記暗号化プロトコルセッションの前記ハンドシェイクの前記開始を特定すべく、前記第１ノードで、ネットワーク層でのネットワークフローを監視することと、
前記処理の前記メモリ空間を開放した後に、前記処理の前記メモリ空間内の前記暗号化プロトコルセッションにおいて前記共有シークレットを特定すること
を前記コンピュータにさらに実行させる、請求項３８または３９に記載のプログラム。
【請求項４１】
前記ファイヤウォールで、前記共有シークレットが受信されるまで前記暗号化されたネットワークフローを遅延させること、
前記暗号化されたネットワークフローを転送すること
を前記コンピュータにさらに実行させる、請求項３８から４０のいずれか１つに記載のプログラム。
【請求項４２】
前記ネットワークフローのコピー内の対象データを特定することに応答して、前記暗号化されたネットワークフローを終了することをさらに前記コンピュータに実行させる、請求項３８から４１のいずれか１つに記載のプログラム。
【請求項４３】
前記ネットワークフローのコピー内の対象データを特定することに応答して、前記暗号化されたネットワークフローが転送される前に前記暗号化されたネットワークフローを復号化すること、
前記対象データを除去すべく、暗号化されていない前記ネットワークフローを修正して、修正されたネットワークフローを形成すること、
前記共有シークレットを用いて前記修正されたネットワークフローを暗号化すること、
暗号化された前記修正されたネットワークフローを転送すること
を前記コンピュータにさらに実行させる、請求項３８から４２のいずれか１つに記載のプログラム。
【請求項４４】
前記共有シークレットは、マスターシークレット、プレマスターシークレット、およびセッションコンテキストのうちの少なくとも１つである、請求項３８から４３のいずれか１つに記載のプログラム。
【請求項４５】
前記第１ノードと前記第２ノードとの間のネットワークフローを暗号化するために用いられる暗号化方式の数を制限すること
を前記コンピュータさらに実行させる、請求項３８から４４のいずれか１つに記載のプログラム。
【請求項４６】
前記第１ノードと前記他のノードとは同じノード及び別個ノードの一方である、請求項３８から４５のいずれか１つに記載のプログラム。
【請求項４７】
第１ノードから共有シークレットを抽出するための方法であって、
前記第１ノードで、抽出モジュールにより、前記第１ノードと第２ノードとの間のネットワークフローを、ネットワーク層で監視する段階と、
前記第１ノードと前記第２ノードとの間の暗号化プロトコルセッションのハンドシェイクの開始を特定する段階と、
前記開始を特定することに応答して、前記暗号化プロトコルセッションを開始する処理であって、前記第１ノード上のアプリケーションに関連する前記処理のメモリ空間を前記抽出モジュールが開放する段階と、
前記処理の前記メモリ空間内の前記暗号化プロトコルセッションにおける前記共有シークレットであって、前記第１ノードと前記第２ノードとの間で交換される情報に少なくとも部分的に基づいて、前記第１ノードにより演算された前記共有シークレットを、前記抽出モジュールにより特定する段階と、
前記抽出モジュールにより、前記処理の前記メモリ空間から前記共有シークレットを抽出する段階と、
前記第１ノードと前記第２ノードとの間のファイヤウォールに前記共有シークレットを送信する段階と
を備える、方法。
【請求項４８】
前記処理の前記メモリ空間から前記共有シークレットを抽出すべく、アプリケーションプログラミングインタフェース（ＡＰＩ）をインターセプトする段階をさらに備える、請求項４７に記載の方法。
【請求項４９】
第１ノードで、抽出モジュールにより、前記第１ノードと第２ノードとの間のネットワークフローを、ネットワーク層で監視する段階と、
前記第１ノードと前記第２ノードとの間の暗号化プロトコルセッションのハンドシェイクの開始を特定する段階と、
前記開始を特定することに応答して、前記抽出モジュールが、前記暗号化プロトコルセッションを開始する処理であって、前記第１ノード上のアプリケーションに関連する前記処理のメモリ空間を開放する段階と、
前記抽出モジュールにより、前記処理の前記メモリ空間内の前記暗号化プロトコルセッションにおける共有シークレットであって、前記第１ノードと前記第２ノードとの間で交換される情報に少なくとも部分的に基づいて、前記第１ノードにより演算された前記共有シークレットを特定する段階と、
前記抽出モジュールにより、前記処理の前記メモリ空間から前記共有シークレットを抽出する段階と、
前記第１ノードと前記第２ノードとの間のファイヤウォールに前記共有シークレットを送信する段階と
をコンピュータに実行させるためのプログラム。
【請求項５０】
前記処理の前記メモリ空間から前記共有シークレットを抽出すべく、アプリケーションプログラミングインタフェース（ＡＰＩ）をインターセプトする段階を前記コンピュータにさらに実行させる、請求項４９に記載のプログラム。
【請求項５１】
前記共有シークレットは、アウトオブバンドチャネルを介して前記ファイヤウォールに送信される、請求項４９または５０に記載のプログラム。
【請求項５２】
前記抽出モジュールは、他のノード上で実行され、前記他のノード及び前記第１ノードは、別個のノード及び同じノードの一方である、請求項４９から５１のいずれか１つに記載のプログラム。
【請求項５３】
請求項１から７、１８から２０、３８から４６、４９から５１のいずれか１つに記載のプログラムを格納するコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、ネットワークセキュリティの分野、より具体的には、ネットワーク環境における暗号化データを検査することに関する。
【背景技術】
【０００２】
ネットワークセキュリティの分野は、今日の社会においてますます重要になってきている。インターネットは、世界中の異なるコンピュータネットワークを相互接続することが可能になってきている。しかし、インターネットは、複数の悪意のあるオペレータがこれらのネットワークを活用する多くの機会も引き起こしてきている。一度、複数の特定のタイプの悪意のあるソフトウェア（例えば、ボット）が、ホストコンピューターに感染されてしまうと、そのソフトウェアは、遠隔のオペレータから複数のコマンドを受信するよう構成されることができる。そのソフトウェアは、そのホストコンピューターからスパムまたは悪意のある電子メールを送信する、そのホストコンピューターに関連する仕事または個人から慎重に扱うべき情報を盗む、他の複数のホストコンピューターに伝播する、および／または複数のサービスアタックの分配された否認を手助けするなどの任意の数の悪意のある動作を実行するように指示されることができる。さらに、悪意のあるオペレータは、複数の他の悪意のあるオペレータにアクセスを売る、またはさもなくば与えることができ、そのことによってホストコンピューターの搾取をエスカレートさせる。したがって、安定した複数のコンピュータおよびシステムを効果的に保護および維持する能力は、コンポーネントの製造、システムの設計、およびネットワークオペレータに対して複数の重要な課題を提示することを継続する。
【０００３】
複数の企業環境は、複数のファイアウォール、複数のネットワーク侵入検知／防御（ＮＩＤＳ/ＮＩＰＳ）システム、複数のトラフィックシェーパー、および複数の他のシステムを含む様々なネットワーク管理を展開する。これらのシステムの多くは、マルウェアの増殖の検出／防御、一般的な会計監査およびネットワーク管理機能と同様に企業の知的財産が明確に定義された企業の境界の範囲外に漏れないことを確保することを含む、豊富なサービスを提供するためにネットワークトラフィックの検査に頼っている。ネットワークトラフィックは、セキュアソケット層（ＳＳＬ）／トランスポート層セキュリティ（ＴＬＳ）などのプロトコルを用いることにより暗号化されることもできる。
【図面の簡単な説明】
【０００４】
本開示と特徴と効果に関してのより完全な理解を提供するために、参照は、添付図面とともに考慮して、以下の説明をする。本明細書で、同様の参照符号は、同様の部分を表す。
【図１】実施形態に従ってファイアウォールがネットワークフローをインターセプトできるネットワーク環境の簡略ブロック図である。
【図２】実施形態に従ってネットワーク環境２００の例示的な図である。
【図３】実施形態に従ったＳＳＬ／ＴＬＳハンドシェイク通信でのネットワーク環境の実例である。
【図４】有利な実施形態に従ったＳＳＬ／ＴＬＳについてのネットワーク環境４００のブロック図である。
【図５】例示の実施形態に従ったプロキシとしてのセキュリティモジュールの実例である。
【図６】実施形態に従ったデータダイヤグラムの実例である。
【図７】実施形態に従った共用ライブラリを用いることにより共有シークレットを抽出するための処理を図示する単純化されたフローチャートである。
【図８】実施形態に従ったメモリ領域から共有シークレットを抽出するための処理を図示する単純化されたフローチャートである。
【図９】実施形態に従った暗号化されたネットワークフローを分析するための処理を図示する単純化されたフローチャートである。
【図１０】実施形態に従ったプロセッサに連結されたメモリも図示する。
【図１１】実施形態に従ったポイントツーポイント（ＰｔＰ）構成で構成されたコンピューティングシステムを図示する。
【発明を実施するための形態】
【０００５】
図１に戻り、図１は、実施形態に従ったネットワークフローをインターセプトできるファイアウォールのネットワーク環境の簡略ブロック図である。図１に示される実施形態において、ネットワーク環境１００は、インターネット１０２、クライアント１０４、ファイアウォール１０６、ポリシーサーバ１０８、メールサーバ１１０、およびウェブサーバ１１２を含むことができる。一般的に、クライアント１０４は、限定されるものではないが、デスクトップ型コンピュータ、サーバ、ラップトップ、モバイルデバイス、携帯電話、また、メールサーバ１１０またはウェブサーバ１１２などの他のノードと接続を受信または確立できる任意の他のタイプのデバイスを含む、ネットワーク接続における任意のタイプの終端ノードでよい。ファイアウォール１０６は、承認された通信を許可しながら、承認されていないアクセスをブロックすることによりなど、インターネット１０２または他のネットワークに参加されたクライアント１０４および複数の他のノードとの間で複数の通信を制御してよい。いくつかの例において、ファイアウォール１０６は、侵入防御システム、ネットワークアクセス制御デバイス、ウェブゲートウェイ、電子メールゲートウェイ、モバイルデバイス、またはインターネット１０２とクライアント１０４との間の任意の他のタイプのゲートウェイと、連結または一体化されてよい。さらに、ユーザクライアント１０４に近接したルーティングトポロジーでのファイアウォール１０６の配置は、任意である。
【０００６】
ポリシーサーバ１０８は、ファイアウォール１０６と連結され、または一体化されてよく、クライアント１０４を管理、複数のネットワークポリシーを運営および分配するために用いられてよい。したがって、この例示的な実施形態において、クライアント１０４は、ファイアウォール１０６のかたちで実装される複数のポリシーにより許可され、ポリシーサーバ１０８により管理されている場合、ファイアウォール１０６を介した接続を確立することにより、メールサーバ１１０またはウェブサーバ１１２などの、インターネット１０２に参加している複数のサーバと通信してよい。
【０００７】
図１の複数の要素のそれぞれは、ネットワーク通信についての実行可能な経路を提供する複数の単純なインターフェースを介して、または任意の他の適した接続（有線または無線）を介して互いに連結してよい。更に、これらの要素の１つ又は複数は、組み合わされ、または特定の構成ニーズの基づくアーキテクチャから除去されてよい。ネットワーク環境１００は、ネットワークでの複数のパケットの送信または受信のための伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）通信で可能な構成を含んでよい。ネットワーク環境１００は、また、ユーザデータグラムプロトコル／ＩＰ（ＵＤＰ／ＩＰ）または適切な特定のニーズに基づく任意の他の適したプロトコルと併用して動作してよい。
【０００８】
例示的な実施形態におけるネットワークセキュリティを提供するための技術を例示することを目的として、所与のネットワーク内で起こるアクティビティを理解することが重要である。以下の基礎的情報は、本開示が適切に説明されうる基準として見なされる。そのような情報は、説明のためにのみ誠実に提示されている。従って、本開示およびその可能性のある複数の適用の広い範囲を制限するためのいかなる方法でも解釈されるべきでない。複数の組織および複数の個人により用いられる典型的なネットワーク環境は、例えば、インターネットに接続される複数のサーバにホストされる複数のウェブページにアクセスする、電子的メール（すなわち、電子メール）メッセージを送信または受信する、または複数のファイルを交換するために、インターネットを用いることで、複数の他のネットワークと電子的に通信する能力を含む。しかし、悪意のあるユーザは、マルウェアを拡散し、機密情報へのアクセスを得るべく、インターネットを用いる新たな方策を発展させることを継続する。マルウェアは、概して、コンピュータの所有者のインフォームド・コンセントなしにコンピュータをアクセスおよび／または制御するために設計された任意のソフトウェアを含み、コンピュータウイルス、ボット、スパイウェア、アドウェアなどの任意の敵意をもった、押し付けがましい、または迷惑なソフトウェアの標識として最も頻繁に用いられる。一度、危険にさらされると、マルウェアは、ホストを破し、スパムまたは情報窃盗などの悪意のあるアクティビティにホストを利用するかもしれない。また、マルウェアは、一般的に、組織のネットワーク内に拡散され、または複数の他の組織または個人に他のネットワークに横切ることを可能にする１または複数の伝播ベクターを含む。複数の共通の伝播ベクターは、ローカルネットワーク内の複数のホストでの既知の脆弱性を活用すること、添付された悪意のあるプログラムを有する複数の電子メールを送信すること、または電子メール内で複数の悪意のあるリンクを提供することを含む。
【０００９】
セキュリティモジュールおよび抽出モジュールのいくつかの例の技術を図示することを目的として、介入者（ＭＩＴＭ）技術を理解することが重要である。１または複数の実施形態は、複数のセキュリティデバイスでの遮蔽ＳＳＬ（またはＴＬＳ）トラフィックについてのいくつかの実施形態が、宛先をなりすます証明書を用いることでセキュリティデバイスがＳＳＬ接続を終了して、次に第２のＳＳＬ接続を介してその宛先にデータをプロキシする複数のＭＩＴＭ技術を使用することを認識および考慮する。ユーザは、このなりすましを理解することができ、各接続についてこのなりすましを明示的に無視するか、セキュリティデバイスを信頼するようにユーザの機械を設定するかのいずれかで、警告はなくなる。
【００１０】
ＭＩＴＭを、セキュリティデバイスに実装するのにはお金がかかる。なぜなら、すべてのトラフィックを復号化および暗号化するニーズがあるからである。また、ＭＩＴＭは、それぞれの接続が隠されている状態で、高価な公開鍵暗号化動作を実行することをセキュリティデバイスに要求する。
【００１１】
ＭＩＴＭに伴う追加の問題は、ユーザが、目標のウェブサイト（サーバ）の真のＳＳＬ認証を得られないことにある。これは、ＳＳＬセキュリティのきわめて重要な恩恵である。しかし、ユーザは、セキュリティデバイスが到達されたことを知っているだけであり、本当にアクセスされているウェブサイトを知らない。この欠陥は、信頼のあるサイトのように見えるが、実際にはそのようなサイトを利用している複数のサイトに複数のユーザを案内する複数のフィッシング電子メールを複数の攻撃者に利用され得る。
【００１２】
更に、本開示の異なる実施形態は、ネットワークデバイスが２つの終点間のＳＳＬ／ＴＬＳセッションを終了し、再確立する、信頼されたクライアントが信頼されていないサーバと通信している状況を認識し、考慮する。これは、また、しばしば、ブレイクメイク接続と称される。信頼されたクライアントは、ネットワークアプライアンス（例えば、銀行のウェブサイト）を越える終点と通信しているにもかかわらず、ネットワークデバイス／ドメインの証明書でプロビジョニングされ、複数のセキュアセッションセットアップ処理でこれを受け入れる。実際には、このセッションは、クライアントの代わりに、最終的な終点への第２の別個のセッションを示す、ネットワークアプライアンスで終了される。このメカニズムは、セキュア通信チャネルに対する「介入者」のように、ネットワークアプライアンスがＴＬＳトラフィックへの可視性を得ることを可能にする。このアプローチは、あらゆるクライアント／セッションに対する接続をプロキシする必要があるので、ネットワークアプライアンス上で負担が生じる。よって、これらのプロキシ接続のすべてに対する複数のリソースを管理する必要がある。この状況は、ネットワークアプライアンスに著しいオーバヘッドを追加する。
【００１３】
また、本開示の異なる実施形態は、信頼されていないクライアントが信頼されたサーバと通信し、ネットワークアプライアンスが、ＳＳＬ／ＴＬＳセッションを認証するために用いられる公開／秘密鍵ペア（例えば、複数のＲＳＡ鍵）を含むその信頼されたサーバの証明書に対するアクセスを（いくつかのＯＯＢのやり方で）得る他の状況を認識し、考慮する。クライアントが、サーバの公開鍵で暗号化されたプレマスターシークレットをそのサーバに送信するＳＳＬ／ＴＬＳ動作のために、ネットワークアプライアンスは、途中でこの情報をキャプチャ／復号化し、ＳＳＬ／ＴＬＳハンドシェイク上でスヌープすることができる。これは、ネットワークアプライアンスが、複数のＳＳＬ／ＴＬＳセッション鍵を別々に計算し、その後、２つの終点間で暗号化された通信を復号化することを可能にする。しかし、この状況は、サーバの秘密鍵の所有権を信頼し、侵入保護またはファイアウォールなどのセキュリティデバイスをプロビジョニングすることにより、インターネット上で複数のサーバと接続している複数のクライアントマシンを持つ複数のユーザを保護することが求められる組織の共通の状況で適用されない。
【００１４】
本開示の異なる実施形態は、複数の企業がＳＳＬ／ＴＬＳトラフィックをスキャンする緊急のニーズを有する、マルウェア検出、データ損失保護、すでに使用されている複数のＭＩＴＭ技術、認証および暗号化の両方の複数のＭＩＴＭ偽装、ユーザが認証を忘れたことに気づき、信頼が損なわれる、ユーザがすべての接続に対して警告メッセージを見るとき、または信頼が正しいかどうかを全く知らないときの苛立ちの要因、といったことを認識し、考慮する。
【００１５】
この開示の１または複数の実施形態は、ネットワークデバイスの大きなオーバヘッドを低減するとともに、複数の暗号化されたネットワークストリームの可視性を単純化する新規のアプローチを提供する。
【００１６】
図２は、実施形態に従うネットワーク環境２００の例示的な図示である。この開示の態様で、ネットワーク環境２００は、クライアント２０２、ファイアウォール２０４、およびサーバ２０６を含む。図１に示されるように、ネットワーク環境２００は、ネットワーク環境１００の一例でよい。実施形態において、ネットワーク環境２００は、クライアント２０２、ファイアウォール２０４およびサーバ２０６間で動作する暗号化プロトコルセッション２０８を含んでよい。暗号化プロトコルセッション２０８は、さらに、ネットワークフロー２１０、対象データ２１１、および共有シークレット２１２を含んでよい。サーバ２０６は、さらに、権限の証明書２１４を含んでよい。ファイアウォール２０４は、さらに、順に、ネットワークフローのコピー２２２および暗号化されていないネットワークフロー２２４を含んでよいセキュリティモジュール２２０を含んでよい。クライアント２０２は、さらに、信頼リスト２１６、抽出モジュール２３０、共用ライブラリ２３２、およびアプリケーション２３４を含んでよい。
【００１７】
本開示の実施形態において、サーバ２０６は、権限２１４の証明書を含む。権限２１４の証明書は、デジタル証明書を発行するエンティティでよい。デジタル証明書は、証明書の名前付けされた対象者による公開鍵の所有権を認証する。これは、クライアント２０２が認証された公開鍵に対応する秘密鍵により作られたシグネチャまたはアサーションを信頼することを可能にする。
【００１８】
信頼関係のこのモデルにおいて、権限２１４の証明書は、証明書上でサーバ２０６およびクライアント２０２の両方により信頼された、信頼されたサードパーティである。クライアント２０２上で、信頼リスト２１６は、保持されてよい。信頼リスト２１６は、クライアント２０２が信頼するデジタル証明書を含んでよい。
【００１９】
１または複数の実施形態において、暗号化プロトコルセッション２０８は、クライアント２０２、ファイアウォール２０４、およびサーバ２０６間で動作する。暗号化プロトコルセッション２０８は、ネットワークフロー２１０を含む。ネットワークフロー２１０は、クライアント２０２とサーバ２０６との間の両方向で動作するデータの暗号化フローである。ファイアウォール２０４は、検査および解析のために、ネットワークフロー２１０をインターセプトしてよい。実施形態において、暗号化プロトコルセッション２０８について用いられる複数のプロトコル（複数のセキュア通信）は、トランスポート層セキュリティ（ＴＬＳ）またはその先行オペレーション、セキュアソケット層（ＳＳＬ）でよい。これらのプロトコルは、インターネットを介した通信を提供する複数の暗号化プロトコルである。これらのプロトコルは、この開示で交換可能に用いてもよい。ＴＬＳおよびＳＳＬは、鍵交換についての非対称暗号化、機密性についての対称暗号化、およびメッセージインテグリティについての複数のメッセージ確認コードを用いることで、トランスポート層に対するアプリケーション層でネットワーク接続の複数のセグメントを暗号化する。
【００２０】
クライアント２０２およびサーバ２０６は、また、ネットワークフロー２１０でのデータの認証について共有シークレット２１２（例えば、パスワード、鍵など）を維持してよい。共有シークレット２１２は、暗号化プロトコルセッション２０８間に構成されてよい。共有シークレット２１２は、クライアント２０２およびサーバ２０６間で共有され、知られている値でよい。実施形態において、例えば、共有シークレット２１２は、ＳＳＬ／ＴＬＳで用いられるようなマスターシークレットまたは複数のセッション鍵でよい。複数のセッション鍵は、セッションコンテキストでよく、公正なセッション鍵と同様に、初期化ベクター、用いられる暗号アルゴリズムを含んでよい。セッションコンテキストは、ペイロード（例えば、暗号化／インテグリティ／複数の圧縮アルゴリズム、複数の関連する鍵、複数の鍵サイズ、初期化ベクターなど）をデカプセル化するのに必要な暗号化情報を含んでよい。対照的に、公開／秘密非対称鍵構造は、それぞれの当事者が異なる鍵を持つので、クライアント２０２とサーバ２０６との間で共有されない。
【００２１】
抽出モジュール２３０は、クライアント２０２から共有シークレット２１２を抽出するよう構成される。具体的に、抽出モジュール２３０は、マスターシークレット、プレマスターシークレット、ハッシュベースメッセージ確認コード（ＨＭＡＣ）、および／または複数のセッション鍵を抽出してよい。抽出モジュール２３０は、クライアント２０２にロードされてよく、または、他の実施形態において、クライアント２０２へのアクセスをもつ別個のモジュールでよい。
【００２２】
実施形態において、抽出モジュール２３０は、共用ライブラリ２３２をアプリケーション２３４にロードしてよい。これは、抽出モジュール２３０がアプリケーション２３４を介して暗号化プロトコルセッション２０８にアクセスして、共有シークレット２１２を特定することを可能にする。共用ライブラリ２３２は、共用ライブラリでよく、または、共有オブジェクトは、実行可能なファイルによって共有されることを意図し、さらに共有されるオブジェクトファイルであるファイルである。共用ライブラリ２３２は、例えば、ダイナミックリンクライブラリ（ＤＬＬ）でよい。アプリケーション２３４は、暗号化プロトコルセッション２０８を介してサーバ２０６と通信している処理でよい。アプリケーション２３４は、例えば、ウェブブラウザでよい。
【００２３】
別の実施形態では、抽出モジュール２３０は、ネットワーク層でネットワークフロー２１０を監視し、ＳＳＬ初期ハンドシェイクなどのネットワークハンドシェイクの進捗度を検知するよう構成され、それで、アプリケーション２３４のメモリ空間２３１がネゴシエーションされる暗号化接続についての共有シークレット２１２を含んでよい時点を判断してよい。
【００２４】
抽出モジュール２３０は、例えば、マイクロソフト（登録商標）、ウィンドウズ（登録商標）、リナックス（登録商標）における同一のコンピュータシステム上の対象処理の処理メモリにアクセスするための複数のデバッギングシステムコールを用いることにより、アプリケーション２３４を実行する処理のメモリ空間２３１を開放するよう構成されてよい。抽出モジュール２３０は、メモリ空間２３１を検索し、共有シークレット２１２を特定するようにも構成されてよい。抽出モジュール２３０は、共有シークレット２１２をセキュリティモジュール２２０に送信するよう構成される。セキュリティモジュール２２０の送信のパスは、セキュアチャネルでもよい。共有シークレット２１２とともに、セキュリティモジュール２２０は、クライアント２０２およびサーバ２０６が用いるような同一の暗号化／復号化処理を用いることでネットワークフロー２１０を復号化することを可能にしてよい。セキュリティモジュール２２０は、異なるモードの動作で動作してよい。
【００２５】
一実施形態では、セキュリティモジュール２２０は、ネットワークフロー２１０をコピーしてネットワークフローのコピー２２２を作成するよう構成されてよい。ネットワークフローのコピー２２２は、次いで、冒されたネットワークフロー２１０なしに復号化して、暗号化されていないネットワークフロー２２４を作成してよい。
【００２６】
いくつかの実施形態では、セキュリティモジュール２２０は、暗号化モジュール２３０からの共有シークレット２１２を待つべくネットワークフロー２１０を遅延させ、ネットワークフローのコピー２２２を復号化する時間を割き、ネットワークフロー２１０を修正し、複数のセキュリティ問題または遅延のための任意の他の適した理由について暗号化されていないネットワークフロー２２４を検査してよい。他の実施形態において、セキュリティモジュール２２０は、ネットワークフロー２１０を遅延させず、単にネットワークフロー２１０をコピーしてよい。実施形態において、セキュリティモジュール２２０は、対象データ２１１について（一度復号化され、暗号化されていないネットワークフロー２２４のような）ネットワークフロー２１０および／またはネットワークフローのコピー２２２をスキャンするよう構成されてよい。対象データ２１１は、セキュリティモジュール２２０が、探しているデータ、例えば、ホスタイル、侵入、またはコンピュータウイルス、ボット、スパイウェア、アドウェアなどの迷惑なソフトウェアなどを含んでよい。対象データ２１１は、マルウェアでよい。
【００２７】
使用可能な専門用語において、および特定の一つの実施形態において、ＴＬＳまたはＳＳＬ接続の実例は、以下のように開始してよい。ネゴシエーションフェーズの間に、クライアント２０２が、サポートする最も高いＴＬＳプロトコルバージョン、乱数、提示された暗号スイートのリスト、および提示された圧縮方法を特定するメッセージを送信する。暗号スイートは、認証、暗号化、および、複数のＴＬＳまたはＳＳＬネットワークプロトコルを用いるネットワーク接続についてのセキュリティ設定をネゴシエーションするために用いられるメッセージ確認コード（ＭＡＣ）アルゴリズムの名前付けされた組み合わせである。また、クライアント２０２は、再開されたハンドシェイクを実行することを試みている場合、セッションＩＤを送信してよい。
【００２８】
応答において、サーバ２０６は、選択されたプロトコルバージョン、他の乱数、選択された暗号スイート、およびクライアントによって提示された複数の選択の中から選択された圧縮方法を含むメッセージで応答する。再開されたセッションを確認または許可すべく、サーバ２０６は、同一のセッションＩＤを送信してよい。新たなセッションを開始すべく、サーバ２０６は、新たなセッションＩＤを送信してよい。また、クライアント２０２は、プレマスターシークレット、公開鍵を含むまたはなにも含まない他のメッセージで応答してよい。プレマスターシークレットは、サーバ証明書の公開鍵を用いることで暗号化される。クライアント２０２およびサーバ２０６は、次いで、乱数およびプレマスターシークレットを使用して、「マスターシークレット」と称される共通シークレットを計算する。この接続についてのすべての他の鍵データは、このマスターシークレットから導出される。マスターシークレットは、クライアント２０２とサーバ２０６との間のそれぞれの通信セッションについての複数のセッション鍵を作成するために用いられてよい。プレマスターシークレット、マスターシークレット、およびセッション鍵は、共有シークレット２１２のすべての例である。
【００２９】
１または複数の実施形態は、ＳＳＬ／ＴＬＳ接続を監視し、マスターシークレット、プレマスターシークレットおよび／またはセッション鍵を直接抽出する、特定の明確に定義された複数のアプリケーションプログラミングインタフェース（ＡＰＩ）をインターセプトすることができるクライアント２０２上で、信頼されたエージェントとも称される抽出モジュール２３０を提供する。クライアント２０２上の抽出モジュール２３０は、共有シークレット２１２の抽出を実行してよい。この情報は、セキュアアウトオブバンド（ＯＯＢ）チャネルを介して、セキュリティモジュール２２０、信頼され許可されたネットワークアプライアンスに安全に共有される。他の実施形態において、情報は、安全でないチャネルを介して共有される。これは、セキュリティモジュール２２０が、暗号化プロトコルセッション２０８、ＳＳＬ／ＴＬＳ通信を復号化し、ネットワークフロー２１０内への可視性を得ることを可能にする。
【００３０】
使用可能な専門用語において、特定の１つの実施形態において、それぞれの暗号化プロトコルセッション２０８が確立されるときに、クライアント２０２、ユーザワークステーション上の特別なソフトウェア、抽出モジュール２０８は、共有シークレット２１２、ＳＳＬ鍵を探し出す。次に、発見プロトコルは、共有シークレット２１２を安全にセキュリティモジュール２２０に伝送する。クライアント２０２は、目標サイトの完全な認証で、ＳＳＬ接続エンドツーエンドを確立する。しかし、セキュリティモジュール２２０は、まだ、クライアント２０２を保護するためにその接続をスキャンできる。
【００３１】
さらに、共有シークレット２１２は、公開鍵ハンドシェイクが生じた後にのみ、セキュリティモジュール２３０で共有されてよい。したがって、セキュリティモジュール２３０は、データアイテムを通じた単一の対称復号化を用いるセッションを復号化できる。この処理は、ＭＩＴＭより速い。
【００３２】
本開示の１または複数の実施形態は、（１）ネットワークへの受動的な接続に用いることができるエンドツーエンド認証を予約し、（２）暗号化された複数のトラフィックストリーム内で可視性を得るために、第２の独立したＳＳＬ／ＴＬＳ接続が、構築されなければならず、あらゆる単一の接続についての状態を格納するセキュリティモジュール上のオーバヘッドを軽減し、（３）（ＭＩＴＭにサポートされていない）ＳＳＬでのユーザのクライアント側の複数の証明書と互換性がある。
【００３３】
この開示の実施形態は、ＳＳＬ／ＴＬＳマスターシークレットおよび／または複数のセッション鍵を抽出するアプローチに基づき、区別されたセキュアチャネルを用いる許可されたセキュリティモジュールでこれらを共有するクライアントを提供する。複数の実施形態は、また、エンドツーエンド認証を実行すべく、かつ複数のセキュリティデバイス（ＩＰＳ、ファイアウォール、セキュリティモジュール）が実装できる非常に効率のよい方法で、クライアントの能力を取り除くことなく、ネットワークフローをスキャンすることを可能にする。この開示の複数の実施形態は、クライアントの信頼を危険にさらすことなく、複数の暗号化プロトコルセッション（ＳＳＬ／ＴＬＳセッション）を復号化するシステムを提供する。
【００３４】
複数の実施形態は、ＳＳＬハンドシェイクが、変更なしにパスされ、元々の証明書、元々のＣＡトラスト、抽出モジュールがセキュリティモジュールとセッション鍵を共有し、鍵は、存続時間が短い認証情報であり、このセッションのみ影響し、復号化は、また、ＭＩＴＭより速く、復号化は、また、ＳＳＬ相互認証クライアント側およびサーバ認証をサポートでき、トラフィックの受動的モードの検査をサポートできることを提供する。複数の実施形態は、また、セキュリティデバイスは、プロキシ環境でも用いられることでき、本明細書でプロキシは、ＳＳＬ平文を修正する必要があるかもしれない、認証および信頼は、まだエンドツーエンドであり、接続は、すべてのデータがパススルーされる「検査モード」で開始し、もしプロキシが平文を変更する（例えば、ＵＲＬを修正、添付ファイルを取り除く）必要がある場合、接続は、「プロキシモード」に切り替わることを提供する。複数の実施形態の１または複数で、暗号化の状態は、ホストとサーバとの間で分割される。クライアントの復号化の状態は、初期状態のサーバの暗号化の状態になるようにコピーされる。サーバの復号化の状態は、初期状態のクライアントの暗号化の状態になるようにコピーされる。
【００３５】
セキュリティデバイスは、分けられた状態を用いることで、ＳＳＬデータを復号および再暗号化の両方を行う。ＳＳＬ平文は、これらのステップの間に変更されうる。一度プロキシが平文を修正すると、プロキシ内の暗号化の状態は、受信された状態および再暗号化された状態の間で、分化する。一度、再暗号化が開始されると、接続が終了するまで継続する。セキュリティモジュールは、ＳＳＬ鍵情報を用いて、ＳＳＬセッション情報を復号／検証し、マルウェア検出またはデータ損失保護のためにさらに複数のＳＳＬパケットを検査してよい。
【００３６】
本開示の１または複数の実施形態は、ネゴシエーションされることができる複数のＳＳＬパラメータを変更するために、ＳＳＬ／ＴＬＳハンドシェイクを変更するために提供する。そのような複数の実施形態において、初期化ベクター（ＩＶ）は、また、ＳＳＬ／ＴＬＳフィニッシュハンドシェイクメッセージの修正を許可するよう導出されなければならない。これは、共有シークレットのようなマスターシークレットを用いることにより達成されてよい。
【００３７】
別の実施形態では、ＩＶは、抽出モジュールによって直接的に抽出され、ＳＳＬ／ＴＬＳセッション鍵を共有するのと同一のやり方で、セキュリティモジュールで共有されてよい。
【００３８】
実施形態において、ハンドシェイクは、以下のように書き換えられてよい。ＳｅｒｖｅｒＨｅｌｌｏ／ＣｌｉｅｎｔＨｅｌｌｏについて、
Ａ）許可されたリストにＨｅｌｌｏ内の暗号スイートのリストを限定
Ｂ）許可されたリストにＣｌｉｅｎｔＨｅｌｌｏ内に暗号スイートのリストを変更
Ｃ）許可されたリスト内の１つにＳｅｒｖｅｒＨｅｌｌｏ内の選択された暗号化スイートを変更
Ｄ）クライアント／サーバからさらなるセキュアソースにランダムデータを変更
Ｅ）ＣｌｉｅｎｔＨｅｌｌｏからセッションを取り除くことによりセッションの再開を不許可
【００３９】
ＣｌｉｅｎｔＣｅｒｔｉｆｉｃａｔｅについて
Ａ）１または複数のＣｌｉｅｎｔＣｅｒｔｉｆｉｃａｔｅをサポート
Ｂ）１または複数のＣｌｉｅｎｔＣｅｒｔｉｆｉｃａｔｅを置き換え
Ｃ）１または複数のＣｌｉｅｎｔＣｅｒｔｉｆｉｃａｔｅを取り除く
【００４０】
ＣｌｉｅｎｔＫｅｙＥｘｃｈａｎｇｅについて、ランダムデータをクライアント／サーバから追加のセキュアソースに変更
【００４１】
１つの例示の実装において、クライアント２０２および／またはファイアウォール２０４は、ネットワークアプライアンス、サーバ、ルータ、スイッチ、ゲートウェイ、ブリッジ、ロードバランサ、プロセッサ、モジュール、またはネットワーク環境で情報を交換動作可能な任意の他の適したデバイス、コンポーネント、要素またはオブジェクトを包含するよう意図する複数のネットワーク要素である。複数のネットワーク要素は、ネットワーク環境で、データまたは情報を受信、送信、および／またはさもなくば通信するための複数の適したインターフェースとともに、複数の動作を促進する任意の適したハードウェア、ソフトウェア、コンポーネント、モジュール、またはオブジェクトを含んでよい。これは、データまたは情報の有効な交換を可能にする適切なアルゴリズムおよび通信プロトコルを含んでよい。しかし、ユーザクライアント２０２は、ネットワーク接続において中間点としてのサービスを行う傾向にあるゲートウェイまたはルータと対照的に、ネットワーク接続についての終点としてのサービスを行う傾向にあるように、複数の他のネットワーク要素と区別されてよい。
【００４２】
クライアント２０２は、また、スマートフォン、または他の同様な電気通信デバイスなどの複数の無線ネットワークノードの代表的なものであってよい。
【００４３】
ネットワーク環境２００に関連する内部構造に関して、クライアント２０２および／またはファイアウォール２０４のそれぞれは、本明細書で、概説される動作で用いられるための情報を格納する複数のメモリ要素を含むことができる。クライアント２０２および／またはファイアウォール２０４のそれぞれは、任意の適したメモリ要素（例えば、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電子的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、特定用途向け集積回路（ＡＳＩＣ）など）、ソフトウェア、ハードウェア、または、適切な、特定の必要性に基づく任意の他の適したコンポーネント、デバイス、要素、またはオブジェクトに、情報を保持してよい。本明細書で、開示される複数の任意のメモリアイテム（例えば、メモリ要素２５０および２５２）は、広義の用語「メモリ要素」の範囲内に包含されるように解釈されるべきである。クライアント２０２および／またはファイアウォール２０４により使用、トラッキング、送信、受信される情報は、任意のデータベース、レジスタ、キュー、テーブル、キャッシュ、制御リスト、または他のストレージ構造で提供されることができ、それらのすべては、任意の適したタイムフレームで参照されることができる。任意のそのようなストレージオプションは、本明細書中で用いられる広義の用語「メモリ要素」内に含まれてよい。
【００４４】
特定の例示の実装において、本明細書で概説される複数の機能は、非一時的媒体を含みうる１または複数の有形の媒体（例えば、ＡＳＩＣで提供される埋め込み論理、デジタルシグナルプロセッサ（ＤＳＰ）命令、プロセッサにより実行されるソフトウェア（潜在的にオブジェクトコードおよびソースコードを含む）、または他の同様な機械など）にエンコードされているロジックにより実装されてよい。これらの例のいくつかにおいて、メモリ要素は、本明細書で説明される動作について用いられるデータを格納できる。これは、本明細書で説明されるアクティビティを実行するために実行されるソフトウェア、ロジック、コード、またはプロセッサ命令を格納できるメモリ要素を含む。
【００４５】
１つの例示の実装において、クライアント２０２および／またはファイアウォール２０４は、本明細書で概説されるような複数の動作を達成または発展させるためのソフトウェアモジュール（例えば、抽出モジュール２３０および／またはセキュリティモジュール２２０）を含んでよい。他の実施形態において、そのような動作は、ハードウェアによって実行され、これらの要素に外的に実装され、または意図される機能を達成するいくつかの他のネットワークデバイスに含まれてよい。代替的に、これらの要素は、本明細書で概説されるような動作を達成するために、協調できるソフトウェア（または往復ソフトウェア）を含んでよい。さらに、複数の他の実施形態において、これらのデバイスの１またはすべては、動作を促進する任意の適したアルゴリズム、ハードウェア、ソフトウェア、コンポーネント、モジュール、インターフェース、またはオブジェクトを含んでよい。
【００４６】
更に、クライアント２０２および／またはファイアウォール２０４のそれぞれは、本明細書で説明されるようなアクティビティを実行するソフトウェアまたはアルゴリズムを実行できるプロセッサ２６０および２６２を含んでよい。
【００４７】
プロセッサは、本明細書で詳説される複数の動作を達成するためのデータに関連する任意のタイプの複数の命令を実行できる。一例において、プロセッサは、１つの状態または状況から他の状態または状況に要素または項目（例えば、データ）を変換しうる。他の例において、本明細書で概説されるアクティビティは、固定論理またはプログラマブル論理（例えば、プロセッサによって実行されるソフトウェア／コンピュータ命令）で実装されてよく、本明細書で特定される複数の要素は、いくつかのタイプのプログラマブルプロセッサ、プログラマブルデジタルロジック（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ）、または、デジタルロジック、ソフトウェア、コード、電子命令、またはそれらの任意の適した組み合わせを含むＡＳＩＣでありうる。本明細書で説明される複数の任意の潜在的な処理要素、モジュール、および機械は、広義の用語「プロセッサ」内に包含されるように解釈されるべきである。
【００４８】
図３は、実施形態に従ったＳＳＬ／ＴＬＳハンドシェイク通信を伴うネットワーク環境の実例である。ネットワーク環境３００は、クライアント３０２、ファイアウォール３０４、およびサーバ３０６を含む。さらに、クライアント２０２は、抽出モジュール３０８を含み、ファイアウォール３０４は、セキュリティ検査３１６を実行するセキュリティモジュール３１０を含み、サーバ３０６は、サーバ証明書３１２を含む。
【００４９】
サーバ証明書３１２は、図２の権限２１４の証明書の一例でよい。サーバ証明書３１２は、クライアント２０２にパススルーされる。クライアント２０２は、真の認証局トラスト３１４にサーバ証明書３１２を格納してよい。真の認証局トラスト３１４は、図２の信頼リスト２１６の一例でよい。
【００５０】
ネットワーク環境３００は、また、メッセージ３２０―３３６を含む。メッセージ３２０―３３６は、ＳＳＬ／ＴＬＳセッションに対するハンドシェイクの一部として含まれるメッセージでよい。ＳＳＬ／ＴＬＳセッションは、図２の暗号化プロトコルセッション２０８の一例でよい。
【００５１】
メッセージ３２０および３２２は、ＣｌｉｅｎｔＨｅｌｌｏおよびＳｅｒｖｅｒＨｅｌｌｏを含む初期メッセージでよい。ファイアウォール３０４は、メッセージ３２０がパススルーすることを可能にしてよい。メッセージ３２０および３２２は、別々にラベル付されるけれども、それらは、同一の情報を含む。
【００５２】
メッセージ３２４および３２６は、サーバ３０６がクライアント３０２に送信するサーバ証明書３１２でよい。ファイアウォール３０４は、また、これらのメッセージをパススルーする。
【００５３】
メッセージ３２４および３２６は、別々にラベル付されるけれども、それらは、同一の情報を含んでよい。サーバ証明書３１２をパススルーすることにより、クライアント３０２は、複数の通信がサーバ３０６から来たことを確認できる。
【００５４】
メッセージ３２８および３３０は、ネゴシエーションのためのフィニッシングメッセージである。メッセージ３２４および３２６は、別々にラベル付されるけれども、それらは、同一の情報を含む。他の実施形態において、セキュリティモジュール３１０が暗号スイートを選択したい場合、セキュリティモジュール３１０は、メッセージ３２８および／または３３０を変更してよい。この場合、それらは、同一でなくてよい。
【００５５】
メッセージ３３２は、抽出モジュール３０８が共有シークレットにセキュリティモジュール３１０を送信する場合でよい。メッセージ３３２は、また、セキュアメッセージでよい。
【００５６】
メッセージ３３４および３３６は、ネットワークフローを表わしてよい。これらのメッセージは、ファイアウォール３０６をパススルーされるデータを示す。１または複数の実施形態において、ファイアウォール３０６は、これらのメッセージがパススルーすることを許可し、複数の他の実施形態において、ファイアウォール３０６は、メッセージ３３４および３３６間を進む。後の状況で、ファイアウォール３０６は、メッセージ３３４および３３６を遅延、終了、修正してよい。
【００５７】
図４は、有利な実施形態に従ってＳＳＬ／ＴＬＳについてのネットワーク環境４００のブロック図である。ネットワーク環境４００は、クライアント４０２、ファイアウォール４０４、およびサーバ４０６を含む。さらに、クライアント２０２は、抽出モジュール４０８を含み、ファイアウォール３０４は、セキュリティモジュール３１０を含む。クライアント４０２は、図２に示されるようなクライアント２０２の一例でよい。ファイアウォール４０４は、図２に示されるようなファイアウォール２０４の一例でよい。サーバ４０６は、図２に示されるようなサーバ２０６の一例でよい。
【００５８】
クライアント２０２は、さらに、アプリケーション４１２およびオペレーティングシステム（ＯＳ）４１４を含む。アプリケーション４１２は、サーバ４０６とともに、暗号化プロトコルセッションを開始する処理でよい。アプリケーション４１２は、サーバ４０６へのデータの実際の送信を扱うオペレーティングシステム４１４にロードされてよい。
【００５９】
抽出モジュール４０８は、オペレーティングシステム４１４および／またはアプリケーション４１２から共有シークレットを抽出してよい。抽出モジュールは、セキュリティモジュール４１０に共有シークレット（ＳＳＬセッション鍵またはマスターシークレット）を送信する鍵シェアリングを実行する。これは、セキュリティモジュールがオペレーティングシステム４１４とサーバ４０６との間のネットワークフローで復号化４１６を実行することを可能にする。ネットワークフローは、ＳＳＬ／ＴＬＳ暗号化トラフィックでよい。
【００６０】
図５は、例示の実施形態に従うプロキシとしてのセキュリティモジュールの実例である。ネットワーク環境５０２は、ネットワークフロー５０４、セキュリティモジュール５０６、クライアントの復号化の状態５０８、サーバの復号化の状態５１０、クライアントの暗号化の状態５１２、およびサーバの暗号化の状態５１４を含んでよい。
【００６１】
図５の一部分（ａ）におけるセキュリティモジュール５０６は、検査モードでのプロキシでよい。検査モードの場合、セキュリティモジュール５０６は、ネットワークフロー５０４をコピーし復号化している。セキュリティモジュール５０６は、クライアントから来るネットワークフロー５０４を復号化するためのクライアントの復号化の状態５０８、およびサーバから来るネットワークフロー５０４を復号化するためのサーバの復号化の状態５１０を使用する。
【００６２】
図５の一部分（ｂ）において、セキュリティモジュール５０２は、プロキシモードに移行している。セキュリティモジュール５０６は、サーバの暗号化の状態５１４を作成するためのクライアントの復号化の状態５０８を引き受け、クライアントの暗号化の状態５１２を作成するためのサーバの復号化の状態５１０を引き受けてよい。検査モードにおける一部分（ａ）のような復号化に加えて、セキュリティモジュール５０６は、また、一部分（ｃ）におけるプロキシモードで暗号化できる。
【００６３】
一部分（ｃ）において、セキュリティモジュール５０６は、ネットワークフロー５０４の間にある。プロキシモードの間に、セキュリティモジュール５０６は、ネットワークフロー５０４をパススルー、復号化／暗号化、終了、および／または修正してよい。ネットワークフロー５０４を修正するために、セキュリティモジュールは、一部分（ａ）の前のように復号化してよいが、次に、クライアントの暗号化の状態５１２および／またはサーバの暗号化の状態５１４を使用して、ネットワークフロー５０４を暗号化してもよい。実施形態において、一度、セキュリティモジュールがネットワークフロー５０４の変更を開始すると、セキュリティモジュール５０６は、暗号化プロトコルＳＳＬ／ＴＬＳセッションの残りについてのネットワークフロー５０４の残りを暗号化／復号化してよい。
【００６４】
図６は、実施形態に従ったデータダイヤグラムの実例である。データダイヤグラム６００は、ＳＳＬ／ＴＬＳデータ構造を示す。データダイヤグラム６００は、データ構造６０２―６１６を含む。
【００６５】
抽出モジュールは、ＡＰＩフックまたはシグネチャベーススキャンでデータ構造６０２―６１６に関連した対象のアプリケーションのメモリおよびアドレスを検査してよい。クライアントは、セキュアＯＯＢチャネルを介してセキュリティモジュールに送信される前に、慎重に扱うべきＳＳＬ鍵情報を保護するために、複数の他のセキュリティサービスによって保護されてよい。
【００６６】
実施形態において、復号化パスは、ＣＦＳＭ：ＲｕｎｗｏｒｋＩｔｅｍ，Ｃｆｓｍ：Ｒｕｎ、ＣＦＳＭ：ＳｅｃｕｒｅＲｅｃｅｉｖｅ、ＩＣＳＥＣＵＲＥＳＯＣＫＥＴ：：ＲＥＣＥＩＶＥ_ＦＳＭ、ＩＣＳｅｃｕｒｅｓｏｃｋｅｔ： ：ＤｅｃｒｙｐｔＤａｔａ、およびＩＣＳｅｃｕｒｅｓｏｃｋｅｔ：：ＤｅｃｒｙｐｔＤａｔａを含むＷｉｎｉｎｅｔ.ｄｌｌでよい。それから、ＤｅｃｒｙｐｔＭｅｓｓａｇｅおよびＬｓａｕｎｓｅａｌＭｅｓｓａｇｅを含むＳｓｐｉｃｅｌｉ.ｄｌｌでよい。それから、ＳｐｕｎｓｅａｌＭｅｓｓａｇｅ、ＳｓｌＵｎｓｅａｌＭｅｓｓａｇｅＳｔｒｅａｍ、ＴｌｓＤｅｃｒｙｐｔＨａｎｄｌｅｒ、およびＴｌｓＤｅｃｒｙｐｔＭｅｓｓａｇを含むＳｃｈａｎｎｅｌ.ｄｌｌでよい。
【００６７】
それから、ＳｓｌＤｅｃｒｙｐｔｐａｃｋｅｔ、ＳＰＳｓｌＤｅｃｒｙｐｔＰａｃｋｅｔ、およびＴｌｓＤｅｃｒｙｐｔＰａｃｋｅｔを含むＮｃｒｙｐｔ.ｄｌｌでよい。それから、ＢｃｒｙｐｔＤｅｃｒｙｐｔを含むＢｃｒｙｐｔ.ｄｌｌでよい。それから、ＭＳＣｒｙｐｔＤｅｃｒｙｐｔ、ＭＳＢｌｏｃｋＤｅｃｒｙｐｔ、およびＡｅｓｃｂｃＤｅｃｒｙｐｔを含むＢｃｒｙｐｔｐｒｉｍｉｔｉｖｅｓ.ｄｌｌでよい。
【００６８】
実施形態において、関数は、ＤｅｃｒｙｐｔＭｅｓｓａｇｅ（）関数でよい。この関数は、以下のように用いられてよい。
ＳＥＣＵＲＩＴＹ_ＳＴＡＴＵＳ ＳＥＣ_Ｅｎｔｒｙ
ＤｅｃｒｙｐｔＭｅｓｓａｇｅ（  ｉｎ  ＰＣｔｘｔＨａｎｄｌｅ  ｐｈＣｏｎｔｅｘｔ，  ｉｎｏｕｔ  ＰＳｅｃＢｕｆｆｅｒＤｅｓｃ ｐＭｅｓｓａｇｅ, _ｉｎ ＵＬＯＮＧ ＭｅｓｓａｇｅＳｅｑＮｏ, _ｏｕｔ  ＰＵＬＯＮＧ  ｐｆＱＯＰ  ）
【００６９】
ＣｔｘｔＨａｎｄｌｅは、追加的なコンテキスト情報でよい。
【００７０】
ＣｔｘｔＨａｎｄｌｅは、ＣｔｘｔＨａｎｄｌｅ ｛Ｖｏｉｄ * Ｐ_ｖｔａｂｌｅ； ＬＳＡ_ＳＥＣ_ＨＡＮＤＬＥ ｕｓｅｒｃｏｎｔｅｘｔ；...｝によりＬＳＡ_ＳＥＣ_ＨＡＮＤＬＥにアクセスしてよい。
【００７１】
ＬＳＡ_ＳＥＣ_ＨＡＮＤＬＥを用いて、ＮＣＲＹＰＴ_ＫＥＹ_ＨＡＮＤＬＥがアクセスされてよい。ＣＳｓｌＣｏｎｔｅｘｔは、Ｃｉｐｈｅｒ ＩＤ、ＲｅａｄＫｅｙ、ＷｒｉｔｅＫｅｙおよびＳｅｓｓｉｏｎｌＤを含む。
【００７２】
ＮＣＲＹＰＴ_ＫＥＹ_ＨＡＮＤＬＥを用いて、ＢＣＲＹＰＴ ＫＥＹ ＨＡＮＤＬＥがアクセスされてよい。ＳＳＬ_ＫＥＹ_ＨＡＮＤＬＥは、ｈｍａｃ_ｋｅｙおよびｂｃｒｙｐｔ_ｋｅｙ ｈａｎｄｌｅを含んでよい。
【００７３】
ＢＣＲＹＰＴ_ＫＥＹ_ＨＡＮＤＬＥを用いて、共有シークレット（セッション鍵）は、取得されてよい。ＭＳＣＲＹＰＴ_ＳＹＭＭＫＥＹ_ＨＡＮＤＬＥは、セッション鍵およびラウンド鍵を含む。
【００７４】
図７は、実施形態に従って、共用ライブラリを用いることで共有シークレットを抽出するための処理を例示する単純化されたフローチャートである。フロー７００は、暗号化プロトコルセッションの間および／または前に動作する処理でよい。７１０で、抽出モジュールは、アプリケーションに共用ライブラリをロードする。７２０で、抽出モジュールは、アプリケーションで、任意の暗号化構造を特定する。７３０で、抽出モジュールは、複数の抽出関数で暗号化構造をフックする。
【００７５】
暗号化構造が呼び出されることに応答して、７４０で、実行モジュールは、複数の抽出関数を実行して、共有シークレットを特定する。７５０で、抽出モジュールは、共有シークレットを抽出する。７５０の後に、抽出モジュールは、共有シークレットをセキュリティモジュールにセキュアに伝送してよい。
【００７６】
使用可能な条件下で、および特定の１つの実施形態において、抽出モジュールは、アプリケーション（例えば、ウェブブラウザ）の処理空間にＤＬＬを挿入する。これを行うために、抽出モジュールは、ＬｏａｄＬｉｂｒａｒｙ関数Ｋｅｒｎｅｌ３２．ｄｌｌを探すためにＧｅｔＰｒｏｃｅｓｓＡｄｄｒｅｓｓを使用し、パスを伴う文字列を、ＶｉｒｔｕａｌＡｌｌｏｃＥｘおよびＷｒｉｔｅＰｒｏｃｅｓｓＭｅｍｏｒｙを介してウェブブラウザ処理空間に挿入されたＤＬＬに配置し、スレッド法としてＬｏａｄＬｉｂｒａｒｙを用いることでウェブブラウザ処理空間にスレッドを起動するためのＣｒｅａｔｅＲｅｍｏｔｅＴｈｒｅａｄを呼び出し、独立変数としてのみ、上記で割り当たられた文字列をパスする。それから、挿入されたＤＬＬは、ＳＣＨＡＥＬ.ＤＬＬを処理空間にプリロードし、暗号化データ構造の基数を探し、複数のカスタム関数でＳＣＨＡＮＮＥＬ.ＤＬＬの暗号化関数をフックする。次に、アプリケーションが複数の暗号化関数を要求する場合、フックされた複数の関数が呼び出され、その結果、複数のオリジナルのＳＣＨＡＮＮＥＬ関数を呼び出し、暗号化鍵素材について上記で探し出されたデータ構造を検査し、マスターシークレットも同様に見つけ出すかもしれず、複数のオリジナルのＳＣＨＡＮＮＥＬ関数によって戻された複数の値を戻す。
【００７７】
図８は、実施形態に従ったメモリ空間から共有シークレットを抽出するための処理を例示する単純化されたフローチャートである。フロー８００は、暗号化プロトコルセッションの間および／または前に動作する処理でよい。８１０で、抽出モジュールは、ネットワーク層でネットワークフローを監視する。抽出モジュールは、暗号化プロトコルセッションについてのハンドシェイクの開始を検索している。
【００７８】
８２０で、抽出モジュールは、暗号化プロトコルセッションのハンドシェイクの開始を特定する。開始を特定することに応答して、８３０で、抽出モジュールは、暗号化されたプロトコルセッションンを開始する処理のメモリ空間を開放する。１または複数の実施形態で、処理は、アプリケーションでよい。
【００７９】
８４０で、抽出モジュールは、処理のメモリ空間内暗号化プロトコルセッションで共有シークレットを特定する。８５０で、抽出モジュールは、共有シークレットを抽出する。８５０の後に、抽出モジュールは、セキュリティモジュールに共有シークレットを伝送してよい。
【００８０】
使用可能な条件下で、特定の１つの実施形態において、抽出モジュールは、複数のＣｌｉｅｎｔＨｅｌｌｏメッセージを見つけるための複数のＴＣＰストリーム内にフックしてよい。ＣｌｉｅｎｔＨｅｌｌｏメッセージが見つかる場合、セッションについての鍵素材が見つかるまで、すべてのＴＬＳメッセージが検査される。
【００８１】
ＳｅｓｓｉｏｎＩＤは、そのＳｅｒｖｅｒＨｅｌｌｏメッセージに対して抽出される。検査された処理によりそれぞれのパケットが処理される前および後に、その処理は、ＳＣＨＡＮＮＥＬ.ＤＬＬがロードされたかどうかを見つけ、ＳＣＨＡＮＮＥＬ.ＤＬＬ内に暗号化データ構造の基数を見つけ、ＳｅｒｖｅｒＨｅｌｌｏメッセージ内に見つかったセッションＩＤに対する鍵素材を見つけ、そこでプレマスターおよび／またはマスターシークレットも見つけるかもしれない、ＥｎｕｍＰｒｏｃｅｓｓＭｏｄｕｌｅｓおよびＲｅａｄＰｒｏｃｅｓｓＭｅｍｏｒｙを介してクエリーが行われる。一度、鍵素材が見つかると、鍵素材は、セキュリティモジュールに送信される。この処理は、適切なデータ構造についての処理空間を検索することにより、静的にリンクされるそれらを含む、図７における鍵素材を見つけることに拡張してよい。
【００８２】
図９は、実施形態に従った暗号化されたネットワークフローを分析するための処理を例示する単純化されたフローチャートである。フロー９００は、暗号化プロトコルセッションの間に動作する処理でよい。９０２で、セキュリティモジュールは、第１ノードと第２ノードとの間で暗号化されたネットワークフローを監視する。ネットワークフローは、第１ノードから開始される。実施形態において、第１ノードは、クライアントでよく、第２ノードはサーバでよい。暗号化されたネットワークフローは、第１ノードと第２ノードとの間で双方向に行き来する。
【００８３】
９０４で、セキュリティモジュールは、暗号化されたネットワークフローのコピーを形成すべく、暗号化されたネットワークフローを複製する。９０６で、セキュリティモジュールは、共有シークレットを用いることで、暗号化されたネットワークフローのコピーを復号化する。共有シークレットは、第１ノードおよび第２ノードに関連する。第１ノードおよび第２ノードの両方は、共有シークレットを知っている。実施形態において、第１ノードは、共有シークレットを提供する。共有シークレットを知ることにより、セキュリティモジュールは、ネットワークフローを干渉することなく、ネットワークフローを復号化できる。
【００８４】
９０８で、セキュリティモジュールは、対象データについてのネットワークフローのコピーをスキャンする。対象データは、クライアント、ユーザ、セキュリティモジュール、ファイアウォール、セキュリティソフトウェア、ポリシーサーバ、または他のエンティティにより対象とされるデータでよい。更に、１または複数の実施形態で、抽出モジュールは、９０２の前に、第１ノードから共有シークレットを抽出してよい。更に、１または複数の実施形態で、セキュリティモジュールは、９０２での監視の一部として、暗号化されたネットワークフローを遅延させ、暗号化されたネットワークフローを転送してよい。その実施形態において、セキュリティモジュールは、ネットワークフローのコピーをスキャンするための時間を与えるために転送を遅延させてよい。ネットワークフローのコピーでの対象データを特定することに応答して、セキュリティモジュールは、暗号化されたネットワークフローを終了してよい。
【００８５】
図１０は、実施形態に従ったプロセッサ１０００に連結されたメモリ１００２も例示する。メモリ１００２は、当業者に知られ、またはさもなくば利用可能であるように、（様々な層のメモリ階層を含む）任意の多種多様なメモリでよい。メモリ１００２は、プロセッサ１０００により実行される１または複数の命令でよいコード１００４を含んでよい。プロセッサ１０００は、コード１００４により示される複数の命令のプログラムシーケンスに従う。それぞれの命令は、フロントエンドロジック１００６に入り、１または複数のデコーダ１００８により処理される。
【００８６】
デコーダは、事前に定義されたフォーマットでの固定幅マイクロオペレーションなどのマイクロオペレーションを出力として生成し、もしくはオリジナルのコード命令を反映する他の複数の命令、複数のマイクロ命令、または複数の制御信号を生成してよい。フロントエンドロジック１００６は、概して複数のリソースを割り当て、実行のための変換命令に対応する動作をキューするレジスタリネーミングロジック１０１０およびスケジューリングロジック１０１２も含む。
【００８７】
プロセッサ１０００は、一セットの実行ユニット１０１６−１〜１０１６−Ｎを有する実行ロジック１０１４を含むように示される。いくつかの実施形態は、複数の特定の関数または複数の関数の複数のセットに対して専用の多数の実行ユニットを含んでよい。複数の他の実施形態は、特定の関数を実行できる１つのみの実行ユニット、または１つの実行ユニットを含んでよい。実行ロジック１０１４は、複数のコード命令により特定される複数の動作を実行する。
【００８８】
複数のコード命令により特定される動作の実行が完了した後、バックエンドロジック１０１８が、コード１００４の命令をリタイアさせる。一実施形態では、プロセッサ１０００は、アウトオブオーダー実行を許可するが、複数の命令のインオーダーリタイアメントを要求する。リタイアメントロジック１０２０は、当業者により知られている様々な形式（例えば、再注文バッファ処理など）を扱ってよい。このやり方で、プロセッサ１０００は、レジスタリネーミングロジック１０１０により利用されるデコーダ、ハードウェアレジスタ、およびテーブルと、実行ロジック１０１４により変更される任意のレジスタ（不図示）とにより生成される出力に少なくとも関して、コード１００４の実行中に変換される。
【００８９】
図１０には例示されないが、処理要素は、プロセッサ１０００とともにチップ上に複数の他の要素を含んでよい。例えば、処理要素は、プロセッサ１０００と共にメモリ制御ロジックを含んでよい。処理要素は、Ｉ／Ｏ制御ロジックを含んでよく、および／またはメモリ制御ロジックと一体化されたＩ／Ｏ制御ロジックを含んでよい。処理要素は、１または複数のキャッシュも含んでよい。
【００９０】
図１１は、実施形態に従ったポイントツーポイント（ＰｔＰ）構成で構成されたコンピューティングシステム１１００を図示する。具体的には、図１１は、複数のプロセッサ、メモリ、および入出力デバイスが、多数のポイントツーポイントインターフェースにより相互接続されたシステムを示す。
【００９１】
図１１に図示されるように、システム１１００は、プロセッサ１１０２および１１０４の２つのみが明確に図示されているが、複数のプロセッサを含んでよい。プロセッサ１１０２および１１０４は、それぞれ、プログラムの複数の処理を実行する一セットのコア１１０３および１１０５を含んでよい。プロセッサ１１０２および１１０４は、また、それぞれ、メモリ１１１０および１１１２と通信する内蔵型メモリコントローラロジック（ＭＣ）１１０６および１１０８を含んでよい。メモリ１１１０および／または１１１２は、これらがメモリ１１１２を参照して開示されるなどの様々なデータを格納してよい。代替の実施例において、メモリコントローラロジック１１０６および１１０８は、プロセッサ１１０２および１１０４から分離された別個のロジックでよい。
【００９２】
プロセッサ１１０２および１１０４は、これらが図１のプロセッサ１０２を参照して開示されるなどの任意のタイプのプロセッサでよい。プロセッサ１１０２および１１０４は、それぞれ、ポイントツーポイントインターフェース回路１１１６および１１１８を用いることで、ポイントツーポイント（ＰｔＰ）インターフェース１１１４を介してデータを交換してよい。プロセッサ１１０２および１１０４は、それぞれ、ポイントツーポイントインターフェース回路１１２６、１１２８、１１３０および１１３２を用いることで、個々のポイントツーポイントインターフェース１１２２および１１２４を介してチップセット１１２０とデータを交換してよい。チップセット１１２０は、また、ＰｔＰインターフェース回路でありうるインターフェース回路１１３７を用いることにより、高パフォーマンスグラフィクスインターフェース１１３６を介して、高パフォーマンスグラフィクス回路１１３４とデータを交換してよい。代替の実施例において、図１１に図示される任意のまたはすべてのＰｔＰリンクは、１つのＰｔＰリンクではなく、マルチドロップバスとして実装されることができる。
【００９３】
少なくとも１つ実施形態は、本明細書で開示されるように、プロセッサ１１０２および１１０４内で提供されてよい。しかしながら、他の実施形態は、図１１のシステム１１００内の他の回路、ロジックユニット、またはデバイスに存在してよい。さらに、他の実施形態は、図１１に図示される複数の回路、ロジックユニット、またはデバイスの至る所に割り振られてよい。
【００９４】
チップセット１１２０は、インターフェース回路１１４１を介してバス１１４０と通信してよい。バス１１４０は、バス１１４０を介して通信する、バスブリッジ１１４２およびＩ／Ｏデバイス１１４３などの１または複数のデバイスを有してよい。バス１１４４を介して、バスブリッジ１１４３は、キーボード／マウス１１４５（または、例えばタッチスクリーンなどの他の入力装置）、通信デバイス１１４６（モデム、ネットワークインターフェースデバイス、またはコンピュータネットワークを介して通信できる他のタイプの通信デバイスなど）、オーディオＩ／Ｏデバイス１１４７、および／または、データストレージデバイス１１４８などの複数の他のデバイスと通信してよい。
【００９５】
データ記憶デバイス１１４８は、プロセッサ１１０２および／または１１０４により実行されてよいコード１１４９を含んでよい。代替の実施例において、バスアーキテクチャの任意の一部は、１または複数のＰｔＰリンクで実装されることができる。
【００９６】
図１０および１１に示されるコンピュータシステムは、本明細書で開示される様々な実施形態で利用されてよい複数のコンピューティングシステムの複数の実施形態の略図である。図１０および１１に示される複数のシステムの様々なコンポーネントは、システムオンチップ（ＳｏＣ）アーキテクチャまたは他の適した構成で組み合わせられてよいことは理解されよう。例えば、本明細書で開示される複数の実施形態は、例えば、スマートセルラーフォンなどのモバイルデバイス、タブレットコンピュータ、携帯情報端末、ポータブルゲームデバイスなどのシステム内に組み込まれることができる。
【００９７】
これらのモバイルデバイスは、少なくともいくつかの実施形態でＳｏＣアーキテクチャを備えてよいことは理解されよう。
【００９８】
特定の例の実装において、本明細書で概説されるセキュリティモジュールおよび抽出モジュールの機能は、１または複数の有形の媒体（例えば、特定用途向け集積回路（ＡＳＩＣ）で提供される埋め込み論理、デジタルシグナルプロセッサ（ＤＳＰ）命令、プロセッサ、または他の同様な機械によって実行されるソフトウェア（潜在的にオブジェクトコードおよびソースコードを含有）など）にエンコードされているロジックによって実装されてよいことに留意すべきである。これらの例のいくつかにおいて、メモリ要素は、本明細書で説明される動作のために用いられるデータを格納できる。
【００９９】
これは、本明細書で説明されるアクティビティを実行すべく、実行されるソフトウェア、ロジック、コードまたはプロセッサ命令を格納することができるメモリ要素を含む。プロセッサは、ここで、本明細書で詳説される動作を達成するためのデータに関連する任意のタイプの命令を実行できる。一例において、プロセッサは、１つの状態または状況から他の状態または状況に要素または項目（例えば、データ）を変換できる。他の例において、本明細書で概説される複数のアクティビティは、固定論理またはプログラマブル論理（例えば、プロセッサによって実行されるソフトウェア／コンピュータ命令）で実装されてよい。本明細書で説明される複数の要素は、いくつかのタイプのプログラマブルプロセッサ、プログラマブルデジタルロジック（例えば、ＦＰＧＡ、ＥＰＲＯＭ、ＥＥＰＲＯＭ）またはデジタル論理、ソフトウェア、コード、電子命令および任意の適したそれらの組み合わせを含むＡＳＩＣでありうる。
【０１００】
１つの例示の実装において、セキュリティモジュールおよび抽出モジュールは、本明細書で概説される複数のセキュリティアクティビティを達成するためにソフトウェアを含んでよい。セキュリティモジュールおよび抽出モジュールは、本明細書で開示されるように、複数のセキュリティアクティビティを達成するのに用いられる情報を格納するための複数のメモリ要素を含むことができる。更に、セキュリティモジュールおよび抽出モジュールは、本明細書で開示されるように、複数のセキュリティアクティビティを実行するソフトウェアまたはアルゴリズムを実行できるプロセッサを含んでよい。これらのデバイスは、任意の適したメモリ要素（ランダムアクセスメモリ（ＲＡＭ）、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＡＳＩＣなど）、ソフトウェア、ハードウェアに、または任意の他の適したコンポーネント、デバイス、要素、または適切な特定の必要性に基づくオブジェクトに、情報をさらに保持してよい。更に、セキュリティモジュールおよび抽出モジュールは、ソフトウェア、ハードウェア、ファームウェア、またはそれらの組み合わせでありうる。本明細書で説明される任意のメモリアイテム（例えば、データベース、テーブル、ツリー、キャッシュなど）は、広義の用語「メモリ要素」内に包含されるように解釈されるべきである。同様に、本明細書で記載される潜在的な処理要素、モジュールおよび機械は、広義の用語「プロセッサ」内に包含されるように解釈されるべきである。
【０１０１】
上記で提供される例は、本明細書で提供される様々な他の例と同様に、インタラクションが、２、３、４つの要素に関して説明されてよいことを留意すべきである。しかし、これは、明確性および単なる例示を目的としている。特定の場合、限定された数要素を参照することのみにより所与のセットの複数のフローの１または複数の機能を説明することを容易にできる。セキュリティモジュールおよび抽出モジュール（およびそれらの教示）は、より複雑な／高機能な構成および設定と同様に、多数のコンポーネントを容易に拡張および適合されてよい。従って、提供される例は、または、無数の他のアーキテクチャに潜在的に適用されるようなセキュリティモジュールおよび抽出モジュールの範囲を制限せず、それらの広い教示を妨げるべきでない。
【０１０２】
先行するフロー図における複数の動作は、セキュリティモジュールおよび抽出モジュールにより、または内で実行されてよい可能な複数のシナリオおよび複数のパターンのいくつかのみを例示していることを留意すべきことも重要である。
【０１０３】
これらの動作のいくつかは、適切に削除または取り除かれてよく、または本開示の範囲から大幅に逸脱しないで、修正または変更されてよい。さらに、これらの動作の多数は、同時にまたはパラレルに、１または複数の追加の動作を実行するように説明されている。しかし、これらの動作のタイミングは、大幅に変更されてよい。先行の動作フローは、例示および説明を目的として提示されている。
【０１０４】
セキュリティモジュールおよび抽出モジュールは、任意の適した構成、年代、設定、およびタイミングメカニズムが本開示の教示を逸脱せずに提供されうる、かなりのフレキシビリティを提供する。
【０１０５】
本開示は、特定の構成よび設定を参照して詳述されているけれども、これらの例示的な設定および構成は、本開示の範囲を実質的に逸脱することなくかなり変更されてよい。
【０１０６】
以下の複数の例は、本明細書に従った複数の実施形態に関連する。１または複数の実施形態は、暗号化されたネットワークフローを分析するための方法を提供してよい。方法は、第１ノードから開始された暗号化されたネットワークフローを第１ノードと第２ノードとの間で監視する段階と、暗号化されたネットワークフローのコピーを形成すべく、暗号化されたネットワークフローを複製する段階と、第１ノードと第２ノードとに関連する共有シークレットを用いることにより、暗号化されたネットワークフローのコピーを復号化する段階と、対象データについてのネットワークフローのコピーをスキャンする段階とを含んでよい。
【０１０７】
一例の実施形態は、さらに、第１ノードから共有シークレットを抽出する段階を含む。
【０１０８】
一例の実施形態は、さらに、暗号化されたネットワークフローを遅延させ、暗号化されたネットワークフローを転送することを含む。
【０１０９】
一例の実施形態は、さらに、ネットワークフローのコピー内の対象データを特定することに応答して、暗号化されたネットワークフローを終了する段階を含む。
【０１１０】
一例の実施形態は、さらに、ネットワークフローのコピー内の対象データを特定することに応答して、転送の前に、共有シークレットを用いることにより暗号化されたネットワークフローを復号化する段階と、対象データを除去すべく、暗号化されていないネットワークフローを修正する段階と、共有シークレットを用いることにより修正されたネットワークフローを暗号化する段階と、修正されたネットワークフローを転送する段階とを含む。
【０１１１】
一例の実施形態は、さらに、第１ノードから共有シークレットを抽出する段階が、暗号化プロトコルセッションにアクセスする第１ノード上のアプリケーションに、アプリケーションを介した暗号化プロトコルセッションへのアクセスを許可する共用ライブラリをロードする段階と、暗号化プロトコルセッション内の共有シークレットを特定する段階とを含むことを含む。
【０１１２】
一例の実施形態は、さらに、第１ノードから共有シークレットを抽出する段階が、ネットワーク層でネットワークフローを監視する段階と、暗号化プロトコルセッションのハンドシェイクの開始を特定する段階と、開始を特定することに応答して、暗号化プロトコルセッションを開始する処理のメモリ空間を開放する段階と、処理のメモリ空間内の暗号化プロトコルセッションでの共有シークレットを特定する段階を含むことを含む。  一例の実施形態は、さらに、共有シークレットは、マスターシークレット、プレマスターシークレット、セッションコンテキストの少なくとも１つである。
【０１１３】
本明細書中で用られるように、文言「少なくとも１つ」は、リストの任意の１つまたは組み合わせを意味することができる。例えば、Ａ、ＢおよびＣの少なくとも１つは、Ａ、ＢまたはＣ、あるいはそれらの組み合わせを意味することができる。
【０１１４】
一例の実施形態は、さらに、第１ノードと第２ノードとの間のネットワークフローを暗号化するために用いられる暗号化方式の数を制限する段階を含む。
【０１１５】
１または複数の実施形態は、第１ノードから共有シークレットを抽出するための方法、装置、および／または機械アクセス可能な記憶媒体を提供する。方法は、第１ノード上のアプリケーションに共用ライブラリをロードする段階と、暗号化プロトコルセッションで共有シークレットを特定する段階を含む。アプリケーションは、暗号化プロトコルセッションにアクセスする。共用ライブラリは、アプリケーションを介した暗号化プロトコルセッションへのアクセスを許可する。
【０１１６】
１または複数の実施形態は、第１ノードからの共有シークレットを抽出するための方法、装置、および／または機械アクセス可能な記録媒体を提供する。
【０１１７】
方法は、ネットワーク層でネットワークフローを監視する段階と、暗号化プロトコルセッションのハンドシェイクの開始を特定する段階と、開始を特定することに応答して、暗号化プロトコルセッションを開始する処理のメモリ空間を開放する段階と、処理のメモリ空間内の暗号化プロトコルセッションでの共有シークレットを特定する段階とを含む。
【０１１８】
一例の実施形態は、さらに、処理のメモリ空間から共有シークレットを抽出する段階を含む。  一例の実施形態は、さらに、セキュリティモジュールに共有シークレットを送信する段階を含む。  １または複数の実施形態は、装置を提供する。
【０１１９】
装置は、第１ノードから開始された暗号化されたネットワークフローを第１ノードと第２ノードとの間で監視し、暗号化されたネットワークフローのコピーを形成すべく、暗号化されたネットワークフローを複製し、第１ノードと第２ノードとに関連する共有シークレットを用いることにより、暗号化されたネットワークフローのコピーを復号化し、対象データについてのネットワークフローのコピーをスキャンするよう構成されるセキュリティモジュールを備える。
【０１２０】
一例の実施形態は、第１ノードから共有シークレットを抽出するよう構成された抽出モジュールをさらに備える。
【０１２１】
一例の実施形態は、さらに、セキュリティモジュールが、暗号化されたネットワークフローを遅延させ、暗号化されたネットワークフローを転送するようさらに構成されることを含む。
【０１２２】
一例の実施形態は、さらに、セキュリティモジュールがネットワークフローのコピー内の対象データを特定することに応答して、暗号化されたネットワークフローを終了するようさらに構成されることを含む。
【０１２３】
一例の実施形態は、さらに、セキュリティモジュールが、ネットワークフローのコピー内の対象データを特定することに応答して、転送の前に、共有シークレットを用いることにより暗号化されたネットワークフローを復号化し、対象データを除去すべく、暗号化されていないネットワークフローを修正し、共有シークレットを用いることにより修正されたネットワークフローを暗号化し、修正されたネットワークフローを転送するようさらに構成されることを含む。
【０１２４】
一例の実施形態は、さらに、第１ノードから共有シークレットを抽出するよう構成された抽出モジュールが、暗号化プロトコルセッションにアクセスする第１ノード上のアプリケーションに、アプリケーションを介した暗号化プロトコルセッションへのアクセスを許可する共用ライブラリをロードし、暗号化プロトコルセッション内の共有シークレットを特定するよう構成された抽出モジュールを含むことを含む。
【０１２５】
一例の実施形態は、さらに、第１ノードから共有シークレットを抽出するよう構成された抽出モジュールは、ネットワーク層でネットワークフローを監視し、暗号化プロトコルセッションのハンドシェイクの開始を特定し、開始を特定することに応答して、暗号化プロトコルセッションを開始する処理のメモリ空間を開放し、処理のメモリ空間内の暗号化プロトコルセッションでの共有シークレットを特定する構成された抽出モジュールを含むことを含む。
【０１２６】
一例の実施形態は、共有シークレットは、マスターシークレット、プレマスターシークレット、セッションコンテキストの少なくとも１つであることをさらに含む。
【０１２７】
一例の実施形態は、さらに、セキュリティモジュールが、第１ノードと第２ノードとの間のネットワークフローを暗号化するために用いられる暗号化方式の数を制限するようさらに構成されることを含む。
【０１２８】
１または複数の実施形態は、暗号化されたネットワークフローを分析するための命令が格納された少なくとも１つの機械アクセス可能な記憶媒体を提供する。命令は、機械で実行される場合、機械に、第１ノードから開始された暗号化されたネットワークフローを第１ノードと第２ノードとの間で監視する段階と、暗号化されたネットワークフローのコピーを形成すべく、暗号化されたネットワークフローを複製する段階と、記第１ノードと第２ノードとに関連する共有シークレットを用いることにより、暗号化されたネットワークフローのコピーを復号化する段階と、対象データについてのネットワークフローのコピーをスキャンする段階とを実行させる。
【０１２９】
一例の実施形態は、さらに、命令は、機械で実行される場合、機械に、第１ノードから共有シークレットを抽出する段階を実行させることを含む。
【０１３０】
一例の実施形態は、さらに、命令は、機械で実行される場合、機械に、暗号化されたネットワークフローを遅延させる段階、暗号化されたネットワークフローを転送する段階を実行させることを含む。
【０１３１】
一例の実施形態は、さらに、命令は、機械で実行される場合、機械に、ネットワークフローのコピー内の対象データを特定することに応答して、暗号化されたネットワークフローを終了する段階を実行させることを含む。
【０１３２】
一例の実施形態は、さらに、命令は、機械で実行される場合、機械に、ネットワークフローのコピー内の対象データを特定することに応答して、転送の前に、共有シークレットを用いることにより暗号化されたネットワークフローを復号化する段階と、対象データを除去すべく、暗号化されていないネットワークフローを修正する段階と、共有シークレットを用いることにより修正されたネットワークフローを暗号化する段階と、修正されたネットワークフローを転送する段階とを実行させることを含む。
【０１３３】
一例の実施形態は、さらに、命令は、機械で実行される場合、機械に、第１ノードから共有シークレットを抽出させ、さらに命令は、機械で実行される場合、機械に、暗号化プロトコルセッションにアクセスする第１ノード上のアプリケーションに、アプリケーションを介した暗号化プロトコルセッションへのアクセスを許可する共用ライブラリをロードする段階と、暗号化プロトコルセッション内の共有シークレットを特定する段階とを実行させることを含む。
【０１３４】
一例の実施形態は、さらに、命令は、機械で実行される場合、機械に、第１ノードから共有シークレットを抽出させ、さらに命令は、機械で実行される場合、機械に、ネットワーク層でネットワークフローを監視する段階と、暗号化プロトコルセッションのハンドシェイクの開始を特定する段階と、開始を特定することに応答して、暗号化プロトコルセッションを開始する処理のメモリ空間を開放する段階と、処理のメモリ空間内の暗号化プロトコルセッションでの共有シークレットを特定する段階とを実行させることを含む。
【０１３５】
一例の実施形態は、さらに、共有シークレットが、マスターシークレット、プレマスターシークレット、セッションコンテキストの少なくとも１つであることを含む。
【０１３６】
一例の実施形態は、さらに、命令は、機械で実行される場合、機械に、第１ノードと第２ノードとの間のネットワークフローを暗号化するために用いられる暗号化方式の数を制限する段階を実行させることを含む。
【図１】
0006006423.tif 000002
【図２】
0006006423.tif 000003
【図３】
0006006423.tif 000004
【図４】
0006006423.tif 000005
【図５】
0006006423.tif 000006
【図６】
0006006423.tif 000007
【図７】
0006006423.tif 000008
【図８】
0006006423.tif 000009
【図９】
0006006423.tif 000010
【図１０】
0006006423.tif 000011
【図１１】
0006006423.tif 000012