特許第6182371号(P6182371)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ルネサスエレクトロニクス株式会社の特許一覧

<>
  • 特許6182371-半導体集積回路を含むシステム 図000002
  • 特許6182371-半導体集積回路を含むシステム 図000003
  • 特許6182371-半導体集積回路を含むシステム 図000004
  • 特許6182371-半導体集積回路を含むシステム 図000005
  • 特許6182371-半導体集積回路を含むシステム 図000006
  • 特許6182371-半導体集積回路を含むシステム 図000007
  • 特許6182371-半導体集積回路を含むシステム 図000008
  • 特許6182371-半導体集積回路を含むシステム 図000009
  • 特許6182371-半導体集積回路を含むシステム 図000010
  • 特許6182371-半導体集積回路を含むシステム 図000011
  • 特許6182371-半導体集積回路を含むシステム 図000012
  • 特許6182371-半導体集積回路を含むシステム 図000013
  • 特許6182371-半導体集積回路を含むシステム 図000014
  • 特許6182371-半導体集積回路を含むシステム 図000015
  • 特許6182371-半導体集積回路を含むシステム 図000016
  • 特許6182371-半導体集積回路を含むシステム 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6182371
(24)【登録日】2017年7月28日
(45)【発行日】2017年8月16日
(54)【発明の名称】半導体集積回路を含むシステム
(51)【国際特許分類】
   H04L 9/10 20060101AFI20170807BHJP
   G06F 21/62 20130101ALI20170807BHJP
   H04L 9/08 20060101ALI20170807BHJP
   G06F 21/72 20130101ALI20170807BHJP
   G09C 1/00 20060101ALI20170807BHJP
【FI】
   H04L9/00 621Z
   G06F21/62 327
   H04L9/00 601A
   G06F21/72
   G09C1/00 650Z
