TWI468969B - Method of authorizing access to electronic content and method of authorizing an action performed thereto - Google Patents

Method of authorizing access to electronic content and method of authorizing an action performed thereto Download PDF

Info

Publication number
TWI468969B
TWI468969B TW95138235A TW95138235A TWI468969B TW I468969 B TWI468969 B TW I468969B TW 95138235 A TW95138235 A TW 95138235A TW 95138235 A TW95138235 A TW 95138235A TW I468969 B TWI468969 B TW I468969B
Authority
TW
Taiwan
Prior art keywords
content
key
node
memory
group
Prior art date
Application number
TW95138235A
Other languages
Chinese (zh)
Other versions
TW200745899A (en
Inventor
Gilles Boccon-Gibod
Julien G Boeuf
Original Assignee
Intertrust Tech Corp
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 Intertrust Tech Corp filed Critical Intertrust Tech Corp
Publication of TW200745899A publication Critical patent/TW200745899A/en
Application granted granted Critical
Publication of TWI468969B publication Critical patent/TWI468969B/en

Links

Landscapes

  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

授權對電子內容作存取的方法及授權對該電子內容執行動作之方法Method of authorizing access to electronic content and method of authorizing action on the electronic content

本發明關係於數位權管理引擎系統與方法。The present invention relates to a digital rights management engine system and method.

在現行電腦系統中,經常想要限制對電子內容、服務、及/或處理資源的存取、及/或只允許某些實體可以執行某些動作。已經有各種技術係針對此控制加以開發或提出。這些技術通常稱為數位權管理(DRM)技術,因為以名稱看來,其目標為管理各種實體在數位或其他電子內容、服務或資源中之權益。很多先前技藝的問題為它們係相當複雜、限制多、並沒有彈性、因而不能完成某些原來類型的關係與處理,及/或不能與其他DRM系統進行相互間之操作。In current computer systems, it is often desirable to limit access to electronic content, services, and/or processing resources, and/or only allow certain entities to perform certain actions. Various technologies have been developed or proposed for this control. These technologies are often referred to as Digital Rights Management (DRM) technology because, by name, the goal is to manage the rights of various entities in digital or other electronic content, services or resources. A number of prior art problems are that they are quite complex, limited, and inflexible, and thus fail to perform some of the original types of relationships and processing, and/or cannot interact with other DRM systems.

於此描述有關於改良DRM的系統與方法,其可以用以改善部份或所有之問題。應了解的是,本發明之實施例可以以各種方式加以實施,包含實施成為程序、設備、系統、裝置、方法、電腦可讀取媒體、及/或其組合。There are described systems and methods for improving DRM that can be used to improve some or all of the problems. It should be appreciated that the embodiments of the invention may be embodied in various forms, including a program, device, system, apparatus, method, computer readable medium, and/or combinations thereof.

用以控制對內容之存取的現行系統有時包含元件,其存取有關於授權存取電子內容的執照。然而,此等元件通常執行對有關於執照的權益管理資訊、鏈路或節點的鏈結或圖表執行僵硬的評估。它們常常不能適用於本質上不同 的授權設計及/或與某些DRM系統一起操作以授權對該內容的存取。本發明之實施例藉由儲存、使用及/或執行有關於該執照的其他常式或控制程式,來克服這些缺點,而提供動態授權特性、完成分散式授權資源、及/或流線存取功能。Current systems for controlling access to content sometimes include components that access licenses for authorizing access to electronic content. However, such components typically perform an assessment of the rigidity of the link to the license management information, link or node, or chart. They often cannot be applied to be essentially different Authorization design and/or operation with certain DRM systems to authorize access to the content. Embodiments of the present invention overcome these shortcomings by storing, using, and/or executing other routines or control programs associated with the license, providing dynamic authorization features, performing decentralized authorization resources, and/or streamline access. Features.

再者,很多現行系統只有關於保有簡單授權/狀態有關資料的狀況。這些系統未能針對存取授權可能取決於多數層資料的狀況,例如,根據與其他節點相關之先前推出資料,來決定條件。本發明配合DRM控制程式,經由靜態資料庫的實施,而克服這些缺點,以提供安全之狀態儲存特性、提供一代一代之持續狀態資訊、或完成改良控制程式執行之讀寫功能、及/或執行更有效之存取授權。Furthermore, many current systems only have information about maintaining simple authorization/status related information. The failure of these systems to access authorization may depend on the condition of most layers of data, for example, based on previously published material associated with other nodes. The present invention cooperates with the DRM control program to overcome these shortcomings through the implementation of a static database to provide secure state storage characteristics, provide continuous state information for generations, or perform read and write functions for improved control program execution, and/or execution. More efficient access authorization.

其他現行系統可以實行DRM執照或結構,其包含涉及使用公鑰之元件,以保護執照元件。然而,有關於這些系統之缺點包含駭客可能偽造存取或執行執照所需之數位簽章,或者,探求存在於DRM執照結構中之相互關聯性。本發明之一或多數實施例可以經由實行包含使用特定保護鑰之執照物件的數位及/或互鎖簽章,而克服這些缺點。這些實施例之優點包含防止經由公鑰之未授權存取及由執照元件相互關聯性所推導之相關特性。Other current systems may implement a DRM license or structure that includes components that involve the use of a public key to protect the license component. However, some of the shortcomings of these systems include that the hacker may falsify the digital signature required to access or execute the license, or explore the interrelationships that exist in the DRM license structure. One or more embodiments of the present invention may overcome these shortcomings by implementing digital and/or interlocking signatures that include license items that use a particular protection key. Advantages of these embodiments include preventing unauthorized access via a public key and related characteristics derived from the interdependencies of the license elements.

其他現行系統包含元件,其在第一實體與第二實體間完成鄰近決定,例如於兩權益管理實體間作鄰近決定。此等系統可能執行一些規則,例如藉由執行繁複之鄰近檢查程序,來表示一件保護內容不能被拷貝於某環境外。然而 ,這些系統之缺點為它們並無法在不妨礙鄰近檢查的效能下,對所保護內容提供安全性。本發明之實施例藉由提供精簡鄰近檢測協定而克服此與其他缺點,該協定經由有關於亂數及/或祕密種傳輸的特性加以保全。即使要求被截取,本案之一或多數實施例的相關優點包含可以使攻擊者很難取得密碼,來決定正確反應。Other current systems include components that perform proximity decisions between the first entity and the second entity, such as proximity decisions between two equity management entities. Such systems may enforce rules such as performing a complex proximity check procedure to indicate that a protected content cannot be copied outside of an environment. however The disadvantage of these systems is that they do not provide security for the content being protected without compromising the effectiveness of proximity checks. Embodiments of the present invention overcome this and other shortcomings by providing a reduced proximity detection protocol that is preserved via characteristics relating to random and/or secret transmissions. Even if the request is intercepted, the related advantages of one or most of the embodiments include making it difficult for an attacker to obtain a password to determine the correct response.

總結,有需要可以適當地授權對電子內容存取,同時也不會有太過複雜、限制過多及/或沒有彈性的技術之系統,也需要能完成某些原來類型關係與程序的系統、及/或需要能與其他DRM系統作相互間操作之系統。To sum up, there is a need to properly authorize access to electronic content, as well as systems that are too complex, too restrictive, and/or inflexible, as well as systems that can perform certain types of relationships and procedures, and / or a system that can operate with other DRM systems.

以下將提供發明主體的詳細說明。雖然描述了幾個實施例,但應了解發明主體並不限定任一實施例,而是包含各種替代、修改及等效。另外,雖然各種特性細節係被說明中被說明,以提供對本發明主體的完整了解,但部份實施例可以沒有這些或所有細節下加以實施。再者,為了清楚起見,在本技藝中已知之技術內容並未加以詳細說明,以避免不必要地阻礙本發明主體。A detailed description of the main body of the invention will be provided below. Although a few embodiments are described, it is to be understood that the subject matter of the invention is not limited to any embodiment, but includes various alternatives, modifications, and equivalents. In addition, although the various features are described in the description to provide a complete understanding of the subject matter of the present invention, some embodiments may be practiced without these or all details. Further, for the sake of clarity, the technical contents known in the art are not described in detail to avoid unnecessarily obstructing the subject matter of the present invention.

A.群組(Octopus)架構A. Group (Octopus) architecture

群組為一簡單、開放及彈性數位權管理(DRM)引擎,其可以為應用程式所使用以實施核心DRM功能。群組被設計以無縫地整合入網路服務環境中及任何主機環境或 軟體架構中。為了建立具有群組的完整客戶DRM,這些環境需要被實施與整合至群組引擎。在較佳實施例中,群組引係無關於特定媒體格式及加密協定,允許了設計者可以彈性如所需地使用標準或專有技術。為群組引擎所使用的管理模型很簡單,但可以用以表示智慧關係與商務模型。Groups are a simple, open and flexible digital rights management (DRM) engine that can be used by applications to implement core DRM functions. Groups are designed to seamlessly integrate into a networked service environment and any host environment or In the software architecture. In order to build a complete customer DRM with groups, these environments need to be implemented and integrated into the group engine. In the preferred embodiment, the group referencing is independent of the particular media format and encryption protocol, allowing the designer to flexibly use standard or proprietary techniques as desired. The management model used for the group engine is simple, but can be used to represent smart relationships and business models.

有關於群組引擎架構的例示實施法的資訊係說明如下,包含參考實施法之資訊及樣品應用程式。該等段落被稱為群組物件、浮游生物(Plankton)、及潛水(Scuba),並提供有關於群組引擎工具箱實施例之資訊。Information on the exemplary implementation of the group engine architecture is described below, including information and sample applications for reference implementations. These paragraphs are referred to as group objects, Plankton, and Scuba, and provide information about the group engine toolbox embodiments.

1.簡介1 Introduction

第1圖顯示群組組件如何在使用DRM的網路中動作。如於第1圖所示,在一實施例中,群組引擎係內藏於主應用程式中。其執行特定DRM功能並依賴用於這些服務的主應用程式,該等服務可以為主機所有效提供,例如加密、解密及檔案管理。Figure 1 shows how the group components act on the network using DRM. As shown in FIG. 1, in one embodiment, the group engine is built into the main application. It performs specific DRM functions and relies on the main application for these services, which can be effectively provided by the host, such as encryption, decryption and file management.

群組建立DRM物件,其一起形成對該內容的執照條件。其也輸送鑰給主應用程式。The group establishes DRM objects that together form a license condition for the content. It also delivers the key to the main application.

應注意的是,第1圖為群組組件可能被如何使用之一例子;群組DRM系統為有彈性的。引擎可以實現在小足跡(footprint)並可以容易地整合入各種類型的應用程式中。It should be noted that Figure 1 is an example of how group components may be used; group DRM systems are resilient. The engine can be implemented in a small footprint and can be easily integrated into various types of applications.

2.了解DRM設定檔及群組物件2. Understand DRM profiles and group objects

群組使用一組內容保護與管理物件,以代表在系統中之實體;保護內容;並將該內容與使用規則相關,並決定當被要求時是否核准存取。名詞DRAM設定檔係被用以代表在這些物件被定義於實際部署時所存在之語意上下文。A group uses a set of content protection and management objects to represent entities in the system; protects the content; correlates the content with usage rules, and determines whether access is granted when requested. The noun DRAM profile is used to represent the semantic context in which these objects are defined in actual deployment.

2.1.群組中之物件簡介2.1. Introduction to objects in the group

在一實施例中,群組引擎使用以下物件,這些係被更詳細說明如下: In one embodiment, the group engine uses the following items, which are described in more detail below:

2.2.節點物件2.2. Node objects

在一實施例中,在系統的每一實體可以以一節點物件代表。只有實體需要為鏈結物件所參考,或者為需要具有對應節點物件的加密目標資訊的接收者。實際上,節點通常代表使用者、裝置或一群體。節點物件也具有相關屬性,其代表有關於該節點的實體的某些特性。In an embodiment, each entity in the system may be represented by a node object. Only the entity needs to be referenced for the linked object, or the recipient of the encrypted target information that needs to have the corresponding node object. In fact, nodes typically represent users, devices, or a group. A node object also has associated properties that represent certain characteristics of the entity with respect to the node.

例如,第2圖顯示兩使用者(Xan及Knox)、兩裝置(Mac與攜帶式裝置)、及幾個實體,其代表群體(例如凱莉(Mariah Carey)家族的會員、公立圖書館的會員、特定音樂服務的訂戶、RIAA許可之裝置、及由特定公司所製造之裝置)。這些的每一個將具有與之相關的節點物件。For example, Figure 2 shows two users (Xan and Knox), two devices (Mac and portable devices), and several entities representing groups (such as members of the Mariah Carey family and members of public libraries). , subscribers to specific music services, RIAA-licensed devices, and devices manufactured by specific companies). Each of these will have a node object associated with it.

2.3.鏈結物件2.3. Linked objects

鏈結物件係為群組所用之已簽章物件,以顯示於兩節點間之關係。例如,在第2圖中之由Mac節點至Knox的鏈結顯示所有權。如同由凱莉家族節點至音樂服務用戶節點之鏈結般,由Knox至凱莉家族節點的鏈結顯示會員。在一實施例中,因為任一鏈結物件只表示於兩節點間之關係,所以,將花用十個鏈結物件以描述如第2圖所示之關係。The linked object is a signed object used by the group to show the relationship between the two nodes. For example, the link from the Mac node to Knox in Figure 2 shows ownership. As with the link from the Kelly family node to the music service user node, the link from Knox to the Kelly family node shows the membership. In one embodiment, because any of the linked objects are only represented in a relationship between the two nodes, ten linked objects will be used to describe the relationship as shown in FIG.

一圖表可以用以表示於節點間之關係。表示凱莉家族節點與音樂服務節點間關係之鏈結物件主張在圖中有一指向緣存在,圖中之頂點為凱莉家族與音樂服務節點。Knox及Xan為凱莉家族的會員。因為Knox被鏈結至凱莉家族及凱莉家族被鏈結至音樂服務,所以,在Knox與音樂服務間有一路徑。當有由另一節點到該音樂服務的路徑存在時,群組認為音樂服務節點可以由另一節點到達。這允許寫下一控制,其當要求存取之應用程式(例如群組DRM客戶主應用程式)被執行時,根據音樂服務可由該攜帶式 裝置到達的條件,而允許對受保護內容的存取。A chart can be used to represent the relationship between nodes. The link object representing the relationship between the Kelly family node and the music service node advocates that there is a pointing edge in the figure. The vertices in the figure are the Kelly family and the music service node. Knox and Xan are members of the Kelly family. Because Knox is linked to the Kelly family and the Kelly family to the music service, there is a path between Knox and the music service. When there is a path from another node to the music service, the group believes that the music service node can be reached by another node. This allows a control to be written that can be carried out according to the music service when the application requiring access (eg, a group DRM client main application) is executed. The condition that the device arrives, while allowing access to protected content.

鏈結物件也可以選用地包含部份加密資料,其允許群組使用該鏈結以導出內容鑰。如下所詳述,這對內容鑰提供富彈性之分散式方法。The link object may also optionally include partially encrypted material that allows the group to use the link to derive the content key. As detailed below, this provides a flexible, decentralized approach to content keys.

在一實施例中,群組並未定義鏈結物件如何簽章也並未評估該證書。相反地,它會要求主系統以驗證該簽章,及任何可以使用之驗證系統。這允許系統架構者或管理者定義鏈結物件的壽命、喚醒它、等等。另外,也可以定義管理鏈結物件建立與壽命的政策。In one embodiment, the group does not define how the linked object is signed or evaluated. Instead, it will ask the host system to verify the signature and any authentication systems that can be used. This allows the system architect or manager to define the life of the linked object, wake it up, and so on. In addition, it is also possible to define policies for managing the establishment and life of linked objects.

2.4.更多有關節點物件2.4. More about node objects

如前所述,在一實施例中,節點物件包含定義節點所代表之屬性。屬性的一例子為節點類型。除了代表使用者、群體、或裝置外,節點類型屬性也可以被用以代表其他實體。在部份實施例中,節點物件也可以包含加密鑰資訊,例如當使用群組節點與鏈結為主的“潛水”鑰資訊分佈系統。潛水鑰分佈系統將描述如下。As previously mentioned, in an embodiment, the node object contains attributes that define the node. An example of a property is a node type. In addition to representing users, groups, or devices, node type attributes can also be used to represent other entities. In some embodiments, the node object may also contain keying information, such as a "dive" key information distribution system that uses group nodes and links. The diving key distribution system will be described as follows.

在部份實施例中,節點物件也包含一保密非對稱鑰對,其被用以針對已經存取節點物件的保密部份的次系統進行保密資訊。這也可以是節點所代表之實體(例如,音樂服務)或負責管理節點的其他實體(例如末端使用者(例如Knox),用以負責管理他的攜帶式裝置)。In some embodiments, the node object also includes a secret asymmetric key pair that is used to provide confidential information for the secondary system that has accessed the secure portion of the node object. This can also be an entity represented by the node (eg, a music service) or other entity responsible for managing the node (eg, an end user (eg, Knox) to be responsible for managing his portable device).

2.5.取得允許2.5. Obtain permission

當應用程式想要對一特定件內容執行一動作時,它首先會詢問該群組客戶引擎,以檢查是否其想要對該內容執行的動作是否被允許。在部份實施例中,群組引擎將由包含在含有內容執照的物件中之資訊中載入並執行有關於該內容的控制程式,並根據控制程式的決定,而允許執行該動作的核准與否決。允許通常需要符合部份條件,例如,一節點必須由要求節點所能到達的條件。When an application wants to perform an action on a particular piece of content, it first asks the group's client engine to check if it wants to perform an action on the content. In some embodiments, the group engine will load and execute a control program related to the content contained in the content contained in the content-licensed object, and allow the approval and rejection of the action according to the decision of the control program. . Allowing it is usually necessary to meet certain conditions, for example, a condition that a node must be reached by the requesting node.

在一實施例中,如果核准允許,則節點必須取得內容鑰。該鑰係由執照的內容鑰物件取得,該內容鑰物件本身係由用以保護內容鑰物件的加密系統所保護。針對該目的,可以使用幾個不同加密系統,包含群組之內部鑰分佈加密系統,其平衡包含在節點與鏈結物件中之鑰。In an embodiment, the node must obtain the content key if approval permits. The key is obtained from the licensed content key object, which is itself protected by an encryption system used to protect the content key object. For this purpose, several different encryption systems can be used, including a group's internal key distribution encryption system, which balances the keys contained in the nodes and the linked objects.

2.6.內容保護與管理2.6. Content Protection and Management

在典型情形下,內容提供者使用應用程式,其包含有群組套裝引擎,以建立一組管理該內容使用的物件,並輸送取得內容加密鑰所需之資訊。為了容易解釋,名詞“執照”係被用以表示該組物件。In a typical scenario, a content provider uses an application that includes a group suite engine to create a set of objects that manage the use of the content and convey the information needed to obtain the content plus key. For ease of explanation, the term "license" is used to refer to the group of objects.

在一實施例中,內容與執照係被邏輯地分開,但為使用物件ID的內部參考所綁在一起。儲存在一起的內容與執照如有必要也可以分開存放。一執照可以應用至一項以上之內容,一個以上之執照也可以應用任一單項內容。In an embodiment, the content is logically separated from the license, but tied together using an internal reference to the object ID. The contents and licenses stored together can also be stored separately if necessary. A license can be applied to more than one item, and more than one license can apply any single item.

在一實施例中,一執照為物件的集合,如下:In one embodiment, a license is a collection of objects, as follows:

‧內容鑰物件(包含加密鑰資料)‧Content key object (including keying information)

‧保護符物件(將內容綁至內容鑰物件)‧Protect object (bind content to content key object)

‧控制物件(包含及保護控制程式)‧Control objects (including and protection control programs)

‧控制符物件(綁住內容鑰物件與控制物件)‧ control object (bind content key object and control object)

‧提供人類可讀取資訊的元資料,以描述為執照所需之條件。‧ Provide metadata about human readable information to describe the conditions required for the license.

第3圖顯示在執照中之物件的彼此關係及在一例示實施例中之內容物件。在第3圖所示之實施例中,控制物件與控制符物件係均被簽章,使得在給予主應用程式允許以存取內容前,群組客戶引擎可以驗證控制資訊係來自一信任源。Figure 3 shows the relationship of the items in the license and the content items in an exemplary embodiment. In the embodiment illustrated in Figure 3, both the control object and the control object are signed so that the group client engine can verify that the control information is from a trusted source before giving the main application permission to access the content.

如第3圖所示,在一實施例中,內容被加密及為一內容物件所表示。被用之加密鑰係為內容鑰物件所表示,及在兩者間之束縛係為保護符物件所表示。如於第3圖所示,特有ID係被使用以促成於內容與內容鑰間之束縛。As shown in FIG. 3, in one embodiment, the content is encrypted and represented as a content item. The used encryption key is represented by the content key object, and the constraint between the two is represented by the protector object. As shown in Figure 3, a unique ID is used to facilitate the bond between the content and the content key.

管理用以解密內容的鑰的規則係為控制物件所表示。於內容鑰與控制間之用以管理其用途之束縛係以控制符物件表示,也再次使用與物件相關的ID來束縛它們。The rules governing the key used to decrypt the content are represented by the control object. The constraint between the content key and the control to manage its use is represented by the control object, and the ID associated with the object is again used to bind them.

2.6.1.內容物件2.6.1. Content objects

內容物件代表加密內容。在一實施例中,其格式與儲存係為內容類型與主應用程式所定義。套裝應用程式加密該等內容,並建立與管理該內容物件。群組設計允許系統架構者或管理者選擇所用之加密系統。在一實施例中,內容物件必須包含或參考一特有ID;該ID係被用以將內容 綁至其他物件。在一實施例中,套裝應用程式必須包含有能力以認出並處理內容本身(或取得可以提供該功能的服務)。在部份實施例中,這係藉由一結構檔案格式,例如MP4的選擇加以完成。The content object represents the encrypted content. In one embodiment, the format and storage are defined by the content type and the main application. The suite application encrypts the content and creates and manages the content object. The group design allows the system architect or manager to choose the encryption system to use. In an embodiment, the content item must contain or reference a unique ID; the ID is used to place the content Tied to other items. In one embodiment, the packaged application must include the ability to recognize and process the content itself (or to obtain a service that can provide the functionality). In some embodiments, this is accomplished by a structural file format, such as the selection of MP4.

2.6.2.內容鑰物件2.6.2. Content Key Objects

