(57)【要約】【課題】不揮発デバイスを内蔵した半導体集積回路について、不揮発デバイスに実装したデータの機密性を保ちつつテストを行い、エラーがあった場合にエラー位置を特定することを可能とする。【解決手段】チェック演算回路２５は、不揮発デバイス１０から読み出された機密情報データに対し、機密ＣＲＣデータ生成のための演算に相当する演算を実行する。比較回路２６は、チェック演算回路２５の演算結果と不揮発デバイス１０から読み出された機密ＣＲＣデータとの比較を行う。比較結果が不一致でありエラーが検出された場合、暗号処理回路４２は、機密情報データと機密ＣＲＣデータを秘密鍵レジスタ４１に格納された秘密鍵を用いて暗号化し、半導体集積回路外部に出力する。【選択図】図１
2007213718.tif 000002
【特許請求の範囲】
【請求項１】
機密情報データを格納する不揮発デバイスを内蔵した半導体集積回路であって、
前記不揮発デバイスは、格納したデータが当該半導体集積回路外部に読み出し不能なように構成されており、
前記機密情報データに所定の演算を施して得たチェック用冗長データを、記憶する冗長データ記憶手段と、
前記冗長データ記憶手段に記憶されたチェック用冗長データを用いて、前記不揮発デバイスのテストを行うためのテスト回路とを備え、
前記テスト回路は、
前記不揮発デバイスから読み出された機密情報データに対し、前記所定の演算に相当する演算を実行するチェック演算回路と、
前記チェック演算回路の演算結果と、前記冗長データ記憶手段に記憶されたチェック用冗長データとの比較を行う比較回路と、
前記機密情報データおよび前記チェック用冗長データに対して、所定の秘密鍵を用いて、暗号化を行う暗号処理回路とを備え、
前記比較回路の比較結果として、前記演算結果と前記チェック用冗長データとの不一致が検出されたとき、前記暗号処理回路の暗号化結果を当該半導体集積回路外部に出力する
ことを特徴とする半導体集積回路。
【請求項２】
請求項１記載の半導体集積回路において、
前記冗長データ記憶手段は、前記不揮発デバイスである
ことを特徴とする半導体集積回路。
【請求項３】
請求項２記載の半導体集積回路において、
前記チェック用冗長データは、前記不揮発デバイスにおいて、前記機密情報データと異なるアドレスに格納されている
ことを特徴とする半導体集積回路。
【請求項４】
請求項２記載の半導体集積回路において、
前記チェック用冗長データは、前記不揮発デバイスにおいて、前記機密情報データと同一アドレスに格納されている
ことを特徴とする半導体集積回路。
【請求項５】
請求項１記載の半導体集積回路において、
前記暗号処理回路は、前記機密情報データのみに対して、所定の秘密鍵を用いて暗号化するものである
ことを特徴とする半導体集積回路。
【請求項６】
請求項１記載の半導体集積回路において、
前記テスト回路は、
前記所定の秘密鍵を記憶する秘密鍵レジスタを備えている
ことを特徴とする半導体集積回路。
【請求項７】
請求項６記載の半導体集積回路において、
前記テスト回路は、
前記比較回路において前記演算結果と前記チェック用冗長データとの一致が検出されたとき、前記秘密鍵レジスタに記憶された前記所定の秘密鍵を、前記チェック用冗長データを基にして更新する
ことを特徴とする半導体集積回路。
【請求項８】
請求項７記載の半導体集積回路において、
前記秘密鍵レジスタは、所定の初期値が与えられている
ことを特徴とする半導体集積回路。
【請求項９】
機密情報データを格納する不揮発デバイスを内蔵した半導体集積回路を検査する方法であって、
前記不揮発デバイスは、格納したデータが当該半導体集積回路外部に読み出し不能なように構成されており、
前記機密情報データに所定の演算を施して得たチェック用冗長データを、予め、当該半導体集積回路の冗長データ記憶手段に、記憶させておく前処理と、
前記不揮発デバイスから機密情報データを読み出し、読み出した機密データに対し、前記所定の演算に相当する演算を実行する処理と、
前記冗長データ記憶手段からチェック用冗長データを読み出し、前記演算処理の結果と、読み出したチェック用冗長データとを比較する処理と、
前記比較の結果として、前記演算結果と前記チェック用冗長データとの不一致が検出されたとき、前記機密情報データおよび前記チェック用冗長データに対して所定の秘密鍵を用いて暗号化する処理とを備えた
ことを特徴とする半導体集積回路の検査方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発デバイスを内蔵した半導体集積回路について、この不揮発デバイスをテストする技術に関する。
【背景技術】
【０００２】
半導体集積回路に内蔵された、機密情報を格納する不揮発デバイスをテストする技術としては、ＲＯＭに実装した機密情報データに対してＣＲＣ（Cyclic Redundancy Check）などの所定の演算を行い、この演算結果を、予め機密情報データに対して所定の演算を行った結果であるチェック用冗長データと比較し、一致・不一致の比較結果を外部に出力する、というものがある（特許文献１を参照）。この技術により、ＲＯＭに実装された機密情報を外部に出力することなく、テストを行うことが可能となる。
【特許文献１】特開２００１−３４４９９２号公報（第５頁、第一図）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、従来の技術では、エラーが発見された場合でも、そのエラーが不揮発デバイス上の機密情報データによるものか、または、チェック用冗長データによるものかを判別することができない。また、どのビットでエラーが発生したのかを検出することができないので、エラー要因の解析が困難なものとなってしまう。
【０００４】
前記の問題に鑑み、本発明は、不揮発デバイスを内蔵した半導体集積回路として、不揮発デバイスに格納した機密情報の機密性を保ちつつ、不揮発デバイスのテストを実行可能にし、かつ、エラー発生位置の特定を可能にすることを課題とする。
【課題を解決するための手段】
【０００５】
前記の課題を解決するために、請求項１の発明が講じた解決手段は、機密情報データを格納する不揮発デバイスを内蔵した半導体集積回路として、前記不揮発デバイスは格納したデータが当該半導体集積回路外部に読み出し不能なように構成されており、前記機密情報データに所定の演算を施して得たチェック用冗長データを記憶する冗長データ記憶手段と、前記冗長データ記憶手段に記憶されたチェック用冗長データを用いて前記不揮発デバイスのテストを行うためのテスト回路とを備え、前記テスト回路は、前記不揮発デバイスから読み出された機密情報データに対し、前記所定の演算に相当する演算を実行するチェック演算回路と、前記チェック演算回路の演算結果と前記冗長データ記憶手段に記憶されたチェック用冗長データとの比較を行う比較回路と、前記機密情報データおよび前記チェック用冗長データに対して所定の秘密鍵を用いて暗号化を行う暗号処理回路とを備え、前記比較回路の比較結果として前記演算結果と前記チェック用冗長データとの不一致が検出されたとき、前記暗号処理回路の暗号化結果を当該半導体集積回路外部に出力するものである。
【０００６】
請求項１の発明によると、チェック演算回路の演算結果とチェック用冗長データとの不一致が検出されたとき、暗号処理回路の暗号化結果、すなわち、所定の秘密鍵を用いて暗号化された機密情報データおよびチェック用冗長データが、半導体集積回路外部に出力される。このため、暗号化して出力された機密情報データおよびチェック用冗長データを、所定の秘密鍵を用いて復号化し、不揮発デバイスに実装すべき正当なデータと比較することによって、エラーの発生位置を特定することが可能となる。この際、機密情報データおよびチェック用冗長データは暗号化されて出力されるため、所定の秘密鍵を所有する正当なテスト実施者のみが、元の機密情報データおよびチェック用冗長データを復号可能であり、不正なユーザは、機密情報データおよびチェック用冗長データを得ることは不可能である。したがって、機密情報データの機密性が保たれる。また万一、機密情報データが不正なユーザによって暴かれたとしても、この機密情報データはエラーを含んでいるデータであり、被害を軽微にとどめることができる。したがって、機密情報データの機密性を保ちつつ、エラー発生位置の特定が可能となる。
【０００７】
そして、請求項２の発明では、前記請求項１の半導体集積回路における冗長データ記憶手段は、前記不揮発デバイスであるものとする。
【０００８】
さらに、請求項３の発明では、前記請求項２の半導体集積回路におけるチェック用冗長データは、前記不揮発デバイスにおいて、前記機密情報データと異なるアドレスに格納されているものとする。
【０００９】
さらに、請求項４の発明では、前記請求項２の半導体集積回路におけるチェック用冗長データは、前記不揮発デバイスにおいて、前記機密情報データと同一アドレスに格納されているものとする。
【００１０】
また、請求項５の発明では、前記請求項１の半導体集積回路における暗号処理回路は、前記機密情報データのみに対して、所定の秘密鍵を用いて暗号化するものとする。
【００１１】
請求項５の発明によると、暗号化して出力された機密情報データを復号して検査することにより、機密情報データのエラーの有無を確認することが可能となる。機密情報データにエラーが無いことが判明した場合、エラーはチェック用冗長データに存在することになる。このとき、チェック用冗長データはテスト時以外は用いないものであるため、発見されたエラーは半導体集積回路の機能上は問題ないことが分かる。
【００１２】
そして、請求項６の発明では、前記請求項１の半導体集積回路におけるテスト回路は、前記所定の秘密鍵を記憶する秘密鍵レジスタを備えているものとする。
【００１３】
そして、請求項７の発明では、前記請求項６の半導体集積回路におけるテスト回路は、比較回路において演算結果とチェック用冗長データとの一致が検出されたとき、秘密鍵レジスタに記憶された所定の秘密鍵を、チェック用冗長データを基にして更新するものとする。
【００１４】
請求項７の発明によると、エラーの発生位置に応じて、機密情報データ及びチェック用冗長データの暗号化に使用する秘密鍵が異なるため、出力データの機密性を上げることが可能となる。
【００１５】
また、請求項８の発明では、前記請求項７の半導体集積回路における秘密鍵レジスタは、所定の初期値が与えられているものとする。
【００１６】
請求項８の発明によると、テスト開始時にエラーが発見された場合に、出力データの暗号化に用いられた秘密鍵を特定することが可能となる。
【００１７】
また、請求項９の発明が講じた解決手段は、機密情報データを格納する不揮発デバイスを内蔵した半導体集積回路を検査する方法として、前記不揮発デバイスは、格納したデータが当該半導体集積回路外部に読み出し不能なように構成されており、前記機密情報データに所定の演算を施して得たチェック用冗長データを予め当該半導体集積回路の冗長データ記憶手段に記憶させておく前処理と、前記不揮発デバイスから機密情報データを読み出し、読み出した機密データに対し前記所定の演算に相当する演算を実行する処理と、前記冗長データ記憶手段からチェック用冗長データを読み出し、前記演算処理の結果と読み出したチェック用冗長データとを比較する処理と、前記比較の結果として、前記演算結果と前記チェック用冗長データとの不一致が検出されたとき、前記機密情報データおよび前記チェック用冗長データに対して所定の秘密鍵を用いて暗号化する処理とを備えたものである。
【発明の効果】
【００１８】
本発明によると、半導体集積回路に内蔵された不揮発デバイスのテストの結果、エラーが検出された場合に、機密情報データおよびチェック用冗長データの暗号化結果、または、機密情報データのみの暗号化結果が、半導体集積回路の外部に出力される。したがって、不揮発デバイス内部の機密情報データの機密性を損なうことなく、エラーの発生位置を特定することが可能となり、エラー原因の解析を行うことが可能となる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の一実施形態について、図面を参照して説明する。
【００２０】
図１は本発明の一実施形態に係る半導体集積回路の構成を示すブロック図である。図１に示す半導体集積回路において、不揮発デバイスとしてのＲＯＭ１０は、書き込まれた格納データが半導体集積回路外部に読み出すことができないように構成されている。また、図１に示す半導体集積回路は、マイクロコード、秘密鍵やパスワードなどの機密情報データの機密性を損なうことなく、ＲＯＭ１０のテストが実現可能に構成されている。さらに、テストの結果、ＲＯＭ０１０のエラーが検出された際は、エラーの発見された機密情報データ及びその機密情報データに対応したチェック用冗長データを、所定の秘密鍵を用いて暗号化して出力するよう構成されている。
【００２１】
図１において、（ｎ＋１）個の機密情報データすなわち機密情報データ（０）〜（ｎ）が、ＲＯＭ１０の下位アドレスに実装されている。そして、各機密情報データ（０）〜（ｎ）について、ＣＲＣ（Cyclic Redundancy Check：巡回冗長検査）による冗長コードすなわちチェック用冗長データとしての機密ＣＲＣデータ（０）〜（ｎ）が生成されており、これらは、冗長データ記憶手段としてのＲＯＭ１０の上位アドレスに実装されている。
【００２２】
ＲＯＭ１０のアドレス空間において、機密情報データ（０）〜（ｎ）は、最下位アドレスから順に格納されており、機密ＣＲＣデータ（０）〜（ｎ）は、最上位アドレスから順位格納されている。例えば、ＲＯＭ１０の最下位アドレスに格納された機密情報データ（０）に対する機密ＣＲＣデータ（０）は、ＲＯＭ１０の最上位アドレスに格納されている。このようなアドレス配置は、ＲＯＭ１０のコンプリメンタリチェックに適している。
【００２３】
また、図１において、セレクタ２１，２２、アドレスデコーダ（ＡＤＥＣ）２３、フリップフロップ（ＦＦ）２４，２７、チェック演算回路（ＣＲＣ）２５、比較回路（ＣＯＭＰ）２６、秘密鍵レジスタ４１、暗号処理回路４２、ＯＲ回路４３およびインバータ４４によって、テスト回路が構成されている。また、論理回路ブロック（ＬＯＧＩＣ）３０は通常モードで用いられる回路ブロックである。
【００２４】
各セレクタ２１，２２は、入力Ｓが“Ｈ”（ハイレベル）になると、入力端子Ａの入力を選択出力する。アドレスデコーダ２３はテスト時に入力されるアドレス信号をデコードし、チェック演算回路２５、比較回路２６および暗号処理回路４２を制御する。チェック演算回路２５はＲＯＭ１０から読み出された機密情報データに対し、機密ＣＲＣデータ生成の際の所定の演算に相当する演算を実行する。比較回路２６は、チェック演算回路２５の出力と、ＲＯＭ１０から読み出された機密ＣＲＣデータとを比較する。
【００２５】
ＯＲ回路４３は、フリップフロップ２７の出力とフリップフロップ２４の出力とを入力として受け、これらのＯＲ信号を暗号処理回路４２のｃａｌｃ端子に与える。秘密鍵レジスタ４１は所定の秘密鍵を記憶しており、この秘密鍵を暗号処理回路４２のｋｅｙ端子に与える。暗号処理回路４２は、ｃａｌｃ端子に入力された信号の立ち上がりエッジにおいて、ｋｅｙ端子に入力された秘密鍵を用いて、ＲＯＭ１０から入力端子ＤＩＮに入力されたデータを暗号化する。暗号化結果は暗号処理回路４２内に保存される。さらに暗号処理回路４２は、比較回路２６の出力ＯＵＴをインバータ４４において反転させた信号をイネーブル入力ｅｎに受け、イネーブル入力ｅｎがアサート(“Ｈ”)されているとき、保存していた暗号化結果を出力端子ＤＯＵＴから出力する。なお、ＣＬＫは、各回路ブロックの同期用クロック信号である。
【００２６】
通常動作時は、テスト信号ＴＥＳＴは“Ｌ”（ローレベル）になり、セレクタ２１，２２は入力端子Ｂの入力を選択する。すなわち、外部端子ＩＮＡ、ＩＮＢからの入力データがＲＯＭ１０に与えられる。これらの入力データは、半導体集積回路内の別ブロックから供給される。また、ＲＯＭ１０の出力ＤＯは、論理回路ブロック３０に供給される。
【００２７】
一方、テスト時は、テスト信号ＴＥＳＴは“Ｈ”になり、セレクタ２１，２２は入力端子Ａの入力を選択する。すなわち、外部端子ＩＮ１、ＩＮ２からの入力データが、ＲＯＭ１０のアドレス入力ＡＤＤおよびリード入力ＲＥＡＤに供給される。
【００２８】
また、外部端子ＩＮ１からの入力データはアドレスデコーダ２３にも入力される。アドレスレコーダ２３は、外部端子ＩＮ１からの入力データが、機密情報データが格納されているアドレス（address(0)〜(n)）を示すときは、出力ＡＯＵＴ１をイネーブル（“Ｈ”）にする。出力ＡＯＵＴ１が“Ｈ”になると、ＲＯＭ１０の出力ＤＯの先にあるチェック演算回路２５が１クロック遅れて動作を開始する。
【００２９】
このとき、出力ＡＯＵＴ１が“Ｈ”になると暗号処理回路４２の端子ｃａｌｃへの入力が“Ｈ”になるので、暗号処理回路４２は、端子ｋｅｙに入力された秘密鍵を用いて端子ＤＩＮへの入力（この場合は機密情報データ）に対して暗号処理を行い、結果を保持する。
【００３０】
また、外部端子ＩＮ１からの入力データが、機密ＣＲＣデータが格納されているアドレス(address(n+1)〜(2n+1))を示すときは、アドレスデコーダ２３は出力ＡＯＵＴ２をイネーブル（“Ｈ”）にする。出力ＡＯＵＴ２が“Ｈ”になると、比較回路２６はチェック演算回路２５の演算結果（ＩＮ１）と、ＲＯＭ１０から読み出された機密ＣＲＣデータ（ＩＮ２）との比較を実行する。そして、比較結果が一致したとき、出力信号ＲＥＳＵＬＴをアサート（“Ｈ”）する。
【００３１】
このとき、暗号処理回路４２の端子ｃａｌｃへの入力が１クロック遅れて“Ｈ”になるので、暗号処理回路４２は、端子ｋｅｙに入力された秘密鍵を用いて端子ＤＩＮへの入力（この場合は機密ＣＲＣデータ）に対して暗号処理を行う。
【００３２】
比較回路２６による比較結果が不一致であり出力信号ＲＥＳＵＬＴがネゲート（“Ｌ”）されたとき、暗号処理回路４２のイネーブル入力ｅｎはアサート（“Ｈ”）される。このとき暗号処理回路４２は、保持していた機密情報データの暗号結果及び機密ＣＲＣデータの暗号結果を出力端子ＤＯＵＴから出力する。出力端子ＤＯＵＴから出力された信号は、外部端子ＥｎｃＯＵＴを介して半導体集積回路外部に出力される。一方、比較回路２６による比較結果が一致であり出力信号ＲＥＳＵＬＴがアサート（“Ｈ”）されたとき、暗号処理回路４２のイネーブル入力ｅｎはネゲート（“Ｌ”）される。このとき暗号処理回路４２は、保持していた機密情報データの暗号結果及び機密ＣＲＣデータの暗号結果をクリアする。
【００３３】
図２は図１に示す半導体集積回路のテスト時の動作を示すタイミングチャートである。
【００３４】
まず、ＲＯＭ１０のテストを行うモードにするために、テスト信号ＴＥＳＴを“Ｈ”にする。次に、外部端子ＩＮ１から、ＲＯＭ１０において機密情報データ（０）が格納されたアドレスaddress(0)を示す信号を入力するとともに、外部端子ＩＮ２から、ＲＯＭ１０のリード入力ＲＥＡＤがイネーブルになるように“Ｈ”を入力する。すると、次のクロック信号ＣＬＫの立ち上がりで、ＲＯＭ１０の出力ＤＯとして機密情報データ（０）が読み出される。
【００３５】
また、アドレスデコーダ２３は、アドレスaddress(0)を示す信号が入力されたので、出力ＡＯＵＴ１として“Ｈ”を出力する。この信号“Ｈ”は、フリップフロップ２４で１クロックラッチされた後、チェック演算回路２５にイネーブル入力ｅｎとして供給される。これにより、チェック演算回路２５は、ＲＯＭ１０から出力された機密情報データ（０）に対するＣＲＣ演算を開始する。また、暗号処理回路４２は、ＲＯＭ１０から出力された機密情報データ（０）に対する暗号化を行う。
【００３６】
チェック演算回路２５がＣＲＣ演算を完了する１サイクル前に、外部端子ＩＮ１への入力データを、address(0)〜(n)以外の値に変更するとともに、外部端子ＩＮ２への入力データをネゲート（“Ｌ”）にする。すると、アドレスデコーダ２３の出力ＡＯＵＴ１もネゲートされ、さらに１サイクル遅れてチェック演算回路２５のイネーブル入力ｅｎもネゲートされる。これにより、チェック演算回路２５の演算結果が出力ＯＵＴに保持される。
【００３７】
次に、外部端子ＩＮ１から、機密情報データ（０）に対応する機密ＣＲＣデータ（０）が格納されたアドレスaddress(2n+1)を示す信号を入力するとともに、外部端子ＩＮ２から、ＲＯＭ１０のリード信号ＲＥＡＤがイネーブルになるように“Ｈ”を入力する。
【００３８】
アドレスデコーダ２３は、アドレスaddress(2n+1)を示す信号が入力されたので、出力ＡＯＵＴ１として“Ｌ”を出力するとともに、出力ＡＯＵＴ２として“Ｈ”を出力する。比較回路２６は、チェック演算回路２５の出力ＯＵＴと、ＲＯＭ１０の出力ＤＯすなわち機密ＣＲＣデータ（０）との比較を実行する。そして、この比較の結果、両者が一致しているときは、信号ＲＥＳＵＬＴをアサートし（“Ｈ”）、不一致のときは“Ｌ”にする。また、暗号処理回路４２は、ＲＯＭ１０から出力された機密ＣＲＣデータ（０）に対する暗号化を行う。そして、信号ＲＥＳＵＬＴがネゲート（“Ｌ”）されてイネーブル入力ｅｎがアサート（“Ｈ”）されたとき、暗号処理回路４２は、保持していた機密情報データの暗号結果及び機密ＣＲＣデータの暗号結果を出力端子ＤＯＵＴから出力する。出力端子ＤＯＵＴから出力された信号は、外部端子ＥｎｃＯＵＴを介して半導体集積回路外部に出力される。
【００３９】
また、出力ＡＯＵＴ２が“Ｈ”の間、１サイクル期間は信号ＣＯＭＰｅｎがアサートされ、ＲＥＳＵＬＴ信号の出力とともにネゲートされる。また、信号ＣＯＭＰｅｎの立ち下がりによって、チェック演算回路２５は初期化される。
【００４０】
以上のような動作によって、機密情報データ（０）のテストが完了する。
【００４１】
同様の動作を、アドレスaddress(1),address(2n)、アドレスaddress(2),address(2n-1)、…、アドレスaddress(n),address(n+1)を指定しながら実行し、信号ＲＥＳＵＬＴを外部からモニターする。この結果から、ＲＯＭ１０に、製造上の問題などに起因して異常が生じているか否かを判定することができる。
【００４２】
また、信号ＲＥＳＵＬＴのネゲートによってエラーが検出された場合、外部端子ＥｎｃＯＵＴから、そのエラーが生じた機密情報データおよび機密ＣＲＣデータの暗号結果が出力される。このとき、権利を有している検査者は、出力された暗号結果に対して、予め定められている秘密鍵を用いて復号を行い、得られた復号結果を、不揮発デバイスに実装すべき正しいデータと比較することができる。これにより、エラーの発生位置を特定することが可能となる。
【００４３】
また、不正なユーザ、または権利を有していない検査者が、外部端子ＥｎｃＯＵＴから出力された機密情報データおよび機密ＣＲＣデータの暗号結果を入手したとしても、秘密鍵を有していないため、これを復号することはできない。したがって、機密情報データが漏洩することを防ぐことができる。
【００４４】
なお、図１の構成では、暗号処理回路４２で用いる秘密鍵は、秘密鍵レジスタ４１に記憶された所定の値とした。これに対して、秘密鍵レジスタ４１に記憶された秘密鍵を、更新していくようにしてもかまわない。これにより、出力データの機密性をさらに上げることができる。
【００４５】
例えば図３の構成では、ＲＯＭ１０の出力ＤＯと秘密鍵レジスタ４１の格納値とを入力とし、出力信号ＲＥＳＵＬＴに応じて選択した出力を秘密鍵レジスタ４１に与えるセレクタ４５を追加した。セレクタ４５は、出力信号ＲＥＳＵＬＴがアサート（“Ｈ”）されたとき、すなわち、比較回路２６において演算結果と機密ＣＲＣデータとの一致が検出されたとき、ＲＯＭ１０の出力ＤＯすなわち機密ＣＲＣデータを秘密鍵レジスタ４１に格納する。これによって、秘密鍵レジスタ４１に記憶された秘密鍵が更新される。なお、出力信号ＲＥＳＵＬＴがネゲート（“Ｌ”）されている場合は、セレクタ４５は秘密鍵レジスタ４１の出力を選択するため、秘密鍵レジスタ４１の値が更新されることはない。これにより、一定の秘密鍵を用いることがなくなり、エラーの発生位置に応じて、機密情報データ及びチェック用冗長データの暗号化に使用する秘密鍵が異なるため、機密性を向上させることができる。
【００４６】
なお、機密ＣＲＣデータの値を秘密鍵レジスタ４１に保存する際に、機密ＣＲＣデータと秘密鍵とでビット長が異なる場合は、適当な演算を機密ＣＲＣデータに対して行うことにより、ビット長をそろえるものとする。適当な演算とは、ＳＨＡ−１などのハッシュ演算でもかまわないし、機密ＣＲＣデータの先頭から指定ビット数を用いるといった方法や、転置表などを用いた方法を用いてもかまわない。
【００４７】
またこのとき、秘密鍵レジスタ４１には所定の初期値を与えておくことが好ましい。これにより、テスト開始時にエラーが発見された場合に、出力データの暗号化に用いられた秘密鍵を特定することが可能となる。
【００４８】
なお、本実施形態では、機密情報を記憶する不揮発デバイスをＲＯＭとしたが、Fuseなど他の不揮発デバイスであってもかまわない。
【００４９】
また、暗号処理回路４２で行われる暗号化は、ＤＥＳやＡＥＳ、Ｍｕｌｔｉ２、Triple DESなど共通鍵暗号であればどのような手法を用いてもかまわない。
【００５０】
また、本実施形態では、エラーが検出されたとき、機密情報データと機密ＣＲＣデータの両方を暗号化して出力するものとしたが、機密情報データのみを暗号化して出力するようにしてもかまわない。このためには例えば、図１の構成において、ＯＲ回路４３を省き、フリップフロップ２４の出力のみが暗号処理回路４２の端子ｃａｌｃに与えられるようにすればよい。この場合、機密情報データにエラーがあるか否かを確認することが可能となり、エラーが無かった場合は、検出されたエラーは半導体集積回路の機能としては問題がないことを確認することができる。
【００５１】
なお、図１の構成では、機密ＣＲＣデータを、機密情報データとは別のアドレスに格納するものとしたが、機密情報データと同一アドレスに格納してもかまわない。例えば図４に示すように、機密情報データの上位側のビット位置に、対応する機密ＣＲＣデータをマッピングするようにしてもよい。
【００５２】
また、ここでは、機密ＣＲＣデータを、機密情報データが実装されたＲＯＭ自体に実装するものとしたが、機密情報データが実装されたＲＯＭとは別の、半導体集積回路に内蔵されたＲＯＭなどの記憶手段に、機密ＣＲＣデータを実装してもかまわない。
【００５３】
また、機密情報データの内容を変更する場合には、その変更に応じて、機密ＣＲＣデータを変更するだけでよい。したがって、テスト回路の構成の変更は不要であり、このため、開発工数やマスク設計費などを大幅に削減することができる。
【００５４】
また、ＣＲＣによる冗長コード以外のデータを、機密情報データのチェックに利用してもかまわない。ただし、この場合は、そのチェック用データを生成するための所定の演算に相当する演算を実行するチェック演算回路を、テスト回路内に設ける必要がある。
【００５５】
なお、本実施形態では、同期ＲＯＭを例にとって説明を行ったが、非同期ＲＯＭであっても、同様の実施が容易に実現可能である。
【産業上の利用可能性】
【００５６】
本発明では、不揮発デバイス内部の機密情報データの機密性を損なうことなく、エラーの発生位置を特定することが可能となるので、半導体集積回路に内蔵された不揮発デバイスの検査において、エラー原因の解析を効率的に行うのに有用である。
【図面の簡単な説明】
【００５７】
【図１】本発明の一実施形態に係る半導体集積回路の構成を示すブロック図である。
【図２】図１に示す半導体集積回路のテスト時の動作を示すタイミングチャートである。
【図３】本発明の一実施形態の変形例に係る半導体集積回路の構成を示すブロック図である。
【図４】ＲＯＭにおけるデータ格納の他の例を示す図である。
【符号の説明】
【００５８】
１０，１０Ａ  ＲＯＭ（不揮発デバイス)
２１，２２  セレクタ
２３  アドレスデコーダ
２４  フリップフロップ
２５  チェック演算回路
２６  比較回路
４１  秘密鍵レジスタ
４２  暗号処理回路
４３  ＯＲ回路
４４  インバータ
４５  セレクタ
【図１】
2007213718.tif 000003
【図２】
2007213718.tif 000004
【図３】
2007213718.tif 000005
【図４】
2007213718.tif 000006