JP7253470B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP7253470B2
JP7253470B2 JP2019141154A JP2019141154A JP7253470B2 JP 7253470 B2 JP7253470 B2 JP 7253470B2 JP 2019141154 A JP2019141154 A JP 2019141154A JP 2019141154 A JP2019141154 A JP 2019141154A JP 7253470 B2 JP7253470 B2 JP 7253470B2
Authority
JP
Japan
Prior art keywords
unit
bit value
update
random number
bit
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.)
Active
Application number
JP2019141154A
Other languages
English (en)
Other versions
JP2021026290A (ja
Inventor
裕紀 養畑
重人 梅山
直人 森
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.)
Denso Ten Ltd
Original Assignee
Denso Ten 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 Denso Ten Ltd filed Critical Denso Ten Ltd
Priority to JP2019141154A priority Critical patent/JP7253470B2/ja
Priority to US16/814,007 priority patent/US11537717B2/en
Priority to EP20162421.0A priority patent/EP3771978B1/en
Priority to CN202010202865.1A priority patent/CN112306037B/zh
Publication of JP2021026290A publication Critical patent/JP2021026290A/ja
Application granted granted Critical
Publication of JP7253470B2 publication Critical patent/JP7253470B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B23/00Testing or monitoring of control systems or parts thereof
    • G05B23/02Electric testing or monitoring
    • G05B23/0205Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults
    • G05B23/0208Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterized by the configuration of the monitoring system
    • G05B23/0213Modular or universal configuration of the monitoring system, e.g. monitoring system having modules that may be combined to build monitoring program; monitoring system that can be applied to legacy systems; adaptable monitoring system; using different communication protocols
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • B60W2050/0062Adapting control system settings
    • B60W2050/0075Automatic parameter input, automatic initialising or calibrating means
    • B60W2050/0083Setting, resetting, calibration
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/24Pc safety
    • G05B2219/24065Real time diagnostics
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/26Pc applications
    • G05B2219/2637Vehicle, car, auto, wheelchair
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Automation & Control Theory (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mechanical Engineering (AREA)
  • Transportation (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Description

本発明は、記憶装置に記憶されたプログラムを更新する情報処理装置に関する。
自動車等の車両には、複数のECU(Electronic Control Unit)が搭載される。複数のECUの各々は、エンジンや、パワーステアリング装置、エアバッグ、トランスミッション等の様々な機器を制御する情報処理装置である。
ECUは、マイクロコンピュータであり、不揮発性の記憶装置に記憶されたソフトウェアを実行する。不揮発性の記憶装置に記憶されたソフトウェアが更新される場合、ECUは、更新制御装置と通信して更新用のソフトウェアを取得し、取得した更新用のソフトウェアで、不揮発性の記憶装置に記憶されたソフトウェアを書き換える。更新制御装置は、リプロツールと呼ばれることがある。
特許文献1は、車両に搭載された車載端末のソフトウェアを更新する情報配信システムを開示している。特許文献1に係る情報配信システムにおいて、車載端末は、暗号化されたソフトウェアをサーバから取得し、取得したソフトウェアを復号する。車載端末は、取得したソフトウェアを復号する前に、復号に用いられるソフトウェア固有鍵の正当性を検証する。
特開2015-14910号公報
ECUは、記憶装置に記憶されたソフトウェアを更新する前に、更新用のソフトウェアを供給する更新制御装置を認証する。ECUのソフトウェアが不正に更新されることを防ぐために、更新制御装置の認証時におけるセキュリティをさらに高める必要がある。
本発明の目的は、ソフトウェアの更新時におけるセキュリティを向上させる情報処理装置を提供することである。
上記課題を解決するため、第1の発明は、車両に搭載される情報処理装置であって、車両制御部と、乱数生成部と、認証部とを備える。車両制御部は、車両に関する制御に用いられる制御プログラムを実行する。乱数生成部は、乱数を生成する。認証部は、乱数生成部により生成された乱数を用いて、制御プログラムの更新を制御する更新制御装置を認証する。乱数生成部は、第1抽出部と、対象ビット取得部と、演算部と、置換部と、位置指定部と、出力部とを含む。第1抽出部は、第1クロック信号のカウント値から所定長のビット値を抽出する。バッファに格納されたエントロピーのうち少なくとも1つのビット位置が更新位置に指定された場合、対象ビット取得部は、指定された更新位置のビット値を対象ビット値として取得する。演算部は、第1抽出部により抽出されたビット値と対象ビット取得部により取得された対象ビット値と論理演算する。置換部は、更新位置のビット値を演算部による演算結果に置換する。位置指定部は、更新位置のビット値が演算結果に置換された後に、新たな更新位置を指定する。出力部は、バッファに格納されたエントロピーから乱数を生成して認証部に出力する。
第1の発明によれば、エントロピーにおいてビット位置が指定された場合、演算部は、指定されたビット位置のビット値を、第1クロック信号のカウント値から抽出されたビット値を論理演算する。置換部は、指定されたビット位置のビット値を、演算部による論理演算の結果に置き換える。位置指定部は、指定されたビット位置のビット値が置換された場合、新たなビット位置を指定する。これにより、エントロピーに含まれる全てのビットを更新できるため、エントロピーのランダム性が増加する。また、エントロピーが、クロック信号のカウント値に基づいて決定されるため、エントロピーのランダム性が増加する。これらのことから、第1の発明は、第三者がエントロピーから生成される乱数を推測することを困難とすることができる。第1の発明は、この乱数に基づいて更新制御装置を認証するため、ソフトウェアの更新時におけるセキュリティを向上させることができる。
第2の発明は、第1の発明であって、乱数生成部は、さらに、第2抽出部を含む。第2抽出部は、第1クロック信号の第1周波数と異なる第2周波数のクロック信号のカウント値から所定長のビット値を抽出する。演算部は、中間演算部と、最終演算部とを含む。中間演算部は、第1抽出部から抽出されたビット値を第2抽出部から抽出されたビット値と論理演算する。最終演算部は、取得された対象ビット値を中間演算部による演算結果と論理演算する。置換部は、前期最終演算部による演算結果に置換する。
第2の発明によれば、エントロピーの各ビット値が、2つのクロック信号から取得される2つのカウント値に基づいて更新されるため、エントロピーのランダム性をさらに増加することができる。
第3の発明は、第2の発明であって、乱数生成部は、さらに、第3抽出部を含む。第3抽出部は、第1周波数及び第2周波数と異なる第3周波数のクロック信号のカウント値から所定長のビット値を抽出する。中間演算部は、第2抽出部から抽出されたビット値を第3抽出部から抽出されたビット値と論理演算することにより中間演算値を生成し、生成した中間演算値を第1抽出部から抽出されたビット値と論理演算する。
第3の発明によれば、エントロピーの各ビット値が、3つのクロック信号から取得される3つのカウント値に基づいて更新されるため、エントロピーのランダム性をさらに増加することができる。
第4の発明は、第3の発明であって、第1周波数は、第2周波数よりも高く、第3周波数よりも低い。
第4の発明によれば、中間演算部は、最初に、第2クロック信号のカウント値から抽出されたビット値を、第3クロック信号のカウント値から抽出されたビット値と論理演算する。第1~第3クロック信号の周波数の中で、第2クロック信号の周波数が最大であり、第3クロック信号の周波数が、最小である。これにより、第2クロック信号のカウント値と、第3クロック信号のカウント値との組み合わせのパターンが増加するため、論理演算の結果のランダム性が増加する。エントロピーのランダム性がさらに増加させることができる。
第5の発明は、第1~第3の発明のいずれかであって、乱数生成部は、さらに、カウンタを含む。カウンタは、車両制御部又は更新制御部が割り込み処理を実行している期間において、第1クロック信号のカウントを継続する。対象ビット取得部は、割り込み処理の終了後に対象ビットを取得する。
第5の発明によれば、カウンタは、割り込み処理が発生した場合においても、バックグラウンドで第1クロック信号のカウントを継続する。割り込み処理が発生してから終了するまでの期間がランダムであるため、第1クロック信号のカウント値から抽出されるビット値のランダム性が増加する。これにより、エントロピーのランダム性をさらに増加させることができる。
第6の発明は、車両に関する制御に用いられる制御プログラムを記憶する記憶装置を備え、制御プラグラムを実行する情報処理装置の制御方法であって、抽出ステップと、取得ステップと、演算ステップと、置換ステップと、位置指定ステップと、生成ステップと、認証ステップとを備える。抽出ステップは、クロック信号のカウント値から所定長のビット値を抽出する。取得ステップは、バッファに格納されたエントロピーのうち少なくとも1つのビット位置が更新位置に指定された場合、指定された更新位置のビット値を対象ビット値として取得する。演算ステップは、抽出されたビット値と取得された対象ビット値と論理演算する。置換ステップは、更新位置のビット値を演算ステップによる演算結果に置換する。置指定ステップは、更新位置のビット値が置換された後に、新たな更新位置を指定する。生成ステップは、バッファに格納されたエントロピーから乱数を生成する。証ステップは、生成された乱数を用いて、制御プログラムの更新を制御する更新制御装置を認証する。
第6の発明は、第1の発明に用いられる。
本発明によれば、ソフトウェアの更新時におけるセキュリティを向上させる情報処理装置を提供することができる。
本発明の実施の形態に係る情報処理装置を含むソフトウェア更新システムの構成を示す機能ブロック図である。 図1に示す情報処理装置の構成を示す機能ブロック図である。 図1に示す情報処理装置のハードウェア構成を示す図である。 図2に示す乱数生成部の構成を示す機能ブロック図である。 図4に示す演算部の構成を示す図である。 図1に示す記憶装置における記憶領域の割り当ての一例を示す図である。 図1に示すソフトウェア更新システムの動作を示すシーケンス図である。 図7に示すエントロピー生成処理のフローチャートである。 図4に示す演算部により実行される論理演算の一例を示す図である。
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
[1.構成]
[1.1.ソフトウェア更新システム100の構成]
図1は、本発明の実施の形態に係る情報処理装置2を含むソフトウェア更新システム100の構成を示す機能ブロック図である。図1を参照して、ソフトウェア更新システム100は、情報処理装置2により実行されるソフトウェアを更新する。なお、以下の説明において、「ソフトウェア」と「プログラム」とは、同じ意味で用いられる。
情報処理装置2は、車両1に搭載されるECU(Electronic Control Unit)である。情報処理装置2は、車両1に関する制御を行う。本実施の形態では、情報処理装置2は、車両1に搭載されたエンジン3を制御する。以下、情報処理装置2を「ECU2」と記載する場合がある。
車両1は、ECU2と、エンジン3とを備える。図1において、ECU2及びエンジン3以外の車両1の構成を省略している。
ECU2は、エンジン3の制御プログラムを実行して、エンジン3を制御する。ECU2は、更新制御装置4と通信して、エンジン3の制御プログラムを更新する。ECU2は、乱数送信要求45を更新制御装置4から受けた場合、更新制御装置4の認証に用いられる乱数35を、更新制御装置4に送信する。ECU2は、更新制御装置4から受けた認証キー4Kを用いて、更新制御装置4を認証する。制御プログラムの更新の詳細については、後述する。
エンジン3は、車両1の動力源である。エンジン3は、動力を発生させ、発生した動力から得られる回転力を車両1の駆動輪に与える。
更新制御装置4は、ECU2と通信して、ECU2に格納されているエンジン3の制御プログラムを更新する。制御プログラムの更新を開始する前に、更新制御装置4は、乱数送信要求45をECU2に送信する。更新制御装置4は、乱数生成要求の応答として乱数35をECU2から受けた場合、その受けた乱数35を用いて、認証キー4Kを生成する。更新制御装置4は、認証キー4Kに基づく認証をECU2から受けた場合、更新用の制御プログラムをECU2に送信する。
[1.2.ECU2の構成]
図2は、図1に示すECU2の構成を示す機能ブロック図である。図2を参照して、ECU2は、車両制御部21と、更新制御部22と、クロック生成回路23と、記憶装置24とを備える。
車両制御部21は、記憶装置24に記憶された第1プログラム41を実行して、エンジン3を制御する。第1プログラム41は、エンジン3の制御プログラムである。
更新制御部22は、記憶装置24に記憶された第2プログラム42を実行して、記憶装置24に記憶されている第1プログラム41を更新する。更新制御部22の構成については、後述する。
クロック生成回路23は、互いに周波数の異なるクロック信号50~53を生成する。クロック信号50は、車両制御部21及び更新制御部22に出力される。車両制御部21及び更新制御部22は、クロック生成回路23から受けたクロック信号50に同期して動作する。クロック信号51~53は、更新制御部22に出力され、後述するエントロピー31の生成に用いられる。
クロック信号51の周波数は、クロック信号52及び53の各々の周波数よりも高い。クロック信号53の周波数は、クロック信号51及び52の各々の周波数よりも低い。
記憶装置24は、不揮発性であり、本実施の形態ではフラッシュメモリである。記憶装置24は、第1プログラム41と、第2プログラム42とを記憶する。バッファ43が、記憶装置24に設定される。バッファ43は、乱数35の生成に用いられるエントロピー31を格納する。
図3は、図1に示すECU2のハードウェア構成を示すブロック図である。図3を参照して、ECU2は、CPU(Central Processing Unit)201と、RAM(Random Access Memory)202と、通信インタフェース203と、出力インタフェース204と、入力インタフェース205と、バス206と、記憶装置24とを備える。
CPU201は、記憶装置24からRAM202にロードされたプログラムを実行して、ECU2を制御する。RAM202は、ECU2のメインメモリである。CPU201は、図2に示すクロック生成回路23を内蔵する。CPU201は、クロック生成回路23によって生成されるクロック信号50に同期して動作する。
CPU201がRAM202にロードされた第1プログラム41を実行する場合、CPU201は、車両制御部21として動作する。CPU201がRAM202にロードされた第2プログラム42を実行する場合、CPU201は、更新制御部22として動作する。CPU201は、第1プログラム41と第2プログラム42とを並行して実行しない。
通信インタフェース203は、TCP(Transmission Control Protocol)/IP(Internet Protocol)などのプロトコルを用いて、更新制御装置4と通信する。なお、ECU2と更新制御装置4との間の通信方式は、特に限定されない。
出力インタフェース204は、CAN(Control Area Network)を用いて、制御信号をエンジン3に出力する。入力インタフェース205は、CANを用いて、エンジン3に取り付けられた温度センサ等からの検出信号を受ける。
バス206は、CPU201と、RAM202と、通信インタフェース203と、出力インタフェース204と、入力インタフェース205と、記憶装置24とを接続する。
[1.3.更新制御部22の構成]
図2を参照して、更新制御部22は、認証部25と、乱数生成部26と、認証キー生成部27とを含む。
認証部25は、図1に示す更新制御装置4と通信して更新制御装置4を認証する。具体的には、認証部25は、乱数送信要求45を更新制御装置4から受けた場合、乱数生成部26により生成された乱数35を更新制御装置4に送信する。認証部25は、更新制御装置4が乱数35を用いて生成した認証キー4Kを更新制御装置4から受ける。認証部25は、その受けた認証キー4Kと、認証キー生成部27により生成された認証キー2Kとに基づいて、更新制御装置4の正当性を確認する。認証部25が、更新制御装置4の正当性を確認できた場合、記憶装置24に記憶された第1プログラム41の更新が開始される。
乱数生成部26は、クロック生成回路23から受けたクロック信号51~53を用いて、バッファ43に格納されたエントロピー31を更新する。乱数生成部26は、更新制御装置4から乱数35の送信要求を受けた場合、更新されたエントロピー31を用いて乱数35を生成する。乱数生成部26の構成については、後述する。
認証キー生成部27は、乱数生成部26から受けた乱数35を用いて、認証キー2Kを生成する。認証キー生成部27は、その生成した認証キー2Kを認証部25に出力する。
[1.4.乱数生成部26の構成]
図4は、図2に示す乱数生成部26の構成を示す機能ブロック図である。図4を参照して、カウンタ261と、第1抽出部262と、第2抽出部263と、第3抽出部264と、対象ビット取得部265と、演算部266と、置換部267と、位置指定部268と、出力部269とを含む。
カウンタ261は、クロック信号51~53をクロック生成回路23から受け、その受けたクロック信号51~53の各々をカウントする。カウンタ261は、クロック信号51をカウントした第1カウント値51Aを、第1抽出部262に出力する。カウンタ261は、クロック信号52をカウントした第2カウント値52Aを、第2抽出部263に出力する。カウンタ261は、クロック信号53をカウントした第3カウント値53Aを、第3抽出部264に出力する。
第1抽出部262は、第1カウント値51Aをカウンタ261から受け、その受けた第1カウント値51Aから最下位ビットのビット値を抽出する。第1抽出部262は、抽出したビット値を、第1抽出ビット値51Bとして演算部266に抽出する。
第2抽出部263は、第2カウント値52Aをカウンタ261から受け、その受けた第2カウント値52Aから最下位ビットのビット値を抽出する。第2抽出部263は、抽出したビット値を、第2抽出ビット値52Bとして演算部266に抽出する。
第3抽出部264は、第3カウント値53Aをカウンタ261から受け、その受けた第3カウント値53Aから最下位ビットのビット値を抽出する。第3抽出部264は、抽出したビット値を、第3抽出ビット値53Bとして演算部266に抽出する。
対象ビット取得部265は、バッファ43に格納されたエントロピー31のうち、位置指定部268から通知された更新位置57のビット値を取得する。対象ビット取得部265は、その取得したビット値を対象ビット値54として演算部266に出力する。
演算部266は、第1抽出ビット値51Bを第1抽出部262から受け、第2抽出ビット値52Bを第2抽出部263から受け、第3抽出ビット値53Bを第2抽出部263から受ける。また、演算部266は、対象ビット値54を対象ビット取得部265から受ける。演算部266は、受けた抽出ビット値51B~53Bと、受けた対象ビット値54とを用いて論理演算し、更新ビット値55を論理演算の結果として生成する。演算部266は、更新ビット値55を置換部267に出力する。
置換部267は、バッファ43に格納されたエントロピー31のうち、位置指定部268により指定された更新位置57のビット値を、演算部266から受けた更新ビット値55で置き換える。置換部267は、更新位置57におけるビット値の置換を終了したことを示す置換終了通知56を位置指定部268に通知する。
位置指定部268は、置換終了通知を置換部267から受けた場合、更新位置57を変更する。位置指定部268は、変更した更新位置57を対象ビット取得部265及び置換部267に通知する。
出力部269は、乱数送信要求45を認証部25から受けた場合、エントロピー31をバッファ43から読み出し、読み出したエントロピー31を乱数35に変換する。出力部269は、エントロピー31から変換された乱数35を認証キー生成部27に出力する。
[1.5.演算部266の構成]
図5は、図4に示す演算部266の構成を示す機能ブロック図である。図5を参照して、演算部266は、第1中間演算部601と、第2中間演算部602と、最終演算部603とを含む。
第1中間演算部601は、第1抽出部262から受けた第1抽出ビット値51Bを、第3抽出部264から受けた第3抽出ビット値53Bと論理演算する。第1中間ビット値61が、第1中間演算部601による論理演算の結果として生成される。
第2中間演算部602は、第2抽出部263から受けた第2抽出ビット値52Bを、第1中間演算部601から受けた第1中間ビット値61と論理演算する。第2中間ビット値62が、第2中間演算部602による論理演算の結果として生成される。
最終演算部603は、対象ビット取得部265から受けた対象ビット値54を、第2中間演算部602から受けた第2中間ビット値62と論理演算する。最終演算部603は、論理演算の結果として更新ビット値55を生成する。
[1.6.記憶領域の割り当て]
図6は、図2に示す記憶装置24における記憶領域70の割り当ての一例を示す図である。図6を参照して、記憶領域70は、コードフラッシュ領域71と、データフラッシュ領域72とを有する。
コードフラッシュ領域71は、CPU201により実行されるプログラムを記憶するための領域である。第1プログラム41及び第2プログラム42は、コードフラッシュ領域71に書き込まれる。コードフラッシュ領域751は、通常使用領域711と、更新使用領域712とに区分される。
通常使用領域711は、車両1の制御に用いられるプログラムを記憶する。第1プログラム41は、エンジン3の制御プログラムであるため、通常使用領域711に書き込まれる。CPU201が車両制御部21として動作する場合、更新使用領域712に書き込まれた第2プログラム42は、RAM202にロードされない。
更新使用領域712は、通常使用領域711に書き込まれたプログラムの更新に用いられるプログラムを記憶する。第2プログラム42は、第1プログラム41の更新に用いられるため、更新使用領域712に書き込まれる。CPU201が更新制御部22として動作する場合、通常使用領域711に書き込まれたプログラムは、RAM202にロードされない。第1プログラム41がRAM202にロードされた場合、更新制御部22が、記憶領域70に書き込まれた第1プログラム41を書き換えできないためである。
更新使用領域712の一部は、バッファ43として用いられる。バッファ43は、エントロピー31を格納する。
[2.動作]
[2.1.ソフトウェア更新システム100の動作]
図7は、図1に示すソフトウェア更新システム100の動作を示すシーケンス図である。図7を参照しながら、ソフトウェア更新システム100の動作を説明する。初期状態において、車両制御部21が、クロック信号50に同期して動作しており、更新制御部22が停止している。つまり、第1プログラム41が実行中であり、第2プログラム42はRAM202にロードされていない。また、初期状態において、第1プログラム41の更新は開始されておらず、クロック信号51~53は生成されていない。
記憶装置24に記憶された第1プログラム41を更新する場合、車両1の運転者は、車両1を車両1の販売店へ移動させる。販売店において、更新制御装置4は、作業員による操作によって、ECU2との通信を開始する。
具体的には、更新制御装置4は、更新モード移行要求をECU2に送信する(ステップS11)。更新モード移行要求は、更新制御部22の起動をECU2に指示するメッセージである。
ECU2は、更新モード移行要求を更新制御装置4から受けた場合、更新モード移行応答を更新制御装置4へ送信する(ステップS12)。更新モード移行応答は、更新モードへの移行を開始することを通知するメッセージである。
更新制御装置4は、更新モード移行応答をECU2から受けた場合、予め設定された待機時間を経過するまで待機する(ステップS13)。待機時間の長さは、例えば、5秒である。待機時間は、ECU2が車両制御部21を停止し、更新制御部22を起動させるまでに要する更新モード移行時間に基づいて決定される。具体的には、待機時間は、更新モード移行時間よりも長ければよい。
ECU2は、更新モード移行応答を送信した後に、リセット処理を実行する(ステップS14)。具体的には、ECU2において、車両制御部21が停止し、更新制御部22が起動する。つまり、第2プログラム42が、第1プログラムに代えてRAM202にロードされる。CPU201が、RAM202にロードされた第2プログラム42を開始する。車両制御部21の停止に伴って、第1プログラム41は、RAM202からアンロードされる。この結果、コードフラッシュ領域71に書き込まれた第1プログラム41を更新することが可能となる。
ECU2は、エントロピー生成処理(ステップS15)を開始する。ステップS15の結果、バッファ43に格納されたエントロピー31の各ビットが更新される。エントロピー生成処理(ステップS15)は、ECU2が乱数送信要求45を更新制御装置4から受けるまで継続する。エントロピー生成処理(ステップS15)の詳細については、後述する。
待機時間を経過した後に、更新制御装置4は、乱数送信要求45をECU2に送信する(ステップS16)。乱数送信要求45は、更新制御装置4の認証に用いられる乱数35の送信を要求するメッセージである。
ECU2は、乱数送信要求45を更新制御装置4から受けた場合、バッファ43に格納されたエントロピー31を用いて乱数35を生成する(ステップS17)。乱数35がエントロピー31に基づいて生成されるのであれば、乱数35を生成するアルゴリズムは限定されない。乱数35は、真正乱数でなくてもよい。つまり、乱数35は、疑似乱数であってもよい。ECU2は、生成した乱数35を更新制御装置4に送信する(ステップS18)。
ECU2において、認証キー生成部27は、乱数生成部26から受けた乱数35を用いて認証キー2Kを生成する(ステップS19)。認証キー生成部27は、、ステップS19で生成した認証キー2Kを認証部25に出力する。
更新制御装置4は、乱数35をECU2から受けた場合、その受けた乱数35を用いて認証キー4Kを生成する(ステップS20)。更新制御装置4は、ステップS19で生成した認証キー4KをECU2に送信する(ステップS21)。
ステップS19及びS20において、認証キーを生成するアルゴリズムは、特に限定されない。例えば、AES(Advanced Encryption Standard)が認証キーの生成に用いられる。認証キー4Kを生成するための暗号鍵は、認証キー2Kを生成するための暗号鍵と同じであってもよく、異なっていてもよい。
認証部25は、更新制御装置4から受けた認証キー4Kと、認証キー生成部27から受けた認証キー2Kとに基づいて、更新制御装置4を認証する(ステップS22)。具体的には、認証部25は、認証キー4Kを認証キー2Kと比較する。
認証キー4Kが認証キー2Kと一致しない場合、認証部25は、認証キー4Kの送信元である更新制御装置4の正当性を確認できないと判断する。認証部25は、更新制御装置4を認証できないことを通知する認証結果通知を更新制御装置4に送信する(ステップS23)。この場合、ECU2は、更新制御装置4から送信されるデータの受信を拒否してもよい。あるいは、ECU2は、認証キー4Kの再送を要求してもよい。
認証キー4Kが認証キー2Kと一致する場合、認証部25は、認証キー4Kの送信元である更新制御装置4の正当性が確認されたと判断する。認証部25は、更新制御装置4が認証されたことを通知する認証結果通知を、更新制御装置4に送信する(ステップS23)。更新制御装置4は、ステップS23の後で、更新用の第1プログラム41の送信を開始する。更新制御部22は、通常使用領域711に記憶されている第1プログラム41を、更新制御装置4から受けた更新用の第1プログラム41を用いて更新する。
通常使用領域711に記憶されている第1プログラム41を更新用の第1プログラム41に書き換える方法は、特に限定されない。例えば、更新制御装置4は、更新用の第1プログラム41を一括してECU2に送信してもよい。この場合、ECU2は、記憶領域70の予約領域に更新用の第1プログラム41を一時的に記憶し、通常使用領域711に記憶された第1プログラム41を、一時的に記憶された更新用の第1プログラム41で書き換えればよい。
あるいは、更新制御装置4は、更新用の第1プログラム41を所定サイズのデータに分割し、分割されたデータを、分割されたデータの書き込みを指示するコマンドとともにECU2に送信してもよい。この場合、更新制御部22は、分割されたデータの受信を開始する前に、通常使用領域711に書き込まれている第1プログラム41を消去しておけばよい。更新制御部22は、更新制御装置4から受けたコマンドに従って、そのコマンドとともに受信した分割データを通常使用領域711に書き込む。
[2.2.エントロピー生成処理(ステップS15)]
乱数生成部26は、クロック信号51~53をカウントしてカウント値51A~53Aを生成する。乱数生成部26は、生成したカウント値51A~53Aにおける最下位のビット値を用いて、バッファ43に格納されたエントロピー31のビットを1つずつ更新する。これにより、乱数生成部26は、エントロピー31のランダム性を増加させることができる。認証キー2K及び4Kの生成に用いられる乱数35は、ランダム性が増したエントロピー31から生成されるため、第三者が乱数35を推測することが困難となる。この結果、ECU2は、ソフトウェアの更新時におけるセキュリティをさらに向上させることができる。
以下、図8及び図9の両者を参照しながら、エントロピー生成処理(ステップS15)を詳しく説明する。図8は、図7に示すエントロピー生成処理(ステップS15)のフローチャートである。図9は、図4に示す演算部266により実行される論理演算の一例を示す図である。
更新制御部22が図7に示すリセット処理(ステップS14)により起動した場合に、乱数生成部26は、図8に示す処理を開始する。図8に示す処理が開始される時点で、クロック信号51~53は、生成されていない。
(最初の更新位置の指定)
乱数生成部26において、位置指定部268が、バッファ43に格納されたエントロピー31の最下位ビットを更新位置57に指定する(ステップS501)。エントロピー31のデータ長は、128(ビット)である。本実施の形態において、エントロピー31の最下位ビットは、図9においてエントロピー31の右端である。位置指定部268は、ステップS501で指定された更新位置57を対象ビット取得部265及び置換部267に通知する。
(クロック信号のカウント開始)
カウンタ261が、エントロピー31の生成に用いられるクロック信号51~53の各々のカウントを開始する(ステップS502)。具体的には、更新制御部22が、クロック信号51~53の生成をクロック生成回路23に指示する。クロック生成回路23は、図示しない発信回路の出力信号を分周することにより、クロック信号51~53を生成する。
カウンタ261は、クロック信号51~53をクロック生成回路23から受け、その受けたクロック信号51~53の各々をカウントする。第1カウント値51Aは、クロック信号51をカウントすることにより生成される。第2カウント値52Aは、クロック信号52をカウントすることにより生成される。第3カウント値53Aは、クロック信号53をカウントすることにより生成される。
(第1中間ビット値61の生成)
乱数生成部26は、カウンタ261により生成される第1カウント値51A及び第3カウント値53Aの各々から、最下位ビットのビット値を抽出する(ステップS503)。
具体的には、第1抽出部262が、第1カウント値51Aをカウンタ261から読み出す。第1抽出部262は、読み出した第1カウント値51Aの最下位ビットから、第1抽出ビット値51Bを抽出する。第3抽出部264は、第1抽出部262と同様に、カウンタ261から読み出した第3カウント値53Aの最下位ビットから、第3抽出ビット値53Bを抽出する。図9において、第1カウント値51A及び第2カウント値52Aの最下位ビットを太枠で囲んでいる。
第1中間演算部601が、ステップS503で取得された第1抽出ビット値51B及び第3抽出ビット値53Bを論理演算することにより、第1中間ビット値61を生成する(ステップS504)。
具体的には、第1中間演算部601は、第1抽出ビット値51B及び第3抽出ビット値53Bの排他的論理和を求める。第1中間演算部601は、求めた排他的論理和を、第1中間ビット値61として第2中間演算部602に出力する。図9に示す例では、第1抽出ビット値51Bが「1」であり、第3抽出ビット値53Bが「0」であるため、第1中間ビット値61は、「1」である。
演算部266が、クロック信号51に由来する第1抽出ビット値51Bと、クロック信号53に由来する第3抽出ビット値53Bを、最初の論理演算に用いることにより、エントロピー31のランダム性を増加させることができる。以下、詳しく説明する。
クロック信号51の周波数は、クロック信号51~53の周波数の中で最大である。第1抽出ビット値51Bは、クロック信号51をカウントした第1カウント値51Aの最下位ビットから抽出される。クロック信号53の周波数は、クロック信号51~53の周波数の中で最も低い。第3抽出ビット値53Bは、クロック信号53をカウントした第3カウント値53Aの最下位ビットから抽出される。
この結果、第1抽出ビット値51Bが1である期間において、第3抽出ビット値53Bは、少なくとも1回変化する。クロック信号51の周波数と、クロック信号53の周波数との差が大きいほど、第3抽出ビット値53Bが変化する回数は多くなる。この結果、第1抽出ビット値51Bと第3抽出ビット値53Bとの組み合わせを推測することが困難となるため、第1中間ビット値61のランダム性が増加する。エントロピー31の各ビット値は、ランダム性が増加した第1中間ビット値61に基づいて更新されるため、エントロピー31のランダム性がさらに増加する。
第1抽出ビット値51Bが、第1カウント値51Aにおいて連続する複数のビットであり、かつ、第1カウント値51Aの最下位ビットを含むと仮定する。この場合、第3抽出ビット値53Bは、第1抽出ビット値51Bと同様の条件で第3カウント値から抽出される。第1抽出ビット値51B及び第3抽出ビット値53Bの各々が複数ビットを有するため、第1抽出ビット値51Bと第3抽出ビット値53Bとの組み合わせ数が増加する。また、第1抽出ビット値51Bは、第1カウント値51Aの他のビット位置のビット値比べて変化する回数が多くなる。第3抽出ビット値53Bについても同様である。この結果、第1抽出ビット値51Bと第3抽出ビット値53Bとの組み合わせを推測することがさらに困難となる。この結果、第1中間ビット値61のランダム性はさらに増加する。
(第2中間ビット値62の生成)
第1中間ビット値61を求める演算が終了した後に、第2抽出部263が、第2カウント値52Aから第2抽出ビット値52Bを取得する(ステップS505)。具体的には、第2抽出部263は、第2カウント値52Aをカウンタ261から読み出し、読み出した第2カウント値52Aから最下位ビットのビット値を抽出する。第2抽出部263は、抽出したビット値を第2抽出ビット値52Bとして取得する。
第2中間演算部602が、ステップS504で生成した第1中間ビット値61を、ステップS505で取得された第2抽出ビット値52Bと論理演算することにより、第2中間ビット値52Bを生成する(ステップSS506)。
具体的には、第2中間演算部602は、第2抽出ビット値52B及び第1中間ビット値61の排他的論理和を求める。第1中間演算部601は、求めた排他的論理和を、第2中間ビット値62として最終演算部603に出力する。図9に示す例では、第2抽出ビット値52B及び第1中間ビット値61が「1」であるため、第2中間ビット値62は、「0」である。
第2中間ビット値62を生成する際に、第2抽出部263は、第1抽出部262及び第3抽出部264が第1抽出ビット値51B及び第3抽出ビット値53Bを取得する第1時刻と異なる第2時刻に、第2抽出ビット値52Bを取得する。これにより、エントロピー31のランダム性を増加させることができる。以下、詳しく説明する。
上述のように、第1時刻は、第1中間ビット値61を求める演算の前である。第2時刻は、第1中間ビット値61を求める演算の後である。第1時刻から第2時刻までの期間において、第2カウント値52Aが増加を続ける。上記期間を、第三者は、上記期間を推測することは困難であるため、第1中間ビット値61と、第2カウント値52Aから抽出される第2抽出ビット値52Bとの組み合わせを推測することも困難となる。この結果、第2中間ビット値62のランダム性が増加する。エントロピー31の各ビット値は、ランダム性が増加した第2中間ビット値62に基づいて更新されるため、エントロピー31のランダム性がさらに増加する。
(更新ビット値55の生成)
ステップS506の後に、対象ビット取得部265が、対象ビット値54を、バッファ43に格納されたエントロピー31から取得する(ステップS507)。具体的には、対象ビット取得部265は、位置指定部268により指定された更新位置57のビット値を、バッファ43に格納されたエントロピー31から読み出す。対象ビット取得部265は、読み出したビット値を対象ビット値54として、最終演算部603に出力する。図9に示す例では、更新位置57は、バッファ43に格納されたエントロピー31の最下位ビットである。
最終演算部603は、ステップS506で取得された第2中間ビット値62を、ステップS507で取得された対象ビット値54と論理演算することにより、更新ビット値55を生成する(ステップS508)。
具体的には、最終演算部603は、対象ビット値54及び第2中間ビット値62の排他的論理和を求める。最終演算部603は、求めた排他的論理和を、更新ビット値55として置換部267に出力する。図9に示す例では、対象ビット値54が「1」であり、第2中間ビット値62が「1」である。更新ビット値55は、対象ビット値54及び第2中間ビット値62の排他的論理和であるため、「0」である。
(エントロピー31の更新)
置換部267は、バッファ43に格納されたエントロピー31のうち、位置指定部268により指定された更新位置57のビット値を、ステップS508で取得された更新ビット値55に置き換える(ステップSS509)。
図9に示す例では、更新位置57は、バッファ43に格納されたエントロピー31の最下位ビットである。このため、置換部267は、エントロピー31の最下位ビットのビット値「1」を、更新ビット値55に置換する。この結果、エントロピー31の最下位ビットのビット値は、「0」に変更される。
(更新位置の変更)
位置指定部268は、ステップS509の後に、更新位置57を変更する(ステップS510)。具体的には、位置指定部268は、バッファ43に格納されたエントロピー31において現在の更新位置57のビットよりも上位ビットであり、かつ、更新位置57に隣接するビットの位置を新たな更新位置57に指定する。つまり、新たな更新位置57は、現在の更新位置57よりも1つ上位のビットである。
図9に示す例では、現在の更新位置57は、バッファ43に格納されたエントロピー31の最下位ビットである。位置指定部268は、エントロピー31の最下位ビットの左隣りに位置するビットの位置を、新たな更新位置57に指定する。図9に示すエントロピー31において、新たな更新位置57のビットを、破線で示している。
(更新位置の変化)
乱数生成部26は、認証部25が乱数送信要求45を更新制御装置4から受けたか否かを判断する(ステップS511)。認証部25が乱数送信要求45を更新制御装置4から受けていない場合(ステップS511においてNo)、乱数生成部26は、ステップS503~S510を実行して、新たな更新位置57のビット値を更新する。
位置指定部268が新たな更新位置57の指定(ステップS510)を繰り返すことにより、エントロピー31の各ビットが更新位置57に指定される。更新位置57の変化について、図9を用いて説明する。位置指定部268は、矢印58に示すように、現在の更新位置のよりも1つ上位のビット位置を新たな更新位置57に指定する。位置指定部268がステップS510を繰り返すことにより、更新位置は、エントロピー31の上位のビット位置へ1つずつ移動する。
現在の更新位置57が、バッファ43に格納されたエントロピー31の最上位ビットである場合、位置指定部268は、矢印59に示すように、エントロピー31の最下位ビットを新たな更新位置に指定する。
ステップS511の説明に戻る。認証部25が乱数送信要求45を更新制御装置4から受けた場合(ステップS511においてYes)、カウンタ261は、クロック信号51~53のカウントを停止する(ステップS512)。その後、乱数生成部26は、図8に示す処理を終了する。
(割り込み処理の発生)
割り込み処理が、エントロピー生成処理(ステップS15)の実行中に発生した場合、乱数生成部26は、クロック信号51~53のカウントを継続する。割り込み処理の実行中において、乱数生成部26は、バッファ43に格納されたエントロピー31の各ビットの更新を停止する。つまり、割り込み処理が発生した場合、乱数生成部26は、図8に示すステップS503~S510の処理の優先度を、割り込み処理の優先度よりも低くする。この場合、クロック信号51~53のカウントが継続されるのに対して、エントロピー31における更新位置57の指定と、更新位置57におけるビット値の置換とが停止される。
割り込み処理が終了した場合、乱数生成部26は、図8に示すステップS503~S510の処理を再開する。クロック信号51~53のカウントは、割り込み処理の実行中においても継続される。割り込み処理が発生してから終了するまでの期間は、ランダムである。これらのことから、割り込み処理の終了直後に取得される第1抽出ビット値51B、第2抽出ビット値52B及び第3抽出ビット値53Bのランダム性が増加する。これに伴い、乱数生成部26は、エントロピー31のランダム性を増加させることができるため、第三者による乱数35の推測を困難にすることができる。
更新制御装置4が、割り込み処理の発生中に乱数35を要求した場合、乱数生成部26は、エントロピー生成処理(ステップS15)を終了してもよい。この場合、乱数生成部26は、割り込み処理の発生前のエントロピー31に基づいて、乱数35を生成する。あるいは、割り込み処理が終了した場合、乱数生成部26は、図8に示すステップS503~S510の処理を1回実行した上で、エントロピー生成処理(ステップS15)を終了してもよい。
(クロック信号51~53の周波数)
クロック信号51~53の周波数の関係について説明する。クロック信号51の周波数は、クロック信号52及び53の周波数の整数倍と異なる。クロック信号52の周波数は、クロック信号53の周波数の整数倍と異なる。
クロック信号51の周波数は、クロック信号53の周波数の整数倍と異なる。この場合、クロック信号51の周波数とクロック信号53の周波数との最小公倍数を大きくすることができる。クロック信号51に基づく第1抽出ビット値51Bと、クロック信号53に基づく第3抽出ビット値53Bとの組み合わせのランダム性が向上することに伴って、第1中間ビット値61のランダム性は向上する。この結果、エントロピー31の再現性が低下するため、ECU2は、第1プログラム41を更新する時のセキュリティを向上させることができる。
クロック信号52の周波数は、クロック信号51の周波数の整数倍と異なり、クロック信号53の周波数の整数倍と異なる。第1中間ビット値は、第1抽出ビット値51Bと第3抽出ビット値53Bとから演算される。第2中間ビット値62のランダム性は、第2抽出ビット値52Bと、第1中間ビット値61との組み合わせのランダム性が向上することに伴って向上する。この結果、エントロピー31の再現性が低下するため、ECU2は、第1プログラム41を更新する時のセキュリティを向上させることができる。
以上説明したように、位置指定部268は、更新位置57におけるビット値が更新された場合、新たな更新位置57を指定する。新たな更新位置57が指定されるたびに、更新ビット値55の生成が繰り返される。この結果、バッファ43に格納されたエントロピー31の各ビットが更新される。図8に示すステップS503~S511により更新されるビット値は、後述するようにランダムであるため、エントロピー31のランダム性を向上させることができる。
[変形例]
上記実施の形態では、更新位置57が1ビットずつ指定される例を説明したが、これに限られない。位置指定部268は、バッファ43に格納されたエントロピー31において、複数のビット位置を更新位置57に指定してもよい。指定される複数のビット位置は連続していることが好ましい。
例えば、連続する2つのビット位置が更新位置57として指定される場合、第1抽出部262は、第1カウント値51Aから、第1抽出ビット値51Bを、最下位ビットを含み、かつ、連続する2つのビット位置から抽出する。第2抽出部263及び第3抽出部264も同様である。位置指定部268が、複数のビット位置を更新位置57に指定する場合、第1抽出ビット値51Bと第3抽出ビット値53Bとの組み合わせの数が増加する。この結果、エントロピー31のランダム性が増加するため、第1中間ビット値61の推測をより困難とすることができる。
上記実施の形態では、第1抽出部262が、第1カウント値51Aの最下位ビットのビット値を第1抽出ビット値51Bとして抽出する例を説明したが、これに限られない。第1抽出部262は、第1カウント値51Aのうち、最下位ビット以外のビット位置からビット値を抽出してもよい。第2抽出部263及び第3抽出部264も同様である。
上記実施の形態では、演算部266が、第1抽出ビット値51Bと第3抽出ビット値53Bとを最初に論理演算する例を説明したが、これに限られない。最初に論理演算される2つのビット値の組み合わせは、特に限定されない。
上記実施の形態では、演算部266が2つのビット値の排他的論理和を取得する例を説明したが、これに限定されない。演算部266は、論理和や、論理積等を用いてもよい。つまり、演算部266は、2つのビット値を論理演算すればよい。あるいは、演算部266は、論理和、論理積、排他的論理和等の複数の論理演算を組み合わせを用いてもよい。
上記実施の形態では、乱数生成部26が、更新制御部22が起動した場合にエントロピー生成処理(ステップS15)を開始する例を説明したが、これに限られない。乱数生成部26は、車両制御部21が動作している時に、エントロピー生成処理(ステップS15)を開始してもよい。この場合、乱数生成部26は、ECU2が更新制御装置4から乱数送信要求45を受けるまでの任意のタイミングでエントロピー生成処理(ステップS15)を終了すればよい。乱数生成部26が、車両制御部21の動作中にエントロピー生成処理(ステップS15)を開始する場合、乱数生成部26は、第2プログラム42とは別のプラグラムとして記憶装置24に記憶されていればよい。
上記実施の形態において、カウンタ261がクロック信号51~53をカウントする例を説明したが、これに限られない。例えば、カウンタ261は、クロック信号53をカウントしなくてもよい。演算部266は、第1抽出ビット値51Bを第2抽出ビット値52Bと論理演算することにより中間ビット値を生成する。演算部266は、生成した中間ビット値を対象ビット値54と論理演算した結果を、更新ビット値55として置換部267に出力する。この場合であっても、エントロピー31の各ビット値が更新されるため、エントロピー31から生成される乱数の推測を困難にすることができる。
あるいは、カウンタ261は、クロック信号51のみをカウントしてもよい。演算部266は、第1抽出ビット値51Bを対象ビット値54と論理演算した結果を更新ビット値55として置換部267に出力する。この場合であっても、エントロピー31の各ビット値が更新されるため、エントロピー31から生成される乱数の推測を困難にすることができる。
以上、本発明の実施の形態を説明したが、上述した実施の形態は本発明を実施するための例示に過ぎない。よって、本発明は上述した実施の形態に限定されることなく、その趣旨を逸脱しない範囲内で上述した実施の形態を適宜変形して実施することが可能である。
100 ソフトウェア更新システム
2 情報処理装置(ECU)
4 更新制御装置
21 車両制御部
22 更新制御部
23 クロック生成回路
24 記憶装置
25 認証部
26 乱数生成部
27 認証キー生成部
261 カウンタ
262 第1抽出部
263 第2抽出部
264 第3抽出部
265 対象ビット取得部
266 演算部
267 置換部
268 位置指定部
601 第1中間演算部
602 第2中間演算部
603 最終演算部

Claims (6)

  1. 車両に搭載される情報処理装置であって、
    前記車両に関する制御に用いられる制御プログラムを実行する車両制御部と、
    乱数を生成する乱数生成部と前記乱数生成部により生成された乱数を用いて、前記制御プログラムの更新を制御する更新制御装置を認証する認証部とを含む更新制御部と、を備え、
    前記乱数生成部は、
    第1クロック信号のカウント値から所定長のビット値を抽出する第1抽出部と、
    バッファに格納されたエントロピーのうち少なくとも1つのビット位置が更新位置に指定された場合、前記指定された更新位置のビット値を対象ビット値として取得する対象ビット取得部と、
    前記第1抽出部により抽出されたビット値と前記対象ビット取得部により取得された対象ビット値と論理演算する演算部と、
    前記更新位置のビット値を前記演算部による演算結果に置換する置換部と、
    前記更新位置のビット値が前記演算結果に置換された後に、新たな更新位置を指定する位置指定部と、
    前記バッファに格納されたエントロピーから乱数を生成して前記認証部に出力する出力部と、を含む情報処理装置。
  2. 請求項1に記載の情報処理装置であって、
    前記乱数生成部は、さらに、
    前記第1クロック信号の第1周波数と異なる第2周波数のクロック信号のカウント値から所定長のビット値を抽出する第2抽出部、を含み、
    前記演算部は、
    前記第1抽出部から抽出されたビット値を前記第2抽出部から抽出されたビット値と論理演算する中間演算部と、
    前記取得された対象ビット値を前記中間演算部による演算結果と論理演算する最終演算部と、を含み、
    前記置換部は、前期最終演算部による演算結果に置換する、情報処理装置。
  3. 請求項2に記載の情報処理装置であって、
    前記乱数生成部は、さらに、
    前記第1周波数及び前記第2周波数と異なる第3周波数のクロック信号のカウント値から所定長のビット値を抽出する第3抽出部、を含み、
    前記中間演算部は、前記第2抽出部から抽出されたビット値を前記第3抽出部から抽出されたビット値と論理演算することにより中間演算値を生成し、前記生成した中間演算値を前記第1抽出部から抽出されたビット値と論理演算する、情報処理装置。
  4. 請求項3に記載の情報処理装置であって、
    前記第1周波数は、前記第2周波数よりも高く、前記第3周波数よりも低い、情報処理装置。
  5. 請求項1~3のいずれか1項に記載の情報処理装置であって、
    前記乱数生成部は、さらに、
    前記車両制御部又は前記更新制御部が割り込み処理を実行している期間において、前記第1クロック信号のカウントをバックグラウンドで継続するカウンタ、含み、
    前記対象ビット取得部は、前記割り込み処理の終了後に前記対象ビットを取得する、情報処理装置。
  6. 車両に関する制御に用いられる制御プログラムを記憶する記憶装置を備え、前記制御プグラムを実行する情報処理装置の制御方法であって、
    クロック信号のカウント値から所定長のビット値を抽出する抽出ステップと、
    バッファに格納されたエントロピーのうち少なくとも1つのビット位置が更新位置に指定された場合、前記指定された更新位置のビット値を対象ビット値として取得する取得ステップと、
    前記抽出されたビット値と前記取得された対象ビット値と論理演算する演算ステップと、
    前記更新位置のビット値を前記演算ステップによる演算結果に置換する置換ステップと、
    前記更新位置のビット値が置換された後に、新たな更新位置を指定する位置指定ステップと、
    前記バッファに格納されたエントロピーから乱数を生成する生成ステップと、
    前記生成された乱数を用いて、前記制御プログラムの更新を制御する更新制御装置を認証する認証ステップと、を備える情報処理装置の制御方法。
JP2019141154A 2019-07-31 2019-07-31 情報処理装置 Active JP7253470B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2019141154A JP7253470B2 (ja) 2019-07-31 2019-07-31 情報処理装置
US16/814,007 US11537717B2 (en) 2019-07-31 2020-03-10 Information processing apparatus
EP20162421.0A EP3771978B1 (en) 2019-07-31 2020-03-11 Information processing apparatus
CN202010202865.1A CN112306037B (zh) 2019-07-31 2020-03-20 信息处理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019141154A JP7253470B2 (ja) 2019-07-31 2019-07-31 情報処理装置

Publications (2)

Publication Number Publication Date
JP2021026290A JP2021026290A (ja) 2021-02-22
JP7253470B2 true JP7253470B2 (ja) 2023-04-06

Family

ID=69804669

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019141154A Active JP7253470B2 (ja) 2019-07-31 2019-07-31 情報処理装置

Country Status (3)

Country Link
US (1) US11537717B2 (ja)
EP (1) EP3771978B1 (ja)
JP (1) JP7253470B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230153094A1 (en) * 2021-11-18 2023-05-18 Toyota Motor North America, Inc. Robust over the air reprogramming

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005276113A (ja) 2004-03-26 2005-10-06 Denso Corp 擬似乱数生成方法、セキュリティチェック方法および制御装置
JP2009259013A (ja) 2008-04-17 2009-11-05 Nec Electronics Corp 擬似乱数生成装置
US20190107999A1 (en) 2017-10-11 2019-04-11 Winbond Electronics Corp. Random number generating system and random number generating method thereof
JP2020088458A (ja) 2018-11-16 2020-06-04 株式会社デンソーテン 情報処理装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6502116B1 (en) * 1998-09-14 2002-12-31 Igt Random number generator seeding method and apparatus
GB2361567B (en) * 2000-04-18 2004-02-11 Mitel Corp Hardware authentication system and method
EP1532515A2 (en) 2002-06-06 2005-05-25 Cryptico A/S Method for improving unpredictability of output of pseudo-random number generators
JP6190188B2 (ja) * 2013-07-05 2017-08-30 クラリオン株式会社 情報配信システムおよびそれに用いるサーバ、車載端末、通信端末
DE102016223695A1 (de) * 2016-11-29 2018-05-30 Continental Teves Ag & Co. Ohg Verfahren zur Bereitstellung von Zufallszahlen für Steuereinheiten eines Fahrzeugnetzwerks sowie Fahrzeugnetzwerk zur Durchführung dieses Verfahrens
US11030065B2 (en) * 2018-11-14 2021-06-08 Arm Limited Apparatus and method of generating random numbers
JP6780724B2 (ja) * 2019-03-18 2020-11-04 株式会社オートネットワーク技術研究所 車載更新装置、更新処理プログラム及び、プログラムの更新方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005276113A (ja) 2004-03-26 2005-10-06 Denso Corp 擬似乱数生成方法、セキュリティチェック方法および制御装置
JP2009259013A (ja) 2008-04-17 2009-11-05 Nec Electronics Corp 擬似乱数生成装置
US20190107999A1 (en) 2017-10-11 2019-04-11 Winbond Electronics Corp. Random number generating system and random number generating method thereof
JP2020088458A (ja) 2018-11-16 2020-06-04 株式会社デンソーテン 情報処理装置

Also Published As

Publication number Publication date
EP3771978A1 (en) 2021-02-03
EP3771978B1 (en) 2023-09-06
US20210034749A1 (en) 2021-02-04
JP2021026290A (ja) 2021-02-22
US11537717B2 (en) 2022-12-27
CN112306037A (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
CN103166759B (zh) 使用诊断链路连接器(dlc)和onstar系统的用于安全固件下载的方法和装置
JP6065113B2 (ja) データ認証装置、及びデータ認証方法
CN110149209B (zh) 物联网设备及其提高数据传输安全性的方法和装置
WO2016189796A1 (ja) 車両用通信システム、車載装置及び鍵発行装置
JP5564197B2 (ja) メモリ制御装置、半導体メモリ装置、メモリシステム及びメモリ制御方法
CN104426669B (zh) 用于受保护地传送数据的方法
EP3612968B1 (en) Method and apparatus to quickly authenticate program using a security element
CN102105883A (zh) 电子装置以及电子装置的软件或固件更新的方法
JP6192673B2 (ja) 鍵管理システム、鍵管理方法およびコンピュータプログラム
JP2009253783A (ja) 携帯端末、データ保護方法およびデータ保護用プログラム
JP7253470B2 (ja) 情報処理装置
JP2005203882A (ja) 通信システム及び鍵送信方法
JP2018073245A (ja) 検査装置、検査システム、情報処理装置、検査方法およびコンピュータプログラム
US20180212977A1 (en) In-vehicle network system
JP6888122B2 (ja) 半導体装置、更新データ提供方法、更新データ受取方法およびプログラム
WO2019224912A1 (ja) 車両通信装置、車両アクセス制御システム、管理装置、車両アクセス制御方法、および車両アクセス制御プログラム
CN112306037B (zh) 信息处理装置
KR102236282B1 (ko) 차량용 통신 데이터 인증 방법 및 시스템
CN112347481A (zh) 安全启动方法、控制器和控制系统
JP2016152438A (ja) ソフトウェア更新装置、携帯端末及びソフトウェア更新システム
JP7447864B2 (ja) Otaマスタ、方法およびプログラム
JP6461272B1 (ja) 制御装置
JP2020088458A (ja) 情報処理装置
JP6926671B2 (ja) 電子制御装置および電子制御装置における鍵登録方法
CN111212101A (zh) 车辆及其控制方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220331

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221227

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230216

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230228

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230327

R150 Certificate of patent or registration of utility model

Ref document number: 7253470

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150