(57)【要約】【課題】  一定周期毎に擬似乱数を生成する場合でもシードが固定値になることがなく、センサ出力値、端末位置情報、電池電圧をシードとして用いることなく、シード発生装置を追加設置することなくシードが固定値となるのを防止できる擬似乱数生成方法、セキュリティチェック方法、制御装置を提供する。【解決手段】  車載電子制御装置２１は、自身の動作に伴い変化するプログラムレジスタの値に基づきシード生成用変数Ｊを設定し、そのシード生成用変数Ｊを用いて擬似乱数を生成する。これにより、擬似乱数が特定の値に偏ることが無くなり、擬似乱数の分布範囲が広くなるため、このような擬似乱数を用いて生成される制御装置側認証情報および外部機器側認証情報は、特定の値に偏ることがない。よって、車載電子制御装置２１は、セキュリティ性の高い車載電子制御装置となる。【選択図】  図４
2005276113.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも演算処理の処理経過情報を記憶するプログラムレジスタを備える制御装置において、シードに基づき擬似乱数生成演算処理を行い擬似乱数を生成する擬似乱数生成方法であって、
前記プログラムレジスタの値に基づいて前記シードを設定し、設定した該シードに基づき前記擬似乱数生成演算を行い前記擬似乱数を生成すること、
を特徴とする擬似乱数生成方法。
【請求項２】
前記制御装置は、複数の前記演算処理を実行するよう構成されるとともに、前記複数の演算処理を実行するにあたり、実行優先順位の高い前記演算処理を実行優先順位の低い前記演算処理よりも優先的に実行するよう構成されており、
前記擬似乱数生成演算処理は、前記制御装置において実行される演算処理のうち実行優先順位が最も高い演算処理であること、
を特徴とする請求項１に記載の擬似乱数生成方法。
【請求項３】
前記擬似乱数生成演算処理の起動直後における前記プログラムレジスタの値に基づいて前記シードを設定すること、
を特徴とする請求項１または請求項２に記載の擬似乱数生成方法。
【請求項４】
複数の前記プログラムレジスタの値に基づき単一情報を生成する単一情報生成演算処理を実行し、前記単一情報を前記シードとして設定すること、
を特徴とする請求項１から請求項３のいずれかに記載の擬似乱数生成方法。
【請求項５】
少なくとも演算処理の処理経過情報を記憶するプログラムレジスタを備える制御装置に対して外部機器を接続するにあたり、前記外部機器の安全性を確認するセキュリティチェック方法であって、
前記制御装置において、請求項１から請求項４のいずれかに記載の擬似乱数生成方法を実行して、前記シードに基づき前記擬似乱数生成演算を行い前記擬似乱数を生成した後、該擬似乱数に基づき暗号演算処理を行い制御装置側認証情報を生成し、
前記制御装置で生成された前記擬似乱数を前記外部機器に出力し、前記外部機器にて前記擬似乱数に基づき、前記制御装置と共通の暗号演算処理を実行して得られる外部機器側認証情報を、前記外部機器から取得し、
前記制御装置側認証情報と前記外部機器側認証情報とが一致する場合に、前記外部機器が安全であると判断すること、
を特徴とするセキュリティチェック方法。
【請求項６】
少なくとも演算処理の処理経過情報を記憶するプログラムレジスタと、シードに基づき擬似乱数生成演算処理を行い擬似乱数を生成する擬似乱数生成手段と、を備える制御装置であって、
前記擬似乱数生成手段は、請求項１から請求項４のいずれかに記載の擬似乱数生成方法を実行して、擬似乱数を生成すること、
を特徴とする制御装置。
【請求項７】
少なくとも演算処理の処理経過情報を記憶するプログラムレジスタと、外部機器の安全性を確認するセキュリティチェック手段と、を備える制御装置であって、
前記セキュリティチェック手段は、請求項５に記載のセキュリティチェック方法を実行して、前記外部機器の安全性を確認すること、
を特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シードに基づき擬似乱数生成演算処理を行い擬似乱数を生成する擬似乱数生成方法、制御装置に接続される外部機器の安全性を確認するセキュリティチェック方法、擬似乱数生成手段を備える制御装置、および、セキュリティチェック手段を備える制御装置に関する。
【背景技術】
【０００２】
従来より、シードに基づき擬似乱数生成演算処理を行い擬似乱数を生成する擬似乱数生成方法が知られており、擬似乱数生成方法は、例えば、制御装置などで実行される内部制御処理やセキュリティチェック方法などに利用されている。
【０００３】
なお、擬似乱数を複数回にわたり繰り返し生成する場合には、予め設定された固定値を初期のシードとして擬似乱数を生成しその後は生成した擬似乱数を次のシードとして入力する方法があるが、この方法ではある時点でのシードと擬似乱数生成演算処理が分かれば、攻撃者に以降に生成される乱数が分かってしまう。このことから、シードは固定値ではなく、乱数生成時毎に毎回異なる値をシードとして設定することが望ましい。また、全ての生成時期で擬似乱数が一定の値に偏るのは好ましくなく、生成される擬似乱数は、広い範囲に分布して予測が困難な値となることが好ましい。よって乱数生成時毎に毎回異なる値をシードとして設定する場合では、シードについても、全て生成時期で広い範囲に分布することが要求される。
【０００４】
このため、擬似乱数生成方法に用いるシードとしては、例えば、制御装置にて周期的にカウントアップされるフリーランカウンタの値や、制御装置に接続されたセンサの出力値（水温、大気圧など）などのように、時間経過に伴い変化する値を用いるとよい。これにより、擬似乱数生成方法において、生成結果である擬似乱数が特定の値に偏るのを防ぐことができる。
【０００５】
また、時間経過に伴い変化するシードを用いる方法としては、制御装置の有する機能により変化する状態量（端末位置情報、電池電圧など）などを用いる方法も提案されている（特許文献１参照）。
【特許文献１】特開２００２−２１５０３０号公報（図２，図４など）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記従来の擬似乱数生成方法においては、シードの取得タイミングや、制御装置の状態によっては、シードが一定の値となり、得られる擬似乱数が特定の値に偏ってしまう虞がある。
【０００７】
ここで、フリーランカウンタをシードとして乱数を生成する乱数生成タスク（乱数生成演算処理）において、シードが一定値（固定値）となる問題点を、図６を用いて説明する。なお、図６は、０．１［ｍｓ］毎にカウントアップして、１．０［ｍｓ］にてオーバーフロー（リセット）するフリーランカウンタを備える制御装置において、起動周期が１．０［ｍｓ］の乱数生成タスクに用いられるシードを表す説明図である。
【０００８】
図６に示すように、フリーランカウンタの値は、時間経過と共に増加しており、時間経過に伴い変化している。しかし、図６に示すように、フリーランカウンタのリセット周期（オーバーフロー周期）と、乱数生成タスクの起動周期とが同一であるため、乱数生成タスクに用いられるシードは、毎回同一カウント値（図では、フリーランカウンタ＝３）となることから、実質的には、固定値のシードしか取得できないことになる。
【０００９】
また、センサ出力値をシードとして用い、乱数を生成する乱数生成タスクにおいて、シードが一定値（固定値）となる問題点を、図７を用いて説明する。なお、図７では、上段に、２個のセンサが接続される制御装置（ＥＣＵ）の概略構成図を表し、下段に、シードの変化状態を示す説明図を表している。また、図７の下段は、「センサの接続されている場合」、「センサの接続されていない場合」の２パターンについて、それぞれのシードの変化状態を表している。
【００１０】
図７に示すように、「センサの接続されている場合」には、制御装置に入力される値（センサ出力値）が測定対象の変動に応じて変化するため、時間経過に伴って、異なるシードを取得できる。しかし、「センサの接続されていない場合」には、制御装置に入力される値（センサ出力値）が常に一定（例えば、電圧Ｖｃｃ）となるため、時間経過に関わらず、毎回、固定値のシードしか取得できないことになる。
【００１１】
つまり、センサが接続されていない状態では、シード値が固定値となるため、適切に擬似乱数を生成することが出来ないという問題が生じる。
さらに、制御装置の有する機能により変化する状態量（端末位置情報、電池電圧など）に関しては、制御装置が移動しない場合には、端末位置情報が一定となるため、端末位置情報を用いてシードを設定すると、毎回、固定値のシードしか取得できない。また、電池電圧は、例えば、数秒間という短時間の間に大きく変化することが少ないため、電池電圧を用いてシードを設定すると、短い周期で繰り返し乱数生成タスクが実行される場合には、シードの値がほとんど変化しないことになる。
【００１２】
なお、シードを発生する手段（シード発生装置）を追加設置することで、シードが一定値となるのを防止することも考えられるが、シード発生装置の追加設置に伴いコストが増加するという問題が生じる。
【００１３】
そこで、本発明は、こうした問題に鑑みなされたものであり、一定周期毎に擬似乱数を生成する場合でもシードが固定値になることがなく、また、センサ出力値、端末位置情報、電池電圧をシードとして用いることなく、さらに、シード発生装置を追加設置することなく、シードが固定値となるのを防止できる擬似乱数生成方法を提供すること、このような擬似乱数生成方法を用いるセキュリティチェック方法を提供すること、このような擬似乱数生成方法またはセキュリティチェック方法を用いる制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するためになされた請求項１に記載の発明方法は、プログラムレジスタを備える制御装置において、シードに基づき擬似乱数生成演算処理を行い擬似乱数を生成する擬似乱数生成方法であり、プログラムレジスタの値に基づいてシードを設定することを特徴とする擬似乱数生成方法である。
【００１５】
制御装置に備えられるプログラムレジスタは、少なくとも演算処理の処理経過情報を記憶するものであり、プログラムレジスタに記憶される値は、制御装置における演算処理の進行状況（処理経過情報）に応じて変化する。
【００１６】
このことから、定期的に（周期的に）擬似乱数生成演算を実施する場合であっても、擬似乱数生成演算の実行時期における制御装置での他の演算処理の進行状況に応じてプログラムレジスタの値は毎回異なる値を示す。このように、制御装置の動作に伴い変化する値をシードとして用いることで、乱数生成演算の結果として得られる擬似乱数の値が特定の値に偏ることが無くなり、生成する擬似乱数の分布範囲が広くなる。
【００１７】
また、プログラムレジスタの値は、制御装置の動作に伴い変化しており、短時間の間にも値が変化することから、短い周期で擬似乱数を生成する場合であっても、シードが固定値となるのを避けることができる。
【００１８】
さらに、プログラムレジスタは、制御装置の必須構成部材であり、追加設置が必要となる部材ではないことから、構成部材の追加設置に伴うコストの増加を抑制できる。また、この擬似乱数生成方法では、センサ出力値をシードとして使用しないため、センサ未接続によりシードが固定値となるのを防止できる。
【００１９】
次に、上述の擬似乱数生成方法においては、請求項２に記載のように、制御装置は、実行優先順位の高い演算処理を実行優先順位の低い演算処理よりも優先的に実行するよう構成されるとと共に、擬似乱数生成演算処理を、複数の演算処理のうち実行優先順位が最も高い演算処理として実行するとよい。つまり、制御装置は、複数の演算処理を実行するよう構成され、複数の演算処理を実行するにあたり、擬似乱数生成演算処理を実行優先順位が最も高い演算処理として実行して、擬似乱数を生成するのである。
【００２０】
実行優先順位が高い演算処理は、優先順位の低い他の演算処理が実行中であっても、割り込み実行することができる。つまり、制御装置における各種演算処理の処理経過状態がいかなる状態であっても、実行優先順位が最も高く設定された擬似乱数生成演算処理は割り込み実行が可能となる。これにより、擬似乱数生成演算処理の実行時における制御装置内の各種演算処理の処理経過状態は、擬似乱数生成演算処理の実行開始時期によって、多様な状態となる。
【００２１】
よって、本発明の擬似乱数生成方法によれば、擬似乱数生成演算処理のシードとして用いるプログラムレジスタの値が擬似乱数生成演算処理の実行開始時期に応じて多様な値を示すことから、シードとして設定可能な値の分布範囲が広くなり、シードが特定の値に偏るのを防止できる。
【００２２】
次に、上述の擬似乱数生成方法においては、請求項３に記載のように、擬似乱数生成演算処理の起動直後におけるプログラムレジスタの値に基づいてシードを設定し、擬似乱数を生成するとよい。
【００２３】
プログラムレジスタの値は、前述したとおり演算処理の処理経過に応じて変化する。しかし、擬似乱数生成演算処理の実行中においては、プログラムレジスタの値は、擬似乱数生成演算処理の処理経過に応じて更新されるため、擬似乱数生成演算処理の実行中に取得したプログラムレジスタの値は、毎回同じ値となる可能性が高くなる。
【００２４】
これに対して、擬似乱数生成演算処理の起動直後におけるプログラムレジスタの値は、それまでの各種演算処理の処理経過状態によって定まることから、毎回同じ値となる可能性が低くなる。
【００２５】
よって、本発明方法のように、擬似乱数生成演算処理の起動直後におけるプログラムレジスタの値に基づいてシードを設定することにより、シードが毎回同じ値になるのを避けることができ、シードとして設定可能な値の分布範囲が広くなる。
【００２６】
また、一般に制御装置は複数のプログラムレジスタを備えて構成されていることから、上述した擬似乱数生成方法においては、請求項４に記載のように、複数のプログラムレジスタの値に基づき単一情報を生成する単一情報生成演算処理を実行して、単一情報生成演算処理により生成される単一情報を前記シードとして設定するとよい。
【００２７】
つまり、複数のプログラムレジスタは、それぞれ異なる値が設定されることから、１つのプログラムカウンタの値を用いる場合に比べて、複数のプログラムカウンタを用いることにより、シードとして設定される値の分布範囲を広くすることができ、シードが特定の値に偏るのを防止できる。
【００２８】
なお、単一情報生成演算処理としては、例えば、擬似乱数生成演算処理の起動タイミングごとに、シードの生成に用いるプログラムレジスタを順次変更して、単一情報を生成する処理を挙げることができる。また、他の単一情報生成演算処理としては、プログラムカウンタがｎビットデータとして構成される場合において、複数のプログラムカウンタの値について各ビットごとに排他的論理和などの論理演算によって得られる演算結果を単一情報として生成する処理を挙げることができる。
【００２９】
次に、上述した目的を達成するためになされた請求項５に記載の発明方法は、制御装置と外部機器とを接続するにあたり、外部機器の安全性を確認するセキュリティチェック方法であり、制御装置で生成した制御装置側認証情報と外部機器で生成した外部機器側認証情報とが一致する場合に、外部機器が安全であると判断する。このとき、制御装置は、擬似乱数を生成した後、その擬似乱数に基づき暗号演算処理を実行して制御装置側認証情報を生成し、外部機器は、制御装置にて生成された擬似乱数に基づき、制御装置と共通の暗号演算処理を実行して外部機器側認証情報を生成する。
【００３０】
そして、このセキュリティチェック方法は、擬似乱数を生成するにあたり、請求項１から請求項４のいずれかに記載の擬似乱数生成方法を実行することに特徴がある。つまり、請求項１から請求項４のいずれかに記載の擬似乱数生成方法を用いて生成される擬似乱数は、特定の値に偏ることが無く、擬似乱数の分布範囲が広くなるため、制御装置側認証情報および外部機器側認証情報が特定の値に偏ることを防止できる。
【００３１】
よって、本発明方法によれば、制御装置に接続される外部機器の安全性の確認にあたり、制御装置側認証情報および外部機器側認証情報が特定の値に偏ることに起因してセキュリティ性が低下するのを防止でき、信頼性の高いセキュリティチェック方法を実現することができる。
【００３２】
次に、上述した目的を達成するためになされた請求項６に記載の発明は、プログラムレジスタと擬似乱数生成手段とを備える制御装置であって、擬似乱数生成手段が、請求項１から請求項４のいずれかに記載の擬似乱数生成方法を実行して、シードに基づき擬似乱数生成演算処理を行い擬似乱数を生成することを特徴とする。
【００３３】
上述したように、請求項１から請求項４のいずれかに記載の擬似乱数生成方法により生成される擬似乱数は、分布範囲が広く、特定の値に偏ることがない。
これにより、この擬似乱数生成手段が生成する擬似乱数は、特定の値に偏ることが無いため、本発明によれば、予測が困難な擬似乱数（換言すれば、良好な擬似乱数）を生成する制御装置を実現できる。
【００３４】
次に、上述した目的を達成するためになされた請求項７に記載の発明は、プログラムレジスタとセキュリティチェック手段とを備える制御装置であって、セキュリティチェック手段は、請求項５に記載のセキュリティチェック方法を実行することにより、外部機器の安全性を確認することを特徴とする。
【００３５】
上述したように、上記（請求項５）のセキュリティチェック方法は、毎回シードが変化するため擬似乱数の分布範囲が広く、制御装置に接続される外部機器の安全性の確認にあたり、セキュリティ性を向上できる。
【００３６】
これにより、セキュリティチェック手段は、より精度良く外部機器の安全性をチェックすることができ、本発明によれば、外部機器からの不正アクセスを防止でき、セキュリティ性の高い制御装置を実現できる。
【発明を実施するための最良の形態】
【００３７】
以下に、本発明が適用された実施形態について図面を用いて説明する。
なお、本発明の実施形態は、下記の実施形態に限定されることはなく、本発明の技術的範囲に属する限り、種々の形態を採り得ることは言うまでもない。
【００３８】
図１は、各種制御処理（演算処理）を実行する複数の車載電子制御装置（ＥＣＵ）２１，２３，２５，２７，２９と、各車載電子制御装置２１，２３，２５，２７，２９にて入出力されるデータの通信経路となる通信データリンク１１と、外部機器と通信データリンク１１とを接続するための接続コネクタ１３と、を備える車載制御システム１の概略構成を表す構成図である。なお、図１では、外部機器であるテスタ１５が接続された車載制御システム１の構成図を表している。
【００３９】
本実施形態の車載制御システム１は、車載電子制御装置として、第１車載電子制御装置２１，第２車載電子制御装置２３，第３車載電子制御装置２５，第４車載電子制御装置２７，第５車載電子制御装置２９を備えており、車両各部（燃料系統、点火系統、排気系統など）の動作を制御する各種制御処理を実行する。
【００４０】
テスタ１５は、車載制御システム１の接続コネクタ１３に接続されることで、通信データリンク１１を介して各車載電子制御装置２１，２３，２５，２７，２９との間でデータ送受信を行うよう構成されている。そして、テスタ１５は、各車載電子制御装置２１，２３，２５，２７，２９の内部情報を書き換える情報書換処理や、各車載電子制御装置２１，２３，２５，２７，２９の内部情報を読み出す情報読出処理などを実行することで、車載電子制御装置のメンテナンス作業を行う保守ツールとして用いられる。
【００４１】
なお、車載電子制御装置２１，２３，２５，２７，２９に対する情報書換処理や情報読出処理は、無制限に実行を許可すると安全上（セキュリティ上）の問題が生じるおそれがあるため、接続されたテスタが信頼性のある安全なテスタであることを十分に確認した上で、情報書換処理や情報読出処理の実行を許可する必要がある。
【００４２】
そのため、本実施形態の車載電子制御装置２１，２３，２５，２７，２９は、テスタ１５を接続して、情報書換処理や情報読出処理を実行するに際しては、テスタ１５の信頼性（安全性）を確認するためのセキュリティチェック演算処理を実行する。
【００４３】
セキュリティチェック演算処理は、各車載電子制御装置とテスタ１５とのそれぞれにおいて、同一の擬似乱数に基づき同一の暗号演算を行い、それぞれの演算結果が一致する場合に、テスタ１５が信頼性を有すると判断して、情報書換処理や情報読出処理の実行を許可する、という手順で行われる。なお、処理内容の詳細については、後述する。
【００４４】
また、セキュリティチェック演算処理に関しては、車載電子制御装置で実行される暗号演算の演算内容が、部外者に対して秘密に管理されており、信頼性のあるテスタのみが適正な暗号演算（車載電子制御装置と共通の暗号演算）を実行できる。このため、不正なテスタでの暗号演算結果は、車載電子制御装置での暗号演算結果とは異なることから、接続されたテスタが信頼性のあるテスタであるか否かを判断することができる。
【００４５】
次に、第１車載電子制御装置２１に備えられるシード生成部３１、乱数生成部３３、プログラムレジスタ群３５について、それぞれの相関関係を表す説明図を、図２に示す。なお、その他の車載電子制御装置２３，２５，２７，２９についても、第１車載電子制御装置２１と同様に、シード生成部３１、乱数生成部３３、プログラムレジスタ群３５を備えている。
【００４６】
プログラムレジスタ群３５は、Ｎ個（Ｎは２以上の整数）のレジスタで構成されており、レジスタは、プログラムカウンタ，スタックポインタ，データレジスタなどを、ｋ個（ｋは２以上の整数）のビットからなるデータ（ビット列データ）として記憶するよう構成されている。なお、プログラムカウンタは、実行中のプログラム（演算処理）のプログラムコードのうち現在実行中のステップ（処理経過情報）を示すものであり、スタックポインタは、スタックのアドレスを示すものであり、データレジスタは、アドレスやデータ変数の演算などに用いられるものである。
【００４７】
シード生成部３１は、プログラムレジスタ群３５（詳細には、Ｎ個のレジスタのそれぞれ）からＮ個のレジスタ値を取得し、そのうちの２個のレジスタ値について各ビット毎に排他的論理和演算（ＸＯＲ演算）を行い、その演算結果と残りのレジスタのうちの１個のレジスタ値について各ビット毎に排他的論理和演算を行う、という処理を順次実施する。この結果、シード生成部３１は、取得したＮ個のレジスタ値の全てについて、各ビット毎に排他的論理和演算（ＸＯＲ演算）を行い、その演算結果をシードとして生成する。
【００４８】
乱数生成部３３は、シード生成部３１からシードを取得して、シードに基づき線形合同法による演算を行い、擬似乱数の生成を行う。このようにして生成された擬似乱数は、各種演算処理（例えば、セキュリティチェック演算処理など）で利用される。
【００４９】
次に、車載制御システム１の接続コネクタ１３にテスタ１５を接続して情報書換処理を実行する際に、テスタ１５の安全性（信頼性）を確認するために、第１車載電子制御装置２１およびテスタ１５で実行されるセキュリティチェック演算処理について、図３を用いて説明する。図３は、第１車載電子制御装置２１で実行されるＥＣＵ側セキュリティチェック演算処理の処理の流れ、およびテスタ１５で実行されるテスタ側セキュリティチェック演算処理の処理の流れを表す説明図である。
【００５０】
なお、テスタ１５の安全性を確認するためのセキュリティチェック演算処理は、第１車載電子制御装置２１だけでなく、他の車載電子制御装置２３，２５，２７，２９においても、同様の演算処理が実行される。
【００５１】
図３に示すように、まず、テスタ１５は、Ｓ１１０（Ｓはステップを表す。以下同様。）において、乱数要求信号を車載電子制御装置２１に対して送信する。
そして、第１車載電子制御装置２１は、乱数要求信号を受信すると、乱数生成タスク（擬似乱数生成演算処理）を実行して、擬似乱数を生成する。乱数生成タスクは、乱数生成ステップ（Ｓ２１０）と乱数送信ステップ（Ｓ２２０）とを備えており、乱数生成タスクの詳細な処理内容を表すフローチャートを図４に示す。
【００５２】
図４に示すように、乱数生成タスクが起動されると、まず、Ｓ４１０では、カウンタ変数Ｉを初期化（カウンタ変数Ｉに０を設定）する処理を行い、続く、Ｓ４２０では、第Ｉ番目のプログラムレジスタ（Ｉ）の値をプログラムレジスタ群３５から取得し、メモリなどのデータ記憶部に記憶する処理を行う。
【００５３】
次のＳ４３０では、カウンタ変数Ｉを１インクリメント（１加算）し、続くＳ４４０では、カウンタ変数Ｉがレジスタ個数Ｎ（プログラムレジスタ群３５に備えられるプログラムレジスタの個数に相当）と等しいか否かを判断し、肯定判定する場合にはＳ４５０に移行し、否定判定する場合には再びＳ４２０に移行する。
【００５４】
つまり、乱数生成タスクは、起動直後のＳ４１０からＳ４４０までの処理により、プログラムレジスタ群３５の全てのレジスタの記憶内容をデータ記憶部に記憶して、自身の起動直後における全レジスタの記憶内容を確保する。
【００５５】
Ｓ４４０で肯定判定されてＳ４５０に移行すると、Ｓ４５０では、第０番目のプログラムレジスタ（０）の値をシード生成用変数Ｊに代入する。
続くＳ４６０では、カウンタ変数Ｉに１を設定し、次のＳ４７０では、第Ｉ番目のプログラムレジスタ（Ｉ）とシード生成用変数Ｊとについて、それぞれの値について各ビット毎に排他的論理和演算（ＸＯＲ演算）を行い、その演算結果をシード生成用変数Ｊに設定する処理を行う。
【００５６】
次のＳ４８０では、カウンタ変数Ｉを１インクリメント（１加算）し、続くＳ４９０では、カウンタ変数Ｉがレジスタ個数Ｎと等しいか否かを判断し、肯定判定する場合にはＳ５００に移行し、否定判定する場合には再びＳ４７０に移行する。
【００５７】
つまり、乱数生成タスクは、Ｓ４５０からＳ４９０までの処理により、プログラムレジスタ群３５の全てのレジスタの記憶内容について、各ビット毎に排他的論理和演算（ＸＯＲ演算）を行い、その演算結果をシード生成用変数Ｊとして生成する処理を行う。
【００５８】
次のＳ５００では、シード生成用変数Ｊに基づき線形合同法による演算を行い、擬似乱数を生成する処理を行うと共に、生成した擬似乱数をメモリなどのデータ記憶部に記憶する処理を行う。なお、データ記憶部に記憶された擬似乱数は、他の演算処理などから参照可能な状態で記憶され、他演算処理は、必要に応じて擬似乱数を参照して利用する。
【００５９】
続くＳ５１０では、テスタからの乱数要求信号を受信したか否かを判断しており、肯定判定する場合（テスタからの乱数要求信号を受信している場合）にはＳ５２０に移行し、否定判定する場合（テスタからの乱数要求信号を受信していない場合）には乱数生成タスクを終了する。
【００６０】
Ｓ５１０で肯定判定されてＳ５２０に移行すると、Ｓ５２０では、生成した擬似乱数をテスタ１５に対して送信する処理を行う。
Ｓ５１０で否定判定されるか、Ｓ５２０での処理が完了すると、乱数生成タスクが終了する。
【００６１】
なお、図４のフローチャートに示す処理のうちＳ４１０からＳ５００までの処理が図３に示すＳ２１０に相当しており、Ｓ５１０からＳ５２０までの処理がＳ２２０に相当している。また、乱数生成タスクは、テスタから要求された場合だけではなく、車載電子制御装置の内部で実行される演算処理等から擬似乱数の生成を要求される場合にも、擬似乱数を生成する。
【００６２】
次に、乱数生成タスクの実行優先順位について説明する。
第１車載電子制御装置２１は、複数のタスク（制御処理）を実行可能に構成されると共に、複数のタスクを実行するにあたり、タスク毎に予め設定された実行優先順位（優先度）に基づいて、実行優先順位の高いタスクを実行優先順位の低いタスクよりも優先的に実行するよう構成されている。つまり、第１車載電子制御装置２１は、実行優先順位の低いタスク（順位低タスク）の実行中に、そのタスクよりも実行優先順位の高いタスク（順位高タスク）に対して起動要求がなされた場合には、順位低タスクの処理を中断して、順位高タスクの処理を優先的に実行するよう構成されている。
【００６３】
そして、本実施形態においては、乱数生成タスクの実行優先順位は、最高優先度に設定されており、車載電子制御装置２１は、乱数生成タスク以外のタスクが実行中であっても、常に優先的に乱数生成タスクを実行できる。
【００６４】
ここで、互いに実行優先順位の異なる３つのタスク（タスク１，タスク２，タスク３）を実行する際の実行状況を表した説明図を図５に示す。なお、タスク１は、実行優先順位が高レベルの順位高タスク（乱数生成タスクに相当）であり、タスク２は、実行優先順位が中レベルの順位中タスクであり、タスク３は、実行優先順位が低レベルの順位低タスクである。
【００６５】
図５では、横軸を時間経過とし、縦軸をタスクの実行優先順位（優先度）とする座標平面において、処理実行中のタスクを実線で示し、処理中断中のタスクを点線で示すことにより、各タスクの実行状況を表している。
【００６６】
図５に示すように、時刻ｔ０から時刻ｔ１までの期間ではタスク３が実行されているが、時刻ｔ１でタスク２が起動されると、タスク３の処理が中断されてタスク２が実行され、その後、時刻ｔ２でタスク１が起動されると、タスク２の処理が中断されてタスク１が実行される。そして、時刻ｔ３でタスク１の処理が終了すると、再びタスク２が実行され、時刻ｔ４でタスク２の処理が終了すると、再びタスク３が実行される。また、時刻ｔ１１から時刻ｔ１４までの期間においては、時刻ｔ１１でタスク３の処理が中断されてタスク２が実行され、時刻ｔ１２でタスク２の処理が中断されてタスク１が実行され、時刻ｔ１３でタスク１の処理が終了して再びタスク２が実行され、時刻ｔ１４でタスク２の処理が終了して再びタスク３が実行される。
【００６７】
ここで、図５の下側に、タスク２の概略処理内容を示すフローチャートを示す。タスク２の処理経路としては、条件Ａを判定する分岐ステップから処理１のステップに向かう第１処理経路と、条件Ａを判定する分岐ステップから処理２のステップに向かう第２処理経路と、がある。
【００６８】
他方、プログラムレジスタ群３５（詳細には、各レジスタ）の記憶内容は、車載電子制御装置における演算処理の処理経過に応じて変化しており、図５に示すタスク１（乱数生成タスク）の起動時期（時刻ｔ２、時刻ｔ１２）におけるプログラムレジスタ群３５の記憶内容は、タスク２の処理経過状態に応じて変化する。つまり、プログラムレジスタ群３５の記憶内容は、タスク２の処理経路が第１処理経路になる場合と第２処理経路になる場合とでは、それぞれ異なる内容となる。
【００６９】
このため、乱数生成タスク（タスク１）が一定の時間間隔で周期的に起動される場合であっても、タスク２の処理経過状態によって、プログラムレジスタ群３５の記憶内容が変化することにより、乱数生成タスクの中で生成されるシードの値が変化すると共に、生成される擬似乱数の値が特定の値に偏るのを防止できる。
【００７０】
また、プログラムレジスタ群３５の記憶内容は、タスク２の処理経路が第１処理経路であるか第２処理経路であるかの要因だけではなく、各処理経路の中のどの段階まで進行しているかという要因によっても変化する。
【００７１】
次に、図３に戻り、乱数生成タスク（Ｓ２１０、Ｓ２２０）により擬似乱数が生成されると、続くＳ２３０では、生成された擬似乱数に基づき暗号演算処理を行い制御装置側認証情報（演算結果Ａ）を生成する処理を実行する。
【００７２】
テスタ１５においては、Ｓ１１０に続くＳ１２０にて第１車載電子制御装置２１から擬似乱数を受信したか否かを判断しており、肯定判定するとＳ１３０に移行し、否定判定すると同ステップを繰り返し実行して、擬似乱数を受信するまで待機する。
【００７３】
擬似乱数を受信してＳ１２０で肯定判定されると、続くＳ１３０では、受信した擬似乱数に基づき、Ｓ２３０と共通の暗号演算処理を実行して、テスタ側認証情報を生成する処理を実行する。次のＳ１４０では、テスタ側認証情報（演算結果Ｂ）を車載電子制御装置２１に対して送信する処理を行う。
【００７４】
第１車載電子制御装置２１においては、Ｓ２４０にて、制御装置側認証情報（演算結果Ａ）とテスタ側認証情報（演算結果Ｂ）とを比較し、次のＳ２５０では、第１車載電子制御装置２１での演算結果Ａとテスタ１５での演算結果Ｂとが一致するか否かを判定しており、一致する場合にはＳ２８０に移行し、不一致の場合にはＳ２６０に移行する。
【００７５】
Ｓ２５０にて演算結果が一致すると判定されてＳ２８０に移行すると、Ｓ２８０にてセキュリティ解除処理を行い、続くＳ２９０にてセキュリティ解除信号をテスタ１５に対して送信する処理を行う。
【００７６】
また、Ｓ２５０にて演算結果が不一致と判定されてＳ２６０に移行すると、Ｓ２６０ではセキュリティ解除処理を行わず第１車載電子制御装置２１のセキュリティ状態を維持し、続くＳ２７０にてセキュリティ維持信号をテスタ１５に対して送信する処理を行い、第１車載電子制御装置２１での処理を終了する。
【００７７】
テスタ１５では、Ｓ１５０にて第１車載電子制御装置２１からセキュリティ解除信号またはセキュリティ維持信号を受信したか否かを判断しており、肯定判定するとＳ１６０に移行し、否定判定すると同ステップを繰り返し実行して、セキュリティ解除信号またはセキュリティ維持信号を受信するまで待機する。
【００７８】
Ｓ１５０で肯定判定されてＳ１６０に移行すると、Ｓ１６０では、受信した信号がセキュリティ解除信号であるか否かを判断しており、肯定判定するとＳ１７０に移行し、否定判定すると、テスタ１５での処理を終了する。
【００７９】
Ｓ１６０で肯定判定されてＳ１７０に移行すると、Ｓ１７０では、第１車載電子制御装置２１に備えられるフラッシュＲＯＭの書換え要求信号と、フラッシュＲＯＭに書き込む書換後データ内容とを、第１車載電子制御装置２１に対して送信する。そして、Ｓ１７０での処理が終了すると、テスタ１５での処理を終了する。
【００８０】
第１車載電子制御装置では、Ｓ２９０に続いて実行されるＳ３００にて、書換え要求信号を受信したか否かを判断しており、肯定判定するとＳ３２０に移行し、否定判定するとＳ３１０に移行する。
【００８１】
そして、Ｓ３２０では、テスタ１５から受信した書換え後データ内容に基づいて、フラッシュＲＯＭの内容書き換え処理を実行する。Ｓ３２０の処理が終了すると、Ｓ３３０に移行する。
【００８２】
また、Ｓ３１０では、Ｓ２８０でのセキュリティ解除時期を起点として予め定められた受信待機時間を経過したか否かを判断しており、肯定判定するとＳ３３０に移行し、否定判定すると再びＳ３００に移行する。つまり、セキュリティ解除時点から受信待機時間が経過するか、あるいは、書換え要求信号を受信するまでは、Ｓ３００での否定判定とＳ３１０での否定判定とが繰り返されて、受信待機時間の経過まで、あるいは、書換え要求信号を受信するまで待機する。
【００８３】
そして、受信待機時間中に書換え要求信号を受信すると、Ｓ３２０にてフラッシュＲＯＭの内容書き換え処理を行った後、Ｓ３３０に移行して、Ｓ３３０にてセキュリティ再ロック処理を実行して、フラッシュＲＯＭの内容書換え処理を禁止するセキュリティ状態に設定する。
【００８４】
また、受信待機時間内に書換え要求信号を受信しない場合には、Ｓ３１０で肯定判定されてＳ３３０に移行し、Ｓ３３０にてセキュリティ再ロック処理を実行して、フラッシュＲＯＭの内容書換え処理を禁止するセキュリティ状態に設定する。
【００８５】
Ｓ３３０でのセキュリティ再ロック処理が終了すると、第１車載電子制御装置２１での処理を終了する。
なお、接続されるテスタ１５の安全性を確認するための演算処理は、第１車載電子制御装置２１だけで実行されるのではなく、他の車載電子制御装置２３，２５，２７，２９においても同様に実行される。
【００８６】
以上説明したように、車載制御システム１に備えられる車載電子制御装置２１，２３，２５，２７，２９は、テスタ１５を接続するにあたり、テスタ１５の安全性（信頼性）を確認するために、車載電子制御装置およびテスタにおいて同一の擬似乱数に基づきそれぞれ生成した認証情報（制御装置側認証情報、テスタ側認証情報）を比較する処理を行う。そして、車載電子制御装置２１，２３，２５，２７，２９は、認証情報が一致してテスタ１５の安全性（信頼性）が確認された場合に、テスタ１５によるフラッシュＲＯＭの内容書換え処理を許可する。
【００８７】
このとき、認証情報の生成に用いる擬似乱数は、プログラムレジスタの値に基づき設定されたシード生成用変数Ｊを用いて生成されている。そして、プログラムレジスタに記憶される値は、車載電子制御装置２１，２３，２５，２７，２９における演算処理の進行状況（処理経過情報）に応じて変化することから、シード生成用変数Ｊは、車載電子制御装置２１，２３，２５，２７，２９の動作に伴い変化する。
【００８８】
このように車載電子制御装置２１，２３，２５，２７，２９の動作に伴い変化する値をシードとして用いることで、乱数生成タスクが生成する擬似乱数の値は、特定の値に偏ることが無くなり、分布範囲が広くなる。
【００８９】
また、プログラムレジスタの値は、車載電子制御装置２１，２３，２５，２７，２９の動作に伴い短時間の間にも値が変化することから、短い周期で擬似乱数を生成する場合であっても、シード生成用変数Ｊが固定値となるのを避けることができる。
【００９０】
よって、本実施形態の車載電子制御装置２１，２３，２５，２７，２９は、生成する擬似乱数が特定の値に偏ることが無く、擬似乱数の分布範囲が広いため、予測が困難な擬似乱数（換言すれば、良好な擬似乱数）を生成できるという利点がある。
【００９１】
さらに、プログラムレジスタは、車載電子制御装置２１，２３，２５，２７，２９の必須構成部材であり、追加設置が必要となる部材ではないことから、本実施形態の車載電子制御装置２１，２３，２５，２７，２９によれば、構成部材の追加設置に伴うコストの増加を抑制できる。
【００９２】
また、本実施形態の乱数生成タスクは、センサ出力値をシードとして使用しないため、センサ未接続によりシードが固定値となるのを防止できる。
そして、本実施形態のセキュリティチェック演算処理は、分布範囲の広い擬似乱数を用いて認証情報を生成するため、制御装置側認証情報および外部機器側認証情報が特定の値に偏ることを防止できる。
【００９３】
よって、本実施形態の車載電子制御装置２１，２３，２５，２７，２９によれば、テスタ１５の安全性を確認するにあたり、制御装置側認証情報および外部機器側認証情報が特定の値に偏ることに起因してセキュリティ性が低下するのを防止でき、セキュリティ性の高い制御装置を実現できる。
【００９４】
これにより、この車載電子制御装置２１，２３，２５，２７，２９は、より精度良くテスタ１５の安全性をチェックすることができ、外部機器からの不正アクセスを防止でき、セキュリティ性の向上を図ることが出来る。
【００９５】
また、本実施形態の車載電子制御装置２１，２３，２５，２７，２９は、複数の演算処理を実行するにあたり、乱数生成タスク（擬似乱数生成演算処理）を実行優先順位が最も高い演算処理として実行する。このため、乱数生成タスクは、制御装置における他の演算処理（優先順位の低い他の演算処理）が実行中で、それらの演算処理の処理経過状態がいかなる状態であっても、割り込み実行することができる。
【００９６】
これにより、乱数生成タスクの実行時における制御装置内の各種演算処理の処理経過状態は、乱数生成タスクの実行開始時期によって多様な状態となり、これに伴い、乱数生成タスクにおいてシードとして用いるプログラムレジスタの値が多様な値を示す。
【００９７】
よって、本実施形態の車載電子制御装置２１，２３，２５，２７，２９は、擬似乱数の生成に用いるシードとして設定可能な値の分布範囲が広くなり、シードが特定の値に偏るのを防止できるため、良好な擬似乱数を生成することが出来る。
【００９８】
さらに、本実施形態の車載電子制御装置２１，２３，２５，２７，２９は、乱数生成タスクの起動直後にプログラムレジスタの値を全て記憶し、そのプログラムレジスタの値に基づいてシードを設定して、擬似乱数を生成している。
【００９９】
プログラムレジスタの値は、車載電子制御装置における演算処理の処理経過に応じて変化するが、乱数生成タスクの実行中においては、プログラムレジスタの値は、乱数生成タスクの処理経過に応じて更新される。このため、乱数生成タスクの実行中に取得したプログラムレジスタの値は、毎回同じ値となる可能性が高くなる。
【０１００】
これに対して、乱数生成タスクの起動直後におけるプログラムレジスタの値は、それまでの各種演算処理の処理経過状態によって定まることから、毎回同じ値となる可能性が低くなる。
【０１０１】
よって、本実施形態の車載電子制御装置２１，２３，２５，２７，２９は、乱数生成タスクの起動直後におけるプログラムレジスタの値に基づいてシードを設定することから、シードが毎回同じ値になるのを避けることができ、シードとして設定可能な値の分布範囲が広くなるため、良好な擬似乱数を生成することが出来る。
【０１０２】
また、本実施形態の車載電子制御装置２１，２３，２５，２７，２９は、１個のプログラムレジスタに基づきシードを設定するのではなく、複数のプログラムレジスタの値に基づき排他的論理和演算を行い得られる値を、シードとして設定するよう構成されている。
【０１０３】
つまり、複数のプログラムレジスタは、それぞれ異なる値が設定されることから、１つのプログラムカウンタの値を用いる場合に比べて、複数のプログラムカウンタを用いることにより、シードとして設定される値の分布範囲を広くすることができる。
【０１０４】
よって、本実施形態の車載電子制御装置２１，２３，２５，２７，２９は、シードが特定の値に偏るのを防止できるため、良好な擬似乱数を生成することが出来る。
なお、本実施形態においては、セキュリティチェック演算処理のＳ２１０で実行される擬似乱数の生成方法が、特許請求の範囲に記載の擬似乱数生成方法に相当し、Ｓ５００で実行される線形合同法が、特許請求の範囲に記載の擬似乱数生成演算処理に相当し、乱数生成タスクのＳ４５０，Ｓ４６０，Ｓ４７０，Ｓ４８０，Ｓ４９０が、単一情報生成演算処理に相当し、最終的に得られるシード生成用変数Ｊが単一情報に相当している。
【０１０５】
また、テスタ１５が特許請求の範囲に記載の外部機器に相当し、セキュリティチェック演算処理のＳ２１０が擬似乱数生成手段に相当し、ＥＣＵ側セキュリティチェック演算処理のＳ２１０〜Ｓ２９０で実行されるセキュリティチェック方法が、特許請求の範囲に記載のセキュリティチェック方法に相当し、ＥＣＵ側セキュリティチェック演算処理のＳ２１０〜Ｓ２９０の処理が、セキュリティチェック手段に相当し、車載電子制御装置２１，２３，２５，２７，２９がそれぞれ制御装置に相当している。
【０１０６】
以上、本発明の実施形態について説明したが、本発明は、上記実施形態に限定されることはなく、種々の態様をとることができる。
例えば、複数のプログラムレジスタに基づき１個のシードを生成する手法は、上記実施形態のように、各ビットごとに排他的論理和などの論理演算を実施してシードを生成する手法に限られることはなく、乱数生成タスクの起動タイミングごとに、シードの生成に用いるプログラムレジスタを順次変更して、シードを生成する手法を用いることもできる。
【０１０７】
また、シードの生成に用いるプログラムレジスタは、必ずしも複数用いる必要はなく、１個であってもよい。１個のプログラムレジスタを用いてシードを用いる場合には、複数のプログラムレジスタに基づき演算処理を行う必要が無くなるため、制御装置の処理負荷の軽減を図ることができる。
【０１０８】
さらに、車載電子制御装置は、複数の演算処理を並行して実施するマルチタスク制御プログラムを実行する構成でも良く、あるいは、１つの演算処理を順番に実施するシングルタスク制御プログラムを実行する構成でも良い。いずれの構成の車載電子制御装置であっても、プログラムレジスタの値が演算処理の処理経過情報に応じて変化することから、良好な擬似乱数を生成することができると共に、信頼性の高いセキュリティチェックを実施することが出来る。
【０１０９】
また、Ｓ５００において、シードに基づき擬似乱数を生成するために実行する擬似乱数生成演算処理は、上述した線形合同法に限られることはなく、他の演算処理を擬似乱数を生成してもよい。
【図面の簡単な説明】
【０１１０】
【図１】車載制御システムの概略構成を表す構成図である。
【図２】車載電子制御装置に備えられるシード生成部、乱数生成部、プログラムレジスタ群のそれぞれの相関関係を表す説明図である。
【図３】車載電子制御装置で実行されるＥＣＵ側セキュリティチェック演算処理の処理の流れ、およびテスタで実行されるテスタ側セキュリティチェック演算処理の処理の流れを表す説明図である。
【図４】乱数生成タスクの処理内容を表すフローチャートである。
【図５】互いに実行優先順位の異なる３つのタスクを実行する際の実行状況を表した説明図である。
【図６】フリーランカウンタを備える制御装置において、起動周期が１．０［ｍｓ］の乱数生成タスクに用いられるシードを表す説明図である。
【図７】上段は、２個のセンサが接続される制御装置の概略構成図であり、下段は、シードの変化状態を示す説明図である。
【符号の説明】
【０１１１】
１…車載制御システム、１１…通信データリンク、１３…接続コネクタ、１５…テスタ、２１，２３，２３，２５，２７，２９…車載電子制御装置、３１…シード生成部、３３…乱数生成部、３５…プログラムレジスタ群。
【図１】
2005276113.tif 000003
【図２】
2005276113.tif 000004
【図３】
2005276113.tif 000005
【図４】
2005276113.tif 000006
【図５】
2005276113.tif 000007
【図６】
2005276113.tif 000008
【図７】
2005276113.tif 000009