JP2011108167A - コンピューターシステム - Google Patents

コンピューターシステム Download PDF

Info

Publication number
JP2011108167A
JP2011108167A JP2009265150A JP2009265150A JP2011108167A JP 2011108167 A JP2011108167 A JP 2011108167A JP 2009265150 A JP2009265150 A JP 2009265150A JP 2009265150 A JP2009265150 A JP 2009265150A JP 2011108167 A JP2011108167 A JP 2011108167A
Authority
JP
Japan
Prior art keywords
program
client device
main program
update
main
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.)
Withdrawn
Application number
JP2009265150A
Other languages
English (en)
Inventor
Hisashi Oguma
寿 小熊
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.)
Toyota Motor Corp
Toyota InfoTechnology Center Co Ltd
Original Assignee
Toyota Motor Corp
Toyota InfoTechnology Center 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 Toyota Motor Corp, Toyota InfoTechnology Center Co Ltd filed Critical Toyota Motor Corp
Priority to JP2009265150A priority Critical patent/JP2011108167A/ja
Publication of JP2011108167A publication Critical patent/JP2011108167A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】システム停止時のソフトウェアリモート更新と、システム起動時のプログラムの正当性検査を行うシステムにおいて、更新処理が失敗した場合でもプログラムを安全に普及可能なコンピューターシステムを提供する。
【解決手段】コンピューターシステムは、メインプログラムと、メインプログラムを更新するための更新用プログラムと、外部と通信するための外部通信用プログラムを有するクライアント装置と、クライアント装置のプログラムが正常か否かを検査するとともに、更新用プログラムを配布するサーバ装置から構成される。システム終了時に更新用プログラムによってメインプログラムの更新を行う。システム起動時は、上記3つのプログラムのダイジェスト値をサーバ装置に送信し、全てが正常の場合はメインプログラムを実行し、メインプログラムのみ異常の場合はメインプログラムの更新処理を実行し、それ以外の場合は処理を停止する。
【選択図】図4

Description

