(57)【要約】【課題】  電子装置毎に異なる乱数を確実に生成できるようにする。【解決手段】  車両のエンジンを制御するエンジンＥＣＵにおいて、マイコンは、電源の投入に伴い動作を開始してから、当該マイコン内のレジスタに初期値を書き込む初期化処理（Ｓ３３０）を実施する前に、そのレジスタから不定な値を読み出し（Ｓ３１０）、その読み出した値を用いて、自車両のスマートコントローラとの照合用データである乱数を算出し（Ｓ３２０）、その乱数を自ＥＣＵのＥＥＰＲＯＭに格納すると共に（Ｓ３６０）、上記スマートコントローラにも記憶させる（Ｓ３５０）。このため、車両状態に関係なく、他の車両のエンジンＥＣＵ及びスマートコントローラとは異なる乱数を確実に生成して記憶することができる。【選択図】  図３
2006031617.tif 000002
【特許請求の範囲】
【請求項１】
乱数を生成するための乱数生成方法であって、
揮発性の半導体記憶手段に電源が投入されてから、その半導体記憶手段に初期値を書き込む初期化処理が実施される前に、その半導体記憶手段から値を読み出し、その読み出した値を用いて乱数を生成すること、
を特徴とする乱数生成方法。
【請求項２】
マイコンを備えた電子装置において、
前記マイコンは、電源の投入に伴い動作を開始してから、当該マイコン内のレジスタに初期値を書き込む初期化処理を実施する前に、そのレジスタから値を読み出し、その読み出した値を用いて乱数を生成すること、
を特徴とする電子装置。
【請求項３】
請求項２に記載の電子装置において、
前記マイコンは、複数のレジスタから値を読み出し、その読み出した各値を用いて乱数を生成すること、
を特徴とする電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数を生成する技術に関するものである。
【背景技術】
【０００２】
近年、自動車においては、エンジンを制御する電子制御装置（エンジン制御装置）が、盗難防止用装置と通信して、その盗難防止用装置が正規使用者の乗車を認識していることと、その盗難防止用装置が持っている照合用データと、自装置が持っている照合用データとが一致していることとを確認できたならば、燃料噴射及び点火を実施可能な状態となる、といった車両盗難防止システムが実用化されている。そして、上記照合用データは、車両毎に異なっている必要があるため、乱数を生成させるための演算で算出される。
【０００３】
ここで、従来より、エンジン制御装置においては、そのエンジン制御装置に入力されるセンサデータを用いて乱数を生成する方法が知られている（例えば、特許文献１参照）。
【特許文献１】特表２００１−５０７６４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、センサデータから乱数を生成する方法では、ある特定の車両状態で乱数を生成してその値をデータ書込可能な不揮発性メモリ等に保存する場合、車両毎（詳しくは、その車両に設けられて乱数を生成する電子装置毎）に乱数の値を変化させたくても、生成される乱数が同じような値になってしまう。車両状態が同じであれば、各車両でセンサデータが同じような値になってしまい、その結果、各車両の電子装置で算出される乱数も同じような値になってしまうからである。
【０００５】
このため、例えば、車両組立工場の組立ライン上で、各車両のエンジン制御装置が、自車両の盗難防止用装置と共有する照合用データを算出して、その算出した照合用データを自車両の盗難防止用装置にも記憶させる、といった照合用データの登録手法を採った場合、組立ライン上では、センサの入力データが各車両で同じような値となるため、別の車両と同じ照合用データが記憶されてしてしまう可能性がある。そして、照合用データの同じ車両が複数存在することになってしまうと、盗難防止用装置を別の車両のものに取り替えることでエンジンを不正に作動させる、といったことが可能になる虞があり、十分なセキュリティ性が得られなくなってしまう。
【０００６】
本発明は、こうした問題に鑑みなされたものであり、電子装置毎に異なる乱数を確実に生成できるようにすることを目的としている。
【課題を解決するための手段】
【０００７】
上記目的を達成するためになされた請求項１の乱数生成方法は、揮発性の半導体記憶手段に電源が投入されてから、その半導体記憶手段に初期値を書き込む初期化処理が実施される前に、その半導体記憶手段から値（詳しくは、その半導体記憶手段に記憶されている値）を読み出し、その読み出した値を用いて乱数を生成することを特徴としている。尚、揮発性の半導体記憶手段としては、マイコン（マイクロコンピュータ）内のレジスタや、マイコン内部又は外部のＲＡＭなどを用いることができる。
【０００８】
つまり、一般に、電子装置には揮発性の半導体記憶手段が備えられ、電子装置に電源が投入されると、その半導体記憶手段にも電源が投入（供給）される。そして、その半導体記憶手段の記憶値は、電源が投入された時点では不定であり、電源の投入毎に異なる値となるため、電子装置では、電源が投入されて動作を開始すると、まず、その半導体記憶手段に予め定められた初期値を書き込む初期化処理を実施し、その後、その半導体記憶手段を演算に用いるようになっている。
【０００９】
そこで、本発明では、初期化処理によって揮発性の半導体記憶手段に初期値が書き込まれる前は、その半導体記憶手段の値が不定であり、電子装置毎に異なった値になるであろうという点に着目して、初期化処理が実施される前に、その半導体記憶手段から不定な値を読み出し、その読み出した値を用いて乱数を生成するようにしている。
【００１０】
このような本発明の乱数生成方法によれば、センサデータから乱数を生成する場合の前述した問題がなく、電子装置毎に異なる乱数を確実に生成することができるようになる。
次に、請求項２の電子装置では、マイコンを備えており、そのマイコンは、電源の投入に伴い動作を開始してから、当該マイコン内のレジスタに初期値を書き込む初期化処理を実施する前に、そのレジスタから値を読み出し、その読み出した値を用いて乱数を生成する。
【００１１】
つまり、マイコンに電源が投入されると、そのマイコン内のレジスタにも電源が投入（供給）されるが、その電源投入時のレジスタ値は不定である。そこで、マイコンは、請求項１の方法によって乱数を生成しており、詳しくは、電源の投入により動作を開始してからレジスタに初期値を書き込む初期化処理を実施する前に、そのレジスタから不定な値を読み出し、その読み出した値を用いて乱数を生成するようにしている。
【００１２】
このため、請求項２の電子装置によれば、センサデータから乱数を生成する場合の前述した問題がなく、電子装置毎に異なる乱数を確実に生成することができるようになる。
次に、請求項３の電子装置では、請求項２の電子装置において、マイコンは、上記初期化処理を実施する前に、複数のレジスタから値を読み出し、その読み出した各値を用いて乱数を生成する。
【００１３】
この電子装置によれば、不定な複数のレジスタ値から乱数を生成することとなるため、発散した乱数（つまり、電子装置毎に異なる乱数）を一層確実に生成することができる。また、複数のレジスタ値を加工することにより、様々なサイズや型の乱数を発生させることができるという利点もある。
【発明を実施するための最良の形態】
【００１４】
以下に、本発明が適用された実施形態のエンジン制御装置（以下、エンジンＥＣＵという）について説明する。尚、本実施形態のエンジンＥＣＵは、車両に搭載されて、その車両のエンジンを制御するものである。
【００１５】
図１に示すように、本実施形態のエンジンＥＣＵ１１は、エンジンを制御するための各種処理を実行するマイコン１３と、データ書換可能な不揮発性メモリ（本実施形態では、ＥＥＰＲＯＭ）１５と、電源回路１７とを備えている。
【００１６】
そして、マイコン１３には、ＣＰＵ２１、ＲＯＭ２３、電源バックアップされない通常のＲＡＭ２５、及び電源バックアップされるバックアップＲＡＭ２７や、複数のレジスタ１〜ｎからなるレジスタ群２９などが内蔵されている。
【００１７】
また、電源回路１７は、車両のイグニッションスイッチ３１がオンされると供給される車載バッテリ３３の電圧（バッテリ電圧）ＶＢから、マイコン１３を動作させるための一定の電源電圧Ｖｄ（例えば５Ｖの電圧）を生成して、その電源電圧Ｖｄをマイコン１３やＥＥＰＲＯＭ１５に供給すると共に、車載バッテリ３３から常時供給されるバッテリ電圧ＶＢから上記バックアップＲＡＭ２７がデータを保持するための一定の電源電圧Ｖｓ（例えば３Ｖの電圧）を生成して、マイコン１３に供給する。そして、この電源電圧Ｖｓは、バックアップＲＡＭ２７に供給される。
【００１８】
また更に、ＥＥＰＲＯＭ１５には、後述する乱数Ａを始め、バッテリ上がりやバッテリ外れが起こっても継続して保存すべきデータが格納される。
一方、エンジンＥＣＵ１１は、同じ車両に搭載されたスマートコントローラ３５と車両内の通信線３７を介して接続されている。
【００１９】
スマートコントローラ３５は、車載送信機（図示省略）から車外の検知エリアに送信要求信号を送信させると共に、車両の使用者に携帯される電子キーとしての携帯機３９がその送信要求信号を受信することで送信する返送信号を車載受信機（図示省略）によって受信し、その受信した返送信号に含まれているＩＤコードと予め記憶されている当該車両に固有のＩＤコードとが一致していると判定すると、その受信された返送信号が当該車両に専用の携帯機（以下、正規の携帯機という）から送信された返送信号であると判断して、その後、車両のドア外側に設けられているアンロック用スイッチが押されたことを検知するとドアをアンロック状態にする、といったスマートドアロック制御を行う。
【００２０】
更に、スマートコントローラ３５は、車室内用送信機（図示省略）から車室内における運転席付近の検知エリアにも送信要求信号を送信させると共に、その送信要求信号を受信した携帯機３９が送信する返送信号を車室内用受信機（図示省略）によって受信し、その受信した返送信号に含まれているＩＤコードと予め記憶されている当該車両に固有のＩＤコードとが一致していると判定すると、正規の携帯機３９が車室内に存在しており、当該車両の正規の使用者が運転席に居ると認識する、といった車室内照合も行う。
【００２１】
また、このスマートコントローラ３５にも、当該コントローラ３５の上記動作を司るマイコン４１と、データ書換可能な不揮発性メモリ（本実施形態では、ＥＥＰＲＯＭ）４３とが備えられており、そのＥＥＰＲＯＭ４３には、エンジンＥＣＵ１１のＥＥＰＲＯＭ１５に格納される乱数Ａと同じ乱数Ａ’が格納される。
【００２２】
そして、エンジンＥＣＵ１１は、イグニッションスイッチ３１がオンされた際に、スマートコントローラ３５と通信線３７を介して通信することにより、そのスマートコントローラ３５が上記車室内照合でＯＫと判定していること（つまり、正規の携帯機３９が車室内に存在していると認識していること）と、そのスマートコントローラ３５のＥＥＰＲＯＭ４３に格納されている照合用データとしての乱数Ａ’と当該エンジンＥＣＵ１１のＥＥＰＲＯＭ１５に格納されている照合用データとしての乱数Ａとが一致していることとを確認し、その確認ができたならばエンジンに対する燃料噴射及び点火を実施可能なエンジン制御許可状態となる、といった車両盗難防止用の制御を行う。
【００２３】
そこで次に、このような車両盗難防止用の制御を行うために、エンジンＥＣＵ１１のマイコン１３とスマートコントローラ３５のマイコン４１とのそれぞれで実行される処理について、図２に基づき説明する。尚、図２の処理は、エンジンＥＣＵ１１のＥＥＰＲＯＭ１５とスマートコントローラ３５のＥＥＰＲＯＭ４３とに、乱数Ａ，Ａ’が既に格納されている通常の場合に実行される。そして、ここでは、それらＥＥＰＲＯＭ１５，４３に乱数Ａ，Ａ’が既に格納されているものとする。
【００２４】
まず、エンジンＥＣＵ１１では、イグニッションスイッチ３１がオンされて電源回路１７から電源電圧Ｖｄが出力されると、マイコン１３が動作を開始する。
そして、図２（Ａ）に示すように、エンジンＥＣＵ１１のマイコン１３が動作を開始すると、まずＳ１１０にて、ＲＡＭ２３の所定領域とレジスタ１〜ｎ（レジスタ群２９）に予め定められた初期値を書き込む初期化処理を実行し、続くＳ１２０にて、ＥＥＰＲＯＭ１５から乱数Ａを読み出す。
【００２５】
次に、Ｓ１３０にて、バックアップＲＡＭ２７からキーコードＢを読み出し、そのキーコードＢと上記Ｓ１２０でＥＥＰＲＯＭ１５から読み出した乱数Ａとを所定の演算式に代入して、データＣを作成する。
【００２６】
ここで、本実施形態において、マイコン１３は、後述するＳ１９０における通常制御の処理中で、バッテリ電圧ＶＢの値を読み取ると共に、その読み取った値を用いてキーコードＢを算出し、その算出したキーコードＢをバックアップＲＡＭ２７に格納するようにしている。そして、Ｓ１３０では、そのキーコードＢ（即ち、イグニッションスイッチ３１が前回オンされてからオフされるまでの動作中に算出しておいたキーコードＢ）をバックアップＲＡＭ２７から読み出すのである。このため、キーコードＢは、Ｓ１３０の処理が実行される毎に違う値となる。
【００２７】
次に、Ｓ１４０にて、上記Ｓ１３０でバックアップＲＡＭ２７から読み出した今回のキーコードＢを、スマートコントローラ３５に送信する。
そして、そのキーコードＢがスマートコントローラ３５に受信されると、スマートコントローラ３５では、マイコン４１が図２（Ｂ）の処理を開始する。
【００２８】
即ち、スマートコントローラ３５のマイコン４１は、まずＳ２１０にて、エンジンＥＣＵ１１から受信したキーコードＢを読み込む。
そして、続くＳ２２０にて、携帯機３９との上記車室内照合でＯＫと判定済みか否かを判断し、ＯＫと判定済みでなければ（Ｓ２２０：ＮＯ）、そのまま当該図２（Ｂ）の処理を終了するが、ＯＫと判定済みであれば（つまり、正規の携帯機３９が車室内に存在していると認識しているならば）、Ｓ２３０に進む。
【００２９】
Ｓ２３０では、ＥＥＰＲＯＭ４３から乱数Ａ’を読み出す。そして、次のＳ２４０にて、上記Ｓ２１０で読み込んだエンジンＥＣＵ１１からのキーコードＢと、上記Ｓ２３０でＥＥＰＲＯＭ４３から読み出した乱数Ａ’とを、エンジンＥＣＵ１１側の上記Ｓ１３０と同じ演算式に代入して、データＣ’を作成する。次に、Ｓ２５０にて、上記Ｓ２４０で作成したデータＣ’をエンジンＥＣＵ１１へ送信し、その後、当該図２（Ｂ）の処理を終了する。
【００３０】
一方、図２（Ａ）に示すように、エンジンＥＣＵ１１のマイコン１３は、上記Ｓ１４０でキーコードＢを送信した後、次のＳ１５０にて、規定時間以内にスマートコントローラ３５からの上記データＣ’を受信したか否かを判定し、規定時間以内にデータＣ’を受信したと判定したならば、Ｓ１６０に進んで、スマートコントローラ３５から受信したデータＣ’を読み込む。
【００３１】
そして、マイコン１３は、続くＳ１７０にて、上記Ｓ１３０で作成したデータＣと、上記Ｓ１６０で読み込んだスマートコントローラ３５からのデータＣ’とが一致しているか否かを判定し、データＣとデータＣ’とが一致していれば、スマートコントローラ３５が上記車室内照合でＯＫと判定しており、且つ、そのスマートコントローラ３５のＥＥＰＲＯＭ４３に格納されている乱数Ａ’と当該エンジンＥＣＵ１１のＥＥＰＲＯＭ１５に格納されている乱数Ａとが一致しているということであることから、Ｓ１８０に進んで、エンジンに対する燃料噴射及び点火を許可する内部設定を行う。そして、その後、Ｓ１９０に進んで、エンジンを制御するための通常制御の処理を行う。
【００３２】
また、上記Ｓ１５０にて、規定時間以内にデータＣ’を受信しなかったと判定した場合（Ｓ１５０：ＮＯ）、或いは、上記Ｓ１７０にて、データＣとデータＣ’とが一致していないと判定した場合（Ｓ１７０：ＮＯ）には、スマートコントローラ３５が上記車室内照合でＯＫと判定していないか、或いは、スマートコントローラ３５のＥＥＰＲＯＭ４３に格納されている乱数Ａ’と当該エンジンＥＣＵ１１のＥＥＰＲＯＭ１５に格納されている乱数Ａとが一致しておらず、通信相手のスマートコントローラ３５が自車両用の正規品ではないということであることから、Ｓ１８５に移行して、エンジンに対する燃料噴射及び点火を禁止する内部設定を行い、その後、Ｓ１９０に進む。このため、Ｓ１８５の処理が行われた場合には、Ｓ１９０における通常制御の処理で燃料噴射及び点火が実施されず、エンジンの作動が禁止されることとなる。
【００３３】
ところで、本実施形態では、エンジンＥＣＵ１１のＥＥＰＲＯＭ１５に乱数Ａが未だ格納されていない状態で、通信線３７に外部装置を接続し、イグニッションスイッチ３１をオンしてエンジンＥＣＵ１１を作動させると共に、その外部装置からエンジンＥＣＵ１１へ乱数登録要求を送信することにより、エンジンＥＣＵ１１のＥＥＰＲＯＭ１５とスマートコントローラ３５のＥＥＰＲＯＭ４３とに同じ乱数を格納させることができるようになっている。
【００３４】
そこで次に、このような乱数登録のためにエンジンＥＣＵ１１のマイコン１３が実行する処理について、図３を用いて説明する。
図３に示すように、エンジンＥＣＵ１１のマイコン１３は、ＥＥＰＲＯＭ１５に乱数Ａが未だ格納されていない場合に、イグニッションスイッチ３１のオンに伴い電源回路１７からの電源電圧Ｖｄを受けて動作を開始すると、まずＳ３１０にて、レジスタ１〜ｎの何れか（本実施形態では、例えばレジスタ１とレジスタ２であるとする）から値を読み出す。尚、この時点でレジスタ１〜ｎの値は不定である。
【００３５】
次に、Ｓ３２０にて、上記Ｓ３１０で読み出したレジスタ１，２の各値を用いて乱数Ａを生成する。例えば、読み出したレジスタ１，２の各値を、予め決められた乱数算出用の計算式に代入することで、乱数Ａを算出する。
【００３６】
そして、次のＳ３３０にて、図２（Ａ）のＳ１１０と同じ初期化処理（つまり、ＲＡＭ２３の所定領域とレジスタ１〜ｎに初期値を書き込む処理）を実行し、続くＳ３４０にて、上記初期化処理を実行してから一定時間以内に前述の乱数登録要求を受信したか否かを判定する。
【００３７】
そして、一定時間以内に外部装置からの乱数登録要求を受信しなかった場合（Ｓ３４０：ＮＯ）には、そのまま通常制御の処理へ移行するが、一定時間以内に乱数登録要求を受信した場合（Ｓ３４０：ＹＥＳ）には、Ｓ３５０に進んで、上記Ｓ３２０で算出した乱数Ａをスマートコントローラ３５へ送信する。
【００３８】
すると、スマートコントローラ３５では、上記Ｓ３５０で送信された乱数Ａを受信して、ＥＥＰＲＯＭ４３に前述の乱数Ａ’として格納し、その格納が完了すると、エンジンＥＣＵ１１へ登録完了通知を送信することとなる。
【００３９】
そこで、エンジンＥＣＵ１１のマイコン１３は、次のＳ３５５にて、スマートコントローラ３５からの上記登録完了通知を受信し、その登録完了通知を受信できたならば、次のＳ３６０に進んで、上記Ｓ３２０で算出した乱数ＡをＥＥＰＲＯＭ１５に格納する。そして、その後、通常制御の処理へ移行する。
【００４０】
尚、本実施形態において、上記Ｓ３４０から通常制御の処理へ直接移行した場合、或いは、上記Ｓ３６０から通常制御の処理へ移行した場合には、エンジンに対する燃料噴射及び点火が許可されないため、エンジンが作動することはない。また、上記Ｓ３６０から通常制御の処理へ移行した場合には、エンジンＥＣＵ１１のＥＥＰＲＯＭ１５とスマートコントローラ３５のＥＥＰＲＯＭ４３とに同じ乱数が格納されることとなるため、イグニッションスイッチ３１を一旦オフしてから再度オンし、前述した図２（Ａ）のＳ１８０で燃料噴射及び点火が許可されるようにすれば、エンジンを作動させることができる。
【００４１】
以上のような本実施形態のエンジンＥＣＵ１１では、マイコン１３が、電源回路１７による電源投入に伴い動作を開始してから、当該マイコン１３内のレジスタ１〜ｎに初期値を書き込む初期化処理（Ｓ３３０）を実施する前に、そのレジスタ１〜ｎのうちのレジスタ１，２から値を読み出して（Ｓ３１０）、その読み出した値から乱数Ａを算出し（Ｓ３２０）、その乱数Ａを自ＥＣＵ１１のＥＥＰＲＯＭ１５に格納すると共に（Ｓ３６０）、スマートコントローラ３５のＥＥＰＲＯＭ４３にも格納させるようにしている（Ｓ３５０）。
【００４２】
つまり、マイコン１３に電源が投入されると、そのマイコン１３内のレジスタ１〜ｎにも電源が投入されるが、その電源投入時のレジスタ値は不定である。そこで、マイコン１３は、電源の投入により動作を開始してから初期化処理を実施する前に、レジスタ１，２から不定な値を読み出し、その読み出した不定な値を用いて乱数Ａを算出するようにしている。
【００４３】
このため、本実施形態のエンジンＥＣＵ１１によれば、車両状態に関係なく、他の車両のエンジンＥＣＵ１１とは異なる乱数を確実に生成して、その乱数を自ＥＣＵ１１のＥＥＰＲＯＭ１５と自車両におけるスマートコントローラ３５のＥＥＰＲＯＭ４３とに格納させることができる。そして、エンジンＥＣＵ１１とスマートコントローラ３５との照合用データとして乱数が同じ車両が複数存在してしまうことを防止することができるため、スマートコントローラ３５と携帯機３９を別の車両のものにセットで交換してエンジンを不正に作動させる、といった窃盗行為を確実に防止することができる。
【００４４】
また、本実施形態のエンジンＥＣＵ１１では、マイコン１３が、複数のレジスタ１，２から読み出した各値を用いて乱数Ａを算出するようにしているため、車両毎（ＥＣＵ１１毎）に異なる発散した乱数を一層確実に生成することができる。
【００４５】
以上、本発明の一実施形態について説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
【００４６】
例えば、上記実施形態では、複数のレジスタ値から乱数を算出したが、乱数を算出するのに用いるレジスタ値の数は１つでも良い。また、レジスタのビット長が大きい場合には、１つのレジスタ値の一部のビット列を用いて乱数を算出するようにしても良い。
【００４７】
一方、上記実施形態では、レジスタから読み出した不定な値を、乱数算出用の計算式に代入して乱数Ａを算出したが、レジスタから読み出した不定な値を、そのまま乱数Ａとして扱うようにしても良い。例えば、図３のＳ３２０では、レジスタ１，２から読み出した各値を直列につなげたデータを、乱数Ａとして算出するようにしても良い。
【００４８】
また、上記実施形態では、初期化処理を実施する前の不定なレジスタ値から乱数を生成したが、初期化処理を実行する前にＲＡＭ２５から不定な値を読み出して、その値から乱数を生成するようにしても良い。
【００４９】
また、本発明は、エンジンＥＣＵのような車載電子装置に限らず、他の様々な電子装置にも同様に適用することができる。
【図面の簡単な説明】
【００５０】
【図１】実施形態のエンジンＥＣＵをスマートコントローラと共に表す構成図である。
【図２】車両盗難防止のために、エンジンＥＣＵのマイコンとスマートコントローラのマイコンとのそれぞれで実行される処理を表すフローチャートである。
【図３】エンジンＥＣＵのマイコンが乱数を算出するために実行する処理を表すフローチャートである。
【符号の説明】
【００５１】
１〜ｎ…レジスタ、１１…エンジンＥＣＵ、１３，４１…マイコン、１５，４３…ＥＥＰＲＯＭ、１７…電源回路、２１…ＣＰＵ、２３…ＲＯＭ、２５…ＲＡＭ、２７…バックアップＲＡＭ、２９…レジスタ群、３１…イグニッションスイッチ、３３…車載バッテリ、３５…スマートコントローラ、３７…通信線、３９…携帯機（電子キー）
【図１】
2006031617.tif 000003
【図２】
2006031617.tif 000004
【図３】
2006031617.tif 000005