以下、本開示の複数の実施形態を図面に基づいて説明する。尚、各実施形態において対応する構成要素には同一の符号を付すことにより、重複する説明を省略する場合がある。各実施形態において構成の一部分のみを説明している場合、当該構成の他の部分については、先行して説明した他の実施形態の構成を適用することができる。また、各実施形態の説明において明示している構成の組み合わせばかりではなく、特に組み合わせに支障が生じなければ、明示していなくても複数の実施形態の構成同士を部分的に組み合わせることができる。そして、複数の実施形態及び変形例に記述された構成同士の明示されていない組み合わせも、以下の説明によって開示されているものとする。
(第一実施形態)
図1に示す本開示の第一実施形態におけるデータ保存装置の機能は、車載ECU(Electronic Control Unit)100に実装されている。車載ECU100は、車両Aに搭載された複数の電子制御ユニットのうちの一つである。車載ECU100は、例えばボディ系の統合ECUであってもよく、自動運転又は高度運転支援のための自動運転ECUであってもよい。さらに、車載ECU100は、取得データを保存するための専用ECUであってもよい。車載ECU100は、DCM40、V2X通信器30、及び複数の車載センサ20等と直接的又は間接的に電気接続されている。
DCM(Data Communication Module)40は、車両Aに搭載される通信モジュールである。DCM40は、LTE(Long Term Evolution)及び5G等の通信規格に沿った無線通信により、車両Aの周囲の基地局との間で電波を送受信する。DCM40は、クラウドCLDと車載機器との連携(Cloud to Car)を可能にする。DCM41の搭載により、車両Aは、インターネットに接続可能なコネクテッドカーとなる。DCM40は、クラウドCLD上に設置されたバックアップサーバBSへ向けて、車載ECU100に保存されたデータのバックアップを送信する。加えてDCM40は、バックアップサーバBSに保存されたバックアップデータを受信する。
V2X(Vehicle to Everything)通信器30は、車車間通信、路車間通信、及び歩車間通信等を実現する車載通信機である。V2X通信器30は、他車両に搭載された車載器、道路に設置された路側機、及び歩行者の所持する携帯端末等が通信範囲に存在する場合、これらの通信構成と双方向通信可能である。V2X通信器30は、通信を通じて取得した通信データを、例えば車載通信ネットワークの通信バス等を通じて、車載ECU100に提供可能である。
車載センサ20は、車両Aに搭載される種々の検出構成である。車載センサ20には、車両Aの走行状態を検出する車速センサ及び慣性センサ(Inertial Measurement Unit,IMU)が含まれている。車載センサ20には、ドライバの状態や運転操作を検出する車内カメラ、ペダルセンサ及びステアセンサが含まれている。車載センサ20には、運転支援又は自動運転に用いられる車外カメラ、ミリ波レーダ及びライダが含まれている。各車載センサ20は、例えば車載通信ネットワークの通信バス等を通じて、車載ECU100に検出データを提供可能である。
車載ECU100は、車両Aにて発生したデータを取得し、当該取得データをログデータLDとして改竄困難な状態で蓄積する車載コンピュータである。車載ECU100は、プロセッサ11、RAM12、記憶部13及び入出力インターフェース14等を含む制御回路を主体に構成されている。
プロセッサ11は、RAM12と結合された演算処理のためのハードウェアであり、RAM12へのアクセス処理により、種々のプログラムを実行可能である。記憶部13は、不揮発性の記憶媒体を含む構成であり、プロセッサ11によって実行される種々のプログラムを格納している。記憶部13には、車両Aにて発生したログデータLDの蓄積、提供及び監視に関連するデータ保存プログラムが少なくとも記憶されている。
車載ECU100は、ノーマルワールドNW及びセキュアワールドSWという少なくとも二つの異なる処理領域をシステム内に規定する。ノーマルワールドNW及びセキュアワールドSWは、ハードウェア上で物理的に分離されていてもよく、又はハードウェア及びソフトウェアの連携によって仮想的に分離されていてもよい。車載ECU100は、コンテキストスイッチ等の機能を利用し、アプリケーションの実行に必要なリソースを、ノーマルワールドNW及びセキュアワールドSWに時間的に分離させている。
ノーマルワールドNWは、オペレーションシステム及びアプリケーションを実行させる通常の領域である。ノーマルワールドNWには、データ保存のためのストレージ領域(Untrusted Storage)として、ノーマルストレージUSが設けられている。
セキュアワールドSWは、ノーマルワールドNWから隔離された領域である。セキュアワールドSWでは、セキュリティを要求される処理のためのセキュアなオペレーションシステム及びアプリケーションが実行される。ノーマルワールドNWからセキュアワールドSWへのアクセスは、プロセッサ11の機能によって制限されている。そのため、ノーマルワールドNWからは、セキュアワールドSWの存在が認識不可能となり、セキュアワールドSWにて実行される処理及びセキュアワールドSWに保存された情報等の安全性が確保される。セキュアワールドSWには、データ保存のためのストレージ領域(Trusted Storage)として、セキュアストレージTSが設けられている。セキュアストレージTSの容量は、ノーマルストレージUSの容量よりも少なくされてよい。
車載ECU100は、ログデータLDを保存するロガー処理(図3参照)、ロガー処理によって蓄積されたログデータLDを外部に提供するデータ提供処理(図4参照)、及びシステムの状態を監視するシステム監視処理(図6参照)等を実行する。上記の各処理を実行する機能ユニットとして、車載ECU100には、ノーマルワールドNWにて作動するロガー50及びオーディタ60と、セキュアワールドSWにて作動するオブザーバ70とが設けられる。
ロガー50は、ロガー処理の実行により、車両Aにて発生した種々のデータをブロックチェーンBCに関連付けて保存する機能ユニットである。ロガー50は、データ取得部51、ブロック生成部52、データ保存部53及びハッシュ値保存部54等の機能部を有している。
データ取得部51は、例えば車載通信ネットワークの通信バスに電気的に接続されている。データ取得部51は、通信データ及び検出データ等、車両Aに発生した種々のデータを、通信バスを通じて取得可能である。データ取得部51は、車載センサ20及びV2X通信器30によって通信バスに逐次出力されるデータの中から予め設定されたデータを抽出し、保存対象とする取得データとして選択的に取得する。
図1及び図2に示すブロック生成部52は、データ取得部51にて取得された取得データを、ログデータLDとして保存する。ブロック生成部52は、例えばSH−256等のハッシュ関数を用いてハッシュ値を計算する機能を有している。ブロック生成部52は、ハッシュ関数を利用して、ログデータLDをハッシュチェーン状のデータ構造に変換し、ノーマルストレージUSに保存する。ブロック生成部52は、予め設定された指定数又は指定容量のログデータLDに基づき、一つのブロックを作成する。ブロック生成部52は、一つのブロックのデータをハッシュ関数に入力して得られるハッシュ値を、次のブロックに含ませることにより、多数のブロックを直鎖状に連結させてなるブロックチェーンBCを生成する。
ブロック生成部52は、データ取得部51によって取得された指定数又は指定容量のログデータLDに基づき、各ブロックに本体データとして格納されるハッシュ値を算出する。ブロック生成部52は、多数のログデータLDそれぞれについてのハッシュ値を個別に計算してもよく、又は多数のログデータLDのマークルルートを計算してもよい。
データ保存部53は、データ取得部51によって取得されたログデータLDを、ノーマルストレージUS内に指定されたファイルパスに保存する。データ保存部53は、ブロック生成部52にて生成されるブロックチェーンBCのデータを、ノーマルストレージUSに保存する。データ保存部53は、特定のブロックと、その特定のブロックに含まれるログデータLDのファイルパスとを紐づける紐づけ情報Linを、ノーマルストレージUSに保存する。
ハッシュ値保存部54は、セキュアワールドSWへのアクセスを可能にする所定の命令(例えば、セキュアモニタコール等)の実行により、セキュアストレージTSに保存されたブロックハッシュ値HvB及びブロックナンバーNoBを更新可能である。ブロックハッシュ値HvBは、ブロックチェーンBCの現在の最終ブロックLBに基づくハッシュ値である。ブロックハッシュ値HvBは、最終ブロックLBの全データをハッシュ関数へ入力する演算処理により、出力として得られる256ビットの値(文字列)である。
ブロックナンバーNoBは、最終ブロックLBに割り振られた固有の値であり、初期ブロックを「0」としたとき、現在の最終ブロックLBがブロックチェーンBCにおいて何番目のブロックなのかを示す値である。ブロックナンバーNoBは、ブロックチェーンBCに現在連結されているブロックの数を示す値でもある。ハッシュ値保存部54は、ブロック生成部52にて新規ブロックABの生成及びそのハッシュ値の計算が行われる毎に、セキュアストレージTSのブロックハッシュ値HvB及びブロックナンバーNoBを更新する。
以上のロガー50によって実施されるロガー処理の詳細を、図3に示すフローチャートに基づき、図1及び図2を参照しつつ、以下説明する。ロガー処理は、車載ECU100への電力供給の開始に基づき開始され、電力供給の終了まで継続実施される。
S101では、ノーマルストレージUSにブロックチェーンBCの初期ブロックが既に生成されているか否かを判定する。S101にて、初期ブロックがあると判定した場合、105に進む。一方、S101にて、初期ブロックがないと判定した場合、初期処理を行うS102に進む。
S102では、任意のデータに基づいたハッシュ値を計算し、当該ハッシュ値を格納する初期ブロックを設定して、S103に進む。S103では、S102にて設定した初期ブロックのハッシュ値を計算し、S104に進む。S104では、S103にて算出したハッシュ値を、ブロックハッシュ値HvBの初期値としてセキュアストレージTSに保存し、S105に進む。加えてS104では、ブロックナンバーNoBを保存するセキュアストレージTSのアドレスに、初期値としての「0」を記録する。
S105では、ログデータLDとして蓄積するデータの取得処理を開始し、S106に進む。S106では、保存対象とされた取得データが取得できたか否かを判定する。保存対象となるデータが取得されない場合、S106の判定を繰り返す処理により、該当データの発生を待機する。そして、通信バスから保存対象となるデータを取得したタイミングで、S106からS107に進む。
S107では、ファイルパスの指示に従い、ノーマルストレージUSの特定の記憶領域に、取得データをログデータLDとして保存し、S108に進む。S108では、S107にて保存されたログデータLDのハッシュ値を計算し、S109に進む。S107及びS108にて、ログデータLDの取得とハッシュ値の算出とが逐次実行されることにより、処理負荷が時間的に分散される。
S109では、新規ブロックABに格納するログデータLDが指定数又は指定容量に到達したか否かを判定する。S109にて、ログデータLDが指定数又は指定容量に未達であると判定した場合、S106に戻り、ログデータLDの収集を継続する。一方、S109にて、ログデータLDが指定数又は指定容量に到達したと判定した場合、S110に進む。尚、S109では、前回の新規ブロックAB生成時からの経過時間をカウントし、所定の経過時間が経過したこと(タイムアウト)に基づいて、S110に進むことができる。
S110では、現在の最終ブロックLBに基づくハッシュ値と、S108にて計算したログデータLDのハッシュ値とをセットとし、これらハッシュ値を少なくとも含む新規ブロックABを生成し、S111に進む。新規ブロックABは、ノーマルストレージUSに保存され、ブロックチェーンBCに新たな最終ブロックLBとして連結される。
S111では、紐づけ情報Linを生成し、当該紐づけ情報LinをノーマルストレージUSに保存して、S112に進む。紐づけ情報Linは、S110にて生成した新規ブロックABと、当該新規ブロックABにハッシュ値が含まれるログデータLDの保存先を規定したファイルパスとを紐づける情報である。
S112では、新規ブロックABのハッシュ値を計算し、S113に進む。S113では、S112にて計算したハッシュ値により、セキュアストレージTSのブロックハッシュ値HvBを更新する。加えてS113では、セキュアストレージTSに記録されたブロックナンバーNoBの値をインクリメントし、新規ブロックABのブロックナンバーと一致させる。以上のS106〜S113の繰り返しにより、ブロックチェーンBCに関連付けたログデータLDの保存が実現される。
図1及び図2に示すオーディタ60は、ロガー50によって蓄積されたログデータLDをユーザUに提供するデータ提供処理(図4参照)と、ログデータLDのバックアップ及び復元に関連するデータ保守処理とを実行する機能ユニットである。オーディタ60は、データ提供処理に関連する機能部として、データ提供部61及びデータ検証部62を有している。
データ提供部61は、車載ECU100の外部のユーザインターフェースUI(図5参照)と、有線又は無線にて通信可能である。ユーザインターフェースUIは、例えば車両Aに搭載されたHMI機器、或いはスマートフォン、タブレット又はパーソナルコンピュータ等のユーザ端末である。ユーザインターフェースUIには、ログデータLDを参照するためのユーザ操作が、ユーザUによって入力される。ユーザインターフェースUIは、ユーザ操作に基づき、データ提供部61へ向けて参照要求を出力する。
データ提供部61は、ユーザインターフェースUIによって出力された参照要求を受け付ける。参照要求では、ユーザUが参照を希望するログデータLDのファイルパスが指定される。データ提供部61は、取得した参照要求のファイルパスを抽出し、データ検証部62にファイルパスを提供する。データ提供部61は、データ検証部62による検証結果に問題がない場合、ファイルパスにて指定されたログデータLDを、参照要求の要求元であるユーザインターフェースUIに返却する。
データ検証部62は、データ提供部61による参照要求の受け付けをトリガとして、参照要求にて要求された特定のログデータLD(要求データ)の改竄の有無等を含む異常を、セキュアストレージTSに保存されたブロックハッシュ値HvBを用いて検証する。データ検証部62は、参照要求にて指定されたファイルパスの紐づくブロックナンバーを、紐づけ情報Linに基づいて特定する。データ検証部62は、特定したブロック(以下、「特定ブロックSB」)と、当該特定ブロックSBよりも新しいブロック(図2 破線の範囲参照)に対して、ログデータLDに基づく各ハッシュ値の再計算を実行し、ブロックチェーンBCの整合性を検証する。
データ検証部62は、再計算された最終ブロックLBに基づくハッシュ値と、セキュアストレージTSに保存されたブロックハッシュ値HvBとが一致するか否かに基づき、ログデータLDの異常を判断する。データ検証部62は、再計算した最終ブロックLBのハッシュ値と、ブロックハッシュ値HvBとが一致した場合、ログデータLDには改竄等の異常がないと判断する。一方で、再計算した最終ブロックLBのハッシュ値と、ブロックハッシュ値HvBとが一致しない場合、ログデータLDに改竄等の異常の可能性があると判断する。
以上のデータ提供部61及びデータ検証部62によって実施されるデータ提供処理の詳細を、図4に示すフローチャートに基づき、図1及び図2を参照しつつ、さらに説明する。データ提供処理は、ユーザインターフェースUIからの参照要求の受信に基づき、オーディタ60にて開始される。
S131では、ユーザインターフェースUIから送信された参照要求を受け付け、S132に進む。S132では、S131にて取得した参照要求のファイルパスと、ノーマルストレージUSに保存された紐づけ情報Linとに基づき、ファイルパスの紐づく特定ブロックSBを特定し、S133に進む。特定ブロックSBは、ユーザUが参照を希望するログデータLDのハッシュ値を格納しているブロックである。S133では、特定ブロックSB以降連結されたブロックについて、関連するログデータLDを読み出し、ハッシュ値の再計算を実行し、S134に進む。
S134では、S133にて再計算した最終ブロックLBのハッシュ値が、セキュアストレージTSに保存されたブロックハッシュ値HvBと一致するか否かを判定する。S132にて、今回算出したハッシュ値が、ブロックハッシュ値HvBと一致すると判定した場合、S135に進む。S135では、S133の再計算に使用した全てのログデータLDに改竄がない旨の正常判定を実施する。S135では、こうした正常判定に基づき、参照要求に対応するログデータLDの一覧を、ユーザインターフェースUIに返却し、一連のデータ提供処理を終了する。
一方、S134にて、二つのハッシュ値が一致しないと判定した場合、S136に進む。S136では、S133の再計算に使用したいずれかのログデータLDに改竄の可能性がある旨の異常判定を行う。S136では、こうした異常判定に基づき、ユーザインターフェースUIへのエラー通知を返却し、一連のデータ提供処理を終了する。
ユーザインターフェースUIは、S135又はS136によるデータ取得部51からの応答に基づき、図5に示すデータ提供画面80をディスプレイに表示させる。データ提供画面80は、ブロック構造表示域81、ファイルパス表示域82及びファイル内容表示域83等によって構成されている。
ブロック構造表示域81は、ブロックチェーンBCの構造と、ブロックチェーンBCに格納された各種情報とを、概略的に画像表示する表示域である。ファイルパス表示域82は、参照要求に含ませたファイルパスを表示する表示域である。ファイル内容表示域83は、返却されたログデータLDを表示する標示域である。ユーザインターフェースUIにエラー通知が返却された場合、ファイル内容表示域83にはエラーメッセージ等が表示される。
オーディタ60は、図1に示すように、データ保守処理に関連する機能部として、バックアップ送信部63及びデータ復元部64を有している。バックアップ送信部63及びデータ復元部64は、DCM40と連携し、バックアップサーバBSとの間でログデータLDの共有を可能にしている。
バックアップ送信部63は、ブロック生成部52による新規ブロックABの生成を検知する。バックアップ送信部63は、ブロック生成部52にて新規ブロックABが生成されると、当該新規ブロックABにハッシュ値が格納された多数のログデータLDのバックアップデータを、外部のバックアップサーバBSへ向けて送信する。バックアップサーバBSは、バックアップ送信部63より送信されるバックアップデータを、車載ECU100のID情報と紐づけて、ハードディスクドライブ等の大容量の記憶媒体に保存する。
バックアップ送信部63は、DCM40による通信が不可能な状況では、バックアップサーバBSへのログデータLDの送信を保留する。この場合、DCM40が通信可能な状態に復帰したタイミングで、バックアップ送信部63は、未送信分のバックアップデータの送信を再開する。
データ復元部64は、データ検証部62による異常判定を検知する。データ復元部64は、ログデータLD等に改竄又は欠損等の異常が生じ、データ検証部62にてログデータLDの異常判定がなされた場合に、バックアップサーバBSに保存されたバックアップデータを用いて、ログデータLDを復元する。データ復元部64は、データ検証部62の検証対象とされた特定ブロックSB(図2参照)以降の各ブロックにハッシュ値が組み込まれた複数のログデータLDについて、バックアップデータの送信をバックアップサーバBSに要求する。データ復元部64は、バックアップサーバBSより受信したバックアップデータを正常なログデータLDとし、ファイルパスの指定するログデータLDを、対応するバックアップデータで上書きする。尚、データ復元部64は、全てのバックアップデータをバックアップサーバBSから取得し、全てのログデータLDを更新する処理を実施してもよい。
オブザーバ70は、セキュアワールドSWにて作動することにより、車載ECU100の外部及びノーマルワールドNWからの改竄から保護されている。オブザーバ70は、ノーマルワールドNWのロガー50及びオーディタ60の状態を、セキュアワールドSWから定期的に監視する機能ユニットである。
オブザーバ70は、定期的な監視のため、システム監視処理(図6参照)を予め規定された周期で開始する。オブザーバ70は、ロガー処理の実行に必要とされるロガー50の実行ファイル、及びデータ提供処理及びデータ保守処理の実行に必要とされるオーディタ60の実行ファイルを、ノーマルワールドNWから取得する(図6 S151参照)。
ロガー50の実行ファイルは、換言すれば、データ取得部51、ブロック生成部52、データ保存部53及びハッシュ値保存部54それぞれに関連する実行ファイルである。同様に、オーディタ60の実行ファイルは、換言すれば、データ提供部61、データ検証部62、バックアップ送信部63及びデータ復元部64それぞれに関連する実行ファイルである。オブザーバ70は、各実行ファイルの全体を網羅的に取得する。実行ファイルには、例えばバイナリファイルが含まれている。さらに、コンパイラ、リンカ及びライブラリ等も、実行ファイルに含まれてよい。
オブザーバ70は、予め規定された順序で、各実行ファイルをハッシュ関数に入力し、ロガー50のハッシュ値及びオーディタ60のハッシュ値をそれぞれ計算する(S152参照)。
セキュアストレージTSには、改竄の無いことが保証された初期の実行ファイルに基づくハッシュ値が、監視用ハッシュ値として保存されている。具体的には、正常なロガー50の実行ファイルに基づくロガーハッシュ値HvLと、正常なオーディタ60の実行ファイルに基づくオーディタハッシュ値HvAとが、監視用ハッシュ値として、セキュアストレージTSに保存されている。ロガーハッシュ値HvL及びオーディタハッシュ値HvAは、セキュアストレージTSに保存されることで、外部及びノーマルワールドNWからのアクセスによる改竄から保護されている。
オブザーバ70は、今回のシステム監視処理にて取得したロガー50の実行ファイルに基づくハッシュ値が、セキュアストレージTSに保存されたロガーハッシュ値HvLと一致するか否かを判定する(S153参照)。同様に、オブザーバ70は、今回取得したオーディタ60の実行ファイルに基づくハッシュ値が、セキュアストレージTSに保存されたオーディタハッシュ値HvAと一致するか否かを判定する(S153参照)。
オブザーバ70は、ロガー50及びオーディタ60のそれぞれについて、今回算出した各ハッシュ値が監視用の各ハッシュ値HvL,HvAと一致すると判定した場合、各実行ファイルが改竄されていない旨の正常判定を行う(S154参照)。一方、今回算出した各ハッシュ値の少なくとも一つが各ハッシュ値HvL,HvAと一致しないと判定した場合、オブザーバ70は、実行ファイルに改竄可能性がある旨の異常判定を行う(S155参照)。この場合、ユーザUへ向けてのエラー通知が実施され、一連のシステム監視処理は終了される。
ここまで説明した第一実施形態では、ブロックチェーンBCに新たに連結される新規ブロックABのハッシュ値が、ノーマルワールドNWからのアクセスを制限されたセキュアストレージTSにブロックハッシュ値HvBとして保存される。故に、車両Aにて取得されるログデータLDの改竄等が、セキュアワールドSWにて保護されたブロックハッシュ値HvBを用いた比較によって検知され得る。
詳記すると、個々のログデータLDのハッシュ値がブロックチェーンBCに組み込まれているため、ログデータLDの一つが変更されただけでも、最後のブロックハッシュ値HvBは、変化する。故に、ブロックハッシュ値HvBさえ保護されていれば、ブロックハッシュ値HvBとの照合に基づき、全てのログデータLDの改竄が検知され得る。
したがって、車両Aにて取得されるログデータLDを、信用性を確保しつつ保存することが可能になる。
加えて第一実施形態では、ログデータLDとブロックチェーンBCとの紐づけに関連する紐づけ情報LinがノーマルストレージUSに保存されている。故に、ユーザインターフェースUIからの参照要求に応じて、要求されたログデータLDに関連する特定ブロックSBが、紐づけ情報Linに基づき迅速に特定され得る。以上によれば、ログデータLDを参照するユーザUの利便性が確保され易くなる。
また第一実施形態では、特定のログデータLDの参照要求を受け付けると、要求されたログデータLDについての改竄の有無が、データ検証部62によって検証される。こうした改竄の検証には、セキュアストレージTSに保存されたブロックハッシュ値HvBが用いられる。以上のように、ログデータLDについての改竄可能性の検証が参照要求の受け付け毎に実施されれば、ユーザインターフェースUIに提供されるログデータLDの信用性が適切に確保され得る。
さらに第一実施形態のデータ検証部62は、特定ブロックSB以降に連結されたブロックに関連するハッシュ値を再計算し、最終ブロックLBのハッシュ値が、セキュアストレージTSのブロックハッシュ値HvBと一致する場合に、改竄がないと判定する。こうした処理によれば、セキュアストレージTSに保存させるデータ容量を削減しつつ、多量のログデータLDに対する改竄の有無が正確に検証可能となる。
加えて第一実施形態のロガー50及びオーディタ60は、ノーマルワールドNWにおいて作動する。故に、セキュアワールドSWのリソースの消費が低減され得る。
また第一実施形態では、オブザーバ70がセキュアワールドSWにおいて作動し、ロガー50及びオーディタ60の各実行ファイルの改竄の有無を判定する。以上によれば、ロガー50及びオーディタ60をそれぞれノーマルワールドNWにて作動させていても、これらの正しい作動が、セキュアワールドSWにて作動するオブザーバ70によって担保される。以上によれば、ログデータLDの信用性を確保しつつ、車載ECU100のリソースの有効利用が可能になる。
さらに第一実施形態では、セキュアストレージTSには、ロガー50及びオーディタ60の正常な各実行ファイルに基づくロガーハッシュ値HvL及びオーディタハッシュ値HvAが保存されている。そして、オブザーバ70は、現在の各実行ファイルに基づくハッシュ値と、監視用の各ハッシュ値HvL,HvAとが一致している場合に、実行ファイルが改竄されていないと判定する。こうした処理によれば、セキュアストレージTSに保存するデータ容量を削減しつつ、大容量となり易い各実行ファイルについての改竄の有無が正確に検証可能となる。
加えて第一実施形態では、車載ECU100の外部に設けられたバックアップサーバBSにログデータLDが送信され、当該バックアップサーバBSにバックアップデータとして保存される。そして、車載ECU100に保存されたログデータLDに異常が生じた場合には、バックアップサーバBSに保存されたバックアップデータを用いて、車載ECU100のログデータLDの復元が実行される。以上のように、バックアップからの復元手段が確保されていれば、ノーマルストレージUSにログデータLDを保存させても、信用性が確保され得る。
尚、第一実施形態では、車両Aが「移動体」に相当し、バックアップサーバBSが「保存装置」に相当し、ユーザインターフェースUIが「要求元」に相当する。また、ノーマルストレージUSが「ノーマルワールドのストレージ領域」に相当し、セキュアストレージTSが「セキュアワールドのストレージ領域」に相当し、ロガーハッシュ値HvL及びブロックハッシュ値HvBがそれぞれ「監視用ハッシュ値」に相当する。さらに、カードリーダ15が「ストレージ接続部」に相当し、データ保存部53が「ノーマル保存処理部」に相当し、ハッシュ値保存部54が「セキュア保存処理部」に相当し、オブザーバ70が「ファイル監視部」に相当する。そして、車載ECU100が「データ保存装置」に相当する。
(第二実施形態)
図7に示す本開示の第二実施形態は、第一実施形態の変形例である。第二実施形態の車載ECU100の制御回路には、カードリーダ15が設けられている。カードリーダ15に設けられたスロット部には、メモリカードMCが挿入される。メモリカードMCは、カードリーダ15に対し着脱自在なリムーバブルメディアである。メモリカードMCは、カードリーダ15と電気的に接続され、制御回路の補助的な記憶装置として機能する。カードリーダ15は、メモリカードMCへのデータの書き込み、及びメモリカードMCからのデータの読み出しを行う。
ロガー50には、外部メディア保存部55がさらに設けられている。外部メディア保存部55は、カードリーダ15に接続されたメモリカードMCに、ログデータLDを保存する。外部メディア保存部55は、ノーマルストレージUSの一部として、メモリカードMCの記憶領域を使用する。メモリカードMCによってノーマルストレージUSが拡張される場合、ログデータLDは、記憶部13及びメモリカードMCの両方に保存されてもよく、又はメモリカードMCのみに記憶されてもよい。
オーディタ60のデータ検証部62は、メモリカードMCに保存されたログデータLDに対しても、改竄等の異常の有無を、ブロックハッシュ値HvBを用いて検証可能である。一例として、データ検証部62は、カードリーダ15へのメモリカードMCの接続をトリガとし、メモリカードMCに保存されたログデータLDを読み出す。そしてデータ検証部62は、読み出したログデータLDに基づき、ブロックチェーンBCに従う順序でハッシュ値の再計算を行い、最終ブロックLBのハッシュ値を取得する。
データ検証部62は、再計算した最終ブロックLBのハッシュ値が、セキュアストレージTSのブロックハッシュ値HvBと一致する場合、メモリカードMC内のログデータLDが正常であると判定する。対して、再計算した最終ブロックLBのハッシュ値が、セキュアストレージTSのブロックハッシュ値HvBと一致しない場合、データ検証部62は、メモリカードMC内のログデータLDに改竄の可能性があると異常判定する。
ここまで説明した第二実施形態でも、セキュアストレージTSに記憶させたブロックハッシュ値HvBを用いることで、信用性を確保しつつログデータLDを保存することが可能になる。
加えて第二実施形態では、ログデータLDがメモリカードMCに保存可能であり、データ検証部62は、メモリカードMCに保存されたログデータLDの改竄の有無を、ブロックハッシュ値HvBを用いて検証できる。以上によれば、ログデータLDの信用性を損なわないようにしつつ、ログデータLDを保存するストレージ領域の拡張が可能になる。
尚、第二実施形態では、メモリカードMCが「外部ストレージ」に相当し、カードリーダ15が「ストレージ接続部」に相当し、外部メディア保存部55が「外部領域保存部」に相当する。
(他の実施形態)
以上、本開示の複数の実施形態について説明したが、本開示は、上記実施形態に限定して解釈されるものではなく、本開示の要旨を逸脱しない範囲内において種々の実施形態及び組み合わせに適用することができる。
上記実施形態のオーディタ60は、ノーマルワールドNWで作動していた。しかし、上記実施形態の変形例1において、オーディタ60は、セキュアワールドSWで作動する。以上のように、セキュアワールドSWの演算リソースに余裕がれば、変形例1のように、オーディタ60をセキュアワールドSWに配置してもよい。この場合、オーディタ60を監視するオブザーバ70の機能は、省略可能となる。
上記実施形態の変形例2では、バックアップサーバBSにバックアップデータを送信する機能が省略されている。こうした形態の車載ECU100は、コネクテッドカーではない車両Aにも搭載可能となる。さらに、変形例2の車載ECU100は、メモリカードMCにバックアップデータを保存可能である。車載ECU100は、記憶部13よりなるノーマルワールドNWのログデータLDに異常が生じた場合に、メモリカードMCのバックアップから、ログデータLDを復旧可能である。
上記実施形態の変形例3では、取得データの一部のみが、ブロックチェーンBCに紐づけた状態で保存される。こうした変形例3のように、取得データの重要度に応じて、保護された状態で保存するログデータLDと、保護されない状態で保存するログデータLDとが選別されてもよい。さらに、ストレージ容量を削減するため、一部のログデータLDが、例えば古いデータから順に削除されてもよい。加えて、データ容量削減のために、権限の与えられたユーザによるデータの削除が可能とされていてもよい。
上記第二実施形態の変形例4では、メモリカードMCに替えて、車載通信ネットワークに接続された記憶装置が、外部ストレージとして使用される。さらに、上記実施形態の変形例5では、メモリカードMCに替えて、車載ECU100とペアリングされたユーザ端末の記憶部が、外部ストレージとして使用される。以上の変形例4,5のように、外部ストレージは、メモリカードMCに限定されない。データ検証部62は、種々の外部メディアに保存されたログデータLDに対して、ブロックハッシュ値HvBを用いた検証処理を実行可能である。
上記実施形態の変形例6では、ロガー処理におけるログデータLDのハッシュ値の計算タイミングが異なっている。具体的に、変形例6のロガー処理では、ログデータLDが指定数又は指定容量に到達したと判定した場合に、一つのブロックに組み込む全てのログデータLDの各ハッシュ値を計算する。以上のように、全てのログデータLDが揃ってから、それらのデータのハッシュを一気に計算するフローが採用されてもよい。
データ保存装置によって保存可能なデータは、テキストデータに限定されない。ノーマルストレージUSの容量に応じて、例えば音声データ、画像データ及び映像データ等の保存が可能であってもよい。さらに、ブロックチェーンBCの個々のブロックに格納されるデータも、適宜変更されてよい。
上記実施形態の車載ECU100にて使用されるハッシュ関数は、暗号学的ハッシュ関数である。暗号学的ハッシュ関数は、違う入力から同一のハッシュ値を出力することがなく、且つ、出力されたハッシュ値から入力を推測することが実質不可能という特性を有している。SHA−2の一つである上述のSHA−256に替えて、SHA−1、SHA−2及びSHA−3の各アルゴリズムが、必要とされる出力長(ビット数)に合わせて適宜使用されてよい。
車載ECU100を搭載する車両Aは、特定のオーナーによって個人所有され、当該オーナー等による使用を想定されたオーナーカーであってよい。オーナーカーへの適用によれば、詐称から保護された状態で蓄積されるユーザの運転履歴を示すログデータLDは、例えば運転状況に応じて保険料を設定するサービス業者にとって、高い価値を有するようになる。
また車載ECU100を搭載する車両は、レンタカー用の車両、有人タクシー用の車両、ライドシェア用の車両、貨物車両及びバス等であってもよい。さらに、モビリティサービスに用いられるドライバーレス車両に、車載ECU100が搭載されてもよい。今後のモビリティサービスの拡がりに伴い、車載ECU100にて蓄積されるログデータLDの重要性は、いっそう大きくなると想定される。
さらに、データ保存装置の機能を備えたECUは、車両とは異なる移動体にも搭載可能である。例えば、作業現場で運用される重機、アミューズメント施設等に配列された運転遊具、鉄道車両、トラム、及び航空機等に、データ保存装置の機能を備えたECUは搭載可能である。
上記実施形態にて、車載ECU100によって提供されていた各機能は、ソフトウェア及びそれを実行するハードウェア、ソフトウェアのみ、ハードウェアのみ、あるいはそれらの複合的な組合せによっても提供可能である。こうした機能がハードウェアとしての電子回路によって提供される場合、各機能は、多数の論理回路を含むデジタル回路、又はアナログ回路によっても提供可能である。
上記実施形態の各プロセッサは、CPU(Central Processing Unit)及びGPU(Graphics Processing Unit)等の演算コアを少なくとも一つ含む構成であってよい。さらに、プロセッサは、FPGA(Field-Programmable Gate Array)及び他の専用機能を備えたIPコア等をさらに含む構成であってよい。
上記実施形態の記憶部として採用され、本開示のデータ保存方法に関連した各プログラムを記憶する記憶媒体の形態は、適宜変更されてよい。例えば上記第二実施形態のように、記憶媒体は、回路基板上に設けられた構成に限定されず、メモリカード等の形態で提供され、スロット部に挿入されて、コンピュータのバスに電気的に接続される構成であってよい。さらに、記憶媒体は、コンピュータへのプログラムのコピー基となる光学ディスク及びのハードディスクドライブ等であってもよい。
本開示に記載の制御部及びその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサを構成する専用コンピュータにより、実現されてもよい。あるいは、本開示に記載の装置及びその手法は、専用ハードウェア論理回路により、実現されてもよい。もしくは、本開示に記載の装置及びその手法は、コンピュータプログラムを実行するプロセッサと一つ以上のハードウェア論理回路との組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されていてもよい。