本発明は、プログラムを安全に実行可能なコンピューターシステムに関する。
コンピューターシステムの普及に伴い、セキュリティ保証の重要性がますます高まっている。たとえば、近年電子化が進められている車載コンピューターシステムにおいて、プログラムが改ざんされるなどして車載コンピューターシステムを構成する他のマイコン(Electronic Control Unit、以下ECU)や他の車両に対して誤った情報が送出されると
危険である。したがって、コンピューターシステムにおいて実行するプログラムが、悪意者による改ざんを受けておらず製造者によって提供された正しいプログラムであることを保証する必要性がある。このようにプログラムの正当性を保証する技術として、車載コンピューターシステムを起動する際に、各ECUの搭載プログラムが正しいことを確認した後に起動を行うことが提案されている(非特許文献1および2)。
また、車載コンピューターシステムにおいて、製品出荷後にECU内に格納されているプログラムを外部から取得して更新することで、機能を修正したり追加したりすることが行われている。しかしながら、このようなプログラム更新処理が正常に終了しなかった場合、プログラムが不整合な状態でメモリ内に格納され、次回起動時にプログラムが改ざんされたと判断されてしまい起動できなくなってしまう。
更新処理の中断に対処するために、更新対象の機器に十分な量の二次記憶を用意し、更新前のプログラムと最新のプログラムの両方を保持可能とし、更新処理が中断した場合には更新前のプログラムを起動する技術が提案されている(特許文献1)。
特開2005−196745号公報
吉岡顕 他, 「構成証明機能を持つ車内通信プロトコルの提案」, マルチメディア,分散,協調とモバイル (DICOMO2008) シンポジウム. H. Oguma, et. al., New Attestation-Based Security Architecture for In-Vehicle Communication, GLOBECOM 2008.
特許文献1の技術は複合機など比較的計算機資源が豊富な機器を対象としている。しかしながら、車載システムを構成する多くのECUは計算機資源に乏しくこのような手法を採用することは困難である。また、豊富な二次記憶や特殊なハードウェアをECUへ導入することは、製造コストの観点からも困難である。なお、このような問題点は車載コンピューターシステムに限られるものではなく、計算機資源に乏しいコンピューターシステム一般に当てはまる問題である。
本発明はこのような問題点を考慮してなされたものであり、その目的は、起動時にプログラムの正当性を検証してから動作するコンピューターシステムにおいて、ソフトウェア更新処理に失敗した場合であっても、プログラムを安全に復旧可能とすることを目的とする。また、本発明は、このようなコンピューターシステムを、特殊なハードウェアをでき
るだけ使用せず低コストに実現可能とすることも目的とする。
〈第1の態様〉
本発明の第1の態様では、クライアント装置が記憶する、更新処理の対象であるメインプログラムと、更新処理の対象ではないその他のプログラムの正当性の検証を起動時に行い、全てのプログラムが正しい場合はメインプログラムを実行し、メインプログラムのみが異常である場合はメインプログラムの更新処理を実行し、それ以外の場合はプログラムが改ざんされていると判断して実行を中止する。ここで、更新処理の対象ではないプログラムには、メインプログラムを更新するための更新用プログラムおよびサーバ装置や他のクライアントと通信するための外部通信用プログラムが含まれる。
より具体的には、本発明の第1の態様に係るコンピューターシステムは、
互いに通信可能なサーバ装置と複数のクライアント装置とから構成され、
前記クライアント装置は、
プロセッサと、
メインプログラム、前記メインプログラムを更新するための更新用プログラム、サーバ装置および他のクライアント装置と通信を行うための外部通信用プログラムを記憶する記憶手段と、
を有し、
前記サーバ装置は、
クライアント装置が記憶しているメインプログラムを記憶する現在プログラム記憶部と、
クライアント装置に配布すべき最新版のメインプログラムを記憶する更新プログラム記憶部と、
クライアント装置に最新版のメインプログラムを配布する更新プログラム管理部と、
クライアント装置と通信を行うための外部通信部と、
を有し、
クライアント装置が前記更新用プログラムを実行することにより、最新版のメインプログラムをサーバ装置から取得して、前記記憶手段内のメインプログラムを更新するコンピューターシステムであって、
前記クライアント装置は、前記メインプログラム、前記更新用プログラムおよび前記外部通信用プログラムのダイジェスト値を求めるための、耐タンパ性デバイスで構成されたコード測定部をさらに有し、
前記サーバ装置は、各クライアント装置について、メインプログラム、更新用プログラムおよび外部通信用プログラムの正しいダイジェスト値を記憶する正常状態記憶部をさらに有し、
クライアント装置は、起動時に、メインプログラム、更新用プログラムおよび外部通信用プログラムのダイジェスト値をコード測定部によって求めてサーバ装置に送信し、
サーバ装置は、クライアント装置から受信した3つのダイジェスト値それぞれが正しいか否か判定し、
クライアント装置は、前記3つのハッシュの全てが正しい場合はメインプログラムを実行し、メインプログラムのダイジェスト値のみが異常の場合は更新用プログラムによってメインプログラムの更新を実行し、それ以外の場合は起動処理を終了する
ことを特徴とする。
本発明の第1の態様によれば、メインプログラムの更新処理が中断した場合であっても、更新用プログラムおよび外部通信用プログラムの正当性が確保されればメインプログラムの更新処理を再開できる。また、メインプログラムのみが改ざんされた場合も、それを検知してプログラム更新処理により正しいメインプログラムを再取得することができる。
さらに、メインプログラム以外のプログラムが改ざんされた場合も検知可能であり、異常なプログラムが実行されることを防止できる。
さらに、本発明の第1の態様において、耐タンパ性デバイスを用いて構成する必要があるものはコード測定部だけであり、メインプログラム、更新用プログラムおよび外部通信用プログラムは通常の記憶装置(耐タンパ性を有しないデバイス)に格納できるため、製造コストの大幅な上昇を避けられる。
また、本発明の第1の態様において、メインプログラムのダイジェスト値のみが異常で更新用プログラムによってメインプログラムの更新を実行するときに、サーバ装置の更新プログラム管理部は、更新プログラム記憶部に最新版のメインプログラムが存在する場合は当該メインプログラムをクライアント装置に配布し、更新プログラム記憶部に最新版のメインプログラムが存在しない場合は、現在プログラム記憶部内のメインプログラムをクライアント装置に配布することが好ましい。
これにより、メインプログラム更新処理に失敗してメインプログラムが異常な場合だけでなく、メインプログラムが改ざんされて異常な場合にも、メインプログラムを復旧して正しいプログラムを実行することができる。
また、本発明の第1の態様において、サーバ装置は、クライアント装置から受信した前記3つのダイジェスト値の全てが正しい場合は、前記コンピューターシステム内で共通の暗号鍵をクライアント装置に送信し、前記クライアント装置は、メインプログラム実行後にサーバ装置または他のクライアント装置と通信する場合は前記暗号鍵を用いた通信を行い、他のクライアント装置からの通信に前記暗号鍵が用いられていない場合は当該通信を無視することが好適である。
このような構成によれば、起動時にプログラムの正当性が検証されたクライアント装置のみが他の装置と通信可能であるため、改ざんされた情報を他のクライアント装置から受け取って誤動作が発生するのを防止できる。
〈第2の態様〉
本発明の第2の態様は、クライアント装置においてメインプログラムを更新途中であるか否かを示すフラグを保持し、起動時において、フラグが更新中を示している場合(つまり更新処理が中断した場合)は更新処理に必要なプログラムの正当性を検証し、プログラムが正しければ更新処理を再開し、フラグが更新中を示していない場合はメインプログラムとメインプログラムの実行に必要な他のプログラムの正当性を検証し、プログラムが正しければメインプログラムを実行する。
より具体的には、本発明の第2の態様に係るコンピューターシステムは、
互いに通信可能なサーバ装置と複数のクライアント装置とから構成され、
前記クライアント装置は、
プロセッサと、
メインプログラム、前記メインプログラムを更新するための更新用プログラム、サーバ装置および他のクライアント装置と通信を行うための外部通信用プログラム、および、前記更新用プログラムによる前記メインプログラムの更新処理を実行中であるか否かを示すフラグを記憶する記憶手段と、
を有し、
前記サーバ装置は、
クライアント装置が記憶しているメインプログラムを記憶する現在プログラム記憶部と、
クライアント装置に配布すべき最新版のメインプログラムを記憶する更新プログラム記憶部と、
クライアント装置に最新版のメインプログラムを配布する更新プログラム管理部と、
クライアント装置と通信を行うための外部通信部と、
を有し、
クライアント装置が前記更新用プログラムを実行することにより、最新版のメインプログラムをサーバ装置から取得して、前記記憶手段内のメインプログラムを更新するコンピューターシステムであって、
前記クライアント装置は、前記メインプログラム、前記更新用プログラムおよび前記外部通信用プログラムのダイジェスト値を求めるための、耐タンパ性デバイスで構成されたコード測定部をさらに有し、
前記サーバ装置は、各クライアント装置について、メインプログラム、更新用プログラムおよび外部通信用プログラムの正しいダイジェスト値を記憶する正常状態記憶部をさらに有し、
(1)クライアント装置の起動時に、前記フラグによってメインプログラムの更新処理の実行中ではないと判断される場合は、
クライアント装置は、メインプログラムおよび外部通信用プログラムのダイジェスト値を前記コード測定部によって求めてサーバ装置に送信し、
サーバ装置は、クライアント装置から送信されるメインプログラムおよび外部通信用プログラムのダイジェスト値が正しいか否か判定し、
クライアント装置は、メインプログラムおよび外部通信用プログラムのダイジェスト値が正しい場合はメインプログラムを実行し、
(2)クライアント装置の起動時に、前記フラグによってメインプログラムの更新処理の実行中であると判断される場合は、
クライアント装置は、更新用プログラムおよび外部通信用プログラムのダイジェスト値を前記コード測定部によって求めてサーバ装置に送信し、
サーバ装置は、クライアント装置から送信される更新用プログラムおよび外部通信用プログラムのダイジェスト値が正しいか否か判定し、
クライアント装置は、更新用プログラムおよび外部通信用プログラムのダイジェスト値が正しい場合は、更新用プログラムによってメインプログラムの更新処理を実行する
ことを特徴とする。
本発明の第2の態様によれば、第1の態様と同様に、メインプログラムの更新処理が中断した場合であっても、その他のプログラムの正当性が検証されればメインプログラムの更新処理を再開できる。また、耐タンパ性デバイスを用いる必要があるのはコード測定部であり、その他のプログラムは通常の記憶装置に格納できるため、製造コストの上昇を避けることができる点も同様である。
本発明の第2の態様では、起動時に検証する必要のあるプログラムは、フラグが更新中を示す場合は更新用プログラムと外部通信用プログラム、フラグが更新中を示していない場合はメインプログラムと外部通信用プログラムと、いずれの場合も2つのプログラムだけである。第1の態様においては、メインプログラムと更新用プログラムと外部通信用プログラムの3つのプログラムの正当性を検証する必要があるため、これら3つのプログラムのダイジェスト値を求めていた。本態様においては、2つのプログラムのダイジェスト値を求めるだけで済むため、システム起動時の検証処理を少なくして、高速なシステム起動を可能としている。なお、ダイジェスト値の算出は演算量が比較的多い処理であるため、ダイジェスト値の算出回数を減らすことで得られる効果は大きい。
また、本発明の第2の態様において、メインプログラムのダイジェスト値のみが異常であって更新用プログラムによってメインプログラムの更新を実行するときに、サーバ装置
の更新プログラム管理部は、更新プログラム記憶部に最新版のメインプログラムが存在しない場合は、クライアント装置の前記フラグが改ざんされたと判断することが好ましい。
このようにすることで、フラグの改ざんを検知可能である。
また、本発明の第2の態様において、サーバ装置は、クライアント装置から受信した前記メインプログラムおよび外部通信用プログラムのダイジェスト値が正しい場合は、前記コンピューターシステム内で共通の暗号鍵をクライアント装置に送信し、前記クライアント装置は、メインプログラム実行後にサーバ装置または他のクライアント装置と通信する場合は、前記暗号鍵を用いて秘匿通信または署名付き通信を行うことが好適である。
このような構成によれば、起動時にプログラムの正当性が検証されたクライアント装置のみが他の装置と通信可能であるため、改ざんされた情報を他のクライアント装置から受け取って誤動作が発生するのを防止できる。
なお、本発明は、上記手段の少なくとも一部を有するコンピューターシステムとして捉えることができる。また、本発明は、上記処理の少なくとも一部を含むプログラム起動方法、またはその方法を実行するプログラムとして捉えることもできる。上記手段および処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。
本発明によれば、起動時にプログラムの正当性を検証してから動作するコンピューターシステムにおいて、ソフトウェアの更新処理に失敗した場合であっても、プログラムを復旧することが可能である。また、本発明によれば、このようなコンピューターシステムを比較的低コストで実現することが可能である。
第1および第2の実施形態におけるシステム概要を示す図である。 第1の実施形態におけるクライアント装置およびサーバ装置の機能構成を示す図である。 第1の実施形態におけるクライアント装置のハードウェア構成を示す図である。 第1の実施形態におけるサーバ装置のアーキテクチャを示す図である。 第1の実施形態におけるプログラム検査処理およびプログラム更新処理の概要を示すフローチャートである。 第1の実施形態におけるシステム停止時のクライアント装置でのメインプログラム更新処理の流れを示すフローチャートである。 第1の実施形態におけるシステム停止時のサーバ装置でのメインプログラム更新処理の流れを示すフローチャートである。 第1の実施形態におけるシステム起動時のクライアント装置でのプログラム検査処理の流れを示すフローチャートである。 第1の実施形態におけるシステム起動時のサーバ装置でのプログラム検査処理の流れを示すフローチャートである。 第2の実施形態におけるクライアント装置およびサーバ装置の機能構成を示す図である。 第2の実施形態におけるクライアント装置のハードウェア構成を示す図である。 第2の実施形態におけるシステム停止時のクライアント装置でのメインプログラム更新処理の流れを示すフローチャートである。 第2の実施形態におけるシステム停止時のサーバ装置でのメインプログラム更新処理の流れを示すフローチャートである。 第2の実施形態におけるシステム起動時のクライアント装置でのプログラム検査処理の流れを示すフローチャートである。 第2の実施形態におけるシステム起動時のサーバ装置でのプログラム検査処理の流れを示すフローチャートである。
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
<第1の実施形態>
〈構成〉
図1は本実施形態に係るコンピューターシステムの概略構成を示す図である。本実施形態に係るコンピューターシステムは、複数のクライアント装置100と、サーバ装置200とから構成される。各クライアント装置100はサーバ装置200と車載ネットワークを介して通信可能に構成されている。本システムを車載システムに適用した場合、クライアント装置100はセンサやアクチュエータを制御する個々のECU(Electronic Control Unit)に相当するものであり、クライアント装置100は計算機資源の乏しい装置で
ある。サーバ装置200はシステム内に数台のみあればよいものであるため、豊富な計算機資源を備えセキュリティが確保された装置として構成することができる。サーバ装置200は、既存の車載システムに新しい装置として追加されても良いが、カーナビゲーション装置(ナビ制御ECU)などの汎用的な処理を行う装置の一機能として実装されても良い。また、一台のサーバ装置が管理するクライアント装置の数が少ない方が起動時の検証処理等が迅速に完了することを考慮すると、サーバ装置を車載ネットワークのゲートウェイECUの一機能として実装されることも好ましい。サーバ装置200は、クライアント装置100に配布するソフトウェアの入手するために、配信サーバ300と広域ネットワークを介して通信可能である。なお、サーバ装置200と配信サーバ300とは常に通信可能である必要はなく、適当なタイミングで通信できればよい。また、ここでは車載システムを例に説明を行うが、本実施形態に係るコンピューターシステムは、その他の任意のコンピューターシステムに対して適用することができる。
図2は、クライアント装置100およびサーバ装置200の機能構成を示す図である。図3A,3Bはそれぞれ、クライアント装置100およびサーバ装置200のハードウェア構成を示す図である。
クライアント装置100は、外部通信部102、暗号関連処理部104、コード測定部106、ユニークID記憶部108、メインプログラム記憶部110、プログラム更新部112を備える。外部通信部102は、車載システム内の他のクライアント装置100やサーバ装置200と通信を行う機能を有する。暗号関連処理部104は、データの暗号化および復号処理や、署名の付加や検証処理などの機能を有する。なお、後で詳しく説明するように、本実施形態においては、送受信装置のユニークIDを利用して共通鍵を生成する。暗号関連処理部104は、この共通鍵を生成するための鍵生成機能(鍵生成関数)も備えている。コード測定部106は、各種プログラムのダイジェスト値を求める。コード測定部106が求めるダイジェスト値は、SHA−1やSHA−256などのハッシュ関数によって求めたダイジェスト値(ハッシュ値)であっても良く、MD5などその他のアルゴリズムによって求めたダイジェスト値であっても良い。ユニークID記憶部108は、クライアント装置100に固有のIDを記憶する。メインプログラム記憶部110は、クライアント装置がセンサECUやアクチュエータECUとして機能するために必要なメインプログラムを記憶する。プログラム更新部112は、メインプログラムが更新されている場合には、サーバ装置200から取得してメインプログラム記憶部110を更新する機能を有する。
クライアント装置100は、図3Aに示すように、大略、耐タンパ性デバイス120とCPU(Central Processing Unit)130と汎用記憶デバイス140から構成されてい
る。耐タンパ性デバイスとは、内部情報の不正取得や改ざんに対して耐性のあるデバイスのことである。本実施形態では、耐タンパ性デバイス120によって暗号関連処理部104、コード測定部106、ユニークID記憶部108は記憶部108の機能を実現する。また、フラッシュメモリなどの汎用記憶デバイス140には、メインプログラム141、更新用プログラム142、外部通信用プログラム143が記憶されており、これらのプログラムをCPU130が実行することによって、ECUとしての機能や、プログラム更新部112、外部通信部102の機能が実現される。なお、耐タンパ性デバイス120も、その内部にCPUや記憶装置などを有しており、記憶装置内に格納されたプログラムを実行することで前記の各機能部が実現されることは同様である。また、メインプログラムは更新の対象であるため書き換え可能なメモリに記憶する必要があるが、更新用プログラムや外部通信用プログラムを更新する必要がなければ、これらのプログラムは読み出し専用メモリ(ROM)に記憶しても構わない。
次に、サーバ装置200の機能構成を、図2を参照して説明する。サーバ装置200は、大略、外部通信部202、暗号関連処理部204、更新プログラム管理部206、現在プログラム記憶部208、更新プログラム記憶部210、測定結果判定部212、正常状態記憶部214を備える。外部通信部202は、車載システム内のクライアント装置100と通信を行う機能を有する。暗号関連処理部204は、データの暗号化および復号処理や、署名の付加や検証処理などの機能を有する。なお、サーバ装置200の暗号関連処理部204もクライアント装置と同様に、送受信装置のユニークIDに基づく共通鍵生成機能を備える。更新プログラム管理部206は、クライアント装置100からの更新要求に応じて、メインプログラムをクライアント装置100に送信する機能を有する。現在プログラム記憶部208には、それぞれのクライアント装置がメインプログラム記憶部110に記憶しているメインプログラムが記憶される。更新プログラム記憶部210には、それぞれのクライアント装置について、最新版(クライアント装置に配布前)のメインプログラムを記憶している。更新プログラム管理部206は、広域ネットワークを介して配信サーバ300から更新版のプログラムを安全な経路で入手する。配信サーバ300から安全に更新プログラムを入手することは、通信を暗号化するなど既存の手法によって達成可能である。測定結果判定部212は、クライアント装置から送信される各種プログラムが正しいか否か判定する機能を有する。本実施形態においては、クライアント装置から各種プログラムのハッシュ値(ダイジェスト値)が送信される。正常状態記憶部214には各クライアント装置が現在有しているプログラムの正しいハッシュ値が格納されており、測定結果判定部212はクライアント装置から送信されるハッシュ値が正常状態記憶部214に格納されているハッシュ値と同じであれば、クライアント装置のプログラムが正常である(改ざんされていない)と判断する。なお、メインプログラムの正しいハッシュ値は、配信サーバ300から最新版のメインプログラムとともに取得されて、正常状態記憶部214に格納される。
サーバ装置200が有する外部通信部202、暗号関連処理部204、更新プログラム管理部206、現在プログラム記憶部208、更新プログラム記憶部210、測定結果判定部212、正常状態記憶部214は、図3Bに示すように、セキュアドメイン230において実行される。サーバ装置200が、ゲートウェイ装置のECU内に設けられる場合は、ゲートウェイ装置としての機能は一般ドメイン240において実行される。セキュアドメインは、信頼性が確保されたプログラムのみが実行可能な環境であり、一般ドメイン240からのアクセスが禁止される。また、セキュアドメインと一般ドメインとは独立しており、一般ドメインにおいて異常が発生した場合であってもセキュアドメインに悪影響が及ぶことはない。このようなセキュアドメインは、たとえば、ARM社のTrustZ
oneテクノロジー(同社の商標)によって実現することができる。
〈全体処理概要〉
次に、図4を参照して、本車載コンピューターシステムにおけるシステム起動時および終了時の処理を大まかな流れを説明する。
車載システムに電源が供給されてシステムが起動すると(S100)、各クライアント装置100はメインプログラム141、更新用プログラム142、外部通信用プログラム143が正常であるか検査を行う(S102)。後述するようにこの検査は、クライアント装置においてプログラムのハッシュ値を計算してサーバ装置に送信し、サーバ装置においてハッシュ値が正常であるか否か判断することによって行われる。ここで、全てのプログラムが正常である場合は、クライアント装置においてメインプログラムを実行する(S106)。一方、メインプログラム141のみが異常であり、更新用プログラム142および外部通信用プログラム143が正常である場合は、更新用プログラム142を実行してメインプログラムの更新処理を実行する(S108)。これにより、前回の更新処理が途中で失敗してメインプログラムが不整合な状態であっても、更新処理を再度行ってメインプログラムを復旧することができる。また、メインプログラムが改ざんされた場合であっても、正常な状態のメインプログラムに戻すことができる。更新処理後には、メインプログラムを実行する(S106)。一方、プログラムの検査結果が上記以外の場合、すなわち、更新用プログラム142または外部通信用プログラム143のいずれかに異常がある場合には、メインプログラムを実行することなく処理を終了する(S112)。このようにして、システム起動時のプログラム検査処理が行われて、正当性が確認されたプログラムのみが実行されることになる。
以上のようにしてメインプログラムの実行が開始された後にイグニッションがOFFされるとメインプログラムの実行を終了して、更新用プログラムを実行する(S110).この更新用プログラムにより、メインプログラムの更新処理が実行される。このように本システムにおいては、システム停止時にメインプログラムの更新処理を実行するとともに、システム起動時に各種プログラムの検査処理を実行する。
なお、メインプログラム以外に更新用プログラムや外部通信用プログラムの検査を行う理由は以下の通りである。更新用プログラムは、メインプログラムを書き換える機能を有しているため正しく動作する必要があり、悪意者によって書き換え機能が削除されたり、全く別のプログラムがメインプログラム記憶部に格納されたりするのを防ぐ必要があるためである。外部通信部は、サーバ装置と正しく通信する必要があり、別のサーバと通信したりクライアント装置が送信しようとするデータとは異なるデータを送信したりするように書き換えられる危険があるためである。なお、外部通信用プログラムが正しいか否かが判断できないときに、この外部通信プログラムを利用してサーバ装置にハッシュ値を送信しているのが、外部通信用プログラムの正当性の検査が行われるため安全が確保される。仮に外部通信プログラムが改ざんされてサーバ装置と通信できない場合には、サーバ装置から必要な情報を受信することができず、クライアント装置が起動しない。また、外部通信プログラムが改ざんされて、求めたダイジェスト値と異なるダイジェスト値をサーバ装置へ送信した場合には、サーバ側で電子署名の検証または復号処理を行うことで、通信の改ざんを検知できる。この場合も、クライアント装置はサーバ装置から必要な情報を受信できず起動しない。このように、外部通信用プログラムが改ざんされた場合はクライアント装置が起動せず、改ざんされたプログラムを含むクライアント装置が他の装置に対して悪影響を与えることはない。
[1.メインプログラム更新処理(システム終了時)]
次に、図5A,5Bを参照して、システム停止時のメインプログラムの更新処理(図4
のS110)の詳細を説明する。図5Aはメインプログラム更新時にクライアント装置100において実行される処理の流れを示し、図5Bはサーバ装置200において実行される処理の流れを示す。
1−A.クライアント側処理
クライアント装置100においてイグニッションがOFFされると(S200)、実行中のメインプログラムは、プログラム更新部112(更新用プログラム142)を呼び出して終了する(S202)。プログラム更新部112は、サーバ装置200に対して更新プログラムがあれば送信するように要求する(S204)。このとき、プログラム更新部112は、クライアント装置100のユニークIDと、クライアント装置100が一度に受信可能なデータのサイズをサーバ装置200に通知する。
プログラムの更新要求がサーバ装置200に送信されると、サーバ装置200は、更新プログラムがある場合にはその一部をメインプログラム記憶部110(汎用記憶デバイス140)の書き込むべきアドレスとともに送信する。一方、更新プログラムがない場合には、サーバ装置200はNULL(ペイロード長が0の通知)を送信する。したがって、プログラム更新部112は、サーバ装置200から受信した通知のペイロード長が0であるか否かを判断し(S206)、0でない場合(S206)は受信データに指定されているアドレスを、受信データに含まれる更新プログラム(の一部)で書き換える(S208)。更新プログラム(受信した部分)の書き換えが完了したら、その旨をサーバ装置200に通知して、次の受信を待つ。一方、サーバ装置から受信した通知のペイロード長が0である場合(S206−NO)は、更新プログラムが存在しないか、または、プログラムの更新が全て完了した場合であるので、システムを終了する(S212)。
1−B.サーバ側処理
一方、サーバ装置200においてイグニッションがOFFされると(S300)、クライアント装置100からメインプログラムの更新要求を受信する(S302)。このとき、どのクライアント装置からの要求であるかを示すユニークIDと、そのクライアント装置が一度に受信可能なデータサイズを取得する。そして、更新プログラム管理部206は、要求元のクライアント装置に対応する更新プログラムが存在するか否かを確認する(S304)。対応する更新プログラムが存在しない場合(S306−NO)は、更新プログラムが存在しないことを通知するために、更新プログラム管理部206がNULLを通知する(S318)。一方、要求元のクライアント装置に対応する更新プログラムが存在する場合(S306−YES)は、更新プログラム管理部206は更新プログラムをクライアント装置の受信可能サイズに分割して、順次クライアント装置100に送信する。すなわち、更新プログラム管理部206は、更新プログラムの一部を、書き込むべきアドレスとともにクライアント装置100へ送信する(S308)。送信後は、クライアント装置からの更新プログラム書き換え終了の通知を受信するまで待機し(S310)、書き換え終了の通知を受信したら更新プログラムの未送信部分があるか確認する(S312)。更新プログラムに未送信部分がある場合(S314−YES)は、ステップS308に戻って更新プログラムの次の分割部分を送信する。一方、更新プログラムの未送信部分がない場合(S314−NO)は、更新プログラムを全て送信したことを通知するためにNULLをクライアント装置に送信した後、更新プログラムの全体を現在プログラム記憶部208に移動する(S316)。以上により、1つのクライアント装置からのプログラム更新要求に対する処理が終了する。車載システム内の全てのクライアント装置からの更新要求に対する処理が完了したら、サーバ装置200は実行を終了する。
[2.プログラム検査処理(システム起動時)]
次に、図6A、6Bを参照して、システム起動時のプログラム検査処理(図4のS102)の詳細を説明する。図6Aはプログラム検査時にクライアント装置100において実
行される処理の流れを示し、図6Bはサーバ装置200において実行される処理の流れを示す。
2−A.クライアント側処理
クライアント装置100では、イグニッションがONされると(S400)、コード測定部106が、メインプログラム141、更新用プログラム142および外部通信用プログラム143のハッシュ値をそれぞれ求める(S402)。コード測定部106は、算出したハッシュ値をクライアント装置100のユニークIDとともにサーバ装置200へ送信し(S404)、プログラムの検査結果がサーバ装置200から送信されるのを待つ。サーバ装置からの応答が、全てのプログラムが正常(以下、「SW正常」と表す)を示す場合(S406−YES)は、メインプログラム141を実行する(S410)。一方、サーバ装置からの応答が、メインプログラム141のみが異常であり更新用プログラム142および外部通信用プログラム143が正常である(以下、「SW異常」と表す)を示す場合(S406−NO)は、更新用プログラム142を実行してメインプログラムの更新処理を実行する(S408)。ステップS408の処理の詳細は、図3のフローチャートにおけるステップS204〜S212の処理と同じである。なお、更新用プログラム142または外部通信用プログラム143が異常である場合は、本実施形態においてはサーバ装置200から応答がなく、したがってクライアント装置100においてはそれ以上の処理が実行されず、改ざんされたプログラムは実行されない。
2−B.サーバ側処理
一方、サーバ装置200では、イグニッションがONされると(S500)、測定結果判定部212が、正常状態記憶部214を利用してクライアント装置100から受信したプログラムのハッシュ値が正しいか否か検査する(S502)。なお、前述したように正常状態記憶部214には、クライアント装置100ごとにメインプログラム141、更新用プログラム142および外部通信用プログラム143の正しいハッシュ値が格納されている。3つ全てのプログラムのダイジェストが正しい場合(S504−YES)は、測定結果判定部212はクライアント装置100に対して「SW正常」を通知する(S506)。これによって、クライアント装置100ではメインプログラムの実行が開始される。
いずれかのプログラムのハッシュ値が正しくない場合(S504−NO)は、メインプログラムのみが異常であるか否か判断する(S508)。メインプログラム141のみが異常である場合(S508−YES)は、測定結果判定部212はクライアント装置100に対して「SW異常」を通知する(S510)。これにより、クライアント装置100ではメインプログラムの更新処理が実行される。サーバ装置200においても、更新処理を実行する(S512)。ここでのサーバ装置200における更新処理は、実質的に図5Bのフローチャートと同様であるが、更新プログラムが無い場合には、現在プログラム記憶部208に格納されているメインプログラムをクライアント装置100に送信する点が異なる。
また、プログラム検査の結果、更新用プログラム142または外部通信用プログラム143のいずれかが異常である場合(S504−NO)は、クライアント装置100に通知を行わずに処理を終了する。これにより、クライアント装置100ではそれ以上の処理が進行せず、改ざんされたプログラムが実行されることを防止できる。
〈暗号処理〉
システム起動時におけるクライアント装置100とサーバ装置200との間の通信は、秘匿・署名通信によって、盗聴や改ざんを防ぐことが好ましい。暗号化通信を行うにあたって、共通鍵方式および公開鍵方式のいずれを採用しても良いが、計算量を考慮して本実施形態では共通鍵方式による秘匿・署名通信を採用する。共通鍵方式を採用する場合も、
システム内で1つの共通鍵を採用する方式と、装置ペアごとに異なる共通鍵を採用する方式が考えられるが、システム内で共通の鍵を採用した場合は鍵漏洩時になりすましによって誤動作を引き起こすことが可能であり危険である。そこで、本実施形態では、通信相手ごとに異なる共通鍵を用いるために、KPS(Key Predistribution System)を採用する。
KPSでは、以下の鍵生成関数を用いて共通鍵を作成する。
Figure 2011108167
ここで行列{aij}は対称行列、すなわち、aij=ajiであり、x、yは各装置のID、Tはセキュリティパラメーター、qは素数である。
クライアント装置100およびサーバ装置200の暗号関連処理部には、自装置のIDをAとして以下の鍵生成関数K(y)が格納される。
Figure 2011108167
他の装置と通信を行う場合には、通信相手のID(Bとする)を取得して、K(B)を共通鍵として用いる。K(B)=K(A)であるので、互いのIDを交換することで通信相手も同一の共通鍵を生成できる。
なお、KPSは情報量的安全性に基づいた鍵管理方式であり、セキュリティパラメーターT個以下の鍵生成関数が漏洩した場合でも、他の鍵を推測できないことが証明されている。
本実施形態におけるシステム起動時のクライアント装置100とサーバ装置200との間の処理は、このような鍵生成アルゴリズムによって生成された共通鍵によって秘匿化される。また、メインプログラム起動後のユニキャスト通信(サーバとクライアントの間およびクライアント同士の間)の通信も、この鍵生成アルゴリズムによって生成された共通鍵によって秘匿化される。
システム起動時のプログラム検査によって、クライアント装置100のプログラムが改ざんされていないことが確認された場合には、サーバ装置200からクライアント装置100に対して、構成証明トークンを送信する。この構成証明トークンは、システムが起動するたびにサーバ装置200によって新しく生成される乱数値であり、システム稼働中は同一の値が使用される。プログラムの検証を通過した装置では、それ以降の他の装置との通信にこの構成証明トークンを利用することで、自身が正規のプログラムであることを提示する。たとえば、ユニキャスト通信においては、メッセージに構成証明トークンを含めて、KPS鍵生成アルゴリズムによって生成される通信相手との共通鍵を用いて秘匿・署名通信を行う。ユニキャスト通信を受信した装置では、正しい構成証明トークンが含まれているメッセージのみを処理し、その他のメッセージを破棄することで構成証明が行われた装置とだけ通信を行う。また、ブロードキャスト通信の場合は、構成証明トークンを共通鍵として秘匿・署名通信を行う。ブロードキャスト通信を受信した装置では、構成証明トークンによって復号・署名検証が行えるメッセージだけを処理することで、構成証明が行われた装置とだけ通信を行う。このように起動時に各種プログラムの正当性が検証され
ないと、他の装置との通信が一切行えなくなる。
(本実施形態の作用・効果)
本実施形態においては、クライアント装置のメインプログラム更新処理において、メインプログラム記憶部を二重化することなくプログラムの書き換えを実施している。したがって、プログラム更新処理の途中で、電源断などによって処理が中断すると、メインプログラムの状態が不整合となる。したがって、システム起動時におけるプログラム検査によって、メインプログラムが異常である(改ざんされた)と判断されることになる。
しかしながら、本実施形態においては、システム起動時に、メインプログラムだけでなく、その他のプログラムである更新用プログラムと外部通信用プログラムの正当性も検査している。このようにすることで、メインプログラムのみが異常である場合には、正当性が保証された更新用プログラムと外部通信用プログラムによって、メインプログラムをサーバ装置から取得し直すことができる。なお、サーバ装置はクライアント装置が現在記憶しているべきメインプログラムも保持しているので、更新処理が中断することによってメインプログラムが不整合となった場合だけでなく、悪意者による改ざんによってメインプログラム(のみ)が改ざんされた場合も、メインプログラムを再取得して正常に実行することができる。
また、本実施形態においては耐タンパ性デバイスに格納する機能を少なくすることで、耐タンパ性デバイスに要するコストを抑えている。車載システムのように多数のECU(クライアント装置)から構成されるシステムにおいて、それぞれの装置に耐タンパ性デバイスが必要となるためコストの上昇が発生するが、耐タンパ性デバイスで構築する機能を限定することでコストの上昇を防いでいる。更新用プログラムや外部通信用のプログラムは、通常の記憶装置に格納しているが、ハッシュ値を利用した正当性の検証を行っているため、セキュリティは確保される。
<第2の実施形態>
第1の実施形態では、システム起動時にクライアント装置の、メインプログラム、更新用プログラムおよび外部通信用プログラムの3つのプログラムのハッシュ値を算出してサーバ装置に送信している。ハッシュ値の算出は比較的長い処理時間を要する。そこで、本実施形態では、システム起動時にハッシュ値を算出するプログラムの数を減らすことによって高速なシステム起動を実現する。
図7は、本実施形態におけるクライアント装置100およびサーバ装置200の機能構成を示す図である。第1の実施形態と比較して、クライアント装置100にブートフラグ記憶部114が加えられている点が異なる。このブートフラグは、メインプログラムの更新処理開始時に「更新中」に書き換えられ、更新処理が完了すると「更新済み」に書き換えられるフラグである。後述するように、このブートフラグを参照することで、更新処理が完了しているのか途中で失敗したのかを判断し、システム起動時の処理を切り替える。なお、サーバ装置200の機能構成は第1の実施形態と同様である。
図8は、クライアント装置100のハードウェア構成を示す図である。ブートフラグは汎用記憶デバイス140に格納される。ブートフラグは、耐タンパ性デバイス内部に格納しても良いが、更新対象の情報であるため汎用記憶デバイスのプログラムからアクセスできるようなインタフェースが用意され外部アクセスによる状態変化を許し状態保護が困難なので、汎用記憶デバイスに記憶している。ブートフラグを汎用記憶デバイスに格納することにより、耐タンパ性デバイスの容量増大を抑えコスト上昇を抑制することもできる。
本実施形態においても、システム起動時にプログラムの検査を行い、システム終了時に
メインプログラムの更新を行うという全体的な流れは第1の実施形態と同様である。
[1.メインプログラム更新処理(システム終了時)]
図9A,9Bを参照して、システム停止時のメインプログラムの更新処理を説明する。図9Aはメインプログラム更新時におけるクライアント装置100において実行される処理の流れを示し、図9Bはサーバ装置200において実行される処理の流れを示す。
1−A.クライアント側処理
本実施形態におけるメインプログラム更新時のクライアント側処理は、第1の実施形態における処理(図5A)と基本的に同様である。異なる点の一つは、イグニッションOFF時にメインプログラムがコード測定部106を呼び出して終了し(S602)、コード測定部106が更新用プログラム142のハッシュ値を算出してサーバ装置200へ送信する(S604)点である。そして、サーバからプログラムが正常であるという応答がある場合(S606−YES)に、第1の実施形態と同様の更新処理を実行する。このように更新処理に先立って更新用プログラムの検証処理を実施するのは、後述するように本実施形態においてはシステム起動時に、更新用プログラムの正当性検証を省略しているためである。なお、更新プログラムが異常である場合には、サーバ装置からの応答がなく、クライアント装置ではそれ以上の処理を続行せずに処理を終了する。
第1の実施形態と異なる点のもう一つは、サーバ装置から更新プログラムを受信したとき(S206−YES)にブートフラグを「更新中」に変更し(S608)、更新プログラムを全て受信したとき(S206−NO)にブートフラグを「更新済み」に変更する(S610)処理が加えられている点である。このように、ブートフラグによって、更新中であるか否かが判別可能である。
1−B.サーバ側処理
本実施形態におけるメインプログラム更新時のサーバ側処理は、第1の実施形態における処理(図5B)と基本的に同様である。異なる点は、イグニッションOFF時にクライアント装置100から更新用プログラムのハッシュ値を取得し、測定結果判定部212が正常状態記憶部214を参照して更新用プログラムが正しいか否か検査する処理(S702)が加えられている点である。更新用プログラムのハッシュ値が正常である場合(S704−YES)は、第1の実施形態と同様の処理(S302以降)を実行する。一方、更新用プログラムのハッシュ値が異常である場合(S704−NO)は、クライアント装置に異常が発生したことを記録し、このクライアント装置についてのプログラム更新処理はそれ以上実行せずに終了する。
[2.プログラム検査処理(システム起動時)]
次に、図10A,10Bを参照して、システム起動時のプログラム検査処理を説明する。図10Aはプログラム検査時におけるクライアント装置100において実行される処理の流れを示し、図10Bはサーバ装置200において実行される処理の流れを示す。
2−A.クライアント側処理
クライアント装置100では、イグニッションがONされると(S800)、コード測定部106がブートフラグを参照して、更新中(すなわち、更新処理が途中で失敗したか)否かを確認する(S802)。ブートフラグが「更新中」を示している場合(S804−YES)は、メインプログラムの更新処理が途中で失敗しメインプログラムが不整合な状態であることが分かる。そこで、メインプログラムの更新処理を再度行うために、コード測定部106が更新用プログラム142と外部通信用プログラム143のハッシュ値を求め、ユニークIDとともにサーバ装置200へ送信する(S806)。サーバ装置200から、更新用プログラム142と外部通信用プログラム143の両方が正常である(「
SW正常」)旨の通知を受信した場合(S808−YES)は、更新処理を行う(S810)。このステップS810における更新処理は、図9AのフローチャートのステップS204以降の処理に相当する。そして、更新処理が完了したら、メインプログラムを実行する(S818)。一方、更新用プログラム142または外部通信用プログラム143のいずれかが異常である(「SW異常」)旨の通知を受信した場合(S808−NO)は、更新処理を正しく行えない可能性があるため、それ以上何も行わずに電源をOFFして処理を終了する。
また、ブートフラグが「更新済み」を示している場合(S804−NO)は、コード測定部106がメインプログラム141と外部通信用プログラム143のハッシュ値を求め、ユニークIDとともにサーバ装置200へ送信する(S814)。ここで、前回のメインプログラム更新処理は正常に終了しているため、この段階で更新用プログラム142は実行しないため、検査を省略することができる。サーバ装置から、メインプログラム141と外部通信用プログラム143の両方が正常である(「SW正常」)旨の通知を受信した場合は、メインプログラムを実行する(S818)。一方、メインプログラム141または外部通信用プログラム143のいずれかが異常である(「SW異常」)旨の通知を受信した場合(S816−NO)は、それ以上何も行わずに電源をOFFして処理を終了する。
2−B.サーバ側処理
サーバ装置200では、イグニッションがONされると(S900)、クライアント装置100からプログラムのハッシュ値を受信する。そして、測定結果判定部212が、正常状態記憶部214を利用して受信したプログラムのハッシュ値が正しいか否か検査する(S902)。クライアント装置100から送信されるハッシュ値は、メインプログラムと外部通信用プログラムの2つ、または、更新用プログラムと外部通信用プログラムの2つのプログラムのハッシュ値である。受信したハッシュ値の両方が正常であるか判定し(S904)、いずれかに異常がある場合(S904−NO)には、クライアント装置100に異常が発生したと記録して(S906)、このクライアント装置についての検査処理は終了する。
一方、クライアント装置から受信した2つのハッシュ値の両方が正しい場合は、測定結果判定部212が「SW正常」をクライアント装置へ通知する(S908)。ここで、クライアント装置100から送信されたハッシュ値の1つがメインプログラムのものである場合(S910−YES)には、クライアント装置においてメインプログラムが実行されるので、サーバ装置側での処理は終了する。クライアント装置100から送信されたハッシュ値にメインプログラムのものが含まれない場合(S910−NO)は、クライアント装置100でメインプログラムの更新処理が実行されるので、このクライアント装置について更新プログラムが存在するか確認する(S912)。更新プログラムが存在する場合(S912−YES)は、更新処理を実行する(S914)。ステップS914の更新処理は、図9BにおけるステップS302以降の処理に相当する。一方、このクライアント装置に対応する更新プログラムが存在しない場合(S912)は、クライアント装置のブートフラグは「更新中」であることを示しているにもかかわらず、更新プログラムが存在しないので、ブートフラグに異常があることが分かる。そこで、サーバ装置200は、クライアント装置のブートフラグに異常があると記録して、検査処理を終了する。この場合、サーバ装置側での更新処理が実行されないので、クライアント装置の更新処理(S810)も実行されず、したがってクライアント装置のメインプログラムは実行されない。
(実施形態の作用・効果)
本実施形態によっても、クライアント装置のメインプログラム更新処理が途中で失敗した場合であっても、更新処理を再開して正常なメインプログラムを実行できる。また、シ
ステム起動時に、メインプログラム等の検査を行ってからメインプログラムを実行しているので、メインプログラム等に改ざんがあればそれを検知して、改ざんされたプログラムが実行されないようにすることができる。
本実施形態においては、ブートフラグによって更新処理の途中であるか否かを管理しているため、システム起動時に算出するハッシュ値がメインプログラムと外部通信用プログラム、または、更新用プログラムと外部通信用プログラムの2つのみとすることができる。ハッシュ値の算出は計算量の多い処理であるので、求めるハッシュ値を3つから2つにすることで、プログラム検査に要する時間を短縮することが可能である。
ここで、ブートフラグは耐タンパ性デバイスではなく汎用記憶装置に格納されているため、改ざんされる危険がある。ただし、ブートフラグが改ざんされた場合であっても、改ざんされたプログラムが実行されることはない。以下、そのことを説明する。
(a)実際は「更新済み」であるが、ブートフラグは「更新中」を示している場合
この場合、クライアント装置は更新用プログラムと外部通信用プログラムのハッシュ値をサーバに送信し(S814)、サーバ側では更新処理を実行しようとするが、更新プログラムが存在しないため、ブートフラグに改ざんがあることが分かる(S912,S916)。また、仮にブートフラグの改ざんが、更新プログラムの配布のタイミングと一致した場合であっても、クライアント装置が新しいメインプログラムを取得することになるので問題は生じない。
(b)実際は「更新中」であるが、ブートフラグは「更新済み」を示している場合
この場合、クライアント装置はメインプログラムと外部通信用プログラムのハッシュ値をサーバに送信する(S806)。ここで、更新処理の失敗によりクライアント装置のメインプログラムは不整合な状態となっているため、メインプログラムのハッシュ値が異常であることがサーバ装置において判別可能である。したがって、異常なプログラムが実行されることはない。
ただし、ブートフラグに改ざんがなく(すなわち、更新処理が正常に終了しており)、その後にメインプログラムに改ざんがあった場合も、同様の判断がなされる。したがって、ブートフラグが改ざんされたのか、ブートフラグは改ざんされずにメインプログラムが改ざんされたのかを区別することができない。
したがって、本実施形態においては、更新処理が中断した場合であって、ブートフラグに改ざんがない場合のみ更新処理の再開を行い、フラグまたはプログラムに改ざんがあった場合には復旧処理は行わない。本実施形態によってもプログラム等に改ざんがあればそれを検知して不正なプログラムが実行されるのを防ぐことができる。
100 クライアント装置
102 外部通信部、 104 暗号関連処理部、 106 コード測定部、 108 ユニークID記憶部、 110 メインプログラム記憶部、 112 プログラム更新部、 114 ブートフラグ記憶部
200 サーバ装置
202 外部通信部、 204 暗号関連処理部、 206 更新プログラム管理部、 208 現在プログラム記憶部、 210 更新プログラム記憶部、 212 測定結果判定部、 214 正常状態記憶部

