JP2018073245A - 検査装置、検査システム、情報処理装置、検査方法およびコンピュータプログラム - Google Patents

検査装置、検査システム、情報処理装置、検査方法およびコンピュータプログラム Download PDF

Info

Publication number
JP2018073245A
JP2018073245A JP2016214554A JP2016214554A JP2018073245A JP 2018073245 A JP2018073245 A JP 2018073245A JP 2016214554 A JP2016214554 A JP 2016214554A JP 2016214554 A JP2016214554 A JP 2016214554A JP 2018073245 A JP2018073245 A JP 2018073245A
Authority
JP
Japan
Prior art keywords
data
inspection
inspected
rom
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016214554A
Other languages
English (en)
Inventor
小林 浩二
Koji Kobayashi
浩二 小林
安齋 潤
Jun Anzai
潤 安齋
藤村 一哉
Kazuya Fujimura
一哉 藤村
正人 田邉
Masato Tanabe
正人 田邉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Intellectual Property Management Co Ltd
Original Assignee
Panasonic Intellectual Property Management Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Intellectual Property Management Co Ltd filed Critical Panasonic Intellectual Property Management Co Ltd
Priority to JP2016214554A priority Critical patent/JP2018073245A/ja
Publication of JP2018073245A publication Critical patent/JP2018073245A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】所定の装置における不正プログラムの有無を当該装置の外部から判定することの精度を向上させる。【解決手段】IVI装置14は、周辺機器16のメモリの全領域に格納されたデータに基づく判定データを記憶する。IVI装置14は、所定の検査タイミングにおいて、周辺機器16のメモリの全領域に格納されたデータを取得して、そのデータに基づいて検査データを導出する。IVI装置14は、検査タイミングにおいて導出した検査データと、予め記憶した判定データとが不一致の場合に、周辺機器16が異常と判定する。【選択図】図1

Description

