(57)【要約】【課題】従来の半導体集積回路は、スキャンテスト結果の暗号化において秘匿性が低い等の問題があった。【解決手段】本発明にかかる半導体集積回路は、スキャンパス回路を含む半導体集積回路であって、チップＩＤを秘密鍵Ａを用いて暗号化することにより生成された秘密鍵Ｂを格納する暗号化用データ格納部と、前記秘密鍵Ｂに基づいて前記スキャンパス回路の出力データを暗号化し、出力する暗号化回路と、を備える。このような回路構成により、スキャンテスト結果の暗号化において秘匿性を向上させることができる。【選択図】図１
2010252305.tif 000002
【特許請求の範囲】
【請求項１】
スキャンパス回路を含む半導体集積回路であって、
識別情報を第１の暗号鍵を用いて暗号化することにより生成された第２の暗号鍵を格納する暗号化用データ格納部と、
前記第２の暗号鍵に基づいて前記スキャンパス回路の出力データを暗号化し、出力する暗号化回路と、を備えた半導体集積回路。
【請求項２】
前記第２の暗号鍵は、
前記半導体集積回路に対し与えられる固有のＩＤに基づいて決定されることを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
暗号化された前記出力データは、
前記第１の暗号鍵と、前記ＩＤと、に基づいて復号可能であることを特徴とする請求項２に記載の半導体集積回路。
【請求項４】
前記暗号化用データ格納部は、
前記ＩＤの情報をさらに格納し、外部に出力することを特徴とする請求項２又は３に記載の半導体集積回路。
【請求項５】
暗号化された前記出力データは、
スキャンテスト時において出力されたものであることを特徴とする請求項１〜４のいずれか一項に記載の半導体集積回路。
【請求項６】
スキャンパス回路を含む半導体集積回路の制御方法であって、
識別情報を第１の暗号鍵を用いて暗号化することにより生成された第２の暗号鍵を格納し、
前記第２の暗号鍵に基づいて前記スキャンパス回路の出力データを暗号化し、出力する半導体集積回路の制御方法。
【請求項７】
前記第２の暗号鍵は、
前記半導体集積回路に対し与えられる固有のＩＤに基づいて決定されることを特徴とする請求項６に記載の半導体集積回路の制御方法。
【請求項８】
暗号化された前記出力データは、
前記第１の暗号鍵と、前記ＩＤと、に基づいて復号可能であることを特徴とする請求項７に記載の半導体集積回路の制御方法。
【請求項９】
暗号化された前記出力データは、
スキャンテスト時において出力されたものであることを特徴とする請求項６〜８のいずれか一項に記載の半導体集積回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路及びその制御方法に関し、特にスキャンテスト結果の暗号化に関する。
【背景技術】
【０００２】
スキャンパス回路は、ｎ（ｎは自然数）段のスキャンＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）によって構成される。図３に示す回路は、４段のスキャンＦＦ５００〜５０３を備えた場合の例である。
【０００３】
スキャンＦＦ５００〜５０３にはクロック信号ＣＬＫと、スキャンイネーブル信号ＳＥとが供給される。スキャンＦＦ５００のデータ入力端子には、論理回路群（不図示）からの出力信号Ｄｉｎ０が入力される。スキャンＦＦ５００のスキャンデータ入力端子には、例えば、外部からのスキャンテスト用信号Ｓｉｎが入力される。スキャンＦＦ５００の出力信号Ｄｏｕｔ０は、スキャンＦＦ５０１のスキャンデータ入力端子と、論理回路群の入力端子と、に入力される。スキャンＦＦ５０１のデータ入力端子には、論理回路群からの出力信号Ｄｉｎ１が入力される。スキャンＦＦ５０１の出力信号Ｄｏｕｔ１は、スキャンＦＦ５０２のスキャンデータ入力端子と、論理回路群の入力端子、に入力される。
【０００４】
スキャンＦＦ５０２のデータ入力端子には、論理回路群からの出力信号Ｄｉｎ２が入力される。スキャンＦＦ５０２の出力信号Ｄｏｕｔ２は、スキャンＦＦ５０３のスキャンデータ入力端子と、論理回路群の入力端子と、に入力される。スキャンＦＦ５０３のデータ入力端子には、論理回路群からの出力信号Ｄｉｎ３が入力される。スキャンＦＦ５０３の出力信号Ｄｏｕｔ３は、論理回路群の入力端子に入力されるとともに、スキャンテスト用信号Ｓｏｕｔ１として外部へ出力される。
【０００５】
このように、図３に示す回路のスキャンＦＦ５００〜５０３は、通常動作において用いられるデータが供給されるデータ入力端子と、スキャンテストにおいて用いられるデータが供給されるスキャンデータ入力端子と、を有する。スキャンＦＦ５００〜５０３は、信号ＳＥに基づいていずれか一方を選択し、クロック信号ＣＬＫに同期して出力する。
【０００６】
具体的には、半導体集積回路が通常動作する場合、例えば、信号ＳＥを"０"に設定する。このとき、スキャンＦＦ５００〜５０３は、通常動作において用いられるデータ（Ｄｉｎ０〜３）を選択する。そして、スキャンＦＦ５００〜５０３は、選択したデータ（Ｄｉｎ０〜３）をクロック信号ＣＬＫに同期して出力データ（Ｄｏｕｔ０〜３）として出力する。このように、通常動作（及びスキャンテスト時のキャプチャ動作）の場合、スキャンＦＦ５００〜５０３は、論理回路群とのデータの受け渡しを行う順序回路を構成する。
【０００７】
一方、半導体集積回路がスキャンテストを行う場合、信号ＳＥを"１"に設定する。このとき、スキャンＦＦ５００〜５０３は、スキャンテストにおいて用いられるデータを選択する。そして、スキャンＦＦ５００〜５０３は、選択したデータをクロック信号ＣＬＫに同期して次段のスキャンＦＦのスキャンデータ入力端子（スキャンＦＦ５０３は外部出力端子）に出力する。このように、スキャンテストを行う場合、スキャンＦＦ５００〜５０３は、シフトレジスタを構成する。このような回路構成により、スキャンテストのために各スキャンＦＦに設定する値の書き込み、及びスキャンテスト後の各スキャンＦＦの値の読み出しを半導体集積回路の外部から直接行うことが可能である。
【０００８】
上述のように、半導体集積回路がスキャンパス回路を構成する目的は、出荷テストの一つであるスキャンテストである。ここで、スキャンパス回路は、半導体集積回路の内部状態を直接半導体集積回路の外部に読み出す（出力する）ことが可能である。このため、スキャンパス回路は、セキュリティの観点から主として以下の２つの問題がある。
（１）スキャンパス回路から読み出される半導体集積回路の内部状態に基づいて、半導体集積回路の回路構成を推定することができる。したがって、半導体集積回路の回路構成を復元するリバースエンジニアリングが可能である。
（２）スキャンパス回路から読み出される半導体集積回路の内部状態に基づいて、半導体集積回路が通常動作した場合の処理結果を半導体集積回路の外部に読み出すことが可能である。
【０００９】
（１）の問題については、半導体集積回路の設計者が持つ回路構成の知的所有権を脅かすものである。あるいは、回路構成に対する秘密保持を脅かすものである。また、（２）の問題については、ユーザが半導体集積回路の使用時に取り扱うデータに対する秘密保持を脅かすものである。この２つの点において半導体集積回路の秘密保持に対する要求は高い。
【００１０】
図４に半導体集積回路の設計フローの概要を示す。図４に示すように、半導体集積回路の設計は、まず、アーキテクチャ設計を行う（Ｓ５０１）。次に、回路設計を行う（Ｓ５０２）。次に、半導体集積回路の故障試験等を行うためのテスト設計を行う（Ｓ５０３）。次に、レイアウト設計を行う（Ｓ５０４）。ここで、スキャンパス回路及びスキャンテストを行う回路の設計は、テスト設計（Ｓ５０３）において行われる。そのため、アーキテクチャ設計または回路設計の段階で回路の秘密性を向上させる仕組みが考慮されていても、テスト設計時にスキャンパスを挿入することにより半導体集積回路の秘匿性が失われる可能性がある。
【００１１】
また、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  ＩＣ：特定用途向け半導体集積回路）においては、通常、ＡＳＩＣユーザまたはＡＳＩＣ設計者が半導体集積回路のアーキテクチャ設計（Ｓ５０１）および回路設計（Ｓ５０２）を行う。その後、半導体ベンダがスキャンパス回路挿入等のテスト設計（Ｓ５０３）を行う。このため、半導体ベンダに対する半導体集積回路の秘匿性向上の要求も大きい。
【００１２】
このような問題に対する解決策が特許文献１に紹介されている。図５に特許文献１に紹介された半導体回路を示す。図５に示す回路は、組み合わせ論理回路Ｃ１１と、スキャンパス回路Ｆ１１、Ｆ１２と、暗号化回路Ｂ１１と、モード保持回路Ｍ１１と、によって構成される。
【００１３】
特許文献１によると図５に示す回路は、スキャンモード動作（スキャンテスト時）において、スキャンパス回路Ｆ１１、Ｆ１２への入力データとして、所定のモードキーデータを紛れさせて入力する。そして、モードキーデータは、スキャンパス回路Ｆ１１、Ｆ１２に設けられたモードキー回路（不図示）に取り込まれる。なお、モードキー回路はスキャンパス上の任意の位置に任意ビットに対応して存在する。
【００１４】
暗号化回路Ｂ１１は、スキャンパス回路Ｆ１１の出力信号Ｓｏｕｔ１を暗号化して出力信号Ｂｏｕｔ１として出力する。また、暗号化回路Ｂ１１は、スキャンパス回路Ｆ１２の出力信号Ｓｏｕｔ２を暗号化して出力信号Ｂｏｕｔ２として出力する。
【００１５】
システムモード動作時（通常動作時）に、モードキー回路から出力されたモードキーデータは、モード保持回路Ｍ１１に入力される。モード保持回路Ｍ１１は、このモードキーデータに応じてモード信号ＢＥを生成し、暗号化回路Ｂ１１に対して出力する。ここで、モードキーデータが所定のパタンを有する場合、モード信号ＢＥが所定の設定値を示す。このとき、暗号化回路Ｂ１１は、信号Ｓｏｕｔ１と信号Ｓｏｕｔ２とを暗号化せずにそれぞれ出力信号Ｂｏｕｔ１と信号Ｂｏｕｔ２としてそのまま出力する。一方、モード信号ＢＥが当該所定の設定値以外の場合は、暗号化回路Ｂ１１は、信号Ｓｏｕｔ１と信号Ｓｏｕｔ２とを暗号化して出力する。このように、図５に示す回路は、必要に応じてスキャンパス回路の出力を秘匿化（暗号化）することができる。これにより、モードキー回路およびモードキーデータの情報が知られていない場合は、暗号化されたスキャンパス回路の出力データに基づいて内部回路の構成を推定することはできない。
【００１６】
このように、図５に示す回路の場合、モードキー回路の構成およびモードキーを知らない者は、スキャンパス回路の出力データに基づいて半導体集積回路の内部状態を読み出すことができない。したがって、半導体集積回路の回路構成も推定することができない。つまり、上述した問題点（１）、（２）を防ぐことができる。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００１−１４１７９１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかし、この半導体集積回路の回路図（ネットリスト）が外部に知られてしまった場合、この回路図によってモードキー回路の構成およびモードキーが読み取れてしまう可能性がある。すなわち、回路図が知られてしまうことによって、問題点（１）を防ぐことができなくなる。さらに、このことによって問題点（２）を防ぐことができなくなる。つまり、従来技術では、半導体集積回路の回路図が外部に知られてしまった場合に、問題点（１）だけでなく、問題点（２）を防ぐことができないという問題があった。つまり、従来の技術では、スキャンテスト結果の暗号化において秘匿性が低い等の問題があった。
【課題を解決するための手段】
【００１９】
本発明にかかる半導体集積回路は、スキャンパス回路（例えば、本発明の実施の形態１におけるスキャンパス回路１０１、１０２）を含む半導体集積回路であって、識別情報（例えば、本発明の実施の形態１におけるチップＩＤ）を第１の暗号鍵（例えば、本発明の実施の形態１における秘密鍵Ａ）を用いて暗号化することにより生成された第２の暗号鍵（例えば、本発明の実施の形態１における秘密鍵Ｂ）を格納する暗号化用データ格納部（例えば、本発明の実施の形態１における暗号化用データ格納部１０５）と、前記第２の暗号鍵に基づいて前記スキャンパス回路の出力データを暗号化し、出力する暗号化回路（例えば、本発明の実施の形態１における暗号化回路１０４）と、を備える。
【００２０】
また、本発明にかかる半導体集積回路の制御方法は、スキャンパス回路を含む半導体集積回路の制御方法であって、識別情報を第１の暗号鍵を用いて暗号化することにより生成された第２の暗号鍵を格納し、前記第２の暗号鍵に基づいて前記スキャンパス回路の出力データを暗号化し、出力する。
【００２１】
上述のような構成及び制御方法により、スキャンテスト結果の暗号化において秘匿性を向上させることができる。
【発明の効果】
【００２２】
本発明により、スキャンテスト結果の暗号化において秘匿性を向上させることが可能な半導体集積回路を提供することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施の形態１にかかる半導体集積回路を示す図である。
【図２】本発明の実施の形態１にかかるスキャンパス回路の出力結果を暗号化する暗号化用データの暗号化方法を示す図である。
【図３】スキャンパス回路の一例を示す図である。
【図４】半導体集積回路の設計の流れを示すフローチャートである。
【図５】従来技術の半導体集積回路を示す図である。
【発明を実施するための形態】
【００２４】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００２５】
実施の形態１
本発明の実施の形態について図面を参照して説明する。図１は、本発明の実施の形態１における半導体集積回路を示すブロック図である。なお、本発明の実施の形態に係る半導体集積回路は、各半導体集積回路に対して固有に与えられた固有ＩＤ（チップＩＤ；識別情報）を外部から与えられる秘密鍵Ａ（第１の暗号鍵）を用いて暗号化した秘密鍵Ｂ（第２の暗号鍵）を格納する暗号化用データ格納部と、格納された秘密鍵Ｂに基づいてデータスキャンパス回路からの出力データを暗号化し、出力する暗号化回路と、を備える。それにより、たとえ半導体集積回路の回路図が知られてしまった場合でも、半導体集積回路が通常動作した場合の処理結果を、スキャンテスト結果を解析することによって半導体集積回路の外部に読み出すことを不可能にすることを特徴とする。
【００２６】
図１に示す回路は、スキャンテスト結果を出力するスキャンパス回路１０１、１０２と、レジスタ以外の複数の論理回路群によって構成される組み合わせ論理回路１０３と、秘密鍵Ｂに基づいてスキャンテスト結果を暗号化して出力する暗号化回路１０４と、秘密鍵Ｂを格納する暗号化データ格納部１０５と、を備える。なお、簡単のため、図１に示す回路は、２個のスキャンパス回路１０１、１０２が備えられた場合の例について説明する。
【００２７】
組合せ論理回路１０３は、１ビット以上からなる入力データＮｉｎに応じて所定のディジタル信号処理及び論理演算を行う。そして、処理結果を１ビット以上からなる出力データＮｏｕｔとして出力する。さらに、組合せ論理回路１０３は、スキャンパス回路１０１、１０２からの出力データを入力し、入力したデータに応じて所定の処理を行う。そして、処理結果をそれぞれスキャンパス回路１０１、１０２に転送する。
【００２８】
スキャンパス回路１０１、１０２には、スキャンイネーブル信号ＳＥと、クロック信号ＣＬＫが供給される。また、入力データＳｉｎ１が、スキャンパス回路１０１に入力される。スキャンパス回路１０１は、出力データＳｏｕｔ１を暗号化回路１０４に出力する。入力データＳｉｎ２が、スキャンパス回路１０２に入力される。スキャンパス回路１０２は、出力データＳｏｕｔ２を暗号化回路１０４に出力する。
【００２９】
暗号化回路１０４は、入力されたデータＳｏｕｔ１、Ｓｏｕｔ２を暗号化して、それぞれ出力データＢｏｕｔ１、Ｂｏｕｔ２として出力する。また、暗号化回路１０４には、クロック信号ＣＬＫが供給される。
【００３０】
スキャンパス回路１０１は、例えば、直列接続されている複数のスキャンフリップフロップ（以下、単にスキャンＦＦと称す）によって構成される。まず、スキャンパス回路１０１は、シフト動作として、入力データＳｉｎ１を出力側に向かって順次シフトする。つまり、スキャンパス回路１０１は、各スキャンＦＦに入力データＳｉｎ１に応じたデータを記憶させることにより、テストパターンを形成する。次に、スキャンパス回路１０１は、キャプチャ動作として、テストパターンを組合せ論理回路１０３に送信する。その後、組合せ論理回路１０３からの処理結果を受け取る。次に、スキャンパス回路１０１は、再びシフト動作として、各スキャンＦＦに記憶された組み合わせ論理回路１０３からの処理結果を出力側に向かって順次シフトする。そして、スキャンパス回路１０１は、出力データＳｏｕｔ１を暗号化回路１０４に対して出力する。なお、スキャンパス回路１０２の動作も、スキャンパス回路１０１の場合と同様である。
【００３１】
図３にスキャンパス回路１０１の一構成例を示す。なお、スキャンパス回路１０２は、スキャンパス回路１０１の場合と、ほぼ同じ構成を有するので説明を省略する。また、スキャンパス回路は、ｎ（ｎは自然数）段のスキャンＦＦによって構成されるが、図３に示す回路では、簡単のため、４段のスキャンＦＦ５００〜５０３を備えた場合の例を説明する。
【００３２】
スキャンＦＦ５００〜５０３にはクロック信号ＣＬＫと、信号ＳＥとが供給される。スキャンＦＦ５００のデータ入力端子には、例えば、組み合わせ論理回路１０３からの出力信号Ｄｉｎ０が入力される。スキャンＦＦ５００のスキャンデータ入力端子には、例えば、外部からのスキャンテスト用信号（入力データ）Ｓｉｎが入力される。スキャンＦＦ５００の出力信号Ｄｏｕｔ０は、スキャンＦＦ５０１のスキャンデータ入力端子に入力されるとともに、組み合わせ論理回路１０３に送信される。スキャンＦＦ５０１のデータ入力端子には、組み合わせ論理回路１０３からの出力信号Ｄｉｎ１が入力される。スキャンＦＦ５０１の出力信号Ｄｏｕｔ１は、スキャンＦＦ５０２のスキャンデータ入力端子に入力されるとともに、組み合わせ論理回路１０３に送信される。
【００３３】
スキャンＦＦ５０２のデータ入力端子には、組み合わせ論理回路１０３からの出力信号Ｄｉｎ２が入力される。スキャンＦＦ５０２の出力信号Ｄｏｕｔ２は、スキャンＦＦ５０３のスキャンデータ入力端子に入力されるとともに、組み合わせ論理回路１０３に送信される。スキャンＦＦ５０３のデータ入力端子には、組み合わせ論理回路１０３からの出力信号Ｄｉｎ３が入力される。スキャンＦＦ５０３の出力信号Ｄｏｕｔ３は、組み合わせ論理回路１０３の入力端子に入力されるとともに、スキャンテスト用信号（出力データ）Ｓｏｕｔ１として外部へ出力される。
【００３４】
このように、図３に示す回路のスキャンＦＦ５００〜５０３は、通常動作において用いられるデータが供給されるデータ入力端子と、スキャンテストにおいて用いられるデータが供給されるスキャンデータ入力端子と、を有する。スキャンＦＦ５００〜５０３は、信号ＳＥに基づいていずれか一方を選択し、クロック信号ＣＬＫに同期して出力する。
【００３５】
具体的には、半導体集積回路が通常動作する場合、例えば、信号ＳＥを"０"に設定する。このとき、スキャンＦＦ５００〜５０３は、通常動作において用いられるデータ（Ｄｉｎ０〜３）を選択する。そして、スキャンＦＦ５００〜５０３は、選択したデータ（Ｄｉｎ０〜３）をクロック信号ＣＬＫに同期して出力データ（Ｄｏｕｔ０〜３）として出力する。このように、通常動作（及びスキャンテスト時のキャプチャ動作）の場合、スキャンＦＦ５００〜５０３は、組み合わせ論理回路１０３とのデータの受け渡しを行う順序回路を構成する。
【００３６】
一方、半導体集積回路がスキャンテストを行う場合、信号ＳＥを"１"に設定する。このとき、スキャンＦＦ５００〜５０３は、スキャンテストにおいて用いられるデータを選択する。そして、スキャンＦＦ５００〜５０３は、選択したデータをクロック信号ＣＬＫに同期して次段のスキャンＦＦのスキャンデータ入力端子（スキャンＦＦ５０３は外部出力端子）に出力する。このように、スキャンテストを行う場合、スキャンＦＦ５００〜５０３は、シフトレジスタを構成する。このような回路構成により、スキャンテストのために各スキャンＦＦに設定する値の書き込み、及びテスト後の各スキャンＦＦの値の読み出しを半導体集積回路の外部から直接行うことが可能である。
【００３７】
図１において、暗号化用データ格納部１０５は、暗号化回路１０４に出力するための秘密鍵Ｂと、各半導体集積回路に対して固有に与えられた固有ＩＤ（チップＩＤ）の情報と、を格納する。例えば、この秘密鍵Ｂは、チップＩＤを、外部において秘密鍵Ａを用いて暗号化した暗号鍵情報である。したがって、本実施の形態では、秘密鍵Ｂは、半導体集積回路ごとに異なる。
【００３８】
ここで、チップＩＤおよび秘密鍵Ｂは、例えば、ｅＦｕｓｅに代表される記憶素子に記憶される。したがって、任意のデータパタンを格納することが可能である。また、例えば、出荷テスト（ウエハテスト）時に拡散ロット番号やウエハ上の座標がチップＩＤの情報として格納される。
【００３９】
暗号化用データ格納部１０５は、暗号化回路１０４に対し秘密鍵Ｂを出力するとともに、チップＩＤの情報を出力信号ＩＤｏｕｔとして外部に出力する。なお、暗号化回路１０４は、秘密鍵Ａを用いてチップＩＤを暗号化した秘密鍵Ｂに基づいて暗号化処理を行う。つまり、この秘密鍵Ｂは、暗号化回路１０４が暗号化処理を実行するための鍵の役割を果たす。したがって、暗号化回路１０４によって暗号化された出力データ（Ｂｏｕｔ１、Ｂｏｕｔ２）を復号化するためには、少なくともこの秘密鍵Ｂの情報が必要である。なお、図１に示す回路は、暗号化用データ格納部１０５に、チップＩＤの情報とそれに基づいた秘密鍵Ｂとを格納する場合の例について説明しているが、これに限られない。半導体集積回路ごとに与えられる所定のデータパタンをチップＩＤの代わりに用いても良い。つまり、当該データパタンを、外部において秘密鍵Ａを用いて暗号化し、秘密鍵Ｂとして用いても良い。
【００４０】
ここで、従来技術では、半導体集積回路の回路図が知られてしまった場合に、スキャンテスト結果を解析することにより、半導体集積回路が通常動作した場合の処理結果が半導体集積回路の外部に読み出されてしまうという課題があった。そこで、本発明の実施の形態にかかる半導体集積回路では、暗号化用データ格納部１０５に、外部において秘密鍵Ａを用いてチップＩＤを暗号化した秘密鍵Ｂを格納することにより、従来技術の課題を解決している。
【００４１】
図２は、チップＩＤを暗号化し、秘密鍵Ｂを生成する方法を示す図である。図２に示すように、チップＩＤは、外部において秘密鍵Ａによって暗号化される。この秘密鍵Ｂは、例えば、出荷テスト時等において暗号化用データ格納部１０５に書き込まれる。なお、図１に示す回路は、チップＩＤの情報を外部に出力するが、秘密鍵Ｂを外部に出力しない。
【００４２】
なお、この秘密鍵Ａは重要な秘密事項として関係者内で共有し、関係者以外の者に漏れないように保管される必要がある。また、スキャンパス回路の出力結果を暗号化する暗号化回路はごく一般的な暗号化用のアルゴリズムが用いられている。
【００４３】
具体的な例としては、出荷テスト時において、拡散ロット番号やウエハ上の座標がチップＩＤとして暗号化用データ格納部１０５に書き込まれる。さらに、秘密鍵Ｂも暗号化用データ格納部１０５に書き込まれる。このため、個々の半導体集積回路には固有の秘密鍵Ｂが書き込まれることになる。暗号化回路１０４は、秘密鍵Ａを用いてチップＩＤを暗号化した秘密鍵Ｂに基づいてスキャンパス回路の出力結果を暗号化する。そのため、製品出荷後にスキャンテストを実行する場合には、スキャンパス回路の出力結果を復号化する必要がある。スキャンパス回路の出力結果を復号化する場合は、まず、半導体集積回路に書き込まれているチップＩＤの情報を外部に読み出す。そして、読み出されたチップＩＤの情報と、外部において管理されている秘密鍵Ａとに基づいて秘密鍵Ｂの情報を取得する。秘密鍵Ｂによってスキャンテスト結果が暗号化されているので、この秘密鍵Ｂを用いることによって、暗号化されたスキャン結果を復号することができる。つまり、チップＩＤの情報と秘密鍵Ａとは、暗号化されたスキャンテスト結果を復号化する場合にも用いられる。
【００４４】
このような回路構成により、半導体集積回路の回路図が知られてしまった場合でも、回路図中に秘密鍵Ａの情報は含まれていないため、秘密鍵Ｂの情報を知られることはない。また、暗号化されたスキャンテスト結果が復号化されることもない。
【００４５】
以上のように、本発明の実施の形態にかかる半導体集積回路は、下記に挙げる２点によって従来技術の問題が解決される。
（１）暗号化用データ格納部１０５には、スキャンテスト結果を暗号化するための秘密鍵Ｂとして、外部にて保管されている秘密鍵Ａを用いてチップＩＤの情報等を暗号化したものが書き込まれる。そのため、回路図に秘密鍵Ａの情報が存在しない。
（２）拡散ロット番号およびウエハ上の座標情報等（チップＩＤ）に基づいて秘密鍵Ｂが決定される。そのため、それぞれの半導体集積回路に対し、固有の秘密鍵Ｂが与えられる。
【００４６】
このため、（１）の理由により、回路図が外部に知られてしまった場合でも、その回路図から秘密鍵Ａを特定することができない。したがって、暗号化されたスキャンテスト結果の復号を防ぐことができる。
【００４７】
また、例えば、ＦＩＢ（Ｆｏｃｕｓｅｄ  ｉｏｎ  ｂｅａｍ）技術等によって半導体集積回路に書き込まれた秘密鍵Ｂの情報が取得された場合でも、（２）の理由により、ある半導体集積回路から取得した秘密鍵Ｂを使用して、他の半導体集積回路の暗号化されたスキャンテスト結果を復号化することはできない。
【００４８】
このように、本発明の実施の形態にかかる半導体集積回路は、
（１）回路図から秘密鍵Ａを特定することができない。
（２）個々の半導体集積回路に対して固有の秘密鍵Ｂが与えられる。
という上記２つの点によって、たとえ半導体集積回路の回路図が知られてしまった場合でも、「半導体集積回路が通常動作した場合の処理結果を半導体集積回路の外部に読み出すことができない」、という秘匿性を確保することができる。つまり、半導体集積回路が通常動作した場合の処理結果が、スキャンテスト結果を解析することにより外部に読み出されることを防ぐことができる。
【００４９】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本発明の実施の形態にかかる半導体集積回路は、秘密鍵Ｂが各半導体集積回路に固有のチップＩＤに基づいて決定された場合を例に説明したが、これに限られない。例えば、半導体集積回路ごとに固有のものではなく、任意の秘密鍵Ｂであってもよい。この場合でも、秘密鍵Ｂは外部からの秘密鍵Ａによって暗号化されたものであるため、秘匿性を維持することができる。
【００５０】
また、本発明の実施の形態にかかる半導体集積回は、暗号化用データ格納部１０５が外部にチップＩＤの情報（またはそれに相当する信号）を出力した場合を例に説明したが、これに限られない。例えば、チップＩＤの情報がユーザ等によって別に管理されている場合には、外部にチップＩＤの情報を出力しない回路構成にも適宜変更可能である。
【００５１】
また、本発明の実施の形態では、スキャンパス回路が２個の場合を例に説明したがこれに限られない。１個以上のスキャンパス回路を備えた回路構成であれば適宜変更可能である。
【符号の説明】
【００５２】
１０１  スキャンパス回路
１０２  スキャンパス回路
１０３  組み合わせ論理回路
１０４  暗号化回路
１０５  暗号化用データ格納部
５００  スキャンＦＦ
５０１  スキャンＦＦ
５０２  スキャンＦＦ
５０３  スキャンＦＦ
【図１】
2010252305.tif 000003
【図２】
2010252305.tif 000004
【図３】
2010252305.tif 000005
【図４】
2010252305.tif 000006
【図５】
2010252305.tif 000007