JP2019516294A - 仮想化環境においてネットワークトラフィックを解読するためのシステムおよび方法 - Google Patents

仮想化環境においてネットワークトラフィックを解読するためのシステムおよび方法 Download PDF

Info

Publication number
JP2019516294A
JP2019516294A JP2018552231A JP2018552231A JP2019516294A JP 2019516294 A JP2019516294 A JP 2019516294A JP 2018552231 A JP2018552231 A JP 2018552231A JP 2018552231 A JP2018552231 A JP 2018552231A JP 2019516294 A JP2019516294 A JP 2019516294A
Authority
JP
Japan
Prior art keywords
client system
memory page
session
occurrence
event
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018552231A
Other languages
English (en)
Other versions
JP6857193B2 (ja
Inventor
カラジア,ラドゥ
Original Assignee
ビットディフェンダー アイピーアール マネジメント リミテッド
ビットディフェンダー アイピーアール マネジメント リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ビットディフェンダー アイピーアール マネジメント リミテッド, ビットディフェンダー アイピーアール マネジメント リミテッド filed Critical ビットディフェンダー アイピーアール マネジメント リミテッド
Publication of JP2019516294A publication Critical patent/JP2019516294A/ja
Application granted granted Critical
Publication of JP6857193B2 publication Critical patent/JP6857193B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3249Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment

Abstract

説明されるシステムおよび方法は、中でも、悪意のあるソフトウェアの検知および分析、侵入検知、ならびに監視などの用途のための、クライアントシステムとリモートの当事者の間の暗号化された通信の解読を可能にする。クライアントシステムは、仮想マシン、および仮想マシンの外部のイントロスペクションエンジンを実行する。イントロスペクションエンジンは、第1のセッションイベント(例えば、ServerHelloメッセージ)と、第2のセッションイベント(例えば、ClientFinishedメッセージ)との間で内容が変化したメモリページを識別するように構成される。個々のメモリページは、個々の通信セッションに対する暗号化キー素材を収める可能性がある。解読エンジンは次に、識別されたメモリページの内容から導出された情報を使用して、個々の通信セッションの暗号化されたペイロードの解読を試みることができる。

Description

[0001]本出願は、2016年4月4日に出願の「Systems and Methods for Decrypting Network Traffic in a Virtualized Environment(仮想化環境においてネットワークトラフィックを解読(復号)するためのシステムおよび方法)」という名称の米国仮特許出願第62/317,804号の出願日の利益を主張し、これらの全内容が参照により本明細書に組み込まれる。
[0002]本発明は、コンピュータセキュリティシステムおよび方法に関し、詳細には暗号化された電子通信に関する。
[0003]現在のデジタル世界において、多種多様な製品およびサービスがデータ暗号化に依存する。暗号化された通信は、中でも、オンライン取引、オンラインバンキング、およびインターネットなどのデータネットワーク上の電話通信を可能にする。暗号化はまた、ユーザの私的および個人的データを保護するためにも広く使用される。相互接続された電子デバイス(モノのインターネット)が普及した時代において、暗号化に依拠することは強みであるが、脆弱性ともなる。
[0004]近年、暗号化は、例えば、悪意のあるソフトウェアの活動を隠すこと、または身代金のためにユーザの価値あるデータを保持することといった悪意のある目的のために、ますます使用されている。悪意のあるソフトウェア活動の1つの典型的な例は、一般にボットネットとして知られる、乗っ取られたコンピューティングシステムのネットワークをセットアップし、個々のネットワークを使用して標的のウェブサーバに対する分散型サービス拒否攻撃を始めることを含む。ボットネットをセットアップすることの一部として、ソフトウェアエージェントは、様々な方法(例えば、直接のハッキング、フィッシング等)を使用して、それぞれのボットネットメンバに侵入する。エージェントは次に、例えば、標的のネットワークアドレスを受け取るため、および/または他のボットネットメンバと攻撃を同調させるために、暗号化を使用して目立たないようにリモートサーバと通信することができる。このような悪意のある活動を防ぐため、または阻止するための様々な方法が説明されてきたが、このような対策は、マルウェアが暗号化を効率的に使用することによって徐々に弱められることがある。
[0005]マルウェア対策の実施は、一般に仮想マシンとして知られるシミュレートされたコンピュータ環境の作成を可能にする、ハードウェア仮想化技術の出現によってさらに複雑になる。いくつかの仮想マシンは、同じ物理マシン上で一斉に動作し、同じ物理マシンの間でハードウェアリソースを共有するので、その結果、投資および運用のコストを減らすことができる。それぞれの仮想マシンは、他の仮想マシンとは別に、それ自体のオペレーティングシステムおよび/またはソフトウェアアプリケーションを動作させることができる。ハードウェア仮想化は、例えば、ソフトウェアの携帯性を保証するため、またはセキュリティを強化するためといった、様々な理由で導入される。ハードウェア仮想化の他の普及している用途は、「クラウドコンピューティング」という総称で知られ、ウェブサーバファームおよび仮想デスクトップ基盤(VDI:virtual desktop infrastructure)を含む。典型的なVDI構成において、ソフトウェアアプリケーションは、第1のコンピュータシステム上で実行するが、ユーザは、第2のコンピュータシステム(端末)を使用して、個々のアプリケーションと対話する。個々のアプリケーションを動作させる仮想マシンは、第1のコンピュータシステム上にオンデマンドでインスタンスが生成され、最終的には複数のリモートユーザに対して何百ものこのようなVMを実行することになる可能性もある。マルウェアの拡散が絶え間なく続くので、それぞれの仮想マシンは、マルウェアからの保護を必要とする可能性がある。
[0006]セキュリティ脅威の拡大および仮想化に対する需要の増加は、ハードウェア仮想化の課題に対処するように設計された効率的なマルウェア対策システムおよび方法を開発することに強い関心を引き起こす。
[0007]1つの態様によれば、クライアントシステムは、ハードウェアプロセッサおよびメモリを備え、ハードウェアプロセッサは、仮想マシンおよびイントロスペクションエンジンを実行するように構成される。仮想マシンは、リモートの当事者との通信セッションを行うように構成され、通信セッションは、暗号化されたペイロードが後に続くハンドシェイクメッセージを含み、ハンドシェイクメッセージは、暗号化キーを導出するためにクライアントシステムによって使用される暗号化パラメータを収め、暗号化されたペイロードは、暗号化キーで暗号化される。イントロスペクションエンジンは、仮想マシンの外部で実行し、通信セッションの第1のセッションイベントの発生と、通信セッションの第2のセッションイベントの発生との間にターゲットメモリページの内容が変化したかどうかに従って、メモリ内でターゲットメモリページを識別するように構成される。イントロスペクションエンジンは、内容に従って、暗号化されたペイロードを解読するように構成された解読エンジンにターゲットメモリページの内容を送信するようにさらに構成される。
[0008]別の態様によれば、サーバコンピュータシステムは、複数のクライアントシステムのために解読手続きを行うように構成された解読エンジンを実行するように構成されたハードウェアプロセッサを備える。解読手続きは、複数のクライアントシステムのうちの1つのクライアントシステムのターゲットメモリページの内容を受け取ることと、クライアントシステム上で実行する仮想マシンとリモートの当事者の間で行われる通信セッションの暗号化されたペイロードを受け取ることと、それに応じて、ターゲットメモリページの内容に従って、暗号化されたペイロードを解読することとを含む。通信セッションは、暗号化されたペイロードが後に続くハンドシェイクメッセージを含み、ハンドシェイクメッセージは、暗号化キーを導出するためにクライアントシステムによって使用される暗号化パラメータを収め、暗号化されたペイロードは、暗号化キーで暗号化される。クライアントシステムは、仮想マシンの外部でイントロスペクションエンジンを実行するように構成され、イントロスペクションエンジンは、通信セッションの第1のセッションイベントの発生と、通信セッションの第2のセッションイベントの発生との間にターゲットメモリページの内容が変化したかどうかに従って、クライアントシステムのメモリ内のターゲットメモリページを識別するように構成される。
[0009]別の態様によれば、非一時的コンピュータ可読媒体は、メモリをさらに備えるクライアントシステムのハードウェアプロセッサによって実行されると、クライアントシステム上で実行する仮想マシンの外部で実行するイントロスペクションエンジンをハードウェアプロセッサに形成させる命令を格納する。仮想マシンは、リモートの当事者との通信セッションを行うように構成され、通信セッションは、暗号化されたペイロードが後に続くハンドシェイクメッセージを含み、ハンドシェイクメッセージは、暗号化キーを導出するためにクライアントシステムによって使用される暗号化パラメータを収め、暗号化されたペイロードは、暗号化キーで暗号化される。イントロスペクションエンジンは、通信セッションの第1のセッションイベントの発生と、通信セッションの第2のセッションイベントの発生との間にターゲットメモリページの内容が変化したかどうかに従って、メモリ内でターゲットメモリページを識別するように構成される。イントロスペクションエンジンは、内容に従って、暗号化されたペイロードを解読するように構成された解読エンジンにターゲットメモリページの内容を送信するようにさらに構成される。
[0010]別の態様によれば、クライアントシステムとリモートの当事者の間の暗号化された通信を解読する方法。クライアントシステムは、仮想マシンを実行するように構成される。仮想マシンは、リモートの当事者との通信セッションを行うように構成され、通信セッションは、暗号化されたペイロードが後に続くハンドシェイクメッセージを含み、ハンドシェイクメッセージは、暗号化キーを導出するためにクライアントシステムによって使用される暗号化パラメータを収め、暗号化されたペイロードは、暗号化キーで暗号化される。方法は、通信セッションの第1のセッションイベントの発生と、通信セッションの第2のセッションイベントの発生との間にターゲットメモリページの内容が変化したかどうかに従って、少なくとも1つのハードウェアプロセッサを用いてクライアントシステムのメモリ内でターゲットメモリページを識別することを含む。方法は、少なくとも1つのハードウェアプロセッサを用いて暗号化されたペイロードを採取することと、ターゲットメモリページの内容に従って、少なくとも1つのハードウェアプロセッサを用いて暗号化されたペイロードを解読することとをさらに含む。
[0011]本発明の前述の態様および利点は、以下の詳細な説明を読み、図面を参照すると、よりよく理解されるようになるであろう。
[0012]本発明のいくつかの実施形態による、クライアントシステムがセキュリティサーバと協力して、潜在的に悪意のあるネットワークトラフィックを解読する例示的な構成を示す図である。 [0013]本発明のいくつかの実施形態による、クライアントシステムの例示的なハードウェア構成を示す図である。 [0014]本発明のいくつかの実施形態による、セキュリティサーバの例示的なハードウェア構成を示す図である。 [0015]本発明のいくつかの実施形態による、クライアントシステム上で実行するハイパーバイザによって公開されるゲスト仮想マシン(VM)、およびこのゲストVMの外部で実行するイントロスペクションエンジンを示す図である。 [0016]図3に示されるようなハードウェア仮想化構成における例示的なメモリアドレス変換を示す図である。 [0017]本発明のいくつかの実施形態による、ゲストVMに出入りする暗号化されたトラフィックを傍受するために、イントロスペクションエンジンによって行われるステップの例示的なシーケンスを示す図である。 [0018]本発明のいくつかの実施形態による、ゲストVMの最適化されたメモリスナップショットを取得するために、イントロスペクションエンジンによって行われるステップの例示的なシーケンスを示す図である。 [0019]本発明のいくつかの実施形態による、複数の並行した暗号化された通信セッションに対する最適化されたメモリスナップショットを取得するためにイントロスペクションエンジンによって行われるステップの例示的なシーケンスを示す図である。 [0020]本発明のいくつかの実施形態による、セキュリティサーバ上で実行する例示的な解読エンジンを示す図である。 [0021]本発明のいくつかの実施形態による、解読エンジンによって行われるステップの例示的なシーケンスを示す図である。
[0022]以下の説明において、構造間の列挙される接続はすべて、中間体構造を介した直接の動作的接続であっても、または間接の動作的接続であってもよいということを理解されたい。要素のセットは、1つまたは複数の要素を含む。要素の任意の列挙は、少なくとも1つの要素を指すものと理解されたい。複数の要素は、少なくとも2つの要素を含む。別段の指定がない限り、「または(OR)」の使用は、非排他的な「または」を指す。別段の要求がない限り、任意の説明される方法ステップは、必ずしも特定の示された順序で行われる必要はない。第2の要素から導出された第1の要素(例えばデータ)は、第2の要素に等しい第1の要素、ならびに第2の要素を処理することによって生成される第1の要素、および任意選択で他のデータを包含する。パラメータに従って判断または判定することは、パラメータに従って、および任意選択で他のデータに従って判断または判定することを包含する。別段の指定がない限り、いくつかの量/データの指標は、量/データ自体、または量/データ自体とは異なる指標であってもよい。コンピュータセキュリティは、データおよび/またはハードウェアへの非意図的または不正なアクセス、データおよび/またはハードウェアの非意図的または不正な修正、ならびにデータおよび/またはハードウェアの破壊からユーザおよび機器を保護することを包含する。コンピュータプログラムは、タスクを実行する一連のプロセッサ命令である。本発明のいくつかの実施形態において説明されるコンピュータプログラムは、他のコンピュータプログラムのスタンドアロンソフトウェアのエンティティまたはサブエンティティ(例えば、サブルーチン、ライブラリ)であってよい。別段の指定がない限り、ゲストソフトウェアは、仮想マシンの中で実行する。プログラムは、個々の仮想マシンの仮想プロセッサ上で実行するときに仮想マシンの中で実行すると言われる。プロセスは、アプリケーションまたはオペレーティングシステムの一部などの、コンピュータプログラムのインスタンスであり、少なくとも実行スレッドおよび実行スレッドに割り当てられた仮想メモリ空間を有することによって特徴付けられ、個々の仮想メモリ空間の内容には、実行可能コードを含む。別段の指定がない限り、ページは、ホストシステムの物理メモリに個別にマッピングされることが可能な仮想メモリの最小単位を表す。別段の指定がない限り、クライアントシステム/仮想マシンのメモリスナップショットは、個々のクライアントシステム/仮想マシンによって使用されるメモリのセクションの内容のコピーを含む。コンピュータ可読媒体は、磁気、光、および半導体のストレージ媒体(例えば、ハードドライブ、光ディスク、フラッシュメモリ、DRAM)などの非一時的媒体、ならびに導電性ケーブルおよび光ファイバリンクなどの通信リンクを包含する。いくつかの実施形態によれば、本発明は、特に、本明細書で説明される方法を行うようにプログラムされたハードウェア(例えば、1つまたは複数のマイクロプロセッサ)、ならびに本明細書で説明される方法を行うように命令をエンコーディングするコンピュータ可読媒体を備えるコンピュータシステムを提供する。
[0023]以下の説明は、本発明の実施形態を例として示し、必ずしも限定するために示すものではない。
[0024]図1は、本発明のいくつかの実施形態による例示的な構成を示し、クライアントシステム12a〜12dのセットは、セキュリティサーバ15と協力して、個々のクライアントシステム12a〜12dと、コンテンツサーバ13として示されるリモートの当事者との間に発生する、暗号化されたネットワークトラフィックを傍受し、解読する。サーバ13および15のそれぞれは、相互接続されたコンピューティングシステムのセットを総称的に表し、これらは互いに物理的に近くにあってもよく、また近くになくてもよい。
[0025]例示的なクライアントシステム12a〜12dは、企業のコンピューティングシステムを含み、パーソナルコンピュータシステム、モバイルコンピューティングプラットフォーム(ラップトップコンピュータ、タブレット、携帯電話)、ウェアラブル電子デバイス(スマートウオッチ)、家庭用設備(スマートTV、サーモスタット、住宅監視(home surveillance)/セキュリティシステム)、またはプロセッサおよびメモリを有し、ハードウェア仮想化サポートする他の任意の電子デバイスも含む。コンピュータセキュリティにとって特に関心のある1つの例示的なクライアントシステムは、ハニーポットとして構成されるコンピュータである。ハニーポットは、データ収集および悪意のあるソフトウェアの研究のために、悪意のあるエンティティを誘い込むためのシステムおよび方法のセットを説明するために、当技術分野において使用される総称である。例示的なハニーポットは、明らかに保護されていないコンピュータシステムを含み、ハッカーもしくはマルウェアエージェントに入り込ませ、ソフトウェアをインストールさせ、および/またはネットワーク上で他のコンピュータと通信させることができる。
[0026]図示されたクライアントシステムは、企業ネットワークまたはホームネットワークなどの、ローカルな通信ネットワーク10を介して相互接続される。ローカルネットワーク10の一部は、ローカルエリアネットワーク(LAN:local area network)を含んでよい。ゲートウェイデバイス14は、拡張ネットワーク11(例えばインターネット)へのクライアントシステム12a〜12dによるアクセスを可能にすることができ、その結果、クライアントシステム12a〜12dとリモートの当事者の間のネットワークトラフィックのすべてまたは一部は、ゲートウェイデバイス14を通り抜ける。例示的なゲートウェイデバイス14は、ルータおよび/またはスイッチなどの物理的な設備を備える。
[0027]図2−Aは、本発明のいくつかの実施形態による、クライアントシステム12の例示的なハードウェア構成を示す。クライアントシステム12は、図1のシステム12a〜12dのいずれかを表すことができる。簡単にするために、図示されたクライアントシステムはパーソナルコンピュータであるが、携帯電話、タブレット型コンピュータ等など、他のクライアントシステムのハードウェア構成は、図2−Aの図示された構成とはいくぶん相違してもよい。クライアントシステム12は、ハードウェアプロセッサ16およびメモリユニット18を含む物理デバイスのセットを備える。プロセッサ16は、信号および/またはデータのセットを用いて算術演算および/または論理演算を実行するように構成された物理デバイス(例えば、マイクロプロセッサ、半導体基板上に形成されたマルチコア集積回路等)を備える。いくつかの実施形態において、このような演算は、一連のプロセッサ命令(例えば、機械語または他のタイプのエンコーディング)の形でプロセッサ16に配信される。メモリユニット18は、プロセッサ16によってアクセスまたは生成される命令および/またはデータを格納する揮発性コンピュータ可読媒体(例えば、DRAM、SRAM)を備えることができる。
[0028]入力デバイス20は、中でも、コンピュータキーボードおよびマウスを含むことができ、ユーザがデータおよび/または命令をシステム12に導入することを可能にする。出力デバイス22は、モニタなどの表示デバイスを含むことができる。いくつかの実施形態において、入力デバイス20および出力デバイス22は、タッチスクリーンデバイスの場合のように、共通のハードウェアを共有することができる。ストレージデバイス24は、ソフトウェア命令および/またはデータの不揮発性の記憶、読込み、および書込みを可能にするコンピュータ可読媒体を含む。例示的なストレージデバイス24は、磁気ディスク、光ディスク、およびフラッシュメモリデバイス、ならびにCDおよび/またはDVDのディスクおよびドライブなどのリムーバブルメディアを含む。ネットワークアダプタ26は、システム12がネットワーク10および/または他のマシン/コンピュータシステムに接続することを可能にする。コントローラハブ28は、複数のシステム、周辺機器、およびチップセットバスならびに/またはシステム12のデバイス16〜26の相互通信を可能にする他のすべての回路機器を総称的に表す。例えば、コントローラハブ28は、中でも、メモリコントローラ、入力/出力(I/O:input/output)コントローラ、および割込コントローラを含むことができる。別の例において、ハブ28は、中でも、プロセッサ16をメモリ18に接続するノースブリッジバス、ならびに/またはプロセッサ16をデバイス20、22、24、および26に接続するサウスブリッジバスを備えることができる。
[0029]図2−Bは、本発明のいくつかの実施形態におけるセキュリティサーバ15の例示的なハードウェア構成を示す。図示された構成において、サーバ15は、サーバプロセッサ16、サーバメモリ18、サーバストレージデバイス124のセット、およびネットワークアダプタ126のセットを備える。プロセッサ116は、マイクロプロセッサ、またはデータのセットによって数理的演算および/または論理演算を実行するように構成された他の物理デバイスを備えることができる。メモリ18は、プロセッサ116によって実行および/または処理するための命令および/またはデータを格納する揮発性コンピュータ可読媒体を備えることができる。サーバストレージデバイス124は、中でも、ハードドライブ、CDおよびDVD ROM、ならびにフラッシュメモリなどの不揮発性コンピュータ可読媒体を備える。サーバネットワークアダプタ126は、セキュリティサーバ15が、拡張ネットワーク11を介して他の電子デバイスに接続すること、およびこれらのデバイスとデータを交換することを可能にする。
[0030]図3は、本発明のいくつかの実施形態による、典型的なソフトウェア構成を示す。クライアントシステム12は、仮想マシン(VM:virtual machine)のセットを公開するように構成される。図3は、ただ1つのゲストVM32を示しているが、いくつかの実施形態は、並行に動作する複数のVM(例えば数百)をホストすることができる。それぞれの仮想マシンは、実際の物理マシン/コンピュータシステムのエミュレーションを備え、オペレーティングシステムおよび様々なソフトウェアアプリケーションを実行することができる。図3に示されるような実施形態は、独自の、私的な、および/もしくは機密のデータを盗もうと試みるソフトウェア、またはクライアントシステム12を乗っ取り、ボットネットメンバに変換することを試みるソフトウェアなどの、悪意のあるソフトウェアからクラウドコンピューティングの顧客を保護するために使用されることが可能である。このような実施形態において、クライアントシステム12は、クラウドサービスプロバイダのサーバコンピュータシステムを表すことができる。他の例示的な実施形態において、クライアントシステム12は、パーソナルコンピュータまたは携帯電話などのユーザの私的デバイスを表す。このようなデバイスはしばしば、ハードウェア仮想化を用いて、例えば、ソフトウェアの携帯性を向上させ、またはセキュリティを強化する。さらに別の例示的な実施形態において、クライアントシステム12は、ハニーポットとして構成されてよい。このような実施形態において、クライアントシステム12は、例えば、1つはウェブサーバになりすまし、もう1つは企業ネットワークに接続されたパーソナルコンピュータになりすますなどして、複数の仮想マシンを公開することができる。
[0031]いくつかの実施形態において、ハイパーバイザ30は、クライアントシステム12上で実行し、ハイパーバイザ30は、仮想プロセッサおよび仮想メモリ管理ユニットなどの複数の仮想化されたデバイスを作り出すこと、または動作可能にすること、ならびにこのような仮想化されたデバイスを、クライアントシステム12の本物の物理デバイスの代用としてソフトウェアに提示することを行うように構成されたソフトウェアを備える。このような動作は一般に、仮想マシンを公開することとして当技術分野で知られる。ハイパーバイザ30はさらに、複数の仮想マシンがホストシステム12のハードウェアリソースを共有することを可能にし、その結果、それぞれのVMは独立して動作し、クライアントシステム12上で実行する、並行に実行している他のVMを意識しない。普及しているハイパーバイザの例は、中でも、VMware Inc.のVMware vSphere(商標)、およびオープンソースのXenハイパーバイザを含む。
[0032]図3に示される例示的な構成において、ゲストVM32は、ゲストオペレーティングシステム(OS:operating system)34、およびアプリケーション36a〜36bのセットを実行する。ゲストOS34は、中でも、Microsoft Windows(登録商標)、MacOS(登録商標)、Linux(登録商標)、iOS(登録商標)、またはAndroid(商標)などの、広く利用可能な任意のオペレーティングシステムを含むことができ、VM32の中で実行するアプリケーションと、ゲストVM32の仮想化されたハードウェアデバイスとの間のインターフェースを提供する。アプリケーション36a〜36bは、中でも、ワードプロセッサ、表計算アプリケーション、画像アプリケーション、ブラウザ、ソーシャルメディアアプリケーション、および電子通信アプリケーションなどの、任意のユーザアプリケーションを総称的に表す。ゲストOS34およびアプリケーション36a〜36bは本明細書において、ゲストVM32の中で実行すると言われており、すなわちこれらは、VM32の仮想プロセッサ上で実行する。対照的に、ハイパーバイザ30は、ゲストVM32の外部で実行すると言われる。
[0033]いくつかの実施形態において、ゲストVM32を公開することは、ゲストVM32の動作を管理するように、ハイパーバイザ30によって使用されるデータ構造を構成することを含む。このような構造は本明細書において、仮想マシン状態オブジェクト(VMSO:virtual machine state object)と称される。例示的なVMSOは、Intel(登録商標)プラットフォーム上の仮想マシン制御構造(VMCS:virtual machine control structure)、およびAMD(登録商標)プラットフォーム上の仮想マシン制御ブロック(VMCB:virtual machine control block)を含む。いくつかの実施形態において、プロセッサ16は、メモリ内の領域をそれぞれのVMSOと関連付け、その結果、ソフトウェアは、メモリアドレスまたはポインタ(例えば、Intel(登録商標)プラットフォーム上のVMCSポインタ)を使用して、具体的なVMSOを参照することができる。
[0034]それぞれのVMSOは、クライアントシステム12上で公開される個々の仮想化されたプロセッサの現在の状態を表すデータを含むことができる。マルチスレッド構成において、ハードウェアプロセッサ16は複数のコアを動作させることができ、それぞれのコアは複数の論理プロセッサをさらに備え、それぞれの論理プロセッサは、他の論理プロセッサの実行スレッドを独立して、およびこれらのプロセッサと並行に、処理することができる。複数の論理プロセッサは、例えば共通のMMUといった、いくつかのハードウェアリソースを共有することができる。マルチスレッド化された実施形態において、別個のVMSOは、それぞれの別個の論理プロセッサのためにセットアップされてよい。それぞれのVMSOは、ゲスト状態エリアおよびホスト状態エリアを有することができ、ゲスト状態エリアは、個々のVMの(すなわち、個々の仮想化されたプロセッサの)CPUの状態を保持し、ホスト状態エリアは、ハイパーバイザ30の現在の状態を格納する。いくつかの実施形態において、VMSOのゲスト状態エリアは、中でも、個々のVMの仮想プロセッサの制御レジスタ(例えば、CRO、CR3等)の内容、命令ポインタ(例えば、RIP)、汎用レジスタ(例えば、EAX、ECX等)、およびステータスレジスタ(例えば、EFLAGS)を含む。VMSOのホスト状態エリアは、個々のVMに対するアドレス変換のために構成されるページテーブルへのポインタ(例えば、Intel(登録商標)プラットフォーム上のEPTポインタ)を含むことができる。
[0035]いくつかの実施形態において、プロセッサ16は、VMSOの一部を専用の内部レジスタ/キャッシュに格納してよいが、個々のVMSOの他の部分は、メモリ18に常駐してよい。いつでも、(本明細書において、現在のVMSOと称される)多くても1つのVMSOが論理プロセッサ上にロードされてよく、個々の論理プロセッサを現在制御している仮想マシンを識別する。プロセッサ16が、VM内のソフトウェア(例えば、図3のアプリケーション36a)を実行することから、個々のVMの外部のソフトウェア(例えば、ハイパーバイザ30)を実行することに切り替えるとき、プロセッサ16は、現在のプロセッサの状態を、現在のVMSOのゲスト状態エリアに保存し、VMSOのホスト状態をプロセッサにロードすることができる。逆に、プロセッサ16が、VMの外部のソフトウェアを実行することから、個々のVM内のソフトウェアを実行することに切り替えるとき、プロセッサ16は、現在のプロセッサの状態を、VMSOのホスト状態エリアに保存し、現在のVMSOのゲスト状態をプロセッサ16にロードすることができる。
[0036]いくつかの実施形態において、イントロスペクションエンジン40は、個々のクライアントシステム上で公開されるすべてのゲストVMの外部で実行する。イントロスペクションは、ハードウェア仮想化に関する当技術分野において確立した用語であり、個々のVMの外部の立場から、仮想マシンの動作の様々な態様についての情報を集めることを総称的に表す。本発明のいくつかの実施形態において、イントロスペクションは、中でも、ゲストVM32の中で実行する処理をモニタリングすること、ゲストVM32の中で一定のOS機能またはプロセッサ命令を実行しようとする試みを傍受すること、ゲストVM32によって使用されるメモリページにアクセスしようとする試みを傍受すること、およびゲストVMによって使用される固有のデータが格納されるメモリ18の中の場所を判断することなどの動作を含む。エンジン40はハイパーバイザ30に組み込まれてよく、またハイパーバイザ30とは別個のおよび独立のソフトウェア構成要素として配信されてもよいが、ハイパーバイザ30と実質的に類似のプロセッサ特権レベルで実行する。単一のエンジン40は、クライアントシステム12上で実行する複数のVMをイントロスペクトするように構成されてよい。エンジン40は、ハイパーバイザ30と協力して、クライアントシステム12に出入りする通信を解読することができる。さらに具体的には、エンジン40は、下記に詳述するように、ゲストVM32によって送られた、または受け取られたメッセージを暗号化するために使用される暗号化キーをメモリ18の中にほぼ配置するように構成されてよい。
[0037]クライアントシステム12上で実行するソフトウェアは、ゲストVM32に出入りする通信を傍受すること、およびイントロスペクションエンジン40と情報を交換することを行うように構成されたネットワークフィルタ42をさらに備えることができる。フィルタ42は、例えば、TLSプロトコルを遵守する接続のためのポート443といった、特定のネットワークポートをリッスンすることができる。フィルタ42は、VM32の内部または外部で実行することができる。VM32の外部で実行するとき、単一のネットワークフィルタは、クライアントシステム12上で実行する複数のVMに出入りする通信をモニタリングすることができる。このようなモニタリングを実現するために、ハイパーバイザ30は、ネットワークフィルタ42を介してすべての通信を、クライアントシステム12に、および/またはクライアントシステム12からルーティングすることができる。フィルタ42は、ネットワークアダプタ26を排他的に制御することができ、例えば、Intel(登録商標)のVT−d(登録商標)技術を使用して実装され得る構成である。複数のVMをモニタリングするとき、フィルタ42は、VM固有のパケットの待ち行列を維持することができ、すなわち、それぞれの傍受されたネットワークパケットを発信元および/または宛先のVMと関連付けることができる。
[0038]いくつかの実施形態において、イントロスペクションエンジン40は、ゲストVM32の中でソフトウェアの実行中に発生する様々なイベントを検知することによって動作する。イントロスペクションエンジン40によって検知される例示的なイベントは、例えば、プロセッサ例外および/もしくは割込み、ゲストOS34の特定の機能を実行しようとする試み、プロセッサ特権(例えば、システムコール)の変更、特定の記憶場所にアクセスすること(特定の記憶場所から読み込むこと、特定の記憶場所に書き込むこと、ならびに/または特定の記憶場所から実行すること)を行おうとする試み等を含む。イントロスペクションエンジン40は、下記にさらに説明されるように、ゲストVM32の中で実行する様々なソフトウェア構成要素のメモリアドレスを判断するようにさらに構成されてよい。
[0039]いくつかの実施形態は、ゲストVM32の中で実行するユーティリティエージェント44をさらに備え、エージェント44は、イントロスペクションエンジン40と協力して、ゲストVM32の中で発生するイベントを検知し、分析する。エージェント44は、例えば、ゲストOS34のプロセッサ特権レベル(例えば、リング0のカーネルモード)で実行するドライバを備えることができ、ページ障害およびハードウェア割込みなどの、様々なプロセッサイベントに対するハンドラとして登録されてもよい。このような構成の1つの長所は、内部のエージェントがゲストOS34の機能すべてにアクセスできるので、情報の中には個々のVMの外部よりも、VMの内部からの方がさらに取得しやすくなるものがあることである。短所は、ゲストVM32の中で実行するエージェントが、個々のVMの中で実行する悪意のあるソフトウェアに対して潜在的に脆弱であることである。このリスクを緩和するために、いくつかの実施形態は、ゲストVM32の内部にほんの一時的にエージェント44を投入してもよく、エージェント44が実行を完了した後にエージェント44を消去してもよい。
[0040]ゲストVM32の中で発生するイベントを検知するために、イントロスペクションエンジン40は、仮想化の技術分野で知られる任意の方法を用いることができる。方法の重要なカテゴリは、特定の記憶場所にアクセスしようとする試みを特定のイベントの発生の指標として使用する。このようなメモリアクセスの試みを検知するために、いくつかの実施形態は、試みが個々の許可に違反するようにメモリアクセス許可をセットアップする。違反は次に、イントロスペクションエンジンおよび/またはユーティリティエージェント44によって傍受される。仮想マシンは典型的には、ゲスト物理メモリとして当技術分野でも知られる、仮想化された物理メモリで動作する。仮想化された物理メモリは、例えば、それぞれのVMに固有のアドレスの連続した空間として、実際の物理メモリ18の抽象的表現を含み、前記空間の一部は、物理メモリ18および/または物理的なストレージデバイス24の中のアドレスにマッピングされる。現在のハードウェア仮想化プラットフォームにおいて、このようなマッピングは典型的には、専用のデータ構造およびプロセッサ16によって制御されるメカニズムを介して実現され、第2のレベルのアドレス変換(SLAT:second level address translation)として知られる。普及しているSLATの実装形態は、Intel(登録商標)プラットフォーム上の拡張ページテーブル(EPT:extended page table)、およびAMD(登録商標)プラットフォーム上の高速仮想化指標付け(RVI:rapid virtualization indexing)/入れ子ページテーブル(NPT:nested page table)を含む。このようなシステムにおいて、仮想化された物理メモリは、当技術分野でページとして知られる単位に区分され、ページは、SLATを介して物理メモリに個別にマッピングされた、仮想化された物理メモリの最小単位を表し、すなわち、物理メモリと仮想化された物理メモリの間のマッピングはページの粒度によって行われる。すべてのページは、典型的には、例えば、4キロバイト、2メガバイト等の所定のサイズを有する。仮想化された物理メモリをページに区分することは、通常、ハイパーバイザ30によって構成される。いくつかの実施形態において、ハイパーバイザ30は、SLAT構造、したがって物理メモリと仮想化された物理メモリの間のマッピングも構成する。いくつかの実施形態において、SLATデータ構造への(例えば、ページテーブルへの)ポインタは、個々の仮想マシンのVMSOに格納される。物理メモリアドレスへの仮想化された物理メモリアドレスの実際のマッピング(変換)は、クライアントシステム12のトランスレーションルックアサイドバッファ(TLB:translation lookaside buffer)内の物理メモリアドレスを探索することを含むことができる。いくつかの実施形態において、アドレス変換は、ページテーブルおよび/またはページディレクトリのセットの中の連続的なアドレス探索のセットを含むページウォークを行うこと、ならびにページのオフセットを個々のページに関連したアドレスに追加することなどの計算を行うことを含む。
[0041]図4は、図3に示されるような実施形態におけるメモリアドレスのこのようなマッピングを示す。ハイパーバイザ30による公開に続いて、ゲストVM32は、仮想化された物理メモリ空間218を、ゲストVM32自体の物理メモリ空間とみなす。ゲストVM32の中で実行するソフトウェアオブジェクト(例えば、アプリケーション36a)は、ゲストOS34によって仮想メモリ空間318を割り当てられる。ソフトウェアオブジェクトが、空間318aの例示的なメモリページ50aの内容にアクセスしようと試みるとき、ページ50aのアドレスは、ゲストOS34によって構成され、制御されるページテーブルに従って、ゲストVM32の仮想化されたプロセッサによって、仮想化された物理メモリ空間218のページ50bのアドレスに変換される。ページ50bのアドレスは、ハイパーバイザ30によって構成されるSLATを使用して、物理的なプロセッサ16によって、物理メモリ18の中のページ50cのアドレスにさらにマッピングされる。
[0042]仮想アドレス空間218は一般に、当技術分野においてゲスト物理メモリとして知られ、このような1つのメモリ空間の中のアドレスは、ゲスト物理アドレス(GPA:guest physical address)と呼ばれる。アドレス空間318は通常、ゲスト仮想メモリと称され、ゲスト仮想アドレス(GVA:guest−virtual address)を収める。物理メモリ18の中のアドレスは通常、ホスト物理アドレス(HPA:host−physical address)と呼ばれる。図4の中の52などのアドレス変換/マッピングは、したがって、GVA−GPA変換と称される。対照的に54などのアドレス変換は一般に、GPA−HPA変換として知られる。
[0043]いくつかの実施形態において、ハイパーバイザ30は、物理メモリ18による表現を含むハイパーバイザ30自体の仮想メモリ空間418をセットアップし、変換メカニズム(例えば、ページテーブル)を用いて、空間418の中のアドレスを物理メモリ18の中のアドレスにマッピングする。図4において、このような例示的なマッピングは、仮想空間418の中のページ50fのアドレスをページ50cの物理アドレスに変換し、ページ50dのアドレスをページ50eの物理アドレスに変換する。このようなマッピングは、ハイパーバイザ30のプロセッサ特権レベルで実行する任意のソフトウェアオブジェクトが、クライアントシステム12上で動作する様々なVMの中で実行するソフトウェアオブジェクトに属すメモリページを管理できるようにする可能性がある。具体的には、メモリイントロスペクションエンジン40はこのようにして、ゲストVM32の中で実行する任意のプロセスによって使用される物理メモリページへのアクセスを列挙し、読み込み、書き込み、制御することができる。
[0044]いくつかの実施形態において、ゲストVM32の中で発生するイベントを検知することは、イントロスペクションエンジン40がハイパーバイザ30と協力して、SLATデータ構造の中のメモリアクセス許可を設定することを含む。このような機能は、プラットフォーム固有であってよいが、アクセス許可は典型的には、ページの粒度で設定する。例えば、仮想化をサポートするIntel(登録商標)プラットフォームにおいて、それぞれのメモリページのEPTエントリは、個々のページがそれぞれ、読み込まれてよいか、書き込まれてよいか、および実行されてよいかを示すアクセス許可ビットのセットを含む。特定のメモリページにアクセスしようとする試みが、個々のメモリページに対して設定されたアクセス許可に違反するとき、個々の試みは、例外、または仮想マシン終了イベント(Intel(登録商標)プラットフォームにおけるVMExit)などの、プロセッサイベントをトリガすることができる。プロセッサイベントに応答して、プロセッサ16は、個々のVMの外部でイベントハンドラルーチンを実行することに切り替えることができ、これは、イントロスペクションエンジン40が個々のアクセス違反の発生を検知することを可能にする。1つの代替実施形態において、メモリアクセス違反は、プロセッサ例外(例えば、仮想化例外、すなわちIntel(登録商標)プラットフォーム上の#VE)をトリガすることができる。このようなプロセッサイベントに応答して、プロセッサ16は、個々のVMの中でイベントハンドラルーチンを実行することに切り替えることができ、すなわち個々のVMを終了させない。図4に示されるようなユーティリティエージェント44を有する実施形態において、エージェント44は、仮想化例外ハンドラとして登録されてよく、それによりメモリアクセス違反を検知する。
[0045]いくつかの実施形態において、メモリページのSLATエントリは、個々のページがアクセスされたかどうか、および/または個々のページが書き込まれたかどうかを示すフィールド(例えばビット)をさらに含む。このようなビットは、典型的には、アクセスビットおよびダーティビット(accessed and dirty bit)と呼ばれる。いくつかの実施形態は、下記にさらに示すように、アクセスビットおよび/またはダーティビットを使用して、暗号化キーを収める可能性があるメモリページを識別する。
[0046]本発明のいくつかの実施形態において、イントロスペクションエンジン40は、ゲストVMに出入りする暗号化された通信をモニタリングするように構成される。通信セッションは典型的には当事者間の事前のネゴシエーションを含み、その後に、暗号化されたメッセージの実際の交換が続く。当技術分野において前者は通常、ハンドシェイクと呼ばれる一方、メッセージの内容は一般にペイロードとして知られる。ハンドシェイクは、中でも、暗号法(すなわち、暗号化アルゴリズム)および暗号化キーを導出するための材料を指定する交換のセットを含む。例示的な暗号法は、ChaCha20などの、先進的暗号化標準(AES:Advanced Encryption Standard)由来のブロック暗号法およびストリーム暗号法を含む。いくつかの実施形態において、ハンドシェイクは、固有のプロトコルに従って行われる実際のキー交換、および/またはいずれか一方もしくは両方の当事者のアイデンティティを照合するための追加のステップを含むことができる。暗号法に応じて、暗号化キーを導出するための材料は、乱数のセット、通信する当事者の公開鍵等を含むことができる。
[0047]セキュア通信プロトコルの具体例は、例えば、インターネット技術タスクフォース(IETF:Internet Engineering Task Force)のネットワーク作業部会のリクエストフォーコメンツ(RFC:Request for Comments)5246の中で説明される、トランスポート層セキュリティ(TLS:Transport Layer Security)プロトコルである。TLSプロトコルは現在、大多数のブラウザ、e−コマース、およびセキュア電子バンキングアプリケーションによって使用される。TLSセッションは、中でも、一意のセッション識別子、暗号法の仕様、および通信する当事者間で共有されるマスタシークレットを含む。マスタシークレットは通常、ハンドシェイク中に交換される材料を使用して、それぞれの当事者によって別々に計算される。TLSハンドシェイクプロトコルは、以下のステップ/ステージを含む。
a)通信のための暗号パラメータに同意するために、ハローメッセージを交換する。クライアントからサーバに送られるClient Helloメッセージは、サポートされた暗号法のリストを示し、中でも、クライアントが提供した乱数を含むことができる。サーバからクライアントに送られるServer Helloメッセージは、クライアントによって提案されたものから暗号法の選択肢を示し、サーバが提供した乱数を含むことができる。
b)当事者の認証を行う。サーバは、サーバのアイデンティティを確認する証明書を送ることができ、さらにクライアントからの証明書をリクエストすることができる。このステップは、クライアントからのClientCertificateメッセージ、およびサーバからのServerCertificateメッセージを含むことができる。
c)クライアントおよびサーバが、共有の秘密(例えば、プリマスタシークレット)に同意すること、または計算することを可能にするために、必要な暗号パラメータを交換する。暗号パラメータは、キーのセット、または選ばれた暗号法による他の情報を含むことができる。例えば、本フェーズ中に交換されるキーは、クライアントおよびサーバの公開暗号キー(Rivest−Shamir−Adleman、Diffie−Hellman等)であってよい。このステップは、クライアントによって送信されるClientKeyExchangeメッセージ、および/またはサーバによって送信されるServerKeyExchangeメッセージを含むことができる。Rivest−Shamir−Adleman(RSA)が、サーバ認証およびキー交換に対して使用されるとき、プリマスタシークレットはクライアントによって生成され、サーバの公開鍵に従って暗号化され、ClientKeyExchangeメッセージの一部としてサーバに送られる。サーバは次に、サーバの秘密鍵を使用して、プリマスタシークレットを解読する。Diffie−Hellmanが使用されるとき、それぞれのサイドは、取り決められたキーに従って、それぞれのサイド自体のプリマスタシークレットを計算する。
d)それぞれの送信当事者が今後は、同意された暗号パラメータを使用してセッションの出て行くメッセージを暗号化するということを示すChangeCipherSpecメッセージを交換する。
e)セッションハンドシェイクを正式に終えるために、Finishedメッセージ(ClientFinishedおよびServerFinished)を交換する。クライアントおよびサーバが、正しいセキュリティパラメータ(例えば、共有の秘密)をこれらのピアが受け取ったことおよび/または計算したこと、ならびに攻撃者によって改ざんされることなくハンドシェイクが発生したことを照合できるようにするために、ClientFinishedおよびServerFinishedメッセージは暗号化される。それぞれの受け取る当事者は、受け取ったFinishedメッセージを解読しようとしなければならず、解読に成功したことは、ハンドシェイクに成功したことを示す。
[0048]TLSプロトコルにおいて、それぞれの当事者は、例えば、プリマスタシークレットに従ってハンドシェイク中に交換された暗号パラメータ、ならびにクライアントが提供した乱数およびサーバが提供した乱数に従ってマスタシークレットを計算する。マスタシークレットから、それぞれのサイドは次に、セッションキーのセットを判断することができる。用語「セッションキー」は、現在のセッション中に通信を暗号化および/または解読するために使用される暗号パラメータ値を総称的に表すために本明細書で使用される。例示的なセッションキーは、中でも、プリマスタシークレット、マスタシークレット、クライアントおよびサーバサイドの書込みキー、初期化ベクトル/ノンス、ならびにメッセージ認証コード(MAC:message authentication code)を含む。対称暗号を使用する実施形態において、暗号化キーと解読キーは同一なので、暗号化キーの知識は解読には十分である。非対称暗号において、暗号化キーおよび解読キーは異なる。したがって、どのようにセッションキーが使用されるかは、取り決められた暗号法に依存する。
[0049]本発明のいくつかの実施形態は、現在のセッション中に暗号化のために使用されるセッションキーは、ハンドシェイクのFinishedメッセージを送り出す前にそれぞれのサイドで計算されなければならないという観察に依存する(そうでなければ、個々のメッセージが暗号化されることはない)。さらに、セッションキーを導出するための材料は、例えば、ServerHello、ClientKeyExchange、およびServerKeyExchangeメッセージの一部としてといった、ハンドシェイクの一部としてそれぞれのサイドによって受け取られる。したがって、セッションキーは、ハンドシェイク中のある時にクライアントシステムのメモリ内に現れる可能性がある。本発明のいくつかの実施形態は、ハンドシェイクのタイミングを使用して、セッションキーのおよその記憶場所を判断する。
[0050]図5は、本発明のいくつかの実施形態による、イントロスペクションエンジン40によって行われるステップの例示的なシーケンスを示す。一連のステップ502〜504において、エンジン40は、ネットワークフィルタ42と協力し、クライアントシステム12からリモートの当事者(例えば、図1のコンテンツサーバ13)への間を送信されるハンドシェイクメッセージを検知することができる。1つの例において、接続リクエストは、例えばブラウザといったゲストVM32の中で実行するアプリケーションから来ることがあり、TLSセッション、SSHセッション、VPNセッション等などの暗号化された通信セッションを開始する意図を示すことがある。したがって、接続リクエストは、サーバ13へのハンドシェイクメッセージ(例えば、ClientHello)を含むことがある。別の例において、検知されたハンドシェイクメッセージは、クライアントシステム12から受け取られたClientHelloに応答して送信されたサーバ13からのメッセージ(例えば、ServerHello)を含む。
[0051]ハンドシェイクメッセージが検知されると、ステップ506において、イントロスペクションエンジン40は、セッションIDなどのハンドシェイクパラメータのセット、およびセッションに対して使用されることになる暗号法の指標を抽出することができる。TLS接続をモニタリングする実施形態において、ステップ506は、サーバが提供した乱数および/またはクライアントが提供した乱数などの、暗号パラメータをさらに抽出することができる。イントロスペクションエンジン40は次に、ネットワークフィルタ42に命令して、ハンドシェイクメッセージをその意図された受け手のVM(例えば、図3のゲストVM32)に転送することができる。
[0052]ステップ508において、イントロスペクションエンジン40は、ゲストVM32の最適化されたメモリスナップショットを取得することができる。メモリスナップショットは、個々のVMによって使用されるメモリページのセットの内容のコピーを含む。いくつかの実施形態において、最適化されたスナップショットは、セッションキーを収める可能性が最も高いメモリページのセットの内容、または現在の通信セッションのセッションキーを導出するために使用される少なくとも暗号パラメータ値を含む。最適化されたスナップショットを取得するための例示的な方法は、下記にさらに説明される。
[0053]ステップ510は、ネットワークフィルタ42から個々のペイロードのコピーを取得することによって、現在のセッションの暗号化されたペイロードを得ることができる。いくつかの実施形態において、ネットワークフィルタ42は、例えば、セッションIDおよび/または仮想マシンによって索引をつけられた、複数のデータ待ち行列を維持するように構成される。したがって、ネットワークフィルタ42は、個々のペイロードが、他の通信の中に散りばめられた複数のパケットに分割されるときでさえ、セッションの暗号化されたペイロードを明確におよび一貫して復元する。次にステップ512において、イントロスペクションエンジン40は、得られた最適化されたメモリスナップショット、ハンドシェイクパラメータ、および暗号化されたペイロードをセキュリティサーバ15に分析のために送信することができる。
[0054]図6は、ゲストVM32の最適化されたメモリスナップショットを取得するために、イントロスペクションエンジン40によって行われるステップの例示的なシーケンスを示す。セッションキーのおよその記憶場所を導出するために、本発明のいくつかの実施形態は、個々のセッションキーが生成された時間とおよそ一致する時間間隔の中で内容が変化したメモリページのセットを識別する。
[0055]内容が最近変化したメモリページ、すなわち最近書き込まれたページは、当技術分野で知られた任意の方法を使用して識別されることが可能である。1つの例において、イントロスペクションエンジン40は、ゲストVM32と関連付けられたSLATデータ構造の中で、ゲストVM32によって使用されるメモリページのセットを書込み不能としてマークすることができる。このようなページの内容を修正しようとするその後の任意の試みは次に、メモリアクセス違反とみなされるので、イントロスペクションエンジン40および/またはユーティリティエージェント44によってその後傍受されるプロセッサイベント(例えば、VM Exitすなわち仮想化例外)をトリガする。イベントを傍受することに応答して、エンジン40は個々のページを書込み可能としてマークし、個々のVMを再開して、個々の書込みが続行できるようにすることができる。このような手法において、エンジン40は、最終的に「ダーティ」メモリページのリストを作成することができ、この内容は、所望の最適化されたメモリスナップショットとみなされる。
[0056]上記のシナリオは多少非効率的であり、計算的にコストがかかる。いくつかの最適化が、選ばれたハードウェアプラットフォーム上で可能である。例えば、アクセスビットおよび/またはダーティビットをサポートするプラットフォーム上で、いくつかの実施形態は、ゲストVM32によって使用されるメモリページのページテーブルエントリ(Intel(登録商標)プラットフォーム上のEPTエントリ)のダーティビットをリセットし、個々のページが書き込まれたかどうかを判断するために、その後のある時点でダーティビットの値をチェックすることができる。このメカニズムは、さらに最適化されることが可能である。例えば、Intel(登録商標)プロセッサの一定の世代は、ページ変更ロギング(PML:page modification logging)と呼ばれる機能を有し、この機能は、内容が変化したページのリストを、メモリイントロスペクションエンジン40にとってアクセス可能な記憶場所に自動的にエクスポートする。
[0057]別の考えられる最適化戦略は、いくつかのハイパーバイザ(例えば、Xen(登録商標))が使用するライブマイグレーション機能を使用して、仮想マシンを効率的に移行し、および/または仮想マシンのクローンを作る。個々の機能は、書き込まれたページを自動的に追跡し、スケジュールに従ってこのようなページのリストをエクスポートする、ログダーティ基本要素(log−dirty primitive)のセットを中心に構築される。
[0058]図6に示されたステップのシーケンスは、第1の種類のセッションイベントと第2の種類のセッションイベントとの間の時間間隔の中で修正されたページを識別する。本明細書において、セッションイベントは、例えば上述のように、TLSプロトコルに関連して、通信プロトコルの様々なステージを表す。例示的なセッションイベントは、例えば、特定の通信セッションの一部を形成するメッセージ(例えば、クライアントシステム12とサーバ13の間で送信されるハンドシェイクメッセージ、個々のセッションの暗号化されたペイロードの一部を収めるメッセージ等)を送ることおよび/または受け取ることを含む。第1の種類のイベント(ステップ522〜524)を検知すると、ページ変更のモニタリングをオンに切り替える(ステップ526)。いくつかの実施形態において、ステップ526は、ゲストVM32の動作を中断すること、ゲストVM32によって使用されるメモリページに対応するSLATエントリのダーティビットをリセットすること、およびゲストVM32を再開することを含む。いくつかの実施形態において、書込みがないかモニタリングされることになるメモリページのセットは、例えば、現在の通信セッションを行うプロセス(例えば、ブラウザ)によって、または暗号化/解読を処理するプロセス(例えば、Windows(登録商標)におけるLSASS.EXE)によって使用されるページのセットに絞り込まれてよい。メモリイントロスペクションエンジン40は、スレッドおよびプロセスを管理するためにゲストOS34によって使用されるデータ構造を見て回ることによって、個々のプロセス/アプリケーションによって使用されるページを識別することができる。このようなメモリページを識別するタスクは、ゲストVM32の中で実行するユーティリティエージェント44と協力することによってさらに簡単になることがあり、エージェント44は典型的には、エンジン40よりさらに多くの情報にアクセスすることができる。
[0059]例えば、個々のセッションの別のハンドシェイクメッセージの受信といった、第2の種類のセッションイベントの発生を検知すると(ステップ528〜530)、書込みがないかモニタリングすることはオフに切り替えられる(ステップ534)。ステップ532は、メモリスナップショットを取る間にメモリへの変更が発生するのを防ぐために、ゲストVM32の実行を中断することができる。ステップ536〜538のさらなるシーケンスにおいて、エンジン40は、第1のセッションイベントと第2のセッションイベントの間に書き込まれたページを識別し、最適化されたメモリスナップショットなどのページの内容をコピーする。さらなるステップ540において、イントロスペクションエンジン40は、ゲストVM32を再開することができる。
[0060]1つの代替実施形態において、ゲストVM32の実行は、最適化されたメモリスナップショットを採取する間、中断されない。このような中断はシステムを減速させ、ユーザの体感に影響を与える可能性がある。さらに、ゲストVM32を中断することは、個々のVMがモニタリングされているということを表に出す可能性があるので、セキュリティのためには望ましくないことがある。セッションキーは典型的には、一度だけ書き込まれ、メモリ内をあちこち移動することはないので、ゲストVM32によって使用されるすべてのページの一貫性は要求されない。ダーティページがコピーされる前に現在のセッションが終わらない(したがってキーが消えない)ことが単純に保証されなければならない。ゲストVM32を停止する代わりに、いくつかの実施形態は、ネットワークフィルタ42を使用して、ゲストVM32に出入りする通信のフローを操作する。例えば、フィルタ42は、メモリスナップショットを採取する間、サーバ13からゲストVM32へのデータパケットの配信を遅延させることができる。ゲストVM32の中で実行するソフトウェアには、遅延はむしろ通常のネットワークレイテンシのように見えることがある。遅延機能を実現するために、いくつかの実施形態は、エンジン40とネットワークフィルタ42の間でプロセス間の通知メカニズムを使用して通信する。例えば、エンジン40は、最適化されたメモリスナップショットの採取に成功したことに応答して、フィルタ42に通知することができる。次にフィルタ42は、一定のネットワークパケット(例えば、ServerFinishedメッセージのServerHello)を傍受したことに応答して、エンジン40に通知することができる。
[0061]セッションキーが典型的にセッションのハンドシェイク部分の間に導出されたという観察に続いて、本発明の様々な実施形態は、様々なハンドシェイクイベントを第1および第2の種類のセッションイベントとして使用する。例えば、いくつかの実施形態において、ページモニタリングをオンに切り替える第1の種類のイベントは、個々のセッションに対するセッションキーを導出するための材料を含むネットワークパケットのネットワークフィルタ42による傍受を含む。例示的な材料は、中でも、乱数、キー、および共有の秘密を含む。第1の種類のこのような1つの例示的なセッションイベントは、サーバ13から受け取られるServerHelloメッセージである。他の実施形態が使用することもある。第1の種類のイベントに対する他の考えられる選択肢は、ゲストVM32からのClientHelloメッセージ、ClientKeyExchangeメッセージ、およびServerKeyExchangeメッセージを含む。ページモニタリングをオフに切り替える第2の種類のセッションイベントについて、いくつかの実施形態は、ゲストVM32へ送信され、またはゲストVM32から送信される暗号化されたメッセージのネットワークフィルタ42による傍受を使用する。第2の種類のイベントの1つの例は、ClientFinishedメッセージまたはServerFinishedメッセージの傍受である。第2の種類のイベントに対する別の考えられる選択肢は、現在のセッションのセッションキーを使用して暗号化されたペイロードの一部を含むパケットの傍受である。
[0062]図5〜図6に関連する上述の例示的な方法は、単一の通信セッションにあてはまる。実際には、複数のセッションは、例えば、(タブを使ったブラウジングでのように)ブラウザの複数のインスタンスによって、または同時に動作する別個のアプリケーションによって、単一のVMの中で並行に行われてよい。いくつかの実施形態は、それぞれのセッションに対して別々にダーティページを追跡するように構成される。明瞭さのために、下記の説明は、TLSセッションのメモリスナップショットを採取する特定のタスクに着目するが、それぞれのスナップショットは、それぞれのセッションのServerHelloメッセージと、個々のセッションのClientFinishedメッセージとの間で修正されたメモリページを含む。
[0063]セッション固有の最適化されたスナップショットを入手することは、セッションイベントの不定のシーケンスを解決するという追加の課題をもたらす。いくつかの実施形態は、2つの連続的なイベントの間に書き込まれたすべてのページを識別するようにページモニタリングメカニズムを構成する。しかし、このようなイベントは、別個のセッションに属する可能性があり、(図6に関連して上記に使用された用語を借りれば、)第1の種類または第2の種類のイベントの可能性もある。この曖昧さを説明するために、イントロスペクションエンジン40のいくつかの実施形態は、現在アクティブセッションの包括的なリストを維持し、リストのそれぞれのエントリは、セッションID、発信元インターネットプロトコル(IP:internet protocol)アドレス、発信元ポート番号、宛先IPアドレス、宛先ポート番号、および個々のセッションのServerHelloメッセージのタイムスタンプなどの情報を含む。エンジン40は、それぞれのモニタリングされるメモリページに対する少なくとも1つのタイムスタンプを格納する、タイムスタンプの包括的な配列をさらに維持することができる。配列のそれぞれのタイムスタンプは、個々のページが書き込まれた瞬間を指示することが可能であってよい。この理由で、タイムスタンプの配列は本明細書において、ページ変更タイムスタンプ配列と見なされる。
[0064]図7は、複数の並行したTLSセッションを追跡するように構成される実施形態において、メモリイントロスペクションエンジンによって行われるステップの例示的なシーケンスを示す。ステップ552は、ページ変更タイムスタンプ配列を初期化する。ステップ552は、ページ変更検知メカニズム(例えば、PML、ダーティビットをリセットすること等)を構成することをさらに含むことができる。一連のステップ554〜556は、HelloまたはFinishedの種類のイベントがないかリッスンする。イベントが検知されると、ステップ558において、イントロスペクションエンジン40は、ページ変更検知メカニズムを起動して、ダーティページ、すなわち、Helloメッセージであるか、Finishedメッセージであるかに関係なく、以前にイベントが検知されてから内容が変化したメモリページを今識別することができる。ステップ560は次に、ダーティページに対応するタイムスタンプが、現在のタイムスタンプに、または今検知されたイベントの発生を指示することが可能なタイムスタンプにアップデートされるように、ページ変更タイムスタンプ配列をアップデートすることができる。個々のイベントが第1の種類のイベント(例えば、ServerHello)であるとき、ステップ564において、エンジン40は、中でも、セッションID、発信元および宛先のIPアドレスおよびポートを埋める新しいセッションデータ構造を初期化することができる。さらなるステップ566は、本明細書において個々のセッションのHelloタイムスタンプと見なされる現在のServerHelloイベントを指示することが可能なタイムスタンプを記録する。
[0065]今検知されたイベントが第2の種類のイベント(例えば、ClientFinished)であるとき、ステップ570において、イントロスペクションエンジン40は、ページ変更タイムスタンプ配列を見て回ることができる。それぞれのページに対して、いくつかの実施形態は、個々のページのページ変更タイムスタンプを、個々のセッションの(すなわち、今検知されたイベントが属するセッションの)Helloタイムスタンプと比較することができる。変更タイムスタンプが、個々のセッションのHelloイベントの後に個々のページが書き込まれたことを示すとき、エンジン40は、個々のセッションの最適化されたメモリスナップショットに個々のページを含めることができる。
[0066]図8は、本発明のいくつかの実施形態による解読エンジン60を含む、セキュリティサーバ15上で実行する例示的なソフトウェアを示す。それぞれのモニタリングされる通信セッションに対して、エンジン60は、ハンドシェイクパラメータ72のセット、最適化されたメモリスナップショット70、および/または暗号化されたペイロード74などの、個々のクライアントシステム(例えば、図1のクライアントシステム12a〜12d)からセッションデータを受け取ることができる。このようなデータは、それぞれのアイテムを特定のクライアントシステム、VM、および/または通信セッションと明確に関連付ける指標をさらに含むことができる。ハンドシェイクパラメータ72は、ペイロード74を暗号化するために使用される暗号法の指標を含むことができる。最適化されたメモリスナップショット70は、上述のような、クライアントシステムのメモリページの内容のコピーを含む。ペイロード74は、暗号化された通信(例えば、ネットワークパケット)の一部を含む。
[0067]図9は、本発明のいくつかの実施形態による、解読エンジン60によって行われるステップの例示的なシーケンスを示す。クライアントシステム12からセッションデータを受け取ること(ステップ582)に応答して、ステップ584において、エンジン60は、個々のセッションの中で使用される暗号法の指標をセッションデータから抽出することができる。解読エンジン60は次に、暗号法に従って解読手続き/アルゴリズムを選択することができる。次に、一連のステップ586〜588〜590は、例えば、ペイロードの解読が成功裏に実現されるまで、または解読に割り振られた時間が期限切れになるまでといった、完了条件が満たされるまでループの中で繰り返される。
[0068]ペイロードを解読する試みは、暗号の技術分野で知られた任意の方法に従って進めることができる。最適化されたメモリスナップショットを採取するための手続きは、セッションキー、または個々のセッションに対する暗号化キーおよび解読キーを導出するために使用される少なくとも暗号パラメータ値が、個々のメモリスナップショットの内部にある可能性が高くなるように作られた。セッションキーのバイトサイズは演繹的であると考えられてよく、またクライアントシステム12から受け取られた暗号化パラメータから導出されてもよい。しかし、スナップショット内のセッションキーの正確な場所が知られることはない。したがって、いくつかの実施形態は、試行錯誤してキー素材をサーチする可能性がある。図9に示されるこのような1つの例において、ステップ586は、最適化されたメモリスナップショットから候補の解読キーを導出することができる。対称暗号(例えば、TLSプロトコル)を使用する実施形態において、暗号化キーと解読キーは同一であり、したがって候補の解読キーは、例えばスナップショットのバイトのシーケンスを含むことができ、シーケンスは要求されるバイトサイズを有する。ステップ588において、エンジン60は、候補キーを使用して少なくとも個々のセッションのペイロードの一部の解読を試みることができる。成功したかどうかは、当技術分野で知られた様々な方法を使用して評価されてよい。例えば、いくつかの実施形態は、解読されたメッセージの情報エントロピーを計算する。このような方法は、偽の正または偽の負を生み出すことで知られているが、低エントロピーは典型的には解読が成功したことを示す。
[0069]解読に対する代替アプローチは、既知平文攻撃として当技術分野で知られるものを使用する。このような1つの実施形態は、暗号化されたバージョンの既知のメッセージ、例えば、個々のセッション中に交換される(暗号化された)ClientFinishedメッセージおよび/またはServerFinishedメッセージの内容に、解読エンジン60がアクセスできるということを活用する。このようなメッセージのフォーマットおよびプレーンテキストは演繹的に知られており、TLSプロトコルに記載されている。
[0070]本発明のいくつかの実施形態は、クライアントシステムとリモートの当事者の間の通信のいくつかまたはすべてを解読することを可能にする。このような通信の例は、セキュアソケットレイヤ(SSL:Secure Socket Layer)/トランスポートレイヤセキュリティ(TLS:Transport Layer Security)接続、セキュアシェル(SSH:Secure Shell)、仮想プライベートネットワーク(VPN:Virtual Private Network)接続、およびオニオンルーティング/匿名ネットワーク接続(例えば、TORソフトウェア)を含む、対称または非対称のキーアルゴリズムを使用して暗号化された任意の通信を含む。開示の方法の例示的な用途は、中でも、悪意のあるソフトウェアの検知および分析、侵入検知、ならびに監視を含む。
[0071]例示的な用途において、少なくとも解読システムの一部をホストするコンピュータシステムは、ハニーポットシステムの一部を形成する。ハニーポットは典型的には、悪意のあるソフトウェアをインストールできるようにし、および/または侵入者が、個々のコンピュータシステムのいくつかの態様を制御できるように構成される。悪意のあるソフトウェアおよび侵入者は次に、暗号化されたチャネルを使用して、コマンド&コントロール(C&C)サーバなどの外部のエンティティと通信することができる。このような通信の解読を可能にすることによって、いくつかの実施形態は、マルウェア、侵入、および/またはハッキング方法に関する研究を容易にすることができる。
[0072]いくつかの実施形態の別の例示的なマルウェア対策の使用は、悪意のある内容がクライアントシステムに入り込む前に、悪意のある内容を検知することを含む。いくつかの先進的なマルウェアの攻撃シナリオにおいて、悪意のあるソフトウェアエージェントは、例えば、電子メール(フィッシング)またはオンライン広告を介して、他の良性のサーバとの暗号化された通信を介してクライアントに到達する。暗号化のために典型的には、エージェントは、マルウェアを示唆する何らかのアクションを行うときに、ホスト上で自身を解凍し、インストールするまで、またはさらにその後まで検知されることはない。本発明のいくつかの実施形態は、このようなエージェントの早期の検知および無能力化を可能にすることができる。
[0073]別の例示的な用途において、クラウドサービスプロバイダは、いくつかの実施形態を使用して、準リアルタイムに暗号化されたトラフィックを検査し、プロバイダのサーバに、またはプロバイダのサーバから広がる悪意のあるデータをすみやかに検知することができる。このような検知は、例えば、分散型サービス拒否(DDOS:distributed denial of service)攻撃といった、悪質な攻撃の出発点として個々のサーバが振る舞うのを防ぐことができる。
[0074]暗号化された通信の解読は、難しい仕事として有名である。暗号化を解く従来のアプローチの中には、解読を完全に避けようとするものもある。このような方法は、例えば、暗号化ライブラリを修正して追加の情報を提供すること、または個々の通信のプレーンテキストに、もしくは実際の暗号化キーに、もしくはキーに役立つ何らかの他の情報に、ユーザが目立たないようにアクセスすることを可能にする「バックドア」を導入することを含む。このようなアプローチは、長期的に見ればインターネットセキュリティを弱めることがあるので、危険であるとみなされる。これらは、典型的に移植不能であること、すなわち一定のハードウェアプラットフォームおよび/またはオペレーティングシステムでしか効果がないので不便でもある。もう1つ不便なのは、暗号文のライブラリへの変更が、個々のクライアント上で実行するソフトウェアに見えるので、検知され、無力化される可能性があるということである。
[0075]現在の暗号法は、何らかのバージョンの総当たり攻撃(brute force attack)を使用してのみ解かれることが可能であり、これは典型的には、かなりの計算的コストを伴う。このような1つの攻撃は、最終的にうまくいくまで複数の候補キーを試すことを含む。従来の解読システム/方法の中には、クライアントシステムのメモリ内でキー素材をサーチするものもある。しかし、キー素材の実際の場所を知らないことは、サーチに要する多大な計算的経費のために、このような方法を非実用的にすることがある。さらに、多量のメモリダンプを得るために必要とされる間に個々のマシンを休止することは、ユーザの体感に悪い影響を与える可能性がある。従来のアプローチの中には、実行のある瞬間にメモリダンプを取得するために「タップポイント」を設定することによって、キー素材のサーチを最適化しようと試みるものもある。しかし、タップポイントは事前に定義されるので、根本的なシステムおよび/または通信ソフトウェアがアップデートされると壊れることがある。
[0076]本発明のいくつかの実施形態は、2つのキー観察に依存する。第1に、潜在的に解読の恩恵をこうむる非常に多くのクライアントシステムは、ハードウェア仮想化構成(仮想マシン)の中で実行する。例には、仮想デスクトップ基盤のサーバファームおよびクラウドプロバイダを含む。このような構成を利用するために、本発明のいくつかの実施形態は、個々のVMを公開するハイパーバイザのプロセッサ特権レベルで、暗号化された通信を実行する仮想マシンの外部にイントロスペクションエンジンを設置する。イントロスペクションエンジンは仮想化の技術の技法を使用して、おそらく個々のVMの中で実行するソフトウェアからの知識または干渉なしに、個々のVMによって使用されるメモリの内容にアクセスし、検査することができる。したがって単一のイントロスペクションエンジンは、個々のクライアントシステム上で並行に実行する複数のVMによって行われる通信を目立たないようにモニタリングすることができる。
[0077]第2の観察は、暗号化キー、または少なくとも、個々のキーを導出するために使用される暗号パラメータが、例えばハンドシェイク中といった、セッションの特定のフェーズ中に複数の通信相手によって交換されるということである。いくつかの実施形態は、この観察を使用してセッションキーのおよその場所を導出するので、従来の方法における数百メガバイトから少しのメモリページ(例えば、数十キロバイトから数メガバイト)に、メモリサーチエリアを縮小することを可能にする。これは解読の計算労力をかなり減らし、総当たり攻撃を実現可能にする。
[0078]いくつかの実施形態は、ページテーブルのエントリの中にアクセスフラグおよび/もしくはダーティフラグを設定する能力、またはいくつかのIntel(登録商標)プロセッサのページ変更ロギング(PML)の機能などの、現在のプロセッサのハードウェア最適化を使用して、セッションキーの交換および/または生成を含む時間間隔の中で内容が変化するメモリページのセットを識別する。いくつかの実施形態は次に、個々のメモリページの内容の中でキー素材をサーチする。
[0079]クライアントシステム/仮想マシンの特定のハードウェアまたはソフトウェアの機能に依存するのではなく、通信プロトコルの機能によってセッションキーを配置することによって、いくつかの実施形態は、オペレーティングシステムおよび通信アプリケーション(例えば、ブラウザ、メッセージングアプリ、VPNソフトウェア等)に関係なく、様々なデバイス(パーソナルコンピュータ、携帯電話、家庭用設備等)上で、および複数のヘテロジニアスな仮想マシンを実行するクライアントシステムにおいて、通信の解読を可能にする。
[0080]モニタリングされるVMの中で実行するソフトウェアによる検知を回避するために、いくつかの実施形態は、個々のVMの最適化されたメモリスナップショットを採取することによって時々引き起こされる遅延を、ネットワークレイテンシとして偽装する。1つの例において、イントロスペクションエンジンはネットワークフィルタと協力して、メモリスナップショットを得る間、一定のネットワークパケットをモニタリングされるVMに配信することを遅延させる。VMの内部で実行するソフトウェアにとって、このような遅延は、ネットワーク上の送信の問題によって引き起こされているように見えることがある。また、ユーザの体感に影響を与えることを回避するために、いくつかの実施形態は、解読による計算的負担を別々のマシン(セキュリティサーバ)に移して負担を軽減する。したがって実際の解読は、オフラインで行われてもよい。
[0081]上記の実施形態は、本発明の範囲を逸脱することなく、多くの方式で変えられてよいということが当業者には明らかであろう。したがって、本発明の範囲は、以下の特許請求の範囲およびこれらの法的均等物によって判断されるべきである。

