IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーガス サイバー セキュリティ リミテッドの特許一覧

特許7520913車載ネットワークに接続された構成要素の悪用を検出するシステムおよび方法
<>
  • 特許-車載ネットワークに接続された構成要素の悪用を検出するシステムおよび方法 図1
  • 特許-車載ネットワークに接続された構成要素の悪用を検出するシステムおよび方法 図2
  • 特許-車載ネットワークに接続された構成要素の悪用を検出するシステムおよび方法 図3
  • 特許-車載ネットワークに接続された構成要素の悪用を検出するシステムおよび方法 図4
  • 特許-車載ネットワークに接続された構成要素の悪用を検出するシステムおよび方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-12
(45)【発行日】2024-07-23
(54)【発明の名称】車載ネットワークに接続された構成要素の悪用を検出するシステムおよび方法
(51)【国際特許分類】
   G06F 21/55 20130101AFI20240716BHJP
【FI】
G06F21/55 340
【請求項の数】 21
【外国語出願】
(21)【出願番号】P 2022067065
(22)【出願日】2022-04-14
(62)【分割の表示】P 2020507027の分割
【原出願日】2018-08-09
(65)【公開番号】P2022095901
(43)【公開日】2022-06-28
【審査請求日】2022-05-11
(31)【優先権主張番号】62/543,397
(32)【優先日】2017-08-10
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】319003699
【氏名又は名称】アーガス サイバー セキュリティ リミテッド
(74)【代理人】
【識別番号】100114890
【弁理士】
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100098501
【弁理士】
【氏名又は名称】森田 拓
(74)【代理人】
【識別番号】100116403
【弁理士】
【氏名又は名称】前川 純一
(74)【代理人】
【識別番号】100134315
【弁理士】
【氏名又は名称】永島 秀郎
(74)【代理人】
【識別番号】100162880
【弁理士】
【氏名又は名称】上島 類
(72)【発明者】
【氏名】ヤーロン ガルラ
(72)【発明者】
【氏名】ニッツァン クルヴィ
【審査官】石坂 知樹
(56)【参考文献】
【文献】特開2017-091541(JP,A)
【文献】特開2006-107182(JP,A)
【文献】特開2017-111796(JP,A)
【文献】特開2006-119754(JP,A)
【文献】特表2009-500706(JP,A)
【文献】国際公開第2017/042702(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/55
(57)【特許請求の範囲】
【請求項1】
メモリとセキュリティレイヤユニットとを含むセキュリティシステムであって、
前記セキュリティレイヤユニットは、車載ネットワークに接続された構成要素の悪用に関連するイベントを、予期される挙動からのシステムの実行の逸脱に基づき検出するように適合されており、
予期されないイベントシーケンスの識別に基づき、逸脱が検出され、さらに
逸脱が検出されたならば、前記イベントのログが作成され、
前記予期されないイベントシーケンスは、
プログラムのシーケンスの実行、
同じプログラムの連続的または反復的な実行、
特定のシーケンスまたは命令中の機能またはAPIのセットの呼び出し、および
特定のシーケンスまたは命令中のリソースのセットへのアクセス
のうちの少なくとも1つであり、
車両の状態またはコンテキストに基づき、または車両内に含まれる構成要素の状態またはコンテキストに基づき、前記逸脱が識別される、
セキュリティシステム。
【請求項2】
当該システムは、検出されたセキュリティ脅威に関連するデータをサーバに供給するように適合されており、前記サーバは、車両の隊に関連するデータを生成して呈示するように適合されている、請求項1記載のシステム。
【請求項3】
当該システムは、1つまたは複数のソフトウェアセンサからイベントを受信するように適合されている、請求項1記載のシステム。
【請求項4】
前記ソフトウェアセンサのうちの少なくとも一部は、
システムコールまたは命令が実行されるのを妨げ、
妨げられた前記コールまたは前記命令に関連するデータの解析に基づきセキュリティ脅威を検出し、
前記脅威のログを作成する
ように適合されている、請求項3記載のシステム。
【請求項5】
前記ソフトウェアセンサのうちの少なくとも一部は、前記コールまたは前記命令をブロックまたは阻止するように適合されている、
請求項4記載のシステム。
【請求項6】
当該システムは、
セキュリティポリシーを少なくとも1つのアプリケーションに関連づけ、
前記セキュリティポリシーにディジタル署名し、
署名に基づきセキュリティを検証する
ように適合されている、請求項1記載のシステム。
【請求項7】
当該システムは、
セキュリティ脅威を検出し、
前記脅威を信頼レベルに関連づけ、
前記信頼レベルに基づき少なくとも1つの措置の実施を選択する
ように適合されている、請求項1記載のシステム。
【請求項8】
当該システムは、タイマまたはイベントに基づき逸脱を検出するために、メモリをスキャンするように適合されている、請求項1記載のシステム。
【請求項9】
当該システムは、以下から成るグループすなわち、
前記車載ネットワークに接続された構成要素のディスエーブル、プロセスのキル、前記車載ネットワークに接続された構成要素のアクティベート、メッセージのブロック、メッセージの遅延、メッセージタイプの頻度の制限、メッセージのログの作成、ユーザへの警告、メッセージ内の内容の変更、内容の属性の変更、内容に関連するメタデータの変更、実行可能コードのパーミッションの変更、構成要素のリセット、既知の状態への構成要素の復帰およびプロセスの実行、
から成るグループから選択された少なくとも1つの措置を実施するように適合されている、請求項1記載のシステム。
【請求項10】
占有メモリ量を基準状態のメモリ占有と比較することに基づき、前記逸脱が識別される、請求項1記載のシステム。
【請求項11】
予期されるリソース消費レベルからの逸脱の検出に基づき、前記逸脱が識別される、請求項1記載のシステム。
【請求項12】
当該システムは、選択的に、
実行可能コードを、当該実行可能コードをメモリにロードする前に、妥当性確認するか、または、
前記コードを前記メモリにロードし、前記コードを実行し、前記コードが実行される間に当該コードを妥当性確認する
ように適合されている、請求項1記載のシステム。
【請求項13】
当該システムの状態を基準状態と比較することにより、前記逸脱が識別される、請求項1記載のシステム。
【請求項14】
子プロセスの禁止された生み出しに基づき、前記逸脱が識別される、請求項1記載のシステム。
【請求項15】
車載ネットワークに接続された構成要素の悪用に関連するイベントを、予期される挙動からのシステムの実行の逸脱に基づき検出することを含む方法であって、
予期されないイベントシーケンスの識別に基づき、逸脱を検出し、さらに
逸脱を検出したならば、前記イベントのログを作成し、
前記予期されないイベントシーケンスは、
プログラムのシーケンスの実行、
同じプログラムの連続的または反復的な実行、
特定のシーケンスまたは命令中の機能またはAPIのセットの呼び出し、および
特定のシーケンスまたは命令中のリソースのセットへのアクセス
のうちの少なくとも1つであり、
車両の状態またはコンテキストに基づき、または車両内に含まれる構成要素の状態またはコンテキストに基づき、前記逸脱が識別される、
方法。
【請求項16】
当該方法は、
検出されたセキュリティ脅威に関連するデータをサーバに供給すること、
車両の隊に関連するデータを前記サーバによって生成および呈示すること
を含む、請求項15記載の方法。
【請求項17】
当該方法は、
1つまたは複数のソフトウェアセンサからイベントを受信すること、
ソフトウェアセンサによって、システムコールまたは命令が実行されるのを妨げること、
前記ソフトウェアセンサによって、妨げられた前記コールまたは前記命令に関連するデータの解析に基づき、セキュリティ脅威を検出すること、
前記脅威のログを作成すること
を含む、請求項15記載の方法。
【請求項18】
前記ソフトウェアセンサのうちの少なくとも一部は、前記コールまたは前記命令をブロックまたは阻止するように適合されている、請求項17記載の方法。
【請求項19】
当該方法は、
セキュリティポリシーを少なくとも1つのアプリケーションに関連づけること、
前記セキュリティポリシーにディジタル署名すること、
署名に基づきセキュリティを検証すること
を含む、請求項15記載の方法。
【請求項20】
当該方法は、
セキュリティ脅威を検出すること、
前記脅威を信頼レベルに関連づけること、
前記信頼レベルに基づき少なくとも1つの措置の実施を選択すること
を含む、請求項15記載の方法。
【請求項21】
当該方法は、タイマまたはイベントに基づき逸脱を検出するために、メモリをスキャンすることを含む、請求項15記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はサイバー攻撃の阻止に関する。より具体的には本発明は、車載ネットワークと接続された構成要素の悪用を検出および阻止するシステムおよび方法に関する。
【0002】
発明の背景
車両がワイヤレスネットワークに接続されることが多くなると、サイバー攻撃に関するリスクが高まる。サイバーセキュリティは、自律車両のことを考えると、特に重要である。したがって脅威を検出すると共にそれに対して応答する目的で、サイバーセキュリティに関連するイベントについて、自律車両の隊を監視するのが望ましい。
【0003】
車載ネットワークは、種々の電子制御ユニット(ECU)との通信によって、車両の様々な構成要素(たとえばエアコンディショニングシステム、診断システム、エンジン、制御システムなど)の間において、内部のコンピュータデータ通信を可能にする。電子制御ユニットは、センサからの入力(たとえば速度、温度、圧力など)をそれらの解析に使用するために受信することができ、さらにECUは通常の車両動作中、それらのECU間でデータを交換することができる。たとえばエンジンは、エンジン速度がどのようであるかを変速機に伝達しなければならない場合があるし、変速機は、いつギアシフトが行われるのかを他のモジュールに伝達しなければならない場合がある。車載ネットワークは、迅速にかつ高い信頼性でECU間の内部通信によりデータを交換することができる。ECUのうちの一部は、(テレマティックスシステム、マルチメディアシステムおよび運転者支援システムなど)外部インタフェースを介して、外界とダイレクトに接続される場合があり、それらのECUによって最も高いリスクがもたらされる可能性がある。かかる高性能のECUは、Linux、QNXまたはAndroidなど一般的な最新のオペレーティングを実行する場合もある。
【0004】
発明の概要
車両におけるサイバー脅威を検出するシステムおよび方法は、車載ネットワークに接続された構成要素の悪用に関連するイベントを、基準実行の挙動からの実行可能コードの実行の逸脱に基づき検出することができる。ホワイトリストおよびブラックリストのセットに基づき、逸脱を検出することができる。ブラックリストおよびホワイトリストを、プロセスツリー、プロセスに関連するメタデータ、リソースへのアクセス、実行可能コードにおける関数および命令に対するコール、のうちの少なくとも1つに関連させることができる。逸脱に関連するイベントを記録することができる。車両の状態に基づき、または車両内に含まれる構成要素の状態に基づき、逸脱を識別することができる。
【0005】
1つの実施形態は、一連のイベントを脅威と関連づけるように適合されたルールエンジンを含むことができる。1つの実施形態を、検出されたセキュリティ脅威に関連するデータをサーバに供給するように適合することができ、このサーバを、車両の隊に関連するデータを生成して呈示するように適合することができる。
【0006】
1つの実施形態を、1つまたは複数のソフトウェアセンサからのイベントを受信するように適合することができる。ソフトウェアセンサのうちの少なくとも一部を、システムコールまたは命令が実行されるのを妨げ、妨げられたコールまたは命令に関連するデータの解析に基づきセキュリティ脅威を検出し、さらに脅威のログを作成するように、適合することができる。ソフトウェアセンサのうちの少なくとも一部を、コールまたは命令をブロックまたは阻止するように適合することができる。
【0007】
1つの実施形態を、セキュリティポリシーを少なくとも1つのアプリケーションに関連づけ、そのセキュリティポリシーにディジタル署名し、さらに署名に基づきセキュリティを検証するように適合することができる。1つの実施形態を、セキュリティ脅威を検出し、その脅威を信頼レベルに関連づけ、さらにその信頼レベルに基づき少なくとも1つの措置の実施を選択するように適合することができる。1つの実施形態を、タイマまたはイベントに基づき逸脱を検出するために、メモリをスキャンするように適合することができる。
【0008】
1つの実施形態を、以下から成るグループから選択された少なくとも1つの措置を実施するように適合することができる。すなわち、ネットワークに接続された構成要素のディスエーブル、プロセスのキル、ネットワークに接続された構成要素のアクティベート、メッセージのブロック、メッセージの遅延、メッセージタイプの頻度の制限、メッセージのログの作成、ユーザへの警告、メッセージ内の内容の変更、内容の属性の変更、内容に関連するメタデータの変更、実行可能コードのパーミッションの変更、構成要素のリセット、既知の状態への構成要素の復帰およびプロセスの実行。本発明のさらに別の態様および/または利点が、本明細書において説明される。
【図面の簡単な説明】
【0009】
本発明とみなされる保護対象については、本明細書の結びの部分で個別に指摘して明確に請求する。とはいえ添付の図面と共に読むならば、以下の詳細な説明を参照することにより、構成および稼働方法の双方に関して本発明をその目的、特徴および利点と共に最もよく理解することができる。
図1】本発明の一部の実施形態による例示的なコンピューティングデバイスを示すブロック図である。
図2】本発明の一部の実施形態による車載ネットワークに対する攻撃を検出するシステムを示すブロック図である。
図3】本発明の一部の実施形態による検証実行方法を示すフローチャートである。
図4】本発明の一部の実施形態による車載ネットワークに対する攻撃を検出する方法を示すフローチャートである。
図5】本発明の一部の実施形態による車載ネットワークに対する攻撃を検出する方法を示すフローチャートである。
【0010】
自明のとおり、説明を簡単かつ明瞭にするために、各図面に示された要素を必ずしも縮尺どおりには描かなかった。たとえば、わかりやすくするため要素の一部の寸法が、他の要素に対し相対的に誇張されている場合もある。さらに適切とみなされる場合には、対応する要素または類似する要素を表すために、各図面にわたり共通して参照符号が繰り返されている場合もある。
【0011】
本発明の実施形態の詳細な説明
以下の詳細な説明では、本発明を完全に理解できるよう、多数の詳細な点が述べられている。ただし当業者に自明のとおり、それらの固有の詳細な点がなくても本発明を実施することができる。さらに別の点を挙げておくと、本発明を不明確にしないよう、周知の方法、手順および構成要素については詳述しなかった。
【0012】
本発明の実施形態はこの点で限定されるものではないが、たとえば「処理する」、「演算する」、「計算する」、「決定する」、「確立する」、「解析する」、「検査する」、または同等のものなどの用語を使用する説明は、コンピュータ、コンピューティングプラットフォーム、コンピューティングシステム、または他の電子的なコンピューティングデバイスのオペレーションおよび/またはプロセスのことを指すことができ、これはコンピュータのレジスタ内および/またはメモリ内で物理的な(たとえば電子的な)量として表現されたデータを、オペレーションおよび/またはプロセスを実施する命令を記憶可能なコンピュータのレジスタ内および/またはメモリ内および/または他の非一時的情報記憶媒体内で、同様に物理的な量として表現された他のデータとなるよう、操作および/または変換する。本発明の実施形態はこの点で限定されるものではないが、本明細書で使用される用語「多数の」および「複数の」は、たとえば「多重の」あるいは「2つまたはそれよりも多くの」を含むことができる。用語「多数の」または「複数の」を、本明細書全体を通して、2つまたはそれよりも多くの構成要素、デバイス、要素、ユニット、パラメータ、または同等のものを説明するために使用することができる。用語「セット」は、本明細書で用いられるときには、1つまたは複数の項目を含むことができる。明示的に述べられていないかぎり、本明細書で説明する方法の実施形態は、特定の順序またはシーケンスに束縛されるものではない。これに加え、説明される方法の実施形態またはその要素の一部は、同時に、同じ時点に、または並行して、発生するまたは実施される可能性がある。
【0013】
図1を参照すると、この図には、本発明の一部の実施形態による例示的なコンピューティングデバイスのブロック図が示されている。デバイス100は、たとえば中央処理ユニットプロセッサ(CPU)、チップまたは任意の適切なコンピューティングデバイスまたは計算デバイスとすることができるコントローラ105と、オペレーティングシステム115と、メモリ120と、実行可能コード125と、入力デバイス135および出力デバイス140を含むことができる記憶システム130とを含むことができる。コントローラ105(あるいは場合によっては複数のユニットまたはデバイスにわたる1つまたは複数のコントローラまたはプロセッサ)を、本明細書で説明する方法を実施するように、かつ/または様々なモジュール、ユニットなどとして実行されまたは振る舞うように、コンフィギュレーションすることができる。2つ以上のコンピューティングデバイス100を含めることができ、1つまたは複数のコンピューティングデバイス100は、本発明の実施形態によるシステムの構成要素として振る舞うことができる。
【0014】
オペレーティングシステム115を、以下のように設計および/またはコンフィギュレーションされた任意のコードセグメント(たとえば本明細書で説明する実行可能コード125と類似のもの)であるとすることができ、またはオペレーティングシステム115はそのようなコードセグメントを含むことができる。すなわちこのコードセグメントは、コンピューティングデバイス100のコーディネート、スケジューリング、調停、監督、制御、またはその他の管理オペレーション、たとえばソフトウェアプログラムまたはタスクの実行をスケジューリングすること、あるいはソフトウェアプログラムまたは他のモジュールまたはユニットが通信できるようにすることなど、を含むタスクを実施する。オペレーティングシステム115を、市販のオペレーティングシステムとすることができる。なお、ここで述べておくと、オペレーティングシステム115を任意の構成要素とすることができ、たとえば一部の実施形態によればシステムは、オペレーティングシステム115を必要としないまたは含まないコンピューティングデバイスを含むことができる。たとえばコンピュータシステムを、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルアレイ(FPGA)、および/またはシステム・オン・チップ(SOC)とすることができ、またはコンピュータデバイスはこれらを含むことができ、これらはオペレーティングシステムなしで使用可能である。
【0015】
メモリ120をたとえば、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SD-RAM)、ダブルデータレート(DDR)メモリチップ、フラッシュメモリ、揮発性メモリ、不揮発性メモリ、キャッシュメモリ、バッファ、短期メモリユニット、長期メモリユニット、または他の適切なメモリユニットまたは記憶ユニットとすることができ、またはメモリ120はこれらを含むことができる。メモリ120を場合によってはそれぞれ異なる複数のメモリユニットとすることができ、またはメモリ120はこれらを含むことができる。メモリ120を、コンピュータまたはプロセッサの非一時的可読媒体、あるいはコンピュータの非一時的記憶媒体、たとえばRAM、とすることができる。
【0016】
実行可能コード125を任意の実行可能コードとすることができ、たとえばアプリケーション、プログラム、プロセス、タスクまたはスクリプトとすることができる。実行可能コード125を、場合によってはオペレーティングシステム115の制御のもとで、コントローラ105により実行することができる。たとえば実行可能コード125を、本明細書において後で説明する車両におけるセキュリティを強化するアプリケーションとすることができ、たとえばこれによって車載ネットワークに対するサイバー攻撃が検出または阻止される。わかりやすくする目的で、図1には単一の項目の実行可能コード125が示されているけれども、本発明の一部の実施形態によるシステムは、実行可能コード125と同様の複数の実行可能コードセグメントを含むことができ、それらをメモリ120にロードすることができ、それらによって本明細書で説明する方法をコントローラ105が実施できるようになる。適用可能である場合には、用語「プロセス」と「実行可能コード」とは同じものを指すことができ、本明細書ではそれらを区別なく用いることができる。たとえばプロセスの検証、妥当性確認および/または認証は、実行可能コードの検証、妥当性確認および/または認証のことを指すことができる。
【0017】
記憶システム130をたとえば、当該技術分野で周知のフラッシュメモリ、当該技術分野で周知のマイクロコンローラまたはチップの内部のまたはそれらに組み込まれたメモリ、ハードディスクドライブ、書き込み可能CD(CD-R)ドライブ、ブルーレイディスク(BD)、汎用シリアルバス(USB)デバイス、または他の適切なリムーバブル型および/または固定型の記憶ユニットとすることができ、または記憶システム130はたとえばこれらを含むことができる。記憶システム130に内容を記憶させることができ、その内容を記憶システム130からメモリ120にロードすることができ、そこにおいてその内容をコントローラ105によって処理することができる。一部の実施形態によれば、図1に示した構成要素の一部を省略してもよい。たとえばメモリ120を、記憶システム130の記憶容量を有する不揮発性メモリとしてもよい。したがって別個の構成要素として示されているけれども、記憶システム130をメモリ120に組み込むまたは含めることができる。
【0018】
入力デバイス135を、任意の適切な入力デバイス、構成要素またはシステム、たとえば加速度センサ、タコメータ、温度計などの物理センサ、取り外し可能なキーボードまたはキーパッド、マウスおよびその他同類のものとすることができ、または入力デバイス135はそれらを含むことができる。出力デバイス140は、1つまたは複数の(場合によっては取り外し可能な)ディスプレイまたはモニタ、モータ、サーボモータ、スピーカ、および/または他の適切な出力デバイスを含むことができる。任意の適用可能な入/出力(I/O)デバイスを、ブロック135および140によって示されているように、コンピューティングデバイス100に接続することができる。たとえば有線または無線のネットワークインタフェースカード(NIC)、汎用シリアルバス(USB)デバイス、または外付けハードディスクドライブを、入力デバイス135および/または出力デバイス140に含めることができる。自明のとおり、任意の適切の個数の入力デバイス135および出力デバイス140を、ブロック135および140によって示されているように、コンピューティングデバイス100に作動的に接続することができる。たとえば、入力デバイス135および出力デバイス140は、コンピューティングデバイス100に接続して、ソフトウェアおよびその他同類のものを更新する目的で、技術者またはエンジニアによって利用することができる。入力デバイスおよび/または出力デバイスあるいは構成要素135および140を、車両内の制御ユニットまたは他のユニットとの相互伝達または通信のために適合させることができ、たとえば入力デバイスおよび/または出力デバイスあるいは構成要素135および140は、デバイス100がエンジン制御ユニット、サスペンション制御ユニット、牽引制御部およびその他同類のものと通信できるようにするポートを含むことができる。
【0019】
本発明の実施形態は、コンピュータまたはプロセッサの非一時的可読媒体といった製品、あるいはたとえばメモリ、ディスクドライブまたはUSBフラッシュメモリといったコンピュータまたはプロセッサの非一時的記憶媒体を含むことができ、これらは命令たとえばコンピュータにより実行可能な命令を符号化、包含または記憶することができ、それらの命令は、プロセッサまたはコントローラにより実行されると、本明細書で開示する方法を実施する。たとえば、メモリ120などの記憶媒体、実行可能コード125などのコンピュータにより実行可能な命令、およびコントローラ105などのコントローラである。
【0020】
記憶媒体は、以下に限定されるものではないが、光磁気ディスクを含む任意のタイプのディスク、半導体デバイスたとえばリードオンリーメモリ(ROM)、ダイナミックRAM(DRAM)などのランダムアクセスメモリ(RAM)、消去可能なプログラマブルリードオンリーメモリ(EPROM)、フラッシュメモリ、電気的に消去可能なプログラマブルリードオンリー(EEPROM)、磁気カードまたは光学カード、あるいはプログラマブル記憶デバイスを含め、電子的な命令を記憶するのに適した任意のタイプの媒体を含むことができる。
【0021】
本発明の実施形態は、以下に限定されるものではないが、複数の中央処理ユニット(CPU)、あるいは任意の適切な多目的または特定の目的のプロセッサまたはコントローラ(たとえばコントローラ105と同様のコントローラ)、複数の入力ユニット、複数の出力ユニット、複数のメモリユニット、および複数の記憶ユニットなどの構成要素を含むことができる。これに加えシステムは、他の適切なハードウェア構成要素および/またはソフトウェア構成要素を含むことができる。一部の実施形態によればシステムはたとえば、パーソナルコンピュータ、デスクトップコンピュータ、モバイルコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、ターミナル、ワークステーション、サーバコンピュータ、パーソナルディジタルアシスタント(PDA)デバイス、タブレットコンピュータ、ネットワークデバイス、または他の適切なコンピューティングデバイスを含むことができ、あるいはシステムをこれらのものとすることができる。
【0022】
一部の実施形態によればシステムはたとえば、複数の構成要素を含むことができ、またはシステムをそれらのものとすることができ、それらの構成要素には、個々の複数の中央処理ユニット、たとえば既述の複数のCPU、オンボードまたは車載のシステムまたはネットワークに組み込まれた複数のCPU、複数のチップ、FPGAまたはSOC、複数のコンピュータデバイスまたはネットワークデバイス、あるいは他の適切なコンピューティングデバイスが含まれる。たとえば本明細書で説明するシステムは、コンピューティングデバイス100など1つまたは複数のデバイスを含むことができる。
【0023】
図2を参照すると、この図には、本発明の一部の実施形態による車載ネットワークにおける異常、サイバー脅威およびこれに対するサイバー攻撃を検出するシステムのブロック図が示されている。一部の実施形態は、図示のサーバ260を含むことができ、またはそれらの実施形態を図示のサーバ260と接続することができる。たとえばサーバ260は、ワイヤレス通信ネットワークを介してセキュリティレイヤ210(または車載ネットワーク200と接続された他の任意の構成要素)と通信することができる。サーバ260を、任意の適切なサーバまたはコンピュータとすることができる。一部の実施形態によれば、車載ネットワーク200に対する攻撃を検出する目的で、かかるシステム250を車載ネットワーク200(または車両バス)に組み込むことができ、たとえば車両電子制御ユニット(ECU)に集積することができる。図示されているようにシステム250は、プロセッサ201、ヒューリスティック(またはルール)エンジン230、実行可能コード220、セキュリティレイヤ210、ソフトウェアセンサ240、ECU202およびECU204を含むことができる。さらに図示されているようにシステム250を、バッテリ205または1つまたは複数の他の電力源および通信モジュール203と接続することができる。
【0024】
図2のユニットおよび構成要素を、1つまたは複数のネットワークによって接続することができ、たとえば図示されている既述の車載ネットワーク200によって、あるいは他の任意のネットワーク、たとえばコントローラエリアネットワーク(CAN)バス、ワイヤレスネットワークまたはイーサネットネットワークによって、接続することができる。ネットワーク200は、たとえばワイヤレスネットワークを含むことができる。さらに図2のユニットの一部を、たとえばワイヤレスネットワークを介して車両外部のユニットと接続することができ、たとえばセルラネットワークを介して通信するように適合された構成要素を、車載ネットワーク200と接続することができ、これによってネットワーク200と接続されたユニットおよび構成要素が、車両外部のユニット、デバイスおよびシステムと通信することができるようになる。たとえば、セルラネットワークを介して通信するように適合され、車載ネットワーク200と接続されたデバイスにより、セキュリティレイヤ210がサーバ260と通信することができるようになる。
【0025】
図2に示されているように車載ネットワーク200を、車両内のモジュール、ユニットおよび構成要素と接続することができ、これによってかかるモジュール、ユニットおよび構成要素が通信できるようになる。簡潔にするため、本明細書で言及される車載ネットワーク200を、ネットワークそのもの(たとえばCANバスまたはイーサネットインフラストラクチャ)およびこれに接続された構成要素とすることができ、車載ネットワーク200はこれらを含むことができ、あるいは車載ネットワーク200はこれらのものに関連するものとすることができる。車載ネットワーク200は、車載ネットワーク200の他の構成要素と通信を行うプロセッサ201(たとえば図1に示したコントローラ105)を含むことができる(この場合、通信は図2では矢印によって示唆されている)。一部の実施形態によれば、車載ネットワーク200の各構成要素間の通信を、少なくとも1つのセキュリティレイヤ210によって実施することができ、たとえばセキュリティレイヤ210を、コントローラ105、メモリ120および実行可能コード125またはプロセッサ201を含む、またはこれらによって実装または実行されるコンピューティングユニットまたはソフトウェアモジュールとすることができる。車載ネットワーク200であれば、たとえばECU202および204など様々な構成要素を、図1で説明したようなシステムとすることができ、またはそれらの構成要素はこのシステムを含むことができる。
【0026】
本明細書で言及される用語「異常」、「脅威」、「サイバー脅威」および「リスク」を、同じことに関連するものとすることができ、これらを区別なく用いることができる。たとえば異常を、それが検出されたときに脅威またはリスクとみなすことができる。同様に、サイバー脅威はリスクとみなされ、一般的には異常であり、正常ではなく、または予期されたイベントまたは事態ではない。
【0027】
一部の実施形態によれば、プロセッサ201を少なくとも1つのECU202、204に結合することができ、これに結合されたECUのオペレーションを解析することができる。ここで述べておきたいのは、プロセッサ201およびこれと結合されたECU202、204の各々を、車載ネットワーク200のノードとみなすことができる、ということである。一部の実施形態によれば、車載ネットワーク200の各ノード間の通信を、少なくとも部分的にワイヤレス通信によって(たとえばブルートゥース通信プロトコルを介して)実施することができる。一部の実施形態によれば、車載ネットワーク200は通信モジュール203を含むことができ、これは外部のデバイスとのワイヤレス通信を可能にするようにコンフィギュレーションされており、たとえばナビゲーションシステムが衛星と通信できるように、かつ/または外部のソースからメッセージ(たとえばタイムスタンプ)を受信できるように、コンフィギュレーションされている。一部の実施形態によれば、車載ネットワーク200は、車載ネットワーク200の構成要素に給電するために、バッテリ205(たとえば車両のバッテリ)を含むことができる。
【0028】
一部の実施形態によれば、車載ネットワーク200の少なくとも1つのノードは、車載ネットワーク200に対する攻撃を検出するために、データを解析および/または処理することができる。一部の実施形態によれば、少なくとも1つのコンピューティングデバイス(図1に示したデバイス100など)を、車載ネットワーク200に組み込むことができ、このデバイスはネットワークからのデータを処理して、車載ネットワーク200に対する攻撃を検出することができる。少なくとも1つのコンピューティングデバイス(図1に示したデバイス100など)を、車載ネットワーク200の少なくとも1つのノードに組み込むことができ、このデバイスは、そのノードからの、かつ/またはネットワークからのデータを処理して、車載ネットワーク200に対する攻撃を検出することができる。セキュリティレイヤ210をコード検証レイヤとすることができ、またはセキュリティレイヤ210はコード検証レイヤを含むことができ、このレイヤは、ロード(これにはたとえばプロセスの実行、ライブラリのロード、スクリプトの読み出しなどが含まれる)に応答して、システム250におけるすべての実行可能コード220を検証するように適合されている。一部の実施形態によれば、セキュリティレイヤ210を、変更を検出するために実行可能コード220をランタイム中に解析するようにコンフィギュレーションすることができる。
【0029】
車載ネットワーク200の少なくとも1つのノードは、車載ネットワーク200に対する攻撃を検出するために、データを解析および/または処理することができる。一部の実施形態によれば、少なくとも1つのコンピューティングデバイス(図1に示したデバイス100など)を、車載ネットワーク200に組み込むことができ、このデバイスはネットワークからのデータを処理して、車載ネットワーク200に対する攻撃を検出することができる。少なくとも1つのコンピューティングデバイス(図1に示したデバイス100など)を、車載ネットワーク200の少なくとも1つのノード(たとえばECU202)に組み込むことができ、このデバイスは、そのノードからの、かつ/またはネットワークからのデータを処理して、車載ネットワーク200に対する攻撃を検出することができる。一部の実施形態によれば、少なくとも1つのセキュリティレイヤ210は、コード検証(または認証)レイヤを含むことができ、このレイヤは、メモリへの(たとえばメモリ120への)実行可能コード220のロード前、ロードに応答して、またはロード後、かつ/または、たとえばコントローラ105による実行可能コード220の実行前、実行に応答して、または実行後、システム250における実行可能コード220を検証および/または認証する。
【0030】
一般に、本明細書で説明し言及する実行可能コードの検証、妥当性確認および/または認証は、実行可能コードまたはデータを実際に含むものとして呈示または表現されたファイルまたは他のオブジェクトが、実行可能コードおよび/または付加的なデータを予期されたとおりに本当に含んでいる、ということを確認および/または判定すること、を含むことができる。たとえば、ファイルまたはメモリに記憶された実行可能コードに適用されたハッシュ値または他の関数を用いて、ハッシュ値を計算することができ、(たとえば製造時に)基準ハッシュ値が計算されて以降、実行可能コードが変更されたことを検証するために、ハッシュ値を(たとえばこの値と基準ハッシュ値との比較によって)使用することができる。任意のデータまたはメタデータを検証のために使用することができ、たとえば実行可能コードのタイムスタンプ、名称または実行可能コードへの参照、実行可能コードの提供者などを、実行可能コードを含むファイル内に含めることができ、本明細書で説明する検証、妥当性確認および/または認証は、ファイル内のデータが予期されたとおりであることを検証することを含むことができる。本明細書で説明する検証、妥当性確認および/または認証のために使用されるデータを、たとえば秘密鍵を用いて暗号化することができ、さらにたとえばセキュリティレイヤ210により対応する公開鍵を用いて復号することができる。
【0031】
たとえば、実行可能コード220の検証および/または認証を、メモリへの実行可能コード220のロードに先立ち行うことができ、検証または認証が失敗した場合には、メモリへの実行可能コード220のロードをキャンセル、阻止または中止することができ、たとえば検証または認証が失敗したならば、コントローラ105は実行可能コード220がメモリ120にロードされるのを阻止することができ、またはコントローラ105は、メモリ120への実行可能コード220のロードを中止することができる。かくして本発明の実施形態によれば、悪意のあるまたは不審なコードがコンピュータのメモリにロードされるのを阻止することによって、車両のコンピュータセキュリティの技術が改善され、ひいてはシステムのセキュリティが向上する。
【0032】
一部の実施形態によれば、セキュリティレイヤ210(またはその中のコード検証レイヤ)を、実行可能コード220をランタイム中に解析、検証、および/または認証して変更を検出するように、コンフィギュレーションすることができる。本明細書でさらに説明するように、コードを基準コードと比較する(たとえばコードセグメント中またはファイルに記憶されたコード中のバイトを、またはビットでさえも、基準コードセグメントまたは既知のコードセグメントと比較する)ことによって、コードの変更を検出または識別することができる。たとえばパフォーマンスを高める目的で、コントローラ105は実行可能コード220をメモリ120にロードし、実行可能コード220の実行を開始させ、次いでバックグラウンドで、実行可能コード220が実行されている間にコントローラ105は、既述のように実行可能コード220を検証および/または認証することができる。コントローラ105は、実行可能コード220の検証および/または妥当性確認の際に見つけられた妥当性確認エラーのログを作成することができ、妥当性確認または認証が失敗したならば、コントローラ105は実行可能コード220の実行を終了させることができる。したがって本発明の実施形態によれば、システムが通常どおりに動作し(たとえばコードをメモリにロードしてそのコードを実行し)、次いで既述のように、コードが悪意のないものであるか、またはさもなければ脅威をもたらすものであるか、を検証することができるようにすることで、車両のコンピュータセキュリティの技術が改善される。1つの実施形態によれば、実行可能コード220がメモリにロードされる前および/または実行される前に、そのコードの検証、認証または妥当性確認を行うのか、あるいはその後に行うのか、を選択することができる、といったように様々な考察を適用することができる。たとえば1つの実施形態によれば、場合によってはセンシティブなまたはハイリスクのいくつかのECUにおいては、コードをメモリにロードする前にそのコードを検証することができ、それよりもクリティカルまたはセンシティブでない他のECUにおいては、この実施形態によれば、コードをさしあたりロードして実行し、次いでその真正性を検証することができる。コードを事前に妥当性確認(ロード前および/または実行前に妥当性確認)するのか、またはコードを事後に妥当性確認(コードがメモリにロードされた後および/または実行が開始された後にコードを妥当性確認または認証)するのかの選択にあたり、実施形態によれば、任意のルール、判定基準、ヒューリスティックまたはロジックを適用することができる。既述のように事前の妥当性確認または事後の妥当性確認のうちの一方を選択するときに、たとえば車両の状態、ECUの状態、コントローラ105における計算負荷などをすべて、セキュリティレイヤ210により考慮することができる。したがって本発明の実施形態によれば、セキュリティ、パフォーマンス、効率およびコストを混ぜ合わせた、またはそれらに関連する考察に基づく最適なオペレーションモードを、システムおよび方法が選択できるようにすることで、サイバーセキュリティの領域が改善される。
【0033】
一部の実施形態は、車両ネットワークに接続されたECUにおいて実行可能コードを検証するように適合されたセキュリティレイヤを含む。たとえば、実行可能コード220を、ECU202において、またはECU202により(たとえばECU202に含まれているプロセッサにより)実行することができ、プロセッサ201は、実行可能コード220がECU202において、またはECU202により実行されている間に(または既述のようにその前に)、実行可能コード220の解析、検証および/または認証を行うことができる。本明細書で説明するコードの検証および/または認証は、コードが基準コードまたは既知のコードと類似しているまたは同一である、ということを判定または確認することを含むことができる。たとえば、コードの検証および/または認証は、場合によってはビットごとにコードを基準コードと比較して、検査中のコードに対しなされた変更を検出または識別することを含むことができる。別のケースにおいてハッシュ関数を用いることができ、たとえば、ハッシュ値がメモリセグメントの内容を一義的に識別するように(またはメモリセグメント内の内容が基準コードと同じまたは同一であるか否かを判定するために用いられるように)、メモリセグメント内の内容に基づきそのメモリセグメントについてハッシュ値を計算することができ、たとえばメモリ内容が変更されているならば、ハッシュ値の再計算によって異なるハッシュ値が生成されることになる。したがってメモリ(またはプロセスコード)の検証または認証は、メモリまたはプロセスについてハッシュ値を計算すること、およびそのハッシュ値を基準ハッシュ値と比較することを含むことができる。たとえば基準ハッシュ値を、ECUの製造業者により、またはプロセスコードの提供者により、供給することができ、または基準ハッシュ値を、学習または初期化のフェーズ中または段階中に計算することができる。
【0034】
たとえば、1つの実施形態によれば、コードまたはメモリセグメントを考慮することができ、それらが基準コードまたは基準メモリセグメントと同様であれば、類似していれば、または同一ですらあれば、それらを検証または認証することができる。たとえば、コードまたはメモリセグメントを検証または認証するために、既述のマップおよび関連づけられたメタデータを使用することができる。
【0035】
既述のように、実行可能コードの検証、妥当性確認および/または認証を、コードが実行される直前に、たとえばコードがメモリ120にロードされた直後に、実施することができる。実行可能コードの検証、妥当性確認および/または認証を、イベントによってトリガすることができる。たとえば、実行可能コードの実行によって、または実行可能コードを実行する意図によってさえも、実行可能コードの検証、妥当性確認および/または認証を、1つの実施形態(たとえば既述のコントローラ105)が行うようにすることができる。たとえば、実行可能コード220を実行するリクエスト、コールまたは要求が受信されたかまたは識別されたときはいつでも、たとえばOS115によってセキュリティレイヤ210に通知することができ、このようにして通知されると、セキュリティレイヤ210は、コード220の実行を遅延させて、コード220の検証、妥当性確認および/または認証を行うことができ、その後でのみ、コード220が実行されるのを許可し、または可能にし、あるいはセキュリティレイヤ210は、たとえば、検証、妥当性確認および/または認証のプロセスが実施されている間、コード220を実行させることによって、既述のようにバックグラウンドの検証、妥当性確認および/または認証のプロセスを開始またはスケジューリングすることができる。
【0036】
ECU202および204とは別個に、またはこれらの外側に示されているとはいえ、一部の実施形態によれば、プロセッサ201、エンジン230およびセキュリティレイヤ210の一部を、またはすべてでさえも、ECU202および204の各々に含めるまたは組み込むことができる。したがって1つまたは複数のユニットは、集中型の手法で複数のECUにおける、または複数のECUのための実行可能コードを検証し保証することができ、別の実施形態によれば、実行可能なコードの保証および検証の機能を分散させることができ、たとえば保護された複数のユニットまたはECUにおいて、またはこれらによって、実施することができる。
【0037】
一部の実施形態によれば、セキュリティレイヤ210は、実行可能コードを含むまたは包含するファイルごとに証明書を検証するために、非対称暗号を使用することができる。たとえば証明書を、実行可能コードを含むファイル各々のために生成し、そのファイル各々に関連づけることができ、ECUまたは他の保護されたシステムがあるプロセスをまさに実行しようとするならば、またはあるプロセスをまさに実行しようとするときに、実行されるコードを包含する(たとえばファイルシステム内の)ファイルに関連づけられた証明書が、既述のように実行可能コードの検証、妥当性確認および/または認証のために使用される。一部の実施形態によれば、証明書は以下のうちの少なくとも1つを含むことができる。すなわち、発行者の名前、発行者の公開鍵、発行日、有効期限、ハッシュアルゴリズム、対象ファイルのハッシュ。かかる証明書は、実行可能コードを含むファイルに関連する付加的なセキュリティパラメータを記述することができ、または含むことができる。たとえばこれらのパラメータは、1つまたは複数の許可された経路、許可された通信データ(たとえばインタフェース、リスニング、送信先ポート、プロトコルなど)、および対象メモリマップを含むことができる。
【0038】
ここで述べておくと、プロセスおよび/または実行可能コードの検証、妥当性確認および/または認証を、ファイル内の内容について、またはメモリ内の内容について、行うことができる。たとえば、プロセスおよび/または実行可能コードの検証、妥当性確認および/または認証を、ファイル内の内容について行うことができ、たとえばコントローラ105は、既述の証明書についてファイルの内容を解析または検査することができる(たとえばファイルの内容に基づき証明書または値を計算し、計算された証明書または値を基準証明書値と比較する)。別のケースまたは実施形態によれば、プロセスおよび/または実行可能コードの検証、妥当性確認および/または認証を、メモリ内の内容について行うことができ、たとえば実行可能コード220がメモリ120にロードされた後、このコードの実行が開始される前または開始された後のいずれかに、セキュリティレイヤ210は、実行可能コード220を含むメモリセグメントの内容に基づき証明書または値を計算することができ、計算された証明書または値を基準証明書値と比較することができる。
【0039】
一部の実施形態によれば、検証、認証および/または妥当性確認は、実行可能コードの証明書を検証するために非対称暗号を用いることを含む。たとえば証明書を、実行可能コードを記憶するために使用されるのと同じファイルシステムとすることができるファイルシステム内に記憶することができ(たとえばファイルがファイルシステムに記憶される手法)、さらに証明書を関連する実行可能コードを含むファイルと関連づけるために、基準、リストまたはテーブルを使用することができる。システムにおける集中型レポジトリに、証明書を記憶させることができる。プロセスおよび/または実行可能コードの検証、妥当性確認および/または認証は、証明書が実際に秘密鍵によって署名されたことを、または秘密鍵を用いて署名されたことを検証することを含み、この秘密鍵は個々の特定の公開鍵に関連づけられており、個々の特定の公開鍵自体を、セキュリティユニットまたはセキュリティレイヤ210が利用できるように、システムに記憶させることができる。したがって、たとえば記憶システム130に記憶された公開鍵を用いて、セキュリティレイヤ210は、既述の実行可能コードを妥当性確認、認証および/または検証することができる。
【0040】
一部の実施形態によれば、セキュリティレイヤ210は、たとえばメモリマップに従い制限されていることが既知であるエリア内の変化について、実行中のプロセスおよび/またはライブラリのメモリをスキャン、解析、検査または監視することができる。なお、かかる監視のために他の方法も適用できることを述べておきたい。制限を「ソフト」なものとすることができ、つまりメモリ内のそのエリアは、予め規定された許可された複数の可能性に従い変化可能であり、かつ/または「ハード」なものとすることができ、つまりメモリ内のそのエリアは、すべての実行時間中、変化してはならない。
【0041】
一部の実施形態によれば検証は、たとえばセキュリティレイヤ210によって、実行中のプロセスのメモリを検査すること、さらに検査されたメモリの領域に対する変更を選択的に検出することを含む。たとえばセキュリティレイヤ210は、(たとえば記憶システム130内に)ECU202のメモリマップを含むことができ、このマップは、アドレス範囲およびそれらの属性を表すメタデータを含むことができる。たとえば、セキュリティレイヤ210により使用されるマップに関するメタデータは、ECU202における、またはECU202のメモリ内のアドレス範囲0~2048は(たとえばこのアドレス範囲は命令を含むことから)変化させてはならない、ということを表すことができ、このメタデータはさらに、たとえばECU202のメモリ内のアドレス範囲2049~4096におけるデータは(たとえばこのアドレス範囲は一時的な記憶のために、または動的なパラメータの過渡値のために使用されることから)変化させてよい、ということを表すことができる。かくして上述の実施例の場合、セキュリティレイヤ210は、アドレス範囲2049~4096における変化を無視してかまわないけれども、アドレス範囲0~2048におけるコードに対する変化が識別または検出されたならば、ECU202におけるコードの実行を警告することができ、または停止することさえできる。
【0042】
一部の実施形態によれば、実行可能コードの検証、認証または妥当性確認が失敗したならば、システムは予防措置を講じることができ、たとえば関連プロセス(妨害プロセス)の実行のキルまたは停止、システムのリブート、システムたとえばECUおよびその他同類のものの既知の状態への復帰を行うことができる。たとえば、セキュリティレイヤ210がECUたとえばECU202に組み込まれているまたは含まれている実施形態であれば、その場合にはセキュリティレイヤ210は既述のようにECU202において予防措置を実施することができる。別の実施形態によれば、たとえばセキュリティレイヤ210がECU202から分離されているならば、その場合にはセキュリティレイヤ210によって、ECU202において実行されたプロセス(当該技術において周知のエージェント)が既述の予防措置を実施することができるようになる。たとえば、第1のコンピューティングデバイスにおける第1のプログラムが、別のコンピューティングデバイスにおける第2のプログラムからサービス(たとえばリモートプロシージャコール(RPC))を要求できるようにする方法を使用することができる。実行可能コードの検証、認証または妥当性確認の失敗に応答して、他の任意の予防措置を実施することができ、たとえばセキュリティレイヤ210は既述の失敗に応答して、車載ネットワークに接続された1つの構成要素をディスエーブルすること、このネットワークに接続された1つの構成要素をアクティベートすること、メッセージをブロックすること、メッセージを遅延させること、メッセージタイプの頻度を制限すること、メッセージのログを作成すること、および/または警告を生成することを実施することができる。
【0043】
1つの実施形態によれば、既述の1つまたは複数の予防措置を、車両内のシステムのセキュリティに関連する任意のイベントに応答して、トリガする、講じる、または実施することができる。たとえば、セキュリティレイヤ210が本明細書で説明する技術のうちのいずれかを使用して攻撃を検出したときはいつも、たとえば「悪意のある」システムコールまたはシステムリソースに対する予期されないアクセスを検出したときいつも、何らかの措置を講じるまたは実施することができる。悪意のあるシステムコールを一般に、プロセスにより形成される関数(たとえば実行されたときの実行可能コード220)に対する予期されない何らかのコールとすることができる。たとえば、プロセスにより形成される予期されるコールおよびコールシーケンスを含むモデルに基づき、あるコールを予期されない(悪意のある)ものとして識別することができる。
【0044】
悪意のある予期されないまたは不審なオペレーション、挙動またはイベント、たとえばシステムコール、関数またはルーチンへのコールをたとえば、システムのデバッギングAPIに関連するシステムコール(たとえばptrace)とすることができ、またはそれらはこのようなシステムコールを含むことができる。たとえばデバッギングAPIが(たとえば開発中に)システムをデバッグするために使用される可能性はあるけれども、製造システムにおいて(たとえばユーザに販売される自動車内で)使用されるのは予期されないことから、それをブラックリストに含めることができ、またはホワイトリストから除外することができ(したがってセキュリティレイヤ210により阻止することができ)、またはルールまたは判定基準によって、デバッギングAPIが実行されるのをセキュリティレイヤ210が阻止できるようになる。
【0045】
1つの実施形態によれば、車両および/または車両内の車載ネットワークに接続された構成要素のコンテキストまたは状態に基づき、イベント、関数またはオペレーションを悪意のあるもの、予期されないもの、または不審なものとして、指定または識別することができる。既述のホワイトリストおよび/またはブラックリストのセットを、個々のコンテキストセットに関連づけることができ、したがって1つの実施形態によれば、車両および/または車両内の構成要素のコンテキストまたは状態に従って、あるいはそれらに基づいて、既述のように脅威または逸脱を識別することができる。たとえば、車両が第1のコンテキストにあるときには、ある特定のAPIを許可することができ(たとえばホワイトリストに含めることができ)、車両が第2のコンテキストにあるときには、そのAPIを阻止することができる(たとえばそのコンテキストに固有のブラックリストに含めることができるか、またはそのコンテキストのホワイトリストから排除することができる)。
【0046】
悪意のある、予期されない、または不審なオペレーションまたはイベントを識別するために使用されるリストまたはルールを、システム内の種々の構成要素に対しそれぞれ異なるものとすることができる。たとえば、ECU202におけるセキュリティレイヤ210の第1のインスタンスは、ワイヤレスネットワークを介したデータの送信を試行する関数が、ECU202により、またはECU202において実行されるのを許可することができ、(ECU204における)セキュリティレイヤ210の第2のインスタンスは、かかる関数がECU204において、またはECU204により実行されるのを阻止することができる。判定基準および/またはルールおよび/またはブラックリストおよびホワイトリストの第1のセットを、第1のECUのために使用することができ、あるいはこの第1のセットは、第1のECUのオペレーションを制御することができ、判定基準および/またはルールおよび/またはブラックリストおよびホワイトリストの、第1のセットとは異なる第2のセットを、第2のECUのために使用することができ、あるいはこの第2のセットは、第2のECUのオペレーションを制御することができる。よって、本明細書で説明するロジック、ルール、ブラックリストおよびホワイトリストを、1つのシステム内の種々のECUまたは構成要素に対し、それぞれ異なるものとすることができる。
【0047】
セキュリティレイヤ210は、(たとえばもたらされるリスクが深刻でなければ)コールを予期されないものとして(たとえば悪意のあるものとして)識別することができ、その関数またはコールのログを作成することができ、もたらされるリスクまたは攻撃に関連する確率が高ければ、そのコールをブロック(たとえばそれが実行されるのを阻止)することができる、といった具合である。セキュリティレイヤ210は、既述のような予期される挙動、脅威または攻撃からのシステムの挙動の何らかの逸脱に応答して、本明細書で説明する措置のうちのいずれかを、選択的に実施することができる。
【0048】
たとえば、システムの挙動が予期される挙動から逸脱しているならば、セキュリティレイヤ210は、以下のうちの1つまたは複数とすることができる措置、あるいは以下のうちの1つまたは複数を含むことができる措置を実施する、または講じることができる。すなわち、車載通信ネットワークに接続された構成要素をディスエーブルする(たとえばECU204をシャットダウンする)、ネットワークに接続された構成要素をアクティベートする(たとえばECU202を作動させる)、メッセージをブロックする(たとえばECU202からECU204に送信されるメッセージがECU204に到達するのを阻止する)、メッセージを遅延する(たとえばメッセージが安全であると判定されるまで、または車載ネットワークを介したメッセージのレートを制御する目的で、ECU202からECU204に送信されるメッセージを遅延させる)。
【0049】
一部の実施形態によれば、セキュリティレイヤ210が、悪意のある、予期されない、または不審なオペレーションまたはイベントを識別または検出したならば、セキュリティレイヤ210は、プロセスをキルし(たとえばその実行を終了させ)、かつ/または既知のまたは予め規定された状態に構成要素またはシステムを復帰させる。セキュリティレイヤ210により実施される何らかの措置と同様に、プロセスをキルすることをたとえば、車両のコンフィギュレーション、コンテキストおよび/または状態、および/または車両内の構成要素のコンテキストおよび/または状態に基づき、選択的に行うことができる。たとえばセキュリティレイヤ210は、車両が第1の状態にあるときに、イベントを引き起こしたまたは生成したプロセスをキルすることができ、ただしそのイベントが検出されたときに車両がそれとは異なる第2の状態にあるならば、ECUをリセットすることができる。
【0050】
たとえば、悪意のある、予期されない、または不審なオペレーションまたはイベントの識別または検出に応答して、あるいは予期される挙動またはフローからの逸脱の検出に応答して、セキュリティレイヤ210は、ECU204における実行可能コード220の実行を終了させることができ、あるいはセキュリティレイヤ210はECU204をリセットすることができ、あるいはセキュリティレイヤ210は、ECU204に対しデフォルトのまたは他のコンフィギュレーションを適用して、ECU204をリブートさせることができ、かくしてECU204は既知の予め規定された状態に復帰する。構成要素(たとえばECU)の既知のまたは予め規定された状態を、必ずしも以前の状態ではなく特別な状態とすることができ、たとえば1つまたは複数のECUに強制される既知のまたは予め規定された状態を、リンプホーム状態またはリンプホームモードとすることができ(たとえばこれによって運転者が迅速かつ安全に帰宅できるようになる)、ただしこの場合、車両の機能は制限される(たとえば最高速度が制限され、ヘッドライトは点灯不可など)。
【0051】
システムの挙動が予期される挙動またはフローから逸脱しているならば、あるいは車両内のシステムのセキュリティに関連するイベントが検出されたならば、セキュリティレイヤ210は、以下のうちの1つまたは複数とすることができる措置、または以下のうちの1つまたは複数を含むことができる措置を実施する、または講じることができる。すなわち特定のメッセージタイプの頻度を制限する(たとえば特定のIDを有するメッセージに対しレート制御を適用する)、メッセージのログを作成する(たとえばオフライン解析を実施できるよう、任意のメタデータのデータおよび/または内容を記憶する)、ユーザに警告する(たとえば予め規定された受信者セットに電子メールを送信する、インフォテイメントシステムの画面にメッセージを表示する、アラームを鳴らすなど)。
【0052】
一部の実施形態によれば、実行可能コードを検証または認証するために、セキュリティレイヤ210は、メモリ内のコードを基準コードと比較する。たとえば、セキュリティレイヤ210にメモリの基準マップを設けることができ、セキュリティレイヤ210は、ECU202のメモリをこの基準マップと比較することができ、かくして基準マップからの変化または逸脱が検出される。セキュリティレイヤ210は、基準マップを生成することができる。たとえば、学習フェーズ中にセキュリティレイヤ210は、ECU202のメモリのイメージを記録または記憶することができ、記録されたイメージを基準マップとして使用することができる。別の実施形態によれば、基準マップをたとえばECU202の製造業者によって供給することができる。
【0053】
メモリの変化(または既述の基準マップからの逸脱)が検出されたならば、その場合にはセキュリティレイヤ210(またはプロセッサ201)は、1つまたは複数の措置を実施することができる。たとえば、既述のようにメモリの変化または基準マップからの逸脱が検出されたならば、その場合にはプロセッサ201は、警告または警報を発することができ、たとえば電子メール(Eメール)メッセージまたはショートメッセージサービス(SMS)メッセージを、予め規定された受信者リストに送信することができ、かつ/または車両内のインフォテイメント画面にメッセージを表示することができる。メモリの変化または基準マップからの逸脱の検出に応答して実施される措置は、ECUを停止すること、たとえばECUをシャットダウンすること、を含むことができ、あるいはECUが車載ネットワークを介して通信しないようにすることを含むことができる。他の任意の措置を実施することができる。
【0054】
セキュリティレイヤ210は、システム250のメモリを周期的に(たとえば5分に一度)スキャンすることができる。セキュリティレイヤ210はシステム250の状態を周期的に監視することができ、たとえばセキュリティレイヤ210は、ECU202および204の健全性を周期的にチェックすることができ、たとえばECU202および204のCPU利用率、それらのメモリがどれくらい利用されているのかのチェック、接続されているフラッシュメモリまたは他の記憶装置にデータがどれくらい記憶されているのかのチェックなどである。例を挙げるとリソースの使用量を表す値のセット、たとえばCPUサイクルまたは電力、記憶装置およびメモリの使用量または消費量を含む基準状態を、記憶システム130に記憶することができ、セキュリティレイヤ210は、ECUの状態を基準状態と比較することができ、たとえばECU202における占有メモリ量を基準状態のメモリ占有と比較することができる、ECU204におけるCPUの利用率を基準状態における基準利用率と比較することができる、といった具合である。一部の実施形態によれば、セキュリティレイヤ210はイベントに基づきECUの状態をチェックする。たとえばイベントを、エンジンの始動、本明細書で説明する基準実行からの逸脱の検出、車載ネットワーク200への新たなデバイスの接続、車両が予め規定された速度よりも高い速度で走行していること、タイマ期限満了、または他の任意のイベントとすることができる。
【0055】
たとえば、プロセッサ201により実行されたタイマによって、セキュリティレイヤ210は、ECU202および204におけるコードまたはメモリのスキャン、検証および/または認証を、1時間ごとに、毎日などというように行うことができるようになる。システム250におけるイベントによって、セキュリティレイヤ210(またはセキュリティレイヤ210におけるコード検証レイヤ)がシステム250のメモリをスキャンするよう、トリガすることができる。たとえば、かかるイベントを以下のうちの少なくとも1つとすることができる。すなわち、車両のエンジンの始動、車両のドアの解錠、ECUにおけるプロセスの実行、ECU内のコードによるファイルへのアクセス、通信イベント、たとえばECUから他へのメッセージの送信、ユーザからの入力の受信、システム内のエンティティからの入力の受信、たとえばECU204によるECU202からの入力の受信。
【0056】
1つの実施形態によれば、不審なイベントまたは状態のセットの検出に応答して、既述のようにメモリをスキャンおよび/または認証することができる。たとえば、車両が毎時55マイル(mph)で走行中であるという情報を、ECU202によりプロセッサ201に伝達することができ、さらに車両のドアのうちの1つが開いているという情報をECU204によりプロセッサ201に伝達することができ、かかる不審なイベントまたは状態のセット(車両が高速で走行しかつドアが開いている)によって、セキュリティレイヤが少なくとも一部のECUにおけるコードのスキャンおよび/または認証を行うことができるようになり、たとえば上述の例であれば、たとえばドアが開いていながら車両が55mphで走行しているという状況は、不審であり、かつ/または起こりそうにもないことから、ECU202および204によって実行されたコードを少なくとも、スキャンおよび認証することができる。
【0057】
一部の実施形態によれば、セキュリティレイヤ210は、タイムインターバルおよびイベントのうちの一方に基づき、コードの検証を実施する。図3を参照すると、この図には、本発明の一部の実施形態による検証実行方法のフローチャートが示されている。本明細書で説明する車載ネットワークに対する攻撃の検出方法を、(図1に示されているような)コンピューティングデバイス100によって、または(図2に示されているような)車載ネットワーク200に組み込まれた他の任意の計算デバイスによって、実施することができる。
【0058】
セキュリティレイヤ210は、並列モードまたは直列モードで、ファイルの実行および/またはファイルのロードを検証することができる。直列モードの間、セキュリティレイヤ210は、さしあたりプロセスを検証することができ、検証の結果を受けてのみ、ファイルをロードおよび/または実行することができる。検証が失敗した場合、セキュリティレイヤ210は、ロードおよび/または実行をまるっきり阻止することができ、かつ/またはそのコンフィギュレーションにおいて規定された他の何らかの措置を実施することができる。並列モードの間、セキュリティレイヤ210は、ファイルの実行および/またはメモリへのロードを許可することができ、そのファイルが実行されている間にそれを検証することができる。一部の実施形態によれば、システム250は、どのファイルを所与の時点および/または所与のシステムの状態で検証すべきかを最適化するために、キャッシュを使用することができる。
【0059】
セキュリティレイヤ210は、並列モードまたは直列モードで、ファイルの実行および/またはファイルのロードを検証することができる。直列モードの間、セキュリティレイヤ210は、さしあたりプロセスを検証することができ、検証の結果を受けてのみ、ファイルをロードおよび/または実行することができる。検証が失敗した場合、セキュリティレイヤ210は、ロードおよび/または実行をまるっきり阻止することができ、かつ/またはそのコンフィギュレーションにおいて規定された他の何らかの措置を実施することができる。並列モードの間、セキュリティレイヤ210は、ファイルの実行を許可することができ、そのファイルが実行されている間にそれを検証する。一部の実施形態によれば、システム250は、どのファイルを所与の時点および/または所与のシステムの状態で検証すべきかを最適化するために、キャッシュを使用することができる。
【0060】
一部の実施形態によれば、検証が選択的に、実行可能コードがメモリに(たとえば実行に備えてメモリ120に)ロードされる前またはロードされた後のいずれかに実施され、一部の実施形態によれば、検証が選択的に、実行可能コードが実行される前または実行された後のいずれかに実施される(たとえばコードがメモリにロードされた後であるがそれがコントローラ105によって実行される前)。
【0061】
セキュリティレイヤ210は、301においてプロセスの実行を検出することができる。たとえば信号、メッセージまたはイベントをECU202におけるオペレーティングシステムから受信することによって、セキュリティレイヤ210またはプロセッサ201は、プロセスがECU202において呼び出されたことを検出、判定または識別することができる。セキュリティレイヤ210は、302において呼び出されたプロセスがロードされているメモリを読み出すことができる。セキュリティレイヤ210は、303においてプロセスのハッシュを計算することができ、304においてプロセスの証明書を検証することができる。たとえば証明書を、認証または検証されたプロセスのコードに基づき計算された値とすることができ、または証明書はこの値を含むことができる。たとえば、ECU202において実行されるプロセスまたはソフトウェアの提供者が、ECU202において実行されるプロセスのオリジナルコードに基づき生成または計算された証明書を供給することができる。別のケースにおいて、たとえば記憶システム130に記憶された、またはECU204のメモリにロードされたプロセスのコードに基づき、プロセッサ201によって証明書を生成または計算することができる。たとえば、システムの初期化段階中、プロセッサ201は、ECU202におけるプロセスごとに証明書またはハッシュ値を計算することができ、次いで既述のように証明書を使用することができる。セキュリティレイヤ210は、305においてプロセスのハッシュを証明書におけるハッシュと比較することができる。プロセスのハッシュが証明書におけるハッシュと同一である場合、セキュリティレイヤ210は306において実行を許可することができる。プロセスのハッシュが証明書におけるハッシュと同一ではない場合、セキュリティレイヤ210は307において実行をブロックすることができ、それによって攻撃を阻止することができる。
【0062】
一部の実施形態によれば、セキュリティレイヤ210は、プロセスの実行を検出し、プロセスのコードに基づきハッシュ値を計算し、計算されたハッシュ値を実行可能コード(プロセス)の(またはこれに関連づけられた)証明書と比較することによりプロセスを検証するように、適合されている。既述のように、ファイル内の実行可能コードについて(たとえば実行可能コードをメモリにロードする前にファイルからデータを読み出すことにより)、ハッシュ値を計算することができ、またはメモリ120にすでにロードされている実行可能コードに基づき、たとえば実行可能コードをメモリ120から読み出すことにより、ハッシュ値を計算することができる。たとえばシステムの応答性を高めるためには、コードが実行された後にそのコードを検証するように、セキュリティレイヤ210をコンフィギュレーションすることができ、かくして実行可能コードのレスポンスタイムが速められ、セキュリティを高めるためには、コードがメモリにロードされる前にそのコードを検証するように、セキュリティレイヤ210をコンフィギュレーションすることができる。
【0063】
ここで述べておきたいのは、車両の耐用期間が長いことから(たとえば数年または10年間を越えることすらある)、攻撃者にとって様々な脆弱性を悪用して既存の防備を迂回する機会がいっそう増える可能性がある、ということである。かかる脅威から護る目的で、システム250のECU202、204は、かかる突破がいつ発生するのかを検出するために、ヒューリスティックな挙動に基づく脅威検出エンジンによって動作することができる。
【0064】
一部の実施形態によれば、かかる突破の検出を、行動解析のアプローチに基づき早期の段階で起こすことができる。かかる検出システムを、予期されない挙動の検出に基づくものとすることができるので、悪用された脆弱性のタイプ(たとえば論理的脆弱性であるのか、またはバッファオーバフローなどメモリにおいて実装ベースの脆弱性であるか)にかかわらず、攻撃を検出することができる。
【0065】
一部の実施形態によれば、セキュリティレイヤ210および/またはセキュリティポリシーによって、予期される挙動からのシステムの挙動の逸脱に基づき、脅威が識別される。一部の実施形態によれば、セキュリティレイヤ210は、挙動、たとえば行動解析を利用して規定された挙動、からの逸脱に基づき、セキュリティ脅威を検出するように適合されている。オンラインのコネクティビティおよび/またはユーザのインタラクションを必要とせずに、サイバー脅威(たとえばECUの制御を獲得しようという試行、または他の何らかの攻撃)を封じ込める、かつ/または制圧するよう、自律的に(たとえばオフラインで)応答するように、検出システムをコンフィギュレーションすることができる。たとえば、ある異常なイベント(たとえば既述の実行可能コードの変更)が検出されたならば、検出システム(たとえばセキュリティレイヤ210)は、システムの予め規定されたセキュリティポリシーに従い、レスポンスをトリガすることができる。たとえば可能なレスポンスを、プロセスをキルすること、プロセスをリスタートすること、システムを既知の状態に復帰させること(たとえば「リンプホーム」状態またはバックアップコードのロード)、および/またはイベントのログを作成すること、とすることができる。一部の実施形態によれば、検出システム(たとえばセキュリティレイヤ210)は、検出されたイベントに関連する指示を車両のオペレータに求めることができる。
【0066】
一部の実施形態は、脅威に対し自律的に応答するように適合されている。再び図2を参照する。
【0067】
一部の実施形態によれば、(たとえばプロセッサ201に結合された)ヒューリスティック(またはルール)エンジン230を使用して、検出システムにおいて異常を検出することができる。ヒューリスティックエンジン230は、ヒューリスティクスセットを使用して、異常とみなされた一連のイベントを規定することができる。1つの実施形態は、一連のイベントを脅威または異常と関連づけるように適合されたヒューリスティクスエンジンを含むことができる。
【0068】
たとえば、ヒューリスティックエンジン230が何らかの関連イベントを検出できるようにするために、たとえばプロセスの実行、リソースへのアクセス(たとえばワイヤレス通信デバイスへのアクセス、センサからのデータ読み出し、ファイルへのアクセス、またはインタフェースポートまたはECUを使用しようとする試行)を検出できるようにするために、ECU202におけるオペレーティングシステムに対するフックを利用することができる。ヒューリスティックエンジン230は、以下のモデルのうち少なくとも1つに基づき異常を検出することができる。すなわち、予期されるリソース消費レベルからの逸脱の検出(たとえばECUによる電力消費、ファイルシステムまたはメモリへの過度なアクセス)、予期されるプロセス特権からの逸脱の検出(たとえば制限されたメモリセグメントをアクセスしようという試行、特定のファイルをアクセスしようという試行)、異常な実行パターンの検出(たとえばプログラムの特定のシーケンスの実行、短いタイムインターバル内での同じプロセスの連続的または反復的な実行)、ブラックリストに挙げられたアプリケーションプログラムインタフェース(API)コールに対する呼び出しまたはその利用の検出、変則的なネットワークアクティビティの検出(たとえばパケットの再送信、センシティブな構成要素と通信しようという反復的試行)、および/またはセンシティブなリソースへの異常なアクセスの検出。異常または不審な挙動を識別または検出するために、ヒューリスティックエンジン230によって任意のポリシー、ルール、判定基準または閾値を使用することができる。たとえばあるルールは、リソースにアクセスしてよい毎秒あたりの回数を規定することができ、またはあるルールは、ネットワークを介して特定の送信先に送信されるメッセージ数を規定することができる、といった具合である。本明細書で説明するルール、判定基準またはヒューリスティクスを、動的に規定および/または更新することができる。たとえばヒューリスティックエンジン230は、プロセスを監視してそれらの挙動を記録することができ、たとえばヒューリスティックエンジン230は、いくつかのプロセスについて、CPU消費量、ネットワークアクティビティ、ファイルへのアクセスおよびその他同類のものを記録することができ、このようにしてプロセスに関するプロファイルを生成することができ、次いでかかるプロファイルを、予期される正常なプロセスの挙動からの逸脱を検出するために使用することができる。ヒューリスティックエンジン230が既述の挙動または異常の逸脱を検出したならば、ヒューリスティックエンジン230は既述の任意の措置を実施することができ、たとえばユーザへの警告、プロセスの停止などを行うことができる。
【0069】
一部の実施形態によれば、検出システム(たとえば車載ネットワーク200、またはセキュリティレイヤ210、ヒューリスティックエンジンまたはルールエンジン230および/またはプロセッサ201を含むシステム250)を、オフボード型の監視および制御バックエンドシステムを伴った(たとえば少なくとも1つのECUを備えた)オンボードシステムとすることができる。たとえばオフボードシステムをサーバ260内に含めることができ、このシステムは個々の複数の車両内の複数のシステム250と通信することができる。オフボードシステムは、検出を隊マネージャに呈示することができ、このシステムを、潜在的なセキュリティおよび/または検出範囲に関するデータを分類可能なものとすることもできる。
【0070】
本発明の実施形態は、(たとえば既述のように計算された、かつ/またはセンサから収集された)任意のデータを、車両の外部に配置することのできるサーバ260に送信することができ、サーバ260はこのデータを用いて、車両の隊に関連するデータを生成および呈示することができる。オフボード検出システムによって、セキュリティアナリストがデータの表示または呈示からイベントをフィルタリングすることができるようにもなり、たとえばソーティングされたリストとしてイベントを呈示することができ、フィルタを用いて、イベントまたは重要なものだけが示されるように、呈示されたリストから一部のイベントを取り除くことができる。オフボードシステムによって、オペレータがシステムをコンフィギュレーションすることができるようになり、たとえばオペレータが車両内のシステム250を、たとえば一部のイベントがシステム250によってフィルタリングされるように(たとえばオフボードシステムに報告されないように)、遠隔で制御することができるようになる。したがって1つの実施形態によれば、隊マネージャが、たとえば個々に画面上で、隊における複数の車両に関連するイベントを見ることができるようになり、さらに隊の車両内のセキュリティシステムのオペレーションを遠隔で制御できるようになる。
【0071】
一部の実施形態を、1つまたは複数のソフトウェアセンサからのイベントに関するデータを受信するように適合することができる。一部の実施形態によれば、ヒューリスティックエンジン230への入力は、システム250全体を通して複数のセンサから受信されたイベントを含むことができ、この場合、それらのセンサは、ヒューリスティックエンジン230の基本的な構成ブロックであるイベントを生成することができる。センサを、特別にヒューリスティックエンジン230のために、固有に構築してシステムに導入してもよく、かつ/またはシステム250内の既存のモジュールから転用してもよい。ソフトウェアセンサ240を使用することができ、このセンサはヒューリスティックエンジン230へ入力を供給することができる。一般にソフトウェアセンサを、(たとえば実行可能コード125と同様の)実行可能コードとすることができ、これによってソフトウェアイベントをセンシングすることができる。たとえばソフトウェアセンサ240は、システム250内のファイルまたはメモリへのアクセス、ネットワークを介したデータの送信、プロセスの実行などのようなイベントを検出するように適合された実行可能コードを含むことができる。ソフトウェアセンサ240は、以下のうちの1つまたは複数に関連する情報を含むことができるセンサデータを収集および/または生成することができる。すなわち、システムコール、Linux監査イベント、新たな、かつ/または既存の到来コネクションおよび/または送出コネクション、プロセスのフォークおよび/または実行、ライブラリのロード、何らかのシステムリソース(たとえばファイル、共有メモリ、グローバルオブジェクトなど)のアクセスおよび/または読み出しおよび/または書き込みおよび/または状態の変更、メモリまたはCPUの利用率、ログイン試行、および/またはプロセス間通信(IPC)メッセージ。
【0072】
一部の実施形態によれば、ヒューリスティックエンジン230において受信された様々なイベントを、実行可能な、かつ/またはコンフィギュレーション可能な、かつ/またはモジュール型のヒューリスティクスセットに従い、解析することができる。それらのヒューリスティクスを互いに独立したものとすることができ、各々がたとえばそれぞれ異なるイベントセットを注視することができる。たとえばヒューリスティックエンジン230は、車両用ECUにおいて以下のヒューリスティクスのうちの少なくとも1つについてチェックすることができる。すなわち、新たにかつ/または最近変更されたファイルの実行、ルート所有ファイルの変更、新たに/最近変更されたファイルを読み出すスクリプトエンジン、ただしスクリプトエンジンを、bash、dash、python、pearl、lunaなどのスクリプトエンジンのようにコンフィギュレーションされた任意のプロセスとすることができる、”/tmp”または”/media”など「禁止」フォルダからのファイルの実行/ロード、および/または”w/rw”から”x”への、または”x”から”w/rw”へのメモリページの属性の変更。他の実施例によれば、ヒューリスティックエンジン230は、車両用ECUにおいて以下のヒューリスティクスのうちの少なくとも1つについてチェックすることができる。すなわち、システム内のセグメンテーション違反後に怪しげに実行されたルートプロセス、「ルート」として実行するようにコンフィギュレーションされていないユーザによりプロセスが実行される、コンフィギュレーションされたものではない値にセットされた環境変数によりプロセスが実行される(たとえばLD_PRELOADまたはPATH)、書き込みのために所定のファイルをオープンしようとする試行が繰り返し失敗している、”ptrace”といったブラックリストに挙げられたシステムコールの使用、(たとえば”syscall utimensat”を用いた)ファイルのタイムスタンプの変更、実行するようにコンフィギュレーションされていない他のプロセスまたはユーティリティをプロセスが実行する、コールするようにコンフィギュレーションされていない”syscall”をプロセスがコールする、コンフィギュレーションされているよりも多いかつ/または少ない実行中のインスタンスをプロセスが有する。
【0073】
一部の実施形態によれば、ヒューリスティックエンジンまたはルールエンジン230は、車両用ECUにおいて以下のヒューリスティクスのうちの少なくとも1つについてチェックする。すなわち、ある一般的なプロセスが新たなロケーションにコピーおよび/または移動される、かつ/またはリネームされる、通常は異なるプロセスにより開始されるデスクトップBUS(DBUS)サービスをプロセスが記録する、通常は成功するDBUSサービスをプロセスが記録しようと試行して失敗する、使用されるようにコンフィギュレーションされていないAPIを用いてプロセスがDBUSサービスを問い合わせる/リクエストする、プロセスがDBUSイントロスペクションまたは同様の珍しいクエリを問い合わせる、DBUS認証エラーメッセージ(たとえばAuthFailed)が受信された、システムへのログイン試行が失敗した(またはコンフィギュレーション可能な回数を超えた)、かつ/またはログインユーザ数がコンフィギュレーションされた数を超えている。別の実施形態によれば、ヒューリスティックエンジン230は、車両用ECUにおいて以下のヒューリスティクスのうちの少なくとも1つについてチェックすることができる。すなわち、オープンするようにコンフィギュレーションされていないデバイス(たとえば”/dev/can”)をオープンしようとプロセスが試行する、通常はデバイスおよび/またはファイルなどに、そのウィンドウがフォアグラウンドにあるときにしかアクセスしないインタラクティブなプロセスが、バックグラウンドにあるときにそれにアクセスする、通常はコールされないAPIへのコールによってボリュームが変更される、ネットワークを介して通信するようにコンフィギュレーションされていないプロセスがネットワークを介して接続しようと試行する、通常はリスニングしないTCPポートおよび/またはUDPポートへのリスニングをプロセスが開始する、システム内でIPコンフリクトが検出される、特別に許可されていない主要なシステムファイル(たとえば”/etc/sysctl.conf”、”/etc/pam.conf”、/etc/shadow”など)をプロセスが読み出そうと試行する、かつ/または”/proc/sys/”および/または”/proc/net”ディレクトリ(ルート、ネットインタフェース)においてカーネルパラメータが変更される。ヒューリスティックエンジンまたはルールエンジン230は、ECU202および204における複数のプロセス各々について、許可されたまたは予期されるオペレーションまたはイベントのリストを、(たとえば学習フェーズ中に)生成することができ、またはヒューリスティックエンジンまたはルールエンジン230にそれらを設けることができる。たとえば、あるリストは、特定のプロセス、スクリプトまたはプログラムは、第1のフォルダ内のファイルへのアクセスが許可されている、ということを表すことができ、したがってそのプロセスが、これとは異なる第2のフォルダ内のファイルにアクセスするならば、ヒューリスティックエンジンまたはルールエンジン230は、ルールが破られたと判定することができ、措置を実施することができる(たとえばそのイベントを報告する、そのプロセスを終了させるなど)。既述のようにヒューリスティックエンジンまたはルールエンジン230により使用されるプロセスのためのリストは、任意のイベント、パーミッションおよびその他同類のものを含むことができ、たとえば、ヒューリスティックエンジンまたはルールエンジン230により使用されるリストは、許可されたまたはパーミッションが与えられたオペレーション、ネットワークコネクションまたはネットワークアクティビティ、許可されたまたは制限されたリソースなどを含むことができ、たとえば、プロセスAはディスプレイの使用についてパーミッションが与えられており、ECU202におけるプロセスBは、ECU204との通信を許可されており、プロセスCは、フォルダ/proc/confにアクセスすることを制限されている。ヒューリスティックエンジンまたはルールエンジン230により使用されるプロセスのためのリストを、以下のうちのいずれか1つに関連するものとすることができる。すなわち、内容の変更(たとえばファイルへのデータの追加/ファイルからのデータの削除)、内容の属性の変更(たとえばリードオンリーからリードライトへのファイルの属性の変更)、内容に関連するメタデータの変更、プロセスのパーミッションおよびオペレーションおよび実行。
【0074】
一部の実施形態は、以下のうちの少なくとも1つに適用される(たとえばルールエンジン、ユニットまたはモジュールにおけるルールを使用して実装された)ヒューリスティクスに基づき、異常(たとえば既述のようにコードの検証または認証の失敗)を識別するように適合されたルールエンジンを含む。すなわち、内容の変更、内容の属性の変更、内容に関連するメタデータの変更、プロセスのパーミッション、オペレーションおよび実行。
【0075】
一部の実施形態によれば、例外またはイベント(たとえば基準実行フローからの逸脱、既述のようなコードの検証の失敗または妥当性確認プロセスの結果)を、ホワイトリストまたはブラックリストに関連づけることができ、既述のように適用されたルールを、ホワイトリストおよびブラックリストに関連させることができ、またはそれらに基づくものとすることができる。
【0076】
検出システム250は、ヒューリスティクスのうちの1つまたは複数に関連づけられたホワイトリストのセットを含むことができる。ホワイトリストは、関連づけられたヒューリスティクスに対する例外セットを含むことができる。たとえばホワイトリストは、ルート特権による実行を許可されたプロセスのリストを含むことができる。別の実施例によれば、ホワイトリストはプロセスペアのリストを含むことができ、この場合、各ペアは、ターゲットのECU202において見られることが予期される親および/または子の関係を記述することができる。検出システム250は、ヒューリスティクスのうちの1つまたは複数に関連づけられたブラックリストのセットを含むことができる。たとえばブラックリストは、ルート特権で実行されてはならないプロセスのリストを含むことができる。
【0077】
一部の実施形態によれば、実行可能コードの検証、認証および/または妥当性確認、または予期される挙動からの逸脱の検出は、たとえばプロセスツリーに関連する情報を用いて、基準実行挙動からの実行可能コードの実行の逸脱に基づき、車載ネットワークに接続された構成要素の悪用に関連するイベントを検出することを含む。たとえば、セキュリティレイヤ210におけるルールに従い、特定の子プロセスを生み出すことを、第1のプロセスについては許可することができるが、第2のプロセスについては禁止することができ、したがって第2のプロセスにより子プロセスを生み出すイベントを、既述のように異常、脅威または予期される挙動からの逸脱として識別することができる。
【0078】
実施形態によれば、セキュリティレイヤ210は、ECUにおいて実行されるプロセスのパーミッションを(たとえば周期的にまたは別のやり方で)監視、チェック、または検査することができ、それらのパーミッションを予め規定されたまたは予期されるパーミッションと比較することができ、プロセスのパーミッションまたは特権が予期されたものでなければ、1つの実施形態によれば、既述のような予防措置または他の措置を実施することができる。たとえば、あるプロセスのリソースへのアクセス権の変更(第1の実行中のプロセスが他の実行中のプロセスに対して引き起こす可能性のあるもの)を検出することができ、予期される挙動からの逸脱または脅威として識別することができ、本明細書で言及するようにそれに対して措置を講じることができる。
【0079】
検出システム250は、検出各々を信頼レベルに結び付けることができる。たとえば信頼レベルを、検出タイプ、その検出を生成したヒューリスティクス、および/またはヒューリスティクスのパラメータ、および/または車両状態、および/または車両における以前の警告に由来するものとすることができる。検出システム250を、イベントまたは警告の信頼レベルに基づき、それらに応答するようにコンフィギュレーションすることができる。
【0080】
たとえば、比較的高い信頼度に関連づけられた実行可能コードの認証の失敗を含むイベントによって、1つの実施形態が本明細書で説明するようにメッセージをブロックすることができるようになり、または車載ネットワーク用の構成要素を隔離することができるようになり、他方、比較的低い信頼度に関連づけられた実行可能コードの認証の失敗を含むイベントは、ログを作成するだけでよい。信頼レベルを、適用可能な任意のデータに依存させることができる。
【0081】
一部の実施形態によれば、セキュリティレイヤ210は、セキュリティ脅威を検出し、その脅威を信頼レベルに関連づけ、その信頼レベルに基づき少なくとも1つの措置の実施を選択するように適合されている。一部の実施形態によれば、信頼レベルは何が検出されるのかに関連づけられる。たとえば、1つの実施形態が実行可能コードの認証に失敗したならば、その場合には、攻撃が進行中であるかまたは攻撃が識別されたと想定することができ、高い信頼レベルまたは信頼値をそのイベントまたは検出に関連づけることができ、たとえばこれによって実施形態は既述のような予防措置を講じるようになる。ただし、予期される挙動またはフローからたいして逸脱していないことが検出されたならば、その場合には低い信頼レベルをその検出に関連づけることができ、たとえばこれによって1つの実施形態は検出を報告するだけとなる。
【0082】
検出システム250は、検出各々をリスクレベルに結び付けることができる。一部の実施形態によれば、イベントに関連づけられたリソースに基づき、リスクのレベル(リスクレベル)が決定または計算される。たとえば、実行可能コードが妥当性確認または認証に失敗し、かつそのコードがECUにおいて非クリティカルなプロセスのもの、たとえばエアコンディショニング(AC)システムを制御するプロセス、であるならば、1つの実施形態はかかる失敗イベントを低いリスクのレベルまたはリスクレベル(たとえば「2」)に関連づけることができるが、実行可能コードの認証の失敗が、ECUにおけるクリティカルなコード、たとえばエンジンまたはワイヤレス通信を制御するコード、について生じたのであれば、その場合には1つの実施形態は、その失敗イベントを高いリスクのレベルまたは値(たとえば「8.5」)に関連づけることができる。
【0083】
リスクのレベルを、車両または車載ネットワークに接続された構成要素のコンテキストまたは状態に基づき、決定または計算することができる。たとえば1つの実施形態は、(1つの実施形態を含む)車両が駐車されている間、かつ/またはエンジンが稼働中でない間(第1の状態またはコンテキスト)、低いリスクのレベルまたは値を実行可能コードの認証の失敗に関連づけることができ、さらにこの実施形態は、車両が毎時50マイルで走行している間(第2の状態またはコンテキスト)、高いリスクのレベル(リスクレベル)を同じ実行可能コードの認証の失敗に関連づけることができる。
【0084】
本明細書で言及される用語「状態」、「コンテキスト」、「車両のコンテキスト」および「車両の状態」は、以下のうちの1つまたは複数のものの任意のコンフィギュレーション、オペレーションまたは機能に関する態様に関連するものとすることができる。すなわち、車両、車載ネットワーク、および/または車載ネットワークに接続された1つまたは複数のノード。たとえば車両の状態またはコンテキストを、たとえば車両における1つまたは複数のセンサまたはノードからセキュリティレイヤ210により受信されたデータに基づき、規定することができる。たとえば状態またはコンテキストを、以下のうちの1つまたは複数に基づき決定することができる。すなわち、車両の速度、加速度、先行車両または後続車両に近づく速度、毎分エンジン回転数(rpm)、エンジン温度、油圧、水圧、車輪の牽引、道路条件、車両ロケーション、天候条件など。あるコンテキストを、メッセージの内容に基づき決定することができる。たとえば、速度rpmの変化、ドアの開放などを報告するECUからのメッセージによって、セキュリティレイヤ210は車両の状態またはコンテキストを決定することができるようになる。
【0085】
検出システム250を、イベントまたは警告のリスクレベルに基づき、それらに応答するようにコンフィギュレーションすることができる。たとえばセキュリティレイヤ210は、低いリスクのレベルまたは値を有するイベントのログを作成するだけよく、イベントが中庸のリスクレベルに関連づけられている場合には、運転者に警告を発することができ、高いリスクレベルを有するイベントに続く特定の構成要素からのメッセージをブロックすることができ、まだ比較的高いリスクレベルの間、車両内の構成要素をディスエーブルすることができる。
【0086】
一部の実施形態によれば、セキュリティレイヤ210は、セキュリティポリシーを少なくとも1つのアプリケーションに関連づけ、そのセキュリティポリシーにディジタル署名するように適合されている。一部の実施形態によれば、ECU202および204は、車両オペレータによる新たなアプリケーションのインストールをサポートすることができる。検出システム250は、アプリケーションごとに1つのセキュリティポリシーをサポートすることができる。セキュリティポリシーは、1つのアプリケーションに関連づけられた種々のヒューリスティクス、判定基準またはルールを規定することができ、たとえば既述のルールまたはヒューリスティクスのセットを、ECU202および204にインストールされたアプリケーション各々に関連づけることができる。セキュリティポリシーは、既述のヒューリスティクスのうちの1つまたは複数に関連するホワイトリストおよび/またはブラックリストのセットを含むことができる。一部の実施形態によれば、各アプリケーションのセキュリティポリシーは、その真正性の検証を可能にする目的で、ディジタル署名される。一部の実施形態によれば、セキュリティポリシーを、関連づけられたアプリケーションと共にターゲットのECU202、204に分散させて配備することができる。
【0087】
一部の実施形態によれば、セキュリティレイヤ210は、少なくとも1つのセンサイベントを受信し、そのイベントのタイプおよびセキュリティポリシーに基づき、異常を識別するように適合されている。
【0088】
図4を参照すると、この図には、本発明の一部の実施形態による車載ネットワークに対する攻撃を検出する方法のフローチャートが示されている。図示されているように、プロセッサ201は、401において少なくとも1つのセンサイベントを受信することができ、402においてそのイベントをそのタイプに基づき処理して記録することができる。次いでプロセッサ201は、403においてセキュリティポリシーが有効であるか否かをチェックすることができる。セキュリティポリシーが有効である場合には、404においてイベントの実行を継続することができる。セキュリティポリシーが異常であれば、プロセッサ201は、405においてセキュリティポリシーに従い応答することができる。たとえば記憶システム130に、ポリシーを記憶することができる。たとえば、メモリ内のファイルまたはセグメントは、1つのポリシーを規定または構成するヒューリスティクス、判定基準、条件、ルールおよび措置を含むことができる。ポリシーを保証することができ、たとえばポリシーを既述の証明書に関連づけることができ、ポリシー内のデータまたはポリシーのデータを、暗号化および/または署名することができる。ポリシーが有効であるか否かを判定するために、セキュリティレイヤ210は、たとえば実行可能コードの妥当性確認および認証に関して本明細書で説明したように、たとえばポリシーに関連づけられた証明書を使用して、ポリシーを妥当性確認、認証および/または検証することができる。かくして本発明の実施形態は、ポリシーが(たとえば攻撃者によって)変更されたか否かを判定することができ、ポリシーが変更されたと判定されたならば、1つの実施形態によってポリシーの使用を回避することができ、本明細書で説明したように警告を発生し、かつ/または任意の措置を講じることができる。
【0089】
セキュリティレイヤ210は、システムの挙動の記録に基づき、セキュリティポリシーを更新することができる。検出システム250のセキュリティポリシーを、クリーンな(または較正された)システムの挙動に基づき規定することができる。コンフィギュレーションプロセスを反復的なものとすることができ、ヒューリスティクスごとにデフォルトのパラメータを含む予め規定された初期コンフィギュレーションから開始することができる。一部の実施形態によれば、かかるコンフィギュレーションをパーミッションが与えられたものとすることができる。次いでシステムを学習モードに置くことができ、通常どおりに実行することをシステムに許可することができ、予め規定されたスクリプトに基づきシステムの種々の特徴をくまなく実施しながら、一般的な手法でシステムを使用することができる。コンフィギュレーションの新たな改訂を生成するために、検出ログを目下のコンフィギュレーションと共に入力として用いることができる。最終的に、スクリプトを繰り返すことによって、コンフィギュレーションをターゲットシステムにおいて検証することができる。
【0090】
ここで述べておきたいのは、外部のインタフェースと接続された車両のECU202、204は、車載ネットワーク200と接続される可能性もあることから、それらは他のECU202、204に対する攻撃ベクトルとして振る舞う可能性がある、ということである。たとえば、内部の車載ネットワーク200へのインタフェースを、CAN、イーサネット、MOSTおよびフレックスレイのプロトコルのうちの少なくとも1つに基づくものとすることができる。一部の実施形態によれば、セキュリティシステム(たとえばセキュリティレイヤ210)を、車両とサーバとの間の通信を監視および/またはフィルタリングする目的で、それらのECUに配備することができる。セキュリティシステム、セキュリティユニットまたはセキュリティモジュール(たとえばセキュリティレイヤ210)を、それらのECUと車載ネットワーク200上の他のECUとの間の通信を監視および/またはフィルタリングする目的で、それらのECUに配備することができる。
【0091】
一部の実施形態によれば、監視システムは通信の経過を辿ることができ、システムの仕様からの逸脱を探すことができる。たとえば監視システムは、以下のうちの少なくとも1つを探すことができる。すなわち、通信に関連づけられたアプリケーション、使用されるプロトコル、通信レート、使用されるサービス(たとえばSOME/IPサービスID)、通信に関連づけられたクライアント(たとえばIPおよび/またはMACアドレスおよび/またはSOME/IPクライアントID)。
【0092】
一部の実施形態によれば、監視システムは、通信妨害を検出することができる。かかる検出が行われた結果、システムは検出に応答することができる。たとえばシステムは、通信をブロックすることにより、かつ/または関連づけられたアプリケーションを終了させることにより、かつ/またはイベントのログを作成することにより、応答することができる。たとえばシステムは、インターネットプロトコルを介した診断(DoIP)の通信を監視することができる。システムは、自身のセキュリティポリシーに基づき、特定の診断サービスへのアクセスを制限することができる。たとえばシステムは、システムのセキュリティアクセスのレベルに基づき、かつ/または車両状態に基づき、特定のサービスへのアクセスを制限することができる。一部の実施形態によれば、たとえば暗号によるハンドシェークおよび/またはセキュリティトークンを利用して、システムとセキュアなコネクションを確立することによって、システムのセキュリティアクセスのレベルを変更することができる。
【0093】
図5を参照すると、この図には、本発明の一部の実施形態による車載ネットワークに対する攻撃を検出する方法のフローチャートが示されている。
【0094】
車載ネットワークに接続された構成要素の悪用を検出する方法は、実行可能コードの実行を基準実行と比較すること、およびその実行が基準実行にマッチしていなければ、車載ネットワークに接続された構成要素が悪用されていると判定することを含む。たとえば、実行可能コード220の実行を、監督された条件のもとで(たとえば実験室内において)記録することができ、たとえば実行された命令の一部を、またはすべてさえも、コールされた関数またはAPIを、さらにはリソースへのありとあらゆるアクセス(たとえばファイルのオープン、通信ポートへのアクセスなど)を記録することができ、このようにして基準実行または基準となるまたは既知の実行の表現が生成される。基準実行を、永続的な記憶デバイスに(たとえばセキュリティレイヤ210と作動的に接続された記憶システム130に)記憶することができる。たとえば記憶システム130に記憶されたファイルは、既述のように実行可能コード220の監督された実行を監視している間に収集および/または生成されたすべてのデータを含むことができ、かくしてファイル内の内容を基準実行とすることができ、または基準実行として使用することができる。ここで述べておくと、ファイルの形態の、またはファイルに記憶された基準実行を、任意のユニットまたはシステムによって供給することができる。たとえば既述の基準実行を、たとえばサーバ260からセキュリティレイヤ210にダウンロードすることができる。たとえば、ECU202向けの新たなソフトウェアまたはファームウェアのバージョンが(たとえばECU202の製造業者によって)提供されたならば、新たなまたは更新された基準実行を既述のようにして生成することができ、新たなまたは更新された基準実行をセキュリティレイヤ210にダウンロードすることができる。
【0095】
後の段階または時点において、実行可能コード220の実行を監視して基準実行と比較することができ、このようにして予期される基準実行からの逸脱を検出することができる。たとえば、ある特定のAPIに対するコールが基準実行に含まれていないならば、その場合には、(たとえば実行可能コード220がハッキングまたは変更されたことから)車両における実行時に実行可能コード220がその特定のAPIをコールしたならば、予期される実行または基準実行からの逸脱を既述のように検出または識別することができる。
【0096】
ブロック510によって示されているように、車載ネットワークに接続された構成要素の悪用または侵入に関連するイベントを、基準実行の挙動からの実行可能コードの実行の逸脱に基づき検出することができる。たとえば、適用可能な任意のエンティティをホワイトリストに挙げる(ホワイトリストに含める)またはブラックリストに挙げる(ホワイトリストから除外する、またはブラックリストに含める)ために使用される、ホワイトリストおよびブラックリストのセットに基づき、逸脱を検出することができる。たとえば、特定のECUまたはそのECUを含む車両が特定の状態にあるときの、その特定のECUのためのホワイトリストに、特定のAPIを含めることができ、特定のリソース、たとえば記憶装置、ポートまたはソフトウェアアプリケーションまたはユーティリティを、ブラックリストまたはホワイトリストに挙げることができる、といった具合である。既述のようなブラックリストおよびホワイトリストへの列挙を、以下のうちの1つまたは複数に適用することができる。すなわち、プロセスツリー、プロセスに関連するメタデータ、リソースへのアクセス、実行可能コードにおける関数および命令に対するコール。たとえば、プロセスに関連するメタデータにおける特定のパラメータ値、たとえばパーミッション、親子関係、バイトサイズおよびその他同類のものを、ブラックリストに挙げることができ、たとえばカーネルモードでの実行をブラックリストに挙げることができる。特定のソフトウェアの関数、ユーティリティまたはルーチンへのアクセス、それらのコール、呼び出しまたは実行、あるいは特定の通信ポートまたは外部ポート(リソース)へのアクセスを、ブラックリストに挙げることができ、したがってそのポートへのアクセスまたはその関数のコールは、車載ネットワークに接続された構成要素の悪用に関連するイベントの可能性があり、これは基準実行の挙動からの実行可能コードの実行の逸脱として検出され識別される。かくして本発明の実施形態によれば、特にECUなどの組み込みシステムにおいて、コードの実行の完全な制御を提供することによって、サイバーセキュリティの領域が改善される。
【0097】
ブロック515によって示されているように、逸脱が検出されたならば、1つの実施形態は、そのイベントのログを作成またはそのイベントを記録することができる。イベントのログの作成は、たとえばフラッシュメモリまたは他の記憶装置(たとえば記憶システム130)に、イベントに関連する任意のデータを記憶すること、たとえばプロセスの名前または識別子またはプロセスへの参照、イベントが検出された時点、関連する車両の状態(たとえばセキュリティレイヤ210を含む車両)などを記憶すること、を含むことができる。
【0098】
収集、計算または生成された任意のデータを、たとえば既述のログ、逸脱が検出されたという判定、または検出されたセキュリティ脅威に関連する任意のデータを、データが収集された車両から離れたサーバ(たとえばサーバ260)に供給することができ、サーバ260は、車両の隊における複数のレイヤ210から受信されたデータに基づき、その隊に関連する現在のデータを生成することができる。したがって本発明の実施形態によれば、隊からのデータを統合し、セキュリティに関して隊の状態をユーザが見えるようにする手法でデータを呈示することによって、隊の管理および隊のセキュリティの領域が改善される。
【0099】
基準実行の挙動からの実行可能コードの実行の逸脱を、ルールエンジンを用いて検出することができ、このルールエンジンをセキュリティレイヤ210が含むことができ、または実行することができ、このルールエンジンは、一連のイベントまたはイベントシーケンスを脅威に関連づけることができる。たとえば、セキュリティ脅威として識別することができる一連のイベントまたはイベントシーケンスを、特定のシーケンスまたは順序での関数またはAPIのセットのコールとすることができ、あるいは特定のシーケンスまたは順序でのリソースのセット(たとえば通信ポート、記憶デバイス、サウンドシステムなど)へのアクセスとすることができる。特定の一連のイベントを、既述のようにブラックリストおよび/またはホワイトリストに挙げることができる。
【0100】
既述のように本発明の実施形態は、ソフトウェアセンサたとえばソフトウェアセンサ240を含むことができる。ソフトウェアセンサは、たとえばECU内のコントローラによって、まさに実行されようとしているシステムコールまたは命令を妨げることができる。たとえばソフトウェアセンサは、ECU202内のコントローラのシステムコールを妨げることができ、妨げられたコールまたは命令に関連するデータの分析に基づき、セキュリティ脅威を検出することができる。ソフトウェアセンサが既述のように脅威を検出したならば、ソフトウェアセンサは、たとえば既述のようにイベントのログを作成することによって、その脅威のログを作成することができる。一般に、セキュリティレイヤ210によって提供される任意の機能、オペレーションまたはロジックを、ソフトウェアセンサによって供給または実行することができる。たとえばソフトウェアセンサは、たとえば既述のようにブラックリスト、ヒューリスティクスまたはルールを用いて、脅威または異常が検出または識別されたとそのソフトウェアセンサが判定したならば、コールまたは命令をブロックまたは阻止することができる。
【0101】
明示的に述べられていないかぎり、本明細書で説明する方法の実施形態は、特定の時間順序または時系列シーケンスに束縛されるものではない。これに加え、既述の方法の要素の一部を省くことができるし、または1つの方法のオペレーションシーケンスの間にそれらを反復させることができる。
【0102】
これまで様々な実施形態を呈示してきた。それらの実施形態各々は、当然ながら、呈示された他の実施形態の特徴を含むことができ、具体的には説明しなかった実施形態が、本明細書で説明した様々な特徴を含むことができる。
図1
図2
図3
図4
図5