內容鑰物件描述並選用地包含用以加密該內容的鑰。當此物件包含內容鑰資料時,為了保密,該資料本身被加密。在一實施例中,內容鑰物件同時也指明用以加密內容鑰資料的加密系統;是否該資料包含在該內容鑰物件。內容鑰物件也為一特有ID所指明。在一實施例中,內容鑰物件,及其他於段落2.6所描述之物件係由群組套裝引擎所建立。The content key object describes and optionally contains a key to encrypt the content. When the object contains content key material, the material itself is encrypted for confidentiality. In an embodiment, the content key object also specifies an encryption system for encrypting the content key material; whether the material is included in the content key object. The content key object is also indicated by a unique ID. In one embodiment, the content key object, and other objects described in paragraph 2.6, are created by the group suite engine.

2.6.3.保護符物件2.6.3. Protector object

保護符物件將內容物件綁至內容鑰物件。其包含一或多數內容物件的ID及其所施加之內容鑰物件的ID。其也包含用以加密該內容的加密演算法上之資訊。The protector object binds the content object to the content key object. It contains the ID of one or more content objects and the ID of the content key object to which it is applied. It also contains information on the encryption algorithm used to encrypt the content.

2.6.4.控制物件2.6.4. Control objects

控制物件為一簽章物件,其包含控制程式。該控制程式指明對於予以允許之內容的某些動作所必須符合之條件。控制物件同時也具有一特有ID。如上所述,控制物件被簽章,使得在作出任何決定前,群組可以驗證控制位元 組碼是否為有效與受信任的。當資訊可用時,控制物件的有效性也可以選用地經由包含在控制符物件中之安全散列(hash)的驗證加以導出。The control object is a signature object that contains a control program. The control program indicates the conditions that must be met for certain actions of the content to be permitted. The control object also has a unique ID. As described above, the control object is signed so that the group can verify the control bit before making any decision. Whether the group code is valid and trusted. When information is available, the validity of the control object can optionally be derived via verification of a secure hash contained in the control object.

2.6.5.控制符物件2.6.5. Control object

控制符物件為一簽章物件,其參考一或多數內容鑰物件及一控制物件。群組使用為控制符物件所提供之資訊,找出哪一控制管理內容鑰物件的使用。The control object is a signature object that references one or more content key objects and a control object. The group uses the information provided by the control object to find out which control manages the use of the content key object.

在一實施例中,因為控制物件同時也包含用於包含在其所參考的內容鑰物件中之每一鑰資料的散列值,所以,在鑰資料與內容鑰物件間之束縛並不能被迅速竄改。In an embodiment, since the control object also contains a hash value for each key material contained in the content key object to which it refers, the binding between the key material and the content key object cannot be quickly Tampering.

控制符物件同時也包含促成控制物件完整性驗證的資訊。於一實施例中,控制符物件被簽章,使得群組可以信任在該內容鑰與管理它的控制物件間之束縛有效性,以及,在內容鑰ID與實際鑰資料間之束縛之有效性。或者,被參考的控制物件的散列也可以包含在控制符物件中,以允許群組推導出控制物件的有效性,而不必分開驗證該簽章。The control object also contains information that facilitates the verification of the integrity of the object. In one embodiment, the control object is signed so that the group can trust the binding validity between the content key and the control object that manages it, and the validity of the bond between the content key ID and the actual key data. . Alternatively, a hash of the referenced control object may also be included in the control object to allow the group to derive the validity of the control object without having to separately verify the signature.

2.6.6.元資料2.6.6. Metadata

部份物件將包含元資料,其協助應用程式了解到實際檢查什麼控制。Some of the objects will contain metadata that will help the application know what controls to actually check.

2.7.有關控制程式2.7. About the control program

在一實施例中,控制程式被包含在控制物件中,及群組使用一稱為“浮游生物(Plankton)VM”之虛擬機器,來執行這些控制程式。這些控制程式係為位元組碼格式,其促成在平台間之可交互運作性。In one embodiment, the control program is included in the control object, and the group uses a virtual machine called a "Plankton VM" to execute the control programs. These control programs are in a bytecode format that facilitates interoperability between platforms.

在一實施例中,浮游生物VM被設計以寄住在應用程式內,而不執行執行在一處理機中或作成積體電路。在一實施例中,控制程式可以被寫為組合語言並為浮游生物組合語言所轉換為位元組碼。在其他實施例中,可以使用模板,並開發權表示語言以配合群組。In one embodiment, the plankton VM is designed to reside within the application without performing execution in a processor or as an integrated circuit. In an embodiment, the control program can be written as a combined language and converted to a bytecode for the planktonic combination language. In other embodiments, a template can be used and the right representation language can be used to match the group.

在一實施例中,支援有控制程式,其根據關係及日期/時間,指明允許。In one embodiment, a control program is supported that indicates permission based on relationship and date/time.

在一實施例中,群組規格書決定可以表示之條件;可以被允許的動作之特定實施。這兩者均表示於控制程式中。在一實施例中,動作係以名稱(例如“播放”)而特定給套裝介面。In one embodiment, the group specification determines the conditions that can be represented; the specific implementation of the actions that can be allowed. Both are represented in the control program. In one embodiment, the action is specific to the package interface by name (eg, "play").

以組合語言所表示之控制程式例係如下: The example of the control program represented by the combined language is as follows:

在浮游生物VM規格書及控制上的其他資訊係被提供如下。Additional information on plankton VM specifications and controls is provided below.

2.8.實施法例2.8. Implementation of the law

在一實施例中,當根據群組之DRM系統被實施時,DRM設定檔係被定義以描述使用節點物件、鏈結物件與執照的方式。加密系統也被定義,用以提供內容保護與保密性。另外,實施使用群組引擎的套裝及客戶(消費者)應用程式。在部份實施例中,也可以實施針對特定硬體及/或軟體平台的特定應用程式版的群組引擎。兩例示實施例 子係提供如下。In an embodiment, when implemented according to a group DRM system, the DRM profile is defined to describe the manner in which the node object, the link object, and the license are used. Encryption systems are also defined to provide content protection and confidentiality. In addition, implement a suite and customer (consumer) application that uses the group engine. In some embodiments, a group engine for a particular application version of a particular hardware and/or software platform may also be implemented. Two examples Subsystems are provided below.

2.8.1.例子1:使用者、PC及裝置2.8.1. Example 1: Users, PCs and Devices

假設想要實施一DRM系統,其將權力綁在對一特定使用者的播放內容,並想要使得使用者可以所有他所擁有的播放裝置上播放內容。假設決定提供使用者軟體使得使用者可以加至播放裝置上(例如行動播放器)。然而,假設想要設定部份政策以限制使用者可以傳送至一般目的裝置的次數,使得他們沒有作為散佈者的能力。Suppose you want to implement a DRM system that binds power to the playback content for a particular user and wants to make the user play the content on all of the playback devices he owns. It is assumed that the user software is determined to be provided so that the user can add to the playback device (eg, a mobile player). However, suppose you want to set some policies to limit the number of times a user can transfer to a general purpose device, so that they do not have the ability to act as a distributor.

根據這些系統需求,例如,可能使得所建立給使用者的執照有所用途,並在使用者與其所用之裝置間建立一關係。Depending on the needs of these systems, for example, it is possible to have a license established for the user useful and to establish a relationship between the user and the device with which it is used.

因此,在此例子中,首先決定需要建立何種關係的哪著節點。例如,需要界定以下各項:Therefore, in this example, it is first decided which node of the relationship needs to be established. For example, you need to define the following:

‧使用者(擁有權力以使用該內容的個人)‧Users (persons who have the authority to use the content)

‧PC(可以播放內容的軟體應用程式並指明其他播放裝置)‧PC (software application that can play content and indicate other playback devices)

‧裝置(可以播放內容的硬體及/或軟體組合)。‧ Device (a combination of hardware and/or software that can play content).

一節點類型可以定義以用於這些項目的每一個。所建立的每一節點物件可以包含一類型屬性,其表示該物件是否代表一使用者、一PC或一裝置。A node type can be defined for each of these items. Each node object created may contain a type attribute indicating whether the object represents a user, a PC, or a device.

假設,例如決定限制任一使用者可以建立的PC節點物件之數量為4。只要提供PC數量上之限制,則不必限制裝置的數量。如果在使用者節點與要求存取之節點間建 立一關係,則控制程式可以據此設立以允許存取。然後,該節點可以為一PC或一裝置。Assume, for example, that the number of PC node objects that can be established by any user is limited to four. As long as the number of PCs is limited, it is not necessary to limit the number of devices. If it is built between the user node and the node that requires access Once a relationship is established, the control program can be set up to allow access. The node can then be a PC or a device.

一種完成此功能的方式為建立一伺服器,來管理使用者並建立剛定義的屬性之群組物件。對於每一新使用者,伺服器將指定一使用者節點物件。對於每一PC,伺服器將指定一PC節點物件。在此時,伺服器將建立一鏈結物件,其將使用者節點物件鏈結至PC節點物件。使用者可以隨後要求增加其他PC,及伺服器將生效一政策,其限制每一使用者的PC節點物件的數量至4(典型將提供由其作動名單中移除PC的能力給使用者。一旦建立,該等物件將轉送給PC。只要該等物件保持有效,則在PC上之軟體將使用該等物件。One way to accomplish this is to create a server that manages the user and creates a group object of the properties just defined. For each new user, the server will specify a user node object. For each PC, the server will specify a PC node object. At this point, the server will create a link object that links the user node object to the PC node object. The user can then request to add additional PCs, and the server will take effect a policy that limits the number of PC node objects per user to 4 (typically will provide the ability to remove the PC from its active list to the user. Once established, the items will be forwarded to the PC. As long as the items remain valid, the objects on the PC will use the items.

假設決定使用者能播放在他們所擁有的任意裝置上播放任何內容。也假設使用者下載內容至正執行PC軟體的PC,及軟體提供在該裝置上播放該內容的能力。為了完成此動作,PC軟體需要建立新裝置節點物件與鏈結物件的能力給該裝置,該鏈結物件將該裝置節點物件相關於該使用者節點物件。為了如此,PC軟體需要存取使用者節點的保密部份。裝置保有該鏈結物件並只有它有效時即使用它;即,一旦鏈結物件存在,就不必建立另一鏈結物件,除非該物件到期或變無效。Suppose that the user can play any content on any device they own. It is also assumed that the user downloads the content to the PC that is executing the PC software, and the software provides the ability to play the content on the device. In order to accomplish this, the PC software needs to establish the ability of the new device node object and the link object to the device, the link object correlating the device node object to the user node object. In order to do this, the PC software needs to access the secret portion of the user node. The device retains the linked item and uses it only when it is active; that is, once the linked item is present, it is not necessary to create another linked item unless the item expires or becomes invalid.

為了將內容綁至使用者,套裝應用程式選擇新ID用於該內容,並使用現行ID建立一加密鑰與相關內容鑰物件,及一保護符物件將內容物件與內容鑰物件綁在一起。 套裝程式然後建立具有一控制程式(例如編譯於浮游生物位元組碼中)之控制物件,並且,只有在使用者節點可以由要求播放動作之PC或裝置節點取得時,才允許發生“播放”動作。典型地,控制、控制符、保護符及內容鑰物件係適當地內藏在套裝內容中,使得PC與裝置並不必分開取得它們。In order to bind the content to the user, the package application selects a new ID for the content, and uses the current ID to create an encryption key and associated content key object, and a protector object to tie the content object to the content key object. The package program then creates a control object with a control program (eg, compiled in the plankton byte code) and allows "play" to occur only if the user node can be retrieved by the PC or device node requesting the playback action. action. Typically, the controls, control symbols, protectors, and content key objects are suitably embedded in the package content so that the PC and the device do not have to acquire them separately.

在一實施例中,當一裝置或PC想要播放內容時,群組尋找用於該內容的內容ID的保護符物件,然後,內容鑰物件為該保護符所參考,然後,控制符物件參考該內容鑰物件、最後,控制物件為該控制符所參考。群組執行該控制物件的控制程式,以檢查是否使用者節點可取得。如果裝置或PC節點具有必要之鏈結物件以驗證有其節點與使用者節點間有一路徑,則條件符合,及控制程式允許使用出現在該內容鑰物件中之鑰。裝置或PC的媒體描繪引擎然後可以解密並播放該內容。In an embodiment, when a device or PC wants to play content, the group looks for a protector object for the content ID of the content, and then the content key object is referenced by the protector, and then the control object reference The content key object, and finally, the control object is referenced by the control symbol. The group executes the control program of the control object to check if the user node is available. If the device or PC node has the necessary link object to verify that there is a path between its node and the user node, the condition is met and the control program allows the key present in the content key object to be used. The media rendering engine of the device or PC can then decrypt and play the content.

2.8.2.例子2:暫時登入2.8.2. Example 2: Temporary Login

在此例子中,使用了幾乎與例子1一樣的系統,另外加入一新特性:即一政策,其管理於PC節點物件與使用者節點物件間之鏈結物件之建立,只要使用者並未在另一PC上暫時登入,即允許不超出12小時之暫時登入。此特性將允許使用者將其內容帶至朋友的PC,登入在該PC一段時間,並在朋友的PC上播放該內容。In this example, the same system as Example 1 is used, and a new feature is added: a policy that manages the establishment of the link object between the PC node object and the user node object, as long as the user is not Temporary login on another PC allows temporary logins of up to 12 hours. This feature will allow the user to bring their content to a friend's PC, log in to the PC for a while, and play the content on a friend's PC.

為了完成此功能,鏈結物件將以有限之有效性期加以 建立。在一實施例中,這將作動如下:為了簡單起見,我們假設需要播放DRM保護內容的消費軟體係在朋友的PC上。包含有該內容與執照的檔案被傳送至朋友的PC。當使用者想要播放該內容時,軟體認為沒有有效鏈結物件來鏈結本地PC節點物件與擁有該內容的使用者節點物件。它會提示使用者之憑證(可能是使用者名稱/密碼、行動電話鑑別、智慧卡、或任何允許該系統政策的鑑別系統)並與一後端系統相通訊。後端系統檢查鏈結所要之使用者節點物件與PC節點物件的屬性,並檢查有否正在作動之暫時登入鏈結物件。如果條件滿足,後端服務建立一鏈結物件,其鏈結該PC節點物件與該使用者節點物件,並將有效期限定至所要求之登入期(例如少於12小時,以符合此例子中之政策)。該鏈結物件隨即允許PC播放使用者內容,直到鏈結到期為止。In order to perform this function, the link object will be added with a limited validity period. set up. In one embodiment, this will act as follows: For the sake of simplicity, we assume that the consumer soft system that needs to play DRM protected content is on the friend's PC. The file containing the content and license is sent to the friend's PC. When the user wants to play the content, the software believes that there is no valid link object to link the local PC node object with the user node object that owns the content. It prompts the user for credentials (possibly username/password, mobile phone authentication, smart card, or any authentication system that allows the system policy) and communicates with a backend system. The backend system checks the attributes of the user node object and the PC node object that are required for the link, and checks if there is a temporary login link object that is being activated. If the condition is met, the backend service creates a link object that links the PC node object to the user node object and limits the validity period to the required login period (eg, less than 12 hours to match the example) policy). The link object then allows the PC to play the user content until the link expires.

3.用於內容消耗及內容套裝之參考架構3. Reference architecture for content consumption and content suite

以下為兩主要組件的參考架構說明,在部份實施例中,其完成了群組應用程式的佈署:■消費應用(典型為媒體播放器),其消費群組套裝內容;及■套裝應用程式(典型內藏在伺服器上),其包裝送至群組消費應用程式之內容。The following is a reference architecture description of the two main components. In some embodiments, it completes the deployment of the group application: ■ consumer applications (typically media players), consumer group package content; and ■ package applications The program (typically built into the server) is packaged and sent to the contents of the group consumer application.

3.1.群組DRM客戶參考架構3.1. Group DRM Customer Reference Architecture

群組客戶參考架構提供一群組引擎將執行之功能的例子,用於消費內容的主應用程式。所開發之消費應用程式可以針對存取保護內容上或者可以為作動在使用者系統之一般目的應用程式也包裝內容的一部份。在各種實施例中,主應用程式可以執行部份或所有之以下事項:‧提供使用者介面,使用者要求對保護內容物件的存取可以藉由該使用者介面完成,並與使用者作成介面,以顯示有關於內容或錯誤資訊之元資料;‧管理與檔案系統之交互作用;‧認出保護內容物件的格式;‧要求DRM引擎以評估作成該執照的DRM物件(包含執行控制程式),以檢查是否可以核准對該內容的存取;‧驗證所需之簽章,並處理DRM引擎所需要執行之任何其他之一般目的加密功能(例如,使用加密服務);‧要求DRM引擎,以提供鑰給保護內容;及/或‧解密並與媒體描繪服務互動,以描繪該內容。The Group Customer Reference Architecture provides an example of the functionality that a group engine will perform, the main application for consuming content. The developed consumer application can also package a portion of the content for accessing the protected content or for the general purpose application of the user system. In various embodiments, the main application can perform some or all of the following: ‧ providing a user interface, the user requesting access to the protected content object can be completed by the user interface and creating an interface with the user To display meta-information about content or error information; ‧ manage the interaction with the file system; ‧ recognize the format of the protected content object; ‧ require the DRM engine to evaluate the DRM object (including the execution control program) that made the license, To check if access to the content can be approved; ‧ verify the required signature and handle any other general purpose encryption functions that the DRM engine needs to perform (for example, using cryptographic services); ‧ require the DRM engine to provide The key is to protect the content; and/or ‧ decrypt and interact with the media rendering service to depict the content.

在一實施例中,DRM客戶引擎評估DRM物件,確認或否決許可,並提供鑰給該主應用程式。In one embodiment, the DRM client engine evaluates the DRM object, confirms or rejects the license, and provides a key to the host application.

第4圖顯示在一實施例中,完成群組為主之消費應用程式的元件。如於第4圖示,主應用程式為客戶的邏輯中心點。其負責驅動與其他模組間之相互作用,及經由一使用者介面與使用者互動。Figure 4 shows the components of a group-based consumer application in one embodiment. As shown in Figure 4, the main application is the logical center point of the customer. It is responsible for driving interactions with other modules and interacting with users via a user interface.

主應用程式提供一組服務至群組引擎。第4圖表示用 以完成此之介面“主服務”。主服務允許群組引擎取得對主應用程式所管理之資料與為主機所實施之某些資料庫功能的存取。在一實施例中,其係群組引擎的唯一向外介面。The main application provides a set of services to the group engine. Figure 4 shows the use To complete this interface "main service." The primary service allows the group engine to gain access to the data managed by the host application and certain database functions implemented for the host. In an embodiment, it is the only outbound interface of the group engine.

在一實施例中,群組引擎並不直接與為主應用程式所管理的多媒體內容相互作用。主應用程式邏輯地與內容服務交互作用,以存取多媒體內容,並只有傳送必須為該引擎所處理的部份資料至群組引擎。其他與內容的交互作用將為多媒體描繪引擎所執行。內容服務係負責自媒體伺服器取得內容,並儲存與管理儲存在客戶持久儲存體上之內容。In an embodiment, the group engine does not directly interact with the multimedia content managed by the host application. The main application logically interacts with the content service to access the multimedia content and only transmits some of the data that must be processed by the engine to the group engine. Other interactions with the content will be performed by the multimedia rendering engine. The content service is responsible for obtaining content from the media server and storing and managing the content stored on the client's persistent storage.

在第4圖所示之實施例中,媒體描繪引擎係為負責存取多媒體內容並描繪它(例如在視訊及音訊輸出上)之次系統。媒體描繪引擎自群組引擎接收部份資訊(例如內容解密鑰),但在一實施例中,群組引擎並未與之直接互動。In the embodiment illustrated in Figure 4, the media rendering engine is the secondary system responsible for accessing the multimedia content and rendering it (e.g., on video and audio output). The media rendering engine receives partial information (eg, content decryption keys) from the group engine, but in one embodiment, the group engine does not interact directly with it.

為群組DRM引擎所需之部份資訊將可帶內取得多媒體內容,並將透過內容服務加以取得與管理,但部份之資訊可能需要經由其他服務裝置取得,例如個人化服務或會員制服務。Some of the information required for the group DRM engine will be available for in-band access to multimedia content and will be accessed and managed through content services, but some of the information may need to be obtained through other service devices, such as personalized services or membership services. .

在第4圖所示之實施例中,加密操作(例如加密、簽章驗證等等)係為加密服務方塊所處理。群組引擎並未直接與之互動,而是經由會傳送要求的主機服務。加密服務也可以為媒體描繪引擎所使用,以執行內容解密。In the embodiment illustrated in Figure 4, encryption operations (e.g., encryption, signature verification, etc.) are handled by the cryptographic service block. The group engine does not interact directly with it, but via the host service that will deliver the request. The encryption service can also be used by the media rendering engine to perform content decryption.

3.1.1.至群組引擎介面的主應用程式3.1.1. The main application to the group engine interface

雖然在較佳實施例中,並沒有固定API用於群組引擎,但以下為在一例示實施例中,群組引擎所提供至主應用程式的介面類型的高階描述:Although in the preferred embodiment there is no fixed API for the group engine, the following is a high-level description of the interface type provided by the group engine to the main application in an exemplary embodiment:

Octopus:CreateSession(hostContextObject)→SessionOctopus: CreateSession(hostContextObject)→Session

建立交談給予一主應用程式上下文。上下文物件係為群組所使用以對應用程式進入回呼(callback)Establish a conversation to give a main application context. The context object is used by the group to enter the callback for the application.

‧Session::ProcessObject(drmObject)‧Session::ProcessObject(drmObject)

當主應用程式在媒體檔案內遇到某類型物件,其可以被指明屬於DRM子系統時,此功能應為主應用程式所呼叫。此等物件包含內容控制程式,會員符記等等。這些物件的語法與語意對於主應用程式為不透明。When the main application encounters a type of object in the media file that can be specified to belong to the DRM subsystem, this function should be called by the main application. These objects contain content control programs, membership tokens, and more. The grammar and semantics of these objects are opaque to the main application.

‧Session::OpenContent(contentReference)→Content‧Session::OpenContent(contentReference)→Content

當主應用程式需要與多媒體內容檔案進行互動時,主應用程式呼叫此功能。群組引擎送回隨後可用之內容物件,用以取回有關於該內容的DRM資訊,並與之互動。The main application calls this feature when the main application needs to interact with the multimedia content file. The group engine sends back the subsequently available content objects to retrieve and interact with the DRM information about the content.

‧Content::GetDrmInfo()‧Content::GetDrmInfo()

送回有關內容的DRM元資料,否則該內容不能在該檔案的正常元資料中使用。Send back the DRM metadata about the content, otherwise the content cannot be used in the normal metadata of the file.

‧Content::CreateAction(actionInfo)→Action‧Content::CreateAction(actionInfo)→Action

當想要與內容物件互動時,主應用程式呼叫此功能。ActionInfo參數指明應用程式需要執行之動作類型(例如播放),並且,如有必要是任何相關參數。The main application calls this feature when it wants to interact with content objects. The ActionInfo parameter indicates the type of action the application needs to perform (eg, play) and, if necessary, any relevant parameters.

‧Action::GetKeyInfo()‧Action::GetKeyInfo()

送回解密次系統所需要解密該內容的資訊。Send back the information needed to decrypt the content that decrypts the secondary system.

‧Action::Check()‧Action::Check()

檢查是否DRM次系統將授權此動作之執行(即是否Action::Perform()將成功)。Check if the DRM subsystem will authorize the execution of this action (ie if Action::Perform() will succeed).

‧Action::Perform()‧Action::Perform()

執行該動作,並執行為管理此動作之規則所指明之結果(及其副作用)。Perform this action and perform the results (and their side effects) specified by the rules governing this action.

3.1.2.群組引擎至主服務介面3.1.2. Group Engine to Main Service Interface

以下為在一例示實施例中,由主應用程式之群組引擎所需之主服務介面的類型例:‧HostContext::GetFileSystem(type)→FileSystemThe following is an example of the type of main service interface required by the group engine of the main application in an exemplary embodiment: ‧HostContext::GetFileSystem(type)→FileSystem

送回DRM次系統所專用之虛擬檔案系統物件。此虛擬檔案系統將被用以儲存DRM狀態資訊。在此檔案系統中之資料應可為DRM次系統所讀取及寫入。Send back the virtual file system object dedicated to the DRM subsystem. This virtual file system will be used to store DRM status information. The data in this file system should be readable and writable by the DRM subsystem.

‧HostContext::GetCurrentTime()‧HostContext::GetCurrentTime()

送回為主系統所維持之現行日期/時間。Return to the current date/time maintained by the main system.

‧HostContext::GetIdentity()‧HostContext::GetIdentity()

送回此主機的特有ID。Send back the unique ID of this host.

‧HostContext::ProcessObject(dataObject)‧HostContext::ProcessObject(dataObject)

將一資料物件送回主機服務,該物係已經被內藏在DRM物件內,但DRM次系已經被指明為主機所管理(例如證書)。A data item is sent back to the host service, which has been built into the DRM object, but the DRM sub-system has been designated as host managed (eg, a certificate).

‧HostContext::VerifySignature(signatureInfo)‧HostContext::VerifySignature(signatureInfo)

檢查在資料物件上之數位簽章的有效性。在一實施例中,signatureInfo物件保有等效於在XMLSig元件中所找到之資訊的資訊。Host服務負責驗證該簽章的鑰與鑰證書。Check the validity of the digital signature on the data item. In one embodiment, the signatureInfo object retains information equivalent to the information found in the XMLSig component. The Host service is responsible for verifying the key and key certificates for the signature.

‧HostContext::CreateCipher(cipherType,keyinfo)→Cipher‧HostContext::CreateCipher(cipherType,keyinfo)→Cipher

建立一DRM次系統可以使用之加密物件,其可以加密並解密該資料。最小組之加密類型將被定義,及用於每一描述為加密實施法所需之鑰資訊的格式。Establish a cryptographic object that the DRM subsystem can use to encrypt and decrypt the data. The most group of encryption types will be defined and used in each format described as the key information required for the encryption implementation.

‧Cipher::Encrypt(data)‧Cipher::Encrypt(data)

‧Cipher::Decrypt(data)‧Cipher::Decrypt(data)

‧HostContext::CreateDigester(digesterType)→Digester‧HostContext::CreateDigester(digesterType)→Digester

建立一DRM次系統可以使用之消化物件,以計算在部份資料上之安全散列。在一實施例中,可以定義最小組消化類型。Create a DRM sub-system to use the digested object to calculate a safe hash on some of the data. In an embodiment, a minimum group digestion type can be defined.

‧Digester::Update(data)‧Digester::Update(data)

‧Digester::GetDigest()‧Digester::GetDigest()

3.1.3.UML時序圖3.1.3. UML timing diagram

第5圖顯示使用在前述段落中所述之例示API,及在例示實施例中,發生於主應用程式與DRM客戶引擎間之互動。Figure 5 shows the use of the instantiated API described in the preceding paragraphs, and in the illustrated embodiment, the interaction between the main application and the DRM client engine.

3.2.套裝參考架構3.2. Package Reference Architecture

群組套裝參考架構提供群組套裝引擎可以執行套裝內容用於主應用程式的功能例子。套裝應用程式可以針對所開發之套裝或操作於使用者系統之一般目的應用程式,以存取保護內容(本地套裝或在網路的其他處)。The Group Suite Reference Architecture provides an example of the functionality of the Group Suite Engine that can execute package content for the main application. The suite application can access protected content (local packages or elsewhere on the network) for the developed package or for general purpose applications that operate on the user's system.

在一實施例中,套裝主機應用程式:‧提供部份使用者介面,內容及執照資訊可以藉由該介面指明;‧加密內容,及/或‧建立一內容物件,其包含或參考內容並包含或參考一執照(在套裝引擎建立構成執照的DRM物件後)。In one embodiment, the host application is: ‧ provides a partial user interface, content and license information can be specified by the interface; ‧ encrypt content, and/or ‧ create a content object, which contains or references content and includes Or refer to a license (after the set engine builds the DRM object that constitutes the license).

第6圖顯示在一實施例中,作成群組為主套裝應用程式的元件。在一實施例中,套裝引擎負責套裝例如在此所述之物件(稱為群組執照)。執照係相關於元資料,該元資料以人可以讀取之方式解釋執照。Figure 6 shows the components of the group-based package application in one embodiment. In an embodiment, the package engine is responsible for the package, such as the items described herein (referred to as group licenses). The license is related to the meta-data, which is interpreted in a way that the person can read.

如上所述,在一實施例中,主應用程式提供使用者介面。其負責取得例如內容參考及使用者想要執行之動作之資訊(例如,將內容束縛至誰)。其也顯示有關例如執照發出文字之套裝程序有關之資訊,並且,如果發生故障,則故障理由。在部份實施例中,為主應用程式所需之資訊可能需要使用其他服務,例如鑑別或經由服務存取點(SAP)之鑑別及會員鑑定。因此,在部份實施例中,主應用程式可能需要執行部份或所有之以下服務:‧媒體格式服務:此元件負責管理所有媒體格式操作 ,例如資料格式轉換及套裝。其也負責內容加密,其可以經由內容加密服務完成。As mentioned above, in one embodiment, the main application provides a user interface. It is responsible for obtaining information such as content references and actions that the user wants to perform (eg, who binds the content to whom). It also displays information about the packaged program, such as the license issuing text, and, if a failure occurs, the reason for the failure. In some embodiments, the information required for the main application may require the use of other services, such as authentication or authentication via a Service Access Point (SAP) and membership identification. Therefore, in some embodiments, the main application may need to perform some or all of the following services: • Media Format Service: This component is responsible for managing all media format operations. , for example, data format conversion and package. It is also responsible for content encryption, which can be done via a content encryption service.

‧一般目的加密服務:此元件係負責發出/驗證簽章及加密/解密部份資料。此等操作的要求可以為服務存取點所發出或由群組套裝引擎經由主服務發出。‧General Purpose Encryption Service: This component is responsible for issuing/verifying signatures and encrypting/decrypting some of the information. The requirements for such operations may be issued by the service access point or by the group suite engine via the primary service.

‧內容加密服務:此模組邏輯上與一般目的加密服務分開,因為其並不知道該應用程式。其係為在內容套裝時之媒體格式服務,以一組事先為群組套裝引擎所發出之鑰加以驅動。‧ Content Encryption Service: This module is logically separate from the general purpose encryption service because it does not know the application. It is a media format service in the content package, driven by a set of keys issued in advance for the group package engine.

3.2.1.主應用程式至群組套裝引擎介面3.2.1. Main application to group package engine interface

此段落提供於主應用程式與群組套裝引擎間之例示API的高階描述。在一實施例中,套裝及客戶引擎儘可能使用相同物件。This paragraph provides a high-level description of the instantiation API between the main application and the group suite engine. In one embodiment, the package and client engine use the same objects whenever possible.

Octopus:CreateSession(hostContextObject)→SessionOctopus: CreateSession(hostContextObject)→Session

建立交談給予一主應用程式上下文。上下文物件係為群組套裝引擎所使用以對應用程式進入回呼(callback)。Establish a conversation to give a main application context. The context object is used by the group suite engine to enter the callback for the application.

‧Session::CreateContent(ContentReferences[])→Content‧Session::CreateContent(ContentReferences[])→Content

主應用程式呼叫此功能,以建立在後續步驟中之與執照物件有關的內容物件。一旦在內容參考陣列中超出一個內容參考,則表示這些係被束縛在一束中(例如一音訊及一視訊軌)及所發出之執照應送至這些參考,作為不可分 割之群。The main application calls this function to establish content items related to the license object in subsequent steps. Once a content reference is exceeded in the content reference array, it means that the links are tied in a bundle (for example, an audio and a video track) and the issued license should be sent to these references as inseparable Cut the group.

‧Content::SetDrminfo(drmInfo)‧Content::SetDrminfo(drmInfo)

drumInfo參數指明將被發出之執照的元資料。該結構將被讀取並作為一導引,以計算執照成為用於浮游生物VM的位元組碼。The drumInfo parameter indicates the metadata of the license to be issued. The structure will be read and used as a guide to calculate the license to become a byte code for the plankton VM.

‧Content::GetDRMObjects(format)→drmObjects‧Content::GetDRMObjects(format)→drmObjects

當主應用程式準備取得套裝引擎所建立的drmObjects時,此功能被呼叫。格式參數將指示期待用於這些物件的格式XML或二進制基元)。This feature is called when the main application is ready to get the drmObjects created by the suite engine. The format parameters will indicate the format XML or binary primitives that are expected to be used for these objects.