Claims (24)

  1. ハードウェアプロセッサおよびメモリを備えるクライアントシステムであって、前記ハードウェアプロセッサは、仮想マシンおよびイントロスペクションエンジンを実行するように構成され、
    前記仮想マシンは、リモートの当事者との通信セッションを行うように構成され、前記通信セッションは、暗号化されたペイロードが後に続くハンドシェイクメッセージを含み、前記ハンドシェイクメッセージは、暗号化キーを導出するために前記クライアントシステムによって使用される暗号化パラメータを含み、前記暗号化されたペイロードは、前記暗号化キーで暗号化され、
    前記イントロスペクションエンジンは、前記仮想マシンの外部で実行され、
    前記通信セッションの第1のセッションイベントの発生と、前記通信セッションの第2のセッションイベントの発生との間にターゲットメモリページの内容が変化したかどうかに従って、前記メモリ内で前記ターゲットメモリページを識別することと、
    それに応じて、前記内容に従って、前記暗号化されたペイロードを解読するように構成された解読エンジンに前記ターゲットメモリページの前記内容を送信することと
    を行うように構成される、
    クライアントシステム。
  2. 請求項1に記載のクライアントシステムであって、前記第1のセッションイベントは、前記ハンドシェイクメッセージを前記クライアントシステムから前記リモートの当事者に送ること、または、前記ハンドシェイクメッセージを前記クライアントシステムで受け取ることを含む、クライアントシステム。
  3. 請求項2に記載のクライアントシステムであって、前記通信セッションは、トランスポートレイヤセキュリティ(TLS)プロトコルに準拠し、前記ハンドシェイクメッセージは、ClientHelloメッセージまたはServerHelloメッセージを含む、クライアントシステム。
  4. 請求項1に記載のクライアントシステムであって、前記第2のセッションイベントは、暗号化されたデータパケットを前記クライアントシステムから前記リモートの当事者に送ること、または、前記暗号化されたデータパケットを前記クライアントシステムで受け取ることを含み、前記データパケットは、前記暗号化キーで暗号化される、クライアントシステム。
  5. 請求項4に記載のクライアントシステムであって、前記通信セッションは、トランスポートレイヤセキュリティプロトコルに準拠し、前記データパケットは、ClientFinishedメッセージの一部またはServerFinishedメッセージの一部を含む、クライアントシステム。
  6. 請求項4に記載のクライアントシステムであって、前記データパケットは、前記暗号化されたペイロードの一部を含む、クライアントシステム。
  7. 請求項1に記載のクライアントシステムであって、前記ターゲットメモリページを識別することは、
    前記仮想マシンによって使用されるメモリページのプールから候補のメモリページを選択することと、
    前記第2のセッションイベントの前記発生を検知することに応答して、前記候補のメモリページのページテーブルエントリに従って、前記候補のメモリページが前記第2のセッションイベントの前記発生より前に書き込まれたかどうかを判断することと、
    前記候補のメモリページが書き込まれたかどうかを判断することに応答して、前記候補のメモリページが書き込まれた場合に、前記候補のメモリページを前記ターゲットメモリページとして選択することと
    を含む、クライアントシステム。
  8. 請求項1に記載のクライアントシステムであって、前記少なくとも1つのハードウェアプロセッサは、前記仮想マシンの外部でネットワークフィルタをさらに実行するように構成され、前記ネットワークフィルタは、前記クライアントシステムのネットワークアダプタを制御し、
    前記ネットワークフィルタは、前記ハンドシェイクメッセージを傍受し、それに応じて、前記イントロスペクションエンジンに通知を送信するように構成され、
    前記イントロスペクションエンジンは、前記通知に従って前記第1のセッションイベントの前記発生を推定するようにさらに構成される、
    クライアントシステム。
  9. 請求項1に記載のクライアントシステムであって、前記少なくとも1つのハードウェアプロセッサは、前記仮想マシンの外部でネットワークフィルタをさらに実行するように構成され、前記ネットワークフィルタは、前記クライアントシステムのネットワークアダプタを制御し、
    前記イントロスペクションエンジンは、前記第2のセッションイベントの前記発生に応答して、前記ターゲットメモリページの前記内容をコピーし、それに応じて、前記ネットワークフィルタに通知を送信するようにさらに構成され、
    前記ネットワークフィルタは、前記仮想マシンを宛先とするデータパケットを傍受し、それに応じて、前記通知を受け取るまで前記仮想マシンへの前記データパケットの配信を遅延させるように構成される、
    クライアントシステム。
  10. 請求項1に記載のクライアントシステムであって、前記イントロスペクションエンジンは、第3のイベントの発生に応答して、前記第1のセッションイベントの前記発生と、前記第3のイベントの前記発生との間に前記ターゲットメモリページの前記内容が変化したかどうかにさらに従って、前記ターゲットメモリページを識別するようにさらに構成され、前記第3のイベントの前記発生は、前記通信セッションと並行した別の通信セッションによって引き起こされる、クライアントシステム。
  11. 複数のクライアントシステムのために解読手続きを行うように構成された解読エンジンを実行するように構成されたハードウェアプロセッサを備えるサーバコンピュータシステムであって、解読手続きは、
    前記複数のクライアントシステムのうちの1つのクライアントシステムのターゲットメモリページの内容を受け取ることと、
    前記クライアントシステム上で実行される仮想マシンとリモートの当事者との間で行われる通信セッションの暗号化されたペイロードを受け取ることと、
    それに応じて、前記ターゲットメモリページの前記内容に従って、前記暗号化されたペイロードを解読することと
    を含み、
    前記通信セッションは、前記暗号化されたペイロードが後に続くハンドシェイクメッセージを含み、前記ハンドシェイクメッセージは、暗号化キーを導出するために前記クライアントシステムによって使用される暗号化パラメータを含み、前記暗号化されたペイロードは、前記暗号化キーで暗号化され、
    前記クライアントシステムは、前記仮想マシンの外部でイントロスペクションエンジンを実行するように構成され、前記イントロスペクションエンジンは、前記通信セッションの第1のセッションイベントの発生と、前記通信セッションの第2のセッションイベントの発生との間に前記ターゲットメモリページの前記内容が変化したかどうかに従って、前記クライアントシステムのメモリ内の前記ターゲットメモリページを識別するように構成される、
    サーバコンピュータシステム。
  12. 請求項11に記載のサーバコンピュータシステムであって、前記暗号化されたペイロードを解読することは、
    候補の解読キーを前記ターゲットメモリページの前記内容から導出することと、
    前記候補の解読キーを使用して前記暗号化されたペイロードの解読を試みることと
    を含む、サーバコンピュータシステム。
  13. 請求項11に記載のサーバコンピュータシステムであって、前記第1のセッションイベントは、前記ハンドシェイクメッセージを前記クライアントシステムから前記リモートの当事者に送ること、または、前記ハンドシェイクメッセージを前記クライアントシステムで受け取ることを含む、サーバコンピュータシステム。
  14. 請求項13に記載のサーバコンピュータシステムであって、前記通信セッションは、トランスポートレイヤセキュリティプロトコルに準拠し、前記ハンドシェイクメッセージは、ClientHelloメッセージまたはServerHelloメッセージを含む、サーバコンピュータシステム。
  15. 請求項13に記載のサーバコンピュータシステムであって、前記第2のセッションイベントは、暗号化されたデータパケットを前記クライアントシステムから前記リモートの当事者に送ること、または、前記暗号化されたデータパケットを前記クライアントシステムで受け取ることを含み、前記データパケットは、前記暗号化キーで暗号化される、サーバコンピュータシステム。
  16. 請求項15に記載のサーバコンピュータシステムであって、前記通信セッションは、トランスポートレイヤセキュリティプロトコルに準拠し、前記データパケットは、ClientFinishedメッセージの一部またはServerFinishedメッセージの一部を含む、サーバコンピュータシステム。
  17. 請求項15に記載のサーバコンピュータシステムであって、前記データパケットは、前記暗号化されたペイロードの一部を含む、サーバコンピュータシステム。
  18. 請求項11に記載のサーバコンピュータシステムであって、前記ターゲットメモリページを識別することは、
    前記仮想マシンによって使用されるメモリページのプールから候補のメモリページを選択することと、
    前記第2のセッションイベントの前記発生を検知することに応答して、前記候補のメモリページのページテーブルエントリに従って、前記候補のメモリページが前記第2のセッションイベントの前記発生より前に書き込まれたかどうかを判断することと、
    前記候補のメモリページが書き込まれたかどうかを判断することに応答して、前記候補のメモリページが書き込まれた場合に、前記候補のメモリページを前記ターゲットメモリページとして選択することと
    を含む、サーバコンピュータシステム。
  19. 請求項11に記載のサーバコンピュータシステムであって、前記クライアントシステムは、前記仮想マシンの外部でネットワークフィルタを実行するようにさらに構成され、前記ネットワークフィルタは、前記クライアントシステムのネットワークアダプタを制御し、
    前記ネットワークフィルタは、前記ハンドシェイクメッセージを傍受し、それに応じて、前記イントロスペクションエンジンに通知を送信するように構成され、
    前記イントロスペクションエンジンは、前記通知に従って前記第1のセッションイベントの前記発生を推定するようにさらに構成される、
    サーバコンピュータシステム。
  20. 請求項11に記載のサーバコンピュータシステムであって、前記クライアントシステムは、前記仮想マシンの外部でネットワークフィルタを実行するようにさらに構成され、前記ネットワークフィルタは、前記クライアントシステムのネットワークアダプタを制御し、
    前記イントロスペクションエンジンは、前記第2のセッションイベントの前記発生に応答して、前記ターゲットメモリページの前記内容をコピーし、それに応じて、前記ネットワークフィルタに通知を送信するようにさらに構成され、
    前記ネットワークフィルタは、前記仮想マシンを宛先とするデータパケットを傍受し、それに応じて、前記通知を受け取るまで前記仮想マシンへの前記データパケットの配信を遅延させるように構成される、
    サーバコンピュータシステム。
  21. 請求項11に記載のサーバコンピュータシステムであって、前記イントロスペクションエンジンは、第3のイベントの発生に応答して、前記第1のセッションイベントの前記発生と、前記第3のイベントの前記発生との間に前記ターゲットメモリページの前記内容が変化したかどうかにさらに従って、前記ターゲットメモリページを識別するようにさらに構成され、前記第3のイベントの前記発生の前記発生は、前記通信セッションと並行した別の通信セッションによって引き起こされる、サーバコンピュータシステム。
  22. 請求項11に記載のサーバコンピュータシステムであって、前記ハードウェアプロセッサは、前記暗号化されたペイロードの解読結果に従って、前記クライアントシステムが悪意のあるソフトウェアを含むかどうかを判断するようにさらに構成される、サーバコンピュータシステム。
  23. クライアントシステムのハードウェアプロセッサであって、当該クライアントシステムはメモリをさらに備える、ハードウェアプロセッサによって実行されると、前記クライアントシステム上で実行される仮想マシンの外部で実行されるイントロスペクションエンジンを前記ハードウェアプロセッサに形成させる命令を格納した非一時的コンピュータ可読媒体であって、
    前記仮想マシンは、リモートの当事者との通信セッションを行うように構成され、前記通信セッションは、暗号化されたペイロードが後に続くハンドシェイクメッセージを含み、前記ハンドシェイクメッセージは、暗号化キーを導出するために前記クライアントシステムによって使用される暗号化パラメータを含み、前記暗号化されたペイロードは、前記暗号化キーで暗号化され、
    前記イントロスペクションエンジンは、
    前記通信セッションの第1のセッションイベントの発生と、前記通信セッションの第2のセッションイベントの発生との間にターゲットメモリページの内容が変化したかどうかに従って、前記メモリ内で前記ターゲットメモリページを識別すること、および
    それに応じて、前記内容に従って、前記暗号化されたペイロードを解読するように構成された解読エンジンに前記ターゲットメモリページの前記内容を送信すること
    を行うように構成される、
    非一時的コンピュータ可読媒体。
  24. クライアントシステムとリモートの当事者との間の暗号化された通信を解読する方法であって、前記クライアントシステムは、仮想マシンを実行するように構成され、
    前記仮想マシンは、前記リモートの当事者との通信セッションを行うように構成され、前記通信セッションは、暗号化されたペイロードが後に続くハンドシェイクメッセージを含み、前記ハンドシェイクメッセージは、暗号化キーを導出するために前記クライアントシステムによって使用される暗号化パラメータを含み、前記暗号化されたペイロードは、前記暗号化キーで暗号化され、前記方法は、
    前記通信セッションの第1のセッションイベントの発生と、前記通信セッションの第2のセッションイベントの発生との間にターゲットメモリページの内容が変化したかどうかに従って、少なくとも1つのハードウェアプロセッサを用いて前記クライアントシステムのメモリ内で前記ターゲットメモリページを識別するステップと、
    少なくとも1つのハードウェアプロセッサを用いて前記暗号化されたペイロードを採取するステップと、
    前記ターゲットメモリページの前記内容に従って、少なくとも1つのハードウェアプロセッサを用いて前記暗号化されたペイロードを解読するステップと
    を含む、方法。
