(57)【特許請求の範囲】
【請求項１】
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個の生成された制御語を出力するよう構成されたプロセッサを有し、
前記プロセッサがさらに、前記コンテンツ項目をそれぞれ複数のユニットを含む複数の部分に分離し、各部分について独立に制御語を生成するよう構成されている、
装置。
【請求項２】
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個の生成された制御語を出力するよう構成されたプロセッサを有し、
前記プロセッサがさらに、生成された制御語iを使ってユニットiが暗号化されている前記コンテンツ項目についてのライセンスを生成し、前記ライセンスは前記第一の鍵Kstart、前記第二の鍵Kendおよび前記整数nを含み；
前記ライセンスを受信機に送信するよう構成されている、
装置。
【請求項３】
前記コンテンツ項目がより長いコンテンツ項目の抜粋であり、前記より長いコンテンツ項目が第三の鍵および第四の鍵から生成された制御語を使って暗号化されたものであり、前記プロセッサがさらに：
前記第一の鍵Kstartを前記第一の一方向性関数の前記第三の鍵への逐次反復的適用によって生成し、
前記第二の鍵Kendを前記第二の一方向性関数の前記第四の鍵への逐次反復的適用によって生成するようさらに構成されている、
請求項２記載の装置。
【請求項４】
前記第一の一方向性関数および前記第二の一方向性関数の少なくとも一方はハッシュ関数である、請求項１ないし３のうちいずれか一項記載の装置。
【請求項５】
前記第一の一方向性関数および前記第二の一方向性関数の少なくとも一方は公開鍵暗号化である、請求項１ないし４のうちいずれか一項記載の装置。
【請求項６】
前記組み合わせ演算はXORである、請求項１ないし５のうちいずれか一項記載の装置。
【請求項７】
前記組み合わせ演算は連結または公開鍵暗号化または対称鍵暗号化である、請求項１ないし５のうちいずれか一項記載の装置。
【請求項８】
前記コンテンツ項目が暗号化されており、前記プロセッサがさらに、生成された制御語を使って暗号化されたコンテンツ項目を復号するよう構成されている、請求項１ないし７のうちいずれか一項記載の装置。
【請求項９】
コンテンツ項目の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個の生成された制御語を出力する段階とを含み、
当該方法はさらに、前記コンテンツ項目をそれぞれ複数のユニットを含む複数の部分に分離する段階をさらに含み、取得手段によって取得する段階、順序付き集合生成手段によって生成する段階、制御語生成手段によって生成する段階および出力手段によって出力する段階は各部分について独立に実行される、
方法。
【請求項１０】
n個の制御語のうちの制御語iを使ってユニットiが暗号化されているコンテンツ項目についてのコンテンツ・ライセンスを生成する、装置によって実行される方法であって、前記n個の制御語のうちの制御語iは、0≦i≦n−1として、n個のサブ鍵K10〜K1n-1の第一の順序付き集合からのサブ鍵K1iおよびn個のサブ鍵K20〜K2n-1の第二の順序付き集合からのサブ鍵K2n−i−1の組み合わせであり、
n個のサブ鍵K10〜K1n-1の前記第一の順序付き集合は、第一の鍵Kstartに第一の一方向性関数を逐次反復的に適用することによって得られ、n個のサブ鍵K20〜K2n-1の前記第二の順序付き集合は第二の鍵Kendに第二の一方向性関数を逐次反復的に適用することによって得られ、
当該方法は：
・ライセンス生成手段によって、前記第一の鍵Kstart、前記第二の鍵Kendおよび整数nを含む、前記コンテンツ項目についてのライセンスを生成する段階と；
・送信手段によって、前記ライセンスを受信機に送信する段階とを含む、
方法。
【請求項１１】
請求項１０記載の方法であって、前記コンテンツ項目がより長いコンテンツ項目の抜粋であり、前記より長いコンテンツ項目は第三の鍵および第四の鍵から生成された制御語を使って暗号化されたものであり、当該方法がさらに：
・第一の鍵生成手段によって、前記第一の鍵Kstartを前記第一の一方向性関数の前記第三の鍵への逐次反復的適用によって生成する段階と；
・第二の鍵生成手段によって、前記第二の鍵Kendを前記第二の一方向性関数の前記第四の鍵への逐次反復的適用によって生成する段階をさらに含む、
方法。
【請求項１２】
前記第一の一方向性関数および前記第二の一方向性関数の少なくとも一方はハッシュ関数である、請求項９ないし１１のうちいずれか一項記載の方法。
【請求項１３】
前記組み合わせ演算がXORである、請求項９ないし１２のうちいずれか一項記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概括的にはデジタル著作権管理（DRM:  Digital  Rights  Management）に、より詳細にはDRM保護されたデジタル・コンテンツについての制御語の生成に関する。
【背景技術】
【０００２】
この節は、読者に技術の諸側面を紹介するために意図されている。それらの側面は、下記に記載および／または特許請求される本発明のさまざまな側面に関係することがありうる。この議論は、読者に、本発明のさまざまな側面のよりよい理解を容易にする背景情報を与える助けになると思われる。よって、これらの陳述はこの観点で読まれるべきであって、従来技術の自認として読まれるべきではないことを理解しておくべきである。
【０００３】
DRMソリューションはしばしばユーザー・フレンドリーでないと考えられる。よくある不満は、DRMが1998年のデジタル・ミレニアム著作権法（非特許文献１）によって規定されるフェアユースを禁止するというものである。フェアユースの一部であると考えられる多くのことのうちには、エンドユーザーが作品、すなわちコンテンツ項目の抜粋を、批評、学究などのために引用または使用する権利がある。しかしながら、従来技術のDRMソリューションではこれは可能ではない。
【０００４】
よって、次のことができるDRMソリューションが必要とされている：
・不法または無許諾の使用がされないようコンテンツ項目を保護する；
・エンドユーザーがコンテンツ項目の一部を抽出し、その部分を他のエンドユーザーに再頒布することを許容し、該他のエンドユーザーがその部分にアクセスしうるようにする。これは、これらのエンドユーザーがコンテンツ項目全体に対するアクセス権を有するか否かによらない。
・エンドユーザーどうしが結託して、作品の一組の抜粋を連結することによって作品全体を自由に頒布することを困難にする。
【０００５】
これはコンテンツを複数のブロックに分割し、各ブロックをそのコンテンツについてのマスター制御語から生成される制御語を使ってスクランブルすることによって有利に達成されうる。次いで、一つまたは複数のブロックが第一のエンドユーザーによって第二のエンドユーザーに送られることができ、それらのブロックには、マスター制御語ではなく、生成された制御語を含むライセンスが伴う。制御語生成のための好適なアルゴリズムを使えば、第二のエンドユーザーが当該コンテンツの他のブロックにアクセスできないことを確実にできる。
【０００６】
従来技術は、制御語（暗号化鍵）生成のためのいくつかの解決策を提供している。
【０００７】
たとえば特許文献１は、ブロックがハッシュ値を使って暗号化され、その後、暗号化されたブロックとハッシュ値がハッシュされて、後続ブロックを暗号化するために使われるハッシュ値を生成するシステムを記載している。さらに、特許文献２は、ブロックを、直前ブロックについて使われた鍵と組み合わせることによって鍵が得られる鍵生成システムを記載している。これらのシステムの問題は、復号を一つの「方向」に限定することが可能でないということである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】US2006/0034453
【特許文献２】EP2197145
【非特許文献】
【０００９】
【非特許文献１】http://www.copyright.gov/legislation/dmca.pdf
【非特許文献２】Marc  Joye  and  Sung-Ming  Yen,  One-Way  Cross-Trees  and  Their  Applications,  D.  Naccache  and  P.  Pallier,  Eds.  Public  Key  Cryptography,  vol.2274,  Lecture  Notes  in  Computer  Science,  pp.346-356,  Springer  Verlag,  2002
【非特許文献３】ISO/IEC13818-1、Information  technology  -  Generic  coding  of  moving  pictures  and  associated  audio  information  --  Part1:  Systems,  2007
【非特許文献４】NIST,  FIPS  PUB  197,  "Advanced  Encryption  Standard  (AES),"  November  2001  http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
【非特許文献５】S.  Frankel,  R.  Glenn  and  S.  Kelly,  "The  AES-CBC  Cipher  Algorithm  and  Its  Use  with  IPsec,"  RFC  3602,  Internet  Soc.,  Sept.  2003;  http://rfc.sunsite.dk/rfc/rfc3602.html
【非特許文献６】R.  Houseley,  Use  of  the  RSAES-OAEP  Key  Transport  Algorithm  in  the  Cryptographic  Message  Syntax  (CMS),  RFC  3560,  July  2003
【非特許文献７】M.  Bellare  and  P.  Rogaway:  Optimal  Asymmetric  Encryption  -  How  to  Encrypt  with  RSA.  In:  A.  De  Santis  (ed.)  EUROCRYPT  1994.  LNCS,  vol.  950,  pp.92-111.  Springer,  Heidelberg  (1995)
【非特許文献８】RSA  Laboratories,  PCKS  #1  v.2.1:  RSA  Cryptography  Standard,  June  2002
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上記の問題は、非特許文献２によってある程度は克服される。そのソリューションは、ある秘密から出発して、その左半分または右半分のいずれかがハッシュされて新しい秘密を生成し、それにより秘密の二分木を生成する。次いで各秘密は、たとえば、ハッシュされた鍵を生成してもよい。このソリューションは、いくつかの受け取った鍵からさらなる鍵を生成することを不可能にできる。木は鍵導出のための異なる経路を提供するが、プロセスは常に、木のあるノードから出発して低レベル・ノードへ降りていくというように、上から下の方向をたどる。
【課題を解決するための手段】
【００１１】
本発明は、二つ以上の秘密を使い、それらについて導出プロセスが反対の方向になされる代替的なソリューションを提供する。これは、復号鍵の導出をいくつかの反対の「方向（direction）」に限定することを可能にする。
【００１２】
第一の側面では、本発明は、コンテンツ項目のn個の連続するユニットの暗号化または復号のためのn個の制御語を生成する装置に向けられる。ここで、nは整数である。本装置は：第一の鍵Kstartおよび第二の鍵Kendを取得し；前記第一の鍵Kstartに第一の一方向性関数を逐次反復的に適用することによってn個のサブ鍵の第一の順序付き集合を生成するとともに、前記第二の鍵Kendに第二の一方向性関数を逐次反復的に適用することによってn個のサブ鍵の第二の順序付き集合を生成し；n個のサブ鍵の前記第一の順序付き集合からのサブ鍵iおよびn個のサブ鍵の前記第二の順序付き集合からのサブ鍵n−i−1から制御語iを生成する組み合わせ演算を逐次反復的に使うことによりn個の制御語を生成し（iは両端を含めて0からn−1までの間）；n個の生成された制御語を出力するよう適応されたプロセッサを有する。
【００１３】
第一の好ましい実施形態では、前記第一の一方向性関数および前記第二の一方向性関数の少なくとも一方はハッシュ関数である。
【００１４】
第二の好ましい実施形態では、前記第一の一方向性関数および前記第二の一方向性関数の少なくとも一方は公開鍵暗号化である。
【００１５】
第三の好ましい実施形態では、前記組み合わせ演算はXORである。
【００１６】
第四の好ましい実施形態では、前記組み合わせ演算は連結または公開鍵暗号化または対称鍵暗号化である。
【００１７】
第五の好ましい実施形態では、前記プロセッサはさらに、コンテンツ項目をそれぞれ複数のユニットを含む複数の部分に分離し、各部分について独立に制御語を生成するよう適応される。
【００１８】
第六の好ましい実施形態では、前記プロセッサはさらに、生成された制御語iを使ってユニットiが暗号化されているコンテンツ項目についてのライセンスを生成し、前記ライセンスは前記第一の鍵Kstart、前記第二の鍵Kendおよび前記整数nを含み；前記ライセンスを受信機に送信するよう適応されている。前記コンテンツ項目がより長いコンテンツ項目の抜粋であり、前記より長いコンテンツ項目が第三の鍵および第四の鍵から生成された制御語を使って暗号化され、前記プロセッサがさらに、前記第一の鍵Kstartを前記第一の一方向性関数の前記第三の鍵への逐次反復的適用によって生成し、前記第二の鍵Kendを前記第二の一方向性関数の前記第四の鍵への逐次反復的適用によって生成するようさらに適応されていることが有利である。
【００１９】
第七の好ましい実施形態では、前記コンテンツ項目は暗号化され、前記プロセッサはさらに、生成された制御語を使って暗号化されたコンテンツ項目を復号するよう適応されている。
【００２０】
第二の側面では、本発明は、コンテンツ項目のn個の連続するユニットの暗号化または復号のためのn個の制御語を生成する方法に向けられる。ここで、nは整数である。ある装置が第一の鍵Kstartおよび第二の鍵Kendを取得し；前記第一の鍵Kstartに第一の一方向性関数を逐次反復的に適用することによってn個のサブ鍵の第一の順序付き集合を生成するとともに、前記第二の鍵Kendに第二の一方向性関数を逐次反復的に適用することによってn個のサブ鍵の第二の順序付き集合を生成し；n個のサブ鍵の前記第一の順序付き集合からのサブ鍵iおよびn個のサブ鍵の前記第二の順序付き集合からのサブ鍵n−i−1から制御語iを生成する組み合わせ演算を逐次反復的に使うことによりn個の制御語を生成し（iは0からn−1までの間）；n個の生成された制御語を出力する。
【００２１】
第一の好ましい実施形態では、前記第一の一方向性関数および前記第二の一方向性関数の少なくとも一方はハッシュ関数である。
【００２２】
第二の好ましい実施形態では、前記組み合わせ演算はXORである。
【００２３】
第三の好ましい実施形態では、本方法はさらに、コンテンツ項目をそれぞれ複数のユニットを含む複数の部分に分離する段階を含み、本第二の側面の方法の各段階は、各部分について独立に実行される。
【００２４】
第三の側面では、本方法は、前記第二の側面の方法によって生成された制御語を使って暗号化されているコンテンツ項目についてのコンテンツ・ライセンスを生成する方法に向けられる。ある装置が、生成された制御語iを使ってユニットiが暗号化されているコンテンツ項目についてのライセンスを生成し、前記ライセンスは前記第一の鍵Kstart、前記第二の鍵Kendおよび前記整数nを含み；前記ライセンスを受信機に送信する。
【００２５】
第一の好ましい実施形態では、前記コンテンツ項目はより長いコンテンツ項目の抜粋であり、前記より長いコンテンツ項目は第三の鍵および第四の鍵から生成された制御語を使って暗号化され、本方法がさらに、前記第一の鍵Kstartを前記第一の一方向性関数の前記第三の鍵への逐次反復的適用によって生成し、前記第二の鍵Kendを前記第二の一方向性関数の前記第四の鍵への逐次反復的適用によって生成する段階をさらに含む。
【図面の簡単な説明】
【００２６】
本発明の好ましい特徴について、これから限定しない例として付属の図面を参照しつつ述べる。
【図１】本発明のある好ましい実施形態の例示的な使用分野を示す図である。
【図２】本発明のある好ましい実施形態に基づくスクランブル装置を示す図である。
【図３】本発明の第一の好ましい実施形態に基づくスクランブル鍵生成を示す図である。
【図４】本発明の前記第一の好ましい実施形態に基づく抜粋生成、送信および受信を示す図である。
【発明を実施するための形態】
【００２７】
本発明の主要な発想は、受信者に送達されることのできる少なくとも一つのスクランブル鍵（すなわち、暗号化および復号鍵）を生成しつつ、受信者が前記少なくとも一つのスクランブル鍵をさらなるスクランブル鍵を生成するために使用できないことを確実にすることである。
【００２８】
例示的な使用分野が図１に示されている。コンテンツ項目１００が複数のブロック１１０に分割されている。各ブロック（Uj）１１０はブロック指数（j）によって同定される。ブロック指数は必須ではないが、有利には逐次的である。よってコンテンツ１００はブロックの集合{U0,U1,U2,…,Un}を含む。
【００２９】
コンテンツ１００のスクランブル（暗号化とも呼ばれる）は図２を参照してさらに記述される。図２は、鍵生成器２１０およびスクランブラー２２０を含むスクランブル装置２００を示している。スクランブル装置２００は、一つまたは複数のプロセッサとして実装されてもよい。当業者は、対称暗号アルゴリズムについては暗号化および復号が本質的には同じであることを理解するであろう。同じ鍵および同じアルゴリズムを使って入力データを処理して出力データを生成するのである。
【００３０】
コンテンツ１００をスクランブルするために、そのブロック１１０は別個にスクランブルされる。鍵生成器２１０はスクランブルすべき各ブロック１１０についてブロックCWを生成する。鍵生成器２１０がそこから機能するブロック指数は、たとえばコンテンツ１１０から得られる最終ブロック指数まで、（指数が逐次的であれば）内部的に生成されてもよい。ブロック指数は、制御回路（図示せず）によってまたはスクランブラーによって、スクランブルすべきブロックの検査後に与えられてもよい。生成されたブロック制御語（control  word）CWjはスクランブラー２２０に届けられる。これは可能性としては対応するブロック指数と一緒にであってもよいが、スクランブラー２２０はブロック指数を制御回路から受け取ってもよい。さらなる可能性は、鍵生成器およびスクランブラーが同期されるということである。その場合、ブロックCWは、スクランブラーによって必要とされるときに届けられることができる。スクランブラー２２０はブロックUjを受け取り、ブロックCWを使ってブロックUjをスクランブルし、保護されたブロック（protected  block）PUjを出力する。
【００３１】
このことは図１にも示されている。図１では、上の段のコンテンツ１１０のブロックUjは、下の段の保護されたコンテンツ１２０の保護されたブロックPUj１３０としてスクランブルされる。
【００３２】
当業者は、スクランブル・アルゴリズムが対称的な場合にはスクランブラーとデスクランブラーの間には構造的な違いがないことを理解するであろう。実際、スクランブラーおよびデスクランブラーの両方は入力データを取り、本質的には同じアルゴリズムを同じ鍵とともに使って出力データを生成する。唯一の違いは、一方は平文を受けて暗号文を生成し、他方はその逆を行うということである。よって、図２は、適宜変更を施してスクランブル解除装置２００をも示すことができる。
【実施例１】
【００３３】
〈第一の好ましい実施形態〉
本発明の第一の好ましい実施形態に基づき、図３はスクランブル鍵生成を示し、図４は抜粋生成、送信および受信を示す。二つの、好ましくはランダムなマスター鍵KstartおよびKendがコンテンツについて生成される。スクランブルすべきブロックの数がnであれば、各マスター鍵は一方向性関数h（有利にはハッシュ関数だが、可能性としては公開鍵暗号法の公開鍵を使う暗号化など他の関数であってもよい）によって少なくともn−1回処理され、結果として各マスター鍵から生成されるn個のサブ鍵：Ks1−KsnおよびKe1−Kenを与える。例解のため、終端鍵（end  key）はひっくり返されて、Ke1が自らを終端に見出し、Kenが自らを先頭に見出すと言ってもよい。
【００３４】
次いで、各ブロックについて、鍵Ksiが鍵Ke(n-i)と組み合わされてブロックCWを生成する。サブ鍵の長さがスクランブル・アルゴリズムによって必要とされる鍵長に対応する限り、組み合わせ演算は、実際上、公開鍵または対称鍵暗号化のような任意の算術演算、任意の二値演算、連結演算であることができる。好ましい組み合わせは排他的OR（XOR）である。
【００３５】
数学的記法では、最初のブロックは指数〔インデックス〕0をもち、最後のブロックは指数n−1をもつ。各サブ鍵CWは次の公式によって二つのマスター鍵から生成される。
【００３６】
【数１】
0005883670.tif 000002
ここで、hは一方向性関数、hmは該一方向性関数のm回の反復を表す。
【００３７】
スクランブルされたコンテンツは次いでエンドユーザーに送信されてもよい。該エンドユーザーは、マスター鍵KStartおよびKEndを含み、好ましくはユーザーに固有なユーザー鍵Kuで暗号化された一般コンテンツ・ライセンスをも受け取ってもよい（必ずしもコンテンツと一緒にではなく）。非対称暗号システムでは、ユーザー鍵がユーザーの公開鍵であることが有利である。
【００３８】
コンテンツをスクランブル解除するためには、ユーザーはまず、そのユーザー鍵Ku（またはその対応する秘密鍵）を使ってライセンスを復号し、次いでマスター鍵KStartおよびKEndを使ってコンテンツをスクランブル解除するために使われるサブ鍵を生成する。サブ鍵は式１の公式を使って生成される。
【００３９】
第一のユーザーがコンテンツの抜粋、ブロックxからブロックx＋mまでのm＋1個の連続するブロック、を第二のユーザーと共有したいとき、第一のユーザーはこれらの連続するブロックを選択する（ステップS41）。第一のユーザー装置は次いで二つの派生鍵K'StartおよびK'Endを生成する（ステップS42）：
K'Start＝hx(KStart)
K'End＝hn-x-m(KEnd)。
【００４０】
K'Startは抜粋の最初のブロックについてのスクランブル鍵であり、K'Endは抜粋の最後のブロックについてのスクランブル鍵であることが理解されるであろう。二つの派生鍵は次いで抜粋ライセンス中に埋め込まれる。抜粋ライセンスは第二のユーザーについての（対称または好ましくは非対称）暗号化鍵を使って暗号化される（ステップS43）。第一のユーザー装置は次いで抜粋および抜粋ライセンスを第二のユーザーに送る（ステップS44）。
【００４１】
抜粋および抜粋ライセンスの受信に際して（ステップS45）、第二のユーザー装置は（対応する鍵を使って）抜粋ライセンスを復号する（ステップS46）。これらの派生鍵は次いで、式１と同様の公式（KStartの代わりにK'Start、KEndの代わりにK'End、iの代わりにx、n−iの代わりにn−x−mとする）を使って、m回ハッシュされ、組み合わされて、抜粋の諸ブロックについてのサブ鍵を生成する（ステップ47）。
【００４２】
別の言い方をすると、各サブ鍵は次のように計算される。
【００４３】
【数２】
0005883670.tif 000003
抜粋は次いで、サブ鍵を使ってスクランブル解除され（ステップS48）、レンダリングされてもよい。
【００４４】
本発明の鍵生成の利点は、抜粋の長さに関わりなく、抜粋ライセンスが二つの鍵のみを含むということである。これらの二つの（派生）鍵から、抜粋内のブロックについてのすべてのサブ鍵が簡単に計算できる。
【００４５】
さらに、共有される部分内のサブ鍵を知っていても、抜粋外のサブ鍵の計算はできない。これらの「外部の」サブ鍵を計算するためには、K'Startの知識をもって指数xに先行するブロックのサブ鍵を計算するとともに、K'Endの知識をもって指数x+mより後のブロックのサブ鍵を計算することが必要である。だが、これは一方向性関数hの逆を求めることを必要とし、計算量的に実現可能ではない。
【００４６】
詳しくいうと、本第一の好ましい実施形態は、暗号化されていないコンテンツ・ストリームを入力として受け、該コンテンツ・ストリームは動画像専門家グループ２（MPEG2）コンテンツ・ストリームである。MPEG2はデジタル放送コンテンツ用のよく知られたエンコードおよび圧縮規格であり、非特許文献３に記載されている。
【００４７】
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パケットを出力する。
【００４８】
各コンテンツ・プロバイダーは固有の秘密または公開情報Ipを有しており、各ユーザーはセンターから証明された（certified）1024ビットのRSA鍵対（Kpub,Kpriv）を受け取っている。コンテンツ・プロバイダー鍵Kpはセンターによって知られており、ユーザー秘密鍵KprivaおよびIpはユーザーのセットトップボックス内に安全に格納されている。
【００４９】
さらに、本第一の好ましい実施形態では：
・一方向性関数hはSHA1ハッシュ・アルゴリズムである。
・TSスクランブル・アルゴリズムはCBCモードのAES-128である。非特許文献４および５参照。
・ライセンス暗号化アルゴリズムは1024ビットの鍵長をもつRSA最適非対称暗号化パディング（OAEP:  Optimal  Asymmetric  Encryption  Padding）である。さらなる詳細については、非特許文献６、７、８を参照。
【００５０】
例解用の例として、コンテンツは２時間の映画である。これは、コンテンツは(2h)×(60min/h)×(60s/min)×(1CW/10s)＝720個のCW  CW0〜CW719を使ってスクランブルされることを意味する。
【００５１】
さらに、CW'およびCW"は、センターによってランダムに生成された二つの128ビットマスター鍵である。各CWiはこれら二つのマスター鍵から次の公式（式１を適応させたもの）を使って生成される。
【００５２】
【数３】
0005883670.tif 000004
暗号期間i内のTSパケットがTS_ENC＝AES-128-ENC'(CWi,TS)とスクランブルされる。SHA1の出力が160ビットであることを与えられると、CWiも160ビットである。AES鍵サイズ（128ビット）を適合させるためには、各CWiは、たとえば上位32ビットまたは下位32ビットを破棄することによって、128ビットに打ち切られる。
【００５３】
マスター鍵CW'およびCW"は一つのECM＝{CW',CW"}内に埋め込まれる。このECMは128ビットのプロバイダー識別子（provider  identifier）情報（PID）をも含む。PIDは、どのプロバイダー情報Ipをどのコンテンツと一緒に使うべきかを知る助けになる。ECMはまた、必要なCWの総数をも含む（この２バイト・フィールドはハッシュ指数〔インデックス〕を計算する助けになる）。コンテンツをユーザーに配送する前に、400ビットのECM＝{CW',CW",CW_count=720,PID}がユーザーの公開鍵Kpubaを用いて暗号化される。すなわち、ECM_ENC＝RSA-1024-ENC(Kpuba,ECM)となる。
【００５４】
コンテンツをスクランブル解除するためには、セキュリティ・モジュールは秘密ユーザー鍵Kprivaを使ってECMを解読する。次いで、PID情報を使って、セキュリティ・モジュールはどのプロバイダー情報Ipを使うべきかを知る。セキュリティ・モジュールは次いで、センターと同じCW生成アルゴリズムを使って、マスター鍵CW'およびCW"、プロバイダー情報IpおよびCW_countから、保護されるマルチメディア・コンテンツを構成するスクランブルされたTSパケットのための制御語CWiを生成する。
【００５５】
CW計算を少なく保つために、すなわち同じ値を数回生成するのを避けるために、CWを次のようにして生成するのが有利である：
１．マスター制御語CW'およびCW"を受信すると、CW"からすべての制御語の「第二の部分」を生成する
CW"i＝h619-i(Ip‖CW")
ここで、iはCW_count−1＝619で始まり、0に達するまでデクリメントされる。
２．これら第二の部分をメモリ中のリストL内に、第一のCW、CW'＝CW'0の「第一の部分」と一緒に保存する。
【００５６】
L＝{CW',CW"0,CW"1,…,CW"619＝CW"}
（これは２時間の映画については約12kb（721×16＝11586バイト）のメモリを必要とする。）
３．第一のCWを計算するために、
【数４】
0005883670.tif 000005
を計算する。ここで、CW'0およびCW"0はLから取り出された。
４．次の制御語の第一の部分によってリストL中のCW'0を更新する。すなわち、CW'0←h(Ip‖CW')＝CW1となる。
５．スクランブルされた各TSパケットについて、ステップ３〜４を、最終的なCWが生成されるまで繰り返す。
【００５７】
【数５】
0005883670.tif 000006
当業者は、この方法が若干のメモリ・スペースを必要とするが、多くの計算ステップを節約することを理解するであろう。
【００５８】
第一のユーザーが、コンテンツの、映画の開始から60分のところに位置する10分の抜粋を第二のユーザーと共有したいとする。10分の抜粋は6×10＝60個のCWを使ってスクランブルされている。抜粋の始まりおよび終わりのCWはそれぞれCW360およびCW419である。
【００５９】
この抜粋について、第一のユーザーのセキュリティ・モジュールはマスター鍵CW'およびCW"から二つの抜粋鍵CW_e'およびCW_e"を次のように生成する。
【００６０】
CW_e'＝h360(Ip‖CW')
CW_e"＝h619-419(Ip‖CW")＝h300(Ip‖CW")。
【００６１】
鍵CW_e'およびCW_e"は抜粋ECM（excerpt  ECM）に埋め込まれる。EECM＝{CW_e',CW_e",CW_count＝60,PID}。スクランブルされた抜粋を第二のユーザーに頒布する前に、セキュリティ・モジュールはEECMを第二のユーザーの公開鍵Kpubbを用いて暗号化する。すなわち、EECM_ENC＝RSA-1024-ENC(Kpubb,EECM)となる。
【００６２】
スクランブルされた抜粋を受領すると、第二のユーザーのセキュリティ・モジュールは第二のユーザーの秘密鍵Kprivbを使って1024ビットのEECM_ENCを解読する。次いで、当該部分内の暗号期間j内のTSパケットについての各制御語CWjが次のように計算される。
【００６３】
【数６】
0005883670.tif 000007
これらの制御語を使って、スクランブルされた抜粋がスクランブル解除され、ユーザーに対してレンダリングされうる。
【００６４】
当業者は、従来技術のシステムでは、スクランブル／デスクランブルのために使われるCWはランダムに生成されたものであり、互いに独立であったことを認識するであろう。セキュリティ・モジュールは各TSパケットについてECMを受け取り、解読しなければならなかった。これは、保護されたコンテンツについて処理すべき数百のECMとなる（２時間の映画については少なくとも720個のECM）。しかしながら、本発明の第一の実施形態によれば、セキュリティ・モジュールはコンテンツ当たり単一のECMまたはEECMを必要とするだけである。そのECM/EECMを使ってコンテンツのスクランブル解除に必要なCWを生成することが可能だからである。よって、本発明の第一の実施形態が伝送帯域幅を節約できることが理解されるであろう。・
【実施例２】
【００６５】
〈第二の好ましい実施形態〉
前記第一の好ましい実施形態によって提供されるソリューションはコンパクトだが、結託攻撃に対する耐性はない。コンテンツの二つの連続しない抜粋へのアクセスをもつ攻撃者は、二つの抜粋の間にあるすべてのパケットについての制御語を生成できる。それらの抜粋がコンテンツの始まりと終わりに対応する場合には、そのコンテンツについてのすべての制御語が生成されうる。
【００６６】
第二の好ましい実施形態は、コンテンツを複数の論理的な部分に分離することによって、結託攻撃に対する耐性を提供する。各部分は、コンテンツ全体より少なく、単一のブロックよりは多いものを含む。例解用の例として、各部分は10分（すなわち60ブロック）の長さであるが、これより短いまたは長いのでもよい。
【００６７】
各部分についての制御語は、あたかも各部分がコンテンツ項目全体であるかのように、他の部分についての制御語とは独立に生成される。
【００６８】
換言すれば（映画の例を続けると）、映画コンテンツの10分毎に、センターは二つの128ビットのマスター鍵CW'[k]およびCW"[k]を生成する、k＝0…11（これは２時間の映画について24個のマスター鍵を表す）。各CWi[k]はこれらのマスター鍵から次の公式を使って生成される。
【００６９】
【数７】
0005883670.tif 000008
これは二つの型の周期を生じさせることが見て取れる：CWが変化する（kが固定されたままの間、公式中の指数iが変化する）10秒の下位暗号期間と、マスター鍵CW'およびCW"が変化する（公式中の指数kが変化する；この期間の先頭でiは0にリセットされる）10分の上位暗号期間である。
【００７０】
暗号期間{i,k}内のTSパケットはTS_ENC＝AES-128-ENC(CWi[k],TS)としてスクランブルされる。
【００７１】
この場合、コンテンツ全体について一つの一意的なECMを有する代わりに、それぞれ異なるマスター鍵の対を含む12個のECMがある：ECMk＝{CW'[k],CW"[k],CW_count＝60,PID}。CW_countがしかるべく調整される限り、これらの部分が異なる長さであることも可能であることを注意しておくべきである。
【００７２】
ユーザーが10分より短い抜粋のみ共有できる場合、一つのEECMを送信することが必要なだけである。第一のユーザーがコンテンツの5分の部分を第二のユーザーと共有したいとする。その部分は、映画の始まりから60分のところに位置されている。5分の抜粋はマスター鍵{CW'[6],CW"[6]}  （抜粋は「上位」暗号期間7に位置しているので）から導出される6×5＝30個のCWによって保護される。この抜粋の始まりおよび終わりのCWはそれぞれCW0[6]およびCW29[6]である。
【００７３】
セキュリティ・モジュールは、マスター鍵CW'[6]およびCW"[6]から二つの鍵CW_p'およびCW_p"を次のように生成する。
【００７４】
CW_p'＝h0(Ip‖CW'[6])＝CW0[6]＝CW'[6]
CW_p"＝h59-29(Ip‖CW"[6])＝h30(Ip‖CW"[6])。
【００７５】
鍵CW_p'およびCW_p"は次いでEECM＝{CW_p',CW_p",CW_count＝30,PID}に埋め込まれる。保護された抜粋を第二のユーザーに頒布する前に、EECMは第二のユーザーの公開鍵Kpubbを使って暗号化される。すなわち、EECM_ENC＝RSA-204-ENC(Kpubb,EECM)となる。
【００７６】
保護された抜粋を受領すると、第二のユーザーのセキュリティ・モジュールは第二のユーザーの秘密鍵Kprivbを使って1024ビットのEECM_ENCを解読し、次いで、諸暗号期間{j,6}内のTSパケットについての制御語CWj[6]を次のように生成する。
【００７７】
【数８】
0005883670.tif 000009
抜粋を本発明の第二の好ましい実施形態を使って保護すると、コンテンツの二つの連続しない抜粋へのアクセスをもつ攻撃者は、それらの抜粋が同じマスター鍵の暗号期間に属するのでない限り、それら二つの抜粋の間に位置されるTSパケットについての制御語を再構築することができない。
【００７８】
本発明は、プロセッサによって実行されたときに該プロセッサに本発明の方法を実行させる命令を記憶するDVDまたはCD-ROMのようなコンピュータ・プログラム・プロダクトにも関係する。
【００７９】
本発明が、受領者に対してコンテンツ全体を利用可能にすることなく、ユーザーが保護されたコンテンツの一部を共有することを可能にできることは理解されるであろう。本発明のソリューションは、計算コストの点で効率的であり、帯域幅効率がよく（より少ないデータが転送される）、第二の実施形態では結託攻撃に耐性があることができる。それでいて同時に、実際上任意の既存のコピー保護システムとともに実装できる。
【００８０】
本稿および（該当する場合には）請求項および図面で開示される各特徴は、独立して、あるいは任意の適切な組み合わせにおいて提供されてもよい。請求項に現れる参照符号は単に例解のためであって、特許請求の範囲に対する限定する効果はもたない。
いくつかの付記を記載しておく。
〔付記１〕
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個の生成された制御語を出力するよう構成されたプロセッサを有する、
装置。
〔付記２〕
前記第一の一方向性関数および前記第二の一方向性関数の少なくとも一方はハッシュ関数である、付記１記載の装置。
〔付記３〕
前記第一の一方向性関数および前記第二の一方向性関数の少なくとも一方は公開鍵暗号化である、付記１または２記載の装置。
〔付記４〕
前記組み合わせ演算はXORである、付記１記載の装置。
〔付記５〕
前記組み合わせ演算は連結または公開鍵暗号化または対称鍵暗号化である、付記１記載の装置。
〔付記６〕
前記プロセッサがさらに、前記コンテンツ項目をそれぞれ複数のユニットを含む複数の部分に分離し、各部分について独立に制御語を生成するよう構成されている、付記１記載の装置。
〔付記７〕
前記プロセッサがさらに、生成された制御語iを使ってユニットiが暗号化されている前記コンテンツ項目についてのライセンスを生成し、前記ライセンスは前記第一の鍵Kstart、前記第二の鍵Kendおよび前記整数nを含み；
前記ライセンスを受信機に送信するよう構成されている、
付記１記載の装置。
〔付記８〕
前記コンテンツ項目がより長いコンテンツ項目の抜粋であり、前記より長いコンテンツ項目が第三の鍵および第四の鍵から生成された制御語を使って暗号化されたものであり、前記プロセッサがさらに：
前記第一の鍵Kstartを前記第一の一方向性関数の前記第三の鍵への逐次反復的適用によって生成し、
前記第二の鍵Kendを前記第二の一方向性関数の前記第四の鍵への逐次反復的適用によって生成するようさらに構成されている、
付記７記載の装置。
〔付記９〕
前記コンテンツ項目が暗号化されており、前記プロセッサがさらに、生成された制御語を使って暗号化されたコンテンツ項目を復号するよう構成されている、付記１記載の装置。
〔付記１０〕
コンテンツ項目の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個の生成された制御語を出力する段階とを含む、
方法。
〔付記１１〕
前記第一の一方向性関数および前記第二の一方向性関数の少なくとも一方はハッシュ関数である、付記１０記載の方法。
〔付記１２〕
前記組み合わせ演算がXORである、付記１０記載の方法。
〔付記１３〕
前記コンテンツ項目をそれぞれ複数のユニットを含む複数の部分に分離する段階をさらに含み、付記１０記載の各段階が各部分について独立に実行される、付記１記載の方法。
〔付記１４〕
付記１０記載の方法によって生成された制御語を使って暗号化されているコンテンツ項目についてのコンテンツ・ライセンスを生成する方法であって、装置において：
・生成された制御語iを使ってユニットiが暗号化されている前記コンテンツ項目についてのライセンスを生成する段階であって、前記ライセンスは前記第一の鍵Kstart、前記第二の鍵Kendおよび前記整数nを含む、段階と；
・前記ライセンスを受信機に送信する段階とを含む、
方法。
〔付記１５〕
付記１４記載の方法であって、前記コンテンツ項目がより長いコンテンツ項目の抜粋であり、前記より長いコンテンツ項目は第三の鍵および第四の鍵から生成された制御語を使って暗号化されたものであり、当該方法がさらに：
・前記第一の鍵Kstartを前記第一の一方向性関数の前記第三の鍵への逐次反復的適用によって生成する段階と；
・前記第二の鍵Kendを前記第二の一方向性関数の前記第四の鍵への逐次反復的適用によって生成する段階をさらに含む、
方法。
【符号の説明】
【００８１】
１００  コンテンツ
１１０  ブロック
１２０  保護されたコンテンツ
１３０  保護されたブロック
２００  スクランブル装置
２１０  鍵発生器
２２０  スクランブラー
S41  送信すべき抜粋を選択
S42  抜粋鍵を生成
S43  抜粋ライセンスを生成
S44  抜粋および抜粋ライセンスを送信
S45  抜粋および抜粋ライセンスを受信
S46  抜粋ライセンスを解読
S47  制御語を生成
S48  抜粋をスクランブル解除
【図１】
0005883670.tif 000010
【図２】
0005883670.tif 000011
【図３】
0005883670.tif 000012
【図４】
0005883670.tif 000013