説明

半導体集積回路装置及びその信号処理方法

【課題】情報の秘匿性を確保しつつ開発効率を向上出来る半導体集積回路装置及びその信号処理方法を提供すること。
【解決手段】暗号化データを保持する第1メモリ3と、前記暗号化データの平文を保持する第2メモリ4と、第1動作モードにおいてデバッグ制御回路12から独立し第2動作モードにおいて前記デバッグ制御回路12の支配下に置かれるプロセッサ11と、前記第2動作モードにおいて前記プロセッサ11を制御する前記デバッグ制御回路12と、前記暗号化データの正統性を認証するデータ認証部6と、前記第2動作モードにおいてフラグを保持するレジスタ13と、前記第2メモリ4へのアクセスを制御する第2メモリ制御回路5とを具備し、前記第2メモリ制御回路5は前記レジスタ13に前記フラグが保持されておらず且つ前記データの正統性が認証された場合に前記第2メモリ4へのアクセスを許可する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、半導体集積回路装置及びその信号処理方法に関する。例えば、暗号化された情報が平文に戻された際におけるデータのアクセス方法に関する。
【背景技術】
【0002】
プロセッサ、メモリ、及び周辺装置などを集積して1チップに搭載した半導体集積回路(LSI)においては、プロセッサとRAMとが同じチップ内に組み込まれる。そのため、LSI内部の情報を外部から読み取ることが困難であり、セキュリティの観点から優れている。しかしながら、プロセッサのプログラム開発において用いられるデバッガを用いれば、プロセッサの挙動を自由に操ることが可能であるため、セキュリティ確保の弱点となる。
【0003】
デバッガとしては従来、ICE(InCircuit Emulator)が広く用いられてきた。ICEは、LSI内部のプロセッサの動作を止め、外部に設けたプロセッサと同等の回路を用いて擬似的に同等の動作を実現する手法である。これに対して近年では、デバッグサポートユニット(DSU:Debug Support Unit)を用いる手法が主流になりつつある。本手法は、デバッグ時の管理を行う制御回路(DSU)をプロセッサに付随させ、デバッグ専用のプローブをDSUに接続してデバッグを行う手法である。
【0004】
一般にプログラムの開発作業は、複数の開発グループによって作業が進められることが多い。この場合、開発グループによって情報の管理レベル、つまり情報が開示される範囲が異なる場合がある。従って、情報の管理レベルに応じて、情報が秘匿されなければならない。
【0005】
この点、情報の秘匿性を突き詰めると、秘匿すべき情報が存在する場合には、デバッグ自体を一切禁止するという手法が考え得る(例えば特許文献1参照)。しかし、この方法では開発効率が著しく低下する恐れがある。他方、開発効率のみを突き詰めれば、情報の秘匿性が全く考慮されないことになる。
【特許文献1】特開2006−072963号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
この発明は、情報の秘匿性を確保しつつ開発効率を向上出来る半導体集積回路装置及びその信号処理方法を提供する。
【課題を解決するための手段】
【0007】
この発明の一態様に係る半導体集積回路装置は、第1動作モードと第2動作モードとを有する半導体集積回路装置であって、暗号化されていないデータ及び暗号化されたデータを保持可能な第1メモリと、前記暗号化されたデータが平文に戻されたデータを保持可能な第2メモリと、前記第1メモリまたは第2メモリに保持される前記データを用いて処理を行い、前記第1動作モードにおいては前記デバッグ制御回路から独立して動作するプロセッサと、前記第2動作モードにおいて前記プロセッサの動作を制御するデバッグ制御回路と、前記第1メモリに保持される前記暗号化されたデータの正統性を認証するデータ認証部と、前記第2動作モードにおいてフラグを保持するレジスタと、前記第2メモリへのアクセスを制御する第2メモリ制御回路とを具備し、前記第2メモリ制御回路は、前記レジスタに前記フラグが保持されず、且つ前記データ認証部において前記データの正統性が認証された場合に、前記第2メモリへのアクセスを許可し、前記レジスタに前記フラグが保持される場合、及び前記正統性が認証されない場合に、前記第2メモリへのアクセスを禁止する。
【0008】
また、この発明の一態様に係る半導体集積回路装置の信号処理方法は、プロセッサとデバッグ制御回路とを備え、前記プロセッサが前記デバッグ制御回路から独立して動作する第1動作モードと、前記プロセッサが前記デバッグ制御回路に制御される第2動作モードとを有する半導体集積回路の信号処理方法であって、前記半導体集積回路が前記第2動作モードにあるか否かを監視し、前記第2動作モードにある期間、レジスタにフラグを保持させるステップと、前記プロセッサが第1メモリ内の暗号化データにアクセスした際、当該暗号化データの正統性を確認するステップと、前記暗号化データの前記正統性が確認され、且つ前記レジスタに前記フラグが保持されない場合に、前記第1メモリと異なる第2メモリへのアクセスが許可され、前記暗号化データの前記正統性が確認されないか、または前記レジスタに前記フラグが保持される場合に、前記第2メモリへのアクセスが禁止されるステップと、前記第2メモリへのアクセスが許可された場合に、前記暗号化データの平文が前記第2メモリへ格納され、前記プロセッサにより前記平文を用いた処理が行われるステップとを具備する。
【発明の効果】
【0009】
この発明によれば、情報の秘匿性を確保しつつ開発効率を向上出来る半導体集積回路装置及びその信号処理方法を提供出来る。
【発明を実施するための最良の形態】
【0010】
以下、この発明の実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【0011】
[第1の実施形態]
この発明の第1の実施形態に係る半導体集積回路装置及びその信号処理方法について、図1を用いて説明する。図1は、本実施形態に係る半導体集積回路装置のブロック図である。
【0012】
図示するように、本実施形態に係るLSI1は、CPU2、第1メモリ装置3、第2メモリ装置4、第2メモリ制御回路5、情報認証部6、暗号鍵保持部7、メモリインタフェース8、デバッグインタフェース9、及び周辺回路10を備えている。また本実施形態に係るLSI1は、通常動作モードとデバッグモードの2つの動作モードを有している。デバッグモードとは、例えばLSI1の開発段階において、デバッガ等によりLSI1の動作が外部から操られる動作モードである。
【0013】
CPU2は、プロセッサ11及びデバッグ制御回路(DSU)12を有している。プロセッサ11は、第1メモリ装置3及び第2メモリ装置4内に保持されるデータに基づいて、種々の信号処理を行う。またプロセッサ11は、通常動作モードにおいてはデバッグ制御回路12から独立して動作する。他方、デバッグモードにおいては、プロセッサ11はデバッグ制御回路12の支配下に置かれ、デバッグ制御回路12の制御に基づいて動作する。
【0014】
デバッグ制御回路12は、デバッグモードにおいて、プロセッサ11の動作を制御する。またデバッグ制御回路12は、その内部に第1レジスタ13を備えている。そして、デバッグモード時に、第1レジスタ13内においてフラグを立てる。より具体的には、第1レジスタ13に“1”を保持させる。このフラグは、第2メモリ制御回路5へ与えられる。
【0015】
第1、第2メモリ装置3、4は、例えばRAM等の半導体メモリである。そして第1、第2メモリ装置3、4は、プロセッサ11が処理を行うために必要なデータを保持する。特に暗号化されたデータを解読して得られた平文は、第2メモリ装置4においてのみ保持される。
【0016】
情報認証部6は、プロセッサ11の命令に従って、第1メモリ装置3内のデータの正統性を検証する。すなわち、プロセッサ11がこれから使用しようとするデータのコードが改竄されていないか否かを検証する。そして、改竄されていないことが確認されると、情報認証部6は、第2メモリ制御回路5へトリガを出力する。
【0017】
第2メモリ制御回路5は、第2レジスタ14を備えている。第2レジスタ14には、第2メモリ装置4へのアクセスの禁止の旨の情報が、プロセッサ11によって書き込まれる。そして第2メモリ制御回路5は、第1レジスタ13及び第2レジスタ14の保持する情報と、情報認証部6における検証結果に基づいて、第2メモリ装置4へのアクセスを禁止、または許可する。アクセスを禁止するか許可するかの基準については後述する。
【0018】
暗号鍵保持部7は、レジスタや半導体メモリ等の記憶装置であり、暗号化されたデータを解読する際に使用する暗号鍵15を保持する。
【0019】
メモリインタフェース8は、LSI1と外部記憶装置30とを接続する。外部記憶装置30は、例えばフラッシュEEPROM(Electrically Erasable and Programmable ROM)等である。
【0020】
デバッグインタフェース9は、LSI1とデバッガ20とを接続する。そして、デバッグインタフェース9を介して、デバッガ20がデバッグ制御回路12に接続される。デバッグインタフェース9は、例えばJTAG(Joint Test Action Group)ポートである。デバッガ20はデバッグモードにおいて、デバッグ用プローブ21を介してデバッグ制御回路12との通信を行い、プロセッサ11の挙動を制御する。
【0021】
一般にデバッグ制御回路(DSU)には、デバッグ用プローブが接続されたことを示す信号が備わっている。プロセッサによっては、デバッグ時には、専用のモード(例えばデバッグモード)に移行するように設計されている。このような設計においては、デバッグ用プローブが接続されたことを示す信号は、プロセッサがデバッグモードに移行することを示す信号として使用されている。
【0022】
また例えば、EJTAG(Enhanced JTAG)仕様では、デバッグ制御回路に備えられたレジスタにデバッグモードを示すレジスタが割り当てられている。また、デバッグ用プローブがデバッグインタフェースに接続されていることを示す信号ProbEnableが定義されている。
【0023】
そこで本実施形態においても、デバッグ用プローブ21がデバッグインタフェース9に接続されていることを示す信号を、LSI1がデバッグモードにあるか否かの判断基準の一つとして用いても良い。つまり、上記信号ProbEnableが第1レジスタ13に書き込まれると共に、第2メモリ制御回路5へ与えられても良い。
【0024】
しかし、LSI1がデバッグモードにあるということと、デバッグ用プローブ21がデバッグインタフェース9に接続されているということは必ずしも同義ではない。すなわち、デバッグ用プローブ21がデバッグインタフェース9に接続されていてもLSI1がデバッグモードに無い(通常動作モードにある)場合もあるし、接続されていなくてもデバッグモードにある場合もある。従ってデバッグ制御回路12は、デバッグ用プローブ21の接続に関わらず、LSI1がデバッグモードにある場合に、第1レジスタ13にフラグを立てる。
【0025】
周辺回路10は、上記説明した回路ブロックの他に、LSI1として必要な機能を実現する回路ブロックである。
そして、CPU2と、第1、第2メモリ装置3、4、第2メモリ制御回路5、情報認証部6、暗号鍵保持部7、メモリインタフェース8、及び周辺回路10は、バスによって接続されている。
【0026】
次に、本実施形態に係るLSI1において、暗号化されたデータを取り扱うため方法の概要を説明する。まずプロセッサ11はリセット後に、外部記憶装置30に保持されるプログラムを実行する。そのプログラムに従って、プロセッサ11はプログラムの一部を、外部記憶装置30からLSI1内の第1メモリ装置3へコピーし、そのコピーしたプログラムにジャンプする。
【0027】
第1メモリ装置3へコピーされたプログラムのうち、暗号化されたものの構成について、図2を用いて説明する。図2は、第1メモリ装置3のメモリ空間の概念図であり、第1メモリ装置3にコピーされた暗号化データ(プログラム)のアドレスマップを示したものである。
【0028】
図示するように、暗号化された情報を含むプログラムは、暗号化されたコードと、暗号化されたコードを解読するための解読コードとを含んでいる。図2の例であると、アドレスが“0x8001_0000”〜“0x8002_7FFF”の領域に、ある暗号化プログラムが保持され、そのうちの“0x8001_0000”〜“0x8001_0FFF”の領域に解読コードが保持され、“0x8001_1000”〜“0x8002_7FFF”の領域に暗号化されたコードが保持される。また、アドレスが“0x8003_0000”〜“0x8003_FFFF”の領域に、別の暗号化プログラムが保持され、そのうちの“0x8003_0000”〜“0x8003_0FFF”の領域に解読コードが保持され、“0x8003_1000”〜“0x8003_FFFF”の領域に暗号化されたコードが保持される。なお、アドレスの先頭に付与した“0x”は、当該アドレスが16進数で表記されていることを示す。
【0029】
プロセッサ11が、上記のような暗号化された情報を含むプログラムを取り扱う場合、プロセッサ11は、このプログラムが改竄されていないかどうかを情報認証部6にチェックさせる。チェックの結果プログラムの正統性が確認された場合、第2メモリ装置へのアクセスが許可される。
【0030】
その後、解読コードによって暗号が解読される。暗号鍵保持部7が保持する暗号鍵15は、この暗号を解く際に用いられる。暗号を解読して得られた平文は、第2メモリ装置4へ記憶される。そこでプロセッサ11は、解読コードの最後のコードから、平文にされたコードへジャンプし、平文にされたコードを実行する。その後は、平文にされたコードのうちの重要な部分を第2メモリ装置4から削除して、第1メモリ装置3内のコードにジャンプする。その後、プロセッサ11が第2メモリへのアクセスを禁止する旨の情報を第2レジスタ14に書き込むことにより、第2メモリへのアクセスは禁止される。
【0031】
次に第2メモリ装置4へのアクセスの許可/禁止の判断方法について図3を用いて説明する。図3は、第2メモリ装置4へのアクセスの許可/禁止の判断方法のフローチャートであり、本判断は第2メモリ制御回路5で行われる。
【0032】
まず第2メモリ制御回路5は、情報認証部6における検証の結果、プロセッサ11によりアクセスされた第1メモリ装置3内のデータが正統でなかった場合(ステップS10、NO)には、第2メモリ装置4へのアクセスを禁止する(ステップS11)。正統であった場合(ステップS10、YES)でも、LSI1がデバッグモードにある場合(ステップS12、YES)には、第2メモリ装置4へのアクセスを禁止する(ステップS11)。デバッグモードにあるか否かは、デバッグ制御回路12の第1レジスタ13内のフラグによって判断出来る。
【0033】
また、デバッグモードでは無く通常動作モードであったとしても(ステップS12、NO)、プロセッサ11より第2メモリ装置4へのアクセス禁止の指示が為されるか(ステップS13、YES)、またはプロセッサ11に対して割り込み処理等の例外処理が為された場合(ステップS14、YES)には、第2メモリ装置4へのアクセスは禁止される(ステップS11)。アクセス禁止の指示がなされたか否かは、第2レジスタ14の内容を参照することで把握出来る。通常動作モードであり(ステップS12、NO)、アクセス禁止の指示も無く(ステップS13、NO)、例外処理も為されていない(ステップS14、NO)場合には、第2メモリ制御回路5は第2メモリ装置4へのアクセスを許可する(ステップS14)。
【0034】
すなわち、第2メモリ装置4へのアクセスの許可/禁止の条件をまとめると、図4の通りとなる。図4は、上記条件をまとめた表である。図示するように第2メモリ制御回路5は、デバッグモードにおいては無条件で第2メモリ装置4へのアクセスを禁止する。また、通常動作モードであっても、データに正統性が無いか、アクセス禁止の指示が為されたか、または例外処理が為された場合には、第2メモリ装置4へのアクセスは禁止される。そして、通常動作モードであって、データに正統性があり、アクセス禁止の指示も無く、また例外処理も為されていない場合にのみ、第2メモリ制御回路5は第2メモリ装置4へのアクセスを許可する。
【0035】
上記のように、第2メモリ装置4はアクセスが禁止される状態と許可される状態と2つの状態を有する。図5は、第2メモリ装置4の2つの状態の状態遷移図である。図示するように、電源投入直後等、リセット動作の直後は、第2メモリ装置4はアクセスを禁止された状態にある。その状態において、情報認証部6でデータの正統性が認証されると(条件A)、第2メモリ装置4はアクセス許可状態へと遷移する。その後、LSI1がデバッグモードへ移行するか(条件B)、アクセス禁止の指示がなされるか(条件C)、またはプロセッサ11に割り込みがかかり、割り込みベクタへジャンプする等の例外処理がなされる(条件D)と、第2メモリ装置4はアクセス禁止状態へと遷移する。つまり、第2メモリ装置4は原則、アクセス禁止状態である。そして、通常動作モードで正統性が認証された場合に、アクセス許可状態となる。
【0036】
次に、本実施形態に係るLSI1の動作について、通常動作モードにおいて暗号化データに対してアクセスがなされた場合を例に、図6を用いて説明する。図6は、LSI1の動作のフローチャートである。
【0037】
まず、プロセッサ11が外部記憶装置30からプログラムを第1メモリ装置3へ転送し、転送したプログラムに従って処理を実行する。この時点においては、第2メモリ装置4へのアクセスは禁止された状態である。そして、いずれかの時点において、暗号化されたプログラムに対してアクセスしたとする(ステップS20)。すると、情報認証部6において、当該プログラムについての正統性の確認処理が開始される(ステップS21)。この正統性の確認処理において情報認証部6は、与えられたコードがオリジナルのコードであって改竄がなされていないか否かをチェックする。コードの正統性の確認方法については、既に多くの研究がなされており、それらのうちのいずれかの方法を採用すれば良く、例えば、もっと簡易な例は、チェックサムを用いる方法である。
【0038】
正統性の確認処理にあたって情報認証部6は、まず正統性を確認するコードの領域を指定するため、コードの先頭アドレスおよびコードサイズの情報が、情報認証部6のレジスタ(図示せず)に設定される(ステップS22)。次に、プロセッサ11により情報認証部6に対して、正統性を確認する作業の開始を指示される(ステップS23)。この指示は例えば、プロセッサ11が情報認証部6の確認動作開始を指示するレジスタに、ライト動作をすることで行われる。この指示に従って、情報認証部6は指定されたデータの正統性をチェックする(ステップS24)。
【0039】
チェックの結果、コードが改竄されていた場合、つまり正統で無い場合(ステップS25、NO)には、正統性の確認の対象となったデータは不正である旨を、情報認証部6がプロセッサ11及び第2メモリ制御回路5へ通知する(ステップS26)。この通知により、第2メモリ制御回路5は、第2メモリ装置4へのアクセスを禁止する(ステップS27)。
【0040】
チェックの結果、コードが改竄されていない場合、つまり正統である場合(ステップS25、YES)には、第2メモリ装置4へのアクセスを許可するためのトリガ信号を、情報認証部6は第2メモリ制御回路5へ出力する(ステップS28)。すると、トリガ信号を受けた第2メモリ制御回路5が、第2メモリ装置4へのアクセスを許可する(ステップS29)。
【0041】
情報認証部6は、上記のようにデータが不正であった旨の通知、またはトリガ信号の出力を行うと、初期状態に戻る。
【0042】
第2メモリ装置4へのアクセスが許可されたことを受けて、プロセッサ11は暗号化データを解読して平文に戻し、平文にされたプログラムを第2メモリ装置4に展開する(ステップS30)。そして、第2メモリ装置4内において平文にされたプログラムを用いて、プロセッサ11が処理を行う(ステップS31)。
【0043】
平文にされたプログラムを用いた処理が終了すると(ステップS32、YES)、プロセッサ11は第2メモリ装置4内のプログラムを削除する(ステップS33)。そしてプロセッサ11は、第2メモリ装置4の使用を禁止する旨の情報を、第2レジスタ14に書き込む(ステップS34)。すると第2メモリ制御回路5は、第2レジスタ14への書き込みを受けて、第2メモリ装置4へのアクセスを禁止する(ステップS27)。
【0044】
なお、上記の処理を行っている間、第2メモリ制御回路5は第2レジスタ14の内容を常時監視しており、また第1レジスタ13にフラグが立った際、またはプロセッサ11に割り込みがかかった際には、速やかにその情報が第2メモリ制御回路5に与えられる。従って、第1レジスタ13にフラグが立った場合、つまりLSI1がデバッグモードに移行すると、プロセッサ11の処理が途中であっても、第2メモリ制御回路5は第2メモリ装置4へのアクセスを禁止する。プロセッサ11に対して割り込みがなされた場合も同様である。このように、暗号化されたコードに相当する箇所が実行されている期間にデバッグイベントが発生した場合には、第2メモリ制御回路5は速やかに第2メモリ装置4へのアクセスを禁止する。
【0045】
上記処理の流れの具体例を、図7を用いて説明する。図7は、LSI1及び外部記憶装置30のメモリ空間の模式図であり、特に外部記憶装置30、第1メモリ装置3、及び第2メモリ装置4内に保持されるデータの流れについて示している。なお、図7において「ROM」と記載した領域が外部記憶装置30のメモリ空間に相当する。
【0046】
図示するように、外部記憶装置30のメモリ空間の先頭アドレスは“0x0000_0000”であり、第1メモリ装置3の先頭アドレスは“0x8000_0000”であり、第2メモリ装置4の先頭アドレスは“0xA000_0000”である。そして、プロセッサ11が初期動作時にジャンプするアドレスが“0x0000_0000”であったとする。ここには、初期設定用のプログラムAが保持されており、プロセッサ11はプログラムAを実行する(図7の時刻t0)。
【0047】
プログラムAに従った初期処理が完了するとプロセッサ11は、引き続きプログラムAに従って、外部記憶装置30内における必要なプログラムをLSI1の第1メモリ装置3へコピーし、コピーした先のアドレスにジャンプする。図7では一例として、外部記憶装置30内のプログラムB、Cが第1メモリ装置3へコピーされる場合について示している(時刻t1)。またプログラムBは暗号化されたコードを含むプログラムであったとする。
【0048】
プロセッサ11はプログラムAの実行後にプログラムBを実行するが、プログラムBは暗号化されているため、実行前に情報認証部6に対してプログラムBの正統性をチェックさせる(時刻t2)。プログラムBは、先に図2を用いて説明したように、暗号化されたコードを解くための解読コードB−1と、暗号化されたコードB−2とを含んでおり、情報認証部6はコードB−1、B−2の両方について正統性をチェックする。
【0049】
情報認証部6によりコードB−1、B−2の改竄が行われていないことが確認されると、第2メモリ制御回路5が第2メモリ装置4へのアクセスを許可する。従ってプロセッサ11は、コードB1に書かれたプログラム従って、暗号化されたプログラムB−2を第2メモリ装置4へコピーする。そしてプログラムB−2の暗号が、暗号鍵保持部7内の暗号鍵15等を用いて平文に戻される(時刻t3)。
【0050】
その後、プロセッサ11は平文にされたプログラムB−2’へジャンプし、プログラムB−2’を実行する。すなわち、暗号化されていたプログラムコードが実行される(時刻t4)。
【0051】
プロセッサ11は、プログラムB−2’における最後の処理として、プログラムB−2’について処理を行った箇所の重要なコードを第2メモリ装置4から削除し、その後、第1メモリ装置3内のコードB−1の後半にジャンプする(時刻t5)。更にプロセッサ11は、第2メモリ装置4を用いた処理が終了したので、第2メモリ装置4へのアクセスを禁止する旨の情報を第2レジスタ14に書き込む。これにより、第2メモリ制御回路5が第2メモリ装置4へのアクセスを禁止する。上記の処理が完了すると、プロセッサ11は、次のプログラムCへジャンプする。
【0052】
上記処理において、プロセッサ11が平文にされたコードを実行している最中、つまり時刻t3〜t4の期間において、LSI1がデバッグモードに移行する、またはプロセッサ11に対して割り込み処理が発生する等した場合には、第2メモリ制御回路5が第2メモリ装置4へのアクセスを禁止する。すなわち、処理は中断される。
【0053】
通常動作モード時にプロセッサ11は、インストラクションを外部記憶装置30からフェッチして、そのインストラクションに応じて信号処理を実施する。他方、デバッグモード時には、インストラクションをフェッチする先が外部記憶装置30ではなくデバッグインタフェース9である以外は、プロセッサ11は通常動作モードと同じようにインストラクションをフェッチして、そのインストラクションに応じて命令を実行する。
【0054】
そしてプロセッサ11が第2メモリ装置4にアクセスできるということは、デバッガ20が当該メモリ装置4へアクセスすることができるということを意味する。これは、デバッグ制御回路12が直接第2メモリ装置4にアクセスするのではなく、デバッグ制御回路を通じてプロセッサ11の実行する命令を変更し、これによって第2メモリ装置4にアクセスするようにすれば良いためである。
【0055】
そこで本実施形態では、守りたい情報を格納するメモリ(第2メモリ装置4)へのアクセスが許可されている間に、プロセッサ11の挙動を外部から操る事象が起きたことを検知する手段(第2メモリ制御回路5)を設けている。これによって、守るべき情報が格納された第2メモリ装置4に対して、所定の手順ではない方法によりアクセスされることを防止している。
【0056】
上記のように、この発明の第1の実施形態に係るLSIであると、下記(1)の効果が得られる。
(1)情報の秘匿性を確保しつつ開発効率を向上出来る。
本実施形態に係るLSIであると、暗号化されたプログラムについては、当該プログラムの改竄が行われていないことを確認した上で暗号を解いている。また、平文が存在する間に、プロセッサの挙動を外部から操る事象が起きたことが検知された際には、守るべき情報へのアクセスを遮断する。これにより、情報の秘匿性を確保しつつ、開発効率を向上出来る。本効果について、以下詳細に説明する。
【0057】
背景技術でも述べたように、近年は、デバッグ用の制御回路をプロセッサに付随させる手法が広く用いられてきている。デバッグ用の制御回路がLSI内部にあるということは、セキュリティの観点からは有利である。さらに近年のSoC(System on Chip)では、メモリもLSI内に設けられることが多い。この構成は、外部からメモリの情報をモニタできないため、セキュリティの観点からは有利である。
【0058】
ところで、プログラムの開発過程においては、複数の開発グループにより並行して進められることが多い。しかしながら、開発グループによって情報の管理レベル、つまり情報が開示される範囲が異なる場合がある。この場合には、情報の管理レベルに応じてプログラム自体が秘匿されなければならない。
【0059】
秘匿方法として簡単なのが、秘匿しておきたい箇所については、バイナリコードとしておく方法である。しかしながら、通常、開発グループは開発環境を有しており、バイナリコードの逆アセンブル表示などは容易に行うことが出来てしまう。そこで、秘匿しておきたい箇所のバイナリコードを暗号化する手法がある。本手法によれば、プログラムがLSI内部のメモリに取り込まれた後に、暗号化しておいたコードを復号するプログラムによって平文コードに戻される。
【0060】
しかしながら上記のような暗号化を用いた秘匿を実施したとしても、デバッガを用いれば、プロセッサの挙動を自由に操ることが可能であるため、暗号化されていたコードが復号された段階で内部のRAMの内容を参照することは可能である。よって、単に暗号化を行っただけでは秘匿の効果がない。当然の事ながら、通常、開発グループは、デバッガを有している。
【0061】
また、情報の管理レベルが異なる開発グループが集まって開発を進める場合に、情報の秘匿を確実に行うためには、デバッガのプローブの接続をハードウエア的に切り離す等の処置により、デバッガの接続を不可にしてしまうことが確実な方法である。しかし、デバッガ接続が常に不可であると、開発効率は著しく低下する。このため、情報の管理レベルに応じて、守るべき情報が含まれる箇所が守られる機構の実現が望まれる。
【0062】
別の手法として、暗号化された情報にアクセスできないようにするためには、当該LSIに接続するデバッガ側の機能を制限することによって対処することも可能である。しかし、この場合であっても、同じタイプのプロセッサを使用している他の応用向けのデバッガ(機能が制限されていないデバッガ)を接続することで、プロセッサの挙動を自由に操ることが出来てしまう。
【0063】
また例えデバッガを用いなくとも、オリジナルのプログラムを改竄することで、秘匿された情報の暗号が解かれる場合もあり得る。この場合でも、暗号が解かれた情報は守られなくてはならない。
【0064】
なお、秘匿しておきたい情報とは、例えば付加価値の高い部分である。LSIの付加価値は、より高機能な信号処理が実装されているかどうかによって異なる。そしてLSIを販売する際には、付加価値の違いによって売価が異なることが普通である。つまり、より高機能な信号処理を行うことが出来るLSIは値段が高い。そして近年のSoCのように信号処理をプロセッサが行う場合、より高機能な信号処理が実装されていたとしても、それは従来とプログラムの一部が異なるだけである。そしてこのプログラムは、LSI外部のROMに格納されることが多い。従って、例えプログラムが秘匿されていても、安価なLSIを購入してこのLSIに付加価値の高いプログラムをコピーするだけで、付加機能が実現できてしまうことになる。
【0065】
以上のことから、情報の価値のレベルに応じて、守るべき情報が含まれる箇所が守られる機構の実現が望まれていた。
【0066】
この点、本実施形態に係る構成であると、LSI1内部に情報認証部6を設け、情報認証部6においてプログラムの正統性が認証された場合にのみ、第2メモリ制御回路5が第2メモリ装置4へのアクセスを許可する。すなわち、正統性が認証された場合にのみ、暗号化されたプログラムは平文に戻され、実行可能な状態とされる。
【0067】
更に本実施形態では、デバッグモードにある期間にフラグを立てる第1レジスタ13を設け、また第2メモリ制御回路5は第1レジスタ13を監視すると共に、プロセッサ11に割り込み処理等の例外処理が為されたか否かを監視する。そして、第2メモリ装置4に平文が存在している期間に、第1レジスタ13にフラグが立つか、またはプロセッサ11に例外処理が為された場合、つまりプロセッサ11の挙動を外部から操る事象が起きた際には、第2メモリ装置4へのアクセスを禁止する。すなわち、暗号化されたプログラムの平文へのアクセスを遮断する。
【0068】
従って、外部から秘匿すべき情報を不正なアクセスから防止出来る。
【0069】
また、本実施形態に係る構成であると、上記のように情報を秘匿しつつ、デバッグが可能となり、LSIの開発効率を向上出来る。プログラムの開発工程で行われるデバッグ動作について、以下説明する。
【0070】
プロセッサのプログラム開発においては、プロセッサの動作を任意に止め、その時のメモリの内容を確認したり、レジスタの内容を確認したりすることで、そのプログラムが所望の挙動をしているかどうかを確認する作業が行われる。このため、プロセッサの動作を自由に制御したり、任意のメモリの内容をダンプしたり出来るデバッガが非常に有用である。
【0071】
LSIは、(a)デバッガ側から、プロセッサの制御をDSUの制御下にゆだねるような設定を行うこと、もしくは、(b)プロセッサがデバッグモード状態になるような命令を実行すること、もしくは、(c)プロセッサが所定のアドレスのプログラムを実行すること、などによって、デバッグモード状態となる。
【0072】
上述の(a)は、例えば、プロセッサがプログラムを実行であるときに、デバッガの使用者が強制的にプログラムを停止させたりする場合であり、(b)及び(c)は、デバッガ側から予め、プログラムの挙動を観測したい箇所に、デバッグモードに移行する命令を置いておく、もしくは、プログラムの挙動を観測したい箇所のアドレスをDSUに設定しておき、プロセッサがそのプログラムを実行した場合である。この(b)及び(c)の例のように、プロセッサの処理がプログラムの挙動を観測したい箇所に達したら、デバッグモードに移行するように設定することを、「ブレークポイントを設定する」と言う。
【0073】
プログラムの動作を確認する作業の時には、プロセッサをデバッグモードにして、プログラムを単一実行(ステップ実行)させたり、観測対象のプログラム位置でプログラムを停止させたりする。このような操作は、デバッガが接続されていれば容易に行うことが出来る。
【0074】
このようにデバッガを用いれば、プロセッサの動作を任意に操ることが可能となってしまう。このため、このままでは、LSIが有する任意の情報にアクセスできるようになってしまう。プログラムの開発作業のように、複数の開発グループによって作業が進められる場合には、情報の管理レベル(情報の開示レベル)に応じた情報の秘匿が必要である。
【0075】
プログラム開発の観点からは、LSIのプログラムの一部に秘匿しておきたい部分(例えば特定の信号処理のプログラム)などが含まれる場合に、プログラムの開発が滞るようなことは避けることが望ましい。この点、本実施形態に係るLSIによれば、秘匿しておきたい部分の実行中にデバックモードに入らなければ、つまり、秘匿しておきたい情報の平文が存在する時にデバックモードに入らなければ、デバッグ作業を継続することが可能である。
【0076】
この点につき、図7の場合を例に挙げて説明する。秘匿しておきたい情報(プログラムB−2)を扱うための第2メモリ装置4へのアクセスは、図7の時刻t2における正統性のチェックの後、許可される。次に時刻t3において、プログラムB−2が第2メモリ装置4へコピーされ、平文に戻される。そして時刻t4において、第2メモリ装置4内にある平文のプログラムB−2’が実行される。
【0077】
秘匿しておきたい情報(B−2)が正しく平文(B−2’)に戻され、かつその平文のプログラム(B−2’)が正常に実行されるようにするためには、第2メモリ装置4へのアクセスが正常に行われる必要がある。この点、プログラムの正統性が確認されてから、第2メモリ装置4におけるプログラムの処理が終了するまでの間(時刻t2〜t4)に、LSI1がデバックモードに入らなければ、この処理は正常に実行される。
【0078】
従って本実施形態に係る構成であると、秘匿された情報に関与するプログラムではないところに、ブレークポイントを設定したり、プログラムのステップ実行を行ったりすることは差し支えない。つまり、デバッグを行う際には、秘匿された情報に関与するプログラムの手前で、デバッガ20によりプロセッサ11がデバッグモードから抜けるようにプログラムを実行させれば良い。そして、秘匿された情報に関与するプログラムが終了した後の箇所にブレークポイントを設定しておけば、再度デバッグモードに入り、プロセッサ11の動作を任意に操ったり、プログラムのステップ実行を行ったりすることができる。例えば図7の例であれば、プログラムAの実行の時点にブレークポイントを設定したとすると、プログラムAの最後の部分でデバッガ20がプロセッサ11を通常動作モードに戻す。そして、プログラムCの初めにブレークポイントを設定すれば、再度プログラムC実行時点からデバッグモードに入ることが出来る。
【0079】
すなわち、秘匿された情報に触れなければデバッグ作業を継続することができ、情報の開示レベルに応じた情報管理が可能となる。そのため、プロセッサの開発効率を向上出来る。
【0080】
[第2の実施形態]
次に、この発明の第2の実施形態に係る半導体集積回路装置及びその信号処理方法について説明する。本実施形態は、上記第1の実施形態において、複数の種類の正統性の検証方法を使用可能としたものである。図8は、本実施形態に係るLSIのブロック図である。
【0081】
図示するように、本実施形態に係るLSI1は、上記第1の実施形態で説明した図1の構成において更にROM16を備えた構成を有している。ROM16は、例えばフラッシュEEPROMやマスクROMであり、情報認証部6で正統性を検証すべきデータと、その際に使用すべき検証方法との対応関係を保持する。この関係は、ROM16が例えばフラッシュEEPROMであれば所定の書き込み手順によりROM16内に書き込まれ、マスクROMであれば、LSI製造時に使用するマスクを変えることで書き込まれる。
【0082】
情報認証部6は、予め複数の検証方法を実装し、ROM16に記載された関係に応じて、使用する検証方法を選択する。
【0083】
情報認証部6及びROM16の構成について図9を用いて説明する。図9は、情報認証部6及びROM16のブロック図である。図示するように、ROM16はテーブル40を保持している。テーブル40には、正統性を検証すべきデータと、検証の際に使用すべき検証方法との対応関係が書き込まれている。図9の例であると、プログラムA〜Cのそれぞれの正統性を検証する際には、検証方法A〜Cを使用すべきことが書き込まれている。
【0084】
情報認証部6は、検証部17、検証方法保持部18、及び検証方法選択部19を有している。検証部17は、検証方法保持部18から与えられる検証方法を用いて、検証すべきデータについて正統性をチェックする。そして検証結果を第2メモリ制御回路5へ出力する。検証方法保持部18は、正統性の検証方法を複数保持する。図9の例であると、検証方法保持部18は、3つの検証方法A〜Cを保持する。検証方法選択部19は検証すべきデータを受け、ROM16内のテーブル40を参照して、使用すべき検証方法を決定する。そしてその旨を検証方法保持部18へ出力する。
【0085】
例えば、検証すべきデータがプログラムBであったとする。すると検証方法選択部19は、テーブル40を参照することによって適用すべき検証方法が検証方法Bであることを把握し、その旨を検証方法保持部18へ出力する。すると、検証方法保持部18から検証方法Bが検証部17に与えられ、検証部17がプログラムBの正統性を、検証方法Bを用いてチェックする。
その他の構成及び動作は第1の実施形態と同様であるので説明は省略する。
【0086】
上記のように、この発明の第2の実施形態に係るLSIであると、上記第1の実施形態で説明した(1)の効果に加えて、下記(2)の効果が得られる。
(2)情報の秘匿性をより向上出来る。
本実施形態に係る構成であると、正統性を検証すべきデータに応じて検証方法を変えている。従って、守るべき情報の価値レベルに応じて、秘匿レベルを変えることが出来る。また、LSI1の外部の外部記憶装置30に格納されたプログラムを単純にコピーしただけでは、当該プログラムは動作しないため、秘匿性をより向上出来る。
【0087】
上記のように、この発明の第1、第2の実施形態に係る半導体集積回路装置及びその信号処理方法であると、暗号化されたデータについて正統性を情報認証部6がチェックし、正統性が確認された場合にのみ、暗号化されたデータの実行が許される。そして、暗号化されたデータが実行されている期間にLSIがデバッグモードに移行した場合や、またプロセッサ11に対して割り込みがなされた場合には、暗号化されたデータの実行は中断される。従って、暗号化データを秘匿出来る。また、暗号化されたデータの実行中でなければ、LSI1のデバッグ処理を正常に行うことが可能である。従って、暗号化データを秘匿しつつ、開発効率を向上させることが出来る。
【0088】
なお、上記実施形態では、データの正統性が認証された場合に第2メモリ装置4へのアクセスが許可される場合について説明した。しかし、暗号鍵15についても同様の処理を行っても良い。つまり、情報認証部6において正統性が認証された場合にのみ、暗号鍵保持部7へのアクセスが許可され、これによりプロセッサ11は暗号鍵15を用いて暗号化データを解読出来る。このようにすることで、より情報の秘匿性を向上出来る。
【0089】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【図面の簡単な説明】
【0090】
【図1】この発明の第1の実施形態に係るLSIのブロック図。
【図2】暗号化データの構造を示す模式図。
【図3】この発明の第1の実施形態に係るLSIにおいて、第2メモリ装置へのアクセスの許可/禁止の判断の流れを示すフローチャート。
【図4】この発明の第1の実施形態に係るLSIにおいて、第2メモリ装置へのアクセスの許可/禁止の判断の基準を示す表。
【図5】この発明の第1の実施形態に係るLSIの備える第2メモリ装置の状態遷移図。
【図6】この発明の第1の実施形態に係るLSIの処理の流れを示すフローチャート。
【図7】この発明の第1の実施形態に係るLSIにおけるアドレス空間の模式図であり、暗号化データの処理を行う際の様子を示す図。
【図8】この発明の第2の実施形態に係るLSIのブロック図。
【図9】この発明の第2の実施形態に係るLSIの備える情報認証部6及びROM16のブロック図。
【符号の説明】
【0091】
1…LSI、2…CPU、3…第1メモリ装置、4…第2メモリ装置、5…第2メモリ制御回路、6…情報認証部、7…暗号鍵保持部、8…メモリインタフェース、9…デバッグインタフェース、10…周辺回路、11…プロセッサ、12…デバッグ制御回路、13…第1レジスタ、14…第2レジスタ、15…暗号鍵、16…ROM、17…検証部、18…検証方法保持部、19…検証方法選択部、20…デバッガ、21…プローブ、30…外部記憶装置、40…テーブル

