(57)【特許請求の範囲】
【請求項１】
プログラムと関連する少なくとも一つの特性を含むデータを受信するステップと、
複数の利用可能な機械学習のモデルのうちの、少なくとも一つの機械学習のモデルを選択するステップと、
受信したデータに基づき、少なくとも一つの機械学習のモデルを用いて、プログラムを実行させるかどうか、若しくはプログラムを実行することを継続させるかどうか、判別するステップと、
プログラムが実行され得ると判別されればプログラムの少なくとも一部を実行させるステップと、
プログラムが実行され得ないと判別されれば、プログラムの少なくとも一部を、実行させること、若しくは実行することを継続させることを、回避するステップと
を含み、
前記少なくとも一つの機械学習のモデルを選択するステップは、特性コレクタにより提供される特性に、又は、コンピュータリソースの現在の利用可能性若しくは欠乏性に、基礎を置くものである、
コンピュータ実装の方法。
【請求項２】
前記少なくとも一つの機械学習のモデルが、複数の様々なプログラムから導出される特性データを用いて訓練される、請求項１に記載の方法。
【請求項３】
前記少なくとも一つの機械学習のモデルが、教師あり学習を用いて訓練される、請求項１又は２に記載の方法。
【請求項４】
前記少なくとも一つの機械学習のモデルが、教師なし学習を用いて訓練される、請求項１〜３のうちのいずれか一に記載の方法。
【請求項５】
更に、特性コレクタによりプログラムの前記少なくとも一つの特性を収集するステップを含む、請求項１〜４のうちのいずれか一に記載の方法。
【請求項６】
前記特性コレクタが、予め特定された時点における特性を収集する、請求項５に記載の方法。
【請求項７】
前記予め特定された時点は、プログラムの実行のときである、請求項６に記載の方法。
【請求項８】
前記少なくとも一つの特性は、プログラムの実行の間における、時点での計測と進行中の計測との組み合わせを含む、請求項５〜７のうちのいずれか一に記載の方法。
【請求項９】
前記少なくとも一つの特性は、プログラムの実行に先立って受動的に収集される動作特性を含み、
前記方法は、更に、キャッシュ内に動作特性を記録するステップを含む、
請求項５〜８のうちのいずれか一に記載の方法。
【請求項１０】
前記少なくとも一つの特性は、プログラムを実行するための、システムの動作環境を特徴付ける少なくとも一つの動作特性を含む、請求項１〜９のうちのいずれか一に記載の方法。
【請求項１１】
前記少なくとも一つの動作特性は、プログラムの評価、文脈情報、システム状態、システム動作統計、タイムシリーズデータ、現存のプログラム、オペレーティングシステムに関するディテール、プログラムのランステータス、若しくは、構成変数から成るグループから選択される、請求項１０に記載の方法。
【請求項１２】
前記少なくとも一つの特性は、プログラムを特徴付ける少なくとも一つの静的特性を含む、請求項１〜１１のうちのいずれか一に記載の方法。
【請求項１３】
前記少なくとも一つの静的特性は、プログラムについての計測、プログラムの構造エレメント、若しくは、プログラムのコンテンツから成るグループから選択される、請求項１２に記載の方法。
【請求項１４】
前記少なくとも一つの特性は、プログラムの実行を特徴付ける少なくとも一つの動的特性を含む、請求項１〜１３のうちのいずれか一に記載の方法。
【請求項１５】
前記少なくとも一つの動的特性は、オペレーティングシステムとの相互作用、サブルーチンの実行、プロセスの状態、プログラム若しくはシステムの実行の統計、又は、プログラムと関連するイベントの発生の順序から成るグループから選択される、請求項１４に記載の方法。
【請求項１６】
前記少なくとも一つの特性は、プログラムを実行するためのシステムの外部のソースからの、少なくとも一つの外部特性を含む、請求項１〜１５のうちのいずれか一に記載の方法。
【請求項１７】
前記少なくとも一つの外部特性は、少なくとも一つのリモートデータベース若しくは他のデータソースから取得される、請求項１６に記載の方法。
【請求項１８】
前記少なくとも一つの外部特性は、バイナリ、連続、及び、カテゴリから成るグループから選択されるフォーマットを取る、請求項１〜１７のうちのいずれか一に記載の方法。
【請求項１９】
前記少なくとも一つの機械学習のモデルは、機械学習のモデルのアンサンブルを含む、請求項１〜１８のうちのいずれか一に記載の方法。
【請求項２０】
前記機械学習のモデルのアンサンブルは、ニューラルネットワークモデル、サポートベクターマシンモデル、スコアカードモデル、ロジスティック回帰モデル、ベイジアンモデル、若しくはデシジョンツリーモデルから成るグループから選択される、請求項１９に記載の方法。
【請求項２１】
二つ若しくはそれ以上の機械学習のモデルのアウトプットが組み合わされ、プログラムを実行させるかどうか若しくは実行することを継続させるかどうか、判別するのに用いられる、請求項１９に記載の方法。
【請求項２２】
前記判別するステップは、プログラムを実行するための安全性のレベルを特徴付けるスコアを生成するステップを含み、
生成されるスコアは、プログラムの少なくとも一部を実行させるかどうか、判別するのに用いられる、請求項１〜２１のうちのいずれか一に記載の方法。
【請求項２３】
前記判別するステップは、生成されるスコアのための信頼性のレベルを生成するステップを含み、
前記生成される信頼性のレベルは、プログラムの少なくとも一部を実行させるかどうか、判別するのに用いられる、請求項２２に記載の方法。
【請求項２４】
前記プログラムの少なくとも一部を実行させること若しくは実行することを継続させることを回避するステップは、プログラムの少なくとも一部がメモリ内にロードすることを阻止するステップを含む、請求項１〜２３のうちのいずれか一に記載の方法。
【請求項２５】
更に、プログラムと関連する動的ライブラリが不安全であることを判別するステップを含み、
前記プログラムの少なくとも一部を実行させること若しくは実行することを継続させることを回避するステップは、前記動的ライブラリがメモリ内にロードすることを阻止するステップを含む、請求項１〜２４のうちのいずれか一に記載の方法。
【請求項２６】
前記プログラムの少なくとも一部を実行させること若しくは実行することを継続させることを回避するステップは、プログラムと関連する従前ロードされたモジュールをアンロードするステップを含む、請求項１〜２５のうちのいずれか一に記載の方法。
【請求項２７】
前記プログラムの少なくとも一部を実行させること若しくは実行することを継続させることを回避するステップは、プログラムが稼働している間にプログラムを無効にするステップを含む、請求項１〜２６のうちのいずれか一に記載の方法。
【請求項２８】
前記プログラムの少なくとも一部を実行させること若しくは実行することを継続させることを回避するステップは、プログラムが稼働するに先立ち、又はプログラムが稼働を継続する前に、プログラムに関する制約を実装するステップを含む、請求項１〜２７のうちのいずれか一に記載の方法。
【請求項２９】
前記プログラムの少なくとも一部を実行させること若しくは実行することを継続させることを回避するステップは、プログラムの少なくとも一部を隔離するステップを含む、請求項１〜２８のうちのいずれか一に記載の方法。
【請求項３０】
前記プログラムの少なくとも一部を実行させること若しくは実行することを継続させることを回避するステップは、プログラムの少なくとも一部を削除するステップを含む、請求項１〜２９のうちのいずれか一に記載の方法。
【請求項３１】
前記プログラムの少なくとも一部を実行させること若しくは実行することを継続させることを回避するステップは、プログラムが個別の動作を実行することを回避するステップを含む、請求項１〜３０のうちのいずれか一に記載の方法。
【請求項３２】
前記プログラムの少なくとも一部を実行させること若しくは実行することを継続させることを回避するステップは、プログラムのアクセスのレベルを修正するステップを含む、請求項１〜３１のうちのいずれか一に記載の方法。
【請求項３３】
前記プログラムの少なくとも一部を実行させること若しくは実行することを継続させることを回避するステップは、試みられる動作を選択的に阻止するステップを含む、請求項１〜３２のうちのいずれか一に記載の方法。
【請求項３４】
前記プログラムの少なくとも一部を実行させること若しくは実行することを継続させることを回避するステップは、試みられる動作を回避してその代わりに別途の動作を引き起こすステップを含む、請求項１〜３３のうちのいずれか一に記載の方法。
【請求項３５】
少なくとも一つのコンピュータデバイスの一部を形成する少なくとも一つのハードウエアデータプロセッサにより実行されると、請求項１〜３４のうちのいずれか一に記載の方法に結果として成る命令を記録するコンピュータプログラム記録媒体。
【請求項３６】
少なくとも一つのデータプロセッサと、及び、
前記少なくとも一つのデータプロセッサにより実行されると、請求項１〜３４のうちのいずれか一に記載の方法に結果として成る命令を記録する、メモリとを含む、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本願は、２０１４年２月７日出願の米国特許仮出願第９１／９３７３７９号の優先権を主張するものであり、その内容は参照の上本明細書に全て組み込まれる。
【０００２】
技術分野
本明細書に記載の発明の要旨は、アンサンブル機械学習モデルを利用するアプリケーションを選択的に実行させる技術に関する。
【背景技術】
【０００３】
背景技術
コンピュータシステム上で稼動するプログラムのためのアプリケーション実行コントロールの従来技術は、コンピュータが特定のプログラムを安全に稼働するがどうか判別する、シグネチャのデータベースなどの、静的方法に依存する。現存のアプリケーションコントロールシステムは、これらのデータベースに対する頻繁の更新を要求し、このプロセスを管理するための重要なオーバヘッドを要求する。更に、実効的且つ正確に実行をコントロールするそれらの能力は、それらのデータベースが大きくなるにつれ、縮小する。そのようなアプローチは、重要なリソース（例えば、メモリ、ＣＰＵなど）を利用し、更に、高いマネジメントオーバヘッドを有する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の要旨は、即時の（即ち、リアルタイムなどの）プログラムの分析に基づいて、コンピュータがプログラムを実効的に稼働するかどうかを、コンピュータが判別し得ることに関する。このアプローチは、プログラム、コンピュータの現環境、及び外部ファクタから収集される静的及び動的特性の組み合わせに基づいて、リアルタイム識別を形成する、高度に訓練されたアンサンブル機械学習アルゴリズムを利用する。
【課題を解決するための手段】
【０００５】
一つの形態では、プログラムと関連する少なくとも一つの特性を含むデータが受信される（例えば、リモートデータソースから受信される、メモリ内にロードされる、ローカルの若しくは接続されたストレージからアクセスされる、など）。その後、受信したデータに基づき、少なくとも一つの機械学習のモデルを用いて、プログラムを実行させるかどうか、若しくは（既に実行しているのであれば）プログラムを実行することを継続させるかどうか、判別される。プログラムが実行され得ると判別されれば、プログラムを実行させる、若しくは実行することを継続させる。そうでなければ、プログラムが実行され得ないと判別されれば、プログラムは、実行させること、若しくは実行することを継続させることを、回避される。
【０００６】
利用される機械学習のモデルの一つ若しくはそれ以上が、複数の様々なプログラムから導出される特性データを用いて訓練され得る。更に若しくは一方で、機械学習のモデルの一つ若しくはそれ以上が、教師あり学習を用いて訓練され得る。更に若しくは一方で、機械学習のモデルの一つ若しくはそれ以上が、教師なし学習を用いて訓練され得る。
【０００７】
特性コレクタによりプログラムの前記少なくとも一つの特性が収集され得る。前記特性コレクタが、予め特定された時点（例えば、プログラムの実行の開始にて、又は、プログラムの実行に続いて）における特性を収集し得る。
【０００８】
特性コレクタにより収集される前記少なくとも一つの特性は、プログラムの実行の間における、時点での計測と進行中の計測との組み合わせを含み得る。特性コレクタにより収集される前記少なくとも一つの特性は、プログラムの実行に先立って受動的に収集される一つ若しくはそれ以上の動作特性を含み、それら動作特性は、キャッシュ内に記録され得る。
【０００９】
前記少なくとも一つの特性は、プログラムを実行するための、システムの動作環境を特徴付ける少なくとも一つの動作特性を含み得る。前記少なくとも一つの動作特性は、プログラムの評価、文脈情報、システム状態、システム動作統計、タイムシリーズデータ、現存のプログラム、オペレーティングシステムに関するディテール、プログラムのランステータス、及び、構成変数の一つ若しくはそれ以上を含み得る。
【００１０】
前記少なくとも一つの特性は、プログラムを特徴付ける少なくとも一つの静的特性を含み得る。前記少なくとも一つの静的特性は、例えば、プログラムについての計測、プログラムの構造エレメント、若しくは、プログラムのコンテンツであればよい。
【００１１】
前記少なくとも一つの特性は、プログラムの実行を特徴付ける少なくとも一つの動的特性を含み得る。前記少なくとも一つの動的特性は、例えば、オペレーティングシステムとの相互作用、サブルーチンの実行、プロセスの状態、プログラム若しくはシステムの実行の統計、又は、プログラムと関連するイベントの発生の順序であればよい。
【００１２】
前記少なくとも一つの特性は、プログラムを実行するためのシステムの外部のソースからの、少なくとも一つの外部特性を含み得る。前記少なくとも一つの外部特性は、例えば、少なくとも一つのリモートデータベース若しくは他のデータソースから取得され得る。
【００１３】
少なくとも一つの特性は、バイナリ、連続、及び、カテゴリから成るグループから選択されるフォーマットを取り得る。
【００１４】
前記少なくとも一つの機械学習のモデルは、機械学習のモデルのアンサンブルを含み得る。前記機械学習のモデルのアンサンブルは、ニューラルネットワークモデル、サポートベクターマシンモデル、スコアカードモデル、ロジスティック回帰モデル、ベイジアンモデル、デシジョンツリーモデル、若しくは他の適用可能な分類モデルなどの、一つ若しくはそれ以上のモデルを含み得る。二つ若しくはそれ以上の機械学習のモデルのアウトプットが組み合わされ、プログラムを実行させるかどうか若しくは実行することを継続させるかどうか、判別するのに用いられ得る。
【００１５】
前記判別するステップは、プログラムを実行するための安全性のレベルを特徴付けるスコアを生成するステップを含み得る。生成されるスコアは、プログラムの少なくとも一部を実行させるかどうか、判別するのに用いられ得る。前記判別するステップは、生成されるスコアのための信頼性のレベルを生成するステップも含み得、前記生成される信頼性のレベルは、プログラムを実行させるかどうか、判別するのに用いられる。
【００１６】
前記プログラムを実行させること若しくは実行することを継続させることを回避するステップは、多数のアクションの少なくとも一つを含み得る。これらのアクションは、プログラムの少なくとも一部がメモリ内にロードすること、プログラムと関連する動的ライブラリが不安全であることを判別すること、プログラムと関連する前記動的ライブラリがメモリ内にロードすることを阻止すること、プログラムと関連する従前ロードされたモジュール（コードの一部など）をアンロードすること、プログラムが稼働している間にプログラムを無効にすること、プログラムが稼働するに先立ち、又はプログラムが稼働を継続する前に、プログラムに関する制約を実装すること、プログラムの少なくとも一部を隔離すること、又は、プログラムの少なくとも一部を削除することの、一つ若しくはそれ以上を含み得る。
【００１７】
ある場合には、前記プログラムを実行させること若しくは実行することを継続させることを回避するステップは、プログラムが個別の動作を実行することを回避するステップ、プログラムのアクセスのレベルを修正するステップ、試みられる動作を選択的に阻止するステップ、又は、試みられる動作を回避してその代わりに別途の動作を引き起こすステップの、一つ若しくはそれ以上を含み得る。
【００１８】
一つ若しくはそれ以上のコンピュータシステムの一つ若しくはそれ以上のデータプロセッサにより実行されると、少なくとも一つのデータプロセッサに、本明細書に記載の動作を実行させる命令を記録する持続性コンピュータプログラムプロダクト（即ち、物理的に具現化されたコンピュータプログラムプロダクト）も、開示されている。同様に、一つ若しくはそれ以上のデータプロセッサと、及び、一つ若しくはそれ以上のデータプロセッサと結合するメモリとを含む、コンピュータシステムも、開示されている。メモリは、少なくとも一つのデータプロセッサに、本明細書に記載の動作の一つ若しくはそれ以上を実行させる命令を、一時的に又は恒久的に記録し得る。更に、単独のコンピュータシステム内部か、若しくは、二つ若しくはそれ以上のコンピュータシステム間に分布されるかの、いずれかである一つ若しくはそれ以上データプロセッサにより、方法は実装され得る。そのようなコンピュータシステムは、接続され得、並びに、データ及び／又はコマンド若しくは他の命令などを、一つ又はそれ以上の接続や、複数のコンピュータシステムの一つ又はそれ以上の間の直接接続などを介して交換し得、一つ又はそれ以上の接続は、ネットワークに亘る接続（例えば、インターネット、無線ワイドエリアネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、有線ネットワーク、など）を含むが、それらに限定されない。
【発明の効果】
【００１９】
本明細書に記載の本発明の要旨は、多くの利点を提供する。例えば、本発明の要旨は、より迅速な識別を提供し、同時に、消費するメモリやプロセッサなどのリソースは殆ど無い。
【００２０】
本明細書に記載の本発明の要旨の一つ又はそれ以上の変形例の詳細は、添付の図面及
び以下の説明にて記載されている。本明細書に記載の本発明の要旨の他の特徴及び利点は、説明及び図面から、並びに請求項から、明白であろう。
【図面の簡単な説明】
【００２１】
【図１】図１は、アプリケーション実行コントロール識別を提供するのに用いられる要素を示すシステムブロック図である。
【図２】図２は、アンサンブル識別を特徴付ける図である。
【図３】図３は、少なくとも一つの機械学習モデルを用いる識別のための方法を示すプロセスフロー図である。
【発明を実施するための形態】
【００２２】
本発明の要旨は、幾つかの例にて、識別の実効的な方法を生成するための三つの主要な要素を用いて、実装され得る。この点において、識別は、特定のアプリケーション／アプリケーションモジュールが特定のコンピュータシステム上で稼働し得るかどうかに関する特徴を示す。これらの主要なソフトウエア要素は、図１の図表１００に示され、（特性コレクタと称されることもある）特性コレクションシステム１１０、識別エンジン１２０、及び実施システム１３０を、含み得る。特性コレクションシステム１１０は、プログラム、及び／又は、プログラムが実行されている若しくは実行されるべき環境を特徴付ける特性を収集する、又は、アクセスする。これらの特性は、プログラムが実行し得るかどうかに関する判別を行い得る識別エンジン１２０に通される。プログラムが実行されるべきではないと判別されれば、実施システム１３０は、アプリケーションが実行すること／実行を継続することを、回避するように作用する。
【００２３】
本明細書で用いる「特性」は、潜在的な稼動プログラムの黙示の安全性を計測するのに用いられ得る、任意の顕著なデータ／データポイントを含み得る。本明細書で用いる「プログラム」は、ユーザ若しくはシステムが実行することを望み、関連するデータメタデータを含み得る、実行可能なコンピュータコードの一つである。本明細書で用いる「識別」は、（プログラムを実行することを継続するか否か、を含む）プログラムが実行されるべきか否かを判別するプロセスである。本明細書で用いる「実施」は、識別の効果がコンピュータシステム内で実効的とされるプロセスである。本発明の要旨は、モデルに対する特定のインプットからの成果を判別するように規定される、特定の状況及び一つ若しくはそれ以上のアルゴリズムの、各々数学ベースの理解である一つ若しくはそれ以上の機械学習を利用し得る。複数の変形例では、概略、正確性を改善し若しくは変動を減少させる特定のやり方で利用される、モデルのコレクションである機械学習のアンサンブルが、用いられ得る。
【００２４】
本発明の要旨は、種々のやり方で従来のアプローチと異なるアプリケーションコントロールの実効的方法を提供する。従来のアプローチは、「ブラックリスト」のコンセプト、即ち、明確に認めないプログラムのセット、若しくは、「ホワイトリスト」のコンセプト、即ち、明確に認めるプログラムのセットのいずれかを、利用する。本発明の要旨は、当所の選択の基準として先行すること、及び、また代わりにシステムからの種々の特性を計測して、従前の訓練された機械学習のモデル及び／又は機械学習のモデルのアンサンブルに対してこれらを使用すること、の両方である。
【００２５】
機械学習のモデルのアンサンブルは、アプリケーションコントロールの前に、考案され訓練され得る。種々の機械言語アルゴリズムの予測の本質により、訓練されたモデルによって、安全な及び不安全なプログラムに対する「ファジー」マッチが可能になる。アンサンブル内でモデルを注意深く選択して訓練することにより、システムは、経時的な変化に対して弾性的に作用し得、「安全」若しくはその欠如と類似する、プログラムの動作内の小さい及び大きい変化を提供する。機械学習のモデルは、それが組み込むアルゴリズムにより特徴付けられ得、該アルゴリズムは、例として、ニューラルネットワーク、サポートベクターマシン、ロジスティック回帰、スコアカードモデル、ベイジアンアルゴリズム、及びデシジョンツリーを、含み得る。機械学習のモデルは、教師あり学習を用いて訓練され得、該教師あり学習では、所望のアウトプット値でラベル付けされたインプットサンプルの訓練のセットが、訓練のセット内では発生しないサンプルを正確に分類すべくモデルを調整し、又は、機械学習のモデルは、教師なし学習を用いて訓練され得、該教師なし学習では、アルゴリズムはラベル付けの無いデータ内の、隠れた構造を特定する。強化学習は、モデルを訓練するための第３のプロセスを表す。
【００２６】
図１の図面１に再び戻り、特性コレクタ１１０は、継続ベースで受動的特性を（操作上、動的に）識別エンジン１２０に送信し得る。識別エンジン１２０は、特定のデシジョンポイントにて特性コレクタ１２０から、実行などのポイントインタイム特性を要求し得る。これらのポイントインタイム特性は、プログラムの外部のコンピュータの状態、若しくは、外部ソースからの関連特性についての、観察を含み得る。識別エンジン１２０は、プログラムが実行するべきか判別し得る。実行が許されれば、プログラムは実行する。実行が許されなければ、実施システム１３０は、アプリケーションが実行されることを回避する。
【００２７】
図２は、オリジナルベクタ２１０がスコア付け２３０のために識別エンジン１２０へ通過され得るアンサンブル識別を特徴とする図面２００である。識別エンジン１２０は、モデルセレクタ２２０を使用して、稼動させる一つ若しくはそれ以上のモデル（この例では、モデルＡ、Ｂ、Ｃ）を選択し得る。モデルの選択は、特性コレクタ１１０により提供される特性、ユーザ構成、コンピュータリソースの現在の利用可能性若しくは欠乏性、及び／又は、他の状態の情報に、基礎を置き得る。個々のそれらモデルは、複数の可能なアルゴリズムで構成され得る。種々のアルゴリズム及びモデルのアウトプットは、（例えば、重み付けアレンジ若しくはモデルを用いて）スコア付けコンポーネント２３０内で組み合わされ得る。最終的なアウトプットは、結果を特徴付ける判別（若しくは場合によりスコア）及び信頼レベルであればよい。
【００２８】
特性収集は、時点と進行中の計測の組み合わせでよく、一般的なキャッシュ内への特性の受動的収集を含み得る。特性は、識別エンジン１２０が判別を為す対象であるデータポイントを生成するのに、用いられ得る。識別エンジン１２０は、従前の収集データに基づいて判別を為すために収集される特性を利用し得る。実施システム１３０は、識別エンジン１２０から為される判別に関する、動作の技術的詳細を実装し得る。
【００２９】
ユーザ若しくはたのプログラムがプログラムを実行することを望むならば、まず、識別エンジン１２０にこれが積極的アクションであるかどうか判別することを依頼する。識別エンジン１２０は、従前の識別で答えるか、従前に収集された特性と時点での分析を介して収集される特性との組み合わせを用いて新しい識別を作成するか、いずれかを為し得る。為される判別により、実施システム１３０は、プログラムの実行を許す若しくは許さないロジック、及び、識別判別を進行中に実装するのに必要な任意の他のエレメントを、実装し得る。
【００３０】
特性は、種々のソースから収集され得る。一つの実装では、特性は四つの主要なソースから収集され得る。
【００３１】
第１のソースは、システムの動作環境に関連する動作特性を含み得る。動作特性は、現存のプログラム、オペレーティングシステムに関するディテール、プログラムのランステータス、プログラムと関連する構成変数、及び、プログラムが稼働するように意図される環境に固有の他の計測値を、含み得る。これらの特性の一部は、進行中のもの（即ち、それらは能動的特性である）であってもよく、他のものは、特定の時点にて判別されるもの（即ち、それらは受動的特性である）であってもよい。
【００３２】
第２のソースは、稼動することを望むプログラムに関連する静的特性を含み得る。構造エレメント及びプログラムコンテンツを含む、プログラム自身に関する計測が、収集され得る。これらの特性は、ファイルのコンテンツを調査し、分析方法を介して処理することにより、計算され得る。プログラムの静的特性の一つの例は、そのプログラムのサイズである。プログラムの構造エレメントの例は、プログラムが含むセクションの数、個々のセクションにより記載されるプログラムの割合、及び、どのセクションによっても記載されないプログラムの割合を、含み得る。個々のセクションのシャノンエントロピは、処理から導出される特性の例である。
【００３３】
第３のソースは、個別のプログラム実行に関連する動的特性を含み得る。動的特性は、概略進行中に収集され得る。動的特性は、システムそれ自身ではなく、特定のプログラムと関連し得る。これらの特性は、実行前に高い信頼識別を受け取ることができなかったか、直接管理のポリシ下で稼動する権限を与えられたか、のいずれかであるプログラムから潜在的に敵対する活動を判別するのに、用いられ得る。
【００３４】
第４のソースは、一般的に、ネットワーク上のルックアップなどのリモートデータソースを介する、ホストコンピュータ自身の外部の、情報のソースから一般的に抽出され得る外部特性を含み得る。このルックアップは、クラウドデータベースに対するクエリ、若しくは、ネットワークベースのコンピュータ上のあるエレメントのより深い分析を、含み得る。例えば、外部特性は、信頼される第三者によるプログラムの信ぴょう性に関する判別、大集団のコンピュータ間でのプログラムの普及、及び／又は、プログラムにより接触される他のコンピュータの評価を、含み得る。これらの特性は、サイズ、複雑さ、更新の頻度により、個別のコンピュータ上でホストとなるには観念的である知識を伴うことが多い。ネットワークルックアップの待ち時間により、これらの特性は、一般に、特定の時点にて、識別エンジン１２０からの特定のリクエストに応じて、収集され得る。
【００３５】
特性は、ハッシュテーブル、バイナリツリー、及びベクタなどの、実効的コンピュータデータ構造に収集され得、また特性は、識別エンジン１２０に通過され得る。進行中の特性は、収集されて適宜の時間保持され、識別処理に有益な影響を与える能力を保証し得る。時点の特性は、通常、識別の発生時に、オンデマンドの方法で収集され得る。
【００３６】
特性は、性質上、バイナリでも、連続的でも、若しくは、カテゴリでもよい。バイナリ特性は、二つの状態の内の一つでしかいられない。連続特性は、ある範囲に沿って値を表し得、一般に性質上、数値である。カテゴリ特性は、可能性のある値の離散的セットの範囲内で値を表し得る。
【００３７】
特性は、１次でも、２次でも、ｎ次でも、考慮され得る。１次特性は、ソースから直接的に計測される特性である。これらの特性は、２次特性を生成する種々の方法により、組み合わされ得、更に、分析され得る。そのような更に分析することは、１次特性の値の数学的分析を行うことを含み、１次特性の組み合わせを適用することで真に一意的な２次特性を展開する。
【００３８】
識別エンジン１２０は、アプリケーションの予想される安全性に関する判別を作成し得る。識別エンジン１２０は、特性コレクタ１１０からのインプットを受信して機械学習のモデルのアンサンブルを適用し、アプリケーションが稼働するのに安全かどうかを判別するスコアと、そのスコアの正確性の信頼性を、計算する。
【００３９】
識別エンジン１２０は、組み合わせで又は単独で特性を取り込み得、場合によっては、個別の特性を数学的ベクタに変化させる、ベクトル化として知られる処理を使用し得る。この処理は、インプットのコンパクト且つ実効的な表現を作成することを含み得る。ベクタは、スコアを生成する種々の機械学習アルゴリズムにより用いられ得る。
【００４０】
アンサンブルを使用することで、多数の、独特のモデルは、より共通のタイプのプログラムの範囲内でより特殊化された特性の組み合わせに適合するように調整され得る。個々のサンプルは、そのタイプにより適切であるモデルに準えられ得る。モデルの特異性に加えて、一般的なアンサンブルは、モデル毎の多数の様々な学習アルゴリズムを提供し得る。このことにより、サンプル識別は多数の様々なアセスメントから利益を得ることができる。特定のアルゴリズムに対するより低いエラー率を有する特定のモデルもあり、重み付けをしてそれらを組み合わせることで、最も高い結果に到達する助けとなる。
【００４１】
アンサンブルモデル及び／又はそれらのアウトプットは、（スコアカードモデルなどの）重み付けスキームで個別の計測エラー率を用いて、組み合わされ得る。スコア付けする個々のモデルは、その計測されるエラー率により、正規化されて調整され得る。この最終的な組み合わせにより、種々のソースからの最も正確な理解が可能になる。
【００４２】
実施システム１３０は、プログラムの実行を無効する方法を実装するコンポーネントであってもよい。実施システム１３０は、安全且つ信頼性高く実行を無効にする様々な戦術を用い得る。
【００４３】
プログラムに関する判別は、プログラムの実行の前に、常に行われるものでも無く、よって、更なるハンドリングを要求する複数のより複雑なシナリオが在り得る。実施システム１３０は、コンピュータオペレーティングシステムと深く一体化して識別エンジン１２０の代わりに動作し得る。
【００４４】
実施システム１３０は、プロセス若しくは動的ライブラリがメモリ内にロードするのを阻止すること、従前ロードされたモジュールをアンロードすること、稼動するプログラムを無効にすること、稼働するプログラムに関する制約を実装すること、敵対するアプリケーションを隔離すること、及び／又は、敵対するアプリケーションを削除することの、一つ若しくはそれ以上を実装し得る。敵対すると判別されるモジュールがアクセスされるとき、及び／又は、敵対するモジュールに抗してアクションが試みられるとき、実施システム１３０がアラートを発することは望ましいことが多い。
【００４５】
実施システム１３０は、オペレーティングシステムのコア、及び、個々のプロセスの、両方で実装されるプロセスを利用し得る。これらのプロセスは、深い内観に加えてのコアのオペレーティングシステム、及び、アプリケーション自身の、両方からの、高程度のコントロールを可能にさせる。
【００４６】
更に、実施システム１３０は、アプリケーションが稼働する若しくはアクセスのレベルを限定するのを回避するための、戦術を利用し得る。それら戦術は、プログラムを移動し、リネームし、若しくは削除する戦術、属性若しくはアクセスコントロールをプログラムに適用する戦術、減少された特権によりアプリケーションを稼動するように強制する戦術、「サンドボックス」内で稼動するようにアプリケーションを強制する戦術であって、或るアクションが仮想化されたシステム状態にアクセスするようにリダイレクトされる、強制する戦術、及び／又は、アプリケーションが実行し得るアクションをモニタしてコントロールする戦術を、含み得る。
【００４７】
プログラムを稼動するように試みられるとき、又は、安全性を解明するためファイルを意図的にスキャンするなどの、ユーザ定義の振る舞いにより判別が保証されるとき、システム／技術は発効し得る。
【００４８】
図１の図表１００を再び参照して、オペレーティングシステム及び動的特性収集システム１１０から生じる特性は、識別エンジン１２０内に進行しつつストリームすることを継続し得る。これらは、概略、識別エンジン１２０内部で用いるべく利用可能であり得、あるものが保証されると識別アクションを開始し得る。
【００４９】
一般的に、しかしながら、システム若しくはユーザが、アプリケーションを開始すること、若しくはファイルの安全性を判別することの、いずれかを選択する、システム若しくはユーザのアクションの間に、システム／方法はアクティブとされ得る。これらのイベントの一つが引き起こされると、識別エンジン１２０は、特性コレクタから更なるディテールを要求し得る。特性コレクタ１１０は、適宜のディテールを集めてそれらを識別エンジン１２０に通過し得る。これらの特性は、静的、動的、動作の、若しくは外部の、特性を介して生じ得る。
【００５０】
識別エンジン１２０は、全ての収集された特性を取り込み得、ベクトル化処理を用いてベクタをインプットとして展開し得る（図２の図表２００参照）。インプットベクタ２１０は、識別エンジン１２０のモデルセレクタ２２０により一つ若しくはそれ以上のモデルと関連付けられ得る。モデルセレクタ２２０が選ぶ各々のモデルに対して、インプットベクタ２１０が適用され得る。各々のモデルは、それと関連する一つ若しくはそれ以上のアルゴリズムを有し、一連の個別のスコアを生成し得る。個別のモデルのアウトプットは、重み付けスキーム（例えば、スコアカードモデル）を利用して、スコア付けコンポーネント２３０内で組み合わされ得る。スコア付けコンポーネント２３０は、結果（例えば、安全若しくは非安全）及びその結果の信頼性で構成される、最終スコアを生成し得る。
【００５１】
図３は、処理フロー図３００であり、３１０にて、プログラムと関連する少なくとも一つの特性を含むデータが、受信される（即ち、アクセスされる、取得される、など）。その後、３２０にて、受信したデータに基づき、少なくとも一つの機械学習のモデルも用いて、プログラムの少なくとも一部を実行させるかどうか判別され得る。この点で用いられる少なくとも一つの機械学習のモデルは、例えば、教師あり学習及び／又は教師なし学習（場合によっては、各々のタイプの学習を用いるモデルの組み合わせも有り得る）を用いて、訓練され得る。続いて、３３０にて、プログラムの少なくとも一部が実行され得ると判別されればプログラムは実行し得る。そうでないならば、３４０にて、プログラム（若しくはその一部）が実行され得ないと判別されれば、プログラムの少なくとも一部は、実行すること／実行を継続することが、回避される。
【００５２】
本明細書に記載の本発明の要旨の一つ若しくはそれ以上の形態若しくは特性は、デジタル電子回路、集積回路、特別に設計されたＡＳＩＣ（特定用途向け集積回路）、コンピュータハードウエア、ファームウエア、ソフトウエア、及び／又は、それらの組み合わせで、実現され得る。これらの様々な実装は、少なくとも一つのプログラム可能プロセッサを含むプログラム可能システム上で、実行可能及び／又は解釈可能である一つ若しくはそれ以上のコンピュータプログラム内の実装を含み、そのプログラム可能システムは、専用でも汎用でもよく、ストレージシステム、少なくとも一つのインプットデバイス（例えば、マウス、タッチスクリーン、など）、及び少なくとも一つのアウトプットデバイスからデータ及び命令を受信するように、又は、それらにデータ及び命令を送信するように、結合する。
【００５３】
プログラム、ソフトウエア、ソフトウエアアプリケーション、アプリケーション、コンポーネント、若しくは、コードと称されることもある、これらのコンピュータプログラムは、プログラム可能プロセッサのための機械命令を含み、高水準手続言語、オブジェクト指向プログラミング言語、関数型プログラミング言語、論理型プログラミング言語、及び／又は、アセンブリ／機械言語で、実装され得る。本明細書で用いられるように、（コンピュータプログラムプロダクトと称されることもある）「機械読み取り可能媒体」の用語は、例えば、磁気ディスク、光学ディスク、メモリ、及びプログラム可能論理回路（ＰＬＤ）などの、物理的に具現化された装置及び／又はデバイスを示し、機械命令を機械読み取り可能信号として受信する機械読み取り可能媒体を含む、プログラム可能データプロセッサに、機械命令及び／又はデータを提供するのに用いられ得る。「機械読み取り可能信号」の用語は、プログラム可能データプロセッサに機械命令及び／又はデータを提供するのに用いられる任意の信号を示す。機械読み出し可能媒体は、例えば、非過渡のソリッドステートメモリ若しくは磁気ハードドライブ又は任意の同等の記録媒体であるように、持続的にそのような機械命令をストアし得る。機械読み取り可能媒体は、一方で又は更に、例えば、一つ又はそれ以上の物理的なプロセッサコアが組み込まれたプロセッサキャッシュ又は他のランダムアクセスメモリであるように、一過的にそのような機械命令をストアし得る。
【００５４】
本明細書に記載する発明の要旨は、（例えば、データサーバとして）バックエンドのコンポーネントを含む、若しくはミドルウェアのコンポーネント（例えば、アプリケーションサーバ）を含む、若しくはフロントエンドのコンポーネント（例えば、グラフィカルユーザインターフェースを有するクライアントコンピュータ、又はユーザが本明細書に記載する本発明の要旨の実装と相互作用し得るウェブブラウザ）、又はそのようなバックエンドの、ミドルウェアの、又はフロントエンドのコンポーネントの任意の組み合わせを含む、コンピュータシステムにおいて実装され得る。システムのコンポーネントは、デジタルデータ通信の任意の形式又は媒体（例えば、通信ネットワーク）によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、及びインターネットを含む。
【００５５】
コンピュータシステムは、クライアント及びサーバを含み得る。クライアント及びサーバは、一般的に相互に遠隔しており、通常、通信ネットワークを介して相互作用する。クライアント及びサーバの関係は、個々のコンピュータ上で動作し、相互にクライアント−サーバの関係を有するコンピュータプログラムによって生じる。
【００５６】
本明細書に記載する本発明の要旨は、システム、装置、方法、及び／又は所望の構成に依存する製品で具現され得る。前記述にて説明した実装は、すべての実装が本明細書に記載する本発明の要旨と一致することを表すわけでは無い。むしろ、それらは記載した発明の要旨に関する形態と一致する単なるいくつかの例に過ぎない。いくつかの変形例は前述に詳しく記載したが、他の改良又は追加は可能である。特に、さらなる特徴及び／又は変形例は、本明細書に記載されているそれらに加えて提示され得る。例えば、前述に記載した実装は、開示した特徴の様々な組み合わせ及び部分的な組み合わせ、並びに／又は、前記開示したいくつかのさらなる特徴の組み合わせ及び部分的な組み合わせ、に関し得る。さらに、添付の図にて示される、及び／又は本明細書に記載される論理フローは、所望の結果を達成するために、示される特定の順序又は連続する順序を必ずしも要求しない。他の実装は、以下の請求の範囲にあり得る。
【図１】
0006662782.tif 000002
【図２】
0006662782.tif 000003
【図３】
0006662782.tif 000004