(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-18
(54)【発明の名称】適応型ネットワーク攻撃予測システム
(51)【国際特許分類】
G06F 21/57 20130101AFI20241010BHJP
【FI】
G06F21/57
【審査請求】未請求
【予備審査請求】有
(21)【出願番号】P 2024522304
(86)(22)【出願日】2022-08-24
(85)【翻訳文提出日】2024-06-11
(86)【国際出願番号】 US2022041416
(87)【国際公開番号】W WO2023064042
(87)【国際公開日】2023-04-20
(32)【優先日】2021-10-13
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】シュチェルバ,ヤン
(72)【発明者】
【氏名】ゴーパーラクリシュナン,ベンカタクリシュナン
(72)【発明者】
【氏名】ラム,メイ・ビック・ニー
(72)【発明者】
【氏名】シュエ,ユンジャオ
(72)【発明者】
【氏名】レイ,ナナ
(72)【発明者】
【氏名】チェン,エドワード・シィ
(72)【発明者】
【氏名】ウェルヒャー,ヘイワード・アイバン・クレイグ
(72)【発明者】
【氏名】ウェスト,ジェイコブ・ベッカー
(72)【発明者】
【氏名】カオ,チー・ウェン
(57)【要約】
次の15分などの指定された時間枠内におけるネットワーク攻撃の数および深刻度を予測するための機械学習(ML)技術およびモデルが記載される。いくつかの実施形態では、この技術は、訓練データセットから抽出された特徴量に基づいてMLモデルを訓練することと、訓練されたMLモデルを、(a)指定された時間枠内にアカウントに対して起こる攻撃の確率、(b)指定された時間枠内に(攻撃がある場合)いくつの攻撃が起こると予測されるか、および/または(c)起こると予測された攻撃の深刻度、を評価するために、適用することとを含む。システムが、予測および組織的ネットワーク攻撃に対抗またはその影響を軽減するためにMLモデル出力に基づいて防止対策を展開することができる。
【特許請求の範囲】
【請求項1】
命令を記憶する1つまたは複数の非一時的なコンピュータ可読媒体であって、前記命令は、1つまたは複数のハードウェアプロセッサによって実行されると、
1つまたは複数のネットワークサービスにアクセスするために、ユーザアカウントに関連付けられた履歴アクティビティ内における特徴量のセットについての様々な値を特定することと、
前記特徴量のセットについての前記様々な値に基づいて、やがて起こるネットワーク攻撃を予測するように機械学習モデルを訓練することと、
前記ユーザアカウントに関連付けられたアクティビティを検出することと、
検出された前記アクティビティに基づいて、前記機械学習モデルによって、特定の時間枠内におけるネットワーク攻撃の予測された確率、深刻度、または数のうちの少なくとも1つを示す出力を生成することと
を行わせる、1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項2】
前記様々な値のセットは、1つまたは複数の特徴量についての外れ値スコアを含み、前記外れ値スコアは、観測された値と前記ユーザアカウントに関連付けられた挙動プロファイルとの比較に少なくとも部分的に基づいて決定される、請求項1に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項3】
検出されたユーザアクティビティに関連付けられた、場所、ネットワークアドレス、ブラウザ、言語、またはネットワークプロバイダのうちの少なくとも1つについて、外れ値スコアが決定される、請求項2に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項4】
前記様々な値のセットは、1つまたは複数の集約特徴量についての集約値を含み、前記集約値は、閾値時間枠内における1つまたは複数のアクションをトラッキングする、請求項1に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項5】
前記1つまたは複数の集約特徴量は、前記閾値時間枠内における、脆弱性スキャナの数、ディレクトリトラバーサルの数、標準照会言語(SQL)インジェクション試行の数、ログイン成功の数、ログイン失敗の数、ブロックされたアドレスの数、ログイン失敗の都市の数、またはログイン失敗の国の数のうちの少なくとも1つを含む、請求項4に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項6】
前記機械学習モデルは、1つまたは複数の決定木を含み、前記機械学習モデルを訓練することは、様々な特徴量値がネットワーク攻撃のどの程度の予測となるのかに少なくとも部分的に基づいて、前記履歴アクティビティからの訓練例を分割することを含む、請求項1に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項7】
前記命令はさらに、前記様々な特徴量値がネットワーク攻撃のどの程度の予測となるのかに少なくとも部分的に基づいて、前記1つまたは複数の決定木を剪定することを行わせる、請求項6に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項8】
前記命令はさらに、前記機械学習モデルの適合率と再現率との間でバランスをとるように少なくとも1つのモデルハイパーパラメータを調整することを行わせる、請求項1に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項9】
前記命令はさらに、特徴量の様々なセットについての前記機械学習モデルの適合率およびバランスの基準に基づいて、前記機械学習モデルを訓練するように特徴量のセットを選択することを行わせる、請求項1に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項10】
前記ユーザアカウントに関連付けられた前記アクティビティを検出することは、1つまたは複数のログイン試行を検出することを含む、請求項1に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項11】
前記予測を生成することは、検出された前記アクティビティから抽出された前記特徴量のセットについての値に基づいて、1つまたは複数の決定木をトラバースすることを含む、請求項1に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項12】
前記出力は、ある範囲までのネットワーク攻撃の前記予測された確率および数を含む、請求項1に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項13】
前記命令はさらに、前記出力に基づいて、やがて起こる攻撃を防止または軽減するために1つまたは複数のアクションを実行することを行わせる、請求項1に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項14】
前記1つまたは複数のアクションは、ネットワーク攻撃の前記予測された確率または数のうちの少なくとも一方が閾値を満たしたとの判定に応答して実行される、請求項13に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項15】
前記1つまたは複数のアクションは、前記ユーザアカウントをロックすること、ユーザにワンタイムパスワードを送信すること、または2要素認証を可能にすることのうちの少なくとも1つを含む、請求項13に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項16】
前記出力は、指定された時間枠内における、前記ユーザアカウントに対する予測された攻撃を特定する、請求項1に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項17】
前記出力は、オンライン買物客に関連付けられたログイベントに基づいて、予測された攻撃および深刻度を特定する、請求項1に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項18】
前記特徴量のセットは、場所、ネットワークアドレス、ブラウザ、言語、およびネットワークプロバイダについての外れ値スコアを含み、前記特徴量のセットは、閾値時間枠内における、脆弱性スキャナの数、ディレクトリトラバーサルの数、標準照会言語(SQL)インジェクション試行の数、ログイン成功の数、ログイン失敗の数、ブロックされたアドレスの数、ログイン失敗の都市の数、およびログイン失敗の国の数をさらに含む、請求項1に記載の1つまたは複数の非一時的なコンピュータ可読媒体。
【請求項19】
1つまたは複数のハードウェアプロセッサと、
1つまたは複数のハードウェアプロセッサによって実行されると、請求項1~請求項18のいずれかに記載の動作の実行をさせる命令を記憶する1つまたは複数の非一時的なコンピュータ可読媒体と
を備える、システム。
【請求項20】
請求項1~請求項18のいずれかに記載の動作を実行させるための手段を備えるシステム。
【請求項21】
請求項1~請求項18のいずれかに記載の動作を含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示は、ネットワーク攻撃の検出、防止、および軽減に関する。特に、本開示は、ネットワークを通じてアクセス可能なアカウントに対する攻撃を適応的に予測および防止するために機械学習を用いることに関する。
【背景技術】
【0002】
背景
ネットワーク攻撃は、ネットワークを通じてアクセス可能なコンピューティングリソースのセットに対する不正アクセスを得ようとする試みである。成功したネットワーク攻撃により、権限のない者が機密データを閲覧およびコピーすることが可能となり、それによりデータセキュリティが損なわれる可能性がある。より深刻な場合、攻撃者は、データを修正、暗号化、または他では破損させる可能性がある。データ侵害が、プライベートデータの損失または不正使用に起因する負債を含め、個人および組織に深刻な影響を引き起こす場合がある。
【0003】
ネットワーク管理者は、ネットワーク攻撃に対抗するために防止対策を展開することができる。例えば、ネットワーク管理者は、ユーザアカウントをロックする前にパスワード試行の閾値数を設定し、ウィルスについてネットワークを監視するためにウィルス対策ソフトウェアをインストールし、不正アクセスの可能性を減らすために機密データを暗号化することができる。しかしながら、ネットワーク攻撃は、絶えず進化しており、すべての攻撃技術を予期することは困難な場合がある。
【発明の概要】
【0004】
この項において説明されている手法は、追い求められてきたはずであるが必ずしも以前に考え出されたまたは追い求められた手法とは限らない手法である。したがって、別段に指示されていない限り、この項において説明されている手法のいずれも、単にこの項へのその包含によって従来技術とみなすと想定されるべきでない。
【0005】
実施形態を添付の図面の図において限定としてではなく例として示す。本開示における「一」または「1つの」実施形態への言及は必ずしも同じ実施形態に対するものではなく、少なくとも1つを意味することに留意されたい。
【図面の簡単な説明】
【0006】
【
図1】いくつかの実施形態による、適応型ネットワーク攻撃予測のための例示的なシステムを示す図である。
【
図2】いくつかの実施形態による、外れ値スコアを生成するための動作の例示的なセットを示す図である。
【
図3】いくつかの実施形態による、ネットワーク攻撃を適応的に予測するように機械学習モデルを訓練するための動作の例示的なセットを示す図である。
【
図4】いくつかの実施形態による、ネットワーク攻撃を適応的に予測するように機械学習モデルを調整するための動作の例示的なセットを示す図である。
【
図5】いくつかの実施形態による、ネットワーク攻撃を適応的に予測するように機械学習モデルを適用するための動作の例示的なセットを示す図である。
【
図6A】いくつかの実施形態による、ネットワーク攻撃を適応的に予測するための例示的な決定木モデルを示す図である。
【
図6B】いくつかの実施形態による、ネットワーク攻撃を適応的に予測するための例示的な決定木モデルを示す図である。
【
図7】いくつかの実施形態による、コンピュータシステムを示す図である。
【発明を実施するための形態】
【0007】
詳細な説明
以下の説明において、説明のため、徹底的な理解を提供するために数多くの特定の詳細が記載される。これらの特定の詳細なしに1つまたは複数の実施形態が実施されてもよい。1つの実施形態において説明される特徴は、異なる実施形態において説明される特徴と組み合わされてもよい。いくつかの例では、本発明を不必要に曖昧にすることを避けるために、よく知られた構造およびデバイスはブロック図を参照しながら説明される。
【0008】
1.全体的な概要
2.システムアーキテクチャ
3.適応型ネットワーク攻撃予測のためのモデル
3.1 特徴量抽出およびエンジニアリング
3.2 モデル訓練
3.3 モデル調整
4.例示的なモデル予測および洞察
5.適応型攻撃防止および軽減
6.コンピュータネットワークおよびクラウドネットワーク
7.マイクロサービスアプリケーション
8.ハードウェア概要
9.その他、拡張機能
1.全体的な概要
次の15分などの指定された時間枠内におけるネットワーク攻撃の数および深刻度を予測するための機械学習(ML:machine-learning)技術およびモデルを説明する。いくつかの実施形態では、技術は、訓練データセットから抽出された特徴量に基づいてMLモデルを訓練することを含む。訓練されたモデルは、(a)指定された時間枠内にアカウントに対して起こる攻撃の確率、(b)指定された時間枠内にいくつの攻撃が起こると予測されるか、および/または(c)起こると予測された攻撃の深刻度、を評価するために、リアルタイムで適用され得る。システムは、予測および組織的ネットワーク攻撃に対抗またはその影響を軽減するためにMLモデル出力に基づいて防止対策を展開することができる。
【0009】
訓練段階時、MLエンジンは、1つまたは複数のユーザアカウントに関連付けられたユーザ挙動の複数の例を含む訓練データセットを受信することができる。MLエンジンは、MLモデルを訓練するための訓練データセットを用いて、攻撃の数および/または深刻度を含む、攻撃の予測となる非典型的な挙動を学習することができる。訓練プロセスは、上記の例を、アカウントに関連付けられた挙動属性を捕捉する特徴量ベクトルのセットに変換するために特徴量抽出を含むことができる。例示的な特徴量は、前の5分などの特定の時間枠内における、脆弱性スキャナの数、ディレクトリトラバーサルの数、構造化照会言語(SQL:structured query language)インジェクション試行の数、ログイン成功の数、ログイン失敗の数、検出された攻撃の数、ブロックされたアドレスの数、および、ログイン試行に関連付けられた種々の場所の数を含む。MLエンジンはその場合、ユーザアカウントに関連付けられたどの挙動がネットワーク攻撃の最有力の予測となるかを学習するために、様々な特徴量値の関数として1つまたは複数のMLモデルを構成することができる。
【0010】
いくつかの実施形態では、MLエンジンは、MLモデルをアカウントごとに構成することができる。種々のアカウントについて別個のMLモデルを構成することによって、システムは、様々なユーザについての種々のプロトタイプの挙動を学習することができる。1人のユーザに非典型的である挙動が別のユーザに非典型的ではないことがある。追加的または代替的に、起こりそうな攻撃の数および/または深刻度は、同様の挙動を示す場合であっても種々のユーザについて様々であり得る。機械学習により、プロトタイプの挙動がアプリケーション実行時間に学習されることが可能となることにより、すべてのユーザアカウントに普遍的に適用できないことがあるハードコードされたルールが回避される。MLモデルはさらに、プロトタイプの挙動が経時的に変化するにつれて進化し、新たな攻撃技術に適応することができる。MLモデルは、新たな挙動が観測されると、周期的または連続的に再訓練され得る。
【0011】
推論段階時、MLエンジンは、訓練されたMLモデルを、ユーザアカウントに関連付けられた新たに観測された挙動に適用することによって、予測を生成することができる。モデルを適用すると、MLエンジンは、特徴量抽出および変換を行って、訓練段階と同じようにして特徴量ベクトルを生成することができる。例えば、MLエンジンは、脆弱性スキャナ、ディレクトリトラバーサル、SQLインジェクション試行、ログイン成功、ログイン失敗、検出された攻撃、ブロックされたアドレス、および、ログイン試行に関連付けられた種々の場所が、前の5分または何らかの他の時間枠内にいくつ観測されたかに応じて、特徴量ベクトルを生成することができる。新たに観測されるデータは特有であり、抽出された特徴量値の非常に多数の考えられ得る並べ替えに部分的に起因して、訓練されたデータセットにおける任意の以前の例に正確に適合しないことがある。MLモデルは、入力として特徴量ベクトルを受信し、ユーザアカウントに関連付けられたこれから起こるネットワーク攻撃に関する1つまたは複数の予測のセットを出力することができる。
【0012】
システムはMLモデル予測を用いて、今後の予測される攻撃に対処するために分析的洞察および/またはトリガ応答アクションを提供することができる。例えば、システムは、MLモデルの出力を用いて、各アカウントに対する予測される攻撃の深刻度および/または量に基づいてアカウントのリストをフィルタリングまたはソーティングすることができる。追加的または代替的に、システムは、予測されたネットワーク攻撃リスクに基づいて、アカウントごとにセキュリティ対策を選択的に可能または不能にすることを含め、実行時間に防止アクションを実施してもよい。
【0013】
本明細書において説明されるおよび/または特許請求の範囲に記載される1つまたは複数の実施形態は、この全体的な概要の項に含まれていないこともある。
【0014】
2.適応型ネットワーク攻撃予測のためのシステムアーキテクチャ
いくつかの実施形態では、適応型ネットワーク攻撃予測システムは、1つまたは複数のネットワークサービスおよび/または1つまたは複数のネットワーク化されたコンピューティングリソースへのアクセスを与えるユーザアカウントのセットを予測的に監視する。ユーザアカウントは、異なるユーザをシステムが識別、トラッキング、および/または認証するメカニズムを提供することができる。ユーザは、パスワードおよび/または他の認証資格情報をユーザにサブミットすることを要求し得る認証プロセスにより、ユーザアカウントにログインすることができる。ログインすると、ユーザは、ユーザがアクセスする権限を与えられたファイル、アプリケーション、および/または他のリソースにアクセスすることができる。
【0015】
いくつかの実施形態では、各ユーザアカウントは、異なるホームディレクトリに関連付けられており、ホームディレクトリは、対応するユーザアカウントについてルートディレクトリとして働き得るとともに、ユーザアカウントにログインしたユーザのアクティビティに基づいて生成されたファイルを記憶し得る。ルートディレクトリへのアクセスは、対応するユーザアカウントおよび1つまたは複数の管理者アカウントに制限されることにより、ネットワークサービスの他のユーザによるユーザのファイルへの不正アクセスを防止することができる。さらに、ユーザがユーザアカウントにログインすると、システムは、ユーザアカウントに関連付けられたルートディレクトリへのユーザアクセスを阻止して、プライベートシステムリソースへの不正アクセスを防止することができる。
【0016】
いくつかの実施形態では、ユーザアカウントのセットは、1つまたは複数のクラウドサービスにアクセスするためのアカウントを含み得る。クラウドサービスは、第三者サービスプロバイダによってホストされ、インターネットにより入手可能にされる、コンピューティングインフラストラクチャ、プラットフォーム、および/またはソフトウェアを含み得る。例示的なクラウドサービスモデルは、ソフトウェア・アズ・ア・サービス(SaaS:software-as-a-service)、データベース・アズ・ア・サービス(DBaaS:database-as-a-service)、プラットフォーム・アズ・ア・サービス(PaaS:platform-as-a-service)およびインフラストラクチャ・アズ・ア・サービス(IaaS:infrastructure-as-a-service)を含む。ユーザは、1つまたは複数のクラウドサービスを用いてサブスクリプションの一部としてアカウントを作成することができる。
【0017】
いくつかの実施形態では、クラウドサービスは、他のユーザがアクセス可能であるネットワークサービスをサブスクライブエンティティが構築および展開することを可能にすることができる。例えば、クラウドサービスは、電子商取引ウェブサイトをカスタマイズおよび開始するためにサブスクライバに提供されるソフトウェアおよび/またはハードウェアリソースをホストすることができる。オンライン買物客が訪問し、別個のアカウントを作成して、ウェブサイトにアクセスする、および/またはオンラインサービスにサブスクライブすることができる。したがって、プライマリサブスクライバアカウントが、複数の買物客、セカンダリサブスクライバ、および/または、提供されたクラウドリソースを用いてプライマリサブスクライバによって作成されたオンラインサービスにアクセスできる他のユーザアカウントを管理し得るか、または他ではそれらに関連付けられ得る結果、ユーザアカウントのマルチレベル階層が得られる。ネットワーク攻撃予測技術は、本明細書においてさらに説明されるように1つまたは複数のレベルのユーザアカウントに適用され得る。
【0018】
図1は、いくつかの実施形態による、適応型ネットワーク攻撃予測のための例示的なシステムを示す。
図1に示すように、システム100が、ネットワークサービス102と、ネットワーク122と、データリポジトリ124と、クライアント130a~bとを含む。システム100は、
図1に示す構成要素よりも多いまたは少ない構成要素を含んでもよい。
図1に示す構成要素は、互いに対してローカルであってもリモートであってもよい。
図1に示す構成要素は、ソフトウェアおよび/またはハードウェアにおいて実装され得る。各構成要素は、複数のアプリケーションおよび/またはマシンに対して割り当てられ得る。複数の構成要素は、1つのアプリケーションおよび/またはマシンに統合されてもよい。1つの構成要素に関して説明する動作が別の構成要素によって代わりに行われてもよい。
【0019】
いくつかの実施形態では、ネットワークサービス102は、ネットワーク122を介してアクセス可能であるハードウェアおよび/またはソフトウェアリソースのセットを含む。ネットワークサービス102は、IaaS、PaaS、DBaaS、および/またはSaaSアプリケーションなどの1つまたは複数のクラウドサービスを表し得る。追加的または代替的に、ネットワークサービス102は、異なるユーザを識別、トラッキング、および/または認証するためのユーザアカウントのセットを管理するための構成要素のセットを含んでもよい。構成要素のセットは、アカウントマネージャ104と、認証サービス106と、アプリケーション108と、トラッキングサービス110と、MLサービス112と、インタフェースエンジン120とを含み得る。前述したように、システム100内の構成要素は、ネットワークサービス102を含め、様々とすることができる。いくつかの場合では、1つの構成要素によって行われる機能が、システム100内の別の構成要素によって組み合わせられてもまたは他では実施されてもよい。追加的または代替的に、ネットワークサービス102の構成要素は、互いに対してローカルまたはリモートに実行してもよい。
【0020】
いくつかの実施形態では、アカウントマネージャ104は、ネットワークサービス102へのアクセスを有するユーザアカウントを管理する。例えば、アカウントマネージャ104は、ユーザがサービスにサブスクライブする際の新たなユーザアカウントの作成、およびアカウントの削除を管理することができる。追加的または代替的に、アカウントマネージャ104は、異なるユーザアカウントを一意に識別する識別子を割り当ててもよい。追加的または代替的に、アカウントマネージャ104は、プライバシー設定、アイデンティティおよびアクセス管理(IAM:identity and access management)ポリシー、ならびにユーザアカウントアクセス権限などの、ユーザアカウントの他の側面を管理してもよい。
【0021】
ユーザアカウントが作成されると、ユーザは、認証サービス106によって支障なく認証された場合にユーザアカウントにログインすることができる。いくつかの実施形態では、認証サービス106は、ユーザアイデンティティを確認するために1つまたは複数の認証プロトコルを実施する。例示的な認証プロトコルとして、パスワード認証プロトコル(PAP:password authentication protocol)、チャレンジハンドシェイク認証プロトコル(CHAP:challenge-handshake authentication protocol)、ならびに、認証、認可、およびアカウンティング(AAA:authentication, authorization, and accounting)プロトコルが挙げられる。ログイン試行時、ユーザは、ユーザ名、パスワード、デジタル証明書、および/または他の資格情報をサブミットし得る。認証サービス106は、資格情報をチェックし、資格情報がうまく確認されない場合、ログイン試行をブロックし得る。
【0022】
資格情報が支障なく認証される場合、ユーザは、エンドユーザによって指示されるタスクを行うためのソフトウェアおよび/またはサービスを含み得る、アプリケーション108などのネットワークリソースの制限されたセットにアクセスする許可を与えられ得る。例えば、SaaSアプリケーションは、顧客関係、オペレーション、ソーシャルメディア、インベントリ、ウェブサイト設計、および/または電子商取引機能を管理するためのソフトウェアおよびサービスを含み得る。しかしながら、アプリケーション特有の機能は、ネットワークサービスおよび/またはユーザサブスクリプションに応じて様々とすることができる。
【0023】
トラッキングサービス110が、ユーザアカウントにログインしたおよび/またはログインしようと試みたユーザのアクティビティをトラッキングするログを生成することができる。いくつかの実施形態では、トラッキングサービス110は、ユーザ要求をトラッキングまたは他では捕捉する、デーモンおよび/またはログ生成プロセスなどの1つまたは複数の監視エージェントを含む。例えば、トラッキングサービス110は、ディレクトリトラバーサルの数、標準照会言語(SQL:standard query language)インジェクション試行の数、成功したログイン試行の数、失敗したログイン試行の数、ログイン試行の場所、および/または、1つまたは複数のユーザアカウントに関してトリガされた脆弱性スキャンの数をトラッキングすることができる。追加的または代替的に、オンラインユーザの挙動をトラッキングするためにトラッキングサービス110によって他の測定基準がログをとられてもよい。
【0024】
いくつかの実施形態では、MLサービス112が、ユーザの挙動をプロファイリングするとともにどんな挙動パターンが今後のネットワーク攻撃の予測となるのかを学習するための構成要素を含む。MLサービス112は、タスクを実行するために静的命令セットに頼るのではなくアプリケーション実行時に推論および調整を行うことができる。したがって、システム100は、新たな攻撃パターンのさらなるハードコーディングを要求することなく、攻撃を示す挙動をリアルタイムで変更および発展させるように適応することができる。
【0025】
いくつかの実施形態では、MLサービス112は、MLモデルを訓練するための訓練エンジン114と、MLモデルパラメータおよび/またはハイパーパラメータを調整するための調整エンジン116と、訓練されたMLモデルを適用するための予測エンジン118とを含む。MLモデルを訓練および調整する技術は、「適応型ネットワーク攻撃予測のためのモデル」と題する項3においてさらに説明する。
【0026】
インタフェースエンジン120は、ネットワークサービス102とインタラクションするためのユーザインタフェースを提供することができる。例示的なユーザインタフェースは、限定しないが、グラフィカルユーザインタフェース(GUI:graphical user interface)、アプリケーションプログラミングインタフェース(API:application programming interface)、コマンドラインインタフェース(CLI:command-line interface)、または、ネットワークリソースにアクセスするための何らかの他のインタフェースを含み得る。インタフェースエンジン120は、要素をディスプレイにレンダリングすることができる、クライアント130a~bを含むクライアントアプリケーションに、インタフェース構成要素を提供することができる。例えば、クライアントは、ブラウザ、モバイルアプリ、または、GUIウィンドウを通じてネットワークサービス102のうちの1つまたは複数を呼び出すユーザインタフェース要素を表示するアプリケーションフロントエンドであってもよい。ユーザインタフェース要素の例として、チェックボックス、ラジオボタン、ドロップダウンリスト、リストボックス、ボタン、トグル、テキストフィールド、日付および時間セレクタ、コマンドライン、スライダ、ページ、およびフォームが挙げられる。
【0027】
ユーザは、ネットワーク122を介してネットワークサービス102と接続するために、クライアントアプリケーションおよび/またはデバイスを含み得るクライアント130a~bを用いることができる。ネットワーク122は、インターネットなどの1つまたは複数の相互接続されたデータ通信ネットワークを表す。クライアントは、1つまたは複数の通信プロトコルに従ってネットワークサービス102と接続することができる。例示的な通信プロトコルとして、ハイパーテキストトランスファプロトコル(HTTP:hypertext transfer protocol)、簡易ネットワーク管理プロトコル(SNMP:simple network management protocol)、およびインターネットプロトコル(IP:internet protocol)スーツの他の通信プロトコルが挙げられ得る。
【0028】
いくつかの実施形態では、ネットワークリソースは、データリポジトリ124を含む。データリポジトリ124は、挙動プロファイル126およびMLモデルデータ128を記憶する揮発性および/または不揮発性記憶装置を含み得る。挙動プロファイル126は、測定基準と、1つまたは複数のユーザアカウントについて典型的なユーザ挙動を表す学習されたパターンとを含み得る。MLモデルデータ128は、モデルアーチファクトおよび出力を記憶することができる。例えば、MLモデルデータ128は、重み、バイアス、ハイパーパラメータ値、および/または、モデル訓練により得られた他のアーチファクトを記憶することができる。追加的または代替的に、MLモデルデータ128は、訓練されたMLモデルを評価および適用することから得られた予測および/または他の値を含み得る。
【0029】
いくつかの実施形態では、MLモデル予測および関連機能は、クラウドサービスまたはマイクロサービスにより公開される。クラウドサービスは、サブスクライブエンティティとも呼ばれる複数のテナントをサポートすることができる。テナントは、共有されたコンピューティングリソースにアクセスする、法人、組織、企業または他のエンティティに対応し得る。種々のテナントは、コンピューティングリソースを共有しているとしても、独立して管理され得る。例えば、種々のテナントは、種々のアカウント識別子、アクセス資格情報、アイデンティティおよびアクセス管理(IAM)ポリシー、ならびに構成設定を有し得る。コンピュータネットワークおよびマイクロサービスアプリケーションに関するさらなる実施形態および/または例は、「コンピュータネットワークおよびクラウドネットワーク」と題する項6、ならびに「マイクロサービスアプリケーション」と題する項7において以下で説明する。
【0030】
3.適応型ネットワーク攻撃予測のためのモデル
3.1 特徴量抽出およびエンジニアリング
いくつかの実施形態では、MLサービス112は、MLモデルを訓練するための特徴量ベクトルのセットを生成する。特徴量ベクトルは、ユーザアカウントに関連付けられた挙動属性を捕捉する様々な特徴量についての値のセットを含み得る。例えば、特徴量ベクトル
【0031】
【0032】
は、[x1,x2,....,xn]として表され得、ここでx1は、第1の特徴量についての値であり、x2は、第2の特徴量についての値であり、xnは、第nの特徴量についての値である。
【0033】
訓練のために選択される特徴量およびベクトルにおける特徴量の数は、特定の実装形態に応じて様々とすることができる。1つまたは複数の特徴量がドメインエキスパートによってキュレートされ得る。追加的または代替的に、MLサービス112は、どの特徴量が最も高い性能を有するMLモデルをもたらすかに基づいて、訓練および/または調整段階時に1つまたは複数の特徴量を選択してもよい。MLサービス112は、トラッキングサービス110によってトラッキングされたアクティビティに基づいて、特徴量を抽出、生成、および/または選択してもよい。
【0034】
いくつかの実施形態では、特徴量値のセットは、システム100によって検出された非典型的な挙動を表す変数を含む。MLサービス112は、検出された非典型的な挙動の程度または深刻度の測度を表すスコアまたは他の測定基準を計算することができる。例えば、ログイン試行が検出される場合、試行されたログインの場所、IPアドレス、ブラウザ、言語設定、および/または他のアクティビティが、特定のユーザアカウントについて非典型的である可能性がある。ユーザ挙動をトラッキングする例示的な特徴量は、ログインまたは試行されたログインに関連付けられた都市、国、IPアドレス、地域、ユーザのブラウザ、ユーザの言語、および/またはネットワークプロバイダについての外れ値スコアを含み得る。
【0035】
MLサービス112は、ユーザおよび/またはユーザアカウントに関連付けられた挙動プロファイルに基づいて、1つまたは複数の特徴量についての外れ値スコアを計算することができる。
図2は、いくつかの実施形態による、外れ値スコアを生成するための動作の例示的なセットを示す。
図2に示す1つまたは複数の動作は、変更、再構成、またはすべて省略されてもよい。したがって、
図2に示す動作の特定の順序は、1つまたは複数の実施形態の範囲を限定するものと解釈されるべきではない。
【0036】
図2を参照すると、プロセスは、ユーザアカウントに関連付けられた履歴データをロードする(動作202)ことを含む。プロセスは、3週間などの限られた時間枠に履歴データを限定してもよく、または、変わっていくユーザ挙動に対応するために、より最近のアクティビティに対しより大きい重みを与えてもよい。履歴データは、場所、IPアドレス、ブラウザ、設定、ログイン試行成功、および/またはログイン試行失敗をトラッキングするデータを含む様々な挙動属性を含み得る。
【0037】
ロードすると、プロセスは、ユーザについての挙動プロファイルを生成する(動作204)。挙動プロファイルは、様々な挙動属性について典型的な値および周波数を識別することができる。例えば、挙動プロファイルは、履歴データ内に観測される都市、国、言語、および/または他の属性値のリストを識別することができる。挙動プロファイルは、観測された値がある場合はそれらの値のどれがネットワーク攻撃に関連付けられたかを示すことができる。
【0038】
いくつかの実施形態では、プロセスは、ユーザアカウントに関連付けられた新たに入ってくるデータをロードする(動作206)。ストリーミングアプリケーションにおいて、入ってくるデータは、システムがユーザについての挙動プロファイルを生成および更新する際に同時にロードされ得る。システム100は、リアルタイムの攻撃予測および軽減を提供するためにユーザアクティビティデータを連続的に監視およびロードすることができる。
【0039】
いくつかの実施形態では、プロセスは、新たに入ってくるデータとユーザアカウントに関連付けられた挙動プロファイルとを比較する(動作208)。例えば、プロセスは、新たなログイン試行についての都市、国、IPアドレス、ブラウザ、言語、および/または他の属性と観測された典型的および/または非典型的な挙動とを比較することができる。追加的または代替的に、プロセスは、他の属性と特定の実装形態に応じて様々であり得る挙動プロファイルとを比較してもよい。
【0040】
比較に基づいて、プロセスは、ユーザアカウントに関連付けられた1つまたは複数の特徴量について外れ値スコアを計算する(動作210)。一特徴量についての一外れ値スコアは、検出された特徴量値がユーザについて典型的または非典型的な挙動を表しているかどうかに少なくとも部分的に基づいて計算され得る。より多いスコアは、値がより少ないスコアよりも非典型的であることを示し得る。スコアは、0~1の間のスケールなどで正規化され得、ここで1は大いに非典型的な挙動を表し、0は典型的な挙動を表す。例えば、都市、言語、または他の値がユーザアカウントについて大いに非典型的であり、観測された攻撃に関連付けられる場合、プロセスは、1の外れ値スコアを特徴量に割り当て得る。特徴量値がまれに観測されるが頻繁に攻撃に関連付けられない場合、1未満の値が割り当てられ得る。攻撃に関連付けられない頻繁に観測される値は、0のスコアが割り当てられ得る。しかしながら、スコアリングシステムは、実装形態ごとに様々であってもよい。
【0041】
いくつかの実施形態では、MLモデルを訓練するために用いられる特徴量は、1つまたは複数の集約された特徴量を含み得る。集約された特徴量は、アカウントに関連付けられた観測の集約されたセットを指し得る。例示的な集約された特徴量は、最後の5分などの閾値時間枠内に観測された、脆弱性スキャナの数、ディレクトリトラバーサルの数、SQLインジェクション試行の数、ログイン成功の数、ログイン失敗の数、ブロックされたアドレスの数、ログイン失敗の都市の数、国および/またはログイン失敗(countries and/or login failures)の数を含むことができる。トラッキングサービス110は、特徴量の例が特定の時間窓内でいくつ検出されたかをトラッキングする1つまたは複数の集約された特徴量についてカウントを維持することができる。特徴量カウント値を集約するための窓の長さは、ドメインエキスパートまたは他のユーザによって構成可能であり得るおよび/または設定され得る。追加的または代替的に、システム100は、モデル性能を最適化するために、モデル訓練および/またはモデル調整中などの、窓の長さを選択してもよい。
【0042】
3.2 モデル訓練
訓練エンジン114は、ユーザアカウントに関連付けられた特徴量ベクトルのセットを用いて1つまたは複数のMLモデルを訓練することができる。いくつかの実施形態では、訓練エンジン114は、ランダムフォレストおよび/または勾配ブースト木を含み得る1つまたは複数の決定木を構築する。しかしながら、訓練エンジン114は、サポートベクターマシン(SVM:support vector machine)および人工ニューラルネットワークを含む他のMLモデルを訓練してもよい。
【0043】
図3は、いくつかの実施形態による、ネットワーク攻撃を適応的に予測するように機械学習モデルを訓練するための動作の例示的なセットを示す。
図3に示す1つまたは複数の動作は、変更、再構成、またはすべて省略され得る。したがって、
図3に示す動作の特定の順序は、1つまたは複数の実施形態の範囲を限定するものと解釈されるべきではない。
【0044】
図3を参照すると、プロセスは、履歴データに基づいて特徴量ベクトルのセットを生成する(動作302)ことを含む。例えば、特徴量ベクトルは、外れ値スコアおよび/または集約された特徴量値を含み得る。訓練エンジン114は、観測されたユーザ挙動の種々の例を表す複数の特徴量ベクトルを作成することができる。特徴量ベクトルは、観測された値の15分以内などの閾値時間枠内に行われた攻撃がある場合はその攻撃を識別するラベルに関連付けられ得る。ラベルは、攻撃がいくつ行われたかおよび/または攻撃の深刻度を識別することができる。追加的または代替的に、ラベルは、攻撃がSQLインジェクション試行、ディレクトリトラバーサル攻撃、クレデンシャルスタッフィング攻撃、または他の攻撃シナリオであったかどうかなど、攻撃のタイプを識別してもよい。
【0045】
いくつかの実施形態では、プロセスは、決定木を分割するように特徴量を選択する(動作304)。プロセスは、E=Σ(pa*(1-pa))として規定されたGini指数関数などの誤差関数のコストを最小限にするように特徴量を選択することができ、式中、paは、予測ノードの特定のクラスにおける訓練例の割合を表す。例えば、paは、閾値数の攻撃が検出されたかまたは特定のカテゴリの攻撃(例えば、深刻な攻撃、中程度の攻撃、攻撃なし)が検出されたデータの割合を表し得る。別の例として、プロセスは、特定の特徴量について0.4の外れ値スコアが誤差関数を最小限にすると決定することができる。しかしながら、決定木の分割に用いられる選択される特徴量および特徴量値は、アカウント内で検出される特定のアクティビティに応じて様々であり得る。プロセスは、決定木を分割するのに用いられる特徴量および特徴量値を識別するために貪欲アルゴリズムを実装することができるが、選択がなされるやり方は、特定の実装形態に応じて様々であり得る。
【0046】
プロセスは次に、選択された特徴量に基づいて訓練データセットを分割する(動作306)。例えば、都市について0.4の外れ値スコアが選択される場合、0.4未満の値を有する訓練例が決定木の1つの枝に割り当てられ得、0.4超の値を有する訓練例が決定木の別の枝に割り当てられ得る。別の値および/または特徴量が選択される場合、プロセスは、学習された境界に沿って分かれる。
【0047】
いくつかの実施形態では、プロセスは、決定木を分割し続けるかどうかを判定する(動作308)。プロセスは、1つまたは複数の停止基準のセットが満たされるまで決定木を分割し続けることができる。例えば、プロセスは、1つまたは複数のリーフノードに割り当てられる例の数が最小閾値未満に下がるまで決定木を分割することができる。停止基準が満たされない場合、プロセスは、動作208に戻り、決定木を繰り返し分割することができる。
【0048】
停止基準が満たされると、プロセスは、どの特徴量が攻撃の最も予測とならないかに基づいて決定木を剪定する(動作310)ことができる。例えば、観測された攻撃に差がほとんどまたは全くない訓練例の2つのグループをノードが分割している場合、そのノードは剪定され得る。追加的または代替的に、プロセスは、ノードが剪定されると、誤差関数の差を判定してもよい。その差が閾値よりも大きい場合、剪定は覆され得、ノードが決定木に再挿入され得る。誤差関数の差が閾値よりも小さい場合、剪定は維持され得る。結果として、分割される例または枝がマージされ得る。プロセスは、残っているノードのうちの1つを取り除くことにより誤差関数の結果が閾値量を上回って変わるか、または最小閾値数のノードが残るまでノードを剪定し続けることができる。
【0049】
決定木が構築されると、プロセスは、さらなる決定木を構築するかどうか判定する(動作312)ことができる。ランダムフォレストおよび勾配ブースト決定木の場合、複数の決定木が構成され得る。例えば、ランダムフォレストを生成するために、訓練データは、例の複数のグループに分割され得る。別個の決定木を独立して構成するために訓練例の各異なるセットが使用され得る。勾配ブースト決定木の場合、いくつかの木が順次に構成され、各新たな決定木が、順序における1つまたは複数の前の木の、平均二乗誤差または対数損失などの誤差関数を最小化する。ランダムフォレストおよび勾配ブースト決定木は、過剰適合を減らすとともに、訓練されたMLモデルの予測精度を高めることができる。
【0050】
3.3 モデル評価および調整
いくつかの実施形態では、調整エンジン116は、訓練されたMLモデルを評価し、性能を最適化するようにMLモデルを調整する。調整エンジン116は、F1スコアなどのF測定を用いて性能を測定することができる。F測定は、適合率および再現率に基づいてモデルを評価し、F1スコアは2つの要素間の調和平均を表す。調整エンジン116は、Fスコアが閾値を満たすまで、訓練されたMLモデルパラメータおよびハイパーパラメータを調整することができる。本明細書の例ではFスコアが用いられるが、他の実施形態では、調整エンジン116は、平均適合率(MAP:mean average precision)およびR精度測定方法などの、精度の他の測定を用いて、MLモデルを調整することができる。
【0051】
図4は、いくつかの実施形態による、ネットワーク攻撃を適応的に予測するように機械学習モデルを調整するための動作の例示的なセットを示す。
図4に示す1つまたは複数の動作は、変更、再構成、またはすべて省略されてもよい。したがって、
図4に示す動作の特定の順序は、1つまたは複数の実施形態の範囲を限定するものと解釈されるべきではない。
【0052】
図4を参照すると、プロセスは、訓練されたMLモデルをテストデータおよび/または新たに入ってくるデータに適用して攻撃予測を生成する(動作402)ことを含む。プロセスは次いで、予測と観測された攻撃とを比較してモデルを評価することができる。
【0053】
いくつかの実施形態では、プロセスは、MLモデル予測の適合率を決定する(動作404)。プロセスは、正確に予測された攻撃の数を、予測されたが観測されなかった攻撃を含む、予測された攻撃の総数で除算することによって適合率を計算することができる。したがって、適合率は、MLモデルが偽フラグ警告を回避するにあたりどの程度有効であるかを示す基準として用いられ得る。
【0054】
いくつかの実施形態では、プロセスは、MLモデル予測の再現率を決定する(動作406)。プロセスは、正確に予測された攻撃の数を、観測された攻撃の総数で除算することによって、再現率を計算することができる。したがって、再現率は、MLモデルが攻撃を検出することにどの程度感度が高いのかを示すための基準として用いられ得る。
【0055】
いくつかの実施形態では、プロセスは、適合率と再現率とのバランスが閾値を満たしているかどうかを判定する(動作408)。例えば、プロセスは、調和平均が閾値を超えているかどうかを判定することができる。85%超のF1スコアは、いくつかの用途において良好なバランスを示し得る。しかしながら、閾値は、特定の実装形態に応じて様々であり得る。
【0056】
バランスが閾値を満たさない場合、プロセスは、1つまたは複数のモデルハイパーパラメータおよび/またはパラメータを調整することによってMLモデルを調整する(動作410)ことができる。例示的なハイパーパラメータおよびパラメータは、決定木の深さ、ランダムフォレストにおける決定木の数、特徴量カウントを集約するための窓の長さ、リーフごとの訓練例の最小数、および決定木の構造を用いるように選択された特徴量のセットを含み得る。追加的または代替的に、調整エンジン116は、モデルに関連付けられた他のパラメータ値を調整してもよい。プロセスは、適合率と再現率とのバランスが満たされるまで値を調整し続けることができる。
【0057】
閾値バランスが達成されると、プロセスは、MLモデルパラメータおよびハイパーパラメータ値を記憶する(動作312)ことができる。予測エンジン118が、ユーザアクティビティがリアルタイムで監視されるため、記憶された値にアクセスして、新たに入ってくるデータにMLモデルを適用することができる。
【0058】
4.モデル予測および洞察
図5は、いくつかの実施形態による、ネットワーク攻撃を適応的に予測するように機械学習モデルを適用するための動作の例示的なセットを示す。
図5に示す1つまたは複数の動作は、変更、再構成、またはすべて省略されてもよい。したがって、
図5に示す動作の特定の順序は、1つまたは複数の実施形態の範囲を限定するものと解釈されるべきではない。
【0059】
図5を参照すると、プロセスは、新たなアカウントアクティビティを検出する(動作502)。例えば、プロセスは、新たなログイン試行、クライアント要求、データベースクエリ、ディレクトリトラバーサル、および/または、ユーザアカウントに関連付けられた他のアクティビティを検出することができる。
【0060】
新たなアカウントアクティビティを検出したことに応答して、プロセスは、特徴量値のセットを抽出する(動作504)。いくつかの実施形態では、プロセスは、訓練された決定木を構築するのに用いられる特徴量の同じセットから特徴量ベクトルを生成する。例えば、プロセスは、前の項において説明したように外れ値スコアを計算するおよび特徴量を集約することができる。
【0061】
プロセスはさらに、抽出された特徴量値に基づいて1つまたは複数の決定木をトラバースする(動作506)。例えば、プロセスは、特定の特徴量に関連付けられた外れ値スコアと特定のノード値とを比較することができる。外れ値スコアが、決定木ノードについて規定された値を超える場合、プロセスは、決定木の1つの枝の下に進むことができる。外れ値スコアがその値未満である場合、プロセスは、決定木の他の枝の下に進むことができる。プロセスは、リーフノードに達するまで特徴量値とツリーノード値とを比較し続けることができる。ランダムフォレストなど、複数の決定木がある場合、プロセスは、MLモデルにおける決定木の各々をトラバースすることができる。
【0062】
ツリートラバーサルに基づいて、プロセスは、1つまたは複数のネットワーク攻撃予測のセットを生成および出力する(動作508)。例えば、MLモデルは、次の15分または何らかの他の範囲までなどの指定された時間枠内に起こる攻撃の確率を予測することができる。追加的または代替的に、MLモデルの出力は、起こると予測された攻撃の数、深刻度レベル、および/または、指定された範囲(例えば、次のn分)に関して指定され得る閾値時間枠内における攻撃挙動が異常であると予測されるかどうかを識別することができる。
【0063】
ランダムフォレストの場合など、複数の決定木が用いられる実施形態では、プロセスは、複数の木の予測を集約することによって最終的な予測を計算することができる。例えば、プロセスは、決定木の平均、メジアン、またはモード予測を計算することができる。プロセスは次いで、集約結果を出力することができる。
【0064】
表1は、いくつかの実施形態による、訓練されたMLモデルからのサンプル出力の例示的なセットを示す。
【0065】
【0066】
表1に示すように、1番目の縦列は、次の15分における攻撃の確率の予測のセットを含み、2番目の縦列は、次の15分に起こると予測された攻撃の数を特定し、3番目の縦列は、次の15分に起こると予測された挙動を分類している。モデル出力は、システムがどの程度ネットワーク攻撃の危機に瀕しているかに対する洞察を与える。モデル出力は、保証されている場合、適切な防止および軽減アクションを行うために、ユーザ、アプリケーション、および/またはシステムによって消費され得る。
【0067】
図6Aおよび
図6Bは、いくつかの実施形態による、ネットワーク攻撃を適応的に予測するための例示的な決定木モデルを示す。決定木600は、ノード602、ノード604、およびノード606を含む、いくつかのノードを含む。ノード602は、決定木のルートであり、特徴量x[0]に基づいて訓練サンプルを分割している。0.5よりも大きい対応する値を有するサンプルが決定木の右側に割り当てられ、0.5以下の値を有するサンプルが決定木の左側に割り当てられている。このノードについてGini指数関数は0.423であり、このノードの下にあるサンプルの総数は1,894,124である。
【0068】
ノード604は、特徴量x[1]に基づいて決定木の左側の訓練サンプルを分割している。63.5よりも大きい特徴量値を有するサンプルが、ノード602から右リーフノードに割り当てられ、63.5以下の特徴量値を有するサンプルが、左リーフノードに割り当てられている。ノード606は、ノード602と同じ特徴量x[0]を用いるが、より高い値を用いてサンプルを分割している。
【0069】
前述したように、プロセスは、やがて起こるネットワーク攻撃に関して予測を行うために決定木のノードをトラバースすることができる。一例として、決定木をトラバースすることは、以下のモデル解釈をもたらすことができる。
【0070】
If(NumberOfVulnScanner<=1.5)and(NumberOfDirTrav<=0.5)and(numberOfSqlInjectionAttempt<=215.5)
Then NrOfAttackInNext15minutes=20
上記の例では、プロセスは、次の15分における攻撃の数を予測するために、前の5分における、検出された脆弱性スキャナの数、ディレクトリトラバーサルの数、およびSQLインジェクション試行の数に基づいて、決定木を通る経路に従うことができる。特徴量、特徴量値、および攻撃予測は、ユーザアカウントに関連付けられたモデル訓練および挙動プロファイルに応じて様々であり得る。
【0071】
いくつかの実施形態では、予測エンジン118は、ユーザの階層内における様々なレベルでのネットワーク攻撃を予測することができる。例えば、予測エンジン118は、次の15分などの閾値時間枠内でサブスクライバアカウントに対する攻撃を予測するようにMLモデルを適用することができる。追加的または代替的に、予測エンジン118は、各買物客のログイベントによる攻撃および深刻度を予測するようにMLモデルを適用してもよい。追加的または代替的に、予測エンジン118は、クレデンシャルスタッフィング攻撃、SQLインジェクション攻撃、および/またはディレクトリトラバーサル攻撃など、起こる攻撃のタイプを予測してもよい。MLモデルは、サブスクライバのアクティビティと、サブスクライバによって提供されるサービスにアクセスする買物客のアクティビティとに基づいて、攻撃に対する洞察を与えることができる。
【0072】
いくつかの実施形態では、システム100は、MLモデル出力に基づいてユーザに提示するためにチャート、リスト、および/または他のオブジェクトを生成およびレンダリングすることができる。例えば、インタフェースエンジン120が、次の15分内における攻撃の最も高い確率または予測される攻撃の最も高い数を有する最高n個のサブスクライバ攻撃のリストを提示することができる。追加的または代替的に、インタフェースエンジン120は、攻撃の最も高い予測される深刻度を有するサブスクライバアカウントに関連付けられた最高n人の買物客をハイライトしてもよい。
【0073】
いくつかの実施形態では、管理者が、モデル予測に基づいてアカウントのリストを検索およびフィルタリングすることができる。例えば、ユーザは、次の10分以内に予測される攻撃の閾値数を上回る、閾値を超える攻撃の予測された可能性を有する、攻撃の予測されたタイプを有する、および/または非典型的であると予測された挙動を有するアカウントのリストのみを閲覧することを要求することができる。フィルタ要求に応答して、インタフェースエンジン120は、フィルタ基準を満たすアカウントのリストを識別し、アカウント名、現況、および/または他のアカウント属性などの、アカウントに関する情報を、エンドユーザに提示することができる。
【0074】
5.適応型攻撃防止および軽減
いくつかの実施形態では、システム100は、1つまたは複数の訓練されたMLモデルの出力に基づいて、1つまたは複数の攻撃防止または軽減アクションを行うことができる。前述したように、システム100は、予測されたネットワーク攻撃リスクに基づいて、アカウントごとにセキュリティ対策を選択的に可能または不能にすることを含め、実行時間に防止アクションを実施することができる。例えば、システム100は、予測された攻撃を妨げるまたは進行中の攻撃の損傷を最小限にするために、アカウントをロックし、2要素認証を選択的に可能にし、IPアドレスをブロックし、ユーザにワンタイムパスワードを送信し、脆弱性スキャンを実行し、および/または他のアクションを行うことができる。
【0075】
いくつかの実施形態では、システム100は、新たに検出されたアカウントアクティビティについてのMLモデル出力と1つまたは複数の閾値とを比較する。1つまたは複数の閾値が満たされている場合、システム100は、適応型攻撃防止および軽減アクションのうちの1つまたは複数をトリガすることができる。例えば、システム100は、アカウントに対する次の15分における攻撃の予測された確率、数、および/または深刻度と、対応する閾値とを比較することができる。閾値が満たされている場合、システム100は、前述した余分なセキュリティ対策のうちの1つまたは複数を可能にすることができる。追加的または代替的に、起動されるセキュリティ対策のタイプは、次の15分以内に起こると予測されるネットワーク攻撃の深刻度、数、および/またはタイプに応じて様々であってもよい。例えば、ディレクトリトラバーサル攻撃についてよりもSQLインジェクション試行について種々のセキュリティ対策が展開され得る。
【0076】
いくつかの実施形態では、管理者が閾値を構成し、および/または、システム100によってとられたアクションが予測された攻撃に対処する。例えば、管理者は、以下の通りにルールを規定することができる。
【0077】
If(NrOfAttackInNext15minutes=20)and(ProbabilityOfAttackInNext15minutes>=75%)
Then SendOneTimePassword(useraccount)
システム100は、ユーザアカウントに関連付けられたMLモデルの出力に基づいて、ルールを評価することができる。予測された攻撃の数および確率が閾値を満たしている場合、システム100は、ユーザがアクティブになっていることを確認するために、電子メールまたはショートメッセージサービス(SMS:short-message service)を介してユーザにワンタイムパスワードを送信することができる。ワンタイムパスワードが受信されるまでユーザアカウントに対するアクティビティがロックされ得る。他の実施形態では、ルールによって規定される条件およびアクションは、管理者の入力に応じて様々であり得る。追加的または代替的に、システム100は、MLモデル出力に基づいてデフォルトアクション、または攻撃パターンを停止させるように学習されたアクションを行ってもよい。
【0078】
6.コンピュータネットワークおよびクラウドネットワーク
いくつかの実施形態では、コンピュータネットワークは、ノードのセット間の接続性を提供する。ノードは、互いに対してローカルおよび/またはリモートであってもよい。ノードは、リンクのセットによって接続される。リンクの例は、同軸ケーブル、非シールドツイストケーブル、銅ケーブル、光ファイバ、および仮想リンクを含む。
【0079】
ノードのサブセットが、コンピュータネットワークを実装する。そのようなノードの例として、スイッチ、ルータ、ファイアウォール、およびネットワークアドレストランスレータ(NAT:network address translator)が挙げられる。ノードの別のサブセットが、コンピュータネットワークを用いる。そのようなノード(「ホスト」とも呼ばれる)は、クライアントプロセスおよび/またはサーバプロセスを実行することができる。クライアントプロセスは、コンピューティングサービス(例えば、特定のアプリケーションの実行、および/または特定量のデータの記憶)を要求する。サーバプロセスは、要求されたサービスを実行することおよび/または対応するデータを戻すことによって応答する。
【0080】
コンピュータネットワークは、物理リンクによって接続される物理ノードを含む、物理ネットワークとすることができる。物理ノードは、任意のデジタルデバイスである。物理ノードは、ハードウェアスイッチ、ハードウェアルータ、ハードウェアファイアウォール、およびハードウェアNATなどの、機能固有のハードウェアデバイスとすることができる。追加的または代替的に、物理ノードは、様々な仮想マシンおよび/またはそれぞれの機能を行うアプリケーションを実行するように構成されている汎用マシンであってもよい。物理リンクは、2つ以上の物理ノードを接続する物理媒体である。リンクの例は、同軸ケーブル、非シールドツイストケーブル、銅ケーブル、および光ファイバを含む。
【0081】
コンピュータネットワークは、オーバーレイネットワークとすることができる。オーバーレイネットワークは、別のネットワーク(例えば、物理ネットワーク)の上に実装される論理ネットワークである。オーバーレイネットワークにおける各ノードは、基盤となるネットワークにおけるそれぞれのノードに対応する。したがって、オーバーレイネットワークにおける各ノードは、(オーバーレイノードにアドレス指定するための)オーバーレイアドレスおよび(オーバーレイノードを実装するアンダーレイノードをアドレス指定するための)アンダーレイアドレスの両方に関連付けられる。オーバーレイノードは、デジタルデバイスおよび/またはソフトウェアプロセス(例えば、仮想マシン、アプリケーションインスタンス、またはスレッド)とすることができる。オーバーレイノードを接続するリンクは、基盤となるネットワークを介するトンネルとして実装される。トンネルの両端のオーバーレイノードは、それらノード間にある基盤となるマルチホップパスを単一の論理リンクとして扱う。トンネリングは、カプセル化およびカプセル化解除により行われる。
【0082】
いくつかの実施形態では、クライアントは、コンピュータネットワークに対してローカルであってもおよび/またはリモートであってもよい。クライアントは、プライベートネットワークまたはインターネットなどの他のコンピュータネットワークを通じてコンピュータネットワークにアクセスすることができる。クライアントは、ハイパーテキスト転送プロトコル(HTTP:Hypertext Transfer Protocol)などの通信プロトコルを使用して、コンピュータネットワークに要求を通信することができる。要求は、クライアントインタフェース(ウェブブラウザなど)、プログラムインタフェース、またはアプリケーションプログラミングインタフェース(API)などのインタフェースを介して通信される。
【0083】
いくつかの実施形態では、コンピュータネットワークは、クライアントとネットワークリソースとの間の接続性を提供する。ネットワークリソースは、サーバプロセスを実行するように構成されたハードウェアおよび/またはソフトウェアを含む。ネットワークリソースの例として、プロセッサ、データ記憶装置、仮想マシン、コンテナ、および/またはソフトウェアアプリケーションが挙げられる。ネットワークリソースは、複数のクライアント間で共有される。クライアントは、互いに独立してコンピュータネットワークにコンピューティングサービスを要求する。ネットワークリソースは、オンデマンドベースで要求および/またはクライアントに動的に割り当てられる。各要求および/またはクライアントに割り当てられるネットワークリソースは、例えば、(a)特定のクライアントによって要求されるコンピューティングサービス、(b)特定のテナントによって要求される集約コンピューティングサービス、および/または(c)コンピュータネットワークに要求される集約コンピューティングサービスに基づいて、スケールアップまたはスケールダウンされ得る。そのようなコンピュータネットワークは、「クラウドネットワーク」と呼ばれることがある。
【0084】
いくつかの実施形態では、サービスプロバイダが、クラウドネットワークを1人または複数人のエンドユーザに提供する。ソフトウェア・アズ・ア・サービス(SaaS)、プラットフォーム・アズ・ア・サービス(PaaS)、およびインフラストラクチャ・アズ・ア・サービス(IaaS)を含むがこれらに限定されない、様々なサービスモデルが、クラウドネットワークによって実装され得る。SaaSでは、サービスプロバイダは、ネットワークリソース上で実行されるサービスプロバイダのアプリケーションを使用する機能をエンドユーザに提供する。PaaSでは、サービスプロバイダは、カスタムアプリケーションをネットワークリソースに展開する機能をエンドユーザに提供する。カスタムアプリケーションは、サービスプロバイダによってサポートされるプログラミング言語、ライブラリ、サービス、およびツールを使用して作成され得る。IaaSでは、サービスプロバイダは、処理、記憶装置、ネットワーク、および、ネットワークリソースによって提供される他の基本的なコンピューティングリソースをプロビジョニングする機能をエンドユーザに提供する。オペレーティングシステムを含む任意のアプリケーションが、ネットワークリソース上に展開され得る。
【0085】
いくつかの実施形態では、プライベートクラウド、パブリッククラウド、およびハイブリッドクラウドを含むがこれらに限定されない、コンピュータネットワークによって、様々な展開モデルが実装され得る。プライベートクラウドでは、ネットワークリソースは、1つまたは複数のエンティティ(本明細書において使用される場合の「エンティティ」という用語は、企業、組織、個人、または他のエンティティを指す)の特定のグループによる独占的使用のためにプロビジョニングされる。ネットワークリソースは、エンティティの特定のグループの構内に対してローカルであってもおよび/またはリモートであってもよい。パブリッククラウドでは、クラウドリソースは、互いに独立した複数のエンティティ(「テナント」または「顧客」とも呼ばれる)のためにプロビジョニングされる。コンピュータネットワークおよびそのネットワークリソースは、種々のテナントに対応するクライアントによってアクセスされる。そのようなコンピュータネットワークは、「マルチテナントコンピュータネットワーク」と呼ばれることがある。いくつかのテナントが、異なる時間、および/または同じ時間に、同じ特定のネットワークリソースを使用してもよい。ネットワークリソースは、テナントの構内に対してローカルであってもおよび/またはリモートであってもよい。ハイブリッドクラウドでは、コンピュータネットワークは、プライベートクラウドおよびパブリッククラウドを含む。プライベートクラウドとパブリッククラウドとの間のインタフェースが、データおよびアプリケーションの可搬性を可能にする。プライベートクラウドに格納されたデータとパブリッククラウドに格納されたデータとが、インタフェースを介して交換され得る。プライベートクラウドで実装されているアプリケーションとパブリッククラウドにおいて実装されているアプリケーションとが、互いに対する従属性を有し得る。プライベートクラウドにおけるアプリケーションからパブリッククラウドにおけるアプリケーションへの(その逆もある)呼び出しが、インタフェースを介して実行され得る。
【0086】
いくつかの実施形態では、マルチテナントコンピュータネットワークのテナントは互いに独立している。例えば、1つのテナントのビジネスまたは事業は、別のテナントのビジネスまたは事業とは別個であり得る。種々のテナントが、コンピュータネットワークに対して様々なネットワーク要件を要求し得る。ネットワーク要件の例として、処理速度、データ記憶量、セキュリティ要件、性能要件、スループット要件、レイテンシ要件、復元力要件、サービス品質(QoS:Quality of Service)要件、テナント分離、および/または一貫性が挙げられる。同じコンピュータネットワークが、種々のテナントによって要求される種々のネットワーク要件を実行する必要がある場合もある。
【0087】
1つまたは複数の実施形態では、マルチテナントコンピュータネットワークにおいて、種々のテナントのアプリケーションおよび/またはデータが互いに共有されないことを確実にするために、テナント分離が実施される。様々なテナント分離アプローチが用いられ得る。
【0088】
いくつかの実施形態では、各テナントは、テナントIDに関連付けられる。マルチテナントコンピュータネットワークの各ネットワークリソースが、テナントIDでタグ付けされる。テナントおよび特定のネットワークリソースが同じテナントIDに関連付けられている場合のみ、テナントは特定のネットワークリソースへのアクセスを許可される。
【0089】
いくつかの実施形態では、各テナントは、テナントIDに関連付けられる。コンピュータネットワークによって実装される各アプリケーションが、テナントIDでタグ付けされる。追加的または代替的に、コンピュータネットワークによって記憶された各データ構造および/またはデータセットが、テナントIDでタグ付けされる。テナントおよび特定のアプリケーション、データ構造、および/またはデータセットが同じテナントIDに関連付けられている場合のみ、テナントは、特定のアプリケーション、データ構造、および/またはデータセットへのアクセスを許可される。
【0090】
一例として、マルチテナントコンピュータネットワークによって実施される各データベースがテナントIDでタグ付けされ得る。対応するテナントIDに関連付けられたテナントのみが、特定のデータベースのデータにアクセスすることができる。別の例として、マルチテナントコンピュータネットワークによって実施されるデータベースにおける各エントリが、テナントIDでタグ付けされ得る。対応するテナントIDに関連付けられたテナントのみが、特定のエントリのデータにアクセスすることができる。しかしながら、データベースは複数のテナントによって共有されてもよい。
【0091】
いくつかの実施形態では、サブスクリプションリストが、どのテナントがどのアプリケーションにアクセスするための権限を有しているかを示す。各アプリケーションについて、アプリケーションにアクセスする権限を与えられたテナントのテナントIDのリストが記憶される。テナントのテナントIDが、特定のアプリケーションに対応するサブスクリプションリストに含まれる場合のみ、テナントは、特定のアプリケーションへのアクセスを許可される。
【0092】
いくつかの実施形態では、種々のテナントに対応するネットワークリソース(例えば、デジタルデバイス、仮想マシン、アプリケーションインスタンス、およびスレッドなど)が、マルチテナントコンピュータネットワークによって維持されるテナント固有のオーバーレイネットワークに分離される。一例として、テナントオーバーレイネットワークにおける任意のソースデバイスからのパケットが、同じテナントオーバーレイネットワーク内の他のデバイスにのみ送信され得る。テナントオーバーレイネットワーク上のソースデバイスから他のテナントオーバーレイネットワークにおけるデバイスへのいかなる送信も禁止するために、カプセル化トンネルが使用される。具体的には、ソースデバイスから受信されたパケットが、外部パケット内でカプセル化される。外部パケットは、(テナントオーバーレイネットワークにおけるソースデバイスと通信する)第1のカプセル化トンネルエンドポイントから、(テナントオーバーレイネットワークにおける宛先デバイスと通信する)第2のカプセル化トンネルエンドポイントに送信される。第2のカプセル化トンネルエンドポイントは、ソースデバイスによって送信される元のパケットを取得するために、外部パケットをカプセル化解除する。元のパケットは、第2のカプセル化トンネルエンドポイントから同じ特定のオーバーレイネットワークにおける宛先デバイスに送信される。
【0093】
7.マイクロサービスアプリケーション
いくつかの実施形態によれば、本明細書において説明される技術は、マイクロサービスアーキテクチャで実施される。この文脈におけるマイクロサービスは、独立して展開できるように設計されたソフトウェアロジックであって、様々なアプリケーションを構築するように他のマイクロサービスに論理的に結合され得るエンドポイントを有するソフトウェアロジックを指す。マイクロサービスを用いて構築されたアプリケーションは、単一の固定ユニットとして設計されるとともに、実行可能な単一のロジックを一般的に含むモノリシックアプリケーションとは異なる。マイクロサービスアプリケーションを用いると、種々のマイクロサービスが別個に実行可能なものとして独立して展開できる。マイクロサービスは、HTTPメッセージを用いて、および/または他の通信プロトコルに従って、APIエンドポイントを介して通信することができる。マイクロサービスは、別々に管理および更新されてもよく、種々の言語で記述されてもよく、他のマイクロサービスとは独立して実行されてもよい。
【0094】
マイクロサービスは、アプリケーションを管理および構築する上で柔軟性を提供する。マイクロサービスのソースコードを変更することなく、種々のセットのマイクロサービスを接続することによって、種々のアプリケーションが構築され得る。したがって、マイクロサービスは、異なるアプリケーションを構築するように様々な方法で配置され得る論理構築ブロックとして機能する。マイクロサービスは、マイクロサービスマネージャに公開されるトリガイベントのセットからトリガイベントが発生するときに、マイクロサービスマネージャ(例えば、If-This-Then-That(IFTTT)、Zapier(登録商標)、またはOracle(登録商標) Self-Service Automation(OSSA)など)に通知する監視サービスを提供することができる。アプリケーションに公開されるマイクロサービスは代替的または追加的に、マイクロサービスマネージャから受信されたデータに基づいて、アプリケーションにおけるアクションを実行するアクションサービス(値を渡すことで、アクションをマイクロサービスマネージャ内の他のトリガにおよび/または他のアクションから渡されたデータに接続することによって、マイクロサービスマネージャを介して制御可能および構成可能である)を提供することができる。マイクロサービストリガおよび/またはアクションは、つながれなければ互いに認識しないまたは互いに制御できないもしくは依存しない任意選択の種々のアプリケーションに発生するアクションのレシピを形成するよう、ともにつながれ得る。これらの管理されたアプリケーションは、単独でまたは他のアプリケーションと組み合わせて使用されるたびに再認証を必要とすることなく、例えば、マイクロサービスマネージャへのユーザ提供によるアプリケーション証明書を用いて、認証され得、またはマイクロサービスマネージャに差し込まれ得る。
【0095】
いくつかの実施形態では、マイクロサービスは、GUIを介して接続され得る。例えば、マイクロサービスは、GUIのウィンドウ、フレーム、他の要素内の論理ブロックとして表示され得る。ユーザは、アプリケーションを構築するために使用されるGUIの領域にマイクロサービスをドラッグアンドドロップすることができる。ユーザは、有向矢印または任意の他のGUI要素を用いて、1つのマイクロサービスの出力を別のマイクロサービスの入力に接続することができる。アプリケーションビルダが、検証テストを実行して、(例えば、データタイプ、サイズ制限などをチェックすることによって)、出力および入力が互換性のあることを確認することができる。
【0096】
トリガ
上述した技術は、いくつかの実施形態によれば、マイクロサービスにカプセル化され得る。換言すると、マイクロサービスは、上記の技術に基づいて、(本明細書において「ターゲット」マイクロサービスと呼ばれる、他の差し込み型アプリケーションによる任意選択の使用のためのマイクロサービスマネージャへの)通知をトリガし得、および/またはGUIブロックとして提示されるとともに1つまたは複数の他のマイクロサービスに接続され得る。トリガ条件は、値の絶対閾値もしくは相対閾値、および/または分析するデータの量もしくは持続時間の絶対閾値もしくは相対閾値を含むことができ、そのため、差し込み型マイクロサービスアプリケーションが閾値を超えたことを検出するときは常に、マイクロサービスマネージャのトリガが行われる。例えば、値がトリガ閾値を超えたことをマイクロサービスアプリケーションが検出すると、ユーザは、マイクロサービスマネージャへのトリガを要求することができる。
【0097】
いくつかの実施形態では、トリガは、満たされると、ターゲットマイクロサービスにより消費されるデータを出力し得る。他の実施形態では、トリガは、満たされると、トリガが満たされたことを示すバイナリ値を出力するか、またはトリガ条件が満たされたフィールドの名前または他のコンテキスト情報を出力する。追加的または代替的に、警告が他のマイクロサービスに入力されるように、ターゲットマイクロサービスは1つまたは複数の他のマイクロサービスに接続されてもよい。他のマイクロサービスは、上記の技術に基づいて、追加リソースの展開、システム構成の調整、および/またはGUIの生成を含むがこれらに限定されない応答アクションを実行することができる。
【0098】
アクション
いくつかの実施形態では、差し込み型マイクロサービスアプリケーションは、マイクロサービスマネージャにアクションを公開することができる。公開されたアクションは、データ、または、データをデータクラウド内に移動させる、データオブジェクトのIDもしくはデータの位置を、入力として受信することができる。
【0099】
いくつかの実施形態では、公開されたアクションは、既存の警告閾値を増加または減少させる要求を、入力として受信することができる。入力は、既存のアプリケーション内警告閾値を特定し得、その閾値を増加または減少させるかあるいは削除するかを特定し得る。追加的または代替的に、入力は、新たなアプリケーション内警告閾値を作成するように、マイクロサービスアプリケーションに要求してもよい。アプリケーション内警告は、アプリケーションにログインする際にユーザに警告をトリガすることができるか、またはマイクロサービスマネージャに差し込まれた他のアプリケーションによるのではなく、マイクロサービスアプリケーション自体内で利用可能なデフォルトもしくはユーザ選択警告メカニズムを用いてユーザに警告をトリガすることができる。
【0100】
いくつかの実施形態では、マイクロサービスアプリケーションは、履歴データを特定、位置特定、または提供する、および要求された出力の程度または範囲を規定する入力に基づいて、出力を生成および提供することができる。アクションは、トリガされると、マイクロサービスアプリケーションに、出力を、例えばデータモデルとしてまたはデータモデルを記述する集約データとして、提供、記憶または提示させる。
【0101】
8.ハードウェア概要
1つの実施形態によれば、本明細書において説明される技術は、1つまたは複数の専用コンピューティングデバイスによって実施される。専用コンピューティングデバイスは、これらの技術を実行するためにハードワイヤードされてもよく、あるいは、これらの技術を実行するように永続的にプログラムされた1つまたは複数の特定用途向け集積回路(ASIC:application-specific integrated circuit)、フィールドプログラマブルゲートアレイ(FPGA:field programmable gate array)、もしくはネットワーク処理ユニット(NPU:network processing unit)などのデジタル電子デバイスを含んでもよく、または、ファームウェア、メモリ、他の記憶装置、もしくはそれらの組合せにおいてプログラム命令に従ってこれらの技術を実行するようにプログラムされた1つまたは複数の汎用ハードウェアプロセッサを含んでもよい。そのような専用コンピューティングデバイスはまた、これらの技術を遂行するために、カスタムハードワイヤードロジック、ASIC、FPGA、またはNPUをカスタムプログラミングと組み合わせてもよい。専用コンピューティングデバイスは、デスクトップコンピュータシステム、ポータブルコンピュータシステム、ハンドヘルドデバイス、ネットワーキングデバイス、あるいは、これらの技術を実施するためにハードワイヤードロジックおよび/またはプログラムロジックを組み込んだ任意の他のデバイスであってもよい。
【0102】
例えば、
図7は、いくつかの実施形態によるコンピュータシステムを示す。コンピュータシステム700は、情報を通信するためのバス702または他の通信機構と、情報を処理するためにバス702と結合されるハードウェアプロセッサ704とを含む。ハードウェアプロセッサ704は例えば、汎用マイクロプロセッサであり得る。
【0103】
コンピュータシステム700はまた、プロセッサ704によって実行されるべき情報および命令を記憶するためにバス702に結合された、ランダムアクセスメモリ(RAM:random-access memory)または他の動的記憶デバイスなどのメインメモリ706を含む。メインメモリ706はまた、プロセッサ704によって実行されるべき命令の実行中に一時的な変数または他の中間情報を記憶するために使用され得る。そのような命令は、プロセッサ704にアクセス可能な非一時的な記憶媒体に記憶されると、コンピュータシステム700を、命令で特定された動作を実行するようにカスタマイズされた専用マシンにレンダリングする。
【0104】
コンピュータシステム700は、プロセッサ704のための静的情報および命令を記憶するためにバス702に結合された読出専用メモリ(ROM:read only memory)708または他の静的記憶デバイスをさらに含む。磁気ディスクまたは光ディスクなどの記憶デバイス710が設けられ、情報および命令を記憶するためにバス702に結合される。
【0105】
コンピュータシステム700は、情報をコンピュータユーザに表示するための、陰極線管(CRT:cathode ray tube)または発光ダイオード(LED:light emitting diode)モニタなどのディスプレイ712に、バス702を介して結合され得る。英数字キーおよび他のキーを含み得る入力デバイス714が、情報およびコマンド選択をプロセッサ704に通信するためにバス702に結合される。別のタイプのユーザ入力デバイスは、方向情報およびコマンド選択をプロセッサ704に通信するための、および、ディスプレイ712上でのカーソル移動を制御するための、マウス、トラックボール、タッチスクリーン、またはカーソル方向キーなどのカーソル制御部716である。入力デバイス714は典型的に、第1の軸(例えば、x)および第2の軸(例えば、y)という2つの軸において2つの自由度を有し、これにより、デバイスが平面内における位置を特定することが可能となる。
【0106】
コンピュータシステム700は、コンピュータシステムと組み合わせて、コンピュータシステム700を専用マシンにするかまたは専用マシンになるようにプログラムする、カスタマイズされたハードワイヤードロジック、1つまたは複数のASICもしくはFPGA、ファームウェアおよび/またはプログラムロジックを用いて、本明細書において説明される技術を実施し得る。1つの実施形態によれば、本明細書における技術は、メインメモリ706に含まれる1つまたは複数の命令の1つまたは複数のシーケンスをプロセッサ704が実行することに応答して、コンピュータシステム700によって実行される。そのような命令は、記憶デバイス710などの別の記憶媒体からメインメモリ706に読み込まれてもよい。メインメモリ706に含まれる命令のシーケンスの実行により、本明細書において説明されるプロセスステップをプロセッサ704に実行させる。代替的な実施形態では、ハードワイヤード回路が、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて用いられてもよい。
【0107】
本明細書において使用される場合の「記憶媒体」という用語は、マシンを特定のやり方で動作させるデータおよび/または命令を記憶する任意の非一時的な媒体を指す。そのような記憶媒体は、不揮発性媒体および/または揮発性媒体を含み得る。不揮発性媒体は例えば、記憶デバイス710などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ706などのダイナミックメモリを含む。記憶媒体の一般的な形態は例えば、フロッピーディスク(登録商標)、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、または任意の他の磁気データ記憶媒体、CD-ROM、任意の他の光学データ記憶媒体、穴のパターンを有する任意の物理的媒体、RAM、PROM、およびEPROM、FLASH-EPROM、NVRAM、任意の他のメモリチップまたはカートリッジ、連想メモリ(CAM:content-addressable memory)、および三値連想メモリ(TCAM:ternary content-addressable memory)を含む。
【0108】
記憶媒体は、伝送媒体とは異なるが伝送媒体と共に用いられ得る。伝送媒体は、記憶媒体間の情報の転送に関与する。例えば、伝送媒体は、バス702を含むワイヤを含む、同軸ケーブル、銅線および光ファイバを含む。伝送媒体はまた、電波通信および赤外線データ通信時に生成されるもののような音波または光波の形態をとることができる。
【0109】
様々な形態の媒体が、実行のために1つまたは複数の命令の1つまたは複数のシーケンスをプロセッサ704に搬送することに関与し得る。例えば、命令は最初、リモートコンピュータの磁気ディスクまたはソリッドステートドライブ上で搬送され得る。リモートコンピュータは、そのダイナミックメモリに命令をロードし、モデムを用いて、電話回線、光ファイバケーブル、または同軸ケーブルなどのネットワーク回線を通じて命令を送信することができる。コンピュータシステム700に対してローカルなモデムが、ネットワーク回線でデータを受信し、赤外線送信機を用いてデータを赤外線信号に変換することができる。赤外線検出器が、赤外線信号で搬送されたデータを受信することができ、適切な回路がデータをバス702上に配置することができる。バス702は、データをメインメモリ706に搬送し、そこから、プロセッサ704が命令を取り出し、命令を実行する。メインメモリ706によって受信された命令は任意選択で、プロセッサ704による実行の前または後のいずれかに、記憶デバイス710上に記憶されてもよい。
【0110】
コンピュータシステム700はまた、バス702に結合された通信インタフェース718を含む。通信インタフェース718は、ローカルネットワーク722に接続されたネットワークリンク720に双方向データ通信結合を提供する。例えば、通信インタフェース718は、統合サービスデジタルネットワーク(ISDN:integrated services digital network)カード、ケーブルモデム、衛星モデム、または、対応するタイプの電話回線に対するデータ通信接続を提供するためのモデムであり得る。別の例として、通信インタフェース718は、互換性のあるローカルエリアネットワーク(LAN:local area network)に対するデータ通信接続を提供するためのLANカードであり得る。無線リンクも実施され得る。任意のそのような実装形態では、通信インタフェース718は、様々なタイプの情報を表すデジタルデータストリームを搬送する電気信号、電磁信号、または光信号を送受信する。
【0111】
ネットワークリンク720は典型的に、1つまたは複数のネットワークを介して他のデータデバイスにデータ通信を提供する。例えば、ネットワークリンク720は、ローカルネットワーク722を介して、ホストコンピュータ724、またはインターネットサービスプロバイダ(ISP:Internet Service Provider)726によって操作されるデータ機器に接続を提供することができる。次いでISP726は、現在一般的に「インターネット」728と呼ばれる全世界的パケットデータ通信ネットワークを介して、データ通信サービスを提供する。ローカルネットワーク722およびインターネット728は両方とも、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を用いる。様々なネットワークを通る信号、ならびに、ネットワークリンク720上の、通信インタフェース718を通る信号は、コンピュータシステム700に対してまたはコンピュータシステム700からデジタルデータを搬送するものであり、伝送媒体の例示的な形態である。
【0112】
コンピュータシステム700は、ネットワーク(複数可)、ネットワークリンク720、および通信インタフェース718を介して、メッセージを送信し、プログラムコードを含むデータを受信することができる。インターネットの例では、サーバ730が、インターネット728、ISP726、ローカルネットワーク722、および通信インタフェース718を介して、アプリケーションプログラムのための要求されたコードを送信し得る。
【0113】
受信されたコードは、受信された際にプロセッサ704によって実行されてもよく、および/または、後で実行するために記憶デバイス710または他の不揮発性記憶装置に記憶されてもよい。
【0114】
9.その他、拡張機能
実施形態は、ハードウェアプロセッサを含むとともに、本明細書において説明されるおよび/または添付の請求項のいずれかに記載される動作のいずれかを実行するように構成されている1つまたは複数のデバイスを有するシステムを対象とする。
【0115】
いくつかの実施形態では、非一時的なコンピュータ可読記憶媒体は、1つまたは複数のハードウェアプロセッサによって実行されると、本明細書において説明されるおよび/または請求項のいずれかに記載される動作のいずれかを実行させる命令を含む。
【0116】
本明細書において説明される特徴および機能の任意の組合せが、1つまたは複数の実施形態に従って用いられ得る。前述の明細書では、実装形態ごとに様々であり得る多くの特定の詳細を参照しながら実施形態を説明してきた。したがって、明細書および図面は、限定的な意味ではなく例示的な意味とみなされるべきである。本発明の範囲の唯一および排他的な指標、ならびに本出願人が本発明の範囲であると意図しているものは、その後の任意の修正を含む、そのような請求項が発行される特定の形式における、本出願から発行される一連の請求項の文字通りの等価範囲である。
【国際調査報告】