【特許請求の範囲】
【請求項1】
第1動作モードと第2動作モードとを有する半導体集積回路装置であって、
暗号化されていないデータ及び暗号化されたデータを保持可能な第1メモリと、
前記暗号化されたデータが平文に戻されたデータを保持可能な第2メモリと、
前記第1メモリまたは第2メモリに保持される前記データを用いて処理を行い、前記第1動作モードにおいては前記デバッグ制御回路から独立して動作するプロセッサと、
前記第2動作モードにおいて前記プロセッサの動作を制御するデバッグ制御回路と、
前記第1メモリに保持される前記暗号化されたデータの正統性を認証するデータ認証部と、
前記第2動作モードにおいてフラグを保持するレジスタと、
前記第2メモリへのアクセスを制御する第2メモリ制御回路と
を具備し、前記第2メモリ制御回路は、前記レジスタに前記フラグが保持されず、且つ前記データ認証部において前記データの正統性が認証された場合に、前記第2メモリへのアクセスを許可し、
前記レジスタに前記フラグが保持される場合、及び前記正統性が認証されない場合に、前記第2メモリへのアクセスを禁止する
ことを特徴とする半導体集積回路装置。
【請求項2】
前記第2メモリ制御回路は更に、前記プロセッサに対して割り込み処理がなされた際に、前記第2メモリへのアクセスを禁止する
ことを特徴とする請求項1記載の半導体集積回路装置。
【請求項3】
前記第1メモリに保持された前記データと、前記データに応じて使用すべき前記正統性の認証方法との関係を保持する第3メモリを更に備え、
前記データ認証部は複数の前記認証方法を保持し、且つ前記第3メモリに保持される前記関係に基づいて、使用すべき前記正統性の認証方法を選択する
ことを特徴とする請求項1記載の半導体集積回路装置。
【請求項4】
プロセッサとデバッグ制御回路とを備え、前記プロセッサが前記デバッグ制御回路から独立して動作する第1動作モードと、前記プロセッサが前記デバッグ制御回路に制御される第2動作モードとを有する半導体集積回路の信号処理方法であって、
前記半導体集積回路が前記第2動作モードにあるか否かを監視し、前記第2動作モードにある期間、レジスタにフラグを保持させるステップと、
前記プロセッサが第1メモリ内の暗号化データにアクセスした際、当該暗号化データの正統性を確認するステップと、
前記暗号化データの前記正統性が確認され、且つ前記レジスタに前記フラグが保持されない場合に、前記第1メモリと異なる第2メモリへのアクセスが許可され、前記暗号化データの前記正統性が確認されないか、または前記レジスタに前記フラグが保持される場合に、前記第2メモリへのアクセスが禁止されるステップと、
前記第2メモリへのアクセスが許可された場合に、前記暗号化データの平文が前記第2メモリへ格納され、前記プロセッサにより前記平文を用いた処理が行われるステップと
を具備することを特徴とする半導体集積回路の信号処理方法。
【請求項5】
前記第2メモリへのアクセスが許可されている期間において、前記レジスタに前記フラグが保持されるか、または前記プロセッサに対して割り込み処理がなされた場合に、前記第2メモリへのアクセスを禁止するステップを更に備える
ことを特徴とする請求項4記載の半導体集積回路の信号処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2009−25907(P2009−25907A)
【公開日】平成21年2月5日(2009.2.5)
【国際特許分類】
【出願番号】特願2007−186138(P2007−186138)
【出願日】平成19年7月17日(2007.7.17)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】