(57)【要約】  本発明による制御装置は、制御用のソフトウェアを格納する記憶部と、記憶部に格納されたソフトウェアによって制御対象を制御するデータ処理部とを備える。記憶部は、任意のデータ参照を許可する参照先変数に関するデータが登録されたホワイトリストデータを格納する。また、データ処理部は、プログラム検証手段によって、書き換えソフトウェアにおける参照先変数に関する変数情報データが、ホワイトリストデータに登録されているデータのみで構成されているか否かを判定し、構成されていると判定したら、記憶部に格納されているソフトウェアの書き換えソフトウェアへの書き換えを許可し、構成されていないと判定したら書き換えを禁止する。これにより、ソフトウェアの不正書き換えを確実に防止することができる。
2014207859.tif 000002
【特許請求の範囲】
【請求項１】
制御用のソフトウェアを格納する記憶部と、前記記憶部に格納された前記ソフトウェアによって制御対象を制御するデータ処理部と、を備える制御装置において、
前記記憶部は、任意のデータ参照を許可する参照先変数に関するデータが登録されたホワイトリストデータを格納し、
前記データ処理部は、書き換えソフトウェアにおける参照先変数に関する変数情報データが、前記ホワイトリストデータに登録されているデータのみで構成されているか否かを判定し、構成されていると判定したら前記記憶部に格納されている前記ソフトウェアの前記書き換えソフトウェアへの書き換えを許可し、構成されていないと判定したら前記書き換えを禁止するプログラム検証手段を備えることを特徴とする制御装置。
【請求項２】
請求項１に記載された制御装置において、前記データ処理部は、前記記憶部に格納されている前記ソフトウェアを前記書き換えソフトウェアに書き換えることを許可したら、前記変数情報データに基づいて前記ホワイトリストデータを更新するホワイトリスト作成手段を備えることを特徴とする制御装置。
【請求項３】
請求項１に記載された制御装置において、
前記記憶部は前記制御用ソフトウェアにおける変数間の参照関係に関する制御変数間参照関係データと、任意のアクセスを禁止する変数に関するアクセス禁止変数データを格納し、
前記データ処理部は、前記制御変数間参照関係データと、前記アクセス禁止変数データとに基づいて、前記ホワイトリストデータを作成するホワイトリスト作成手段を備えることを特徴とする制御装置。
【請求項４】
請求項３に記載された制御装置において、
前記データ処理部は、前記記憶部に格納されている前記ソフトウェアを前記書き換えソフトウェアに書き換えることを許可したら、前記変数情報データに基づいて前記制御変数間参照関係データを更新する参照関係更新手段を備え、
前記ホワイトリスト作成手段は、更新された前記制御変数間参照関係データと前記アクセス禁止データとに基づいて、前記記憶部に格納される前記ホワイトリストデータを更新することを特徴とする制御装置。
【請求項５】
請求項１に記載された制御装置において、
前記データ処理部は、前記書き換えソフトウェアにおける変数間の参照関係を解析して前記変数情報データを出力するソースコード解析手段を備えることを特徴とする制御装置。
【請求項６】
請求項５に記載された制御装置において、
前記ソースコード解析手段は、前記書き換えソフトウェアが実行される前に、前記変数間の参照関係を解析することを特徴とする制御装置。
【請求項７】
請求項１に記載の制御装置において、
前記ホワイトリストデータは、制御装置から外部出力される制御信号である制御変数以外の変数で構成されることを特徴とする制御装置。
【請求項８】
請求項１に記載の制御装置において、
前記ホワイトリストデータは、大域変数で構成されることを特徴とする制御装置。
【請求項９】
請求項１に記載の制御装置において、
前記記憶部は、前記プログラム検証手段が、前記ホワイトリストデータに登録されているデータで構成されていないと判定した前記変数情報データを格納することを特徴とする制御装置。
【請求項１０】
請求項１に記載の制御装置において、
前記ホワイトリストデータは固定されていることを特徴とする制御装置。
【請求項１１】
制御用のソフトウェアを格納する記憶部と、前記記憶部に格納された前記ソフトウェアによって制御対象を制御するデータ処理部とを備える制御装置と、
書き換えソフトウェアを格納し、前記制御装置へ前記書き換えソフトウェアを送信する外部装置と、
を備えるソフトウェア書き換えシステムにおいて、
前記記憶部は、任意のデータ参照を許可する参照先変数に関するデータが登録されたホワイトリストデータを格納し、
前記データ処理部は、書き換えソフトウェアにおける参照先変数に関する変数情報データが、前記ホワイトリストデータに登録されているデータのみで構成されているか否かを判定し、構成されていると判定したら前記記憶部に格納されている前記ソフトウェアの前記書き換えソフトウェアへの書き換えを許可し、検証結果データとして正常結果を前記外部装置に出力し、構成されていないと判定したら前記書き換えを禁止し、前記検証結果データとしてエラー結果を前記外部装置に出力するプログラム検証手段を備え、
前記外部装置は、前記正常結果および前記エラー結果を表示する表示装置を備えることを特徴とするソフトウェア書き換えシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象をソフトウェアによって制御する制御装置に関する。
【背景技術】
【０００２】
自動車、エレベータ、建設機械、家電機器等の技術分野では、いわゆる組込みソフトウェアによって制御対象を制御する組込み制御装置が用いられている。組込みソフトウェアによる制御は、従来の機械的機構や電気回路による制御方式に比べて、柔軟かつ高度な制御が実現できるという利点、並びにソフトウェアの書換えによって市場への供給後であっても動作を変更できるという利点を有する。【０００３】
このような組込み制御装置、例えば自動車のエンジン制御装置（以下、ＥＣＵと記す）では、エンジンを制御するための制御ソフトウェアを、電気的に記憶内容の書き換えが可能なメモリに格納しておくことで、必要に応じて制御ソフトウェアを書き換えることが可能である。【０００４】
制御ソフトウェアが書き換え可能な制御装置は、臨機応変に制御ソフトウェアを変更することが可能だが、不正な書き換えに対しては、これを防止する機能を備えている。【０００５】
制御装置の制御ソフトウェアが不正に書き換えられることを防止する技術としては、特開２０１２−２３４４３７号公報（特許文献１）に記載の技術が知られている。本技術においては、制御ソフトウェア書き換え時に、特定の２個のＥＣＵ間における接続確認用データの一致を確認することで、安全性を確保する。【０００６】
また、特開２００８−２３９０２１号公報（特許文献２）に記載の技術も知られている。本技術においては、車両制御装置の制御ソフトウェア書き換え時に、ユーザが入力したＩＤコードと車両に予め登録されたＩＤコードとを比較することでユーザを識別し、特定のユーザによる制御ソフトウェアの書き換えのみを許可する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−２３４４３７号公報
【特許文献２】特開２００８−２３９０２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記特許文献１に記載された技術においては、二個のＥＣＵを接続したまま不正にソフトウェア書き換えが行われる場合に関しては考慮されていない。また特許文献２に記載された技術では、ＩＤコードが不正に入手された場合に関しては考慮されていない。従って、これらの従来技術では、組込みソフトウェアによる制御の適用拡大や高機能化に伴う、不正書き換えに対する安全性の向上という要請に対しては、十分な対応が難しい。【０００９】
そこで、本発明は、ソフトウェアの不正書き換えに対する安全性を向上することができる制御装置を提供する。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明による制御装置においては、任意のデータ参照を許可する参照先変数に関するデータが登録されたホワイトリストデータを用いて、ソフトウェア書き換えの禁止及び許可を判定する。【００１１】
上記本発明の一態様である制御装置は、制御用のソフトウェアを格納する記憶部と、記憶部に格納されたソフトウェアによって制御対象を制御するデータ処理部とを備える。記憶部は、任意のデータ参照を許可する参照先変数に関するデータが登録されたホワイトリストデータを格納する。また、データ処理部は、プログラム検証手段によって、書き換えソフトウェアにおける参照先変数に関する変数情報データが、ホワイトリストデータに登録されているデータのみで構成されているか否かを判定し、構成されていると判定したら、記憶部に格納されているソフトウェアの書き換えソフトウェアへの書き換えを許可し、構成されていないと判定したら書き換えを禁止する。
【発明の効果】
【００１２】
本発明によれば、書き換えソフトウェア自体が不正なものであるか否かを判定するため、ソフトウェアの不正書き換えを確実に防止することができる。【００１３】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態である制御装置におけるソフトウェア書き換えの処理手順を示すフローチャートである。
【図２】本発明の一実施形態である制御装置のシステム構成図である。
【図３】実施形態における、データの流れを示すブロック図である。
【図４】アクセス禁止変数データの具体例を示す。
【図５】制御変数間参照関係データの具体例を示す。
【図６】制御変数間参照関係データを、別の表記方法を用いて示した図である。
【図７】ホワイトリスト作成器が実行する処理を示すフローチャートである。
【図８】ホワイトリストデータの具体例を示す。
【図９】実施形態におけるホワイトリストデータの具体例を示す図。
【図１０】書き換えプログラムデータの具体例を示す。
【図１１】書き換えプログラムデータの別の具体例を示す。
【図１２】ソースコード解析器が実行する処理を示すフローチャートである。
【図１３】参照関係データの具体例を示す。
【図１４】参照関係データの他の具体例を示す。
【図１５】プログラム検証器が実行する処理を示すフローチャートである。
【図１６】表示装置に表示された検証結果データの一例を示す。
【図１７】表示装置に表示された検証結果データの他の例を示す。
【図１８】参照関係更新器が実行する処理を示すフローチャートである。
【図１９】更新後の制御変数間参照関係データの具体例を示す。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施形態について説明する。なお、本実施形態である制御装置は、制御装置内に格納された制御用ソフトウェアによって制御対象を制御する。例えば、本実施形態をＥＣＵに適用する場合、制御対象および制御用ソフトウェアは、それぞれ、自動車のエンジンおよびエンジン制御プログラムとなる。
【００１６】
図１は、本発明の一実施形態である制御装置におけるソフトウェア書き換えの主たる処理手順を示すフローチャートである。ステップＳ１００１から処理が始まる。ステップＳ１００２で書き換えソフトウェアを入力する。ステップＳ１００３で任意のデータ参照を許可する変数情報を記憶したホワイトリストデータを入力する。ステップＳ１００４で、書き換えソフトウェアがホワイトリストデータに記憶された変数のみで構成されているか否かを判定する。構成されていると判定された場合（Ｙｅｓ）、ステップＳ１００５に進み、構成されていないと判定された場合（Ｎｏ）、ステップＳ１００６に進む。ステップＳ１００５では、書き換えを許可してソフトウェアを書き換える。ステップＳ１００６では、ソフトウェアの書き換えを禁止する。ステップＳ１００７で処理を終了する。
【００１７】
図２は本発明の一実施形態である制御装置のシステム構成図である。制御装置１は、データ処理部１１とデータベース１２とを有する。データ処理部１１としては、例えばマイクロコンピュータ等の演算処理装置が用いられる。また、データベース１２は、半導体メモリ等の記憶装置に格納される。
【００１８】
データ処理部１１は、ソースコード解析部１１１と、ホワイトリスト作成器１１２と、プログラム検証器１１３と、参照関係更新器１１４を有する。これらの手段は、データ処理部１１が後述するような処理手順に関するプログラムを読み込んで動作することにより、データ処理部１１に備わる機能である。処理手順に関するプログラムは、データベース１２と同様に記憶装置に格納される。なお、データ処理部１１は、制御対象を制御するための制御信号を作成する公知の手段を有するが、本手段については図示および詳細な説明は省略する。
【００１９】
データベース１２は、書き換えプログラムデータ１２１と、参照関係データ１２２と、アクセス禁止変数データ１２３と、制御変数間参照関係データ１２４と、ホワイトリストデータ１２５と、検証結果データ１２６を有する。
【００２０】
ソフトウェアを書き換えるためには、制御装置１に、外部装置である書き換えツール２００が接続される。書き換えツール２００は、書き換えソフトウェアを格納し、この書き換えソフトウェアを制御装置１に送信する。書き換えツールとしては、例えば、パーソナルコンピュータが用いられる。後述するように、データ処理部１１は、ホワイトリストデータ１２５を用いて、書き換えツール２００から送信される書き換えソフトウェアの適否を判定し、判定結果に応じて書き換えを許可または禁止する。書き換えが許可されたことおよび禁止されたことは、書き換えツール２００の表示装置２０１（例えば、ディスプレイ装置）に表示される。
【００２１】
図３は本実施形態における、データの流れを示すブロック図である。ソースコード解析器１１１は、システムに新しく書き換えるソフトウェアである書き換えプログラムデータ１２１を入力とし、書き換えプログラムデータ１２１中の変数の代入参照関係を示す参照関係データ１２２を出力する。ホワイトリスト作成器１１２は、任意のアクセスを禁止する変数を示すアクセス禁止変数データ１２３と、書き換え前のソフトウェアすなわちプログラム中の変数の代入参照関係を示す制御変数間参照関係データ１２４とを入力とし、任意アクセスすることを許可された変数の集合であるホワイトリストデータ１２５を出力する。プログラム検証器１１３は、参照関係データ１２２とホワイトリストデータ１２５とを入力し、入力した参照関係データ１２２とホワイトリストデータ１２５とを照合した結果を示す検証結果データ１２６を出力する。参照関係更新器１１４は、参照関係データ１２２と、検証結果データ１２６と、制御変数間参照関係データ１２４とを入力とし、検証結果データ１２６に基づき参照関係データ１２２の内容を制御変数間参照関係データ１２４に追加する。表示装置２０１は検証結果データ１２６の内容を表示する。
【００２２】
図４は、アクセス禁止変数データ１２３の具体例を示す。アクセス禁止変数データ１２３１は書き換えプログラムからの任意アクセスを禁止する変数の集合で構成されている。本実施形態では、変数ｋが、任意アクセスを禁止する変数である。
【００２３】
図５は、制御変数間参照関係データ１２４の具体例を示す。制御変数間参照関係データ１２４１は書き換え前のプログラム中の変数の代入参照関係情報の集合で構成されている。本実施形態では、制御変数間参照関係データは、プログラム中の２変数間の参照関係を示すデータである。例えば、書き換え前のプログラム中でｂ＝ａ＋ｆのような演算処理が存在する場合、変数ａとｆを参照元変数と定義し、変数ｂを参照先変数と定義する。このように変数間の代入参照関係により、プログラム中のどの変数がどの変数に影響を与えているかを示す。
【００２４】
図６は、制御変数間参照関係データ１２４を、別の表記方法を用いて示した図である。制御変数間参照関係データ１２４２は変数を示すノードと、参照関係を示す矢印とで構成されている。ここで、矢印の根元にある変数（例えば、ａ，ｆ）が参照元変数であり、矢印の先にある変数（例えば、ｂ）が参照先変数である。
【００２５】
図７は、ホワイトリスト作成器１１２が実行する処理を示すフローチャートである。
【００２６】
ステップＳ１１２１から処理が始まる。ステップＳ１１２２において、ホワイトリスト作成器１１２は、アクセス禁止変数データ１２３と制御変数間参照関係データ１２４とを入力する。
【００２７】
ステップＳ１１２３において、ホワイトリスト作成器１１２は、制御変数間参照関係データ１２４中の変数の内、アクセス禁止変数データ１２３中の変数から参照されている全ての変数を記憶する。すなわち、アクセス禁止変数データ１２３中の変数を参照先変数とする全ての参照元変数を抽出して記憶する。本実施形態においては、禁止変数ｋを参照先変数とする参照元変数ｇを抽出して記憶する（図４，５参照）。
【００２８】
ステップＳ１１２４において、ホワイトリスト作成器１１２は、制御変数間参照関係データ１２４の内、ステップＳ１１２３で記憶した変数を参照先変数とする全ての参照元変数を抽出して記憶する。本実施形態においては、ステップＳ１１２３で記憶した変数ｇを参照先変数とする参照元変数ｃ，ｈを抽出して記憶する（図５参照）。
【００２９】
ステップＳ１１２５において、ホワイトリスト作成器１１２は、ステップＳ１１２４で記憶した変数の個数が０個であるか否かを判定する。０個ではないと判定された場合（ＮＯ）、記憶した変数を参照先変数とする参照元変数が存在する可能性があるため、ステップＳ１１２４を再度実行し、この時点で記憶している変数を参照先変数とする参照元変数を抽出して記憶する。０個であると判定した場合（ＹＥＳ）、ステップＳ１１２６へ進む。本実施形態において、ホワイトリスト作成器１１２は、最初にステップＳ１１２４を実行する際に、２個の変数ｃ，ｈを記憶するので、再度ステップＳ１１２４を実行する。その結果、変数ｃ，ｈを参照先変数とする参照元変数は無いため（図５参照）、ステップＳ１１２４の再実行によって、ホワイトリスト作成器１１２がさらに抽出して記憶する変数は無い。このため、次にステップＳ１１２５を実行すると、直前のステップＳ１１２４で記憶した変数の個数は０個であると判定し、次にステップＳ１１２６を実行する。
【００３０】
ステップＳ１１２６において、ホワイトリスト作成器１１２は、制御変数間参照関係データ１２４中の変数の内、アクセス禁止変数以外、かつステップＳ１１２３およびステップＳ１１２４で記憶した変数以外の全ての変数を抽出して、ホワイトリストデータ１２５として記憶する。本実施形態では、アクセス禁止変数はｋであり、ステップＳ１１２３およびＳ１１２４において記憶した変数がｃ，ｇ，ｈであるから、これら以外の変数ａ，ｂ，ｄ，ｅ，ｆをホワイトリストデータとして抽出して記憶する。
【００３１】
ステップＳ１１２７において、ホワイトリスト作成器１１２は、ステップＳ１１２６において記憶したホワイトリストデータ１２５を出力してデータベース１２に登録し、ステップＳ１１２８で処理を終了する。
【００３２】
図８は、ホワイトリストデータ１２５の具体例を示す。ホワイトリストデータ１２５１は、ホワイトリスト作成器１１２が図７に示した処理を実行することにより作成されるデータである。図８が示すように、ホワイトリストデータ１２５１は、書き換えを許可する変数すなわち許可変数ａ，ｂ，ｄ，ｅ，ｆを有する。図５および図６に示した制御変数間参照関係データ１２４と対比すると判るように、ホワイトリストデータ１２５１は、アクセス禁止変数ｋと直接的あるいは間接的に参照関係にある変数以外の変数、すなわちアクセス禁止変数データｋに影響を与えていない変数のみで構成されている。
【００３３】
図９にホワイトリストデータ１２５の具体例を別の表記方法で示す。ホワイトリストデータ１２５２は変数をノード、変数間の参照関係を矢印で示している。本図において、ノードｋを終点とする矢印の始点となるノードは、直接的にはノードｇ、間接的にはノードｃ，ｈである。従って、ホワイトリストデータ１２５２は、ノードｋを終点とする矢印の始点とはならないノード、すなわち図中の破線部で囲まれたノードである変数ａ，ｂ，ｄ，ｅ，ｆから構成される。
【００３４】
図１０は、書き換えプログラムデータ１２１の具体例を示す。書き換えプログラム１２１１は、変数としてｌ，ｍ，ｎをそれぞれ新しく定義している。また、新たなプログラムとしてｎｅｗＦｕｎｃＡを定義している。
【００３５】
図１１は、書き換えプログラムデータ１２１の別の具体例を示す。書き換えプログラム１２１２は、変数としてｌ，ｍ，ｎをそれぞれ新しく定義している。また、新たなプログラムとしてｎｅｗＦｕｎｃＢを定義している。
【００３６】
図１２は、ソースコード解析器１１１が実行する処理を示すフローチャートである。ステップＳ１１１１から処理が始まる。ステップＳ１１１２において、ソースコード解析器１１１は、書き換えプログラムデータ１２１を入力する。ステップＳ１１１３において、ステップＳ１１１２で入力した書き換えプログラムデータ１２１中の変数の代入参照関係を解析して記憶する。ステップＳ１１１４においては、ステップＳ１１１３で記憶した変数の代入参照関係を、参照関係データ１２２として出力し、データベース１２に登録する。
【００３７】
図１３は、参照関係データ１２２の具体例を示す。参照関係データ１２２１は、ソースコード解析器１１１によって解析された、図１０の書き換えプログラム１２１１中の変数ａ，ｆ，ｌ，ｍ，ｎの参照関係を示している。ソースコード解析器１１１は、図１２に示した処理フローに従って、図１０の書き換えプログラム１２１１を入力し、プログラム中の演算式ａ＝Ｋ＊ｌ（Ｋ：定数）およびｆ＝ｍ−ｎから、変数ｌと変数ａの間の参照関係、並びに変数ｍおよびｎと変数ｆの間の参照関係（図１３）を解析してデータベースに登録する。
【００３８】
図１４は、参照関係データ１２２の他の具体例を示す。参照関係データ１２２２は、ソースコード解析器１１１によって解析された、図１１の書き換えプログラム１２１２中の変数ａ，ｃ，ｌ，ｍ，ｎの参照関係を示している。ソースコード解析器１１１は、図１２に示した処理フローに従って、図１１の書き換えプログラム１２１２を入力し、プログラム中の演算式ａ＝Ｋ＊ｌ（Ｋ：定数）およびｃ＝ｍ−ｎから、変数ｌと変数ａの間の参照関係、並びに変数ｍおよびｎと変数ｃの間の参照関係（図１４）を解析してデータベースに登録する。
【００３９】
図１５はプログラム検証器１１３が実行する処理を示すフローチャートである。
【００４０】
ステップＳ１１３１から処理が始まる。ステップＳ１１３２において、プログラム検証器１１３は、ステップＳ１１３２において参照関係データ１２２とホワイトリストデータ１２５を入力する。
【００４１】
ステップＳ１１３３においては、ステップＳ１１３２において入力した参照関係データ１２２とホワイトリストデータ１２５を照合して、参照関係データ１２２における参照先情報中の変数がホワイトリストデータ１２５に登録されているか否かを判定する。判定結果に基づき、ステップＳ１１３４において、参照関係データ１２２の参照先情報中にホワイトリストデータ１２５に登録されていない変数が存在するか否かを判定する。存在すると判定した場合（ＹＥＳ）、ステップＳ１１３５に進み、存在しないと判定した場合（ＮＯ）、ステップＳ１１３６に進む。
【００４２】
ステップＳ１１３５においては、検証結果データ１２６としてエラー結果を出力する。ステップＳ１１３６においては、検証結果データとして正常結果を出力する。その後、ステップＳ１１３７で処理を終了する。
【００４３】
本実施形態において、制御プログラムを図１０の書き換えプログラム１２１１に書き換えようとする場合、プログラム検証器１１３は、図１３の参照関係データ１２２１と図８のホワイトリストデータ１２５１を入力する。入力したこれらデータを照合し、参照関係データ１２２１の参照先変数ａ，ｆがホワイトリスト１２５１に登録された許可変数であると判定する。この判定結果に基づいて、プログラム検証器１１３は、参照関係データ１２２１の参照先変数にホワイトリストデータ１２１に登録されていない変数は存在しない（ＮＯ）と判定し、検証結果データとして正常結果を出力する。
【００４４】
また、制御プログラムを図１１の書き換えプログラム１２１２に書き換えようとする場合、プログラム検証器１１３は、図１４の参照関係データ１２２２と図８のホワイトリストデータ１２５１を入力する。入力したこれらデータを照合し、参照関係データ１２２２の参照先変数ａ，ｆについて、変数ａはホワイトリスト１２５１に登録された許可変数であり、変数ｃはホワイトリスト１２５１に登録された許可変数ではないと判定する。この判定結果に基づいて、プログラム検証器１１３は、参照関係データ１２２２の参照先変数にホワイトリストデータ１２１に登録されていない変数が存在する（ＹＥＳ）と判定し、検証結果データとしてエラー結果を出力する。
【００４５】
図１６は、書き換えツール２００の表示装置２０１に表示された検証結果データ１２６の一例を示す。検証結果データ１２６１は検証結果データ１２６が正常結果だった場合である。上述したように、参照関係データ１２２１（図１３）を用いた場合、プログラム検証器１１３は、図１５のステップＳ１１３４においてＮＯと判定するため、正常結果を出力する。この出力に基づき、書き換えツール２００は、表示装置２０１に、正常結果を示す検証結果データ１２６１を表示する。
【００４６】
図１７は、書き換えツール２００の表示装置２０１に表示された検証結果データ１２６の他の例を示す。検証結果データ１２６２は検証結果データ１２６がエラー結果だった場合である。上述したように、参照関係データ１２２２（図１４）を用いた場合、プログラム検証器１１３は、図１５のステップＳ１１３４においてＹＥＳと判定するため、エラー結果を出力する。この出力に基づき、書き換えツール２００は、表示装置２０１に、エラー結果を示す検証結果データ１２６２を表示する。
【００４７】
図１８は、参照関係更新器１１５が実行する処理を示すフローチャートである。
【００４８】
ステップＳ１１５１から処理が始まる。ステップＳ１１５２において、参照関係更新器１１５は、検証結果データ１２６を入力する。ステップＳ１１５３において、検証結果データが正常結果であるか否かを判定する。正常結果であると判定した場合（ＹＥＳ）、ステップＳ１１５４に進み、正常結果ではないと判定した場合（ＮＯ）、ステップＳ１１５８に進んで処理を終了する。
【００４９】
ステップＳ１１５４において、制御変数間参照関係データ１２４と、書き換えプログラムの参照関係データ１２２とを入力する。ステップＳ１１５５において、ステップＳ１１５４で入力した参照関係データ１２２の内、ステップＳ１１５４で入力した制御変数参照関係データ１２４に存在しないデータを抽出して、制御変数間参照関係データ１２４に追加登録する。
【００５０】
ステップＳ１１５６において、参照関係データ１２２の全てのデータについてステップＳ１１５５を実行したか否かを判定する。実行したと判定した場合（ＹＥＳ）、ステップＳ１１５７に進み、実行していない、すなわち未実行のデータがあると判定した場合（ＮＯ）、ステップＳ１１５５に進む。ステップＳ１１５７において、参照関係更新器１１５は、書き換えプログラムにおける新規な参照関係データが登録された制御変数間参照関係データ１２４を出力し、データベース１２に登録する。その後、ステップＳ１１５８で処理を終了する。
【００５１】
図１９は、参照関係更新器１１５から出力された、更新後の制御変数間参照関係データ１２４の具体例を示す。本具体例は、図１０の書き換えプログラム１２１１に書き換える場合であり、次のようにして出力される。まず、参照関係更新器１１５は、検証結果データ１２６を入力し、検証結果データ１２６は正常結果であると判定する。次に、参照関係データ１２２１（図１３）および制御変数間参照関係データ１２４１（図５）を入力する。入力した参照関係データ１２２１の内、入力した制御変数参照関係データ１２４１に存在しないデータ、この場合は参照関係データ１２２１（図１３）のすべてのデータを抽出して、制御変数間参照関係データ１２４１に追加登録する。これにより、図１９に示すように、制御変数間参照関係データ１２４１に参照関係データ１２２１が追加された、更新後の制御変数間参照関係データ１２４２が得られる。
【００５２】
さらに、更新後の制御変数間参照関係データ１２４とアクセス禁止変数データ１２３とを用いて、ホワイトリスト作成器１１２が、前述した図７に示した処理を実行して、ホワイトリストデータ１２５を更新する。本実施形態において、図１０の書き換えプログラム１２１１に書き換える場合、すなわち、書き換えが許可される場合、ホワイトリスト作成器１１２は、アクセス禁止変数データ１２３１（図４）と、参照関係更新器１１５によって更新された制御変数間参照関係データ１２４１（図１９）とから、ホワイトリストデータ１２５１（図８）に許可変数として変数ｌ，ｍ，ｎが追加される更新されたホワイトリストデータ１２５を作成して出力する。
【００５３】
上記実施形態によれば、参照先変数に関するホワイトリストデータにより、書き換えソフトウェア自体が不正なものであるか否かを判定するので、ソフトウェアの不正な書き換えを確実に防止できる。さらに、参照関係更新器により更新された制御変数参照関係データによりホワイトリストデータを更新するので、制御装置が常時最新のホワイトリストを備えることができる。
【００５４】
上述した実施形態に限らず、本発明の技術的思想の範囲内において、種々の実施形態並びに前述した実施形態の変形が可能である。
【００５５】
例えば、書き換えプログラムにおける変数間の参照関係を解析するソースコード解析器は、書き換えられたプログラムの一部を制御装置が実行している状態で、解析を進めても良いし、実行される前に解析しても良い。後者については、書き換えプログラム全体について不正か否かを検証してから制御装置によりプログラムが実行されるので、安全性が向上する。
【００５６】
ホワイトリストデータは、制御装置から外部出力される制御信号である制御変数以外の変数で構成することができる。この制御変数は不正なソフトウェア書き換えに対する高い安全性を要求される変数であるため、このような制御変数以外の変数でホワイトリストデータを構成することにより、プログラムの不正書き換えに対する安全性が向上する。
【００５７】
また、ホワイトリストデータは、プログラム中における有効範囲が制限されない変数、すなわち、いわゆる大域変数（グローバル変数）で構成することができる。言い換えれば、ホワイトリストデータは、プログラム中において有効範囲が制限される局所変数（ローカル変数）以外の変数で構成することができる。局所変数は不正なソフトウェア書き換えに対する高い安全性を要求される変数であるため、局所変数以外の変数すなわち大域変数でホワイトリストデータを構成することにより、プログラムの不正書き換えに対する安全性が向上する。
【００５８】
さらに、プログラム検証器は、書き換えプログラムにおける参照先変数に関する変数情報の内、ホワイトリストデータに登録されているデータで構成されていないと判定した変数情報データをデータベースに登録しても良い。
【００５９】
また、本発明は、インターネットなどのネットワークを介して外部装置から書き換えプログラムデータを制御装置へ送信する場合にも適用できる。
【００６０】
さらに、本発明は、自動車制御用ＥＣＵに限らず、昇降機、建設機械、医療用機器、家庭用電気機器などにおける組み込みソフトウェアを備えた制御装置に適用できる。いずれに適用した場合でも、不正なソフトウェア書き換えに対する安全性を向上できる。なお、家庭用電気機器などのように、一般消費者が使用する機器や、製品サイクルが短く低コストが要求される機器では、ホワイトリストデータを更新せずに固定されたものとしても良い。
【符号の説明】
【００６１】
１      制御装置，１１    データ処理部，１２    データベース，１１１  ソースコード解析器，１１２  ホワイトリスト作成器，１１３  プログラム検証器，１１４  参照関係更新器，１２１  書き換えプログラムデータ，１２２  参照関係データ，１２３  アクセス禁止変数データ，１２４  制御変数間参照関係データ，１２５  ホワイトリストデータ，１２６  検証結果データ，２００  書き換えツール，２０１  表示装置
【図１】
2014207859.tif 000003
【図２】
2014207859.tif 000004
【図３】
2014207859.tif 000005
【図４】
2014207859.tif 000006
【図５】
2014207859.tif 000007
【図６】
2014207859.tif 000008
【図７】
2014207859.tif 000009
【図８】
2014207859.tif 000010
【図９】
2014207859.tif 000011
【図１０】
2014207859.tif 000012
【図１１】
2014207859.tif 000013
【図１２】
2014207859.tif 000014
【図１３】
2014207859.tif 000015
【図１４】
2014207859.tif 000016
【図１５】
2014207859.tif 000017
【図１６】
2014207859.tif 000018
【図１７】
2014207859.tif 000019
【図１８】
2014207859.tif 000020
【図１９】
2014207859.tif 000021
【手続補正書】
【提出日】平成25年10月24日(2013.10.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
制御用のソフトウェアを格納する記憶部と、前記記憶部に格納された前記ソフトウェアによって制御対象を制御するデータ処理部と、を備える制御装置において、
前記記憶部は、任意のデータ参照を許可する参照先変数に関するデータが登録されたホワイトリストデータを格納し、
前記データ処理部は、書き換えソフトウェアにおける参照先変数に関する変数情報データが、前記ホワイトリストデータに登録されているデータのみで構成されているか否かを判定し、構成されていると判定したら前記記憶部に格納されている前記制御用のソフトウェアの前記書き換えソフトウェアへの書き換えを許可し、構成されていないと判定したら前記書き換えを禁止するプログラム検証手段を備えることを特徴とする制御装置。
【請求項２】
請求項１に記載された制御装置において、前記データ処理部は、前記記憶部に格納されている前記制御用のソフトウェアを前記書き換えソフトウェアに書き換えることを許可したら、前記変数情報データに基づいて前記ホワイトリストデータを更新するホワイトリスト作成手段を備えることを特徴とする制御装置。
【請求項３】
請求項１に記載された制御装置において、
前記記憶部は前記制御用のソフトウェアにおける変数間の参照関係に関する制御変数間参照関係データと、任意のアクセスを禁止する変数に関するアクセス禁止変数データを格納し、
前記データ処理部は、前記制御変数間参照関係データと、前記アクセス禁止変数データとに基づいて、前記ホワイトリストデータを作成するホワイトリスト作成手段を備えることを特徴とする制御装置。
【請求項４】
請求項３に記載された制御装置において、
前記データ処理部は、前記記憶部に格納されている前記制御用のソフトウェアを前記書き換えソフトウェアに書き換えることを許可したら、前記変数情報データに基づいて前記制御変数間参照関係データを更新する参照関係更新手段を備え、
前記ホワイトリスト作成手段は、更新された前記制御変数間参照関係データと前記アクセス禁止変数データとに基づいて、前記記憶部に格納される前記ホワイトリストデータを更新することを特徴とする制御装置。
【請求項５】
請求項１に記載された制御装置において、
前記データ処理部は、前記書き換えソフトウェアにおける変数間の参照関係を解析して前記変数情報データを出力するソースコード解析手段を備えることを特徴とする制御装置。
【請求項６】
請求項５に記載された制御装置において、
前記ソースコード解析手段は、前記書き換えソフトウェアが実行される前に、前記変数間の参照関係を解析することを特徴とする制御装置。
【請求項７】
請求項１に記載の制御装置において、
前記ホワイトリストデータは、制御装置から外部出力される制御信号である制御変数以外の変数で構成されることを特徴とする制御装置。
【請求項８】
請求項１に記載の制御装置において、
前記ホワイトリストデータは、大域変数で構成されることを特徴とする制御装置。
【請求項９】
請求項１に記載の制御装置において、
前記記憶部は、前記プログラム検証手段が、前記ホワイトリストデータに登録されているデータで構成されていないと判定した前記変数情報データを格納することを特徴とする制御装置。
【請求項１０】
請求項１に記載の制御装置において、
前記ホワイトリストデータは固定されていることを特徴とする制御装置。
【請求項１１】
制御用のソフトウェアを格納する記憶部と、前記記憶部に格納された前記制御用のソフトウェアによって制御対象を制御するデータ処理部とを備える制御装置と、
書き換えソフトウェアを格納し、前記制御装置へ前記書き換えソフトウェアを送信する外部装置と、
を備えるソフトウェア書き換えシステムにおいて、
前記記憶部は、任意のデータ参照を許可する参照先変数に関するデータが登録されたホワイトリストデータを格納し、
前記データ処理部は、書き換えソフトウェアにおける参照先変数に関する変数情報データが、前記ホワイトリストデータに登録されているデータのみで構成されているか否かを判定し、構成されていると判定したら前記記憶部に格納されている前記制御用のソフトウェアの前記書き換えソフトウェアへの書き換えを許可し、検証結果データとして正常結果を前記外部装置に出力し、構成されていないと判定したら前記書き換えを禁止し、前記検証結果データとしてエラー結果を前記外部装置に出力するプログラム検証手段を備え、
前記外部装置は、前記正常結果および前記エラー結果を表示する表示装置を備えることを特徴とするソフトウェア書き換えシステム。
【国際調査報告】
2014207859.tif 000022
2014207859.tif 000023
2014207859.tif 000024
2014207859.tif 000025