‧Content::getKeys()→keys[]‧Content::getKeys()→keys[]

當主應用程式需要鑰時,此功能為主應用程式所呼叫,以加密該內容。每一內容參考具有一鑰。When the main application requires a key, this feature is called by the main application to encrypt the content. Each content reference has a key.

3.2.2.群組套裝引擎至主服務介面3.2.2. Group Suite Engine to Main Service Interface

以下為在一實施例中,群組套裝引擎需要主應用程式提供之介面的類型例子。The following is an example of the type of interface that the group suite engine needs to provide for the main application in one embodiment.

-HostContext::GetFileSystem(type)→FileSystem-HostContext::GetFileSystem(type)→FileSystem

送回一虛擬檔案系統物件,該物件為DRM次系統所專門存取。此虛擬檔案系統將被用以儲存DRM狀態資訊。在此檔案系統內之資料應只為DRM系統所讀取與寫入。A virtual file system object is returned, which is specifically accessed by the DRM subsystem. This virtual file system will be used to store DRM status information. The data in this file system should only be read and written by the DRM system.

-HostContext::GetCurrentTime()→Time送回為主系統所保持之現行日期/時間-HostContext::GetIdentify()→ID 送回此主機的特有ID。-HostContext::GetCurrentTime()→Time returns the current date/time maintained by the main system -HostContext::GetIdentify()→ID Send back the unique ID of this host.

-HostContext::PerformSignature(signatureInfo,data)-HostContext::PerformSignature(signatureInfo,data)

為群組套裝引擎所建立之部份DRM物件將受到信任。此為主機所提供之服務將被用以簽章所指定物件。Some DRM objects created for the group suite engine will be trusted. This service provided by the host will be used to sign the object specified.

-HostContext::CreateCypher(cipherType,keyInfo)→Cipher-HostContext::CreateCypher(cipherType,keyInfo)→Cipher

建立一加密物件,其可以為套裝引擎所用以加密與解密資料。這可以用以加強在ContentKey物件內之內容鑰資料。Create an encrypted object that can be used by the suite engine to encrypt and decrypt data. This can be used to enhance the content key material within the ContentKey object.

-Cipher::Encrypt(data)-Cipher::Encrypt(data)

-Cipher::Decrypt(data)-Cipher::Decrypt(data)

-HostContext::CreateDigester(digesterType)→Digester-HostContext::CreateDigester(digesterType)→Digester

建立一消化物件,其可以為套裝引擎所用以計算部份資料的安全散列。Create a digested object that can be used by the set engine to calculate a safe hash of some of the data.

-Digester::Update(data)-Digester::Update(data)

-Digester::GetDigest()-Digester::GetDigest()

-HostContext::GenerateRadomNumber()-HostContext::GenerateRadomNumber()

產生一亂數,其可以用以產生一鑰。A random number is generated that can be used to generate a key.

3.2.3.UML序向圖3.2.3. UML sequence diagram

第7圖顯示在前述段落中所述之例示API的使用,及發生在主應用程式與套裝引擎間之互動。Figure 7 shows the use of the instantiated API described in the preceding paragraphs and the interaction between the main application and the suite engine.

B.潛水鑰分配B. Submarine key distribution

潛水為一鑰分配系統,其很自然地配合上述之群組架構,及/或可以用於其他上下文。Diving is a key distribution system that naturally fits into the group architecture described above, and/or can be used in other contexts.

以此潛水,除了建立在節點物件間之關係的主要目的外,群組鏈結物件也可以用以分配鑰。一群組控制物件包含一控制程式,其決定是否一要求動作應被核准。該控制程式經常檢查一特定群組節點可否經由集合一群組鏈結加以完成。潛水使得可以利用一群鏈結以促成鑰的分配,使得其可以為正執行控制之群組引擎所用。In this way, in addition to the main purpose of establishing a relationship between node objects, group link objects can also be used to assign keys. A group of control objects includes a control program that determines if a required action should be approved. The control program often checks if a particular group of nodes can be completed via a set of group links. Diving makes it possible to utilize a bunch of links to facilitate the assignment of keys so that they can be used by the group engine that is performing the control.

於一實施例中,每一用於使用潛水鑰分配系統之群組佈署的群組節點物件具有潛水鑰。這些鑰係用以解密內容鑰及其他節點的潛水鑰。每一個建立以用於相同佈署的群組鏈結物件包含部份加密潛水資料酬載,當鏈結的鏈為群組引擎所處理時,此等酬載允許鑰資訊被推導出。In one embodiment, each group node object for deployment using a group of the diving key distribution system has a diving key. These keys are used to decrypt the content key and the dive keys of other nodes. Each group link object created for the same deployment contains a portion of the encrypted dive data payload, which allows the key information to be derived when the chain of links is processed by the group engine.

以具有此方式承載潛水鑰的節點與鏈結,假定由節點A至節點Z的鏈結集合,任何存取A的私潛水鑰的實體(例如一客戶主應用程式的群組引擎)也存取Z的公潛水共享鑰。一旦存取Z的私潛水共享鑰,則使實體存取以這些鑰加密的任何內容鑰。In the case of a node and a link carrying the dive key in this manner, assuming that the node A to the set of links of the node Z, any entity accessing the private key of A (for example, a group engine of a client main application) is also accessed. Z's public diving shared key. Once Z's private dive shared key is accessed, the entity is made to access any content key encrypted with these keys.

1.節點、實體及潛水鑰1. Node, entity and diving key 1.1.實體1.1. Entity

在群組系統之實施例中,節點為資料物件,不是在系統中之作動參與者。在此上下文中,作動參與者被稱為實 體。實體的例子為媒體播放器、裝置、內容套裝等等。實體典型具有與之相關之群體節點。消費內容的實體使用群組引擎並管理構成群組個性之至少一節點物件。在此實施例中,一實體被假設已經存取其所管理之節點物件的所有資料,包含所有這些物件的私人資訊。In an embodiment of the group system, the node is a data item, not an active participant in the system. In this context, the active participant is called real body. Examples of entities are media players, devices, content sets, and the like. An entity typically has a group node associated with it. The entity that consumes the content uses the group engine and manages at least one node object that constitutes the group personality. In this embodiment, an entity is assumed to have access to all of the material of the node object it manages, including private information for all of these objects.

1.2.節點1.2. Node

參與潛水鑰分配系統之節點物件包含潛水鑰係為資料的一部份。在一實施例中,有兩種通用類型之潛水鑰:共享鑰與保密鑰。以下段落列出在各種實施例中,潛水可以使用之不同鑰類型。然而,可以了解的是,該技術的特殊佈署只使用一次組的這些鑰。例如,一系統可以被架構只與該等配對鑰一起動作,省略其他祕密對稱鑰的使用。或者,如果系統只需使用共享鑰,則系統可以被佈署而未提供保密鑰給節點。The node object participating in the diving key distribution system contains the diving key system as part of the data. In one embodiment, there are two general types of diving keys: a shared key and a security key. The following paragraphs list the different key types that diving can use in various embodiments. However, it can be understood that the special deployment of the technology uses only these keys of the group once. For example, a system can be actuated by the architecture only with the pairing keys, omitting the use of other secret symmetric keys. Alternatively, if the system only needs to use the shared key, the system can be deployed without providing a security key to the node.

1.2.1.共享鑰1.2.1. Shared key

共享鑰係為配對鑰及/或對稱鑰,其係為一節點所有所節點所共享,其包含潛水鑰推導延伸符。The shared key is a pairing key and/or a symmetric key, which is shared by all nodes of a node, and includes a diving key derivation extension.

‧潛水共享公鑰‧Diving shared public key

Kpub-share〔N〕Kpub-share[N]

這是一對公/私鑰的公共部份作為公鑰加密。此鑰典型有一證書,使得其憑證可以為想要加密束縛保密資訊的實體所驗證。This is the public part of a pair of public/private keys as public key encryption. This key typically has a certificate so that its credentials can be verified by the entity that wants to encrypt the secret information.

‧潛水共享私鑰‧Diving shared private key

Kpriv-share〔N〕Kpriv-share[N]

這是公/私鑰對的私部份。管理該節點的實體係負責確保此私鑰保持祕密。為此,此私鑰將大致與其他節點資訊被分開儲存及傳送。此私鑰將為下游的其他節點透過鏈結的鑰推導延伸符加以共享。This is the private part of the public/private key pair. The real system that manages this node is responsible for ensuring that this private key remains secret. To this end, this private key will be stored and transmitted separately from other node information. This private key will be shared by other downstream nodes through the link's key derivation extension.

‧潛水共享對稱鑰‧Diving shared symmetric key

Ks-share〔N〕Ks-share[N]

此鑰與一對稱加密符一起使用。至於私鑰,此鑰為保密,因此,管理節點的實體係負責為此鑰保密。此密鑰將為下游其他節點透過鏈結的鑰推導延伸符加以共享。This key is used with a symmetric cipher. As for the private key, this key is confidential, so the real system of the management node is responsible for keeping this key secret. This key will be shared by other downstream nodes through the link's key derivation extension.

1.2.2.保密鑰1.2.2. Security key

保密鑰係為配對鑰及/或對稱鑰,其係只為管理該節點的實體所知它們屬於誰。於這些鑰與上述共享鑰間之差異係為它們將不會為其他節點透過鏈結中之潛水鑰推導延伸符加以共享。The security key is a pairing key and/or a symmetric key, which is known only to the entity that manages the node to whom they belong. The difference between these keys and the shared keys is that they will not be shared by other nodes through the dive key derivation extensions in the link.

‧潛水保密公鑰‧Diving secret public key

Kpub-conf〔N〕Kpub-conf[N]

這是用於公鑰加密符之一對公/私鑰的公部份。此鑰典型有一證書,使得其憑證可以為想要加密地束縛保密資訊的實體所驗證。This is the public part of the public/private key used for one of the public key ciphers. This key typically has a certificate so that its credentials can be verified by the entity that wants to encrypt the secret information encrypted.

‧潛水保密私鑰‧Diving secret private key

Kpriv-conf〔N〕Kpriv-conf[N]

這是為公/私鑰對的私部份。管理該節點的實體係負責保守此私鑰的祕密。為此理由,此私鑰將與其他的節點資訊分開儲存與傳送。This is the private part of the public/private key pair. The real system that manages the node is responsible for keeping the secret of this private key. For this reason, this private key will be stored and transmitted separately from other node information.

‧潛水保密對稱鑰‧Diving secret symmetry key

Ks-conf〔N〕Ks-conf[N]

此鑰可以與一對稱加密符一起使用。至於私鑰,此鑰為保密,使得管理該節點的鑰負責保密此鑰。This key can be used with a symmetric cipher. As for the private key, this key is kept secret, so that the key managing the node is responsible for keeping the key secret.

2.加密元件2. Encryption component

潛水可以使用不同加密演算法加以實施。潛水並不限定於任何特定選擇之加密演算法。再者,對於一給定佈署或分佈,所有參與實體大致需要配合一組支援之演算法。在一實施例中,佈署包含用於至少一公鑰加密符(例如RSA)及一對稱鑰加密符(例如AES)之支援。Diving can be implemented using different encryption algorithms. Diving is not limited to any particular chosen encryption algorithm. Furthermore, for a given deployment or distribution, all participating entities generally need to cooperate with a set of supported algorithms. In an embodiment, the deployment includes support for at least one public key cryptographic (eg, RSA) and a symmetric key cryptographic (eg, AES).

以下表示號將用以參考加密功能:■Ep(Kpub〔N〕,M) 表示“使用公鑰加密符,以節點N之公鑰Kpub加密的信號M”The following notation will be used to refer to the encryption function: ■ Ep (Kpub[N], M) means "signal M encrypted with the public key Kpub of node N using the public key cipher"

Dp(Kpri〔N〕,M) 表示“使用公鑰加密符,以節點N之私鑰Kpriv解密的信號M”Dp (Kpri[N], M) means "signal M decrypted with the public key Kpriv of node N using the public key cipher"

Es(Ks〔N〕,M) 表示“使用對稱鑰加密符,以節點N之對稱鑰Ks加密的信息M”Es(Ks[N], M) means "using the symmetric key cipher, the information M encrypted with the symmetric key Ks of the node N"

Ds(Ks〔N〕,M) 表示“使用對稱鑰加密符,以節點N之對稝鑰Ks解密的信息M”Ds(Ks[N], M) means "using the symmetric key cipher, the information M decrypted by the node N against the key Ks"

3.內容鑰的目標3. The target of the content key

用於潛水中之加密目標有兩類型。將一內容鑰對準目標群組節點共享鑰表示使該鑰為所有實體所用,以共享該目標節點的私潛水鑰。將一內容鑰對準節點的保密鑰表示使得該鑰只為該節點所用。對準目標係藉由使用一或兩個以下之方法,將承載於ContentKey物件中之鑰CK加以完成。There are two types of encryption targets for diving. Aligning a content key to a target group node The shared key representation makes the key available to all entities to share the private key of the target node. Aligning a content key with a node's security key indicates that the key is only used by the node. Aligning the target is accomplished by using one or two of the following methods to load the key CK carried in the ContentKey object.

‧公束縛:建立ContentKey物件,其包含Ep(Kpub〔N〕,CK)‧ Male bondage: Create a ContentKey object that contains Ep (Kpub[N], CK)