JP2018552231A 2016-04-04 2017-03-29 仮想化環境においてネットワークトラフィックを解読するためのシステムおよび方法 Active JP6857193B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662317804P 2016-04-04 2016-04-04
US62/317,804 2016-04-04
US15/471,981 2017-03-28
US15/471,981 US10116630B2 (en) 2016-04-04 2017-03-28 Systems and methods for decrypting network traffic in a virtualized environment
PCT/EP2017/057422 WO2017174418A1 (en) 2016-04-04 2017-03-29 System and methods for decrypting network traffic in a virtualized environment

Publications (2)

Publication Number Publication Date
JP2019516294A true JP2019516294A (ja) 2019-06-13
JP6857193B2 JP6857193B2 (ja) 2021-04-14

Family

ID=59962053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018552231A Active JP6857193B2 (ja) 2016-04-04 2017-03-29 仮想化環境においてネットワークトラフィックを解読するためのシステムおよび方法

Country Status (13)

Country Link
US (2) US10116630B2 (ja)
EP (1) EP3440584B1 (ja)
JP (1) JP6857193B2 (ja)
KR (1) KR102041584B1 (ja)
CN (1) CN108885665B (ja)
AU (1) AU2017247547B2 (ja)
CA (1) CA3018021C (ja)
ES (1) ES2827007T3 (ja)
HK (1) HK1257399A1 (ja)
IL (1) IL261826B (ja)
RU (1) RU2738021C2 (ja)
SG (1) SG11201807964UA (ja)
WO (1) WO2017174418A1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10805331B2 (en) 2010-09-24 2020-10-13 BitSight Technologies, Inc. Information technology security assessment system
US9438615B2 (en) 2013-09-09 2016-09-06 BitSight Technologies, Inc. Security risk management
US10979328B2 (en) * 2017-03-31 2021-04-13 Intel Corporation Resource monitoring
US10462182B2 (en) * 2017-05-12 2019-10-29 Vmware, Inc. Thin agent-based SSL offloading
US10903985B2 (en) * 2017-08-25 2021-01-26 Keysight Technologies Singapore (Sales) Pte. Ltd. Monitoring encrypted network traffic flows in a virtual environment using dynamic session key acquisition techniques
US10565376B1 (en) * 2017-09-11 2020-02-18 Palo Alto Networks, Inc. Efficient program deobfuscation through system API instrumentation
US10733290B2 (en) * 2017-10-26 2020-08-04 Western Digital Technologies, Inc. Device-based anti-malware
US10257219B1 (en) 2018-03-12 2019-04-09 BitSight Technologies, Inc. Correlated risk in cybersecurity
US11055411B2 (en) * 2018-05-10 2021-07-06 Acronis International Gmbh System and method for protection against ransomware attacks
US10893030B2 (en) 2018-08-10 2021-01-12 Keysight Technologies, Inc. Methods, systems, and computer readable media for implementing bandwidth limitations on specific application traffic at a proxy element
US11374971B2 (en) * 2018-08-24 2022-06-28 Micro Focus Llc Deception server deployment
EP3623982B1 (en) 2018-09-12 2021-05-19 British Telecommunications public limited company Ransomware remediation
EP3623980B1 (en) * 2018-09-12 2021-04-28 British Telecommunications public limited company Ransomware encryption algorithm determination
WO2020060450A1 (en) * 2018-09-17 2020-03-26 Telefonaktiebolaget Lm Ericsson (Publ) Bit register in shared memory indicating the processor and the software handlers
US10949547B2 (en) * 2018-10-05 2021-03-16 Google Llc Enclave fork support
US11200323B2 (en) 2018-10-17 2021-12-14 BitSight Technologies, Inc. Systems and methods for forecasting cybersecurity ratings based on event-rate scenarios
US10521583B1 (en) * 2018-10-25 2019-12-31 BitSight Technologies, Inc. Systems and methods for remote detection of software through browser webinjects
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11347869B2 (en) * 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US10735430B1 (en) * 2019-04-22 2020-08-04 Cyberark Software Ltd. Systems and methods for dynamically enrolling virtualized execution instances and managing secure communications between virtualized execution instances and clients
US11222123B2 (en) 2019-04-22 2022-01-11 Cyberark Software Ltd. Securing privileged virtualized execution instances from penetrating a virtual host environment
US20200403978A1 (en) * 2019-06-19 2020-12-24 Amazon Technologies, Inc. Hybrid key exchanges for double-hulled encryption
US10726136B1 (en) 2019-07-17 2020-07-28 BitSight Technologies, Inc. Systems and methods for generating security improvement plans for entities
US11956265B2 (en) 2019-08-23 2024-04-09 BitSight Technologies, Inc. Systems and methods for inferring entity relationships via network communications of users or user devices
US11032244B2 (en) 2019-09-30 2021-06-08 BitSight Technologies, Inc. Systems and methods for determining asset importance in security risk management
US10873578B1 (en) 2019-12-09 2020-12-22 Evan Chase Rose Biometric authentication, decentralized learning framework, and adaptive security protocols in distributed terminal network
US11200548B2 (en) 2019-12-09 2021-12-14 Evan Chase Rose Graphical user interface and operator console management system for distributed terminal network
US10902705B1 (en) 2019-12-09 2021-01-26 Evan Chase Rose Biometric authentication, decentralized learning framework, and adaptive security protocols in distributed terminal network
US11113665B1 (en) 2020-03-12 2021-09-07 Evan Chase Rose Distributed terminals network management, systems, interfaces and workflows
US10893067B1 (en) 2020-01-31 2021-01-12 BitSight Technologies, Inc. Systems and methods for rapidly generating security ratings
KR20210117682A (ko) * 2020-03-20 2021-09-29 라인 가부시키가이샤 메모리 맵을 활용한 멀웨어 탐지 방법 및 시스템
US11023585B1 (en) 2020-05-27 2021-06-01 BitSight Technologies, Inc. Systems and methods for managing cybersecurity alerts
US11611540B2 (en) * 2020-07-01 2023-03-21 Vmware, Inc. Protection of authentication data of a server cluster
WO2022081733A1 (en) * 2020-10-13 2022-04-21 BedRock Systems, Inc. A formally verified trusted computing base with active security and policy enforcement
US11734042B2 (en) 2020-12-10 2023-08-22 Red Hat, Inc. Providing supplemental information to a guest operating system by a hypervisor
CN112583591A (zh) * 2020-12-23 2021-03-30 维沃移动通信有限公司 应用程序控制方法及装置
CN114760153A (zh) * 2022-06-14 2022-07-15 北京升鑫网络科技有限公司 加密流量的实时解密方法、装置及电子设备

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7685635B2 (en) * 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US8001543B2 (en) * 2005-10-08 2011-08-16 International Business Machines Corporation Direct-memory access between input/output device and physical memory within virtual machine environment
FR2899749B1 (fr) * 2006-04-07 2008-07-04 Groupe Ecoles Telecomm Procede de protection d'identite, dispositifs, et produit programme d'ordinateur correspondants.
US8001381B2 (en) * 2008-02-26 2011-08-16 Motorola Solutions, Inc. Method and system for mutual authentication of nodes in a wireless communication network
US8090797B2 (en) * 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US8327059B2 (en) * 2009-09-30 2012-12-04 Vmware, Inc. System and method to enhance memory protection for programs in a virtual machine environment
JP5717164B2 (ja) * 2009-10-07 2015-05-13 日本電気株式会社 コンピュータシステム、及びコンピュータシステムのメンテナンス方法
CN102763098B (zh) * 2009-12-14 2016-02-17 思杰系统有限公司 用于在可信和不可信虚拟机之间通信的方法和系统
WO2011152816A1 (en) * 2010-05-30 2011-12-08 Hewlett-Packard Development Company, L.P. Virtual machine code injection
US8489889B1 (en) * 2010-09-17 2013-07-16 Symantec Corporation Method and apparatus for restricting access to encrypted data
US9053053B2 (en) * 2010-11-29 2015-06-09 International Business Machines Corporation Efficiently determining identical pieces of memory used by virtual machines
IL209960A0 (en) * 2010-12-13 2011-02-28 Comitari Technologies Ltd Web element spoofing prevention system and method
EP2659650B1 (en) * 2010-12-29 2022-06-22 Citrix Systems Inc. Systems and methods for multi-level tagging of encrypted items for additional security and efficient encrypted item determination
US8984478B2 (en) * 2011-10-03 2015-03-17 Cisco Technology, Inc. Reorganization of virtualized computer programs
US8656482B1 (en) * 2012-08-20 2014-02-18 Bitdefender IPR Management Ltd. Secure communication using a trusted virtual machine
US9176838B2 (en) * 2012-10-19 2015-11-03 Intel Corporation Encrypted data inspection in a network environment
US9571507B2 (en) * 2012-10-21 2017-02-14 Mcafee, Inc. Providing a virtual security appliance architecture to a virtual cloud infrastructure
US9438488B2 (en) * 2012-11-09 2016-09-06 Citrix Systems, Inc. Systems and methods for appflow for datastream
US8910238B2 (en) 2012-11-13 2014-12-09 Bitdefender IPR Management Ltd. Hypervisor-based enterprise endpoint protection
US9396011B2 (en) * 2013-03-12 2016-07-19 Qualcomm Incorporated Algorithm and apparatus to deploy virtual machine monitor on demand
US9407519B2 (en) 2013-03-15 2016-08-02 Vmware, Inc. Virtual network flow monitoring
US9117080B2 (en) * 2013-07-05 2015-08-25 Bitdefender IPR Management Ltd. Process evaluation for malware detection in virtual machines
US9507727B2 (en) * 2013-07-17 2016-11-29 Bitdefender IPR Management Ltd. Page fault injection in virtual machines
US9602498B2 (en) 2013-10-17 2017-03-21 Fortinet, Inc. Inline inspection of security protocols
US9319380B2 (en) * 2014-03-20 2016-04-19 Bitdefender IPR Management Ltd. Below-OS security solution for distributed network endpoints
US20150288659A1 (en) * 2014-04-03 2015-10-08 Bitdefender IPR Management Ltd. Systems and Methods for Mutual Integrity Attestation Between A Network Endpoint And A Network Appliance
CN104461678B (zh) * 2014-11-03 2017-11-24 中国科学院信息工程研究所 一种在虚拟化环境中提供密码服务的方法和系统

