(57)【要約】【課題】実施形態は、データの入出力を遮断するための所定の信号を入力するためのピンを半導体チップに設けることなく、かつ別のプロセッサを半導体チップに内蔵することもなく、内部の秘密情報の漏洩を防止することができるプロセッサ及び半導体装置を提供することを目的とする。【解決手段】CPU２は、JTAG-I/F４からのデータの入力及びJTAG-I/F４へのデータの出力を制御するアドレスデコーダ２３と、入力されたパスワードと所定のキーとを用いて所定の認証処理を実行し、認証された場合に所定の認証信号を出力する認証ユニット２６と、所定の認証信号の有無に応じて、出力すべきデータのJTAG-I/F４への出力を制御するセレクタ２４と、を有する。【選択図】図１
2012118884.tif 000002
【特許請求の範囲】
【請求項１】
内部回路通信用インターフェース部からのデータの入力及び前記内部回路通信用インターフェース部へのデータの出力を制御する入出力制御部と、
入力されたパスワードと所定のキーとを用いて所定の認証処理を実行し、認証された場合に所定の認証信号を出力する認証処理部と、
前記所定の認証信号の有無に応じて、前記出力すべきデータの前記内部回路通信用インターフェース部への出力を制御する出力制御部と、
を有することを特徴とするプロセッサ。
【請求項２】
前記出力制御部は、前記所定の認証信号が出力されない場合、前記出力すべきデータの前記内部回路通信用インターフェース部への出力を禁止して、所定のデータを出力することを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記所定のデータは、固定データであることを特徴とする請求項２に記載のプロセッサ。
【請求項４】
前記所定のデータは、前記出力すべきデータとは異なるデータを生成するデータ生成部の生成データであることを特徴とする請求項２に記載のプロセッサ。
【請求項５】
プロセッサの内部回路通信用インターフェース部と、
前記内部回路通信用インターフェース部からのデータの入力及び前記内部回路通信用インターフェース部へのデータの出力を制御する入出力制御部、入力されたパスワードと所定のキーとを用いて所定の認証処理を実行し、認証された場合に所定の認証信号を出力する認証処理部、及び、前記所定の認証信号の有無に応じて、前記出力すべきデータの前記内部回路通信用インターフェース部への出力を制御する出力制御部を有するプロセッサと
を有することを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、プロセッサ及び半導体装置に関する。
【背景技術】
【０００２】
従来より、パーソナルコンピュータ（以下、PCという）やエンジニアリングワークステーション（以下、EWSという）上で動作するデバッグプログラム、すなわちデバッガ、を利用して、マイクロプロセッサ等の動作を制御し、そのマイクロプロセッサの動作状態の監視、プログラムあるいはメモリの内容の参照及び修正、等が行われている。
【０００３】
例えば、デバッグプログラムが動作するPCやEWSを、JTAG（Joint Test Action Group） ICE（インサーキット・エミュレータ）を介して、マイクロプロセッサを内蔵するSoC（System On Chip）に接続する。そして、ソフトウェアの開発や不具合解析を行なうオペレータが、PCやEWSのデバッグプログラム上でSoC内のマイクロプロセッサに対する操作を行なうと、その内容は、JTAG-ICEを介してSoC 内の JTAGインターフェース（I/F）に伝達される。JTAG I/Fは、オペレータの操作を、マイクロプロセッサに対してのデバッグのための割り込み要求（以下、デバッグ割り込み要求という）と、オペレータがデバッグのために意図するマイクロプロセッサの動作を実現する割り込みハンドラ（以下、デバッグ割り込みハンドラという）の提供とデータの入出力という動作に変換する。このようなSoCに内蔵されている、内部回路通信用インターフェースとしてのJTAGI/Fを利用すると、マイクロプロセッサの動作状況やメモリの内容等を容易に把握することが可能となる。よって、このような手法は、SoC及びプログラムの開発、不具合解析等にきわめて有用である。
【０００４】
一方で、このような手法を用いると、SoC等の半導体装置の開発終了後、半導体装置が市場に出回った後でも、マイクロプロセッサ内の秘匿性の高いプログラム、秘匿性の高いデータ等の秘密情報の読み出しが可能となってしまうという虞がある。  
そこで、半導体装置の開発の終了後、秘匿性の高い処理が半導体装置のマイクロプロセッサのプログラムで実行される場合、JTAGI/Fを通しての秘密情報の漏洩を防ぐために、プログラムや処理データを保護するための機構が半導体装置内に必要であった。例えば、外部からの所定の信号に応じてデータの入出力を遮断する回路をSoC内に設けたり、別のプロセッサをSoCに設けJTAGI/Fとの接続を制御させたり、JTAG I/F とプロセッサの接続を制御するための装置をJTAG I/Fに接続する等の方法が、秘密情報の保護のために、提案されている。
【０００５】
しかし、外部からの所定の信号の入出力のためのピンを半導体チップに設けたり、別のマイクロプロセッサをJTAGI/Fとの接続制御のためだけに設けることは、半導体装置のコストの増大、チップサイズの大型化に繋がるという問題がある。また、JTAG I/Fとプロセッサの接続制御装置の操作をJTAG I/Fの操作で直接行なうことは、セキュリティ上の問題や、悪意のある者による解析の対象になりやすいという問題がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１６５５３４号公報
【特許文献２】特開２００７−９４６３２号公報
【特許文献３】特開２００２−３５８１３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
そこで、実施形態は、データの入出力を遮断するための所定の信号を入力するためのピンを半導体チップに設けることなく、かつ別のプロセッサを半導体チップに内蔵することもなく、内部の秘密情報の漏洩を防止することができるプロセッサ及び半導体装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
実施形態によれば、内部回路通信用インターフェース部からのデータの入力及び前記内部回路通信用インターフェース部へのデータの出力を制御する入出力制御部を有するプロセッサにおいて、入力されたパスワードと所定のキーとを用いて所定の認証処理を実行し、認証された場合に所定の認証信号を出力する認証処理部と、前記所定の認証信号の有無に応じて、前記出力すべきデータの前記内部回路通信用インターフェース部への出力を制御する出力制御部と、を有するプロセッサが提供される。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係わる、SoCを含むデバッグシステムの構成を説明するためのブロック図である。
【図２】第１の実施形態に係わる、認証ユニット２６の構成を示すブロック図である。
【図３】第１の実施形態に係わる、デバッガ１３の起動時のPC１１の処理の流れを示すフローチャートである。
【図４】第１の実施形態に係わる、デバッグ割り込みハンドラの処理の流れの例を示すフローチャートである。
【図５】第１の実施形態に係わる、認証がされなかった場合に、得られるデータの例を説明するための図である。
【図６】第２の実施形態に係わる、SoCを含むデバッグシステムの構成を説明するためのブロック図である。
【図７】第２の実施形態に係わる、無効データ生成ユニット５１の構成を示すブロック図である。
【図８】第２の実施形態に係わる、認証がされなかった場合に、得られるデータの例を説明するための図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して実施形態を説明する。  
（第１の実施形態）
（構成）
まず、図１に基づき、本実施形態に係わるデバッグシステムの構成を説明する。図１は、本実施形態に係るSoCを含むデバッグシステムの構成を説明するためのブロック図である。
【００１１】
半導体装置である１チップのSoC１は、マイクロプロセッサとしてのCPU２と、DRAM等のメインメモリ３と、内部回路通信用インターフェースとしてのJTAGI/F４とを含んで構成されている。CPU２とメインメモリ３は、バス５を介してデータの送受信が互いに可能に接続されている。
【００１２】
SoC１は、PC（あるいはEWS）１１及びJTAG-ICE１２を含むデバッグ装置に、接続可能となっており、図１では、JTAG-ICE１２を介してPC１１に接続されている。PC１１とJTAG-ICE１２は、USB等のケーブルで接続されている。PC１１は、デバッグプログラムであるデバッガ１３を有している。PC１１は、図示しないキーボード、マウスなどの入力装置とモニタを有し、ユーザからのGUIを介する指示に基づいて、SoC１をデバッグするためのデバッガ１３を実行可能に構成されている。
【００１３】
SoC１のCPU２は、ALU等の演算ユニットを含む実行ユニット２１、複数の汎用レジスタ及び複数の制御レジスタを含むレジスタ群２２、アドレスデコーダ２３、命令フェッチユニット３５及びロードストアユニット２５を含むプロセッサである。実行ユニット２１は、レジスタ群２２を用いながら、命令フェッチユニット３５により読み出した命令をデコードして、プログラムの実行を行う。  
実行ユニット２１が実行する通常のプログラム及びデータは、メインメモリ３内に存在する。よって、アドレスデコーダ２３は、実行ユニット２１により指定されたアドレスへのアクセスを制御し、通常のプログラムの命令列をフェッチするときは、メインメモリ３へアクセスする。しかし、実行ユニット２１がデバッグ割り込みハンドラの命令列をフェッチするときは、その命令列の先頭アドレスは、JTAGI/F４内のデバッグ用コード記憶部４１にあるので、アドレスデコーダ２３は、JTAGI/F４へのアクセスを行うように、アクセス先の切り換えを行う。データの書き込み要求があったときも、アドレスデコーダ２３は、アドレスに応じて、同様にアクセス先を切り換える。すなわち、アドレスデコーダ２３は、JTAGI/F４からのデータの入力及びJTAGI/F４へのデータの出力を制御する入出力制御部を構成する。
【００１４】
内部回路通信用インターフェースとしてのJTAGI/F４は、シリアル通信を用いて、半導体チップ内部に設けられたテスト用の回路にアクセスし、そのチップの端子の状態を操作したり、チップの内部回路との通信をするためのインターフェースである。
【００１５】
JTAGI/F４は、レジスタ４１を有する。レジスタ４１には、オペレータが入力した各種コマンドに対応するコードが入力される。さらに、JTAGI/F４は、デバッグ用コード部４２と、デバッグ用ワーク部４３とを含む。デバッグ用コード部４２には、デバッガ１３からのデバッグ割り込みハンドラの命令列、すなわちデバッグ割り込み処理プログラム、がストアされる記憶領域である。デバッグ用コード部４２は、デバッグ割り込み信号に対応するデバッグ割り込み処理プログラムを記憶するデバッグ割り込み処理プログラム記憶部である。デバッグ用ワーク部４３は、デバッグ用ワーク領域として利用される記憶領域である。
【００１６】
JTAGI/F４は、レジスタ４１に所定のコードが設定されると、デバッグ割り込み信号IRをCPU２へ出力する。  
実行ユニット２１は、例えばパルス信号であるデバッグ割り込み信号IRを受信すると、命令フェッチユニット３５を介して、割り込みハンドラの命令列のエントリーアドレスである所定のアドレスからデータを読み出して実行する。そのエントリーアドレスのデータは、JTAGI/F４のデバッグ用コード部４２に記憶されているので、アドレスデコーダ２３は、そのエントリーアドレスへのアクセスがあると、JTAGI/F４にアクセスしてデバッグ割り込みハンドラの命令列を読み出す。
【００１７】
実行ユニット２１は、JTAGI/F４のデバッグ用コード部４２から読み出されたデバッグ割り込みハンドラの命令列を実行し、その実行結果を、JTAGI/F４の所定のレジスタ（図示せず）へ出力する。その実行結果の情報は、JTAG-ICE１２を介して、デバッガ１３により読み出し可能であり、デバッガ１３は、その実行結果の情報を、GUIを介して、モニタに表示して、ユーザに知らしめることが可能である。
【００１８】
ロードストアユニット２５は、実行ユニット２１からメインメモリ３あるいはJTAGI/F４へのデータのストア、及びメインメモリ３あるいはJTAGI/F４から実行ユニット２１へのデータのロードを行うハードウェア回路である。
【００１９】
CPU２は、認証ユニット２６、認証キー部２７及びバスブリッジ２８を、さらに含む。後述するように、デバッグ割り込みハンドラの実行により、パスワードPWが、認証ユニット２６に供給される。認証ユニット２６は、その供給されたパスワードと、認証キー部２７にストアされている所定のキーPKとに基づいて、所定の認証処理を行うハードウェア回路である。供給されたパスワードPWと、認証キー部２７にストアされている所定のキーPKとを用いた所定の認証演算により、所定の結果が得られると、認証ユニット２６は、認証信号として選択信号SSを出力する。よって、認証処理部である認証ユニット２６は、入力されたパスワードPWと所定のキーPKとを用いて所定の認証処理を実行し、認証された場合に所定の認証信号を出力する。
【００２０】
認証キー部２７には、所定のキーPKのデータが設定されており、認証ユニット２６により読み出し可能なハードウェア回路である。
【００２１】
バスブリッジ２８は、上記のアドレスデコーダ２３と、セレクタ２４を含んで構成されている。バスブリッジ２８は、CPU２と、SoC１内のバス５とJTAGI/F４との間のインターフェースであり、セレクタ２４は、JTAGI/F４との間に設けられている。
【００２２】
アドレスデコーダ２３は、JTAGI/F４との間でのデータの入出力を制御する入出力制御部であり、ロードストアユニット２５によってロード及びストアするデータのアドレスに応じて、メインメモリ３とJTAGI/F４へのアクセスを切り換える。  
セレクタ２４は、選択信号SSの有無に応じて、出力すべきデータのJTAGI/F４への出力を制御する出力制御部である。具体的には、セレクタ２４は、出力すべきデータと所定のデータのいずれかを選択する。セレクタ２４は、アドレスデコーダ２３からJTAGI/F４への出力線の途中にのみ、設けられており、JTAGI/F４からの入力線及びデバッグ割り込み入力線には、セレクタは、設けられていない。すなわち、セレクタ２４は、JTAGI/F４へのデータの出力だけを制御する出力制御部を構成する。
【００２３】
セレクタ２４は、通常、アドレスデコーダ２３からの出力データを遮断し、所定のデータとして無効データを選択して出力する。無効データは、例えばハードウェア回路により設定されて生成される、固定データ、ここでは「0」、である。しかし、セレクタ２４は、選択信号SSを受信すると、アドレスデコーダ２３の出力を選択して、出力するように構成されている。すなわち、セレクタ２４は、所定の認証信号である選択信号SSが出力されないときは、出力すべきデータのJTAGI/F４への出力を禁止する。そして、セレクタ２４は、選択信号SSが出力されたときは、出力すべきデータをJTAGI/F４へ出力するように、出力すべきデータの出力を制御する。
【００２４】
よって、パスワードPWが適切に認証されると、セレクタ２４は、アドレスデコーダ２３の出力を選択するので、CPU２の情報は、JTAGI/F４を介して、デバッガ１３に供給可能となる。そして、選択信号SSが出力されていない場合は、セレクタ２４は、出力すべきデータのJTAGI/F４への出力を禁止して、所定のデータを出力する。
【００２５】
後述するように、デバッグコマンドの処理が終了して、認証解除処理が実行されると、セレクタ２４は、無効データの出力を選択するように切り替わるので、CPU２とJTAGI/F４の間は、遮断状態となり、CPU２の情報のデバッガ１３への供給はできなくなる。
【００２６】
図２は、認証ユニット２６の構成を示すブロック図である。  
認証ユニット２６は、パスワード入力用レジスタ３１、認証演算器３２、期待値レジスタ３３及び比較器３４を含んで構成されている。
【００２７】
パスワード入力用レジスタ３１には、後述するように、デバッグ割り込みハンドラの実行において、実行ユニット２１からパスワードPWが入力されて保持される。パスワード入力用レジスタ３１は、CPU２の実行ユニット２１がアクセスできるアドレス空間上に配置されている。期待値レジスタ３３には、所定の期待値EVがストアされている。  
認証演算器３２には、パスワード入力用レジスタ３１のパスワードPWと、認証キー部２７からの認証キーPKの２つのデータが入力される。認証演算器３２は、所定の認証演算を行う。その所定の認証演算は、ハードウェア回路により行うようにしてもよいし、実行ユニット２１が実行するプログラムであってもよい。所定の認証演算の演算結果ORが、比較器３４の２つの入力の一方に入力され、期待値レジスタ３３の期待値EVが、比較器３４の２つの入力の他方に入力される。  
比較器３４は、演算結果ORと期待値EVの２つデータと比較し、一致すると、認証信号としての選択信号SSを、セレクタ２４へ供給する。
【００２８】
（動作）
次に、上述したデバッグシステムの処理を説明する。  
図３は、デバッガ１３の起動時のPC１１の処理の流れを示すフローチャートである。
【００２９】
PC１１において、ユーザがデバッガ１３の起動を指示すると、PC１１は、デバッガ１３を起動する（S1）。  
そして、PC１１は、GUIを介してユーザにパスワードPWの入力を促し、パスワード入力処理を実行する（S2）。パスワードPWは、PC１１中のRAMあるいはレジスタ等の一時記憶の記憶領域に保持される。このデータは、デバッガ１３の処理が終了すると、消去される。パスワードPWの入力処理は、例えばユーザのログイン時の処理であってもよい。
【００３０】
パスワードPWが入力されると、PC１１は、パスワードPWを、JTAGI/F４のデバッグ用ワーク部４３内の所定の記憶領域に書き込む。  
その後、PC１１は、デバッガ１３によるデバッグ処理を実行する（S4）。デバッグ処理においては、ユーザは、SoC１に対して、所定のプログラムの実行、実行途中でのブレイク、ステップ実行、等のデバッグコマンド（以下、単にコマンドともいう）を指示することができる。
【００３１】
例えば、デバッガの処理は、SoC１内でデバッグ対象のプログラムの実行中に行われ、そのプログラムの検査者であるユーザは、そのプログラムの実行中に、PC１１に所望のコマンドを入力する。入力されたコマンドは、JTAG-ICE１２を介して、JTAGI/F４のレジスタ４１に入力される。  
その入力されたコマンドに対応するコードがJTAGI/F４のレジスタ４１に入力されると、JTAGI/F４は、デバッグ割り込み信号IRを実行ユニット２１に供給する。
【００３２】
実行ユニット２１は、JTAGI/F４からデバッグ割り込み信号IRを受信すると、実行中の処理を中断し、命令フェッチユニット３５を介して、JTAGI/F４のデバッグ用コード部４２からデバッグ割り込みハンドラ（プログラム）を読み出して実行する。
【００３３】
図４は、そのようなコマンドが入力されたときのデバッグ割り込みハンドラの処理の流れの例を示すフローチャートである。デバッグ割り込みハンドラは、デバッガ１３により、デバッグ用コード部４２に転送されて格納される。
【００３４】
デバッグ割り込みハンドラのプログラムは、デバッグ割り込み信号IRの元となった、入力されたコマンドに対応する命令列を含むコマンド実行部（S14〜S16）と、そのコマンド実行の前に認証ユニット２６に所定の認証処理を実行させるための命令列を含む認証実行指示部（S11〜S13）を含む。実行ユニット２１は、認証実行指示部の処理を行って、その後にコマンド実行部の処理を実行する。すなわち、実行ユニット２１は、デバッグ割り込み信号を受信すると、デバッグ用コード部４２からデバッグ割り込み処理プログラムを読み出して、認証ユニット２６に対して所定の認証処理の実行をさせた後に、コマンド実行部の処理を実行する。
【００３５】
まず、実行ユニット２１は、その認証実行指示部の処理として、上記のS3でデバッグ用ワーク部４３に書き込まれたパスワードPWを、そのデバッグ用ワーク部４３から読み出す（S11）。  
そして、実行ユニット２１は、読み出したパスワードPWを、認証ユニット２６のパスワード入力レジスタ３１に設定し（S12）、所定の時間Tpだけ待つ（S13）。
【００３６】
CPU２は、デバッグ割り込み信号IRを受信すると、認証実行指示部の処理により、認証ユニット２６による所定の認証処理を実行する。そして、ユーザが入力したパスワードPWが認証ユニット２６に入力されると、認証ユニット２６の認証演算器３２は、パスワードPWと所定キーPKとを用いて所定の認証演算を実行する。演算結果ORと期待値EVが一致すると、比較器３４は、選択信号SSをセレクタ２４に供給する。所定の時間Tpは、この認証演算に係る時間を考慮して設定される。
【００３７】
以上の認証実行指示部の処理が終了すると、実行ユニット２１は、コマンド実行部の処理を実行する。すなわち、ユーザの入力したコマンドに対応する命令列の読み出しが行われ（S14）、実行ユニット２１は、その読み出した命令列を実行する（S15）。
【００３８】
例えば、入力されたコマンドが、SoC１内のあるレジスタからデータを読み出して、JTAGI/F４の所定のレジスタに格納するというコマンドである場合、実行ユニット２１は、そのコマンドに対応する命令列を実行して、読み出したデータを、JTAGI/F４の所定のレジスタへ出力する。
【００３９】
CPU２からJTAGI/F４へのデータの出力は、セレクタ２４を介して行われる。よって、選択信号SSがセレクタ２４に供給されていれば、セレクタ２４は、アドレスデコーダ２３の出力を選択して出力する。よって、CPU２のデータがJTAGI/F４に出力される。
【００４０】
しかし、認証ユニット２６により認証されなかったときは、選択信号SSは出力されないので、セレクタ２４は、無効データを選択してJTAGI/F４に出力する。  
図５は、認証がされなかった場合に、得られるデータの例を説明するための図である。ここでは、無効データは「0」である。図５は、メモリダンプの出力あるいは表示の例D1、命令を逆アセンブルしたときの出力あるいは表示の例D2、汎用レジスタの出力あるいは表示の例D3を含んでいる。
【００４１】
ユーザが正しいパスワードPWを入力しないで、デバッグ命令を入力すると、例えば、「0x800000」のアドレスからメモリダンプをすると、D1に示すように、データは、全て「0」となり、正しい値は表示されない。セレクタ２４が、無効データ「0」を選択して出力するからである。同様に、例えば、「0x200000」のアドレスから逆アセンブルしても命令は、D2に示すように、「0」であるため、「NOP」が出力される。さらに、同様に、汎用レジスタの内容表示も、D3に示すように、全て「0」となる。
【００４２】
図４に戻り、命令列の実行が終了すると、実行ユニット２１は、認証解除の処理を実行する（S16）。認証解除処理は、デバッグ割り込みの終了処理、すなわち認証ユニット２６に書き込まれたパスワードPWの消去処理、及び割り込みハンドラの終了命令の実行処理を含む。すなわち、デバッグ割り込みハンドラは、所定の認証処理による認証の解除を行う認証解除処理を含み、CPU２は、コマンド実行部の処理の実行後、認証ユニット２６に対して、所定の認証処理による認証解除を行う認証解除処理を実行することによって、認証ユニット２６が選択信号SSを出力しないようにする。認証解除処理が終了した後、デバッグ割り込みの発生により中断していたプログラムの実行が再開される。
【００４３】
上述したように、デバッグ割り込みハンドラは、上述した認証処理のための命令列を含む認証実行指示部と、コマンドに対応する命令列を含むコマンド実行部を含み、デバッグ割り込みが発生すると、まず認証実行指示処理が実行され、適切に認証されると、CPU２からJTAGI/F４へのデータ出力が可能なようにセレクタが制御される。適切に認証されなければ、CPU２からJTAGI/F４へのデータ出力ができないようにセレクタが制御される。その後、ユーザからのコマンドに対応する命令列が実行されるので、正しく認証されなければ、コマンドの実行結果として、CPU２内のデータがJTAGI/F４へ出力されない。正しく認証されなければ、無効データがJTAGI/F４に出力される。  
さらに、デバッグコマンドが実行されるときだけ、CPU２からJTAGI/F４へのデータ出力ができるようにセレクタが制御されるので、秘密データの秘匿性は高い。
【００４４】
従って、本実施形態によれば、正しいパスワードPWを入力しないと、デバッガ１３は、デバッグコマンドの実行結果を得られない。  
また、本実施形態では、CPU２からの出力データの遮断がされていても、デバッガ１３からのユーザのコマンドに応じた、ブレイク、ステップ実行等のデバッグ命令は実行されるので、図５のような表示が行われる。従って、鍵データ、プログラムなどの秘密データの秘匿性は保たれる。
【００４５】
以上のように、上述した実施形態の半導体装置によれば、半導体装置が秘密データを有する場合あるいは秘匿性のあるプログラムを実行する場合に、データの入出力を遮断するための所定の信号を入力するためのピンを半導体装置に設けることなく、あるいは別のプロセッサを半導体装置に内蔵することもなく、SoC等の半導体装置の外部との接続を遮断して、マイクロプロセッサからの秘密情報の漏洩を防止することができる。
【００４６】
例えば、悪意のある者によるプロセッサの内部解析に対しても、JTAG IF とマイクロプロセッサが遮断状態のときにマイクロプロセッサからは無効データが出力されるため、プロセッサの動作状況の解析作業は、困難なものとなる。
【００４７】
（第２の実施形態）
第１の実施形態では、認証が正しくされないと、所定のデータとして、固定データがJTAGI/F４に出力されているが、第２の実施形態は、認証が正しくされないときは、無効データ生成ユニットの生成した固定でないデータを、所定のデータとして、JTAGI/F４へ出力するようにした点で、第１の実施形態と異なる。その生成データは、出力すべきデータは異なるデータである。
【００４８】
以下、第２の実施形態の説明において、第１の実施形態と同じ構成要素については、同じ符号を用いて説明し、説明は省略し、主に異なる点を説明する。  
図６は、本実施形態に係るSoCを含むデバッグシステムの構成を説明するためのブロック図である。 
図６に示すように、バスブリッジ２８は、無効データ生成ユニット５１を含む。無効データ生成ユニット５１には、アドレスデコーダ２３の出力DOが入力される。出力制御部としてのセレクタ２４は、アドレスデコーダ２３と無効データ生成ユニット５１の２つの出力のうち、一方を、選択信号SSの有無に応じて選択して出力する。
【００４９】
図７は、無効データ生成ユニット５１の構成を示すブロック図である。無効データ生成ユニット５１は、関数部５２と、乱数発生器５３を含む。乱数発生器５３は、乱数RNを生成して出力する回路である。関数部５２は、アドレスデコーダ２３の出力DOと、乱数発生器５３の出力する乱数RNの２つのデータを入力して、その２つのデータを用いて所定の関数演算を行ってその演算結果を、無効データDXとして出力する回路である。
【００５０】
セレクタ２４は、選択信号SSの有無に応じて、無効データ生成ユニット５１の生成データである無効データDXとアドレスデコーダ２３の出力データDOのいずれか一方を選択する。  
本実施形態においても、認証が正しくされないと、無効データ生成ユニット５１により生成された無効データDXがJTAGI/F４に出力される。
【００５１】
関数部５２の処理内容は、種々取り得る。例えば、関数部５２は、乱数RNに基づいて、出力されるべきデータDOの途中において、偽データを挿入あるいは加算して出力するような関数処理、あるいは、乱数RNに基づいて、出力されるべきデータDOの途中にランダムな長さの偽データを含ませる関数処理、あるいは、ランダムに乱数RNに基づいて、出力されるべきデータDO中のランダムな桁を偽データで置き換える（例えば、１ビットだけ「1」と「0」を変更する）関数処理、等である。
【００５２】
また、乱数RNの代わりにカウンタ値を用いて、そのカウント値に応じて、所定のオフセット値を加算した値を出力する、前の値と同じ値を出力する、等の関数でもよい。さらに、関数部５２は、前と同じ値のときは、所定のオフセット値を加算した値を出力する関数処理でもよい。  
さらに、関数部５２はこれらの方法を組み合わせた関数処理、あるいは、時間データに応じてこれらの方法を切り換える関数処理でもよい。
【００５３】
図８は、本実施形態において、認証がされなかった場合に、得られるデータの例を説明するための図である。図８は、メモリダンプの出力あるいは表示の例DD1、命令を逆アセンブルしたときの出力あるいは表示の例DD2、汎用レジスタの出力あるいは表示の例DD3を含んでいる。
【００５４】
ユーザは、正しいパスワードPWを入力しないで、デバッグ命令を入力すると、例えば、「0x800000」のアドレスからメモリダンプをすると、DD1に示すように、データは、ランダムなデータとなり、正しい値は表示されない。同様に、例えば、「0x200000」のアドレスから逆アセンブルしても命令は、DD2に示すように、ランダムなデータが出力される。さらに、同様に、汎用レジスタの内容表示も、DD3に示すように、全てランダムなデータとなる。
【００５５】
図５の場合と比較すると、図５の場合は、全て同じ値「0」であるので、ユーザは、正しいデータが出力されていない、あるいは出力が遮断されていると判るが、図８の場合は、無効データ生成ユニット２８において生成されたランダムなデータが表示されているので、ユーザは、偽データが出力されていることさえ、直ぐには判別できない。
【００５６】
例えば悪意のあるユーザにより、秘密データの取得のための解析がされる場合に、図８の表示では、正しいデータと偽データとの区別が付かないので、そのユーザは、CPU２の出力データが遮断されていることを、判定することができない。
【００５７】
従って、本実施形態の半導体装置は、第１の実施形態と同様の効果を有すると共に、適切に認証がされないときには、無効データ生成部の生成したデータを出力するようにしたので、正しい値と偽データとの区別が難しいという効果を有する。
【００５８】
以上のように、上述した各実施形態の半導体装置によれば、半導体装置が、秘密データあるいは秘匿性のあるプログラムを実行する場合に、データの入出力を遮断するための所定の信号を入力するためのピンを半導体装置に設けることなく、あるいは別のプロセッサを半導体装置に内蔵することもなく、SoC等の半導体装置の外部との接続を遮断して、プロセッサからの秘密情報の漏洩を防止することができる。
【００５９】
なお、以上の説明は、SoC上に１つのCPUが搭載されている例で説明したが、複数のマイクロプロセッサが搭載されているSoCにおいても、各CPUからの出力データが出力される１又は２以上の出力線上に、上述したようなセレクタを配置することによって、上述した実施形態の構成は適用可能であり、プロセッサからの秘密情報の漏洩を防止することができる。
【００６０】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【符号の説明】
【００６１】
１  SoC、２  CPU、３  メインメモリ、４  JTAGI/F、５  バス、１１  PC、１２  JTAG-ICE、１３  デバッガ、２１  実行ユニット、２２  レジスタ群、２３  アドレスデコーダ、２４  セレクタ、２５  ロードストアユニット、２６  認証ユニット、２７  認証キー部、２８  バスブリッジ、３１  パスワード入力用レジスタ、３２  認証演算器、３３  期待値レジスタ、３４  比較器、４１  レジスタ、４２  デバッグ用コード部、４３  デバッグ用ワーク部、５１  無効データ生成ユニット、５２  関数部、５３  乱数発生器
【図１】
2012118884.tif 000003
【図２】
2012118884.tif 000004
【図３】
2012118884.tif 000005
【図４】
2012118884.tif 000006
【図５】
2012118884.tif 000007
【図６】
2012118884.tif 000008
【図７】
2012118884.tif 000009
【図８】
2012118884.tif 000010