【請求項の数】11
【全頁数】30
(21)【出願番号】特願2013-135754(P2013-135754)
(22)【出願日】2013年6月28日
(65)【公開番号】特開2015-12409(P2015-12409A)
(43)【公開日】2015年1月19日
【審査請求日】2016年2月16日
(73)【特許権者】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(74)【代理人】
【識別番号】100089071
【弁理士】
【氏名又は名称】玉村 静世
(72)【発明者】
【氏名】押田 大介
【審査官】 青木 重徳
(56)【参考文献】
【文献】 特開2013−101442(JP,A)
【文献】 米国特許第08386990(US,B1)
【文献】 特開2003−198528(JP,A)
【文献】 特開2013−126221(JP,A)
【文献】 特開2013−005314(JP,A)
【文献】 特開2013−003431(JP,A)
【文献】 特開2012−174195(JP,A)
【文献】 特表2012−519987(JP,A)
【文献】 国際公開第2008/056612(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/10
G06F 21/62
G06F 21/72
G09C 1/00
H04L 9/08
(57)【特許請求の範囲】
【請求項1】
ユニークコード生成部と暗号処理部とを含んで構成される、半導体集積回路と、所定の暗号鍵を用いて暗号化された値を格納可能な不揮発性メモリとを含んで構成されるシステムであって、
前記ユニークコード生成部は、前記半導体集積回路の製造ばらつきによって固有に定まる複数ビットのディジタル値である、ユニークコードを生成可能であり、
前記暗号処理部は、訂正パラメータと前記ユニークコードとに基づいて前記暗号鍵を算出し、算出した前記暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値を復号可能に構成され、
前記訂正パラメータは、前記半導体集積回路の製造後に前記ユニークコード生成部から生成される初期ユニークコードと前記所定の暗号鍵に基づいて、前記システムの外部で予め算出され、
前記システムは、前記半導体集積回路と対応付けて前記訂正パラメータを保持し前記訂正パラメータを前記半導体集積回路に供給するデータベースと、認証部とを備える、管理集積回路を備え、
前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第1暗号鍵とし、前記第1暗号鍵に対応する訂正パラメータを第1訂正パラメータとし
記管理集積回路は、前記データベースに、前記半導体集積回路と対応付けられる前記第1訂正パラメータと第2訂正パラメータを保持し、前記認証部にチャレンジデータと第2訂正パラメータに対応する第2暗号鍵で前記チャレンジデータを暗号化したチャレンジデータ期待値とを保持し、前記第2訂正パラメータと前記チャレンジデータを前記半導体集積回路に供給し、
前記半導体集積回路において、前記暗号処理部は、供給された前記第2訂正パラメータと前記ユニークコードとに基づいて、前記第2暗号鍵を生成し、供給された前記チャレンジデータを前記第2暗号鍵を用いて暗号化し、前記管理集積回路に返信し、
前記管理集積回路は、前記暗号化されて返信された前記チャレンジデータを、前記認証部に保持される前記チャレンジデータ期待値と比較し、一致した場合に、前記第1訂正パラメータを前記半導体集積回路に供給し、
前記半導体集積回路は、供給された前記第1訂正パラメータと前記ユニークコードとに基づいて、前記第1暗号鍵を算出し、算出した前記第1暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値を復号する、システム。
【請求項2】
ユニークコード生成部と暗号処理部とを含んで構成される、半導体集積回路と、所定の暗号鍵を用いて暗号化された値を格納可能な不揮発性メモリとを含んで構成されるシステムであって、
前記ユニークコード生成部は、前記半導体集積回路の製造ばらつきによって固有に定まる複数ビットのディジタル値である、ユニークコードを生成可能であり、
前記暗号処理部は、訂正パラメータと前記ユニークコードとに基づいて前記暗号鍵を算出し、算出した前記暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値を復号可能に構成され、
前記訂正パラメータは、前記半導体集積回路の製造後に前記ユニークコード生成部から生成される初期ユニークコードと前記所定の暗号鍵に基づいて、前記システムの外部で予め算出され、
前記システムは、前記半導体集積回路と対応付けて前記訂正パラメータを保持し前記訂正パラメータを前記半導体集積回路に供給するデータベースと、認証部とを備える、管理集積回路を備え、
前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第1暗号鍵とし、前記第1暗号鍵に対応する訂正パラメータを第1訂正パラメータとし
記管理集積回路は、前記データベースに、前記半導体集積回路と対応付けられる前記第1訂正パラメータと第2訂正パラメータを保持し、前記認証部にチャレンジデータと前記第2訂正パラメータに対応する第2暗号鍵で前記チャレンジデータを暗号化したチャレンジデータ期待値とを保持し、前記チャレンジデータを前記半導体集積回路に供給し、
前記半導体集積回路は、前記第2訂正パラメータを保持し、前記暗号処理部は前記第2訂正パラメータと前記ユニークコードとに基づいて前記第2暗号鍵を生成し、供給された前記チャレンジデータを前記第2暗号鍵を用いて暗号化し、前記管理集積回路に返信し、
前記管理集積回路は、前記暗号化されて返信された前記チャレンジデータを、前記認証部に保持される前記チャレンジデータ期待値と比較し、一致した場合に、前記第1訂正パラメータを前記半導体集積回路に供給し、
前記半導体集積回路は、供給された前記第1訂正パラメータと前記ユニークコードとに基づいて、前記第1暗号鍵を算出し、算出した前記第1暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値を復号する、システム。
【請求項3】
ユニークコード生成部と暗号処理部とを含んで構成される、半導体集積回路と、所定の暗号鍵を用いて暗号化された値を格納可能な不揮発性メモリとを含んで構成されるシステムであって、
前記ユニークコード生成部は、前記半導体集積回路の製造ばらつきによって固有に定まる複数ビットのディジタル値である、ユニークコードを生成可能であり、
前記暗号処理部は、訂正パラメータと前記ユニークコードとに基づいて前記暗号鍵を算出し、算出した前記暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値を復号可能に構成され、
前記訂正パラメータは、前記半導体集積回路の製造後に前記ユニークコード生成部から生成される初期ユニークコードと前記所定の暗号鍵に基づいて、前記システムの外部で予め算出され、
前記システムは、前記半導体集積回路と対応付けて前記訂正パラメータを保持し前記訂正パラメータを前記半導体集積回路に供給するデータベースと、認証部とを備える、管理集積回路を備え、
前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第1暗号鍵とし、前記第1暗号鍵に対応する訂正パラメータを第1訂正パラメータとし
記管理集積回路は、前記データベースに、前記半導体集積回路と対応付けられる前記第1訂正パラメータと第2訂正パラメータとチャレンジデータと公開鍵とを保持し、前記第2訂正パラメータと前記チャレンジデータとを前記半導体集積回路に供給し、
前記半導体集積回路は、前記暗号処理部は前記第2訂正パラメータと前記ユニークコードとに基づいて第2暗号鍵を生成し、供給された前記チャレンジデータを前記第2暗号鍵を用いて暗号化し、前記管理集積回路に返信し、
前記管理集積回路は、前記暗号化されて返信された前記チャレンジデータを、前記公開鍵を使って復号し、復号された値と前記チャレンジデータとを比較し、一致した場合に、前記第1訂正パラメータを前記半導体集積回路に供給し、
前記半導体集積回路は、供給された前記第1訂正パラメータと前記ユニークコードとに基づいて、前記第1暗号鍵を算出し、算出した前記第1暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値を復号する、システム。
【請求項4】
請求項1乃至3のいずれか1項において、前記ユニークコード生成部から生成される前記ユニークコードが、前記初期ユニークコードに対してエラーを含んでいても、前記暗号処理部は、前記訂正パラメータと前記ユニークコードとに基づいて前記暗号鍵を算出可能に構成される、システム。
【請求項5】
請求項1乃至3のいずれか1項において、複数の前記半導体集積回路を含んで構成され、
前記複数の半導体集積回路のそれぞれは、前記不揮発性メモリと、前記ユニークコード生成部と、前記暗号処理部とを含んで構成され、
前記不揮発性メモリには、前記複数の半導体集積回路のそれぞれに対応する暗号鍵を用いて暗号化された値が格納され、
前記データベースは、前記複数の半導体集積回路のそれぞれと対応付けて、複数の前記訂正パラメータを保持し、前記訂正パラメータを対応する前記半導体集積回路に供給し、
前記訂正パラメータは、対応する前記半導体集積回路の製造後に前記ユニークコード生成部から生成される初期ユニークコードと、前記対応する前記半導体集積回路の前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵に基づいて、前記システムの外部で予め算出され、前記データベースに格納される、システム。
【請求項6】
請求項1乃至3のいずれか1項において、前記半導体集積回路はさらに揮発性メモリを備え、前記所定の暗号鍵を用いて暗号化された前記値は、前記不揮発性メモリから前記揮発性メモリに転送可能に構成され、
前記暗号処理部は、前記揮発性メモリから読み出された暗号化された前記値を復号可能に構成される、システム。
【請求項7】
請求項1乃至3のいずれか1項において、前記半導体集積回路と前記データベースとは、ネットワークを介して接続され、前記訂正パラメータは前記ネットワークを介して前記半導体集積回路に受信可能に構成される、システム。
【請求項8】
請求項において、前記第2暗号鍵は、前記公開鍵に対応する、前記半導体集積回路の秘密鍵である、システム。
【請求項9】
請求項1乃至3のいずれか1項において、前記半導体集積回路はCPUをさらに備え、
前記不揮発性メモリは、前記CPUで実行可能なプログラムのプログラムコードが前記所定の暗号鍵を用いて暗号化された値を格納可能に構成され、前記CPUは、前記暗号処理部によって復号されたプログラムを実行可能に構成される、システム
【請求項10】
請求項において、前記不揮発性メモリは、前記CPUからアクセス可能なデータが前記所定の暗号鍵を用いて暗号化された値を格納可能に構成され、前記CPUは、前記暗号処理部によって復号された前記データを読み出し可能に構成される、システム
【請求項11】
請求項において、前記暗号処理部は、前記CPUから出力されるデータを、前記算出された暗号鍵を使って暗号化する機能をさらに備え、前記CPUは前記不揮発性メモリに書き込むデータを、前記暗号処理部によって暗号化した後に、前記不揮発性メモリに書き込み可能に構成される、システム
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、CPU(Central Processing Unit)を内蔵し、不揮発性メモリが外付けされまたは内蔵される半導体集積回路及びそれを用いたシステムに関し、特に不揮発性メモリに格納されるプログラムやデータなどのコンテンツを暗号化して保護する半導体集積回路及びそれを用いたシステムに好適に利用できるものである。
【背景技術】
【0002】
フラッシュメモリ(登録商標)などの不揮発性メモリとCPUを単一チップに搭載する、マイコンやシステムLSI(Large Scale Integrated circuit)などの半導体集積回路(IC: Integrated Circuit)では、不揮発性メモリにプログラムやデータが記憶されており、CPUによってそのプログラムが実行され、そのデータが利用される。プログラムやデータが記憶される不揮発性メモリが外付けされる場合も同様である。そのような半導体デバイスへの攻撃として、メモリの読出しがある。通信を行うプロトコルは暗号化する事により秘匿されるが、半導体デバイスの不揮発性メモリに格納されるプログラムやデータは、通信する情報を暗号化する事では、メモリをダイレクトに読み出すこの攻撃方法からは防ぐ事ができない。
【0003】
暗号化する事により通信を行うプロトコルを秘匿する技術は、例えば、特許文献1と特許文献2に開示されており、マイクロコントローラに内蔵されるメモリ上のプログラムを暗号化によって保護する技術は、例えば特許文献3に開示されている。
【0004】
特許文献1には、本体と付属品の間で認証を行うシステムにおいて、認証側の被認証側のそれぞれにマイクロコントローラを備え、双方で同じ乱数に対して同じ暗号鍵を使って暗号化を行い、照合することにより、真正の付属品であるか否かの認証を行うシステムが開示されている。乱数を暗号化するための上記暗号鍵を、別の暗号鍵と識別情報に基づいて暗号化するように構成することにより、プログラムを不正に取得して作られた模造品では、動作が正常に行われないようにすることができ、単純なプログラムメモリのコピーによる模造品を排除することができる。
【0005】
特許文献2には、外部装置に接続される半導体装置において、データ書き込み時のセキュリティが十分に確保される半導体装置が開示されている。半導体装置は、そのデバイスに固有な値(ユニークコード)を生成することができるユニークコード生成部を備え、そのユニークコードを外部装置に伝送する。ユニークコードは、例えば製造ばらつきによってそのデバイスのその個体に固有の値であり、設計情報を完全に複製したとしても、個体ごとに異なる値である。例えば物理的に複製不可能な関数(PUF: Physically Unclonable Function)を使って生成することができる。外部装置は、半導体装置がデータ書き込み時に使うための暗号鍵を、受信したユニークコードを使って別の暗号化処理を施した上で、半導体装置に対して伝送する。半導体装置は、受信した暗号化された暗号鍵を、自己のユニークコードを使って復号することによって、暗号鍵を得る。この暗号鍵を使って、秘匿すべきデータを暗号化して、データ書き込みを行う。データ書き込みのための暗号鍵が、複製不能なユニークデータによって暗号化されるので、外部装置と半導体装置との間でセキュリティの高い通信が可能となる。
【0006】
特許文献3には、暗号化されたプログラムを格納するメモリと、プログラムを復号する復号ブロックと、復号されたプログラムを実行するCPUから成るマイクロコントローラが開示されている。暗号化されたプログラムを復号するための復号情報は、前記復号ブロック内のレジスタに、CPUから物理的に読み出し不可能に保持される。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2007−184735号公報
【特許文献2】特開2013−003431号公報
【特許文献3】特開2008−217579号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1、2及び3について本発明者が検討した結果、以下のような新たな課題があることがわかった。
【0009】
オンチップまたは別チップでCPUに接続される不揮発性メモリに、秘匿されるべきプログラムやデータが格納されている場合、特許文献1に示される技術ではプログラムの実行に先立って認証を行うことによって、秘匿されるべきプログラムのコピーを防ぐので、認証する側がセキュアであることが前提である。特許文献2に示される技術では、半導体装置内で秘匿されるべきプログラムは暗号化されており、これを復号するための暗号鍵が外部装置から与えられるので、その半導体装置自身で暗号鍵を保持する必要はないが、その反面、その外部装置がセキュアであることが必須である。
【0010】
一方、特許文献3に示される技術は、セキュアな通信相手を期待することができない、スタンドアローンのマイクロコントローラに適用することができる。しかし、そのためには、暗号化されたプログラムを復号するための暗号鍵などの復号情報を、CPUからさえも読み出すことができないように、ハードウェアを工夫する必要がある。ところが、そのような設計的な工夫でさえも、その設計情報をそっくりそのままコピーするような模倣品においては、秘匿されるべきプログラムやデータを十分安全に秘匿することができるとは言えない。
【0011】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0012】
一実施の形態によれば、下記の通りである。
【0013】
すなわち、所定の暗号鍵を用いて暗号化された値(プログラム及び/またはデータ)が格納される不揮発性メモリと、ユニークコード生成部と、暗号復号部とを含んで構成される、半導体集積回路またはシステムであって、以下のように構成される。ユニークコード生成部は、製造ばらつきによって固有に定まるユニークコードを生成する。暗号復号部は、生成されたユニークコードと訂正パラメータとに基づいて暗号鍵を算出し、算出した暗号鍵を用いて、不揮発性メモリから読み出された暗号化された値を復号する。訂正パラメータは、この半導体集積回路の製造後にユニークコード生成部から生成された初期ユニークコードと、不揮発性メモリに格納する値の暗号化に使われる、前記所定の暗号鍵とに基づいて、この半導体集積回路またはシステムの外部で予め算出される。
【発明の効果】
【0014】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【0015】
すなわち、当該半導体集積回路またはシステムのセキュリティを向上することができる。半導体集積回路に搭載され、またはシステムに含まれる不揮発性メモリに暗号化されて格納された値(プログラムコードやデータなど)は、メモリに格納されているデータを読み出す攻撃によって読み出されても、暗号鍵を知られることがないので暗号を復号することができず秘匿性が保たれる。また、半導体集積回路及びシステムの設計がそっくりコピーされた模倣品では、ユニークコード生成部から生成されるユニークコードが真正品と異なるので、暗号鍵が正しく算出されないので暗号を復号することができず、不揮発性メモリに暗号化されて格納された値の秘匿性が保たれる。
【図面の簡単な説明】
【0016】
図1図1は、実施形態1に係るROMコンテンツ保護システムの構成を示すブロック図である。
図2図2は、ROMを内蔵する半導体集積回路(ICa)を含んで構成された、実施形態1に係るROMコンテンツ保護システムを示すブロック図である。
図3図3は、実施の形態に係る半導体集積回路の構成例(ROM内蔵マイクロコントローラ)を示すブロック図である。
図4図4は、ROMが外付けされた半導体集積回路(ICa)を含んで構成された、実施形態1に係るROMコンテンツ保護システムを示すブロック図である。
図5図5は、実施の形態に係る半導体集積回路の構成例(RAM版マイクロコントローラ)を示すブロック図である。
図6図6は、実施形態2に係る半導体集積回路の構成を示すブロック図(ROM内蔵版)である。
図7図7は、実施形態2に係る半導体集積回路の構成を示すブロック図(RAM版)である。
図8図8は、実施形態3に係る半導体集積回路(ROM内蔵版)及びシステムの構成を示すブロック図である。
図9図9は、実施形態3に係る半導体集積回路(RAM版)及びシステムの構成を示すブロック図である。
図10図10は、実施形態4に係る半導体集積回路及びROMコンテンツ保護システムの構成を示すブロック図である。
図11図11は、実施形態4に係る鍵データベースの構成例を示す説明図である。
図12図12は、実施形態5に係る半導体集積回路及びROMコンテンツ保護システムの構成を示すブロック図である。
図13図13は、実施形態6に係る半導体集積回路及びROMコンテンツ保護システムの構成を示すブロック図である。
図14図14は、実施形態7に係る半導体集積回路及びROMコンテンツ保護システムの構成を示すブロック図である。
図15図15は、実施形態8に係る半導体集積回路及びROMコンテンツ保護システムの構成を示すブロック図である。
図16図16は、実施形態8に係る鍵データベースの構成例を示す説明図である。
【発明を実施するための形態】
【0017】
1.実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0018】
〔1〕<ユニークコードと訂正パラメータから復元された暗号鍵による復号>
本願において開示される代表的な実施の形態に係る半導体集積回路(ICa,1)は、所定の暗号鍵(CK(1))を用いて暗号化された値(D(CK(1)))を格納可能な不揮発性メモリ(ROM: Read Only Memory,4)と、ユニークコード生成部(2)と、暗号処理部(3)とを含み、以下のように構成される。
【0019】
前記ユニークコード生成部は、前記半導体集積回路の製造ばらつきによって固有に定まる複数ビットのディジタル値である、ユニークコード(UC(a))を生成可能である。
【0020】
前記暗号処理部は、訂正パラメータ(CD(1,a))と前記ユニークコードとに基づいて前記暗号鍵(CK(1))を算出し、算出した前記暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値(D(CK(1)))を復号可能に構成される。
【0021】
前記訂正パラメータは、前記半導体集積回路の製造後に前記ユニークコード生成部から生成される初期ユニークコード(UC(a)_init)と前記所定の暗号鍵(CK(1))に基づいて、前記半導体集積回路の外部(20)で予め算出される。
【0022】
これにより、当該半導体集積回路(ICa,1)のセキュリティを向上することができる。半導体集積回路に搭載される不揮発性メモリ(ROM,4)に暗号化されて格納された値(プログラムコードやデータなど)(D(CK(1)))は、メモリに格納されているデータを読み出す攻撃によって読み出されても、暗号鍵(CK(1))を知られることがないので暗号を復号することができず秘匿性が保たれる。また、半導体集積回路(ICa,1)の設計がそっくりコピーされた模倣品では、コピーされたユニークコード生成部(2_x)から生成されるユニークコード(UC(x))が真正品のユニークコード(UC(a))と異なるので、暗号鍵が正しく算出されない。そのため、不揮発性メモリ(ROM,4)に暗号化されて格納された値(プログラムコードやデータなど)(D(CK(1)))の暗号を復号することができず、秘匿性が保たれる。さらに、例え訂正パラメータ(CD(1,a))が、外部(20)から当該半導体集積回路(ICa,1)への通信経路で読み出されるなどして、攻撃者に知られたとしても、同様に不揮発性メモリ(ROM,4)に暗号化されて格納された値(プログラムコードやデータなどのROMコンテンツ)(D(CK(1)))の秘匿性は保たれる。真正品のユニークコード(UC(a))が生成されない限り、暗号鍵(CK(1))が正しく算出されないからである。
【0023】
〔2〕<エラーを含むユニークコード>
項1において、前記ユニークコード生成部から生成される前記ユニークコード(UC(a))が、前記初期ユニークコード(UC(a)_init)に対してエラーを含んでいても、前記暗号処理部は、前記訂正パラメータ(CD(1,a))と前記ユニークコード(UC(a))とに基づいて前記暗号鍵(CK(1))を算出可能に構成される。
【0024】
これにより、ユニークコード生成部から生成されるユニークコード(UC(a))に、初期ユニークコード(UC(a)_init)に対するエラーが含まれている場合であっても、暗号処理部(3)はそのエラーを訂正して正しい暗号鍵(CK(1))を算出することができ、半導体集積回路(ICa,1)は正常な機能を保つことができる。
【0025】
〔3〕<訂正パラメータを同一チップ内に保持>
項1または項2において、前記訂正パラメータ(CD(1,a))を同一チップ内に保持する。
【0026】
これにより、前記訂正パラメータを伝送するためのデータ通信を不要とすることができる。
【0027】
〔4〕<訂正パラメータをネットワーク経由で取得>
項1または項2において、前記半導体集積回路はネットワークインターフェース(12)をさらに備え、前記訂正パラメータ(CD(1,a))は前記ネットワークインターフェースを介して受信可能に構成される。
【0028】
これにより、ネットワーク(11)を経由しても、セキュリティを担保した状態で、暗号鍵に相当する情報(CD(1,a))を配信することができる。
【0029】
〔5〕<1つのユニークコードから複数の暗号鍵を生成>
項1または項2において、前記訂正パラメータを第1訂正パラメータ(CD(1,a))とし、前記暗号鍵を第1暗号鍵(CK(1))とし、前記暗号処理部は、前記第1訂正パラメータとは異なる第2訂正パラメータ(CD(2,a))と前記ユニークコードとに基づいて、前記第1暗号鍵とは異なる第2暗号鍵(CK(2))を算出可能に構成される。
【0030】
これにより、複数の暗号鍵を用途によって使い分けることができ、当該半導体集積回路のセキュリティをさらに向上することができる。
【0031】
〔6〕<CPU(Central Processing Unit)>
項1から項5のうちのいずれか1項において、前記半導体集積回路はCPU(13)をさらに備え、前記不揮発性メモリ(4)は、前記CPUで実行可能なプログラムのプログラムコードが前記所定の暗号鍵を用いて暗号化された値を格納可能に構成され、前記CPUは、前記暗号処理部によって復号されたプログラムを実行可能に構成される。
【0032】
これにより、不揮発性メモリに格納される、プログラムが秘匿される。
【0033】
〔7〕<CPUからの暗号化されたデータの読み出し>
項6において、前記不揮発性メモリ(4)は、前記CPU(13)からアクセス可能なデータが前記所定の暗号鍵を用いて暗号化された値を格納可能に構成され、前記CPUは、前記暗号処理部によって復号された前記データを読み出し可能に構成される。
【0034】
これにより、不揮発性メモリに格納され秘匿されているデータを、CPUが利用することができる。
【0035】
〔8〕<CPUから不揮発性メモリへのデータの書き込み>
項6において、前記暗号処理部は、前記CPUから出力されるデータを、前記算出された暗号鍵を使って暗号化する機能をさらに備え、前記CPUは前記不揮発性メモリに書き込むデータを、前記暗号処理部によって暗号化した後に、前記不揮発性メモリに書き込み可能に構成される。
【0036】
これにより、当該半導体集積回路の使用中に、前記不揮発性メモリに追記または変更すべきデータがある場合にも、そのデータを秘匿することができる。
【0037】
〔9〕<ROMコンテンツ保護システム>
本願において開示される代表的な実施の形態に係るシステム(ROMコンテンツ保護システム10)は、ユニークコード生成部(2)と暗号処理部(3)とを含む半導体集積回路(ICa,1)と、所定の暗号鍵(CK(1))を用いて暗号化された値(D(CK(1)))を格納可能な不揮発性メモリ(ROM,4)とを含み、以下のように構成される。
【0038】
前記ユニークコード生成部は、前記半導体集積回路の製造ばらつきによって固有に定まる複数ビットのディジタル値である、ユニークコード(UC(a))を生成可能である。
【0039】
前記暗号処理部は、訂正パラメータ(CD(1,a))と前記ユニークコードとに基づいて前記暗号鍵(CK(1))を算出し、算出した前記暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値(D(CK(1)))を復号可能に構成される。
【0040】
前記訂正パラメータは、前記半導体集積回路の製造後に前記ユニークコード生成部から生成される初期ユニークコード(UC(a)_init)と前記所定の暗号鍵(CK(1))に基づいて、前記システムの外部(20)で予め算出される。
【0041】
これにより、当該半導体集積回路(ICa,1)を含んで構成されるシステム(ROMコンテンツ保護システム10)のセキュリティを向上することができる。半導体集積回路(ICa,1)に内蔵されるか、又は外付けされる不揮発性メモリ(4)に暗号化されて格納された値(プログラムコードやデータなどのROMコンテンツ)(D(CK(1)))は、メモリに格納されているデータを読み出す攻撃によって読み出されても、暗号鍵(CK(1))を知られることがないので暗号を復号することができず、秘匿性が保たれる。また、半導体集積回路(ICa,1)の設計がそっくりコピーされた模倣品では、ユニークコード生成部(2_x)から生成されるユニークコード(UC(x))が真正品と異なるので、暗号鍵(CK(1))が正しく算出されないので暗号を復号することができず、不揮発性メモリ(4)に暗号化されて格納された値の秘匿性が保たれる。
【0042】
〔10〕<エラーを含むユニークコード>
項9において、前記ユニークコード生成部から生成される前記ユニークコード(UC(a))が、前記初期ユニークコード(UC(a)_init)に対してエラーを含んでいても、前記暗号処理部は、前記訂正パラメータ(CD(1,a))と前記ユニークコードとに基づいて前記暗号鍵を算出可能に構成される。
【0043】
これにより、ユニークコード生成部(2)から生成されるユニークコード(UC(a))にエラーが含まれている場合であっても、暗号処理部はそれを訂正して正しい暗号鍵(CK(1))を算出することができ、ROMコンテンツ保護システム(10)において、半導体集積回路(ICa,1)は正常な機能を保つことができる。さらに、半導体集積回路(ICa,1)を含む、ROMコンテンツ保護システム(10)全体のセキュリティも向上することができる。
【0044】
〔11〕<鍵データベース>
項9または項10において、前記半導体集積回路と対応付けて前記訂正パラメータ(CD(1,a))を保持し、前記訂正パラメータを前記半導体集積回路に供給するデータベース(9)をさらに備える。
【0045】
これにより、暗号化された値(D(CK(1)))を格納する不揮発性メモリ(4)と、その暗号鍵を生成するための訂正パラメータ(CD(1,a))が別チップで管理され、セキュリティを向上することができる。
【0046】
〔12〕<複数の半導体集積回路と鍵データベース>
項9または項10において、前記システムは、複数の前記半導体集積回路とデータベース(9)を含んで構成される。
【0047】
前記複数の半導体集積回路(1_a、1_b)のそれぞれは、前記不揮発性メモリ(4_a、4_b)と、前記ユニークコード生成部と、前記暗号処理部とを含んで構成される。
【0048】
前記不揮発性メモリには、前記複数の半導体集積回路のそれぞれに対応する暗号鍵(CK(1,a),CK(1,b))を用いて暗号化された値(D(CK(1、a)),D(CK(1、b)))が格納される。
【0049】
前記データベースは、前記複数の半導体集積回路のそれぞれと対応付けて、複数の前記訂正パラメータを保持し、前記訂正パラメータを対応する前記半導体集積回路に供給する。
【0050】
前記訂正パラメータ(CD(1,a))は、対応する前記半導体集積回路の製造後に前記ユニークコード生成部から生成される初期ユニークコード(UC(a)_init)と、前記対応する前記半導体集積回路の前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵に基づいて、前記システムの外部で予め算出され、前記データベース(9)に格納される。
【0051】
前記不揮発性メモリ(4_a、4_b)は、前記複数の半導体集積回路(1_a、1_b)のそれぞれに内蔵される代わりに、外付けされてもよい。その場合、前記複数の半導体集積回路(1_a、1_b)のそれぞれは揮発性メモリ(14)を備え、前記不揮発性メモリ(4_a、4_b)に格納された、暗号化された値(D(CK(1、a)),D(CK(1、b)))が前記不揮発性メモリ(4_a、4_b)から転送されることができるように構成される。
【0052】
これにより、セキュリティが向上された半導体集積回路を複数(1_a、1_b)搭載したROMコンテンツ保護システム(10)を構築することができる。当該システムは、同じ半導体集積回路を複数個搭載して構成しても、異なる種類の半導体集積回路を含んで構成しても良く、さらに複数個の同じ半導体集積回路と異なる種類の半導体集積回路を含んで構成しても良い。
【0053】
〔13〕<外付けROM+RAM版LSI>
項9または項10において、前記半導体集積回路はさらに揮発性メモリ(RAM,14)を備え、前記所定の暗号鍵を用いて暗号化された前記値(D(CK(1)))は、前記不揮発性メモリから前記揮発性メモリに転送可能に構成される。また、前記暗号処理部は、前記揮発性メモリから読み出された暗号化された前記値を復号可能に構成される。
【0054】
これにより、当該半導体集積回路(ICa,1)が不揮発性メモリを内蔵していない所謂RAM版であっても、不揮発性メモリ(4)から当該半導体集積回路(ICa,1)に内蔵された揮発性メモリ(RAM,14)に転送された、暗号化されて格納された値(ROMコンテンツ)の秘匿性が保たれる。
【0055】
〔14〕<外付けROM+RAM版LSIのデータベース>
項13において、前記半導体集積回路と対応付けて前記訂正パラメータ(CD(1,a))を保持し、前記訂正パラメータを前記半導体集積回路に供給するデータベース(9)と前記不揮発性メモリ(4)を含んで構成される制御半導体集積回路(ICs,8)をさらに備える。
【0056】
これにより、当該半導体集積回路(ICa,1)が不揮発性メモリを内蔵していない所謂RAM版の場合に、ROMコンテンツ保護システム(10)を構成する部品数の増加を抑えることができる。
【0057】
〔15〕<訂正パラメータをネットワーク経由で取得>
項11または項12において、前記半導体集積回路と前記データベースとは、ネットワーク(11)を介して接続され、前記訂正パラメータ(CD(1,a))は前記ネットワークを介して前記半導体集積回路に受信可能に構成される。
【0058】
これにより、ネットワーク(11)を経由しても、セキュリティを担保した状態で、暗号鍵に相当する情報(CD(1,a))を配信することができる。
【0059】
〔16〕<1つのユニークコードから複数の暗号鍵を生成>
項11または項12において、前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第1暗号鍵(CK(1))とし、前記データベースは、前記半導体集積回路と対応付けて複数の前記訂正パラメータ(CD(1,a),CD(2,a))を保持し、前記複数の訂正パラメータを前記半導体集積回路に供給する。
【0060】
前記暗号処理部は、供給された前記複数の訂正パラメータと前記ユニークコードとに基づいて、前記第1暗号鍵(CK(1))と別の暗号鍵(CK(2))とを算出し、算出した前記第1暗号鍵(CK(1))を用いて、前記不揮発性メモリから読み出された暗号化された値を復号可能に構成される。
【0061】
これにより、複数の暗号鍵(CK(1),CK(2))を用途によって使い分けることができ、当該半導体集積回路のセキュリティをさらに向上し、ROMコンテンツ保護システム(10)全体のセキュリティも向上することができる。
【0062】
〔17〕<1つのユニークコードから認証用と復号用の暗号鍵を生成>
項11または項12において、前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第1暗号鍵(CK(1))とし、前記第1暗号鍵に対応する訂正パラメータを第1訂正パラメータ(CD(1,a))とし、前記システムは、前記データベースと認証部(18)とを備える、管理集積回路(8)を備える。
【0063】
前記管理集積回路は、前記データベースに、前記半導体集積回路と対応付けられる前記第1訂正パラメータと第2訂正パラメータ(CD(2,a))を保持する。前記管理集積回路は、さらに、前記認証部にチャレンジデータ(Chr)と第2訂正パラメータに対応する第2暗号鍵(CK(2))で前記チャレンジデータを暗号化したチャレンジデータ期待値(Exp)とを保持し、前記第2訂正パラメータと前記チャレンジデータを前記半導体集積回路に供給する。
【0064】
前記半導体集積回路において、前記暗号処理部は、供給された前記第2訂正パラメータと前記ユニークコードとに基づいて、前記第2暗号鍵(CK(2))を生成し、供給された前記チャレンジデータを前記第2暗号鍵を用いて暗号化し(Chr(CK(2)))、前記管理集積回路に返信する。
【0065】
前記管理集積回路は、前記暗号化されて返信された前記チャレンジデータ(Chr(CK(2)))を、前記認証部に保持される前記チャレンジデータ期待値(Exp)と比較し、一致した場合に、前記第1訂正パラメータ(CD(1,a))を前記半導体集積回路に供給する。
【0066】
前記半導体集積回路は、供給された前記第1訂正パラメータ(CD(1,a))と前記ユニークコード(UC(a))とに基づいて、前記第1暗号鍵(CK(1))を算出し、算出した前記第1暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値(D(CK(1)))を復号する。
【0067】
これにより、複数の暗号鍵のうちの1つ(CK(2))を認証に用いることができ、当該半導体集積回路のセキュリティをさらに向上し、ROMコンテンツ保護システム(10)全体のセキュリティも向上することができる。
【0068】
〔18〕<1つのユニークコードから認証用と復号用の暗号鍵を生成(訂正パラメータを同一チップ内に保持)>
項11または項12において、前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第1暗号鍵(CK(1))とし、前記第1暗号鍵に対応する訂正パラメータを第1訂正パラメータ(CD(1,a))とし、前記システムは、前記データベースと認証部(18)とを備える、管理集積回路(8)を備える。
【0069】
前記管理集積回路は、前記データベースに、前記半導体集積回路と対応付けられる前記第1訂正パラメータ(CD(1,a))と第2訂正パラメータ(CD(2,a))を保持する。前記管理集積回路は、さらに、前記認証部にチャレンジデータ(Chr)と前記第2訂正パラメータに対応する第2暗号鍵(CK(2))で前記チャレンジデータを暗号化したチャレンジデータ期待値(Exp)とを保持し、前記チャレンジデータを前記半導体集積回路に供給する。
【0070】
前記半導体集積回路は、前記第2訂正パラメータ(CD(2,a))を保持し、前記暗号処理部は前記第2訂正パラメータと前記ユニークコードとに基づいて前記第2暗号鍵(CK(2))を生成し、供給された前記チャレンジデータを前記第2暗号鍵を用いて暗号化し(Chr(CK(2)))、前記管理集積回路に返信する。
【0071】
前記管理集積回路は、前記暗号化されて返信された前記チャレンジデータ(Chr(CK(2)))を、前記認証部に保持される前記チャレンジデータ期待値(Exp)と比較し、一致した場合に、前記第1訂正パラメータ(CD(1,a))とを前記半導体集積回路に供給する。
【0072】
前記半導体集積回路は、供給された前記第1訂正パラメータ(CD(1,a))と前記ユニークコード(UC(a))とに基づいて、前記第1暗号鍵(CK(1))を算出し、算出した前記第1暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値(D(CK(1)))を復号する。
【0073】
これにより、複数の暗号鍵のうちの1つを認証に用いることができ、当該半導体集積回路のセキュリティをさらに向上し、ROMコンテンツ保護システム(10)全体のセキュリティも向上することができる。
【0074】
〔19〕<1つのユニークコードから認証用と復号用の暗号鍵を生成(公開鍵認証方式)>
項11または項12において、前記不揮発性メモリに格納する値の暗号化に使われた前記暗号鍵を第1暗号鍵(CK(1))とし、前記第1暗号鍵に対応する訂正パラメータを第1訂正パラメータ(CD(1,a))とし、前記システムは、前記データベースと認証部(18)とを備える、管理集積回路(8)を備える。
【0075】
前記管理集積回路は、前記データベースに、前記半導体集積回路と対応付けられる前記第1訂正パラメータと第2訂正パラメータ(CD(2,a))とチャレンジデータ(Chr)と公開鍵(PK(1))とを保持し、前記第2訂正パラメータと前記チャレンジデータとを前記半導体集積回路に供給する。
【0076】
前記半導体集積回路は、前記暗号処理部は前記第2訂正パラメータと前記ユニークコードとに基づいて前記第2暗号鍵(CK(2))を生成し、供給された前記チャレンジデータを前記第2暗号鍵を用いて暗号化して、前記管理集積回路に返信する。
【0077】
前記管理集積回路は、前記暗号化されて返信された前記チャレンジデータ(Chr(CK(2))を、前記公開鍵を使って復号し、復号された値と前記チャレンジデータとを比較し、一致した場合に、前記第1訂正パラメータを前記半導体集積回路に供給する。
【0078】
前記半導体集積回路は、供給された前記第1訂正パラメータと前記ユニークコードとに基づいて、前記第1暗号鍵を算出し、算出した前記第1暗号鍵を用いて、前記不揮発性メモリから読み出された暗号化された値を復号する。
【0079】
これにより、複数の暗号鍵のうちの1つ(CK(2))を認証に用いることができ、当該半導体集積回路のセキュリティをさらに向上し、ROMコンテンツ保護システム(10)全体のセキュリティも向上することができる。
【0080】
〔20〕<半導体集積回路(ICa,1)で秘密鍵を再生>
項19において、前記第2暗号鍵は、前記公開鍵に対応する、前記半導体集積回路の秘密鍵(SK(1))である。
【0081】
これにより、公開鍵認証システムに適用することができる。
【0082】
2.実施の形態の詳細
実施の形態について更に詳述する。
【0083】
〔実施形態1〕<訂正パラメータとユニークコードから暗号鍵を生成するIC>
本願において開示される代表的な実施の形態に係るROMコンテンツ保護システムについて説明する。本実施形態1の説明は、以下の他の実施形態にも共通して妥当する。
【0084】
図1は、実施形態1に係るROMコンテンツ保護システム10の構成を示すブロック図である。ROMコンテンツ保護システム10は、ユニークコード生成部2と、暗号処理部3とを含んで構成される半導体集積回路(ICa,1)と、不揮発性メモリ(ROM)4とを備える。ROM4は、フラッシュメモリ(登録商標)などの、電気的に書き換え可能な不揮発性メモリであっても、マスクROMなどのように書き換え不能なメモリであってよい。ROM4には、所定の暗号鍵CK(1)を用いて暗号化されたプログラム及び/またはデータが格納される。プログラムかデータかに関わらず、暗号化された値D(CK(1))と呼ぶ。暗号鍵CK(1)は例えば共通鍵であり、ROM4に格納されたときに秘匿されるべき内容22であるプログラム及び/またはデータは、オフライン処理20において、共通鍵CK(1)を用いた暗号化処理ステップ23を経て暗号化され、ROM4に書き込まれる。
【0085】
ユニークコード生成部2は、ICa1の製造ばらつきによって固有に定まる複数ビットのディジタル値である、ユニークコードUC(a)を生成可能である。特に制限されないが、ユニークコード生成部2は、物理的に複製不可能な関数(PUF)を使って、ユニークコードUC(a)を生成することができる。例えば、SRAM(Static Random Access Memory)において、電源投入時のメモリセルの状態は、設計パラメータや製造パラメータが全く同じであっても、製品の個体別に製造ばらつきによって固有に定まるディジタル値であり、ユニークコードUC(a)として利用することができる。これは、SRAM−PUFと呼ばれている。この他、論理ゲート回路の信号伝搬遅延を利用するもの、アナログ的な素子値を利用するものなどがある。ユニークコード生成部2には、どのような種類のPUFを利用しても良い。
【0086】
暗号処理部3は、例えば共通鍵生成部5と復号部6を含んで構成される。共通鍵生成部5と復号部6が個別のハードウェアブロックとして構成されている必要はなく、一連のソフトウェア処理における共通鍵生成ステップと復号ステップによって実現されても、ハードウェアとソフトウェアが協調動作して実行される処理として実現されてもよい。暗号処理部3は、ユニークコードUC(a)と後述の訂正パラメータCD(1,a)とに基づいて共通鍵CK(1)を算出し、算出した共通鍵CK(1)を用いて、ROM4から読み出された、暗号化された値D(CK(1))を復号することができる。
【0087】
訂正パラメータCD(1,a)は、外部のオフライン処理20の訂正パラメータ算出ステップ21において、ICa1の製造直後にユニークコード生成部2から生成される初期ユニークコードUC(a)_initと、共通鍵CK(1)とに基づいて、予め算出される。共通鍵CK(1)は、ROM4に格納されたときに秘匿されるべき内容22を暗号化するため暗号化ステップ23で用いた共通鍵CK(1)と同じ値である。訂正パラメータ算出ステップ21のアルゴリズムと共通鍵生成部5のアルゴリズムは、訂正パラメータCD(1,a)とユニークコードUC(a)を参照して、共通鍵CK(1)を一意に決定することができるアルゴリズムであればよい。ここでオフライン処理20とは、ICaとの接続を前提としないセキュアな装置で実行される処理であり、暗号鍵CK(1)や暗号化ステップ23、及び、訂正パラメータ算出ステップ21の内容とその入出力データ、中間データなどは安全に秘匿される。
【0088】
ROM4は、半導体集積回路(ICa)1に内蔵されていても、外付けされてもよい。
【0089】
図2は、ROM4を内蔵する半導体集積回路(ICa)1を含んで構成された、実施形態1に係るROMコンテンツ保護システム10を示すブロック図である。ROM4が内蔵される場合には、ROM4から読み出された値(プログラムコードやデータなどのROMコンテンツ)D(CK(1))は、直接または例えばバスブリッジなどの転送回路を経て、復号部6に供給され復号される。図2における他の構成は、図1と同様であるので、説明を省略する。
【0090】
図3は、実施の形態に係る半導体集積回路(ICa)1の構成例(ROM内蔵マイクロコントローラ)を示すブロック図である。CPU13を含むマイクロコントローラとして実装された例である。詳細は後述する。CPU13によって実行されるプログラムや、そのプログラムで使用されるデータが格納される不揮発性メモリROM4が内蔵されている。RAM14は揮発性メモリであり、プログラムの中間データなどが一時的に保持される。
【0091】
図4は、ROMが外付けされた半導体集積回路(ICa)を含んで構成された、実施形態1に係るROMコンテンツ保護システムを示すブロック図である。ROM4が外付けされる場合には、ROM4から読み出された値(プログラムコードやデータなどのROMコンテンツ)D(CK(1))は、一旦、半導体集積回路(ICa)1に内蔵されるRAM14に転送される。この転送は、例えば、電源投入時のブートアップシーケンスなどで実行される。その後、RAM14がアクセスされたときに、RAM14から読み出された値(プログラムコードやデータなどのROMコンテンツ)D(CK(1))が、復号部6に供給され復号される。図4における他の構成は、図1と同様であるので、説明を省略する。
【0092】
このとき、半導体集積回路(ICa)1としては、ROM4をオンチップに内蔵しない、所謂RAM版のマイクロコントローラを使用することができる。図5は、実施の形態に係る半導体集積回路の構成例(RAM版マイクロコントローラ)を示すブロック図である。詳細は後述するが、図3に示したマイクロコントローラとの違いは、ROM4がオンチップに内蔵されていない点である。プログラムなどは、電源投入時のブートアップシーケンスなどによって、外付けのROM4か読み出され、オンチップのRAM14に転送された後に実行される。
【0093】
以上述べたように、当該半導体集積回路(ICa)1のセキュリティを向上することができる。ICa1に内蔵されるか、または外付けされるROM4に暗号化されて格納された値(プログラムコードやデータなど)D(CK(1))は、メモリに格納されているデータを読み出す攻撃によって読み出されても、共通鍵CK(1)を知られることがないので暗号を復号することができず秘匿性が保たれる。また、設計がそっくりコピーされた模倣品でも、不揮発性メモリに暗号化されて格納された値の秘匿性が保たれる。ICa1の設計がそっくりコピーされた模倣品のICでは、その模倣ICのユニークコード生成部2_xから生成されるユニークコードUC(x)が、真正品のユニークコードUC(a)とは異なる。ユニークコードUCは、製造ばらつきによって固有に定まる複数ビットのディジタル値であるから、模倣ICが真正のICと全く同一の設計であっても、製造ばらつきが異なるので生成されるユニークコードは同一にはならないからである。PUFの「物理的に複製不可能な」という性質そのものである。模倣ICでは、ROM4には複製元のICと同様に真正の共通鍵CK(1)を用いて暗号化された値D(CK(1))が格納されている。ユニークコード生成部2_xから生成されるユニークコードUC(x)が真正品とは異なる。このため共通鍵生成部5_xから生成される共通鍵も真正の共通鍵CK(1)とは異なることとなるため、D(CK(1))を復号することができない。以上のように、半導体集積回路(ICa)1のセキュリティを向上することができる。
【0094】
<ユニークコードがエラーを含む場合>
実施形態1においてICa1のセキュリティを向上させる原理は、暗号の共通鍵CK(1)が外部から読み出されないことと、共通鍵CK(1)の生成のためにユニークコードUC(a)を使うことによりICの複製では同じ値が生成されないことを利用している。一方、秘匿されるべき値D(CK(1))が正しく復号されるためには、オフラインの暗号化で使用した共通鍵CK(1)と、同じ共通鍵CK(1)が生成されることが必要である。
【0095】
しかし、ユニークコード生成部2から生成されるユニークコードUC(a)は、ICa1の電源電圧や温度、経年変化などにより、変動する場合がある。ユニークコード生成部2がPUFを利用するとき、PUFは物理的なパラメータを利用するので、動作環境に依存するからである。そのため、ユニークコード生成部2から生成されるユニークコードUC(a)は、製造直後の初期ユニークコードUC(a)_initと、常に全く同一となるとは限らず、初期ユニークコードUC(a)_initに対するエラーを含むことがある。
【0096】
そこで、ユニークコード生成部2から生成されるユニークコードUC(a)が、初期ユニークコードUC(a)_initに対してエラーを含んでいても、暗号処理部3は、訂正パラメータCD(1,a)とユニークコードUC(a)とに基づいて共通鍵CK(1)を算出することができるように構成されるとよい。
【0097】
これにより、ユニークコード生成部2から生成されるユニークコードUC(a)に、初期ユニークコードUC(a)_initに対するエラーが含まれている場合であっても、暗号処理部3はそのエラーを訂正して正しい共通鍵CK(1)を算出することができ、半導体集積回路(ICa)1は正常な機能を保つことができる。
【0098】
訂正パラメータ算出ステップ21のアルゴリズムと共通鍵生成部5のアルゴリズムは、訂正パラメータCD(1,a)とユニークコードUC(a)を参照して、共通鍵CK(1)を一意に決定することができるアルゴリズムであればよい。ここで、ユニークコードUC(a)が初期ユニークコードUC(a)_initに対してエラーを含んでいても、同じ共通鍵CK(1)が生成されるためには、特に制限されないが、例えば、誤り訂正符号を利用することができる。ここで、誤り訂正符号とは、例えばハミング符号やBCH符号などで、nビットのデータとmビットの冗長ビットを結合したn+mビットの符号を、kビット以内の誤りを訂正することができるように構成することができる。nビットのデータをユニークコードUC(a)とし、mビットの冗長ビットを訂正パラメータCD(1,a)とすれば、両者を結合したn+mビットの符号に含まれるkビット以内の誤りが訂正可能である。誤りの訂正されたnビットを共通鍵CK(1)としても良いし、n+mビットの符号全体を共通鍵CK(1)としてもよく、n+mビットの符号から何らかの規則に基づいて、適当なビット数のデータを生成して共通鍵CK(1)としてもよい。
【0099】
誤り訂正能力に相当するビット数kは、採用する誤り訂正符号の訂正アルゴリズムに基づいて、元データのビット数nと、結合する冗長ビットのビット数mとによって調整することができる。ユニークコードUC(a)に含まれるエラーのビット数の実態に応じて、決めればよい。ユニークコードUC(a)と訂正パラメータCD(1,a)のそれぞれのビット数は、上記誤り訂正符号のデータnビットと冗長ビットmビットと対応付ける必要はない。
【0100】
<半導体集積回路(ICa)1の実装形態>
半導体集積回路(ICa)1は、他にCPUを含む、例えば、マイクロコントローラとして実現することができる。
【0101】
図3図5は、実施の形態に係る半導体集積回路(ICa)1の構成例を示すブロック図である。図3は、ROM4をオンチップに内蔵する、所謂ROM内蔵マイクロコントローラであり、図5は、ROM4をオンチップに内蔵しない、所謂RAM版のマイクロコントローラである。
【0102】
図3に示されるROM内蔵マイクロコントローラは、CPU13と、RAM14と、I/O15と、ユニークコード生成部2と、暗号IP16と、ROM4とを備え、それらが互いにバス17を介して接続される。特に制限されないが、ICa1は、例えば、公知のCMOS(Complementary Metal-Oxide-Semiconductor field effect transistor)LSIの製造技術を用いて、シリコンなどの単一半導体基板上に形成される。
【0103】
ユニークコード生成部2は、前述のようにデバイスの固有のディジタル値を生成する装置である。このユニークコード生成装置は、他の構成要素と分けて構成される必要は無い。たとえば、前述のSRAM−PUFの場合は、RAM14の一部を用いて構成する事も可能である。
【0104】
ROM4には、CPU13からアクセス可能なプログラムやデータが、前記所定の暗号鍵である共通鍵CK(1)を用いて暗号化された値で格納される。暗号IP16は、ユニークコード生成部2から供給されるユニークコードUC(a)と、訂正パラメータCD(1,a)から共通鍵CK(1)を生成し、ROM4から読み出された値D(CK(1))を復号してCPU13に供給する。ROM4から読み出された値D(CK(1))がプログラムであれば、CPU13は復号されたプログラムコードをフェッチして実行し、データであれば演算処理等に利用する。
【0105】
図5に示されるRAM版のマイクロコントローラも、CPU13と、RAM14と、I/O15と、ユニークコード生成部2と、暗号IP16とを備え、それらが互いにバス17を介して接続されるが、ROM4は内蔵されていない。特に制限されないが、RAM版のマイクロコントローラも、例えば、公知のCMOSLSIの製造技術を用いて、シリコンなどの単一半導体基板上に形成されることができるが、不揮発性メモリを形成する工程を含む必要がないため、製造コストはROM内蔵版よりも低く、単位チップ面積当たりの欠陥密度が低い分、歩留まりが向上するので、製造原価を低く抑えることができる。
【0106】
一般にRAM版のマイクロコントローラでは、実行すべきプログラムのプログラムコードやプログラムで利用されるデータは、外付けのROMに格納しておき、電源投入直後のブートアップシーケンスによって、オンチップのRAM14に転送した後に、CPU13がRAM14にアクセスして実行する。CPU13が外付けのメモリにアクセスするには、オンチップのメモリよりも多くのアクセスサイクルが必要であるため、動作速度が制限されるためである。
【0107】
本実施形態においては、外付けのROMには、CPU13からアクセス可能なプログラムやデータが、前記所定の暗号鍵である共通鍵CK(1)を用いて暗号化された値で格納される。上記ブートアップシーケンス等を使って、外付けのROMから暗号化された値D(CK(1))をRAM14に予め転送する。暗号IP16は、上記と同様に、ユニークコード生成部2から供給されるユニークコードUC(a)と、訂正パラメータCD(1,a)から共通鍵CK(1)を生成する。CPU13がRAM14をアクセスすることによって読み出された値D(CK(1))は、暗号IP16によって、生成された共通鍵CK(1)を用いて復号され、CPU13に供給される。読み出された値D(CK(1))がプログラムであれば、CPU13は復号されたプログラムコードをフェッチして実行し、データであれば演算処理等に利用する。
【0108】
以上述べてきたように、不揮発性メモリ(ROM4)に格納され秘匿されているデータを、CPU13が利用することができる。
【0109】
<CPUから不揮発性メモリへのデータの書き込み>
ICa1は、暗号IP16にさらに暗号化部を備えることもできる。暗号IP16に含まれる暗号処理部3は、CPU13から出力されるデータを、生成された共通鍵CK(1)を使って暗号化する機能をさらに備えることができる。CPU13はROM4に書き込むデータを、暗号処理部3によって暗号化した後に、ROM4に書き込むことができる構成となる。このとき、ROM4は電気的に書き換え可能なメモリである。
【0110】
これにより、ICa1の使用中に、ROM4に追記または変更すべきデータがある場合にも、そのデータを秘匿することができる。
【0111】
以上述べた実施の形態では、暗号処理部3の機能が暗号IP16によって実行される例を示したが、暗号処理部3の機能は、CPU13のソフトウェアによって実行されてもよい。その場合、暗号IP16を備えない構成を採ることもできるし、一部の暗号演算処理を加速するためのアクセラレータとして構成することもできる。また、訂正パラメータCD(1,a)は、どのような方法で、共通鍵生成部5に供給しても良い。例えば、ICa1の同一チップ内に保持して供給しても良いし、ICa1の外部から供給しても良い。
【0112】
〔実施形態2〕<鍵データベースをオンチップに含むIC>
図6は、実施形態2に係る半導体集積回路(ICa)1の構成を示すブロック図(ROM内蔵版)である。図2に示した実施形態1との違いは、ICa1が鍵データベース9を含んで構成される点である。オフライン処理20で算出された訂正パラメータCD(1,a)は予め鍵データベース9に格納され、訂正パラメータCD(1,a)が同一チップ内に保持される。図2と同様の部分の構成についての説明は省略する。
【0113】
鍵データベース9は、例えば、ROM4内の所定の領域とし、その領域に訂正パラメータCD(1,a)を格納しておき、電源投入処理やブート処理、リセット処理などの初期シーケンスで共通鍵生成部5に読み込むことができる。また、ROM4以外の不揮発性メモリを備えて、訂正パラメータCD(1,a)をそれに保持してもよい。
【0114】
また、ICa1がROM4を内蔵せず、ICa1にROM4を外付けして、ROMコンテンツ保護システムを構成してもよい。図7は、実施形態2に係る半導体集積回路の構成を示すブロック図(RAM版)である。図4に示した実施形態1との違いは、ICa1が鍵データベース9を含んで構成される点である。オフライン処理20で算出された訂正パラメータCD(1,a)は予め、外付けされたROM4の鍵データベース9に格納される。ブートアップシーケンスなどにより、鍵データベース9はオンチップのRAM14に転送され、訂正パラメータCD(1,a)が同一チップ内に保持される。その他、図2図4と同様の部分の構成についての説明は省略する。
【0115】
これにより、訂正パラメータCD(1,a)をチップの外から伝送するためのデータ通信を不要とすることができる。チップまたはシステムの外から伝送しないので、攻撃者に伝送中の値を観測され、または繰り返しの試行により探索されるなどにより、訂正パラメータCD(1,a)の値が知られる恐れを低減することができ、当該半導体集積回路(ICa)1及び当該ROMコンテンツ保護システムのセキュリティを向上することができる。
【0116】
〔実施形態3〕<鍵データベースを含む管理IC(ICs)を外付け>
図8は、実施形態3に係る半導体集積回路(ICa)1及びICaを含んで構成されるROMコンテンツ保護システム10の構成を示すブロック図(ROM内蔵版)である。図3に示した実施形態2との違いは、ICa1が鍵データベース9をオンチップに含まず、代わりに鍵データベース9を持つ管理IC(ICs)8が外付けされ、ICa1に訂正パラメータCD(1,a)を供給する点である。オフライン処理20(図示を省略)で算出された訂正パラメータCD(1,a)は予めICs8の鍵データベース9に格納され保持される。図1図2図6と同様の部分の構成についての説明は省略する。
【0117】
図9は、実施形態3に係る半導体集積回路(RAM版)及びシステムの構成を示すブロック図である。ICa1は、図4図5に示したような、ROM4を内蔵しない半導体集積回路である。外付けされる管理IC(ICs)8が、ROM4を内蔵する。ROM4には、暗号化された値D(CK(1))が格納されており、例えばブートアップシーケンスを使って、電源投入直後にICa1内のRAM14に、転送される。上述の図8の場合と同様に、オフライン処理20(図示を省略)で算出された訂正パラメータCD(1,a)は予めICs8の鍵データベース9に格納され保持され、管理IC(ICs)8からICa1に供給される。その他、図1図4図7と同様の部分の構成についての説明は省略する。ROM4が管理IC(ICs)8に内蔵される場合について説明したが、ROM4はICs8とは別に外付けされてもよい。
【0118】
以上のように、ROM4に格納される暗号化された値D(CK(1))と、その暗号を復号するための暗号鍵である共通鍵CK(1)を生成するための訂正パラメータCD(1,a)が、別チップで管理されるので、セキュリティを向上することができる。
【0119】
また、管理IC(ICs)8は、オフライン処理20とは分離して、暗号鍵CK(1)や暗号化ステップ23、及び、訂正パラメータ算出ステップ21の内容とその入出力データ、中間データなどは内部に保持せず、その結果である鍵データベース9のみを保持するように構成することができる。これにより、管理IC(ICs)8がセキュアではない環境で使用される場合であっても、ROMコンテンツ保護システム10全体としてのセキュリティを向上することができる。
【0120】
〔実施形態4〕<複数の保護対象IC(ICa、ICb)と1個の管理IC(ICs)>
図10は、実施形態4に係る半導体集積回路(ICa、ICb)1_a、1_b及びICaとICbを含んで構成されるROMコンテンツ保護システム10の構成を示すブロック図である。図8に示した実施形態3との違いは、1個の管理IC(ICs)8に対して、図8に示したICa(1_a)以外に、同様に構成されたICb(1_b)が接続されている点である。図10では2個のみの保護対象IC(ICa、ICb)を示したが、接続する保護対象ICの数は、任意に決めることができる。
【0121】
複数の半導体集積回路(ICa、ICb)1_a、1_bのそれぞれは、不揮発性メモリ(ROM)4_a、4_bと、ユニークコード生成部2_a、2_bと、暗号処理部3_a、3_bとを含んで構成される。
【0122】
それぞれの不揮発性メモリ(ROM)4_aと4_bには、ICa(1_a)とICb(1_b)のそれぞれに対応する共通鍵CK(1,a)とCK(1,b)を用いて暗号化された値D(CK(1、a))とD(CK(1、b))が格納される。ICa(1_a)とICb(1_b)でそれぞれ異なる共通鍵(CK(1、a)≠CK(1、b))を使って暗号化しても良いし、同じ共通鍵CK(1)(=CK(1、a)=CK(1、b))を使って暗号化しても良い。図5には、同じ共通鍵CK(1)を使って暗号化されている例が示される。個体ごとにROM4に書き込むコードを変える必要がないため、大量生産に適する。一方、個体ごとに暗号鍵を異ならせれば、セキュリティは向上する。
【0123】
管理IC(ICs)8に含まれる鍵データベース9は、複数の半導体集積回路(ICa、ICb)1_a、1_bのそれぞれと対応付けて、複数の訂正パラメータCD(1,a)とCD(1,b)を保持し、訂正パラメータを対応する半導体集積回路に供給する。訂正パラメータCD(1,a)はICa(1_a)に、給され、共通鍵生成部5_aにより、ユニークコードUC(a)を参照して共通鍵CK(1)を生成する。復号部6_aは、生成された共通鍵CK(1)を用いて、ROM4_aに格納されている暗号化されたデータD(CK(1))を復号する。他方、訂正パラメータCD(1,b)はICb(1_b)に供給され、共通鍵生成部5_bにより、ユニークコードUC(b)を参照して共通鍵CK(1)を生成する。復号部6_bは、生成された共通鍵CK(1)を用いて、ROM4_bに格納されている暗号化されたデータD(CK(1))を復号する。
【0124】
図11は、実施形態4に係る管理IC(ICs)8に含まれる鍵データベース9の構成例を示す説明図である。鍵データベース9は、複数の半導体集積回路ICa、ICb、…ごとに、複数の共通鍵CK(1)、CK(2)、…に対応する複数の訂正パラメータを格納したデータベースである。
【0125】
訂正パラメータCD(1,a)は、対応するICaの製造後にユニークコード生成部2_aから生成される初期ユニークコードUC(a)_initと共通鍵CK(1)に基づいて、システムの外部で予め算出された訂正パラメータである。訂正パラメータCD(2,a)は、同じく対応するICaの初期ユニークコードUC(a)_initに基づくが、別の共通鍵CK(2)を生成するための訂正パラメータである。他の半導体集積回路ICbなどについても、同様に、対応する訂正パラメータCD(1,b)、CD(2,b)がシステムの外部で予め算出され、鍵データベース9に格納される。図10に示した例は、ROM4_aとROM4_bには同じ共通鍵CK(1)を使って暗号化した値D(CK(1))が格納される例であるので、CD(2,a)とCD(2,b)は、使用されていない。ROM4_aとROM4_bのプログラムやデータを、それぞれ異なる共通鍵CK(1)とCK(2)を使って暗号化したときは、ICaにはCD(1,a)を供給し、ICbにはCD(2,b)を供給すればよい。
【0126】
また、訂正パラメータCDの供給方法は任意である。例えば、管理IC(ICs)8に、ICa、ICb、…それぞれに接続される配線を備え、訂正パラメータCD(1,a)、CD(1,b)、…をパラレル通信またはシリアル通信で供給してもよい。または、共通のバスや通信路を設けて、識別コードなどを使った通信により、個別に訂正パラメータを伝送してもよい。
【0127】
これにより、セキュリティが向上された半導体集積回路を複数(1_a、1_b)搭載したROMコンテンツ保護システム10を構築することができる。当該システムは、同じ半導体集積回路を複数個搭載して構成しても、異なる種類の半導体集積回路を含んで構成しても良く、さらに複数個の同じ半導体集積回路と異なる種類の半導体集積回路を含んで構成しても良い。
【0128】
図10には、ROM4_a、4_bをそれぞれ内蔵する、半導体集積回路(ICa、ICb)1_a、1_bを示したが、ROM4_a、4_bは必ずしも内蔵される必要はなく、例えば図4図7などと同様に外付けされてもよい。また、それぞれ別個のROMとして外付けされる必要もなく、例えば全てのコンテンツを格納する1個ROMを、ICs8に内蔵して構成してもよい。その場合は、ブートアップシーケンスなどにより、順次、各半導体集積回路(ICa、ICb)1_a、1_bに、暗号化された値D(CK(1、a))とD(CK(1、b))がそれぞれ転送される。
【0129】
〔実施形態5〕<訂正パラメータをネットワーク経由で供給>
図12は、実施形態5に係る半導体集積回路(ICa)1及びICaを含んで構成されるROMコンテンツ保護システム10の構成を示すブロック図である。図8に示した実施形態3との違いは、ICa1がネットワークインターフェース12を含んで構成され、ネットワーク11を介して管理IC(ICs)8と接続される点である。ICa1は、ICs8の鍵データベース9に格納される訂正パラメータCD(1,a)を、ネットワーク11を介して受信することができる。図8と同様の部分の構成についての説明は省略する。
【0130】
ネットワーク11は、公衆網からローカルエリアネットワーク(LAN: Local Area Network)、さらには、独自の通信プロトコルを持つような、より単純なネットワークであってもよく、図8に示した1:1、または、図10に示した多:1の通信路で構成されてもよい。
【0131】
これにより、ネットワーク11を経由しても、セキュリティを担保した状態で、暗号鍵に相当する情報である訂正パラメータCD(1,a)を保護対象のICに配信することができる。ネットワーク11を介して伝送される情報が、共通鍵CK(1)そのものではなく、訂正パラメータCD(1,a)であるため、これが知られても、ユニークコードUC(a)が知られない限り、共通鍵CK(1)を生成することができない。したがって、訂正パラメータCD(1,a)を、ネットワーク11を経由して伝送しても、セキュリティを担保することができる。
【0132】
図12には、ROM4を内蔵する、半導体集積回路(ICa)1を示したが、ROM4は必ずしも内蔵される必要はなく、例えば図4図7などと同様に外付けされてもよい。その場合は、暗号化された値D(CK(1、a))は、例えば、電源投入時にブートアップシーケンスなどにより転送される。また、暗号化された値D(CK(1、a))は、ICs8からネットワーク11を介してICa1にダウンロードされてもよい。
【0133】
〔実施形態6〕<ROM保護用暗号、認証用暗号等ための複数の訂正パラメータ>
図11に示したように、鍵データベース9は、保護対象のICごとに複数の共通鍵を生成するための、複数の訂正パラメータを保持することができる。複数の共通鍵は、用途ごと使い分けることができる。例えば、プログラムの暗号化のために共通鍵CK(1)を用い、データの暗号化のために別の共通鍵CK(2)を用い、通信の暗号化のためにさらに別の共通鍵CK(3)を用いることができる。また、複数の保護対象のICの間で、異なる共通鍵を用いることもできるし、同じ共通鍵を用いて相互間の通信を暗号化することもできる。本実施形態6の他、実施形態7と実施形態8の合計3つの例を取り上げて、より詳細に説明する。
【0134】
<1つのユニークコードから複数の暗号鍵を生成>
ICa1に搭載される不揮発性メモリ(ROM)4に格納する値の暗号化に使われる暗号鍵を第1共通鍵CK(1)とし、鍵データベース9は、ICa1と対応付けて複数の訂正パラメータCD(1,a)、CD(2,a)、…を保持し、それらをICa1に供給する。ICa1の暗号処理部3は、供給された複数の訂正パラメータCD(1,a)、CD(2,a)、…とユニークコード生成部2から生成されるユニークコードUC(a)とに基づいて、第1共通鍵CK(1)とそれとは別の共通鍵CK(2)とを算出する。暗号処理部3は、復号部6において算出した第1共通鍵CK(1)を用いて、ROM4から読み出された、暗号化された値D(CK(1))を復号することができる。
【0135】
これにより、複数の暗号鍵(CK(1)、CK(2)、…)に用途によって使い分けることができ、当該半導体集積回路のセキュリティをさらに向上し、システム全体のセキュリティも向上することができる。
【0136】
<1つのユニークコードから認証用と復号用の暗号鍵を生成>
図13は、実施形態6に係る半導体集積回路(ICa)1_a及びICaを含んで構成されるROMコンテンツ保護システム10の構成を示すブロック図である。1つのユニークコードUC(a)から2個の暗号鍵CK(1)とCK(2)を生成し、一方の共通鍵CK(1)をROM4に格納される暗号化された値D(CK(1))を復号するために用い、他方の共通鍵CK(2)を認証に用いる例である。ICa(1_a)は、管理IC(ICs)8と、さらに別の保護対象IC(ICz)1_zと接続され、不揮発性メモリ(ROM)4と、ユニークコード生成部2と、暗号処理部3と、インターフェース部19とを含んで構成される。暗号処理部3には、共通鍵生成部5と復号部6_1と6_2と、暗号化部7_1と7_2とが含まれる。ROM4には、共通鍵CK(1)を用いて暗号化されたプログラム及び/またはデータD(CK(1))が格納される。図13では復号部6_2と暗号化部7_2は1つのブロックで示され、インターフェース部19を介して別の保護対象IC(ICz)1_zと接続されている。管理IC(ICs)8は鍵データベース9の他、さらに認証部18を備える。管理IC(ICs)8の認証部18は、ICa(1_a)の暗号化部7_1と接続される。
【0137】
ICa(1_a)及びICaを含んで構成されるシステムの動作について説明する。ICs8は、鍵データベース9に、共通鍵CK(1)に対応する訂正パラメータCD(1,a)と、共通鍵CK(2)に対応する訂正パラメータCD(2,a)とを保持する。さらに、認証用のチャレンジデータChrを共通鍵CK(2)を用いて暗号化したChr(CK(2))を、期待値Expとして保持する。チャレンジデータChrは、例えば乱数などの値を用いることができる。複数のチャレンジデータChr_1〜Chr_xとそれぞれに対応する期待値Exp_1〜Exp_xを順次、又はランダムに切替えて使用することもできる。このように、複数の候補を備えて切り替えることにより、安全性を高めることができる。
【0138】
まず、ICs8は、ICa(1_a)に対して、鍵データベース9から訂正パラメータCD(2,a)と、認証部18からチャレンジデータChrを送信する。ICa(1_a)は、共通鍵生成部5で、ユニークコード生成部2から生成されるユニークコードUC(a)を参照して、受信した訂正パラメータCD(2,a)を使って共通鍵CK(2)を生成し、暗号化部7_1に供給する。暗号化部7_1は、ICs8から受信したチャレンジデータChrを共通鍵CK(2)を使って暗号化し(Chr(CK(2)))、ICs8に返信する。ICs8は、暗号化されて返信されたチャレンジデータChr(CK(2))を、認証部18でチャレンジデータ期待値Expと比較する。一致した場合には、ICaを真正な保護対象ICとして認証する。
【0139】
ICaを真正な保護対象ICであると認証した後、管理IC(ICs)8は、ICaに対して、訂正パラメータCD(1,a)を供給する。例えば、認証部18は、暗号化されて返信されたチャレンジデータChr(CK(2))とチャレンジデータ期待値Expと比較し、一致した場合に鍵データベース9に対して照合結果matchを出力し、その結果に基づいて、鍵データベース9がICaに対して、訂正パラメータCD(1,a)を供給するように構成される。ICa(1_a)は、共通鍵生成部5で、ユニークコード生成部2から生成されるユニークコードUC(a)を参照して、受信した訂正パラメータCD(1,a)を使って共通鍵CK(1)を生成し、復号部6_1に供給する。復号部6_1は、実施形態1や実施形態4などと同様に、算出された共通鍵CK(1)を用いて、ROM4から読み出された暗号化された値D(CK(1))を復号することができる。
【0140】
算出された共通鍵CK(1)は、さらに、復号部6_2と暗号化部7_2に供給されてもよい。同じ共通鍵CK(1)を持つ別の保護対象ICであるICz(1_z)との間で、インターフェース部19を介して暗号通信を行うことができる。本実施形態では、ICz(1_z)との間の暗号通信は、ROM4の内容の保護と同じ暗号鍵(共通鍵CK(1))を用いて暗号化する例を示したが、別の暗号鍵(共通鍵CK(3)など)を用いてもよい。
【0141】
復号部6_1と6_2及び暗号化部7_1と7_2は、1個の暗号モジュールとして実装されてもよい。復号部6_1と6_2及び暗号化部7_1と7_2のための復号と暗号化の演算を時分割で順次実行することにより、並列に設ける場合よりも回路規模を小さく抑えることができる。
【0142】
これにより、複数の暗号鍵のうちの1つ(CK(2))を認証に用いることができ、当該半導体集積回路(ICa)のセキュリティをさらに向上し、ROMコンテンツ保護システム10全体のセキュリティも向上することができる。
【0143】
図13には、ROM4をそれぞれ内蔵する、半導体集積回路(ICaとICz)1_aと1_zを示したが、ROM4は必ずしも内蔵される必要はなく、例えば図4図7などと同様に外付けされてもよい。その場合は、暗号化された値D(CK(1,a))とD(CK1,z)は、例えば、電源投入時にブートアップシーケンスなどにより、ICa(1_a)とICz(1_z)にそれぞれ転送される。ROM4はICa(1_a)とICz(1_z)にそれぞれ外付けされても良いし、両方のコンテンツを含む1個のROM4を外付けして、ICa(1_a)とICz(1_z)にそれぞれのコンテンツが順次転送されるように構成されてもよい。1個のROM4は管理IC(ICs)に内蔵してもよい。
【0144】
〔実施形態7〕<認証用暗号のための訂正パラメータをオンチップに含むIC>
図14は、実施形態7に係る半導体集積回路(ICa)1_a及びICaを含んで構成されるROMコンテンツ保護システム10の構成を示すブロック図である。図13に示した実施形態6との違いは、認証用に用いる共通鍵CK(2)に対応する訂正パラメータCD(2,a)が、ICa(1_a)のROM4に格納され、認証に際して共通鍵生成部5に供給される点である。他の構成は、図13を引用して説明した実施形態6と同様であるので、説明を省略する。
【0145】
ICa(1_a)及びICaを含んで構成されるシステムの動作について説明する。ICs8は、鍵データベース9に、共通鍵CK(1)に対応する訂正パラメータCD(1,a)と、認証用のチャレンジデータChrを共通鍵CK(2)を用いて暗号化したChr(CK(2))を、期待値Expとして保持する。まず、ICs8は、ICa(1_a)に対して、認証部18からチャレンジデータChrを送信する。ICa(1_a)は、共通鍵生成部5で、ユニークコード生成部2から生成されるユニークコードUC(a)を参照して、ROM4に格納される訂正パラメータCD(2,a)を使って共通鍵CK(2)を生成し、暗号化部7_1に供給する。暗号化部7_1は、ICs8から受信したチャレンジデータChrを共通鍵CK(2)を使って暗号化し(Chr(CK(2)))、ICs8に返信する。これ以降の動作は、図13を引用して説明した実施形態6と同様であるので、説明を省略する。
【0146】
本実施形態7においても、前述の実施形態6と同様に、複数の暗号鍵のうちの1つ(CK(2))を認証に用いることができ、当該半導体集積回路(ICa)のセキュリティをさらに向上し、ROMコンテンツ保護システム10全体のセキュリティも向上することができる。
【0147】
図14には、ROM4をそれぞれ内蔵する、半導体集積回路(ICaとICz)1_aと1_zを示したが、ROM4は必ずしも内蔵される必要はなく、例えば図4図7などと同様に外付けされてもよい。その場合は、暗号化された値D(CK(1,a))とD(CK1,z)は、例えば、電源投入時にブートアップシーケンスなどにより、ICa(1_a)とICz(1_z)にそれぞれ転送される。ROM4はICa(1_a)とICz(1_z)にそれぞれ外付けされても良いし、両方のコンテンツを含む1個のROM4を外付けして、ICa(1_a)とICz(1_z)にそれぞれのコンテンツが順次転送されるように構成されてもよい。1個のROM4は管理IC(ICs)に内蔵してもよい。
【0148】
〔実施形態8〕<公開鍵認証>
図11に示したように、鍵データベース9は、保護対象のICごとに複数の共通鍵を生成するための、複数の訂正パラメータを保持することができる。前述のように、複数の共通鍵は用途ごと使い分けることができる。本実施形態8は、1つのユニークコードUC(a)から2個の暗号鍵CK(1)とCK(2)を生成し、一方の共通鍵CK(1)をROM4に格納される暗号化された値D(CK(1))を復号するために用い、他方の共通鍵CK(2)を認証に用いる例である。認証に用いる共通鍵CK(2)は、秘密鍵(SK: Secret Key)であって、管理IC(ICs)8が対応する公開鍵(PK: Public Key)を保持する。
【0149】
図15は、実施形態8に係る半導体集積回路及びROMコンテンツ保護システムの構成を示すブロック図であり、図16は、鍵データベース9の構成例を示す説明図である。
【0150】
図15は、実施形態8に係る半導体集積回路(ICa)1_a及びICaを含んで構成されるROMコンテンツ保護システム10の構成を示すブロック図である。1つのユニークコードUC(a)から2個の暗号鍵である共通鍵CK(1)と秘密鍵SK(1)を生成し、共通鍵CK(1)をROM4に格納される暗号化された値D(CK(1))を復号するために用い、秘密鍵SK(1)を認証に用いる例である。ICa(1_a)は、管理IC(ICs)8と、さらに別の保護対象IC(ICz)1_zと接続され、不揮発性メモリ(ROM)4と、ユニークコード生成部2と、暗号処理部3と、インターフェース部19とを含んで構成される。暗号処理部3には、共通鍵生成部5と復号部6_1と6_2と、暗号化部7_1と7_2とが含まれる。ROM4には、共通鍵CK(1)を用いて暗号化されたプログラム及び/またはデータD(CK(1))が格納される。図15では復号部6_2と暗号化部7_2は1つのブロックで示され、インターフェース部19を介して別の保護対象IC(ICz)1_zと接続されている。管理IC(ICs)8は鍵データベース9の他、さらに認証部18を備える。管理IC(ICs)8の認証部18は、チャレンジデータChrの生成も実行可能に構成され、ICa(1_a)の暗号化部7_1と接続される。
【0151】
ICa(1_a)及びICaを含んで構成されるシステムの動作について説明する。ICs8は、鍵データベース9に、共通鍵CK(1)に対応する訂正パラメータCD(1,a)と、秘密鍵SK(1)に対応する訂正パラメータCD(2,a)とを保持する。ICs8は、秘密鍵SK(1)に対応する訂正パラメータCD(2,a)と認証用のチャレンジデータChrを、ICa(1_a)に送る。
【0152】
ICa(1_a)は、共通鍵生成部5で、ユニークコード生成部2から生成されるユニークコードUC(a)を参照して、受信した訂正パラメータCD(2,a)を使って秘密鍵SK(1)を生成し、暗号化部7_1に供給する。暗号化部7_1は、ICs8から受信したチャレンジデータChrを秘密鍵SK(1)を使って暗号化し(Chr(SK(1))、ICs8に返信する。ICs8は、暗号化されて返信されたチャレンジデータChr(SK(1))を、認証部18で公開鍵PK(1)を使って復号し、送信したチャレンジデータChrと比較する。一致した場合には、ICaを真正な保護対象ICとして認証する。認証部18は、一致した場合には、鍵データベース9に対して照合結果matchを出力し、その結果に基づいて、鍵データベース9がICaに対して、訂正パラメータCD(1,a)を供給するように構成される。
【0153】
ICaを真正な保護対象ICであると認証した後、管理IC(ICs)8は、ICaに対して、訂正パラメータCD(1,a)を供給する。ICa(1_a)は、共通鍵生成部5で、ユニークコード生成部2から生成されるユニークコードUC(a)を参照して、受信した訂正パラメータCD(1,a)を使って共通鍵CK(1)を生成し、復号部6_1に供給する。復号部6_1は、実施形態1や実施形態4などと同様に、算出された共通鍵CK(1)を用いて、ROM4から読み出された暗号化された値D(CK(1))を復号することができる。
【0154】
算出された共通鍵CK(1)は、さらに、復号部6_2と暗号化部7_2に供給されてもよい。同じ共通鍵CK(1)を持つ別の保護対象ICであるICz(1_z)との間で、インターフェース部19を介して暗号通信を行うことができる。本実施形態では、ICz(1_z)との間の暗号通信は、ROM4の内容の保護と同じ暗号鍵(共通鍵CK(1))を用いて暗号化する例を示したが、別の暗号鍵(共通鍵CK(3)など)を用いてもよい。
【0155】
復号部6_1と6_2及び暗号化部7_1と7_2は、1個の暗号モジュールとして実装されてもよい。復号部6_1と6_2及び暗号化部7_1と7_2のための復号と暗号化の演算を時分割で順次実行することにより、並列に設ける場合よりも回路規模を小さく抑えることができる。
【0156】
これにより、複数の暗号鍵のうちの1つ(CK(2))を公開鍵認証システムにおける秘密鍵SK(1)として認証に用いることができ、当該半導体集積回路(ICa)のセキュリティをさらに向上し、ROMコンテンツ保護システム10全体のセキュリティも向上することができる。
【0157】
図15には、ROM4をそれぞれ内蔵する、半導体集積回路(ICaとICz)1_aと1_zを示したが、ROM4は必ずしも内蔵される必要はなく、例えば図4図7などと同様に外付けされてもよい。その場合は、暗号化された値D(CK(1,a))とD(CK1,z)は、例えば、電源投入時にブートアップシーケンスなどにより、ICa(1_a)とICz(1_z)にそれぞれ転送される。ROM4はICa(1_a)とICz(1_z)にそれぞれ外付けされても良いし、両方のコンテンツを含む1個のROM4を外付けして、ICa(1_a)とICz(1_z)にそれぞれのコンテンツが順次転送されるように構成されてもよい。1個のROM4は管理IC(ICs)に内蔵してもよい。
【0158】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【0159】
1 保護対象IC
2 ユニークコード生成部
3 暗号処理部
4 不揮発性メモリ
5 共通鍵生成部
6 復号部
7 暗号化部
8 管理IC
9 鍵データベース
10 ROMコンテンツ保護システム
11 ネットワーク
12 ネットワークインターフェース
13 CPU
14 RAM
15 I/O
16 暗号IP
17 バス
18 認証部
19 インターフェース(I/F)部
20 オフライン処理
21 訂正パラメータ算出ステップ
22 ROMコンテンツ(プログラム及び/又はデータ)
23 暗号化ステップ
UC(a)、UC(b) ユニークコード
UC(a)_init 初期ユニークコード
CK(1)、CK(2) 暗号鍵(共通鍵)
SK(1) 秘密鍵
PK(1) 公開鍵
CD(1,a)、CD(1,b)、CD(2,a)、CD(2,b) 訂正パラメータ
Chr チャレンジデータ
Chr(CK(2)) 共通鍵CK(2)を用いて暗号化されたチャレンジデータ
Chr(SK(1)) 秘密鍵SK(1)を用いて暗号化されたチャレンジデータ
D(CK(1)) 共通鍵CK(1)を用いて暗号化されたROMコンテンツ(プログラム及び/又はデータ)
Exp 期待値
match 照合結果
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16