(57)【特許請求の範囲】
【請求項１】
プログラムが記憶されたメモリと、
前記メモリに記憶されたプログラムに従って演算制御を行うプロセッサと、
前記プロセッサからの読み出し要求に従って予め定められた認証コードを出力する認証コード生成手段と、
を備えたマイクロコントローラであって、
前記認証コード生成手段は、
それぞれ予め定められた前記認証コードが設定された複数のレジスタと、
設定部に設定された選択信号に基づいて前記複数のレジスタから１つを選択して前記レジスタに設定された前記認証コードを出力するセレクタと、
前記プロセッサからの要求に従って前記セレクタから出力される前記認証コードを出力するバスインタフェースと、
を備えたことを特徴とするマイクロコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラに関するものである。
【背景技術】
【０００２】
図２（ａ），（ｂ）は、従来のマイクロコントローラの説明図で、同図（ａ）はハードウエア構成図、及び同図（ｂ）はソフトウエアによる動作フロー図である。
【０００３】
このマイクロコントローラは、図２（ａ）に示すように、プログラムに従って処理及び制御を行う中央処理ユニット（以下、「ＣＰＵ」という）１と、そのプログラムが格納された読み出し専用メモリ（以下、「ＲＯＭ」という）２を有し、これらのＣＰＵ１とＲＯＭ２がバス３を介して接続されている。バス３には、更に、例えば外部メモリ１０等との間でデータ送受信を行う入出力モジュール４や、その他の機能モジュール５が接続されている。
【０００４】
一方、このマイクロコントローラの動作を規定するソフトウエアは、図２（ｂ）に示すように、マイクロコントローラの機能に応じて全体の処理の流れを制御するメインプログラムと、このメインプログラムから起動されて個々のまとまった処理を行う関数プログラムのような下位プログラムで構成されている。
【０００５】
例えば、メインプログラムのステップＳ１で、ＣＰＵ１は入出力モジュール４を介して外部メモリ１０からデータを読み込む。次に、ステップＳ２で下位プログラムを起動して、そのデータを引き渡す。
【０００６】
これにより、下位プログラムの動作が開始され、ステップＳ１１において、読み込んだデータ（入力データ）の引き渡しが行われ、ステップＳ１２で入力データに従った演算処理が行われる。ステップＳ１２の演算処理が完了すると、ステップＳ１３で演算処理結果のデータ（出力データ）が生成され、メインプログラムに戻る。
【０００７】
そして、メインプログラムのステップＳ３において、ＣＰＵ１は下位プログラムで生成された出力データを受け取り、入出力モジュール４を介して外部メモリ１０へそのデータを書き出す。
【０００８】
【特許文献１】特開平１１−３４５１１７号公報
【特許文献２】特開２００１−２０９５８４号公報
【特許文献３】特開２００３−１５０４５７号公報
【０００９】
上記特許文献１には、通常の処理・制御用の命令の他に実行許可命令を設け、プロセッサに固有のプロセッサＩＤと実行すべきプログラムに固有のソフトウエアＩＤに基づいて認証動作を行い、認証動作が成功裡に終わったときにそのプログラムの実行ができるように構成したプログラムの不正実行防止機能付きプロセッサが記載されている。
【００１０】
特許文献２には、パーソナルコンピュータのハードディスク等の内部記憶媒体に記憶されているデータを、ＣＤ(Compact  Disc)等の外部記憶媒体にコピーするときに、そのパーソナルコンピュータに設定された固有情報に従ってデータを暗号化してコピーし、暗号化された外部記憶媒体を読むときにはその固有情報に従って復号化するように構成した情報暗号化装置が記載されている。これにより、コピーされた外部記憶媒体を他のパーソナルコンピュータで読み取ることが防止できる。
【００１１】
特許文献３には、ソフトウエア等の電子データが格納されたデータ領域と、書き替え可能な識別ＩＤを格納する保護領域を備えた著作権保護機能内蔵媒体を用いて、電子データの不正利用を防止する技術が記載されている。この特許文献３に記載された電子データ利用機器では、外部メモリ装着スロットに装着された著作権保護機能内蔵媒体の保護領域から識別ＩＤを読み出し、その識別ＩＤがこの電子データ利用機器に設定された固体ＩＤと一致しているか、または汎用ＩＤの場合に、電子データを読み出すことが可能になり、読み出し後に著作権保護機能内蔵媒体の保護領域にその固体ＩＤを書き込むようにしている。これにより、一度ある電子データ利用機器で読み出された著作権保護機能内蔵媒体には、最初に読み出しを行った電子データ利用機器の固体ＩＤが書き込まれるので、その後、他の電子データ利用機器で読み取ることができなくなる。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、図２に示した従来のマイクロコントローラの下位プログラムは、例えば関数プログラムのように機能毎にまとめ、他の全く異なる制御を行うメインプログラムの下でも動作するように互換性を有する構成にすることが多い。このため、ＲＯＭ２から下位プログラムが不正にコピーされて、他のマイクロコントローラの下位プログラムとして転用された場合、ＣＰＵの命令コード体系が同一であれば（マイクロコントローラ用のＣＰＵの種類は限定されているので、その可能性は高い）、何の問題もなく動作してしまう。特に、大規模な関数プログラム等の下位プログラムの開発には、多大な開発期間と費用が必要であるので、盗用された場合の被害は甚大である。
【００１３】
一方、特許文献１に記載されたプロセッサは、プログラムの不正使用の防止が図られているものの、プロセッサ自体の開発に多大な費用がかかると共に、今までのＣＰＵを前提として開発されてきたハードウエアやソフトウエア資産が活用できなくなるおそれがあり、現実的な解決手段とは考えられない。また、特許文献２，３に記載された不正使用防止技術は、ソフトウエアの入出力を前提とした外部記憶媒体を有するパーソナルコンピュータを対象としたもので、制御用のマイクロコントローラへの適用は困難である。
【００１４】
本発明は、プログラムの不正利用を簡単な構成で防止することができるマイクロコンピュータを提供することを目的としている。
【課題を解決するための手段】
【００１６】
本発明のマイクロコントローラは、プログラムが記憶されたメモリと、前記メモリに記憶されたプログラムに従って演算制御を行うプロセッサと、前記プロセッサからの読み出し要求に従って予め定められた認証コードを出力する認証コード生成手段と、を備えたマイクロコントローラであって、前記認証コード生成手段は、それぞれ予め定められた前記認証コードが設定された複数のレジスタと、設定部に設定された選択信号に基づいて前記複数のレジスタから１つを選択して前記レジスタに設定された前記認証コードを出力するセレクタと、前記プロセッサからの要求に従って前記セレクタから出力される前記認証コードを出力するバスインタフェースと、を備えたことを特徴としている。
【発明の効果】
【００１７】
本発明のマイクロコントローラによれば、プロセッサからの読み出し要求に従って認証コードを出力する認証コード生成手段を有しているので、読み出した認証コードをチェックすることにより、正規のハードウエアとソフトウエアの組み合わせであるか否かを判定することが可能になり、プログラムの不正利用を簡単な構成で防止することができるという効果がある。
【発明を実施するための最良の形態】
【００１８】
この発明の前記並びにその他の目的と新規な特徴は、次の好ましい実施例の説明を添付図面と照らし合わせて読むと、より完全に明らかになるであろう。但し、図面は、もっぱら解説のためのものであって、この発明の範囲を限定するものではない。
【実施例１】
【００１９】
図１（ａ），（ｂ）は、本発明の実施例１を示すマイクロコントローラの説明図で、同図（ａ）はハードウエア構成図、及び同図（ｂ）はソフトウエアによる動作フロー図である。これらの図１（ａ），（ｂ）において、図２中の要素と共通の要素には共通の符号が付されている。
【００２０】
このマイクロコントローラは、図１（ａ）に示すように、プログラムに従って処理及び制御を行うＣＰＵ１と、そのプログラムが格納されたＲＯＭ２を有し、これらのＣＰＵ１とＲＯＭ２がバス３を介して接続されている。バス３には、更に、例えば外部メモリ１０等との間でデータ送受信を行う入出力モジュール４、認証コード生成モジュール６、及びその他の機能モジュール５が接続されている。
【００２１】
認証コード生成モジュール６は、ＣＰＵ１からバス２を介して読み書きが可能なレジスタで構成されている。即ち、ＣＰＵ１から書き込まれた任意の値を保持し、このＣＰＵ１から読み出し要求があった時に、その保持した値を認証コードとして出力するものである。なお、認証コード生成モジュール６は、それにアクセスする時間をできるだけ小さくするために、高速バス上に配置することが望ましい。
【００２２】
次に、動作を説明する。
このマイクロコントローラの動作を規定するソフトウエアは、図１（ｂ）に示すように、マイクロコントローラの機能に応じて全体の処理の流れを制御するメインプログラムと、このメインプログラムから起動されて個々のまとまった処理を行う関数プログラムのような下位プログラムで構成されている。
【００２３】
メインプログラムのステップＳ１において、ＣＰＵ１は入出力モジュール４を介して外部メモリ１０からデータを読み込む。次に、ステップＳ２で下位プログラムを起動して、そのデータを引き渡す。
【００２４】
これにより、下位プログラムの動作が開始され、ステップＳ２１において、下位プログラムに読み込んだデータ（入力データ）の引き渡しが行われ、ステップＳ２２で入力データに従った演算処理が行われる。ステップＳ２２の演算処理が完了すると、ステップＳ２３で認証コード生成モジュール６に任意の値（認証コード）を書き込む。その後、ステップＳ２４で認証コード生成モジュール６に書き込んだ認証コードを読み出し、ステップＳ２３で書き込んだ値と一致しているか否かを判定する。
【００２５】
ステップＳ２４において認証コードが正常であると判定されると、ステップＳ２５へ進んで演算処理結果のデータ（出力データ）が生成され、メインプログラムに戻る。そして、メインプログラムのステップＳ３において、ＣＰＵ１は下位プログラムで生成された出力データを受け取り、出力モジュール４を介して外部メモリ１０へそのデータを書き出す。
【００２６】
もしも、ステップＳ２４において認証コードが異常であると判定されると、処理の続行が不能となり、プログラムが暴走してしまう。なお、ステップＳ２４において認証コードが異常であると判定されたときに、プログラムの実行を終了させたり、出力データを生成せずにメインプログラムに戻したりするように構成することもできる。
【００２７】
以上のように、この実施例１のマイクロコントローラは、ＣＰＵ１から書き込まれた任意の値を認証コードとして保持し、読み出し要求に応じてこの認証コードを出力する認証コード生成モジュール６を有し、更に、ＲＯＭ２に格納された下位プログラム中に、認証コード生成モジュール６に認証コードを書き込んで読み出し、一致するか否かを判定する処理（ステップＳ２３，Ｓ２４）を組み込んでいる。
【００２８】
これにより、認証コード生成モジュール６を持たない図２（ａ）の構成のようなマイクロコントローラに、図１（ａ）中のＲＯＭ２から図１（ｂ）のソフトウエアを不正に抜き取ってコピーして動作させた場合、ステップＳ２３において書き込み対象の認証コード生成モジュールが存在しないので、ステップＳ２４の判定処理において正常な認証コードを読み出すことができない。このため、プログラムが異常終了し、目的の処理を行うことができなくなる。従って、プログラムの不正利用を簡単な構成で防止することができるという利点がある。
【実施例２】
【００２９】
図３（ａ），（ｂ）は、本発明の実施例２を示すマイクロコントローラの説明図で、同図（ａ）はハードウエア構成図、及び同図（ｂ）はソフトウエアによる動作フロー図である。これらの図３（ａ），（ｂ）において、図１中の要素と共通の要素には共通の符号が付されている。
【００３０】
このマイクロコントローラは、図１（ａ）のマイクロコントローラの認証コード生成モジュール６に代えて認証コードレジスタ７を設けると共に、図１（ｂ）の下位プログラム中のステップＳ２３，Ｓ２４に代えて処理内容が若干異なるステップＳ２３Ａ，Ｓ２４Ａを設けている。
【００３１】
認証コードレジスタ７は、予め所定の値が認証コードとして記憶されたＲＯＭで構成され、ＣＰＵ１からバス３を介して読み出しができるレジスタである。
【００３２】
ステップＳ２３Ａは、認証コードレジスタ７から認証コードを読み出す処理ステップで、ステップＳ２４Ａは、ステップＳ２３Ａで読み出した認証コードが正常か否かを判定する処理ステップである。その他の構成は、図１と同様である。
【００３３】
このマイクロコントローラの動作は、下位プログラムで認証コードの書き込みを行わず、認証コードレジスタ７から認証コードを読み出して判定することが異なる他は、図１のマイクロコントローラの動作と同様である。
【００３４】
以上のように、この実施例２のマイクロコントローラは、予め定められた認証コードが書き込まれた認証コードレジスタ７を有し、更に、ＲＯＭ２に格納された下位プログラム中に、認証コードレジスタ７を読み出して、正常か否かを判定する処理（ステップＳ２３Ａ，Ｓ２４Ａ）を組み込んでいる。
【００３５】
これにより、認証コードレジスタ７を持たない図２（ａ）の構成のようなマイクロコントローラに、図３（ａ）中のＲＯＭ２から図３（ｂ）のソフトウエアを不正に抜き取ってコピーして動作させた場合、ステップＳ２３Ａにおいて正常な認証コードを読み出せないので、ステップＳ２４Ａの判定処理において異常と判定される。このため、プログラムが異常終了し、目的の処理を行うことができなくなる。従って、実施例１と同様の利点がある。
【００３６】
なお、実施例１の認証コード生成モジュール６の場合、そのアドレスが図２（ａ）のマイクロコントローラにおいてたまたま読み書き可能なレジスタに割り当てられていた場合、下位プログラムは正常に動作するが、この実施例２では、認証コードレジスタ７を読み出し専用としているため、この認証コードレジスタ７に対応するアドレスから読み出した値が認証コードに一致する偶然性は極めて小さい。また、認証コードを連続する複数のアドレスに格納しておけば、認証コードが一致する確率は更に小さくなる。
【実施例３】
【００３７】
図４（ａ），（ｂ）は、本発明の実施例３を示す認証コードレジスタの構成図であり、図３中の認証コードレジスタ７に代えて設けられるものである。
【００３８】
図４（ａ）の認証コードレジスタは、それぞれ固有の値が認証コードとして記憶されたＲＯＭ等からなる複数のレジスタＲＧ０〜ＲＧ７、これらのレジスタＲＧ０〜ＲＧ７を選択信号ＳＬ０〜ＳＬ２に従って選択するセレクタＳＥＬ、このセレクタＳＥＬで選択されたレジスタの値をＣＰＵ１からの読み出し要求に従ってバス３へ出力するバスインタフェースＢＩＦ、及び選択信号ＳＬ０〜ＳＬ２を出力する設定部で構成されている。
【００３９】
設定部は、選択信号ＳＬ０〜ＳＬ２が出力されるノードＮ０〜Ｎ２を有し、これらのノードＮ０〜Ｎ２と電源電位ＶＤＤの間が、それぞれヒューズＦＶ０〜ＦＶ２で接続され、ノードＮ０〜Ｎ２と接地電位ＧＮＤの間が、それぞれヒューズＦＧ０〜ＦＧ２で接続されるようになっている。この設定部では、１対のヒューズ（ＦＶ０，ＦＧ０）、（ＦＶ１，ＦＧ１）、（ＦＶ２，ＦＧ２）の内のいずれか一方が、製造段階でレーザビーム等によって切断され、ノードＮ０〜Ｎ２にレベル“Ｈ”またはレベル“Ｌ”の選択信号ＳＬ０〜ＳＬ２が出力されるようになっている。
【００４０】
一方、図４（ｂ）の認証コードレジスタは、例えば１６ビットの認証コードを出力するノードＮ０〜Ｎ１５を有する設定部と、このノードＮ０〜Ｎ１５から出力される認証コードをＣＰＵ１からの読み出し要求に従ってバス３へ出力するバスインタフェースＢＩＦとで構成されている。設定部の構成は、図４（ａ）中の設定部と同様である。
【００４１】
このような図４（ａ），（ｂ）の認証コードレジスタでは、設定部の設定値を変えることにより、異なった認証コードを設定することができる。従って、例えば先に購入したハードウエアのように認証コードレジスタを有するような改良版としての正規のハードウエアを新規購入して、先に購入済みのハードウエアから不正に抜き取った下位プログラムで、新規に購入したハードウエアを動作させた場合、下位プログラム中に設定されている認証コードと一致しないので、正常な動作を行うことができなくなる。つまり、ヒューズ等の内部の作り込みによって顧客毎に認証コードを変えることができるので、同一のハードウエアを購入したとしても、プログラムを購入していない顧客に対する不正入手プログラムでの使用を防止することができる。但し、製造者としては、ハードウエアに設定した認証コード毎に、対応する下位プログラムを用意しておく必要がある。
【００４２】
なお、本発明は、上記実施例に限定されず、種々の変形が可能である。この変形例としては、例えば、次のようなものがある。
（１）  図１（ｂ）と図３（ｂ）の下位プログラムでは、演算処理を行った後で認証コードの判定を行っているが、演算処理の前に認証コードの判定を行うようにしても良い。
（２）  図１（ｂ）と図３（ｂ）では、プログラムをメインプログラムと下位プログラムに分割し、下位プログラムで認証コードの判定を行うようにしているが、メインプログラムで認証コードの判定を行っても良いし、また、プログラムをメインプログラムと下位プログラムに区分する必要もない。
（３）  認証コードのビット数は任意である。
（４）  認証コード生成モジュール６は、与えられた任意の値をそのまま認証コードとして出力しているが、与えられた任意の値に対して所定の演算を行って認証コードを生成するように構成しても良い。
（５）  図４中の設定部は、ヒューズの切断によって選択信号や認証コードを設定するように構成されているが、マスクパターンによって選択信号や認証コードを設定するように構成しても良い。
（６）  設定部の構成は図４に例示したものに限定されない。図５（ａ）〜（ｃ）は、図４中の設定部の変形例を示す構成図である。
【００４３】
図５（ａ）の設定部は、ノードＮ０，Ｎ１と電源電位ＶＤＤの間をそれぞれヒューズＦＶ０，ＦＶ１で接続し、このノードＮ０，Ｎ１と接地電位ＧＮＤの間をそれぞれ高抵抗Ｒ０，Ｒ１で接続し、ヒューズを切断することによってノードを接地電位レベルである“Ｌ”にプルダウンするように構成している。
【００４４】
図５（ｂ）の設定部は、図５（ａ）とは逆に、ノードＮ０，Ｎ１と電源電位ＶＤＤの間をそれぞれ高抵抗Ｒ０，Ｒ１で接続し、このノードＮ０，Ｎ１と接地電位ＧＮＤの間をそれぞれヒューズＦＶ０，ＦＶ１で接続し、ヒューズを切断することによってノードを電源電位レベルである“Ｈ”にプルアップするように構成している。
【００４５】
また、図５（ｃ）の設定部は、ノードＮ０，Ｎ１にボンディングパッドを設け、ボンディングワイヤＷによってパッケージのリードフレームの電源電位ＶＤＤまたは接地電位ＧＮＤに接続するようにしている。このボンディングワイヤＷによる設定部ではヒューズを用いていないので、レーザートリミング装置等の特別な装置を必要とせずに、一般的なワイヤボンディング装置で任意の値を設定できるという利点がある。
【図面の簡単な説明】
【００４６】
【図１】本発明の実施例１を示すマイクロコントローラの説明図である。
【図２】従来のマイクロコントローラの説明図である。
【図３】本発明の実施例２を示すマイクロコントローラの説明図である。
【図４】本発明の実施例３を示す認証コードレジスタの構成図である。
【図５】図４中の設定部の変形例を示す構成図である。
【符号の説明】
【００４７】
１    ＣＰＵ
２    ＲＯＭ
３    バス
４    入出力モジュール
６    認証コード生成モジュール
７    認証コードレジスタ
ＢＩＦ    バスインタフェース
ＳＥＬ    セレクタ
ＲＧ    レジスタ
ＦＶ，ＦＧ    ヒューズ
Ｒ    抵抗
Ｗ    ボンディングワイヤ
【図１】
0004783163.tif 000002
【図２】
0004783163.tif 000003
【図３】
0004783163.tif 000004
【図４】
0004783163.tif 000005
【図５】
0004783163.tif 000006