特許第6282343号(P6282343)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許6282343ブロードキャスト暗号化の方法、およびコンピュータ・プログラム
<>
  • 特許6282343-ブロードキャスト暗号化の方法、およびコンピュータ・プログラム 図000002
  • 特許6282343-ブロードキャスト暗号化の方法、およびコンピュータ・プログラム 図000003
  • 特許6282343-ブロードキャスト暗号化の方法、およびコンピュータ・プログラム 図000004
  • 特許6282343-ブロードキャスト暗号化の方法、およびコンピュータ・プログラム 図000005
  • 特許6282343-ブロードキャスト暗号化の方法、およびコンピュータ・プログラム 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6282343
(24)【登録日】2018年2月2日
(45)【発行日】2018年2月21日
(54)【発明の名称】ブロードキャスト暗号化の方法、およびコンピュータ・プログラム
(51)【国際特許分類】
   H04L 9/14 20060101AFI20180208BHJP
   H04L 9/08 20060101ALI20180208BHJP
   G06F 21/60 20130101ALI20180208BHJP
【FI】
   H04L9/00 641
   H04L9/00 601B
   G06F21/60 320
【請求項の数】20
【全頁数】16
(21)【出願番号】特願2016-524161(P2016-524161)
(86)(22)【出願日】2014年8月25日
(65)【公表番号】特表2016-541150(P2016-541150A)
(43)【公表日】2016年12月28日
(86)【国際出願番号】JP2014004356
(87)【国際公開番号】WO2015056387
(87)【国際公開日】20150423
【審査請求日】2017年7月6日
(31)【優先権主張番号】14/057,203
(32)【優先日】2013年10月18日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ポンセレオン、ダルシー、ビー
【審査官】 中里 裕正
(56)【参考文献】
【文献】 米国特許第06118873(US,A)
【文献】 米国特許出願公開第2006/0083371(US,A1)
【文献】 米国特許出願公開第2008/0307217(US,A1)
【文献】 特開2010−074537(JP,A)
【文献】 ZHANG, R. et al.,On the Security of Multiple Encryption or CCA-security+CCA-security=CCA-security?,Cryptology ePrint Archive,[online],2003年 9月20日,Report 2003/181,[retrieved on 2017.08.31],URL,http://eprint.iacr.org/2003/181
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
G06F 21/60
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実施される方法であって、前記コンピュータはメモリにロードしたプログラムをプロセッサにより実行することにより読み取る手段、第1の受け取る手段、第2の受け取る手段、選択する手段、第1の特定する手段、適用する手段、第2の特定する手段、および取得する手段を有し、
前記方法は、前記コンピュータが、
前記読み取る手段により、第1の暗号鍵、関連する第1の鍵識別子、および関連する第1の暗号関数識別子を含む鍵束を読み取るステップと、
前記第1の受け取る手段により、暗号化されたコンテンツを受け取るステップと、
前記第2の受け取る手段により、それぞれが識別子を有する複数の暗号化された鍵を受け取るステップと、
前記選択する手段により、前記複数の暗号化された鍵から第1の暗号化された鍵を、前記第1の暗号化された鍵の前記識別子が前記第1の鍵識別子と等しくなるように選択するステップと、
前記第1の特定する手段により、前記第1の暗号関数識別子に対応する第1の暗号関数を特定するステップと、
前記適用する手段により、前記第1の暗号鍵を使用して前記第1の暗号化された鍵に前記第1の暗号関数を適用して、第1の中間暗号鍵を取得するステップと、
前記第2の特定する手段により、前記第1の中間暗号鍵を使用して、コンテンツ暗号鍵を特定するステップと、
前記取得する手段により、前記暗号化されたコンテンツに前記コンテンツ暗号鍵を適用して、復号されたコンテンツを取得するステップと
を含む、方法。
【請求項2】
前記復号されたコンテンツが、マルチメディア・データを含む、請求項1に記載の方法。
【請求項3】
前記第1の暗号関数識別子が、ソルト値である、請求項1に記載の方法。
【請求項4】
前記第1の暗号関数識別子が、ランダム・シードである、請求項1に記載の方法。
【請求項5】
前記第1の暗号関数が、ブロック暗号、AES、Blowfish、C2ブロック暗号、Camellia、CAST−128、CAST−256、CLEFIA、Cryptomeria、DES、FEAL、GOST 28147−89、ICE、IDEA、KASUMI、LOKI97、Lucifer、MacGuffin、MAGENTA、MARS、MISTY1、RC2、RC5、RC6、Skipjack、SMS4、TEA、Triple DES、Twofish、およびXTEAからなる群から選択される、請求項1に記載の方法。
【請求項6】
前記第1の鍵識別子および前記複数の暗号化された鍵の前記識別子が、列および行ペアである、請求項1に記載の方法。
【請求項7】
前記第1の鍵識別子および前記複数の暗号化された鍵の前記識別子が、n−ベクトルである、請求項1に記載の方法。
【請求項8】
前記鍵束が、第2の暗号鍵、関連する第2の鍵識別子、および関連する第2の暗号関数識別子を含み、
前記第1の中間暗号鍵を使用してコンテンツ暗号鍵を特定するステップが、
前記複数の暗号化された鍵から第2の暗号化された鍵を、前記第2の暗号化された鍵の前記識別子が前記第2の鍵識別子と等しくなるように選択するステップと、
前記第2の暗号関数識別子に対応する第2の暗号関数を特定するステップと、
前記第2の暗号鍵を使用して前記第2の暗号化された鍵に前記第2の暗号関数を適用して、第2の中間暗号鍵を取得するステップと、
前記第2の中間暗号鍵を使用して、前記コンテンツ暗号鍵を特定するステップとを含む、請求項1に記載の方法。
【請求項9】
前記第1の中間暗号鍵を使用してコンテンツ暗号鍵を特定するステップが、前記第1の中間暗号鍵に第3の暗号関数を適用するステップを含む、請求項1に記載の方法。
【請求項10】
コンピュータにより実施される方法であって、前記コンピュータはメモリにロードしたプログラムをプロセッサにより実行することにより第1の提供する手段、第2の提供する手段、および第3の提供する手段を有し、
前記方法は、前記コンピュータが、
前記第1の提供する手段により、第1の暗号鍵、関連する第1の鍵識別子、および関連する第1の暗号関数識別子を含む鍵束を提供するステップと、
前記第2の提供する手段により、暗号化されたコンテンツを提供するステップと、
前記第3の提供する手段により、それぞれが鍵識別子を有する複数の暗号化された鍵を提供するステップとを含み
ここで前記暗号化されたコンテンツ
前記複数の暗号化された鍵から第1の暗号化された鍵を、前記第1の暗号化された鍵の前記識別子が前記第1の鍵識別子と等しくなるように選択し、
前記第1の暗号関数識別子に対応する第1の暗号関数を特定し、
前記第1の暗号鍵を使用して前記第1の暗号化された鍵に前記第1の暗号関数を適用して、第1の中間暗号鍵を取得し、
前記第1の中間暗号鍵を使用して、コンテンツ暗号鍵を特定し、
前記コンテンツ暗号鍵を前記暗号化されたコンテンツに適用することによって復号できる方法。
【請求項11】
前記暗号化されたコンテンツが、暗号化されたマルチメディア・データを含む、請求項10に記載の方法。
【請求項12】
前記第1の暗号関数識別子が、ソルト値である、請求項10に記載の方法。
【請求項13】
前記第1の暗号関数識別子が、ランダム・シードである、請求項10に記載の方法。
【請求項14】
前記第1の暗号関数が、ブロック暗号、AES、Blowfish、C2ブロック暗号、Camellia、CAST−128、CAST−256、CLEFIA、Cryptomeria、DES、FEAL、GOST 28147−89、ICE、IDEA、KASUMI、LOKI97、Lucifer、MacGuffin、MAGENTA、MARS、MISTY1、RC2、RC5、RC6、Skipjack、SMS4、TEA、Triple DES、Twofish、およびXTEAからなる群から選択される、請求項10に記載の方法。
【請求項15】
前記第1の鍵識別子および前記複数の暗号化された鍵の前記識別子が、列および行ペアである、請求項10に記載の方法。
【請求項16】
前記第1の鍵識別子および前記複数の暗号化された鍵の前記識別子が、n−ベクトルである、請求項10に記載の方法。
【請求項17】
前記鍵束が、第2の暗号鍵、関連する第2の鍵識別子、および関連する第2の暗号関数識別子を含み、前記第1の中間暗号鍵を使用してコンテンツ暗号鍵を特定するステップが、前記複数の暗号化された鍵から第2の暗号化された鍵を、前記第2の暗号化された鍵の前記識別子が前記第2の鍵識別子と等しくなるように選択するステップと、
前記第2の暗号関数識別子に対応する第2の暗号関数を特定するステップと、
前記第2の暗号鍵を使用して前記第2の暗号化された鍵に前記第2の暗号関数を適用して、第2の中間暗号鍵を取得するステップと、
前記第2の中間暗号鍵を使用して、前記コンテンツ暗号鍵を特定するステップとを含む、請求項10に記載の方法。
【請求項18】
前記第1の中間暗号鍵を使用してコンテンツ暗号鍵を特定するステップが、前記第1の中間暗号鍵に第3の暗号関数を適用するステップを含む、請求項10に記載の方法。
【請求項19】
ブロードキャスト暗号化のためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、コンピュータのメモリに読み出されてプロセッサにより実行されることにより前記コンピュータに、読み取る手段、第1の読み取り手段、第2の読み取り手段、第3の読み取り手段、選択する手段、第1の特定する手段、適用する手段、第2の特定する手段、および取得する手段を提供し、
前記コンピュータ・プログラムは、前記コンピュータに
前記第1の読み取り手段により、第1の暗号鍵と、関連する第1の鍵識別子と、関連する第1の暗号関数識別子とを含む鍵束を読み取り、
前記第2の読み取り手段により、暗号化されたコンテンツを読み取り、
前記第3の読み取り手段により、それぞれが識別子を有する複数の暗号化された鍵を読み取り、
前記選択する手段により、前記複数の暗号化された鍵から第1の暗号化された鍵を、前記第1の暗号化された鍵の前記識別子が前記第1の鍵識別子と等しくなるように選択し、
前記第1の特定する手段により、前記第1の暗号関数識別子に対応する第1の暗号関数を特定し、
前記適用する手段により、前記第1の暗号鍵を使用して前記第1の暗号化された鍵に前記第1の暗号関数を適用して、第1の中間暗号鍵を取得し、
前記第2の特定する手段により、前記第1の中間暗号鍵を使用して、コンテンツ暗号鍵を特定し、
前記取得する手段により、前記暗号化されたコンテンツに前記コンテンツ暗号鍵を適用して、復号されたコンテンツを取得する
ことを実行させる、ブロードキャスト暗号化のためのコンピュータ・プログラム。
【請求項20】
前記鍵束が、コンピュータ可読記憶媒体においてコード化される、請求項19に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、ブロードキャスト暗号化に関し、より詳細には、ブロードキャスト暗号化システムにおける空間効率のよい鍵割当てに関する。
【背景技術】
【0002】
ブロードキャスト暗号化システムにおいて空間効率のよい鍵割当てのために、鍵行列が使用され得る。鍵行列手法では、許可されたコンテンツ消費者(たとえば、デジタル・メディア・プレーヤ)が、鍵行列の列から列へトラバースするために、一方向性暗号化関数を適用する。トラバーサルの各ステップにおいて、暗号化鍵が導出され、プロセスは、目的の鍵が取得されるまで繰り返される。許可されたクライアントは、鍵行列の特定の列における特定の行に関係しているデバイス鍵の一意の小さいセットを割り当てられる。許可されたクライアントが、そのデバイス鍵の1つを使用して暗号化関数を適用するとき、新しい鍵が生成される。この新しい鍵は、後続の列においてセルに適用できる。このプロセスの繰り返しが最終的には、保護されたコンテンツを復号するために使用され得る最終復号鍵を生み出す。鍵行列手法は、鍵の組合せが、その後配布される保護されたコンテンツとともに含まれるデータ(メディア鍵ブロック:Media Key Block、以下に説明する)の変更によって取り消されることを可能にする。
【発明の概要】
【発明が解決しようとする課題】
【0003】
単一のあらかじめ定められた一方向性関数が、行列において後続の鍵を生成するために適用され得る。この関数が事前にわかっている場合、攻撃者が総当たり(brute force)によりさらなる鍵を導出できる可能性がある。特に、わかっている一方向性関数の結果は、すべての考えられる入力に対して計算され得る。結果がいずれかのわかっている暗号化鍵に一致すると、攻撃者は、鍵行列により後方に効果的にトラバースすることによって、所有することを許可されていなかった鍵を導出する。このような総当たり計算の結果は、並行して鍵の列全体と比較され得る。攻撃者が、破られた最終暗号化鍵の複数のセットを有する場合、この並列処理はさらに増える。
【0004】
いずれか1つの列が解読されると、攻撃者は、暗号化鍵束における列のすべてに遡って、それを指す列などを続けて解読することができる。攻撃者は、その後、攻撃者がもともと所有していなかった鍵のセットを所有することになり、コンテンツの許可されていない復号または他の復号デバイスの偽装が可能になる。
【0005】
このような攻撃の危険を最小限にするために、一方向性関数は、総当たり攻撃が実行不可能となるように選択され得る。特に、総当たりにより解読するには法外な時間を要することになる関数が選択され得る。たとえば、AES−128を使用する一方向性関数が、現時点で解読が不可能であると一般的に考えられている。しかしながら攻撃者は、18ヶ月ごとにその平均個別計算能力が倍増している複数のコンピュータを含む、ますます大きくなったクラウド(または、ボットネット)にアクセスできる。計算能力が継続して増加することにより、攻撃者は、毎年暗号化強度のおよそさらなる1ビット分を総当たりにより解読することができる。また、解読効率を桁違いに跳ね上げることができる技術(ハードウェアまたはアルゴリズムに関する)発展(たとえば、レインボー・テーブル、AESのためのCPU支援、マルチコア並列処理、GPU、FPGA、量子計算における超並列処理)が時々ある。これらの進行中の進化を考えると、現在は実際に解読できない一方向性関数が、近い将来に解読される可能性がある。
【課題を解決するための手段】
【0006】
本発明の1つの実施形態によれば、ブロードキャスト暗号化の方法およびそのためのコンピュータ・プログラム製品が提供される。この実施形態では、鍵束(key bundle)が読み取られる。鍵束は、第1の暗号鍵と、関連する第1の鍵識別子と、関連する第1の暗号関数識別子とを含む。暗号化されたコンテンツが受け取られる。複数の暗号化された鍵が受け取られる。各暗号化された鍵が、関連する識別子を有する。複数の暗号化された鍵から第1の暗号化された鍵が、第1の暗号化された鍵の識別子が第1の鍵識別子と等しくなるように選択される。第1の暗号関数識別子に対応して、第1の暗号関数が特定される。第1の暗号関数は、第1の暗号鍵を使用して第1の暗号化された鍵に適用されて、第1の中間暗号鍵を取得する。第1の中間暗号鍵を使用して、コンテンツ暗号鍵が特定される。コンテンツ暗号鍵は、暗号化されたコンテンツに適用されて、復号されたコンテンツを取得する。
【0007】
本発明の別の実施形態によれば、ブロードキャスト暗号化の方法およびそのためのコンピュータ・プログラム製品が提供される。この実施形態では、鍵束が提供される。鍵束は、第1の暗号鍵と、関連する第1の鍵識別子と、関連する第1の暗号関数識別子とを含む。暗号化されたコンテンツが提供される。複数の暗号化された鍵が提供される。各暗号化された鍵が、関連する鍵識別子を有する。複数の暗号化された鍵から第1の暗号化された鍵を、第1の暗号化された鍵の識別子が第1の鍵識別子と等しくなるように選択することと、第1の暗号関数識別子に対応する第1の暗号関数を特定することと、第1の暗号鍵を使用して第1の暗号化された鍵に第1の暗号関数を適用して、第1の中間暗号鍵を取得することと、第1の中間暗号鍵を使用してコンテンツ暗号鍵を特定することと、コンテンツ暗号鍵を暗号化されたコンテンツに適用することとによって、暗号化されたコンテンツが復号できるように、複数の暗号化された鍵は選択される。
【図面の簡単な説明】
【0008】
図1】本開示の一実施形態による、ブロードキャスト暗号化方式の概略図である。
図2】本開示の一実施形態による、例示的デバイス鍵束の図である。
図3】本開示の一実施形態による、例示的メディア鍵ブロックの図である。
図4】本開示の一実施形態による、コンテンツを復号する方法の図である。
図5】本発明の一実施形態による、計算ノードを示す図である。
【発明を実施するための形態】
【0009】
ブロードキャスト暗号化システムにおいて空間効率のよい鍵割当てのために、鍵行列が使用され得る。鍵行列手法では、許可されたコンテンツ消費者(たとえば、デジタル・メディア・プレーヤ)が、鍵行列の列から列へトラバースするために、一方向性暗号化関数を適用する。トラバーサルの各ステップにおいて、暗号化鍵が導出され、プロセスは、目的の鍵が取得されるまで繰り返される。許可されたクライアントは、鍵行列の特定の列における特定の行に関係しているデバイス鍵の一意の小さいセットを割り当てられる。許可されたクライアントが、そのデバイス鍵の1つを使用して暗号化関数を適用するとき、新しい鍵が生成される。この新しい鍵は、後続の列においてセルに適用できる。このプロセスの繰り返しが最終的には、保護されたコンテンツを復号するために使用され得る最終復号鍵を生み出す。鍵行列手法は、鍵の組合せが、その後配布される保護されたコンテンツとともに含まれるデータ(メディア鍵ブロック:Media Key Block、以下に説明する)の変更によって取り消されることを可能にする。
【0010】
単一のあらかじめ定められた一方向性関数が、行列において後続の鍵を生成するために適用され得る。この関数が事前にわかっている場合、攻撃者が総当たり(brute force)によりさらなる鍵を導出できる可能性がある。特に、わかっている一方向性関数の結果は、すべての考えられる入力に対して計算され得る。結果がいずれかのわかっている暗号化鍵に一致すると、攻撃者は、鍵行列により後方に効果的にトラバースすることによって、所有することを許可されていなかった鍵を導出する。このような総当たり計算の結果は、並行して鍵の列全体と比較され得る。攻撃者が、破られた最終暗号化鍵の複数のセットを有する場合、この並列処理はさらに増える。
【0011】
いずれか1つの列が解読されると、攻撃者は、暗号化鍵束における列のすべてに遡って、それを指す列などを続けて解読することができる。攻撃者は、その後、攻撃者がもともと所有していなかった鍵のセットを所有することになり、コンテンツの許可されていない復号または他の復号デバイスの偽装が可能になる。
【0012】
このような攻撃の危険を最小限にするために、一方向性関数は、総当たり攻撃が実行不可能となるように選択され得る。特に、総当たりにより解読するには法外な時間を要することになる関数が選択され得る。たとえば、AES−128を使用する一方向性関数が、現時点で解読が不可能であると一般的に考えられている。しかしながら攻撃者は、18ヶ月ごとにその平均個別計算能力が倍増している複数のコンピュータを含む、ますます大きくなったクラウド(または、ボットネット)にアクセスできる。計算能力が継続して増加することにより、攻撃者は、毎年暗号化強度のおよそさらなる1ビット分を総当たりにより解読することができる。また、解読効率を桁違いに跳ね上げることができる技術(ハードウェアまたはアルゴリズムに関する)発展(たとえば、レインボー・テーブル、AESのためのCPU支援、マルチコア並列処理、GPU、FPGA、量子計算における超並列処理)が時々ある。これらの進行中の進化を考えると、現在は実際に解読できない一方向性関数が、近い将来に解読される可能性がある。
【0013】
ブロードキャスト暗号化における総当たり攻撃の危険に対処するために、本開示は、行列における個々の鍵に適用できる暗号化関数のバリエーションを提供する。暗号化関数がシステム内で変化するとき、効果的な総当たり攻撃を開始することはできない。単一の既知の関数に総当たりすることができる場合でも、適用できる暗号化関数がわからない場合、総当たり攻撃を行うことはできない。また、暗号化関数が変化することを可能にすることによって、同じ効果的暗号化強度を維持しながら、鍵の長さを縮小することができる。
【0014】
図1を参照すると、ブロードキャスト暗号化方式の概略図が提供されている。一般的に、暗号化されるコンテンツ101は、メディア鍵102を用いて暗号化される。メディア鍵(Km)102は、デバイス鍵(Kd)103のセットを使用してメディア鍵ブロック(MKB)104を処理することによって、許可されたコンテンツ消費者によって特定される。メディア鍵102は、暗号化されたコンテンツに固有であり、デバイス鍵103は、許可されたコンテンツ消費者(デジタル・メディア・プレーヤなど)に含まれ、メディア鍵ブロック104は、たとえば、DVDなどの光メディアのリードイン領域に、暗号化されたコンテンツとともに含まれる。
【0015】
このようなブロードキャスト暗号化方式では、鍵生成機関(KGF:KeyGeneration Facility)が、メディア鍵102、およびデバイス鍵103など、複数の暗号化鍵を生成する責任を負っている。鍵生成機関はまた、メディア鍵ブロック104を生成する責任を負い、メディア鍵ブロック104から、許可されたコンテンツ消費者によって所与のメディア鍵102が導出され得る。
【0016】
暗号化されるコンテンツは、ネットワークを介してであっても、DVDなどの光メディア上であっても、配布される前に一意のメディア鍵102を使用して暗号化される。暗号化されたコンテンツと併せて、適切なメディア鍵ブロック102が提供される。いくつかの実施形態では、メディア鍵ブロック104は、暗号化されたコンテンツ101とともに光メディア上に置かれている。他の実施形態では、メディア鍵ブロック104は、暗号化されたコンテンツの配布前に、配布後に、または配布中に、ネットワークを通じて配布される。いくつかの実施形態では、暗号化されたコンテンツおよびメディア鍵ブロック104は、異なる機構によって配布され、いくつかの実施形態では、これらは同じ機構により配布される。
【0017】
メディア・プレーヤなど、暗号化されたコンテンツの許可された消費者が、デバイス鍵(Kd)103の束を提供される。メディア鍵ブロック(MKB)104をそのデバイス鍵103で処理すること105によって、許可されたプレーヤは、メディア鍵(Km)102を特定することができる。メディア鍵(Km)102は、その後、暗号化されたコンテンツ101を復号するために使用される。CPRM/CPPMで行われる方法など、メディア鍵102を取得するためにメディア鍵ブロック104を処理するためのいくつかの方法が知られていることは、当業者には認識されよう。
【0018】
鍵生成機関は、許可されたコンテンツ消費者、または消費者のグループに、デバイス鍵の異なる束を与える。メディア鍵ブロックは、許可されたデバイス鍵のみが、メディア鍵ブロックから所与のメディア鍵を特定することができるように、鍵生成機関によって生成される。所与の消費者またはメディア・プレーヤが、もはや暗号化されたコンテンツを消費することを許可されない場合、鍵生成機関によって生成されるその後のメディア鍵ブロックは、そのような取り消されたプレーヤがメディア鍵を取得すること可能にしない。このようにして、取り消された消費者は、その取り消し後に提供されたコンテンツを復号することができなくなる。
【0019】
図2は、本開示の一実施形態による、例示的デバイス鍵束を示す。デバイス鍵束200は、(行として示される)複数のエントリを含み、エントリのそれぞれが列識別子201と、行識別子202と、鍵203とを含む。いくつかの実施形態では、鍵203は、128ビット(16バイト)のAES鍵であり、関数識別子204は省略され、適用できる関数は、許可されたコンテンツ消費者には推測的に(a priori)わかっている。いくつかの実施形態では、代替的ブロック暗号が使用される。AES、Blowfish、C2ブロック暗号、Camellia、CAST−128、CAST−256、CLEFIA、Cryptomeria、DES、FEAL、GOST 28147−89、ICE、IDEA、KASUMI、LOKI97、Lucifer、MacGuffin、MAGENTA、MARS、MISTY1、RC2、RC5、RC6、Skipjack、SMS4、TEA、Triple DES、Twofish、およびXTEAなどの、ただしこれらに限らない、様々な暗号および対応する鍵の長さが使用され得る。
【0020】
いくつかの実施形態では、各エントリが、関数識別子204を含む。関数識別子204は、どの暗号関数が鍵203に適用できるかを示す。いくつかの実施形態では、関数識別子204は、知られている暗号関数へのソルト(すなわち、暗号関数への追加入力を提供するランダム値)である。いくつかの実施形態では、関数識別子204は、適用される関数の表示と、ソルト値の両方を含む。いくつかの実施形態では、関数識別子204は、関数またはソルト値を導出するのに十分な情報を含む。たとえば、関数識別子204は、その後暗号関数へのソルト値または他のパラメータを生成するために使用される、擬似乱数生成器へのシードを含むことができる。いくつかの実施形態では、関数識別子204は、MathMLなど、数学関数のコード化に適した言語で適用され、コード化される暗号関数の記述を含む。
【0021】
いくつかの実装では、デバイス鍵束200が、考えられる各列識別子(たとえば、0から16383)に対して正確に1つの鍵を含む。デバイス鍵束200に含まれている論理データを記憶するために利用できる様々な物理表現があることは、当業者には認識されよう。たとえば、列および行識別子は、単一の明示的な識別子に結合され得る。列および行は、多次元配列など、エントリを含んだデータ構造のレイアウトによって示すことができる。いくつかの実施形態では、鍵は、3次元行列における位置を識別するために、列値および行値の代わりに、x値、y値、およびz値と関連付けられる。いくつかの実施形態では、鍵は、n次元空間における点を識別するn−ベクトルと関連付けられる。
【0022】
図3は、本開示の一実施形態による、例示的メディア鍵ブロックを示す。メディア鍵ブロック300は、複数の列301、302を含む。第1の列301は、ヘッダ310と、複数の暗号化された値311・・・317とを含む。ヘッダ310は、列識別子(たとえば、列=6)を含む。代替的実施形態では、列ヘッダ310の代わりに、各暗号化された値311・・・317が、セル識別子とペアにされることが可能であり、セル識別子は、列および行番号を含むことができる。メディア鍵ブロック300に含まれている論理データを記憶するために利用できる様々な物理表現があることは、当業者には認識されよう。たとえば、各鍵が、明示的な行識別子と関連付けられることがあり、または行識別子は、配列などのデータ構造内の鍵の位置の結果として生じることがある。
【0023】
第2の列302は、ヘッダ320と、複数の暗号化された値321・・・327とを含む。ヘッダ320は、暗号化された列識別子を含む。いくつかの実施形態では、メディア鍵ブロック300にさらなる列が含まれる。また、いくつかの実施形態は、列ヘッダ310、320に、またはメディア鍵ブロック300に、さらなる情報を含めることができる。たとえば、列ヘッダ310、320は、目的の鍵が取得されたかどうかを確認するために使用され得る検証値(verification value)を含むことができる。
【0024】
図4は、本開示の一実施形態による、暗号化されたコンテンツを復号する方法を示す。401において、コンテンツ消費者が、暗号化されたコンテンツおよびメディア鍵ブロック(たとえば、300)を受け取る。いくつかの実施形態では、メディア鍵ブロックおよび暗号化されたコンテンツは、たとえばDVDなどのマシン可読媒体で、一緒に受け取られる。他の実施形態では、暗号化されたコンテンツおよびメディア鍵ブロックは、別々に受け取られる。402において、コンテンツ消費者は、メディア鍵ブロックを調べて、MKBに含まれる第1の列(たとえば、310)の列識別子を特定する。403において、コンテンツ消費者は、同じ列識別子(たとえば、列6)を有するデバイス鍵束から、デバイス鍵(たとえば、243)、行識別子(たとえば、行4、242)、および関数識別子(たとえば、AES−128、244)を選択する。いくつかの実施形態では、デバイス鍵束は、DVDメディア・プレーヤなど、許可されたコンテンツ消費者にある。他の実施形態では、デバイス鍵束は、ネットワークを介して、またはマシン可読媒体を介して、コンテンツ消費者に伝えられる。
【0025】
404において、コンテンツ消費者は、以前に特定された行識別子に対応するMKBのセル(たとえば、列6、行4、314)にデバイス鍵(たとえば、243)を適用する。405において、コンテンツ消費者は、結果として生じた鍵を取得する。406において、結果として生じた鍵は、端末鍵(terminal key)であるかどうかを特定するためにテストされる。いくつかの実施形態では、端末鍵は、MKBに含まれる検証フィールドに端末鍵を適用して、あらかじめ定められた値(たとえば、0xDEADBEEF)を取得することによって識別される。端末鍵が見つけられた場合、端末鍵が使用されて、コンテンツ鍵407を取得する。いくつかの実施形態では、端末鍵は、コンテンツ鍵である。他の実施形態では、端末鍵は、コンテンツ鍵を復号するために使用される。さらに他の実施形態では、コンテンツ鍵を取得するために、一連の関数が端末鍵に適用される。
【0026】
結果として生じた鍵が、端末ではない場合、409においてメディア消費者は、結果として生じた鍵をMKBの後続の列のヘッダ(たとえば、320)に適用する。410において、コンテンツ消費者は、列ヘッダへの鍵の適用から、復号された列識別子を取得する。この新しい列識別子を使用して、端末鍵が得られるまで、一連の次の鍵を取得するために、ステップ403〜406が繰り返される。ステップ404のいくつかの実施形態では、コンテンツ消費者のデバイス鍵と先の結果として生じた鍵の両方が、MKBの識別されたセルに適用される。たとえば、403において関連する列に対してデバイス鍵が特定されると、結果として生じた鍵は、MKBの対応する列および行に適用されて、中間値を特定する。デバイス鍵は、その後次の鍵を特定するために適用される。いくつかの実施形態では、デバイス鍵は、結果として生じた鍵より前に適用され得る。いくつかの実施形態では、デバイス鍵および先の結果として生じた鍵から次の鍵を取得するために、一連のさらなる関数が適用される。いくつかの実施形態では、先の結果として生じた鍵と併せて使用される暗号関数は、ヘッダ320に含まれる関数識別子によって特定される。
【0027】
上述のように、ポリモーフィック(polymorphic)鍵行列手法は、多くの暗号化関数が同じブロードキャスト暗号化方式で使用されることを可能にする。コンテンツの許可された消費者が、暗号化関数の記述と結合されたデバイス鍵のセット、および関数と鍵とのマッピングを提供される。記述は、関数識別子、ソルト値、またはコンテンツ消費者が必要な関数を適用するのに十分な何らかの他の情報であってよい。消費者は、そのトラバーサルに必要とされない(すなわち、その行/列の組合せ用ではない)関数の記述を与えられない。関数は変化するので、攻撃者には、未知の鍵を導出するためにどの一方向性関数を解読しなければならないかがわからない。攻撃者がある関数にマッチする答えを取得する場合、攻撃者は、それが正しい関数であるかどうかがわからず、したがって、総当たり攻撃を事実上実施することができない。所与の鍵のための正しい関数についての正確な推測でも、さらなる列へのトラバースに必要な関数に関する情報を攻撃者に提供しない。したがって、本開示のポリモーフィック鍵行列の適用は、未知の鍵を取得することに向けられた総当たり攻撃を事実上不可能にする。いくつかの実施形態では、コンテンツ提供者は、以後の鍵を生成するために、実在のメディア鍵ブロックに適用される関数のすべてを知る。しかしながら、いくつかの実施形態では、既存のコンテンツをアクセスできない状態にすることなく、コンテンツ提供者を変更することによって、既存のシステムにさらなる関数が適用され得る。いくつかの実施形態では、コンテンツ提供者ごとに、異なる関数を割り当てられる。いくつかの実施形態では、使用中の関数は、フォレンジクス・システム(forensics system)に知られ、欠陥を生じた鍵を検出するために使用され得る。
【0028】
さらに、ブロードキャスト暗号化システムの効果的な暗号化強度のいくつかは、ポリモーフィック・トラバーサル関数に再配置することができ、所与の長さの鍵の強度は、大いに増加する。いくつかの応用では、未知の鍵の保護は、個々のコンテンツ(または、単一メッセージ)の保護よりも重要である。ブロードキャスト暗号化技法は、このような環境において適用され得る。したがって、起動鍵のサイズを削減することができ、その結果として、MKBを使用するシステムにおいてMKBサイズが削減され得る。たとえば、適用される暗号化の強度は、個々のコンテンツをその有効期間(たとえそれがわずか数時間または数日であっても)の間保護するように選択され得る。その結果、集約された復号鍵束サイズは、著しく削減され得る。いくつかの実装において、復号鍵束サイズは、半分以上削減され得る。復号鍵束は、(クライアントではワンタイムの静的鍵および関数ストレージに含まれているのとは対照的に)ブロードキャスト伝送と結合されるので、進行中の伝送オーバヘッドを著しく削減する。
【0029】
いくつかの実施形態では、行列における各セルのためのトラバーサル関数は異なる。これは、コンテンツ消費者によって要求される空間に関してより大きい鍵を配布することと等しくなる。コンテンツ消費者の空間要求は高いが、暗号化されたコンテンツとともに提供される復号鍵束は小さい。したがって、暗号化されたコンテンツの適切な保護を維持しながら、利用できる帯域幅から有効利用が行われる。
【0030】
いくつかの実施形態では、トラバーサル関数は、行列において複数のセルに使用される。このような部分ポリモーフィック行列(Partial Polymorphic Matrix)手法では、セルへの関数の様々な割当てを使用することができる。たとえば、各列または各行に異なる関数を使用することができる。別の例として、いくつかの列が1つの関数を有することができると同時に、他の列は行ごとに1つの関数を有する。この開示に従って、セルへの関数の任意の割当てを採用することができる。
【0031】
上述のように、本開示の主題は、ブロードキャスト暗号化方式において使用されるのに適している。本開示は、CPRM/CPPMなど、既存のブロードキャスト暗号化方式に適用できる。コンテンツ消費者に提供される鍵束に、本開示に従った関数識別子を加えることによって、既存のブロードキャスト暗号化方式が変更され得る。
【0032】
次に図5を参照すると、本発明の一実施形態による計算ノードの一例の概略図が提供されている。計算ノード10は、好適な計算ノードの一例にすぎず、本明細書に記載する本発明の実施形態の使用または機能の範囲に関していかなる制限を提案することも意図していない。それとは関係なく、計算ノード10は、実装されること、または以上に示す機能のいずれかを行うこと、あるいはその両方が可能である。
【0033】
計算ノード10には、コンピュータ・システム/サーバ12があり、数多くの他の汎用または特殊用途のコンピューティング・システム環境または構成で動作可能である。コンピュータ・システム/サーバ12とともに使用するのに適している可能性がある、よく知られているコンピューティング・システム、環境、または構成、あるいはその組合せの例には、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドもしくはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムもしくはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが含まれるが、これらに限らない。
【0034】
コンピュータ・システム/サーバ12は、コンピュータ・システムによって実行される、プログラム・モジュールなどの、コンピュータ・システム実行可能命令の一般的な文脈で説明されることがある。一般的に、プログラム・モジュールは、特定のタスクを行うまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、論理、データ構造などを含むことができる。コンピュータ・システム/サーバ12は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実践され得る。分散コンピューティング環境では、プログラム・モジュールが、メモリ記憶デバイスを含んだローカルとリモートの両方のコンピュータ・システム記憶媒体に置かれることがある。
【0035】
図5に示すように、計算ノード10におけるコンピュータ・システム/サーバ12が、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム/サーバ12の構成要素は、1つもしくは複数のプロセッサまたは処理ユニット16と、システム・メモリ28と、システム・メモリ28を含む様々なシステム構成要素をプロセッサ16に結合するバス18とを含むことができるが、これらに限らない。
【0036】
バス18は、メモリ・バスまたはメモリ・コントローラ、周辺機器用バス、アクセラレーテッド・グラフィックス・ポート(accelerated graphics port)、および様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスなど、いくつかのタイプのバス構造のいずれかの1つまたは複数を表わす。例として、限定ではなく、このようなアーキテクチャには、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、拡張ISA(EISA:EnhancedISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:VideoElectronics Standards Association)ローカル・バス、および周辺構成要素相互接続(PCI:Peripheral Component Interconnect)バスが含まれる。
【0037】
コンピュータ・システム/サーバ12は、一般に様々なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ12によってアクセス可能であるいかなる利用可能媒体であってもよく、揮発媒体と不揮発媒体、取り外し可能な媒体と取り外し不可能な媒体をともに含む。
【0038】
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30、またはキャッシュ・メモリ32、あるいはその両方など、揮発性メモリの形式のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ12は、他の取り外し可能/取り外し不可能、揮発性/不揮発性の、コンピュータ・システム記憶媒体をさらに含むことができる。単に例として、取り外し不可能な、不揮発性磁気媒体(図示せず、一般に「ハード・ドライブ」と呼ばれる)からの読み取りおよびこれへの書き込みのために、ストレージ・システム34を設けることができる。図示していないが、取り外し可能な不揮発性磁気ディスク(たとえば、「フロッピー(R)・ディスク」)からの読み取りまたはこれへの書き込みのための磁気ディスク・ドライブ、およびCD−ROM、DVD−ROMもしくは他の光媒体など、取り外し可能な不揮発性光ディスクからの読み取りまたはこれへの書き込みのための光ディスク・ドライブを設けることができる。このような場合、1つまたは複数のデータ媒体のインタフェースによって、それぞれがバス18に接続され得る。以下にさらに示して説明するように、メモリ28は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールのセット(たとえば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
【0039】
プログラム・モジュール42のセット(少なくとも1つ)を有するプログラム/ユーティリティ40は、例として、限定ではなくメモリ28に、ならびにオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データに、記憶することができる。オペレーティング・システム、1つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれ、またはその何らかの組合せは、ネットワーキング環境の実装を含むことができる。プログラム・モジュール42は、一般に、本明細書に記載する本発明の実施形態の機能または方法、あるいはその両方を実行する。
【0040】
コンピュータ・システム/サーバ12は、キーボード、ポインティング・デバイス、ディスプレイ24などのような1つもしくは複数の外部デバイス14、またはユーザがコンピュータ・システム/サーバ12と対話できるようにする1つもしくは複数のデバイス、またはコンピュータ・システム/サーバ12が1つもしくは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス(たとえば、ネットワーク・カード、モデムなど)、あるいはその組合せと通信することもできる。このような通信は、入力/出力(I/O)インタフェース22を介して行うことができる。さらにコンピュータ・システム/サーバ12は、ローカル・エリア・ネットワーク(LAN)、または一般的なワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(たとえば、インターネット)、あるいはその組合せのような、1つまたは複数のネットワークと、ネットワーク・アダプタ20を介して通信することができる。図示するように、ネットワーク・アダプタ20は、コンピュータ・システム/サーバ12の他の構成要素とバス18を介して通信する。図示していないが、他のハードウェア構成要素またはソフトウェア構成要素、あるいはその両方を、コンピュータ・システム/サーバ12と併せて使用できることを理解されたい。例には、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらに限らない。
【0041】
当業者には理解されるように、本発明の諸態様は、システム、方法、またはコンピュータ・プログラム製品として具体化されることが可能である。したがって、本発明の諸態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアの態様とハードウェアの態様を組み合わせた実施形態の形をとることができ、これらを本明細書ではすべて一般的に「回路」、「モジュール」、または「システム」と呼ぶことがある。さらに、本発明の諸態様は、コンピュータ可読プログラム・コードを包含した1つまたは複数のコンピュータ可読媒体において具体化されるコンピュータ・プログラム製品の形をとることができる。
【0042】
1つまたは複数のコンピュータ可読媒体の任意の組合せが使用され得る。コンピュータ可読媒体は、コンピュータ可読信号媒体、またはコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体が、たとえば、電子、磁気、光、電磁気、赤外線、または半導体のシステム、装置、またはデバイス、あるいは上記の任意の好適な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のさらなる具体例(非網羅的リスト)には、1つもしくは複数の配線を有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラマブル読み出し専用メモリ(EPROMもしくはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、光学式記憶デバイス、磁気記憶デバイス、または上記の任意の好適な組合せが含まれる。この文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらと関連させて使用するためのプログラムを収めるまたは記憶することができる任意の有形媒体とすることができる。
【0043】
コンピュータ可読信号媒体は、たとえば、ベースバンドに、または搬送波の一部として、コンピュータ可読プログラム・コードを包含した伝搬データ信号を含むことができる。このような伝搬信号は、電磁気、光、またはその任意の好適な組合せなどの、ただしこれらに限らない、様々な形のいずれかをとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためにプログラムを伝える、伝搬する、または伝送することができる任意のコンピュータ可読媒体であってもよい。
【0044】
コンピュータ可読媒体に包含されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、RFなど、または上記の任意の好適な組合せを含む、ただしこれらに限らない、任意の適切な媒体を使用して送信されてもよい。
【0045】
本発明の諸態様のための動作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの、従来の手続きプログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれてもよい。プログラム・コードは、すべてユーザのコンピュータ上で実行する、スタンドアロン型ソフトウェア・パッケージとして、一部はユーザのコンピュータ上で実行する、一部はユーザのコンピュータ上で実行し、一部はリモート・コンピュータ上で実行する、またはすべてリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)などの、任意のタイプのネットワークを通じてユーザのコンピュータに接続することができ、または(たとえば、インターネット・サービス・プロバイダを使用してインターネットを通じて)外部コンピュータへの接続を行うことができる。
【0046】
本発明の諸実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して、本発明の諸態様を以下に述べる。フローチャート図またはブロック図、あるいはその両方の各ブロック、およびフローチャート図またはブロック図、あるいはその両方におけるブロックの組合せは、コンピュータ・プログラム命令によって実施され得ることは理解されよう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサにより実行される命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに指定される機能/行為を実施するための手段を生み出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。
【0047】
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に格納された命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに指定される機能/行為を実施する命令を組み込んだ製品を作り出すように、コンピュータ可読媒体に記憶されて、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに、特定の方法で機能するように指示するものであってもよい。
【0048】
コンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル装置上で実行される命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに指定される機能/行為を実施するためのプロセスを提供するように、コンピュータ実施プロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実行させるものであってもよい。
【0049】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。この関連で、フローチャートまたはブロック図の各ブロックは、(1つまたは複数の)指定された論理機能を実施するための1つまたは複数の実行可能命令を含むコードのモジュール、セグメント、または一部を表わすことができる。いくつかの代替的な実装では、ブロックに示した機能が図に示した順序を外れて行われ得ることにも留意されたい。たとえば、連続して示した2つのブロックは、実際には実質的に同時に実行されることがあり、またはブロックは、関連する機能に応じて、時には逆の順序で実行されることがある。ブロック図またはフローチャート図、あるいはその両方の各ブロック、およびブロック図またはフローチャート図、あるいはその両方におけるブロックの組合せは、指定された機能または行為を行う専用ハードウェアベースのシステム、あるいは専用ハードウェアおよびコンピュータ命令の組合せによって実施され得ることにも注意されたい。
【0050】
本発明の様々な実施形態の説明を、例示の目的で提示したが、網羅的であること、または開示する実施形態に限定することを意図していない。説明した実施形態の範囲および趣旨を逸脱することなく、多くの変更形態および変形形態が当業者には明らかとなるであろう。本明細書で使用する用語は、実施形態の原理、実際の応用、または市場で見つけられる技術を超える技術改善を最も良く説明するように、または、当業者が本明細書に開示する実施形態を理解できるように選択した。
図1
図2
図3
図4
図5