(57)【要約】【課題】ソフトウェアの更新時におけるセキュリティをさらに向上させる情報処理装置を提供する。【解決手段】ＥＣＵ２において、車両制御部２１は、第１プログラム４１を実行して車両を制御する。プログラム更新部２２は、車両制御部２１の停止中に、第２プログラム４２を実行して第１プログラム４１を更新する。エントロピー生成部２１１は、ＥＣＵ２の状態を示す情報及び車両の状態を示す情報の少なくとも１つに基づいてエントロピー４３を生成する。プログラム更新部２２は、エントロピー４３を用いて乱数４４を生成し、乱数４４を用いて認証キー２Ｋを生成する。新制御装置８は、乱数４４を用いて認証キー８Ｋを生成する。プログラム更新部２２は、認証キー２Ｋ及び８Ｋに基づいて、更新制御装置８の正当性を判断する。【選択図】図２
2020088458.tif 000002
【特許請求の範囲】
【請求項１】
車両に搭載される情報処理装置であって、
前記車両に関する制御に用いられる第１プログラムを記憶する第１記憶領域と、前記第１記憶領域に記憶された第１プログラムの更新に用いられる第２プログラムを記憶する第２記憶領域とを含む記憶装置と、
前記第１記憶領域に記憶された第１プログラムを実行する車両制御部と、
前記車両制御部の停止中に、前記第２記憶領域に記憶された第２プログラムを実行するプログラム更新部と、を備え、
前記車両制御部は、
前記情報処理装置の状態を示す情報及び前記車両の状態を示す情報の少なくとも１つに基づいて変数を生成する変数生成部、を含み、
プログラム更新部は、
前記変数生成部により生成された変数を用いて乱数を生成する乱数生成部と、
前記乱数生成部により生成された乱数を、前記第１記憶領域に記憶された第１プログラムの更新を制御する更新制御装置に送信する送信部と、
前記乱数生成部により生成された乱数を用いて第１認証情報を生成する認証情報生成部と、
前記更新制御装置が前記送信部から受信した乱数に基づいて生成した第２認証情報を取得し、前記認証情報生成部により生成された第１認証情報と、前記更新制御装置から取得された第２認証情報とに基づいて前記更新制御装置の正当性を判断する認証部と、を含む情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記変数生成部は、前記情報処理装置の状態を示す情報と前記情報処理装置の状態を示す情報との両者に基づいて前記変数を生成する、情報処理装置。
【請求項３】
請求項１又は２に記載の情報処理装置であって、
前記変数生成部は、前記第１プログラムの実行中に前記変数を繰り返し生成し、繰り返し生成された複数の変数に基づいて前記乱数生成部により用いられる変数を生成する、情報処理装置。
【請求項４】
請求項３に記載の情報処理装置であって、
前記変数生成部は、前記変数の生成に使用する情報の取得先を、前記変数を生成するたびに切り替える、情報処理装置。
【請求項５】
請求項１〜４のいずれか１項に記載の情報処理装置であって、さらに、
前記情報処理装置が起動してからの時間を計測するタイマ、を備え、
前記変数生成部は、前記タイマにより計測された時間に基づいて前記変数を生成する、情報処理装置。
【請求項６】
請求項１〜５のいずれか１項に記載の情報処理装置であって、
前記変数生成部は、前記車両に搭載されたバッテリの出力電圧に基づいて前記変数を生成する、情報処理装置。
【請求項７】
所定の処理に用いられる第１プログラムを記憶する第１記憶領域と、前記第１記憶領域に記憶された第１プログラムの更新に用いられる第２プログラムを記憶する第２記憶領域とを含む記憶装置と、
前記第１記憶領域に記憶された第１プログラムを実行する制御部と、
前記制御部の停止中に、前記第２記憶領域に記憶された第２プログラムを実行するプログラム更新部と、を備え、
前記制御部は、
前記情報処理装置の状態を示す情報に基づいて変数を生成する変数生成部、を含み、
プログラム更新部は、
前記変数生成部により生成された変数を用いて乱数を生成する乱数生成部と、
前記乱数生成部により生成された乱数を、前記第１記憶領域に記憶された第１プログラムの更新を制御する更新制御装置に送信する送信部と、
前記乱数生成部により生成された乱数を用いて第１認証情報を生成する認証情報生成部と、
前記更新制御装置が前記送信部から受信した乱数に基づいて生成した第２認証情報を取得し、前記認証情報生成部により生成された第１認証情報と、前記更新制御装置から取得された第２認証情報とに基づいて前記更新制御装置の正当性を判断する認証部と、を含む情報処理装置。
【請求項８】
車両に関する制御に用いられる第１プログラムを記憶する第１記憶領域と、前記第１記憶領域に記憶された第１プログラムの更新に用いられる第２プログラムを記憶する第２記憶領域とを含む記憶装置を備える情報処理装置の制御方法であって、
前記情報処理装置の状態を示す情報及び前記車両の状態を示す情報の少なくとも１つに基づいて変数を生成するステップと、
前記生成された変数を用いて乱数を生成するステップと、
前記生成された乱数を、前記第１記憶領域に記憶された第１プログラムの更新を制御する更新制御装置に送信するステップと、
前記生成された乱数を用いて第１認証情報を生成するステップと、
前記更新制御装置が前記送信された乱数に基づいて生成した第２認証情報を取得するステップと、
前記生成された第１認証情報と、前記更新制御装置から取得された第２認証情報とに基づいて前記更新制御装置の正当性を判断するステップと、を備える情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置に記憶されたプログラムを更新する情報処理装置に関する。
【背景技術】
【０００２】
自動車等の車両には、複数のＥＣＵ（Electronic Control Unit）が搭載される。複数のＥＣＵの各々は、エンジンや、パワーステアリング装置、エアバッグ、トランスミッション等の様々な機器を制御する情報処理装置である。
【０００３】
ＥＣＵは、マイクロコンピュータであり、不揮発性の記憶装置に記憶されたソフトウェアを実行する。不揮発性の記憶装置は、マイクロコンピュータに搭載される。不揮発性の記憶装置に記憶されたソフトウェアが更新される場合、ＥＣＵは、更新制御装置と通信して更新用のソフトウェアを取得し、取得した更新用のソフトウェアで、不揮発性の記憶装置に記憶されたソフトウェアを書き換える。更新制御装置は、リプロツールと呼ばれることがある。
【０００４】
特許文献１は、車両に搭載された車載端末のソフトウェアを更新する情報配信システムを開示している。特許文献１に係る情報配信システムにおいて、車載端末は、暗号化されたソフトウェアをサーバから取得し、取得したソフトウェアを復号する。車載端末は、取得したソフトウェアを復号する前に、復号に用いられるソフトウェア固有鍵の正当性を検証する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−１４９１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＥＣＵは、記憶装置に記憶されたソフトウェアを更新する前に、更新用のソフトウェアを供給する更新制御装置を認証する。ＥＣＵのソフトウェアが不正に更新されることを防ぐために、更新制御装置の認証時におけるＥＣＵのセキュリティをさらに高める必要がある。
【０００７】
本発明の目的は、ソフトウェアの更新時におけるセキュリティをさらに向上させる情報処理装置を提供することである。
【課題を解決するための手段】
【０００８】
第１の発明は、車両に搭載される情報処理装置であって、記憶装置と、車両制御部と、プログラム更新部とを備える。記憶装置は、第１記憶領域と、第２記憶領域とを含む。第１記憶領域は、車両に関する制御に用いられる第１プログラムを記憶する。第２記憶領域は、第１記憶領域に記憶された第１プログラムの更新に用いられる第２プログラムを記憶する。車両制御部は、第１記憶領域に記憶された第１プログラムを実行する。プログラム更新部は、車両制御部の停止中に、第２記憶領域に記憶された第２プログラムを実行する。車両制御部は、変数生成部を含む。変数生成部は、情報処理装置の状態を示す情報及び車両の状態を示す情報の少なくとも１つに基づいて変数を生成する。プログラム更新部は、乱数生成部と、送信部と、認証情報生成部と、認証部とを含む。乱数生成部は、変数生成部により生成された変数を用いて乱数を生成する。送信部は、乱数生成部により生成された乱数を、第１記憶領域に記憶された第１プログラムの更新を制御する更新制御装置に送信する。認証情報生成部は、乱数生成部により生成された乱数を用いて第１認証情報を生成する。認証部は、更新制御装置が送信部から受信した乱数に基づいて生成した第２認証情報を取得し、認証情報生成部により生成された第１認証情報と、更新制御装置から取得された第２認証情報とに基づいて更新制御装置の正当性を判断する。
【０００９】
第１の発明によれば、変数が情報処理装置の状態を示す情報及び車両の状態を示す情報の少なくとも１つに基づいて生成される。情報処理装置の状態及び車両の状態は、車両ごとに大きく異なるため、生成される変数のばらつきを大きくすることができる。変数のばらつきが大きくなることに伴って、変数に基づいて生成される乱数のばらつきを大きくすることができる。この結果、第三者が情報処理装置から更新制御装置に送信される乱数を傍受したとしても、傍受された乱数に基づく総当たり攻撃が成功する可能性を大幅に低減することができる。従って、ソフトウェアの更新時における認証のセキュリティをさらに向上させることができる。
【００１０】
第２の発明は、第１の発明であって、変数生成部は、情報処理装置の状態を示す情報と情報処理装置の状態を示す情報との両者に基づいて変数を生成する。
【００１１】
第２の発明によれば、ばらつきの大きい少なくとも２つの情報に基づいて、変数が生成される。この結果、乱数のばらつきをさらに大きくすることができるため、認証のセキュリティをさらに向上させることができる。
【００１２】
第３の発明は、第１又は第２の発明であって、変数生成部は、第１プログラムの実行中に変数を繰り返し生成し、繰り返し生成された複数の変数に基づいて乱数生成部により用いられる変数を生成する。
【００１３】
第３の発明によれば、ばらつきの大きい変数が繰り返しされる。乱数生成に用いられる変数が、ばらつきの大きい複数の変数から生成される。この結果、乱数のばらつきをさらに大きくすることができるため、認証のセキュリティをさらに向上させることができる。
【００１４】
第４の発明は、第３の発明であって、変数生成部は、変数の生成に使用する情報の取得先を、変数を生成するたびに切り替える。
【００１５】
第４の発明によれば、変数生成に用いられる情報が、変数を生成するたびに変更される。この結果、乱数のばらつきをさらに大きくすることができるため、認証のセキュリティをさらに向上させることができる。
【００１６】
第５の発明は、第１〜第４の発明のいずれかであって、さらに、タイマを備える。タイマは、情報処理装置が起動してからの時間を計測する。変数生成部は、タイマにより計測された時間に基づいて変数を生成する。
【００１７】
第５の発明によれば、情報処理装置が起動してからの時間は、車両のイグニッションスイッチがオンされるタイミングに依存するため、車両ごとに大きく異なる。情報処理装置が起動してからの時間を変数の生成に用いることによって、各車両の情報処理装置により生成される変数のばらつきを大きくすることができる。
【００１８】
第６の発明は、第１〜第５の発明のいずれかであって、変数生成部は、車両に搭載されたバッテリの出力電圧に基づいて変数を生成する。
【００１９】
第６の発明によれば、バッテリの出力電圧は、車両によって大きく異なる。バッテリの出力電圧を変数の生成に用いることによって、各車両の情報処理装置により生成される変数のばらつきを大きくすることができる。
【００２０】
第７の発明は、情報処理装置であって、記憶装置と、制御部と、プログラム更新部とを備える。記憶装置は、第１記憶領域と、第２記憶領域とを含む。第１記憶領域は、所定の処理に用いられる第１プログラムを記憶する。第２記憶領域は、第１記憶領域に記憶された第１プログラムの更新に用いられる第２プログラムを記憶する。制御部は、第１記憶領域に記憶された第１プログラムを実行する。プログラム更新部は、制御部の停止中に、第２記憶領域に記憶された第２プログラムを実行する。制御部は、変数生成部を含む。変数生成部は、前記制御部の状態を示す情報に基づいて変数を生成する。プログラム更新部は、乱数生成部と、送信部と、認証情報生成部と、認証部とを含む。乱数生成部は、変数生成部により生成された変数を用いて乱数を生成する。送信部は、乱数生成部により生成された乱数を、第１記憶領域に記憶された第１プログラムの更新を制御する更新制御装置に送信する。認証情報生成部は、乱数生成部により生成された乱数を用いて第１認証情報を生成する。認証部は、更新制御装置が送信部から受信した乱数に基づいて生成した第２認証情報を取得し、認証情報生成部により生成された第１認証情報と、更新制御装置から取得された第２認証情報とに基づいて更新制御装置の正当性を判断する。
【００２１】
第７の発明によれば、変数が制御部の状態を示す情報に基づいて生成される。制御部の状態は、情報処理装置ごとに大きく異なるため、生成される変数のばらつきを大きくすることができる。変数のばらつきが大きくなることに伴って、変数に基づいて生成される乱数のばらつきを大きくすることができる。この結果、第三者が情報処理装置から更新制御装置に送信される乱数を傍受したとしても、傍受された乱数に基づく総当たり攻撃が成功する可能性を大幅に低減することができる。従って、ソフトウェアの更新時における認証のセキュリティをさらに向上させることができる。
【００２２】
第８の発明は、車両に関する制御に用いられる第１プログラムを記憶する第１記憶領域と、第１記憶領域に記憶された第１プログラムの更新に用いられる第２プログラムを記憶する第２記憶領域とを含む記憶装置を備える情報処理装置の制御方法である。第７の発明は、ａ）ステップと、ｂ）ステップと、ｃ）ステップと、ｄ）ステップと、ｅ）ステップと、ｆ）ステップとを備える。ａ）ステップは、情報処理装置の状態を示す情報及び車両の状態を示す情報の少なくとも１つに基づいて変数を生成する。ｂ）ステップは、生成された変数を用いて乱数を生成する。ｃ）ステップは、生成された乱数を、第１記憶領域に記憶されたプログラムの更新を制御する更新制御装置に送信する。ｄ）ステップは、生成された乱数を用いて第１認証情報を生成する。ｅ）ステップは、更新制御装置が送信部から受信した乱数に基づいて生成した第２認証情報を取得する。ｆ）ステップは、認証情報生成部により生成された第１認証情報と、更新制御装置から取得された第２認証情報とに基づいて更新制御装置の正当性を判断する。
【００２３】
第８の発明は、第１の発明に用いられる。
【発明の効果】
【００２４】
本発明は、ソフトウェアの更新時における認証のセキュリティをさらに向上させた情報処理装置を提供できる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施の形態に係る情報処理装置を含むソフトウェア更新システムの構成を示す機能ブロック図である。
【図２】図１に示す情報処理装置の構成を示す機能ブロック図である。
【図３】図１に示す情報処理装置のハードウェア構成を示すブロック図である。
【図４】図２に示す記憶装置に記憶されるプログラムの格納領域の一例を示す図である。
【図５】図１に示すソフトウェア更新システムの動作を示すシーケンス図である。
【図６】図５に示すエントロピー生成処理のフローチャートである。
【発明を実施するための形態】
【００２６】
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
【００２７】
［１．構成］
［１．１．ソフトウェア更新システム１００の構成］
図１は、本発明の実施の形態に係る情報処理装置２を含むソフトウェア更新システム１００の構成を示す機能ブロック図である。図１を参照して、ソフトウェア更新システム１００は、情報処理装置２により実行されるソフトウェアを更新する。
【００２８】
情報処理装置２は、車両１に搭載されるＥＣＵ（Electronic Control Unit）である。情報処理装置２は、車両１に関する制御を行う。具体的には、情報処理装置２は、車両１に搭載されたエンジンを制御する。以下、情報処理装置２を「ＥＣＵ２」と記載する場合がある。
【００２９】
車両１は、ＥＣＵ２と、エンジン１１と、モータジェネレータ１２と、バッテリ１３と、温度センサ１４と、オドメータ１５とを備える。図１において、ＥＣＵ２のソフトウェアの更新とＥＣＵ２の動作とに関する車両１の構成以外の車両１の構成を省略している。
【００３０】
ＥＣＵ２は、エンジン制御用のプログラムを実行して、エンジン１１を制御する。ＥＣＵ２は、更新制御装置８と通信して、エンジン制御用のプログラムを構成する。エンジン制御用のプログラムの更新の詳細については、後述する。
【００３１】
エンジン１１は、車両１の動力源である。エンジン１１は、動力を発生させ、発生した動力から得られる回転力を車両１の駆動輪に回転力を与える。
【００３２】
モータジェネレータ１２は、バッテリ１３から供給される電力によりエンジン１１を始動させる。モータジェネレータ１２は、エンジン１１の回転により発電する。モータジェネレータ１２は、車両１が減速する際に回生ブレーキとして動作する。モータジェネレータ１２は、発電により得られた電力をバッテリ１３に供給する。
【００３３】
バッテリ１３は、ＥＣＵ２やオドメータ１５など、車両１に搭載される電気機器の各々に電圧を供給する。バッテリ１３は、モータジェネレータ１２から供給される電力により充電される。車両１がハイブリッド車両である場合、バッテリ４は、駆動輪を回転させるモータに電力を供給してもよい。以下の説明において、バッテリ１３からＥＣＵ２に出力される電圧を、「出力電圧Ｖｏ」と記載する。
【００３４】
温度センサ１４は、車両１の外気温を計測し、外気温の計測値ＴｏをＥＣＵ２に供給する。以下の説明において、外気温の計測値Ｔｏを「外気温Ｔｏ」と記載する場合がある。
【００３５】
オドメータ１５は、車両１の走行距離を計測し、走行距離の計測値ＤｏをＥＣＵ２に供給する。走行距離の計測値Ｄｏは、車両１の累計走行距離を示す。以下の説明において、走行距離の計測値Ｄｏを「走行距離Ｄｏ」と記載する場合がある。
【００３６】
［１．２．ＥＣＵ２の構成］
図２は、図１に示すＥＣＵ２の構成を示す機能ブロック図である。図２を参照して、ＥＣＵ２は、車両制御部２１と、更新制御部２２と、記憶装置２３と、クロック生成回路２４とを備える。
【００３７】
車両制御部２１は、記憶装置２３に記憶された第１プログラム４１を実行して、エンジン１１を制御する。第１プログラム４１は、エンジン制御用のプログラムである。
【００３８】
車両制御部２１は、変数生成部２１１とタイマ２１２とを含む。タイマ２１２は、ＥＣＵ２が起動してからの時間を計測する。起動時間Ｐｏは、タイマ２１２により計測された時間であり、エントロピー４３の生成に用いられる。
【００３９】
変数生成部２１１は、ＥＣＵ２の状態を示す情報及び車両１の状態を示す情報の少なくとも一方に基づいて、エントロピー４３を生成する。起動時間Ｐｏは、ＥＣＵ２の状態を示す情報である。出力電圧Ｖｏ、外気温Ｔｏ及び走行距離Ｄｏは、車両状態を示す情報である。エントロピー４３は、後述する乱数４４の生成に用いられる変数であり、シャノン情報量に相当する。生成されたエントロピー４３は、記憶装置２３に記憶される。
【００４０】
更新制御部２２は、記憶装置２３に記憶された第２プログラム４２を実行して、記憶装置２３に記憶されている第１プログラム４１を更新する。更新制御部２２は、記憶装置２３に記憶されている第１プログラム４１にアクセスしない。
【００４１】
更新制御部２２は、乱数生成部２２１と、送信部２２２と、認証情報生成部２２３と、認証部２２４とを含む。
【００４２】
乱数生成部２２１は、変数生成部２１１により生成されたエントロピー４３を用いて、乱数４４を生成する。乱数生成部２２１は、生成した乱数４４を送信部２２２及び認証情報生成部２２３に出力する。
【００４３】
送信部２２２は、乱数４４を乱数生成部２２１から受け、その受けた乱数４４を更新制御装置８に送信する。
【００４４】
認証情報生成部２２３は、乱数４４を乱数生成部２２１から受け、その受けた乱数４４を用いて認証キー２Ｋを生成する。
【００４５】
認証部２２４は、更新制御装置８により生成された認証キー８Ｋを更新制御装置８から受ける。認証部２２４は、その受けた認証キー８Ｋと、認証情報生成部２２３により生成された認証キー２Ｋとに基づいて、更新制御装置８を認証する。更新制御部２２は、更新制御装置８の正当性を認証によって確認できた場合、更新用の第１プログラム４１を更新制御装置８から取得する。更新制御装置８の認証の詳細については、後述する。
【００４６】
記憶装置２３は、不揮発性の記憶装置であり、本実施の形態ではフラッシュメモリである。記憶装置２３は、第１プログラム４１と、第２プログラム４２と、エントロピー４３とを記憶する。
【００４７】
クロック生成回路２４は、クロック信号を生成し、その生成したクロック信号を車両制御部２１及び更新制御部２２に供給する。車両制御部２１及び更新制御部２２は、クロック生成回路２４からクロック信号と同期して動作する。また、クロック信号は、タイマ２１２によってカウントされる。
【００４８】
図３は、図１に示すＥＣＵ２のハードウェア構成を示すブロック図である。図３を参照して、ＥＣＵ２は、ＣＰＵ（Central Processing Unit）２０１と、ＲＡＭ（Random Access Memory）２０２と、通信インタフェース２０３と、出力インタフェース２０４と、入力インタフェース２０５と、電圧制御部２０６と、バス２０７と、記憶装置２３とを備える。
【００４９】
ＣＰＵ２０１は、ＲＡＭ２０２にロードされたプログラムを実行して、ＥＣＵ２を制御する。ＲＡＭ２０２は、ＥＣＵ２のメインメモリである。ＣＰＵ２０１は、図２に示すクロック生成回路２４を内蔵する。ＣＰＵ２０１は、クロック生成回路２４によって生成されるクロック信号に同期して動作する。
【００５０】
ＣＰＵ２０１がＲＡＭ２０２にロードされた第１プログラム４１を実行する場合、ＣＰＵ２０１は、車両制御部２１として動作する。ＣＰＵ２０１がＲＡＭ２０２にロードされた第２プログラム４２を実行する場合、ＣＰＵ２０１は、更新制御部２２として動作する。ＣＰＵ２０１は、第１プログラム４１と第２プログラム４２とを並行して実行しない。
【００５１】
通信インタフェース２０３は、ＴＣＰ（Transmission Control Protocol）／ＩＰ（Internet Protocol）などのプロトコルを用いて、更新制御装置８と通信する。なお、ＥＣＵ２と更新制御装置８との間の通信方式は、特に限定されない。
【００５２】
出力インタフェース２０４は、ＣＡＮ（Control Area Network）などのプロトコルを用いて、エンジン１１を制御するための制御信号をエンジン１１に出力する。
【００５３】
入力インタフェース２０５は、外気温Ｔｏを温度センサ１４から取得し、走行距離Ｄｏをオドメータ１５から取得する。入力インタフェース２０５は、エンジン１１の状態を示す各種情報をエンジン１１から取得する。出力電圧Ｖｏ、外気温Ｔｏ、走行距離Ｄｏ、及びエンジン１１に関する各種情報の取得には、ＣＡＮなどのプロトコルが用いられる。
【００５４】
電圧制御部２０６は、バッテリ１３から出力電圧Ｖｏを受け、その受けた出力電圧ＶｏをＥＣＵ２の駆動電圧に変換する。電圧制御部２０６は、駆動電圧をＣＰＵ２０１に供給する。図３に示していないが、駆動電圧は、ＲＡＭ２０２、記憶装置２０３、通信インタフェース２０３、出力インタフェース２０４、及び入力インタフェース２０５の各々に供給される。
【００５５】
バス２０７は、ＣＰＵ２０１と、ＲＡＭ２０２と、通信インタフェース２０３と、出力インタフェース２０４と、入力インタフェース２０５と、記憶装置２３とを接続する。
【００５６】
［１．３．記憶領域の割り当て］
図４は、図２に示す記憶装置２３における記憶領域５０の割り当ての一例を示す図である。図４を参照して、記憶装置２３の記憶領域は、コードフラッシュ領域５１と、データフラッシュ領域５２とを有する。
【００５７】
コードフラッシュ領域５１は、ＣＰＵ２０１により実行されるプログラムを記憶するための領域である。第１プログラム４１及び第２プログラム４２は、コードフラッシュ領域５１に書き込まれる。コードフラッシュ領域５１は、通常使用領域５１１と、更新使用領域５１２とに区分される。
【００５８】
通常使用領域５１１は、エンジン１１の制御に用いられるプログラムを記憶する。つまり、第１プログラム４１は、通常使用領域５１１に書き込まれる。ＣＰＵ２０１が車両制御部２１として動作する場合、更新使用領域５１２に書き込まれた第２プログラム４２は、ＲＡＭ２０２にロードされない。
【００５９】
更新使用領域５１２は、通常使用領域５１１に書き込まれたプログラムの更新に用いられるプログラムを記憶する。つまり、第２プログラム４２が、更新使用領域５１２に書き込まれる。ＣＰＵ２０１が更新制御部２２として動作する場合、通常使用領域５１１に書き込まれたプログラムは、ＲＡＭ２０２にロードされない。第１プログラム４１がＲＡＭ２０２にロードされた場合、更新制御部２２が、第１プログラム４１が書き込まれている記憶領域５０に書き込まれた第１プログラム４１を書き換えできないためである。
【００６０】
［２．動作］
［２．１．ソフトウェア更新システム１００の動作］
図５は、図１に示すソフトウェア更新システム１００の動作を示すシーケンス図である。図５を参照しながら、ソフトウェア更新システムの動作を説明する。初期状態において、車両制御部２１が動作しており、更新制御部２２が停止している。つまり、第１プログラム４１が実行中であり、第２プログラム４２はＲＡＭ２０２にロードされていない。また、初期状態において、第１プログラム４１の更新は開始されていない。
【００６１】
車両制御部２１は、エンジン１１の制御と並行して、エントロピー４３を生成する（ステップＳ１１）。具体的には、エントロピー４３は、バッテリ１３から取得した出力電圧Ｖｏと、温度センサ１４から取得した外気温Ｔｏと、オドメータ１５から取得した走行距離Ｄｏと、タイマ２１２から取得した起動時間Ｐｏとに基づいて生成される。生成されたエントロピー４３は、図４に示す記憶装置２３のデータフラッシュ領域５２に格納される。ステップＳ１１の詳細は後述する。
【００６２】
記憶装置２３に記憶された第１プログラム４１を更新する場合、車両１の運転者は、車両１を車両１の販売店へ移動させる。販売店において、更新制御装置８は、作業員による操作によって、ＥＣＵ３との通信を開始する。
【００６３】
具体的には、更新制御装置８は、更新モード移行要求をＥＣＵ２に送信する（ステップＳ１２）。更新モード移行要求は、更新制御部２２の起動をＥＣＵ２に指示するメッセージである。
【００６４】
ＥＣＵ２は、更新モード移行要求を更新制御装置８から受けた場合、更新モード移行応答を更新制御装置８へ送信する（ステップＳ１３）。更新モード移行応答は、更新モードへの移行を開始することを通知するメッセージである。
【００６５】
更新制御装置８は、更新モード移行応答をＥＣＵ２から受けた場合、予め設定された待機時間を経過するまで待機する（ステップＳ１４）。待機時間の長さは、例えば、５秒である。待機時間は、ＥＣＵ２が車両制御部２１を停止し、更新制御部２２を起動させるまでに要する経過時間に基づいて決定される。具体的には、待機時間は、経過時間よりも長い時間であればよい。
【００６６】
ＥＣＵ２は、更新モード移行応答を送信した後に、リセット処理を実行する（ステップＳ１５）。具体的には、ＥＣＵ２において、車両制御部２１が停止し、更新制御部２２が起動する。つまり、第２プログラム４２が、第１プログラムに代えてＲＡＭ２０２にロードされる。ＣＰＵ２０１が、ＲＡＭ２０２にロードされた第２プログラム４２を開始する。車両制御部２１の停止に伴って、第１プログラム４１は、ＲＡＭ２０２からアンロードされる。この結果、コードフラッシュ領域５１に書き込まれた第１プログラム４１を更新することが可能となる。
【００６７】
データフラッシュ領域５２に格納されたエントロピー４３は、リセット処理（ステップＳ１５）の実行により消去されない。記憶装置２３が不揮発性のフラッシュメモリであり、かつ、データフラッシュ領域５２がリセット処理（ステップＳ１５）によりクリアされないためである。
【００６８】
待機時間を経過した後に、更新制御装置８は、乱数要求をＥＣＵ２に送信する（ステップＳ１６）。乱数要求は、更新制御装置８の認証に用いられる乱数４４の送信を要求するメッセージである。
【００６９】
ＥＣＵ２が乱数要求を更新制御装置８から受けた場合、乱数生成部２２１は、データフラッシュ領域５２に格納されたエントロピー４３を用いて、乱数４４を生成する（ステップＳ１７）。乱数４４がエントロピー４３に基づいて生成されるのであれば、乱数４４を生成するアルゴリズムは限定されない。乱数４４は、真正乱数でなくてもよい。つまり、乱数４４は、疑似乱数であってもよい。
【００７０】
乱数生成部２２１は、ステップＳ１７で生成した乱数４４を送信部２２２に出力する。送信部２２２は、乱数生成部２２１から受けた乱数４４を更新制御装置８に送信する（ステップＳ１８）。
【００７１】
認証情報生成部２２３は、乱数４４を認証情報生成部２２３から受け、その受けた乱数４４を用いて認証キー２Ｋを生成する（ステップＳ１９）。認証情報生成部２２３は、ステップＳ１９で生成した認証キー２Ｋを認証部２２４に出力する。
【００７２】
更新制御装置８は、乱数４４をＥＣＵ２から受けた場合、その受けた乱数４４を用いて認証キー８Ｋを生成する（ステップＳ２０）。更新制御装置８は、ステップＳ２０で生成した認証キー８ＫをＥＣＵ２に送信する（ステップＳ２１）。
【００７３】
なお、ステップＳ１９〜Ｓ２０において、認証キーを生成するアルゴリズムは、特に限定されず、例えば、ＡＥＳ（Advanced Encryption Standard）が用いられる。認証キー８Ｋを生成するための暗号鍵は、認証キー２Ｋを生成するための暗号鍵と同じであってもよく、異なっていてもよい。
【００７４】
認証部２２４は、認証キー８Ｋを更新制御装置８から受け、認証キー２Ｋを認証情報生成部２２３から受ける。認証部２２４は、その受けた認証キー８Ｋとその受けた認証キー８Ｋとに基づいて、更新制御装置８を認証する（ステップＳ２２）。具体的には、認証部２２４は、その受けた認証キー８Ｋをその受けた認証キー２Ｋと比較する。
【００７５】
その受けた認証キー８Ｋがその受けた認証キー２Ｋと一致しない場合、認証部２２４は、認証キー８Ｋの送信元である更新制御装置８の正当性を確認できないと判断する。この場合、認証部２２４は、更新制御装置８を認証できないことを通知する認証結果通知を更新制御装置８に送信する（ステップＳ２３）。この場合、ＥＣＵ２は、更新制御装置８から送信されるデータの受信を拒否してもよい。あるいは、ＥＣＵ２は、認証キー８Ｋの再送を要求してもよい。
【００７６】
ステップＳ２２において、認証情報生成部２２３により生成された認証キー２ＫがステップＳ２１で送信された認証キー８Ｋと一致する場合、認証部２２４は、認証キー８Ｋの送信元である更新制御装置８の正当性が確認されたと判断する。この場合、認証部２２４は、更新制御装置８が認証されたことを通知する認証結果通知を、更新制御装置８に送信する（ステップＳ２３）。更新制御装置８は、ステップＳ２３の後で、更新用の第１プログラム４１の送信を開始する。更新制御部２２は、通常使用領域５１１に記憶されている第１プログラム４１を、更新制御装置８から受けた更新用の第１プログラム４１を用いて更新する。
【００７７】
通常使用領域５１１に記憶されている第１プログラム４１を更新用の第１プログラム４１に書き換える方法は、特に限定されない。例えば、更新制御装置８は、更新用の第１プログラム４１を一括してＥＣＵ２に送信してもよい。この場合、ＥＣＵ２は、記憶領域５０の予約領域に更新用の第１プログラム４１を一時的に記憶し、通常使用領域５１１に記憶された第１プログラム４１を、一時的に記憶された更新用の第１プログラム４１で書き換えればよい。
【００７８】
あるいは、更新制御装置８は、更新用の第１プログラムを所定のサイズのビットデータに分割し、分割されたビットデータを、分割されたビットデータの書き込みを指示するコマンドとともにＥＣＵ２に送信してもよい。この場合、更新制御部２２は、分割されたビットデータの受信を開始する前に、通常使用領域５１１に書き込まれている第１プログラム４１を消去しておけばよい。更新制御部２２は、更新制御装置８から受けたコマンドに従って、そのコマンドとともに受信した分割ビットデータを通常使用領域５１１に書き込む。
【００７９】
［２．２．エントロピー生成処理（ステップＳ１１）］
図６は、図５に示すエントロピー生成処理（ステップＳ１１）のフローチャートである。図６を参照して、変数生成部２１１は、タイマ２１２からＥＣＵ２の起動時間Ｐｏを取得し、その取得した起動時間Ｐｏに基づくエントロピーを生成する（ステップＳ１１）。
【００８０】
具体的には、クロック生成回路２４が、ＥＣＵ２の電源がオンされた時からクロックの生成を開始する。タイマ２１２は、クロック生成回路２４から出力される所定周波数のクロック信号をカウントして、ＥＣＵ２が起動してからの時間を計測する。変数生成部２１１は、タイマ２１２のカウント値を取得し、取得したカウント値から、起動時間Ｐｏに基づくエントロピーを生成する。
【００８１】
カウント値は、図示しない車両１のイグニッションスイッチがオンされてからの経過時間に依存する。車両１のイグニッションスイッチがオンされる時刻は、運転者が車両１の使用を開始する時刻に依存し、その時刻のばらつきは大きい。変数生成部２１１は、ＥＣＵ２の起動時間Ｐｏに基づいてエントロピーを生成することにより、エントロピー４３のばらつきを大きくすることができる。
【００８２】
例えば、カウント値が１２ｂｉｔのデータである場合、変数生成部２１１は、下記の処理により起動時間Ｐｏに基づくエントロピーを生成する。変数生成部２１１は、１２ビットのカウント値のうち下位６ビットを抽出し、抽出した６ビットのデータを起動時間Ｐｏに基づくエントロピーとして取得する。クロック信号のカウント値は、下位ビットから変化していくため、カウント値の上位ビットは、下位ビットに比べて変化が少ない。このため、カウント値の下位６ビットを起動時間Ｐｏに基づくエントロピーの生成に用いることにより、エントロピーのばらつきを大きくできる。
【００８３】
ステップＳ１１１の後に、変数生成部２１１は、電圧制御部２０６により取得された出力電圧Ｖｏに基づくエントロピーを生成する（ステップＳ１１２）。具体的には、変数生成部２１１は、電圧制御部２０６が出力電圧Ｖｏから生成した駆動電圧の電圧値を取得する。駆動電圧の電圧値がアナログデータであるため、変数生成部２１１は、駆動電圧の電圧値をＡＤ変換することにより、駆動電圧を示すビットデータを生成する。変数生成部２１１は、駆動電圧Ｖｏを示すビットデータの下位ビットが抽出される。変数生成部２１１は、抽出された下位ビットのデータを、出力電圧Ｖｏに基づくエントロピーとして取得する。なお、出力電圧ＶｏがＥＣＵ２の電源電圧としてそのまま利用される場合、変数生成部２１１は、出力電圧Ｖｏの電圧値からビットデータを生成してもよい。
【００８４】
上述のように、駆動電圧の電圧値がアナログデータであるため、ノイズが駆動電圧の電圧値に重畳される。駆動電圧Ｖｏを示すビットデータの下位ビットは、ノイズ成分が支配的である。ノイズはランダムな挙動を示すため、駆動電圧Ｖｏを示すビットデータの下位ビットから生成されたエントロピーは、そのばらつきが大きくなる。
【００８５】
変数生成部２１１は、外気温Ｔｏを温度センサ１４から取得し、その取得した外気温Ｔｏに基づくエントロピーを生成する（ステップＳ１１３）。温度センサ１４は、外気温Ｔｏをアナログデータとして変数生成部２１１に出力する。変数生成部２１１は、アナログデータの外気温ＴｏをＡ／Ｄ変換して、外気温Ｔｏを示すビットデータを生成する。変数生成部２１１は、外気温Ｔｏを示すビットデータの下位ビットを外気温Ｔｏに基づくエントロピーとして取得する。
【００８６】
上述のように、温度センサ１４は、外気温Ｔｏをアナログデータとして出力する。従って、温度センサ１４から出力される外気温Ｔｏは、ノイズを含む。外気温Ｔｏを示すビットデータの下位ビットは、駆動電圧を示すビットデータの下位ビットと同様に、ノイズが支配的になる。変数生成部２１１は、外気温Ｔｏを示すビットデータの下位ビットを、外気温Ｔｏに基づくエントロピーとして取得することにより、エントロピーのばらつきを大きくすることができる。
【００８７】
変数生成部２１１は、走行距離Ｄｏをオドメータ１５から取得し、その取得した走行距離Ｄｏに基づくエントロピーを生成する（ステップＳ１１４）。例えば、変数生成部２１１は、ステップＳ１１１と同様に、走行距離Ｄｏを示すビットデータの下位ビットを走行距離Ｄｏに基づくエントロピーとして取得する。車両の走行距離は、その車両の走行頻度や、１回当たりの走行距離によって大きく変化する。従って、変数生成部２１１は、走行距離Ｄｏに基づいてエントロピーを生成することにより、エントロピーのばらつきを大きくすることができる。
【００８８】
変数生成部２１１は、ステップＳ１１１〜Ｓ１１４の各々で生成したエントロピーを合成する（ステップＳ１１５）。変数生成部２１１は、ステップＳ１１５合成されたエントロピーを、エントロピー４３として記憶装置２３のデータフラッシュ領域５２に保存する（ステップＳ１１６）。
【００８９】
ステップＳ１１５におけるエントロピーの合成方法は、特に限定されない。変数生成部２１１は、ステップＳ１１１〜Ｓ１１４の各々で生成したエントロピーを合計してもよいし、乗算してもよい。あるいは、変数生成部２１１は、複数種類の演算方法を組み合わせて、エントロピーを合成してもよい。複数種類の演算は、加算、減算、乗算、除算、及びシフト演算である。
【００９０】
上述のように、ステップＳ１１１〜Ｓ１１４の各々で生成されたエントロピーは、そのばらつきが大きい。各々のばらつきの大きい４つのエントロピーを合成することにより、さらにばらつきの大きいエントロピー４３を合成することができる。
【００９１】
乱数生成部２２１が、ばらつきの大きいエントロピー４３を用いて乱数４４を生成することにより、悪意のある第三者は、エンジン１１の制御に用いられる第１プログラム４１を不正に書き換えることが困難となる。以下、具体的に説明する。
【００９２】
悪意のある第三者が、更新制御装置８が認証キー８Ｋの生成に用いるアルゴリズムを取得した場合、ＥＣＵ２から更新制御装置８へ送信される乱数４４を傍受する。悪意のある第三者は、取得したアルゴリズムを用いて、傍受した乱数４４に基づく総当たり攻撃をＥＣＵ２に試みる。
【００９３】
乱数生成部２２１が、ＥＣＵ２がリセットを開始してから乱数要求を受信するまでの時間に基づいてエントロピーを生成すると仮定する。ＥＣＵ２がリセットを開始してから乱数要求を受信するまでの時間を「リセット時間」と記載する。この場合、ＥＣＵ２が、更新モード移行応答（ステップＳ１３）を受けてからリセットを完了するまでに実行される処理は一意に決まっているため、これらの処理に要する時間はほぼ一定である。また、更新制御装置８が更新モード移行応答（ステップＳ１３）を受けてから乱数要求（ステップＳ１６）を送信するまでの時間は、予め設定された待機時間であり、ほぼ一定である。
【００９４】
この結果、リセット時間は、誤差を考慮してもほぼ一定の時間範囲内でばらつくことになり、乱数４４がばらつく範囲も限定される。乱数４４のばらつく範囲が限定されることにより、悪意のある第三者が傍受した乱数４４に基づく総当たり攻撃が成功する可能性が増加する。
【００９５】
しかし、変数生成部２１１は、ＥＣＵ２の起動時間Ｐｏと、バッテリ１３の出力電圧Ｖｏと、車両１の外気温Ｔｏと、車両１の走行距離Ｄｏとに基づいて、エントロピー４３を生成する。起動時間Ｐｏと、出力電圧Ｖｏと、外気温Ｔｏと、走行距離Ｄｏとは、車両ごとのばらつきが大きい。従って、変数生成部２１１は、エントロピー４３のばらつきを大きくすることができる。ＥＣＵ２は、エントロピー４３に基づいて生成される乱数４４のばらつきを大きくすることができるため、悪意のある第三者による総当たり攻撃が成功する可能性を大幅に低減することができる。
【００９６】
変数生成部２１１は、エントロピー生成処理（ステップＳ１１）を繰り返し実行してエントロピー４３を生成する。ＥＣＵ２の起動時間Ｐｏと、バッテリ１３の出力電圧Ｖｏと、車両１の外気温Ｔｏと、車両１の走行距離Ｄｏとは、時間の経過とともに変化する。従って、これら４つのパラメータを用いてエントロピー４３を繰り返し生成することにより、エントロピー４３のばらつきをさらに大きくすることができる。
【００９７】
［変形例］
上記実施の形態では、ＥＣＵ２が車両１に搭載されたエンジン１１を制御する例を説明したが、ＥＣＵ２の制御対象はエンジン１１に限定されない。例えば、ＥＣＵ２は、パワーステアリング装置や、駆動輪を駆動させるモータ等、車両１に搭載される各種機器の少なくとも１つを制御していればよい。
【００９８】
上記実施の形態では、変数生成部２１１により生成されたエントロピー４３が、記憶装置２３のデータフラッシュ領域５２に保存される例を説明したが、これに限られない。例えば、ＥＣＵ２の電源がＥＣＵ２のリセット時にオフにされない場合、変数生成部２１１は、生成したエントロピー４３を揮発性の記憶装置に保存してもよい。この場合、ＥＣＵ２は、リセット時に揮発性の記憶装置に記憶されたデータを維持していればよい。つまり、変数生成部２１１は、ＥＣＵ２のリセット時にエントロピー４３が消去されない記憶装置にエントロピー４３を保存すればよい。
【００９９】
上記実施の形態において、変数生成部２１１は、エントロピー生成処理（ステップＳ１１）を、所定の期間を経過するたびに繰り返し実行してもよい。これにより、エントロピー４３のばらつきをさらに大きくすることができる。所定の期間は、例えば、５分である。この場合、変数生成部２１１は、生成したエントロピー４３をデータフラッシュ領域５２に保存する前に、過去に生成されたエントロピー４３を消去すればよい。あるいは、変数生成部２１１は、今回生成されたエントロピー４３と、過去に生成されたエントロピー４３とを合成し、合成したエントロピーをデータフラッシュ領域に保存してもよい。合成方法は、ステップＳ１１５と同様である。
【０１００】
上記実施の形態では、変数生成部２１１が、ＥＣＵ２の起動時間Ｐｏと、バッテリ１３の出力電圧Ｖｏと、車両１の外気温Ｔｏと、車両１の走行距離Ｄｏとに基づいて、エントロピー４３を生成する例を説明した。しかし、更新制御部２２は、これら４つのパラメータのうち少なくとも１つを用いてエントロピー４３を生成すればよい。この場合であっても、エントロピー４３のばらつきを大きくすることができる。つまり、変数生成部２１１は、ＥＣＵ２の状態を示す情報と、車両１の状態を示す情報との少なくとも一方を用いてエントロピー４３を生成すればよい。
【０１０１】
また、変数生成部２１１は、ステップＳ１１を繰り返し実行する場合、エントロピーの生成に用いるパラメータを、ステップＳ１１を実行するたびに変更してもよい。例えば、変数生成部２１１は、１回目のエントロピー生成処理（ステップＳ１１）において、起動時間Ｐｏに基づくエントロピーを生成し（ステップＳ１１１）、ステップＳ１１２〜Ｓ１１５を実行しない。変数生成部２１１は、２回目のエントロピー生成処理（ステップＳ１１）において、出力電圧Ｖｏに基づくエントロピーを生成し（ステップＳ１１２）、ステップＳ１１１及びＳ１１３〜Ｓ１１５を実行しない。変数生成部２１１は、エントロピーの生成に用いる情報の取得先をエントロピーを生成するたびに変更することにより、ステップＳ１１で生成されるエントロピーのばらつきをさらに大きくすることができる。あるいは、変数生成部２１１は、ステップＳ１１５で合成されるエントロピーの組み合わせを、ステップＳ１１を実行するたびに変更してもよい。
【０１０２】
また、変数生成部２１１は、これら４つのパラメータ以外のパラメータを用いてもよい。例えば、変数生成部２１１は、車両１の状態を示すパラメータとして、車両１のトリップメータから取得される走行距離や、車両１の位置を用いてもよい。トリップメータは、車両１の運転者が走行距離をゼロにリセットできる走行距離の積算計である。変数生成部２１１は、ＥＣＵ２の状態を示すパラメータとして、ＥＣＵ２と異を用いてもよい。
【０１０３】
また、ＥＣＵ２の起動時間Ｐｏは、タイマ２１２によりカウントされたクロック信号のカウント値でなくもよい。クロック生成回路２４が複数のクロック信号を生成する場合、変数生成部２１１は、各クロック信号のカウント値を演算により合成し、合成したカウント値をエントロピー４３として取得すればよい。演算方法は特に限定されず、加算、減算、乗算、除算及びシフト演算等を用いることができ、これらの演算を組み合わせてもよい。
【０１０４】
上記実施の形態において、車両制御部２１が更新モード移行要求（ステップＳ１２）を更新制御装置８から受ける前に、変数生成部２１１が、エントロピー４３を生成する例を説明したが、これに限られない。変数生成部２１１は、車両制御部２１が更新モード移行要求（ステップＳ１２）を受けてからリセット処理（ステップＳ１５）を開始するまでの期間に、エントロピー生成処理（ステップＳ１１）を実行してもよい。
【０１０５】
上記実施の形態において、変数生成部２１１が、バッテリ１３の出力電圧Ｖｏ及び温度センサ１４により検出された外気温Ｔｏに基づいてエントロピーを生成する例を説明したが、これに限られない。車両に搭載されたセンサが検出結果をアナログデータとして出力する場合、変数生成部２１１は、このセンサから出力される検出結果に基づいてエントロピーを生成してもよい。あるいは、車両に搭載された機器がアナログデータを出力する場合、変数生成部２１１は、この機器から出力されるアナログデータに基づいてエントロピーを生成してもよい。アナログデータからエントロピーを生成する手順は、ステップＳ１１２及びＳ１１３と同様である。
【０１０６】
上記実施の形態において、情報処理装置２が車両に搭載されるＥＣＵである場合を説明したが、これに限られない。情報処理装置２は、車両に搭載されなくてもよい。この場合、情報処理装置２は、車両制御部２１に代えて、変数生成部２１１を含むとともに所定の処理を実行する制御部を備える。変数生成部２１１は、制御部の状態に基づいてエントロピーを生成すればよい。あるいは、情報処理装置２は、アナログデータを出力する外部機器からこのアナログデータを取得し、取得したアナログデータに基づいてエントロピーを生成すればよい。
【０１０７】
以上、本発明の実施の形態を説明したが、上述した実施の形態は本発明を実施するための例示に過ぎない。よって、本発明は上述した実施の形態に限定されることなく、その趣旨を逸脱しない範囲内で上述した実施の形態を適宜変形して実施することが可能である。
【符号の説明】
【０１０８】
１００  ソフトウェア更新システム
１  車両
２  情報処理装置（ＥＣＵ）
２１  車両制御部
２２  更新制御部
２３  記憶装置
２４  クロック生成回路
２１１  変数生成部
２１２  タイマ
２２１  乱数生成部
２２２  送信部
２２３  認証情報生成部
２２４  認証部
【図１】
2020088458.tif 000003
【図２】
2020088458.tif 000004
【図３】
2020088458.tif 000005
【図４】
2020088458.tif 000006
【図５】
2020088458.tif 000007
【図６】
2020088458.tif 000008