【実施例1】
【0033】
〈第一の好ましい実施形態〉
本発明の第一の好ましい実施形態に基づき、
図3はスクランブル鍵生成を示し、
図4は抜粋生成、送信および受信を示す。二つの、好ましくはランダムなマスター鍵K
startおよびK
endがコンテンツについて生成される。スクランブルすべきブロックの数がnであれば、各マスター鍵は一方向性関数h(有利にはハッシュ関数だが、可能性としては公開鍵暗号法の公開鍵を使う暗号化など他の関数であってもよい)によって少なくともn−1回処理され、結果として各マスター鍵から生成されるn個のサブ鍵:K
s1−K
snおよびK
e1−K
enを与える。例解のため、終端鍵(end key)はひっくり返されて、K
e1が自らを終端に見出し、K
enが自らを先頭に見出すと言ってもよい。
【0034】
次いで、各ブロックについて、鍵K
siが鍵K
e(n-i)と組み合わされてブロックCWを生成する。サブ鍵の長さがスクランブル・アルゴリズムによって必要とされる鍵長に対応する限り、組み合わせ演算は、実際上、公開鍵または対称鍵暗号化のような任意の算術演算、任意の二値演算、連結演算であることができる。好ましい組み合わせは排他的OR(XOR)である。
【0035】
数学的記法では、最初のブロックは指数〔インデックス〕0をもち、最後のブロックは指数n−1をもつ。各サブ鍵CWは次の公式によって二つのマスター鍵から生成される。
【0036】
【数1】
ここで、hは一方向性関数、h
mは該一方向性関数のm回の反復を表す。
【0037】
スクランブルされたコンテンツは次いでエンドユーザーに送信されてもよい。該エンドユーザーは、マスター鍵K
StartおよびK
Endを含み、好ましくはユーザーに固有なユーザー鍵Kuで暗号化された一般コンテンツ・ライセンスをも受け取ってもよい(必ずしもコンテンツと一緒にではなく)。非対称暗号システムでは、ユーザー鍵がユーザーの公開鍵であることが有利である。
【0038】
コンテンツをスクランブル解除するためには、ユーザーはまず、そのユーザー鍵Ku(またはその対応する秘密鍵)を使ってライセンスを復号し、次いでマスター鍵K
StartおよびK
Endを使ってコンテンツをスクランブル解除するために使われるサブ鍵を生成する。サブ鍵は式1の公式を使って生成される。
【0039】
第一のユーザーがコンテンツの抜粋、ブロックxからブロックx+mまでのm+1個の連続するブロック、を第二のユーザーと共有したいとき、第一のユーザーはこれらの連続するブロックを選択する(ステップS41)。第一のユーザー装置は次いで二つの派生鍵K'
StartおよびK'
Endを生成する(ステップS42):
K'
Start=h
x(K
Start)
K'
End=h
n-x-m(K
End)。
【0040】
K'
Startは抜粋の最初のブロックについてのスクランブル鍵であり、K'
Endは抜粋の最後のブロックについてのスクランブル鍵であることが理解されるであろう。二つの派生鍵は次いで抜粋ライセンス中に埋め込まれる。抜粋ライセンスは第二のユーザーについての(対称または好ましくは非対称)暗号化鍵を使って暗号化される(ステップS43)。第一のユーザー装置は次いで抜粋および抜粋ライセンスを第二のユーザーに送る(ステップS44)。
【0041】
抜粋および抜粋ライセンスの受信に際して(ステップS45)、第二のユーザー装置は(対応する鍵を使って)抜粋ライセンスを復号する(ステップS46)。これらの派生鍵は次いで、式1と同様の公式(K
Startの代わりにK'
Start、K
Endの代わりにK'
End、iの代わりにx、n−iの代わりにn−x−mとする)を使って、m回ハッシュされ、組み合わされて、抜粋の諸ブロックについてのサブ鍵を生成する(ステップ47)。
【0042】
別の言い方をすると、各サブ鍵は次のように計算される。
【0043】
【数2】
抜粋は次いで、サブ鍵を使ってスクランブル解除され(ステップS48)、レンダリングされてもよい。
【0044】
本発明の鍵生成の利点は、抜粋の長さに関わりなく、抜粋ライセンスが二つの鍵のみを含むということである。これらの二つの(派生)鍵から、抜粋内のブロックについてのすべてのサブ鍵が簡単に計算できる。
【0045】
さらに、共有される部分内のサブ鍵を知っていても、抜粋外のサブ鍵の計算はできない。これらの「外部の」サブ鍵を計算するためには、K'
Startの知識をもって指数xに先行するブロックのサブ鍵を計算するとともに、K'
Endの知識をもって指数x+mより後のブロックのサブ鍵を計算することが必要である。だが、これは一方向性関数hの逆を求めることを必要とし、計算量的に実現可能ではない。
【0046】
詳しくいうと、本第一の好ましい実施形態は、暗号化されていないコンテンツ・ストリームを入力として受け、該コンテンツ・ストリームは動画像専門家グループ2(MPEG2)コンテンツ・ストリームである。MPEG2はデジタル放送コンテンツ用のよく知られたエンコードおよび圧縮規格であり、非特許文献3に記載されている。
【0047】
MPEG2は、固定または可変サイズのフレームを含むパケット化されたエレメンタリー・ストリーム(PES: Packetized Elementary Streams)を含む。各PESパケットは、MPEG2トランスポート・ストリーム(TS: Transport Streams)として知られる、オーディオおよびビデオ・データの組み合わせを含む固定サイズの(188バイト)トランスポート・パケットに分解される。MPEG2コンテンツ・ストリームを保護するとき、各TSパケットは制御語(CW)で暗号化される。CWは10秒周期毎に変化する(つまり、暗号期間(crypto-period)が10s続く)。セットトップボックス・アーキテクチャでは、セットトップボックスのセキュリティ・モジュールが、暗号化されたCWを含む権限付与制御メッセージ(ECM: Entitlement Control Message)を受け取る。セキュリティ・モジュールは正しいCW(奇または偶)をデスクランブラー・モジュールに届け、該デスクランブラー・モジュールは次いで奇/偶CWを正しい時間にスクランブルされたTSに適用し、スクランブル解除されたTSパケットを出力する。
【0048】
各コンテンツ・プロバイダーは固有の秘密または公開情報Ipを有しており、各ユーザーはセンターから証明された(certified)1024ビットのRSA鍵対(Kpub,Kpriv)を受け取っている。コンテンツ・プロバイダー鍵Kpはセンターによって知られており、ユーザー秘密鍵Kpriv
aおよびIpはユーザーのセットトップボックス内に安全に格納されている。
【0049】
さらに、本第一の好ましい実施形態では:
・一方向性関数hはSHA1ハッシュ・アルゴリズムである。
・TSスクランブル・アルゴリズムはCBCモードのAES-128である。非特許文献4および5参照。
・ライセンス暗号化アルゴリズムは1024ビットの鍵長をもつRSA最適非対称暗号化パディング(OAEP: Optimal Asymmetric Encryption Padding)である。さらなる詳細については、非特許文献6、7、8を参照。
【0050】
例解用の例として、コンテンツは2時間の映画である。これは、コンテンツは(2h)×(60min/h)×(60s/min)×(1CW/10s)=720個のCW CW
0〜CW
719を使ってスクランブルされることを意味する。
【0051】
さらに、CW'およびCW"は、センターによってランダムに生成された二つの128ビットマスター鍵である。各CW
iはこれら二つのマスター鍵から次の公式(式1を適応させたもの)を使って生成される。
【0052】
【数3】
暗号期間i内のTSパケットがTS_ENC=AES-128-ENC'(CW
i,TS)とスクランブルされる。SHA1の出力が160ビットであることを与えられると、CW
iも160ビットである。AES鍵サイズ(128ビット)を適合させるためには、各CW
iは、たとえば上位32ビットまたは下位32ビットを破棄することによって、128ビットに打ち切られる。
【0053】
マスター鍵CW'およびCW"は一つのECM={CW',CW"}内に埋め込まれる。このECMは128ビットのプロバイダー識別子(provider identifier)情報(PID)をも含む。PIDは、どのプロバイダー情報Ipをどのコンテンツと一緒に使うべきかを知る助けになる。ECMはまた、必要なCWの総数をも含む(この2バイト・フィールドはハッシュ指数〔インデックス〕を計算する助けになる)。コンテンツをユーザーに配送する前に、400ビットのECM={CW',CW",CW_count=720,PID}がユーザーの公開鍵Kpub
aを用いて暗号化される。すなわち、ECM_ENC=RSA-1024-ENC(Kpub
a,ECM)となる。
【0054】
コンテンツをスクランブル解除するためには、セキュリティ・モジュールは秘密ユーザー鍵Kpriv
aを使ってECMを解読する。次いで、PID情報を使って、セキュリティ・モジュールはどのプロバイダー情報Ipを使うべきかを知る。セキュリティ・モジュールは次いで、センターと同じCW生成アルゴリズムを使って、マスター鍵CW'およびCW"、プロバイダー情報IpおよびCW_countから、保護されるマルチメディア・コンテンツを構成するスクランブルされたTSパケットのための制御語CW
iを生成する。
【0055】
CW計算を少なく保つために、すなわち同じ値を数回生成するのを避けるために、CWを次のようにして生成するのが有利である:
1.マスター制御語CW'およびCW"を受信すると、CW"からすべての制御語の「第二の部分」を生成する
CW"
i=h
619-i(Ip‖CW")
ここで、iはCW_count−1=619で始まり、0に達するまでデクリメントされる。
2.これら第二の部分をメモリ中のリストL内に、第一のCW、CW'=CW'
0の「第一の部分」と一緒に保存する。
【0056】
L={CW',CW"
0,CW"
1,…,CW"
619=CW"}
(これは2時間の映画については約12kb(721×16=11586バイト)のメモリを必要とする。)
3.第一のCWを計算するために、
【数4】
を計算する。ここで、CW'
0およびCW"
0はLから取り出された。
4.次の制御語の第一の部分によってリストL中のCW'
0を更新する。すなわち、CW'
0←h(Ip‖CW')=CW
1となる。
5.スクランブルされた各TSパケットについて、ステップ3〜4を、最終的なCWが生成されるまで繰り返す。
【0057】
【数5】
当業者は、この方法が若干のメモリ・スペースを必要とするが、多くの計算ステップを節約することを理解するであろう。
【0058】
第一のユーザーが、コンテンツの、映画の開始から60分のところに位置する10分の抜粋を第二のユーザーと共有したいとする。10分の抜粋は6×10=60個のCWを使ってスクランブルされている。抜粋の始まりおよび終わりのCWはそれぞれCW
360およびCW
419である。
【0059】
この抜粋について、第一のユーザーのセキュリティ・モジュールはマスター鍵CW'およびCW"から二つの抜粋鍵CW_e'およびCW_e"を次のように生成する。
【0060】
CW_e'=h
360(Ip‖CW')
CW_e"=h
619-419(Ip‖CW")=h
300(Ip‖CW")。
【0061】
鍵CW_e'およびCW_e"は抜粋ECM(excerpt ECM)に埋め込まれる。EECM={CW_e',CW_e",CW_count=60,PID}。スクランブルされた抜粋を第二のユーザーに頒布する前に、セキュリティ・モジュールはEECMを第二のユーザーの公開鍵Kpub
bを用いて暗号化する。すなわち、EECM_ENC=RSA-1024-ENC(Kpub
b,EECM)となる。
【0062】
スクランブルされた抜粋を受領すると、第二のユーザーのセキュリティ・モジュールは第二のユーザーの秘密鍵Kpriv
bを使って1024ビットのEECM_ENCを解読する。次いで、当該部分内の暗号期間j内のTSパケットについての各制御語CW
jが次のように計算される。
【0063】
【数6】
これらの制御語を使って、スクランブルされた抜粋がスクランブル解除され、ユーザーに対してレンダリングされうる。
【0064】
当業者は、従来技術のシステムでは、スクランブル/デスクランブルのために使われるCWはランダムに生成されたものであり、互いに独立であったことを認識するであろう。セキュリティ・モジュールは各TSパケットについてECMを受け取り、解読しなければならなかった。これは、保護されたコンテンツについて処理すべき数百のECMとなる(2時間の映画については少なくとも720個のECM)。しかしながら、本発明の第一の実施形態によれば、セキュリティ・モジュールはコンテンツ当たり単一のECMまたはEECMを必要とするだけである。そのECM/EECMを使ってコンテンツのスクランブル解除に必要なCWを生成することが可能だからである。よって、本発明の第一の実施形態が伝送帯域幅を節約できることが理解されるであろう。・
【実施例2】
【0065】
〈第二の好ましい実施形態〉
前記第一の好ましい実施形態によって提供されるソリューションはコンパクトだが、結託攻撃に対する耐性はない。コンテンツの二つの連続しない抜粋へのアクセスをもつ攻撃者は、二つの抜粋の間にあるすべてのパケットについての制御語を生成できる。それらの抜粋がコンテンツの始まりと終わりに対応する場合には、そのコンテンツについてのすべての制御語が生成されうる。
【0066】
第二の好ましい実施形態は、コンテンツを複数の論理的な部分に分離することによって、結託攻撃に対する耐性を提供する。各部分は、コンテンツ全体より少なく、単一のブロックよりは多いものを含む。例解用の例として、各部分は10分(すなわち60ブロック)の長さであるが、これより短いまたは長いのでもよい。
【0067】
各部分についての制御語は、あたかも各部分がコンテンツ項目全体であるかのように、他の部分についての制御語とは独立に生成される。
【0068】
換言すれば(映画の例を続けると)、映画コンテンツの10分毎に、センターは二つの128ビットのマスター鍵CW'[k]およびCW"[k]を生成する、k=0…11(これは2時間の映画について24個のマスター鍵を表す)。各CW
i[k]はこれらのマスター鍵から次の公式を使って生成される。
【0069】
【数7】
これは二つの型の周期を生じさせることが見て取れる:CWが変化する(kが固定されたままの間、公式中の指数iが変化する)10秒の下位暗号期間と、マスター鍵CW'およびCW"が変化する(公式中の指数kが変化する;この期間の先頭でiは0にリセットされる)10分の上位暗号期間である。
【0070】
暗号期間{i,k}内のTSパケットはTS_ENC=AES-128-ENC(CW
i[k],TS)としてスクランブルされる。
【0071】
この場合、コンテンツ全体について一つの一意的なECMを有する代わりに、それぞれ異なるマスター鍵の対を含む12個のECMがある:ECM
k={CW'[k],CW"[k],CW_count=60,PID}。CW_countがしかるべく調整される限り、これらの部分が異なる長さであることも可能であることを注意しておくべきである。
【0072】
ユーザーが10分より短い抜粋のみ共有できる場合、一つのEECMを送信することが必要なだけである。第一のユーザーがコンテンツの5分の部分を第二のユーザーと共有したいとする。その部分は、映画の始まりから60分のところに位置されている。5分の抜粋はマスター鍵{CW'[6],CW"[6]} (抜粋は「上位」暗号期間7に位置しているので)から導出される6×5=30個のCWによって保護される。この抜粋の始まりおよび終わりのCWはそれぞれCW
0[6]およびCW
29[6]である。
【0073】
セキュリティ・モジュールは、マスター鍵CW'[6]およびCW"[6]から二つの鍵CW_p'およびCW_p"を次のように生成する。
【0074】
CW_p'=h
0(Ip‖CW'[6])=CW
0[6]=CW'[6]
CW_p"=h
59-29(Ip‖CW"[6])=h
30(Ip‖CW"[6])。
【0075】
鍵CW_p'およびCW_p"は次いでEECM={CW_p',CW_p",CW_count=30,PID}に埋め込まれる。保護された抜粋を第二のユーザーに頒布する前に、EECMは第二のユーザーの公開鍵Kpub
bを使って暗号化される。すなわち、EECM_ENC=RSA-204-ENC(Kpub
b,EECM)となる。
【0076】
保護された抜粋を受領すると、第二のユーザーのセキュリティ・モジュールは第二のユーザーの秘密鍵Kpriv
bを使って1024ビットのEECM_ENCを解読し、次いで、諸暗号期間{j,6}内のTSパケットについての制御語CW
j[6]を次のように生成する。
【0077】
【数8】
抜粋を本発明の第二の好ましい実施形態を使って保護すると、コンテンツの二つの連続しない抜粋へのアクセスをもつ攻撃者は、それらの抜粋が同じマスター鍵の暗号期間に属するのでない限り、それら二つの抜粋の間に位置されるTSパケットについての制御語を再構築することができない。
【0078】
本発明は、プロセッサによって実行されたときに該プロセッサに本発明の方法を実行させる命令を記憶するDVDまたはCD-ROMのようなコンピュータ・プログラム・プロダクトにも関係する。
【0079】
本発明が、受領者に対してコンテンツ全体を利用可能にすることなく、ユーザーが保護されたコンテンツの一部を共有することを可能にできることは理解されるであろう。本発明のソリューションは、計算コストの点で効率的であり、帯域幅効率がよく(より少ないデータが転送される)、第二の実施形態では結託攻撃に耐性があることができる。それでいて同時に、実際上任意の既存のコピー保護システムとともに実装できる。
【0080】
本稿および(該当する場合には)請求項および図面で開示される各特徴は、独立して、あるいは任意の適切な組み合わせにおいて提供されてもよい。請求項に現れる参照符号は単に例解のためであって、特許請求の範囲に対する限定する効果はもたない。
いくつかの付記を記載しておく。
〔付記1〕
nを整数として、コンテンツ項目のn個の連続するユニットの暗号化または復号のためのn個の制御語を生成する装置であって:
第一の鍵Kstartおよび第二の鍵Kendを取得し;
前記第一の鍵Kstartに第一の一方向性関数を逐次反復的に適用することによってn個のサブ鍵K10〜K1n-1の第一の順序付き集合を生成するとともに、前記第二の鍵Kendに第二の一方向性関数を逐次反復的に適用することによってn個のサブ鍵K20〜K2n-1の第二の順序付き集合を生成し;
0≦i≦n−1として、n個のサブ鍵の前記第一の順序付き集合からのサブ鍵K1iおよびn個のサブ鍵の前記第二の順序付き集合からのサブ鍵K2n−i−1から制御語iを生成する組み合わせ演算を逐次反復的に使うことによりn個の制御語を生成し;
n個の生成された制御語を出力するよう構成されたプロセッサを有する、
装置。
〔付記2〕
前記第一の一方向性関数および前記第二の一方向性関数の少なくとも一方はハッシュ関数である、付記1記載の装置。
〔付記3〕
前記第一の一方向性関数および前記第二の一方向性関数の少なくとも一方は公開鍵暗号化である、付記1または2記載の装置。
〔付記4〕
前記組み合わせ演算はXORである、付記1記載の装置。
〔付記5〕
前記組み合わせ演算は連結または公開鍵暗号化または対称鍵暗号化である、付記1記載の装置。
〔付記6〕
前記プロセッサがさらに、前記コンテンツ項目をそれぞれ複数のユニットを含む複数の部分に分離し、各部分について独立に制御語を生成するよう構成されている、付記1記載の装置。
〔付記7〕
前記プロセッサがさらに、生成された制御語iを使ってユニットiが暗号化されている前記コンテンツ項目についてのライセンスを生成し、前記ライセンスは前記第一の鍵Kstart、前記第二の鍵Kendおよび前記整数nを含み;
前記ライセンスを受信機に送信するよう構成されている、
付記1記載の装置。
〔付記8〕
前記コンテンツ項目がより長いコンテンツ項目の抜粋であり、前記より長いコンテンツ項目が第三の鍵および第四の鍵から生成された制御語を使って暗号化されたものであり、前記プロセッサがさらに:
前記第一の鍵Kstartを前記第一の一方向性関数の前記第三の鍵への逐次反復的適用によって生成し、
前記第二の鍵Kendを前記第二の一方向性関数の前記第四の鍵への逐次反復的適用によって生成するようさらに構成されている、
付記7記載の装置。
〔付記9〕
前記コンテンツ項目が暗号化されており、前記プロセッサがさらに、生成された制御語を使って暗号化されたコンテンツ項目を復号するよう構成されている、付記1記載の装置。
〔付記10〕
コンテンツ項目のn個の連続するユニットの暗号化または復号のためのn個の制御語を生成する方法であって、nは整数であり、当該方法は、装置において:
・第一の鍵Kstartおよび第二の鍵Kendを取得する段階と;
・前記第一の鍵Kstartに第一の一方向性関数を逐次反復的に適用することによってn個のサブ鍵K10〜K1n-1の第一の順序付き集合を生成するとともに、前記第二の鍵Kendに第二の一方向性関数を逐次反復的に適用することによってn個のサブ鍵K20〜K2n-1の第二の順序付き集合を生成する段階と;
・0≦i≦n−1として、n個のサブ鍵の前記第一の順序付き集合からのサブ鍵K1iおよびn個のサブ鍵の前記第二の順序付き集合からのサブ鍵K2n−i−1から制御語iを生成する組み合わせ演算を逐次反復的に使うことによりn個の制御語を生成する段階と;
・n個の生成された制御語を出力する段階とを含む、
方法。
〔付記11〕
前記第一の一方向性関数および前記第二の一方向性関数の少なくとも一方はハッシュ関数である、付記10記載の方法。
〔付記12〕
前記組み合わせ演算がXORである、付記10記載の方法。
〔付記13〕
前記コンテンツ項目をそれぞれ複数のユニットを含む複数の部分に分離する段階をさらに含み、付記10記載の各段階が各部分について独立に実行される、付記1記載の方法。
〔付記14〕
付記10記載の方法によって生成された制御語を使って暗号化されているコンテンツ項目についてのコンテンツ・ライセンスを生成する方法であって、装置において:
・生成された制御語iを使ってユニットiが暗号化されている前記コンテンツ項目についてのライセンスを生成する段階であって、前記ライセンスは前記第一の鍵Kstart、前記第二の鍵Kendおよび前記整数nを含む、段階と;
・前記ライセンスを受信機に送信する段階とを含む、
方法。
〔付記15〕
付記14記載の方法であって、前記コンテンツ項目がより長いコンテンツ項目の抜粋であり、前記より長いコンテンツ項目は第三の鍵および第四の鍵から生成された制御語を使って暗号化されたものであり、当該方法がさらに:
・前記第一の鍵Kstartを前記第一の一方向性関数の前記第三の鍵への逐次反復的適用によって生成する段階と;
・前記第二の鍵Kendを前記第二の一方向性関数の前記第四の鍵への逐次反復的適用によって生成する段階をさらに含む、
方法。