説明

改竄検出用データ生成方法

【課題】1つの元になるドメイン鍵に複数のコンテンツ鍵が対応付けられてユーザからアクセス可能な領域に格納される機密情報処理システムにおいて、処理量の少ないコンテンツ鍵の改竄チェックの方法を提供する。
【解決手段】同一のドメイン鍵に対応付けられるコンテンツ鍵毎のハッシュ値をハッシュリストとして通常領域に格納し、保護領域にはドメイン鍵のハッシュ値としてハッシュリストのハッシュ値を格納する。あるいは、コンテンツ鍵内に検証用データを埋め込んでコンテンツ鍵の改竄をチェックすると共に、同一のドメイン鍵に対応付けられる検証用データを連結したハッシュ値をドメイン鍵のハッシュ値として保護領域に格納する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、改竄の有無を検出される機密情報を生成する方法に関する。
【背景技術】
【0002】
著作物や個人情報等に関するコンテンツ(例えば、音楽データや映像データに代表されるコンテンツ)は、不正なコピーあるいは外部への漏洩を防ぐ必要がある。このようなコンテンツは、暗号化された状態でターゲット機器に格納される。ホスト機器がターゲット機器に格納された暗号化コンテンツを扱う際には、ホスト機器は、ターゲット機器との間で認証処理を実行する。この認証が失敗すると、ホスト機器は、暗号化コンテンツを復号化するためのコンテンツ鍵をターゲット機器から入手することができない。一方、この認証が成功すると、ホスト機器は、ターゲット機器に格納されたコンテンツにアクセスして、そのコンテンツを利用することができる。このような構成にすることにより、不正なホスト機器による暗号化コンテンツの復号化を防いでいる。なお、ここで、ターゲット機器は、例えば、SDカードのようなメモリカードである。また、ホスト機器は、メモリカードからデータを読み出す半導体集積回路,その半導体集積回路を実装したセット機器,あるいはターゲット機器へとコンテンツを配信するコンテンツ配信機器である。
【0003】
次に、従来におけるターゲット機器の格納領域およびその格納領域に格納される機密情報について図17を参照しつつ説明する。なお、以下の説明において、機密情報とはコンテンツを再生するために必要な情報(例えば、鍵情報等)を示す。
【0004】
ターゲット機器内の格納領域は、システム領域901,保護領域902,および通常領域903に分けられている。システム領域901は、ターゲット機器とホスト機器との間で認証を行うための情報が格納される領域である。ホスト機器は、システム領域901へのアクセスが許可された所定の処理でなければ、システム領域901にアクセスすることができない。保護領域902は、ユーザ(ホスト機器)が任意にアクセスをすることができず、かつ、認証に成功して初めてアクセスすることができる領域である。通常領域903は、ユーザが任意にアクセスすることができる領域である。システム領域901には、認証鍵が格納される。保護領域902には、暗号化コンテンツ鍵が格納される。通常領域903には、暗号化コンテンツが格納される。
【0005】
次に、ホスト機器がターゲット機器内の暗号化コンテンツを復号化して利用する方法について説明する。まず、ホスト機器は、自己に格納している認証鍵とターゲット機器に格納された認証鍵とを用いて、認証を行う。認証に成功すると、ホスト機器は、これらの認証鍵を用いて認証中間鍵を生成する。この認証中間鍵は、暗号化コンテンツ鍵を復号化するための鍵として規定されている。したがって、ホスト機器は、ターゲット機器から暗号化コンテンツ鍵を取得するとともに、その暗号化コンテンツ鍵を認証中間鍵で復号化して、平文(暗号化されていない状態を示す)のコンテンツ鍵を生成する。さらに、ホスト機器は、暗号化コンテンツをターゲット機器から取得し、平文のコンテンツ鍵を用いてその暗号化コンテンツを復号化して、平文のコンテンツを生成する。これにより、コンテンツが利用可能になる。以上のような処理を実行することにより、認証に成功したホスト機器のみがターゲット機器に格納された暗号化コンテンツを利用することができる。
【0006】
上述のコンテンツの復号化では、認証に成功すれば認証中間鍵が生成されるので、認証にさえ成功すれば暗号化コンテンツを復号化することが可能である。すなわち、ターゲット機器に格納されている暗号化コンテンツは、正当なホスト機器であれば利用することができる。
【0007】
一方で、近年では、電子配信を利用して暗号化コンテンツを特定のユーザに送信することによって、その特定ユーザのみにコンテンツを利用させるといった動きが活発である。しかし、このような電子配信での利用を想定した場合、特定ユーザに送信される暗号化コンテンツは、その特定ユーザが所有する特定のホスト機器でしか復号化できないようにする必要がある。しかし、上述の方法ではその要求を満足することができない。
【0008】
そのため、有効なドメイン鍵を特定のユーザにのみ設定する方法が新たに考えられている。ドメイン鍵が設定された場合、コンテンツはコンテンツ鍵で暗号化され、コンテンツ鍵は認証中間鍵ではなく特定ユーザのみに設定されたドメイン鍵を用いて暗号化されることになる。また、ドメイン鍵自体も、認証中間鍵,あるいは認証中間鍵の情報を用いて生成される別の鍵を用いて、暗号化してターゲット機器に格納される。これにより、ドメイン鍵自体の秘匿性も確保される。
【0009】
このようにドメイン鍵を設定した場合における、ターゲット機器内の格納領域に格納される機密情報について図18を参照しつつ説明する。ドメイン鍵を設定した場合であっても従来のターゲット機器との互換性を保つために、ターゲット機器内の領域の分割方法は同一でなくてはならない。また、ドメイン鍵とコンテンツ鍵との双方を保護領域902に格納してしまうと、ドメイン鍵は、コンテンツ鍵の復号化のための鍵であるにもかかわらず、コンテンツ鍵と同一のセキュリティレベルの領域に格納されてしまう。したがって、セキュリティと互換性とを保つために、ドメイン鍵を設定した場合は、ドメイン鍵は、暗号化された状態で、保護領域902に格納される。また、コンテンツ鍵は、暗号化された状態で、通常領域903に格納される。
【0010】
しかしながら、上述のように通常領域903はユーザが任意にアクセスすることが可能な領域であるので、通常領域903に格納された暗号化コンテンツ鍵の正当性を保証すること、言い換えれば改竄をチェックすることが重要となってくる。
【0011】
なお、本発明に関連する先行技術文献として、特開2001−203686号公報がある。特開2001−203686号公報では、1つのコンテンツデータを複数部分に分割して部分毎にチェック値を算出し、予め保持されたチェック値との比較を行っている。これによって、必要部分のみの改竄チェックが可能である。
【0012】
しかしながら、単に1つのコンテンツデータを部分毎に分割しているに過ぎず、後述するように、1つのドメイン鍵に対応する複数のコンテンツ鍵が存在する場合に、これら複数のコンテンツ鍵を関連付けてドメイン鍵内に埋め込まれたデータと照合することにより改竄チェックを行う本発明とは基本的に異なっている。
【特許文献1】特開2001−203686号公報
【発明の開示】
【発明が解決しようとする課題】
【0013】
ここで、ターゲット機器内に格納される機密情報について図19を参照しつつさらに詳細に説明する。ターゲット機器内の保護領域902には、n個(nは1以上の整数)の暗号化されたドメイン鍵Ku(1)〜Ku(n)が格納されている。ドメイン鍵Ku(1)〜Ku(n)には、n個のドメイン鍵管理情報UR[u](1)〜UR[u](n)が一対一で付与されている。
【0014】
ターゲット機器の通常領域903には、複数のコンテンツ鍵が格納されている。コンテンツ鍵の各々は、ドメイン鍵Ku(1)〜Ku(n)のうちいずれか1つに対応する。すなわち、1つのドメイン鍵を用いて、複数の暗号化されたコンテンツ鍵を復号化することができる。例えば、ドメイン鍵Ku(1)には、m個(mは1以上の整数)のコンテンツ鍵Kt(1-1)〜Kt(1-m)が対応する。コンテンツ鍵Kt(1-1)〜Kt(1-m)には、m個のコンテンツ鍵管理情報UR[t](1-1)〜UR[t](1-m)とm個の付加情報info(1-1)〜info(1-m)とが一対一で付与されている。
【0015】
なお、図19では、ドメイン鍵Ku(1)〜Ku(n)とドメイン鍵管理情報UR[u](1)〜UR[u](n)との集合は「ドメイン鍵群UKURE」と示し、コンテンツ鍵Kt(1-1)〜Kt(1-m),コンテンツ鍵管理情報UR[t](1-1)〜UR[t](1-m),および付加情報info(1-1)〜info(1-m)の集合は「コンテンツ鍵群TKURE(1)」と示されている。
【0016】
暗号化されたコンテンツを復号化するためには、平文のコンテンツ鍵が必要である。また、暗号化されたコンテンツ鍵を復号化するためには、ドメイン鍵が必要である。どのコンテンツ鍵がどのドメイン鍵によって復号化できるのかを素早く検索するために、通常領域には鍵対応テーブルAddress Listも格納されている。鍵対応テーブルAddress Listには、ドメイン鍵とコンテンツ鍵との対応関係が記されている。例えば、ドメイン鍵Ku(1)には、そのドメイン鍵を用いて復号化できるコンテンツ鍵Kt(1-1)〜Kt(1-m)が対応付けられている。
【0017】
上述のようにターゲット機器に格納された機密情報の改竄をチェックする場合、機密情報毎にハッシュ関数を用いる方法が一般的である。また、一般的に、ハッシュ演算を用いて機密情報の改竄をチェックする場合、その機密情報に関連する全ての情報についてハッシュ演算が実行される。
【0018】
次に、ターゲット機器内に格納された機密情報に対してハッシュ関数を用いた改竄チェックを実行する場合について説明する。なお、ここで、「Enc」は、暗号化された状態を表す接頭語として使用する。例えば、「EncUR[u](1)」は、暗号化されたドメイン鍵管理情報UR[u](1)を示す。
【0019】
まず、ドメイン鍵Ku(1)によって復号化することができる暗号化コンテンツ鍵EncKt(1-1)〜EncKt(1-m),それら暗号化コンテンツ鍵EncKt(1-1)〜EncKt(1-m)に対応する暗号化コンテンツ鍵管理情報EncUR[t](1-1)〜EncUR[t](1-m)、およびそれら暗号化コンテンツ鍵EncKt(1-1)〜EncKt(1-m)に対応する付加情報info(1-1)〜info(1-m)をすべて連結してハッシュ演算を実行する。そのハッシュ演算によって得られたハッシュ値をドメイン鍵管理情報UR[u](1)に格納する。
【0020】
次に、暗号化コンテンツ鍵EncKt(1-1)を復号化する際には、ホスト機器は、鍵対応テーブルAddress Listを参照して、ターゲット機器内の通常領域903からコンテンツ鍵群TKURE(1)を読み出し、ハッシュ演算を実行する。一方、ホスト機器は、認証によって得られた認証中間鍵を用いて、ターゲット機器内の保護領域902に格納された暗号化ドメイン鍵管理情報EncUR[u](1)を復号化する。次に、ホスト機器は、復号化によって得られたドメイン鍵管理情報UR[u](1)の中からハッシュ値を抽出する。次に、ホスト機器は、ハッシュ演算によって算出したハッシュ値とドメイン鍵管理情報UR[u](1)の中から抽出したハッシュ値とを比較する。ホスト機器は、両者が一致すれば改竄されていないと判断して、暗号化コンテンツ鍵を復号化する。一方、ホスト機器は、両者が不一致であれば改竄されたものとして暗号化コンテンツを復号化しない。
【0021】
しかしながら、図19に示したような改竄チェック方法では、処理量が非常に大きくなる。すなわち、1つのコンテンツ鍵(コンテンツ鍵Kt(1-1))の改竄をチェックするためには、ホスト機器は、同一のドメイン鍵で復号化可能な全てのコンテンツ鍵とそれに付随する全ての情報(コンテンツ鍵群TKURE(1))をターゲット機器から読み出し、その読み出した情報に対してハッシュ演算を実行する必要がある。特に、ターゲット機器に格納されるコンテンツの個数が増加すると、それに従って、コンテンツ鍵の個数も増加する。その結果、1つのドメイン鍵に対応付けられるコンテンツ鍵は増加していくので、処理時間は、さらに増加していく。
【0022】
また、コンテンツとコンテンツ鍵とが一組のデータとして、ネットワーク等を介して配信されることも想定される。そのような場合には、1つのドメイン鍵に対応付けられるコンテンツ鍵の追加/削除が生じる。しかしながら、従来の方法によれば、コンテンツ鍵を追加/削除する場合、1つのドメイン鍵(ドメイン鍵Ku(1))に対応付けられる全てのコンテンツ鍵とそれに付随する情報(コンテンツ鍵群TKURE(1))についてハッシュ演算を再度やりなおし、算出したハッシュ関数をそのドメイン鍵に付随するドメイン鍵管理情報(ドメイン鍵管理情報UR[u](1))へと埋め込む必要がある。
【0023】
本発明の目的とするところは、処理量の少ない改竄チェックの方法を提供することによって高速な改竄チェックを実行することである。さらに詳述すれば、複数回の暗号化によってコンテンツを保護する機密情報処理システムにおいて、複数のコンテンツ鍵が1つのドメイン鍵に対応付けられてユーザからアクセス可能な領域に格納された場合に、コンテンツ鍵の改竄チェックを少ない処理量で実現することによって、コンテンツの不正コピーを防止することである。
【課題を解決するための手段】
【0024】
上記課題を解決するために本発明が講じた第1の方法は、少なくとも1つのドメイン鍵を第1の領域に記憶し、かつ各々が何れかの前記ドメイン鍵情報に関連付けられる複数のコンテンツ鍵情報を前記第1の領域と異なる第2の領域に記憶するターゲット機器内の、前記コンテンツ鍵情報の改竄を検出するための改竄検出用データ生成方法であって、一のドメイン鍵に関連付けられる前記複数のコンテンツ鍵情報を連鎖暗号方式によって暗号化するステップと、前記暗号化された状態の複数のコンテンツ鍵情報から所定位置のデータを抽出するステップと、抽出された複数の前記所定位置のデータを連結するステップと、前記連結された複数の前記所定位置のデータに対してハッシュ演算を行い、連鎖ハッシュ値を算出するステップと、平文状態の前記所定位置のデータに相当するチェック値を前記ターゲット機器内に格納するステップと、前記連鎖ハッシュ値を前記ターゲット機器内に格納するステップと、を備えることを特徴とする。
【0025】
また、本発明が講じた第2の方法は、少なくとも1つのドメイン鍵情報を第1の領域に記憶し、各々が何れかの前記ドメイン鍵情報に関連付けられる複数のコンテンツ鍵情報を前記第1の領域と異なる第2の領域に記憶するターゲット機器内の、前記複数のコンテンツ鍵情報のうち一のコンテンツ鍵情報の改竄を検出する改竄検出方法であって、前記一のコンテンツ鍵情報に第1の演算を施し検証用データを算出する第1の算出ステップと、前記第1の算出ステップで算出された検証用データと、前記第2の領域に予め格納された検証用データとを比較する第1の比較ステップと、前記一のコンテンツ鍵情報と同一のドメイン鍵情報に関連付けられる複数のコンテンツ鍵情報に関連付けられる複数の検証用データを、前記第1の演算を行うことなく抽出する抽出ステップと、前記抽出ステップで抽出された前記複数の検証用データに第2の演算を施し、全体検証用データを算出する第2の算出ステップと、前記第2の算出ステップで算出された全体検証用データと、前記第1の領域に前記同一のドメイン鍵情報と関連付けて予め格納された全体検証用データを比較する第2の比較ステップとを備えることを特徴とする。
【0026】
また、本発明が講じた第3の方法は、少なくとも1つのドメイン鍵情報と、各々が何れかの前記ドメイン鍵情報に関連付けられる複数のコンテンツ鍵情報と、を暗号化された状態で記憶するターゲット機器内の、前記複数のコンテンツ鍵情報のうち一のコンテンツ鍵情報の改竄を検出する改竄検出方法であって、前記ターゲット機器には、連鎖暗号方式で暗号化された状態の全体チェック値と、平文の状態の全体チェック値とが予め格納されており、前記一のコンテンツ鍵情報に第1の演算を施し検証用データを算出する第1の算出ステップと、前記第1の算出ステップで算出された検証用データと、前記ターゲット機器に予め格納された検証用データとを比較する第1の比較ステップと、前記一のコンテンツ鍵情報と同一のドメイン鍵情報に関連付けられる複数のコンテンツ鍵情報に関連付けられた暗号化された状態の複数の検証用データを抽出する抽出ステップと、前記暗号化された状態の複数の検証用データと前記暗号化された状態の全体チェック値を連結した上で、復号化を行って平文の状態の全体チェック値を算出する第2の算出ステップと、前記第2の算出ステップで算出された平文の状態の全体チェック値と、前記予め格納された平文の状態の全体チェック値とを比較する第2の比較ステップとを備えることを特徴とする。
【0027】
また、本発明が講じた第4の方法は、少なくとも1つのドメイン鍵情報と、各々が何れかの前記ドメイン鍵情報に関連付けられる複数のコンテンツ鍵情報と、を記憶するターゲット機器内の、前記複数のコンテンツ鍵情報のうち一のコンテンツ鍵情報の改竄を検出する改竄検出方法であって、前記複数のコンテンツ鍵情報の各々は、連鎖暗号方式で暗号化された状態で前記ターゲット機器内に記憶されており、前記一のコンテンツ鍵情報を復号化して所定位置のデータを抽出することによりチェック値を算出する第1の算出ステップと、前記第1の算出ステップで算出されたチェック値と、前記ターゲット機器に予め格納されたチェック値とを比較する第1の比較ステップと、前記一のコンテンツ鍵情報と同一のドメイン鍵情報に関連付けられる複数のコンテンツ鍵情報に関連する複数のチェック値を抽出する抽出ステップと、前記抽出ステップで抽出された前記複数のチェック値に第2の演算を施し、全体検証用データを算出する第2の算出ステップと、前記第2の算出ステップで算出された全体検証用データと、前記第1の領域に前記同一のドメイン鍵情報と関連付けて予め格納された全体検証用データを比較する第2の比較ステップとを備えることを特徴とする。
【発明の効果】
【0028】
1つのコンテンツ鍵の改竄をチェックするためには、1つのコンテンツ鍵についての改竄チェックと、全体のコンテンツ鍵に対する検証用データ(ハッシュ値、チェック値等)に対する改竄チェックを行えば良いだけであるので、処理量が著しく小さくなり、処理速度が高速化する。
【0029】
ネットワークを介した配信でコンテンツ鍵が追加・削除された場合でも、同一のドメイン鍵で復号化される全てのコンテンツ鍵に対して検証用データを生成しなおす必要はなく、追加されたコンテンツ鍵に対する検証用データと、検証用データに対する最終の検証用データを生成すればよいだけである。
【0030】
一般にセキュリティが保たれた領域は、実装上及び利便上の理由から、ターゲット機器が有する記憶領域に対して決められた小さな領域しか設けられない。したがって、最終の検証用データだけをセキュリティが保たれた領域に格納するようにすれば、セキュリティが保たれた領域を大きくしなくとも良いので好ましい。
【発明を実施するための最良の形態】
【0031】
以下、この発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一または相当部分には同一の符号を付しその説明は繰り返さない。
(第1の実施形態)
<全体構成>
この発明の第1の実施形態による機密情報処理システムの全体構成を図1に示す。この
機密情報処理システムは、ターゲット機器10と、ホスト機器11とから構成される。ターゲット機器10は、例えば、SDカードに代表されるメモリカードのような記憶媒体であり、機密情報を含むデータを格納する。ホスト機器11は、ターゲット機器10が接続されて、ターゲット機器10との間で機密情報の読み出し/書き込みを行う。
【0032】
<ターゲット機器の格納領域>
ターゲット機器10の格納領域は、システム領域101と、保護領域102と、通常領域103とが設けられている。システム領域101は、ターゲット機器10とホスト機器11との間で認証を実行するための情報(例えば、認証鍵)が格納されている。ホスト機器11は、システム領域101へのアクセスが許可された所定の処理でなければ、システム領域101にアクセスすることができない。保護領域102は、ユーザが任意にアクセスすることができず、かつ、認証に成功して初めてアクセスすることができる領域である。通常領域103は、ユーザが任意にアクセスすることができる領域である。保護領域102には暗号化されたドメイン鍵が格納されており、通常領域103には暗号化されたコンテンツ鍵および暗号化されたコンテンツが格納されている。
【0033】
<ホスト機器の内部構成>
ホスト機器11は、内部バス111と、ターゲットI/F部112と、機密情報処理部113と、ホストI/F部114と、ホストCPU115と、RAM116とを含む。ターゲットI/F部112は、ターゲット機器10との間でデータの入出力を行う。機密情報処理部113は、所定のシーケンスに従って、ターゲット機器10との間で認証を実行する。また、機密情報処理部113は、ターゲット機器10に格納された機密情報の暗号化/復号化を実行する。ホストI/F部114は、ターゲットI/F部112との間,機密情報処理部113との間,およびホストCPU115との間で、データの入出力を行う。ホストCPU115は、機密情報処理部113に所定のシーケンスを実行させる。RAM116は、ホストCPU115や機密情報処理部113に、データを一時格納しておくためのワーク領域として使用される。
【0034】
ターゲット機器10とホスト機器11との間において機密情報の読み出し/書き込みが行われる場合には、ターゲット機器10とホスト機器11との間で認証を行う必要がある。この場合、ホストCPU115によって機密情報処理部113が起動され、機密情報処理部113が認証処理を行う。認証が成功すると、ホスト機器11では、ターゲット機器10からターゲットI/F部112を介して機密情報が読み出され、機密情報処理部113によって復号化される。
【0035】
機密情報処理部113は、秘匿されたハードウェアである。また、機密情報処理部113は、ホストCPU115によって起動されると、セキュリティの確保された,あるいはセキュリティの必要の少ない所定のシーケンスのみを実行する。
【0036】
<全体の処理の流れ>
次に、ホスト機器11がターゲット機器10に格納された暗号化コンテンツを復号化する処理について図2を参照しつつ説明する。
【0037】
〔ステップST11〕
まず、ターゲット機器10がホスト機器11に接続されると、ホスト機器11は、ターゲット機器10に格納された認証鍵を読み出す。
【0038】
〔ステップST12〕
次に、ホスト機器11は、ターゲット機器10から読み出した認証鍵と自らが有するホスト用認証鍵とを用いて、認証処理を実行する。
【0039】
〔ステップST13〕
認証処理の結果、認証に失敗した場合には、ホスト機器11は、不正なアクセスであると判断して異常終了を実行する。一方、ホスト機器11が認証に成功した場合には、ステップST14へ進む。
【0040】
〔ステップST14〕
次に、ホスト機器11は、ターゲット機器10から読み出した認証鍵と自らが有するホスト用認証鍵とに基づいて、認証中間鍵を生成する。生成された認証中間鍵は、機密情報処理部113内の認証中間鍵格納領域に格納される。これによって、ターゲット機器10とホスト機器11との間で以降のやり取りを行う準備が完了する。
【0041】
〔ステップST15〕
次に、ホスト機器11は、ターゲット機器10に格納された暗号化コンテンツの復号化をユーザなどから要求されているか否かを判断する。要求されていると判断すると、ステップST16へ進む。
【0042】
〔ステップST16〕
次に、ホスト機器11は、暗号化コンテンツの復号化に必要となる機密情報(暗号化コンテンツ鍵、暗号化ドメイン鍵、およびそれに付随する情報)をターゲット機器10から読み出す。具体的な処理としては、ホスト機器11は、まず暗号化コンテンツに付随する情報からコンテンツIDを抽出し、コンテンツIDに基づいて、暗号化コンテンツの復号化に必要となるコンテンツ鍵を特定する。コンテンツIDとコンテンツ鍵との対応関係はテーブルとして準備されている。次に、ホスト機器11は、特定されたコンテンツ鍵に基づいてターゲット機器10内の通常領域103に格納された鍵対応テーブルを参照して、必要となるドメイン鍵を特定する。コンテンツ鍵とドメイン鍵とが特定されると、必要となる鍵情報が読み出される。
【0043】
〔ステップST17〕
次に、ホスト機器11は、ターゲット機器10の保護領域102に格納された暗号化ドメイン鍵を読み出す。次に、ホスト機器11は、ステップST14において生成された認証中間鍵を用いて、暗号化ドメイン鍵を復号化する。これにより、平文のドメイン鍵が生成される。
【0044】
〔ステップST18〕
次に、ホスト機器11は、ターゲット機器10の通常領域に格納された暗号化コンテンツ鍵を読み出す。次に、ホスト機器11は、暗号化コンテンツ鍵に対して改竄チェックを実行する。
【0045】
〔ステップST19〕
暗号化コンテンツ鍵の改竄が発見された場合には、ホスト機器11は、不正なアクセスであると判断して異常終了を実行する。一方、暗号化コンテンツ鍵の改竄が発見されなかった場合には、ステップST20へ進む。
【0046】
〔ステップST20〕
次に、ホスト機器11は、ステップST17において生成されたドメイン鍵を用いて、暗号化コンテンツ鍵を復号化する。これにより、ホスト機器11は、平文のコンテンツ鍵を取得する。
【0047】
〔ステップST21〕
次に、ホスト機器11は、ステップST20において取得した平文のコンテンツ鍵を用いて、暗号化コンテンツを復号化する。これにより、コンテンツが利用可能となる。
【0048】
<機密情報>
次に、ターゲット機器10に格納される機密情報について図3を参照しつつ説明する。保護領域102には、ドメイン鍵群UKUREが格納されている。通常領域には、鍵対応テーブルAddress Listと、コンテンツ鍵群TKURE(i)と、ハッシュリストHash List(i)とが格納されている。
【0049】
〔ドメイン鍵群〕
ドメイン鍵群UKUREは、n個(nは1以上の整数)の暗号化ドメイン鍵EncKu(1)〜EncKu(n)と、n個の暗号化ドメイン鍵管理情報EncUR[u](1)〜EncUR[u](n)とを含む。
【0050】
暗号化ドメイン鍵EncKu(1)〜EncKu(n)の各々には、複数の暗号化コンテンツ鍵(1つのコンテンツ鍵群)が対応付けられている。また、図4のように、暗号化ドメイン鍵EncKu(1)〜EncKu(n)は、認証中間鍵を用いて復号化されることによって、ドメイン鍵Ku(1)〜Ku(n)になる。ドメイン鍵Ku(1)〜Ku(n)の各々は、自己に対応付けられた複数のコンテンツ鍵の暗号化/復号化に利用される。つまり、1つのドメイン鍵を用いて、複数のコンテンツ鍵を暗号化/復号化することができる。
【0051】
暗号化ドメイン鍵管理情報EncUR[u](1)〜EncUR[u](n)は、暗号化ドメイン鍵EncKu(1)〜EncKu(n)に一対一で対応する。また、図4のように、暗号化ドメイン鍵管理情報EncUR[u](1)〜EncUR[u](n)は、認証中間鍵を用いて復号化されることによって、ドメイン鍵管理情報UR[u](1)〜UR[u](n)になる。さらに、図3のように、暗号化ドメイン鍵管理情報EncUR[u](1)〜EncUR[u](n)の各々の所定位置には、連結ハッシュ値が格納されている。連結ハッシュ値は、その暗号化ドメイン鍵管理情報に対応するコンテンツ鍵群に基づいて生成されている。例えば、暗号化ドメイン鍵管理情報EncUR[u](1)〜EncUR[u](n)のうちi番目の暗号化ドメイン鍵管理情報EncUR[u](i)(iは整数,かつ,1≦i≦n)の所定位置には、連結ハッシュ値Hash(i)が格納される。この連結ハッシュ値Hash(i)は、コンテンツ鍵群TKURE(i)に基づいて生成されている。
【0052】
なお、図3では、暗号化ドメイン鍵EncKu(i)に対応するコンテンツ鍵群TKURE(i)のみしか図示していないが、暗号化ドメイン鍵EncKu(i)以外の暗号化ドメイン鍵EncKu(1)〜EncKu(n)の各々にもコンテンツ鍵群が一対一で対応していてもよい。
【0053】
〔コンテンツ鍵群〕
コンテンツ鍵群TKURE(i)は、ドメイン鍵Ku(i)を用いて暗号化/復号化することができるコンテンツ鍵およびそのコンテンツ鍵に付随する情報の集合である。コンテンツ鍵群TKURE(i)は、m個(mは1以上の整数)の暗号化コンテンツ鍵EncKt(i-1)〜EncKt(i-m)と、m個の暗号化コンテンツ鍵管理情報EncUR[t](i-1)〜EncUR[t](i-m)と、m個の付加情報info(i-1)〜info(i-m)とを含む。
【0054】
図4のように、暗号化コンテンツ鍵EncKt(i-1)〜EncKt(i-m)は、ドメイン鍵Ku(i)を用いて復号化されることによって、コンテンツ鍵Kt(i-1)〜Kt(i-m)になる。コンテンツ鍵Kt(i-1)〜Kt(i-m)の各々は、自己に対応するコンテンツ(図示せず)の暗号化/復号化に用いられる。
【0055】
コンテンツ鍵管理情報UR[t](i-1)〜UR[t](i-m)は、コンテンツ鍵Kt(i-1)〜Kt(i-m)に一対一で対応する。また、図4のように、暗号化コンテンツ鍵管理情報EncUR[t](i-1)〜EncUR[t](i-m)は、ドメイン鍵Ku(i)を用いて復号化されることによって、コンテンツ鍵管理情報UR[t](i-1)〜UR[t](i-m)になる。
【0056】
付加情報info(i-1)〜info(i-m)は、暗号化コンテンツ鍵EncKt(i-1)〜EncKt(i-m)に一対一で対応する。
【0057】
〔鍵対応テーブル〕
鍵対応テーブルAddress Listには、n個の暗号化ドメイン鍵のアドレスKu addr(1)〜Ku addr(n)とn個のコンテンツ鍵テーブルKt addr list(1)〜Kt addr list(n)とが対応付けられている。コンテンツ鍵テーブルの各々は、複数のコンテンツ鍵テーブルのうちいずれか1つに対応する。また、コンテンツ鍵テーブルの各々には、対応するコンテンツ鍵群に含まれる暗号化コンテンツ鍵のアドレスが書き込まれている。例えば、ドメイン鍵Ku(i)のアドレスKu addr (i)に対応するコンテンツ鍵テーブルKt addr list(i)を参照して、ドメイン鍵Ku(i)に対応するコンテンツ鍵群TKURE(i)(詳しくは、暗号化コンテンツ鍵EncKt(i-1)〜EncKt(i-m))を検索することができる。このように、鍵管理テーブルAddress Listを参照することによって、ドメイン鍵とコンテンツ鍵との対応関係を素早く検索することができる。
【0058】
〔ハッシュリスト〕
ハッシュリストHash List(i)は、コンテンツ鍵群TKURE(i)に対応する。また、ハッシュリストHash List(i)は、m個のハッシュ値Hash(i-1)〜Hash(i-m)を含む。ハッシュ値Hash(i-1)〜Hash(i-m)は、暗号化コンテンツ鍵EncKt(i-1)〜EncKt(i-m)に一対一で対応する。なお、図3では、コンテンツ鍵群TKURE(i)に対応するハッシュリストHash List(i)のみしか図示していないが、コンテンツ鍵群TKURE(i)以外のコンテンツ鍵群(図示せず)の各々に対応するハッシュリストも存在していてもよい。
【0059】
<ハッシュリストの生成手順>
次に、図3に示したハッシュリストHash List(i)の生成手順について図5を参照しつつ説明する。
【0060】
〔ステップST101−1〕
まず、暗号化コンテンツ鍵EncKt(i-1),平文の付加情報info(i-1),および暗号化コンテンツ鍵管理情報EncUR[t](i-1)は、1つに連結される。暗号化コンテンツ鍵EncKt(i-2)〜EncKt(i-m)の各々においても、同様に、その暗号化コンテンツ鍵,その暗号化コンテンツ鍵に付随する付加情報,および暗号化コンテンツ鍵管理情報が、1つに連結される。これにより、m個の連結データが生成される。
【0061】
〔ステップST101−2〕
次に、暗号化コンテンツ鍵EncKt(i-1)に対応する連結データに対して、ハッシュ演算が実行される。これにより、ハッシュ値Hash(i-1)が算出される。暗号化コンテンツ鍵EncKt(i-2)〜EncKt(i-m)の各々に対応する連結データにおいても、同様に、その連結データに対してハッシュ演算が実行される。このようにして、m個のハッシュ値Hash(i-1)〜Hash(i-m)が算出される。
【0062】
〔ステップST101−3〕
次に、算出されたm個のハッシュ値Hash(i-1)〜Hash(i-m)は、1つのリストにまとめられる。これにより、コンテンツ鍵群TKURE(i)に対応するハッシュリストHash List(i)が完成する。
【0063】
<連結ハッシュ値の生成手順>
次に、図3に示した連結ハッシュ値Hash(i)の生成手順について図5を参照しつつ説明する。
【0064】
〔ステップST101−4〕
まず、ハッシュリストHash List(i)に存在するm個のハッシュ値Hash(i-1)〜Hash(i-m)は、1つに連結される。これにより、1つのハッシュ連結データが生成される。
【0065】
〔ステップST101−5〕
次に、ステップST101−4において生成されたハッシュ連結データに対して、ハッシュ演算が実行される。これにより、連結ハッシュ値Hash(i)が算出される。
【0066】
〔ステップST101−6〕
次に、ステップST101−5において算出された連結ハッシュ値Hash(i)は、暗号化ドメイン鍵管理情報EncUR[u](i)の所定位置に格納する。暗号化ドメイン鍵管理情報EncUR[u](i)は、ハッシュリストHash List(i)に対応する。
なお、ドメイン鍵に既存のものを用い、コンテンツ鍵を更新・追加・削除した結果として、暗号化ドメイン鍵管理情報EncUR[u](i)を更新する場合は、暗号化ドメイン鍵管理情報EncUR[u](i)は、連結ハッシュ値Hash(i)を格納する前に一旦復号化されて、ドメイン鍵管理情報UR[u](i)になる。そして、ドメイン鍵管理情報UR[u](i)に連結ハッシュ値Hash(i)が格納されると、そのドメイン鍵管理情報UR[u](i)は、暗号化されて暗号化ドメイン鍵管理情報EncUR[u](i)に戻る。
【0067】
ただし、ドメイン鍵を新規作成する場合は、ドメイン鍵管理情報UR[u](i)も新規作成されることになり、その場合、一旦復号化の処理を行う必要はなく、ドメイン鍵管理情報UR[u](i)に連結ハッシュ値Hash(i)を格納し、そのドメイン鍵管理情報UR[u](i)を暗号化して暗号化ドメイン鍵管理情報EncUR[u](i)を生成する。
【0068】
<コンテンツ鍵の改竄チェック>
次に、ホスト機器11がターゲット機器10に格納されたコンテンツ鍵の改竄をチェックする処理(ステップST22における処理)について図6を参照しつつ説明する。ここでは、ホスト機器11は、ドメイン鍵Ku(i)に対応するコンテンツ鍵Kt(i-1)〜Kt(i-m)のうちj番目(jは整数,かつ,1≦j≦m)のコンテンツ鍵Kt(i-j)の改竄をチェックする。
【0069】
〔ステップST102−1〕
次に、ホスト機器11は、暗号化コンテンツ鍵EncKt(i-j)とそれに付随する平文の付加情報info(i-j)および暗号化コンテンツ鍵管理情報EncUR[t](i-j)とを連結する。これにより、1つの連結データが生成される。
【0070】
〔ステップST102−2〕
次に、ホスト機器11は、ステップST102−1において生成された連結データに対してハッシュ演算を実行して、ハッシュ値Hash(i-j)を算出する。
【0071】
〔ステップST102−3〕
次に、ホスト機器11は、ステップST102−2において算出されたハッシュ値Hash(i-j)とターゲット機器10の通常領域103に格納されたハッシュリストHash List(i)内のハッシュ値Hash(i-j)とを比較する。
【0072】
〔ステップST102−4〕
ステップST102−3における比較の結果、ステップST102−2において算出されたハッシュ値Hash(i-j)とハッシュリストHash List(i)のハッシュ値Hash(i-j)とが不一致であると判断すると、ホスト機器11は、暗号化コンテンツ鍵EncKt(i-j),付加情報info(i-j),あるいは暗号化コンテンツ鍵管理情報EncUR[t](i-j)が改竄されていると判断して、異常終了を実行する。一方、両者が一致すると判断された場合には、ステップST102−5へ進む。
【0073】
〔ステップST102−5〕
次に、ホスト機器11は、ターゲット機器10に格納されたハッシュリストHash List(i)の中からコンテンツ鍵Kt(i-j)に対応するハッシュ値Hash(i-j)を除いた(m−1)個のハッシュ値Hash(i-1)〜Hash(i-(j-1)),Hash(i-(j+1))〜Hash(i-m)を取得する。つまり、ホスト機器11は、暗号化ドメイン鍵EncKu(i)に対応する暗号化コンテンツ鍵EncKt(i-1)〜EncKt(i-m)のうち暗号化コンテンツ鍵EncKt(i-j)以外の(m−1)個の暗号化コンテンツ鍵に対しては、ハッシュ演算を実行しない。次に、ホスト機器11は、ハッシュ値Hash(i-j)の直前に位置するハッシュ値Hash(i-(j-1))とハッシュ値Hash(i-j)の直後に位置するハッシュ値Hash(i-(j+1))との間にステップST102−2において算出されたハッシュ値Hash(i-j)を埋め込む。そして、ホスト機器11は、それらのハッシュ値Hash(i-1)〜Hash(i-(j-1)),Hash(i-j),Hash(i-(j+1))〜Hash(i-m)を1つに連結する。これにより、ハッシュ連結データが生成される。つまり、このハッシュ連結データでは、ハッシュリストHash List(i)に存在するm個のハッシュ値Hash(i-1)〜Hash(i-m)のうちハッシュ値Hash(i-j)がステップST102−2において算出されたハッシュ値Hash(i-j)に置換されている。
【0074】
〔ステップST102−6〕
次に、ホスト機器11は、ステップST102−5において生成されたハッシュ連結データに対してさらにハッシュ演算を行い、連結ハッシュ値Hash(i)を算出する。次に、ステップST102−9へ進む。なお、ハッシュ値Hash(i-j)を置換する必要は必ずしもなく、すでにハッシュリストHash List(i)内のハッシュ値との比較によって正当性は検証されているので、ハッシュリストHash List(i)をそのままハッシュ演算して連結ハッシュ値Hash(i)を算出しても構わない。
【0075】
〔ステップST102−7〕
一方、ホスト機器11は、鍵対応テーブルAddress Listを参照して、暗号化コンテンツ鍵EncKt(i-j)の復号化に必要な暗号化ドメイン鍵EncKu(i)を検出する。そして、ホスト機器11は、認証中間鍵を用いて、その検出した暗号化ドメイン鍵EncKu(i)および暗号化ドメイン鍵管理情報EncUR[u](i)を復号化する。これにより、ドメイン鍵Ku(i)およびドメイン鍵管理情報UR[u](i)が生成される。
【0076】
〔ステップST102−8〕
次に、ホスト機器11は、ドメイン鍵管理情報UR[u](i)の中から所定のビット位置に格納された連結ハッシュ値Hash(i)を抽出する。次に、ステップST102−9へ進む。
【0077】
〔ステップST102−9〕
次に、ホスト機器11は、ステップST102−6において算出した連結ハッシュ値Hash(i)とステップST102−8において抽出した連結ハッシュ値Hash(i)とを比較する。
【0078】
〔ステップST102−10〕
ステップST102−9における比較の結果、ステップST102−6において算出した連結ハッシュ値Hash(i)とステップST102−8において抽出した連結ハッシュ値Hash(i)とが不一致であると判断すると、ホスト機器11は、暗号化コンテンツ鍵EncKt(i-j),付加情報info(i-j),あるいは暗号化コンテンツ鍵管理情報EncUR[t](i-j)が改竄されていると判断して、異常終了を実行する。一方、両者が一致すると判断された場合には、ステップST102−11へ進む。
【0079】
〔ステップST102−11〕
次に、ホスト機器11は、コンテンツ鍵の正当性が保証されたものとして、ステップST102−7において生成されたドメイン鍵Ku(i)を用いて、暗号化コンテンツ鍵EncKt(i-j)および暗号化コンテンツ鍵管理情報EncUR[t](i-j)を復号化する。これにより、ホスト機器11は、平文のコンテンツ鍵Kt(i-j)および平文のコンテンツ鍵管理情報UR[t](i-j)を取得する。
【0080】
このような処理によって得られた平文のコンテンツ鍵Kt(i-j)を用いて、ホスト機器11は、暗号化されたコンテンツを復号化する。
【0081】
以上のように、本実施形態においては、1つのコンテンツ鍵に関して改竄のチェックを実行するときに、1つの暗号化コンテンツ鍵およびそれに付随する情報からなる連結データに対するハッシュ演算と、ハッシュリストに存在するハッシュ値からなる連結データに対するハッシュ演算とを実行する。この改竄チェック方法によれば、図19に示した改竄チェック方法と比較すると、処理量が著しく小さくすることができ、処理速度を高速化することができる。
【0082】
また、今後は、ネットワークを介した配信によってコンテンツ鍵を追加したり、削除したりすることも考えられる。本実施形態においては、コンテンツ鍵が追加された場合には、その追加されたコンテンツ鍵に対してハッシュ演算を実行してハッシュ値を算出し、その算出したハッシュ値をハッシュリストに追加すれば(ステップST101−1〜ST101−3における処理を実行すれば)、ハッシュリストを更新することができる。また、更新したハッシュリストに存在する複数のハッシュ値からなる連結データに対してハッシュ演算を実行すれば(ステップST101−4,ST101−5における処理を実行すれば)、連結ハッシュ値を更新することも可能である。一方、コンテンツ鍵が削除された場合には、削除したコンテンツ鍵に対応するハッシュ値をハッシュリストから削除すれば、ハッシュリストを更新することができる。また、更新したハッシュリストに存在する複数のハッシュ値からなる連結データに対してハッシュ演算を実行すれば(ステップST101−4,ST101−5における処理を実行すれば)、連結ハッシュ値を更新することも可能である。
【0083】
<エントリー>
ターゲット機器によっては、コンテンツ鍵が格納される領域を、エントリーという形で、予め確保しているものもある。エントリーの各々は、複数のドメイン鍵のうちいずれか1つに対応付けられる。つまり、ドメイン鍵の各々には、複数のエントリーが対応付けられる。エントリーに格納される暗号化コンテンツ鍵は、そのエントリーに対応付けられたドメイン鍵によって復号化することができる。このような場合には、各々のエントリーに対応するハッシュ値をまとめたハッシュリストという概念が生じる。すなわち、コンテンツ鍵が実際に格納されているか否かに関わらず、同一のドメイン鍵に対応付けられた全てのエントリーについてのハッシュ値をハッシュリストとして通常領域103に格納してもよい。また、同一のドメイン鍵に対応付けられた全てのエントリーのハッシュ値を1つに連結して、その連結データに対してハッシュ演算を実行してハッシュ値を算出し、その算出したハッシュ値をドメイン鍵管理情報に格納してもよい。もちろん、処理量を軽減するためには、ハッシュ演算の演算量が少ない方が好ましい。したがって、コンテンツ鍵が実際に格納されているエントリーのみにハッシュ演算を実行することによってハッシュリストを生成し、そのハッシュリストのハッシュ値を連結したものに対してハッシュ演算を実行することによって算出されるハッシュ値をドメイン鍵管理情報に格納する方が好ましい。
【0084】
<改変例>
本実施形態について様々な改変例が考えられるが、代表例として以下の3つの改変例を開示する。
【0085】
(1)暗号化コンテンツは、必ずしも暗号化コンテンツ鍵を格納するターゲット機器と同一のターゲット機器内に格納されている必要はなく、別の記録媒体に格納されるものであっても良い。その場合には、ホスト機器は、その別の記録媒体に格納された暗号化コンテンツをネットワーク等を介して取得し、本実施形態の改竄チェック方法によって正当性が保証されたコンテンツ鍵を用いてその暗号化コンテンツを復号化することになる。
【0086】
(2)付加情報は、暗号化されておらず、機密性も比較的低い情報である。したがって、ハッシュ演算の対象から除外しても構わない。例えば、暗号化コンテンツ鍵EncKt(i-j)および暗号化コンテンツ鍵管理情報EncUR[t](i-j)からなる連結データに対してハッシュ演算を実行することによって、ハッシュ値Hash(i-j)を算出しても構わない。
【0087】
(3)第1の実施形態では、同一のドメイン鍵で復号化されるコンテンツ鍵の集合(コンテンツ鍵群TKURE(i))に対して1つのハッシュリストHash List(i)が設けられている構成であるが、1つのコンテンツ鍵群に対してP個(Pは2以上の整数)の部分集合ハッシュリストおよび1つの全体集合ハッシュリストを設けることも可能である。ここで、部分集合ハッシュリストおよび全体集合ハッシュリストについてコンテンツ鍵群TKURE(i)を例に挙げて図7を参照しつつ説明する。ここでは、ドメイン鍵Ku(i)を用いて復号化することができる複数の暗号化コンテンツ鍵(コンテンツ鍵群TKURE(i)に含まれるm個の暗号化コンテンツ鍵EncKt(i-1)〜EncKt(i-m))は、P個(Pは2以上の整数)の部分集合に分割される。P個の部分集合には、P個の部分集合ハッシュリストHash List(i-Gr1)〜Hash List(i-GrP)が一対一で対応する。例えば、j番目のコンテンツ鍵Kt(i-j)からk番目(kは整数,かつ,j<k≦m)のコンテンツ鍵Kt(i-K)までの部分集合には、部分集合ハッシュリストHash List (i-GrJ)が対応する(Jは整数,かつ,1≦J≦P)。また、部分集合ハッシュリストHash List(i-GrJ)は、(k−j)個のハッシュ値Hash(i-j)〜Hash(i-k)を含む。また、部分集合ハッシュリストHash List(i-Gr1)〜Hash List(i-GrP)は、全体集合ハッシュリストHash List(i-ALL)に対応付けられる。全体集合ハッシュリストHash List(i-ALL)は、P個の部分集合ハッシュリストHash List(i-Gr1)〜Hash List(i-GrP)に一対一で対応するP個の部分ハッシュ値Hash(i-Gr1)〜Hash(i-GrP)を含む。全体ハッシュ値ALL Hash(i)は、全体集合ハッシュリストHash List(i-ALL)に基づいて生成される。このような構成にすれば、暗号化コンテンツ鍵EncKt(i-j)について改竄チェックを実行する場合、暗号化コンテンツ鍵EncKt(i-j)と暗号化コンテンツ鍵管理情報EncUR[t](i-j)と付加情報info(i-j)とからなる連結データに対するハッシュ演算(ハッシュ演算1),コンテンツ鍵Kt(i-j)が属する部分集合に対応する部分集合ハッシュリストHash List(i-GrJ)に対するハッシュ演算(ハッシュ演算2),および全体集合ハッシュリストHash List(i-ALL)に対するハッシュ演算(ハッシュ演算3)を実行することになる。ハッシュ演算2とハッシュ演算3とをあわせた処理量は、図5に示した処理における処理量よりも小さい。したがって、さらなる処理の高速化を期待できる。
【0088】
(第2の実施形態)
この発明の第2の実施形態では、コンテンツ鍵およびコンテンツ鍵管理情報は、連鎖暗号方式によって暗号化される。
【0089】
<連鎖暗号方式>
ここで、連鎖暗号方式(Cipher Block Chaining)による暗号化方法について図8を参照しつつ説明する。なお、ここでは、暗号化の対象がコンテンツ鍵Kt(i-j)およびコンテンツ鍵管理情報UR[t](i-j)であるものとする。
【0090】
〔暗号化処理〕
まず、コンテンツ鍵Kt(i-j)およびコンテンツ鍵管理情報UR[t](i-j)は、1つに連結された後、先頭から順番に8バイト毎に分割されて、「データ1」,「データ2」,…,「データX」になる(Xは2以上の整数)。なお、8バイトではなく任意に分割され得ることはいうまでもない。
【0091】
次に、MSB(Most significant bit または Most Significant Byte)側の最初の8バイトである「データ1」は、ドメイン鍵Ku(i)を用いて暗号化されて「暗号化データ1」になる。次に、「データ1」に対する暗号化の中間値1に所定演算が実行されて、連鎖鍵1が生成される。次に、「データ1」の1つ後ろに位置する「データ2」は、連鎖鍵1を用いて暗号化されて「暗号化データ2」になる。次に、「データ2」に対する暗号化の中間値2に所定演算が実行されて、連鎖鍵2が生成される。このように、先頭の8バイトである「データ1」は、ドメイン鍵Ku(i)を用いて暗号化される。また、2番目以降の8バイトデータの各々は、1つ前の8バイトデータについての暗号化の結果を利用して順次暗号化される。
【0092】
MSBから数えて最後の8バイト(つまり、LSB(Least Significant Bit または Least Significant Byte))である「データX」まで上述の暗号化処理が繰り返されることにより、「データ1」〜「データX」は、「暗号化データ1」〜「暗号化データX」になる。この「暗号化データ1」〜「暗号化データX」の集合が、暗号化コンテンツ鍵EncKt(i-j)および暗号化コンテンツ鍵管理情報EncUR[t](i-j)の集合となる。
【0093】
〔復号化処理〕
次に、連鎖暗号方式による復号化方法について説明する。
【0094】
まず、暗号化コンテンツ鍵EncKt(i-j)および暗号化コンテンツ鍵管理情報EncUR[t](i-j)の集合は、先頭から順番に8バイト毎に分割されて、「暗号化データ1」,「暗号化データ2」,…,「暗号化データX」になる。次に、「暗号化データ1」は、ドメイン鍵Ku(i)を利用して復号化されて、「データ1」になる。次に、「暗号化データ2」は、「暗号化データ1」の復号化の結果を利用して復号化されて、「データ2」になる。このように、先頭の8バイトである「暗号化データ1」は、ドメイン鍵Ku(i)を利用して復号化される。2番目以降の暗号化データの各々は、1つ前の暗号化データについての復号化の結果を利用して順次復号化される。
【0095】
このような連鎖暗号方式では、部分毎のデータ(8バイトデータ毎に)が連鎖しながら暗号化/復号化されていく。つまり、このような連鎖暗号方式は、復号化の際に何れかの段階で復号化に失敗すると、その段階以降の暗号化データの全てが正常に復号化されないという特徴を有する。したがって、例えば、最後の8バイト(LSB)である暗号化データXの復号化に成功すれば、全てのデータが正当であることが保証される。
【0096】
また、このような連鎖暗号方式では、同一のデータを暗号化する場合であっても、事前に暗号化されたデータが異なっている場合には暗号化の結果が異なるという特徴を有する。
【0097】
<構成>
以上を踏まえて、この発明の第2の実施形態による機密情報処理システムについて説明する。本実施形態による機密情報システムの全体構成は、図1に示したものと同様である。ただし、ターゲット機器10に格納される機密情報は、図3に示したものとは異なる。
【0098】
<機密情報>
本実施形態において、ターゲット機器10に格納される機密情報を図9に示す。保護領域102には、ドメイン鍵群UKUREが格納される。通常領域103には、鍵対応テーブルAddress Listと、コンテンツ鍵群TKURE(i)とが格納される。
【0099】
〔ドメイン鍵群〕
ドメイン鍵群UKUREは、図3と同様に、n個の暗号化ドメイン鍵EncKu(1)〜EncKu(n)と、n個の暗号化ドメイン鍵管理情報EncUR[u](1)〜EncUR[u](n)とを含む。また、暗号化ドメイン鍵管理情報EncUR[u](1)〜EncUR[u](n)の各々の所定位置には、連鎖ハッシュ値が格納される。連鎖ハッシュ値は、その暗号化ドメイン鍵管理情報に対応するコンテンツ鍵群に基づいて生成されている。例えば、暗号化ドメイン鍵管理情報EncUR[u](i)の所定位置には連鎖ハッシュ値Chain Hash(i)が格納されている。連鎖ハッシュ値Chain Hash(i)は、コンテンツ鍵群TKURE(i)に基づいて生成されている。
【0100】
なお、図9では、暗号化ドメイン鍵EncKu(i)に対応するコンテンツ鍵群TKURE(i)のみしか図示していないが、暗号化ドメイン鍵EncKu(i)以外の暗号化ドメイン鍵の各々にもコンテンツ鍵群が対応していてもよい。
【0101】
〔コンテンツ鍵群〕
コンテンツ鍵群TKURE(i)は、図3に示したコンテンツ鍵群TKURE(i)に加えて、m個の暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)を含む。暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)は、暗号化コンテンツ鍵EncKt(i-1)〜EncKt(i-m)に一対一で対応する。また、付加情報info(i-1)〜info(i-m)の各々には、暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)のうち自己に対応するチェック値が平文の状態で格納されている(図9では、代表としてチェック値Check(i-j)のみを図示している。)。例えば、暗号化チェック値EncCheck(i-j)が付随する暗号化コンテンツ鍵EncKt(i-j)の付加情報info(i-j)には、平文のチェック値Check(i-j)が格納されている。また、チェック値Check(i-j)は、指定バイト(所定のビット位置を示す情報)に従って、対応する付加情報info(i-j)の所定位置に格納される。
【0102】
鍵対応テーブルAddress Listは、図3に示した鍵対応テーブルAddress Listと同様である。
【0103】
<コンテンツ鍵およびそれに付随する情報の暗号化>
次に、コンテンツ鍵,コンテンツ鍵管理情報,チェック値の暗号化処理について説明する。ここでは、コンテンツ鍵Kt(i-j),コンテンツ鍵管理情報UR[t](i-j),チェック値Check(i-j)を例に挙げて説明する。
【0104】
まず、コンテンツ鍵Kt(i-j)とコンテンツ鍵管理情報UR[t](i-j)とが連結される。次に、指定バイトに従って、コンテンツ鍵Kt(i-j)およびコンテンツ鍵管理情報UR[t](i-j)からなる連結データの所定位置にチェック値Check(i-j)が埋め込まれる。この例ではLSBにチェック値を埋め込んでいる。次に、連鎖暗号方式に従って、チェックCheck(i-j)値が埋め込まれた連結データが、暗号化される。次に、暗号化された連結データを、暗号化コンテンツ鍵EncKt(i-j),暗号化コンテンツ鍵管理情報EncUR[t](i-j),および暗号化チェック値EncCheck(i-j)に分割する。
【0105】
このようにして、コンテンツ鍵,コンテンツ鍵管理情報,およびチェック値が暗号化される。また、チェック値が埋め込まれる位置が固定位置ではなく指定バイトによって指定されるので、チェック値が埋め込まれる位置を秘匿することができ、セキュリティが向上する。
【0106】
<連鎖ハッシュ値の生成手順>
次に、図9に示した連鎖ハッシュ値Chain Hash(i)の生成手順について図10を参照しつつ説明する。なお、ここでは、図10のように、暗号化コンテンツ鍵管理情報EncUR[t](i-1)〜EncUR[t](i-m)の各々は、対応する暗号化コンテンツ鍵の後段に位置するものとし、暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)の各々は、対応する暗号化コンテンツ鍵管理情報の後段に位置するものとする。また、暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)の各々は、8バイトデータであるものとする。
【0107】
〔ステップST201−1〕
まず、指定バイトに従って、コンテンツ鍵群TKURE(i)の中からm個の暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)が抽出される。例えば、暗号化コンテンツ鍵EncKt(i-j)とこれに付随する情報(暗号化コンテンツ鍵管理情報EncUR[t](i-j)および暗号化チェック値EncCheck(i-j))との集合の中から、所定位置のデータ(ここでは、暗号化コンテンツ鍵管理情報EncUR[t](i-j)の直後に存在する8バイトデータ)が抽出される。これにより、暗号化チェック値EncCheck(i-j)が抽出されたことになる。このような抽出処理を、暗号化コンテンツ鍵EncKt(i-1)〜EncKt(i-m)の各々に対して実行されることによって、m個の暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)が抽出される。
【0108】
〔ステップST201−2〕
次に、抽出されたm個の暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)が1つに連結される。これにより、1つのチェック値連結データが生成される。
【0109】
〔ステップST201−3〕
次に、ステップST201−2において生成されたチェック値連結データに対してハッシュ演算が実行される。これにより、連鎖ハッシュ値Chain Hash(i)が算出される。
【0110】
〔ステップST201−4〕
次に、ステップST201−3において算出された連鎖ハッシュ値Chain Hash(i)は、ドメイン鍵管理情報UR[u](i)の所定位置に格納され、その後、ドメイン鍵管理情報UR[u](i)は暗号化される。
【0111】
なお、ドメイン鍵に既存のものを用い、コンテンツ鍵を更新・追加・削除した結果として、暗号化ドメイン鍵管理情報EncUR[u](i)を更新する場合は、暗号化ドメイン鍵管理情報EncUR[u](i)は、連鎖ハッシュ値Chain Hash(i)を格納する前に一旦復号化されて、ドメイン鍵管理情報UR[u](i)になる。そして、ドメイン鍵管理情報UR[u](i)に連鎖ハッシュ値Chain Hash(i)が格納されると、そのドメイン鍵管理情報UR[u](i)は、暗号化されて暗号化ドメイン鍵管理情報EncUR[u](i)に戻る。
【0112】
ただし、ドメイン鍵を新規作成する場合は、ドメイン鍵管理情報UR[u](i)も新規作成されることになり、その場合、一旦復号化の処理を行う必要はなく、ドメイン鍵管理情報UR[u](i)に連鎖ハッシュ値Chain Hash(i)を格納し、そのドメイン鍵管理情報UR[u](i)を暗号化して暗号化ドメイン鍵管理情報EncUR[u](i)を生成する。 なお、チェック値は、また8バイトである必要はなく任意のバイト数でよい。
【0113】
<改竄チェック方法>
次に、図9に示したチェック値Check(i-1)〜Check(i-m)を利用した改竄チェック方法について図11を参照しつつ説明する。ここでは、暗号化コンテンツ鍵EncKt(i-j),暗号化コンテンツ鍵管理情報EncUR[t](i-j),および暗号化チェック値EncCheck(i-j)を例に挙げて説明する。
【0114】
〔ステップST202−1〕
まず、暗号化コンテンツ鍵EncKt(i-j),暗号化コンテンツ鍵管理情報EncUR[t](i-j),および暗号化チェック値EncCheck(i-j)が1つに連結される。これにより、1つの連結データが生成される。
【0115】
〔ステップST202−2〕
次に、連鎖暗号方式によって連結データが復号化される。これにより、コンテンツ鍵Kt(i-j),コンテンツ鍵管理情報UR[t](i-j),およびチェック値Check(i-j)からなる連結データが生成される。この連結データは、所定位置にチェック値Check(i-j)が埋め込まれた構成になっている。
【0116】
〔ステップST202−3〕
次に、指定バイトに従って、コンテンツ鍵Kt(i-j),コンテンツ鍵管理情報UR[t](i-j),およびチェック値Check(i-j)からなる連結データの中からチェック値Check(i-j)が抽出される。次に、ステップST202−5へ進む。
【0117】
〔ステップST202−4〕
一方、付加情報info(i-j)の所定位置に格納されたチェック値Check(i-j)が抽出される。次に、ステップST202−5へ進む。
【0118】
〔ステップST202−5〕
次に、ステップST202−3において抽出されたチェック値Check(i-j)とステップST202−4において抽出されたチェック値Check(i-j)とが比較される。
【0119】
このように、コンテンツ鍵Kt(i-1)〜Kt(i-m)の各々において、付加情報から抽出されたチェック値と復号化された連結データの中から抽出されたチェック値とを比較することによって、そのコンテンツ鍵の正当性が検証される。
【0120】
なお、チェック値は、コンテンツ鍵管理情報の直後に付加することが好ましい。つまり、コンテンツ鍵,コンテンツ鍵管理情報,チェック値で構成される連結データにおいて、その連結データのLSBがチェック値であることが好ましい。それは、連鎖暗号方式では、LSBをチェックすることによって復号化の対象となるデータ全体の正当性を検証することができるからである。
【0121】
<動作>
次に、本実施形態の機密情報処理システムによる動作について説明する。本実施形態の機密情報処理システムによる動作の全体の流れは、図2と同様であるが、コンテンツ鍵の改竄をチェックする処理(ステップST22)における詳細な処理が異なる。
【0122】
<コンテンツ鍵の改竄チェック>
本実施形態において、ホスト機器11がターゲット機器10に格納されたコンテンツ鍵の改竄をチェックする処理(ステップST22における処理)について図12を参照しつつ説明する。ここでは、ドメイン鍵Ku(i)に対応するコンテンツ鍵Kt(i-j)の改竄をチェックする。また、チェック値Check(i-j)は、コンテンツ鍵管理情報UR[t](i-j)の直後に付加された8バイトデータであるものとする。
【0123】
〔ステップST203−1〕
まず、ホスト機器11は、暗号化コンテンツ鍵EncKt(i-j),暗号化コンテンツ鍵管理情報EncUR[t](i-j),および暗号化チェック値EncCheck(i-j)を復号化する。これらは1つの連結データとして上述の連鎖暗号方式によって暗号化されているので、この連結データはMSB(最初の8バイト)から順番に復号化される。
【0124】
〔ステップST203−2〕
次に、ホスト機器11は、指定バイトに従って、復号化して平文になった連結データ(コンテンツ鍵Kt(i-j),コンテンツ鍵管理情報UR[t](i-j),およびチェック値Check(i-j)からなる連結データ)の中から8バイト分のデータを抽出する。なお、ここでは、チェック値Check(i-j)がコンテンツ鍵管理情報UR[t](i-j)の直後に付加されているので、指定バイトは、LSB(最後の8バイト)を示す。これにより、平文になった連結データの中からチェック値Check(i-j)が抽出されたことになる。次に、ステップST203−4へ進む。
【0125】
〔ステップST203−3〕
一方、ホスト機器11は、付加情報info(i-j)の中から8バイト分のデータを抽出する。これにより、付加情報info(i-j)の中からチェック値Check(i-j)が抽出されたことになる。
【0126】
〔ステップST203−4〕
次に、ホスト機器11は、ステップST203−2において抽出したチェック値Check(i-j)とステップST203−3において抽出したチェック値Check(i-j)とを比較する。このように、両者を比較することにより、コンテンツ鍵,コンテンツ鍵管理情報,およびチェック値からなる連結データのうちチェック値が埋め込まれた位置までのデータの正当性を検証することができる。
【0127】
〔ステップST203−5〕
ステップST203−4における比較の結果、ステップST203−2において抽出したチェック値Check(i-j)とステップST203−3において抽出したチェック値Check(i-j)とが一致しないと判断すると、ホスト機器11は、暗号化コンテンツ鍵EncKt(i-j),暗号化コンテンツ鍵管理情報EncUR[t](i-j),あるいは暗号化チェック値EncCheck(i-j)が改竄されていると判断して、異常終了を実行する。一方、両者が一致すると判断された場合には、ステップST203−6へ進む。
【0128】
〔ステップST203−6〕
次に、ホスト機器11は、指定バイトに従って、コンテンツ鍵群TKURE(i)の中からm個の暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)を抽出する。例えば、ホスト機器11は、指定バイトに従って、暗号化コンテンツ鍵EncKt(i-j),暗号化コンテンツ鍵管理情報EncUR[t](i-j),暗号化チェック値EncCheck(i-j)からなる連結データの中から8バイト分のデータを抽出する。これにより、暗号化チェック値EncCheck(i-j)が抽出されたことになる。ホスト機器11は、このような抽出処理を、各々の連結データに対して実行することによって、m個の暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)を抽出する。
【0129】
〔ステップST203−7〕
次に、ホスト機器11は、ステップST203−6において抽出した暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)を1つに連結する。これにより、1つのチェック値連結データが生成される。
【0130】
〔ステップST203−8〕
次に、ホスト機器11は、ステップST203−7において生成されたチェック値連結データに対してハッシュ演算を実行する。これにより、連鎖ハッシュ値Chain Hash(i)が算出される。次に、ステップST203−11へ進む。
【0131】
〔ステップST203−9〕
一方、ホスト機器11は、鍵対応テーブルAddress Listを参照して、暗号化コンテンツ鍵EncKt(i-j)の復号化に必要な暗号化ドメイン鍵EncKu(i)を検出する。そして、ホスト機器11は、認証中間鍵を用いて、その検出した暗号化ドメイン鍵EncKu(i)および暗号化ドメイン鍵管理情報EncUR[u](i)を復号化する。これにより、ホスト機器11は、ドメイン鍵Ku(i)およびドメイン鍵管理情報UR[u](i)を取得する。なお、復号化されたドメイン鍵はステップST203−1でコンテンツ鍵の復号化に使用される。
【0132】
〔ステップST203−10〕
次に、ホスト機器11は、ドメイン鍵管理情報UR[u](i)の中から所定のビット位置に格納された連鎖ハッシュ値Chain Hash(i)を抽出する。
【0133】
〔ステップST203−11〕
次に、ホスト機器11は、ステップST203−8において算出した連鎖ハッシュ値Chain Hash(i)とステップST203−10において抽出した連鎖ハッシュ値Chain Hash(i)とを比較する。
【0134】
〔ステップTS203−12〕
ステップST203−11における比較の結果、ステップST203−8において算出した連鎖ハッシュ値Chain Hash(i)とステップST203−10において抽出した連鎖ハッシュ値Chain Hash(i)とが一致しないと判断すると、ホスト機器11は、暗号化コンテンツ鍵EncKt(i-j),暗号化コンテンツ鍵管理情報EncUR[t](i-j),あるいは暗号化チェック値EncCheck(i-j)が改竄されていると判断して、異常終了を実行する。一方、両者が一致すると判断された場合には、コンテンツ鍵は正当なものであると判断されて、以降の処理を許可する。
【0135】
このような処理によって得られた平文のコンテンツ鍵Kt(i-j)を用いて、ホスト機器11は、暗号化されたコンテンツを復号化する。
【0136】
以上のように、1つのコンテンツ鍵に関して改竄のチェックを実行するときに、抽出されたチェック値の比較と、暗号化コンテンツ鍵の各々に対応するチェック値からなる連結データに対するハッシュ演算とを実行する。この改竄チェック方法によれば、図19に示した改竄チェック方法と比較すると、処理量が著しく小さくすることができ、処理速度を高速化することができる。
【0137】
また、今後は、ネットワークを介した配信によってコンテンツ鍵を追加したり、削除したりすることも考えられる。本実施形態においては、コンテンツ鍵が追加された場合には、その追加されたコンテンツ鍵に対応するチェック値を付加情報に格納するとともにそのチェック値をコンテンツ鍵およびコンテンツ鍵管理情報のいずれかに埋め込めんで暗号化すれば良い。このようにすれば、追加したコンテンツ鍵に対する改竄チェックを実行することができる。また、追加したコンテンツ鍵に対応する暗号化チェック値と既存の暗号化チェック値とからなる連結データに対してハッシュ演算を実行すれば(ステップST201−1〜ST201−4における処理を実行すれば)、連鎖ハッシュ値を更新することができる。一方、コンテンツ鍵が削除された場合には、削除されなかったコンテンツ鍵に対応する暗号化チェック値を抽出し、それらの暗号化チェック値を1つに連結して再度ハッシュ演算を実行すれば(ステップST201−1〜ステップST201−4における処理を実行すれば)、連鎖チェック値を更新することができる。
【0138】
さらに、本実施形態では、コンテンツ鍵の各々に対する改竄チェックと、すべてのチェック値に対する改竄チェックとを別々の方式で行っている。すなわち、各コンテンツ鍵の改竄チェックは、連鎖暗号方式を利用してチェック値を比較することによって実行される。一方、全体のチェック値に対する改竄チェックは、ハッシュ演算によって実行される。このように、改竄チェックの方法が異なっているので、セキュリティレベルを向上させることができる。
【0139】
さらに、チェック値は付加情報に格納されるために、コンテンツ鍵毎に異なるチェック値を設けることが可能である。これにより、セキュリティを向上させることができる。
【0140】
<エントリー>
なお、ターゲット機器によっては、コンテンツ鍵が格納される領域を、エントリーという形で、予め確保しているものもある。エントリーの各々には、ドメイン鍵が対応付けられる。エントリーに格納される暗号化コンテンツ鍵は、そのエントリー対応付けられたドメイン鍵によって復号化することができる。このような場合には、各々のエントリーに対応するチェック値を連結してハッシュ演算を実行するという概念が生じる。すなわち、コンテンツ鍵が実際に格納されているか否かに関わらず、同一のドメイン鍵が対応付けられた全てのエントリーの中から指定バイトに従って所定位置のデータを抽出し、その抽出したデータを1つに連結してハッシュ演算を実行し、算出されたハッシュ値をドメイン鍵管理情報に格納してもよい。もちろん、処理量を軽減するためにはハッシュ演算の演算量が少ない方が好ましい。したがって、コンテンツ鍵が実際に格納されているエントリーだけに指定バイトに従ったデータ抽出を実行し、その抽出したデータを1つに連結してハッシュ演算を実行し、算出されたハッシュ値をドメイン鍵管理情報に格納する方が好ましい。
【0141】
<改変例>
本実施形態について様々な改変例が考えられるが、代表例として以下の3つの改変例を開示する。
【0142】
(1)暗号化コンテンツは、必ずしも暗号化コンテンツ鍵を格納するターゲット機器と同一のターゲット機器内に格納されている必要はなく、別の記録媒体に格納されるものであっても良い。その場合には、ホスト機器は、その別の記録媒体に格納された暗号化コンテンツをネットワーク等を介して取得し、本実施形態の改竄チェック方法によって正当性が保証されたコンテンツ鍵を用いてその暗号化コンテンツを復号化することになる。
【0143】
(2)チェック値が埋め込まれる位置は、指定バイトで指定する必要は必ずしもなく、固定でも構わない。例えば、LSBの8バイトと固定して埋め込んでおけば、全てのデータ(コンテンツ鍵、コンテンツ鍵管理情報)の改竄をチェックすることが可能である。
【0144】
(3)チェック値は、必ずしも付加情報に埋め込まれる必要はなく、図13に示すように定数としてレジスタなどに格納しておいても良い。また、その定数がある規則性を有する場合には、レジスタを設けなくとも、演算器の組み合わせなどで実現することも可能である。一般に、レジスタを設けるよりも演算器の組み合わせによって定数を実装する方が、回路面積としては有利である。
【0145】
(第3の実施形態)
この発明の第3の実施形態では、全体チェック値を利用して改竄検出が実行される。連鎖暗号方式は図8に示したものと同様である。また、コンテンツ鍵Kt(i-j)およびそれに付随する情報UR[t](i-j)の改竄をチェックする方法は、第2の実施形態と同様である。
【0146】
<構成>
この発明の第3の実施形態による機密情報処理システムの全体構成は、図1に示したものと同様である。ただし、ターゲット機器10に格納される機密情報は、図3に示したものとは異なる。
【0147】
<機密情報>
本実施形態におけるターゲット機器10に格納される機密情報を図14に示す。保護領域102には、ドメイン鍵群UKUREが格納される。通常領域103には、鍵対応テーブルAddress Listと、コンテンツ鍵群TKURE(i)と、チェック値リストCheck List(i)と、全体チェック値Check(i)とが格納される。
【0148】
〔ドメイン鍵群〕
ドメイン鍵群UKUREは、図14と同様に、n個の暗号化ドメイン鍵EncKu(1)〜EncKu(n)と、n個の暗号化ドメイン鍵管理情報EncUR[u](1)〜EncUR[u](n)とを含む。また、暗号化ドメイン鍵管理情報EncUR[u](1)〜EncUR[u](n)の各々の所定位置には、暗号化全体チェック値が格納される。暗号化全体チェック値は、そのドメイン鍵に対応するコンテンツ鍵群と全体チェック値とに基づいて生成されている。例えば、暗号化ドメイン鍵管理情報EncUR[u](i)の所定位置には暗号化全体チェック値EncCheck(i)が格納されている。暗号化全体チェック値EncCheck(i)は、コンテンツ鍵群TKURE(i)および全体チェック値Check(i)に基づいて生成されている。
【0149】
なお、図14では、暗号化ドメイン鍵EncKu(i)に対応するコンテンツ鍵群TKURE(i)のみしか図示していないが、暗号化ドメイン鍵EncKu(i)以外の暗号化ドメイン鍵EncKu(1)〜EncKu(n)の各々にもコンテンツ鍵群が対応していてよい。
【0150】
〔コンテンツ鍵群および鍵対応テーブル〕
コンテンツ鍵群TKURE(i)および鍵対応テーブルAddress Listは、図9に示したものと同様である。
【0151】
〔チェック値リスト〕
チェック値リストCheck List(i)は、コンテンツ鍵群TKURE(i)に対応する。m個の二重暗号化チェック値Enc2Check(i-1)〜Enc2Check(i-m)を含む。二重暗号化チェック値Enc2Check(i-1)〜Enc2Check(i-m)は、コンテンツ鍵群TKURE(i)に含まれる暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)と一対一で対応する。なお、図14では、コンテンツ鍵群TKURE(i)に対応するチェック値リストCheck List(i)のみしか図示していないが、コンテンツ鍵群TKURE(i)以外のコンテンツ鍵群(図示せず)の各々に対応するハッシュリストも存在していても良い。
【0152】
〔全体チェック値〕
全体チェック値Check(i)は、コンテンツ鍵群TKURE(i)に対応する。なお、図14では、コンテンツ鍵群TKURE(i)に対応する全体チェック値Check(i)のみ図示されているが、コンテンツ鍵群TKURE(i)以外のコンテンツ鍵群(図示せず)の各々に対応する全体チェック値も存在していても良い。
【0153】
<チェック値リストおよび暗号化チェック値の生成手順>
次に、図14に示したチェック値リストCheck List(i)および暗号化全体チェック値EncCheck(i)の生成手順について図15を参照しつつ説明する。
【0154】
〔ステップST301−1〕
まず、指定バイトに従って、コンテンツ鍵群TKURE(i)の中からm個の暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)が抽出される。例えば、暗号化コンテンツ鍵EncKt(i-j),暗号化コンテンツ鍵管理情報EncUR(i-j),および暗号化チェック値EncCheck(i-j)からなる連結データの中から暗号化チェック値EncCheck(i-j)が抽出される。このようにして、m個の暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)が抽出される。
【0155】
〔ステップST301−2〕
次に、ステップST301−1において抽出されたm個の暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)と全体チェック値Check(i)とが1つに連結される。これにより、1つのチェック値連結データが生成される。
【0156】
〔ステップST301−3〕
次に、連鎖暗号方式にしたがって、ドメイン鍵Ku(i)を用いてチェック値連結データが暗号化される。これにより、二重暗号化チェック値Enc2Check(i-1)〜Enc2Check(i-m)と暗号化全体チェック値EncCheck(i)との集合が生成される。
【0157】
〔ステップST301−4〕
次に、二重暗号化チェック値Enc2Check(i-1)〜Enc2Check(i-m)と暗号化全体チェック値EncCheck(i)との集合の中から、暗号化全体チェック値EncCheck(i)が取り出される。これにより、二重暗号化チェック値Enc2Check(i-1)〜Enc2Check(i-m)の集合は、チェック値リストCheck List(i)になる。
【0158】
〔ステップST301−5〕
次に、ステップST301−4において取り出された暗号化全体チェック値EncCheck(i)はドメイン鍵管理情報UR[u](i)の所定位置に格納され、その後、ドメイン鍵管理情報UR[u](i)は暗号化される。
なお、ドメイン鍵に既存のものを用い、コンテンツ鍵を更新・追加・削除した結果として、暗号化ドメイン鍵管理情報EncUR[u](i)を更新する場合は、暗号化ドメイン鍵管理情報EncUR[u](i)は、暗号化全体チェック値EncCheck(i)を格納する前に一旦復号化されて、ドメイン鍵管理情報UR[u](i)になる。そして、ドメイン鍵管理情報UR[u](i)に暗号化全体チェック値EncCheck(i)が格納されると、そのドメイン鍵管理情報UR[u](i)は、暗号化されて暗号化ドメイン鍵管理情報EncUR[u](i)に戻る。
【0159】
ただし、ドメイン鍵を新規作成する場合は、ドメイン鍵管理情報UR[u](i)も新規作成されることになり、その場合、一旦復号化の処理を行う必要はなく、ドメイン鍵管理情報UR[u](i)に全体チェック値Check(i)を格納し、そのドメイン鍵管理情報UR[u](i)を暗号化して暗号化ドメイン鍵管理情報EncUR[u](i)を生成する。
【0160】
<改竄チェック方法>
次に、図14に示した全体チェック値Check(i)を利用した改竄チェック方法について図16を参照しつつ説明する。ここでは、暗号化ドメイン鍵EncKu(i),チェック値リストCheck List(i),および全体チェック値Check(i)を例に挙げて説明する。なお、図14に示したチェック値Check(i-1)〜Check(i-m)を利用した改竄チェック方法は、図11に示した方法と同様である。
【0161】
〔ステップST302−1〕
まず、暗号化ドメイン鍵管理情報EncUR[u](i)が復号化される。これにより、ドメイン鍵管理情報UR[u](i)が生成される。そして、ドメイン鍵管理情報UR[u](i)の所定位置に格納された暗号化全体チェック値EncCheck(i)が抽出される。
【0162】
〔ステップST302−2〕
次に、チェック値リストCheck List(i)に存在するm個の二重暗号化チェック値Enc2Check(i-1)〜Enc2Check(i-m)が1つに連結される。そして、ステップST302−1において抽出された暗号化全体チェック値EncCheck(i)は、それらm個の二重暗号化チェック値Enc2Check(i-1)〜Enc2Check(i-m)からなる連結データの後段にさらに連結される。つまり、二重暗号化チェック値Enc2Check(i-1)〜Enc2Check(i-m)と暗号化全体チェック値EncCheck(i)とからなる連結データにおいて、その連結データのLSBは、暗号化全体チェック値EncCheck(i)である。これにより、1つのチェック値連結データが生成される。
【0163】
〔ステップST302−3〕
次に、ドメイン鍵Ku(i)を用いて、連鎖暗号方式による復号化がチェック値連結データに対して実行される。これにより、m個の暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)と全体チェック値Check(i)との集合が生成される。
【0164】
〔ステップST302−4〕
次に、m個の暗号化チェック値EncCheck(i-1)〜EncCheck(i-m)と全体チェック値Check(i)との集合の中から所定位置のデータ(ここでは、その集合のLSBである8バイトデータ)が抽出される。これにより、全体チェック値Check(i)が抽出されたことになる。次に、ステップST302−6へ進む。
【0165】
〔ステップST302−5〕
一方、指定バイトに従って、ターゲット機器10の通常領域103に予め格納されている全体チェック値Check(i)が抽出される。次に、ステップST302−6へ進む。
【0166】
〔ステップST302−6〕
次に、ステップST302−4において抽出された全体チェック値Check(i)とステップST302−5において抽出された全体チェック値Check(i)とが比較される。ここで、両者が一致する場合チェック値リストCheck List(i)あるいは全体チェック値Check(i)に改竄がなかったものと判断される。一方、両者が一致しない場合チェック値リストCheck List(i)あるいは全体チェック値Check(i)が改竄されていると判断されて、異常終了が実行される。
【0167】
このようにして、チェック値リストCheck List(i)の正当性を検証することができる。チェック値リストが改竄されていなければ、暗号化コンテンツ鍵の改竄を検証することができる。例えば、暗号化コンテンツ鍵EncKt(i-j)の改竄について検証したい場合、ステップST302−3において復号化されたチェック値リストCheck List(i)の中からコンテンツ鍵Kt(i-j)に対応する暗号化チェック値EncCheck(i-j)を抽出する。一方、コンテンツ鍵群TKURE(i)の中から暗号化チェック値EncCheck(i-j)を抽出する。そして、復号化されたチェック値リストCheck List(i)から抽出された暗号化チェック値EncCheck(i-j)とコンテンツ鍵群TKURE(i)から抽出された暗号化チェック値EncCheck(i-j)とを比較する。このようにすれば、暗号化コンテンツ鍵EncKt(i-j)およびこれに付随する情報(暗号化コンテンツ鍵管理情報EncUR[t](i-j)等)が改竄されているか否かを検証することができる。
【0168】
<動作>
次に、本実施形態の機密情報処理システムによる動作について説明する。本実施形態の機密情報処理システムによる動作の全体の流れは、図2と同様であるが、コンテンツ鍵の改竄をチェックする処理(ステップST22)における詳細な処理が異なる。本実施形態では、ステップST22において、図11に示した改竄チェック方法(チェック値Check(i-1)〜Check(i-m)を利用した改竄チェック方法)と図16に示した改竄チェック方法(全体チェック値Check(i)を利用した改竄チェック方法)を実行することによって、コンテンツ鍵の正当性を検証する。
【0169】
以上のように、1つのコンテンツ鍵に関して改竄のチェックを実行するときに、抽出されたチェック値の比較と、全体チェック値の比較とを実行する。この改竄チェック方法によれば、図19に示した改竄チェック方法と比較すると、処理量が著しく小さくすることができ、処理速度を高速化することができる。
【0170】
また、今後は、ネットワークを介した配信によってコンテンツ鍵を追加したり、削除したりすることも考えられる。本実施の形態においては、コンテンツ鍵が追加された場合には、その追加されたコンテンツ鍵に対応するチェック値を付加情報に格納するとともにそのチェック値を暗号化してコンテンツ鍵およびコンテンツ鍵管理情報のいずれかに埋め込めば良い。このようにすれば、追加したコンテンツ鍵に対する改竄チェックを実行することができる。また、追加したコンテンツ鍵に対応する暗号化チェック値と既存の暗号化チェック値とからなる連結データに対して連鎖暗号方式による暗号化を実行すれば(ステップST301−1〜ST301−3における処理を実行すれば)、チェック値リストを更新することができる。一方、コンテンツ鍵が削除された場合には、削除されなかったコンテンツ鍵に対応する暗号化チェック値を抽出し、それらの暗号化チェック値を1つに連結して再度暗号化すれば(ステップST301−1〜ST301−3における処理を実行すれば)、チェック値リストを更新することができる。また、チェック値リストに全体チェック値を連結して連鎖暗号方式による暗号化を再度実行すれば(ステップST301−4,ST301−5における処理を実行すれば)、連鎖チェック値を更新することができる。
【0171】
<改変例>
本実施形態について様々な改変例が考えられるが、代表例として以下の3つの改変例を開示する。
【0172】
(1)暗号化コンテンツは、必ずしも暗号化コンテンツ鍵を格納するターゲット機器と同一のターゲット機器内に格納されている必要はなく、別の記録媒体に格納されるものであっても良い。その場合には、ホスト機器は、その別の記録媒体に格納された暗号化コンテンツをネットワーク等を介して取得し、本実施形態の改竄チェック方法によって正当性が保証されたコンテンツ鍵を用いてその暗号化コンテンツを復号化することになる。
【0173】
(2)全体チェック値が埋め込まれる位置は、指定バイトで指定する必要は必ずしもなく、固定でも構わない。例えば、LSBの8バイトと固定して埋め込んでおけば、全てのデータ(コンテンツ鍵、コンテンツ鍵管理情報)の改竄をチェックすることが可能である。
【0174】
(3)全体チェック値も、コンテンツ鍵毎のチェック値と同様に、定数としてレジスタなどに格納しておいても良い。また、その定数がある規則性を有する場合には、レジスタを設けなくとも、演算器の組み合わせなどで実現することも可能である。一般に、レジスタを設けるよりも演算器の組み合わせによって定数を実装する方が、回路面積としては有利である。
【0175】
以上の各実施形態の説明において、図2に示した概略フローチャートは、各々の実施形態によるコンテンツ鍵の改竄チェック方法(ステップST22における処理)に応じて、適宜変更されても構わない。当業者であれば、図2の概略フローチャートを各実施形態に応じて適宜変更することは容易である。
【産業上の利用可能性】
【0176】
本発明は高速で改竄チェックを行うことが可能であるので、ターゲット機器とホスト機器から構成される機密情報処理システム等に利用可能である。
【図面の簡単な説明】
【0177】
【図1】この発明の第1の実施形態による機密情報処理システムを示す全体構成図。
【図2】図1に示した機密情報処理システムによる動作についての概略フローチャート。
【図3】この発明の第1の実施形態におけるターゲット機器に格納される機密情報を示す図。
【図4】ドメイン鍵の暗号化/復号化とコンテンツ鍵の暗号化/復号化とについて説明するための図。
【図5】図3に示したハッシュリストおよび連結ハッシュ値の生成手順について説明するための図。
【図6】この発明の第1の実施形態における改竄チェック方法についてのフローチャート。
【図7】この発明の第1の実施形態の改変例について説明するための図。
【図8】連鎖暗号方式について説明するための図。
【図9】この発明の第2の実施形態におけるターゲット機器に格納される機密情報を示す図。
【図10】図9に示した連鎖ハッシュ値を生成する手順について説明するための図。
【図11】図9に示したコンテンツ鍵群の改竄をチェックする手順について説明するための図。
【図12】この発明の第2の実施形態における改竄チェック方法についてのフローチャート。
【図13】この発明の第2の実施形態の改変例について説明するための図。
【図14】この発明の第3の実施形態におけるターゲット機器に格納される機密情報を示す図。
【図15】図14に示したチェック値リストおよび暗号化全体チェック値を生成する手順について説明するための図。
【図16】図14に示したチェック値リストの改竄をチェックする手順について説明するための図。
【図17】従来のターゲット機器に格納される機密情報を示す図。
【図18】ドメイン鍵を設定した場合のターゲット機器に格納される機密情報を示す図。
【図19】ターゲット機器に格納される機密情報についてさらに詳細に示した図。
【符号の説明】
【0178】
10 ターゲット機器
11 ホスト機器
101,901 システム領域
102,902 保護領域
103,903 通常領域
111 内部バス
112 ターゲットI/F部
113 機密情報処理部
114 ホストI/F部
115 ホストCPU
116 RAM