Also Published As

Publication number Publication date
CN108885665A (zh) 2018-11-23
US10257170B2 (en) 2019-04-09
RU2738021C2 (ru) 2020-12-07
AU2017247547A1 (en) 2018-10-11
CA3018021C (en) 2021-12-28
KR20180129830A (ko) 2018-12-05
IL261826B (en) 2021-02-28
EP3440584A1 (en) 2019-02-13
US20190068561A1 (en) 2019-02-28
SG11201807964UA (en) 2018-10-30
ES2827007T3 (es) 2021-05-19
HK1257399A1 (zh) 2019-10-18
WO2017174418A1 (en) 2017-10-12
RU2018132840A3 (ja) 2020-06-17
KR102041584B1 (ko) 2019-11-06
AU2017247547B2 (en) 2021-07-08
US10116630B2 (en) 2018-10-30
IL261826A (en) 2018-10-31
CA3018021A1 (en) 2017-10-12
EP3440584B1 (en) 2020-07-29
US20170289109A1 (en) 2017-10-05
JP6857193B2 (ja) 2021-04-14
CN108885665B (zh) 2022-04-08
RU2018132840A (ru) 2020-05-12

Similar Documents

Publication Publication Date Title
US10257170B2 (en) Systems and methods for decrypting network traffic in a virtualized environment
US9838361B2 (en) Secure migration of virtual machines from source to target and transfer of VM descriptor and keys between physical servers
RU2714607C2 (ru) Двукратная самодиагностика памяти для защиты множества сетевых конечных точек
KR101662614B1 (ko) 네트워크 환경에서 암호화된 데이터 검사
US20140137180A1 (en) Hypervisor-Based Enterprise Endpoint Protection
KR20160114037A (ko) 멀웨어의 자동화된 런타임 검출
US10542039B2 (en) Security against side-channel attack in real-time virtualized networks
CN109558739B (zh) 程序运行方法、装置、终端及可读介质
US20160085973A1 (en) Method and apparatus for providing provably secure user input/output
Akbanov et al. Static and dynamic analysis of WannaCry ransomware
US20220035904A1 (en) Using a trusted execution environment to enable network booting
Marku et al. Towards protected VNFs for multi-operator service delivery
Coppola et al. Automation for industry 4.0 by using secure lorawan edge gateways
Will et al. Trusted inter-process communication using hardware enclaves
Janjua et al. Enhanced secure mechanism for virtual machine migration in clouds
Yasmin et al. Investigating the possibility of data leakage in time of live VM migration
US11106788B2 (en) Security for active data request streams
US11902298B2 (en) Dynamic remote browsing
WO2018000537A1 (zh) 网络环境下虚拟机安全隔离系统
Boyd et al. Towards protected VNFs for multi-operator service delivery
Kaur et al. PARAMETRIC ANALYSIS TO ENHANCE SECURITY IN CLOUD COMPUTING TO PREVENT ATTACKS IN LIVE MIGRATION.
Abirami et al. A Survey on Challenges of Cloud Security Attacks
Sajay Security Issues in Cloud Computing: An Overview

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191216

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210319

R150 Certificate of patent or registration of utility model

Ref document number: 6857193

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250