(58)【調査した分野】(Int.Cl.,DB名)
前記モジュールが、前記OSの少なくとも1つの位置にフックを有し、前記OSの動作に応じて前記モジュールに情報を提供して、前記モジュールが前記OSを監視する処理を行うことを特徴とし、前記少なくとも1つの位置がfork()、exec()、spawn()、またはopen()のうち少なくとも1つまたは1つ以上のそれらの組合せを包含する、請求項1に記載の車載通信ネットワーク。
前記OSが、QNXオペレーティングシステム、Linux(登録商標)オペレーティングシステム、またはAndroidオペレーティングシステムから成る群から選択される、請求項1〜6のいずれか1項に記載の車載通信ネットワーク。
前記適合ルールおよび応答アクションが枝を有する決定木の中に構成され、かつ前記モジュールが前記異常なメッセージの特徴に応じて前記決定木を横断するように構成され、かつ前記異常なメッセージに応えて前記モジュールによってとられる前記アクションを終了する前記決定木の枝に沿ってナビゲートするように構成される、請求項9に記載の車載通信ネットワーク。
【発明を実施するための形態】
【0019】
図1Aは、本開示の一実施形態に従って拡大された地理的領域32で動作する車両30にサイバーセキュリティサービスを提供するGASS20を概略で示す。拡大された地理的領域は、送電網、移動通信ネットワークもしくは複数の係るネットワーク、車両の所与の集団が動作する大都市、州、および/または領域等のインフラ施設によってカバーされる領域等の国の領域を含んでよい。任意選択で、拡大された地理的領域は世界的規模であり、複数の州を含む1つまたは複数の大陸の部分に及んでいる。
図1Aでは、例として、米国本土で車両30の車載通信ネットワークにサイバーセキュリティを提供するために動作しているGASS20が示されている。
【0020】
GASS20は、加入者車両30のそれぞれの車載通信ネットワークを監視し、保護するために、クラウドベースのサイバーハブ22および加入者車両30にインストールされたウォッチマン40を任意選択で含む。本開示の一実施形態に従って複数の任意選択で2つのGASSウォッチマン40が接続される車載ネットワーク60を含む加入者車両30を含む加入者車両30の拡大されたイメージが、概略で差し込み図に示されている。ウォッチマン40は、ウォッチマン40が接続されるネットワーク60の部分での通信トラフィックを監視し、サイバーアタックに対するネットワークの完全性を提供し、維持するための手順を実行し、アクションをとる。車載通信ネットワーク60は、任意選択で、車両30の多様な構成要素がノードとして接続される高速CANバス61および中速CANバス71を含むCANネットワークである。ウォッチマン40は、本開示の一実施形態に従って、高速CANバス61に、および中速CANバス71に接続される。データは、CANパケットまたはCANメッセージと呼ばれることがあるCANフレームで、バス61および71に接続されているノード間で送信される。
【0021】
図1Bは、加入者車両30内に含まれてよいネットワークおよび特定の制御システムを保護するウォッチマン40を示す、車載通信ネットワーク60の一部分の概略ブロック図を示す。制御システムおよび/または制御システムのそれぞれの構成要素は、高速バスバーおよび中速バスバー61および71に接続される。中速CANバス71は、適切に機能し、相対的に低速のデータ伝送速度でデータを受信および送信できる車体制御システムならびにインフォテインメントシステムの構成要素等のノード間での通信をサポートするために、最高毎秒125キロビット(Kbps)のデータ通信速度で動作するB級CANバスであってよい。例として、中速CANバス71は、それぞれヘッドライトシステム、計器ディスプレイシステム、環境制御システム、ドア制御システム、およびテールランプシステム72、73、74、75、および76であるノードに接続されて概略で示される。ブルーツース通信インタフェースおよびWifi通信インタフェース、ならびに携帯電話ネットワークに通信インタフェースを提供し、手を使わないで操作できる電話をサポートするテレマティックスシステム78を含むインフォテインメントシステム79は、以下に説明されるウォッチマンを介して中速CANバス71に接続される。GPS受信機77は、任意選択でテレマティックスシステム78とは別個であり、中速CANバス71に接続される。高速CANバス61は、ノード間のデータの相対的に高速の伝送が適切に動作することを必要とすることがある多様な制御システムのセンサおよびECU等のノード間での通信をサポートするために、最高毎秒1メガビットのデータ通信速度で動作するC級CANバスであってよい。高速CANバス61は、それぞれエンジンシステム、サスペンションシステム、トラクションシステム、ギヤボックスシステム、およびブレーキ制御システム62、63、64、65、および66に接続されて概略で示されている。高速CANバス61は、ボディ制御システムゲートウェイ80によって中速CANバス71に接続される。
【0022】
車載ネットワーク60は、ラベル40A、40B、40C、および40Dによって個別化された複数の、任意選択で4つのウォッチマン40の構成によって保護される。ネットワーク60に接続されたウォッチマンは、数字参照40によっておよび特定のウォッチマンと関連付けられた特長に関して個別化されたラベル40A、40B、40Cおよび40Dによって総称的に参照される。ウォッチマン40Aは、任意選択で、高速バス61と、高速バスを中速バス71に接続するゲートウェイ80との間で接続されるツー通信ポートモジュールである。ウォッチマン40Bは、任意選択で、高速バス61に接続された単一通信ポートモジュールである。インフォテインメントシステム79およびテレマティックスシステム78はウォッチマン40Cを介して中速バス71に接続され、GPS受信機77はウォッチマン40Dを介して中速バス71に任意選択で接続される。ウォッチマン40Aは本開示の一実施形態に従って動作して、高速バス61とゲートウェイ80との間で送信されるCANメッセージを監視し、CANバスとゲートウェイとの間の通信を保護するために異常な通信に応答する。ウォッチマン40Bは高速CANバス61に接続されて、高速バス上での通信を傍受し、バス上で伝搬される通信を保護する。ウォッチマン40Cおよび40Dは、車載通信システム60のブルーツース通信インタフェース、WiFi通信インタフェース、および携帯電話通信インタフェースを介して車載通信システム60に進入しようと試みるサイバーアタックから中速CANバス71を保護するために動作する。本開示の一実施形態に係るウォッチマンは
図1Aに示される通信ポートの数に制限されず、
図1Aに示される数とは異なる通信ポートの数を有してよい。
【0023】
図1Aおよび
図1Bでは、ウォッチマン40は、ハードウェア構成要素であるように見える別々の構成要素として概略で示されているが、本開示の一実施形態に係るウォッチマンは車載通信ネットワーク60のノードに含まれるソフトウェア構成要素によって定義される「視覚化されたウォッチマン」であってよい。たとえば、ゲートウェイ80は、コンピュータ実行可能命令およびデータ、または
図1Bのゲートウェイとは別個に示されるウォッチマン40Aによって提供されてよい本開示の一実施形態に係るウォッチマン機能性を提供するソフトウェアおよびハードウェアの組合せを含んでよい。あるいは、エンジン制御システム62のECM(不図示)は、ウォッチマン40Aまたはウォッチマン40Bによって提供されてよい、本開示の一実施形態に係るウォッチマン機能性を提供するコンピュータ実行可能命令およびデータを含んでよい。また、ウォッチマンは、CANトランシーバとCANコントローラとの間の車載ネットワーク60の、テレマティックスユニット78等のノードのハードウェアに統合されてもよい。
【0024】
本開示の実施形態に係るウォッチマン40A、40B、40C、または40D等のウォッチマン40は、動作モードのライブラリから選択可能な1つまたは複数のモードで動作してよい。ライブラリの各動作モードは、ウォッチマンが監視する車載ネットワーク60の一部分で送信されるメッセージを処理する、および/またはメッセージに応答するためにウォッチマンが実行してよい任意選択で異なる動作アルゴリズムまたは動作手順を呼び出してよい。動作モードのライブラリは、パッシブモード、記録モード、通信モード、標準保護モード(SPM)、検出モード、プログラミングモード、および/または無効モードの内の少なくとも1つ、または複数の任意の組合せを含む。
【0025】
ウォッチマン40は、ウォッチマンが有してよいディップスイッチを手動で操作することによって、および/またはウォッチマンに特定の動作モードをとるように指示する制御メッセージを有線通信チャネルまたは無線通信チャネルを介してウォッチマンに送信することによって所与の動作モードに設定されてよい。ウォッチマン40は、ウォッチマンが第1の動作モードでの動作中に実行する命令が、第2の動作モードで命令を実行するために第2の動作モードにウォッチマンを切り替えるときに、異なる動作モードの間で自主的に切り替わってよい。異なる動作モードは同じまたは類似した機能性を提供または共用してもよく、ウォッチマンは複数の動作モードで同時に動作していてよい。
【0026】
パッシブモードでは、ウォッチマン40は、ウォッチマンが受信してよい車載ネットワーク60でのメッセージの伝搬に干渉せず、ウォッチマンは車載ネットワーク上の通信にとって実質的にトランスペアレントであってよい。ウォッチマン40は、例として、有利なことに、たとえば新しい構成要素および/またはセンサの車両30に対する設置、ならびにノードとしての構成要素および/またはセンサの車載通信ネットワーク60に対する接続の間にパッシブモードに設定されてよい。また、ウォッチマンは、有利なことに、たとえば診断コンソール(不図示)を、車両30の車載診断(OBD)ポート(不図示)に接続して、診断コンソールを車載通信ネットワーク60に接続し、ネットワークに接続されたシステムに関する情報について車両の自己診断機能および報告機能に照会するときにパッシブに設定されてもよい。また、ウォッチマンは、フェールセーフ機構として、ウォッチマンが重大な内部エラーに遭遇したときに自動的に自身をパッシブモードに設定するように構成されてもよい。
【0027】
車両30内のウォッチマン40をパッシブモードに設定すると、ウォッチマンによる保護活動が一時停止される。したがって、ウォッチマンに制御メッセージを送信することによってウォッチマン40をパッシブに設定しようと試みることは、制御メッセージが受信された時点で、制御メッセージが権限を付与されたソースから生じたとして認証され、形式について、ならびに車両30および車両30の車載通信ネットワーク60の状態が適切であるのかについて入念に調べられた後でのみ、本開示の一実施形態に従って許されてよい。たとえば、ウォッチマン40をパッシブに設定しようとする試みは、車両が動いている場合、または試みがGASS20、GASSの権限を付与されたユーザ、または車両の運転者以外のソースから発する場合、拒絶されることがある。ウォッチマン40によって受信されるメッセージを認証し、入念に調べることは、以下に説明される。
【0028】
記録モードでは、ウォッチマン40は、加入者車両30の車載通信ネットワーク60の通信を監視して、ウォッチマン40が受信するメッセージから、メッセージを特徴付け、メッセージの車両コンテキストを決定し、および/または車両の健康の測定基準を決定するために使用されてよいデータを蓄積する。CANメッセージは、たとえば、CANメッセージの11ビットまたは29ビット拡張アービトレーションID、CANメッセージが概して4タイプの従来のCANメッセージの内のどれであるのか、CANメッセージそれぞれの送信の頻度、CANメッセージが含むデータの量およびタイプおよび内容、CANメッセージが送信される時点を記録するタイムスタンプ、ならびにタイムスタンプの時点での車両コンテキストによって特徴付けられてよい。CANメッセージアービトレーションIDは、以後CANメッセージIDまたはメッセージIDと呼ばれることがある。
【0029】
加入者車両30の車両コンテキストは、車両の状態および/または車両の車載通信ネットワーク60の状態を指す。車両30の状態は、車両内の1台または複数のセンサが、たとえばそれが送信するCANメッセージのデータ部分の中で提供する少なくとも1つのパラメータのそれぞれの値に応じて定義されてよい。少なくとも1つのパラメータは、たとえば、車両速度、加速度、先行する車両または後続の車両に対する終速度、エンジン毎分回転数、エンジン温度、オイル温度、油圧、ホイールトラクション、道路状況、任意選択でGPS信号によって提供される車両位置、および/または気象条件の内の1つまたは複数の任意の組合せを含んでよい。車載ネットワーク60の状態は、例として、ボーレート、ネットワーク上でどのタイプのメッセージが送信中であるのか、および/または車載通信ネットワーク60のどのノードがネットワーク上でアクティブに通信中であるのかに応じて定義されてよい。また、車載通信ネットワークの状態は、CANメッセージが一部である通信セッションの状態またはコンテンツを含んでもよい。車載ネットワーク60の状態は、車載ネットワーク60がサイバーアタックによって危険にさらされることがあるかどうか、および/またはどの程度危険にさらされることがあるのかを示すサイバー状態インジケータ(CSI)とも呼ばれる、導出パラメータの値に応じて定義されてよい。CSIは、ウォッチマンが監視する車載ネットワーク上で送信されるメッセージに応えてウォッチマン40によって、および/またはサイバーハブが、ウォッチマンから、および/または他の車載ネットワークを監視する1つのウォッチマン40または複数のウォッチマン40から受信するデータに応じてサイバーハブ22によって決定されてよい。
【0030】
ウォッチマン40は、車両コンテキストを定義し、表すコンテキスト特長ベクトルを生成し、ウォッチマンに含まれるメモリに記憶してよい。コンテキスト特長ベクトルは、タイムスタンプ、車両内の1台または複数のセンサによって提供される少なくとも1つのパラメータの値、および/または車載ネットワーク60の状態を説明するパラメータの値を含む構成要素を含んでよい。また、コンテキスト特長ベクトルは、車両の種類および年等の車両30のIDデータ、オドメータ表示数値、ならびに任意選択で特長ベクトルタイムスタンプの時点でのCSI値を含んでもよい。本開示の一実施形態に係るコンテキスト特長ベクトルはヒストグラムの値を含んでよい。たとえば、コンテキスト特長ベクトルは、複数の異なるCANメッセージID、またはCANメッセージの異なるサブセットもしくはタイプのそれぞれに、車載ネットワーク60上での送信の頻度または相対頻度を提供する、メッセージ頻度ヒストグラムとも呼ばれるヒストグラムの値である成分を含んでよい。任意選択で、コンテキスト特長ベクトルは、メッセージのサブセットごとに1つ、いくつかのヒストグラムを含んでよい。メッセージサブセットは、車載ネットワーク60に接続された異なるノードの選択対象にまたは選択対象から送信されるメッセージを含んでよい。選択されたノードは、たとえば、エンジン制御システム、サスペンション制御システム、ギヤボックス制御システム、およびドア制御システム62、63、65、および75を含んでよい。メッセージサブセット種類は、エンジン空気または燃料取込み量を増加するための命令、または近接センサからの信号に応えて近接警報を生成するための命令等の特定の命令または特定の命令の部分を有するメッセージを含む。任意選択で、異なるメッセージIDの付いた一連のCANメッセージを送信することでウォッチマンにウォッチマンの利用可能なすべてのメモリを使い果たさせようとすることがあるアタックからウォッチマンを保護するために、ヒストグラムによって使用されるメモリは制限され、事前に割り当てられることがある。任意選択で、ウォッチマンがヒストグラムのための利用可能なメモリを使い果たした場合、ウォッチマンは旧いヒストグラムデータを破棄することによってメモリを解放してよい。
【0031】
車両30の健康の測定基準は、ウォッチマンが受信する、車両の異なる動作状態の下で車両のセンサ、アクチュエータ、および/またはECUによって車載ネットワーク60上で送信されるCANメッセージ中のデータに応じて特徴付けられてよい、または決定されてよい。たとえば、車両30の車両エンジン制御システムの構成要素によって送信されるメッセージの中で提供される、速度の関数としてのエンジン温度および燃焼消費量、またはエンジン速度の関数としてのエンジン排気中の酸素含有量は、エンジンの健康の測定基準を提供するために使用されてよい。車両速度の関数として車体部品の振動の周波数または振幅を表すデータを提供する振動モニタによって提供されるメッセージは、車両健康の測定基準を決定するために使用されてよい。
【0032】
ウォッチマン40は、ウォッチマンが監視するメッセージに応じて車両の健康の測定基準を提供する車両30のための健康特長ベクトルを生成し、ウォッチマンメモリに記憶してよい。車両コンテキスト特長ベクトルと同様に、車両健康特長ベクトルは、車両IDデータおよびCSI値を含んでよい。
【0033】
車載通信ネットワーク60上で伝搬されるCANメッセージを特徴付けるデータ、車両コンテキスト特長ベクトルおよび車両健康特長ベクトルに含まれるデータ等の記録モードで動作するときにウォッチマン40によって取得されるデータは、有利なことに、記録モードにおいて以外の動作モードで動作するときにウォッチマンによる使用のために処理されてよい。たとえば、以下に説明されるように、ウォッチマンによって取得されるウォッチマンデータは、たとえばSPMモードでの動作のためにウォッチマンを構成するために、SPMモードで、またはプログラミングモードで動作しているときにウォッチマンが受信するメッセージにどのように応答するのかを決定する際にウォッチマンによって使用されてよい。そして、データがサイバー損傷汚染を受けずに取得されたことを示す、ウォッチマンによってCSI値と関連付けられたデータは、車載通信ネットワーク60のノード間の規範的な通信のための基準を特徴付ける、および/または確立するために処理されてよい。
【0034】
たとえば、メッセージID、およびサイバー損傷を受けていないことを示すCSI値と関連付けられる、車載通信ネットワーク60で伝搬されるCANメッセージを特徴付ける特長を含むデータは、CANメッセージの「ホワイトリスト」を提供するために使用されてよい。一実施形態では、ホワイトリストは、車載通信ネットワーク60がサイバーアタックからの損傷を受けなかった1つまたは複数の期間の間に伝搬されたCANメッセージのメッセージID、および任意選択で、1つまたは複数の期間中のCANメッセージそれぞれの伝搬を特徴付ける「サイバークリーン」データを含む。所与のホワイトリストに記載されたCANメッセージIDのサイバークリーンデータは、所与のCANメッセージの送信の相対頻度、および任意選択で所与のCANメッセージの送信が関連付けられる他のCANメッセージを参照するメッセージのメッセージコンテキストを含んでよい。任意選択で、所与のホワイトリストに記載されたCANメッセージのサイバークリーンデータは、車両コンテキストの関数として提供される。
【0035】
任意選択でメッセージの対応する特長およびコンテキストとともに、メッセージの「ホワイトリスト」も、製造メーカの車両が車両、車両付属品および/またはアドオンを制御するために使用するCANメッセージを定義する車両製造メーカCAN仕様を参照することによって作成されてよい。任意選択で、CANメッセージの車両の製造メーカのカタログは、ウォッチマンによって使用可能なフォーマットのCANメッセージのホワイトリストを提供するために自動的に変換される。製造メーカの車両で使用される車載ネットワークのグラフィックユーザインタフェース(GUI)、ならびにネットワークのモード間で予測される通信トラフィックの量およびタイプは、人が、CANメッセージの製造CANカタログをウォッチマンフォーマットのホワイトリストに手動で変換するのを支援するために使用されてよい。
【0036】
一実施形態では、ホワイトリストに記載されたCANメッセージを受信するウォッチマン40は、車載ネットワーク60でのホワイトリストに記載されるCANメッセージの通常の伝搬と干渉しない。任意選択で、ホワイトリストに記載されるCANメッセージが、それがホワイトリスト中のCANメッセージについて参照されてよい「ホワイトリスト」コンテキストと関連して受信されると、不干渉が予測される。
【0037】
同様に、ウォッチマン40の記録モード中に取得されたデータに応じて、マルウェアである、マルウェアと関連付けられている、および/またはサイバーアタックによって危険にさらされると判断されるCANメッセージ、ならびにCANメッセージのそれぞれの特徴付けの特長およびコンテキストは、「ブラックリスト」に掲載されてよい。一実施形態では、任意選択でCANメッセージの、対応するブラックリストに記載された特長およびコンテキストと関連して、ウォッチマン40によって受信されるブラックリストに記載されたCANメッセージは、ウォッチマンによって車載ネットワーク60上でのさらなる伝搬からブロックされてよい。また、CANメッセージおよびCANメッセージのそれぞれの特長およびコンテキストは、手作業で分類され、任意選択で適切なGUIを使用することによってサイバーセキュリティアナリストによって既知の記録されているサイバーアタックの「ブラックリスト」に加えられてもよい。
【0038】
車載通信ネットワーク60上での通信に関するデータの取得は、記録モードで動作するウォッチマン40について説明されてきたが、ウォッチマン60が、ウォッチマンの他の動作モード中に車載ネットワーク60での通信に関連するデータを取得し、記憶してよいことが留意される。たとえば、ウォッチマンが、CANメッセージが車載ネットワーク60で伝搬されるのを許されるべきかどうかを判断するために定期的にCANメッセージを入念に調べるSPM保護モードで動作しているときにウォッチマンによって取得されるデータは、CANメッセージをホワイトリストに記載するまたはブラックリストに記載するために使用されてよい。ウォッチマン40がSPMモードまたは記録モードでの動作中に遭遇するCANメッセージであって、いままでに分類されたことがない、および/またはおそらくたとえばメッセージが以前遭遇されたことがないもしくはめったに遭遇されないためにホワイトリストまたはブラックリストとして容易に分類され得ないCANメッセージは、グレイリストに記載されてよい。ウォッチマン40は、グレイリストに記載されたCANメッセージに車載通信システム60に対する限られたアクセスだけを許してよい。たとえば、ウォッチマン40は車載ネットワークでの送信の頻度を制限してよい。CANメッセージは、ウォッチマン40の動作モードのいずれかの間にウォッチマン40によってグレイリストに記載されてよい。
【0039】
ウォッチマン40が、本開示の一実施形態に従って、記録モードまたは別の動作モードでの動作中に、CANメッセージ、車両コンテキストおよび/または車両健康に関連するデータに加えて、ウォッチマン自体の性能および動作に関連するデータを分析のために記録してよいこともさらに留意される。たとえば、ウォッチマン性能データは、ウォッチマンがメッセージをマルウェアとして識別する際にどれほど頻繁に誤検出または検出漏れを生成したのかを判断するために使用されてよい。そして、ウォッチマン性能データは、ウォッチマンが、どれほど頻繁に、サイバーアタックのための識別である可能性がある有効ではないデジタルシグナチャの付いたリモートコマンドまたは更新を受信したのかを判断するために使用されてよい。
【0040】
ウォッチマン40によって提供されたデータを処理することは、ウォッチマンがサイバーハブまたは権限を付与されたGASSユーザにデータを伝達した後で、ウォッチマンによって、またはサイバーハブ22によって、またはGASS20の権限を付与されたユーザによって実行されてよい。ウォッチマン40は、記録モードの命令の実行に従って、または通信モードでの動作中にデータをエンティティに伝達してよい。サイバーハブ22は、集団の中の複数の異なるウォッチマンからデータを集めて、集団のサイバーヘルスおよび操作健康に関する高レベルの結論を作成してよい。また、サイバーハブ22は、異なる集団の間でデータを集めてもよい。サイバーハブは、集団のサイバーヘルスに関する高レベルの情報、および高レベルの情報を理解するためにサイバーアナリストによって使用され得る未処理データを表示するユーザインタフェースを提供してよい。たとえば、ユーザインタフェースは、指定された時間枠および/またはヒートマップのフォーマットでの地理的地域で検出された異常および/またはブロックされたサイバーアタックおよび/または車両誤動作の数を表示してよい。任意選択で、サイバーハブは、どのウォッチマンが指定された期間を超えてサイバーハブと通信していないのか、ならびに他のサイバーおよび操作関係の測定値を追跡調査してよく、この情報をサイバーハブのユーザに対し、適切なユーザインタフェースを介して提供してよい。サイバーハブは、任意選択で重大なイベントに関してGASS20の加入者に対してライブ警報を発してよい。
【0041】
通信モードで、ウォッチマン40は、ウォッチマン40が取得した、および/または処理したデータを、適切な有線通信信チャネルおよび/または無線通信チャネルを介してサイバーハブ22におよび/または診断コンソール(不図示)に伝達してよい。ウォッチマン40は、周期的に通信モードに切り替わり、メッセージ頻度ヒストグラム等の、ウォッチマン40が記録モードでのまたは別の動作モードでの動作中に取得するデータまたはデータの一部分をサイバーハブ22にアップロードするように構成されてよい、または制御されてよい。ウォッチマン40は、動作モードに切り替えるためにアクセスされてよく、ウォッチマン40が取得するデータを車両30内のOBDポートに接続された診断コンソールに、またはスマートフォン、ラップトップ、またはタブレット等の移動通信装置に無線チャネルを介して伝達するように要求されてよい。一実施形態では、ウォッチマン40は、通信モードに切り替わり、任意選択で暗号化された要求されたデータを、およびデータを受信する権限を付与されたエンティティによって要求が行われることを認証した後にのみ、提供してよい。一実施形態では、ウォッチマン40は、たとえばサイバーハブ22から情報を要求するために、またはサイバーハブ22に情報を送信するために自主的に通信モードに切り替わってよい。ウォッチマンが要求してよい情報は、ウォッチマンの規則のセットに対する更新に関する情報、および/またはSPMモードでのウォッチマン動作中にCANメッセージに応答するための命令であってよい。
【0042】
利用可能な帯域幅を効率的に活用するために、ウォッチマン40は、ウォッチマンによってサイバーハブに提供された情報の短い説明に基づいて、サイバーハブ22がウォッチマン40に情報をアップロードする許可を与えた後にだけ、サイバーハブ22に、ウォッチマン40が取得した情報を任意選択で送信してよい。たとえば、車両の集団全体が同時にサイバーアタックを受けており、集団内のすべてのウォッチマンがサイバーハブ22にサイバーアタックを報告しようと試みる場合、サイバーハブ22は、攻撃を受けている相対的に少数の車両から関連データを受信することによって帯域幅の飽和を防止することを選んでよい。任意選択で、帯域幅の追加の節約は、サイバーハブ22に送信されるデータを圧縮することによって適用されてよい。たとえば、車両30が取得するメッセージ頻度ヒストグラムは、メッセージIDごとの発生数に1バイトを使用して相対的にコンパクトな形で記憶されてよい。オーバフローを回避するために、メッセージID毎のカウントの値は、たとえば2で周期的に除算され、このようにしてヒストグラムをローカル頻度ヒストグラムにする。任意選択で、ヒストグラムは、MSB(最上位ビット)ビットおよびLSB(最下位ビット)ビットが万一1である場合に、除算がカウント中のMSBビットおよびLSBビットを変更するのを許さないことによってヒストグラムの極値を保ってよい。
【0043】
図1Aおよび
図1Bに概略で示される車載ネットワーク60等の車載通信ネットワークが、それぞれが任意選択でネットワークの異なる部分を監視する複数のウォッチマン40に接続されてよいことが留意される。任意選択で、複数のウォッチマン40に接続された車載通信ネットワークは、ウォッチマン40、他のウォッチマンのための通信ハブまたはルータとして動作する「スーパーウォッチマン」を有してよい。スーパーウォッチマンは、たとえば、ネットワークに接続されている他のウォッチマンによって取得されたデータを集めて、サイバーハブ22またはGASS20の権限を付与されたユーザにデータを伝達してよい。また、スーパーウォッチマンは、サイバーハブからの、または車載通信ネットワークに接続された他のウォッチマン向けの車載通信ネットワークの外部の権限を付与されたエンティティからの通信を受信し、意図されたウォッチマンに通信を送るために動作してもよい。一実施形態では、同じ車載通信ネットワークに接続された複数のウォッチマンは、ネットワーク内のバスを介して通信してよい、または互いと通信するために無線ローカルネットワークとして構成されてよい。
【0044】
SPMモードで、ウォッチマン40は、車載ネットワーク60で伝搬されるメッセージに応えてウォッチマンによってとられてよい応答アクションのメニュー、およびウォッチマンがメニュー中の少なくとも1つの応答アクションとメッセージを適合させるために使用する、以下に適合規則とも呼ばれる規則のセットのメニューを含む動作アルゴリズムを呼び出す。適合規則は、メッセージの受信に応えて、どの応答アクションがメッセージに適合され、ウォッチマン40によってとられるべきかを判断するための基準として、または判断するための基準を確立する上で使用されてよいメッセージの特長を決定するために、メッセージの少なくとも一部分を検査するための命令である。適合規則の特定のセットは、ウォッチマンの設定で定義されてよく、ノードが特定の条件および/またはアクションを表してよい決定ツリーデータ構造の変形としてメモリ内に表されてよい。設定は、ツリーの中のルートに対する適切なアクションとともに、規則のレイアウト、タイプ、および特定のパラメータを決定してよい。
【0045】
ウォッチマン40が受信する所与のメッセージに応えてとられてよいメニュー中の応答アクションは、例として、メッセージを許すこと、メッセージをブロックすること、メッセージを遅延させること、メッセージの頻度を制限すること、ウォッチマンに含まれるメモリにメッセージを記録すること、車両の状態を表す状態特長ベクトルを変更すること、および/またはメッセージに応えて警報を発することを含んでよい。
【0046】
CANメッセージに対する応答を決定するための適合規則は、例として、メッセージIDを決定するためにメッセージのアービトレーション部分を検査する、メッセージが4つの従来のCANメッセージタイプの内の1つであるかどうか、およびメッセージがどのタイプであるのか判断する、メッセージのウォッチマンでのソースポートを決定する、メッセージ中のデータコンテンツが、たとえば例として車両の種類、型、および機械的な状況等、車両を特徴付ける特長に対して有効であるデータであるかどうかを判断する、メッセージの送信頻度を決定する、メッセージの車両コンテキストを決定する、を含んでよい。規則は、AND、OR,NOT等の論理演算子を使用していくつかのサブ条件を組み込む複雑な論理、およびCANメッセージのデータの部分だけを検査するためのマスキング方法を使用してよい。たとえば、ウォッチマン40は、特定のメッセージIDを有するメッセージを見ることと、メッセージがウォッチマンのおそらく別のポートに再び表示されるのを許すこととの間に経過しなければならない最小期間を施行して、サイバーアタッカーがバスで通信トラフィックをリスンし、バスで送信される所与の本物のメッセージを待機し、その後すぐに、所与の本物のメッセージを無効にするために悪意のあるコンテンツの別の類似したIDが付けられたメッセージを送信するのを妨げてよい。
【0047】
図2Aは、本開示の一実施形態に従って、ウォッチマンのSPMモードおよび他の動作モードでのウォッチマンの動作をサポートする、車載通信ネットワーク60に接続された、たとえばウォッチマン40A等のウォッチマンの構成要素を概略で示す。
【0048】
ウォッチマン40Aは、任意選択でプロセッサ41、およびウォッチマンが接続されるCANバスまたはCANノードにメッセージを送信し、ウォッチマンが接続されるCANバスまたはCANノードからメッセージを受信するための、任意選択で2つの通信ポート42および52を含む。たとえば、
図1Bでは、ウォッチマン40Aの通信ポート42は
高速バス61に接続され、ウォッチマンのポート52はCANゲートウェイ80に接続される。ポート42は、CANトランシーバ43およびCANコントローラ44によってプロセッサ41に接続される。トランシーバ43は、ポート42で高速バス61から順次受信されるCANメッセージ中のビットを、CANフォーマットからウォッチマン40Aによって使用されるフォーマットに変換し、CANコントローラ44にビットを転送する。CANコントローラは、ビットが属するCANメッセージ中のすべてのビットが受信され、完全なメッセージがアセンブルされるまでビットを記憶する。CANコントローラ44は、本開示の一実施形態に係る処理のために、アセンブルされたメッセージをプロセッサ41に転送する。また、CANコントローラ44は、CANメッセージ中の、ウォッチマン40Aから高速CANバス61への送信のためにプロセッサ41によって生成されるビットを受信し、ビットが生成されるウォッチマンフォーマットからCANフォーマットへの変換のためにトランシーバ43にビットを転送する。トランシーバ43は、CANフォーマットのビットをポート42を介したCANバス61への送信のために転送する。ポート42と同様に、ポート52は、トランシーバ53およびコントローラ54によってプロセッサ41に接続され、CANゲートウェイ80へ、およびCANゲートウェイ80からCANメッセージを伝送するために動作する。
【0049】
プロセッサ41は、プロセッサ41が適合規則を実行するためのコンピュータ実行可能命令、CANメッセージのホワイトリストおよびブラックリスト、および任意選択でメモリ45に記憶される応答アクションに従って、ならびに任意選択でメッセージがその間に受信される車両コンテキストに従ってポート42またはポート52を介して受信するメッセージを処理する。車両コンテキストは、ウォッチマン4Aが受信し、ウォッチマンがメモリ46にデータとして記憶するコンテキスト特長ベクトルを定義するために任意選択で使用するメッセージに含まれるデータに応じてウォッチマン40Aによって決定されてよい。メモリ45および/またはメモリ46は、ウォッチマン40によって使用される一次メモリおよび/または二次メモリを含んでよく、メモリ45および46は別々のユニットとして概略で示されているのに対し、メモリは同じユニットに含まれてもよい。
【0050】
ウォッチマン40Aは、任意選択で、ウォッチマンが受信するメッセージを認証するための認証モジュール47、ならびに無線通信チャネルを介してサイバーハブ22、権限を付与されたユーザ、加入者車両の運転者、および他の外部エンティティと通信するための無線通信インタフェース48を含む。無線インタフェース48は、Wifiチャネルおよび/またはブルーツースチャネルおよび/または3Gネットワーク等の携帯電話ネットワークに対する接続性を提供してよい。係る無線機能がない場合、本開示の一実施形態に係るウォッチマンは、クラウドへの既存の車両接続上でサイバーハブ22と通信してよい。これは、クラウドに対する接続性を有することがある車載ネットワーク60内のECUに、CANバス71または61等のCANバスを介してトンネルすることによって実行されてよい。トンネルは、統一診断システム規格(the Unified Diagnostic System Standard)に従ってPIDを読み書きすることによって、またはCANバスによってサポートされる任意の他のプロトコルを使用することによって実装されてよい。
【0051】
認証モジュール47は、ウォッチマンが多様な認証アルゴリズムのいずれかを使用して受信するメッセージを認証するためのコンピュータ実行可能命令を含んでよい。認証モジュール47によって使用されてよい認証アルゴリズムは、たとえば、非対称鍵暗号化アルゴリズムのいずれか、非対称鍵暗号化アルゴリズムおよび対称鍵暗号化アルゴリズムの組合せを含んでよく、TLS(トランスポートレイヤーセキュリティ)、およびPGP(プリティーグッドプライバシー)等の認証アルゴリズムを含んでよい。任意選択で、認証モジュール47は受信されたメッセージを認証するためのハードウェアセキュリティモジュール(HSM)である、または受信されたメッセージを認証するためのハードウェアセキュリティモジュール(HSM)を含む。一実施形態では、認証は、たとえば認証データにタイムスタンプを含むことによって、認証が「リプライアタック」の影響を受けることがないように実装されてよい。ウォッチマン40Aの中に安全なタイムスタンプ情報が存在しない場合、ウォッチマンは、ウォッチマンが含むクロックをランダムに初期化し、サイバーハブに「疑似タイムスタンプ」を安全に送信してよく、サイバーハブ22は同様にサイバーハブとの追加の通信で疑似タイムスタンプを使用してよい。
【0052】
図2Bは、本開示の一実施形態に従って、ウォッチマンがSPMモードでの動作中に受信する車載通信ネットワーク60上で伝搬されるCANメッセージに対するウォッチマン40Aによる応答の例のシナリオの流れ
図100を示す。
【0053】
ブロック101で、ウォッチマン40AはCANメッセージを受信し、ブロック103で、メッセージがゲートウェイ80によって送信され、ポート52(
図1B)を介してプロセッサ41によって受信されたと任意選択で判断する。ブロック105で、プロセッサ41(
図2A)はメモリ45にアクセスして、メモリ、ならびにポート45を介して受信されたメッセージに関連するホワイトCANメッセージリストおよびブラックCANメッセージリストの中の規則に応じて受信されたメッセージを処理する。決定ブロック107で、プロセッサはメッセージの11CANメッセージIDビットまたは29CANメッセージIDビットを入念に調べて、メッセージIDが有効であり、高速バス61に対する進入を許されてよいかどうかを判断する。
【0054】
決定ブロック107で、メッセージIDがホワイトリストCANメッセージのメッセージIDではないとプロセッサ41が判断する場合、プロセッサはブロック120に進み、IDがブラックリストメッセージIDであるかどうかを判断する。メッセージがブラックリストメッセージである場合、プロセッサは任意選択でブロック122に進み、高速CAバス61への進入からメッセージをブロックする。任意選択で、ブロック124で、プロセッサ41は、将来の考えられるサイバーハブ22へのアップロード、参照、ならびに/またはウォッチマンおよび/もしくはサイバーハブによる分析のために、メッセージに関連するデータをメモリ46に記録する。ブロック126で、プロセッサ41は、メッセージが、たとえばサイバーアタックを示す、反復される同一のメッセージのパターンまたは保証されていないメッセージのパターン等のメッセージのパターンの一部であるように見えるかどうかに関する決定を下す。
【0055】
メッセージがサイバーアタックを示していないとプロセッサ41が判断する場合、プロセッサ41はブロック138に進んで、頻度ヒストグラムにIDを記録することによってメッセージIDを集める、および/またはサイバーハブ22への将来のアップロードのためにメッセージ全体を記憶する。他方、メッセージがサイバーアタックを示すとプロセッサ41が判断する場合、プロセッサはブロック136に進み、メッセージの受信をサイバー22に報告するようにウォッチマン40Aを制御し、その後ブロック119に進み、ブロック101に戻って次のCANメッセージを受信し、処理する。
【0056】
決定ブロック120で、ポート52で受信されたメッセージがブラックリストメッセージではないとプロセッサ41が判断する場合、プロセッサは任意選択でブロック128に進み、メッセージがグレイリストメッセージである、またはグレイリストメッセージとして分類されてよいと判断する。ブロック130で、プロセッサは受信されたメッセージのメッセージIDと同じメッセージIDを有する多くのメッセージが高速バス61に転送されるのを制限する、またはメッセージが高速バスに転送される頻度を制限することを決定してよい。任意選択で、ブロック132で、プロセッサ41は、サイバーハブ22への将来の考えられるアップロード、参照、ならびに/またはウォッチマンおよび/もしくはサイバーハブによる分析のためにメッセージに関連するデータをメモリ46に記録する。そして、決定ブロック134で、プロセッサ41は、メッセージがサイバーアタックを示しているか、それともサイバーアタックを示していないかを判断する。メッセージがサイバーアタックを示すように見える場合、プロセッサは任意選択でブロック136に進んで、メッセージの受信をサイバーハブ22に報告し、その後ブロック119に進み、ブロック101に戻って別のCANメッセージを受信する。
【0057】
決定ブロック134で、グレイリストとして分類される、ポート52で受信されたメッセージがサイバーアタックを示すように見えないとプロセッサ41が判断する場合、プロセッサ41は任意選択でブロック138に進んで、頻度ヒストグラムにIDを記録することによってメッセージIDを集める、および/またはサイバーハブ22への将来のアップロードのためにメッセージ全体を記憶する。プロセッサは、次いで任意選択でブロック119に進んで、ブロック101に戻り、別のCANメッセージを受信する。
【0058】
ブロック107で、プロセッサ41がポート52でウォッチマン40Aによって受信されたメッセージがホワイトリストメッセージであると判断する場合、プロセッサは任意選択でブロック109に進み、メッセージのデータ部分に含まれるデータの検査を開始する。
【0059】
例示的なシナリオのために、ブロック111で、プロセッサは、データセクションが任意選択でエンジン制御システム62のECM(不図示)の中でファームウェアを更新するための命令を含むと判断すると仮定される。推定されるように、データセクションが含むメッセージおよび命令は、車載通信ネットワークを車両30の外の通信ネットワークに接続するテレマティックスシステム78(
図1B)に含まれる携帯電話ネットワーク等の通信インタフェースを介して車載ネットワーク60に入った。メッセージが高速バス61およびエンジン制御システム62に進むのを許す前に、プロセッサ41は、ブロック113で、メッセージがウォッチマン40Aでまたはウォッチマン40Cで、適切に暗号によって署名されているとして認証モジュール47によって認証されているかどうかを判断する。メッセージが不適切に署名されている、または署名されていない場合、プロセッサ41はブロック112でメッセージをブロックし、任意選択でブロック124で、メッセージを受信したイベントおよび受信に関するデータをメモリ46に記録し、決定ブロック126に進む。決定ブロック126で、メッセージが、たとえ署名されていない、または不適切に署名されているとしても、サイバー脅威を示さないとプロセッサが判断する場合、プロセッサはブロック101に戻って次のメッセージを受信するようにウォッチマン40Aを制御する。そして、メッセージが脅威であるとプロセッサ41が判断する場合、プロセッサ41は上述されたブロック136から140でアクションを実施するために進む。
【0060】
ブロック113で、メッセージが適切に暗号を使用して署名されているとプロセッサが判断する場合、ブロック115で、プロセッサは、メッセージに含まれるファームウェア更新命令に関連することがあり、ファームウェア更新命令の実行を制約することがある車両コンテキストデータにアクセスする。例として、メッセージ中の更新命令の実行は、車両30が毎時十キロメートル(kmp)未満の速度で移動中であるという要件によって制約されてよく、プロセッサ30は車両30の速度を含むコンテキストデータにアクセスしてよい。一実施形態では、コンテキストデータは、入念に調べられているメッセージがポート52を介してウォッチマン40Aによって受信された時点と実質的に同じ時点で、メモリ46からアクセスされる、またはCANメッセージからリアルタイムで抽出される。コンテキストデータが、車両30が10kmpを超える速度で移動中であることを示す場合、プロセッサ41はブロック117に進みメッセージが高速バス61およびエンジン制御システム62に伝搬するのをブロックする。プロセッサは、任意選択でその後ブロック119およびブロック101に進んで、次のメッセージを受信する。他方、車両コンテキストデータが、車両30の速度が10kmp未満であることを示す場合、プロセッサ41は任意選択でブロック118に進み、ポート52で受信されたメッセージが高速バス61およびエンジン制御システム62に伝搬するのを許し、ファームウェア更新命令を実行する。
【0061】
上記の例示的なシナリオの説明では、ウォッチマン40Aは「サイバー悪意」メッセージが中速バス71から高速バス61に伝搬するのを、メッセージがウォッチマンを通過するのを許さないことによって妨げることで高速バス61を保護する。本開示の一実施形態では、ウォッチマンはウォッチマンが保護する車載ネットワークの一部分に接続されてよく、したがってウォッチマンは一部分およびメッセージを傍受し、任意選択でウォッチマンを通過しないで、一部分に伝搬する、または一部分で伝搬する。
【0062】
たとえば、
図1Bに示されるウォッチマン40Bは、ウォッチマン40Bが高速バス61のトラフィックを監視できるようにであるが、ウォッチマン40Bがサイバーマルウェアメッセージがウォッチマンを通過しないようにすることでサイバーマルウェアメッセージがバス上で伝搬するのをブロックできるようにではなく、高速バス61に接続される。「バスウォッチマン」40B等の傍受するウォッチマンは、メッセージがネットワークに接続されているノードによって受け入れられるまたは使用されることがない範囲までメッセージを壊すためにメッセージを「害する」ことによって、本開示の一実施形態に従って、潜在的に損傷を与えるメッセージが、ウォッチマンが監視する車載ネットワークの一部分で伝搬するのをブロックする。
【0063】
図2Cは、ウォッチマンが本開示の一実施形態に従って接続される車載通信ネットワーク60の高速バス61上で伝搬する潜在的に損傷を与えるCANメッセージに対するウォッチマン40Bによる応答の例のシナリオの流れ
図150を示す。任意選択でただ1つの通信ポートを有することを除き、ウォッチマン40Bはウォッチマン4Aについて
図2に示される内部構成要素に類似した内部構成要素を有すると仮定される。
【0064】
ブロック152で、ウォッチマン40Bは、高速バス61で伝搬するCANメッセージのビットを受信する。決定ブロック154で、ウォッチマンのプロセッサ41はメッセージのIDを入念に調べて、メッセージのIDが、有利なことに高速バス61で伝搬するのを許されるべきではない、潜在的に損傷を与えるメッセージのIDであるかどうかを判断する。たとえば、IDは、ブラックリストに記載されるメッセージのID、適切に署名されていないメッセージのID、または車載通信ネットワーク60によって使用されるCANメッセージの受入れ可能なIDの目録で既知ではないIDである場合がある。メッセージがブロックされるべきであるとウォッチマン40Bが判断する場合、ウォッチマン40Bはブロック171に進んで、メッセージが高速バス61に接続されているノードにとって受入れ不可となるようにメッセージを害し、壊すプロセスを開始する。ブロック173で、ウォッチマン40Bは、サイバーハブ22への将来の考えられるアップロード、参照、ならびに/またはウォッチマンおよび/もしくはサイバーハブによる分析のために、メッセージIDおよびメッセージに関連するデータをメモリ46の中に記録する。
【0065】
ブロック175で、プロセッサ41は、ウォッチマン40Bに、メッセージを置き換え、壊す目的であるビットを高速バス61に送信させる。車載ネットワーク60上でのメッセージ送信を設定するCANプロトコルはドミナントビットおよびレセッシブビットを使用して、CANメッセージを送信する。ドミナントビットは通常「0」ビットであり、レセッシブビットは通常「1」ビットである。ドミナントビットおよびレセッシブビットがCANネットワークの同じバス、車載ネットワーク60の係る高速バス61で同時に送信される場合、ドミナントビットは生き残り、バスに接続されているノードによって受信され、レセッシブビットは生き残らず、ノードによって受信されない。したがって、ブロック175で、ウォッチマン40Bのプロセッサ41は、ウォッチマンに、高速バス61の上に任意選択で「ポイズンビット」と呼ばれるドミナントビットを送信させ、次いで任意選択でブロック177に進んで、高速バス61で伝搬する望ましくないメッセージを壊し、ブロックするほど十分な数のドミナントビットが送信されたかどうかを判断する。ブロック177で、ウォッチマン40Bが十分なポイズンビットを送信していないとプロセッサ41が判断する場合、プロセッサはブロック175に戻り、ウォッチマンに別のドミナントビットを送信させる。ブロック177で、メッセージを破壊するために十分な数のドミナント、ポイズンビットが送信されたとプロセッサが判断するまで、ウォッチマン40Bおよびウォッチマン40Bのプロセッサ41はブロック175から177を周期的に繰り返す。
【0066】
CANプロトコルに従って、同じビットの中の6個の遮られないシーケンスがCANメッセージでエラーを生じさせ、メッセージを受信するノードによってメッセージを破棄させる。したがって、ウォッチマン40Bは、高速ハイビット61で少なくとも6個のドミナントビットを送信して、バス上で伝搬する、プロセッサ41がブロックされるべきであるとブロック154で判断したメッセージを壊し、破壊するために少なくとも5回ブロック177からブロック175に戻ってよい。
【0067】
CANメッセージは、通常、メッセージのデータ部分の8バイトのデータに続くメッセージの終わりに15ビットのサイクリックリダンダンシーチェック(CRC)コードを含む。本開示の一実施形態では、CANメッセージを破壊し、ブロックするために、プロセッサ41はウォッチマン40Bを制御するために動作して、少なくとも1個のドミナントビットを送信して、メッセージのデータビットを置き換えるよりもむしろ、メッセージの少なくとも1個のパッシブCRCビットを置き換えてよい。たとえば、ウォッチマン40Bは、CANメッセージを破壊し、ブロックするために、ドミナント0を送信してCRCのパッシブ1を置き換えてよい。データビットよりむしろCRCビットを置き換えることによって、データビットはブロックされたメッセージの将来の分析のためにメモリ46(
図2A)に記憶されてよい。
【0068】
少なくとも6個のポイズンビットの送信に続き、プロセッサ41は、ブロック134および136に関して
図2Bを参照して上述されたアクションと同様にブロック179から181のアクションを実行するために進んで、ポイズンビットの送信によって破壊されるメッセージがサイバーアタックと関連付けられているかどうかを判断し、メッセージがサイバーアタックと関連付けられていると判断される場合、サイバーハブ22にメッセージを報告する。ブロック179で、メッセージがサイバーアタックに関連付けられていないかどうかをプロセッサ41が判断する場合、プロセッサ41は任意選択でブロック183に進んで、頻度ヒストグラムにIDを記録することによってメッセージIDを集める、および/またはサイバーハブ22への将来のアップロードのためにメッセージ全体を記憶する。プロセッサは、次いで任意選択でブロック166に進んで、ブロック152に戻り、別のCANメッセージを受信する。
【0069】
決定ブロック154で、たとえばメッセージIDがホワイトリストメッセージのメッセージIDであるため、メッセージIDが、受入れ不可である代わりに受入れ可能であるとプロセッサ41が判断する場合、プロセッサ41は任意選択でブロック156に進んで、ウォッチマン40Bによって入念に調べられているメッセージがブロックされるべきであるかどうかを判断することに関連することがある車両30の車両コンテキストデータにアクセスする。任意選択で、コンテキストデータはコンテキスト特長ベクトルの構成要素としてメモリ46に記憶される。
【0070】
その後、ブロック158から162で、プロセッサ41は高速バス61で伝搬しているメッセージのビットの任意選択にビット単位のチェックを実施するために進む。ブロック158で、プロセッサ41は、メッセージIDビットに続くメッセージの第1のビットをチェックして、第1のビットの値を求める。決定ブロック160で、プロセッサは、ブロック154でアクセスされた車両コンテキストデータに任意選択で応えて、値に欠陥があり、値が、メッセージが損傷を受けている、または高速バス61に接続されている制御システム62から66の構成要素等のノードに、およびそれによって車両30に潜在的に損傷を与えていることを示すかどうかを判断する。値が、ビットに欠陥があることを示す場合、プロセッサ41はブロック171に進んで、メッセージを害し、ブロックする。ビットに欠陥がないと判断される場合、プロセッサはブロック162に進む。ブロック162で、プロセッサ41は、前回チェックされたビットが、入念に調べられているメッセージの最後のビットであるかどうかを判断する。ビットが最後のビットではない場合、プロセッサはブロック158に戻って、メッセージの次のビットに欠陥があるかどうかをチェックする。メッセージの最後のビットのチェック、ならびにビットおよびメッセージに欠陥がないことを発見した後に、任意選択でブロック164で、プロセッサ41はメッセージを許し、ブロック164に進んで、ブロック152に戻り、次のメッセージを受信し、入念に調べてよい。
【0071】
以前にチェックされたビットのビット値を含むまたは含まないビット値および関連する車両コンテキストデータが、メッセージに車両30の効果的で安全な動作に有害となるデータが含まれることを高い確率でまたはある程度の確率で示す場合、プロセッサ41は、ビットおよびそれによりそのビットを含むメッセージに欠陥があると判断する場合がある。たとえば、ブロック158でプロセッサ41によって以前チェックされたビットの値を考慮して、高い確率で、ビットを含む高速バス61で伝搬しているメッセージに、ギヤボックス制御65に対するリバースにシフトする命令が含まれていることをビット値が示していると仮定する。車両30の車両コンテキストデータが、車両が50kphで前方に移動中であることを示す場合、メッセージは明らかに場違いであり、特に危険である場合がある。係る状況では、プロセッサ41はビットに欠陥があり、メッセージはブロックされるべきであると判断する。
【0072】
ウォッチマン40の検出動作モードで、ウォッチマンはデータおよび/またはコンピュータ実行可能命令、以下、多様なノードのノードソフトウェア、たとえば車載通信ネットワーク60に接続されるECUを入念に調べるために動作する。検出モードで、ウォッチマン40は、エージェント、以下、本開示の一実施形態に従ってノードに組み込まれてよいウォッチマンエージェントと協調してよい。ウォッチマンエージェントは、ハッシュをウォッチマンに送信するチャレンジ要求でウォッチマンによってチャレンジされるときに、ノードメモリでカレントなノードソフトウェアの少なくとも一部分のハッシュを生成するように構成される。ウォッチマンによってなされるチャレンジ要求は、ウォッチマンがエージェントにチャレンジするたびに変わることがあり、したがって予測されるハッシュはすべてのチャレンジについて同じにはならないだろう。結果的に、ノードは、固定され、既知の同じハッシュでウォッチマンのチャレンジに回答するのに成功するためにサイバーアタッカーによって設定可能でなくなる。本開示の一実施形態では、ウォッチマンはサイバーハブ22に、ハッシュを要求した関連付けられたチャレンジとともにハッシュを送信する。一実施形態では、サイバーハブは、ノードが有さなくてはならないノードソフトウェアのコピーを有し、ノードソフトウェアが、ソフトウェアの正しいバージョンに比して変更されていない、または改ざんされていないという仮定の下に、予想されるハッシュ、以下、ハッシュ基準のコピーを生成できる。サイバーハブは受信したハッシュをハッシュ基準と比較し、受信したハッシュがハッシュ基準と異なる場合、ノードファームウェアが損傷を受けている、または改ざんされていると判断し、任意選択でノードにファームウェアの正しいバージョンを備えさせることを約束する。
【0073】
本開示の一実施形態では、ウォッチマン40はハッシュ基準のコピーを有する、またはハッシュ基準のコピーをサイバーハブ22から受信し、ウォッチマンエージェントから受信されるハッシュをハッシュ基準と比較する。比較が失敗する場合、ウォッチマンはサイバーハブ22に、ファームウェアが損傷を受けており、交換を必要とすることがあると警告する。本開示の一実施形態では、ウォッチマンは車載通信ネットワーク60で周期的にウォッチマンエージェントをポーリングして、エージェントが監視するファームウェアが変更されているのか、それとも改ざんされているのかを判断する。
【0074】
本開示の一実施形態では、ウォッチマン40はCAN車載通信ネットワーク60のオペレーティングシステム内でホストされ、例としてCANドライバ、ネットワークドライバ、およびfork()、exec()、spawn()、およびopen()等のシステムコール等のオペレーティングシステム内の位置に接続されている。ホストされている検出動作モードで、ウォッチマンは、フックによって提供される情報を受信することによってオペレーティングシステムのソフトウェアの性能を監視する。情報は、システムに対する潜在的に損傷を与える活動を実行する前にセキュリティ検証を実行するためにウォッチマンを有効にしてよい。
【0075】
たとえば、ウォッチマンは、例としてテレマティックスユニット78に含まれるQNXオペレーティングシステム、Linux(登録商標)オペレーティングシステム、またはAndroidオペレーティングシステムで接続されてよく、ウォッチマンは、プロセスからの車載ネットワーク60上での通信トラフィックを許す前に、プロセスが既知のプロセスである(証明書を使用することによって、またはメモリ内および/またはディスク上のプロセスの画像のコンテンツの既知のハッシュを使用することによって検証が行われてよい)こと、ディスク上のそのコードコンテンツがメモリ内と同じであること、実行中のスレッドがすべてコードセクションから(で、データセクションからではなく)実行中であること、プロセスの中にロードされているすべての動的ライブラリが既知であり、許されていること、プロセスが車載ネットワーク60にアクセスするのを許されていること、およびプロセスが既知のプロセスまたは許されたプロセスによって初期化されたこと、ならびにこのプロセスが車載ネットワーク60にアクセスするのを許されていることをチェックしてよい。たとえば、車両バスで通信することを希望するシステム内の各プロセスは、デジタル署名された規則のセットをウォッチマンの設定に加えることを要求されることがある。この署名された規則のセットは、ウォッチマンが係るプロセスに暴露してよい指定APIを使用して、または関連するプロセスの実行可能ファイルの隣に、ファイルシステムの署名された規則を含むファイルを格納することによってウォッチマンに渡されてよい。
【0076】
ウォッチマンは不審な行動を検出すると、ウォッチマンが生成するCANメッセージの送信をブロックするもしくは許す、ならびに/または分析および是正措置のためにサイバーハブ22に活動を報告してよい。サイバーハブ22への活動のレポートは、プロセスの疑われるバイナリコード、メモリダンプ、および関連するイベントでのそのスレッドの状態とともに不審な活動を識別するデータを含んでよい。
【0077】
無効動作モードでは、ウォッチマン40は、その適合規則の安全な修正が車両バスでの特定のトラフィックを許すことができるようにしてよい。たとえば、通常の動作手順の下で、ウォッチマン40Aは、テレマティックスユニット78からのCANメッセージが、エンジン制御62のEMUを制御するのを許さなくてよい。しかし、車両オーナーは車両に乗り込んで車で通勤する前に、寒い冬の日に自宅にいながらにして車両エンジンをオンにできることを希望することがある。この活動を有効にするために、ウォッチマン40は無効動作モードに設定し、車両オーナーがオーナーの携帯電話を使用してエンジンをオンにできるように構成されてよい。一実施形態で、ウォッチマンは、携帯電話からエンジンをオンにする許可を備えた無効モードに対する要求を受け取って、要求の信頼性を検証した後にだけ無効モードに切り替わる。任意選択で、ウォッチマンは、ウォッチマンが有効にする無効モードを、無効モードに対してウォッチマンが受け取る要求、および無効モードが要求されている活動のタイプに応じて制約する。
【0078】
たとえば、車両エンジンのリモートターンオンを有効にするために、ウォッチマン40Aは、ウォッチマン40Aがテレマティックスユニット78から、高速バス61へ通過するのを許すCANメッセージの時間および/または数および/またはコンテンツで無効モードを制限してよい。任意選択で、ウォッチマン40Aは、リモートターンオン無効を5分に、およびエンジンをオンにするために概して必要とされるCANメッセージの数に制限する。無効命令を受信すると、ウォッチマンは、ウォッチマンの決定木に規則を追加してよい、または指定された特定のトラフィックに対して絶好のチャンスが開かれていることを示すためにその内部状態を変更してよい。無効モードは、たとえば、車両でのリモート診断セッションまたは車両でのOTAファームウェア更新を可能にするために使用されてよい。ホストされているウォッチマンはアプリケーションに特有の無効命令を受け入れてよい。
【0079】
決定規則の特定のセットは、通常は1つのCANセグメントに対するアクセスだけを必要とし、通常はこのセグメントに対する限られたアクセスだけを必要とする、悪意のある第3者のOBDIIドングル、傷つけられた第3者のOBDIIドングル、または誤動作している第3者のOBDIIドングルから車両を保護するために使用されてよい。たとえば、ウォッチマンは車両のOBDIIポートに、もしくは第3者のOBDDIドングルに埋め込まれることもあれば、車両のOBDIIポートと第3者のドングルとの間に置かれてよいスタンドアロン装置として実装されることもある。係るウォッチマンは、メッセージが車両からドングルに通過することだけを許し、逆に通過することは許さないように構成されてよい。任意選択で、係るウォッチマンはドングルが統一診断システム規格に従ってPIDを読み書きすることだけを許すように構成されてよい。任意選択で、係るウォッチマンは、たとえば高速バス等、ウォッチマンがその通常の動作のために必要とした特定のCANセグメントに第3者のドングルを物理的に制限してよい。
【0080】
したがって、本開示の一実施形態に従って、車載通信ネットワークにセキュリティを提供するためのシステムが提供され、システムは、データ監視処理ハブ、ならびにハブと通信するように構成され、バスおよびバスに接続された少なくとも1つのノードを有する車両の車載ネットワークの一部分に接続されるように構成された少なくとも1つのモジュールを含み、モジュールは、一部分で伝搬する通信トラフィックのメッセージを監視するため、車載ネットワークのサイバーアタックからの損傷への暴露を示す監視されたメッセージの異常なメッセージを識別するため、車載ネットワークの異常なメッセージに影響を及ぼすアクションをとるため、および処理のためにハブにメッセージに応じたデータを送信するために実行可能なソフトウェアを含む。
【0081】
任意選択で、少なくとも1つのモジュールは規則に基づいたモジュールであり、ソフトウェアは、異常なメッセージを識別することに応えてとられてよい応答アクションのメニュー、およびメッセージを受信することに応えてモジュールによってとられるメニューの中の応答アクションを決定するための基準として、または決定するための基準を確立する上で使用されてよい適合規則のセットを含む。任意選択で、適合規則および応答アクションは、少なくとも1つのメモリの内のメモリに記憶される枝を有する決定木内に構成される。任意選択で、モジュールは異常なメッセージの特長に応じて決定木を横断し、異常なメッセージに応えてモジュールによってとられるアクションで終了する決定木の枝に沿ってナビゲートするように構成される。任意選択で、決定木を横断することは、決定木の第1の枝から第2の枝にジャンプすることを含む。任意選択で、ライブラリの応答アクションは、メッセージを許すこと、メッセージをブロックすること、メッセージを遅延させること、メッセージの頻度を制限すること、モジュールに含まれるメモリにメッセージを記録すること、車両の状態を表す状態特長ベクトルの成分を変更すること、および/またはメッセージに応じて警報を発することから選ばれる少なくとも1つの応答アクションまたは複数の応答アクションの任意の組合せを含む。
【0082】
本開示の一実施形態では、適当規則は、メッセージIDを決定する、車載ネットワークの部分でメッセージが送信される送信頻度を決定する、車両の状態を決定する、または車載ネットワークの状態を決定するから選ばれる少なくとも1つの適合規則または複数の適合規則の任意の組合せを含む。
【0083】
本開示の一実施形態では、モジュールは、少なくとも1つのノードがメッセージを廃棄するように、モジュールが監視するメッセージを改変するためにモジュールが接続される車載ネットワークの部分に信号を送信するように構成される。
【0084】
本開示の一実施形態では、モジュールは、モジュールが車載通信ネットワークのノードと通信するために車載ネットワークの外のエンティティを有効にする無効動作モードに切り替わるように構成される。
【0085】
本開示の一実施形態では、システムは車載通信ネットワークのノードに接続され、ノードを監視するように構成された少なくとも1つのエージェントを有する。任意選択で、ノードは、ノードがソフトウェアに応じて動作を実行するソフトウェアを含み、エージェントはソフトウェアの少なくとも一部分のハッシュを生成するように構成される。任意選択で、少なくとも1つのモジュールの内のモジュールは、エージェントが少なくとも1つのモジュールにノードソフトウェアの少なくとも一部分のハッシュを送信することを要求するチャレンジを、少なくとも1つのエージェントの内のエージェントに送信するように構成される。任意選択で、モジュールは、エージェントから受け取られたハッシュがソフトウェアの正しいバージョンに応じて生成されるかどうかを判断する。任意選択で、モジュールは、ハッシュがソフトウェアの正しいバージョンに応じて生成されるかどうかの判断のために、エージェントから受信されるハッシュをハブに送信するように構成される。
【0086】
本開示の一実施形態では、少なくとも1つのモジュールは、少なくとも1つのモジュールが監視する複数のメッセージからデータを蓄積し、記憶するように構成される。任意選択で、モジュールはモジュールが蓄積するデータをハブに送信するように構成される。さらにまたは代わりに、モジュールはデータに応えて少なくとも1つのヒストグラムを生成するように構成される。任意選択で、少なくとも1つのヒストグラムは少なくとも1つのメッセージ頻度ヒストグラムを含む。任意選択で、少なくとも1つのメッセージ頻度ヒストグラムは、メッセージIDのメッセージ頻度ヒストグラム、車載通信ネットワークに接続される特定のノードにまたは特定のノードから送信されるメッセージのメッセージ頻度ヒストグラム、または特定の命令または特定の命令の部分を含むメッセージ頻度の内の少なくとも1つ、または複数の任意の組合せを含む。
【0087】
本開示の一実施形態では、モジュールはハブに少なくとも1つのヒストグラムのヒストグラムを送信するように構成される。
【0088】
本開示の一実施形態では、モジュールは、モジュールが蓄積したデータをモジュールがハブに送信すべきかどうかに関してハブにクエリーを送信するように構成される。
【0089】
本開示の一実施形態では、ハブは、モジュールが蓄積したデータをハブに送るという要求をモジュールに送信するように構成されてよい。
【0090】
本開示の一実施形態では、ハブは、ハブがモジュールから受信するデータに応えて、モジュール内のソフトウェアを変更するために動作する信号を生成し、送信するように構成される。本開示の一実施形態では、少なくとも1つのモジュールが複数のモジュールを含む。任意選択で、複数のモジュールは、無線ローカルネットワークで互いと通信するように接続される。
【0091】
本開示の一実施形態では、モジュールは、車載ネットワークのノードのソフトウェアと統合されてよいソフトウェアモジュールである。
【0092】
本開示の一実施形態では、モジュールは、車載ネットワークの部分に接続されるように構成された物理ポートを含むハードウェアモジュールである。
【0093】
本開示の一実施形態では、少なくとも1つのモジュールが複数のモジュールを含み、複数のモジュールのそれぞれは異なる車両の車載通信システムに接続される。任意選択で、ハブは複数のモジュールのそれぞれからデータを受信し、複数のモジュールの内の少なくとも1つでソフトウェアを変更するために動作する、データに応じた信号を生成し、送信するように構成される。
【0094】
本願の説明および特許請求の範囲では、動詞「含む」、「含む」および「有する」、ならびにその同根語のそれぞれは、動詞の1つまたは複数の目的語が必ずしも動詞の1つまたは複数の主語の構成要素、要素、または部分の完全なリストではないことを示すために使用される。
【0095】
本願での本発明の実施形態の説明は、例として示され、本発明の範囲を制限することを目的としていない。説明されている実施形態は異なる特長を含み、異なる特長のすべてがすべての実施形態で必要とされるわけではない。いくつかの実施形態は特長のいくつか、または特長の考えられる組合せだけしか活用しない。説明される本発明の実施形態の変形形態、および説明されている実施形態に注記される特長の異なる組合せを含む実施形態が、当業者に思い浮かぶだろう。本発明の範囲は特許請求の範囲によってのみ制限される。