Claims (6)

  1. 互いに通信可能なサーバ装置と複数のクライアント装置とから構成され、
    前記クライアント装置は、
    プロセッサと、
    メインプログラム、前記メインプログラムを更新するための更新用プログラム、サーバ装置および他のクライアント装置と通信を行うための外部通信用プログラムを記憶する記憶手段と、
    を有し、
    前記サーバ装置は、
    クライアント装置が記憶しているメインプログラムを記憶する現在プログラム記憶部と、
    クライアント装置に配布すべき最新版のメインプログラムを記憶する更新プログラム記憶部と、
    クライアント装置に最新版のメインプログラムを配布する更新プログラム管理部と、
    クライアント装置と通信を行うための外部通信部と、
    を有し、
    クライアント装置が前記更新用プログラムを実行することにより、最新版のメインプログラムをサーバ装置から取得して、前記記憶手段内のメインプログラムを更新するコンピューターシステムであって、
    前記クライアント装置は、前記メインプログラム、前記更新用プログラムおよび前記外部通信用プログラムのダイジェスト値を求めるための、耐タンパ性デバイスで構成されたコード測定部をさらに有し、
    前記サーバ装置は、各クライアント装置について、メインプログラム、更新用プログラムおよび外部通信用プログラムの正しいダイジェスト値を記憶する正常状態記憶部をさらに有し、
    クライアント装置は、起動時に、メインプログラム、更新用プログラムおよび外部通信用プログラムのダイジェスト値をコード測定部によって求めてサーバ装置に送信し、
    サーバ装置は、クライアント装置から受信した3つのダイジェスト値それぞれが正しいか否か判定し、
    クライアント装置は、前記3つのハッシュの全てが正しい場合はメインプログラムを実行し、メインプログラムのダイジェスト値のみが異常の場合は更新用プログラムによってメインプログラムの更新を実行し、それ以外の場合は起動処理を終了する
    ことを特徴とするコンピューターシステム。
  2. メインプログラムのダイジェスト値のみが異常であって更新用プログラムによってメインプログラムの更新を実行するときに、
    サーバ装置の更新プログラム管理部は、更新プログラム記憶部に最新版のメインプログラムが存在する場合は当該メインプログラムをクライアント装置に配布し、更新プログラム記憶部に最新版のメインプログラムが存在しない場合は、現在プログラム記憶部内のメインプログラムをクライアント装置に配布する
    ことを特徴とする請求項1に記載のコンピューターシステム。
  3. 前記サーバ装置は、クライアント装置から受信した前記3つのダイジェスト値の全てが正しい場合は、前記コンピューターシステム内で共通の暗号鍵をクライアント装置に送信し、
    前記クライアント装置は、メインプログラム実行後にサーバ装置または他のクライアント装置と通信する場合は前記暗号鍵を用いた通信を行い、他のクライアント装置からの通信に前記暗号鍵が用いられていない場合は当該通信を無視する
    ことを特徴とする請求項1または2に記載のコンピューターシステム。
  4. 互いに通信可能なサーバ装置と複数のクライアント装置とから構成され、
    前記クライアント装置は、
    プロセッサと、
    メインプログラム、前記メインプログラムを更新するための更新用プログラム、サーバ装置、他のクライアント装置と通信を行うための外部通信用プログラム、および、前記更新用プログラムによる前記メインプログラムの更新処理を実行中であるか否かを示すフラグを記憶する記憶手段と、
    を有し、
    前記サーバ装置は、
    クライアント装置が記憶しているメインプログラムを記憶する現在プログラム記憶部と、
    クライアント装置に配布すべき最新版のメインプログラムを記憶する更新プログラム記憶部と、
    クライアント装置に最新版のメインプログラムを配布する更新プログラム管理部と、
    クライアント装置と通信を行うための外部通信部と、
    を有し、
    クライアント装置が前記更新用プログラムを実行することにより、最新版のメインプログラムをサーバ装置から取得して、前記記憶手段内のメインプログラムを更新するコンピューターシステムであって、
    前記クライアント装置は、前記メインプログラム、前記更新用プログラムおよび前記外部通信用プログラムのダイジェスト値を求めるための、耐タンパ性デバイスで構成されたコード測定部をさらに有し、
    前記サーバ装置は、各クライアント装置について、メインプログラム、更新用プログラムおよび外部通信用プログラムの正しいダイジェスト値を記憶する正常状態記憶部をさらに有し、
    (1)クライアント装置の起動時に、前記フラグによってメインプログラムの更新処理の実行中ではないと判断される場合は、
    クライアント装置は、メインプログラムおよび外部通信用プログラムのダイジェスト値を前記コード測定部によって求めてサーバ装置に送信し、
    サーバ装置は、クライアント装置から送信されるメインプログラムおよび外部通信用プログラムのダイジェスト値が正しいか否か判定し、
    クライアント装置は、メインプログラムおよび外部通信用プログラムのダイジェスト値が正しい場合はメインプログラムを実行し、
    (2)クライアント装置の起動時に、前記フラグによってメインプログラムの更新処理の実行中であると判断される場合は、
    クライアント装置は、更新用プログラムおよび外部通信用プログラムのダイジェスト値を前記コード測定部によって求めてサーバ装置に送信し、
    サーバ装置は、クライアント装置から送信される更新用プログラムおよび外部通信用プログラムのダイジェスト値が正しいか否か判定し、
    クライアント装置は、更新用プログラムおよび外部通信用プログラムのダイジェスト値が正しい場合は、更新用プログラムによってメインプログラムの更新処理を実行する
    ことを特徴とするコンピューターシステム。
  5. メインプログラムのダイジェスト値のみが異常であって更新用プログラムによってメインプログラムの更新を実行するときに、
    サーバ装置の更新プログラム管理部は、更新プログラム記憶部に最新版のメインプログラムが存在しない場合は、クライアント装置の前記フラグが改ざんされたと判断する
    ことを特徴とする請求項4に記載のコンピューターシステム。
  6. 前記サーバ装置は、クライアント装置から受信した前記メインプログラムおよび外部通信用プログラムのダイジェスト値が正しい場合は、前記コンピューターシステム内で共通の暗号鍵をクライアント装置に送信し、
    前記クライアント装置は、メインプログラム実行後にサーバ装置または他のクライアント装置と通信する場合は、前記暗号鍵を用いて秘匿通信または署名付き通信を行う
    ことを特徴とする請求項4または5に記載のコンピューターシステム。