本発明はデータ処理技術に関し、特に、検査装置、検査システム、情報処理装置、検査方法およびコンピュータプログラムに関する。
車両で実行されたプログラム更新の正当性を検証するプログラム更新システムが提案されている(例えば特許文献1参照)。このプログラム更新システムでは、ゲートウェイが、サーバから提供された更新データをECU(Electronic Control Unit)へ送信する。ECUは、更新データに含まれる更新制御プログラムのダイジェスト値を算出し、そのダイジェスト値をゲートウェイへ送信する。ゲートウェイはダイジェスト値をサーバへ送信する。そして、このダイジェスト値に基づいて、サーバは、ECUの更新が正常に終了したか否かを判定する。
特開2015−103163号公報
特許文献1に記載の技術では、ECUに不正プログラムが存在する場合、ECUが正しく更新されなくても、その不正プログラムが、更新データに含まれる更新制御プログラムのダイジェスト値を算出し、そのダイジェスト値をゲートウェイへ送信することで、ECUの更新が正常に終了したとサーバが判定してしまう。すなわち、ECUが不正プログラムで動作していること(なりすまし)を、サーバなどECUの外部から正しく判定できないことがあった。
本願発明は上記課題に鑑みたもので、所定の装置における不正プログラムの有無を当該装置の外部から判定する精度(言い換えれば正確さ)を向上させることを主な目的とする。
上記課題を解決するために、本発明のある態様の検査装置は、被検査装置のメモリの全領域に格納されたデータに基づく判定データを記憶する記憶部と、所定の検査タイミングにおいて、被検査装置のメモリの全領域に格納されたデータを取得する取得部と、取得部により取得されたデータに基づいて検査データを導出する導出部と、導出部により導出された検査データと、記憶部に予め記憶された判定データとが不一致の場合に、被検査装置が異常と判定する判定部と、を備える。
本発明の別の態様は、検査システムである。この検査システムは、検査装置と被検査装置とを備える。被検査装置のメモリに格納されたデータは、被検査装置の動作を定めたプログラムのデータと、プログラムのデータが未格納の空き領域に全てが0または1で構成されたデータあるいは所定のパターンの繰り返しで構成されたデータとは異なるデータとが設定されたものであり、被検査装置は、メモリの全領域に格納されたデータに基づいて検査データを導出する導出部と、導出部により導出された検査データを検査装置へ送信する送信部と、を含む。検査装置は、データに基づく判定データを記憶する記憶部と、被検査装置から送信された検査データと、記憶部に予め記憶された判定データとが不一致の場合に、被検査装置が異常と判定する判定部と、を含む。
本発明のさらに別の態様は、情報処理装置である。この装置は、メモリに格納されたデータの正常性が検査される被検査装置のメモリに格納されるデータを生成する生成部と、生成部により生成されたデータを外部装置へ出力する出力部と、を備える。データは、被検査装置の動作を定めたプログラムのデータと、プログラムのデータが未設定の空き領域に全てが0または1で構成されたデータあるいは所定のパターンの繰り返しで構成されたデータとは異なるデータとが設定されたものである。
本発明のさらに別の態様は、検査方法である。この方法は、予め記憶された判定データを用いて被検査装置の正常性を検査する検査装置が、所定の検査タイミングにおいて、被検査装置のメモリの全領域に格納されたデータを取得し、取得されたデータに基づいて検査データを導出し、導出された検査データと、予め記憶された判定データとが不一致の場合に、被検査装置が異常と判定する。
なお、以上の構成要素の任意の組合せ、本発明の表現を、コンピュータプログラム、コンピュータプログラムを記録した記録媒体、本装置を搭載した車両などの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、所定の装置における不正プログラムの有無を当該装置の外部から判定する精度(言い換えれば正確さ)を向上させることができる。
第1実施例の検査システムの構成を示す図である。 図1の周辺機器のハードウェア構成を示す図である。 図1の周辺機器の機能構成を示すブロック図である。 図1のIVI装置のハードウェア構成を示す図である。 図1のIVI装置の機能構成を示すブロック図である。 IVI装置の動作を示すフローチャートである。 図7(a)−(c)は被検査装置のROMに格納されるデータを模式的に示す図である。 第2実施例の更新データ生成装置の機能構成を示すブロック図である。 更新データ生成装置の動作を示すフローチャートである。 図10(a)−(c)は被検査装置のROMに格納されるデータの構成を模式的に示す図である。 図11(a)−(d)は被検査装置のROMに格納されたデータの読み出し方法を模式的に示す図である。 応答待ち時間制限を施したIVI装置の動作を示すフローチャートである。 図13(a)(b)は第2変形例において周辺機器のROMに格納される更新データの構成を模式的に示す図である。 チャレンジ・レスポンス型のデータ送受の構成を模式的に示す図である。
(第1実施例)
第1実施例の構成を詳細に説明する前に、第1実施例の概要を述べる。
車両には多くの電子機器が搭載され、それらの電子機器を制御する多くのECUが搭載されている。ECUの中には、セキュリティ能力が脆弱で、不正に改ざんされたプログラムを検出・動作させないためのセキュアブート機能または改ざん検出機能がないものもある。言い換えれば、自己正当性を保障できないECUが存在する。今後、車両における情報セキュリティの向上が一層求められる中、自己正当性を保障できないECU(検査対象となるECUであり、以下「被検査装置」とも呼ぶ。)の正当性を、当該ECUの外部の装置(以下「検査装置」とも呼ぶ。)により確認する必要がある。なお、検査装置は、自己正当性が保障できる装置である。
既述したように、被検査装置自身が所定の規則にしたがって生成したダイジェスト値に基づいて被検査装置の正当性を判定する方式では、正当性が保障されたプログラムでダイジェスト値の正当性を確認しない限り、その判定結果が必ずしも正しいとは言えない。例えば、被検査装置に侵入した不正プログラムが、被検査装置が正常であることを示すダイジェスト値を生成またはあらかじめ記録して返信すれば、検査装置は被検査装置を正常と判定してしまうからである。そこで、第1実施例の検査装置は、被検査装置のメモリの全領域に格納されたデータ(言い換えればメモリに格納された全データ)を取得し、そのデータに基づいて被検査装置の正常性を判定する。
具体的には、第1実施例の検査装置は、被検査装置のメモリの全領域に本来格納されているべきデータに基づいて予め生成された期待値としての判定データを予め記憶しておく。検査装置は、検査タイミングにおいて、被検査装置のメモリの全領域に格納されたデータを取得し、取得データに基づいて新たな検査データを導出する。検査装置は、新たな検査データが予め記憶した期待値としての判定データと不一致であれば、被検査装置を異常と判定する。
実施例での判定データおよび検査データは、ハッシュ関数により生成されるハッシュ値とするが、これに限定されない。例えば、判定データおよび検査データは、MAC(Message Authentication Code)関数により生成される暗号MAC値でもよく、また、所定の生成多項式により生成されるCRC値でもよい。
図1は、第1実施例の検査システム10の構成を示す。検査システム10は、車両12に搭載されたIVI(In-Vehicle Infotainment)装置14と周辺機器16を備える。IVI装置14と周辺機器16は、車載ネットワーク18を介して接続される。車載ネットワーク18は、CAN(Controller Area Network)、CAN FD(CAN with Flexible Data rate)、またはイーサネット(登録商標)であってもよい。
周辺機器16は、自己正当性を保障できない上記の被検査装置である。周辺機器16は、例えばメーター、ヘッドアップディスプレイ等であってもよい。IVI装置14は、周辺機器16を検査する上記の検査装置であり、自己正当性を保障できる検査装置である。IVI装置14は、次世代車載情報通信装置とも言え、カーナビゲーションシステムとカーオーディオを含む比較的高度な情報処理を実行可能な装置である。IVI装置14は、少なくともハッシュ関数(SHA−1等)またはMAC値(AES−CMAC等)の演算能力を有する。その一方、周辺機器16の演算能力はIVI装置14より低く、ハッシュ関数を演算する暗号ハードウェアを持たず、ソフトウェア演算では時間がかかり、通信応答性に支障をきたす。
検査システム10は、PC等の情報処理装置である更新データ生成装置20をさらに備える。更新データ生成装置20は、周辺機器16のメモリ(後述のROM)に格納される、周辺機器16の動作を定めたプログラムを含む更新データを生成する。更新データのサイズは、周辺機器16のメモリのサイズ(実施例ではROMの記憶領域のサイズ)に設定される。
また、更新データ生成装置20は、所定のハッシュ関数にしたがって更新データのハッシュ値(ハッシュ演算方式により決まるサイズの結果)を生成する。このハッシュ値は、判定データとも言え、IVI装置14のメモリに格納される。更新データおよび更新データサイズも同様に、IVI装置14のメモリに格納される。不図示のサーバを介してIVI装置14へ提供されてもよい。また、更新データは、USBメモリ等の所定の記録メディアを介してIVI装置14へ導入されてもよい。更新データ、更新データのハッシュ値、および更新データサイズも、これらの手段によりIVI装置14へ導入されてもよい。なお、更新データ、更新データのハッシュ値、および更新データサイズのうち少なくとも更新データは、IVI装置14を経由して、周辺機器16へ書き込まれる。
図2は、図1の周辺機器16のハードウェア構成を示す。周辺機器16は、ECU30を備える。ECU30は、CPU32、RAM34、ROM36、通信IF38を含む。ROM36は、図1の更新データが格納され、また、格納データの正常性がIVI装置14により確認される。ROM36は、書き換え可能なROMであり、例えばEEPROMまたはフラッシュメモリであってもよい。典型的には、ROM36のサイズは、数Mバイト〜10Mバイト程度である。通信IF38は、車載ネットワーク18を介してIVI装置14と接続される
図3は、図1の周辺機器16の機能構成を示すブロック図である。周辺機器16は、受信部40、処理部42、送信部44を備える。本明細書のブロック図において示される各ブロックは、ハードウェア的には、コンピュータのCPU・メモリをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。
例えば、図3の各ブロックに対応するモジュールを含むコンピュータプログラムが周辺機器16のROM36に格納されてもよい。周辺機器16のCPU32は、コンピュータプログラムのバイナリデータをROM36からRAM34に適宜読み出して実行することにより、各ブロックの機能を発揮してもよい。
受信部40は、車載ネットワーク18を介して、外部装置(例えばIVI装置14)から送信されたコマンドデータを受信する。処理部42は、受信部40により受信されたコマンドデータに応じたデータ処理を実行する。送信部44は、処理部42によるデータ処理結果に関する応答データを、コマンドデータ送信元の外部装置へ送信する。
処理部42は、ROM更新部46とROM読出部48を含む。ROM更新部46は、ROM更新コマンドにしたがって、ROM更新コマンドとともに受信された更新データをROM36へ書き込む。なお、ROM更新部46は、IVI装置14からROM更新コマンドが入力された場合に、車載ネットワーク18を介してIVI装置14から更新データを読み出し、ROM36へ上書き保存してもよい。
ROM読出部48は、ROM読み出しコマンドにしたがって、当該コマンドで指定されたROMのアドレスから、当該コマンドで指定されたサイズのデータを読み出す。送信部44は、ROM読出部48により読み出されたROMのデータを、ROM読み出しコマンドの送信元の装置(実施例ではIVI装置14)へ送信する。
図4は、図1のIVI装置14のハードウェア構成を示す。IVI装置14は、ECU50を備える。ECU50は、CPU52、RAM54、ROM56、通信IF58を含む。RAM54のサイズは、周辺機器16のROM36の全データが展開可能なように、周辺機器16のROM36のサイズ以上(例えば512MB等)である。通信IF58は、車載ネットワーク18を介して周辺機器16と接続される。
図5は、図1のIVI装置14の機能構成を示すブロック図である。IVI装置14は、サイズ記憶部60、ハッシュ値記憶部62、ROMデータ記憶部64、ROMデータ取得部70、ハッシュ値導出部72、状態判定部74、判定結果出力部76、自己正当性検証部77、コマンド送信部78、応答受信部79を備える。
図5の各ブロックに対応するモジュールを含むコンピュータプログラムが、記録メディアに格納され、その記録メディアを介してIVI装置14のROM56にインストールされてもよい。IVI装置14のCPU52は、ROM56に格納されたコンピュータプログラムをRAM54へ適宜読み出して実行することにより、各ブロックの機能を発揮してもよい。自己正当性検証部77は、IVI装置14のプログラムの正当性を保障するための所定の処理を実行する。
サイズ記憶部60は、周辺機器16における検査対象のメモリであるROM36のサイズを示すデータを記憶する記憶領域である。ハッシュ値記憶部62は、周辺機器16のROM36に格納されるデータ(上記の更新データ)のハッシュ値を記憶する記憶領域である。既述したように、更新データは、周辺機器16のROM36のサイズを有する。したがって、ハッシュ値記憶部62は、周辺機器16のROM36の全領域に格納されるデータのハッシュ値であり、周辺機器16のROM36に不正プログラムや改ざん等がない場合のハッシュ値の期待値を記憶する。
ROMデータ記憶部64は、周辺機器16から取得されたROM36の格納データであるROMデータを記憶する記憶領域である。ROMデータは、周辺機器16のROM36のサイズを有するデータであり、検査時点でROM36に実際に格納されているデータである。サイズ記憶部60およびハッシュ値記憶部62はROM56により実現され、ROMデータ記憶部64はRAM54により実現されてもよい。また、ROMデータ記憶部64は、ROMデータ取得部70に含まれる構成としてもよい。
サイズ記憶部60は、所定のサーバまたは更新データ生成装置20等の外部装置から、周辺機器16のROM36のサイズを示すデータを取得して記憶する。
ハッシュ値記憶部62は、所定のサーバまたは更新データ生成装置20等の外部装置から、ROM36の更新データのハッシュ値(判定データとも言える)を取得して記憶する。IVI装置14に接続されたUSBメモリ等の記録メディアからハッシュ値を読み出して記憶してもよい。
ROMデータ取得部70は、所定の検査タイミングに達した場合に、被検査装置のメモリの全領域に格納されたデータを取得する。検査タイミングは、周辺機器16のROM36に格納されるデータの更新直前または更新直後(いわゆるリプログラミングの直前または直後)でもよい。また、車両12においてイグニッションがオフからオンに切り替えられたとき(典型的にはエンジンまたはモーターの起動時)でもよい。さらに、検査タイミングは、外部機器が周辺機器16(ECU30)にアクセスするときでもよい。さらに、検査タイミングは、所定の日付または時刻になったときでもよく、1日1回、週に1回等の定期的でもよい。この場合、IVI装置14は通信や放送等で送信された正当性の保障された日時情報と同期した正しい時刻を持つ必要がある。自己正当性検証部77は、日時の正当性を保障するための所定の処理を実行してもよい。さらに、検査タイミングは、所定の装置やユーザにより周辺機器16の異常が検出された場合でもよい。
更新データ、ハッシュ値、および更新データサイズは、更新データ生成装置20で署名を付与して、IVI装置14に導入する際に署名検証を実行し、通信間での改ざん検出を実施してもよい。
コマンド送信部78は、各種のデータ処理を指示するコマンドを周辺機器16へ送信する。応答受信部79は、コマンドに対する周辺機器16の応答として、コマンドに応じたデータ処理の結果を周辺機器16から受信する。ROMデータ取得部70は、コマンド送信部78を介して、ROM読み出しコマンドを周辺機器16へ送信する。また、ROMデータ取得部70は、応答受信部79を介して、ROM読み出しコマンドに対する周辺機器16の応答であり、周辺機器16のROM36に格納されたデータを取得する。
実施例のROMデータ取得部70は、周辺機器16のROM36の全領域に格納されたデータをROMデータとして取得する。ROMデータ取得部70は、取得したROMデータをROMデータ記憶部64へ格納する。なお、ROMデータ取得部70は、ROM36のメモリダンプを周辺機器16に要求し、ROM36のメモリダンプデータを周辺機器16から取得してもよい。この場合、ROMデータ取得部70は、メモリダンプデータに基づいてROMデータ(ROM36のイメージ)をローカルのRAM54に展開してもよい。また、ROMデータ取得部70は、周辺機器16のROM36の一部領域に格納されたデータを取得することを複数回繰り返すことにより、ROM36の全領域に格納されたデータを取得してもよい。
ハッシュ値導出部72は、ROMデータ取得部70によるROMデータの取得が完了した場合に、ROMデータ記憶部64に記憶されたROMデータのハッシュ値(検査データとも言える)を導出する。例えば、ハッシュ値導出部72は、SHA−1等の所定のハッシュ関数にROMデータを入力することにより、当該ハッシュ関数から出力されたハッシュ値を導出してもよい。なお、ハッシュ値導出部72がROMデータに対して使用するハッシュ関数は、更新データ生成装置20が更新データに対して使用するハッシュ関数と同じである。
状態判定部74は、ハッシュ値導出部72により導出されたハッシュ値と、予めハッシュ値記憶部62に記憶されたハッシュ値とを照合する。状態判定部74は、両者が一致すれば周辺機器16(もしくはROM36の格納データ)が正常と判定し、両者が不一致であれば周辺機器16(もしくはROM36の格納データ)が異常と判定する。
判定結果出力部76は、状態判定部74による判定結果に基づく所定の後処理を実行する。実施例では、判定結果出力部76は、判定結果を示すデータを所定の外部装置へ出力する。例えば、判定結果出力部76は、周辺機器16が正常であることまたは異常であることを示すデータを所定のサーバへ送信してもよい。また、判定結果出力部76は、状態判定部74による判定結果を示すデータを所定の記憶部へ保存してもよい。また、判定結果出力部76は、判定結果が周辺機器16の異常を示す場合にのみ、アラートの出力等、所定の後処理を実行してもよい。
以上の構成による第1実施例のIVI装置14の動作を説明する。
図6は、IVI装置14の動作を示すフローチャートである。不図示だが、サイズ記憶部60には、周辺機器16のROM36のサイズを示すデータが予め格納される。また、ハッシュ値記憶部62には、周辺機器16のROM36に格納された更新データのハッシュ値(すなわち周辺機器16が正常な場合のハッシュ値の期待値)が予め格納される。所定の検査タイミングに至るまで待機し(S10のN)、所定の検査タイミングに至った場合(S10のY)、ROMデータ取得部70は、RAM54に、周辺機器16のROM36のサイズ分の領域をROMデータ記憶部64として確保する(S12)。
ROMデータ取得部70は、周辺機器16のROM36におけるデータの読み出しアドレスと、読み出しサイズを決定する(S14、S16)。ROMデータ取得部70は、S14で決定したアドレスから、S16で決定したサイズのデータを読み出すように指示するROM読み出しコマンドを周辺機器16へ送信する(S18)。ROMデータ取得部70は、ROM読み出しコマンドへの応答として、周辺機器16からROM36に格納されたデータを取得し、ROMデータ記憶部64へ格納する(S20)。ROM36に格納されたデータの一部が未取得であれば(S22のN)、S14に戻り、未取得のデータを取得する。
ROM36の全領域に格納されたデータの取得が完了した場合(S22のY)、ハッシュ値導出部72は、ROMデータ記憶部64に格納されたROMデータを所定のハッシュ関数へ入力し、ROMデータのハッシュ値を取得する(S24)。状態判定部74は、S24で取得されたハッシュ値と、ハッシュ値記憶部62に予め格納されたハッシュ値とを比較する。状態判定部74は、両者が一致すれば(S26のY)、周辺機器16を正常と判定し(S28)、両者が不一致であれば(S26のN)、周辺機器16を異常と判定する(S30)。判定結果出力部76は、判定結果に基づく後処理を実行する(S32)。
第1実施例のIVI装置14によると、周辺機器16のROM36の全領域のデータに基づいて周辺機器16の正常性を判定する。周辺機器16のROM36内に不正なプログラムが存在すれば、取得した全領域のデータに基づくハッシュ値がその期待値と不一致になるため、IVI装置14は周辺機器16が異常と判定できる。また、ROM36内の不正プログラムが、正常なROMデータを生成し、返信するための作業領域の余地を無くし、当該不正プログラムによるなりすましを防止しやすくなる。
(第2実施例)
第2実施例では、周辺機器16における不正プログラムの有無をIVI装置14が判定する精度(言い換えれば正確さ、または完全性)を一層向上させる技術を示す。
図7(a)−(c)は、被検査装置のROMに格納されるデータを模式的に示す。図7(a)は、ROMに格納される従来のデータ構成を示している。ROMの記憶領域は、被検査装置の動作を定めたプログラムが格納された領域であるプログラム領域80と、プログラムが未格納の領域(言い換えれば未使用の領域)である空き領域82に分かれる。空き領域82には、通常、空き領域を示す所定値が設定される。例えば、空き領域82に、オール0のビット列が設定されることがあり、また、オール1のビット列が設定されることもある。
図7(b)は、被検査装置のROMに攻撃プログラム(言い換えれば不正プログラム)が存在する例を示している。攻撃者は、空き領域82がオール0のビット列であることを知っていることとする。攻撃者は、攻撃プログラム1のアドレスのデータを空き領域82へ退避しつつ、攻撃プログラム1をプログラム領域80に格納し、さらに攻撃プログラム2を空き領域82に格納する。攻撃プログラム1の格納領域(プログラム領域80)のメモリダンプが要求された場合、攻撃プログラム1は退避データを返す。また、空き領域82のメモリダンプが要求された場合、攻撃プログラム1は、空き領域82に相当するオール0ビット列のデータを、空き領域82のデータになりすまして返す。その結果、検査装置は、被検査装置のROM内に攻撃プログラムが存在することを検出することが困難になってしまう。
図7(c)は、第2実施例においてROMに格納されるデータ構成を示している。第2実施例では、被検査装置のROMに当初格納するオリジナルデータ(すなわち更新データ)の構成が1つの特徴になる。具体的には、オリジナルデータにおけるプログラム領域80以外の空き領域82に、空き領域に対して通常設定されるデータとは異なるデータを設定する。言い換えれば、空き領域82に、空き領域を示す規則的なデータとは異なるデータを設定する。すなわち、空き領域82に、全てが0または1で構成されたデータあるいは所定のパターンの繰り返しで構成されたデータとは異なるデータを設定する。第2実施例では、空き領域82に、並びに規則性がないデータであり、および/または、アルゴリズム化が困難なデータである乱数列を設定する。
第2実施例における検査システム10、IVI装置14、周辺機器16の構成は、第1実施例と同様である。以下、第1実施例と異なる構成として、更新データ生成装置20の構成を詳細に説明する。
図8は、第2実施例の更新データ生成装置20の機能構成を示すブロック図である。更新データ生成装置20は、サイズ記憶部106、プログラム記憶部108、乱数生成部114、ROMバイナリ生成部116、更新データ生成部118、ハッシュ値導出部120を備える。
図8の各ブロックに対応するモジュールを含むコンピュータプログラムが、記録メディアに格納され、その記録メディアを介して更新データ生成装置20のストレージにインストールされてもよい。更新データ生成装置20のCPUは、ストレージに格納されたコンピュータプログラムをメインメモリへ適宜読み出して実行することにより、各ブロックの機能を発揮してもよい。図8のサイズ記憶部106およびプログラム記憶部108は、更新データ生成装置20のストレージやメモリがデータを記憶することで実現されてもよい。
サイズ記憶部106は、IVI装置14のサイズ記憶部60に対応し、周辺機器16における検査対象のメモリであるROM36のサイズを示すデータを記憶する。プログラム記憶部108は、周辺機器16の動作を定めたプログラムであり、周辺機器16に実行させるべき1つ以上のプログラムのデータを記憶する。実施例では、周辺機器16で実行可能なコンパイル済のバイナリコードを記憶するが、変形例としてソースコードを記憶し、後述のROMバイナリ生成部116等が適宜周辺機器16で実行可能なバイナリコードへコンパイルしてもよい。
なお、サイズ記憶部106に記憶されるサイズのデータと、プログラム記憶部108に記憶されるプログラムのデータは、周辺機器16のプログラム作成者等が、ハードウェア仕様から、それらのデータを更新データ生成装置20へ登録してもよい。
乱数生成部114は乱数を生成する。ここでいう乱数は、数学的な意味での真正乱数でなくてもよい。例えば、乱数シード値を適切に設定し、乱数の再現性がないようにした、ハードウェア乱数生成器を利用したハードウェア乱数や、乱数生成アルゴリズムを利用したソフトウェア乱数などの疑似乱数でもよい。
ROMバイナリ生成部116は、プログラム記憶部108に記憶された1つ以上のプログラムをまとめたデータであるROMバイナリを生成する。ROMバイナリは、1つ以上のプログラムの実行順序を定めたデータを含んでもよく、周辺機器16のROM36における所定形式の管理データを含んでもよい。
更新データ生成部118は、周辺機器16のROM36のサイズを有するデータであり、ROM36に格納されるデータである更新データを生成する。図7(c)で示したように、更新データ生成部118は、ROMバイナリ生成部116により生成されたROMバイナリを更新データの一部に設定する。また、更新データ生成部118は、更新データにおけるROMバイナリが未設定の空き領域82に、乱数生成部114により生成された乱数列を設定する。
ハッシュ値導出部120は、更新データ生成部118により生成された更新データのハッシュ値を取得する。例えば、ハッシュ値導出部120は、SHA−1等の所定のハッシュ関数に更新データを入力することにより、当該ハッシュ関数から出力されたハッシュ値を導出することで取得してもよい。
更新データ生成部118は、生成した更新データと更新データサイズ情報とを所定の外部装置へ出力する。例えば、更新データ生成部118は、更新データを含むROM更新コマンドを周辺機器16へ送信し、周辺機器16のROM36に更新データを記憶させてもよい。また、更新データ生成部118は、更新データと更新データサイズ情報をIVI装置14へ送信し、IVI装置14から周辺機器16のROM36に更新データを登録させてもよい。また、更新データ生成部118は、更新データを周辺機器16へ提供する一方、更新データサイズ情報をIVI装置14へ提供する所定のサーバに対して更新データおよび更新データサイズ情報を登録してもよい。また、更新データ生成部118は、ユーザの指示に応じて、USBメモリ等の所定の記録メディアへ更新データおよび更新データサイズ情報を出力してもよい。
ハッシュ値導出部120は、導出したハッシュ値を所定の外部装置へ出力する。例えば、ハッシュ値導出部120は、ハッシュ値をIVI装置14へ送信し、そのROM56に記憶させてもよい。また、ハッシュ値導出部120は、ハッシュ値をIVI装置14へ提供する所定のサーバに対してハッシュ値を登録してもよい。また、ハッシュ値導出部120は、ユーザの指示に応じて、USBメモリ等の所定の記録メディアへハッシュ値を出力してもよい。既述したように、更新データのハッシュ値は、IVI装置14のハッシュ値記憶部62に格納されて、周辺機器16の正常性判定時に参照される。
以上の構成による更新データ生成装置20の動作を説明する。
図9は、更新データ生成装置20の動作を示すフローチャートである。不図示だが、サイズ記憶部106には、周辺機器16のROM36のサイズを示すデータが予め格納される。また、プログラム記憶部108には、周辺機器16の動作を定めたプログラムであり、更新データに含めるべきプログラムが予め格納される。ユーザから更新データの生成指示が入力された場合等、更新データを生成すべきタイミングにおいて、更新データ生成部118は、周辺機器16のROM36のサイズ分の記憶領域(ここでは「更新データ領域」と呼ぶ。)をメモリ(RAM等)に確保する(S42)。
乱数生成部114は、乱数を生成し、更新データ生成部118は、更新データ領域の全領域に、乱数生成部114により生成された乱数列を設定する(S44)。ROMバイナリ生成部116は、プログラム記憶部108に保持されたプログラムを含むROMバイナリを生成する(S46)。更新データ生成部118は、乱数列が設定された更新データ領域の少なくとも一部領域にROMバイナリを上書き保存することにより更新データを生成する(S48)。これにより、図7(c)に示す構成の更新データが生成される。更新データ生成部118は、更新データを所定の外部装置へ送信する(S50)。更新データ生成装置20で生成された更新データは、最終的には周辺機器16のROM36に格納される。
ハッシュ値導出部120は、更新データのハッシュ値を取得する(S52)。ハッシュ値導出部120は、更新データのハッシュ値を所定の外部装置へ送信する(S54)。更新データ生成装置20で生成されたハッシュ値は、最終的にはIVI装置14のハッシュ値記憶部62に格納される。
第2実施例では、検査対象となる周辺機器16のROM36において、その空き領域に乱数列が設定される。これにより、ROM36内に存在する不正プログラムが、空き領域のメモリダンプが要求された場合に、単純に0のビット列を返すことで正常になりすますことができなくなる。また、乱数列はアルゴリズム化が困難であるため、乱数列より小さいサイズの不正プログラムを作成することを困難にできる。さらにまた、乱数列はエントロピーが高く、一般的にデータ圧縮比(言い換えれば圧縮効率)が低い。そのため、ROM36の空き領域を圧縮して空いた領域に、プログラム領域80の元データ、または、不正プログラムを配置することを困難にすることができる。
第2実施例では、周辺機器16のROM36の空き領域に乱数列を設定したが、空き領域に設定するデータは乱数列に制限されない。既述したように、空き領域に設定するデータは、全てが0または1で構成されたデータあるいは所定のパターンの繰り返しで構成されたデータとは異なるデータであればよい。また、空き領域に設定するデータは、アルゴリズム化が困難で、および/または、エントロピーが高いデータがより好ましい。このようなデータの例として、圧縮済みデータを、周辺機器16のROM36の空き領域に設定してもよい。言い換えれば、更新データ生成装置20は、更新データにおけるプログラムデータを含まない空き領域に、乱数列に代えて圧縮済みデータのビット列を設定してもよい。なお、圧縮済データは、例えば、所定の画像に関するJPEGデータでもよく、更新データのプログラム領域80に設定されるデータ(プログラムデータ)を圧縮したデータでもよい。この変形例においても第2実施例と同様の効果を奏する。
(第3実施例)
第3実施例では、周辺機器16における不正プログラムの有無をIVI装置14が判定する精度(言い換えれば正確さ、または完全性)をより一層向上させる技術を示す。
図10(a)−(c)は、被検査装置のROMに格納されるデータの構成を模式的に示す。被検査装置のROMに格納されたROMバイナリは、一般的に最大60%のサイズまで圧縮することができる。図10(a)は圧縮前の状態を示している。図10(b)は圧縮後の状態を示し、ROMバイナリ(プログラム領域80のデータ)を圧縮して空いた領域を斜線による網掛けで示している。図10(c)で示すように、攻撃者は、ROMバイナリを圧縮して空いた領域に攻撃プログラム1を仕掛ける可能性がある。攻撃プログラム1は、プログラム領域80に対するメモリダンプ要求を受信した場合、ROMバイナリの圧縮データを伸張し、伸張後のROMバイナリを返す。その結果、検査装置は、被検査装置のROM内に攻撃プログラム1が存在することを検出することが困難になってしまう。
そこで、第3実施例の検査装置は、被検査装置からの応答を待つ時間を設けるあるいは短くして制限する。すなわち、上述したように圧縮データを伸張することにより生じる応答の遅延を許容しない。さらに、第3実施例の検査装置は、被検査装置のROMに格納されたデータの読み出しアドレスと読み出しサイズの少なくとも一方をランダムに決定する。
図11(a)−(d)は、被検査装置のROM(実施例では周辺機器16のROM36)に格納されたデータの読み出し方法を模式的に示す。図中の1st〜5thは、データ読み出しの順番を示している。
図11(a)は、第1の読み出し方法であるシーケンシャル固定長読み出しを模式的に示している。シーケンシャル固定長読み出しでは、ROM36の先頭アドレスから、固定サイズのデータを順次読み出していく。例えば、第1実施例および第2実施例では、シーケンシャル固定長読み出しが適用されてもよい。
図11(b)は、第2の読み出し方法であるランダムサイズ読み出しを模式的に示している。ランダムサイズ読み出しでは、ROM36の先頭アドレスから、ランダムに決定したサイズのデータを順次読み出していく。例えば、読み出しの都度、動的に乱数を生成し、生成した乱数に基づいて読み出しサイズを決定してもよい。
図11(c)は、第3の読み出し方法であるランダムアドレス固定長読み出しを模式的に示している。ランダムアドレス固定長読み出しでは、ランダムに決定したROM36のアドレスから、固定サイズのデータを読み出していく。
図11(d)は、第4の読み出し方法であるランダムアドレス・ランダムサイズ読み出しを模式的に示している。ランダムアドレス・ランダムサイズ読み出しでは、ランダムに決定したROM36のアドレスから、ランダムに決定したサイズのデータを読み出していく。第3実施例では、ランダムアドレス・ランダムサイズ読み出しを適用するが、変形例として、ランダムサイズ読み出し、または、ランダムアドレス固定長読み出しを適用してもよい。
なお、ランダムアドレス固定長読み出しと、ランダムアドレス・ランダムサイズ読み出しでは、読み出し領域の重複を許容してもよく、重複を排除してもよい。読み出し領域の重複を許容する場合、ランダムアドレス固定長読み出しでは、図11(c)で示すように、2回目の読み出しの領域と5回目の読み出しの領域が重複してもよい。また、ランダムアドレス・ランダムサイズ読み出しでは、図11(d)で示すように、3回目の読み出しの領域(斜線による網掛け領域)の一部と、5回目の読み出しの領域(縦線による網掛け領域)の一部が重複してもよい。
第3実施例のIVI装置14の機能ブロックは、第1実施例(図5)と同じである。以下、第3実施例のIVI装置14の構成について、第1実施例または第2実施例で説明済みの内容は適宜省略し、上記実施例と異なる点を主に説明する。
ROMデータ取得部70は、周辺機器16のROM36の一部領域に格納されたデータを取得する処理を複数回繰り返すことにより、ROM36の全領域に格納されたデータであるROMデータを取得する。ROMデータ取得部70は、複数回のデータ取得のそれぞれで指定する読み出しアドレスをランダムに決定し、かつ、複数回のデータ取得のそれぞれで指定する読み出しアドレスもランダムに決定する。例えば、ROMデータ取得部70は、更新データ生成装置20の乱数生成部114に対応する乱数生成部を含み、乱数生成部により生成された乱数値に基づいて、読み出しアドレスと読み出しサイズの両方を、規則性がない値に決定してもよい。
状態判定部74は、ROMデータ取得部70がROM読み出しコマンドを周辺機器16へ送信してから、周辺機器16のROM36に格納されたデータが提供されるまでの時間である応答時間を監視する。ROM読み出しコマンドに対する応答時間が、当該ROM読み出しコマンドに設定された読み出しサイズに応じた閾値(以下「待ち時間閾値」とも呼ぶ。)を超過した場合、状態判定部74は、周辺機器16が異常と判定する。
実施例の状態判定部74は、読み出しサイズと、IVI装置14〜周辺機器16間の通信速度に基づいて待ち時間閾値を決定する。例えば、読み出しサイズが100Kバイトで、車載ネットワーク18の通信速度が500Kbps(CAN)の場合、読み出しサイズ/通信速度の1.6秒を待ち時間閾値として決定してもよい。
以上の構成による第3実施例のIVI装置14の動作を説明する。
図12は、図6に対応し、IVI装置14の動作を示すフローチャートである。同図のS60、S62は、図6のS10、S12と同じであるため説明を省略する。ROMデータ取得部70は、第1の乱数値に基づいて読み出しアドレスをランダムに決定し(S64)、別途取得した第2の乱数値に基づいて読み出しサイズをランダムに決定し(S66)、読み出しサイズと通信速度に応じて待ち時間閾値を決定する(S68)。ROMデータ取得部70は、読み出しアドレスと読み出しサイズを指定したROM読み出しコマンドを周辺機器16へ送信する(S70)。
ROM読み出しコマンドを送信後、周辺機器16からROMデータを受信するまでの応答時間が待ち時間閾値を超過した場合(S72のY)、状態判定部74は、周辺機器が異常と判定する(S84)。複数回のデータ取得の途中で応答時間が待ち時間閾値を超過した場合、以降のデータ取得をスキップしてもよい。周辺機器16の応答時間が待ち時間閾値以下であれば(S72のN)、S74へ進む。S74〜S86の処理は、図6のS20〜S32の処理と同じであるため説明を省略する。
第3実施例のIVI装置14によると、図10(a)(b)(c)に関連して説明したように、圧縮したROMバイナリをメモリダンプ時に伸張して返すような攻撃プログラムが周辺機器16のROM36に存在する場合も、周辺機器16の異常を検出しやすくなる。具体的には、圧縮データの伸張にはある程度の時間を要するところ、読み出しサイズに応じた待ち時間閾値を設けることで、周辺機器16の異常(例えばROM36に攻撃プログラムが存在する可能性が高いこと)を待ち時間閾値の超過により検出することができる。
また、第3実施例のIVI装置14は、周辺機器16のROM36の格納データを、ランダムな位置からランダムなサイズ分読み出す。ROM36内の攻撃プログラムが正規のROMバイナリを圧縮した場合、ランダムな位置からランダムなサイズのデータを読み出すためのメモリ確保が難しいため、ROMバイナリを伸張して正規のデータを返信することを困難にできる。また、圧縮データを伸張しつつ、ランダムなアドレスからランダムなサイズのデータを読み出す処理は一般的に時間を要するため、待ち時間閾値の超過により周辺機器16の異常を検出しやすくなる。
以上、本発明を第1〜第3実施例をもとに説明した。これらの実施例は例示であり、それらの各構成要素あるいは各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
第1変形例を説明する。上記第3実施例では、周辺機器16のROMデータを読み出す方式として、ランダムアドレス・ランダムサイズ読み出しを適用した。変形例として、図11(b)に記載のランダムサイズ読み出しを適用してもよく、図11(c)に記載のランダムアドレス固定長読み出しを適用してもよい。いずれの方式を適用した場合も、周辺機器16のROM36に存在する攻撃プログラムが、ROMバイナリの圧縮データを伸張しつつ、ランダムな指定アドレスまたはランダムな指定サイズに応じた正しいデータを返信することを困難にできる。また、制限時間内に正しいデータを返信することを一層困難にできる。
第2変形例を説明する。図13(a)(b)は、第2変形例において周辺機器16のROM36に格納される更新データの構成を模式的に示す。図13(a)は、複数の更新データがROM36に格納される例を示している。更新データ生成装置20は、ROMバイナリと乱数列との組み合わせ(すなわち更新データ)単位にデータサイズとハッシュ値を導出し、IVI装置14は、更新データ単位に導出されたデータサイズとハッシュ値を記憶してもよい。IVI装置14は、複数の更新データのそれぞれについて、更新データのサイズ分のデータを周辺機器16から取得し、取得データのハッシュ値と更新データのハッシュ値を比較してもよい。
図13(b)は、1つの更新データに複数のROMバイナリが含まれる例を示している。更新データ生成装置20は、複数のROMバイナリを含む更新データのデータサイズとハッシュ値を導出し、IVI装置14は、上記更新データのデータサイズとハッシュ値を記憶してもよい。IVI装置14は、上記更新データのサイズ分のデータを周辺機器16から取得し、取得データのハッシュ値と更新データのハッシュ値を比較してもよい。
第3変形例を説明する。IVI装置14と周辺機器16は、チャレンジ・レスポンス型でデータを送受してもよい。図14は、チャレンジ・レスポンス型のデータ送受の構成を模式的に示す。IVI装置14と周辺機器16は、共通鍵である鍵Kを記憶する。また、IVI装置14は、周辺機器16のROMデータの期待値であるハッシュ値Hを記憶する。また、周辺機器16のROM36の全領域には、第2実施例と同様に、ROMバイナリと乱数列とを含む更新データが当初格納される。
本変形例のIVI装置14は、チャレンジ送信部と状態判定部を備える。チャレンジ送信部は実施例のROMデータ取得部70に対応し、状態判定部は実施例の状態判定部74に対応する。また、本変形例の周辺機器16は、ハッシュ値導出部とレスポンス送信部を備える。ハッシュ値導出部は、実施例のハッシュ値導出部72に対応する。
IVI装置14のチャレンジ送信部は、検査タイミングにおいて所定の乱数発生器を用いて乱数値を動的に決定し、その乱数値に基づくチャレンジCを周辺機器16へ送信する。チャレンジCは乱数値そのものでもよい。周辺機器16のハッシュ値導出部は、ROMデータ(すなわちROM36の全領域に格納されたROMバイナリと乱数列)を所定のハッシュ関数に入力し、ROMデータのハッシュ値を取得する。周辺機器16のレスポンス送信部は、所定の規則にてチャレンジとハッシュ値とを連結したデータを鍵Kに基づいて暗号化し、所定サイズの暗号化データをレスポンスデータとしてIVI装置14へ送信する。
IVI装置14の状態判定部は、鍵Kに基づいてレスポンスデータを復号し、復号結果として、チャレンジとハッシュ値とが連結したデータを取得する。チャレンジのデータサイズは既知であるため、状態判定部は、チャレンジとハッシュ値との連結規則にしたがって、復号結果のデータからチャレンジとハッシュ値を抽出する。例えば、復号結果の先頭から所定バイト分をチャレンジとして抽出し、残りの部分をハッシュ値として抽出してもよい。
状態判定部は、(1)チャレンジの送信からレスポンスデータを受信するまでの応答時間が、レスポンスデータのサイズに基づく待ち時間閾値以内であり、かつ、(2)レスポンスデータから抽出したチャレンジが、周辺機器16へ送信したチャレンジと一致し、かつ、(3)レスポンスデータから抽出したハッシュ値が、予め記憶した期待値としてのハッシュ値と一致する場合に周辺機器16が正常と判定する。その一方、状態判定部は、上記(1)〜(3)の少なくとも1つが満たされない場合、周辺機器16が異常と判定する。
第3変形例の態様によると、周辺機器16のROM36に存在する攻撃プログラムが、ROM36の格納データが正常であるように偽装することを困難にできるとともに、周辺機器16からIVI装置14へ提供されるデータ量を低減することができる。また、周辺機器16で生成されたハッシュ値が直接通信網を流れないためセキュリティを一層高めることができる。また、チャレンジは検査の都度決定されるため、攻撃プログラムが予めレスポンスデータを用意しておくことができず、攻撃プログラムがROM36の格納データが正常であるように偽装することを一層困難にできる。
上記第3変形例では、チャレンジ・レスポンス型でデータを送受したが、周辺機器16はIVI装置14へROMデータ(第2実施例のROMバイナリ+乱数列)のハッシュ値を送信する構成であってもよい。この構成においても、周辺機器16のROM36に存在する攻撃プログラムが、ROM36の格納データが正常であるように偽装することを困難にできる。また、上記第3実施例では言及していないが、周辺機器16のROM36には、図13(a)で示したように、複数の更新データが格納されてよい。IVI装置14のチャレンジ送信部は、ROM36に格納された複数の更新データのアドレスをランダムな順序で指定して複数の更新データを順次取得してもよい。IVI装置14の状態判定部は、更新データごとにハッシュ値の比較を実行してもよい。
第4変形例を説明する。IVI装置14のROMデータ取得部70は、車両12のイグニッションがオフからオンへ切り替えられるごとに、周辺機器16のROM36の一部領域に格納されたデータを取得してもよい。言い換えれば、イグニッションがオンにされる毎に、周辺機器16のROMデータの一部を取得していき、所定回数イグニッションがオンにされた場合に、ROM36の全領域のデータ取得を完了してもよい。例えば、図11(a)−(d)のいずれのデータ読み出し方式を適用する場合でも、1回目のイグニッションのオン時に1st領域のデータを取得し、2回目のイグニッションのオン時に2nd領域のデータを取得してもよい。
この態様によると、イグニッションがオンにされたことを契機とする各回の検査処理の時間を短縮でき、検査処理の実行により他の処理の実行が妨げられ、または遅延することを抑制できる。なお、周辺機器16のROM36内に存在しうる不正プログラムが、提供が要求されるデータを予測できないように、読み出しアドレスと読み出しサイズの少なくとも一方をランダムに決定すること(第3実施例の構成)が好ましい。
第5変形例を説明する。IVI装置14は、車両に搭載された複数の被検査装置(周辺機器16、ECU30)のROMの格納データを検査してもよい。IVI装置14は、1回の検査タイミングにおいて、複数の被検査装置に対する検査処理を並行実行もしくは順次実行してもよく、複数回の検査タイミングにおいて、複数の被検査装置に対する検査処理を分散して実行してもよい。また、IVI装置14は、各被検査装置に対する検査結果を外部のサーバ(不図示)へ送信してもよい。
第6変形例を説明する。上記実施例では検査装置をIVI装置14としたが、検査装置はIVI装置14には限られない。例えば、検査装置は、周辺機器16のメモリのデータを書き換えるソフトウェアがインストールされたPC、スマートフォン、タブレット端末等であってもよい。この場合、検査装置と周辺機器16は、USB接続されてもよい。また、検査装置は、車両12外部のサーバであってもよく、この場合、サーバと周辺機器16は、車両12外部のネットワークおよび車載ネットワーク18を介して接続されてもよい。
上記実施例および変形例に記載の技術の適用範囲は、車両12に関連する装置に制限されない。検査装置と被検査装置のいずれについても様々な種類の電子機器(例えばサーバ、PC、スマートフォン、タブレット端末等)にて実現できる。すなわち、上記実施例および変形例に記載の技術によると、様々な種類の電子機器における不正プログラムの有無を当該電子機器の外部から判定する精度(言い換えれば正確さ)を向上させることができる。
第7変形例を説明する。IVI装置14と周辺機器16は車載ネットワーク18を介して接続しているが、間にゲートウェイ装置を介した多段の、車載ネットワーク18構成であってもよい。
IVI装置14では周辺機器16が複数ある場合に、サイズ記憶部60、ハッシュ値記憶部62をテーブル化して記憶し、ROMデータ記憶部64を十分な大きさを確保し、周辺機器16それぞれで共用する構成であってもかまわない。
IVI装置14では周辺機器16のサイズ情報をサイズ記憶部60に、ハッシュ値をハッシュ値記憶部62に記憶するが、初めて周辺機器に書き込む時に、ライトワンス(1回のみ書き込み可能)な記憶領域に、初めて書き込んだフラグ(値)を記録し、このフラグが存在する間は、IVI装置14で周辺機器16の更新データが正常でない限り、更新しない方式を行ってもかまわない。
IVI装置14で周辺機器16の更新結果、S28およびS30、S82およびS84の結果を、不記載のサーバに送信し、サーバにて更新状況を集中監視する方式を行ってもかまわない。
IVI装置14で周辺機器16の更新結果、S30または、S84の異常となった場合に、不記載のログ記録部への保存、不記載のサーバへの通知後の、サーバ(別経路)からの再更新を行ってもかまわない。
工場での製造時に、最初、IVI装置14は、特に他社の周辺機器16を対象とした場合、サイズ記憶部60の値は、機器のハードウェア仕様から入手できるが、ハッシュ値記憶部62の値(ハッシュ値)は持っていない。その後組立工程にて、電源、対象機器と車載ネットワーク18で接続する。この工程で、IVI装置14が、周辺機器16に対して、S12の周辺機器16の全ROMサイズ分のメモリを確保、S44の乱数を生成し、S14〜S22でサイズ記憶部60を読み出し、S48の乱数を含む更新データを生成する。これに対して、S50のハッシュ値を生成し、ハッシュ値をハッシュ値記憶部62に記録する。そして、乱数を含む更新データを周辺機器16に対して書き込みを行う。また、IVI装置14では、不記載のライトワンス(1回のみ書き込み可能)な記憶領域に、乱数を含む更新データを周辺機器16に対して書き込んだことを記録する。このような方法で、組立工場でIVI装置14が周辺機器16に対して、乱数を含む更新データを生成して書き込む方式を行ってもかまわない。
上記の段落0104では、IVI装置14が周辺機器16に対して、乱数を含む更新データを生成して書き込んだが、OBD(On-board diagnostics)経由で周辺機器16のROMを読み出し、OBDと接続したPCで、S48の乱数を含む更新データを生成してもよい。そしてOBD経由で、IVI装置14へ、周辺機器16のサイズ情報をサイズ記憶部60に、ハッシュ値をハッシュ値記憶部62に記憶し、周辺機器16に乱数を含む更新データを更新する方式を行ってもかまわない。
なお、実施例および変形例に記載の技術は、以下の項目によって特定されてもよい。
[項目1]
被検査装置のメモリの全領域に格納されたデータに基づく判定データを記憶する記憶部と、所定の検査タイミングにおいて、被検査装置のメモリの全領域に格納されたデータを取得する取得部と、取得部により取得されたデータに基づいて検査データを導出する導出部と、導出部により導出された検査データと、記憶部に予め記憶された判定データとが不一致の場合に、被検査装置が異常と判定する判定部と、を備える検査装置。
この態様によると、被検査装置における不正プログラムの有無を検査装置が判定する精度(言い換えれば正確さ)を向上させることができる。
[項目2]
データは、被検査装置の動作を定めたプログラムのデータと、プログラムのデータが未格納の空き領域に全てが0または1で構成されたデータあるいは所定のパターンの繰り返しで構成されたデータとは異なるデータとが設定されたものであってもよい。
この態様によると、被検査装置のメモリに存在する不正プログラムが、当該メモリの格納データが正常であるように偽装することを困難にできる。
[項目3]
異なるデータは、乱数列であってもよい。
この態様によると、被検査装置のメモリに存在する不正プログラムが、当該メモリの格納データが正常であるように偽装することを一層困難にできる。
[項目4]
異なるデータは、圧縮済のデータであってもよい。
この態様によると、被検査装置のメモリに存在する不正プログラムが、当該メモリの格納データが正常であるように偽装することを一層困難にできる。
[項目5]
判定部は、取得部が被検査装置にデータの提供を要求してから、当該データが提供されるまでの時間が、要求したデータのサイズに応じた閾値を超過した場合、被検査装置が異常と判定してもよい。
この態様によると、被検査装置のメモリに存在する不正プログラムが、当該メモリの格納データが正常であるように偽装する場合でも、被検査装置の異常を検出しやすくなる。
[項目6]
取得部は、被検査装置のメモリの一部領域に格納されたデータを取得することを複数回繰り返すことにより、当該メモリの全領域に格納されたデータを取得し、取得部は、複数回のデータ取得のそれぞれで指定する読み出しアドレスをランダムに決定してもよい。
この態様によると、被検査装置のメモリに存在する不正プログラムが、当該メモリの格納データが正常であるように偽装することを困難にし、被検査装置の異常を検出しやすくなる。
[項目7]
取得部は、被検査装置のメモリの一部領域に格納されたデータを取得することを複数回繰り返すことにより、当該メモリの全領域に格納されたデータを取得し、取得部は、複数回のデータ取得のそれぞれで指定する読み出しサイズをランダムに決定してもよい。
この態様によると、被検査装置のメモリに存在する不正プログラムが、当該メモリの格納データが正常であるように偽装することを困難にし、被検査装置の異常を検出しやすくなる。
[項目8]
検査装置と被検査装置とを備える検査システムである。被検査装置のメモリに格納されたデータは、被検査装置の動作を定めたプログラムのデータと、プログラムのデータが未格納の空き領域に全てが0または1で構成されたデータあるいは所定のパターンの繰り返しで構成されたデータとは異なるデータとが設定されたものであり、被検査装置は、メモリの全領域に格納されたデータに基づいて検査データを導出する導出部と、導出部により導出された検査データを検査装置へ送信する送信部と、を含む。検査装置は、データに基づく判定データを記憶する記憶部と、被検査装置から送信された検査データと、記憶部に予め記憶された判定データとが不一致の場合に、被検査装置が異常と判定する判定部と、を含む。
この態様によると、被検査装置のメモリに存在する不正プログラムが、当該メモリの格納データが正常であるように偽装することを困難にできるとともに、被検査装置から検査装置へ送信されるデータ量を低減することができる。
[項目9]
検査装置と被検査装置は、チャレンジ・レスポンス型の通信を実行し、検査装置は、チャレンジを決定して、被検査装置へ送信する送信部をさらに含んでもよい。被検査装置の送信部は、検査データとチャレンジに基づいてレスポンスデータを生成し、生成したレスポンスデータを検査装置へ送信し、検査装置の判定部は、レスポンスデータとチャレンジに基づいて、被検査装置で導出された検査データを取得してもよい。
この態様によると、被検査装置で送出された検査データが直接通信網を流れないためセキュリティを一層高めることができる。また、チャレンジは検査の都度決定されるため、不正プログラムが予めレスポンスデータを用意しておくことができず、被検査装置のメモリの格納データが正常であるように偽装することを一層困難にできる。
[項目10]
メモリに格納されたデータの正常性が検査される被検査装置のメモリに格納されるデータを生成する生成部と、生成部により生成されたデータを外部装置へ出力する出力部と、を備える情報処理装置。上記データは、被検査装置の動作を定めたプログラムのデータと、プログラムのデータが未設定の空き領域に全てが0または1で構成されたデータあるいは所定のパターンの繰り返しで構成されたデータとは異なるデータとが設定されたものである。
この態様によると、被検査装置のメモリに格納されるメモリデータであり、不正プログラムの検出に好適なメモリデータを提供できる。
[項目11]
予め記憶された判定データを用いて被検査装置の正常性を検査する検査装置が、所定の検査タイミングにおいて、被検査装置のメモリの全領域に格納されたデータを取得し、取得されたデータに基づいて検査データを導出し、導出された検査データと、予め記憶された判定データとが不一致の場合に、被検査装置が異常と判定する検査方法。
この態様によると、被検査装置における不正プログラムの有無を検査装置が判定する精度(言い換えれば正確さ)を向上させることができる。
[項目12]
予め記憶された判定データを用いて被検査装置の正常性を検査する検査装置に、所定の検査タイミングにおいて、被検査装置のメモリの全領域に格納されたデータを取得し、取得されたデータに基づいて検査データを導出し、導出された検査データと、予め記憶された判定データとが不一致の場合に、被検査装置が異常と判定することを実行させるためのコンピュータプログラム。
この態様によると、被検査装置における不正プログラムの有無を検査装置が判定する精度(言い換えれば正確さ)を向上させることができる。
また、上述した実施例および変形例の任意の組み合わせもまた本発明の実施の形態として有用である。組み合わせによって生じる新たな実施の形態は、組み合わされる実施例および変形例それぞれの効果をあわせもつ。また、請求項に記載の各構成要件が果たすべき機能は、実施例および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。
10 検査システム、 14 IVI装置、 16 周辺機器、 20 更新データ生成装置、 62 ハッシュ値記憶部、 70 ROMデータ取得部、 72 ハッシュ値導出部、 74 状態判定部、 118 更新データ生成部、 120 ハッシュ値導出部。

