(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0008】
以下、
図1〜
図8を参照して、ログ収集システムの実施の形態を説明する。
図1は、ログ収集システムの構成図である。ログ収集システム1は、サーバ10、および車載装置30から構成される。サーバ10と車載装置30は、ネットワーク20を介して接続される。
図1では車載装置30は1台のみ記載されているが、サーバ10は複数の車載装置30と接続される。サーバ10に接続される複数の車載装置30は、それぞれ異なる車両に搭載される。車載装置30は、1または複数のプログラムを実行することで、様々なサービスを車両の乗員に提供可能である。車載装置30において実行されるプログラムは、車載装置30の出荷時に組み込まれる。
【0009】
(サーバの構成)
サーバ10は、CPU100、メモリ110、サーバ通信部120、入力部130、および出力部140を備える。以下では、サーバ10の入力部130を操作する者を「オペレータ」と呼ぶ。
CPU100は、不図示のROMに格納されるプログラムを実行し、サーバ10を動作させるための各種の演算処理を実行する。このプログラムは、メモリ110に記憶されているデータを利用する。CPU100は、ログ解析部101、臨時ログ情報作成部102、ログ優先度変更指示部103、ログ変更指示部104、サービス指示部105を機能的に有する。
【0010】
ログ解析部101は、車載装置30から収集したログを解析し、車載装置30への攻撃の可能性の検出、および車載装置30への攻撃の検出を行う。臨時ログ情報作成部102は、ログ解析部101が車載装置30への攻撃の可能性を検出すると、後述するログテーブルおよび後述するログ優先度テーブルを書き換える。ログ優先度変更指示部103は、臨時ログ情報作成部102が書き換えたログ優先度テーブルの情報を車載装置30へ通知するためのログ優先度テーブル変更要求メッセージを作成し、車載装置30へ送信する。なお、ログ優先度テーブル変更要求メッセージには、書き換え後のログ優先度テーブルの全体の内容が含まれる。ログ変更指示部104は、臨時ログ情報作成部102が書き換えたログテーブルの情報を車載装置30へ通知する。ただし後述するように本実施の形態ではログテーブルの情報はプログラムに内包されるため、ログ変更指示部104は車載装置30へプログラムを送信することによりログテーブルの変更を車載装置30へ通知する。サービス指示部105は、ログ解析部101によりサービスを直ちに停止する必要があると判断された場合に、車載装置30に対してサービス停止の指示を出力する。
【0011】
メモリ110には、データが格納される。メモリ110は、収集ログ格納部111、ログテーブル集格納部112、ログ優先度テーブル集格納部113、および臨時ログテーブル格納部114を機能的に有する。
収集ログ格納部111には、それぞれの車載装置30から収集したログが格納される。
ログテーブル集格納部112には、それぞれの車載装置30がログとして収集する情報を特定するログテーブルが格納される。ログテーブルは車載装置30ごとに異なるので、ログテーブル集格納部112には、サーバ10に接続される車載装置30と同数のログテーブルが格納される。ただしいくつかの車載装置30がログテーブルを共有し、ログテーブル集格納部112に格納されるログテーブルの数が、サーバ10に接続される車載装置30の数よりも少なくてもよい。
【0012】
ログ優先度テーブル集格納部113には、それぞれの車載装置30が蓄積するログの優先度を示すログ優先度テーブルが格納される。ログ優先度テーブルは車載装置30ごとに異なるので、ログ優先度テーブル集格納部113には、サーバ10に接続される車載装置30と同数のログ優先度テーブルが格納される。ただしいくつかの車載装置30がログ優先度テーブルを共有し、ログ優先度テーブル集格納部113に格納されるログ優先度テーブルの数が、サーバ10に接続される車載装置30の数よりも少なくてもよい。
【0013】
臨時ログテーブル格納部114には、ログ解析部101が攻撃発生の恐れを検知した場合に、臨時で収集するログを定めた臨時ログテーブルが格納される。本実施の形態における臨時ログテーブルは1つであり、全ての車載装置30に共通して用いられる。
サーバ通信部120は、ネットワーク20を介して車載装置30と通信を行う。
入力部130は、オペレータからの操作入力を検出し、CPU100に出力する。入力部130は、たとえばマウスやキーボード等により構成される。
出力部140は、CPU100からの指示に従って画面表示や音声出力を行う。出力部140は、たとえばディスプレイやスピーカ等により構成される。
【0014】
(車載装置の構成)
車載装置30は、CPU150、メモリ160、車載通信部170、入力部180、および出力部190を備える。以下では、車載装置30の入力部180を操作する者、および車載装置30が搭載される車両の乗員を「ユーザ」と呼ぶ。
CPU150は、メモリ160に格納される不図示のプログラムを実行し、車載装置30を動作させるための各種の演算処理を実行する。この演算処理には、ユーザに対するサービス提供のためのプログラムの実行も含まれる。CPU150は、ログ収集部151、ログ優先度テーブル管理部152、プログラム更新部153、およびサービス制御部154を機能的に有する。
【0015】
ログ収集部151は、サーバ10に送信するためのログを取得し、ログ格納部163へログを蓄積する。ログ収集部151がログとしてどのような情報を収集するかは、プログラムにハードコーディングされている。ログ優先度テーブル管理部152は、サーバ10の指令に基づきログ優先度テーブル格納部162に格納されているログ優先度テーブルを更新する。プログラム更新部153は、CPU150が実行するプログラムを更新プログラム格納部165に格納されたプログラムに更新する。このプログラムの更新により、ログ収集部151がログとして収集する情報が変更される。サービス制御部154は、ユーザによる入力部180を用いたサービス開始・停止指示、およびサーバ10からのサービス停止指示に基づきサービスの提供を制御する。
【0016】
メモリ160は、ログテーブル格納部161、ログ優先度テーブル格納部162、ログ格納部163、車載装置情報格納部164、更新プログラム格納部165を機能的に有する。ただしログテーブルはメモリ160に格納される前述のプログラムに内包される。すなわち、ログテーブルは形態を変えてメモリ160に格納されているので、
図1ではログテーブル格納部161を破線で示している。
【0017】
ログテーブル格納部161には、ログとして収集する情報の具体的な内容を示す情報であるログテーブルが格納される。換言すると、ログテーブルに格納された情報が、ログとして収集する情報を示す情報である。ログ優先度テーブル格納部162には、蓄積するログの優先度を管理するための情報であるログ優先度テーブルが格納される。ログ格納部163には、ログ収集部151が取得したログが蓄積されて格納される。車載装置情報格納部164には、車載装置を識別する機器IDが格納される。更新プログラム格納部165には、サーバから受信したプログラムが一時的に格納される。
【0018】
車載通信部170は、ネットワーク20を介してサーバ10と通信を行う。車載通信部170は、ログ収集部151が収集したログをサーバ10に送信する際に、車載装置情報格納部164に格納される機器IDと、当該ログを収集したときの時刻および車載装置30の位置情報、すなわち緯度と経度をあわせて送信する。位置情報は、車載装置30が搭載される車両の他の機器から入力されてもよいし、車載装置30が位置情報を取得する構成、たとえばGPS受信機を備えてもよい。
【0019】
入力部180は、ユーザからの操作入力を検出し、CPU100に出力する。入力部180は、たとえばキーボード入力やタッチパネル入力等がある。出力部190は、CPU150からの指示に従って画面表示や音声出力を行う。出力部190は、たとえばディスプレイやスピーカ等により構成される。
【0020】
(サービス)
車載装置30は、ユーザへ各種サービスを提供可能である。車載装置30が提供するサービスは、ユーザの指令により任意に開始および停止が可能である。ただし後述するようにサーバ10から停止指令を受けたサービスは、ユーザの操作指令に関わらず停止される。
【0021】
サービスはたとえば、ユーザが選択した目的地までのルートを案内するナビゲーションサービス、現在地やユーザが入力する目的地の周辺に存在する推奨スポットを紹介する施設紹介サービス、車両の部品交換の時期を報知するメンテナンスサービス、周辺道路の渋滞情報を報知する渋滞情報サービスなどである。これらのサービスを実行するそれぞれのプログラムは、利便性の向上のためにユーザの入力履歴をそれぞれ独立したファイルに保存している。これらのファイルはそれぞれのサービスを実行するプログラムのみからアクセスされることを想定している。
【0022】
(ログ優先度テーブル)
図2は、サーバ10のログ優先度テーブル集格納部113、および車載装置30のログ優先度テーブル格納部162に格納されるログ優先度テーブルの構成を例示する図である。詳しくは後述するが、収集されたログを蓄積するか否かが、このログ優先度テーブルに記載された優先度によって決定される。ログ優先度テーブルに記載されないログは、優先度が最も低いものとして扱われる。なお、
図2では、車載装置30のログ優先度テーブル格納部162に格納される、一つの車載装置30に対するログ優先度テーブルの例を示している。そのため、サーバ10のログ優先度テーブル集格納部113には、ログ収集システム1に含まれる車載装置30の数に応じて、
図2のようなログ優先度テーブルが複数種類格納される。
【0023】
ログ優先度テーブルは、優先度201、ログ種別202、モード203、条件種別204、エリア205、サービス206、および有効時間207の7つのフィールドから構成される。ログ優先度テーブルは、1または複数のレコードから構成される。
【0024】
優先度201のフィールドには、ログを蓄積する優先度を示す情報が数値として格納され、この数値が小さいほど優先度が高いことを示す。優先度が同一のレコードが複数存在してもよい。ログ種別202のフィールドには、ログの種類を示す識別子が格納される。モード203のフィールドには、レコードが永続的に有効であるか、一時的に有効であるかを示す情報が格納され、永続的である場合は「通常」が格納され、一時的である場合は「臨時」が格納される。モード203が「臨時」の場合には、有効時間207にレコードが有効な期間が格納される。換言すると、永続的に有効であるレコードは、有効時間207に格納される期間が「定めなく永続的である」ことを示している。
【0025】
条件種別204のフィールドには、レコードが有効な条件が格納される。特段の条件なく常にレコードが有効な場合は「常時」が格納され、何らかの条件下でレコードが有効な場合はその条件が格納される。たとえば車載装置30が特定のエリア内に在ることを条件にレコードが有効な場合は、条件種別204には「エリア」が格納される。また車載装置30が特定のサービスを実行していることを条件にレコードが有効な場合は、条件種別204は「サービス」が格納される。エリア205のフィールドには、条件種別204に「エリア」が格納されている場合のエリアに関する条件が格納される。サービス206のフィールドには、条件種別204に「サービス」が格納されている場合のサービスに関する条件が格納される。
【0026】
有効時間207のフィールドには、モード203が「臨時」であるレコードが有効な期間が格納される。たとえば
図2の4つ目のレコードは、車載装置30が緯度X11〜X12の範囲、かつ経度がY11〜Y12の範囲にあり、さらに2016年1月1日の10時0分から10時30分までの30分間だけ有効であることを示している。
なお、サーバ10のログ優先度テーブル集格納部113や車載装置30のログ優先度テーブル格納部162に格納される情報は、
図2に示したようなテーブル形式以外の情報であってもよい。すなわち、ログ格納部163に蓄積されるログの優先度を適切に表す情報であれば、どのような形式の情報をログ優先度テーブル集格納部113やログ優先度テーブル格納部162に格納してもよい。
【0027】
(ログテーブル)
図3は、サーバ10のログテーブル集格納部112および車載装置30のログテーブル格納部161に格納されるログテーブルの構成を例示する図である。ログテーブルは、ログ収集部151がログとして収集する情報を特定するテーブルである。なお、
図3では、車載装置30のログテーブル格納部161に格納される、一つの車載装置30に対するログテーブルの例を示している。そのため、サーバ10のログテーブル集格納部112には、ログ収集システム1に含まれる車載装置30の数に応じて、
図3のようなログテーブルが複数種類格納される。ログテーブルは、1または複数のレコードから構成され、ログ種別301とログ内容302の2つのフィールドから構成される。ログ種別301のフィールドには、ログの種類を示す識別子、すなわちログ優先度テーブルのログ種別202と同一の情報が格納される。ログ内容302のフィールドには、ログとして取得する情報の具体的な内容が格納される。
なお、サーバ10のログテーブル集格納部112や車載装置30のログテーブル格納部161に格納される情報は、
図3に示したようなテーブル形式以外の情報であってもよい。すなわち、ログ収集部151が収集するログの内容を適切に表す情報であれば、どのような形式の情報をログテーブル集格納部112やログテーブル格納部161に格納してもよい。
【0028】
(攻撃の検出)
ネットワークに接続される車載装置30は、外部から様々な攻撃を受けることが想定される。また特定のサービスに密接に関連する攻撃を受けることも想定される。
特定のサービスに限定しない攻撃として、たとえばDoS(Denial of Service)攻撃が考えられる。DoS攻撃とは、大量のデータを送り付けることで通信リソースおよび計算リソースを浪費させ、車載装置30の正常な動作を妨げるものである。この攻撃は、車載装置30の受信データ量を表すパケット受信量や、処理負荷の大きさを表すCPU使用率を記録することにより検出する。そのため、DoS攻撃が発生した可能性があると判断されると、パケット受信量とCPU使用率を優先的に記録されることが、後述する臨時ログテーブルに規定される。
【0029】
特定のサービスに関連する攻撃として、たとえばサービスで使用されるファイルへの不正なアクセスが考えられる。たとえば、あるサービスが使用する特定のファイル(以下、ファイルA)について、特定のプログラムにしかファイルAを読み書きする権限を与えていない次のケースが想定される。すなわち、そのファイルAに格納された情報を欲する者が車載装置30にアクセスしてファイルAの情報を不正に取得するケースが想定される。この攻撃は、ファイルAへアクセス記録、たとえばアクセスしたプログラムの名称やアクセス時刻を記録することにより検出する。そのため、不正アクセスが発生した可能性があると判断されると、ファイルAへのアクセスが発生した日時やアクセスしたプログラムなどが優先的に記録されることが、後述する臨時ログテーブルに規定される。
【0030】
(臨時ログテーブル)
図4は、サーバ10の臨時ログテーブル格納部114に格納される臨時ログテーブルの構成を例示する図である。臨時ログテーブルは、1または複数のレコードから構成される。臨時ログテーブルは、攻撃種別401、臨時ログ対象の車載装置402、ログ種別403、収集条件404、エリア405、サービス406、有効期間407のフィールドから構成される。以下では、この臨時ログテーブルに基づき収集されるログを「臨時ログ」と呼ぶ。
【0031】
攻撃種別401のフィールドには、サーバ10のログ解析部101で攻撃発生の可能性があると判定された攻撃の種別が格納される。
臨時ログ対象収集の車載装置402のフィールドには、臨時でログを収集する対象となる車載装置30の条件が格納される。換言すると、ログ優先度テーブルが更新される対象となる車載装置30の条件である。この条件とはたとえば地理的条件や車載装置30の構成に関する条件である。地理的条件とはたとえば、攻撃の可能性があると判断されたログが収集された地点から所定距離以内に存在することである。車載装置30の構成に関する条件とはたとえば、攻撃の可能性があると判断されたログを収集した車載装置30と機種が一致することである。
【0032】
ログ種別403のフィールドには、臨時で収集するログの識別子が格納される。条件種別404のフィールドには、臨時ログを収集する条件が格納される。エリア405のフィールドには、条件種別404がエリアを示す場合の、エリアの条件が格納される。サービス406のフィールドには、条件種別404がサービスを示す場合の、実行しているサービスの条件が格納される。有効期間407のフィールドには臨時ログ収集の有効期間が格納される。なお収集条件404はエリアおよびサービスに限定されず、他の条件を用いてもよい。その場合は収集条件の内容を記載するフィールドが臨時ログテーブルに新たに設けられる。
【0033】
サーバ10の臨時ログ情報作成部102は、いずれかの車載装置30への攻撃発生の可能性があるとログ解析部101が判定すると、臨時ログテーブル格納部114に格納されている臨時ログテーブルに基づいて、ログ優先度テーブル集格納部113に格納されているログ優先度テーブルのうち、当該車載装置を含む複数の車載装置30に対するログ優先度テーブルを書き換える。この書き換え後のログ優先度テーブルがサーバ10から各車載装置30へ送信されると、各車載装置30においてログ優先度テーブル格納部162に格納されているログ優先度テーブルが更新される。これにより、臨時ログテーブルを反映して車載装置30のログ優先度テーブルが変更され、その変更後のログ優先度テーブルに応じたログが車載装置30において蓄積される。
図2に示したログ優先度テーブルの例では、モード203のフィールドが「臨時」である3つのレコードが、臨時ログテーブルに基づいて追加されたレコードである。これらのレコードのうち、上の2つは2016年1月1日の10時0分に「DoS攻撃」の可能性があると判断されたために追加されたレコードであり、下の1つは2016年1月1日の9時0分に「不正アクセス」の可能性があると判断されたために追加されたレコードである。
【0034】
(ログ収集)
車載装置30のログ収集部151は、所定の時間周期、たとえば1分毎にログを収集する。ログ収集部151が収集する情報は、プログラムに内包されるログテーブルに記載される。
ログ収集部151が収集したログは、可能な限りマージしてログ格納部163に格納される。ログのマージとは、保存済みのログを書き換えることによりデータ量を増加させることなく新たなログも併せて保存することである。マージの際に書き換える情報は主に時刻に関する情報である。たとえば、10時0分からの5分間におけるパケット受信量の平均が80パケット/分である場合に、ログが「10:00〜10:05 80P/分」と記録されていた。10時5分からの5分間のパケット受信量の平均値も80パケット/分である場合は、先ほどのログとマージして「10:00〜10:10 80P/分」と記録できる。なお10時5分からの5分間のパケット受信量の平均値が100パケット/分である場合に、先ほどのログとマージして「10:00〜10:10 90P/分」と記録してもよい。
【0035】
(ログ収集のフローチャート)
図5は、車載装置30がログを取得し、蓄積する処理をあらわすフローチャートである。以下に説明する各ステップの実行主体は、車載装置30のCPU150である。
【0036】
ステップS601では、ログ収集部151を用いてログを収集する。前述のとおり、ログ収集部151が収集するログの情報は、プログラムにハードコーディングされている。本ステップで収集したログは一時的な記憶領域におかれ、まだログ格納部163には格納されない。続くステップS602では、取得したログがログ格納部163に格納されているログにマージ可能であるか否かを判断する。マージ可能であると判断する場合はステップS609に進み、マージ不可能と判断する場合はステップS603に進む。なお複数のログを取得しており一部のログのみマージ可能と判断する場合は、マージが不可能なログについてのみステップS603以降の処理を行う。
【0037】
ステップS603では、ログ格納部163の空き容量と取得したログの容量を比較し、ログをログ格納部163に蓄積可能か否かを判断する。蓄積可能と判断する場合はステップS613に進み、蓄積が不可能と判断する場合はステップS604に進む。本ステップにおける判断は、ログ格納部163の空き容量と取得したログ容量を単純比較することにより行ってもよいし、ログ格納部163の空き容量から所定の予約容量を除いた容量と取得したログ容量を比較してもよい。
ステップS604では、取得したログのサーバ10への送信が可能か否か、すなわち車載装置30とサーバ10との通信が可能な状態であるか否かを判断する。ログ送信が可能と判断する場合はステップS610に進み、ログ送信が不可能と判断する場合はステップS605に進む。
【0038】
ステップS605では、ログ優先度テーブル格納部162に格納されたログ優先度テーブルを参照し、送信が不可能と判断されたログの優先度を判断する。このときログ優先度テーブルの条件種別204のフィールドが「常時」以外であるレコードは、記載された条件を満たす場合のみ当該レコードを有効として扱い、条件を満たさない場合は当該レコードを無効として扱う。無効として扱われるとログ優先度テーブルに記載されていない場合と同様に、優先度が最も低いとみなされる。
【0039】
続くステップS606では、ログ格納部163の空き容量に基づき、蓄積するログの優先度を決定する。空き容量が多いほど低い優先度まで蓄積対象となり、空き容量が少ないほど高い優先度のログしか蓄積されないこととなる。続くステップS607では、ステップS606において決定された優先度とステップS605において特定した取得したログの優先度を比較する。取得したログの優先度の方が高いと判断する場合はステップS612に進み、取得したログの優先度がステップS606において決定された優先度以下であると判断する場合はステップS608に進む。
【0040】
ステップS608では、取得したログを破棄して
図5のフローチャートを終了する。
ステップS609では、取得したログをログ格納部163に格納されているログにマージして
図5のフローチャートを終了する。
ステップS604において肯定判断されると実行されるステップS610では、ログ格納部163に格納されているログをサーバ10に送信する。続くステップS611では、ログの送信が成功したか否かを判断し、成功したと判断する場合はステップS613に進み、失敗したと判断する場合はステップS605に進む。
【0041】
ステップS607において肯定判断されると実行されるステップS612では、ログ格納部163に蓄積されているログのうち、優先度が最も低いログを破棄する。ステップS613では取得したログをメモリ160のログ格納部163に蓄積し、
図5のフローチャートを終了する。
【0042】
(ログ解析部の動作)
サーバ10のログ解析部101は、車載装置30から取得したログを解析することで、車載装置30への攻撃の可能性の検出、または車載装置30への攻撃の検出を行う。車載装置30への攻撃は多彩であり、日々新たな手法が考案されている。ここで説明する検出手法は一例であり、新たな攻撃手法が明らかになるとその攻撃を検出する解析手法がログ解析部101に実装される。ログ解析部101の動作の一例として、DoS攻撃の検出を説明する。
【0043】
ログ解析部101は、ある車載装置30のログを用いてDoS攻撃が発生している可能性を検出する。DoS攻撃が発生している可能性を検出したら、ログ解析部101は、複数の車載装置30の詳細なログを用いて、実際にDoS攻撃が発生しているか否かを判断する。換言するとログ解析部101は、少数のログを用いて攻撃の可能性を検知し、多数の詳細なログを用いて攻撃発生の確信を得る。
ログ解析部101は、DoS攻撃の可能性を、あるエリアにおける車載装置30の単位時間あたりのパケット受信量と、他のエリアでのパケット受信量との比較により判断する。ログ解析部101は、パケット受信量の差がある閾値以下の場合は攻撃発生の可能性はないと判断し、パケット受信量の差がある閾値を超えている場合はDoS攻撃発生の可能性があると判断する。
【0044】
ログ解析部101は、DoS攻撃が実際に発生していることを、パケット受信量に加えてCPU使用率も用いて判断する。あるエリアにおける車載装置30の単位時間あたりのパケット受信量と、他のエリアでのパケット受信量との差が閾値を超え、なおかつCPU使用率が所定の閾値を超える場合にDoS攻撃が発生していると判断する。なお、パケット受信量の比較は、同一エリアにおける過去の同一時刻の平均パケット受信量を対象としてもよい。
【0045】
(ログ受信後の処理)
図6を用いて、サーバ10が車載装置30からログを収集した後の一連の処理を説明する。以下に説明する各ステップの実行主体はサーバ10のCPU100である。
ステップS701では、受信したログをログ解析部101を用いて解析する。ログ解析部101は、攻撃発生の可能性の判断と、発生している可能性がある攻撃の種類を判断する。続くステップS702では、ステップS701における解析結果を参照し、攻撃が発生した可能性があると判断する場合はステップS703に進み、攻撃が発生した可能性はないと判断する場合は
図6のフローチャートを終了する。
【0046】
ステップS703では、臨時ログ情報作成部102が、臨時ログの収集対象となる車載装置30を決定する。まずCPU100は、ステップS701におけるログの解析結果から特定される攻撃種別に一致するレコードを臨時ログテーブルから検索する。次にCPU100は、該当するレコードにおける臨時ログ収集対象402のフィールドを参照して臨時ログの収集対象を決定する。たとえば
図4に示すように、攻撃の可能性があると判断されたログが収集された地点から半径2km以内に存在する車載装置30や、攻撃の可能性があることが判断されたログを収集した車載装置30と同じ機種、および類似する2機種の車載装置30が収集対象として決定される。次にステップS704に進む。以下に説明するステップS704〜S706は、本ステップにおいて決定した車載装置30ごとにそれぞれ実行される。
【0047】
ステップS704では、臨時ログ情報作成部102が、ログ優先度テーブル集格納部113に格納されるログ優先度テーブルを更新する。本ステップにおいて更新対象となるログ優先度テーブルは、ステップS703において決定した臨時ログの収集対象となる車載装置30に対応するログ優先度テーブルである。ログ優先度テーブルの更新は、臨時ログテーブルにおけるステップS703において特定されたレコードに記載された、ログ種別403、条件種別404、エリア405、サービス406、および有効期間407をログ優先度テーブルの新たなレコードに追加するものである。ただしエリア405は、攻撃の可能性が検出されたログを収集したときの車載装置30の位置を基準として書き換えられる。また有効期間407は、攻撃の可能性が検出されたログが取得された時刻を基準として書き換えられる。このとき、追加するレコードの優先度は最優先を表す「1」とする。次にステップS705に進む。
【0048】
ステップS705では、ログ優先度変更指示部103が、ステップS704において更新されたログ優先度テーブルに基づき、ログ優先度テーブル変更要求メッセージを作成する。そしてログ優先度変更指示部103が、作成したログ優先度テーブル変更要求メッセージを送信する。次にステップS706に進む。
ステップS706では、ログ変更指示部104が、ステップS704において更新されたログ優先度テーブルに基づき、車載装置30のログ収集部151の動作を変更する更新プログラムを作成する。この更新プログラムは、ログ収集部151に更新後のログ優先度テーブルに記載された全てのログ種別を収集させるものである。そしてログ変更指示部104が、作成した更新プログラムを送信する。次にステップS707に進む。
【0049】
ステップS707では、車載装置30から臨時ログを受信したか否かを判断し、受信したと判断する場合はステップS708に進み、受信していないと判断する場合はステップS713に進む。ステップS713ではステップS706の実行から所定の時間、たとえば30分が経過したか否かを判断する。所定の時間が経過していないと判断する場合はステップS707に戻り、所定の時間が経過したと判断する場合はステップS710に進む。一定時間どの該当車載装置からも臨時ログが送信されない場合は、ログ収集できない状況、またはログ送信できない状況であり、何らかの攻撃が発生していることが推測できるからである。
【0050】
ステップS708では、受信した臨時ログをログ解析部101を用いて解析する。続くステップS709では、ステップS708の解析結果から攻撃が発生したと判断する場合はステップS710に進み、攻撃が発生していないと判断する場合は
図6のフローチャートを終了する。
ステップS710では、出力部140を用いてサーバ10のオペレータに攻撃の発生を通知する。続くステップS711ではサービスの緊急停止が必要か否かを判断する。サービスの緊急停止が必要と判断する場合はステップS712に進み、不要と判断する場合は
図6のフローチャートを終了する。ステップS712では、サービス指示部105を用いて車載装置30にサービスの緊急停止を指示し、
図6のフローチャートを終了する。
【0051】
(ログ優先度テーブルの更新処理)
図7は、車載装置30によるログ優先度テーブルの更新処理を示すフローチャートである。以下に説明する各ステップの実行主体は、ログ優先度テーブル管理部152である。
ステップS800では、サーバ10からログ優先度テーブル更新要求メッセージを受信したか否かを判断する。受信したと判断する場合はステップS803に進み、受信していないと判断する場合はステップS801に進む。
【0052】
ステップS803では、受信したログ優先度テーブル更新要求メッセージにしたがって、ログ優先度テーブル格納部162に格納されたログ優先度テーブルを更新する。前述のとおり、ログ優先度テーブル更新要求メッセージには書き換え後のログ優先度テーブルの全体の内容が含まれるため、本ステップにおける更新とはログ優先度テーブルの置き換えを意味する。次にステップS809に進む。
ステップS800においてメッセージを受信していないと判断された場合に実行されるステップS801において、前回のステップS805の実行から一定時間、たとえば5分間が経過したか否かを判断する。経過していると判断する場合はステップS805に進み、経過していないと判断する場合はステップS800に戻る。
【0053】
ステップS805では、ログ優先度テーブル格納部162に格納されているログ優先度テーブルにおいて、モード203のフィールドが「臨時」であるレコードが存在するか否かを判断する。該当するレコードが存在すると判断する場合はステップS806に進み、該当するレコードが存在しないと判断する場合はステップS801に戻る。
【0054】
ステップS806では、ログ優先度テーブルのモード203のフィールドが「臨時」であるレコードについて、有効時間が経過済みであるレコードを削除する。たとえば現在時刻が2016年1月1日の10時45分であり、ログ優先度テーブルが
図2に示すものである場合は、モード203のフィールドが「臨時」である3つのレコードのうち、上の2つのレコードが削除される。これらのレコードは有効時間が経過済みであり、残る1つのレコードは有効時間の経過前だからである。次にステップS809に進む。
ステップS809では、CPU150は、出力部190を用いてユーザへ状況通知、すなわちログ優先度テーブルが書き換えられた旨を通知し、ステップS801に戻る。
【0055】
(ログを収集するプログラムの更新処理)
図8は、車載装置30がログ収集部として機能するプログラムを更新するプログラム更新処理を示すフローチャートである。以下に説明する各ステップの実行主体は、車載装置30のプログラム更新部153である。車載装置30はサーバ30から更新プログラムを受信するとプログラム更新処理を実行する。なおこの更新プログラムは、
図6のステップS706においてサーバから送信されたものである。
【0056】
ステップS901では、プログラム更新が可能な状況であるか否かを判断する。プログラム更新が可能な状況とは、たとえば車載装置30を搭載している車両が停止している状況である。更新可能な状況であると判断する場合はステップS902に進み、更新可能な状況ではないと判断する場合はステップS901に留まる。
ステップS902では、更新プログラムを用いてプログラムを更新する。プログラムの更新は、プログラム全体の置き換えであってもよいし、プログラムの一部変更、いわゆるパッチの適用でもよい。続くステップS903では、プログラムを起動してログ収集部151を動作させてログ収集を開始する。以上で
図8のフローチャートによる処理を終了する。
【0057】
上述した実施の形態によれば、次の作用効果が得られる。
(1)サーバ10とネットワーク20により接続され車両に搭載される車載装置30であって、ログを収集するログ収集部151と、ログの少なくとも一部を蓄積するためのログ格納部163と、ログ格納部163に蓄積されるログの優先度を示すログ優先度情報が格納されたログ優先度情報格納部162と、ログ優先度情報に基づきログ格納部163に蓄積するログを決定する蓄積ログ決定部(
図5のステップS605〜S607)と、ログ格納部163に蓄積されたログをサーバ10に送信する通信部170と、サーバ10からの更新指令に基づきログ優先度情報格納部162に格納されたログ優先度情報を更新するログ優先度テーブル管理部152と、を備える。
車載装置30をこのように構成したので、サーバ10からの指令に基づき、ログの優先度を変更することができる。したがって、車載装置のおかれた状況に応じて適切なログを収集することができる。さらにこのログをサーバ10が解析することにより実際に攻撃が発生していることを判断できる。
【0058】
(2)車載装置30は、ログ収集部151が収集するログの内容を示すログ情報が格納されたログ情報格納部161と、ログ情報格納部に格納されたログ情報を更新するプログラム更新部153とを備える。
そのため、サーバ10が攻撃の可能性を検出した場合に、従前は収集していなかった情報を収集することができる。
【0059】
(3)ログ収集部151は、ログ情報が組み込まれたログ取得プログラムであり、プログラム更新部153は、ログ取得プログラムを書き換えることによりログ情報を更新する。
そのためログ収集部151は、ログとして収集する情報を示す情報を外部から読み込む必要がないので、高速に動作することができる。
【0060】
(4)車載装置30は、車両1の乗員へ提供するサービスを制御するサービス制御部154を備える。サービス制御部154は、サーバ10からの指令に基づきサービスを停止する。そのため、攻撃の影響を受けるサービスをサーバ10からの指令に基づき停止させることができる。
【0061】
(5)ログ優先度情報は、有効時間および有効エリアの少なくとも一方に関する条件を含む。蓄積ログ決定部(
図5のステップS605〜S607)は、ログが収集されたときの時刻および車載装置の位置の少なくとも一方が、ログ優先度情報における条件に合致する場合に、ログ優先度情報を有効とみなしてログ格納部163に蓄積するログを決定する。
そのため、ログ収集部151が車載装置30の状態に応じてログの優先度を判断することができる。これは、車載装置30の位置がエリア205に格納された条件を満たすか否かの判断を行う場合や、ログ優先度テーブル管理部152により有効時間が経過したレコードが削除される前にログ収集部151がログ優先度テーブルを参照する場合に有効である。
【0062】
(6)ログ収集システム1は、車載装置30、および車載装置30とネットワーク20により接続されるサーバ10から構成される。サーバ10は、車載装置30から受信したログを解析し攻撃の可能性を検知するログ解析部101と、ログ解析部101が攻撃の可能性を検知すると、車載装置30に更新指令を送信して、ログ優先度情報格納部162に格納されたログ優先度情報を更新させるログ優先度変更指示部103と、を備える。
そのためログ収集システム1は、車載装置30が送信したログからサーバ10が攻撃の可能性を検知すると、車載装置30に蓄積させるログの優先度を変更させることができる。
【0063】
(7)車載装置30は、ログ収集部151が収集するログの内容を示すログ情報が格納されたログ情報格納部161を備える。サーバ10は、ログ情報格納部161に格納されたログ情報を更新させるログ変更指示部104を備える。
そのためサーバ10は、車載装置30が収集するログの内容を変更させることができる。これにより、サーバ10が攻撃の可能性を検出した際に、車載装置30に詳細なログを収集させることができる。
【0064】
(8)ログ優先度変更指示部103は、攻撃の可能性が検知されたログを送信した車載装置30に加えて、当該車載装置と同一機種であること、および攻撃の可能性が検知されたログが取得された位置から所定距離以内に存在すること、の少なくとも一方の条件を満たす他の車載装置30にも更新指令を出力する。
そのため、サーバ10は攻撃を受けている可能性が高い複数の他の車載装置30からも、攻撃が発生したことの判断に用いるログを収集することができる。特定の1台の車載装置30のログだけに基づいて攻撃が発生したと判断することは困難、もしくは過検出となる可能性が高いので、サーバ10は複数の車載装置30のログを用いて総合的に判断することができる。
【0065】
(9)車載装置30は、車両の乗員へ提供するサービスを制御するサービス制御部154を備える。サーバ10は、ログ解析部101が攻撃を検知すると、車載装置30にサービスの停止指令を出力するサービス指示部110を備える。
そのため車載装置30は、攻撃の影響を受けるサービスをサーバ10からの指令に基づき停止させることができる。
【0066】
(10)ログ優先度情報は、有効時間および有効エリアの少なくとも一方に関する条件を含む。ログ優先度変更指示部103は、ログ解析部101により攻撃の可能性が検知されたログを車載装置30が収集したときの時刻および位置の少なくとも一方に基づいて、更新後のログ優先度情報における有効時間および有効エリアの少なくとも一方を決定する。
そのためログ収集システム1は、攻撃の可能性が検知されたログが収集された時刻および位置の少なくとも一方に基づいて臨時ログを収集し、実際に攻撃が発生していることを判断することができる。
【0067】
上述した実施の形態は、以下のように変形してもよい。
(変形例1)
サーバ10は、ログ優先度テーブルを部分的に更新させるログ優先度テーブル変更要求メッセージを作成してもよい。この場合は、ログ優先度テーブル変更要求メッセージには、削除対象となる既存のレコードを示す情報と、追加されるレコードの内容を示す情報が含まれる。この変形例1によれば、ログ優先度テーブル変更要求メッセージのデータ容量を削減することができる。
【0068】
(変形例2)
サーバ10のオペレータが新たな攻撃手法に関する知見を得て、その攻撃の可能性を検知できるようにログテーブルやログ優先度テーブルを書き換え、ログ優先度変更指示部103やログ変更指示部104を用いてこれらを車載装置30に送信してもよい。この変形例2によれば、車載装置30の出荷後に明らかになった攻撃手法へも対処することができる。ただし書き換えるのは、ログテーブルおよびログ優先度テーブルの一方だけでもよい。
【0069】
(変形例3)
サーバ10は、車載装置30に新たなサービスを実行するプログラムを送信し、車載装置30にそのサービスを実行させてもよい。その場合は、車載装置30のログテーブル、ログ優先度テーブル、および臨時ログテーブルにそのサービスに関する情報が追加される。
【0070】
たとえば、車載装置30が収集した走行距離等の車両情報に基づき、サーバ10からユーザに部品交換時期や点検を紹介するメッセージが配信されるリモートメンテナンスサービスが追加される場合は、以下の問題が考えられる。すなわち、サーバ10を管理しているサービス提供者以外がサーバ10になりすまして車載装置30にメッセージを送信し、ユーザが希望しない広告や虚偽の情報が車載装置30に表示される恐れがある。そこでこのサービスを追加する際に、メッセージの受信時刻、およびメッセージの送信元を収集するようにログテーブルを変更する。このとき、これらの条件種別204のフィールドには「常時」が入力される。
なお、事前に提供されていたサービスの機能が拡張され、新たにログを収集する必要が発生した場合にも同様にテーブル、ログ優先度テーブル、および臨時ログテーブルを修正することで対応できる。
【0071】
(変形例4)
実施の形態ではログ解析部101が臨時ログを解析し、攻撃が実際に発生していることを検出すると車載装置30にサービスを停止させた(
図6、ステップS712)。しかし、ログ解析部101が攻撃発生の可能性があると判断した際に車載装置30にサービスを停止させてもよい。この変形例4によれば、攻撃によるサービスへの悪影響をさらに低減することができる。
【0072】
(変形例5)
実施の形態では、臨時ログの解析後に攻撃発生と判断した場合に、オペレータへの通知を行っているが、以下のように変更してもよい。すなわち、はじめに攻撃発生の可能性があると判断した場合にもオペレータに通知し、オペレータが変更後のログテーブルおよびログ優先度テーブルを確認した上で、ログ優先度テーブル変更要求メッセージを送信してもよい。
【0073】
(変形例6)
実施の形態では、車載装置30からログを収集するとログの解析を開始したが、以下のような場合にログを解析してもよい。たとえば、一定の時間が経過した場合、一定量以上のログが蓄積した場合、一定台数以上の車載装置30のログを収集した場合、または入力部130を用いたオペレータからの解析開始指令を受けた場合にログを解析してもよい。
【0074】
(変形例7)
車載装置30は、ログを収集した際にログの送信可否を優先的に判断してもよい。すなわち、
図6においてステップS601の実行後にステップS604に進み、ステップS604において否定判断された場合にステップS602に進んでもよい。この場合は、ステップS603において否定判断されるとステップS605に進む。この変形例7によれば、サーバ10と通信が可能な場合にログをマージする必要がない。
【0075】
(変形例8)
車載装置30のログ収集部151は、ログとして収集する情報を示す情報を外部から読み込んでもよい。すなわち、ログとして収集する情報を示す情報がプログラムにハードコーディングされていなくてもよい。この場合は、メモリ160にログテーブル格納部161が格納され、ログ収集部151はログテーブル格納部161に格納されたログテーブルを参照してログを収集する。
この変形例8によれば、ログ収集部151がログとして収集する情報を容易に変更することができる。
【0076】
(変形例9)
サーバ10は、ログ優先度テーブルを変更する対象を特定する情報をログ優先度テーブル変更要求メッセージに含め、ログ優先度テーブル変更要求メッセージをログ優先度テーブルを変更する対象以外にも送信してもよい。この場合は、ログ優先度テーブル変更要求メッセージを受信した車載装置30が、当該車載装置30がログ優先度テーブル変更要求メッセージの適用対象であるか否かを判断する。
この変形例9によれば、送信対象を特定せずにログ優先度テーブル変更要求メッセージを送信できるので、サーバ10の送信先の決定が容易である。
【0077】
(変形例10)
実施の形態では、サーバ10に複数の車載装置30が接続されるとしたが、サーバ10に接続される車載装置30は一台だけでもよい。
【0078】
(変形例11)
実施の形態では、ログ優先度テーブルが更新される場合(
図6のステップS702:YESの場合)には、車載装置30のログ収集部151の動作を変更する更新プログラムが作成され送信された(
図6のステップS706)。しかし、更新後のログ優先度テーブルに記載されるログ種別が既存のログ収集部151において全て収集される場合には、更新プログラムの作成および送信を省略してもよい。
【0079】
上述した実施の形態および変形例は、それぞれ組み合わせてもよい。
上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。