(57)【要約】【課題】マイコンにおける認証のためのプログラムが不正に取得され、解読／公開された場合においても、そのコピー品を製造することを防止する。また、これを特別な回路を必要とせずに実現する。【解決手段】本体装置及び付属装置の各々は、固有の識別情報を記憶するＩＤ記憶部と、前記識別情報及び既存の第１暗号鍵に基づいて第２暗号鍵を生成して乱数を前記第２暗号鍵で暗号化するプログラムを記憶する第１プログラムメモリとを具備し、前記本体装置は、前記乱数を発生させるＣＰＵを更に具備し、前記乱数を前記付属装置に通知し、且つ、前記プログラムにより前記乱数を前記第２暗号鍵で暗号化した第１暗号化乱数を生成し、前記付属装置は、前記プログラムにより前記乱数を前記第２暗号鍵で暗号化した第２暗号化乱数を生成し、第２暗号化乱数を前記本体装置に通知し、前記本体装置は、前記第１暗号化乱数と前記第２暗号化乱数とを比較し、比較結果を出力する。【選択図】図１
2007184735.tif 000002
【特許請求の範囲】
【請求項１】
プログラム及び第１暗号鍵を格納するプログラムメモリと、
前記プログラムに基づいて処理を実行するＣＰＵと、
固有の識別情報を格納するＩＤ記憶部と
を具備し、
前記ＣＰＵは、前記プログラムの実行により前記プログラムメモリに格納された前記第１暗号鍵及び前記ＩＤ記憶部に格納された前記固有の識別情報に基づき第２暗号鍵を生成し、乱数を前期第２暗号鍵で暗号化する
マイクロコントローラ。
【請求項２】
請求項１に記載のマイクロコントローラにおいて、
前記乱数は、前記ＣＰＵが乱数発生用プログラムを実行することにより発生する
マイクロコントローラ。
【請求項３】
請求項１に記載のマイクロコントローラにおいて、
前記乱数は、乱数発生用回路により発生する
マイクロコントローラ。
【請求項４】
請求項１に記載のマイクロコントローラにおいて、
前記乱数を外部から入力するための入出力ポートを更に具備する
マイクロコントローラ。
【請求項５】
請求項１に記載のマイクロコントローラにおいて、
前記第２暗号鍵を用いて暗号化した乱数と、他のマイクロコントローラで暗号化された乱数とを比較し、一致するか否かにより異なる処理を実行するマイクロコントローラ。
【請求項６】
請求項１及至５のいずれか一項に記載のマイクロコントローラにおいて、
前記プログラムメモリ及び前記ＩＤ記憶部は、不揮発性メモリである
マイクロコントローラ。
【請求項７】
請求項６に記載のマイクロコントローラにおいて、
前記プログラムメモリに対してプログラムを書き込み又は消去するためのコントロール部を更に具備し、
前記コントロール部は、前記プログラムメモリの内容を消去する時に、前記ＩＤ記憶部に格納された前記識別情報も消去する
マイクロコントローラ。
【請求項８】
請求項１に記載のマイクロコントローラにおいて、
前記プログラムは、
前記第１暗号鍵を提供するための第１暗号鍵提供プログラムと、
前記第１暗号鍵及び前記識別情報を取得し、前記第１暗号鍵及び前記識別情報に基づいて前記第２暗号鍵を作成するための第２暗号鍵作成プログラムと、
前記乱数を前記第２暗号鍵で暗号化して暗号化乱数を生成するための暗号化プログラムと
を具備する
マイクロコントローラ。
【請求項９】
請求項８に記載のマイクロコントローラにおいて、
前記プログラムは、
前記暗号化乱数と他のマイクロコントローラで暗号化された乱数とを比較し、比較結果を出力するための比較プログラムを更に具備する
マイクロコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラに関し、特に暗号化された乱数を用いて認証を行うマイクロコントローラに関する。
【背景技術】
【０００２】
携帯電話のバッテリや、プリンタのカートリッジのように、交換可能な付属品を使用する装置において、正規の付属品を使用することが望ましい場合においても、不正な付属品や一般的な付属品が用いられることがある。
【０００３】
このように、正規の付属品以外の付属品が使用されることを防止するための手段の１つとして、本体と付属品との間で認証を行う場合がある。そして、本体と付属品との間の認証に関する技術の１つに、認証側と被認証側との間で同じ乱数を、同じ暗号鍵を含む暗号化プログラムで暗号化し、比較して一致するか調べるというものがある。
【０００４】
乱数を暗号化する従来技術として、特開２００３−３１８８９４号公報（特許文献１）にチャレンジ−レスポンス方式による機器間の認証処理方法が記載されている。
当該認証方法では、サーバから端末にチャレンジデータを伝送し、当該チャレンジデータを復号化したレスポンスデータを端末からサーバに伝送する。更に、当該レスポンスデータが前記チャレンジデータに復号化されたものであるか否かを、サーバにおいて施された暗号化に基づいて判断する。判断結果が肯定的である時、当該認証方法は、暗号化及び復号化に用いるパラメータを共に新たなパラメータに更新して、これらを次回の認証処理に用いるパラメータとして設定する。
【０００５】
【特許文献１】特開２００３−３１８８９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来技術をマイクロコントローラを搭載した応用システムに適用した場合、乱数の暗号化に用いる暗号鍵は、プログラムに直接書かれていたり、プログラムを格納するメモリと同じメモリにデータとして保存されていたりするため、例えば、ユーザのプログラムが格納されているプログラムメモリのデータを全てコピーすれば、正規の付属品以外でも同じ暗号化を行うことが可能である。すなわち、認証用のプログラムが不正に取得された場合に、そのプログラムを、フラッシュメモリなどで構成されたプログラムメモリを内蔵した同一のマイクロコントローラのプログラムメモリに書き込むと、正規な付属品でなくとも動作してしまうため模造品を検出できないという問題があった。その理由は、同一プログラムが書き込まれたマイクロコントローラを、正規の付属品を模倣した模造品に実装すれば正規な付属品と同様の動作をするためである。
【課題を解決するための手段】
【０００７】
以下に、［発明を実施するための最良の形態］で使用される番号を括弧付きで用いて、課題を解決するための手段を説明する。これらの番号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。但し、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【０００８】
プログラム及び第１暗号鍵を格納するプログラムメモリ（１３０）と、
前記プログラムに基づいて処理を実行するＣＰＵ（１１０）と、
固有の識別情報を格納するＩＤ記憶部（１２０）と
を具備し、
前記ＣＰＵ（１１０）は、前記プログラムの実行により前記プログラムメモリ（１３０）に格納された前記第１暗号鍵及び前記ＩＤ記憶部（１２０）に格納された前記固有の識別情報に基づき第２暗号鍵を生成し、乱数を前期第２暗号鍵で暗号化する
マイクロコントローラ（１００）。
【発明の効果】
【０００９】
マイクロコントローラのプログラムが不正に取得された場合に、そのプログラムがプログラムメモリに書き込まれた模造品を用いても、動作が正常に行われなくすることが出来る。これにより、単純にプログラムメモリをコピーすることによる付属品の偽造を排除することが可能になる。
【発明を実施するための最良の形態】
【００１０】
以下に本発明の第１実施形態について添付図面を参照して説明する。
図１に示すように、本発明のマイクロコントローラ１００は、ＣＰＵ１１０と、ＩＤ記憶部１２０と、プログラムメモリ１３０と、入出力ポート１４０を備える。
【００１１】
ＣＰＵ１１０は、各部の制御を行う。また、マイクロコントローラ１００内部で暗号化の対象となる乱数を発生させる必要があれば、乱数を発生させる。この時、ＣＰＵ１１０は、プログラムメモリ１３０に記憶されている乱数発生用プログラム（図示せず）を実行して乱数を発生させる。但し、実際には、ＣＰＵ自体の乱数発生機能や、乱数発生回路（図示せず）といったハードウェア機能により乱数を発生させても良い。すなわち、乱数はどのような方法で発生しても良い。
【００１２】
ＩＤ記憶部１２０は、マイクロコントローラ内部に設けられた記憶領域であり、マイクロコントローラ内部の回路又はプログラムからアクセスする。また、ＩＤ記憶部１２０は、顧客毎に定められた固有の識別情報（ＩＤ）を記憶する。
【００１３】
ＩＤ記憶部１２０には、ある顧客向けには対象顧客固有ＩＤ（例えば５８６７９）が書き込まれ出荷される。一般顧客への出荷品のＩＤ記憶部１２０には、初期値（例えばオールゼロ）が書き込まれている。ＩＤ記憶部１２０は、プログラムメモリ１３０のプログラムからは、読み出しは可能であるが書き換えはできない。ＩＤ記憶部１２０の書き換えは、製造メーカの製造工程における専用モードでのみ書き換え可能にすることができる。ＩＤ記憶部１２０はプログラムメモリ１３０が不揮発性メモリ品でありプログラムの書き換えが可能な場合には不揮発性メモリとする。
【００１４】
プログラムメモリ１３０には、ユーザのプログラムが書き込まれる。プログラムは、暗号鍵Ａ提供プログラム１３１と、暗号鍵Ｂ生成プログラム１３２と、暗号化プログラム１３３と、比較プログラム１３４を備える。但し、実際には、暗号鍵Ａ提供プログラム１３１、暗号鍵Ｂ生成プログラム１３２、暗号化プログラム１３３、及び比較プログラム１３４は、プログラムメモリ１３０に記憶されたプログラムではなく、回路であっても良い。
【００１５】
暗号鍵Ａ提供プログラム１３１は、第１の暗号鍵Ａを提供するためのプログラムである。
暗号鍵Ｂ生成プログラム１３２は、暗号鍵Ａ提供プログラム１３１から提供された暗号鍵ＡとＩＤ記憶部１２０に格納されている固有の識別情報（ＩＤ）を取得し、暗号鍵Ａと固有の識別情報（ＩＤ）を用いて、新たな暗号鍵Ｂを生成するためのプログラムである。
暗号化プログラム１３３は、乱数を暗号鍵Ｂで暗号化するためのプログラムである。
比較プログラム１３４は、暗号鍵Ｂで暗号化させた乱数（第１暗号化乱数）と、他のマイクロコントローラから取得した第２暗号化乱数とを比較し、比較結果を出力するためのプログラムである。
【００１６】
なお、プログラムメモリ１３０の種類としてはマスクＲＯＭ品の場合と不揮発性メモリ品の場合とがある。プログラムメモリ１３０がＦｌａｓｈメモリのような不揮発性メモリの場合、ＩＤ記憶部１２０も不揮発性メモリであることが望ましい。その理由は、プログラムメモリ１３０のユーザプログラムが書き換えられた場合、ＩＤ記憶部１２０に対して、データの消去を行う機能をもたせるためである。詳細は後述する。
【００１７】
プログラムメモリ１３０が不揮発性メモリである場合、第１マイクロコントローラ１００は、更に、コントロール部１５０を具備する。
コントロール部１５０は、プログラムメモリ１３０の書き込み／消去制御を行っており、書き込み時は不揮発性メモリの書き込みに必要な電圧を発生し、書き込むアドレスとデータに応じた書き込み制御を行い、消去時は不揮発性メモリの消去に必要な電圧を発生し消去を行う。プログラムメモリ１３０の内容を書き換えようとしてプログラム書き込み装置（図示せず）を介して外部より第１マイクロコントローラ１００へ書き換え要求が入力されると、コントロール部１５０は、新規プログラムの書き込み前にプログラムメモリ１３０の消去動作を行うとともに、ＩＤ記憶部１２０の内容を消去するよう制御する。すなわち、コントロール部１５０は、外部からの書き換え要求を受けプログラムメモリ１３０の消去又は書き込みを行い、同時にＩＤ記憶部１２０に保持されているＩＤを初期化（例えばオールゼロ）する。
【００１８】
プログラムメモリ１３０がマスクＲＯＭの場合、プログラムを改竄される心配が無いため、ＩＤ記憶部１２０はＦｌａｓｈメモリ、マスクＲＯＭのいずれでも良い。
【００１９】
入出力ポート１４０は、外部との通信を行うためのポートである。ここでは、他のマイクロコントローラが生成した暗号化乱数を取得する際や、比較プログラム１３４による比較結果を出力する際に、入出力ポート１４０が用いられる。なお、暗号化に用いられる乱数をマイクロコントローラ１００内部で発生しない場合は、外部から乱数を取得するために入出力ポート１４０が用いられる。
【００２０】
図２に示すように、本発明のマイクロコントローラを用いた認証システムは、第１マイクロコントローラ１００と、第２マイクロコントローラ２００を有する。
第１マイクロコントローラ１００と第２マイクロコントローラ２００は通信ラインで結ばれている。
【００２１】
本発明の第１実施形態では、図２に示すように、第１マイクロコントローラ１００を本体（認証側）とし、第２マイクロコントローラ２００を付属品（被認証側）とする。
第１マイクロコントローラ１００と第２マイクロコントローラ２００とは、いずれも図１に示すマイクロコントローラを使用している。第１マイクロコントローラ１００と第２マイクロコントローラ２００の構成を識別するため、ここでは、第２マイクロコントローラ２００の構成を、ＣＰＵ２１０、ＩＤ記憶部２２０、プログラムメモリ２３０、入出力ポート２４０とする。すなわち、第２マイクロコントローラ２００においては、図１のＣＰＵ１１０、ＩＤ記憶部１２０、プログラムメモリ１３０、入出力ポート１４０を、それぞれＣＰＵ２１０、ＩＤ記憶部２２０、プログラムメモリ２３０、入出力ポート２４０と読み替える。
【００２２】
ＣＰＵ２１０は、各部の制御を行う。なお、ここでは、第２マイクロコントローラ２００は、第１マイクロコントローラ１００側から乱数を取得するため、ＣＰＵ２１０は乱数の発生を行わない。
【００２３】
ＩＤ記憶部２２０は、顧客毎に定められた固有の識別情報（ＩＤ）を記憶する。この識別情報は、第１マイクロコントローラ１００のＩＤ記憶部１２０に記憶されている識別情報と同じ識別情報である。すなわち、ＩＤ記憶部１２０とＩＤ記憶部２２０は、同じ識別情報を記憶している。
【００２４】
プログラムメモリ２３０には、ユーザのプログラムが書き込まれる。プログラムは、暗号鍵Ａ提供プログラム２３１と、暗号鍵Ｂ生成プログラム２３２と、暗号化プログラム２３３と、比較プログラム２３４を備える。暗号鍵Ａ提供プログラム２３１、暗号鍵Ｂ生成プログラム２３２、暗号化プログラム２３３は、それぞれ図１の暗号鍵Ａ提供プログラム１３１、暗号鍵Ｂ生成プログラム１３２、暗号化プログラム１３３と同じプログラムである。但し、実際には、暗号鍵Ａ提供プログラム２３１、暗号鍵Ｂ生成プログラム２３２、暗号化プログラム２３３、及び比較プログラム２３４は、プログラムメモリ２３０に記憶されたプログラムではなく、回路であっても良い。
【００２５】
なお、比較プログラム２３４は、図１の比較プログラム１３４と同じでも良いが、本体（認証側）、すなわち第１マイクロコントローラ１００側で互いの暗号化乱数の比較が行われる場合、比較プログラム２３４は、暗号化プログラム２３３により暗号化した乱数（第２暗号化乱数）を第１マイクロコントローラ１００側に送信するためのプログラムとする。なお、比較プログラム１３４による第２暗号化乱数の取得、又は暗号化プログラム２３３による第２暗号化乱数の送信により、第１マイクロコントローラ１００が第２マイクロコントローラ２００側の暗号化乱数を取得できる場合、比較プログラム２３４は無くても良い。
【００２６】
プログラムメモリ２３０が不揮発性メモリである場合、第２マイクロコントローラ２００は、更に、コントロール部２５０を具備する。コントロール部２５０は、図１のコントロール部１５０と同じである。
【００２７】
入出力ポート２４０は、外部との通信を行うためのポートである。ここでは、第１マイクロコントローラ１００側から乱数を取得し、第２暗号化乱数を第１マイクロコントローラ１００側に送信するために入出力ポート２４０が用いられる。
【００２８】
本発明の第１実施形態では、図２に示すように、第１マイクロコントローラ１００を本体（認証側）とし、第２マイクロコントローラ２００を付属品（被認証側）としたが、実際には、付属品を認証側として、本体を認証するようにしても良い。これが本発明の第２実施形態である。この場合、第１マイクロコントローラ１００を付属品（認証側）とし、第２マイクロコントローラ２００を本体（被認証側）とする。
【００２９】
更に、本発明の第３実施形態として、本体と付属品の両方で認証を行うようにしても良い。本体と付属品の両方で認証することで、より強固なセキュリティを実現することが可能となる。この場合、第１マイクロコントローラ１００と第２マイクロコントローラ２００は同じ動作を行う。
すなわち、第２マイクロコントローラ２００のＣＰＵ２１０も乱数を発生させる。この時、ＣＰＵ２１０は、プログラムメモリ２３０に記憶されている乱数発生用プログラム（図示せず）を実行して乱数を発生させる。但し、実際には、ＣＰＵ自体の乱数発生機能や、乱数発生回路（図示せず）といったハードウェア機能により乱数を発生させても良い。なお、乱数はどのような方法で取得しても良い。例えば、第１マイクロコントローラ１００、第２マイクロコントローラ２００共に、外部の乱数発生装置（図示せず）から乱数を取得することも可能である。この場合、第１マイクロコントローラ１００及び第２マイクロコントローラ２００は、互いの通信のためのみならず、外部の乱数発生装置との通信のために複数の入出力ポートを有しているものとする。
また、第２マイクロコントローラ２００側でも第１マイクロコントローラ１００側の暗号化乱数（第１暗号化乱数）を取得し、比較プログラム２３４により互いの暗号化乱数を比較する。
【００３０】
図３を参照して、本発明における認証に関し、動作を以下に示す。
ここでは、例として、第１マイクロコントローラ１００を本体（認証側）とし、第２マイクロコントローラ２００を付属品（被認証側）とする。
（１）ステップＨ１０１
ＣＰＵ１１０は、ＩＤ記憶部１２０から識別番号（ＩＤ）を読み出す。
（２）ステップＨ１０２
ＣＰＵ１１０は、プログラムメモリ１３０の暗号鍵Ａ提供プログラム１３１から暗号鍵Ａを読み出す。
（３）ステップＨ１０３
ＣＰＵ１１０は、暗号鍵Ｂ生成プログラム１３２で、暗号鍵ＡとＩＤから暗号鍵Ｂを生成する。
（４）ステップＦ１０１
ＣＰＵ２１０は、ＩＤ記憶部２２０から識別番号（ＩＤ）を読み出す。
（５）ステップＦ１０２
ＣＰＵ２１０は、プログラムメモリ２３０の暗号鍵Ａ提供プログラム２３１から暗号鍵Ａを読み出す。
（６）ステップＦ１０３
ＣＰＵ２１０は、暗号鍵Ｂ生成プログラム２３２で、暗号鍵ＡとＩＤから暗号鍵Ｂを生成する。
（７）ステップＨ１０４
ＣＰＵ１１０は、乱数を発生させ、付属品（第２マイクロコントローラ２００）へ出力（通知）する。
（８）ステップＨ１０５
ＣＰＵ１１０は、暗号化プログラム１３３で、乱数を暗号鍵Ｂで暗号化し、第１暗号化乱数を生成する。
（９）ステップＦ１０４
ＣＰＵ２１０は、暗号化プログラム２３３で、本体（第１マイクロコントローラ１００）より受け取った乱数を暗号鍵Ｂで暗号化し、第２暗号化乱数を生成した後、第２暗号化乱数を本体（第１マイクロコントローラ１００）に送信する。
（１０）ステップＨ１０６
ＣＰＵ１１０は、比較プログラム１３４で、第１暗号化乱数と第２暗号化乱数を比較し、比較結果を出力する。
【００３１】
なお、上記の動作を開始するタイミング（動作開始のトリガー）としては、本体及び付属品の起動時（電源ＯＮ／ＯＦＦ時）、本体と付属品の接続時、外部からの要求信号の受信時、定期的な実行（巡回動作）が考えられる。また、付属品は、本体から乱数を受け取った後に動作を開始しても良い。なお、本体、付属品共に、暗号鍵Ｂの生成までの動作は、識別情報（ＩＤ）とプログラムをセットされた時点で行っておくことも可能である。但し、実際には上記の例に限定されない。
【００３２】
以下に、実施例１，実施例２の２例を示す。
まず、図４を参照し、実施例１として、プリンタ（本体）とインクカートリッジ（付属品）の場合について説明する。
（１）ステップＨ２０１
プリンタ本体に電源が投入される
（２）ステップＨ２０２
本体側マイクロコントローラは、本体側の識別情報（ＩＤ）を読み出す。
（３）ステップＨ２０３
本体側マイクロコントローラは、本体側の暗号鍵Ａを読み出す。
（４）ステップＨ２０４
本体側マイクロコントローラは、読み出した暗号鍵Ａと識別情報（ＩＤ）から暗号鍵Ｂを生成する。
（５）ステップＨ２０５
その後、本体側マイクロコントローラは、本体にカートリッジが装着されたのを認識すると、カートリッジに電源を供給する。
（６）ステップＦ２０１
電源投入されると、カートリッジ側マイクロコントローラは、カートリッジ側の識別情報（ＩＤ）を読み出す。
（７）ステップＦ２０２
カートリッジ側マイクロコントローラは、カートリッジ側の暗号鍵Ａを読み出す。
（８）ステップＦ２０３
カートリッジ側マイクロコントローラは、読み出した暗号鍵Ａと識別情報（ＩＤ）から暗号鍵Ｂを生成し、暗号鍵Ｂ生成通知を本体側に送信する。
（９）ステップＨ２０６
暗号鍵Ｂ生成通知を受信すると、本体側マイクロコントローラは乱数を発生させ、カートリッジへ送信する。
（１０）ステップＦ２０４
カートリッジ側マイクロコントローラは、本体より受信した乱数を暗号鍵Ｂで暗号化し、第２暗号化乱数を生成し、第２暗号化乱数を本体に送信する。
（１１）ステップＨ２０７
本体側マイクロコントローラは、乱数を暗号鍵Ｂで暗号化し、第１暗号化乱数を取得する。
（１２）ステップＨ２０８
本体側マイクロコントローラは、第１暗号化乱数と第２暗号化乱数を比較する。
（１３）ステップＨ２０９
結果が一致していた場合には、本体は、プリンタとしての動作を開始する。
（１４）ステップＨ２１０
結果が一致していなかった場合には、本体は、プリンタとしての動作を停止する。
【００３３】
次に、図５を参照し、実施例２として、ポータブル機器（本体）とバッテリ（付属品）の場合について説明する。
（１）ステップＦ３０１
バッテリパックにおいて、バッテリセルが接続（装着）される。
（２）ステップＦ３０２
バッテリ側マイクロコントローラは、バッテリ側の識別情報（ＩＤ）を読み出す。
（３）ステップＦ３０３
バッテリ側マイクロコントローラは、バッテリ側の暗号鍵Ａを読み出す。
（４）ステップＦ３０４
バッテリ側マイクロコントローラは、読み出した暗号鍵Ａと識別情報（ＩＤ）から暗号鍵Ｂを生成する。
（５）ステップＦ３０５
その後、バッテリパックが本体側に装着されると、バッテリセルは、本体側に電源（電力）を供給する。
（６）ステップＨ３０１
電源投入されると、本体側マイクロコントローラは、本体側の識別情報（ＩＤ）を読み出す。
（７）ステップＨ３０２
本体側マイクロコントローラは、本体側の暗号鍵Ａを読み出す。
（８）ステップＨ３０３
本体側マイクロコントローラは、読み出した暗号鍵Ａと識別情報（ＩＤ）から暗号鍵Ｂを生成する。
（９）ステップＨ３０４
更に、本体側マイクロコントローラは乱数を発生させ、バッテリパックへ送信する。
（１０）ステップＦ３０６
バッテリ側マイクロコントローラは本体より受信した乱数を暗号鍵Ｂで暗号化し、第２暗号化乱数を生成し、第２暗号化乱数を本体に送信する。
（１１）ステップＨ３０５
本体は乱数を暗号鍵Ｂで暗号化し、第１暗号化乱数を取得する。
（１２）ステップＨ３０６
本体は、第１暗号化乱数と第２暗号化乱数を比較する。
（１３）ステップＨ３０７
結果が一致していた場合には、本体は、ポータブル機器としての動作を開始する。
（１４）ステップＨ３０８
結果が一致していなかった場合には、本体は、ポータブル機器としての動作を停止する。
【００３４】
ここで、マイクロコントローラのプログラムが不正に取得された場合について説明する。ここでは、本体のＩＤ記憶部にかかれているＩＤは顧客固有である。
まず、付属品側のマイクロコントローラ（顧客限定品）に正規プログラムが書き込まれている場合、すなわち正常な使用の場合、第１の暗号鍵ＡとＩＤに基づいて作成した暗号鍵Ｂと、乱数は、本体と付属品とで同じ物を使用することになるため、暗号化した乱数も同じになる。
しかし、不正に取得されたプログラムをそのまま特定顧客以外の一般顧客向けのマイクロコントローラのプログラムメモリにコピーした場合、模造品に実装されたマイクロコントローラのＩＤは初期化（例えばオールゼロ）されており、顧客固有ＩＤとは異なるため、暗号鍵Ｂが異なる。結果、本体と付属品の各々が暗号化した乱数は互いに異なり、本体は接続されている付属品が模造品であることが確認できる。
マイクロコントローラのプログラムメモリが不揮発性メモリの場合においては、ＩＤを読み出し出力する簡易なプログラムを書き込み動作させることにより、ＩＤ情報を悪意に入手する手段が考えられる。しかしながら、ＩＤ記憶部に保持されているデータは不揮発性メモリ消去／書き込みを行うことにより、初期化さる機能を有するため、本手段を用いることはできない。
【００３５】
以上のように、本発明におけるマイクロコントローラは、乱数発生用プログラム又はハードウェア機能により乱数を発生させるＣＰＵと、固有の識別情報を記憶するＩＤ記憶部と、第１暗号鍵を記憶し、且つ、識別情報及び第１暗号鍵に基づいて第２暗号鍵を生成し、乱数を第２暗号鍵で暗号化するプログラムを記憶する第１プログラムメモリとを備える。
【００３６】
本発明のマイクロコントローラを用いた認証システムでは、本体（認証側）の第１マイクロコントローラと付属品（被認証側）の第２マイクロコントローラを使用する。第１マイクロコントローラと第２マイクロコントローラは通信ラインで結ばれている。
【００３７】
第１マイクロコントローラは、プログラムメモリ、ＩＤ記憶部、ＣＰＵを備える。第２マイクロコントローラは、プログラムメモリ、ＩＤ記憶部を備える。各々、ＩＤ記憶部が不揮発性メモリの場合、コントロール部を更に備える。
【００３８】
プログラムメモリはユーザのプログラムが書き込まれる。具体的には、暗号鍵Ａ提供プログラム、暗号鍵Ｂ生成プログラム、暗号化プログラム、比較プログラム（認証側のみ）のプログラムからなる。プログラムメモリの種類としてはマスクＲＯＭ品の場合と不揮発性メモリ品の場合とがある。ＩＤ記憶部には、ＩＤ記憶部がある。ある顧客向けには対象顧客固有ＩＤが書き込まれ出荷される。一般顧客への出荷品のＩＤ記憶部には、初期値（例えばオールゼロ）が書き込まれている。ＩＤ記憶部はユーザメモリプログラムからは読み出しは可能であるが、書き換えはできない。ＩＤ記憶部はプログラムメモリが不揮発性メモリ品でありプログラムの書き換えが可能な場合には不揮発性メモリとする。暗号鍵Ｂ生成プログラムは暗号鍵ＡとＩＤをもとに暗号鍵Ｂを生成する。ＣＰＵは乱数を発生する。暗号化プログラムは乱数を暗号鍵Ｂで暗号化する。比較プログラムは本体、付属品双方から入力される暗号化された乱数を比較し、その結果を出力する。コントロール部はプログラムメモリが不揮発性メモリである場合に構成要素となる（存在する）。外部からの書き込み要求を受けプログラムメモリを消去／書き込みを行う。同時に暗号鍵Ａ提供プログラムに保持されているＩＤを初期化（例えばオールゼロ）する。
【００３９】
本発明における認証の処理フローについては、以下の通りである。
まず、本体、付属品ともに暗号鍵ＡとＩＤから暗号鍵Ｂを生成する。本体は乱数を発生させ、付属品へ出力する。本体は乱数を暗号鍵Ｂで暗号化し、第１暗号化乱数を取得する。付属品は本体より受け取った乱数を暗号鍵Ｂで暗号化し、第２暗号化乱数を生成して本体に送信する。本体は第１暗号化乱数と第２暗号化乱数を比較し、比較結果を出力する。
【図面の簡単な説明】
【００４０】
【図１】図１は、本発明のマイクロコントローラの構成を示すブロック図である。
【図２】図２は、本体（認証側）と付属品（被認証側）との構成を示すブロック図である。
【図３】図３は、本発明の基本動作を示すフローチャートである。
【図４】図４は、プリンタとカートリッジの場合の認証の動作を示すフローチャートである。
【図５】図５は、ポータブル機器とバッテリの場合の認証の動作を示すフローチャートである。
【符号の説明】
【００４１】
１００…  マイクロコントローラ（第１マイクロコントローラ）
１１０…  ＣＰＵ
１２０…  ＩＤ記憶部
１３０…  プログラムメモリ
１３１…  暗号鍵Ａ提供プログラム
１３２…  暗号鍵Ｂ生成プログラム
１３３…  暗号化プログラム
１３４…  比較プログラム
１４０…  入出力ポート
１５０…  コントローラ部
２００…  第２マイクロコントローラ
２１０…  ＣＰＵ
２２０…  ＩＤ記憶部
２３０…  プログラムメモリ
２３１…  暗号鍵Ａ提供プログラム
２３２…  暗号鍵Ｂ生成プログラム
２３３…  暗号化プログラム
２３４…  比較プログラム
２４０…  入出力ポート
２５０…  コントローラ部
【図１】
2007184735.tif 000003
【図２】
2007184735.tif 000004
【図３】
2007184735.tif 000005
【図４】
2007184735.tif 000006
【図５】
2007184735.tif 000007