JP2009265150A 2009-11-20 2009-11-20 コンピューターシステム Withdrawn JP2011108167A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009265150A JP2011108167A (ja) 2009-11-20 2009-11-20 コンピューターシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009265150A JP2011108167A (ja) 2009-11-20 2009-11-20 コンピューターシステム

Publications (1)

Publication Number Publication Date
JP2011108167A true JP2011108167A (ja) 2011-06-02

Family

ID=44231528

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009265150A Withdrawn JP2011108167A (ja) 2009-11-20 2009-11-20 コンピューターシステム

Country Status (1)

Country Link
JP (1) JP2011108167A (ja)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014056381A (ja) * 2012-09-12 2014-03-27 Keihin Corp 車両の電子制御装置
WO2015041161A1 (ja) * 2013-09-20 2015-03-26 国立大学法人名古屋大学 書換検出システム、書換検出装置及び情報処理装置
JP2015079440A (ja) * 2013-10-18 2015-04-23 富士通株式会社 修正プログラム確認方法、修正プログラム確認プログラム、及び情報処理装置
JP2016107908A (ja) * 2014-12-09 2016-06-20 株式会社デンソー 車載ネットワークシステム
JP2018026151A (ja) * 2017-09-28 2018-02-15 Kddi株式会社 データ提供システム及びデータ提供方法
WO2018207587A1 (ja) * 2017-05-09 2018-11-15 株式会社オートネットワーク技術研究所 車載中継装置、制御プログラム及びメモリ共有方法
JP2019101706A (ja) * 2017-11-30 2019-06-24 株式会社日立製作所 車載ソフトウェア配信システム、車載ソフトウェア配信サーバ、及び車載ソフトウェア配信方法
JP2019111908A (ja) * 2017-12-22 2019-07-11 株式会社デンソーテン プログラム制御装置、プログラム制御システムおよびプログラム制御方法
JP2019215754A (ja) * 2018-06-13 2019-12-19 キヤノン株式会社 情報処理装置とその制御方法、及びプログラム
WO2020179592A1 (ja) * 2019-03-04 2020-09-10 株式会社オートネットワーク技術研究所 車載更新装置、更新処理プログラム及び、プログラムの更新方法
JP2021012428A (ja) * 2019-07-03 2021-02-04 本田技研工業株式会社 ソフトウェア更新装置、サーバ装置、ソフトウェア更新方法、およびプログラム
US11212109B2 (en) 2016-08-10 2021-12-28 Kddi Corporation Data provision system, data security device, data provision method, and computer program
US11392693B2 (en) 2019-06-21 2022-07-19 Fanuc Corporation Validity confirmation equipment

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014056381A (ja) * 2012-09-12 2014-03-27 Keihin Corp 車両の電子制御装置
WO2015041161A1 (ja) * 2013-09-20 2015-03-26 国立大学法人名古屋大学 書換検出システム、書換検出装置及び情報処理装置
JP2015058896A (ja) * 2013-09-20 2015-03-30 国立大学法人名古屋大学 書換検出システム、書換検出装置及び情報処理装置
CN105555615A (zh) * 2013-09-20 2016-05-04 国立大学法人名古屋大学 改写检测系统、改写检测装置以及信息处理装置
US10049232B2 (en) 2013-09-20 2018-08-14 National University Corporation Nagoya University Rewrite detection system, rewrite detection device and information processing device
CN104572320B (zh) * 2013-10-18 2018-09-14 富士通株式会社 用于确认校正程序的方法以及信息处理设备
JP2015079440A (ja) * 2013-10-18 2015-04-23 富士通株式会社 修正プログラム確認方法、修正プログラム確認プログラム、及び情報処理装置
CN104572320A (zh) * 2013-10-18 2015-04-29 富士通株式会社 用于确认校正程序的方法以及信息处理设备
US10157050B2 (en) 2013-10-18 2018-12-18 Fujitsu Limited Method for confirming correction program and information processing apparatus
JP2016107908A (ja) * 2014-12-09 2016-06-20 株式会社デンソー 車載ネットワークシステム
US11212109B2 (en) 2016-08-10 2021-12-28 Kddi Corporation Data provision system, data security device, data provision method, and computer program
JP2018190223A (ja) * 2017-05-09 2018-11-29 株式会社オートネットワーク技術研究所 車載中継装置、制御プログラム及びメモリ共有方法
WO2018207587A1 (ja) * 2017-05-09 2018-11-15 株式会社オートネットワーク技術研究所 車載中継装置、制御プログラム及びメモリ共有方法
JP2018026151A (ja) * 2017-09-28 2018-02-15 Kddi株式会社 データ提供システム及びデータ提供方法
JP2019101706A (ja) * 2017-11-30 2019-06-24 株式会社日立製作所 車載ソフトウェア配信システム、車載ソフトウェア配信サーバ、及び車載ソフトウェア配信方法
JP2019111908A (ja) * 2017-12-22 2019-07-11 株式会社デンソーテン プログラム制御装置、プログラム制御システムおよびプログラム制御方法
JP7025200B2 (ja) 2017-12-22 2022-02-24 株式会社デンソーテン プログラム制御装置、プログラム制御システムおよびプログラム制御方法
JP2019215754A (ja) * 2018-06-13 2019-12-19 キヤノン株式会社 情報処理装置とその制御方法、及びプログラム
JP7100502B2 (ja) 2018-06-13 2022-07-13 キヤノン株式会社 情報処理装置とその制御方法、及びプログラム
WO2020179592A1 (ja) * 2019-03-04 2020-09-10 株式会社オートネットワーク技術研究所 車載更新装置、更新処理プログラム及び、プログラムの更新方法
CN113453959A (zh) * 2019-03-04 2021-09-28 株式会社自动网络技术研究所 车载更新装置、更新处理程序及程序的更新方法
US11630659B2 (en) 2019-03-04 2023-04-18 Autonetworks Technologies, Ltd. In-vehicle update device, update processing program, and program update method
US11392693B2 (en) 2019-06-21 2022-07-19 Fanuc Corporation Validity confirmation equipment
JP2021012428A (ja) * 2019-07-03 2021-02-04 本田技研工業株式会社 ソフトウェア更新装置、サーバ装置、ソフトウェア更新方法、およびプログラム
JP7063853B2 (ja) 2019-07-03 2022-05-09 本田技研工業株式会社 ソフトウェア更新装置、サーバ装置、ソフトウェア更新方法、およびプログラム