Claims (12)

  1. 被検査装置のメモリの全領域に格納されたデータに基づく判定データを記憶する記憶部と、
    所定の検査タイミングにおいて、前記被検査装置のメモリの全領域に格納されたデータを取得する取得部と、
    前記取得部により取得されたデータに基づいて検査データを導出する導出部と、
    前記導出部により導出された検査データと、前記記憶部に予め記憶された判定データとが不一致の場合に、前記被検査装置が異常と判定する判定部と、
    を備えることを特徴とする検査装置。
  2. 前記データは、前記被検査装置の動作を定めたプログラムのデータと、前記プログラムのデータが未格納の空き領域に全てが0または1で構成されたデータあるいは所定のパターンの繰り返しで構成されたデータとは異なるデータとが設定されたものであることを特徴とする請求項1に記載の検査装置。
  3. 前記異なるデータは、乱数列であることを特徴とする請求項2に記載の検査装置。
  4. 前記異なるデータは、圧縮済のデータであることを特徴とする請求項2に記載の検査装置。
  5. 前記判定部は、前記取得部が前記被検査装置にデータの提供を要求してから、当該データが提供されるまでの時間が、要求したデータのサイズに応じた閾値を超過した場合、前記被検査装置が異常と判定することを特徴とする請求項1から4のいずれかに記載の検査装置。
  6. 前記取得部は、前記被検査装置のメモリの一部領域に格納されたデータを取得することを複数回繰り返すことにより、当該メモリの全領域に格納されたデータを取得し、
    前記取得部は、複数回のデータ取得のそれぞれで指定する読み出しアドレスをランダムに決定する請求項1から5のいずれかに記載の検査装置。
  7. 前記取得部は、前記被検査装置のメモリの一部領域に格納されたデータを取得することを複数回繰り返すことにより、当該メモリの全領域に格納されたデータを取得し、
    前記取得部は、複数回のデータ取得のそれぞれで指定する読み出しサイズをランダムに決定する請求項1から6のいずれかに記載の検査装置。
  8. 検査装置と被検査装置とを備え、
    前記被検査装置のメモリに格納されたデータは、前記被検査装置の動作を定めたプログラムのデータと、前記プログラムのデータが未格納の空き領域に全てが0または1で構成されたデータあるいは所定のパターンの繰り返しで構成されたデータとは異なるデータとが設定されたものであり、
    前記被検査装置は、
    前記メモリの全領域に格納されたデータに基づいて検査データを導出する導出部と、
    前記導出部により導出された検査データを前記検査装置へ送信する送信部と、を含み、
    前記検査装置は、
    前記データに基づく判定データを記憶する記憶部と、
    前記被検査装置から送信された検査データと、前記記憶部に予め記憶された判定データとが不一致の場合に、前記被検査装置が異常と判定する判定部と、を含むことを特徴とする検査システム。
  9. 前記検査装置と前記被検査装置は、チャレンジ・レスポンス型の通信を実行し、
    前記検査装置は、チャレンジを決定して、前記被検査装置へ送信する送信部をさらに含み、
    前記被検査装置の送信部は、前記検査データと前記チャレンジに基づいてレスポンスデータを生成し、生成したレスポンスデータを検査装置へ送信し、
    前記検査装置の判定部は、前記レスポンスデータと前記チャレンジに基づいて、前記被検査装置で導出された検査データを取得することを特徴とする請求項8に記載の検査システム。
  10. メモリに格納されたデータの正常性が検査される被検査装置のメモリに格納されるデータを生成する生成部と、
    前記生成部により生成されたデータを外部装置へ出力する出力部と、
    を備え、
    前記データは、前記被検査装置の動作を定めたプログラムのデータと、前記プログラムのデータが未設定の空き領域に全てが0または1で構成されたデータあるいは所定のパターンの繰り返しで構成されたデータとは異なるデータとが設定されたものであることを特徴とする情報処理装置。
  11. 予め記憶された判定データを用いて被検査装置の正常性を検査する検査装置が、
    所定の検査タイミングにおいて、前記被検査装置のメモリの全領域に格納されたデータを取得し、
    前記取得されたデータに基づいて検査データを導出し、
    前記導出された検査データと、前記予め記憶された判定データとが不一致の場合に、前記被検査装置が異常と判定することを特徴とする検査方法。
  12. 予め記憶された判定データを用いて被検査装置の正常性を検査する検査装置に、
    所定の検査タイミングにおいて、前記被検査装置のメモリの全領域に格納されたデータを取得し、
    前記取得されたデータに基づいて検査データを導出し、
    前記導出された検査データと、前記予め記憶された判定データとが不一致の場合に、前記被検査装置が異常と判定する、
    ことを実行させるためのコンピュータプログラム。
