説明

マイクロコントローラとその認証方法及び認証プログラム

【課題】マイクロコンピュータにおけるプログラムの不正利用を簡単な構成で防止する。
【解決手段】プログラム中に、認証コード生成モジュール6に任意の値を書き込むステップS23と、認証コード生成モジュール6から認証コードを読み出してステップS23で書き込んだ値に一致しているか否かを判定するステップS24を組み込んでおく。このプログラムを、認証コード生成モジュール6を備えた正規のマイクロコンピュータで実行すれば、正常な処理が行われる。もしも、このプログラムを認証コード生成モジュール6を備えていない別のマイクロコンピュータで実行すると、認証コードを読み出すことができないので、処理の続行が不能になり、不正利用が防止できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイクロコントローラ用に開発されたプログラムの不正利用防止技術に関するものである。
【背景技術】
【0002】
図2(a),(b)は、従来のマイクロコントローラの説明図で、同図(a)はハードウエア構成図、及び同図(b)はソフトウエアによる動作フロー図である。
【0003】
このマイクロコントローラは、図2(a)に示すように、プログラムに従って処理及び制御を行う中央処理ユニット(以下、「CPU」という)1と、そのプログラムが格納された読み出し専用メモリ(以下、「ROM」という)2を有し、これらのCPU1とROM2がバス3を介して接続されている。バス3には、更に、例えば外部メモリ10等との間でデータ送受信を行う入出力モジュール4や、その他の機能モジュール5が接続されている。
【0004】
一方、このマイクロコントローラの動作を規定するソフトウエアは、図2(b)に示すように、マイクロコントローラの機能に応じて全体の処理の流れを制御するメインプログラムと、このメインプログラムから起動されて個々のまとまった処理を行う関数プログラムのような下位プログラムで構成されている。
【0005】
例えば、メインプログラムのステップS1で、CPU1は入出力モジュール4を介して外部メモリ10からデータを読み込む。次に、ステップS2で下位プログラムを起動して、そのデータを引き渡す。
【0006】
これにより、下位プログラムの動作が開始され、ステップS11において、読み込んだデータ(入力データ)の引き渡しが行われ、ステップS12で入力データに従った演算処理が行われる。ステップS12の演算処理が完了すると、ステップS13で演算処理結果のデータ(出力データ)が生成され、メインプログラムに戻る。
【0007】
そして、メインプログラムのステップS3において、CPU1は下位プログラムで生成された出力データを受け取り、入出力モジュール4を介して外部メモリ10へそのデータを書き出す。
【0008】
【特許文献1】特開平11−345117号公報
【特許文献2】特開2001−209584号公報
【特許文献3】特開2003−150457号公報
【0009】
上記特許文献1には、通常の処理・制御用の命令の他に実行許可命令を設け、プロセッサに固有のプロセッサIDと実行すべきプログラムに固有のソフトウエアIDに基づいて認証動作を行い、認証動作が成功裡に終わったときにそのプログラムの実行ができるように構成したプログラムの不正実行防止機能付きプロセッサが記載されている。
【0010】
特許文献2には、パーソナルコンピュータのハードディスク等の内部記憶媒体に記憶されているデータを、CD(Compact Disc)等の外部記憶媒体にコピーするときに、そのパーソナルコンピュータに設定された固有情報に従ってデータを暗号化してコピーし、暗号化された外部記憶媒体を読むときにはその固有情報に従って復号化するように構成した情報暗号化装置が記載されている。これにより、コピーされた外部記憶媒体を他のパーソナルコンピュータで読み取ることが防止できる。
【0011】
特許文献3には、ソフトウエア等の電子データが格納されたデータ領域と、書き替え可能な識別IDを格納する保護領域を備えた著作権保護機能内蔵媒体を用いて、電子データの不正利用を防止する技術が記載されている。この特許文献3に記載された電子データ利用機器では、外部メモリ装着スロットに装着された著作権保護機能内蔵媒体の保護領域から識別IDを読み出し、その識別IDがこの電子データ利用機器に設定された固体IDと一致しているか、または汎用IDの場合に、電子データを読み出すことが可能になり、読み出し後に著作権保護機能内蔵媒体の保護領域にその固体IDを書き込むようにしている。これにより、一度ある電子データ利用機器で読み出された著作権保護機能内蔵媒体には、最初に読み出しを行った電子データ利用機器の固体IDが書き込まれるので、その後、他の電子データ利用機器で読み取ることができなくなる。
【発明の開示】
【発明が解決しようとする課題】
【0012】
しかしながら、図2に示した従来のマイクロコントローラの下位プログラムは、例えば関数プログラムのように機能毎にまとめ、他の全く異なる制御を行うメインプログラムの下でも動作するように互換性を有する構成にすることが多い。このため、ROM2から下位プログラムが不正にコピーされて、他のマイクロコントローラの下位プログラムとして転用された場合、CPUの命令コード体系が同一であれば(マイクロコントローラ用のCPUの種類は限定されているので、その可能性は高い)、何の問題もなく動作してしまう。特に、大規模な関数プログラム等の下位プログラムの開発には、多大な開発期間と費用が必要であるので、盗用された場合の被害は甚大である。
【0013】
一方、特許文献1に記載されたプロセッサは、プログラムの不正使用の防止が図られているものの、プロセッサ自体の開発に多大な費用がかかると共に、今までのCPUを前提として開発されてきたハードウエアやソフトウエア資産が活用できなくなるおそれがあり、現実的な解決手段とは考えられない。また、特許文献2,3に記載された不正使用防止技術は、ソフトウエアの入出力を前提とした外部記憶媒体を有するパーソナルコンピュータを対象としたもので、制御用のマイクロコントローラへの適用は困難である。
【0014】
本発明は、プログラムの不正利用を簡単な構成で防止することができるマイクロコンピュータとその認証方法及び認証プログラムを提供することを目的としている。
【課題を解決するための手段】
【0015】
本発明のマイクロコントローラの認証方法は、プログラムが記憶されたメモリと、該メモリに記憶されたプログラムに従って演算制御を行うプロセッサとを備えたマイクロコントローラに、前記プロセッサからアクセスされて認証コードを出力する認証コード生成手段を設け、前記プログラムによって前記認証コード生成手段から前記認証コードを読み出し、前記読み出した認証コードが正常であるか否かを判定することを特徴としている。
【0016】
また、本発明のマイクロコントローラは、プログラムが記憶されたメモリと、前記メモリに記憶されたプログラムに従って演算制御を行うプロセッサと、前記プロセッサによって書き込まれたデータを認証コードとして保持し、該プロセッサからの読み出し要求に従って該認証コードを出力する認証コード生成手段とを備えたことを特徴としている。
【発明の効果】
【0017】
本発明では、プロセッサからの読み出し要求に従って認証コードを出力する認証コード生成手段を有しているので、読み出した認証コードをチェックすることにより、正規のハードウエアとソフトウエアの組み合わせであるか否かを判定することが可能になり、プログラムの不正利用を簡単な構成で防止することができるという効果がある。
【発明を実施するための最良の形態】
【0018】
この発明の前記並びにその他の目的と新規な特徴は、次の好ましい実施例の説明を添付図面と照らし合わせて読むと、より完全に明らかになるであろう。但し、図面は、もっぱら解説のためのものであって、この発明の範囲を限定するものではない。
【実施例1】
【0019】
図1(a),(b)は、本発明の実施例1を示すマイクロコントローラの説明図で、同図(a)はハードウエア構成図、及び同図(b)はソフトウエアによる動作フロー図である。これらの図1(a),(b)において、図2中の要素と共通の要素には共通の符号が付されている。
【0020】
このマイクロコントローラは、図1(a)に示すように、プログラムに従って処理及び制御を行うCPU1と、そのプログラムが格納されたROM2を有し、これらのCPU1とROM2がバス3を介して接続されている。バス3には、更に、例えば外部メモリ10等との間でデータ送受信を行う入出力モジュール4、認証コード生成モジュール6、及びその他の機能モジュール5が接続されている。
【0021】
認証コード生成モジュール6は、CPU1からバス2を介して読み書きが可能なレジスタで構成されている。即ち、CPU1から書き込まれた任意の値を保持し、このCPU1から読み出し要求があった時に、その保持した値を認証コードとして出力するものである。なお、認証コード生成モジュール6は、それにアクセスする時間をできるだけ小さくするために、高速バス上に配置することが望ましい。
【0022】
次に、動作を説明する。
このマイクロコントローラの動作を規定するソフトウエアは、図1(b)に示すように、マイクロコントローラの機能に応じて全体の処理の流れを制御するメインプログラムと、このメインプログラムから起動されて個々のまとまった処理を行う関数プログラムのような下位プログラムで構成されている。
【0023】
メインプログラムのステップS1において、CPU1は入出力モジュール4を介して外部メモリ10からデータを読み込む。次に、ステップS2で下位プログラムを起動して、そのデータを引き渡す。
【0024】
これにより、下位プログラムの動作が開始され、ステップS21において、下位プログラムに読み込んだデータ(入力データ)の引き渡しが行われ、ステップS22で入力データに従った演算処理が行われる。ステップS22の演算処理が完了すると、ステップS23で認証コード生成モジュール6に任意の値(認証コード)を書き込む。その後、ステップS24で認証コード生成モジュール6に書き込んだ認証コードを読み出し、ステップS23で書き込んだ値と一致しているか否かを判定する。
【0025】
ステップS24において認証コードが正常であると判定されると、ステップS25へ進んで演算処理結果のデータ(出力データ)が生成され、メインプログラムに戻る。そして、メインプログラムのステップS3において、CPU1は下位プログラムで生成された出力データを受け取り、出力モジュール4を介して外部メモリ10へそのデータを書き出す。
【0026】
もしも、ステップS24において認証コードが異常であると判定されると、処理の続行が不能となり、プログラムが暴走してしまう。なお、ステップS24において認証コードが異常であると判定されたときに、プログラムの実行を終了させたり、出力データを生成せずにメインプログラムに戻したりするように構成することもできる。
【0027】
以上のように、この実施例1のマイクロコントローラは、CPU1から書き込まれた任意の値を認証コードとして保持し、読み出し要求に応じてこの認証コードを出力する認証コード生成モジュール6を有し、更に、ROM2に格納された下位プログラム中に、認証コード生成モジュール6に認証コードを書き込んで読み出し、一致するか否かを判定する処理(ステップS23,S24)を組み込んでいる。
【0028】
これにより、認証コード生成モジュール6を持たない図2(a)の構成のようなマイクロコントローラに、図1(a)中のROM2から図1(b)のソフトウエアを不正に抜き取ってコピーして動作させた場合、ステップS23において書き込み対象の認証コード生成モジュールが存在しないので、ステップS24の判定処理において正常な認証コードを読み出すことができない。このため、プログラムが異常終了し、目的の処理を行うことができなくなる。従って、プログラムの不正利用を簡単な構成で防止することができるという利点がある。
【実施例2】
【0029】
図3(a),(b)は、本発明の実施例2を示すマイクロコントローラの説明図で、同図(a)はハードウエア構成図、及び同図(b)はソフトウエアによる動作フロー図である。これらの図3(a),(b)において、図1中の要素と共通の要素には共通の符号が付されている。
【0030】
このマイクロコントローラは、図1(a)のマイクロコントローラの認証コード生成モジュール6に代えて認証コードレジスタ7を設けると共に、図1(b)の下位プログラム中のステップS23,S24に代えて処理内容が若干異なるステップS23A,S24Aを設けている。
【0031】
認証コードレジスタ7は、予め所定の値が認証コードとして記憶されたROMで構成され、CPU1からバス3を介して読み出しができるレジスタである。
【0032】
ステップS23Aは、認証コードレジスタ7から認証コードを読み出す処理ステップで、ステップS24Aは、ステップS23Aで読み出した認証コードが正常か否かを判定する処理ステップである。その他の構成は、図1と同様である。
【0033】
このマイクロコントローラの動作は、下位プログラムで認証コードの書き込みを行わず、認証コードレジスタ7から認証コードを読み出して判定することが異なる他は、図1のマイクロコントローラの動作と同様である。
【0034】
以上のように、この実施例2のマイクロコントローラは、予め定められた認証コードが書き込まれた認証コードレジスタ7を有し、更に、ROM2に格納された下位プログラム中に、認証コードレジスタ7を読み出して、正常か否かを判定する処理(ステップS23A,S24A)を組み込んでいる。
【0035】
これにより、認証コードレジスタ7を持たない図2(a)の構成のようなマイクロコントローラに、図3(a)中のROM2から図3(b)のソフトウエアを不正に抜き取ってコピーして動作させた場合、ステップS23Aにおいて正常な認証コードを読み出せないので、ステップS24Aの判定処理において異常と判定される。このため、プログラムが異常終了し、目的の処理を行うことができなくなる。従って、実施例1と同様の利点がある。
【0036】
なお、実施例1の認証コード生成モジュール6の場合、そのアドレスが図2(a)のマイクロコントローラにおいてたまたま読み書き可能なレジスタに割り当てられていた場合、下位プログラムは正常に動作するが、この実施例2では、認証コードレジスタ7を読み出し専用としているため、この認証コードレジスタ7に対応するアドレスから読み出した値が認証コードに一致する偶然性は極めて小さい。また、認証コードを連続する複数のアドレスに格納しておけば、認証コードが一致する確率は更に小さくなる。
【実施例3】
【0037】
図4(a),(b)は、本発明の実施例3を示す認証コードレジスタの構成図であり、図3中の認証コードレジスタ7に代えて設けられるものである。
【0038】
図4(a)の認証コードレジスタは、それぞれ固有の値が認証コードとして記憶されたROM等からなる複数のレジスタRG0〜RG7、これらのレジスタRG0〜RG7を選択信号SL0〜SL2に従って選択するセレクタSEL、このセレクタSELで選択されたレジスタの値をCPU1からの読み出し要求に従ってバス3へ出力するバスインタフェースBIF、及び選択信号SL0〜SL2を出力する設定部で構成されている。
【0039】
設定部は、選択信号SL0〜SL2が出力されるノードN0〜N2を有し、これらのノードN0〜N2と電源電位VDDの間が、それぞれヒューズFV0〜FV2で接続され、ノードN0〜N2と接地電位GNDの間が、それぞれヒューズFG0〜FG2で接続されるようになっている。この設定部では、1対のヒューズ(FV0,FG0)、(FV1,FG1)、(FV2,FG2)の内のいずれか一方が、製造段階でレーザビーム等によって切断され、ノードN0〜N2にレベル“H”またはレベル“L”の選択信号SL0〜SL2が出力されるようになっている。
【0040】
一方、図4(b)の認証コードレジスタは、例えば16ビットの認証コードを出力するノードN0〜N15を有する設定部と、このノードN0〜N15から出力される認証コードをCPU1からの読み出し要求に従ってバス3へ出力するバスインタフェースBIFとで構成されている。設定部の構成は、図4(a)中の設定部と同様である。
【0041】
このような図4(a),(b)の認証コードレジスタでは、設定部の設定値を変えることにより、異なった認証コードを設定することができる。従って、例えば先に購入したハードウエアのように認証コードレジスタを有するような改良版としての正規のハードウエアを新規購入して、先に購入済みのハードウエアから不正に抜き取った下位プログラムで、新規に購入したハードウエアを動作させた場合、下位プログラム中に設定されている認証コードと一致しないので、正常な動作を行うことができなくなる。つまり、ヒューズ等の内部の作り込みによって顧客毎に認証コードを変えることができるので、同一のハードウエアを購入したとしても、プログラムを購入していない顧客に対する不正入手プログラムでの使用を防止することができる。但し、製造者としては、ハードウエアに設定した認証コード毎に、対応する下位プログラムを用意しておく必要がある。
【0042】
なお、本発明は、上記実施例に限定されず、種々の変形が可能である。この変形例としては、例えば、次のようなものがある。
(1) 図1(b)と図3(b)の下位プログラムでは、演算処理を行った後で認証コードの判定を行っているが、演算処理の前に認証コードの判定を行うようにしても良い。
(2) 図1(b)と図3(b)では、プログラムをメインプログラムと下位プログラムに分割し、下位プログラムで認証コードの判定を行うようにしているが、メインプログラムで認証コードの判定を行っても良いし、また、プログラムをメインプログラムと下位プログラムに区分する必要もない。
(3) 認証コードのビット数は任意である。
(4) 認証コード生成モジュール6は、与えられた任意の値をそのまま認証コードとして出力しているが、与えられた任意の値に対して所定の演算を行って認証コードを生成するように構成しても良い。
(5) 図4中の設定部は、ヒューズの切断によって選択信号や認証コードを設定するように構成されているが、マスクパターンによって選択信号や認証コードを設定するように構成しても良い。
(6) 設定部の構成は図4に例示したものに限定されない。図5(a)〜(c)は、図4中の設定部の変形例を示す構成図である。
【0043】
図5(a)の設定部は、ノードN0,N1と電源電位VDDの間をそれぞれヒューズFV0,FV1で接続し、このノードN0,N1と接地電位GNDの間をそれぞれ高抵抗R0,R1で接続し、ヒューズを切断することによってノードを接地電位レベルである“L”にプルダウンするように構成している。
【0044】
図5(b)の設定部は、図5(a)とは逆に、ノードN0,N1と電源電位VDDの間をそれぞれ高抵抗R0,R1で接続し、このノードN0,N1と接地電位GNDの間をそれぞれヒューズFV0,FV1で接続し、ヒューズを切断することによってノードを電源電位レベルである“H”にプルアップするように構成している。
【0045】
また、図5(c)の設定部は、ノードN0,N1にボンディングパッドを設け、ボンディングワイヤWによってパッケージのリードフレームの電源電位VDDまたは接地電位GNDに接続するようにしている。このボンディングワイヤWによる設定部ではヒューズを用いていないので、レーザートリミング装置等の特別な装置を必要とせずに、一般的なワイヤボンディング装置で任意の値を設定できるという利点がある。
【図面の簡単な説明】
【0046】
【図1】本発明の実施例1を示すマイクロコントローラの説明図である。
【図2】従来のマイクロコントローラの説明図である。
【図3】本発明の実施例2を示すマイクロコントローラの説明図である。
【図4】本発明の実施例3を示す認証コードレジスタの構成図である。
【図5】図4中の設定部の変形例を示す構成図である。
【符号の説明】
【0047】
1 CPU
2 ROM
3 バス
4 入出力モジュール
6 認証コード生成モジュール
7 認証コードレジスタ
BIF バスインタフェース
SEL セレクタ
RG レジスタ
FV,FG ヒューズ
R 抵抗
W ボンディングワイヤ

