KR101285946B1 - 디지털 권리 관리를 위한 방법 - Google Patents

디지털 권리 관리를 위한 방법 Download PDF

Info

Publication number
KR101285946B1
KR101285946B1 KR1020127015783A KR20127015783A KR101285946B1 KR 101285946 B1 KR101285946 B1 KR 101285946B1 KR 1020127015783 A KR1020127015783 A KR 1020127015783A KR 20127015783 A KR20127015783 A KR 20127015783A KR 101285946 B1 KR101285946 B1 KR 101285946B1
Authority
KR
South Korea
Prior art keywords
content
node
key
drm
random
Prior art date
Application number
KR1020127015783A
Other languages
English (en)
Other versions
KR20120092155A (ko
Inventor
질 보콩-지보
줄리앙 지 뵈프
마이클 지 메넨트
윌리엄 비 브래들리
Original Assignee
인터트러스트 테크놀로지즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터트러스트 테크놀로지즈 코포레이션 filed Critical 인터트러스트 테크놀로지즈 코포레이션
Publication of KR20120092155A publication Critical patent/KR20120092155A/ko
Application granted granted Critical
Publication of KR101285946B1 publication Critical patent/KR101285946B1/ko

Links

Images

Classifications

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

Abstract

디지털 권리 관리를 수행하는 시스템들 및 방법들이 기술된다. 일 실시형태에서, 보호된 콘텐츠와 관련된 라이센스를 평가하여 그 콘텐츠에 대한 요청된 액세스 또는 다른 사용이 권한부여되는 지 여부를 결정하는 디지털 권리 관리 엔진이 제공된다. 몇몇 실시형태에서, 라이센스는 디지털 권리 관리 엔진에 의해 실행가능한 제어 프로그램들을 포함한다.

Description

디지털 권리 관리를 위한 방법{METHODS FOR DIGITAL RIGHTS MANAGEMENT}
본 출원은 2005년 10월 18일자로 출원된 미국 가출원 번호 제 60/728,089 호, 2006년 2월 9일자로 출원된 미국 가출원 번호 제 60/772,024 호, 2006년 4월 10일자로 출원된 미국 가출원 번호 제 60/744,574 호, 2006년 4월 10일자로 출원된 미국 가출원 번호 제 60/791,179 호, 2006년 5월 8일자로 출원된 미국 가출원 번호 제 60/746,712 호, 2006년 5월 8일자로 출원된 미국 가출원 번호 제 60/798,925 호, 및 2006년 8월 1일자로 출원된 미국 가출원 번호 제 60/835,061 호의 이익을 주장한다. 미국 가출원 번호 제 60/728,089 호, 제 60/772,024 호, 제 60/744,574 호, 제 60/791,179 호, 제 60/746,712 호, 제 60/798,925 호, 및 제 60/835,061 호는 임의의 목적을 위해 그들의 전체가 여기에 참조로 병합된다.
저작권 권한부여
본 특허문헌의 개시의 부분은 저작권 보호를 받고 있는 자료를 포함한다. 저작권 소유자는, 특허 및 상표청 특허 파일 또는 기록에서 나타나듯이, 특허 문헌 또는 특허 개시물 중 어느 것에 의한 팩스밀리 재생에 대해 반대하지 않지만, 그 외에 모든 어떠한 저작권도 보유한다.
배경 또는 관련된 정보
현대의 계산 시스템에 있어서, 종종 전자 콘텐츠, 서비스들, 및/또는 프로세싱 자원들에 대한 액세스를 제한하며, 및/또는 단지 소정의 엔티티들만이 소정의 액션들을 수행하도록 허용하는 것이 바람직하다. 다양한 기술들이 그러한 제어를 가능하게 하기 위해 개발되거나 제안되었다. 이들 기술들은 종종, 일반적으로 말해, 그들의 목표는 디지털, 또는 다른 전자 콘텐츠, 서비스들 또는 자원들 내의 다양한 엔티티의 권리를 관리하는 것이기 때문에, 디지털 권리 관리 (digital rights management: DRM) 기술로서 지칭된다. 많은 종래의 기술들의 문제는 그들이 매우 복잡하고, 제한적이며, 비교적 융통성을 갖지 못하고, 소정의 자연스런 형태의 관계들 및 프로세스들을 가능하게 하는데 실패하며, 및/또는 다른 DRM 시스템들과 상호동작할 수 없다는 것이다.
이들 문제들의 일부 또는 전부를 개선하는데 사용될 수 있는 개선된 DRM 기술들과 관련된 시스템들 및 방법들이 여기에 기술된다. 현재 기술된 발명의 작동 주요부의 실시형태는 프로세스, 장치, 시스템, 디바이스, 방법, 컴퓨터 판독가능 매체, 및/또는 그들의 조합을 포함하여, 여러 가지 방식으로 구현될 수 있다.
콘텐츠에 대한 액세스를 제어하는 현재의 시스템들은 전자 콘텐츠에 대한 액세스에 권한을 부여하는 것과 관련한 라이센스에 액세스하는 컴포넌트들을 포함한다. 그러나, 그러한 컴포넌트들은 통상 그 라이센스와 관련된 권리 관리 정보, 링크들 또는 노드들의 체인 또는 그래프에 대한 융통성이 없는 평가를 수행한다. 그들은 종종 상이한 권한 부여 방식들에 적응할 수 없으며, 및/또는 콘텐츠에 대한 액세스에 권한을 부여하기 위해 소정의 DRM 시스템들과 함께 동작할 수 없다. 본 발명의 실시형태들은 라이센스와 관련된 추가적인 루틴들 또는 제어 프로그램들을 저장, 사용 및/또는 실행함으로써 그러한 단점들을 극복하고, 이것은 동적 권한부여 특성을 제공하고, 분포된 권한부여 자원을 인에이블하고, 및/또는 액세스 기능을 합리화한다.
또한, 많은 현재의 시스템들은 간단한 권한부여/상태-관련 데이터가 유지되는 상황들로만 지향된다. 이들 시스템들은 액세스 권한부여가 다른 노드들과 관련된 이전에 도출된 데이터에 기초한 조건들의 결정과 같이, 다수 계층의 데이터에 대한 종속성을 요구할 수도 있는 상황들을 다루는데 실패한다. 본 발명의 실시형태들은 DRM 제어 프로그램들과 결합한 상태 데이터베이스의 구현을 통해 이들 단점을 극복하여 확실한 상태 저장 특성을 제공하고, 호출 (invocation) 마다 지속적인 상태 정보를 제공하며, 또는 그 외에 제어 프로그램 실행을 개선 및/또는 더욱 효율적인 액세스 권한부여를 수행하는 상태 판독 및 기입 기능을 인에이블한다.
추가적인 현재의 시스템들은 라이센스 컴포넌트들을 보호하기 위해 공개 키의 사용을 수반하는 컴포넌트들을 포함하는 DRM 라이센스 또는 구조를 구현할 수도 있다. 그러나, 이들 시스템들에 관련된 단점들은 해커들이 그 라이센스를 액세스하거나 구현하는데 요구되는 디지털 서명을 위조하거나, 그 외에 DRM 라이센스 구조에 존재하는 관련된 상호관계성을 사용할 수도 있다는 가능성을 포함한다. 본 발명의 하나 이상의 실시형태는 특정의 보호된 키의 사용을 포함하는 라이센스 오브젝트의 디지털 및/또는 인터로킹 서명의 구현을 통해 그러한 단점을 극복한다. 이들 실시형태의 이점은 라이센스 요소들의 상호관계성으로부터 도출된 관련된 특성들 뿐아니라 공개 키를 통한 권한이 부여되지 않은 액세스의 방지를 포함한다.
다른 현존하는 시스템들은 두 개의 권리 관리 엔티티들 사이와 같이, 제 1 엔티티와 제 2 엔티티 간의 프록시미티 결정을 행하는 컴포넌트들을 포함할 수도 있다. 그러한 시스템들은 한 개의 보호된 콘텐츠가 예를 들어 귀찮은 프록시미티 체크 절차들을 수행함으로써, 소정의 환경 밖에서 복제될 수 없다는 것을 나타내는 규칙을 시행할 수도 있다. 그러나, 이들 시스템들의 단점은 그들이 보호된 콘텐츠에 대한 보안성을 제공하면 프록시미티 체크 그 자체의 성능을 부적절하게 방해한다는 것이다. 본 발명의 실시형태들은 난수 및/또는 비밀 시드 (secret seed) 의 송신에 관련된 특성을 통해 보안된 간결한 프록시미티 검출 프로토콜을 제공함으로써 이러한 단점 및 다른 단점을 극복한다. 하나 이상의 실시형태들의 관련 이점들은, 비록 요청이 차단될지라도, 공격자가 올바른 응답을 결정하기 위한 암호화 실행불가능 (cryptographic infeasibility) 을 포함한다.
요약하면, 부적절하게 복접하고, 제한적이며, 및/또는 비교적 융통성이 없는 기술들에 의존하지 않고 전자 콘텐츠에의 액세스에 적절히 권한을 부여할 수 있는 시스템, 관계들 및 프로세스들의 소정의 자연스런 형태들을 인에이블할 수 있는 시스템, 및/또는 다른 DMR 시스템들과 상호작동가능한 시스템들에 대한 필요가 존재한다.
요약
본 발명에 따른 시스템, 방법 및 제조 물품은 전자 콘텐츠에 대한 액세스에 권한을 부여하는 것 및 전자 콘텐츠와 관련된 데이터 프로세싱에 지향된다.
일 예시적인 실시형태에서, 메모리 내에 저장된 한 개의 전자 콘텐츠에 대한 액세스에 권한을 부여하는 방법이 제공된다. 이러한 예시적인 실시형태의 방법은 전자 콘텐츠에 액세스하기 위한 요청을 수신하는 단계, 전자 콘텐츠와 관련된 라이센스를 검색하는 단계, 및 요청이 승인될 수 있는지 여부를 결정하기 위해 디지털 권리 관리 엔진을 사용하여 제 1 제어 프로그램을 실행하는 단계를 포함할 수 있다. 다른 예시적인 실시형태는 메모리 내에 저장된 하나 이상의 링크 오브젝트를 평가하는 단계 및 링크(들)가 유효한지 여부 및/또는 하나 이상의 조건들이 만족되는지 여부를 결정하기 위해 제 2 제어 프로그램을 실행하는 단계를 포함할 수도 있다.
상술된 일반 설명 및 이하의 상세한 설명 모두는 단지 예시적이고 설명을 위한 것이며, 기술된 바와 같이, 본 발명을 제한하는 것이 아니다. 또 다른 특징 및/또는 변경이 여기에 진술된 것들에 부가하여 제공될 수도 있다. 예를 들어, 본 발명은 개시된 특징들의 다양한 조합 및 부조합 및/또는 상세한 설명에서 이하에 개시되는 수개의 다른 특징의 조합 및 부조합으로 지향될 수도 있다.
도면의 간단한 설명
본 발명의 작동 주요부가 첨부된 도면과 함께 다음의 상세한 설명을 참조하여 용이하게 이해될 것이다.
도 1은 전자 콘텐츠의 사용을 관리하는 예시적인 시스템을 도시한다.
도 2는 본 발명의 작동 주요부의 실시형태를 실시하는데 사용될 수 있는 시스템의 더욱 상세한 예를 도시한다.
도 3은 예시적인 디지털 권리 관리 (DRM) 엔진이 DRM 을 사용하는 네트워크에서 기능하는 방법을 도시한다.
도 4는 DRM 시스템 내의 관계를 모델링하는데 사용된 노드들 및 링크들의 집합을 도시한다.
도 5는 DRM 엔진의 실시형태가 요청된 액션이 권한이 부여되었는지 여부를 결정하는 방법을 도시하는 흐름도이다.
도 6은 본 발명의 작동 주요부의 일 실시형태에 따른 DRM 라이센스의 예를 도시한다.
도 7a 및 도 7b 는 일 실시형태에서의 에이전트의 사용을 도시한다.
도 8은 DRM 라이센스의 예를 도시한다.
도 9는 DRM 엔진이 요청된 액션이 권한부여되었는지 여부를 결정하는 방법에 대한 더욱 상세한 예이다.
도 10은 DRM 엔진이 일 실시형태의 오브젝트에서 제어 프로그램을 실행하는 방법에 대한 더욱 상세한 예이다.
도 11은 디바이스 상에서 실행중인 예시적인 실시형태의 DRM 엔진을 도시한다.
도 12는 일 실시형테에서 제어 프로그램을 실행하는데 있어서 수반되는 단계들을 도시하는 흐름도이다.
도 13은 일 실시형태에서 콘텐츠 소비 클라이언트 애플리케이션을 구성하는 요소들을 도시한다.
도 14는 일 실시형태에서 콘텐츠 패키징 애플리케이션을 구성하는 요소들을 도시한다.
도 15는 일 실시형태에 따른 키 도출 메커니즘을 도시한다.
도 16은 DRM 시스템의 예를 도시한다.
도 17은 일시적 로그인을 제공하는 DRM 시스템의 예를 도시한다.
도 18은 기업 문서들을 관리하는 예시적인 시스템의 고레벨 아키텍쳐를 도시한다.
도 19는 도 18에 도시된 것과 같은 시스템이 문서에 대한 액세스 또는 문서의 다른 사용을 관리하는데 사용될 수 있는 방법에 대한 예를 도시한다.
도 20은 도 18에 도시된 것과 같은 시스템이 문서에 대한 액세스 또는 문서의 다른 사용을 관리하는데 사용될 수 있는 추가적인 방법에 대한 예를 도시한다.
도 21은 도 20에 도시된 예의 추가적인 특징을 도시한다.
도 22는 기업 내의 전자 콘테츠를 관리하는 또 다른 예시적인 시스템을 도시한다.
도 23은 여기에 기술된 시스템 및 방법이 의료 기록을 관리하는데 적용될 수 있는 방법을 도시한다.
도 24는 여기에 제공된 시스템 및 방법이 전자 가입 서비스의 정황에서 사용될 수 있는 방법을 도시한다.
도 25는 여기에 기술된 시스템 및 방법이 홈 네트워크 도메인의 정황에서 사용될 수 있는 방법을 도시한다.
도 26은 일 예시의 실시형태에서 호스트 애플리케이션과 DRM 클라이언트 엔진 간에 발생하는 상호작용들을 도시한다.
도 27은 일 예시적인 실시형태에서 호스트 애플리케이션과 패키징 엔진 간에 발생하는 상호작용들을 도시한다.
도 28a 는 일 실시형태에 따른 라이센스의 더욱 상세한 도면이다.
도 28b 는 일 예의 실시형태에서 링크들과 노드들 간의 관계를 도시한다.
도 29는 가상 머신의 예시적인 구현의 동작 환경을 도시한다.
도 30은 일 실시형태에 따른 확장된 상태 블록 데이터 구조를 도시한다.
도 31a 는 일 실시형태에서의 데이터 세그먼트의 메모리 이미지를 도시한다.
도 31b 는 일 실시형태에서의 코드 세그먼트의 메모리 이미지의 예를 도시한다.
도 31c 는 일 실시형태에서의 엑스포트 엔트리 메모리 이미지의 예를 도시한다.
도 31d 는 일 실시형태에서의 엑스포트 테이블 엔트리의 일반 예를 도시한다.
도 31e 는 예시 엔트리 포인트에 대한 엑스포트 테이블 엔트리의 예를 도시한다.
도 32는 라이센스 전송 프로토콜의 예를 도시한다.
도 33은 일 실시형태에 따른 라이센스 전송 프로토콜의 또 다른 예를 도시한다.
도 34는 일 실시형태에서의 라이센스 오브젝트의 무결성을 보호하는 메커니즘을 도시한다.
도 35는 또 다른 실시형태에서의 라이센스 오브젝트의 무결성을 보호하는 메커니즘을 도시한다.
도 36은 일 실시형태에 따른 프록시미티 체킹 프로토콜을 도시한다.
도 37은 일 실시형태에 따른 프록시미티 체킹 프로토콜의 사용을 도시한다.
도 38은 일 실시형태에서의 클라이언트와 라이센스 서버 간의 상호작용을 도시한다.
도 39는 일 실시형태에서의 클라이언트와 라이센스 서버 간의 상호작용에 대한 더욱 상세한 도면이다.
도 40은 다수의 역할을 갖는 엔티티의 예를 도시한다.
도 41은 일 실시형태에 따른 브트스트랩 프로토콜을 도시한다.
도 42는 일 실시형태에서의 cl4n-ex 와 예시적인 XML 정규화 간의 관계를 도시한다.
상세한 설명
이하에서는 본 발명의 상세한 설명이 제공된다. 몇몇 실시형태들이 기술되나, 본 발명이 어느 일 실시형태에 제한되지 않고, 대신 무수한 대안들, 변경들, 및 균등물들을 포함함을 이해해야 한다. 또한, 무수한 특정 상세함들이 본 발명의 완전한 이해를 제공하기 위해 다음 설명에서 개시되나, 몇몇 실시형태들은 이 상세함의 일부 또는 전부 없이도 행할 수 있다. 또한, 명확히 할 목적으로, 관련 기술에서 공지된 소정 기술 자료는 본 발명의 불필요한 모호함을 피하기 위해 상세히 설명되지 않는다.
참조로서 여기에서 병합되는, 공동-양도된 미국 특허 출원 제 10/863,551 호, 공개 공보 제 2005/0027871 A1 (" '551 출원") 호는, 이전의 많은 DRM (Digital Rights Management) 구현들의 특징을 나타낸 몇몇 약점들을 극복하는 DRM 아키텍쳐 및 신규한 DRM 엔진의 실시형태들을 기술한다. 본 출원은 ‘551 출원에서 기술된 아키텍쳐와 DRM 엔진의 강화, 확장, 및 변경뿐만 아니라 대안적 실시형태들을 기술하며, 또한 새로운 요소들, 아키텍쳐들, 및 실시형태들을 기술한다. 따라서, 여기서 기술된 자료는 ‘551 출원에서 기술된 것과 같은 아키텍쳐 및/또는 DRM 엔진의 정황뿐만 아니라, 다른 정황으로도 사용될 수 있다.
1. DRM 시스템의 실시예
도 1 은 전자 콘텐츠를 관리하는 시스템 (100) 을 도시한다. 도 1 에 도시된 바와 같이, 전자 콘텐츠 (103) 의 권리를 보유한 엔티티 (102) 는 분배 및 최종 사용자 (108a 내지 108e, 집합적으로 "최종 사용자 (108)" 라 칭하며, 여기서 참조 부호 108 은 문맥으로부터 명확한 것과 같이, 최종 사용자 또는 최종 사용자의 계산 시스템과 상호 호환 가능하게 참조된다) 에 의한 소비를 위해 콘텐츠를 패키징한다. 예를 들어, 엔티티 (102) 는 음악가, 영화 스튜디오, 출판사, 소프트웨어 회사, 이동 서비스 제공자, 인터넷 콘텐츠 다운로드 또는 가입 서비스, 케이블 또는 위성 텔레비전 공급자, 기업 직원 등과 같은 콘텐츠 소유자, 생산자, 및 제공자, 또는 이들을 위해 대행하는 엔티티를 포함하고, 콘텐츠 (103) 는 임의의 디지털 비디오, 오디오 또는 텍스트 콘텐츠와 같은 전자 콘텐츠, 영화, 노래, 비디오 게임, 한편의 소프트웨어, 이메일 메시지, 텍스트 메시지, 워드 프로세싱 문서, 리포트, 또는 임의의 기타 엔터테인먼트, 기업 또는 다른 콘텐츠를 포함할 수도 있다.
도 1 에 도시된 실시예에서, 엔티티 (102) 는 패키징 엔진 (109) 을 이용하여 패키징된 콘텐츠 (104) 에 라이센스 (106) 를 결합시킨다. 라이센스 (106) 는 폴리시들 (105) 또는 엔티티 (102) 의 다른 요청들에 기초하고, 컨텐츠의 허가된 사용 및/또는 금지된 사용, 및/또는 컨텐츠의 사용하기 위해 만족되어야 하거나 사용의 조건이나 결과로서 만족되어야 하는 하나 이상의 조건들을 특정한다. 또한, 컨텐츠는 암호화 또는 디지털 서명 기술과 같은 하나 이상의 암호 메커니즘에 의해 보호되고, 이 암호 메커니즘에 대해 적절한 암호 키, 증명 등을 획득하는데 신뢰 기관 (110) 을 이용할 수도 있다.
도 1 에서 도시된 바와 같이, 패키징된 콘텐츠 (104) 와 라이센스 (106) 는 인터넷과 같은 네트워크 (112), 근거리망 (103, LAN), 무선망, 가상 사설망 (107), 광역통신망 (WAN), 등을 통하고, 케이블 통신, 위성 통신, 방송 통신, 또는 셀 통신 (114) 을 통하며/통하거나 CD (Compact Disc), DVD (Digital Versatile Disk), 플레쉬 메모리 카드 (예를 들어, SD (Secure Digital) 카드), 등과 같은 임의의 적절한 수단에 의해 최종 사용자 (108) 에 제공될 수 있다. 패키징된 콘텐츠 (104) 는 단일 패키지 또는 송신 (113) 으로, 또는 동일 또는 상이한 소스로부터 수신된 개별 패키지나 송신들로 라이센스 (106) 과 함께 사용자에게 전달될 수 있다.
최종 사용자 시스템 (예를 들어, PC (108e, Personal Computer), 이동 전화 (108a), TV 및/또는 TV 셋톱 박스 (108c), 휴대 오디오 플레이어 및/또는 휴대 비디오 플레이어, 전자책 단말기 (eBook reader) 등) 은 애플리케이션 소프트웨어 (116), 하드웨어, 및/또는 콘텐츠를 검색하고 렌더링하도록 액션 가능한 전용 논리를 포함한다. 또한, 사용자 시스템은 라이센스 (106) 에 의해 허용된 경우에만 사용자에게 콘텐츠에 대한 액세스을 선택적으로 허용함으로써와 같이 패키징된 콘텐츠 (104) 와 연관된 라이센스 (106) 를 평가하고, 그 규정을 시행하는 (및/또는 이러한 규정을 시행하기 위한 애플리케이션 (116) 을 인에이블하는), 소프트웨어 및/또는 하드웨어 (여기서 디지털 권리 관리 (DRM) 엔진 (118) 으로 칭함) 를 포함한다. DRM 엔진 (118) 은 애플리케이션 (116) 과 구조적으로 또는 기능적으로 통합될 수도 있고, 소프트웨어 및/또는 하드웨어의 분리된 조각을 포함할 수도 있다. 또한, 대안적으로, 시스템 (108c) 와 같은 사용자 시스템은 DRM 엔진을 사용하여 사용자에 의해 이미 획득되거나 요청된 콘텐츠에 대한 사용자의 액세스을 허용할지에 대해서 결정 (120) 을 행하는 시스템 (108b) 과 같은 원격 시스템 (예를 들어, 서버, PC 또는 TV 셋톱 박스 등과 같은 디바이스의 사용자 네트워크 내의 다른 디바이스) 과 통신할 수도 있다.
또한, DRM 엔진, 및/또는 사용자 시스템상이나 그것과 원격 통신의 다른 소프트웨어는 보호된 콘텐츠에 대한 사용자의 액세스나 보호된 콘텐츠의 다른 사용에 관한 정보를 기록할 수도 있다. 몇몇 실시형태에서, 예를 들어 (로열티, 광고 수익, 등과 같은) 수익을 분할하고, 사용자 선호를 결정하고, 시스템 폴리시을 실행하며, 및/또는 기타의 용도로 원격 당사자 (예를 들어, 클리어링 하우스 (122), 콘텐츠 창작자, 소유자, 또는 공급자 (102), 사용자의 관리자, 이를 대행하는 엔티티, 및/또는 기타) 에 이 정보의 일부 또는 전부를 전달할 수도 있다. 도 1 이 예시적 DRM 아키텍쳐와 예시적 관계의 세트를 도시하나, 여기에서 기술된 시스템이나 방법은 임의의 적절한 정황에서 행할 수 있음이 이해되고, 이로써 도 1 이 예시적 및 설명적 목적이고, 제한적이지 않음을 이해한다.
도 2 는 본 발명의 실시형태들을 행하는데 사용될 수 있는 시스템 (200) 의 더욱 상세한 실시예 도시한다. 예를 들어, 시스템 (200) 은 최종 사용자의 디바이스 (108), 콘텐츠 공급자의 디바이스 (109), 및/또는 기타의 일 실시형태를 포함할 수도 있다. 예를 들어, 시스템 (200) 은 PC (108e) 나 네트워크 서버 (105) 와 같은 범용 계산 디바이스 (computing device), 또는 셀룰라 전화 (108a), PDA (Personal Digital Assistant), 휴대 오디오 플레이어 또는 휴대 비디오 플레이어, TV 셋톱 박스, 키오스크 (kiosk), 게임 시스템, 등과 같은 전용 계산 디바이스를 포함할 수도 있다. 통상, 시스템 (200) 은 프로세서 (202), 메모리 (204), 사용자 인터페이스 (206), 제거 가능한 메모리 (208) 를 수용하는 포트 (207), 네트워크 인터페이스 (210), 및 상기 요소들을 접속시키는 버스 (212) 를 포함한다. 시스템 (200) 의 작동은 통상 메모리 (204) 에 저장된 프로그램들의 안내하에서 액션하는 프로세서 (202) 에 의해 제어된다. 일반적으로, 메모리 (204) 는 고속 RAM (Random-Access Memory) 과, 자기 디스크 및/또는 플래쉬 EEPROM 과 같은 비-휘발성 메모리 양자를 포함한다. 메모리 (204) 의 일부는 시스템 (200) 의 다른 구성 요소들로부터 판독되거나 시스템 (200) 의 다른 구성 요소들에 의해 기록될 수 없도록 제한된다. 포트 (207) 는 플로피 디스켓, CD-ROM, DVD, 메모리 카드, SD 카드, 다른 자기 또는 광학 매체, 및/또는 기타와 같은 컴퓨터-판독 가능 미디어 (208) 를 수용하는 디스크 드라이버 또는 메모리 슬롯을 포함할 수도 있다. 통상, 네트워크 인터페이스 (210) 는 인터넷이나 인트라넷 (예를 들어, LAN, WAN, VPN, 등) 과 같은 네트워크 (220) 를 통해 시스템 (200) 과 다른 계산 디바이스 (및/또는 계산 디바이스의 네트워크) 간에 접속을 제공하도록 액션 가능하고, 하나 이상의 통신 기술을 채용하여 물리적으로 이러한 물리적 접속 (예를 들어, 무선, 이더넷, 및/또는 기타) 을 행한다. 몇몇 실시형태에서, 시스템 (200) 은 또한 시스템 (200) 의 사용자 또는 다른 엔티티에 의한 변경 (tampering) 으로부터 보호되는 프로세싱 유닛 (203) 을 포함할 수도 있다. 이러한 보안 프로세싱 유닛은 키 관리, 서명 검증, 및 DRM 프로세스의 다른 양태와 같은 민감한 액션의 보안을 강화하는데 도움을 줄 수 있다.
도 2 에서 도시된 바와 같이, 계산 디바이스 (200) 의 메모리 (204) 는 계산 디바이스 (200) 의 액션을 제어하는 다양한 프로그램 또는 모듈을 포함할 수도 있다. 예를 들어, 메모리 (204) 는 애플리케이션, 주변기기 등의 실행을 관리하는 운영 체제 (220); 보호된 전자 콘텐츠를 렌더링하는 호스트 애플리케이션 (230); 및 여기에서 기술된 저작권 관리 기능의 일부 또는 전부를 실시하는 DRM 엔진 (232) 를 일반적으로 포함한다. 본 명세서의 다른 곳에서 기술된 바와 같이, DRM 엔진 (232) 은 제어 프로그램을 실행하는 가상 머신 (virtual machine) 및 가상 머신 (222) 에 의한 사용을 위해 상태 정보를 저장하는 상태 데이터베이스 (224) 와 같은 다양한 다른 모듈들, 및/또는 콘텐츠를 암호화 및/또는 복호화와 같은 암호 액션을 수행하는 것, 해시 함수와 메시지 증명 코드를 계산하는 것, 디지털 서명을 평가하는 것, 및/또는 기타를 위한 하나 이상의 암호 모듈들 (226) 을 포함하고, 그들과 상호 액션하며/상호 액션하거나, 그들을 제어한다. 또한, 메모리 (204) 는 통상 보호된 콘텐츠 (228) 와 연관된 라이센스 (229) 뿐만 아니라 암호 키, 증명, 등 (미도시) 을 포함한다.
당업자는 본 명세서에 기술된 시스템 및 방법이 도 2 에 도시된 것과 유사 또는 동일한 계산 디바이스로 또는 도 2 에 도시된 구성 요소의 일부를 소유하지 않는 계산 디바이스 및/또는 도시되지 않은 다른 구성 요소를 소유하는 계산 디바이스를 포함하는 가상의 임의의 다른 적절한 계산 디바이스로 실시될 수 있는 것을 이해한다. 따라서, 도 2 가 설명적이고 제한적이지 않는 목적으로 제공되는 것을 이해되어야 한다.
본 명세서는 도 1 및 도 2에서 도시된 것들이나 다른 종류의 시스템과 같은 저작권 관리 기능의 일부 또는 전부를 제공하는데 사용될 수 있는 DRM 엔진과 관련된 시스템 및 방법을 기술한다. 또한, 이하에서는 도 1 및 도 2 에서 도시된 것들과 같은 시스템의 문맥뿐만 아니라 DRM 과 무관한 문맥을 포함한 다른 문맥에서 사용될 수 있는 다양한 다른 시스템 및 방법을 기술한다.
2. DRM 엔진 아키텍쳐
*일 실시형태에서, 상대적으로 단순하고, 개방적이며, 유연한 DRM 엔진은 핵심 DRM 기능을 실시하는데 사용된다. 바람직한 실시형태에서, 이 DRM 엔진은 ‘551 출원에 기술된 바와 같은 웹 서비스 환경, 및 가상 임의의 호스트 환경 또는 소프트웨어 아키텍쳐와 상대적으로 쉽게 통합되도록 설계된다. 바람직한 실시형태에서, DRM 엔진은 특정 미디어 포맷과 암호 프로토콜에 독립적이어서, 특정 상황에서 요구된 바와 같이 표준화된 또는 독점 기술을 이용하는 유연성을 디자이너에게 허락한다. DRM 엔진의 바람직한 실시형태들에 의해 사용된 통제 모델은 단순하나, 복잡한 관계 및 비즈니스 모델을 표현하도록 사용될 수 있다.
이하에서 기술되는 DRM 엔진의 설명적 실시형태들의 일부는 "Octopus" 로서 지칭된 예시적 구현에 관한 것이나, 본 발명이 Octopus 실시예의 구체적 상세함에 제한되지 않으며, 예시적이지만 제한적이지 않는 목적을 위해 제공되는 것으로 이해된다.
1.1. 개요
도 3 은 DRM 을 사용하는 시스템 (302) 에서 예시적 DRM 엔진 (303a) 이 어떻게 기능하는지를 도시한다. 일 실시형태에서, 도 3 에 도시된 바와 같이, DRM 엔진 (303a) 은 호스트 애플리케이션 (304a) (예를 들어, 오디오 및/또는 비디오 플레이어와 같은 콘텐츠 렌더링 애플리케이션 (content rendering application), 이메일 프로그램, 워드 프로세서, 전자책 단말기, 또는 문서 단말기와 같은 텍스트-렌더링 애플리케이션, 및/또는 기타) 내에 구현되거나 통합되며, 또는 그것과 함께 통신된다. 일 실시형태에서, DRM 엔진 (303a) 은 DRM 기능을 수행하고, 암호화, 복호화, 파일 관리와 같은 서비스를 위해 호스트 애플리케이션 (304a) 에 의존하고/의존하거나, 다른 기능들은 호스트 애플리케이션에 의해 더욱 효과적으로 제공될 수 있다. 예를 들어, 바람직한 실시형태에서, DRM 엔진 (303a) 은 보호된 콘텐츠 (308) 에 대한 라이센스 (306) 를 포함하는 DRM 오브젝트 (305) 를 조작하도록 액션 가능하다. 또한, 몇몇 실시형태에서, DRM 엔진 (303a) 은 키를 호스트 애플리케이션 (304a) 에 전달할 수도 있다. 도 3 에서 도시된 바와 같이, DRM 엔진 (303a) 과 호스트 애플리케이션 (304a) 중 하나 또는 모두는 그들 각각의 태스크를 완료하는데 필요로되는 처리 및/또는 정보를 위해 웹 서비스 (305a) 및/또는 호스트 서비스 (306a) 의 사용을 행할 수도 있다. ‘551 출원은 이러한 서비스의 실시예들 및 DRM 엔진 (303a) 과 호스트 애플리케이션 (304a) 이 그것과 함께 상호 액션할 수도 있는 방식을 제공한다.
도 3 에서 도시된 실시예에서, DRM 엔진 (303a), 호스트 애플리케이션 (304a), 호스트 서비스 (306a), 및 웹 서비스 인터페이스 (305a) 는 최종 사용자의 PC 와 같은 디바이스 (300a) 상에 로딩된다. 디바이스 (300a) 는 서버 (300b) 와 통신적으로 결합되어, 서버 (300b) 로부터 콘텐츠 (308) 및 라이센스 (306) 를 획득할뿐만 아니라, 또한 휴대 디바이스 (300d) 와 통신적으로 결합되어, 디바이스 (300a) 는 휴대 디바이스 (300d) 로 콘텐츠 (308) 및/또는 라이센스 (306) 를 포워드할 수도 있다. 이들 다른 디바이스 각각은 특정 호스트 애플리케이션 및 디바이스 호스트 환경과 통합될 수 있는 DRM 엔진 (303a) 과 유사 또는 동일한 DRM 엔진 (303) 을 포함할 수 있다. 예를 들어, 서버 (300b) 는 콘텐츠 및/또는 라이센스의 대부분 패키징을 수행하는 호스트 애플리케이션 (304b) 을 포함하고, 어떤 재분배 제한을 따르기 위해 패키징되는 콘텐츠와 연관된 제어를 평가하는 DRM 엔진 (303a) 의 사용을 행한다. 유사하게, 디바이스 (300c) 는 콘텐츠를 렌더링하고 패키징할 능력이 있는 호스트 애플리케이션 (304c) 을 포함하나, 디바이스 (300a) 는 단순히 콘텐츠를 렌더링할 수 있는 호스트 애플리케이션을 포함할 수도 있다. 호스트 환경의 잠재적 다양성의 또 다른 실시예로서, 디바이스 (300d) 는 웹 서비스 인터페이스를 포함하지 않을 수도 있으나, 대신 디바이스 (300a) 와의 통신에 의존하고, 확장 호스트 애플리케이션 (304d) 및/또는 DRM 엔진 (303d) 에 대한 웹 서비스 인터페이스 (305a) 는 임의의 웹 서비스의 사용을 요구할 수도 있다. 도 3 은 오직 DRM 엔진이 사용될 수도 있는 시스템의 일 실시예이며; 본 명세서에서 기술된 DRM 엔진의 실시형태들은 많은 상이한 방식으로 실시되고 애플리케이션 및 시스템과 통합될 수 있으며, 도 3 에 도시된 설명적 실시예들에 제한되지 않는다.
1.2. 오브젝트
바람직한 실시형태들에서, 콘텐츠 보호 및 통제 오브젝트는 시스템 내의 엔티티들을 나타내고, 콘텐츠를 보호하고, 사용 규칙을 콘텐츠에 연관시키며, 요청된 때 액세스이 허락될 수 있는지를 결정하는데 사용된다.
이하에서 더욱 상세히 기술되는 바와 같이, 다음의 오브젝트들이 사용된다:
오브젝트 타입 기능
노드 엔티티를 나타냄
링크 엔티티들 간에 방향성 관계를 나타냄
콘텐츠 콘텐츠 (예를 들어, 미디어 콘텐츠) 를 나타냄
콘텐츠 키 콘텐츠를 암호화하는데 사용된 암호화 키를 나타냄
제어 콘텐츠와 상호 작용을 통제하는 사용 규칙을 나타냄
제어기 제어 오브젝트와 콘텐츠 키 오브젝트 간의 연관성을 나타냄
보호기 콘텐츠 오브젝트와 콘텐츠 키 오브젝트 간의 연관성을 나타냄
1.2.1. 노드 오브젝트
노드 오브젝트는 시스템 내의 엔티티를 나타내는데 사용된다. 실제, 노드는 사용자, 디바이스, 또는 그룹을 일반적으로 나타낸다. 또한, 노드 오브젝트는 일반적으로 노드와 연관된 엔티티의 소정 속성을 나타내는 연관된 속성을 갖는다.
예를 들어, 도 4 는 2 개의 사용자 (Xan (400) 및 Knox (402)), 2 개의 디바이스 (PC (404) 및 휴대용 디바이스 (406)), 및 그룹을 나타내는 몇몇 엔티티들 (예를 들어, 캐리 가족 (408, 캐리 가족) 의 구성원, 공공 도서관 (410) 의 구성원, 특정 음악 서비스 (412) 의 가입자, RIAA-승인된 디바이스 (414), 및 특정 회사 (416) 에 의해 제조된 디바이스) 을 도시하며, 각각은 연관된 노드 오브젝트를 갖는다.
일 실시형태에서, 노드 오브젝트는 노드가 나타내는 것을 정의하는 속성을 포함한다. 속성의 일례는 노드 타입이다. 사용자, 그룹, 및 디바이스를 나타내는 것뿐만 아니라, 노드 타입 속성은 다른 엔티티들을 나타내는데 사용될 수 있다. 또한, 몇몇 실시형태에서, 노드 오브젝트는 명세서의 다른 곳에서 기술되는 키 도출 및 분배 기술의 일 실시형태를 사용한다.
또한, 몇몇 실시형태들에서, 노드 오브젝트는 노드 오브젝트의 기밀부에 액세스하는 하위 시스템에 대한 기밀 정보를 목적으로 삼는데 사용되는 기밀 비대칭 키 쌍을 포함한다. 이것은 노드가 나타내는 엔티티 (예를 들어, 음악 서비스 (412)) 또는 노드의 관리 책임이 있는 몇몇 엔티티 (예를 들어, 최종 사용자 (예를 들어, Knox (402)) 가 그 또는 그녀의 휴대용 디바이스 (406) 의 관리 책임이 있을 수 있음) 일 수 있다.
1.2.2. 링크 오브젝트
바람직한 실시형태에서, 링크 오브젝트는 2개의 노드들 간의 관계를 나타내는데 사용된 서명된 오브젝트이다. 예를 들어, 도 4 에서, PC 노드 (404) 에서 Knox (402) 까지의 링크 (418) 는 소유권을 도시한다. Knox (402) 에서 캐리 가족 노드 (408) 까지의 링크는 캐리 가족 노드 (408) 에서 음악 서비스 가입자 노드 (412) 까지의 링크와 같이 맴버쉽을 나타낸다. 일 실시형태에서, 링크 오브젝트는 2개의 노드 간의 관계를 나타내고, 이에 따라 도 4 에 도시된 관계는 10 개의 링크를 이용하여 나타낼 수 있다.
도 4 에 도시된 바와 같이, 그래프 (420) 는 노드들 간의 관계를 표시하는데 사용될 수 있으며, 여기서 링크 오브젝트는 노드들 간의 방향성 에지 (directed edge) 이다. 예를 들어, 도 4 에서, 캐리 가족 노드 (408) 와 음악 서비스 노드 (412) 간의 관계는 꼭지점이 캐리 가족 노드 (408) 와 음악 서비스 노드 (412) 인 그래프에서 방향성 에지 (422) 가 존재한다는 것을 나타낸다. Knox (402) 및 Xan (400) 은 캐리 가족 (408) 맴버이다. Knox (402) 가 캐리 가족 (408) 에 링크되고, 캐리 가족 (408) 가 음악 서비스 (412) 에 링크되기 때문에, Knox (402) 와 음악 서비스 (412) 간에 경로 (path) 가 존재한다고 말한다. DRM 엔진는 일 노드부터 타 노드까지의 경로가 존재하는 경우 타 노드로부터 도달 가능한 일 노드를 고려한다. 이것은 보호된 콘텐츠에 대한 액세스를 요청하는 애플리케이션이 실행되고 있는 디바이스에서 소정 노드가 도달 가능하다는 조건에 기초하여 보호된 콘텐츠에 액세스하는 사용 권한을 허용하는 제어가 기록되는 것을 허용한다.
이하에서 더욱 상세히 설명하는 바와 같이, 링크 오브젝트는 또한 콘텐츠 키의 도출를 허용하는 몇몇 암호 데이터를 부가적으로 포함할 수 있다. 또한, 링크 오브젝트는 링크가 유효하게 간주될 수도 있는 조건을 규정하는 제어 프로그램을 포함할 수도 있다. 이러한 제어 프로그램은 DRM 엔진의 가상 머신에 의해 실행되거나 해석되어 (이들 용어들은 본 명세서에서 상호 교환가능하게 사용된다) 링크의 유효성을 평가 (링크가 권한 부여 그래프에서 소정 노드에 도달하는데 사용될 수 있는지 여부를 결정) 할 수 있다.
일 실시형태에서는 링크들이 서명된다. 임의의 적절한 디지털 서명 메커니즘은 사용될 수 있고, 일 실시형태에서, DRM 엔진은 어떻게 링크 오브젝트가 서명되고 임의의 연관된 증명을 평가하지 않는지를 규정하지 않으나, 대신 그러한 서명 및/또는 증명을 검증하는 호스트 시스템에 의존한다. 이것은 시스템 설계자 또는 관리자로 하여금 링크 오브젝트의 수명을 규정하거나, 그 링크 오브젝트를 취소하는 등을 허용하여 (예를 들어, 만료 키 또는 서명, 취소, 및/또는 기타를 이용함으로써), 이로써 보호된 콘텐츠 및/또는 링크의 특정 조각 (예를 들어, 링크의 만료가 링크 오브젝트 자체에서 적절한 제어 프로그램을 포함함으로써 대안적으로, 또는 부가적으로 구현될 수 있어, 실행되는 경우 만료 일자 또는 다른 유효 기간을 집행한다) 에 대한 문맥에서 제어 프로그램과 DRM 오브젝트의 DRM 엔진 평가에 의해 제공된 폴리시 관리 및 보안의 상부에 폴리시 관리 및 보안의 부가층을 제공한다. 일 실시형태에서, DRM 엔진은 통상적이고, 임의의 적절한 암호화, 디지털 서명, 취소, 및/또는 호스트 애플리케이션 및/또는 환경에 의해 사용되는 다른 보안 방식과 함께 액션한다. 따라서, 예를 들어, DRM 엔진이 특정 링크가 적절히 서명되는지 여부를 결정하는데 필요한 경우, 단지 호스트 애플리케이션 (및/또는 호스트 또는 시스템 암호 서비스) 을 호출하여 시스템 디자이너에 의해 선택된 특정 서명 방식에 따라 서명을 검증할 수도 있다 (DRM 엔진 자체의 상세함은 인식되지 않을 수도 있음). 다른 실시형태에서, DRM 엔진 자체는 단순히 적절한 서명 알고리즘을 사용토록 지시하는 호스트에 의존하여 실제 서명 평가를 수행한다.
1.2.3. 콘텐츠 보호 및 통제
도 3 을 다시 참조하면, 통상적인 시나리오에서, 콘텐츠 공급자 (300b) 는 애플리케이션 (304b) 을 사용하고, 이 애플리케이션 (304b) 은 일 피스 (piece) 의 전자 콘텐츠 (308) 를 암호화하거나 그렇지 않으면 일 피스의 전자 콘텐츠 (308) 를 암호로 보호하는 패키징 엔진을 포함하고 전자 콘텐츠 (308) 에의 액세스나 전자 콘텐츠 (308) 의 다른 사용을 통제하는 라이센스 (306) 를 생성한다. 일 실시형태에서, 라이센스 (306) 는 어떻게 콘텐츠 (308) 가 사용될 수도 있는지를 구체화하는 오브젝트 세트 (305) 를 포함하고, 또한 콘텐츠 암호화 키 (들) 및/또는 콘텐츠 암호화 키 (들) 를 얻기 위해 요구된 정보를 포함한다. 일 실시형태에서, 콘텐츠 (308) 및 라이센스 (306) 는 논리적으로 분리되나, 내부 참조 (예를 들어 오브젝트 ID (310) 를 이용함) 에 의해 결합된다. 많은 경우, 콘텐츠와 라이센스를 함께 저장하고/저장하거나 전달하는 것이 편리할 수도 있으나, 이것은 바람직한 실시형태들에서 요구되지 않는다. 일 실시형태에서, 하나의 라이센스는 콘텐츠의 2개 이상의 아이템에 적용할 수 있고, 2 개 이상의 라이센스는 콘텐츠의 어떤 단일 아이템에 적용할 수 있다.
도 3 에 도시된 바와 같이, 클라이언트 디바이스 (300a) 상에 실행 중인 호스트 애플리케이션 (304a) 이 콘텐츠 (308) 의 특정 부분에 액션을 수행하기 원하는 경우, 수행하기를 의도하는 그 액션 (예를 들어, "플레이") 이 허용되는지를 체크하도록 DRM 엔진 (303a) 에 요청한다. 일 실시형태에서, DRM 엔진 (303a) 은 콘텐츠 라이센스 (306) 를 포함하는 오브젝트 (305) 내에 포함된 정보에서, 콘텐츠 (308) 와 연관된 제어 프로그램을 로드 및 실행하고, 그 액션을 수행하기 위한 허가는 제어 프로그램에 의해 리턴된 결과에 기초하여 승인되거나 거절된다. 통상, 허가는 몇몇 조건, 예를 들어, 노드가 요청 엔티티/디바이스 (300a) 를 나타내는 노드에서 도달 가능하다는 조건을 충족시킬 것을 요구한다.
도 5 는 어떻게 DRM 엔진의 실시형태가 요청된 액션 (예를 들어, 콘텐츠 피스를 표시) 을 허가하는지를 결정하는 것을 도시하는 흐름도이다. 도 5 에 도시된 바와 같이, 소정 액션에 대한 라이센스를 평가하는 요청을 수신한다 (500). 예를 들어, 이 요청은 호스트가 특정 액션을 수행하도록 사용자로부터 요청을 수신한 후, 호스트 애플리케이션으로부터 수신될 수도 있다. 도 5 에 도시된 바와 같이, DRM 엔진은 특정 라이센스를 평가하고 (502), 그 요청된 액션이 권한 부여되는지를 결정한다 (504). 예를 들어, 라이센스는 DRM 엔진이 실행시키는 제어 프로그램을 포함하고, 그 제어 프로그램의 결과는 권한 부여 결정을 행하는데 사용될 수도 있다. 라이센스가 요청된 액션을 권한 부여하면 (예를 들어, 블록 504 에서 "예" 로 빠지면), DRM 엔진은 호스트 애플리케이션에 요청이 승인됨을 가리킨다 (506). 그렇지 않으면, DRM 엔진은 호스트 애플리케이션에 요청이 거부됨을 가리킨다 (508). 몇몇 실시형태에서, DRM 엔진은 또한 호스트 애플리케이션에, 예를 들어 조건들을 권한 부여의 승인 (의무 및/또는 콜백(callback)) 에 연관시키거나, 허가의 거부에 대한 이유에 관한 추가 정보를 제공하는 다양한 메타데이터를 리턴할 수도 있다. 예를 들어, DRM 엔진은 호스트 애플리케이션이 요청된 액션의 수행에 관한 소정 정보를 기록하는 경우에만, 또는 호스트 애플리케이션이 예를 들어, 라이센스 재 평가하도록 소정 시간 간격에서 DRM 엔진를 다시 호출하는 한 요청된 액션을 허여하는 것을 가리킬 수도 있다. 이하에서는 DRM 엔진에 의해 리턴된 이러한 의무, 콜백, 및 다른 메타데이터에 대한 추가 정보를 제공한다. 요청된 액션이 권한 부여되는 경우, 콘텐츠 키는 (예를 들어, 라이센스 콘텐츠 키 오브젝트에서) 탐색되고, 요청된 사용을 위해 콘텐츠를 릴리스하는데 사용된다.
1.2.4. 라이센스 DRM 오브젝트
도 6 에서 도시된 바와 같이, 바람직한 실시형태에서, 라이센스 (600) 은 오브젝트들의 집합이다. 도 6 에서 도시된 실시예에서, 라이센스 (600) 는 콘텐츠 키 오브젝트 (602), 보호기 오브젝트 (604), 제어기 오브젝트 (606), 및 제어 오브젝트 (608) 를 포함한다. 도 6 에 도시된 바와 같이, 콘텐츠 키 오브젝트 (602) 는 암호화된 키 데이터 (610) (예를 들어, 암호화된 콘텐츠 아이템 (512) 을 복호화하는데 요구된 키의 암호화된 버전) 및 키 데이터를 암호화하는데 사용된 암호 체계에 관한 정보를 포함한다. 보호기 오브젝트 (604) 는 콘텐츠 키 오브젝트 (602) 를 하나 이상의 콘텐츠 오브젝트 (614) 에 바인딩한다. 도 6 에 도시된 바와 같이, 제어 오브젝트 (608) 는 콘텐츠 오브젝트 (614) 가 어떻게 통제되는 방법을 특정하는 제어 프로그램 (616) 을 포함하고 보호한다. 바람직한 실시형태에서, 제어 프로그램 (616) 은 DRM 엔진에 의해 운영되는 가상 머신 상에 실행하는 실행가능한 바이트코드의 일부이다. 제어 프로그램은 제어 프로그램 내에 특정된 조건들, 예를 들어, 소정 노드가 유효 링크 오브젝트를 이용하여 도달가능하지, 소정 상태 오브젝트들이 저장되었는지, 호스트 환경이 소정 특징을 갖는지, 및/또는 기타 조건을 만족하는지를 체크함으로써 콘텐츠에 대해 소정 액션을 수행할 수 있는 지를 통제한다. 도 6 을 다시 참조하면, 제어기 오브젝트 (606) 는 하나 이상의 콘텐츠 키 오브젝트 (602) 를 제어 오브젝트 (608) 에 바인딩하는데 사용된다.
또한, 라이센스 (600) 는 라이센스에 의해 요구된 콘텐츠-액세스 조건들의 기계- 또는 인간-판독 가능한 설명을 제공하는 메타데이타와 같은 추가 오브젝트를 포함한다. 대안적으로 또는 또한, 다른 오브젝트들 중 하나 (예를 들어, 제어 오브젝트 (608)) 에 대한 자원 확장으로서 이러한 메타데이터를 포함할 수 있다. 도 6 에 도시된 실시형태에서, 제어 오브젝트 (608) 와 제어기 오브젝트 (606) 양자는 서명되어, 시스템이 콘텐츠-액세스 결정을 행하는데 제어 정보를 이용하기 전에 그것이 신뢰성 있는 소스부터 온 것임을 검증할 수 있도록 한다. 또한, 일 실시형태에서, 제어 오브젝트 (608) 의 유효성은 제어기 오브젝트 (606) 에 포함된 보안 해시의 검증을 통해서 체크될 수 있다. 또한, 제어기 오브젝트 (606) 는 그것이 참조하는 콘텐츠 키 오브젝트(들) (602) 에 포함된 각각의 키나 다른 키 데이터에 대한 해시 값을 포함하고, 이것에 의해 공격자가 키 데이터와 콘텐츠 키 오브젝트 간의 바인딩을 변경하는 것이 상대적으로 어렵게 한다.
도 6 에서 도시된 바와 같이, 일 실시형태에서, 콘텐츠 (612) 는 암호화되고, 콘텐츠 오브젝트 (614) 에 포함된다. 사용되는 복호화 키 (610) 는 콘텐츠 키 오브젝트 (602) 내에 (또는 참조로서) 포함되고, 콘텐츠 오브젝트 (614) 와 콘텐츠 키 오브젝트 (602) 양자 간의 바인딩은 보호기 오브젝트 (604) 에 표현된다. 도 6 에 도시된 바와 같이, 고유 ID 들은 콘텐츠 오브젝트 (614) 와 콘텐츠 키 오브젝트 (602) 간의 바인딩을 용이하게 하는데 사용된다. 콘텐츠 (612) 를 복호화하기 위해 키 (610) 의 사용을 통제하는 규칙은 제어 오브젝트 (608) 내에 포함되고, 제어 오브젝트 (608) 와 콘텐츠 키 (602) 간의 바인딩은 다시 고유 ID 들을 이용하여 제어기 오브젝트 (606) 에 의해 나타난다.
도 6 이 하나의 바람직한 실시형태에서 라이센스를 포함하는 오브젝트들을 도시하나, 본 명세서에서 기술된 DRM 시스템들 및 방법들은 본 라이센스 구조의 사용에 제한되지 않음을 이해한다. 예를 들어, 제한 없이, 라이센스는 도 6 에 도시된 다양한 오브젝트의 기능이 보다 작은 다수의 오브젝트 내에 조합되거나, 추가 오브젝트 상에 퍼지게 되거나, 다른 방식으로 오브젝트들 간에 분배되어 사용될 수 있다. 대안적으로 또는 추가적으로, 본 명세서에서 기술된 시스템들과 방법들의 실시형태들은 도 6 에 도시된 라이센스 구조에 의해 사용 가능한 몇몇 기능이 부족하고/부족하거나 추가 기능을 제공하는 라이센스를 가지고 실행될 수 있다. 따라서, 바람직한 실시형태에서 도 6 에 도시된 바람직한 구조가 사용되더라도, 라이센스를 콘텐츠와 연관시키는 임의의 적절한 메커니즘이 본 명세서에서 기술된 원리에 따라 사용될 수 있음을 이해된다.
1.3. 상태 데이터베이스
일 실시형태에서, DRM 엔진은 안전한 상태 저장 메커니즘을 제공하는데 사용할 수 있는 안전하고 영구적 오브젝트 저장을 포함하거나 안전하고 영구적 오브젝트 저장에 대한 액세스을 갖는다. 이러한 기능은 호출 (invocation) 에서 호출까지 영구적인 상태 정보를 읽고 쓸 수 있는 제어 프로그램을 사용 가능하게 하는데 유용하다. 이러한 상태 데이터베이스는 플레이-횟수, 첫 사용 일자, 축적된 렌더링 시간, 및/또는 기타뿐만 아니라 멤버쉽 상태, 및/또는 임의의 다른 적절한 데이터와 같은 상태 오브젝트들을 저장하는데 사용될 수 있다. 몇몇 실시형태들에서, 제 1 시스템 상에서 실행하는 DRM 엔진은 로컬 상태 데이터베이스를 갖지 않을 수도 있고, 예를 들어, 웹 및/또는 호스트 서비스를 이용하여 원격 상태 데이터베이스에 액세스하는데 사용 가능할 수도 있다. 몇몇 실시형태들에서, 제 1 시스템상에서 실행하는 DRM 엔진이 원격 시스템의 데이터베이스 내에 저장된 상태 정보에 액세스하는 것이 필요할 수도 있다. 예를 들어, 제 1 시스템은 상태 데이터베이스를 포함하지 않을 수도 있거나, 제 1 시스템 자신의 상태 데이터베이스 내에 제 1 시스템이 필요로 하는 정보를 갖지 않을 수도 있다. 몇몇 실시형태들에서, DRM 엔진이 이러한 상황에 직면하는 경우, 이하에서 더욱 상세히 설명되는 바와 같이, 서비스 인터페이스를 통해 및/또는 에이전트 프로그램을 이용함으로써 원격 상태 데이터베이스에 액세스할 수도 있다.
*1.4. 제어 프로그램에 관해
본 명세서에 기술된 시스템들과 방법들은 다양한 상황에서 제어 프로그램을 이용한다. 예를 들어, 제어 오브젝트에 포함된 제어 프로그램은 보호 콘텐츠의 사용을 통제하는 규칙 및 조건을 표현하는데 사용될 수 있다. 또한, 링크 오브젝트의 제어 프로그램은 링크가 소정 목적 (예를 들어, 노드 도달 가능성 분석) 에 대해 유효하지 여부를 결정하기 위해 사용된 규칙들과 조건들을 표현하는데 사용될 수 있다. 이러한 제어 프로그램들은 본 명세서에서 때로 링크 제약으로서 참조된다. 제어 프로그램이 사용될 수 있는 또 다른 정황은 에이전트 또는 대리 오브젝트 내이고, 제어 코드는 (에이전트 제어 프로그램의 경우에서) 다른 엔티티를 대신하거나 (대리 제어 프로그램의 경우에) 다른 제어를 위해 액션을 수행하는데 사용된다.
일 실시형태에서, 제어 프로그램은 물리적 프로세서에 의해 직접 실행되는 것에 대비되는 것과 같이, DRM 엔진에 의해 호스팅된 가상 머신에 의해 실행되거나 해석된다. 그러나, 물리적 프로세서 또는 다른 하드웨어 로직이 제어 프로그램을 실행하도록 쉽게 구성될 수 있음이 이해된다. 일 실시형태에서, 제어 프로그램은 플랫폼 간에 상호 운영 가능성을 촉진하는 바이트-코드 형태이다.
바람직한 실시형태에서, 제어 프로그램은 어셈블리 언어로 기록되고 어셈블러 프로그램에 의해 바이트 코드로 변환된다. 다른 실시형태들에서, 템플릿 및/또는 하이 레벨 저작권 표현 언어 (high-level rights express language) 들은 권리들, 규칙들, 및/또는 조건들의 초기 표현을 제공하는데 사용될 수 있고, 컴파일러는 본 명세서에서 기술된 DRM 엔진의 실시형태에 의해 실행을 위해 하이 레벨 표현을 바이트 코드로 변환하는데 사용될 수 있다. 예를 들어, 독점적 DRM 포맷에 기록된 권리 표현들은 적절한 컴파일러로, 본 명세서에서 기술된 DRM 엔진의 실시형태에서 실행을 위해 기능적으로 동등한 바이트 코드 표현으로 변환되거나 번역되어, 콘텐츠 공급자에 의해 특정된 조건들에 따라, 독점적 DRM 포맷을 이해하는 시스템들뿐만 아니라 본 명세서에서 기술된 것과 같은 DRM 엔진을 포함한 시스템들 상에서 사용될 콘텐츠의 보호된 일부를 사용 가능하게 할 수 있다. 또한, 본 명세서에서 기술된 디지털 권리 관리 엔진 시스템들과 방법들이 바이트 코드 권리표현의 사용에 제한되지 않고, 가상 머신에 의해 해석됨이 이해되어야 한다. 대신, 몇몇 실시형태들에서, 권리는 임의의 적절한 방식 (예를 들어, 하이 레벨 REL (Rights Expression Language), 템플릿, 등) 으로 표현될 수 있고, 본 명세서에서 기술된 증명 그래프 및/또는 다른 기술들은 이러한 권리표현들을 인식하고 평가하도록 설계된 애플리케이션 프로그램을 이용하여 수행될 수 있다.
1.4.1. 조건들
이전에 나타낸 바와 같이, 제어 프로그램은 통상 콘텐츠 피스를 사용하기 위한 요청이 허가되고, 링크가 유효하게 간주되는 등을 위해 만족되어야 하는 하나 이상의 조건들을 표현한다. 임의의 적절한 조건들은 콘텐츠 공급자 또는 시스템 설계자의 요구 사항 및/또는 시스템에 의해 제공된 기능에 기초하여 사용될 수 있다.
바람직한 실시형태에서는, DRM 엔진에 의해 사용된 가상 컴퓨터이 다음의 일부 또는 전부와 같은 조건들에 대해 테스트할 능력이 있는 임의의 복합 프로그램들을 지원한다:
Figure 112012048347665-pat00001
시간-기반 조건들: 클라이언트 시간 값과 제어 프로그램에서 특정된 값들을 비교.
Figure 112012048347665-pat00002
특정 노드 타켓팅: 소정 노드가 다른 노드에서 도달 가능한지 여부를 확인. 이 개념은 도메인, 가입, 멤버쉽, 등과 같은 모듈에 대한 지지를 제공한다.
Figure 112012048347665-pat00003
소정 노드 속성이 특정값과 정합하는지 여부를 테스팅: 예를 들어, 노드와 연관된 디바이스의 렌더링 능력이 충실도 요구사항을 충족하는지 여부와 같은 노드의 속성들 중 어떤 것을 체킹.
Figure 112012048347665-pat00004
클라이언트에서 보안-관련 메타데이터가 최신의 것인지 여부를 테스팅: 예를 들어, 클라이언트가 클라이언트 소프트웨어의 수용 가능한 버전과 시간에 대한 정확한 측정을 가질 수 있는지 여부를 체킹. 어떤 실시형태에서, 이러한 체킹은 예를 들어, 데이터 증명 서비스에서 하나 이상의 증명의 어서션 (assertion) 에 기초할 수도 있다.
Figure 112012048347665-pat00005
상태-기반 조건들: 상태 데이터베이스에서 정보를 체킹. 예를 들어, 상태 데이터베이스는 제어 프로그램의 이전의 실행의 결과로서 생성된 정보, 및/또는 가입의 소유권이나 멤버쉽 등을 증명하는 토큰을 포함하여, 이로써 카운터 (예를 들어, 플레이 횟수, 엑스포트 횟수, 경과 시간 제한 등) 를 수반한 조건들 및 기록된 이벤트들과 조건들에 관한 다른 정보에 대한 평가를 사용 가능하게 할 수도 있다.
Figure 112012048347665-pat00006
환경적 특징들: 예를 들어, 호스트 환경의 하드웨어 및/또는 소프트웨어가 의무를 인식하고 시행하는 능력과 같은 소정 특징을 갖는지 여부를 체킹; 보안 출력 채널과 같은 소정 소프트웨어 또는 하드웨어 요소의 유무 체킹; 다른 디바이스 또는 애플리케이션에 대한 요청 디바이스의 프록시미터와 같은 프록시미터 정보 체킹 네트워크 서비스 및/또는 에이전트들을 이용하여 원격 시스템들의 지표와/이거나 원격 시스템들에 저장된 데이터 체킹 등.
이들 또는 어떤 다른 적절한 조건들을 이용하여, 제어 오브젝트는 어떻게 콘텐츠가 렌더링, 전송, 엑스포트 될 수 있는지를 통제하는 규칙들을 표현할 수 있다. 조건들에 대한 상기 리스트가 사실상 설명적임 것과, 예를 들어, 원하는 조건들에 대한 테스팅 시 사용을 위해 시스템 호출을 구현함으로써 임의의 적절한 조건들을 규정하고 사용할 수 있음이 이해된다. 예를 들어, 제한 없이, 소정 디바이스가 특정 하위-네트워크 상에 위치되는 것을 요구하도록 바라는 경우, 시스템 호출은 호스트 디바이스의 IPConfig 정보 (또는, 원격 디바이스의 IPConfig 정보, 만약 시스템 호출이 에이전트를 이용한 원격 디바이스 상에서 실행 중이었던 경우) 를 리턴하도록 액션 가능할 수 있는 (예를 들어, GetIPConfig) 로 규정될 수 있고, 여기서 IPConfig 정보는 디바이스가 소정 하부-네트워크 상에 위치되었는지 여부에 대해 테스트하도록 제어 프로그램에 의해 사용될 수 있다.
1.4.2. 에이전트
본 명세서에 기술된 DRM 엔진-관련 시스템들 및 방법들의 바람직한 실시형태들은 제어 프로그램을 포함하는 독립 오브젝트들에 대한 지원을 제공한다. 이러한 "에이전트" 는 원격 DRM 엔진의 보안 상태 저장으로 기록하는 것과 같은 특정 기능을 수행하도록 원격 시스템상에서 실행하는 DRM 엔진에 분배될 수 있다. 예를 들어, 에이전트는 원격 서비스를 연락하거나, 원격 제어 프로그램을 실행하는 필연적 결과로서 전송될 수 있다. 또한, 에이전트는 예를 들어, 콘텐츠 이동 액션에 영향을 미치거나, 카운터를 초기화하거나, 노드를 등록 취소하는데 사용될 수 있다. 또 다른 실시예로서, 에이전트는 원격 노드에서 다른 노드로 도달 가능성 분석을 수행하는데 사용될 수 있다. 이러한 에이전트는 예를 들어, 제 1 사용자에 등록된 디바이스가 제 2 사용자에 등록되는 것을 금지한 폴리시을 시행 시에 유용할 수 있다. 제 2 사용자가 등록을 요청한 경우, 에이전트는 제 2 사용자나 그를 위해 액션하는 등록 서비스에 의해 디바이스로 전송되어 디바이스가 제 1 사용자에게 이미 등록되었는지 여부를 결정할 수 있고, 이미 등록된 경우 제 2 사용자의 등록 요청은 거부될 수 있다.
도 7a 및 도 7b 는 일 실시형태에서 에이전트 사용을 도시한다. 도 7a 에 도시된 바와 같이, 2 개의 엔티티 (시스템 A (700) 및 시스템 B (702)) 가 컴퓨터 네트워크 (703) 를 통해 서로와 통신하고 싶어하고, 예를 들어, 보호된 콘텐츠를 엑세싱하거나, 멤버쉽, 등록 상태, 등을 나타내는데 사용될 수 있는 DRM 오브젝트들을 생성하는 소정 액션들에 대한 규칙을 기술하고 시행할 능력이 있는 DRM 시스템을 사용 중임을 가정하자. 몇몇 경우, 규칙(들)은 시스템 A (700) 상에서 평가되나, 시스템 B (702) 의 상태에 의존하는 정보를 요구한다. 그러한 정보는 시스템 A (700) 상에서 그 규칙(들)을 시행하고 있는 DRM 시스템 (704) 에 의해 신뢰될 필요가 있다.
예를 들어, 시스템 A (700) 의 DRM 시스템 (704) 은 시스템 A (700) 에서 시스템 B (702) 로 콘텐츠의 원격 렌더링을 수행하는 규칙을 평가/시행 중에 있을 수 있고, 그 규칙은 시스템 B (702) 가 디바이스들의 소정 그룹의 일부일 경우에만 이러한 액션을 허가하는 것을 가리킬 수도 있고, 여기서 시스템 B (702) 에 대한 액세스 가능한 보안 상태 데이터베이스 (716) 내의 상태 오브젝트 (711) 의 존재에 의해 그 그룹의 멤버쉽을 어서트한다.
이러한 상황을 다루기 위해 바람직한 실시형태에 사용된 방법은 에이전트를 사용한다. 예를 들어, 시스템 A (700) 이 시스템 B (702) 로부터 정보가 필요할 경우, 시스템 A (700) 는 에이전트 (705) 를 준비하고, 일 실시형태에서 에이전트 (705) 는 시스템 A (700) 에서 시스템 B (702) 로 전송되는 제어 프로그램 (예를 들어, DRM 엔진에 의해 실행될 수 있는 일련의 명령들) 이다. 일 실시형태에서, 시스템 A (700) 는 증명된 통신 채널 (710) 을 통해 시스템 B (702) 에 에이전트 코드 (705) 를 전송하여 시스템 A (700) 가 에이전트 (705) 가 정말로 그것이 실행될 시스템 B (702) 상에 있다는 것을 확신할 수 있도록 한다. 또한, 몇몇 실시형태에서, 에이전트 코드 (705) 에 따라, 시스템 A (700) 는 그 작업을 수행하는 에이전트 코드 (705) 에 의해 사용될 수도 있는 하나 이상의 파라미터를 시스템 B (702) 에 전달할 수도 있다.
도 7b 에 도시된 바와 같이, 시스템 B (702) 는 에이전트 (705), 및 임의의 연관된 에이전트 파라미터들을 수신하고, 에이전트 코드 (705) 를 실행한다. 에이전트 (705) 가 시스템 B (702) 상에서 실행되는 경우, 에이전트 (705) 는 시스템 B 의 상태 데이터베이스 (716) 를 액세스하고, 상태 정보 (711) 를 검색하고/검색하거나 그것과 함께 일 이상의 계산을 수행하고, 그리고 시스템 A (700) 에 다시 그 결과 (713) 를 바람직하게 증명된 통신 채널 (710) 을 통해 전송한다. 여기서, 시스템 A (700) 는 그 평가를 계속하는데 필요한 정보를 갖는다.
1.4.3. 링크 제약들 ( Link Constraints )
일 실시형태에서, 콘텐츠 아이템에 대한 소정 액션 (예를 들어, "플레이") 의 수행을 통제하는 규칙들을 나타내는 루틴들 세트는 "액션 제어" 라 불린다. 링크 오브젝트의 유효 제약들을 나타내는 루틴들 세트는 "링크 제약" 이라 불린다. 액션 제어들과 같이, 바람직한 실시형태들에서, 링크 제약들은 조건들의 임의의 적절한 조합을 표현할 수 있다. 또한, 액션 제어들과 같이, 링크 제약들은 서비스 인터페이스 또는 에이전트를 이용하여 국지적 및/또는 원격적으로 평가될 수 있다.
1.4.4. 의무 및 콜백
일 실시형태에서, 승인된 경우의 소정 액션들은 호스트 애플리케이션으로부터 추가적 참여를 요구한다. 의무는 요청되고 있는 콘텐츠 키의 사용 중 또는 사용 후에 호스트 애플리케이션에 의해 수행될 필요가 있는 동작을 나타낸다. 콜백은 요청되고 있는 콘텐츠 키의 사용 중 또는 사용 후에 호스트 애플리케이션에 의해 수행되는데 필요로하는 하나 이상의 제어 프로그램의 루틴들에 대한 호출을 나타낸다. 의무의 실시예들은 제한 없이, 콘텐츠가 렌더링 되고 있으면서 소정 출력 및/또는 제어가 종료되는 요구 사항 (예를 들어, 콘텐츠를 보호 안된 출력에 쓰는 것을 방지하거나 콘텐츠의 어떤 중요한 세그먼트를 통해 급송 (fast-forwarding) 을 방지하는 것); 콘텐츠의 사용과 관한 정보 (예를 들어, 계량 또는 감사 정보 (audit information)) 가 기록되고/기록되거나 원격 사이트 (예를 들어, 클리어링하우스, 서비스 제공자 등) 에 전송되는 요구 사항; 에이전트 프로그램이 국지적 또는 원격적으로 실행되는 요구 사항 등을 포함한다. 콜백의 실시예들은 제한 없이, 어떤 절대 시간에나, 소정 시간 경과 (예를 들어, 콘텐츠 사용의 시간 경과) 후에, 어떤 이벤트 (예를 들어, 시험 콘텐츠-렌더링 기간의 완료) 의 발생 후에, 콘텐츠가 사용이 중지된 때 등에 호스트가 제어 프로그램을 다시 호출하는 요구 사항을 포함한다. 예를 들어, 소정 시간 경과 후에 콜백은 버짓 (budgets), 플레이카운트, 등을 증감하거나 차감하는데 사용되어 (예를 들어, 사용자가 적어도 소정 시간량 동안 콘텐츠 피스를 사용하는 경우 오직 그 사용자에게 버짓을 데빗팅하는 것), 이로써 사용자가 우연히 플레이 버튼을 누르나 즉시 정지 버튼을 누른 경우 사용자가 그의 데빗팅된 계정을 보호할 수 있다.
일 실시형태에서는 다른 형식의 의무과 콜백이 있고, 애플리케이션이 그러한 형식을 지원하지 않는 임의의 중요한 의무가나 콜백과 조우하거나, (예를 들어, 애플리케이션이 실시된 후 의무 형식이 정의되었기 때문에) 이해하지 못하는 경우, 애플리케이션은 이 의무가나 콜백 파라미터가 리턴되는 액션이 계속되는 것을 거부하도록 요구된다.
1.4.5. 실시예
도 8 내지 도 12 는 어떻게 DRM엔진의 설명적인 일 실시형태가 콘텐츠 피스의 사용을 제어할 수 있는 지의 실시예를 나타낸다. 도 8 을 참조하면, DRM 엔진이 콘텐츠 아이템 (802 및 804) 의 그룹 (800) 을 플레이하기 위한 요청을 수신한 것으로 가정하자. 예를 들어, 콘텐츠 아이템 (802 및 804) 은 멀티미디어 프리젠테이션의 다른 하위-부분들이나, 앨범의 다른 트랙들, 가입 서비스로부터 얻은 콘텐츠의 다른 피스들, 이메일 첨부물들 등을 포함할 수도 있다. 그 요청은 호스트 애플리케이션에서 DRM 엔진에 의해 수신되고, 이후 호스트 애플리케이션이 실행되고 있던 중에 계산 디바이스의 사용자로부터 호스트 애프리케이션은 그 요청을 수신하였을 수도 있다. 호스트 애플리케이션으로부터 요청은 통상 요청된 액션, 그 액션이 취해져야 되는 콘텐츠 피스 또는 피스들, 및 콘텐츠를 통제하는 라이센스(들)를 식별한다. DRM 엔진은 그 요청이 승인되어야 하는지 여부를 결정하기 위해서 도 5 에 기술된 프로세스를 따른다.
도 8 및 도 9 는 도 5 에 도시된 프로세스의 더욱 상세한 비-제한 실시예를 제공한다. 도 9 를 참조하면, 콘텐츠 아이템 (802 및 804) 을 액세스하기 위한 요청을 수신한 경우 (블록 900), DRM 엔진은 유효 라이센스가 존재하는지 여부를 확인하기 위해 요청에서 그렇지 않으면 그것의 점유 (possession) 에서 식별된 라이센스(들)을 검사한다. 예를 들어, DRM 엔진은 콘텐츠 아이템 (802 및 804) 의 고유한 식별자들 (즉, 각각 NS:007 및 NS:008) 을 포함하는 보호기 오브젝트 (806 및 808) 를 우선 식별할 수도 있다 (도 9 의 블록 902). 다음으로, DRM 엔진은 보호기 오브젝트 (806 및 808) 에서 식별된 콘텐츠 키 오브젝트 (810 및 812) 의 위치를 파악하고 (도 9 의 블록 904), 이것은 이후 DRM 엔진으로 하여금 콘텐츠 키 오브젝트 (810 및 812) 둘 다를 참조하는 제어기 (814) 를 식별하게 한다 (도 9 의 블록 906). 바람직한 실시형태에서, 제어기 (814) 는 서명되고, DRM 엔진은 그 서명을 검증 (또는 그 서명을 검증토록 호스트 서비스에 요구) 한다. DRM 엔진은 제어기 (814) 를 사용하여 콘텐츠 키 오브젝트 (810 및 812) 의 사용을 통제하는 제어 오브젝트 (816) (그리고, 따라서 콘텐츠 아이템 (802 및 804)) 를 식별한다 (도 9 의 블록 908). 바람직한 실시형태에서, DRM 엔진은 (예를 들어, 제어 오브젝트 (816) 의 다이제스트를 계산하고 그것을 제어기 (814) 내에 포함된 다이제스트와 비교함으로써) 제어 오브젝트 (816) 의 무결성을 검증한다. 무결성 검증이 성공한 경우, DRM 엔진은 제어 오브젝트 (816) 내에 포함된 제어 코드를 실행하고 (블록 910), 호스트 애플리케이션에 그 결과를 리턴하며 (블록 912), 여기서 호스트 애플리케이션은 그 콘텐츠를 액세스하기 위한 사용자의 요청을 승인 또는 거부하는데 그 결과를 사용한다. 또한, 제어 코드의 결과는 호스트 애플리케이션이 수행하는데 필요한 하나 이상의 의무가나 콜백을 부가적으로 식별한다.
도 10 은 어떻게 DRM 엔진이 도 9 의 블록 (910 및 912) 에 특정된 액션들 (즉, 제어 프로그램을 실행하고 그 결과를 리턴하는 것) 을 수행할 수 있는지의 더욱 상세한 실시예이다. 도10 에서 도시된 바와 같이, 관련 제어 오브젝트를 식별하는 경우, DRM 엔진은 바람직하게 DRM 엔진에 의해 호스팅되는 가상 컴퓨터으로 제어 오브젝트에 포함된 바이트 코드를 로딩한다 (블록 1000). 또한, DRM 엔진 및/또는 가상 머신은 통상적으로 가상 머신의 런타임 환경을 초기화한다 (블록 1002). 예를 들어, 가상 머신은 제어 프로그램의 실행을 위해 필요로되는 메모리를 할당, 레지스터 및 다른 환경 변수들을 초기화하고/초기화하거나 (예를 들어, 이하에 기술되는 바와 같이, System.Host.GetObject 호출을 행함으로써) 가상 머신이 액션 중의 호스트 환경에 대한 정보를 획득한다. 몇몇 실시형태들에서 블록 (1000 및 1002) 은 효과적으로 조합되거나 인터리빙될 수 있거나, 인터리빙되거나 조합될 수 있다. 도 10 에 도시된 바와 같이, 가상 머신은 다음으로 제어 프로그램의 바이트 코드를 실행한다 (블록 1004). 본 명세서의 다른 곳에서 기술되는 바와 같이, 이것은 다른 가상 머신 코드에 호출을 행하는 것이나, 보안 기억장치에서 상태 정보를 검색하는 것 등을 수반할 수도 있다. 제어 프로그램이 실행 완료된 경우, 예를 들어, 요청이 승인되었는지 여부, 그리고 만약 그렇다면, 어떤 의무 또는 콜백이 그것과 함께 연관되는지 여부; 요청이 거부되었는지 여부, 그리고 만약 그렇다면, 거부에 대한 이유; 또는 실행 중 어떤 에러들이 발생하였는지 여부를 결정하도록 호출 애플리케이션에 의해 사용될 수도 있는 출력 (예를 들어, 바람직한 실시형태에서, ExtendedStatusBlock) 을 제공한다 (블록 1006).
이미 지적한 바와 같이, 제어 오브젝트 (816) 의 제어 코드는 콘텐츠 아이템 (802 및 804) 의 요청된 사용을 행하기 위해 만족되어야 하는 조건들 또는 다른 요구 사항들을 식별한다. 본 명세서에서 기술된 시스템들 및 방법들은 임의의 복잡한 조건들 세트의 사양을 가능하게 하나; 그러나 본 실시예의 목적을 위해, 콘텐츠 아이템 (802 및 804) 을 플레이기 위하여 (a) 소정 사용자의 노드가 콘텐츠를 플레이하기 위한 요청이 행해지는 디바이스에서 도달 가능해야하고, (b) 현재 데이터가 식별된 데이터 이후이어야 할 것을 요구하도록 제어 프로그램이 설계되는 것으로 가정하자.
도 11 은 디바이스 (1102) 상에서 실행하는 DRM 엔진 (1100) 의 설명적 실시형태가 위에서 기술된 예시 제어 프로그램을 어떻게 실행할 수도 있는지를 도시하고, 도 12 는 실행 프로그램에 수반된 단계들의 흐름도이다. 도 11 에 도시된 바와 같이, DRM 엔진 (1100) 은 (예를 들어, System.Host.SpawnVm 을 호출함으로써) 가상 머신 실행 콘텍스트를 생성하고 제어 프로그램을 로딩한다. 가상 머신 (1104) 은 DRM 엔진 (1100) 에 의해 특정된 진입 시점 (예를 들어, Control.Actions.Play.perform 루틴의 위치에서) 에서 제어 프로그램의 실행을 시작한다. 본 실시예에서, 제어 프로그램은 DRM 엔진 (1100) 이 실행 중인 디바이스 (1102) 의 퍼스널리티 노드 (personality node) 에서 소정 노드가 도달 가능한지 여부를 결정하는데 필요하다. 본 결정을 행하기 위하여, 제어 프로그램은 연계가 요구되는 노드를 특정하는, DRM 엔진 (1100) 에 의해 제공된 링크 관리자 서비스 (1106) 에 대한 호출 (1105) 을 행한다 (도 12 의 블록 1200). 링크 관리자 (1106) 는 일 노드가 다른 노드로부터 도달 가능한지 여부를 결정하기 위해 링크 오브젝트를 평가할 책임이 있다. 이것을 효과적으로 행하기 위해, 링크 관리자 (1106) 는 디바이스 (1102) 의 퍼스널리티 노드 (1110) 에서 디바이스 (1102) 가 보유하는 임의의 링크 오브젝트들에 특정된 다양한 노드들 (1114) 까지의 경로가 존재하는지 여부를 미리-계산할 수도 있다. 즉, 링크 관리자 (1106) 는 단순히 액세스처럼 링크의 "to" 및 "from" 필드들을 확인함으로써, 디바이스 (1102) 의 퍼스널리티 노드 (1110) 에서 노드들이 잠재적으로 도달 가능한지 여부를 결정할 수도 있다. 링크 관리자 (1106) 가 가상 머신 (1104) 에서 호출을 수신하는 경우, (예를 들어, 이미 이론적으로 도달 가능하는 것으로 결정되는 노드들의 리스트 내에 그 노드의 ID 를 확인함으로써) 퍼스널리티 노드 (1110) 에서 식별된 노드 (1112) 까지의 경로가 존재하는지 여부를 우선 결정하여 식별된 노드 (1112) 가 도달 가능한지 여부를 결정한다 (도 12 의 블록 1202). 경로가 존재하는 경우, 링크 관리자 (1106) 는 그 링크들이 유효한지 여부를 확인하기 위하여 링크들에 포함된 임의의 제어 프로그램들을 평가한다 (도 12 의 블록 1204 내지 1210). 그 링크 오브젝트의 제어 프로그램들을 평가하기 위하여 (도 12 의 블록 1206), 링크 관리자 (1106) 는 링크 오브젝트들에 포함된 제어 프로그램들을 실행하는, 그 자신의 가상 머신 (1108) 을 이용할 수도 있다. 링크 관리자 (1106) 는 그 결정 (즉, 소정 노드가 도달 가능한지 여부) 의 결과를 가상 머신 (1104) 에서 실행 중인 제어 프로그램에 리턴하고, 여기서 제어 프로그램은 콘텐츠 피스를 플레이하기 위한 요청이 승인되는지 여부의 전체 평가에서 사용된다. 특정된 노드 (1112) 가 디바이스 (1102) 의 퍼스널리티 노드 (1110) 에서 도달가능함을 결정하는 경우, 가상 머신 (1104) 에서 실행하는 제어 프로그램은 다음으로 그 특정된 데이터 제약이 충족되는지 여부를 결정한다 (도 12 의 블록 1212). 데이터 제약이 충족되었으면 (즉, 블록 1212 에서 "예" 로 분기), 제어 프로그램은 특정된 조건들이 충족되었음을 나타내는 결과를 리턴하고 (도 12 의 블록 1214); 그렇지 않으면, 제어 프로그램은 특정된 조건들이 만족되지 않았음을 나타내는 결과를 리턴한다 (도 12 의 블록 1216).
이하에서는 상기에서 기술된 것과 같은 제어 프로그램의 일 실시예를 도시한다:
Figure 112012048347665-pat00007
Figure 112012048347665-pat00008
Figure 112012048347665-pat00009
Figure 112012048347665-pat00010
제어 프로그램의 추가적 실시예는 부록 E 에 포함된다.
3. 콘텐츠 소비 및 패키징 애플리케이션들
다음은 DRM-보호된 콘텐츠 (예를 들어, 도 3 의 애플리케이션 (303a, 303c, 및 303d) 와 같은 미디어 플레이어, 워드 프로세서, 이메일 클라이언트 등) 를 소비하는 애플리케이션과, 소비 애플리케이션에 타겟된 콘텐츠를 패키징하는, 애플리케이션 (303b) 와 같은 패키징 애플리케이션의 설명적 실시형태들의 더욱 상세한 설명이다.
1.5. 콘텐츠-소비 애플리케이션 아키텍쳐
콘텐츠-소비 애플리케이션은 통상 보호된 콘텐츠를 액세싱하는데 초점을 맞추거나, 패키징 콘텐츠와 같은 다른 함수를 또한 수행하는 범용 애플리케이션의 일부일 수 있다. 다양한 실시형태들에서, 콘텐츠-소비 애플리케이션은 다음의 일부 또는 전부를 수행할 수도 있다:
Figure 112012048347665-pat00011
사용자가 보호된 콘텐츠 오브젝트에 액세스를 요청하고 그 콘텐츠에 대한 정보나 에러 정보를 수신할 수 있는 인터페이스를 제공;
Figure 112012048347665-pat00012
파일 시스템과의 상호 작용을 관리;
Figure 112012048347665-pat00013
보호된 콘텐츠 오브젝트들의 포맷을 인식;
Figure 112012048347665-pat00014
콘텐츠를 액세스하기 위한 허락이 승인될 수 있는지 여부를 확인하기 위해 콘텐츠 피스들에 대한 라이센스를 평가하도록 DRM 엔진에 요청;
Figure 112012048347665-pat00015
디지털 서명들을 검증하고 수행될 DRM 엔진이 필요한 다른 범용 암호 함수를 다룸;
Figure 112012048347665-pat00016
DRM 엔진에 보호된 콘텐츠를 복호화하는데 필요로되는 키들을 제공하도록 요청; 및/또는
Figure 112012048347665-pat00017
보호된 콘텐츠를 복호화하고 콘텐츠를 렌더링하기 위한 미디어 렌더링 서비스와 상호 작용.
일 실시형태에서, DRM 클라이언트 엔진은 콘텐츠와 연관된 라이센스를 평가하고, 콘텐츠를 사용하는 허가를 확인 또는 거부하며, 콘텐츠-소비 애플리케이션에 대한 복호화 키들을 제공한다. 또한, DRM 클라언트 엔진은 콘텐츠에 대한 액세스를 부여 받았던 결과로서 소정 액션들을 수행하도록 애플리케이션에 요구하는, 콘텐츠-소비 애플리케이션에 대한 하나 이상의 의무들 및/또는 콜백을 발행 (issue) 할 수도 있다.
도 13 은 일 실시형태에서 콘텐츠-소비 애플리케이션 (1300) 을 구성하는 요소들을 도시한다. 도 13 에 도시된 바와 같이, 호스트 애플리케이션 (1302) 은 클라이언트의 논리 중심점이다. 호스트 애플리케이션 (1302) 은 서로 다른 모듈들 간에 상호 작용 패턴뿐만 아니라 사용자 인터페이스 (1304) 를 통하여 사용자와의 상호 작용을 구동하는 것을 담당한다. 호스트 애플리케이션 (1302) 은 호스트 서비스 인터페이스 (1308) 를 통하여 DRM 엔진 (1306) 에 서비스들 세트를 제공한다. 호스트 서비스 인터페이스 (1308) 는 DRM 엔진 (1306) 으로 하여금 호스트 애플리케이션 (1302) 에 의해 관리된 데이터뿐만 아니라 호스트 애플리케이션 (1302) 에 의해 구현된 소정 라이버리 함수들에 대한 액세스를 얻도록 허여한다. 일 실시형태에서, 호스트 서비스 인터페이스 (1308) 는 DRM 엔진 (1306) 에 대한 유일한 아웃바운드 인터페이스이다.
일 실시형태에서, DRM 엔진 (1306) 은 호스트 애플리케이션 (1302) 에 의해 관리된 멀티미디어 콘텐츠와 직접 상호 작용하지 않는다. 호스트 애플리케이션 (1302) 은 멀티미디어 콘텐츠를 액세싱하기 위해 콘텐츠 서비스들 (1310) 과 논리적으로 상호 작용하고, 엔진에 의해 처리되어야 하는 데이터 부분만을 DRM 엔진 (1306) 으로 전한다. 콘텐츠와 다른 상호 작용들은 미디어 렌더링 엔진 (1312) 에 의해 수행된다. 예를 들어, 일 실시형태에서, 콘텐츠 서비스들 (1310) 은 미디어 서버들로부터 콘텐츠를 획득하고, 클라이언트의 영구적 기억장치의 콘텐츠를 저장 및 관리하는 책임이 있으며, 미디어 렌더링 엔진 (1312) 은 멀티미디어 콘텐츠를 액세스하고 그것을 (예를 들어, 비디오 및/또는 오디오 출력에) 렌더링하는 책임이 있는 하위 시스템이다. 일 실시형태에서, 미디어 렌더링 엔진 (1312) 은 DRM 엔진 (1306) 에서 몇몇 정보 (예를 들어, 콘텐츠 복호화 키들) 를 수신하나, 일 실시형태에서 DRM 엔진 (1306) 은 미디어 렌더링 엔진 (1312) 와 직접 상호 작용하지 않고, 오히려 호스트 애플리케이션을 통해서 상호 작용한다.
DRM 엔진 (1306) 에 의해 필요로되는 몇몇 정보는 멀티미디어 콘텐츠와 획득 가능한 인-밴드 (in-band) 이고, 콘텐츠 서비스들 (1310) 을 통해 획득 및 관리될 수 있으나, 몇몇 본 정보는 개인화 (personalization) 서비스나 멤버쉽 서비스 (미도시) 와 같은 다른 서비스들의 수단을 통해 얻게 될 필요가 있을 수도 있다.
도 13 에 도시된 실시형태에서, 암호 작업들 (예를 들어, 암호화, 서명 검증 등) 은 암호 서비스 (crypto services) 블록 1314 에 의해 처리된다. 일 실시형태에서, DRM 엔진 (1306) 은 암호 서비스 블록 (1314) 와 직접 상호 작용하지 않으나, 대신 그 요청들을 전달하는 (호스트 서비스 인터페이스 (1308) 를 이용한) 호스트 (1302) 를 통하여 간접적으로 상호 작용한다. 또한, 암호 서비스 (1314) 는 콘텐츠 복호화를 수행하기 위하여 예를 들어, 미디어 렌더링 엔진 (1312) 에 의해 사용될 수도 있다.
도 13 이 설명을 위한 목적으로 제공됨과, 다른 실시형태들에서 도 13 에 도시된 다양한 요소들이 재배치, 합병, 분리, 제거되고/제거되거나 새로운 요소들이 추가될 수 있음이 이해된다. 예를 들어, 제한 없이, 도 13 의 DRM 엔진과 호스트 애플리케이션간의 기능의 논리적 분할은 단순히 하나의 가능한 실시형태의 설명이고, 실제 실시 변화들을 행할 수 있다. 예를 들어, DRM 엔진은 호스트 애플리케이션과 전부 또는 부분적으로 병합될 수 있다. 따라서, DRM 엔진과 호스트 애플리케이션간의 기능의 임의의 적합한 분할은 사용될 수 있음이 이해된다.
1.6. 패키저 아키텍쳐
다음은 전자 콘텐츠를 패키징하는 호스트 애플리케이션에 대해 패키징 엔진이 수행할 수도 있는 기능들의 실시예를 제공한다. 실제, 패키징 애플리케이션은 특히 패키징에 집중할 수도 있거나, (국지적 또는 예를 들어 네트워크 상인 다른 곳에서 패키징되는) 보호된 콘텐츠에 또한 액세스하는, 사용자 시스템에서 운용하는 범용 애플리케이션의 일부일 수 있다.
다양한 실시형태들에서, 패키징 호스트 애플리케이션은 다음의 일부 또는 전부를 수행할 수도 있다:
Figure 112012048347665-pat00018
콘텐츠 및 라이센스 정보는 특정될 수 있는 사용자 인터페이스를 제공;
Figure 112012048347665-pat00019
콘텐츠 암호화;
Figure 112012048347665-pat00020
라이센스를 이루는 DRM 오브젝트를 생성; 및/또는
Figure 112012048347665-pat00021
콘텐츠를 포함하거나 참조하고 라이센스를 포함하거나 참조하는 콘텐츠 오브젝트를 생성.
도 14 는 일 실시형태에서 패키징 애플리케이션 (1400) 을 이루는 요소들을 도시한다. DRM 패키지 엔진 (1416) 은 본 명세서에서 기술된 그것들과 같은 라이센스들 (예를 들어, 제어, 제어기, 보호기 등과 같은 DRM 오브젝트들을 포함한 라이센스들) 을 패키징하는 책임이 있다. 또한, 몇몇 실시형태들에서, DRM 패키징 엔진 (1416) 은 인간-판독 가능 형태에서 라이센스가 하는 것을 설명하도록 메타데이타를 라이센스와 연관시킬 수도 있다.
일 실시형태에서, 호스트 애플리케이션 (1402) 는 사용자 인터페이스 (1404) 를 제공하고, 사용자 (통상 콘텐츠 소유자 또는 공급자) 가 수행하기 원하는 콘텐츠 참조들 및 액션(들)과 같은 정보 (예를 들어, 콘텐츠를 누구에게 바인딩시킬 것인가, 라이센스 내에는 어떤 콘텐츠-사용 조건들을 포함할 것인가 등) 를 얻기 위한 책임이 있다. 또한, 사용자 인터페이스 (1404) 는 발행된 라이센스의 텍스트와 같은, 패키징 프로세스에 대한 정보를 표시하고, 실패할 경우 실패 이유를 표시할 수 있다. 몇몇 실시형태에서, 호스트 애플리케이션 (1402) 에 의해 필요로되는 몇몇 정보는 SAP (Service Access Point) 을 통해 증명 또는 증명 서비스, 및/또는 멤버쉽과 같은 다른 서비스들의 사용을 요구할 수도 있다. 따라서, 몇몇 실시형태들에서, 패키징 애플리케이션 (1400) 및/또는 호스트 애플리케이션 (1402) 는 다음의 일부 또는 전부를 구현할 필요가 있을 수도 있다:
Figure 112012048347665-pat00022
미디어 포맷 서비스 (1406): 일 실시형태에서, 본 요소는 트랜스코딩 (transcoding) 이나 패키징과 같은 미디어 포맷 작업들을 관리할 책임이 있다. 이것은 콘텐츠 암호화 서비스 모듈 (1408) 을 통해 달성되는 콘텐츠 암호화에 대한 책임도 있다.
Figure 112012048347665-pat00023
범용 암호 서비스들 (14010): 일 실시형태에서, 본 요소는 서명을 발행/검증뿐만 아니라 몇몇 데이터를 암호화/복호화할 책임이 있다. 이러한 작업들을 위한 요청들은 호스트 서비스 인터페이스 (1412) 를 통해 DRM 패키징 엔진 (1416) 에 의해서나 서비스 액세스 포인트 (1414) 에 의해 내려질 수 있다.
Figure 112012048347665-pat00024
콘텐츠 암호화 서비스 (1408): 일 실시형태에서, 본 모듈은 애플리케이션에 대해 알지 못하기 때문에 범용 암호 서비스들 (1410) 로부터 논리적으로 분리된다. 본 모듈은 DRM 패키징 엔진 (1416) 에 의해 이미 내려진 키들 세트를 가지고 콘텐츠 패키징 시간에서 미디어 포맷 서비스들에 의해 구동된다.
4. 키 도출
다음은 본 명세서에서 기술된 DRM 엔진과 시스템 구조의 바람직한 실시형태들로 자연히 적합하고/적합하거나 다른 상황에 사용될 수 있는 키 도출 시스템을 기술한다. 다음 섹션의 몇몇 실시예들은 "Scuba" 라 알려진 본 키 도출 시스템의 바람직한 실시형태의 참조 실시에서 취해진다. 추가 실시형태들은 '551 출원에서 기술된다.
도 15 에서 도시된 바와 같이, 몇몇 실시형태들에서, 링크 오브젝트들 (1530a 및 1530b) 는 노드들 (1500a, 1500b 및 1500c) 간의 관계를 확립하는 주된 목적에 더하여 키들을 분배하는데 사용된다. 상기 기술된 바와 같이, 제어 오브젝트는 액션을 수행하기 위한 요청이 승인 또는 거부되어야 하는지 여부를 결정하는데 사용될 수 있는 제어 프로그램을 포함할 수 있다. 이를 행하기 위하여, 제어 프로그램은 링크들의 체인을 통하여 특정 노드가 도달 가능하지 여부를 확인할 수도 있다. 본 명세서에 기술된 키 도출 기술은 키의 분배를 촉진하기 위하여 링크들의 체인의 존재를 이용하여 키가 제어 프로그램을 실행하고 있는 DRM 엔진에 이용 가능하게 만들 수 있다.
일 설명적 실시형태에서, 부가 키 분배 시스템을 사용하는 소정 발행에서 각 노드 오브젝트 (1500a, 1500b 및 1500c) 는 콘텐츠 키들 및 다른 노드들의 키들을 암호화하는데 사용하는 키들 세트를 갖는다. 동일 발행에서 사용되기 위해 생성된 링크 오브젝트들 (1530a 및 1530b) 은 링크들의 체인이 DRM 엔진에 의해 처리되는 경우 키 정보로 하여금 도출되는 것을 허용하는 페이로드 (payload) 로서 몇몇 암호 데이터를 포함한다.
본 방식의 키들을 가지는 노드들과 링크들의 경우, 노드 A (1500a) 에서 노드 C (1500c) 까지 링크들의 체인 (1530a 또는 1530b) 이 주어지면, 엔티티 (예를 들어, 클라이언트 호스트 애플리케이션의 DRM 엔진) 는 노드 A 의 비밀 공유 키들 (1515a 및 1525a) 에 대한 액세스를 갖고, 또한 노드 C 의 비밀 공유 키들 (1515c 및 1525c) 에 대한 액세스를 갖는다. 노드 C 의 비밀 공유 키들을 갖는 것은 이들 키들로 암호화된 임의의 콘텐츠 키에 대한 액세스를 그 엔티티에게 준다.
1.7. 노드들, 엔티티들, 및 키들
1.7.1. 엔티티들
DRM 시스템의 일 실시형태에서, 노드들은 시스템의 활성 참가자들이 아니라 데이터 오브젝트들이다. 본 명세서에서, 활성 참가자들은 엔티티들이라 불린다. 엔티티들의 실시예들은 미디어 플레이어들, 디바이스들, 가입 서비스, 콘텐츠 패키저들 등이다. 통상, 엔티티들은 그들과 연관된 노드들을 갖는다. 콘텐츠를 소비하는 엔티티는 DRM 엔진을 사용하고, 그 퍼스널리티를 구성하는 적어도 하나의 노드 오브젝트를 관리한다. 일 실시형태에서, 엔티티는 관리하는 노드 오브젝트들의 모든 데이터 (모든 개인 정보를 포함) 에 대한 액세스를 갖도록 가정된다.
1.7.2. 노드들
키 도출 시스템의 설명적 실시형태에서 참가하는 노드 오브젝트들은 그들 데이터의 일부로서 키들을 포함한다. 일 실시형태에서, 노드들은 키들의 2 개의 일반적 형식들을 포함할 수도 있다: 공유 키들과 기밀성 키들. 다음 섹센들은 다양한 실시형태들에서 사용될 수 있는 상이한 키 형식들을 열거한다. 그러나, 특정 배치가 이들 키들의 하위 세트만을 사용할 수도 있음이 이해된다. 예를 들어, 시스템은 비밀 대칭 키들의 사용을 생략한, 키 쌍으로만 액션하도록 구성될 수 있다. 즉, 시스템은 공유 키들을 사용하도록 오직 필요한 경우 기밀성 키들을 갖는 노드들을 제공함 없이 배치될 수 있다.
1.7.2.1. 공유 키들
공유 키들은 노드 N 과 모든 노드들 Px 에 의해 공유되는 대칭 키들 및/또는 공개/개인 키 쌍이고, 여기서 키 도출 확장을 포함한 Px 에서 N 까지의 링크가 존재한다.
공유 공개 키: Kpub - share [N] 이것은 공개 키 암호에 대한 공개/개인 키들의 쌍에 대한 공개 부분이다. 통상 본 키는 그 내에 기밀성 정보를 암호 표기법으로 바인딩하기 원하는 엔티티에 의해 자격 증명이 검증될 수 있도록 증명서와 함께 온다.
공유 개인 키: Kpriv - share [N] 이것은 공개/개인 키 쌍의 개인 부분이다. 노드를 관리하는 엔티티는 본 개인키가 비밀로 유지되는 것을 보증할 책임이 있다. 그러한 이유로, 본 개인 키는 일반적으로 노드 정보의 나머지와 분리하여 저장되고 수송될 것이다. 본 개인 키는 링크들의 키 도출 확장들을 통해 다른 노드들과 다운스트림에서 공유될 수 있다.
공유 대칭 키: Ks - share [N] 이것은 대칭 암호로 사용되는 키이다. 개인 키의 경우처럼, 본 키는 기밀하고, 노드를 관리하는 엔티티는 본 키를 비밀로 유지할 책임이 있다. 본 비밀 키는 링크들의 키 도출 확장들을 통해 다른 노드들과 다운스트림에서 공유될 수 있다.
1.7.2.2. 기밀성 키들
기밀성 키들은 그들이 속한 노드를 관리하는 엔티티에 오직 알려지는 대칭 키들 및/또는 키 쌍이다. 이들 키들과 상기 기술된 공유 키들 간의 차이는 기밀성 키들이 링크들의 키 도출 확장들을 통해 다른 노드들과 공유되지 않을 것이다.
기밀성 공개 키: Kpub - conf [N] 이것은 공개 키 암호를 위한 공개/개인 키들의 쌍에 대한 공개 부분이다. 통상 본 키는 그 내에 기밀성 정보를 암호 표기법으로 바인딩하기 원하는 엔티티들에 의해 자격 증명이 검증될 수 있도록 증명서와 함께 온다.
기밀성 개인 키: Kpriv - conf [N] 이것은 공개/개인 키 쌍의 개인 부분이다. 노드를 관리하는 엔티티는 본 개인키가 비밀로 유지되는 것을 보증할 책임이 있다. 그러한 이유로, 본 개인 키는 일반적으로 노드 정보의 나머지와 분리하여 저장되고 수송될 것이다.
기밀성 대칭 키: Ks - conf [N] 이것은 대칭 암호로 사용되는 키이다. 기밀성 개인 키의 경우처럼, 본 키는 비밀이 유지된다.
1.8. 암호 요소들
본 명세서에 기술된 키 도출 및 분배 시스템의 바람직한 실시형태들은 다양한 다른 암호 알고리즘들을 이용하여 구현될 수 있고, 임의의 특정 선택의 암호 알고리즘에 제한되지 않는다. 그럼에도 불구하고, 주어진 배치 또는 프로파일에 대해, 모든 참가한 엔티티들은 일반적으로 지원된 알고리즘들의 세트에 대해 동의할 필요가 있다 (여기서 용어 프로파일은 오브젝트들이 실제 배치에서 정의될 때 존재하는 시멘틱 콘텍스트 (semantic context) 의 다른 표현 및/또는 특정 실시에서 사용된 실제 기술들 (예를 들어, 키 도출용 RSA; 오브젝트들을 인코딩용 XML; 파일 포맷용 MP4 등) 의 세트의 사양으로 언급된다).
일 실시형태에서, 배치들은 적어도 하나의 공개 키 암호 (예를 들어 RSA) 및 하나의 대칭 키 암호 (예를 들어, AES) 에 대한 지원을 포함한다.
다음 표기는 암호 함수들이 참조되는 경우 사용될 것이다:
Figure 112012048347665-pat00025
Ep ( Kpub [N], M) 는 "공개 키 암호를 이용하여 노드 N 의 공개 키 Kpub 로 암호화된 메시지 M" 을 의미
Figure 112012048347665-pat00026
Dp ( Kpriv [N], M) 는 "공개 키 암호를 이용하여 노드 N 의 개인 키 Kpriv 로 복호화된 메시지 M" 을 의미
Figure 112012048347665-pat00027
Es ( Ks [N], M) 는 "대칭 키" 암호를 이용하여 노드 N 의 대칭 키 Ks 로 암호화된 메시지 M" 을 의미
Figure 112012048347665-pat00028
Ds ( Ks [N], M) 는 "대칭 키 암호를 이용하여 노드 N 의 대칭 키 Ks 로 복호화된 메시지 M" 을 의미
1.9. 콘텐츠 키들의 타겟팅 ( Targeting )
바람직한 실시형태에서는, 암호 타겟팅의 2 개 형식이 사용된다. 콘텐츠 키를 타겟 노드의 공개 키들로 타겟팅하는 것은 그 타겟 노드의 비밀 공유 키들을 공유하는 모든 엔티티들에 이용 가능한 키를 만드는 것을 의미한다. 콘텐츠 키들을 노드의 기밀성 키들로 타겟팅하는 것은 그 노드를 관리하는 엔티티에만 이용 가능한 키를 만드는 것을 의미한다. 콘텐츠 키의 타겟팅은 다음의 방법들 중 하나 또는 둘 다를 이용하여 콘텐츠 키 오브젝트에 보유된 콘텐츠 키, CK 를 암호화함으로써 완료된다:
Figure 112012048347665-pat00029
공개 바인딩: Ep(Kpub[N], CK) 를 포함하는 콘텐츠키 오브젝트를 생성
Figure 112012048347665-pat00030
대칭 바인딩: Es(Ks[N], CK) 를 포함하는 콘텐츠키 오브젝트를 생성
바람직한 실시형태에서, 대칭 바인딩은 가능한 보다 덜 계산 집중적인 알고리즘을 수반함에 따라 사용되어, 따라서 수신 엔티티에 대해 덜 귀찮게 만든다. 그러나, 콘텐츠키 오브젝트를 생성하는 엔티티 (통상, 콘텐츠 패키저) 는 언제나 Ks[N] 에 대한 액세스를 갖지 않을 수도 있다. 패키저가 Ks[N] 을 갖지 않는다면, 공개 바인딩을 사용할 수 있고, Kpub[N] 가 비밀 정보가 아니기 때문에, 따라서 공개 바인딩을 행할 필요가 있는 엔티티들에게 이용 가능하게 만들어질 수 있다. Kpub[N] 은 몇몇 동의된 폴리시에 따라 콘텐츠 키를 다루도록 신뢰될 수 있는 노드 (예를 들어, 노드가 시스템의 기능성, 액션성, 및 보안성 폴리시들을 준수하는 호스트 애플리케이션과 DRM 엔진을 실행하는 엔티티에 대응하는 것인) 의 키로 간주되는지 여부를 결정하도록 엔티티에 의해 조사될 수 있는 증명을 참조하여 일반적으로 콘텐츠 키들을 타겟팅할 필요가 있는 엔티티들에게 이용 가능하게 만들질 것이다.
1.10. 링크들을 이용한 키들의 도출
엔티티로 하여금 그 퍼스널리티 노드에서 도달 가능한 모든 노드들의 공유 키들에 대한 액세스를 갖도록 허여하기 위하여, 일 실시형태에서 링크 오브젝트들은 부가 키 확장 페이로드를 포함한다. 본 키 확장 페이로드는 링크의 "from" 노드의 개인/비밀 키들에 대한 액세스를 갖는 엔티티들로 하여금 링크의 "to" 노드의 개인/비밀 공유 키들에 대한 액세스를 또한 갖도록 허여한다. 본 방식에서, 엔티티는 (타겟팅이 타겟 노드의 공유 키들을 이용하여 완료된 경우) 그 퍼스널리티 노드에서 도달 가능한 노드에 타겟팅된 임의의 콘텐츠 키를 복호화할 수 있다.
일 실시형태에서, DRM 엔진은 링크 오브젝트들을 처리하는 경우, DRM 엔진은 액세스를 갖는 키들의 내부 체인을 갱신하도록 각 링크의 키 확장 페이로드를 처리한다. 일 실시형태에서, 노드 F 에서 노드 T 까지의 링크 T 의 키 확장 페이로드는 다음의 둘 중의 하나를 포함한다:
Figure 112012048347665-pat00031
공개 도출 정보: Ep(Kpub-share[F], {Ks-share[T],Kpriv-share[T]})
또는
Figure 112012048347665-pat00032
대칭 도출 정보: Es(Ks-share[F], {Ks-share[T],Kpriv-share[T]})
여기서 {Ks-share[T], Kpriv-share[T]} 는 Ks-share[T] 및 Kpriv-share[T] 를 포함하는 데이터 구조이다.
공개 도출 정보는 노드 T 의 비밀 공유 키들, Ks-share[T] 및 Kpriv-share[T] 를 노드 F 의 개인 공유 키, Kpriv-share[F] 에 대한 액세스를 갖는 임의의 엔티티에 전하도록 사용된다.
대칭 도출 정보는 노드 T 의 비밀 공유 키들, Ks-share[T] 및 Kpriv-share[T] 를 노드 F 의 대칭 공유 키, Ks-share[F] 에 대한 액세스를 갖는 임의의 엔티티에 전하도록 사용된다.
노드들에 대해 콘텐츠 키들을 타겟팅하기 위한 것처럼, 링크 내에 포함하기 위한 바람직한 페이로드는 대칭 도출 정보이다. 이것은 링크 생성기가 Ks-share[F] 에 대한 액세스를 가질 때 가능하다. 그렇지 않다면, 링크 생성기는 링크에 대한 페이로드와 같이 공개 도출 정보를 포함하는 것으로 물러날 것이다.
링크를 처리하는 DRM 엔진이 링크 L[F → T] 를 처리한 후 이미 그 내부 키 체인의 Ks-share[F] 및 Kpriv-share[F] 를 갖는 것으로 가정하면, DRM 엔진은 또한 Ks-share[T] 및 Kpriv-share[T] 를 갖는다.
일 실시형태에서, 링크들이 임의의 순서로 처리되기 때문에, DRM 엔진은 소정 링크 L 이 처리될 때 키 도출 계산들을 행하지 않을 수도 있다. 이것은 그 때 DRM 엔진의 키 체인이 그 링크의 "from" 노드의 키들을 아직 포함하지 않을 수도 있다는 사실에 의할 수도 있다. 이 경우, 링크는 새로운 정보가 DRM 엔진에 이용 가능하게 될 때, 예를 들어 새로운 링크 P 를 처리한 후 기억되고 다시 처리된다. 링크 P 의 "to" 노드가 링크 L 의 "from" 노드와 동일하고, 링크 P 의 "from" 노드가 도달 가능한 노드이면, 링크 L 의 "from" 노드는 또한 도달 가능하고, 키 도출 단계는 키 체인에 링크 L 의 "from" 노드의 개인 공유 키들을 부가한다.
5. 구현 예들
이하에서 몇몇 예들은 본 명세서에 기술된 시스템들과 방법들의 다양한 실시형태들이 실제 어떻게 적용될 수 있는지를 설명하도록 제공된다. 본 명세서에 기술된 시스템들 및 방법들은 저작권 관리 및 다른 기능성의 광의의 범위를 가능하게 하고, 따라서 여기서 주어진 특정 실시예들이 포괄적인 것으로 의도되지 않고, 오히려 발명의 요지의 설명적 범위로 의도될 수 있다.
1.11. 실시예 : 사용자들, PC 들, 및 디바이스들
특정 사용자에게 콘텐츠를 플레이할 권리를 묶어주는 DRM 시스템을 구현하고 싶거나, 사용자에게 그가 가진 모든 재생 디바이스의 콘텐츠를 플레이하는 것이 쉽게 만들고 싶다라고 가정하자. 사용자들에게 필요에 따른 재생 디바이스들 (예를 들어, 이동 플레이어들) 을 첨가할 수 있게 하는 소프트웨어를 제공할 것을 결정한다라고 가정하자. 그러나, 사용자가 분배 에이전시로 역할하는 능력을 갖지 못하도록 사용자가 콘텐츠를 수송할 수 있는 범용 디바이스들의 개수를 제한하는 어떤 폴리시을 설정하기 원하다라고 또한 가정하자.
이들 시스템 요구 사항들에 기초하여, 예를 들어 당신이 사용자에게 생성하는 라이센스에 속박하고, 사용자들과 그들이 사용하는 디바이스들 간에 관계들을 확립하도록 이해시킬 수도 있다. 따라서, 본 실시예에서, 우선 요구하는 다소의 관계들을 확립하는데 필요로 하는 어떤 종류의 노드들인지를 결정할 수 있다. 예를 들어, 다음의 타입의 노드들을 정의할 수도 있다:
Figure 112012048347665-pat00033
사용자 (예를 들어, 콘텐츠를 사용할 권리를 소유하는 개인)
Figure 112012048347665-pat00034
PC (예를 들어, 콘텐츠를 플레이하고 추가적 재생 디바이스를 구체화할 수 있는, 개인 컴퓨터 상에서 실행하는 소프트웨어 애플리케이션)
Figure 112012048347665-pat00035
디바이스 (예를 들어, 휴대용 콘텐츠-렌더링 디바이스)
각 노드 오브젝트는 그 오브젝트가 사용자, PC 또는 디바이스를 나타내는지 여부를 가리키는 타입 속성을 포함할 수 있다.
예를 들어, 특정 시간에서 임의의 한 사용자에 첨부될 수 있는 PC 노드 오브젝트들의 최대 개수를 4 개로 제한하도록 결정한다고 가정하자. PC 의 개수에 대한 제한을 제공하는 한 사용자에 첨부된 디바이스의 개수를 제한할 필요가 없다고 결정한다. 이것에 기초하여, 제어 프로그램은 사용자 노드와 액세스를 요청하는 노드 간의 관계가 확립될 수 있는 경우 액세스를 허용하도록 설정될 수 있다. 이후, 그 노드는 PC 또는 디바이스 중 하나일 수 있다.
도 16 은 상기 요구 사항들을 충족하도록 설계된 시스템을 도시한다. 서버 (1600) 는 사용자 노드 개체 (1602a 및 1602b) 를 각각의 새로운 사용자 (1604a 및 1604b) 에 할당하고, 보호된 콘텐츠에 대해 엑세싱할 목적으로 그것과 디바이스 (1606 및 1608) 및 PC (1610 및 1612) 를 연관시키는 사용자 (1604a 및 1604b) 의 능력을 관리한다. 사용자 (1604a) 가 새로운 디바이스 (1606) 를 그 사용자 노드 (1602a) 와 연관하기를 희망하는 경우, 서버 (1600) 는 디바이스 (1606) 가 제조시 개인화된 경우일 수도 있는 것처럼, 디바이스 (1606) 가 이미 개인화 정보 (1614) 를 포함하는지 여부를 결정한다. 디바이스가 개인화 정보 (1614) 를 포함하는 경우, 서버 (1600) 는 그 개인화 정보 (1614) 를 이용하여 디바이스 (1606) 에서 사용자 노드 (1602a) 까지의 링크를 생성하고, 사용자 디바이스 (1606) 로 링크 (1616) 를 전송한다. 사용자 (1604a) 가 (예를 들어, 서버 (1600) 또는 어떤 다른 콘텐츠 공급자로부터) 보호된 콘텐츠 (1618) 를 얻는 경우, 그 콘텐츠 (1618) 는 (예를 들어, 사용자의 노드 (1602) 와 연관된 비밀 공유 키들로 콘텐츠의 복호화 키를 암호화함으로써) 사용자 노드 (1602a) 로 타겟팅되고, 라이센스 (1619) 는 콘텐츠가 액세싱될 수 있는 조건들을 구체화하여 그것들과 함께 연관된다. 사용자 (1604a) 가 디바이스 (1606) 상의 콘텐츠 (1618) 를 플레이하도록 시도하는 경우, 디바이스 (1606) 에서 실행 중인 DRM 엔진 (1620) 은 사용자 노드 (1602a) 가 도달 가능한한 콘텐츠 (1618) 가 플레이될 수 있다는 것을 가리키는 라이센스 (1619) 를 평가한다. DRM 엔진 (1620) 은 사용자 노드 (1602a) 가 디바이스 (1606) 에서 도달 가능하다는 것을 도시하는 링크 (1616) 를 평가하고, 예를 들어, 라이센스 (1619) 내에 포함된 콘텐츠 복호화 키의 복호화에 권한 부여함으로써 콘텐츠 (1618) 를 액세스하기 위한 사용자 (1604) 의 요청을 승인한다.
본 실시예에서, 콘텐츠 복호화 키가 사용자의 노드 (1602a) 와 연관된 비밀 키를 이용하여 암호화되기 때문에, 본 비밀 키는 콘텐츠 복호화 키를 복호화하기 위하여 획득될 필요가 있다. 본 명세서의 다른 곳에서 기술된 부가 키 도출 기술이 사용된 경우, 사용자 노드의 키는 단순히 다바이스 (1606) 의 비밀 키들 중 하나를 이용하여 링크 (1616) 에 포함된 키 도출 정보를 복호화함으로써 얻어질 수도 있다. 복호화된 키 도출 정보는 라이센스 (1619) (또는, 도출되거나 얻어질 수 있는 정보) 내에 포함된 콘텐츠 복호화 키를 복호화하는데 필요로되는 키를 포함한다.
도 16 을 다시 참조하면, 사용자 (1604a) 가 새로운 PC (1610) 를 그 또는 그녀의 사용자 노드 (1602a) 와 연관시키길 원한다고 가정하자. 서버 (1600) 는 PC 의 최대 개수가 이미 사용자 노드 (1602a) 와 연관되지 않았음을 검증하고, 사용자 노드 (1602a) 와 연관되도록 PC (1610) 에 권한을 부여한다. 그러나, 연결을 수행하기 위하여, 서버 (1600) 는 PC (1610) 에서 개인화 정보 (예를 들어, 암호 키, 고유 식별자 등) 를 얻을 필요가 있다. 그러나, PC (1610) 가 (사용자가 단순히 PC 소프트웨어의 복제를 다운로드한 경우일 수도 있는 것처럼) 이전에 개인화되지 않았다면, 서버 (1600) 는 (본 명세서의 다른 곳에서 기술된 부트스트랩 프로토콜을 이용하여 PC 노드 오브젝트를 생성함으로써) 개인화 프로세스를 수행하거나 개인화 프로세스를 수행할 수 있는 서비스 제공자에게 사용자를 보낸다. 개인화 프로세스가 완료한 경우, 서버 (1600) 는 PC (1610) 에서 사용자 노드 (1602a) 까지의 링크 (1624) 를 생성하고, 유효하게 남아있는 한 계속 사용할 수 있는, 링크를 PC (1610) 에 전송할 수 있다.
사용자는 차후에 추가 PC 들을 더하도록 요청할 수 있고, 서버는 사용자마다 PC 노드 오브젝트의 개수를 4 개로 제한하는 폴리시을 시행할 수도 있다 (또한, 통상 필요에 따라 사용자가 그 활성 리스트에서 PC 들을 제거하는 능력을 제공할 수도 있다).
또 다른 실시예서와 같이, 사용자들이 소유한 임의의 디바이스 상에 소유한 임의의 콘텐츠를 플레이할 수 있어야 있을 것을 이제 서비스 제공자가 결정한다고 가정하자. 또한, 서비스 제공자는 사용자에게 서버 (1600) 와 접속하도록 요구하기보다는 사용자의 PC 소프트웨어로 하여금 그 또는 그녀의 디바이스들 각각에 대한 링크들을 생성하도록 허락하기를 희망할 수도 있다. 이러한 실시형태에서, 사용자가 새로운 디바이스 상에서 콘텐츠를 플레이하기를 원한 경우, 사용자의 PC 소프트웨어는 새로운 디바이스의 기밀 개인화 정보에 대해 액세스하고 그것을 이용하여 그 디바이스에 대한 새로운 링크 (예를 들어, 새로운 디바이스에서 사용자의 노드 (1602a) 까지의 링크) 를 생성할 수도 있다. 디바이스가 개인화을 하지 않았다면, PC 소프트웨어는 원격 서비스에 대해 액세스하고, 디바이스를 그 원격 서비스에 대해 액세스하도록 안내하여 개인화 프로세스를 수행할 수도 있다. 이후, PC 소프트웨어는 일단 링크 오브젝트가 존재하면, 링크 오브젝트가 만료되거나 그렇지 않으면 무효화되지 않으면 다른 링크 오브젝트를 생성할 필요가 없기 때문에 유효하게 남아 있는 한 새로운 디바이스가 콘텐츠를 플레이할 수 있는 때에 그 링크를 새로운 디바이스에 전송할 수도 있다.
상기에 도시된 실시예들에서, 콘텐츠는 사용자에게 타겟팅된다. 이를 하기 위해, 패키저 애플리케이션은 콘텐츠용 새로운 ID 를 선택하고, 또는 존재하는 ID 를 사용하고, 암호화 키 및 연관된 콘텐츠키 오브젝트뿐만 아니라 콘텐츠 오브젝트와 콘텐츠키 오브젝트를 바인딩하는 보호기 오브젝트를 생성한다. 이후, 패키저는 사용자 노드가 액션을 요청 중인 PC 또는 디바이스 노드에서 도달 가능한 경우 또는 경우에만 "play" 액션이 발생하도록 허락하는 (예를 들어, DRM 엔진의 가상 머신에 의해 실행 가능한 바이트 코드로 컴파일된) 제어 프로그램으로 제어 오브젝트를 생성한다. 통상 제어, 제어기, 보호기 및 콘텐츠키 오브젝트들은 적절하다면 패키징된 콘텐츠 내에 구현되어 PC 들 및 디바이스들이 개별적으로 그것들을 얻어야 할 필요가 없다.
일 실시형태에서, 디바이스 또는 PC 가 콘텐츠 플레이를 원하는 경우, 도 9 와 관련하여 이미 기술된 것과 같은 프로세스를 따른다. 즉, DRM 엔진은 콘텐츠의 콘텐츠 ID 용 보호기 오브젝트를 찾고, 이후 그 보호기에 의해 참조된 콘텐츠키 오브젝트를 찾고, 다음으로 그 콘텐츠키 오브젝트를 참조하는 제어기 오브젝트를 찾으며, 마지막으로 그 제어기에 의해 참조된 제어 오브젝트를 찾는다. DRM 엔진은 제어 오브젝트의 제어 프로그램을 실행하고, 여기서 제어 프로그램은 사용자 노드가 도달 가능한지 여부를 확인한다. 디바이스 또는 PC 노드가 그 노드와 사용자 노드 간에 경로가 존재한다는 것을 검증하는 필요한 링크 오브젝트들을 갖는다면, 조건이 충족되어 제어 프로그램은 콘텐츠키 오브젝트에 나타낸 키의 사용을 허락한다. 이후, 디바이스 또는 PC 의 미디어 렌더링 엔진은 콘텐츠를 복호화하고 플레이할 수 있다.
1.12. 실시예 : 임시 로그인
도 17 은 본 명세서에 기술된 DRM 시스템들 및 방법들의 잠재적 애플리케이션의 다른 실시예이다. 본 실시예는 PC 노드 오브젝트들과 사용자 노드 오브젝트들 간의 링크 오브젝트들의 생성을 통제하는 여기서의 폴리시을 제외하고 선행 섹션의 실시예와 유사하고, 사용자가 다른 PC 상에 임시 로그인을 이미 갖지 않고 있는 한 사용자 노드 오브젝트들은 12 시간 이내의 임시 로그인을 허락한다. 이 특징은 사용자 (1700) 로 하여금 친구의 PC (1704) 에서 그의 콘텐츠 (1702) 취하고, 그 PC (1704) 로 로그인하며, 그 친구의 PC (1704) 상에서 그 콘텐츠 (1702) 를 플레이하도록 허락할 수도 있다.
이것을 달성하기 위하여, 링크 오브젝트 (1710) 는 제한된 유효 기간을 가지고 생성될 수도 있다. 일 실시형태에서, 이것은 다음과 같이 완료될 수 있다:
설명의 편의를 위하여, DRM-보호된 콘텐츠 (1702) 를 플레이하는데 요구된 DRM-인에이블 소비 소프트웨어 (1714) 가 친구의 PC (1704) 상에 이미 존재한다고 가정하자. 콘텐츠 (1702) 와 라이센스 (1708) 를 포함한 파일은 친구의 PC (1704) 로 전송된다. 사용자가 콘텐츠 (1702) 를 플레이하기를 시도하는 경우, 소프트웨어 (1714) 는 그 콘텐츠를 소유한 사용자의 노드와 로컬 PC 노드를 링크시키는 유효한 링크 오브젝트가 없다는 것을 인식한다. 소프트웨어 (1714) 는 사용자에게 그의 자격 증명 (이것은 사용자 이름/패스워드, 이동 전화 증명 프로토콜, 스마트카드, 또는 시스템의 폴리시하에서 허락된 임의의 증명 시스템을 통하여 제공될 수 있다) 에 대해 촉구하고, 백엔드 (backend) 시스템 (1706) 과 통신한다. 백엔드 (backend) 시스템 (1706) 은 링크가 요청되는 PC 노드 오브젝트와 사용자 노드 오브젝트의 속성들을 확인하고, 여전히 유효한 활성 임시 로그인 링크 오브젝트가 없는가를 확인한다. 이들 조건들을 충족하는 경우, 백엔드 서비스 (1706) 는 요청된 시간 (예를 들어, 본 실시예의 폴리시에 따르도록 12 시간 이내) 에 제한된 유효 기간을 갖고 로그인 친구의 PC 노드 오브젝트와 사용자의 노드를 링크시키는 링크 오브젝트 (1710) 를 생성한다. 링크 오브젝트 (1710) 를 갖는 것은 이제 친구의 PC (1704) 에게 링크 (1710) 가 만료되기 전까지 사용자의 콘텐츠 (1702) 를 플레이하도록 액션하게 한다.
1.13. 실시예 : 기업 콘텐츠 관리
도 18 은 기업 문서들 (예를 들어, 이메일, 워드 프로세싱 문서들, 프리젠테이션 슬라이드들, 인스턴트 메시징 텍스트 (instant messaging text) 등) 에 대한 예시적 시스템 (1800) 의 하이-레벨 구조를 도시한다. 도 18 에 도시된 실시예에서, 문서 편집 애플리케이션 (1802, 예를 들어, 워드 프로세서), 이메일 클라이언트 (1804), 및 디렉토리 서버 (1806, 예를 들어, 액티브 디렉토리 서버 (Active Directory server)) 는 DRM 플러그-인 (1808), 네트워크 서비스 결합 계층 (orchestration layer) (1810), 등록 서비스 (1812), 및 폴리시 서비스 (1816) 를 이용하여 폴리시들에 따른 문서들이나 이메일 메시지들 등의 관리를 촉진한다. 바람직한 실시형태에서, DRM 플러그-인 (1808), 네트워크 서비스 결합 계층 (1810), 폴리시 서비스 (1812) 는 본 명세서의 다른 곳과 '551 출원에 기술된 DRM 엔진 및 서비스 결합 기술을 이용하여 구현된다. 예를 들어, 일 실시형태에서, DRM 플러그-인 (1808) 은 상기 기술된 DRM 엔진의 일 실시형태를 포함할 수도 있다. 도 18 에서 워드 프로세서 (1802) 및 이메일 클라이언트 (1804) 와 같은 현재 애플리케이션들이 호출할 수 있는 플러그-인을 통해 DRM 엔진과 병합되는 일 실시형태를 도시하나, 다른 실시형태들에서 DRM 엔진은 애플리케이션 그 자신들 중 하나 또는 둘 다의 통합부로서 포함될 수 있음이 이해된다. 또한, 도 18 에서 도시된 예시적 시스템이 단일 기업 내에서 구현될 수 있고, 다수의 기업들에 걸칠 수도 있음이 이해된다.
도 18 에서 도시된 실례에서, 디렉토리 서버 (1806) 는 예를 들어, 사용자 프로파일들과 그룹 정의들을 포함할 수도 있다. 예를 들어, "특별 프로젝트 팀 (특별 프로젝트 팀)" 라 불리는 그룹은 회사의 시스템 관리자에 의해 설정되어 회사의 특별 프로젝트 팀의 구성원들을 식별할 수도 있다.
일 실시형태에서, 디렉토리 서버 (1806) 는 '551 출원에 기술된 (그리고 예를 들어, Windows® 플랫폼의 IIS 기반 기술들로 구현된) 것들과 같은, 엑세싱된 콘텐츠에 기초한 특별 프로젝트 팀 그룹 내의 사람들에게 노드들, 링크들 및 라이센스들을 발행하는 웹 서비스들을 실행하는 활성 디렉토리 서버를 포함할 수도 있다. 그룹내의 멤버쉽이 변경되면, 새로운 토큰은 발행될 수도 있다. 권리의 해지에 대해, 디렉토리 서버 (1806) 는 '551 출원에 기술된 것과 같은 기술 (종종 본 명세서에서 "NEMO" 기술로 불린다) 에 기초한 보안 메타데이타 서비스를 실행할 수 있다. 몇몇 실시형태에서, 클라이언트는 DRM 라이센스들을 사용하기 위하여 (정의하기 위해 회사가 선택하는 어떤 신선한 값 (예를 들어, 1 주, 1 일, 1 시간, 매 5 분 등) 에 기초하여) 누계 시간 값 또는 시간의 표기를 갖을 것이 요구될 수 있다. 예를 들어, 보안 메타데이터가 제공하는 토큰은 신뢰되고 증명 가능한 시간 값을 포함할 수도 있다. 몇몇 실시형태에서, 클라이언트는 보안 메타데이터 서비스 상호 작용들에서 사용자 노드 ID 들을 식별할 수 있다. 보안 메타데이터는 사용자가 여전히 소정 멤버쉽을 갖고 있는지 여부를 결정하기 위해 라이센스 제어들의 상황에서 직접적으로 평가될 수 있다. 또한 보안 메타데이터는 특별 프로젝트 팀의 구성원인 것과 같은 관계들이 유효한지 여부를 결정하는 에이전트들에 리턴될 수 있다. 따라서, 몇몇 실시형태에서, 많은 잘 정의된 웹 서비스들의 단순한 추가로 회사의 현존 권한 부여 및 인증 인프라 (예를 들어, 회사의 활성 디렉토리 서버) 에 영향을 줄 수 있다.
*도 19 는 도 18 에 도시된 것과 같은 시스템이 문서에 대한 액세스와 문서의 다른 사용을 관리하는데 어떻게 사용될 수 있는가의 실시예를 도시한다. 본 실시예에서, 특정 직원 (John) 은 높은 기밀 전략 프로젝트들에 자주 일을 할 수 있고, 그의 애플리케이션들 (예를 들어, 워드 프로세싱 프로그램 (1902), 또는 이메일 프로그램 (1904), 달력 프로그램, 이러한 프로그램들을 통합하는 프로그램 또는 프로그램 제품군 등) 에 대한 DRM 플러그인 (1908) 을 이미 설치하였을 수도 있다. 그의 문서의 생성 동안의 어느 시점에서, 존 (John) 은 그의 애플리케이션의 툴바에 추가되었던 "허가 (permissions)" 풀다운 아이템에 액세스한다 (액션 1913). 시스템의 설정되었던 개인들 및 그룹들의 디렉토리에 대하여 그의 회사의 엑티브 디렉토리 서버 (1906) 와 접촉하는 허가 대화 상자가 나타난다. 그는 리스트에서 "특별 프로젝트 팀" 을 선택하고 결정하여 팀의 모든 사람들에게 문서를 보고, 편집하며, 프린트하기 위한 허가를 제공한다. '551 출원에 기술된 NEMO 서비스 결합 기술을 이용하여, DRM 플러그인 (1908) 은 NEMO-인에이블 폴리시 서비스 확장 (1916) 을 활성 디렉토리 (1906) 에 접촉시키고, 특별 프로젝트 팀용 파일을 보호하기 위하여 사용하는 폴리시의 사본을 요청한다 (액션 1914). 존이 문서를 저장하는 경우, DRM 플러그인은 자동적으로 파일을 암호화하고 (1912), "특별 프로젝트 팀" 으로 알려진 그룹에 바인딩하고 타겟팅된 라인선스 오브젝트 (1910) 를 생성한다. 라이센스들 (1910) 은 그 디바이스 노드에서 특별 프로젝트 팀 그룹 노드까지의 링크들의 유효한 체인을 생성할 수 있는 임의의 디바이스에 의해 파일 (1912) 이 엑세싱되도록 (예를 들어, 보여지거나, 편집되거나 프린팅되는 등) 허여한다.
존은 그 디바이스가 존의 사용자 노드를 갖기 때문에 문서 (1912) 를 액세스할 수 있고, 존의 사용자 노드에서 "특별 프로젝트 팀" 그룹 노드까지의 링크를 또한 갖는다. 이와 같이, 그가 이 문서를 다른 사람들에게 전달하는 경우, 그들은 (예를 들어, 디바이스에 의해 특별 프로젝트 팀 노드가 도달 가능하는 것이 요구됨으로써) "특별 프로젝트 팀" 그룹 노드에 대한 링크의 유효한 체인을 생성할 수 있는 경우 오직 액세스할 수 있다.
존은 그의 컴퓨터상에 (이미 보호된) 파일을 저장하고, 이후 그 파일에 이메일 메시지를 첨부할 수도 있다 (액션 1920). 예를 들어, 그가 상사 (조오지) 에게 오래된 이메일을 오픈시키고, 그가 보통 하는 것과 같이 첨부하며, 메시지를 전송할 수도 있다. 도 20 에 도시된 바와 같이, 조오지 는 또한 컴퓨터 (2014) 에 설치된 DRM 플러그인 (2000) 을 가진다. 조오지 가 그의 컴퓨터 (2014) 에 로그인 한 경우, 플러그인 (2000) 은 그가 첨가됐던 (액션 2006) 모든 그룹들을 편의 주의적으로 (opportunistically) 확인하고, 새로 다운로드하며, 만료된 임의의 것에 대한 링크들을 리프레시했다 (액션 2012). 그의 마지막 로그인 이후 "특별 프로젝트 팀"에 그가 첨가되었던 경우, 그의 플러그인 (2000) 은 그의 사용자 노드를 "특별 프로젝트 팀" 그룹 노드에 링크시키는 링크 오브젝트 (2008) 를 다운로드할 수도 있다. 본 링크 (2008) 는 사용자 노드 "조오지" 가 그룹 노드 "특별 프로젝트 팀" 의 구성원인 것을 나타낸다. 본 실시예에서, 링크 오브젝트 (2008) 가 그 이후에는 더 이상 유효하지 않은 만료일 (예를 들어, 3 일) 을 갖는 것으로 가정하자.
도 21 에서 도시된 바와 같이, 조오지가 문서를 오픈하려고 시도하는 경우 (액션 2130 및 액션 2132), DRM 플러그인 (2108) 은 내장된 (또는 첨부된) 라이센스를 확인하고, "특별 프로젝트 팀" 노드가 도달 가능해야 하는 것을 배운다. 그의 플러그인 (2108) 은 그의 컴퓨터의 디바이스 노드에서 사용자 노드 "조오지" 까지; 사용자 노드 "조오지" 에서 그룹 노드 "특별 프로젝트 팀" 까지의 링크들 (2120 및 2122) 의 체인을 구성 (및 유효화) 한다 (액션 2134). 디바이스가 링크들 (2120 및 2122) 의 유효한 체인을 갖기 때문에 그의 플러그인 (2108) 은 그 파일에 대한 액세스를 허락한다.
본 명세서의 다른 곳에서 기술된 바와 같이, 몇몇 실시형태들에서 링크들은 또한 키들의 보안 체인을 가질 수 있다. 따라서, 몇몇 실시형태들에서, 특별 프로젝트 팀 노드에 대한 링크들의 체인을 생산함으로써 플러그인은 콘텐츠를 액세스하도록 허락되는 것뿐만 아니라 콘텐츠를 복호화 하도록 가능하게 하는 키들의 체인을 복호화할 능력이 있는 것을 증명할 수 있다.
예를 들어, 다른 직원 ("캐롤" 이 존의 이메일을 우연히 수신하고, 그 문서를 열려고 하는 경우, 그녀의 DRM 플러그인은 그 파일과 묶음된 라이센스를 검색할 것이다. 그녀의 PC 는 그녀의 사용자 노드 "캐롤" 에 대한 링크를 갖고; 그러나 그녀가 그 팀의 구성원이 아니기 때문에, "캐롤" 에서 "특별 프로젝트 팀" 그룹 노드까지의 링크가 없다. "특별 프로젝트 팀" 이 도달 가능하지 않기 때문에, 그녀는 그 파일을 액세스하도록 승인되지 않는다.
만약 캐롤 이 결국 그 그룹 "특별 프로젝트 팀" 에 추가되는 경우. 다음 번에 그녀의 DRM 플러그인은 그녀의 멤버쉽을 새롭게 하고, 이 새로운 그룹을 검출할 것이며, 그녀의 사용자 노드를 특별 프로젝트 팀 노드에 링크시키는 링크 오브젝트를 다운로드할 것이다. 그녀의 플러그인은 이제 그녀의 디바이스 노드에서 그녀의 사용자 노드까지 그리고 특별 프로젝트 팀 노드까지의 체인을 구성하는데 필요한 모든 링크들을 갖는다. 특별 프로젝트 팀 노드는 이제 "도달 가능" 하고, 그녀는 특별 프로젝트 팀 에 타겟팅되는 어떤 문서들 또는 이메일들을 (심지어 그녀가 그 팀에 합류하기 전에 생성되었던 그것들도) 개봉할 수 있다.
한 달 뒤 조오지가 새로운 역할로 이동하고, 활성 디렉토리 내의 특별 프로젝트 팀에서 면직된다. 다음번 조오지는 로그인하고, 그의 플러그인은 "특별 프로젝트 팀" 에 그의 사용자 노드 "조오지" 를 연관하는 새롭고, 새롭게 된 링크 오브젝트를 수신하지 못한다. 수 주일 뒤, 그가 존의 파일을 개봉하려고 시도하는 경우, 그의 플러그인은 특별 프로젝트 팀 에 대한 링크들의 체인을 구성하려고 시도한다. 그의 PC 는 여전히 사용자 노드 "조오지" 에 대한 링크를 갖으나 (조오지 의 PC 는 여전히 그에게 속한다); "조오지" 에서 "특별 프로젝트 팀" 까지의 링크는 만료되었다. "특별 프로젝트 팀" 이 도달 가능하지 않기 때문에, 그는 그 파일을 액세스하도록 승인되지 않는다.
회사가 로그될 모든 기밀 정보에 대한 액세스를 요구하는 폴리시을 갖는다고 가정하자. 이러한 일 실시형태에서, 특별 프로젝트 팀 에 대한 폴리시은 그 그룹을 위해 생성되는 모든 라이센스들이 또한 수집을 요구하는데 필요한다 점과 예를 들어, 중앙 리포지토리에 대한 사용 정보의 보고를 명령한다. 따라서, 본 실시예에서, 라이센스의 제어 프로그램을 평가 (예를 들어, 실행) 하는 경우, 플러그인은 액세스를 기록하기 위한 요구 사항을 실행하고 그렇게 한다. 예를 들어, 활동 결과들은 본 명세서에 기술된 것과 같은 로컬 보호 상태 데이터베이스 내에 기록될 수 있고, 네트워크 접속이 재확립되는 경우, 관련 콘텐츠는 이미 기술된 서비스들을 통해 보고될 수 있다.
도 22 는 기업 내의 전자 콘텐츠를 관리하기 위한 다른 설명적 시스템 (2200) 을 도시한다. 도 22 에 도시된 실시예에서, LDAP 서버 (2206) 는 사용자 프로파일들, 그룹 정의들, 및 역할 임무들을 관리하도록 사용되고, "특별 프로젝트 팀" 이라 불리는 그룹 정의와 "변호사" 의 역할 정의를 포함한다.
존이 변호사이고 첨부물을 갖는 이메일을 특별 프로젝트 팀 의 다른 구성원들에게 전송하기를 희망한다고 가정하자. 존이 그의 애플리케이션을 위해 DRM 플러그-인 (2208) 을 설치하는 경우, DRM 플러그-인 (2208) 은 또한 그의 이메일 툴바에 아이템을 설치한다. 그의 이메일 메시지 작성 중 어느 시점에서, 존은 그의 툴바에 첨가되었던 풀-다운 메뉴에서 "Set Permissions" 을 액세스한다. DRM 플러그-인 (2208) 은 폴리시 서비스 (2216) 와 접촉하고 선택하는 어떤 것에서 조직 메시징 폴리시들의 리스트를 표시한다. 존은 "특별 프로젝트 팀 Template" 을 선택하고, DRM 플러그-인 (2208) 은 수신하는 폴리시 오브젝트의 증명, 무결성, 및 기밀성을 요청 및 보장하기 위하여 NEMO 프로토콜을 사용한다. 폴리시은 본 템플릿을 사용하는 라이센스가 어떻게 생성되어야 하는지를 기술하며, 라이센스들이 어떻게 타겟팅되고 바인딩되어야 하는지도 포함한다.
존이 "Send" 을 누르는 경우, DRM 플러그인 (2208) 은 메시지 및 첨부물을 암호화하고, 관련된 라이센스(들)을 생성한다. 라이센스는 이메일 또는 첨부물을 액세스하기 위하여 특별 프로젝트 팀 그룹 노드 또는 "변호사" 그룹 노드 중 하나가 도달 가능해야 함을 요구한다.
라이센스(들)은 암호화된 메시지 페이로드 및 암호화된 첨부물과 묶인다. 메시지는 결국 표준 이메일 기능을 이용하여 리스트의 수취인들에게 전송된다. 라이센스 규칙들 및 암호화가 이메일의 주소에 의존하지 않기 때문에, 부정확한 이메일 수취인이 실수로 포함될 수도 있다는 사실은 이메일 또는 첨부물의 콘텐츠들을 위험하게 하지 않는다.
이러한 의도하지 않은 수취인이 그의 사용자 노드를 특별 프로젝트 팀 에 링크시키는 유효한 링크 오브젝트를 갖지 않기 때문에, 그는 콘텐츠를 액세스하도록 시도한다면 그리고 시도할 때 그것이 승인되지 않는다. 또한, 그의 디바이스가 링크들의 필요 체인 (및 링크들이 포함하는 키들) 을 갖지 못하기 때문에, 그의 디바이스는 콘텐츠를 복호화하는 능력 조차 갖지 않는다.
그러나, 의도하지 않은 수취인이 이후 특별 프로젝트 팀 의 구성원에게 표준 이메일 기능을 이용하여 동일하고, 수정하지 않은 이메일을 전송하는 경우. 그 구성원은 그의 사용자 노드를 "특별 프로젝트 팀" 그룹 노드에 링크시키는 링크 오브젝트를 갖고, 이메일의 콘텐츠를 액세스할 수 있다.
회사에서 다른 변호사 ("Bill") 가 또한 그를 "특별 프로젝트 팀" 그룹 노드와 연관시키는 링크 오브젝트를 수신하였다고 가정하자. 또한, Bill 은 파일을 볼 수 있다. Bill 이 그 메시지를 변호사도 아니고 특별 프로젝트 팀과 관련되지도 않은 법률가 보조원 ("Trent") 에게 전송하는 경우, Trent 는 그를 "특별 프로젝트 팀" 그룹 노드와 접속하는 링크 오브젝트를 갖지 않고, 그 문서를 액세스할 수 없다.
Trent 가 결국 LDAP 디렉토리 (2206) 의 특별 프로젝트 팀 그룹에 추가되는 경우, 그는 필요한 링크 오브젝트(들)를 받고, 이미 전송된 이메일을 액세스할 수 있다.
이미 언급한 것과 같이, 보고 요구 사항이 모든 라이센스들에 포함되는 것을 가리키는 폴리시을 회사가 갖는다면, 일 실시형태에서, 이들 라이센스들 중 하나 내의 제어 프로그램이 실행되는 언제나 (예를 들어, 누군가 파일을 액세스하기를 시도하는 경우), 보고 이벤트는 트리거될 수 있다. 보고 단계는 부가적으로 액세스가 승인되거나 거부되었는지 여부와 같은 지표를 포함할 수 있다 (이것은 실행 선택의 문제이다). 이러한 지표가 사용되는 경우, 기록은 특정 문서를 액세스하는 많은 시도들과, 각각의 상태 또는 다른 정보 (예를 들어, 성공, 실패 등) 를 관리할 수 있다.
또 다른 실시예와 같이, 특별 프로젝트 팀 의 일 구성원 ("Stephen") 이 특별 프로젝트에 대한 일을 수행하기 위하여 다른 회사로 옮긴다고 가정하자. 다른 회사로 떠나기 전에 Stephen 의 이메일 클라이언트는 Inbox 에 있는 모든 이메일의 로컬 사본을 다운로드한다. 또한, 이들 이메일들 중 하나에 첨부된 보호된 리포트는 내장된 (또는 첨부된) 라이센스를 포함한다. 본 라이센스 오브젝트는 콘텐츠를 액세스하기 위한 규칙들 둘 다뿐만 아니라 암호화된 콘텐츠 키를 포함한다. 콘텐츠를 액세스하는데 요구된 "Missing link" 만이 "특별 프로젝트 팀" 그룹 노드에 도달하기 위한 필요한 링크 오브젝트들이다.
본 실시예에서, 링크 오브젝트들이 3 일간 유효하게 남도록 허락하는 회사의 폴리시이기 때문에, Stephen 의 사용자 노드를 특별 프로젝트 팀 노드에 링크시키는 링크 오브젝트는 그가 옮기는 중에 연결을 끊고 있어도 유효하게 남는다. Stephen 이 오프라인 중 파일을 액세스하기를 시도하는 경우, 특별 프로젝트 팀 그룹 노드는 도달 가능하고, 그는 그 파일을 액세스하도록 승인된다.
그러나, Stephen 이 3 일 이상 동안 오프라인 상태에 있는 경우, 그를 특별 프로젝트 팀 에 링크시키는 링크 오브젝트는 만료된다. 이후, 특별 프로젝트 팀 그룹 노드는 더 이상 도달 가능하지 않고, Stephen 은 그 파일을 액세스하도록 승인되지 않는다.
Stephen 이 결국 (예를 들어, VPN 을 통하여) 회사 시스템에 접속할 수 있는 위치에 이동하는 경우, 그의 DRM 플러그-인은 그가 속한 그룹들 각각에 대한 링크 오브젝트들의 새롭게 된 사본들을 요청한다. Stephen 이 여전히 "특별 프로젝트 팀" 그룹의 일부이기 때문에, 그는 그의 사용자 노드에서 특별 프로젝트 팀 그룹 노드까지의 새로운 링크 오브젝트를 수신한다. 본 링크는 만료되고 더 이상 유효하지 않은 "옛" 링크를 대체한다.
"특별 프로젝트 팀" 노드는 이제 본 새롭고, 새롭게 된 링크를 이용하여 도달 가능하기 때문에, Stephen 은 다시 한번 보호된 리포트를 액세스 할 수 있다. 새로운 링크 오브젝트는 3 일 기간 동안 유효하며, 또한 3 일 기간이 경과한 후 만료한다.
또 다른 실시예와 같이, 특별 프로젝트 팀 의 구성원 ("Sally") 이 인스턴트 메시징를 통하여 다른 팀 구성원과 통신하고, 그 통신의 사본을 저장하며, 팀의 다른 구성원에게 (예를 들어, 이메일 첨부물, 디스켓, 동글 (dongle) 등을 통해) 그것을 주기를 희망한다고 가정하자. 본 실시예에서, 인스턴트 메시징 클라이언트 (그리고 회사가 직원들에게 제공하는 잠재적 다른 메시징 또는 통신 제품들) 는 이전 실시예에서와 같이, 라이센스들이 어떻게 타겟팅되고 바운딩되는지를 지시하는 "특별 프로젝트 DRM Template" 폴리시을 액세스하는 DRM 플러그인에 링크된다. Sally 가 (예를 들어, "Save-As" 를 선택함으로써) 그녀의 인스턴트 메시징 대화를 저장하기를 시도하는 경우, 플러그-인은 (예를 들어, 임의 방식으로) 암호화 키를 선택하고, 대화의 텍스트를 패키지화 (암호화) 한다. 회사 폴리시 대로, DRM 플러그인은 이후 특별 프로젝트 팀 그룹 노드에 타겟팅 및 바운딩되는 라이센스 오브젝트를 생성한다.
보호된 IM 트랜스크립트를 포함한 파일은 트랜스크립트 콘텐츠들을 액세스하기 위하여 라이센스와 묶인다. 이전 실시예들에서와 같이, 라이센스는 콘텐츠에 대한 액세스를 통제하는 규칙들 둘 다뿐만 아니라 콘텐츠 키의 암호화된 사본을 포함한다. Sally 는 표준 '드래그 앤드 드롭' 절차들을 이용하여 이메일, USB 동글, 디스켓 등에 이 묶인 파일을 옮겨, 다른 사람에게 전송할 수 있다. 수취인의 디바이스가 특별 프로젝트 그룹 노드에 유효한 링크들을 생성할 수 있다고 가정하면, 콘텐츠에 대한 액세스는 승인되고 가능하다.
Sally 가 그 파일을 John 에게 주고, 여기서 존은 특별 프로젝트 팀 의 구성원이다고 가정하자. 존이 특별 프로젝트 팀 의 구성원으로서 그를 식별하는 최근-새롭게 된 링크 오브젝트를 갖는 경우, 그는 그 파일을 액세스할 수 있다. 회사의 폴리시 대로, 이 링크 오브젝트는 3 일 내에 만료를 야기하는 만료일을 포함한다. 따라서, 존이 연결되지 않은 상태일지라도, 그는 그 링크가 유효하게 남아있는 한 여전히 액세스를 갖는다.
소정 시간 이후에 존이 다른 작업 임무를 위해 특별 프로젝트 팀 을 떠나며, 그의 가방에서 Sally 로부터의 USB 동글을 찾고 그의 데스크탑 컴퓨터를 이용하여 그 파일을 개봉하도록 시도하는 경우, 그의 사용자 노드를 특별 프로젝트 팀 에 연관하는 링크 오브젝트는 만료되었다. 존이 더 이상 팀의 일원이 아니기 때문에, 그의 디바이스의 DRM 플러그인은 더 이상 새롭고, 새롭게 된 링크를 획득할 수 없다. "특별 프로젝트 팀" 그룹 노드가 더 이상 도달 가능하지 않기 때문에, 액세스는 승인되지 않는다.
John은 작업들을 변경하였기 때문에 그의 렙탑이 네트워크에 접속되지 않았던 것이 이해하며, 또한 그 디바이스로 파일을 개봉하려고 시도한다. 최대 할당 시간이 경과하였기 때문에, 그 링크는 또한 더 이상 유효하지 않다. 몇몇 실시형태들에서, 존이 파일을 액세스하도록 시도하는 매번, 리포트는 중앙 리포지토리에 전송되도록 생성되고 대기될 수 있다.
중앙 리포지토리는 파일을 액세스하려는 성공적이 않은 시도들에 대한 다수의 리포트들을 수신하고, 이메일을 통해 관리자에게 플래그를 설정한다. 관리자는 존이 기밀 자료를 액세스하도록 더 이상 승인 되지 않음을 상기시키고 (시스템이 액세스가 승인되지 않았음을 가리키는데도) 모든 파일들을 폐기할 것을 요청한다.
또 다른 실시예와 같이, 정부 에이전시 또는 외부 편집자가 특별 프로젝트 팀 의 기밀 정보 취급을 조사 또는 감사하기를 원한다고 가정하자. 그 조사를 지원하기 위하여, 회사는 특별 프로젝트 과 관련된 민감한 정보에 대한 액세스를 위해 감사 기록을 설명하도록 원한다.
본 목적을 위해, 회사는 우선 특별 프로젝트 와 관련된 어떤 메시지들에 대해 모든 일반 텍스트 메시지 보관들을 스캔한다. 그들을 경감하기 위해, 그들은 어떤 직원도 회사 폴리시에 따라 적절한 DRM 보호 없이 특별 프로젝트 을 언급하는 메시지들을 (예를 들어, 시스템의 외부로) 전송하지 않았음을 발견한다.
이후, 회사는 DRM 액세스 기록들을 이용하여 보호된 정보에 대한 액세스를 누구에게 그리고 언제 주었는지의 상세한 감사 트레일을 생성한다.
회사 절차에 따라, 특별 프로젝트 팀 그룹이 확립되었던 때, 디폴트에 의해 CCO (Chief Compliance Officer) 도 특별 프로젝트 팀 에 포함된다. CCO 에 대한 링크 오브젝트는 보관 서버에 생성되고 저장되었으며, 여기서 보관 서버는 CCO 에게 미래에 필요한 경우 모든 메시지들을 검토하도록 허락한다.
본 실시예에서, 특별 프로젝트 팀 에 대해 정의된 폴리시은 팀에 의해 생성된 모든 라이센스들이 파일에 대한 어떤 시도된 액세스를 보고하는 요구 사항을 포함해야 함을 지시하였고, 요구 사항은 날자 및 시간, 사용자 노드 및 액세스가 승인되었는지 여부를 포함한다. 이들 보고들은 중앙 리포지토리의 액세스 로그에 저장되었다.
CCO 는 어떤 누수 또는 다른 변칙이 발생하였음으로 의심되었을 때 전에 특별 프로젝트 팀 과 연관된 모든 액세스들에 대한 액세스 로그들을 확인한다. 또한, CCO 는 그날 또는 그날 이전의 모든 메시지 트레픽 및 시스템 파일들에 대한 이메일, IM, 및 네트워크 백업 보관들을 검색한다. 각 파일들이 (콘텐츠 키와 함게) 첨부된 라이센스들이 있기 때문에, CCO 는 라이센스의 요구 사항들을 만족하는 필요한 링크 오브젝트들을 갖고, CCO 는 문제의 시간 이전에 엑세싱된 각각 및 모든 메시지의 콘텐츠들을 액세스하도록 승인한다.
액세스 로그들과 암호화되지 않은 메시지 콘텐츠들은 조사의 일부로서 에이전시/감사역에게 완전하게 이용 가능하게 된다.
몇몇 실시형태들에서, 특별 프로젝트 팀 에 대한 폴리시은 또한 특별 프로젝트 과 관련된 모든 라이센스들에 대한 만료 일자를 설정하는 요구 사항을 포함할 수 있었다. 예를 들어, 회사가 오직 1 년 기간 동안 본 성질의 기록들을 유지하도록 법률상으로 요구한 경우, 기록들은 라이센스들이 발행의 1 년 지난날에 만료함을 폴리시 내에 나타낼 수 있었다. 그 경우, 회사는 오직 기록들을 유지하도록 법률적으로 요구되는 한 기록들을 유지할 수도 있다. 심지어 CCO 가 그 시간 후 액세스를 갖지 않을 것이다.
상기 언급에서는 "타겟팅" 및 "바인딩" 에 대한 참조가 종종 이루어졌다. 바람직한 실시형태들에서, 타겟팅과 바인딩은 2 개의 상이한, 그러나 밀접하게 관련된 프로세스들이다. 바람직한 실시형태들에서, "바인딩" 은 주로 암호 프로세스이며, 콘텐츠를 암호화하는데 사용된 키를 보호하는 것에 관한 것이다. 라이센스가 소정 노드 (예를 들어, "특별 프로젝트 팀" 노드) 에 "바인딩" 되는 경우, 이것은 예를 들어, 그 노드와 연관된 공개 키로 콘텐츠 키가 암호화됨을 의미할 수 있다. 따라서, 그 노드의 개인 키에 대한 액세스를 갖는 디바이스들만은 콘텐츠를 복호화하는 필요한 키를 갖으나 (그리고, 바람직한 실시형태에서, 소정 노드의 개인 키에 대한 액세스를 갖는 유일한 방법은 그 노드에 대한 링크들의 체인을 복호화하는 것이다); 그러나, 단순히 옳은 개인 키를 갖는 것은 만약 콘텐츠를 복호화하는데 승인되는 경우, 디바이스가 콘텐츠를 복호화하는 능력을 갖는 것을 가리킬 뿐이다.
바람직한 실시형태들에서, 디바이스가 콘텐츠를 액세스하도록 승인되는지 여부는 라이센스 내의 제어 프로그램에 의해 결정되며, 특히, 어떻게 "타겟팅" 되느냐에 의해 결정된다. "타겟팅" 은 특정 노드 (또는 노드들) 이 콘텐츠의 사용을 수행하기 위하여 "도달 가능" 하는 것을 구체화하도록 제어 프로그램 내의 요구 사항을 추가는 것을 의미한다. 위에서 도시된 실시예들에서, 제어 프로그램은 통상 특정 노드 "특별 프로젝트 팀" 가 소비 디바이스에 의해 도달 가능하다는 것을 구체화한다.
몇몇 경우에, 예를 들어, 새로운 극비 제품에 대한 컴포넌트들에 대해 경쟁 입찰하는 다수의 공급자들과 함께 일하는 회사 ("Company") 의 새로운 제품 개발 팀과 같이 하나 이상의 노드에 타겟팅된 라이센스들을 갖는 것이 바람직할 수 있다. 프로젝트의 초기 단계 동안 공급자 A 와 공급자 B (경쟁자들) 둘 다는 "SecretProjectX" 에 대한 링크들을 갖는다고 가정하자. 공급자 A 는 그의 아이디어를 SecretProjectX 의 모든 구성원들과 공유하기를 원하나, 모든 구성원들이 공급자 B 에게 무심코 누설하기를 원치 않는다. 공급자 A 는 ("SecretProjectX 도달 가능") AND ("Supplier A 도달 가능" 또는 "Company 도달 가능") 과 같도록 이들 라이센스들을 타겟팅할 수 있다. Company 가 (공급자 B 포함한) SecretProjectX 의 모든 사람들에게 이 정보를 무심코 공유하는 경우, 공급자 B에서의 그것들은 보는데 승인되지 않고, Company 에 대한 어떤 비-공개 위험을 제한하며 공급자 A 의 거래-비밀들을 손실하는 전망을 제거한다.
1.14. 실시예 : 헬스케어 ( Healthcare ) 기록들
도 23 은 본 명세서에서 기술된 시스템들과 방법들이 헬스케어 기록들을 관리하는데 어떻게 적용될 수 있는지를 기술한다. 의료 기록들이 상이한 수준의 기밀성을 갖고, 시스템의 다른 엔티티들 (예를 들어, 환자들dl나 의사들, 보험 회사들 등) 에 대한 상이한 액세스 권리들을 승인하는 것이 바람직하다고 가정하자. 예를 들어, 몇몇 기록들이 환자에게만 보여지도록 승인하는 것, 몇몇 기록들이 그 환자의 의사에게만 보여지도록 승인하는 것, 몇몇 기록들이 환자에게 볼 수 있으나 그 환자의 의사에게 편집 가능하게 되도록 승인하는 것, 몇몇 기록들이 모든 보험 회사들에게 보여지도록 승인하는 것, 몇몇 기록들이 환자의 보호 회사에게만 보여지도록 승인하는 것 등이 바람직할 수도 있다.
도 23 에 도시된 바와 같이, 본 헬스케어 에코시스템 (2300) 은 본 명세서의 다른 곳에서 기술된 것들과 같이 노드들 및 링크들과 같은 DRM 오브젝트들을 이용하여 모델화될 수 있다. 예를 들어, 노드들은 환자 (2302), 그 환자의 의사들 (2304), 그 환자의 보험 회사들 (2306), 그 환자의 디바이스들 (2308 및 2310) 에 환자의 의사들 (2312) 중 한 명의 의사 또는 그 의사의 계산 디바이스들 (2314 및 2316), 모든 의사들의 그룹 (2318), 어떤 전문의 의사들의 그룹 (2320), 의료 기관 (2322), 보험 회사 (2324), 그 보험 회사에 의해 사용된 계산 디바이스 (2326), 모든 보험 회사들의 그룹 (2328) 등이 할당될 수 있다.
환자의 의사가 의사의 PC 를 사용하여 환자와 관련한 의료 기록을 생성한다고 가정하자. 예를 들어, 의료 기록은 의사의 메모들이나 진단들, 처방 지시들, 환자에 대한 지시 등에 대한 다수의 필드들을 갖는 문서 템플릿을 포함할 수도 있다. 또한, 템플릿은 의사에게 문서 및/또는 그 문서의 개별 필드를 통제하는 보안 폴리시들을 선택하도록 허락할 수도 있다. 예를 들어, 의사의 적용은 표준 보안 폴리시 선택들 세트를 줄 수도 있고, 의사의 선택을 획득함에 따라, 그들의 선택들에 기초한 라이센스를 자동으로 생성하고 의료 기록의 보호된 (예를 들어, 암호화된) 콘텐츠와 관련시킬 수도 있다.
본 실시예를 위하여, 라이센스가 환자, 그 환자를 치료하는 모든 헬스케어 제공자들, 및 그 환자에 대한 보험 보호를 제공하는 모든 보험 회사들에 대한 보기 액세스를 승인한다고 가정하자. 또한, 설명의 목적을 위해, 라이센스가 의료 기관 x 에 대해서만 편집 권리를 승인한다고 가정하자.
패키징 애플리케이션은 (단순히 표준 템플릿의 마우스 클릭을 포함할 수도 있는) 의사의 폴리시 사양 입력을 수락하고 이하에 도시된 것과 같은 제어 프로그램을 포함하는 라이센스를 생성한다:
Figure 112012048347665-pat00036
이후, 의료 기록과 그와 연관된 라이센스는 의료 기록들의 중앙 데이터베이스나 특별 의료 파운데이션에 의해 운용된 데이터베이스 등 내에 저장될 수 있다. 다음으로, 환자 Y 가 다른 헬스케어 제공자에게 방문하고, (예를 들어, 증명 폼에 서명함으로써) 그의 인가된 헬스케어 제공자들 중 하나로서 그 헬스케어 제공자를 증명하는 경우, 그 헬스케어 제공자는 헬스케어 제공자들 노드에 승인된 환자 Y 에 대한 링크을 얻고, 여기서 헬스케어 제공자는 그 컴퓨터 시스템에 환자 Y 에 대한 링크를 저장할 수 있다. 이후, 그 헬스케어 제공자가 의사 X 에 의해 생성된 의료 기록을 얻고 있는 경우, 그 헬스케어 제공자는 환자 Y 가 승인한 헬스케어 제공자가 새로운 헬스케어 제공자의 컴퓨터 시스템에서 도달하기 때문에 그 의료 기록에 대한 보기 액세스를 얻을 수 있다. 한편, 비-승인 헬스케어 제공자가 (암호화된) 의료 기록의 사본을 얻고 있는 경우, 요구된 노드들 (즉, 환자 Y의 노드, 환자 Y 가 승인한 헬스케어 제공자들 모두에 대한 노드 및 환자 Y 가 승인한 보험 회사들 모두에 대한 노드) 중 어떤 것도 비-승인 헬스케어 제공자의 컴퓨터 시스템에서 도달 가능하지 않기 때문에 비-승인 헬스케어 제공자는 의료 기록의 사본을 액세스할 수 없다.
그러나, 상기 도시된 제어 프로그램 실시예는 예를 들어, 위급 상황에서 헬스케어 제공자가 보호된 의료 기록을 액세스하도록 필요하나 제어 프로그램의 조건들을 만족하지 못하는 경우 (예를 들어, 의료 기록에 대한 응급 액세스를 행하도록 시도한 헬스케어 제공자 환자 Y 의 헬스케어 제공자로서 이미 등록되어 있지 않기 때문에) 호출될 수 있는 오버라이드 (override) 특징을 포함함을 주목한다. 또한, 그러나, 응급 액세스 예외의 호출이 호출 및/또는 다른 상황들에 관해 정보를 자동으로 기록할 것을 야기하고, 본 실시예에서 (환자의 선호된 헬스케어 제공자- 즉, 환자에 의해 명확히 증명된 엔티티- 및/또는 환자 자신에게) 전송될 통지를 야기하는 것에 주목한다. 남용의 기록이 존재할 수 있기 때문에, 응급 예외와 이러한 의무들의 연관은 예외의 남용을 방해할 수도 있다.
본 실시예 프로그램이 본 명세서에 기술된 시스템들과 방법들의 소정 실시형태들의 설명을 용이하도록 제공되었음으로 이해된다. 예를 들어, 시스템이 응급 예외들에 대한 지원을 포함하는지 여부는 통상 시스템 설계의 요구 사항들 및 희망에 의존한다. 따라서, 예를 들어, 몇몇 실시형태들은 응급 예외들을 지원하지 않고, 다른 실시예들은 응급 예외들을 지원하나, (예를 들어, EmergencyException 플래그가 "true" 로 설정되고 AND 모든 의사들 노드가 도달 가능하도록 요구함으로써) "모든 의사들" 의 클래스에 대해 이러한 예외들을 호출하는 엔티티들의 클래스를 제한하고, 다른 실시예들은 여전히 응급 예외들을 지원하나, (바람직한 실시형태에서 의무를 따르는 능력이 없으면 콘텐츠를 액세스할 수 없기 때문에) 그것과 함께 강제 의무를 연관시키지 않고, 대신 (예를 들어, 예외를 호출하는 능력을 남용하지 않도록 헬스케어 제공자들을 신뢰하고/신뢰하거나 남용을 방지하기 위한 사업 증명 및 법률 시스템에 의지함으로써) 시행에 대한 비-기술적, 법률적 또는 제도적 수단에 대한 의존할 수도 있다.
상시 제공된 실시예들에 대해 행할 수 있는 또 다른 변수는 그 의사가 기록을 액세스하는데 사용하는 컴퓨터 (및 결국 도달 가능성 분석을 만족하는 필요한 링크들을 잠재적으로 포함하는 컴퓨터) 에 앉아 있는 다른 사람에 대항 되는 것과 같이, 의사 또는 특히 지명된 의사가 실제로 의료 기록을 액세스하는 의사인 것을 보다 강하게 시험할 것을 요구할 수도 있다. 이러한 더욱 강한 형식의 증명은 임의의 적절한 방식으로 시행될 수 있다. 예를 들어, 패스워드나 동글, 생체 식별 메커니즘 등을 이용하여 의료 기록들을 액세스하는데 사용된 소프트웨어 및/또는 의사의 컴퓨터를 보호함으로써 적용 또는 시스템 수준에서 전부 또는 부분적으로 시행될 수도 있다. 대안적으로나 부가적으로, 소정 의료 기록들과 연관된 제어 프로그램들은 동글의 존재를 확인하는 것과 같이 이런 보다 강력한 신분 증명을 요구하거나 패스워드를 얻기 위해 호스트를 요구하는 등의 의무 또는 조건을 자체적으로 포함할 수 있다.
1.15. 실시예 : 가입들
도 24 는 본 명세서에 존재하는 시스템들 및 방법들이 전자식 가입 서비스의 상황에서 어떻게 사용될 수 있는가에 대한 설명이다. 예를 들어, 사용자 (앨리스) 가 인터넷 서비스 제공자 (XYZ ISP) 로부터 재즈 음악을 가입을 얻고자 희망한다고 가정하자. 인터넷 서비스 제공자는 무료인 시험 가입을 포함한 다양하게 상이한 옵션들을 제공할 수도 있으나, (예를 들어, 한 곡을 5 회 플레이함으로써 또는 5 개의 다른 곡들을 각 한 번씩 플레이함으로써 등) 오직 만료 전까지 5 회 가입 콘텐츠를 플레이하도록 사용될 수 있다. 또한 시험 가입은 오직 다소 저급 형식 (예를 들어, 줄어든 충실도나 해상도) 으로 콘텐츠를 이용 가능하게 한다. 앨리스는 그녀의 개인 컴퓨터를 이용하여 서비스 제공자의 인터넷 웹사이트를 액세스하고, 시험 가입을 선택한다. 이후, 서비스 제공자는 링크 오브젝트 (2400) 와 에이전트 (2401) 를 발행하고, 그들을 앨리스의 개인 컴퓨터 (2406) 에 전송한다. 에이전트 (2401) 은 앨리스가 시험 콘텐츠를 사용하는 횟수의 정보를 얻는데 사용되는 앨리스의 보안 상태 데이터베이스의 상태를 초기화하도록 액션 가능하다. 링크 (2400) 는 앨리스의 ISP 계정 노드 (2402, Alice@XYZ_ISP) 에서 가입 노드 (2404) 까지이며, 앨리스가 콘텐츠 피스를 플레이하는 요청하는 경우, 추가 플레이가 허용되는지 여부를 확인하는 에이전트 (2401) 에 의해 설정된 상태 변수의 현재 값을 확인하는 제어 프로그램을 포함한다.
앨리스가 그녀의 PC 에 콘텐츠 피스를 다운로드하고 그 콘텐츠 피스를 플레이하도록 시도하는 경우, 그녀의 PC 상의 DRM 엔진은 가입 노드 (2404) 가 그 콘텐츠를 플레이하기 위하여 도달 가능하여야 함을 가리키는, 그 콘텐츠와 연관된 라이센스를 평가한다. 앨리스는 그녀의 PC 노드 (2406) 에서 그녀의 계정 노드 (2402) 까지의 링크 (2405) 를 수신하였을 때, 그녀의 ISP 에 그녀의 PC 이미 등록하였다. 따라서, DRM 엔진은 PC 노드 (2406) 를 가입 노드 (2404) 에 접속하는 링크 오브젝트들 (2405 및 2400) 을 소유하나; 콘텐츠를 플레이하는 앨리스의 요청을 승인하기 전에, DRM 엔진은 그 링크들이 포함한 임의의 제어 프로그램들을 실행함으로써 유효한지 여부를 확인한다. 링크 (2400) 내의 제어 프로그램이 실행되는 경우, DRM 엔진은 5 회 플레이가 이미 완료되었는지 여부를 결정하는 상태 데이터베이스 엔티티를 확인하고, 5 회 플레이가 완료되지 않은 경우 콘텐츠를 플레이는 그녀의 요청을 승인하나, 호스트 애플리케이션에 의무를 또한 발행한다. 이 의무는 호스트에 렌더링 전에 그 콘텐츠의 품질을 떨어뜨리도록 요구한다. 호스트 애플리케이션은 이 의무를 이행할 수 있는지를 결정하고, 그 콘텐츠를 렌더링하는 것을 속행한다. 그녀의 5 회 무료 시험-제공 플레이들에 대한 그 콘텐츠를 카운팅하기 전에 앨리스에게 콘텐츠를 미리 보기할 능력을 주기 위하여, 제어 프로그램은 또한 예를 들어, 콘텐츠 피스를 플레이하는 요청이 승인된 후 20 초에서 그 콘텐츠가 여전히 플레이되고 있는지 여부를 확인하는 콜백을 포함할 수도 있다. 그 콘텐츠가 여전히 플레이되고 있는 경우, 그 플레이 카운트는 감소되고, 그렇지 않으면 감소되지 않는다. 따라서, 앨리스는 가입 서비스에 의해 제공된 콘텐츠 아이템들 중 어떤 것에서 선택하고, 그녀의 시험 가입이 만료되기 전에 그들에 대한 임의의 5 회를 플레이할 수 있다.
일단 앨리스의 시험 가입이 완료되면, 앨리스는 월정 요금을 희망하는 것과 같이 많은 콘텐츠 아이템들을 플레이하는 것이 가능한 완전, 월정 가입을 구매할 것을 결정한다. 앨리스는 그녀의 PC 를 이용하여 가입을 위해 계약을 맺고, 그녀의 계정 노드 (2402) 에서 가입 노드 (2404) 까지의 링크 (2410) 를 수신한다. 그 링크는 한 달 동안만 유효함을 나타내는 제어 프로그램을 포함한다 (링크가 발행되었기 때문에 한 달이 지났는지 여부를 확인하는 상태 데이터베이스의 아이템을 확인한다). 이 링크 (2410) 은 앨리스의 PC 에 전송되며, 링크가 발행된 날짜를 나타내는 PC 의 DRM 엔진의 상태 데이터베이스의 적절한 아이템을 초기화하도록 액션 가능한 에이전트 프로그램과 함께 전송된다. 앨리스가 가입 서비스에서 콘텐츠 피스를 다운로드하고 그 콘텐츠를 플레이하도록 시도하는 경우, 그녀의 PC 의 DRM 엔진은 가입 노드에 대한 경로가 링크들 (2405 및 2410) 로 구성되어 존재하는가를 결정한다. DRM 엔진은 링크들 (2405 및 2410) 에 포함된 임의의 제어 프로그램을 실행하여 링크들이 유효한지 여부를 결정한다. 링크 (2410) 이 발행된 후 한 달 이내가 경과한 경우, 링크 (2410) 내의 제어 프로그램은 링크 (2410) 이 여전히 유효함을 나타내는 결과와 콘텐츠 피스를 플레이하는 앨리스의 요청을 리턴한다. 앨리스가 무료 시험 기간 동안 이미 얻었던 콘텐츠 피스를 플레이하도록 시도하는 경우, 그녀 PC 상의 DRM 엔진은 동일한 분석을 수행하고 그녀의 요청을 승인한다. 보안 데이터베이스의 TrialState 변수가 설정되지 않는지 여부를 시험 기간 동안 얻어진 콘텐츠 피스와 관련된 라이센스가 나타내기 때문에, 유일한 조건은 가입 노드가 도달 가능하여야 하는 것이고, 이번에 더 이상 유효하지 않은 링크 (2400) 가 아닌 링크 (2410) 를 통해 가입 노드가 앨리스의 PC 에서 다시 한번 가입 가능하기 때문에, 앨리스는 이제 다시 한번 그 콘텐츠를 액세스 할 수 있다. 따라서, 앨리스는 무료 시험 제공 동안 그녀가 얻었던 사본을 대신하는 콘텐츠 아이템의 제 2 사본을 얻을 필요가 없다. 유사하게, 앨리스가 동일한 서비스에 대한 가입자인 그녀의 친구, 밥 (Bob) 에게서 가입 콘텐츠 피스를 얻는 경우, 본 실시예에서, 콘텐츠의 라이센스가 가입 노드가 도달 가능한 것을 단순히 요구하고, 밥의 PC 또는 계정을 통해 도달 가능하지를 요구하지 않기 때문에, 앨리스는 역시 그 콘텐츠를 플레이할 수 있다.
상기 실시예들이 본 명세서에 기술된 시스템들과 방법들에 의해 할 수 있는 기능의 일부를 단순히 설명하도록 의도되고, 가입이 상기와 같이 기술되는 정확한 방식으로 구현되어야 하는 것을 제안하도록 의도하지 않음이 이해된다. 예를 들어, 다른 실시형태에서, 가입 콘텐츠 피스와 연관된 라이센스는 가입 노드 대신에 사용자의 노드와 바인딩되고, 이로써 상기 기술된 실시예에서 밥과 앨리스가 할 수 있었던 것과 같이 2 가입자가 콘텐츠를 공유하는 것을 방지할 수도 있다. 상기 실시예들에 대한 많은 다른 변화들을 행할 수 있음이 이해된다.
이하의 테이블은 상기 기술된 실시예에서 에이전트, 링크 및 라이센스 제어 프로그램에 대한 어떤 설명적인 의사-코드 (pseudo-code) 를 제공한다:
Figure 112012048347665-pat00037
Figure 112012048347665-pat00038
도 24 를 다시 한번 참조하면, 앨리스는 그녀의 이동 서비스 제공자와의 계정 2420 을 갖고, 여기서 계정 (2420) 은 그녀가 네트워크에 접속되어 남아 있는 한 유효하게 남는다. 앨리스는 링크를 전송한 교환 시 가입을 위한 특별 납부를 행하도록 요구되지 않고; 대신 갱신 링크들 (2424) 은 그녀가 네트워크에 접속하는 경우 자동으로 그녀의 전화에 전달된다. 이들 링크들은 그녀가 이동 서비스 제공자에 의해 제공된 콘텐츠 아이템들 또는 서비스들 중 어떤 것을 액세스할 수 있게 하며, 여기서 이들 링크들은 가입 노드 (2422) 가 도달 가능하는 것만을 요구하는 라이센스들을 갖는다. 앨리스가 이동 서비스 제공자들을 변경하는 경우, 그녀는 일단 그녀의 링크들 (2424) 이 만료하면, 이미 획득된 콘텐츠를 액세스하는 것이 가능하지 않다.
도 25 는 서비스 제공자가 홈 네트워크 도메인 (2500) 과 어떻게 상호 작용하는지의 실시예를 도시한다. 본 실시예에서, 디바이스들은 언제 한 번 최대 5 개의 디바이스들이 도메인에 속하게 허용하는 폴리시을 시행하는 홈 네트워크 도메인에 등록된다. 스미스 가족의 케이블 서비스 제공자는 홈 네트워크 도메인 (2500) 을 설정하는데 사용된 도메인 관리 소프트웨어를 제공하지 않았고, 케이블 서비스 제공자는 도메인 관리가 홈 네트워크 도메일 관리자 소프트웨어의 증명된 제공자에 의해 구현되었다는 것을 알고 있으며, 이로써 도메인 관리자 소프트웨어를 의도된 바와 같이 액션하도록 신뢰한다. 도 25 에 도시된 바와 같이, 스미스 가족은 앨리스의 전화와 PC, 칼 (Carl) 의 PVR, 및 Joe 의 PSP 를 도메인 (2500) 에 접속하여, 이들 디바이스들 각각에서 도메일 노드 (2500) 까지의 링크들이 발행되는 것으로 귀착한다. 새로운 콘텐츠가 예를 들어, PVR 에서 수신되는 경우, '551 출원에서 기술된 것들과 같이 검색 서비스들은 도메인 내의 다른 디바이스들이 그 콘텐츠와 어떤 필요한 링크들을 자동으로 얻게 할 수 있다. 링크들은 도메일 노드 (2500) 에서 서비스 제공자 계정 노드 (2502) 까지 발행된다. 케이블 서비스 제공자의 콘텐츠 피스는 광고가 보일 수 있도록 고속 전진이나 후진이 무능력하게 되어야 하는 의무를 갖는 라이센스를 갖는다. 칼의 PVR 과 PC 및 앨리스의 PC 는 그 의무를 시행할 수 있고, 이로써 그 콘텐츠를 플레이할 수 있다. 앨리스의 이동 전화는 그 의무를 시행할 수 없어, 이로써 그 콘텐츠에 대한 액세스가 거부된다.
1.16. 추가 실시예들 : 콘텐츠 및 저작권 공유
선행 실시예들이 설명하는 것과 같이, 본 명세서에 존재한 시스템들과 방법들의 실시형태들은 천성적 방식으로 전자 콘텐츠가 공유될 수 있다. 예를 들어, 본 명세서에서 기술된 시스템들과 방법들은 소비자들이 그들의 친구들 및 가족 구성원들과 오락 콘텐츠를 공유하게 사용되며, 더욱 널리, 권한이 없는 분배에 대항하여 동시에 보호될 수 있다. 예를 들어, 자동화된 피어-투-피어 검색과 통지 서비스들이 사용되어 하나의 디바이스가 콘텐츠나 연관된 저작권들을 얻는 경우, 다른 디바이스는 자동으로 그 콘텐츠를 인식하여 자동으로 갱신될 수 있는 가상 분배된 라이브러리를 제공할 수 있다. 예를 들어, 일 실시형태에서, 일 사용자가 소정 위치에서 휴대 디바이스 상에 콘텐츠나 저작권들을 얻는다면, 이후 집에 와서, 그 사용자의 가족의 디바이스들은 자동적으로 저작권들을 검색하고 이용한다. 반대로, 사용자가 사용자의 홈 네트워크 상의 디바이스에 저작권을 얻는 경우, 사용자의 휴대 디바이스들은 그 콘텐츠를 검색하고 사용을 위해 어디든 운반할 수 있다. 본 명세서에서 기술된 시스템들과 방법들의 바람직한 실시형태들은 상기 기술된 시나리오가 예를 들어 '551 출원에서 기술된 서비스 검색 및 검사 기술을 이용하여 완벽히 자동화되게 허용하는 서비스와 저작권 오브젝트들을 생성하는데 사용될 수 있다. 예를 들어, 특정 도메인에 등록된 디바이스는 (예를 들어, 저작권 및 콘텐츠의 공유하여) 서로에 대해 서비스를 제공할 수도 있고/있으며, 원격 서비스들은 콘텐츠의 로컬 공유를 촉진하도록 된다. 기술된 시스템들과 방법들은 그 자체로 사본의 생성을 방지하는데 집중되지 않고, 소비자에게 콘텐츠의 불법 분배자가 되는 것을 방지하면서 콘텐츠가 공유되는 것을 허용하는 네트워크 기술과 조화롭게 액션하도록 설계되는 DRM 프레임워크들의 생성을 가능하게 한다.
본 명세서에서 기술된 DRM 시스템들과 방법의 바람직한 실시형태들은 또한 다른 DRM 시스템의 저작권 표현 특징의 장황한 형식 없이 저작권들을 결정할 수 있다. 대신, 바람직한 실시형태들은 상황에 따라 상호 작용할 수 있는 세밀한 저작권 오브젝트들 세트를 이용한다. 이들 오브젝트들은 사용자들, 디바이스들, 콘텐츠, 및 이들의 그룹과 같은 엔티티들 간의 관계와 제어들을 기술한다. 예를 들어, 이러한 상황에 따른 상호 작용들은 (a) 사용자가 현재 가입하는 적법 콘텐츠 서비스에서 그 콘텐츠를 얻어지게 되기 때문에, (b) 사용자가 특정 가족 그룹의 일원이기 때문에, 그리고 (c) 디바이스가 그 특정 가족 그룹과 연관되기 때문에 디바이스에 콘텐츠의 소정 부분이 플레이되는 것을 결정하게 허락한다. 사용자들이 직관적으로 이해하는, 본 실시예에서 기술된 그것들과 같은 다양한 형식의 관계들이 있고, 본 명세서에서 기술된 시스템들과 방법들의 바람직한 실시형태들은 이들 종류의 관계들을 자연히 이해하는 시스템들의 생성을 가능하게 한다. 엔티티들간의 관계는 시간 경과 동안 생성되고, 파괴되고, 변경될 수 있고, 바람직한 실시형태들은 동적 네트워크된 환경에서 저작권들을 결정하는 자연적 방식-소비자가 자연적으로 이해할 수 있는 환경을 제공한다. 그럼에도 불구하고, 콘텐츠 배치자가 보다 전통적인 저작권 표현 방식을 사용하길 원하는 경우, 바람직한 실시형태들은 게다가 그것에 적응할 수 있다. 예를 들어, 도구들은 전통적 저작권 표현들을 상기에 기술된 것들과 같은 오브젝트들 세트들로 번역하도록 사용될 수 있고/있거나, 이러한 저작권 표현들에 대해 직접적으로 액션하는 DRM 엔진을 구현할 수 있다. 대안적으로, 몇몇 실시형태들에서, 디바이스들은 이러한 전통적 저작권 표현들을 이해하는데 필요하지 않고, 그들의 한정들에 의해 제한되지 않는다.
또한, 본 명세서에 기술된 시스템들과 방법들의 바람직한 실시형태들은 미디어 서비스의 매우 일반적인 개념이다. 브로드캐스트 서비스 및 인터넷 다운로드나 가입 서비스는 미디어 서비스들의 실시예들이다. 이들 서비스들과 연관된 제약들은 콘텐츠를 공유하는데 어렵게 만들 수 있다. 본 명세서에서 기술된 시스템들과 방법들의 바람직한 실시형태의 경우, 콘텐츠는 브로드캐스트, 광대역, 및 이동 서비스들로 얻어지고, 휴대 디바이스들을 포함한 가정의 네트워크된 디바이스들의 그룹상에 공유될 수 있다. 대안적으로나 추가적으로, 서비스들은 무선 접속을 통하여 피어-투-피어 방식으로 개별 디바이스들에 의해 제공될 수 있다. 예를 들어, 셀룰라 전화에 의해 사용 가능하게 된 WiFi 의 새로운 세대는 다른 디바이스들에게 콘텐츠 카탈로그 서비스들을 제공할 수 있다. 이러한 서비스는 다른 디바이스들로 하여금 어떤 콘텐츠가 디바이스에서 공유되는 것이 가능한가를 "확인" 하도록 허용한다. 서비스는 어떤 한정이 허용되거나 쉽게 제거되도록 저작권들을 결정하는데 사용될 수 있는 정보를 제공한다.
본 명세서에서 기술된 시스템들과 방법들의 바람직한 실시형태들은 하나의 서비스나 하나의 플랫폼에 한정되지 않는다. 상기 설명된 바와 같이, 바람직한 실시형태들은 "개인" 서비스들을 포함하여 다양한 서비스들와 함께 일할 능력이 있다. 이것은 홈 네트워크와 개인 네트워크가 점점 유비쿼터스화 됨에 따라 더욱더 중요해 진다. 예를 들어, 디지털 카메라들은 이제 네트워크 상에서 사진들을 공유하는 것을 매우 편리하게 하여 이제 WiFi 접속과 함께 이용 가능하게 한다. 사진의 공유를 자동화할 수 있는 것이 좋지만, 카메라는 자동화함에 따라 많은 다른 네트워크들과 조우할 것이다. 자동화된 공유는 편리하지만, 물론 개인 사진들은 개인적이다. 본 명세서에서 기술된 시스템들과 방법들의 실시형태들은 가족의 디바이스들 상에서 가족 내에 쉽게 공유되게 하나, 네트워크 상에 카메라를 우연히 조우하는 임의의 디바이스에 쉽게 공유되지 않는다. 일반적으로, 많은 디바이스들이 네트워크화됨에 따라, 이들 디바이스들 상에서 모든 콘텐츠의 저작권을 관리하는 것이 매우 중요해 진다. 네트워킹화의 목적은 네트워크화된 디바이스 상의 정보를 공유하도록 허용하는 것이지만, 네트워크들은 중첩하고 서로 병합한다. 네트워크들은 콘텐츠를 쉽게 공유하게 할 수 있으나, 임의로 공유되게 하지 말아야 한다. 따라서, 콘텐츠가 공유되어야 하는지 여부와 어떻게 공유되어야 하는지를 결정하기 위하여 콘텐츠, 사용자, 네트워크, 및 디바이스의 특징들에 의해 제공되는 콘텍스트를 이용할 수 있고, 네트워크-인식 응용인 DRM 시스템을 갖는 것이 바람직하다.
6. 콘텐츠 소비 및 패키징을 위한 참고 아키텍쳐
다음은 DRM-보호된 콘텐츠를 소비하는 소비 애플리케이션 (예를 들어, 미디어 플레이어) 과 소비 애플리케이션들에 타겟팅된 콘텐츠를 패키징하는 패키징 애플리케이션 (예를 들어, 서버상에 상주하는 애플리케이션) 에 대한 참고 구조의 설명이다.
1.17. 클라이언트 아키텍쳐
다음은 DRM 엔진의 설명적 실시형태가 콘텐츠를 소비하는 호스트 애플리케이션을 위해 수행하는 기능의 실시예를 제공한다.
1.17.1. DRM 엔진 인터페이스에 대한 호스트 애플리케이션
바람직한 실시형태에서 DRM 엔진들에 대해 요구된 API 가 없지만, 다음은 일 설명적 실시형태에서 호스트 애플리케이션에 대한 설명적 DRM 엔진 ("Octopus" DRM 엔진이라 칭함) 에 의해 제공된 인터페이스 형식의 하이-레벨 설명이다:
Octopus :: CreateSession ( hostContextObject ) -> Session - 호스트 애플리케이션 콘텍스트에 주어진 세션을 생성한다. 콘텍스트 오브젝트는 Octopus DRM 엔진에 의해 애플리케이션 내로 콜백을 행하도록 사용된다.
Session :: ProcessObject ( drmObject ) - 이 함수는 DRM 하위시스템에 속하는 것처럼 식별될 수 있는 미디어 파일들 내에 소정 형식의 오브젝트들을 조우하는 경우 호스트 애플리케이션에 의해 호출되어야 한다. 이러한 오브젝트들은 콘텐츠 제어 프로그램들, 멤버쉽 토큰들 등을 포함한다. 그러한 오브젝트들의 구문 (syntax) 과 의미 체계 (semantics) 는 호스트 애플리케이션에 대해 불명료하다.
Session :: OpenContent ( contentReference ) -> Content - 호스트 애플리케이션은 미디어 콘텐츠 파일과 상호 작용할 필요가 있을 때 이 함수를 호출한다. DRM 엔진은 순차적으로 콘텐츠에 관한 DRM 정보를 검색하고, 그 DRM 정보와 상호 작용하기 위해 사용될 수 있는 콘텐츠 오브젝트를 리턴한다.
Content :: GetDrmInfo () - 다른 상황에서 파일에 대한 일반적 메타데이터 내에 이용 가능하지 않는 콘텐츠에 관한 DRM 메타테이터를 리턴한다.
Content :: CreateAction ( actionInfo ) -> Action - 호스트 애플리케이션은 콘텐츠 객첵와 상호 작용하기 원하는 경우 이 함수를 호출한다. actionInfo 파라미터는 어떤 종류의 액션의 애플리케이션이 (예를 들어, 플레이) 수행하는데 필요한 가뿐만 아니라 필요 시 어떤 연관된 파라미터들을 특정한다. 함수는 이후 액션을 수행하고 콘텐츠 키를 검색하도록 사용될 수 있는 액션 오브젝트를 리턴한다.
Action :: GetKeyInfo () - 콘텐츠를 복호화하는 복호화 하위 시스템에 대한 필요한 정보를 리턴한다.
Action :: Check () - DRM 하위 시스템이 본 액션의 수행을 증명하는지 여부 (즉, Action::Perform() 가 성공인지 여부) 를 확인한다.
Action :: Perform () - 액션을 수행하고, 이 액션을 통제하는 규칙에 의해 특정되는 것과 같은 (그들의 부과 효과들을 갖고) 어떤 결과를 달성한다.
1.17.2. 호스트 서비스 인터페이스에 대한 DRM 엔진
다음은 호스트 애플리케이션의 설명적 일 실시형태에서 DRM 엔진의 설명적 일 실시형태에 의해 필요로 한 호스트 서비스 인터페이스의 일례이다.
HostContext :: GetFileSystem ( type ) -> FileSystem - DRM 하위 시스템이 독점적인 액세스를 갖는 가상 FileSystem 오브젝트를 리턴한다. 이 가상 FileSystem 은 DRM 상태 정보를 저장하는데 사용된다. 이 FileSystem 내의 데이터는 오직 DRM 하위 시스템에 의해 판독 가능하고 기록 가능해야 한다.
HostContext :: GetCurrentTime () - 호스트 시스템에 의해 유지된 것처럼 현재 날짜/시간을 리턴한다.
HostContext :: GetIdentity () - 이 호스트의 고유 ID를 리턴한다.
*HostContext :: ProcessObject ( dataObject ) - GDRM 오브젝트 내에 내장될 수 있으나, DRM 하위 시스템이 호스트 (예를 들어, 증명서들) 에 의해 관리되고 있는 것처럼 식별된 데이터 오브젝트를 호스트 서비스들에 다시 준다.
HostContext :: VerifySignature ( signatureInfo ) - 데이터 오브젝트 상의 디지털 서명의 유효성을 확인한다. 일 실시형태에서, signatureInfo 오브젝트는 XMLSig 요소 내에 발견된 정보와 동등한 정보를 포함한다. 호스트 서비스들은 서명을 유효화하는데 필요한 키 증명서들과 키들을 관리할 책임이 있다.
*HostContext :: CreateCipher ( cipherType , keyInfo ) -> Cipher - DRM 하위시스템이 데이터를 암호화하고 복호화하도록 사용할 수 있는 암호 오브젝트를 생성한다. 암호 형식들의 최소 세트는 정의되고, 암호 실시에 의해 요구된 키 정보를 기술하는 각 포맷에 대해 정의된다.
Cipher ::Encrypt( data )
Cipher ::Decrypt( data )
HostContext :: CreateDigester ( digesterType ) -> Digester - DRM 하위시스템이 몇몇 데이터에 대해 보안 해시를 계산하도록 사용할 수 있는 다이제스터 (digester) 오브젝트를 생성한다.
Digester ::Update( data )
Digester :: GetDigest ()
1.17.3. UML 시퀀스 다이어그램
도 26 은 선행 섹션들에서 개시된 설명적 API 들의 사용 및 예시적 실시형태에서 호스트 애플리케이션과 DRM 클라이언트 엔진 간에 발생하는 상호 작용들을 설명한다.
1.18. 패키저 참조 아키텍쳐
다음은 콘텐츠를 패키지하는 호스트 애플리케이션에 대해 패키징 엔진이 수행할 수도 있는 함수들의 일례를 제공한다. 실제, 패키징 애플리케이션은 구체적으로 패키징에 집중할 수도 있거나, (국지적으로 패키징되거나 네트워크의 다른 곳에서 패키징된) 보호된 콘텐츠를 또한 액세스하는 사용자 시스템에서 액션하는 범용 애플리케이션의 일부일 수 있다.
1.18.1. 패키징 엔진 인터페이스에 대한 호스트 애플리케이션
본 섹션은 "Octopus" 로서 불리는 참조 DRM 엔진과 관련되어 사용된 패키징 엔진과 호스트 애플리케이션간의 설명적 API 의 하이-레벨 설명을 제공한다.
Octopus :: CreateSession ( hostContextObject ) -> Session. 호스트 애플리케이션 콘텍스트가 주어진 세션을 생성한다. 이 함수에 의해 리턴되는 콘텍스트는 애플리케이션 내로 콜백을 행하도록 패키징 엔진에 의해 사용된다.
Session ::CreateContent(contentReferences[]) -> Content. 호스트 애플리케이션은 다음 단계들에서 라이센스 오브젝트와 연관되는 콘텐츠 오브젝트를 생성하기 위하여 이 함수를 호출한다. contentReferences 어레이에서 하나 이상의 콘텐츠 참조를 갖는 것은 번들 (예를 들어, 하나의 오디오 및 하나의 비디오 트랙) 내에 함께 바운딩되다는 것과 발행된 라이센스가 하나의 분할할 수 없는 그룹으로서 이들에 타겟팅되어야 한다는 것을 의미한다.
Content :: SetDrmInfo ( drmInfo ). drmInfo 파라미터는 발행되는 라이센스의 메타데이터를 특정한다. drmInfo 는 가상 머신을 위해 라이센스를 바이트코드로 번역하기 위한 가이드라인으로 역할을 한다.
Content :: GetDRMObjects ( format ) -> drmObjects. 이 함수는 패키저 엔진이 생성한 drmObjects 을 호스트 애플리케이션이 준비를 할 때 호출된다. 포맷 파라미터는 이들 오브젝트들에 대해 기대된 포맷 (예를 들어, XML 또는 이진 원자들) 을 가리킨다.
Content :: GetKeys () -> keys []. 이 함수는 콘텐츠를 암호화하기 위하여 키들이 필요할 때 호스트 패키징 애플리케이션에 의해 호출된다. 일 실시형태에서, 콘텐츠 참조마다 하나의 키가 존재한다.
1.18.2. 호스트 서비스 인터페이스에 대한 패키징 엔진
다음은 일 실시형태에서 제공하는 호스트 애플리케이션을 설명적 패키징 엔진이 필요한 종류의 인터페이스의 일례이다.
HostContext :: GetFileSystem ( type ) -> FileSystem. DRM 하위시스템이 독점적 액세스를 갖는 가상 FileSystem 오브젝트를 리턴한다. 이 가상 FileSystem 은 DRM 상태 정보를 저장하는데 사용될 수 있다. 이 FileSystem 내의 데이터는 오직 DRM 하위시스템에 의해 판독 가능하고 기록 가능해야 한다.
HostContext :: GetCurrentTime () -> Time. 호스트 시스템에 의해 유지된 것과 같이 현재 날짜/시간을 리턴한다.
HostContext :: GetIdentity () -> ID. 이 호스트의 고유 ID 를 리턴한다.
HostContext :: PerformSignature ( signatureInfo , data ). 패키징 엔진에 의해 생성된 몇몇 DRM 오브젝트들은 신뢰되어야 한다. 호스트에 의해 제공된 이 서비스는 특정 오브젝트를 서명하는데 사용된다.
HostContext :: CreateCipher ( cipherType , keyInfo ) -> Cipher. 패키징 엔진이 데이터를 암호화하고 복호화하는데 사용할 수 있는 암호 오브젝트 (데이터를 암호화하고 복호화할 수 있는 오브젝트) 를 생성한다. 일 실시형태에서, 암호 오브젝트는 콘텐츠키 오브젝트에서 콘텐츠 키 데이터를 암호화하는데 사용된다.
Cipher :: Encrypt ( data ). 데이터를 암호화한다.
Cipher :: Decrypt ( data ). 데이터를 복호화한다.
HostContext :: CreateDigester ( digesterType ) -> Digester. 패키징 엔진이 몇몇 데이터를 통해 보안 해시를 계산하는데 사용될 수 있는 디제스터 (digester) 오브젝트.
Digester :: Update ( data ). 디제스터 오브젝트에 데이터를 제공한다.
Digester :: GetDigest (). 디제스터를 계산한다.
HostContext :: GenerateRandomNumber (). 키를 생성하기 위해 사용될 수 있는 난수를 생성한다.
도 27 은 위에서 개시된 설명적 API 들의 사용의 일례, 및 일 실시형태에서 패키징 엔진과 호스트 애플리케이션 간에 발생하는 상호 작용을 도시하는 UML 다이어그램이다.
7. 오브젝트들
본 섹션은 DRM 엔진의 설명적 실시의 구성도로서 사용하는 DRM 오브젝트들에 관한 더 많은 정보를 제공한다. 우선, 콘텐츠 보호와 통제를 위한 DRM 엔진이 사용하는 오브젝트의 종류에 대한 상대적으로 하이-레벨 개요가 주어진다. 다음으로, 설명적 일 실시형태들에 사용된 몇몇 예시적 데이터 구조들에 따라 이들 오브젝트들에 대한 더 상세한 설명과 이들이 전달하는 정보를 제공한다.
1.19. 콘텐츠 보호와 통제 DRM 오브젝트들
도 6 와 관련하여 이미 기술된 바와 같이, 콘텐츠 통제 오브젝트들 (때때로 노드와 링크 오브젝트들을 갖는 집합적으로 "DRM 오브젝트들" 로서 불린다) 은 사용 규칙들 및 조건들을 보호된 콘텐츠와 연관시키는데 사용된다. 함께, 이들 오브젝트들은 라이센스를 형성한다.
도 6 에서 도시된 바와 같이, 콘텐츠 오브젝트 (614) 에 의해 나타낸 데이터는 키를 이용하여 암호화된다. 콘텐츠를 복호화하는데 필요한 그 키는 콘텐츠키 오브젝트 (602) 에 의해 나타내어지며, 콘텐츠를 암호화하는데 사용된 키와 콘텐츠 간의 바인딩은 보호기 오브젝트 (604) 에 의해 나타내어진다. 복호화 키의 사용을 통제하는 규칙들은 제어 오브젝트 (608) 에 의해 나타내어지며, 콘텐츠키 (602) 와 제어 오브젝트 (608) 간의 바인딩은 제어기 오브젝트 (606) 에 의해 나타내어진다. 일 실시형태에서, 신뢰된 시스템들은 오직 제어 오브젝트 (608) 의 바이트 코드에 의해 표현된 규칙들의 통제하에서 콘텐츠 복호화를 이용한다. 도 28a 는 도 6 에 도시된 것과 같이 라이센스의 더 상세한 설명이며, 일 실시형태에서 사용된 서명 체계를 설명한다.
1.19.1. 공통 요소들
일 실시형태에서, 오브젝트들은 공통 기본 특징을 공유한다: 오브젝트들은 각각 ID, 속성 리스트, 및 확장 리스트를 갖는다.
1.19.1.1. ID
오브젝트들은 고유 ID 를 갖는 다른 오브젝트들에 의해 참조된다. 일 실시형태에서, ID 들은 단순히 URI 들이며, 보통은 그들의 URI 가 URN 이다.
1.19.1.2. 속성들
속성들은 타입화된 값들이다. 속성들은 지명되거나 지명되지 않을 수 있다. 지명된 속성의 이름은 단순한 스트링 또는 URI 이다. 속성의 값은 단순한 타입 (문자열, 정수, 또는 바이트 어레이) 또는 복합 타입 (리스트 및 어레이) 이다. '리스트' 타입의 속성들은 지명된 속성들의 순서화되지 않은 리스트를 포함한다. '어레이' 타입의 속성들은 지명되지 않은 속성들의 순서화된 어레이를 포함한다.
오브젝트의 '속성들' 필드는 (가능한 빈) 지명된 속성들의 순서화되지 않은 집합이다.
1.19.1.3. 확장들
확장들은 선택적 여분 데이터나 필수적 여분 데이터를 갖도록 오브젝트들에 추가될 수 있는 요소들이다. 확장들은 타입화되고, 게다가 고유 ID 들을 갖는다. 확장들은 내재적이나 외부적일 수 있다.
1.19.1.3.1. 내부적 확장들
내부적 확장들은 확장된 오브젝트들 내에 포함된다. 내부적 확장들은 특정 확장에 대한 확장 데이터 타입이 오브젝트를 사용하는 실시에 알려지도록 요구되는지 여부를 나타내는 'critical'플래그를 갖는다. 일 실시형태에서, 이해할 수 없는 데이터 타입을 갖는 중요한 확장과 오브젝트가 조우하는 실시의 경우, 전체 오브젝트를 거절해야 한다.
일 실시형태에서, 내부적 확장의 ID 는 국지적으로 고유할 필요가 있다: 오브젝트는 동일 ID 를 갖는 2 개의 확장들을 포함할 수 없으나, 2 개의 다른 오브젝트들이 각각 다른 오브젝트의 확장의 그것과 같은 동일 ID 를 갖는 확장을 포함할 수 있다.
오브젝트의 '확장' 필드는 (가능하면 빈) 내부적 확장들의 순서화되지 않은 집합이다.
1.19.1.3.2. 외부적 확장들
외부적 확장들은 확장되는 오브젝트들 내에 포함되지 않는다. 외부적 확장들은 오브젝트에 독립적이고, 확장되는 오브젝트의 ID 를 포함한 'subject' 필드를 갖는다. 일 실시형태에서, 외부적 확장의 ID 는 광역적으로 고유할 필요가 있다.
1.19.2. 콘텐츠
일 실시형태에서, 콘텐츠 오브젝트는 "외부적" 오브젝트이다. DRM 엔진의 제어하에서는 아니지만, 호스트 애플리케이션 (예를 들어, 콘텐츠는 MP4 영화 파일이나 MP3 음악 트랙 등) 의 콘텐츠 관리 하위시스템하에서 포맷되고 저장된다. 일 실시형태에서, 콘텐츠에 대한 포맷은 ID 를 콘텐츠 페이로드 데이터와 연관시키기 위한 지원을 제공할 필요가 있다. 콘텐츠 페이로드는 포맷-의존 방식 (통상 AES 와 같은 대칭 암호) 으로 암호화된다.
1.19.3. 콘텐츠키
콘텐츠키 오브젝트는 고유한 암호화 키를 나타내고, ID 를 고유한 암호화 키와 연관시킨다. ID 의 목적은 보호기 오브젝트들과 제어기 오브젝트들이 콘텐츠키 오브젝트들에 참조를 행할 수 있게 하는 것이다. 콘텐츠키 오브젝트에 캡슐화된 실제 키 데이터는 콘텐츠를 복호화하도록 승인된 수취인에 의해서만 준비될 수 있도록 자체로 암화화된다. 콘텐츠키 오브젝트는 어떤 암호시스템이 사용되어 키 데이터를 암호화하는 가를 특정한다. 콘텐츠 키 데이터를 보호하는데 사용된 암호시스템은 키 분배 시스템이라 불린다. 상이한 키 분배 시스템들이 사용될 수 있다. 키 분배 시스템들의 일례는 상술된 Scuba 키 분배 시스템이다.
1.19.4. 보호기
보호기 오브젝트는 어떤 키가 사용되어 콘텐츠 오브젝트들의 데이터를 암호화하였는 가를 밝히는 것이 가능한 정보를 포함한다. 또한, 어떤 암호화 알고리즘이 사용되어 콘텐츠 오브젝트들의 데이터를 암호화하였는 가에 대한 정보를 포함한다. 일 실시형태에서, 보호기 오브젝트는 콘텐츠 오브젝트들에 참조들인 하나 이상의 ID 들을, 정확히 데이터를 암호화하도록 사용되는 키를 나타내는 콘텐츠키 오브젝트에 대한 참조인 하나의 ID 를 포함한다. 보호기가 하나 이상의 콘텐츠 오브젝트를 가리킨 경우, 모든 이들 콘텐츠 오브젝트들은 동일한 암호화 알고리즘과 동일 키를 이용하여 암호화되었던 데이터를 나타낸다. 일 실시형태에서, 사용된 암호시스템이 다른 데이터 아이템들에 대해 동일한 키를 이용하는 안전한 방식을 허용하지 않는다면, 보호기 오브젝트가 하나 이상의 콘텐츠 오브젝트에 대해 지적하는 것을 추천하지 않는다.
1.19.5. 제어
제어 오브젝트는 DRM 엔진으로 하여금 콘텐츠 상의 소정 액션들이 호스트 애플리케이션에 의해 요청될 때 승인되어야 하는지 여부에 관해 결정을 행하도록 허락하는 정보를 포함한다. 일 실시형태에서, 콘텐츠 키들의 사용을 통제하는 규칙들은 가상 머신에 의한 실행을 위해 바이트 코드로서 제어 오브젝트 내에 인코딩된다. 또한, 제어 오브젝트들은 고유 ID 를 가져 제어기 오브젝트에 의해 참조 될 수 있다. 일 실시형태에서, 제어 오브젝트들이 서명되어, DRM 엔진은 결정이 행하는데 사용되기 전에 제어 바이트 코드가 유효하고 신뢰되는 것을 검증할 수 있다. 또한, 제어 오브젝트의 유효성은 제어기 오브젝트에 포함된 보안 해시의 검증을 통해 부가적으로 도출될 수 있다.
1.19.6. 제어기
제어기 오브젝트는 DRM 엔진이 어떤 제어가 콘텐츠키 오브젝트들에 의해 나타내진 하나 이상의 키들의 사용을 통제하는지를 찾아내도록 허락하는 정보를 포함한다. 제어기 오브젝트는 참조하는 제어 오브젝트와 콘텐츠키 오브젝트들에 제어기 오브젝트를 바인딩하는 정보를 포함한다. 일 실시형태에서, 제어기 오브젝트들은 (예를 들어, 제어기 오브젝트들을 서명하도록 허락하는 증명을 갖는 패키저 애플리케이션에 의해) 서명되어 패키저 애플리케이션을 통제하는 제어 오브젝트와 콘텐츠키 간의 바인딩의 유효화뿐만 아니라 실재 키 데이터와 콘텐츠키 ID 간의 바인딩의 유효성을 확립할 수 있다. 제어기 오브젝트의 서명은 공개 키 서명 또는 대칭키 서명이나 이들의 조합일 수 있다. 또한, 제어기 오브젝트에 의해 참조된 제어 오브젝트의 다이제스트가 제어기 오브젝트 내에 포함되는 경우, 제어 오브젝트의 유효성은 제어 오브젝트의 서명을 개별적으로 검증해야할 것 없이 도출될 수 있다.
1.19.6.1. 대칭 키 서명
일 실시형태에서, 대칭 키 서명은 제어기 오브젝트들에 대한 선호된 서명 타입이 있고, 제어기 오브젝트의 MAC (Message Authentication Code) 를 계산함으로써 이행되며, MAC 는 대응한 콘텐츠키 오브젝트에 의해 나타낸 키와 동일한 키를 가지고 입력된다. 일 실시 형태에서, 이 MAC 에 대한 정규 방법은 동일 배치에서 사용된 PKI 서명 알고리즘 를 위해 선택된 하나로서 동일 해시 알고리즘을 갖는 HMAC 를 이용하는 것이다.
1.19.6.2. 공개 키 서명
이 타입의 서명은 제어기 오브젝트의 서명자의 ID 가 알려질 필요가 있을 때 사용된다. 이 타입의 서명은 이 오브젝트의 유효성을 어서트하고 있는 당사자의 개인 키로 서명하여 공개 키 서명 알고리즘을 가지고 이행된다. 일 실시형태에서, 이 타입의 서명을 이용하는 경우, 대칭 키 서명은 또한 존재하고, 제어기 오브젝트뿐만 아니라 공개 키 서명 둘 다를 서명하여, 개인 키로 서명된 당사자가 또한 콘텐츠키 오브젝트에서 전달된 콘텐츠 키의 실제 값의 인식을 가졌음을 이 타입의 서명은 보장될 수 있다.
1.20. ID 및 키 관리 DRM 오브젝트들
상술된 바와 같이, 노드 오브젝트들은 DRM 프로파일에서 엔티티들을 나타내고, 어떤 암시적 또는 명시적 의미 체계들 (semantics) 도 노드 오브젝트들이 나타내는 바를 정의하도록 사용되지 않는다. 시스템의 소정 배치 (DRM 프로파일) 는 어떤 타입의 당자자들이 존재하는지와, 다른 노드 오브젝트들이 어떤 역할들과 ID 들을 나타내는지를 정의한다. 그 의미 체계 정보는 통상 노드 오브젝트의 속성들을 이용하여 표현된다.
링크 오브젝트들은 노드들 간의 관계를 나타낸다. 또한, 링크 오브젝트들은 링크가 콘텐츠 키 도출를 위해 사용되도록 허용하는 소정 암호 데이터를 부가적으로 포함할 수 있다. 단순히 노드들에 대해서와 같이, 일 실시형태에서, 어떤 암시적 또는 명시적 의미 체계들도 링크 관계가 어떤 의미인지를 정의하도록 사용되지 않는다. 링크의 from 노드와 to 노드가 소정 DRM 프로파일에서 어떻게 나타내는지에 의존하여, 링크 관계의 의미는 멤버쉽, 오너쉽, 연합 (association), 및/또는 관계의 많은 다른 타입들을 표현할 수 있다. 통상의 DRM 프로파일에서, 몇몇 노드 오브젝트들은 사용자들을 나타낼 수 있고, 다른 노드들은 디바이스들을 나타낼 수 있으며, 다른 노드들은 사용자 그룹들 또는 AD 들 (Authorized Domains) 을 나타낼 수 있다. 이러한 상황에서, 디바이스들과 사용자들 간의 링크들은 오너쉽 관계를 나타낼 수도 있고, 사용자들과 사용자 그룹들이나 AD 들 간의 링크들은 멤버쉽 관계들을 나타낼 수도 있다. 도 28b 는 하나의 예시적 실시형태에서 노드들과 링크들 간의 구조 및 상호관계를 설명한다.
1.20.1. 노드
노드 오브젝트는 시스템에서 엔티티를 나타낸다. 노드 오브젝트의 속성들은 DRM 프로파일의 콘텍스트에서 노드 오브젝트에 의해 나타낸 역할 또는 ID 와 같이, 노드 오브젝트가 무엇을 나타내는지의 소정 관점들을 정의한다. 또한, 노드 오브젝트는 노드 오브젝트 (통상, 노드에 의해 나타낸 엔티티 또는 그 노드를 관리할 책임이 있는 어떤 노드) 의 기밀 부분들에 대한 액세스를 갖는 하위시스템에 대한 기밀 정보를 타겟팅하기 위해 사용되는 기밀성 비대칭 키 쌍을 가질 수도 있다. 소정 노드에서 타겟팅된 기밀성 정보는 그 노드의 기밀성 공개 키로 암호화될 수 있다. 또한, 본 명세서의 다른 곳에서 기술된 것과 같이, 노드 오브젝트는 공유 비대칭 키 쌍을 갖을 수도 있고, 공유 비대칭 키는 시스템이 콘텐츠키 분배를 위해 콘텐츠키 분배 시스템을 이용하는 경우 링크 오브젝트들에 관해 사용될 수 있다. 바람직한 실시형태에서, 링크 또는 제어 오브젝트들에 의해 참조되거나 암호 표기적으로 타겟팅된 정보를 수신할 필요가 있는 유일한 엔티티들은 대응 노드 오브젝트들을 가질 필요가 있다.
1.20.2. 링크
링크 오브젝트는 그래프의 정점들이 노드 오브젝트들인 그래프에서 방향성 에지가 존재하다는 서명된 어서션 (assertion) 이다. 노드들과 링크들의 소정 세트에 대해, 그래프에서 노드 X 정점과 노드 Y 정점 간의 방향성 경로가 존재하는 경우, 노드 X 와 노드 Y 간의 경로 ( path ) 가 있다고 말한다. 노드 X 와 노드 Y 간의 경로가 있을 때, 노드 Y 는 노드X 에서 도달 가능하다고 말한다. 링크 오브젝트들에 의해 나타낸 어서션들은 다른 노드들에서 도달 가능한 어떤 노드들을 표현하는데 사용된다. 콘텐츠 오브젝트들을 통제하는 제어들은 액션이 수행되도록 허용하기 전에, 소정 노드들이 그 액션을 수행하는 엔티티와 연관된 노드에서 도달 가능하는 것을 확인할 수 있다. 예를 들어, 노드 D 가 콘텐츠 오브젝트에서 "플레이" 액션을 수행하기를 원하는 디바이스를 나타내는 경우, 그 콘텐츠 오브젝트를 통제하는 제어는 소정 사용자를 나타내는 소정 노드 U 가 노드 D 에서 도달 가능하지 여부를 테스트할 수 있다. 노드 U 가 도달 가능한지 여부를 결정하기 위하여, DRM 엔진은 노드 D 와 노드 U 간의 경로를 확립할 수 있는 링크 오브젝트들 세트가 있는지 여부를 확인할 수 있다.
일 실시형태에서, DRM 엔진은 링크 오브젝트들을 이용하여 노드 그래프에서 경로들의 존재를 결정하기 전에 링크 오브젝트들을 검증한다. 링크 오브젝트들을 서명하는데 사용된 증명서 시스템 (예를 들어, x509v3) 의 특정 특징들에 의존하여, 링크 오브젝트들은 제한된 존속 기간들을 받거나, 취소될 수 있다. 일 실시형태에서, 어떤 키들이 링크 오브젝트들을 서명할 수 있는지, 어떤 링크 오브젝트가 생성될 수 있는지를 통제하는 폴리시들과 링크 오브젝트들의 존속 기간들은 DRM 엔진에 의해 직접 다뤄지지 않는다. 대신, 그러한 폴리시들은 노드의 속성 정보에 영향을 준다. 어떤 폴리시들을 시행하는 임무를 촉진하기 위하여, 일 실시형태에서는, 추가적 제약 확인을 가지고 표준 증명서 포맷들을 확장하는 방법을 제공한다. 이들 확장들은 링크들을 서명하는 키들에 대한 증명서에 유효한 제약들을 표현하는 것이 가능하여, 링크가 어떤 타입의 노드들과 접속하는지와 같은 제약들뿐만 아니라 다른 속성들은 링크가 유효하게 고려되기 전에 확인될 수 있다.
일 실시형태에서, 링크 오브젝트는 링크의 유효성을 제한하는데 사용될 수 있는 제어 오브젝트들을 포함할 수 있다. 또한, 일 실시형태에서, 링크 오브젝트는 사용자에게 키 분배를 위한 공유 키들을 제공하는 암호 키 도출 데이터를 포함할 수도 있다. 암호 데이터는 메타데이터에 더하여, 공유 공개 키 및/또는 "to" 노드의 공유 대칭 키로 암호화된, "from" 노드의 개인 및/또는 대칭 공유 키들을 포함한다.
1.21. 데이터 구조들
다음의 단락들은 설명적 일 실시형태에서 각 타입의 오브젝트가 갖는 필드들을 정의하여 더 상세히 위에서 언급된 오브젝트들에 대한 설명적 오브젝트 모델을 기술한다. 데이터 구조들은 상대적으로 단순한 오브젝트 설명 구문 (syntax) 을 이용하여 기술된다. 각각의 오브젝트 타입은 부모 클래스 (이것은 "is-a" 관계이다) 를 확장할 수 있는 클래스에 의해 정의된다. 클래스 설명들은 단순한 추상 타입들 "string" (문자열), "int" (정수 값), "byte" (8-비트 값), 및 "Boolean" (참 또는 거짓) 의 식이나 그들 데이터 타입들 또는 그들 타입들을 포함한 복합 구조들에 대한 어떤 특정 인코딩을 정의하지는 않는다. 오브젝트들이 인코딩되거나 표시되는 방식은 엔진의 구현에 따라 달라질 수 있다. 실제, DRM 엔진의 사용의 소정 프로파일은 어떻게 필드들이 표시되는지를 (예를 들어, XML 스키마 (schema) 를 이용하여) 특정할 수 있다.
설명적 일 실시형태에서, 다음의 표기들이 사용된다:
class ClassName {
field1;
field2;
....
}
클래스 타입을 정의한다. 클래스 타입은 이질성 복합 데이터 타입 (또는 오브젝트 타입이라 불린다) 이다. 이 복합 타입은 각각 단순 또는 복합 타입인 하나 이상의 필드로 이루어진다. 각 필드는 상이한 타입일 수 있다.
type[] 동질성 복합 데이터 타입 (리스트 또는 어레이 타입이라 불린다) 을 정의한다. 이 복합 타입은 0 이상의 동일한 타입의 요소들로 이루어진다 (리스트가 비어 있을 때 0).
String 단순 타입: 문자열을 나타낸다
Int 단순 타입: 정수 값을 나타낸다
Byte 단순 타입: 0 과 255 사이의 정수 값을 나타낸다
Boolean 단순 타입: 불리언 값 (참 또는 거짓) 을 나타낸다
class SubClass extends SuperClass {…} 또다른 클래스 타입을 확장하는 클래스 타입을 정의한다. 또 다른 클래스를 확장하는 클래스는 그 자신의 필드에 더하여 확장한 클래스 (슈퍼클래스 (superclass) 라 불린다) 의 모든 필드들을 포함한다.
Abstract class {…} 추상 클래스 타입을 정의한다. 추상 클래스 타입들은 확장될 수 있는 타입들이나, 그들 자신들에 의해 결코 사용되지 않는다.
{type field;} 선택적 필드를 정의한다. 선택적 필드는 그것을 포함하는 복합 데이터 타입으로부터 생략될 수 있는 필드이다.
(type field;) 포함 복합 필드를 위한 정규 바이트 시퀀스를 계산할 때 뛰어넘는 필드를 정의한다.
class SubClass extends SuperClass(field=value) {…} 클래스 타입의 하위클래스를 정의하고, 그 하위클래스의 모든 경우에 대해, 수퍼클래스의 소정 필드의 값이 언제나 고정값과 같은 것을 특정한다.
1.21.1. 공통 구조들
설명적 일 실시형태에서, 다음의 공통 구조들이 사용된다:
abstract class Octobject {
{string id;}
Attribute[] attributes;
InternalExtension[] extensions;
}

class Transform {
string algorithm;
}

class Digest {
Transform[] transforms;
string algorithm;
byte[] value;
}
class Reference {
string id;
{Digest digest;}
}
1.21.1.1. 속성들
일 실시형태에서, 4 종류의 속성들이 있다: IntegerAttribute, StringAttribute, ByteArrayAttribute, 및 ListAttribute, 각각은 이름 및 타입을 갖는다.
abstract class Attribute {
{string name;}
string type;
}

class IntegerAttribute extends Attribute(type='int' {
int value;
}

class StringAttribute extends Attribute(type='string' {
string value;
}

class ByteArrayAttribute extends Attribute(type='bytes' {
byte[] value;
}

Class ListAttribute extends Attribute(type='list' {
Attribute[] attributes; // must all be named
}

Class ArrayAttribute extends Attribute(type='array' {
Attribute[] attributes; // must all be unnamed
}
1.21.1.1. 확장들
토론하의 설명적 일 실시형태에서, 2 가지 타입의 확장들이 있다: Octobject 내에서 수행되는 내부적 확장들 및 Octobject 외부에서 수행되는 외부적 확장들.
Figure 112012048347665-pat00039
몇몇 실시형태들에서, 소정 실시에 의해 ExtensionData 의 특정 타입이 이해되지 않을 지라도 오브젝트의 서명을 검증하는데 중요하다. 따라서, 일 실시형태에서는, dataDigest 필드를 갖는 우회 수준이 첨가된다. 데이터가 특정 오브젝트의 콘텍스트 내에 서명의 일부일 것을 ExtensionData 의 사양이 위임하면, dataDigest 필드는 존재한다. 이후, ExtensionData 를 이해하고, 따라서 그 정규 표현을 계산할 능력이 있는 실시는 다이제스트 (digest) 를 검증할 수 있다. 이러한 실시형태에서, 데이터가 서명의 일부가 아닐 것을 ExtensionData 의 사양이 위임하면, dataDigest 필드는 존재하지 않는다.
1.21.2. 노드 오브젝트들
class Node extends Octobject {
}
1.21.3. 링크 오브젝트들
class Link extends Octobject {
string fromId;
string toId;
{Control control;}
}
1.21.4. 제어 오브젝트들
class Control extends Octobject {
string protocol;
string type;
byte[] codeModule;
}
1.21.5. 콘텐츠키 오브젝트들
abstract class Key {
string id;
string usage;
string format;
byte[] data;
}

abstract class PairedKey extends Key {
string pairId;
}

class ContentKey extends Octobject {
Key secretKey;
}
일 실시형태에서, 각 키는 고유 ID , 포맷 , (널 (null) 일 수 있는) 사용, 및 데이터를 갖는다. '사용 (usage)' 필드는 만약 비어 있지 않다면, 키가 사용될 수 있는 목적을 특정한다. 보통 콘텐츠 키들에 대해, 사용 필드는 비어 있다. 위에서 기술된 것과 같은 키 분배 구성이 사용되는 일 실시형태에서, 사용 필드는 공유 키 또는 기밀성 키인지 여부를 특정할 수도 있다. '포맷' 필드는 (예를 들어, 대칭 키들에 대해 'RAW' 나 RSA 개인 키들에 대해 'PKCS#8' 등과 같은) '데이터' 필드의 포맷을 특정한다. '데이터' 필드는 '포맷' 필드에 따라 포맷된 실제 키 데이터를 포함한다.
(RSA 키들과 같은) 키 쌍의 일부인 키들에 대해, 추가 필드 'pairId' 는 쌍마다 고유 ID 를 주어, 쌍은 다른 데이터 구조들에서 참조될 수 있다.
일 실시형태에서, 키 오브젝트 내의 데이터 필드는 오브젝트의 실제 표현이 키의 암호화된 사본을 포함하더라도 실제 키의 일반 텍스트 값이다 (즉, 해싱되는 키의 일반 텍스트 값이다).
1.21.6. 제어기 오브젝트들
class Controller extends Octobject {
Reference controlRef;
Reference[] contentKeyRefs;
}
8. 가상 머신 ( Virtual Machine )
본원에 설명된 DRM 엔진의 바람직한 실시형태들은 콘텐츠에 대한 액세스를 관리하는 제어 프로그램들을 실행하기 위해 가상 머신 (virtual machine) (본원에서 때때로 "제어 가상 머신", "제어 VM", 또는 간단하게 "VM" 이라고도 불린다) 을 이용한다. 이러한 가상 머신의 예시적인 실시형태들이 이하 설명되고, 이러한 예시적인 실시형태에 대해 이루어질 수 있는 다양한 변형들 및 설계 고려사항들도 설명된다. DRM 엔진의 일 예시적인 실시형태 ("Octopus" 라고 불린다) 를 갖는 가상 머신의 일 예시적인 실시형태 ("Plankton" 가상 머신이라 불린다) 의 통합이 또한 설명된다. 하지만, 본원에 설명된 디지털 권한 관리 엔진, 아키텍쳐, 및 다른 시스템들 및 방법들의 실시형태들은 임의의 적합한 가상 머신과 함께 이용될 수 있고, 일부 실시형태들에서는 가상 머신이 전혀 없이도 이용될수 있으며, 따라서, 가상 머신의 예시적인 실시형태에 관해 이하 제공된 상세한 내용들은 예시를 위한 것이고 한정을 위한 것이 아니라는 것을 알 것이다.
바람직한 실시형태에서, 제어 VM 은 전통적 가상 머신이고, 매우 작은 코드 풋프린트로 다양한 프로그래밍 언어들을 이용하여 구현하기 쉽도록 설계된다. 실행 속도 또는 코드 밀도에 대한 과도한 관심 없이, 최소 사양으로 설계된 간단한 스택 지향 명령 셋트에 기초한다. 콤팩트 코드가 요구되는 상황에서, 가상 머신의 바이트 코드를 압축하기 위해 데이터 압축 기술들이 이용될 수 있다.
바람직한 실시형태들에서, 제어 가상 머신은 낮은 또는 높은 레벨의 프로그래밍 언어들에 대한 타겟으로서 적합하도록 설계되고, 어셈블러, C, 및 FORTH 를 지원한다. 또한, Java 또는 커스텀 (custom) 언어들과 같은 다른 언어들에 대한 컴파일러들이 코드를 가상 머신에 의해 이용되는 포맷 (예를 들어, 바이트 코드) 으로 컴파일하기 위해 비교적 간단한 방식으로 형성될 수 있다는 것을 알 수 있을 것이다. 일 실시형태에서, 제어 가상 머신은 프로세서 상에서 또는 실리콘에서 직접 실행되지 않고 호스트 환경 내에 호스트되도록 설계된다. 바람직한 실시형태들에서, 가상 머신을 위한 자연스런 호스트 환경은 DRM 엔진이고, 본원에 설명된 가상 머신 아키텍쳐가 다른 상황에서 대안적으로 또는 추가적으로 사용될 수도 있다.
도 29 는 제어 가상 머신 (2902) 의 예시적인 구현의 동작 환경을 나타낸다. 도 29 에 나타낸 바와 같이, 일 실시형태에서, 가상 머신 (2902) 은 그것의 호스트 환경 (2904) 의 콘텍스트 (context) 내에서 실행되고, 호스트 환경 (2904) 은 프로그램들 (2906) 을 실행시킴으로써 가상 머신에 의해 필요한 기능들의 일부를 구현한다. 통상적으로, 제어 VM 은 호스트 환경을 구현하는 DRM 엔진 (2908) 내에서 실행된다. 도 29 에 나타낸 바와 같이, 바람직한 데이터베이스에서, 가상 머신 (2902) 및 DRM 엔진 (2908) 은 상태 정보의 지속적인 저장을 위한 안전 데이터베이스 (2910) 에 대한 액세스를 갖는다.
1.22. 아키텍쳐 ( Architecture )
1.22.1. 실행 모델 ( Execution Model )
바라직한 실시형태들에서, VM 은 코드 모듈들의 바이트 코드에 저장된 명령들을 실행함으로써 프로그램들을 실행한다. 이들 명령들의 일부는 시스템 호출들을 만들어서 프로그램 자체의 외부에서 구현되는 함수들을 호출할 수 있다. 시스템 호출들은 VM 자체에 의해 구현될 수 있고, 또는 호스트 환경에 위임될 수도 있다.
일 실시형태에서, VM 은 코드 모듈들에 저장된 명령들을 메모리로 로딩된 바이트 코드들의 스트림으로서 실행시킬 수 있다. VM 은 프로그램 카운터 (Program Counter; PC) 라 불리는 가상 레지스터를 보유하고, 이는 명령들이 실행됨에 따라 증가된다. VM 은 OP_STOP 명령을 만나고, 빈 호출 스택을 갖는 OP_RET 명령을 만나고, 또는 런타임 예외가 발생할까지 순차적으로 각각의 명령을 실행시킨다. 점프들은 상대적 점프 (현재 PC 값으로부터의 바이트 오프셋) 또는 절대 어드레스 중 어느 하나로서 특정된다.
1.22.2. 메모리 모델 ( Memory Model )
일 실시형태에서, VM 은 비교적 간단한 메모리 모델을 이용하고, 메모리는 데이터 메모리와 코드 메모리로 분리된다. 예를 들어, 데이터 메모리는 단일, 플랫, 연속적 메모리 공간이고, 어드레스 0 에서 시작하는 것으로서 구현될 수 있고, 호스트 애플리케이션 또는 호스트 환경의 힙 (heap) 메모리 내부에 할당된 바이트들의 어레이로서 구현될 수 있다. 일 실시형태에서, 할당된 공간 외부의 메모리를 액세스하려는 시도들은 런타임 예외를 야기할 것이고, 이는 프로그램 실행의 종결을 야기할 것이다.
데이터 메모리는 가상 머신에 의해 현재 로딩되는 수개의 코드 모듈들 간에 잠재적으로 공유된다. 데이터 메모리의 데이터는 메모리 액세스 명령들에 의해 액세스될 수 있고, 일 실시형태로, 32-비트 또는 8-비트 액세스 중 어느 하나일 수 있다. 32-비트 메모리 액세스들은 빅-엔디언 (big-endian) 바이트 순서를 이용하여 수행된다. 일 바람직한 실시형태에서, 가상 머신-가시적 메모리 및 호스트 관리 메모리 (즉, 호스트 CPU 가상 또는 물리적 메모리) 사이의 정렬과 관련하여 어떠한 가정들도 이루어지지 않는다.
일 실시형태에서, 코드 메모리는 플랫, 연속적 메모리 공간이고, 어드레스 0 에서 시작하며, 호스트 애플리케이션 또는 호스트 환경의 힙 메모리 내에 할당된 바이트들의 어레이로서 구현될 수 있다.
VM 은 하나를 초과하는 메모리 모듈의 로딩을 지원할 수도 있다. VM 이 수개의 코드 모듈들을 로딩한다면, 일 실시형태에서, (각각의 모듈의 데이터가 상이한 어드레스에 바람직하게 로딩됨에도 불구하고) 모든 코드 모듈들이 동일한 데이터 메모리를 공유하지만, 각각은 그 자신의 코드 메모리를 가지며, 따라서, 하나의 코드 모듈에서 다른 코드 모듈의 코드로의 점프를 야기하는 점프 명령을 방지한다.
1.22.3. 데이터 스택 ( Data Stack )
일 실시형태에서, VM 은 데이터 메모리에 저장된 32-비트 데이터 셀들을 나타내는 데이터 스택의 개념을 갖는다. VM 은 스택 포인터 (Stack Pointer; SP) 라고 불리는 가상 레지스터를 보유한다. 리셋 후에, SP 는 데이터 메모리의 끝단을 포인팅하고, 스택은 아래로 성장하게 된다 (데이터가 데이터 스택 상에서 푸쉬될 때, SP 레지스터는 감소된다). 스택 상의 32-비트 데이터 셀들은 스택 데이터를 참조하는 명령에 따라, 32-비트 어드레스들 또는 32-비트 정수들 중 어느 하나로서 해석된다. 어드레스들은 부호 없는 (unsigned) 정수들이다. 일 실시형태에서, 데이터 스택 상의 모든 다른 32-비트 정수 값들은 다르게 특정되지 않는다면 부호를 지닌 (signed) 정수들로서 해석된다.
1.22.4. 호출 스택
일 실시형태에서, VM 은 서브루틴 호출들을 만드는데 이용되는 호출 스택을 관리한다. 일 실시형태에서, 이 스택 상으로 푸쉬된 값들은 메모리-액세스 명령들에 의해 바로 판독 또는 기입 (write) 될 수 없다. 이 스택은 OP_JSR, OP_JSRR, 및 OP_RET 명령들을 실행할 때 VM 에 의해 내부적으로 사용된다. 주어진 VM 구현에서, 이러한 리턴 어드레스 스택의 사이즈는 최대치로 결정될 수 있고, 이는 오직 어떤 수의 네스트된 (nested) 호출들만을 허용할 것이다.
1.22.5. 의사 레지스터들 ( Pseudo Registers )
일 실시형태에서, VM 은 의사-레지스터 (pseudo-register) 들을 맵핑하기 위해 데이터 메모리스터들의 어드레스들이 결정된다. 예를 들면, 다음과 같은 레지스터들이 정의될 수 있을 것이다.
어드레스 사이즈 이름 설명




0




4




ID
현재 실행 코드 세그먼트의 32-비트 ID. 이 ID 는 모듈이 로딩될 때 VM 에 의해 선택된다. VM 은, 하나의 모듈의 코드 세그먼트로부터 다른 모듈의 코드 세그먼트를 변경하는 경우 이 레지스터를 변경한다.




4




4




DS
현재 실행 모듈의 데이터 세그먼트가 로딩된 절대적 데이터 어드레스에 대해 설정된 32-비트 값. 이 값은 VM 의 모듈 로더에 의해 결정된다.



8



4



CS
현재 실행 모듈의 코드 세그먼트가 로딩된 절대적 코드 어드레스에 대해 설정된 32-비트 값. 이 값은 VM 의 모듈 로더에 의해 결정된다.



12



4



UM
코드 모듈들의 데이터 세그먼트들이 로딩된 데이터 메모리 공간의 영역에 이은 제 1 바이트의 절대적 데이터 어드레스에 대해 설정된 32-비트 값.
1.22.6. 메모리 맵 ( Memory Map )
다음은 일 예시적인 실시형태의 데이터 메모리 및 코드 메모리의 레이아웃을 나타낸다.
데이터 메모리
어드레스 범위 설명
0 내지 15 의사-레지스터들
16 내지 127 장래의 VM/시스템 사용을 위해 보존됨
128 내지 255 애플리케이션 사용을 위해 보존됨




256 내지 DS-1
특정되지 않음. VM 은 임의의 어드레스에서 또는 256 이상의 어드레스에서 코드 모듈들의 데이터 세그먼트들을 로딩할 수도 있다. VM 이 256 보다 큰 어드레스를 선택한다면, 256 과 DS 사이의 어드레스 공간의 사용은 특정되지 않은 상태로 남겨진다. 이는 가상 머신 구현이, 적합하다고 보는 임의의 방식으로 자유롭게 사용할 수 있다는 것을 의미한다.
DS 내지 UM-1 가상 머신에 의해 로딩된 하나 이상의 코드 모듈들의 데이터 세그먼트들의 이미지.




UM 내지 끝단
공유된 어드레스 공간. 코드 모듈들의 데이터 및 데이터 스택은 이 공간을 공유한다. 데이터 스택은 이 공간의 끝단에 위치선정되고, 아래로 성장한다. 끝단은 데이터 메모리 공간의 최종 어드레스를 나타낸다. 데이터 메모리 공간의 사이즈는 코드 모듈 및 구현 요건들에 포함된 메모리 요건들에 기초하여 VM 에 의해 결정된다.
코드 메모리
어드레스 범위 설명




0 내지 CS-1
특정되지 않음. 가상 머신은 0 이상의 임의의 어드레스에서 코드 모듈들의 코드 세그먼트들을 로딩할 수도 있다. 가상 머신이 0 보다 큰 어드레스를 선택한다면, 0 과 CS 사이의 어드레스 공간의 사용은 특정되지 않은 상태로 남겨진다. 이는 가상 머신이, 적합하다고 보는 임의의 방식으로 자유롭게 사용할 수 있다는 것을 의미한다.
CS 내지 CS+사이즈(코드 세그먼트)-1 가상 머신에 의해 로딩된 코드 모듈의 코드 세그먼트의 이미지
*1.22.7. 실행 루틴들
코드 루틴을 실행하기 전에, 일 실시형태의 가상 머신 구현은 초기화된 데이터 스택의 최상부를 포인팅하기위해 데이터 스택 포인터를 리셋한다. 초기화된 데이터 스택은 루틴의 입력 데이터를 포함하고, 데이터 메모리의 끝단까지 확장된다. 초기화된 데이터 스택은 입력 인수들을 루틴으로 전달하기 위한 수단으로서 사용될 수도 있다. 초기화된 데이터 스택이 존재하지 않는 경우, 데이터 스택 포인터는 데이터 메모리의 끝단을 포인팅한다. 일 실시형태에서, 초기 호출 스택은 비어 있거나, 또는 루틴이 OP_RET 명령과 함께 종료되는 경우 루틴의 실행을 OP_STOP 명령 상에서 종료시킬 OP_STOP 명령을 포인팅하는 단일 터미널 리턴 어드레스를 포함하거나 어느 하나에 해당한다.
실행이 중지되는 경우, 빈 호출 스택을 갖는 최종 OP_RET 명령이 실행되었기 때문에, 또는, 최종 OP_STOP 명령이 실행되었기 때문에 중 어느 하나의 이유로 인해, 데이터 스택 상에 남겨진 임의의 데이터는 루틴의 출력으로서 간주된다.
1.22.8. 런타임 예외들
일 실시형태에서, 다음의 상태들 중 임의의 것이 실행의 즉각 중지를 야기하는 런타임 예외로서 간주된다.
● 현재 데이터 메모리 어드레스 공간 외부의 데이터 메모리를 액세스하려는 시도.
● 현재 코드 메모리 어드레스 공간 외부의 코드 어드레스에 도달하도록 PC 를 설정하거나, PC 가 그 코드 어드레스에 도달하도록 야기하려는 시도.
● 정의되지 않은 바이트 코드를 실행하려는 시도.
● 0 과 동일한 스택 최상부 피연산자를 이용하여 OP_DIV 명령을 실행하려는 시도.
● 0 과 동일한 스택 최상부 피연산자를 이용하여 OP_MOD 명령을 실행하려는 시도.
● 호출 스택의 오버플로우 (overflow) 또는 언더플로우 (underflow).
1.23. 명령 셋트
일 실시형태에서, 제어 VM 은 비교적 간단한 명령 셋트를 이용한다. 비록 한정적이기는 하지만, 명령들의 수는 임의의 복잡성을 갖는 프로그램들을 표현하기에 충분하다. 명령들 및 그들의 피연산자들은 바이트 코드들의 스트림에 의해 나타내어진다. 일 실시형태에서, 명령 셋트는 스택에 기반을 두고, OP_PUSH 명령을 제외하고는, 어떤 명령들도 직접 피연산자들을 갖지 않는다. 피연산자들은 데이터 스택으로부터 판독되고, 결과들은 데이터 스택 상으로 푸쉬된다. 일 실시형태에서, VM 은 32-비트 VM 이고, 모든 명령들은, 메모리 어드레스들 또는 부호를 지닌 정수들 중 어느 하나를 나타내는 32-비트 스택 피연산자들 상에서 동작한다. 부호를 지닌 정수들은 2 의 상보적 이진 인코딩으로 나타내어진다. 제어 VM 에 이용되는 일 예시적인 실시형태의 일 명령 셋트는 다음의 표와 같이 나타내어진다. 다음 표에서, 2 개의 피연산자들을 갖는, 명령들에 대한 스택 피연산자들은 "A,B" 로서 리스트되고, 여기서, 스택의 최상부 상의 피연산자는 마지막에 리스트된다 (즉, "B"). 그 외에 특정되지 않는다면, 일 예시적인 실시형태의 다음 설명에서 사용된 바와 같이 "푸쉬 (push)" 라는 용어는 32-비트 값을 데이터 스택의 최상부로 민다는 것을 의미한다.
OP 코드 이름 바이트 코드 피연산자 설명
OP_NOP 연산 없음 0 아무것도 하지 않음
OP_PUSH 상수 푸쉬 1 N (다이렉트) 32-비트 상수를 푸쉬
OP_DROP 드롭
2
데이터 스택의 최상부 셀을 제거
OP_DUP 복제
3
데이터 스택의 최상부 셀을 복제
OP_SWAP 스왑
4
최상위 2 개의 스택 셀들을 스왑
OP_ADD 가산 5 A,B A 와 B 의 합 (A+B) 을 푸쉬
OP_MUL 승산 6 A,B A 와 B 의 곱 (A*B) 을 푸쉬
OP_SUB 감산 7 A,B A 와 B 의 차 (A-B) 를 푸쉬
OP_DIV 제산
8
A,B A 의 B 에 의한 분할 (A/B) 을 푸쉬
OP_MOD 모듈로 (Modulo) 9 A,B A 모듈로 B (A%B) 를 푸쉬
OP_NEG 부정 (Negate)
10
A A 의 2 의 상보적 부정 (-A) 을 푸쉬



OP_CMP



비교



11



A,B
A 가 B 보다 작으면 -1 을 푸쉬하고, A 가 B 와 같으면 0 을 푸쉬하며, A 가 B 보다 크면 1 을 푸쉬

OP_AND

논리곱

12

A,B
A 와 B 의 비트 논리곱 (A&B) 을 푸쉬

OP_OR

논리합

13

A,B
A 와 B 의 비트 논리합 (A|B) 을 푸쉬

OP_XOR

배타적 논리합

14

A,B
A 와 B 의 비트 단위 배타적 논리합 (A^B) 을 푸쉬

OP_NOT

논리적 부정

15

A
A 의 논리 부정 (A 가 0 이면 1, A 가 0 이 아니면 0) 을 푸쉬

OP_SHL

좌로 시프트

16

A,B
B 비트만큼 좌로 논리 시프트된 A 를 푸쉬 (A<<B)

OP_SHR

우로 시프트

17

A,B
B 비트만큼 우로 논리 시프트된 A 를 푸쉬 (A>>B)
OP_JMP 점프 18 A A 로 점프


OP_JSR


서브루틴으로 점프


19


A
절대적 어드레스 A 에서 서브루틴으로 점프. PC 의 현재 값이 호출 스택 상으로 푸쉬된다.


OP_JSRR


서브루틴으로 점프 (상대적)


20


A
PC+A 에서 서브루틴으로 점프. PC 의 현재 값이 호출 스택 상으로 푸쉬된다.


OP_RET


서브루틴으로부터 복귀


21
서브루틴으로부터, 호출 스택으로부터 팝핑된 리턴 어드레스로 복귀.
OP_BRA 항상 분기 22 A PC+A 로 점프
OP_BRP 양의 값이면 분기 23 A,B A>0 이면, PC+B 로 점프
OP_BRN 음의 값이면 분기 24 A,B A<0 이면, PC+B 로 점프
OP_BRZ 0 이면 분기 25 A,B A=0 이면, PC+B 로 점프

OP_PEEK

피크

26

A
어드레스 A 에서 32-비트 값을 푸쉬

OP_POKE

포크

27

A,B
어드레스 B 에서 32-비트 값을 저장



OP_PEEKB



바이트 피크



28



A
어드레스 A 에서 8-비트 값을 판독, 그것을 32-비트로 0-확장, 및 그것을 데이터 스택 상으로 푸쉬

OP_POKEB

바이트 포크

29

A,B
어드레스 B 에서 값 A 의 최하위 8 비트를 저장
OP_PUSHSP 스택 포인터 푸쉬 30 SP 의 값을 푸쉬
OP_POPSP 스택 포인터 팝핑 31 A SP 의 값을 A 로 설정

OP_CALL

시스템 호출

32

A
인덱스 A 로 시스템 호출을 수행
OP_STOP 중지 255 실행 종결
1.24. 코드 모듈들
일 바람직한 실시형태에서, 코드 모듈들은 MPEG-4 파일 포맷과 유사 또는 동일한 원자-기반 (atom-based) 포맷으로 저장되고, 여기서, 원자들은 (예를 들어, 빅-엔디언 바이트 순서의 4 바이트에 의해 나타내어지는) 32-비트 사이즈, 그 다음, (예를 들어, 알파벳 문자들의 ASCII 값들에 대응하는 바이트들인) 4-바이트 타입, 그 다음, (예를 들어, 8 바이트의) 페이로드 (payload) 를 포함한다.
도 30 은 예시적인 코드 모듈 (3000) 의 포맷을 나타낸다. 도 30 을 참조하면, pkCM 원자 (3002) 는 최상위 레벨 코드 모듈 원자이다. 이는 서브-원자들의 시퀀스를 포함한다. 일 실시형태에서, pkCM 원자 (3002) 는 하나의 pkDS 원자 (3004), 하나의 pkCS 원자 (3006), 하나의 pkEX 원자 (3008), 및 가능하면 하나의 pkRQ 원자 (3010) 를 포함한다. pkCM 원자 (3002) 는 또한 임의의 수의 다른 원자들을 포함할 수도 있고, 일 실시형태에서, 존재한다면 무시된다. 일 실시형태에서, 서브-원자들의 순서는 특정되지 않고, 따라서, 구현은 특정 순서를 가정하여서는 아니된다.
1.24.1. pkDS 원자 ( pkDS Atom )
도 30 에서 나타낸 바와 같이, pkDS 원자 (3004) 는 데이터 메모리로 로딩될 수 있는 데이터 세그먼트의 메모리 이미지 (3005) 를 포함한다. 도 31a 에 나타낸 바와 같이, 일 실시형태에서, 메모리 이미지 (3005) 는 바이트들의 시퀀스 (3112) 에 의해 나타내어지고, 이는 하나의 헤더 바이트 (3114) 와 그에 이은 0 이상의 데이터 바이트들 (3116) 로 이루어진다. 헤더 바이트 (3114) 는 다음의 바이트들 (3116) 의 포맷을 식별하는 버전 넘버를 인코딩한다.
일 실시형태에서, 오직 하나의 버전 넘버가 정의되고 (즉, DataSegmentFormatVersion = 0), 이러한 포맷에서, 메모리 이미지의 데이터 바이트들은 메모리로 로딩될 원시 이미지 (raw image) 를 나타낸다. 가상 머신 로더는 헤더 바이트 (3114) 를 포함하지 않고, 메모리 이미지 (3105) 의 데이터 바이트들 (3116) 만을 로딩한다. 일 실시형태에서, 가상 모신 로더는 임의의 다른 포맷의 이미지를 로딩하기를 거절하도록 동작가능하다.
1.24.2. pkCS 원자 ( pkCS Atom )
도 30 에서 나타낸 바와 같이, pkCS 원자 (3006) 는 코드 메모리로 로딩될 수 있는 코드 세그먼트의 메모리 이미지 (3007) 를 포함한다. 도 31b 에 나타낸 바와 같이, 일 실시형태에서, 메모리 이미지 (3007) 는 바이트들의 시퀀스 (3120) 에 의해 나타내어지며, 이는, 하나의 헤더 바이트 (3122) 와 그에 이은 0 이상의 데이터 바이트들 (3124) 로 이루어진다. 헤더 바이트 (3122) 는 다음의 바이트들 (3124) 의 포맷을 식별하는 버전 넘버를 인코딩한다.
일 실시형태에서, 오직 하나의 넘버가 정의되고 (즉, CodeSegmentFormatVersion = 0), 도 31c 에 나타낸 바와 같이, 이러한 버전에서, 헤더 바이트 (3122) 에 이은 바이트는 다음의 바이트들 (3132) 의 바이트 코드 인코딩을 식별하는 버전 넘버를 포함하는 또 다른 헤더 바이트 (3130) 를 포함한다. 도 31c 에 나타낸 예에서, 헤더 바이트 (3130) 는 ByteCodeVersion = 0 을 식별하고, 이는, 전술한 바 있는 예시적인 명령 셋트에서 정의된 것과 같은 바이트 코드 값들을 갖는 원시 바이트 시퀀스를 포함한다. 일 바람직한 실시형태에서, 가상 머신 로더는 데이터 바이트들의 바이트 코드 부분 (3132) 만을 로딩하고, 헤더 바이트들 (3122, 3130) 은 로딩하지 않는다.
1.24.3. pkEX 원자 ( pkEX Atom )
도 30 을 다시 한번 참조하면, pkEX 원자 (3008) 는 엑스포트 엔트리들의 리스트를 포함한다. 도 30 에 나타낸 예에서, pkEX 원자 (3008) 의 처음 네 개 바이트들 (3009) 은 다음 엔트리들의 넘버와 동일한 빅-엔디언 바이트 순서로 32-비트 부호 없는 정수를 인코딩한다. 도 31d 에 나타낸 바와 같이, 각각의 다음 엑스포트 엔트리 (3160) 는 이름 사이즈 S 를 포함하는 하나의 바이트 (3162) 로서 인코딩되는 이름, 그 다음, 종결 제로 (3166) 를 포함하여, 이름의 ASCII 문자들을 포함하는 S 개의 바이트들 (3164), 그 다음, 31CS 원자에 저장된 바이트 코드 데이터의 시작부터 측정된, 명명된 엔트리 포인트의 바이트 오프셋을 나타내는 빅-엔디언 바이트 순서의 32-비트 부호 없는 정수 (3168) 로 이루어진다. 도 31e 는 오프셋 64 에서 엔트리 포인트 MAIN 에 대한 엑스포트 테이블 엔트리 (3170) 의 일 예를 나타내고, 여기서, 제 1 바이트 (3172) 는 이름 (즉, "MAIN") 의 사이즈 플러스 종결 제로가 5 바이트이고, 최종 4 개의 바이트들 (3174) 은 바이트 오프셋이 64 라는 것을 나타낸다.
1.24.4. pkRQ 원자 ( pkRQ Atom )
도 30 에 나타낸 바와 같이, pkRQ 원자 (3010) 는 코드 모듈의 코드를 실행시키기 위해 가상 머신 구현에 의해 충족될 필요가 있는 요건들을 포함한다. 일 실시형태에서, 이 원자는 선택적이며, 만약 이것이 존재하지 않는다면, 가상 머신은, 구현 프로파일에 의해 정의될 수도 있는 것과 같은 디폴트 구현 설정들을 이용한다.
일 실시형태에서, pkRQ 원자는, 각 필드에 대해 하나씩, 32-비트 부호 없는 정수 값들의 어레이로 이루어진다.
필드 이름 설명
vm Version VM 사양의 버전 ID


minDataMemorySize
코드에 이용가능한 데이터 메모리의 바이트들의 최소 사이즈. 이는 데이터 세그먼트의 이미지를 로딩하는 데 사용되는 데이터 메모리 및 데이터 스택에 의해 사용되는 데이터 메모리를 포함한다. 일 실시형태에서, VM 은 이 요건을 만족할 수 없다면 모듈을 로딩하기를 거절하여야 한다.


minCallStackDepth
VM 에 의해 지원되어야만 하는 네스트된 서브루틴 호출들 (OP_JSR 및 OP_JSRR) 의 최소 수. 일 실시형태에서, VM 은 이 요건들을 만족시킬 수 없다면 로딩하기를 거절하여야 한다.



Flags
VM 의 필요한 특징들을 알리기 위한 비트-플래그들의 셋트.

일 실시형태에서, VM 구현은 임의의 미지의 플래그 셋트를 가진 코드 모듈을 로딩하기를 거절하여야 한다. 예를 들어, 정의된 플래그들이 존재하지 않는다면, 일 실시형태에서, VM 구현은 이 플래그가 0 으로 설정되는 것을 체크하여야만 한다.
1.24.5. 모듈 로더 ( Module Loader )
가상 머신은 코드 모듈들을 로딩할 의무가 있다. 코드 모듈이 로딩될 때, pkDS 원자에 인코딩된 데이터 세그먼트 메모리 이미지 는 데이터 메모리의 메모리 어드레스에서 로딩된다. 이 어드레스는 VM 로더에 의해 선택되고, 코드가 실행될 때 DS 의사-레지스터에 저장된다.
pkCS 원자에 인코딩된 코드 세그먼트 메모리 이미지는 코드 메모리의 메모리 어드레스에서 로딩된다. 이 어드레스는 VM 로더에 의해 선택되고, 코드가 실행될 때 CS 의사-레지스터에 저장된다.
모드 모듈이 로딩될 때, "Global.OnLoad" 라는 이름의 특별한 루틴이, 만약 이 루틴이 엑스포트 테이블의 엔트리들에서 발견된다면, 실행된다. 이 루틴은 스택 상의 인수를 취하지 않고, 복귀시 정수 상태를 리턴하고, 성공을 의미하는 0 을, 에러 상태를 의미하는 음의 에러 코드를 리턴한다.
코드 모듈이 언로딩될 때 (또는 모듈을 로딩한 가상 머신이 제거될 때), "Global.OnUnload" 라는 이름의 특별한 루틴이, 만약 그것이 엑스포트 테이블에서 발견된다면, 실행된다. 이 루틴은 스택 상의 인수를 취하지 않고, 복귀시 정수 상태를 리턴하고, 성공을 의미하는 0 을, 그리고, 에러 상태를 의미하는 음의 에러 코드를 리턴한다.
1.25. 시스템 호출들 ( System Calls )
가상 머신의 프로그램들은 그들의 코드 모듈의 코드 세그먼트의 외부에서 구현되는 함수들을 호출할 수 있다. 이는 OP_CALL 명령의 사용을 통해 이루어지고, 호출할 시스템 호출 넘버를 특정하는 정수 스택 피연산자를 취한다. 시스템 호출에 따라, 구현은 상이한 코드 모듈의 바이트 코드 루틴일 수 있고 (예컨대, 유틸리티 함수들의 라이브러리), VM 의 본래의 구현 형식에서 VM 에 의해 바로 실행될 수 있으며, VM 의 호스트 환경과 같이 외부 소프트웨어 모듈에 위임될 수 있다.
일 실시형태에서, OP_CALL 명령이, 임의의 시스템 호출에 대응하지 않는 넘버를 포함하는 피연산자를 이용하여 실행된다면, VM 은 마치 SYS_NOP 시스템 호출이 호출된 것처럼 행동한다.
1.25.1. 시스템 호출 넘버들 할당 ( System Call Numbers Allocation )
논의되는 예시적인 실시형태에서, 시스템 호출 넘버들 (0 내지 1023) 은 결정된 시스템 호출들에 대해 보존된다 (이들 시스템 호출들은 모든 VM 구현들 상에서 동일한 넘버를 가질 것이다). 시스템 호출 넘버들 (1024 내지 16383) 은 VM 이 동적으로 할당하기 위해 이용가능하다 (예를 들어, System.FindSystemCallByName 에 의해 리턴된 시스템 호출 넘버들은 VM 에 의해 동적으로 할당될 수 있으며, 모든 VM 구현들 상에서 동일한 넘버들일 필요가 없다).
일 실시예에서, 다음과 같은 고정된 시스템 호출 넘버들이 특정된다.
연상기호 넘버 시스템 호출
SYS_NOP 0 System.NoOperation
SYS_DEBUG_PRINT 1 System.DebugPrint
SYS_FIND_SYSTEM_CALL_BY_NAME 2 System.FindSystemCallByName
SYS_SYSTEM_HOST_GET_OBJECT 3 System.Host.GetObject
SYS_SYSTEM_HOST_SET_OBJECT 4 System.Host.SetObject
1.25.2. 표준 시스템 호출들
일 실시형태에서, 몇몇 표준 시스템 호출들이 지원되고, 이는 기입 제어 프로그램들에 유용하다. 이들 호출들은 상기 테이블에 리스트된 고정된-넘버의 시스템 호출들, 및 동적으로 결정되는 넘버들을 갖는 시스템 호출들 (즉, 그들의 시스템 호출 넘버는 인수로서 전달된 그들의 이름을 이용하여 System.FindSystemCallByName 시스템 호출을 호출함으로써 검색된다) 을 포함한다.
일 실시형태에서, 음의 에러 코드를 리턴할 수 있는 본 섹션에서 기술된 시스템 호출들은 임의의 음의 값을 갖는 에러 코드를 리턴할 수도 있다. 섹션 8.4.4 는 특정의 예시적인 값들을 정의한다. 일 실시형태에서, 음의 에러 코드 값들이 리턴되고 사전정의되지 않은 것이라면, 그들은 그들이 마치 일반적 에러 코드 값 FAILURE 인 것처럼 해석된다.
System . NoOperation .
이 호출은 아무런 입력들도 취하지 않고, 아무런 출력들도 리턴하지 않으며, 아무것도 하지 않고 단순히 리턴한다. 이는 주로 VM 을 테스팅하는데 주로 이용된다.
System . DebugPrint .
이 호출은 그 입력으로서, 스택의 최상부로부터, 널-종결된 (null-terminated) 스트링을 포함하는 메모리 로케이션의 어드레스를 취하고, 아무런 출력도 리턴하지 않는다. 이 함수에 대한 호출은 텍스트의 스트링이 디버그 출력으로 프린트되도록 야기하고, 이는 디버깅에 유용할 수 있다. VM 구현이 (비전개 환경의 경우일 수도 있는 것과 같이) 디버그 텍스트를 출력하는 기능을 포함하지 않는다면, VM 은 호출을 무시하고 System.NoOperation 이 호출되었던 것처럼 취급할 수도 있다.
System . FindSystemCallByName .
이 호출은 그 이름으로 주어진 시스템 호출의 넘버를 발견한다. 이 호출은 그 입력으로서 (스택의 최상부로부터) 찾고 있는 시스템 호출의 이름을 포함하는 널-종결된 ASCII 스트링의 어드레스를 취하고, 특정 이름을 갖는 시스템 호출이 구현된다면 시스템 호출 넘버를, 시스템 호출이 구현되지 않는다면 ERROR_NO_SUCH_ITEM 을, 그리고 에러가 발생한다면 음의 에러 코드를 (스택의 최상부로) 리턴한다.
System . Host . GetLocalTime .
이 호출은 입력을 취하지 않고, 일 실시형태에서 1970년 1월 1일 00:00:00 부터 경과한 분 (minute) 들의 수와 동일한 32-비트 부호를 지닌 정수로서 표현되는, 호스트의 로컬 시간의 현재 값, 또는 음의 에러 코드를 스택의 최상부로 출력한다.
System . Host . GetLocalTimeOffset .
이 호출은 입력을 취하지 않고, 일 실시형태에서 로컬 시간과 UTC 시간 간의 차이 (즉, LocalTime - UTC) 의 분들의 수와 동일한 32-비트 부호를 지닌 정수 넘버로서 표현되는, 호스트의 (UTC 시간으로부터의) 현재 시간 오프셋을 스택의 최상부로 리턴한다.
System . Host . GetTrustedTime .
이 호출은 입력을 취하지 않고, 신뢰된 시간 (trusted time) 및 하나 이상의 플래그들의 값을 스택의 최상부로 리턴한다. 일 실시형태에서, 신뢰된 시간은 (시스템이 신뢰된 클럭을 포함한다면) 신뢰된 시간 클럭의 현재 값이고, 또는, 신뢰된 시간이 이용가능하지 않다면 음의 에러 코드이다. 일 실시형태에서, 신뢰된 시간의 값은 1970년 1월 1일 00:00:00 부터 경과한 분들의 수와 동일한 32-비트 부호를 지닌 정수 또는 음의 에러 코드로서 표현된다. 일 실시형태에서, 플래그들은 신뢰된 클럭의 현재 상태를 더 정의하는 플래그들의 비트-셋트이다. 일 실시형태에서, 에러가 발생한다면 (예를 들어, TrustedTime 이 음의 에러 코드라면), 플래그들에 대해 리턴되는 값은 0 이다.
일 실시형태에서, 플래그는 다음과 같이 정의된다.
비트 인덱스 (0 이 LSB ) 이름 설명

0

TIME_IS_ESTIMATE
TrustedTime 의 값은 그것의 가장 정확한 값에 있지 않다고 알려져 있고, 따라서, 추정치로 간주되어야 한다.
이 시스템 호출은 신뢰된 시간 소스와 동기화될 수 있는 신뢰된 클럭을 구현하고 단조로운 시간 카운터를 보유하는 시스템들과 관련이 있다. 신뢰된 시간의 값은 항상 정확하게 보장되는 것은 아니지만, 일 실시형태에서, 다음과 같은 성질들이 참이 될 필요가 있다.
● 신뢰된 시간의 값은 UTC 시간 값으로서 표현된다 (현재 장소가 안정하게 결정되지 않음에 따라, 신뢰된 시간은 로컬 시간 구역에 있지 않다).
● 신뢰된 시간은 결코 뒤로 가지 않는다.
● 신뢰된 클럭은 실제 시간보다 더 빨리 진행하지 않는다.
따라서, 본 예시적인 실시형태에서, TrustedTime 은 최종 동기화된 시간 (신뢰된 시간 소스로 동기화됨) 의 값과 현재 실제 시간 사이에 있다. 시스템이 그 신뢰된 클럭이 신뢰된 시간 소스를 이용한 최종 동기화 이후부터 방해 없이 연속적으로 그리고 정상적으로 동작하고 업데이트하였다고 판정할 수 있다면, TrustedTime 의 값은 추정치가 아니고 정확한 값이라고 판정하고, TIME_IS_ESTIMATE 플래그를 0 으로 설정한다.
일 실시형태에서, 신뢰된 클럭이 하드웨어 또는 소프트웨어 실패 상태가 발생된 것을 검출하였다면, 신뢰된 시간의 일 추정치를 리턴하는 것도 가능하지 않고, 에러 코드가 리턴되며, 리턴된 플래그들의 값은 0 으로 설정된다.
System . Host . GetObject :
이 시스템 호출은 프로그램이 가상 머신의 호스트에 의해 제공되는 오브젝트에 액세스하도록 허용하는 포괄적 인터페이스이다. System.Host.GetObject 호출은 다음과 같은 입력들 (스택의 최상부로부터 아래로 리스트됨) 을 취한다: Parent, Name, ReturnBuffer, 및 ReturnBuffer Size. 여기서, "Parent" 는 페어런트 컨테이너 (parent container) 의 32-비트 핸들이고; "Name" 은 페어런트 컨테이너와 관련된, 요청된 오브젝트로의 경로를 포함하는 널-종결된 스트링의 어드레스이며; "ReturnBuffer" 는 오브젝트의 값이 저장되는 메모리 버퍼의 어드레스이고; "ReturnBufferSize" 는 오브젝트의 값이 저장되는 메모리 버퍼의 바이트 단위의 사이즈를 나타내는 32-비트 정수이다.
System.Host.GetObject 호출은 다음과 같은 출력들 (스택의 최상부로부터 아래로 리스트됨) 을 생성한다: TypeID, Size. 여기서, "TypeID" 는 오브젝트 타입의 ID, 또는 호출이 실패한다면 음의 에러 코드이다. 요청된 오브젝트가 존재하지 않는다면, 리턴되는 에러는 ERROR_NO_SUCH_ITEM 이다. 리턴 값에 대해 제공되는 버퍼가 너무 작다면, 리턴되는 에러는 ERROR_INSUFFICIENT_SPACE 이다. 액세스되고 있는 오브젝트 트리의 일부가 액세스-제어된다면, 호출 프로그램은 오브젝트에 액세스할 권한을 가지지 아니하고, ERROR_PERMISSION_DENIED 가 리턴된다. 다른 에러 코드들이 리턴될 수도 있다. "Size" 는 호출자에 의해 제공되는 버퍼에서 리턴되는 데이터의 바이트 단위의 사이즈, 또는, 그 호출자가 너무 작은 버퍼를 제공한다면 요구되는 사이즈를 나타내는 32-비트 정수이다.
일 실시형태에서, 4 가지 타입의 호스트 오브젝트들이 존재한다: 스트링, 정수, 바이트, 어레이, 및 컨테이너.
오브젝트 타입 타입 ID 이름 타입 ID
컨테이너 OBJECT_TYPE_CONTAINER 0
정수 OBJECT_TYPE_INTEGER 1
스트링 OBJECT_TYPE_STRING 2
바이트 어레이 OBJECT_TYPE_BYTE_ARRAY 3
일 실시형태에서, 바이트 어레이 오브젝트의 값은 8-비트 바이트의 어레이이고, 스트링 오브젝트의 값은 UTF-8 로 인코딩된 널-종결 문자이며, 정수 오브젝트의 값은 32-비트 부호를 지닌 정수 값이다. 컨테이너들은 임의의 조합 형태의 임의의 수의 오브젝트들의 시퀀스를 포함하는 포괄적 컨테이너들이다. 컨테이너에 포함된 오브젝트들은 그 컨테이너의 칠드런 (children) 이라 불린다. 컨테이너의 값은 주어진 VM 인스턴스 내에 고유한 32-비트 컨테이너 핸들이다. 일 실시형태에서, 루트 컨테이너 '/' 는 고정된 핸들 값 0 을 갖는다.
일 실시형태에서, 호스트 오브젝트들에 대한 이름공간은 계층적이고, 여기서, 컨테이너의 차일드 오브젝트의 이름은 차일드의 이름을 페어런트 컨테이너의 이름에 '/' 문자에 의해 분리하여 부가함으로써 구성된다. 스트링 및 정수 오브젝트들은 칠드런을 가지지 아니한다. 예를 들어, 컨테이너가 "/Node/Attributes' 로 명칭되고 'Type' 로 명칭되는 스트링 차일드를 가진다면, '/Node/Attributes/Type' 가 차일드 스트링을 지칭한다.
이름 공간의 루트는 '/' 이다. 모든 절대적 이름들은 '/' 로 시작한다. '/' 로 시작하지 않는 이름들은 상대적 이름들이다. 상대적 이름들은 페어런트 컨테이너와 관련된다. 예를 들면, 페어런트 '/Node' 에 관련된 이름 'Attributes/Type' 는 절대적 이름 '/Node/Attributes/Type' 을 갖는 오브젝트이다.
일 실시형태에서, 컨테이너 오브젝트는 또한 실제 오브젝트 및 가상 이름들을 이용하여 액세스되는 가상 차일드 오브젝트들을 가질 수 있다. 가상 이름들은 호스트 오브젝트들에 붙지 않는 이름들이지만, 명명되지 않은 차일드 오브젝트들, 상이한 이름을 갖는 차일드 오브젝트들, 또는, 가상 차일드 오브젝트들 (차일드 오브젝트들은 컨테이너의 실제 칠드런이 아니지만, 요청될 때 동적으로 생성된다) 중 어느 하나를 식별하기 위한 규정이다.
오브젝트들에 대한 실시형태에서, 다음의 가상 이름들이 가상 차일드 오브젝트 이름들로서 정의된다.
가상 이름 설명

@Name
가상 스트링 오브젝트: 오브젝트의 이름.
오브젝트가 명명되지 않는다면, 오브젝트는 빈 스트링이다. 명명되지 않은 오브젝트들은 오직 컨테이너 오브젝트의 가상 이름 @<n> 을 통해서만 액세스 가능하다. (아래 참조)


@Size
가상 정수 오브젝트.
정수 값은 이 오브젝트를 저장하는데 필요한 바이트 단위의 사이즈와 동일하다. 정수들에 대해, 이 값은 4 이고; 스트링들에 대해, UTF-8 스트링 플러스 널 바이트 종결자를 저장하는 데 필요한 바이트 수이다. 바이트 어레이에 대해, 이는 어레이의 바이트 수이다.
@Type 가상 정수 오브젝트.
이 정수 값은 오브젝트의 타입 ID 와 동일하다.
컨테이너들에 대해, 다음과 같은 가상 이름들이 일 실시형태로서 가상 차일드 오브젝트 이름들로서 정의된다.
가상 이름 설명



가상 인덱스



@<n>
가상 오브젝트: 컨테이너 내의 <n> 번째 오브젝트.
컨테이너 내의 제 1 오브젝트는 인덱스 0 을 갖는다. <n> 은 10 진수로서 표현된다.
예: 'Attributes' 가 5 개의 차일드 오브젝트들을 포함하는 컨테이너라면, 'Attributes/@4' 는 컨테이너의 5 번째 차일드이다.
가상 사이즈 @Size 가상 정수 오브젝트.
정수 값은 컨테이너의 오브젝트들의 수와 동일하다.
실시예들
다음의 테이블은 호스트 오브젝트들의 계층의 일 예를 나타낸다.
이름 칠드런

노드 1
이름 칠드런
타입 "Device"
이름 칠드런

속성 2
이름 칠드런
컬러 "Red"
이름 칠드런
사이즈 78
이름 칠드런
도메인 "TopLevel"
본 실시예에서, System.Host.GetObject(parent=0, name="Node") 의 호출은 0 의 타입 ID (즉, 컨테이너) 를 리턴하고, 1 의 핸들 값이 호출자에 의해 제공되는 버퍼에 기입되도록 한다. 값의 사이즈는 4 바이트이다.
System.Host.GetObject(parent=0, name="Node/Attributes/Domain") 의 호출은 2 의 타입 ID (즉, 스트링) 를 리턴하고, 스트링 "TopLevel" 이 호출자에 의해 제공된 버퍼에 기입되도록 한다. 값의 사이즈는 9 바이트이다.
System.Host.GetObject(parent=1, name="Attributes/@1") 의 호출은 1 의 타입 ID (즉, 정수) 를 리턴하고, 정수 78 이 호출자에 의해 제공된 버퍼에 기입되도록 한다. 값의 사이즈는 4 바이트이다.
System.Host.GetObject(parent=0, name="DoesNotExit") 의 호출은 에러 코드 ERROR_NO_SUCH_ITEM 을 리턴한다.
System . Host . SetObject.
이 시스템 호출은 프로그램으로 하여금 가상 머신의 호스트에 의해 제공되는 오브젝트들을 생성, 기입, 및 파괴하도록 허용하는 일반적 인터페이스이다. 오브젝트 이름들 및 타입들의 설명은 전술한 System.Host.GetObject 호출에 대한 것과 동일하다. 모든 호스트 오브젝트들이 기입되거나 파괴되는 것을 지원하는 것은 아니며, 모든 컨테이너들이 차일드 오브젝트들이 생성되는 것을 지원하지는 않는다. 이 동작을 지원하지 않는 오브젝트에 대해 SetObject 호출이 이루어질 때, ERROR_PERMISSION_DENIED 가 리턴된다.
System.Host.SetObject 시스템 호출은 그 입력으로서 다음과 같은 파라미터들을 취하며, 이는 스택의 최상부로부터 아래로 리스트된다.
스택의 최상부
Parent
Name
ObjectAddress
ObjectType
ObjectSize

...
Parent: 페어런트 컨테이너의 32-비트 핸들
Name: 페어런트 컨테이너에 대해, 오브젝트로의 경로를 포함하는 널-종결된 스트링의 어드레스.
ObjectAddress: 오브젝트의 값이 저장되는 메모리 버퍼의 어드레스. 어드레스가 0 인 경우, 호출은 그 오브젝트를 파괴하라는 요청으로서 해석된다. 어드레스에서의 데이터는 오브젝트의 타입에 의존한다.
ObjectType: 오브젝트의 타입 ID.
ObjectSize: 오브젝트의 값이 저장되는 메모리 버퍼의 바이트 사이즈를 나타내는 32-비트 정수. 논의 하의 예시적인 실시형태에서, 사이즈는 정수 오브젝트에 대해 4 로 설정되고, 스트링 오브젝트들에 대해, 널 종결자를 포함하여, 메모리 버퍼의 사이즈로 설정된다. 바이트 어레이 오브젝트들에 대해, 사이즈는 어레이의 바이트들의 수이다.
System.Host.SetObject 시스템 호출은 출력으로서 ResultCode 를 스택의 최상부로 리턴한다. 호출이 성공하였다면 ResultCode 는 0 이고, 호출이 실패하였다면 ResultCode 는 음의 에러 코드이다. 호출이 오브젝트를 파괴하라는 요청이고 요청된 오브젝트가 존재하지 않는다면, 또는, 호출이 오브젝트를 생성 또는 기입하라는 요청이고 오브젝트의 페어런트가 존재하지 않는다면, 리턴되는 에러 코드는 ERROR_NO_SUCH_ITEM 이다. 액세스되는 오브젝트 트리의 일부가 액세스제어된다면, 호출 프로그램은 오브젝트를 액세스할 권한을 갖지 못하고, ERROR_PERMISSION_DENIED 가 리턴된다. 다른 에러 코드들이 또한 리턴될 수도 있다.
오브젝트가 컨테이너를 지칭하지 않고 ObjectAddress 가 0 이 아닌 때 특별한 경우가 존재한다. 이 경우, ObjectSize 파라미터는 0 으로 설정되고, ObjectAddress 의 값이 무시된다. 컨테이너가 이미 존재한다면, 아무것도 행해지지 않고, SUCCESS ResultCode 가 리턴된다. 컨테이너가 존재하지 않는다면, 컨테이너의 페어런트가 기입가능하고, 빈 컨테이너가 생성된다.
Octopus . Links . IsNodeReachable.
이 시스템 호출은, 주어진 노드가, 가상 머신의 이 인스턴스를 호스팅하는 엔티티와 연관된 노드로부터 도달가능한지 여부를 체크하기 위해 제어 프로그램에 의해 이용된다. 이 호출은 그 입력으로서 스택의 최상부로부터 NodeId 를 취하고, NodeId 는 도달가능성에 대해 테스트될 타겟 노드의 ID 를 포함하는 널-종결된 스트링이다. 출력으로서, 호출은 ResultCode 및 StatusBlockPointer 를 스택의 최상부로 리턴한다. ResultCode 는 노드가 도달가능하다면 0 인 정수값이고, 또는, 노드가 도달가능하지 않다면 음의 에러 코드이다. StatusBlockPointer 는 표준 ExtendedStatusBlock 의 어드레스이고, 또는 아무런 상태 블록도 리턴되지 않는다면 0 이다.
System . Host . SpawnVm.
이 시스템 호출은, 가상 머신의 신규 인스턴스가 생성되고 신규 코드 모듈이 로딩되도록 요청하기 위해 제어 프로그램에 의해 이용된다. 일 실시형태에서, 새롭게 생성된 가상 머신의 호스트는, 호스트 오브젝트 "/Octopus/Runtime/Parent/Id" 가 호출자의 아이덴티티로 설정되는 것을 제외하는, 호출자에 의해 노출된 것들과 동일한 호스트 오브젝트들을 노출시킨다. 일 실시형태에서, 이 호스트 오브젝트는 컨테이너이다. 이 컨테이너의 차일드는 각각이 이름을 나타내는 값을 갖는 타입 스트링의 오브젝트들이다. 일 실시형태에서, 이들 이름들의 의미들 및 구체적인 상세한 내용들은 가상 머신의 호스트의 사양에 의해 구체화된다.
일 실시형태에서, 호출자에 대해 코드를 리턴하는 가상 머신이 종결할 때, System.Host.ReleaseVm 을 호출함으로써 분명하게 릴리스되지 않았던 임의의 번식된 가상 머신은 System.Host.ReleaseVm 이 호출되었던 것처럼 시스템에 의해 자동으로 릴리스된다.
System.Host.SpawnVm 은 그 입력으로서 스택의 최상부로부터 ModuleId 를 취한다. ModuleId 는 신규 가상 머신 인스턴스로 로딩될 코드 모듈을 식별한다. 일 실시형태에서, 가상 머신의 호스트의 사양은, 이 모듈 ID 에 대응하는 실제 코드 모듈이 위치선정되는 메커니즘을 설명한다.
*System.Host.SpawnVm 호출은 ResultCode 및 VmHandle 을 스택의 최상부로 리턴한다. ResultCode 는, 호출이 성공적이었다면 0 의 정수값이고, 호출이 실패하였다면 음의 에러 코드이다. VmHandle 은 생성되었던 가상 머신의 인스턴스를 식별하는 정수 값이다. 호출이 실패하는 경우, 핸들은 0 으로 설정된다. 일 실시형태에서, 이 핸들이, 이 호출이 이루어지는 가상 머신의 내부에서 고유하도록 보장되기만 한다.
System . Host . CallVm.
이 시스템 호출은, System.Host.SpawnVm 시스템 호출을 이용하여 생성된 가상 머신 인스턴스들에서 로딩되는 코드 모듈들에서 구현되는 루틴들을 호출하기 위해 제어 프로그램에 의해 이용된다. 이 시스템 호출은 스택의 최상부로부터 다음과 같은 입력을 취한다.
스택의 최상부:
VmHandle
EntryPoint
ParameterBlockAddress
ParameterBlockSize
ReturnBufferAddress
ReturnBufferSize

...
VmHandle: System.Host.SpawnVm 을 호출함으로써 생성된 가상 머신의 핸들을 나타내는 정수값.
EntryPoint: 호출할 엔트리 포인트의 이름을 특정하는 널-종결된 스트링의 어드레스. 이 이름은, VmHandle 파라미터에 대응하는 가상 머신 인스턴스로 로딩된 코드 모듈의 엑스포트 테이블의 엔트리 포인트들 중 하나와 매칭될 필요가 있다.
ParameterBlockAddress: 피호출자로 전달될 데이터를 포함하는 메모리 블록의 어드레스. 아무런 파라미터들도 피호출자로 전달되지 않는다면, 이 어드레스는 0 으로 설정된다.
ParameterBlockSize: 어드레스 ParameterBlockAddress 에서의 메모리 블록의 바이트들의 사이즈, 또는, ParameterBlockAddress 가 0 인 경우에는 0.
ReturnBufferAddress: 호출자가 피호출자로부터 데이터를 수신할 수 있는 메모리 버퍼의 어드레스. 호줄자가 피호출자로부터 다시 돌아오는 임의의 데이터를 기대하지 않는 경우, 이 어드레스는 0 으로 설정된다.
ReturnBufferSize: 어드레스 ReturnBufferAddress 에서의 메모리 버퍼의 파이트 사이즈, 또는, ReturnBufferAddress 가 0 인 경우에는 0.
System.Host.CallVm 은 다음과 같은 출력을 스택의 최상부로 리턴한다.
스택의 최상부:
SystemResultCode
CalleeResultCode
ReturnBlockSize

...
SystemResultCode: 호출이 성공적이었던 경우 0 인 정수값, 또는, 호출이 실패하였다면 음의 에러 코드. 이 값은 시스템에 의해 결정되고 피호출자에 의해 결정되는 것이 아니다. 성공은 시스템이, 호출할 루틴을 성공적으로 발견할 수 있었고, 그 루틴을 실행할 수 있었고, 그 루틴으로부터 리턴 값을 얻을 수 있었다는 것을 나타낼 뿐이다. 루틴 그자체로부터의 리턴 값은 CalleeResultCode 값에서 리턴된다.
CalleeResultCode: 피호출자에 의해 리턴되는 정수값.
ReturnBlockSize: 호출자에 의해 제공되는 버퍼에서 리턴되는 데이터의 바이트 사이즈, 또는, 그 호출자가 너무 작은 버퍼를 제공한 경우 요구되는 사이즈. 피호출자에 의해 아무런 데이터도 리턴되지 않았다면, 값은 0 이다.
논의 하의 예시적인 실시형태에서, 호출된 루틴은 다음의 인터페이스 규약가 호환된다. 루틴이 호출될 때, 스택의 최상부는, 파라미터 블록의 사이즈를 나타내는, 호출자에 의해 제공되는 값 ParameterBlockSize 를 포함하고, 그 다음은 데이터의 ParameterBlockSize 바이트가 따른다. 사이즈가 4 의 배수가 아니라면, 스택 상의 데이터는 스택 포인터가 4 의 배수를 남기는 것을 보장하기 위해 0 으로 패딩될 것이다. 리턴 시에, 호출된 루틴은 스택 상에 다음과 같은 리턴 값들을 제공한다.
스택의 최상부:
ResultCode
ReturnBlockAddress
ReturnBlockSize

...
ReturnBlockAddress: 호출자로 리턴될 데이터를 포함하는 메모리 블록의 어드레스. 아무런 데이터도 리턴되지 않는다면, 이 어드레스는 0 으로 설정된다.
ReturnBlockSize: 어드레스 ReturnBlockAddress 에서의 메모리 블록의 바이트 사이즈, 또는, ReturnBlockAddress 가 0 인 경우에는 0.
System . Host . ReleaseVm.
이 시스템 호출은 System.Host.SpawnVm 에 대한 이전 호출에 의해 번식되었던 가상 머신을 릴리스하기 위해 제어 프로그램에 의해 이용된다. 릴리스된 가상 머신에 의해 번식된 임의의 가상 머신들이 릴리스되는 등이 반복된다. System.Host.ReleaseVm 호출은 그 입력으로서 스택의 최상부로부터 VmHandle 을 취하고, 여기서, VmHandle 은 System.Host.SpawnVm 을 호출함으로써 생성되었던 가상 머신의 핸들을 나타낸다. System.Host.ReleaseVm 호출은 출력으로서 ResultCode 를 스택의 최상부로 리턴한다. ResultCode 는 호출이 성공적이었다면 0 인 정수값이고, 또는, 호출이 실패였다면 음의 에러 코드이다.
1.25.3. 표준 데이터 구조들 ( Standard Data Structures )
다음은 몇몇 표준 시스템 호출들에 의해 이용되는 표준 데이터 구조이다.
1.25.3.1. 표준 파라미터들 ( Standard Parameters )
파라미터 블록 ( ParameterBlock ):
이름 타입
Name 이름 블록
Value 값 블록
Name: 파라미터의 이름.
Value: 파라미터의 값.
확장된 파라미터 블록 ( ExtendedParameterBlock ):
이름 타입
Flags 32-비트 비트 필드
Parameter 파라미터 블록
Flags: 불 (boolean) 플래그의 벡터.
Parameter: 이름 및 값을 포함하는 파라미터.
이름 블록 ( NameBlock ):
이름 타입
Size 32-비트 정수
Characters 8-비트 문자들의 어레이
Size: 다음의 "characters" 필드의 바이트 사이즈와 동일한 32-비트 부호 없는 정수. 이 값이 0 이면, 문자 필드는 빈 것으로 남겨진다 (즉, 아무것도 후속하지 않는다).
Characters: 널 종결된 UTF-8 스트링.
값 블록 ( ValueBlock ):
이름 타입
Type 32-비트 정수
Size 32-비트 정수
Data 8-비트 바이트들의 어레이
Type: 32-비트 식별자. 일 실시형태에서, 다음의 타입들이 정의된다.
식별자 타입 이름 설명

0

정수
빅 엔디언 순서로 4 개의 8-비트 바이트로 인코딩된, 32-비트 정수값. 일 실시형태에서, 이 값은 달리 특정되지 않는다면 부호를 지닌 것으로 간주된다.
1 실수 빅 엔디언 바이트 순서로 IEEE-754 로서 인코딩된, 32-비트 플로팅 포인트 값.
2 스트링 널 종결된 UTF-8 스트링.
3 데이터 1970년 1월 1일 00:00:00 부터 경과된 분들의 수를 나타내는, 32-비트 부호 없는 정수 값. 일 실시형태에서, 달리 특정되지 않는다면, 값은 UTC 날짜로 간주되고, 그 최상위 비트는 0 이어야한다.
4 파라미터 파라미터 블록 구조
5 확장된 파라미터 확장된 파라미터 블록 구조
6 자원 이 값은 자원이다. 여기서 자원은 ID 에 의해 참조된다. 값의 데이터 필드는, 실제 데이터를 생성하기 위해 역참조되어야 하는 자원의 ID 를 포함하는 널-종결된 ASCII 스트링이다.
7 값리스트 (값 리스트 블록으로서 인코딩된) 값들의 어레이.
8 바이트어레이 값은 8-비트 바이트의 어레이이다.
Size: 다음의 "데이터" 필드의 바이트 사이즈와 동일한 32-비트 부호 없는 정수. 이 값이 0 인 경우, 데이터 필드는 빈 것으로 남는다 (즉, 값 블록의 사이즈 필드 다음에는 아무 것도 없다).
Data: 값을 나타내는 8-비트 바이트들의 어레이. 실제 바이트들은 타입 필드에 의해 특정되는 데이터 인코딩에 의존한다.
값 리스트 블록 ( ValueListBlock ):
이름 타입
ValueCount 32-비트 정수
Value0 값 블록
Value1 값 블록

...

...
ValueCount: 다음의 값 블록 구조들의 수와 동일한 32-비트 부호 없는 정수. 이 값이 0 이라면, 다음의 값 블록은 없다.
Value0, Value1, ... : 0 또는 그 이상의 값 블록 구조들의 시퀀스.
1.25.3.2. 표준 확장된 상태 ( Standard ExtendedStatus )
표준 확장된 상태 블록은 호출로부터 루틴 또는 시스테 호출로 리턴 상태로서 확장된 정보를 운반하는데 통상적으로 사용되는 데이터 구조이다. 이는 그 필드들에 대한 상이한 가능한 값들의 범위를 갖는, 다양한 상황에서 사용될 수 있는 일반적 데이터 구조이다. 일 실시형태에서, 확장된 상태 블록은 다음과 같이 정의된다.
확장된 상태 블록 ( ExtendedStatusBlock ):
이름 타입
GlobalFlags 32-비트 비트 필드
Category 32-비트 정수
SubCategory 32-비트 정수
LocalFlags 32-비트 비트 필드
CacheDuration 캐시 지속기간 블록
Parameters 값 리스트 블록
GlobalFlags: 의미들이 카테고리 필드에 상관없이 동일한 불 플래그들. 이 플래그들의 위치 및 의미는 표준 확장 상태 블록 데이터 구조를 사용하는 프로파일들에 의해 정의된다.
Category: 상태가 속하는 카테고리의 고유한 정수 식별자. 이 카테고리 식별자 값들은 표준 확장된 상태 블록 데이터 구조들을 이용하는 프로파일들에 의해 정의된다.
SubCategory: 이 블록에 의해 설명되는 상태의 타입을 추가로 분류하는 하위 카테고리의 정수 식별자 (카테고리 내에서 고유).
LocalFlags: 불 플래그들의 의미들이 이 상태 블록의 카테고리와 하위 카테고리에 대해 로컬 불 플래그들. 플래그들의 위치 및 의미는 카테고리의 의미들을 정의하고 이용하는 프로파일들에 의해 정의된다.
CacheDuration: 이 상태가 캐시될 수 있는 (즉, 유효하게 남게되는) 지속기간을 나타낸다. 지속기간의 실제 값이 어떻게 정의되는지는 이하의 캐시 지속기간 블록 타입의 정의를 참조하라.
Parameters: 0 또는 그 이상의 값 블록들의 리스트. 각각의 값 블록은 타입 파라미터 또는 확장된 파라미터의 값으로서 인코딩된 파라미터를 포함한다. 각각의 파라미터는 이름을 타입화된 값에 묶고, 단순히 카테고리, 하위 카테고리, 캐시 지속기간, 및 플래그들보다 더욱 자세히 상태 블록을 설명하는 유연한 가변 데이터를 인코딩하는데 사용된다.
캐시 지속기간 블록 ( CacheDurationBlock ):
이름 타입
Type 32-비트 정수
Value 32-비트 정수
Type: 값의 타입에 대한 정수 식별자. 일 실시형태에서, 다음의 타입들이 정의된다.
타입 설명
0 값은 현재 시간으로부터의 초 (second) 들의 수를 나타내는 32-비트 부호 없는 정수이다. 0 의 값은 상태가 전혀 캐시될 수 없고, 따라서, 오직 한 번만 사용될 수 있다는 것을 의미한다. 특별한 값 0xFFFFFFFF 는 무한 지속기간 (즉, 상태는 무한하게 캐시될 수 있다) 으로서 해석된다.
1 값은 1970년 1월 1일 00:00:00 부터 경과된 분들의 수로서 표현되는, 32-비트 부호 없는 정수이다. 일 실시형태에서, 최상위 비트는 0 이어야 한다.
Value: 32-비트 정수이고, 그 의미는 타입 필드에 의존한다.
1.25.4. 표준 결과 코드들 ( Standard Result Codes )
표준 결과 코드들은 다양한 API 들에서 사용된다. 다른 결과 코드들이 더욱 구체적인 API 들에 사용하기 위해 정의될 수도 있다.
이름 설명
0 SUCCESS 성공
-1 FAILURE 특정되지 않은 실패
-2 ERROR_INTERNAL 내부 (구현) 에러가 발생하였음
-3 ERROR_INVALID_PARAMETER 파라미터가 유효하지 않은 값을 가짐
-4 ERROR_OUT_OF_MEMORY 성공적으로 완료에 충분하지 않은 이용가능한 메모리
-5 ERROR_OUT_OF_RESOURCES 성공적으로 완료하기에 충분하지 않은 이용가능한 자원
-6 ERROR_NO_SUCH_ITEM 요청된 아이템이 존재하지 않거나 발견되지 않았음
-7 ERROR_INSUFFICIENT_SPACE (리턴 버퍼가 너무 작을 때 통상적으로 사용되는) 호출자에 의해 제공되는 메모리가 충분하지 않음
-8 ERROR_PERMISSION_DENIED 호출을 수행하기 위한 권한이 호출자에 의해 거부됨
-9 ERROR_RUNTIME_EXCEPTION 바이트 코드의 실행 동안 에러가 발생하였음
-10 ERROR_INVALID_FORMAT 유효하지 않은 포맷을 가진 데이터 (예를 들어, 코드 모듈의 유효하지 않은 데이터) 에 의해 야기되는 에러
1.26. 어셈블러 구문 ( Assembler Syntax )
이 섹션은 본원의 기타 부분에 설명된 바이트코드 포맷으로 프로그램을 컴파일링하는데 이용하기 위한 예시적인 구문을 설명한다. 이는 단지 한 가지 가능한 구문의 한 가지 예이고, 임의의 적합한 구문도 사용될 수 있다는 것을 알 필요가 있다. 이전에 나타낸 바와 같이, 여기에서 제공된 바이트코드 포맷은 단지 일예에 지나지 않고, 여기에 설명된 시스템들 및 방법들은 임의의 다른 적합한 바이트 코드 포맷 또는 다른 코드 포맷과 함께 이용될 수 있다는 것을 이해할 필요가 있다.
어셈블러는 코드, 데이터, 및 프로세싱 명령들을 포함하는 소스 파일들을 판독하고, 제어 가상 머신에 의해 로딩될 수 있는 2진 코드 모듈들을 생성한다. 일 예시적인 실시형태에서, 어셈블러는 소스 파일을 한 라인씩 순차적으로 처리한다. 라인들은 0 또는 그 이상의 문자들일 수 있고, 새로운 라인이 다음에 이어진다. 각각의 라인은, 빈 라인 (백색 공간만 있는 것), 세그먼트 지시문, 데이터 지시문, 어셈블러 지시문, 코드 명령, 라벨, 또는 엑스포트 지시문 중 하나일 수 있다. 또한, 각 라인은 코멘트로 끝날 수 있고, 코멘트는 ";" 문자로 시작하고, 라인의 끝까지 계속된다.
소스 파일들로부터 판독된 데이터 및 명령들은 내재적 목적지 세그먼트 (implicit destination segment) (즉, VM 에 의해 로딩될 때 그들이 끝나는 곳) 를 가진다. 분석 프로세스의 임의의 포인트에서, 어셈블러는 데이터 및 명령들에 대한 내재적 목적지 세그먼트인 "현재" 세그먼트를 가질 것이다. 현재 세그먼트는 세그먼트 지시문을 사용하여 변경될 수 있다.
1.26.1. 세그먼트 지시문 ( Segment Directives )
세그먼트 지시문들은 분석자의 현재 세그먼트를 변경한다. 일 실시형태에서, 지원되는 세그먼트 지시문들은 .code 및 .data 이다. .code 세그먼트는 바이트 코드 명령들을 유지하고, .data 세그먼트는 글로벌 변수들을 유지한다.
1.26.2. 데이터 지시문 ( Data Directives )
데이터 지시문들은 가상 머신의 데이터 세그먼트에 로딩될 데이터 (예를 들어, 정수들 및 스트링들) 를 특정한다. 일 실시형태에서, 지원되는 데이터 지시문들은,
● .string"<몇몇 문자들>" - 문자들의 스트링을 특정. 일 실시형태에서, 어셈블러는 스트링의 끝단에서 값 0 을 가진 옥텟트 (octet) 를 부가한다.
● .byte<value> - 8-비트 값을 특정한다. <value> 은 10진수, 또는 16진수 (0x 가 앞에 붙는다) 로서 표현될 수 있다.
●.long<value> - 32-비트 값을 특정한다. <value> 은 10진수, 또는 16진수 (0x 가 앞에 붙는다) 로서 표현될 수 있다.
1.26.3. 어셈블러 지시문들
일 실시형태에서, 지원되는 어셈블러 지시문들은 .equ<symbol>, <value> 이고, 심볼 <symbol> 이 값 <value> 와 동일하도록 설정한다. 심볼들은 통상적으로 피연산자 또는 코드 명령들로서 사용된다.
1.26.4. 라벨들
라벨들은 세그먼트들 내의 위치들을 포인팅하는 심볼들이다. 코드 세그먼트 내의 명령들을 포인팅하는 라벨들은 통상적으로 점프/분기 명령들에 대해 사용된다. 데이터 세그먼트 내의 데이터를 포인팅하는 라벨들은 통상적으로 변수들을 지칭하는데 사용된다. 일 실시형태에서, 라벨을 위한 구문은: <LABEL> : 이다.
":" 뒤에는 선택적 코멘트 외에는 어떤 것도 없다는 것에 유의할 필요가 있다. 라벨은 다음 데이터 또는 명령을 포인팅한다. 일 실시형태에서, 동일한 어드레스를 포인팅하는 하나를 초과하는 라벨을 가지는 것도 좋다.
1.26.5. 엑스포트 지시문들 ( Export Directives )
엑스포트 지시문들은 어셈블러에 의해 생성되는 코드 모듈의 "엑스포트" 섹션에서 엔트리들을 생성하는데 이용된다. 엑스포트 섹션의 각각의 엔트리는 (이름, 어드레스) 쌍이다. 논의 하의 예시적인 실시형태에서, 코드 세그먼트 내의 어드레스들만이 엑스포트 섹션에 의해 특정될 수 있다.
엑스포트 지시문의 구문은: .export<label> 이고, 이는 <label> 에 의해 포인팅되는 어드레스를 이름 "<label>" 을 이용하여 엑스포트할 것이다.
1.26.6. 코드 명령들
컴파일링 데이터가 코드 세그먼트를 지향하는 경우, 어셈블러는 바이트 코드들로 직접 또는 간접적으로 맵핑하는 명령들을 판독한다. 전술한 예시적인 명령 셋트에서, 대부분의 가상 머신 바이트 코드들은 다이렉트 피연산자들을 가지지 아니하며, 단일 라인 상에 간단한 연상 기호로 나타난다. 어셈블러 구문을 더욱 판독가능하게 만들기 위해, 일부 명령들은, 바이트 코드 피연산자들인 것처럼 보이지만 실제는 아닌, 의사-피연산자들을 허용하고, 이 경우, 어셈블러는 명령이 마치 다이렉트 피연산자를 가진 것과 동일한 효과를 생성하도록 하는 하나 이상의 바이트 코드 명령들을 생성한다. 예를 들어, 분기 명령들은 의사-피연산자들을 이용한다.
1.26.6.1. 분기 피연산자들 ( Branch operands )
브랜치 명령들은, (임의의 피연산자없이) 또는 어셈블러에 의해 대응하는 바이트 코드 시퀀스로 변환될 선택적 피연산자와 함께, 축어 (verbatim) 로 구체화될 수 있다. 선택적 피연산자는 정수 상수 또는 심볼이다. 피연산자가 심볼일 때, 어셈블러는 브랜치가 심볼에 대응하는 어드레스까지에서 끝날 수 있도록 정확한 정수 상대적 오프셋을 계산한다.
1.26.6.2. 푸쉬 피연산자들 ( Push operands )
일 실시형태에서, PUSH 명령은 항상 하나의 피연산자를 취한다. 피연산자는 정수 상수, 심볼, 또는 라벨 이름 바로 전의 프리픽스 "@" 중 하나일 수 있다. 피연산자가 심볼인 경우, 푸쉬되는 값은 값은 그 심볼의 다이렉트 값이고, 여기서, 심볼은 라벨 또는 .equ 심볼이다 (값은 세그먼트 오프셋에 의해 증가되지 않는다). 피연산자가 "@" 가 프리픽스로 붙는 라벨 이름인 경우, 푸쉬되는 값은 라벨이 포인팅하는 것에 의존한다. 스택 상에서 푸쉬된 값은 라벨에 의해 나타내어지는 절대 어드레스이다 (즉, 세그먼트 오프셋에 부가되는 로컬 라벨 값).
1.26.7. 예
; 상수들
.equ SOMECONST, 7
; 무엇이 데이터 세그먼트를 따라 들어가는가
.data
VAR1:
.byte 8
VAR2:
.string "hello\0
VAR3:
.long 0xFFFCDA07
VAR4:
.long 0
; 무엇이 코드 세그먼트를 따라 들어가는가
.code
FOO:
PUSH 1
ADD
RET
BAR:
PUSH 2
PUSH @FOO ; 라벨 F00 의 어드레스를 푸쉬
JSR ; 라벨 F00 의 코드로 점프
PUSH SOMECONST ; 값 7 을 푸쉬
PUSH @VAR1 ; VAR1 의 어드레스를 푸쉬
PUSH VAR1 ; 데이터 세그먼트 내의 VAR1 의 오프셋을 푸쉬
PUSH @VAR3 ; VAR3 의 어드레스를 푸쉬
PEEK ; VAR3 의 값을 푸쉬
PUSH @VAR4 ; VAR4 의 어드레스를 푸쉬
POKE ; 스택의 최상부 상의 값을 VAR4 로 저장
PUSH @VAR2 ; 스트링 "hello" 의 어드레스를 푸쉬
1.26.8. 명령 라인 구문 ( Command Line Syntax )
일 실시형태에서, 어셈블러는 다음의 구문: "PktAssembler[options]<input_file_path><output_file_path>", 여기서, [options] 는: -cs int, -ds int, -xml id, 또는 -h 일 수 있으며, 여기서, "-cs int" 는 코드 세그먼트 어드레스 값 (디폴트 = 8), "-ds int" 는 데이터 세그먼트 어드레스 값 (디폴트 = 4), "-xml id" 는 제어 오브젝트를 특정된 ID 를갖는 XML 파일로서 출력하는데 이용되며, "-h" 는 도움말 정보를 표시하는데 이용된다.
9. 제어들 ( Controls )
이 섹션은 제어 오브젝트들의 예시적인 실시형태들을 설명한다. 제어 오브젝트들은, 그들이 제어하는 콘텐츠키 (ContentKey) 오브젝트들의 사용을 승인 또는 거절함으로써 콘텐츠에 대한 액세스를 지배하는 규칙들을 나타내는데 이용될 수 있다. 이들은 또한 그들이 내장되는 링크 오브젝트의 유효성에 대한 제약들을 나타내는데 이용될 수 있다. 이들은 또한, 에이전트 또는 대표와 같이, 다른 엔티티 대신에 실행되는 독자 프로그램 컨테이너들로서 사용될 수 있다. 일 실시형태에서, 제어들은 메타데이터 및 바이트-코드 프로그램들을 포함하고, 이는 특정 상호작용 프로토콜을 구현한다. 제어 프로토콜의 목적은 DRM 엔진과 제어 프로그램 사이 또는 호스트 애플리케이션과 DRM 엔진을 통한 제어 프로그램 사이의 상호작용을 기술하는 것이다. 이 섹션은 또한, 애플리케이션이 콘텐츠 상에서 수행할 수 있는 예시적인 액션들을 설명하고, 어느 액션 파라미터들이 제어 프로그램에 공급되어야 하는지, 그리고, 요청된 액션이 수행될 수 있는지 없는지를 나타내는 리턴 상태, 및 리턴 상태를 더 설명할 수 있는 파라미터들을 제어 프로그램이 어떻게 인코딩하는 지를 설명한다.
이 섹션에서, 다음과 같은 약어 및 두문자가 사용된다.
● ESB: 확장된 상태 블록 (Extended Status Block
● LSB: Least Significant Bit
● 바이트: 8-비트 값, 또는 옥텟트
● 바이트 코드: 실행가능한 명령들 및 그들의 피연산자들을 인코딩하는 바이트들의 스트림
1.27. 제어 프로그램들
일 실시형태에서, 제어 오브젝트가 제어 프로그램을 포함한다. 제어 프로그램은 가상 머신에 의해 실행가능한 바이트 코드를 포함하는 코드 모듈 및 명명된 루틴들의 리스트 (예를 들어, 엑스포트 테이블의 엔트리들) 를 포함한다.
일 실시형태에서, 콘텐츠 아이템 상의 어떤 동작 ("플레이 (play)" 와 같은) 의 수행을 지배하는 규칙들을 나타내는 루틴들의 셋트가 "액션 제어 (action control)" 라 불린다. 링크 오브젝트에 대한 유효성을 나타내는 루틴들의 셋트가 "링크 제약 (link constraint)" 라 불린다. (DRM 엔진이 상이한 호스트 상에서 실행되는 프로토콜 섹션 동안과 같이) 원격 엔티티 대신 수행될 목적의 루틴들의 셋트가 "에이전트 (agent)" 라 불린다. (제어 프로그램이 System.Host.CallVm 시스템 호출을 이용할 때와 같이) 또 다른 제어 대신에 실행될 의도인 루틴들의 셋트가 "대표 (delegate)" 라고 불린다.
1.27.1. 제어 프로그램들에 대한 인터페이스
일 실시형태에서, 제어 프로그램들은 호스트 환경에서 실행되는 가상 머신에 의해 실행된다. 호스트 환경은 임의의 적합한 방식으로 구현될 수 있다; 하지만, 설명의 용이함을 위해, 그리고 예시의 목적으로, 이하의 논의에서는 가상 머신의 호스트 환경의 구현은 논리 적으로 2 개의 부분들, 즉, 호스트 애플리케이션과 DRM 엔진으로 논리적으로 분리될 수 있다. 하지만, 다른 실시형태들은, 전술한 논리적 구조와 동등할 수도 있는, 함수들의 상이한 논리적 분리를 가질 수도 있다.
도 29 에 나타낸 바와 같이, 바라직한 실시형태들에서, DRM 엔진 (2908) 은 호스트 애플리케이션 (2900) 과 제어 프로그램들 (2906) 사이의 논리적 인터페이스이다. 호스트 애플리케이션 (2900) 은, 어떤 목적을 위해 (예를 들어, 콘텐츠 스트림을 플레이 또는 렌더링하기 위해) 콘텐츠 키에 대한 액세스를 요청하는 것과 같이, 엔진 (2908) 에 대한 논리적 요청들을 만든다. 일 실시형태에서, 엔진 (2908) 은, 제어 프로그램의 초기화, 호출 시퀀스, 및 다른 상호작용의 상세한 내용들에 관한 임의의 보증들이 충족되는 것을 보장하는 등을 통해, 이하 설명되는 상호작용 프로토콜이 정확하게 구현되도록 보장한다.
호스트 애플리케이션 (2900) 이 콘텐츠 ID 의 셋트에 대한 콘텐츠 키들의 이용을 요청할 때, DRM 엔진 (2908) 은 어느 제어 오브젝트를 이용할 것인지를 결정한다. 보호기 오브젝트들은, 어느 콘텐츠 키 (ContentKey) 오브젝트들이 요청된 콘텐츠를 위해 액세스될 필요가 있는지를 엔진이 푸는 것을 허용한다. 그 다음, 엔진은 이들 컨텐츠 키 오브젝트들을 참조하는 제어기 오브젝트를 발견한다. 일 실시형태에서, 제어기 오브젝트는 하나를 초과하는 콘텐츠 키 오브젝트를 참조할 수 있다. 이는 다수의 콘텐츠키 오브젝트들이 동일한 제어 오브젝트에 의해 지배되는 것을 허용한다. 호스트 애플리케이션이 액션을 호출함으로써 콘텐츠 키에 대한 액세스를 요청할 때, 그들에 대응하는 콘텐츠 키 오브젝트들이 동일한 제어기 오브젝트에 의해 참조되는 범위까지, 콘텐츠 ID 를 그룹으로서 요청할 수 있다. 일 실시형태에서, 하나를 초과하는 제어기 오브젝트에 의해 참조되는 콘텐츠 키들의 그룹을 액세스하기 위한 요청이 허용되지 않는다.
일 실시형태에서, DRM 엔진은 액션들을 루틴 이름들에 맵핑하기 위한 의무를 따른다. 예를 들어, 일 실시형태에서, 이하 설명된 루틴들의 각각에 대해, 코드 모듈의 엑스포트 테이블 엔트리에 나타나는 이름은 섹션 9.1.4 내지 9.1.7 에서 이하 나타낸 각각의 스트링이다.
1.27.1.1. 제어 로딩 ( Control Loading )
일 실시형태에서, 엔진이 제어 루틴들에 대한 호출들을 만들수 있기 전에, 제어의 코드 모듈을 가상 머신으로 로딩할 필요가 있다. 일 실시형태에서, VM 당 오직 하나의 코드 모듈이 로딩된다.
1.27.1.2. 원자성 ( Atomicity )
일 실시형태에서, 엔진은, 제어 프로그램 내의 루틴들에 대한 호출들이, 오브젝트 (또는 "상태 (state)") 데이터베이스와 같은 루틴에 대해 이용가능하도록 하는 자원에 대해 원자적 (atomic) 이도록 보장한다. 따라서, 이러한 일 실시형태에서, 엔진은 호출하는 임의의 루틴들의 실행 동안 변형되지 않은 상태로 이들 자원들이 남아있도록 보장할 필요가 있다. 이는, 루틴 호출 동안 이들 자원들을 효과적으로 잠금으로써, 또는, 다수의 VM 들이 동시에 실행되는 것을 방지함으로써 행해질 수도 있다. 하지만, 엔진은, 이들 자원들이 연속적 루틴 호출들에 걸쳐 변형되지 않도록 보장할 필요는 없다.
1.27.2. 제어 프로토콜
일 실시형태에서, 루틴 명명, 입력/출력 인터페이스, 및 코드 모듈의 각각의 루틴에 대한 데이터 구조들이 함께 제어 프로토콜을 구성한다. 코드 모듈에 의해 구현되는 프로토콜은 제어 오브젝트의 "프로토콜 (protocol)" 필드에서 시그널링된다. 이하에서 설명되는 예시적인 제어 프로토콜은 표준 제어 프로토콜이라 불릴 것이고, 그 식별자 ('프로토콜' 필드의 값) 는 "http://www.octopus-drm.com/specs/scp-1_0" 이다.
일 실시형태에서, DRM 엔진이 코드 모듈을 로딩하고 제어 프로그램의 루틴들을 호출하기 전에, 제어 프로그램과의 상호작용이 프로토콜 필드에서 시그널링된 특정 프로토콜 id 에 대한 사양과 일치할 것을 보장할 필요가 있다. 이는, 제어 프로그램에 대해 이용가능한 어드레스 공간의 크기에 관한 보장 등, 구현될 필요가 있는 가상 머신의 특징들에 관한 임의의 보장을 포함한다.
표준 제어 프로토콜과 같은 제어 프로토콜들에 대해, 새로운 프로토콜 사양을 형성할 필요 없이 시간에 걸쳐 발전하는 것이 가능하다. 프로토콜에 대해 이루어진 변화들이 사양의 이전 개정과 일관되는 한, 그리고, DRM 엔진의 존재하는 구현들 및 그 프로토콜과 호환되는 존재하는 제어 프로그램들이 사양에 따른 수행을 지속하는 한, 변화들은 양립가능한 것으로 간주된다. 이러한 변화들은, 예를 들어, 새로운 액션 타입들을 포함할 수도 있다.
1.27.3. 바이트 코드 타입
표준 제어 프로토콜을 포함하는 전술한 예시적인 실시형태에서, 바이트 코드 모듈의 타입은 "Plankton 바이트 코드 모듈 버전 1.0" 이다. 이 예시적인 실시형태에서, 제어 오브젝트의 "타입 (type)" 필드에 대한 값은 "http://www.octopus-drm.com/specs/pkcm-1_0" 이다.
1.27.4. 일반적 제어 루틴들
일반적 제어 루틴들은 전반적으로 제어에 적용가능하고 주어진 액션 또는 링크 제약에 특정되지 않는 루틴들이다. 다음과 같은 일반적 제어 루틴들이 일 예시적인 실시형태에서 이용된다.
1.27.4.1. Control . Init
이 루틴은 선택적이다 (즉, 모든 제어들에 필요한 것은 아니다). 이 루틴이 사용되면, 엔진은 임의의 다른 제어 루틴이 호출되기 전에 이 루틴을 한 번 호출한다. 루틴은 입력을 갖지 않고, ResultCode 를 출력으로서 스택의 최상부로 리턴한다. 결과 코드는 성공 시에 0 이고, 실패 시에는 음의 에러 코드이다. 일 실시형태에서, 결과 코드가 0 이 아니면, 엔진은 현재의 제어 동작을 중지시키고, 이 제어에 대한 루틴들에 대한 임의의 추가적인 호출들을 만들지 않는다.
1.27.4.2. Control . Describe
이 루틴은 선택적이다. 이 루틴은 애플리케이션이 일반적으로 (즉, 특정 액션에 대한 것이 아님) 제어 프로그램에 의해 나타내어지는 규칙들의 의미의 설명을 요청할 때 호출된다. 이 루틴은 입력을 갖지 않고, 결과 코드 (ResultCode) 및 상태 블록 포인터 (StatusBlockPointer) 를 출력으로서 스택의 최상부로 리턴하고, 여기서, 결과 코드는 정수 값이고 (루틴이 성공적으로 완료되었다면 0, 또는 그 외에는 음의 에러 코드), 상태 블록 포인터는 표준 확장된 상태 블록 (ExtendedStatusBlock) 의 어드레스이다. ExtendedStatusBlock 은, 애플리케이션이 제어 프로그램에 의해 나타내어지는 규칙의 의미에 관하여 사용자에게 정보를 제공하기 위해 해석하고 사용할 수 있는 정보를 포함한다.
1.27.4.3. Control . Release
이 루틴은 선택적이다. 이 루틴이 존재한다면, DRM 엔진은 제어를 위한 임의의 다른 루틴을 호출할 필요가 더 이상 없게 된 후에 한 번 이것을 호출한다. 제어의 새로운 사용이 개시 (이 경우 Control.Init 루틴이 다시 호출될 것이다) 되지 않는다면, 다른 루틴이 제어를 위해 호출되지 않을 것이다. 이 루틴은 입력을 갖지 않고, 결과코드를 출력으로서 스택의 최상부로 리턴할 것이다. 결과코드는 성공 시에는 0 이고, 실패 시에는 음의 에러 코드이다.
1.27.5. 액션 루틴들
각각의 가능한 액션은 이름 (예를 들어, 플레이, 전송, 엑스포트 등) 을 갖는다. 일 예시적인 실시형태에서, 주어진 액션 <Action> 에 대해, 다음과 같은 루틴 이름들이 정의된다 (여기서, "<Action>") 은 액션의 실제 이름 (예를 들어, "플레이", "전송", "엑스포트" 등) 을 나타낸다).
1.27.5.1. Control . Actions .< Action >. Init
이 루틴은 선택적이다. 이것이 존재한다면, 엔진은 임의의 다른 루틴이 이 액션을 위해 호출되기 전에 이 루틴을 한 번 호출한다. 이 루틴은 입력을 갖지 않고, 결과 코드를 출력으로서 스택의 최상부로 리턴한다. 결과 코드는 성공적이었다면 0 이고, 실패 시에는 음의 에러 코드이다. 일 실시형태에서, 결과 코드가 0 이 아니라면, 엔진은 현재 액션을 중지하고, 이 제어의 이 액션에 대한 루틴들에 대한 임의의 추가적인 호출을 만들지 않는다
1.27.5.2. Control . Actions .< Action >. Check
*논의되고 있는 예시적인 실시형태에서, 수행 (Perform) 루틴이 액션을 위해 호출되어야 한다면 리턴 상태는 무엇인가를, 주어진 액션을 실제로 수행하지 않고, 체크하기 위해 이 루틴이 필요하고, 호출된다. 이 루틴이 임의의 부수적 효과를 갖지 않도록 하는 것이 이 루틴에 있어 중요하다. 수행 루틴이 아무런 부수적 효과들도 갖지 않는다면, 제어의 엔트리 테이블의 체크 (Check) 및 수행 (Perform) 엔트리들이 동일한 루틴을 포인팅할 수 있다. 이 루틴은 이하에서 설명되는 수행 루틴과 동일한 입력 및 출력을 갖는다.
1.27.5.3. Control . Actions .< Action >. Perform
일 실시형태에서, 애플리케이션이 막 액션을 수행하려고 할 때 이 루틴이 필요하고, 호출된다. 이 루틴은 입력을 갖지 않고, 결과 코드 및 상태 블록 포인터를 출력으로서 스택의 최상부로 리턴하며, 결과 코드는 정수 값이고 (루틴이 성공적으로 완료되면 0, 그 외에는 음의 에러 코드), 여기서, 상태 블록 포인터는 표준 확장된 상태 블록의 어드레스이다. 일 실시형태에서, 성공적 결과코드 (즉, 0) 가 요청이 승인되었다는 것을 의미하는 것은 아니라는 것에 유의할 필요가 있다. 이는 단자 루틴이 에러 없이 실행될 수 있었다는 것을 의미한다. 요청이 승인되었는지 거절되었는지 여부를 나타내는 것은 확장된 상태 블록이다. 하지만, 결과코드가 실패를 나타낸다면, 호스트 애플리케이션은 마치 요청이 거절된 것처럼 진행할 것이다. 예를 들어, 일 실시형태에서, 상태 블록의 카테고리는 ACTION_DENIED 되어야만 하고, 또는, 리턴된 확장된 상태 블록이 거절되고, 호스트 애플리케이션은 액션을 중지한다.
액션이 수행될 때, 오직 수행 루틴만이 호출될 필요가 있다. 엔진은 미리 체크 루틴을 호출할 필요는 없다. 수행 루틴의 일 구현은 만약 그렇게 하기를 선택하였다면 체크 루틴을 내부적으로 호출할 수 있지만, 시스템이 체크 루틴을 미리 호출할 것이라고 가정하여서는 안된다.
1.27.5.4. Control . Actions .< Action >. Describe
이 루틴은 선택적이며, 애플리케이션이 주어진 액션에 대해 제어 프로그램에 의해 나타내어지는 규칙들 및 상태들의 의미의 설명을 요청할 때 호출된다. 이 루틴은 입력을 갖지 않고, 결과 코드 및 상태 블록 포인터를 출력으로서 스택의 최상부로 리턴하고, 여기서, 결과 코드는 정수 값이고 (루틴이 성공적으로 완료되었다면 0, 또는, 그 이외에는 음의 에러코드이다), 상태 블록 포인터는 표준 확장된 상태 블록의 어드레스이다.
1.27.5.5. Control . Actions .< Action >. Release
이 루틴은 선택적이다. 이것이 존재한다면, DRM 엔진이 주어진 액션에 대해 임의의 다른 루틴들을 더 이상 호출할 필요가 없게된 후에, 이 루틴은 한 번 호출된다. 새로운 액션의 이용이 개시 (이 경우, 개시 루틴이 다시 호출될 것이다) 도지 않는다면 주어진 액션에 대해 어떤 다른 루틴이 호출되지 않는다. 이 루틴은 입력을 갖지 않고, 결과 코드를 출력으로서 스택의 최상부로 리턴한다. 결과 코드는 성공 시에는 0 이고, 실패 시에는 음의 에러 코드이다. 결과 코드가 0 이라면, 엔진은 주어진 액션에 대한 루틴들에 대해 임의의 추가적인 호출들을 만들지 않는다.
1.27.6. 링크 제약 루틴들 ( Link Constraint Routines )
일 실시형태에서, 링크 오브젝트가 내장된 제어를 가질 때, DRM 엔진은 링크 오브젝트의 유효성을 검증하기 위해 그 제어 내의 링크 제약 루틴들을 호출한다. 다음의 링크 제약 루틴들은 일 예시적인 실시형태에서 사용된다.
1.27.6.1. Control . Link . Constraint . Init
이 루틴은 선택적이고, 만약 이것이 존재한다면, 주어진 링크 제약에 대해 임의의 다른 루틴이 호출되기 전에 딱 한번 호출된다. 이 루틴은 입력을 갖지 않고, 결과 코드를 출력으로서 스택의 최상부로 리턴한다. 결과 코드는 성공 시에는 0 이고, 실패 시에는 음의 에러 코드이다. 결과 코드가 0 이 아니라면, 엔진은 링크 오브젝트에 대한 유효성이 만족스럽지 않다고 간주하고, 이 링크 제어에 대한 루틴들에 대한 추가적인 호출들을 회피한다.
1.27.6.2. Control . Link . Constraint . Check
논의되고 있는 예시적인 실시형태에서, 주어진 링크에 대한 유효성 제약이 만조되는 경우 이 루틴이 필요하고, 호출된다. 이 루틴은 입력을 갖지 않고, 결과 코드 및 상태 블록 포인터를 출력으로서 스택의 최상부로 리턴하며, 여기서, 결과 코드는 정수 값이고 ( 루틴이 성공적으로 완료되었다면 0 이고, 또는, 그 외에는 음의 에러 코드이다), 상태 블록 포인터는 표준 확장된 상태 블록의 어드레스이다. 결과 코드가 0 이 아니라면, 엔진은 링크 오브젝트에 대한 유효성 제약이 만족스럽지 못하다고 간주하고, 링크 제어에 대한 루틴들에 대한 추가적인 호출들을 회피한다. 결과 코드가 0 (성공) 인 경우에도, 이는 제약이 만족스럽다는 것을 의미하는 것은 아니며, 이는 단지 루틴이 에러 없이 실행될 수 있었다는 것을 의미할 뿐이다. 제약이 만족스러운지 여부를 나타내는 것은 상태 블록이다.
1.27.6.3. Control . Link . Constraint . Describe
이 루틴은 선택적이며, 애플리케이션이 주어진 링크에 대한 제어 프로그램에 의해 나타내어지는 제약의 의미의 설명을 요청할 때 호출된다. 이 호출은 입력을 갖지 아니하고, 결과 코드 및 상태 블록 포인터를 출력으로서 스택의 최상부로 리턴하며, 여기서, 결과 코드는 정수 값이고 (루틴이 성공적으로 완료되었다면 0, 또는 그 외에는 음의 에러 코드), 상태 블록 포인터는 표준 확장된 상태 블록의 어드레스이다.
1.27.6.4. Control . Link . Constraint . Release
이 루틴은 선택적이며, 만약 존재한다면, 엔진이 주어진 제약에 대해 임의의 다른 루틴을 더 이상 호출할 필요가 없게 된 후에 엔진에 의해 한 번 호출된다. 루틴은 입력을 갖지 아니하며, 결과 코드를 출력으로서 스택의 최상부로 리턴한다. 결과 코드는 성공 시에 0 이고, 실패 시에 음의 에러 코드이다. 논의되고 있는 실시형태에서, 이 루틴을 호출한 후에, 새로운 사이클이 개시 (이 경우, 개시 루틴이 다시 호출된다) 되지 않으면, 주어진 제약에 대해 어떤 다른 루틴도 호출될 수 없다. 유사하게, 결과 코드가 0 이 아니라면, 엔진은 주어진 링크 제약에 대한 루틴들에 대한 추가적인 호출들을 만들지 않는다.
1.27.7. 에이전트 루틴들 ( Agent Routines )
일 실시형태에서, 에이전트는 엔티티 대신에 실행하도록 디자인된 제어 오브젝트이다. 에이전트들은 통상적으로 2 개의 엔드포인트들 사이의 서비스 상호작용의 상황에서 사용되고, 여기서, 하나의 엔드포인트는 제 2 엔드포인트의 콘텍스트 내에서 일부 가상 머신 코드를 실행할 필요가 있고, 가능하게는 그 실행의 결과를 획득한다. 일 실시형태에서, 제어는 다수의 에이전트들을 포함할 수 있고, 각각의 에이전트는 실행될 수 있는 임의의 수의 루틴들을 포함할 수 있고, 하지만 실제로는 에이전트들은 단일 루틴을 갖는다.
일 예시적인 실시형태에서, 다음과 같은 엔트리 포인트들이 에이전트들에 대하여 정의되며, 여기서, <Agent> 는 에이전트의 실제 이름을 지칭하는 이름 스트링이다.
1.27.7.1. Control . Agents .< Agent >. Init
이 루틴은 선택적이며, 만약 존재한다면, 엔진은 주어진 에이전트에 대해 임의의 다른 루틴이 호출되기 전에 이 루틴을 한 번 호출한다. 이 루틴은 입력을 갖지 아니하며, 결과 코드를 출력으로서 스택의 최상부로 리턴한다. 결과 코드는 성공 시에 0 이고, 실패 시에는 음의 에러 코드이다.
1.27.7.2. Control . Agents .< Agent >. Run
논의 하의 예시적인 실시형태에서,이 루틴이 필요하고, 에이전트의 메인 루틴이다. 이 루틴은 입력을 갖지 아니하며, 결과 코드, 리턴 블록 어드레스 (ReturnBlockAddress), 및 리턴 블록 사이즈 (ReturnBlockSize) 를 출력으로서 스택의 최상부로 리턴한다. 결과 코드는 정수이고 (루틴이 성공적으로 완료되었다면 0, 또는 그 외에는 음의 에러 코드), 리턴 블록 어드레스는 에이전트 코드가 호출자에 리턴할 것으로 예상되는 데이터를 포함하는 메모리의 블록의 어드레스이며 (루틴이 임의의 것을 리턴할 필요가 없다면 이 어드레스는 0 이다), 리턴 블록 사이즈는 리턴 블록 어드레스에서의 메모리의 블록의 바이트 크기이다. 일 실시형태에서, 리턴 블록 어드레스가 0 이라면, 리턴 블록 사이즈의 값 또한 0 이다.
1.27.7.3. Control . Agents .< Agent >. Describe
이 루틴은 선택적이며, 애플리케이션이 주어진 에이전트의 설명을 요청할 때 호출된다. 이 루틴은 입력을 갖지 아니하며, 결과 코드 및 상태 블록 포인터를 출력으로서 스택의 최상부로 리턴하며, 여기서, 결과 코드는 정수 값이고 (루틴이 성공적으로 완료되었다면 0 이고, 또는 그 외에는 음의 에러 코드이다), 상태 블록 포인터는 표준 확장된 상태 블록의 어드레스이다.
1.27.7.4. Control . Agents .< Agent >. Release
이 루틴은 선택적이며, 만약 존재한다면, 엔진은 이 에이전트에 대한 임의의 다른 루틴들을 더 이상 호출할 필요가 없게 된 후에 이 루틴을 한 번 호출한다. 새로운 사이클이 개시 (이 경우, 개시 루틴이 다시 호출될 것이다) 되지 않으면, 이 에이전트에 대해 어떤 다른 루틴도 호출되지 않을 것이다. 이 루틴은 입력을 갖지 아니하며, 결과 코드를 출력으로서 스택의 최상부로 리턴한다. 결과 코드는 성공 시에 0 이고, 실패 시에는 음의 에러 코드이다.
1.28. 확장된 상태 블록들 ( Extended Status Blocks )
다음의 예시적인 정의들은 전술한 몇몇 루틴들의 예시적인 실시형태들에 의해 리턴되는 확장된 상태 블록 데이터 구조들에 적용가능하다. 확장된 상태 블록 데이터 구조들의 예들이 가상 머신의 설명과 함께 설명된다.
일 실시형태에서, 글로벌 확장된 상태 블록 플래그들이 존재하지 않는다. 이 실시형태에서, 제어 프로그램들은 확장된 상태 블록의 글로벌 플래그 (GlobalFlag) 필드를 0 으로 설정한다.
1.28.1. 카테고리들 ( Categories )
다음의 문단들은 일 실시형태에 따라 확장된 상태 블록들의 카테고리 (Category) 필드에 대한 값들을 정의한다. 일 실시형태에서, 이들 카테고리들 중 아무것도 하위 카테고리를 갖지 아니하며, 따라서 확장된 상태 블록의 하위 카테고리 (SubCategory) 필드의 값은 0 으로 설정된다.
일 실시형태에서, 다음과 같은 카테고리 코드들이 정의된다.
1.28.1.1. 액션들 체크 및 수행 루틴들 ( Actions Check and Perform Routines)
이름 설명
0 ACTION_GRANTED 애플리케이션은 요청된 액션을 위해 제어 프로그램에 의해 제어되는 콘텐츠 키를 이용하도록 허가된다.
리턴된 확장된 상태 블록의 파라미터 리스트는 제약 파라미터들 중 임의의 것을 포함하여서는 아니되지만, 의무 (obligation) 및/또는 콜백 (callback) 파라미터를 포함할 수도 있다.
1 ACTION_DENIED 애플리케이션은 요청된 액션을 위해 제어 프로그램에 의해 제어되는 콘텐츠 키들을 이용하도록 허가되지 않는다.
액션이 거부될 때, 제어 프로그램은 리턴된 확장된 상태 블록의 파라미터 리스트에서 충족되지 않은, 그리고 액션이 거부되도록 야기한 하나 이상의 제약들을 포함해야 한다 (평가되지 않은 제약들 및 액션이 실패하도록 야기하지 않은 제약들은 생략되어야 한다).
일 실시형태에서, 리턴된 확장된 상태 블록의 파라미터 리스트는 어떤 의무 또는 콜백 파라미터도 포함하여서는 아니된다.
일 실시형태에서, 액션 루틴들에 의해 리턴된 확장된 상태 블록 파라미터들의 콘텍스트에서, 제약은 참이기 위해 필요한 조건, 또는, 루틴의 결과가 카테고리 ACTION_GRANTED 를 갖는 확장된 상태 블록을 리턴하기 위해 충족될 필요가 있는 기준을 의미한다.
일 실시형태에서, 전술한 양 카테고리들에 대해 공통인 로컬플래그 (LocalFlags) 필드에 대한 값들은 다음의 것들을 포함한다.
비트 인덱스
(0 이 LSB )
이름 설명
0 OBLIGATION_NOTICE 이 파라미터 리스트는 의무들에 관련되는 하나 이상의 파라미터들을 포함한다.
1 CALLBACK_NOTICE 이 파라미터 리스트는 콜백에 관련되는 하나 이상의 파라미터를 포함한다.
2 GENERIC_CONSTRAINT 이 파라미터 리스트는 일반적 컨테이너에 관련되는 하나 이상의 파라미터를 포함한다.
3 TEMPORAL_CONSTRAINT 이 파라미터 리스트는 시간 컨테이너에 관련되는 하나 이상의 파라미터들을 포함한다.
4 SPATIAL_CONSTRAINT 이 파라미터 리스트는 공간 컨테이너에 관련되는 하나 이상의 파라미터들을 포함한다.
5 GROUP_CONSTRAINT 이 파라미터 리스트는 그룹 제약들에 관련되는 하나 이상의 파라미터들을 포함한다.
6 DEVICE_CONSTRAINT 이 파라미터 리스트는 디바이스 제약들에 관련되는 하나 이상의 파라미터들을 포함한다.
7 COUNTER_CONSTRAINT 이 파라미터 리스트는 카운터 제약들에 관련되는 하나 이상의 파라미터들을 포함한다.
상기 테이블에서, 언급된 파라미터 리스트는 확장된 상태 블록 데이터 구조의 "Parameters" 필드이다.
1.28.1.2. 설명 루틴 카테고리 코드들 ( Describe Routine Category Codes )
일 실시형태에서, 설명 (Describe) 루틴들을 위해 아무런 카테고리 코드들도 정의되지 않는다. 일 실시형태에서, 액션 루틴들에 대해 정의된 것과 동일한 로컬 플래그들이 설명 루틴에 적용되고, 설명 루틴들은 이하 구체화되는 것과 같이 "설명 (Description)' 으로 명명된 파라미터를 그들의 리턴된 확장된 상태 블록에 포함하여야 한다. 일 실시형태에서, 설명 루틴은 그 리턴된 확장된 상태 블록에 어떤 의무 또는 콜백 파라미터도 포함하지 않지만; 설명 루틴은 그들의 리턴된 확장된 상태 블록에, 대응하는 액션 또는 링크 제약에 대해 적용가능한 제약들의 일부 또는 전부를 설명하는 파라미터들을 포함하여야 한다.
1.28.1.3. 링크 제약 루틴 카테고리 코드들 ( Link Constraint Routine Category Codes)
이름 설명
0 LINK_VALID 이 제어 프로그램에 의해 제약된 링크는 유효하다.
리턴된 ESB 의 파라미터 리스트는 어떤 제약 파라미터들도 포함하여서는 아니되며, 일 실시형태로, 의무 또는 콜백 파라미터들을 포함하여서는 아니된다.
1 LINK_INVALID 이 제어 프로그램에 의해 제약된 링크는 유효하지 않다.
링크가 유효하지 않을 때, 제어 프로그램은 리턴된 ESB 의 파라미터 리스트에서, 링크가 유효하지 않은 것을 충족하지 않고 또한 링크가 유효하지않도록 야기하지 않은 하나 이상의 제약들을 포함하여야 한다 (평가되지 않은 제약들 및 액션이 실패하도록 야기하지 않은 제약들은 생략되어야 한다).
일 실시형태에서, 리턴된 ESB 의 파라미터 리스트는 어떤 의무 또는 콜백 파라미터도 포함하여서는 안된다.
일 실시형태에서, 액션 루틴들에 대해 정의된 것들과 동일한 로컬 플래그들이 이들 카테고리들의 각각에 대해 적용된다.
일 실시형태에서, 링크 제약 루틴들에 의해 리턴된 확장된 상태 블록 파라미터들의 콘텍스트에서, 제약은 참일 필요가 있는 조건 또는 루틴의 결과가 카테고리 LINK_VALID 를 갖는 확장된 상태 블록을 리턴하기 위해 충족될 필요가 있는 기준을 의미한다.
1.28.2. 캐시 지속기간들 ( Cache Durations )
확장된 상태 블록의 캐시 지속기간 (CacheDuration) 필드는 확장된 상태 블록에서 인코딩된 정보의 유효 기간의 표시이다. 확장된 상태 블록이 0 이 아닌 유효 기간을 가질 때, 확장된 상태 블록이 캐시에 저장될 수 있고, 그 기간 동안 동일한 파라미터들을 갖는 정확하게 동일한 루틴 호출에 대한 호출이 동일한 확장된 상태 블록을 리턴하고, 그래서, 캐시된 값이 루틴을 호출하는 대신에 호스트 애플리케이션으로 리턴될 수도 있다는 것을 의미한다.
1.28.3. 파라미터들
일부 파라미터들은 리턴 상태, 및 템플릿 프로세싱을 위한 가변 바인딩들 (섹션 9.4 참조) 에 관한 자세한 정보를 운반하는데 이용된다.
일 실시형태에서, 의무들 및 콜백들을 제외하고, 여기에 설명된 모든 제약들은 엄격하게 호스트 애플리케이션이 분류하고 디스플레이하는 것을 도울 목적인 것이고, 사용 규칙의 강화를 위한 것은 아니다. 규칙의 강화는 제어 프로그램의 의무이다.
일 실시형태에서, 다음 섹션에서 정의된 파라미터들은, 아무런 파라미터 플래그들도 적용가능하지 않다면 파라미터 블록 (ParameterBlock) 으로서 인코딩되고, 또는, 하나 이상의 플래그들이 적용가능하다면 확장된 파라미터 블록으로서 인코딩된다. 대표 플래그들이 이하에서 설명된다.
1.28.3.1. 설명
파라미터 이름: Description
파라미터 타입: ValueList
설명: 설명 파라미터들의 리스트. 리스트의 각각의 값은 타입 파라미터 또는 확장된 파라미터의 것이다. 일 실시형태에서, 다음과 같은 파라미터들이 정의된다: Default, Short 및 Long. 이들 중 각각은, 존재한다면, 값에 대해, 제어의 자원 중 하나의 ID 를 갖는다. 자원은 텍스트 페이로드 또는 템플릿 페이로드를 포함하여야 한다. 자원이 템플릿이라면, 결과의 텍스트 설명 (전체 제어 프로그램의 설명 또는 특정 액션의 설명) 을 획득하기 위해 처리된다. 템플릿은 '설명 (Description)' 파라미터가 나타나는 리스트의 다른 파라미터들을 가변 바인딩들로 사용하여 프로세싱된다.
일 실시형태에서, 'Short' 및 'Long' 설명은 'Default' 설명이 또한 포함되는 경우에만 포함될 수 있다.
이름 타입 설명
Default 자원 보통의 설명 텍스트 또는 템플릿을 포함하는 자원의 Id
Short 자원 짧은 설명 텍스트 또는 템플릿을 포함하는 자원의 Id
Long 자원 긴 설명 텍스트 또는 템플릿을 포함하는 자원의 Id
1.28.3.2. 제약들 ( Constraints )
일 실시형태에서, 제약 파라미터들은 유사한 타입들의 제약들을 포함하는 지스트들로 그룹화된다. 일 실시형태에서, 표준 제약들이 몇몇 타입들에 대해 정의된다. 일 실시형태에서, 제어들은, 제약 파라미터들의 이름이 그 이름의 고유함을 보장하는 이름 공간의 URN 이라면, 표준 제약들의 셋트에 포함되지 않은 제약 파라미터들을 리턴할 수도 있다. 이는 판매자 특정 제약들을 포함할 수도 있고, 또는 다른 사양들에서 정의된 제약들을 포함할 수도 있다.
1.28.3.2.1. 일반적 제약들 ( Generic Constraints )
파라미터 이름: GenericConstraints
파라미터 타입: ValueList
설명: 적용가능할 수도 있는 일반적 제약들의 리스트. 리스트의 각각의 값은 타입 파라미터 또는 확장된 파라미터의 것이다.
일 실시형태에서, 일반적 제약들은 이 섹션에서 정의된 다른 제약 타입들 중 임의의 것에 속하지 않는 제약들이다. 일 실시형태에서, 아무런 일반적 제약 파라미터들도 정의되지 않는다.
1.28.3.2.2. 시간 제약들 ( Temporal Constraints )
파라미터 이름: TemporalConstraints
파라미터 타입: ValueList
설명: 적용가능할 수도 있는 시간 제약들의 리스트. 리스트의 각각의 값은 타입 파라미터 또는 확장된 파라미터의 것이다. 시간 제약들은 시간, 날짜, 지속기간, 및/또는 기타 등등에 관련된 제약들이다. 일 실시형태에서, 다음과 같은 시간 제약 파라미터들이 정의된다.
이름 타입 설명
NotBefore 날짜 그 전에는 액션이 거부되는 날짜
NotAfter 날짜 그 후에는 액션이 거부되는 날짜
NotDuring 값 리스트 타입 날짜의 2 개 값들의 리스트. 제 1 값은 기간의 시작이고, 제 2 값은 배제되는 기간의 끝단이다.
NotLongerThan 정수 제 1 사용 후의 초들의 최대 수. 일 실시형태에서, 이 값은 부호가 없는 값이다.
NotMoreThan 정수 축적된 사용 시간의 초들의 최대 수. 일 실시형태에서, 이 값은 부호가 없는 값이다.
1.28.3.2.3. 공간 제약들 ( Spatial Constraints )
파라미터 이름: SpatialConstraints
파라미터 타입: ValueList
설명: 적용가능할 수도 있는 공간 제약들의 리스트. 일 실시형태에서, 리스트의 각각의 값은 타입 파라미터 또는 확장된 파라미터의 것이다. 공간 제약들은 물리적 위치들에 관련된 제약들이다. 일 실시형태에서, 아무런 표준 공간 제약들도 정의되지 않는다.
1.28.3.2.4. 그룹 제약들 ( Group Constraints )
파라미터 이름: GroupConstraints
파라미터 타입: ValueList
설명: 적용가능할 수도 있는 그룹 제약들의 리스트. 리스트의 각각의 값은 타입 파라미터 또는 확장된 파라미터의 타입의 것이다. 그룹 제약들은 그룹들, 그룹 회원, 아이덴티티 그룹들, 및/또는 기타 등등에 관련되는 제약들이다. 일 실시형태에서, 다음과 같은 파라미터들이 정의된다.
이름 타입 설명
MembershipRequired 자원 회원이 요구되는 그룹의 이름 또는 식별자에 대한 텍스트 또는 템플릿을 포함하는 자원의 Id
IdentityRequired 자원 개인의 이름 또는 식별자에 대한 텍스트 또는 템플릿을 포함하는 자원의 Id
1.28.3.2.5. 디바이스 제약들 ( Device Constraints )
파라미터 이름: DeviceConstraints
파라미터 타입: ValueList
설명: 적용가능할 수도 있는 디바이스 제약들의 리스트. 리스트의 각각의 값은 타입 파라미터 또는 확장된 파라미터의 것이다. 디바이스 제약들은 특징들, 속성들, 이름들, 식별자들, 및/또는 기타 등등과 같은 디바이스의 특성들과 관련된 제약들이다. 일 실시형태에서, 다음과 같은 파라미터들이 정의된다.
이름 타입 설명
DeviceTypeRequired 자원 요구되는 호스트 디바이스의 타입에 대한 텍스트 또는 템플릿을 포함하는 자원의 Id
DeviceFeatureRequired 자원 호스트 디바이스가 가져야만 하는 특징의 이름에 대한 텍스트 또는 템플릿을 포함하는 자원의 Id
DeviceIdRequired 스트링 디바이스가 가지기를 요구되는 Id. 이 Id 는 디바이스를 식별하는데 이용될 수 있는 임의의 스트링일 수도 있다 (예를 들어, 디바이스 이름, 디바이스 시리얼 번호, 노드 id, 및/또는 기타 등등).
1.28.3.2.6. 카운터 제약들 ( Counter Constraints )
파라미터 이름: CounterConstraints
파라미터 타입: ValueList
설명: 적용가능할 수도 있는 카운터 제약들의 리스트. 리스트의 각각의 값은 타입 파라미터 또는 확장된 파라미터의 것이다. 카운터 제약들은 플레이 카운트들, 축적된 카운트들, 및/또는 기타 등등과 같은, 카운트되는 값들에 관련되는 제약들이다. 일 실시형태에서, 아무런 표준 제약들도 정의되지 않는다.
1.28.3.3. 파라미터 플래그들 ( Parameter Flags )
일 실시형태에서, 다음과 같은 플래그들이 섹션 9.2.3 에서 설명된 모든 파라미터들에 대해서, 그들이 확장된 상태 블록으로서 인코딩될 때, 이용될 수도 있다.
비트 인덱스
(0 이 LSB )
이름 설명


0


CRITICAL
이 파라미터와 연관된 의미들은 호스트 애플리케이션에 의해 이해될 필요가 있다. 만약 그렇지 않다면, 전체 ExtendedStatusBlock 이 이해되지 않고 거절된 것으로 취급되어야 한다.
일 실시형태에서, 이 플래그는 성질을 설명하는 파라미터들에 대해 사용되어서는 안된다.




1




HUMAN_READABLE
이 파라미터는 텍스트 또는 그래픽 사용자 인터페이스에서 디스플레이하기에 적합한 이름 및 값을 갖는 것의 값을 나타낸다. 이 플래그 셋트를 갖지 않는 임의의 파라미터는 호스트 애플리케이션을 위해 보존되어야 하고, 사용자에게 보여져서는 안된다. 타입 자원의 파라미터 값들에 대해, 이는 자원 ID 가 아니고, 그러나, 그 ID 에 의해 참조되는 자원 데이터 페이로드이며, 이는 인간이 판독가능한 것이다.
1.29. 의무들 및 콜백들 ( Obligations and Callbacks )
일 실시형태에서, 어떤 액션들은, 승인된다면, 호스트 애플리케이션으로부터 추가적인 참가를 요구한다. 의무들은 요구하는 콘텐츠 키의 사용 시에 또는 사용 후에 호스트 애플리케이션에 의해 수행될 필요가 있는 동작들을 나타낸다. 콜백들은 요구하는 콘텐츠 키의 사용 시에 또는 사용 후에 호스트 애플리케이션에 의해 수행될 필요가 있는 하나 이상의 제어 프로그램 루틴들에 대한 호출들을 나타낸다.
일 실시형태에서, 만약 애플리케이션이, 그것이 지원하지 않거나 이해하지 못하는 (예를 들어, 의무 타입이 애플리케이션이 구현된 후에 정의되었을 것이기 때문에) 임의의 결정적 의무 또는 콜백을 만난다면, 이 의무 또는 콜백 파라미터가 리턴된 액션을 계속하기를 거절하여야만 한다. 일 실시형태에서, 결정적 의무 또는 콜백은 그것을 설명하는 파라미터에 대해 결정적 (CRITICAL) 파라미터 플래그를 설정함으로써 표시된다.
제어가 (예를 들어, 플레이 카운트를 감소시키는 것과 같이) 부수적 효과들을 가진다면, 호스트 애플리케이션이 모든 결정적 의무들 및 콜백들을 이해하고 호환가능하다면, 호스트 애플리케이션으로 하여금 어떤 루틴을 호출하도록 요구하기 위해 OnAccept 콜백을 이용하여야 한다. 부수적 효과는 콜백 루틴에서 일어나야 한다. 일 예시적인 실시형태에서, 구현은 OnAccept 콜백을 이해하고 구현할 것이 요구되는데, 이는, 부수적 효과들 (예를 들어, 상태 데이터베이스에 대한 업데이트들) 이 너무 이르게 (예를 들어, 호스트 애플리케이션이 주어진 결정적 의무 또는 콜백에 응할 수 없고, 액션의 수행을 종결할 필요가 있다는 것을 결정하기 전에) 발생하는 것을 방지하여, 트랜잭션 원자성 (transactional atomicity) 의 측정을 제공하는데 유용하기 때문이다.
1.29.1. 파라미터들
다음과 같은 파라미터들이 확장된 상태 블럭 데이터 구조에서 리턴될 수 있는 의무들 및 콜백들의 몇몇 타입들을 정의한다.
1.29.1.1. 의무들 ( Obligations )
파라미터 이름: Obligations
파라미터 타입: ValueList
설명: 의무 파라미터들의 리스트. 리스트의 각각의 값은 타입 파라미터 또는 확장된 파라미터의 것이다. 일 실시형태에서, 다음과 같은 의무 파라미터들이 정의된다.
이름 타입 설명
RunAgentOnPeer 값 리스트 호스트 애플리케이션은 현재 실행중인 프로토콜 세션의 피어 (peer) 에서 실행하기 위해 에이전트 제어 (agent control) 를 전송할 필요가 있다.
================================================
| 타입 | 설명 |
================================================
| 스트링 |실행할 에이전트를 포함하는 제어의 Id|
================================================
| 스트링 |실행할 에이전트의 이름 |
================================================
| 정수 |인스턴스 Id. 이 값은 이 에이전트 의 |
| |무 인스턴스를 고유하게 식별하기 위해|
| |사용된다. 이 id 는 시스템이 이 |
| |에이전트 의무를 OnAgentCompletion |
| |귀환 호출 파라미터와 상관시키도록 |
| |허용한다. |
================================================
| 스트링 |콘텍스트 Id. 이 Id 는 에이전트의 |
| |세션 콘텍스트 호스트 오브젝트 경로: |
| |Octopus/Agent/Parameters/Session/ |
| |ContextId 하의 피어 상에서 실행중인 |
| |에이전트에 의해 보일 것이다. |
================================================
|값 리스트|타입 파라미터의 값들의 리스트. |
| |이들 모든 파라미터들은 에이전트에게 |
| |입력 파라미터들로서 보일 것이다. |
================================================
1.29.1.2. 콜백들 ( Callbacks )
파라미터 이름: Callbacks
파라미터 타입: ValueList
설명: 콜백 파라미터들의 리스트. 리스트의 각각의 값은 타입 파라미터 또는 확장된 파라미터의 것이다. 일 실시형태에서, 다음의 콜백들 파라미터들이 정의된다.
이름 타입 설명
OnAccept 콜백 호스트 애플리케이션은 이 ESB 에 포함된 모든 결정적 의무 및 콜백 파라미터들을 이해할 수 있다면 콜백하여야 한다.
일 실시형태에서, 콜백 파라미터들에 최대 하나의 OnAccept 콜백 파라미터가 존재할 수 있다. 다른 콜백 파라미터들이 리스트에서 특정된다면, OnAccept 가 제일 먼저 실행된다.
OnTime 값 리스트 호스트 애플리케이션은 특정 날짜/시간 후에 콜백하여야 한다.
================================================
| 타입 | 설명 |
================================================
| 날짜 |그 후에 호스트 애플리케이션이 콜백을 |
| |수행할 필요가 있는 날짜 |
================================================
| 콜백 |콜백하기 위한 루틴, 및 연관된 쿠키 |
================================================
OnTimeElapsed 값 리스트 호스트 애플리케이션은 특정 기간이 경과한 후에 콜백하여야만 한다 (호스트 애플리케이션이 승인된 권한에 대한 액션을 애플리케이션이 실제로 수행할 때 시작한다).
================================================
| 타입 | 설명 |
================================================
| 정수 |초들 (seconds) 의 수. 값은 부호가 |
| |없는 값이다. |
================================================
| 콜백 |콜백하기 위한 루틴, 및 연관된 쿠키 |
================================================
OnEvent 값 리스트 호스트 애플리케이션은 어떤 이벤트가 발생할 때 콜백하여야만 한다.
================================================
| 타입 | 설명 |
================================================
| 스트링 | 이벤트 이름 |
================================================
| 정수 | 이벤트 플래그들 (정수 값은 |
| | 비트-필드로서 해석된다) |
================================================
| 정수 | 이벤트 파라미터 |
================================================
| 콜백 | 콜백하기 위한 루틴, 및 연관된 |
| | 쿠키. |
================================================
이벤트에 대해 더 자세한 내용은 이벤트에 관한 문단 참조.
OnAgentCompletion 값 리스트 호스트 애플리케이션은 의무 파라미터들 중 하나에서 특정된 에이전트가 완료될 때, 또는 실행에 실패할 때, 콜백하여야만 한다.
================================================
| 타입 | 설명 |
================================================
| 정수 |에이전트 인스턴스 id. |
| |에이전트 의무에서 특정된 |
| |인스턴스 id |
================================================
| 콜백 |콜백하기 위한 루틴, 및 연관된 쿠키 |
================================================
콜백할 때, 호스트 애플리케이션은 다음의 인수 블록 (ArgumentsBlock) 을 제공한다.
================================================
| 타입 | 인코딩 | 설명 |
================================================
|32-비트 정수|빅엔디언 순서의 |완료 상태 코드 |
| |4 바이트 | |
================================================
|32-비트 정수|빅엔디언 순서의 |에이전트 |
| |4 바이트 |결과 코드 |
================================================
|8-비트 |바이트 시퀀스 |에이전트 |
|바이트어레이| |리턴 블록 |
================================================
완료 상태 코드 값은 에이전트가 실행될 수 없었다면 0 이고, 또는 존재하지 않았다면 음의 에러 코드이다.
에이전트 리턴 블록은 에이전트에 의해 리턴된 데이터이다. 에이전트가 실행될 수 없었다면 이는 생략된다 (완료 상태 코드는 0 이 아니다).
일 실시형태에서, 상기 표에서 언급된 '콜백' 타입은 3 개의 값 블록 요소들을 갖는 값 리스트 블록이다.
값 타입 설명
정수 콜백 타입의 ID. 일 실시형태에서, 2 가지 타입의 콜백들이 정의된다.
=================================================================
| ID | 설명 |
=================================================================
|RESET=0 |콜백 루틴을 호출하자 마자 모든 펜딩 중인 콜백 |
| |요청들 및 활성 의무들이 취소된다. |
| |이 콜백 루틴은, 애플리케이션이 현재 동작과 |
| |지속할 수 있는지와 애플리케이션이 어떻게 |
| |현재 동작과 지속할 수 있는지를 나타내는 |
| |ESB 를 리턴한다. |
=================================================================
|CONTINUE=1 |모든 다른 펜딩 중인 콜백 요청들 및 활성 |
| |의무들이 유효하게 남아 있는 동안 |
| |콜백 루틴이 호출된다. |
| |콜백 루틴은 간단한 결과 코드를 리턴한다. |
| |애플리케이션은 그 결과 코드가 실패를 |
| |나타내지 않는다면, 현재 동작을 계속할 수 있다.|
=================================================================
스트링 코드 모듈에서 호출하기 위한 엔트리 포인트. 일 실시형태에서, 이는 이 파라미터를 갖는 ESB 를 리턴한 루틴을 포함하는 것과 동일한 제어를 위한 코드 모듈의 엑스포트 테이블의 엔트리들 중 하나이어야만 한다.
정수 쿠키. 이 값은 호출된 루틴으로 스택 상에서 전달될 것이다.
1.29.1.3. 파라미터 플래그들
일 실시형태에서, 이전 섹션에서 정의된 것과 동일한 파라미터 플래그들이 사용된다. 일 실시형태에서, 호출자가 구현하도록 요구되는 콜백들 및 의무들은, 호스트 애플리케이션에게 이들 파라미터들을 무시할 기회를 주는 것을 피하기 위해 CRITICAL 로서 마크된다.
1.29.2. 이벤트들
일 실시형태에서, 이벤트들은 이름에 의해 특정된다. 이벤트의 타입에 따라, 이벤트를 추가적으로 특정하는 정의된 플래그들의 셋트가 존재할 수도 있다. 일 실시형태에서, 특정 이벤트에 대해 아무런 플래그들도 정의되지 않았다면, 플래그 필드의 값은 0 으로 설정된다. 또한, 몇몇 이벤트들은 이벤트가 발생할 때 일부 정보가 콜백 루틴에 제공되도록 특정할 수도 있다. 일 실시형태에서, 호스트 애플리케이션으로부터 아무런 특별한 정보도 요구되지 않는다면, 호스트 애플리케이션은 빈 인수 블록 (ArgumentsBlock) 으로 호출하여야만 한다 (이하의 섹션 3.3 의 콜백 루틴 인터페이스의 설명 참조).
일 실시형태에서, CRITICAL 로 마크된 콜백 파라미터의 이벤트의 이름이 호스트 애플리케이션에 의해 애해되지 않고 지원되지 않는다면, 호스트 애플리케이션은 이 파라미터를 이해되지 않는 CRITICAL 파라미터로 간주하여야 한다 (그리고, 권한이 요청되었던 액션은 수행되어서는 안된다).
일 실시형태에서, 다음과 같은 이벤트가 정의된다.
이벤트 이름 이벤트
플래그들
이벤트
파라미터
설명
OnPlay 없음 없음 호스트 애플리케이션은 멀티미디어 오브젝트가 플레이를 시작할 때 콜백하여야만 한다.
OnStop 없음 없음 호스트 애플리케이션은 멀티미디어가 플레이를 중지할 때 (또는 일시 중지될 때), 콜백하여야만 한다.
OnTimecode 없음 프리젠테이션의 시작 이후부터의 초들의 수로 표현된 프리젠테이션 시간 호스트 애플리케이션은 (보통의 리얼-타임 플레이백 동안, 또는 탐색 후에) 특정된 프리젠테이션 시간이 도달하였거나 초과되었을 때, 콜백하여야만 한다. 프리젠테이션 시간의 시작점은 렌더링이 시작된 때이다. 프리젠테이션 시간은 소스 미디어 시간에 관련되고, 벽시계 시간과 관련되는 것은 아니다 (예를 들어, 프리젠테이션이 일시중지될 때, 프리젠테이션 시간은 변하지 않는다).
OnSeek 없음 없음 호스트 애플리케이션은 멀티미디어 프리젠테이션의 임의의 포인트에 대한 다이렉트 액세스가 발생할 때 호출하여야만 한다.
일 실시형태에서, 콜백 시에, 호스트 애플리케이션은 다음과 같은 데이터를 인수 블록에 제공하여야 한다.
==========================================
| 타입 | 인코딩 | 설명 |
==========================================
|32-비트 |빅엔디언 순서의|위치 오프셋 |
|부호없는 |4바이트 |탐색 |
|정수 | | |
==========================================
|32-비트 |빅엔디언 순서의|위치 범위 |
|부호없는 |4바이트 |탐색 |
|정수 | | |
==========================================
멀티미디어 프리젠테이션 내의 위치가 프리젠테이션 내의 범위 총 "마크들" 중 오프셋 "마크들" 이다.
예를 들어, 327 초 길이의 프리젠테이션에 대해, 60번째 초에 대한 탐색은 오프셋=60, 범위=327 로 나타내어질 수 있다. "마크들" 이 전체 프리젠테이션에 걸쳐 균일하게 분포되어 있는 한, 오프셋과 범위의 측정치에 대응하는 유닛 (이는 시간 유닛, 바이트-사이즈 유닛, 또는 임의의 다른 유닛일 수 있다) 을 선택하는 것은 호출자에 달려 있다.오프셋의 값은 범위의 값보다 적거나 동일하여야 한다.
1.29.3. 콜백 루틴들
일 실시형태에서, 콜백 루틴들은 동일한 입력을 취한다.
입력: 스택의 최상부:
Cookei
ArgumentsBlockSize

...데이터(data)...
Cookie: 콜백 파라미터에서 특정되었던 쿠키 필드의 값.
ArgumentsBlockSize: 이 파라미터 아래의 스택 상에서 전달된 데이터의 바이트들의 수. 루틴이 호출될 때, 스택은 최상부에서 인수들 블록의 사이즈를 나타내는, 호출자에 의해 제공된 값 ArgumentsBlockSize 를 포함하고, 그 다음 데이터의 인수들 블록 사이즈 바이트들이 따른다. 일 실시형태에서, 사이즈가 4 의 배수가 아니면, 스택 상의 데이터는 스택 포인터가 4 의 배수로 남는 것을 보장하기 위해 0-값 바이트들로 패딩될 것이다.
1.29.3.1. CONTINUE 콜백들
일 실시형태에서, 타입 CONTINUE (타입 ID = 0) 를 갖는 콜백들은 다음과 같은 출력을 갖는다.
출력: 스택의 최상부
ResultCode

...
ResultCode: 정수 값. 결과 값은 루틴이 실행될 수 없었다면 0 이고, 또는, 에러가 발생하였다면 음의 에러 코드이다.
설명: 콜백 루틴이 실행될 수 없었다고 결과 코드가 나타낸다면, (즉, 값이 0), 호스트 애플리케이션은 현재 동작을 계속할 수 있다. 에러가 발생하였다고 결과 코드가 나타낸다면, 호스트 애플리케이션은 현재의 동작을 중지하고, 모든 펜딩 중인 콜백들 및 의무들을 취소한다.
1.29.3.2. RESET 콜백들
제어 루틴이, 루틴으로부터 리턴된 ESB 에서 타입 RESET 의 하나 이상의 콜백들을 특정했을 때, 호스트 애플리케이션은 그 콜백을 위한 조건이 충족될 때 임의의 특정된 콜백 루틴을 호출할 것이다. 일 실시형태에서, 임의의 콜백들의 조건들이 충족되자 마자, 호스트 애플리케이션은
● 모든 다른 펜딩 중의 콜백들을 취소
● 모든 현재의 의무들을 취소
● (있다면) 요구되는 파라미터들을 그 콜백에 대해 제공
● 특정된 콜백 루틴을 호출
루틴으로부터의 리턴 상태는 호스트 애플리케이션에 대해 그것이 현재 동작의 수행을 계속할 수 있는 지 여부를 나타낸다. 일 실시형태에서, 권한이 거부되거나 루틴이 성공적으로 실행하는데 실패한 경우, 호스트 애플리케이션은 현재 동작의 성능을 중지하여야 한다. 유사하게, 권한이 승인되면, 호스트 애플리케이션은 마치 원래의 Control.Actions.<Action>.Perform 루틴을 호출하였던 것처럼 ESB 에서 리턴될 수도 있는 임의의 의무 또는 콜백에 따라야만 한다. 이전의 의무들 또는 콜백 사양들은 더 이상 유효하지 않다.
일 실시형태에서, 이 타입의 콜백에 대해 콜백 엔트리 포인트들로서 특정된 모든 루틴들은 다음과 같은 출력을 갖는다.
출력: 스택의 최상부
ResultCode
StatusBlockPointer

...
ResultCode: 정수 값. 이 값은 루틴이 실행될 수 있었다면 0 이고, 또는, 에러가 발생하였다면 음의 에러 코드이다.
StatusBlockPointer: 표준 확장된 블록의 어드레스.
설명: 이 루틴의 리턴 의미들은 Control.Actions.<Action>.Perform 루틴에 대해 설명된 것과 동등하다.
1.30. 메타데이터 자원 ( Metadata Resources )
일 실시형태에서, 제어 오브젝트들은 메타데이터 자원을 포함할 수 있고, 이 자원은 확장된 상태 블록 데이터 구조들에서의 리턴된 파라미터들로부터 참조될 수 있다. 자원은 간단한 텍스트, 텍스트 템플릿들, 또는 다른 데이터 타입들일 수 있다. 각각의 자원은 자원 ID 에 의해 식별되고, 상이한 언어의 각 버전에 대해 하나씩, 하나 이상의 텍스트 스트링들 또는 인코딩된 데이터를 포함할 수 있다. 자원이 모든 언어들에 대해 제공될 필요는 없다. 어느 언어 버전이 호스트 애플리케이션의 필요들에 대해 가장 적절한 것인가를 선택하는 것은 호스트 애플리케이션에 달려 있다.
자원 ( Resource )
필드 타입 설명
Id ASCII 스트링 URI (통상적으로, 현재 실행중인 루틴을 갖는 코드 모듈을 포함하는 제어 오브젝트의 확장의 Id 를 지칭하는 URN)
Type ASCII 스트링 IETF RFC 2046 에서 설명된 바와 같이 자원 데이터의 MIME 타입
Data 로컬화된 데이터의 리스트 상이한 로컬들에 대한 자원의 모든 상이한 버전들의 리스트
로컬화된 데이터 ( LocalizedData )
필드 타입 설명
Language ASCII 스트링 IETF RFC 3066 에서 기술된 것과 같은 언어 코드
Data 타입은 특정된 마임 (mime) 타입에 의존한다. 자원에 대한 실제 데이터
(텍스트 등)
자원은 제어 오브젝트의 확장들로서 포함됨으로써, 제어 프로그램들을 수반한다. 자원 Id 는, 현재 실행 중에 있는 루틴을 갖는 코드 모듈을 포함하는 제어 오브젝트의 내부 확장의 Id 로 맵핑한다.
자원 오브젝트들에 대한 정규 바이트 시퀀스 계산의 목적을 위해, 일 실시형태에서, 데이터 구조 설명은 다음과 같다.
class LocalizedData {
string language
byte[] data;
}

class Resource {
string id
string type;
LocalizedData data;
}
1.30.1. 간단한 텍스트
간단한 텍스트는 MIME-타입 '텍스트' 로서 기술된다.
1.30.2. 텍스트 템플릿들 ( Text Templates )
표준 텍스트 자원에 추가하여, 일 실시형태에서, 텍스트 템플릿 타입이 정의된다. 이를 위한 MME-타입이 'text/vnd.intertrust.octopus-text-template' 이다.
일 실시형태에서, 텍스트 템플릿은 UTF-8 로 인코딩된 텍스트 문자들, 및 확장된 상태 블록의 것등과 같은 파라미미터들의 리스트에서 리턴된 파라미터들로부터 획득된 텍스트 값들에 의해 대체될 명명된 개체틀 (placeholder) 들을 포함한다. 개체틀에 대한 구문은 '\PLACEHOLDER\' 이고, 여기서, PLACEHOLDER 는 파라미터 블록의 이름과 선택적 포맷팅 힌트를 기술한다. 일 실시형태에서, 템플릿 프로세서는 전체 토큰 '\PLACEHOLDER\' 를 그 파라미터 블록의 값 필드의 포맷된 표현으로 대체하여야만 하고, 값 데이터의 포맷팅은 아래 섹션 4.2.1 에서 기술된다.
일 실시형태에서, 문자 '\' 가 개체틀 밖의 텍스트에 나타난다면, 이는 '\\' 로서 인코딩되어야만 하고, 텍스트의 '\\' 의 모든 발생들은 템플릿 프로세서에 의해 '\' 로 복귀될 것이다.
개체틀을 위한 구문은 FORMAT|NAME 이고, 여기서, NAME 은 파라미터 블록의 이름이고, FORMAT 은 파라미터의 데이터를 텍스트로 변환하기 위한 포맷팅 힌트이다. 파라미터 값의 데이터 타입에 대한 디폴트 포맷팅 규칙이 충분하다면, 포맷팅 힌트는 생략될 수 있고, 개체틀은 단순히 NAME 이다.
1.30.2.1. 포맷팅
1.30.2.1.1. 디폴트 포맷팅
일 실시형태에서, 상이한 값 타입들을 위한 디폴트 포맷팅 규칙들은:
타입 포맷팅
정수 부호 있는 10진수로서 정수 값의 텍스트 표현. 텍스트는 숫자 "0" 내지 "9" 를 위한 문자들과 문자 "-" 로만 이루어진다. 값이 0 이면, 텍스트는 스트링 "0" 이다. 값이 0 이 아니면, 텍스트는 문자 "0" 으로 시작하지 않는다. 값이 음의 값이면, 텍스트는 문자 "-" 로 시작한다. 값이 양의 값이면, 텍스트는 0 이 아닌 숫자 문자로 시작한다.
실수 10진 플로팅 포인트 값의 텍스트 표현. 값의 정수부는 정수 값들에 대한 것과 동일한 규칙을 이용하여 표현된다. 10진 분리자는 호스트 애플리케이션의 선호되는 10진 분리자로 표현된다. 값의 팩션 부분은 6 개까지의 "0" 문자들 다음에 3 개까지의 0 이 아닌 숫자 문자들로 이루어진다.
스트링 스트링 값 자체
날짜 날짜의 호스트의 선호되는 텍스트 표현에 따른, 날자의 인간이 판독가능한 표현
파라미터 텍스트 "<name>=<value>", 여기서, <name> 은 파라미터 이름이고, <value> 은 그 타입에 대한 디폴트 포맷팅 규칙에 따라 포맷된 파라미터 값
확장된 파라미터 파라미터에 대한 것과 동일
자원 자원의 데이터의 텍스트 스트링. 일 실시형태에서, 개체틀에 의해 참조되는 자원은 텍스트 기반인 MIMI-타입을 가져야만 한다 (예를 들어, 텍스트 또는 text/vnd.intertrust.octopus-text-template)
값 리스트 타입에 대한 디폴트 포맷팅 규칙에 따라 포맷된 리스트의 모든 값들을 갖는 텍스트 "<value>,<value>, ... "
1.30.2.1.2. 양함수 표시의 포맷팅 ( Explicit Formatting )
양함수 표시의 포맷 이름들은 개체틀 태그의 FORMAT 부분으로서 사용될 수 있다. 미지의 FORMAT 이름과 마주친다면, 템플릿 프로세싱 엔진은 디폴트 포맷팅 규칙을 이용할 것이다.
이름 포맷팅
Hex 부호 없는 것으로서 해석되는 정수 값의 16진수 표현. 일 실시형태에서, 이 포맷팅 힌트는 정수들이 아닌 데이터 타입들에 대해서 무시되어야 한다.
1.31. 콘텍스트 오브젝트들 ( Context Objects )
일 실시형태에서, 제어 루틴이 실행될 때, System.Host.GetObject 시스템 호출의 이용을 통해 많은 콘텍스트 오브젝트들에 대한 액세스를 갖는다.
1.31.1. 일반적 콘텍스트 ( General Context )
일 실시형태에서, 다음과 같은 콘텍스트가 실행중인 제어들에 대해 존재한다.
이름 타입 설명
Octopus/Personality/Id 스트링 현재 퍼스널리티 (personality) 노드의 ID
Octopus/Personality/Attributes 속성 컨테이너 현재 퍼스널리티 노드의 속성들
1.31.2. 런타임 콘텍스트
일 실시형태에서, 다음과 같은 콘텍스트가, System.Host.SpawnVm 시스템 호출을 이용하여 생성된 VM 에서 실행중인 모든 제어들에 대해 존재한다. 일 실시형태에서, 이 콘텍스트는, System.Host.SpawnVm 을 이용하여 생성되지 않은 VM 에서 실행중인 제어들에 대해서는 존재하지 않거나 빈 컨테이너이어야 한다.
이름 타입 설명
Octopus/Runtime/Parent/ID 명명되지 않은 스트링 오브젝트들의 컨테이너 시스템 호출의 호출자가 실행되고 있는 아이덴티티.
1.31.3. 제어 콘텍스트
일 실시형태에서, 다음과 같은 콘텍스트가 제어 루틴이 실행될 때마다 존재한다.
이름 타입 설명
Octopus/Control/Id 스트링 실행중인 제어의 Id
Octopus/Control/Attributes 컨테이너 실행중인 제어의 속성들. 이 오브젝트는 제어가 아무런 속성들도 가지지 않는다면 생략될 수도 있다.
1.31.4. 제어기 콘텍스트
일 실시형태에서, 제어의 루틴이 실행중이고 (예를 들어, 보호된 콘텐츠를 소비하기 위해 콘텐츠 키 (ContentKey) 오브젝트를 액세스할 때) 그 제어가 제어기 오브젝트에 의해 포인팅될 때마다, 다음과 같은 콘텍스트가 존재한다.
이름 타입 설명
Octopus/Controller/Id 스트링 현재 실행중인 제어를 포인팅하는 제어기의 Id
Octopus/Controller/Attributes 컨테이너 현재 실행중인 제어를 포인팅하는 제어기의 속성들. 이 오브젝트는 제어기가 아무런 속성들도 갖지 않으면 생략될 수도 있다.
호스트 애플리케이션이 단일 제어기 오브젝트에 의해 제어되는 그룹 콘텐츠 키들만 허용되는 실시형태에서, 주어진 액션에 대해, 오직 하나의 적용가능한 제어기 오브젝트가 존재할 것이다.
1.31.5. 액션 콘텍스트 ( Action Context )
일 실시형태에서, 액션을 제어할 목적으로 제어가 호출될 때마다 다음과 같은 콘텍스트가 존재한다.
이름 타입 설명
Octopus/Action/Parameters 컨테이너 현재 액션 (존재한다면) 과 관련 있는 파라미터들을 나타내는 이름/값 (Name/Value) 쌍의 어레이. 일 실시형태에서, 각각의 액션 타입은 선택적 및 요구되는 파라미터들의 리스트를 정의한다. 이 컨테이너는 액션이 아무 파라미터들도 갖지 않는다면 생략될 수도 있다.
1.31.6. 링크 콘텍스트
일 실시형태에서, 링크 오브젝트의 유효성을 제약할 목적으로 제어 (예를 들어, 링크 오브젝트에 내장된 제어 오브젝트) 가 호출될 때마다 다음과 같은 콘텍스트가 존재한다.
이름 타입 설명
Octopus/Link/Id 스트링 링크 오브젝트의 Id
Octopus/Link/Attributes 컨테이너 실행중인 제어를 포함하는 링크 오브젝트의 속성들. 이 오브젝트는 링크가 아무런 속성들도 갖지 않는다면 생략될 수도 있다.
1.31.7. 에이전트 콘텍스트 ( Agent Context )
일 실시형태에서, 제어의 에이전트 루틴이 실행중일 때 다음과 같은 콘텍스트가 존재한다.
이름 타입 설명
Octopus/Agent/Parameters 컨테이너 에이전트에 대한 입력 파라미터들을 나타내는 이름/값 파라미터 쌍들의 어레이
Octopus/Agent/Session/ContextId 스트링 에이전트가 실행중인 세션 콘텍스트에 대한 식별자
파라미터 및 세션 컨테이너들은, 어느 입력 파라미터들을 에이전트로 전달하고, 어느 세션 콘텍스트 오브젝트들을 호스트가 어떤 조건들 하에 설정할 필요가 있는가를 특정하기 위해, 하나의 엔티티를 필요로하는 프로토콜들이 또 다른 엔티티 상의 에이전트를 전송하고 실행하는 것을 허용하는데 통상적으로 이용된다. 어떤 세션 콘텍스트 오브젝트들의 존재 또는 부재는, 에이전트 코드가, 그것이 지원받도록 디자인된 프로토콜의 일부로서 실행 중인지 여부를 결정하는 것을 허용하고, 또는, 콘텍스트의 외부에서 실행 중이라면, 이 경우, 실행을 거부할 수도 있다. 예를 들어, 호스트 상에 상태 (state) 오브젝트를 생성할 목적의 에이전트 (이 에이전트는 호스트 상에서 실행된다) 는, 특정 프로토콜 상호작용 동안 실행되지 않는다면, 실행을 거부할 수도 있다.
1.32. 액션들 ( Actions )
일 실시형태에서, 각각의 액션은 파라미터들의 이름 및 리스트를 갖는다. 일 실시형태에서, 일부 파라미터들은 필요하고 - 애플리케이션은 이 액션을 수행할 때 그들을 제공하여야만 한다 - 일부는 선택적이다 - 애플리케이션은 이들을 제공할 수도 있고, 이들을 생략할 수도 있다.
일 실시형태에서, 다음과 같은 표준 액션들이 정의된다.
1.32.1. 플레이 ( Play )
설명: 멀티미디어 콘텐츠의 통상적인 리얼 타임 플레이백.
1.32.2. 전송 ( Transfer )
설명: 호환 가능한 타겟 시스템으로의 전송.
호환 가능한 타겟 시스템으로의 전송은, 콘텐츠가 동일한 DRM 기술을 갖는 시스템에 대해 이용가능하도록 만들어져야할 때, 그 타겟 시스템이 이 제어를 포함하는 것과 동일한 라이센스를 이용할 수 있도록 할 때 이용되며, 하지만, 상태 정보는 소스, 싱크, 또는 이 양자 상에서 변경될 필요가 있을 수도 있다. 그로부터 전송이 행해지는 시스템은 소스라 불린다. 그리로 전송이 행해지는 타겟 시스템은 싱크라 불린다.
이 액션은, 소스의 지속되는 상태들 및 싱크의 지속되는 상태들 (예를 들어 본원에 설명된 상태 데이터베이스의 오브젝트들) 에서 필요한 업데이트를 행하기 위해 에이전트가 소스로부터 싱크로 전송되는 것을 허용하는 서비스 프로토콜과 함께 이용되도록 의도된다. 일 실시형태에서, 제어는 이 목적을 위해 RunAgentOnPeer 의무 (obligation) 를 이용한다. 이 서비스 프로토콜의 예시적인 실시형태들에 관한 추가적인 정보는 상태 데이터베이스의 논의와 함께 이하에서 제공된다.
파라미터들:
이름 타입 설명
Sink/Id 스트링 싱크의 노드 Id
Sink/Attributes 컨테이너 싱크의 노드의 속성들. 이 컨테이너는 노드가 아무런 속성도 갖지 않으면 생략될 수도 있다.
TransferMode 스트링 콘텐츠가 전송되는 모드를 나타내는 전송 모드 ID. 이 ID 는 이하에서 정의되는 바와 같은 표준 모드일 수 있고, 또는 시스템 소유 모드에 대한 URN 일 수 있다.
일 실시형태에서, 다음과 같은 표준 모드들이 정의된다.
===============================================
| ID | 설명 |
===============================================
| |이 싱크는 렌더링의 목적을 위해 |
| Render |콘텐츠를 수신하고 있다. |
===============================================
| |이 싱크는 콘텐츠의 카피를 수신 |
| Copy |하고 있다 |
===============================================
| |이 콘텐츠는 싱크로 이동되고 있다. |
| Move | |
===============================================
| |이 콘텐츠는 싱크로 체크아웃되고 |
| CheckOut |있다. 이는 Move 와 유사하지만,|
| |싱크 상의 결과적인 상태가 소스로 |
| |다시 이동하는 것 외에는 임의의 |
| |다른 이동을 방지할 수도 있다는 |
| |점에서 구별된다. |
===============================================
TransferCount 정수 이 제어와 연관된 상태 카운터들의 얼마나 많은 인스턴스들이 싱크로 이송될 필요가 있는 지를 나타내는 정수 값.
일 실시형태에서, 이 파라미터는 선택적이다. 만약 이것이 존재하지 않는다면, 오직 하나의 인스턴스만이 전송된다. 전송 모드가 Render 또는 Copy 일 때는 존재하여서는 아니된다.
1.32.3. 엑스포트 ( Export )
설명: 외부 타겟 시스템으로의 엑스포트.
외부 타겟 시스템으로의 익스포팅은, 콘텐츠가 원래 콘텐츠 라이센스가 사용될 수 없는 시스템으로 엑스포트되어야할 때 이용되는 액션이다. 이는, 상이한 DRM 기술을 이용한 시스템일 수도 있고, DRM 기술을 이용하지 않는 시스템일 수도 있으며, 또는 동일한 기술을 이용하는 시스템이지만 원래 라이센스와는 상이한 라이센스를 필요로하는 상황일 수도 있다. 그로부터 전송이 행해지는 시스템은 소스라 불린다. 그리로 전송이 행해지는 타겟 시스템은 싱크라 불린다.
일 실시형태에서, 설명 (Describe), 체크 (Check), 및 이 방법의 수행 (Perform) 방법들에 대한 확장된 상태 결과에서, 다음과 같은 파라미터가 설정될 것이다.
이름 타입 설명
ExportInfo 임의의 타입 액션 파라미터들에서 특정된 타겟 시스템으로 콘텐츠를 익스포팅할 때 관련되는 정보. 이 정보의 실제 타입 및 콘텐츠는 각 타겟 시스템에 대해 특유하다. 예를 들어, CCI-기반 시스템에서, 이는 엑스포트되는 콘텐츠에 대해 설정하기 위한 CCI 비트들을 포함할 것이다.
파라미터들:
이름 타입 설명
TargetSystem 스트링 그리로 엑스포트가 이루어지고 있는 외부 시스템의 시스템 ID. 이 ID 는 URN 이다.
ExportMode 스트링 콘텐츠가 엑스포트되고 있는 모드를 나타내는 엑스포트 모드 ID. 이 ID 는 이하에서 정의되는 바와 같은 표준 모드일 수 있고, 또는, 시스템 소유 모드에 대한 URN 일 수도 있다.
일 실시형태에서, 다음과 같은 표준 모드들이 정의된다.
======================================================
| ID | 설명 |
======================================================
|DontKnow |호출자는 싱크의 의도된 모드가 무엇인지 |
| |모른다. 이 경우, 제어 프로그램은, |
| |타겟 시스템에 대해 임의의 허용된 모드들이 |
| |싱크에 의해 가정될 수 있다는 것을 |
| |가정하여야 하고, 액션 루틴들의 리턴 상태의|
| |임의의 제약을 나타내어야 한다. |
| |예를 들면, CCI-기반 시스템에서, 제어는, |
| |라이센스가 허용하는 것에 따라 |
| |렌더 (Render) 또는 카피 (Copy) 중 |
| |어느 하나의 등가물을허용할 CCI 비트들을 |
| |리턴할 수 있다. |
======================================================
|Render |싱크는 렌더링의 목적을 위해 콘텐츠를 |
| |수신하고 있으며, 각각의 타겟 시스템에 의해|
| |기술되는 바와 같이 캐싱 목적을 제외하고는 |
| |콘텐츠의 사용가능한 카피를 보유하지 |
| |않을 것이다. |
======================================================
|Copy |싱크는 콘텐츠의 카피를 수신하고 있다. |
======================================================
|Move |콘텐츠가 싱크로 이동되고 있다. |
======================================================
다른 입력 파라미터들이 특정 타겟 시스템에 의해 요구될 수도 있다.
1.32.3.1. 표준 타겟 시스템들 ( Standard Target System )
1.32.3.1.1. 오디오 CD 또는 DVD
일 실시형태에서, 타겟 시스템이 암호화되지 않은 매체이고, 그 매체 상으로 기록가능한 오디오 CD 또는 DVD 등과 같은 압축되지 않은 PCM 오디오가 쓰여질 때, 표준 타겟 시스템 ID 'CleartextPcmAudio' 가 이용된다. 이 타겟 시스템에서, ExportInfo 파라미터는 저작권 플래그를 나타내는 단일 정수 파라미터이다. 이 플래그는 정수 값의 최하위 비트에 나타내어진다.
비트 인덱스 설명
0(LSB) 이 플래그가 설정되는 경우, 저작권 비트 또는 플래그가 기록된 오디오의 포맷으로 (이 포맷이 이러한 비트 또는 플래그의 시그널링을 지원한다면) 설정되어야만 한다.
10. 상태 데이터베이스 ( State Database )
보안 상태 저장 메커니즘을 제공하기 위해 DRM 엔진의 선호되는 실시형태들에 의해 이용될 수 있는 보안 오브젝트 저장부가 이하 설명된다. 이러한 기능은, 호출 (invocation) 에 대해 완고한 보호된 상태 데이터베이스에 제어 프로그램들이 판독하고 기입할 수 있도록 하는데 유용하다. 이러한 상태 데이터베이스는, 플레이 카운트, 제 1 사용을 위한 날짜, 축적된 렌더링 시간, 및/또는 기타 등등과 같은 상태 오브젝트들을 저장하는데 이용될 수 있다. 바람직한 실시형태에서, 보안 데이터베이스는, 휴대용 디바이스 상의 플래쉬 메모리, 또는 PC 상의 하드 디스크 드라이브의 암호화된 영역과 같은, 비휘발성 메모리에서 구현된다. 하지만, 보안 데이터베이스는 임의의 적합한 매체 상에 구현될 수도 있다는 것을 알 수 있을 것이다.
본 섹션에서 사용된 바와 같이, "오브젝트 (object)" 라는 용어는, 보안 오브젝트 저장부 내에 포함된 데이터 오브젝트들을 일반적으로 지칭하는 것이고, 본원의 기타 부분에서 논의된 오브젝트들 (예를 들어, 제어들, 제어기들, 링크들 등) 을 지칭하는 것이 아니다; 이 두 오브젝트들의 카테고리들 간에 구분할 필요가 있다면, "DRM 오브젝트" 라는 용어는 본원의 기타 부분에서 설명된 오브젝트들 (즉, 제어들, 제어기들, 보호기들, 콘텐츠 키들, 링크들, 노드들 등) 을 지칭하는데 사용될 것이고, 한편, "상태 오브젝트 (state object)" 라는 용어는 상태 데이터베이스 내에 저장된 오브젝트들을 지칭하는데 사용될 것이다. 이하의 논의에서, 본원의 기타 부분에서 설명되는 Octopus DRM 엔진 실시형태와 함께 사용되는, "시쉘 (Seashell)" 이라 불리는, 상태 데이터베이스의 일 예시적인 구현에 대한 참조가 종종 이루어질 것이다. 하지만, 본원에 설명된 시스템들 및 방법들의 실시형태들이 이 예시적인 구현의 일부 또는 전부 없이도 실시될 수 있다는 것을 알 수 있을 것이다.
1.33. 데이터베이스 오브젝트들
오브젝트 저장부 (예를 들어, 데이터베이스) 는 데이터 오브젝트들을 포함한다. 일 실시형태에서, 오브젝트들은 논리적 계층에 배열되고, 여기서, 컨테이너 오브젝트들은 그들의 포함된 차일드 오브젝트들의 페어런트이다. 일 실시형태에서, 4 가지 타입의 오브젝트들이 존재한다: 스트링, 정수, 바이트 어레이, 및 컨테이너. 각각의 오브젝트는 연관된 메타데이터 및 타입을 갖는다. 그 타입에 따라, 오브젝트는 값을 또한 가질 수 있다.
일 실시형태에서, 상태 오브젝트들은 System.Host.GetObject 및 System.Host.SetObject 시스템 호출들을 이용하여 가상 머신 프로그램들로부터 액세스될 수 있고, 이하 더 상세히 설명되는 바와 같이, 오브젝트 메타데이터는 가상 이름들을 이용하여 액세스될 수 있다. 일 실시형태에서, 몇몇 메타데이터 필드들은 데이터베이스의 클라이언트들에 의해 변경될 수 있고 (즉, 그들은 RW (read-write) 액세스가능하다), 한편, 다른 메타데이터 필드들은 리드-온리 (read-only; RO) 이다.
일 실시형태에서, 다음 표에서 나타낸 메타데이터 필드가 정의된다:
필드 타입 액세스가능성 설명
Name 스트링 RO 오브젝트의 이름. 일 실시형태에서, 오직 다음의 문자들만이 오브젝트 이름으로서 허용된다 (모든 다른 것들은 보존된다):a-z, A-Z, 0-9, '_', '-', '+', ':', '.', '$', '!', '*', ' '
Owner 스트링 RW 그 오브젝트의 소유자의 Id
CreationDate 부호 없는 32-비트 정수 RO 오브젝트가 생성되었던 시간으로서, 1970년 1월 1일 00:00:00 로컬 시간부터 경과된 분들의 수로서 표현된다.
ModificationDate 부호 없는 32-비트 정수 RO 오브젝트가 마지막으로 수정되었던 시간으로서, 1970년 1월 1일 00:00:00 로컬 시간부터 경과된 분들의 수로서 표현된다.
컨테이너 오브젝트에서, 이것은 차일드가 컨테이너에 최종적으로 부가되었거나 제거되었던 시간이다. 다른 오브젝트들에서는, 이것은 그들의 값이 마지막으로 변경되었던 시간이다.
ExpirationDate 부호 없는 32-비트 정수 RW 오브젝트가 만료된 시간으로서, 1970년 1월 1일 00:00:00 로컬 시간부터 경과된 분들의 수로서 표현된다. 0 의 값은 오브젝트가 만료하였음을 의미한다.
Flags 32-비트 비트 필드 RW 오브젝트의 특성들을 나타내는 불 플래그들의 셋트.
일 실시형태에서, 다음 표에서 나타낸 메타데이터 플래그가 정의된다:
비트 인덱스 이름 의미
0 (LSB) PUBLIC_READ 설정된다면, 이 오브젝트에 대한 액세스 제어는, 임의의 클라이언트가 오브젝트 및 그 메타데이터를 읽을 수 있도록 된다는 것을 의미한다.
이전에 나타낸 바와 같이, 일 실시형태에서, 4 가지 타입의 상태 오브젝트들이 존재한다: 스트링들, 정수들, 바이트 어레이들, 및 컨테이너. 본 실시형태에서, 스트링 오브젝트의 값는 UTF-8 인코딩된 문자 스트링이고, 정수 오브젝트의 값은 32-비트 정수 값이며, 바이트 어레이 오브젝트의 값은 바이트들의 어레이이다. 본 실시형태에서, 컨테이너 오브젝트는 제로 또는 그보다 많은 오브젝트들을 포함한다. 컨테이너 오브젝트는 그것이 V함하는 오브젝트들의 페어런트로서 지칭된다. 포함된 오브젝트들은 컨테이너의 칠드런으로서 지칭된다. 오브젝트의 페어런트, 페어런트의 페어런트 등의 체인을 구성하는 모든 컨테이너 오브젝트들은, 오브젝트의 조상들이라 불린다. 오브젝트가 조상으로서 또 다른 오브젝트를 가진다면, 그 오브젝트는 조상 오브젝트의 자손이라 불린다.
1.34. 오브젝트 수명 ( Object Lifetime )
일 실시형태에서, 상태 데이터베이스의 오브젝트들의 수명은 많은 규칙에 따른다. 오브젝트들은 명시적으로 파괴될수도 있고, 또는, 암묵적으로 파괴될 수도 있다. 오브젝트는 또한 데이터베이스 가비지 (garbage) 수집의 결과로서 파괴될 수 있다. 오브젝트가 어떻게 파괴되는지에 상관 없이, 이 실시형태에서 다음과 같은 규칙이 적용된다.
● 그 오브젝트의 페어런트 컨테이너에 대한 수정 날짜 (ModificationDate) 가 현재 로컬 시간에 설정된다.
● 오브젝트가 컨테이너라면, 모든 그의 칠드런은 그 오브젝트가 파괴될 때 파괴된다.
1.34.1. 명시적 오브젝트 파괴 ( Explicit Object Dectruction )
명시적 오브젝트 파괴는, 데이터베이스의 클라이언트가 오브젝트가 제거될 것을 요청할 때 일어난다 (Host.SetObject 시스템 호출을 이용하여 이것이 어떻게 행해질 수 있는지에 관한 좀 더 상세한 내용은 오브젝트 액세스 (Object Access) 참조).
1.34.2. 암묵적 오브젝트 파괴 ( Implicit Object Destruction )
암묵적 오브젝트 파괴는, 그것의 조상이 파괴된 오브젝트들 중 하나의 결과로서 오브젝트가 파괴될 때 일어난다.
1.34.3. 가비지 수집 ( Garbage Collection )
일 실시형태에서, 상태 데이터베이스는 만료된 임의의 오브젝트를 파괴한다. 이 오브젝트는 데이터베이스를 구현하는 시스템 상의 로컬 시간이 오브젝트의 메타데이터의 ExpirationDate 필드보다 더 늦을 때 만료된 것으로 간주된다. 일 실시형태는 만료된 오브젝트들에 대한 데이터베이스를 주기적으로 스캔하고 그들을 파괴할 수도 있고, 또는, 오브젝트가 그 만료 날짜를 체크하기 위해 액세스될 때까지 기다릴 수도 있다. 일 실시형태에서, 일 구현은 클러이언트에게 만료된 오브젝트를 리턴하여서는 안된다. 일 실시형태에서, 컨테이너 오브젝트가 (예를 들어, 만료되었기 때문에) 파괴될 때, 그 차일드 오브젝트 또한 (또한 모든 그들의 자손들도 순환적으로) 아직 만료되지 않았다 하더라도 파괴된다.
1.35. 오브젝트 액세스
일 실시형태에서, 상태 데이터베이스의 오브젝트들은 한 쌍의 시스템 호출들 (오브젝트의 값을 판독하기 위한 System.Host.GetObject, 및 오브젝트들의 값을 생성, 파괴, 또는 설정하기 위한 System.Host.SetObject) 을 통해 가상 머신 프로그램으로부터 액세스될 수 있다.
일 실시형태에서, 호스트 오브젝트들의 트리로서 보일 수 있도록, 상태 데이터베이스는 호스트 오브젝트 트리의 어떤 이름 하에 "마운트" 된다. 이 방식으로, 데이터베이스는 호스트 오브젝트들의 더 일반적인 트리의 하위 트리로서 보일 수 있다. 이를 달성하기 위해, 일 실시형태에서, 상태 데이터베이스는, 항상 존재하는 최상위 레벨의 이미 만들어진 루트 컨테이너 오브젝트를 포함한다. 이 루트 컨테이너는 본질적으로 데이터베이스의 이름이다. 데이터베이스의 모든 다른 오브젝트들은 루트 컨테이너의 자손들이다. 다수의 상태 데이터베이스가 호스트 오브젝트 트리의 상이한 장소에 마운트될 수 있다 (2 개의 데이터베이스가 동일한 호스트 컨테이너 하에 마운트되기 위해서는, 그들의 루트 컨테이너에 대해 상이한 이름들을 가질 필요가 있다). 예를 들어, 루트 컨테이너가 Database1 이라고 명명된 상태 데이터베이스가 Child1 으로 명명된 단일 정수 차일드 오브젝트를 포함한다면, 데이터베이스는 호스트 오브젝트 컨테이너 "/SeaShell" 하에 마운트될 수 있을 것이고, 이 경우, Child1 오브젝트는 "SeaShell/Database1/Child1" 으로서 보일 것이다. 일 실시형태에서, 상태 데이터베이스의 오브젝트들에 대한 액세스들은 액세스 정책에 의해 지배된다.
1.35.1. 오브젝트들 판독 ( Reading objects )
오브젝트의 값은 시스템 호출 System.Host.GetObject 를 이용함으로써 판독될 수 있다. 상태 데이터베이스의 일 실시형태에서, 데이터베이스에 존재할 수 있는 4 가지 오브젝트 타입들 (정수, 스트링, 바이트 어레이, 및 컨테이너) 은 가상 머신의 그들의 대응물들 상으로 바로 맵핑될 수 있다. 오브젝트 값들은 통상적인 방식으로 액세스될 수 있고, 표준 가상 이름들이 구현될 수 있다.
1.35.2. 오브젝트들 생성 ( Creating objects )
이미 존재하지 않는 오브젝트 이름에 대해 System.Host.SetObject 를 호출함으로써 오브젝트들이 생성될 수 있다. 오브젝트 생성은 시스템 호출 사양에 따라 행해진다. 일 실시형태에서, 오브젝트들이 생성될 때, 상태 데이터베이스는 다음의 것들을 행한다.
● 오브젝트 메타데이터의 "owner" 필드를 페어런트 컨테이너 오브젝트의 메타데이터의 "owner" 필드의 값으로 설정한다.
● 메타데이터의 CreationDate 필드를 현재의 로컬 시간으로 설정한다.
● 메타데이터의 ModificationDate 필드를 현재 로컬 시간으로 설정한다.
● 메타데이터의 ExpiratonDate 필드를 0 으로 설정한다 (만료되지 않는다).
● 메타데이터의 Flags 필드를 0 으로 설정한다.
● 페어런트 컨테이너의 ModificationDate 를 현재 로컬 시간으로 설정한다.
존재하는 컨테이너 계층보다 더 깊은 경로 하의 오브젝트를 생성할 때, 일 실시형태에서, 상태 데이터베이스는, 생성되는 오브젝트에 대한 경로를 생성하기 위해 존재할 필요가 있는 컨테이너 오브젝트들을 암묵적으로 생성한다. 일 실시형태에서 암묵적 컨테이너 오브젝트 생성은 명시적 생성과 동일한 규칙을 따른다. 예를 들어, 아무런 칠드런도 갖지 않는 컨테이너 "A" 가 존재한다면, "A/B/C/SomeObject" 를 설정하라는 요청은 "A/B/C/SomeObject" 를 생성하기 전에, 컨테이너들 "A/B" 및 "A/B/C" 를 암묵적으로 생성할 것이다.
1.35.3. 오브젝트들 기입 ( Writing objects )
오브젝트들의 값은 이미 존재하는 오브젝트에 대해 System.Host.SetObject 를 호출함으로써 변경될 수 있다. 특정된 ObjectType 가 존재하는 오브젝트의 타입 ID 와 일치하지 않는다면, ERROR_INVALID_PARAMETER 가 리턴된다. 일 실시형태에서, 타입 ID 가 OBJECT_TYPE_CONTAINER 이면, 아무런 값도 특정될 필요가 없다 (ObjectAddress 는 제로가 아니어야 하지만, 그 값은 무시될 것이다). 존재하는 오브젝트가 설정될 때, 상태 데이터베이스는 오브젝트의 ModificationDate 를 현재 로컬 시간으로 설정한다.
1.35.4. 오브젝트들 파괴 ( Destroying objects )
0 의 ObjectAddress 를 갖는 이미 존재하는 오브젝트에 대해 System.Host.SetObject 를 호출함으로써 오브젝트들이 명시적으로 파괴된다. 오브젝트가 파괴될 때, 상태 데이터베이스는 바람직하게는:
*● 페어런트 컨테이너의 ModificationDate 를 현재 로컬 시간으로 설정한다.
● 파괴된 오브젝트가 컨테이너라면 그것의 모든 차일드 오브젝트들을 파괴한다.
1.35.5. 오브젝트 메타데이터
일 실시형태에서, 상태 데이터베이스 오브젝트들에 대한 메타데이터가 가상 이름들을 갖는 System.Host.GetObject 및 System.Host.SetObject 시스템 호출들을 이용함으로써 액세스된다. 다음의 표는, 상태 데이터베이스의 일 실시형태의 오브젝트들에 대해 이용가능한 표준 및 확장된 가상 이름들, 및 그들이 어떻게 메타데이터 필드들로 맵핑되는 지를 리스트한다.
가상 이름 타입 설명
@Name 스트링 오브젝트 메타데이터의 이름 (Name) 필드
@Owner 스트링 오브젝트 메타데이터의 소유자 (Owner) 필드
@CreationDate 32-비트 부호없는 정수 오브젝트 메타데이터의 CreationDate 필드
@ModificationDate 32-비트 부호없는 정수 오브젝트 메타데이터의 ModificationDate 필드
@ExpirationDate 32-비트 부호없는 정수 오브젝트 메타데이터의 ExpirationDate 필드
@Flags 32-비트 필드 오브젝트 메타데이터의 Flags 필드
일 실시형태에서, 일 구현은 하나 이상의 정의되지 않은 플래그들이 1 로 설정되었다면 Flags 메타데이터 필드를 설정하는 요청을 거절하여야 한다. 이 경우, System.Host.SetObject 에 대한 리턴 값은 ERROR_INVALID_PARAMETER 이다. 일 실시형태에서, Flags 메타데이터 필드를 판독할 때, 클라이언트는 사전정의되지 않은 임의의 플래그를 무시하여야 하고, 오브젝트의 Flags 필드를 설정할 때, 클라이언트는 그것의 존재하는 값을 먼저 판독하여야 하며, (예를 들어, 시스템 사양에서) 사전정의되지 않은 임의의 플래그의 값을 보존하여야 한다.
1.36. 오브젝트 소유 및 액세스 제어 ( Object Ownership and Access Control)
일 실시형태에서, 오브젝트를 판독, 기입, 생성, 또는 파괴하도록 요청이 이루어질 때마다, 상태 데이터베이스 구현은 먼저, 그 호출자가 그 요청을 수행할 권한을 가지고 있는지 여부를 먼저 체크한다. 오브젝트에 대한 액세스를 지배하는 정책은 주요 아이덴티티들 및 대표 (delegation) 의 개념에 기초한다. 이 정책이 구현되도록 하기 위해, 그 하에서 구현이 동작하는 신뢰 모델 (trust model) 이 인증된 제어 프로그램의 개념을 지원할 필요가 있다. 이는 통상적으로, 그 프로그램을 포함하는 가상 머신 코드 모듈이 PKI 키 쌍의 사설 키를 이용하여 (보안 기준을 통해 직접적으로 또는 간접적으로) 디지털 서명되도록하고, 주요 이름을 서명 키와 연관시키는 이름 증명을 가짐으로써 행해지지만; 제어 프로그램 아이덴티티를 판정하는 상이한 방식들이 가능하고, 임의의 적합한 방식이 사용될 수 있다는 것을 알 수 있을 것이다.
일 실시형태에서, 상태 데이터베이스의 오브젝트들에 대한 액세스 정책은 몇몇 간단한 규칙들로 이루어진다:
● 호출자의 아이덴티티가 오브젝트의 소유자와 동일하거나, 또는, PUBLIC_READ, 플래그가 오브젝트의 Flags 메타데이터 필드에서 설정된다면, 객에의 값에 대한 판독 액세스 (Read access) 가 허가된다.
● 호출자가 오브젝트의 페어런트 컨테이너에 대한 판독 액세스를 갖는다면, 오브젝트의 값에 대한 판독 액세스가 허가된다.
● 호출자의 아이덴티티가 오브젝트의 소유자와 동일하다면, 오브젝트의 값에 대한 기입 액세스 (Write access) 가 허가된다.
● 호출자가 오브젝트의 페어런트 컨테이너에 대한 기입 액세스를 갖는다면, 오브젝트의 값에 대한 기입 액세스가 허가된다.
● 호출자가 오브젝트의 페어런트 컨테이너에 대한 기입 액세스를 갖는다면, 오브젝트에 대한 생성 (Create) 또는 파괴 (Destroy) 액세스가 허가된다.
● (가상 이름들을 사용하는) 오브젝트의 메타데이터에 대한 판독 및 기입 액세스는 오브젝트의 값에 대한 판독 및 기입 액세스와 동일한 정책을 따르고, 리드-온리 필드들은 기입될 수 없다는 추가적인 제약을 갖는다.
일 실시형태에서, 액세스 정책이 클라이언트의 요청을 거부할 때, 그 요청에 대한 시스템 호출의 리턴 값은 ERROR_PERMISSION_DENIED 이다.
상태 데이터베이스의 루트 컨테이너는 데이터베이스가 생성될 때 바람직하게 고정된다. 오브젝트가 생성될 때, 그것의 Owner 메타데이터 필드의 값은 그것의 페어런트 컨테이너 Owner 메타데이터 필드의 것과 동일한 값으로 설정된다. 오브젝트의 소유는 변경될 수 있다. 오브젝트의 소유를 변경하기 위해, Owner 메타데이터 필드의 값은, 그 오브젝트의 '@Owner' 가상 이름에 대한 System.Host.SetObject 시스템 호출을 호출함으로써 (액세스 제어 규칙 하에서 그것이 허용된다면), 설정될 수 있다.
제어 프로그램이, 그 하에 실행 중에 있는 아이덴티티와 동일한 아이덴티티를 갖는 주요 소유자에 의해 소유되지 않는 오브젝트들에 대한 액세스가 가능하지 않는 실시형태들에서, 제어 프로그램은, "외부 (foreign)" 오브젝트의 소유자의 아이덴티티 하에서 실행하는 능력을 갖는 코드 모듈들로부터 로딩된 프로그램들에 대해 "외부" 오브젝트들에 대한 액세스를 위임할 필요가 있다. 이를 행하기 위해, 제어 프로그램은 제어 가상 머신에서 System.Host.SpawnVm, System.Host.CallVm, 및 System.Host.ReleaseVm 시스템 호출들을 이용할 수도 있다.
1.37. 라이센스 전송 프로토콜 ( License Transfer Protocol )
전술한 것과 같은 데이터베이스의 상태 정보의 저장부는, (상태 정보를 또 다른 디바이스로 전송함으로써) 권리들이 디바이스들 간에 이동되고 도메인으로부터 엑스포트될 수 있도록 한다. 이하의 섹션은 데이터베이스의 상태가 소스로부터 싱크로 전송될 수 있도록 하는 프로토콜의 실시형태들을 설명한다. 이 프로세스가 라이센스 전송 프로토콜로 지칭될 것임에도 불구하고, 전송되는 것은 단순히 실제 라이센스 (예를 들어, 제어 오브젝트 등) 만이 아니고, 상태 데이터베이스의 상태이다. 프로토콜은 라이센스 전송 프로토콜로 지칭되는데, 이는, 일 실시형태에서, 전송이 제어 프로그램의 전송 액션의 실행에 의해 개시되기 때문이고, 또한, 상태 정보의 전송은 싱크가 콘텐츠의 피스 (piece) 에 대해 관련 라이센스를 성공적으로 실행하는 것을 가능하게 하기 때문이다.
도 32 는 3 개의 메시지 (3202, 3204, 3206) 로 이루어진 라이센스 전송 (3200) 의 일 예를 나타낸다. 도 32 에 나타낸 예에서, 프로토콜은 요청 (REQUEST; 3202) 을 소스 (SOURCE; 3212) 로 보냄으로써 싱크 (SINK; 3210) 에 의해 개시된다. 일 실시형태에서, 요청 (3202) 은 전송될 콘텐츠의 피스의 ID 를 유지한다. 소스 (3212) 는 응답 (RESPONSE; 3204) 을 싱크 (3210) 로 보내고, 이 응답은, (i) 싱크 (3210) 의 상태 데이터베이스의 상태를 설정할 에이전트 (agent), 및 (ii) 싱크 (3210) 로 향하는 콘텐츠 키 (ContentKey) 오브젝트(들) 을 포함한다. 도 32 에 나타낸 바와 같이, 싱크 (3210) 는 소스 (3212) 로 에이전트가 실행한 확인 (CONFIRMATION; 3206) 을 보낸다. 콘텐츠 키(들) 및/또는 콘텐츠의 피스를 수신 시, 싱크는 그 콘텐츠를 연관된 제어들에 따라 이용 (예를 들어, 스피커를 통해 그것을 플레이, 비디오 스크린 상에서 그것을 디스플레이, 및/또는 몇몇 다른 방식으로 그것을 렌더링) 할 수도 있다.
도 32 에 나타낸 접근법이 몇몇 실시형태들에서 이용될 수 있지만, 이하에서 언급하는 바와 같은 몇몇 잠재적인 문제점들을 포함한다:
소스에게 렌더링이 끝났다고 미리 말할 수 있는 방법이 없다.
일 실시형태에서, 도 32 에 나타낸 프로토콜은 2 가지 모드들을 지원하고, 여기서, (i) 렌더 (렌더 중지가 없음), 및 (ii) 체크아웃 (체크인이 없음) 이 문제점이다. 이 문제 때문에, 제어 발행자들은 전송된 상태들에 대한 타임아웃들을 발행하도록 유도될 수도 있다. 하지만 이는, 예를 들어, 사용자가 하나의 디바이스 상에 콘텐츠를 렌더링하기를 원하고, 그러나, 그는 이 콘텐츠를 또 다른 하나 상에서 렌더링하기를 실제로 원한다고 결정할 때, 현재의 디자인에서는, 그가 다른 디바이스 상에서 그것을 렌더링할 수 있기 전에, 그는 제 1 디바이스 상에서 콘텐츠의 전체 피스가 렌더링되기를 기다려야만 할 가능성이 큰, 나쁜 소비자 경험을 초래할 수 있다. 이는 콘텐츠가 비교적 길다면 (예를 들어, 콘텐츠가 영화), 바람직하지 못할 것이다.
요청의 콘텐츠 ID 와 연관된 라이센스를 분석하는 것이 어려울 수 있다.
일 실시형태에서, 요청은 오직 콘텐츠 ID 들만을 포함하고, 소스는 그 라이센스 데이터베이스로부터 이 콘텐츠 ID 들과 연관된 라이센스를 검색한다. 하지만, 라이센스들은 이동식 매체 상에 저장될 수도 있고, 프로토콜 약속 시에, 그 매체가 제거되었다면 특정 라이센스가 이용가능하지 않을 수도 있기 때문에, 이 프로세스는 에러를 일으키기 쉽다. 또한, 라이센스들이 이용가능하다 하더라도, 라이센스 저장부에서 라이센스들을 찾는 것은 조금 성가신 일일 수 있다. 또한, 콘텐츠 ID 들의 셋트와 연관된 다수의 라이센스들이 있을 수 있기 때문에, 분석된 라이센스가 요청에서 의도되었던 것과 동일한 것인지 여부를 판정하는 것은 어려울 수도 있다.
제어 프로그램이 미리 프록시미티 체크 ( proximity check ) 를 요청할 방법이 없다.
일 실시형태에서, 시스템 호출들/콜백들/의무들의 셋트는 제어가 피어의 프록시미티 체크를 할 수 있는 방법을 지원하지 않는다. 대신에, 제어는, 프록시미티 체킹 프로토콜의 이전 실행으로부터 얻었던 값으로 전송 동안 애플리케이션에 의해 차지되는 호스트 오브젝트 Octopus/Action/Parameters/Sink/Proximity/LastProbe 의 값만을 판독할 수 있다. 이는 이러한 프록시미티 체크가 필요하지 않은 경우 (예를 들어, 싱크가 어떤 도메인 내에서 알려진 경우) 이 프록시미티 체크를 회피하는 것이 바람직할 수도 있는 경우에 문제가 될 수 있다.
프로토콜에 대해 오직 3 개의 라운드만이 존재한다.
도 32 에 나타낸 실시형태에서, 프로토콜은 3 개의 라운드로 제한된다. 이는 프로토콜이, OnAgentCompletion 콜백이 또 다른 RunAgentOnPeer 의무를 갖는 확장된 상태 블록을 리턴하는 경우를 다룰 수 없을 것이기 때문에, 심각한 제한이 될 수 있다. 더욱이, 프로토콜이 종료된 후에, 싱크는 프로토콜이 성공하였는지 아닌지를 실제로 알지 못할 것이다. 또한, 프록시미티 체크는 응답이 전송되기 전에 발생할 필요가 있고 (이전 문제를 참조하라), 그러나, 이는 소스 및 싱크가 동일 도메인에 있는 경우에 필요하지 않다. 또한, 도 32 에서 나타낸 프로토콜에서, 소스는 콘텐츠 키가 사용될 것인지를 알지 못한 채로 싱크에게 콘텐츠 키를 준다.
ESB 에서 , 라이센스 전송이 필요하다는 힌트를 줄 방법이 없다.
도 32 에 나타낸 실시형태에서, DRM 클라이언트가 라이센스 (예를 들어, Control.Actions.Play.Check) 를 평가할 때, 제어의 성공적인 평가를 가능하게 할 상태를 얻기 위해 라이센스 전송이 필요하다는 힌트를 제어 라이터 (writer) 가 줄 수 있는 쉬운 방법이 없다.
소스가 전송을 개시할 수 없다.
도 32 에 나타낸 프로토콜에서, 라이센스 전송은 싱크에 의해 개시된다. 소스가 전송 역시 개시할 수 있는 것이 바람직할 것이다.
개선된 실시형태들
이하에서 설명되는 실시형태들은 전술하였던 문제점들의 일부 또는 전부를 해결 또는 개선할 수 있다.
릴리스 문제에 대한 해법
일 실시형태에서, 새로운 릴리스 동작이 도입된다. 이 동작이 요청에서 특정될 때, 전송 모드 ID (Transfer Mode ID) 는 Release 로 설정된다. 클라이언트가 렌더/체크아웃과 릴리스 동작 사이의 상관을 행할 수 있기 위해서는, 선택적 요소 세션 Id (SessionId) 가 요청에 부가된다 (아래의 섹션 참조). 일 실시형태에서, 이 요소가 존재할 때, SessionId 하의 전송 액션 (Transfer Action) 콘텍스트의 호스트 오브젝트에서 반영된다.
싱크는 Teardown 메시지 (아래 참조) 에서 얻게 될 확장된 상태 블록이 다음과 같은 파라미터를 포함한다면, 릴리스 요청에서 이 SessionId 를 전송하여야 한다는 것을 안다.
파라미터 이름: SessionId
파라미터 타입: 스트링
이 파라미터의 플래그는 CRITICAL 로 설정됨.
라이센스 분석 문제에 대한 해법 (요청 재분해 ( refactoring ))
일 실시형태에서, 해법은, 싱크와 소스가 동일한 라이센스를 실행하게 되도록 본질적으로 보장할 수 있도록, 싱크 디바이스가 요청에 라이센스 번들(bundle)(들)을 놓게 하는 것으로 이루어진다. 도 32 에서 나타낸 실시형태에서, 요청에 대한 XML 도식 (schema) 은 다음과 같다:
<xs:complexType name="LicenseTransferRequestPayloadType">
<xs:sequence>
<xs:element ref="ContentIdList"/>
<xs:element ref="Operation"/>
<xs:element ref="oct:Bundle"/>
</xs:sequence>
</xs:complexType>
콘텐츠 Id 리스트 (ContentIdList) 가 콘텐츠를 식별하는 콘텐츠 ID (Content ID) 들을 (트랙/스트림 당 하나씩) 포함하는 경우, 동작 (Operation) 은 라이센스 전송 동작의 타입을 포함하고, Bundle 은 요청자 및 연관된 서명의 퍼스널리티 노드를 포함한다.
전술한 라이센스 분석 문제를 회피하기 위해, (다음과 같이 도식을 고침으로써) 라이센스 번들(들)이 요청에 포함될 수 있다:
<!-새로운 요소들 -->
<xs:element name="LicensePart" type="LicensePartType"/>
<xs:complexType name="LicensePartType">
<xs:sequence>
<xs:element ref="oct:Bundle" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="contentId" use="optional"/>
</xs:complexType>
<xs:element name="License" type="LicenseType"/>
<xs:complexType name="LicenseType">
<xs:sequence>
<xs:element ref="LicensePart" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>

<!-- 수정된 라이센스 전송 요청 페이로드 타입 -->
<xs:complexType name="LicenseTransferRequestPayloadType">
<xs:sequence>
<xs:element ref="License"/> <!-- 정의는 상기 참조 -->
<xs:element ref="Operation"/>
<xs:element ref="oct:Bundle"/>
<xs:element name="SessionId" type="xs:string" minOccurs="0"/>
<xs:element name="NeedsContentKeys" type="xs:boolean" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
이 도식에서, ContentIdList 요소는 License 요소에 의해 대체된다. 이 요소는 LicensePart 요소들의 셋트를 운반한다. LicensePart 요소는 라이센스 오브젝트들 및 라이센스 오브젝트들이 특정 ContentId 에 적용되는 것을 나타내는 선택적 ContentId 속성을 포함하는 oct:Bundle 을 운반한다. ContentId 속성을 갖지 않는 LicensePart 요소는 기초되는 번들에 포함된 오브젝트들이 모든 Content ID 들에 적용된다는 것을 의미한다 (일반적으로 제어기 및 제어 오브젝트들).
일 실시형태에서, SessionId 선택적 요소는 동작이 urn:marlin:core:1-2:service:license-transfer:release 인 경우 (SessionId 파라미터가 대응하는 렌더 또는 체크아웃 액션의 확장된 상태 블록에서 수신되었던 경우에 존재할 수도 있다 (상기 참조)) 를 제외하고는 존재할 수 없다.
일 실시형태에서, NeedsContentKeys 선택적 요소는, 싱크가 콘텐츠 키들을 이미 해독할 수 있다는 것을 아는 경우 거짓 (false) 의 값을 가지고 존재하여야 한다. 이 요소의 부재는, 소스가 프로토콜의 성공의 경우에 싱크의 Content Keys 를 재암호화해야 한다는 것을 의미한다.
일 실시형태에서, 이러한 요청을 수신할 때, 라이센스 요소는 다음과 같이 프로세싱된다:
(1) LicensePart 요소들에서 발견된 모든 ContentId 속성들을 수집.
(2) LicensePart 요소들에서 발견된 모든 Bundle 요소들을 프로세싱.
(3) 상기 수집된 콘텐츠 ID 들의 셋트를 오픈.
(4) 관련된 오브젝트들 상에서 적절한 서명들을 검증.
(5) 프로세싱된 Control 오브젝트 상에서 선택적으로 Control.Actions.Transfer.Check 방법을 호출.
(6) 프로세스 Control 오브젝트 상에서 Control.Actions.Transfer.Perform 을 호출.
제어 프로그램들이 싱크의 프록시미티 체크를 미리 요청할 수 있도록 허용.
제어 프로그램이 이렇게 하도록 허용하기 위해, 새로운 쌍의 Obligations/Callbacks 가 정의될 수 있다. 구체적으로, 제어는 "ProximityCheckSink" 의무를 그것의 확장된 상태 블록에 놓을 수 있다. 이는 싱크를 갖는 프록시미티가 체크되어야만 한다는 것을 애플리케이션에게 나타낸다. 프록시미티 체크가 행해질 때, 애플리케이션은 "OnSinkProximityChecked" 콜백을 이용하여 제어를 콜백할 것이다.
일 실시형태에서, ProximityCheck 의무가 정의되고, 이는 라이센스 전송 (License Transfer) 의 콘텍스트에서만 적용가능하다. 이 실시형태에서, 확장된 상태 블록 당 제로 또는 하나의 이러한 의무가 존재할 필요가 있고, 존재한다면, OnSinkProximityChecked 콜백 역시 존재할 필요가 있다.
이름 타입 설명
ProximityCheck 값 리스트 호스트 애플리케이션은 싱크 디바이스와 프록시미티 체크 프로토콜을 수행할 필요가 있다.
===================================================
| 타입 | 설명 |
===================================================
|스트링 |프록시미티 체크가 수행되어야만 하는 |
| |퍼스널리티 노드의 Id |
===================================================
OnSinkProximityChecked 콜백
이름 타입 설명
OnProximityChecked 값 리스트 호스트 애플리케이션은 의무 파라미터들 중 하나에서 프록시미티 체크가 완료되었을 때 콜백을 호출할 필요가 있다.
===============================================
| 타입 | 설명 |
===============================================
| 콜백 |콜백을 위한 루틴, 및 연관된 쿠키. |
===============================================
프로토콜에서의 다수의 라운드 트립을 허용.
도 33 은 다수의 라운드 트립을 허용하는 프로토콜의 변형형태의 개요를 나타낸다. 도 33 에서 나타낸 실시형태에서, 셋업 (Setup) 메시지 (3302) 는, 예를 들어, 라이센스 분석 문제/해법과 함께 전술하였던 개선된 라이센스 전송 요청 메시지와 동일할 수 있다.
도 33 에 나타낸 바와 같이, 셋업 (3302) 후에,애플리케이션은 전술한 바와 같이 제어 (Control) 를 실행할 것이고, 확장된 상태 블록 (ESB) 을 얻을 것이다. 이 ESB 는 RunAgentOnPeer 의무/OnAgentCompletion 콜백을 포함할 수도 있다. 일 실시형태에서, RunAgentOnPeer 의무는 소스 (3312) 애플리케이션이 RunAgent 메시지 (3304) 를 구축하기 위해 필요한 모든 파라미터들을 포함할 것이다. 일 실시형태에서, 애플리케이션이 (하나 이상의 RunAgent/AgentResult 메시지 교환 후에) OnAgentCompletion 콜백의 확장된 상태 블록에서 또 다른 RunAgentOnPeer/OnAgentCompletion 콜백/의무 쌍을 만난다면, RunAgent 메시지 (3304) 가 또한 전송될 것이라는 것에 유의할 필요가 있다.
일 실시형태에서, ESB 가 RunAgentOnPeer 의무/OnAgentCompletion 콜백을 포함하지 않는다면, 이는 Teardown 메시지 (아래 참조) 가 전송될 필요가 있다는 것을 의미한다. 이 ESB 는 ProximityCheck 의무/OnSinkProximityChecked 콜백을 포함할 수도 있고, 이 경우, 프록시미티 체크 프로토콜이 수행될 것이고, 그 결과는, Teardown 메시지를 전송하기 전에 OnSinkProximity 체크된 콜백의 ESB 로부터 판독될 것이다.
일 실시형태에서, RunAgent 메시지 (3304) 의 페이로드는 ContentKeyList 를운반하지 않는다는 것을 제외하고는 이전 디자인의 Response 메시지와 동일하다.
*도 33 에 나타낸 바와 같이, 싱크 (3310) 가 RunAgent 메시지 (3304) 의 소스에 의해 전송된 에이전트를 실행한 후에, 싱크 (3310) 는 AgentResult 메시지 (3306) 를 소스 (3312) 로 전송한다. 일 실시형태에서, 메시지 페이로드는 도 32 와 함께 설명된 Confirmation 메시지와 동일하다.
도 33 에 나타낸 바와 같이, OnAgentCompletion 의 확장된 상태 블록이 프로토콜이 끝났다는 것을 의미하는 RunAgentOnPeer/OnAgentCompletion 콜백/의무 쌍을 운반하지 않을 때, Teardown 메시지 (3308) 가 소스 애플리케이션 (3312) 에 의해 전송된다. 일 실시형태에서, Teardown 메시지 (3308) 는 2 피스의 정보를 운반한다: (i) 싱크 (3310) 가 프로토콜이 성공하였는지 못하였는지를 알 수 있도록 하는 프로토콜 결과의 설명, 및, 만약 프로토콜이 성공하지 못하였다면, 왜 실패하였는지에 대한 표시 (더 자세한 내용은 아래 참조), 및 (ii) 프로토콜의 성공의 경우, 셋업 메시지의 NeedsContentKey 요소가 참으로 설정되거나 또는 존재하지 않는다면, 업데이트된 ContentKey 오브젝트들 (이전 메시지의 응답의 ContentKeyList).
일 실시형태에서, 프로토콜 결과의 설명은 실제로 의무/콜백 쌍에 관련된 아무런 에이전트도 운반하지 않는 제어의 최종 호출의 확장된 상태 블록 (ESB) 이다.
실패의 경우, ESB 의 파라미터들은 자원을 포인팅할 수도 있다. 일 실시형태에서, 이들 자원은 Setup 메시지에서 전송되었던 제어 (Control) 의 ResourceList 확장에 위치된다.
성공의 경우, 일 실시형태에서, 캐시 지속기간은, 콘텐츠 키들 (ContentKeys) 이 얼마나 많은 시간 동안 제어를 다시 요청하지 않고 이용될 수도 있는지를 나타낼 것이다.
이러한 ESB XML 의 일 예가 아래에 나타내어져 있고, 가상 머신 도식에 부가될 수 있다.
<xs:element name="CacheDuration" type="CacheDurationType"/>

<!-- CacheDurationType -->
<xs:complexType name="CacheDurationType">
<xs:attribute name="type" type="xs:int"/>
<xs:attribute name="value" type="xs:int"/>
</xs:complexType>

<xs:element name="ExtendedStatusBlock" type="ExtendedStatusBlockType"/>

<!-- ExtendedStatusBlockType -->
<xs:complexType name="ExtendedStatusBlockType">
<xs:sequence>
<xs:element ref="CacheDuration"/>
<xs:element name="Parameters" type="ValueListBlockType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="globalFlags" type="xs:int" default="0" use="optional"/>
<xs:attribute name="category" type="xs:int" use="required"/>
<xs:attribute name="subcategory" type="xs:int" use="optional"/>
<xs:attribute name="localFlags" type="xs:int" use="required"/>
</xs:complexType>
다음은 전술한 개선된 라이센스 전송 메커니즘의 일 실시형태에 따른 렌더링 사용 경우의 일 예이다. 이 예에서, 브로드캐스트 임포트 (import) 함수는 다음의 라이센스를 이용하여 콘텐츠의 피스를 임포트한다.
- Play: 로컬 상태가 존재하면 OK
- Transfer:
- 싱크가 도메인 X 에 있거나, 또는, 싱크가 근접하여 있으면 Render OK. 한 번에 오직 하나의 병렬적 스트림이 렌더링될 수 있다.
Core DRMClient1 이 콘텐츠 스트림을 렌더링하도록 권한을 요청한다고 가정하자. 셋업 요청 (Setup Request) 은 다음과 같은 파라미터들을 포함하여 싱크 (Core DRMClient1) 로부터 소스 (BC Import 함수) 로 보내진다.
- License: 싱크가 렌더링하기를 원하는 콘텐츠와 연관된 라이센스
- Operation: urn:marlin:core:1-0:service:license-transfer:render
- Bundle = 싱크의 Personality 노드
요청 수신 시, 소스 애플리케이션은 관련 호스트 오브젝트들을 차지하고, Control.Actions.Transfer.Perform 방법을 호출한다. 렌더링 전송을 지배하는 방법에 대한 예시적인 의사-코드가 아래에 나타내어진다:
/* 렌더링 전송을 지배하는 방법의 의사-코드 */
ESB* TransferRenderPerform(HostObjectTree* t) {
// 록 (lock) 체크
if (t->GetObject("SeaShell/.../lock") != NULL) {
return new ESB(ACTION_DENIED);
} else {
// 시간 제한된 록, 실패의 경우 우리는 언록 (unlock) 할 것이다.
t->SetObject("SeaShell/.../lock", 1);
t->SetObject("SeaShell/.../lock@ExpirationTime,
Time.GetCurrent() + 180);
// RunAgentOnPeer 를 포함하는 ESB 를 리턴
// 의무 및 OnAgentCompleted 콜백
return new ESB(ACTION_GRANTED,
new Obligation(RUN_AGENT_ON_PEER,
CheckDomainAgent),
new Callback(ON_AGENT_COMPLETED,
RenderAgentCompleted));
}
}
렌더링이 록되지 않았다고 가정하면, RunAgentOnPeer 의무가 실행된다. RunAgent 메시지는 CheckDomainAgent 방법을 포함하는 제어 (Control) 를 이용하여 전송된다. 이 메시지 수신 시, 싱크는 관련 호스트 오브젝트들을 차지하고 CheckDomainAgent 방법을 호출할 것이다. CheckDomainAgent 에 대한 예시적인 의사-코드는 아래에 나타내었다:
/* CheckDomainAgent 의 의사-코드 */
AgentResult* CheckDomainAgent(HostObjectTree* t) {
// 도메인 노드가 도달가능한지를 체크
if (IsNodeReachable("urn:marlin:...:domain2042x")) {
return new AgentResult(SUCCESS);
} else {
return new AgentResult(FAILURE);
}
이 예시를 위해 싱크가 실제로 도메인에 있다고 가정한다. 그 다음, 싱크는 이 에이전트 결과를 포함하는 AgentResult 메시지를 보낼 것이다. AgentResult 수신 시, 소스는 콜백 방법을 호출할 것이다. RenderAgentCompleted 에 대한 예시적인 의사-코드는 다음과 같다:
/* RenderAgentCompleted 의 의사-코드 */
ESB* RenderAgentCompleted(HostObjectTree* t,
AgentResult* ar)
{
if (ar->IsSuccess()) {
// 아무런 의무/콜백 및 캐시 지속기간도 갖지 않는
// ESB 를 준다
return new ESB(ACTION_GRANTED, new CacheDuration(0));
} else {
// 프록시미티 체크를 행하기 위해 시도
return new ESB(ACTION_GRANTED,
new Obligation(CHECK_PROXIMITY,
t->GetObject(".../Sink/Id"),
new Callback(ON_SINK_PROXIMITY_CHECKED,
ProximityCheckCompleted));
}
}
에이전트가 싱크 상의 도메인 회원을 성공적으로 체크했다고 가정했다. Teardown 메시지는 (i) 싱크에 대한 재암호화된 콘텐츠 키들 (셋업 요청에서 싱크 노드가 제공된 키들), 및 (ii) 상기 특정된 캐시 지속기간을 운반하는 ESB (이 경우 0, 싱크가 콘텐츠에 액세스하기를 원하는 다음 번에 재요청해야 한다는 것을 의미) 를 이용하여 보내진다. 싱크가 이 메시지를 수신할 때, 콘텐츠를 렌더링하도록 허용되고, 필요한 콘텐츠 키들을 갖는 다는 것을 알게 된다.
이제 사용자가 그의 다른 디바이스, DRMClient2 상에서 콘텐츠를 렌더링하기를 원한다고 가정한다. 문제는 콘텐츠가 소스 상에서 180 분 동안 록 (lock) 된다는 것이다. 다행히, 사용자가 DRMClient1 상에서 STOP 을 누를 때, DRMClient1 은 동작: Release 를 이용하여 새로운 라이센스 전송 프로토콜을 개시할 것이다. 요청 수신 시, 소스 애플리케이션은 관련 호스트 오브젝트들을 차지하고, Control.Actions.Transfer.Perform 방법을 호출할 것이다. 전송 릴리스 (release) 를 지배하는 방법에 대한 예시적인 의사-코드는 아래에 나타내었다:
/* 전송 릴리스를 지배하는 방법의 의사-코드 */
ESB* TransferReleasePerform(HostObjectTree* t) {
// 록 체크
if (t->GetObject("SeaShell/.../lock") != NULL) {
t->SetObject("SeaShell/.../lock, NULL); // 삭제
return new ESB(ACTION_GRANTED);
} else {
return new ESB(ACTION_DENIED);
}
}
ESB 에서 아무런 의무/콜백도 발견되지 않았기 때문에, 이는 Teardown 메시지가 ESB 를 이용하여 다시 역으로 전송될 것이라는 것을 의미한다.
따라서 이 렌더링 사용의 경우는, 어떤 실시형태에서, 제어를 로컬하게 재평가하기 위해 렌더링 동작의 DRMClient 를 요청할 필요가 없고, 상태는 소스로부터 싱크로 전송될 필요가 없으며, 제어는 미리 프록시미티 체크를 요청할 수 있고, 또한, 렌더링이 행해질 때 콘텐츠가 릴리스될 수 있다는 것을 나타낸다.
11. 증명 ( Certificates )
일 실시형태에서, 증명은 암호 키들을 이용하여 생성된 디지털 서명에 기초하여 결정하기 전에 암호 키들과 연관된 자격들을 체크하기 위해 사용된다.
몇몇 실시형태들에서, DRM 엔진은 표준 증명 기술과 호환되도록 디자인되고, 유효 기간, 이름 등과 같은, 이러한 증명의 요소들에서 발견된 정보에 영향을 줄 수 있다. 이들 기본적인 제약들에 추가하여, 일부 실시형태들에서, 증명된 키가 무엇에 이용될 수 있고 무엇에 이용될 수 없는지에 관해 추가적인 제약들이 정의될 수 있다. 이는, 예를 들어, 증명의 표준 인코딩의 일부로서 이용가능한 키-사용 확장들을 이용하여 달성될 수 있다. 이러한 확장들에서 인코딩된 정보는, DRM 엔진이 특정 오브젝트를 서명한 키가 그목적을 위해 사용되도록 인증되었는지를 체크할 수 있도록 허용한다. 예를 들어, 어떤 키는, 링크가 특정 속성을 갖는 노드로부터, 또 다른 특정 속성을 갖는 노드로의 것이고 다른 링크는 없을 때만, 링크 오브젝트들을 서명하는 것을 허용하는 증명을 가질 수도 있다. 증명을 표현하는데 이용되는 일반적 기술의 의미들이, 링크들 및 노드들과 같은 DRM 엔진 특정 요소들에 관련된 조건들을 표현할 방법을 갖지 못하는 것처럼, 일반적으로 이러한 제약을 표현할 수 없을 것이기 때문에, 일 실시형태에서, DRM 엔진을 이용하도록 구성된 애플리케이션들에 의해 프로세싱될 기본 증명의 키 이용 확장 (key usage extention) 처럼, 이러한 DRM 엔진 특정 제약들이 운반된다.
일 실시형태에서, 키 이용 확장의 제약들은 이용 (usage) 카테고리 및 VM 제약 프로그램에 의해 표현된다. 이용 카테고리는 무슨 타입의 오브젝트들을 키가 서명하도록 인증될 지를 특정한다. 제약 프로그램은 콘텍스트에 기초하여 동적 조건드을 표현할 수 있다. 일 실시형태에서, 이러한 증명의 유효성을 검증하도록 요청받은 임의의 검증자 (verifier) 는, DRM 엔진 의미들을 이해하도록 요구되고, 프로그램을 실행하기 위해 가상 머신의 인스턴스를 이용하는 DRM 엔진에 대해 키 사용 확장 표현의 평가를 위임한다. 증명은 그 프로그램의 실행의 결과가 성공적이었다면 유효한 것으로 간주된다.
일 실시형태에서, 제약 프로그램의 역할은 불 값을 리턴하는 것이다. "참 (true)" 은 제약들이 충족되었다는 것을 의미하고, "거짓 (false)" 은 제약들이 충족되지 않는다는 것을 의미한다. 일 실시형태에서, 제어 프로그램은, 가상 머신의 호스트 오브젝트 인터페이스를 통해 프로그램에 대해 이용가능한 정보와 같은, 결정에 도달하는 데 사용될 수 있는 몇몇 콘텍스트 정보에 대한 액세스를 가질 것이다. 콘텍스트로서 이용가능한 정보는, DRM 엔진이 증명의 검증을 요청할 때, DRM 엔진이 무슨 타입의 결정을 하려고 시도하고 있는지에 의존한다. 예를 들어, 링크 오브젝트의 정보를 이용하기 전에, 일 실시형태에서, DRM 엔진은 오브젝트를 서명한 키의 증명이 그 키가 그 목적을 위해 이용되는 것을 허용하는 지를 검증할 필요가 있을 것이다. 제약 프로그램을 실행할 때, 가상 머신의 환경은 링크 속성들 및 링크에 의해 참조되는 노드들의 속성들에 관한 정보로 차지될 것이다.
일 실시형태에서, 키 사용 확장에서 구현되는 제약 프로그램은, "Octopus.Certificate.<Category>.Check" 로 명명된 (여기서, "Category" 는 어느 카테고리의 증명들이 체크될 필요가 있는 지를 나타내는 이름) 적어도 하나의 엔트리 포인트를 엑스포트하는 가상 머신 코드 모듈로서 인코딩된다. 프로그램 검증에 대한 파라미터들은 엔트리 포인트를 호출하기 전에 스택 상에서 푸쉬될 것이다. 스택 상에서 전달된 파라미터들의 수 및 타입들은 일반적으로 평가되는 증명 확장의 카테고리에 의존한다.
12. 디지털 서명
바람직한 실시형태들에서, DRM 엔진에 의해 사용된 일부 또는 전부의 오브젝트들이 서명된다. 이하는, 일 실시형태에서 XML 디지털 서명 사양 (http://www.w3.org/TR/xmldsig-core) ("XMLDSig") 을 사용하여 어떻게 오브젝트들이 디지털 서명되는지의 설명이다. 또한, XML 배타적 정규화 (XML exclusive canonicalization) 와 호환되는 XML의 정규화 방법 (http://www.w3.org/TR/xml-exc-c14n/) ("c14n-ex") 이 또한 설명되고, 그 방법의 출력은 비XML-네임스페이스- 인식 파서 (non-XML-namespace-aware parser) 에 의해 처리될 수 있다. 부록 D는, 오브젝트들에 대한 정규 바이트 시퀀스를 인코딩-독립 방식으로 계산하는 예시적인 방식을 포함하여, 예시적인 오브젝트 직렬화에 관한 더 많은 정보를 제공한다.
도 28, 도 34, 및 도 35에 도시된 바와 같이, 바람직한 실시형태들에서 DRM 라이센스 내의 특정 요소들이 서명된다. 도 28, 도 34, 및 도 35에 도시된 것들과 같은 기술들은 라이센스 컴포넌트들의 교체, 또는 라이센스 컴포넌트들을 변경 (tamper) 하는 것을 방지하거나 또는 방해하는데 유용하다. 도 34에 도시된 바와 같이, 일 바람직한 실시형태에서, 제어기 오브젝트 (3402) 는 콘텐츠 키 오브젝트 (3404) 및 제어 오브젝트 (3406) 의 암호 다이제스트들 또는 해시들 (또는 다른 적합한 바인딩들) (3405 및 3407) 을 각각 포함한다. 제어기 (3402) 는 MAC (또는 바람직하게, 콘텐츠 키를 사용하는 HMAC) 및 공개 키 서명 (통상적으로, 콘텐츠 또는 라이센스 제공자) (3412) 으로 그 자신이 서명된다. 일 바람직한 실시형태에서, 제어기의 공개 키 서명 (3412) 은 콘텐츠 키를 사용하여 HMAC (3410) 로 그 자신이 서명된다. 다른 실시형태들에서, 원하는 레벨의 보안 및/또는 시스템 요구조건들에 따라 다른 서명 기법들이 사용될 수도 있음을 인식하여야 한다. 예를 들어, PKI, 표준 MAC들 등과 같은 상이한 서명 기법들이 제어기 및/또는 제어의 서명을 위해 사용될 수도 있다. 다른 예로서, 제어기 내에 제어의 다이제스트를 포함시키고 제어기의 단일 MAC 서명을 계산하는 것보다, 별개의 MAC 서명이 제어 및 제어기 양자를 위해 계산될 수도 있다. 또 다른 예로, 제어기는 MAC 및 공개 키 서명 양자로 서명될 수도 있다. 상술된 것들 이외의 대안의 또는 추가의 상이한 키들이 다양한 서명들을 생성하기 위해 사용될 수도 있다. 따라서, 도 28, 도 34, 및 도 35가 일부 실시형태들에 따라 여러 유익한 서명 기술들을 예시하고 있지만, 이들 기술들이 예시적이고 비제한적임을 인식하여야 한다. 도 35는 제어기가 다수의 콘텐츠 키들을 참조하는 실시형태를 예시한다. 도 35에 도시된 바와 같이, 일 실시형태에서, 콘텐츠 키들의 각각은 제어기의 HMAC 및 PKI 서명을 생성하기 위해 사용된다.
일 실시형태에서, XML 정규화를 위한 데이터 모드, 프로세싱, 입력 파라미터들, 및 출력 데이터는, 네임스페이스 프리픽스들이 제거되고 (네임스페이스들이 디폴트 네임스페이스 메커니즘을 사용하여 표시된다), 외부 엔티티들이 지원되지 않으며 문자 엔티티들만이 지원되는 것을 제외하고, 배타적 정규 XML (cl4n-ex) 에 대한 것과 동일하다. 제 1 제한은 속성 및 속성의 요소가 동일한 네임스페이스 내에 있어야만 한다는 것을 포함한다.
도 42는 일 실시형태에서의 cl4n-ex와 예시적인 XML 정규화 간의 관계를 도시하고, 여기서 <xml> 은 임의의 유효한 XML 이고, <xml>이 외부 엔티티들 및 네임스페이스 프리픽스들을 가지고 있지 않은 경우에만, <xml>' = <xml> 이다.
간략화된 서명 기법의 간단한 예가 아래에 제공된다: 그러나, 일 바람직한 실시형태에서, 표준 XML 정규화가 사용된다.
오리지널 <n1:elem2 id="foo"
xmlns:n0="foo:bar"
xmlns:n1="http://example.net"
xmlns:n3="ftp://example.org">
<n3:stuff/>
</n1:elem2>
프로세싱된 <elem2 xmlns="http://example.net" id="foo">
<stuff xmlns="ftp://example.org"/>
</elem2>
이 섹션에서 설명되는 서명 요소들은 XMLDSig 네임스페이스 (xmlns=http://www.w3.org/2000/09/xmldsig#) 에 속하고, XMLDSig 사양에서 정의되는 XML 기법에서 정의된다. 일 실시형태에서, DRM 오브젝트들의 XML 표현의 컨테이너 요소 (container element) 는 <Bundle> 요소이다.
*일 실시형태에서, 이하의 오브젝트들이 서명될 필요가 있다:
Figure 112012048347665-pat00040
노드들
Figure 112012048347665-pat00041
링크들
Figure 112012048347665-pat00042
제어기들
Figure 112012048347665-pat00043
제어들 (선택)
Figure 112012048347665-pat00044
확장들 (운반하는 데이터에 따른)
일 실시형태에서, 서명들이 분리될 필요가 있고, 서명될 필요가 있는 오브젝트들의 XML 표현을 포함하는 <Bundle> 오브젝트 내에 <Signature> 요소가 존재할 필요가 있다.
일 실시형태에서, <Signature> 블록은:
Figure 112012048347665-pat00045
<SignedInfo> 요소,
Figure 112012048347665-pat00046
<Signature Value> 요소,
Figure 112012048347665-pat00047
<KeyInfo> 요소,
를 포함할 것이다.
일 실시형태에서, <SignedInfo> 는 다음 요소들을 임베딩한다.
< CanonicalizationMethod > - 일 실시형태에서, <CanonicalizationMethod> 요소는 비어 있고, 그 알고리즘 속성은 다음 값: http://www.w3.org/2001/10/xml-exc-c14n# 을 갖는다.
< SignatureMethod > - 일 실시형태에서, <SignatureMethod> 요소는 비어 있고, 그 알고리즘 속성은 다음 값들을 가질 수 있다:
Figure 112012048347665-pat00048
http://www.w3.org/2000/09/xmldsig#hmac-sha1 (HMAC 서명),
Figure 112012048347665-pat00049
http://www.w3.org/2000/09/xmldsig#rsa-sha1 (공개 키 서명).
< Reference > - 일 실시형태에서, 1개보다 많은 오브젝트들이 동일한 키에 의해 서명될 필요가 있을 경우에 (예컨대, 이는 제어 및 제어기 오브젝트에 대한 경우일 수도 있다), 하나 이상의 <Reference> 요소들이 <SignedInfo> 블록 내에 존재할 수 있다.
일 실시형태에서, 오브젝트를 서명할 때, <Reference> 요소의 'URI' 속성의 값은 참조된 오브젝트의 ID이다. 로컬 XML 요소를 서명할 때 (예컨대, 제어기 오브젝트들에 대한 공개 서명 방법의 다수의 서명의 경우에), URI의 값은 참조된 요소의 'Id' 속성의 값이다.
일 실시형태에서, 참조가 오브젝트를 지시할 때, 참조에서 다이제스트된 것은 오브젝트의 XML 표현이 아니라, 그 오브젝트의 정규 바이트 시퀀스이다. 이러한 오브젝트의 변환은 <Tranforms> 블록의 수단에 의해 XMLDSig 내에 표시된다. 따라서, 일 실시형태에서, <Reference> 요소는 이 블록을 임베딩할 것이다.
<Tranforms>
<Transform Algorithm="http://www.intertrust.com/octopus/cbs-1_0"/>
</Tranforms>
부록 D는 추가 정보를 제공한다. 일 실시형태에서, 다른 <Tranform> 이 오브젝트 참조들에 대해 허용되지 않는다.
일 실시형태에서, <DigestMethod> 요소는 비어 있고, 그 알고리즘 속성은 다음 값: http://www.w3.org/2000/09/xmldsig#hmac-sha1 을 갖는다.
<DigestValue> 요소는 다이제스트의 베이스64 (base64) 인코딩된 값을 포함한다.
< SignatureValue > - 일 실시형태에서, 서명 값은, <KeyInfo> 요소에서 설명된 키를 갖는, 정규화된 (ex-c14n) <SignedInfo> 요소의 서명의 베이스64인코딩된 값이다.
< KeyInfo >
Figure 112012048347665-pat00050
제어기 오브젝트들의 서명들에 대한 HMAC - SHA1 경우
일 실시형태에서, 이 경우에 <KeyInfo> 는 하나의 차일드: HMAC 서명을 위해 사용된 키의 ID를 표시할 <KeyName> 만을 가질 것이다.
*예:
<KeyInfo>
<KeyName>urn:x-octopus:secret-key:1001</KeyName>
</KeyInfo>
Figure 112012048347665-pat00051
RSA - SHA1 경우
일 실시형태에서, 이 경우에, 서명을 검증하기 위해 사용되는 공개 키가 X.509 v3 증명 (certificate) 내에서 운반될 것이고, CA 루트로의 증명 경로를 완성하기 위해 필요할 수도 있는 다른 증명들에 의해 수반될 수도 있다.
이들 증명들은 베이스64로 인코딩되어 <X509Certificate> 요소들 내에서 운반된다. 이들 <X509Certificate> 요소들은 <KeyInfo> 요소의 <X509Data> 요소 차일드 내에 임베딩되고, 서명 키의 증명으로부터 시작하는 순차적인 순서로 나타난다. 루트의 증명은 통상적으로 생략된다.
예 (간결하게 하기 위해, 예시적인 증명들의 전체 값들은 재생산되지 않고, 삭제된 자료는 줄임표에 의해 표시된다):
Figure 112012048347665-pat00052
일 실시형태에서, 제어기 오브젝트들은 제어되는 타겟들에서 참조된 각각의 콘텐츠 키에 대해 적어도 하나의 HMAC 서명을 가질 필요가 있다. 그 서명들의 각각을 위해 사용된 키는 참조된 콘텐츠 키 오브젝트 내에 포함된 콘텐츠 키의 값이다.
제어기들은 또한 RSA 서명을 가질 수도 있다. 일 실시형태에서, 그러한 서명이 존재하는 경우에, 그 서명은 또한 오브젝트에 대한 HMAC 서명들의 각각에서 <Reference> 로서 나타난다. 이를 달성하기 위해, 일 실시형태에서, RSA 서명에 대한 <Signature> 요소가, HMAC 서명들의 각각의 <Reference> 요소들 중 하나에서 'URI' 속성으로서 사용된, 동봉한 XML 문서 내에서 고유한, 'Id' 속성을 가져야만 한다. 일 실시형태에서, 검증기는 HMAC 서명에 의해 확증 (corroborate) 되지 않은 RSA 서명들을 리젝트 (reject) 해야만 한다.
예:
Figure 112012048347665-pat00053
Figure 112012048347665-pat00054
13. 프록시미티 체크 프로토콜
일부 실시형태들에서, (예컨대, 보호되는 콘텐츠의 피스가 사용자의 홈 네트워크, 종합 사무실, 등의 외부로 복사될 수 없음을 표시하는 규칙들을 시행하는데 도움을 주기 위해) 요청하는 엔티티의 물리적인 프록시미티에 기초하여, 콘텐츠, 서비스들, 및/또는 다른 시스템 자원들에 대한 액세스를 금지하는 것이 바람직할 수도 있다. 프록시미티 체크의 수행을 과도하게 방해하지 않고 보안을 제공하는 프록시미티 체크 프로토콜의 실시형태들이 아래에 설명된다. 프록시미티 체크 프로토콜은 광범위한 콘텍스트들의 애플리케이션에 적합하고, 그 중 하나는 상술된 바와 같은 디지털 권리 관리 제어들의 콘텍스트의 애플리케이션이다; 그러나, 아래에서 설명되는 프록시미티 체크 시스템들 및 방법들이 디지털 권리 관리 콘텍스트에 대한 애플리케이션으로 제한되지 않음을 인식하여야 한다. 예를 들어, 여기서 제시되는 프록시미티 체크 기술들은, '551 출원 및/또는 임의의 다른 적합한 콘텍스트에서 설명된 것과 같은 네트워크 서비스 결합 시스템 (network service orchestration system) 의 콘텍스트에서 또한 사용될 수 있다.
일 실시형태에서, 프록시미티 체크는, 제 1 계산 노드가 제 1 계산 노드의 요청에 대한 제 2 계산 노드로부터의 응답을 수신하는데 걸리는 시간의 양을 측정함으로써 수행된다. 시간의 양이 소정의 임계치보다 작은 경우에 (제 2 계산 노드가 제 1 계산 노드의 특정한 물리적인 거리 내에 있다고 일반적으로 표시한다), 프록시미티 체크가 성공으로 간주된다.
요청 및/또는 응답이 전송될 수도 있는 광범위한 상이한 네트워크 접속들로 인해, 소정의 시간의 양은 가능한 거리의 범위에 대응할 수도 있음을 인식하여야 한다. 일부 실시형태들에서, 이러한 변화는 간단히 무시되고, 예컨대 요청 및 응답 노드들이 실제로 서로 간에 비교적 멀리 떨어져 있음을 의미할 수 있는 빠른 네트워크 접속이 사용되는지 여부와 상관없이, 요청/응답 교환의 왕복 시간이 (예컨대, 8 밀리초, 또는 임의의 다른 적합한 시간의 양과 같은) 소정의 임계치보다 작은 경우에, 그 프록시미티 체크는 성공으로 간주된다. 다른 실시형태들에서, 사용되는 네트워크 접속의 타입에 따라 결정이 이루어질 수도 있고, 상이한 왕복 시간 요구조건들이 각각의 상이한 네트워크 접속에 적용될 수도 있다.
일 바람직한 실시형태에서, 프록시미티 체크는 앵커 (예컨대 클라이언트) 로 하여금 타겟 (예컨대 서비스) 의 프록시미티를 체크하도록 허용한다. 일 실시형태에서, 앵커가 사용되는 비밀 시드를 생성하고, 앵커만이 보안 타이머를 사용한다는 점에서, 프로토콜은 비대칭이다. 또한, 타겟은 앵커를 신뢰할 필요가 없다. 프록시미티 체크의 바람직한 실시형태들은 또한 암호적으로 효율적이고: 일 실시형태에서 2개의 공개 키 연산만을 사용한다.
시드 S로부터 Q 쌍들의 집합 R의 생성
일 실시형태에서, 집합 R이 다음 공식: Ri = H2Q -i(S) 에 따라 시드 S로부터 획득된다. 여기서, H(M)는 메시지 M에 대한 해시 함수 H의 다이제스트 값이고, n>=1 인 경우 Hn(M) = H(Hn -1(M)) 이고, H0(M) = M 이다. 이는 단순히, 공유된 비밀을 생성하기 위한 하나의 예시적인 기술이고, 다른 실시형태들에서 다른 기술들이 여기서 설명된 원리들로터 벗어나지 않고 사용될 수도 있음을 인식하여야 한다.
일 실시형태에서, 해시 함수 H를 위해 사용되는 알고리즘은 SHA1이고 (예컨대, FIPS PUB 180-1. Secure Hash Standard. U.S. Department of Commerce/National Institute of Standards and Technology 를 참조), 다른 실시형태들에서 다른 해시, 메시지 다이제스트, 또는 함수들이 사용될 수도 있음을 인식하여야 한다.
일 실시형태에서, 프록시미티 체크는 다음과 같이 수행되고, 여기서 "A" 는 앵커 (예컨대 클라이언트) 이고, "B" 는 타겟 (예컨대 서비스) 이다:
(a) 상술된 바와 같이, A는 난수들의 Q 쌍들의 집합 R {R0, R1}, {R2, R3}...{R2Q-2, R2Q -1} 을 생성한다.
(b) A는 B에 E(PubB, {Q,S}) 를 전송하고, 여기서 E(Y,X) 는 키 Y에 의한 X의 암호화를 나타내고, PubB 는 공개/개인 키 쌍 내의 B의 공개 키를 나타낸다.
(c) B는 {Q,S}를 복호화하고, 상술된 바와 같이 R을 사전 계산한다.
(d) B는 진행할 준비가 되었음을 표시하기 위해 확인 응답을 A에 전송한다.
(e) A는 루프 카운터 k를 0으로 설정한다.
(f) A는 T0 = 현재 시간을 측정한다.
(g) A는 B에 {k, R2 *k} 를 전송한다.
(h) R2 *k의 값이 정확한 경우에, B는 R2 *k+1로 응답한다.
(i) A는 D = 새로운 현재 시간 - T0 를 측정한다.
(j) B가 R2 *k+1에 대한 정확한 값으로 A에 응답했던 경우에, D는 소정의 임계치보다 작고, 프록시미티 체크가 성공으로 간주된다.
k + 1 < Q 인 경우에, A는 k를 증가시키고 단계 (f) 로 진행함으로써 새로운 측정을 재시도할 수 있다. Q 측정들보다 많이 수행할 필요가 있는 경우에, A는 새로운 집합 R을 이용하여 단계 (a) 로부터 시작할 수 있다. 예를 들어, 일부 실시형태들에서, 2개의 계산 노드들이 서로 간에 요구되는 프록시미티 내에 있다고 해도, 비정상적으로 느린 네트워크 접속, 극심한 트래픽, 노이즈 등이 B의 응답이 지연되도록 할 수 있으므로, 정확한 응답이 소정의 임계치 내에서 수신될 때까지 (또는 정확한 응답들이 챌린지/응답들의 시퀀스의 소정의 퍼센트보다 큰 소정의 임계치 내에서 수신되는 경우에), 프록시미티 체크가 반복적으로 (또는 수정의 횟수) 수행될 수 있다.
도 36은 타겟 (B) 이 앵커 (A) 의 허용 가능한 프록시미티 내에 있는지 여부를 앵커(A) 가 결정하는 상술된 프로토콜의 일 실시형태를 예시한다. 예를 들어, 도 36에 도시된 바와 같이, A는 (예컨대, 음악, 비디오, 텍스트, 소프트웨어 등과 같은) 보호되는 콘텐츠, 및/또는 계산 노드 B (3606) 에 저장된 보호되는 콘텐츠에 액세스하기 위해 원격 계산 노드 B (3606) 에 의해 필요로 되는, 또는 계산 노드 (B) (3606) 에 액세스 가능한 (예컨대, 링크, 키 등과 같은) 콘텐츠-액세스 자료를 포함하는, 계산 노드 (3602) 를 포함할 수도 있다. 콘텐츠 또는 콘텐츠-액세스 자료와 연관된 제어들은 노드 A (3602) 의 특정한 프록시미티 내의 (예컨대, 홈 네트워크에 대한 콘텐츠의 분배의 근접 제한에 대한) 디바이스들하고만 공유될 수 있다고 표시할 수도 있다. 대안으로, 또는 추가로, 그러한 폴리시는 계산 노드 A (3602) 의 (예컨대, 홈 또는 기업 네트워크의 도메인 관리자를 포함할 수도 있는) 시스템 레벨에서 시행될 수도 있다. 즉, 프록시미티 체크는 가상 머신에 의해 실행되는 제어 프로그램의 조건일 필요는 없고; 대신 단순히, 계산 노드 A (3602) 가 콘텐츠 또는 콘텐츠 액세스 자료를 계산 노드 B (3606) 에 전송하기 전에 운영 폴리시의 문제로서 요구하는 어떤 것일 수도 있다. 그러한 제어들 및/또는 폴리시들을 시행하기 위해, 계산 노드 A (3602) 상에서 실행하는 소프트웨어 및/또는 하드웨어는, 보호되는 콘텐츠 또는 콘텐츠-액세스 자료를 계산 노드 B (3606) 에 분배하기 위한 요청이 이루어질 때마다, 상술된 프록시미티 체크 프로토콜을 수행할 수 있다. 대안으로, 또는 추가로, 프록시미티 체크는, 노드 B (3606) 가 요구되는 프록시미티 내에 있는지를 결정하기 위해 소정의 간격들로 (예컨대 하루에 한번) 수행될 수도 있고, 프록시미티 체크가 성공적인 경우에, 노드 B (3606) 는 요구되는 프록시미티 내에 있는 것으로서 소정의 기간 동안 (예컨대, 다음 체크가 수행될 때까지, 소정의 시간의 양이 경과할 때까지, 등) 취급될 수도 있다.
도 36에 도시된 바와 같이, A 및 B가 임의의 초기 설정 단계들 (예컨대, 상술된 단계 (a) 내지 단계 (e)) (3604, 3608) 을 완료하면, A 와 B는, A로 하여금 B가 허용 가능한 프록시미티 내에 있는지 여부를 결정할 수 있게 하는, 보안의, 시한의 (timed), 챌린지-응답 교환 (예컨대, 상술된 단계 (f) 내지 단계 (i)) (3610) 에 착수한다.
도 36에 도시된 바와 같이, 일 실시형태에서, A (3602) 는, E(PubB, {Q,S}), 즉 쌍들 Q의 넘버뿐만 아니라 (예컨대, 서비스 결합의 콘텍스트에서 B에 의해 사용된 키와 같은) B의 공개 암호화 키에 의해 암호화된 비밀 쌍들 시드 S를 포함하는 설정 요청 (Setup Request) (3604) 을 B (3606) 에 전송한다. 일 실시형태에서, {Q,S} 는 네트워크 바이트 순서의 Q (1 바이트) 와 S (16 바이트) 의 바이트 시스템 접합 (concatenation) 이다. 일 실시형태에서, 암호화는 (예컨대, B. Kaliski, J. Staddon, PKCS #1: RSA Cryptography Specifications Version 2.0. IETF RFC2437. October 1998 에서 설명된 바와 같은) RSA 공개 키 암호화를 사용하여 수행된다. 일 바람직한 실시형태에서, PubB 는 검사를 통해 A에 의해 사전에 액세스될 것이고, 그 증명은 검증될 것이다. B (3606) 로부터 A (3602) 로의 설정 응답 (Setup Response) (3608) 이 도 36에 도시되어 있다고 해도, 다른 실시형태들에서 설정 응답 (3608) 은 사용되지 않는다. 이전에 표시된 바와 같이, 설정 요청 (3604) 을 수신한 후에, B (3606) 는, A (3602) 로부터의 후속 챌린지들에 대한 신속한 응답을 용이하게 하기 위해, 집합 R을 사전 계산하는 것이 바람직하다.
도 36에 도시된 바와 같이, A (3602) 는 [k,R2 *k], 즉 인덱스 k, 및 시드로부터 계산된 대응하는 비밀로 구성된 챌린지 요청 (3612) 을 B에 전송한다. 일 실시형태에서, [k,R2 *k]는 전송을 위해 베이스64로 인코딩된, 네트워크 바이트 순서의 k (1 바이트) 와 R2 *k (20 바이트) 의 바이트 스트림 접합이다. 도 36에 도시된 바와 같이, 일 실시형태에서, B (3606) 는 챌린지 응답 (3614) 을 A (3602) 에 전송하도록 동작 가능하고, 챌린지 응답 (3614) 은 R2 *k+1, 즉 챌린지 요청 (3612) 으로부터의 대응하는 비밀로 구성된다. 일 실시형태에서, R2 *k+1 은 전송을 위해 베이스64로 인코딩된, 네트워크 바이트 순서의 R2 *k+1 (20 바이트) 의 바이트 스트림이다.
도 37은 상술된 프록시미티 체크 프로토콜의 일 실시형태가 보호되는 콘텐츠에 대한 액세스를 제어하기 위해 어떻게 사용되는지의 예를 도시한다. 도 37을 참조하면, 케이블 또는 위성 콘텐츠 제공자가, 사용자의 개인 비디오 레코더 (PVR) (3702) 의 소정의 프록시미티 (3708) 내의 모든 디바이스들로 하여금 PVR을 통해 콘텐츠에 액세스하도록 허용하는 폴리시를 갖는다고 가정한다. 따라서, 예를 들어, PVR (3702) 상에서 실행하는 도메인 관리자 소프트웨어는, PVR (3702) 을 통해 콘텐츠에 대한 액세스를 요청하는 디바이스 (3704 및 3706) 에 대한 프록시미티 체크를 수행할 수도 있다. 도 37에 도시된 이 예에서, 디바이스 (3706) 는 서비스 제공자의 폴리시에 의해 정의된 프록시미티 (3708) 내에 있지 않고, PVR (3702) 에 의해 액세스가 거부될 것이다. 대조적으로, 디바이스 (3704) 는 프록시미티 내에 있고, (예컨대 디바이스 (3704) 로부터 PVR (3702) 로의 만료 링크 (expiring link) 와 함께 콘텐츠를 수신함으로써) 액세스가 제공될 것이다. 대안으로, 또는 추가로, 그 링크는, PVR (3702) 에 의한 프록시미티 체크를 그 자체에서 개시하도록 동작 가능하고, 디바이스 (3704) 가 PVR (3702) 의 소정의 프록시미티 (3708) 를 넘어서 이동한 경우에, 디바이스 (3704) 에게 콘텐츠에 대한 더 이상의 액세스를 거부하는 제어 프로그램을 포함할 수도 있다.
보안 고려 사항들
바람직한 실시형태들에서, 다음의 일부 또는 전부에 충실하도록 주의해야 한다.
Figure 112012048347665-pat00055
단계 (f) 내지 단계 (i) 를 포함하는 루프는 어떠한 집합 R에 대해서도 동일한 값의 k로 반복되지 않는다.
Figure 112012048347665-pat00056
프로토콜은,
Figure 112012048347665-pat00057
단계 (g) 에서 B가 R2 *k 에 대한 부정확한 값을 수신하는 경우
Figure 112012048347665-pat00058
단계 (a) 에서 Q가 지정된 범위 내에 있지 않은 경우
Figure 112012048347665-pat00059
k가 루프에서 반복되는 경우
Figure 112012048347665-pat00060
k가 Q를 초과하는 경우,
를 포함하는 파티 중 어느 하나에 의해 예측되지 않은 메시지가 수신되는 경우에, 중단된다.
대안으로, 또는 추가로, 단계 (h) 에서 A가 R2 *k+1 의 부정확한 값을 수신하는 경우에 프로토콜이 중단될 수 있다. 다른 실시형태들에서, B로부터의 부정확한 응답들의 특정한 횟수는 허용될 수도 있다.
*통상적으로, Q 및 소정의 시간의 임계치에 대한 최적의 값들은 주어진 애플리케이션의 고유한 상황들 (예컨대, 네트워크의 속도, 비교적 엄격한 프록시미티의 보장의 중요도 등) 에 의존한다는 것을 인식하여야 한다. 따라서, 구현들은 이들 값들을 구성하는 유연성에 대해 제공하는 것이 바람직하다. 일 실시형태에서, 구현들이 Q에 대한 최소값 64, 및 임계치에 대한 값 8ms 를 지원한다고 가정한다 (오늘날의 네트워크 속도의 일부에서, 8ms는 수 마일의 프록시미티에 대응할 수도 있다).
프로토콜 보안 폴리시들
일 바람직한 실시형태에서, 요청 및 응답의 교환에 대한 추가 보안이 필요하지 않다. 교환되는 메시지들의 사이즈 (예컨대, 20 바이트), 및 메시지들의 (SHA1 해싱 알고리즘 또는 다른 방법의 사용을 통한) 효과적인 랜덤성 때문에, 공격자가 요청을 가로채기 위해 조작하는 경우에도, 공격자가 정확한 응답을 결정하는데 있어서 암호적으로 불가능할 것이다.
상술된 실시형태들은 예시적인 것이고, 여기서 제시된 발명의 원리들로부터 벗어나지 않고 다수의 변경들이 이루어질 수도 있음을 인식하여야 한다. 예를 들어, 반복적으로 해시되는 비밀 시드가 상술되었지만, 임의의 적합한 공유된 비밀이 챌린지/응답을 위해 사용될 수도 있다. 일 실시형태에서, 공유된 비밀은 단순히 A로부터 B로 전송된 암호화된 넘버/메시지를 포함할 수도 있고, 챌린지/응답은 단순히 (예컨대, A가 메시지의 제 1 문자를 B에 전송하고, B가 메시지의 제 2 문자를 A에 전송하는 등과 같은) A와 B의 교환하는 부분들의 넘버/메시지를 포함할 수도 있다. 그러한 기술이 (메시지 내의 문자가 20 바이트 해시보다 훨씬 쉽게 추측할 수 있으므로) 도 36과 연관되어 설명된 실시형태의 보안이 없을 수도 있다고 해도, 일부 실시형태들에서 (예컨대 특히, 네트워크 지연의 변화도가 어떤 방법으로도 프록시미티 체크 메커니즘이 실제 프록시미티의 상당히 조악한 제어가 되도록 하는 경우) 그러한 보안의 레벨이면 충분할 수도 있고, 다른 실시형태들에서, 임의의 특정한 디지트 또는 비트가 상대적으로 쉽게 추측될 수도 있다고 해도, 공격자가 소정의 시퀀스의 디지트들 또는 비트들을 정확하게 추측할 수 있는 가능성이 시퀀스의 길이에 의해 빠르게 감소되는, 프록시미티 체크를 다수 회 수행함으로써, 보안이 강화될 수도 있다. 그러한 실시형태에서, B가 연속적인 정확한 응답들의 소정의 수 (또는 정확한 응답들의 소정의 퍼센트) 보다 많이 제공할 수 있는 경우에만, 프록시미티 체크가 성공으로 간주될 수도 있다.
예 및 설명의 목적을 위해, 프록시미티 체크 프로토콜의 추가적인 예가 아래에 제공된다. 이 예에서, 제 1 디바이스, SRC는 (예컨대, 컴퓨터 네트워크와 같은) 통신 채널을 통해 제 2 디바이스, SNK와 통신한다. SNK가 SRC로부터의 통신 요청에 응답하는데 걸리는 시간을 측정함으로써, SRC 와 SNK가 서로 간의 프록시미티 내에 있는지를 확실히 결정할 수 있기를 바란다. 챌린지 또는 프로브 메시지가 SRC로부터 SNK에 전송되고, SNK는 응답 메시지로 응답한다. 챌린지의 발행과 응답의 수신 간의 기간은 왕복 시간 또는 RTT라 호칭될 것이다. SNK가 챌린지에 대한 응답을 계산하고 전송하는데 걸리는 시간에 불필요한 오버헤드를 도입하지 않기 위해, 챌린지/응답 통신을 실시할 수 있는 한 가볍도록 하는 것이 일반적으로 바람직하다. 특히, 챌린지의 발행과 응답의 수신 간에 SRC 또는 SNK에 의해 요구하는 암호 연산들을 피하는 것이 통상적으로 바람직하다.
또한, SNK만이 SRC로부터의 챌린지에 대한 유효한 응답을 생산할 수 있도록 보장하기 위해 (예컨대, SNK가 응답한 것처럼 제 3 파티가 SRC로부터의 챌린지를 가로채고 응답을 전송하는, 맨-인-더-미들 어택 (man-in-the-middle attack) 을 피하기 위해), 프로토콜은 다음과 같이 진행할 수도 있다:
(1) SRC는 비밀을 생성한다. 이 비밀은 랜덤 또는 의사-난수들의 하나 이상의 쌍들로 구성된다.
(2) SRC는 비밀을 SNK에 전송한다. 프로토콜의 이 부분은 시간에 민감하지 않다. 그 비밀은 SRC 및 SNK에 의해 비밀로 유지된다. 그 비밀은 SNK만이 알도록 보장하는 방식으로 또한 전송된다. 이는 통상적으로, SRC와 SNK 간의 보안 인증된 채널을 통해 비밀을 전송하는 것을 포함한다 (예컨대, SRC는 SNK만이 대응하는 개인 키를 가짐을 알고 있는 공개 키로 비밀 데이터를 암호화할 수 있다). 비밀 데이터는 상술된 랜덤 또는 의사-난수들의 쌍 (들) 일 필요는 없다. 그러한 쌍들이 사용되는 실시형태들에서도, 이 단계에서 송신된 비밀 데이터는, SNK로 하여금 넘버들의 쌍 (들) 의 값들을 계산하거나 또는 공제 (deduct) 하도록 허용하는데 충분한 정보이면 된다. 예를 들어, 비밀 데이터는, 의사-난수들의 하나 이상의 쌍 (들) 이 시드된 의사-난수 생성기를 사용하여 생성될 수 있는, 랜덤 시드 넘버일 수도 있다.
(3) SNK가 챌린지를 수신할 준비가 되었음을 SRC가 알게 되면 (예컨대, SNK가 비밀 데이터를 수신하고 프로세싱한 후에 READY 메시지를 전송할 수도 있다), SRC는 챌린지 메시지를 생성한다. 챌린지 메시지를 생성하기 위해, 예컨대 일 바람직한 실시형태에서, SRC는 난수 쌍들 중 하나를 선택한다. 하나보다 많은 쌍이 사용되는 경우에, 챌린지 메시지 데이터는 어떤 쌍이 선택되었는지를 표시하는 정보, 뿐만 아니라 그 쌍의 2개의 넘버들 중 하나를 포함한다.
(4) SRC는 현재 시간의 값 T0를 측정한다. 직후에, SRC는 (암호화 또는 디지털 서명이 필요없는) 챌린지 메시지를 SNK에 전송하고, 응답을 대기한다. 대안으로, 임의의 동시에 발생하는 (예컨대, 암호화, 서명 등과 같은) 암호 연산이 수행된 후가 바람직하더라도, SRC는 챌린지 메시지를 전송하기 직전에, 현재 시간 T0을 측정할 수도 있다.
(5) SNK는 이전에 수신한 쌍들 중 하나를 식별할 수 있는 챌린지를 수신한다. SNK는 챌린지 내의 난수가 쌍의 일부인지를 체크하고, 그 쌍의 다른 난수의 값을 포함하는 응답 메시지를 구축한다.
(6) SNK는 (암호화 또는 디지털 서명이 필요없는) 응답 메시지를 SRC에 전송한다.
(7) SRC는 응답 메시지를 수신하고, 현재 시간의 값 T1을 측정한다. 왕복 시간 RTT는 T1 - T0 와 동일하다.
(8) SRC는 응답에서 수신된 넘버가 챌린지를 위해 선택된 쌍의 다른 값과 동일한지를 검증한다. 넘버들이 일치하는 경우에, 챌린지 응답은 성공적이고, SRC는 SNK가 왕복 시간에 의해 표시된 프록시미티 내에 있음이 확신될 수 있다. 넘버들이 일치하지 않는 경우에, SRC는 프로토콜을 중단할 수 있고, 하나보다 많은 쌍이 공유되고, 사용되지 않은 적어도 하나의 쌍이 존재하는 경우에, 단계 (3) 으로 되돌아 가서 다른 쌍을 사용한다.
본 발명의 원리로부터 벗어나지 않고, 상술된 예시적인 프록시미티 체크 프로토콜들에 다수의 변화가 이루어질 수도 있음을 인식하여야 한다. 예를 들어, 제한되지 않으면서, 상이한 암호 알고리즘들이 사용될 수도 있고, 상이한 공유된 비밀들 등이 사용될 수도 있다.
14. 보안
여기서 설명된 시스템들 및 방법들의 실제 애플리케이션들에서, 보안은 다양한 상이한 레벨들로 제공될 수 있고, 다양한 상이한 기술들을 사용하여 제공될 수 있다. 여기서의 설명은 우선적으로, DRM 엔진의 동작 및 디자인, 및 복잡할 수 있는 비지니스 관계를 효율적으로 조절하는데 사용하기 위한 관련 호스트 애플리케이션에 초점을 맞춘다. DRM 엔진 및 호스트 애플리케이션이 의도된 바와 같이 동작할 때, 콘텐츠는 연관된 라이센스 의무의 시행에 의해, 권한 부여되지 않은 액세스 또는 다른 사용으로부터 보호된다.
악성 변경 또는 수정으로부터의 DRM 엔진 및/또는 DRM 엔진이 실행하는 환경의 보호는, 보안 기술들의 임의의 적합한 조합을 사용하여 행해질 수 있다. 예를 들어, 암호화, 디지털 서명들, 디지털 증명들, 메시지 인증 코드들 등과 같은 암호 메커니즘들이, DRM 엔진, 호스트 애플리케이션, 및/또는 다른 시스템 소프트웨어 또는 하드웨어를 변경 및/또는 다른 공격으로부터 보호하기 위해 본원의 다른 부분에서 설명된 바와 같이 채용될 수 있고, 소프트웨어 난독화 (obfuscation), 자체-체킹 (self-checking), 커스토마이제이션 (customization), 워터마킹, 안티-디버깅 (anti-debugging), 및/또는 다른 메커니즘들과 같은 구조적 및/또는 택티컬 (tactical) 보안 측정들이 사용될 수도 있다. 그러한 기술들의 대표적인 예들이 예컨대, 발명의 명칭이 Obfuscation Techniques for Enhancing Software Security 인, 미국 특허 제 6,668,325 B1 호, 및 US-2005-0183072-A1으로서 발행된, 공통 양도된 미국 특허 출원 제 11/102,306 호; 미국 특허 출원 제 09/629,807 호; US-2003-0023856-A1으로서 발행된, 미국 특허 출원 제 10/172,682 호; US-2006-0123249-A1으로서 발행된, 미국 특허 출원 제 11/338,187 호; 및 발명의 명칭이 Secure Processing Unit Systems and Methods 인, 미국 특허 제 7,124,170 B1에서 발견될 수 있고, 이들의 각각은 본원에 그 전체가 참조로서 통합된다. 대안으로, 또는 추가로, (예컨대, 비교적 액세스 불능 메모리의 사용, 보안 프로세서들, 보안 메모리 관리 유닛들, 하드웨어-보호 동작 시스템 모드들 등과 같은) 물리적인 보안 기술들은 보안을 더 강화하기 위해 사용될 수 있다. 그러한 보안 기술들은 당업계의 평범한 기술 중 하나에 잘 알려져 있고, 이들 기술들의 일부 또는 전부의 임의의 적합한 조합이 원하는 보호의 레벨 및/또는 주어진 특정한 애플리케이션의 세부사항에 따라 사용될 수도 있음을 인식하여야 한다. 따라서, (예컨대, 키 도출 기술들, 디지털 서명 기술들, 암호화 기술들 등과 같은) 특정한 보안 메커니즘들이 특정한 실시형태들과 연관하여 여기서 설명되지만, 이들 기술들의 사용이 모든 실시형태들에서 요구되는 것이 아님을 인식하여야 한다.
또 다른 형태의 보안이 시스템의 규격화된 디자인 및 동작에 의해, 및 법적인 그리고 사회적인 규정의 참여자들에 의해 제공될 수 있다. 예를 들어, 퍼스널리티 노드 (personality node), 키잉 자료 (keying material), 보호되는 콘텐츠 등을 획득하기 위해, 디바이스 또는 엔티티는 시스템 사양들 및 요구조건들에 충실하도록 계약상으로 승낙하도록 요구될 수도 있고, 엔티티의 시스템 요구조건에 대한 순응 (compliance) 이 검증될 수도 있는 증명 프로세스에 따라야할 필요가 있을 수도 있다. 예를 들어, 디바이스 또는 애플리케이션은 환경 내의 다른 구현들과 호환되는 방식으로 DRM 엔진을 구현하도록 요구될 수도 있고, 및/또는 특정 타입 또는 레벨의 변경 저항 또는 다른 보안을 제공하도록 요구될 수도 있다. 디바이스의 또는 다른 엔티티의 그러한 요구조건들에 대한 순응을 입증하는 디지털 증명들이 발행될 수도 있고, 이들 증명들은 디바이스 또는 엔티티로 하여금 시스템에 참여하도록 허용하기 전에, 또는 지속적인 액세스를 허용하는 조건으로서 검증될 수도 있다.
또한, 본 발명과 연관하여 사용될 수 있는 보안 기술에 대한 비제한적인 정보가 아래에 제공된다.
시스템 보안
일부 실시형태들에서, 시스템 디자이너는 리스크들을 관리하고, 디바이스들, 애플리케이션들, 및 서비스들에 대한 공격, 및 그 타협으로부터 일어날 수도 있는 위협을 완화하기 위해, 갱신 (renewability), 거절 (refusal), 및/또는 복원 (remediation) 기술들의 조합을 사용하기 위해 선택할 수도 있다. 위협들을 완화하기 위해 사용될 수 있는 다양한 기술적인 메커니즘들의 예들이 아래에 제시된다.
갱신 메커니즘들은 적어도 2개의 별개의 목적들에 작용하기 위해 사용될 수 있다. 첫 번째, 갱신 메커니즘들은 신뢰되는 시스템 엔티티들로 하여금 신뢰되지 않은 시스템 엔티티들에 대한 액세스 또는 서비스를 거절하도록, 업-투-데이트 (up-to-date) 정보를 신뢰되는 시스템 엔티티들에 전달하기 위해 사용될 수 있다. 두 번째, 갱신 메커니즘들은 임의의 컴프로마이즈된 컴포넌트 (들) 를 업데이트함으로써 신뢰되지 않은 엔티티가 신뢰되는 상태를 회복할 수 있게 한다. 거절 대응책들 (countermeasure) 은 하나 이상의 다음 행동들을 보이는 것으로서 또한 특징지어질 수 있다.
Figure 112012048347665-pat00061
파기 (revocation), 또는 자격 증명을 폐기한다 (annulling) (통상적으로 일부 엔티티를 블랙리스팅 (blacklisting) 하여).
Figure 112012048347665-pat00062
배제, 또는 암호 또는 폴리시 시행 메커니즘들을 적용함으로써 액세스를 거부한다.
Figure 112012048347665-pat00063
회피 (shunning), 또는 아이덴티티 또는 자격 증명에 속하는 어떤 다른 속성에 기초하여 액세스 또는 서비스를 거부한다.
Figure 112012048347665-pat00064
만료, 또는 시간 이벤트에 기초하여 자격 증명 또는 특권 (privilege) 을 폐기한다.
예를 들어, 거절 메커니즘들은, 디바이스 클로닝, 위장 공격, 프로토콜 장애, 폴리시 시행 장애, 애플리케이션 보안 장애, 및 구 (stale) 정보 또는 수상한 정보와 같은 위협들에 대항하기 위해 사용될 수 있다.
아래의 테이블은 가능한 위협들, 위협들이 내포하는 리스크들의 일부, 및 위협을 복원하고 시스템 보안을 갱신하기 위한 메커니즘들의 예들을 제공한다.
위협 리스크들 복원 메커니즘 갱신 메커니즘
클로닝된 디바이스 프리-액세스 디바이스들. 브로드캐스트 암호화 BKB 업데이트
컴프로마이즈된 증명된 키 권한 부여되지 않은 라이센스들, 링크들, 디바이스 상태, 아이덴티티들, 서비스 액세스. 증명 파기 CRL 분배.
키 갱신.
구현 장애 디바이스 해킹을 위한 레시피들. 사양 버전 어서션 소프트웨어 업그레이드
프로토콜 장애 컴프로마이즈된 키들.
라이센싱된 콘텐츠에 대한 통제되지 않은 액세스.
보안 메타데이터 어서션 소프트웨어 업그레이드
구 보안 메타데이터 가짜 서비스 상호 작용.
컴프로마이즈된 정보에 의지하여 클록 롤백.
보안 메타데이터 어서션 보안 메타데이터 업데이트 서비스.
소프트웨어 업그레이드.
파기 ( revocation )
파기는 엔티티를 블랙리스팅한 것에 의존하는 복원 메커니즘으로서 여겨질 수 있다. 통상적으로, 파기되는 것은 공개-키 증명과 같은 자격 증명이다. 자격 증명을 파기할 시, 블랙리스트는 업데이트될 필요가 있고, 의존하는 파티가 업데이트로부터 이익을 얻을 수도 있도록 업데이트를 전달하기 위해 갱신 메커니즘이 사용된다.
따라서, 예를 들어, 디바이스들, 사용자들, 및/또는 다른 엔티티들은 콘텐츠 또는 서비스를 소비하기 위해 필요한 정보가 주어지기 전에, 아이덴티티 증명들, 다른 자격 증명들, 및 다양한 보안 데이터를 제시하도록 요구될 수 있다. 유사하게, 클라이언트가 서비스를 신뢰하도록 하기 위해, 서비스는 서비스의 자격 증명들을 클라이언트에 제공할 필요가 있을 수도 있다.
엔티티가 서비스를 액세스하기 위해 필요한 정보를 효과적으로 무효화할 수 있는 방법들의 예들은:
Figure 112012048347665-pat00065
증명 파기 리스트들 (CRLs).
Figure 112012048347665-pat00066
온라인 증명 상태 프로토콜 (Online Certificate Status Protocol; OCSP) 응답자 (responder) 와 같은, 자격 증명 및 데이터 유효성 서비스들.
Figure 112012048347665-pat00067
자격 증명들 및 데이터의 자체-파괴를 위한 명령들
을 포함한다.
증명 파기 리스트들 ( CRLs )
파기 리스트들은 아이덴티티 증명들, 라이센스들, 링크들, 및 다른 보안 어서션 (assertion) 들을 파기하기 위해 상이한 엔티티들에 의해 사용될 수 있다. 이 메커니즘은 컴프로마이즈되는 서비스로부터 초래한 상황을 복원하는데 가장 효과적이다. 다수의 기술들이 CRL들을 분배하기 위해 사용될 수 있다. 예를 들어, 일부 시스템들은 간접 CRL을 채용할 수도 있어서, 전체 에코시스템 (ecosystem) 을 통제하는 단일 CRL이 존재하게 된다. 또한, 엔티티들은 엔티티들의 점유물에 CRL을 공시하고 (또는 발행하고), 및/또는 업데이트 서비스에 가입 (subscribe) 할 수 있다. CRL (들) 은 바이러스 방식 (viral fashion) 으로 피어-투-피어 (peer-to-peer) 로 분배될 수 있고, 및/또는 휴대용 디바이스들은 연결 (tether) 될 때, 발행된 CRL (들) 을 수신할 수 있다. '551 출원에서 설명된 서비스 결합 기술들이 또한 이 목적을 위해 사용될 수 있다.
유효성 서비스들
유효성 서비스들은, 자격 증명들 및 다른 보안 관련 데이터의 상태에 대한 업-투-데이트 정보를 제공하기 위해 사용될 수 있다. 유효성 서비스들은 의지하는 파티들을 대신하여 활성 유효화 동작들을 수행할 수 있거나, 또는 유효성 서비스들은 의지하는 파티들을 대신하여 보안 정보를 관리하기 위해 사용될 수 있다. 활성 유효성 서비스의 예는, 자격 증명 또는 속성의 유효성을 체크할 수 있는 것이다. 보안 정보를 관리하는 유효성 서비스들의 예들은 CRL 또는 보안 폴리시 업데이트들을 배포하거나 (disseminate), 또는 보안 시간 서비스를 제공하는 것들이다. 유효성 서비스들의 사용은, 의존하는 파티들이 통제 결정들을 통지하기 위해 현재 데이터를 가지고 있도록 보장하는데 도움을 줄 수 있다.
통상적으로, 모든 시스템 엔티티들이 자격 증명들 및 보안 데이터의 유효성에 대한 업-투-더-미닛 (up-to-the-minute) 정보를 필요로 하지는 않는다. 예를 들어, 모든 고객 디바이스들이, 라이센스가 사용될 때마다, 또는 새로운 라이센스가 획득될 때마다 라이센스 서버의 증명 체인 (chain) 을 확인하기 위해 온라인 증명 상태 프로토콜 (Online Certificate Status Protocol; OCSP) 서비스를 사용하지는 않을 것이다. 그러나, 라이센스 서버는, 가입자 자격 증명들의 유효성을 체크하기 위해 어떤 빈도로 OCSP 서비스를 사용할 수도 있다. (쉽게 업데이트될 수 있는) 폴리시는 어떤 서비스들이 언제 사용될 수 있는지를 결정할 수 있다. 폴리시를 동적으로 업데이트할 수 있는 기회를 제공함으로써, 라이센스 서버들은 동작의 변화들에 적응할 수 있다. 따라서, 보안 폴리시는 경험, 기술적인 진보, 및 시장 요인들에 기초하여 진화할 수 있다.
보안 오브젝트들의 규제된 자체-파괴 ( directed self - destruction )
엔티티에 의한 자격 증명들 및 데이터의 자체-파괴는 엔티티의 보안 프로세싱의 무결성 (integrity) 이 의심스럽지 않을 때 적절하다. 이 선택이 이용 가능할 때, 이는 종종 가장 간단하고 (straightforward), 신속하고 (expeditious), 효율적인 파기 방법이다. 무결성의 침해의 약간의 의심이 존재하거나 또는 의심이 존재하지 않고, 양방향성 통신이 파괴가 완료되었는지의 검증과 함께, 파괴를 위한 특정 지시들을 허용하는 프로토콜을 지원할 때, 자체-파괴가 특히 유용하게 될 수 있다.
파괴하거나 또는 디스에이블 (disable) 시키는데 종종 유용하게 될 다수의 보안 오브젝트들이 존재한다. 예를 들어, 디바이스가 도메인을 떠나거나 또는 콘텐츠 라이센스가 타임 아웃 (time out) 할 때, 그것은 파괴될 콘텐츠에 액세스하기 위해 사용될 수 있고 키들을 포함하는, 연관된 오브젝트들을 위해 유용하게 될 것이다. 본원의 다른 부분에서 더 상세히 설명되는 에이전트 제어 프로그램들은 자체-파괴 메커니즘들의 구현에 잘 어울린다. 에이전트들은, 도메인 멤버쉽에 변화를 주기 위해, 또는 (예컨대, 멤버쉽 또는 폴리시의 변화로 인해) 더 이상 사용 가능하지 않은 키들을 제거하기 위해, (예컨대, 상태 데이터베이스와 같은) 보안 저장소 내의 상태를 파괴하도록 만들어질 수 있다.
배제
배제는, 상품들 및 서비스들의 장래 소비에 대한 참여로부터 나쁜 행위자 (bad actor) (또는 나쁜 행위자들의 그룹) 를 제외하는 복원 메커니즘이다. 엄격한 결과의 배제를 부과하기 때문에, 배제는 통상적으로 상황들이 보장할 때 최후의 수단으로서만 사용된다. 배제는, 나쁜 행위자들을 효과적으로 블랙리스팅하여 미디어 및 미디어 관련 서비스들을 소비하는 것을 금지하는 메커니즘에 의존한다. 블랙리스트의 배포는 이 복원을 인에이블하기 위해 갱신 메커니즘에 의존한다. 그러나, 배제는 나쁜 행위자를 신뢰되는 상태로 복구하기 위해 갱신 메커니즘을 반드시 제공할 필요는 없다.
키 배제
키 배제는, 장래의 콘텐츠를 복호화하는 능력으로부터 임의의 수신기들의 서브세트를 논리적으로 배제하게 하는 결정이, 임의의 소정의 시간에 이루어질 수 있는 방식으로, 키 정보를 수신기들의 세트에 브로드캐스트하기 위해 사용되는 키 관리 메커니즘이다. 이는, 대규모 그룹의 수신기들의 각각의 멤버가 콘텐츠를 복호화하기 위해 필요한 정보를 포함하는 브로드캐스트 키 블록 (Broadcast Key Block; BKB) 을 구축하기 위한 효율적인 기술들을 사용함으로써 활성화된다. BKB는, 쉽게 업데이트될 수 있고, 콘텐츠를 복호화하기 위한 능력으로부터 그룹의 하나 이상의 멤버들을 배제하는 방식으로 구조화된다. 즉, BKB의 디자인은 권한자 (authority) 로 하여금 새로운 BKB로 시스템을 업데이트하도록 허용하여, 콘텐츠 제공자가, 디바이스들의 타겟 세트가 BKB에 액세스하고 있더라도, 디바이스들의 타겟 세트를 BKB를 사용하는 것으로부터 특정하게 배제할 수 있다.
이러한 메커니즘은, 침해자가 적법한 디바이스를 역 설계하고, 그 키들을 추출한 후, 그 키들의 복사본들을 클론 디바이스들에 배치하는, 클로닝 공격에 대해 특히 효과적이다. 클론들은 통제 모델에 충실할 필요가 없다는 것을 제외하고는, 외부적으로 원시 디바이스와 같이 행동한다. 컴프로마이즈가 발견되면, 컴프로마이즈된 디바이스 및 그 디바이스의 모든 클론들을 배제하는 업데이트된 BKB가 배치될 수 있다. 그러나, 키 배제는, 어떤 상황들에서는 다른 방법들보다 덜 효율적이게 하는 일부 저장, 전달, 및 계산 오버헤드를 초래한다. 이는, 콘텐츠가 브로드캐스트되지 않을 때, 또는 백 채널 (back channel) 이 존재할 때 특히 들어맞는다.
회피 ( Shunning )
회피는 배제와 행위가 매우 유사하지만, 덜 엄격한 영향을 갖는 복원 메커니즘이다. 본질적으로, 실행 시간 폴리시 결정 때문에 서비스를 거절하는 수단이다. 규제된 자체-파괴 또는 키 배제를 통한 액세스 거부를 통해 디바이스의 성능을 디스에이블시키기 위한 더 고압적인 방법들 대신에, 회피는 서비스 제공자들이 디바이스에 서비스들을 공급하기를 거절하게 함으로써, 디바이스를 디스에이블시키는 간단한 방법을 제공한다. 외부적으로 제공되는 서비스들을 사용하여 디바이스들의 가치를 확장하려는 현재의 경향에 의해, 회피는 더 효과적인 보안 메커니즘이 된다.
디바이스 회피는 폴리시에 의해 조종되고, 폴리시가 요구하는 모든 적절한 자격 증명들을 생산하지 않는 (예컨대, 클라이언트들, 서버들, 및 특정 롤 플레이어들과 같은) 엔티티들을 차별하기 위해 사용될 수 있다. 예를 들어, 폴리시는 관리되는 엔티티가 최신 보안 업데이트를 실증 (demonstrate) 하도록 요구할 수도 있다. 따라서, 회피는 파기의 결과 또는 임의의 특정한 행동의 실패 중 하나일 수 있다. 회피는 검사 서비스들 및 '551 출원에서 설명된 것들과 같은 서비스들을 사용하여 피어-투-피어 방식으로 용이하게 될 수 있다. 또한, (예컨대, 유효성 서비스의 인스턴스와 같은) 데이터 증명 서비스가 폴리시 시행 시간에 회피를 수행할 수 있다. 시스템 엔티티가 회피된 후에, 서비스의 폴리시에 응하는데 실패한 특정한 자격 증명 또는 오브젝트가 시스템 엔티티에 통지될 수 있다. 이는 회피된 엔티티가 적절한 서비스 인터페이스를 통해 오브젝트를 갱신하도록 유발시킬 수 있다.
만료
만료는 자격 증명 또는 오브젝트를 무효화하기 위한 어떤 시간 이벤트에 의존하는 복원 메커니즘이다. 만료는, 미디어 또는 미디어 서비스들에 대한 일시적인 액세스를 인에이블하는데 효과적이고; 만료되면, 통제 모델이 액세스가 더 이상 허가되지 않도록 보장한다. 만료의 효과적인 사용은, 자격 증명 또는 오브젝트가 미디어 또는 미디어 서비스들에 대한 계속적인 액세스를 인에이블하기 위해 리프레시될 수 있게 하는 갱신 메커니즘들을 요구할 수도 있다.
자격 증명들의 만료
증명된 키들은 보호 의존하는 파티들에 할당된 다양한 만료 속성들을 가질 수 있다. 자격 증명들의 만료는, 증명들이 만료된 엔티티들이 서비스에 거절되도록 보장하기 위해 사용되고, 키 롤오버 및 키 갱신 절차들과 함께 사용될 수 있다. 엔티티들이 광역 네트워크에 빈번하게 접속되리라 예측될 때, 자격 증명들 및 다른 보안 데이터를 규칙적으로 갱신하는 것이 가장 좋은 실시이다. 다른 가장 좋은 실시는, 이들 오브젝트들의 유효 기간을 정당한 한 짧게 유지하는 것이다. 유효성 체킹 폴리시들에서 유효 기간들 및 유예 (grace) 기간들을 오버래핑 (overlapping) 하는 것과 같은 다양한 기술들이 전이들 동안에 원활한 동작을 보장하기 위해 사용될 수 있다. 짧은 유효 기간은 또한 CRL들의 사이즈를 감소시키는데 도움을 준다.
링크들의 만료
이전에 설명된 바와 같이, 링크 오브젝트들에 유효 기간들이 할당될 수도 있다. 만료 시, 링크는 무효로 간주되고, DRM 엔진은 DRM 엔진의 그래프의 구축에서 그 링크를 고려하지 않을 것이다. 이 메커니즘은 상품들 및 서비스들에 대한 일시적인 액세스를 인에이블하기 위해 사용될 수 있다. 링크들은 폴리시에 의해 허가되는한 미디어에 대한 계속적인 액세스가 승인될 수도 있도록 갱신될 수 있다. 일 실시형태에서, 링크들이 비교적 가벼운, 자체-보호되는 오브젝트들이기 때문에, 피어-투-피어 프로토콜들을 통해 쉽게 분배될 수 있다.
갱신 메커니즘들: 애플리케이션 및 폴리시 갱신
통상적으로, 효율적인 갱신은 프로토콜 장애에 대한 복원의 급속한 배치를 수반할 것이고, 이는 종종 (DRM 시스템들에 포함되는) 보안 애플리케이션들에서 보여지는 대부분의 보안 문제점들이다. 소프트웨어 업데이트들이 비지니스 로직 및 보안 프로토콜들을 업데이트하기 위해 사용될 수 있다. 애플리케이션들이 애플리케이션 로직으로부터 보안 폴리시와 신뢰 폴리시를 분리하도록 디자인될 때, 분리 메커니즘이 폴리시를 업데이트하기 위해 사용될 수 있고; 이는 리스크가 더 적은 방법이다. 실제로, 피어-투-피어 발행 메커니즘들은 폴리시를 신속하게 업데이트하기 위해 사용될 수 있다. 다른 방법으로, 애플리케이션 배치자의 소프트웨어 업데이트 방법들이 보안 및 신뢰 폴리시를 업데이트하기 위해 사용될 수 있다.
올바른 과제 ( job ) 를 위한 올바른 툴의 사용
일반적으로, 가능하면 비교적 가벼운 툴들을 사용하는 것이 바람직할 것이다. 제한된 유효 기간들을 갖는 자격 증명들, 및 유효 일자들을 체크하는 폴리시들을 사용하는 것은, 엔티티들의 전체 개체수 (population) 를 관리 가능한 사이즈로 유지하고, 너무 신속하게 CRL들을 성장시키기 위한 필요성을 제거하는데 도움을 줄 수 있다. 키들에 대한 액세스로부터 엔티티를 배제하기보다 회피하는 것은 BKB들의 수명을 연장할 수 있고; 또한 일시적일 수 있고 상황들에 의해 변화할 수 있는 미세-분화된 (fine-grained) 폴리시들을 인에이블하는데 이점을 갖는다. 상이한 롤 플레이어들이 관심을 갖는 특정한 타입의 자격 증명들을 트래킹 (track) 하는 상이한 CRL들이 BKB들 대신에 사용될 수 있고, 상이한 CRL들은 (클로닝된 수신기들을 다루는 것과 같은) 가장 효과적인 곳에 배치될 수 있다. 폴리시들은, 온라인 유효성 서비스들이, 신규 (fresh) 자격 증명들이 매우 중요하고, 더 느린 파기 메커니즘들이 부적절한, 시간 및 노력의 투자에 대한 정당한 리턴을 제공하리라 예측될 수 있을 때, 그 온라인 유효성 서비스들의 사용을 지시할 수 있다. 노드가 무결성을 갖는 것으로 여겨지고, 올바른 일을 행하리라 예측될 수 있을 때, 그리고 라이센스 또는 (가입을 위한 링크 또는 도메인 링크와 같은) 보안 오브젝트가 파기될 필요가 있을 때, 통상적으로 정당한 방법은, 노드로 하여금 오브젝트를 파괴하도록 지시하는 것이다. 그러한 상황에서, 라이센스가 무효라고 공공에 알릴 필요가 없고, BKB를 배치하거나 또는 도메인을 다시 입력할 필요가 없다. 로컬 폴리시에 의해, 또는 권한 있는 (authoritative) 명령에 의해 조종되는 자체-파괴는 파기를 위한 더 효율적인 방법들 중 하나이다.
다양한 파기, 갱신, 복원, 및 다른 기술들 및 실시들이 설명되었지만, 상이한 상황들은 상이한 툴들을 요청할 것이고, 본원에서 설명되는 시스템들 및 방법들의 바람직한 실시형태들은 이들 기술들을 사용하지 않거나, 이들 기술들의 일부의 임의의 적합한 조합을 사용하여 실시될 수 있음을 인식하여야 한다.
네트워크 서비스 보안
다음 설명은, 상술된 DRM 엔진 및 애플리케이션들이, '551 출원에서 설명된 것들과 같은, 네트워크된 서비스 결합 시스템들 및 방법들과 함께 사용되는, 실시형태들에 관련될 수 있는 보안 고려 사항들 및 기술들의 일부를 예시한다.
DRM 엔진 및 본원에서 설명된 것들과 같은 구조를 채용하는 DRM 시스템들의 실시 구현들은 종종, 콘텐츠 및 DRM 오브젝트들을 액세스하기 위한 네트워크된 트랜잭션들 (transaction) 을 수행할 것이다. 그러한 콘텍스트에서, '551 출원에서 설명된 시스템들 및 방법들은 특히, 엔티티 인증, 및 권한 부여 속성들 (롤들) 을 위한 포맷들을 포함하는, 메시지-계층 보안을 표준화하기 위해 사용될 수 있다.
설명을 위해, DRM 시스템에서 발생하는 트랜잭션들은 액세스되고, 획득되고, 또는 취급되는 정보의 타입에 기초하여, 적어도 2개의 일반적인 카테고리들로 분리될 수 있다.
콘텐츠 액세스 트랜잭션들 (Content Access Transactions) 은 DRM 시스템에 의해 보호되는 미디어 또는 기업 콘텐츠, 또는 다른 민감한 정보에 대한 액세스, 또는 취급을 지시한다. 콘텐츠 액세스 트랜잭션들의 예들은, 보호되는 비디오 클립을 렌더링 (render) 하는 것, 보호되는 오디오 트랙의 복사본을 콤팩트 디스크에 기록하는 것, 보호되는 파일을 휴대용 디바이스로 이동하는 것, 기밀 문서를 이메일링하는 것, 등을 포함한다. 통상적으로, 콘텐츠 액세스 트랜잭션들은 콘텐츠 보호 키에 대한 직접적인 액세스를 수반하고, 사용자의 지시 하의 소비의 시점에서 수행된다.
오브젝트 트랜잭션들 (Object Transactions) 은, 보호되는 콘텐츠에 대한 액세스를 임의의 방식으로 통제하는 DRM 시스템에 의해 정의되는 오브젝트들을, 사용자 또는 시스템이 획득하거나 또는 그 오브젝트들과 상호 작용하는 트랜잭션들이다. 그러한 오브젝트들은 DRM 라이센스들, 멤버쉽 토큰들, 파기 리스트들 등을 포함한다. 하나 이상의 오브젝트 트랜잭션들은, 콘텐츠 액세스 트랜잭션을 수행하기 위해 필요한 모든 부수 사항 (collateral) 이 이용 가능하기 전에 통상적으로 요구된다. 통상적으로, 오브젝트 트랜잭션들은, 소비의 시점에서 DRM 오브젝트들을 모으기 위해 임의의 타입의 통신 네트워크를 사용하는 것을 특징으로 한다.
이들 2개의 타입의 트랜잭션들은 대부분의 DRM 시스템들에 일반적으로 관련된 2개의 통제 지점들을 정의한다. 도 38은, DRM-인에이블 클라이언트 (3800) 가 적절한 DRM 라이센스 서비스 (3804) 로부터 DRM 라이센스 (3802) 를 요청하는, 대표적인 상호 작용들의 쌍을 도시한다. 도 38에 도시된 예에서, DRM 라이센스 (3802) 는 DRM 라이센스 서비스 (3804) 로부터, 콘텐츠 (3806) 에 대한 액세스를 제공하기 위해 DRM 라이센스 (3802) 가 평가되는 클라이언트 (3800) 에 전송된다.
통상적으로, DRM 시스템들은, 콘텐츠 액세스 및 오브젝트 트랜잭션들 양자가 콘텐츠에 대한 권한 부여되지 않은 액세스, 및 콘텐츠를 보호하는 오브젝트들의 생성을 방지하는 방식으로 수행되도록 요구한다. 그러나, 2개의 타입의 트랜잭션들에 대한 보안 문제점들은 본질적으로 상이하다. 예를 들어:
콘텐츠 액세스 트랜잭션들 (Content Access Transactions) 은 사람 중심 (human principal) 을 인증하는 것, 보안 렌더 카운트 (secure render count) 를 체크하는 것, 콘텐츠 보호 키를 도출하기 위해 DRM 라이센스를 평가하는 것, 등을 요구할 수도 있다. 콘텐츠 액세스 트랜잭션의 적법한 실행에 대한 최대의 위협은, 오브젝트들 및 내부의 데이터를 보호하는 변경-저항 경계의 침해이다.
오브젝트 트랜잭션들 (Object Transactions) 은 통상적으로, DRM 오브젝트를 요구하는 엔티티와, DRM 오브젝트를 제공할 수 있는 엔티티 간에 통신 채널을 수반한다. 따라서, 오브젝트 트랜잭션들은, 맨-인-더-미들 공격들, 재전송 공격들, 서비스 거부 공격들, 및 권한 부여되지 않은 엔티티들이 적법하게 점유하면 안되는 DRM 오브젝트들을 획득하는 공격들과 같은 통신-기반 위협들과 대면한다.
일반적으로, 오브젝트 트랜잭션들은 2개의 상호 작용하는 엔티티들의 인증, 그 엔티티들 간에 패스되는 메시지들의 보호, 및 트랜잭션의 권한 부여를 수반한다. 그러한 트랜잭션들의 주된 목적은, 콘텐츠 액세스 트랜잭션들이 수행될 수 있도록, 적법한 소스들로부터 무결성-보호되는 DRM 오브젝트들을 얻는 것이다. 콘텐츠 액세스 트랜잭션의 관점으로부터, 적법한 DRM 오브젝트들이 획득되게 하는 메커니즘들, 및 그 DRM 오브젝트들을 획득하는데 사용된 부수 정보는 본질적으로 무관계하고; 이들 메커니즘들은 콘텐츠 액세스 자체에는 보이지 않을 수 있다 (보이지 않는 것이 바람직하다). 일 바람직한 실시형태에서, 이러한 문제점들의 자연스러운 분리는 최상부에 구축된 애플리케이션들로부터, 신뢰되는 통신 프레임워크를 구별하는 계층화된 통신 모델을 초래한다.
도 38에 도시된 간략화된 라이센스 획득 및 소비의 예는 실시 애플리케이션들에서 일반적으로 중요하게 될 어떤 세부사항들을 불명료하게 한다. 예를 들어, 그 예는, DRM 라이센스를 요청하는 엔티티가, 권한 부여되지 않은 라이센스를 획득하기 위해, 또는 네트워크 대역폭 및 프로세싱 전력을 소모함으로써 적법한 클라이언트들에 대한 서비스를 거부하기 위해 시도하는 악성 엔티티가 아닌 실제로 적법한 DRM 클라이언트인지를, DRM 라이센스 서비스가 어떻게 검증하는지를 도시하지 않는다. 또한 그 예는, 민감한 정보가 클라이언트와 서비스를 접속하는 통신 채널들을 통해 이동할 때, 민감한 정보가 어떻게 기밀성 및 무결성을 위해 보호되는지를 도시하지 않는다.
이러한 예시적인 트랜잭션의 더 상세한 도면이 도 39에 도시된다. 도 39를 참조하면, 점선은 애플리케이션-계층 콘텐츠 렌더링 클라이언트 (3800) 및 DRM 라이센스 서버 (3804) 의 시점으로부터 논리적인 트랜잭션을 표현한다. 그 아래의 스택 (3900) 은 2개의 종단 점들 간의 신뢰되고 보호되는 전달을 보장하기 위해 사용되는 프로세싱의 계층들을 표현한다.
도 39에서, 렌더링 클라이언트 (3800) 는 DRM 라이센스 서버 (3804) 로부터 라이센스 (3802) 를 요청한다. 도면 내의 점선은, 원시 소스 및 정보의 최후 소비자가 콘텐츠 렌더링 클라이언트 (3800) 및 DRM 라이센스 서버 (3804) 임을 표시한다. 그러나, 실제로, 메시지 페이로드는 애플리케이션-계층 로직과, 2개의 종단 점들을 접속하는 보안되지 않은 통신 채널 (3902) 간에 개재된 프로세싱의 여러 계층들에 의해 실제로 핸들링 (handle) 될 수도 있다.
보안되지 않은 통신 채널로부터 애플리케이션 계층 컴포넌트들을 분리하는 프로세싱 계층들은 총괄하여 보안 스택이라 한다. 보안 스택은, 신뢰되는 종단 점들 간에 메시지들의 무결성-보호되는, 기밀 전달을 보장하는 보안 메시징 프레임워크로 생각될 수 있다. 계층화된 스택 모델은 다음과 같은 이점을 제공한다.
(1) 애플리케이션 계층 로직의 디자이너들은 종단 점들을 접속하는 밑에 있는 보안 통신 메커니즘들을 개발시키는 노력을 들일 필요가 없다. 신뢰되는 메시징 기반 구조 (infrastructure) 는, 디자인되면, 지원하는 애플리케이션 계층 로직과 무관하게 다수의 상이한 상황들에 배치될 수 있는 공통 디자인 패턴이다.
(2) 메시징 프레임워크 자체는, 전달하는 메시지들의 정확한 의미 (precise semantics) 에 대해 불가지론 (agnostic) 으로 유지할 수 있고, 통신 관련 공격들 및 메시징 종단 점들의 인증에 대한 공격들을 방지하는데 노력을 기울일 수 있다.
일 실시형태에서, 보안 스택은 아래에 설명된 바와 같이, 프로세싱의 여러 별개의 계층들로 이루어진다. 일 실시형태에서, '551 출원에서 설명된 서비스 결합 시스템들 및 방법들이 보안 스택의 동작은 일부 또는 전부를 제공하기 위해 사용될 수 있다.
인증
일 실시형태에서, 메시징 종단 점들은 인증될 수도 있다. 인증은, 소정의 종단 점이, 이 목적을 위해 신뢰되는 권한자에 의해 유효한 이름이 주어졌음을 다른 종단 점에 실증하는 프로세스이다. 이름 제공 (naming) 권한자는 트랜잭션에서 의존하는 종단 점에 의해 신뢰되어야 하고, 통상적으로 그러한 권한자를 확립하는 것은 신뢰되는 기술을 배치하는 조직에 의해 착수된다.
유효한 이름의 점유를 실증하기 위한 통상의 메커니즘은 공개 키 암호 및 디지털 서명들을 사용한다. 이러한 방법을 사용하여, 엔티티에 정보의 3개의 피스들이 제공된다:
(1) 엔티티에 대한 식별자를 제공하는, 구별된 이름 (distinguished name);
(2) 공개 키 및 비밀 개인 키로 이루어진, 비대칭 키 쌍 (asymmetric key pair);
(3) 공개 키의 홀더 (holder) 가 소정의 구별된 이름임을 어서팅 (assert) 하는, 디지털 서명된 증명 (certificate).
증명은 구별된 이름 및 개인 키를 바인딩 (bind) 한다. 정보의 피스를 서명하기 위해 개인 키를 사용하는 엔티티는 소정의 구별된 이름을 가지고 있다고 신뢰된다. 그 서명은 공개 키만을 사용하여 검증될 수 있다. 예를 들어, 인증은 X.509v3 표준에 기초할 수 있다.
일 실시형태에서, 증명된 개인 키의 점유를 실증할 수 있는 엔티티가 증명에서 표시되는 구별된 이름을 가지고 있다고 신뢰되므로, 정보를 서명하기 위해 사용되는 개인 키를 보호하는 것은 중요한 고려 사항이 된다. 사실상, 개인 서명 키를 사용하기 위한 능력은 구별된 이름에 의해 식별되는 엔티티의 경계들을 정의한다. 애플리케이션 계층에서, 전송자들 및 수신자들은 신뢰되는 상대방들로부터 발신하는 메시지들을 알 필요가 있다. 따라서, 일 실시형태에서, 애플리케이션 계층 로직 자체가 인증되는 엔티티의 일부인 것이 중요하다. 이러한 이유로, 일 실시형태에서, 신뢰 경계 내에 포함된 서브시스템이 엔티티의 개인 메시지 서명 키에 대한 액세스를 공유하는 척하도록, 보안 스택, 및 보안 스택에 의존하는 애플리케이션 계층들이 신뢰 경계 내에 포함되는 것이 바람직하다.
권한 부여
상술된 인증 메커니즘은, 분배된 메시징 종단 점들의 상대의 아이덴티티가 신뢰할 수 있는지를, 분배된 메시징 종단 점들에 입증한다. 다수의 애플리케이션들에서, 이러한 정보는 너무 조악하고, 특정한 트랜잭션들에 관한 폴리시 결정들을 하기 위해 종단 점들의 성능 및 특성에 관한 더 상세한 정보가 필요로 될 수도 있다. 예를 들어, 도 38의 콘텍스트에서, 콘텐츠 렌더링 클라이언트는, 인증된 종단 점과 통신하고 있는 것뿐만 아니라, 유효한 DRM 라이센스 오브젝트들을 제공할 수 있다고 간주된 서비스와 통신하는지 여부를 알 필요가 있을 수도 있다.
보안 스택의 실시형태들은, 권한 부여 메커니즘을 통해 인증된 엔티티들에 관한 더 미세-분화된 속성들에 기초하는 폴리시를 어서팅, 전달, 및 적용하기 위한 메커니즘을 제공한다. 이 메커니즘을 사용하여, 이미 인증 자격 증명들을 점유하는 엔티티들은, 엔티티의 구별된 이름과, 이름이 주어진 성능들의 세트를 연관시키는 롤 어서션들이 할당된다. 예를 들어, 롤 이름들은 DRM 클라이언트 및 DRM 라이센스 서버를 위해 정의될 수 있다.
이름이 주어진 롤들은 엔티티에 의해 소유 (hold) 되는 특정한 성능들을 전달하도록 의도된다. 실제로, 롤들은 엔티티의 구별된 이름과 롤 이름 간의 연관을 어서팅함으로써, 엔티티에 부속 (attach) 될 수 있다. 구별된 이름들과 키들을 연관시키는 인증 증명들과 함께, 일 실시형태에서, 권한 부여를 위해 사용되는 롤 어서션들은 이름 발행자와 상이할 수도 있는 신뢰되는 롤 권한자에 의해 서명된다. 엔티티 내부에서, 메시징 종단 점의 애플리케이션 계층에 대한 액세스를 승인하기 위한 조건으로서, 롤 어서션들은 인증 자격 증명들과 함께 검증된다.
엔티티는 구축되는 애플리케이션에 의해 요구되는 롤 속성들만큼 롤 속성들을 소유할 수도 있다. 도 40의 예는 다수의 롤들; DRM 클라이언트로서 기능하는 능력을 표시하는 하나의 롤, 및 2개의 서비스 롤들을 갖는 엔티티를 도시한다. 예를 들어, 하나의 엔티티는 동시에 DRM 클라이언트, DRM 오브젝트 제공자, 및 보안 데이터 제공자일 수도 있다. 일 실시형태에서, SAML 1.1이 엔티티 속성들에 관한 어서션들을 위해 사용된다.
메시지 보안
보안 스택의 하부 계층은, 메시지들을 위한 무결성, 기밀성, 및 신규성 보호를 제공하고, 재전송 공격들과 같은 통신 채널에 대한 공격들의 리스크를 완화하는, 메시지 보안 계층이다. 그 메시지 보안 계층에서:
Figure 112012048347665-pat00068
애플리케이션 계층 프로세스들 간의 메시지들은 엔티티의 개인 메시지 서명 키를 사용하여 서명되어, 무결성 보호 및 맨-인-더-미들 공격들에 대한 저항을 제공한다.
Figure 112012048347665-pat00069
메시지들은 목적지 엔티티에 의해 소유되는 공개 키를 사용하여 암호화된다. 이는 의도되지 않은 수령자들이 전송에서 가로챈 메시지들을 판독할 수 없도록 보증한다.
Figure 112012048347665-pat00070
논스 (nonce) 들 및 타임스탬프들이 메시지에 추가되어, 재전송 공격들에 대한 내성을 제공하고, 메시징 종단 점들 간에 라이브니스 (liveness) 의 증명을 용이하게 한다.
Figure 112012048347665-pat00071
DRM 엔진의 신뢰되는 시간을 업데이트하기 위한 서버 타임스탬프들을 사용한다.
일 예시적인 실시형태에서, AES 대칭 암호화, RSA 공개 키 암호, SHA-256 서명 다이제스트들, 및 다른 알고리즘들을 메시지들로 시그널링하기 위한 메커니즘들을 위한 지원이 제공된다.
15. 부트스트랩 ( bootstrap ) 프로토콜
일부 실시형태들에서, 부트스트랩 프로토콜이 초기 기밀 구성 데이터를 디바이스들 및 소프트웨어 클라이언트들과 같은 엔티티들에 전달하기 위해 사용된다. 예를 들어, 엔티티가 더 큰 네트워크 또는 시스템에 참가하기를 바라고, 암호 프로토콜들을 사용하여 다른 엔티티들과 통신하기를 바랄 때, 그 엔티티는 (공유된, 비밀, 및 공개) 키들의 세트를 포함하는, 개인화 데이터로 구성될 필요가 있을 수도 있다. 엔티티가 개인화 데이터로 사전-구성되는 것이 가능하지 않거나 또는 실시될 수 없을 때, 엔티티는 암호 프로토콜을 사용하여 자신을 "부트스트랩" 할 필요가 있다.
아래에서 설명되는 예시적인 프로토콜은 키들의 세트 및 다른 구성 데이터로 엔티티를 부트스트랩하기 위한 기초로서 공유된 비밀을 사용한다. 다음 섹션들에서, 다음 표기 (notation) 가 사용될 것이다:
Figure 112012048347665-pat00072
E (K, D) 는 키 K를 이용한 임의의 데이터 D의 암호화이다.
Figure 112012048347665-pat00073
D (K, D) 는 키 K를 이용한 임의의 암호화된 데이터 D의 복호화이다.
Figure 112012048347665-pat00074
S (K, D) 는 키 K를 이용한 임의의 데이터 D의 서명이다. 이는 공개 키 서명, 또는 MAC 일 수 있다.
Figure 112012048347665-pat00075
H (D) 는 데이터 D의 메시지 다이제스트이다.
Figure 112012048347665-pat00076
V (K, D) 는 키 K를 이용한 임의의 데이터 D에 대한 서명의 검증이다. 이는 공개 키 서명 또는 MAC 의 검증일 수 있다.
*
Figure 112012048347665-pat00077
CertChain (K) 는 공개 키 K와 연관된 증명 체인이다. K의 값은 체인 내의 제 1 증명에 포함된다.
Figure 112012048347665-pat00078
CertVerify (RootCert, CertChain) 는 (체인의 제 1 증명에서 발견되는 공개 키를 포함하는) 증명 체인 CertChain 이 루트 증명 RootCert 하에서 유효한지의 검증이다.
Figure 112012048347665-pat00079
A|B|C| ... 는 개별 바이트 시퀀스들 A, B, C, ... 을 접합시킴으로써 획득되는 바이트 시퀀스이다.
Figure 112012048347665-pat00080
CN (A) 은 A에 대한 정규 (canonical) 바이트 시퀀스이다.
Figure 112012048347665-pat00081
CN (A, B, C,...) 은 복합 필드들 A, B, C에 대한 정규 바이트 시퀀스이다.
1.38 초기 상태
1.38.1. 클라이언트
일 실시형태에서, 클라이언트는 (제조 시간 및/또는 펌웨어/소프트웨어에서 사전 로딩된) 다음의 부트스트랩 토큰들의 세트를 갖는다.
Figure 112012048347665-pat00082
부트스트랩 프로세스를 위한 신뢰의 루트인 하나 이상의 리드-온리 (read-only) 증명들: BootRootCertificate.
Figure 112012048347665-pat00083
하나 이상의 부트스트랩 인증 키들 (Bootstrap Authentication Keys): (공유된) BAK.
Figure 112012048347665-pat00084
(각각의 클라이언트에 고유한) 선택적인 비밀 부트스트랩 시드 생성 키 (Bootstrap Seed Generation Key) BSGK. 클라이언트가 랜덤 데이터의 양호한 소스를 갖는 경우에 이 시드는 필요하지 않다.
Figure 112012048347665-pat00085
기밀 키를 얻기 위해, 클라이언트는 임의의 정보, ClientInformation 를 부트스트랩 서비스에 제공할 필요가 있다 (예컨대, ClientInformation 은 디바이스의 일련 번호, 제조사의 이름, 등을 포함할 수 있다). 이 정보는 속성들의 리스트로 이루어진다. 각각의 속성은 (이름, 값) 쌍이다.
클라이언트는, 상이한 신뢰 도메인들을 요구할 수도 있는 상이한 부트 서버들로 부트 프로토콜에 참여할 수 있게 되기 위해, 다수의 BootRootCertificate 증명들 및 BAK 인증 키들로 구성될 수도 있다.
1.38.2. 서버
일 실시형태에서, 서버는 다음 토큰들을 갖는다.
Figure 112012048347665-pat00086
적어도 하나의 클라이언트의 부트스트랩 인증 키들: BAK (공유된 비밀).
Figure 112012048347665-pat00087
서명을 위해 사용된 공개/개인 키 쌍: (Es, Ds).
Figure 112012048347665-pat00088
루트 증명들: BootRootCertificate 중 하나 하에서 유효한, 증명 체인 ServerCertificateChain = CertChain (Es).
Figure 112012048347665-pat00089
암호화를 위해 사용된 공개/개인 키 쌍: (Ee/De).
1.39. 프로토콜 설명
부트스트랩 프로토콜의 일 예시적인 실시형태가 도 41에 도시되고 아래에서 설명된다. (예컨대, 서명 또는 증명 체인을 검증할 때) 프로세스 동안의 장애는 에러를 초래하고 프로토콜 진행을 중지하게 한다.
BootstrapRequestMessage
클라이언트는 부트스트랩 세션을 개시하기를 바라고 있음을 표시하는 요청을 서버에 전송하고, (예컨대, 프로토콜 버전, 프로파일, 등과 같은) 임의의 초기 파라미터들 및 (재전송 공격들을 방지하기 위한) 세션 ID, 및 참여할 수 있는 신뢰 도메인들의 리스트를 제공한다. 다음 테이블은 BootStrapRequestMessage 를 위한 예시적인 포맷을 도시한다:
Figure 112012048347665-pat00090
Figure 112012048347665-pat00091
Protocol 및 Version 메시지 속성들은 클라이언트가 사용하는 프로토콜 사양을 지정하고, Profile 필드는 암호 프로토콜들의 소정의 세트, 및 메시지들 및 데이터를 교환하기 위해 사용되는 인코딩 포맷들을 식별한다.
클라이언트는 그 클라이언트에 고유해야 하고 재사용되지 않아야 하는 SessionId를 선택한다. 예를 들어, 클라이언트를 위한 고유 ID, 및 증분 카운터 값은 고유 세션 ID를 생성하기 위한 방식으로서 사용될 수 있다.
일 실시형태에서, 클라이언트는 구성된 모든 신뢰 도메인들의 리스트를 또한 전송한다.
일 실시형태에서, 서버는 BootStrapRequestMessage 를 수신하고, 다음 단계들을 수행한다:
Figure 112012048347665-pat00092
클라이언트에 의해 요청된 지정된 Protocol, Version, 및 Profile 을 지원하는지를 체크한다.
Figure 112012048347665-pat00093
논스(Nonce) 를 생성한다 (매우 랜덤한 넘버).
Figure 112012048347665-pat00094
타임스탬프, 세션 토큰, 또는 세션 동안 잔존할 임의의 다른 서버-측 정보와 같은 정보를 운반하기 위해 Cookie 를 선택적으로 생성한다. 쿠키의 값은 서버에만 의미 있고, 클라이언트에 의해 불명료 (opaque) 데이터 블록으로서 고려된다.
Figure 112012048347665-pat00095
BootStrapRequestMessage 로부터 SessionId 의 값을 추출한다.
Figure 112012048347665-pat00096
챌린지: Challenge = [Nonce, Ee, Cookie, SessionId] 를 생성한다.
Figure 112012048347665-pat00097
Ds 를 이용하여 챌린지를 서명하기 위해 S (Ds, Challenge) 를 계산한다.
Figure 112012048347665-pat00098
ChallengeRequestMessage 를 구축하고 클라이언트에 응답으로 전송한다.
ChallengeRequestMessage
다음 테이블은 ChallengeRequestMessage 를 위한 예시적인 포맷을 도시한다:
Figure 112012048347665-pat00099
일 실시형태에서, ChallengeRequestMessage 를 수신한 후에, 클라이언트는 다음 단계들을 수행한다:
Figure 112012048347665-pat00100
증명 체인 ServerCertificateChain 이 루트 증명 BootRootCertificate 하에서 유효한지를 검증한다: CertVerif (BootRootCertificate, ServerCertificateChain).
Figure 112012048347665-pat00101
ServerCertificateChain 으로부터 공개 키 Es 를 추출한다.
Figure 112012048347665-pat00102
챌린지의 서명을 검증한다: V(Es, Challenge).
Figure 112012048347665-pat00103
BootRequestMessage가 전송되었을 때 SessionId가 세션을 위해 선택된 것과 일치하는지를 체크한다.
Figure 112012048347665-pat00104
ChallengeResponseMessage 를 구축하고 서버에 전송한다.
ChallengeResponseMessage
ChallengeResponseMessage 를 생성하기 위해, 클라이언트는 다음 단계들을 수행한다.
Figure 112012048347665-pat00105
2개의 다음 방법들 중 하나를 사용하여 세션 키 SK를 생성한다:
Figure 112012048347665-pat00106
보안 랜덤 키 생성기를 직접 사용한다.
Figure 112012048347665-pat00107
Nonce 및 BSGK 를 간접적으로 사용하여: HSK = H(BSGK|Nonce)를 계산하고, SK = HSK 의 처음 N 바이트들로 설정한다.
Figure 112012048347665-pat00108
[Challenge, ClientInformation, SessionKey] 를 포함하는 ChallengeResponse 오브젝트를 생성한다. 여기서, Challenge는, ServerEncryptionKey가 생략된, 이전에 수신된 ChallengeRequestMessage 로부터의 것이다.
Figure 112012048347665-pat00109
BAK를 이용하여 응답을 서명하기 위해, S(BAK, ChallengeResponse) 를 계산한다.
Figure 112012048347665-pat00110
서명된 ChallengeResponse 를 SK로 암호화한다: E(SK, [ChallengeResponse, S(BAK, ChallengeResponse)].
Figure 112012048347665-pat00111
서버의 공개 키 Ee 를 이용하여 SessionKey를 암호화한다.
Figure 112012048347665-pat00112
ChallengeResponseMessage 를 구축하고 서버에 전송한다.
Figure 112012048347665-pat00113
Figure 112012048347665-pat00114
서버는 BootstrapChallengeResponse 를 수신하고 다음 단계들을 수행한다:
Figure 112012048347665-pat00115
개인 키를 사용하여 세션 키 SK를 복호화한다: D(De, SessionKey).
Figure 112012048347665-pat00116
이전의 단계로부터의 세션 키 SK를 이용하여 ChallengeResponse를 복호화한다: D(SK, Challenge).
Figure 112012048347665-pat00117
챌린지의 서명을 검증한다: V(BAK, ChallengeResponse).
Figure 112012048347665-pat00118
세션 키 SK가 복호화하기 위해 사용된 것과 일치하는지를 체크한다.
Figure 112012048347665-pat00119
필요한 경우에, Cookie 및 Nonce 값들을 체크한다 (예컨대, 타임스탬프).
Figure 112012048347665-pat00120
BootRequestMessage가 전송되었을 때 SessionId가 세션을 위해 선택된 것과 일치하는지를 체크한다.
Figure 112012048347665-pat00121
BootstrapResponseMessage 를 구축하고 서버에 전송한다.
BootstrapResponseMessage
BootstrapResponseMessage 를 생성하기 위해, 서버는 다음 단계들을 수행한다:
Figure 112012048347665-pat00122
ChallengeResponseMessage 로 수신된 ClientInformation 을 파싱 (parse) 하고, 이 부트스트랩 요청을 위해 전송될 필요가 있는 클라이언트 구성 Data 를 생성하거나 또는 찾는다 (이는 클라이언트를 표현하는 노드에 대한 기밀 키들 (Ec/Dc) 을 포함할 수도 있다). 통상적으로, 서버는 클라이언트에 대한 정확한 정보를 검색하는데 도움을 주기 위해 Nonce 및 Cookie의 값을 사용할 것이다.
Figure 112012048347665-pat00123
SessionId 및 구성 Data를 이용하여 BootstrapResponse 를 생성한다.
Figure 112012048347665-pat00124
Ds를 이용하여 Data를 서명하기 위해 S(Ds, BootstrapResponse) 를 계산한다.
Figure 112012048347665-pat00125
서명된 BootstrapResponse 를 세션 키 SK를 이용하여 암호화한다: E(SK, [BootstrapResponse, S(Ds, BootstrapResponse)]).
Figure 112012048347665-pat00126
Figure 112012048347665-pat00127
1.40. 신뢰 도메인들
일 실시형태에서, 각각의 신뢰 도메인은 루트 증명 권한자 및 도메인에 대한 고유 이름을 포함한다. 클라이언트가 BootstrapRequest를 전송할 때, 클라이언트는 수락하기를 바라는 (즉, 클라이언트가 유효하다고 증명하는) 모든 신뢰 도메인을 식별한다. 서버는 지원하는 신뢰 도메인이 있는 경우에, 클라이언트에 의해 전송된 리스트로부터 신뢰 도메인을 선택한다.
1.41. 서명들
일 실시형태에서, 서명들이 메시지 페이로드들에서 사용될 때마다, 서명들은 메시지의 서명된 부분 (들) 에 포함된 데이터 필드들에 대한 정규 바이트 시퀀스에 걸쳐 계산된다. 정규 바이트 시퀀스는 필드 값들의 인코딩으로부터가 아니라, 필드 값들로부터 계산된다. 각각의 프로파일은 각각의 메시지 타입에 대한 필드들의 정규 바이트 시퀀스를 계산하기 위해 사용되는 알고리즘을 정의하는 것이 바람직하다.
1.42. 프로파일들
부트스트랩 프로토콜의 프로파일은 다양한 암호 기법 암호들 및 직렬화 포맷들에 대한 선택들의 세트이다. 각각의 프로파일은 고유한 이름을 갖는 것이 바람직하고, 다음의 선택을 포함한다:
Figure 112012048347665-pat00128
공개 키 암호화 알고리즘
Figure 112012048347665-pat00129
공개 키 서명 알고리즘
Figure 112012048347665-pat00130
비밀 키 암호화 알고리즘
Figure 112012048347665-pat00131
비밀 키 서명 알고리즘
Figure 112012048347665-pat00132
공개 키 인코딩
Figure 112012048347665-pat00133
다이제스트 알고리즘
Figure 112012048347665-pat00134
정규 오브젝트 직렬화
Figure 112012048347665-pat00135
증명 포맷
Figure 112012048347665-pat00136
최소 논스 사이즈
Figure 112012048347665-pat00137
메시지 정리 (marshal)
부록 A
다음은 다수의, 인터로킹 (interlocking) 서명들을 갖는 제어기 오브젝트의 예이다. 주의: 이 예에서, 콘텐츠 키는 암호화되지 않는다.
Figure 112012048347665-pat00138
Figure 112012048347665-pat00139
Figure 112012048347665-pat00140
부록 B
이 부록 B는 본원의 다른 부분에서 설명된 예시적인 옥토푸스 (Octopus) DRM 엔진을 사용하는 시스템의 일 실시형태에서 오브젝트들의 XML 인코딩을 제시한다. 특정한 애플리케이션에 대해, 애플리케이션-특정 XML 스키마 ("옥토푸스 XML 스키마") 는 아래에 보이는 XML 스키마를 임포트 (import) 하고, (예컨대, 파기를 위해 사용되는 확장들과 같은) 그 애플리케이션에 특정한 요소들을 추가함으로써 생성될 수 있다. 일 실시형태에서, XML에서 오브젝트들의 인코딩은 애플리케이션-특정 XML 스키마에 대해 확인될 수 있을 필요가 있다. 이들 XML 인코딩들에 대한 추가적인 가능한 제약조건들이 아래에서 발견될 수 있다.
*부록 B에서 예시되는 예에서, 모든 DRM 오브젝트들을 위한 기본 XML-스키마는 OctopusObjectType 이다. 이는 모든 오브젝트들이 속성들 및 확장들을 지원함을 의미한다. 각각의 옥토푸스 오브젝트의 타입은 이 기본 타입으로부터 도출된다. 이들 타입들은 예컨대, ContentKeyType에 대한 SecretKey 요소와 같은 다른 요소들을 모을 수도 있다.
이 예시적인 실시형태에서, 스쿠바 키 (Scuba Key) 분배 시스템 키들이 확장에 관하여 설명된다: ScubaKeys 요소는 확장 요소의 차일드가 될 것이다. 토르페도 (Torpedo) 확장을 갖는 파기 키들에 대해 동일하게 적용된다.
본원의 다른 부분에서 설명된 바와 같이, (예컨대, ContentKey, Protector, Controller, Control, Node, 및 Link와 같은) 상이한 종류의 옥토푸스 오브젝트들이 존재한다. 이들 오브젝트들은 <Bundle> 요소를 사용하여, 확장들과 함께 번들링 (bundle) 될 수 있다. 일 실시형태에서, 오브젝트들 또는 확장들이 <Bundle> 내에서 서명되는 경우에, 본원의 다른 부분에서 설명된 바와 같이 <Bundle>은 <Signature> 요소들을 포함할 것이다.
옥토푸스 XML 스키마 ( Octopus . xsd ):
Figure 112012048347665-pat00141
Figure 112012048347665-pat00142
Figure 112012048347665-pat00143
Figure 112012048347665-pat00144
Figure 112012048347665-pat00145
예시적인 애플리케이션-특정 스키마:
Figure 112012048347665-pat00146
Figure 112012048347665-pat00147
B.1. 추가적인 제약조건들
B.1.1. 노드들
일 실시형태에서, 다음 타입의 노드들이 정의된다:
Figure 112012048347665-pat00148
(예컨대, 디바이스 노드 또는 PC 소프트웨어 노드와 같은) 소정의 DRM 엔진의 루트 노드들인, 옥토푸스 퍼스널리티 노드들 (Octopus Personality node).
Figure 112012048347665-pat00149
사용자 노드들과 같은 다른 타입의 노드들, 또는 가입 노드들 또는 멤버쉽 노드들과 같은 사용자들의 그룹을 위한 노드들.
일 실시형태에서, 노드들은 (예컨대, 확장들 내에서 ScubaKeys와 같은) 키들을 포함하고, (예컨대, id, 속성들, 및 공개 키들과 같은) 노드의 공개 정보와 (예컨대, 비밀 및 개인 키들을 운반할) 그 개인 확장들을 분리할 수 있을 필요가 있다. 또한, 그 서명을 갖는 공개 노드가 그대로 (예컨대, 라이센스 서비스에 대한 요청의 파라미터로서) 엑스포트 (export) 될 수 있도록, (공개 및 개인) 부분당 하나의 서명이 존재할 것이다.
일 실시형태에서, 개인 확장들은 ExternalExtension 내에서 운반되고 서명될 것이다. 공개 노드 및 그 개인 확장들은 동일한 <Bundle> 요소 내에 패키징될 수 있거나, 또는 개별적으로 도착할 수 있다. 서명된 옥토푸스 퍼스널리티 노드의 예는 부록 B에 대한 부속물 A에서 아래에 주어진다.
B.1.1.1 속성들
일 실시형태에서, 노드 오브젝트의 각각의 XML 인코딩은 다음의 <Attribute> (들) 를 갖는 <AttributeList> 를 운반할 것이다:
옥토푸스 퍼스널리티들에 대해:
Figure 112012048347665-pat00150
다른 타입의 노드들에 대해:
Figure 112012048347665-pat00151
B.1.1.2 확장들
부록 B에 대한 부속물 A에서 보이는 바와 같이, 일 실시형태에서, 옥토푸스 퍼스널리티 노드들은 ScubaKeys (공유 및 기밀 키들 양자) 및 토르페도 (브로드캐스트 비밀 키) 에 대한 확장들을 운반한다. 다른 타입의 노드들은 스쿠바 공유 키들만을 운반한다.
모든 공유 키들은 <ExtensionList> 내의 <Extension> 내의 <Node> 요소 내부에서 운반된다. 다른 키들은 <Node> 요소의 외부에서 별개의 <Extension> 요소 내에서 운반된다.
일 실시형태에서, <ScubaKeys> 확장들은 <Node>에서 서명된다. 이 실시형태에서, <Node> 내부에서 <ScubaKeys> 를 운반하는 내부 <Extension>은 <ds:DigestMethod> 요소 뿐만 아니라 <ds:DigestValue> 요소를 포함할 필요가 있을 것이다. 외부 <Extension>에서 운반되는 개인 키들은 서명될 필요가 있을 것이고, 이는 전체 확장을 서명함으로써 이루어질 것이다. 동일하게, <Torpedo> 확장이 서명될 것이다.
B.1.2 링크들
일 실시형태에서, <Link> 요소의 <LinkTo> 및 <LinkFrom> 요소들은 <Id> 요소만을 포함하고 <Digest> 요소를 포함하지 않는다. <Control> 요소는 선택적이다. 부록 B에 대한 부속물 C는 서명된 링크 오브젝트의 예를 포함한다.
B.1.1.1 속성들
일 실시형태에서, 링크들은 필수 (mandatory) 속성들을 갖지 않는다. 이는 <AttributeList>가 요구되지 않고 순응 구현에 의해 무시될 것임을 의미한다.
B.1.1.2 확장들
이 부록 B에서 보이는 예시적인 실시형태에서, 링크들은 <Link> 내부에서 운반되는 <ScubaKeys> 내부 확장들을 갖고, 따라서 <ExtensionList> 요소는 필수이다. 또한, 링크 내의 <ScubaKeys> 확장은 서명되지 않고, 따라서 <ds:DigestMethod> 및 <ds:DigestValue> 요소가 <Extension> 내부에서 운반되지 않는다. 이 <ScubaKeys> 확장은 "From Node"의 공개 또는 비밀 스쿠바 공유 키를 갖는, "To Node"의 (<PrivateKey> 및 <SecretKey> 요소 내의) 개인/비밀 스쿠바 공유 키들의 암호화된 버전을 포함한다. 이 암호화는 XML 암호화 신택스를 사용하여 시그널링된다. 이 부록 B에서 예시되는 실시형태에서, <KeyData> 요소의 "인코딩" 속성, <PrivateKey> 및 <SecretKey>의 차일드는 "xmlenc"로 설정된다. 이 <KeyData> 요소의 차일드는 <xenc:EncryptedData> 요소일 것이다. 암호화 키의 이름은 <KeyInfo>/<KeyName> 요소에서 공시될 것이다.
일 실시형태에서, 암호화 키가 공개 키인 경우에:
Figure 112012048347665-pat00152
<KeyName> 요소는 키가 속하는 쌍의 이름이다.
Figure 112012048347665-pat00153
(예컨대, 개인 키와 같은) 암호화된 데이터가 공개 키를 이용하여 직접 암호화되기에 큰 경우에, 중개 (intermediary) 128 비트 비밀 키가 생성된다. 그 후, 데이터는 예컨대 aes-128-cbc를 사용하여 그 중개 키로 암호화되고, 중개 키는 (<EncryptedKey> 요소를 사용하여) 공개 키로 암호화된다.
XML 청크 (chunk) 는 다음과 같을 것이다:
Figure 112012048347665-pat00154
Figure 112012048347665-pat00155
B.1.3 라이센스 오브젝트들
이 부록 B에 대한 부속물 C는 서명된 라이센스의 예를 제공한다 (제 1 파기가 발생하기 전에, 아래의 ContentKey 섹션 참조).
B.1.3.1 보호기
부록 B에서 보이는 예시적인 실시형태에서, (예컨대, <ProtectedTargets> 요소 내부의) <ContentKeyReference> 요소 및 <ContentReference> 요소들은 <Id> 요소만을 포함하고, <Digest> 요소를 포함하지 않는다. 이 예시적인 실시형태에서, 보호기 오브젝트들은 필수 속성들 또는 확장들을 포함하지 않는다; <AttributeList> 및 <ExtensionList> 요소들은 선택적이고 무시될 것이다.
B.1.3.2 ContentKey
부록 B에서 보이는 예시적인 실시형태에서, ContentKey 오브젝트들은 필수 속성들 또는 확장들을 포함하지 않는다. 따라서, <AttributeList> 및 <ExtensionList> 요소들은 선택적이고 무시될 것이다.
일 실시형태에서, <ContentKey> 요소들은 콘텐츠를 복호화하기 위해 사용될 실제 키를 표현하는 <SecretKey> 요소를 포함한다. <SecretKey>와 연관된 <KeyData>가 암호화된다. 일 실시형태에서, <KeyData>의 "인코딩" 속성이 "xmlenc"로 설정되는 것은 필수이다.
일 실시형태에서, ContentKey 오브젝트들에 대한 2개의 별개의 경우들이 존재한다: (1) 디바이스 또는 PC 애플리케이션의 제 1 파기 전에: 이 경우에, <SecretKey> 요소에 의해 표현되는 콘텐츠 키 Kc는 콘텐츠가 바인딩된 (예컨대, 사용자와 같은) 엔티티의 (공개 또는 비밀) 스쿠바 키에 의해서만 암호화될 것이다. (2) 제 1 파기 후에, 콘텐츠 키가 맹그로브 (Mangrove) 브로드캐스트 암호화 기법에 따라 암호화된다. 그 후, 결과의 데이터는 콘텐츠가 바인딩된 엔티티의 (공개 또는 비밀) 스쿠바 키로 암호화된다. 이 경우에서, 슈퍼-암호화를 갖는다.
슈퍼-암호화의 경우에서 <EncryptedData> 요소를 암호화하기 위한 예시적인 방법들이 본원의 다른 부분에서 설명된다. 다음은 이를 어떻게 경우 b에 적용시키는지를 설명한다.
일 실시형태에서, 맹그로브 브로드캐스트 암호화 기법에 의한 콘텐츠 키 Kc의 암호화에 대한 xmlenc 신택스는:
Figure 112012048347665-pat00156
Figure 112012048347665-pat00157
(*) 는, 일 실시형태에서 또한 애플리케이션-특정 xml 스키마 호출 "kformat.xsd" 내의 <Torpedo> 확장의 <BroadcastKeyMethod> 알고리즘인, 맹그로브 브로드캐스트 암호화 기법을 식별하는 URL이다.
Figure 112012048347665-pat00158
(**) 는, 맹그로브 키 트리의 이름이다. 일 실시형태에서, 이 값은 kformat.xsd에서 정의되는 <BroadcastKey> 요소의 소스 속성과 동일해야만 한다.
Figure 112012048347665-pat00159
(***) 는, 맹그로브 브로드캐스트 키 알고리즘에 따른 콘텐츠 키 Kc의 암호화를 표현하는 ASN.1 시퀀스의 베이스64 인코딩된 값이다:
Figure 112012048347665-pat00160
일 실시형태에서, 상술된 <EncryptedData>의 바이트 시퀀스는 라이센스가 바인딩된 엔티티의 (공개 또는 비밀) 스쿠바 공유 키로 암호화된다. 공개 키가 사용되는 경우에, 동일한 협약들 (convention) 이 아래에서 설명되는 것 (예컨대, 공개 키에 의한 암호화 참조) 으로서 적용되고, <EncryptedData>의 바이트 시퀀스가 RSA 1024 공개 키에 대해 너무 큰 경우에, 중개 키가 필요로 된다. 그러한 ContentKey 오브젝트의 XML 인코딩의 예는 이 부록 B에 대한 부속물 D에서 발견될 수 있다.
B.1.3.3 제어기
일 실시형태에서, 제어기 오브젝트들은 필수 속성들 또는 확장들을 포함하지 않는다. 따라서, <AttributeList> 및 <ExtensionList> 요소들은 선택적이고 순응 구현에 의해 무시될 것이다.
일 실시형태에서, <DigestMethod> 요소들의 알고리즘 속성의 값은 항상 http://www.w3.org/2000/09/xmldsig#sha1이다.
일 실시형태에서, <ControlReference>는 <Digest> 요소를 가져야만 한다. <DigestValue> 요소는 참조된 제어의 다이제스트의 베이스64 인코딩을 포함해야만 한다.
일 실시형태에서, 제어기에 대한 서명이 PKI 서명 (rsa-sha1) 인 경우에, (<ControlledTargets> 요소들 내의) <ContentKeyReference> 요소들은 <Digest> 요소를 포함시킬 필요가 있고, <DigestValue> 요소는 ContentKey 오브젝트 내에 임베딩된 평문 (plain-text) 콘텐츠 키의 다이제스트를 포함해야만 한다.
B.1.3.4 제어
일 실시형태에서, 제어 오브젝트들은 필수 속성들 또는 확장들을 포함하지 않는다. 따라서, <AttributeList> 및 <ExtensionList> 요소들은 선택적이고 순응 구현에 의해 무시될 것이다.
일 실시형태에서, <ControlProgram> 요소의 타입 속성은 "plankton"으로 설정되고, <CodeModule> 요소의 byteCodeType 속성은 "Plankton-1-0"으로 설정된다.
부록 B -- 부속물 A : 서명된 옥토푸스 퍼스널리티 노드의 예
Figure 112012048347665-pat00161
Figure 112012048347665-pat00162
Figure 112012048347665-pat00163
부록 B -- 부속물 B : 서명된 옥토푸스 링크의 예
Figure 112012048347665-pat00164
Figure 112012048347665-pat00165
Figure 112012048347665-pat00166
Figure 112012048347665-pat00167
부록 B -- 부속물 D : 파기를 갖는 ContentKey 의 예
Figure 112012048347665-pat00168
부록 C
이 부록 C는 상술된 부트스트랩 프로토콜과 함께 사용하기 위한 단순 프로파일의 예를 보인다. 또한, 단순 정규 직렬화, 예시적인 XML 정리, 및 옥토푸스 부트스트랩 SOAP 웹 서비스를 위한 예시적인 WSDL이 제공된다.
단순 프로파일
일 실시형태에서, 다음과 같이 이루어진 단순 프로파일이 사용된다:
프로파일 이름 단순 프로파일
공개 키 암호화 알고리즘 http://www.w3.org/2001/04/xmlenc#rsa-1_5
공개 키 서명 알고리즘 http://www.w3.org/2000/09/xlmdsig#rsa-shal
비밀 키 암호화 알고리즘 http://www.w3.org/2001/04/xlmenc#aes128-cbc
비밀 키 서명 알고리즘 http://www.w3.org/2000/09/xlmdsig#hmac-shal
다이제스트 알고리즘 http://www.w3.org/2000/09/xlmdsig#shal
증명 포맷 x.509 (버전 3)
메시지 정리 단순 XML 정리 1.0
최소 논스 사이즈 16 바이트들
정규 오브젝트 직렬화 단순 정규 직렬화 1.0
단순 정규 직렬화 1.0
일 실시형태에서, 상술된 단순 프로파일에서 사용된 단순 정규 바이트 시퀀스는 메시지들 내의 오브젝트들의 필드들의 값들로부터 바이트들의 시퀀스들을 구축하는 것으로 이루어진다. 각각의 메시지 및 각각의 오브젝트는 하나 이상의 필드들로 이루어진다. 각각의 필드는 단순 필드 또는 복합 필드 중 하나이다.
단순 필드들은 4개의 타입들: 정수, 스트링, 바이트 시퀀스, 또는 필드들의 배열들 중 하나일 수 있다. 복합 필드들은 하나 이상의 서브-필드들로 이루어지고, 각각의 서브-필드는 간단하거나 또는 복합이다.
일 실시형태에서, 각각의 필드 타입에 대한 정규 바이트 시퀀스를 구축하기 위한 규칙들은 다음과 같다:
복합 필드들
필드 0 필드 1 필드 2 ...
정규 바이트 시퀀스는 각각의 서브-필드의 정규 바이트 시퀀스들의 접합이다 (선택적인 필드들은 생략되지 않지만, 선택적인 필드들을 위한 규칙에 따라 직렬화된다).
필드들의 배열들
필드 카운트 필드 0 필드 1 ...
빅-엔디안 (big-endian) 순서로 4바이트의 시퀀스로서 인코딩되는 필드 카운트에 이어서 각각의 필드의 정규 바이트 시퀀스가 뒤따른다. 필드 카운트가 0인 경우에, 4 바이트 필드 카운트에 뒤따르는 것은 없다 (이 경우에, 모든 4 바이트는 값 0을 갖는다).
정수
I0 I1 I2 I3
빅-엔디안 순서로, 4 바이트의 시퀀스로서 인코딩된 32 비트 부호 값.
스트링
바이트 카운트 바이트 0 바이트 1 ...
스트링은 8 비트 바이트들의 UTF-8 인코딩된 시퀀스에 의해 표현된다. 인코딩된 바이트 시퀀스의 바이트 카운트는 빅-엔디안 순서로 4 바이트의 시퀀스로서 인코딩된다. 바이트 카운트에 이어서, UTF-8 인코딩된 스트링의 바이트들의 시퀀스가 뒤따른다.
바이트 시퀀스
바이트 카운트 바이트 0 바이트 1 ...
바이트 카운트는 빅-엔디안 순서로 4 바이트의 시퀀스로서 인코딩된다 (바이트 시퀀스가 비어있거나, 또는 대응하는 필드가 생략된 경우에, 바이트 카운트는 0이고, 4 바이트 바이트 카운트에 뒤따르는 값은 없다). 각각의 바이트는 as-is 인코딩된다.
단순 XML 정리 1.0
스키마 SimpleBootProtocol.xsd
Figure 112012048347665-pat00169
Figure 112012048347665-pat00170
Figure 112012048347665-pat00171
예:
Figure 112012048347665-pat00172
Figure 112012048347665-pat00173
부트스트랩 SOAP 웹 서비스를 위한 WSDL
Figure 112012048347665-pat00174
Figure 112012048347665-pat00175

부록 D
오브젝트들에 대한 정규 바이트 시퀀스 (CBS) 를 계산하는 인코딩-중립 (encoding-neutral) 방식이 아래에서 제시되고, 바람직한 실시형태들에서, 오브젝트들을 디지털 서명하기 위한 사용을 위해 다이제스트들의 계산에서 사용된다. 이 바이트 시퀀스는 오브젝트들이 표현되거나 또는 송신되는 방식과 독립적이고, 따라서 (예컨대, XML, ANSI와 같은) 다수의 인코딩 포맷들, 프로그래밍 언어들, 등이 사용되는 시스템들의 전반에 걸쳐 동일한 다이제스트 및 서명 값들이 사용될 수 있게 한다.
1. 정규 바이트 시퀀스 알고리즘
*정규 바이트 시퀀스 알고리즘은 필드들의 값으로부터의 바이트들의 시퀀스들을 구축하는 것으로 이루어진다. 각각의 필드는 단순 타입 또는 복합 타입에 대한 값을 갖는다. 일부 필드들은 선택적이도록 특정될 수 있다 (그 필드는 존재하거나 또는 생략될 수도 있다).
일 실시형태에서, 단순 타입들은: 정수, 스트링, 바이트, 및 불 (boolean) 이다.
복합 타입들은 하나 이상의 서브-필드들로 이루어지고; 각각의 서브-필드는 단순 타입 또는 복합 타입에 대한 값을 갖는다. 복합 타입들은 이질적이거나 동질적이고, 이는 상이한 타입의 (즉, 이질적인) 하나 이상의 서브-필드 값들 (단순 또는 복합) 이 존재하거나, 또는 모두 동일한 타입의 (동질적인) 하나 이상의 서브-필드 값들이 존재한다는 의미이다.
필드의 정규 바이트 시퀀스는, 필드가 항상 존재할 때 인코딩 규칙을 필드의 값에 적용하거나, 또는 필드가 선택적으로 특정될 때 선택적인 필드들을 위한 인코딩 규칙을 적용시킴으로써 획득된다. 다음 인코딩 규칙 설명들에서, 용어 byte 는 8 비트 값 (옥테트) 을 의미한다.
1.1. 선택적인 필드들
선택적인 필드가 존재하는 경우에, 그 값은 필드 값의 정규 바이트 시퀀스가 뒤따르는 바이트 값 1로서 직렬화된다. 선택적인 필드가 생략되는 경우에, 그 값은 바이트 값 0으로서 직렬화된다.
1.2. 이질성 복합
정규 바이트 시퀀스는 각각의 서브-필드 값의 정규 바이트 시퀀스들의 접합이다 (선택적인 필드들은 생략되지 않지만, 선택적인 필드들을 위한 규칙에 따라 직렬화된다).
1.3. 동질성 복합
정규 바이트 시퀀스는, 각각의 서브-필드 값의 정규 바이트 시퀀스가 뒤따르는, 빅-엔디안 순서로 4 바이트의 시퀀스로서 인코딩된, 서브-필드 카운트이다. 서브-필드 카운트가 0인 경우에, 4 바이트 필드 카운트에 뒤따르는 것은 없다 (이 경우에, 모든 4 바이트는 값 0을 갖는다).
1.4. 정수
빅-엔디안 순서로, 4 바이트의 시퀀스로서 인코딩된, 32 비트 정수 값.
1.5. 스트링
바이트 카운트 바이트 0 바이트 1 ...
스트링들은 UTF-8 인코딩된 바이트 시퀀스에 의해 표현된다 (널-종료 (null-terminated) 되지 않는다). 스트링에 대한 정규 바이트 시퀀스는, (1) 빅-엔디안 순서로 4 바이트의 시퀀스로서 인코딩된 스트링의 바이트 카운트, 및 그에 뒤따르는 (2) 스트링의 바이트들의 시퀀스로 이루어진다.
1.6. 바이트
8 비트 값.
1.7. 불 ( Boolean )
8 비트 값: 거짓은 0, 및 참은 1.
2. 옥토푸스 오브젝트들에 대한 애플리케이션
일 실시형태에서, 옥토푸스 오브젝트에 대한 정규 바이트 시퀀스는, 오브젝트 모델에서 옥토푸스 오브젝트의 필드들이 정의된 순서의, 옥토푸스 오브젝트의 필드들의 각각의 정규 바이트 시퀀스들의 접합이다.
이질성 복합 타입들에 대해, 필드들의 순서는 타입 정의에서 특정된 것이다. 동질성 복합 타입들에 대해, 요소들의 순서는 다음 문단들에서 특정된다.
Figure 112012048347665-pat00176
속성들
오브젝트의 "속성들" 필드는 타입 "리스트"의 이름이 주어지지 않은 속성으로서 취급된다 (리스트는 이름이 주어진 속성들의 소팅 (sort) 되지 않은 컨테이너이다). 타입 "리스트"의 속성들의 값에 포함된 이름이 주어진 속성들은 그 속성들의 "이름" 필드에 의해 사전 편찬적으로 (lexicographically) 소팅된다. 타입 "배열"의 속성의 값에 포함된 이름이 주어지지 않은 속성들은 소팅되지 않는다 (그 속성들은 그들의 배열 순서로 직렬화된다).
Figure 112012048347665-pat00177
확장들
오브젝트의 내부 확장들은 그들의 'id' 필드에 의해 사전 편찬적으로 소팅된다. 일 실시형태에서, 내부 확장들에 대해, 'extensionData' 필드는 정규 바이트 시퀀스의 계산에서 사용되지 않는다. 그러한 확장들에 대해, 그 확장들이 서명의 목적을 위한 다이제스트의 계산에 포함될 필요가 있는 경우에, 그 확장들은 'extensionData' 내에서 운반되는, 실제 데이터의 다이제스트를 표현할 'digest' 필드를 포함할 것이다. 확장 데이터의 각각의 타입에 대해, 그 정규 바이트 시퀀스의 계산을 허용하는 정의가 주어질 것이다.
Figure 112012048347665-pat00178
제어기
ContentKey 참조들은 그들의 'id' 필드에 의해 사전 편찬적으로 소팅된다.
3. ScubaKeys
'publicKeys', 'privateKeys', 및 'secretKeys' 필드들 내의 키들은 그들의 'id' 필드에 의해 사전 편찬적으로 소팅된다.
4. 예
Class X {
int i;
int j;
}
class A {
int a[]
string s;
}
class B extends A {
{X optional_x;}
X x;
(string toDiscardInCano;)
string s2;
}
a[] = {7,8,9}, s = "Abc", x = {5,4}, s2 = '''', 및 optional_x는 존재하지 않는, class B의 인스턴스의 정규 바이트 시퀀스가 다음과 같이 직렬화된다.
3 7 8 9 3 UTF-8 로서 "Abc" 0 Cano(X) 0
4 바이트 4 바이트 4 바이트 4 바이트 4 바이트 3 바이트 1 바이트 8 바이트 4 바이트
Cano(X)는:
5 4
4 바이트 4 바이트
이다.
부록 E
제어 프로그램의 예가 아래에 제공된다. 이 예에서, 라이센스는, (등록 동안에 제공되는) 멤버쉽 상태 또는 (라이센스 전송 동안에 제공되는) 라이센스 상태가 (이 예시적인 실시형태에서 "시셸 (Seashell)" 이라 지칭되는) 상태 데이터베이스에서 발견될 수 있는 경우에, 플레이 행동이 승인될 수 있음을 표시한다. 라이센스는 또한, 피어 (peer) 로 하여금 라이센스 전송을 요청하도록 허용한다. 2개의 피어들이 소정의 프록시미티 내에 있는 경우에 이 전송은 승인될 것이다. 그 라이센스는 피어에 대한 라이센스 상태를 설정할 에이전트를 포함한다.
다음의 코드 파일들에서, "MovableDomainBoundLicense.asm" 은 메인 제어이고, "LicenseUtils/*" 는 라이센스를 위한 헬퍼들이며, "GenericUtils/*" 는 스트링의 길이의 계산, 스트링들의 비교, 스택의 취급, 등과 같은 기능들을 수행하는 일반 헬퍼들이며, "ExtendedStatusBlockParameters/*" 는 확장된 상태 블록 파라미터의 XML 설명, 및 XML로부터 컴파일된 일련의 바이트로서의 대응하는 표현을 포함한다.
E.1 MovableDomainBound . asm
Figure 112012048347665-pat00179
Figure 112012048347665-pat00180
Figure 112012048347665-pat00181
Figure 112012048347665-pat00182
Figure 112012048347665-pat00183
Figure 112012048347665-pat00184
Figure 112012048347665-pat00185
Figure 112012048347665-pat00186
E.2 LicenseUtils
E.2.1 LicenseStateUtils . asm
Figure 112012048347665-pat00187
Figure 112012048347665-pat00188
Figure 112012048347665-pat00189
E.2.2 MembershipUtils . asm
Figure 112012048347665-pat00190
Figure 112012048347665-pat00191
Figure 112012048347665-pat00192
Figure 112012048347665-pat00193
E.3 GlobalUtils
E.3.1 IntUtils . asm
Figure 112012048347665-pat00194
Figure 112012048347665-pat00195
E.3.2 PrintInt . asm
Figure 112012048347665-pat00196
Figure 112012048347665-pat00197
E.3.3 StackUtils . asm
Figure 112012048347665-pat00198
Figure 112012048347665-pat00199
E.3.4 StdLib . asm
Figure 112012048347665-pat00200
E.3.5 StrCmp . asm
Figure 112012048347665-pat00201
Figure 112012048347665-pat00202
E.4 ExtendedStatusBlock Parameters
E.4.1 TransferXStatusProximityCheckSucceeded . xml
Figure 112012048347665-pat00203
Figure 112012048347665-pat00204
Figure 112012048347665-pat00205
E.4.3 TransferXStatusProximityCheckSucceeded . asm
Figure 112012048347665-pat00206
Figure 112012048347665-pat00207
E.4.4 TransferXStatusProximityCheckFailed . asm
Figure 112012048347665-pat00208
전술한 설명이 명료함의 목적을 위해 일부 상세히 설명되었지만, 첨부된 청구항들의 범위 내에서 특정한 변화들 및 변경들이 이루어질 수도 있음은 명백하다. 본원에서 설명된 프로세스들 및 장치들 양자를 구현하는 다수의 대안 방식들이 존재함을 주의해야 한다. 따라서, 본 실시형태들은 예시로서 고려되어야 하고 한정하는 것으로서 고려되어서는 안되며, 본 발명이 본원에서 주어진 세부사항들로 제한되어서는 안되고, 첨부된 청구항들의 균등물들 및 범위 내에서 변경될 수도 있다.

Claims (8)

  1. 제 1 디바이스가 제 2 디바이스의 소정의 프록시미티 내에 있는지 여부를 결정하는 방법으로서,
    상기 제 1 디바이스가, 랜덤 또는 의사-랜덤 수 생성 기능 및 상기 랜덤 또는 의사-랜덤 수 생성 기능의 시드에 기초하여 랜덤 또는 의사-랜덤 수 쌍들의 세트를 발생시키는 단계;
    상기 제 1 디바이스가, 상기 제 2 디바이스로 암호화된 정보를 전송하는 단계로서, 상기 제 2 디바이스는 상기 암호화된 정보로부터 상기 랜덤 또는 의사-랜덤 수 쌍들의 세트를 도출할 수 있고, 상기 암호화된 정보는 적어도, 상기 랜덤 또는 의사-랜덤 수 생성 기능의 상기 시드의 암호화된 형식을 포함하는, 상기 암호화된 정보 전송 단계;
    상기 제 2 디바이스가, 상기 암호화된 정보를 복호화하는 단계;
    상기 제 2 디바이스가, 상기 시드 및 랜덤 또는 의사-랜덤 수 생성 기능에 기초하여 상기 랜덤 또는 의사-랜덤 수 쌍들의 세트를 도출하는 단계;
    상기 제 2 디바이스가, 상기 제 1 디바이스로 확인응답을 전송하는 단계;
    상기 제 1 디바이스가, 제 1 시간 값을 측정하는 단계;
    상기 제 1 디바이스가, 상기 랜덤 또는 의사-랜덤 수 쌍들의 세트로부터 랜덤 또는 의사-랜덤 수 쌍을 선택하는 단계;
    상기 제 1 디바이스가, 상기 선택된 랜덤 또는 의사-랜덤 수 쌍들의 세트로부터의 제 1 넘버를 상기 제 2 디바이스로 전송하는 단계;
    상기 제 2 디바이스가, 상기 제 1 넘버가 상기 선택된 랜덤 또는 의사-랜덤 수 쌍 내의 넘버라는 것이라는 것을 검증하는 단계;
    상기 제 2 디바이스가, 상기 선택된 랜덤 또는 의사-랜덤 수 쌍 내의 제 2 넘버를 상기 제 1 디바이스로 전송하는 단계; 및
    상기 제 1 디바이스가, 상기 제 2 넘버가 상기 선택된 랜덤 또는 의사-랜덤 수 쌍 내의 넘버라는 것이라는 것을 검증하는 단계; 및
    상기 제 1 디바이스가, 제 2 시간 값을 측정하는 단계를 구비하고,
    상기 제 1 시간 값은 상기 제 1 디바이스가 상기 제 2 디바이스로 상기 제 1 넘버를 전송하는 시간을 나타내고, 상기 제 2 시간 값은 상기 제 1 디바이스가 상기 제 2 디바이스로부터 상기 제 2 넘버를 수신하는 시간을 나타내는, 프록시미티 결정 방법.
  2. 제 1 항에 있어서,
    상기 제 1 디바이스가, 상기 제 1 시간 값과 상기 제 2 시간 값 간의 차이를 계산하는 단계; 및
    상기 제 1 디바이스가, 상기 차이를 임계값과 비교하는 단계를 더 구비하는, 프록시미티 결정 방법.
  3. 제 2 항에 있어서,
    상기 제 1 디바이스가, 상기 차이가 상기 임계값 보다 큰 경우, 상기 제 2 디바이스의 액세스를 거절하는 단계를 더 포함하는, 프록시미티 결정 방법.
  4. 제 2 항에 있어서,
    상기 제 1 디바이스가, 상기 차이가 상기 임계값 보다 작은 경우, 상기 제 2 디바이스의 액세스를 승인하는 단계를 더 포함하는, 프록시미티 결정 방법.
  5. 제 1 디바이스가 제 2 디바이스의 소정의 프록시미티 내에 있는지 여부를 결정하는 방법으로서,
    상기 제 1 디바이스가, 랜덤 또는 의사-랜덤 수 생성 기능 및 상기 랜덤 또는 의사-랜덤 수 생성 기능의 시드에 기초하여 랜덤 또는 의사-랜덤 수 쌍들의 세트를 발생시키는 단계;
    상기 제 1 디바이스가, 상기 제 2 디바이스로 암호화된 정보를 전송하는 단계로서, 상기 제 2 디바이스는 상기 암호화된 정보로부터 상기 랜덤 또는 의사-랜덤 수 쌍들의 세트를 도출할 수 있고, 상기 암호화된 정보는 적어도, 상기 랜덤 또는 의사-랜덤 수 생성 기능의 상기 시드의 암호화된 형식을 포함하는, 상기 암호화된 정보 전송 단계;
    상기 제 1 디바이스가, 상기 제 2 디바이스로부터, 상기 제 2 디바이스가 상기 랜덤 또는 의사-랜덤 수 쌍들의 세트를 도출했다는 확인응답을 수신하는 단계;
    상기 제 1 디바이스가, 제 1 시간 값을 측정하는 단계;
    상기 제 1 디바이스가, 상기 랜덤 또는 의사-랜덤 수 쌍들의 세트로부터 랜덤 또는 의사-랜덤 수 쌍을 선택하는 단계;
    상기 제 1 디바이스가, 상기 선택된 랜덤 또는 의사-랜덤 수 쌍들의 세트로부터의 제 1 넘버를 상기 제 2 디바이스로 전송하는 단계;
    상기 제 1 디바이스가, 상기 선택된 랜덤 또는 의사-랜덤 수 쌍 내의 제 2 넘버를 상기 제 2 디바이스로부터 수신하는 단계; 및
    상기 제 1 디바이스가, 상기 제 2 넘버가 상기 선택된 랜덤 또는 의사-랜덤 수 쌍 내의 넘버라는 것이라는 것을 검증하는 단계; 및
    상기 제 1 디바이스가, 제 2 시간 값을 측정하는 단계를 구비하고,
    상기 제 1 시간 값은 상기 제 1 디바이스가 상기 제 2 디바이스로 상기 제 1 넘버를 전송하는 시간을 나타내고, 상기 제 2 시간 값은 상기 제 1 디바이스가 상기 제 2 디바이스로부터 상기 제 2 넘버를 수신하는 시간을 나타내는, 프록시미티 결정 방법.
  6. 제 5 항에 있어서,
    상기 제 1 디바이스가, 상기 제 1 시간 값 및 상기 제 2 시간 값 간의 차이를 계산하는 단계; 및
    상기 제 1 디바이스가, 상기 차이를 임계값과 비교하는 단계를 더 포함하는, 프록시미티 결정 방법.
  7. 제 6 항에 있어서,
    상기 제 1 디바이스가, 상기 차이가 상기 임계값 보다 큰 경우, 상기 제 2 디바이스의 액세스를 거절하는 단계를 더 포함하는, 프록시미티 결정 방법.
  8. 제 6 항에 있어서,
    상기 제 1 디바이스가, 상기 차이가 상기 임계값 보다 작은 경우, 상기 제 2 디바이스의 액세스를 승인하는 단계를 더 포함하는, 프록시미티 결정 방법.
KR1020127015783A 2005-10-18 2006-10-18 디지털 권리 관리를 위한 방법 KR101285946B1 (ko)

Applications Claiming Priority (15)

Application Number Priority Date Filing Date Title
US72808905P 2005-10-18 2005-10-18
US60/728,089 2005-10-18
US77202406P 2006-02-09 2006-02-09
US60/772,024 2006-02-09
US79117906P 2006-04-10 2006-04-10
US74457406P 2006-04-10 2006-04-10
US60/791,179 2006-04-10
US60/744,574 2006-04-10
US79892506P 2006-05-08 2006-05-08
US74671206P 2006-05-08 2006-05-08
US60/798,925 2006-05-08
US60/746,712 2006-05-08
US83506106P 2006-08-01 2006-08-01
US60/835,061 2006-08-01
PCT/US2006/040898 WO2007047846A2 (en) 2005-10-18 2006-10-18 Methods for digital rights management

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020117030396A Division KR101285024B1 (ko) 2005-10-18 2006-10-18 디지털 권리 관리를 위한 방법

Publications (2)

Publication Number Publication Date
KR20120092155A KR20120092155A (ko) 2012-08-20
KR101285946B1 true KR101285946B1 (ko) 2013-08-23

Family

ID=37890788

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020087011852A KR101248296B1 (ko) 2005-10-18 2006-10-18 디지털 권리 관리를 위한 방법
KR1020127015783A KR101285946B1 (ko) 2005-10-18 2006-10-18 디지털 권리 관리를 위한 방법
KR1020117030396A KR101285024B1 (ko) 2005-10-18 2006-10-18 디지털 권리 관리를 위한 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020087011852A KR101248296B1 (ko) 2005-10-18 2006-10-18 디지털 권리 관리를 위한 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020117030396A KR101285024B1 (ko) 2005-10-18 2006-10-18 디지털 권리 관리를 위한 방법

Country Status (12)

Country Link
US (5) US20070172041A1 (ko)
EP (4) EP2124164A3 (ko)
JP (2) JP2009512096A (ko)
KR (3) KR101248296B1 (ko)
CN (2) CN102073819B (ko)
AP (1) AP2008004453A0 (ko)
AU (1) AU2006304655B2 (ko)
BR (1) BRPI0617490A2 (ko)
CA (1) CA2626244A1 (ko)
EA (2) EA012918B1 (ko)
IL (1) IL190957A (ko)
WO (1) WO2007047846A2 (ko)

Families Citing this family (349)

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

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100291709B1 (ko) * 1996-10-29 2001-06-01 모리시타 요이찌 사용조건에 따라 사용자가 배포된 애플리케이션 패키지를 사용하도록 허용하는 시스템 및 방법

Family Cites Families (218)

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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100291709B1 (ko) * 1996-10-29 2001-06-01 모리시타 요이찌 사용조건에 따라 사용자가 배포된 애플리케이션 패키지를 사용하도록 허용하는 시스템 및 방법

Also Published As

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

Similar Documents

Publication Publication Date Title
KR101285946B1 (ko) 디지털 권리 관리를 위한 방법
US9626667B2 (en) Digital rights management engine systems and methods
US20160224768A1 (en) Digital Rights Management Engine Systems and Methods
EP1455479B1 (en) Enrolling/sub-enrolling a digital rights management (DRM) server into a DRM architecture
US7370212B2 (en) Issuing a publisher use license off-line in a digital rights management (DRM) system
US20040158709A1 (en) Publishing digital content within a defined universe such as an organization in accordance with a digital rights management (DRM) system
CN101490686B (zh) 数字权利管理的方法
Abbadi Digital rights management for personal networks
MX2008005060A (en) Methods for digital rights management

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160627

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170628

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180627

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190627

Year of fee payment: 7