(57)【要約】      （修正有）【課題】自己診断プログラムを実行するデータ処理装置において耐タンパ性を向上したデータ処理装置を提供する。【解決手段】ICカード１は、暗号処理に用いられる情報を格納するフラッシュメモリ１３と、暗号処理部１５と、CPU１１と、アクセス権取得制御レジスタ１７と、コプロセッサ２１と、バスコントローラ２２とを有する。アクセス権取得制御レジスタ１７は、有効及び無効の設定が可能であって、各回路へのアクセス権を設定するための複数のレジスタを含む。コプロセッサ２１は、CPU１１により制御され、アクセス権取得制御レジスタ１７を有効に設定する処理を実行する。バスコントローラ２２は、バスを制御し、かつアクセス権取得制御レジスタ１７が有効に設定されないで複数の回路のいずれかに対するアクセス権の設定がされたときは、CPU１１の動作を停止する停止処理を実行する。【選択図】図１
2012022627.tif 000002
【特許請求の範囲】
【請求項１】
バスを介して接続された複数の回路を含むデータ処理装置であって、
暗号処理に用いられる情報を格納する不揮発性メモリと、
前記暗号処理を実行する暗号処理部と、
前記複数の回路の少なくとも一部の自己診断を行う自己診断プログラムと、前記暗号処理部による前記暗号処理を含む処理プログラムとを実行可能であって、前記複数の回路内の各回路の動作の制御を行う制御部と、
有効及び無効の設定が可能であって、前記複数の回路の前記少なくとも一部へのアクセス権を設定するための複数のレジスタを含むアクセス権取得制御レジスタと、
前記制御部により制御され、前記アクセス権取得制御レジスタを有効に設定する処理を実行する設定回路と、
前記バスを制御し、かつ前記アクセス権取得制御レジスタが前記有効に設定されないで前記複数の回路のいずれかに対するアクセス権の設定がされたときは、前記制御部の動作を停止する停止処理を実行するバスコントローラと、
を特徴とするデータ処理装置。
【請求項２】
前記バスコントローラは、前記自己診断プログラムの実行コマンドを受信した後に、前記アクセス権取得制御レジスタにアクセス権の設定がされないで、そのアクセス権の設定がされていない回路へのアクセスがあったときに、前記停止処理を実行することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
バスを介して互いに接続された、暗号処理に用いられる情報を格納する不揮発性メモリと、前記暗号処理を実行する暗号処理部と、制御部とを用いたデータ処理方法であって、
前記制御部により、前記複数の回路の少なくとも一部の自己診断を行う自己診断プログラムと、前記暗号処理部による前記暗号処理を含む処理プログラムとを実行すると共に、前記複数の回路内の各回路の動作の制御を行い、
前記制御部が、前記複数の回路の前記少なくとも一部へのアクセス権を設定するための複数のレジスタを含むアクセス権取得制御レジスタを有効に設定する処理を、設定回路により実行させ、
前記バスを制御するバスコントローラにより、前記アクセス権取得制御レジスタが前記有効に設定されないで前記複数の回路のいずれかに対するアクセス権の設定がされたときは、前記制御部の動作を停止する、
ことを特徴とするデータ処理方法。
【請求項４】
前記バスコントローラは、前記自己診断プログラムの実行コマンドを受信した後に、前記アクセス権取得制御レジスタにアクセス権の設定がされないで、そのアクセス権の設定がされていない回路へのアクセスがあったときに、前記停止処理を実行することを特徴とする請求項３に記載のデータ処理方法。
【請求項５】
請求項１に記載のデータ処理装置を有するICカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ処理装置、データ処理方法及びICカードに関する。
【背景技術】
【０００２】
従来より、ICカード等から秘密情報を不正な手段により取得する技術がある。従って、ICカード等には、そのような不正な手段により内部の秘密情報を読み取られないようにする耐タンパ性が要求される。  
例えば、その不正な手段の一つにパータベーションアタックによる故障解析がある。故障解析は、電子回路に局所的にレーザを照射することにより、電子回路を誤動作させ、その誤動作の結果得られるデータを解析することによって、秘密情報を推定して得ようとするものである。
【０００３】
また、そのICカード等には、内部回路が正常に機能しているか否かを診断する自己診断機能が必要であり、その自己診断の方法には、ハードウエアによる方法と、ソフトウエアによる方法がある。ハードウエアによる方法は、自己診断のための回路が必要となるので、コスト、チップ面積等の面で問題がある。その点、ソフトウエアによる方法は、これらの問題はない。
【０００４】
しかし、自己診断プログラムは、通常処理とは別のプログラムである。そのため、パータベーションアタック等により、CPUが一方のプログラムを実行しているときに、他方のプログラムに突然ジャンプして、他方のプログラムの途中から処理が続行されるような状態が発生し得る。例えば、CPUの処理が、通常処理の実行の途中で、自己診断プログラムの実行に切り替わってしまう、という状態が発生し得る。CPUの通常処理中は、RAM等に秘密情報が書き込まれている場合もあり、その状態で診断プログラムの実行に切り替わると、いわゆるセキュリティホールが発生する場合がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１６３５３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
そこで、本実施形態は、自己診断プログラムを実行するデータ処理装置において耐タンパ性を向上したデータ処理装置、データ処理方法及びICカードを提供することを目的とする。
【課題を解決するための手段】
【０００７】
実施形態のデータ処理装置は、バスを介して接続された複数の回路を含むデータ処理装置であって、暗号処理に用いられる情報を格納する不揮発性メモリと、前記暗号処理を実行する暗号処理部と、制御部と、アクセス権取得制御レジスタと、設定回路と、バスコントローラとを有する。制御部は、前記複数の回路の少なくとも一部の自己診断を行う自己診断プログラムと、前記暗号処理部による前記暗号処理を含む処理プログラムとを実行可能であって、前記複数の回路内の各回路の動作の制御を行う。アクセス権取得制御レジスタは、有効及び無効の設定が可能であって、前記複数の回路の前記少なくとも一部へのアクセス権を設定するための複数のレジスタを含む。設定回路は、前記制御部により制御され、前記アクセス権取得制御レジスタを有効に設定する処理を実行する。バスコントローラは、前記バスを制御し、かつ前記アクセス権取得制御レジスタが前記有効に設定されないで前記複数の回路のいずれかに対するアクセス権の設定がされたときは、前記制御部の動作を停止する停止処理を実行する。
【図面の簡単な説明】
【０００８】
【図１】本実施形態に係るデータ処理装置の構成を示すブロック図である。
【図２】本実施形態に係わるアクセス権取得制御レジスタ１７の構成を示す図である。
【図３】本実施形態に係わるCPU１１の全体的な処理の流れを示すフローチャートである。
【図４】本実施形態に係わる自己診断モード設定処理の流れを示すフローチャートである。
【図５】本実施形態に係わる通常モード設定処理の流れを示すフローチャートである。
【図６】本実施形態に係わる、UARTの送信処理を実行するときのCPU１１の処理の流れの例を示すフローチャートである。
【図７】本実施形態に係わる、アクセス権設定要求があったときのバスコントローラ２２の処理の流れの例を示すフローチャートである。
【図８】本実施形態に係わる、レジスタへのアクセスがあったときのバスコントローラ２２の処理の流れの例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面を参照して実施形態を説明する。  
（構成）
まず、図１に基づき、本実施形態に係わるデータ処理装置の構成を説明する。図１は、本実施形態に係るデータ処理装置の構成を示すブロック図である。データ処理装置としては、例えば、ICカード、テレビジョン受像機等の暗号処理モジュールである。以下、データ処理装置を、ICカードを例として説明する。
【００１０】
ICカードの場合、ICカードは、セキュリティ機能を有し、クレジットカード、プリペイドカード（いわゆる電子マネー）、健康保険証、SIM Card、ID、住民基本台帳カードといったものがその例として挙げられる。ICカードは、外部のホストとの通信機能を有し、ホストとの通信用の端子を直接カードに接触させるものを接触型、ホストとの通信に電波を用いるものを非接触型と呼び、一般にこれら２つのタイプに分類されている。その通信を通じて、ICカードは、ホストとの間で、相互認証処理、カードによる情報処理（対象とする情報の暗号/復号を含む情報処理）、情報のカードへの記録といった処理を実行する。なお、テレビジョン受像機等の暗号処理モジュール等も、同様の機能を有する。
【００１１】
図１に示すように、ICカード１は、中央処理装置（以下、CPUという）１１、プログラムが記録されたROM１２、鍵情報等の秘密情報と、秘密情報以外のプログラム、データ等とが記録されたフラッシュメモリ１３、作業用記憶領域としてのRAM１４、暗号化及び復号化の処理を行う暗号処理部１５、外部のホスト（図示せず）との通信を行う通信処理部１６、アクセス権取得制御レジスタ１７、及びバス１８を含んで構成されている。ICカード１内の各回路は、バス１８を介して接続されている。
【００１２】
CPU１１は、ホストからのコマンドに応じて、通常処理と自己診断処理を実行可能である。通常処理は、ICカード１のユーザがクレジットカード、電子マネー等の所望の機能に応じた処理である。通常処理では、秘密情報である鍵情報がフラッシュメモリ１３から読み出されて、暗号化あるいは復号化の処理において使用される。
【００１３】
自己診断処理は、ICカード１の工場出荷時の検査、市場に出回った後の故障検査、等のときに実行される処理である。通常処理と自己診断処理のプログラムは、それぞれROM１２あるいはフラッシュメモリ１３に記憶されており、CPU１１は、ホストからのコマンドに応じて、いずれかの処理を実行する。  
なお、本実施形態では、CPU１１が、ICカード１内の各回路の動作を制御するが、CPU１１は、プログラムを実行可能なシーケンサ等の回路でもよい。
【００１４】
フラッシュメモリ１３は、秘密情報を記憶する所定の記憶領域１３ａ（斜線部）を含む。暗号処理が通常処理において実行され、その暗号処理において用いられる鍵情報は、不揮発性メモリであるフラッシュメモリ１３中の所定の記憶領域に格納されている。記憶領域１３ａは、保護がかけられた記憶領域であり、CPU１１により、保護をかけるあるいは保護を解除することが可能となっている。
【００１５】
自己診断プログラムは、ICカード内の回路、モジュール、レジスタ等（以下、これらをまとめて回路ともいう）の全てのあるいは一部の回路が正常に機能するかを検査して自己診断するプログラムであり、CPU１１が、通常処理において実行する操作手順あるいはコマンドを用いて、各回路の機能が検査される。自己診断プログラムは、種々のケースを想定した所定のコマンドを種々実行させて、得られた実行結果から、各回路が正常に動作するかを判定する。  
CPU１１は、自己診断プログラムと、暗号処理部１５による暗号処理を含む処理プログラムである通常処理プログラムと、を実行可能であり、ICカード１内の各回路の動作を制御する制御部である。
【００１６】
制御部としてのCPU１１は、通常処理及び自己診断処理時には、RAM１４を作業領域として用いながら、通常処理及び自己診断処理を実行する。特に、通常処理時には、通信処理部１６の通信を遮断した状態で、RAM１４に、例えばCPU１１により復号化された鍵情報が一時的に書き込まれ、その鍵情報を用いて暗号処理部１５が暗号処理を実行する。RAM１４に書き込まれた鍵情報は、秘密情報なので、使用後、CPU１１によって消去される。
【００１７】
また、CPU１１は、コプロセッサ２１を含む。コプロセッサ２１は、ハードウエアあるいはファームウエアであり、CPU１１からのコマンドに応じて、アクセス権取得制御レジスタ１７を有効に設定する処理を実行する設定回路である。すなわち、コプロセッサ２１は、CPU１１により制御され、アクセス権取得制御レジスタ１７を有効にする設定をする処理を実行する設定回路である。
【００１８】
暗号処理部１５は、鍵情報を用いて所定の暗号化及び復号化の暗号処理を実行する。上述したように、CPU１１は、通常処理時には、フラッシュメモリ１３の所定の記憶領域１３ａから鍵情報KEYを読み出してRAM１４に一時的に書き込み、暗号処理部１５の所定のレジスタに設定する。暗号処理部１５は、その鍵情報KEYを使用して暗号処理を実行し、暗号処理の結果データを、RAM１４の所定の領域に書き込む。
【００１９】
通常処理時には、鍵情報KEYが、RAM１４の所定の記憶領域に書かれ、暗号処理が終了すると消去あるいは削除される。自己診断プログラムの実行時には、鍵情報KEYは、RAM１４に書かれることはないが、パータベーションアタックにより通常処理の実行の途中で、プログラムが自己診断処理にジャンプして実行されると、鍵情報KEYがRAM１４に残ったままとなるので、鍵情報KEYは、外部へ漏洩する虞があることになる。
【００２０】
通信処理部１６は、ホストとの通信、例えば無線通信、を実行する回路であり、制御レジスタ、送信バッファ、受信バッファ等のレジスタ回路を含む。通信処理部１６は、通常処理時に暗号処理を実行するコマンドを外部から受信したときは、CPU１１によって無効化され、外部からのICカード１の内部へのアクセスができないようにされる。これは、通常処理時には、RAM１４に鍵情報が書き込まれるので、外部からの攻撃を受けないようにするためである。暗号処理が終了すると、通信処理部１６は、CPU１１によって有効化される。よって、CPU１１は、ホストからの要求により復号化あるいは暗号化された情報を、コマンドの実行結果として、通信処理部１６を介してホストへ送信可能となる。
【００２１】
アクセス権取得制御レジスタ１７は、アクセス権の設定を行うためのレジスタ群１７ａを含む。図２は、アクセス権取得制御レジスタ１７の構成を示す図である。  
図２に示すように、アクセス権取得制御レジスタ１７は、複数のレジスタを含む。アクセス権取得制御レジスタ１７は、ICカード１内の各回路へのアクセスを許可するか否か（あるいは禁止するか否か）の情報を設定すなわち格納するアクセス権設定用のレジスタ群１７ａと、アクセス権取得制御レジスタ１７を有効あるいは無効に設定するための情報を格納するレジスタ１７ｂとを含む。レジスタ群１７ａの各レジスタは、各回路と対応してアクセス権を設定するためのレジスタである。アクセス権取得制御レジスタ１７は、レジスタ１７ｂが有効に設定されると、アクセス権の設定を行うことができる。すなわち、アクセス権取得制御レジスタ１７は、有効及び無効の設定が可能であって、ICカード１内の少なくとも一部の回路へのアクセス権を設定するための複数のレジスタ１７ａを含む。
【００２２】
レジスタ１７ｂは、コプロセッサ２１のみが所定の情報を書き込むことができ、CPU１１はデータを読み出すことはできるが書き込むことができないレジスタである。すなわち、自己診断コマンドを受信すると、CPU１１は、特権モード下でコプロセッサ２１を動作させて、レジスタ１７ｂに所定の情報、例えばフラグ情報「１」を書き込む。
【００２３】
レジスタ１７ｂに所定の情報が書き込まれると、その所定の情報に応じて、アクセス権設定用のレジスタ群１７ａに対するデータの書き込み及び読み出しが可能となる。レジスタ１７ｂに所定の情報が書き込まれていないと、アクセス権設定用のレジスタ群１７ａに対するデータの書き込み及び読み出しが不可能となる。すなわち、レジスタ１７ｂは、アクセス権取得制御レジスタ１７を有効にするか無効にするかを制御するレジスタである。
【００２４】
バス１８は、CPU１１，ROM１２等の各回路を接続するバスである。バス１８は、バスコントローラ２２を含む。  
バスコントローラ２２は、バス１８に接続されたCPU１１、ROM１２等の回路間のデータの送受信を制御する。例えば、バスコントローラ２２は、各回路のレジスタへのアクセスを制御する。
【００２５】
特に、バスコントローラ２２は、後述するように、自己診断モード時、自己診断の対象である回路へのアクセス前に、その回路へのアクセス権の設定を受け付ける（図６）。そして、バスコントローラ２２は、そのアクセス権の設定が行われるときに、そのアクセス権の設定が適切な手順の下での設定であるか否かの判断を行う。さらに、バスコントローラ２２は、各回路のレジスタ等へのアクセスが、適切な手順の下で実行されているか否かを判定する。
【００２６】
具体的には、バスコントローラ２２は、バス１８を制御し、かつアクセス権取得制御レジスタ１７が有効に設定されないで、いずれかの回路に対するアクセス権の設定がされたときは、CPU１１の動作を強制的に停止する停止処理を実行する。さらに、バスコントローラ２２は、自己診断プログラムの実行コマンドを受信した後に、アクセス権取得制御レジスタ１７にアクセス権の設定がされないで、そのアクセス権の設定がされていない回路へのアクセスがあったときに、停止処理を実行する。
【００２７】
（動作）
次に、CPU１１の全体的な動作を説明する。  
図３は、CPU１１の全体的な処理の流れを示すフローチャートである。CPU１１は、ホストからコマンドを受信すると、コマンドの受信処理を実行する（ステップ（以下、Sと略す）1）。そして、CPU１１は、受信したコマンドが自己診断処理の実行を指示するコマンドであるか否かを判定する（S2）。
【００２８】
コマンドが自己診断処理の実行を指示するコマンドでない場合（S2:NO）、受信したコマンドの処理、すなわち通常処理を実行する（S3）。通常処理は、上述したように、ICカードのユーザがクレジットカード、電子マネー等の所望の機能に応じた処理である。  
コマンドが自己診断処理の実行を指示するコマンドである場合（S2:YES）、自己診断モード設定処理を実行する（S4）。自己診断モード設定処理は、図４に示す処理である。
【００２９】
図４は、自己診断モード設定処理の流れを示すフローチャートである。  
図４に示すように、CPU１１は、まず、所定の例外処理を実行するために所定のシステムコールを発行する（S11）。この結果、CPU１１の処理は、いわゆる特権モード下での処理となる。
【００３０】
CPU１１は、所定のシステムコールに対応するシステムコールハンドラを実行し（S12）、コプロセッサ２１に対する所定の設定を実行する（S13）。この設定は、CPU１１の動作モードを、通常処理を実行する通常モードから自己診断プログラムを実行する自己診断モードへ変更して、自己診断プログラムが適切な手順の下で実行できるようにするための設定である。
【００３１】
コプロセッサ２１は、その所定の設定がされると、所定の機能を実行する。具体的には、コプロセッサ２１は、上記の所定の設定がされると、アクセス権取得制御レジスタ１７内のレジスタ１７ｂに、所定の情報を、例えばフラグ「１」を、書き込む処理を実行する。このレジスタ１７ｂへの所定の情報の書き込みは、上述したように、コプロセッサ２１のみが行うことができ、CPU１１は行うことができない。
【００３２】
レジスタ１７ｂに所定の情報が、ここではフラグ「１」が書き込まれると、アクセス権取得制御レジスタ１７ａが使用可能になる。また、レジスタ１７ｂにフラグ「１」が書き込まれているということは、CPU１１の動作モードは、自己診断モードとなる。
【００３３】
レジスタ１７ｂに書かれた所定の情報は、この例外処理においてCPU１１によりRAM１４の所定の記憶領域に書かれる。その結果、CPU１１及びバスコントローラ２２は、そのRAM１４に書かれた所定の情報を参照することによって、CPU１１の動作モードが自己診断モードにあるいか否かを判定することができる。
【００３４】
図３に戻り、CPU１１は、S4の後に、自己診断処理プログラムを実行する自己診断コマンド処理を実行する（S5）。自己診断処理は、上述したように、通常処理において実行される操作手順あるいはコマンドがCPU１１により実行されて各回路の機能を検査し、得られた実行結果から、各回路が正常に動作したかを判定する処理を実行する。レジスタ１７ｂには所定の情報が書き込まれているのでアクセス権取得制御レジスタ１７は有効となっている。CPU１１は、各回路へのアクセスを行う前に、アクセス権取得制御レジスタ１７の対応するレジスタ１７ａに所定の情報を設定することができる。よって、CPU１１は、自己診断プログラムの実行時は、アクセスしようとする回路に対応するレジスタ１７ａの設定をした後に、その回路へのデータの書き込み等のアクセスを行う。
【００３５】
すなわち、CPU１１は、自己診断プログラムを実行する前に、コプロセッサ２１を利用してアクセス権取得制御レジスタ１７を有効にする。そして、CPU１１は、自己診断モードにおいて、アクセスしようとする回路に対応するレジスタ１７ａにアクセス権を設定した後に、その回路へのアクセスを行う。自己診断モードにおいて、診断対象回路へのアクセス権を取得すなわち設定しないで、診断対象回路へのアクセスを行うことは、自己診断プログラムは、適切な手順の下で実行されていないことを意味する。
【００３６】
自己診断コマンド処理（S5）が終了すると、CPU１１は、通常モード設定処理を実行する（S6）。通常モード設定処理は、図５に示す処理である。  
図５は、通常モード設定処理の流れを示すフローチャートである。  
図５に示すように、CPU１１は、まずシステムコールを発行する（S21）。この結果、CPU１１の処理は、いわゆる特権モード下での処理となる。
【００３７】
CPU１１は、システムコールハンドラを実行し（S22）、コプロセッサ２１に対する所定の設定を実行する（S23）。この設定は、CPU１１を、自己診断プログラムを実行する自己診断モードから通常処理を実行する通常モードへ変更する設定である。その結果、CPU１１は、通常モードとなる。
【００３８】
このとき、コプロセッサ２１は、アクセス権取得制御レジスタ１７内のレジスタ１７ｂに、所定の情報を、例えばフラグ「０」を、書き込む。コプロセッサ２１のみが、この所定の情報の書き込みをすることができる。レジスタ１７ｂにフラグ「０」が書き込まれているということは、通常処理のモードにあることを意味する。
【００３９】
以上のように、CPU１１は、自己診断コマンドを受信すると、コプロセッサ２１に、アクセス権取得制御レジスタ１７を使用可能状態にさせる処理を実行させる。そのアクセス権取得制御レジスタ１７が使用可能状態であるか否かは、レジスタ１７ｂのデータにより制御される。例えば、レジスタ１７ｂが「１」であれば、アクセス権取得制御レジスタ１７は使用可能状態すなわち有効であり、レジスタ１７ｂが「０」であれば、アクセス権取得制御レジスタ１７は使用可能状態にないすなわち無効である。
【００４０】
（CPUの動作）
次に、CPU１１の動作例を説明する。自己診断処理は、CPU１１が自己診断プログラムを実行することによって行われる。自己診断プログラムは、ROM１２あるいはフラッシュメモリ１３に格納されており、自己診断コマンドを受信すると、CPU１１はROM１２あるいはフラッシュメモリ１３から自己診断プログラムを読み出して実行する。自己診断プログラムは、通常処理において用いられるコマンドを利用して種々の実行パターンを実行させながら、ICカード１内の各回路が正しく動作するか否かの検査を行い、その実行結果を生成してRAM１４に書き込む処理を行う。その書き込まれた実行結果のデータは、各回路の正常あるいは異常を示す。
【００４１】
上述したように、自己診断プログラムの場合、各回路にアクセスするとき、CPU１１によって自己診断対象の回路へのアクセス権の設定がされた後に、その回路へのアクセス、例えばデータの設定が行われる。これに対して、通常処理プログラムは、CPU１１によって各回路へのアクセス権の取得は行われずに、各回路へのアクセスが行われる。
【００４２】
以下、CPU１１の動作を、ICカード１に含まれる複数の回路の中で、通信処理部１６の送信処理の回路の例に説明する。通信処理部１６は、ここではUARTであり、UART内の各レジスタ等にデータを設定する処理プログラムは、自己診断処理プログラムにも、通常処理プログラムにも含まれる。ここでは、通信処理部１６の回路に対するアクセスの例を説明するが、他の回路についても同様であるので、説明は省略する。
【００４３】
図６は、UARTの送信処理を実行するときのCPU１１の処理の流れの例を示すフローチャートである。図６の処理は、CPU１１が、UARTに対する送信コマンドを実行するときの処理である。
【００４４】
CPU１１は、UARTに対する送信コマンドを実行するとき、動作モードが自己診断モードであるか否かを判定する（S31）。この判定は、CPU１１が、自己診断モードであるか否かの情報を記憶するRAM１４の所定の記憶領域を参照することによって行われる。  
なお、自己診断モードであるか否かの情報は、実行コマンドの関数の引数やその関数から参照可能なグローバル変数、に含ませるようにしてもよい。
【００４５】
自己診断モードの場合（S31:YES）、CPU１１は、UARTの送信処理関連のレジスタ群へのアクセス権を設定する処理を実行する（S32）。この処理は、CPU１１が、アクセス権取得制御レジスタ１７内のUARTの送信処理関連のレジスタ群に対応するアクセス権設定レジスタrUARTに所定の情報を、例えば、フラグ「１」を、設定する処理である。図２において、UARTの送信処理関連のレジスタ群へのアクセス権設定レジスタであるレジスタrUARTに、「１」が書き込まれる。
【００４６】
なお、ここでは、UARTの送信処理関連のレジスタ群に対して、１つのアクセス権設定レジスタrUARTを設けているが、そのレジスタ群内のレジスタ毎に、アクセス権設定レジスタを設けてもよい。
【００４７】
動作モードが自己診断モードでない場合（S31:NO）、及びS32の処理の後、CPU１１は、UARTに送受信処理の実行を禁止させるために、UART内のUART制御レジスタにデータの送受信の禁止を指示する情報を設定するUART制御レジスタ設定処理を実行する（S33）。その結果、UARTは、送受信が禁止された状態となる。
【００４８】
次に、CPU１１は、RAM１２中にある送信データの先頭アドレスを設定するレジスタに、その送信データの先頭アドレスを設定する送信バッファ設定処理を実行する（S34）。  
さらに、CPU１１は、RAM１２中にある送信データの送信データのデータサイズを設定するレジスタに、その送信データのサイズを設定する送信データサイズ設定処理を実行する（S35）。
【００４９】
そして、CPU１１は、UARTに送受信処理の実行をさせるために、UART内のUART制御レジスタに送受信禁止状態から、送信処理開始の状態に変更するための情報を設定するUART制御レジスタ設定処理を実行する（S36）。  
以上のようにして、CPU１１によるUARTの送信処理が実行される。
【００５０】
以上のように、CPU１１は、いずれかの回路に対するアクセス命令があった場合に、その前に、自己診断プログラムの実行コマンドを受信した場合は、その回路についてのアクセス権の設定をアクセス権取得制御レジスタ１７に行い、自己診断プログラムの実行コマンドを受信していない場合は、その回路についてのアクセス権の設定を行わない。
【００５１】
アクセス権の設定は、バス１８を介して自己診断モード時のみ実行される。よって、自己診断時にアクセス権設定要求があると、バスコントローラ２２は、そのアクセス権設定要求は、自己診断モード時に要求されているものであるときは、そのアクセス権設定を許可する所定の情報の書き込みを許可する。しかし、バスコントローラ２２は、そのアクセス権設定要求が自己診断モード時に要求されているものでないときは、所謂ミュート処理、すなわちシステムを強制的に停止する処理を実行する。これは、プログラムの実行処理が、通常処理中に自己診断処理へ突然ジャンプした可能性があるからである。
【００５２】
（バスコントローラの動作）
図７は、アクセス権設定要求があったときのバスコントローラ２２の処理の流れの例を示すフローチャートである。図７の処理は、CPU１１からアクセス権設定要求、すなわち、アクセス権を設定するためのレジスタ１７ａへの書き込み要求があったときに実行される。なお、ここでは、この処理は、フローチャートで示しているが、ハードウエア回路で実現される。
【００５３】
まず、バスコントローラ２２は、何らかのアクセス権設定要求があると、そのときの動作モードが自己診断モードであるか否かを判定する（S41）。この判定は、バスコントローラ２２がレジスタ１７ｂを参照することによって、行われる。
【００５４】
自己診断モードの場合（S41:YES）、バスコントローラ２２は、要求されたアクセス権設定のための所定の設定を行う（S42）。例えば、通信処理部１６の各レジスタに対するアクセス権設定要求であれば、バスコントローラ２２は、通信処理部１６の各レジスタに対応するレジスタ１７ａに対応するアクセス権設定レジスタrUARTに、所定の情報、例えば「１」を設定する。
【００５５】
また、自己診断モードでない場合（S41:NO）、バスコントローラ２２は、CPU１１の動作を強制的に停止する停止処理を含むミュート処理を実行して（S43）、ICカード１のシステムの動作を停止させる。
【００５６】
従って、アクセス権設定要求が、自己診断モードが適切に設定されてから、実行された場合には、アクセス権の設定処理が行われる。しかし、アクセス権設定要求が、自己診断モードが適切に設定されていないにも拘わらず、実行されようとする場合には、パータベーションアタック等により異常状態が発生している可能性があるので、ICカード１の動作を停止するように、バスコントローラ２２は制御する。これにより、例えば、悪意のあるパータべーションアタックによる故障解析に対してICカードのシステムを停止させて、セキュリティを確保することができる。
【００５７】
次に、各回路へのアクセスがあったときの処理について説明する。
【００５８】
バスコントローラ２２は、各回路の１又は２以上のレジスタへのアクセスがあったときに、自己診断モードであって、かつそのアクセスしようとするレジスタへのアクセス権がある場合にのみ、そのレジスタへのアクセスを実行する。バスコントローラ２２は、各回路の１又は２以上のレジスタへのアクセスがあったときに、自己診断モードでないときは、そのレジスタへのアクセスを実行する。しかし、バスコントローラ２２は、各回路の１又は２以上のレジスタへのアクセスがあったときに、自己診断モードであっても、そのアクセスしようとするレジスタへのアクセス権がない場合には、ミュート処理を実行させる。
【００５９】
図８は、レジスタへのアクセスがあったときのバスコントローラ２２の処理の流れの例を示すフローチャートである。図８の処理は、レジスタへのアクセスがあったときに実行される。なお、ここでは、この処理は、フローチャートで示しているが、ハードウエア回路で実現される。
【００６０】
あるレジスタへのアクセスがあると、バスコントローラ２２は、動作モードが自己診断モードであるか否かを判定する（S51）。この判定は、S41と同様の処理により行われる。
【００６１】
そして、自己診断モードの場合（S51:YES）、バスコントローラ２２は、そのアクセスしようとするレジスタに対してアクセス権が設定されているか否かを判定する（S52）。アクセス権が設定されている場合（S52:YES）、バスコントローラ２２は、レジスタアクセスを実行する（S53）。
【００６２】
自己診断モードでない場合（S51:NO）、通常処理のレジスタアクセスであるので、処理は、S53へ移行する。
【００６３】
自己診断モードであって、アクセス権が設定されていない場合（S52:NO）、バスコントローラ２２は、ミュート処理を実行して（S54）、ICカード１のシステムの動作を停止させる。
【００６４】
従って、バスコントローラ２２は、アクセス要求があったときに、自己診断モードであってアクセス権が設定されていれば、要求されたレジスタへのアクセスを行う。バスコントローラ２２は、アクセス要求があったときに、自己診断モードであってもアクセス権が設定されていなければ、パータベーションアタック等により異常状態が発生している可能性があるので、ICカード１の動作を停止するように、バスコントローラ２２は制御する。これにより、例えば、悪意のあるパータべーションアタックによる故障解析に対してICカードのシステムを停止させて、セキュリティを確保することができる。
【００６５】
以上のように、上述した実施形態によれば、自己診断プログラムを実行するデータ処理装置において耐タンパ性を向上したデータ処理装置を提供することができる。
【００６６】
以上は、ICカードを例に説明したが、テレビ受像機、放送番組を記録するレコーダ等に内蔵された暗号処理回路においても、適用可能である。例えば、テレビ受像機であれば、デジタル放送の記録等において暗号処理が、専用の回路、モジュール等において実行されるので、そのような専用の回路、モジュール等が、図１に示すデータ処理装置となる。
【００６７】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【符号の説明】
【００６８】
１  ICカード、１１  CPU、１２  ROM、１３  フラッシュメモリ、１４  RAM、１５暗号処理部、１６  通信処理部、１７  アクセス権取得制御レジスタ、１７ａ  アクセス権設定レジスタ、１７ｂ  有効化レジスタ、１８  バス、２１  コプロセッサ、２２  バスコントローラ
【図１】
2012022627.tif 000003
【図２】
2012022627.tif 000004
【図３】
2012022627.tif 000005
【図４】
2012022627.tif 000006
【図５】
2012022627.tif 000007
【図６】
2012022627.tif 000008
【図７】
2012022627.tif 000009
【図８】
2012022627.tif 000010