(57)【要約】【課題】所定の暗号鍵を用いて暗号化された値（プログラム及び／またはデータ）が格納されるＲＯＭを内蔵するＩＣまたはそのようなＲＯＭが外付けされるＩＣにおいて、ＲＯＭに格納された、暗号化された値の秘匿性を高める。【解決手段】ＩＣは、暗号化された値（プログラム及び／またはデータ）が格納される前記ＲＯＭと、ユニークコード生成部と、暗号復号部とを含んで構成される。ユニークコード生成部は、製造ばらつきによって固有に定まるユニークコードを生成する。暗号復号部は、生成されたユニークコードと訂正パラメータとに基づいて暗号鍵を算出し、算出した暗号鍵を用いて、ＲＯＭから読み出された暗号化された値を復号する。訂正パラメータは、このＩＣの製造直後にユニークコード生成部から生成された初期ユニークコードと、ＲＯＭに格納する値の暗号化に使われる、前記所定の暗号鍵に基づいて、このＩＣの外部で予め算出される。【選択図】図１
2015012409.tif 000002
【特許請求の範囲】
【請求項１】
所定の暗号鍵を用いて暗号化された値を格納可能な不揮発性メモリと、ユニークコード生成部と、暗号処理部とを含んで構成される、半導体集積回路であって、
前記ユニークコード生成部は、前記半導体集積回路の製造ばらつきによって固有に定まる複数ビットのディジタル値である、ユニークコードを生成可能であり、
前記暗号処理部は、訂正パラメータと前記ユニークコードとに基づいて前記暗号鍵を算出し、算出した前記暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値を復号可能に構成され、
前記訂正パラメータは、前記半導体集積回路の製造後に前記ユニークコード生成部から生成される初期ユニークコードと前記所定の暗号鍵に基づいて、前記半導体集積回路の外部で予め算出される、半導体集積回路。
【請求項２】
請求項１において、前記ユニークコード生成部から生成される前記ユニークコードが、前記初期ユニークコードに対してエラーを含んでいても、前記暗号処理部は、前記訂正パラメータと前記ユニークコードとに基づいて前記暗号鍵を算出可能に構成される、半導体集積回路。
【請求項３】
請求項１において、前記訂正パラメータを同一チップ内に保持する、半導体集積回路。
【請求項４】
請求項１において、前記半導体集積回路はネットワークインターフェースをさらに備え、前記訂正パラメータは前記ネットワークインターフェースを介して受信可能に構成される、半導体集積回路。
【請求項５】
請求項１において、前記訂正パラメータを第１訂正パラメータとし、前記暗号鍵を第１暗号鍵とし、
前記暗号処理部は、前記第１訂正パラメータとは異なる第２訂正パラメータと前記ユニークコードとに基づいて、前記第１暗号鍵とは異なる第２暗号鍵を算出可能に構成される、半導体集積回路。
【請求項６】
請求項１において、前記半導体集積回路はＣＰＵをさらに備え、
前記不揮発性メモリは、前記ＣＰＵで実行可能なプログラムのプログラムコードが前記所定の暗号鍵を用いて暗号化された値を格納可能に構成され、前記ＣＰＵは、前記暗号処理部によって復号されたプログラムを実行可能に構成される、半導体集積回路。
【請求項７】
請求項６において、前記不揮発性メモリは、前記ＣＰＵからアクセス可能なデータが前記所定の暗号鍵を用いて暗号化された値を格納可能に構成され、前記ＣＰＵは、前記暗号処理部によって復号された前記データを読み出し可能に構成される、半導体集積回路。
【請求項８】
請求項６において、前記暗号処理部は、前記ＣＰＵから出力されるデータを、前記算出された暗号鍵を使って暗号化する機能をさらに備え、前記ＣＰＵは前記不揮発性メモリに書き込むデータを、前記暗号処理部によって暗号化した後に、前記不揮発性メモリに書き込み可能に構成される、半導体集積回路。
【請求項９】
ユニークコード生成部と暗号処理部とを含んで構成される、半導体集積回路と、所定の暗号鍵を用いて暗号化された値を格納可能な不揮発性メモリとを含んで構成されるシステムであって、
前記ユニークコード生成部は、前記半導体集積回路の製造ばらつきによって固有に定まる複数ビットのディジタル値である、ユニークコードを生成可能であり、
前記暗号処理部は、訂正パラメータと前記ユニークコードとに基づいて前記暗号鍵を算出し、算出した前記暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値を復号可能に構成され、
前記訂正パラメータは、前記半導体集積回路の製造後に前記ユニークコード生成部から生成される初期ユニークコードと前記所定の暗号鍵に基づいて、前記システムの外部で予め算出される、システム。
【請求項１０】
請求項９において、前記ユニークコード生成部から生成される前記ユニークコードが、前記初期ユニークコードに対してエラーを含んでいても、前記暗号処理部は、前記訂正パラメータと前記ユニークコードとに基づいて前記暗号鍵を算出可能に構成される、システム。
【請求項１１】
請求項９において、前記半導体集積回路と対応付けて前記訂正パラメータを保持し、前記訂正パラメータを前記半導体集積回路に供給するデータベースをさらに備える、システム。
【請求項１２】
請求項９において、複数の前記半導体集積回路とデータベースを含んで構成され、
前記複数の半導体集積回路のそれぞれは、前記不揮発性メモリと、前記ユニークコード生成部と、前記暗号処理部とを含んで構成され、
前記不揮発性メモリには、前記複数の半導体集積回路のそれぞれに対応する暗号鍵を用いて暗号化された値が格納され、
前記データベースは、前記複数の半導体集積回路のそれぞれと対応付けて、複数の前記訂正パラメータを保持し、前記訂正パラメータを対応する前記半導体集積回路に供給し、
前記訂正パラメータは、対応する前記半導体集積回路の製造後に前記ユニークコード生成部から生成される初期ユニークコードと、前記対応する前記半導体集積回路の前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵に基づいて、前記システムの外部で予め算出され、前記データベースに格納される、システム。
【請求項１３】
請求項９において、前記半導体集積回路はさらに揮発性メモリを備え、前記所定の暗号鍵を用いて暗号化された前記値は、前記不揮発性メモリから前記揮発性メモリに転送可能に構成され、
前記暗号処理部は、前記揮発性メモリから読み出された暗号化された前記値を復号可能に構成される、システム。
【請求項１４】
請求項１３において、前記半導体集積回路と対応付けて前記訂正パラメータを保持し、前記訂正パラメータを前記半導体集積回路に供給するデータベースと前記不揮発性メモリを含んで構成される制御半導体集積回路をさらに備え、る、システム。
【請求項１５】
請求項１１において、前記半導体集積回路と前記データベースとは、ネットワークを介して接続され、前記訂正パラメータは前記ネットワークを介して前記半導体集積回路に受信可能に構成される、システム。
【請求項１６】
請求項１１において、前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第１暗号鍵とし、
前記データベースは、前記半導体集積回路と対応付けて複数の前記訂正パラメータを保持し、前記複数の訂正パラメータを前記半導体集積回路に供給し、
前記暗号処理部は、供給された前記複数の訂正パラメータと前記ユニークコードとに基づいて、前記第１暗号鍵と別の暗号鍵とを算出し、算出した前記第１暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値を復号可能に構成される、システム。
【請求項１７】
請求項１１において、前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第１暗号鍵とし、前記第１暗号鍵に対応する訂正パラメータを第１訂正パラメータとし、
前記システムは、前記データベースと認証部とを備える、管理集積回路を備え、
前記管理集積回路は、前記データベースに、前記半導体集積回路と対応付けられる前記第１訂正パラメータと第２訂正パラメータを保持し、前記認証部にチャレンジデータと第２訂正パラメータに対応する第２暗号鍵で前記チャレンジデータを暗号化したチャレンジデータ期待値とを保持し、前記第２訂正パラメータと前記チャレンジデータを前記半導体集積回路に供給し、
前記半導体集積回路において、前記暗号処理部は、供給された前記第２訂正パラメータと前記ユニークコードとに基づいて、前記第２暗号鍵を生成し、供給された前記チャレンジデータを前記第２暗号鍵を用いて暗号化し、前記管理集積回路に返信し、
前記管理集積回路は、前記暗号化されて返信された前記チャレンジデータを、前記認証部に保持される前記チャレンジデータ期待値と比較し、一致した場合に、前記第１訂正パラメータを前記半導体集積回路に供給し、
前記半導体集積回路は、供給された前記第１訂正パラメータと前記ユニークコードとに基づいて、前記第１暗号鍵を算出し、算出した前記第１暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値を復号する、システム。
【請求項１８】
請求項１１において、前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第１暗号鍵とし、前記第１暗号鍵に対応する訂正パラメータを第１訂正パラメータとし、
前記システムは、前記データベースと認証部とを備える、管理集積回路を備え、
前記管理集積回路は、前記データベースに、前記半導体集積回路と対応付けられる前記第１訂正パラメータと第２訂正パラメータを保持し、前記認証部にチャレンジデータと前記第２訂正パラメータに対応する第２暗号鍵で前記チャレンジデータを暗号化したチャレンジデータ期待値とを保持し、前記チャレンジデータを前記半導体集積回路に供給し、
前記半導体集積回路は、前記第２訂正パラメータを保持し、前記暗号処理部は前記第２訂正パラメータと前記ユニークコードとに基づいて前記第２暗号鍵を生成し、供給された前記チャレンジデータを前記第２暗号鍵を用いて暗号化し、前記管理集積回路に返信し、
前記管理集積回路は、前記暗号化されて返信された前記チャレンジデータを、前記認証部に保持される前記チャレンジデータ期待値と比較し、一致した場合に、前記第１訂正パラメータを前記半導体集積回路に供給し、
前記半導体集積回路は、供給された前記第１訂正パラメータと前記ユニークコードとに基づいて、前記第１暗号鍵を算出し、算出した前記第１暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値を復号する、システム。
【請求項１９】
請求項１１において、前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第１暗号鍵とし、前記第１暗号鍵に対応する訂正パラメータを第１訂正パラメータとし、
前記システムは、前記データベースと認証部とを備える、管理集積回路を備え、
前記管理集積回路は、前記データベースに、前記半導体集積回路と対応付けられる前記第１訂正パラメータと第２訂正パラメータとチャレンジデータと公開鍵とを保持し、前記第２訂正パラメータと前記チャレンジデータとを前記半導体集積回路に供給し、
前記半導体集積回路は、前記暗号処理部は前記第２訂正パラメータと前記ユニークコードとに基づいて前記第２暗号鍵を生成し、供給された前記チャレンジデータを前記第２暗号鍵を用いて暗号化し、前記管理集積回路に返信し、
前記管理集積回路は、前記暗号化されて返信された前記チャレンジデータを、前記公開鍵を使って復号し、復号された値と前記チャレンジデータとを比較し、一致した場合に、前記第１訂正パラメータを前記半導体集積回路に供給し、
前記半導体集積回路は、供給された前記第１訂正パラメータと前記ユニークコードとに基づいて、前記第１暗号鍵を算出し、算出した前記第１暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値を復号する、システム。
【請求項２０】
請求項１９において、前記第２暗号鍵は、前記公開鍵に対応する、前記半導体集積回路の秘密鍵である、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（Central Processing Unit）を内蔵し、不揮発性メモリが外付けされまたは内蔵される半導体集積回路及びそれを用いたシステムに関し、特に不揮発性メモリに格納されるプログラムやデータなどのコンテンツを暗号化して保護する半導体集積回路及びそれを用いたシステムに好適に利用できるものである。
【背景技術】
【０００２】
フラッシュメモリ（登録商標）などの不揮発性メモリとＣＰＵを単一チップに搭載する、マイコンやシステムＬＳＩ（Large Scale Integrated circuit）などの半導体集積回路（ＩＣ： Integrated Circuit）では、不揮発性メモリにプログラムやデータが記憶されており、ＣＰＵによってそのプログラムが実行され、そのデータが利用される。プログラムやデータが記憶される不揮発性メモリが外付けされる場合も同様である。そのような半導体デバイスへの攻撃として、メモリの読出しがある。通信を行うプロトコルは暗号化する事により秘匿されるが、半導体デバイスの不揮発性メモリに格納されるプログラムやデータは、通信する情報を暗号化する事では、メモリをダイレクトに読み出すこの攻撃方法からは防ぐ事ができない。
【０００３】
暗号化する事により通信を行うプロトコルを秘匿する技術は、例えば、特許文献１と特許文献２に開示されており、マイクロコントローラに内蔵されるメモリ上のプログラムを暗号化によって保護する技術は、例えば特許文献３に開示されている。
【０００４】
特許文献１には、本体と付属品の間で認証を行うシステムにおいて、認証側の被認証側のそれぞれにマイクロコントローラを備え、双方で同じ乱数に対して同じ暗号鍵を使って暗号化を行い、照合することにより、真正の付属品であるか否かの認証を行うシステムが開示されている。乱数を暗号化するための上記暗号鍵を、別の暗号鍵と識別情報に基づいて暗号化するように構成することにより、プログラムを不正に取得して作られた模造品では、動作が正常に行われないようにすることができ、単純なプログラムメモリのコピーによる模造品を排除することができる。
【０００５】
特許文献２には、外部装置に接続される半導体装置において、データ書き込み時のセキュリティが十分に確保される半導体装置が開示されている。半導体装置は、そのデバイスに固有な値（ユニークコード）を生成することができるユニークコード生成部を備え、そのユニークコードを外部装置に伝送する。ユニークコードは、例えば製造ばらつきによってそのデバイスのその個体に固有の値であり、設計情報を完全に複製したとしても、個体ごとに異なる値である。例えば物理的に複製不可能な関数（ＰＵＦ： Physically Unclonable Function）を使って生成することができる。外部装置は、半導体装置がデータ書き込み時に使うための暗号鍵を、受信したユニークコードを使って別の暗号化処理を施した上で、半導体装置に対して伝送する。半導体装置は、受信した暗号化された暗号鍵を、自己のユニークコードを使って復号することによって、暗号鍵を得る。この暗号鍵を使って、秘匿すべきデータを暗号化して、データ書き込みを行う。データ書き込みのための暗号鍵が、複製不能なユニークデータによって暗号化されるので、外部装置と半導体装置との間でセキュリティの高い通信が可能となる。
【０００６】
特許文献３には、暗号化されたプログラムを格納するメモリと、プログラムを復号する復号ブロックと、復号されたプログラムを実行するＣＰＵから成るマイクロコントローラが開示されている。暗号化されたプログラムを復号するための復号情報は、前記復号ブロック内のレジスタに、ＣＰＵから物理的に読み出し不可能に保持される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−１８４７３５号公報
【特許文献２】特開２０１３−００３４３１号公報
【特許文献３】特開２００８−２１７５７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１、２及び３について本発明者が検討した結果、以下のような新たな課題があることがわかった。
【０００９】
オンチップまたは別チップでＣＰＵに接続される不揮発性メモリに、秘匿されるべきプログラムやデータが格納されている場合、特許文献１に示される技術ではプログラムの実行に先立って認証を行うことによって、秘匿されるべきプログラムのコピーを防ぐので、認証する側がセキュアであることが前提である。特許文献２に示される技術では、半導体装置内で秘匿されるべきプログラムは暗号化されており、これを復号するための暗号鍵が外部装置から与えられるので、その半導体装置自身で暗号鍵を保持する必要はないが、その反面、その外部装置がセキュアであることが必須である。
【００１０】
一方、特許文献３に示される技術は、セキュアな通信相手を期待することができない、スタンドアローンのマイクロコントローラに適用することができる。しかし、そのためには、暗号化されたプログラムを復号するための暗号鍵などの復号情報を、ＣＰＵからさえも読み出すことができないように、ハードウェアを工夫する必要がある。ところが、そのような設計的な工夫でさえも、その設計情報をそっくりそのままコピーするような模倣品においては、秘匿されるべきプログラムやデータを十分安全に秘匿することができるとは言えない。
【００１１】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
一実施の形態によれば、下記の通りである。
【００１３】
すなわち、所定の暗号鍵を用いて暗号化された値（プログラム及び／またはデータ）が格納される不揮発性メモリと、ユニークコード生成部と、暗号復号部とを含んで構成される、半導体集積回路またはシステムであって、以下のように構成される。ユニークコード生成部は、製造ばらつきによって固有に定まるユニークコードを生成する。暗号復号部は、生成されたユニークコードと訂正パラメータとに基づいて暗号鍵を算出し、算出した暗号鍵を用いて、不揮発性メモリから読み出された暗号化された値を復号する。訂正パラメータは、この半導体集積回路の製造後にユニークコード生成部から生成された初期ユニークコードと、不揮発性メモリに格納する値の暗号化に使われる、前記所定の暗号鍵とに基づいて、この半導体集積回路またはシステムの外部で予め算出される。
【発明の効果】
【００１４】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１５】
すなわち、当該半導体集積回路またはシステムのセキュリティを向上することができる。半導体集積回路に搭載され、またはシステムに含まれる不揮発性メモリに暗号化されて格納された値（プログラムコードやデータなど）は、メモリに格納されているデータを読み出す攻撃によって読み出されても、暗号鍵を知られることがないので暗号を復号することができず秘匿性が保たれる。また、半導体集積回路及びシステムの設計がそっくりコピーされた模倣品では、ユニークコード生成部から生成されるユニークコードが真正品と異なるので、暗号鍵が正しく算出されないので暗号を復号することができず、不揮発性メモリに暗号化されて格納された値の秘匿性が保たれる。
【図面の簡単な説明】
【００１６】
【図１】図１は、実施形態１に係るＲＯＭコンテンツ保護システムの構成を示すブロック図である。
【図２】図２は、ＲＯＭを内蔵する半導体集積回路（ＩＣａ）を含んで構成された、実施形態１に係るＲＯＭコンテンツ保護システムを示すブロック図である。
【図３】図３は、実施の形態に係る半導体集積回路の構成例（ＲＯＭ内蔵マイクロコントローラ）を示すブロック図である。
【図４】図４は、ＲＯＭが外付けされた半導体集積回路（ＩＣａ）を含んで構成された、実施形態１に係るＲＯＭコンテンツ保護システムを示すブロック図である。
【図５】図５は、実施の形態に係る半導体集積回路の構成例（ＲＡＭ版マイクロコントローラ）を示すブロック図である。
【図６】図６は、実施形態２に係る半導体集積回路の構成を示すブロック図（ＲＯＭ内蔵版）である。
【図７】図７は、実施形態２に係る半導体集積回路の構成を示すブロック図（ＲＡＭ版）である。
【図８】図８は、実施形態３に係る半導体集積回路（ＲＯＭ内蔵版）及びシステムの構成を示すブロック図である。
【図９】図９は、実施形態３に係る半導体集積回路（ＲＡＭ版）及びシステムの構成を示すブロック図である。
【図１０】図１０は、実施形態４に係る半導体集積回路及びＲＯＭコンテンツ保護システムの構成を示すブロック図である。
【図１１】図１１は、実施形態４に係る鍵データベースの構成例を示す説明図である。
【図１２】図１２は、実施形態５に係る半導体集積回路及びＲＯＭコンテンツ保護システムの構成を示すブロック図である。
【図１３】図１３は、実施形態６に係る半導体集積回路及びＲＯＭコンテンツ保護システムの構成を示すブロック図である。
【図１４】図１４は、実施形態７に係る半導体集積回路及びＲＯＭコンテンツ保護システムの構成を示すブロック図である。
【図１５】図１５は、実施形態８に係る半導体集積回路及びＲＯＭコンテンツ保護システムの構成を示すブロック図である。
【図１６】図１６は、実施形態８に係る鍵データベースの構成例を示す説明図である。
【発明を実施するための形態】
【００１７】
１．実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１８】
〔１〕＜ユニークコードと訂正パラメータから復元された暗号鍵による復号＞
本願において開示される代表的な実施の形態に係る半導体集積回路（ＩＣａ，１）は、所定の暗号鍵（ＣＫ（１））を用いて暗号化された値（Ｄ（ＣＫ（１）））を格納可能な不揮発性メモリ（ＲＯＭ： Read Only Memory，４）と、ユニークコード生成部（２）と、暗号処理部（３）とを含み、以下のように構成される。
【００１９】
前記ユニークコード生成部は、前記半導体集積回路の製造ばらつきによって固有に定まる複数ビットのディジタル値である、ユニークコード（ＵＣ（ａ））を生成可能である。
【００２０】
前記暗号処理部は、訂正パラメータ（ＣＤ（１，ａ））と前記ユニークコードとに基づいて前記暗号鍵（ＣＫ（１））を算出し、算出した前記暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値（Ｄ（ＣＫ（１）））を復号可能に構成される。
【００２１】
前記訂正パラメータは、前記半導体集積回路の製造後に前記ユニークコード生成部から生成される初期ユニークコード（ＵＣ（ａ）＿ｉｎｉｔ）と前記所定の暗号鍵（ＣＫ（１））に基づいて、前記半導体集積回路の外部（２０）で予め算出される。
【００２２】
これにより、当該半導体集積回路（ＩＣａ，１）のセキュリティを向上することができる。半導体集積回路に搭載される不揮発性メモリ（ＲＯＭ，４）に暗号化されて格納された値（プログラムコードやデータなど）（Ｄ（ＣＫ（１）））は、メモリに格納されているデータを読み出す攻撃によって読み出されても、暗号鍵（ＣＫ（１））を知られることがないので暗号を復号することができず秘匿性が保たれる。また、半導体集積回路（ＩＣａ，１）の設計がそっくりコピーされた模倣品では、コピーされたユニークコード生成部（２＿ｘ）から生成されるユニークコード（ＵＣ（ｘ））が真正品のユニークコード（ＵＣ（ａ））と異なるので、暗号鍵が正しく算出されない。そのため、不揮発性メモリ（ＲＯＭ，４）に暗号化されて格納された値（プログラムコードやデータなど）（Ｄ（ＣＫ（１）））の暗号を復号することができず、秘匿性が保たれる。さらに、例え訂正パラメータ（ＣＤ（１，ａ））が、外部（２０）から当該半導体集積回路（ＩＣａ，１）への通信経路で読み出されるなどして、攻撃者に知られたとしても、同様に不揮発性メモリ（ＲＯＭ，４）に暗号化されて格納された値（プログラムコードやデータなどのＲＯＭコンテンツ）（Ｄ（ＣＫ（１）））の秘匿性は保たれる。真正品のユニークコード（ＵＣ（ａ））が生成されない限り、暗号鍵（ＣＫ（１））が正しく算出されないからである。
【００２３】
〔２〕＜エラーを含むユニークコード＞
項１において、前記ユニークコード生成部から生成される前記ユニークコード（ＵＣ（ａ））が、前記初期ユニークコード（ＵＣ（ａ）＿ｉｎｉｔ）に対してエラーを含んでいても、前記暗号処理部は、前記訂正パラメータ（ＣＤ（１，ａ））と前記ユニークコード（ＵＣ（ａ））とに基づいて前記暗号鍵（ＣＫ（１））を算出可能に構成される。
【００２４】
これにより、ユニークコード生成部から生成されるユニークコード（ＵＣ（ａ））に、初期ユニークコード（ＵＣ（ａ）＿ｉｎｉｔ）に対するエラーが含まれている場合であっても、暗号処理部（３）はそのエラーを訂正して正しい暗号鍵（ＣＫ（１））を算出することができ、半導体集積回路（ＩＣａ，１）は正常な機能を保つことができる。
【００２５】
〔３〕＜訂正パラメータを同一チップ内に保持＞
項１または項２において、前記訂正パラメータ（ＣＤ（１，ａ））を同一チップ内に保持する。
【００２６】
これにより、前記訂正パラメータを伝送するためのデータ通信を不要とすることができる。
【００２７】
〔４〕＜訂正パラメータをネットワーク経由で取得＞
項１または項２において、前記半導体集積回路はネットワークインターフェース（１２）をさらに備え、前記訂正パラメータ（ＣＤ（１，ａ））は前記ネットワークインターフェースを介して受信可能に構成される。
【００２８】
これにより、ネットワーク（１１）を経由しても、セキュリティを担保した状態で、暗号鍵に相当する情報（ＣＤ（１，ａ））を配信することができる。
【００２９】
〔５〕＜１つのユニークコードから複数の暗号鍵を生成＞
項１または項２において、前記訂正パラメータを第１訂正パラメータ（ＣＤ（１，ａ））とし、前記暗号鍵を第１暗号鍵（ＣＫ（１））とし、前記暗号処理部は、前記第１訂正パラメータとは異なる第２訂正パラメータ（ＣＤ（２，ａ））と前記ユニークコードとに基づいて、前記第１暗号鍵とは異なる第２暗号鍵（ＣＫ（２））を算出可能に構成される。
【００３０】
これにより、複数の暗号鍵を用途によって使い分けることができ、当該半導体集積回路のセキュリティをさらに向上することができる。
【００３１】
〔６〕＜ＣＰＵ（Central Processing Unit）＞
項１から項５のうちのいずれか１項において、前記半導体集積回路はＣＰＵ（１３）をさらに備え、前記不揮発性メモリ（４）は、前記ＣＰＵで実行可能なプログラムのプログラムコードが前記所定の暗号鍵を用いて暗号化された値を格納可能に構成され、前記ＣＰＵは、前記暗号処理部によって復号されたプログラムを実行可能に構成される。
【００３２】
これにより、不揮発性メモリに格納される、プログラムが秘匿される。
【００３３】
〔７〕＜ＣＰＵからの暗号化されたデータの読み出し＞
項６において、前記不揮発性メモリ（４）は、前記ＣＰＵ（１３）からアクセス可能なデータが前記所定の暗号鍵を用いて暗号化された値を格納可能に構成され、前記ＣＰＵは、前記暗号処理部によって復号された前記データを読み出し可能に構成される。
【００３４】
これにより、不揮発性メモリに格納され秘匿されているデータを、ＣＰＵが利用することができる。
【００３５】
〔８〕＜ＣＰＵから不揮発性メモリへのデータの書き込み＞
項６において、前記暗号処理部は、前記ＣＰＵから出力されるデータを、前記算出された暗号鍵を使って暗号化する機能をさらに備え、前記ＣＰＵは前記不揮発性メモリに書き込むデータを、前記暗号処理部によって暗号化した後に、前記不揮発性メモリに書き込み可能に構成される。
【００３６】
これにより、当該半導体集積回路の使用中に、前記不揮発性メモリに追記または変更すべきデータがある場合にも、そのデータを秘匿することができる。
【００３７】
〔９〕＜ＲＯＭコンテンツ保護システム＞
本願において開示される代表的な実施の形態に係るシステム（ＲＯＭコンテンツ保護システム１０）は、ユニークコード生成部（２）と暗号処理部（３）とを含む半導体集積回路（ＩＣａ，１）と、所定の暗号鍵（ＣＫ（１））を用いて暗号化された値（Ｄ（ＣＫ（１）））を格納可能な不揮発性メモリ（ＲＯＭ，４）とを含み、以下のように構成される。
【００３８】
前記ユニークコード生成部は、前記半導体集積回路の製造ばらつきによって固有に定まる複数ビットのディジタル値である、ユニークコード（ＵＣ（ａ））を生成可能である。
【００３９】
前記暗号処理部は、訂正パラメータ（ＣＤ（１，ａ））と前記ユニークコードとに基づいて前記暗号鍵（ＣＫ（１））を算出し、算出した前記暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値（Ｄ（ＣＫ（１）））を復号可能に構成される。
【００４０】
前記訂正パラメータは、前記半導体集積回路の製造後に前記ユニークコード生成部から生成される初期ユニークコード（ＵＣ（ａ）＿ｉｎｉｔ）と前記所定の暗号鍵（ＣＫ（１））に基づいて、前記システムの外部（２０）で予め算出される。
【００４１】
これにより、当該半導体集積回路（ＩＣａ，１）を含んで構成されるシステム（ＲＯＭコンテンツ保護システム１０）のセキュリティを向上することができる。半導体集積回路（ＩＣａ，１）に内蔵されるか、又は外付けされる不揮発性メモリ（４）に暗号化されて格納された値（プログラムコードやデータなどのＲＯＭコンテンツ）（Ｄ（ＣＫ（１）））は、メモリに格納されているデータを読み出す攻撃によって読み出されても、暗号鍵（ＣＫ（１））を知られることがないので暗号を復号することができず、秘匿性が保たれる。また、半導体集積回路（ＩＣａ，１）の設計がそっくりコピーされた模倣品では、ユニークコード生成部（２＿ｘ）から生成されるユニークコード（ＵＣ（ｘ））が真正品と異なるので、暗号鍵（ＣＫ（１））が正しく算出されないので暗号を復号することができず、不揮発性メモリ（４）に暗号化されて格納された値の秘匿性が保たれる。
【００４２】
〔１０〕＜エラーを含むユニークコード＞
項９において、前記ユニークコード生成部から生成される前記ユニークコード（ＵＣ（ａ））が、前記初期ユニークコード（ＵＣ（ａ）＿ｉｎｉｔ）に対してエラーを含んでいても、前記暗号処理部は、前記訂正パラメータ（ＣＤ（１，ａ））と前記ユニークコードとに基づいて前記暗号鍵を算出可能に構成される。
【００４３】
これにより、ユニークコード生成部（２）から生成されるユニークコード（ＵＣ（ａ））にエラーが含まれている場合であっても、暗号処理部はそれを訂正して正しい暗号鍵（ＣＫ（１））を算出することができ、ＲＯＭコンテンツ保護システム（１０）において、半導体集積回路（ＩＣａ，１）は正常な機能を保つことができる。さらに、半導体集積回路（ＩＣａ，１）を含む、ＲＯＭコンテンツ保護システム（１０）全体のセキュリティも向上することができる。
【００４４】
〔１１〕＜鍵データベース＞
項９または項１０において、前記半導体集積回路と対応付けて前記訂正パラメータ（ＣＤ（１，ａ））を保持し、前記訂正パラメータを前記半導体集積回路に供給するデータベース（９）をさらに備える。
【００４５】
これにより、暗号化された値（Ｄ（ＣＫ（１）））を格納する不揮発性メモリ（４）と、その暗号鍵を生成するための訂正パラメータ（ＣＤ（１，ａ））が別チップで管理され、セキュリティを向上することができる。
【００４６】
〔１２〕＜複数の半導体集積回路と鍵データベース＞
項９または項１０において、前記システムは、複数の前記半導体集積回路とデータベース（９）を含んで構成される。
【００４７】
前記複数の半導体集積回路（１＿ａ、１＿ｂ）のそれぞれは、前記不揮発性メモリ（４＿ａ、４＿ｂ）と、前記ユニークコード生成部と、前記暗号処理部とを含んで構成される。
【００４８】
前記不揮発性メモリには、前記複数の半導体集積回路のそれぞれに対応する暗号鍵（ＣＫ（１，ａ），ＣＫ（１，ｂ））を用いて暗号化された値（Ｄ（ＣＫ（１、ａ）），Ｄ（ＣＫ（１、ｂ）））が格納される。
【００４９】
前記データベースは、前記複数の半導体集積回路のそれぞれと対応付けて、複数の前記訂正パラメータを保持し、前記訂正パラメータを対応する前記半導体集積回路に供給する。
【００５０】
前記訂正パラメータ（ＣＤ（１，ａ））は、対応する前記半導体集積回路の製造後に前記ユニークコード生成部から生成される初期ユニークコード（ＵＣ（ａ）＿ｉｎｉｔ）と、前記対応する前記半導体集積回路の前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵に基づいて、前記システムの外部で予め算出され、前記データベース（９）に格納される。
【００５１】
前記不揮発性メモリ（４＿ａ、４＿ｂ）は、前記複数の半導体集積回路（１＿ａ、１＿ｂ）のそれぞれに内蔵される代わりに、外付けされてもよい。その場合、前記複数の半導体集積回路（１＿ａ、１＿ｂ）のそれぞれは揮発性メモリ（１４）を備え、前記不揮発性メモリ（４＿ａ、４＿ｂ）に格納された、暗号化された値（Ｄ（ＣＫ（１、ａ）），Ｄ（ＣＫ（１、ｂ）））が前記不揮発性メモリ（４＿ａ、４＿ｂ）から転送されることができるように構成される。
【００５２】
これにより、セキュリティが向上された半導体集積回路を複数（１＿ａ、１＿ｂ）搭載したＲＯＭコンテンツ保護システム（１０）を構築することができる。当該システムは、同じ半導体集積回路を複数個搭載して構成しても、異なる種類の半導体集積回路を含んで構成しても良く、さらに複数個の同じ半導体集積回路と異なる種類の半導体集積回路を含んで構成しても良い。
【００５３】
〔１３〕＜外付けＲＯＭ＋ＲＡＭ版ＬＳＩ＞
項９または項１０において、前記半導体集積回路はさらに揮発性メモリ（ＲＡＭ，１４）を備え、前記所定の暗号鍵を用いて暗号化された前記値（Ｄ（ＣＫ（１）））は、前記不揮発性メモリから前記揮発性メモリに転送可能に構成される。また、前記暗号処理部は、前記揮発性メモリから読み出された暗号化された前記値を復号可能に構成される。
【００５４】
これにより、当該半導体集積回路（ＩＣａ，１）が不揮発性メモリを内蔵していない所謂ＲＡＭ版であっても、不揮発性メモリ（４）から当該半導体集積回路（ＩＣａ，１）に内蔵された揮発性メモリ（ＲＡＭ，１４）に転送された、暗号化されて格納された値（ＲＯＭコンテンツ）の秘匿性が保たれる。
【００５５】
〔１４〕＜外付けＲＯＭ＋ＲＡＭ版ＬＳＩのデータベース＞
項１３において、前記半導体集積回路と対応付けて前記訂正パラメータ（ＣＤ（１，ａ））を保持し、前記訂正パラメータを前記半導体集積回路に供給するデータベース（９）と前記不揮発性メモリ（４）を含んで構成される制御半導体集積回路（ＩＣｓ，８）をさらに備える。
【００５６】
これにより、当該半導体集積回路（ＩＣａ，１）が不揮発性メモリを内蔵していない所謂ＲＡＭ版の場合に、ＲＯＭコンテンツ保護システム（１０）を構成する部品数の増加を抑えることができる。
【００５７】
〔１５〕＜訂正パラメータをネットワーク経由で取得＞
項１１または項１２において、前記半導体集積回路と前記データベースとは、ネットワーク（１１）を介して接続され、前記訂正パラメータ（ＣＤ（１，ａ））は前記ネットワークを介して前記半導体集積回路に受信可能に構成される。
【００５８】
これにより、ネットワーク（１１）を経由しても、セキュリティを担保した状態で、暗号鍵に相当する情報（ＣＤ（１，ａ））を配信することができる。
【００５９】
〔１６〕＜１つのユニークコードから複数の暗号鍵を生成＞
項１１または項１２において、前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第１暗号鍵（ＣＫ（１））とし、前記データベースは、前記半導体集積回路と対応付けて複数の前記訂正パラメータ（ＣＤ（１，ａ），ＣＤ（２，ａ））を保持し、前記複数の訂正パラメータを前記半導体集積回路に供給する。
【００６０】
前記暗号処理部は、供給された前記複数の訂正パラメータと前記ユニークコードとに基づいて、前記第１暗号鍵（ＣＫ（１））と別の暗号鍵（ＣＫ（２））とを算出し、算出した前記第１暗号鍵（ＣＫ（１））を用いて、前記不揮発性メモリから読み出された暗号化された値を復号可能に構成される。
【００６１】
これにより、複数の暗号鍵（ＣＫ（１），ＣＫ（２））を用途によって使い分けることができ、当該半導体集積回路のセキュリティをさらに向上し、ＲＯＭコンテンツ保護システム（１０）全体のセキュリティも向上することができる。
【００６２】
〔１７〕＜１つのユニークコードから認証用と復号用の暗号鍵を生成＞
項１１または項１２において、前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第１暗号鍵（ＣＫ（１））とし、前記第１暗号鍵に対応する訂正パラメータを第１訂正パラメータ（ＣＤ（１，ａ））とし、前記システムは、前記データベースと認証部（１８）とを備える、管理集積回路（８）を備える。
【００６３】
前記管理集積回路は、前記データベースに、前記半導体集積回路と対応付けられる前記第１訂正パラメータと第２訂正パラメータ（ＣＤ（２，ａ））を保持する。前記管理集積回路は、さらに、前記認証部にチャレンジデータ（Ｃｈｒ）と第２訂正パラメータに対応する第２暗号鍵（ＣＫ（２））で前記チャレンジデータを暗号化したチャレンジデータ期待値（Ｅｘｐ）とを保持し、前記第２訂正パラメータと前記チャレンジデータを前記半導体集積回路に供給する。
【００６４】
前記半導体集積回路において、前記暗号処理部は、供給された前記第２訂正パラメータと前記ユニークコードとに基づいて、前記第２暗号鍵（ＣＫ（２））を生成し、供給された前記チャレンジデータを前記第２暗号鍵を用いて暗号化し（Ｃｈｒ（ＣＫ（２）））、前記管理集積回路に返信する。
【００６５】
前記管理集積回路は、前記暗号化されて返信された前記チャレンジデータ（Ｃｈｒ（ＣＫ（２）））を、前記認証部に保持される前記チャレンジデータ期待値（Ｅｘｐ）と比較し、一致した場合に、前記第１訂正パラメータ（ＣＤ（１，ａ））を前記半導体集積回路に供給する。
【００６６】
前記半導体集積回路は、供給された前記第１訂正パラメータ（ＣＤ（１，ａ））と前記ユニークコード（ＵＣ（ａ））とに基づいて、前記第１暗号鍵（ＣＫ（１））を算出し、算出した前記第１暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値（Ｄ（ＣＫ（１）））を復号する。
【００６７】
これにより、複数の暗号鍵のうちの１つ（ＣＫ（２））を認証に用いることができ、当該半導体集積回路のセキュリティをさらに向上し、ＲＯＭコンテンツ保護システム（１０）全体のセキュリティも向上することができる。
【００６８】
〔１８〕＜１つのユニークコードから認証用と復号用の暗号鍵を生成（訂正パラメータを同一チップ内に保持）＞
項１１または項１２において、前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第１暗号鍵（ＣＫ（１））とし、前記第１暗号鍵に対応する訂正パラメータを第１訂正パラメータ（ＣＤ（１，ａ））とし、前記システムは、前記データベースと認証部（１８）とを備える、管理集積回路（８）を備える。
【００６９】
前記管理集積回路は、前記データベースに、前記半導体集積回路と対応付けられる前記第１訂正パラメータ（ＣＤ（１，ａ））と第２訂正パラメータ（ＣＤ（２，ａ））を保持する。前記管理集積回路は、さらに、前記認証部にチャレンジデータ（Ｃｈｒ）と前記第２訂正パラメータに対応する第２暗号鍵（ＣＫ（２））で前記チャレンジデータを暗号化したチャレンジデータ期待値（Ｅｘｐ）とを保持し、前記チャレンジデータを前記半導体集積回路に供給する。
【００７０】
前記半導体集積回路は、前記第２訂正パラメータ（ＣＤ（２，ａ））を保持し、前記暗号処理部は前記第２訂正パラメータと前記ユニークコードとに基づいて前記第２暗号鍵（ＣＫ（２））を生成し、供給された前記チャレンジデータを前記第２暗号鍵を用いて暗号化し（Ｃｈｒ（ＣＫ（２）））、前記管理集積回路に返信する。
【００７１】
前記管理集積回路は、前記暗号化されて返信された前記チャレンジデータ（Ｃｈｒ（ＣＫ（２）））を、前記認証部に保持される前記チャレンジデータ期待値（Ｅｘｐ）と比較し、一致した場合に、前記第１訂正パラメータ（ＣＤ（１，ａ））とを前記半導体集積回路に供給する。
【００７２】
前記半導体集積回路は、供給された前記第１訂正パラメータ（ＣＤ（１，ａ））と前記ユニークコード（ＵＣ（ａ））とに基づいて、前記第１暗号鍵（ＣＫ（１））を算出し、算出した前記第１暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値（Ｄ（ＣＫ（１）））を復号する。
【００７３】
これにより、複数の暗号鍵のうちの１つを認証に用いることができ、当該半導体集積回路のセキュリティをさらに向上し、ＲＯＭコンテンツ保護システム（１０）全体のセキュリティも向上することができる。
【００７４】
〔１９〕＜１つのユニークコードから認証用と復号用の暗号鍵を生成（公開鍵認証方式）＞
項１１または項１２において、前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第１暗号鍵（ＣＫ（１））とし、前記第１暗号鍵に対応する訂正パラメータを第１訂正パラメータ（ＣＤ（１，ａ））とし、前記システムは、前記データベースと認証部（１８）とを備える、管理集積回路（８）を備える。
【００７５】
前記管理集積回路は、前記データベースに、前記半導体集積回路と対応付けられる前記第１訂正パラメータと第２訂正パラメータ（ＣＤ（２，ａ））とチャレンジデータ（Ｃｈｒ）と公開鍵（ＰＫ（１））とを保持し、前記第２訂正パラメータと前記チャレンジデータとを前記半導体集積回路に供給する。
【００７６】
前記半導体集積回路は、前記暗号処理部は前記第２訂正パラメータと前記ユニークコードとに基づいて前記第２暗号鍵（ＣＫ（２））を生成し、供給された前記チャレンジデータを前記第２暗号鍵を用いて暗号化して、前記管理集積回路に返信する。
【００７７】
前記管理集積回路は、前記暗号化されて返信された前記チャレンジデータ（Ｃｈｒ（ＣＫ（２））を、前記公開鍵を使って復号し、復号された値と前記チャレンジデータとを比較し、一致した場合に、前記第１訂正パラメータを前記半導体集積回路に供給する。
【００７８】
前記半導体集積回路は、供給された前記第１訂正パラメータと前記ユニークコードとに基づいて、前記第１暗号鍵を算出し、算出した前記第１暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値を復号する。
【００７９】
これにより、複数の暗号鍵のうちの１つ（ＣＫ（２））を認証に用いることができ、当該半導体集積回路のセキュリティをさらに向上し、ＲＯＭコンテンツ保護システム（１０）全体のセキュリティも向上することができる。
【００８０】
〔２０〕＜半導体集積回路（ＩＣａ，１）で秘密鍵を再生＞
項１９において、前記第２暗号鍵は、前記公開鍵に対応する、前記半導体集積回路の秘密鍵（ＳＫ（１））である。
【００８１】
これにより、公開鍵認証システムに適用することができる。
【００８２】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００８３】
〔実施形態１〕＜訂正パラメータとユニークコードから暗号鍵を生成するＩＣ＞
本願において開示される代表的な実施の形態に係るＲＯＭコンテンツ保護システムについて説明する。本実施形態１の説明は、以下の他の実施形態にも共通して妥当する。
【００８４】
図１は、実施形態１に係るＲＯＭコンテンツ保護システム１０の構成を示すブロック図である。ＲＯＭコンテンツ保護システム１０は、ユニークコード生成部２と、暗号処理部３とを含んで構成される半導体集積回路（ＩＣａ，１）と、不揮発性メモリ（ＲＯＭ）４とを備える。ＲＯＭ４は、フラッシュメモリ（登録商標）などの、電気的に書き換え可能な不揮発性メモリであっても、マスクＲＯＭなどのように書き換え不能なメモリであってよい。ＲＯＭ４には、所定の暗号鍵ＣＫ（１）を用いて暗号化されたプログラム及び／またはデータが格納される。プログラムかデータかに関わらず、暗号化された値Ｄ（ＣＫ（１））と呼ぶ。暗号鍵ＣＫ（１）は例えば共通鍵であり、ＲＯＭ４に格納されたときに秘匿されるべき内容２２であるプログラム及び／またはデータは、オフライン処理２０において、共通鍵ＣＫ（１）を用いた暗号化処理ステップ２３を経て暗号化され、ＲＯＭ４に書き込まれる。
【００８５】
ユニークコード生成部２は、ＩＣａ１の製造ばらつきによって固有に定まる複数ビットのディジタル値である、ユニークコードＵＣ（ａ）を生成可能である。特に制限されないが、ユニークコード生成部２は、物理的に複製不可能な関数（ＰＵＦ）を使って、ユニークコードＵＣ（ａ）を生成することができる。例えば、ＳＲＡＭ（Static Random Access Memory）において、電源投入時のメモリセルの状態は、設計パラメータや製造パラメータが全く同じであっても、製品の個体別に製造ばらつきによって固有に定まるディジタル値であり、ユニークコードＵＣ（ａ）として利用することができる。これは、ＳＲＡＭ−ＰＵＦと呼ばれている。この他、論理ゲート回路の信号伝搬遅延を利用するもの、アナログ的な素子値を利用するものなどがある。ユニークコード生成部２には、どのような種類のＰＵＦを利用しても良い。
【００８６】
暗号処理部３は、例えば共通鍵生成部５と復号部６を含んで構成される。共通鍵生成部５と復号部６が個別のハードウェアブロックとして構成されている必要はなく、一連のソフトウェア処理における共通鍵生成ステップと復号ステップによって実現されても、ハードウェアとソフトウェアが協調動作して実行される処理として実現されてもよい。暗号処理部３は、ユニークコードＵＣ（ａ）と後述の訂正パラメータＣＤ（１，ａ）とに基づいて共通鍵ＣＫ（１）を算出し、算出した共通鍵ＣＫ（１）を用いて、ＲＯＭ４から読み出された、暗号化された値Ｄ（ＣＫ（１））を復号することができる。
【００８７】
訂正パラメータＣＤ（１，ａ）は、外部のオフライン処理２０の訂正パラメータ算出ステップ２１において、ＩＣａ１の製造直後にユニークコード生成部２から生成される初期ユニークコードＵＣ（ａ）＿ｉｎｉｔと、共通鍵ＣＫ（１）とに基づいて、予め算出される。共通鍵ＣＫ（１）は、ＲＯＭ４に格納されたときに秘匿されるべき内容２２を暗号化するため暗号化ステップ２３で用いた共通鍵ＣＫ（１）と同じ値である。訂正パラメータ算出ステップ２１のアルゴリズムと共通鍵生成部５のアルゴリズムは、訂正パラメータＣＤ（１，ａ）とユニークコードＵＣ（ａ）を参照して、共通鍵ＣＫ（１）を一意に決定することができるアルゴリズムであればよい。ここでオフライン処理２０とは、ＩＣａとの接続を前提としないセキュアな装置で実行される処理であり、暗号鍵ＣＫ（１）や暗号化ステップ２３、及び、訂正パラメータ算出ステップ２１の内容とその入出力データ、中間データなどは安全に秘匿される。
【００８８】
ＲＯＭ４は、半導体集積回路（ＩＣａ）１に内蔵されていても、外付けされてもよい。
【００８９】
図２は、ＲＯＭ４を内蔵する半導体集積回路（ＩＣａ）１を含んで構成された、実施形態１に係るＲＯＭコンテンツ保護システム１０を示すブロック図である。ＲＯＭ４が内蔵される場合には、ＲＯＭ４から読み出された値（プログラムコードやデータなどのＲＯＭコンテンツ）Ｄ（ＣＫ（１））は、直接または例えばバスブリッジなどの転送回路を経て、復号部６に供給され復号される。図２における他の構成は、図１と同様であるので、説明を省略する。
【００９０】
図３は、実施の形態に係る半導体集積回路（ＩＣａ）１の構成例（ＲＯＭ内蔵マイクロコントローラ）を示すブロック図である。ＣＰＵ１３を含むマイクロコントローラとして実装された例である。詳細は後述する。ＣＰＵ１３によって実行されるプログラムや、そのプログラムで使用されるデータが格納される不揮発性メモリＲＯＭ４が内蔵されている。ＲＡＭ１４は揮発性メモリであり、プログラムの中間データなどが一時的に保持される。
【００９１】
図４は、ＲＯＭが外付けされた半導体集積回路（ＩＣａ）を含んで構成された、実施形態１に係るＲＯＭコンテンツ保護システムを示すブロック図である。ＲＯＭ４が外付けされる場合には、ＲＯＭ４から読み出された値（プログラムコードやデータなどのＲＯＭコンテンツ）Ｄ（ＣＫ（１））は、一旦、半導体集積回路（ＩＣａ）１に内蔵されるＲＡＭ１４に転送される。この転送は、例えば、電源投入時のブートアップシーケンスなどで実行される。その後、ＲＡＭ１４がアクセスされたときに、ＲＡＭ１４から読み出された値（プログラムコードやデータなどのＲＯＭコンテンツ）Ｄ（ＣＫ（１））が、復号部６に供給され復号される。図４における他の構成は、図１と同様であるので、説明を省略する。
【００９２】
このとき、半導体集積回路（ＩＣａ）１としては、ＲＯＭ４をオンチップに内蔵しない、所謂ＲＡＭ版のマイクロコントローラを使用することができる。図５は、実施の形態に係る半導体集積回路の構成例（ＲＡＭ版マイクロコントローラ）を示すブロック図である。詳細は後述するが、図３に示したマイクロコントローラとの違いは、ＲＯＭ４がオンチップに内蔵されていない点である。プログラムなどは、電源投入時のブートアップシーケンスなどによって、外付けのＲＯＭ４か読み出され、オンチップのＲＡＭ１４に転送された後に実行される。
【００９３】
以上述べたように、当該半導体集積回路（ＩＣａ）１のセキュリティを向上することができる。ＩＣａ１に内蔵されるか、または外付けされるＲＯＭ４に暗号化されて格納された値（プログラムコードやデータなど）Ｄ（ＣＫ（１））は、メモリに格納されているデータを読み出す攻撃によって読み出されても、共通鍵ＣＫ（１）を知られることがないので暗号を復号することができず秘匿性が保たれる。また、設計がそっくりコピーされた模倣品でも、不揮発性メモリに暗号化されて格納された値の秘匿性が保たれる。ＩＣａ１の設計がそっくりコピーされた模倣品のＩＣでは、その模倣ＩＣのユニークコード生成部２＿ｘから生成されるユニークコードＵＣ（ｘ）が、真正品のユニークコードＵＣ（ａ）とは異なる。ユニークコードＵＣは、製造ばらつきによって固有に定まる複数ビットのディジタル値であるから、模倣ＩＣが真正のＩＣと全く同一の設計であっても、製造ばらつきが異なるので生成されるユニークコードは同一にはならないからである。ＰＵＦの「物理的に複製不可能な」という性質そのものである。模倣ＩＣでは、ＲＯＭ４には複製元のＩＣと同様に真正の共通鍵ＣＫ（１）を用いて暗号化された値Ｄ（ＣＫ（１））が格納されている。ユニークコード生成部２＿ｘから生成されるユニークコードＵＣ（ｘ）が真正品とは異なる。このため共通鍵生成部５＿ｘから生成される共通鍵も真正の共通鍵ＣＫ（１）とは異なることとなるため、Ｄ（ＣＫ（１））を復号することができない。以上のように、半導体集積回路（ＩＣａ）１のセキュリティを向上することができる。
【００９４】
＜ユニークコードがエラーを含む場合＞
実施形態１においてＩＣａ１のセキュリティを向上させる原理は、暗号の共通鍵ＣＫ（１）が外部から読み出されないことと、共通鍵ＣＫ（１）の生成のためにユニークコードＵＣ（ａ）を使うことによりＩＣの複製では同じ値が生成されないことを利用している。一方、秘匿されるべき値Ｄ（ＣＫ（１））が正しく復号されるためには、オフラインの暗号化で使用した共通鍵ＣＫ（１）と、同じ共通鍵ＣＫ（１）が生成されることが必要である。
【００９５】
しかし、ユニークコード生成部２から生成されるユニークコードＵＣ（ａ）は、ＩＣａ１の電源電圧や温度、経年変化などにより、変動する場合がある。ユニークコード生成部２がＰＵＦを利用するとき、ＰＵＦは物理的なパラメータを利用するので、動作環境に依存するからである。そのため、ユニークコード生成部２から生成されるユニークコードＵＣ（ａ）は、製造直後の初期ユニークコードＵＣ（ａ）＿ｉｎｉｔと、常に全く同一となるとは限らず、初期ユニークコードＵＣ（ａ）＿ｉｎｉｔに対するエラーを含むことがある。
【００９６】
そこで、ユニークコード生成部２から生成されるユニークコードＵＣ（ａ）が、初期ユニークコードＵＣ（ａ）＿ｉｎｉｔに対してエラーを含んでいても、暗号処理部３は、訂正パラメータＣＤ（１，ａ）とユニークコードＵＣ（ａ）とに基づいて共通鍵ＣＫ（１）を算出することができるように構成されるとよい。
【００９７】
これにより、ユニークコード生成部２から生成されるユニークコードＵＣ（ａ）に、初期ユニークコードＵＣ（ａ）＿ｉｎｉｔに対するエラーが含まれている場合であっても、暗号処理部３はそのエラーを訂正して正しい共通鍵ＣＫ（１）を算出することができ、半導体集積回路（ＩＣａ）１は正常な機能を保つことができる。
【００９８】
訂正パラメータ算出ステップ２１のアルゴリズムと共通鍵生成部５のアルゴリズムは、訂正パラメータＣＤ（１，ａ）とユニークコードＵＣ（ａ）を参照して、共通鍵ＣＫ（１）を一意に決定することができるアルゴリズムであればよい。ここで、ユニークコードＵＣ（ａ）が初期ユニークコードＵＣ（ａ）＿ｉｎｉｔに対してエラーを含んでいても、同じ共通鍵ＣＫ（１）が生成されるためには、特に制限されないが、例えば、誤り訂正符号を利用することができる。ここで、誤り訂正符号とは、例えばハミング符号やＢＣＨ符号などで、ｎビットのデータとｍビットの冗長ビットを結合したｎ＋ｍビットの符号を、ｋビット以内の誤りを訂正することができるように構成することができる。ｎビットのデータをユニークコードＵＣ（ａ）とし、ｍビットの冗長ビットを訂正パラメータＣＤ（１，ａ）とすれば、両者を結合したｎ＋ｍビットの符号に含まれるｋビット以内の誤りが訂正可能である。誤りの訂正されたｎビットを共通鍵ＣＫ（１）としても良いし、ｎ＋ｍビットの符号全体を共通鍵ＣＫ（１）としてもよく、ｎ＋ｍビットの符号から何らかの規則に基づいて、適当なビット数のデータを生成して共通鍵ＣＫ（１）としてもよい。
【００９９】
誤り訂正能力に相当するビット数ｋは、採用する誤り訂正符号の訂正アルゴリズムに基づいて、元データのビット数ｎと、結合する冗長ビットのビット数ｍとによって調整することができる。ユニークコードＵＣ（ａ）に含まれるエラーのビット数の実態に応じて、決めればよい。ユニークコードＵＣ（ａ）と訂正パラメータＣＤ（１，ａ）のそれぞれのビット数は、上記誤り訂正符号のデータｎビットと冗長ビットｍビットと対応付ける必要はない。
【０１００】
＜半導体集積回路（ＩＣａ）１の実装形態＞
半導体集積回路（ＩＣａ）１は、他にＣＰＵを含む、例えば、マイクロコントローラとして実現することができる。
【０１０１】
図３と図５は、実施の形態に係る半導体集積回路（ＩＣａ）１の構成例を示すブロック図である。図３は、ＲＯＭ４をオンチップに内蔵する、所謂ＲＯＭ内蔵マイクロコントローラであり、図５は、ＲＯＭ４をオンチップに内蔵しない、所謂ＲＡＭ版のマイクロコントローラである。
【０１０２】
図３に示されるＲＯＭ内蔵マイクロコントローラは、ＣＰＵ１３と、ＲＡＭ１４と、Ｉ／Ｏ１５と、ユニークコード生成部２と、暗号ＩＰ１６と、ＲＯＭ４とを備え、それらが互いにバス１７を介して接続される。特に制限されないが、ＩＣａ１は、例えば、公知のＣＭＯＳ（Complementary Metal-Oxide-Semiconductor field effect transistor）ＬＳＩの製造技術を用いて、シリコンなどの単一半導体基板上に形成される。
【０１０３】
ユニークコード生成部２は、前述のようにデバイスの固有のディジタル値を生成する装置である。このユニークコード生成装置は、他の構成要素と分けて構成される必要は無い。たとえば、前述のＳＲＡＭ−ＰＵＦの場合は、ＲＡＭ１４の一部を用いて構成する事も可能である。
【０１０４】
ＲＯＭ４には、ＣＰＵ１３からアクセス可能なプログラムやデータが、前記所定の暗号鍵である共通鍵ＣＫ（１）を用いて暗号化された値で格納される。暗号ＩＰ１６は、ユニークコード生成部２から供給されるユニークコードＵＣ（ａ）と、訂正パラメータＣＤ（１，ａ）から共通鍵ＣＫ（１）を生成し、ＲＯＭ４から読み出された値Ｄ（ＣＫ（１））を復号してＣＰＵ１３に供給する。ＲＯＭ４から読み出された値Ｄ（ＣＫ（１））がプログラムであれば、ＣＰＵ１３は復号されたプログラムコードをフェッチして実行し、データであれば演算処理等に利用する。
【０１０５】
図５に示されるＲＡＭ版のマイクロコントローラも、ＣＰＵ１３と、ＲＡＭ１４と、Ｉ／Ｏ１５と、ユニークコード生成部２と、暗号ＩＰ１６とを備え、それらが互いにバス１７を介して接続されるが、ＲＯＭ４は内蔵されていない。特に制限されないが、ＲＡＭ版のマイクロコントローラも、例えば、公知のＣＭＯＳＬＳＩの製造技術を用いて、シリコンなどの単一半導体基板上に形成されることができるが、不揮発性メモリを形成する工程を含む必要がないため、製造コストはＲＯＭ内蔵版よりも低く、単位チップ面積当たりの欠陥密度が低い分、歩留まりが向上するので、製造原価を低く抑えることができる。
【０１０６】
一般にＲＡＭ版のマイクロコントローラでは、実行すべきプログラムのプログラムコードやプログラムで利用されるデータは、外付けのＲＯＭに格納しておき、電源投入直後のブートアップシーケンスによって、オンチップのＲＡＭ１４に転送した後に、ＣＰＵ１３がＲＡＭ１４にアクセスして実行する。ＣＰＵ１３が外付けのメモリにアクセスするには、オンチップのメモリよりも多くのアクセスサイクルが必要であるため、動作速度が制限されるためである。
【０１０７】
本実施形態においては、外付けのＲＯＭには、ＣＰＵ１３からアクセス可能なプログラムやデータが、前記所定の暗号鍵である共通鍵ＣＫ（１）を用いて暗号化された値で格納される。上記ブートアップシーケンス等を使って、外付けのＲＯＭから暗号化された値Ｄ（ＣＫ（１））をＲＡＭ１４に予め転送する。暗号ＩＰ１６は、上記と同様に、ユニークコード生成部２から供給されるユニークコードＵＣ（ａ）と、訂正パラメータＣＤ（１，ａ）から共通鍵ＣＫ（１）を生成する。ＣＰＵ１３がＲＡＭ１４をアクセスすることによって読み出された値Ｄ（ＣＫ（１））は、暗号ＩＰ１６によって、生成された共通鍵ＣＫ（１）を用いて復号され、ＣＰＵ１３に供給される。読み出された値Ｄ（ＣＫ（１））がプログラムであれば、ＣＰＵ１３は復号されたプログラムコードをフェッチして実行し、データであれば演算処理等に利用する。
【０１０８】
以上述べてきたように、不揮発性メモリ（ＲＯＭ４）に格納され秘匿されているデータを、ＣＰＵ１３が利用することができる。
【０１０９】
＜ＣＰＵから不揮発性メモリへのデータの書き込み＞
ＩＣａ１は、暗号ＩＰ１６にさらに暗号化部を備えることもできる。暗号ＩＰ１６に含まれる暗号処理部３は、ＣＰＵ１３から出力されるデータを、生成された共通鍵ＣＫ（１）を使って暗号化する機能をさらに備えることができる。ＣＰＵ１３はＲＯＭ４に書き込むデータを、暗号処理部３によって暗号化した後に、ＲＯＭ４に書き込むことができる構成となる。このとき、ＲＯＭ４は電気的に書き換え可能なメモリである。
【０１１０】
これにより、ＩＣａ１の使用中に、ＲＯＭ４に追記または変更すべきデータがある場合にも、そのデータを秘匿することができる。
【０１１１】
以上述べた実施の形態では、暗号処理部３の機能が暗号ＩＰ１６によって実行される例を示したが、暗号処理部３の機能は、ＣＰＵ１３のソフトウェアによって実行されてもよい。その場合、暗号ＩＰ１６を備えない構成を採ることもできるし、一部の暗号演算処理を加速するためのアクセラレータとして構成することもできる。また、訂正パラメータＣＤ（１，ａ）は、どのような方法で、共通鍵生成部５に供給しても良い。例えば、ＩＣａ１の同一チップ内に保持して供給しても良いし、ＩＣａ１の外部から供給しても良い。
【０１１２】
〔実施形態２〕＜鍵データベースをオンチップに含むＩＣ＞
図６は、実施形態２に係る半導体集積回路（ＩＣａ）１の構成を示すブロック図（ＲＯＭ内蔵版）である。図２に示した実施形態１との違いは、ＩＣａ１が鍵データベース９を含んで構成される点である。オフライン処理２０で算出された訂正パラメータＣＤ（１，ａ）は予め鍵データベース９に格納され、訂正パラメータＣＤ（１，ａ）が同一チップ内に保持される。図２と同様の部分の構成についての説明は省略する。
【０１１３】
鍵データベース９は、例えば、ＲＯＭ４内の所定の領域とし、その領域に訂正パラメータＣＤ（１，ａ）を格納しておき、電源投入処理やブート処理、リセット処理などの初期シーケンスで共通鍵生成部５に読み込むことができる。また、ＲＯＭ４以外の不揮発性メモリを備えて、訂正パラメータＣＤ（１，ａ）をそれに保持してもよい。
【０１１４】
また、ＩＣａ１がＲＯＭ４を内蔵せず、ＩＣａ１にＲＯＭ４を外付けして、ＲＯＭコンテンツ保護システムを構成してもよい。図７は、実施形態２に係る半導体集積回路の構成を示すブロック図（ＲＡＭ版）である。図４に示した実施形態１との違いは、ＩＣａ１が鍵データベース９を含んで構成される点である。オフライン処理２０で算出された訂正パラメータＣＤ（１，ａ）は予め、外付けされたＲＯＭ４の鍵データベース９に格納される。ブートアップシーケンスなどにより、鍵データベース９はオンチップのＲＡＭ１４に転送され、訂正パラメータＣＤ（１，ａ）が同一チップ内に保持される。その他、図２、図４と同様の部分の構成についての説明は省略する。
【０１１５】
これにより、訂正パラメータＣＤ（１，ａ）をチップの外から伝送するためのデータ通信を不要とすることができる。チップまたはシステムの外から伝送しないので、攻撃者に伝送中の値を観測され、または繰り返しの試行により探索されるなどにより、訂正パラメータＣＤ（１，ａ）の値が知られる恐れを低減することができ、当該半導体集積回路（ＩＣａ）１及び当該ＲＯＭコンテンツ保護システムのセキュリティを向上することができる。
【０１１６】
〔実施形態３〕＜鍵データベースを含む管理ＩＣ（ＩＣｓ）を外付け＞
図８は、実施形態３に係る半導体集積回路（ＩＣａ）１及びＩＣａを含んで構成されるＲＯＭコンテンツ保護システム１０の構成を示すブロック図（ＲＯＭ内蔵版）である。図３に示した実施形態２との違いは、ＩＣａ１が鍵データベース９をオンチップに含まず、代わりに鍵データベース９を持つ管理ＩＣ（ＩＣｓ）８が外付けされ、ＩＣａ１に訂正パラメータＣＤ（１，ａ）を供給する点である。オフライン処理２０（図示を省略）で算出された訂正パラメータＣＤ（１，ａ）は予めＩＣｓ８の鍵データベース９に格納され保持される。図１、図２、図６と同様の部分の構成についての説明は省略する。
【０１１７】
図９は、実施形態３に係る半導体集積回路（ＲＡＭ版）及びシステムの構成を示すブロック図である。ＩＣａ１は、図４、図５に示したような、ＲＯＭ４を内蔵しない半導体集積回路である。外付けされる管理ＩＣ（ＩＣｓ）８が、ＲＯＭ４を内蔵する。ＲＯＭ４には、暗号化された値Ｄ（ＣＫ（１））が格納されており、例えばブートアップシーケンスを使って、電源投入直後にＩＣａ１内のＲＡＭ１４に、転送される。上述の図８の場合と同様に、オフライン処理２０（図示を省略）で算出された訂正パラメータＣＤ（１，ａ）は予めＩＣｓ８の鍵データベース９に格納され保持され、管理ＩＣ（ＩＣｓ）８からＩＣａ１に供給される。その他、図１、図４、図７と同様の部分の構成についての説明は省略する。ＲＯＭ４が管理ＩＣ（ＩＣｓ）８に内蔵される場合について説明したが、ＲＯＭ４はＩＣｓ８とは別に外付けされてもよい。
【０１１８】
以上のように、ＲＯＭ４に格納される暗号化された値Ｄ（ＣＫ（１））と、その暗号を復号するための暗号鍵である共通鍵ＣＫ（１）を生成するための訂正パラメータＣＤ（１，ａ）が、別チップで管理されるので、セキュリティを向上することができる。
【０１１９】
また、管理ＩＣ（ＩＣｓ）８は、オフライン処理２０とは分離して、暗号鍵ＣＫ（１）や暗号化ステップ２３、及び、訂正パラメータ算出ステップ２１の内容とその入出力データ、中間データなどは内部に保持せず、その結果である鍵データベース９のみを保持するように構成することができる。これにより、管理ＩＣ（ＩＣｓ）８がセキュアではない環境で使用される場合であっても、ＲＯＭコンテンツ保護システム１０全体としてのセキュリティを向上することができる。
【０１２０】
〔実施形態４〕＜複数の保護対象ＩＣ（ＩＣａ、ＩＣｂ）と１個の管理ＩＣ（ＩＣｓ）＞
図１０は、実施形態４に係る半導体集積回路（ＩＣａ、ＩＣｂ）１＿ａ、１＿ｂ及びＩＣａとＩＣｂを含んで構成されるＲＯＭコンテンツ保護システム１０の構成を示すブロック図である。図８に示した実施形態３との違いは、１個の管理ＩＣ（ＩＣｓ）８に対して、図８に示したＩＣａ（１＿ａ）以外に、同様に構成されたＩＣｂ（１＿ｂ）が接続されている点である。図１０では２個のみの保護対象ＩＣ（ＩＣａ、ＩＣｂ）を示したが、接続する保護対象ＩＣの数は、任意に決めることができる。
【０１２１】
複数の半導体集積回路（ＩＣａ、ＩＣｂ）１＿ａ、１＿ｂのそれぞれは、不揮発性メモリ（ＲＯＭ）４＿ａ、４＿ｂと、ユニークコード生成部２＿ａ、２＿ｂと、暗号処理部３＿ａ、３＿ｂとを含んで構成される。
【０１２２】
それぞれの不揮発性メモリ（ＲＯＭ）４＿ａと４＿ｂには、ＩＣａ（１＿ａ）とＩＣｂ（１＿ｂ）のそれぞれに対応する共通鍵ＣＫ（１，ａ）とＣＫ（１，ｂ）を用いて暗号化された値Ｄ（ＣＫ（１、ａ））とＤ（ＣＫ（１、ｂ））が格納される。ＩＣａ（１＿ａ）とＩＣｂ（１＿ｂ）でそれぞれ異なる共通鍵（ＣＫ（１、ａ）≠ＣＫ（１、ｂ））を使って暗号化しても良いし、同じ共通鍵ＣＫ（１）（＝ＣＫ（１、ａ）＝ＣＫ（１、ｂ））を使って暗号化しても良い。図５には、同じ共通鍵ＣＫ（１）を使って暗号化されている例が示される。個体ごとにＲＯＭ４に書き込むコードを変える必要がないため、大量生産に適する。一方、個体ごとに暗号鍵を異ならせれば、セキュリティは向上する。
【０１２３】
管理ＩＣ（ＩＣｓ）８に含まれる鍵データベース９は、複数の半導体集積回路（ＩＣａ、ＩＣｂ）１＿ａ、１＿ｂのそれぞれと対応付けて、複数の訂正パラメータＣＤ（１，ａ）とＣＤ（１，ｂ）を保持し、訂正パラメータを対応する半導体集積回路に供給する。訂正パラメータＣＤ（１，ａ）はＩＣａ（１＿ａ）に、給され、共通鍵生成部５＿ａにより、ユニークコードＵＣ（ａ）を参照して共通鍵ＣＫ（１）を生成する。復号部６＿ａは、生成された共通鍵ＣＫ（１）を用いて、ＲＯＭ４＿ａに格納されている暗号化されたデータＤ（ＣＫ（１））を復号する。他方、訂正パラメータＣＤ（１，ｂ）はＩＣｂ（１＿ｂ）に供給され、共通鍵生成部５＿ｂにより、ユニークコードＵＣ（ｂ）を参照して共通鍵ＣＫ（１）を生成する。復号部６＿ｂは、生成された共通鍵ＣＫ（１）を用いて、ＲＯＭ４＿ｂに格納されている暗号化されたデータＤ（ＣＫ（１））を復号する。
【０１２４】
図１１は、実施形態４に係る管理ＩＣ（ＩＣｓ）８に含まれる鍵データベース９の構成例を示す説明図である。鍵データベース９は、複数の半導体集積回路ＩＣａ、ＩＣｂ、…ごとに、複数の共通鍵ＣＫ（１）、ＣＫ（２）、…に対応する複数の訂正パラメータを格納したデータベースである。
【０１２５】
訂正パラメータＣＤ（１，ａ）は、対応するＩＣａの製造後にユニークコード生成部２＿ａから生成される初期ユニークコードＵＣ（ａ）＿ｉｎｉｔと共通鍵ＣＫ（１）に基づいて、システムの外部で予め算出された訂正パラメータである。訂正パラメータＣＤ（２，ａ）は、同じく対応するＩＣａの初期ユニークコードＵＣ（ａ）＿ｉｎｉｔに基づくが、別の共通鍵ＣＫ（２）を生成するための訂正パラメータである。他の半導体集積回路ＩＣｂなどについても、同様に、対応する訂正パラメータＣＤ（１，ｂ）、ＣＤ（２，ｂ）がシステムの外部で予め算出され、鍵データベース９に格納される。図１０に示した例は、ＲＯＭ４＿ａとＲＯＭ４＿ｂには同じ共通鍵ＣＫ（１）を使って暗号化した値Ｄ（ＣＫ（１））が格納される例であるので、ＣＤ（２，ａ）とＣＤ（２，ｂ）は、使用されていない。ＲＯＭ４＿ａとＲＯＭ４＿ｂのプログラムやデータを、それぞれ異なる共通鍵ＣＫ（１）とＣＫ（２）を使って暗号化したときは、ＩＣａにはＣＤ（１，ａ）を供給し、ＩＣｂにはＣＤ（２，ｂ）を供給すればよい。
【０１２６】
また、訂正パラメータＣＤの供給方法は任意である。例えば、管理ＩＣ（ＩＣｓ）８に、ＩＣａ、ＩＣｂ、…それぞれに接続される配線を備え、訂正パラメータＣＤ（１，ａ）、ＣＤ（１，ｂ）、…をパラレル通信またはシリアル通信で供給してもよい。または、共通のバスや通信路を設けて、識別コードなどを使った通信により、個別に訂正パラメータを伝送してもよい。
【０１２７】
これにより、セキュリティが向上された半導体集積回路を複数（１＿ａ、１＿ｂ）搭載したＲＯＭコンテンツ保護システム１０を構築することができる。当該システムは、同じ半導体集積回路を複数個搭載して構成しても、異なる種類の半導体集積回路を含んで構成しても良く、さらに複数個の同じ半導体集積回路と異なる種類の半導体集積回路を含んで構成しても良い。
【０１２８】
図１０には、ＲＯＭ４＿ａ、４＿ｂをそれぞれ内蔵する、半導体集積回路（ＩＣａ、ＩＣｂ）１＿ａ、１＿ｂを示したが、ＲＯＭ４＿ａ、４＿ｂは必ずしも内蔵される必要はなく、例えば図４、図７などと同様に外付けされてもよい。また、それぞれ別個のＲＯＭとして外付けされる必要もなく、例えば全てのコンテンツを格納する１個ＲＯＭを、ＩＣｓ８に内蔵して構成してもよい。その場合は、ブートアップシーケンスなどにより、順次、各半導体集積回路（ＩＣａ、ＩＣｂ）１＿ａ、１＿ｂに、暗号化された値Ｄ（ＣＫ（１、ａ））とＤ（ＣＫ（１、ｂ））がそれぞれ転送される。
【０１２９】
〔実施形態５〕＜訂正パラメータをネットワーク経由で供給＞
図１２は、実施形態５に係る半導体集積回路（ＩＣａ）１及びＩＣａを含んで構成されるＲＯＭコンテンツ保護システム１０の構成を示すブロック図である。図８に示した実施形態３との違いは、ＩＣａ１がネットワークインターフェース１２を含んで構成され、ネットワーク１１を介して管理ＩＣ（ＩＣｓ）８と接続される点である。ＩＣａ１は、ＩＣｓ８の鍵データベース９に格納される訂正パラメータＣＤ（１，ａ）を、ネットワーク１１を介して受信することができる。図８と同様の部分の構成についての説明は省略する。
【０１３０】
ネットワーク１１は、公衆網からローカルエリアネットワーク（ＬＡＮ: Local Area Network）、さらには、独自の通信プロトコルを持つような、より単純なネットワークであってもよく、図８に示した１：１、または、図１０に示した多：１の通信路で構成されてもよい。
【０１３１】
これにより、ネットワーク１１を経由しても、セキュリティを担保した状態で、暗号鍵に相当する情報である訂正パラメータＣＤ（１，ａ）を保護対象のＩＣに配信することができる。ネットワーク１１を介して伝送される情報が、共通鍵ＣＫ（１）そのものではなく、訂正パラメータＣＤ（１，ａ）であるため、これが知られても、ユニークコードＵＣ（ａ）が知られない限り、共通鍵ＣＫ（１）を生成することができない。したがって、訂正パラメータＣＤ（１，ａ）を、ネットワーク１１を経由して伝送しても、セキュリティを担保することができる。
【０１３２】
図１２には、ＲＯＭ４を内蔵する、半導体集積回路（ＩＣａ）１を示したが、ＲＯＭ４は必ずしも内蔵される必要はなく、例えば図４、図７などと同様に外付けされてもよい。その場合は、暗号化された値Ｄ（ＣＫ（１、ａ））は、例えば、電源投入時にブートアップシーケンスなどにより転送される。また、暗号化された値Ｄ（ＣＫ（１、ａ））は、ＩＣｓ８からネットワーク１１を介してＩＣａ１にダウンロードされてもよい。
【０１３３】
〔実施形態６〕＜ＲＯＭ保護用暗号、認証用暗号等ための複数の訂正パラメータ＞
図１１に示したように、鍵データベース９は、保護対象のＩＣごとに複数の共通鍵を生成するための、複数の訂正パラメータを保持することができる。複数の共通鍵は、用途ごと使い分けることができる。例えば、プログラムの暗号化のために共通鍵ＣＫ（１）を用い、データの暗号化のために別の共通鍵ＣＫ（２）を用い、通信の暗号化のためにさらに別の共通鍵ＣＫ（３）を用いることができる。また、複数の保護対象のＩＣの間で、異なる共通鍵を用いることもできるし、同じ共通鍵を用いて相互間の通信を暗号化することもできる。本実施形態６の他、実施形態７と実施形態８の合計３つの例を取り上げて、より詳細に説明する。
【０１３４】
＜１つのユニークコードから複数の暗号鍵を生成＞
ＩＣａ１に搭載される不揮発性メモリ（ＲＯＭ）４に格納する値の暗号化に使われる暗号鍵を第１共通鍵ＣＫ（１）とし、鍵データベース９は、ＩＣａ１と対応付けて複数の訂正パラメータＣＤ（１，ａ）、ＣＤ（２，ａ）、…を保持し、それらをＩＣａ１に供給する。ＩＣａ１の暗号処理部３は、供給された複数の訂正パラメータＣＤ（１，ａ）、ＣＤ（２，ａ）、…とユニークコード生成部２から生成されるユニークコードＵＣ（ａ）とに基づいて、第１共通鍵ＣＫ（１）とそれとは別の共通鍵ＣＫ（２）とを算出する。暗号処理部３は、復号部６において算出した第１共通鍵ＣＫ（１）を用いて、ＲＯＭ４から読み出された、暗号化された値Ｄ（ＣＫ（１））を復号することができる。
【０１３５】
これにより、複数の暗号鍵（ＣＫ（１）、ＣＫ（２）、…）に用途によって使い分けることができ、当該半導体集積回路のセキュリティをさらに向上し、システム全体のセキュリティも向上することができる。
【０１３６】
＜１つのユニークコードから認証用と復号用の暗号鍵を生成＞
図１３は、実施形態６に係る半導体集積回路（ＩＣａ）１＿ａ及びＩＣａを含んで構成されるＲＯＭコンテンツ保護システム１０の構成を示すブロック図である。１つのユニークコードＵＣ（ａ）から２個の暗号鍵ＣＫ（１）とＣＫ（２）を生成し、一方の共通鍵ＣＫ（１）をＲＯＭ４に格納される暗号化された値Ｄ（ＣＫ（１））を復号するために用い、他方の共通鍵ＣＫ（２）を認証に用いる例である。ＩＣａ（１＿ａ）は、管理ＩＣ（ＩＣｓ）８と、さらに別の保護対象ＩＣ（ＩＣｚ）１＿ｚと接続され、不揮発性メモリ（ＲＯＭ）４と、ユニークコード生成部２と、暗号処理部３と、インターフェース部１９とを含んで構成される。暗号処理部３には、共通鍵生成部５と復号部６＿１と６＿２と、暗号化部７＿１と７＿２とが含まれる。ＲＯＭ４には、共通鍵ＣＫ（１）を用いて暗号化されたプログラム及び／またはデータＤ（ＣＫ（１））が格納される。図１３では復号部６＿２と暗号化部７＿２は１つのブロックで示され、インターフェース部１９を介して別の保護対象ＩＣ（ＩＣｚ）１＿ｚと接続されている。管理ＩＣ（ＩＣｓ）８は鍵データベース９の他、さらに認証部１８を備える。管理ＩＣ（ＩＣｓ）８の認証部１８は、ＩＣａ（１＿ａ）の暗号化部７＿１と接続される。
【０１３７】
ＩＣａ（１＿ａ）及びＩＣａを含んで構成されるシステムの動作について説明する。ＩＣｓ８は、鍵データベース９に、共通鍵ＣＫ（１）に対応する訂正パラメータＣＤ（１，ａ）と、共通鍵ＣＫ（２）に対応する訂正パラメータＣＤ（２，ａ）とを保持する。さらに、認証用のチャレンジデータＣｈｒを共通鍵ＣＫ（２）を用いて暗号化したＣｈｒ（ＣＫ（２））を、期待値Ｅｘｐとして保持する。チャレンジデータＣｈｒは、例えば乱数などの値を用いることができる。複数のチャレンジデータＣｈｒ＿１〜Ｃｈｒ＿ｘとそれぞれに対応する期待値Ｅｘｐ＿１〜Ｅｘｐ＿ｘを順次、又はランダムに切替えて使用することもできる。このように、複数の候補を備えて切り替えることにより、安全性を高めることができる。
【０１３８】
まず、ＩＣｓ８は、ＩＣａ（１＿ａ）に対して、鍵データベース９から訂正パラメータＣＤ（２，ａ）と、認証部１８からチャレンジデータＣｈｒを送信する。ＩＣａ（１＿ａ）は、共通鍵生成部５で、ユニークコード生成部２から生成されるユニークコードＵＣ（ａ）を参照して、受信した訂正パラメータＣＤ（２，ａ）を使って共通鍵ＣＫ（２）を生成し、暗号化部７＿１に供給する。暗号化部７＿１は、ＩＣｓ８から受信したチャレンジデータＣｈｒを共通鍵ＣＫ（２）を使って暗号化し（Ｃｈｒ（ＣＫ（２）））、ＩＣｓ８に返信する。ＩＣｓ８は、暗号化されて返信されたチャレンジデータＣｈｒ（ＣＫ（２））を、認証部１８でチャレンジデータ期待値Ｅｘｐと比較する。一致した場合には、ＩＣａを真正な保護対象ＩＣとして認証する。
【０１３９】
ＩＣａを真正な保護対象ＩＣであると認証した後、管理ＩＣ（ＩＣｓ）８は、ＩＣａに対して、訂正パラメータＣＤ（１，ａ）を供給する。例えば、認証部１８は、暗号化されて返信されたチャレンジデータＣｈｒ（ＣＫ（２））とチャレンジデータ期待値Ｅｘｐと比較し、一致した場合に鍵データベース９に対して照合結果ｍａｔｃｈを出力し、その結果に基づいて、鍵データベース９がＩＣａに対して、訂正パラメータＣＤ（１，ａ）を供給するように構成される。ＩＣａ（１＿ａ）は、共通鍵生成部５で、ユニークコード生成部２から生成されるユニークコードＵＣ（ａ）を参照して、受信した訂正パラメータＣＤ（１，ａ）を使って共通鍵ＣＫ（１）を生成し、復号部６＿１に供給する。復号部６＿１は、実施形態１や実施形態４などと同様に、算出された共通鍵ＣＫ（１）を用いて、ＲＯＭ４から読み出された暗号化された値Ｄ（ＣＫ（１））を復号することができる。
【０１４０】
算出された共通鍵ＣＫ（１）は、さらに、復号部６＿２と暗号化部７＿２に供給されてもよい。同じ共通鍵ＣＫ（１）を持つ別の保護対象ＩＣであるＩＣｚ（１＿ｚ）との間で、インターフェース部１９を介して暗号通信を行うことができる。本実施形態では、ＩＣｚ（１＿ｚ）との間の暗号通信は、ＲＯＭ４の内容の保護と同じ暗号鍵（共通鍵ＣＫ（１））を用いて暗号化する例を示したが、別の暗号鍵（共通鍵ＣＫ（３）など）を用いてもよい。
【０１４１】
復号部６＿１と６＿２及び暗号化部７＿１と７＿２は、１個の暗号モジュールとして実装されてもよい。復号部６＿１と６＿２及び暗号化部７＿１と７＿２のための復号と暗号化の演算を時分割で順次実行することにより、並列に設ける場合よりも回路規模を小さく抑えることができる。
【０１４２】
これにより、複数の暗号鍵のうちの１つ（ＣＫ（２））を認証に用いることができ、当該半導体集積回路（ＩＣａ）のセキュリティをさらに向上し、ＲＯＭコンテンツ保護システム１０全体のセキュリティも向上することができる。
【０１４３】
図１３には、ＲＯＭ４をそれぞれ内蔵する、半導体集積回路（ＩＣａとＩＣｚ）１＿ａと１＿ｚを示したが、ＲＯＭ４は必ずしも内蔵される必要はなく、例えば図４、図７などと同様に外付けされてもよい。その場合は、暗号化された値Ｄ（ＣＫ（１，ａ））とＤ（ＣＫ１，ｚ）は、例えば、電源投入時にブートアップシーケンスなどにより、ＩＣａ（１＿ａ）とＩＣｚ（１＿ｚ）にそれぞれ転送される。ＲＯＭ４はＩＣａ（１＿ａ）とＩＣｚ（１＿ｚ）にそれぞれ外付けされても良いし、両方のコンテンツを含む１個のＲＯＭ４を外付けして、ＩＣａ（１＿ａ）とＩＣｚ（１＿ｚ）にそれぞれのコンテンツが順次転送されるように構成されてもよい。１個のＲＯＭ４は管理ＩＣ（ＩＣｓ）に内蔵してもよい。
【０１４４】
〔実施形態７〕＜認証用暗号のための訂正パラメータをオンチップに含むＩＣ＞
図１４は、実施形態７に係る半導体集積回路（ＩＣａ）１＿ａ及びＩＣａを含んで構成されるＲＯＭコンテンツ保護システム１０の構成を示すブロック図である。図１３に示した実施形態６との違いは、認証用に用いる共通鍵ＣＫ（２）に対応する訂正パラメータＣＤ（２，ａ）が、ＩＣａ（１＿ａ）のＲＯＭ４に格納され、認証に際して共通鍵生成部５に供給される点である。他の構成は、図１３を引用して説明した実施形態６と同様であるので、説明を省略する。
【０１４５】
ＩＣａ（１＿ａ）及びＩＣａを含んで構成されるシステムの動作について説明する。ＩＣｓ８は、鍵データベース９に、共通鍵ＣＫ（１）に対応する訂正パラメータＣＤ（１，ａ）と、認証用のチャレンジデータＣｈｒを共通鍵ＣＫ（２）を用いて暗号化したＣｈｒ（ＣＫ（２））を、期待値Ｅｘｐとして保持する。まず、ＩＣｓ８は、ＩＣａ（１＿ａ）に対して、認証部１８からチャレンジデータＣｈｒを送信する。ＩＣａ（１＿ａ）は、共通鍵生成部５で、ユニークコード生成部２から生成されるユニークコードＵＣ（ａ）を参照して、ＲＯＭ４に格納される訂正パラメータＣＤ（２，ａ）を使って共通鍵ＣＫ（２）を生成し、暗号化部７＿１に供給する。暗号化部７＿１は、ＩＣｓ８から受信したチャレンジデータＣｈｒを共通鍵ＣＫ（２）を使って暗号化し（Ｃｈｒ（ＣＫ（２）））、ＩＣｓ８に返信する。これ以降の動作は、図１３を引用して説明した実施形態６と同様であるので、説明を省略する。
【０１４６】
本実施形態７においても、前述の実施形態６と同様に、複数の暗号鍵のうちの１つ（ＣＫ（２））を認証に用いることができ、当該半導体集積回路（ＩＣａ）のセキュリティをさらに向上し、ＲＯＭコンテンツ保護システム１０全体のセキュリティも向上することができる。
【０１４７】
図１４には、ＲＯＭ４をそれぞれ内蔵する、半導体集積回路（ＩＣａとＩＣｚ）１＿ａと１＿ｚを示したが、ＲＯＭ４は必ずしも内蔵される必要はなく、例えば図４、図７などと同様に外付けされてもよい。その場合は、暗号化された値Ｄ（ＣＫ（１，ａ））とＤ（ＣＫ１，ｚ）は、例えば、電源投入時にブートアップシーケンスなどにより、ＩＣａ（１＿ａ）とＩＣｚ（１＿ｚ）にそれぞれ転送される。ＲＯＭ４はＩＣａ（１＿ａ）とＩＣｚ（１＿ｚ）にそれぞれ外付けされても良いし、両方のコンテンツを含む１個のＲＯＭ４を外付けして、ＩＣａ（１＿ａ）とＩＣｚ（１＿ｚ）にそれぞれのコンテンツが順次転送されるように構成されてもよい。１個のＲＯＭ４は管理ＩＣ（ＩＣｓ）に内蔵してもよい。
【０１４８】
〔実施形態８〕＜公開鍵認証＞
図１１に示したように、鍵データベース９は、保護対象のＩＣごとに複数の共通鍵を生成するための、複数の訂正パラメータを保持することができる。前述のように、複数の共通鍵は用途ごと使い分けることができる。本実施形態８は、１つのユニークコードＵＣ（ａ）から２個の暗号鍵ＣＫ（１）とＣＫ（２）を生成し、一方の共通鍵ＣＫ（１）をＲＯＭ４に格納される暗号化された値Ｄ（ＣＫ（１））を復号するために用い、他方の共通鍵ＣＫ（２）を認証に用いる例である。認証に用いる共通鍵ＣＫ（２）は、秘密鍵（ＳＫ：  Secret Key）であって、管理ＩＣ（ＩＣｓ）８が対応する公開鍵（ＰＫ：  Public Key）を保持する。
【０１４９】
図１５は、実施形態８に係る半導体集積回路及びＲＯＭコンテンツ保護システムの構成を示すブロック図であり、図１６は、鍵データベース９の構成例を示す説明図である。
【０１５０】
図１５は、実施形態８に係る半導体集積回路（ＩＣａ）１＿ａ及びＩＣａを含んで構成されるＲＯＭコンテンツ保護システム１０の構成を示すブロック図である。１つのユニークコードＵＣ（ａ）から２個の暗号鍵である共通鍵ＣＫ（１）と秘密鍵ＳＫ（１）を生成し、共通鍵ＣＫ（１）をＲＯＭ４に格納される暗号化された値Ｄ（ＣＫ（１））を復号するために用い、秘密鍵ＳＫ（１）を認証に用いる例である。ＩＣａ（１＿ａ）は、管理ＩＣ（ＩＣｓ）８と、さらに別の保護対象ＩＣ（ＩＣｚ）１＿ｚと接続され、不揮発性メモリ（ＲＯＭ）４と、ユニークコード生成部２と、暗号処理部３と、インターフェース部１９とを含んで構成される。暗号処理部３には、共通鍵生成部５と復号部６＿１と６＿２と、暗号化部７＿１と７＿２とが含まれる。ＲＯＭ４には、共通鍵ＣＫ（１）を用いて暗号化されたプログラム及び／またはデータＤ（ＣＫ（１））が格納される。図１５では復号部６＿２と暗号化部７＿２は１つのブロックで示され、インターフェース部１９を介して別の保護対象ＩＣ（ＩＣｚ）１＿ｚと接続されている。管理ＩＣ（ＩＣｓ）８は鍵データベース９の他、さらに認証部１８を備える。管理ＩＣ（ＩＣｓ）８の認証部１８は、チャレンジデータＣｈｒの生成も実行可能に構成され、ＩＣａ（１＿ａ）の暗号化部７＿１と接続される。
【０１５１】
ＩＣａ（１＿ａ）及びＩＣａを含んで構成されるシステムの動作について説明する。ＩＣｓ８は、鍵データベース９に、共通鍵ＣＫ（１）に対応する訂正パラメータＣＤ（１，ａ）と、秘密鍵ＳＫ（１）に対応する訂正パラメータＣＤ（２，ａ）とを保持する。ＩＣｓ８は、秘密鍵ＳＫ（１）に対応する訂正パラメータＣＤ（２，ａ）と認証用のチャレンジデータＣｈｒを、ＩＣａ（１＿ａ）に送る。
【０１５２】
ＩＣａ（１＿ａ）は、共通鍵生成部５で、ユニークコード生成部２から生成されるユニークコードＵＣ（ａ）を参照して、受信した訂正パラメータＣＤ（２，ａ）を使って秘密鍵ＳＫ（１）を生成し、暗号化部７＿１に供給する。暗号化部７＿１は、ＩＣｓ８から受信したチャレンジデータＣｈｒを秘密鍵ＳＫ（１）を使って暗号化し（Ｃｈｒ（ＳＫ（１））、ＩＣｓ８に返信する。ＩＣｓ８は、暗号化されて返信されたチャレンジデータＣｈｒ（ＳＫ（１））を、認証部１８で公開鍵ＰＫ（１）を使って復号し、送信したチャレンジデータＣｈｒと比較する。一致した場合には、ＩＣａを真正な保護対象ＩＣとして認証する。認証部１８は、一致した場合には、鍵データベース９に対して照合結果ｍａｔｃｈを出力し、その結果に基づいて、鍵データベース９がＩＣａに対して、訂正パラメータＣＤ（１，ａ）を供給するように構成される。
【０１５３】
ＩＣａを真正な保護対象ＩＣであると認証した後、管理ＩＣ（ＩＣｓ）８は、ＩＣａに対して、訂正パラメータＣＤ（１，ａ）を供給する。ＩＣａ（１＿ａ）は、共通鍵生成部５で、ユニークコード生成部２から生成されるユニークコードＵＣ（ａ）を参照して、受信した訂正パラメータＣＤ（１，ａ）を使って共通鍵ＣＫ（１）を生成し、復号部６＿１に供給する。復号部６＿１は、実施形態１や実施形態４などと同様に、算出された共通鍵ＣＫ（１）を用いて、ＲＯＭ４から読み出された暗号化された値Ｄ（ＣＫ（１））を復号することができる。
【０１５４】
算出された共通鍵ＣＫ（１）は、さらに、復号部６＿２と暗号化部７＿２に供給されてもよい。同じ共通鍵ＣＫ（１）を持つ別の保護対象ＩＣであるＩＣｚ（１＿ｚ）との間で、インターフェース部１９を介して暗号通信を行うことができる。本実施形態では、ＩＣｚ（１＿ｚ）との間の暗号通信は、ＲＯＭ４の内容の保護と同じ暗号鍵（共通鍵ＣＫ（１））を用いて暗号化する例を示したが、別の暗号鍵（共通鍵ＣＫ（３）など）を用いてもよい。
【０１５５】
復号部６＿１と６＿２及び暗号化部７＿１と７＿２は、１個の暗号モジュールとして実装されてもよい。復号部６＿１と６＿２及び暗号化部７＿１と７＿２のための復号と暗号化の演算を時分割で順次実行することにより、並列に設ける場合よりも回路規模を小さく抑えることができる。
【０１５６】
これにより、複数の暗号鍵のうちの１つ（ＣＫ（２））を公開鍵認証システムにおける秘密鍵ＳＫ（１）として認証に用いることができ、当該半導体集積回路（ＩＣａ）のセキュリティをさらに向上し、ＲＯＭコンテンツ保護システム１０全体のセキュリティも向上することができる。
【０１５７】
図１５には、ＲＯＭ４をそれぞれ内蔵する、半導体集積回路（ＩＣａとＩＣｚ）１＿ａと１＿ｚを示したが、ＲＯＭ４は必ずしも内蔵される必要はなく、例えば図４、図７などと同様に外付けされてもよい。その場合は、暗号化された値Ｄ（ＣＫ（１，ａ））とＤ（ＣＫ１，ｚ）は、例えば、電源投入時にブートアップシーケンスなどにより、ＩＣａ（１＿ａ）とＩＣｚ（１＿ｚ）にそれぞれ転送される。ＲＯＭ４はＩＣａ（１＿ａ）とＩＣｚ（１＿ｚ）にそれぞれ外付けされても良いし、両方のコンテンツを含む１個のＲＯＭ４を外付けして、ＩＣａ（１＿ａ）とＩＣｚ（１＿ｚ）にそれぞれのコンテンツが順次転送されるように構成されてもよい。１個のＲＯＭ４は管理ＩＣ（ＩＣｓ）に内蔵してもよい。
【０１５８】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【０１５９】
１  保護対象ＩＣ
２  ユニークコード生成部
３  暗号処理部
４  不揮発性メモリ
５  共通鍵生成部
６  復号部
７  暗号化部
８  管理ＩＣ
９  鍵データベース
１０  ＲＯＭコンテンツ保護システム
１１  ネットワーク
１２  ネットワークインターフェース
１３  ＣＰＵ
１４  ＲＡＭ
１５  Ｉ／Ｏ
１６  暗号ＩＰ
１７  バス
１８  認証部
１９  インターフェース（Ｉ／Ｆ）部
２０  オフライン処理
２１  訂正パラメータ算出ステップ
２２  ＲＯＭコンテンツ（プログラム及び／又はデータ）
２３  暗号化ステップ
ＵＣ（ａ）、ＵＣ（ｂ）  ユニークコード
ＵＣ（ａ）＿ｉｎｉｔ  初期ユニークコード
ＣＫ（１）、ＣＫ（２）  暗号鍵（共通鍵）
ＳＫ（１）  秘密鍵
ＰＫ（１）  公開鍵
ＣＤ（１，ａ）、ＣＤ（１，ｂ）、ＣＤ（２，ａ）、ＣＤ（２，ｂ）  訂正パラメータ
Ｃｈｒ  チャレンジデータ
Ｃｈｒ（ＣＫ（２））  共通鍵ＣＫ（２）を用いて暗号化されたチャレンジデータ
Ｃｈｒ（ＳＫ（１））  秘密鍵ＳＫ（１）を用いて暗号化されたチャレンジデータ
Ｄ（ＣＫ（１））  共通鍵ＣＫ（１）を用いて暗号化されたＲＯＭコンテンツ（プログラム及び／又はデータ）
Ｅｘｐ  期待値
ｍａｔｃｈ  照合結果
【図１】
2015012409.tif 000003
【図２】
2015012409.tif 000004
【図３】
2015012409.tif 000005
【図４】
2015012409.tif 000006
【図５】
2015012409.tif 000007
【図６】
2015012409.tif 000008
【図７】
2015012409.tif 000009
【図８】
2015012409.tif 000010
【図９】
2015012409.tif 000011
【図１０】
2015012409.tif 000012
【図１１】
2015012409.tif 000013
【図１２】
2015012409.tif 000014
【図１３】
2015012409.tif 000015
【図１４】
2015012409.tif 000016
【図１５】
2015012409.tif 000017
【図１６】
2015012409.tif 000018