(57)【要約】【課題】情報の秘匿性を確保しつつ開発効率を向上出来る半導体集積回路装置及びその信号処理方法を提供すること。【解決手段】暗号化データを保持する第１メモリ３と、前記暗号化データの平文を保持する第２メモリ４と、第１動作モードにおいてデバッグ制御回路１２から独立し第２動作モードにおいて前記デバッグ制御回路１２の支配下に置かれるプロセッサ１１と、前記第２動作モードにおいて前記プロセッサ１１を制御する前記デバッグ制御回路１２と、前記暗号化データの正統性を認証するデータ認証部６と、前記第２動作モードにおいてフラグを保持するレジスタ１３と、前記第２メモリ４へのアクセスを制御する第２メモリ制御回路５とを具備し、前記第２メモリ制御回路５は前記レジスタ１３に前記フラグが保持されておらず且つ前記データの正統性が認証された場合に前記第２メモリ４へのアクセスを許可する。【選択図】図１
2009025907.tif 000002
【特許請求の範囲】
【請求項１】
第１動作モードと第２動作モードとを有する半導体集積回路装置であって、
暗号化されていないデータ及び暗号化されたデータを保持可能な第１メモリと、
前記暗号化されたデータが平文に戻されたデータを保持可能な第２メモリと、
前記第１メモリまたは第２メモリに保持される前記データを用いて処理を行い、前記第１動作モードにおいては前記デバッグ制御回路から独立して動作するプロセッサと、
前記第２動作モードにおいて前記プロセッサの動作を制御するデバッグ制御回路と、
前記第１メモリに保持される前記暗号化されたデータの正統性を認証するデータ認証部と、
前記第２動作モードにおいてフラグを保持するレジスタと、
前記第２メモリへのアクセスを制御する第２メモリ制御回路と
を具備し、前記第２メモリ制御回路は、前記レジスタに前記フラグが保持されず、且つ前記データ認証部において前記データの正統性が認証された場合に、前記第２メモリへのアクセスを許可し、
前記レジスタに前記フラグが保持される場合、及び前記正統性が認証されない場合に、前記第２メモリへのアクセスを禁止する
ことを特徴とする半導体集積回路装置。
【請求項２】
前記第２メモリ制御回路は更に、前記プロセッサに対して割り込み処理がなされた際に、前記第２メモリへのアクセスを禁止する
ことを特徴とする請求項１記載の半導体集積回路装置。
【請求項３】
前記第１メモリに保持された前記データと、前記データに応じて使用すべき前記正統性の認証方法との関係を保持する第３メモリを更に備え、
前記データ認証部は複数の前記認証方法を保持し、且つ前記第３メモリに保持される前記関係に基づいて、使用すべき前記正統性の認証方法を選択する
ことを特徴とする請求項１記載の半導体集積回路装置。
【請求項４】
プロセッサとデバッグ制御回路とを備え、前記プロセッサが前記デバッグ制御回路から独立して動作する第１動作モードと、前記プロセッサが前記デバッグ制御回路に制御される第２動作モードとを有する半導体集積回路の信号処理方法であって、
前記半導体集積回路が前記第２動作モードにあるか否かを監視し、前記第２動作モードにある期間、レジスタにフラグを保持させるステップと、
前記プロセッサが第１メモリ内の暗号化データにアクセスした際、当該暗号化データの正統性を確認するステップと、
前記暗号化データの前記正統性が確認され、且つ前記レジスタに前記フラグが保持されない場合に、前記第１メモリと異なる第２メモリへのアクセスが許可され、前記暗号化データの前記正統性が確認されないか、または前記レジスタに前記フラグが保持される場合に、前記第２メモリへのアクセスが禁止されるステップと、
前記第２メモリへのアクセスが許可された場合に、前記暗号化データの平文が前記第２メモリへ格納され、前記プロセッサにより前記平文を用いた処理が行われるステップと
を具備することを特徴とする半導体集積回路の信号処理方法。
【請求項５】
前記第２メモリへのアクセスが許可されている期間において、前記レジスタに前記フラグが保持されるか、または前記プロセッサに対して割り込み処理がなされた場合に、前記第２メモリへのアクセスを禁止するステップを更に備える
ことを特徴とする請求項４記載の半導体集積回路の信号処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体集積回路装置及びその信号処理方法に関する。例えば、暗号化された情報が平文に戻された際におけるデータのアクセス方法に関する。
【背景技術】
【０００２】
プロセッサ、メモリ、及び周辺装置などを集積して１チップに搭載した半導体集積回路（ＬＳＩ）においては、プロセッサとＲＡＭとが同じチップ内に組み込まれる。そのため、ＬＳＩ内部の情報を外部から読み取ることが困難であり、セキュリティの観点から優れている。しかしながら、プロセッサのプログラム開発において用いられるデバッガを用いれば、プロセッサの挙動を自由に操ることが可能であるため、セキュリティ確保の弱点となる。
【０００３】
デバッガとしては従来、ＩＣＥ（InCircuit Emulator）が広く用いられてきた。ＩＣＥは、ＬＳＩ内部のプロセッサの動作を止め、外部に設けたプロセッサと同等の回路を用いて擬似的に同等の動作を実現する手法である。これに対して近年では、デバッグサポートユニット（ＤＳＵ：Debug Support Unit）を用いる手法が主流になりつつある。本手法は、デバッグ時の管理を行う制御回路（ＤＳＵ）をプロセッサに付随させ、デバッグ専用のプローブをＤＳＵに接続してデバッグを行う手法である。
【０００４】
一般にプログラムの開発作業は、複数の開発グループによって作業が進められることが多い。この場合、開発グループによって情報の管理レベル、つまり情報が開示される範囲が異なる場合がある。従って、情報の管理レベルに応じて、情報が秘匿されなければならない。
【０００５】
この点、情報の秘匿性を突き詰めると、秘匿すべき情報が存在する場合には、デバッグ自体を一切禁止するという手法が考え得る（例えば特許文献１参照）。しかし、この方法では開発効率が著しく低下する恐れがある。他方、開発効率のみを突き詰めれば、情報の秘匿性が全く考慮されないことになる。
【特許文献１】特開２００６−０７２９６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
この発明は、情報の秘匿性を確保しつつ開発効率を向上出来る半導体集積回路装置及びその信号処理方法を提供する。
【課題を解決するための手段】
【０００７】
この発明の一態様に係る半導体集積回路装置は、第１動作モードと第２動作モードとを有する半導体集積回路装置であって、暗号化されていないデータ及び暗号化されたデータを保持可能な第１メモリと、前記暗号化されたデータが平文に戻されたデータを保持可能な第２メモリと、前記第１メモリまたは第２メモリに保持される前記データを用いて処理を行い、前記第１動作モードにおいては前記デバッグ制御回路から独立して動作するプロセッサと、前記第２動作モードにおいて前記プロセッサの動作を制御するデバッグ制御回路と、前記第１メモリに保持される前記暗号化されたデータの正統性を認証するデータ認証部と、前記第２動作モードにおいてフラグを保持するレジスタと、前記第２メモリへのアクセスを制御する第２メモリ制御回路とを具備し、前記第２メモリ制御回路は、前記レジスタに前記フラグが保持されず、且つ前記データ認証部において前記データの正統性が認証された場合に、前記第２メモリへのアクセスを許可し、前記レジスタに前記フラグが保持される場合、及び前記正統性が認証されない場合に、前記第２メモリへのアクセスを禁止する。
【０００８】
また、この発明の一態様に係る半導体集積回路装置の信号処理方法は、プロセッサとデバッグ制御回路とを備え、前記プロセッサが前記デバッグ制御回路から独立して動作する第１動作モードと、前記プロセッサが前記デバッグ制御回路に制御される第２動作モードとを有する半導体集積回路の信号処理方法であって、前記半導体集積回路が前記第２動作モードにあるか否かを監視し、前記第２動作モードにある期間、レジスタにフラグを保持させるステップと、前記プロセッサが第１メモリ内の暗号化データにアクセスした際、当該暗号化データの正統性を確認するステップと、前記暗号化データの前記正統性が確認され、且つ前記レジスタに前記フラグが保持されない場合に、前記第１メモリと異なる第２メモリへのアクセスが許可され、前記暗号化データの前記正統性が確認されないか、または前記レジスタに前記フラグが保持される場合に、前記第２メモリへのアクセスが禁止されるステップと、前記第２メモリへのアクセスが許可された場合に、前記暗号化データの平文が前記第２メモリへ格納され、前記プロセッサにより前記平文を用いた処理が行われるステップとを具備する。
【発明の効果】
【０００９】
この発明によれば、情報の秘匿性を確保しつつ開発効率を向上出来る半導体集積回路装置及びその信号処理方法を提供出来る。
【発明を実施するための最良の形態】
【００１０】
以下、この発明の実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【００１１】
［第１の実施形態］  
この発明の第１の実施形態に係る半導体集積回路装置及びその信号処理方法について、図１を用いて説明する。図１は、本実施形態に係る半導体集積回路装置のブロック図である。
【００１２】
図示するように、本実施形態に係るＬＳＩ１は、ＣＰＵ２、第１メモリ装置３、第２メモリ装置４、第２メモリ制御回路５、情報認証部６、暗号鍵保持部７、メモリインタフェース８、デバッグインタフェース９、及び周辺回路１０を備えている。また本実施形態に係るＬＳＩ１は、通常動作モードとデバッグモードの２つの動作モードを有している。デバッグモードとは、例えばＬＳＩ１の開発段階において、デバッガ等によりＬＳＩ１の動作が外部から操られる動作モードである。
【００１３】
ＣＰＵ２は、プロセッサ１１及びデバッグ制御回路（ＤＳＵ）１２を有している。プロセッサ１１は、第１メモリ装置３及び第２メモリ装置４内に保持されるデータに基づいて、種々の信号処理を行う。またプロセッサ１１は、通常動作モードにおいてはデバッグ制御回路１２から独立して動作する。他方、デバッグモードにおいては、プロセッサ１１はデバッグ制御回路１２の支配下に置かれ、デバッグ制御回路１２の制御に基づいて動作する。
【００１４】
デバッグ制御回路１２は、デバッグモードにおいて、プロセッサ１１の動作を制御する。またデバッグ制御回路１２は、その内部に第１レジスタ１３を備えている。そして、デバッグモード時に、第１レジスタ１３内においてフラグを立てる。より具体的には、第１レジスタ１３に“１”を保持させる。このフラグは、第２メモリ制御回路５へ与えられる。
【００１５】
第１、第２メモリ装置３、４は、例えばＲＡＭ等の半導体メモリである。そして第１、第２メモリ装置３、４は、プロセッサ１１が処理を行うために必要なデータを保持する。特に暗号化されたデータを解読して得られた平文は、第２メモリ装置４においてのみ保持される。
【００１６】
情報認証部６は、プロセッサ１１の命令に従って、第１メモリ装置３内のデータの正統性を検証する。すなわち、プロセッサ１１がこれから使用しようとするデータのコードが改竄されていないか否かを検証する。そして、改竄されていないことが確認されると、情報認証部６は、第２メモリ制御回路５へトリガを出力する。
【００１７】
第２メモリ制御回路５は、第２レジスタ１４を備えている。第２レジスタ１４には、第２メモリ装置４へのアクセスの禁止の旨の情報が、プロセッサ１１によって書き込まれる。そして第２メモリ制御回路５は、第１レジスタ１３及び第２レジスタ１４の保持する情報と、情報認証部６における検証結果に基づいて、第２メモリ装置４へのアクセスを禁止、または許可する。アクセスを禁止するか許可するかの基準については後述する。
【００１８】
暗号鍵保持部７は、レジスタや半導体メモリ等の記憶装置であり、暗号化されたデータを解読する際に使用する暗号鍵１５を保持する。
【００１９】
メモリインタフェース８は、ＬＳＩ１と外部記憶装置３０とを接続する。外部記憶装置３０は、例えばフラッシュＥＥＰＲＯＭ（Electrically Erasable and Programmable ROM）等である。
【００２０】
デバッグインタフェース９は、ＬＳＩ１とデバッガ２０とを接続する。そして、デバッグインタフェース９を介して、デバッガ２０がデバッグ制御回路１２に接続される。デバッグインタフェース９は、例えばＪＴＡＧ（Joint Test Action Group）ポートである。デバッガ２０はデバッグモードにおいて、デバッグ用プローブ２１を介してデバッグ制御回路１２との通信を行い、プロセッサ１１の挙動を制御する。
【００２１】
一般にデバッグ制御回路（ＤＳＵ）には、デバッグ用プローブが接続されたことを示す信号が備わっている。プロセッサによっては、デバッグ時には、専用のモード（例えばデバッグモード）に移行するように設計されている。このような設計においては、デバッグ用プローブが接続されたことを示す信号は、プロセッサがデバッグモードに移行することを示す信号として使用されている。
【００２２】
また例えば、ＥＪＴＡＧ（Enhanced JTAG）仕様では、デバッグ制御回路に備えられたレジスタにデバッグモードを示すレジスタが割り当てられている。また、デバッグ用プローブがデバッグインタフェースに接続されていることを示す信号ProbEnableが定義されている。
【００２３】
そこで本実施形態においても、デバッグ用プローブ２１がデバッグインタフェース９に接続されていることを示す信号を、ＬＳＩ１がデバッグモードにあるか否かの判断基準の一つとして用いても良い。つまり、上記信号ProbEnableが第１レジスタ１３に書き込まれると共に、第２メモリ制御回路５へ与えられても良い。
【００２４】
しかし、ＬＳＩ１がデバッグモードにあるということと、デバッグ用プローブ２１がデバッグインタフェース９に接続されているということは必ずしも同義ではない。すなわち、デバッグ用プローブ２１がデバッグインタフェース９に接続されていてもＬＳＩ１がデバッグモードに無い（通常動作モードにある）場合もあるし、接続されていなくてもデバッグモードにある場合もある。従ってデバッグ制御回路１２は、デバッグ用プローブ２１の接続に関わらず、ＬＳＩ１がデバッグモードにある場合に、第１レジスタ１３にフラグを立てる。
【００２５】
周辺回路１０は、上記説明した回路ブロックの他に、ＬＳＩ１として必要な機能を実現する回路ブロックである。  
そして、ＣＰＵ２と、第１、第２メモリ装置３、４、第２メモリ制御回路５、情報認証部６、暗号鍵保持部７、メモリインタフェース８、及び周辺回路１０は、バスによって接続されている。
【００２６】
次に、本実施形態に係るＬＳＩ１において、暗号化されたデータを取り扱うため方法の概要を説明する。まずプロセッサ１１はリセット後に、外部記憶装置３０に保持されるプログラムを実行する。そのプログラムに従って、プロセッサ１１はプログラムの一部を、外部記憶装置３０からＬＳＩ１内の第１メモリ装置３へコピーし、そのコピーしたプログラムにジャンプする。
【００２７】
第１メモリ装置３へコピーされたプログラムのうち、暗号化されたものの構成について、図２を用いて説明する。図２は、第１メモリ装置３のメモリ空間の概念図であり、第１メモリ装置３にコピーされた暗号化データ（プログラム）のアドレスマップを示したものである。
【００２８】
図示するように、暗号化された情報を含むプログラムは、暗号化されたコードと、暗号化されたコードを解読するための解読コードとを含んでいる。図２の例であると、アドレスが“０ｘ８００１＿００００”〜“０ｘ８００２＿７ＦＦＦ”の領域に、ある暗号化プログラムが保持され、そのうちの“０ｘ８００１＿００００”〜“０ｘ８００１＿０ＦＦＦ”の領域に解読コードが保持され、“０ｘ８００１＿１０００”〜“０ｘ８００２＿７ＦＦＦ”の領域に暗号化されたコードが保持される。また、アドレスが“０ｘ８００３＿００００”〜“０ｘ８００３＿ＦＦＦＦ”の領域に、別の暗号化プログラムが保持され、そのうちの“０ｘ８００３＿００００”〜“０ｘ８００３＿０ＦＦＦ”の領域に解読コードが保持され、“０ｘ８００３＿１０００”〜“０ｘ８００３＿ＦＦＦＦ”の領域に暗号化されたコードが保持される。なお、アドレスの先頭に付与した“０ｘ”は、当該アドレスが１６進数で表記されていることを示す。
【００２９】
プロセッサ１１が、上記のような暗号化された情報を含むプログラムを取り扱う場合、プロセッサ１１は、このプログラムが改竄されていないかどうかを情報認証部６にチェックさせる。チェックの結果プログラムの正統性が確認された場合、第２メモリ装置へのアクセスが許可される。
【００３０】
その後、解読コードによって暗号が解読される。暗号鍵保持部７が保持する暗号鍵１５は、この暗号を解く際に用いられる。暗号を解読して得られた平文は、第２メモリ装置４へ記憶される。そこでプロセッサ１１は、解読コードの最後のコードから、平文にされたコードへジャンプし、平文にされたコードを実行する。その後は、平文にされたコードのうちの重要な部分を第２メモリ装置４から削除して、第１メモリ装置３内のコードにジャンプする。その後、プロセッサ１１が第２メモリへのアクセスを禁止する旨の情報を第２レジスタ１４に書き込むことにより、第２メモリへのアクセスは禁止される。
【００３１】
次に第２メモリ装置４へのアクセスの許可／禁止の判断方法について図３を用いて説明する。図３は、第２メモリ装置４へのアクセスの許可／禁止の判断方法のフローチャートであり、本判断は第２メモリ制御回路５で行われる。
【００３２】
まず第２メモリ制御回路５は、情報認証部６における検証の結果、プロセッサ１１によりアクセスされた第１メモリ装置３内のデータが正統でなかった場合（ステップＳ１０、ＮＯ）には、第２メモリ装置４へのアクセスを禁止する（ステップＳ１１）。正統であった場合（ステップＳ１０、ＹＥＳ）でも、ＬＳＩ１がデバッグモードにある場合（ステップＳ１２、ＹＥＳ）には、第２メモリ装置４へのアクセスを禁止する（ステップＳ１１）。デバッグモードにあるか否かは、デバッグ制御回路１２の第１レジスタ１３内のフラグによって判断出来る。
【００３３】
また、デバッグモードでは無く通常動作モードであったとしても（ステップＳ１２、ＮＯ）、プロセッサ１１より第２メモリ装置４へのアクセス禁止の指示が為されるか（ステップＳ１３、ＹＥＳ）、またはプロセッサ１１に対して割り込み処理等の例外処理が為された場合（ステップＳ１４、ＹＥＳ）には、第２メモリ装置４へのアクセスは禁止される（ステップＳ１１）。アクセス禁止の指示がなされたか否かは、第２レジスタ１４の内容を参照することで把握出来る。通常動作モードであり（ステップＳ１２、ＮＯ）、アクセス禁止の指示も無く（ステップＳ１３、ＮＯ）、例外処理も為されていない（ステップＳ１４、ＮＯ）場合には、第２メモリ制御回路５は第２メモリ装置４へのアクセスを許可する（ステップＳ１４）。
【００３４】
すなわち、第２メモリ装置４へのアクセスの許可／禁止の条件をまとめると、図４の通りとなる。図４は、上記条件をまとめた表である。図示するように第２メモリ制御回路５は、デバッグモードにおいては無条件で第２メモリ装置４へのアクセスを禁止する。また、通常動作モードであっても、データに正統性が無いか、アクセス禁止の指示が為されたか、または例外処理が為された場合には、第２メモリ装置４へのアクセスは禁止される。そして、通常動作モードであって、データに正統性があり、アクセス禁止の指示も無く、また例外処理も為されていない場合にのみ、第２メモリ制御回路５は第２メモリ装置４へのアクセスを許可する。
【００３５】
上記のように、第２メモリ装置４はアクセスが禁止される状態と許可される状態と２つの状態を有する。図５は、第２メモリ装置４の２つの状態の状態遷移図である。図示するように、電源投入直後等、リセット動作の直後は、第２メモリ装置４はアクセスを禁止された状態にある。その状態において、情報認証部６でデータの正統性が認証されると（条件Ａ）、第２メモリ装置４はアクセス許可状態へと遷移する。その後、ＬＳＩ１がデバッグモードへ移行するか（条件Ｂ）、アクセス禁止の指示がなされるか（条件Ｃ）、またはプロセッサ１１に割り込みがかかり、割り込みベクタへジャンプする等の例外処理がなされる（条件Ｄ）と、第２メモリ装置４はアクセス禁止状態へと遷移する。つまり、第２メモリ装置４は原則、アクセス禁止状態である。そして、通常動作モードで正統性が認証された場合に、アクセス許可状態となる。
【００３６】
次に、本実施形態に係るＬＳＩ１の動作について、通常動作モードにおいて暗号化データに対してアクセスがなされた場合を例に、図６を用いて説明する。図６は、ＬＳＩ１の動作のフローチャートである。
【００３７】
まず、プロセッサ１１が外部記憶装置３０からプログラムを第１メモリ装置３へ転送し、転送したプログラムに従って処理を実行する。この時点においては、第２メモリ装置４へのアクセスは禁止された状態である。そして、いずれかの時点において、暗号化されたプログラムに対してアクセスしたとする（ステップＳ２０）。すると、情報認証部６において、当該プログラムについての正統性の確認処理が開始される（ステップＳ２１）。この正統性の確認処理において情報認証部６は、与えられたコードがオリジナルのコードであって改竄がなされていないか否かをチェックする。コードの正統性の確認方法については、既に多くの研究がなされており、それらのうちのいずれかの方法を採用すれば良く、例えば、もっと簡易な例は、チェックサムを用いる方法である。
【００３８】
正統性の確認処理にあたって情報認証部６は、まず正統性を確認するコードの領域を指定するため、コードの先頭アドレスおよびコードサイズの情報が、情報認証部６のレジスタ（図示せず）に設定される（ステップＳ２２）。次に、プロセッサ１１により情報認証部６に対して、正統性を確認する作業の開始を指示される（ステップＳ２３）。この指示は例えば、プロセッサ１１が情報認証部６の確認動作開始を指示するレジスタに、ライト動作をすることで行われる。この指示に従って、情報認証部６は指定されたデータの正統性をチェックする（ステップＳ２４）。
【００３９】
チェックの結果、コードが改竄されていた場合、つまり正統で無い場合（ステップＳ２５、ＮＯ）には、正統性の確認の対象となったデータは不正である旨を、情報認証部６がプロセッサ１１及び第２メモリ制御回路５へ通知する（ステップＳ２６）。この通知により、第２メモリ制御回路５は、第２メモリ装置４へのアクセスを禁止する（ステップＳ２７）。
【００４０】
チェックの結果、コードが改竄されていない場合、つまり正統である場合（ステップＳ２５、ＹＥＳ）には、第２メモリ装置４へのアクセスを許可するためのトリガ信号を、情報認証部６は第２メモリ制御回路５へ出力する（ステップＳ２８）。すると、トリガ信号を受けた第２メモリ制御回路５が、第２メモリ装置４へのアクセスを許可する（ステップＳ２９）。
【００４１】
情報認証部６は、上記のようにデータが不正であった旨の通知、またはトリガ信号の出力を行うと、初期状態に戻る。
【００４２】
第２メモリ装置４へのアクセスが許可されたことを受けて、プロセッサ１１は暗号化データを解読して平文に戻し、平文にされたプログラムを第２メモリ装置４に展開する（ステップＳ３０）。そして、第２メモリ装置４内において平文にされたプログラムを用いて、プロセッサ１１が処理を行う（ステップＳ３１）。
【００４３】
平文にされたプログラムを用いた処理が終了すると（ステップＳ３２、ＹＥＳ）、プロセッサ１１は第２メモリ装置４内のプログラムを削除する（ステップＳ３３）。そしてプロセッサ１１は、第２メモリ装置４の使用を禁止する旨の情報を、第２レジスタ１４に書き込む（ステップＳ３４）。すると第２メモリ制御回路５は、第２レジスタ１４への書き込みを受けて、第２メモリ装置４へのアクセスを禁止する（ステップＳ２７）。
【００４４】
なお、上記の処理を行っている間、第２メモリ制御回路５は第２レジスタ１４の内容を常時監視しており、また第１レジスタ１３にフラグが立った際、またはプロセッサ１１に割り込みがかかった際には、速やかにその情報が第２メモリ制御回路５に与えられる。従って、第１レジスタ１３にフラグが立った場合、つまりＬＳＩ１がデバッグモードに移行すると、プロセッサ１１の処理が途中であっても、第２メモリ制御回路５は第２メモリ装置４へのアクセスを禁止する。プロセッサ１１に対して割り込みがなされた場合も同様である。このように、暗号化されたコードに相当する箇所が実行されている期間にデバッグイベントが発生した場合には、第２メモリ制御回路５は速やかに第２メモリ装置４へのアクセスを禁止する。
【００４５】
上記処理の流れの具体例を、図７を用いて説明する。図７は、ＬＳＩ１及び外部記憶装置３０のメモリ空間の模式図であり、特に外部記憶装置３０、第１メモリ装置３、及び第２メモリ装置４内に保持されるデータの流れについて示している。なお、図７において「ＲＯＭ」と記載した領域が外部記憶装置３０のメモリ空間に相当する。
【００４６】
図示するように、外部記憶装置３０のメモリ空間の先頭アドレスは“０ｘ００００＿００００”であり、第１メモリ装置３の先頭アドレスは“０ｘ８０００＿００００”であり、第２メモリ装置４の先頭アドレスは“０ｘＡ０００＿００００”である。そして、プロセッサ１１が初期動作時にジャンプするアドレスが“０ｘ００００＿００００”であったとする。ここには、初期設定用のプログラムＡが保持されており、プロセッサ１１はプログラムＡを実行する（図７の時刻ｔ０）。
【００４７】
プログラムＡに従った初期処理が完了するとプロセッサ１１は、引き続きプログラムＡに従って、外部記憶装置３０内における必要なプログラムをＬＳＩ１の第１メモリ装置３へコピーし、コピーした先のアドレスにジャンプする。図７では一例として、外部記憶装置３０内のプログラムＢ、Ｃが第１メモリ装置３へコピーされる場合について示している（時刻ｔ１）。またプログラムＢは暗号化されたコードを含むプログラムであったとする。
【００４８】
プロセッサ１１はプログラムＡの実行後にプログラムＢを実行するが、プログラムＢは暗号化されているため、実行前に情報認証部６に対してプログラムＢの正統性をチェックさせる（時刻ｔ２）。プログラムＢは、先に図２を用いて説明したように、暗号化されたコードを解くための解読コードＢ−１と、暗号化されたコードＢ−２とを含んでおり、情報認証部６はコードＢ−１、Ｂ−２の両方について正統性をチェックする。
【００４９】
情報認証部６によりコードＢ−１、Ｂ−２の改竄が行われていないことが確認されると、第２メモリ制御回路５が第２メモリ装置４へのアクセスを許可する。従ってプロセッサ１１は、コードＢ１に書かれたプログラム従って、暗号化されたプログラムＢ−２を第２メモリ装置４へコピーする。そしてプログラムＢ−２の暗号が、暗号鍵保持部７内の暗号鍵１５等を用いて平文に戻される（時刻ｔ３）。
【００５０】
その後、プロセッサ１１は平文にされたプログラムＢ−２’へジャンプし、プログラムＢ−２’を実行する。すなわち、暗号化されていたプログラムコードが実行される（時刻ｔ４）。
【００５１】
プロセッサ１１は、プログラムＢ−２’における最後の処理として、プログラムＢ−２’について処理を行った箇所の重要なコードを第２メモリ装置４から削除し、その後、第１メモリ装置３内のコードＢ−１の後半にジャンプする（時刻ｔ５）。更にプロセッサ１１は、第２メモリ装置４を用いた処理が終了したので、第２メモリ装置４へのアクセスを禁止する旨の情報を第２レジスタ１４に書き込む。これにより、第２メモリ制御回路５が第２メモリ装置４へのアクセスを禁止する。上記の処理が完了すると、プロセッサ１１は、次のプログラムＣへジャンプする。
【００５２】
上記処理において、プロセッサ１１が平文にされたコードを実行している最中、つまり時刻ｔ３〜ｔ４の期間において、ＬＳＩ１がデバッグモードに移行する、またはプロセッサ１１に対して割り込み処理が発生する等した場合には、第２メモリ制御回路５が第２メモリ装置４へのアクセスを禁止する。すなわち、処理は中断される。
【００５３】
通常動作モード時にプロセッサ１１は、インストラクションを外部記憶装置３０からフェッチして、そのインストラクションに応じて信号処理を実施する。他方、デバッグモード時には、インストラクションをフェッチする先が外部記憶装置３０ではなくデバッグインタフェース９である以外は、プロセッサ１１は通常動作モードと同じようにインストラクションをフェッチして、そのインストラクションに応じて命令を実行する。
【００５４】
そしてプロセッサ１１が第２メモリ装置４にアクセスできるということは、デバッガ２０が当該メモリ装置４へアクセスすることができるということを意味する。これは、デバッグ制御回路１２が直接第２メモリ装置４にアクセスするのではなく、デバッグ制御回路を通じてプロセッサ１１の実行する命令を変更し、これによって第２メモリ装置４にアクセスするようにすれば良いためである。
【００５５】
そこで本実施形態では、守りたい情報を格納するメモリ（第２メモリ装置４）へのアクセスが許可されている間に、プロセッサ１１の挙動を外部から操る事象が起きたことを検知する手段（第２メモリ制御回路５）を設けている。これによって、守るべき情報が格納された第２メモリ装置４に対して、所定の手順ではない方法によりアクセスされることを防止している。
【００５６】
上記のように、この発明の第１の実施形態に係るＬＳＩであると、下記（１）の効果が得られる。  
（１）情報の秘匿性を確保しつつ開発効率を向上出来る。  
本実施形態に係るＬＳＩであると、暗号化されたプログラムについては、当該プログラムの改竄が行われていないことを確認した上で暗号を解いている。また、平文が存在する間に、プロセッサの挙動を外部から操る事象が起きたことが検知された際には、守るべき情報へのアクセスを遮断する。これにより、情報の秘匿性を確保しつつ、開発効率を向上出来る。本効果について、以下詳細に説明する。
【００５７】
背景技術でも述べたように、近年は、デバッグ用の制御回路をプロセッサに付随させる手法が広く用いられてきている。デバッグ用の制御回路がＬＳＩ内部にあるということは、セキュリティの観点からは有利である。さらに近年のＳｏＣ（System on Chip）では、メモリもＬＳＩ内に設けられることが多い。この構成は、外部からメモリの情報をモニタできないため、セキュリティの観点からは有利である。
【００５８】
ところで、プログラムの開発過程においては、複数の開発グループにより並行して進められることが多い。しかしながら、開発グループによって情報の管理レベル、つまり情報が開示される範囲が異なる場合がある。この場合には、情報の管理レベルに応じてプログラム自体が秘匿されなければならない。
【００５９】
秘匿方法として簡単なのが、秘匿しておきたい箇所については、バイナリコードとしておく方法である。しかしながら、通常、開発グループは開発環境を有しており、バイナリコードの逆アセンブル表示などは容易に行うことが出来てしまう。そこで、秘匿しておきたい箇所のバイナリコードを暗号化する手法がある。本手法によれば、プログラムがＬＳＩ内部のメモリに取り込まれた後に、暗号化しておいたコードを復号するプログラムによって平文コードに戻される。
【００６０】
しかしながら上記のような暗号化を用いた秘匿を実施したとしても、デバッガを用いれば、プロセッサの挙動を自由に操ることが可能であるため、暗号化されていたコードが復号された段階で内部のＲＡＭの内容を参照することは可能である。よって、単に暗号化を行っただけでは秘匿の効果がない。当然の事ながら、通常、開発グループは、デバッガを有している。
【００６１】
また、情報の管理レベルが異なる開発グループが集まって開発を進める場合に、情報の秘匿を確実に行うためには、デバッガのプローブの接続をハードウエア的に切り離す等の処置により、デバッガの接続を不可にしてしまうことが確実な方法である。しかし、デバッガ接続が常に不可であると、開発効率は著しく低下する。このため、情報の管理レベルに応じて、守るべき情報が含まれる箇所が守られる機構の実現が望まれる。
【００６２】
別の手法として、暗号化された情報にアクセスできないようにするためには、当該ＬＳＩに接続するデバッガ側の機能を制限することによって対処することも可能である。しかし、この場合であっても、同じタイプのプロセッサを使用している他の応用向けのデバッガ（機能が制限されていないデバッガ）を接続することで、プロセッサの挙動を自由に操ることが出来てしまう。
【００６３】
また例えデバッガを用いなくとも、オリジナルのプログラムを改竄することで、秘匿された情報の暗号が解かれる場合もあり得る。この場合でも、暗号が解かれた情報は守られなくてはならない。
【００６４】
なお、秘匿しておきたい情報とは、例えば付加価値の高い部分である。ＬＳＩの付加価値は、より高機能な信号処理が実装されているかどうかによって異なる。そしてＬＳＩを販売する際には、付加価値の違いによって売価が異なることが普通である。つまり、より高機能な信号処理を行うことが出来るＬＳＩは値段が高い。そして近年のＳｏＣのように信号処理をプロセッサが行う場合、より高機能な信号処理が実装されていたとしても、それは従来とプログラムの一部が異なるだけである。そしてこのプログラムは、ＬＳＩ外部のＲＯＭに格納されることが多い。従って、例えプログラムが秘匿されていても、安価なＬＳＩを購入してこのＬＳＩに付加価値の高いプログラムをコピーするだけで、付加機能が実現できてしまうことになる。
【００６５】
以上のことから、情報の価値のレベルに応じて、守るべき情報が含まれる箇所が守られる機構の実現が望まれていた。
【００６６】
この点、本実施形態に係る構成であると、ＬＳＩ１内部に情報認証部６を設け、情報認証部６においてプログラムの正統性が認証された場合にのみ、第２メモリ制御回路５が第２メモリ装置４へのアクセスを許可する。すなわち、正統性が認証された場合にのみ、暗号化されたプログラムは平文に戻され、実行可能な状態とされる。
【００６７】
更に本実施形態では、デバッグモードにある期間にフラグを立てる第１レジスタ１３を設け、また第２メモリ制御回路５は第１レジスタ１３を監視すると共に、プロセッサ１１に割り込み処理等の例外処理が為されたか否かを監視する。そして、第２メモリ装置４に平文が存在している期間に、第１レジスタ１３にフラグが立つか、またはプロセッサ１１に例外処理が為された場合、つまりプロセッサ１１の挙動を外部から操る事象が起きた際には、第２メモリ装置４へのアクセスを禁止する。すなわち、暗号化されたプログラムの平文へのアクセスを遮断する。
【００６８】
従って、外部から秘匿すべき情報を不正なアクセスから防止出来る。
【００６９】
また、本実施形態に係る構成であると、上記のように情報を秘匿しつつ、デバッグが可能となり、ＬＳＩの開発効率を向上出来る。プログラムの開発工程で行われるデバッグ動作について、以下説明する。
【００７０】
プロセッサのプログラム開発においては、プロセッサの動作を任意に止め、その時のメモリの内容を確認したり、レジスタの内容を確認したりすることで、そのプログラムが所望の挙動をしているかどうかを確認する作業が行われる。このため、プロセッサの動作を自由に制御したり、任意のメモリの内容をダンプしたり出来るデバッガが非常に有用である。
【００７１】
ＬＳＩは、（ａ）デバッガ側から、プロセッサの制御をＤＳＵの制御下にゆだねるような設定を行うこと、もしくは、（ｂ）プロセッサがデバッグモード状態になるような命令を実行すること、もしくは、（ｃ）プロセッサが所定のアドレスのプログラムを実行すること、などによって、デバッグモード状態となる。
【００７２】
上述の（ａ）は、例えば、プロセッサがプログラムを実行であるときに、デバッガの使用者が強制的にプログラムを停止させたりする場合であり、（ｂ）及び（ｃ）は、デバッガ側から予め、プログラムの挙動を観測したい箇所に、デバッグモードに移行する命令を置いておく、もしくは、プログラムの挙動を観測したい箇所のアドレスをＤＳＵに設定しておき、プロセッサがそのプログラムを実行した場合である。この（ｂ）及び（ｃ）の例のように、プロセッサの処理がプログラムの挙動を観測したい箇所に達したら、デバッグモードに移行するように設定することを、「ブレークポイントを設定する」と言う。
【００７３】
プログラムの動作を確認する作業の時には、プロセッサをデバッグモードにして、プログラムを単一実行(ステップ実行)させたり、観測対象のプログラム位置でプログラムを停止させたりする。このような操作は、デバッガが接続されていれば容易に行うことが出来る。
【００７４】
このようにデバッガを用いれば、プロセッサの動作を任意に操ることが可能となってしまう。このため、このままでは、ＬＳＩが有する任意の情報にアクセスできるようになってしまう。プログラムの開発作業のように、複数の開発グループによって作業が進められる場合には、情報の管理レベル（情報の開示レベル）に応じた情報の秘匿が必要である。
【００７５】
プログラム開発の観点からは、ＬＳＩのプログラムの一部に秘匿しておきたい部分（例えば特定の信号処理のプログラム）などが含まれる場合に、プログラムの開発が滞るようなことは避けることが望ましい。この点、本実施形態に係るＬＳＩによれば、秘匿しておきたい部分の実行中にデバックモードに入らなければ、つまり、秘匿しておきたい情報の平文が存在する時にデバックモードに入らなければ、デバッグ作業を継続することが可能である。
【００７６】
この点につき、図７の場合を例に挙げて説明する。秘匿しておきたい情報（プログラムＢ−２）を扱うための第２メモリ装置４へのアクセスは、図７の時刻ｔ２における正統性のチェックの後、許可される。次に時刻ｔ３において、プログラムＢ−２が第２メモリ装置４へコピーされ、平文に戻される。そして時刻ｔ４において、第２メモリ装置４内にある平文のプログラムＢ−２’が実行される。
【００７７】
秘匿しておきたい情報（Ｂ−２）が正しく平文（Ｂ−２’）に戻され、かつその平文のプログラム（Ｂ−２’）が正常に実行されるようにするためには、第２メモリ装置４へのアクセスが正常に行われる必要がある。この点、プログラムの正統性が確認されてから、第２メモリ装置４におけるプログラムの処理が終了するまでの間（時刻ｔ２〜ｔ４）に、ＬＳＩ１がデバックモードに入らなければ、この処理は正常に実行される。
【００７８】
従って本実施形態に係る構成であると、秘匿された情報に関与するプログラムではないところに、ブレークポイントを設定したり、プログラムのステップ実行を行ったりすることは差し支えない。つまり、デバッグを行う際には、秘匿された情報に関与するプログラムの手前で、デバッガ２０によりプロセッサ１１がデバッグモードから抜けるようにプログラムを実行させれば良い。そして、秘匿された情報に関与するプログラムが終了した後の箇所にブレークポイントを設定しておけば、再度デバッグモードに入り、プロセッサ１１の動作を任意に操ったり、プログラムのステップ実行を行ったりすることができる。例えば図７の例であれば、プログラムＡの実行の時点にブレークポイントを設定したとすると、プログラムＡの最後の部分でデバッガ２０がプロセッサ１１を通常動作モードに戻す。そして、プログラムＣの初めにブレークポイントを設定すれば、再度プログラムＣ実行時点からデバッグモードに入ることが出来る。
【００７９】
すなわち、秘匿された情報に触れなければデバッグ作業を継続することができ、情報の開示レベルに応じた情報管理が可能となる。そのため、プロセッサの開発効率を向上出来る。
【００８０】
［第２の実施形態］  
次に、この発明の第２の実施形態に係る半導体集積回路装置及びその信号処理方法について説明する。本実施形態は、上記第１の実施形態において、複数の種類の正統性の検証方法を使用可能としたものである。図８は、本実施形態に係るＬＳＩのブロック図である。
【００８１】
図示するように、本実施形態に係るＬＳＩ１は、上記第１の実施形態で説明した図１の構成において更にＲＯＭ１６を備えた構成を有している。ＲＯＭ１６は、例えばフラッシュＥＥＰＲＯＭやマスクＲＯＭであり、情報認証部６で正統性を検証すべきデータと、その際に使用すべき検証方法との対応関係を保持する。この関係は、ＲＯＭ１６が例えばフラッシュＥＥＰＲＯＭであれば所定の書き込み手順によりＲＯＭ１６内に書き込まれ、マスクＲＯＭであれば、ＬＳＩ製造時に使用するマスクを変えることで書き込まれる。
【００８２】
情報認証部６は、予め複数の検証方法を実装し、ＲＯＭ１６に記載された関係に応じて、使用する検証方法を選択する。
【００８３】
情報認証部６及びＲＯＭ１６の構成について図９を用いて説明する。図９は、情報認証部６及びＲＯＭ１６のブロック図である。図示するように、ＲＯＭ１６はテーブル４０を保持している。テーブル４０には、正統性を検証すべきデータと、検証の際に使用すべき検証方法との対応関係が書き込まれている。図９の例であると、プログラムＡ〜Ｃのそれぞれの正統性を検証する際には、検証方法Ａ〜Ｃを使用すべきことが書き込まれている。
【００８４】
情報認証部６は、検証部１７、検証方法保持部１８、及び検証方法選択部１９を有している。検証部１７は、検証方法保持部１８から与えられる検証方法を用いて、検証すべきデータについて正統性をチェックする。そして検証結果を第２メモリ制御回路５へ出力する。検証方法保持部１８は、正統性の検証方法を複数保持する。図９の例であると、検証方法保持部１８は、３つの検証方法Ａ〜Ｃを保持する。検証方法選択部１９は検証すべきデータを受け、ＲＯＭ１６内のテーブル４０を参照して、使用すべき検証方法を決定する。そしてその旨を検証方法保持部１８へ出力する。
【００８５】
例えば、検証すべきデータがプログラムＢであったとする。すると検証方法選択部１９は、テーブル４０を参照することによって適用すべき検証方法が検証方法Ｂであることを把握し、その旨を検証方法保持部１８へ出力する。すると、検証方法保持部１８から検証方法Ｂが検証部１７に与えられ、検証部１７がプログラムＢの正統性を、検証方法Ｂを用いてチェックする。  
その他の構成及び動作は第１の実施形態と同様であるので説明は省略する。
【００８６】
上記のように、この発明の第２の実施形態に係るＬＳＩであると、上記第１の実施形態で説明した（１）の効果に加えて、下記（２）の効果が得られる。  
（２）情報の秘匿性をより向上出来る。  
本実施形態に係る構成であると、正統性を検証すべきデータに応じて検証方法を変えている。従って、守るべき情報の価値レベルに応じて、秘匿レベルを変えることが出来る。また、ＬＳＩ１の外部の外部記憶装置３０に格納されたプログラムを単純にコピーしただけでは、当該プログラムは動作しないため、秘匿性をより向上出来る。
【００８７】
上記のように、この発明の第１、第２の実施形態に係る半導体集積回路装置及びその信号処理方法であると、暗号化されたデータについて正統性を情報認証部６がチェックし、正統性が確認された場合にのみ、暗号化されたデータの実行が許される。そして、暗号化されたデータが実行されている期間にＬＳＩがデバッグモードに移行した場合や、またプロセッサ１１に対して割り込みがなされた場合には、暗号化されたデータの実行は中断される。従って、暗号化データを秘匿出来る。また、暗号化されたデータの実行中でなければ、ＬＳＩ１のデバッグ処理を正常に行うことが可能である。従って、暗号化データを秘匿しつつ、開発効率を向上させることが出来る。
【００８８】
なお、上記実施形態では、データの正統性が認証された場合に第２メモリ装置４へのアクセスが許可される場合について説明した。しかし、暗号鍵１５についても同様の処理を行っても良い。つまり、情報認証部６において正統性が認証された場合にのみ、暗号鍵保持部７へのアクセスが許可され、これによりプロセッサ１１は暗号鍵１５を用いて暗号化データを解読出来る。このようにすることで、より情報の秘匿性を向上出来る。
【００８９】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【図面の簡単な説明】
【００９０】
【図１】この発明の第１の実施形態に係るＬＳＩのブロック図。
【図２】暗号化データの構造を示す模式図。
【図３】この発明の第１の実施形態に係るＬＳＩにおいて、第２メモリ装置へのアクセスの許可／禁止の判断の流れを示すフローチャート。
【図４】この発明の第１の実施形態に係るＬＳＩにおいて、第２メモリ装置へのアクセスの許可／禁止の判断の基準を示す表。
【図５】この発明の第１の実施形態に係るＬＳＩの備える第２メモリ装置の状態遷移図。
【図６】この発明の第１の実施形態に係るＬＳＩの処理の流れを示すフローチャート。
【図７】この発明の第１の実施形態に係るＬＳＩにおけるアドレス空間の模式図であり、暗号化データの処理を行う際の様子を示す図。
【図８】この発明の第２の実施形態に係るＬＳＩのブロック図。
【図９】この発明の第２の実施形態に係るＬＳＩの備える情報認証部６及びＲＯＭ１６のブロック図。
【符号の説明】
【００９１】
１…ＬＳＩ、２…ＣＰＵ、３…第１メモリ装置、４…第２メモリ装置、５…第２メモリ制御回路、６…情報認証部、７…暗号鍵保持部、８…メモリインタフェース、９…デバッグインタフェース、１０…周辺回路、１１…プロセッサ、１２…デバッグ制御回路、１３…第１レジスタ、１４…第２レジスタ、１５…暗号鍵、１６…ＲＯＭ、１７…検証部、１８…検証方法保持部、１９…検証方法選択部、２０…デバッガ、２１…プローブ、３０…外部記憶装置、４０…テーブル
【図１】
2009025907.tif 000003
【図２】
2009025907.tif 000004
【図３】
2009025907.tif 000005
【図４】
2009025907.tif 000006
【図５】
2009025907.tif 000007
【図６】
2009025907.tif 000008
【図７】
2009025907.tif 000009
【図８】
2009025907.tif 000010
【図９】
2009025907.tif 000011