以下の開示は、本開示の様々な特徴を実装するための、多くの異なる実施形態または例を提供する。コンポーネントおよび構成の具体例が、本開示を簡略化すべく以下に説明される。これらは、もちろん単なる例に過ぎず、限定的であることは意図されない。さらに、本開示は、様々な例における参照番号および/または文字を繰り返してよい。この繰り返しは、簡略化および明確さを目的としており、本質的に、様々な実施形態および/または説明される構成間の関係を規定するものではない。異なる実施形態は異なる利点を有してよく、特定の利点が、あらゆる実施形態に必ず必要なわけではない。
インテル(登録商標)または同様なものによって提供されるハードウェアプラットフォームのような現代のコンピューティングプラットフォームは、デバイス性能を監視し、リソースプロビジョニングについて判断するための機能を含んでよい。例えば、クラウドサービスプロバイダ(CSP)によって提供され得るもののような大きなデータセンタにおいて、ハードウェアプラットフォームは、プロセッサ、メモリ、ストレージプール、アクセラレータ、およびその他の同様なリソースのような計算リソースを有するラックマウント式のサーバを含んでよい。本明細書にて使用されるように、「クラウドコンピューティング」は、データ、リソース、および/または技術へのユビキタス(多くの場合ワールドワイド)なアクセスを可能にする、ネットワーク接続されたコンピューティングリソースおよび技術を含む。概してクラウドリソースは、現在のワークロードおよびニーズに従って、動的にリソースを割り当てるための大きなフレキシビリティによって特徴付けられる。これは、例えば、ハードウェア、ストレージ、およびネットワークのようなリソースが、ソフトウェア抽象化層を介して仮想マシン(VM)へ提供される仮想化によって、および/または、ネットワーク機能のインスタンスが、互いに分離されてはいるが、基本的なオペレーティングシステム、メモリ、およびドライバリソースを共有する「コンテナ」に提供されるコンテナ化によって実現され得る。ハードウェアプラットフォームは、組み込みシステム、および、以下の図10および図11に例示されるもののようなシステムを含む、他のタイプのコンピューティングシステムもまた含んでよい。
現代の自動車は、車両の最適な動作を保証すべく互いに通信することが必要であろうコントローラ、センサ、入力、および他のデータシステムの複雑なネットワークを含み得る。これは、いわゆるスマートカーにおいて特に複雑な問題になり得る。この場合車両は、車両のエンドユーザまたはオペレータに対して情報を提供するのみでなく、いくつかの限定された環境、または、完全に自律的な自動運転車の場合のいずれかにおいて、車両のいくつかまたは全ての機能もまた制御する。最新の車両は、数十年間にわたって最新の車両に見られてきた電子制御ユニット(ECU)を含み得るのみでなく、センサ、コンピュータビジョンシステム、検出器、インフォテイメントシステム、および車両と全てとの間(V2X)の通信(すなわち、車車間または車両とインフラストラクチャ間の通信システム、つまり、車両が、それ自身のサブシステムとのみでなく、他の車両、トラフィック情報、天気情報などのような外部システムともまた通信し得ることを意味する)もまた含み得る。
車両ネットワークへのV2Xの導入は、悪意のある行為者にとって、実質的に新たな攻撃のベクトルを提供する。以前であれば、車両は、外部ネットワークアクセスがほとんどまたは全く無い、完全に自己完結型のネットワークであった。これに対し、V2Xの導入は、悪意のある行為者が、今や多くの車両ネットワークへの侵入インタフェースを有することを意味している。これは、インジェクション攻撃またはスプーフィング攻撃のような悪意のあるペイロードを導入する機会を攻撃者に提供する。これに対し、以前は、車両自身内のコンポーネントに物理的に不正に侵入すること無しには、そのような攻撃はほぼ不可能であった。
互いに通信することが可能であるべき車両のサブシステムに対する要求に応じて、コントローラエリアネットワーク(CAN)バスが生まれた。CANバスは、特に、集中ホストコンピュータまたは他の中央コントローラユニットが欠如し得る環境において、様々なデバイスが互いに通信することを可能にするロバスト規格によって定義される。CANバスは、それぞれのデバイスが1つのノードとして既知であるマルチマスタシリアルモニタにて動作する。ノードは、単一の周期的出力を有する単純なセンサから、高性能なソフトウェアを実行する極めて複雑な組み込みコンピュータまで、どのようなものであってもよい。これを書いている時点において、CANバスの最新のイテレーションは、国際標準化機構ISO 11898−2規格によって定義される。これは、120オームの抵抗器によってそれぞれの端部が終端された線形バスを使用した高速CANバスユニットを定義する。CANバスは、その物理的な実装がCANHおよびCANLと名付けられた2つのワイヤを含む、差動シグナリングモデルを使用する。ノードが「低」を駆動するときにはいつでも、CANHおよびCANLは、それぞれ、3.5Vおよび1.5Vの信号を仮定し、これは「優勢」信号として知られている。ノードが「高」を駆動するときにはいつでも、CANHおよびCANLは、両方ともに1.5Vの信号を仮定し、これは「劣性」として知られている。駆動されていない場合、終端抵抗器は、2つのワイヤを1.5ボルトの公称差動電圧へ受動的に戻す。
CANバスは、元々、大抵の自動車が外部への接続を実質的に有しておらず、従って、侵入に対するセキュリティが現在ほどには重要な懸念ではなかった(例えば、自動車中のノードは、車両自身の外部へ何の通信機能も有さなかった)時代に設計された。従って、CANバス規格は、元々、いかなるネイティブなセキュリティ機能も無しで考えられていた。しかしながら、CANバスが依然として事実上の業界標準である現代の自動車の実施においては、車内ネットワークの外部からこのバスへ接続可能になってきた。特に、CANバスへ接続されたV2Xノードの導入は、攻撃面を拡大し、外部の行為者がCANバスに到達して悪意のある動作をリモートで実行することを可能にしてきた。これは、完全な、または一部の自律的制御を車両が有する場合、特に懸念となり得る。そのような場合、CANバスネットワークへの侵入は、重大な安全性の懸念を表し得る。
例えば、攻撃者は、CANバス内のデータを改ざんし得る、もしくは、CANバス上の有効ノードまたはECUになりすますことができ得るメッセージをCANバスへとインジェクトし、これにより、システムを安全動作基準から外れさせ得るだろう。CANバスにはあらゆるネイティブな認証メカニズムが欠如しているので、不正なメッセージが、本物のメッセージとしてシステムによって使われかねない。いくつかの場合において、データ元認証のための暗号メカニズムが、信頼できるドメインをCANバスに導入するために使用され得る。しかし、これでさえも、不正に侵入されてしまったECUの場合を軽減し得ず、従って、攻撃者のペイロードを含んでいるのに、外見的には本物のようなメッセージを送信してしまいかねない。
自動車のようなCANバスネットワークの安全性およびセキュリティを改善すべく、自動的にバスを検査し、異常を検出することのできる侵入検出システム(IDS)を導入することが有利である。そのようなIDSはメッセージ頻度を基礎とすることが可能であり、インジェクション攻撃を検出することに成功し得る。
しかしながら、スプーフィング攻撃を検出することもまた可能であることが有利である。この目的には機械学習アルゴリズムが適切なものであり得るが、それらは、トレーニング段階の間に攻撃サンプルを必要とする。これは、それらが攻撃をリアルタイムに検出することが可能ではないかもしれないということを意味する。従って、改善されたIDSを提供すべく、本明細書は、複数の時系列のストリームを使用して、データ中の固有パターンを観察する記号集約近似(Symbolic Aggregation Approximation)(SAX)に基づく方法を例示する。これは、システムがCANバス(または、他のネットワーク)中の異常を検出すること、および、それらの異常を考えられる侵入または他のエラーとして特定することを可能にする。
本明細書の侵入検出システムの実施形態は、車内ネットワークのような多くのネットワークにおいて、大抵のメッセージはCANバスに対して規則的に送信され、メッセージペイロードの大部分のコンテンツは、一定のままであるか、または、所与の期間にわたって漸進的にのみ変化するかのいずれかであるという事実に依拠している。従って、CANバスペイロードストリームは、所与の動作状況に対してあるパターンを形成する。CANバスは、本明細書のいくつかの部分において、本明細書にて説明されるIDSから恩恵を受け得る特定のバスの具体的な例として使用されているが、非限定的で、単に説明のための例であることが理解されるべきであることに留意されたい。本明細書のIDSは、多くの異なるタイプのネットワークに適用されることができ、デバイスまたはメッセージ認証のための内蔵サポートまたはネイティブサポートを何ら有さないネットワークまたはバスにおいて特に有益であり得る。非限定的例として、内部のメッセージ偽造に対して脆弱でありかねず、有効な認証タグとともに送信され得る悪意のあるペイロードに対し、接続されたデバイスを危険にさらすイーサネット(登録商標)を含む、他のタイプのネットワークまたはバスが、本明細書のIDSの恩恵を受けるだろう。
攻撃者が、例えば、エンジン回転またはギア値を変化させることのようなスプーフィング攻撃、もしくは、フェイクメッセージを挿入することのようなインジェクション攻撃を実行する場合、それらの確立されたパターンが、おそらく破られるだろう。
その結果、時系列データストリームパターン中の異常が、潜在的侵入の証拠として理解されるだろう。
時系列異常検出は、ある期間内で複数の数の平均を算出する「移動平均」のような、広範囲の実装を含む。しかしながら、いくつかの既存の時系列異常検出法は、単一次元の時系列に依拠している。CANバスデータは、複数の次元に沿ったメッセージを含んでよく、それぞれの次元は、異なるタイプのメッセージを表す。例えば、それぞれのメッセージタイプは、異なるシステムからの異なるタイプの入力を表してよい。
しかしながら、CANバス内では、複数の次元または複数のメッセージタイプにわたって固有のパターンが観察されてよい。例えば、ギアの変化は、速度およびブレーキの解除における同時の変化を生じさせ得る。これらのメッセージは互いに一致する。より一般的な意味において、メッセージBがメッセージAと相関すると言われ得る。例えば、メッセージAの値が00である場合、メッセージBの値は00であり、メッセージAの値が08の場合、メッセージBの値は04である。いくつかの場合において、車両内の多くのシステムが相互に依存するので、これらの相関は確定的に適用できる。メッセージAまたはメッセージBを別個のストリームとしてのみ見る時系列異常検出システムは、これらのうちの一方が外れた場合には、侵入を警告することが可能ではないだろう。しかし、メッセージAの値が08且つメッセージBの値が00という観察結果は、既知の確定的な相関と合致しない。従って、侵入または異常とのより程度の高い相関信頼性を提供する。従って、複数の次元または複数のメッセージタイプの間のこの基本的な相関は、ベースラインパターンを生成するために使用されてよい。本明細書の侵入検出モデルは、ベースラインからのあらゆる逸脱を検出して、潜在的な異常を報告し得る。
ここで、コントローラエリアネットワークに対する侵入検出を提供するためのシステムおよび方法が、添付の図面をより具体的に参照して説明されるであろう。図面全体にわたって、特定のデバイスまたはブロックが完全にまたは実質的に複数の図面にわたって一貫していることを示すべく、いくつかの参照番号が繰り返され得ることに留意されるべきである。しかしながら、これは、開示される様々な実施形態の間のいかなる具体的な関係を示唆することも意図していない。いくつかの例において、複数の要素の属が特定の参照番号(「ウィジェット10」)で呼ばれることがある。これに対し、その属の個々の種または例は、ハイフンでつながれた数字(「第1の特定のウィジェット10−1」および「第2の特定のウィジェット10−2」)で呼ばれることがある。
図1は、本明細書の1または複数の例に係る、コントローラエリアネットワーク(CAN)をホストし得る自動車100のブロック図である。
車両100は、CANバスのようなバスにおけるノードとなり得る、多くのユニットを含んでよい。例えば、車両100は、空気燃料混合物、加速、燃料噴射、および同様な機能のようなことを制御すべく、一般的に車に使用されているECUと同様であり得る主電子制御ユニット(ECU)104を含んでよい。いくつかの例において、一般的なECUは、車の速度または方向を直接は制御し得ないが、電子ステアリング制御、ブレーキをかけること、加速などのようなユーザの入力に応答した多くの信号を処理し得る。本開示の実施形態において、車両100は、上記にて説明されたように、車車間および車両とインフラストラクチャ間の通信を実行するように構成されたV2Xインタフェースを含んでよい。
車両100は、多くの他のセンサおよびプロセッサもまた含んでよく、これらの数およびタイプは、車のタイプに関連し得る。例えば、ローエンドで安価な車両は少数のセンサのみを有してよく、これに対して電子補助機能を有する車両は、はるかに多くの機能セットを有してよく、自律的な自動運転車は、自動運転機能をサポートするためのさらに多くの機能セットを有してよい。例示的且つ非限定的な例として、車両100は、速度計140、タイヤの空気圧センサ108、超音波センサ128、レーダ124、フロントカメラ116、リアカメラ112、レーン追従センサ120、周囲温度センサ136を含んでよい。その他のセンサおよびサブシステムが、非限定的な例として、タコメータ、コンパス、GPS、加速度計、自動ブレーキシステム、自動トラクション制御システム、ステアリング制御サブシステム、およびその他を含んでよい。
これらのシステムのそれぞれは、これらのシステムのうちの他の1または複数と、いくつか複数の時刻において通信する必要があり得る。他のシステムと通信するために、CANバス上のノードが、メッセージのソースを特定するとともに任意でメッセージのターゲットもまた特定するヘッダを有するメッセージを、CANバスへブロードキャストしてよい。CANバスはブロードキャスト方式で動作するので、CANバス上のノードの全てがこのメッセージを受信し得る。そして、ターゲットではないメッセージまたはそのメッセージを必要としないメッセージは、そのメッセージを単純に破棄または無視してよい。
図2は、本明細書の1または複数の例に係る、CANに接続されたシステムのブロック図である。
この例において、CANバス200は、高ワイヤ202および低ワイヤ203を含む。上記にて説明されたように、そしてCANバスの規格に詳述されるように、CANバス上のノードは、高ワイヤおよび低ワイヤに信号を駆動して論理0および論理1を表すことにより通信し得る。明細書において定義されるように、高ワイヤ202および低ワイヤ203は、それらの端部が一対の120オームの抵抗器によって終端される。
例示的且つ非限定的な例として、CANバス200は、ECU204、超音波センサ228、レーン追従センサ220、速度計240、V2Xインタフェース232、リアカメラ212、フロントカメラ216、タイヤの空気圧センサ208、レーダ224、および車内ネットワークゲートウェイ250を含む、多くのノードを自身に取り付けている。
CANバス規格に従うと、CANバス200上の様々なノードは、ピアノードであるものとみなされてよく、必ずしも「マスタノード」として選択または指定されるノードが存在する必要は無い。しかしながら、車内ネットワークゲートウェイ250は、特定のセキュリティ機能を有してよい。具体的に、車内ネットワークゲートウェイ250は、CANバス200を監視し、考えられる異常を検出し、この考えられる異常を、考えられる侵入として特定するように構成されてよい。車内ネットワークゲートウェイ250が異常または侵入を特定する場合、それは、車両のオペレータに警告すること、V2Xインタフェース224を介して外部セキュリティベンダに尋ねること、そして、その異常が解決され得て車両が再び安全に動作できるまで、安全な静止位置へと車両をおそらく強制することのような、適切な是正措置を講じるように構成されてもまたよい。
図3は、本明細書の1または複数の例に係る、CANバスデータフレーム300のブロック図である。
図3に例示されるように、CANバスデータフレーム300は、1ビットの開始フレームフラグ304を含み、メッセージID308がこれに続く。メッセージID308は、11から29ビットの間であってよく、データフィールドにおいて送信される信号のセットを特定する。CANバスデータフレーム300は制御フィールド312もまた含み、制御フィールド312は、これが標準的フレームかまたは拡張されたフレームであるかどうかのような、および、リモートフレームを要求するためのもののような、制御データを提供する。制御フィールド312は、データフィールドの長さを示す4ビットもまた含む。
CANバスデータフレーム300のペイロードは、0から8バイト(0から64ビット)の間を含み得るデータフィールド316に含まれる。エラー検出のために使用される巡回冗長チェック(CRC)フィールド320がこれに続く。ACKフィールド324は、確認応答を送信するために使用される。7ビットのエンド・オブ・フレーム328は、CANバスデータフレーム300を終端する。
上記にて例示されるように、CANバスデータフレーム300は、8バイトまでのペイロードをデータフィールド316中に含む。アプリケーションに応じて、データフィールドは、特定のコンテンツを伝えるサブフィールドにさらに分割されてよい。例えば、1分当たりの回転(RPM)、車輪角度、速度、または他のデータポイントを伝えるために、特定のサブフィールドが使用されてよい。自動車という状況においては、CANバスメッセージの大部分が一定の時間間隔で送信されることが観察されてきた。そのため、(例えば、同一のメッセージIDを有する)一連の同一タイプのメッセージを検討することにより、いくつかの予測可能なパターンを観察することが可能である。複数のパターンが、複数のタイプのメッセージをカバーする一連のメッセージにもまた観察され得る。
CANバス上のメッセージシーケンスMが、M={…,mi−1,mi,mi+1,…}としてモデル化され得る。ここで、miは複数のメッセージのうちの1つであり、iはメッセージの順序を表す。それぞれのメッセージmiは、Di={…,dj}としてモデル化され得る8バイトまでのデータを、データフィールド316中に含んでよい。ここで、Diは1バイトであり、1≦j≦8である。個々のバイトのそれぞれは、0から255の間(または、16進数の場合は0からFFの間)の、個々の10進数の値または16進数の値として解釈されてよい。
ある期間内にCANバスにおいてブロードキャストされる全メッセージのうちのj番目のバイトを考慮すると、数的な時系列が観察され得る。例えば、第1のバイトが選択される場合を考慮すると、それぞれのCANバスデータフレームの第1のバイトが0から255の間の値としてプロットされる。
観察に基づいて、この時系列が一定のデータパターンに従ってモデル化され得ることが見出されてきた。異なるタイプのメッセージが、同一または同様なデータペイロードを有するかもしれないが、時系列にわたって一連のCANバスデータフレームの固定されたバイトを検討することは、同様なグラフをもたらす傾向があることに留意されたい。
従って、攻撃者がCANバスにてインジェクションまたはスプーフィングによるもののような攻撃を実行する場合、悪意のあるペイロードが、通常の一連のデータストリームを妨害し、従って、通常のパターンからの逸脱を表す。本明細書は、データストリーム中の異常を特定し、これらを潜在的に悪意あるものとして特定すべく、時系列異常検出スキームを使用する。
いくつか従来の時系列異常検出法が単一の時系列スレッドに対して使用されるが、これとは対照的に、CANバスは、単一のデータストリーム内に複数の時系列メッセージを含んでよいことに留意されたい。従って、異常検出モデルをCANバスデータストリームに合わせるべく、記号集約近似(SAX)に基づいた新規なアルゴリズムが適用される。
図4を参照すると、図4は、本明細書の1または複数の例に係る、記号集約近似(SAX)値表400のブロック図である。
SAX値表400は、8ビット値(例えば、図3のデータフィールド316内の単一の特定されたバイト)が8個の異なる「バケット」に分割されているSAXの実施形態を表す。ここでは、説明のための例として8個のバケットが使用されているが、実際には、任意の数のバケットが使用されてよい。さらに、この例においては、それぞれのバケットが互いのバケットと等しいサイズとなっているが、これは、全ての場合に必要なわけではない。
いくつかの場合において、アドレス空間が、より大きな関心またはより小さな関心の複数の領域に分割されてよい。この場合、より高い粒度のバケットサイズが、より高い関心の領域に対して使用されてよく、より低い粒度のバケットサイズが、より小さな関心の領域に対して使用されてよい。
実際には、256個の値を有する8ビットのアドレス空間が、低解像度極限(言い換えると、256個全ての値が1個のバケットにグループ化される)における1個のバケットから、高解像度極限(言い換えると、それぞれの値がそれ自身の個々のバケットを有する)における256個のバケットまでの間の、任意の数のバケットに分割されてよい。これらの極限の場合は、限定された実際上の値を有する。実際問題として、2個、4個、8個、16個、またはいくつかの他の値のバケット個数のような、解像度と処理の容易さとの間の適切なトレードオフを提供するいくつかのバケット数を選択することが重要である。
図4から図6の目的のために、例示的な値として8個のバケットが選択されているが、本明細書にて説明される方法はまた、わずか4個のバケットによって実験的に適用されてきており、その場合にも好結果を得てきたことにもまた留意されるべきである。
8個のバケットの実施形態において、8ビットのアドレス空間は、(実施形態に応じて、等しいサイズまたは異なるサイズの)値の複数の範囲に分割され、その各々に対して、文字値によって特定されるバケットが割り当てられる。例えば、範囲0から31はバケットAに割り当てられ、範囲32から63まではバケットBに割り当てられ、範囲64から95はバケットCに割り当てられ、範囲96から127はバケットDに割り当てられ、範囲128から159はバケットEに割り当てられ、範囲160から191はバケットFに割り当てられ、範囲192から223はバケットGに割り当てられ、範囲224から255はバケットHに割り当てられる。
SAXは、未処理の時系列をバケット化された表現へと変換する方法である。一般論としては、全ての可能な値がn個のバケットに分割され、1個のバケットがSAX法における1つの記号によって表される。例えば、SAX値表400中のバケットAからHは、それぞれ、SAX法中の1つの記号を表す。
図5を参照すると、図5は、本明細書の1または複数の例に係る、SAXシーケンス表500のブロック図である。
SAXシーケンス表500は、SAX法の「シーケンス」の外観を例示する。SAXシーケンス表500は、8ビットのアドレス空間が、2記号シーケンスによる8個のバケットに分割されている例を例示する。言い換えると、時系列を算出することにおいて、そのシーケンスにわたってスライディングウィンドウが適用され、それぞれの個々の記号は、2記号シーケンスにおける第1の事項として機能する。従って、この例においては、可能なシーケンス、すなわち、シーケンスAAからHHが、表500によって特定される。
これは、潜在的に大きく、煩雑なバイナリデータストリームを、より扱いやすい離散的なシーケンスの形に縮小する。例えば、3記号シーケンスが選択されていた場合、第3の次元が表500に加えられ、そのシーケンスはAAAからHHHまでの範囲に及ぶであろうことに留意されたい。概して、SAXシーケンス表500は、アレイのそれぞれの次元にn×nのグリッドが含まれる多次元アレイとして考えられ得る。
図6を参照すると、図6は、本明細書の1または複数の例に係る、SAX頻度表600のブロック図である。
SAX頻度表600は、入力ストリング内の離散的なシーケンス値のそれぞれの発生の集計を保持する。図6の例においては、疑似ランダムな入力ストリング602が生成された。入力ストリング602は、記号BFCDFDCGAGFで始まる。入力ストリング602は、次に、2記号シーケンス、言い換えると、BF、FC、CD、DF、FD、DC、CG、GA、AG、GFなどに分割される。それぞれの記号の発生の集計が、SAX頻度表600に保持されてよい。
一般論として、n×nのグリッドが、それぞれのサブシーケンスの頻度を含むように設定される。ここで、nはSAXモデルにおけるバケットの数である。全てのサブシーケンスの頻度が、SAX頻度表600中の対応するスロットに記録されてよい。このグリッドは、「時系列ビットマップ」ともまた呼ばれ得る。
2つのn×nビットマップAとBの間の距離は、
として数学的に定義され得る。2つのビットマップ間の距離は、次に、それぞれの時間インスタンスにおける異常スコアとして測定されてよい。2つの要素間の距離は、互いの距離に対して等しい重みである必要はないことに留意されたい。複数の実施形態が、いくつかの要素に対して、より大きな、またはより小さな重みを与えてよい。
図7を参照すると、図7は、本明細書の1または複数の例に係る、潜在的侵入を示し得る異常の検出を例示するグラフ700である。グラフ700は、ある時間ウィンドウにわたってSAX時系列を測定した実際の実験結果を例示する。
実験的に、悪意のあるパケットがデータストリーム中に意図的に挿入された。グラフ700に明らかなように、潜在的侵入704は、その前の系列から、定義されている異常スコア閾値708を超えるほどの距離を有する。潜在的侵入704は閾値708を超えているので、これは異常として特定される。そして次に、是正措置が講じられ得るように、さらに解析されてよい。
図8は、本明細書の1または複数の例に係る、異常検出を実行する方法800のフローチャートである。
方法800のいくつかまたは全ては、例えば、本明細書の図9および図10に例示されるハードウェアのようなハードウェアで具現化され得る、図2の車内ネットワークゲートウェイ250によって実行され得ることに留意されたい。方法800は、ハードウェアプラットフォームにホストされる1または複数のロジック要素によって実行されてよく、これは、ハードウェア、ソフトウェア、ファームウェア、または他の適切なロジック要素の任意の組み合わせを含んでよい。方法800の説明全体にわたって、いくつかの動作が「ロジック」によって実行されると言われてよく、これは、本明細書の教示に従って実装される任意のロジックであると理解されるべきである。
ブロック804において、ロジックは、本明細書ではWcurおよびWpastと呼ばれる2つの連結された時間ウィンドウを、時系列にわたってスライドさせる。それぞれのビットマップが、時間ウィンドウSwを有する一連の詰められたメッセージにわたって生成されると仮定すると、ロジックは、2つの別個のビットマップ、すなわち、過去のウィンドウWpastにわたるBpastおよび現在のウィンドウWcurにわたるBcurを保持する。
ブロック808において、ロジックは、2つのウィンドウに対する時系列ビットマップBcurおよびBpastを更新する。例えば、ロジックは時刻0において開始するものと仮定する。Bpastは、第1のSw時間ウィンドウ(すなわち、{Sw,2Sw})内で観察されるデータを使用して構築されてよい。時刻t=2Swにおいて2つのビットマップが構築された後、それぞれの時間ステップにおいて異常スコアを生成する上述のdist関数を使用して2つのビットマップ間の距離を算出することにより検出が開始されてよい。
ブロック812において、ロジックは2つのウィンドウ間の差分を算出する。この差分は、それぞれの時間ステップにおいて異常スコアを生成する上述のdist関数に従って算出され得る。
ひとたび検出を開始すると、2つのビットマップは、スライディングウィンドウメカニズムを使用して、それぞれの時間ステップにおいて更新される。具体的に、それぞれの時間ステップtiにおいて、tiにて観察された新たなデータ記号を追加し、Wcurにて観察された最も古いデータ記号を破棄することにより、Bcurが更新される。すなわち、[ti−Sw,ti]によって観察されたデータシーケンスがBcurに保持される。Bpastも同様に更新される。すなわち、ウィンドウ[ti−2Sw,ti−Sw]の間のデータを記録する。
図9を参照すると、図9は、本明細書の1または複数の例に係る、距離算出の例を例示する。
この例示を簡略化する目的のため、図9は、4個のバケットのみが提供されるが、前述の実施形態のように、シーケンスサイズが依然として2である一実施形態を例示する。簡単に言うと、この距離は、2つの表の間のセル毎の差分の絶対値の合計であると言うことができる。従って、図9において、Bpast904およびBcur908は、11の値だけ異なる。Bpast904中のそれぞれのセルを、Bcur908中のその対応するセルと比較することによってこの数に到達する。差分があるところでは、その差分の絶対値が全体の距離に加えられる。この場合、距離は11である。これらのセルは等しい重みを有する必要がないことに留意されたい。異なるセルに対して異なる重みが割り当てられ得る。
ここで、図8に戻って参照すると、判断ブロック816において、ロジックは、2つのウィンドウ間の差分が閾値を超えるかどうかを判断する。この差分が閾値を超えない場合、異常は検出されず、ブロック898において、この方法は終了される。
しかしながら、差分が閾値を超える場合、ブロック820において、ロジックは、潜在的侵入として特定され得る潜在的な異常を警告してよい。潜在的侵入としてひとたび異常が特定されると、是正措置が講じられてよい。異常を検出することは、閾値を上回る差分の検出に加えて、相関が破られることを検出する(例えば、次元AとBとの間に既知の相関があり、フレーム間のSAXの差分が閾値Tを上回る場合、および、AとBとの間の相関が2つのフレームにわたって破られる場合に異常が検出される)ことをさらに有し得る点に留意されたい。代替的に、フレーム間の差分が閾値Tを上回ることにより、または、AとBとの間の相関が破られた場合に、異常が検出されてよい。2つの次元の相関がここでは非限定的な例として使用されるが、実際には、相関は3つまたはより多くの次元の間のものであってよいことにもまた留意されたい。
是正措置のいくつかの例が上記にて与えられているものの、それらの例は例示的且つ非限定的であり、検出される侵入に応じて任意の適切な是正措置が講じられてよいことが理解されるべきであることにさらに留意されたい。
上記の表1は、本明細書に開示される方法を検証すべく実験的に使用された、本明細書の一実施形態において使用されるパラメータの例を提供する。ここで開示されている値は、様々なタイプの車、様々なタイプのCANバス、様々なプロセッサ速度、または他の要因のような、様々な場合に対して調整され得ることに留意されたい。バケット数およびチャンクサイズは、パターンの粒度を決定する。異常スコアの閾値は、どれだけ正確に異常が検出され得るかを決定する。閾値は、真の異常を見つけられるように十分低くすべきであるが、誤検知を避けられるように十分高くすべきである。
いくつかの実施形態において、誤検知を減らすべく、データを収集し、適切な異常スコアを決定すべく、構成段階が最初に実行されてよい。適切な異常スコアは、侵入または他の異常の無い時系列における最も高い差分スコアよりも高くなるように選択されてよい。ウィンドウサイズは、どれほど遠くの先まで異常なパターンを探すかに従って選択される。いくつかの場合において、大抵の周期的メッセージが少なくとも2つまたは3つの時刻においてカバーされるようにウィンドウサイズを設定するのが合理的である。ウィンドウサイズは、適切なウィンドウサイズをヒューリスティックに決定すべく、参照される時系列に対してもまた調整され得る。
実験的な例において、バケットサイズは4、チャンクサイズは1バイトであり、CANバスデータフレームのペイロード中の8バイトのパターンから選択された。ウィンドウサイズは2秒であり、サブシーケンス長は2バイトであった。サブシーケンスオーバーラップ長は1バイトであった。別段の定めの無い限り、それぞれのサブシーケンスは記号2つ分の長さであり、1つの記号が前のシーケンスとオーバーラップされた。差分に対して選択された閾値は3000であった。
実際の車両からのCANバスデータセットを使用して、評価が実行された。これは、ギア値およびRPM値がスプーフィングされたスプーフィング攻撃とともに、最も優勢なメッセージIDのメッセージ、およびランダムメッセージIDのメッセージが挿入されたインジェクション攻撃を含んでいた。
本明細書の教示の例示的な実装例が、8バイトの各ストリームをトラッキングし、異常スコアが閾値を越えると異常を報告した。閾値は、各バイトのストリームに対して異なるように設定されてよく、誤検知を減らすべく、通常のデータストリームによって予め参照されてよいことに留意されたい。
上記の設定を使用して、シミュレーションされた攻撃がロジックによって成功裏に検出された。図7のグラフ700とは同一ではないが、シミュレーションされた攻撃は、異常として識別可能であり、これにより潜在的侵入として警告され得る、同様なスパイクをデータパターンにもたらした。
図10は、本明細書の1または複数の例に係る、コンピューティングプラットフォーム1002Aのコンポーネントのブロック図である。示される実施形態において、プラットフォーム1002A、1002B、および1002Cが、データセンタ管理プラットフォーム1006およびデータ解析エンジン1004とともに、ネットワーク1008を介して相互接続される。他の実施形態において、コンピュータシステムは、任意の適切な数の(すなわち、1または複数の)プラットフォームを含んでよい。いくつかの実施形態において(例えば、コンピュータシステムが単一のプラットフォームのみを含む場合)、システム管理プラットフォーム1006の全てまたは一部がプラットフォーム1002に含まれてよい。プラットフォーム1002は、1または複数の中央処理装置(CPU)1012、(任意の数の様々なモジュールを含み得る)メモリ1014、チップセット1016、通信インタフェース1018、並びに、プラットフォーム1002上で実行されるアプリケーションと関連付けられたワークロードを実行することの可能な、ハイパーバイザ1020またはその他のオペレーティングシステムを実行するための任意の他の適切なハードウェアおよび/またはソフトウェアを有するプラットフォームロジック1010を含んでよい。いくつかの実施形態において、プラットフォーム1002は、これらのアプリケーションを起動する1または複数のゲストシステム1022のためのホストプラットフォームとして機能してよい。プラットフォーム1002Aは、高性能コンピューティング環境、データセンタ、通信サービスプロバイダインフラストラクチャ(例えば、進化型パケットコアの1または複数の部分)、インメモリコンピューティング環境、車両(例えば、自動車または航空機)のコンピューティングシステム、モノのインターネット環境、工業制御システム、他のコンピューティング環境、またはそれらの組み合わせのような、任意の適切なコンピューティング環境を表してよい。
本開示の様々な実施形態において、複数のハードウェアリソース(例えば、コアおよびアンコア)の蓄積されたストレスおよび/または蓄積されたストレスのレートが監視され、コンピュータプラットフォーム1002Aのエンティティ(例えば、システム管理プラットフォーム1006、ハイパーバイザ1020、または、他のオペレーティングシステム)が、ストレス情報に従ってワークロードを実行すべく、プラットフォームロジック1010のハードウェアリソースを割り当ててよい。いくつかの実施形態において、より正確にハードウェアリソースの健全性を決定すべく、自己診断機能がストレス監視と組み合わされてよい。各プラットフォーム1002は、プラットフォームロジック1010を含んでよい。プラットフォームロジック1010は、プラットフォーム1002の機能を可能にするロジックの中でも特に、1または複数のCPU1012、メモリ1014、1または複数のチップセット1016、および通信インタフェース1028を有する。3つのプラットフォームが例示されているものの、コンピュータプラットフォーム1002Aは、任意の適切な数のプラットフォームと相互接続されてよい。様々な実施形態において、プラットフォーム1002は、(例えば、ラックまたはバックプレーンスイッチを有し得る)ネットワーク1008を通じて一緒に結合された複数のプラットフォームを有する筐体、ラック、または他の適切な構造中にインストールされた回路基板に存在してよい。
CPU1012は、それぞれ、任意の適切な数のプロセッサコアおよびサポートロジック(例えば、アンコア)を有してよい。これらのコアは、CPU1012および/またはチップセット1016にある1または複数のコントローラを通じて、互いに、メモリ1014に、少なくとも1つのチップセット1016に、および/または、通信インタフェース1018に結合されてよい。特定の実施形態において、CPU1012は、プラットフォーム1002Aに対して恒久的に、または取り外し可能に結合されたソケット内で具現化される。4つのCPUが示されているものの、プラットフォーム1002は、任意の適切な数のCPUを含んでよい。
メモリ1014は、限定するものではないが、磁気媒体(例えば、1または複数のテープドライブ)、光媒体、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、フラッシュメモリ、リムーバブル媒体、もしくは、任意の他の適切なローカルまたはリモートメモリコンポーネントまたは複数のコンポーネントを含む、揮発性または不揮発性メモリの任意の形態を有してよい。メモリ1014は、プラットフォーム1002Aによる短期、中期、および/または長期のストレージのために使用されてよい。メモリ1014は、コンピュータ可読媒体に組み込まれたソフトウェア、および/または、ハードウェアに組み込まれた、さもなければ格納されたエンコードされたロジック(例えばファームウェア)を含む、プラットフォームロジック1010によって利用される任意の適切なデータまたは情報を格納してよい。メモリ1014は、CPU1012のコアによって使用されるデータを格納してよい。いくつかの実施形態において、メモリ1014は、マネージャビリティエンジン1026またはプラットフォームロジック1010の他のコンポーネントと関連付けられた機能を提供すべく、CPU1012のコアまたは他の処理要素(例えば、チップセット1016に常駐するロジック)によって実行され得る命令のためのストレージもまた有してよい。プラットフォーム1002は、CPU1012の動作をサポートするための任意の適切なロジックを有する1または複数のチップセット1016もまた含んでよい。様々な実施形態において、チップセット1016は、CPU1012と同一のダイまたはパッケージに存在してよい。もしくは、1または複数の異なるダイまたはパッケージに存在してよい。それぞれのチップセットは、任意の適切な数のCPU1012をサポートしてよい。チップセット1016は、プラットフォームロジック1010の他のコンポーネント(例えば、通信インタフェース1018またはメモリ1014)を1または複数のCPUへ結合するための1または複数のコントローラもまた含んでよい。示される実施形態において、それぞれのチップセット1016は、マネージャビリティエンジン1026もまた含む。マネージャビリティエンジン1026は、チップセット1016の動作をサポートするための任意の適切なロジックを含んでよい。特定の実施形態において、マネージャビリティエンジン1026(イノベーションエンジンともまた呼ばれ得る)は、チップセット1016、チップセット1016によって管理されるCPU1012および/またはメモリ1014、プラットフォームロジック1010の他のコンポーネント、および/または、プラットフォームロジック1010のコンポーネント間の様々な接続から、リアルタイムのテレメトリデータを収集することが可能である。様々な実施形態において、収集されたテレメトリデータは、本明細書にて説明されるストレス情報を含む。
様々な実施形態において、マネージャビリティエンジン1026は、CPU1012上で実行されている処理を全く中断せず、または最低限の中断だけでテレメトリデータを収集すべく、プラットフォームロジック1010の様々な要素とインタフェース接続の可能な帯域外の非同期算出エージェントとして動作する。例えば、マネージャビリティエンジン1026は、(例えば、ソフトウェア命令を実行することによって)マネージャビリティエンジン1026の機能を提供し、これにより、プラットフォームロジック1010によって実行されるワークロードに関連付けられる動作のためのCPU1012の処理サイクルを節約する、チップセット1016上の専用の処理要素(例えば、プロセッサ、コントローラ、または他のロジック)を有してよい。さらに、マネージャビリティエンジン1026のための専用のロジックは、CPU1012に対して非同期で動作してよく、CPUの負荷を増大させること無く、テレメトリデータの少なくともいくつかを収集してよい。
マネージャビリティエンジン1026は、収集するテレメトリデータを処理してよい(ストレス情報の処理の具体例が本明細書に提供される)。様々な実施形態において、マネージャビリティエンジン1026は、収集するデータおよび/またはその処理の結果を、1または複数のハイパーバイザ1020または他のオペレーティングシステムおよび/または(システム管理プラットフォーム1006のような任意の適切なロジック上で実行され得る)システム管理ソフトウェアのような、コンピュータシステム中の他の要素に報告する。特定の実施形態において、コアが過剰な量のストレスを蓄積したというような重大なイベントが、テレメトリデータを報告するための通常の間隔よりも前に報告されてよい(例えば、検出すると直ちに通知が送信されてよい)。
加えて、マネージャビリティエンジン1026は、特定のチップセット1016がどのCPU1012を管理するか、および/または、どのテレメトリデータが収集され得るかを設定するように構成可能な、プログラム可能なコードを含んでよい。
チップセット1016は、それぞれ、通信インタフェース1028もまた含む。通信インタフェース1028は、チップセット1016と1または複数のI/Oデバイス、1または複数のネットワーク1008、および/または、ネットワーク1008に結合された1または複数のデバイス(例えば、システム管理プラットフォーム1006)との間における、シグナリングおよび/またはデータの通信のために使用されてよい。例えば、通信インタフェース1028は、データパケットのようなネットワークトラフィックを送信および受信するために使用されてよい。特定の実施形態において、通信インタフェース1028は、ネットワークインタフェースカードまたはネットワークアダプタとしてもまた知られている、1または複数の物理ネットワークインタフェースコントローラ(NIC)を有する。NICは、任意の適切な物理層、および、(例えば、IEEE802.3規格で定義されるような)イーサネット(登録商標)、ファイバチャネル、インフィニバンド、WiFi(登録商標)、または他の適切な規格のようなデータリンク層規格を使用して通信するための電子回路を含んでよい。NICは、ケーブル(例えば、イーサネット(登録商標)ケーブル)へ結合し得る1または複数の物理ポートを含んでよい。NICは、チップセット1016の任意の適切な要素(例えば、マネージャビリティエンジン1026またはスイッチ1030)と、ネットワーク1008へ結合された別のデバイスとの間の通信を可能にし得る。様々な実施形態において、NICは、チップセットと統合されてよい(すなわち、チップセットロジックの残りと同一の集積回路または回路基板にあってよい)、もしくは、電気機械的にチップセットへ結合されている別の集積回路または回路基板にあってよい。
特定の実施形態において、通信インタフェース1028は、マネージャビリティエンジン1026によって実行される管理および監視機能と関連付けられたデータの(例えば、マネージャビリティエンジン1026とデータセンタ管理プラットフォーム1006との間の)通信を可能にしてよい。様々な実施形態において、プラットフォームロジック1010によって実行されるワークロードに関連付けられる動作のために通信インタフェース1018のNICの使用量を確保すべく、マネージャビリティエンジン1026は、テレメトリデータを(例えば、システム管理プラットフォーム1006へ)報告するために、通信インタフェース1028の要素(例えば、1または複数のNIC)を利用してよい。
スイッチ1030は、通信インタフェース1028の(例えば、NICによって提供される)様々なポートへ結合してよく、これらのポートとチップセット1016の様々なコンポーネント(例えば、CPU1012へ結合された1または複数のペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)レーン)との間でデータを切り替えてよい。スイッチ1030は、物理的または仮想的(すなわち、ソフトウェア)スイッチであってよい。
プラットフォームロジック1010は、追加の通信インタフェース1018を含んでよい。通信インタフェース1028と同様に、通信インタフェース1018は、プラットフォームロジック1010と1または複数のネットワーク1008およびネットワーク1008に結合された1または複数のデバイスとの間のシグナリングおよび/またはデータの通信のために使用されてよい。例えば、通信インタフェース1018は、データパケットのようなネットワークトラフィックを送信および受信するために使用されてよい。特定の実施形態において、通信インタフェース1018は、1または複数の物理NICを有する。これらのNICは、プラットフォームロジック1010の任意の適切な要素(例えば、CPU1012またはメモリ1014)と、ネットワーク1008に結合された別のデバイス(例えば、1または複数のネットワークを通じてネットワーク1008に結合された他のプラットフォームまたはリモートコンピューティングデバイスの要素)との間の通信を可能にし得る。
プラットフォームロジック1010は、任意の適切なタイプのワークロードを受信および実行してよい。ワークロードは、1または複数のコアまたは関連付けられたロジックのような、プラットフォームロジック1010の1または複数のリソースを利用するための任意の要求を含んでよい。例えば、ワークロードは、I/Oデバイスドライバ1024またはゲストシステム1022のようなソフトウェアコンポーネントをインスタンス化するための要求、仮想マシン1032または(ネットワーク1008に結合されたネットワークノードのような)プラットフォーム1002Aの外部のデバイスから受信されるネットワークパケットを処理するための要求、ゲストシステム1022、プラットフォーム1002A上で実行されているアプリケーション、プラットフォーム1002A上で実行されているハイパーバイザ1020または他のオペレーティングシステムに関連付けられた処理またはスレッドを実行するための要求、もしくは、その他の適切な処理要求を有してよい。
仮想マシン1032は、それ自身の専用ハードウェアを有するコンピュータシステムをエミュレートしてよい。仮想マシン1032は、ハイパーバイザ1020に加えてゲストオペレーティングシステムを実行してよい。プラットフォームロジック1010のコンポーネント(例えば、CPU1012、メモリ1014、チップセット1016、および通信インタフェース1018)は、ゲストオペレーティングシステムにとって仮想マシン1032がそれ自身の専用コンポーネントを有するように見えるように、仮想化されてよい。
仮想マシン1032は、仮想マシンによってそのネットワークインタフェースとして使用される、仮想化NIC(vNIC)を含んでよい。vNICは、媒体アクセス制御(MAC)アドレスまたは他の識別子が割り当てられてよく、これにより、複数の仮想マシン1032がネットワーク中で個別にアドレス指定可能なようにできる。
VNF1034は、仮想化インフラストラクチャに配置され得る、定義されたインタフェースおよび挙動を有する機能的構成単位のソフトウェア実装を有してよい。特定の実施形態において、VNF1034は、特定の機能(例えば、ワイドエリアネットワーク(WAN)最適化、仮想プライベートネットワーク(VPN)終了、ファイアウォール動作、負荷分散動作、セキュリティ機能、など)を集合的に提供する、1または複数の仮想マシン1032を含んでよい。プラットフォームロジック1010上で実行されているVNF1034は、専用ハードウェアを通じて実装される従来のネットワークコンポーネントと同一の機能を提供してよい。例えば、VNF1034は、仮想化進化型パケットコア(vEPC)コンポーネント、モビリティ管理エンティティ、第3世代パートナーシッププロジェクト(3GPP)制御およびデータプレーンコンポーネントなどのような、任意の適切なNFVワークロードを実行するためのコンポーネントを含んでよい。
SFC1036は、ネットワークパケット処理動作のような一連の動作を実行するためのチェーンとしてまとめられたVNF1034のグループである。サービス機能チェイニングは、サービスチェーンを形成すべく、ネットワークにおいて一緒につなぎ合わされたネットワークサービス(例えば、ファイアウォール、負荷分散装置)の順序付けられたリストを定義する能力を提供してよい。
ハイパーバイザ1020(仮想マシンモニタとしてもまた知られている)は、ゲストシステム1022を形成および実行するためのロジックを有してよい。ハイパーバイザ1020は、仮想マシンによって、仮想動作プラットフォームで実行されるゲストオペレーティングシステムを提供してよく(すなわち、仮想マシンにとって、それらが実際に単一のハードウェアプラットフォームに統合される場合、それらが別個の物理ノードにて実行されているように見える)、また、プラットフォームロジック1010によるゲストオペレーティングシステムの実行を管理してよい。ハイパーバイザ1020のサービスは、ソフトウェア中の仮想化により、または、最低限のソフトウェア介在が必要なハードウェア補助によるリソースを通じて、またはその両方によって提供されてよい。様々なゲストオペレーティングシステムの複数のインスタンスがハイパーバイザ1020によって管理されてよい。それぞれのプラットフォーム1002は、ハイパーバイザ1020の別個のインスタンス化を有してよい。
ハイパーバイザ1020は、プラットフォームロジックを制御し、ゲストオペレーティングシステムを管理すべく、プラットフォームロジック1010上で直接実行されるネイティブまたはベアメタルハイパーバイザであってよい。代替的に、ハイパーバイザ1020は、ホストオペレーティングシステム上で実行され、ホストオペレーティングシステムからゲストオペレーティングシステムを取り出す、ホストされたハイパーバイザであってよい。ハイパーバイザ1020は、仮想スイッチングおよび/またはルーティング機能をゲストシステム1022の仮想マシンへ提供し得る仮想スイッチ1038を含んでよい。仮想スイッチ1038は、複数の仮想マシン1032のvNICを互いに結合する論理スイッチングファブリックを有してよく、これにより、これを通じて複数の仮想マシンが互いに通信し得る仮想ネットワークを形成する。
仮想スイッチ1038は、プラットフォームロジック1010のコンポーネントを使用して実行されるソフトウェア要素を有してよい。様々な実施形態において、ハイパーバイザ1020は、プラットフォーム1002において変化する条件(例えば、仮想マシン1032の追加または削除、もしくは、プラットフォームの性能を高めるべく行われ得る最適化の特定)に応じて、ハイパーバイザ1020に仮想スイッチ1038のパラメータを再設定させ得る任意の適切なエンティティ(例えば、SDNコントローラ)と通信してよい。
ハイパーバイザ1020は、(ストレス情報を含み得る)テレメトリデータに基づいてプラットフォームリソースの割り当てを決定するためのロジックを含み得る、リソース割り当てロジック1044もまた含んでよい。リソース割り当てロジック1044は、プラットフォームロジック1010のコンポーネントのような、そのような最適化を実装するためのプラットフォーム1002Aのプラットフォームロジック1010エンティティの様々なコンポーネントと通信するためのロジックもまた含んでよい。
任意の適切なロジックが、これらの最適化判断の1または複数を形成してよい。例えば、システム管理プラットフォーム1006、ハイパーバイザ1020のリソース割り当てロジック1044または他のオペレーティングシステム、もしくは、コンピュータプラットフォーム1002Aの他のロジックが、そのような判断を行うことが可能であってよい。様々な実施形態において、システム管理プラットフォーム1006は、複数のプラットフォーム1002からテレメトリデータを受信し、複数のプラットフォーム1002にわたるワークロード配置を管理してよい。システム管理プラットフォーム1006は、システム管理プラットフォームによって指示されたワークロード配置を実装すべく、ハイパーバイザ1020と(例えば、帯域外の方式で)、または様々なプラットフォーム1002の他のオペレーティングシステムと通信してよい。
プラットフォームロジック1010の要素は、任意の適切な態様で一緒に結合されてよい。例えば、バスが複数のコンポーネントのいずれかを一緒に結合してよい。バスは、マルチドロップバス、メッシュインターコネクト、リングインターコネクト、ポイントツーポイントインターコネクト、シリアルインターコネクト、パラレルバス、コヒーレント(例えば、キャッシュコヒーレント)バス、層状プロトコルアーキテクチャ、差動バス、または、ガニングトランシーバロジック(GTL)バスのような、任意の既知のインターコネクトを含んでよい。
コンピュータプラットフォーム1002Aの要素は、1または複数のネットワーク1008を通じたもののような、任意の適切な態様で一緒に結合されてよい。ネットワーク1008は、任意の適切なネットワーク、もしくは、1または複数の適切なネットワーキングプロトコルを使用して動作する1または複数のネットワークの組み合わせであってよい。ネットワークは、通信システムを通じて伝搬する情報のパケットを受信および送信するための、一連のノード、ポイント、および相互接続された通信パスを表してよい。例えば、ネットワークは、1または複数のファイアウォール、ルータ、スイッチ、セキュリティ機器、アンチウイルスサーバ、もしくは、他の有用なネットワークデバイスを含んでよい。
図11は、本明細書の1または複数の例に係る、中央処理装置(CPU)1112のブロック図である。CPU1112は特定の構成を示しているが、CPU1112のコアおよび他のコンポーネントは、任意の適切な態様で配置されてよい。CPU1112は、マイクロプロセッサ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンチップ(SOC)、または、コードを実行するための他のデバイスのような、任意のプロセッサまたは処理デバイスを有してよい。CPU1112は、示される実施形態において、非対称処理要素または対称処理要素を含み得る、4つの処理要素(示される実施形態においてはコア1130)を含む。しかしながら、CPU1112は、対称または非対称であり得る任意の数の処理要素を含んでよい。
ハードウェア処理要素の例は、スレッドユニット、スレッドスロット、スレッド、処理ユニット、コンテキスト、コンテキストユニット、論理プロセッサ、ハードウェアスレッド、コア、および/または、実行状態またはアーキテクチャ状態のようなプロセッサについての状態を保持することの可能な任意の他の要素を含む。言い換えると、処理要素は、一実施形態において、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、または他のコードのようなコードに独立に関連付けられることの可能な任意のハードウェアを指す。物理プロセッサ(またはプロセッサソケット)は、通常、コアまたはハードウェアスレッドのような任意の数の他の処理要素を潜在的に含む集積回路を指す。
コアは、独立なアーキテクチャ状態を保持することの可能な集積回路に配置されるロジックを指してよい。ここで、それぞれ独立に保持されるアーキテクチャ状態は、少なくともいくつかの専用実行リソースに関連付けられる。ハードウェアスレッドは、独立なアーキテクチャ状態を保持することの可能な集積回路に配置される任意のロジックを指してよい。ここで、独立に保持されるアーキテクチャ状態は、実行リソースへのアクセスを共有する。物理CPUは、任意の適切な数のコアを含んでよい。様々な実施形態において、コアは、1または複数のアウトオブオーダプロセッサコアもしくは1または複数のインオーダプロセッサコアを含んでよい。しかしながら、コアは、ネイティブコア、ソフトウェア管理されたコア、ネイティブ命令セットアーキテクチャ(ISA)を実行するように構成されたコア、翻訳されたISAを実行するように構成されたコア、協調設計コア、または他の既知のコアのような、任意のタイプのコアから個別に選択されてよい。ヘテロジニアスなコア環境(すなわち、非対称コア)において、バイナリ変換のようないくつかの形態の変換が、一方または両方のコアにおいてコードをスケジューリングまたは実行するために利用されてよい。
示される実施形態において、コア1130Aは、入ってくる命令をフェッチし、様々な処理(例えば、キャッシュ、デコーディング、分岐予測など)を実行し、命令/動作をアウトオブオーダ(OOO)エンジンへと渡すために使用されるフロントエンドユニット1170を有するアウトオブオーダプロセッサを含む。OOOエンジンは、デコードされた命令にさらなる処理を実行する。
フロントエンド1170は、フェッチされた要素をデコードするためのフェッチロジックに結合されたデコードモジュールを含んでよい。フェッチロジックは、一実施形態において、コア1130のスレッドスロットに関連付けられた個々のシーケンサを含む。通常、コア1130は、コア1130にて実行可能な命令を定義/規定する第1のISAに関連付けられる。多くの場合、第1のISAの一部であるマシンコード命令が、実行されるべき命令または動作を参照/規定する命令(オペコードと呼ばれる)の一部を含む。デコードモジュールは、それらのオペコードからこれらの命令を認識し、デコードされた命令を、第1のISAによって定義されるように処理するためのパイプラインに渡す回路を含んでよい。コア1130のデコーダは、一実施形態において、同一のISA(または、それらのサブセット)を認識する。代替的に、ヘテロジニアスなコア環境において、1または複数のコア(例えば、コア1130B)のデコーダは、第2のISA(第1のISAのサブセットまたは異なるISAのいずれか)を認識してよい。
示される実施形態において、アウトオブオーダエンジンは、1または複数のマイクロ命令またはuopの形態であり得るデコードされた命令をフロントエンドユニット1170から受信し、これらをレジスタなどのような適切なリソースへ割り当てるための割り当てユニット1182を含む。次に、これらの命令は、リソースを確保し、複数の実行ユニット1186A−1186Nのうちの1つにおいてこれらを実行するようにスケジューリングするリザベーションステーション1184へ提供される。例えば、中でも特に、演算ロジックユニット(ALU)、ロードおよびストアユニット、ベクトル処理ユニット(VPU)、浮動小数点実行ユニットを含む、様々なタイプの実行ユニットが存在し得る。これらの様々な実行ユニットからの結果は、順序付けられていない結果を取り込み、これらを正しいプログラム順序に戻すリオーダバッファ(ROB)1188へ提供される。
示される実施形態において、フロントエンドユニット1170およびアウトオブオーダエンジン1180の両方が、メモリ階層の様々なレベルに結合される。命令レベルキャッシュ1172が具体的に示されており、これは次に中間レベルキャッシュ1176へ結合し、これは次に最終レベルキャッシュ1195へ結合する。一実施形態において、最終レベルキャッシュ1195は、オンチップ(アンコアと呼ばれることがある)ユニット1190に実装される。アンコア1190は、例示される実施形態においては混載DRAM(eDRAM)によって実装されるシステムメモリ1199と通信してよい。OOOエンジン1180内の様々な実行ユニット1186が、中間レベルキャッシュ1176ともまた通信する第1レベルキャッシュ1174と通信する。追加のコア1130B−1130Dが、同様に、最終レベルキャッシュ1195に結合してよい。
特定の実施形態において、アンコア1190は、コアの電圧ドメインおよび/または周波数ドメインとは別個の電圧ドメインおよび/または周波数ドメインにあってよい。すなわち、アンコア1190は、コアに電力を供給するために使用される供給電圧とは異なる供給電圧によって動力を供給されてよい。および/または、コアの動作周波数とは異なる周波数で動作してよい。
CPU1112は、電力制御ユニット(PCU)1140もまた含んでよい。様々な実施形態において、PCU1140は、複数のコアのそれぞれ(コア毎に)およびアンコアに適用される供給電圧および動作周波数を制御してよい。PCU1140は、また、ワークロードを実行していない場合、アイドル状態(電圧およびクロックが供給されない状態)に入るように、コアまたはアンコアに命令してもよい。
様々な実施形態において、PCU1140は、コアおよびアンコアのようなハードウェアリソースの1または複数のストレス特性を検出してよい。ストレス特性は、ハードウェアリソースにかかっているストレスの量の表示を有してよい。例として、ストレス特性は、ハードウェアリソースに適用される電圧または周波数、ハードウェアリソースで感知される電力レベル、電流レベル、または電圧レベル、ハードウェアリソースで感知される温度、もしくは、その他の適切な測定であってよい。様々な実施形態において、特定のストレス特性の複数の測定(例えば、異なる位置におけるもの)が、特定の時間インスタンスにおいてストレス特性を感知する場合に実行されてよい。様々な実施形態において、PCU1140は、任意の適切な間隔でストレス特性を検出してよい。
様々な実施形態において、PCU1140は、コア1130とは別個のコンポーネントである。特定の実施形態において、PCU1140は、コア1130によって使用されるクロック周波数とは異なるクロック周波数で動作する。PCUがマイクロコントローラであるいくつかの実施形態において、PCU1140は、コア1130によって使用されるISAとは異なるISAに従って命令を実行する。
様々な実施形態において、CPU1112は、電力が失われた場合でもストレス情報が保持されるように、コア1130またはアンコア1190に関連付けられた(ストレス特性、増加分のストレス値、蓄積されたストレス値、ストレス蓄積レート、または、他のストレス情報のような)ストレス情報を格納するための不揮発性メモリ1150もまた含んでよい。
前述したものは、本明細書に開示される主題の1または複数の実施形態の特徴の概要を説明するものである。これらの実施形態は、当該分野の通常の技術を有する者(当業者)が本開示の様々な態様をより良好に理解することを可能にすべく提供されている。いくつかの十分に理解される用語、並びに基本的な技術および/または規格は、詳細に説明されることなく参照されてよい。当業者は、本明細書の教示を実施するのに十分なそうした技術および規格における背景知識または情報を持っている、またはそれらへのアクセスを有するであろうことが期待される。
当業者は、本明細書にて導入される実施形態と同一の目的を実行するためおよび/または同一の利点を実現するための他の処理、構造、または変更を設計または修正するための基礎として、当業者が本開示を容易に使用し得ることを理解するであろう。当業者は、そのような等価な構造が、本開示の趣旨および範囲から逸脱するものではないこと、および、当業者が、本開示の趣旨および範囲から逸脱せずに本明細書に様々な変化、代替、および変更を成し得ることもまた認識するであろう。
前述の説明において、いくつかまたは全ての実施形態のうちのいくつかの態様が、添付の請求項を実現するために厳密に必要なものよりも詳細に説明される。これらの詳細は、開示される実施形態の状況および例示を提供する目的で、非限定的な例としてのみ提供されるものである。そのような詳細が必要なものと理解されるべきではなく、また、限定として請求項「中に読み込まれる」べきではない。この用語は、「一実施形態」または「複数の実施形態」を指し得る。これらの用語、および実施形態への任意の他の参照は、1または複数の実施形態の任意の組み合わせを指すものとして広く理解されるべきである。さらに、特定の「実施形態」において開示されるいくつかの特徴は、複数の実施形態にわたって、全く同じように拡張され得るだろう。例えば、特徴1および2が「一実施形態」に開示される場合、実施形態Aは特徴1を有するが特徴2は無くてよく、これに対し、実施形態Bは特徴2を有するが特徴1は無くてよい。
本明細書は、ブロック図の形式で例示を提供してよく、そこでは、いくつかの特徴が別個のブロックで開示されている。これらは、様々な特徴がどのように相互に動作するのかを開示するものとして広く理解されるべきであり、それらの特徴が、別個のハードウェアまたはソフトウェアにおいて必ず具現化されなければならないということを示唆することは意図されない。さらに、単一のブロックが同一のブロック中に1つよりも多くの特徴を開示するところでは、それらの特徴は、同一のハードウェアおよび/またはソフトウェアにおいて必ずしも具現化される必要はない。例えば、コンピュータ「メモリ」は、いくつかの環境において、複数レベルのキャッシュまたはローカルメモリ、メインメモリ、バッテリバックアップされた揮発性メモリ、および、ハードディスク、ストレージサーバ、光ディスク、テープドライブ、または同様なもののような様々な形式の永続メモリの間で分散またはマッピングされ得る。いくつかの実施形態において、複数のコンポーネントのいくつかは、省略または統合されてよい。一般的な意味において、図面に示される構成は、それらの表現においてより論理的であり得る。これに対し、物理的なアーキテクチャは、これらの要素の様々な順列、組み合わせ、および/またはハイブリッドを含み得る。本明細書にて概説される動作目的を実現すべく、無数の可能な設計上の構成が使用され得る。従って、関連付けられるインフラストラクチャは、無数の代替的な構成、設計選択、デバイスの可能性、ハードウェア構成、ソフトウェア実装、および機器のオプションを有する。
有形且つ非一時的コンピュータ可読媒体であり得るコンピュータ可読媒体への参照が本明細書において成されてよい。本明細書において、および請求項全体にわたって使用されるように、「コンピュータ可読媒体」とは、同一または異なるタイプの1または複数のコンピュータ可読媒体を含むものと理解されるべきである。コンピュータ可読媒体は、非限定的な例として、光学式ドライブ(例えば、CD/DVD/ブルーレイ)、ハードドライブ、ソリッドステートドライブ、フラッシュメモリ、またはその他の不揮発性媒体を含んでよい。コンピュータ可読媒体は、適切な場合且つ特定のニーズに基づいて、リードオンリメモリ(ROM)、所望の命令を実行するように構成されたFPGAまたはASICのような媒体、所望の命令を実行するようにFPGAまたはASICをプログラミングするための格納された命令、ハードウェアで他の回路に統合され得るインテレクチュアルプロパティ(IP)ブロック、もしくは、ハードウェアに直接エンコードされた命令またはマイクロプロセッサ、デジタル信号プロセッサ(DSP)、マイクロコントローラ、または任意の他の適切なコンポーネント、デバイス、要素、またはオブジェクトのようなプロセッサ上のマイクロコードもまた含み得る。非一時的ストレージ媒体は、本明細書において、開示された動作を提供するように、または開示された動作をプロセッサに実行させるように構成された任意の非一時的特定用途向またはプログラマブルハードウェアを含むことが明確に意図されている。
本明細書および請求項の全体にわたって、様々な要素が互いに「通信可能に」、「電気的に」、「機械的に」、さもなければ単に「結合され」てよい。そのような結合は、直接的なポイントツーポイント結合であってよい。または、中間デバイスを含んでよい。例えば、2つのデバイスは、通信を促進するコントローラを介して互いに通信可能に結合されてよい。複数のデバイスは、信号ブースタ、分圧器、またはバッファのような中間デバイスを介して互いに電気的に結合されてよい。機械的に結合された複数のデバイスが、間接的に機械的に結合されてよい。
本明細書に開示される任意の「モジュール」または「エンジン」は、ソフトウェア、ソフトウェアスタック、ハードウェア、ファームウェア、および/またはソフトウェアの組み合わせ、エンジンまたはモジュールの機能を実行するように構成された回路、もしくは、上記にて開示されるような任意のコンピュータ可読媒体を指してよい。またはこれらを含んでよい。そのようなモジュールまたはエンジンは、適切な環境において、プロセッサ、メモリ、ストレージ、インターコネクト、ネットワークおよびネットワークインタフェース、アクセラレータ、またはその他の適切なハードウェアのようなハードウェア計算リソースを含み得るハードウェアプラットフォーム上に、または、このようなハードウェアプラットフォームとともに提供されてよい。そのようなハードウェアプラットフォームは、(例えば、PCフォームファクタ中の)単一のモノリシックデバイスとして、もしくは、その機能のいくつかまたは一部が分散された状態で提供されてよい(例えば、算出、メモリ、ストレージ、およびその他のリソースが動的に割り当てられてよく、互いにローカルな必要がなくてよい、ハイエンドデータセンタにおける「複合ノード」)。
本明細書において、フローチャート、信号フロー図、または、特定の順序で実行される動作を示すその他の図が開示されてよい。明確にそうでないことが留意されていない限り、または、特定の状況において必要とされない限り、順序は、非限定的な例としてのみ理解されるべきである。さらに、1つの動作が別のものに続くように示される場合、関連していようと関連していなかろうと、他の介在する動作もまた起きてよい。いくつかの動作はまた、同時に、または並列に実行されてもよい。ある動作が別の事項または動作「に基づいて」またはこれら「に従って」いるものと言われる場合、これは、この動作が、他の事項または動作に対して少なくとも部分的に基づいていること、または少なくとも部分的に従っていることを示唆するものと理解されるべきである。これは、この動作がその事項または動作にのみ、または排他的に基づいていること、もしくは、これらにのみ、または排他的に従っていることを示唆するものとして解釈されるべきではない。
本明細書にて開示される任意のハードウェア要素の全てまたは一部は、中央処理装置(CPU)パッケージを含むシステムオンチップ(SoC)において容易に提供され得る。SoCは、コンピュータまたは他の電子システムのコンポーネントを単一のチップに統合した集積回路(IC)を表す。従って、例えば、クライアントデバイスまたはサーバデバイスは、全てにおいて、または一部において、SoCに提供され得る。SoCは、デジタル、アナログ、ミックス信号、および無線周波数機能を含んでよく、それらの全てが単一のチップ基板に提供されてよい。他の実施形態は、単一の電子パッケージ内に配置され、電子パッケージを通じて互いに密接に相互作用するように構成された複数のチップを有するマルチチップモジュール(MCM)を含んでよい。
一般的な意味において、任意の適切に構成された回路またはプロセッサは、本明細書にて詳述される動作を実現すべく、データと関連付けられた任意のタイプの命令を実行することができる。本明細書に開示される任意のプロセッサは、ある要素または項目(例えば、データ)を、1つの状態もしくは物から別の状態もしくは物へ変えることができるであろう。さらに、トラッキングされる、送信される、受信される、またはプロセッサに格納される情報は、具体的なニーズおよび実装に基づいて、任意のデータベース、レジスタ、表、キャッシュ、キュー、制御リスト、またはストレージ構造に提供され得るだろう。それらの全ては、任意の適切なタイムフレームで参照され得るだろう。本明細書に開示されるメモリまたはストレージ要素のいずれも、適宜、広範な用語「メモリ」および「ストレージ」内に包含されるものとして解釈されるべきである。
本明細書に説明される機能の全てまたは一部を実装するコンピュータプログラムロジックは、決して限定されるものではないが、ソースコードの形式、コンピュータ実行可能な形式、マシン命令またはマイクロコード、プログラマブルハードウェア、および様々な中間的な形式(例えば、アセンブラ、コンパイラ、リンカ、またはロケータによって生成される形式)を含む、様々な形式で具現化される。一例において、ソースコードは、オブジェクトコード、アセンブリ言語、または、様々なオペレーティングシステムまたは動作環境で使用するためのOpenCL、FORTRAN、C、C++、Java(登録商標)、またはHTMLのようなハイレベル言語のような様々なプログラミング言語、もしくは、Spice、Verilog、およびVHDLのようなハードウェア記述言語で実装される、一連のコンピュータプログラム命令を含む。ソースコードは、様々なデータ構造および通信メッセージを定義および使用してよい。ソースコードは、(例えば、インタプリタを介しての)コンピュータ実行可能な形式であってよい。または、ソースコードは、(例えば、トランスレータ、アセンブラ、またはコンパイラを介して)コンピュータ実行可能な形式に変換されてよい。もしくはバイトコードのような中間的な形式に変換されてよい。適切な場合には、逐次マシン、連結マシン、ステートマシン、または他のものであるかどうかにかかわらず、適切なディスクリート回路または集積回路を形成または表すために前述の任意のものが使用されてよい。
一例の実施形態において、図面の任意の数の電気回路が、関連する電子デバイスの基板に実装されてよい。この基板は、電子デバイスの内部電子システムの様々なコンポーネントを保持することができ、さらに、その他の周辺機器のためのコネクタを提供できる一般的な回路基板であり得る。任意の適切なプロセッサおよびメモリが、特定の構成上のニーズ、処理要求、およびコンピューティング設計に基づいて、適切に基板に結合され得る。本明細書にて提供される多数の例により、2、3、4、またはそれより多くの電気コンポーネントに関して相互作用が説明されてよいことに留意されたい。しかしながら、これは、明確性および例示のみを目的として成されている。このシステムは、任意の適切な態様で統合され得る、または再構成され得ることが理解されるべきである。同様な設計代替物に従って、例示される図面中のコンポーネント、モジュール、および要素のいずれも様々な可能な構成で組み合わされてよく、それらの全ては、本明細書の広範な範囲内にある。
多数のその他の変化、代替、変形、変更、および修正は、当業者に確認され得るものであり、そのような変化、代替、変形、変更、および修正が添付の請求項の範囲内に含まれるように、本開示はそれらの全てを包含することが意図されている。米国特許商標庁(USPTO)、また、加えてこの出願で発行されるあらゆる特許のあらゆる読者達が本明細書に添付される請求項を解釈することを補助すべく、出願人が(a)添付の請求項のいずれも、「するための手段」または「するためのステップ」という語が特定の請求項において具体的に使用されない限り、本願の出願日において存在するような、米国特許法第112条第6段落(AIA前)または同条の段落(f)(AIA後)を適用することを意図しないということ、および、(b)明細書中のいかなる記述によっても、そうでないことが明確に添付の請求項に反映されていなければ、本開示を決して限定することを意図しないということに留意するよう、出願人は望む。
例示的な実装例
以下の例は、例示として提供される。
例1は、ハードウェアプラットフォームと、認証のためのネイティブサポートが欠如したバスへ通信可能に結合するネットワークインタフェースと、ハードウェアプラットフォームにて動作する異常検出エンジンとを備えるコンピューティング装置を含む。異常検出エンジンは、第1の時間にわたる第1データストリームであって、複数の次元にわたるデータを有し、複数の次元のデータが互いに相関する第1データストリームを受信すること、第1ウィンドウ和を算出することを有する、第1データストリームを記号化および近似すること、第1の時間と実質的に長さの等しい第2の時間にわたる第2データストリームであって、第1データストリームからの複数の次元にわたるデータを有する第2データストリームを受信すること、第2ウィンドウ和を算出することを有する、第2データストリームを記号化および近似すること、第1ウィンドウ和と第2ウィンドウ和との間の差分を算出すること、差分が閾値を超えていること、および、複数の次元にわたる相関が破られていることを判断すること、並びに、潜在的な異常を警告することを行うように構成される。
例2は例1のコンピューティング装置を含み、記号化および近似することは、データストリームを複数のフレームに分割すること、それぞれのフレームの少なくとも一部を記号化することであって、フレームのデータユニットに対する潜在的値のデータ空間を複数のn個のバケット記号に分割すること、および、それぞれのデータユニットに対してそのバケットに従った記号を割り当てることを有する、記号化すること、並びに、この時間にわたって第1の和を算出することであって、データストリームを、Ls個の記号分の長さを有する複数のシーケンスであって、それぞれのシーケンスがLo個の記号分前のシーケンスとオーバーラップしている複数のシーケンスに分割すること、および、それぞれのシーケンスの発生数を集計することを有する、ウィンドウ和を算出することを有する。
例3は例2のコンピューティング装置を含み、それぞれのシーケンスの発生数を集計することは、n×n×Lsのアレイに集計を記録することを有し、このアレイにおけるそれぞれのセルは、記号シーケンスに対する可能な値を表す。
例4は例3のコンピューティング装置を含み、第1ウィンドウ和と第2ウィンドウ和との間の差分を算出することは、このアレイにおけるそれぞれのセル間のセル毎の差分の絶対値を算出すること、および、セル毎の差分の絶対値を合計することを有する。
例5は例1のコンピューティング装置を含み、データユニットは8ビットバイトであり、それぞれのフレームの一部は、それぞれのフレームの固定されたバイトである。
例6は例5のコンピューティング装置を含み、この固定されたバイトは第1のバイトである。
例7は例1のコンピューティング装置を含み、n=8である。
例8は例1のコンピューティング装置を含み、n=4である。
例9は例8のコンピューティング装置を含み、Lo=1である。
例10は例9のコンピューティング装置を含み、第1の時間は2秒である。
例11は例10のコンピューティング装置を含み、閾値は3,000である。
例12は例1から例11のうちのいずれかのコンピューティング装置を含み、異常検出エンジンは、異常を潜在的侵入としてさらに特定する。
例13は例12のコンピューティング装置を含み、異常検出エンジンは、是正措置をさらに講じる、または、セキュリティエージェントに是正措置を講じるようにさらに通知する。
例14は例1から例11のうちのいずれかのコンピューティング装置を含み、バスは、自動車のためのコントローラエリアネットワーク(CAN)バスである。
例15は例14のコンピューティング装置を含み、このコンピューティング装置は、CANバスのための車内ネットワークゲートウェイとして動作するように構成される。
例16は、1または複数の有形な非一時的コンピュータ可読記憶媒体を含み、この媒体には、認証のためのネイティブサポートが欠如したバスへネットワークインタフェースを通信可能に結合すること、第1の時間にわたる第1データストリームであって、複数の次元にわたるデータを有し、複数の次元のデータが互いに相関する第1データストリームを受信すること、第1ウィンドウ和を算出することを有する、第1データストリームを記号化および近似すること、第1の時間と実質的に長さの等しい第2の時間にわたる第2データストリームであって、第1データストリームからの複数の次元にわたるデータを有する第2データストリームを受信すること、第2ウィンドウ和を算出することを有する、第2データストリームを記号化および近似すること、第1ウィンドウ和と第2ウィンドウ和との間の差分を算出すること、差分が閾値を超えていること、および、複数の次元にわたる相関が破られていることを判断すること、並びに、潜在的な異常を警告することを行うための実行可能な命令が格納される。
例17は例16の1または複数の有形な非一時的コンピュータ可読媒体を含み、記号化および近似することは、データストリームを複数のフレームに分割すること、それぞれのフレームの少なくとも一部を記号化することであって、フレームのデータユニットに対する潜在的値のデータ空間を複数のn個のバケット記号に分割すること、および、それぞれのデータユニットに対してそのバケットに従った記号を割り当てることを有する、記号化すること、並びに、この時間にわたって第1の和を算出することであって、データストリームを、Ls個の記号分の長さを有する複数のシーケンスであって、それぞれのシーケンスがLo個の記号分前のシーケンスとオーバーラップしている複数のシーケンスに分割すること、および、それぞれのシーケンスの発生数を集計することを有する、ウィンドウ和を算出することを有する。
例18は例16の1または複数の有形な非一時的コンピュータ可読媒体を含み、それぞれのシーケンスの発生数を集計することは、n×n×Lsのアレイに集計を記録することを有し、このアレイにおけるそれぞれのセルは、記号シーケンスに対する可能な値を表す。
例19は例17の1または複数の有形な非一時的コンピュータ可読媒体を含み、第1ウィンドウ和と第2ウィンドウ和との間の差分を算出することは、このアレイにおけるそれぞれのセル間のセル毎の差分の絶対値を算出すること、および、セル毎の差分の絶対値を合計することを有する。
例20は例16の1または複数の有形な非一時的コンピュータ可読媒体を含み、データユニットは8ビットバイトであり、それぞれのフレームの一部は、それぞれのフレームの固定されたバイトである。
例21は例20の1または複数の有形な非一時的コンピュータ可読媒体を含み、この固定されたバイトは第1のバイトである。
例22は例16の1または複数の有形な非一時的コンピュータ可読媒体を含み、n=8である。
例23は例16の1または複数の有形な非一時的コンピュータ可読媒体を含み、n=4である。
例24は例23の1または複数の有形な非一時的コンピュータ可読媒体を含み、Lo=1である。
例25は例24の1または複数の有形な非一時的コンピュータ可読媒体を含み、第1の時間は2秒である。
例26は例25の1または複数の有形な非一時的コンピュータ可読媒体を含み、閾値は3,000である。
例27は例16から例26のうちのいずれかの1または複数の有形な非一時的コンピュータ可読媒体を含み、これらの命令は、異常を潜在的侵入としてさらに特定する。
例28は例27の1または複数の有形な非一時的コンピュータ可読媒体を含み、これらの命令は、是正措置をさらに講じる、または、セキュリティエージェントに是正措置を講じるようにさらに通知する。
例29は例16から例26のうちのいずれかの1または複数の有形な非一時的コンピュータ可読媒体を含み、バスは、自動車のためのコントローラエリアネットワーク(CAN)バスである。
例30は例29の1または複数の有形な非一時的コンピュータ可読媒体を含み、バスは、CANバスのための車内ネットワークゲートウェイである。
例31は、認証のためのネイティブサポートが欠如したバスにおける異常検出を提供するコンピュータ実装方法を含み、このバスへネットワークインタフェースを通信可能に結合すること、第1の時間にわたる第1データストリームであって、複数の次元にわたるデータを有し、複数の次元のデータが互いに相関する第1データストリームを受信すること、第1ウィンドウ和を算出することを有する、第1データストリームを記号化および近似すること、第1の時間と実質的に長さの等しい第2の時間にわたる第2データストリームであって、第1データストリームからの複数の次元にわたるデータを有する第2データストリームを受信すること、第2ウィンドウ和を算出することを有する、第2データストリームを記号化および近似すること、第1ウィンドウ和と第2ウィンドウ和との間の差分を算出すること、差分が閾値を超えていること、および、複数の次元にわたる相関が破られていることを判断すること、並びに、潜在的な異常を警告することを有する。
例32は例31の方法を含み、記号化および近似することは、データストリームを複数のフレームに分割すること、それぞれのフレームの少なくとも一部を記号化することであって、フレームのデータユニットに対する潜在的値のデータ空間を複数のn個のバケット記号に分割すること、および、それぞれのデータユニットに対してそのバケットに従った記号を割り当てることを有する、記号化すること、並びに、この時間にわたって第1の和を算出することであって、データストリームを、Ls個の記号分の長さを有する複数のシーケンスであって、それぞれのシーケンスがLo個の記号分前のシーケンスとオーバーラップしている複数のシーケンスに分割すること、および、それぞれのシーケンスの発生数を集計することを有する、ウィンドウ和を算出することを有する。
例33は例31の方法を含み、それぞれのシーケンスの発生数を集計することは、n×n×Lsのアレイに集計を記録することを有し、このアレイにおけるそれぞれのセルは、記号シーケンスに対する可能な値を表す。
例34は例32の方法を含み、第1ウィンドウ和と第2ウィンドウ和との間の差分を算出することは、このアレイにおけるそれぞれのセル間のセル毎の差分の絶対値を算出すること、および、セル毎の差分の絶対値を合計することを有する。
例35は例31の方法を含み、データユニットは8ビットバイトであり、それぞれのフレームの一部は、それぞれのフレームの固定されたバイトである。
例36は例35の方法を含み、この固定されたバイトは第1のバイトである。
例37は例31の方法を含み、n=8である。
例38は例31の方法を含み、n=4である。
例39は例38の方法を含み、Lo=1である。
例40は例39の方法を含み、第1の時間は2秒である。
例41は例40の方法を含み、閾値は3,000である。
例42は例31から例41のうちのいずれかの方法を含み、異常を潜在的侵入として特定することをさらに有する。
例43は例31の方法を含み、是正措置を講じること、または、セキュリティエージェントに是正措置を講じるように通知することをさらに有する。
例44は例31から例41のうちのいずれかの方法を含み、バスは、自動車のためのコントローラエリアネットワーク(CAN)バスである。
例45は例44の方法を含み、バスは、CANバスのための車内ネットワークゲートウェイである。
例46は、例31から例45のうちのいずれかの方法を実行するための手段を備える装置を含む。
例47は例46の装置を含み、方法を実行するための手段は、プロセッサおよびメモリを有する。
例48は例47の装置を含み、メモリは、実行された場合に例31から例45のうちのいずれかの方法をこの装置に実行させる、機械可読命令を有する。
例49は例46から例48のうちのいずれかの装置を含み、この装置はコンピューティングシステムである。
例50は、実行された場合に、例31から例49のうちのいずれかに例示されるような方法を実装するまたは装置を実現する命令を有する、少なくとも1つのコンピュータ可読媒体を含む。
その他の可能な項目は次の通りである。
[項目1]
ハードウェアプラットフォームと、
認証のためのネイティブサポートが欠如したバスへ通信可能に結合するネットワークインタフェースと、
ハードウェアプラットフォームにて動作する異常検出エンジンと
を備え、
異常検出エンジンは、
第1の時間にわたる第1データストリームを受信すること、
第1ウィンドウ和を算出することを有する、第1データストリームを記号化および近似すること、
第1の時間と実質的に長さの等しい第2の時間にわたる第2データストリームであって、第1データストリームからの複数の次元にわたるデータを有する第2データストリームを受信すること、
第2ウィンドウ和を算出することを有する、第2データストリームを記号化および近似すること、
第1ウィンドウ和と第2ウィンドウ和との間の差分を算出すること、
差分が閾値を超えていること、および、複数の次元にわたる相関が破られていることを判断すること、並びに、
潜在的な異常を警告すること
を行うように構成される、コンピューティング装置。
[項目2]
記号化および近似することは、
データストリームを複数のフレームに分割すること、
それぞれのフレームの少なくとも一部を記号化することであって、フレームのデータユニットに対する潜在的値のデータ空間を複数のn個のバケット記号に分割すること、および、それぞれのデータユニットに対してそのバケットに従った記号を割り当てることを有する、記号化すること、並びに、
この時間にわたって第1の和を算出することであって、データストリームを、Ls個の記号分の長さを有する複数のシーケンスであって、それぞれのシーケンスがLo個の記号分前のシーケンスとオーバーラップしている複数のシーケンスに分割すること、および、それぞれのシーケンスの発生数を集計することを有する、ウィンドウ和を算出すること
を有する、項目1に記載のコンピューティング装置。
[項目3]
それぞれのシーケンスの発生数を集計することは、n×n×Lsのアレイに集計を記録することを有し、このアレイにおけるそれぞれのセルは、記号シーケンスに対する可能な値を表す、項目2に記載のコンピューティング装置。
[項目4]
第1ウィンドウ和と第2ウィンドウ和との間の差分を算出することは、このアレイにおけるそれぞれのセル間のセル毎の差分の絶対値を算出すること、および、セル毎の差分の絶対値を合計することを有する、項目3に記載のコンピューティング装置。
[項目5]
データユニットは8ビットバイトであり、それぞれのフレームの一部は、それぞれのフレームの固定されたバイトである、項目1に記載のコンピューティング装置。
[項目6]
この固定されたバイトは第1のバイトである、項目5に記載のコンピューティング装置。
[項目7]
n=8である、項目1に記載のコンピューティング装置。
[項目8]
n=4である、項目1に記載のコンピューティング装置。
[項目9]
Lo=1である、項目8に記載のコンピューティング装置。
[項目10]
第1の時間は2秒である、項目9に記載のコンピューティング装置。
[項目11]
閾値は3,000である、項目10に記載のコンピューティング装置。
[項目12]
異常検出エンジンは、異常を潜在的侵入としてさらに特定する、項目1に記載のコンピューティング装置。
[項目13]
異常検出エンジンは、是正措置をさらに講じる、または、セキュリティエージェントに是正措置を講じるようにさらに通知する、項目12に記載のコンピューティング装置。
[項目14]
バスは、自動車のためのコントローラエリアネットワーク(CAN)バスである、項目1に記載のコンピューティング装置。
[項目15]
コンピューティング装置は、CANバスのための車内ネットワークゲートウェイとして動作するように構成される、項目14に記載のコンピューティング装置。
[項目16]
認証のためのネイティブサポートが欠如したバスへネットワークインタフェースを通信可能に結合すること、
第1の時間にわたる第1データストリームであって、複数の次元にわたるデータを有し、複数の次元のデータが互いに相関する第1データストリームを受信すること、
第1ウィンドウ和を算出することを有する、第1データストリームを記号化および近似すること、
第1の時間と実質的に長さの等しい第2の時間にわたる第2データストリームであって、第1データストリームからの複数の次元にわたるデータを有する第2データストリームを受信すること、
第2ウィンドウ和を算出することを有する、第2データストリームを記号化および近似すること、
第1ウィンドウ和と第2ウィンドウ和との間の差分を算出すること、
差分が閾値を超えていること、および、複数の次元にわたる相関が破られていることを判断すること、並びに、
潜在的な異常を警告すること
を行うための実行可能な命令が格納される、1または複数の有形な非一時的コンピュータ可読記憶媒体。
[項目17]
記号化および近似することは、
データストリームを複数のフレームに分割すること、
それぞれのフレームの少なくとも一部を記号化することであって、フレームのデータユニットに対する潜在的値のデータ空間を複数のn個のバケット記号に分割すること、および、それぞれのデータユニットに対してそのバケットに従った記号を割り当てることを有する、記号化すること、並びに、
この時間にわたって第1の和を算出することであって、データストリームを、Ls個の記号分の長さを有する複数のシーケンスであって、それぞれのシーケンスがLo個の記号分前のシーケンスとオーバーラップしている複数のシーケンスに分割すること、および、それぞれのシーケンスの発生数を集計することを有する、ウィンドウ和を算出すること
を有する、項目16に記載の1または複数の有形な非一時的コンピュータ可読媒体。
[項目18]
それぞれのシーケンスの発生数を集計することは、n×n×Lsのアレイに集計を記録することを有し、このアレイにおけるそれぞれのセルは、記号シーケンスに対する可能な値を表す、項目16に記載の1または複数の有形な非一時的コンピュータ可読媒体。
[項目19]
第1ウィンドウ和と第2ウィンドウ和との間の差分を算出することは、アレイにおけるそれぞれのセル間のセル毎の差分の絶対値を算出すること、および、セル毎の差分の絶対値を合計することを有する、項目17に記載の1または複数の有形な非一時的コンピュータ可読媒体。
[項目20]
データユニットは8ビットバイトであり、それぞれのフレームの一部は、それぞれのフレームの固定されたバイトである、項目16に記載の1または複数の有形な非一時的コンピュータ可読媒体。
[項目21]
この固定されたバイトは第1のバイトである、項目20に記載の1または複数の有形な非一時的コンピュータ可読媒体。
[項目22]
n=4且つLo=1である、項目16に記載の1または複数の有形な非一時的コンピュータ可読媒体。
[項目23]
第1の時間は2秒である、項目22に記載の1または複数の有形な非一時的コンピュータ可読媒体。
[項目24]
認証のためのネイティブサポートが欠如したバスにおける異常検出を提供するコンピュータ実装方法であって、
このバスへネットワークインタフェースを通信可能に結合すること、
第1の時間にわたる第1データストリームであって、複数の次元にわたるデータを有し、複数の次元のデータが互いに相関する第1データストリームを受信すること、
第1ウィンドウ和を算出することを有する、第1データストリームを記号化および近似すること、
第1の時間と実質的に長さの等しい第2の時間にわたる第2データストリームであって、第1データストリームからの複数の次元にわたるデータを有する第2データストリームを受信すること、
第2ウィンドウ和を算出することを有する、第2データストリームを記号化および近似すること、
第1ウィンドウ和と第2ウィンドウ和との間の差分を算出すること、
差分が閾値を超えていること、および、複数の次元にわたる相関が破られていることを判断すること、並びに、
潜在的な異常を警告すること
を有する方法。
[項目25]
記号化および近似することは、
データストリームを複数のフレームに分割すること、
それぞれのフレームの少なくとも一部を記号化することであって、フレームのデータユニットに対する潜在的値のデータ空間を複数のn個のバケット記号に分割すること、および、それぞれのデータユニットに対してそのバケットに従った記号を割り当てることを有する、記号化すること、並びに、
この時間にわたって第1の和を算出することであって、データストリームを、Ls個の記号分の長さを有する複数のシーケンスであって、それぞれのシーケンスがLo個の記号分前のシーケンスとオーバーラップしている複数のシーケンスに分割すること、および、それぞれのシーケンスの発生数を集計することを有する、ウィンドウ和を算出すること
を有する、項目24に記載の方法。