特許第6407926号(P6407926)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

特許6407926ネットワーク環境における暗号化データ検査
<>
  • 特許6407926-ネットワーク環境における暗号化データ検査 図000002
  • 特許6407926-ネットワーク環境における暗号化データ検査 図000003
  • 特許6407926-ネットワーク環境における暗号化データ検査 図000004
  • 特許6407926-ネットワーク環境における暗号化データ検査 図000005
  • 特許6407926-ネットワーク環境における暗号化データ検査 図000006
  • 特許6407926-ネットワーク環境における暗号化データ検査 図000007
  • 特許6407926-ネットワーク環境における暗号化データ検査 図000008
  • 特許6407926-ネットワーク環境における暗号化データ検査 図000009
  • 特許6407926-ネットワーク環境における暗号化データ検査 図000010
  • 特許6407926-ネットワーク環境における暗号化データ検査 図000011
  • 特許6407926-ネットワーク環境における暗号化データ検査 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6407926
(24)【登録日】2018年9月28日
(45)【発行日】2018年10月17日
(54)【発明の名称】ネットワーク環境における暗号化データ検査
(51)【国際特許分類】
   H04L 9/08 20060101AFI20181004BHJP
   G06F 21/60 20130101ALI20181004BHJP
   H04L 12/70 20130101ALI20181004BHJP
【FI】
   H04L9/00 601C
   G06F21/60 320
   H04L12/70 100Z