Similar Documents

Publication Publication Date Title
JP2011108167A (ja) コンピューターシステム
EP3646173B1 (en) Theft and tamper resistant data protection
JP6773617B2 (ja) 更新制御装置、ソフトウェア更新システムおよび更新制御方法
EP3319266B1 (en) Software distribution processing device, vehicle, software distribution processing method, and computer program
JP5864510B2 (ja) 修正プログラム確認方法、修正プログラム確認プログラム、及び情報処理装置
US9132790B2 (en) In-vehicle network system
CN105827587B (zh) 中继设备、终端设备和通信方法
US8935530B2 (en) Control device and computer readable medium
JP5949572B2 (ja) 車両不正状態検出方法、車載システムにおける制御方法、およびシステム
JP2010011400A (ja) 共通鍵方式の暗号通信システム
JP5861597B2 (ja) 認証システムおよび認証方法
JP6387908B2 (ja) 認証システム
JP2011003020A (ja) コンピューターシステムおよびプログラム起動方法
JP2012048488A (ja) コンピュータシステム
KR20180046593A (ko) 펌웨어 서명 검증과 보안키 관리를 위한 사물인터넷 디바이스의 펌웨어 업데이트 시스템
JP4818824B2 (ja) プログラム管理システムおよび端末装置
US20170180392A1 (en) Method and device for transmitting software
WO2020137852A1 (ja) 情報処理装置
US20220209946A1 (en) Key revocation for edge devices
JP2019532402A (ja) セキュア・ブート更新にわたる保護済みの機密情報の維持
JP7067508B2 (ja) ネットワークシステム
CN106415565B (zh) 保护软件项目
CN106953728B (zh) 一种数据传输方法和电子设备
US11526598B2 (en) Microcontroller and semiconductor device
CN110971443B (zh) 网络接口设备和方法

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20130205