‧對稱束縛:建立ContentKey物件,其包含Es(Ks〔N〕,CK)‧ Symmetrical Binding: Create a ContentKey object containing Es(Ks[N], CK)

在一較佳實施例中,對稱束縛係被儘可能地使用,因為其使用較少的密集計算的演算法,因此,對接收實體有較少之困擾。然而,建立ContentKey物件的實體(典型內容套裝)並不會一直存取Ks〔N〕。在此例子中,使用公共束縛,因為Kpub〔N〕應該可用,因為它並不是保密資訊。Kpub〔N〕將為需要針對內容鑰的實體所用,其跟隨著一證書,其可以為該實體所檢視以決定是否Kpub〔N〕實際為可以信任的節點之鑰,以依據部份同意政策處理內容。In a preferred embodiment, symmetric binding is used as much as possible because it uses less computationally intensive algorithms and, therefore, has less of a problem for the receiving entity. However, entities that create ContentKey objects (typical content packages) do not always access Ks[N]. In this example, public binding is used because Kpub[N] should be available because it is not confidential. Kpub[N] will be used by the entity that needs to target the content key, followed by a certificate that can be examined by the entity to determine if Kpub[N] is actually the key of the trusted node to process according to the partial consent policy. content.

4.使用鏈結之潛水鑰的推導4. Derivation of the diving key using the link

為了允許實體由個性節點可取得所有節點的潛水共享鑰,鏈結物件包含一潛水延伸符酬載。該酬載允許任何已 “由”節點存取鏈結的私/密潛水鑰至已存取鏈結私/密潛水鑰“至”節點。以此方式,一實體可以解密任何針對一個性節點可到達的節點的內容鑰(如果目標係使用目標節點之共享鑰)。In order to allow the entity to obtain the dive shared key of all nodes by the personality node, the link object contains a dive extension payload. The payload allows any The "by" node accesses the private/dense key of the link to the visited node private/dense key "to" node. In this way, an entity can decrypt any content key for a node reachable by a sexual node (if the target uses the shared key of the target node).

當群組引擎處理鏈結物件,其處理每一鏈結的潛水酬載,以更新潛水鑰的內部鏈至其已存取者。When the group engine processes the linked objects, it processes the dive payload of each link to update the internal chain of the dive key to its visited.

在一實施例中,由節點F至節點T的一鏈路L的潛水延伸符酬載係由以下任一所構成:‧公共推導資訊:Ep(Kpub-share〔F〕,{Ks-share〔T〕,Kprive-share〔T〕})或‧對稱推導資訊:Es(Ks-share〔F〕,{Ks-share〔T〕,Kpriv-share〔T〕})其中{Ks-share〔T〕,Kpriv-share〔T〕}為資料結構,其包含Ks-share〔T〕及Kpriv-share〔T〕。In one embodiment, the dive extension payload of a link L from node F to node T consists of: ‧ public derivation information: Ep (Kpub-share [F], {Ks-share[ T], Kprive-share [T]}) or ‧ symmetric derivation information: Es (Ks-share [F], {Ks-share [T], Kpriv-share [T]}) where {Ks-share [T] Kpriv-share [T]} is a data structure containing Ks-share [T] and Kpriv-share [T].

公共推導資訊係被用以輸送節點T的私潛水共享鑰Ks-share〔T〕及Kpriv-share〔T〕至已經存取節點F的私潛水鑰Kpri-share〔F〕的任一實體。The public derivation information is used to convey the private diving shared key Ks-share [T] and Kpriv-share [T] of the node T to any entity of the private diving key Kpri-share [F] that has accessed the node F.

對稱推導資訊係用以輸送節點T的私潛水共享鑰Ks-share〔T〕及Kpriv-share〔T〕至已經存取節點F的對稱潛水共享鑰Ks-share〔F〕的任一實體。The symmetric derivation information is used to convey the private diving shared key Ks-share [T] and Kpriv-share [T] of the node T to any entity of the symmetric diving shared key Ks-share [F] that has accessed the node F.