JP2016214554A 2016-11-01 2016-11-01 検査装置、検査システム、情報処理装置、検査方法およびコンピュータプログラム Pending JP2018073245A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016214554A JP2018073245A (ja) 2016-11-01 2016-11-01 検査装置、検査システム、情報処理装置、検査方法およびコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016214554A JP2018073245A (ja) 2016-11-01 2016-11-01 検査装置、検査システム、情報処理装置、検査方法およびコンピュータプログラム

Publications (1)

Publication Number Publication Date
JP2018073245A true JP2018073245A (ja) 2018-05-10

Family

ID=62114236

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016214554A Pending JP2018073245A (ja) 2016-11-01 2016-11-01 検査装置、検査システム、情報処理装置、検査方法およびコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP2018073245A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110718071A (zh) * 2019-10-25 2020-01-21 上海眼控科技股份有限公司 图像采集设备的校验方法、装置、计算机设备和存储介质
JP2020155026A (ja) * 2019-03-22 2020-09-24 住友電装株式会社 車載更新装置、更新処理システム、更新処理方法及び処理プログラム
WO2021044529A1 (ja) * 2019-09-03 2021-03-11 日本電信電話株式会社 検証装置、検証システム、検証方法および検証プログラム
US11907698B2 (en) 2018-08-10 2024-02-20 Denso Corporation Vehicle electronic control system, vehicle master device, method for controlling transmission of data storage bank information and computer program product for controlling transmission of data storage bank information

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11907698B2 (en) 2018-08-10 2024-02-20 Denso Corporation Vehicle electronic control system, vehicle master device, method for controlling transmission of data storage bank information and computer program product for controlling transmission of data storage bank information
JP2020155026A (ja) * 2019-03-22 2020-09-24 住友電装株式会社 車載更新装置、更新処理システム、更新処理方法及び処理プログラム
WO2020195034A1 (ja) * 2019-03-22 2020-10-01 住友電装株式会社 車載更新装置、更新処理システム、更新処理方法及び処理プログラム
JP7211189B2 (ja) 2019-03-22 2023-01-24 住友電装株式会社 更新処理システム及び更新処理方法
WO2021044529A1 (ja) * 2019-09-03 2021-03-11 日本電信電話株式会社 検証装置、検証システム、検証方法および検証プログラム
JPWO2021044529A1 (ja) * 2019-09-03 2021-03-11
AU2019464433B2 (en) * 2019-09-03 2023-04-20 Nippon Telegraph And Telephone Corporation Verification device, verification system, verification method, and verification program
JP7327490B2 (ja) 2019-09-03 2023-08-16 日本電信電話株式会社 検証装置、検証システム、検証方法および検証プログラム
CN110718071A (zh) * 2019-10-25 2020-01-21 上海眼控科技股份有限公司 图像采集设备的校验方法、装置、计算机设备和存储介质
CN110718071B (zh) * 2019-10-25 2021-09-03 上海眼控科技股份有限公司 图像采集设备的校验方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
US11057240B2 (en) Method and process for securing an executable image
US10397212B2 (en) Information device, data processing system, data processing method, and non-transitory storage medium for executing content upon authentication
US8533492B2 (en) Electronic device, key generation program, recording medium, and key generation method
US10049232B2 (en) Rewrite detection system, rewrite detection device and information processing device
JP6338949B2 (ja) 通信システム及び鍵情報共有方法
JP6712538B2 (ja) 改竄検知システム
JP2018073245A (ja) 検査装置、検査システム、情報処理装置、検査方法およびコンピュータプログラム
CN103729597A (zh) 系统启动校验方法、系统启动校验装置和终端
CN103024438B (zh) 一种机顶盒及其生产测试方法、系统
JP2015500521A (ja) コンピューティングデバイス整合性保護
US20180310173A1 (en) Information processing apparatus, information processing system, and information processing method
US20170302693A1 (en) Rewrite detection system and information processing device
JP2013533521A (ja) 不揮発性メモリのメモリブロックを検査する方法
US11366911B2 (en) Cryptography module and method for operating same
US11935341B2 (en) Data storage device and non-transitory tangible computer readable storage medium
US20220114276A1 (en) Controlling a data network with respect to a use of a distributed database
US11537717B2 (en) Information processing apparatus
CN114491589A (zh) 芯片加密方法和装置、芯片校验方法和装置
CN111142902A (zh) 处理器的升级固件保护方法、装置及车辆
US10425233B2 (en) Method for automatically verifying a target computer file with respect to a reference computer file
US9239918B2 (en) Method and apparatus for software-hardware authentication of electronic apparatus
JP5494389B2 (ja) 電子制御装置
CN114791834B (zh) 一种应用程序的启动方法、装置、电子设备及存储介质
CN110020535B (zh) 关键数据区数据处理方法、装置和机顶盒
JP2020035045A (ja) 電子制御装置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20180416