(57)【要約】  分離されたコンピュータアプリケーションを有する分離層に分離されていないコンピュータアプリケーションを組み込むこと。一実施形態では、方法は、第１のコンピュータアプリケーションを分離層内の仮想化された第１のコンピュータアプリケーションとして実行することによって、第１のコンピュータアプリケーションを分離することを含んでもよい。この方法はまた、仮想化された第１のコンピュータアプリケーションから、分離層内で実行していない第２のコンピュータアプリケーションとコンピュータオブジェクトを共有する要求を受信することを含んでもよい。この方法は、要求の受信に応答して、いくつかの行為を更に含んでもよい。これらの行為は、第２のコンピュータアプリケーションの少なくとも一部分を分離層内の仮想化された第２のコンピュータアプリケーションとしてリアルタイムで実行することを含んでもよい。これらの行為はまた、分離層内のコンピュータオブジェクトに基づいて仮想化されたコンピュータオブジェクトを作成することを含んでもよい。これらの行為は、分離層内で仮想化されたコンピュータオブジェクトを共有することを更に含んでもよい。分離されたコンピュータアプリケーションを有する分離層に分離されていないコンピュータアプリケーションを組み込むこと。一実施形態では、方法は、第１のコンピュータアプリケーションを分離層内の仮想化された第１のコンピュータアプリケーションとして実行することによって、第１のコンピュータアプリケーションを分離することを含んでもよい。この方法はまた、仮想化された第１のコンピュータアプリケーションから、分離層内で実行していない第２のコンピュータアプリケーションとコンピュータオブジェクトを共有する要求を受信することを含んでもよい。この方法は、要求の受信に応答して、いくつかの行為を更に含んでもよい。これらの行為は、第２のコンピュータアプリケーションの少なくとも一部分を分離層内の仮想化された第２のコンピュータアプリケーションとしてリアルタイムで実行することを含んでもよい。これらの行為はまた、分離層内のコンピュータオブジェクトに基づいて仮想化されたコンピュータオブジェクトを作成することを含んでもよい。これらの行為は、分離層内で仮想化されたコンピュータオブジェクトを共有することを更に含んでもよい。
2020510266.tif 000002
【特許請求の範囲】
【請求項１】
分離されたコンピュータアプリケーションを有する分離層に分離されていないコンピュータアプリケーションを組み込むためのコンピュータにより実装される方法であって、前記方法の少なくとも一部分は、少なくとも１つのプロセッサを含むコンピューティングデバイスによって実行され、前記方法は、
第１のコンピュータアプリケーションを分離層内の仮想化された第１のコンピュータアプリケーションとして実行することによって、前記第１のコンピュータアプリケーションを分離することと、
前記仮想化された第１のコンピュータアプリケーションから、前記分離層内で実行していない第２のコンピュータアプリケーションとコンピュータオブジェクトを共有する要求を受信することと、
前記要求を受信することに応答して、
前記第２のコンピュータアプリケーションの少なくとも一部分を、前記分離層内の仮想化された第２のコンピュータアプリケーションとしてリアルタイムで実行することと、
前記分離層内の前記コンピュータオブジェクトに基づいて仮想化されたコンピュータオブジェクトを作成することと、
前記分離層内の前記仮想化された第１のコンピュータアプリケーションと前記仮想化された第２のコンピュータアプリケーションとの間で、前記仮想化されたコンピュータオブジェクトを共有することと、を含む、方法。
【請求項２】
前記第１のコンピュータアプリケーションを分離することの前に、前記第１のコンピュータアプリケーションを潜在的に悪意のあるコンピュータアプリケーションとして識別することを更に含む、請求項１に記載の方法。
【請求項３】
前記要求を受信することに応答して、前記仮想化された第１のコンピュータアプリケーション及び／又は前記仮想化された第２のコンピュータアプリケーションが、前記分離層の外側の前記コンピュータオブジェクトを修正することなく、前記分離層内の前記仮想化されたコンピュータオブジェクトを修正することを可能にすることを更に含む、請求項１に記載の方法。
【請求項４】
前記分離層は、その中で実行している任意のコンピュータアプリケーションが前記分離層に関連付けられたオペレーティングシステムを修正することを防止する、請求項１に記載の方法。
【請求項５】
前記分離層は、その中で実行している任意のコンピュータアプリケーションが前記分離層の外側で実行している任意のコンピュータアプリケーションと通信することを防止する、請求項１に記載の方法。
【請求項６】
前記コンピュータオブジェクトが、ファイルシステム内に記憶されたファイルであり、
前記仮想化された第１のコンピュータアプリケーションから受信される前記要求は、前記仮想の第１のコンピュータアプリケーション及び前記第２のコンピュータアプリケーションが前記ファイルシステム内の前記ファイルにアクセスして修正することを可能にする要求を含む、請求項１に記載の方法。
【請求項７】
前記コンピュータオブジェクトが、ファイルシステムであり、
前記仮想化された第１のコンピュータアプリケーションから受信される前記要求は、前記仮想の第１のコンピュータアプリケーション及び前記第２のコンピュータアプリケーションが前記ファイルシステム内の１つ以上のファイルにアクセスして修正することを可能にする要求を含む、請求項１に記載の方法。
【請求項８】
前記コンピュータオブジェクトが、ネットワーク接続であり、
前記仮想化された第１のコンピュータアプリケーションから受信される前記要求は、前記仮想の第１のコンピュータアプリケーション及び前記第２のコンピュータアプリケーションが前記ネットワーク接続を介して通信することを可能にする要求を含む、請求項１に記載の方法。
【請求項９】
前記コンピュータオブジェクトは、メモリの一部分であり、
前記仮想化された第１のコンピュータアプリケーションから受信される前記要求は、前記仮想の第１のコンピュータアプリケーション及び前記第２のコンピュータアプリケーションがメモリの前記部分にアクセスして修正することを可能にする要求を含む、請求項１に記載の方法。
【請求項１０】
前記コンピュータオブジェクトが、リモートプロシージャコールであり、
前記仮想化された第１のコンピュータアプリケーションから受信される前記要求は、前記仮想の第１のコンピュータアプリケーション及び前記第２のコンピュータアプリケーションが前記リモートプロシージャコールを実行することを可能にする要求を含む、請求項１に記載の方法。
【請求項１１】
分離されたコンピュータアプリケーションを有する分離層に分離されていないコンピュータアプリケーションを組み込むためのコンピュータにより実装される方法であって、前記方法の少なくとも一部分は、少なくとも１つのプロセッサを含むコンピューティングデバイスによって実行され、前記方法は、
第１のコンピュータアプリケーションを潜在的に悪意のあるコンピュータアプリケーションとして識別することと、
前記第１のコンピュータアプリケーションを分離層内の仮想化された第１のコンピュータアプリケーションとして実行することによって、前記第１のコンピュータアプリケーションを分離することと、
前記仮想化された第１のコンピュータアプリケーションから、前記分離層内で実行していない第２のコンピュータアプリケーションとコンピュータオブジェクトを共有する要求を受信することと、
前記要求を受信することに応答して、
前記第２のコンピュータアプリケーションがプライベートコンピュータアプリケーションとしてセキュリティポリシーに定義されていないこと、及び前記コンピュータオブジェクトがプライベートコンピュータオブジェクトとして前記セキュリティポリシーに定義されていないことをリアルタイムで検証することと、
前記第２のコンピュータアプリケーションの少なくとも一部分を、前記分離層内の仮想化された第２のコンピュータアプリケーションとしてリアルタイムで実行することと、
前記分離層内の前記コンピュータオブジェクトに基づいて仮想化されたコンピュータオブジェクトを作成することと、
前記分離層内の前記仮想化された第１のコンピュータアプリケーションと前記仮想化された第２のコンピュータアプリケーションとの間で、前記仮想化されたコンピュータオブジェクトを共有することと、
前記仮想化された第１のコンピュータアプリケーション及び／又は前記仮想化された第２のコンピュータアプリケーションが、前記分離層の外側の前記コンピュータオブジェクトを修正することなく、前記分離層内の前記仮想化されたコンピュータオブジェクトを修正することを可能にすることと、を含む、方法。
【請求項１２】
前記分離層が、任意のコンピュータアプリケーションが前記分離層に関連付けられたオペレーティングシステムを修正すること、及び前記分離層の外側で実行している任意のコンピュータアプリケーションと通信することを防止する、請求項１１に記載の方法。
【請求項１３】
前記セキュリティポリシーが、何らかの潜在的に悪意のあるコンピュータアプリケーションによってアクセスされることがないコンピュータアプリケーション及びコンピュータオブジェクトをプライベートとして定義する、請求項１１に記載の方法。
【請求項１４】
前記コンピュータオブジェクトが、ファイルシステム内に記憶されたファイルであり、
前記仮想化された第１のコンピュータアプリケーションから受信される前記要求は、前記仮想の第１のコンピュータアプリケーション及び前記第２のコンピュータアプリケーションが前記ファイルシステム内の前記ファイルにアクセスして修正することを可能にする要求を含む、請求項１１に記載の方法。
【請求項１５】
前記コンピュータオブジェクトが、ネットワーク接続であり、
前記仮想化された第１のコンピュータアプリケーションから受信される前記要求は、前記仮想の第１のコンピュータアプリケーション及び前記第２のコンピュータアプリケーションが前記ネットワーク接続を介して通信することを可能にする要求を含む、請求項１１に記載の方法。
【請求項１６】
１つ以上のコンピュータ可読命令を含む１つ以上の非一時的コンピュータ可読媒体であって、１つ以上のコンピューティングデバイスの１つ以上のプロセッサによって実行されたときに、前記１つ以上のコンピューティングデバイスに、
第１のコンピュータアプリケーションを潜在的に悪意のあるコンピュータアプリケーションとして識別させ、
前記第１のコンピュータアプリケーションを分離層内の仮想化された第１のコンピュータアプリケーションとして実行することによって、前記第１のコンピュータアプリケーションを分離させ、
前記仮想化された第１のコンピュータアプリケーションから、前記分離層内で実行していない第２のコンピュータアプリケーションとコンピュータオブジェクトを共有する要求を受信させ、かつ
前記要求を受信することに応答して、
前記第２のコンピュータアプリケーションがプライベートコンピュータアプリケーションとしてセキュリティポリシーに定義されていないこと、及び前記コンピュータオブジェクトがプライベートコンピュータオブジェクトとして前記セキュリティポリシーに定義されていないことをリアルタイムで検証させ、
前記第２のコンピュータアプリケーションの少なくとも一部分を、前記分離層内の仮想化された第２のコンピュータアプリケーションとしてリアルタイムで実行させ、
前記分離層内の前記コンピュータオブジェクトに基づいて仮想化されたコンピュータオブジェクトを作成させ、
前記分離層内の前記仮想化された第１のコンピュータアプリケーションと前記仮想化された第２のコンピュータアプリケーションとの間で、前記仮想化されたコンピュータオブジェクトを共有させ、かつ
前記仮想化された第１のコンピュータアプリケーション及び／又は前記仮想化された第２のコンピュータアプリケーションが、前記分離層の外側の前記コンピュータオブジェクトを修正することなく、前記分離層内の前記仮想化されたコンピュータオブジェクトを修正することを可能にさせる、１つ以上の非一時的コンピュータ可読媒体。
【請求項１７】
前記分離層が、その中で実行している任意のコンピュータアプリケーションが前記分離層に関連付けられたオペレーティングシステムを修正すること、及び前記分離層の外側で実行している任意のコンピュータアプリケーションと通信することを防止する、請求項１６に記載の１つ以上の非一時的コンピュータ可読媒体。
【請求項１８】
前記セキュリティポリシーが、何らかの潜在的に悪意のあるコンピュータアプリケーションによってアクセスされることがないコンピュータアプリケーション及びコンピュータオブジェクトをプライベートとして定義する、請求項１６に記載の１つ以上の非一時的コンピュータ可読媒体。
【請求項１９】
前記コンピュータオブジェクトは、メモリの一部分であり、
前記仮想化された第１のコンピュータアプリケーションから受信される前記要求は、前記仮想の第１のコンピュータアプリケーション及び前記第２のコンピュータアプリケーションがメモリの前記部分にアクセスして修正することを可能にする要求を含む、請求項１６に記載の１つ以上の非一時的コンピュータ可読媒体。
【請求項２０】
前記コンピュータオブジェクトが、リモートプロシージャコールであり、
前記仮想化された第１のコンピュータアプリケーションから受信した前記要求は、前記仮想の第１のコンピュータアプリケーション及び前記第２のコンピュータアプリケーションが前記リモートプロシージャコールを実行することを可能にする要求を含む、請求項１６に記載の１つ以上の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本出願は、参照によりその全体が本明細書に組み込まれる、２０１７年３月２２日に出願された米国特許出願第１５／４６６，３９９号のＰＣＴ出願及び継続出願である。
【背景技術】
【０００２】
時にはサンドボックスとも呼ばれる分離層は、ソフトウェアアプリケーションを分離して実行することができるコンピューティング環境である。例えば、アプリケーションがウイルスなどの潜在的に悪意のあるアプリケーションである疑いがある場合、そのアプリケーションはまず、検疫期間に分離層で実行、すなわち検疫され得る。分離層内で実行している間に、アプリケーションを監視して、アプリケーションが何らかの悪意のある挙動を示すかどうかを判定することができる。そうである場合、疑わしいアプリケーションは、悪意のあるアプリケーションであることが確認され得、廃棄され得る。そうでない場合、アプリケーションは、標準的な動作環境で実行することが承認され得る。
【０００３】
本明細書で請求される主題は、何らかの不利益を解決するか、又は上記のような環境でのみ動作する実施形態に限定されない。むしろ、この背景は、本明細書に記載されるいくつかの実施形態が実践され得る１つの例示的な技術領域を例示するためにのみ提供される。
【発明の概要】
【０００４】
一実施形態では、分離されたコンピュータアプリケーションを有する分離層内に分離されていないコンピュータアプリケーションを組み込むためのコンピュータによって実装される方法は、少なくとも部分的に、少なくとも１つのプロセッサを含むコンピューティングデバイスによって実行されてもよい。この方法は、第１のコンピュータアプリケーションを分離層内の仮想化された第１のコンピュータアプリケーションとして実行することにより、第１のコンピュータアプリケーションを分離することを含んでもよい。この方法はまた、仮想化された第１のコンピュータアプリケーションから、分離層内で実行していない第２のコンピュータアプリケーションとコンピュータオブジェクトを共有する要求を受信することを含んでもよい。この方法は、要求の受信に応答して、いくつかの行為を更に含んでもよい。これらの行為は、第２のコンピュータアプリケーションの少なくとも一部分を分離層内の仮想化された第２のコンピュータアプリケーションとしてリアルタイムで実行することを含んでもよい。これらの行為はまた、分離層内のコンピュータオブジェクトに基づいて仮想化されたコンピュータオブジェクトを作成することを含んでもよい。これらの行為は、分離層内の仮想化された第１のコンピュータアプリケーションと仮想化された第２のコンピュータアプリケーションとの間で仮想化されたコンピュータオブジェクトを共有することを更に含んでもよい。
【０００５】
いくつかの実施形態では、この方法は、第１のコンピュータアプリケーションを分離する前に、第１のコンピュータアプリケーションを潜在的に悪意のあるコンピュータアプリケーションとして識別することを更に含んでもよい。いくつかの実施形態では、この方法は、要求の受信に応答して、仮想化された第１のコンピュータアプリケーション及び／又は仮想化された第２のコンピュータアプリケーションが、分離層の外側のコンピュータオブジェクトを修正することなく、分離層内の仮想化されたコンピュータオブジェクトを修正することを可能にすることを更に含んでもよい。いくつかの実施形態では、分離層は、その中で実行している任意のコンピュータアプリケーションが、分離層に関連付けられたオペレーティングシステムを修正すること、及び／又は分離層の外側で実行している任意のコンピュータアプリケーションと通信することを防止してもよい。
【０００６】
別の実施形態では、分離されたコンピュータアプリケーションを有する分離層内に分離されていないコンピュータアプリケーションを組み込むためのコンピュータによって実装される方法は、少なくとも部分的に、少なくとも１つのプロセッサを含むコンピューティングデバイスによって実行されてもよい。この方法は、第１のコンピュータアプリケーションを潜在的に悪意のあるコンピュータアプリケーションとして識別することを含んでもよい。この方法は、第１のコンピュータアプリケーションを分離層内の仮想化された第１のコンピュータアプリケーションとして実行することにより、第１のコンピュータアプリケーションを分離することを更に含んでもよい。この方法はまた、仮想化された第１のコンピュータアプリケーションから、分離層内で実行していない第２のコンピュータアプリケーションとコンピュータオブジェクトを共有する要求を受信することを含んでもよい。この方法は、要求の受信に応答して、いくつかの行為を更に含んでもよい。これらの行為は、第２のコンピュータアプリケーションがセキュリティポリシーにおいてプライベートとしてセキュリティポリシーに定義されていないことをリアルタイムで検証することを含んでもよい。これらの行為は、第２のコンピュータアプリケーションの少なくとも一部分を分離層内の仮想化された第２のコンピュータアプリケーションとしてリアルタイムで実行することを更に含んでもよい。これらの行為はまた、分離層内のコンピュータオブジェクトに基づいて仮想化されたコンピュータオブジェクトを作成することを含んでもよい。これらの行為は、分離層内の仮想化された第１のコンピュータアプリケーションと仮想化された第２のコンピュータアプリケーションとの間で仮想化されたコンピュータオブジェクトを共有することを更に含んでもよい。これらの行為はまた、仮想化された第１のコンピュータアプリケーション及び／又は仮想化された第２のコンピュータアプリケーションが、分離層の外側のコンピュータオブジェクトを修正することなく、分離層内の仮想化されたコンピュータオブジェクトを修正することを可能にすることを含んでもよい。
【０００７】
いくつかの実施形態では、セキュリティポリシーは、何らかの潜在的に悪意のあるコンピュータアプリケーションによってアクセスされることがないコンピュータアプリケーション及びコンピュータオブジェクトをプライベートとして定義してもよい。
【０００８】
更に、いくつかの実施形態では、コンピュータオブジェクトは、ファイルシステムに記憶されたファイル、ファイルシステム、ネットワーク接続、メモリの一部分、又はリモートプロシージャコールであってもよい。これらの実施形態では、仮想化された第１のコンピュータアプリケーションから受信される対応する要求として、それぞれ、仮想の第１のコンピュータアプリケーション及び第２のコンピュータアプリケーションがファイルシステム内のファイルにアクセスして修正することを可能にする要求、仮想の第１のコンピュータアプリケーション及び第２のコンピュータアプリケーションがファイルシステム内の１つ以上のファイルにアクセスして修正することを可能にする要求、仮想の第１のコンピュータアプリケーション及び第２のコンピュータアプリケーションがネットワーク接続を介して通信することを可能にする要求、仮想の第１のコンピュータアプリケーション及び第２のコンピュータアプリケーションがメモリの一部分にアクセスして修正することを可能にする要求、又は、仮想の第１のコンピュータアプリケーション及び第２のコンピュータアプリケーションがリモートプロシージャコールを実行することを可能にする要求が挙げられ得る。
【０００９】
また、いくつかの実施形態では、１つ以上の非一時的コンピュータ可読媒体は、１つ以上のコンピュータ可読命令を含んでもよく、この命令は、１つ以上のプロセッサによって実行された場合に、１つ以上のプロセッサに、分離されたコンピュータアプリケーションを有する分離層内に分離されていないコンピュータアプリケーションを組み込むための方法を実行させる。
【００１０】
前述の発明の概要及び以下の発明を実施するための形態の両方が説明的であり、請求される本発明を限定するものではないことを理解されたい。
【図面の簡単な説明】
【００１１】
実施形態は、添付図面を使用して、追加の特異性及び詳細を用いて記載され、説明される。
【図１】分離されたアプリケーションを有する分離層内に分離されていないアプリケーションを組み込むように構成された例示的なシステムを示す。
【図２】分離されたアプリケーションを有する分離層内に分離されていないアプリケーションを組み込む際に用いられ得る例示的なコンピュータシステムを示す。
【図３Ａ】分離されたアプリケーションを有する分離層内に分離されていないアプリケーションを組み込むための例示的な方法のフローチャートである。
【図３Ｂ】分離されたアプリケーションを有する分離層内に分離されていないアプリケーションを組み込むための例示的な方法のフローチャートである。
【発明を実施するための形態】
【００１２】
本開示のいくつかの実施形態は、分離されたアプリケーションを有する分離層に分離されていないアプリケーションを組み込むことに関する。
【００１３】
分離層は、スタンドアロン型のアプリケーションを実行し、監視するために有効であり得るが、分離層は、アプリケーション層の外側で実行している別のアプリケーションと通信する又はオブジェクトを共有することを求めるアプリケーションを実行し、監視するために現実的であり得ない。具体的には、潜在的に悪意のあるアプリケーションは、分離層内で実行、すなわち検疫され得るが、以前に承認されたアプリケーションは、分離層の外側の標準的な動作環境内で同時に実行され得る。潜在的に悪意のあるアプリケーションが分離層内で実行中であるため、潜在的に悪意のあるアプリケーションは、例えばファイルシステム、ファイルシステム内に記憶されたファイル、ネットワーク接続、メモリの一部分、又はリモートプロシージャコールなどの、分離層の外側のアプリケーション又はオブジェクトにアクセスすることができない場合がある。対照的に、以前に承認されたアプリケーションは、アプリケーション層の外側のオブジェクトへの比較的自由なアクセスを有し得る。したがって、分離層の外側のこれらのオブジェクトのうちの１つが以前に承認されたアプリケーションに関連付けられている場合、潜在的に悪意のあるアプリケーションは、以前に承認されたアプリケーションとオブジェクトを共有することができない場合がある。
【００１４】
例えば、新しい写真編集アプリケーションは、潜在的に悪意あるものとして識別される場合、分離層内で実行、すなわち検疫され得る。写真編集アプリケーションの実行中、写真編集アプリケーションは、分離層の外側の標準的な動作環境で実行している写真整理アプリケーションによって制御されたファイルシステム内の写真にアクセスすることを要求し得る。要求された写真及び写真整理アプリケーションは分離層の外側にあるため、検疫されている写真編集アプリケーションは、要求された写真及び写真整理アプリケーションへのアクセスを拒否され得る。分離層の外側の写真、又は分離層の外側の写真編集アプリケーションはいずれも、分離層内で実行している間は写真編集アプリケーションにアクセスすることができないため、分離層は、潜在的に悪意ある写真編集アプリケーションを実行し、監視する現実的な環境であり得ない。
【００１５】
他の実施例では、他のタイプのオブジェクト及び関連するアプリケーションは、分離層内で実行している潜在的に悪意のあるアプリケーションにアクセス不能になり得る。具体的には、限定するものではないが、ファイルシステム、ファイルシステムに記憶されたファイル、ネットワーク接続、メモリの一部分、又はリモートプロシージャコールなど他のオブジェクト、及びこれらのオブジェクトのうちのいずれか１つに関連付けられたアプリケーションは、潜在的に悪意のあるアプリケーションにアクセス不能であり得る。これらのオブジェクトのいずれかへのアクセスが、潜在的に悪意あるアプリケーションを現実に実行し、監視するために必要とされ得る場合、分離層は、潜在的に悪意あるアプリケーションを実行し、監視する現実的な環境であり得ない。
【００１６】
本明細書に開示される実施形態は、様々な利益を提供することができる。具体的には、本明細書に開示される実施形態は、例えば、分離されたアプリケーションを有する分離層内に分離されていないアプリケーションを組み込むことができる。いくつかの実施形態では、分離されたアプリケーションから、分離されていないアプリケーションとオブジェクトを共有する要求を受信する。次いで、この要求に応答して、分離されていないアプリケーションは、両方のアプリケーションがオブジェクトを共有できるように、分離層に組み込まれ得る。
【００１７】
例えば、写真編集アプリケーションは、潜在的に悪意あるものとして識別される場合、分離層内で実行、すなわち検疫され得る。写真編集アプリケーションの実行中、写真編集アプリケーションは、分離層の外側の標準的な動作環境で実行している写真整理アプリケーションによって制御されたファイルシステム内の写真にアクセスすることを要求し得る。要求に応答して、写真編集アプリケーション、又はその一部分、並びに要求された写真は、仮想化された形態で分離層内に組み込まれてもよい。それゆえ、要求された写真及び写真編集アプリケーションのこれらの仮想化された形態は、分離された写真編集アプリケーションにとってアクセス可能になり得る。このようにして、分離層は、潜在的に悪意のある写真編集アプリケーションを実行し、監視する、より現実的な環境になり得る。
【００１８】
他の実施例では、他のタイプのオブジェクト及び関連するアプリケーションは、分離層内で実行している潜在的に悪意のあるアプリケーションにアクセス可能になり得る。具体的には、限定するものではないが、ファイルシステム、ファイルシステムに記憶されたファイル、ネットワーク接続、メモリの一部分、又はリモートプロシージャコールなど他のオブジェクト、及びこれらのオブジェクトのうちのいずれか１つに関連付けられたアプリケーションは、仮想化された形態で分離層に組み込むことにより、潜在的に悪意のあるアプリケーションにアクセス可能になり得る。このようにして、分離層は、潜在的に悪意のあるアプリケーションを実行及び監視する、より現実的な環境になり得る。
【００１９】
図を参照すると、図１は、分離されたアプリケーションを有する分離層内に分離されていないアプリケーションを組み込むように構成された例示的なシステム１００を示す。システム１００は、クライアント１０２、サーバー１０４、及びネットワーク１０６を含んでもよい。
【００２０】
いくつかの実施形態では、クライアント１０２は、クライアントとして機能することができる任意のコンピュータシステムであってもよい。いくつかの実施形態では、クライアント１０２は、ネットワーク１０６を介してサーバー１０４と通信するように構成されてもよい。クライアント１０２は、アプリケーション１０８ａ、１０８ｂ、及び１０８ｎを含んでもよい。アプリケーション１０８ａ、１０８ｂ、及び１０８ｎは、クライアント１０２上で現在実行中であってもなくてもよい。実行中、アプリケーション１０８ａ、１０８ｂ、及び１０８ｎは、オペレーティングシステム１１０によって提供される標準的な動作環境、又は別の動作環境で実行中であってもよい。クライアント１０２は、上記のように、限定するものではないが、ファイルシステム、ファイルシステムに記憶されたファイル、ネットワーク接続、メモリの一部分、又はリモートプロシージャコールなど、２つ以上のアプリケーションの間で共有され得る任意のオブジェクトであり得る、オブジェクト１１２ａ、１１２ｂ、及び１１２ｎを更に含んでもよい。
【００２１】
いくつかの実施形態では、クライアント１０２はまた、分離モジュール１１４及び分離層１１６を含んでもよい。分離モジュール１１４は、分離層１１６内のアプリケーション１０８ａ〜１０８ｎのうちの１つ以上を仮想化された形態で実行、すなわち検疫するために用いられてもよい。例えば、分離モジュール１１４は、アプリケーション１０８ａを仮想化されたアプリケーション１２０ａとして実行するために用いられてもよい。同様に、分離モジュール１１４は、分離されたアプリケーションからのオブジェクト１１２ａ〜１１２ｎのうちの１つを共有する要求に応答して、アプリケーション１０８ａ〜１０８ｎのうちの１つ以上、及びオブジェクト１１２〜１１２ｎのうちの１つ以上を仮想化された形態で分離層１１６に組み込むために用いられてもよい。例えば、分離モジュール１１４は、仮想化されたアプリケーション１２０ａからのオブジェクト１１２ａをアプリケーション１０８ｂと共有する要求に応答して、アプリケーション１０８ｂを仮想化されたアプリケーション１２０ｂとして分離層１１６に組み込むために用いられてもよい。同時に、分離モジュール１１４は、オブジェクト１１２ａを仮想化されたオブジェクト１２２として分離層１１４に組み込むために用いられてもよい。
【００２２】
いくつかの実施形態では、分離層１１６はまた、セキュリティポリシー１１８を含んでもよい。セキュリティポリシー１１８は、アプリケーション１０８ａ〜１０８ｎのうちの特定のもの及び／又はオブジェクト１１２ａ〜１１２ｎのうちの特定のものをプライベートとして定義してもよい。プライベートとしてセキュリティポリシー１１８に定義されているそれらのアプリケーション及びオブジェクトは、何らかの潜在的に悪意のあるアプリケーションにアクセスされることがないアプリケーション及びオブジェクトであってもよい。例えば、特定のシステムクリティカルオブジェクトは、プライベートとして定義されてもよい。システムクリティカルオブジェクトの例としては、限定するものではないが、ネットワーク又はコンピュータアクセスのためのパスワードを保持するクライアント１０２のクレデンシャルストア、社員の社会保障番号を保持するクライアント１０２のファイル、極秘ネットワークへのクライアント１０２のネットワーク接続、及びオペレーティングシステム１１０の適切な機能を維持する責任を負うクライアント１０２のメモリの一部分が挙げられ得る。別の実施例では、特定のシステムクリティカルアプリケーションは、プライベートとして定義されてもよい。システムクリティカルアプリケーションの例としては、限定するものではないが、病院内で活動的生命維持機を実行するクライアント１０２のアプリケーション、空中飛行機で誘導システムを実行するクライアント１０２のアプリケーション、及び熱波中に送電網を実行するクライアント１０２のアプリケーションが挙げられ得る。このように、セキュリティポリシー１１８は、分離されたアプリケーションから要求が受信された場合であっても分離層１１６に組み込まれ得ない、特定のプライベートアプリケーション及び／又はオブジェクトを定義してもよい。セキュリティポリシー１１８は、それによって、分離モジュール１１４がアプリケーション及びオブジェクトを分離層１１６内に組み込む能力に制限をもたらし得る。
【００２３】
いくつかの実施形態では、サーバー１０４は、サーバーとして機能することができる任意のコンピュータシステムであってもよい。いくつかの実施形態では、サーバー１０４は、クライアント１０２、サーバー１０４、及び／又は他の類似のクライアント又はサーバーの間の通信セッションを容易にするように構成されてもよい。例えば、サーバー１０４は、ウェブサーバーとして動作し、クライアント１０２及び他の同様のクライアント上で実行するウェブブラウザを使用してアクセスされ得るウェブサイトをホストしてもよい。別の例では、サーバー１０４は、電話通話、ビデオ通話、及びクライアント１０２などのシステム又はデバイスと別のシステム又はデバイスとの間のデータ共有セッションなどの通信セッションを確立するように構成された交換として動作してもよい。いくつかの実施形態では、サーバー１０４は、構成要素１０８ａ〜１２２のそれぞれを有するクライアント１０２と同様に構成されてもよい。したがって、クライアント１０２の構成要素１０８ａ〜１２２の能力は、サーバー１０４上で複製されてもよい。
【００２４】
いくつかの実施形態では、ネットワーク１０６は、クライアント１０２及びサーバー１０４並びに他の同様のシステム及び／又はデバイスを通信可能に結合するように構成されてもよい。いくつかの実施形態では、ネットワーク１０６は、システムとデバイスとの間で通信を送受信するように構成された、任意の有線若しくは無線ネットワーク、又は複数のネットワークの組み合わせであってもよい。いくつかの実施形態では、ネットワーク１０６として、パーソナルエリアネットワーク（ＰＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、広域ネットワーク（ＷＡＮ）、又はストレージエリアネットワーク（ＳＡＮ）が挙げられ得る。いくつかの実施形態では、ネットワーク１０６はまた、セルラーネットワーク又はＶｏｉｃｅ  ｏｖｅｒ  ＩＰ（ＶｏＩＰ）ネットワークなどの様々な異なる通信プロトコルでデータを送信するために、電話回線を含む電気通信ネットワークの部分に結合されてもよく、又はそれを含んでもよい。
【００２５】
修正、追加、又は省略は、本開示の範囲から逸脱することなくシステム１００に対して行われてもよい。例えば、いくつかの実施形態では、単一のクライアント１０２又はクライアント１０２と同様の構成要素を有する単一のサーバー１０４のみを用いて、分離されたアプリケーションを有する分離層に分離されていないアプリケーションを組み込むことができる。更に、いくつかの実施形態では、システム１００は、図１に例示されるデバイス及びシステムと同様の追加のデバイス及びシステムを含んでもよく、それぞれは、図１に例示されるデバイス及びシステムと同様に構成されてもよい。
【００２６】
図２は、分離されたアプリケーションを有する分離層内に分離されていないアプリケーションを組み込む際に用いられ得る例示的なコンピュータシステム２００を示す。いくつかの実施形態では、コンピュータシステム２００は、本開示に記載されるシステム又はデバイスのうちのいずれかの一部であってもよい。例えば、コンピュータシステム２００は、図１のクライアント１０２又はサーバー１０４の一部であってもよい。
【００２７】
コンピュータシステム２００は、プロセッサ２０２、メモリ２０４、ファイルシステム２０６、通信ユニット２０８、オペレーティングシステム２１０、ユーザーインターフェース２１２、及びセキュリティモジュール２１４を含んでもよく、これらは全て通信可能に連結されてもよい。いくつかの実施形態では、コンピュータシステムは、例えば、デスクトップコンピュータ、クライアントコンピュータ、サーバーコンピュータ、携帯電話、ラップトップコンピュータ、スマートフォン、スマートウォッチ、タブレットコンピュータ、ポータブル音楽プレーヤ、又は任意の他のコンピュータシステムであってもよい。
【００２８】
一般に、プロセッサ２０２は、様々なコンピュータハードウェア若しくはソフトウェアモジュールなど任意の好適な専用若しくは汎用コンピュータ、コンピューティングエンティティ、又は処理デバイスを含んでもよく、任意の適用可能なコンピュータ可読記憶媒体に記憶された命令を実行するように構成されてもよい。例えば、プロセッサ２０２は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又はプログラム命令を解釈する及び／若しくは実行するように、並びに／又はデータを処理するように構成された任意の他のデジタル若しくはアナログ回路、又はこれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、プロセッサ２０２は、メモリ２０４及び／又はファイルシステム２０６に記憶されたプログラム命令を解釈する及び／若しくは実行する、並びに／又はデータを処理してもよい。いくつかの実施形態では、プロセッサ２０２は、ファイルシステム２０６からプログラム命令をフェッチし、プログラム命令をメモリ２０４にロードしてもよい。プログラム命令がメモリ２０４にロードされた後、プロセッサ２０２はプログラム命令を実行し得る。いくつかの実施形態では、命令は、プロセッサ２０２が分離されたアプリケーションを有する分離層内に分離されていないアプリケーションを組み込むことを含んでもよい。
【００２９】
メモリ２０４及びファイルシステム２０６は、そこに記憶されたコンピュータ実行可能命令若しくはデータ構造を搬送する又は有するためのコンピュータ可読記憶媒体を含んでもよい。このようなコンピュータ可読記憶媒体は、プロセッサ２０２などの汎用又は専用コンピュータによってアクセスされ得る任意の利用可能な非一時的媒体であってもよい。一例として、限定するものではないが、このようなコンピュータ可読記憶媒体としては、読み取り専用メモリ（ＲＯＭ）、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）若しくは他の光ディスク記憶装置、磁気ディスク記憶装置若しくは他の磁気記憶装置、フラッシュメモリデバイス（例えば、ソリッドステートメモリデバイス）、又はコンピュータ実行可能命令若しくはデータ構造の形態で所望のプログラムコードを搬送する又は記憶するために使用され得、汎用又は専用コンピュータによってアクセスされ得る任意の他の記憶媒体を含む、非一時的コンピュータ可読記憶媒体が挙げられ得る。上記の組み合せもまた、コンピュータ可読記憶媒体の範囲内に含めることができる。コンピュータ実行可能命令は、例えば、プロセッサ２０２に、図３Ａ及び図３Ｂの方法３００の１つ以上のブロックなど、特定の動作又は動作群を実行させるように構成された命令及びデータを含んでもよい。これらのコンピュータ実行可能命令は、例えば、オペレーティングシステム２１０に、セキュリティモジュール２１４などの１つ以上のアプリケーションに、又はそれらのいくつかの組み合わせに含まれてもよい。
【００３０】
通信ユニット２０８は、図１のネットワーク１０６などのネットワークを介して情報を送信又は受信するように構成された任意の構成要素、デバイス、システム、又はそれらの組み合わせを含んでもよい。いくつかの実施形態では、通信ユニット２０８は、他の場所、同じ場所、又は更には同じシステム内の他の構成要素において、他のデバイスと通信してもよい。例えば、通信ユニット２０８としては、モデム、ネットワークカード（無線又は有線）、赤外線通信デバイス、無線通信デバイス（アンテナなど）、及び／又はチップセット（Ｂｌｕｅｔｏｏｔｈ（登録商標）デバイス、８０２．６デバイス（例えば、メトロポリタンエリアネットワーク（ＭＡＮ））、ＷｉＦｉデバイス、ＷｉＭａｘデバイス、セルラー通信デバイスなど）、及び／又は同様のものが挙げられ得る。通信ユニット２０８は、本開示に記載されるものなどのネットワーク及び／又は任意の他のデバイス若しくはシステムとデータを交換することを可能にし得る。
【００３１】
オペレーティングシステム２１０は、コンピュータシステム２００のハードウェアリソース及びソフトウェアリソースを管理するように構成され、コンピュータシステム２００に共通のサービスを提供するように構成されてもよい。オペレーティングシステム２１０は、図１のオペレーティングシステム１１０と同様に構成されてもよく、図１の分離層１１６などの分離層の外側にあるアプリケーションを実行するための標準的な動作環境を提供してもよい。オペレーティングシステム１１０又は２１０はまた、図１の分離層１１６などの分離層を提供してもよい。
【００３２】
ユーザーインターフェース２１２は、ユーザーがコンピュータシステム２００とインターフェースすることを可能にするように構成された任意のデバイスを含んでもよい。例えば、ユーザーインターフェース２１２は、映像、テキスト、アプリケーションユーザーインターフェース、及びプロセッサ２０２によって指示される他のデータを提示するように構成された、ＬＣＤ、ＬＥＤ、又は他のディスプレイなどのディスプレイを含んでもよい。ユーザーインターフェース２１２は、マウス、トラックパッド、キーボード、タッチスクリーン、音量制御、他のボタン、スピーカ、マイクロホン、カメラ、任意の周辺デバイス、又は他の入力若しくは出力デバイスを更に含んでもよい。ユーザーインターフェース２１２は、ユーザーから入力を受信し、入力をプロセッサ２０２に提供してもよい。同様に、ユーザーインターフェース２１２は、ユーザーに出力を提示してもよい。
【００３３】
セキュリティモジュール２１４は、メモリ２０４又はファイルシステム２０６などの１つ以上の非一時的コンピュータ可読媒体に記憶された１つ以上のコンピュータ可読命令であってもよく、プロセッサ２０２によって実行されたときに、悪意のあるものとして識別される又は安全なものとして識別されるアプリケーション上でセキュリティアクションを実行するように構成される。例えば、図１の分離モジュール１１４が、アプリケーション１０８ａ〜１０８ｎのうちの特定の１つを悪意のあるもの又は安全なものとして識別すると、セキュリティモジュールは、それぞれ、そのアプリケーションを破棄するか又はそのアプリケーションがオペレーティングシステム２１０又は１１０の標準的な動作環境内で実行することを可能にするかのいずれかを行うように構成され得る。いくつかの実施形態では、セキュリティモジュール２１４は、オペレーティングシステム２１０の一部であってもよく、又はコンピュータシステム２００のアプリケーションの一部であってもよく、又はそれらのいくつかの組み合わせであってもよい。
【００３４】
修正、追加、又は省略は、本開示の範囲から逸脱することなくコンピュータシステム２００に対して行われてもよい。例えば、図２にはそれぞれ単一の構成要素として示されているが、コンピュータシステム２００の構成要素２０２〜２１４のいずれかは、集合的に機能し、通信可能に結合された複数の同様の構成要素を含んでもよい。更に、単一のコンピュータシステムとして示されているが、コンピュータシステム２００は、クラウドコンピューティング環境、マルチテナンシー環境、又は仮想化環境などで共にネットワーク化される複数の物理又は仮想コンピュータシステムを含んでもよいことが理解される。
【００３５】
図３は、分離されたアプリケーションを有する分離層内に分離されていないアプリケーションを組み込むための例示的な方法３００のフローチャートである。方法３００は、いくつかの実施形態では、図１のクライアント１０２又はサーバー１０４などのデバイス又はシステムによって実行されてもよい。これら及び他の実施形態では、方法３００は、１つ以上の非一時的コンピュータ可読媒体に記憶された１つ以上のコンピュータ可読命令に基づいて、１つ以上のプロセッサによって実行されてもよい。次に、方法３００を図１及び図３に関連して説明する。
【００３６】
ブロック３０２において、第１のアプリケーションは、潜在的に悪意のあるアプリケーションとして識別され得る。例えば、図１の分離モジュール１１４は、ブロック３０２において、アプリケーション１０８ａを潜在的に悪意のあるアプリケーションとして識別し得る。悪意のあるアプリケーションは、例えば、スパイウェア、ウイルス、ワーム、論理爆弾、トラップドア、トロイの木馬、Ｒｅｍｏｔｅ  Ａｄｍｉｎ  Ｔｒｏｊａｎ（ＲＡＴ）、マルウェア、悪意のあるモバイルコード、悪意のあるフォント、及びルートキットのうちの１つ以上を含むアプリケーションであり得る。
【００３７】
ブロック３０４において、第１のアプリケーションは、第１のアプリケーションを分離層内で仮想化された第１のアプリケーションとして実行することによって分離され得る。例えば、図１の分離モジュール１１４は、ブロック３０４において、アプリケーション１０８ａを分離層１１６内の仮想化されたアプリケーション１２０ａとして実行することによって、アプリケーション１０８ａを分離することができる。
【００３８】
いくつかの実施形態では、分離層は、その中で実行している任意のアプリケーションが、分離層に関連付けられたオペレーティングシステムを修正すること、及び／又は分離層の外側で実行している任意のアプリケーションと通信することを防止してもよい。例えば、図１の分離層１１６は、その中で実行している仮想化されたアプリケーション１２０ａ及び１２０ｂのうちのいずれかが、分離層１１６に関連付けられたオペレーティングシステム１１０を修正することを防止してもよい。オペレーティングシステム１１０は、例えば、分離層１１６がオペレーティングシステム１１０の標準的な特徴であることにより、又は分離層１１６自体がオペレーティングシステム１１０によって提供される標準的な動作環境で実行しているアプリケーションであることにより、分離層１１６に関連付けられてもよい。別の実施例では、図１の分離層１１６は、その中で実行している仮想化されたアプリケーション１２０ａ及び１２０ｂのうちのいずれかが、分離層１１６の外側で実行しているアプリケーション１０８ａ〜１０８ｎと通信することを防止してもよい。
【００３９】
ブロック３０６において、仮想化された第１のアプリケーションから、分離層内で実行していない第２のアプリケーションとオブジェクトを共有する要求が受信され得る。例えば、図１の分離モジュール１１４は、ブロック３０６において、仮想化されたアプリケーション１２０ａから、分離層１１６内で実行していないアプリケーション１０８ｂとオブジェクト１１２ａを共有する要求を受信し得る。この実施例では、アプリケーション１０８ｂは、オペレーティングシステム１１０によって提供される標準的な動作環境で実行している、又は現在実行していない、分離されていないアプリケーションであってもよい。
【００４０】
更に、いくつかの実施形態では、オブジェクトは、ファイルシステムに記憶されたファイル、ファイルシステム、ネットワーク接続、メモリの一部分、又はリモートプロシージャコールであってもよい。これらの実施形態では、仮想化された第１のアプリケーションから受信された対応する要求として、それぞれ、仮想の第１のアプリケーション及び第２のアプリケーションがファイルシステム内のファイルにアクセスして修正することを可能にする要求、仮想の第１のアプリケーション及び第２のアプリケーションがファイルシステム内の１つ以上のファイルにアクセスして修正することを可能にする要求、仮想の第１のアプリケーション及び第２のアプリケーションがネットワーク接続を介して通信することを可能にする要求、仮想の第１のアプリケーション及び第２のアプリケーションがメモリの一部分にアクセスして修正することを可能にする要求、又は仮想の第１のアプリケーション及び第２のアプリケーションがリモートプロシージャコールを実行することを可能にする要求が挙げられ得る。
【００４１】
決定ブロック３０８において、第２のアプリケーションがプライベートアプリケーションとしてセキュリティポリシーに定義されているか否か、又はオブジェクトがプライベートオブジェクトとしてセキュリティポリシーに定義されているか否かが判定され得る。いくつかの実施形態では、セキュリティポリシーは、何らかの潜在的に悪意のあるアプリケーションによってアクセスされることがないアプリケーション及び／又はオブジェクトをプライベートとして定義してもよい。定義されている場合（決定ブロック３０８で「はい」）、ブロック３１０において、要求は拒否され得る。定義されていない場合（決定ブロック３０８で「いいえ」）、方法はブロック３１２〜３１８に進み得る。例えば、図１の分離モジュール１１４は、決定ブロック３０８において、第２のアプリケーションがプライベートアプリケーションとしてセキュリティポリシー１１８に定義されているか否か、又はオブジェクト１１２ａがプライベートオブジェクトとしてセキュリティポリシー１１８に定義されているか否かを判定し得る。定義されている場合（決定ブロック３０８で「はい」）、分離モジュール１１４は、ブロック３１０において、ブロック３０６で仮想化されたアプリケーション１２０ａから受信した、オブジェクト１１２ａをアプリケーション１０８ｂと共有する要求を拒否し得る。あるいは、定義されていない場合（決定ブロック３０８で「いいえ」）、分離モジュール１１４は、方法３００のブロック３１２〜３１８に進み得る。
【００４２】
ブロック３１２において、第２のアプリケーションの少なくとも一部分は、分離層内の仮想化された第２のアプリケーションとして、リアルタイムで実行され得る。例えば、分離モジュール１１４は、ブロック３１２において、分離層１１６内の仮想化されたアプリケーション１２０ｂとしてアプリケーション１０８ｂの少なくとも一部分をリアルタイムで実行し得る。この実施例では、例えば、ブロック３０６において、アプリケーション１０８ｂの機能の一部分のみが仮想化されたアプリケーション１２０ａによって要求されているため、又はアプリケーション１０８ｂの機能の一部分のみが仮想化されたアプリケーション１２０ａから受信した要求に関連するため、アプリケーション１０８ｂの一部分のみが、仮想化されたアプリケーション１２０ｂとして実行され得る。
【００４３】
ブロック３１４において、仮想化されたオブジェクトは、分離層内のオブジェクトに基づいて作成され得る。例えば、分離モジュール１１４は、ブロック３１４において、分離層１１６内のオブジェクト１１２ａに基づいて仮想化されたオブジェクト１２２を作成し得る。
【００４４】
ブロック３１６において、仮想化されたオブジェクトは、分離層内の仮想化された第１のアプリケーションと仮想化された第２のアプリケーションとの間で共有されてもよい。例えば、分離モジュール１１４は、ブロック３１６において、仮想化されたアプリケーション１２０ａと仮想化されたアプリケーション１２０ｂとの間で仮想化されたオブジェクト１２２を共有し得る。
【００４５】
ブロック３１８において、仮想化された第１のアプリケーション及び／又は仮想化された第２のアプリケーションは、分離層の外側のオブジェクトを修正することなく、分離層内の仮想化されたオブジェクトを修正することを可能にされ得る。例えば、分離モジュール１１４は、ブロック３１８において、仮想化されたアプリケーション１２０ａ及び／又は仮想化されたアプリケーション１２０ｂが、分離層１１６の外側にある対応するオブジェクト１１２ａを修正することなく、分離層１１６の内側にある仮想化されたオブジェクト１２２を修正することを可能にし得る。仮想化されたオブジェクト１２２の修正は、オブジェクト１１２ａなどの対応する実際のオブジェクトの修正よりも少ないセキュリティの脅威をもたらし得る。
【００４６】
このように、いくつかの実施形態では、方法３００を用いて、分離されたアプリケーションを有する分離層内に分離されていないアプリケーションを組み込むことができる。いくつかの実施形態では、分離されていないアプリケーション及び関連オブジェクトを分離層内に組み込むことにより、分離層は、潜在的に悪意のあるアプリケーションを実行し、監視する、より現実的な環境になり得る。いくつかの実施形態では、分離されたアプリケーションは、分離されてないアプリケーション及びそれがアクセスする関連オブジェクトが、現実のアプリケーション及び現実のオブジェクトの実際に仮想化された形態であることを更に認識しなくてもよい。このようにして、分離されたアプリケーションは、分離環境においてより現実的に機能することが可能であり得、分離されたアプリケーションの監視を可能にし得る一方で、分離層の外側で機能する通常の方法と同様に機能する。
【００４７】
方法３００のブロックは、別個のブロックとして図３に図示されているが、所望の実装に応じて、追加のブロックに分割、より少ないブロックに結合、再配列、拡張、又は削除され得る。例えば、いくつかの実施形態では、ブロック３０２は、方法３００から削除されてもよい。追加的に又は代替的に、ブロック３０８及び３１０は、方法３００から削除されてもよく、その場合、方法３００はブロック３０６からブロック３１２に直接進むことができる。追加的に又は代替的に、ブロック３１８は、方法３００から削除されてもよい。したがって、いくつかの実施形態では、方法３００は、ブロック３０４、３０６、３１２、３１４、及び３１６のみを含んでもよい。更に、いくつかの実施形態では、方法３００は、複数の分離されたアプリケーション、複数の分離されていないアプリケーション、及び／又は複数の共有されたオブジェクトを含んでもよい。したがって、単一の分離されたアプリケーション、単一の分離されていないアプリケーション、及び単一の共有されたオブジェクトの方法３００における考察は、１つの例示的な実施形態にすぎず、これら３つの構成要素のうちのいずれかの２つ以上を有する実施形態も用いられ得る。
【００４８】
更に、方法３００は、コンピュータシステムの機能を改善し得ることが理解される。例えば、潜在的に悪意のあるアプリケーションは、分離層１１６内に分離され得、次いで分離されていないアプリケーション及び関連オブジェクトは、仮想化された形態で分離層１１６内に組み込まれ得、それゆえ、分離されたアプリケーションは分離環境内でより現実的に機能することを可能になるため、図１のクライアント１０２の機能は、それ自体が方法３００によって改善され得る。このようにして、分離されたアプリケーションによる分離層の外側のオブジェクト又はアプリケーションにアクセスする要求を単に拒否する従来の分離層とは異なり、分離されたアプリケーションが分離層の外側で機能する方法と同様に機能する一方で、分離されたアプリケーションの監視が実施され得る。
【００４９】
また、従来の分離層構成では、分離層の外側のいずれのアプリケーション又はオブジェクトも、分離されたアプリケーションからアクセスすることができないため、方法３００は、少なくとも悪意のあるアプリケーション検出の技術分野を改善することができる。本明細書に開示される分離層が、少なくとも仮想化された形態で、分離されていないアプリケーションとオブジェクトを共有する能力は、分離されたアプリケーションのより現実的な実行を可能にし、それにより、分離されたアプリケーションが実際に悪意のあるアプリケーションであるか否かに関するより正確な判定が可能になり得る。
【００５０】
上述のように、本明細書に記載される実施形態は、以下でより詳細に論じられるように、様々なコンピュータハードウェア又はソフトウェアモジュールを含む、専用又は汎用コンピュータ（例えば、図２のプロセッサ２０２）の使用を含んでもよい。更に、上述のように、本明細書に記載される実施形態は、そこに記憶されたコンピュータ実行可能命令若しくはデータ構造を搬送する又は有するためのコンピュータ可読媒体（例えば、図２のメモリ２０４又はファイルシステム２０６）を使用して実装されてもよい。
【００５１】
いくつかの実施形態では、本明細書に記載される異なる構成要素及びモジュールは、コンピューティングシステム上で（例えば、別個のスレッドとして）実行するオブジェクト又はプロセスとして実装されてもよい。本明細書に記載されている方法のいくつかは、一般に、ソフトウェア（汎用ハードウェアに記憶され、かつ／又は実行される）に実装されるものとして記載されているが、特定のハードウェア実装、又はソフトウェアと特定のハードウェア実装との組み合わせもまた可能であり、企図される。
【００５２】
一般的な実施によれば、図面に例示される様々な特徴は、縮尺どおりに描かれていない場合がある。本開示で提示される図は、任意の特定の装置（例えば、デバイス、システムなど）又は方法の実際の眺めであることを意図するものではなく、本開示の様々な実施形態を説明するために用いられる単に例示的な表現にすぎない。したがって、明確にするために、様々な特徴の寸法を任意に拡大又は縮小する場合がある。加えて、図面の一部は、明確にするために簡略化される場合がある。したがって、図面は、所与の装置（例えば、デバイス）の構成要素の全て、又は特定の方法の全ての動作を図示しない場合がある。
【００５３】
本明細書で使用される用語、特に添付の「特許請求の範囲」において使用される用語（例えば、添付の特許請求の範囲の本文）は、一般に「限定されない」用語として意図される（例えば、用語「含む（including）」は、「限定するものではないが、含む」と解釈されるべきであり、用語「有する」は、「少なくとも有する」と解釈されるべきであり、用語「含む（includes）」は、「限定するものではないが、含む」と解釈されるべきである）。
【００５４】
更に、導入された請求項の記載の具体的な数が意図される場合、そのような意図は、請求項に明示的に記載され、そのような記載がない場合には、そのような意図は存在しない。例えば、理解を助けるために、以下の「添付の特許請求の範囲」は、請求項の記載を導入するための導入句「少なくとも１つの」及び「１つ以上の」の使用を含む場合がある。しかしながら、このような句の使用は、同じ請求項が、導入句「１つ以上の」又は「少なくとも１つの」、及び「ａ」又は「ａｎ」などの不定冠詞含む（例えば、「ａ」及び／又は「ａｎ」は、「少なくとも１つの」又は「１つ以上の」を意味すると解釈されるべきである）場合であっても、不定冠詞「ａ」又は「ａｎ」による請求項の記載の導入が、そのような導入された請求項の記載を含む任意の特定の請求項を、そのような１つの記載のみを含む実施形態に限定するものと解釈されるべきではなく、同じことが、請求項の記載を導入するために使用される定冠詞の使用についても当てはまる。
【００５５】
加えて、導入された請求項の記載の具体的な数が明示的に記載されている場合であっても、そのような記載は、少なくとも記載された数（例えば、他の修飾語句を伴わない「２つの記載」のそのままの記載は、少なくとも２つの記載、又は２つ以上の記載を意味する）を意味すると解釈されるべきであることが理解される。更に、「Ａ、Ｂ、及びＣなどのうちの少なくとも１つの」又は「Ａ、Ｂ、及びＣなどのうちの１つ以上の」と類似した慣例が使用される場合、一般に、このような構成は、Ａのみ、Ｂのみ、Ｃのみ、Ａ及びＢを一緒に、Ａ及びＣを一緒に、Ｂ及びＣを一緒に、又はＡ、Ｂ、及びＣを一緒に、などを含むことを意図する。例えば、用語「及び／又は」の使用は、このように解釈されることを意図する。
【００５６】
更に、発明の概要、発明を実施するための形態、特許請求の範囲、又は図面にかかわらず、２つ以上の代替用語を提示する任意の離接語又は句は、用語のうちの１つ、用語のいずれか、又は両方の用語を含む可能性を企図するものと理解されるべきである。例えば、句「Ａ又はＢ」は、「Ａ」又は「Ｂ」又は「Ａ及びＢ」の可能性を含むと理解されるべきである。
【００５７】
加えて、用語「第１」、「第２」、「第３」などの使用は、特定の順序又は要素の数を暗示するために必ずしも本明細書で使用されるものではない。一般に、用語「第１」、「第２」、「第３」などは、異なる要素を一般識別子と区別するために使用される。用語「第１」、「第２」、「第３」などが特定の順序を暗示することを示すものがない限り、これらの用語は、特定の順序を暗示すると理解されるべきではない。更に、用語「第１」、「第２」、「第３」などが要素の特定の数を暗示することを示すものがない限り、これらの用語は、要素の特定の数を暗示すると理解されるべきではない。例えば、第１のウィジェットは、第１の側を有するものとして説明されてもよく、第２のウィジェットは第２の側を有するものとして説明されてもよい。第２のウィジェットに対する用語「第２の側」の使用は、第１のウィジェットの「第１の側」から第２のウィジェットのそのような側を区別することであり、第２のウィジェットが２つの側面を有することを暗示することであり得ない。
【００５８】
上記の記載は、説明を目的として特定の実施形態を参照して記載してきた。しかしながら、上述の例示的な考察は、包括的であること、又は請求される本発明を、開示される正確な形態に限定することを意図するものではない。上述の教示を考慮して、多くの修正及び変形が可能である。実施形態は、実際的な適用を説明するために選択かつ記載され、それによって、他の当業者が、企図される特定の用途に好適であり得る様々な修正を用いて、請求される本発明及び様々な実施形態を利用することを可能にする。
【図１】
2020510266.tif 000003
【図２】
2020510266.tif 000004
【図３Ａ】
2020510266.tif 000005
【図３Ｂ】
2020510266.tif 000006
【手続補正書】
【提出日】令和1年9月20日(2019.9.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
分離されたコンピュータアプリケーションを有する分離層内に分離されていないアプリケーションを組み込むためのコンピュータにより実装される方法であって、前記方法の少なくとも一部分は、少なくとも１つのプロセッサを含むコンピューティングデバイスによって実行され、前記方法は、
第１の非オペレーティングシステム（非ＯＳ）コンピュータアプリケーションを［［ａｎ］］前記分離層内の仮想化された第１の非ＯＳコンピュータアプリケーションとして実行することによって、前記第１の非ＯＳコンピュータアプリケーションを分離することと、
前記仮想化された第１の非ＯＳコンピュータアプリケーションから、前記分離層内で実行していない第２の非ＯＳコンピュータアプリケーションとコンピュータオブジェクトを共有する要求を受信することと、
前記要求を受信することに応答して、
前記第２の非ＯＳコンピュータアプリケーションの少なくとも一部分を、前記分離層内の仮想化された第２の非ＯＳコンピュータアプリケーションとしてリアルタイムで実行することと、
前記分離層内の前記コンピュータオブジェクトに基づいて仮想化されたコンピュータオブジェクトを作成することと、
前記分離層内の前記仮想化された第１の非ＯＳコンピュータアプリケーションと前記仮想化された第２の非ＯＳコンピュータアプリケーションとの間で、前記仮想化されたコンピュータオブジェクトを共有することと、を含む、方法。
【請求項２】
前記第１の非ＯＳコンピュータアプリケーションを分離することの前に、前記第１の非ＯＳコンピュータアプリケーションを潜在的に悪意のある非ＯＳコンピュータアプリケーションとして識別することを更に含む、請求項１に記載の方法。
【請求項３】
前記要求を受信することに応答して、前記仮想化された第１の非ＯＳコンピュータアプリケーション及び／又は前記仮想化された第２の非ＯＳコンピュータアプリケーションが、前記分離層の外側の前記コンピュータオブジェクトを修正することなく、前記分離層内の前記仮想化されたコンピュータオブジェクトを修正することを可能にすることを更に含む、請求項１に記載の方法。
【請求項４】
前記分離層が、その中で実行している任意の非ＯＳコンピュータアプリケーションが前記分離層に関連付けられたオペレーティングシステムを修正することを防止する、請求項１に記載の方法。
【請求項５】
前記分離層が、その中で実行している任意の非ＯＳコンピュータアプリケーションが前記分離層の外側で実行している任意の非ＯＳコンピュータアプリケーションと通信することを防止する、請求項１に記載の方法。
【請求項６】
前記コンピュータオブジェクトが、ファイルシステム内に記憶されたファイルであり、
前記仮想化された第１の非ＯＳコンピュータアプリケーションから受信される前記要求は、前記仮想の第１の非ＯＳコンピュータアプリケーション及び前記第２の非ＯＳコンピュータアプリケーションが前記ファイルシステム内の前記ファイルにアクセスして修正することを可能にする要求を含む、請求項１に記載の方法。
【請求項７】
前記コンピュータオブジェクトが、ファイルシステムであり、
前記仮想化された第１の非ＯＳコンピュータアプリケーションから受信される前記要求は、前記仮想の第１の非ＯＳコンピュータアプリケーション及び前記第２の非ＯＳコンピュータアプリケーションが前記ファイルシステム内の１つ以上のファイルにアクセスして修正することを可能にする要求を含む、請求項１に記載の方法。
【請求項８】
前記コンピュータオブジェクトが、ネットワーク接続であり、
前記仮想化された第１の非ＯＳコンピュータアプリケーションから受信される前記要求は、前記仮想の第１の非ＯＳコンピュータアプリケーション及び前記第２の非ＯＳコンピュータアプリケーションが前記ネットワーク接続を介して通信することを可能にする要求を含む、請求項１に記載の方法。
【請求項９】
前記コンピュータオブジェクトは、メモリの一部分であり、
前記仮想化された第１の非ＯＳコンピュータアプリケーションから受信される前記要求は、前記仮想の第１の非ＯＳコンピュータアプリケーション及び前記第２の非ＯＳコンピュータアプリケーションがメモリの前記部分にアクセスして修正することを可能にする要求を含む、請求項１に記載の方法。
【請求項１０】
前記コンピュータオブジェクトが、リモートプロシージャコールであり、
前記仮想化された第１の非ＯＳコンピュータアプリケーションから受信される前記要求は、前記仮想の第１の非ＯＳコンピュータアプリケーション及び前記第２の非ＯＳコンピュータアプリケーションが前記リモートプロシージャコールを実行することを可能にする要求を含む、請求項１に記載の方法。
【請求項１１】
分離されたコンピュータアプリケーションを有する分離層内に分離されていないアプリケーションを組み込むためのコンピュータにより実装される方法であって、前記方法の少なくとも一部分は、少なくとも１つのプロセッサを含むコンピューティングデバイスによって実行され、前記方法は、
第１の非オペレーティングシステム（非ＯＳ）コンピュータアプリケーションを潜在的に悪意のある非ＯＳコンピュータアプリケーションとして識別することと、
前記第１の非ＯＳコンピュータアプリケーションを［［ａｎ］］前記分離層内の仮想化された第１の非ＯＳコンピュータアプリケーションとして実行することによって、前記第１の非ＯＳコンピュータアプリケーションを分離することと、
前記仮想化された第１の非ＯＳコンピュータアプリケーションから、前記分離層内で実行していない第２の非ＯＳコンピュータアプリケーションとコンピュータオブジェクトを共有する要求を受信することと、
前記要求を受信することに応答して、
前記第２の非ＯＳコンピュータアプリケーションがプライベート非ＯＳコンピュータアプリケーションとしてセキュリティポリシーに定義されていないこと、及び前記コンピュータオブジェクトがプライベートコンピュータオブジェクトとして前記セキュリティポリシーに定義されていないことをリアルタイムで検証することと、
前記第２の非ＯＳコンピュータアプリケーションの少なくとも一部分を、前記分離層内の仮想化された第２の非ＯＳコンピュータアプリケーションとしてリアルタイムで実行することと、
前記分離層内の前記コンピュータオブジェクトに基づいて仮想化されたコンピュータオブジェクトを作成することと、
前記分離層内の前記仮想化された第１の非ＯＳコンピュータアプリケーションと前記仮想化された第２の非ＯＳコンピュータアプリケーションとの間で、前記仮想化されたコンピュータオブジェクトを共有することと、
前記仮想化された第１の非ＯＳコンピュータアプリケーション及び／又は前記仮想化された第２の非ＯＳコンピュータアプリケーションが、前記分離層の外側の前記コンピュータオブジェクトを修正することなく、前記分離層内の前記仮想化されたコンピュータオブジェクトを修正することを可能にすることと、を含む、方法。
【請求項１２】
前記分離層は、任意の非ＯＳコンピュータアプリケーションが前記分離層に関連付けられたオペレーティングシステムを修正すること、及び前記分離層の外側で実行している任意の非ＯＳコンピュータアプリケーションと通信することを防止する、請求項１１に記載の方法。
【請求項１３】
リケーションによってアクセスされることがない非ＯＳコンピュータアプリケーション及びコンピュータオブジェクトをプライベートとして定義する、請求項１１に記載の方法。
【請求項１４】
前記コンピュータオブジェクトが、ファイルシステム内に記憶されたファイルであり、
前記仮想化された第１の非ＯＳコンピュータアプリケーションから受信される前記要求は、前記仮想の第１の非ＯＳコンピュータアプリケーション及び前記第２の非ＯＳコンピュータアプリケーションが前記ファイルシステム内の前記ファイルにアクセスして修正することを可能にする要求を含む、請求項１１に記載の方法。
【請求項１５】
前記コンピュータオブジェクトが、ネットワーク接続であり、
前記仮想化された第１の非ＯＳコンピュータアプリケーションから受信される前記要求は、前記仮想の第１の非ＯＳコンピュータアプリケーション及び前記第２の非ＯＳコンピュータアプリケーションが前記ネットワーク接続を介して通信することを可能にする要求を含む、請求項１１に記載の方法。
【国際調査報告】
2020510266.tif 000007