至於將內容鑰對準至節點,較佳包含在鏈結的酬載為對稱推導資訊。這是當鏈結建立符已經存取Ks-share〔F 〕時為可能。如果不是,則鏈結建立符將下降至包含公共推導資訊作為鏈結的潛水酬載。As for aligning the content key to the node, it is preferred that the payload contained in the link be symmetrically derived information. This is when the link builder has access to Ks-share [F 〕 is possible. If not, the link builder will drop to the dive payload containing the public derivation information as a link.

假設處理此鏈結的群組引擎已經在其內部潛水鑰鏈中具有Ks-share〔F〕及Kpriv-share〔F〕,在處理鏈結L〔F->T〕後,其將在鑰鏈上具有Ks-share〔T〕及Kprive-share〔T〕。Suppose that the group engine that handles this link already has Ks-share[F] and Kpriv-share[F] in its internal diving key chain. After processing the link L[F->T], it will be in the key chain. It has Ks-share [T] and Kprive-share [T].

在一實施例中,因為群組鏈結可以以任何順序加以處理,所以群組引擎可能不能在鏈結L被處理時作鑰推導計算。這是由於在該時間,潛水鑰鏈可能不包含該鏈結的“自”節點的潛水鑰。在此時,當新資訊變成可為群組引擎所用時,鏈結被記住,及再次被處理。新資訊通常在處理新鏈結P後可用,鑰推導步驟將鏈結L的“自”節點的私潛水共享鑰加至鑰鏈結(此發生於當鏈結P的“至”節點與鏈結L的“自”節點相同,及鏈結P的“自”係為可到達節點)。In an embodiment, because the group links can be processed in any order, the group engine may not be able to make key derivation calculations when the link L is processed. This is because at this time, the diving key chain may not contain the diving key of the "self" node of the link. At this point, when the new information becomes available to the group engine, the link is remembered and processed again. The new information is usually available after processing the new link P. The key derivation step adds the private dive shared key of the "self" node of the link L to the key link (this occurs when the "to" node and link of the link P The "self" nodes of L are the same, and the "self" of the link P is the reachable node).

第8圖顯示在一實施例中,使用鏈結之潛水鑰的推導。Figure 8 shows the derivation of the diving key using the link in one embodiment.

5.範例資料結構5. Sample data structure 5.1.潛水鑰5.1. Dive Key

6.簽章6. Signature

潛水鑰可以出現在不同上下文中。例如:The dive key can appear in different contexts. E.g:

-節點:潛水鑰包含平文字鑰並需要被簽章作為節點物件的一部份(如果被載於內部延伸符中的話)。注意在一實施例中,潛水私及密鑰從未包含在節點的內部延伸符,而是包含在外部延伸符中。- Node: The dive key contains a flat text key and needs to be signed as part of the node object (if it is contained in the internal extension). Note that in an embodiment, the dive private and key are never included in the node's internal extension, but are included in the outer extension.

-鏈結:潛水鑰包含點“至”節點的共享鑰。在一實施例中,在此上下文中,潛水鑰延伸符並未簽章作為物件的一部份(如果承載在內部延伸符內),並且,如果承載於外部延伸符中,延伸符並未被簽章。- Link: The dive key contains the shared key of the "to" node. In an embodiment, in this context, the dive key extender is not signed as part of the object (if carried in the internal extension), and if carried in the outer extension, the extension is not signature.

C.群組物件C. Group objects

此段落描述基本物件,其係為群娋之例示實施法之建構方塊。首先,一相當高階圖顯示群組所使用以內容保護與管理之物件的類型,及它們係如何彼此相關。再者,提供這些物件的更詳細說明與它們所傳輸的資訊。最後,提供用於規則條件、身份及鑰管理的實施例中所用之物件的說明。This paragraph describes the basic items, which are the building blocks of the exemplary implementation of the group. First, a fairly high-level diagram shows the types of objects that the group uses to protect and manage content, and how they relate to each other. Furthermore, a more detailed description of these objects is provided along with the information they transmit. Finally, an illustration of the objects used in the embodiments for rule condition, identity, and key management is provided.

1.內容保護及管理物件1. Content protection and management of objects

第9圖為依據群組的實施例之各種內容保護與管理物件。內容管理物件為用以保護內容與保護內容相關的使用規則(控制)的物件。Figure 9 is a diagram of various content protection and management objects in accordance with an embodiment of the group. The content management object is an object for protecting the content from the usage rules (control) related to the protected content.

為內容物件所代表之資料係為一鑰所加密。該鑰係為一內容鑰物件所代表,在內容與用以加密之鑰間之束縛係為保護符物件所代表。管理解密內容之鑰的規則係為控制物件所代表,及於內容鑰與用以管理其使用之控制間之束縛係為控制符物件所表示。在一實施例中,所有受信任之系統將只在控制物件中之位元組碼所表示之規則的管理下,使用內容解密鑰。The data represented by the content object is encrypted by a key. The key is represented by a content key object, and the constraint between the content and the key used for encryption is represented by a protector object. The rules governing the key to decrypt the content are represented by the control object, and the binding between the content key and the controls used to manage its use is represented by the control object. In an embodiment, all trusted systems will use the content decryption key only under the management of the rules represented by the byte code in the control object.

1.1共同元件1.1 common components

在一實施例中,所有群組物件共享共同基本特質:他們可以個別具有一ID、一列屬性、及一列延伸符。In an embodiment, all group objects share a common basic trait: they may individually have an ID, a list of attributes, and a list of extensions.

1.1.1.ID1.1.1.ID

可以為其他物件所參考的物件具有特有之ID。在一實施例中,ID係為簡單之URI,及在群組中之習慣為URI及URN。Objects that can be referenced for other objects have a unique ID. In one embodiment, the ID is a simple URI, and the habits in the group are URI and URN.

1.1.2.屬性1.1.2. Properties

屬性為分類值。屬性可以有名字或無名字。有名字的屬性之名字為簡單字串或URI。值或屬性為一簡單類型( 字串、整數及位元組陣列)或一混合類型(名單或陣列)。The attribute is a categorical value. Attributes can have names or no names. The name of a named attribute is a simple string or URI. Value or attribute is a simple type ( String, integer and byte array) or a mixed type (list or array).

類型“名單”的屬性包含一未排序列之名字屬性。類型“陣列”的屬性包含已排序陣列之無名字屬性。The attribute of the type "list" contains an unordered name attribute. The attribute of type "array" contains the unnamed attribute of the sorted array.

物件的“屬性”欄係為(可能空的)一未排序集合之有名字屬性。The "property" column of the object is (possibly empty) the name attribute of an unsorted collection.

1.1.3.延伸符1.1.3. Extension

延伸符係為可以被加至物件之元件,以承載選用或備之額外資料。延伸符被分類,並具有特有ID。延伸符可以是內部或外部。Extensions are components that can be added to an item to carry additional information that is selected or prepared. The extensions are categorized and have a unique ID. The extension can be internal or external.

1.1.3.1內部延伸符1.1.3.1 Internal extension

內部延伸符被包含在它們延伸的物件中。他們具有一“重要”旗標,其指示是否用於該延伸符之特定延伸資料類型需要被使用該物件的實施法所知道。在一實施例中,如果一實施法遭遇一具有重要延伸符之物件與一其所不了解的資料類型,則它們必須退回整個物件。Internal extensions are included in the objects they extend. They have an "important" flag indicating whether the particular extended data type for the extension needs to be known by the implementation of the object. In one embodiment, if an implementation encounters an object with an important extension and a type of material that it does not understand, they must return the entire object.

在一實施例中,內部延伸符的ID需要為內部特有的:一物件不能包含有相同ID的兩延伸符,但有可能兩不同物件包含有與其他物件延伸符相同的ID的延伸符。In one embodiment, the ID of the internal extension symbol needs to be internal: an object cannot contain two extensions of the same ID, but it is possible that two different objects contain an extension of the same ID as the other object extension.

物件的“延伸符”欄(可能是空的)為內部延伸符的未排序集合。The "extension" column of the object (which may be empty) is an unordered collection of internal extensions.

1.1.3.2.外部延伸符1.1.3.2. External extensions

外部延伸符並未包含在它們所延伸的物件中。它們獨立於物件之外出現,並具有“主題”欄,其包含它們所延伸之物件之ID。在一實施例中,內部延伸之ID需要為全球特有。External extensions are not included in the object they extend. They appear outside of the object and have a "subject" column that contains the ID of the object they extend. In an embodiment, the internally extended ID needs to be unique to the world.

1.2.內容1.2. Content

在一實施例中,內容物件為“外部”物件。其格式與儲存並未為群組所控制,而是在主應用程式(例如,可能是MP4電影檔、MP3音樂軌跡等等)之內容管理次系統所控制。在一實施例中,內容的格式需要提供將ID相關於內容酬載資料的支援。內容酬載係以格式相關之方式加密(典型以一對稱加密符,例如AES)。In an embodiment, the content item is an "external" item. The format and storage are not controlled by the group, but are controlled by the content management subsystem of the main application (eg, possibly MP4 movie files, MP3 music tracks, etc.). In an embodiment, the format of the content needs to provide support for correlating the ID to the content payload data. The content payload is encrypted in a format-dependent manner (typically with a symmetric cipher such as AES).

1.3.內容鑰1.3. Content Key

內容鑰物件代表一特定加密鑰,並以一ID與之相關。ID的目的為使得保護符物件與控制符物件參考內容鑰物件。包含在內容鑰物件中之實際鑰資料係被本身加密,使得其只可以為授權以解密該內容的接收者所讀取。內容鑰物件指明哪一加密系統被用以加密鑰資料。用以保護內容鑰資料的加密系統被稱為鑰分配系統。可以使用不同鑰分配系統。鑰分配系統的例子為上述潛水鑰分配系統。The content key object represents a specific encryption key and is associated with it by an ID. The purpose of the ID is to make the protector object and the control object refer to the content key object. The actual key data contained in the content key object is itself encrypted so that it can only be read by the recipient authorized to decrypt the content. The content key object indicates which encryption system is used to encrypt the key material. The encryption system used to protect the content key material is called a key distribution system. Different key distribution systems can be used. An example of a key distribution system is the above-described diving key distribution system.

1.4.保護符1.4. Protector

保護符物件包含資訊,其允許群組找出哪一鑰被用以加密內容物件的資料。其也包含哪一加密演算法被用以加密該資料的資訊。在一實施例中,保護符物件包含一或多數ID,其係為內容物件所參考,並且,參考內容鑰物件代表用以加密該資料的鑰。如果保護符指向一個以上之內容物件,則這些內容物件代表已經使用相同加密演算法及相同鑰所加密的資料。The protector object contains information that allows the group to find out which key was used to encrypt the content of the content object. It also contains information on which encryption algorithm is used to encrypt the data. In an embodiment, the protector object contains one or more IDs that are referenced by the content object, and the reference content key object represents the key used to encrypt the material. If the protector points to more than one content object, then these content objects represent material that has been encrypted using the same encryption algorithm and the same key.

1.5.控制1.5. Control

當為主應用程式所要求時,控制物件包含資訊以允許群組作出有關是否在內容上之某些作動應被允許否的決定。在一實施例中,管理內容鑰的使用之規則係被編碼於控制物件中,作為浮游生物位元組碼。控制物件同時具有一特有ID,使得它可以為控制符物件所參考。在一實施例中,控制物件被簽章,使得在其作出任何決定前,群組可以驗證控制位元組碼為有效及受信任。當該資訊可用時,控制物件的有效性同時也可以選用地經由驗證包含在控制符物件中之安全散列加以推導出。When required by the main application, the control object contains information to allow the group to make a decision as to whether certain actions on the content should be allowed. In one embodiment, the rules governing the use of the content key are encoded in the control object as a plankton byte code. The control object has a unique ID at the same time so that it can be referenced for the control object. In an embodiment, the control object is signed such that the group can verify that the control byte code is valid and trusted before any decision is made. When this information is available, the validity of the control object is also optionally derived by verifying the secure hash contained in the control object.

1.6.控制符1.6. Control character

控制符物件包含資訊,其能允許群組找出哪一控制管理為內容鑰物件所代表之一或多數鑰的使用。它包含資訊,以將之束縛至內容鑰物件,及它所參考的控制物件。在一實施例中,控制符物件係被簽章(藉由套裝應用程式, 其具有一證書,以允許其簽章控制符物件),使得群組可以信任於內容鑰與管理它的控制物件間之束縛的有效性,及於內容鑰ID與實際鑰資料間之束縛的有效性。控制符物件的簽章可以是一公鑰簽章或對稱鑰簽章,或兩者之組合。同時,當為控制符物件所參考的控制物件的消化包含在該控制符物件時,控制物件的有效性可以被推導出,而不必分開驗證控制物件的簽章。The control object contains information that allows the group to find out which control management is used by one or most of the keys represented by the content key object. It contains information to bind it to the content key object and the control object it references. In one embodiment, the control object is signed (by the suite application, It has a certificate to allow it to sign the control object) so that the group can trust the validity of the binding between the content key and the control object that manages it, and the binding between the content key ID and the actual key data is valid. Sex. The signature of the control object can be a public key signature or a symmetric key signature, or a combination of the two. At the same time, when the digestion of the control object referenced for the control object is included in the control object, the validity of the control object can be derived without having to separately verify the signature of the control object.

1.6.1.對稱鑰簽章1.6.1. Symmetric key signature

這是用於控制符物件的最常用類型簽章。在一實施例中,此類型之簽章係藉由計算控制符物件的MAC(信息鑑別碼)加以實施,以相同於內容鑰物件所代表之鑰加以加鑰。於一實施例中,此MAC的標準方法係使用與選擇用於相同群組佈署的其他加密演算法的相同散列演算法之HMAC。This is the most common type signature for control objects. In one embodiment, this type of signature is implemented by computing the MAC (Information Authentication Code) of the control object, and is keyed with the same key as the content key object. In one embodiment, the standard method of this MAC uses the HMAC of the same hash algorithm as the other encryption algorithms selected for the same group deployment.

1.6.2.公鑰簽章1.6.2. Public Key Signature

此類型之簽章係當控制符物件的簽章者的身份需要知道時被使用。此類型的簽章係以公鑰簽章演算法加以實施,以主張此物件有效性的人員的私鑰加以簽章。在一實施例中,當使用此類型的簽章時,對稱鑰簽章將出現,及簽章控制符物件與公鑰簽章,使得其可以保證以其私鑰簽章的人員已經認可承載在內容鑰物件中之內容鑰的實際值。This type of signature is used when the identity of the signer of the control object needs to be known. This type of signature is implemented by a public key signature algorithm, signed by the private key of the person claiming the validity of the object. In an embodiment, when using this type of signature, a symmetric key signature will appear, and the signature control object and the public key signature, so that it can be guaranteed that the person with his private key signature has been authorized to carry The actual value of the content key in the content key object.

2.規則條件、身份及鑰管理物件2. Rule conditions, identity and key management objects

第10圖顯示各種依據群組實施例之規則條件、身份及鑰管理物件。節點物件代表在DRM設定檔中之實體。在一實施例中,群組並沒有節點物件所代表的暗示或明示語意。使用群組之系統的一給定佈署(DRM設定檔)將定義存在什麼類型之人員,以及,不同節點物件所代表之什麼角色與身份。語意資訊典型使用節點物件的屬性加以表示。Figure 10 shows various rule conditions, identity and key management objects in accordance with a group embodiment. The node object represents the entity in the DRM profile. In an embodiment, the group does not have a hint or explicit semantics represented by the node object. A given deployment (DRM profile) of a system using a group will define what type of person exists and what role and identity the different node objects represent. Semantic information is typically represented using the attributes of the node object.

鏈結物件代表於節點間之關係。鏈結物件可以選擇地包含其他加密資料,以允許群組使用鏈結用於內容鑰推導計算。如同於節點般,在一實施例中,群組並沒有暗示或明示語意表示鏈結關係意思。取決於“自”及“至”鏈結的節點代表一給定DRM設定檔,鏈結關係的意思可以表示為會員身份、所有權、協會、及很多其他類型的關係。在典型DRM設定檔中,部份節點物件代表使用者、其他節點代表裝置、還一部份節點代表使用者群體或授權域(AD)。在該情形中,於裝置與使用者間之鏈結可能代表所有權關係,及於使用者與使用者群體或AD間之鏈結可能代表會員身份關係。The link object represents the relationship between the nodes. The link object can optionally contain other encrypted material to allow the group to use the link for content key derivation calculations. As in the case of a node, in an embodiment, the group does not imply or expressly mean the meaning of the link relationship. Depending on the "self" and "to" links, the nodes represent a given DRM profile, and the meaning of the link relationship can be expressed as membership, ownership, association, and many other types of relationships. In a typical DRM profile, some node objects represent users, other nodes represent devices, and some nodes represent user groups or authorized domains (AD). In this case, the link between the device and the user may represent a proprietary relationship, and the link between the user and the user community or AD may represent a membership relationship.

2.1.節點2.1. Node

節點物件代表在該系統中之實體。該節點物件的屬性定義節點物件代表的某些態樣,例如在DRM設定檔中之上下文中之節點物件所代表之角色或身份。節點物件也具 有一保密非對稱配對鑰,其係用以將保密資訊作為給已經存取節點物件(典型,為節點所代表之實體,或負責管理該節點的部份實體)的保密份之次系統為目標。目標針對一節點的保密資訊將以該節點的保密公鑰加以加密。或者,當系統使用一內容鑰推導系統,用於例如上述之內容鑰分配時,可以使用一內容保護非對稱配對鑰及內容保護對稱鑰配合上鏈結物件。A node object represents an entity in the system. The attributes of the node object define certain aspects of the node object representation, such as the role or identity represented by the node object in the context of the DRM profile. Node object also has There is a secure asymmetric pairing key that is used to target confidential information as a secondary system for confidentiality of an already accessed node object (typically, the entity represented by the node, or the entity responsible for managing the node). The secret information of the target for a node will be encrypted with the secret public key of the node. Alternatively, when the system uses a content key derivation system for, for example, content key distribution as described above, a content protection asymmetric pairing key and a content protection symmetric key can be used in conjunction with the chained object.

2.2.鏈結2.2. Linkage

鏈結物件為一簽章主張,其中在圖中存在一指向緣,其頂節點為節點物件。對於一給定組節點與鏈結,如果在圖中之節點X頂點與節點Y頂點間有一指向路徑,則認為在節點X與節點Y間有一路徑。當節點X與節點Y間有一路徑,則認為節點Y係由節點X可到達。因此,這些由鏈結物件所代表之主張係用以表示哪些節點係可以由其他節點所到達。在允許執行動作前,管理內容物件的控制可以檢查是否某些節點係可以由有關於執行動作的實體的節點所到達。例如,如果節點D表示一裝置想要在內容物件上執行“播放”動作,則管理此內容物件的控制可以測試是否某一節點U代表某一使用者係可以由節點D到達。為了決定節點U是否為可到達,群組將檢查是否存在一組鏈結物件,其可以建立於節點D與節點U間之路徑。The link object is a signature claim, wherein there is a pointing edge in the figure, and the top node is a node object. For a given set of nodes and links, if there is a pointing path between the node X vertex and the node Y vertex in the figure, it is considered that there is a path between node X and node Y. When there is a path between node X and node Y, node Y is considered to be reachable by node X. Therefore, these claims represented by the link objects are used to indicate which nodes are reachable by other nodes. Controlling the management of the content object before allowing the action to be performed may check if certain nodes are reachable by the node having the entity that performed the action. For example, if node D indicates that a device wants to perform a "play" action on a content object, then control of managing the content object can test whether a node U can be reached by node D on behalf of a user. In order to determine if node U is reachable, the group will check if there is a set of link objects that can be established between the node D and the node U.

在一實施例中,在群組使用鏈結物件前,群組先驗證它但,以決定在節點圖中之路徑之存在。取決於用以簽章 鏈結物件的證書系統(例如,x509v3)之特定特性,鏈結物件可以給定有限之壽命,被廢止、等等。在一實施例中,管理哪些實體可以簽章鏈結物件、哪些鏈結物件可以被建立之政策、以及,鏈結物件的壽命未直接為群組所處理。相反地,存在於群組範圍外的政策,將典型對節點屬性資訊有影響力。為了促成加強某些政策的任務,在一實施例中,群組提供一種方法以延伸標準證書格式具有其他侷限檢查。這些延伸符有可能表示簽章鏈結的鑰之證書上之有效性侷限,使得例如鏈結正連接之節點什麼類型及其他屬性可以在鏈結為群組所認為有效前加以檢查。In one embodiment, before the group uses the linked object, the group first validates it to determine the existence of the path in the node map. Depends on the signature The specific characteristics of the certificate system of the linked object (eg, x509v3), the linked object can be given a limited lifetime, abolished, and the like. In one embodiment, policies governing which entities can sign the link object, which link objects can be established, and the life of the link object are not directly handled by the group. Conversely, policies that exist outside the group will have an impact on node attribute information. In order to facilitate the task of enhancing certain policies, in one embodiment, the group provides a way to extend the standard certificate format with other limitations checks. These extensions may indicate the validity of the certificate on the signature of the signature link, such that the type of node and other attributes of the node to which the link is connected may be checked before the link is considered valid by the group.

在一實施例中,鏈結物件可以包含一控制物件,其可以被用以侷限鏈結的有效性。另外,在一實施例中,鏈結物件可以包含潛水加密資料,其提供使用者以節點的內容保護鑰,用於鑰分配。除了元資料外,該加密資料將包含“自”節點的私及/或對稱內容保護鑰,其被加密以“至”節點的內容保護公鑰及/或內容保護對稱鑰。In an embodiment, the link object can include a control object that can be used to limit the effectiveness of the link. Additionally, in an embodiment, the link object may contain diving encryption material that provides the user with a node's content protection key for key distribution. In addition to the metadata, the encrypted material will contain the private and/or symmetric content protection keys of the "from" node, which are encrypted with the content protection public key and/or content protection symmetric key of the "to" node.

3.使用模式3. Usage mode

在一實施例中,因為群組並未明示或暗示附著至這些基本物件上的語意,使用群組的系統將需要參與用於這些物件的一或多數使用模式,它們會將這些物件置於語意上下文中。我們稱這些語意上下文為DRM設定檔。在此時,我們認為群組物件為DRM樂高積木塊,其係用以建立DRM系統。In an embodiment, because the group does not express or imply semantics attached to the basic objects, the system using the group will need to participate in one or more usage patterns for the objects, which will place the objects in semantics. In the context. We call these semantic contexts DRM profiles. At this point, we believe that the group object is a DRM LEGO building block, which is used to build a DRM system.

4.資料結構4. Data structure

以下段落更詳細說明用於上述物件的例示物件模型,定義在一例示實施例中,每一類型物件所擁有的欄位。The following paragraphs describe in more detail an exemplary object model for the above objects, defining the fields owned by each type of object in an exemplary embodiment.

這些資料結構係使用相當簡單的物件描述語法加以描述。每一物件類型係為一可以延伸一母班級(即“一”關係)的班級所定義。班級描述係以簡單抽象類型“字串”(字元串)、‘int’(整數值)、‘byte’(8位元位元組值)、及‘boolean’(真或假)表示,但並未定義這些資料類型的任意特定編碼,或包含這些類型的合成結構。物件編碼、或呈現的方式可以取決於引擎的實施法加以改變。典型地,群組使用的給定模式將指明欄位係如何呈現(例如,使用XML設計)。These data structures are described using a fairly simple object description syntax. Each item type is defined by a class that can extend a parent class (ie, a "one" relationship). The class description is represented by a simple abstract type "string" (character string), 'int' (integer value), 'byte' (8-bit byte value), and 'boolean' (true or false), but Any specific encoding of these data types is not defined, or synthetic structures of these types are included. The manner in which an object is encoded, or rendered, may vary depending on the implementation of the engine. Typically, a given pattern used by a group will indicate how the field is rendered (eg, using an XML design).

在一例示實施例中,使用以下表示法: In an exemplary embodiment, the following notation is used:

4.1.共同結構4.1. Common structure

在一例示實施例中,使用以下共同結構: In an exemplary embodiment, the following common structure is used:

4.1.1.屬性4.1.1. Properties

在一實施例中,有四種屬性:整數屬性、字串屬性、位元組陣列屬性、及名單屬性,每一個具有名字與類型。In one embodiment, there are four attributes: an integer attribute, a string attribute, a byte array attribute, and a list attribute, each having a name and a type.

4.1.2.延伸符4.1.2. Extensions

在一實施例中,有兩延伸符:In one embodiment, there are two extensions:

■內部延伸符:承載於群組內■Internal extension: carried in the group

■外部延伸符:承載於群組外■External extension: carried outside the group

重要的是可以在如果某特定類型的延伸資料並不是一給定實施法所了解時,能驗證Octojbect的簽章。這就是為何在一實施例中加入與資料消化欄位間接有關之一階。如果此延伸資料的規格書指示該資料為特定Octobject上下文內之簽章的一部份,則該資料消化欄將出現。了解此延伸資料的實施法因此能計算其標準表示法,並可以驗證該消化。於此一實施例中,如果此延伸資料的規格書指示資料並不是簽章的一部份,則並不會出現資料消化欄位。It is important to be able to verify the signature of Octojbect if a particular type of extension is not known to a given implementation. This is why in one embodiment a step is added indirectly related to the data digestion field. If the specification of the extended material indicates that the data is part of a signature within a particular Octobject context, the data digestion column will appear. Understanding the implementation of this extended data can therefore calculate its standard representation and verify the digest. In this embodiment, if the specification of the extended data indicates that the data is not part of the signature, the data digestion field does not appear.

4.2.節點物件4.2. Node objects

4.3.鏈結物件4.3. Linked objects

4.4.控制物件4.4. Control objects

4.5.內容鑰物件4.5. Content key object

在一實施例中,每一鑰具有一特有id、格式、用法(其可以是空的)、與資料。“用法”欄如果不是空的,則指明該鑰可以使用的目的。對於正常內容鑰,此欄為空的。對於潛水,此欄指明是否此為一鑰共享鑰或保密鑰。“格式”欄指明‘資料’欄的格式(例如,‘RAW’表示對稱鑰,或‘PKCS#8’表示RSA私鑰等等)。‘資料’欄包含依據‘格式’欄格式化之實質鑰資料。In one embodiment, each key has a unique id, format, usage (which may be empty), and data. If the Usage column is not empty, it indicates the purpose for which the key can be used. For normal content keys, this field is empty. For diving, this column indicates whether this is a key shared key or a security key. The "Format" column indicates the format of the 'Data' column (for example, 'RAW' indicates a symmetric key, or 'PKCS#8' indicates an RSA private key, etc.). The 'Data' column contains the physical key data formatted according to the 'Format' field.

對於配對鑰之一部份的鑰(例如RSA鑰),額外欄‘pairId’給予該配對一特有識別碼,使得該對可以由其他資料結構參考。For the key of one part of the pairing key (for example, the RSA key), the extra column 'pairId' gives the pair a unique identification code so that the pair can be referenced by other data structures.

在一實施例中,在鑰物件中之資料欄係為實際鑰的明文值,即使該件的呈現包含該鑰的加密拷貝。In one embodiment, the data field in the key object is the plaintext value of the actual key, even if the presentation of the piece contains an encrypted copy of the key.

4.6.控制符物件4.6. Control object

D.浮游生物虛擬機器D. Plankton virtual machine

浮游生物為群組引擎實施例所用之虛擬機器(VM),以執行管理對內容存取之控制程式。以下將說明,浮游生物VM的例示樣品版,將解釋部份的設計決定及浮游生物VM配合群組架構,然後描述VM的基本元件,其後,有關記憶體模型的其他細節與指令集。最後,說明程式係如何包裝在碼模組中,及提供可為程式所用之系統呼叫組。Plankton is a virtual machine (VM) used by the group engine embodiment to execute a control program that manages access to content. As will be explained below, an exemplary sample version of the plankton VM will explain some of the design decisions and the plankton VM with the group architecture, then describe the basic components of the VM, followed by other details and instruction sets about the memory model. Finally, explain how the program is packaged in the code module and provide the system call group that can be used by the program.

1.設計基本原理1. Design basic principles

在一實施例中,浮游生物虛擬機器(VM)為傳統虛擬機器,被設計以容易使用各種程式語言加以實施,同時具有很少之碼足跡。其係根據於可以被稱為TISC(簡易指令集電腦)的一堆疊導向之指令集。該指令集被設計為最低要求,不太關係於執行速度或碼密度。執行速度為非目標性,及碼密度為正交問題:當需要微型碼時,將使用資料壓縮技術以壓縮浮游生物碼,而不藉由設計使位元組碼變小。In one embodiment, the Plankton Virtual Machine (VM) is a traditional virtual machine that is designed to be easily implemented using a variety of programming languages with minimal code footprint. It is based on a stack-oriented instruction set that can be called TISC (Simple Instruction Set Computer). This instruction set is designed to be the minimum requirement and is not related to execution speed or code density. Execution speed is non-targeted, and code density is orthogonal: when microcode is needed, data compression techniques are used to compress the planktonic code without designing the bytecode to be smaller.

浮游生物應適用於低或高階程式語言的目標。最少,虛擬機器本質上應支援組合語言、C及FORTH。應可能實施用於其他語言的編譯器,例如Java或專用語言,而沒有太多困難。Plankton should be suitable for low or high level programming languages. At a minimum, virtual machines should essentially support combined languages, C, and FORTH. It should be possible to implement compilers for other languages, such as Java or proprietary languages, without much difficulty.

最後,在一實施例中,浮游生物VM被設計為理於主機環境內,不直接執行在處理機或積體電路上。用於浮游生物之自然主機環境為群組引擎。Finally, in one embodiment, the plankton VM is designed to be within the host environment and is not directly executed on the processor or integrated circuit. The natural host environment for plankton is the group engine.

2.架構2. Architecture

第11圖顯示浮游生物VM的例示實施法的作業環境。浮游生物VM執行於其主機環境的上下文內,當該主機環境執行程式時,其實施部份VM所需的功能。典型地,浮游生物VM執行於群組引擎內,其實施其主機環境。Figure 11 shows the operating environment of an exemplary implementation of plankton VM. The plankton VM executes within the context of its host environment, and when the host environment executes the program, it implements the functions required by some of the VMs. Typically, a plankton VM is executed within a group engine that implements its host environment.

VM藉由執行儲存在碼模組內之指令,而執行程式。部份這些指令可以藉由系統呼叫,而呼叫實施在程式本身外之功能。系統呼叫係為浮游生物VM本身所實行,或被指派到主機環境。The VM executes the program by executing instructions stored in the code module. Some of these commands can be called by the system, and the call is implemented outside the program itself. System calls are either implemented by the plankton VM itself or assigned to the host environment.

3.基本VM元件3. Basic VM components 3.1.執行模型3.1. Execution model

在一實施例中,浮游生物執行儲存在碼模組中之指令作為載在記憶體中之位元組碼流。VM維持一稱為程式計數器(PC)的虛擬暫存器,其係當指令被執行時增加。VM依序執行指令,直到遭遇OP_STOP指令、OP_RET指令遭遇空的呼叫堆疊、或發生例外為止。跳躍係被指明為相對跳躍(被指明為離開PC的現行值的位元組偏移),或一絕對位址。In one embodiment, the plankton executes the instructions stored in the code module as a byte stream carried in the memory. The VM maintains a virtual scratchpad called a program counter (PC) that is incremented when the instruction is executed. The VM executes the instructions sequentially until it encounters an OP_STOP instruction, an OP_RET instruction encounters an empty call stack, or an exception occurs. The hopping is indicated as a relative hop (a byte offset indicated as the current value leaving the PC), or an absolute address.

3.2.記憶體模型3.2. Memory model

在一實施例中,浮游生物VM具有簡單記憶體模型。VM記憶體被分成資料記憶體空間與碼記憶體空間。In an embodiment, the plankton VM has a simple memory model. The VM memory is divided into a data memory space and a code memory space.

資料記憶體為由位址0開始之均勻鄰接記憶體空間。資料記憶體典型為分配在主應用程式或主環境堆積記憶體內之一陣列位元組。對於一給定VM實施法,記憶體空間的尺寸將固定至指定最大值,及任何想要對該空間外的記憶體存取將造成故障,並將終止該程式執行。資料記憶體可能共享於幾個為VM所同時載入之碼模組間。在資料記憶體中之資料可以為記憶體存取指令所存取,指令可以為32位元或8位元存取。32位元記憶體存取係使用大尾序(big-endian)位元組順序完成。有關於VM可見與主機管理記憶體(主CPU虛擬或實體記憶體)間之排列,並未作出假設。The data memory is a uniform adjacent memory space starting from address 0. The data memory is typically one of the array bytes allocated in the main application or in the main environment. For a given VM implementation, the size of the memory space will be fixed to the specified maximum, and any memory accesses that would otherwise be outside the space will cause a failure and will terminate the program execution. The data memory may be shared among several code modules that are simultaneously loaded by the VM. The data in the data memory can be accessed by a memory access instruction, which can be accessed as 32-bit or 8-bit. The 32-bit memory access is done sequentially using big-endian bytes. No assumptions have been made regarding the alignment between VM visibility and host management memory (primary CPU virtual or physical memory).

碼記憶體為均勻鄰接記憶體空間,由位址0開始。碼記憶體典型為在主應用程式或主環境之堆積記憶體內的一陣列位元組。The code memory is a uniform adjacent memory space, starting with address 0. The code memory is typically an array of bytes in the main application or in the stacked memory of the main environment.

如果VM裝載幾個碼模組,則所有碼模組共享相同資料記憶體(然而,每一模組之資料被載於不同位址),但每一個具有其本身碼記憶體(這表示對於來自一碼模組的跳躍指令不可能造成一跳躍直接至來自另一碼模組的碼)。If the VM loads several code modules, all code modules share the same data memory (however, each module's data is carried on a different address), but each has its own code memory (this means that for A jump instruction of a code module cannot cause a jump directly to a code from another code module).

3.3.資料堆疊3.3. Data stacking

VM具有資料堆疊的表示法,其代表儲存在資料記憶體中的32位元資料單元。VM維持一稱為堆疊指標器(SP)的虛擬暫存器。在重置後,SP指向資料記憶體的末端,及堆疊向下成長(當資料係被推至資料堆疊,SP暫存器被減量)。取決於參考堆疊資料的指令,而解釋在堆疊上之32位元值係為32位元定址,或32位元帶正負號整數。The VM has a representation of the data stack that represents the 32-bit data unit stored in the data memory. The VM maintains a virtual scratchpad called a Stack Indicator (SP). After resetting, the SP points to the end of the data memory, and the stack grows downwards (when the data is pushed onto the data stack, the SP register is decremented). Depending on the instruction to reference the stacked data, the 32-bit value on the stack is interpreted as a 32-bit address, or a 32-bit signed integer.

3.4.呼叫堆疊3.4. Call stacking

VM管理用以完成巢狀副程式呼叫的呼叫堆疊。推至此堆疊上之值不能為任一記憶體存取指令所直接讀取或寫入,而是當執行OP_JSP及OP_RET指令時,間接為VM所使用。對於一給定VM設定檔,此送回位址堆疊的尺寸將被固定至最大值,其允許某一量之巢狀呼叫不能被超出。The VM manages the call stack used to complete the nested subprogram call. The value pushed onto this stack cannot be directly read or written by any memory access instruction, but is indirectly used by the VM when the OP_JSP and OP_RET instructions are executed. For a given VM profile, the size of this return address stack will be fixed to a maximum value that allows a certain amount of nested calls to not be exceeded.

3.5.偽暫存器3.5. Pseudo-register

VM在資料記憶體的開始處保留一小空間,以映圖偽暫存器。這些偽暫存器的記憶體位址為固定。The VM reserves a small space at the beginning of the data memory to map the pseudo-scratchpad. The memory addresses of these pseudo scratchpads are fixed.

3.6.記憶體映圖3.6. Memory map

以下顯示資料記憶體及碼記憶體空間的佈局。The layout of the data memory and code memory space is shown below.

3.6.1.資料記憶體3.6.1. Data Memory

3.6.2.碼記憶體3.6.2. Code Memory

4.指令集4. Instruction set

在一實施例中,浮游生物VM使用很簡單之指令集。指令的數量很有限,應足夠表示簡單程式。指令集係堆疊為主:除了OP_PUSH指令外,這些指令均沒有直接運算元。所有運算元件由資料堆疊所讀取,及結果被推至資料堆疊上。VM為32位元VM:所有指令操作於32位元堆疊運算元上,代表記憶體位址或帶正負號之整數。帶正負號之整數係以2的補數二進制編碼表示。In an embodiment, the plankton VM uses a very simple instruction set. The number of instructions is very limited and should be sufficient to represent a simple program. The instruction set is mainly stacked: except for the OP_PUSH instruction, these instructions have no direct operands. All arithmetic components are read by the data stack and the results are pushed onto the data stack. VM is a 32-bit VM: All instructions operate on a 32-bit stacked operand, representing a memory address or a signed integer. The signed integer is represented by a two's complement binary code.

在以下表中,用於具有兩運算元的指令之堆疊運算元係被列為A、B,以堆疊的頂端最後(B)。In the following table, the stacking operands for instructions with two operands are listed as A, B, to the top of the stack (B).

5.碼模組5. Code module 5.1.模組格式5.1. Module format

碼模組係被儲存於一基元為主的格式。基元係等同於用於MPEG-4檔案格式中之基元結構:一基元,由32位元尺寸構成,被以大尾序位元組順序被儲存為4-八位元組,其後有4-八位元組類型(通常八位元組對應於字母的ASCII值)、其後有基元的酬載(大小-8八位元組)。第12圖顯示例示浮游生物碼模組的格式。The code modules are stored in a primitive-based format. The primitive is equivalent to the primitive structure used in the MPEG-4 file format: a primitive consisting of a 32-bit size, stored as a 4-octet in the order of the big endian, followed by There are 4-octet types (usually octets corresponding to the ASCII value of the letters) followed by primitive payloads (size -8 octets). Figure 12 shows the format of the illustrated planktonic code module.

5.2.pkCM基元5.2.pkCM primitive

pkCM基元為頂級碼模組基元。其包含一順序之次基元。在一實施例中,此基元必須準確包含一pkDS、一pkCS及一pkEX基元。其也可以包含一pkRQ基元。在一實施例中,如果有的話,也可以包含任意量之其他應被忽略的基元。The pkCM primitive is the top-level code module primitive. It contains a sequence of secondary primitives. In an embodiment, the primitive must contain exactly one pkDS, one pkCS, and one pkEX primitive. It can also contain a pkRQ primitive. In an embodiment, any number of other primitives that should be ignored may be included, if any.

5.3.pkDS基元5.3.pkDS primitive

pkDS基元包含一記憶體影像的資料區段,其可以被載入資料記憶體中。基元的酬載為一順序之八位元組值。記憶體影像的第一八位元組包含一版本號,其指明以下之八位元組的格式。The pkDS primitive contains a data section of a memory image that can be loaded into the data memory. The payload of the primitive is an order of octet values. The first octet of the memory image contains a version number indicating the format of the following octet.

在一實施例中,只有定義DataSegmentFormatVersion=0:以下之在順序中之八位元組形成一予以載入記憶體中之原始影像。VM載器只需要 將資料區段的酬載載入,而不是信頭位元組。In one embodiment, only the DataSegmentFormatVersion=0 is defined: the following octets in the sequence form an original image to be loaded into the memory. VM carrier only needs Load the payload of the data section instead of the header byte.

5.4.pkCS基元5.4.pkCS primitive

pkCS基元包含一記憶體影像之碼區段,其可以被載入碼記憶體者。基元的酬載係為一順序之八位元組值。記憶體影像的第一八位元組包含一版本號,其指明以下之八位元組格式。The pkCS primitive contains a code segment of a memory image that can be loaded into the code memory. The primitive's payload is a sequence of octet values. The first octet of the memory image contains a version number indicating the following octet format.

在一實施例中,只定義CodeSegmentFormatVersion=0,如下:下一個八位元組包含一版本號,以指明以下之八位元組的位元組碼編碼。ByteCodeVersion=0指明位元組碼值為以下所述者。以下八位元組包含位元組碼。VM載器只需要載入碼區段的酬載,不是兩信頭類型。In one embodiment, only CodeSegmentFormatVersion=0 is defined, as follows: The next octet contains a version number to indicate the following byte encoding of the octet. ByteCodeVersion=0 indicates that the byte code value is as described below. The following octet contains the byte code. The VM carrier only needs to load the payload of the code segment, not the two header types.

5.5.pkEX基元5.5.pkEX primitive

pkEX基元包含一名單之出口輸入項。每一出口輸入項包含一名稱,編碼成為8位元名稱大小,其後有名稱的字元,包含終止於0;其後有32位元整數,代表該名稱之輸入點的位元組偏移(此係偏移開儲存於pkCS基元中之資料的開始處)。The pkEX primitive contains a list of export inputs. Each exit entry contains a name that is encoded as an 8-bit name size, followed by a character with a name that terminates at 0; followed by a 32-bit integer representing the byte offset of the input point for that name (This is offset from the beginning of the data stored in the pkCS primitive).

5.6.pkRQ基元5.6.pkRQ primitive

pkRQ基元包含需要為虛擬機器實施法所符合之要求,以執行此碼。此基元為選用的。如果在此碼模組中沒有此基元,VM將使用預設實施設定,其可以為實施設定檔 所定義。The pkRQ primitive contains the requirements that need to be met for the virtual machine implementation to execute this code. This primitive is optional. If there is no such primitive in this code module, the VM will use the preset implementation settings, which can be the implementation profile. Defined.

此基元由一陣列之32位元整數值構成,每一值用於一要求欄位: This primitive consists of an array of 32-bit integer values, each value for a required field:

5.7.模組載器5.7. Module carrier

浮游生物VM負責載入碼模組。當碼模組被載入時,被編碼於pkDS基元中之資料區段影像係被載入於資料記憶體中之記憶體位址。該位址係為VM載器所選擇,並被儲存於DS偽暫存器中。為載器所選擇之位址需要足夠大以不會將載入資料與偽暫存器重疊並保留位址範圍。The plankton VM is responsible for loading the code module. When the code module is loaded, the data segment image encoded in the pkDS primitive is loaded into the memory address in the data memory. The address is selected by the VM carrier and stored in the DS pseudo register. The address selected for the carrier needs to be large enough to not overlap the payload data with the pseudo scratchpad and preserve the address range.

編碼於pkCS基元中之碼區段記憶體影像係被載入於碼記憶體中之記憶體位址。該位址係為VM載器所選擇並被儲存在CS偽暫存器中。The code segment memory image encoded in the pkCS primitive is loaded into the memory address in the code memory. This address is selected by the VM carrier and stored in the CS pseudo register.

當碼模組被載入時,如果“Global.OnLoad”特殊常式被發現在出口表的輸入項中,則執行該常式。此常式並不取在堆疊上之引數,並在送回時送回一整數狀態,0表示成 功,負數表示錯誤狀態。When the code module is loaded, if the "Global.OnLoad" special routine is found in the entry of the exit table, the routine is executed. This routine does not take the arguments on the stack and returns an integer state when sent back. 0 means Gong, negative numbers indicate error status.

當碼模組被卸載(或當載入模組的VM被丟棄)時,如果“Global.OnUnload”特殊常式在出口表中被找到,則該常式被執行。此常式並不取在堆疊上之引數,並在送回時送回一整數狀態,0表示成功,負數表示錯誤狀態。When the code module is unloaded (or when the VM loaded into the module is discarded), if the "Global.OnUnload" special routine is found in the exit table, the routine is executed. This routine does not take arguments on the stack and returns an integer state when sent back. 0 indicates success and negative indicates error status.

6.系統呼叫6. System call

浮游生物程式可以呼叫實施在其碼模組的碼區段外之功能。此係藉由OP_CALL指令的使用加以完成,其採用一整數堆疊運算元來指明系統呼叫數。取決於系統呼叫,實施法可以為在不同碼模組中之浮游生物位元組碼常式(例如,一應用功能的資料庫),直接藉由在VM本質實施格式中之VM,或指派至外部軟體模組,例如VM的主環境。The plankton program can call the function implemented outside the code segment of its code module. This is done by the use of the OP_CALL instruction, which uses an integer stacking operand to indicate the number of system calls. Depending on the system call, the implementation may be a plankton byte code routine in a different code module (eg, an application-enabled repository), either directly by VM in the VM's native implementation format, or assigned to An external software module, such as the main environment of a VM.

6.1.系統呼叫數配置6.1. System Call Number Configuration

在討論中之例示實施例中,浮游生物保留用於固定系統呼叫(這些系統呼叫將在所有VM實施法上的相同數)系統呼叫數0至1023。系統呼叫數16384至32767係可為VM所用以動態指派(例如,為System.FindSystemCallByName所送回之系統呼叫數可以動態地為VM所配置,因此,並在所有VM實施法中,不必有相同數)。In the illustrative embodiment discussed, plankton reserves the number of system calls 0 to 1023 for fixed system calls (these system calls will be the same on all VM implementations). The number of system calls 16384 to 32767 can be dynamically assigned by the VM (for example, the number of system calls sent back for System.FindSystemCallByName can be dynamically configured for the VM, so in all VM implementations, it is not necessary to have the same number ).

在一實施例中,以下固定系統呼叫數係被指明: In an embodiment, the following fixed system call numbers are indicated:

6.2.標準系統呼叫6.2. Standard system call

在一實施例,包含少數標準系統呼叫,其係可用於寫入控制程式。這些呼叫包含列在上表中之固定數系統呼叫,以及動態決定之系統呼叫(即其系統呼叫數係由System.FindSystemCallByName系統呼叫所取回,以其通過名稱作為引數)。In one embodiment, a small number of standard system calls are included, which can be used to write control programs. These calls contain fixed number system calls listed in the above table, as well as dynamically determined system calls (ie, their system calls are retrieved by the System.FindSystemCallByName system call, with the name as an argument).

6.2.1.System.NoOperation6.2.1.System.NoOperation

輸入:無 輸出:無Input: none Output: none

說明:此呼叫為無運算呼叫。其送回(沒事)。主要用以測試VM。Description: This call is a no-computing call. It is sent back (nothing). Mainly used to test VMs.

6.2.2.System.DebugPrint6.2.2. System.DebugPrint

輸入: 堆疊頂: Input: Stack top:

信息:包含一空終止字串的記憶體位置的位址。說明 :列印文字字串至除錯輸出。Information: The address of the memory location containing a null-terminated string. Description : Print text string to debug output.

6.2.3.System.FindSystemCallByName6.2.3.System.FindSystemCallByName

輸入:堆疊頂: Input: Stack top:

名稱:包含尋找的系統呼叫的名稱的空終止字串的位址。Name: The address of the null-terminated string containing the name of the system call being sought.

輸出:堆疊頂: Output: Stack top:

Id:如果具有該名稱的系統呼叫之系統呼叫數被實施,如果不是,則-1。Id: If the number of system calls for a system call with this name is implemented, if not, then -1.

說明:找出有其名稱之系統呼叫的ID。Description: Find the ID of the system call with its name.

6.2.4.System.Host.GetLocalTime6.2.4.System.Host.GetLocalTime

輸入:無Input: none

輸出:堆疊頂 Output: stack top

本地時間:主機的當地時間之現行值。Local time: The current value of the local time of the host.

說明:Description:

當地時間係被表示為等於從1970年1月1日00:00:00開始之經由分鐘數時間的32位元整數。The local time is expressed as a 32-bit integer equal to the number of minutes since January 1, 1970, 00:00:00.

6.2.5.System.Host.GetLocalTimeOffset6.2.5.System.Host.GetLocalTimeOffset

輸入:無Input: none

輸出:堆疊頂 Output: stack top

當地時間偏移:主機的現行時間偏移(開UTC時間)。Local time offset: The current time offset of the host (open UTC time).

說明:Description:

時間偏移被表示為等於當地時間與UTC時間之差(即當地時間-UTC)之分鐘數的32位元帶正負號整數。The time offset is expressed as a 32-bit signed integer equal to the number of minutes between the local time and the UTC time (ie, local time - UTC).

6.2.6.System.Host.GetTrustedTime6.2.6. System.Host.GetTrustedTime

輸入:無Input: none

輪出:堆疊頂 Round out: Stack top

信任時間:信任時鐘的現行值,如果無信任時間,則為負錯誤碼。該值被表示為一帶正負號32位元整數,其等於從1970年1月1日00:00:00UTC經過的分鐘數。Trust Time: The current value of the trust clock, or a negative error code if there is no trust time. This value is represented as a signed 32-bit integer equal to the number of minutes elapsed from January 1, 1970 at 00:00:00 UTC.

旗標:旗標位元組更定義信任時鐘的現行狀態。如果錯誤發生(信任時間值為負錯誤碼),則旗標值必須為0。Flag: The flag byte further defines the current state of the trust clock. If an error occurs (the trust time value is a negative error code), the flag value must be 0.

定義有以下旗標 Defined with the following flags

說明:Description:

系統呼叫只有關於實施信任時鐘的系統,該信任時鐘與信任時間源同步並保有單調時間計數器。信任時間值並不一直保證正確,但在一實施例中,需要以下特性為真:The system call is only for the system that implements the trust clock, which is synchronized with the trust time source and holds a monotonic time counter. The trust time value is not always guaranteed to be correct, but in an embodiment, the following characteristics are required to be true:

‧信任時間值被表示為UTC時間值(信任時間並不是當地時間區,因為當地並不能安全地決定)。‧ The trust time value is expressed as the UTC time value (the trust time is not the local time zone, because the local is not safely determined).

‧信任時間不會往回走。‧ Trust time will not go back.

‧信任時鐘並不會走得比真正時間快。‧ Trust clocks don’t go faster than real time.

因此,信任時間一直在最後同步時間(與信任時間源同步)與當地真實時間之間。如果系統能決定其信任時鐘已操作並正常地連續更新,沒有干擾,自行與信任時間源的最後同步,則可以決定信任時間值不是評估,而是準確值,並設定TIME_IS_ESTIMATE旗標為0。Therefore, the trust time is always between the last synchronization time (synchronized with the trusted time source) and the local real time. If the system can determine that its trust clock has been operated and is continuously updated continuously, without interference, and the last synchronization with the trusted time source, it can be determined that the trust time value is not an evaluation, but an accurate value, and the TIME_IS_ESTIMATE flag is set to zero.

在一實施例中,如果信任時鐘檢測發生故障(硬體或軟體),及甚至不能送回信任時間的評值值,則其必須送回一錯誤碼,所送回旗標的值必須設定為0。In an embodiment, if the trust clock detection fails (hardware or software), and even cannot return the evaluation value of the trust time, it must send back an error code, and the value of the returned flag must be set to 0. .

6.2.7.System.Host.GetObject6.2.7.System.Host.GetObject

輸入:堆疊頂: Input: Stack top:

母:母容器的32位元把(handle)Mother: 32-bit handle of the parent container

名稱:包含至要求物件的路徑之空終止的位址,相關於母容器Name: The address of the null termination containing the path to the requested object, related to the parent container

送回緩衝器:予以儲存物件值的記憶體緩衝器的位址Return buffer: Address of the memory buffer to store the value of the object

送回緩衝器大小:予以儲存物件值的記憶體緩衝器的大小(以位元組表示)Return buffer size: The size of the memory buffer to store the value of the object (in bytes)

輸出:堆疊頂: Output: Stack top:

類型Id:物件類型id,如果呼叫失敗則為負錯誤碼。如果沒有要求物件,則錯誤送回為ERROR_NO_SUCH_ITEM。如果緩衝器所供給送回值太小,則送回錯誤為ERROR_INSUFFICIENT_SPACE。如果被存取的部份物件樹作存取控制及呼叫程式沒有取得物件許可,則送回ERROR_PERMISSION_DENIED。也可以送回其他錯誤碼。Type Id: Object type id, a negative error code if the call fails. If no object is requested, the error is returned to ERROR_NO_SUCH_ITEM. If the buffer returned value is too small, the error returned is ERROR_INSUFFICIENT_SPACE. If the accessed object is accessed and the calling program does not obtain the object permission, it will be returned to ERROR_PERMISSION_DENIED. Other error codes can also be sent back.

大小:送回於呼叫者所供給的緩衝器中之資料的大小(以位元組表示),或者,如果呼叫者提供太小之緩衝器時,則為所需之大小。Size: The size (in bytes) of the data sent back to the buffer supplied by the caller, or the size required if the caller provides a buffer that is too small.

說明:系統呼叫為通用介面,其允許程式存取為VM主機所提供之物件。Description: The system call is a generic interface that allows the program to access the objects provided for the VM Host.

6.2.7.1.物件類型6.2.7.1. Object type

在一實施例中,有三類型之主物件:字串、整數、位元組陣列與容器。In one embodiment, there are three types of primary objects: strings, integers, byte arrays, and containers.

6.2.7.1.1.位元組陣列6.2.7.1.1. Byte array

位元組陣列物件值為一陣列的8位元位元組。用於位元組陣列的物件類型Id為3The byte array object value is an array of 8-bit bytes. The object type Id for the byte array is 3

6.2.7.1.2.字串6.2.7.1.2. String

字串物件的值為8位元字元的簡單空終止順序。用於字串的物件類型Id為2。The value of the string object is a simple null-terminated sequence of 8-bit characters. The object type Id used for the string is 2.

6.2.7.1.3.整數6.2.7.1.3. Integer

整數物件的值為正常浮游生物32位元帶正負號整數值。用於整數的物件類型Id為1。The value of an integer object is a normal plankton 32-bit signed integer value. The object type Id for an integer is 1.

6.2.7.1.4.容器6.2.7.1.4. Container

容器為通用容器,其包含一順序之任意類型組合之任意數量物件。包含在容器中之物件被稱為該容器之子。容器的為32位元容器把,其在給定VM例中為特有的。用於容器的物件類型Id為0。A container is a general purpose container that contains any number of items in any combination of any order. The item contained in the container is referred to as the child of the container. The container is a 32-bit container handle, which is unique in a given VM instance. The object type Id for the container is 0.

6.2.7.2.物件名稱6.2.7.2. Object Name

用於主物件的名稱空間為基礎名稱空間,其中容器的子物件的名稱係藉由將子的名稱附加至母容器的名稱加以建構,並以“/”字元加以分開。字元與整數物件並沒有子。例如,如果容器稱為‘節點/屬性’,並具有字串子名稱‘類型’,則‘節點/屬性/類型’表示子字串。The namespace used for the primary object is the underlying namespace, where the name of the child of the container is constructed by appending the name of the child to the name of the parent container, separated by a "/" character. Characters and integer objects have no children. For example, if the container is referred to as 'node/attribute' and has the string subname 'type', then 'node/attribute/type' represents a substring.

名稱空間的根為‘/’。所有絕對名稱以‘/’開始。未以‘/’開始的名稱為相對名稱。相對名稱係相對於一母容器。例如,相對於母‘/Node’之名稱‘屬性/類型’為具有絕對名稱‘/Node/Attributes/Type’的物件。根容器‘/’具有固定把值0。The root of the namespace is ‘/’. All absolute names begin with ‘/’. Names that do not start with ‘/’ are relative names. The relative name is relative to a parent container. For example, the name 'attribute/type' with respect to the parent '/Node' is an object having an absolute name of '/Node/Attributes/Type'. The root container '/' has a fixed value of zero.

6.2.7.2.1.虛擬名稱及虛擬物件6.2.7.2.1. Virtual Names and Virtual Objects

容器物件可以具有真及虛擬子物件,其係藉由使用虛擬名稱加以存取。虛擬名稱係為未附至主物件的名稱,而是用以指明沒名稱的子物件、具有不同名稱的子物件、或虛擬子物件(不是容器的真實親子但在要求時加以自動建立的子物件)。Container objects can have real and virtual sub-objects that are accessed by using virtual names. The virtual name is a name that is not attached to the main object, but is used to indicate a sub-object with no name, a sub-object with a different name, or a virtual sub-object (a sub-object that is not the real parent of the container but is automatically created when required) ).

對於任意物件,以下虛擬名稱被定義為虛擬子物件名 稱: For any object, the following virtual name is defined as the virtual child object name:

對於任意容器,定義以下虛擬名稱為虛擬子物件名稱: For any container, define the following virtual name as the virtual child object name:

6.2.7.2.2.例子6.2.7.2.2. Examples

例如主物件的階層: For example, the hierarchy of the main object:

呼叫System.Host.GetObject(母=0,名稱=‘節點’)送回類型id0(容器),並寫入把值1於為呼叫者所供給之緩衝器中(值的大小為4位元組)。Call System.Host.GetObject (mother=0, name='node') to return the type id0 (container) and write the value 1 to the buffer supplied by the caller (the size of the value is 4 bytes) ).

呼叫System.Host.GetObject(母=0,名稱=‘節點/屬性/領域’)送回類型id2(字串),並寫入字串“頂層”於為呼叫者所供給之緩衝器中(值的大小為9位元組)。Call System.Host.GetObject (parent=0, name='node/attribute/domain') to return type id2 (string) and write the string "top level" in the buffer supplied to the caller (value The size is 9 bytes).

呼叫System.Host.GetObject(母=1,名稱=‘屬性/@1’)送回類型id1(整數),並寫入整數78於為呼叫者所供給之緩衝器中(值的大小為4位元組)。Call System.Host.GetObject (parent = 1, name = 'attribute / @1') to return the type id1 (integer) and write the integer 78 in the buffer supplied to the caller (the value is 4 bits) Tuple).

