(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【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】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。