【特許請求の範囲】
【請求項1】
少なくとも1つのドメイン鍵を第1の領域に記憶し、かつ各々が何れかの前記ドメイン鍵情報に関連付けられる複数のコンテンツ鍵情報を前記第1の領域と異なる第2の領域に記憶するターゲット機器内の、前記コンテンツ鍵情報の改竄を検出するための改竄検出用データ生成方法であって、
一のドメイン鍵に関連付けられる前記複数のコンテンツ鍵情報を連鎖暗号方式によって暗号化するステップと、
前記暗号化された状態の複数のコンテンツ鍵情報から所定位置のデータを抽出するステップと、
前記複数のコンテンツ鍵情報から抽出された複数の前記所定位置のデータを連結するステップと、
前記連結された複数の前記所定位置のデータに対してハッシュ演算を行い、連鎖ハッシュ値を算出するステップと、
平文状態の前記所定位置のデータに相当するチェック値を前記ターゲット機器内に格納するステップと、
前記連鎖ハッシュ値を前記ターゲット機器内に格納するステップと、を備えることを特徴とする改竄検出用データ生成方法。
【請求項2】
請求項1において、
前記コンテンツ鍵情報が、コンテンツの再生のための鍵となるコンテンツ鍵と、前記コンテンツ鍵を管理するためのコンテンツ鍵管理情報を備えることを特徴とする改竄検出用データ生成方法。
【請求項3】
請求項1において、
前記第1の領域は所定のアクセスのみを受けつける保護領域であり、
前記第2の領域はユーザからの任意のアクセスを受けつける通常領域であり、
前記チェック値を前記第2の領域に、前記連鎖ハッシュ値を前記第1の領域に格納することを特徴とする改竄検出用データ生成方法。
【請求項4】
請求項1において、
前記所定位置のデータが、前記コンテンツ鍵情報の最下位に位置する所定長のデータであることを特徴とする改竄検出用データ生成方法。
【請求項5】
請求項1において、
平文状態の前記所定位置のデータは、前記一のドメイン鍵に関連付けられる前記複数のコンテンツ鍵情報で共通であることを特徴とする改竄検出用データ生成方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2006−197581(P2006−197581A)
【公開日】平成18年7月27日(2006.7.27)
【国際特許分類】
【出願番号】特願2005−379651(P2005−379651)
【出願日】平成17年12月28日(2005.12.28)
【分割の表示】特願2005−185686(P2005−185686)の分割
【原出願日】平成17年6月24日(2005.6.24)
【出願人】(000005821)松下電器産業株式会社 (73,050)
【Fターム(参考)】