【請求項の数】22
【全頁数】28
(21)【出願番号】特願2016-175937(P2016-175937)
(22)【出願日】2016年9月8日
(62)【分割の表示】特願2015-531353(P2015-531353)の分割
【原出願日】2013年10月18日
(65)【公開番号】特開2017-22751(P2017-22751A)
(43)【公開日】2017年1月26日
【審査請求日】2016年9月9日
(31)【優先権主張番号】13/656,406
(32)【優先日】2012年10月19日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】リ、シャオニン
(72)【発明者】
【氏名】グレウォール、カランヴィア エス.
(72)【発明者】
【氏名】クーパー、ジェフリー エイチ.
(72)【発明者】
【氏名】グージック、ジョン アール.
【審査官】 中里 裕正
(56)【参考文献】
【文献】 特表2003−508846(JP,A)
【文献】 米国特許出願公開第2003/0191963(US,A1)
【文献】 米国特許出願公開第2009/0204980(US,A1)
【文献】 米国特許第05974549(US,A)
【文献】 米国特許第06546486(US,B1)
【文献】 米国特許第07590844(US,B1)
【文献】 相見眞男 他,WindowsOS上での不正なファイルアクセスの検知・無効化処理における負荷低減手法,コンピュータセキュリティシンポジウム2010,2010年10月12日,p.207-211
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
G06F 21/60
H04L 12/70
(57)【特許請求の範囲】
【請求項1】
第1ノード上のアプリケーションに共用ライブラリをロードする段階と、
前記共用ライブラリを使用して、前記アプリケーションに関連する暗号化プロトコルセッションにアクセスする段階と、
暗号化構造が呼び出されることに応答して1または複数の抽出関数を実行することによって、共有シークレットを特定する段階と
前記暗号化プロトコルセッションから前記共有シークレットを抽出する段階と、
前記第1ノードと第2ノードとの間に構築された前記暗号化プロトコルセッションのネットワークフローを受信するネットワークアプライアンスのセキュリティモジュールに前記共有シークレットを送信する段階と
をコンピュータに実行させるためのプログラム。
【請求項2】
第1ノード上のアプリケーションに共用ライブラリをロードする段階と、
前記共用ライブラリを使用して、前記アプリケーションに関連する暗号化プロトコルセッションにアクセスする段階と、
前記暗号化プロトコルセッションから共有シークレットを抽出する段階と、
前記第1ノードと第2ノードとの間でネゴシエーションされる複数のパラメータを調整すべく、前記暗号化プロトコルセッションのハンドシェイクを修正する段階と、
前記第1ノードと前記第2ノードとの間に構築された前記暗号化プロトコルセッションのネットワークフローを受信するネットワークアプライアンスのセキュリティモジュールに前記共有シークレットを送信する段階と
をコンピュータに実行させるためのプログラム。
【請求項3】
前記暗号化プロトコルセッションにアクセスする段階は、
前記アプリケーションにおける暗号化構造を特定する段階と、
1または複数の抽出関数で前記暗号化構造をフックする段階と
を含む、請求項1または2に記載のプログラム。
【請求項4】
前記共有シークレットは、1または複数の抽出関数を実行することによって、特定され、抽出される、請求項2に記載のプログラム。
【請求項5】
前記1または複数の抽出関数は、前記暗号化構造が呼び出されることに応答して実行される、請求項3に記載のプログラム。
【請求項6】
前記共有シークレットは、前記暗号化プロトコルセッションに関連するハンドシェイクが前記第1ノードと前記第2ノードとの間で生じた後、前記セキュリティモジュールに送信される、請求項1からのいずれか1つに記載のプログラム。
【請求項7】
前記共有シークレットは、マスターシークレット、プレマスターシークレット、およびセッションコンテキストのうちの少なくとも1つである、請求項1から請求項のいずれか1つに記載のプログラム。
【請求項8】
前記共用ライブラリは、前記アプリケーションを介して前記暗号化プロトコルセッションにアクセスすることを可能にする、請求項1から請求項のいずれか1つに記載のプログラム。
【請求項9】
前記暗号化プロトコルセッションの前記ハンドシェイクの修正は、前記第1ノードと前記第2ノードとの間のネットワークフローを暗号化するために用いられる暗号化方式の数を制限する段階を含む、請求項に記載のプログラム。
【請求項10】
請求項1から9のいずれか1つに記載のプログラムを格納するコンピュータ可読記憶媒体。
【請求項11】
少なくとも部分的にハードウェアロジックを含むロジックを備え、
前記ロジックは、
第1ノード上のアプリケーションに共用ライブラリをロードし、
前記共用ライブラリを使用して、前記アプリケーションに関連する暗号化プロトコルセッションにアクセスし、
暗号化構造が呼び出されることに応答して1または複数の抽出関数を実行することによって、共有シークレットを特定し、
前記暗号化プロトコルセッションから前記共有シークレットを抽出し、
前記第1ノードと第2ノードとの間に構築された前記暗号化プロトコルセッションのネットワークフローを受信するネットワークアプライアンスのセキュリティモジュールに前記共有シークレットを送信する、装置。
【請求項12】
少なくとも部分的にハードウェアロジックを含むロジックを備え、
前記ロジックは、
第1ノード上のアプリケーションに共用ライブラリをロードし、
前記共用ライブラリを使用して、前記アプリケーションに関連する暗号化プロトコルセッションにアクセスし、
前記暗号化プロトコルセッションから共有シークレットを抽出し、
前記第1ノードと第2ノードとの間でネゴシエーションされる複数のパラメータを調整すべく、前記暗号化プロトコルセッションのハンドシェイクを修正し、
前記第1ノードと前記第2ノードとの間に構築された前記暗号化プロトコルセッションのネットワークフローを受信するネットワークアプライアンスのセキュリティモジュールに前記共有シークレットを送信する、装置。
【請求項13】
前記暗号化プロトコルセッションにアクセスすることは、
前記アプリケーションにおける暗号化構造を特定することと、
1または複数の抽出関数で前記暗号化構造をフックすることと
を含
請求項11または12に記載の装置。
【請求項14】
前記共有シークレットは、前記暗号化プロトコルセッションに関連するハンドシェイクが前記第1ノードと前記第2ノードとの間で生じた後、前記セキュリティモジュールに送信される、請求項11から13のいずれか1つに記載の装置。
【請求項15】
前記共用ライブラリは、前記アプリケーションを介して前記暗号化プロトコルセッションにアクセスすることを可能にする、請求項11から請求項14のいずれか1つに記載の装置。
【請求項16】
第1ノード上のアプリケーションに共用ライブラリをロードする段階と、
前記共用ライブラリを使用して、前記アプリケーションに関連する暗号化プロトコルセッションにアクセスする段階と、
暗号化構造が呼び出されることに応答して1または複数の抽出関数を実行することによって、共有シークレットを特定する段階と、
前記暗号化プロトコルセッションから前記共有シークレットを抽出する段階と、
前記第1ノードと第2ノードとの間に構築された前記暗号化プロトコルセッションのネットワークフローを受信するネットワークアプライアンスのセキュリティモジュールに前記共有シークレットを送信する段階と
を備える方法。
【請求項17】
第1ノード上のアプリケーションに共用ライブラリをロードする段階と、
前記共用ライブラリを使用して、前記アプリケーションに関連する暗号化プロトコルセッションにアクセスする段階と、
前記暗号化プロトコルセッションから共有シークレットを抽出する段階と、
前記第1ノードと第2ノードとの間でネゴシエーションされる複数のパラメータを調整すべく、前記暗号化プロトコルセッションのハンドシェイクを修正する段階と、
前記第1ノードと前記第2ノードとの間に構築された前記暗号化プロトコルセッションのネットワークフローを受信するネットワークアプライアンスのセキュリティモジュールに前記共有シークレットを送信する段階と
を備える方法。
【請求項18】
前記アプリケーションにおける暗号化構造を特定する段階と、
1または複数の抽出関数で前記暗号化構造をフックする段階と
をさらに含
請求項16または17に記載の方法。
【請求項19】
少なくとも1つのプロセッサによって実行されると、
第1ノード上のアプリケーションに共用ライブラリをロードし
前記共用ライブラリを使用して、暗号化プロトコルセッションにアクセスして、暗号化構造が呼び出されることに応答して共有シークレットを特定し、
前記暗号化プロトコルセッションから前記共有シークレットを抽出する抽出モジュールと、
少なくとも1つのプロセッサによって実行されると、
前記共有シークレットが抽出された後に、前記第1ノードから前記共有シークレットを受信し、
前記第1ノードと第2ノードとの間の前記暗号化プロトコルセッションの暗号化ネットワークフローをインターセプトし、
前記暗号化ネットワークフローのコピーを作成し、
復号化ネットワークフローを形成すべく、前記抽出モジュールから受信された前記共有シークレットを使用して、前記暗号化ネットワークフローの前記コピーを復号化し、
対象データについての前記復号化ネットワークフローをスキャンするセキュリティモジュールと
を備えるシステム。
【請求項20】
少なくとも1つのプロセッサによって実行されると、
第1ノード上で実行するアプリケーションに関連する暗号化プロトコルセッションにおいて共有シークレットを特定し、
前記暗号化プロトコルセッションから前記共有シークレットを抽出する抽出モジュールと、
少なくとも1つのプロセッサによって実行されると、
前記共有シークレットが抽出された後に、前記第1ノードから前記共有シークレットを受信し、
前記第1ノードと第2ノードとの間の前記暗号化プロトコルセッションの暗号化ネットワークフローをインターセプトし、
前記暗号化ネットワークフローのコピーを作成し、復号化ネットワークフローを形成すべく、前記抽出モジュールから受信された前記共有シークレットを使用して、前記暗号化ネットワークフローの前記コピーを復号化し、
対象データについての前記復号化ネットワークフローをスキャンするセキュリティモジュールと
を備え
前記抽出モジュールは、
前記第1ノードで、前記暗号化プロトコルセッションのハンドシェイクの開始を特定し、
前記暗号化プロトコルセッションの前記ハンドシェイクの前記開始を特定することに応答して、処理のメモリ空間を開放して前記共有シークレットを抽出する、システム。
【請求項21】
前記抽出モジュールは、前記少なくとも1つのプロセッサによって実行されると、
前記暗号化プロトコルセッションに関連するハンドシェイクが前記第1ノードと前記第2ノードとの間で生じた後、前記共有シークレットを前記セキュリティモジュールに送信する、請求項19または20に記載のシステム。
【請求項22】
前記抽出モジュールは、前記第1ノード上で実行する、請求項19から21のいずれか1つに記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、ネットワークセキュリティの分野、より具体的には、ネットワーク環境における暗号化データを検査することに関する。
【背景技術】
【0002】
ネットワークセキュリティの分野は、今日の社会においてますます重要になってきている。インターネットは、世界中の異なるコンピュータネットワークを相互接続することが可能になってきている。しかし、インターネットは、複数の悪意のあるオペレータがこれらのネットワークを活用する多くの機会も引き起こしてきている。一度、複数の特定のタイプの悪意のあるソフトウェア(例えば、ボット)が、ホストコンピューターに感染されてしまうと、そのソフトウェアは、遠隔のオペレータから複数のコマンドを受信するよう構成されることができる。そのソフトウェアは、そのホストコンピューターからスパムまたは悪意のある電子メールを送信する、そのホストコンピューターに関連する仕事または個人から慎重に扱うべき情報を盗む、他の複数のホストコンピューターに伝播する、および/または複数のサービスアタックの分配された否認を手助けするなどの任意の数の悪意のある動作を実行するように指示されることができる。さらに、悪意のあるオペレータは、複数の他の悪意のあるオペレータにアクセスを売る、またはさもなくば与えることができ、そのことによってホストコンピューターの搾取をエスカレートさせる。したがって、安定した複数のコンピュータおよびシステムを効果的に保護および維持する能力は、コンポーネントの製造、システムの設計、およびネットワークオペレータに対して複数の重要な課題を提示することを継続する。
【0003】
複数の企業環境は、複数のファイアウォール、複数のネットワーク侵入検知/防御(NIDS/NIPS)システム、複数のトラフィックシェーパー、および複数の他のシステムを含む様々なネットワーク管理を展開する。これらのシステムの多くは、マルウェアの増殖の検出/防御、一般的な会計監査およびネットワーク管理機能と同様に企業の知的財産が明確に定義された企業の境界の範囲外に漏れないことを確保することを含む、豊富なサービスを提供するためにネットワークトラフィックの検査に頼っている。ネットワークトラフィックは、セキュアソケット層(SSL)/トランスポート層セキュリティ(TLS)などのプロトコルを用いることにより暗号化されることもできる。
【図面の簡単な説明】
【0004】
本開示と特徴と効果に関してのより完全な理解を提供するために、参照は、添付図面とともに考慮して、以下の説明をする。本明細書で、同様の参照符号は、同様の部分を表す。
図1】実施形態に従ってファイアウォールがネットワークフローをインターセプトできるネットワーク環境の簡略ブロック図である。
図2】実施形態に従ってネットワーク環境200の例示的な図である。
図3】実施形態に従ったSSL/TLSハンドシェイク通信でのネットワーク環境の実例である。
図4】有利な実施形態に従ったSSL/TLSについてのネットワーク環境400のブロック図である。
図5】例示の実施形態に従ったプロキシとしてのセキュリティモジュールの実例である。
図6】実施形態に従ったデータダイヤグラムの実例である。
図7】実施形態に従った共用ライブラリを用いることにより共有シークレットを抽出するための処理を図示する単純化されたフローチャートである。
図8】実施形態に従ったメモリ領域から共有シークレットを抽出するための処理を図示する単純化されたフローチャートである。
図9】実施形態に従った暗号化されたネットワークフローを分析するための処理を図示する単純化されたフローチャートである。
図10】実施形態に従ったプロセッサに連結されたメモリも図示する。
図11】実施形態に従ったポイントツーポイント(PtP)構成で構成されたコンピューティングシステムを図示する。
【発明を実施するための形態】
【0005】
図1に戻り、図1は、実施形態に従ったネットワークフローをインターセプトできるファイアウォールのネットワーク環境の簡略ブロック図である。図1に示される実施形態において、ネットワーク環境100は、インターネット102、クライアント104、ファイアウォール106、ポリシーサーバ108、メールサーバ110、およびウェブサーバ112を含むことができる。一般的に、クライアント104は、限定されるものではないが、デスクトップ型コンピュータ、サーバ、ラップトップ、モバイルデバイス、携帯電話、また、メールサーバ110またはウェブサーバ112などの他のノードと接続を受信または確立できる任意の他のタイプのデバイスを含む、ネットワーク接続における任意のタイプの終端ノードでよい。ファイアウォール106は、承認された通信を許可しながら、承認されていないアクセスをブロックすることによりなど、インターネット102または他のネットワークに参加されたクライアント104および複数の他のノードとの間で複数の通信を制御してよい。いくつかの例において、ファイアウォール106は、侵入防御システム、ネットワークアクセス制御デバイス、ウェブゲートウェイ、電子メールゲートウェイ、モバイルデバイス、またはインターネット102とクライアント104との間の任意の他のタイプのゲートウェイと、連結または一体化されてよい。さらに、ユーザクライアント104に近接したルーティングトポロジーでのファイアウォール106の配置は、任意である。
【0006】
ポリシーサーバ108は、ファイアウォール106と連結され、または一体化されてよく、クライアント104を管理、複数のネットワークポリシーを運営および分配するために用いられてよい。したがって、この例示的な実施形態において、クライアント104は、ファイアウォール106のかたちで実装される複数のポリシーにより許可され、ポリシーサーバ108により管理されている場合、ファイアウォール106を介した接続を確立することにより、メールサーバ110またはウェブサーバ112などの、インターネット102に参加している複数のサーバと通信してよい。
【0007】
図1の複数の要素のそれぞれは、ネットワーク通信についての実行可能な経路を提供する複数の単純なインターフェースを介して、または任意の他の適した接続(有線または無線)を介して互いに連結してよい。更に、これらの要素の1つ又は複数は、組み合わされ、または特定の構成ニーズの基づくアーキテクチャから除去されてよい。ネットワーク環境100は、ネットワークでの複数のパケットの送信または受信のための伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信で可能な構成を含んでよい。ネットワーク環境100は、また、ユーザデータグラムプロトコル/IP(UDP/IP)または適切な特定のニーズに基づく任意の他の適したプロトコルと併用して動作してよい。
【0008】
例示的な実施形態におけるネットワークセキュリティを提供するための技術を例示することを目的として、所与のネットワーク内で起こるアクティビティを理解することが重要である。以下の基礎的情報は、本開示が適切に説明されうる基準として見なされる。そのような情報は、説明のためにのみ誠実に提示されている。従って、本開示およびその可能性のある複数の適用の広い範囲を制限するためのいかなる方法でも解釈されるべきでない。複数の組織および複数の個人により用いられる典型的なネットワーク環境は、例えば、インターネットに接続される複数のサーバにホストされる複数のウェブページにアクセスする、電子的メール(すなわち、電子メール)メッセージを送信または受信する、または複数のファイルを交換するために、インターネットを用いることで、複数の他のネットワークと電子的に通信する能力を含む。しかし、悪意のあるユーザは、マルウェアを拡散し、機密情報へのアクセスを得るべく、インターネットを用いる新たな方策を発展させることを継続する。マルウェアは、概して、コンピュータの所有者のインフォームド・コンセントなしにコンピュータをアクセスおよび/または制御するために設計された任意のソフトウェアを含み、コンピュータウイルス、ボット、スパイウェア、アドウェアなどの任意の敵意をもった、押し付けがましい、または迷惑なソフトウェアの標識として最も頻繁に用いられる。一度、危険にさらされると、マルウェアは、ホストを破し、スパムまたは情報窃盗などの悪意のあるアクティビティにホストを利用するかもしれない。また、マルウェアは、一般的に、組織のネットワーク内に拡散され、または複数の他の組織または個人に他のネットワークに横切ることを可能にする1または複数の伝播ベクターを含む。複数の共通の伝播ベクターは、ローカルネットワーク内の複数のホストでの既知の脆弱性を活用すること、添付された悪意のあるプログラムを有する複数の電子メールを送信すること、または電子メール内で複数の悪意のあるリンクを提供することを含む。
【0009】
セキュリティモジュールおよび抽出モジュールのいくつかの例の技術を図示することを目的として、介入者(MITM)技術を理解することが重要である。1または複数の実施形態は、複数のセキュリティデバイスでの遮蔽SSL(またはTLS)トラフィックについてのいくつかの実施形態が、宛先をなりすます証明書を用いることでセキュリティデバイスがSSL接続を終了して、次に第2のSSL接続を介してその宛先にデータをプロキシする複数のMITM技術を使用することを認識および考慮する。ユーザは、このなりすましを理解することができ、各接続についてこのなりすましを明示的に無視するか、セキュリティデバイスを信頼するようにユーザの機械を設定するかのいずれかで、警告はなくなる。
【0010】
MITMを、セキュリティデバイスに実装するのにはお金がかかる。なぜなら、すべてのトラフィックを復号化および暗号化するニーズがあるからである。また、MITMは、それぞれの接続が隠されている状態で、高価な公開鍵暗号化動作を実行することをセキュリティデバイスに要求する。
【0011】
MITMに伴う追加の問題は、ユーザが、目標のウェブサイト(サーバ)の真のSSL認証を得られないことにある。これは、SSLセキュリティのきわめて重要な恩恵である。しかし、ユーザは、セキュリティデバイスが到達されたことを知っているだけであり、本当にアクセスされているウェブサイトを知らない。この欠陥は、信頼のあるサイトのように見えるが、実際にはそのようなサイトを利用している複数のサイトに複数のユーザを案内する複数のフィッシング電子メールを複数の攻撃者に利用され得る。
【0012】
更に、本開示の異なる実施形態は、ネットワークデバイスが2つの終点間のSSL/TLSセッションを終了し、再確立する、信頼されたクライアントが信頼されていないサーバと通信している状況を認識し、考慮する。これは、また、しばしば、ブレイクメイク接続と称される。信頼されたクライアントは、ネットワークアプライアンス(例えば、銀行のウェブサイト)を越える終点と通信しているにもかかわらず、ネットワークデバイス/ドメインの証明書でプロビジョニングされ、複数のセキュアセッションセットアップ処理でこれを受け入れる。実際には、このセッションは、クライアントの代わりに、最終的な終点への第2の別個のセッションを示す、ネットワークアプライアンスで終了される。このメカニズムは、セキュア通信チャネルに対する「介入者」のように、ネットワークアプライアンスがTLSトラフィックへの可視性を得ることを可能にする。このアプローチは、あらゆるクライアント/セッションに対する接続をプロキシする必要があるので、ネットワークアプライアンス上で負担が生じる。よって、これらのプロキシ接続のすべてに対する複数のリソースを管理する必要がある。この状況は、ネットワークアプライアンスに著しいオーバヘッドを追加する。
【0013】
また、本開示の異なる実施形態は、信頼されていないクライアントが信頼されたサーバと通信し、ネットワークアプライアンスが、SSL/TLSセッションを認証するために用いられる公開/秘密鍵ペア(例えば、複数のRSA鍵)を含むその信頼されたサーバの証明書に対するアクセスを(いくつかのOOBのやり方で)得る他の状況を認識し、考慮する。クライアントが、サーバの公開鍵で暗号化されたプレマスターシークレットをそのサーバに送信するSSL/TLS動作のために、ネットワークアプライアンスは、途中でこの情報をキャプチャ/復号化し、SSL/TLSハンドシェイク上でスヌープすることができる。これは、ネットワークアプライアンスが、複数のSSL/TLSセッション鍵を別々に計算し、その後、2つの終点間で暗号化された通信を復号化することを可能にする。しかし、この状況は、サーバの秘密鍵の所有権を信頼し、侵入保護またはファイアウォールなどのセキュリティデバイスをプロビジョニングすることにより、インターネット上で複数のサーバと接続している複数のクライアントマシンを持つ複数のユーザを保護することが求められる組織の共通の状況で適用されない。
【0014】
本開示の異なる実施形態は、複数の企業がSSL/TLSトラフィックをスキャンする緊急のニーズを有する、マルウェア検出、データ損失保護、すでに使用されている複数のMITM技術、認証および暗号化の両方の複数のMITM偽装、ユーザが認証を忘れたことに気づき、信頼が損なわれる、ユーザがすべての接続に対して警告メッセージを見るとき、または信頼が正しいかどうかを全く知らないときの苛立ちの要因、といったことを認識し、考慮する。
【0015】
この開示の1または複数の実施形態は、ネットワークデバイスの大きなオーバヘッドを低減するとともに、複数の暗号化されたネットワークストリームの可視性を単純化する新規のアプローチを提供する。
【0016】
図2は、実施形態に従うネットワーク環境200の例示的な図示である。この開示の態様で、ネットワーク環境200は、クライアント202、ファイアウォール204、およびサーバ206を含む。図1に示されるように、ネットワーク環境200は、ネットワーク環境100の一例でよい。実施形態において、ネットワーク環境200は、クライアント202、ファイアウォール204およびサーバ206間で動作する暗号化プロトコルセッション208を含んでよい。暗号化プロトコルセッション208は、さらに、ネットワークフロー210、対象データ211、および共有シークレット212を含んでよい。サーバ206は、さらに、権限の証明書214を含んでよい。ファイアウォール204は、さらに、順に、ネットワークフローのコピー222および暗号化されていないネットワークフロー224を含んでよいセキュリティモジュール220を含んでよい。クライアント202は、さらに、信頼リスト216、抽出モジュール230、共用ライブラリ232、およびアプリケーション234を含んでよい。
【0017】
本開示の実施形態において、サーバ206は、権限214の証明書を含む。権限214の証明書は、デジタル証明書を発行するエンティティでよい。デジタル証明書は、証明書の名前付けされた対象者による公開鍵の所有権を認証する。これは、クライアント202が認証された公開鍵に対応する秘密鍵により作られたシグネチャまたはアサーションを信頼することを可能にする。
【0018】
信頼関係のこのモデルにおいて、権限214の証明書は、証明書上でサーバ206およびクライアント202の両方により信頼された、信頼されたサードパーティである。クライアント202上で、信頼リスト216は、保持されてよい。信頼リスト216は、クライアント202が信頼するデジタル証明書を含んでよい。
【0019】
1または複数の実施形態において、暗号化プロトコルセッション208は、クライアント202、ファイアウォール204、およびサーバ206間で動作する。暗号化プロトコルセッション208は、ネットワークフロー210を含む。ネットワークフロー210は、クライアント202とサーバ206との間の両方向で動作するデータの暗号化フローである。ファイアウォール204は、検査および解析のために、ネットワークフロー210をインターセプトしてよい。実施形態において、暗号化プロトコルセッション208について用いられる複数のプロトコル(複数のセキュア通信)は、トランスポート層セキュリティ(TLS)またはその先行オペレーション、セキュアソケット層(SSL)でよい。これらのプロトコルは、インターネットを介した通信を提供する複数の暗号化プロトコルである。これらのプロトコルは、この開示で交換可能に用いてもよい。TLSおよびSSLは、鍵交換についての非対称暗号化、機密性についての対称暗号化、およびメッセージインテグリティについての複数のメッセージ確認コードを用いることで、トランスポート層に対するアプリケーション層でネットワーク接続の複数のセグメントを暗号化する。
【0020】
クライアント202およびサーバ206は、また、ネットワークフロー210でのデータの認証について共有シークレット212(例えば、パスワード、鍵など)を維持してよい。共有シークレット212は、暗号化プロトコルセッション208間に構成されてよい。共有シークレット212は、クライアント202およびサーバ206間で共有され、知られている値でよい。実施形態において、例えば、共有シークレット212は、SSL/TLSで用いられるようなマスターシークレットまたは複数のセッション鍵でよい。複数のセッション鍵は、セッションコンテキストでよく、公正なセッション鍵と同様に、初期化ベクター、用いられる暗号アルゴリズムを含んでよい。セッションコンテキストは、ペイロード(例えば、暗号化/インテグリティ/複数の圧縮アルゴリズム、複数の関連する鍵、複数の鍵サイズ、初期化ベクターなど)をデカプセル化するのに必要な暗号化情報を含んでよい。対照的に、公開/秘密非対称鍵構造は、それぞれの当事者が異なる鍵を持つので、クライアント202とサーバ206との間で共有されない。
【0021】
抽出モジュール230は、クライアント202から共有シークレット212を抽出するよう構成される。具体的に、抽出モジュール230は、マスターシークレット、プレマスターシークレット、ハッシュベースメッセージ確認コード(HMAC)、および/または複数のセッション鍵を抽出してよい。抽出モジュール230は、クライアント202にロードされてよく、または、他の実施形態において、クライアント202へのアクセスをもつ別個のモジュールでよい。
【0022】
実施形態において、抽出モジュール230は、共用ライブラリ232をアプリケーション234にロードしてよい。これは、抽出モジュール230がアプリケーション234を介して暗号化プロトコルセッション208にアクセスして、共有シークレット212を特定することを可能にする。共用ライブラリ232は、共用ライブラリでよく、または、共有オブジェクトは、実行可能なファイルによって共有されることを意図し、さらに共有されるオブジェクトファイルであるファイルである。共用ライブラリ232は、例えば、ダイナミックリンクライブラリ(DLL)でよい。アプリケーション234は、暗号化プロトコルセッション208を介してサーバ206と通信している処理でよい。アプリケーション234は、例えば、ウェブブラウザでよい。
【0023】
別の実施形態では、抽出モジュール230は、ネットワーク層でネットワークフロー210を監視し、SSL初期ハンドシェイクなどのネットワークハンドシェイクの進捗度を検知するよう構成され、それで、アプリケーション234のメモリ空間231がネゴシエーションされる暗号化接続についての共有シークレット212を含んでよい時点を判断してよい。
【0024】
抽出モジュール230は、例えば、マイクロソフト(登録商標)、ウィンドウズ(登録商標)、リナックス(登録商標)における同一のコンピュータシステム上の対象処理の処理メモリにアクセスするための複数のデバッギングシステムコールを用いることにより、アプリケーション234を実行する処理のメモリ空間231を開放するよう構成されてよい。抽出モジュール230は、メモリ空間231を検索し、共有シークレット212を特定するようにも構成されてよい。抽出モジュール230は、共有シークレット212をセキュリティモジュール220に送信するよう構成される。セキュリティモジュール220の送信のパスは、セキュアチャネルでもよい。共有シークレット212とともに、セキュリティモジュール220は、クライアント202およびサーバ206が用いるような同一の暗号化/復号化処理を用いることでネットワークフロー210を復号化することを可能にしてよい。セキュリティモジュール220は、異なるモードの動作で動作してよい。
【0025】
一実施形態では、セキュリティモジュール220は、ネットワークフロー210をコピーしてネットワークフローのコピー222を作成するよう構成されてよい。ネットワークフローのコピー222は、次いで、冒されたネットワークフロー210なしに復号化して、暗号化されていないネットワークフロー224を作成してよい。
【0026】
いくつかの実施形態では、セキュリティモジュール220は、暗号化モジュール230からの共有シークレット212を待つべくネットワークフロー210を遅延させ、ネットワークフローのコピー222を復号化する時間を割き、ネットワークフロー210を修正し、複数のセキュリティ問題または遅延のための任意の他の適した理由について暗号化されていないネットワークフロー224を検査してよい。他の実施形態において、セキュリティモジュール220は、ネットワークフロー210を遅延させず、単にネットワークフロー210をコピーしてよい。実施形態において、セキュリティモジュール220は、対象データ211について(一度復号化され、暗号化されていないネットワークフロー224のような)ネットワークフロー210および/またはネットワークフローのコピー222をスキャンするよう構成されてよい。対象データ211は、セキュリティモジュール220が、探しているデータ、例えば、ホスタイル、侵入、またはコンピュータウイルス、ボット、スパイウェア、アドウェアなどの迷惑なソフトウェアなどを含んでよい。対象データ211は、マルウェアでよい。
【0027】
使用可能な専門用語において、および特定の一つの実施形態において、TLSまたはSSL接続の実例は、以下のように開始してよい。ネゴシエーションフェーズの間に、クライアント202が、サポートする最も高いTLSプロトコルバージョン、乱数、提示された暗号スイートのリスト、および提示された圧縮方法を特定するメッセージを送信する。暗号スイートは、認証、暗号化、および、複数のTLSまたはSSLネットワークプロトコルを用いるネットワーク接続についてのセキュリティ設定をネゴシエーションするために用いられるメッセージ確認コード(MAC)アルゴリズムの名前付けされた組み合わせである。また、クライアント202は、再開されたハンドシェイクを実行することを試みている場合、セッションIDを送信してよい。
【0028】
応答において、サーバ206は、選択されたプロトコルバージョン、他の乱数、選択された暗号スイート、およびクライアントによって提示された複数の選択の中から選択された圧縮方法を含むメッセージで応答する。再開されたセッションを確認または許可すべく、サーバ206は、同一のセッションIDを送信してよい。新たなセッションを開始すべく、サーバ206は、新たなセッションIDを送信してよい。また、クライアント202は、プレマスターシークレット、公開鍵を含むまたはなにも含まない他のメッセージで応答してよい。プレマスターシークレットは、サーバ証明書の公開鍵を用いることで暗号化される。クライアント202およびサーバ206は、次いで、乱数およびプレマスターシークレットを使用して、「マスターシークレット」と称される共通シークレットを計算する。この接続についてのすべての他の鍵データは、このマスターシークレットから導出される。マスターシークレットは、クライアント202とサーバ206との間のそれぞれの通信セッションについての複数のセッション鍵を作成するために用いられてよい。プレマスターシークレット、マスターシークレット、およびセッション鍵は、共有シークレット212のすべての例である。
【0029】
1または複数の実施形態は、SSL/TLS接続を監視し、マスターシークレット、プレマスターシークレットおよび/またはセッション鍵を直接抽出する、特定の明確に定義された複数のアプリケーションプログラミングインタフェース(API)をインターセプトすることができるクライアント202上で、信頼されたエージェントとも称される抽出モジュール230を提供する。クライアント202上の抽出モジュール230は、共有シークレット212の抽出を実行してよい。この情報は、セキュアアウトオブバンド(OOB)チャネルを介して、セキュリティモジュール220、信頼され許可されたネットワークアプライアンスに安全に共有される。他の実施形態において、情報は、安全でないチャネルを介して共有される。これは、セキュリティモジュール220が、暗号化プロトコルセッション208、SSL/TLS通信を復号化し、ネットワークフロー210内への可視性を得ることを可能にする。
【0030】
使用可能な専門用語において、特定の1つの実施形態において、それぞれの暗号化プロトコルセッション208が確立されるときに、クライアント202、ユーザワークステーション上の特別なソフトウェア、抽出モジュール208は、共有シークレット212、SSL鍵を探し出す。次に、発見プロトコルは、共有シークレット212を安全にセキュリティモジュール220に伝送する。クライアント202は、目標サイトの完全な認証で、SSL接続エンドツーエンドを確立する。しかし、セキュリティモジュール220は、まだ、クライアント202を保護するためにその接続をスキャンできる。
【0031】
さらに、共有シークレット212は、公開鍵ハンドシェイクが生じた後にのみ、セキュリティモジュール230で共有されてよい。したがって、セキュリティモジュール230は、データアイテムを通じた単一の対称復号化を用いるセッションを復号化できる。この処理は、MITMより速い。
【0032】
本開示の1または複数の実施形態は、(1)ネットワークへの受動的な接続に用いることができるエンドツーエンド認証を予約し、(2)暗号化された複数のトラフィックストリーム内で可視性を得るために、第2の独立したSSL/TLS接続が、構築されなければならず、あらゆる単一の接続についての状態を格納するセキュリティモジュール上のオーバヘッドを軽減し、(3)(MITMにサポートされていない)SSLでのユーザのクライアント側の複数の証明書と互換性がある。
【0033】
この開示の実施形態は、SSL/TLSマスターシークレットおよび/または複数のセッション鍵を抽出するアプローチに基づき、区別されたセキュアチャネルを用いる許可されたセキュリティモジュールでこれらを共有するクライアントを提供する。複数の実施形態は、また、エンドツーエンド認証を実行すべく、かつ複数のセキュリティデバイス(IPS、ファイアウォール、セキュリティモジュール)が実装できる非常に効率のよい方法で、クライアントの能力を取り除くことなく、ネットワークフローをスキャンすることを可能にする。この開示の複数の実施形態は、クライアントの信頼を危険にさらすことなく、複数の暗号化プロトコルセッション(SSL/TLSセッション)を復号化するシステムを提供する。
【0034】
複数の実施形態は、SSLハンドシェイクが、変更なしにパスされ、元々の証明書、元々のCAトラスト、抽出モジュールがセキュリティモジュールとセッション鍵を共有し、鍵は、存続時間が短い認証情報であり、このセッションのみ影響し、復号化は、また、MITMより速く、復号化は、また、SSL相互認証クライアント側およびサーバ認証をサポートでき、トラフィックの受動的モードの検査をサポートできることを提供する。複数の実施形態は、また、セキュリティデバイスは、プロキシ環境でも用いられることでき、本明細書でプロキシは、SSL平文を修正する必要があるかもしれない、認証および信頼は、まだエンドツーエンドであり、接続は、すべてのデータがパススルーされる「検査モード」で開始し、もしプロキシが平文を変更する(例えば、URLを修正、添付ファイルを取り除く)必要がある場合、接続は、「プロキシモード」に切り替わることを提供する。複数の実施形態の1または複数で、暗号化の状態は、ホストとサーバとの間で分割される。クライアントの復号化の状態は、初期状態のサーバの暗号化の状態になるようにコピーされる。サーバの復号化の状態は、初期状態のクライアントの暗号化の状態になるようにコピーされる。
【0035】
セキュリティデバイスは、分けられた状態を用いることで、SSLデータを復号および再暗号化の両方を行う。SSL平文は、これらのステップの間に変更されうる。一度プロキシが平文を修正すると、プロキシ内の暗号化の状態は、受信された状態および再暗号化された状態の間で、分化する。一度、再暗号化が開始されると、接続が終了するまで継続する。セキュリティモジュールは、SSL鍵情報を用いて、SSLセッション情報を復号/検証し、マルウェア検出またはデータ損失保護のためにさらに複数のSSLパケットを検査してよい。
【0036】
本開示の1または複数の実施形態は、ネゴシエーションされることができる複数のSSLパラメータを変更するために、SSL/TLSハンドシェイクを変更するために提供する。そのような複数の実施形態において、初期化ベクター(IV)は、また、SSL/TLSフィニッシュハンドシェイクメッセージの修正を許可するよう導出されなければならない。これは、共有シークレットのようなマスターシークレットを用いることにより達成されてよい。
【0037】
別の実施形態では、IVは、抽出モジュールによって直接的に抽出され、SSL/TLSセッション鍵を共有するのと同一のやり方で、セキュリティモジュールで共有されてよい。
【0038】
実施形態において、ハンドシェイクは、以下のように書き換えられてよい。ServerHello/ClientHelloについて、
A)許可されたリストにHello内の暗号スイートのリストを限定
B)許可されたリストにClientHello内に暗号スイートのリストを変更
C)許可されたリスト内の1つにServerHello内の選択された暗号化スイートを変更
D)クライアント/サーバからさらなるセキュアソースにランダムデータを変更
E)ClientHelloからセッションを取り除くことによりセッションの再開を不許可
【0039】
ClientCertificateについて
A)1または複数のClientCertificateをサポート
B)1または複数のClientCertificateを置き換え
C)1または複数のClientCertificateを取り除く
【0040】
ClientKeyExchangeについて、ランダムデータをクライアント/サーバから追加のセキュアソースに変更
【0041】
1つの例示の実装において、クライアント202および/またはファイアウォール204は、ネットワークアプライアンス、サーバ、ルータ、スイッチ、ゲートウェイ、ブリッジ、ロードバランサ、プロセッサ、モジュール、またはネットワーク環境で情報を交換動作可能な任意の他の適したデバイス、コンポーネント、要素またはオブジェクトを包含するよう意図する複数のネットワーク要素である。複数のネットワーク要素は、ネットワーク環境で、データまたは情報を受信、送信、および/またはさもなくば通信するための複数の適したインターフェースとともに、複数の動作を促進する任意の適したハードウェア、ソフトウェア、コンポーネント、モジュール、またはオブジェクトを含んでよい。これは、データまたは情報の有効な交換を可能にする適切なアルゴリズムおよび通信プロトコルを含んでよい。しかし、ユーザクライアント202は、ネットワーク接続において中間点としてのサービスを行う傾向にあるゲートウェイまたはルータと対照的に、ネットワーク接続についての終点としてのサービスを行う傾向にあるように、複数の他のネットワーク要素と区別されてよい。
【0042】
クライアント202は、また、スマートフォン、または他の同様な電気通信デバイスなどの複数の無線ネットワークノードの代表的なものであってよい。
【0043】
ネットワーク環境200に関連する内部構造に関して、クライアント202および/またはファイアウォール204のそれぞれは、本明細書で、概説される動作で用いられるための情報を格納する複数のメモリ要素を含むことができる。クライアント202および/またはファイアウォール204のそれぞれは、任意の適したメモリ要素(例えば、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、消去可能プログラマブルROM(EPROM)、電子的消去可能プログラマブルROM(EEPROM)、特定用途向け集積回路(ASIC)など)、ソフトウェア、ハードウェア、または、適切な、特定の必要性に基づく任意の他の適したコンポーネント、デバイス、要素、またはオブジェクトに、情報を保持してよい。本明細書で、開示される複数の任意のメモリアイテム(例えば、メモリ要素250および252)は、広義の用語「メモリ要素」の範囲内に包含されるように解釈されるべきである。クライアント202および/またはファイアウォール204により使用、トラッキング、送信、受信される情報は、任意のデータベース、レジスタ、キュー、テーブル、キャッシュ、制御リスト、または他のストレージ構造で提供されることができ、それらのすべては、任意の適したタイムフレームで参照されることができる。任意のそのようなストレージオプションは、本明細書中で用いられる広義の用語「メモリ要素」内に含まれてよい。
【0044】
特定の例示の実装において、本明細書で概説される複数の機能は、非一時的媒体を含みうる1または複数の有形の媒体(例えば、ASICで提供される埋め込み論理、デジタルシグナルプロセッサ(DSP)命令、プロセッサにより実行されるソフトウェア(潜在的にオブジェクトコードおよびソースコードを含む)、または他の同様な機械など)にエンコードされているロジックにより実装されてよい。これらの例のいくつかにおいて、メモリ要素は、本明細書で説明される動作について用いられるデータを格納できる。これは、本明細書で説明されるアクティビティを実行するために実行されるソフトウェア、ロジック、コード、またはプロセッサ命令を格納できるメモリ要素を含む。
【0045】
1つの例示の実装において、クライアント202および/またはファイアウォール204は、本明細書で概説されるような複数の動作を達成または発展させるためのソフトウェアモジュール(例えば、抽出モジュール230および/またはセキュリティモジュール220)を含んでよい。他の実施形態において、そのような動作は、ハードウェアによって実行され、これらの要素に外的に実装され、または意図される機能を達成するいくつかの他のネットワークデバイスに含まれてよい。代替的に、これらの要素は、本明細書で概説されるような動作を達成するために、協調できるソフトウェア(または往復ソフトウェア)を含んでよい。さらに、複数の他の実施形態において、これらのデバイスの1またはすべては、動作を促進する任意の適したアルゴリズム、ハードウェア、ソフトウェア、コンポーネント、モジュール、インターフェース、またはオブジェクトを含んでよい。
【0046】
更に、クライアント202および/またはファイアウォール204のそれぞれは、本明細書で説明されるようなアクティビティを実行するソフトウェアまたはアルゴリズムを実行できるプロセッサ260および262を含んでよい。
【0047】
プロセッサは、本明細書で詳説される複数の動作を達成するためのデータに関連する任意のタイプの複数の命令を実行できる。一例において、プロセッサは、1つの状態または状況から他の状態または状況に要素または項目(例えば、データ)を変換しうる。他の例において、本明細書で概説されるアクティビティは、固定論理またはプログラマブル論理(例えば、プロセッサによって実行されるソフトウェア/コンピュータ命令)で実装されてよく、本明細書で特定される複数の要素は、いくつかのタイプのプログラマブルプロセッサ、プログラマブルデジタルロジック(例えば、フィールドプログラマブルゲートアレイ(FPGA)、EPROM、EEPROM)、または、デジタルロジック、ソフトウェア、コード、電子命令、またはそれらの任意の適した組み合わせを含むASICでありうる。本明細書で説明される複数の任意の潜在的な処理要素、モジュール、および機械は、広義の用語「プロセッサ」内に包含されるように解釈されるべきである。
【0048】
図3は、実施形態に従ったSSL/TLSハンドシェイク通信を伴うネットワーク環境の実例である。ネットワーク環境300は、クライアント302、ファイアウォール304、およびサーバ306を含む。さらに、クライアント202は、抽出モジュール308を含み、ファイアウォール304は、セキュリティ検査316を実行するセキュリティモジュール310を含み、サーバ306は、サーバ証明書312を含む。
【0049】
サーバ証明書312は、図2の権限214の証明書の一例でよい。サーバ証明書312は、クライアント202にパススルーされる。クライアント202は、真の認証局トラスト314にサーバ証明書312を格納してよい。真の認証局トラスト314は、図2の信頼リスト216の一例でよい。
【0050】
ネットワーク環境300は、また、メッセージ320―336を含む。メッセージ320―336は、SSL/TLSセッションに対するハンドシェイクの一部として含まれるメッセージでよい。SSL/TLSセッションは、図2の暗号化プロトコルセッション208の一例でよい。
【0051】
メッセージ320および322は、ClientHelloおよびServerHelloを含む初期メッセージでよい。ファイアウォール304は、メッセージ320がパススルーすることを可能にしてよい。メッセージ320および322は、別々にラベル付されるけれども、それらは、同一の情報を含む。
【0052】
メッセージ324および326は、サーバ306がクライアント302に送信するサーバ証明書312でよい。ファイアウォール304は、また、これらのメッセージをパススルーする。
【0053】
メッセージ324および326は、別々にラベル付されるけれども、それらは、同一の情報を含んでよい。サーバ証明書312をパススルーすることにより、クライアント302は、複数の通信がサーバ306から来たことを確認できる。
【0054】
メッセージ328および330は、ネゴシエーションのためのフィニッシングメッセージである。メッセージ324および326は、別々にラベル付されるけれども、それらは、同一の情報を含む。他の実施形態において、セキュリティモジュール310が暗号スイートを選択したい場合、セキュリティモジュール310は、メッセージ328および/または330を変更してよい。この場合、それらは、同一でなくてよい。
【0055】
メッセージ332は、抽出モジュール308が共有シークレットにセキュリティモジュール310を送信する場合でよい。メッセージ332は、また、セキュアメッセージでよい。
【0056】
メッセージ334および336は、ネットワークフローを表わしてよい。これらのメッセージは、ファイアウォール306をパススルーされるデータを示す。1または複数の実施形態において、ファイアウォール306は、これらのメッセージがパススルーすることを許可し、複数の他の実施形態において、ファイアウォール306は、メッセージ334および336間を進む。後の状況で、ファイアウォール306は、メッセージ334および336を遅延、終了、修正してよい。
【0057】
図4は、有利な実施形態に従ってSSL/TLSについてのネットワーク環境400のブロック図である。ネットワーク環境400は、クライアント402、ファイアウォール404、およびサーバ406を含む。さらに、クライアント202は、抽出モジュール408を含み、ファイアウォール304は、セキュリティモジュール310を含む。クライアント402は、図2に示されるようなクライアント202の一例でよい。ファイアウォール404は、図2に示されるようなファイアウォール204の一例でよい。サーバ406は、図2に示されるようなサーバ206の一例でよい。
【0058】
クライアント202は、さらに、アプリケーション412およびオペレーティングシステム(OS)414を含む。アプリケーション412は、サーバ406とともに、暗号化プロトコルセッションを開始する処理でよい。アプリケーション412は、サーバ406へのデータの実際の送信を扱うオペレーティングシステム414にロードされてよい。
【0059】
抽出モジュール408は、オペレーティングシステム414および/またはアプリケーション412から共有シークレットを抽出してよい。抽出モジュールは、セキュリティモジュール410に共有シークレット(SSLセッション鍵またはマスターシークレット)を送信する鍵シェアリングを実行する。これは、セキュリティモジュールがオペレーティングシステム414とサーバ406との間のネットワークフローで復号化416を実行することを可能にする。ネットワークフローは、SSL/TLS暗号化トラフィックでよい。
【0060】
図5は、例示の実施形態に従うプロキシとしてのセキュリティモジュールの実例である。ネットワーク環境502は、ネットワークフロー504、セキュリティモジュール506、クライアントの復号化の状態508、サーバの復号化の状態510、クライアントの暗号化の状態512、およびサーバの暗号化の状態514を含んでよい。
【0061】
図5の一部分(a)におけるセキュリティモジュール506は、検査モードでのプロキシでよい。検査モードの場合、セキュリティモジュール506は、ネットワークフロー504をコピーし復号化している。セキュリティモジュール506は、クライアントから来るネットワークフロー504を復号化するためのクライアントの復号化の状態508、およびサーバから来るネットワークフロー504を復号化するためのサーバの復号化の状態510を使用する。
【0062】
図5の一部分(b)において、セキュリティモジュール502は、プロキシモードに移行している。セキュリティモジュール506は、サーバの暗号化の状態514を作成するためのクライアントの復号化の状態508を引き受け、クライアントの暗号化の状態512を作成するためのサーバの復号化の状態510を引き受けてよい。検査モードにおける一部分(a)のような復号化に加えて、セキュリティモジュール506は、また、一部分(c)におけるプロキシモードで暗号化できる。
【0063】
一部分(c)において、セキュリティモジュール506は、ネットワークフロー504の間にある。プロキシモードの間に、セキュリティモジュール506は、ネットワークフロー504をパススルー、復号化/暗号化、終了、および/または修正してよい。ネットワークフロー504を修正するために、セキュリティモジュールは、一部分(a)の前のように復号化してよいが、次に、クライアントの暗号化の状態512および/またはサーバの暗号化の状態514を使用して、ネットワークフロー504を暗号化してもよい。実施形態において、一度、セキュリティモジュールがネットワークフロー504の変更を開始すると、セキュリティモジュール506は、暗号化プロトコルSSL/TLSセッションの残りについてのネットワークフロー504の残りを暗号化/復号化してよい。
【0064】
図6は、実施形態に従ったデータダイヤグラムの実例である。データダイヤグラム600は、SSL/TLSデータ構造を示す。データダイヤグラム600は、データ構造602―616を含む。
【0065】
抽出モジュールは、APIフックまたはシグネチャベーススキャンでデータ構造602―616に関連した対象のアプリケーションのメモリおよびアドレスを検査してよい。クライアントは、セキュアOOBチャネルを介してセキュリティモジュールに送信される前に、慎重に扱うべきSSL鍵情報を保護するために、複数の他のセキュリティサービスによって保護されてよい。
【0066】
実施形態において、復号化パスは、CFSM:RunworkItem,Cfsm:Run、CFSM:SecureReceive、ICSECURESOCKET::RECEIVE_FSM、ICSecuresocket: :DecryptData、およびICSecuresocket::DecryptDataを含むWininet.dllでよい。それから、DecryptMessageおよびLsaunsealMessageを含むSspiceli.dllでよい。それから、SpunsealMessage、SslUnsealMessageStream、TlsDecryptHandler、およびTlsDecryptMessagを含むSchannel.dllでよい。
【0067】
それから、SslDecryptpacket、SPSslDecryptPacket、およびTlsDecryptPacketを含むNcrypt.dllでよい。それから、BcryptDecryptを含むBcrypt.dllでよい。それから、MSCryptDecrypt、MSBlockDecrypt、およびAescbcDecryptを含むBcryptprimitives.dllでよい。
【0068】
実施形態において、関数は、DecryptMessage()関数でよい。この関数は、以下のように用いられてよい。
SECURITY_STATUS SEC_Entry
DecryptMessage( in PCtxtHandle phContext, inout PSecBufferDesc pMessage, _in ULONG MessageSeqNo, _out PULONG pfQOP )
【0069】
CtxtHandleは、追加的なコンテキスト情報でよい。
【0070】
CtxtHandleは、CtxtHandle {Void * P_vtable; LSA_SEC_HANDLE usercontext;...}によりLSA_SEC_HANDLEにアクセスしてよい。
【0071】
LSA_SEC_HANDLEを用いて、NCRYPT_KEY_HANDLEがアクセスされてよい。CSslContextは、Cipher ID、ReadKey、WriteKeyおよびSessionlDを含む。
【0072】
NCRYPT_KEY_HANDLEを用いて、BCRYPT KEY HANDLEがアクセスされてよい。SSL_KEY_HANDLEは、hmac_keyおよびbcrypt_key handleを含んでよい。
【0073】
BCRYPT_KEY_HANDLEを用いて、共有シークレット(セッション鍵)は、取得されてよい。MSCRYPT_SYMMKEY_HANDLEは、セッション鍵およびラウンド鍵を含む。
【0074】
図7は、実施形態に従って、共用ライブラリを用いることで共有シークレットを抽出するための処理を例示する単純化されたフローチャートである。フロー700は、暗号化プロトコルセッションの間および/または前に動作する処理でよい。710で、抽出モジュールは、アプリケーションに共用ライブラリをロードする。720で、抽出モジュールは、アプリケーションで、任意の暗号化構造を特定する。730で、抽出モジュールは、複数の抽出関数で暗号化構造をフックする。
【0075】
暗号化構造が呼び出されることに応答して、740で、実行モジュールは、複数の抽出関数を実行して、共有シークレットを特定する。750で、抽出モジュールは、共有シークレットを抽出する。750の後に、抽出モジュールは、共有シークレットをセキュリティモジュールにセキュアに伝送してよい。
【0076】
使用可能な条件下で、および特定の1つの実施形態において、抽出モジュールは、アプリケーション(例えば、ウェブブラウザ)の処理空間にDLLを挿入する。これを行うために、抽出モジュールは、LoadLibrary関数Kernel32.dllを探すためにGetProcessAddressを使用し、パスを伴う文字列を、VirtualAllocExおよびWriteProcessMemoryを介してウェブブラウザ処理空間に挿入されたDLLに配置し、スレッド法としてLoadLibraryを用いることでウェブブラウザ処理空間にスレッドを起動するためのCreateRemoteThreadを呼び出し、独立変数としてのみ、上記で割り当たられた文字列をパスする。それから、挿入されたDLLは、SCHAEL.DLLを処理空間にプリロードし、暗号化データ構造の基数を探し、複数のカスタム関数でSCHANNEL.DLLの暗号化関数をフックする。次に、アプリケーションが複数の暗号化関数を要求する場合、フックされた複数の関数が呼び出され、その結果、複数のオリジナルのSCHANNEL関数を呼び出し、暗号化鍵素材について上記で探し出されたデータ構造を検査し、マスターシークレットも同様に見つけ出すかもしれず、複数のオリジナルのSCHANNEL関数によって戻された複数の値を戻す。
【0077】
図8は、実施形態に従ったメモリ空間から共有シークレットを抽出するための処理を例示する単純化されたフローチャートである。フロー800は、暗号化プロトコルセッションの間および/または前に動作する処理でよい。810で、抽出モジュールは、ネットワーク層でネットワークフローを監視する。抽出モジュールは、暗号化プロトコルセッションについてのハンドシェイクの開始を検索している。
【0078】
820で、抽出モジュールは、暗号化プロトコルセッションのハンドシェイクの開始を特定する。開始を特定することに応答して、830で、抽出モジュールは、暗号化されたプロトコルセッションンを開始する処理のメモリ空間を開放する。1または複数の実施形態で、処理は、アプリケーションでよい。
【0079】
840で、抽出モジュールは、処理のメモリ空間内暗号化プロトコルセッションで共有シークレットを特定する。850で、抽出モジュールは、共有シークレットを抽出する。850の後に、抽出モジュールは、セキュリティモジュールに共有シークレットを伝送してよい。
【0080】
使用可能な条件下で、特定の1つの実施形態において、抽出モジュールは、複数のClientHelloメッセージを見つけるための複数のTCPストリーム内にフックしてよい。ClientHelloメッセージが見つかる場合、セッションについての鍵素材が見つかるまで、すべてのTLSメッセージが検査される。
【0081】
SessionIDは、そのServerHelloメッセージに対して抽出される。検査された処理によりそれぞれのパケットが処理される前および後に、その処理は、SCHANNEL.DLLがロードされたかどうかを見つけ、SCHANNEL.DLL内に暗号化データ構造の基数を見つけ、ServerHelloメッセージ内に見つかったセッションIDに対する鍵素材を見つけ、そこでプレマスターおよび/またはマスターシークレットも見つけるかもしれない、EnumProcessModulesおよびReadProcessMemoryを介してクエリーが行われる。一度、鍵素材が見つかると、鍵素材は、セキュリティモジュールに送信される。この処理は、適切なデータ構造についての処理空間を検索することにより、静的にリンクされるそれらを含む、図7における鍵素材を見つけることに拡張してよい。
【0082】
図9は、実施形態に従った暗号化されたネットワークフローを分析するための処理を例示する単純化されたフローチャートである。フロー900は、暗号化プロトコルセッションの間に動作する処理でよい。902で、セキュリティモジュールは、第1ノードと第2ノードとの間で暗号化されたネットワークフローを監視する。ネットワークフローは、第1ノードから開始される。実施形態において、第1ノードは、クライアントでよく、第2ノードはサーバでよい。暗号化されたネットワークフローは、第1ノードと第2ノードとの間で双方向に行き来する。
【0083】
904で、セキュリティモジュールは、暗号化されたネットワークフローのコピーを形成すべく、暗号化されたネットワークフローを複製する。906で、セキュリティモジュールは、共有シークレットを用いることで、暗号化されたネットワークフローのコピーを復号化する。共有シークレットは、第1ノードおよび第2ノードに関連する。第1ノードおよび第2ノードの両方は、共有シークレットを知っている。実施形態において、第1ノードは、共有シークレットを提供する。共有シークレットを知ることにより、セキュリティモジュールは、ネットワークフローを干渉することなく、ネットワークフローを復号化できる。
【0084】
908で、セキュリティモジュールは、対象データについてのネットワークフローのコピーをスキャンする。対象データは、クライアント、ユーザ、セキュリティモジュール、ファイアウォール、セキュリティソフトウェア、ポリシーサーバ、または他のエンティティにより対象とされるデータでよい。更に、1または複数の実施形態で、抽出モジュールは、902の前に、第1ノードから共有シークレットを抽出してよい。更に、1または複数の実施形態で、セキュリティモジュールは、902での監視の一部として、暗号化されたネットワークフローを遅延させ、暗号化されたネットワークフローを転送してよい。その実施形態において、セキュリティモジュールは、ネットワークフローのコピーをスキャンするための時間を与えるために転送を遅延させてよい。ネットワークフローのコピーでの対象データを特定することに応答して、セキュリティモジュールは、暗号化されたネットワークフローを終了してよい。
【0085】
図10は、実施形態に従ったプロセッサ1000に連結されたメモリ1002も例示する。メモリ1002は、当業者に知られ、またはさもなくば利用可能であるように、(様々な層のメモリ階層を含む)任意の多種多様なメモリでよい。メモリ1002は、プロセッサ1000により実行される1または複数の命令でよいコード1004を含んでよい。プロセッサ1000は、コード1004により示される複数の命令のプログラムシーケンスに従う。それぞれの命令は、フロントエンドロジック1006に入り、1または複数のデコーダ1008により処理される。
【0086】
デコーダは、事前に定義されたフォーマットでの固定幅マイクロオペレーションなどのマイクロオペレーションを出力として生成し、もしくはオリジナルのコード命令を反映する他の複数の命令、複数のマイクロ命令、または複数の制御信号を生成してよい。フロントエンドロジック1006は、概して複数のリソースを割り当て、実行のための変換命令に対応する動作をキューするレジスタリネーミングロジック1010およびスケジューリングロジック1012も含む。
【0087】
プロセッサ1000は、一セットの実行ユニット1016−1〜1016−Nを有する実行ロジック1014を含むように示される。いくつかの実施形態は、複数の特定の関数または複数の関数の複数のセットに対して専用の多数の実行ユニットを含んでよい。複数の他の実施形態は、特定の関数を実行できる1つのみの実行ユニット、または1つの実行ユニットを含んでよい。実行ロジック1014は、複数のコード命令により特定される複数の動作を実行する。
【0088】
複数のコード命令により特定される動作の実行が完了した後、バックエンドロジック1018が、コード1004の命令をリタイアさせる。一実施形態では、プロセッサ1000は、アウトオブオーダー実行を許可するが、複数の命令のインオーダーリタイアメントを要求する。リタイアメントロジック1020は、当業者により知られている様々な形式(例えば、再注文バッファ処理など)を扱ってよい。このやり方で、プロセッサ1000は、レジスタリネーミングロジック1010により利用されるデコーダ、ハードウェアレジスタ、およびテーブルと、実行ロジック1014により変更される任意のレジスタ(不図示)とにより生成される出力に少なくとも関して、コード1004の実行中に変換される。
【0089】
図10には例示されないが、処理要素は、プロセッサ1000とともにチップ上に複数の他の要素を含んでよい。例えば、処理要素は、プロセッサ1000と共にメモリ制御ロジックを含んでよい。処理要素は、I/O制御ロジックを含んでよく、および/またはメモリ制御ロジックと一体化されたI/O制御ロジックを含んでよい。処理要素は、1または複数のキャッシュも含んでよい。
【0090】
図11は、実施形態に従ったポイントツーポイント(PtP)構成で構成されたコンピューティングシステム1100を図示する。具体的には、図11は、複数のプロセッサ、メモリ、および入出力デバイスが、多数のポイントツーポイントインターフェースにより相互接続されたシステムを示す。
【0091】
図11に図示されるように、システム1100は、プロセッサ1102および1104の2つのみが明確に図示されているが、複数のプロセッサを含んでよい。プロセッサ1102および1104は、それぞれ、プログラムの複数の処理を実行する一セットのコア1103および1105を含んでよい。プロセッサ1102および1104は、また、それぞれ、メモリ1110および1112と通信する内蔵型メモリコントローラロジック(MC)1106および1108を含んでよい。メモリ1110および/または1112は、これらがメモリ1112を参照して開示されるなどの様々なデータを格納してよい。代替の実施例において、メモリコントローラロジック1106および1108は、プロセッサ1102および1104から分離された別個のロジックでよい。
【0092】
プロセッサ1102および1104は、これらが図1のプロセッサ102を参照して開示されるなどの任意のタイプのプロセッサでよい。プロセッサ1102および1104は、それぞれ、ポイントツーポイントインターフェース回路1116および1118を用いることで、ポイントツーポイント(PtP)インターフェース1114を介してデータを交換してよい。プロセッサ1102および1104は、それぞれ、ポイントツーポイントインターフェース回路1126、1128、1130および1132を用いることで、個々のポイントツーポイントインターフェース1122および1124を介してチップセット1120とデータを交換してよい。チップセット1120は、また、PtPインターフェース回路でありうるインターフェース回路1137を用いることにより、高パフォーマンスグラフィクスインターフェース1136を介して、高パフォーマンスグラフィクス回路1134とデータを交換してよい。代替の実施例において、図11に図示される任意のまたはすべてのPtPリンクは、1つのPtPリンクではなく、マルチドロップバスとして実装されることができる。
【0093】
少なくとも1つ実施形態は、本明細書で開示されるように、プロセッサ1102および1104内で提供されてよい。しかしながら、他の実施形態は、図11のシステム1100内の他の回路、ロジックユニット、またはデバイスに存在してよい。さらに、他の実施形態は、図11に図示される複数の回路、ロジックユニット、またはデバイスの至る所に割り振られてよい。
【0094】
チップセット1120は、インターフェース回路1141を介してバス1140と通信してよい。バス1140は、バス1140を介して通信する、バスブリッジ1142およびI/Oデバイス1143などの1または複数のデバイスを有してよい。バス1144を介して、バスブリッジ1143は、キーボード/マウス1145(または、例えばタッチスクリーンなどの他の入力装置)、通信デバイス1146(モデム、ネットワークインターフェースデバイス、またはコンピュータネットワークを介して通信できる他のタイプの通信デバイスなど)、オーディオI/Oデバイス1147、および/または、データストレージデバイス1148などの複数の他のデバイスと通信してよい。
【0095】
データ記憶デバイス1148は、プロセッサ1102および/または1104により実行されてよいコード1149を含んでよい。代替の実施例において、バスアーキテクチャの任意の一部は、1または複数のPtPリンクで実装されることができる。
【0096】
図10および11に示されるコンピュータシステムは、本明細書で開示される様々な実施形態で利用されてよい複数のコンピューティングシステムの複数の実施形態の略図である。図10および11に示される複数のシステムの様々なコンポーネントは、システムオンチップ(SoC)アーキテクチャまたは他の適した構成で組み合わせられてよいことは理解されよう。例えば、本明細書で開示される複数の実施形態は、例えば、スマートセルラーフォンなどのモバイルデバイス、タブレットコンピュータ、携帯情報端末、ポータブルゲームデバイスなどのシステム内に組み込まれることができる。
【0097】
これらのモバイルデバイスは、少なくともいくつかの実施形態でSoCアーキテクチャを備えてよいことは理解されよう。
【0098】
特定の例の実装において、本明細書で概説されるセキュリティモジュールおよび抽出モジュールの機能は、1または複数の有形の媒体(例えば、特定用途向け集積回路(ASIC)で提供される埋め込み論理、デジタルシグナルプロセッサ(DSP)命令、プロセッサ、または他の同様な機械によって実行されるソフトウェア(潜在的にオブジェクトコードおよびソースコードを含有)など)にエンコードされているロジックによって実装されてよいことに留意すべきである。これらの例のいくつかにおいて、メモリ要素は、本明細書で説明される動作のために用いられるデータを格納できる。
【0099】
これは、本明細書で説明されるアクティビティを実行すべく、実行されるソフトウェア、ロジック、コードまたはプロセッサ命令を格納することができるメモリ要素を含む。プロセッサは、ここで、本明細書で詳説される動作を達成するためのデータに関連する任意のタイプの命令を実行できる。一例において、プロセッサは、1つの状態または状況から他の状態または状況に要素または項目(例えば、データ)を変換できる。他の例において、本明細書で概説される複数のアクティビティは、固定論理またはプログラマブル論理(例えば、プロセッサによって実行されるソフトウェア/コンピュータ命令)で実装されてよい。本明細書で説明される複数の要素は、いくつかのタイプのプログラマブルプロセッサ、プログラマブルデジタルロジック(例えば、FPGA、EPROM、EEPROM)またはデジタル論理、ソフトウェア、コード、電子命令および任意の適したそれらの組み合わせを含むASICでありうる。
【0100】
1つの例示の実装において、セキュリティモジュールおよび抽出モジュールは、本明細書で概説される複数のセキュリティアクティビティを達成するためにソフトウェアを含んでよい。セキュリティモジュールおよび抽出モジュールは、本明細書で開示されるように、複数のセキュリティアクティビティを達成するのに用いられる情報を格納するための複数のメモリ要素を含むことができる。更に、セキュリティモジュールおよび抽出モジュールは、本明細書で開示されるように、複数のセキュリティアクティビティを実行するソフトウェアまたはアルゴリズムを実行できるプロセッサを含んでよい。これらのデバイスは、任意の適したメモリ要素(ランダムアクセスメモリ(RAM)、ROM、EPROM、EEPROM、ASICなど)、ソフトウェア、ハードウェアに、または任意の他の適したコンポーネント、デバイス、要素、または適切な特定の必要性に基づくオブジェクトに、情報をさらに保持してよい。更に、セキュリティモジュールおよび抽出モジュールは、ソフトウェア、ハードウェア、ファームウェア、またはそれらの組み合わせでありうる。本明細書で説明される任意のメモリアイテム(例えば、データベース、テーブル、ツリー、キャッシュなど)は、広義の用語「メモリ要素」内に包含されるように解釈されるべきである。同様に、本明細書で記載される潜在的な処理要素、モジュールおよび機械は、広義の用語「プロセッサ」内に包含されるように解釈されるべきである。
【0101】
上記で提供される例は、本明細書で提供される様々な他の例と同様に、インタラクションが、2、3、4つの要素に関して説明されてよいことを留意すべきである。しかし、これは、明確性および単なる例示を目的としている。特定の場合、限定された数要素を参照することのみにより所与のセットの複数のフローの1または複数の機能を説明することを容易にできる。セキュリティモジュールおよび抽出モジュール(およびそれらの教示)は、より複雑な/高機能な構成および設定と同様に、多数のコンポーネントを容易に拡張および適合されてよい。従って、提供される例は、または、無数の他のアーキテクチャに潜在的に適用されるようなセキュリティモジュールおよび抽出モジュールの範囲を制限せず、それらの広い教示を妨げるべきでない。
【0102】
先行するフロー図における複数の動作は、セキュリティモジュールおよび抽出モジュールにより、または内で実行されてよい可能な複数のシナリオおよび複数のパターンのいくつかのみを例示していることを留意すべきことも重要である。
【0103】
これらの動作のいくつかは、適切に削除または取り除かれてよく、または本開示の範囲から大幅に逸脱しないで、修正または変更されてよい。さらに、これらの動作の多数は、同時にまたはパラレルに、1または複数の追加の動作を実行するように説明されている。しかし、これらの動作のタイミングは、大幅に変更されてよい。先行の動作フローは、例示および説明を目的として提示されている。
【0104】
セキュリティモジュールおよび抽出モジュールは、任意の適した構成、年代、設定、およびタイミングメカニズムが本開示の教示を逸脱せずに提供されうる、かなりのフレキシビリティを提供する。
【0105】
本開示は、特定の構成よび設定を参照して詳述されているけれども、これらの例示的な設定および構成は、本開示の範囲を実質的に逸脱することなくかなり変更されてよい。
【0106】
以下の複数の例は、本明細書に従った複数の実施形態に関連する。1または複数の実施形態は、暗号化されたネットワークフローを分析するための方法を提供してよい。方法は、第1ノードから開始された暗号化されたネットワークフローを第1ノードと第2ノードとの間で監視する段階と、暗号化されたネットワークフローのコピーを形成すべく、暗号化されたネットワークフローを複製する段階と、第1ノードと第2ノードとに関連する共有シークレットを用いることにより、暗号化されたネットワークフローのコピーを復号化する段階と、対象データについてのネットワークフローのコピーをスキャンする段階とを含んでよい。
【0107】
一例の実施形態は、さらに、第1ノードから共有シークレットを抽出する段階を含む。
【0108】
一例の実施形態は、さらに、暗号化されたネットワークフローを遅延させ、暗号化されたネットワークフローを転送することを含む。
【0109】
一例の実施形態は、さらに、ネットワークフローのコピー内の対象データを特定することに応答して、暗号化されたネットワークフローを終了する段階を含む。
【0110】
一例の実施形態は、さらに、ネットワークフローのコピー内の対象データを特定することに応答して、転送の前に、共有シークレットを用いることにより暗号化されたネットワークフローを復号化する段階と、対象データを除去すべく、暗号化されていないネットワークフローを修正する段階と、共有シークレットを用いることにより修正されたネットワークフローを暗号化する段階と、修正されたネットワークフローを転送する段階とを含む。
【0111】
一例の実施形態は、さらに、第1ノードから共有シークレットを抽出する段階が、暗号化プロトコルセッションにアクセスする第1ノード上のアプリケーションに、アプリケーションを介した暗号化プロトコルセッションへのアクセスを許可する共用ライブラリをロードする段階と、暗号化プロトコルセッション内の共有シークレットを特定する段階とを含むことを含む。
【0112】
一例の実施形態は、さらに、第1ノードから共有シークレットを抽出する段階が、ネットワーク層でネットワークフローを監視する段階と、暗号化プロトコルセッションのハンドシェイクの開始を特定する段階と、開始を特定することに応答して、暗号化プロトコルセッションを開始する処理のメモリ空間を開放する段階と、処理のメモリ空間内の暗号化プロトコルセッションでの共有シークレットを特定する段階を含むことを含む。 一例の実施形態は、さらに、共有シークレットは、マスターシークレット、プレマスターシークレット、セッションコンテキストの少なくとも1つである。
【0113】
本明細書中で用られるように、文言「少なくとも1つ」は、リストの任意の1つまたは組み合わせを意味することができる。例えば、A、BおよびCの少なくとも1つは、A、BまたはC、あるいはそれらの組み合わせを意味することができる。
【0114】
一例の実施形態は、さらに、第1ノードと第2ノードとの間のネットワークフローを暗号化するために用いられる暗号化方式の数を制限する段階を含む。
【0115】
1または複数の実施形態は、第1ノードから共有シークレットを抽出するための方法、装置、および/または機械アクセス可能な記憶媒体を提供する。方法は、第1ノード上のアプリケーションに共用ライブラリをロードする段階と、暗号化プロトコルセッションで共有シークレットを特定する段階を含む。アプリケーションは、暗号化プロトコルセッションにアクセスする。共用ライブラリは、アプリケーションを介した暗号化プロトコルセッションへのアクセスを許可する。
【0116】
1または複数の実施形態は、第1ノードからの共有シークレットを抽出するための方法、装置、および/または機械アクセス可能な記録媒体を提供する。
【0117】
方法は、ネットワーク層でネットワークフローを監視する段階と、暗号化プロトコルセッションのハンドシェイクの開始を特定する段階と、開始を特定することに応答して、暗号化プロトコルセッションを開始する処理のメモリ空間を開放する段階と、処理のメモリ空間内の暗号化プロトコルセッションでの共有シークレットを特定する段階とを含む。
【0118】
一例の実施形態は、さらに、処理のメモリ空間から共有シークレットを抽出する段階を含む。 一例の実施形態は、さらに、セキュリティモジュールに共有シークレットを送信する段階を含む。 1または複数の実施形態は、装置を提供する。
【0119】
装置は、第1ノードから開始された暗号化されたネットワークフローを第1ノードと第2ノードとの間で監視し、暗号化されたネットワークフローのコピーを形成すべく、暗号化されたネットワークフローを複製し、第1ノードと第2ノードとに関連する共有シークレットを用いることにより、暗号化されたネットワークフローのコピーを復号化し、対象データについてのネットワークフローのコピーをスキャンするよう構成されるセキュリティモジュールを備える。
【0120】
一例の実施形態は、第1ノードから共有シークレットを抽出するよう構成された抽出モジュールをさらに備える。
【0121】
一例の実施形態は、さらに、セキュリティモジュールが、暗号化されたネットワークフローを遅延させ、暗号化されたネットワークフローを転送するようさらに構成されることを含む。
【0122】
一例の実施形態は、さらに、セキュリティモジュールがネットワークフローのコピー内の対象データを特定することに応答して、暗号化されたネットワークフローを終了するようさらに構成されることを含む。
【0123】
一例の実施形態は、さらに、セキュリティモジュールが、ネットワークフローのコピー内の対象データを特定することに応答して、転送の前に、共有シークレットを用いることにより暗号化されたネットワークフローを復号化し、対象データを除去すべく、暗号化されていないネットワークフローを修正し、共有シークレットを用いることにより修正されたネットワークフローを暗号化し、修正されたネットワークフローを転送するようさらに構成されることを含む。
【0124】
一例の実施形態は、さらに、第1ノードから共有シークレットを抽出するよう構成された抽出モジュールが、暗号化プロトコルセッションにアクセスする第1ノード上のアプリケーションに、アプリケーションを介した暗号化プロトコルセッションへのアクセスを許可する共用ライブラリをロードし、暗号化プロトコルセッション内の共有シークレットを特定するよう構成された抽出モジュールを含むことを含む。
【0125】
一例の実施形態は、さらに、第1ノードから共有シークレットを抽出するよう構成された抽出モジュールは、ネットワーク層でネットワークフローを監視し、暗号化プロトコルセッションのハンドシェイクの開始を特定し、開始を特定することに応答して、暗号化プロトコルセッションを開始する処理のメモリ空間を開放し、処理のメモリ空間内の暗号化プロトコルセッションでの共有シークレットを特定する構成された抽出モジュールを含むことを含む。
【0126】
一例の実施形態は、共有シークレットは、マスターシークレット、プレマスターシークレット、セッションコンテキストの少なくとも1つであることをさらに含む。
【0127】
一例の実施形態は、さらに、セキュリティモジュールが、第1ノードと第2ノードとの間のネットワークフローを暗号化するために用いられる暗号化方式の数を制限するようさらに構成されることを含む。
【0128】
1または複数の実施形態は、暗号化されたネットワークフローを分析するための命令が格納された少なくとも1つの機械アクセス可能な記憶媒体を提供する。命令は、機械で実行される場合、機械に、第1ノードから開始された暗号化されたネットワークフローを第1ノードと第2ノードとの間で監視する段階と、暗号化されたネットワークフローのコピーを形成すべく、暗号化されたネットワークフローを複製する段階と、記第1ノードと第2ノードとに関連する共有シークレットを用いることにより、暗号化されたネットワークフローのコピーを復号化する段階と、対象データについてのネットワークフローのコピーをスキャンする段階とを実行させる。
【0129】
一例の実施形態は、さらに、命令は、機械で実行される場合、機械に、第1ノードから共有シークレットを抽出する段階を実行させることを含む。
【0130】
一例の実施形態は、さらに、命令は、機械で実行される場合、機械に、暗号化されたネットワークフローを遅延させる段階、暗号化されたネットワークフローを転送する段階を実行させることを含む。
【0131】
一例の実施形態は、さらに、命令は、機械で実行される場合、機械に、ネットワークフローのコピー内の対象データを特定することに応答して、暗号化されたネットワークフローを終了する段階を実行させることを含む。
【0132】
一例の実施形態は、さらに、命令は、機械で実行される場合、機械に、ネットワークフローのコピー内の対象データを特定することに応答して、転送の前に、共有シークレットを用いることにより暗号化されたネットワークフローを復号化する段階と、対象データを除去すべく、暗号化されていないネットワークフローを修正する段階と、共有シークレットを用いることにより修正されたネットワークフローを暗号化する段階と、修正されたネットワークフローを転送する段階とを実行させることを含む。
【0133】
一例の実施形態は、さらに、命令は、機械で実行される場合、機械に、第1ノードから共有シークレットを抽出させ、さらに命令は、機械で実行される場合、機械に、暗号化プロトコルセッションにアクセスする第1ノード上のアプリケーションに、アプリケーションを介した暗号化プロトコルセッションへのアクセスを許可する共用ライブラリをロードする段階と、暗号化プロトコルセッション内の共有シークレットを特定する段階とを実行させることを含む。
【0134】
一例の実施形態は、さらに、命令は、機械で実行される場合、機械に、第1ノードから共有シークレットを抽出させ、さらに命令は、機械で実行される場合、機械に、ネットワーク層でネットワークフローを監視する段階と、暗号化プロトコルセッションのハンドシェイクの開始を特定する段階と、開始を特定することに応答して、暗号化プロトコルセッションを開始する処理のメモリ空間を開放する段階と、処理のメモリ空間内の暗号化プロトコルセッションでの共有シークレットを特定する段階とを実行させることを含む。
【0135】
一例の実施形態は、さらに、共有シークレットが、マスターシークレット、プレマスターシークレット、セッションコンテキストの少なくとも1つであることを含む。
【0136】
一例の実施形態は、さらに、命令は、機械で実行される場合、機械に、第1ノードと第2ノードとの間のネットワークフローを暗号化するために用いられる暗号化方式の数を制限する段階を実行させることを含む。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11