呼叫System.Host.GetObject(母=0,名稱=‘不存在’)送回錯誤碼ERROR_NO_SUCH_ITEM。Call System.Host.GetObject (parent=0, name=‘nothing') to return the error code ERROR_NO_SUCH_ITEM.

6.2.8.System.Host.SetObject6.2.8.System.Host.SetObject

輸入:堆疊頂: Input: Stack top:

母:母容器的32位元把Mother: 32-bit mother container

名稱:包含至物件路徑之空終止字串的位址,相對於母容器。Name: The address containing the null-terminated string to the object path, relative to the parent container.

物件位址:物件值所儲存之記憶體緩衝器的位址。如果位址為0,則呼叫被解釋為摧毀該物件之要求。在位址上的資料取決於物件的類型。Object Address: The address of the memory buffer stored by the object value. If the address is 0, the call is interpreted as a request to destroy the object. The information on the address depends on the type of object.

物件類型:物件的類型Id。Object Type: The type Id of the object.

物件大小:物件值所儲存之記憶體緩衝器的大小(以位元組表示)。在例示實施例中,對於整數物件,大小必須設定為4。對於字串物件,大小為記憶體緩衝器的大小,包含空終止碼。對於位元組陣列物件,大小為在陣列中之8位元之位元組的數目。Object Size: The size of the memory buffer (in bytes) stored by the object value. In the illustrated embodiment, the size must be set to 4 for integer objects. For a string object, the size is the size of the memory buffer and contains a null termination code. For a byte array object, the size is the number of octets in the array.

輸出:堆疊頂: Output: Stack top:

結果碼:如果呼叫成功,則為0,或者呼叫失敗,則為負錯誤碼。如果所要求之物件並不存在,則錯誤送回為ERROR_NO_SUCH_ITEM。如果物件樹的正存取部份被存取控制,及呼叫程式並未許可存取物件,則送回 ERROR_PERMISSION_DENIED。也可以送回其他錯誤碼。Result code: If the call is successful, it is 0, or if the call fails, it is a negative error code. If the requested object does not exist, the error is returned to ERROR_NO_SUCH_ITEM. If the positive access portion of the object tree is accessed and the calling program does not permit access to the object, return it ERROR_PERMISSION_DENIED. Other error codes can also be sent back.

說明:Description:

此系統呼叫為通用介面,其允許程式建立、寫入及摧毀由VM主機所提供之物件。物件名稱與類型之說明係與System.Host.GetObject相同。This system call is a generic interface that allows programs to create, write, and destroy objects provided by the VM Host. The description of the object name and type is the same as System.Host.GetObject.

並非所有主物件支援被寫入或攜帶,及並非所有具有子物件的容器支援被建立。當用於一不支援操作之物件的設定物件呼叫完成時,送回一ERROR_PERMISSION_DENIED。Not all primary object support is written or carried, and not all container support with child objects is created. When the set object call for an object that does not support the operation is completed, an ERROR_PERMISSION_DENIED is sent back.

當物件參考一容器時,有一特殊情形,及物件位址不是0:物件大小參數必須設定為0。物件位址的值被忽略。如果容器已經存在,則不必作任何事,送回一成功的結果碼。如果沒有容器,及容器之母為可寫,則建立空容器。When an object refers to a container, there is a special case, and the object address is not 0: the object size parameter must be set to 0. The value of the object address is ignored. If the container already exists, you don't have to do anything to send back a successful result code. If there is no container and the parent of the container is writable, an empty container is created.

6.2.9.Octopus.Links.IsNodeReachable6.2.9.Octopus.Links.IsNodeReachable

輸入:堆疊頂: Input: Stack top:

節點Id:包含予以測試可到達性之目標鏈結的ID的空終止字串的位址。Node Id: The address of the null-terminated string containing the ID of the target link to be tested for reachability.

輸出:堆疊頂: Output: Stack top:

結果碼:整數值。如果節點可到達,則結果值為0,如果不是,則為負錯誤碼。Result code: an integer value. If the node is reachable, the result is 0, if not, it is a negative error code.

狀態塊指標器:標準延伸狀態塊的位址,如果未送回狀態塊,則為0。Status block indicator: The address of the standard extended status block, or 0 if the status block is not returned.

說明:Description:

此系統呼叫係為控制程式所使用,以檢查是否一給定節點可由相關於主管浮游生物VM之實體的節點所到達。This system call is used by the control program to check if a given node can be reached by a node associated with the entity hosting the plankton VM.

6.2.10.System.Host.SpawnVm6.2.10.System.Host.SpawnVm

輸入:堆疊頂: Input: Stack top:

模組Id:應被載入VM中之碼模組的Id。Module Id: The Id of the code module that should be loaded into the VM.

輸出:堆疊頂: Output: Stack top:

結果碼:整數值。如果呼叫成功,則結果值為0,如果失敗,則為負錯誤碼。Result code: an integer value. If the call is successful, the result value is 0, and if it fails, it is a negative error code.

Vm把:整數值。有關VM例之把被建立(如果呼叫失敗,此被設定為0)。該把只被保證在現行VM中為特有。Vm puts: an integer value. The VM instance is established (this is set to 0 if the call fails). This is only guaranteed to be unique in the current VM.

說明:Description:

此系統呼叫係為控制程式所使用,以要求被建立之浮游生物虛擬機器,及碼模組被裝載。This system call is used by the control program to request the established plankton virtual machine, and the code module is loaded.

新建立VM的主機應展示相同主機物件作為呈現給呼叫者的主機物件,例外為主機物件“/Octopus/Runtime/Parent/Id”被設定給呼叫者的身份。The host that newly creates the VM should present the same host object as the host object presented to the caller, with the exception that the host object "/Octopus/Runtime/Parent/Id" is set to the identity of the caller.

當正執行用於呼叫者的碼的VM終止時,未被呼叫System.Host.ReleaseVm所明示釋放的產生VM被自動地為系統所釋放,如同呼叫System.Host.ReleaseVm。When the VM for the caller's code is being terminated, the generated VM that was not explicitly released by calling System.Host.ReleaseVm is automatically released for the system as if it were calling System.Host.ReleaseVm.

6.2.11.System.Host.CallVm6.2.11.System.Host.CallVm

輸入:堆疊頂: Input: Stack top:

Vm把:一整數值。由呼叫System.Host.SpawnVm所建立之VM的把。Vm puts: an integer value. The handle of the VM created by calling System.Host.SpawnVm.

輸入點:空終止字串的位址,其指明輸入點的名稱。此名稱需要匹配在碼模組之輸出表中之輸入點之一,該碼模姐被載入對應於Vm把參數的VM實例。Input Point: The address of the null-terminated string indicating the name of the input point. This name needs to match one of the input points in the output table of the code module, which is loaded with the VM instance corresponding to the Vm parameter.

參數塊位址:包含予以傳送至被呼叫者的資料的記憶體方塊的位址。如果沒有參數送至被呼叫者,則被設定為 0。Parameter Block Address: The address of the memory block containing the data to be delivered to the callee. If no parameters are sent to the callee, it is set to 0.

參數塊大小:在位址參數塊位址之記憶體方塊大小(以位元組表示),如果參數塊位址為0,則為0。Parameter block size: The memory block size (represented by a byte) in the address parameter block address, or 0 if the parameter block address is 0.

送回緩衝器位址:呼叫者自被呼叫者接收的記憶體緩衝器的位址。如果呼叫者並未期待自被呼叫者送回資料,則此被設定為0。Return Buffer Address: The address of the memory buffer received by the caller from the callee. This is set to 0 if the caller does not expect to return data from the callee.

送回緩衝器大小:在位址送回緩衝器位址之記憶體緩衝器的大小(以位元組表示),如果送回緩衝器位址為0,則為0。Return buffer size: The size (in bytes) of the memory buffer returned to the buffer address at the address, or 0 if the return buffer address is 0.

輸出:堆疊頂: Output: Stack top:

系統結果碼:一整數值。如果呼叫成功則結果值為0,如果失敗,則為負錯誤碼。此值係為系統所決定,而不是被呼叫者。成功只表示系統能成功找到呼叫的常式,執行常式並由常式取得送回值。來自常式之送回值被送回CalleeResultCode值中。System result code: an integer value. The result is 0 if the call is successful and a negative error code if it fails. This value is determined by the system, not the callee. Success only means that the system can successfully find the routine of the call, execute the routine and get the return value from the routine. The return value from the routine is sent back to the CalleeResultCode value.

被呼叫者結果碼:整數值。此係為被呼叫者所送回之值。Callee result code: integer value. This is the value returned by the callee.

送回塊大小:在為呼叫者所供給之緩衝器中之資料大小(以位元組表示),或者如果呼叫者提供一太小之緩衝器,則為所需之大小。如果被呼叫者未送回資料,則值為 0。Return Block Size: The size (in bytes) of the data in the buffer supplied to the caller, or the size required if the caller provides a buffer that is too small. If the callee does not return the data, the value is 0.

說明:Description:

系統呼叫係為控制程式所使用,以呼叫執行於碼模組中之常式,碼模組係被裝載於為System.Host.SpawnVm系統呼叫所建立的VM實例中。The system call is used by the control program to call the routine executed in the code module, and the code module is loaded in the VM instance established for the System.Host.SpawnVm system call.

在例示實施例中,被呼叫之常式需要配合以下介面習慣:當常式被呼叫時,堆疊包含為呼叫者所供之值參數塊大小,表示在頂的參數塊的大小、其後有資料的參數塊大小位元組。如果大小不是4的倍數,則在堆疊上之資料將被加上0值的位元組,以確保堆疊指標保持為4的倍數。In the illustrated embodiment, the called routine needs to cooperate with the following interface habits: when the routine is called, the stack contains the value parameter block size provided for the caller, indicating the size of the parameter block at the top, followed by the data. The parameter block size byte. If the size is not a multiple of 4, the data on the stack will be added with a 0-valued byte to ensure that the stacking indicator remains a multiple of 4.

堆疊頂: Stack top:

於送回時,常式必須在堆疊上,提供以下送回值:堆疊頂: When returning, the routine must be on the stack and provide the following return values: Stack Top:

送回塊位址:包含予以送至呼叫者的資料之記憶體方塊之位址。如果沒資料要送回,則被設定為0。Return Block Address: The address of the memory block containing the data to be sent to the caller. If there is no data to send back, it is set to 0.

送回塊大小:在位址送回塊位址的記憶體塊的大小(以位元組表示),如果送回塊位址為0,則為0。Return Block Size: The size (in bytes) of the memory block that returns the block address at the address. If the block address is 0, it is 0.

6.2.12.System.Host.ReleaseVm6.2.12.System.Host.ReleaseVm

輸入: 堆疊頂 Input: Stack top

Vm把:整數值。為呼叫System.Host.SpawnVm所建立的VM的把。Vm puts: an integer value. The handle of the VM created for calling System.Host.SpawnVm.

輸出:堆疊頂: Output: Stack top:

結果碼:整數值。如果呼叫成功,則結果值為0,如果失敗,則為負錯誤碼。Result code: an integer value. If the call is successful, the result value is 0, and if it fails, it is a negative error code.

說明:Description:

系統呼叫係為控制程式所使用,以要求被建立一浮游生物虛擬機器的新實例,及一碼模組被裝載。The system call is used by the control program to require a new instance of a plankton virtual machine to be created and a code module to be loaded.

新建立VM的主機應展現與展現給呼叫者的相同主物件,除了設定至呼叫者的身份之主物件“/Octopus/Runtime/Parent/Id”外。The host that newly creates the VM should present the same primary object as the one presented to the caller, except for the primary object "/Octopus/Runtime/Parent/Id" set to the identity of the caller.

6.3.標準資料結構6.3. Standard data structure

以下係為部份標準系統呼叫所用之標準資料結構。它們也可以為其他客戶系統呼叫所使用。The following is the standard data structure used for some standard system calls. They can also be used for other customer system calls.

6.3.1.標準參數6.3.1. Standard parameters

參數塊: Parameter block:

名稱:參數名稱Name: Parameter name

值:參數值Value: parameter value

延伸參數塊: Extend the parameter block:

旗標:布林旗標的向量Flag: Brin flag vector

參數:簡單名稱/值參數塊Parameters: simple name / value parameter block

名稱塊: Name block:

大小:32位元整數,等於隨後之字元欄的8位元位元組大小。如果此值為0,則字元欄為空(其後為空的)。Size: A 32-bit integer equal to the 8-bit byte size of the subsequent character field. If this value is 0, the character field is empty (it is empty afterwards).

字元:空終止UTF-8字串值塊: Character: null terminated UTF-8 string value block:

類型:32位元位元組識別碼。在一實施例中,定義以下類型: Type: 32-bit byte identification code. In an embodiment, the following types are defined:

大小:32位元整數,等於在後之資烞欄的8位元位元組的大小。如果值為0,則資料欄為空的(其後無值)。Size: A 32-bit integer equal to the size of the 8-bit byte in the subsequent asset column. If the value is 0, the data field is empty (no value after it).

資料:8位元位元組陣列代表一值。實際位元組取決於為類型欄所代表之資料編碼。Data: An 8-bit byte array represents a value. The actual byte is encoded by the data represented by the type column.

值名單塊: List of values:

值計數:32位元整等於其後之值塊結構的數量。如果值為0,則其後無值塊。Value Count: The 32-bit integer is equal to the number of subsequent value block structures. If the value is 0, there is no value block after it.

值0、值1、...:表示0或更大值塊結構的順序Value 0, value 1, ...: indicates the order of 0 or greater value block structure

6.3.2.標準延伸狀態6.3.2. Standard extension status

標準延伸狀態塊為一資料結構,典型用以傳輸延伸資訊作為由呼叫至常式或系統呼叫之送回狀態。這是為同屬資料結構,可以用於各種上下文中,對於其欄位具有不同可能值範圍。The standard extended status block is a data structure that is typically used to transmit extended information as a return status from a call to a routine or system call. This is a generic data structure that can be used in a variety of contexts with different possible value ranges for its fields.

延伸狀態塊: Extended status block:

通用旗標:布林旗標,不管類別欄,其語意係相同。旗標的位置與意義係為使用標準延伸狀態塊的設定檔所定義。Universal flag: Brin flag, regardless of the category bar, the semantics are the same. The location and meaning of the flag is defined by the profile of the standard extended status block.

類別:狀態所屬之類別的整數特有識別碼。類別識別碼值係由使用標準延伸狀態塊的設定檔所定義。Category: An integer-specific identifier for the category to which the status belongs. The category identifier value is defined by the profile using the standard extended status block.

次類別:進一步分類為此塊所述之狀態類型的次類別的整數識別碼(在該類別中所特有)。Sub-category: An integer identification code (specific to this category) that is further classified as a sub-category of the status type described in this block.

本地旗標:布林旗標,其語意係限定於此狀態塊的類別及次類別。旗標的位置與意義係為定義與使用該類別語意的設定檔所定義。Local flag: Brin flag, whose meaning is limited to the category and sub-category of this status block. The location and meaning of the flag is defined by the profile that defines the semantics of the category.

快取時間:指示此狀態可以快取的時間(即保持有效)。見時間之實際值的快取時間塊定義。Cache time: Indicates when this state can be cached (ie, remains valid). See the cache time block definition for the actual value of time.

參數:0或更多值塊的名單。每一值塊包含一參數, 其被編碼為類型參數或延伸參數的值。每一參數將一名稱束縛至一類別值,並被用以編碼描述狀態塊的彈性可變資料,並較類別、次類別、快取時間及旗標更詳細。Parameters: A list of 0 or more value blocks. Each value block contains a parameter, It is encoded as a value of a type parameter or an extended parameter. Each parameter binds a name to a category value and is used to encode elastically variable data describing the status block and is more detailed than the category, subcategory, cache time, and flag.

快取時間塊: Cache time block:

類型:用於值類型的整數識別碼。Type: An integer identifier for the value type.

以下類型可以使用: The following types are available:

值:32位元整數。此值的意義取決於類型欄。Value: 32-bit integer. The meaning of this value depends on the type column.

6.4.標準結果碼6.4. Standard result code

某些標準結果碼被用於各種API中。其他結果碼可以定義用於更特定API中。Some standard result codes are used in various APIs. Other result codes can be defined for use in more specific APIs.

7.用於浮游生物組合器之組合器語法7. Combiner syntax for plankton combiner

在一實施例中,浮游生物組合器讀取包含有碼、資料及處理指令的來源檔,與處理指令,及產生二次進碼模組,其可以為浮游生物VM所裝載。在一實施例中,浮游生物組合器係可操作以建立來自一組合語言檔的控制程式。有關浮游生物組合器的例示實施例之其他資訊係被提供如下。In one embodiment, the plankton combiner reads the source file containing the code, data, and processing instructions, and the processing instructions, and generates a secondary input module that can be loaded for the plankton VM. In an embodiment, the plankton combiner is operable to establish a control program from a combined language file. Additional information regarding an exemplary embodiment of a plankton combiner is provided below.

在一例示實施例中,組合器一行一行地依序處理一來源檔。行可以為零或更多字元,其後有新行。In an exemplary embodiment, the combiner processes a source file sequentially, row by row. Lines can be zero or more characters followed by new lines.

每一行可以為以下之一:Each line can be one of the following:

‧一空白行(只有空白空間)‧ a blank line (only blank space)

‧區段指引‧ Section guidelines

‧資料指引‧Information Guide

‧組合器指引‧Combiner guidelines

‧碼指令‧ code instruction

‧標籤‧label

‧出口指引‧ Export guidelines

每一行可以以一命令結束,其以“;”字元開始,並持續直到行結束為止。Each line can end with a command that begins with a ";" character and continues until the end of the line.

由來源讀取的資料與指令具有一暗示目的地區段(其中,它們以VM裝載之一作結束)。在剖析程序中之任一點處,組合器將具有“現行”區段,其為資料與指令的暗示目的地區段。現行區段可以使用區段指引加以改變。The data and instructions read by the source have a hint destination segment (where they end with one of the VM loads). At any point in the profiling process, the combiner will have an "current" section, which is the implied destination section of the material and the instruction. The current section can be changed using the section guidance.

7.1.區段指引7.1. Section guidelines

區段指引改變剖析器的現行區段。在一實施例中,所支援的區段指引為:The segment guide changes the current section of the profiler. In an embodiment, the supported segment guidelines are:

‧.code‧.code

該碼區段保有位元組碼指令The code segment holds a byte code instruction

‧.data‧.data

該資料區段保有通用變數The data section holds general variables

7.2.資料指引7.2. Information Guidelines

資料指引指明將被載入VM的資料區段中之資料(整數與字串)。The data guide indicates the data (integer and string) that will be loaded into the data section of the VM.

.string“<some chars>”.string "<some chars>"

指明一串之字元。組合器將在字串的末端加入一八位元組值0。Indicate a string of characters. The combiner will add an octet value of 0 to the end of the string.

‧.byte<value>‧.byte<value>

指明8位元。<value>可以表示為十進制數,或十六進制數(字尾加上0x( )。Indicates 8-bit. <value> can be expressed as a decimal number, or a hexadecimal number (suffixed with 0x().

.long<value>.long<value>

指明32位元。<value>可以表示為十進制數,或十六進制數(字尾加上0x)。Indicates 32 bits. <value> can be expressed as a decimal number, or a hexadecimal number (with a suffix plus 0x).

7.3.組合器指引7.3. Combiner guidelines

在一實施例中,組合器指引為:.equ<symbol>,<value>In an embodiment, the combiner is directed to: .equ<symbol>, <value>

設定符號<symbol>等於值<value>。符號典型被使用作為運算元或碼指令。The setting symbol <symbol> is equal to the value <value>. Symbols are typically used as operands or code instructions.

7.4.標籤7.4. Label

標籤為符號,其指向在區段內之位置。指向在碼區段中之指令的標籤典型用於跳躍/分支指令。指向資料區段中之資料的標籤典型用以表示變數。The tag is a symbol that points to a location within the segment. The tag that points to the instruction in the code section is typically used for the hop/branch instruction. Tags that point to data in the data section are typically used to represent variables.

用於標籤的語法為:<LEBEL>:The syntax for labels is: <LEBEL>:

注意在“:”後為空白,除了選用命令外。標籤指向下一資料或指令。其可以具有一個以上之標籤指向相同位址。Note that it is blank after ":", except for the command. The tag points to the next item or instruction. It can have more than one tag pointing to the same address.

7.5.出口指引7.5. Export guidelines

出口指引係用以在組合器所產生之碼模組之“出口”段落中建立輸入項。在出口段落的每一輸入項為一(名稱、位址)對。在例示實施例中,在碼區段內只有位址可以在出口段落中指明。The export guide is used to create an entry in the "export" section of the code module produced by the combiner. Each entry in the exit paragraph is a (name, address) pair. In the illustrated embodiment, only the address within the code segment can be indicated in the exit paragraph.

出口指引的語法為:.export<label>The syntax for export guidelines is: .export<label>

這將出口為<label>所指向之位址,以名稱<label>。This will exit the address pointed to by <label> with the name <label>.

7.6.碼指令7.6. Code instructions

當編譯指定給碼區段的資料時,組合器讀取直接、間 接映圖至位元組碼的指令。多數浮游生物位元組碼沒有直接運算元,並在單行上出現一簡單助憶。為了使組合器語法更可靠,部份指令接受偽運算元,這看起來像它們為位元組碼運算元,但它們真正並不是;在此時,組合器產生一或多數位元組碼指令,以產生如同指令具有直接運算元般之作用。例如,分支指令使用偽運算元。When compiling the data assigned to the code segment, the combiner reads directly, between The instruction to map to the byte code. Most plankton byte codes do not have direct operands, and a simple mnemonic appears on a single line. In order to make the combiner syntax more reliable, some instructions accept pseudo-operands, which looks like they are byte-command elements, but they are not really; at this point, the combiner produces one or more bytecode instructions. To produce a function like a direct operand as an instruction. For example, branch instructions use pseudo-operands.

7.6.1.分支運算元7.6.1. Branch operands

分支指令可以是特定的原樣呈現(沒有任何運算元),或者具有一選用運算元,其將為組合器所轉換為對應之位元組碼順序。選用運算元為以下之一:The branch instruction can be a specific representation (without any operands) or have an optional operand that will be converted to the corresponding bytecode order by the combiner. Use the operand as one of the following:

‧整數常數‧ integer constant

‧符號‧symbol

當運算元為符號時,組合器計算正確整數相對偏移,使得分支在對應於該符號之位址結束。When the operand is a symbol, the combiner calculates the correct integer relative offset such that the branch ends at the address corresponding to the symbol.

7.6.2.推入運算元7.6.2. Pushing the operand

在一實施例中,推入指令一直採一運算元。運算元可以是以下之一:In one embodiment, the push command always takes an operand. The operand can be one of the following:

‧整數常數‧ integer constant

‧符號‧symbol

‧前置‘@’,其後有標籤名稱‧Front ‘@’ followed by the tag name

當運算元為符號時,被推入之值一直為該符號之直接值,不論該符號為標籤或.equ符號(該值並不增量一區段偏移)。When an operand is a symbol, the value pushed in is always a direct value of the symbol, whether the symbol is a label or a .equ symbol (this value does not increment a segment offset).

當運算元為前置有‘@’的標籤名稱時,被推入之值取決於標籤指向什麼而定。被推入堆疊之值係為標籤所代表之絕對位址(即被加入至區段偏移之本地標籤值)。When the operand is a tag name prefixed with ‘@’, the value pushed in depends on what the tag points to. The value pushed into the stack is the absolute address represented by the tag (ie, the local tag value that is added to the segment offset).

7.7.例子7.7. Examples

7.8.命令行語法7.8. Command line syntax

在一實施例中,組合器為命令行工具,其可以以以下語法加以調用: In an embodiment, the combiner is a command line tool that can be invoked with the following syntax:

E.物件儲存E. Object storage

以下將說明可以為群組引擎實施法所用以提供安全狀態儲存機制之安全物件儲存。此一設施係有用於使得控制程式可以讀取並寫入保護狀態的資料庫,其由一調用至另一調用係持續的。此一狀態資料庫可以用以儲存例如遊戲次數、第一次使用日期、累積進行時間、及/或等等的狀態物件。The following describes the secure object storage that can be used to provide a secure state storage mechanism for the group engine implementation. This facility has a repository for the control program to read and write to the protected state, which is continued from one call to another. This state database can be used to store state objects such as number of games, first use date, cumulative progress time, and/or the like.

1.資料庫物件1. Database object

“貝殼”資料庫包含物件。物件係被安排於邏輯階層中,其中容器物件為其包含子物件的母。在一實施例中,有四類型之物件。每一物件具有相關元資料及一類型。取決於其類型,一物件也可以具有一值。The "shell" database contains objects. The object is arranged in a logical hierarchy, wherein the container object is the mother of the child object. In one embodiment, there are four types of items. Each item has associated metadata and a type. An object can also have a value depending on its type.

貝殼物件可以由浮游生物程式使用System.Host.GetObject及System.Host.SetObject系統呼叫加以存取。如下所詳述,物件元資料可以使用虛擬名稱加以存取。在一實施例中,部份元資料欄可以藉由貝殼資料庫的客戶加以改變,但部份元資料欄為唯讀(它們整個為資料庫實施法所管理)。Shell objects can be accessed by the plankton program using the System.Host.GetObject and System.Host.SetObject system calls. Object metadata can be accessed using a virtual name as detailed below. In one embodiment, some of the metadata columns can be changed by the client of the shell database, but some of the metadata columns are read-only (they are managed entirely by the database implementation method).

1.1.物件元資料1.1. Object metadata

1.2.物件類型1.2. Object type 1.2.1.字串1.2.1. String

字串物件的值為UTF-8編碼字元串。The value of the string object is a UTF-8 encoded character string.

1.2.2.整數1.2.2. Integer

整數物件值為32位元正負號整數值。The integer object value is a 32-bit plus or minus integer value.

1.2.3.位元組陣列1.2.3. Byte array

位元組陣列物件的值為一陣列之8位元位元組。The value of the byte array object is an array of octet bytes.

1.2.4.容器1.2.4. Container

容器物件包含零或更多物件。容器物件被稱為物件所包含之母。所被包含物件稱為容器的子。所有作成物件母、母的母,以此類推的鏈的容器物件係被稱為物件的祖先 。如果物件具有另一物件作為其祖先,則該物件被稱為該祖物件的孫物件。The container item contains zero or more items. The container object is called the mother of the object. The included object is called a child of the container. All the objects of the parent and the mother of the object, and the like of the chain, are called the ancestors of the object. . If an object has another object as its ancestor, the object is referred to as the grandchild of the ancestor.

2.物件壽命2. Object life

在貝殼資料庫中之物件壽命遵循若干規則。物件可以被明示地摧毀,或暗示地摧毀。物件可以由於資料庫垃圾收集而摧毀。The life of an object in a shell database follows a number of rules. Objects can be explicitly destroyed or impliedly destroyed. Objects can be destroyed by repository garbage collection.

不管物件如何摧毀,在一實施例中,永遠適用以下規則:Regardless of how the object is destroyed, in one embodiment, the following rules are always applied:

‧用於該物件的母容器的修改日期被設定為現行當地時間。• The modification date of the parent container used for the item is set to the current local time.

‧如果物件為容器,則所有其子被摧毀。‧If the object is a container, all its children are destroyed.

2.1.明示物件摧毀2.1. Explicit object destruction

明示物件摧毀發生於資料庫的客戶要求移除一物件(見物件存取,此係如何使用Host.SetObject浮游生物系統呼叫加以完成)。Explicit objects destroy the client that occurred in the database and requested to remove an object (see Object Access, how this is done using the Host.SetObject Plankton system call).

2.2.暗示物件摧毀2.2. Implied object destruction

暗示物件摧毀發生於物件正被摧毀,因為在其祖先中之物件之一正被摧毀。The implied object destruction occurs when the object is being destroyed because one of the objects in its ancestors is being destroyed.

2.3.垃圾收集2.3. Garbage collection

貝殼物件資料庫可以摧毀已經到期之物件。當系統上 之本地時間實施資料庫大於物件元資料的到期日期欄時,一物件被認為到期。直到資料庫實施法決定何時及如何執行到期物件的收集。The shell object database can destroy objects that have expired. When on the system When the local time implementation database is larger than the expiration date column of the object metadata, an object is considered to be due. Until the database implementation method determines when and how to perform the collection of expired items.

注意當容器物件因為到期而被摧毀時,即使子物件未到期,子物件(及其子子物件,以此類推)也被摧毀。Note that when the container object is destroyed due to expiration, even if the child object has not expired, the child object (and its child objects, and so on) is destroyed.

3.物件存取3. Object access

在貝殼資料中之物件也可以經由一對系統呼叫由浮游生物程式存取。該兩系統呼叫為:System.Host.GetObject讀取物件的值,及System.Host.SetObject建立、摧毀或設定一物件的值。Objects in the shell data can also be accessed by the plankton program via a pair of system calls. The two system calls are: System.Host.GetObject reads the value of the object, and System.Host.SetObject creates, destroys, or sets the value of an object.

為了看起來像主物件的樹,一貝殼資料庫需要“安裝”在主物件樹中之某名稱下。以此方式,資料庫係可以被視為主物件的更通用樹中之次樹。為了完成此,在一實施例中,所有貝殼資料庫包含一直存在之頂層內建根容器物件。此根容器基本上為資料庫的名稱。在資料庫中之所有其他物件將為根容器的子孫。多貝殼資料庫可以安裝在主物件樹中之不同處(兩資料庫需要被安裝在同一主容器下,它們需要在其根容器有不同名稱)。例如,如果具有根容器名稱為‘資料庫1’的貝殼資料庫包含一單一整數子容器物件,其名稱‘子1’,則該資料可以安裝在主物件容器“/貝殼”,其中‘子1’物件將可以被視為‘貝殼1/資料1/子1’。In order to look like a tree of main objects, a shell database needs to be "installed" under a name in the main object tree. In this way, the repository can be viewed as a secondary tree in the more general tree of the primary object. To accomplish this, in one embodiment, all of the shell repositories contain a top-level built-in root container object that is always present. This root container is basically the name of the database. All other objects in the repository will be descendants of the root container. Multi-shell databases can be installed in different places in the main object tree (both databases need to be installed under the same main container, they need to have different names in their root container). For example, if a shell database with a root container name of 'Library 1' contains a single integer child container object whose name is 'Sub 1', the data can be installed in the main object container "/shell", where 'Sub1 'The object will be considered 'shell 1 / data 1 / sub 1'.

在一實施例中,所有對物件的存取係為一存取政策所 管理。In an embodiment, all access to the object is an access policy management.

3.1.讀取物件3.1. Reading objects

物件的值可以藉由使用系統呼叫System.Host.GetObject加以讀取。可以存在於資料庫中之四物件類型(整數、字串、位元組陣列及容器)直接映圖至浮游生物虛擬機器規格書中之對應部份。物件值係以正常方式加以存取,及實施標準虛擬名稱。The value of the object can be read by calling System.Host.GetObject using the system. The four object types (integer, string, byte array, and container) that can exist in the database are directly mapped to the corresponding parts of the Plankton Virtual Machine Specification. Object values are accessed in the normal way and standard virtual names are implemented.

3.2.建立物件3.2. Create an object

物件可以藉由呼叫System.Host.SetObject已經不存在的物件名稱而加以建立。物件建立係依據系統呼叫規格加以完成。當物件建立時,貝殼資料庫:Objects can be created by calling an object name that System.Host.SetObject does not already exist. Object creation is done according to system call specifications. When the object is created, the shell database:

‧設定物件元資料的擁有者欄為正執行程式之本人身份的ID。此ID為URN。這是為用於執行系統之真模型規格,其指明如何決定該身份。通常,其被束縛至數位簽章,其係相關於碼模組,程式係由該碼模組載入。‧Set the owner column of the object metadata to the ID of the identity of the executing program. This ID is URN. This is a true model specification for executing the system, which indicates how to determine the identity. Usually, it is tied to a digital signature, which is related to the code module, and the program is loaded by the code module.

‧設定元資料之建立資料欄至現行當地時間。‧ Set the metadata column to the current local time.

‧設定元資料之修正日期欄至現行當地時間。‧ Set the revision date column of the metadata to the current local time.

‧設定元資料之到期日期欄至0(不到期)。‧ Set the expiration date column of the metadata to 0 (not expired).

‧設定母容器的修正日期至現行當地時間。‧ Set the revision date of the parent container to the current local time.

當在一較現行容器階層為深的路徑建立物件時,在一實施例中,貝殼資料庫將需要暗示建立容器物件,其需要被存在以建立至被建立的物件之路徑。暗示容器物件建立 遵循與明示建立相同的規則。When an object is created in a path that is deeper than the current container hierarchy, in one embodiment, the shell database would need to imply the creation of a container object that needs to be present to establish a path to the created object. Implicit container object creation Follow the same rules as explicitly stated.

例如,如果有一容器“A”沒有子,則在建立“A/B/C部份物件”前,設定“A/B/C部份物件”的要求將暗示建立容器“A/B”及“A/B/C”。For example, if there is a container "A" without a child, the requirement to set "A/B/C part of the object" before the establishment of "A/B/C part of the object" will imply the establishment of the container "A/B" and " A/B/C".

3.3.寫入物件3.3. Write objects

物件的值可以藉由呼叫System.Host.setObject已存在之物件而改變。如果所指定物件類型並不匹配現行物件的類型Id,則送回ERROR_INVALID_PARAMETER。如果類型Id為OBJECT_TYPE_CONTAINER,則不需要指定任何值(物件位址應不是零,但其值將被忽略)。The value of the object can be changed by calling an object that already exists in System.Host.setObject. If the specified object type does not match the type Id of the current object, then ERROR_INVALID_PARAMETER is returned. If the type Id is OBJECT_TYPE_CONTAINER, you do not need to specify any value (the object address should not be zero, but its value will be ignored).

當現行物件被設定時,貝殼資料設定物件的修改日期為現行當地時間。When the current object is set, the date of modification of the shell data setting object is the current local time.

3.4.摧毀物件3.4. Destroy objects

物件可以藉由呼叫System.Host.SetObject已經存在之具有物件位址值0的物件,而被明示地摧毀。An object can be explicitly destroyed by calling an object that has an object address value of 0 already present in System.Host.SetObject.

當物件被摧毀時,貝殼資料庫:When the object is destroyed, the shell database:

‧設定母容器的修改日期至現行當地時間。‧ Set the modification date of the parent container to the current local time.

‧如果被摧毀的物件為容器,則摧毀其所有子物件。‧ If the destroyed object is a container, destroy all its sub-objects.

3.5.物件元資料3.5. Object Metadata

用於貝殼物件的元資料係藉由使用具有虛擬名稱之System.Host.GetObject及System.Host.SetObject系統呼叫 加以存取。Metadata for shell objects is called by using System.Host.GetObject and System.Host.SetObject systems with virtual names Access it.

下表列出可為在貝殼資料庫實施例中之物件所用的標準及延伸虛擬名稱及它們係如何映圖至元資料欄。The following table lists the standard and extended virtual names that can be used for objects in the Shell Database embodiment and how they are mapped to the Metadata column.

元資料欄為唯讀並不能被寫入。 The metadata column is read-only and cannot be written.

4.物件擁有欄與存取控制4. Object ownership bar and access control

只要完成一讀取、寫入、建立或摧毀的要求時,貝殼資料庫實施法首先檢查是否呼叫者具有許可以執行該要求。管理對物件的存取之政策係根據本人身份與委託的概念。為了實現政策,有必要信任實施法所操作之模型支援鑑別控制程式之表示法。此典型係藉由令浮游生物碼模組包含以PKI鑰對的一私鑰作數位簽章的程式,並令一名稱證書將一本人名稱相關於一簽章鑰而加以完成;然而,仍有可能有不同方式來決定控制程式身份。As long as a read, write, build, or destroy request is completed, the shell database implementation first checks if the caller has permission to perform the request. The policy governing access to objects is based on the identity of the person and the concept of delegation. In order to implement the policy, it is necessary to trust the representation of the model support authentication control program operated by the implementation method. This is typically done by having the planktonic code module include a digital signature of a private key of the PKI key pair and having a name certificate associated with a personal name associated with a signature key; however, there is still There may be different ways to determine the identity of the control program.

用於貝殼資料庫中之物件的存取政策係包含少數簡單規則:The access policy for objects in the shell database contains a few simple rules:

‧如果呼叫者的身份與物件的擁者相同或是物件祖先容器之一相同,則讀取及寫入存取物件的值被核准。• If the identity of the caller is the same as the owner of the object or one of the object ancestor containers, the value of the read and write access object is approved.

‧如果呼叫者的身份與物件為子的容器的擁有者相同,則核准建立或摧毀存取。‧ If the identity of the caller is the same as the owner of the container for the child, then the access is authorized to be established or destroyed.

‧對物件的元資料的讀取及寫入存取(使用虛擬名稱)遵循與對物件值的讀取與寫入存取相同的政策,具有其他的限制,其係為唯讀欄,不能被寫入。‧ Reading and writing access to the metadata of the object (using the virtual name) follows the same policy as reading and writing access to the object value. It has other restrictions. It is a read-only column and cannot be Write.

當資料庫被建立時,貝殼資料庫的根容器較佳為固定。當物件被建立時,其擁有者的元資料欄的但被設定為呼叫者的身份。一物件的擁有權可以改變。為了改變物件的擁有權,擁有者元資料欄的值可以藉由呼叫System.Host.SetObject系統呼叫該物件的‘@擁有者’虛擬名稱加以設定。When the database is created, the root container of the shell database is preferably fixed. When an object is created, its owner's metadata column is set to the identity of the caller. The ownership of an object can change. To change the ownership of an object, the value of the owner's metadata column can be set by calling the System.Host.SetObject system to call the object's '@Owner' virtual name.

因為,在一實施例中,控制程式不可能存取為與正執行在一控制程式進行下之身份相同主人所擁有的物件,該控制程式需要委託對‘外來’物件之存取至由碼模組所載入之程式,該碼模組具有能力以在‘外來’物件擁有者身份下執行。為了如此,控制程式可以使用在浮游生物虛擬機器中之System.Host.SpawnVm、System.Host.CallVm及System.Host.ReleaseVm系統呼叫。Because, in an embodiment, the control program cannot access the object owned by the owner who is performing the identity of a control program, the control program needs to delegate access to the 'foreign' object to the code mode. The program loaded by the group, the code module has the ability to execute under the identity of the 'foreign' object owner. To do this, the control program can be called using the System.Host.SpawnVm, System.Host.CallVm, and System.Host.ReleaseVm systems in the plankton virtual machine.

雖然前述已經為了清楚起見在部份細節上詳細說明,但可以了解的是,部份改變與修正可以在不脫離本案之原理下完成。應注意的是,有各種方法用以實施於此所述之處理與設備。因此,本實施例係被認為是例示而不是限定用。Although the foregoing has been described in some detail in detail, it will be understood that It should be noted that there are various ways to implement the processes and apparatus described herein. Therefore, the present embodiments are to be considered as illustrative and not restrictive.

第1圖顯示群組(Octopus)數位權管理(DRM)引 擎組件如何在使用DRM的網路內動作的情形。Figure 1 shows the group (Octopus) digital rights management (DRM) How the engine component acts within the network using DRM.

第2圖顯示群組節點的例子。Figure 2 shows an example of a group node.

第3圖顯示在一執照中之物件彼此關係例示實施例中之內容物件的關係。Fig. 3 is a view showing the relationship of the contents of the exemplified embodiment in the relationship between the articles in a license.

第4圖顯示在一實施例中,組成群組為主消費應用程式之元件。Figure 4 shows, in one embodiment, the components that make up the group as the main consumer application.

第5圖顯示一例示組API的使用,及發生在例示實施例中之主機應用程式與DRM客戶引擎間之交互作用。Figure 5 shows the use of an exemplary group API and the interaction between the host application and the DRM client engine that occur in the illustrated embodiment.

第6圖顯示在一實施例中,組成群組為主的套裝應用程式的元件。Figure 6 shows the components of a packaged application that is group-based in one embodiment.

第7圖顯示例示性API的使用,及發生在主機應用程式與套裝引擎間之交互作用。Figure 7 shows the use of an exemplary API and the interaction between the host application and the suite engine.

第8圖顯示在一實施例中,使用鏈結之潛水鑰的推導。Figure 8 shows the derivation of the diving key using the link in one embodiment.

第9圖顯示依據群組實施例的各種內容保護與管理物件。Figure 9 shows various content protection and management objects in accordance with a group embodiment.

第10圖顯示各種規則件、身份及鑰管理物件。Figure 10 shows the various rule pieces, identity and key management objects.

第11圖顯示用於浮游生物VM的例示性實施法的作業環境。Figure 11 shows the operating environment for an exemplary implementation of plankton VM.

第12圖顯示例示浮游生物碼模組的格式。Figure 12 shows the format of the illustrated planktonic code module.

Claims (12)

一種在主電腦系統中授權對儲存在記憶體中之一件電子內容的存取之方法,該主電腦系統包含一使用者介面、該記憶體、一處理機及一數位權管理引擎被載入在該記憶體中並被執行在該處理機上,該方法包含步驟:自該使用者介面接收來自該主電腦系統使用者之存取該件電子內容的要求;自該記憶體取回有關於該件電子內容之執照,該執照包含一控制物件、一控制符物件、一保護符物件、及一內容鑰物件;自該控制物件取回一第一控制程式;將該第一控制程式載入為該數位權管理引擎所控制的記憶體中;及使用該數位權管理引擎,以執行該第一控制程式,以決定是否可以核准該要求,其中執行該第一控制程式包含評估儲存在該主電腦系統之該記憶體中之一或多數鏈結物件,其中每一鏈結物件代表於兩實體間之關係,其中該一或多數鏈結物件之至少之一包含一第二控制程式,及其中評估該一或多數鏈結物件包含:將該第二控制程式載入為該數位權管理引擎所控制之記憶體中,該第二控制程式表示必須實現的一或多數條件,以使得該鏈結被認為有效;及使用該數位權管理引擎,以執行該第二控制程式,以決定是否該鏈結為有效,包含決定該一或多數條件是否滿 足,其中該一或多數條件之至少之一包含要求儲存於記憶體中之計數器不超出一預定值。 A method of authorizing access to an electronic content stored in a memory in a host computer system, the host computer system including a user interface, the memory, a processor, and a digital rights management engine loaded In the memory and executed on the processor, the method includes the steps of: receiving, from the user interface, a request from the user of the host computer system to access the electronic content of the piece; recovering from the memory a license for the electronic content, the license comprising a control object, a control object, a protector object, and a content key object; recovering a first control program from the control object; loading the first control program For the memory controlled by the digital rights management engine; and using the digital rights management engine to execute the first control program to determine whether the request can be approved, wherein executing the first control program includes evaluating the storage in the main One or a plurality of linked objects in the memory of the computer system, wherein each of the linked objects represents a relationship between two entities, wherein at least one or more of the linked objects Include a second control program, and evaluating the one or more linked objects includes: loading the second control program into a memory controlled by the digital rights management engine, the second control program indicating that the second control program must be implemented One or more conditions such that the link is considered valid; and using the digital rights management engine to execute the second control program to determine whether the link is valid, including determining whether the one or more conditions are full And wherein at least one of the one or more conditions comprises requiring that the counter stored in the memory does not exceed a predetermined value. 如申請專利範圍第1項所述之方法,其中該控制符物件係可操作以安全地束縛該控制物件與該內容鑰物件。 The method of claim 1, wherein the control object is operable to securely bind the control object to the content key object. 如申請專利範圍第1項所述之方法,其中該保護符物件係可操作以安全地束縛該內容鑰物件與該件電子內容。 The method of claim 1, wherein the protector object is operable to securely bind the content key object to the piece of electronic content. 如申請專利範圍第1項所述之方法,其中該一或多數條件之至少之一包含要求現行時間在一預定時間之前。 The method of claim 1, wherein at least one of the one or more conditions comprises requiring the current time to be before a predetermined time. 如申請專利範圍第1項所述之方法,其中該一或多數條件之至少之一包含要求現行時間在某一時間之後。 The method of claim 1, wherein at least one of the one or more conditions comprises requiring the current time to be after a certain time. 如申請專利範圍第1項所述之方法,其中該一或多數條件之至少之一包含要求該第二控制程式先前並未被執行超出一預定次數。 The method of claim 1, wherein at least one of the one or more conditions comprises requiring the second control program to have not been previously executed for more than a predetermined number of times. 如申請專利範圍第1項所述之方法,其中該一或多數條件之至少之一包含要求預定事件先前並未發生。 The method of claim 1, wherein at least one of the one or more conditions comprises requiring a predetermined event not to have occurred previously. 如申請專利範圍第1項所述之方法,其中該一或多數條件之至少之一包含要求該主電腦系統必須具有一或多數預定特徵。 The method of claim 1, wherein at least one of the one or more conditions comprises requiring the host computer system to have one or more predetermined features. 如申請專利範圍第1項所述之方法,其中該一或多數條件之至少之一包含要求執行在該主電腦系統上之用 以描繪該件電子內容的軟體不能輸出該件電子內容至一預定介面。 The method of claim 1, wherein at least one of the one or more conditions comprises requiring execution on the host computer system The software that depicts the piece of electronic content cannot output the piece of electronic content to a predetermined interface. 一種在主電腦系統中授權予以執行在儲存在記憶體中之一件電子內容的給定動作之方法,該主電腦系統包含一使用者介面、該記憶體、一處理機及一數位權管理引擎被載入在該記憶體中並被執行在該處理機上,該方法包含步驟:使用該數位權管理引擎,以執行一第一控制程式,該第一控制程式係可操作以決定是否該給定動作可以執行在該件電子內容上,其中該第一控制程式係可操作以評估第一組的一或多數條件,其必須滿足,以使該給定動作的執行被授權,及其中該第一組之一或多數條件之至少之一包含一要求,其中,該主電腦系統之該記憶體包含一或多數鏈結物件,該一或多數鏈結物件鏈結代表第一實體之第一節點至代表第二實體之第二節點;自記憶體取回一或多數鏈結物件,各個鏈結物件表示於兩實體間之關係,及至少一鏈結物件包含一第二控制程式,其中該第二控制程式係可操作以評估第二組之必須滿足的一或多數條件,以使得該至少一鏈結物件被認為是有效的;及使用該數位權管理引擎,以執行該第二控制程式,其中該第一組條件或第二組條件的至少之一包含要求儲存在記憶體中之計數器不超出一預定值。 A method of authorizing execution of a given action of electronic content stored in a memory in a host computer system, the host computer system including a user interface, the memory, a processor, and a digital rights management engine Loaded in the memory and executed on the processor, the method comprising the steps of: using the digital rights management engine to execute a first control program operable to determine whether to give The fixed action can be performed on the piece of electronic content, wherein the first control program is operative to evaluate one or more conditions of the first set, which must be satisfied such that execution of the given action is authorized, and wherein the first At least one of the set of one or more of the conditions includes a requirement, wherein the memory of the host computer system includes one or more linked objects, the one or more linked object links representing a first node of the first entity To a second node representing the second entity; retrieving one or more linked objects from the memory, each linked object representing a relationship between the two entities, and at least one linked object comprising a second a program, wherein the second control program is operative to evaluate one or more conditions that the second set must satisfy such that the at least one linked object is considered valid; and using the digital rights management engine to perform The second control program, wherein at least one of the first set of conditions or the second set of conditions comprises a counter that is required to be stored in the memory does not exceed a predetermined value. 如申請專利範圍第10項所述之方法,其中該第 一組的一或多數條件包含一時間為主的條件。 The method of claim 10, wherein the method One or more conditions of a group contain a time-based condition. 如申請專利範圍第10項所述之方法,其中該第二組的一或多數條件包含一時間為主的條件。 The method of claim 10, wherein the one or more conditions of the second group comprise a time-based condition.
TW95138235A 2005-10-18 2006-10-17 Method of authorizing access to electronic content and method of authorizing an action performed thereto TWI468969B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US72808905P 2005-10-18 2005-10-18

Publications (2)

Publication Number Publication Date
TW200745899A TW200745899A (en) 2007-12-16
TWI468969B true TWI468969B (en) 2015-01-11

Family

ID=40892123

Family Applications (1)

Application Number Title Priority Date Filing Date
TW95138235A TWI468969B (en) 2005-10-18 2006-10-17 Method of authorizing access to electronic content and method of authorizing an action performed thereto

Country Status (3)

Country Link
CN (1) CN101490686B (en)
TW (1) TWI468969B (en)
ZA (1) ZA200803638B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI803875B (en) * 2021-05-11 2023-06-01 鼎新電腦股份有限公司 Modeling device and modeling method of business logic representation model

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103229187B (en) * 2010-10-15 2016-03-23 甲骨文美国公司 Java store television
CN102547400B (en) * 2010-12-08 2013-12-11 中国科学院声学研究所 Content security protection method of embedded television terminal system
US8626682B2 (en) * 2011-02-22 2014-01-07 Thomson Reuters Global Resources Automatic data cleaning for machine learning classifiers
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
CN102158768B (en) * 2011-05-11 2012-09-19 上海交通大学 MP4 file encapsulation format-based video authentication watermark embedding and extraction method
CN107888451B (en) * 2017-11-17 2020-09-08 杭州迪普科技股份有限公司 Method and device for testing Web server
CN108230225B (en) * 2017-12-29 2020-11-27 中国地质大学(武汉) Geoscience big data-oriented hierarchical access control method
CN109240721A (en) * 2018-08-24 2019-01-18 江苏恒宝智能系统技术有限公司 A kind of method of MCU online upgrading
US11334402B2 (en) * 2019-09-10 2022-05-17 Qualcomm Incorporated SDIO chip-to-chip interconnect protocol extension for slow devices and power savings

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050027871A1 (en) * 2003-06-05 2005-02-03 William Bradley Interoperable systems and methods for peer-to-peer service orchestration
TWI229559B (en) * 1999-10-22 2005-03-11 Activesky Inc An object oriented video system
TW200512592A (en) * 2003-09-30 2005-04-01 Microsoft Corp Image file container

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI229559B (en) * 1999-10-22 2005-03-11 Activesky Inc An object oriented video system
US20050027871A1 (en) * 2003-06-05 2005-02-03 William Bradley Interoperable systems and methods for peer-to-peer service orchestration
TW200512592A (en) * 2003-09-30 2005-04-01 Microsoft Corp Image file container

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI803875B (en) * 2021-05-11 2023-06-01 鼎新電腦股份有限公司 Modeling device and modeling method of business logic representation model

Also Published As

Publication number Publication date
ZA200803638B (en) 2009-08-26
CN101490686B (en) 2011-10-19
CN101490686A (en) 2009-07-22
TW200745899A (en) 2007-12-16

Similar Documents

Publication Publication Date Title
TWI468969B (en) Method of authorizing access to electronic content and method of authorizing an action performed thereto
KR101285024B1 (en) Methods for digital rights management
US7805375B2 (en) Digital license migration from first platform to second platform
EP1686504B1 (en) Flexible licensing architecture in content rights management systems
US9705677B2 (en) Method and system for control of code execution on a general purpose computing device and control of code execution in a recursive security protocol
US9626667B2 (en) Digital rights management engine systems and methods
US20050060568A1 (en) Controlling access to data
EP2828759A1 (en) Method and system for process working set isolation
US20070204078A1 (en) Digital rights management engine systems and methods
US20040003269A1 (en) Systems and methods for issuing usage licenses for digital content and services
JP2004046856A (en) Method for obtaining digital license corresponding to digital content
JP2004062890A (en) System and method of offering digital rights management service
WO2010054369A1 (en) Method and system for controling code execution on a computing device using recursive security protocol

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees