説明

セキュアデバイス認証システム及び方法

ブロックベースドメディアのセキュリティと認証のための技術は、保護鍵の使用を含み、認証と暗号プリミティブを提供する。本技術に従ったシステムは、保護鍵付きのセキュリティカーネルを有するセキュアデバイスを備えても良い。ディスクドライブ・セキュリティ機構は、データの認証や秘密性をサポートしたり、更にセキュリティカーネルやチケットサービス・モジュール(例えば、フラッシュのような他の記憶装置によって使用されたり、これを使用しない共有サービス)を用いたチケット有効化をサポートしても良い。

【発明の詳細な説明】
【技術分野】
【0001】
今や、認証やその他のセキュリティ問題は、理論上及び実用上、広範囲の研究・開発の分野となっている。1つの分野は、DVDまたはそれに匹敵するテクノロジーでのデータの認証であり、それはCDや新しいDVDテクノロジーを含むかは不明だが、DVDテクノロジー間の類似性ゆえに通常DVDテクノロジーの全域に適用可能なものとなっている。DVDやCD、更にその他の自由に配給可能なメディアディスクを以て、その認証は特に強固でなければならない(例えば、暗号法の使用)。
【背景技術】
【0002】
ディスクベースのメディアは通常、ブロックベースドデバイスである。それ故、ブロックデータへのアクセス時間や使用されるどんな暗号アルゴリズムの演算時間も、ディスクベースのメディアを使用するシステムの仕様を満足しなければならない。更に、コンテンツは秘密保持のためにしばしば暗号化される場合がある。また、セキュアデバイスの秘密保持やディスクベース・メディアのための認証技術に対するその他の考慮すべき事項には、その技術が読取専用媒体をサポートすべきこと、(各ディスクに特注又は固有のデータを要求せずに)ディスクの大量生産をサポートすべきこと、そして認証のためにディスク上に格納される付加データは妥当なオーバーヘッドを課すだけであるべきことが含まれる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
これらの要求事項を満たすべく幾つかの取り組みが提案されたが、秘密保持や認証技術における多くのソリューションと同様に、そこには改善の余地がある。例えば、公開鍵暗号に基づいたブロック署名(例えば、RSA署名)を付けることも可能だろうが、読み込まれるデータのあらゆるブロックはRSA照合演算が必要となるために、この取り組みは比較的遅い処理となる。RSAは、公開鍵暗号化のためのアルゴリズムである。それは、暗号化と同様に署名に適切と思われた最初のアルゴリズムであった。RSAは十分に長い鍵があたえられ、セキュアである(技術的に安全性が保証された)と思われている。更に、比較的遅いことに加えて、ブロック毎に行われるRSA署名のサイズは比較的高いオーバーヘッドを課すことにもなるであろう。
【0004】
別の例としては、ディスクのカスタム防護エリアに書き込まれたブロック毎にSHAハッシュ(又は、その同等の物)を付けることも可能であるが、これはカスタムディスクの製造が必要となる。更に別の例として、各ブロックに対しHMAC(又は同等の物)などの秘密鍵ベースのメッセージ認証コードを付けることも可能だろうが、この場合、総てのディスクに、HMACが同じでなければならず、これにより単一の秘密鍵機構となり、所望のセキュリティレベルを提供できない可能性がある。別の例としては、階層のメンバーを読み込むために、ブロックアクセス毎にブロックデバイスの複数のシーク(multiple seeks)が必要となる階層的署名アプローチを使用することも可能だろうが、この処理は待ち時間が長くなってしまう可能性がある。
【0005】
上述したこれら関連技術の例や制限事項は、あくまで説明に役立つものとして例証したものであって排他的ではない。関連技術の他の制限事項は、当該技術者が本願明細書を読み、図面を検討することにより明らかになるであろう。
【課題を解決するための手段】
【0006】
以下の実施形態とその特徴は、あくまで例証的であって範囲を制限しないことを意図したシステム、ツール、および方法に関連して記載、図示される。種々の実施形態では、上述した問題の1つ又はそれ以上が低減又は解消され、一方では他の実施形態がその他の改善に向けられる。
【0007】
ブロックベースドメディアのセキュリティと認証のための技術は、保護鍵の使用を含み、認証と暗号プリミティブを提供する。本技術に従ったシステムは、保護鍵付きのセキュリティカーネルを有するセキュアデバイスを含んでも良い。ディスクドライブ・セキュリティ機構は、データ認証や秘密性をサポートしたり、更にセキュリティカーネルやチケットサービス・モジュール(例えば、フラッシュのような他の記憶装置によって使用されたり、これを使用しない共有サービス)を用いたチケット有効化をサポートしても良い。実装の形態によっては、セキュリティカーネル、ディスクドライブ・セキュリティ機構、及びチケットサービス・モジュールは、3つの異なった実行空間で動作する可能性もあり、それに非限定的な例として、例えば光学ディスクを含む様々な入出力・記憶装置により一般的に使用可能である。
【0008】
非限定的な実施形態では、ブロックベースドメディアは読み取り専用であるが、その技術は追記型(WORM)、書き込み可能型、或いは他のブロックベースドメディアなどに適用可能であるかもしれない。またその技術は、他の記憶媒体、暗号鍵を引き出すための代替法を導く他のライセンシング機構、及び/又は他の移送メディア(例えば、インターネットのパケットベースのダウンロード)に適用可能であるかもしれない。
【図面の簡単な説明】
【0009】
本発明の実施形態を図面に示す。しかしながら、ここに示した実施形態と図面は、本発明を制限するものというよりむしろ説明するためのものであって、本発明の例を提供するものである。
【図1】階層的ハッシュ技術に関連する二分木構造の例を示す図である。
【図2】階層的ハッシュ技術に関連する非二分木構造の例を示す図である。
【図3】32KBブロックの例を示す図である。
【図4】図1乃至図3を参照して説明した技術の実装の形態に適したコンピュータ・システムを示す図である。
【図5】図1乃至図3を参照して説明した技術の実装の形態に適したセキュアシステムの例を示す図である。
【図6A】セキュアなブロックベースドメディアアクセスの方法の例のフローチャートである。
【図6B】セキュアなブロックベースドメディアアクセスの方法の例のフローチャートである。
【図7A】セキュアなブロックベースドメディアアクセスの別の方法を示すフローチャート700である。
【図7B】セキュアなブロックベースドメディアアクセスの別の方法を示すフローチャート700である。
【図7C】セキュアなブロックベースドメディアアクセスの別の方法を示すフローチャート700である。
【発明を実施するための形態】
【0010】
以下の説明では、本発明の実施形態の十分な理解を与えるために幾つかの特定の具体的な構成が提示される。しかし、当業者であれば、1つ以上のこれら特定の具体的な構成がなくとも、あるいは他の構成部などとの組み合わせにより、本発明を実施することが可能であることが理解されるであろう。また別の例では、様々な実施形態における本発明の側面を覆い隠すことがないように、周知の具体的構成は、図示または詳細に説明されていない。
【0011】
図1は、階層的ハッシュ技術に関連する二分木構造100の例を示している。本願明細書で援用されるものは、1982年1月5日にマークル(Merkle)に対し発行された「デジタル署名提供法(“Method of Providing Digital Signatures”)」と題する米国特許第4,309,569号である。一群のデータブロック{Y1, …Yk, …Yn}、(1<=k<=n)が認証されることになる。図1の例ではn=8である。ブロックYkは、Ykと一群の値H(i, j, Y)を用いることで認証される。伝達されたブロックYkと、これに対応する一群の値H(i, j, Y)はYkの信頼性を確立するために個々に使用できる。ここで、H(i, j, Y)は以下のように定義される。
H(i, i, Y)=F(Yi)
H(i, j, Y)=F(H(i, (i+j-1)/2, Y), H((i+j+1)/2, j, Y))
但し、F(Yi)はSHA-1などの一方向関数である。従って、H(i, j, Y)は、Yi, Yi+1, ...Yjの一方向関数、H(1, n, Y)は、Y1〜Ynの一方向関数である。即ち、レシーバーはYkとHの一群の値を選択的に認証することが可能である。
【0012】
二分木構造100のルート値H(1、8、Y)を信用するためには、例えばその値に対する公開鍵ベースの暗号署名(例えば、RSA署名)を獲得できなければならない。署名は、信頼できるルート鍵まで適切に証明書の連鎖を検証することで、署名を有効にすることが可能となる。しかしながら、何らかの適用可能な公知の(又は手頃な)セキュリティ機構を、信用構築のために使用できるであろう。
【0013】
図1の例では、Y5を認証するために、信頼のあるH(1, 8, Y)を持ち、かつH(6, 6, Y)、H(7, 8, Y)、及びH(1, 4, Y)を受けとることが必要である。H(5, 6, Y)とH(5, 8, Y)は導き出すことが可能である。説明のために、これらのボックスは図1で陰影をつけられており、導き出された値を示すボックスは破線を有し、H(5, 5, Y)は検証ターゲットであって太線によって囲まれたブロックで表されており、ルート値H(1, 8, Y)は破線と実線との双方によって囲まれ、H(1, 8, Y)自体が受信されるものであると共に導き出されるものでもあることを示している。認証を成功させるためには、H(1, 8, Y)の受信値と導き出された値(received and derived values)は一致していなければならない。陰影のないボックスに関連した値は、Y5を認証するために既知である必要はない。
【0014】
図1に示す例において、検証ターゲットH(5, 5, Y)、及び受信値(received values)の最初の値H(6, 6, Y)は、共に、上述したH(i, j, k)の定義を用いて、H(5, 6, Y)を導き出すのに使用できる。又、導き出された値(derived value) H(5, 6, Y)、及び受信値の2番目の値H(7, 8, Y)は、共に、H(5, 8, Y)を導き出すのに使用できる。更に、導き出された値H(5, 8, Y)、及び受信値の3番目の値H(1, 4, Y)は、共に、ルート値H(1, 8, Y)を導き出すのに使用できる。また、H(1, 8, Y)は4番目の受信値でもあった。H(1, 8, Y)の導き出された値と受信値が一致したならば、その時は4番目の受信値が信頼できることと仮定した上でH(5, 5, Y)が認証されることになる。
【0015】
二分木構造100の異なったレベルに属するH( )値のグループは、階層の夫々のレベルによって表示することができる。例えば:
H3: = H(1, 8, Y)
H2: = {H(l, 4, Y), H(5, 8, Y)}からなる値
H1: = {H(1, 2, Y), H(3, 4, Y), H(5, 6, Y), …}からなる値
H0: = {H(1, 1, Y), H(2, 2, Y), H(3, 3, Y), …}からなる値
従って、H0ハッシュはデータブロックY、Yなどのハッシュや、二分木構造100の葉節点(leaf nodes)を言及している。ツリーの構造は、階層におけるレベルの数やツリー構造の各節点(node)の子の数によって定義しても良い。
【0016】
図1を参照して説明した技術は、他の非二分木構造まで拡張することができる。構造の選択にあたっては、それらに限定されるものではないが、例えば:結果として生じるデータブロックの大きさやブロック認証に必要な認証データ;デバイスからの所望データ読み取り速度を満たすための一方向ハッシュ関数(例えば、SHA-1)の計算の数;シーク(seek)を最小限にしつつ、データを読み込むことの副作用として、又は認証データのための読み取りオーバーヘッドを最小限にする他の方法により、利用可能な認証データを持つことの必要性;ツリーによってカバーされなければならない最大データサイズ、などによって決めるようにしても良い。
【0017】
図2は階層的ハッシュ技術に関連する非二分木構造200を示す。図2の例に選ばれるツリーの構造は、例えばDVDディスクなどのブロックベースドメディアデバイスのための上記の要件を満たすものであり、デバイスの上において、データブロックY1、Y2などと共に値H0, H1…の配列(placement)を導くものとなる。
【0018】
図2の例において、H0ハッシュがH(1, 1, Y)、H(2, 2, Y)などといったように選ばれ、各H0ハッシュが1個の1Kデータブロックをカバーするようになっている。データブロックサイズは、ここでは1Kバイトになるように選ばれているが、どんな適当なサイズでも良い。
【0019】
図2の例では、非二分木構造200のH1ハッシュがH(1, 31, Y)、H(32, 62, Y)などといったように選ばれる。即ち、図2の例では、各H1は、31ブロックのデータをカバーする。その他の実施例としては、31ブロックのデータというよりはむしろ、どんな適当な数のブロックも使用可能である。31ブロックのデータは、それに限定されるものではないが、図3の例によって示されたデータブロックに準拠したものである。
【0020】
図3は32KBブロック300の例を示している。32KBブロック300は、ハッシュブロック302と31個の1KBデータブロック304を含む。ハッシュブロックは、後述するところのハッシュとパディング(padding)を含む。実装の形態によっては、31個の1KBデータブロック304は、ハッシュブロック302によって先行されるように、またはハッシュブロック302に挟まれるようにして、例えばDVDディスク上の32KBブロック300内に一緒に格納される場合もある。
【0021】
再び図2の例を参照するに、H2ハッシュは、H(1, 31×8, Y)、H(31×8+1, 31×2×8, Y)などといったように選ばれる。即ち、各H2ハッシュは、31×8ブロックのデータをカバーする。これは、各H2節点(node)が、レベルH1において、8個の子を有していることを意味する。本例では被乗数は“8”だが、どんな数も選択可能である。被乗数を増やすことは、(相殺するアクション(counterbalancing action)が取られない限りにおいては)レベルH3の節点(ノード)数を減少させる効果があり、被乗数を減らすことは、その反対の効果をもたらすことになる。
【0022】
H3ハッシュが、H(1, 31×8×8, Y)、H(31×8×8+1, 31×2×8×8, Y)などといったように選択される。即ち、各H3ハッシュは、31×8×8個のブロックデータをカバーする。これは各H3節点(node)が、レベルH2において、8個の子を有していることを意味する。本例では被乗数は“8”だが、どんな数も選択可能である。非限定的実施形態においては、H3ハッシュの数は、認証機構でカバーされる最大サイズのデータをカバーするように選ばれることもある。例えば、4182個のハッシュを9.4G実装品で使用したり、768個のハッシュを1.5G実装品で使用したりしても良い。図2の例では、非二分木構造200は、本例で示されるパラメータと共に如何なるサイズのブロックベースドメディアデバイスにも一般化できるようにn個のハッシュを備える。
【0023】
最終的なH4ハッシュ(ツリー階層の根の部分)は署名された値であって、コンテンツデータの公開が認可されたセキュアサーバーにおいて、公知または手頃な公開鍵署名法を使用することによって署名される。コンテンツのサイズは任意であっても、或いは任意でなくても良い。階層構造の値を演算するために、追加コンテンツブロックやハッシュ値がランダムなバイトとして当てがわれるようにしても良い。図2を参照して説明した技術は、DVDブロックに使用可能であり、或いは他のアプリケーションへと適用(拡張)することが可能である。
【0024】
再度、図3を参照するに、本例ではハッシュブロック302は、31個のH0ハッシュ/パディング310、8個のH1ハッシュ/パディング312、及び8個のH2ハッシュ/パディング314に細分される。
【0025】
ディスクヘッダなどのヘッダ(図示せず)は、通常、32KBブロック300に関連するブロックベースドメディアデバイスの最初のアクセスエリアに含まれることになる。一実施形態において、ヘッダに含まれた内容は、ブロックベースドメディアデバイス上の全ブロックに適用可能となる。これで殆どの目的に対し十分ではあるが、ヘッダは、先頭に付け加えたり、後ろに付け加えたり、さもなければデータのブロックに含められたりしてもよい。非限定的実施形態において、ヘッダはH4ハッシュとこれに関連するH3ハッシュを含んでいる(例えば、図2参照)。又、別の実施形態として、関連するH3を8個のH2ハッシュから導き出すことが出来るし、H3自体を提供する必要もないが、その際には全ブロックベースドデバイスからのデータアクセスが必要になるかもしれない。
【0026】
非限定的実施形態において、ヘッダは、少なくとも最終的なハッシュ(例えばH4)、コンテンツ識別、及び任意の鍵を含む“チケット”と呼ばれる署名データ構造を含んでも良い。例えばこのチケットは、あくまで例であってこれに限定されないがRSAなどの公開鍵署名法を使用するコンテンツ発行サーバーによって署名されるようにしても良い。非限定的実施形態では、チケットに、コンテンツに権利を付与する他の権利マネージメントデータや、別のライセンス供与サーバーによる署名を含ませるようにしても良い。ヘッダは更に、証明書チェーンや取消しリストなど、署名の有効化を補助する補助データ構造を含んでも良い。コンテンツに適用可能な権利を減らす或いは拡張するために、権利マネージメントライセンスは、代替手段によって供給された他の権利マネージメントライセンスと併せて使用されてもよい。
【0027】
ヘッダに続き、ハッシュブロック310、312、314と31個の1KBデータブロック304を挟んでも良い。図3の例では、1ブロックが32KBで、最初の1KBブロックはハッシュブロック302として留保される。一実施形態では、ハッシュブロック302は、ヘッダがプレロード(先行読み込み)されると仮定して、31個の1KBデータブロック304を有効化するのに必要な全認証データを含んでも良い。31個の1KBデータブロック304にはコンテンツを含ませても良い。如何なる適用可能な公知(又は手頃な)ハッシュアルゴリズムが使用されても良い。例えば、ハッシュサイズが20バイトのSHA1であるならば十分であろう。
【0028】
一実施形態では、総てのデータブロックが(例えば、AES暗号を使用する形で)、コンテンツのコピー防止を確実にするために暗号化される。別の実施形態としては、いくつかのデータブロックを暗号化しない場合もある。非限定的実施形態としては、ハッシュブロック302からスタートする形で、データが復号化される。ハッシュの復号化にあたっては、如何なる公知の、又は手頃な技術も使用可能である。例えば、一定の既知数を、ハッシュブロック302の始まりを復号化するために初期化ベクトルとして選択しても良いし、H2ハッシュの一部をデータブロック復号化用の初期化ベクトルとして使用しても良い。チケット有効化工程の副産物として復号化鍵を獲得しても良い(例えば図5参照)。
【0029】
図4は、図1乃至図3を参照して上述した技術の実施に適するコンピュータ・システム400を示している。コンピュータ・システム400は、コンピュータ402、I/Oデバイス404、及びディスプレイデバイス406を含む。コンピュータ402は、プロセッサ408、通信インターフェース410、メモリ412、ディスプレイコントローラ414、不揮発性記憶装置416、及びI/Oコントローラ418を含む。コンピュータ402は、I/Oデバイス404やディスプレイデバイス406に接続する形でも、あるいはそれらを含む形でも良い。
【0030】
コンピュータ402は、モデムやネットワークインターフェースを含んでもよい通信インターフェース410を介し、外部システムと接続する。通信インターフェース410は、コンピュータ・システム400の一部かコンピュータ402の一部として考えることができる。通信インターフェース410は、アナログ・モデム、ISDNモデム、ケーブルモデム、トークン・リング・インタフェース、衛星通信インターフェース(例えば、“ダイレクトPC”)、又は1つのコンピュータ・システムを他のコンピュータ・システムに接続する他のインターフェースのいずれでも良い。従来のコンピュータは通常、一種の通信インターフェースを備えるが、インターフェースを含まないコンピュータを作成することで、通信インターフェース410を厳密な意味で任意的なものとすることができる。
【0031】
プロセッサ408は、それに限定されない一例として、インテル社のペンティアム(登録商標)マイクロプロセッサやモトローラ社のパワーPCマイクロプロセッサなどの従来マイクロプロセッサを具備しても良い。プロセッサ408は、総ての従来型コンピュータにとって重要な部品と言えるが、ここで説明した技術を実施するためには、適用可能な如何なる公知の(又は手頃な)プロセッサを使用することも可能である。メモリ412は、バス420によって、プロセッサ408に接続される。メモリ412(以下、“主記憶装置(primary memory)”と呼ぶこともある)は、ダイナミック・ランダムアクセス・メモリ(DRAM)を備えたり、またスタティック・ラム(SRAM)を備えたりすることも可能である。バス220は、プロセッサ408をメモリ412に接続したり、又不揮発性記憶装置416にも、ディスプレイコントローラ414にも、更にI/Oコントローラ418にも接続したりすることができる。
【0032】
I/Oデバイス404は、キーボード、ディスクドライブ、プリンタ、スキャナ、及びマウスか他のポインティング・デバイスを含む他の入出力装置を含むことができる。説明のため、これらI/Oデバイスの少なくとも1つを、DVDプレーヤーのようなブロックベースドメディアデバイスと仮定する。ディスプレイコントローラ414は、公知の又は手頃な方法で、ディスプレイデバイス406上のディスプレイを制御しても良く、ディスプレイデバイス406は、例えば、ブラウン管(CRT)だったり、液晶ディスプレイ(LCD)だったりする。
【0033】
ディスプレイコントローラ414とI/Oコントローラ418はデバイスドライバを具備しても良い。デバイスドライバは、ハードウェアデバイスとの相互作用を可能にするべく開発された特定のコンピュータ・ソフトウェアである。通常、これは、デバイスと通信するためのインターフェースを構成し、ハードウェアが接続されるバスや通信サブシステムを介し、デバイスへの命令送信及び/又はデバイスからのデータ受信を実行する一方、必要不可欠なものはOSとソフトウェアアプリケーションと相互作用する。
【0034】
デバイスドライバは、OS特有でもあるハードウェア依存型コンピュータ・プログラムを含んでもよい。そのコンピュータ・プログラムにより、別のプログラム(通常OS、アプリケーションソフトウェアパッケージ、又はOSカーネル上で動くコンピュータ・プログラム)は、透過的にハードウェアデバイスと相互作用することができ、同コンピュータ・プログラムは通常、ニーズと調和した如何なる必要な非同期・時間依存型ハードウェアにも必要不可欠な割り込み処理を提供する。
【0035】
往々にして不揮発性記憶装置416(以下、“補助記憶装置(secondary memory)”と呼ぶこともある)は、磁気ハードディスクだったり、光ディスクだったり、或いは大量データ用の他の種類の記憶装置だったりする。このデータのいくつかはしばしば、コンピュータ402でソフトウェアを実行している間に、ダイレクトメモリアクセス工程によってメモリ412に書き込まれる。不揮発性記憶装置416は、ブロックベースドメディアデバイスを含むものでも良い。“機械可読メディア”や“コンピュータ可読メディア”という用語は、プロセッサ408によってアクセス可能であって、データ信号を符号化する搬送波を包含する如何なる公知の(又は手頃な)記憶装置をも含んでいる。
【0036】
コンピュータ・システム400は、異なったアーキテクチャを持っている多くの実行可能なコンピュータ・システムの一例である。例えば、インテルマイクロプロセッサをベースとするパーソナルコンピュータは往々にして複数のバスを有し、その1つは周辺機器へのI/Oバスであったり、プロセッサ408とメモリ412を直接接続するもの(しばしば“メモリバス”と呼ばれる)であったりする。これらのバスは、バスプロトコルが異なることによって必要とされる如何なる変換(translation)を実行できるブリッジコンポーネントを介して接続される。
【0037】
ネットワーク・コンピュータは、ここで提供した教示に関連して使用可能な別のタイプのコンピュータ・システムである。通常、ネットワーク・コンピュータはハードディスクや他の大容量記憶装置を備えておらず、実行可能プログラムは、プロセッサ408による実行のために、ネットワーク接続からメモリ412に取り込まれる。当該技術では既知のウェブテレビシステムも又、1つのコンピュータ・システムと考えることもできるが、ある入力や出力装置のように図4に示した特徴の幾つかを欠く可能性がある。通常、一般的なコンピュータ・システムは、少なくともプロセッサ、メモリ、メモリをプロセッサに接続するバスを具備することになる。
【0038】
オペレーティングシステム(OS)でコンピュータ・システム400を制御しても良い。OSは、全部ではないが殆どのコンピュータ・システムに使用されるソフトウェアプログラムであって、コンピュータのハードウェア及びソフトウェア・リソースを管理している。通常、OSは、メモリを制御して割り当てをしたり、システムの要求に優先順位を付けたり、入出力装置を制御したり、ネットワーキングを補助したり、ファイルを管理するといったような基本タスクを実行するものである。パーソナルコンピュータ用オペレーティングシステムの例としては、マイクロソフト社のウインドウズ(登録商標)、リナックス、マックOS(登録商標)などがある。OSとアプリケーション・ソフトウエアとの間の線引きは往々にしてかなり難しい。幸いにも、何らかのリーズナブルな線引きで十分であるため、本願で説明した技術を理解するのにこの線引きは不要である。
【0039】
最も低いレベルのOSとしては、その(OSの)カーネルであっても良い。通常、カーネルは、システムブートや、スタートアップする際にメモリに取り込まれるソフトウェアの第1の層(first layer)である。カーネルにより、他のシステムやアプリケーション・プログラムに対する様々な共通コアサービスへのアクセスを提供する。
【0040】
ここに使用されたように、コンピュータメモリ中のデータ・ビットにおける操作のアルゴリズム的記述と象徴(symbolic representations)は、当業者に対し最も効果的に技術を伝えるものと思われる。アルゴリズムという用語は、ここで使用するとき、また一般に使用されるとき、所望の結果を導き出す動作 (operations)の首尾一貫したシーケンス(self-consistent sequence)と考えられる。この動作は、物理量の物理的な操作(manipulations)を必要とするものである。必ずしも必要ではないが、通常、こうした量は、格納、転送、結合、比較、及び他の操作を行うことができる電気、または磁気の信号の形を取る。時には、主に一般的な使用のために、こうした信号をビット(bits)、値(values)、要素(elements)、記号(symbols)、文字(characters)、項(terms)、数字(numbers)などと呼ぶのが便利であることがわかっている。
【0041】
しかしながら、これら、及びこれらと同様の用語はすべて、適切な物理量に関連付けられ、単にこうした量に適用される手頃なラベル(labels)にすぎないことを心に留めておくべきである。特に明記しない限り、または下記の記述から明らかであるように、“処理する(processing)”、“演算する(computing)”、“計算する(calculating)”、“決定する(determining)”、“表示する(displaying)”などの用語は、コンピュータ・システムのレジスタおよびメモリ内の物理的な(電子)量として表されるデータを操作し、コンピュータ・システムのメモリまたはレジスタ、または他のこうした情報記憶装置、送信装置または表示装置内の同じように物理(電子)量として表される他のデータに変換するコンピュータの動作および処理(process)を指す。
【0042】
ここで説明した技術を実施するための装置は、要求された目的のためにそれ専用に構成しても良く、又コンピュータに格納されたコンピュータ・プログラムによって選択的に起動(activated)されたり再構成(reconfigured)されたりする汎用コンピュータから成るものでも良い。そのようなコンピュータ・プログラムは、それらに限定されるものではないが例えば、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気又は光学カード、フレキシブルディスクを含む如何なるタイプのディスク、光ディスク、CD-ROM、DVD、光磁気ディスク、或いは電子的な指示(instructions)を格納するのに適した如何なる公知の(又は手頃な)の媒体のような、コンピュータ可読記憶媒体に格納されても良い。
【0043】
ここに提示されたアルゴリズムとディスプレイは本来、如何なる特定コンピュータ・アーキテクチャにも関連するものではない。この技術は、高いレベル(例えば、C/C++)であろうと低レベル(例えば、アセンブリ言語)だろうと、又インタープリタ型(例えば、Perl)だろうと、コンパイラ型(例えば、C/C++)だろうと、バイトコード(例えば、Java(登録商標))からコンパイルされるジャストインタイム(JIT)であろうと、如何なる公知の(又は手頃な)プログラミング言語を使用して実施されても良い。どんな公知の(又は手頃な)コンピュータでも、アーキテクチャに関係なく、コンパイルされた機械コードか、さもなければ何らかの言語からコンピュータ・アーキテクチャと互換性がある機械コードへとアセンブルされた機械コードを実行することが可能でなければならない。
【0044】
図5は、図1乃至図3を参照して上述した技術を実施するのに適していたセキュアシステム500の一例を示している。代表的なセキュアシステム500は、ゲーム機、メディアプレーヤー、埋め込み型(embedded)セキュアデバイス、セキュアプロセッサ付き“従来型”PC、或いはセキュアプロセッサを備える他のコンピュータ・システムを備えても良い。
【0045】
図5の例においてセキュアシステム500は、セキュアプロセッサ502、OS504、ブロックベースドメディアドライバ506、ブロックベースドメディアデバイス508、プロテクト・メモリ510、及びチケットサービス512を含む。図5の例ではOS504は、鍵ストア516、暗号化/復号化エンジン517、及びセキュリティAPI518を順に含むセキュリティカーネル514を有する。上述したこれら部品の1つ又はそれ以上、或いはその一部を、プロテクト・メモリ510又は保護されていないメモリ(図示せず)に属させるようにしても良いことを留意すべきである。
【0046】
さらに留意すべきは、慣例だけによって、セキュリティカーネル514が、OS504に属するように表現されていることである。実際にOS504の一部であってもなくても良く、OSの外側に存在することも、或いはOSを含まないシステム上に存在することも可能である。説明を簡単にする目的で、OS504は認証可能であることが前提である。実施形態では、ブロックベースドメディアドライバ506、及び/又は、チケットサービス512は、OS504の一部であっても良い。認証付きのブロックベースドメディアドライバ506とチケットサービス512を読み込むこと(loading)が、セキュリティを向上できるという理由で、これは望ましいかもしれない。従って、そのような実施形態では、OS504は認証付きで読み込まれ、ブロックベースドメディアドライバ506とチケットサービス512を含むことになる。
【0047】
説明の簡略化のために、プロテクト・メモリは単一メモリとして示される。しかしながら、このプロテクト・メモリは、保護された主記憶装置、保護された補助記憶装置、及び/又は、シークレットメモリを含んでも良い。メモリが保護されるのを確実とするためには、公知の(又は手頃な)機構が適所にあることが前提である。主記憶装置と補助記憶装置との間、及び/又は、揮発性記憶装置と不揮発性記憶装置との間のインタープレイ(interplay)は、公知であるため、様々な種類のメモリと記憶装置の間の区別は図5に関しては示されていない。
【0048】
チケットサービス512は、例えば“デジタルライセンス有効化サービス”として考えられても良く、また非限定的な実施形態では、ライセンス有効化に関連する公知の(又は手頃な)手順を含んでもよい。例えば、チケットサービス512は、デジタルライセンスを有効にするための手順、PKI有効化手順などを含んでも良い。図5の例では、チケットサービス512は、ブロックベースドメディアデバイス508上でチケットを有効化することができる。この動作において、ブロックベースドメディアドライバ506は、ブロックベースドメディアデバイス508からチケットを獲得する。次いで、ブロックベースドメディアドライバ506は、チケットサービス512へのチケットを供給し、同サービスはチケット有効化を進行させる。チケットが有効である場合、ブロックベースドメディアドライバ506は、チケットに関連したブロックを復号化することが許される。
【0049】
一実施形態では、セキュリティカーネル514が、起動時点において読み込み(loaded)されてもよい。別の実施形態では、セキュリティカーネルの一部が、起動時点において読み込みされ、残りが後で読み込みされても良い。この技術の一例は、Srinivasanらによって、2003年2月7日に出願された“信頼性や下位互換性のあるプロセッサ、及びその上でのセキュアソフトウェア実行”というタイトルの出願番号:10/360,827号に記載され、同技術がここで援用される。セキュアな方法(技術的に安全性が保証された方法、in a secure manner)で、セキュリティカーネル514を読み込みするべく、如何なる公知の(又は手頃な)技術も使用可能である。
【0050】
鍵ストア516は、鍵のための格納場所群からなる。鍵を格納するのに使用されるデータ構造は重要な意味をもつものではないが、鍵ストア516は、鍵の一配列と思われても良い。鍵を格納するために、適用可能な如何なる公知の(又は、手頃な)構造も使用可能である。非限定的な実施形態では、鍵ストア516は、静的な(static)鍵を以て初期化されるが、可変鍵(variable keys)は初期化されない(或いは、セキュアでない値に初期化される)。例えば、幾つかの鍵ストア位置(key store locations)は、認証されたセキュリティカーネル514の読み込み(loading)の一部としての信頼値(例えば信頼ルート鍵)で予備充填(pre-filled)される。
【0051】
一実施形態において、暗号化/復号化エンジン517は、暗号化と復号化の両方が可能である。例えば、かかる動作において、アプリケーションは、セキュリティAPI518に、アプリケーションが暗号化に使用できるというキーハンドルを要求するかもしれない。暗号化/復号化エンジン517を、キーハンドルを使用してデータを暗号化するのに使用しても良い。好都合なことには、セキュリティAPI518は、キーハンドルを平文で提供するが、鍵そのものは決してセキュリティカーネル514から離れることはない。
【0052】
セキュリティAPI518は、鍵を明らかにすることなく(すなわち、鍵がセキュリティカーネル514を離れないか、或いは暗号化される場合にだけに限って鍵がセキュリティカーネル514を去るような状態で)、鍵ストア516内の鍵を使用した動作を実行することができる。セキュリティAPI518は、鍵ストア516で鍵(そして潜在的には、他のセキュリティ材料)を作成(create)し、投入(populate)し、使用するためのサービスを含んでも良い。また、一実施形態では、セキュリティAPI518は、また、秘密鍵とデバイスプライベート鍵を含む、内部の秘密と不揮発性データへのアクセスを与える。実装の形態によっては、セキュリティAPI518は、ハードウェア加速を使用することでAES及びSHAオペレ−ションをサポートするようにしても良い。
【0053】
図5の例では、ブロックベースドメディアドライバ506は、ブロックベースドメディアデバイス508からの読み出しを行いながら、以下のセキュリティオペレーションを実行するように構成しても良い。
1)秘密鍵を使用して、ブロックベースドメディアデバイス508を復号化すること、及び
2)ブロックベースドメディアデバイス508上の認証データを使用して、ブロックベースドメディアデバイス508上のコンテンツを認証すること(認証が失敗した場合、読み出しは失敗する)
【0054】
図5の例では、これらのセキュリティオペレーションを実行するために、ブロックベースドメディアドライバ506は、システム500内の他のセキュアサービス、例えばチケットサービス512やセキュリティAPI518などを利用しても良い。一実施形態では、これらモジュールの夫々が、システムセキュリティのための個々の実行スペースにおいて実行する。データブロックを有効化するために、ブロックベースドメディアドライバ506は、データブロック・ヘッダを読み出し、ヘッダのデータを使ってチケットを有効にするためにチケットサービス512を用いる。ブロック復号化をサポートするために、チケットは、暗号化された鍵を含んでも良い。チケットサービス512は、セキュリティカーネル514(例えば、暗号化/復号化エンジン517)におけるサービスを利用して、鍵を復号化する。
【0055】
一実施形態では、暗号化/復号化エンジン517は、この復号化を実行するために、鍵ストア518からの秘密共通鍵を使用する。別の実施形態では、チケットサービス512は、フラッシュかネットワーク(図示せず)から得られたデバイス個別チケット(device personalized ticket)を使用して、コンテンツに対する幾つかの権利を有効にして、その後に鍵を戻すことも可能である。いずれにしても、このプロセスは、ブロックベースドメディアドライバ506に戻り、ブロックを復号化する際に使用する鍵にリファレンスを与える。この鍵リファレンスは、ブロックベースドメディアドライバ506によって使用され、鍵に関連するブロックを復号化するセキュリティAPI516に次の呼び出しをする。
【0056】
復号化の後に、ブロックベースドメディアドライバ506は、セキュリティAPI516(又は、ハッシュ演算エンジンへの他のインターフェース)に対し呼び出しをかけ、チケットに関連する階層的ハッシュツリーを有効にする(例えば、図3参照)。セキュリティAPI516は、チケットの中にあるものに対するルートハッシュを有効化する。有効化が成功したことを前提に、チケットに関連するコンテンツは使用可能なものにされる。非限定的な実施形態では、復号化と認証の順番はさほど重要でなく、入れ替えできるものである。
【0057】
矢印520〜536を以て、システム500のデータフローの例が例示を目的として供される。ブロックベースドメディアドライバ506においてブロック・ヘッダを受けることは、ブロックベースドメディアデバイス508からブロックベースドメディアドライバ506へのヘッダアクセス矢印520によって表わされている。データブロック・ヘッダは恐らくは、アクセスして読み出し可能となるために矢印520は双方向となる。
【0058】
チケットを含むデータブロック・ヘッダからチケットサービス512へのデータ送信は、認証データ矢印522によって表わされている。チケットは、暗号化された鍵を含んでも良い。鍵の復号化のためにセキュリティAPI516に要求を送ることは、鍵復号化要求矢印524によって表されている。現在鍵ストア518に格納されている復号化された鍵へのリファレンスの戻しは、鍵へのリファレンス矢印526によって表わされる。チケットの有効化に成功した後、チケットサービスは、ブロック復号化の際にドライバが使用した鍵へのリファレンスと共に、チケット有効化データをブロックベースドメディアドライバ506に送ることになる。チケットサービス512からブロックベースドメディアドライバ506へのデータ送りは、チケット有効化矢印528として示されている。
【0059】
データブロックアクセス矢印530は、ブロックベースドメディアドライバ506によるブロックベースドメディアデバイス508からのブロック読み出しを示している。データアクセスは、ヘッダ(520)の受信と同時に行っても、或いは時を一致させずに行っても良い。アクセスされたブロックは、チケット有効化データ(528)を使用して復号化され、ブロック復号化要求矢印532はかかる要求を表している。ハッシュツリー有効化矢印534は、1ブロックのコンテンツのその後の有効化を表している。
【0060】
一実施形態として、あるレベルのハッシュ(例えば、図2のレベルH3参照)をヘッダに供給することも可能である。そのような実施形態では、第1ハッシュツリー有効化シーケンスは、ハッシュの計算や、このハッシュのヘッダに提供された関連値との比較を含んでも良い。別の実施形態では、あるハッシュ演算時間を節約出来るかもしれない将来のレファレンスのために(for future reference)、階層的ハッシュツリーの部分値が、ハッシュされてもよい。
【0061】
図6A及び図6Bは、セキュアなブロックベースドメディアアクセスの方法の一例としてのフローチャート600を示している。この方法、及び他の方法は、連続的に並べられたモジュールの形で表現される。しかしながら、これらの方法における各モジュールは、並べ替えされたり、並列実行のために適当に並べられたりしても良い。図6Aの例において、フローチャート600は、モジュール602でスタートし、ここではブロックベースドメディアヘッダが読み込まれる。図6Aの例において、フローチャート600は、モジュール604に進み、ここでチケットの有効化が行われ、復号鍵へのリファレンスが得られる。
【0062】
図6Aの例で、フローチャート600は、決定ポイント606に進み、チケットが有効であるか否かが判定される。チケットが有効でない場合(606−Nの場合)、プロセスは中止になり、フローチャート600は終了することになる。他方、チケットが有効である場合(606−Yの場合)、フローチャート600は、モジュール608に進み、H3ハッシュのハッシュを、チケットの中にあるルートハッシュ値と比較する。この比較は例えばセキュリティー・サービスで実行しても良い。
【0063】
図6Aの例で、フローチャート600は、決定ポイント610に進み、チケットが有効であるか否かが判定される。その比較(モジュール608)で一致している場合には、チケットが有効であると仮定される。チケットが有効でないと判定されたならば(610−Nの場合)、プロセスは中止になり、フローチャート600は終了する。他方、チケットが有効である場合(610−Yの場合)、フローチャート600は、モジュール612に進み、H3ハッシュ群のH3ハッシュ値が格納され、読み出し要求(read request)が待機状態にされる。H3ハッシュ値は、例えばセキュアDRAMに格納されても良い。
【0064】
図6Aの例では、フローチャート600は、モジュール614に進み、ここではコンテンツを解読するための鍵へのリファレンスが獲得される。コンテンツ解読のための鍵へのリファレンスは、リファレンス獲得のためチケットサービス(ヘッダ情報を伴う)に呼び出しをかけることで獲得するようにしても良い。図6Aの例では、フローチャート600は、モジュール616に進み、読み出し要求のハッシュサブブロックとデータサブブロックの所在確認が行われる(located)。図6Aの例では、フローチャート600は、更にモジュール618に進み、前記ハッシュサブブロックとデータサブブロックが復号化される。図6Bの例では、フローチャート600は、モジュール620に進み、ここでデータサブブロックのハッシュが計算される。
【0065】
図6Bの例では、フローチャート600は、モジュール622に進み、データサブブロックのハッシュがレベルH0ハッシュ群の対応するH0ハッシュ値と比較される(例えば、図3参照)。図6Bの例では、フローチャート600は、決定ポイント624に進み、ここで上記比較が有効な結果(valid result)をもたらしたか否かが判定される。比較結果が有効でない場合(モジュール624−N)、その時、フローチャート600ではブロックベースドメディアデバイスからの読み出し要求を中止する。他方、上記比較結果が有効である場合(モジュール624−Y)、フローチャート600は、モジュール626に進み、レベルH0のハッシュ値を含む、H0ハッシュ群のハッシュH1’が計算される。
【0066】
図6Bの例では、フローチャート600は、モジュール628に進み、H1’がレベルH1ハッシュ群の対応するH1ハッシュ値と比較される(例えば、図3参照)。図6Bの例では、フローチャート600は、決定ポイント630に進み、ここで上記比較が有効な結果をもたらしたか否かが判定される。比較結果が有効でない場合(モジュール630−N)、その時、フローチャート600ではブロックベースドメディアデバイスからの読み出し要求を中止する。他方、上記比較結果が有効である場合(モジュール630−Y)、フローチャート600は、モジュール632に進み、レベルH1のハッシュ値を含む、H1ハッシュ群のハッシュH2’が計算される。
【0067】
図6Bの例では、フローチャート600は、モジュール634に進み、H2’がレベルH2ハッシュ群の対応するH2ハッシュ値と比較される(例えば、図3参照)。図6Bの例では、フローチャート600は、決定ポイント636に進み、ここで上記比較が有効な結果をもたらしたか否かが判定される。比較結果が有効でない場合(モジュール636−N)、その時、フローチャート600ではブロックベースドメディアデバイスからの読み出し要求を中止する。他方、上記比較結果が有効である場合(モジュール636−Y)、フローチャート600は、モジュール638に進み、レベルH2のハッシュ値を含む、H2ハッシュ群のハッシュH3’が計算される。
【0068】
図6Bの例では、フローチャート600は、モジュール640に進み、H3’が対応して格納されたH3ハッシュ値(612)と比較される(例えば、図3参照)。図6Bの例では、フローチャート600は、決定ポイント642に進み、ここで上記比較が有効な結果をもたらしたか否かが判定される。比較結果が有効でない場合(モジュール642−N)、その時、フローチャート600ではブロックベースドメディアデバイスからの読み出し要求を中止する。他方、上記比較結果が有効である場合(モジュール642−Y)、フローチャート600は、モジュール644に進み、ブロック読み出し要求が果たされる。
【0069】
図7A、7B及び図7Cは、セキュアなブロックベースドメディアアクセスの別の方法を説明するためのフローチャート700を示している。図7Aの例では、フローチャート700は、ブロックベースドメディアデバイスのヘッダにアクセスするモジュール702でスタートする。次に、フローチャート700は、モジュール704に進み、ヘッダに含まれるデータ構造を認証する。それに限定されない例としてデータ構造は、チケットやイーチケット(eTicket)、或いは実際に、ここに記載する意図した目的のために機能する如何なる他のデータ構造でも良い。
【0070】
図7Aの例で、フローチャート700は、モジュール706に進み、ヘッダに含まれるハッシュ値群をセキュアに格納する(技術的に安全性が保証された状態で格納する、securely storing)。それに限定されない例として、これらのハッシュ値は、図2のH3ハッシュと同様なものでも良い。如何なる数のハッシュ値が、ヘッダ(例えば、H0、Hl、H2、H3、H4)に供されても良い。しかしながら、ハッシュサブブロックに供されないヘッダだけを含むことが望ましいかもしれない(例えば図3参照)。
【0071】
図7Aの例で、フローチャート700は、モジュール708に進み、将来のレファレンスのために(for future reference)、階層的ハッシュツリーをキャッシュする(caching)。少なくとも1つの実施形態では、階層的ハッシュツリーをキャッシュするということは、データブロック検証プロセスの間の速度を幾分改善できる結果をもたらすことができる。しかしながら、階層的ハッシュツリーをキャッシュせずに続行する理由が存在するかもしれず、これはこの技術の有効性を損なわないはずである。
【0072】
図7Aの例で、フローチャート700は、モジュール710に進み、データ構造から、階層的ハッシュツリーの第1のルートハッシュを獲得する。データ構造はハッシュ値群とは独立して認証(704)されているために、結果としては更なるセキュリティをもたらすことができる。
【0073】
図7Aの例で、フローチャート700は、モジュール712に進み、ハッシュ値群から第2のルートハッシュを演算する。このハッシュ値はセキュアなもの(技術的に安全性が保証されたもの)かどうかわからないが、ヘッダがブロックベースドメディアデバイスからアクセスされているため、それらは恐らくはブロックベースドメディアデバイスからのものである。
【0074】
図7Aの例で、フローチャート700は、モジュール714に進み、第1のルートハッシュを第2のルートハッシュと比較する。なお、データ構造に含まれていた第1のルートハッシュは、既に認証されており(704)、第2のルートハッシュはブロックベースドメディアデバイスのヘッダに供されたハッシュ群から導かれたものである。
【0075】
図7Aの例で、フローチャート700は、決定ポイント716へと進み、第1のルートハッシュと第2のルートハッシュが一致しているか否かが判定される。第1のルートハッシュと第2のルートハッシュが一致していない場合(モジュール716−N)、その時、ヘッダが拒絶される(さらにフローチャート700も終了する)。他方、第1のルートハッシュと第2のルートハッシュが一致している場合(モジュール716−Y)、フローチャート700は、任意的なモジュール718に進み、ヘッダ以外のソースからの権利マネージメントチケットを有効にする。
【0076】
図7Bの例で、特定の実装形態には可能でないかもしれないし、或いはこの付加的レベルのセキュリティが不要であると思われる可能性があるため、モジュール718は任意で行ってもよいし行わなくてもよい。ヘッダ以外のソースからの権利マネージメントチケットが使用されているなら、その際、権利マネージメントチケット使用方法は、モジュール704、710、714に関して説明されたものと同様である。説明のために、この任意のモジュールが使用されるなら、有効化(validation)が成功した状態にある(それ故、ヘッダが拒絶されない)と推測される。
【0077】
図7Bの例で、フローチャート700は、モジュール720に進み、ここでデータ構造から暗号化された鍵を入手する。最初、そのデータ構造が認証され(704)、鍵がデータ構造から抽出される際に暗号化されるため、この鍵は特にセキュアなもの(技術的に安全性が保証されたもの)である。
【0078】
図7Bの例で、フローチャート700は、モジュール722に進み、ここで暗号化された鍵をセキュアに(技術的に安全性が保証された状態で)復号化する。“セキュアに復号化する”ということで、鍵がセキュアカーネルで復号化されることが前提となる。セキュアカーネルのそれに整合できるどんなセキュリティレベルも適当なものとなるであろう。しかしながら、セキュアカーネルによって提供されたセキュリティと同等であるなら、そのような多くのセキュリティ機構は、単に、何か他のものとして改名されたセキュアカーネルであっても良い。それにもかかわらず、十分にセキュアな機構が公知又は手頃なものであるならば、ここに説明された技術が適用可能であるかもしれない。
【0079】
図7Bの例で、フローチャート700は、モジュール724に進み、鍵をセキュアに格納する。“セキュアに格納すること”ということで、鍵は、セキュアカーネルに格納されるか、又はセキュアプロセッサによってアクセスされるセキュアカーネルに関連するメモリに格納されることが前提となる。又、セキュアカーネルのそれに整合できるどんなセキュリティレベルも適当なものとなるであろう。
【0080】
図7Bの例で、フローチャート700は、モジュール726に進み、鍵へのリファレンスを平文で提供する。それに限定されない例により、ブロックベースドメディアドライバは鍵へのリファレンスを受けるようにしても良い。その際、ブロックベースドメディアドライバは、鍵へのリファレンスを、例えば鍵アクセスのためにリファレンスを使用できるセキュアカーネルに戻すように発信しても良い。このようにして、鍵はセキュアカーネルに残ることができ、リファレンスだけが平文状態になる。
【0081】
図7Bの例で、フローチャート700は、モジュール728に進み、セキュア復号化エンジンに鍵のリファレンスを供する。“セキュア復号化エンジンであること”ということで、復号化エンジンはセキュアカーネルの一部、または同等の物であることが前提となる。これにより鍵の、平文状態での使用さえも回避される。
【0082】
図7Bの例で、フローチャート700は、モジュール730に進み、ここでデータブロックを復号化する。データブロックは、セキュアに復号化される。その後、フローチャート700は、任意でモジュール732に進み、データブロックのサブブロックが復号化される。このレベルのセキュリティが不必要なものかどうか分らないし、システムの性能をいたずらに低減させるかもしれないので(多分、僅かだが)、この処理は任意で行っても良いし行わなくても良い。
【0083】
図7Cの例では、フローチャート700は、モジュール734に進み、サブブロックから認証データを読み込み、続くモジュール736では、この認証データにおいて、階層的ハッシュツリーの第1のレベルに関連する第1のハッシュ値群を識別する(identifying)。第1のレベルは図2のH0に対応するかもしれない。レベルの数は本例方法の一部でない実施詳細である。
【0084】
図7Cの例で、フローチャート700は、モジュール738に進み、第1ハッシュ値を決定するべくデータブロックの暗号学的ハッシュを演算し、続くモジュール740では、第1ハッシュ値を、第1のハッシュ値群の対応値と比較する。
【0085】
図7Cの例で、フローチャート700は、決定ポイント742に進み、第1ハッシュ値と、第1のハッシュ値群の対応値とが一致しているか否か判定される。第1ハッシュ値と、第1のハッシュ値群の対応値とが一致していない場合(モジュール742−N)、データブロック読み出し要求は拒絶される(そして、フローチャート700は終了する)。他方、第1ハッシュ値と、第1のハッシュ値群の対応値とが一致している場合(モジュール742−Y)、その際、フローチャート700は、モジュール744に進み、ここで適宜ハッシュを演算して、比較する。演算と比較の反復回数は恐らく階層的ハッシュツリーのレベル数に依存し、それは実装の形態によって変化する。
【0086】
図7Cの例で、フローチャート700は、決定ポイント746に進み、ハッシュ比較のすべてが一致という結果になるか否かが判定される。ハッシュ比較のすべてが一致という結果にならないと判定された場合(モジュール746−N)、データブロック読み出し要求は拒絶される(そして、フローチャート700は終了する)。他方、ハッシュ比較のすべてが一致という結果になったと判定された場合(モジュール746−Y)、データブロックが戻される(そして、フローチャート700は終了する)。推定するに、アクセス前にこれを参照した当業者には明白であるように、これらモジュールの幾つかは、その後のデータブロックアクセスのために繰り返される必要はないだろう。
【0087】
ここで使用されたように、用語“コンテンツ”は、メモリに格納可能な如何なるデータをも広く含むことを意図する。
【0088】
ここで使用されたように、用語“実施形態”は、それに限定されない一例として説明を行うための実施例を意味している。
【0089】
当業者であれば前述した実施例と実施形態は、代表的なものであり、本発明の範囲を限定するものでないことが理解されるであろう。当業者が明細書を考慮し、図面を検討したときに自明な置き換え、増強、均等物やそれらへの改良が、本発明の要旨と範囲に含まれることを意図している。したがって、添付された特許請求の範囲は、本発明の要旨と範囲内にあるこのような総ての変更、置き換え、均等物を含むことを意図している。
【符号の説明】
【0090】
100 二分木構造
200 非二分木構造
300 32KBブロック
302 ハッシュブロック
304 1KBデータブロック
310 H0ハッシュ/パディング
312 H1ハッシュ/パディング
314 H2ハッシュ/パディング
400 コンピュータ・システム
402 コンピュータ
404 I/Oデバイス
406 ディスプレイデバイス
408 プロセッサ
410 通信インターフェース
412 メモリ
414 ディスプレイコントローラ
416 不揮発性記憶装置
418 I/Oコントローラ
500 セキュアシステム
502 セキュアプロセッサ
504 OS(オペレーティングシステム)
506 ブロックベースドメディアドライバ
508 ブロックベースドメディアデバイス
510 プロテクト・メモリ
512 チケットサービス
514 セキュリティカーネル
516 鍵ストア
517 暗号化/復号化エンジン
518 セキュリティAPI
520 ヘッダアクセス矢印
522 認証データ矢印
524 鍵復号化要求矢印
526 鍵へのリファレンス矢印
528 チケット有効化矢印
530 データブロックアクセス矢印
532 ブロック復号化要求矢印
534 ハッシュツリー有効化矢印


