Nothing Special   »   [go: up one dir, main page]

JP5357292B2 - デジタル著作権管理エンジンのシステムおよび方法 - Google Patents

デジタル著作権管理エンジンのシステムおよび方法 Download PDF

Info

Publication number
JP5357292B2
JP5357292B2 JP2012066252A JP2012066252A JP5357292B2 JP 5357292 B2 JP5357292 B2 JP 5357292B2 JP 2012066252 A JP2012066252 A JP 2012066252A JP 2012066252 A JP2012066252 A JP 2012066252A JP 5357292 B2 JP5357292 B2 JP 5357292B2
Authority
JP
Japan
Prior art keywords
content
node
link
drm
control program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012066252A
Other languages
English (en)
Other versions
JP2012155734A (ja
Inventor
ボコ−ジボ,ジル
ジェ. ブフ,ジュリアン
ジー. メネンテ,マイケル
ビー. ブラッドリー,ウィリアム
Original Assignee
インタートラスト テクノロジーズ コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インタートラスト テクノロジーズ コーポレイション filed Critical インタートラスト テクノロジーズ コーポレイション
Publication of JP2012155734A publication Critical patent/JP2012155734A/ja
Application granted granted Critical
Publication of JP5357292B2 publication Critical patent/JP5357292B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • G06F21/1013Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to locations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/20Point-of-sale [POS] network systems
    • G06Q20/202Interconnection or interaction of plural electronic cash registers [ECR] or to host computer, e.g. network details, transfer of information from host to ECR or from ECR to ECR
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0492Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload by using a location-limited connection, e.g. near-field communication or limited proximity of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2111Location-sensitive, e.g. geographical location, GPS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution
    • H04L2209/603Digital right managament [DRM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/101Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying security measures for digital rights management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Finance (AREA)
  • Power Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

[関連出願の引用]
本出願は、2005年10月18日に米国仮出願第60/728,089号明細書、2006年2月9日に出願の米国仮出願第60/772,024号明細書、2006年4月10日に出願の米国仮出願第60/744,574号明細書、2006年4月10日に出願の米国仮出願第60/791,179号明細書、2006年5月8日に出願の米国仮出願第60/746,712号明細書、2006年5月8日に出願の米国仮出願第60/798,925号明細書、および2006年8月1日に出願の米国仮出願第60/835,061号明細書の利益を請求する。米国仮出願第60/728,089号明細書、第60/772,024号明細書、第60/744,574号明細書、第60/791,179号明細書、第60/746,712号明細書、第60/798,925号明細書、および第60/835,061号明細書は、任意の目的のために参照によってその全体が本明細書に援用されている。
[著作権認可]
本特許書類の開示の一部は、著作権保護の対象となるマテリアルを含む。本著作権者は、本特許文書または本特許の開示事項が米国特許商標局の特許ファイルまたは記録に示されているので、本特許文書または本特許の開示事項を誰かがファクシミリで複写することに異議を申立てないが、その外のものについては全著作権を留保するものである。
現代のコンピューティングシステムにおいて、電子コンテンツ、サービスおよび/または処理リソースに対するアクセスを限定すること、および/または一定のエンティティのみが一定の動作を実行できるようにすることが、望ましいことが多い。そのような制御を可能にするために、様々な技術が開発または提案されている。これらの技術は、デジタル著作権管理(DRM)技術と呼ばれることが多い。なぜなら、一般に、これらの目的は、デジタルまたは他の電子コンテンツ、サービスまたはリソースの様々なエンティティの著作権を管理することにあるからである。多くの従来技術の問題は、過度に複雑で、限定的で、比較的に柔軟性がなく、一定の普通の種類の関係およびプロセスを有効にすることができないこと、および/または他のDRMシステムとの相互運用性がないということである。
これらの問題の一部または全てを改善するために使用できる改善されたDRM技術に関するシステムおよび方法を、本明細書に記載する。ここに記載する進歩性のある一連の作業の実施形態は、プロセス、装置、システム、デバイス、方法、コンピュータ可読媒体として、および/またはそれらの組み合わせとして、数多くの方法で実現できることを理解すべきである。
コンテンツに対するアクセスを制御する既存のシステムは、電子コンテンツへのアクセスを認可することに関連して、ライセンスにアクセスする構成要素を含むことがある。しかしながら、そのような構成要素は、ライセンスに関連する著作権管理情報、リンクまたはノードの、連鎖またはグラフについて、柔軟性のない評価を一般に実行する。それらは、コンテンツへのアクセスを認可するにあたって、異種の認可スキームに適合することができない、および/または一定のDRMシステムを用いて動作することができないことが多い。本発明の実施形態は、ライセンスに関連して、付加的なルーチンまたは制御プログラムを格納、利用および/または実行することによって、そのような欠点を解決するものであり、動的な認可機能を提供し、分散した認可リソースを有効にし、および/またはアクセス機能を合理化することができる。
更に、多くの既存のシステムは、単純な認可/状態関連データが維持される場合のみに向けられる。これらのシステムは、他のノードに関連するすでに導出したデータに基づいて条件を決定する等の、アクセス認可がデータの複数層への依存を必要とし得る状況には、対処することができない。本発明の実施形態は、DRM制御プログラムに関連して状態データベースの実現を介してこれらの欠点を克服するものであり、確実な設定条件メモリ機能を提供し、呼出しから呼出しまでの持続的な状態情報を提供し、または状態読み書き機能を有効にする。状態読み書き機能は、制御プログラム実行を改善し、および/またはより効果的なアクセス認可を実行する。
更なる既存のシステムは、ライセンス構成要素を保護するにあたって、公開鍵の使用に関わる構成要素を含むDRMライセンスまたはDRM構造を実現する場合がある。しかしながら、これらのシステムに関する欠点は、ハッカーが、アクセスまたはライセンスの実現に必要なデジタル署名を偽造したり、DRMライセンス構造に存在する関連の相互関係を利用したりできる、という可能性を含む。本発明の1つ以上の実施形態は、特定の保護された鍵の使用を含むライセンスオブジェクトの、デジタル署名および/またはインタロック署名の実現を介して、そのような欠点を解決する。これらの実施形態の利点は、公開鍵を介する認可されていないアクセスの防止、ならびにライセンス要素の相互関係に由来する関連機能を含む。
他の既存のシステムは、第1エンティティと第2エンティティとの間(例えば2つの著作権管理エンティティの間)の近似決定を行う構成要素を含むことがある。そのようなシステムは、例えば、扱いにくい近似照合手順を実現することによって、保護されたコンテンツが一定の環境外では複製できないことを示す規則を実施することがある。しかしながら、これらのシステムの欠点は、近似照合そのものの実行を不適当に妨げることなく、保護されたコンテンツにセキュリティを提供することもできないということである。
本発明の実施形態は、乱数および/または秘密シードの送信に関連する機能を介して保証される、簡潔な近似検出プロトコルを提供することによって、この欠点および他の欠点を解決する。1つ以上の実施形態の関連する利点は、たとえリクエストが傍受されても、攻撃者が正しい反応を決定することを不可能にする暗号を含む。
要約すれば、過度に複雑で、限定的で、および/または比較的に柔軟性がない技術に頼ることなく、電子コンテンツに対するアクセスを適切に認可できるシステム、一定の普通の種類の関係およびプロセスを有効にできるシステム、および/または他のDRMシステムと相互運用性のあるシステムに対するニーズがある。
米国特許出願公開第2005/0027871−A1号明細書 米国特許第6,668,325Bl号明細書 米国特許出願公開第2005−0183072−A1号明細書 米国特許出願公開第2003−0023856−A1号明細書 米国特許出願公開第2006−0123249−A1号明細書 米国特許第7,124,170号Bl号明細書
本発明と一貫性のあるシステム、方法および製品は、電子コンテンツに対するアクセスの認可、および電子コンテンツに関連するデータ処理に向けられる。
1つの例示的実施形態において、メモリに格納された電子コンテンツへのアクセスを認可する方法が提供される。この例示的実施形態の方法は、電子コンテンツにアクセスするリクエストを受信し、電子コンテンツに関連するライセンスを検索し、リクエストが認可されるか否かを決定するデジタル著作権管理エンジンを使用して第1制御プログラムを実行してもよい。他の例示的実施形態は、メモリに格納された1つ以上のリンクオブジェクトを評価し、リンクが有効であるか否か、および/または1つ以上の条件が満たされるか否かを決定する第2制御プログラムを実行してもよい。
上述の概説および以下の詳細な説明は、単に例示的かつ説明的なものであり、記載する本発明を限定するものではないことを理解すべきである。本明細書に記載する機能および/またはバリエーションに加えて、更なる機能および/またはバリエーションを提供してもよい。例えば、本発明は、開示される機能および/または組み合わせの様々な組み合わせおよび副次的な組み合わせ、および以下の詳細な説明において開示されるいくつかの更なる機能の副次的な組み合わせに向けられてもよい。
進歩性のある一連の作業は、添付の図面に関連して以下の詳細な説明を参照することによって、容易に理解される。
電子コンテンツの使用を管理するための例示的システムを示す図である。 進歩性のある一連の作業の実施形態を実施するために使用できるシステムのより詳細な例を示す図である。 例示的なデジタル著作権管理(DRM)エンジンが、DRMを使用するネットワーク内で機能し得る方法を示す図である。 DRMシステムにおける関係をモデル化するために使用するノードおよびリンクのセットを示す図である。 リクエストされた動作が認可されるか否かをDRMエンジンの実施形態が決定する方法を例示するフローチャートである。 進歩性のある一連の作業の一実施形態によるDRMライセンスの例を示す図である。 一実施形態におけるエージェントの使用方法を例示する図である。 一実施形態におけるエージェントの使用方法を例示する図である。 DRMライセンスの実施例を示す図である。 リクエストされた動作が認可されるか否かをDRMエンジンが決定し得る方法のより詳細な実施例を示す図である。 一実施形態のオブジェクトの制御プログラムをDRMエンジンが実行する方法のより詳細な実施例を示す図である。 装置上で実行する例示的実施形態のDRMエンジンを示す図である。 一実施形態において制御プログラムを実行する際に関わるステップを例示するフローチャートである。 一実施形態においてコンテンツを消費するクライアントアプリケーションを構成する要素を示す図である。 一実施形態においてコンテンツパッケージングアプリケーションを構成する要素を示す図である。 一実施形態による鍵導出メカニズムを示す図である。 DRMシステムの実施例を示す図である。 一時的なログインを提供するDRMシステムの実施例を示す図である。 企業文書を管理する例示的システムの高水準アーキテクチャを示す。 図18に示すようなシステムを使用することによって、文書に対するアクセスまたは文書の他の使用を管理する、方法の実施例を示す図である。 図18に示すようなシステムを使用することによって、文書に対するアクセスまたは文書の他の使用を管理する、方法の更なる実施例を示す図である。 図20に示す実施例の更なる機能を示す図である。 企業内で電子コンテンツを管理するための別の例示的システムを示す図である。 本明細書に記載するシステムおよび方法を健康管理記録の管理に応用できる方法を説明する図である。 本明細書に示すシステムおよび方法を電子購読サービスの状況に使用できる方法を示す図である。 本明細書に記載するシステムおよび方法をホームネットワークドメインの状況に使用できる方法を示す図である。 一つの例示的実施形態においてホストアプリケーションとDRMクライアントエンジンとの間で行われる対話処理を示す図である。 一つの例示的実施形態においてホストアプリケーションとパッケージングエンジンとの間で行われる対話処理を示す図である。 一実施形態によるライセンスをより詳細に示す図である。 一つの例示的実施形態におけるリンクとノードとの関係を示す図である。 仮想マシンの例示的な実現の操作環境を示す図である。 一実施形態による拡張状態ブロックデータ構造を示す図である。 一実施形態におけるデータセグメントのメモリイメージを示す図である。 一実施形態におけるコードセグメントのメモリイメージの実施例を示す図である。 一実施形態におけるエクスポートエントリメモリイメージの実施例を示す図である。 一実施形態におけるエクスポートテーブルエントリの一般的な実施例を示す図である。 例示的なエントリポイントのためのエクスポートテーブルエントリの実施例を示す図である。 ライセンス転送プロトコルの実施例を示す図である。 一実施形態によるライセンス転送プロトコルの別の実施例を示す図である。 一実施形態におけるライセンスオブジェクトの完全性を保護するためのメカニズムを示す図である。 別の実施形態におけるライセンスオブジェクトの完全性を保護するためのメカニズムを示す図である。 一実施形態による近似照合プロトコルを示す図である。 一実施形態による近似照合プロトコルの使用方法を示す図である。 一実施形態におけるクライアントとライセンスサーバとの間の対話処理を示す図である。 一実施形態におけるクライアントとライセンスサーバとの間の対話処理をより詳細に示す図である。 複数の役割を有するエンティティの実施例を示す図である。 一実施形態によるブートストラッププロトコルを示す図である。 一実施形態におけるcl4n―exと例示的XML標準化との関係を示す図である。
進歩性のある一連の作業の詳細な説明を、下記に提供する。いくつかの実施形態を記載するが、進歩性のある一連の作業は、任意の一実施形態に限定されるものではなく、これに代わって数多くの代替案、変更および等価物を含むことを理解すべきである。また、進歩性のある一連の作業の完全な理解を提供するために、以下の説明に数多くの具体的な詳細を記載するが、一部の実施形態は、これらの詳細の一部または全部を用いることなく実施することができる。さらに、明快さのために、関連技術分野において公知の一定の技術的資料は、進歩性のある一連の作業を不必要に不明確にすることを回避するために詳述しない。
本発明の譲受人に譲渡された米国特許出願第10/863,551号明細書(公開第2005/0027871 A1号明細書)(以下「551出願」と呼ぶ)は、参照によって本明細書に援用されており、多くの以前のDRM実現を特徴づける弱点の一部を克服するデジタル著作権管理(DRM)アーキテクチャおよび新規なDRMエンジンの実施形態を記載している。本出願は、551出願に記載されるアーキテクチャおよびDRMエンジンに対する増強、拡張および変更、ならびにその代替の実施形態、さらには新規な構成要素、アーキテクチャおよび実施形態を記載する。従って、本明細書に記載する資料は、551出願に記載されるようなアーキテクチャおよび/またはDRMエンジンの状況ならびに他の状況において使用できるということが理解される。
1.例示的なDRMシステム
図1は、電子コンテンツを管理するための例示的なシステム100を示す。図1に示すように、電子コンテンツ103の著作権を保持するエンティティ102は、エンドユーザ108a〜eによる配信および消費のために、コンテンツをパッケージングする(エンドユーザ108a〜eは、集合的に「エンドユーザ108」と呼び、文脈から明らかなように、参照符号108は、エンドユーザ、またはコンピューティングシステムのエンドユーザを、互換可能に指す)。例えば、エンティティ102は、コンテンツ所有者、作成者、またはプロバイダ(例えば音楽家、映画スタジオ、出版社、ソフトウェア企業、著者、モバイルサービスプロバイダ、インターネットのコンテンツダウンロードまたは購読サービス、ケーブルテレビまたは衛星テレビのプロバイダ、会社の従業員等、またはそれらのために作動するエンティティ)を含んでもよい。コンテンツ103は、任意の電子コンテンツ(例えばデジタルビデオ、オーディオコンテンツまたはテキストコンテンツ、映画、曲、ビデオゲーム、1つのソフトウェア、電子メールメッセージ、テキストメッセージ、ワードプロセッシング文書、報告、または他の任意の娯楽コンテンツ、企業コンテンツ、または他のコンテンツ)を含んでもよい。
図1に示す例において、エンティティ102は、パッケージングエンジン109を使用することによって、ライセンス106を、パッケージングされたコンテンツ104と関連させる。ライセンス106は、ポリシー105またはエンティティ102の他の要望に基づいており、コンテンツの許可および/または禁止された使用を特定し、および/または1つ以上の条件を特定する。1つ以上の条件は、コンテンツを利用するために満たされなければならず、使用の条件または結果として満たされなければならない。コンテンツも同様に、暗号化またはデジタル署名技術などの1つ以上の暗号メカニズムによってセキュリティを施されてもよく、そのために、信用権限110は、適切な暗号鍵や証明書などを得るために使用されてもよい。
図1に示すように、パッケージングされたコンテンツ104およびライセンス106は、任意の適切な手段によって(例えば、インターネットなどのネットワーク112、ローカルエリアネットワーク103、ワイヤレスネットワーク、仮想専用ネットワーク107、広域ネットワークなどを介して、あるいはケーブル、衛星、またはセルラ方式通信114を介して、および/または記録可能媒体116(例えばコンパクトディスク(CD)、デジタル多用途ディスク(DVD)、フラッシュメモリカード(例えばセキュアデジタル(SD)カード)など)を介して)、エンドユーザ108に提供することができる。パッケージングされたコンテンツ104は、同一または異なるソースから受信される、単一のパッケージまたは送信113において、または独立したパッケージまたは送信において、ライセンス106と共にユーザに配信することができる。
エンドユーザのシステム(例えば、パーソナルコンピュータ108e、自動車電話108a、テレビジョンおよび/またはテレビセットトップボックス108c、携帯オーディオプレーヤおよび/またはビデオプレーヤ、電子ブックリーダなど)は、アプリケーションソフトウェア116、ハードウェア、および/またはコンテンツを検索およびレンダリングするように操作可能な特殊目的論理を含む。ユーザのシステムは、本明細書においてデジタル著作権管理エンジン118と呼ぶソフトウェアおよび/またはハードウェアを更に含む。デジタル著作権管理エンジン118は、パッケージングされたコンテンツ104に関連するライセンス106を評価し、ライセンス106によって許可される場合にのみ、例えばコンテンツに対するユーザアクセスを選択的に認可することによって、その条件を実施する(および/またはアプリケーション116がそのような条件を実施することを可能にする)。デジタル著作権管理エンジン118は、構造的または機能的にアプリケーション116に統合してもよく、あるいはソフトウェアおよび/またはハードウェアの独立した部分を含んでもよい。それに代わって、またはそれに加えて、ユーザのシステム(例えばシステム108c)は、システム108bなどの遠隔システム(例えば、サーバ、ユーザの装置ネットワークにおける別の装置(例えばパーソナルコンピュータまたはテレビセットトップボックス)など)と通信してもよい。遠隔システムは、ユーザによってすでに入手またはリクエストされたコンテンツに対するユーザアクセスを認可するべきかどうかに関して、デジタル著作権管理エンジンを使用して決定120を行う。
デジタル著作権管理エンジン、および/またはユーザのシステムまたはその遠隔通信における他のソフトウェアは、保護されたコンテンツに対するユーザのアクセスまたは他の使用に関して、情報を更に記録してもよい。一部の実施形態において、この情報の一部または全部は、遠隔団体(例えば、情報センタ122、コンテンツ作成者、コンテンツ所有者、プロバイダ102、ユーザの管理者、そのために作動するエンティティなど)に伝えられてもよい。その使用目的は、例えば、収入(例えば使用料、広告ベースの収入など)の割り当て、ユーザプリファレンスの決定、システムポリシーの強化(例えば機密情報が使用される場合および方法を監視すること)などを行うためである。図1は、例示的なDRMアーキテクチャおよび例示的な関係の集合を示すものであり、本明細書に記載するシステムおよび方法は、任意の適切な状況において実施できることが理解され、従って、図1は、限定のためではなく、実例および説明のために提供するものであることが理解される。
図2は、進歩性のある一連の作業の実施形態を実施するために使用できるシステム200のより詳細な例を示す。例えば、システム200は、エンドユーザの装置108、コンテンツプロバイダの装置109などの実施形態を含んでもよい。例えば、システム200は、汎用コンピューティング装置(例えばパーソナルコンピュータ108eまたはネットワークサーバ105)、または特殊化したコンピューティング装置(例えば携帯電話108a、携帯情報端末、携帯オーディオプレーヤまたはビデオプレーヤ、テレビセットトップボックス、キオスク、ゲームシステム等)を含んでもよい。システム200は、プロセッサ202、メモリ204、ユーザインタフェース206、リムーバブルメモリ208を受け入れるためのポート207、ネットワークインターフェース210、および上述の要素を接続するための1つ以上のバス212を一般に含む。システム200の操作は、メモリ204に格納されたプログラムの誘導の下で稼働するプロセッサ202によって、一般に制御される。メモリ204は、高速のランダムアクセスメモリ(RAM)および不揮発性メモリ(例えば磁気ディスクおよび/またはフラッシュEEPROM)を一般に含む。メモリ204の一部分は、システム200の他の構成要素による読み出しまたは書き込みができないように制限してもよい。ポート207は、コンピュータ可読媒体208(例えば、フレキシブルディスク、CD―ROM、DVD、メモリカード、SDカード、他の磁気媒体または光学媒体など)を受け入れるためのディスクドライブまたはメモリスロットを備えてもよい。ネットワークインターフェース210は、ネットワーク220(例えばインターネットまたはイントラネット(例えばLAN、WAN、VPNなど))を介して、システム200と他のコンピューティング装置(および/またはコンピューティング装置のネットワーク)との接続を提供するように一般に操作可能であり、そのような接続(例えば無線、イーサネット(登録商標)など)を物理的に行うために、1つ以上の通信技術を使用してもよい。一部の実施形態において、システム200は、システム200または他のエンティティのユーザによる不正操作から保護される演算処理装置203を更に含んでもよい。そのような安全な処理装置は、デリケートな操作(例えば、デジタル著作権管理プロセスの、鍵管理、署名照合、および他の態様)のセキュリティを高めるのを補助することができる。
図2に示すように、コンピューティング装置200のメモリ204は、コンピューティング装置200の操作を制御するための様々なプログラムまたはモジュールを含んでもよい。例えば、メモリ204は、アプリケーションおよび周辺装置などの実行を管理するためのオペレーティングシステム220と、レンダリング保護された電子コンテンツのためのホストアプリケーション230と、本明細書に記載する著作権管理機能の一部または全部を実現するためのDRMエンジン232とを一般に含む。本明細書の他の場所に記載するように、DRMエンジン232は、他の様々なモジュール(例えば、制御プログラムを実行するための仮想マシン222、仮想マシン222用に状態情報を格納するための状態データベース224、および/または1つ以上の暗号モジュール226)を含み、相互操作し、および/または制御してよい。暗号モジュール226は、コンテンツの暗号化および/または解読、ハッシュ関数およびメッセージ認証コードの計算、デジタル署名の評価などの暗号操作を実行する。メモリ204は、保護されたコンテンツ228、および関連するライセンス229、ならびに暗号鍵、証明書など(図示せず)を更に一般に含む。
図2に例示するものと類似または同一のコンピューティング装置、または実質的に他の任意の適切なコンピューティング装置(図2に示す構成要素の一部を有しないコンピューティング装置、および/または図示しない他の構成要素を有するコンピューティング装置含む)を用いて、本明細書に記載するシステムおよび方法を実施することができることを、当業者は理解する。従って、図2は、限定のためではなく、説明のために提供するものであることを、理解すべきである。
デジタル著作権管理エンジンおよび関連するシステムおよび方法を本明細書に記載する。それらを使用することによって、図1および図2に示すようなシステム、または他の種類のシステムの、著作権管理機能の一部または全部を提供することができる。また、様々な他のシステムおよび方法を以下に述べる。それらは、図1および図2に示すようなシステムの状況、ならびに他の状況(デジタル著作権管理とは無関係な状況を含む)において使用することができる。
2.DRMエンジンアーキテクチャ
一実施形態において、比較的に単純で、制限のない、柔軟なデジタル著作権管理(DRM)エンジンを使用することによって、中心的なDRM機能を実現する。好ましい実施形態において、このDRMエンジンは、551出願に記載されるようなウェブサービス環境、および実質的に任意のホスト環境またはソフトウエアアーキテクチャの中に、比較的に容易に統合するように設計される。好ましい実施形態において、DRMエンジンは、特定の媒体フォーマットおよび暗号プロトコルから独立しており、特定の場合による必要に応じて、設計者が標準化技術または著作権を主張できる技術を柔軟に使用することを可能にする。DRMエンジンの好ましい実施形態により用いられるガバナンスモデルは、単純であるが、高度な関係およびビジネスモデルを表すように使用することができる。
以下に記載するDRMエンジンの例示的実施形態の一部は、「オクトパス」と呼ばれる実施例に関する。しかし、本発明は、オクトパスの実施例の具体的な詳細に限定されるものではなく、当該実施例は、限定ではなく説明のために提供するものであることが理解される。
1.1.概要
図3は、DRMを使用するシステム302において、例示的なDRMエンジン303aが機能し得る方法を示す。図3に示すように、一実施形態において、DRMエンジン303aは、ホストアプリケーション304a(例えば、オーディオプレーヤおよび/またはビデオプレーヤなどのコンテンツレンダリングアプリケーション、テキストレンダリングアプリケーション(例えば電子メールプログラム、ワードプロセッサ、電子ブックリーダ、またはドキュメントリーダなど))の中に埋め込まれるかまたは統合され、あるいはそれらと通信する。一実施形態において、DRMエンジン303は、DRM機能を実行し、サービス(例えば暗号化、解読、ファイル管理)のためにホストアプリケーション304a依存し、および/または、他の機能はホストによってより効果的に提供することができる。例えば、好ましい実施形態において、DRMエンジン303aは、コンテンツ308を保護するライセンス306を含むDRMオブジェクト305を操作するように操作可能である。一部の実施形態において、DRMエンジン303は、ホストアプリケーション304aに対して鍵を更に配信してもよい。図3に示すように、DRMエンジン303aおよびホストアプリケーション304aの一方または両方は、処理および/またはそれぞれのタスクを完了するために必要な情報のために、ウェブサービス305aおよび/またはホストサービス306aを利用してもよい。551出願は、そのようなサービスの例を提供し、DRMエンジン303aおよびホストアプリケーション304aがそれと相互操作し得る態様を提供する。
図3に示す例において、DRMエンジン303、ホストアプリケーション304a、ホストサービス306a、およびウェブサービスインタフェース305aは、装置300a(例えばエンドユーザのパーソナルコンピュータ(PC))上にロードされる。装置300aは、サーバ300b(そこからコンテンツ308およびライセンス306を入手する)、ならびに携帯機器300d(それに対して装置300aがコンテンツ308および/またはライセンス306を転送し得る)と通信で接続される。これらの他の装置の各々は、DRMエンジン300aと類似または同一のDRMエンジン303を含んでもよく、装置の特定のホストアプリケーションおよびホスト環境に統合することができる。例えば、サーバ300bは、ホストアプリケーション304bを含んでもよい。ホストアプリケーション304bは、コンテンツおよび/またはライセンスのバルクパッケージングを実行し、DRMエンジン300aを使用することによってコンテンツに関連する制御を評価する。コンテンツは、任意の再配信制約に従うようにパッケージングされる。同様に、装置300cは、コンテンツのレンダリングおよびパッケージングができるホストアプリケーション304cを含んでもよく、装置300aは、単にコンテンツをレンダリングできるホストアプリケーションを含んでもよい。ホスト環境の潜在的多様性のさらに別の例として、装置300dは、ウェブサービスインタフェースを含まなくてもよいが、これに代わって装置300aとの通信に依存してもよく、ホストアプリケーション304dおよび/またはDRMエンジン303dに対するウェブサービスインタフェース305aは、任意のウェブサービスの使用を必要とする。図3は、DRMエンジンを使用できるシステムの単なる一例である。本明細書に記載するDRMエンジンの実施形態は、多くの異なる方法でアプリケーションおよびシステムに実現および統合することができ、図3に示す説明例に限定されるものではないことが理解される。
1.2.オブジェクト
好ましい実施形態において、コンテンツの保護およびガバナンスのオブジェクトの使用目的は、システムにおけるエンティティを示し、コンテンツを保護し、使用規則をコンテンツに関連させ、リクエスト時にアクセスが認可されるか否かを決定することにある。
後で詳しく述べるように、一実施形態において、以下のオブジェクトを使用する。
Figure 0005357292
1.2.1.ノードオブジェクト
ノードオブジェクトは、システムのエンティティを示すために使用する。実際には、ノードは通常、ユーザ、装置、またはグループを示す。ノードオブジェクトは、ノードに関連するエンティティの一定の特性を示す関連属性を、更に一般に有する。
例えば、図4は、2人のユーザ(キサン400およびノックス402)、2つの装置(PC404および携帯装置406)、およびグループ(例えば、ケアリー家の家族408、公共図書館の家族410、特定の音楽サービスの加入者412、RIAA認可装置414、および特定の企業によって製造される装置416)を示すいくつかのエンティティを示し、それぞれは、関連するノードオブジェクトを有する。
一実施形態において、ノードオブジェクトは、ノードが示すものを規定する属性を含む。
属性の一例は、ノード種別である。ノード種別属性は、ユーザ、グループ、または装置を示す他に、他のエンティティを示すために使用することができる。一部の実施形態において、例えば、本明細書の他の場所に記載する鍵の導出および配信の技術の実施形態が使用される場合、ノードオブジェクトは、暗号鍵情報を更に含むことができる。
一部の実施形態において、ノードオブジェクトは、ノードオブジェクトの機密部分にアクセスするサブシステムに対して、機密情報を対象にするために使用する、機密性非対称鍵ペアを更に含む。このことは、ノードが示すエンティティ(例えば音楽サービス412)、またはノードの管理を担う一部のエンティティであり得る(例えば、エンドユーザ(例えばノックス402)は、自分の携帯機器406を管理する責任があり得る)。
1.2.2.リンクオブジェクト
好ましい実施形態において、リンクオブジェクトは、2つのノードの関係を示すために使用される署名されたオブジェクトである。例えば、図4において、PCノード404からノックス402へのリンク418は、所有権を示す。ノックス402からケアリー家ノード408へのリンクは帰属関係を示し、ケアリー家ノード408から音楽サービス加入者ノード412へのリンクも帰属関係を示す。一実施形態において、リンクオブジェクトは2つのノードの関係を表すので、図4に示す関係は、10のリンクを使用して示すことができる。
図4に示すように、グラフ420は、ノードの関係を表すために使用できる。ここで、リンクオブジェクトは、ノード間の誘導されたエッジである。例えば、図4において、ケアリー家ノード408と音楽サービスノード412との関係は、頂点がケアリー家ノード408および音楽サービスノード412であるグラフにおいて、誘導されたエッジ422が存在することを表明する。ノックス402およびキサン400は、ケアリー家408の家族である。ケアリー家408が音楽サービス412にリンクされ、ノックス402がケアリー家408にリンクされるので、ノックス402と音楽サービス412との間に経路があると言うことができる。
あるノードから他のノードまでの経路がある場合、DRMエンジンは、別のノードから到達可能なノードを検討する。このことにより、制御を書き込むことが可能である。それにより、装置からノードに到達可能であるという条件に基づいて、保護されたコンテンツに対するアクセスの許可を可能にする。この装置においては、保護されたコンテンツに対するアクセスをリクエストするアプリケーションが実行中である。
後で詳しく述べるように、リンクオブジェクトは、コンテンツ鍵の導出を可能にする一部の暗号データを更に任意に含むことができる。リンクオブジェクトは、リンクが有効であると考え得る条件を規定する制御プログラムを、更に含んでもよい。そのような制御プログラムは、リンクの有効性を評価するために(例えば、認可グラフにおける所与のノードに達するためにリンクを使用できるか否かを決定するために)、DRMエンジンの仮想マシンによって実行または解釈する(これらの用語は本明細書において互換可能に使用される)ことができる。
一実施形態において、リンクは、署名される。任意の適切なデジタル署名メカニズムを使用することができる。一実施形態において、DRMエンジンは、リンクオブジェクトが署名される方法を規定せず、いかなる関連証明書も評価しない。これに代わって、DRMエンジンは、任意のそのような署名および/または証明書を検証するにあたって、ホストシステムに依存する。このことにより、システム設計者またはシステムアドミニストレータは、リンクオブジェクトの寿命の規定、無効化などができる(鍵または証明書の失効、取り消しなどを用いて)。従って、特定の保護されたコンテンツおよび/またはリンクの状況において、制御プログラムおよびDRMオブジェクトのDRMエンジンの評価によって提供されるポリシー管理およびセキュリティに加えて、更なるポリシー管理およびセキュリティが提供される(例えば、リンクオブジェクト自身に適切な制御プログラムを含めることによって、リンクの失効を代替的または付加的に実施することができ、これが実行されると、失効日または他の有効期間が実施される)。一実施形態において、DRMエンジンは、包括的なものであり、ホストアプリケーションおよび/または環境により用いられる、任意の適切な暗号化、デジタル署名、取り消し、および/または他のセキュリティスキームとともに作用する。従って、例えば、DRMエンジンが、特定のリンクが適切に署名されているか否かを決定する必要がある場合、単にホストアプリケーション(および/またはホストまたはシステムの暗号サービス)を呼び出すことによって、システム設計者によって選ばれた特定の署名スキームに従って署名を検証する。このDRMエンジンそのものの詳細は不明でよい。他の実施態様において、DRMエンジンそのものは、実際の署名評価を実行し、使用する適切な署名アルゴリズムを単に示すにあたって、ホストに依存する。
1.2.3.コンテンツ保護およびガバナンス
再び図3を参照して、代表的なシナリオにおいて、コンテンツプロバイダ300bは、パッケージングエンジンを含むアプリケーション304bを使用することによって、1つの電子コンテンツ308を暗号化または暗号によるセキュリティを施し、そのコンテンツのアクセスまたは他の使用を管理するライセンス306を作成する。一実施形態において、ライセンス308は、コンテンツ308の使用方法を特定するオブジェクトのセット305を含み、それを入手するために必要なコンテンツの暗号化キーおよび/または情報を更に含む。一実施形態において、コンテンツ308およびライセンス306は、論理的に独立しているが、共に内部参照によって束縛される(例えばオブジェクトID310を使用して)。多くの場合において、コンテンツおよびライセンスを共に格納および/または配信することは便利であり得るが、好ましい実施形態においては必要ではない。一実施形態において、1つのライセンスを複数のコンテンツ項目に適用することができ、複数のライセンスを任意の単一のコンテンツ項目に適用することができる。
図3に示すように、クライアント装置300a上で実行するホストアプリケーション304aは、コンテンツ308の特定の部分に対するアクションを実行したい場合、DRMエンジン303aに、実行しようとするアクション(例えば「再生」)が許可されるか否かを照合するように求める。一実施形態において、DRMエンジン303aは、コンテンツライセンス306を含むオブジェクト305に含まれる情報から、コンテンツ308に関連する制御プログラムをロードおよび実行する。アクション実行の許可は、制御プログラムによって戻される結果に基づいて、認可または拒絶される。許可は、一部の条件が満たされることを一般に必要とする。例えば、あるノードが、リクエストするエンティティ/装置300aを示すノードから到達可能であるという条件などである。
図5は、リクエストされるアクション(例えば1つのコンテンツの閲覧)が認可されるか否かを、DRMエンジンの実施形態が決定できる方法を例示するフローチャートである。
図5に示すように、所与のアクションに関するライセンスを評価するリクエストが受信される(500)。例えば、指定のアクションを実行するリクエストをホストがユーザから受信した後で、このリクエストはホストアプリケーションから受信されてもよい。図5に示すように、DRMエンジンは、指定されたライセンスを評価し(502)、リクエストされたアクションが認可されるか否かを決定する(504)。例えば、ライセンスは、DRMエンジンが実行する制御プログラムを含んでもよく、その出力は、認可決定を行うために使用される。リクエストされたアクションをライセンスが認可する場合(すなわちブロック504から「YES」で出て行く場合)、DRMエンジンは、リクエストが認可されることをホストアプリケーションに示す(506)。それ以外の場合、DRMエンジンは、リクエストが拒絶されたことをホストアプリケーションに示す(508)。一部の実施形態において、DRMエンジンは、ホストアプリケーションに様々なメタデータ(例えば認可の授与に関連する条件)(例えば義務および/またはコールバック)を更に返してもよく、あるいは認可の拒否の原因に関する追加情報を提供してもよい。例えば、DRMエンジンは、リクエストされたアクションの実行に関する一定の情報をホストアプリケーションが記録する場合にのみ、あるいは、例えばライセンスを再評価する所定の時間間隔において、ホストアプリケーションがDRMエンジンを呼び出す限り、リクエストされたアクションが許可されることを示してもよい。DRMエンジンによって返されるそのような義務、コールバック、および他のメタデータに関する追加情報を、以下に提供する。リクエストされたアクションが認可される場合、(例えばライセンスのContentKeyオブジェクトから)コンテンツ鍵が検索され、リクエストされた使用についてコンテンツを公開するために使用される。
1.2.4.ライセンスDRMオブジェクト
図6に示すように、好ましい実施形態において、ライセンス600は、オブジェクトのセットである。図6に示す例において、ライセンス600は、ContentKeyオブジェクト602、プロテクタオブジェクト604、コントローラオブジェクト606、および制御オブジェクト608を含む。図6に示すように、ContentKeyオブジェクト602は、暗号化された鍵データ610(例えば暗号化されたコンテンツ項目612を解読するために必要な鍵の暗号化されたバージョン)、および鍵データを暗号化するために使用する暗号システムに関する情報を含む。プロテクタオブジェクト604は、ContentKeyオブジェクト602を1つ以上のコンテンツオブジェクト614に結合する。図6に示すように、制御オブジェクト608は、コンテンツオブジェクト614が管理される方法を特定する制御プログラム616を、含んで保護する。好ましい実施形態において、制御プログラム616は、DRMエンジンによって操作される仮想マシン上で実行する、1つの実行可能なバイトコードである。制御プログラムは、制御プログラムにおいて指定された条件の満足について照合することによって、コンテンツに対して一定のアクションを実行できるか否かを管理する。その条件とは、例えば、有効なリンクオブジェクトを使用して一定のノードに到達可能か否か、一定の状態オブジェクトが格納されているか否か、ホスト環境が一定の特徴を有するか否かなどである。再び図6を参照して、コントローラオブジェクト606は、1つ以上のContentKeyオブジェクト602を制御オブジェクト608に結合するために使用される。
ライセンス600は、付加的なオブジェクト(例えば、ライセンスによって必要とされるコンテンツアクセス条件の、機械可読記述または人間が読める記述を提供するメタデータ)を更に含んでもよい。それに代わって、またはそれに加えて、そのようなメタデータは、他のオブジェクト(例えば制御オブジェクト608)の1つのリソース拡張として含めることができる。図6に示す実施形態において、制御オブジェクト608およびコントローラオブジェクト606は両方とも署名されるので、システムは、コンテンツアクセス決定を行うために制御情報を使用する前に、制御情報が信頼されたソースからのものであることを検証できる。一実施形態において、制御オブジェクト608の有効性は、コントローラオブジェクト606で含まれる安全なハッシュの検証によって、更に照合することができる。コントローラオブジェクト606は、参照するContentKeyオブジェクト602に含まれる鍵または他の鍵データの各々についてハッシュ値を更に含むことができる。それによって、鍵データとContentKeyオブジェクトとの間の結合に攻撃者が不正操作することを比較的に困難にする。
図6に示すように、一実施形態において、コンテンツ612は、暗号化され、コンテンツオブジェクト614に含まれる。使用される復号キー610は、ContentKeyオブジェクト602の中に含まれ(またはそれによって参照され)、2つの間の結合は、プロテクタオブジェクト604によって示される。図6に示すように、一意なIDは、コンテンツオブジェクト614とContentKeyオブジェクト602との間の結合を容易にするために使用される。コンテンツ612を解読するための鍵610の使用を管理する規則は、制御オブジェクト608の中に含まれる。制御オブジェクト608とContentKey602との間の結合は、ここでも一意なIDを使用して、コントローラオブジェクト606によって示される。
図6は、好ましい一実施形態においてライセンスを含むオブジェクトを示すが、本明細書に記載するDRMのシステムおよび方法は、このライセンス構造の使用に限定されないことが理解される。例えば、限定するものではないが、ライセンスの使用にあたって、図6に示す様々なオブジェクトの機能は、より少ない数のオブジェクトにおいて組み合わせたり、または付加的なオブジェクトにわたって広げたり、または異なる態様においてオブジェクト間に分解したりすることができる。それに代わって、またはそれに加えて、本明細書に記載するシステムおよび方法の実施形態は、図6に示すライセンス構造によって有効にされる機能の一部が欠如したライセンス、および/または付加的な機能を提供するライセンスによって実施することができる。従って、本明細書に記載する原理に従って、ライセンスをコンテンツに関連させる任意の適切なメカニズムを使用できることが理解される。但し、好ましい実施形態においては、図6に示す有利な構造が使用される。
1.3.状態データベース
一実施形態において、DRMエンジンは、保護状態記憶メカニズムを提供するために使用できる安全で持続的なオブジェクト記憶を含むかまたはアクセスする。そのような機能は、呼出しから呼出しまで持続的な状態情報の読込みおよび書込みを行うことが可能な制御プログラムを有効にするのに役立つ。そのような状態データベースは、状態オブジェクト(例えば、再生回数、最初の使用日、集積されたレンダリング時間など)、ならびに帰属関係状態、および/または他の任意の適切なデータを格納するために使用することができる。
一部の実施形態において、第1システム上で実行するDRMエンジンは、ローカル状態データベースに対するアクセスを有しなくてもよく、遠隔状態データベースにアクセスするように操作可能でもよい(例えばウェブおよび/またはホストサービスを使用して)。
一部の場合において、第1システム上で実行するDRMエンジンは、遠隔システム上のデータベースに格納された状態情報にアクセスすることが必要な場合がある。例えば、第1システムは、状態データベースを含まなくてもよく、またはそれ自身の状態データベースにおいて必要とする情報を有しなくてもよい。一部の実施形態において、DRMエンジンがそのような場合に直面する場合、後で詳しく述べるように、サービスインタフェースを介して、および/またはエージェントプログラムを使用することにより、遠隔状態データベースにアクセスしてもよい。
1.4.制御プログラムについて
本明細書に記載するシステムおよび方法は、様々な状況において制御プログラムを利用する。例えば、制御オブジェクトに含まれる制御プログラムは、保護コンテンツの使用を管理する規則および条件を表すために使用することができる。また、リンクオブジェクトにおける制御プログラムは、所与の目的(例えばノード到達可能性分析)についてリンクが有効か否かを決定する規則および条件を表すために使用することができる。そのような制御プログラムは、本明細書においてリンク制約と呼ぶことがある。制御プログラムを使用できるさらに別の状況は、エージェントまたは委託オブジェクトにあり、制御コードは、(エージェント制御プログラムの場合は)別のエンティティに代わって、または(委託制御プログラムの場合は)別の制御に代わって、アクションを実行するために使用される。
一実施形態において、物理的なプロセッサによって直接に実行されることとは対照的に、制御プログラムは、DRMエンジンによってホストされる仮想マシンによって実行または解釈される。しかしながら、制御プログラムを実行するために、物理的なプロセッサまたは他のハードウェア論理を容易に構成できることが理解される。一実施形態において、制御プログラムはバイトコードフォーマットになっており、それはプラットホーム全体の相互接続性を容易にする。
好ましい実施形態において、制御プログラムは、アセンブラ言語で記述され、アセンブラプログラムによってバイトコードに変換される。他の実施態様において、テンプレートおよび/または高水準の著作権表現言語は、著作権、規則、および/または条件の初期表現を提供するために使用することができる。コンパイラは、高水準の表現を、本明細書に記載するDRMエンジンの実施形態によって実行するバイトコードに変換するために使用することができる。例えば、著作権を主張できるDRMフォーマットで書かれる著作権表現は、適切なコンパイラによって、本明細書に記載するDRMエンジンの実施形態で実行する機能的に同等のバイトコード表現に変換または翻訳することができる。従って、保護されたコンテンツは、著作権を主張できるDRMフォーマットを解釈するシステム、ならびに本明細書に記載するようなDRMエンジンを含むシステム上で、コンテンツプロバイダによって特定される条件に従って使用できる。本明細書に記載するデジタル著作権管理エンジンのシステムおよび方法は、仮想マシンによって解釈されるバイトコード著作権表現の使用に限定されないことも理解すべきである。これに代わって、一部の実施形態において、著作権は、任意の適切な態様で表現することができる(例えば、高水準著作権表現言語(REL)、テンプレートなどを使用して)。本明細書に記載する認可グラフおよび/または他の技術は、そのような著作権表現を認識および評価するように設計されたアプリケーションプログラムを使用して実行することができる。
1.4.1.条件
前述のように、制御プログラムは、リクエストが認可されるコンテンツを使用すること、リンクが有効とみなされることなどのために、満たさなければならない1つ以上の条件を一般に表現する。コンテンツプロバイダまたはシステム設計者の必要条件に依存して、および/またはシステムによって提供される機能に依存して、任意の適切な条件を使用することができる。
好ましい実施形態において、DRMエンジンによって使用される仮想マシンは、例えば以下の一部または全ての条件を検証できる任意の複雑なプログラムをサポートする。
・時間ベースの条件:クライアント時間値を、制御プログラムにおいて指定される値と比較すること。
・特定ノードを対象にすること:一定のノードが別のノードから到達可能か否かを照合すること。このコンセプトは、ドメイン、購読、帰属関係などのモデルについてサポートを提供する。
・一定のノード属性が指定された値に一致するか否かを検証すること:例えばノードに関連する装置のレンダリング機能が忠実度必要条件を満たすか否かなど、ノードの属性のいずれかを照合すること。
・クライアントにおけるセキュリティ関連メタデータが最新であるか否かを検証すること:例えば、許容できるバージョンのクライアントソフトウェアおよび正確な時間測定をクライアントが有する否かを照合すること。一部の実施形態において、そのような照合は、例えば、データ証明サービスからの1つ以上の証明書のアサーションに依存してもよい。
・状態ベースの条件:状態データベースにおける情報を照合すること。
例えば、状態データベースは、制御プログラムの以前の実行の結果として生成される情報、および/または購読、帰属関係などの所有権を証明するトークンを含んでもよい。それによって、カウンタ(例えば再生の回数、エクスポートの回数、経過時間限度など)、および記録されたイベントおよび条件に関する他の情報を含む条件の評価を可能にする。
・環境特性:例えば、ホスト環境におけるハードウェアおよび/またはソフトウェアが一定の特徴(例えば義務の認識および実施をする能力)を有するか否かを照合すること、一定のソフトウェアまたはハードウェア構成要素(例えば安全な出力チャネル)の有無を照合すること、近似情報(例えば別の装置またはアプリケーションに対するリクエスト側装置の近似)を照合すること、ネットワークサービスおよび/またはエージェントを使用して遠隔システムの特徴および/または遠隔システムに格納されたデータを照合することなど。
これらの条件または他の任意の適切な条件を使用して、制御オブジェクトは、コンテンツをエクスポート、転送、レンダリングなどできる方法を管理する規則を表現することができる。上記の条件リストは、事実上、例示的なものであり、所望の条件を検証するためにシステムコールを実現することによって、任意の適切な条件を規定および使用できることが理解される。例えば、限定するものではないが、特定のサブネットワークに装置が配置されることを要求することが望ましい場合、システムコールを規定することができる(例えばGetIPConfig)。これはホスト装置のIPConfig情報(または、システムコールがエージェントを使用する遠隔装置上で稼働する場合は遠隔装置のIPConfig情報)を返すように操作可能である。これは、定められたサブネットワークに装置が配置されたか否かを検証するために制御プログラムによって使用できる。
1.4.2.エージェント
本明細書に記載するDRMエンジン関連のシステムおよび方法の好ましい実施形態は、制御プログラムを運ぶ独立オブジェクトにサポートを提供する。そのような「エージェント」は、指定された機能(例えば遠隔DRMエンジンの安全な状態記憶への書き込み)を達成するために、遠隔システム上で稼働するDRMエンジンに分散することができる。例えば、エージェントは、遠隔サービスとの接触、または遠隔制御プログラムの実行の結果として、送信することができる。エージェントは、コンテンツ移動操作の遂行、カウンタの初期化、ノードの登録取り消しなどのために使用することもできる。さらに別の例として、エージェントは、遠隔ノードから別のノードまでの到達可能性分析を実行するために使用できる。そのようなエージェントは、例えば、第1ユーザに登録された装置が第2ユーザに登録されることを禁止するポリシーを実施する際に有用であり得る。第2ユーザが登録をリクエストする場合、第2ユーザ、または第2ユーザの代わりに作動する登録サービスによって、エージェントが装置に送信されることによって、装置がすでに第1ユーザに登録されているか否かを決定する。装置がすでに第1ユーザに登録されている場合、第2ユーザの登録リクエストは拒絶される。
図7Aおよび図7Bは、一実施形態におけるエージェントの使用方法を例示する。図7Aに示すように、2つのエンティティ(システムA700およびシステムB702)はコンピュータネットワーク703を通じて互いに通信することを望み、DRMシステムが使用されていると仮定されたい。DRMシステムは、一定の操作(例えば保護されたコンテンツにアクセスすること)に関する規則を記述および実施することができ、DRMオブジェクトを作成することができる。DRMオブジェクトは、帰属関係、登録状態などを示すために使用することができる。場合によっては、規則は、システムA700の上で評価されるが、システムB702の状態に依存する情報を必要とする。その情報は、システムA700上で規則を実施しているDRMシステム704によって信頼される必要がある。
例えば、システムA700上のDRMシステム704は、システムA700からシステムB702までのコンテンツの遠隔レンダリングを実行する規則を評価/実施してもよい。規則は、システムB702が一定の装置グループの一部である場合のみに、そのような操作が許可されることを示してもよい。そのグループにおける帰属関係は、システムB702上でアクセス可能な安全な状態データベース716における状態オブジェクト711の存在によって表明される。
そのような状況を処理するために、好ましい実施形態において使用される方法は、エージェントを利用する。例えば、システムA700がシステムB702から情報を必要とする場合、システムA700は、エージェント705を準備する。一実施形態において、エージェント705は、システムA700からシステムB702に送信される制御プログラム(例えばDRMエンジンによって実行できる一連の命令)である。一実施形態において、システムA700は、認証された通信チャネル720を通じて、エージェントコード705をシステムB702に送信するので、システムA700は、エージェント705が実行するシステムB702上に実際にあることを確信することができる。一部の実施形態において、システムA700は、エージェントコード705とともに、1つ以上のパラメータを、システムB702に通信してもよい。1つ以上のパラメータは、エージェントコード705がその作業を遂行するために使用する。
図7Bに示すように、システムB702は、エージェント705および任意の関連するエージェントパラメータを受信し、エージェントコード705を実行する。エージェント705がシステムB702上で実行されると、好ましくは認証された通信チャネル710を通じて、エージェント705は、システムBの状態データベース716にアクセスし、状態情報711を検索、および/または状態情報711を用いて1つ以上の計算を実行し、システムA700に結果713を送信する。ここで、システムA700は、その評価を継続するために必要な情報を有する。
1.4.3.リンク制約
一実施形態において、コンテンツ項目上の一定の操作(例えば「再生」)の実行を管理する規則を示すルーチンのセットは、「アクション制御」と呼ばれる。リンクオブジェクト上の有効性制約を示すルーチンのセットは、「リンク制約」を呼ばれる。アクション制御と同様に、好ましい実施形態において、リンク制約は、条件の任意の適切な組み合わせを表現することができる。更にアクション制御と同様に、リンク制約は、サービスインタフェースまたはエージェントを使用して、ローカルおよび/または遠隔で評価することができる。
1.4.4.義務およびコールバック
一実施形態において、一定のアクションは、認可される際に、ホストアプリケーションからの更なる関与を必要とする。義務は、リクエストするコンテンツ鍵の使用時または使用後に、ホストアプリケーションによって実行される必要のある操作を表す。コールバックは、リクエストするコンテンツ鍵の使用時または使用後に、ホストアプリケーションによって実行される必要のある制御プログラムのルーチンのうちの1つ以上に対する呼び出しを表す。義務の例は、限定するものではないが、コンテンツのレンダリング中に一定の出力および/または制御をオフにするという必要条件(例えば、保護されていない出力に対するコンテンツの書き込むことを防止したり、またはコンテンツの一定の重要なセグメントを早送りすることを防止したりするため)、コンテンツの使用に関する情報を、記録したり(例えば測定または審査情報)、および/または遠隔サイト(例えば情報センタ、サービスプロバイダなど)に送信するという必要条件、エージェントプログラムをローカルまたは遠隔で実行するという必要条件などを含む。コールバックの例は、限定するものではないが、コンテンツの使用が停止されたときに、一定の経過時間(例えばコンテンツ使用の経過時間)の後、一定のイベント(例えばトライアルコンテンツレンダリング期間の完了)の発生の後などに、ホストが、一定の絶対時間において制御プログラムをコールバックする、という必要条件を含む。例えば、一定の経過時間後のコールバックは、予算、再生回数などを増減させるために使用することができる(例えば、少なくとも一定時間にわたって1つのコンテンツを使用する場合、ユーザ予算から引き落とすのみ)。従って、ユーザが誤って再生ボタンを押し、即時に停止を押した場合、ユーザのアカウントから引き落としされることを防止する。
一実施形態において、異なる種類の義務およびコールバックがある。アプリケーションがサポートまたは理解しない任意の重要な義務またはコールバックに遭遇した場合(例えばアプリケーションを実行した後で義務の種類が規定されたため)、アプリケーションは、この義務パラメータまたはコールバックパラメータが返されたアクションの継続を拒絶する必要がある。
1.4.5.実施例
図8〜12は、DRMエンジンの例示的実施形態が1つのコンテンツの使用を制御できる方法の実施例を示す。図8を参照して、DRMエンジンが、コンテンツ項目802および804のグループ800を再生するリクエストを受信したと仮定されたい。例えば、コンテンツ項目802および804は、マルチメディアプレゼンテーション、異なるトラックのアルバム、購読サービスから入手する異なるコンテンツ、電子メール添付などの、異なる副次的な部分を含んでもよい。リクエストは、DRMエンジンによってホストアプリケーションから受信されてもよく、ホストアプリケーションは、その実行中にコンピューティング装置のユーザからリクエストを受信する。ホストアプリケーションからのリクエストは、リクエストされたアクション、アクションを取る対象のコンテンツ、およびコンテンツを管理するライセンスを一般に識別する。DRMエンジンは、リクエストが認可されるべきか否かを決定する際に、図5に例示するプロセスに従う。
図8および図9は、図5に示すプロセスのより詳細な非限定的な実施例を提供する。図9を参照して、DRMエンジンは、コンテンツ項目802および804にアクセスするリクエストを受信すると(ブロック900)、リクエストまたはその所有権において識別されるライセンスを検討することによって、有効なライセンスが存在するか否かを知る。例えば、DRMエンジンは、コンテンツ項目802および804の一意の識別子を含む、プロテクタオブジェクト806および808を最初に識別し得る(すなわち、それぞれNS:007およびNS:008)(図9のブロック902)。次に、DRMエンジンは、プロテクタオブジェクト806および808において識別されるContentKeyオブジェクト810および812を見つける(図9のブロック904)。このことは、次に、DRMエンジンが、ContentKeyオブジェクト810および812を参照するコントローラ814を識別することを可能にする(図9のブロック906)。好ましい実施形態において、コントローラ814は、署名され、DRMエンジンは、その署名を検証する(またはホストサービスにそれを検証するように求める)。DRMエンジンは、コントローラ814を使用することによって、ContentKeyオブジェクト810および812(従ってコンテンツ項目802および804)の使用を管理する制御オブジェクト816を識別する(図9のブロック908)。好ましい実施形態において、DRMエンジンは、制御オブジェクト816の完全性を検証する(例えば、制御オブジェクト816のダイジェストを算出し、コントローラ814に含まれるダイジェストとそれを比較することによって)。完全性検証が成功した場合、DRMエンジンは、制御オブジェクト816に含まれる制御コードを実行し(ブロック910)、ホストアプリケーションに結果を戻す(ブロック912)。ホストアプリケーションは、それを使用することによって、コンテンツにアクセスするユーザのリクエストを認可または拒絶する。制御コードの結果は、ホストアプリケーションが満たす必要のある1つ以上の義務またはコールバックを任意に特定してもよい。
図10は、図9のブロック910および912において指定されるアクション(すなわち、制御プログラムを実行してその結果を戻すこと)をDRMエンジンが実行し得る方法の、より詳細な実施例である。図10に示すように、DRMエンジンは、関連する制御オブジェクトを識別すると、制御オブジェクトに含まれるバイトコードを、好ましくはDRMエンジンによってホストされる仮想マシンの中にロードする(ブロック1000)。DRMエンジンおよび/または仮想マシンは、仮想マシンの実行時環境を更に一般に初期化する(ブロック1002)。例えば、仮想マシンは、制御プログラムの実行のために必要なメモリを割り当て、レジスタおよび他の環境変数を初期化し、および/または仮想マシンが稼働中のホスト環境に関する情報を入手してもよい(例えば、後述するように、System.Host.GetObject呼び出しを行うことによって)。一部の実施形態において、ブロック1000および1002は、効果的に組み合わせたりインタリーブしたりすることができ、および/またはその順序を逆転できることが理解される。図10に示すように、仮想マシンは、次に制御プログラムのバイトコードを実行する(ブロック1004)。本明細書の他の場所に記載するように、このことは、他の仮想マシンコードに対して呼び出しを行うこと、保証格納域から状態情報を検索することなどを含み得る。制御プログラムは、実行を終了すると、例えば呼び出しアプリケーションによって使用され得る出力(例えば、好ましい実施形態において、ExtendedStatusBlock)を提供する。アプリケーションは、リクエストが認可されたか否かを決定し、認可された場合は任意の義務またはコールバックがそれに関連するか否かを決定する。アプリケーションは、リクエストが拒絶されたか否かを決定し、拒絶された場合は拒絶の理由を決定する。あるいは、アプリケーションは、実行中に任意のエラーが生じたか否かを決定する(ブロック1006)。
前述のように、制御オブジェクト816に含まれる制御コードは、コンテンツ項目802および804のリクエストされた使用を行うために満たさなければならない条件または他の必要条件を特定する。本明細書に記載するシステムおよび方法は、任意の複雑な条件のセットを指定することを可能にする。しかしながら、この実施例のために、制御プログラムは、コンテンツ項目802および804を再生するために、(a)コンテンツを再生するリクエストが行われた装置から、所与のユーザのノードに到達可能でなければならないこと、および(b)現在の日付は指定日の後でなければならないこと、を必要とするように設計されていると仮定されたい。
図11は、装置1102上で稼働するDRMエンジン1100の例示的実施形態が、上述した例示的制御プログラムを実行し得る方法を示す。図12は、実行プロセスに関わるステップのフローチャートである。図11に示すように、DRMエンジン1100は、(例えばSystem.Host.Spawn Vmを呼び出すことによって)仮想マシン実行状況1104を作成し、制御プログラムをロードする。仮想マシン1104は、DRMエンジン1100によって特定されるエントリポイントにおいて制御プログラムの実行を開始する(例えばControl.Actions.Play.performルーチンの位置において)。この実施例において、制御プログラムは、DRMエンジン1100が稼働している装置1102の個人ノードから、所与のノードに到達可能か否かを決定する必要がある。この決定を行うために、制御プログラムは、DRMエンジン1100によって提供されるリンクマネージャサービス1106に対して、呼び出し1105を行い、リンクが必要とされるノードを特定する(図12のブロック1200)。リンクマネージャ1106は、あるノードが別のノードから到達可能であるか否かを決定するために、リンクオブジェクトを評価することを担う。このことを効率的に行うために、リンクマネージャ1106は、装置1102の個人ノード1110から、装置1102が所有する任意のリンクオブジェクトにおいて特定される様々なノード1114までの、経路が存在するか否かを事前算出してもよい。すなわち、リンクマネージャ1106は、アクセスするリンクの「to」および「from」フィールドを単に照合することによって、どのノードが、装置1102の個人ノード1110から潜在的に到達可能であるかを決定してもよい。リンクマネージャ1106は、仮想マシン1104から呼び出し1105受信すると、個人ノード1110から指定ノード1112までの経路が存在するか否かをまず決定することによって、指定ノード1112が到達可能か否かを決定する(例えば、理論的に到達可能であるとすでに決定したノードのリストにおけるノードIDを照合することによって)(図12のブロック1202)。経路が存在する場合、リンクマネージャ1106は、リンクに含まれる任意の制御プログラムを評価することによって、リンクが有効か否かを知る(図12のブロック1204〜1210)。リンクオブジェクトにおける制御プログラムを評価するために(図12のブロック1206)、リンクマネージャ1106は、それ自身の仮想マシン1108を使用してもよく、リンクオブジェクトに含まれる制御プログラムを仮想マシン上で実行する、リンクマネージャ1106は、仮想マシン1104において実行する制御プログラムに対して、決定の結果(すなわち所与のノードが到達可能か否か)を戻す。決定の結果は、コンテンツを再生するリクエストが認可されるか否かの総合評価において使用される。仮想マシン1104上で実行する制御プログラムは、指定ノード1112が装置1102の個人ノード1110から到達可能であることを決定すると、指定された日付の制約が満たされるか否かを次に決定する(図12のブロック1212)。日付の制約が満たされた場合(すなわち、ブロック1212から「YES」で出る場合)、制御プログラムは、指定された条件が満たされていることを示す結果を戻す(図12のブロック1214)。そうでない場合、制御プログラムは、条件が満たされないことを示す結果を戻す(図12のブロック1216)。
上述したような制御プログラムの例を、以下に示す。
Figure 0005357292
Figure 0005357292
Figure 0005357292
制御プログラムの更なる例は、付録Eに含まれる。
3.コンテンツ消費およびパッケージングアプリケーション
以下は、DRMによって保護されたコンテンツを消費するアプリケーション(例えば、メディアプレーヤ、ワードプロセッサ、電子メールクライアントなど(例えば図3のアプリケーション303a、303cおよび303d))、および消費アプリケーションを対象にするコンテンツをパッケージングするパッケージングアプリケーション(例えばアプリケーション303b)の例示的実施形態のより詳細な説明である。
1.5.コンテンツを消費するアプリケーションアーキテクチャ
コンテンツを消費するアプリケーションは、保護されたコンテンツへのアクセスに一般に焦点をあてるものであるか、あるいは他の機能(例えばコンテンツのパッケージング)をも実行する汎用アプリケーションの一部であり得る。様々な実施形態において、コンテンツを消費するアプリケーションは、以下の一部または全部を実行してもよい。
・インタフェースを提供することによって、ユーザは、保護されたコンテンツオブジェクトに対するアクセスをリクエストすることができ、コンテンツに関する情報またはエラー情報を受信することができること。
・ファイルシステムとの対話処理を管理すること。
・保護されたコンテンツオブジェクトのフォーマットを認識すること。
・コンテンツにアクセスする許可が認可され得るか否かを知るために、DRMエンジンにコンテンツのライセンスを評価するようにリクエストすること。
・デジタル署名を検証し、DRMエンジンが実行する必要のある他の汎用暗号機能を処理すること。
・DRMエンジンに、保護されたコンテンツの解読に必要な鍵を提供するようにリクエストすること。
・保護されたコンテンツを解読し、媒体レンダリングサービスと対話することによって、コンテンツをレンダリングすること。
一実施形態において、DRMクライアントエンジンは、コンテンツに関連するライセンスを評価し、コンテンツを使用する許可を認可または拒絶し、コンテンツを消費するアプリケーションに解読鍵を提供する。DRMクライアントエンジンは、コンテンツを消費するアプリケーションに対して、1つ以上の義務および/またはコールバックを更に発行してもよく、コンテンツに対するアクセスを与える結果として、アプリケーションに一定のアクションを実行することを要求する。
図13は、一実施形態においてコンテンツを消費するクライアントアプリケーション1300を構成する要素を示す。図13に示すように、ホストアプリケーション1302は、クライアントの論理的な中心点である。ホストアプリケーション1302は、他のモジュール間の対話処理パターン、ならびにユーザインタフェース1304を介するユーザとの対話処理を営むことを担う。ホストアプリケーション1302は、ホストサービスインタフェース1308を介して、DRMエンジン1306に対してサービスのセットを提供する。ホストサービスインタフェース1308は、ホストアプリケーション1302によって管理されるデータに対するアクセス、ならびにホストアプリケーション1302によって実行される一定のライブラリ関数に対するアクセスを、DRMエンジン1306が獲得することを可能にする。一実施形態において、ホストサービスインタフェース1308は、DRMエンジン1306にとって唯一のアウトバウンドインタフェースである。
一実施形態において、DRMエンジン1306は、ホストアプリケーション1302によって管理されるマルチメディアコンテンツと直接に対話しない。ホストアプリケーション1302は、マルチメディアコンテンツにアクセスするためのコンテンツサービス1310と論理的に対話し、エンジンによって処理されなければならないデータの部分のみをDRMエンジン1306に渡す。コンテンツとの他の対話処理は、媒体レンダリングエンジン1312によって実行される。例えば、一実施形態において、コンテンツサービス1310は、メディアサーバからコンテンツを獲得し、コンテンツをクライアントの信頼性の高い記憶装置において格納および管理することを担う。その一方で、媒体レンダリングエンジン1312は、マルチメディアコンテンツにアクセスし、それをレンダリングすることを担うサブシステムである(例えばビデオ出力および/または音声出力上で)。一実施形態において、媒体レンダリングエンジン1312は、DRMエンジン1306から一部の情報(例えばコンテンツ解読鍵)を受信する。しかし、一実施形態において、DRMエンジン1306は、媒体レンダリングエンジン1312と直接に対話せず、ホストアプリケーション1302を介して対話する。
DRMエンジン1306によって必要とされる情報の一部は、マルチメディアコンテンツのバンド内で利用可能であり得、コンテンツサービス1310によって獲得および管理することができる。しかし、この情報の一部は、他のサービス(例えば個人化サービスまたは帰属関係サービス(図示せず))を介して入手する必要があり得る。
図13に示す実施形態において、暗号操作(例えば、暗号化、署名照合など)は、暗号サービスブロック1314によって処理される。一実施形態において、DRMエンジン1306は、暗号サービスブロック1314と直接に対話せず、これに代わって(ホストサービスインタフェース1308を使用して)ホスト1302を介して間接的に対話し、ホスト1302がそのリクエストを転送する。暗号サービス1314は、コンテンツ解読を実行するために、例えば媒体レンダリングエンジン1312によって使用されてもよい。
図13は、説明のために提供するものであり、他の実施形態において、図13に示す様々な構成要素は、再編、合併、分離、除去することができ、および/または新しい構成要素を追加できることが理解される。例えば、限定するものではないが、図13におけるDRMエンジンとホストアプリケーションとの間の機能の論理的分割は、1つの可能な実施形態の単なる例示であり、実際の実施においては変化させることができる。例えば、DRMエンジンは、完全にまたは部分的にホストアプリケーションに統合することができる。従って、ホストアプリケーションとDRMエンジンとの間で、機能の任意の適切な分割を使用できることが理解される。
1.6.パッケージャアーキテクチャ
以下は、電子コンテンツをパッケージングするホストアプリケーションのために、パッケージングエンジンが実行し得る機能の例を提供するものである。実際には、パッケージングアプリケーションは、具体的にパッケージングに焦点をあててもよく、あるいは、(例えば、ローカルに、あるいはネットワーク上などの他の場所でパッケージングされる)保護されたコンテンツにアクセスするユーザシステムにおいて稼働する、汎用アプリケーションの一部であり得る。
様々な実施形態において、パッケージングホストアプリケーションは、以下の一部または全部を実行してもよい。
・コンテンツおよびライセンス情報を特定できるユーザインタフェースを提供すること。
・コンテンツを暗号化すること。
・ライセンスを構成するDRMオブジェクトを作成すること。
・コンテンツを含むかまたは参照するコンテンツオブジェクト、およびライセンスを含むかまたは参照するコンテンツオブジェクトを作成すること。
図14は、一実施形態においてパッケージングアプリケーション1400を構成する要素を示す。DRMパッケージングエンジン1416は、本明細書に記載するようなライセンス(例えば、制御、コントローラ、プロテクタなどのDRMオブジェクトを含むライセンス)をパッケージングすることを担う。一部の実施形態において、DRMパッケージングエンジン1416は、メタデータをライセンスに関連づけることによって、ライセンスが行う内容を、人間が読み取れる形で説明する。
一実施形態において、ホストアプリケーション1402は、ユーザインタフェース1404を提供し、情報の入手を担う。この情報は、例えばユーザ(一般にコンテンツの所有者またはプロバイダ)が実行することを望むコンテンツ参照およびアクションである(例えば、誰にコンテンツを結合するか、ライセンスにどのようなコンテンツ使用条件を含めるかなど)。ユーザインタフェース1404は、パッケージングプロセスに関する情報を表示することもできる(例えば、発行されるライセンスのテキスト、故障が生じた場合には故障の理由)。一部の実施形態において、ホストアプリケーション1402によって必要とされる一部の情報は、他のサービス(例えば認証サービスまたは認可サービス)の使用、および/またはサービスアクセスポイント(SAP)を通した帰属関係の使用を必要としてもよい。従って、一部の実施形態において、パッケージングアプリケーション1400および/またはホストアプリケーション1402は、以下の一部または全部を実施することを必要としてもよい。
・媒体フォーマットサービス1406:一実施形態において、この要素は、媒体フォーマット操作(例えばトランスコーディングおよびパッケージング)の管理を担う。
この要素は、コンテンツ暗号化サービスモジュール1408を介して達成されるコンテンツ暗号化も担う。
・汎用暗号サービス1410:一実施形態において、この要素は、署名の発行/検証、ならびに一部のデータの暗号化/解読を担う。そのような操作のためのリクエストは、ホストサービスインタフェース1412を介して、サービスアクセスポイント1414、またはDRMパッケージングエンジン1416によって発行することができる。
・コンテンツ暗号化サービス1408:一実施形態において、このモジュールは、アプリケーションを知らないので、汎用暗号サービス1410から論理的に切り離される。これは、DRMパッケージングエンジン1416によってすでに発行された鍵のセットを用いて、コンテンツパッケージング時において、媒体フォーマットサービスによって営まれる。
4.鍵導出
以下は、本明細書に記載するDRMエンジンおよびシステムアーキテクチャの好ましい実施形態におのずと適合し、および/または他の状況において使用できる、鍵導出システムを説明するものである。以下のセクションにおける実施例の一部は、「スキューバ」として公知の、この鍵導出システムの好ましい実施形態の照合基準製品からとられるものである。更なる実施形態は、551出願に記載されている。
図15に示すように、一部の実施形態において、リンクオブジェクト1530aおよび1530bは、ノード1500a、1500b、1500cの関係を確立するという主な目的に加えて、鍵を分散するために使用される。上述のように、制御オブジェクトは、アクションを実行するリクエストを認可するべきか否かを決定するために使用できる制御プログラムを含むことができる。これを行うために、制御プログラムは、特定のノードがリンクのチェーンを介して到達可能か否かを照合してもよい。本明細書に記載する鍵導出技術は、リンクのこのチェーンの存在を利用することによって、鍵の配信を容易にするので、制御プログラムを実行するDRMエンジンにとって鍵を利用可能にすることができる。
1つの例示的実施形態において、各ノードオブジェクト1500a、1500b、1500cは、任意の鍵配信システムを使用する所与の展開において、コンテンツ鍵および他のノードの鍵を暗号化するために使用する鍵のセットを有する。同じ展開において使用するために作成されるリンクオブジェクト1530aおよび1530bは、DRMエンジンによってリンクのチェーンが処理されるときに鍵情報の導出を可能にするペイロードとして、一部の暗号データを含む。
この態様で鍵を運ぶノードおよびリンクを用いて、ノードA(1500a)からノードC(1500c)までのリンク1530aおよび1530bのチェーンを想定すると、ノードA(1515aおよび1525a)の秘密共有鍵にアクセスするエンティティ(例えばクライアントホストアプリケーションのDRMエンジン)は、ノードC(1515cおよび1525c)の秘密共有鍵にもアクセスする。ノードCの秘密共有鍵にアクセスすることによって、その鍵によって暗号化される任意のコンテンツ鍵に対するアクセスをエンティティに与える。
1.7.ノード、エンティティ、および鍵
1.7.1.エンティティ
DRMシステムの一実施形態において、ノードは、データオブジェクトであり、システムにおいて作動中の参加者ではない。作動中の参加者は、この状況において、エンティティと呼ばれる。エンティティの例は、メディアプレーヤ、装置、購読サービス、コンテンツパッケージャなどである。エンティティは、エンティティに関連するノードを一般に有する。コンテンツを消費するエンティティは、DRMエンジンを使用し、その個人を構成する少なくとも1つのノードオブジェクトを管理する。一実施形態において、エンティティは、管理するノードオブジェクトのすべてのデータ(オブジェクトのすべての個人情報を含む)にアクセスすると想定される。
1.7.2.ノード
鍵導出システムの例示的実施形態に関与するノードオブジェクトは、データの一部として鍵を含む。一実施形態において、ノードは、2つの一般的な種類の鍵、すなわち共有鍵および機密鍵を含んでもよい。以下のセクションは、様々な実施形態において使用できる異なる鍵の種類を記載する。しかしながら、特定の展開は、これらの鍵のサブセットのみを使用できることが理解される。例えば、システムは、鍵のペアを用いることによってのみ動作するように構成でき、秘密共通鍵の使用を除外する。または、共有鍵を使用することのみが必要である場合、システムは、機密鍵を用いて供給ノードなしで展開することができる。
1.7.2.1.共有鍵
共有鍵は、ノードNおよびすべてのノードPxによって共有される公開/秘密の鍵のペアおよび/または共通鍵であり、それに対して、鍵導出拡張を含むPxからNへのリンクが存在する。
共有公開鍵:Kpub―share[N]。これは、公開鍵暗号のための公開/秘密の鍵のペアの公開部分である。この鍵は、一般に証明書を伴うので、それに機密情報を暗号によって結合することを望むエンティティによって、その証明を検証することができる。
共有秘密キー:Kpriv―share[N]。これは、公開/秘密の鍵のペアの秘密の部分である。ノードを管理するエンティティは、この秘密鍵が秘密に保たれるように保証することを担う。この理由のために、この秘密鍵は、一般に残りのノード情報とは別に格納および輸送される。この秘密鍵は、リンクの鍵導出拡張を通して他のノードによって共用されるダウンストリームであり得る。
共有共通鍵:Ks―share[N]。これは、共通暗号を用いて使用する鍵である。秘密鍵と同様に、この鍵は機密であり、ノードを管理するエンティティは、鍵を秘密に保つことを担う。この秘密鍵は、リンクの鍵導出拡張を通して他のノードによって共用されるダウンストリームであり得る。
1.7.2.2.機密鍵
機密鍵は、機密鍵が帰属するノードを管理するエンティティにのみ知られる鍵のペアおよび/または共通鍵である。これらの鍵と上述した共有鍵との相違点は、これらの鍵が、リンクにおける鍵導出拡張を通して他のノードによって共有されないということである。
機密公開鍵:Kpub―conf[N]。これは、公開鍵暗号のための公開/秘密の鍵のペアの公開部分である。この鍵は、一般に証明書を伴うので、それに機密情報を暗号によって結合することを望むエンティティによって、その証明を検証することができる。
機密秘密鍵:Kpriv―conf[N]これは、公開/秘密の鍵のペアの秘密の部分である。ノードを管理するエンティティは、この秘密鍵が秘密に保たれるように保証することを担う。この理由のために、この秘密鍵は、一般に残りのノード情報とは別に格納および輸送される。
機密性共通鍵:Ks―conf[N]これは、共通暗号を用いて使用する鍵である。機密秘密鍵と同様に、この鍵は、秘密に保たれる。
1.8.暗号要素
本明細書に記載する鍵の導出および配信システムの好ましい実施形態は、様々な異なる暗号化アルゴリズムを使用して実現することができ、暗号化アルゴリズムの任意の特定の選択に限定されない。それでもやはり、プロファイルの所与の展開について、すべての関与するエンティティは、サポートされたアルゴリズムのセットに一致することを一般に必要とする(ここでプロファイルという用語は、特定のインプリメンテーション(例えば、鍵導出のためのRSA、コード化オブジェクトのためのXML、ファイルフォーマットのためのMP4など)において使用される実際の技術の集合の規格、および/またはオブジェクトが実際的な展開において規定されるときに存在する意味論的な状況の他の表現を一般に指す)。
一実施形態において、展開は、少なくとも1つの公開鍵暗号(例えばRSA)、および1つの共通鍵暗号(例えばAES)のための、サポートを含む。
暗号機能を指すときに、以下の表記法が使用される。
・Ep(Kpub[N],(M))は、「メッセージMは、公開鍵暗号を用いて、ノードNの、公開鍵Kpubによって暗号化される」を意味する。
・Dp(Kpriv[N],(M))は、「メッセージMは、公開鍵暗号を用いて、ノードNの、秘密鍵Kprivによって解読される」を意味する。
・Es(Ks[N],(M))は、「メッセージMは、共通鍵暗号を用いて、ノードNの、共通鍵Ksによって暗号化される」を意味する。
・Ds(Ks[N],(M))は、「メッセージMは、共通鍵暗号を用いて、ノードNの、共通鍵Ksによって解読される」を意味する。
1.9.コンテンツ鍵のターゲティング
好ましい実施形態において、2つの種類の暗号ターゲティングが使用される。ターゲットノードの共有鍵に対してコンテンツ鍵をターゲットにすることは、そのターゲットノードの秘密共有鍵を共有するすべてのエンティティに対して、その鍵を利用可能にすることを意味する。ノードの機密鍵に対してコンテンツ鍵を対象にすることは、そのノードを管理するエンティティのみに対して、その鍵を利用可能にすることを意味する。コンテンツ鍵のターゲティングは、以下の方法の一方または両方を使用して、ContentKeyオブジェクトによって運ばれるコンテンツ鍵(CK)を暗号化することによって行われる。
・公開結合:Ep(Kpub[N](CK))を含むContentKeyオブジェクトを作成すること。
・共通結合:Es(Ks[N](CK))を含むContentKeyオブジェクトを作成すること。
好ましい実施形態において、可能な場合には共通結合が使用される。なぜなら、共通結合は、よりコンピュータ集約的でないアルゴリズムに関わるからであり、従って受信エンティティにとっての煩わしさを低減する。しかしながら、ContentKeyオブジェクトを作成するエンティティ(一般に、コンテンツパッケージャ)は、必ずしもKs[N]にアクセスしなくてもよい。パッケージャがKs[N]を有しない場合、公開結合を使用することができる。なぜなら、Kpub[N]は、機密情報ではないので、公開結合を行う必要のあるエンティティに対して利用可能にできるからである。Kpub[N]は通常、コンテンツ鍵を対象にする必要のあるエンティティに対して利用可能にされる。これは証明書を伴い、証明書は、一部の合意に基づくポリシーに従ってコンテンツ鍵を処理する際に、Kpub[N]が実際に信頼できるノードの鍵であるか否かを決定するために、エンティティによって検査することができる(例えば、そのノードは、システムの機能的な操作上のセキュリティポリシーに従う、DRMエンジンおよびホストアプリケーションを実行するエンティティに対応する)。
1.10.リンクを使用した鍵の導出
エンティティが個人ノードから到達可能なすべてのノードの共有鍵にアクセスすることを可能にするために、一実施形態において、リンクオブジェクトは、任意の鍵拡張ペイロードを含む。この鍵拡張ペイロードは、リンクの「from」ノードの秘密鍵にアクセスするエンティティが、リンクの「to」ノードの秘密共有鍵にもアクセスすることを可能にする。このようにして、エンティティは、その個人ノードから到達可能なノードに対して対象にされる、任意のコンテンツ鍵を解読することができる(ターゲットノードの共有鍵を使用してターゲティングが行われる場合)。
一実施形態において、DRMエンジンがリンクオブジェクトを処理する際に、DRMエンジンは、アクセスする鍵の内部チェーンをアップデートするために、各リンクの鍵拡張ペイロードを処理する。一実施形態において、ノードFからノードTへのリンクLの鍵拡張ペイロードは、以下のいずれかを含む。
・公開導出情報:Ep(Kpub―share[F],{Ks―share[T],Kpriv―share[T]})、または
・共通導出情報:Es(Ks―share[F],{Ks―share[T],Kpriv―share[T]})。
ここで、{Ks―share[T],Kpriv―share[T]}は、Ks―share[T]およびKpriv―share[T]を含むデータ構造である。
公開導出情報は、ノードT、Ks―share[T]およびKpriv―share[T]の秘密共有鍵を、ノードF、Kpriv―share[F]の秘密共有鍵にアクセスする任意のエンティティに伝達するために使用される。
共通導出情報は、ノードT、Ks―share[T]およびKpriv―share[T]の秘密共有鍵を、ノードF、Ks―share[F]の共通共有鍵にアクセスする任意のエンティティに伝達するために使用される。
ノードに対してコンテンツ鍵を対象にすることに関して、リンクに含む好ましいペイロードは、共通導出情報である。このことは、リンク作成者がKs―share[F]にアクセスする場合に可能である。そうでない場合には、リンク作成者は、リンクのためのペイロードとして公開導出情報を含むことにフォールバックする。
リンクを処理するDRMエンジンが、その内部キーチェーンにおいて、Ks―share[F]およびKpriv―share[F]をすでに有すると仮定するならば、リンク(L[F→T])を処理した後に、DRMエンジンは、Ks―share[T]およびKpriv―share[T]をも有する。
一実施形態において、リンクは任意の順序で処理できるので、DRMエンジンは、所与のリンクLが処理される時に、鍵導出計算を行えない場合がある。このことは、その時に、DRMエンジンのキーチェーンが、そのリンクの「from」ノードの鍵をまだ含んでいないという事実に起因する場合がある。この場合、新しい情報がDRMエンジンに利用可能になるときに(例えば新しいリンクPを処理した後に)、リンクは記憶されており、再び処理される。リンクPの「to」ノードがリンクLの「from」ノードと同一であり、なおかつリンクPの「from」ノードが到達可能なノードである場合、リンクLの「from」ノードも到達可能であり、鍵導出ステップは、リンクLの「from」ノードの秘密共有鍵を、鍵チェーンに加える。
5.実施例
本明細書に記載するシステムおよび方法の様々な実施形態を実際に応用する方法を説明するために、以下にいくつかの実施例を提供する。
本明細書に記載するシステムおよび方法は、広範囲にわたる著作権管理および他の機能を有効にすることができる。従って、ここに与えられる具体例は、網羅的であることを意図するものではなく、進歩性のある一連の作業の範囲を例示するものであることが理解される。
1.11.実施例:ユーザ、PC、および装置
コンテンツを再生する著作権を特定のユーザに結びつけるDRMシステムを実現することが所望され、ユーザが所有するすべての再生装置上のコンテンツを再生することがユーザにとって容易になることが所望される、と仮定されたい。必要に応じて再生装置(例えばモバイルプレーヤ)を加えることを可能にするソフトウェアをユーザに提供することを決定すると仮定されたい。しかしながら、ユーザが配信機関としての役割を果たす能力を有しないように、ユーザがコンテンツを転送できる汎用装置の数を限定する何らかのポリシーを設定することが所望される、とさらに仮定されたい。
これらのシステム要件に基づいて、作成するライセンスをユーザに結びつけ、ユーザとユーザが使用する装置との関係を確立することは、例えば、意味をなす場合がある。従って、この実施例において、必要とされる種類の関係を確立するために、どのような種類のノードが必要であるかを最初に決定してもよい。例えば、以下の種類のノードを規定してもよい。
・ユーザ(例えばコンテンツを使用する権利を有する個人)。
・PC(例えば、パーソナルコンピュータ上で実行し、コンテンツを再生することができ、付加的な再生装置を特定することができる、ソフトウェアアプリケーション)。
・装置(例えば携帯コンテンツレンダリング装置)。
各ノードオブジェクトは、オブジェクトが、ユーザ、PC、または装置を表すか否かを示す型属性を含むことができる。
例えば、特定の時間において任意の1人のユーザに接続できるPCノードオブジェクトの最大数を、4に限定することを決定するとする。PCの数に制約を提供する限り、ユーザに接続される装置の数を限定する必要がないと決定する。このことに基づいて、ユーザノードとアクセスをリクエストするノードとの間に関係を確立できる場合、制御プログラムは、アクセスを可能にするように設定することができる。このノードは、PCまたは装置であり得る。
図16は、上述の必要条件を満たすように設計されたシステムを示す。サーバ1600は、ユーザノードオブジェクト1602aおよび1602bを、各新規ユーザ1604aおよび1604bに割り当て、保護されたコンテンツにアクセスするためのユーザ1604aおよび1604bの能力を、装置1606および1608、PC1610および1612に関連づけるように管理する。ユーザ1604aが、新しい装置1606を自分のユーザノード1602aに関連させることを望む場合、サーバ1600は、装置1606がすでに個人化情報1614を含むか否かを決定する(装置1606が製造時に個人化されている場合がそうである)。装置が個人化情報1614を含む場合、サーバ1600は、その個人化情報1614を使用することによって、装置1606からユーザノード1602aへのリンク1616を作成し、リンク1616をユーザの装置1606に送信する。ユーザ1604aが、保護されたコンテンツ1618を(例えばサーバ1600から、または何らかの他のコンテンツプロバイダから)入手する場合、コンテンツ1618は、ユーザのノード1602aの対象にされる(例えばユーザのノード1602aに関連する秘密共有鍵のうちの1つを有するコンテンツの解読鍵を暗号化することによって)。ライセンス1619は、それに関連づけられ、コンテンツにアクセスできる条件を特定する。ユーザ1604aが、装置1606上のコンテンツ1618の再生を試みる場合、装置1606上で実行するDRMエンジン1620は、ライセンス1619を評価する。この評価は、ユーザノード1602aが到達可能である限り、コンテンツ1618が再生可能であることを示す。DRMエンジン1620は、リンク1616(ユーザノード1602aが装置1606から到達可能であることを示す)を評価し、コンテンツ1618にアクセスするユーザ1604aのリクエストを認可する(例えば、ライセンス1619の中に含まれるコンテンツ解読鍵の解読を認可することによって)。
この実施例において、コンテンツ解読鍵は、ユーザのノード1602aに関連する秘密鍵を使用して暗号化されているので、コンテンツ解読鍵を解読するためには、この秘密鍵を入手する必要がある。本明細書の他の場所に記載される任意の鍵導出技術が使用されている場合、装置1606の秘密鍵のうちの1つを使用して、リンク1616に含まれる鍵導出情報を単に解読することによって、ユーザノードの鍵を入手することができる。解読された鍵導出情報は、ライセンス1619(あるいはそこから導出または入手できる情報)に含まれるコンテンツ解読鍵を解読するために必要な鍵を含む。
図16を再び参照して、ユーザ1604aが、新しいPC1610を自分のユーザノード1602aに関連させることを望むと仮定されたい。サーバ1600は、PCの最大数があらかじめユーザノード1602aに関連づけられていないことを検証し、PC1610をユーザノード1602aに関連づけることを認可する。しかしながら、関連を実行するためには、サーバ1600は、PC1610から個人化情報(例えば、暗号鍵、一意の識別子など)を入手する必要がある。しかしながら、PC1610があらかじめ個人化されていない場合(ユーザがPCソフトウェアのコピーを単にダウンロードする場合がそうである)、サーバ1600は、(例えば本明細書の他の場所に記載されるブートストラッププロトコルを使用してPCノードオブジェクトを作成することによって)個人化プロセスを実行するか、または個人化プロセスを実行できるサービスプロバイダにユーザを導く。個人化プロセスが完了すると、サーバ1600は、PC1610からユーザノード1602aへのリンク1624を作成し、リンクをPC1610に送信することができる。PCは、リンクが有効である限り、リンクを使用し続けることができる。
ユーザは、後で付加的なPCを加えるようにリクエストすることができ、サーバは、ユーザごとのPCノードオブジェクトの数を4に限定するポリシーを実施し得る(一般に、必要に応じてユーザが有効リストからPCを削除する能力も提供される)。
さらに別の実施例として、ここで、サービスプロバイダが、ユーザが所有する任意の装置上にユーザが所有する任意のコンテンツを、ユーザが再生できるべきであると決定したと仮定されたい。サービスプロバイダは、ユーザがサーバ1600と接触するのではなく、ユーザのPCソフトウェアがユーザの装置の各々に対するリンクを作成することを可能にすることを更に望み得る。そのような実施形態において、ユーザが新しい装置上でコンテンツを再生することを望む場合、ユーザのPCソフトウェアは、新しい装置の機密の個人化情報にアクセスし、その情報を使用することによって、その装置のための新しいリンク(例えば新しい装置からユーザノード1602aへのリンク)を作成し得る。装置が個人化されていない場合、PCソフトウェアは、遠隔サービスにアクセスするか、または装置を遠隔サービスにアクセスさせるように導くことによって、個人化プロセスを実行してもよい。PCソフトウェアは、リンクを新しい装置に送信し得る。この時点において、新しい装置は、有効である限りコンテンツを再生することが可能である。なぜなら、一実施形態において、リンクオブジェクトが存在するならば、リンクオブジェクトが失効または無効にされない限り、別のリンクオブジェクトを作成する必要がないからである。
上記の実施例において、コンテンツは、ユーザを対象にする。このことを行うために、パッケージャアプリケーションは、コンテンツ用に新しいIDを選択するかまたは既存のIDを選び、暗号化キーおよび関連するContentKeyオブジェクトを作成し、ならびにコンテンツオブジェクトをContentKeyオブジェクトに結合するプロテクタオブジェクトを作成する。パッケージャは、制御プログラムを用いて制御オブジェクトを作成する(例えばDRMエンジンの仮想マシンによって実行可能なバイトコードでコンパイルされるもの)。これにより、アクションをリクエストするPCまたは装置ノードからユーザノードに到達可能な場合に限り、「再生」アクションを行うことが可能になる。一般に、適切な場合、制御、コントローラ、プロテクタ、およびContentKeyオブジェクトは、パッケージングされたコンテンツに埋め込まれる。その結果、PCおよび装置は、それらを別に入手する必要がない。
一実施形態において、装置またはPCがコンテンツの再生を望む場合、図9に関連して上述したようなプロセスに従う。すなわち、DRMエンジンは、コンテンツのコンテンツIDのためのプロテクタオブジェクト、次にそのプロテクタによって参照されるContentKeyオブジェクト、次にそのContentKeyオブジェクトを参照するコントローラオブジェクト、最後にそのコントローラによって参照される制御オブジェクトを見つける。DRMエンジンは、制御オブジェクトの制御プログラムを実行し、それはユーザノードが到達可能か否かを照合する。装置またはPCノードが、そのノードとユーザノードとの間に経路が存在することを検証するために必要なリンクオブジェクトを有する場合、条件は満たされ、制御プログラムは、ContentKeyオブジェクトにおいて表される鍵の使用を可能にする。装置またはPCの媒体レンダリングエンジンは、コンテンツの解読および再生ができる。
1.12.実施例:一時的ログイン
図17は、本明細書に記載するDRMシステムおよび方法の可能な用途の別の実施例である。この実施例は、前述のセクションにおける実施例と同様であるが、ここで異なる点は、ユーザがすでに別のPCへの一時的ログインを有しない限り、PCノードオブジェクトとユーザノードオブジェクトとの間のリンクオブジェクトの生成を管理するポリシーが、12時間だけの一時的ログインを可能にするということである。この機能によって、ユーザ1700は、自分のコンテンツ1702を友人のPC1704に持って行き、ある期間にわたってそのPC1704にログインし、友人のPC1704上でコンテンツ1702を再生することができる。
このことを達成するために、リンクオブジェクト1710は、限定された有効期間によって作成される。一実施形態において、このことは、以下のように行うことができる。
説明の容易さのために、DRMで保護されたコンテンツ1702を再生するために必要な、DRM対応の消費するソフトウェア1714は、友人のPC1704上にすでに存在すると仮定されたい。コンテンツ1702およびライセンス1708を含むファイルは、友人のPC1704へ転送される。ユーザがコンテンツ1702の再生を試みる場合、ソフトウェア1714は、コンテンツを所有するユーザのノードにローカルなPCノードを連結する有効なリンクオブジェクトがないことを認識する。ソフトウェア1714は、ユーザの証明1712についてユーザを促し(このことは、システムのポリシーの下で可能にされるユーザ名/パスワード、携帯電話認証プロトコル、スマートカード、または任意の認証システムを介して提供できる)、バックエンドシステム1706と通信する。バックエンドシステム1706は、リンクがリクエストされるユーザノードオブジェクトおよびPCノードオブジェクトの属性を照合し、まだ有効で作動中の一時的ログインリンクオブジェクトがないことを照合する。これらの条件が満たされる場合、バックエンドサービス1706は、友人のPCノードオブジェクトとユーザのノードとをリンクするリンクオブジェクト1710を作成し、有効期間をリクエストされたログイン所要時間に限定する(例えば、この実施例におけるポリシーに従うと12時間未満)。リンクオブジェクト1710を有することによって、友人のPC1704は、リンク1710が失効するまで、ユーザのコンテンツ1702を再生できる。
1.13.実施例:企業コンテンツ管理
図18は、企業文書(例えば、電子メール、ワードプロセッシング文書、プレゼンテーションスライド、インスタントメッセージングテキストなど)を管理する例示的なシステム1800の高水準アーキテクチャを示す。図18に示す実施例において、文書編集アプリケーション(例えばワードプロセッサ)1802、電子メールクライアント1804、およびディレクトリサーバ(例えばアクティブディレクトリサーバ)1806は、デジタル著作権管理(DRM)プラグイン1808、ネットワークサービス編成レイヤ1810、登録サービス1812、およびポリシーサービス1816を利用することによって、ポリシーによる文書、電子メールメッセージなどの管理を容易にする。好ましい実施形態において、DRMプラグイン1808、ネットワークサービス編成レイヤ1810、ポリシーサービス1816、および登録サービス1812は、本明細書の他の場所および551出願に記載されるDRMエンジンおよびサービス編成技術を使用して実現される。例えば、一実施形態において、DRMプラグイン1808は、上述したDRMエンジンの実施形態を含んでもよい。図18に示す実施形態において、既存のアプリケーション(例えばワードプロセッサ1802および電子メールクライアント1804)は、アプリケーションが呼び出せるプラグインを介してDRMエンジンに統合されるが、他の実施形態において、DRMエンジンは、アプリケーション自体の不可欠な部分として含まれる場合があることが理解される。図18に示す例示的なシステムは、単一の企業の中で実現してもよく、または複数の企業にまたがってもよいことも理解される。
図18に示す図解において、ディレクトリサーバ1806は、例えば、ユーザプロファイルおよびグループ定義を含んでもよい。例えば、企業のシステムアドミニストレータが「特別プロジェクトチーム」と呼ぶグループを設定することによって、企業の特別プロジェクトチームの構成員を識別してもよい。
一実施形態において、ディレクトリサーバ1806は、551出願に記載されるようなウェブサービスを実行するアクティブディレクトリサーバを含んでもよい(さらに、例えばWindows(登録商標)プラットホーム上の規格IISベース技術を用いて実現されてもよい)。ディレクトリサーバは、アクセスされるコンテンツに基づいて、特別プロジェクトチームの人々に、ノード、リンクおよびライセンスを発行する。グループにおいて帰属関係が変化する場合、新しいトークンを発行してもよい。著作権の取り消しのために、ディレクトリサーバ1806は、551出願に記載されるような技術(本明細書において「NEMO」技術と呼ぶことがある)に基づいて、セキュリティメタデータサービスを実行することができる。一部の実施形態において、クライアントは、DRMライセンスを使用するために、現在までの時間値または時間概念(企業が規定するように選択するいかなるフレッシュネス値にも基づく(例えば1週、1日、1時間、5分ごとなど))を有することを必要とされる場合がある。例えば、セキュリティメタデータサービスが提供するトークンは、信頼された時間値および認証可能な時間値を含んでもよい。一部の実施形態において、クライアントは、セキュリティメタデータサービス対話処理におけるユーザノードIDを識別することができる。ユーザが依然として所与の帰属関係を有する場合、決定するライセンス制御の状況において、セキュリティメタデータを直接に評価することができる。セキュリティメタデータは、例えば特別プロジェクトチームの構成員であるという関係が有効であるか否かを決定できるエージェントを返すこともできる。従って、一部の実施形態において、明確に定義されたウェブサービスを多少追加するだけで、企業の既存の認可および認証インフラストラクチャ(例えば企業のアクティブディレクトリサーバ)に影響を及ぼすことが可能である。
図19は、図18に示すようなシステムを使用することによって、文書に対するアクセスまたは文書の他の使用を管理する、方法の実施例を示す図である。この実施例において、特定の従業員(ジョン)は、高度に機密の戦略的プロジェクトに頻繁に取り組み、自分のアプリケーションのためにDRMプラグイン1908(例えば、ワードプロセッシングプログラム1902、電子メールプログラム1904、カレンダープログラム、そのようなプログラムを統合するプログラムまたはプログラムセットなど)をすでにインストールしている場合がある。ジョンは、自分の文書を作成中のある時点において、自分のアプリケーションのツールバーに追加された「許可」プルダウンメニュー項目にアクセスする(アクション1913)。ここで現れる許可ダイアログボックスは、システム上に設定された個人およびグループのディレクトリについて、ジョンの会社のアクティブディレクトリサーバ1906と接触するものである。ジョンは、リストから「特別プロジェクトチーム」を選択し、チームの全員に、文書の閲覧、編集、印刷の許可を与えることを決める。
DRMプラグイン1908は、551出願に記載するNEMOサービス編成技術を使用して、NEMO対応ポリシーサービス拡張1916をアクティブディレクトリ1906に接触させ、特別プロジェクトチーム用のファイルを保護するために使用するポリシーのコピーをリクエストする(アクション1914)。ジョンが文書を保存すると、DRMプラグインは、ファイル1912を自動的に暗号化し、「特別プロジェクトチーム」1910として知られるグループに対してターゲティングおよび結合されたライセンスオブジェクトを作成する。ライセンス1910は、装置ノードから特別プロジェクトチームグループノードへのリンクの有効チェーンを生成することができる任意の装置が、ファイル1912にアクセス(例えば、編集、印刷、閲覧など)することを可能にする。
ジョンは、文書1912にアクセスできる。なぜなら、ジョンの装置は、ジョンのユーザノードへのリンクを有し、ジョンのユーザノードから「特別プロジェクトチーム」グループノードへのリンクも有するからである。同様に、ジョンがこの文書を他者に転送する場合、他者が「特別プロジェクトチーム」グループノードへのリンクの有効チェーンを生成できる場合、他者は文書にアクセスすることのみができる(例えば、装置が特別プロジェクトチームノードに到達可能であることを要求することによって)。
ジョンは、自分のコンピュータ上に(すでに保護された)ファイルを保存し、後でファイルを電子メールメッセージに添付してもよい(アクション1920)。例えば、ジョンは、自分の上司(ジョージ)に対する古い電子メールを開き、通常行うようにファイルを添付し、メッセージを送信してもよい。図20に示すように、ジョージは、自分のコンピュータ2014上にインストールされるDRMプラグイン2000をも有する。ジョージが自分のコンピュータ2014にログインする際に、プラグイン2000は、ジョージが追加されたグループのすべてを好機をねらって照合し(アクション2006)、失効した任意のリンクについて、新しいリフレッシュされたリンクをダウンロードする(アクション2012)。ジョージが最後のログイン以来「特別プロジェクトチーム」に追加されている場合、ジョージのプラグイン2000は、ジョージのユーザノードを「特別プロジェクトチーム」グループノードにリンクする、リンクオブジェクト2008をダウンロードし得る。このリンク2008は、ユーザノード「ジョージ」が、グループノード「特別プロジェクトチーム」の構成員であることを示す。この実施例において、リンクオブジェクト2008は、それ以降は有効でなくなる失効日(例えば3日)を有すると仮定されたい。
図21に示すように、ジョージが文書を開こうとすると(アクション2130、2132)、DRMプラグイン2108は、埋め込まれた(または添付された)ライセンスを照合し、「特別プロジェクトチーム」ノードが到達可能でなければならないことを知る。ジョージのプラグイン2108は、ジョージのコンピュータの装置ノードからユーザノード「ジョージ」へのリンク2120、およびユーザノード「ジョージ」からグループノード「特別プロジェクトチーム」への2122の、チェーンを構成(および検証)する(アクション2134)。装置は、リンク2120および2122の有効チェーンを有するので、ジョージのプラグイン2108は、ファイルへのアクセスを許可する。
本明細書の他の場所に記載するように、一部の実施形態において、リンクは、安全な鍵のチェーンを運ぶこともできる。従って、一部の実施形態において、特別プロジェクトチームノードへのリンクのチェーンを生成することによって、プラグインは、コンテンツへのアクセスが許可されることを証明できるのみならず、コンテンツの解読を可能にする鍵のチェーンを解読することもできる。
例えば、別の従業員(「キャロル」)が、偶発的にジョンの電子メールを受信し、文書を開くことを試みる場合、キャロルのDRMプラグインは、ファイルにバンドルされるライセンスを検索し、ライセンスの条件を評価する。キャロルのPCは、キャロルのユーザノード「キャロル」へのリンクを有するが、キャロルはチームの構成員ではないので、「キャロル」から「特別プロジェクトチーム」グループノードへのリンクがない。「特別プロジェクトチーム」が到達可能でないので、キャロルはファイルへのアクセスを許可されない。
キャロルが最終的に「特別プロジェクトチーム」のグループに追加される場合、次回にキャロルのDRMプラグインがキャロルの帰属関係をリフレッシュする際に、DRMプラグインは、この新しいグループを検出し、キャロルのユーザノードを特別プロジェクトチームノードにリンクするリンクオブジェクトをダウンロードする。キャロルのプラグインは、現在、キャロルの装置ノードから、キャロルのユーザノードへ、さらに特別プロジェクトチームノードへの、チェーンを構成するために必要なすべてのリンクを有する。特別プロジェクトチームノードは、現在「到達可能」であり、キャロルは、特別プロジェクトチームを対象にした任意の文書または電子メール(キャロルがチームに加わる以前に作成されたものさえ)を開くことができる。
1ヵ月後に、ジョージは、新しい任務に異動し、アクティブディレクトリにおける特別プロジェクトチームから削除されると仮定されたい。次回にジョージがログインする際に、ジョージのプラグインは、ジョージのユーザノード「ジョージ」を「特別プロジェクトチーム」に関連づける新しいリフレッシュされたリンクオブジェクトを受信しない。数週後に、ジョージがジョンのファイルを開くことを試みる際に、ジョージのプラグインは、特別プロジェクトチームへのリンクのチェーンの構成を試みる。ジョージのPCは、依然としてユーザノード「ジョージ」へのリンクを有する(ジョージのPCは依然としてジョージに帰属する)が、「ジョージ」から「特別プロジェクトチーム」へのリンクは失効している。「特別プロジェクトチーム」が到達可能でないので、ジョージはファイルへのアクセスを許可されない。
会社は、記録されるすべての機密情報へのアクセスを必要とするポリシーを有すると仮定されたい。そのような一実施形態において、特別プロジェクトチームのためのポリシーは、このグループのために作成されるすべてのライセンスもまた、例えばセントラルレポシトリに対して使用情報の収集およびレポーティングを要求する必要がある、ということを規定する。従って、この実施例において、プラグインは、ライセンスにおける制御プログラムを評価(例えば実行)する際に、アクセスを記録してそのように行うという必要条件を実行する。例えば、結果の活動は、本明細書に記載するようなローカルな保護された状態データベースに記録することができ、ネットワーク接続が再確立されると、関連コンテンツは、上述のサービスを経て報告することができる。
図22は、企業内で電子コンテンツを管理するための別の例示的システム2200を示す。図22に示す実施例において、LDAPサーバ2206は、ユーザプロファイル、グループ定義、および任務割当てを管理するために使用され、「特別プロジェクトチーム」と呼ばれるグループ定義、および「弁護士」の任務定義を含む。
ジョンは、弁護士であり、添付を有する電子メールを特別プロジェクトチームの他の構成員に送信することを望む、と仮定されたい。ジョンが自分のアプリケーションのためにDRMプラグイン2208をインストールする際に、プラグインはジョンの電子メールツールバーにも項目をインストールする。ジョンは、電子メールメッセージを作成中のある時点において、自分のツールバーに追加されたプルダウンメニューから「許可の設定」にアクセスする。DRMプラグイン2208は、ポリシーサービス2216に接触し、選択元となる企業メッセージ送信ポリシーのリストを表示する。ジョンは、「特別プロジェクトDRMテンプレート」を選択し、DRMプラグイン2208は、NEMOプロトコルを使用することによって、受信するポリシーオブジェクトの確実性、完全性、および機密性を、リクエストおよび保証する。ポリシーは、このテンプレートを使用するライセンスを作成する方法(ライセンスを対象にして結合する方法を含む)を記述する。
ジョンが「送信」を選択すると、DRMプラグイン2208は、メッセージおよび添付を暗号化し、関連するライセンスを生成する。電子メールまたは添付にアクセスするために、ライセンスにとっての必要条件として、特別プロジェクトチームグループノードまたは「弁護士」グループノードが到達可能でなければならない。
ライセンスは、暗号化されたメッセージペイロードおよび暗号化された添付にバンドルされる。その後、メッセージは、標準電子メール機能を使用して、受信者のリストに送信される。ライセンスの規則および暗号化は、電子メールのアドレス方式には依存しないので、正しくない電子メール受信者が誤って含まれ得るという事実は、電子メールまたは添付のコンテンツをリスクにさらさない。
そのような予想外の受信者は、ユーザノードを特別プロジェクトチームにリンクする有効なリンクオブジェクトを有しないので、仮に受信者がコンテンツへのアクセスを試みたとしても許可されない。更にまた、そのような受信者の装置は、必要なリンクのチェーン(およびそれらが含む鍵)を有しないので、装置はコンテンツを解読する機能さえ有しない。
しかしながら、予想外の受信者が、次に、標準電子メール機能を使用して、同一の変更されていない電子メールを特別プロジェクトチームの構成員に転送する場合、その構成員は、自分のユーザノードを「特別プロジェクトチーム」グループノードにリンクするリンクオブジェクトを有するので、電子メールのコンテンツにアクセスできる。
会社の別の弁護士(「ビル」)もまた、自分を「特別プロジェクトチーム」グループノードに関連づけるリンクオブジェクトを受信したと仮定されたい。ビルも、ファイルを閲覧することができる。ビルが、弁護士補助員(「トレント」)(弁護士でもなく特別プロジェクトチームとも関連していない)にそのメッセージを転送する場合、トレントは、自分を「特別プロジェクトチーム」グループノードに結びつけるリンクオブジェクトを有しないので、トレントは文書にアクセスできない。
その後、トレントが、LDAPディレクトリ2206における特別プロジェクトチームグループに追加された場合、トレントは、必要なリンクオブジェクトを与えられるので、すでに転送された電子メールにアクセスできるようになる。
前述のように、この会社が、すべてのライセンスにレポーティング必要条件が含まれることを示すポリシーを有する場合、一実施形態において、これらのライセンスのうちの1つの中の制御プログラムが実行される(例えば誰かがファイルへのアクセスを試みる)ときは必ず、レポーティングイベントをトリガすることができる。レポーティングステップはさらに、アクセスが認可または拒絶されたか否かに関するインジケータを含むことができる。このことは、インプリメンテーションの選択の問題である。そのようなインジケータを使用する場合、特定の文書にアクセスを試みる回数、およびそれぞれに関する状態または他の情報(例えば成功、失敗など)について、ログを維持することができる。
さらに別の実施例として、特別プロジェクトチームの構成員の1人(「スティーブン」)が、特別プロジェクトの仕事を遂行するために、別の会社に出張すると仮定されたい。
他の会社に向かって出発する前に、スティーブンの電子メールクライアントは、すべての電子メールのローカルコピーを受信箱にダウンロードする。これらの電子メールのうちの1通に添付される保護されたレポートもまた、埋め込まれた(または添付された)ライセンスを含む。このライセンスオブジェクトは、コンテンツにアクセスするための規則、ならびに暗号化されたコンテンツ鍵を含む。コンテンツにアクセスするために必要な唯一の「失われたリンク」は、「特別プロジェクトチーム」グループノードに到達するために必要なリンクオブジェクトである。
この実施例において、会社のポリシーは、リンクオブジェクトが3日間にわたって有効であることを可能にするので、スティーブンのユーザノードを特別プロジェクトチームノードにリンクするリンクオブジェクトは、スティーブンが出張中に接続しない間も有効に保たれる。スティーブンが、オフラインの間にファイルへのアクセスを試みる場合、特別プロジェクトチームグループノードは依然として到達可能であるので、スティーブンはファイルへのアクセスを許可される。
しかしながら、スティーブンが3日よりも長くオフラインのままである場合、スティーブンを特別プロジェクトチームにリンクするリンクオブジェクトは、失効する。特別プロジェクトチームグループノードは、もはや到達可能ではないので、スティーブンはファイルへのアクセスを許可されない。
スティーブンが、最終的に(例えばVPNを介して)会社のシステムに接続できる場所に出張する場合、スティーブンのDRMプラグインは、スティーブンが帰属するグループの各々について、リンクオブジェクトのリフレッシュされたコピーをリクエストする。スティーブンは、依然として「特別プロジェクトチーム」グループの一員であるので、自分のユーザノードから特別プロジェクトチームグループノードへの新しいリンクオブジェクトを受信する。このリンクは、失効してもはや有効ではなくなった「古い」リンクと入れ替わる。
この新しいリフレッシュされたリンクを使用することにより、「特別プロジェクトチーム」ノードは現在到達可能であるので、スティーブンは、保護されたレポートに再びアクセスすることができる。新しいリンクオブジェクトは、3日間にわたって有効であり、その後はやはり失効する。
さらに別の実施例として、特別プロジェクトチームの構成員(「サリー」)は、インスタントメッセンジャを介して、別のチーム構成員と通信し、通信のコピーを保存し、チームの別の構成員に(例えば、電子メール添付、ディスケット、ドングル等を介して)コピーを与えることを望む、と仮定されたい。この実施例において、インスタントメッセンジャクライアント(および潜在的に会社が従業員に提供する他の任意のメッセージングまたは通信の成果物)は、上述の実施例のように、DRMプラグインにリンクされ、DRMプラグインは、ライセンスを対象にして結合する方法を規定するポリシー「特別プロジェクトDRMテンプレート」にアクセスする。サリーが、自分のインスタントメッセージングの会話の保存(例えば「別名で保存する」を選択することによって)を試みる際に、プラグインは、暗号化キーを(例えばランダムに)選択し、会話のテキストをパッケージング(暗号化)する。DRMプラグインは、会社のポリシーごとに、特別プロジェクトチームグループノードを対象にして結合するライセンスオブジェクトを生成する。
保護されたIMトランスクリプトを含むファイルは、トランスクリプトコンテンツにアクセスするためのライセンスにバンドルされる。上述の実施例のように、ライセンスは、コンテンツへのアクセスを管理する規則、ならびに コンテンツ鍵の暗号化されたコピーを含む。サリーは、標準的な「ドラッグアンドドロップ」手順を使用して、このバンドルされたファイルを、電子メール、USBドングル、ディスケットなどに転送し、それを他の誰かに送信することができる。受信者の装置が、特別プロジェクトグループノードへの有効なリンクを生成できると仮定するならば、コンテンツに対するアクセスは、許可され、可能である。
サリーが、ジョン(これも特別プロジェクトチームの構成員)にファイルを与える、と仮定されたい。ジョンが、自分を特別プロジェクトチームの構成員として識別する最近リフレッシュされたリンクオブジェクトを有する場合、ジョンはファイルにアクセスできる。会社のポリシーごとに、このリンクオブジェクトは、3日で失効になる失効日を含む。従って、たとえジョンが接続しないままであっても、そのリンクが有効である限り、ジョンは依然としてアクセスを有する。
後のいずれかの時点において、ジョンが、別の職務のために特別プロジェクトチームから離れ、自分のバッグの中にサリーからのUSBドングルを発見し、自分のデスクトップコンピュータを使用してファイルを開くことを試みる場合、ジョンのユーザノードを特別プロジェクトチームに関連づけるリンクオブジェクトは、失効している。ジョンは、もはやチームの一員でないので、ジョンの装置上のDRMプラグインは、新しいリフレッシュされたリンクを獲得することがもはやできない。「特別プロジェクトチーム」グループノードは、もはやジョンの装置によって到達可能ではないので、アクセスは許可されない。
ジョンは、仕事が変わったとき以来、自分のラップトップがネットワークに接続していないと考え、その装置を用いてファイルを開くことを試みる。最大割り当て時間が過ぎてしまっているので、そのリンクももはや有効ではない。一部の実施形態において、ジョンがファイルへのアクセスを試みるたびに、レポートが生成され、セントラルレポシトリに送信するように待ち行列に入れられることができる。
セントラルレポシトリは、ファイルのアクセスに失敗した試みについて、複数のレポートを受信し、電子メールを介してマネージャにフラグを立てる。マネージャは、機密資料へのアクセスがもはや許可されないことをジョンに気づかせ、すべてのファイルを抹消することを求める(アクセスが認可されなかったことをシステムが示す場合でも)。
さらに別の実施例として、政府機関または社外監査役が、特別プロジェクトチームの機密情報の取り扱いを調査または監査することを望む、と仮定されたい。調査を支援するために、会社は、特別プロジェクトに関連する機密情報へのアクセスに関する追跡記録レコードを示すことを望む。
このために、会社はまず、特別プロジェクトに関連する任意のメッセージについて、すべてのクリアテキストメッセージアーカイブをスキャンする。安心したことに、会社のポリシーに則って、適切なDRM保護なしに特別プロジェクトについて論ずるメッセージを送信した従業員はいないことがわかる(例えばシステムの外部で)。
会社は、DRMアクセス記録を使用することによって、保護された情報へのアクセスがいつ誰に与えられたかを詳述する追跡記録を生成する。
社内手順書につき、特別プロジェクトチームグループが確立された際に、特に指定しない限り主任コンプライアンス役員(CCO)も含んだ。主任コンプライアンス役員のためのリンクオブジェクトが作成され、記録サーバに保存された。それにより、主任コンプライアンス役員は、将来必要に応じてすべてのメッセージのコンテンツを照合することができる。
この実施例において、特別プロジェクトチームのために規定されるポリシーは、チームによって生成されるすべてのライセンスが、ファイルに対する任意の試行済みアクセス(日付、時間、UserNode、アクセスが認可されたか否かを含む)を報告する必要条件を含まなければならないということを示した。これらのレポートは、セントラルレポシトリ上のアクセスログに保存された。
CCOは、疑われる任意の漏洩または他の反則が生じた日付に先立つ、特別プロジェクトチームに関連するすべてのアクセスについて、アクセスログを照合する。CCOはまた、その日付を含む以前のすべてのメッセージトラフィックおよびシステムファイルについて、電子メール、IM、およびネットワークバックアップアーカイブを検索する。各ファイルは、(コンテンツ鍵とともに)添付されたライセンスを有し、CCOは、ライセンスの必要条件を満たすために必要なリンクオブジェクトを有するので、CCOは、問題の時間の前にアクセスされたすべてのメッセージのコンテンツへのアクセスを許可される。
アクセスログおよび解読されたメッセージコンテンツは、調査の一環として、機関/監査役に対して完全に利用可能にされる。
一部の実施形態において、特別プロジェクトチームのためのポリシーは、特別プロジェクトに関連するすべてのライセンスについて失効日を設定するという必要条件をも含み得る。例えば、会社がこの性質の記録を1年の期間にわたって保管することを法令によってのみ求められる場合、ポリシーにおいて、ライセンスが発行日の1年後に失効することを示し得る。その場合、会社は、法的に必要とされるのと同じ期間にわたって記録を保管するだけでよい。CCOでさえ、その時刻以降はアクセスを有し得ない。
上述の説明において、「ターゲティング」および「結合」が時折言及された。好ましい実施形態において、ターゲティングおよび結合は、2つの異なる密接に関連したプロセスを表す。好ましい実施形態において、「結合」は、主に暗号プロセスであり、コンテンツを暗号化するために使用された鍵を保護することに関する。ライセンスが、ノード(例えば「特別プロジェクトチーム」ノード)に「結合される」場合、例えば、コンテンツ鍵がそのノードに関連する公開鍵によって暗号化されることを意味し得る。従って、ノードの秘密鍵にアクセスする装置のみが、コンテンツを解読するために必要な鍵を有する(さらに、好ましい実施形態において、ノードの秘密鍵に対するアクセスを獲得する唯一の方法は、そのノードへのリンクのチェーンを解読することである)。しかしながら、単に正しい秘密鍵を有するということは、コンテンツを解読する機能を装置が有することを示すだけである(そうすることが許可される場合)。
好ましい実施形態において、装置がコンテンツへのアクセスを許可されるか否かは、ライセンス内の制御プログラムによって決定され、具体的には「ターゲティング」の方法によって決定される。「ターゲティング」は、コンテンツの使用を実行するにあたって、特定の単一ノード(または複数ノード)が「到達可能である」ように指定するために、制御プログラムに必要条件を追加することを指す。上記の実施例において、制御プログラムは、消費する装置によって特定ノード「特別プロジェクトチーム」が到達可能であることを一般に指定する。
場合によっては、複数のノードを対象にするライセンスを有することは、望ましいことがある(例えば、新しい最高機密の製品の構成要素に入札する複数の供給会社と協働する会社(「Company」)における新製品開発チーム)。プロジェクトの初期段階において、供給会社Aおよび供給会社B(競合他社)は、いずれも「SecretProjectX」へのリンクを有する、と仮定されたい。供給会社Aは、自らのアイデアをSecretProjectXのすべての構成員と共有することを望むが、そのアイデアを供給会社Bに不注意に漏洩することは望まない。供給会社Aは、以下のように、これらのライセンスを対象にすることができる。すなわち、「SecretProjectXは到達可能である」なおかつ「供給会社Aは到達可能である」または「Companyは到達可能である」。Companyが、不注意にこの情報を、秘密プロジェクトXにおける全員(供給会社Bを含む)と共有する場合、供給会社Bの社員はそれを見ることを許可されず、任意の非開示リスクはCompanyに限定され、供給会社Aがトレードシークレットを失う可能性が排除される。
1.14.実施例:健康管理記録
図23は、本明細書に記載するシステムおよび方法を健康管理記録の管理に応用できる方法を説明する。医療記録は、異なるレベルの機密性を有し、システムにおける異なるエンティティ(例えば患者、医師、保険会社など)に対して異なるアクセス権を認可することは望ましい、と仮定されたい。例えば、一部の記録が患者のみによって閲覧されることを許可すること、一部の記録が患者の医師のみによって閲覧されることを許可すること、一部の記録が患者によって閲覧可能であるが、患者の医師のみによって編集可能であることを許可すること、一部の記録がすべての医師によって閲覧可能であることを許可すること、一部の記録がすべての保険会社によって閲覧されることを許可すること、一部の記録が患者の保険会社のみによって閲覧可能であることを許可すること、などが望ましい場合がある。
図23に示すように、この健康管理エコシステム2300は、本明細書の他の場所に記載するようなノードおよびリンクなどのDRMオブジェクトを使用して、モデル化することができる。例えば、患者2302、患者の医師2304、患者の保険会社2306、患者の装置2308および2310、患者の医師の特定の一人2312、医師のコンピューティング装置2314および2316、すべての医師のグループ2318、一定の専門医のグループ2320、医療機関2322、保険会社2324、保険会社によって使用されるコンピューティング装置2326、すべての保険会社のグループ2328、などにノードを割り当てることができる。
患者の医師は、患者に関する医療記録を作成するために自分のPCを使用する、と仮定されたい。例えば、医療記録は、ノート、診断、処方指示、患者用の指示などのための多くのフィールドを有する文書テンプレートを含んでもよい。テンプレートはまた、医師が文書および/またはその個々のフィールドを管理するためのセキュリティポリシーを選択すること可能にしてもよい。例えば、医師のアプリケーションは、標準的なセキュリティポリシー選択の集合を示し、医師の選択を入手すると、それらの選択に基づいてライセンスを自動的に生成し、医療記録の保護された(例えば暗号化された)コンテンツに関連づけてもよい。
この実施例では、ライセンスは、患者、患者を治療するすべての健康管理提供者、および患者に保障範囲を提供するすべての保険会社に対して、閲覧アクセスを認可する、と仮定されたい。説明のために、ライセンスは、医療機関xにおける心臓専門医のみに編集権を認可する、と更に仮定されたい。
パッケージングアプリケーションは、医師のポリシー指定入力を受け入れて(それは標準的なテンプレート上でパソコンのマウスをクリックすることを単に含んでもよい)、下記に示すような制御プログラムを含むライセンスを生成する。
Figure 0005357292
医療記録およびそれに関連するライセンスは、医療記録のセントラルデータベース(特定の医療財団などによって運営されるデータベース)に格納されてもよい。その後、患者Yが、別の健康管理提供者を訪問し、その健康管理提供者を、(例えば認可用紙に署名することによって)自分の承認済み健康管理提供者の1つとして認可する場合、その健康管理提供者は、患者Y認可の健康管理提供者ノードへのリンクを入手し、その健康管理提供者はコンピュータシステムに記憶される。その健康管理提供者が、医師Xによって作成される医療記録を入手しようとする場合、その医療記録への閲覧アクセスを獲得できる。なぜなら、患者Yが承認した健康管理提供者ノードは、新しい健康管理提供者のコンピュータシステムから到達可能だからである。これに反して、承認されていない健康管理提供者が、(暗号化された)医療記録のコピーを入手しようとする場合、アクセスはできない。なぜなら、必要なノード(すなわち、患者Yのノード、患者Yの承認した全ての健康管理提供者のノード、および患者Yの承認したすべて保険会社のノード)のいずれも、コンピューティングシステムから到達可能ではないからである。
しかしながら、上記の例示的な制御プログラムは、例えば、緊急時において健康管理提供者が保護された医療記録にアクセスする必要がある場合に呼び出せる優先機能を含むが、制御プログラムの条件を満たすことはできないことに留意されたい(なぜなら、例えば、医療記録への緊急時アクセスを試みる健康管理提供者は、あらかじめ患者Yの健康管理提供者として登録されていないからである)。しかしながら、緊急時アクセス例外の呼出しによって、呼出しおよび/または他の状況に関する情報が自動的に記録され、この実施例において、(例えば、患者の好ましい健康管理提供者、すなわち患者によって明示的に認可されるエンティティ、および/または患者自身に対して)通知が送信されることにも留意されたい。濫用の記録が存在し得るので、そのような義務を緊急時例外に関連づけることによって、例外の濫用を阻止してもよい。
この例示的プログラムは、本明細書に記載されるシステムおよび方法の一定の実施形態の説明を容易にするために提供するものであることが理解される。例えば、システムが緊急時例外のためのサポートを含むか否かは、システム設計者の必要条件および要求に一般に依存する。従って、例えば、一部の実施形態は、緊急時例外をサポートしなくてもよく、他の実施形態は、緊急時例外をサポートしてもよい。しかし、そのような例外を呼び出すことができるエンティティのクラスは、「すべての医師」のクラスに限定される(例えば、EmergencyExceptionフラグを「真実の」に設定し、なおかつAllDoctorsノードが到達可能であることを要求することによって)。他の実施形態は、やはり緊急時例外をサポートしてもよいが、強制的な義務をそれに関連づけない(なぜなら、好ましい実施形態において、義務に従えないことは、コンテンツをアクセス不可能にし得るからである)。これに代わって、非技術的、法的、または組織的な施行手段に依存する(例えば、例外を呼び出す能力を健康管理提供者が濫用しないと信頼することによって、および/または濫用を防止するために事業証明書および法律制度に依存することによって)。
上述の実施例に対するさらに別のバリエーションとしては、医師または具体的に指名された医師が、実際に医療記録にアクセスするという、より強力な証明を要求することであり、記録にアクセスするために医師が使用するコンピュータに他の誰かが座るのとは対照的である(従って、コンピュータは、到達可能性分析を満たすのに必要なリンクを潜在的に含む)。そのようなより強力な形態の認証は、任意の適切な態様において実施することができる。このことは、例えば、パスワード、ドングル、バイオメトリック認証メカニズムなどを使用して、医療記録へのアクセスに使用される医師のコンピュータおよび/またはソフトウェアを保護することによって、アプリケーションまたはシステムのレベルにおいて、完全にまたは部分的に実施することができる。それに代わって、またはそれに加えて、一定の医療記録に関連する制御プログラムは、それ自身が義務または条件を含むことができる(例えば、ドングルの存在を照合するなどの、より強力な識別を要求したり、ホストがパスワードを獲得することを要求したりすることなどによって)。
1.15.実施例:購読
図24は、本明細書に示すシステムおよび方法を電子購読サービスの状況に使用できる方法を示す。例えば、ユーザ(アリス)が、インターネットサービスプロバイダ(XYZ ISP)から、ジャズの音楽への購読を入手することを望むとする。インターネットサービスプロバイダは、無料のトライアル購読を含む様々な異なる購読オプションを提供してもよいが、失効する前に購読コンテンツを5回再生するために利用することしかできない(例えば、1つの曲を5回再生すること、5つの異なる曲を1回ずつ再生すること等によって)。トライアル購読はまた、わずかにグレードを下げた形態(例えば低減した忠実度または解像度)においてコンテンツを利用可能にするのみである。アリスは、自分のパーソナルコンピュータを使用して、サービスプロバイダのインターネットウェブサイトにアクセスし、トライアル購読を選択する。サービスプロバイダは、リンクオブジェクト2400およびエージェント2401を発行し、それらをアリスのパーソナルコンピュータ2406に送信する。エージェント2401は、アリスの安全な状態データベースの状態を初期化するように操作可能であり、このデータベースは、アリスがトライアルコンテンツを使用した回数の記録をとるために使用されるリンク2400は、アリスのISPアカウントノード(Alice@XYZ ISP)2402から購読ノード2404へのリンクであり、制御プログラムを含む。制御プログラムは、アリスがコンテンツの再生をリクエストする際に、エージェント2401によって設定された状態変数の現在の値を照合することによって、更なる再生が可能か否かを調べる。
アリスが、コンテンツを自分のPCにダウンロードし、コンテンツの再生を試みる際に、アリスのPC上のDRMエンジンは、コンテンツに関連するライセンスを評価する。ライセンスは、コンテンツを再生するためには、購読ノード2404が到達可能でなければならないことを示す。アリスは、すでに自分のPCをISPに登録した。その時にアリスは、自分のPCノード2406から自分のアカウントノード2402へのリンク2405を受信した。従って、DRMエンジンは、PCノード2406を購読ノード2404に接続するリンクオブジェクト2405および2400を含む。しかしながら、コンテンツを再生するアリスのリクエストを認可する前に、DRMエンジンはまず、リンクが含む任意の制御プログラムを実行することによって、リンクが有効か否かを決定する。リンク2400における制御プログラムが実行されると、DRMエンジンは、状態データベースエントリを照合することによって、すでに5回の再生が行われた否かを決定する。そうでない場合には、コンテンツを再生するアリスのリクエストを認可するが、ホストアプリケーションに対して義務も発行する。義務は、レンダリングの前に、ホストがコンテンツのグレードを下げることを要求する。ホストアプリケーションは、この義務を満たすことが可能であると決定し、コンテンツのレンダリングを始める。5回の無料トライアル再生に対してコンテンツを数える前に、アリスがそのコンテンツをプレビューできるためには、制御プログラムがコールバックを含んでもよい。コールバックは、コンテンツを再生するリクエストが認可された後の、例えば20秒を照合することによって、そのコンテンツが依然として再生されているか否かを調べる。コンテンツが依然として再生されている場合には、再生カウントは減らされるが、そうでない場合には減らされない。従って、アリスは、購読サービスによって提供されるコンテンツ項目のいずれかを選択し、アリスのトライアル購読が失効する前に、そのうちの5つを再生することができる。
アリスのトライアル購読が失効すると、アリスは、正規の毎月購読を購入することを決めることにより、月額料金で望む限りの数のコンテンツ項目を再生することができる。アリスは、自分のPCを使用して購読の契約をすることにより、アリスのアカウントノード2402から購読ノード2404へのリンク2410を受信する。リンクは、リンクが1ヵ月間のみにわたって有効であることを示す制御プログラムを含む(例えば、制御プログラムは、状態データベースにおけるエントリを照合することにより、リンクが発行されてから1ヵ月が経過したか否かを調べる)。アリスのPCには、リンク2410と共に、エージェントプログラムが送信される。エージェントプログラムは、PCのDRMエンジンの状態データベースにおける適切なエントリを初期化するように操作可能であり、DRMエンジンは、リンクが発行された日付を示す。アリスが、購読サービスからコンテンツをダウンロードし、再生を試みる際に、アリスのPCのDRMエンジンは、リンク2405および2410を含む購読ノードへの経路が存在することを決定する。DRMエンジンは、リンク2405および2410に含まれる任意の制御プログラムを実行することにより、リンクが有効であるか否かを決定する。リンク2410が発行された時から1ヵ月未満が経過した場合、リンク2410における制御プログラムは、リンク2410が依然として有効であることと、コンテンツを再生するアリスのリクエストとを示す結果を返す。アリスが、無料トライアル期間中にすでに入手したコンテンツの再生を試みる場合、アリスのPC上のDRMエンジンは、同じ分析を実行し、アリスのリクエストを認可する。トライアル期間中に入手したコンテンツに関連するライセンスは、安全なデータベースにTrialState変数が設定されていない場合、購読ノードが到達可能でなければならないということが唯一の条件であるということを示す。購読ノードは、アリスのPCから再び到達可能であるので、アリスは、そのコンテンツに再びアクセスすることができるが、今回は、もはや有効でないリンク2400でなく、リンク2410を介する。従って、アリスは、無料トライアルの提供中に入手したコピーに置き換わる、コンテンツ項目の第2のコピーを入手する必要がない。同様に、アリスが友人のボブ(同一サービスへの加入者)から購読コンテンツを入手する場合、この実施例において、アリスもそのコンテンツを再生することが可能である。なぜなら、コンテンツのライセンスは、購読ノードが到達可能であることを単に要求し、購読ノードがボブのPCまたはアカウントを介して到達可能であることを要求しないからである。
上記の実施例は、本明細書に記載するシステムおよび方法によって有効にできる機能の一部の例示を単に意図するものであり、まさに上述したとおりの態様で購読が実現されなければならないという提案を意図するものではないことが理解される。例えば、他の実施例において、購読コンテンツに関連するライセンスは、購読ノードの代わりにユーザのノードに結合されてもよい。これによって、上記の実施例においてボブおよびアリスが可能なように2人の加入者がコンテンツを共有することを防止する。上記の実施例に対して多くの他のバリエーションを行うことができることが理解される。
以下の表は、上記の実施例におけるエージェント、リンク、およびライセンス制御プログラムに関する、一部の例示的な擬似コードを提供するものである。
Figure 0005357292
Figure 0005357292
図24を再び参照して、アリスは、モバイルサービスプロバイダのアカウント2420をも有する。このアカウントは、アリスがネットワークに接続されている限り有効に保たれる。アリスは、購読のために特別な支払いを行う必要がなく、それと引き替えに、リンクがアリスに送信される。むしろ、アリスがネットワークに接続する際に、更新リンク2424がアリスの電話に自動的に送信される。これらのリンクによって、アリスは、モバイルサービスプロバイダによって提供されるコンテンツ項目またはサービスのいずれにもアクセスすることができる。これらが有するライセンスは、購読ノード2422が到達可能であることのみを要求する。アリスは、モバイルサービスプロバイダを変更した場合、自分のリンク2424が失効すると、すでに獲得したコンテンツにアクセスすることができなくなる。
図25は、サービスプロバイダがホームネットワークドメイン2500と対話し得る方法の実施例を示す。この実施例において、装置は、最高5台の装置が常にドメインに帰属することを可能にするポリシーを実施する、ホームネットワークドメインに登録される。
スミス家のケーブルサービスプロバイダは、ホームネットワークドメイン2500を設定するために使用するドメインマネージャソフトウェアを提供しなかった。しかし、ケーブルサービスプロバイダは、ホームネットワークドメインマネージャソフトウェアの認証済みプロバイダによってドメインマネージャが実現されていることを知っているので、ドメインマネージャソフトウェアが意図された通りに稼働することを信頼する。図25に示すように、スミス家は、アリスの電話およびPC、カールのPVR、およびジョーのPSPを、ドメイン2500に接続する。その結果、これらの装置の各々からドメインノード2500へのリンクが発行される。新しいコンテンツが受信される場合(例えばPVRにおいて)、551出願に記載されるような発見サービスは、ドメインにおける他の装置が、コンテンツおよび任意の必要なリンクを自動的に入手することを可能にする。ドメインノード2500からサービスプロバイダアカウントノード2502へのリンクが発行される。ケーブルサービスプロバイダのコンテンツの一部は、早送りおよび巻戻しが無効にされなければならないという義務を有するライセンスを有するので、広告が閲覧される。カールのPVRおよびPCアリスのPCは、この義務を実施できるので、コンテンツを再生できる。アリスの携帯電話は、この義務を実施できないので、コンテンツへのアクセスを拒絶する。
1.16.更なる実施例:コンテンツおよび著作権共有
前述の実施例が示すように、本明細書に示すシステムおよび方法の実施形態は、電子コンテンツが自然な方法で共有されることを可能にする。例えば、本明細書に記載するシステムおよび方法を使用することによって、消費者は、娯楽コンテンツを友人および家族と共有することができ、および/または家族の装置のすべてにおいて娯楽コンテンツを享受することができ、同時に、より広い無許可の配信が防止される。例えば、自動化されたピアツーピアの発見および通知サービスを使用することができる。その結果、1つの装置がコンテンツまたは関連する著作権を入手する際に、他の装置はそのコンテンツに自動的に気づくことができる。それによって、自動的にアップデート可能な仮想分散ライブラリが提供される。例えば、一実施形態において、1人のユーザがある場所において携帯機器上のコンテンツまたは著作権を入手してから帰宅する場合、ユーザの家族の装置は、これらの著作権を自動的に発見および利用することができる。反対に、ユーザが、自分のホームネットワーク上の装置において著作権を入手する場合、ユーザの携帯機器は、そのコンテンツを発見し、遠くへ運んで他の場所で使用することができる。本明細書に記載するシステムおよび方法の好ましい実施形態を使用することによって、例えば551出願に記載されるサービス発見および検査技術を用いて上記のシナリオを完全に自動化することを可能にするサービスおよび著作権オブジェクトを作成することができる。例えば、特定のドメインに登録される装置は、互いにサービスを提供してもよく(例えば著作権およびコンテンツの共有)、および/または遠隔サービスを呼び出すことによって、コンテンツのローカルな共有を容易にすることができる。記載するシステムおよび方法は、コピーの生成そのものの防止に焦点をあてないDRMフレームワークの生成を可能にするが、ネットワーク技術と調和して作動することにより、コンテンツの共有を可能にするように設計されており、消費者がコンテンツの違法ディストリビュータになることを防止する。
本明細書に記載するDRMシステムおよび方法の好ましい実施形態はまた、一部の他のDRMシステムの冗長な種類の著作権表現の特徴を有することなく、著作権の決定を可能にする。これに代わって、好ましい実施形態は、文脈上対話することができる巧みに作られた著作権オブジェクトのセットを使用する。これらのオブジェクトは、エンティティ(例えばユーザ、装置、コンテンツ、およびそれらのグループ)の間の関係および制御を記述する。例えば、そのような文脈的対話処理は、所与のコンテンツを再生できることを装置が決定することを可能にする。その理由は以下の通りである。(a)コンテンツは、ユーザが現在購読している合法的なコンテンツサービスから入手したものである。(b)ユーザは、特定の家族グループの一員である。(c)装置は、この特定の家族グループに関連している。この実施例に記載するような数多くの種類の関係があり、ユーザはそのことを直観的に理解する。本明細書に記載するシステムおよび方法の好ましい実施形態は、これらの種類の関係をおのずと理解するシステムの生成を可能にする。エンティティ間の関係は、時間の経過と共に、生成、抹消、および変化し得る。好ましい実施形態は、動的なネットワーク化された環境(消費者がおのずと理解できる環境)において著作権を決定する自然な方法を提供する。それにもかかわらず、コンテンツの展開者がより従来的な著作権表現方法を使用したい場合、好ましい実施形態はそれを受け入れることもできる。例えば、ツールを使用することによって従来の著作権表現を上述のようなオブジェクトのセットに変換することができ、および/またはそのような著作権表現を直接的に操作するDRMエンジンを実現することができる。それに代わって、一部の実施形態において、装置は、そのような従来の著作権表現を理解する必要がなく、それらの限定によって制約されない。
本明細書に記載するシステムおよび方法の好ましい実施形態はまた、媒体サービスの非常に一般的な概念を有する。媒体サービスの例は、放送サービス、およびインターネットのダウンロードサービスまたは購読サービスである。これらのサービスに関連する制約は、コンテンツの共有を困難にする場合がある。本明細書に記載するシステムおよび方法の好ましい実施形態によって、コンテンツは、放送、ブロードバンド、およびモバイルサービス上で入手することができ、携帯機器を含む家庭内のネットワーク化された装置のグループ上で共有することができる。それに代わって、またはそれに加えて、サービスは、無線接続を介してピアツーピア様式で個々の装置によって提供することができる。例えば、新世代のWiFi対応携帯電話は、コンテンツカタログサービスを他の装置に提供することができる。そのようなサービスは、他の装置が、どのようなコンテンツが装置から共有するように利用可能であるかを「調べる」ことを可能にする。サービスは、著作権の決定のために使用できる情報を提供するので、任意の限定を受け入れたり容易に排除したりすることができる。
本明細書に記載するシステムおよび方法の好ましい実施形態は、1つのサービスまたは1つのプラットホームに限定されない。前述したように、好ましい実施形態は、「個人」サービスを含む数多くのサービスとともに動作することができる。ホームネットワークおよび個人ネットワークがよりユビキタスになるにつれて、このことはますます重要になりつつある。例えば、デジタルカメラは、現在WiFi接続性を有して利用可能であり、ネットワーク上で写真を共有することが非常に便利になっている。写真の共有を自動化できることは素晴らしいが、カメラは、持ち運ばれる際に、多くの異なるネットワークに遭遇する。自動化された共有は便利であるが、個人的な写真はもちろん個人的なものである。本明細書に記載するシステムおよび方法の実施形態は、家族の装置において家族内で写真を共有することを容易にするが、ネットワーク上のカメラに偶然に遭遇する任意の装置とは共有しない。一般に、より多くの装置がネットワーク化されるにつれて、それらの装置上のすべてのコンテンツの著作権を管理することがますます重要になってくる。ネットワークの目的は、ネットワーク化された装置に関する情報の共有を可能にすることであるが、ネットワークは、互いに重なり合い、組み合わされる。ネットワークは、コンテンツが容易に共有されることを可能にするが、任意に共有されるべきではない。従って、コンテンツ、ユーザ、ネットワーク、および装置の特性によって提供される状況を利用することによって、コンテンツが共有されるか否か、およびコンテンツの共有方法を決定する、ネットワークを意識したDRMシステムを有することは、望ましい。本明細書に記載するシステムおよび方法の好ましい実施形態は、そのような方法を可能にする。
6.コンテンツ消費およびパッケージングのための参照アーキテクチャ
以下は、DRMで保護されたコンテンツを消費する消費アプリケーション(例えばメディアプレーヤ)、および消費アプリケーションを対象にしたコンテンツをパッケージングするパッケージングアプリケーション(例えばサーバに存在するアプリケーション)についての、参照アーキテクチャの説明である。
1.17.クライアントアーキテクチャ
以下は、コンテンツを消費するホストアプリケーションのためにDRMエンジンの例示的実施形態が実行し得る機能の実施例を提供するものである。
1.17.1.DRMエンジンインタフェースに対するホストアプリケーション
好ましい実施形態においては、DRMエンジン用のAPIは必要ないが、以下は、例示的なDRMエンジン(「オクトパス」DRMエンジンと呼ばれる)によって、1つの例示的実施形態のホストアプリケーションに提供される、インタフェースの種類の高レベルの説明である。
Octopus:CreateSession(hostContextObject)→Session。これは、ホストアプリケーションコンテキストを与えられるセッションを作成する。コンテキストオブジェクトは、アプリケーションの中にコールバックを行うために、オクトパスDRMエンジンによって使用される。
Session:ProcessObject(drmObject)。この機能は、DRMサブシステムに帰属するものとして識別され得る媒体ファイルにおける一定の種類のオブジェクトに遭遇するときに、ホストアプリケーションによって呼び出されるべきものである。そのようなオブジェクトは、コンテンツ制御プログラム、帰属関係トークンなどを含む。これらのオブジェクトのシンタックスおよびセマンティクスは、ホストアプリケーションにとって不透明である。
Session:OpenContent(contentReference)→Content。ホストアプリケーションは、マルチメディアコンテンツファイルと対話する必要があるときに、この機能を呼び出す。DRMエンジンは、Contentオブジェクトを返す。Contentオブジェクトは、コンテンツに関するDRM情報を検索し、それと対話するために、後で使用することができる。
Content:GetDrmInfo()。これは、ファイルのための標準的なメタデータにおいて利用可能でないコンテンツに関するDRMメタデータを返す。
Content:CreateAction(actionInfo)→Action。ホストアプリケーションは、Contentオブジェクトと対話することを望むときに、この機能を呼び出す。actionInfoパラメータは、アプリケーションがどのような種類のアクションを実行する必要があるか(例えばPlay)、ならびに必要に応じて任意の関連パラメータを指定する。この機能は、Actionオブジェクトを返す。Actionオブジェクトを使用することによって、アクションを実行し、コンテンツ鍵を検索することができる。
Action:GetKeyInfo()。これは、解読サブシステムがコンテンツを解読するために必要な情報を返す。
Action:Check()。DRMサブシステムがこのアクションの実行を認可するか否か(例えばAction:Perform()が成功するか否か)を照合する。
Action::Perform()。これは、このアクションを管理する規則による指定される通りに、アクションを実行し、(その副作用による)任意の結果を実行する。
1.17.2.ホストサービスインタフェースに対するDRMエンジン
以下は、ホストアプリケーションの例示的実施形態から、DRMエンジンの例示的実施形態によって必要とされる、ホストサービスインタフェースの種類の実施例である。
HostContext::GetFileSystem(type)→FileSystem。これは、DRMサブシステムが排他的にアクセスする仮想FileSystemオブジェクトを返す。この仮想FileSystemは、DRM状態情報を格納するために使用される。このFileSystemの中のデータは、DRMサブシステムのみによって読み込みおよび書き込みが可能であるべきである。
HostContext::GetCurrentTime()。これは、ホストシステムによって保守されるような現在の日付/時間を返す。
HostContext::GetIdentity()。これは、このホストの一意なIDを返す。
HostContext::ProcessObject(dataObject)。これは、データオブジェクトをホストサービスに返す。データオブジェクトは、DRMオブジェクトに埋め込まれている。しかし、DRMサブシステムは、データオブジェクトをホストによって管理されるもの(例えば証明書)として識別する。
HostContext::VerifySignature(signatureInfo)。これは、データオブジェクトを通じてデジタル署名の有効性を照合する。一実施形態において、signatureInfoオブジェクトは、XMLSig要素に見いだされる情報と同等の情報を含む。ホストサービスは、署名を検証するために必要な鍵および鍵証明書の管理を担う。
HostContext::CreateCipher(cipherType,keyInfo)→Cipher。これは、DRMサブシステムがデータを暗号化および解読するために使用することができるCipherオブジェクトを作成する。暗号化を実施するために必要な鍵情報を記述する各フォーマットについて、暗号種類の最小セットが規定される。
Cipher::Encrypt(data)
Cipher::Decrypt(data)
HostContext::CreateDigester(digesterType)→Digester。これは、DRMサブシステムが一部のデータを通して安全なハッシュを算出するために使用することができるDigesterオブジェクトを作成する。
一実施形態において、ダイジェストの最小セットを規定することができる。
Digester::Update(data)
Digester::GetDigest()
1.17.3.UMLシーケンス図
図26は、前述のセクションに記載される例示的なAPIの使用方法、ならびに例示的実施形態においてホストアプリケーションとDRMクライアントエンジンとの間で行われる対話処理を例示する。
1.18.パッケージャ参照アーキテクチャ
以下は、コンテンツをパッケージングするホストアプリケーションのために、パッケージングエンジンが実行し得る機能の例を提供するものである。実際には、パッケージングアプリケーションは、具体的にパッケージングに焦点をあててもよく、あるいは、(例えば、ローカルに、あるいはネットワーク上の他の場所でパッケージングされる)保護されたコンテンツにアクセスするユーザシステムにおいて稼働する、汎用アプリケーションの一部であり得る。
1.18.1.パッケージングエンジンインタフェースに対するホストアプリケーション
このセクションは、「オクトパス」と呼ばれる参照DRMエンジンに関連して使用されるホストアプリケーションとパッケージングエンジンとの間の例示的なAPIの高レベルの説明を提供するものである。
Octopus::CreateSession(hostContextObject)→Session。これは、ホストアプリケーションコンテキストを与えられるセッションを作成する。この機能によって返されるコンテキストオブジェクトは、アプリケーションの中にコールバックを行うために、パッケージングエンジンによって使用される。
Session::CreateContent(contentReferences[])→Content。ホストアプリケーションは、この機能を呼び出すことによって、次のステップのライセンスオブジェクトに関連するコンテンツオブジェクトを作成する。contentReferencesアレイにおいて複数のコンテンツ参照を有するということは、これらがバンドルにおいて共に結合され(例えば1つのオーディオトラックおよび1つのビデオトラック)、発行されたライセンスが1つの非可分グループとしてこれらの対象にされるべきであるということを意味する。
Content::SetDrmInfo(drmInfo)。drmInfoパラメータは、発行されるライセンスのメタデータを指定する。drmInfoは、ライセンスから仮想マシンのためのバイトコードに変換するために、ガイドラインとしての役割を果たす。
Content::GetDRMObjects(format)→drmObjects。この機能は、パッケージャエンジンが作成したdrmObjectsをホストアプリケーションが獲得する準備ができたときに、呼び出される。フォーマットパラメータは、これらのオブジェクト(例えばXMLまたはバイナリアトム)のについて予想されるフォーマットを示す。
Content::GetKeys()→keys[]。この機能は、コンテンツを暗号化するために鍵を必要とするときに、ホストパッケージングアプリケーションによって呼び出される。一実施形態において、コンテンツ参照ごとに1つの鍵がある。
1.18.2.ホストサービスインタフェースに対するパッケージングエンジン
以下は、一実施形態において、例示的なパッケージングエンジンにとってホストアプリケーションが提供する必要のあるインタフェースの種類の実施例である。
HostContext::GetFileSystem(type)→FileSystem。これは、DRMサブシステムが排他的にアクセスする仮想FileSystemオブジェクトを返す。この仮想FileSystemは、DRM状態情報を格納するために使用することができる。このFileSystemの中のデータは、DRMサブシステムのみによって読み込みおよび書き込みが可能であるべきである。
HostContext::GetCurrentTime()→Time。これは、ホストシステムによって保守されるような現在の日付/時間を返す。
HostContext::GetIdentity()→ID。これは、このホストの一意なIDを返す。
HostContext::PerformSignature(signatureInfo,data)。パッケージングエンジンによって作成された一部のDRMオブジェクトは、信頼されなければならない。ホストによって提供されるこのサービスは、指定されたオブジェクトに署名するために使用される。
HostContext::CreateCipher(cipherType,keyInfo)→Cipher。これは、パッケージングエンジンがデータの暗号化および解読のために使用することができる暗号オブジェクト(データの暗号化および解読ができるオブジェクト)を作成する。一実施形態において、暗号オブジェクトは、ContentKeyオブジェクトにおけるコンテンツ鍵データを暗号化するために使用される。
Cipher::Encrypt(data)。これは、データを暗号化する。
Cipher::Decrypt(data)。これは、データを解読する。
HostContext::CreateDigester(digesterType)→Digester。これは、パッケージングエンジンが一部のデータを通して安全なハッシュを算出するために使用することができるダイジェスタオブジェクトを作成する。
Digester::Update(data)。これは、ダイジェスタオブジェクトにデータを送る。
Digester::GetDigest()。これは、ダイジェストを算出する。
HostContext::GenerateRandomNumber()。これは、鍵を生成するために使用できる乱数を生成する。
図27は、上記の例示的なAPIの使用方法、ならびに1つの例示的実施形態においてホストアプリケーションとパッケージングエンジンとの間で行われる対話処理の、実施例を示すUML図である。
7.オブジェクト
このセクションは、DRMエンジンの例示的なインプリメンテーションの基礎単位として役立つDRMオブジェクトに関する詳細な情報を提供するものである。まず、コンテンツの保護およびガバナンスのためのDRMエンジン使用法のオブジェクトの種類について、比較的に高レベルの概要を述べる。次に、これらのオブジェクトより詳細な説明、およびオブジェクトが伝える情報を、1つの例示的実施形態において使用される一部の例示的データ構造とともに提供する。
1.19.コンテンツ保護およびガバナンスDRMオブジェクト
前述したように、図6と関連して、コンテンツガバナンスオブジェクト(ノードおよびリンクオブジェクトとともに集合的に「DRMオブジェクト」と呼ばれることがある)を使用することによって、使用規則および条件を、保護されたコンテンツに関連づける。
これらのオブジェクトは共にライセンスを形成する。
図6に示すように、コンテンツオブジェクト614によって表されるデータは、鍵を使用して暗号化される。コンテンツを解読するために必要な鍵は、ContentKeyオブジェクト602によって表される。それを暗号化するために使用するコンテンツと鍵との間の結合は、プロテクタオブジェクト604によって表される。解読鍵の使用を管理する規則は、制御オブジェクト608によって表される。ContentKey602と制御オブジェクト608との間の結合は、コントローラオブジェクト606によって表される。一実施形態において、信頼されるシステムは、制御オブジェクト608におけるバイトコードによって表現される規則のガバナンスの下で、コンテンツ解読鍵を利用するのみである。図28Aは、図6に示すようなライセンスのより詳細な図解であり、一実施形態において使用される署名スキームを例示する。
1.19.1.共通要素
一実施形態において、オブジェクトは、共通の基本的特徴を共有し、それらの各々は、ID、属性のリスト、および拡張のリストを有することができる。
1.19.1.1.ID
他のオブジェクトによって参照されるオブジェクトは、一意なIDを有する。
一実施形態において、IDは単にURIであり、規則としてそれらのURIはURNである。
1.19.1.2.属性
属性は、入力された値である。属性には、名称をつけたり削除したりすることができる。名前付き属性の名前は、単純なストリングまたはURIである。属性の値は、単純型(ストリング、整数、またはバイト列)、または複合型(リストおよびアレイ)である。種類「リスト」の属性は、名前付き属性の番号の付かないリストを含む。種類「アレイ」の属性は、無名の属性の順序配列を含む。
オブジェクトの「属性」フィールドは、名前付き属性の(場合によっては空の)無秩序のセットである。
1.19.1.3.拡張
拡張は、任意または強制的な追加データを運ぶために、オブジェクトに追加することができる要素である。拡張は、入力され、一意なIDも有する。拡張は、内部拡張または外部拡張であり得る。
1.19.1.3.1.内部拡張
内部拡張は、拡張するオブジェクトの中に含まれる。内部拡張は、拡張のための特定の拡張データの種類が、オブジェクトを使用するインプリメンテーションにとって知られる必要があるか否かを示す、「重要」フラグを有する。一実施形態において、インプリメンテーションが、理解できないデータ型を有する重要な拡張を有するオブジェクトに遭遇する場合、オブジェクト全体を拒絶しなければならない。
一実施形態において、内部拡張のIDは、ローカルに一意である必要がある。オブジェクトは、同一のIDを有する2つの拡張を含むことはできない。しかし、2つの異なるオブジェクトが各々、他のオブジェクトの拡張のIDと同じIDを有する拡張を含むことは可能である。
オブジェクトの「拡張」フィールドは、内部拡張の(場合によっては空の)無秩序のセットである。
1.19.1.3.2.外部拡張
外部拡張は、拡張するオブジェクトの中には含まれない。外部拡張は、オブジェクトから独立して出現し、それらが拡張するオブジェクトのIDを含む「サブジェクト」フィールドを有する。一実施形態において、外部拡張のIDは、グローバルに一意である必要がある。
1.19.2.コンテンツ
一実施形態において、コンテンツオブジェクトは、「外部」オブジェクトである。そのフォーマットおよび記憶は、DRMエンジンの制御の下にはなく、ホストアプリケーションのコンテンツ管理サブシステムの下にある(例えば、コンテンツは、MP4ムービーファイル、MP3音楽トラックなどであり得る)。一実施形態において、コンテンツのためのフォーマットは、IDをコンテンツペイロードデータに関連づけるためのサポートを提供する必要がある。コンテンツペイロードは、フォーマットに依存する態様(一般に共通暗号(例えばAES)によって)において暗号化される。
1.19.3.ContentKey
ContentKeyオブジェクトは、一意な暗号化キーを表し、それをIDに関連づける。IDの目的は、ProtectorオブジェクトおよびControllerオブジェクトがContentKeyオブジェクトを参照できるようにすることである。ContentKeyオブジェクトにカプセル化される実際の鍵データは、それ自体が暗号化されるので、コンテンツを解読することを認可された受信者のみが読み取ることができる。ContentKeyオブジェクトは、鍵データを暗号化するためにどの暗号システムが使用されたかを指定する。コンテンツ鍵データを保護するために使用される暗号システムは、鍵配信システム(Key Distribution System)と呼ばれる。異なる鍵配信システムを使用することができる。鍵配信システムの例は、上述したスキューバ鍵配信システムである。
1.19.4.プロテクタ
Protectorオブジェクトは、Contentオブジェクトのデータを暗号化するためにどの鍵が使用されたかを見いだすことを可能にする情報を含む。Protectorオブジェクトはまた、そのデータを暗号化するためにどの暗号化アルゴリズムが使用されたかに関する情報を含む。一実施形態において、Protectorオブジェクトは、Contentオブジェクトへの参照である1つ以上のIDと、データを暗号化するために使用された鍵を表すContentKeyオブジェクトへの参照である正確に1つのIDとを含む。プロテクタが複数のContentオブジェクトを指し示す場合、これらのすべてのContentオブジェクトは、同一の暗号化アルゴリズムおよび同一の鍵を使用して暗号化されたデータを表す。一実施形態において、使用される暗号システムが、異なるデータ項目のために同一の鍵を使用する安全な方法を可能にしない限り、Protectorオブジェクトが複数のContentオブジェクトを指し示すことは推奨されない。
1.19.5.制御
制御オブジェクトは、ホストアプリケーションによってリクエストされるときに、コンテンツ上の一定のアクションが許可されるべきか否かに関する決定を、DRMエンジンが行うことを可能にする、情報を含む。一実施形態において、コンテンツ鍵の使用を管理する規則は、仮想マシンによって実行されるバイトコードとして、制御オブジェクトにおいてコード化される。制御オブジェクトはまた、一意なIDを有するので、コントローラオブジェクトによって参照されることができる。一実施形態において、制御オブジェクトは署名されるので、DRMエンジンは、制御バイトコードが有効で信用できることを、決定のためにそれを使用する前に、検証できる。制御オブジェクトの有効性もまた、コントローラオブジェクトに含まれる安全なハッシュの検証によって、任意に導出することができる。
1.19.6.コントローラ
コントローラオブジェクトは、ContentKeyオブジェクトによって表される1つ以の鍵の使用をどの制御が管理するかについて、DRMエンジンが見いだすことを可能にする情報を含む。コントローラオブジェクトは、ContentKeyオブジェクトおよびそれが参照する制御オブジェクトにそれを結合する情報を含む。一実施形態において、コントローラオブジェクトは署名される(例えば、コントローラオブジェクトに署名することを可能にする証明書を有するパッケージャアプリケーションによって)。その結果、ContentKeyとそれを管理する制御オブジェクトとの間の結合の有効性および、ならびにContentKey IDと実際の鍵データとの間の結合の有効性を、確立することができる。コントローラオブジェクトの署名は、公開鍵署名、または共通鍵署名、あるいは両方の組み合わせであり得る。更に、コントローラオブジェクトによって参照される制御オブジェクトのダイジェストがコントローラオブジェクトに含まれる場合、制御オブジェクトの署名を別に検証する必要なしに、制御オブジェクトの有効性を導出することができる。
1.19.6.1.共通鍵署名
一実施形態において、このことは、コントローラオブジェクトのための署名の好ましい種類であり、コントローラオブジェクトのメッセージ認証コード(MAC)を算出することによって実現される。これに鍵をかけることは、対応するContentKeyオブジェクトによって表される鍵と同一の鍵によって行われる。一実施形態において、このMACのための標準的な方法は、同一の展開において使用されるPKI署名アルゴリズムのために選択されるものと同一のハッシュアルゴリズムを有するHMACを使用することである。
1.19.6.2.公開鍵署名
この種の署名は、コントローラオブジェクトの署名者の身元を知る必要があるときに、使用される。この種の署名は、公開鍵署名アルゴリズムによって実現される。この署名は、このオブジェクトの有効性を表明する主体の秘密鍵によって行われる。一実施形態において、この種の署名を使用する場合、共通鍵署名も存在し、コントローラオブジェクトならびに公開鍵署名の両方に署名する。その結果、その秘密鍵によって署名した主体もまた、ContentKeyオブジェクトにおいて運ばれるコンテンツ鍵の実効値についての知識を有したことを保証することができる。
1.20.識別および鍵管理DRMオブジェクト
前述したように、ノードオブジェクトは、DRMプロファイルにおけるエンティティを表す。ノードオブジェクトが表すものを規定するために、暗黙的または明示的なセマンティクスは使用されない。システムの所与の展開(DRMプロファイル)は、どのような種類の主体が存在するか、および異なるノードオブジェクトがどのような役割および識別を表すかを規定する。その意味情報は、ノードオブジェクトの属性を使用して、一般に表現される。
リンクオブジェクトは、ノード間の関係を表す。リンクオブジェクトはまた、コンテンツ鍵導出のために使用されるリンクを可能にする一部の暗号データを任意に含むことができる。まさしくノードに関して、一実施形態において、リンク関係が意味するものを規定するために、暗黙的または明示的なセマンティクスは使用されない。所与のDRMプロファイルにおいてリンクのfromノードおよびtoノードが表すものに依存して、リンク関係の意味は、帰属関係、所有権、関連、および/または多くの他の種類の関係を表現することができる。代表的なDRMプロファイルにおいて、一部のノードオブジェクトはユーザを表すことがあり、他のノードは装置を表すことがあり、他のノードはユーザグループまたは認可ドメイン(広告)を表すことがある。そのような状況において、装置とユーザとの間のリンクは所有権関係を表してもよく、ユーザとユーザグループまたは認可ドメインと間のリンクは帰属関係を表してもよい。図28Bは、1つの例示的実施形態におけるノードとリンクとの間の構造および相互関係を例示する。
1.20.1.ノード
ノードオブジェクトは、システムのエンティティを表す。ノードオブジェクトの属性は、ノードオブジェクトが表すものの一定の態様を規定する(例えば、DRMプロファイルの状況におけるノードオブジェクトによって表される役割または識別)。ノードオブジェクトはまた、ノードオブジェクトの機密の部分(一般に、ノードによって表されるエンティティ、またはそのノードの管理を担う一部のエンティティ)にアクセスするサブシステムに対して、機密情報を対象にするために使用される機密非対称鍵のペアを有してもよい。ノードにおいて対象にされる機密情報は、そのノードの機密公開鍵によって暗号化することができる。ノードオブジェクトはまた、共有非対称鍵のペアを有してもよい。共有共通鍵は、システムがContentKey配信のためにContentKey導出システム(例えば本明細書の他の場所に記載するようなもの)を使用するときに、リンクオブジェクトと連動して使用することができる。好ましい実施形態において、リンクまたは制御オブジェクトによって参照される必要のあるエンティティ、または暗号によって対象にされる情報を受信する必要のあるエンティティのみが、対応するノードオブジェクトを有することを必要とする。
1.20.2.リンク
リンクオブジェクトは、頂点がノードオブジェクトであるグラフにおいて、誘導されたエッジが存在するということの、署名されたアサーションである。ノードおよびリンクの所与のセットについて、グラフにおいてノードX頂点とノードY頂点との間に有向路が存在する場合、ノードXとノードYとの間に経路があると言われる。ノードXとノードYとの間に経路がある場合、ノードYはノードXから到達可能であると言われる。リンクオブジェクトによって表されるアサーションは、どのノードが他のノードから到達可能であるかを表現するために使用される。コンテンツオブジェクトを管理する制御は、アクションの実行を可能にする前に、アクションを実行するエンティティに関連するノードから一定のノードに到達可能であることを照合できる。例えば、ノードDが、コンテンツオブジェクト上で「再生」アクションを実行することを望む装置を表す場合、コンテンツオブジェクトを管理する制御は、一定のユーザを表す一定のノードUが、ノードDから到達可能であるか否かを検証することができる。ノードUが到達可能であるか否かを決定するために、DRMエンジンは、ノードDとノードUとの間に経路を確立することができるリンクオブジェクトのセットがあるか否かを照合することができる。
一実施形態において、DRMエンジンは、ノードグラフにおける経路の存在を決定するためにリンクオブジェクトを使用する前に、リンクオブジェクトを検証する。
リンクオブジェクトに署名するために使用される証明書システム(例えばx509v3)の特定の機能に依存して、限定された存続期間をリンクオブジェクトに与えたり、リンクオブジェクトを無効にしたりなどできる。一実施形態において、どの鍵がリンクオブジェクトに署名できるか、どのリンクオブジェクトが作成され得るか、およびリンクオブジェクトの存続期間、を管理するポリシーは、DRMエンジンによって直接に処理されない。
これに代わって、これらのポリシーは、ノードの属性情報に影響を及ぼす。一実施形態において、一定のポリシーを実施するタスクを容易にするために、更なる制約照合によって標準証明書フォーマットを拡張する方法が提供される。これらの拡張は、リンクに署名する鍵のための証明書上の有効性制約を表現することを可能にする。その結果として、リンクが有効とみなされる前に、制約(例えば、リンクがどのようなタイプのノードに接続しているか、ならびに他の属性)を照合することができる。
一実施形態において、リンクオブジェクトは、リンクの有効性を限定するために使用される制御オブジェクトを含むことができる。それに加えて、一実施形態において、リンクオブジェクトは、共有鍵を有するユーザに鍵配信を提供する暗号鍵導出データを含んでもよい。その暗号データは、メタデータに加えて、「to」ノードの共有公開鍵および/または共有共通鍵によって暗号化する、「from」ノードの秘密鍵および/または共通共有鍵を含む。
1.21.データ構造
以下の段落は、上述のオブジェクトのための例示的なオブジェクトモデルを更に詳細に説明するものであり、1つの例示的実施形態において各タイプのオブジェクトが有するフィールドを規定する。データ構造は、比較的に単純なオブジェクト記述シンタックスを使用して記述される。各オブジェクトタイプは、親クラス(すなわち「〜は…である」関係)を拡張できるクラスによって規定される。クラス記述は、単純な抽象型、すなわち「ストリング」(文字列)、「int」(整数値)、「バイト」(8ビット値)、および「ブーリアン」(真または偽)に関するものであるが、それらのデータ型について、またはそれらの種類を含む複合構造について、任意の特定のコード化を規定するものではない。オブジェクトをコード化または表す方法は、エンジンのインプリメンテーションに依存して変化することがある。実際には、DRMエンジンの使用の所与のプロファイルは、フィールドがどのように表されるかを指定することができる(例えばXMLスキーマを使用して)。
1つの例示的実施形態において、以下の表記法が使用される。
Figure 0005357292
Figure 0005357292
1.21.1.1.属性
一実施形態において、4種類の属性(IntegerAttribute、StringAttribute、ByteArrayAttribute、およびListAttribute)があり、各々が名前およびタイプを有する。
Figure 0005357292
1.21.1.2.拡張
論ずる例示的実施形態において、2つのタイプの拡張、すなわち、Octobjectの内部で運ばれる内部拡張、およびOctobjectの外部で運ばれる外部拡張がある。
Figure 0005357292
一部の実施形態において、たとえ特定のタイプのExtensionDataが所与のインプリメンテーションによって理解されない場合でさえも、オブジェクトの署名が検証可能であることが重要である。従って、一実施形態において、dataDigestフィールドを有するインダイレクションのレベルが追加される。ExtensionDataの指定によって、データが特定のオブジェクトの状況における署名の一部であることが要求される場合、dataDigestフィールドが存在する。このExtensionDataを理解し、従ってその正準表示を算出できるインプリメンテーションは、ダイジェストを検証することができる。そのような実施形態において、このExtensionDataの指定によって、データが署名の一部でないことが要求される場合、dataDigestフィールドは存在しない。
Figure 0005357292
一実施形態において、各鍵は、一意なID、フォーマット、使用法(空白であり得る)、およびデータを有する。「使用法」フィールドは、空でない場合、鍵を使用できる目的を指定する。通常のコンテンツ鍵について、このフィールドは空である。上述したような鍵配信スキームが使用される実施形態において、このフィールドは、共有鍵または機密鍵のいずれであるかを指定してもよい。「フォーマット」フィールドは、「データ」フィールドのフォーマットを指定する(例えば、共通鍵のための「RAW」、またはRSA秘密鍵のための「PKCS#8」など)。「データ」フィールドは、「フォーマット」フィールドに従ってフォーマットされる実際の鍵データを含む。
鍵のペア(例えばRSA鍵)の一部である鍵については、追加のフィールド「pairId」が、ペアのための一意の識別子を与える。その結果、ペアはその他のデータ構造から参照されることができる。
一実施形態において、オブジェクトの実際の表現が、鍵の暗号化されたコピーを含む場合でさえも、鍵オブジェクトにおけるデータフィールドは、実際の鍵の平文値である(すなわち、ハッシュされる鍵の平文値である)。
Figure 0005357292
8.仮想マシン
本明細書に記載するDRMエンジンの好ましい実施形態は、仮想マシン(本明細書において「制御仮想マシン」、「制御VM」、または単に「VM」と呼ばれることがある)を使用することによって、コンテンツへのアクセスを管理する制御プログラムを実行する。そのような仮想マシンの例示的実施形態、ならびにこの例示的実施形態に対してなし得る様々な変更および設計考慮事項を以下に記載する。仮想マシン(「プランクトン」仮想マシンと呼ばれる)の例示的実施形態を、DRMエンジン(「オクトパス」と呼ばれる)の例示的実施形態に統合したものも記載する。しかしながら、本明細書に記載するデジタル著作権管理エンジン、アーキテクチャ、および他のシステムおよび方法の実施形態は、任意の適切な仮想マシンとともに使用することができ、または一部の実施形態においては、全く仮想マシンなしで使用することができることが理解されるべきである。従って、仮想マシンの例示的実施形態に関して下記に提供する詳細は、説明のためであって、限定のためではないことが理解される。
好ましい実施形態において、制御VMは、従来の仮想マシンであり、非常に小さいコードフットプリントを有する様々なプログラミング言語を使用して、容易に実現するように設計される。制御VMは、最低限必要なものだけであるように設計された単純なスタック向き命令セットに基づいており、実行速度またはコード密度に対する過度の懸念がない。コンパクト符号が必要とされる状況において、データ圧縮技術は、仮想マシンのバイトコードを圧縮するために使用することができる。
好ましい実施形態において、制御仮想マシンは、低水準または高水準プログラミング言語のためのターゲットとして適切に設計され、アセンブラ、C、およびFORTHをサポートする。さらに、コードを仮想マシンによって使用されるフォーマット(例えばバイトコード)にコンパイルするために、他の言語(例えばJava(登録商標)またはカスタマイズした言語)のためのコンパイラを、比較的に簡単な様式で作成できることが理解される。一実施形態において、制御仮想マシンは、ホスト環境の中でホストされるように設計され、プロセッサ上またはシリコンにおいて直接に実行されない。好ましい実施形態において、仮想マシンのための自然なホスト環境は、DRMエンジンである。但し、それに代わって、またはそれに加えて、本明細書に記載する仮想マシンアーキテクチャが他の状況において使用されることが理解される。
図29は、仮想マシン2902の例示的な実現の操作環境を示す図である。図29に示すように、一実施形態において、仮想マシン2902は、そのホスト環境2904の状況の中で実行する。ホスト環境2904は、プログラム2906を実行する際に、仮想マシンによって必要とされる機能の一部を実現する。一般に、制御VMは、ホスト環境を実現するDRMエンジン2908の中で実行する。図29に示すように、好ましいデータベースにおいて、仮想マシン2902およびDRMエンジン2908は、状態情報の持続的な記憶のための安全なデータベース2910にアクセスする。
1.22.アーキテクチャ
1.22.1.実行モデル
好ましい実施形態において、VMは、コードモジュールにおいてバイトコードで格納される命令を実行することによって、プログラムを実行する。これらの命令の一部は、システムコールを行うことによって、プログラム自体の外で実現される機能を呼び出すことができる。システムコールは、VM自体によって実現、またはホスト環境に委託することができる。
一実施形態において、VMは、コードモジュールに格納される命令を、メモリにロードされるバイトコードのストリームとして実行する。VMは、プログラムカウンタ(PC)と呼ばれる仮想レジスタを保守する。プログラムカウンタは、命令が実行される際に増加させられる。VMは、OP STOP命令に遭遇するまで、空の呼出しスタックがOP RET命令に遭遇するまで、または実行時例外が生じるまで、各命令を順番に実行する。ジャンプは、相対的なジャンプ(PCの現在値からのバイトオフセットとして指定される)として、または絶対アドレスとして指定される。
1.22.2.メモリモデル
一実施形態において、VMは、比較的に単純なメモリモデルを使用し、メモリは、データメモリおよびコードメモリに分けられる。例えば、データメモリは、アドレス0から始まる単一の平坦な隣接するメモリ空間として実現でき、さらにホストアプリケーションまたはホスト環境のヒープメモリの中で割り当てられるバイトのアレイとして実現できる。一実施形態において、割り当てられた空間外のメモリへのアクセスを試みると、実行時例外が生じ、プログラムの実行が終了する。
データメモリは、仮想マシンによって同時にロードされるいくつかのコードモジュールによって潜在的に共有される。データメモリにおけるデータは、メモリアクセス命令によってアクセスすることができ、そのアクセスは、一実施形態において、32ビットまたは8ビットのアクセスであり得る。32ビットメモリアクセスは、ビッグエンディアンバイト順を使用して実行される。好ましい実施形態において、仮想マシンから見えるメモリとホストに管理されるメモリとの間のアラインメントに関して(すなわちホストCPUの仮想メモリまたは物理メモリ)、前提条件は作られない。
一実施形態において、コードメモリは、アドレス0から始まる平坦な隣接するメモリ空間であり、ホストアプリケーションまたはホスト環境のヒープメモリの中で割り当てられるバイトのアレイとして実現できる。
VMは、複数のコードモジュールをロードすることをサポートしてもよい。VMが、いくつかのコードモジュールをロードする場合、一実施形態において、すべてのコードモジュールは同一のデータメモリを共有する(但し、各モジュールのデータは、好ましくは異なるアドレスにおいてロードされる)。しかし、各々はそれ自身のコードメモリを有するので、1つのコードモジュールにおけるジャンプ命令が別のコードモジュールにおけるコードへのジャンプを引き起こすことを防止する。
1.22.3.データスタック
一実施形態において、VMは、データメモリに格納される32ビットデータセルを表すデータスタックの概念を有する。VMは、スタックポインタ(SP)と呼ばれる仮想レジスタを保守する。再設定の後、SPは、データメモリの終わりを指し示し、スタックは、下方に増大する(データがデータスタック上にプッシュされると、SPレジスタは減少させられる)。スタック上の32ビットデータセルは、スタックデータを参照する命令に依存して、32ビットアドレスまたは32ビット整数として解釈される。アドレスは、符号のない整数である。一実施形態において、データスタック上の他の全ての32ビット整数値は、特に明記しない限り、符号付き整数として解釈される。
1.22.4.コールスタック
一実施形態において、VMは、サブルーチン呼出しを行うために使用される呼出しスタックを管理する。一実施形態において、このスタック上にプッシュされる値は、メモリアクセス命令によって直接に読み込まれたり書き込まれたりすることができない。このスタックは、OP JSR命令、OP JSRR命令、およびOP RET命令を実行するときに、VMによって内部的に使用される。所与のVMインプリメンテーションについて、このリターンアドレススタックのサイズは、最大に固定することができる。このことは、一定回数のみの入れ子の呼び出しを可能にする。
1.22.5.擬似レジスタ
一実施形態において、VMは、データメモリの始めにおいて小さいアドレス空間を確保することによって、擬似レジスタをマッピングする。一実施形態において、これらの擬似レジスタのアドレスは固定される。例えば、以下のレジスタを規定することができる。
Figure 0005357292
1.22.6.メモリマップ
以下は、例示的実施形態におけるデータメモリおよびコードメモリのレイアウトを示すものである。
データメモリ
Figure 0005357292
コードメモリ
Figure 0005357292
1.22.7.ルーチンの実行
一実施形態において、仮想マシンインプリメンテーションは、コードルーチンを実行する前に、データスタックポインタが初期化済データスタックの最上部を指し示すようにリセットする。初期化済データスタックは、ルーチンの入力データを含み、データメモリの終わりまで拡張する。初期化済データスタックは、ルーチンに入力引数を渡す方法として使用されてもよい。初期化済データスタックがない場合、データスタックポインタは、データメモリの終わりを指し示す。一実施形態において、初期呼出しスタックは、空であるか、またはOP STOP命令を指し示す単一のターミナルリターンアドレスを含む。このことは、ルーチンがOP RET命令によって終わった場合に、ルーチンの実行をOP STOP命令上で強制終了させる。
実行が停止する場合、空の呼出しスタックを有する最終的なOP RET命令が実行されたか、または最終的なOP STOP命令が実行されたために、データスタックに残された任意のデータはルーチンの出力であるとみなされる。
1.22.8.実行時例外
一実施形態において、以下の条件のいずれかは、実行時例外であるとみなされ、実行を直ちに停止させる。
・カレントデータメモリアドレス空間の外のデータメモリに対するアクセスの試み。
・PCがカレントコードメモリアドレス空間の外のコードアドレスに到達するように、PCを設定する試み。
・未定義バイトコードを実行する試み。
・0に等しいスタック最上部オペランドを有するOP DIV命令を実行する試み。
・0に等しいスタック最上部オペランドを有するOP MOD命令を実行する試み。
・コールスタックのオーバーフローまたはアンダーフロー。
1.23.命令セット
一実施形態において、制御VMは、比較的に単純な命令セットを使用する。限定されてはいるものの、命令の数は、任意の複雑さのあるプログラムを表現するのに十分である。命令およびそのオペランドは、バイトコードのストリームによって表される。一実施形態において、命令セットはスタックベースであり、OP PUSH命令を除いて、直接オペランドを有する命令はない。オペランドはデータスタックから読み出され、結果はデータスタック上にプッシュされる。一実施形態において、VMは、32ビットVMである。すべての命令は、32ビットスタックオペランド上で動作し、メモリーアドレスまたは符号付き整数を表す。符号付き整数は、2sコンプリメント2進コード化によって表される。
制御VMとともに用いる命令セットの例示的実施形態を、以下の表に示す。表において、2つのオペランドを有する命令のためのスタックオペランドは、「A,B」として記載され、スタックの最上部のオペランドは、最後に記載される(すなわち「B」)。特に明記しない限り、1つの例示的実施形態の以下の記載において用いられる「プッシュ」という用語は、データスタックの最上部に32ビット値をプッシュすることを指す。
Figure 0005357292
Figure 0005357292
1.24.コードモジュール
好ましい実施形態において、コードモジュールは、MPEG―4ファイルフォーマット用に使用されるものと類似または同一のアトムベースのフォーマットで格納される。アトムが含むものは、32ビットサイズ(例えばビッグエンディアンバイト順の4バイトによって表される)、次に4バイトタイプ(例えばアルファベット文字のASCII値に対応するバイト)、次にペイロード(例えば8バイト)である。
図30は、例示的なコードモジュール3000のフォーマットを示す。図30を参照して、pkCMアトム3002は、トップレベルのコードモジュールアトムである。それは、一連のサブアトムを含む。一実施形態において、pkCMアトム3002は、1つのpkDSアトム3004、1つのpkCSアトム3006、1つのpkEXアトム3008、および場合によっては1つのpkRQアトム3010を含む。一実施形態において、pkCMアトム3002はまた、無視されるいかなる数の他のアトム(存在する場合)を含んでもよい。一実施形態において、サブアトムの順序は指定されないので、インプリメンテーションは特定の順序を仮定するべきでない。
1.24.1.pkDSアトム
図30に示すように、pkDSアトム3004は、データメモリにロードできるデータセグメントのメモリイメージ3005を含む。図31Aに示すように、一実施形態において、メモリイメージ3005は、バイト列3112によって表され、1つのヘッダバイト3114と、それに続く0以上のデータバイト3116とからなる。ヘッダバイト3114は、3116に続くバイトのフォーマットを識別するバージョンナンバをコード化する。
一実施形態において、1つのみのバージョンナンバが規定され(すなわち、DataSegmentFormatVersion=0)、このフォーマットにおいて、メモリイメージのデータバイトは、メモリにロードされる生画像を表す。仮想マシンローダは、メモリイメージ3105のデータバイト3116のみをロードする(ヘッダバイト3114を含まない)。一実施形態において、仮想マシンローダは、任意の他のフォーマットのイメージをロードすることを拒絶するように操作可能である。
1.24.2.pkCSアトム
図30に示すように、pkCSアトム3006は、コードメモリにロードできるコードセグメントのメモリイメージ3007を含む。図31Bに示すように、一実施形態において、メモリイメージ3007は、バイト列3120によって表され、1つのヘッダバイト3122と、それに続く0以上のデータバイト3124とからなる。ヘッダバイト3122は、3124に続くバイトのフォーマットを識別するバージョンナンバをコード化する。
一実施形態において、1つのみのバージョンナンバが規定され(すなわちCodeSegmentFormatVersion=0)、図31Cに示すように、このバージョンにおいて、ヘッダバイト3122に続くバイトは、別のヘッダバイト3130を含み、ヘッダバイト3130は、次のバイト3132のバイトコードのコード化を識別するバージョンナンバを含む。図31Cに示す実施例において、ヘッダバイト3130は、ByteCodeVersion=0を識別する。このことは、データバイト3132が上記の例示的命令セットで規定されるようなバイトコード値を有する生バイト列を含むということを指定する。好ましい実施形態において、仮想マシンローダは、2つのヘッダバイト3122および3130ではなく、データバイトのバイトコード部分3132のみをロードする。
1.24.3.pkEXアトム
図30を再び参照して、pkEXアトム3008は、エクスポートエントリのリストを含む。図30において示す実施例において、pkEXアトム3008の最初の4つのバイト3009は、次のエントリの数に等しいビッグエンディアンバイト順に、32ビット符号のない整数をコード化する。図31Dに示すように、次の各エクスポートエントリ3160は、名前(名前サイズSを含む1つのバイト3162としてコード化される)と、それに続くSバイト3164(名前のASCII文字を含む)(終了するゼロ3166を含む)と、それに続くビッグエンディアンバイト順の32ビットの符号のない整数3168とからなり、それは名前付きエントリポイントのバイトオフセットを表し、31CSアトムに格納されるバイトコードデータの開始から測定される。図31Eは、オフセット64におけるエントリポイントMAINのためのエクスポートテーブルエントリ3170の例を示す。ここで、第1バイト3172は、名前(すなわち「MAIN」)のサイズに終了するゼロを加えたものが、5バイトであることを示す。さらに、最後の4つのバイト3174は、バイトオフセットが64であることを示す。
1.24.4.pkRQアトム
図30に示すように、pkRQアトム3010は、コードモジュールにおけるコードを実行するために仮想マシンインプリメンテーションが満たす必要のある必要条件を含む。一実施形態において、このアトムは任意であり、これが存在しない場合、仮想マシンは、インプリメンテーションプロファイルによって規定されるような、デフォルトのインプリメンテーション設定を使用する。
一実施形態において、pkRQアトムは、32ビットの符号のない整数値のアレイからなる(フィールドごとに1つ)。
Figure 0005357292
1.24.5.モジュールローダ
仮想マシンは、コードモジュールをロードすることを担う。コードモジュールがロードされるときに、pkDSアトムにおいてコード化されたデータセグメントメモリイメージが、メモリーアドレスにおいてデータメモリにロードされる。そのアドレスは、VMローダによって選択され、コードの実行時にDS疑似レジスタに格納される。
pkCSアトムにおいてコード化されたコードセグメントメモリイメージは、メモリーアドレスにおいてコードメモリにロードされる。そのアドレスは、VMローダによって選択され、コードの実行時に、CS疑似レジスタに格納される。
コードモジュールがロードされるときに、「Global。OnLoad」という名前の特別ルーチンが、エクスポートテーブルのエントリに見いだされる場合には実行される。このルーチンは、スタック上の引数を受け取らず、成功を示すリターン0における整数状態、およびエラー条件を示すマイナスのエラーコードを戻す。
コードモジュールがアンロードされるとき(または、モジュールをロードした仮想マシンが処理されるとき)に、「Global.OnUnload」という名前の特別ルーチンが、エクスポートテーブルに見いだされる場合には実行される。このルーチンは、スタック上の引数を受け取らず、成功を示すリターン0における整数状態、およびエラー条件を示すマイナスのエラーコードを戻す。
1.25.システムコール
仮想マシンのプログラムは、それらのコードモジュールのコードセグメントの外で実現される機能を呼び出すことができる。このことは、呼び出すシステムコール番号を指定する整数スタックオペランドを受け取る、OP CALL命令を用いることによってなされる。システムコールを依存して、インプリメンテーションは、異なるコードモジュールにおけるバイトコードルーチン(例えば効用関数のライブラリ)であり得、それはVMのネイティブのインプリメンテーションフォーマットにおけるVMによって直接に実行されるか、または外部ソフトウェアモジュール(例えばVMのホスト環境)に委託される。
一実施形態において、OP CALL命令が任意のシステムコールに対応しない数を含むオペランドによって実行される場合、VMは、あたかもSYS NOPシステムコールが呼び出されたかのように機能する。
1.25.1.システムコール番号アロケーション
論ずる例示的実施形態において、システムコール番号0〜1023は、固定されたシステムコール(これらのシステムコールはすべてのVMインプリメンテーション上で同数を有する)のために確保される。システムコール番号1024〜16383は、VMが動的に割り当てるように利用可能である(例えば、System.FindSystemCallByNameによって返されるシステムコール番号は、VMによって動的に割り当てられることができ、すべてのVMインプリメンテーション上で同数である必要はない)。
1つの例示的実施形態において、以下の固定されたシステムコール番号が指定される。
Figure 0005357292
1.25.2.標準システムコール
一実施形態において、制御プログラムに書き込むために有用な多少の標準システムコールがサポートされる。これらの呼び出しは、上記の表に記載される固定数システムコール、ならびに動的に決定される数を有するシステムコールを含む(すなわち、それらのシステムコール番号は、引数として渡される名前を用いてSystem.FindSystemCallByNameを呼び出すことによって検索される)。
一実施形態において、このセクションにおいて指定されるシステムコールは、マイナスのエラーコードを返すことができ、任意の負の数を有するエラーコードを返してもよい。
セクション8.4.4は、特定の例示的な値を規定する。一実施形態において、所定でないマイナスのエラーコード値が戻される場合、それらは、あたかも一般的なエラーコード値FAILUREであるかのように解釈される。
System.NoOperation。この呼び出しは、入力を受け取らず、出力を返さず、何もせずに単に戻る。それは、主にVMを検証するために使用される。
System.DebugPrint。この呼び出しは、ヌル終了文字列を含むメモリーロケーションのアドレスを、スタックの最上部から、その入力として受け取り、出力を返さない。この機能に対する呼び出しによって、テキストのストリングが、デバッグ出力に印刷させられる。このことは、デバッグにおいて有用であり得る。VMインプリメンテーションが、デバッグテキストを出力する機能を含まない場合(例えば非開発環境の場合がそうである)、VMは、呼び出しを無視し、あたかもSystem.NoOperationが呼び出されたかのようにそれを処理してもよい。
System.FindSystemCallByName。この呼び出しは、名前を与えられるシステムコールの数を見いだす。この呼び出しは、探すシステムコールの名前を含むヌル終了ASCIIストリングのアドレスを、その入力として(スタックの最上部から)受け取り、システムコール数(指定名を有するシステムコールが実現される場合)、ERROR NO SUCH ITEM(システムコールが実現されない場合)、およびマイナスのエラーコード(エラーが生じる場合)を(スタックの最上部に)返す。
System.Host.GetLocalTime。この呼び出しは、入力を受け取らず、一実施形態において、1970年1月1日00:00:00から経過した分数に等しい32ビット符号付き整数として表現されるホストのローカルタイムの現在の値、またはマイナスのエラーコードを、スタックの最上部へ返す。
System.Host.GetLocalTimeOffset。この呼び出しは、入力を受け取らず、ホストの現在の時間オフセット(UTC時間からの)をスタックの最上部に返す。この時間オフセットは、一実施形態において、ローカルタイムとUTC時間(すなわちLocalTime―UTC)との間の差分の分数に等しい32ビット符号付き整数として表現される。
System.Host.GetTrustedTime。この呼び出しは、入力を受け取らず、信頼された時間および1つ以上のフラグの値をスタックの最上部に返す。一実施形態において、信頼された時間は、信頼されたタイムクロックの現在の値(システムがそのような信頼されたクロックを含む場合)、またはマイナスのエラーコード(信頼された時間が利用可能でない場合)である。一実施形態において、信頼された時間の値は、1970年1月1日00:00:00UTCから経過した分数に等しい32ビット符号付き整数、またはマイナスのエラーコードとして表現される。一実施形態において、フラグは、信頼されたクロックの現在の状態を更に規定するフラグのビットセットである。一実施形態において、エラーが生じた場合(例えばTrustedTimeの値がマイナスのエラーコードである場合)、フラグのために戻される値は、0である。
一実施形態において、以下のフラグが規定される。
Figure 0005357292
このシステムコールは、信頼された時間ソースと同期可能で、かつ単調なタイムカウンタを保守可能な、信頼されたクロックを実現するシステムに関連する。信頼された時間の値は、常に正確であることを保証されないが、一実施形態において、以下の特性が真実である必要がある。
・信頼された時間の値は、UTC時間値として表現される(現在の場所を確実に決定することはできないので、信頼された時間は、ローカルタイムゾーンの中にはない)。
・信頼された時間は、決して逆行しない。
・信頼されたクロックは、リアルタイムより速く進むことはない。
従って、この例示的実施形態において、TrustedTimeの値は、最後の同期時間(信頼された時間ソースによって同期させられる)の値と、現在のリアルタイムとの間にある。信頼された時間ソースによる最後の同期以来、信頼されたクロックが連続的に正常に間断なく動作および更新をしている、ということをシステムが決定できる場合、システムは、TrustedTimeの値が推定ではなく正確な値であるということを決定し、TIME IS ESTIMATEフラグを0に設定することができる。
一実施形態において、信頼されたクロックが、ハードウェアまたはソフトウェアの障害状態が生じたことを検出し、信頼された時間の推定を返すことさえできない場合、エラーコードが返され、返されたフラグの値は0に設定される。
System.Host.GetObject。このシステムコールは、仮想マシンのホストによって提供されるオブジェクトにプログラムがアクセスすることを可能にする、一般的なインタフェースである。System.Host.GetObject呼び出しは、以下の入力を受け取る。すなわち、Parent、Name、ReturnBuffer、およびReturnBufferSizeである(スタックの最上部から下に向かって記述される)。「Parent」は、親コンテナの32ビットハンドルである。「Name」は、(親コンテナに対して)リクエストされるオブジェクトへの経路を含むヌル終了文字列のアドレスである。「ReturnBuffer」は、オブジェクトの値が格納されるメモリバッファのアドレスである。「ReturnBufferSize」は、オブジェクトの値が格納されるメモリバッファのバイトのサイズを示す32ビット整数である。
System.Host.GetObject呼び出しは、TypeIDおよびSizeの出力を生成する(スタックの最上部から下に向かって記述される)。「TypeId」は、オブジェクトタイプID、または呼び出しができない場合はマイナスのエラーコードである。要求オブジェクトが存在しない場合、返されるエラーは、ERROR NO SUCH ITEMである。リターン値に供給されるバッファがあまりに小さい場合、返されるエラーは、ERROR INS(登録商標)UFFICIENT SPACEである。アクセスされているオブジェクトツリーの部分がアクセスによって制御される場合、呼出しプログラムはオブジェクトにアクセスする許可を有せず、ERROR PERMISSION DENIEDが返される。他のエラーコードが返される場合もある。「Size」は、呼出し元によって出力されるバッファにおいて返されるデータのバイトのサイズ、または呼出し元があまりに小さいバッファを提供した場合に必要なサイズを示す、32ビット整数である。
一実施形態において、4つのタイプのホストオブジェクト(ストリング、整数、バイト列、およびコンテナ)がある。
Figure 0005357292
一実施形態において、バイト列オブジェクトの値は、8ビットバイトのアレイであり、ストリングオブジェクトの値は、UTF−8においてコード化されるヌル終了文字列であり、整数オブジェクトの値は、32ビット符号付き整数値である。コンテナは、タイプの任意の組み合わせのオブジェクトの一連の任意の数を含む、一般的なコンテナである。コンテナに含まれるオブジェクトは、そのコンテナの子と呼ばれる。コンテナの値は、所与のVMインスタンスの中で一意の32ビットコンテナハンドルである。一実施形態において、ルートコンテナ「/」は、固定されたハンドル値0を有する。
一実施形態において、ホストオブジェクトのための名前空間は階層的であり、コンテナの子オブジェクトの名前は、親コンテナの名前に子の名前を追加することによって構成され、これらは「/」キャラクタによって分けられる。ストリングおよび整数オブジェクトは、子を有しない。例えば、コンテナが「/Node/Attributes」という名前であり、かつ「Type」という名前のストリング子を有する場合、『/Node/Attributes/Type』は、子ストリングを指す。
名前空間のルートは、「/」である。AU絶対名は、「/」で開始する。「/」で開始しない名前は、関係名である。関係名は、親コンテナに関連する。例えば、親「/Node」に関連する名前「Attributes/Type」は、絶対名「/Node/Attributes/Type」を有するオブジェクトである。
一実施形態において、コンテナオブジェクトはまた、仮想名を使用することによってアクセスされる現実および仮想の子オブジェクトを有することができる。仮想名は、ホストオブジェクトに添付されない名前であるが、名前なし子オブジェクト、異なる名前を有する子オブジェクト、または仮想子オブジェクト(コンテナの現実の子ではなく、リクエストされるときに動的に作成される子オブジェクト)を識別する規則である。
一実施形態において、オブジェクトのために、以下の仮想名が、仮想子オブジェクト名として規定される。
Figure 0005357292
一実施形態において、コンテナのために、以下の仮想名が、仮想子オブジェクト名として規定される。
Figure 0005357292
実施例
以下の表は、ホストオブジェクトの階層の実施例を示す。
Figure 0005357292
この実施例において、System.Host.GetObject(親=0、子=「Node)」)を呼び出すことによって、0のタイプID(すなわちコンテナ)が返され、1のハンドル値が、呼出し元によって出力されるバッファに書き込まれる。
値のサイズは、4バイトである。
System.Host.GetObject(親=0、名前=「Node/Attributes/Domain)」)を呼び出すことによって、2のタイプID(すなわちストリング)が返され、ストリング「TopLevel」が、呼出し元によって出力されるバッファに書き込まれる。値のサイズは、9バイトである。
System.Host.GetObject(親=1、名前=「Attributes@1」)を呼び出すことによって、1のタイプID(すなわち整数)が返され、整数78が、呼出し元によって出力されるバッファに書き込まれる。値のサイズは、4バイトである。
System.Host.GetObject(親=0、名前=「DoesNotExist)」)を呼び出すことによって、エラーコードERROR NO SUCH ITEMが返される。
System.Host.SetObject。このシステムコールは、仮想マシンのホストによって提供されるオブジェクトを、プログラムが作成、書き込み、および抹消することを可能にする、一般的なインタフェースである。オブジェクト名およびタイプの記述は、上述したSystem.Host.GetObject呼び出しと同一である。すべてのホストオブジェクトが、書き込みまたは抹消されることをサポートするわけではなく、すべてのコンテナが、子オブジェクトの作成をサポートするわけではない。SetObject呼び出しが、操作をサポートしないオブジェクトのために行われる場合、ERROR PERMISSION DENIEDが返される。
System.Host.SetObjectシステムコールは、以下のパラメータを入力として受け取る(スタックの最上部から下に向かって記述される)。
スタックの最上部:
Figure 0005357292
Parent:親コンテナの32ビットハンドル。
Name:(親コンテナに対して)オブジェクトへの経路を含むヌル終了文字列のアドレス。
ObjectAddress:オブジェクトの値が格納されるメモリバッファのアドレス。アドレスが0である場合、呼び出しは、オブジェクトを抹消するリクエストとして解釈される。アドレスにおけるデータは、オブジェクトのタイプに依存する。
ObjectType:オブジェクトのタイプID。
ObjectSize:オブジェクトの値が格納されるメモリバッファのバイトのサイズを示す32ビット整数。論ずる例示的実施形態において、サイズは、整数オブジェクトについては4に設定され、ストリングオブジェクトについては、ヌルターミネータを含むメモリバッファのサイズに設定される。バイト列オブジェクトについて、サイズは、アレイのバイト数である。
System.Host.SetObjectシステムコールは、出力として、ResultCodeをスタックの最上部に返す。ResultCodeは、呼び出しが成功した場合は0であり、呼び出しが失敗した場合はマイナスのエラーコードである。呼び出しがオブジェクトを抹消するリクエストであり、かつ要求オブジェクトが存在しない場合、あるいは呼び出しがオブジェクトを作成または書き込むリクエストであり、かつオブジェクトの親が存在しない場合、返されるエラーコードは、ERROR NO SUCH ITEMである。アクセスされているオブジェクトツリーの部分がアクセスによって制御される場合、呼出しプログラムはオブジェクトにアクセスする許可を有せず、ERROR PERMISSION DENIEDが返される。他のエラーコードが返されてもよい。
オブジェクトがコンテナを指し、かつObjectAddressが0でない、という特別な場合がある。この場合、ObjectSizeパラメータは0に設定され、ObjectAddressの値は無視される。コンテナがすでに存在する場合、何もなされず、SUCCESS ResultCodeが返される。コンテナが存在せず、かつコンテナの親が書き込み可能である場合、空のコンテナが作成される。
Octopus.Links.IsNodeReachable。このシステムコールは、仮想マシンのこのインスタンスをホストするエンティティに関連するノードから所与のノードに到達可能か否かを照合するために、制御プログラムによって使用される。呼び出しは、その入力としてNodeIdをスタックの最上部から受け取る。NodeIdは、到達可能性について検証されるターゲットノードのIDを含むヌル終了文字列である。出力として、呼び出しは、ResultCodeおよびStatusBlockPointerをスタックの最上部に返す。ResultCodeは、ノードが到達可能である場合は0の整数値であり、そうではない場合はマイナスのエラーコードである。StatusBlockPointerは、標準ExtendedStatusBlockのアドレスであり、状態ブロックが返されない場合は0である。
System.Host.SpawnVm。このシステムコールは、仮想マシンの新しいインスタンスを作成し、かつ新しいコードモジュールをロードする、ということをリクエストするために、制御プログラムによって使用される。一実施形態において、ホストオブジェクト「/Octopus/Runtime/Parent/Id」が呼出し元の識別に対して設定されることを除いて、新しく作成された仮想マシンのホストは、呼出し元にさらされたものと同じホストオブジェクトをさらす。一実施形態において、このホストオブジェクトは、コンテナである。このコンテナの子は、文字列型のオブジェクトであり、各々が名前を表す値を有する。一実施形態において、それらの名前のセマンティクスおよび具体的な詳細は、仮想マシンのホストの指定によって指定される。
一実施形態において、呼出し元のためのコードを実行中の仮想マシンが終了する場合、System.Host.ReleaseVmを呼び出すことによって明示的にリリースされなかった任意の生み出された仮想マシンは、あたかもSystem.Host.ReleaseVmが呼び出されたかのように、システムによって自動的にリリースされる。
System.Host.SpawnVm呼び出しは、その入力としてModuleIdをスタックの最上部から受け取る。ModuleIdは、新しい仮想マシンインスタンスにロードされるコードモジュールを識別する。一実施形態において、仮想マシンのホストの指定は、このモジュールIDに対応する実際のコードモジュールが位置づけられるメカニズムを記述する。
System.Host.SpawnVm呼び出しは、ResultCodeおよびVmHandleをスタックの最上部に返す。ResultCodeは、呼び出しが成功した場合は0の整数値であり、失敗した場合はマイナスのエラーコードである。VmHandleは、作成された仮想マシンのインスタンスを識別する整数値である。呼び出しが失敗した場合、このハンドルは0に設定される。一実施形態において、このハンドルは、この呼び出しが行われる仮想マシンの範囲内で一意であることのみが保証される。
System.Host.CaIlVm。このシステムコールは、System.Host.SpawnVmシステムコールを使用して作成される仮想マシンインスタンスにロードされるコードモジュールにおいて実現されるルーチンを呼び出すために、制御プログラムによって使用される。このシステムコールは、スタックの最上部から以下の入力を受け取る。
スタックの最上部:
Figure 0005357292
VmHandle:System.Host.SpawnVmを呼び出すことによって作成された仮想マシンのハンドルを表す整数値。
EntryPoint:呼び出すエントリポイントの名前を指定するヌル終了文字列のアドレス。この名前は、VmHandleパラメータに対応する仮想マシンインスタンスにロードされたコードモジュールのExport Tableのエントリポイントのうちの1つと一致する必要がある。
ParameterBlockAddress:呼ばれる側に渡されるデータを含むメモリブロックのアドレス。呼ばれる側にパラメータが渡されない場合、このアドレスは0に設定される。
ParameterBlockSize:アドレスParameterBlockAddressにおけるメモリブロックのバイトのサイズであり、ParameterBlockAddressが0である場合は、これも0である。
ReturnBufferAddress:呼出し元が呼ばれる側からデータを受信することができるメモリバッファのアドレス。呼出し元が呼ばれる側から任意のデータが戻されることを予想しない場合、このアドレスは0に設定される。
ReturnBufferSize:アドレスReturnBufferAddressにおけるメモリバッファのバイトのサイズであり、ReturnBufferAddressが0である場合は、これも0である。
System.Host.CaIlVm呼び出しは、以下の出力をスタックの最上部に返す。
スタックの最上部:
Figure 0005357292
SystemResultCode:呼び出しが成功した場合は0の整数値であり、失敗した場合はマイナスのエラーコードである。この値は、呼ばれる側によってではなく、システムによって決定される。成功は、システムが呼び出すルーチンを首尾よく見いだし、ルーチンを実行し、ルーチンからリターン値を獲得することができたことを示すのみである。ルーチン自体からのリターン値は、CalleeResultCode値において返される。
CalleeResultCode:呼ばれる側によって返される整数値。
ReturnBlockSize:呼出し元によって出力されるバッファにおいて返されるデータのバイトのサイズ、または呼出し元があまりに小さいバッファを提供した場合に必要なサイズ。呼ばれる側によってデータが返されない場合、値は0である。
論ずる例示的実施形態において、呼び出されるルーチンは、以下のインタフェース規則に従う。ルーチンが呼び出されるときに、スタックの最上部は、呼出し元によって出力される値ParameterBlockSizeを含み、パラメータブロックのサイズを示し、その後にデータのParameterBlockSizeバイトが続く。サイズが4の倍数でない場合、スタック上のデータをゼロによってパッドすることによって、スタックポインタが4の倍数であることが確実にされる。リターンの際に、呼び出されるルーチンは、以下のリターン値をスタック上に提供する。
スタックの最上部:
Figure 0005357292
ReturnBlockAddress:呼出し元に返されるデータを含むメモリブロックのアドレス。データが返されない場合、このアドレスは0に設定される。
ReturnBlockSize:アドレスReturnBlockAddressにおけるメモリブロックのバイトのサイズであり、ReturnBlockAddressが0である場合は、これも0である。
System.Host.ReleaseVm:このシステムコールは、System.Host.Spawn Vmに対する以前の呼び出しによって生み出された仮想マシンをリリースするために、制御プログラムによって使用される。リリースされた仮想マシンによって生み出される任意の仮想マシンは、再帰的にリリースなどされる。System.Host.ReleaseVm呼び出しは、その入力としてVmHandleをスタックの最上部から受け取る。VmHandleは、System.Host.Spawn Vmを呼び出すことによって作成された仮想マシンのハンドルを表す。System.Host.ReleaseVm呼び出しは、出力として、ResultCodeをスタックの最上部に返す。ResultCodeは、呼び出しが成功した場合は0の整数値であり、失敗した場合はマイナスのエラーコードである。
1.25.3.標準データ構造
以下は、標準システムコールの一部によって使用される標準データ構造である。
1.25.3.1.標準パラメータ
ParameterBlock:
Figure 0005357292
Name:パラメータの名前。
Value:パラメータの値。
ExtendedParameterBlock:
Figure 0005357292
Flags:ブーリアンフラグのベクトル。
Parameter名前および値を含パラメータブロック。
NameBlock:
Figure 0005357292
Size:それに続く「キャラクタ」フィールドのバイトのサイズに等しい32ビットの符号のない整数。この値が0である場合、キャラクタフィールドは、空のままにされる(すなわち何も続かない)。
Characters:ヌル終了UTF―8ストリング。
ValueBlock:
Figure 0005357292
Type:32ビットタイプ識別子。一実施形態において、以下のタイプが規定される。
Figure 0005357292
Size:それに続く「データ」フィールドのバイトのサイズに等しい32ビットの符号のない整数。この値が0である場合、データフィールドは、空のままにされる(すなわちValueBlockにおけるサイズフィールドの後には何も続かない)。
Data:値を表す8ビットバイトのアレイ。実際のバイトは、タイプフィールドによって指定されるデータのコード化に依存する。
ValueListBlock:
Figure 0005357292
ValueCount:それに続くValueBlock構造の数に等しい32ビットの符号のない整数。この値が0である場合、この後にValueBlocksは続かない。
Value0、Value1、…:0以上のValueBlock構造のシーケンス。
1.25.3.2.標準ExtendedStatus
標準ExtendedStatusBlockは、呼び出しからルーチンまたはシステムコールへの戻りステータスとして拡張情報を伝達するために一般に使用されるデータ構造である。これは、フィールドのための異なる可能な値の範囲内で、様々な状況において使用できる一般的なデータ構造である。一実施形態において、ExtendedStatusBlockは、以下のように規定される。
ExtendedStatusBlock:
Figure 0005357292
GlobalFlags:カテゴリーフィールドに関係なくセマンティクスが同一であるブーリアンフラグ。フラグの位置および意味は、標準ExtendedStatusBlockデータ構造を使用するプロファイルによって規定される。
Category:この状態が帰属するカテゴリの一意な整数識別子。カテゴリ識別子値は、標準ExtendedStatusBlockデータ構造を使用するプロファイルによって規定される。
SubCategory:このブロックによって記述される状態のタイプを更に分類するサブカテゴリの整数識別子(カテゴリの範囲内で一意である)。
LocalFlags:この状態ブロックのカテゴリおよびサブカテゴリに対してセマンティクスがローカルであるブーリアンフラグ。フラグの位置および意味は、カテゴリのセマンティクスを規定および使用するプロファイルによって規定される。
CacheDuration:この状態をキャッシュに格納できる(すなわち有効な状態を維持する)持続時間を示す。持続時間の実効値が規定される方法については、下記のCacheDurationBlockタイプの定義を参照されたい。
Parameters:0以上のValueBlockのリスト。各ValueBlockは、タイプParameterまたはExtendedParameterの値としてコード化されるパラメータを含む。各パラメータは、入力された値に名前を結合し、柔軟な可変データをコード化するために使用する。この可変データは、単なるカテゴリ、サブカテゴリ、キャッシュ持続時間、およびフラグよりも詳細に、状態ブロックを記述する。
CacheDurationBlock:
Figure 0005357292
Type:値のタイプのための整数識別子。一実施形態において、以下のタイプが規定される。
Figure 0005357292
Value:32ビット整数。その意味はTypeフィールドに依存する。
1.25.4.標準結果コード
標準結果コードは、様々なAPIにおいて使用される。
Figure 0005357292
1.26.アセンブラシンタックス
このセクションは、本明細書の他の場所に記載するバイトコードフォーマットにプログラムをコンパイルするために使用する例示的なシンタックスを記載する。これは1つの可能なシンタックスの一実施例であり、任意の適切なシンタックスを使用できることが理解されるべきである。前述のように、本明細書に示すバイトコードフォーマットは、単なる実施例であり、本明細書に記載するシステムおよび方法は、他の任意の適切なバイトコードフォーマットまたは他のコードフォーマットとともに使用できることも理解されるべきである。
アセンブラは、コード、データ、および処理命令を含むソースファイルを読み取り、制御仮想マシンによってロード可能な2進コードモジュールを生成する。1つの例示的実施形態において、アセンブラは、ソースファイルを一行ごとに順次処理する。行は、0以上のキャラクタであり得、その後に改行が続く。各行は、空行(空白文字のみ)、セグメント指令、データ指令、アセンブラ指令、コード命令、ラベル、またはエクスポート指令のうちの1つであり得る。それに加えて、各行は、コメントで終了してもよい。コメントは、「;」キャラクタによって開始し、行の終わりまで続く。
ソースファイルから読み取られるデータおよび命令は、暗黙のデスティネーションセグメントを有する(すなわちVMによってロードされるときに終了する場合)。構文解析プロセスの任意の点において、アセンブラは、データおよび命令のための暗黙のデスティネーションセグメントである「カレント」セグメントを有する。カレントセグメントは、セグメント指令を使用して変化し得る。
1.26.1.セグメント指令
セグメント指令は、パーサのカレントセグメントを変化させる。一実施形態において、サポートされるセグメント指令は、.codeおよび.dataである。.codeセグメントは、バイトコード命令を保持する。.dataセグメントは、グローバル変数を保持する。
1.26.2.データ指令
データ指令は、仮想マシンのデータセグメントにロードされるデータ(例えば整数およびストリング)を指定する。一実施形態において、サポートされるデータ指令は、以下の通りである。
・.string<some chars>;キャラクター列を指定する。一実施形態において、アセンブラは、ストリングの終わりに値0を有するオクテットを追加する。
・.byte<value>:8ビット値を指定する。<value>は、10進数または16進数として表現できる(0xを接頭辞として付ける)。
・.long<value>:32ビット値を指定する。<value>は、10進数または16進数として表現できる(0xを接頭辞として付ける)。
1.26.3.アセンブラ指令
一実施形態において、サポートされるアセンブラ指令は、.equ<symbol>,<value>である。これは、シンボル<symbol>を値<value>に等しくなるように設定する。シンボルは、オペランドまたはコード命令として一般に使用される。
1.26.4.ラベル
ラベルは、セグメントの中の場所を指し示すシンボルである。コードセグメントにおいて命令を指し示すラベルは、ジャンプ/分岐命令のために一般に使用される。データセグメントにおいてデータを指し示すラベルは、変数を指すために一般に使用される。一実施形態において、ラベルのためのシンタックスは、<LABEL>である。
任意のコメントを除いて、「:」の後には何もないことに留意されたい。ラベルは、次のデータまたは命令の場所を指し示す。一実施形態において、同一のアドレスを指し示す複数のラベルを有してもよい。
1.26.5.エクスポート指令
エクスポート指令は、アセンブラによって生成されるコードモジュールの「エクスポート」セクションのエントリを作成するために使用される。エクスポートセクションにおける各エントリは、(名前およびアドレスの)ペアである。論ずる例示的実施形態において、コードセグメントの中のアドレスのみを、エクスポートセクションにおいて指定することができる。
エクスポート指令のシンタックスは、.export<label>である。これは、<label>によって指し示され<label>という名前を有するアドレスを、エクスポートする。
1.26.6.コード命令
コードセグメントに行くことになるデータをコンパイルするときに、アセンブラは、直接的または間接的にバイトコードにマッピングする命令を読み取る。上記の例示的な命令セットにおいて、大部分の仮想マシンバイトコードは、直接のオペランドを有せず、単一の行の上の単純なニーモニックによって表示される。アセンブラシンタックスを読みやすくするために、一部の命令は、擬似オペランド(あたかもバイトコードオペランドであるかのように見えるが本当はそうではない)を受け入れる。この場合、アセンブラは、1つ以上のバイトコード命令を生成することによって、あたかも命令が直接のオペランドを有するかのような効果と同じ効果を生み出す。例えば、分岐命令は、擬似オペランドを使用する。
1.26.6.1.分岐オペランド
分岐命令は、逐語的に指定することができ(任意オペランドなしで)、または任意オペランドを用いて指定することができる。任意オペランドは、アセンブラによって、対応するバイトコードシーケンスに変換される。任意オペランドは、整数定数またはシンボルである。オペランドがシンボルである場合、アセンブラは、正しい整数相対オフセットを算出するので、分岐はシンボルに対応するアドレスで終わる。
1.26.6.2.プッシュオペランド
一実施形態において、プッシュ命令は、1つのオペランドを常に受け取る。オペランドは、整数定数、シンボル、または接頭辞「@」(その後にラベル名が直接続く)のうちの1つであり得る。オペランドがシンボルである場合、シンボルがラベルまたは.equシンボルのいずれであろうとも、プッシュされる値は、そのシンボルの直接的な値である(値は、セグメントオフセットによって増加させられない)。オペランドが、前に「@」を付けられるラベル名である場合、プッシュされる値は、ラベルが指し示すものに依存する。スタック上にプッシュされる値は、ラベルによって表される絶対アドレスである(すなわち、セグメントオフセットに追加されるローカルなラベル値)。
Figure 0005357292
1.26.8.コマンド行構文
一実施形態において、アセンブラは、以下のシンタックスによって呼び出すことができるコマンド行ツールである。すなわち、「PktAssembler[options]<input file path><output file path>。ここで、[options]は、−cs int、−ds int、−xml id、または−hであり得る。「−cs int」は、コードセグメントアドレス値(デフォルト=8)である。「−ds int」は、データセグメントアドレス値(デフォルト=4)である。「−xml id」は、指定のIDを有するXMLファイルとして制御オブジェクトを出力するために使用される。「−h」は、ヘルプ情報を表示するために使用される。
9.制御
このセクションは、制御オブジェクトの例示的実施形態を記載する。制御オブジェクトは、それらが制御するContentKeyオブジェクトの使用を認可または拒絶することによってコンテンツへのアクセスを管理する規則を表すために使用することができる。制御オブジェクトは、それらが埋め込まれるリンクオブジェクトの有効性に関する制約を表すために使用することもできる。制御オブジェクトは、別のエンティティ(例えばエージェントまたは委託)に代わって実行される独立型プログラムコンテナとして使用することもできる。一実施形態において、制御は、メタデータおよびバイトコードプログラムを含む。これらは、特定の対話処理プロトコルを実現する。制御プロトコルの目的は、DRMエンジンを通して、DRMエンジンと制御プログラムとの間、またはホストアプリケーションと制御プログラムとの間の対話処理を指定することである。このセクションはまた、アプリケーションがコンテンツ上で実行できる例示的なアクション(そのアクションパラメータは制御プログラムに出力されるべきである)、制御プログラムが戻りステータスをコード化する方法(リクエストされたアクションが実行できるか否かを示す)、ならびに戻りステータスをさらに記述できるパラメータを記載する。
このセクションにおいて、以下の略語および頭字語が使用される。
・ESB:拡張された状態ブロック(Extended Status Block)
・LSB:最下位ビット(Least Significant Bit)
・バイト:8ビット値またはオクテット
・バイトコード:実行可能命令とそのオペランドとをコード化するバイトのストリーム
1.27.制御プログラム
一実施形態において、制御オブジェクトは、制御プログラムを含む。制御プログラムは、仮想マシンによって実行可能なバイトコードを含むコードモジュール、および名前付きルーチンのリスト(例えばエクスポートテーブルにおけるエントリ)を含む。
一実施形態において、コンテンツ項目上の一定の操作(例えば「再生」)の実行を管理する規則を示すルーチンのセットは、「アクション制御」と呼ばれる。リンクオブジェクト上の有効性制約を示すルーチンのセットは、「リンク制約」を呼ばれる。遠隔エンティティに代わって(例えば異なるホスト上で実行するDRMエンジンを用いたプロトコルセッション中に)実行するように意図されたルーチンのセットは、「エージェント」と呼ばれる。
別の制御に代わって(例えば制御プログラムがSystem.Host.CallVmシステムコールを使用するときに)実行するように意図されるルーチンのセットは、「委託」と呼ばれる。
1.27.1.制御プログラムに対するインタフェース
一実施形態において、制御プログラムは、ホスト環境で動作する仮想マシンによって実行される。ホスト環境は、任意の適切な態様において実現することができる。しかしながら、説明の容易さ、および例示する目的のために、以下の説明において、仮想マシンのホスト環境のインプリメンテーションを、2つの部分、すなわちホストアプリケーションおよびDRMエンジンに論理的に分けることができると仮定する。しかしながら、他の実施形態は、異なる論理的機能分離を有してもよく、それは上述した論理構造と同等であり得ることが理解される。
図29に示すように、他の好ましい実施形態において、DRMエンジン2908は、ホストアプリケーション2900と制御プログラム2906との間の論理インタフェースである。ホストアプリケーション2900は、エンジン2908に対して論理的リクエストを行う(例えば一定の目的(例えばコンテンツストリームの再生またはレンダリング)のためにコンテンツ鍵へのアクセスをリクエストする)。一実施形態において、エンジン2908は、下記の対話処理プロトコルが正しく実現されることを確実にする(例えば、制御プログラムの初期化、呼び出しシーケンス、および他の対話処理の詳細に関する任意の保証が満たされることを確実にすることによって)。
ホストアプリケーション2900がコンテンツIDのセットのためのコンテンツ鍵の使用をリクエストする場合、DRMエンジン2908は、どのControlオブジェクトを使用するべきかを決定する。Protectorオブジェクトは、リクエストされたコンテンツIDのためにどのContentKeyオブジェクトにアクセスする必要があるかについて、エンジンが決定することを可能にする。次に、エンジンは、これらのContentKeyオブジェクトを参照するControllerオブジェクトを見いだす。一実施形態において、Controllerオブジェクトは、複数のContentKeyオブジェクトを参照することができる。これは、複数のContentKeyオブジェクトが同一のControlオブジェクトによって管理されることを可能にする。ホストアプリケーションが、アクションを呼び出すことによってコンテンツ鍵へのアクセスをリクエストする場合、それらに対応するContentKeyオブジェクトが同一のControllerオブジェクトによって参照される程度に、ホストアプリケーションはコンテンツIDをグループとしてリクエストすることができる。一実施形態において、複数のコントローラオブジェクトによって参照される一群のコンテンツ鍵にアクセスするリクエストは、許可されない。
一実施形態において、DRMエンジンは、アクションをルーチン名にマッピングする規則に従う。例えば、一実施形態において、下記のルーチンの各々について、コードモジュールにおけるExport Tableエントリに現れる名前は、下記のセクション9.1.4〜9.1.7に示すそれぞれのストリングである。
1.27.1.1.制御ローディング
一実施形態において、エンジンが制御ルーチンに呼び出しを行うことができる前に、エンジンは制御のコードモジュールを仮想マシンにロードする必要がある。一実施形態において、VMごとに唯一のコードモジュールがロードされる。
1.27.1.2.最小単位
一実施形態において、エンジンは、ルーチンに対して利用可能にするリソース(例えばオブジェクト(または「状態」)データベース)に関して、制御プログラム内のルーチンへの呼び出しがアトミックであることを確実にする。従って、そのような実施形態において、エンジンは、呼び出すルーチンのいずれかの実行中に、これらのリソースが変更されないままであることを確実にする必要がある。このことは、ルーチン呼び出し中にこれらのリソースを効果的にロックすることによって、または複数のVMの同時実行を防止することによって行われてもよい。しかしながら、エンジンは、連続したルーチン呼出し全体にわたってこれらのリソースが変更されないことを保証する必要はない。
1.27.2.制御プロトコル
一実施形態において、ルーチン命名、入出力インタフェース、およびコードモジュールにおける各ルーチンのためのデータ構造は、共に制御プロトコル(Control Protocol)を構成する。コードモジュールによって実現されるプロトコルは、Controlオブジェクトの「プロトコル」フィールドに表示される。下記の例示的な制御プロトコルは、標準制御プロトコル(Standard Control Protocol)と呼ばれる。その識別子(「プロトコル」フィールドの値)は、「http://www.octopus−drm.com/specs/scp−1 0」である。
一実施形態において、DRMエンジンは、コードモジュールをロードし、かつ制御プログラムにおけるルーチンを呼び出す前に、制御プログラムによる対話処理が、プロトコルフィールドに表示される特定のプロトコルIDに関する指定と一貫していることを保証する必要がある。そのことは、実現する必要のある仮想マシンの機能に関する任意の保証、および制御プログラムに利用可能なアドレス空間の大きさに関する保証などを含む。
制御プロトコル(例えば標準制御プロトコル)は、新しいプロトコル仕様を作成する必要なしに、時間とともに進化することが可能である。プロトコルに対して行われる変更が、仕様の以前の修正と一貫しており、DRMエンジンの既存のインプリメンテーション、ならびにそのプロトコルに従う既存の制御プログラムが、仕様に従って実行し続ける限り、変更は互換性があるとみなされる。そのような変化は、例えば、新しいアクションタイプを含んでもよい。
1.27.3.バイトコードタイプ
標準制御プロトコルに関わる上述の例示的実施形態において、バイトコードモジュールのタイプは、「プランクトン(Plankton)バイトコードモジュールバージョン1.0」である。この例示的実施形態において、制御オブジェクトの「タイプ」フィールドのための値は、「http://www.octopus−drm.com/specs/pkcm−1 0」である。
1.27.4.汎用制御ルーチン
汎用ルーチンは、全体として制御に適用できるルーチンであり、所与のアクションまたはリンク制約に特定のものではない。1つの例示的実施形態において、以下の一般的な制御ルーチンが使用される。
1.27.4.1.ControlInit
このルーチンは、任意である(すなわち、すべての制御において必要とされるわけではない)。このルーチンが使用される場合、他の任意の制御ルーチンを呼び出す前に、エンジンはこのルーチンを1回呼び出す。ルーチンは、入力を有さず、出力として、ResultCodeをスタックの最上部に返す。ResultCodeは、成功の場合は0であり、失敗の場合はマイナスのエラーコードである。一実施形態において、ResultCodeが0でない場合、エンジンは、現在の制御操作を中止し、この制御のためのルーチンに対する更なる呼び出しを行わない。
1.27.4.2.Control.Describe
このルーチンは、任意である。一般に制御プログラムによって表される規則の意味の記述をアプリケーションがリクエストするときに、このルーチンが呼び出される(すなわち特定のアクションのためではない)。ルーチンは、入力を有さず、出力として、ResultCodeおよびStatusBlockPointerを、スタックの最上部に返す。ここで、ResultCodeは、整数値である(ルーチンが首尾よく完了した場合は0であり、そうでない場合はマイナスのエラーコードである)。StatusBlockPointerは、標準ExtendedStatusBlockのアドレスである。ExtendedStatusBlockは、アプリケーションが解釈および使用できる情報を含むので、アプリケーションは、制御プログラムによって表される規則の意味に関する情報をユーザに提供する。
1.27.4.3.Control.Release
このルーチンは、任意である。このルーチンが存在する場合、DRMエンジンは、他の任意のルーチンを呼び出す必要がなくなった後に、このルーチンを1回呼び出す。制御の新しい使用が開始されない限り、制御のために他のいかなるルーチンも呼び出されない(この場合、ControlInitルーチンが再び呼び出される)。ルーチンは、入力を有さず、出力として、ResultCodeをスタックの最上部に返す。ResultCodeは、成功の場合は0であり、失敗の場合はマイナスのエラーコードである。
1.27.5.アクションルーチン
それぞれの可能なアクションは、名前(例えば、再生、転送、エクスポートなど)を有する。1つの例示的実施形態において、所与のアクション<Action>について、以下のルーチン名が規定される(ここで「<Action>」は、アクション(例えば「再生」「転送」「エクスポート」など)の実際の名前を表す)。
1.27.5.1.Control.Actions.<Action>.Init
このルーチンは、任意である。このルーチンが存在する場合、このアクションのために他の任意のルーチンを呼び出す前に、エンジンはこのルーチンを1回呼び出す。ルーチンは、入力を有さず、出力として、ResultCodeをスタックの最上部に返す。ResultCodeは、成功の場合は0であり、失敗の場合はマイナスのエラーコードである。一実施形態において、ResultCodeが0でない場合、エンジンは、現在のアクションを中止し、この制御のためのルーチンに対する更なる呼び出しを行わない。
1.27.5.2.Control.Actions.<Action>.Check
論ずる例示的実施形態において、所与のアクションのためにPerformルーチンが呼び出される場合、戻りステータスが何であるかを照合するために、このアクションを実行することなく、このルーチンが必要とされて呼び出される。このルーチンが任意の副作用を有さないことは、重要である。Performルーチンも副作用を有しない場合、制御のEntries TableにおけるCheckエントリおよびPerformエントリは、同一のルーチンを指し示すことができることに留意されたい。このルーチンは、下記のPerformルーチンのように、同一の入力および出力を有する。
1.27.5.3.Control.Actions.<Action>.Perform
一実施形態において、アプリケーションがアクションを実行しようとするときに、このルーチンが必要とされて呼び出される。ルーチンは、入力を有さず、出力として、ResultCodeおよびStatusBlockPointerを、スタックの最上部に返す。ここで、ResultCodeは、整数値である(ルーチンが首尾よく完了した場合は0であり、そうでない場合はマイナスのエラーコードである)。StatusBlockPointerは、標準ExtendedStatusBlockのアドレスである。一実施形態において、成功のResultCode(すなわち0)は、リクエストが認可されたことを意味しない。それは、ルーチンがエラーなしに実行可能であったことのみを意味する。それは、リクエストが認可または拒絶されたことを示すExtendedStatusBlockである。しかしながら、ResultCodeが失敗を示す場合、ホストアプリケーションは、あたかもリクエストが拒絶されたかのように進行する。例えば、一実施形態において、StatusBlockのカテゴリは、ACTION DENIEDであるべきであり、または返されたExtendedStatusBlockは拒絶され、ホストアプリケーションはアクションを中止する。
アクションが実行されるときに、Performルーチンのみが呼び出される必要がある。エンジンは、前もってCheckルーチンを呼び出す必要はない。Performルーチンのインプリメンテーションは、Checkルーチンを内部的に呼び出すことは、選択すれば可能であるが、システムが前もってCheckルーチンを呼び出すことを仮定するべきでない。
1.27.5.4.Control.Actions.<Action>.Describe
このルーチンは、任意であり、アプリケーションが所与のアクションのための制御プログラムによって表される規則および条件の意味の記述をリクエストするときに、呼び出される。ルーチンは、入力を有さず、出力として、ResultCodeおよびStatusBlockPointerを、スタックの最上部に返す。ここで、ResultCodeは、整数値である(ルーチンが首尾よく完了した場合は0であり、そうでない場合はマイナスのエラーコードである)。StatusBlockPointerは、標準ExtendedStatusBlockのアドレスである。
1.27.5.5.Control.Actions.<Action>.Release
このルーチンは、任意である。このルーチンが存在する場合、DRMエンジンが所与のアクションのための他の任意のルーチンを呼び出す必要がなくなった後で、このルーチンが1回呼び出される。アクションの新しい使用が開始されない限り、所与のアクションのために他のいかなるルーチンも呼び出されない(この場合、Initルーチンが再び呼び出される)。ルーチンは、入力を有さず、出力として、ResultCodeをスタックの最上部に返す。
ResultCodeは、成功の場合は0であり、失敗の場合はマイナスのエラーコードである。ResultCodeが0でない場合、エンジンは、所与のアクションのためのルーチンに対する更なる呼び出しを行わない。
1.27.6.リンク制約ルーチン
一実施形態において、埋め込まれた制御をリンクオブジェクトが有する場合、DRMエンジンは、その制御におけるリンク制約ルーチンを呼び出すことによって、リンクオブジェクトの有効性を検証する。1つの例示的実施形態において、以下の一般的なリンク制約ルーチンが使用される。
1.27.6.1.Control.Link.Constraint.Init
このルーチンは任意であり、このルーチンが存在する場合、所与のリンク制約のために他の任意のルーチンが呼び出される前に、このルーチンが正確に1回呼び出される。ルーチンは、入力を有さず、出力として、ResultCodeをスタックの最上部に返す。ResultCodeは、成功の場合は0であり、失敗の場合はマイナスのエラーコードである。ResultCodeが0でない場合、エンジンは、リンクオブジェクトの有効性制約が満たされていないとみなし、リンク制御のためのルーチンに対する更なる呼び出しを行うことを回避する。
1.27.6.2.Control.Link.Constraint.Check
論ずる例示的実施形態において、所与のリンクのための有効性制約が満たされるか否かを照合するために、このルーチンが必要とされて呼び出される。ルーチンは、入力を有さず、出力として、ResultCodeおよびStatusBlockPointerを、スタックの最上部に返す。ここで、ResultCodeは、整数値である(ルーチンが首尾よく完了した場合は0であり、そうでない場合はマイナスのエラーコードである)。StatusBlockPointerは、標準ExtendedStatusBlockのアドレスである。ResultCodeが0でない場合、エンジンは、リンクオブジェクトの有効性制約が満たされていないとみなし、リンク制御のためのルーチンに対する更なる呼び出しを行うことを回避する。たとえResultCodeが0(成功)である場合でも、制約が満たされたことを意味せず、ルーチンがエラーなしに実行可能であったことのみを意味する。StatusBlockは、制約が満たされるか否かを示す。
1.27.6.3.Control.Link.Constraint.Describe
このルーチンは、任意であり、アプリケーションが所与のリンクのための制御プログラムによって表される制約の意味の記述をリクエストするときに、呼び出される。ルーチンは、入力を有さず、出力として、ResultCodeおよびStatusBlockPointerを、スタックの最上部に返す。ここで、ResultCodeは、整数値である(ルーチンが首尾よく完了した場合は0であり、そうでない場合はマイナスのエラーコードである)。StatusBlockPointerは、標準ExtendedStatusBlockのアドレスである。
1.27.6.4.Control.Link.Constraint.Release
このルーチンは任意であり、このルーチンが存在する場合、エンジンが所与の制約のための他の任意のルーチンを呼び出す必要がなくなった後で、このルーチンが呼び出される。ルーチンは、入力を有さず、出力として、ResultCodeをスタックの最上部に返す。ResultCodeは、成功の場合は0であり、失敗の場合はマイナスのエラーコードである。論ずる実施形態において、このルーチンを呼び出した後に、新しいサイクルが開始されない限り、所与の制約のために他のいかなるルーチンも呼び出されない(この場合、Initルーチンが再び呼び出される)。同様に、ResultCodeが0でない場合、エンジンは、所与のリンク制約のためのルーチンに対する更なる呼び出しを行わない。
1.27.7.エージェントルーチン
一実施形態において、エージェントは、エンティティに代わって実行するように設計される制御オブジェクトである。エージェントは、2つのエンドポイントの間のサービス対話処理の状況において一般に使用される。ここで、1つのエンドポイントは、第2のエンドポイントの状況の中で、一部の仮想マシンコードを実行する必要があり、場合によってはその実行の結果を入手する必要がある。一実施形態において、制御は複数のエージェントを含むことができ、各エージェントは実行可能な任意の数のルーチンを含むことができる。しかしながら、実際には、エージェントは、一般に単一のルーチンを有する。
1つの例示的実施形態において、エージェントについて、以下のエントリポイントが規定される。ここで、<Agent>は、エージェントの実際の名前を指す名前ストリングである。
1.27.7.1.Control.Agents.<Agent>.Init
このルーチンは任意であり、このルーチンが存在する場合、エンジンは、所与のエージェントのために他の任意のルーチンを呼び出す前に、このルーチンを1回呼び出す。ルーチンは、入力を有さず、出力として、ResultCodeをスタックの最上部に返す。ResultCodeは、成功の場合は0であり、失敗の場合はマイナスのエラーコードである。
1.27.7.2.Control.Agents.<Agent>.Run
論ずる例示的実施形態において、このルーチンは、必要とされ、エージェントのメインルーチンである。ルーチンは、入力を有さず、出力として、ResultCode、ReturnBlockAddres、およびReturnBlockSizeを、スタックの最上部に返す。ResultCodeは、整数値である(ルーチンが首尾よく完了した場合は0であり、そうでない場合はマイナスのエラーコードである)。ReturnBlockAddressは、エージェントコードが呼出し元に返すと予想されるデータを含むメモリブロックのアドレスである(ルーチンが何も返す必要がない場合、アドレスは0である)。ReturnBlockSizeは、ReturnBlockAddressにおけるメモリブロックのバイトのサイズである。一実施形態において、ReturnBlockAddressが0である場合、ReturnBlockSizeの値も0である。
1.27.7.3.Control.Agents.<Agent>.Describe
このルーチンは、任意であり、アプリケーションが所与のエージェントの記述をリクエストするときに呼び出される。ルーチンは、入力を有さず、出力として、ResultCodeおよびStatusBlockPointerを、スタックの最上部に返す。ここで、ResultCodeは、整数値である(ルーチンが首尾よく完了した場合は0であり、そうでない場合はマイナスのエラーコードである)。StatusBlockPointerは、標準ExtendedStatusBlockのアドレスである。
1.27.7.4.ControI.Agents.<Agent>.Release
このルーチンは任意であり、このルーチンが存在する場合、エンジンは、このエージェントのための他の任意のルーチンを呼び出す必要がなくなった後で、このルーチンを1回呼び出す。新しいサイクルが開始されない限り、このエージェントのために他のいかなるルーチンも呼び出されない(この場合、Initルーチンが再び呼び出される)。ルーチンは、入力を有さず、出力として、ResultCodeをスタックの最上部に返す。ResultCodeは、成功の場合は0であり、失敗の場合はマイナスのエラーコードである。
1.28.拡張状態ブロック
以下の例の定義は、上述のルーチンのいくつかの例示的実施形態によって返されるExtendedStatusBlockデータ構造に適用可能である。ExtendedStatusBlockデータ構造の実施例を、仮想マシンの記載と関連して記載する。
一実施形態において、グローバルなExtendedStatusBlockフラグはない。この実施形態において、制御プログラムは、ExtendedStatuBlockのGlobalFlagフィールドを、0に設定する。
1.28.1.カテゴリ
以下の段落は、一実施形態によるExtendedStatusBlocksのCategoryフィールドのための値を規定する。一実施形態において、これらのカテゴリのいずれもサブカテゴリを有しないので、ExtendedStatusBlocksのSubCategoryフィールドの値は、0に設定される。
一実施形態において、以下のカテゴリコードが規定される。
1.28.1.1.アクション照合および実行ルーチン
Figure 0005357292
一実施形態において、アクションルーチンによって返されるExtendedStatusBlockパラメータのコンテキストにおいて、制約とは、真実であることを必要とする条件、または、ルーチンの結果がカテゴリACTION GRANTEDとともにExtendedStatusBlockを返すために、満たされる必要のある基準を意味する。
一実施形態において、上述の両方のカテゴリに共通するLocalFlagsフィールドのための値は、以下を含む。
Figure 0005357292
上記の表において、参照されるパラメータリストは、ExtendedStatusBlockデータ構造の「Parameter」フィールドである。
1.28.1.2.Describeルーチンカテゴリコード
一実施形態において、Describeルーチンについてのカテゴリコードは規定されない。一実施形態において、Actionルーチンのために規定されるものと同一のローカルフラグがDescribeルーチンに適用され、Describeルーチンは、返されるExtendedStatusBlockにおいて、下記に指定される「Description」という名前のパラメータを含むべきである。一実施形態において、Describeルーチンは、返されるExtendedStatusBlockにおいて、義務またはコールバックパラメータを含まない。しかしながら、Describeルーチンは、ExtendedStatusBlockにおいて、対応するアクションまたはリンク制約に適用できる制約の一部または全部を記述するパラメータを含むべきである。
1.28.1.3.リンク制約ルーチンカテゴリコード
Figure 0005357292
一実施形態において、Actionルーチンのために規定されるものと同一のローカルフラグが、これらのカテゴリの各々に適用される。
一実施形態において、リンク制約ルーチンによって返されるExtendedStatusBlockパラメータのコンテキストにおいて、制約とは、真実であることを必要とする条件、またはルーチンの結果が、カテゴリLINK VALIDを有するExtendedStatusBlockを返すために、満たされる必要のある基準を意味する。
1.28.2.キャッシュ持続時間
ExtendedStatusBlockのCacheDurationフィールドは、ExtendedStatusBlockにおいてコード化される情報の有効期間を示すものである。ExtendedStatusBlockがゼロ以外の有効期間を有する場合、ExtendedStatusBlockがキャッシュに格納可能であることを意味し、その期間中は、同一のパラメータを有する正確に同一のルーチン呼び出しを呼び出すことによって、同一のExtendedStatusBlockが返されるので、ルーチンを呼び出す代わりに、キャッシュに格納された値がホストアプリケーションに返されることを意味する。
1.28.3.パラメータ
一部のパラメータは、戻りステータス、ならびにテンプレート処理のための可変連結に関する、詳細な情報を伝達するために使用される(セクション9.4を参照)。
一実施形態において、義務およびコールバックを除き、ここに記載するすべての制約は、ホストアプリケーションによる分類および表示を補助することを厳密に目的とするものであり、使用規則を施行するためではない。規則の施行は、制御プログラムの責任である。
一実施形態において、以下のセクションにおいて規定されるパラメータは、パラメータフラグが適用できない場合はParameterBlockとしてコード化され、または1つ以上のフラグが適用できる場合はExtendedParameterBlockとしてコード化される。代表的なフラグを、以下に記載する。
1.28.3.1.記述
パラメータ名:Description
パラメータタイプ:ValueList
説明:記述パラメータのリスト。リストの各値は、タイプParameterまたはExtended Parameterのものである。一実施形態において、Default、Short、およびLongのパラメータが規定される。これらの各々は、存在する場合は、値のために、制御のリソースのうちの1つのIDを有する。そのリソースは、テキストペイロードまたはテンプレートペイロードを含むべきである。リソースがテンプレートである場合、結果のテキスト記述(制御プログラム全体の記述、または特定のアクションの記述)を入手するために処理される。テンプレートは、可変連結として、リストの他のパラメータ(その中に「Description」パラメータが現れる)を使用して処理される。
一実施形態において、「Default」記述も含まれる場合、「Short」および「Long」記述のみが含まれ得る。
Figure 0005357292
1.28.3.2.制約
一実施形態において、制約パラメータは、類似のタイプの制約を含むリストにおいて分類される。一実施形態において、タイプの一部のために標準制約が規定される。一実施形態において、制御は、標準制約のセットに含まれない制約パラメータを返してもよい。但し、制約パラメータの名前が、その名前の一意性を保証する名前空間におけるURNであることを条件とする。このことは、ベンダー特定の制約、または他の仕様において規定される制約を含んでもよい。
1.28.3.2.1.一般的制約
パラメータ名:GenericConstraints
パラメータタイプ:ValueList
説明:適用可能な一般的制約のリスト。リストの各値は、タイプParameterまたはExtendedParameterのものである。
一実施形態において、一般的制約は、このセクションにおいて規定される他の制約タイプのいずれにも帰属しない制約である。一実施形態において、一般的な制約パラメータは、規定されない。
1.28.3.2.2.時間的制約
パラメータ名:TemporalConstraints
パラメータタイプ:ValueList
説明:適用可能な時間的制約のリスト。リストの各値は、タイプParameterまたはExtended Parameterのものである。時間的制約は、時間、日付、持続時間などに関連する制約である。一実施形態において、以下の時間的制約パラメータが規定される。
Figure 0005357292
1.28.3.2.3.空間的制約
パラメータ名:SpatialConstraints
パラメータタイプ:ValueList
説明:適用可能な空間的制約のリスト。一実施形態において、リストの各値は、タイプParameterまたはExtendedParameterのものである。空間的制約は、物理的位置に関連する制約である。一実施形態において、標準的な空間的制約は規定されない。
1.28.3.2.4.グループ制約
パラメータ名:GroupConstraints
パラメータタイプ:ValueList
説明:適用可能なグループ制約のリスト。リストの各値は、タイプParameterまたはExtended Parameterのものである。グループ制約は、グループ、グループ帰属関係、識別グループなどに関連する制約である。一実施形態において、以下のパラメータが規定される。
Figure 0005357292
1.28.3.2.5.装置制約
パラメータ名:DeviceConstraints
パラメータタイプ:ValueList
説明:適用可能な装置制約のリスト。リストの各値は、タイプParameterまたはExtended Parameterのものである。装置制約は、装置の特徴(例えば、機能、属性、名前、識別子など)に関連する制約である。一実施形態において、以下のパラメータが規定される。
Figure 0005357292
1.28.3.2.6.カウンタ制約
パラメータ名:CounterConstraints
パラメータタイプ:ValueList
説明:適用可能なカウンタ制約のリスト。リストの各値は、タイプParameterまたはExtendedParameterのものである。カウンタ制約は、カウントされた値(例えば、再生カウント、累算カウントなど)に関連する制約である。一実施形態において、標準的なカウンタ制約は規定されない。
1.28.3.3.パラメータフラグ
一実施形態において、セクション9.2.3に記載されるすべてのパラメータについて、ExtendedStatusBlockとしてコード化される場合、以下のフラグを使用してもよい。
Figure 0005357292
1.29.義務およびコールバック
一実施形態において、一定のアクションは、認可される際に、ホストアプリケーションからの更なる関与を必要とする。義務は、リクエストするコンテンツ鍵の使用時または使用後に、ホストアプリケーションによって実行される必要のある操作を表す。コールバックは、リクエストするコンテンツ鍵の使用時または使用後に、ホストアプリケーションによって実行される必要のある制御プログラムのルーチンのうちの1つ以上に対する呼び出しを表す。
一実施形態において、アプリケーションがサポートまたは理解しない任意の重要な義務またはコールバックに遭遇した場合(例えばアプリケーションを実行した後で義務の種類が規定されたため)、アプリケーションは、この義務パラメータまたはコールバックパラメータが返されたアクションの継続を拒絶しなければならない。一実施形態において、重要な義務またはコールバックは、それを記述するパラメータのためのCRITICALパラメータフラグを設定することによって示される。
制御は、副作用(例えば再生カウントを減らすこと)を有する場合、すべての重要な義務およびコールバックを理解してそれに従うことが可能であれば、OnAcceptコールバックを使用することによって、ホストアプリケーションに一定のルーチンを呼び出すことを要求すべきである。副作用は、コールバックルーチンにおいて発生するべきである。1つの例示的実施形態において、インプリメンテーションは、OnAcceptコールバックを理解および実現する必要がある。なぜなら、そのことは、副作用(例えば状態データベースに対する更新)が時期尚早に(例えば、ホストアプリケーションが、所与の重要な義務またはコールバックに従えないことを決定し、アクションの実行を終了することを必要とする前に)生じることを防止する際に有用だからである。従って、処理の最小単位の方策が提供される。
1.29.1.パラメータ
以下のパラメータは、ExtendedStatusBlockデータ構造において返され得るいくつかのタイプの義務およびコールバックを規定する。
1.29.1.1.義務
パラメータ名:Obligations
パラメータタイプ:ValueList
説明:義務パラメータのリスト。リストの各値は、タイプParameterまたはExtended Parameterのものである。一実施形態において、以下の義務パラメータが規定される。
Figure 0005357292
1.29.1.2.コールバック
パラメータ名:Callbacks
パラメータタイプ:ValueList
説明:コールバックパラメータのリスト。リストの各値は、タイプParameterまたはExtended Parameterのものである。一実施形態において、以下のコールバックパラメータが規定される。
Figure 0005357292
Figure 0005357292
一実施形態において、上記の表において言及される「Callback」タイプは、3つのValueBlock要素を有するValueListBlockである。
Figure 0005357292
1.29.1.3.パラメータフラグ
一実施形態において、上記のセクションにおいて規定されるものと同一のパラメータフラグが使用される。一実施形態において、呼出し元が実現する必要のあるコールバックおよび義務は、CRITICALとしてマーキングされるので、これらのパラメータを無視する選択をホストアプリケーションに与えることを回避する。
1.29.2.イベント
一実施形態において、イベントは、名前によって指定される。イベントのタイプに依存して、イベントを更に指定するように規定されたフラグのセットがあり得る。一実施形態において、特定のイベントのためにフラグが規定されない場合、フラグフィールドの値は、0に設定される。更に、一部のイベントは、イベントが生じるときに一部の情報がコールバックルーチンに出力されるように指定してもよい。一実施形態において、ホストアプリケーションから特別な情報が必要とされない場合、ホストアプリケーションは、空のArgumentsBlockを用いて呼び出さなければならない(下記のセクション3.3におけるコールバックルーチンインタフェースの記載を参照)。
一実施形態において、CRITICALとしてマーキングされたコールバックパラメータにおけるイベントの名前が、ホストアプリケーションによって理解またはサポートされない場合、ホストアプリケーションは、このパラメータを、理解されないCRITICALパラメータとしてみなさなければならない(さらに、許可がリクエストされたアクションは実行されてはならない)。
一実施形態において、以下のイベント名が規定される。
Figure 0005357292
Figure 0005357292
1.29.3.コールバックルーチン
一実施形態において、コールバックルーチンは、同一の入力を受け取る:
入力:スタックの最上部
Figure 0005357292
Cookie:コールバックパラメータにおいて指定されたCookieフィールドの値。
ArgumentsBlockSize:このパラメータの下でスタック上に渡されるデータのバイト数。ルーチンが呼び出されるときに、スタックは、呼出し元によって出力される値ArgumentsBlockSizeを含み、アーギュメントブロックのサイズを示し、その後にデータのArgumentsBlockSizeバイトが続く。サイズが4の倍数でない場合、スタック上のデータをゼロ値バイトによってパッドすることによって、スタックポインタが4の倍数であることが確実にされる。
1.29.3.1.CONTINUEコールバック
一実施形態において、タイプCONTINUEを有するコールバック(タイプID=0)は、以下の出力を有する。
出力:スタックの最上部
Figure 0005357292
ResultCode:整数値。結果値は、ルーチンが実行できた場合は0であり、エラーが生じた場合はマイナスのエラーコードである。
Description:ResultCodeが、コールバックルーチンが実行可能であったことを示す場合(すなわち値は0である)、ホストアプリケーションは、現在の操作を継続することができる。ResultCodeが、エラーが生じたことを示す場合、ホストアプリケーションは、現在の操作を中止し、すべての保留中のコールバックおよび義務をキャンセルする。
1.29.3.2.RESET Callbacks
制御ルーチンが、ルーチンから返されたESBにおいてタイプRESETの指定された1つ以上のコールバックを有する場合、ホストアプリケーションは、そのコールバックのための条件が満たされるときに、任意の指定されたコールバックルーチンを呼び出す。一実施形態において、コールバックのいずれかの条件が満たされるとすぐに、ホストアプリケーションは、以下のことを行う必要がある。
・他の全ての保留中コールバックをキャンセルする。
・すべての現在の義務をキャンセルする。
・必要とされるパラメータ(あるとすれば)をそのコールバックに提供する。
・指定されたコールバックルーチンを呼び出す。
ルーチンからの戻りステータスは、ホストアプリケーションに対して、現在の操作の実行を継続できるか否かを示す。一実施形態において、許可が拒絶されるか、またはルーチンが首尾よく実行できない場合、ホストアプリケーションは、現在の操作の実行を中止しなければならない。同様に、許可が認可される場合、ホストアプリケーションは、あたかも本来のControl.Actions.<Action>.Performルーチンを呼び出したかのように、ESBにおいて返され得る任意の義務またはコールバックに従わなければならない。以前の義務またはコールバック指定は、もはや有効でない。
一実施形態において、このタイプのコールバックのためのコールバックエントリポイントとして指定されるすべてのルーチンは、以下の出力を有する。
出力:スタックの最上部
Figure 0005357292
ResultCode:整数値。結果値は、ルーチンが実行できた場合は0であり、エラーが生じた場合はマイナスのエラーコードである。
StatusBlockPointer:標準ExtendedStatusBlockのアドレス。
Description:このルーチンの戻りセマンティクスは、Control.Actions.<Action>.Performルーチンについて記述されるものと同等である。
1.30.メタデータリソース
一実施形態において、制御オブジェクトは、メタデータリソースを含むことができる。それは、ExtendedStatusBlockデータ構造において返されるパラメータから参照され得る。リソースは、単純なテキスト、テキストテンプレート、または他のデータタイプであり得る。各リソースは、リソースIDによって識別され、1つ以上のテキストストリングまたはコード化されたデータ(異なる言語の各バージョンごとに1つ)を含むことができる。リソースがすべての言語に提供される必要はない。どの言語バージョンがそのニーズに最適であるかを選択することは、ホストアプリケーションに依存する。
Figure 0005357292
Figure 0005357292
リソースは、ControlオブジェクトにおけるExtensionsとして含まれることによって、制御プログラムを伴う。リソースIDは、現在実行中のルーチンを有するコードモジュールを含むControlオブジェクトの内部拡張のIDに対してマッピングを行う。
一実施形態において、Resourceオブジェクトのための標準的なバイト列を算出するために、データ構造記述は、以下の通りである。
Figure 0005357292
1.30.1.単純なテキスト
単純なテキストは、MIMEタイプ「テキスト」として指定される。
1.30.2.テキストテンプレート
一実施形態において、標準テキストリソースに加えて、テキストテンプレートタイプが規定される。このためのMIMEタイプは、「text/vnd.intertrust.octopus−text−template」である。
一実施形態において、テキストテンプレートは、UTF−8においてコード化されるテキストキャラクタ、ならびにパラメータリストにおいて返されるパラメータから入手されるテキスト値によって置き換えられる名前付き記入子(例えばExtendedStatusBlockの記入子)を含む。記入子のためのシンタックスは「\PLACEHOLDER\」である。ここで、PLACEHOLDERは、Prameter Blockの名前および任意のフォーマッティングヒントを指定する。一実施形態において、テンプレートプロセッサは、トークン「\PLACEHOLDER\」全体を、そのParameter BlockのValueフィールドのフォーマットされた表現と置き換えなければならない。Valueデータのフォーマッティングは、下記のセクション4.2.1において指定される。
一実施形態において、キャラクタ「\」が記入子の外のテキストに現れる場合、それは「\\」としてコード化されなければならず、テキストにおける「\\」のすべての発生は、テンプレートプロセッサによって「\」に転じられる。
記入子のためのシンタックスは、FORMATNAMEであり、ここで、NAMEは、Parameter Blockの名前であり、FORMATは、パラメータのデータをテキストに変換するフォーマッティングヒントである。パラメータ値のデータタイプについてのデフォルトフォーマッティング規則が充分である場合、フォーマッティングヒントは除外でき、記入子は単にNAMEである。
1.30.2.1.フォーマッティング
1.30.2.1.1.デフォルトフォーマッティング
一実施形態において、異なる値タイプについてのデフォルトフォーマッティング規則は、以下の通りである。
Figure 0005357292
1.30.2.1.2.明示的フォーマッティング
明示的なフォーマット名は、記入子タグのFORMAT部分として使用できる。未知のFORMAT名に遭遇する場合、テンプレート処理エンジンは、デフォルトフォーマッティング規則を使用する。
Figure 0005357292
1.31.コンテキストオブジェクト
一実施形態において、制御ルーチンの実行中に、制御ルーチンは、System.Host.GetObjectシステムコールを使用することによって、多くのコンテキストオブジェクトにアクセスする。
1.31.1.一般的コンテキスト
一実施形態において、制御を実行するために以下のコンテキストが存在する。
Figure 0005357292
1.31.2.実行時コンテキスト
一実施形態において、以下のコンテキストは、System.Host.SpawnVmシステムコールを使用して作成されたVMにおいて動作中のすべての制御のために存在する。一実施形態において、このコンテキストは、存在してはならないか、またはSystem.Host.SpawnVmを使用して作成されなかったVMにおいて動作中の制御のための空のコンテナでなければならない。
Figure 0005357292
1.31.3.制御コンテキスト
一実施形態において、制御のルーチンが実行しているときはいつでも、以下のコンテキストが存在する。
Figure 0005357292
1.31.4.コントローラコンテキスト
一実施形態において、以下のコンテキストは、制御のルーチンの実行中、および制御がコントローラオブジェクトによって指し示されたときは、いつでも存在する(例えば、保護されたコンテンツを消費するためにContentKeyオブジェクトにアクセスするとき)。
Figure 0005357292
ホストアプリケーションが、所与のアクションについて、単一のコントローラオブジェクトによって制御されるグループコンテンツ鍵のみに対して許可される、という実施形態において、唯一の適用可能なコントローラオブジェクトがある。
1.31.5.アクションコンテキスト
一実施形態において、Actionを制御するために制御が呼び出されるときはいつでも、以下のコンテキストが存在する。
Figure 0005357292
1.31.6.リンクコンテキスト
一実施形態において、リンクオブジェクトの有効性を制限するために制御(例えばリンクオブジェクトに埋め込まれる制御オブジェクト)が呼び出されるときはいつでも、以下のコンテキストが存在する。
Figure 0005357292
1.31.7.エージェントコンテキスト
一実施形態において、制御のエージェントルーチンの実行中に、以下のコンテキストが存在する。
Figure 0005357292
ParameterコンテナおよびSessionコンテナは、1つのエンティティを必要とするプロトコルが別のエンティティ上のエージェントを送信および実行すること可能にするために通常使用され、そのことによって、どの入力パラメータをエージェントに渡すべきかを指定し、および一定の条件下でホストがどのセッションコンテキストオブジェクトを設定する必要があるかを指定する。一定のセッションコンテキストオブジェクトの有無は、サポートするように設計されたプロトコルの一部として実行しているか、またはコンテキストの外で実行しているかを、エージェントコードが決定することを可能にし得る。後者の場合、実行を拒絶してもよい。例えば、実行するホスト上で状態オブジェクトを作成することを目的とするエージェントは、特定のプロトコル対話処理の間に実行されていない場合は、実行を拒絶してもよい。
1.32.アクション
一実施形態において、各アクションは、名前とパラメータのリストとを有する。一実施形態において、一部のパラメータが必要とされる。アプリケーションは、このアクションを実行するときにパラメータを提供しなければならない。一部のパラメータは任意であり、アプリケーションは、パラメータを提供してもよいし、または除外してもよい。
一実施形態において、以下の標準的アクションが規定される。
1.32.1.再生
説明:マルチメディアコンテンツの通常のリアルタイム再生。
1.32.2.転送
説明:互換性のあるターゲットシステムへの転送。
同一のDRM技術を備えるシステムに対してコンテンツを利用可能にしなければならないときに、互換性のあるターゲットシステムへの転送が使用される。その結果、ターゲットシステムは、この制御を含むライセンスと同一のライセンスを使用することができる。しかし、ソース、シンクまたは両方において、状態情報を変化させる必要があり得る。転送元のシステムは、ソースと呼ばれる。転送先のターゲットシステムは、シンクと呼ばれる。
このアクションは、ソースおよびシンクの持続的な状態における必要な更新を行うために、Agentをソースからシンクまで転送することを可能にする、サービスプロトコルと連動して使用されるように意図される(例えば本明細書に記載する状態データベースにおけるオブジェクト)。一実施形態において、制御は、この目的のために、RunAgentOnPeer義務を使用する。状態データベースの説明と関連して、このサービスプロトコルの例示的実施形態に関する更なる情報を下記に提供する。
Parameters:
Figure 0005357292
1.32.3.エクスポート
説明:外部ターゲットシステムに対するエクスポート。
外部ターゲットシステムへのエクスポートは、本来のコンテンツライセンスを使用できないシステムにコンテンツをエクスポートしなければならないときに使用されるアクションである。これは、異なるDRM技術を備えるシステム、DRM技術を備えないシステム、または同一の技術を備えるシステムであり得るが、本来のライセンスと異なるライセンスを必要とする状況の下にある。転送元のシステムは、ソースと呼ばれる。転送先のターゲットシステムは、シンクと呼ばれる。
一実施形態において、このアクションのDescribe、Check、およびPerformanceの方法のためのExtended Statusの結果において、以下のパラメータが設定される。
Figure 0005357292
Parameters:
Figure 0005357292
他の入力パラメータは、特定のターゲットシステムによって必要とされ得る。
1.32.3.1.標準ターゲットシステム
1.32.3.1.1.オーディオCDまたはDVD
一実施形態において、ターゲットシステムが、圧縮されていないPCMオーディオが書き込まれる暗号化されていない媒体(例えば、書き込み可能なオーディオCDまたはDVD)である場合、標準TargetSystem ID「CleartextPcmAudio」が使用される。このターゲットシステムについて、ExportInfoパラメータは、著作権フラグを表す単一のIntegerパラメータである。このフラグは、整数値の最下位ビットにおいて示される。
Figure 0005357292
10.状態データベース
安全な状態記憶メカニズムを提供するためにDRMエンジンの好ましい実施形態によって使用できる安全なオブジェクト記憶装置を、以下に記載する。そのような機能は、呼出しから呼出しまで持続的な状態データベースの読込みおよび書込みを行うことが可能な制御プログラムを有効にするのに役立つ。そのような状態データベースは、状態オブジェクト(例えば、再生回数、最初の使用日、集積されたレンダリング時間など)を格納するために使用することができる。好ましい実施形態において、安全なデータベースは、不揮発性メモリ(例えば、携帯装置上のフラッシュメモリ、またはPC上のハードディスクドライブの暗号化された領域)において実現される。しかしながら、安全なデータベースは、任意の適切な媒体上で実現し得ることが理解される。
このセクションにおいて用いられる「オブジェクト」という用語は、安全なオブジェクト記憶装置に含まれるデータオブジェクトを一般に指し、本明細書の他の場所で論ずるオブジェクト(例えば、制御、コントローラ、リンクなど)を指さない。オブジェクトのこれらの2つのカテゴリを区別する必要がある場合、本明細書の他の場所に記載するオブジェクト(すなわち、制御、コントローラ、プロテクタ、ContentKeys、リンク、ノードなど)を指すために、「DRMオブジェクト」という用語が使用される。その一方で、「状態オブジェクト」という用語は、状態データベースの中に格納されるオブジェクトを指すために使用される。以下の説明において、「シーシェル(Seashell)」と呼ばれる状態データベースの例示的なインプリメンテーションに言及することがある。これは、本明細書の他の場所に記載するオクトパスDRMエンジンの実施形態と関連して使用される。しかしながら、本明細書に記載するシステムおよび方法の実施形態は、この例示的なインプリメンテーションの機能の一部または全部なしで実施できることが理解される。
1.33.データベースオブジェクト
オブジェクト記憶装置(例えばデータベース)は、データオブジェクトを含む。一実施形態において、オブジェクトは論理階層に配置される。ここで、コンテナオブジェクトは、それに含まれる子オブジェクトの親である。一実施形態において、4つのタイプのオブジェクト(ストリング、整数、バイト列、およびコンテナ)がある。各オブジェクトは、関連するメタデータおよびタイプを有する。オブジェクトは、そのタイプに依存して、値を有することもできる。
一実施形態において、状態オブジェクトは、System.Host.GetObjectおよびSystem.Host.SetObjectシステムコールを使用して、仮想マシンプログラムからアクセスできる。以下に詳述するように、オブジェクトメタデータは、仮想名を使用してアクセスすることができる。一実施形態において、メタデータフィールドの一部は、データベースのクライアントによって変化し得る(すなわち、読み書き(RW)アクセス可能である)。その一方で、他のメタデータフィールドは、読取り専用(RO)である。
一実施形態において、以下の表に示すメタデータフィールドが規定される。
Figure 0005357292
一実施形態において、以下の表に示すメタデータフラグが規定される。
Figure 0005357292
上述のように、一実施形態において、4つのタイプの状態オブジェクト(ストリング、整数、バイト列、およびコンテナ)がある。この実施形態において、ストリングオブジェクトの値は、UTF−8コード化された文字列であり、整数オブジェクトにおける値は、32ビット整数値であり、バイト列オブジェクトの値は、バイトのアレイである。この実施形態において、コンテナオブジェクトは、0以上のオブジェクトを含む。コンテナオブジェクトは、それが含むオブジェクトの親と呼ばれる。含まれるオブジェクトは、コンテナの子と呼ばれる。オブジェクトの親、親の親などのチェーンを構成する、すべてのコンテナオブジェクトは、オブジェクトの先祖と呼ばれる。オブジェクトが、別のオブジェクトを先祖として有する場合、そのオブジェクトは、先祖オブジェクトの子孫と呼ばれる。
1.34.オブジェクト存続期間
一実施形態において、状態データベースのオブジェクトの存続期間は、多くの規則に従う。オブジェクトは、明示的に抹消、または暗黙的に抹消され得る。オブジェクトは、データベースガーベジコレクションの結果としても抹消され得る。一実施形態において、オブジェクトが抹消される方法に関係なく、以下の規則が適用される。
・オブジェクトの親コンテナのためのModificationDateは、現在のローカルタイムに設定される。
・オブジェクトがコンテナである場合、オブジェクトが抹消されるときに、そのすべての子は抹消される。
1.34.1.明示的オブジェクト抹消
データベースのクライアントが、オブジェクトの削除をリクエストするときに、明示的なオブジェクト抹消が発生する(Host.SetObjectシステムコールを使用してこれを行う方法の詳細については、オブジェクトアクセスを参照されたい)。
1.34.2.暗黙的オブジェクト抹消
祖先におけるオブジェクトのうちの1つが抹消される結果として、オブジェクトが抹消されるときに、暗黙的オブジェクト抹消が発生する。
1.34.3.ガーベジコレクション
一実施形態において、状態データベースは、失効した任意のオブジェクトを抹消する。データベースを実現するシステム上のローカルタイムが、オブジェクトのメタデータのExpirationDateフィールドより後であるときに、オブジェクトは失効したとみなされる。インプリメンテーションは、失効したオブジェクトについてデータベースを定期的にスキャンして抹消してもよく、またはオブジェクトがアクセスされるまで待ち、その失効日を照合してもよい。一実施形態において、インプリメンテーションは、失効されたオブジェクトをクライアントに返してはならない。一実施形態において、コンテナオブジェクトが(例えば失効したために)抹消されるとき、その子オブジェクト(および再帰的にそれらのすべての子孫)も、(たとえまだ失効していなくとも)抹消される。
1.35.オブジェクトアクセス
一実施形態において、状態データベースのオブジェクトは、システムコールのペア(オブジェクトの値を読み取るSystem.Host.GetObject、およびオブジェクトの値を作成、抹消または設定するSystem.Host.SetObject)によって、仮想マシンプログラムからアクセスすることができる。
一実施形態において、状態データベースは、ホストオブジェクトのツリーとして可視であるために、ホストオブジェクトツリーの一定の名前のもとに「マウントされる」。このように、データベースは、ホストオブジェクトのより一般的なツリーにおけるサブツリーとして可視である。これを達成するために、一実施形態において、状態データベースは、常に存在するトップレベルのビルトインルートコンテナオブジェクトを含む。このルートコンテナは、基本的にデータベースの名前である。データベースの他の全てのオブジェクトは、ルートコンテナの子孫である。複数の状態データベースは、ホストオブジェクトツリーの異なる場所においてマウントできる(同一のホストコンテナの下でマウントされる2つのデータベースは、それらのルートコンテナについて異なる名前を有する必要がある)。例えば、Database1という名前のルートコンテナを有する状態データベースが、Child1という名前の単一の整数子オブジェクトを含む場合、データベースは、ホストオブジェクトコンテナ「/SeaShell」の下でマウントできる。その場合、Child1オブジェクトは、「/Seashell/Database1/Child1」として可視である。一実施形態において、状態データベースのオブジェクトに対するアクセスは、アクセスポリシーによって管理される。
1.35.1.オブジェクトの読み取り
オブジェクトの値は、システムコールSystem.Host.GetObjectを使用することによって読み取ることができる。状態データベースの一実施形態において、データベースに存在できる4つのオブジェクトタイプ(整数、ストリング、バイト列、およびコンテナ)は、仮想マシンのそれらの対応物上へ直接にマッピングされる。オブジェクト値は、通常の方法でアクセスでき、標準仮想名を実現することができる。
1.35.2.オブジェクトの作成
オブジェクトは、まだ存在しないオブジェクト名のためにSystem.Host.SetObjectを呼び出すことによって、作成することができる。オブジェクト作成は、システムコール指定に従って行われる。一実施形態において、オブジェクトが作成されるときに、状態データベースは以下のことを行う。
・オブジェクトメタデータの「所有者」フィールドを、親コンテナオブジェクトのメタデータの「所有者」フィールドの値に設定する。
・メタデータのCreationDateフィールドを、現在のローカルタイムに設定する。
・メタデータのModificationDateフィールドを、現在のローカルタイムに設定する。
・メタデータのExpirationDateフィールドを、0(失効しない)に設定する。
・メタデータのFlagsフィールドを、0に設定する。
・親コンテナのModificationDateを、現在のローカルタイムに設定する。
一実施形態において、既存のコンテナ階層より深い経路の下でオブジェクトを作成するときに、状態データベースは、作成されるオブジェクトへの経路を作成するために存在する必要のあるコンテナオブジェクトを暗黙に作成する。一実施形態において、暗黙的なコンテナオブジェクト作成は、明示的な作成と同一の規則に従う。例えば、子のないコンテナ「A」がある場合、「A/B/C/SomeObject」を設定するリクエストは、「A/B/C/SomeObject」を作成する前に、コンテナ「A/B」および「A/B/C」を暗黙に作成する。
1.35.3.オブジェクトの書き込み
オブジェクトの値は、すでに存在するオブジェクトのためのSystem.Host.SetObjectを呼び出すことによって、変化させることができる。指定されたObjectTypeが、既存のオブジェクトのタイプIDと一致しない場合、ERROR INVALID PARAMETERが返される。一実施形態において、タイプIDがOBJECT TYPE CONTAINERである場合、値を指定する必要はない(ObjectAddressは、ゼロでないでなければならないが、その値は無視される)。既存のオブジェクトが設定されるときに、状態データベースは、オブジェクトのModificationDateを現在のローカルタイムに設定する。
1.35.4.オブジェクトの抹消
オブジェクトは、すでに存在するオブジェクトのためのSystem.HostSetObjectを呼び出すことによって、明示的に抹消することができる。これによって、ObjectAddressの値は0となる。
オブジェクトが抹消されるときに、状態データベースは、好ましくは以下のことを行う。
・親コンテナのModificationDateを、現在のローカルタイムに設定する。
・抹消されたオブジェクトがコンテナである場合、そのすべての子オブジェクトを抹消する。
1.35.5.オブジェクトメタデータ
一実施形態において、状態データベースオブジェクトのためのメタデータは、仮想名を有するSystem.Host.GetObjectおよびSystem.Host.SetObjectシステムコールを用いてアクセスされる。以下の表は、状態データベースの一実施形態のオブジェクトのために利用可能な標準仮想名および拡張仮想名、ならびにそれらをメタデータフィールドにマッピングする方法を記載する。
Figure 0005357292
一実施形態において、1つ以上の未定義フラグが1に設定される場合、インプリメンテーションは、フラグメタデータフィールドを設定するリクエストを拒絶しなければならない。この場合、System.Host.SetObjectに対する戻り値は、ERROR INVALID P ARAMETERである。一実施形態において、Flagsメタデータフィールドを読み取るときに、クライアントは、定義済みでない任意のフラグを無視しなければならず、オブジェクトのFlagsフィールドを設定するときに、クライアントは、まずその既存の値を読み出し、定義済みでない任意のフラグの値を保たなければならない(例えば、システム仕様において)。
1.36.オブジェクト所有権およびアクセス制御
一実施形態において、オブジェクトの読み取り、書き込み、作成、または抹消のリクエストが行われるときは必ず、状態データベースインプリメンテーションは、まず、呼出し元がリクエストを実行する許可を有するか否かを照合する。オブジェクトにアクセスを管理するポリシーは、主要な識別および委託のコンセプトに基づく。ポリシーを実現するために、インプリメンテーションが動作する信用モデルは、認証された制御プログラムの概念をサポートする必要がある。このことは、PKI鍵ペアの秘密鍵を用いて、プログラムを含む仮想マシンコードモジュールにデジタル的に署名することによって(直接的または間接的に安全な参照を通して)、 および主要な名前を署名鍵に関連づける名前証明書を有することによって、一般に行われる。しかしながら、制御プログラム識別を決定する異なる方法が可能であり、そのうちの任意の適切な一つを使用できることが理解される。
一実施形態において、状態データベースにおけるオブジェクトのためのアクセスポリシーは、少数の単純な規則からなる。
・呼出し元の識別が、オブジェクトの所有者と同一である場合、またはPUBLIC READフラグが、オブジェクトのFlagsメタデータフィールドにおいて設定される場合、オブジェクトの値に対する読み込みアクセスは、認可される。
・呼出し元が、オブジェクトの親コンテナに対する読み込みアクセスを有する場合、オブジェクトの値に対する読み込みアクセスは、認可される。
・呼出し元の識別が、オブジェクトの所有者と同一である場合、オブジェクトの値に対する書き込みアクセスは、認可される。
・呼出し元が、オブジェクトの親コンテナに対する書き込みアクセスを有する場合、オブジェクトの値に対する書き込みアクセスは、認可される。
・呼出し元が、オブジェクトの親コンテナに対する書き込みアクセスを有する場合、オブジェクトに対する作成アクセスまたは末梢アクセスは、認可される。
・オブジェクトのメタデータに対する読出し書込みアクセス(仮想名を使用する)は、オブジェクトの値に対する読出し書込みアクセスと同じポリシーに従い、読取り専用フィールドに書き込むことができないという更なる制約を有する。
一実施形態において、アクセスポリシーがクライアントのリクエストを拒絶するときに、リクエストに対するシステムコールの戻り値は、ERROR PERMISSION DENIEDである。
データベースが作成されるときに、状態データベースのルートコンテナは、好ましくは固定される。オブジェクトが作成されるときに、その所有者メタデータフィールドの値は、その親コンテナ所有者メタデータフィールドの値と同じ値に設定される。オブジェクトの所有権は、変化し得る。オブジェクトの所有権を変化させるために、Ownerメタデータフィールドの値は、そのオブジェクトの「@Owner」仮想名のためのSytem.Host.SetObjectシステムコールを呼び出すことによって、設定することができる。ただし、アクセス制御規則の下でそれが許可されることを条件とする。
識別の下で実行中の主体と同一の主体によって所有されないアクセスオブジェクトに対して、制御プログラムがアクセスできない実施形態において、制御プログラムは、「外部」オブジェクトの所有者の識別の下で実行する能力を有するコードモジュールからロードされるプログラムに対して、「外部」オブジェクトへのアクセスを委任する必要がある。これを行うために、制御プログラムは、制御仮想マシンのSystem.Host.SpawnVm、System.Host.CallVm、およびSystem.Host.ReleaseVmシステムコールを使用してもよい。
1.37.ライセンス転送プロトコル
上述のようなデータベースにおける状態情報の記憶は、著作権を、装置間で移動したり、またはドメインからエクスポートしたりすることを可能にする(例えば、状態情報を別の装置へ転送することによって)。以下のセクションは、データベースの状態をソースからシンクまで転送できるプロトコルの実施形態を記載する。このプロセスは、ライセンス転送プロトコルと呼ばれるが、単なる実際のライセンス(例えば制御オブジェクトなど)とは対照的に、状態データベースの状態が転送されることに留意されたい。このプロトコルは、ライセンス転送プロトコルと呼ばれる。なぜなら、一実施形態において、制御プログラムにおける転送アクションの実行によって転送が開始されるからであり、状態情報の転送によって、シンクがコンテンツの関連ライセンスを首尾よく実行できるからである。
図32は、ライセンス転送3200の実施例を示し、3つのメッセージ3202、3204、3206からなる。図32に示す実施例において、リクエスト3202をソース3212に送信することによって、シンク3210によってプロトコルが開始される。一実施形態において、リクエスト3202は、転送されるコンテンツのIDを保持する。ソース3212は、応答3204をシンク3210に送信する。応答3204は、(i)シンク3210の状態データベースにおける状態を設定するエージェント、ならびに(ii)シンク3210を対象にしたContentKeyオブジェクトを含む。図32に示すように、シンク3210は、エージェントが実行したという確認3206を、ソース3212に送信する。コンテンツ鍵および/またはコンテンツを受信すると、シンクは、それに関連する制御に従ってコンテンツを使用してもよい(例えば、スピーカでそれを再生し、ビデオスクリーン上にそれを表示し、および/または他の何らかの態様でそれをレンダリングする)。
図32に示す方法は、一部の実施形態において使用できるが、以下のような一部の潜在的問題がある。
先を見越してそのレンダリングの終了をソースに告げる方法がない。一実施形態において、図32に示すプロトコルは、2つのモードをサポートするが、これが問題である。すなわち(i)レンダリング(レンダリング停止がない)、および(ii)チェックアウト(チェックインがない)である。この問題のために、制御の発行者は、転送される状態におけるタイムアウトを発行することになり得る。しかしながら、例えば、ユーザがある装置上のコンテンツをレンダリングしたいが、ユーザが実際には別の装置上でこのコンテンツをレンダリングしたいと決断する場合に、ユーザは消費者として悪い経験をすることになる。すなわち、現在の設計において、ユーザは、他の装置上でコンテンツをレンダリングできるようになる前に、第1の装置上でコンテンツ全体がレンダリングされるのを待たなければならない可能性がある。このことは、コンテンツが比較的に長い場合(例えば映画)、望ましくない。
リクエストにおけるコンテンツIDに関連するライセンスを解決することは、困難であり得る。一実施形態において、リクエストは、コンテンツIDのみを含み、ソースは、コンテンツIDに関連するライセンスをそのライセンスデータベースから検索する。しかしながら、このプロセスは、エラーを起こしやすくなり得る。なぜなら、ライセンスは、取り外し可能媒体に保存され得るし、プロトコルの連動時に、媒体が取り外されると特定のライセンスが利用可能でなくなることがあるからである。さらに、たとえライセンスが利用可能であっても、ライセンス記憶装置におけるライセンスのためのルックアップの実行が扱いにくくなり得る。また、コンテンツIDのセットに関連する複数のライセンスがあり得るので、解決されたライセンスがリクエストにおいて意図されたライセンスと同一であるか否かを決定することが困難であり得る。
制御プログラムが先を見越して近似照合を求める方法はない。一実施形態において、システムコール/コールバック/義務のセットは、制御がピアの近似照合を求める方法をサポートしない。これに代わって、制御は、近似照合プロトコルの以前の実行から獲得された値を用いて転送中にアプリケーションによって占有されたホストオブジェクトOctopus/Action/Parameters/Sink/Proximity/LastProbeの値のみを読み込むことができる。そのような近似照合が必要でない場合(例えばシンクが一定のドメイン内で知られている場合)に、近似照合を回避することが望ましい場合には、これは問題であり得る。
プロトコルにとっては、3ラウンドしかない。図32に示す実施形態において、プロトコルは、3ラウンドに限定されている。これは、重大な制限であり得る。なぜなら、OnAgentCompletionコールバックが、別のRunAgentOnPeer義務を有する拡張状態ブロックを返す場合について、プロトコルは処理ができないからである。さらに、プロトコルが完了した後、シンクは、プロトコルが成功したか否かを実際に知ることがない。それに加えて、近似照合は、応答が送信される前に生じる必要があるが(上記の問題を参照)、ソースおよびシンクが同一のドメイン内にある場合には、これは必要ではない。それに加えて、図32に示すプロトコルにおいて、ソースは、コンテンツ鍵が果たして使用されるか否かを知ることなく、コンテンツ鍵をシンクに与える。
ライセンス転送が必要であるというヒントがESBの中にない。図32に示す実施形態において、DRMクライアントがライセンス(例えばControl.Actions.Play.Check)を評価する際に、制御の良好な評価を可能にする状態を得るためにはライセンス転送が必要であるということを制御ライタが示唆する容易な方法がない。
ソースは、転送を開始することができない。図32に示すプロトコルにおいて、ライセンス転送は、シンクによって開始される。ソースも転送を開始できることが望ましい。
改善された実施形態
下記の実施形態は、上記の問題の一部または全部を解決または改善することができる。
リリース問題のための解決策。一実施形態において、新しいリリース操作を紹介する。
この操作がリクエストにおいて指定されるときに、転送モードIDはReleaseに設定される。クライアントがレンダリング/チェックアウトとリリース操作との間の相関を行うために、選択要素SessionIdが、リクエストに追加される(下記のセクションを参照)。一実施形態において、この要素が存在するときには、SessionIdの下のTransfer Actionコンテキストのホストオブジェクトツリーに反映される。
シンクは、Teardownメッセージにおいて獲得するExtended Status Block(下記参照)が以下のパラメータを含む場合、リリースリクエストにおいてこのSessionIdを送信しなければならないということを知っている。
パラメータ名:SessionId
パラメータタイプ:String
このパラメータのフラグは、CRITICALに設定される。
ライセンス解決問題のための解決策(リクエストのリファクタリング)。一実施形態において、解決策は、シンク装置にライセンスバンドルをリクエストに入れさせることである。その結果、基本的に、シンクおよびソースが同一のライセンスを実行するという保証になる。図32に示す実施形態において、リクエストのためのXMLスキーマは、以下の通りである。
Figure 0005357292
ContentIdListが、コンテンツを識別するContent IDのリストを(トラック/ストリームごとに1つ)含む場合、Operationは、ライセンス転送動作のタイプを含み、Bundleは、リクエスト側のPersonalityノードおよび関連する署名を含む。
上述したライセンス解決の問題を回避するために、例えば以下の通りにスキーマを訂正することによって、ライセンスバンドルをリクエストに含ませることができる。
Figure 0005357292
このスキーマにおいて、ContentIdList要素は、License要素によって置き換えられる。この要素は、LicensePart要素のセットを運ぶ。LicensePart要素は、oct:Bundle要素(ライセンスオブジェクトを含む)、ならびに任意のContentId属性(ライセンスオブジェクトがこの特定のContentIdに適用されることを示す)を運ぶ。ContentId属性を有さないLicensePart要素は、根本的なバンドルに含まれるオブジェクトが、すべてのContent ID(一般にコントローラおよび制御オブジェクト)に適用されることを意味する。
一実施形態において、SessionId選択要素は存在し得ない。ただし例外は、操作がurn:marlin:core:l−2:service:license−transfer:releaseである場合であり、対応するレンダリングまたはチェックアウトアクションのExtended Status BlockにおいてSessionIdパラメータが受信された場合に、SessionId選択要素が存在し得る(上記参照)。
一実施形態において、シンクがコンテンツ鍵をすでに解読できることを知っている場合、NeedsContentKeys選択要素は、偽の値を有して存在するべきである。この要素の欠如は、プロトコルが成功した場合に、ソースがシンクのコンテンツ鍵を再暗号化しなければならないことを意味する。
一実施形態において、そのようなリクエストを受信するときに、ライセンス要素は以下の通りに処理される。
(1)LicensePart要素に見いだされるすべてのContentId属性を収集する。
(2)LicensePart要素に見いだされるすべてのBundle要素を処理する。
(3)上記において収集されたコンテンツIDのセットを開く。
(4)関連オブジェクト上の適切な署名を検証する。
(5)処理されたControlオブジェクト上のControl.Actions.Transfer.Check方法を任意に呼び出す。
(6)処理されたControlオブジェクト上のControl.Actions.Transfer.Performを呼び出す。
Controlプログラムが先を見越してシンクの近似照合を求めることを可能にすること。Controlプログラムがこれを行えるようにするために、Oblications/Callbacksの新しいペアを規定することができる。具体的には、制御は、「ProximityCheckSink」義務をその拡張状態ブロックに置くことができる。これは、シンクとの近似を照合しなければならないことをアプリケーションに対して示す。近似照合が行われるときに、アプリケーションは、「OnSinkProximityChecked」コールバックを使用して、制御をコールバックする。
一実施形態において、ライセンス転送の状況においてのみ適用可能なProximityCheck義務が規定される。この実施形態において、拡張状態ブロックごとにゼロまたは1つのそのような義務が存在する必要があり、存在する場合には、OnSinkProximityCheckedコールバックも存在する必要がある。
Figure 0005357292
OnSinkProximityCheckedコールバック
Figure 0005357292
プロトコルにおいて複数のラウンドトリップを可能にすること。図33は、複数のラウンドトリップを可能にするプロトコルの変更を概説する。図33に示す実施形態において、Setupメッセージ3302は、例えば、ライセンス解決問題/解決策と関連して上述した改善されたライセンス転送リクエストメッセージと同一であり得る。
図33に示すように、Setup3302の後に、アプリケーションは、上記のようにControlを実行し、Extended Status Block(ESB)を獲得する。このESBは、RunAgentOnPeer義務/OnAgentCompletionコールバックを含んでもよい。一実施形態において、RunAgentOnPeer義務は、ソース3312アプリケーションがRunAgentメッセージ3304を構築することを必要とするすべてのパラメータを含む。一実施形態において、アプリケーションが、OnAgentCompletionコールバックのExtended Status Blockにおける別のRunAgentOnPeer/OnAgentCompletionコールバック/義務のペアに遭遇する場合、RunAgentメッセージ3304も送信されることに留意されたい(1つ以上のRunAgent/AgentResultメッセージ交換の後)。
一実施形態において、ESBが、RunAgentOnPeer義務/OnAgentCompletionコールバックを含まない場合、Teardownメッセージを送信する必要があることを意味する(下記参照)。このESBは、ProximityCheck義務/OnSinkProximityCheckedコールバックを含んでもよいことに留意されたい。その場合、Teardownメッセージを送信する前に、近似照合プロトコルが実行され、OnSinkProximity照合がされたコールバックのESBから結果が読み出される。
一実施形態において、RunAgentメッセージ3304のペイロードは、ContentKeyListを運ばないことを除いて、以前の設計のResponseメッセージと同一である。
図33に示すように、シンク3310は、RunAgentメッセージ3304のソースによって送信されるエージェントを実行した後、AgentResultメッセージ3306をソース3312に送信する。一実施形態において、メッセージペイロードは、図32に関連して記載されるConfirmationメッセージと同一である。
図33に示すように、OnAgentCompletionの拡張状態ブロックが、任意のRunAgentOnPeer/OnAgentCompletionコールバック/義務のペアを運ばないときに、ソースアプリケーション3312によってTeardownメッセージ3308が送信され、これはプロトコルが終わっていることを意味する。一実施形態において、Teardownメッセージ3308は、以下の2つの情報を運ぶ。(i)プロトコル結果の記述(その結果、シンク3310は、プロトコルが成功したか否かを知り、成功しなかった場合は、なぜ失敗したかが示される(詳細は以下を参照))。(ii)プロトコルが成功した場合、アップデートされたContentKeyオブジェクト(以前のメッセージにおけるResponseのContentKeyList)(設定メッセージのNeedsContentKey要素が真に設定されるかまたは存在しない場合)。
一実施形態において、プロトコル結果の記述は、実際に、制御の最後の呼出しのExtended Status Block(ESB)であり、エージェント関連の義務/コールバックのペアを運ばない。
失敗した場合、ESBのパラメータは、リソースを指し示してもよい。一実施形態において、これらのリソースは、Setupメッセージにおいて送信されたControlのResourceList拡張に位置づけられる。
成功した場合、一実施形態において、キャッシュ持続時間は、制御を再び求めることなくContent Keyが使用され得る時間の長さを示す。
そのようなESB XML表現の実施例を、下記に示す。これを仮想マシンスキーマに追加することができる。
Figure 0005357292
以下は、上述の改善されたライセンス転送メカニズムの実施形態に従うレンダリングユースケースの実施例である。この実施例において、ブロードキャストインポート関数は、以下のライセンスを有するコンテンツをインポートする。−Play:ローカル状態が存在する場合はOKである。
−Transfer:
−Render:シンクがドメインXにある場合、またはシンクが近似にある場合はOKである。
一度に1つの平行ストリームのみをレンダリングできる。
Core DRMClient1がコンテンツストリームをレンダリングする許可をリクエストすると仮定されたい。Setup Requestは、シンク(Core DRMClientl)から、以下のパラメータを含むSource(BCインポート関数)まで送信される。
−License:シンクがレンダリングすることを望むコンテンツに関連するライセンス
−Operation=urn:marlin:core:1−0:service:license−transfer:render
−Bundle=シンクのPersonalityノード
リクエストを受信すると、ソースアプリケーションは、関連するホストオブジェクトにデータを読み込み、Control.Actions.Transfer.Perform方法を呼び出す。レンダリング転送を管理する方法のための例示的な擬似コードを以下に示す。
Figure 0005357292
レンダリングがロックされないと仮定して、RunAgentOnPeer義務が実行される。RunAgentメッセージは、CheckDomainAgent方法を含むControlとともに送信される。このメッセージを受信すると、シンクは、関連するホストオブジェクトにデータを読み込み、CheckDomainAgent方法を呼び出す。CheckDomainAgentのための例示的な擬似コードを以下に示す。
Figure 0005357292
説明のために、シンクが実際にドメイン内にあると仮定されたい。シンクは、このエージェント結果を含むAgentResultメッセージを送信する。AgentResultを受信すると、ソースは、コールバック方法を呼び出す。RenderAgentCompletedのための例示的な擬似コードを以下に示す。
Figure 0005357292
シンク上のドメイン帰属関係をエージェントが首尾よく照合したと仮定されたい。Teardownメッセージは、以下の2つとともに送信される。(i)シンクのための再暗号化されたコンテンツ鍵(Setupリクエストにおいてシンクノードが提供される鍵を使用する)。(ii)上記で指定されたキャッシュ持続時間を運ぶESB(この場合は0であり、次回にコンテンツへのアクセスを望む際に、シンクは再要求をしなければならないことを意味する)。シンクは、このメッセージを受信するときに、コンテンツのレンダリングが許可され、必要なコンテンツ鍵を有する、ということを知る。
ここで、ユーザが自分の他の装置(DRMClient2)上のコンテンツをレンダリングすることを望むと仮定されたい。問題は、コンテンツがソース上で180分にわたってロックされるということである。幸いにも、ユーザがDRMClientl上のSTOPを押すと、DRMClientlは、Releaseという操作によって新しいライセンス転送プロトコルを開始する。リクエストを受信すると、ソースアプリケーションは、関連するホストオブジェクトにデータを読み込み、Control.Actions.Transfer.Perform方法を呼び出す。転送リリースを管理する方法のための例示的な擬似コードを以下に示す。
Figure 0005357292
義務/コールバックがESBに見いだされないので、このことは、TeardownメッセージがこのESBとともに送信されることを意味する。
従って、このレンダリングユースケースは、一定の実施形態において、以下のことを示す。レンダリング操作のリクエスト側のDRMClientは、ローカルに制御を再評価する必要がない。状態は、ソースからシンクまで転送される必要がない。制御は、先を見越して近似照合を求めることができる。それによってレンダリングが行われたときに、コンテンツをリリースすることができる。
11.証明書
一実施形態において、証明書は、鍵によって作成されるデジタル署名に基づいて決定を行う前に、暗号鍵に関連する証明を照合するために使用される。
一部の実施形態において、DRMエンジンは、標準的な証明技術と互換性があるように設計され、そのような証明の要素(例えば有効期間、名前など)に見いだされる情報に影響を及ぼすことができる。それらの基本的制約に加えて、一部の実施形態において、認証された鍵を使用できる(およびできない)目的に関する、更なる制約を規定することができる。例えば、このことは、証明書の標準的なコード化の一部として利用可能な鍵使用拡張を使用することによって達成することができる。そのような拡張においてコード化される情報は、特化オブジェクトに署名した鍵をこの目的のために使用することが認可されたか否かを、DRMエンジンが照合することを可能にする。例えば、一定の鍵は、証明書を有してもよい。この証明書によって、リンクが、特定の属性を有するノードから、別の特定の属性を有するノードに対するものであり、他のいかなるリンクもない場合のみに、鍵はリンクオブジェクトに署名することができる。証明書を表現するために使用される一般的な技術のセマンティクスは、そのような制約を表現することが一般にできない(例えばリンクおよびノードなどのDRMエンジン特有の要素に関する条件を表現する方法を有しない)。従って、一実施形態において、そのようなDRMエンジン特有の制約は、DRMエンジンを使用するように構成されたアプリケーションによって処理される基本的証明書の鍵使用の拡張を意味する。
一実施形態において、鍵使用法拡張における制約は、使用カテゴリおよびVM制約プログラムによって表現される。使用カテゴリは、鍵が署名することを認可されるオブジェクトのタイプを指定する。制約プログラムは、コンテキストに基づいて動的な条件を表現することができる。一実施形態において、そのような証明書の有効性を検証するよう求められる任意の検査機構は、DRMエンジンセマンティクスを理解する必要があり、鍵使用拡張表現の評価をDRMエンジンに委任する。DRMエンジンは、仮想マシンのインスタンスを使用することによってプログラムを実行する。そのプログラムの実行の結果が成功である場合、証明書は有効であるとみなされる。
一実施形態において、制約プログラムの役割は、ブール値を返すことである。「真」は、制約条件が満たされることを意味し、「偽」は、制約条件が満たされないことを意味する。一実施形態において、制御プログラムは、決定に到達するために使用できる一部のコンテキスト情報(例えば仮想マシンのホストオブジェクトインタフェースを通してプログラムに利用可能な情報)にアクセスする。コンテキストとして利用可能な情報は、DRMエンジンが証明書の検証をリクエストするときに実行を試みる決定のタイプに依存する。例えば、一実施形態において、リンクオブジェクトにおける情報を使用する前に、DRMエンジンは、オブジェクトに署名した鍵の証明書がその目的のためにその鍵の使用を許可することを検証する。制約プログラムを実行するときに、仮想マシンの環境は、リンクの属性(ならびにリンクによって参照されるノードの属性)に関する情報によって占有される。
一実施形態において、鍵使用拡張に埋め込まれる制約プログラムは、「Octopus.Certificate.<Category>.Check」という名前の少なくとも1つのエントリポイントをエクスポートする仮想マシンコードモジュールとしてコード化される。ここで「カテゴリ」は、照合する必要のある証明書のカテゴリを示す。検証プログラムに対するパラメータは、エントリポイントを呼び出す前に、スタック上にプッシュされる。スタックに渡されるパラメータの数およびタイプは、評価される証明書拡張のカテゴリに一般に依存する。
12.デジタル署名
好ましい実施形態において、DRMエンジンにより用いられるオブジェクトの一部または全部は、署名される。以下は、一実施形態において、XMLデジタル署名仕様(http://www.w3.org/TR/xmldsig−core)(「XMLDSig」)を使用して、オブジェクトにデジタル署名をする方法の説明である。それに加えて、XML排他的標準化と互換性のあるXMLの標準化方法(http://www.w3.org/TR/xml−exc−cl4n/)(「cl4n−ex」)も記載する。この出力は、非XML名前空間認識パーサによって処理できる。付録Dは、例示的なオブジェクトシリアライゼーションに関する詳細な情報を提供するものであり、コード化に依存しない態様におけるオブジェクトのための標準的なバイト列を算出する例示的な方法を含む。
図28、図34、および図35に示すように、好ましい実施形態において、DRMライセンスの一定の要素は署名される。図28、図34、および図35に示すような技術は、ライセンス構成要素の不正操作または置換を防止または妨害するのに有用である。図34に示すように、好ましい実施形態において、コントローラオブジェクト3402は、コンテンツ鍵オブジェクト3404および制御オブジェクト3406のそれぞれの、暗号ダイジェストまたはハッシュ(または他の適切な結合)3405、3407を含む。コントローラ3402自体は、MAC(または好ましくはコンテンツ鍵を利用するHMAC)、および(一般にコンテンツまたはライセンスプロバイダの)公開鍵署名3412によって署名される。好ましい実施形態において、コントローラ3412の公開鍵署名自体は、コンテンツ鍵を使用するHMAC3410によって署名される。他の実施形態において、所望の安全レベルおよび/または他のシステム要件に依存して、他の署名スキームを使用できることが理解される。例えば、コントローラおよび/または制御(例えばPKI、標準MACなど)の署名のために、異なる署名スキームを使用することができる。別の例として、制御およびコントローラについて、独立したMAC署名を算出することができる(コントローラに制御のダイジェストを含んだり、コントローラの単一のMAC署名を算出したりするかわりに)。さらに別の例において、コントローラは、MACおよび公開鍵署名によって署名され得る。それに代わって、またはそれに加えて、上述の鍵とは異なる鍵を使用することによって、様々な署名を生成することができる。従って、図28、図34、および図35は、一部の実施形態に従ういくつかの有利な署名技術を例示するが、これらの技術は例示的かつ非限定的なものであることが理解される。図35は、コントローラが複数のコンテンツ鍵を参照する実施形態を例示する。図35に示すように、一実施形態において、コンテンツ鍵の各々は、コントローラおよびPKI署名のHMACを生成するために使用される。
一実施形態において、XML標準化のためのデータモード、処理、入力パラメータ、および出力データは、名前空間接頭語が除去される(名前空間はデフォルト名前空間メカニズムを使用して示される)こと、および外部実体がサポートされず、キャラクタエンティティのみがサポートされることを除いて、排他的標準XML(cl4n−ex)に関するものと同一である。第1の限定は、属性およびその要素が同一の名前空間の中にある必要があることを意味する。
図42は、一実施形態における、cl4n−exと例示的XML標準化との関係を示す。ここで、<xml>は任意の有効なXMLであり、<xml>が外部実体および名前空間接頭語を有する場合のみに、<xml>'=<xml>''である。
簡略化された署名スキームの単純な実施例を、以下に提供する。しかしながら、好ましい実施形態において、標準XML標準化が使用される。
Figure 0005357292
このセクションにおいて論ずる署名要素は、XMLDSig名前空間に帰属し(xmlns=http://www.w3.org/2000/09/xmldsig#)、XMLDSig仕様で規定されるXMLスキーマにおいて規定される。一実施形態において、DRMオブジェクトのXML表現のコンテナ要素は、<Bundle>要素である。
一実施形態において、以下のオブジェクトは、署名される必要がある。
・Node
・Link
・Controller
・Control(任意)
・Extension(運ぶデータに依存する)
一実施形態において、署名は切り離される必要があり、<Signature>要素は、署名される必要のあるオブジェクトのXML表現を含む<Bundle>オブジェクトの中に存在する必要がある。
一実施形態において、<Signature>ブロックは、以下を含む。
・<SignedInfo>要素
・<SignatureValue>要素
・<KeyInfo>要素
一実施形態において、<SignedInfo>は、以下の要素を埋め込む。
<CanonicalizationMethod>。一実施形態において、<CanonicalizationMethod>要素は、空であり、そのAlgorithm属性は、以下の値を有する。
・http://www.w3.org/2001/10/xml−exc−cl4n#
<SignatureMethod>。一実施形態において、<SignatureMethod>要素は、空であり、そのAlgorithm属性は、以下の値を有する。
・http://www.w3.org/2000/09/xmldsigt#hmac−shal(HMAC署名)
・http://www.w3.org/2000/09/xmldsigt#rsa−shal(公開鍵署名)
<Reference>。一実施形態において、複数のオブジェクトが同一の鍵によって署名される必要がある場合、<SignedInfo>ブロックの内部に1つ以上の<Reference>要素があり得る(例えばControlおよびControllerオブジェクトの場合がそうである)。
一実施形態において、オブジェクトに署名するときに、<Reference>要素の「URI」属性の値は、参照されるオブジェクトのIDである。ローカルなXML要素に署名するときに(例えばControllerオブジェクトのための公開署名方法の複数署名の場合において)、URIの値は、参照される要素の「ID」属性の値である。
一実施形態において、参照がオブジェクトを指し示すときに、参照においてダイジェストされるものは、オブジェクトのXML表現ではなく、その標準的バイト列である。オブジェクトのこのトランスフォームは、<Tranforms>ブロックによってXMLDSigにおいて示される。従って、一実施形態において、<Reference>要素は、以下のブロックを埋め込む。
Figure 0005357292
付録Dは、追加情報を提供する。一実施形態において、オブジェクト参照のために他の<Tranform>は許可されない。
一実施形態において、<DigestMethod>要素は、空であり、そのAlgorithm属性は、以下の値を有する。
・http://www.w3.org/2000/09/xmldsig#shal
<DigestValue>要素は、ダイジェストのベース64コード化された値を含む。
<SignatureValue>。一実施形態において、署名値は、<KeyInfo>要素において記述される鍵を有する標準化された(ex−cl4n)<SignedInfo>要素の署名の、ベース64コード化された値である。
<KeyInfo>
・コントローラオブジェクトの署名のためのHMAC−SHA1の場合
一実施形態において、この場合、<KeyInfo>は、1つの子のみ、すなわちHMAC署名のために使用された鍵のIDを示す<KeyName>を有する。
Figure 0005357292
一実施形態において、この場合、署名を検証するために使用される公開鍵は、X.509 v3証明書において運ばれ、CAルートに証明書経路を完了するのに必要な他の証明書を伴い得る。
これらの証明書は、<X509Certificate>要素において、運ばれ、ベース64においてコード化される。これらの<X509Certificate>要素は、<KeyInfoの>要素の<X509Data>要素の子に埋め込まれ、署名する鍵の証明書から始まる順番で現れる。ルートの証明書は、通常は除外される。
実施例(簡潔さのために、例示的な証明書の値をすべて再現するわけではなく、削除されたマテリアルは省略記号によって示される)。
Figure 0005357292
一実施形態において、コントローラオブジェクトは、制御されるターゲットのリストにおいて参照されるContentKeyごとに、少なくとも1つのHMAC署名を有する必要がある。それらの署名の各々のために使用される鍵は、参照されるContentKeyオブジェクトに含まれるコンテンツ鍵の値である。
コントローラはまた、RSA署名を有してもよい。一実施形態において、そのような署名が存在する場合、この署名は、オブジェクトのためのHMAC署名の各々における<Reference>としても現れる。このことを達成するために、一実施形態において、RSA署名のための<Signture>要素は、囲むXML文書の範囲内で一意の「ID」属性を有しなければならない。この属性は、HMAC署名の各々の<Reference>要素のうちの1つにおける「URI」属性として使用される。一実施形態において、検査機構は、HMAC署名によって実証されないRSA署名を拒絶しなければならない。
実施例
Figure 0005357292
13.近似照合プロトコル
一部の実施形態において、リクエストするエンティティの物理的な近似に基づいて、コンテンツ、サービスおよび/または他のシステム資源へのアクセスを限定することは、望ましい場合がある(例えば、保護されたコンテンツが、ユーザのホームネットワークやオフィス総合ビルなどの外ではコピーできないことを示す規則の実施を補助するため)。近似照合プロトコルの実施形態を以下に記載する。これは、近似照合自体の実行を不適当に妨げることなくセキュリティを提供するものである。近似照合プロトコルは、多種多様な状況における応用に役立つ。そのうちの1つは、上記のように、デジタル著作権管理の状況である。しかしながら、以下に記載する近似照合のシステムおよび方法は、応用において、デジタル著作権管理の状況に限定されないことが理解される。例えば、限定するものではないが、本明細書に示す近似照合技術は、ネットワークサービス編成システム(例えば'551出願および/または任意の他の適切な文脈において記載されるようなシステム)の状況においても使用できる。
一実施形態において、近似照合は、第1コンピューティングノードのリクエストに対する第2コンピューティングノードからの応答を第1コンピューティングノードが受信するのに要する時間の量を計測することによって実行される。その時間が定義済みの閾値未満である場合(一般に第2コンピューティングノードが第1コンピューティングノードの一定の物理的距離の範囲内にあることを示す)、近似照合は成功とみなされる。
リクエストおよび/または応答が送信され得る多種多様な異なるネットワーク接続のために、所与の時間は、可能な距離の範囲に対応してもよいことが理解される。一部の実施形態において、リクエスト/応答の交換の往復の時間が定義済みの閾値(例えば8ミリ秒または他の任意の適切な時間)未満である場合、例えば高速ネットワーク接続が使用されているか否かに関係なく、このバリエーションは単に無視され、近似照合は成功とみなされる。このことは、リクエストするノードと応答するノードとが、実際に互いに比較的遠くに離れていることを意味し得る。他の実施態様において、使用されるネットワーク接続のタイプに関する決定を行うことができ、異なる往復時間の必要条件は、それぞれの異なるネットワーク接続に適用され得る。
好ましい実施形態において、近似照合は、アンカー(例えばクライアント)がターゲット(例えばサービス)の近似を照合することを可能にする。一実施形態において、アンカーは、使用される秘密シードを生成し、安全なタイマーを利用する唯一のものであるという点において、プロトコルは非対称である。さらに、ターゲットは、アンカーを信頼する必要はない。近似照合の好ましい実施形態はまた、暗号的に効率的であり、一実施形態において、2つの公開鍵操作のみが利用される。
シードSからのQペアのセットRの生成
一実施形態において、セットRは、以下の式に従ってシードSから入手される:Ri=H2Q-i(S)。ここで、H(M)は、メッセージMにわたるハッシュ関数Hのダイジェスト値であり、n>=lについてHn(M)=H(Hn-1(M))であり、H0(M)=Mである。これは、共有された秘密を生成するための単なる1つの例示的な技術であり、他の実施形態において、本発明の原理から逸脱することなく、他の技術を使用できることが理解される。
一実施形態において、ハッシュ関数Hのために使用されるアルゴリズムはSHA1である(米国商務省/国立標準技術研究所のFIPS PUB180−1.Secure Hash Standardを参照)。但し、他の実施例において、他のハッシュ、メッセージダイジェスト、または機能を使用できることが理解される。
一実施形態において、近似照合は以下の通りに実行される。ここで、「A」はアンカー(例えばクライアント)であり、「B」はターゲット(例えばサービス)である。
(a)Aは、乱数のQペアのセットRを、{R0、R1}、{R2、R3}…{R2Q-2、R2Q-1}のように生成する。
(b)Aは、E(PubB{Q,S})をBに送信する。ここでE(Y(X))は、鍵Yを有するXの暗号化を表し、PubBは、公開鍵/秘密鍵のペアにおけるBの公開鍵を表す。
(c)Bは、上記のような{Q,S}を解読し、Rを事前計算する。
(d)Bは、Aに受信通知を送信することにより、進行準備ができていることを示す。
(e)Aは、ループカウンタkをゼロに設定する。
(f)Aは、T0=現在時刻を測定する。
(g)Aは、{k、R2*k}をBに送信する。
(h)R2*kの値が正しい場合、BはR2*k+1によって応答する。
(i)Aは、D=新しい現在時刻−T0を測定する。
(j)BがR2*k+1の正しい値をAに応答し、およびDが定義済みの閾値未満である場合、近似照合は成功とみなされる。
k+1<Qである場合、Aは、kを増加させ、ステップ(f)に行くことによって、新しい測定を再試行することができる。Q以上の測定を実行する必要がある場合、Aは、新しいセットRを用いて、ステップ(a)から開始することができる。例えば、一部の実施形態において、定義済みの閾値の範囲内で正しい応答が受信されるまで(または一連の呼掛け/応答の定義済みのパーセントを超える定義済みの閾値の範囲内で正しい応答が受信される場合に)、近似照合を繰り返し(または定義済みの回数にわたって)実行することができる。なぜなら、たとえ2つのコンピューティングノードが互いに必要な近似の範囲内にある場合であっても、異常に遅いネットワーク接続、重いトラフィック、ノイズなどのために、Bの応答が遅れることがあるからである。
図36は、上述のプロトコルの実施形態を例示する。ここで、アンカー(A)は、ターゲット(B)がアンカー(A)の許容可能な近似の範囲内にあるか否かを決定する。例えば、図36に示すように、Aは、コンピューティングノード3602を含んでもよい。コンピューティングノード3602は、保護されたコンテンツ(例えば音楽、ビデオ、テキスト、ソフトウェアなど)、および/またはコンテンツアクセスマテリアル(例えばリンク、鍵など)を含み、これらは、リモートコンピューティングノードB3606が、コンピューティングノードB3606に格納された(またはアクセス可能な)保護されたコンテンツにアクセスするために必要とするものである。コンテンツまたはコンテンツアクセスマテリアルに関連する制御は、ノードA3602の一定の近似の範囲内で装置との共有が可能であることを示してもよい(例えば、コンテンツの配信をホームネットワークに制限することを近似する)。それに代わって、またはそれに加えて、そのようなポリシーは、コンピューティングノードA3602のシステムレベルにおいて実施されてもよい(例えば、ホームネットワークまたは社内ネットワークのドメインマネージャを含んでもよい)。すなわち、近似照合は、仮想マシンによって実行される制御プログラムにおける条件である必要はない。これに代わって、近似照合は、単に、コンピューティングノードA3602が、コンテンツまたはコンテンツアクセスマテリアルをコンピューティングノードB3606に送信する前に、操作上のポリシーの問題として必要とするものである。そのような制御および/またはポリシーを実施するために、コンピューティングノードA3602上で実行するソフトウェアおよび/またはハードウェアは、保護されたコンテンツまたはコンテンツアクセスマテリアルをコンピューティングノードB3606に配信するリクエストが行われるたびに、上記の近似照合プロトコルを実行することができる。それに代わって、またはそれに加えて、近似照合は、ノードB3606が必要な近似の中にあるか否かを決定するために、定義済みの間隔で(例えば、一日に一回)実行することができる。近似照合が成功した場合、ノードB3606は、定義済みの期間にわたって(例えば、次回の照合が実行されるまで、または定義済みの時間が経過するまでなど)必要とされる近似の範囲内にあるものとして扱われる。
図36に示すように、AおよびBが任意の初期設定ステップ(例えば上記のステップ(a)〜(e))3604および3608を完了すると、AおよびBは、安全な計時された呼掛け応答交換(例えば上記のステップ(f)〜(i))3610を行うことによって、Aは、Bが許容可能な近似の範囲内にあるか否かを決定できる。
図36に示すように、一実施形態において、A3602は、B3606に、E(PubB{Q、S})(すなわち、Bの公開暗号化鍵(例えばサービス編成の状況においてBによって使用される鍵)によって暗号化された、ペアの数Q、ならびに秘密ペアシードS)を含む設定リクエスト3604を送信する。一実施形態において、{Q、S}は、ネットワークバイト順におけるQ(1バイト)およびS(16バイト)のバイトストリーム結合である。一実施形態において、暗号化は、RSA公開鍵暗号を使用して実行される(例えば、B.KaliskiおよびJ.StaddonによるPKCS#1:RSA暗号仕様バージョン2.0.IETF RFC2437(1998年10月)に記載される)。好ましい実施形態において、PubBは、検査を通してAによってすでにアクセスされており、その証明書は検証されている。図36には、B3606からA3602への設定応答3608が示されているが、他の実施例において、設定応答3608は使用されない。前述のように、設定リクエスト3604を受信した後に、B3606は、好ましくはセットRを事前計算することによって、A3602からの次の呼掛けに対する迅速な応答を容易にする。
図36に示すように、A3602は、Bに対して、[k、R2*k](すなわち、インデックスk、およびシードから算出される対応する秘密)からなる呼掛けリクエスト3612を送信する。一実施形態において、[k、R2*k]は、ネットワークバイト順におけるk(1バイト)およびR2*k(20バイト)のバイトストリーム結合である(トランスポートのためにベース64においてコード化されている)。図36に示すように、一実施形態において、B3606は、A3602に呼掛け応答3614を送信するように操作可能である。呼掛け応答3614は、R2*k+1(すなわち呼掛けリクエスト3612からの対応する秘密)からなる。一実施形態において、R2*k+1は、ネットワークバイト順におけるR2*k+1(20バイト)のバイトストリームであり、トランスポートのためにベース64においてコード化されている。
図37は、保護されたコンテンツへのアクセスを制御するために上述の近似照合プロトコルの実施形態を使用する方法の実施例を示す。図37を参照して、ケーブルまたは衛星コンテンツプロバイダは、ユーザの個人ビデオレコーダ(PVR)3702の定義済みの近似3708の範囲内にあるすべての装置がPVRを通してコンテンツにアクセスすることを可能にするポリシーを有する、と仮定されたい。従って、例えば、PVR3702上で実行するドメインマネージャソフトウェアは、PVR3702を通してコンテンツにアクセスすることをリクエストする装置3704および3706について、近似照合を実行してもよい。図37に示す実施例において、装置3706は、サービスプロバイダのポリシーによって規定される近似3708の範囲内にないので、PVR3702によるアクセスを拒絶され得る。これとは対照的に、装置3704は、近似の範囲内にあるので、アクセスを提供され得る(例えば、装置3704からPVR3702への失効するリンクとともにコンテンツを受信することによって)。それに代わって、またはそれに加えて、リンクは、制御プログラムを含んでもよい。制御プログラムは、PVR3702による近似照合を開始し、装置3704がPVR3702の定義済みの近似3708の範囲を越えて移動する場合、装置3704がコンテンツに更にアクセスすることを拒絶するように操作可能である。
セキュリティ考慮事項
好ましい実施形態において、以下の一部又は全部を順守するような配慮を行うべきである。
・任意のセットRの同一の値kについて、ステップ(f)〜(i)からなるループが繰り返されないこと。
・いずれかの当事者によって予想外のメッセージが受信される場合(以下の場合を含む)、プロトコルが中断されること。
○ステップ(g)において、Bが、R2*kinについて正しくない値を受信する場合。
○ステップ(a)において、Qが、指定された範囲内にない場合。
○kが、ループにおいて繰り返される場合。
○kがQを超過する場合。
それに代わって、またはそれに加えて、ステップ(h)において、Aが、R2*k+1inについて正しくない値を受信する場合、プロトコルは中断され得る。他の実施態様において、一定数のBからの正しくない応答は許容されてもよい。
Qおよび定義済みの時間閾値についての最適な値は、手元にあるアプリケーションの一意な状況(例えば、ネットワークの速度、比較的厳重な近似を確実にする重要性など)に一般に依存することが理解される。従って、インプリメンテーションは、これらの値を構成する際に、好ましくは柔軟性を提供すべきである。一実施形態において、インプリメンテーションは、Qについては64の極小値を、閾値については8msの値をサポートすることが仮定される(現今のネットワーク速度の一部において、8msは数マイルの近似に対応し得る)。
プロトコルセキュリティポリシー
好ましい実施形態において、リクエストおよび応答の交換のために、更なるセキュリティは必要ではない。交換されるメッセージのサイズ(例えば20バイト)、およびそれらの有効なランダム性のために(SHA1ハッシュアルゴリズムまたは他の方法を用いることにより)、たとえ攻撃者がリクエストをどうにか傍受したとしても、攻撃者が正しい応答を決定することは暗号的に実行不可能である。
上記の実施形態は例示的なものであり、本明細書に提示する進歩性のある原理から逸脱することなく、数多くの変更を行うことができることが理解されるべきである。例えば、再帰的にハッシュされた秘密のシードを記載するが、呼掛け/応答のために任意の適切な共有される秘密を使用できる。一実施形態において、共有された秘密は、AからBに送信される暗号化された数/メッセージを単に含んでもよく、呼掛け/応答は、AおよびBが数/メッセージの一部を交換することを単に含み得る(例えば、AはBにメッセージの第1キャラクタを送信し、BはAにメッセージの第2キャラクタを送信する、などである)。そのような技術は、図36に関連して記載する実施形態のセキュリティを欠くことがあるが(メッセージ内のキャラクタは20バイトハッシュよりもはるかに推測が容易だからである)、一部の実施形態において、そのようなレベルのセキュリティが適切であり得る(例えば、特に、ネットワーク遅延の可変性によって、近似照合メカニズムが実際の近似の粗い制御になる場合)。また、他の実施形態において、近似照合を複数回実行することによって、セキュリティを高めることができる。その場合、任意の特定の数字またはビットは比較的に容易に推測できるが、攻撃者が数字またはビットの所与のシーケンスを正しく推測できる可能性は、シーケンスの長さとともに急速に減少する。そのような実施形態において、連続的な正しい応答の定義済みの数(または正しい応答の定義済みのパーセント)よりも多くを、Bが提供できる場合のみに、近似照合は成功とみなされ得る。
実例および説明のために、近似照合プロトコルの更なる例示的な実施例を以下に提供する。この実施例において、第1装置SRCは、通信チャネル(例えばコンピュータネットワーク)を通じて、第2装置SNKと通信する。SNKがSRCからの通信リクエストに応答する所用時間によって測定されるように、SRCおよびSNKが互いの近似の範囲内にあるか否かを確実に決定できることが望ましい。呼掛けまたはプローブメッセージは、SRCからSNKに送信され、SNKは応答メッセージによって応じる。呼掛けの放出と応答の受信と間の期間は、ラウンドトリップ時間またはRTTと呼ばれる。SNKが算出して呼掛けに応答を送信するためにかかる時間に、不必要なオーバヘッドを導入することを回避するために、呼掛け/応答通信を可能な限り軽量にすることが一般に望ましい。特に、呼掛けの放出と応答の受信との間で、SRCまたはSNKによる暗号操作を必要とすることを回避することは、一般に望ましい。
また、SNKのみがSRCからの呼掛けに対して有効な応答を生成できることを確実にするために(例えば、あたかもSNKが応答したかのように、第三者がSRCからの呼掛けを傍受して応答を送信できる、という介入者攻撃を回避するために)、プロトコルは、以下の通りに進行することができる。
(1)SRCは、秘密を作成する。この秘密は、ランダム数または疑似ランダム数の1つ以上のペアからなる。
(2)SRCは、秘密をSNKに送信する。プロトコルのこの部分は、時間に影響されやすくない。秘密は、SRCおよびSNKによって機密に保たれる。秘密はまた、SNKのみがそれを知っていることを確実にする方法で送信される。このことは、SRCとSNKとの間の安全な認証済みチャンネルを通して秘密を送信することを一般に含む(例えば、SRCは公開鍵を用いて秘密データを暗号化することができ、SRCはSNKのみが対応する秘密鍵を有することを知っている)。秘密データは、上述のランダム数または疑似ランダム数のペアである必要はない。そのようなペアが使用される実施形態においてさえも、このステップにおいて送信される秘密データは、SNKが数のペアを算出または演繹できるのに十分な情報であるだけでよい。例えば、秘密のデータは、ランダムシード数であり得、シードされた疑似乱数ジェネレータを使用して、そこから疑似乱数の1つ以上のペアが生成され得る。
(3)SNKが呼掛けを受信する準備ができていることをSRCが知ると(例えばSNKは秘密データを受信および処理した後にREADYメッセージを送信してもよい)、SRCは呼掛けメッセージを作成する。呼掛けメッセージを作成すること。例えば、好ましい実施形態において、SRCは、乱数のペアのうちの1つを選択する。複数のペアが使用される場合、呼掛けメッセージデータは、どのペアが選択されたか、ならびにそのペアにおける2つの数のうちの1つを示す情報を含む。
(4)SRCは、現在時刻(T0)の値を測定する。その直後に、SRCは、呼掛けメッセージ(暗号化またはデジタル署名のためには必要ではない)をSNKに送信し、応答を待つ。それに代わって、SRCは、呼掛けメッセージを送信する直前に、現在時刻(T0)を測定することができる。但し、任意の付随する暗号操作(例えば暗号化、署名など)を実行がした後が好ましい。
(5)SNKは、呼掛けを受信する。SNKは、そのなかから、すでに受信したペアのうちの1つを識別することができる。SNKは、呼掛けにおける乱数がペアの一部であることを照合し、そのペアの他の乱数の値を含む応答メッセージを構成する。
(6)SNKは、応答メッセージをSRCに送信する(暗号化またはデジタル署名のためには必要ではない)。
(7)SRCは、応答メッセージを受信し、現在時刻(T1)の値を測定する。ラウンドトリップ時間RTTは、T1〜T0に等しい。
(8)SRCは、応答において受信した数が、呼掛けのために選択したペアの他の値と等しいことを検証する。数が一致する場合、呼掛け応答は成功であり、SRCは、SNKがラウンドトリップ時間によって示される近似の範囲内にあることを確信できる。数が一致しない場合、SRCはプロトコルを中断することができる。または複数のペアが共有され、使用されなかった少なくとも1つのペアがある場合、SRCはステップ(3)に戻り、異なるペアを使用することができる。
本発明の原理から逸脱することなく、上述の例示的な近似照合プロトコルに対して多くのバリエーションが可能であることが理解される。例えば、限定するものではないが、異なる暗号化アルゴリズムを使用すること、異なる共有された秘密を使用すること、などができる。
14.セキュリティ
本明細書に記載するシステムおよび方法の現実的応用において、セキュリティは、様々な異なる技術を使用して、様々な異なるレベルで提供することができる。本明細書における説明は、潜在的に複雑な仕事の関係を効率的に調整する際の、主にDRMエンジンおよび関連するホストアプリケーションの設計および操作に集中する。DRMエンジンおよびホストアプリケーションが意図される通りに動作するときに、コンテンツは、それに関連するライセンス条件の施行によって、無認可のアクセスまたは他の使用から保護される。
DRMエンジンおよび/またはDRMエンジンが実行する環境(例えばDRMエンジンが対話するアプリケーションおよびハードウェア)を、悪意のある不正操作または変更から保護することは、セキュリティ技術の任意の適切な組み合わせを使用して行うことができる。例えば、暗号メカニズム(例えば、暗号化、デジタル署名、デジタル証明書、メッセージ認証コードなど)を使用することによって、例えば本明細書の他の場所に記載するように、DRMエンジン、ホストアプリケーションおよび/または他のシステムソフトウェアまたはハードウェアを、不正操作および/または他が攻撃から保護することができる。構造的および/または戦術的なセキュリティ対策(例えば、ソフトウェア混乱、自己検査、カスタマイズ、ウォーターマーク、反デバッグ、および/または他のメカニズム)も同様にできる。そのような技術の代表例は、例えば、米国特許第6,668,325Bl号明細書(ソフトウェアセキュリティを高めるための混乱技術)、本願と同一譲受人に譲渡された米国特許出願第11/102,306号明細書(米国特許出願第2005−0183072−A1号明細書として公開)、米国特許出願第09/629807号明細書、米国特許出願第10/172,682号明細書(米国特許出願第2003−0023856−A1号明細書として公開)、米国特許出願第11/338,187号(米国特許出願2006−0123249−A1号明細書として公開)、および米国特許第7,124,170号Bl号明細書(安全な演算処理装置のシステムおよび方法)に見いだされ、それぞれの全体が参照によって本明細書に援用されている。それに代わって、またはそれに加えて、物理的セキュリティ技術(例えば、比較的にアクセスしにくいメモリ、安全なプロセッサ、安全なメモリ管理ユニット、ハードウェアによって保護されたオペレーティングシステムモードなど)は、セキュリティを更に高めるために使用することができる。そのようなセキュリティ技術は、当業者には周知であり、これらの技術の一部または全部の任意の適切な組合せ、またはこれらの技術を用いない組合せは、所望のレベルの保護および/または手元にある特定のアプリケーションの詳細に依存して使用できる、ということが理解される。従って、一定のセキュリティ対策(例えば鍵導出技術、デジタル署名技術、暗号化技術など)を一定の実施形態に関連して本明細書に記載するが、すべての実施形態においてこれらの技術を使用する必要があるわけではないことが理解される。
セキュリティのさらに別の形態は、システムの組織的な設計および操作によって、および参加者の法的および社会的な規制によって提供することができる。例えば、個人ノード、キーイングマテリアル、保護されたコンテンツなどを入手するために、装置またはエンティティは、システム仕様および必要条件の順守を契約的に同意することを要求されてもよく、エンティティのシステム要件のコンプライアンスを検証できる証明プロセスを提出することなどを要求されてもよい。例えば、装置またはアプリケーションは、環境における他のインプリメンテーションと互換性のある方法でDRMエンジンを実現することを要求されてもよく、および/または一定のタイプまたはレベルの不正操作抵抗手段または他のセキュリティを提供することを要求されてもよい。装置のまたは他のエンティティがそのような必要条件を遵守することを証明するデジタル証明書を発行することができ、これらの証明書は、装置またはエンティティがシステムに関与することを許可する前に、またはアクセスの継続を許可する条件として検証できる。
進歩性のある一連の作業と関連して使用できるセキュリティ技術に関する、更なる非限定的な情報を、以下に提供する。
システムセキュリティ
一部の実施形態において、システム設計者は、更新可能性、拒絶および/または改善技術の組み合わせを使用することを選択することにより、装置、アプリケーション、およびサービスへの攻撃およびその危殆化から生じ得るリスクを管理し脅威を減らすことができる。脅威を減らすために使用できる様々な技術的メカニズムの実施例を以下に示す。
更新メカニズムは、少なくとも2つの異なる目的において役割を果たすために使用できる。第1に、それらを使用して、信頼されるシステムエンティティに最新の情報を伝達することにより、信頼できないシステムエンティティに対するアクセスまたはサービスを拒絶することができる。第2に、更新メカニズムは、信頼できないエンティティが任意の危殆化された構成要素をアップデートすることによって信頼された状態を回復することを可能にする。拒絶による防護措置は、以下の行動の1つ以上を呈するものとして更に特徴づけられる。
・証明の取り消しまたは無効化(一般に、一部のエンティティをブラックリストに記載することによる)。
・暗号メカニズムまたはポリシー施行メカニズムを適用することによるアクセスの除外または拒絶。
・証明に結合された識別または一部の他の属性に基づく、アクセスまたはサービスの回避または拒絶。
・時間的イベントに基づく、証明または特権の失効または無効化。
例えば、拒絶メカニズムは、装置クローン化、偽装攻撃、プロトコル失敗、ポリシー施行失敗、アプリケーションセキュリティ失敗、および陳腐化した情報または疑わしい情報、などの脅威に対抗するために使用されることができる。
以下の表は、潜在的な脅威の例、それらがもたらすリスクの一部、および脅威を軽減してシステムセキュリティを更新するメカニズムを提供する。
Figure 0005357292
取り消し
取り消しは、エンティティをブラックリストに記載することに依存する改善メカニズムとみなすことができる。一般に、無効にされるものは、公開鍵証明書などの証明である。証明を無効にすると、ブラックリストはアップデートされる必要があり、更新メカニズムを使用してアップデートが伝達されるので、依存する当事者はそこから利益を得る。
従って、例えば、装置、ユーザ、および/または他のエンティティは、コンテンツまたはサービスを消費するために必要な情報を与えられる前に、識別証明書、他の証明および様々なセキュリティデータを示すことを要求され得る。同様に、クライアントがサービスを信頼するために、サービスはクライアントにその証明を提供する必要がある。
サービスにアクセスするために必要な情報をエンティティが効果的に無効にできる方法の例は、以下を含む。
・証明書失効リスト(CRL)。
・証明およびデータ有効性サービス(例えばオンライン証明書状態プロトコル(OCSP)応答側)。
・証明およびデータの自己破壊のためのコマンド。
証明書失効リスト(CRL)
失効リストは、識別証明書、ライセンス、リンク、および他のセキュリティアサーションを無効にするために、異なるエンティティにより用いられることができる。このメカニズムは、サービスの危殆化に起因する状況を改善するために最も有効である。CRLを配信するために多くの技術を使用することができる。例えば、一部のシステムは間接的なCRLを使用してもよい。その結果、単一のCRLがエコシステム全体を管理する。それに加えて、エンティティは、所有権のCRLを広告(または公表)することができ、および/または更新サービスを購読することができる。CRLは、ウィルス様式においてピアツーピアで配信され得、および/または携帯機器は接続されると公開されたCRLを受信することができる。'551出願に記載されるサービス編成技術も、この目的のために使用できる。
有効性サービス
有効性サービスは、証明の状態および他のセキュリティ関連データに関する最新の情報を提供するために使用できる。有効性サービスは、依存する当事者に代わってアクティブ評価操作を実行することができ、または依存する当事者に代わってセキュリティ情報を管理するために使用され得る。アクティブ有効性サービスの例は、証明または属性の有効性を照合できるサービスである。セキュリティ情報を管理する有効性サービスの例は、CRLまたはセキュリティポリシー更新を宣伝し、または安全なタイムサービスを提供するサービスである。有効性サービスの使用は、依存する当事者がガバナンス決定を通知するために最新のデータを有することを確実にするのを補助することができる。
一般に、すべてのシステムエンティティが、証明およびセキュリティデータの有効性に関する最新の情報を必要とするというわけではない。例えば、ライセンスを使用したり新しいライセンスを入手したりするたびに、すべての消費者向け装置が、ライセンスサーバの証明書チェーンを検証するためにオンライン証明書状態プロトコル(OCSP)サービスを使用するというわけではない。しかしながら、ライセンスサーバは、購読者証明の有効性を照合するために、ある程度の頻度でOCSPサービスを使用してもよい。ポリシー(容易にアップデートされ得る)は、どのようなサービスをいつ使用しなければならないかを決定することができる。ポリシーを動的に更新する機会を提供することによって、ライセンスサーバは、操作上の変更に適合することができる。従って、セキュリティポリシーは、経験、技術的発展、および市場要因に基づいて進化することができる。
セキュリティオブジェクトの有向自己破壊
エンティティのセキュリティ処理の完全性が疑わしくない場合、エンティティによる証明およびデータの自己破壊は適切である。このオプションは、利用可能な場合には、最も簡単で迅速かつ効率的な失効の方法であることが多い。完全性が侵害される疑いがほとんどまたはまったくなく、抹消が完了したという検証とともに、抹消のための特定の方向を可能にするプロトコルを、両方向通信がサポートする場合、これは特に有用であり得る。
抹消または使用停止にされることが有益であるセキュリティオブジェクトが数多くある。例えば、装置がドメインから離れたり、またはコンテンツライセンスがタイムアウトしたりするときに、鍵を含んでいてアクセスにコンテンツするために使用できる関連オブジェクトが抹消されることは有益である。本明細書の他の場所で更に詳細に記載するエージェント制御プログラムは、自己破壊メカニズムを実現するために便利である。エージェントは、保証格納域(例えば状態データベース)における状態を抹消し、ドメイン帰属関係における変化に影響を及ぼし、または(例えば帰属関係またはポリシーの変化により)もはや使用可能でなくなった鍵を削除するように、巧みに作ることができる。
除外
除外は、悪い行為者(または悪い行為者のグループ)が商品およびサービスの将来の消費に関与することを妨げる改善メカニズムである。除外がもたらす苛酷な結果のために、除外は一般に、状況によって正当化されるときに、最後の手段としてのみ使用される。除外は、悪い行為者をブラックリストに効果的に記載するメカニズムに依存し、それによって悪い行為者が媒体および媒体関連サービスを消費することを禁ずる。ブラックリストの宣伝は、この改善を有効にする更新メカニズムに依存する。しかしながら、除外は、更新メカニズムを提供することによって、必ずしも悪い行為者に信頼された状態を回復させるわけではない。
鍵除外
鍵除外は、任意の所与の時間において、受信器の一部のサブセットを将来のコンテンツを解読する能力から論理的に除外するという決定ができるように、受信器のセットに鍵情報をブロードキャストするために使用される鍵管理メカニズムである。このことは、ブロードキャストキーブロック(BKB)を構成する効率的な技術を使用することによって、アクティブにされる。BKBは、受信器の大きいグループの各構成員がコンテンツを解読するために必要な情報を含む。BKBは、容易にアップデートできる方法で構築され、グループの1以上の構成員をコンテンツ解読能力から除外する。換言すれば、BKBの設計は、当局が新しいBKBによってシステムをアップデートすることを可能にするので、コンテンツプロバイダは、アクセスを有する場合であっても装置の対象セットをBKBの利用から具体的に除外することができる。
このメカニズムは、特にクローニング攻撃に対して有効である。クローニング攻撃において、著作権侵害者は、合法的な装置を逆行分析し、その鍵を抽出し、鍵のコピーをクローン装置に展開する。クローンは、ガバナンスモデルを必ずしも順守するわけではないという点を除いて、あたかもオリジナルのように外部で作動する。危殆化が発見されると、危殆化された装置およびそのクローンすべてを除外するようにアップデートされたBKBを配備することができる。しかしながら、鍵除外は、一部の記憶、トランスポート、および計算のオーバヘッドを招くので、一部の状況においては他の方法よりも効率的でない。コンテンツがブロードキャストされない場合、またはバックチャネルがある場合に、このことは特に真実である。
回避
回避は、除外と非常に類似した改善メカニズムであるが、その影響は除外ほど苛酷ではない。基本的に、回避は、実行時ポリシー決定によってサービスを拒絶するための手段である。鍵除外は、有向自己破壊またはアクセス拒否によって装置の機能を使用停止にする、より強引な方法である。これに代わって、回避は、装置へのサービス供給をサービスプロバイダに拒絶させることによって装置を使用停止にする、単純な方法を提供する。現在の傾向は、外部的に提供されるサービスを使用して装置の値を拡張することに向かっているので、回避は、より有効なセキュリティ対策になる。
回避する装置は、ポリシーによって駆動され、ポリシーが必要とする適切な証明の全てを必ずしも生成しないエンティティ(例えば、クライアント、サーバ、および特定の役割のプレーヤ)を差別するために使用できる。ポリシーは、例えば、エンティティが最新のセキュリティアップデートを実施したことをエンティティが示すことを要求し得る。従って、回避は、失効の結果、または一部の特定のアクションを取れない結果であり得る。回避は、検査サービス、および'551出願に記載されるようなサービスを使用して、ピアツーピア様式において容易にすることができる。また、データ証明サービス(例えば有効性サービスのインスタンス)は、ポリシー施行時間において回避を実行することができる。システムエンティティを回避した後で、サービスのポリシーに従うことができない特定の証明またはオブジェクトを通知することができる。これにより、回避されたエンティティをトリガすることによって、適切なサービスインタフェースを通してオブジェクトを更新することができる。
失効
失効は、証明またはオブジェクトを無効にする際に一部の時間的イベントに依存する、改善メカニズムである。失効は、媒体または媒体サービスに対する一時的なアクセスを有効にする際に効果的である。これらが失効すると、ガバナンスモデルは、アクセスがもはや許可されないことを確実にする。失効の有効活用は、更新メカニズムを必要としてもよい。それによって証明またはオブジェクトをリフレッシュすることができ、媒体または媒体サービスに対するアクセスを継続することが可能になる。
証明の失効
認証された鍵は、依存する当事者を保護するために割り当てられる様々な失効属性を有することができる。証明の失効を利用することによって、証明書が失効したエンティティが、サービスを拒絶され、鍵ロールオーバおよび鍵更新手順と連動して使用されることを確実にすることができる。エンティティが広域ネットワークに頻繁に接続されると予想される場合、最も有効な方法は、証明および他のセキュリティデータを定期的に更新することである。もう1つの最も有効な方法は、これらのオブジェクトの有効期間をなるべく適切に短く保つことである。様々な技術(例えば、有効性を照合するポリシーにおける有効期間と猶予期間を部分的に重複させること)を使用することによって、遷移の際の滑らかな操作を確実にすることができる。短い有効期間はまた、CRLのサイズを低減するのに役立つ。
リンクの失効
前述のとおり、リンクオブジェクトに有効期間を割り当てることができる。失効すると、リンクは無効であるとみなされ、DRMエンジンは、そのグラフの構造の中にそのリンクがないものとみなす。このメカニズムは、商品およびサービスへの一時的なアクセスを有効にするために使用することができる。リンクは更新できるので、ポリシーによって許可される限り、媒体への継続的アクセスが認可され得る。一実施形態において、リンクは、比較的に軽量で自己保護されたオブジェクトであるので、ピアツーピアプロトコルを介して容易に配信できる。
更新可能メカニズム:アプリケーションおよびポリシー更新可能性
効率的な更新可能性は、プロトコル失敗に対する改善を迅速に展開することを一般に伴う。このことは、セキュリティアプリケーション(DRMシステムを含む)に見られる顕著なセキュリティ問題であることが多い。ソフトウェアアップデートは、ビジネス論理およびセキュリティプロトコルを更新するために使用することができる。アプリケーションが、セキュリティポリシーおよび信用ポリシーをアプリケーション論理から分離するように設計されている場合、分離メカニズムを用いてポリシーをアップデートすることができる。これは、より危険の少ない方法である。実際に、ピアツーピア公開メカニズムは、ポリシーを迅速にアップデートするために使用できる。そうではない場合、アプリケーションデプロイヤのソフトウェアアップデート方法は、セキュリティおよび信用ポリシーをアップデートするために使用できる。
正しいジョブのために正しいツールを使用すること
可能な場合には比較的に軽量のツールを使用することが一般に望ましい。限定された有効期間と有効日を照合するポリシーとを有する証明を使用することは、エンティティの全体の母集団を対処可能なサイズに保ち、CRLをあまりに急速に増大させる必要性を排除するのに役立つ。鍵へのアクセスからエンティティを除外する代わりに、エンティティを回避することによって、BKBの存続期間を延長することができる。さらに、エンティティの回避は、一時的であり状況によって変化できるきめが細かいポリシーを有効にするという利点を有する。異なるCRLは、異なる役割プレーヤに対して特定のタイプの証明を追跡するものであり、BKBの代わりに使用することができる。BKBがもっとも有効に展開できるのは、クローンされた受信器を扱う場合などである。オンライン有効性サービスが、時間および努力の合理的な投資に対する見返りを提供することが期待される場合、ポリシーは、オンライン有効性サービスの使用を導くことができる。ここで、新しい証明は非常に重要であり、より遅い失効メカニズムは不適切である。ノードが完全性を有する可能性が高く、正しいことを行うと期待される場合、およびライセンスまたはセキュリティオブジェクト(例えば購読またはドメインリンクのためのリンク)を無効にする必要がある場合、合理的な方法は一般に、ノードにオブジェクトを抹消するように通知することである。こうした状況において、ライセンスが無効であることを全体に報告する必要はなく、BKBを展開したりドメインを再度キー入力したりする必要はない。ローカルなポリシーまたは命令的コマンドによって駆動される自己破壊は、失効のためのより効率的な方法の1つである。
様々な失効、更新、改善、および他の技術および実行方法を記載したが、異なる状況は異なるツールを必要とし、本明細書に記載するシステムおよび方法の好ましい実施形態は、これらの技術の一部の任意の適切な組合せを用いて、またはこれらの技術を用いずに、実施できることが理解される。
ネットワークサービスセキュリティ
以下の説明は、実施形態に関連し得るセキュリティ考慮事項および技術の一部を例示するものであり、この実施形態において、上記のDRMエンジンおよびアプリケーションは、551出願に記載されるようなネットワーク化されたサービス編成システムおよび方法と関連して使用される。
本明細書に開示されるようなDRMエンジンおよびアーキテクチャを使用するDRMシステムの実際的なインプリメンテーションは、コンテンツおよびDRMオブジェクトにアクセスするためのネットワーク化されたトランザクションを実行することが多い。そのような状況において、551出願に記載されるシステムおよび方法は、なかでもメッセージレイヤセキュリティ(認可属性(役割)のためのエンティティ認証およびフォーマットを含む)を標準化するために使用できる。
説明のために、DRMシステムにおいて生じるトランザクションは、アクセス、獲得、または操作される情報のタイプに基づいて、少なくとも2つの一般的なカテゴリに分けることができる。
コンテンツアクセストランザクションは、DRMシステムによって保護される媒体、企業コンテンツ、または他の機密情報に対する直接アクセスまたは操作に関わる。コンテンツアクセストランザクションの例は、保護されたビデオクリップをレンダリングすること、保護されたオーディオトラックのコピーをコンパクトディスク焼きつけること、保護されたファイルを携帯機器へ移動させること、機密文書を電子メールで送信することなどを含む。コンテンツアクセストランザクションは、コンテンツ記憶保護キーへの直接アクセスを一般に含み、ユーザの指示の下で消費の時点において実行される。
オブジェクトトランザクションは、保護されたコンテンツへのアクセスを何らかの方法で管理するDRMシステムによって規定されるオブジェクトについて、ユーザまたはシステムが獲得または対話をするトランザクションである。そのようなオブジェクトは、DRMライセンス、帰属関係トークン、失効リストなどを含む。コンテンツアクセストランザクションを実行するのに必要な付帯事実の全てが利用可能になる前に、1つ以上のオブジェクトトランザクションが通常必要とされる。オブジェクトトランザクションは、消費の時点においてDRMオブジェクトをアセンブルするために、一部のタイプの通信ネットワークを使用することによって、一般に特徴づけられる。
これらの2つのタイプのトランザクションは、大部分のDRMシステムに一般に関連するガバナンスの2つの点を規定する。図38は、DRM対応クライアント3800が適切なDRMライセンスサービス3804からDRMライセンス3802をリクエストする対話処理の代表的なペアを示す。図38に示す実施例において、DRMライセンス3802は、DRMライセンスサービス3804からクライアント3800まで送信され、そこでコンテンツ3806へのアクセスを提供するために評価される。
DRMシステムは、コンテンツアクセスおよびオブジェクトトランザクションのいずれもが、コンテンツへの認可されていないアクセス、およびコンテンツを保護するオブジェクトの作成を防止する態様において実行することを一般に要求する。しかしながら、2つのタイプのトランザクションに対するセキュリティ懸念は、おのずと異なる。例えば、以下の通りである。
コンテンツアクセストランザクションは、人間主体を認証すること、安全なレンダリングカウントを照合すること、コンテンツ保護鍵を導出するためにDRMライセンスを評価することなどを必要としてもよい。コンテンツアクセストランザクションの合法的な実行に対する大きな脅威は、オブジェクトおよびその中のデータを保護する不正操作防止の境界の違反である。
オブジェクトトランザクションは、通常、DRMオブジェクトを必要とするエンティティと、それを提供できるエンティティとの間に、通信チャネルを含む。このように、オブジェクトトランザクションは、以下のような通信ベースの脅威に直面する。すなわち、介入者攻撃、リプレイアタック、サービス拒絶攻撃、認可されていないエンティティが合法的に有するべきでないDRMオブジェクトを獲得する攻撃である。
一般に、オブジェクトトランザクションは、2つの対話するエンティティの認証、それらの間で交わされるメッセージの保護、およびトランザクションの認可を含む。そのようなトランザクションの主な目的は、コンテンツアクセストランザクションを実行できるように、合法的なソースから完全性で保護されたDRMオブジェクトを集めることである。DRMオブジェクトを入手するメカニズム、およびそれらを入手するために使用する付帯事実情報は、コンテンツアクセストランザクションの視野とは基本的に無関係である。これらのメカニズムは、コンテンツアクセス自体にとって不可視であり得る(好ましくは不可視であるべきである)。好ましい実施形態において、この自然な分離は、階層通信モデルにつながる。階層通信モデルは、信頼された通信フレームワークを、その上に構築されるアプリケーションと区別する。
図38に示す簡略化されたライセンス獲得および消費の例は、現実的応用において一般に重要な一部の詳細を不明確にする。例えば、DRMライセンスをリクエストするエンティティが実際に合法的なDRMクライアントであり、かつ認可されていないライセンスを入手することを試みるおよび悪意のあるエンティティでないことを、DRMライセンスサービスが検証する方法、またはネットワークバンド幅および処理パワーを消費することによって合法的なクライアントに対するサービスを、DRMライセンスサービスが拒絶する方法を、この例は示さない。また、クライアントおよびサービスを接続する通信チャネルを通して機密情報が移動する際に、機密情報の機密性および完全性を保護する方法も示されない。
図39に、この例示的なトランザクションのより詳細な図を示す。図39を参照して、点線は、アプリケーションレイヤコンテンツレンダリングクライアント3800の視点からDRMライセンスサーバ3804への論理トランザクションを表す。下のスタック3900は、2つのエンドポイントの間の信頼および保護された配信を確実にするために使用される処理のレイヤを表す。
図39において、レンダリングクライアント3800は、DRMライセンスサーバ3804からライセンス3802をリクエストする。図の点線は、情報のオリジナルソースおよび最終消費者が、コンテンツレンダリングクライアント3800およびDRMライセンスサーバ3804であることを示す。しかしながら、実際には、メッセージペイロードは、2つのエンドポイントを接続する、アプリケーションレイヤ論理とセキュリティが施されていない通信チャネル3902との間に配置される処理の、いくつかのレイヤによって処理されてもよい。
アプリケーションレイヤ構成要素を、セキュリティが施されていない通信チャネルから切り離す、処理レイヤは、集合的にセキュリティスタックと呼ばれる。セキュリティスタックは、信頼されたエンドポイントの間のメッセージの、完全性に保護された機密の配信を確実にする、安全なメッセージングフレームワークとみなし得る。階層スタックモデルは、以下のような利点を提供する。
(1)アプリケーションレイヤ論理の設計者は、エンドポイントを接続する根本的な安全な通信メカニズムを開発するための努力を費やす必要はない。信頼されたメッセージングインフラストラクチャは、ひとたび設計されれば、サポートするアプリケーションレイヤ論理に関係なく、多くの異なる状況において展開することができる共通設計パターンである。
(2)メッセージングフレームワーク自体は、伝達するメッセージの正確なセマンティクスには寛容なままであり得て、通信関連の攻撃、およびメッセージングエンドポイントの確実性に対する攻撃を防止することにその努力を集中することができる。
一実施形態において、後述するように、セキュリティスタックは、処理のいくつかの異なるレイヤからなる。一実施形態において、551出願に記載されるサービス編成のシステムおよび方法は、セキュリティスタックの操作の一部または全部を提供するために使用することができる。
認証
一実施形態において、メッセージングエンドポイントは、認証されてもよい。認証は、所与のエンドポイントが、この目的のために信用された当局によって有効な名前を与えられたことを、他のエンドポイントに対して示すプロセスである。名前をつける当局は、トランザクションにおける依存するエンドポイントによって信頼されるべきである。そのような当局を確立することは、信頼された技術を展開する組織によって一般に保証される。
有効な名前の所有権を示すための共通メカニズムは、公開鍵暗号およびデジタル署名を使用する。この方法を使用して、エンティティは、3つの情報を提供される。
(1)エンティティに識別子を提供する識別名。
(2)公開鍵および秘密鍵からなる非対称鍵のペア。
(3)秘密鍵の保有者が所与の識別名を有することを表明する、デジタル署名された証明書。
証明書は、識別名および秘密鍵を結合する。情報に署名する秘密鍵を使用するエンティティは、所与の識別名を有することを信頼される。署名は、公開鍵のみを使用して検証することができる。例えば、認証は、X.509v3標準に基づくことができる。
一実施形態において、認証された秘密鍵の所有権を示すことができるエンティティは、証明書に示される識別名を有することを信頼されるので、情報に署名するために使用される秘密鍵を保護することは、重要な考慮事項になる。実質的に、秘密署名鍵を使用する能力は、識別名によって識別されるエンティティの境界を規定する。アプリケーションレイヤにおいて、送信者および受信者は、メッセージが信頼された対応物に源を発することを知っている必要がある。そのように、一実施形態において、アプリケーションレイヤ論理そのものが認証されたエンティティの一部であることは重要である。このために、一実施形態において、これに依存するセキュリティスタックおよびアプリケーションレイヤは、好ましくは信用境界に入れられる。その結果、信用境界の中に含まれるサブシステムは、エンティティの個人メッセージ署名鍵に対するアクセスを共有すると想定される。
認可
上述した認証メカニズムは、配信されたメッセージングエンドポイントに対して、その通信者の識別が信頼できるということを証明する。多くの用途において、この情報はあまりに粗い。一定のトランザクションについてポリシー決定を行うために、機能およびエンドポイントの特性に関するより詳細な情報が必要であり得る。例えば、図38の状況において、コンテンツレンダリングクライアントは、認証されたエンドポイントと通信しているということのみならず、有効なDRMライセンスオブジェクトを提供する能力があるとみなされたサービスと通信しているか否かを知る必要があり得る。
セキュリティスタックの実施形態は、認可メカニズムを介して認証されたエンティティについてよりきめが細かい属性に基づくポリシーを表明、伝達、および適用するためのメカニズムを提供する。このメカニズムを使用して、認証証明をすでに有するエンティティは、機能の命名されたセットをエンティティの識別名に関連づける役割アサーションを割り当てられる。例えば、役割名は、DRMクライアントおよびDRMライセンスサーバについて規定することができる。
命名された役割は、エンティティによって保持される特定の機能を伝えるように意図される。実際には、エンティティの識別名と役割名との関連を表明することによって、エンティティに役割を付与することができる。一実施形態において、鍵を識別名に関連づける認証証明書と同様に、認可のために使用される役割アサーションは、名前発行者と異なる信頼された役割当局によって署名される。エンティティの内部で、メッセージングエンドポイントのアプリケーションレイヤにアクセスを認可する条件として、役割アサーションは、認証証明とともに検証される。
エンティティは、構築されるアプリケーションによって必要とされるだけの数の役割属性を保持してもよい。図40の実施例は、複数の役割を有するエンティティを示す。1つはDRMクライアントとして機能する能力を示す役割であり、2つはサービスの役割である。
例えば、1つのエンティティは、同時に、DRMクライアント、DRMオブジェクトプロバイダ、およびセキュリティデータプロバイダであり得る。一実施形態において、実体属性に関するアサーションのために、SAML 1.1が使用される。
メッセージセキュリティ
セキュリティスタックの最下層は、メッセージセキュリティレイヤであり、完全性、機密性、およびフレッシュネス保護をメッセージに提供し、通信チャネルへの攻撃(例えばリプレイアタック)のリスクを緩和する。メッセージセキュリティレイヤにおいて、以下の通りである。
・アプリケーションレイヤプロセス間のメッセージは、エンティティの個人メッセージ署名鍵を使用して署名され、完全性保護および介入者攻撃に対する抵抗を提供する。
・メッセージは、デスティネーションエンティティによって保持される公開鍵を使用して暗号化される。このことは、意図されていない受信者が移動中にメッセージを傍受して読み取ることができないことを保証する。
・ノンスおよびタイムスタンプは、メッセージに追加される。これにより、リプレイアタックにイミュニティを提供し、メッセージングエンドポイント間の生存性の証明を容易にする。
・DRMエンジンの信頼された時間をアップデートするためにサーバタイムスタンプを使用する。
1つの例示的実施形態において、AES共通暗号化、RSA公開鍵暗号、SHA−256 署名ダイジェスト、およびメッセージに他のアルゴリズムを表示するメカニズムのためのサポートが提供される。
15.ブートストラッププロトコル
一部の実施形態において、ブートストラッププロトコルは、エンティティ(例えば装置およびソフトウェアクライアント)に初期機密構成データを配信するために使用される。例えば、エンティティが、暗号プロトコルを使用して、より大きいネットワークまたはシステムに接続し、他のエンティティと通信することを望む場合、エンティティは、個人化されたデータ(鍵(共有鍵、秘密鍵、および公開鍵)のセットを含む)によって構成される必要があり得る。個人化されたデータによってエンティティを予め設定することが不可能または非実際的である場合、暗号プロトコルを使用してエンティティ自体を「ブートストラップする」必要がある。
以下に記載する例示的なプロトコルは、鍵のセットおよび他のコンフィギュレーションデータを用いてエンティティをブートストラップするための基盤として、共有された秘密を使用する。以下のセクションにおいて、以下の表記法を使用する。
・E(K、D)は、鍵Kを用いた一部のデータDの暗号化である。
・D(K、D)は、鍵Kを用いた一部の暗号化されたデータDの解読である。
・S(K、D)は、鍵Kを用いた一部のデータDの署名である。これは、公開鍵署名またはMACであり得る。
・H(D)は、データDのメッセージダイジェストである。
・V(K、D)は、鍵Kを用いた一部のデータDにわたる署名の検証である。これは、公開鍵署名またはMACの検証であり得る。
・CertChain(K)は、公開鍵Kに関連する証明書チェーンである。Kの値は、チェーンの第1証明書に含まれる。
・CertVerify(RootCert、CertChain)は、証明書チェーンCertChain(チェーンの第1証明書に見いだされる公開鍵を含む)が、ルート証明書RootCertの下で有効であるという検証である。
・A|B|C|…は、個々のバイト列A、B、C、…を連結することによって得られるバイト列である。
・CN(A)は、Aについての標準的なバイト列である。
・CN(A、B、C...)は、複合フィールドA、B、Cについての標準的なバイト列である。
1.38.初期状態
1.38.1.クライアント
一実施形態において、クライアントは、(製造時間および/またはファームウェア/ソフトウェアにおいてプレロードされる)ブートストラップトークンの以下のセットを有する。
・ブートストラッププロセスのための信用のルートである一つ以上の読取り専用証明書:BootRootCertificate。
・一つ以上の秘密ブートストラップ認証キー:BAK(共有される)。
・任意の秘密ブートストラップシード生成鍵(各クライアントに一意である):BSGK。
クライアントがランダムデータの良好なソースを有する場合、このシードは必要でない。
・クライアントが機密鍵を獲得するためにブートストラップサービスに与える必要のある一部の情報:ClientInformation(例えば、ClientInformationは、装置のシリアルナンバ、製造業者の名前などを含むことができる)。この情報は、属性のリストから成る。各属性は、ペア(名前および値)である。
異なる信用ドメインを必要とする異なるブートサーバを用いてブートプロトコルに関与することができるために、クライアントは、複数のBootRootCertificate証明書およびBAK認証キーによって構成され得る。
1.38.2.サーバ
一実施形態において、サーバは、以下のトークンを有する。
・クライアントのブートストラップ認証キーのうちの少なくとも1つ:BAK(共有された秘密)。
・署名のために使用される公開鍵/秘密鍵のペア:(Es、Ds)。
・ルート証明書BootRootCertificateのうちの1つの下で有効である証明書チェーン:ServerCertificateChain=CertChain(Es)。
・暗号化のために使用される公開鍵/秘密鍵のペア:(Ee/De)。
1.39.プロトコル記述
ブートストラッププロトコルの例示的実施形態を、図41に示し、以下に記載する。プロセスの最中(例えば、署名または証明書チェーンを検証する際)の失敗は、エラーにつながり、プロトコル進行を停止する。
BootstrapRequestMessage
クライアントは、サーバにリクエストを送信する。リクエストは、クライアントが、ブートストラップセッションを開始することを望み、一部の初期パラメータ(例えばプロトコルバージョン、プロファイルなど)、ならびにセッションID(リプレイアタックを防止するため)、および関与できる信用ドメインのリストを提供することを望む、ということを示す。以下の表は、BootstrapRequestMessageのための例示的なフォーマットを示す。
Figure 0005357292
Protocol属性およびVersionメッセージ属性は、クライアントがどのプロトコル仕様を使用するかを指定する。Profileフィールドは、メッセージおよびデータを交換するために使用される暗号プロトコルおよびコード化形式の定義済みセットを識別する。
Clientは、SessionIdを選択する。SessionIdは、そのクライアントに一意であり、再利用されるべきではない。例えば、クライアントの一意なIDおよび増加するカウンタ値は、一意なセッションIDを生成する方法として使用することができる。
一実施形態において、Clientはまた、その構成の対象となったすべてのTrust Domainのリストを送信する。
一実施形態において、サーバは、BootstrapRequestMessageを受信し、以下のステップを実行する。
・クライアントによってリクエストされる指定されたProtocol、Version、およびProfileをサポートすることを照合する。
・ノンス(非常にランダムな数)を生成する。
・セッション全体にわたって持続する情報(例えば、タイムスタンプ、セッショントークン、または他の任意のサーバー側情報)を運ぶために、任意にCookieを生成する。
クッキーの値は、サーバのみにとって意味があり、クライアントによって不透明なデータブロックとみなされる。
・SessionIdの値を、BootstrapRequestMessageから抽出する。
・呼掛けを生成する:Challenge=[Nonce、Ee、Cookie、SessionId]。
・Dsを用いて呼掛けに署名するために、S(Ds、Challenge)を算出する。
・ChallengeRequestMessageを構成し、応答としてクライアントにそれを送信する。
ChallengeRequestMessage
以下の表は、ChallengeRequestMessageのための例示的なフォーマットを示す。
Figure 0005357292
一実施形態において、ChallengeRequestMessageを受信した後に、クライアントは、以下のステップを実行する。
・ルート証明書BootRootCertificateの下で証明書チェーンServerCertificateChainが有効であることを検証する:CertVerif(BootRootCertificate、ServerCertificateChain)。
・ServerCertificateChainから公開鍵Esを抽出する。
・呼掛けの署名を検証する:V(Es、Chalenge)。
・SessionIdが、BootRequestMessageが送信されたときにセッションのために選択されたSessionIdと一致する、ことを照合する。
・ChallengeResponseMessageを構成し、サーバに送信する。
ChallengeResponseMessage
ChallengeResponseMessageを生成するために、クライアントは、以下のステップを実行する。
・以下の2つの方法の1つを使用して、セッション鍵SKを生成する。
○安全なランダムな鍵ジェネレータを直接に使用すること。
○NonceおよびBSGKを間接的に使用して、HSK=H(BSGK|Nonce)を算出し、SK=First N bytes of HSKを設定する。
・[Challenge、Clientlnformation、SessionKey]を含むChallengeRepsonseオブジェクトを生成する。ここで、Challengeは、すでに受信したChallengeRequestMessageからの呼掛けであり、ServerEncryptionKeyは除く。
・BAKを用いて応答に署名するために、S(BAK、ChallengeResponse)を算出する。
・署名されたChallengeReponseをSKを用いて暗号化する:E(SK[ChallengeResponse、S(BAK、ChallengeResponse)])。
・サーバの公開鍵Eeを用いてSessionKeyを暗号化する。
・ChallengeResponseMessageを構成し、サーバに送信する。
Figure 0005357292
サーバは、BootstrapChallengeResponseを受信し、以下のステップを実行する。
○秘密鍵Deを使用してセッション鍵SKを解読する:D(De、SessionKey)。
○前のステップからのセッション鍵SKを用いてChallengeResponseを解読する:D(SK、Challenge)。
○呼掛けの署名を検証する:V(BAK、ChallengeResponse)。
○セッション鍵SKが暗号復元に使用されるセッション鍵と一致することを照合する。
○必要に応じてCoolieおよびNonceの値(例えばタイムスタンプ)を照合する。
○SessionIdが、BootRequestMessageが送信されたときにセッションのために選択されたSessionIdと一致する、ことを照合する。
○BootstrapResponseMessageを構成し、サーバに送信する。
BootstrapResponseMessage
BootstrapResponseMessageを生成するために、サーバは、以下のステップを実行する。
○ChallengeResponseMessageにおいて受信したClientInformationを解析し、このブートストラップリクエストのために送信する必要のあるクライアントコンフィギュレーションDataをルックアップまたは生成する(これは、クライアントを表すノードのための機密鍵(Ec/Dc)を含んでもよい)。
サーバは、クライアントのための正確な情報を検索するのを補助するために、NonceおよびCookieの値を一般に使用する。
○SessionIdおよび構成Dataを用いて、BootstrapResponseを作成する。
○Dsを用いてDataに署名するために、S(Ds、BootstrapResponse)を算出する。
○署名されたBootstrapResponseをセッション鍵SKを用いて暗号化する:E(SK[BootstrapResponse、S(ds、BootstrapResponse)])。
Figure 0005357292
1.40.信用ドメイン
一実施形態において、各信用ドメインは、ルート証明機関と、ドメインの一意の名前とを含む。クライアントは、BootstrapRequestを送信するときに、受け入れることを望むすべての信用ドメイン(すなわちクライアントが有効であるとみなす証明書)を識別する。サーバは、クライアントによって送信されるリストから、信用ドメインを選択する(サーバがサポートする場合)。
1.41.署名
一実施形態において、署名がメッセージペイロードにおいて使用されるときは必ず、署名は、メッセージの署名された部分に含まれるデータフィールドの標準的なバイト列を通じて算出される。標準的なバイト列は、フィールド値のコード化からでなく、フィールド値から算出される。各プロファイルは、メッセージタイプごとにフィールドの標準的なバイト列を算出するために使用されるアルゴリズムを、好ましくは規定する。
1.42.プロファイル
ブートストラッププロトコルのプロファイルは、様々な暗号およびシリアライゼーションフォーマットについての選択のセットである。各プロファイルは、好ましくは一意の名前を有し、以下の選択を含む。
・公開鍵暗号化アルゴリズム
・公開鍵署名アルゴリズム
・秘密鍵暗号化アルゴリズム
・秘密鍵署名アルゴリズム
・公開鍵コード化
・ダイジェストアルゴリズム
・標準的なオブジェクトシリアライゼーション
・証明書フォーマット
・最低限ノンスサイズ
・メッセージマーシャリング
付録A
以下は、複数の連動する署名を有するコントローラオブジェクトの実施例である。
Figure 0005357292
Figure 0005357292
Figure 0005357292
付録B
この付録Bは、本明細書の他の場所に記載する例示的なオクトパスDRMエンジンを使用するシステムの一実施形態におけるオブジェクトのXMLコード化を示す。特定のアプリケーションのために、アプリケーション指定XMLスキーマは、以下に示すXMLスキーマ(「オクトパスXMLスキーマ」)をインポートし、アプリケーションに特定の要素(例えば失効のために使用される拡張)を追加することによって、作成することができる。一実施形態において、XMLにおけるオブジェクトのコード化は、アプリケーション指定XMLスキーマに対して検証可能である必要がある。これらのXMLコード化に対する更なる可能な制約は、下記に見いだされる。
この付録Bに例示する実施例において、すべてのDRMオブジェクトのための基本的なXMLスキーマタイプは、OctopusObjectTypeである。このことは、すべてのオブジェクトが属性および拡張をサポートすることを意味する。各Octopusオブジェクト要素のタイプは、この基本タイプに由来する。これらのタイプは、例えばContentKeyTypeのためのSecretKey要素のような他の要素を集めてもよい。
この例示的実施形態において、スキューバ鍵配信システムキーは、拡張に関して記載される。ScubaKeys要素は、延長要素の子である。同じことは、Torpedo拡張を有する失効鍵にもあてはまる。
本明細書の他の場所に記載するように、異なる種類のOctopusオブジェクト(例えばContentKey、Protector、Controller、Control、Node、およびLink)がある。これらのオブジェクトは、<Bundle>要素を使用する拡張とともに、共にバンドルされ得る。一実施形態において、オブジェクトまたは拡張が<Bundle>の中で署名される場合、本明細書の他の場所に記載するように、<Bundle>は<Signature>要素を含む。
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
B.1.更なる制約
B.1.1.ノード
一実施形態において、以下のタイプのノードが規定される。
・オクトパス個人ノード。これは、所与のDRMエンジンのルートノードである(例えば装置ノードまたはPCソフトウェアノード)。
・他のタイプのノード(例えばユーザノード)、またはユーザのグループのためのノード(例えば購読ノードまたは帰属関係ノード)。
一実施形態において、ノードは、鍵(例えばScubaKeyなどの拡張)を含み、ノードの公開情報(例えばID、属性、および公開鍵)と、その秘密の拡張(例えば秘密鍵を運ぶ)とを切り離すことができる必要がある。さらに、(公開および秘密の)部分ごとに1つの署名があるので、署名を有する公開ノードは、そのままエクスポートされ得る(例えばライセンスサービスに対するリクエストのパラメータとして)。
一実施形態において、秘密の拡張は、ExternalExtensionにおいて運ばれて、署名される。公開のノードおよびその秘密の拡張は、同一の<Bundle>要素においてパッケージングされ得るか、またはそれとは別に到達可能である。署名されたオクトパス個人ノードの実施例は、付録Bに対する下記の補遺Aに示す。
B.1.1.1.属性
一実施形態において、ノードオブジェクトの各XMLコード化は、以下の<Attribute>を有する<AttributeList>を運ぶ。
Figure 0005357292
Figure 0005357292
B.1.1.2.拡張
付録Bに対する補遺Aに示すように、一実施形態において、オクトパス個人ノードは、ScubaKey(共有鍵および機密鍵)およびTorpedo(ブロードキャスト秘密鍵)のための拡張を運ぶ。他の種類のノードは、Scubaを共有する鍵のみを運ぶ。
すべての公開鍵は、<ExtensionList>における<Extension>要素における<Node>要素の内部で運ばれる。他の鍵は、<Node>要素の外にある別々の<Extension>要素において運ばれる。
一実施形態において、<ScubaKeys>拡張は、<Node>において署名される。この実施形態において、<Node>(公開鍵)の内部の<ScubaKeys>を運ぶ<Extension>は、<ds:DigestMethod>要素ならびに<ds:DigestValue>要素を含む必要がある。外部<Extension>において運ばれる秘密鍵は、署名される必要があり、全部の拡張に署名することによってこれを必要とする。同様に、<Torpedo>拡張は、署名される。
B.1.2.リンク
一実施形態において、<Link>要素の<LinkTo>要素および<LinkFrom>要素は、<ID>要素のみを含み、<Digest>要素を含まない。<Control>、要素は、任意である。この付録Bに対する補遺Cは、署名されたリンクオブジェクトの実施例を含む。
B.1.1.1.属性
一実施形態において、リンクは、必須属性を有しない。このことは、<AttributeList>が必要とされず、対応するインプリメンテーションによって無視されることを意味する。
B.1.1.2.拡張
この付録Bに示す例示的実施形態において、リンクは、<Link>の内部で運ばれる<ScubaKeys>内部拡張を有するので、<ExtensionList>要素は必須である。それに加えて、リンクにおける<ScubaKeys>拡張は署名されないので、<ds:DigestMethod>要素および<ds:DigestValue>要素は、<Extension>要素の内部で運ばれない。この<ScubaKeys>拡張は、(<PrivateKey>要素および<SecretKey>要素において)「From Node」の公開または秘密Scuba共有鍵を有する「To Node」の秘密Scuba共有鍵を含む。この暗号化は、XML暗号化シンタックスを使用して表示される。この付録Bに例示する実施形態において、<KeyData>要素、ならびに<PrivateKey>および<SecretKey>要素の子の、「コード化」属性は、「xmlenc」に設定される。この<KeyData>要素の子は、<xenc:EncryptedData>要素である。暗号化鍵の名前は、<KeyInfo>/<Keyname>要素において広告される。
一実施形態において、暗号化鍵が公開鍵である場合、以下の通りになる。
・<Keyname>要素は、鍵が帰属するペアの名前である。
・暗号化されるデータ(例えば秘密鍵)が、あまりに大きすぎて公開鍵によって直接に暗号化できない場合、媒介128ビット秘密鍵が生成される。データは、例えばaes−128−cbcを使用して媒介鍵によって暗号化され、媒介鍵は、公開鍵によって暗号化される(<EncryptedKey>要素を使用して)。
XMLチャンクは、以下のようになる。
Figure 0005357292
B.1.3.ライセンスオブジェクト
この付録Bに対する補遺Cは、署名されたライセンスの実施例を提供する(最初の失効が生じる前)(下記のContentKeyセクションを参照)。
B.1.3.1.プロテクタ
この付録Bに示す例示的実施形態において、<ContentKeyReference>要素および<ContentReference>要素(例えば<ProtectedTargets>要素の内部)は、<ID>要素のみを含み、<Digest>要素を含まない。この例示的実施形態において、プロテクタオブジェクトは、必須属性または拡張を含まない。<AttributeList>および<ExtensionList>要素は、任意であり、無視される。
B.1.3.2.ContentKey
この付録Bに示す例示的実施形態において、ContentKeyオブジェクトは、必須属性または拡張を含まない。従って、<AttributeList>要素および<ExtensionList>要素は、任意であり、無視される。
一実施形態において、<ContentKey>要素は、コンテンツを解読するために使用される実際の鍵を表す<SecretKey>要素を含む。<SecretKey>に関連する<KeyData>は、暗号化される。一実施形態において、<KeyData>の「コード化」属性が「xmlenc」に設定されることは、必須である。
一実施形態において、ContentKeyオブジェクトについて2つの異なる場合がある。(1)装置またはPCアプリケーションの最初に失効する前。この場合、<SecretKey>によって表されるコンテンツ鍵kc要素は、コンテンツが結合される(公開または秘密の)エンティティ(例えばユーザ)のScuba鍵によってのみ暗号化される。(2)Mangroveブロードキャスト暗号化スキームに従ってコンテンツ鍵が暗号化される最初の失効の後。結果データは、コンテンツが結合されるエンティティの(公開または秘密の)Scuba鍵によって暗号化される。この場合、スーパー暗号化となる。
スーパー暗号化の場合に<EncryptedData>要素を暗号化する例示的な方法は、本明細書の他の場所に記載する。以下は、これをケースbに適用する方法を説明する。
一実施形態において、Magroveブロードキャストスキームによってコンテンツ鍵kcを暗号化するためのxmlencシンタックスは、以下の通りである。
Figure 0005357292
一実施形態において、上述の<EncryptedData>のバイト列は、ライセンスが結合されるエンティティの(公開または秘密の)スキューバ共有鍵によって暗号化される。公開鍵が使用される場合、下記と同一の規則が適用され(例えば公開鍵による暗号化を参照)、<EncryptedData>のバイト列がRSA1024公開鍵にとって大きすぎる場合、媒介鍵が必要である。そのようなContentKeyオブジェクトのXMLコード化の実施例は、この付録Bに対する補遺Dに見いだされる。
B.1.3.3.コントローラ
一実施形態において、コントローラオブジェクトは、必須属性または拡張を含まない。従って、<AttributeList>および<ExtensionList>要素は、任意であり、対応するインプリメンテーションによって無視される。
一実施形態において、<DigestMethod>要素のアルゴリズム属性の値は、常にhttp://www.w3.org/2000/09/xmldsig#sha1である。
一実施形態において、<ControlReference>は、<Digest>要素を有しなければならない。<DigestValue>、要素は、参照される制御のダイジェストのベース64コード化を含まなければならない。
一実施形態において、コントローラにわたる署名がPKI署名(rsa−shal)である場合、<ContentKeyRefence>要素(<ControlledTargets>要素の中にある)は、<Digest>要素を含む必要があり、<DigestValue>要素は、ContentKeyオブジェクトに埋め込まれるプレーンテキストのコンテンツ鍵のダイジェストを含まなければならない。
B.1.3.4.制御
一実施形態において、制御オブジェクトは、必須属性または拡張を含まない。従って、<AttributeList>および<ExtensionList>要素は、任意であり、対応するインプリメンテーションによって無視される。
一実施形態において、<ControlProgram>要素のタイプ属性は「プランクトン」に設定され、<CodeModule>要素のbyteCodeType属性は「Plankton−1−0」に設定される。
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
付録C
この付録Cは、上述のブートストラッププロトコルとともに用いる単純なプロファイルの実施例を示す。単純な標準的なシリアライゼーション、例示的なXMLマーシャリング、およびOctopusブートストラップSOAPウェブサービスのための例示的なWSDLも提供される。
単純なプロファイル
一実施形態において、以下から成る単純なプロファイルが使用される。
Figure 0005357292
単純な標準的なシリアライゼーション1.0
一実施形態において、上述の単純なプロファイルにおいて使用される単純な標準的なバイト列は、メッセージにおけるオブジェクトのフィールドの値からバイト列を構成することからなる。各メッセージおよび各オブジェクトは、1つ以上のフィールドからなる。各フィールドは、単純フィールドまたは複合フィールドである。
単純フィールドは、4つのタイプ(フィールドの整数、ストリング、バイト列、またはアレイ)のうちの1つであり得る。複合フィールドは、1つ以上のサブフィールドからなり、各サブフィールドは単純または複合である。
一実施形態において、フィールドタイプごとに標準的なバイト列を構成するための規則は、以下の通りである。
複合フィールド
Figure 0005357292
標準的なバイト列は、各サブフィールドの標準的なバイト列の結合である(任意フィールドは、スキップされず、任意フィールドのための規則に従ってシリアル化される)。
フィールドのアレイ
Figure 0005357292
フィールド数は、ビッグエンディアン順における4バイトのシーケンスとしてコード化され、その後に各フィールドの標準的なバイト列が続く。フィールド数が0である場合、4バイトフィールド数の後に何も続かない(この場合、すべての4バイトは、値0を有する)。
整数
Figure 0005357292
ビッグエンディアン順において4バイトのシーケンスとしてコード化される32ビット符号付きの値。
ストリング
Figure 0005357292
ストリングは、8ビットバイトのUTF−8コード化されるシーケンスによって表される。コード化されたバイト列のバイト数は、ビッグエンディアン順における4バイトのシーケンスとしてコード化される。バイト数の後には、UTF−8コード化されたストリングのバイト列が続く。
バイト列
Figure 0005357292
バイト数は、ビッグエンディアン順における4バイトのシーケンスとしてコード化される(バイト列が空である場合、または対応するフィールドが省略される場合、バイト数は0であり、4バイトのバイト数の後にバイト値は続かない)。各バイトは、そのままコード化される。
単純なXMLマーシャリング1.0
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
付録D
オブジェクトのための標準的なバイト列(CB)を算出するコード化中立方法を以下に提示するが、好ましい実施形態において、これはオブジェクトにデジタル署名する使用のためのダイジェストの計算において使用される。このバイト列は、オブジェクトを表したり送信したりする方法から独立しているので、システムに一貫して同一のダイジェストおよび署名値を使用できる。そのシステムにおいて、複数のコード化形式(例えばXML、ANSI)、プログラミング言語などが使用される。
1.標準的なバイト列アルゴリズム
標準的なバイト列アルゴリズムは、フィールドの値からバイト列を構成することからなる。各フィールドは、単純タイプまたは複合タイプの値を有する。一部のフィールドは、任意であるように指定できる(フィールドは存在するかまたは省略され得る)。
一実施形態において、単純タイプは、整数、ストリング、バイト、およびブーリアンである。
複合タイプは、1つ以上のサブフィールドから成る。各サブフィールドは、単純タイプまたは複合タイプの値を有する。複合タイプは、異種または同種である。すなわち、異なるタイプ(すなわち異種)の1つ以上のサブフィールド値(単純または複合)があるか、あるいはすべて同一のタイプ(すなわち同種)の1つ以上のサブフィールド値(単純または複合)があることを意味する。
フィールドの標準的なバイト列は、フィールドが常に存在する場合には、符号化則をフィールド値に適用することによって入手され、あるいはフィールドが任意であるように指定される場合には、符号化則を任意フィールドに適用することによって入手される。以下の符号化則の記載において、バイトという用語は、8ビット値(オクテット)を意味する。
1.1.任意フィールド
任意フィールドが存在する場合、その値はバイト値1としてシリアル化され、その後にフィールド値の標準的なバイト列が続く。それが省略される場合、その値はバイト値0としてシリアル化される。
1.2.異種複合
標準的なバイト列は、各サブフィールド値の標準的なバイト列の結合である(任意フィールドは、スキップされず、任意フィールドのための規則に従ってシリアル化される)。
1.3.同種複合
標準的なバイト列は、サブフィールドカウントであり、ビッグエンディアン順における4バイトのシーケンスとしてコード化され、その後に各サブフィールド値の標準的なバイト列の結合が続く。サブフィールド数が0である場合、4バイトフィールド数の後に何も続かない(この場合、すべての4バイトは、値0を有する)。
1.4.整数
ビッグエンディアン順において4バイトのシーケンスとしてコード化される32ビット整数値。
1.5.ストリング
Figure 0005357292
ストリングは、UTF−8コード化されるバイト列によって表される(ヌル終了しない)。(1)ビッグエンディアン順における4バイトのシーケンスとしてコード化されるストリングのバイト数と、それに続く(2)ストリングのバイト列とからなる、ストリングのための標準的なバイト列。
1.6.バイト
8ビット値
1.7. ブーリアン
8ビット値:偽の場合は0、真の場合は1。
2.オクトパスオブジェクトへの応用
一実施形態において、Octopusオブジェクトのための標準的なバイト列は、オブジェクトモデルにおいて規定される順序におけるフィールドの各々の標準的なバイト列の結合である。
異種複合タイプについて、フィールドの順序は、タイプ規定において指定される順序である。同種の複合タイプについて、要素の順序は、以下の段落において指定される。
○属性
オブジェクトの「属性」フィールドは、タイプ「リスト」の命名されていない属性として処理される(それは命名された属性の未ソートのコンテナである)。タイプ「リスト」の属性の値に含まれる命名された属性は、それらの「名前」フィールドによって辞書編集的にソートされる。タイプ「アレイ」の値属性に含まれる命名されていない属性は、ソートされない(アレイ順にシリアル化される)。
○拡張
オブジェクトの内部拡張は、それらの「ID」フィールドによって辞書編集的にソートされる。一実施形態において、内部拡張のために、「extensionData」フィールドは、標準的なバイト列の計算において使用されない。そのような拡張は、署名のためにダイジェストの計算に含まれる必要がある場合、「extensionData」において運ばれる実際データのダイジェストを表す「ダイジェスト」フィールドを含む。拡張データのタイプごとに、その標準的なバイト列の計算を可能にする定義が与えられる。
○コントローラ
ContentKey参照は、それらの「ID」フィールドによって辞書編集的にソートされる。
3.ScubaKeys
「publicKeys」、「privateKeys」、および「secretKeys」フィールドの鍵は、それらの「ID』フィールドによって辞書編集的にソートされる。
4.実施例
Figure 0005357292
クラスBのインスタンスの標準的なバイト列(a[]={7,8,9},s=Abc,x={5,4},s2=''''であり、optional xは存在しない)は、以下のようにシリアル化される。
Figure 0005357292
Cano(X)は、以下の通りである。
Figure 0005357292
付録E
制御プログラムの実施例を以下に提供する。この実施例において、帰属関係状態(登録中に供給される)またはライセンス状態(ライセンス転送中に供給される)を、状態データベース(この例示的実施形態において「Seashell」データベースと呼ばれる)に見いだすことができる場合、再生アクションを認可できるということを、ライセンスは示す。ライセンスはまた、ピアがライセンス転送をリクエストすることを可能にする。2つのピアが所与の近似にある場合、この転送は認可される。ライセンスは、ピア上のライセンス状態を設定するエージェントを含む。
これに続くコードファイルにおいて、以下の通りである。「MovableDomainBoundLicense.asm」は、主制御である。「LicenseUtils/*」は、ライセンスのためのヘルパーである。「GenericUtils/*」は、機能(ストリングの長さの算出、ストリングの比較、スタックの操作など)を実行する一般的なヘルパーである。「ExtendedStatusBlockParameters/*」は、拡張状態ブロックパラメータのXML記述、およびXMLからコンパイルされる一連のバイトとしての対応する表現を含む。
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
Figure 0005357292
明瞭さを目的として上記を詳細に説明したが、特許請求の範囲内で一定の変更および改造を行ってもよいことは明らかである。本明細書に記載するプロセスおよび装置を実現する多くの代替的方法があるという点に留意すべきである。従って、本実施形態は、例示的なものであって限定的なものではないとみなされるべきであり、進歩性のある一連の作業は、本明細書に提供する詳細に限定されるものではなく、特許請求および同等物の範囲内で変更が可能である。

Claims (14)

  1. ホストコンピュータシステム上の電子コンテンツへのアクセスを認可する方法において、
    前記ホストコンピュータシステム、前記ホストコンピュータシステムのユーザから前記電子コンテンツにアクセスするリクエストを受信するステップと、
    前記ホストコンピュータシステム、前記電子コンテンツに関連するライセンスを検索するステップであって、前記ライセンスは、制御オブジェクトと、コントローラオブジェクトと、プロテクタオブジェクトと、コンテンツ鍵オブジェクトとを含前記制御オブジェクトが第1制御プログラムを含み、前記コントローラオブジェクトが、コンテンツ鍵オブジェクトへの参照と前記制御オブジェクトへの参照とを含み、前記プロテクタオブジェクトが、電子コンテンツの暗号化形態を含むコンテンツ・オブジェクトへの参照を含み、コンテンツ鍵オブジェクト前記電子コンテンツの前記暗号化形態を解読するための暗号化鍵を含む、ステップと、
    前記ホストコンピュータシステム、前記制御オブジェクトから前記第1制御プログラムを検索するステップと、
    前記ホストコンピュータシステム、前記リクエストが認可され得るか否かを決定するために、前記ホストコンピュータシステム上で実行するデジタル著作権管理エンジンを使用して前記第1制御プログラムを実行するステップと、を含む方法であって、
    前記第1制御プログラムを実行することは1つ以上のリンクオブジェクトを評価することを含み、
    前記リンクオブジェクトの各々は2つのエンティティの関係を表し、
    エンティティは、デバイス、人、または、人のグループからなり
    前記1つ以上のリンクオブジェクトの少なくとも1つは第2制御プログラムを含み、
    前記1つ以上のリンクオブジェクトを評価することは、リンクが有効であるか否かを決定するために、前記デジタル著作権管理エンジンを使用して前記第2制御プログラムを実行すること含み、
    前記実行することは、前記第2制御プログラムによって表現される1つ以上の条件が満たされるか否かを決定することを含む、方法。
  2. 前記コントローラオブジェクトが、前記制御オブジェクトを前記コンテンツ鍵オブジェクトに結合し
    結合することは、前記コントローラオブジェクトのデジタル署名を含む、請求項1に記載の方法。
  3. 前記プロテクタオブジェクトが、前記コンテンツ鍵オブジェクトを前記電子コンテンツに結合し
    結合することは、前記プロテクタオブジェクトのデジタル署名を含む、請求項1に記載の方法。
  4. 前記1つ以上の条件のうちの少なくとも1つが、現在時刻が一定の時刻又は該一定の時刻の前であるという必要条件を含む、請求項1に記載の方法。
  5. 前記1つ以上の条件のうちの少なくとも1つが、現在時刻が一定の時刻の後であるという必要条件を含む、請求項1に記載の方法。
  6. 前記1つ以上の条件のうちの少なくとも1つが、前記第2制御プログラムが一定の回数よりも多く前もって実行していないという必要条件を含む、請求項1に記載の方法。
  7. 前記1つ以上の条件のうちの少なくとも1つが、メモリに格納されたカウンタが一定の値を超過しないという必要条件を含み、
    前記カウンタは、前記電子コンテンツがアクセスされた回数を表す、請求項1に記載の方法。
  8. 前記1つ以上の条件のうちの少なくとも1つが、一定のイベントが前もって生じていないという必要条件を含む、請求項1に記載の方法。
  9. 前記1つ以上の条件のうちの少なくとも1つが、前記ホストコンピュータシステムが1つ以上の一定の特性を有しなければならないという必要条件を含み、
    前記一定の特性は、特定のソフトウェアあるいはハードウェア・コンポーネントの存在あるいは非存在、または、前記コンピュータシステムの別のコンピュータ装置に対する近接度を含む、請求項1に記載の方法。
  10. 前記1つ以上の条件のうちの少なくとも1つが、前記電子コンテンツをレンダリングするための前記ホストコンピュータシステム上で実行するソフトウェアが
    前記電子コンテンツを一定のインタフェースにエクスポートすることができないという必要条件を含む、請求項1に記載の方法。
  11. 電子コンテンツ上で所与のアクションが実行されることを認可する方法であって、コンピューティング装置、第1デジタル著作権管理エンジン上で実行する仮想マシンを使用して第1制御プログラムを実行するステップであって、
    前記第1制御プログラムは、前記所与のアクションが前記電子コンテンツ上で実行され得るか否かを決定するように操作可能であり、
    前記第1制御プログラムは、前記所与のアクションの実行が認可されるために満たされなければならない1つ以上の条件の第1セットを評価するように操作可能であり、
    前記1つ以上の条件の第1セットのうちの少なくとも1つは、1つ以上のリンクオブジェクトが前記デジタル著作権管理エンジンに利用可能であるという必要条件を含み、
    前記リンクオブジェクトは、第1エンティティを表す第1ノードを、第2エンティティを表す第2ノードに論理的にリンクし、
    前記第1エンティティと第2エンティティは、それぞれ、人、コンピューティング装置、または、人のグループを含む、ステップと、
    前記コンピューティング装置、1つ以上のリンクオブジェクトを検索するステップであって、前記リンクオブジェクトの各々は2つのエンティティの関係を表現し、
    前記リンクオブジェクトの少なくとも1つは、第2制御プログラムを含み、
    前記第2制御プログラムは、前記少なくとも1つのリンクオブジェクトが有効であるとみなされるために満たされなければならない1つ以上の条件の第2セットを評価するように操作可能であり、
    前記1つ以上の条件は、特定のソフトウェアあるいはハードウェア・コンポーネントの存在あるいは非存在、または、前記コンピュータシステムの別のコンピュータ装置に対する近接度を含む、ステップと、
    前記コンピューティング装置、前記第2制御プログラムを実行するためにデジタル著作権管理エンジンを使用するステップと、を含む方法。
  12. 前記1つ以上の条件の第1セットが時間ベースの条件を含む、請求項11に記載の方法。
  13. 前記1つ以上の条件の第2セットが時間ベースの条件を含む、請求項11に記載の方法。
  14. 前記条件の第1セットまたは前記条件の第2セットのうちの少なくとも1つが、メモリに格納されたカウンタが定義済みの値を超過しないという必要条件を含む、請求項11に記載の方法。
JP2012066252A 2005-10-18 2012-03-22 デジタル著作権管理エンジンのシステムおよび方法 Expired - Fee Related JP5357292B2 (ja)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
US72808905P 2005-10-18 2005-10-18
US60/728,089 2005-10-18
US77202406P 2006-02-09 2006-02-09
US60/772,024 2006-02-09
US74457406P 2006-04-10 2006-04-10
US79117906P 2006-04-10 2006-04-10
US60/791,179 2006-04-10
US60/744,574 2006-04-10
US74671206P 2006-05-08 2006-05-08
US79892506P 2006-05-08 2006-05-08
US60/746,712 2006-05-08
US60/798,925 2006-05-08
US83506106P 2006-08-01 2006-08-01
US60/835,061 2006-08-01

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008536800A Division JP2009512096A (ja) 2005-10-18 2006-10-18 デジタル著作権管理エンジンのシステムおよび方法

Publications (2)

Publication Number Publication Date
JP2012155734A JP2012155734A (ja) 2012-08-16
JP5357292B2 true JP5357292B2 (ja) 2013-12-04

Family

ID=37890788

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2008536800A Withdrawn JP2009512096A (ja) 2005-10-18 2006-10-18 デジタル著作権管理エンジンのシステムおよび方法
JP2012066252A Expired - Fee Related JP5357292B2 (ja) 2005-10-18 2012-03-22 デジタル著作権管理エンジンのシステムおよび方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2008536800A Withdrawn JP2009512096A (ja) 2005-10-18 2006-10-18 デジタル著作権管理エンジンのシステムおよび方法

Country Status (12)

Country Link
US (5) US8776216B2 (ja)
EP (4) EP1943603A2 (ja)
JP (2) JP2009512096A (ja)
KR (3) KR101285946B1 (ja)
CN (2) CN102882677B (ja)
AP (1) AP2008004453A0 (ja)
AU (1) AU2006304655B2 (ja)
BR (1) BRPI0617490A2 (ja)
CA (1) CA2626244A1 (ja)
EA (2) EA012918B1 (ja)
IL (1) IL190957A (ja)
WO (1) WO2007047846A2 (ja)

Families Citing this family (359)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020019814A1 (en) * 2001-03-01 2002-02-14 Krishnamurthy Ganesan Specifying rights in a digital rights license according to events
US8051443B2 (en) * 2002-01-02 2011-11-01 Sony Corporation Content replacement by PID mapping
KR100952800B1 (ko) 2002-01-02 2010-04-14 소니 일렉트로닉스 인코포레이티드 부분적 암호화 및 pid 맵핑
US7155012B2 (en) * 2002-01-02 2006-12-26 Sony Corporation Slice mask and moat pattern partial encryption
US7376233B2 (en) 2002-01-02 2008-05-20 Sony Corporation Video slice and active region based multiple partial encryption
US8818896B2 (en) 2002-09-09 2014-08-26 Sony Corporation Selective encryption with coverage encryption
US7292692B2 (en) * 2003-03-25 2007-11-06 Sony Corporation Content scrambling with minimal impact on legacy devices
US7286667B1 (en) 2003-09-15 2007-10-23 Sony Corporation Decryption system
US7496500B2 (en) * 2004-03-01 2009-02-24 Microsoft Corporation Systems and methods that determine intent of data and respond to the data based on the intent
US20050204900A1 (en) * 2004-03-17 2005-09-22 Easynotes, Llc Note collection utility
JP2006085483A (ja) * 2004-09-16 2006-03-30 Sony Corp ライセンス処理装置,プログラムおよびライセンス貸出方法
US7979706B1 (en) * 2004-09-29 2011-07-12 Rockwell Automation Technologies, Inc. Systems and methods for queuing an action in industrial automation systems
US20100071070A1 (en) * 2005-01-07 2010-03-18 Amandeep Jawa Managing Sharing of Media Content From a Server Computer to One or More of a Plurality of Client Computers Across the Computer Network
US8666900B1 (en) * 2005-03-30 2014-03-04 Intuit Inc. Secure product enablement over channels with narrow bandwidth
US9418040B2 (en) * 2005-07-07 2016-08-16 Sciencelogic, Inc. Dynamically deployable self configuring distributed network management system
US20070094366A1 (en) * 2005-10-20 2007-04-26 Ayoub Ramy P System and method for real-time processing and distribution of media content in a network of media devices
US20070094276A1 (en) * 2005-10-20 2007-04-26 Isaac Emad S Method for obtaining and managing restricted media content in a network of media devices
US7921165B2 (en) * 2005-11-30 2011-04-05 Microsoft Corporation Retaining mail for availability after relay
US8015200B2 (en) * 2005-12-24 2011-09-06 Phil Seiflein Multimedia platform synchronizer
US7734754B2 (en) * 2005-12-28 2010-06-08 Microsoft Corporation Reviewing effectiveness of communication rules system
US8150816B2 (en) * 2005-12-29 2012-04-03 Nextlabs, Inc. Techniques of optimizing policies in an information management system
KR100834752B1 (ko) * 2006-02-17 2008-06-05 삼성전자주식회사 컨텐츠의 라이센스를 전달하기 위한 장치 및 방법
US7555464B2 (en) * 2006-03-01 2009-06-30 Sony Corporation Multiple DRM management
CN101395596B (zh) 2006-03-06 2010-10-27 Lg电子株式会社 数据传递方法
US20090133129A1 (en) * 2006-03-06 2009-05-21 Lg Electronics Inc. Data transferring method
US8429300B2 (en) 2006-03-06 2013-04-23 Lg Electronics Inc. Data transferring method
US8744885B2 (en) * 2006-03-28 2014-06-03 Snowflake Itm, Inc. Task based organizational management system and method
US8996421B2 (en) 2006-05-15 2015-03-31 The Directv Group, Inc. Methods and apparatus to conditionally authorize content delivery at broadcast headends in pay delivery systems
US7992175B2 (en) 2006-05-15 2011-08-02 The Directv Group, Inc. Methods and apparatus to provide content on demand in content broadcast systems
US8775319B2 (en) * 2006-05-15 2014-07-08 The Directv Group, Inc. Secure content transfer systems and methods to operate the same
US8001565B2 (en) 2006-05-15 2011-08-16 The Directv Group, Inc. Methods and apparatus to conditionally authorize content delivery at receivers in pay delivery systems
US8095466B2 (en) 2006-05-15 2012-01-10 The Directv Group, Inc. Methods and apparatus to conditionally authorize content delivery at content servers in pay delivery systems
FR2901651B1 (fr) * 2006-05-24 2012-01-20 Noel Pampagnin Diffusion de documents electroniques preservant les droits d'auteur et autorisant la copie privee
US8028026B2 (en) * 2006-05-31 2011-09-27 Microsoft Corporation Perimeter message filtering with extracted user-specific preferences
US8726020B2 (en) * 2006-05-31 2014-05-13 Microsoft Corporation Updating configuration information to a perimeter network
US8549295B2 (en) 2006-05-31 2013-10-01 Microsoft Corporation Establishing secure, mutually authenticated communication credentials
US20080028218A1 (en) * 2006-06-13 2008-01-31 Simon Jonathon B Software & license and physical/virtual machine asset management library application with check-out/check-in, front-end asset load, tracking, reporting, reconciliation and associated methods
US20080010091A1 (en) * 2006-07-10 2008-01-10 Kim Seungyeon Method and System for Sharing a User-Medical-Record
US8166113B2 (en) * 2006-08-02 2012-04-24 Microsoft Corporation Access limited EMM distribution lists
KR101369749B1 (ko) * 2006-09-04 2014-03-06 삼성전자주식회사 Drm 카드를 이용한 콘텐츠 해독 방법
KR20080022476A (ko) * 2006-09-06 2008-03-11 엘지전자 주식회사 논컴플라이언트 컨텐츠 처리 방법 및 디알엠 상호 호환시스템
JP2008065696A (ja) * 2006-09-08 2008-03-21 Toshiba Corp コンテンツ共有システム及びコンテンツ共有方法
US8612847B2 (en) * 2006-10-03 2013-12-17 Adobe Systems Incorporated Embedding rendering interface
US7886226B1 (en) 2006-10-03 2011-02-08 Adobe Systems Incorporated Content based Ad display control
WO2008054329A1 (en) * 2006-10-31 2008-05-08 Agency For Science, Technology And Research Device and method of generating and distributing access permission to digital object
US8533846B2 (en) 2006-11-08 2013-09-10 Citrix Systems, Inc. Method and system for dynamically associating access rights with a resource
KR101145848B1 (ko) * 2006-11-29 2012-05-17 삼성전자주식회사 콘텐츠 전송을 위한 접근 제어 방법 및 상기 접근 제어방법을 이용하는 네트워크의 노드
ZA200904141B (en) * 2006-12-06 2010-08-25 Marion Darnell Jones System of fractional ownership of intellectual property
US20080140826A1 (en) * 2006-12-08 2008-06-12 Microsoft Corporation Monitoring and controlling electronic message distribution
US8312558B2 (en) 2007-01-03 2012-11-13 At&T Intellectual Property I, L.P. System and method of managing protected video content
WO2008082281A1 (en) 2007-01-05 2008-07-10 Lg Electronics Inc. Method for transferring resource and method for providing information
AU2008205545B2 (en) 2007-01-17 2012-03-08 Intertrust Technologies Corporation Methods, systems, and apparatus for fragmented file sharing
US20080178198A1 (en) * 2007-01-22 2008-07-24 Media Ripple, Llc Distributed digital media management
KR101457689B1 (ko) 2007-02-16 2014-11-04 엘지전자 주식회사 멀티 도메인 매니저의 운영 방법 및 도메인 시스템
KR20080081631A (ko) * 2007-03-06 2008-09-10 주식회사 팬택 이동 단말에 탑재되는 디지털 권한 관리 장치 및 이를이용한 디지털 권한 관리 방법
US20080226078A1 (en) * 2007-03-12 2008-09-18 Microsoft Corporation Enabling recording and copying data
US8966252B2 (en) * 2007-03-13 2015-02-24 Board Of Trustees Of Michigan State University Private entity authentication for pervasive computing environments
EP2153557A4 (en) * 2007-04-23 2013-07-03 Lg Electronics Inc METHOD OF USE OF CONTENT, METHOD FOR THE COMMON USE OF CONTENT AND DEVICE BASED ON THE SECURITY LEVEL
WO2008136639A1 (en) * 2007-05-07 2008-11-13 Lg Electronics Inc. Method and system for secure communication
US8627409B2 (en) * 2007-05-15 2014-01-07 Oracle International Corporation Framework for automated dissemination of security metadata for distributed trust establishment
US8539233B2 (en) * 2007-05-24 2013-09-17 Microsoft Corporation Binding content licenses to portable storage devices
US8073828B2 (en) * 2007-06-14 2011-12-06 Curbis Corporation Licensed rights clearance and tracking for digital assets
US20080313085A1 (en) * 2007-06-14 2008-12-18 Motorola, Inc. System and method to share a guest version of rights between devices
US8661552B2 (en) * 2007-06-28 2014-02-25 Microsoft Corporation Provisioning a computing system for digital rights management
US8646096B2 (en) * 2007-06-28 2014-02-04 Microsoft Corporation Secure time source operations for digital rights management
US8689010B2 (en) * 2007-06-28 2014-04-01 Microsoft Corporation Secure storage for digital rights management
KR101200572B1 (ko) * 2007-07-09 2012-11-13 삼성전자주식회사 공개 브로드캐스트 암호화를 이용한 인증 방법 및 컨텐츠재생 방법과 그 장치
CA2694119A1 (en) * 2007-07-23 2009-01-29 Intertrust Technologies Corporation Dynamic media zones systems and methods
WO2009014734A2 (en) * 2007-07-23 2009-01-29 Intertrust Technologies Corporation Tethered device systems and methods
JP5341761B2 (ja) * 2007-08-09 2013-11-13 パナソニック株式会社 端末装置、サーバ及びそのシステム
JP4946726B2 (ja) * 2007-08-22 2012-06-06 富士ゼロックス株式会社 文書操作システムおよび管理装置およびプログラム
US20090083544A1 (en) * 2007-08-23 2009-03-26 Andrew Scholnick Security process for private data storage and sharing
US8307414B2 (en) * 2007-09-07 2012-11-06 Deutsche Telekom Ag Method and system for distributed, localized authentication in the framework of 802.11
US8819815B1 (en) 2007-10-16 2014-08-26 Jpmorgan Chase Bank, N.A. Method and system for distributing and tracking information
CN101436930A (zh) * 2007-11-16 2009-05-20 华为技术有限公司 一种密钥分发的方法、系统和设备
KR100988374B1 (ko) * 2007-12-14 2010-10-18 엘지전자 주식회사 사용권리 이동 방법, 사용권리의 발급권한 관리 방법 및시스템
US9984369B2 (en) * 2007-12-19 2018-05-29 At&T Intellectual Property I, L.P. Systems and methods to identify target video content
US9773098B1 (en) * 2007-12-19 2017-09-26 Google Inc. Media content feed format for management of content in a content hosting website
US9143493B2 (en) 2007-12-20 2015-09-22 The Directv Group, Inc. Method and apparatus for communicating between a user device and a gateway device to form a system to allow a partner service to be provided to the user device
US20090164379A1 (en) * 2007-12-21 2009-06-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Conditional authorization for security-activated device
US9071436B2 (en) * 2007-12-21 2015-06-30 The Invention Science Fund I, Llc Security-activated robotic system
US20090162032A1 (en) * 2007-12-21 2009-06-25 Aceurity, Inc. Smart Viewing Rights System and Switch
US9128476B2 (en) * 2007-12-21 2015-09-08 The Invention Science Fund I, Llc Secure robotic operational system
US9818071B2 (en) * 2007-12-21 2017-11-14 Invention Science Fund I, Llc Authorization rights for operational components
US8752166B2 (en) * 2007-12-21 2014-06-10 The Invention Science Fund I, Llc Security-activated operational components
US10049190B1 (en) * 2007-12-21 2018-08-14 Symantec Corporation Method and apparatus for remotely managing a resource at a computer
US9626487B2 (en) * 2007-12-21 2017-04-18 Invention Science Fund I, Llc Security-activated production device
US20110178619A1 (en) * 2007-12-21 2011-07-21 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Security-activated robotic tasks
US8286236B2 (en) * 2007-12-21 2012-10-09 The Invention Science Fund I, Llc Manufacturing control system
US8429754B2 (en) * 2007-12-21 2013-04-23 The Invention Science Fund I, Llc Control technique for object production rights
US20090172420A1 (en) * 2007-12-31 2009-07-02 Kabushiki Kaisha Toshiba Tamper resistant method and apparatus for a storage device
US20090204967A1 (en) * 2008-02-08 2009-08-13 Unisys Corporation Reporting of information pertaining to queuing of requests
CA2707246C (en) 2009-07-07 2015-12-29 Certusview Technologies, Llc Automatic assessment of a productivity and/or a competence of a locate technician with respect to a locate and marking operation
US8532342B2 (en) * 2008-02-12 2013-09-10 Certusview Technologies, Llc Electronic manifest of underground facility locate marks
US8672225B2 (en) 2012-01-31 2014-03-18 Ncr Corporation Convertible barcode reader
US8270666B2 (en) 2008-02-12 2012-09-18 Certusview Technologies, Llc Searchable electronic records of underground facility locate marking operations
US8165304B2 (en) * 2008-02-18 2012-04-24 Sungkyunkwan University Foundation For Corporate Collaboration Domain digital rights management system, license sharing method for domain digital rights management system, and license server
US12125070B2 (en) 2008-04-30 2024-10-22 Intertrust Technologies Corporation Content delivery systems and methods
US8462954B2 (en) * 2008-05-30 2013-06-11 Motorola Mobility Llc Content encryption using at least one content pre-key
MX2010013189A (es) * 2008-06-04 2010-12-20 Koninkl Philips Electronics Nv Metodo y sistema para manejo de datos de cuidado de la salud.
US20090326964A1 (en) * 2008-06-25 2009-12-31 Microsoft Corporation Extensible agent-based license structure
US8280631B2 (en) 2008-10-02 2012-10-02 Certusview Technologies, Llc Methods and apparatus for generating an electronic record of a marking operation based on marking device actuations
US8595484B2 (en) * 2008-07-29 2013-11-26 Motorola Solutions, Inc. Method and device for distributing public key infrastructure (PKI) certificate path data
US8655826B1 (en) 2008-08-01 2014-02-18 Motion Picture Laboratories, Inc. Processing and acting on rules for content recognition systems
US8458128B2 (en) * 2008-08-26 2013-06-04 Microsoft Corporation Minimal extensions required for multi-master offline and collaboration for devices and web services
GB0815651D0 (en) * 2008-08-28 2008-10-08 Omnifone Ltd Content ingestion
US20100058466A1 (en) * 2008-09-03 2010-03-04 Dundas Data Visualization, Inc. Systems and methods for providing security for software applications
US9076484B2 (en) 2008-09-03 2015-07-07 Sandisk Technologies Inc. Methods for estimating playback time and handling a cumulative playback time permission
US20100064378A1 (en) * 2008-09-05 2010-03-11 Samsung Electronics Co., Ltd. Method and apparatus for managing digital rights management module
US10453003B2 (en) * 2008-09-18 2019-10-22 Microsoft Technology Licensing, Llc Digital rights management license identification
JP5141494B2 (ja) * 2008-10-27 2013-02-13 ブラザー工業株式会社 コンテンツ分散保存システム、特殊コンテンツ取得方法、ノード装置、及びノード処理プログラム
KR101310218B1 (ko) * 2008-10-28 2013-09-24 삼성전자주식회사 화상형성장치의 파일 통합 설치 방법 및 파일 통합 설치가 가능한 화상형성장치
US9235572B2 (en) * 2008-10-31 2016-01-12 Disney Enterprises, Inc. System and method for updating digital media content
US8315994B2 (en) 2008-10-31 2012-11-20 Disney Enterprises, Inc. System and method for updating digital media content
CN101420430B (zh) * 2008-11-28 2011-12-07 华为终端有限公司 一种信息安全保护的方法和设备
US9548859B2 (en) * 2008-12-03 2017-01-17 Google Technology Holdings LLC Ticket-based implementation of content leasing
JP4631969B2 (ja) * 2008-12-25 2011-02-16 富士ゼロックス株式会社 ライセンス管理装置及びライセンス管理プログラム
KR101224717B1 (ko) * 2008-12-26 2013-01-21 에스케이플래닛 주식회사 소프트웨어 라이센스 보호 방법과 그를 위한 시스템, 서버,단말기 및 컴퓨터로 읽을 수 있는 기록매체
US8146159B2 (en) * 2009-01-20 2012-03-27 Check Point Software Technologies, Ltd. Methods for inspecting security certificates by network security devices to detect and prevent the use of invalid certificates
US8572193B2 (en) 2009-02-10 2013-10-29 Certusview Technologies, Llc Methods, apparatus, and systems for providing an enhanced positive response in underground facility locate and marking operations
CA2759932C (en) * 2009-02-10 2015-08-11 Certusview Technologies, Llc Methods, apparatus, and systems for generating limited access files for searchable electronic records of underground facility locate and/or marking operations
US8902251B2 (en) * 2009-02-10 2014-12-02 Certusview Technologies, Llc Methods, apparatus and systems for generating limited access files for searchable electronic records of underground facility locate and/or marking operations
CA2897462A1 (en) * 2009-02-11 2010-05-04 Certusview Technologies, Llc Management system, and associated methods and apparatus, for providing automatic assessment of a locate operation
US8296308B2 (en) * 2009-02-11 2012-10-23 Certusview Technologies, Llc Methods and apparatus for associating a virtual white line (VWL) image with corresponding ticket information for an excavation project
US20100211591A1 (en) * 2009-02-16 2010-08-19 Chuan-Hua Chang Apparatus for processing strings simultaneously
US8391494B1 (en) * 2009-02-26 2013-03-05 Symantec Corporation Systems and methods for protecting enterprise rights management keys
US9282337B2 (en) * 2009-02-27 2016-03-08 Vixs Systems, Inc. Media source device with digital format conversion and methods for use therewith
US20100241855A1 (en) * 2009-03-17 2010-09-23 Cyberlink Corp. Systems and Methods for Secure Execution of Code Using a Hardware Protection Module
US8929303B2 (en) * 2009-04-06 2015-01-06 Samsung Electronics Co., Ltd. Control and data channels for advanced relay operation
GB0906004D0 (en) * 2009-04-07 2009-05-20 Omnifone Ltd MusicStation desktop
WO2010134996A2 (en) 2009-05-20 2010-11-25 Intertrust Technologies Corporation Content sharing systems and methods
CA2762967A1 (en) 2009-05-21 2010-11-25 Intertrust Technologies Corporation Content delivery systems and methods
US8914903B1 (en) * 2009-06-03 2014-12-16 Amdocs Software System Limited System, method, and computer program for validating receipt of digital content by a client device
US8332536B2 (en) * 2009-06-11 2012-12-11 International Business Machines Corporation Content protection continuity through authorized chains of components
CN101587523B (zh) * 2009-07-02 2012-04-18 飞天诚信科技股份有限公司 保护软件的方法和装置
US20140289184A1 (en) * 2009-09-09 2014-09-25 Sanjeev Kumar Biswas License structure representation for license management
US9003553B2 (en) 2009-09-10 2015-04-07 Symantec Corporation Viewing content under enterprise digital rights management without a client side access component
WO2011071872A1 (en) 2009-12-07 2011-06-16 Certusview Technologies, Llc Methods, apparatus, and systems for facilitating compliance with marking specifications for dispensing marking material
TW201122898A (en) * 2009-12-18 2011-07-01 Hannstar Display Corp Digital data management system and method.
US9589114B2 (en) * 2010-01-05 2017-03-07 Microsoft Technology Licensing, Llc Policy for digital rights management
US8712045B2 (en) * 2010-01-07 2014-04-29 Microsoft Corporation Digital rights management for media streams
US8307134B2 (en) * 2010-01-15 2012-11-06 Apple Inc. Multiple communication interfaces on a portable storage device
US10268805B2 (en) * 2010-01-26 2019-04-23 At&T Intellectual Property I, L.P. System and method for providing multimedia digital rights transfer
CA2716436A1 (en) 2010-03-01 2011-09-01 Dundas Data Visualization, Inc. Systems and methods for generating data visualization dashboards
US8612313B2 (en) * 2010-03-03 2013-12-17 Verizon Patent And Licensing Inc. Metadata subscription systems and methods
US8544103B2 (en) 2010-05-04 2013-09-24 Intertrust Technologies Corporation Policy determined accuracy of transmitted information
GB201008368D0 (en) * 2010-05-20 2010-07-07 Moore Jesse K Mobile meter
US8984271B2 (en) 2010-06-07 2015-03-17 Protected Mobility, Llc User interface systems and methods for input and display of secure and insecure message oriented communications
US9172680B2 (en) 2010-06-07 2015-10-27 Protected Mobility, Llc Systems and methods for enabling secure messaging, command, and control of remote devices, communicated via a short message service or other message oriented communications mediums
US9143324B2 (en) * 2010-06-07 2015-09-22 Protected Mobility, Llc Secure messaging
US9602277B2 (en) 2010-06-07 2017-03-21 Protected Mobilty, Llc User interface systems and methods for secure message oriented communications
US9100693B2 (en) * 2010-06-08 2015-08-04 Intel Corporation Methods and apparatuses for securing playback content
US8874896B2 (en) 2010-06-18 2014-10-28 Intertrust Technologies Corporation Secure processing systems and methods
US8799177B1 (en) * 2010-07-29 2014-08-05 Intuit Inc. Method and apparatus for building small business graph from electronic business data
US8918898B2 (en) 2010-07-30 2014-12-23 Certusview Technologies, Llc Methods, apparatus and systems for onsite linking to location-specific electronic records of locate operations
WO2012033602A1 (en) 2010-08-11 2012-03-15 Steven Nielsen Methods, apparatus and systems for facilitating generation and assessment of engineering plans
US20120042134A1 (en) * 2010-08-11 2012-02-16 Hank Risan Method and system for circumventing usage protection applicable to electronic media
US8564621B2 (en) * 2010-08-11 2013-10-22 International Business Machines Corporation Replicating changes between corresponding objects
US8392452B2 (en) * 2010-09-03 2013-03-05 Hulu Llc Method and apparatus for callback supplementation of media program metadata
US8832855B1 (en) * 2010-09-07 2014-09-09 Symantec Corporation System for the distribution and deployment of applications with provisions for security and policy conformance
US8453258B2 (en) * 2010-09-15 2013-05-28 Bank Of America Corporation Protecting an electronic document by embedding an executable script
CA2754520A1 (en) 2010-10-07 2012-04-07 Dundas Data Visualization, Inc. Systems and methods for dashboard image generation
CN103229187B (zh) * 2010-10-15 2016-03-23 甲骨文美国公司 Java存储电视机
FR2966620B1 (fr) * 2010-10-26 2012-12-28 Oberthur Technologies Procede et systeme de controle de l'execution d'une fonction protegee par authentification d'un utilisateur, notamment pour l'acces a une ressource
US8924706B2 (en) 2010-11-05 2014-12-30 Protected Mobility, Llc Systems and methods using one time pads during the exchange of cryptographic material
US8798262B1 (en) * 2010-12-23 2014-08-05 Emc Corporation Preserving LBA information between layers of a storage I/O stack for LBA-dependent encryption
CN102098293B (zh) * 2010-12-28 2013-07-10 北京深思洛克软件技术股份有限公司 加密邮件的预览方法
CA2737148A1 (en) 2011-01-06 2012-07-06 Dundas Data Visualization, Inc. Methods and systems for providing a discussion thread to key performance indicator information
US8687807B2 (en) 2011-01-26 2014-04-01 Nagrastar, L.L.C. Cascading dynamic crypto periods
US8458459B2 (en) * 2011-02-14 2013-06-04 Morega Systems Inc. Client device and local station with digital rights management and methods for use therewith
US20120216269A1 (en) * 2011-02-18 2012-08-23 Mitel Networks Corporation Software licensing in a virtualization environment
US9519717B2 (en) * 2011-03-02 2016-12-13 Microsoft Technology Licensing, Llc Content customization with security for client preferences
WO2012138804A2 (en) * 2011-04-04 2012-10-11 Nextlabs, Inc. Protecting information using policies and encryption
US20120284802A1 (en) * 2011-05-02 2012-11-08 Authentec, Inc. Method for playing digital contents protected with a drm (digital right management) scheme and corresponding system
US20120284804A1 (en) * 2011-05-02 2012-11-08 Authentec, Inc. System and method for protecting digital contents with digital rights management (drm)
US9202024B2 (en) 2011-05-02 2015-12-01 Inside Secure Method for playing digital contents projected with a DRM (digital rights management) scheme and corresponding system
US9721071B2 (en) * 2011-06-29 2017-08-01 Sonic Ip, Inc. Binding of cryptographic content using unique device characteristics with server heuristics
US9471373B2 (en) 2011-09-24 2016-10-18 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US9575903B2 (en) * 2011-08-04 2017-02-21 Elwha Llc Security perimeter
US9170843B2 (en) 2011-09-24 2015-10-27 Elwha Llc Data handling apparatus adapted for scheduling operations according to resource allocation based on entitlement
US9465657B2 (en) 2011-07-19 2016-10-11 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US8955111B2 (en) 2011-09-24 2015-02-10 Elwha Llc Instruction set adapted for security risk monitoring
US9460290B2 (en) 2011-07-19 2016-10-04 Elwha Llc Conditional security response using taint vector monitoring
US9098608B2 (en) 2011-10-28 2015-08-04 Elwha Llc Processor configured to allocate resources using an entitlement vector
US9798873B2 (en) 2011-08-04 2017-10-24 Elwha Llc Processor operable to ensure code integrity
US8930714B2 (en) 2011-07-19 2015-01-06 Elwha Llc Encrypted memory
US9443085B2 (en) 2011-07-19 2016-09-13 Elwha Llc Intrusion detection using taint accumulation
US9558034B2 (en) 2011-07-19 2017-01-31 Elwha Llc Entitlement vector for managing resource allocation
US9298918B2 (en) 2011-11-30 2016-03-29 Elwha Llc Taint injection and tracking
US8800058B2 (en) * 2011-07-27 2014-08-05 Microsoft Corporation Licensing verification for application use
EP2560124A1 (en) * 2011-08-02 2013-02-20 Tata Consultancy Services Limited Access rights management in enterprise digital rights management systems
US9021278B2 (en) * 2011-08-10 2015-04-28 Qualcomm Incorporated Network association of communication devices based on attenuation information
US9270471B2 (en) * 2011-08-10 2016-02-23 Microsoft Technology Licensing, Llc Client-client-server authentication
US9069943B2 (en) * 2011-08-15 2015-06-30 Bank Of America Corporation Method and apparatus for token-based tamper detection
US9009855B2 (en) * 2011-09-11 2015-04-14 Microsoft Technology Licensing, Llc Generating developer license to execute developer application
US8886925B2 (en) 2011-10-11 2014-11-11 Citrix Systems, Inc. Protecting enterprise data through policy-based encryption of message attachments
US9280377B2 (en) 2013-03-29 2016-03-08 Citrix Systems, Inc. Application with multiple operation modes
CN104054084B (zh) * 2011-10-17 2017-07-28 英特托拉斯技术公司 用于保护和管理基因组及其它信息的系统和方法
US9137651B2 (en) * 2011-11-22 2015-09-15 International Business Machines Corporation Systems and methods for determining relationships between mobile applications and electronic device users
US8635675B2 (en) * 2011-12-02 2014-01-21 Empire Technology Development Llc Integrated circuits as a service
US8984273B2 (en) 2011-12-16 2015-03-17 Protected Mobility, Llc Method to provide secure multimedia messaging between peer systems
CA2859794A1 (en) * 2011-12-22 2013-06-27 Abbvie Inc. Application security framework
US9536105B2 (en) * 2012-01-26 2017-01-03 Nokia Technologies Oy Method and apparatus for providing data access via multi-user views
US8745654B1 (en) 2012-02-09 2014-06-03 The Directv Group, Inc. Method and system for managing digital rights for content
US8640190B1 (en) * 2012-02-09 2014-01-28 Symantec Corporation Parental control policy generation
EP2815593A4 (en) 2012-02-17 2015-08-12 Intertrust Tech Corp VEHICLE TRANSLATION SYSTEMS AND METHODS
US9401904B1 (en) 2012-03-15 2016-07-26 Motio, Inc. Security migration in a business intelligence environment
US9503512B2 (en) 2012-03-21 2016-11-22 Intertrust Technologies Corporation Distributed computation systems and methods
US8813246B2 (en) 2012-04-23 2014-08-19 Inside Secure Method for playing digital contents protected with a DRM (digital right management) scheme and corresponding system
CN108347713B (zh) * 2012-04-27 2021-12-28 交互数字专利控股公司 Wtru及由wtru执行的方法
EP3512293A3 (en) 2012-04-27 2019-10-02 Interdigital Patent Holdings, Inc. Apparatus and method for resource allocation for device-to-device (d2d) communication
WO2013188312A1 (en) 2012-06-11 2013-12-19 Intertrust Technologies Corporation Data collection and analysis systems and methods
US9053318B2 (en) * 2012-07-17 2015-06-09 CallSign, Inc. Anti-cloning system and method
US9160719B2 (en) 2012-07-20 2015-10-13 Protected Mobility, Llc Hiding ciphertext using a linguistics algorithm with dictionaries
US9355157B2 (en) 2012-07-20 2016-05-31 Intertrust Technologies Corporation Information targeting systems and methods
US9577986B1 (en) * 2012-07-27 2017-02-21 Daniel A Dooley Secure data verification technique
EP2701090A1 (en) * 2012-08-22 2014-02-26 Aahlstö OÜ Method and system for enforcing 3D restricted rights in a rapid manufacturing and prototyping environment
US8635373B1 (en) * 2012-09-22 2014-01-21 Nest Labs, Inc. Subscription-Notification mechanisms for synchronization of distributed states
US8910239B2 (en) 2012-10-15 2014-12-09 Citrix Systems, Inc. Providing virtualized private network tunnels
US9971585B2 (en) 2012-10-16 2018-05-15 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
CN104854561B (zh) 2012-10-16 2018-05-11 思杰系统有限公司 用于应用程序管理框架的应用程序封装
US9015212B2 (en) 2012-10-16 2015-04-21 Rackspace Us, Inc. System and method for exposing cloud stored data to a content delivery network
WO2014074513A1 (en) 2012-11-06 2014-05-15 Intertrust Technologies Corporation Activity recognition systems and methods
US9734249B2 (en) 2012-11-07 2017-08-15 Intertrust Technologies Corporation Personalized data management systems and methods
US10598503B2 (en) 2012-11-07 2020-03-24 Intertrust Technologies Corporation Vehicle charging path optimization systems and methods
TWI463320B (zh) * 2012-11-29 2014-12-01 Mstar Semiconductor Inc 記憶體存取權限控制方法與相關記憶體管理系統
US9219791B2 (en) 2012-12-13 2015-12-22 Digiboo Llc Digital filling station for digital locker content
US8560455B1 (en) * 2012-12-13 2013-10-15 Digiboo Llc System and method for operating multiple rental domains within a single credit card domain
US10672046B2 (en) 2012-12-31 2020-06-02 Baker Hughes, A Ge Company, Llc Systems and methods for non-destructive testing online stores
US9418050B1 (en) * 2013-01-09 2016-08-16 Pinterest, Inc. Obtaining attribution information for representations
US9286644B2 (en) * 2013-01-12 2016-03-15 Pro Softnet Corporation Method for sharing multiple data items using a single URL
US9576141B2 (en) 2013-01-22 2017-02-21 Amazon Technologies, Inc. Access controls on the use of freeform metadata
US10325298B2 (en) * 2013-01-22 2019-06-18 General Electric Company Systems and methods for a non-destructive testing ecosystem
US9530020B2 (en) * 2013-01-22 2016-12-27 Amazon Technologies, Inc. Use of freeform metadata for access control
US10341281B2 (en) 2013-01-22 2019-07-02 Amazon Technologies, Inc. Access control policies associated with freeform metadata
US9647838B2 (en) * 2013-01-25 2017-05-09 Ralph John Hilla Restructuring the computer and its association with the internet
US9294485B2 (en) * 2013-01-27 2016-03-22 Dropbox, Inc. Controlling access to shared content in an online content management system
BR112015021754A2 (pt) 2013-03-12 2017-07-18 Intertrust Tech Corp sistemas e métodos de transação segura
US9626489B2 (en) 2013-03-13 2017-04-18 Intertrust Technologies Corporation Object rendering systems and methods
US9509688B1 (en) 2013-03-13 2016-11-29 EMC IP Holding Company LLC Providing malicious identity profiles from failed authentication attempts involving biometrics
US10073956B2 (en) * 2013-03-14 2018-09-11 Open Text Sa Ulc Integration services systems, methods and computer program products for ECM-independent ETL tools
US9159078B2 (en) 2013-03-15 2015-10-13 True Ultimate Standards Everywhere, Inc. Managing identifiers
US9565211B2 (en) 2013-03-15 2017-02-07 True Ultimate Standards Everywhere, Inc. Managing exchanges of sensitive data
US9864873B2 (en) 2013-03-15 2018-01-09 Trustarc Inc Managing data handling policies
US20140282696A1 (en) * 2013-03-15 2014-09-18 Qualcomm Incorporated Advertising download verification
US8959595B2 (en) 2013-03-15 2015-02-17 Bullaproof, Inc. Methods and systems for providing secure transactions
US10482397B2 (en) 2013-03-15 2019-11-19 Trustarc Inc Managing identifiers
US10284627B2 (en) 2013-03-29 2019-05-07 Citrix Systems, Inc. Data management for an application with multiple operation modes
US9355223B2 (en) 2013-03-29 2016-05-31 Citrix Systems, Inc. Providing a managed browser
US9985850B2 (en) 2013-03-29 2018-05-29 Citrix Systems, Inc. Providing mobile device management functionalities
US9306981B2 (en) 2013-04-24 2016-04-05 Intertrust Technologies Corporation Bioinformatic processing systems and methods
US9721120B2 (en) * 2013-05-14 2017-08-01 Apple Inc. Preventing unauthorized calls to a protected function
US9763067B2 (en) 2013-05-28 2017-09-12 Protected Mobility, Llc Methods and apparatus for long-short wave, low-high frequency radio secure message service
US9239933B2 (en) * 2013-06-14 2016-01-19 Richard Chuang Piracy prevention and usage control system using access-controlled encrypted data containers
US20160308839A1 (en) * 2013-06-14 2016-10-20 Richard Chuang Piracy prevention and usage control system using access-controlled encrypted data containers
CN104254004A (zh) * 2013-06-28 2014-12-31 中国科学院声学研究所 一种适合高码率音视频内容的数字版权保护方法和系统
US9367339B2 (en) * 2013-07-01 2016-06-14 Amazon Technologies, Inc. Cryptographically attested resources for hosting virtual machines
WO2015023652A1 (en) 2013-08-12 2015-02-19 Christopher Alston Technologies for video-based commerce
US9218437B1 (en) * 2013-09-27 2015-12-22 Amazon Technologies, Inc. Systems and methods providing event data
US9361379B1 (en) 2013-09-27 2016-06-07 Amazon Technologies, Inc. Systems and methods providing recommendation data
US9021606B1 (en) * 2013-09-27 2015-04-28 Amazon Technologies, Inc. Systems and methods providing format data
US9178881B2 (en) 2013-10-09 2015-11-03 Microsoft Technology Licensing, Llc Proof of device genuineness
JP6389249B2 (ja) * 2013-10-14 2018-09-12 ノキア テクノロジーズ オサケユイチア コンテキスト上の関係に基づくメディア・ファイルを識別するための方法と装置
US9391980B1 (en) * 2013-11-11 2016-07-12 Google Inc. Enterprise platform verification
CN104767613B (zh) * 2014-01-02 2018-02-13 腾讯科技(深圳)有限公司 签名验证方法、装置及系统
US10419400B2 (en) 2014-01-29 2019-09-17 Intertrust Technologies Corporation Secure application processing systems and methods
US9251334B1 (en) * 2014-01-30 2016-02-02 Amazon Technologies, Inc. Enabling playback of media content
US9876991B1 (en) 2014-02-28 2018-01-23 Concurrent Computer Corporation Hierarchical key management system for digital rights management and associated methods
JP2015203901A (ja) * 2014-04-11 2015-11-16 キヤノン株式会社 管理システム、情報処理装置、管理サーバ、それらの制御方法、およびプログラム
US10838378B2 (en) * 2014-06-02 2020-11-17 Rovio Entertainment Ltd Control of a computer program using media content
CA2893912C (en) 2014-06-09 2022-10-18 Dundas Data Visualization, Inc. Systems and methods for optimizing data analysis
US20150378560A1 (en) * 2014-06-30 2015-12-31 Kobo Inc. Unlocking content on a computing device from a preview
FR3024790B1 (fr) * 2014-08-05 2016-09-09 Bernard Gilbert Jean Marie France Dispositif de transmission de courriers electroniques pour des terminaux non relies a un reseau informatique
US9398332B2 (en) * 2014-08-14 2016-07-19 Verizon Patent And Licensing Inc. Checking in and checking out content from a media client device
WO2016040186A1 (en) * 2014-09-08 2016-03-17 Good Technology Corporation Shared lock state
US9806887B1 (en) * 2014-09-23 2017-10-31 Amazon Technologies, Inc. Authenticating nonces prior to encrypting and decrypting cryptographic keys
WO2016118216A2 (en) 2014-11-06 2016-07-28 Intertrust Technologies Corporation Secure application distribution systems and methods
US11244261B2 (en) 2014-11-11 2022-02-08 Amazon Technologies, Inc. Catalog service platform for deploying applications and services
US10565534B2 (en) * 2014-11-11 2020-02-18 Amazon Technologies, Inc. Constraints and constraint sharing in a catalog service platform
US20160173502A1 (en) * 2014-12-15 2016-06-16 International Business Machines Corporation Jurisdictional cloud data access
US10205710B2 (en) 2015-01-08 2019-02-12 Intertrust Technologies Corporation Cryptographic systems and methods
US9996680B2 (en) * 2015-01-18 2018-06-12 F. Scott Deaver Methods and related apparatus for managing access to digital assets
US9516000B2 (en) * 2015-03-27 2016-12-06 International Business Machines Corporation Runtime instantiation of broadcast encryption schemes
US11762989B2 (en) * 2015-06-05 2023-09-19 Bottomline Technologies Inc. Securing electronic data by automatically destroying misdirected transmissions
US20160364553A1 (en) * 2015-06-09 2016-12-15 Intel Corporation System, Apparatus And Method For Providing Protected Content In An Internet Of Things (IOT) Network
US10389716B2 (en) 2015-07-29 2019-08-20 RegDOX Solutions Inc. Secure document storage system
WO2017044563A1 (en) * 2015-09-09 2017-03-16 Mastercard International Incorporated Method and system for intelligent storage and distribution of media keys for content delivery
US9467726B1 (en) 2015-09-30 2016-10-11 The Directv Group, Inc. Systems and methods for provisioning multi-dimensional rule based entitlement offers
US9723347B2 (en) * 2015-10-01 2017-08-01 Sorenson Media, Inc Frequency capping for media content
US9848214B2 (en) 2015-10-01 2017-12-19 Sorenson Media, Inc. Sequentially overlaying media content
US10317243B2 (en) 2015-10-15 2019-06-11 Intertrust Technologies Corporation Sensor information management systems and methods
US20170109537A1 (en) * 2015-10-16 2017-04-20 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Vorrichtung, die zugriffsschutz fuer strukturhaltige verteilte daten realisiert
US10599817B2 (en) 2016-03-08 2020-03-24 Adobe Inc. Portion-level digital rights management in digital content
US10346594B2 (en) 2016-03-24 2019-07-09 Adobe Inc. Digital rights management leveraging motion or environmental traits
US20170278206A1 (en) * 2016-03-24 2017-09-28 Adobe Systems Incorporated Digital Rights Management and Updates
US10460082B2 (en) 2016-04-04 2019-10-29 Adobe Inc. Digital rights management progressive control and background processing
WO2017194231A1 (en) * 2016-05-12 2017-11-16 Koninklijke Philips N.V. Digital rights management for anonymous digital content sharing
US10182387B2 (en) 2016-06-01 2019-01-15 At&T Intellectual Property I, L.P. Method and apparatus for distributing content via diverse networks
RU2647635C2 (ru) * 2016-06-20 2018-03-16 Общество с ограниченной ответственностью "Телепорт Русь" (ООО "Телепорт Русь") Способ и система распространения контента в сети передачи данных со встроенным механизмом условного доступа
WO2017222428A1 (en) * 2016-06-20 2017-12-28 Obschestvo S Ogranichennoi Otvetstvennostyu "Teleport Rus" Method and system of content distribution in the data transfer network
US10372883B2 (en) * 2016-06-24 2019-08-06 Scripps Networks Interactive, Inc. Satellite and central asset registry systems and methods and rights management systems
US11868445B2 (en) * 2016-06-24 2024-01-09 Discovery Communications, Llc Systems and methods for federated searches of assets in disparate dam repositories
US11157641B2 (en) * 2016-07-01 2021-10-26 Microsoft Technology Licensing, Llc Short-circuit data access
EP3287931A1 (en) * 2016-08-22 2018-02-28 Keyp GmbH Data guard system
CN109863494A (zh) * 2016-08-22 2019-06-07 Keyp股份有限公司 数据防护系统
EP3287919A1 (en) * 2016-08-22 2018-02-28 Keyp GmbH Data guard system
US10607025B2 (en) 2016-09-15 2020-03-31 PeerNova, Inc. Access control through data structures
US10218704B2 (en) 2016-10-06 2019-02-26 Cisco Technology, Inc. Resource access control using named capabilities
US11334852B2 (en) * 2016-12-08 2022-05-17 Airwatch Llc Secured attachment management
US10313223B2 (en) 2016-12-14 2019-06-04 Level 3 Communications, Llc Object integrity verification in a content delivery network (CDN)
US11216578B2 (en) * 2016-12-26 2022-01-04 Osaka University Data analysis method and data analysis system
US10965474B1 (en) * 2017-02-27 2021-03-30 Apple Inc. Modifying security state with highly secured devices
US11954071B1 (en) * 2017-06-11 2024-04-09 Jennifer Shin File naming and management system
US10756898B2 (en) 2017-06-12 2020-08-25 Rebel AI LLC Content delivery verification
IT201700087238A1 (it) * 2017-07-28 2019-01-28 Alessandro Capuzzello Sistema elettronico per autenticazione sicura dell’identità di un utente
JP6892361B2 (ja) * 2017-09-21 2021-06-23 キオクシア株式会社 ストレージ装置
EP3486772A1 (en) * 2017-11-16 2019-05-22 Siemens Aktiengesellschaft Method for reciprocally integrating applications in an industrial program-control system
US10693662B2 (en) * 2018-02-22 2020-06-23 Idlogiq Inc. Methods for secure serialization of supply chain product units
CN108389059A (zh) * 2018-02-26 2018-08-10 成都大学 基于权属的数字版权作品保护、交易和发行方法及系统
US10839050B2 (en) * 2018-03-08 2020-11-17 Microsoft Technology Licensing, Llc Activation of an application based on prior activation of an isolated counterpart application
RU181439U1 (ru) * 2018-04-06 2018-07-13 Оксана Валерьевна Кириченко Децентрализованная технологическая платформа хранения и обмена данными транзакций в распределенной вычислительной сети
US11748455B2 (en) * 2018-05-25 2023-09-05 Intertrust Technologies Corporation Digital rights management systems and methods using efficient messaging architectures
US11362824B2 (en) * 2018-05-25 2022-06-14 Intertrust Technologies Corporation Content management systems and methods using proxy reencryption
US20200034515A1 (en) * 2018-07-27 2020-01-30 Comcast Cable Communications, Llc Digital rights management interface
US20200242213A1 (en) * 2019-01-28 2020-07-30 Blackberry Limited Method and system for digital rights management
US11636220B2 (en) * 2019-02-01 2023-04-25 Intertrust Technologies Corporation Data management systems and methods
US11182866B2 (en) * 2019-02-20 2021-11-23 Aon Risk Services, Inc. Of Maryland Digital property authentication and management system
RU189720U1 (ru) * 2019-02-20 2019-05-31 Смаль Алексей Игоревич Технологическая платформа интеграции игровых ресурсов сети Интернет для покупки пользователями товаров и услуг
KR102250124B1 (ko) * 2019-03-08 2021-05-10 임근만 수제맥주 제조장치와 제조플렛폼 및 이를 이용한 수제맥주 제조방법
US11356283B2 (en) * 2019-05-08 2022-06-07 Seagate Technology Llc Data storage using an encryption key with a time expiration associated therewith
US10904251B2 (en) 2019-05-17 2021-01-26 Advanced New Technologies Co., Ltd. Blockchain-based copyright protection method and apparatus, and electronic device
EP3745640A1 (en) 2019-05-31 2020-12-02 Siemens Aktiengesellschaft Establishing secure communication without local time information
JP7335591B2 (ja) * 2019-07-22 2023-08-30 コネクトフリー株式会社 コンピューティングシステムおよび情報処理方法
US20210056053A1 (en) * 2019-08-19 2021-02-25 Cryptography Research, Inc. Application authentication and data encryption without stored pre-shared keys
JP2021044646A (ja) * 2019-09-10 2021-03-18 シャープ株式会社 情報処理システム、情報処理方法、及び情報処理プログラム
US10764732B1 (en) * 2019-09-30 2020-09-01 At&T Intellectual Property I, L.P. Methods, systems, and devices for providing subscription services for a communication device using an operational profile
US10856121B1 (en) 2019-10-22 2020-12-01 At&T Intellectual Property I, L.P. Methods, systems, and devices for providing subscription services to a communication device that shares an operational profile with another communication device
US11159927B2 (en) 2019-11-04 2021-10-26 At&T Intellectual Property I, L.P. Methods, systems, and devices for establishing an active subscription for services of a mobile network
US10834574B1 (en) 2019-11-04 2020-11-10 At&T Intellectual Property I, L.P. Methods, systems, and devices for obtaining a profile enabling establishment of an active subscription for services of a mobile network
US11381658B2 (en) 2019-11-08 2022-07-05 At&T Intellectual Property I, L.P. Managing devices through use of blocks of operational profiles
RU2722239C1 (ru) * 2019-11-26 2020-05-28 Общество с ограниченной ответственностью «ПИРФ» (ООО «ПИРФ») Способ создания и использования формата исполняемого файла с динамическим расширяемым заголовком
US11516192B2 (en) * 2019-12-19 2022-11-29 Augustine Fou System and method for combinatorial security
CN113014531B (zh) * 2019-12-20 2022-11-29 中标软件有限公司 一种应用于电子邮件数据加密传输的方法
US20210243035A1 (en) * 2020-02-03 2021-08-05 Micron Technology, Inc. Multi-factor authentication enabled memory sub-system
US11928758B2 (en) 2020-03-06 2024-03-12 Christopher Renwick Alston Technologies for augmented-reality
US11151229B1 (en) 2020-04-10 2021-10-19 Avila Technology, LLC Secure messaging service with digital rights management using blockchain technology
US10873852B1 (en) 2020-04-10 2020-12-22 Avila Technology, LLC POOFster: a secure mobile text message and object sharing application, system, and method for same
KR102472893B1 (ko) * 2020-10-08 2022-11-30 명지대학교 산학협력단 미디어 사물인터넷에서 미션 다이어그램을 이용한 미디어사물의 미션을 수행하기 위한 시스템, 이를 위한 방법 및 이 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체
US20220126788A1 (en) * 2020-10-23 2022-04-28 Ford Global Technologies, Llc Biometric authenticated vehicle start with paired sensor to key intrustion detection
WO2022164899A1 (en) * 2021-01-29 2022-08-04 Docusign, Inc. Document package modifications based on assigned permissions in a document management platform
KR102547745B1 (ko) * 2021-07-12 2023-06-26 주식회사 아이디스 사전 인증정보를 이용해 네트워크 응답속도를 개선한 영상 보안 시스템
US20240323190A1 (en) * 2021-07-21 2024-09-26 Liveramp, Inc. Publisher Permissioned Activation in Cookieless Authentication Environment
US20230046788A1 (en) * 2021-08-16 2023-02-16 Capital One Services, Llc Systems and methods for resetting an authentication counter
US12093286B2 (en) * 2021-11-19 2024-09-17 Intertrust Technologies Corporation Time series data management systems and methods
US20230224275A1 (en) * 2022-01-12 2023-07-13 Bank Of America Corporation Preemptive threat detection for an information system
CN114745445B (zh) * 2022-04-27 2024-05-28 深圳绿米联创科技有限公司 控制方法、装置、电子设备和存储介质
US20240129110A1 (en) 2022-10-17 2024-04-18 Thales Dis Cpl Usa, Inc. System and method of application resource binding
CN116095155B (zh) * 2023-01-09 2024-07-12 蚂蚁区块链科技(上海)有限公司 数据推送决策方法及装置
KR102654259B1 (ko) * 2023-08-14 2024-04-04 광운대학교 산학협력단 온라인 및 오프라인 유통을 위한 암호화 기반 콘텐츠 서비스 시스템

Family Cites Families (219)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5050213A (en) 1986-10-14 1991-09-17 Electronic Publishing Resources, Inc. Database usage metering and protection system and method
US4827508A (en) * 1986-10-14 1989-05-02 Personal Library Software, Inc. Database usage metering and protection system and method
US4977594A (en) 1986-10-14 1990-12-11 Electronic Publishing Resources, Inc. Database usage metering and protection system and method
US5940504A (en) 1991-07-01 1999-08-17 Infologic Software, Inc. Licensing management system and method in which datagrams including an address of a licensee and indicative of use of a licensed product are sent from the licensee's site
US5126746A (en) * 1991-07-08 1992-06-30 The United States Of America As Represented By The United States Department Of Energy Secure distance ranging by electronic means
US6850252B1 (en) 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
US5414845A (en) * 1992-06-26 1995-05-09 International Business Machines Corporation Network-based computer system with improved network scheduling system
JPH07230380A (ja) 1994-02-15 1995-08-29 Internatl Business Mach Corp <Ibm> 適用業務プログラムの利用管理方法およびシステム
JPH07319691A (ja) * 1994-03-29 1995-12-08 Toshiba Corp 資源保護装置、特権保護装置、ソフトウェア利用法制御装置、及びソフトウェア利用法制御システム
US5629980A (en) 1994-11-23 1997-05-13 Xerox Corporation System for controlling the distribution and use of digital works
JPH08263438A (ja) 1994-11-23 1996-10-11 Xerox Corp ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法
US5638443A (en) * 1994-11-23 1997-06-10 Xerox Corporation System for controlling the distribution and use of composite digital works
US5634012A (en) * 1994-11-23 1997-05-27 Xerox Corporation System for controlling the distribution and use of digital works having a fee reporting mechanism
US5715403A (en) 1994-11-23 1998-02-03 Xerox Corporation System for controlling the distribution and use of digital works having attached usage rights where the usage rights are defined by a usage rights grammar
US7069451B1 (en) * 1995-02-13 2006-06-27 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5943422A (en) 1996-08-12 1999-08-24 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US6157721A (en) 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US6948070B1 (en) 1995-02-13 2005-09-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
CA2212574C (en) 1995-02-13 2010-02-02 Electronic Publishing Resources, Inc. Systems and methods for secure transaction management and electronic rights protection
US7165174B1 (en) * 1995-02-13 2007-01-16 Intertrust Technologies Corp. Trusted infrastructure support systems, methods and techniques for secure electronic commerce transaction and rights management
US7124302B2 (en) 1995-02-13 2006-10-17 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6658568B1 (en) 1995-02-13 2003-12-02 Intertrust Technologies Corporation Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management
US5530235A (en) * 1995-02-16 1996-06-25 Xerox Corporation Interactive contents revealing storage device
US5534975A (en) * 1995-05-26 1996-07-09 Xerox Corporation Document processing system utilizing document service cards to provide document processing services
US5774652A (en) * 1995-09-29 1998-06-30 Smith; Perry Restricted access computer system
US6807534B1 (en) 1995-10-13 2004-10-19 Trustees Of Dartmouth College System and method for managing copyrighted electronic media
US5765152A (en) * 1995-10-13 1998-06-09 Trustees Of Dartmouth College System and method for managing copyrighted electronic media
EP0974129B1 (en) 1996-09-04 2006-08-16 Intertrust Technologies Corp. Trusted infrastructure support systems, methods and techniques for secure electronic commerce, electronic transactions, commerce process control and automation, distributed computing, and rights management
US6052780A (en) * 1996-09-12 2000-04-18 Open Security Solutions, Llc Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information
US6006332A (en) * 1996-10-21 1999-12-21 Case Western Reserve University Rights management system for digital media
JPH10133955A (ja) 1996-10-29 1998-05-22 Matsushita Electric Ind Co Ltd 可搬型メディア駆動装置とその方法、及び可搬型メディアとネットワークの連携装置とその方法
US6023765A (en) 1996-12-06 2000-02-08 The United States Of America As Represented By The Secretary Of Commerce Implementation of role-based access control in multi-level secure systems
US5920861A (en) 1997-02-25 1999-07-06 Intertrust Technologies Corp. Techniques for defining using and manipulating rights management data structures
US5937041A (en) 1997-03-10 1999-08-10 Northern Telecom, Limited System and method for retrieving internet data files using a screen-display telephone terminal
US5999949A (en) 1997-03-14 1999-12-07 Crandall; Gary E. Text file compression system utilizing word terminators
US6735253B1 (en) * 1997-05-16 2004-05-11 The Trustees Of Columbia University In The City Of New York Methods and architecture for indexing and editing compressed video over the world wide web
AU7957998A (en) 1997-06-09 1999-01-25 Intertrust, Incorporated Obfuscation techniques for enhancing software security
US6188995B1 (en) * 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
US6044468A (en) * 1997-08-25 2000-03-28 Emc Corporation Secure transmission using an ordinarily insecure network communication protocol such as SNMP
US6044469A (en) 1997-08-29 2000-03-28 Preview Software Software publisher or distributor configurable software security mechanism
US5941951A (en) * 1997-10-31 1999-08-24 International Business Machines Corporation Methods for real-time deterministic delivery of multimedia data in a client/server system
US6112181A (en) 1997-11-06 2000-08-29 Intertrust Technologies Corporation Systems and methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
US7092914B1 (en) * 1997-11-06 2006-08-15 Intertrust Technologies Corporation Methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
US6065120A (en) * 1997-12-09 2000-05-16 Phone.Com, Inc. Method and system for self-provisioning a rendezvous to ensure secure access to information in a database from multiple devices
US6769019B2 (en) * 1997-12-10 2004-07-27 Xavier Ferguson Method of background downloading of information from a computer network
US5991399A (en) 1997-12-18 1999-11-23 Intel Corporation Method for securely distributing a conditional use private key to a trusted entity on a remote system
US6233577B1 (en) * 1998-02-17 2001-05-15 Phone.Com, Inc. Centralized certificate management system for two-way interactive communication devices in data networks
CN1145359C (zh) 1998-03-16 2004-04-07 联信技术公司 用于连续控制和保护媒体内容的方法和装置
US7809138B2 (en) 1999-03-16 2010-10-05 Intertrust Technologies Corporation Methods and apparatus for persistent control and protection of content
US7606355B2 (en) 1998-04-22 2009-10-20 Echarge Corporation Method and apparatus for ordering goods, services and content over an internetwork
US20040107368A1 (en) * 1998-06-04 2004-06-03 Z4 Technologies, Inc. Method for digital rights management including self activating/self authentication software
US6226618B1 (en) * 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
US6985953B1 (en) * 1998-11-30 2006-01-10 George Mason University System and apparatus for storage and transfer of secure data on web
US7058414B1 (en) 2000-05-26 2006-06-06 Freescale Semiconductor, Inc. Method and system for enabling device functions based on distance information
US6223291B1 (en) * 1999-03-26 2001-04-24 Motorola, Inc. Secure wireless electronic-commerce system with digital product certificates and digital license certificates
US20020194081A1 (en) 1999-04-21 2002-12-19 Perkowski Thomas J. Internet-based consumer service brand marketing communication system which enables service-providers, retailers, and their respective agents and consumers to carry out service-related functions along the demand side of the retail chain in an integrated manner
US6883100B1 (en) * 1999-05-10 2005-04-19 Sun Microsystems, Inc. Method and system for dynamic issuance of group certificates
US6785815B1 (en) * 1999-06-08 2004-08-31 Intertrust Technologies Corp. Methods and systems for encoding and protecting data using digital signature and watermarking techniques
US7152165B1 (en) 1999-07-16 2006-12-19 Intertrust Technologies Corp. Trusted storage systems and methods
US7430670B1 (en) 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US7124170B1 (en) 1999-08-20 2006-10-17 Intertrust Technologies Corp. Secure processing unit systems and methods
US20080133417A1 (en) * 1999-10-18 2008-06-05 Emergent Music Llc System to determine quality through reselling of items
US6842863B1 (en) 1999-11-23 2005-01-11 Microsoft Corporation Certificate reissuance for checking the status of a certificate in financial transactions
US6832316B1 (en) 1999-12-22 2004-12-14 Intertrust Technologies, Corp. Systems and methods for protecting data secrecy and integrity
US7426750B2 (en) 2000-02-18 2008-09-16 Verimatrix, Inc. Network-based content distribution system
US20010033554A1 (en) 2000-02-18 2001-10-25 Arun Ayyagari Proxy-bridge connecting remote users to a limited connectivity network
IL135555A0 (en) * 2000-04-09 2001-05-20 Vidius Inc Preventing unauthorized access to data sent via computer networks
JP3711866B2 (ja) 2000-04-10 2005-11-02 日本電気株式会社 プラグアンドプレイ機能を有するフレームワークおよびその再構成方法
WO2001086462A1 (en) 2000-05-08 2001-11-15 Leap Wireless International, Inc. Method of converting html/xml to hdml/wml in real-time for display on mobile devices
US7313692B2 (en) * 2000-05-19 2007-12-25 Intertrust Technologies Corp. Trust management systems and methods
US6961858B2 (en) 2000-06-16 2005-11-01 Entriq, Inc. Method and system to secure content for distribution via a network
CA2409920C (en) * 2000-06-22 2013-05-14 Microsoft Corporation Distributed computing services platform
AU2001271704A1 (en) * 2000-06-29 2002-01-14 Cachestream Corporation Digital rights management
US7587368B2 (en) * 2000-07-06 2009-09-08 David Paul Felsher Information record infrastructure, system and method
US6976164B1 (en) 2000-07-19 2005-12-13 International Business Machines Corporation Technique for handling subsequent user identification and password requests with identity change within a certificate-based host session
JP2002073861A (ja) * 2000-08-24 2002-03-12 Matsushita Electric Ind Co Ltd 情報配信制御方法
US7010808B1 (en) 2000-08-25 2006-03-07 Microsoft Corporation Binding digital content to a portable storage device or the like in a digital rights management (DRM) system
US7743259B2 (en) 2000-08-28 2010-06-22 Contentguard Holdings, Inc. System and method for digital rights management using a standard rendering engine
JP4269501B2 (ja) * 2000-09-07 2009-05-27 ソニー株式会社 情報記録装置、情報再生装置、情報記録方法、情報再生方法、および情報記録媒体、並びにプログラム提供媒体
GB2366969A (en) 2000-09-14 2002-03-20 Phocis Ltd Copyright protection for digital content distributed over a network
US7171558B1 (en) * 2000-09-22 2007-01-30 International Business Machines Corporation Transparent digital rights management for extendible content viewers
GB0024918D0 (en) 2000-10-11 2000-11-22 Sealedmedia Ltd Method of providing java tamperproofing
GB0024919D0 (en) * 2000-10-11 2000-11-22 Sealedmedia Ltd Method of further securing an operating system
SE519748C2 (sv) 2000-10-23 2003-04-08 Volvo Technology Corp Förfarande för kontroll av behörighet för tillträde till ett objekt samt datorprogramprodukten för utförande av förfaranden
WO2002045316A2 (en) * 2000-11-10 2002-06-06 Full Audio Corporation Digital content distribution and subscription system
US20030177187A1 (en) 2000-11-27 2003-09-18 Butterfly.Net. Inc. Computing grid for massively multi-player online games and other multi-user immersive persistent-state and session-based applications
US7356690B2 (en) * 2000-12-11 2008-04-08 International Business Machines Corporation Method and system for managing a distributed trust path locator for public key certificates relating to the trust path of an X.509 attribute certificate
US7774279B2 (en) * 2001-05-31 2010-08-10 Contentguard Holdings, Inc. Rights offering and granting
US20030220880A1 (en) 2002-01-17 2003-11-27 Contentguard Holdings, Inc. Networked services licensing system and method
US7395430B2 (en) * 2001-08-28 2008-07-01 International Business Machines Corporation Secure authentication using digital certificates
GB2372343A (en) 2001-02-17 2002-08-21 Hewlett Packard Co Determination of a trust value of a digital certificate
US7308717B2 (en) * 2001-02-23 2007-12-11 International Business Machines Corporation System and method for supporting digital rights management in an enhanced Java™ 2 runtime environment
WO2002076003A2 (en) 2001-03-19 2002-09-26 Imesh Ltd. System and method for peer-to-peer file exchange mechanism from multiple sources
US7065507B2 (en) * 2001-03-26 2006-06-20 Microsoft Corporation Supervised license acquisition in a digital rights management system on a computing device
US7509492B2 (en) * 2001-03-27 2009-03-24 Microsoft Corporation Distributed scalable cryptographic access control
US20020144108A1 (en) 2001-03-29 2002-10-03 International Business Machines Corporation Method and system for public-key-based secure authentication to distributed legacy applications
EP1282262A1 (en) * 2001-03-29 2003-02-05 Sony Corporation Information processing apparatus
US20020144283A1 (en) 2001-03-30 2002-10-03 Intertainer, Inc. Content distribution system
US7580988B2 (en) 2001-04-05 2009-08-25 Intertrust Technologies Corporation System and methods for managing the distribution of electronic content
US7516325B2 (en) * 2001-04-06 2009-04-07 Certicom Corp. Device authentication in a PKI
WO2002084975A2 (en) 2001-04-12 2002-10-24 Research In Motion Limited System and method for dynamically pushing information on wireless data communication devices
US20020157002A1 (en) 2001-04-18 2002-10-24 Messerges Thomas S. System and method for secure and convenient management of digital electronic content
US7136840B2 (en) * 2001-04-20 2006-11-14 Intertrust Technologies Corp. Systems and methods for conducting transactions and communications using a trusted third party
US7043050B2 (en) * 2001-05-02 2006-05-09 Microsoft Corporation Software anti-piracy systems and methods utilizing certificates with digital content
US6934702B2 (en) 2001-05-04 2005-08-23 Sun Microsystems, Inc. Method and system of routing messages in a distributed search network
US7249100B2 (en) 2001-05-15 2007-07-24 Nokia Corporation Service discovery access to user location
US6895503B2 (en) * 2001-05-31 2005-05-17 Contentguard Holdings, Inc. Method and apparatus for hierarchical assignment of rights to documents and documents having such rights
US7581103B2 (en) 2001-06-13 2009-08-25 Intertrust Technologies Corporation Software self-checking systems and methods
US7900042B2 (en) * 2001-06-26 2011-03-01 Ncipher Corporation Limited Encrypted packet inspection
US7203966B2 (en) * 2001-06-27 2007-04-10 Microsoft Corporation Enforcement architecture and method for digital rights management system for roaming a license to a plurality of user devices
US8352582B2 (en) * 2001-06-28 2013-01-08 Koninklijke Philips Electronics N.V. Temporal proximity to verify physical proximity
US7421411B2 (en) * 2001-07-06 2008-09-02 Nokia Corporation Digital rights management in a mobile communications environment
US20030009681A1 (en) * 2001-07-09 2003-01-09 Shunji Harada Digital work protection system, recording medium apparatus, transmission apparatus, and playback apparatus
JP4280036B2 (ja) 2001-08-03 2009-06-17 パナソニック株式会社 アクセス権制御システム
US20030037139A1 (en) * 2001-08-20 2003-02-20 Koninklijke Philips Electronics N.V. Content distribution model
US7035944B2 (en) 2001-09-19 2006-04-25 International Business Machines Corporation Programmatic management of software resources in a content framework environment
CA2404602C (en) * 2001-09-21 2009-07-14 Corel Corporation Web services gateway
US20030065956A1 (en) * 2001-09-28 2003-04-03 Abhijit Belapurkar Challenge-response data communication protocol
US7359517B1 (en) 2001-10-09 2008-04-15 Adobe Systems Incorporated Nestable skeleton decryption keys for digital rights management
US20030079133A1 (en) * 2001-10-18 2003-04-24 International Business Machines Corporation Method and system for digital rights management in content distribution application
US7487363B2 (en) 2001-10-18 2009-02-03 Nokia Corporation System and method for controlled copying and moving of content between devices and domains based on conditional encryption of content key depending on usage
AU2002353818B2 (en) * 2001-10-18 2006-04-27 Rovi Solutions Corporation Systems and methods for providing digital rights management compatibility
US7496751B2 (en) 2001-10-29 2009-02-24 Sun Microsystems, Inc. Privacy and identification in a data communications network
CN1579095A (zh) * 2001-10-29 2005-02-09 松下电器产业株式会社 基线内容保护和复制管理数字视频广播的装置
US7254614B2 (en) 2001-11-20 2007-08-07 Nokia Corporation Web services push gateway
WO2003044716A2 (en) 2001-11-20 2003-05-30 Contentguard Holdings, Inc. An extensible rights expression processing system
US20030126086A1 (en) * 2001-12-31 2003-07-03 General Instrument Corporation Methods and apparatus for digital rights management
WO2003058485A1 (en) * 2002-01-12 2003-07-17 Coretrust, Inc. Method and system for the information protection of digital content
US7496757B2 (en) * 2002-01-14 2009-02-24 International Business Machines Corporation Software verification system, method and computer program element
US7603469B2 (en) 2002-01-15 2009-10-13 International Business Machines Corporation Provisioning aggregated services in a distributed computing environment
US20030140119A1 (en) * 2002-01-18 2003-07-24 International Business Machines Corporation Dynamic service discovery
US20030145044A1 (en) * 2002-01-28 2003-07-31 Nokia Corporation Virtual terminal for mobile network interface between mobile terminal and software applications node
US20030144859A1 (en) * 2002-01-31 2003-07-31 Meichun Hsu E-service publication and discovery method and system
US20030172127A1 (en) 2002-02-06 2003-09-11 Northrup Charles J. Execution of process by references to directory service
US6996544B2 (en) * 2002-02-27 2006-02-07 Imagineer Software, Inc. Multiple party content distribution system and method with rights management features
KR100467929B1 (ko) 2002-02-28 2005-01-24 주식회사 마크애니 디지털 컨텐츠의 보호 및 관리를 위한 시스템
US7472270B2 (en) 2002-04-16 2008-12-30 Microsoft Corporation Secure transmission of digital content between a host and a peripheral by way of a digital rights management (DRM) system
US7149899B2 (en) * 2002-04-25 2006-12-12 Intertrust Technologies Corp. Establishing a secure channel with a human user
US7383570B2 (en) * 2002-04-25 2008-06-03 Intertrust Technologies, Corp. Secure authentication systems and methods
US7076249B2 (en) 2002-05-06 2006-07-11 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for generating management data for drifting mobile radios
US8611919B2 (en) 2002-05-23 2013-12-17 Wounder Gmbh., Llc System, method, and computer program product for providing location based services and mobile e-commerce
US7529929B2 (en) 2002-05-30 2009-05-05 Nokia Corporation System and method for dynamically enforcing digital rights management rules
US7296154B2 (en) 2002-06-24 2007-11-13 Microsoft Corporation Secure media path methods, systems, and architectures
AU2003267975A1 (en) * 2002-06-27 2004-01-19 Piranha Media Distribution, Inc. Method and apparatus for the free licensing of digital media content
US7631318B2 (en) * 2002-06-28 2009-12-08 Microsoft Corporation Secure server plug-in architecture for digital rights management systems
US7353402B2 (en) * 2002-06-28 2008-04-01 Microsoft Corporation Obtaining a signed rights label (SRL) for digital content and obtaining a digital license corresponding to the content based on the SRL in a digital rights management system
AU2002950202A0 (en) * 2002-07-11 2002-09-12 University Of Wollongong Methods for standard mechanisms for digital item manipulation and handling
US7401221B2 (en) * 2002-09-04 2008-07-15 Microsoft Corporation Advanced stream format (ASF) data stream header object protection
US20040216127A1 (en) 2002-09-10 2004-10-28 Chutney Technologies Method and apparatus for accelerating web services
KR20050084822A (ko) * 2002-09-23 2005-08-29 코닌클리케 필립스 일렉트로닉스 엔.브이. 인증서 기반 인증된 도메인들
AU2003260880A1 (en) * 2002-09-30 2004-04-19 Koninklijke Philips Electronics N.V. Secure proximity verification of a node on a network
RU2352985C2 (ru) * 2002-10-22 2009-04-20 Конинклейке Филипс Электроникс Н.В. Способ и устройство для санкционирования операций с контентом
US20040088541A1 (en) * 2002-11-01 2004-05-06 Thomas Messerges Digital-rights management system
US20040143546A1 (en) 2002-11-01 2004-07-22 Wood Jeff A. Easy user activation of electronic commerce services
US7757075B2 (en) * 2002-11-15 2010-07-13 Microsoft Corporation State reference
US7899187B2 (en) * 2002-11-27 2011-03-01 Motorola Mobility, Inc. Domain-based digital-rights management system with easy and secure device enrollment
US20040117490A1 (en) * 2002-12-13 2004-06-17 General Instrument Corporation Method and system for providing chaining of rules in a digital rights management system
US7493289B2 (en) * 2002-12-13 2009-02-17 Aol Llc Digital content store system
EP1576447A1 (en) 2002-12-17 2005-09-21 Koninklijke Philips Electronics N.V. System to allow content sharing
CN100353273C (zh) 2002-12-30 2007-12-05 皇家飞利浦电子股份有限公司 在授权域内划分的权利
US8364951B2 (en) * 2002-12-30 2013-01-29 General Instrument Corporation System for digital rights management using distributed provisioning and authentication
US8468227B2 (en) 2002-12-31 2013-06-18 Motorola Solutions, Inc. System and method for rendering content on multiple devices
US20040128546A1 (en) 2002-12-31 2004-07-01 International Business Machines Corporation Method and system for attribute exchange in a heterogeneous federated environment
TWI349204B (en) 2003-01-10 2011-09-21 Panasonic Corp Group admission system and server and client therefor
US20040139312A1 (en) * 2003-01-14 2004-07-15 General Instrument Corporation Categorization of host security levels based on functionality implemented inside secure hardware
US7383586B2 (en) * 2003-01-17 2008-06-03 Microsoft Corporation File system operation and digital rights management (DRM)
JP4284497B2 (ja) * 2003-01-29 2009-06-24 日本電気株式会社 情報共有方法、装置、およびプログラム
US20050004873A1 (en) 2003-02-03 2005-01-06 Robin Pou Distribution and rights management of digital content
US20040158731A1 (en) 2003-02-11 2004-08-12 Microsoft Corporation Publishing digital content within a defined universe such as an organization in accordance with a digital rights management (DRM) system
US7577999B2 (en) 2003-02-11 2009-08-18 Microsoft Corporation Publishing digital content within a defined universe such as an organization in accordance with a digital rights management (DRM) system
US7308573B2 (en) * 2003-02-25 2007-12-11 Microsoft Corporation Enrolling / sub-enrolling a digital rights management (DRM) server into a DRM architecture
US7577964B2 (en) 2003-02-28 2009-08-18 Hewlett-Packard Development Company, L.P. System and methods for defining a binding for web-services
US20040205333A1 (en) * 2003-04-14 2004-10-14 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for digital rights management
JP4759513B2 (ja) * 2003-06-02 2011-08-31 リキッド・マシンズ・インコーポレーテッド 動的、分散的および協働的な環境におけるデータオブジェクトの管理
JP5242915B2 (ja) * 2003-06-05 2013-07-24 インタートラスト テクノロジーズ コーポレイション ピア・ツー・ピアサービス編成ための相互運用システム及び方法
US7272228B2 (en) * 2003-06-12 2007-09-18 International Business Machines Corporation System and method for securing code and ensuring proper execution using state-based encryption
JP2005012282A (ja) * 2003-06-16 2005-01-13 Toshiba Corp 電子商品流通システム、電子商品受信端末、及び電子商品流通方法
US7089594B2 (en) * 2003-07-21 2006-08-08 July Systems, Inc. Application rights management in a mobile environment
US8200775B2 (en) 2005-02-01 2012-06-12 Newsilike Media Group, Inc Enhanced syndication
EP1668586A4 (en) 2003-09-05 2007-02-07 Limelight Networks Inc DIGITAL CONTENT LICENSE MANAGEMENT
US7389273B2 (en) 2003-09-25 2008-06-17 Scott Andrew Irwin System and method for federated rights management
US20050078822A1 (en) * 2003-10-08 2005-04-14 Eyal Shavit Secure access and copy protection management system
US20050102513A1 (en) 2003-11-10 2005-05-12 Nokia Corporation Enforcing authorized domains with domain membership vouchers
US20050108707A1 (en) * 2003-11-14 2005-05-19 Taylor Thomas M. Systems and methods for creating and managing a virtual retail store on end-user client computers within a network
US7657739B2 (en) * 2003-11-25 2010-02-02 Panasonic Corporation Authentication system
US7516331B2 (en) * 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same
US20050234735A1 (en) 2003-11-26 2005-10-20 Williams Jim C Digital rights management using proximity testing
US20050192902A1 (en) 2003-12-05 2005-09-01 Motion Picture Association Of America Digital rights management using multiple independent parameters
US20050177516A1 (en) * 2004-02-06 2005-08-11 Eric Vandewater System and method of protecting digital content
KR100597401B1 (ko) * 2004-02-06 2006-07-06 삼성전자주식회사 컨텐츠 저작권 보호를 위한 drm 관리 방법 및 그 장치
US7676846B2 (en) * 2004-02-13 2010-03-09 Microsoft Corporation Binding content to an entity
EP1790161A4 (en) 2004-02-23 2011-11-30 Hillcrest Lab Inc METHOD AND SYSTEMS FOR A SECURE MEDIA DATA PROCESSING ENVIRONMENT
JP4350549B2 (ja) * 2004-02-25 2009-10-21 富士通株式会社 デジタル著作権管理のための情報処理装置
JP4466148B2 (ja) 2004-03-25 2010-05-26 株式会社日立製作所 ネットワーク転送対応コンテンツ利用管理方法、及びプログラム、コンテンツ転送システム
US7437771B2 (en) 2004-04-19 2008-10-14 Woodcock Washburn Llp Rendering protected digital content within a network of computing devices or the like
US20050262568A1 (en) * 2004-05-18 2005-11-24 Hansen Mark D System and method for managing access to protected content by untrusted applications
US20050273629A1 (en) * 2004-06-04 2005-12-08 Vitalsource Technologies System, method and computer program product for providing digital rights management of protected content
US7711647B2 (en) * 2004-06-10 2010-05-04 Akamai Technologies, Inc. Digital rights management in a distributed network
US20050278256A1 (en) * 2004-06-15 2005-12-15 Eric Vandewater System and method of promoting copy-managed digital content
GB0413848D0 (en) * 2004-06-21 2004-07-21 British Broadcasting Corp Accessing broadcast media
AU2005273532B2 (en) 2004-06-28 2011-04-07 Acano (Uk) Limited System for proximity determination
US20060015580A1 (en) * 2004-07-01 2006-01-19 Home Box Office, A Delaware Corporation Multimedia content distribution
WO2007001329A2 (en) * 2004-07-29 2007-01-04 Infoassure, Inc. Cryptographic key management
US7610011B2 (en) 2004-09-19 2009-10-27 Adam Albrett Providing alternative programming on a radio in response to user input
KR100677152B1 (ko) 2004-11-17 2007-02-02 삼성전자주식회사 사용자 바인딩을 이용한 홈 네트워크에서의 콘텐츠 전송방법
CN1290349C (zh) * 2004-11-30 2006-12-13 北京中星微电子有限公司 一种具有数字版权保护和认证的移动通信系统及方法
EP1672831A1 (fr) * 2004-12-16 2006-06-21 Nagravision S.A. Méthode de transmission de données numériques dans un réseau local
KR100694104B1 (ko) 2005-02-23 2007-03-12 삼성전자주식회사 라운드 트립 시간을 측정하는 방법 및 이를 이용한 인접성검사 방법
US8302178B2 (en) * 2005-03-07 2012-10-30 Noam Camiel System and method for a dynamic policies enforced file system for a data storage device
KR100636232B1 (ko) * 2005-04-29 2006-10-18 삼성전자주식회사 해시 체인을 이용하여 디바이스들간의 인접성을 검사하는방법 및 장치
US20060294580A1 (en) 2005-06-28 2006-12-28 Yeh Frank Jr Administration of access to computer resources on a network
US8239682B2 (en) * 2005-09-28 2012-08-07 Nl Systems, Llc Method and system for digital rights management of documents
WO2007043015A2 (en) * 2005-10-13 2007-04-19 Koninklijke Philips Electronics N.V. Improved proximity detection method
KR100736080B1 (ko) * 2005-10-27 2007-07-06 삼성전자주식회사 다 계층으로 구성된 멀티미디어 스트림의 저작권을 계층별로 관리하는 방법 및 장치
KR100828370B1 (ko) 2006-10-20 2008-05-08 삼성전자주식회사 Drm 컨텐츠 및 라이센스 제공 방법 및 장치, 그리고drm 컨텐츠 사용 방법 및 장치
US7953882B2 (en) * 2007-07-26 2011-05-31 Realnetworks, Inc. Adaptive variable fidelity media distribution system and method
US7831571B2 (en) * 2007-10-25 2010-11-09 International Business Machines Corporation Anonymizing selected content in a document
US10230605B1 (en) 2018-09-04 2019-03-12 Cisco Technology, Inc. Scalable distributed end-to-end performance delay measurement for segment routing policies

Also Published As

Publication number Publication date
CA2626244A1 (en) 2007-04-26
CN102882677A (zh) 2013-01-16
IL190957A0 (en) 2009-02-11
EP2128780A2 (en) 2009-12-02
EP2128780A3 (en) 2010-04-07
CN102882677B (zh) 2015-11-25
EA200901153A1 (ru) 2010-04-30
KR20120004557A (ko) 2012-01-12
KR101285024B1 (ko) 2013-08-27
AP2008004453A0 (en) 2008-04-30
US20070180519A1 (en) 2007-08-02
EP1943603A2 (en) 2008-07-16
WO2007047846A2 (en) 2007-04-26
EP2124164A2 (en) 2009-11-25
JP2009512096A (ja) 2009-03-19
US20070100701A1 (en) 2007-05-03
US20070172041A1 (en) 2007-07-26
JP2012155734A (ja) 2012-08-16
US8688583B2 (en) 2014-04-01
EA200801117A1 (ru) 2009-02-27
WO2007047846A3 (en) 2007-10-18
EP2124164A3 (en) 2010-04-07
US20070100768A1 (en) 2007-05-03
BRPI0617490A2 (pt) 2010-03-23
US8776216B2 (en) 2014-07-08
KR101248296B1 (ko) 2013-03-27
EP2090998B1 (en) 2014-12-03
CN102073819B (zh) 2013-05-29
AU2006304655B2 (en) 2012-08-16
KR101285946B1 (ko) 2013-08-23
EP2090998A1 (en) 2009-08-19
AU2006304655A1 (en) 2007-04-26
CN102073819A (zh) 2011-05-25
KR20120092155A (ko) 2012-08-20
US20070185815A1 (en) 2007-08-09
KR20080064164A (ko) 2008-07-08
IL190957A (en) 2013-03-24
EA012918B1 (ru) 2010-02-26

Similar Documents

Publication Publication Date Title
JP5357292B2 (ja) デジタル著作権管理エンジンのシステムおよび方法
US9626667B2 (en) Digital rights management engine systems and methods
US20160224768A1 (en) Digital Rights Management Engine Systems and Methods
EP1455479B1 (en) Enrolling/sub-enrolling a digital rights management (DRM) server into a DRM architecture
AU2004200468B2 (en) A method, system and computer-readable storage for a licensor to issue a digital license to a requestor
US8719171B2 (en) Issuing a publisher use license off-line in a digital rights management (DRM) system
CN101490686B (zh) 数字权利管理的方法
Abbadi Digital rights management for personal networks
EP1805570A1 (en) Methods for improved authenticity and integrity verification of software and devices capable for carrying out the methods
MX2008005060A (en) Methods for digital rights management

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130730

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130829

R150 Certificate of patent or registration of utility model

Ref document number: 5357292

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees