(57)【要約】【課題】乱数として使用しない特定値と異なる乱数を所定時間内で発生する乱数発生装置およびそれを用いた車両制御装置を提供する。【解決手段】乱数発生装置は、第１乱数の種を取得し（Ｓ４００）、第１乱数の種から第１乱数を発生する（Ｓ４０２）。発生した第１乱数が乱数として使用しない特定値である「０ｘ００」と異なる場合（Ｓ４０４：Ｎｏ）、乱数発生装置は第１乱数を出力乱数として選択する（Ｓ４０６）。第１乱数が「０ｘ００」と等しい場合（Ｓ４０４：Ｙｅｓ）、乱数発生装置は、第２乱数の種を取得し（Ｓ４０８）、第２乱数の種から第２乱数を発生し（Ｓ４１０）、第２乱数に基づいて第１乱数に演算を施して変化させるためのビット演算値を算出する（Ｓ４１２）。乱数発生装置は、算出したビット演算値と第１乱数との排他的論理和（ＸＯＲ）を演算した結果を出力乱数として選択する（Ｓ４１４）。【選択図】図２
2014142699.tif 000002
【特許請求の範囲】
【請求項１】
第１乱数を発生する第１発生手段（３２、Ｓ４００、Ｓ４０２、Ｓ４３０、Ｓ４３２）と、
前記第１発生手段が発生する前記第１乱数を変化させて前記第１乱数に代えて出力される代替乱数を生成する代替乱数手段（４０、Ｓ４０８〜Ｓ４１４、Ｓ４２０〜Ｓ４２４、Ｓ４３８）と、
前記第１乱数または前記代替乱数手段が生成する前記代替乱数のうち乱数として使用しない特定値と異なる乱数を、出力乱数として選択する乱数選択手段（４２、Ｓ４０４、Ｓ４０６、Ｓ４１４、Ｓ４３４、Ｓ４３６、Ｓ４３８）と、
を備えることを特徴とする乱数発生装置（３０）。
【請求項２】
第２乱数を発生する第２発生手段（４４、Ｓ４０８、Ｓ４１０、Ｓ４２０、Ｓ４２２）を備え、
前記代替乱数手段（４６、Ｓ４１２、Ｓ４１４、Ｓ４２４、Ｓ４３８）は、前記第２発生手段が発生する前記第２乱数を用いて前記第１乱数を変化させて前記代替乱数を生成する、
ことを特徴とする請求項１に記載の乱数発生装置。
【請求項３】
前記第２発生手段（Ｓ４０８、Ｓ４１０）は、前記代替乱数手段が前記代替乱数を生成する処理において前記第２乱数を発生することを特徴とする請求項２に記載の乱数発生装置。
【請求項４】
前記第２発生手段（Ｓ４２０、Ｓ４２２）は、前記代替乱数手段が前記代替乱数を生成する処理とは異なるタイミングで前記第２乱数を発生することを特徴とする請求項２に記載の乱数発生装置。
【請求項５】
前記乱数選択手段は、前記第１乱数が前記特定値と同じ場合は前記代替乱数手段に前記代替乱数を生成させ、前記第１乱数が前記特定値と異なる場合は前記代替乱数手段に前記代替乱数を生成させないことを特徴とする請求項１から４のいずれか一項に記載の乱数発生装置。
【請求項６】
前記特定値は複数設定されていることを特徴とする請求項１から５のいずれか一項に記載の乱数発生装置。
【請求項７】
前記代替乱数手段（Ｓ４１４、Ｓ４３８）は、２進表現された前記第１乱数に対して、少なくとも１ビットのビット反転演算を行うことを特徴とする請求項１から６のいずれか一項に記載の乱数発生装置。
【請求項８】
請求項１から７のいずれか一項に記載の乱数発生装置と、
前記乱数選択手段により選択された前記出力乱数に基づいて他装置（６０）に対する認証処理を実行する認証手段（５０、５２）と、
を備えることを特徴とする車両制御装置（１０）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数として使用しない特定値と異なる乱数を発生する乱数発生装置およびそれを用いた車両制御装置に関する。
【背景技術】
【０００２】
乱数発生装置が発生して出力する乱数に基づいて、他装置に対して認証処理を行う技術が知られている（例えば、特許文献１参照。）。特許文献１に開示されている乱数発生装置では、第３者による乱数の解析を困難にするために、第１乱数発生部が発生する乱数に対して、第２乱数発生部が発生する乱数を用いて所定の演算を行い、演算により取得した乱数を認証処理等で使用する乱数としている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４９１７４７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
乱数発生装置が乱数を発生する場合、例えば、認証処理等で「初期化中」、「データ異常」等の特定の意味で使用する特定値を、出力乱数から除外したいことがある。特許文献１の乱数発生装置では、第１乱数発生部が発生する乱数に対して、第２乱数発生部が発生する乱数を用いて所定の演算を行って出力乱数を生成するので、出力乱数の値が特定値と等しくなることがある。つまり、特許文献１では、出力乱数から特定値を除外することが考慮されていない。
【０００５】
特定値と異なる乱数を発生するために、特定値と異なる値になるまで繰り返し乱数を発生することも考えられる。しかしながら、この方式では、特定値と異なる乱数になるまでに乱数を何回発生させる必要があるかを予測できないので、特定値と異なる乱数を発生するために必要な処理時間を決定できない。処理時間に制限がある場合には、このような方式を採用することはできない。
【０００６】
本発明は上記課題を解決するためになされたものであり、乱数として使用しない特定値と異なる乱数を所定時間内で発生する乱数発生装置およびそれを用いた車両制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の乱数発生装置および車両制御装置によると、第１発生手段が発生する第１乱数を変化させて第１乱数に代えて出力される代替乱数を代替乱数手段が生成し、第１乱数または代替乱数のうち乱数として使用しない特定値と異なる乱数を、乱数選択手段は出力乱数として選択する。
【０００８】
第１発生手段が第１乱数を発生する処理、ならびに代替乱数手段が第１乱数を変化させて代替乱数を生成する処理は、特定値と異なる値になるまで乱数を繰り返し発生する処理とは異なり、処理時間の上限を決定できる。したがって、乱数として使用しない特定値と異なる乱数を、所定時間内で発生することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１実施形態による乱数発生装置および車両制御装置を示すブロック図。
【図２】第１実施形態の乱数発生処理を示すフローチャート。
【図３】第２実施形態のビット演算値処理を示すフローチャート。
【図４】第２実施形態の乱数発生処理を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態を図に基づいて説明する。
［第１実施形態］
図１に示す認証システム２は、車両制御装置１０とダイアグテスタまたはイモビライザ装置等の認証対象装置６０とにより構成されている。車両制御装置１０と認証対象装置６０とは、通信回線で接続されている。
【００１１】
車両制御装置１０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、フラッシュメモリ等を備えるマイクロコンピュータにより主に構成されている。車両制御装置１０のマイクロコンピュータは、ＣＰＵがＲＯＭまたはフラッシュメモリに記憶されている制御プログラムを実行することにより、車両制御部２０と乱数発生部３０と暗号処理部５０と認証処理部５２として機能する。
【００１２】
車両制御装置１０は、認証対象装置６０、あるいは認証対象装置６０を介して車両制御装置１０と通信しようとする装置が正当な装置であるか否かを確認する認証処理を乱数に基づいて実行する。
【００１３】
認証処理の結果、認証対象装置６０、あるいは認証対象装置６０を介して車両制御装置１０と通信しようとする装置が正当な装置の場合、車両制御部２０は、認証対象装置６０との通信により、車両制御の診断処理、エンジン始動処理等を実行する。認証処理の結果、認証対象装置６０、あるいは認証対象装置６０を介して車両制御装置１０と通信しようとする装置が不正な装置の場合、車両制御部２０は、認証対象装置６０との通信を遮断し、認証対象装置６０から要求される処理を実行しないなどの適切な処理を実行する。
【００１４】
乱数発生部３０は、第１乱数発生部３２と代替乱数生成部４０としての機能を備えている。第１乱数発生部３２は、例えば乱数関数を用いることにより、第１乱数の種から第１乱数を発生する。
【００１５】
代替乱数生成部４０は、乱数選択部４２と第２乱数発生部４４と乱数演算部４６としての機能を備えている。乱数選択部４２は、第１乱数発生部３２が発生する第１乱数が乱数として使用しない予め設定された特定値と異なる場合には出力乱数として第１乱数を選択し、第１乱数が特定値と等しい場合には、乱数演算部４６が生成する代替乱数を出力乱数として選択する。
【００１６】
乱数として使用しない予め設定された特定値とは、車両制御装置１０と認証対象装置６０との間の通信で、「初期化中」、「データ異常」等の特定の意味を示す通信データとして使用されるものである。
【００１７】
第２乱数発生部４４は、第１乱数発生部３２と同様に、乱数関数を用いることにより第２乱数の種から第２乱数を発生する。乱数演算部４６は、第２乱数発生部４４が発生する第２乱数を用いて、第１乱数発生部３２が発生する第１乱数に所定の演算を行って第１乱数を変化させ、第１乱数に代えて出力する代替乱数を生成する。
【００１８】
乱数発生部３０は、第１乱数または代替乱数のうち、乱数選択部４２により選択された乱数を出力乱数として出力する。車両制御装置１０は、乱数発生部３０が出力する出力乱数を認証対象装置６０に送信する。
【００１９】
暗号処理部５０は、乱数発生部３０が出力する乱数に対して所定の暗号処理を実行する。認証対象装置６０の暗号処理部６２は、車両制御装置１０から送信された乱数に対して車両制御装置１０の暗号処理部５０と同じ暗号処理を実行し、実行結果を車両制御装置１０に送信する。
【００２０】
認証処理部５２は、車両制御装置１０の暗号処理部５０の実行結果と認証対象装置６０の暗号処理部６２の実行結果とを比較し、一致している場合は認証対象装置６０が正当な装置であると判断し、不一致の場合は認証対象装置６０が不正な装置であると判断する。
【００２１】
（乱数発生処理）
次に、乱数発生部３０による乱数発生処理を図２に基づいて説明する。図２の乱数発生処理は、例えば認証対象装置６０から認証要求があったときに実行される。図２のフローチャートにおいて、「Ｓ」はステップを表わしている。
【００２２】
第１乱数発生部３２は、乱数関数等を用いることにより、第１乱数を発生するための第１乱数の種を取得し（Ｓ４００）、第１乱数の種から第１乱数を発生する（Ｓ４０２）。発生した第１乱数が特定値である「０ｘ００」と異なる場合（Ｓ４０４：Ｎｏ）、乱数選択部４２は第１乱数を出力乱数として選択する（Ｓ４０６）。
【００２３】
第１乱数が「０ｘ００」と等しい場合（Ｓ４０４：Ｙｅｓ）、乱数選択部４２は、以下に説明するＳ４０８〜Ｓ４１４で生成される代替乱数を出力乱数として選択する。
Ｓ４０８において第２乱数発生部４４は、乱数関数等を用いることにより、第２乱数を発生するための第２乱数の種を取得し、第２乱数の種から第２乱数を発生する（Ｓ４１０）。乱数演算部４６は、第２乱数発生部４４が発生した第２乱数に基づいて、第１乱数に演算を施して変化させるためのビット演算値を算出し（Ｓ４１２）、ビット反転演算として、算出したビット演算値と２進表現された第１乱数との排他的論理和（ＸＯＲ）を演算する（Ｓ４１４）。
【００２４】
Ｓ４１２で算出されるビット演算値は、乱数が８ビットの場合、８ビットのうちずれかのビットの値が１で、それ以外のビットが０となる値である。ビット演算値は、例えば第２乱数を８で割った余りが示すビット位置を１、それ以外のビットを０にすることにより算出できる。例えば、０ｘ８０等がビット演算値として算出される。
【００２５】
このビット演算値と第１乱数との排他的論理和を演算することにより、特定値と等しい第１乱数のいずれかのビットの値が反転し、特定値と異なる値となる。
乱数選択部４２は、ビット演算値と第１乱数との排他的論理和（ＸＯＲ）の演算結果である代替得乱数を出力乱数として選択する（Ｓ４１４）。乱数発生部３０は、Ｓ４０６またはＳ４１４において乱数選択部４２が出力乱数として選択した乱数を出力する。
【００２６】
［第２実施形態］
第１実施形態の乱数発生処理では、第１乱数が特定値と等しい場合に、同じ乱数発生処理において第２乱数を発生させて代替乱数を生成した。これに対し、第２実施形態では、第２乱数を発生してビット演算値を算出するビット演算値処理は、第１乱数が特定値と等しい場合に第１乱数とビット演算値との排他的論理和を演算する乱数発生処理よりも前の異なるタイミングで実行される。
【００２７】
また、第２実施形態では、乱数として使用しない特定値として、「０ｘ００」および「０ｘＦＦ」の複数の値が設定されている。
（ビット演算値処理）
図３のＳ４２０において、第２乱数発生部４４は、第２乱数を発生するための第２乱数の種を取得し、第２乱数の種から第２乱数を発生する（Ｓ４２２）。乱数演算部４６は、第２乱数発生部４４が発生した第２乱数に基づいて、第１乱数に演算を施して変化させるためのビット演算値を算出する（Ｓ４２４）。
【００２８】
（乱数発生処理）
図４のＳ４３０において第１乱数発生部３２は、第１乱数を発生するための第１乱数の種を取得し、第１乱数の種から第１乱数を発生する（Ｓ４３２）。Ｓ４３４において乱数選択部４２は、第１乱数発生部３２が発生した第１乱数が、特定値である「０ｘ００」または「０ｘＦＦ」と等しいか否かを判定する。
【００２９】
第１乱数が「０ｘ００」および「０ｘＦＦ」と異なる場合（Ｓ４３４：Ｎｏ）、乱数選択部４２は第１乱数を出力乱数として選択する（Ｓ４３６）。
第１乱数が「０ｘ００」または「０ｘＦＦ」と等しい場合（Ｓ４３４：Ｙｅｓ）、Ｓ４３８において、乱数演算部４４は、図３のビット演算値処理で算出されているビット演算値と第１乱数との排他的論理和（ＸＯＲ）を演算し、乱数選択部４２は、演算結果である代替乱数を出力乱数として選択する。
【００３０】
上記第１実施形態および第２実施形態では、第１乱数発生部３２が発生する第１乱数が特定値と異なる場合には、第１乱数発生部３２が発生する第１乱数を出力乱数として選択し、第１乱数が特定値と等しい場合には、第２乱数発生部４４が発生する第２乱数に基づいてビット演算値を算出し、第１乱数とビット演算値とビット演算値との排他的論理和を演算した演算結果である代替乱数を出力乱数として選択した。
【００３１】
これにより、最大でも、乱数を２回発生する所定の処理時間内で特定値と異なる出力乱数を発生できる。
第１実施形態では、第１乱数発生部３２が発生する第１乱数が特定値と異なる場合には、第２乱数発生部４４に第２乱数を発生させずに第１乱数を出力乱数として選択するので、特定値と異なる出力乱数を発生するために要する時間を短縮できる。
【００３２】
第２実施形態では、第２乱数を発生してビット演算値を算出する処理を出力乱数を発生する乱数発生処理とは異なるタイミングで実行するので、第１乱数発生部３２が発生する第１乱数が特定値と異なるか否かに関わらず、図４の乱数発生処理において第２乱数を発生する時間を省略できる。これにより、乱数発生処理の処理時間を短縮できる。
【００３３】
例えば、認証対象装置６０がイモビライザ装置の場合、イグニッションキーの認証がエンジンの始動時に１回実行される。このとき、第２実施形態のようにビット演算値処理を乱数発生処理よりも前の異なるタイミングで実行して乱数発生処理の処理時間を短縮することにより、エンジン始動時に実行される他の処理を妨げることを極力低減できる。
【００３４】
［他の実施形態］
上記実施形態では、認証対象装置６０としてイモビライザ装置、ダイアグテスタを例にしたが、これ以外にも車両制御装置との通信を認証する対象装置として、携帯電話等を使用してもよい。
【００３５】
また、上記実施形態では、他装置に対する車両制御装置１０の認証処理のために乱数発生装置としての乱数発生部３０を使用したが、乱数として使用しない特定値と異なる乱数を発生するのであれば、どのような分野に本発明の乱数発生装置を使用してもよい。
【００３６】
そして、乱数発生装置は、上記実施形態のように認証対象装置から認証要求があったときでなく、周期的に繰り返し乱数を発生してもよい。この場合、第２実施形態では各周期で図４の乱数発生処理がそれぞれ実行されるよりも前の異なるタイミングで、ビット演算値処理が実行される。
【００３７】
上記実施形態では、第１乱数が特定値と等しい場合に、第１乱数の１ビットを反転するビット演算を実行することにより第１乱数を変化させ、第１乱数と異なる代替乱数を生成した。これに対し、第１乱数の１ビットだけを反転するのではなく、複数ビットの値を反転させるビット演算を実行してもよい。
【００３８】
また、第１乱数が特定値と等しい場合、第１乱数に対してビット演算以外の他の演算、例えば加減算を実行することにより代替乱数を算出してもよい。
また、上記実施形態では、第１乱数発生部３２が発生する第１乱数が特定値と等しい場合に第２乱数発生部４４が第２乱数を発生し、第２乱数に基づいて第１乱数を変化させて代替乱数を生成した。
【００３９】
これに対し、第１乱数発生部３２が発生する第１乱数が特定値と等しいか否かに関わらず、第２乱数発生部４４が発生する第２乱数に基づいて第１乱数を変化させて代替乱数を生成し、第１乱数と代替乱数とのうち、特定値と異なる乱数を出力乱数として選択してもよい。
【００４０】
このように、本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の実施形態に適用可能である。
【符号の説明】
【００４１】
２：認証システム、１０：車両制御装置、３０：乱数発生部（乱数発生装置）、３２：第１乱数発生部（第１発生手段）、４０：代替乱数生成部（代替乱数手段）、４２：乱数選択部（乱数選択手段）、４４：第２乱数発生部（第２発生手段）、４６：乱数演算部（代替乱数手段）、５０：暗号処理部（認証手段）、５２：認証処理部（認証手段）、６０：認証対象装置（他装置）
【図１】
2014142699.tif 000003
【図２】
2014142699.tif 000004
【図３】
2014142699.tif 000005
【図４】
2014142699.tif 000006