【特許請求の範囲】
【請求項1】
データ構造とハッシュ値群とを含むヘッダにアクセスし、
前記データ構造から、階層的ハッシュツリーの第1のルートハッシュを獲得し、
前記ハッシュ値群から第2のルートハッシュを演算し、
前記第1のルートハッシュを、前記第2のルートハッシュと比較し、
第1のルートハッシュと第2のルートハッシュとが一致する場合に、
前記データ構造から、暗号化された鍵を獲得し、
前記暗号化された鍵をセキュアに復号化し、
前記鍵が平文の形で送付されないように、前記鍵をセキュアに格納し、
前記鍵にリファレンスを提供し、
前記データブロックを前記鍵への前記リファレンスで復号化し、
前記データブロックに関連するサブブロックから認証データを読み込み、
前記認証データにおいて、前記階層的ハッシュツリーの第1のレベルに関連する第1のハッシュ値群を識別し、
第1ハッシュ値を決定するために、前記データブロックの暗号学的ハッシュを演算し、
前記第1ハッシュ値を、前記第1ハッシュ値群における対応値と比較し、
前記第1ハッシュ値と、前記第1ハッシュ値群の前記対応値が一致しない場合に、ブロックデータの要求を拒絶することを特徴とする方法。
【請求項2】
前記データ構造は署名された公開鍵であることを特徴とする請求項1に記載の方法。
【請求項3】
更に、前記データ構造を認証することを特徴とする請求項1に記載の方法。
【請求項4】
更に、ヘッダに含まれた前記ハッシュ値群をセキュアに格納することを特徴とする請求項1に記載の方法。
【請求項5】
更に、前記階層的ハッシュツリーをキャッシュすることを特徴とする請求項1に記載の方法。
【請求項6】
更に、前記第1のルートハッシュと前記第2のルートハッシュが一致していないならば、前記ヘッダを拒絶することを特徴とする請求項1に記載の方法。
【請求項7】
更に、前記ヘッダ以外のソースから権利マネージメントチケットを有効にすることを特徴とする請求項1に記載の方法。
【請求項8】
前記鍵への前記リファレンスは、平文で提供されることを特徴とする請求項1に記載の方法。
【請求項9】
前記鍵への前記リファレンスでデータブロックを復号化する処理は、更に
セキュア復号化エンジンに対し前記鍵へのリファレンスを提供し、
前記鍵が平文で送付されないように、前記データブロックを復号化することを特徴とする請求項1に記載の方法。
【請求項10】
更に、少なくとも前記サブブロックの一部を復号化することを特徴とする請求項1に記載の方法。
【請求項11】
更に、各ハッシュブロックにおいて、
計算で求められたハッシュを適切なロケーションに挿入し、
前記ハッシュブロックのハッシュを演算することを特徴とする請求項1に記載の方法。
【請求項12】
前記第1ハッシュ値が、前記第1のハッシュ値群の前記対応値と一致する場合、
前記第1のハッシュ値群に対応する第2ハッシュ値を演算し、
前記認証データにおいて、前記階層的ハッシュツリーの第2のレベルに関連する第2のハッシュ値群を識別し、
前記第2ハッシュ値を、前記第2のハッシュ値群における対応値と比較し、
前記第2ハッシュ値と、前記第2のハッシュ値群の前記対応値とが一致していない場合に、前記ブロックデータの要求を拒絶することを特徴とする請求項1に記載の方法。
【請求項13】
前記第2ハッシュ値が、前記第2のハッシュ値群の前記対応値と一致する場合、
前記第2のハッシュ値群に対応する第3ハッシュ値を演算し、
前記認証データにおいて、前記階層的ハッシュツリーの第3のレベルに関連する第3のハッシュ値群を識別し、
前記第3ハッシュ値を、前記第3のハッシュ値群における対応値と比較し、
前記第3ハッシュ値と、前記第3のハッシュ値群の前記対応値とが一致していない場合に、前記ブロックデータの要求を拒絶することを特徴とする請求項12に記載の方法。
【請求項14】
前記第3ハッシュ値が、前記第3のハッシュ値群の前記対応値と一致し、前記ヘッダのハッシュ値群が第4のハッシュ値群であり、前記第4ハッシュ値群が前記階層的ハッシュツリーの第4のレベルに関連する場合、
前記第3のハッシュ値群に対応する第4ハッシュ値を演算し、
前記階層的ハッシュツリーの第4のレベルに関連する第4のハッシュ値群を提供し、
前記第4ハッシュ値を、前記第4のハッシュ値群における対応値と比較し、
前記第4ハッシュ値と、前記第4のハッシュ値群の前記対応値とが一致していない場合に、前記ブロックデータの要求を拒絶し、
前記第4ハッシュ値と、前記第4のハッシュ値群の前記対応値とが一致している場合に、前記ブロックデータを戻すことを特徴とする請求項13に記載の方法。
【請求項15】
セキュリティAPIに接続されたブロックベースドメディアドライバであって、その動作において、ブロックベースドメディアデバイスに関連するヘッダにアクセスし、前記ヘッダから認証データを抽出するような前記ブロックベースドメディアドライバと、
前記セキュリティAPIと前記ブロックベースドメディアドライバに接続されるチケットサービスであって、その動作において、前記ブロックベースドメディアドライバからの前記認証データを受け取り、前記セキュリティAPIに鍵復号化要求を送るような前記チケットサービスと、
前記セキュリティAPI、暗号化/復号化エンジン、及び前記セキュリティAPIにアクセス可能な鍵ストアを含むセキュリティカーネルであって、その動作において、前記暗号化/復号化エンジンが鍵を復号化し、前記鍵は前記鍵ストアに格納され、前記セキュリティAPIは前記チケットサービスに、前記鍵に対するリファレンスを戻すような前記セキュリティカーネルとを備えるシステムであって、
動作において、前記チケッサービスは、前記認証データを有効化し、前記ブロックベースドメディアドライバに、前記鍵に対する前記リファレンスを戻し、
動作において、前記ブロックベースドメディアドライバは、前記ブロックベースドメディアデバイスのデータブロックにアクセスし、前記セキュリティAPIにブロック復号化要求を送り、前記セキュリティカーネルは、前記ブロックを復号化し、前記データブロックに関連する階層的ハッシュツリーを有効化することを特徴とするシステム。
【請求項16】
更に、ブロックベースドメディアデバイスを更に備え、前記ブロックベースドメディアデバイスに関連するヘッダが、ルートハッシュ値と複数のルートの子のハッシュ値を含んでいることを特徴とする請求項15に記載のシステム。
【請求項17】
更に、ブロックベースドメディアデバイスを更に備え、前記データブロックの各々は、ハッシュサブブロックと、複数のコンテンツデータブロックを含むことを特徴とする請求項15に記載のシステム。
【請求項18】
ブロックベースドメディアと共にセキュアコンテンツ配信のための手段を有するシステムであって、
セキュア鍵ストア手段と、
ブロックベースドメディアデバイスのヘッダから暗号化された鍵にアクセスするための手段と、
前記暗号化された鍵をセキュアに復号化するための手段と、
前記鍵ストアに前記鍵をセキュアに格納する手段と、
前記ブロックベースドメディアデバイスのデータブロックをセキュアに復号化するために、前記鍵にリファレンスを与えるための手段と、
前記ブロックベースドメディアデバイスと前記ブロックベースドメディアデバイスの各データブロックに関連するハッシュ値を提供するための手段とを備えることを特徴とするシステム。
【請求項19】
前記ヘッダのハッシュ値が拒絶された場合に、前記ブロックベースドメディアデバイスへのアクセスを中止するための手段を更に備えることを特徴とする請求項18に記載のシステム。
【請求項20】
前記データブロックのハッシュ値が拒絶された場合に、前記データブロックへのアクセスを中止するための手段を更に備えることを特徴とする請求項18に記載のシステム。
【請求項21】
データ構造とハッシュ値群とを含むヘッダにアクセスし、
前記データ構造から階層的なハッシュツリーの第1のルートハッシュを獲得し、
前記ハッシュ値群から第2のルートハッシュを演算し、
前記第1のルートハッシュを、前記第2のルートハッシュと比較し、
前記第1のルートハッシュと、第2ルートハッシュ値とが一致する場合に、
前記データ構造から、暗号化された鍵を獲得し、
前記暗号化された鍵を、セキュアに復号化し、
前記鍵が平文の形で送付されないように、前記鍵をセキュアに格納し、
前記鍵にリファレンスを提供し、
暗号化されたデータブロックに関連するサブブロックから認証データを読み込み、
前記認証データにおいて、前記階層的ハッシュツリーの第1のレベルに関連する第1のハッシュ値群を識別し、
第1ハッシュ値を決定するために、前記暗号化されたデータブロックの暗号学的ハッシュを演算し、
前記第1ハッシュ値を、前記第1ハッシュ値群における対応値と比較し、
前記第1ハッシュ値と、前記第1ハッシュ値群の前記対応値が一致しない場合に、ブロックデータの要求を拒絶し、
前記鍵に対するリファレンスで、前記暗号化されたデータブロックを復号化することを特徴とする方法。

【図2】
image rotate

【図3】
image rotate

【図6A】
image rotate

【図6B】
image rotate

【図7A】
image rotate

【図7B】
image rotate

【図7C】
image rotate

【図1】
image rotate

【図4】
image rotate

【図5】
image rotate


【公表番号】特表2010−507328(P2010−507328A)
【公表日】平成22年3月4日(2010.3.4)
【国際特許分類】
【出願番号】特願2009−533299(P2009−533299)
【出願日】平成19年9月12日(2007.9.12)
【国際出願番号】PCT/US2007/019862
【国際公開番号】WO2008/048403
【国際公開日】平成20年4月24日(2008.4.24)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.リナックス
【出願人】(505286718)ブロードオン コミュニケーションズ コーポレーション (8)
【氏名又は名称原語表記】BroadOn Communications Corp.
【Fターム(参考)】