【特許請求の範囲】
【請求項1】
プログラムが記憶されたメモリと、該メモリに記憶されたプログラムに従って演算制御を行うプロセッサとを備えたマイクロコントローラの認証方法であって、
前記プロセッサからアクセスされて認証コードを出力する認証コード生成手段を設け、 前記プログラムによって前記認証コード生成手段から前記認証コードを読み出し、
前記読み出した認証コードが正常であるか否かを判定することを特徴とするマイクロコントローラの認証方法。
【請求項2】
前記認証コード生成手段は、前記プロセッサによって書き込まれたデータを前記認証コードとして保持し、該プロセッサからの読み出し要求に従って該認証コードを出力することを特徴とする請求項1記載のマイクロコントローラの認証方法。
【請求項3】
前記認証コード生成手段は、予め定められた認証コードを保持し、前記プロセッサからの読み出し要求に従って該認証コードを出力することを特徴とする請求項1記載のマイクロコントローラの認証方法。
【請求項4】
プログラムが記憶されたメモリと、
前記メモリに記憶されたプログラムに従って演算制御を行うプロセッサと、
前記プロセッサによって書き込まれたデータを認証コードとして保持し、該プロセッサからの読み出し要求に従って該認証コードを出力する認証コード生成手段とを、
備えたことを特徴とするマイクロコントローラ。
【請求項5】
プログラムが記憶されたメモリと、
前記メモリに記憶されたプログラムに従って演算制御を行うプロセッサと、
前記プロセッサからの読み出し要求に従って予め定められた認証コードを出力する認証コード生成手段とを、
備えたことを特徴とするマイクロコントローラ。
【請求項6】
前記認証コード生成手段は、
それぞれ予め定められた認証コードが設定された複数のレジスタと、
設定部に設定された選択信号に基づいて前記複数のレジスタから1つを選択して該レジスタに設定された前記認証コードを出力するセレクタと、
前記プロセッサからの要求に従って前記セレクタから出力される前記認証コードを出力するバスインタフェースとを、
備えたことを特徴とする請求項5記載のマイクロコントローラ。
【請求項7】
前記認証コード生成手段は、
マスクパターン、ヒューズの切断、またはワイヤ配線によって複数ビットの信号を固定的に設定する設定部と、
前記プロセッサからの要求に従って前記設定部に設定された複数ビットの信号を前記認証コードとして出力するバスインタフェースとを、
備えたことを特徴とする請求項5記載のマイクロコントローラ。
【請求項8】
プログラムが記憶されたメモリと、該メモリに記憶されたプログラムに従って演算制御を行うプロセッサと、前記プロセッサからアクセスされて認証コードを出力する認証コード生成手段とを備えたマイクロコントローラの認証プログラムであって、
前記認証コード生成手段から前記認証コードを読み出すステップと、
前記読み出した認証コードが正常であるか否かを判定するステップとを有することを特徴とするマイクロコントローラの認証プログラム。
【請求項9】
プログラムが記憶されたメモリと、該メモリに記憶されたプログラムに従って演算制御を行うプロセッサと、前記プロセッサによって書き込まれたデータを認証コードとして保持し、該プロセッサからの読み出し要求に従って該認証コードを出力する認証コード生成手段とを備えたマイクロコントローラの認証プログラムであって、
前記認証コード生成手段に任意のデータを書き込むステップと、
前記認証コード生成手段から前記認証コードを読み出すステップと、
前記読み出した認証コードが前記書き込んだ任意のデータと一致したときに正常であると判定して処理を続行し、不一致のときには異常と判定してそれ以降の処理を停止するステップとを有することを特徴とするマイクロコントローラの認証プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2007−193550(P2007−193550A)
【公開日】平成19年8月2日(2007.8.2)
【国際特許分類】
【出願番号】特願2006−10641(P2006−10641)
【出願日】平成18年1月19日(2006.1.19)
【出願人】(000000295)沖電気工業株式会社 (6,645)
【Fターム(参考)】