KR101265887B1 - 보호 컴퓨팅 환경을 제공하는 방법 및 장치 내에 보호 환경을 설정하는 방법 - Google Patents

보호 컴퓨팅 환경을 제공하는 방법 및 장치 내에 보호 환경을 설정하는 방법 Download PDF

Info

Publication number
KR101265887B1
KR101265887B1 KR1020077023842A KR20077023842A KR101265887B1 KR 101265887 B1 KR101265887 B1 KR 101265887B1 KR 1020077023842 A KR1020077023842 A KR 1020077023842A KR 20077023842 A KR20077023842 A KR 20077023842A KR 101265887 B1 KR101265887 B1 KR 101265887B1
Authority
KR
South Korea
Prior art keywords
environment
kernel
component
protected
certificate
Prior art date
Application number
KR1020077023842A
Other languages
English (en)
Other versions
KR20080008328A (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
Priority claimed from US11/116,598 external-priority patent/US20060242406A1/en
Priority claimed from US11/191,448 external-priority patent/US8074287B2/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080008328A publication Critical patent/KR20080008328A/ko
Application granted granted Critical
Publication of KR101265887B1 publication Critical patent/KR101265887B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • 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
    • 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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • 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
    • 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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

보호 컴퓨팅 환경을 제공하는 시스템 및 방법은 컴퓨팅 장치의 커널로부터 보호 환경 관리 컴포넌트를 분리하는 단계; 식별 정보를 상기 보호 환경 관리 컴포넌트의 일부로서 제공하는 단계; 및 개별화 정보를 상기 보호 환경 관리 컴포넌트의 일부로서 제공하는 단계를 포함한다.
Figure R1020077023842
보호 컴퓨팅 환경, 컴퓨팅 장치, 커널, 보호 환경 관리 컴포넌트, 갱신, 개별화

Description

보호 컴퓨팅 환경을 제공하는 방법 및 장치 내에 보호 환경을 설정하는 방법{RENEWABLE AND INDIVIDUALIZABLE ELEMENTS OF A PROTECTED COMPUTING ENVIRONMENT}
<관련 출원의 상호 참조>
본 출원은 2004년 4월 30일자로 출원된 미국 특허 출원 번호 10/835,951의 부분 연속 출원이며, 또한 2005년 4월 22일자로 출원된 미국 특허 가출원 번호 60/673,979의 이익을 청구하는 2005년 4월 27일자로 출원된 미국 특허 출원 번호 11/116,598의 부분 연속 출원이다.
본 발명은 보호 컴퓨팅 환경의 갱신 가능하고 개별화 가능한 요소에 관한 것이다.
본 예의 이들 및 다른 특징들 및 이점들은 첨부된 도면들을 참조하여 읽혀지는 아래의 상세한 설명으로부터 잘 이해될 것이다.
도 1은 시스템에 대한 공격의 지시로 통상의 컴퓨팅 환경에서 동작하는 미디어 컨텐츠를 처리하는 통상의 미디어 애플리케이션을 나타내는 블록도이다.
도 2는 미디어 컨텐츠를 처리하고 공격에 저항하는 보호 환경을 이용하는 신뢰 애플리케이션을 나타내는 블록도이다.
도 3은 보호 환경에 포함될 수 있는 신뢰 애플리케이션의 예시적인 컴포넌트 들을 나타내는 블록도이다.
도 4는 보호 환경을 이용하는 예시적인 신뢰 애플리케이션을 이용하는 서비스 제공자로부터 디지털 미디어 컨텐츠를 다운로드하기 위한 시스템을 나타내는 블록도이다.
도 5는 무허가 방식으로 컴퓨팅 환경 내에 일반적으로 존재하는 미디어 컨텐츠 및 다른 데이터에 액세스하도록 시도하는 사용자 또는 메커니즘에 의해 이용될 수 있는 예시적인 공격 벡터를 나타내는 블록도이다.
도 6은 미디어 컨텐츠 및 다른 데이터에 대한 무허가 액세스를 제한하는 보호 환경을 생성하고 유지하기 위한 프로세스를 나타내는 흐름도이다.
도 7은 예시적인 보안 컴퓨팅 환경을 생성하는 데 사용되는 예시적인 커널 컴포넌트 및 다른 컴포넌트를 나타내는 블록도이다.
도 8 및 9는 예시적인 보안 컴퓨팅 환경을 생성하기 위해 커널 컴포넌트를 로딩하기 위한 예시적인 프로세스를 나타내는 흐름도이다.
도 10은 일반적으로 공격에 저항하는 신뢰 애플리케이션을 형성하기 위해 예시적인 보호 환경에 애플리케이션을 로딩하는 보안 컴퓨팅 환경을 나타내는 블록도이다.
도 11은 보호 환경을 생성하고 보호 환경에 애플리케이션을 로딩하는 예시적인 프로세스를 나타내는 흐름도이다.
도 12는 보안 컴퓨팅 환경의 보안 상태를 주기적으로 검사하는 예시적인 보호 환경을 이용하는 예시적인 신뢰 애플리케이션을 나타내는 블록도이다.
도 13은 보안 컴퓨팅 환경의 보안 상태를 주기적으로 검사하기 위한 예시적인 프로세스를 나타내는 흐름도이다.
도 14는 보호 환경을 포함하는 보안 컴퓨팅 환경을 설정하기 위한 프로세스, 시스템 및 방법이 구현될 수 있는 예시적인 컴퓨팅 환경을 나타내는 블록도이다.
도 15는 개별 요소 또는 컴포넌트로서 분리된 커널의 보호 환경 관리부를 포함하는 예시적인 운영 체제 커널을, 예시적인 보안 컴퓨팅 환경의 생성 및 관리에 이용되는 다른 커널 컴포넌트와 함께 나타내는 블록도이다.
도 16은 리스트 조직에서 컴퓨팅 장치로 다운로드되는 리스트와 관련하여, 폐기 및 갱신의 개요를 나타내는 블록도이다.
도 17은 필요 또는 편의에 따라, 디스에이블될 컴포넌트에 대한 고유 식별자는 물론, 추가 정보를 지시하는 예시적인 리스트를 나타내는 블록도이다.
도 18은 다수의 리스트가 사용되는 일 실시예를 나타내는 블록도이다.
도 19는 미디어 컨텐츠 소유자들이 전역적 폐기 리스트와 함께 실시될 그들 자신의 리스트를 지정할 수 있는 추가적인 보안 특징을 나타내는 블록도이다.
도 20은 클라이언트가 갱신 리스트를 검색할 때, 또한 클라이언트가 디스에이블되었거나 폐기된 컴포넌트에 대한 대체 컴포넌트를 검색할 때 클라이언트와 서버 간의 상호작용을 나타내는 블록도이다.
도 21은 갱신 리스트를 검색하기 위한 예시적인 프로토콜을 나타내는 블록도이다.
도 22는 고유 식별자를 컴퓨팅 컴포넌트와 연관시키기 위한 예시적인 프로세 스를 나타내는 블록도이다.
도 23은 컴포넌트에 할당된 고유 식별자를 검증하기 위한 예시적인 프로세스를 나타내는 블록도이다.
도 24는 일반적인 디지털 권리 관리 시스템을 나타내는 블록도이다.
도 25는 완전한 장치 인증서를 가진 소비자 전자 장치, 컴포넌트 또는 시스템을 제조하는 통상의 방법을 나타내는 블록도이다.
도 26은 나중에 고유 장치 인증서의 생성을 가능하게 하는 일반 장치 템플릿을 가진 장치, 소프트웨어 컴포넌트 등을 제조하는 방법을 나타내는 블록도이다.
도 27은 장치 인증서 템플릿을 고유 장치 인증서로 변환할 수 있는 장치 인증서 개별화 또는 초기화 프로세스를 나타내는 블록도이다.
도 28은 장치 인증서 템플릿을 구성하는 섹션들을 나타내는 블록도이다.
도 29는 예시적인 XML 장치 인증서 템플릿을 나타내는 도면이다.
도 30은 예시적인 고유 장치 인증서를 생성하기 위한 장치 인증서 개별화 프로세스를 나타내는 블록도이다.
도 31은 장치 인증서 개별화 프로세스에 사용되는 예시적인 장치 인증서 챌린지를 구성하는 섹션들을 나타내는 블록도이다.
도 32는 예시적인 XML 장치 인증서 챌린지를 나타내는 도면이다.
도 33은 예시적인 XML 장치 인증서 응답을 나타내는 도면이다.
도 34는 장치 인증서 템플릿의 일 실시예에 존재할 수 있는 신뢰 체인 구조를 나타내는 블록도이다.
첨부 도면들에서 동일한 참조 번호는 동일한 요소를 지시하는 데 사용된다.
첨부 도면과 관련하여 아래에 제공되는 상세한 설명은 본 예의 설명으로 의도되며, 본 예들이 구성되거나 이용될 수 있는 유일한 형태를 나타내는 것을 의도하지 않는다. 본 설명은 예들의 기능들 및 도시된 예들과 관련하여 예들을 구성하고 동작시키는 단계들의 시퀀스를 설명한다. 그러나, 동일 또는 동등한 기능 및 시퀀스들이 다른 예들에 의해 달성될 수도 있다.
본 예들은 본 명세서에서 컴퓨터 운영 체제에서 구현되는 것으로 설명되고 도시되지만, 설명되는 시스템은 제한이 아니라 예로서 제공된다. 이 분야의 전문가들이 이해하듯이, 본 예들은 다양한 상이한 유형의 컴퓨터 시스템에서의 이용에 적합하다.
보안 컴퓨팅 환경은 미디어 컨텐츠, 다른 데이터 및/또는 전체 컴퓨팅 환경에 대한 무허가 액세스의 가능성을 줄이기 위해 함께 동작하는 요소들 또는 컴포넌트들을 포함할 수 있다. 그러나, 임의의 보안 또는 컨텐츠 보호 기술에서와 같이, 이러한 보호 시스템을 우회 및/또는 파괴하려는 시도가 있을 가능성이 높다. 보호 컴퓨팅 환경의 생성 및 관리, 컴포넌트들의 폐기 및 갱신 및 컴포넌트들의 개별화를 결합하는 후술하는 방법 및 시스템은 그러한 파괴에 대한 빠른 대응 및 치유를 제공하고 그들의 확산을 느리게 하기 위해 함께 동작할 수 있다.
아래는 보호 환경의 생성 및 관리를 위한 시스템 및 방법에 대한 설명이며, 보호 환경의 요소들 또는 컴포넌트들이 갱신 및/또는 개별화 가능하도록 보호 환경을 구성하는 방법을 나타내는 설명이 이어진다. 그 다음은 보호 환경의 컴포넌트들을 폐기 및 갱신하기 위한 시스템 및 방법의 설명이며, 보호 환경의 컴포넌트들을 개별화하기 위한 시스템 및 방법의 설명이 이어진다.
보호 컴퓨팅 환경의 생성 및 유지
아래의 설명은 보호 컴퓨팅 환경을 생성하고 유지하기 위한 시스템 및 방법을 제공한다. 보호 컴퓨팅 환경의 일례는 2005년 4월 27일자로 출원된 미국 특허 출원 번호 11/116,598에 제공되는데, 이 출원의 전체는 본 명세서에 참고로 반영되며 아래에 설명된다.
도 1은 시스템(101)에 대한 공격(107)의 지시로 통상의 컴퓨팅 환경(100)에서 동작하는 미디어 컨텐츠(106)를 처리하는 통상의 미디어 애플리케이션(105)을 나타내는 블록도이다. 통상의 컴퓨팅 환경(100)은 운영 체제("OS")(102)를 포함할 수 있는 퍼스널 컴퓨터(PC) 또는 소비자 전자(CE) 장치(101)에 의해 제공될 수 있다. 일반적인 운영 체제들은 종종 그들의 동작을 사용자 모드(103) 및 커널 모드(104)로 분할한다. 사용자 모드(103) 및 커널 모드(104)는 하나 이상의 애플리케이션 프로그램(105)에 의해 사용될 수 있다. 애플리케이션 프로그램(105)은 CD ROM 드라이브, 인터넷 접속 등과 같은 소정의 메커니즘을 통해 장치(101)에 전달될 수 있는 미디어 컨텐츠(106)를 처리하는 데 사용될 수 있다. 컨텐츠(106)의 일례는 오디오 및 비디오 정보를 재생하는 데 사용될 수 있는 미디어 파일들이다.
컴퓨팅 환경(100)은 일반적으로 하나 이상의 중앙 처리 유닛(CPU)과 함께 애플리케이션(105)의 동작을 용이하게 하는 운영 체제(OS; 102)를 포함할 수 있다. 많은 운영 체제(102)는 다수의 사용자가 CPU의 동작에 액세스하는 것을 허가할 수 있다. 다수의 사용자는 일반적으로 일반 사용자의 액세스 특권에서 관리자의 액세스 특권에 이르는 액세스 특권의 범위를 가질 수 있다. 관리자는 일반적으로 시스템 상에서 실행되는 애플리케이션(105), 사용자 모드(103) 및 커널(104)에 대한 액세스 특권의 범위를 갖는다. 이러한 컴퓨팅 환경(100)은 다양한 유형의 공격에 취약할 수 있다. 공격은 장치(101) 및 그의 컨텐츠(106)에 대한 액세스를 취득하려는 외부인의 시도뿐만 아니라, 공격자가 장치(101)에 대한 관리권을 갖는 것 또는 다른 유형의 사용자들이 그들을 승인한 모든 액세스 권리를 갖는 것을 포함할 수 있다.
도 2는 미디어 컨텐츠(106)를 처리하고 공격에 저항하는 보호 환경(203)을 이용하는 신뢰 애플리케이션(202)을 나타내는 블록도이다. 보호 환경(203)은 갱신 및/또는 개별화 가능한 요소들 또는 컴포넌트들을 포함할 수 있다. 본 명세서에서 사용되는 "신뢰 애플리케이션(trusted application)"이라는 용어는 보호 환경에서 동작하는 프로세스들을 이용하여 이들이 공격(205)에 저항하고, 처리되는 임의의 미디어 컨텐츠(106) 또는 다른 데이터에 대한 무허가 액세스를 제한하도록 하는 애플리케이션으로서 정의될 수 있다. 따라서, 보호 환경에서 동작하는 애플리케이션의 컴포넌트들 또는 요소들은 일반적으로, 무허가 액세스를 제한하고 공격에 저항하므로 "신뢰성 있는" 것으로 간주된다. 애플리케이션(202)은 신뢰 애플리케이션 자체로 간주되거나, 그의 프로세스들 및/또는 데이터의 일부를 보호하기 위해 다른 신뢰 애플리케이션을 이용할 수 있다.
예를 들어, 신뢰 미디어 재생기(202)는 미디어 컨텐츠(106)가 무허가 방식으로 액세스될 수 없도록 일반적으로 사용을 위해서만 허가되는 미디어 컨텐츠(106)를 재생하도록 설계될 수 있다. 이러한 신뢰 애플리케이션(202)은 컴퓨팅 환경(200)이 공격(205)에 저항하는 보호 환경(203)을 제공하는 것과 같이 필요한 보안 레벨을 제공할 수 없다면 미디어 컨텐츠(106)를 조작 및/또는 처리하지 못할 수 있다.
본 명세서에서 사용되는 "프로세스"라는 용어는 운영 체제 및/또는 컴퓨팅 환경의 커널 공간, 사용자 공간 및/또는 임의의 다른 공간에서 상주 및/또는 동작하는 프로그램의 인스턴스(실행가능 코드, 기계 명령어, 변수, 데이터, 상태 정보 등)로서 정의될 수 있다.
디지털 권리 관리 시스템(204) 등은 보호 환경(202)과 함께 이용될 수 있다. 디지털 권리 관리 시스템(204)의 이용은 단지 일례로서 제공되며, 보호 환경 또는 보안 컴퓨팅 환경과 함께 이용되지 않을 수도 있다. 일반적으로, 디지털 권리 관리 시스템은 제작이 비싸고 컴퓨팅 성능에 악영향을 미칠 수 있는 탬퍼 저항 소프트웨어(TRS)를 이용한다. 신뢰 애플리케이션(202)의 이용은 향상된 보호를 제공하는 데 필요한 TRS 기능의 양을 최소화할 수 있다.
이 기술 분야의 전문가들에게 공지된 다양한 메커니즘이 일반적인 디지털 권리 관리 시스템 대신에, 그에 더하여 또는 그와 함께 이용될 수 있다. 이들 메커니즘은 암호화/해독, 키 교환, 패스워드, 라이센스 등을 포함할 수 있지만 이에 제한되지 않는다. 따라서, 본 명세서에서 사용되는 디지털 권리 관리는 암호화된 미디어의 해독, 데이터에 액세스하기 위한 패스워드의 사용 또는 다른 탬퍼 저항 메커니즘과 같이 간단한 메커니즘일 수 있다. 이들 태스크를 수행하기 위한 메커니즘들은 매우 간단하고, 전체적으로 신뢰 애플리케이션(202)에 포함되거나, 신뢰 애플리케이션(202)과 다른 복잡한 시스템과 통신하는 인터페이스를 통해 액세스될 수 있다.
도 3은 보호 환경(203)에 포함될 수 있는 신뢰 애플리케이션(202)의 예시적인 컴포넌트들을 나타내는 블록도이다. 신뢰 애플리케이션(202)은 일반적으로 그의 서브 컴포넌트들(302-304)의 적어도 일부에 대해 보호 환경(203)을 이용한다. 신뢰 애플리케이션의 다른 컴포넌트(301)는 보호 환경을 이용하지 않을 수 있다. 공격 또는 무허가 액세스로부터의 향상된 보호 레벨을 요청할 수 있는 미디어 컨텐츠 또는 데이터의 처리에 수반되는 컴포넌트들(302-304)은 보호 환경(203) 내에서 동작할 수 있다. 보호 환경(203)은 단일 신뢰 애플리케이션(202), 또는 어쩌면 복수의 신뢰 애플리케이션에 의해 이용될 수 있다. 대안으로, 신뢰 애플리케이션(202)은 복수의 보호 환경을 이용할 수 있다. 신뢰 애플리케이션(202)은 또한 디지털 권리 관리 시스템(204)에 결합 및/또는 이를 이용할 수 있다.
도시된 예에서, 소스(302) 및 싱크(303)는 보호 환경(203)에서 동작하는 미디어 파이프라인(304)의 일부로서 도시되어 있다. 보호 환경(203)은 보호 및/또는 암호화된 컨텐츠(309)가 수신되고 해독되면 신뢰 애플리케이션(202) 및 그의 컴포넌트들이 컨텐츠(309)에 대한 무허가 액세스를 방지하는 것을 보장한다.
디지털 권리 관리 시스템(204)은 누가 컨텐츠에 대해 어떤 종류의 액세스를 취득하는지에 대한 기술 및 제어를 통해 신뢰 애플리케이션(202) 및 그가 처리하는 컨텐츠(309)에 대한 추가 보호 수단을 제공할 수 있다. 라이센스들(308), 장치 인증서들(311) 및 다른 보안 메커니즘들의 시스템을 통해, 컨텐츠 제공자는 일반적으로 암호화된 컨텐츠(309)가 적절히 허가된 장치로 전달되었고 컨텐츠(309)가 의도한 대로 사용된다는 확신을 가질 수 있다.
도 4는 보호 환경(203)을 이용하여 서비스 제공자(407)로부터 예시적인 신뢰 애플리케이션(202)으로 디지털 미디어 컨텐츠(410)를 다운로드하기 위한 시스템을 나타내는 블록도이다. 도시된 예에서, 신뢰 애플리케이션(202)은 2개의 장소(401, 403)에서 사용되는 것으로 도시되어 있다. 신뢰 애플리케이션(202)은 CE 장치(401) 또는 PC(403)에서 사용될 수 있다. 디지털 미디어(410)는 신뢰 애플리케이션(202)에 의한 사용을 위해 서비스 제공자(407) 및 인터넷(405)을 통해 다운로드될 수 있다. 대안으로, 디지털 미디어는 네트워크, CD 또는 DVD 디스크, 또는 다른 저장 매체와 같은 다른 메커니즘을 통해 신뢰 애플리케이션에 의해 이용가능하게 될 수도 있다. 또한, 디지털 미디어(410)는 디지털 권리 관리 시스템(204)의 형태를 취할 수 있는 해독키들, 라이센스들, 인증서 등의 시스템을 필요로 하는 암호화된 형태(309)로 제공될 수 있다. 신뢰 애플리케이션에 제공되는 데이터 또는 미디어 컨텐츠(410)는 보호, 즉 암호화 등이 되거나 되지 않을 수 있다.
일례에서, 신뢰 애플리케이션(202)은 보호 환경(203)과 함께 디지털 권리 관리(DRM) 시스템(204)을 이용할 수 있다. 이 경우, 신뢰 애플리케이션(202)은 일반적으로 컨텐츠의 사용을 정책을 통해 컨텐츠 제공자에 의해 허가된 것으로 제한함으로써 컨텐츠의 사용 정책을 승인하고 고수하도록 설계된다. 이것의 구현은, 일반적으로 컨텐츠 라이센스를 조회한 후 요청된 액션이 컨텐츠 상에 취해질 수 있는지의 여부에 대한 판정을 행하는 코드의 실행을 수반할 수 있다. 이 기능은 디지털 권리 관리 시스템(204)에 의해 적어도 부분적으로 제공될 수 있다. 디지털 권리 관리 시스템의 일례는 1999년 4월 12일자로 출원된 미국 특허 출원 번호 09/290,363, 2002년 6월 28일자로 각각 출원된 미국 특허 출원 번호 10/185,527, 10/185,278 및 10/185,511에 제공되어 있는데, 이들 출원은 그 전체가 본 명세서에 참고로 반영되어 있다.
CE 장치(401) 또는 PC(403)에서 이용할 수 있는 신뢰 애플리케이션(202)의 구축은 컨텐츠(309)를 해독하고 처리하는 신뢰 애플리케이션(202)이 악의적인 공격으로부터 "안전"할 수 있는 것을 보장하는 것을 포함할 수 있다. 따라서, 보호 환경(203)은 일반적으로 공격하기가 쉽지 않을 수 있는 환경을 지칭한다.
도시된 바와 같이, 신뢰 애플리케이션(202)은, 신뢰 애플리케이션을 또한 제공하는 PC(403)에 주기적으로 동기화될 수 있는 소비자 전자 장치(401)에서 동작한다. PC(403)는 또한 인터넷(405)에 결합(404)된다. 인터넷 접속은 디지털 미디어(410)가 서비스 제공자(407)에 의해 제공되는 것을 가능하게 한다. 서비스 제공자(407)는 라이센스 및 암호화된 미디어(406)를 인터넷(405)을 통해 신뢰 애플리케이션(202)에 전달할 수 있다. 암호화된 미디어가 전달되고 해독되면, 이 미디어는 다양한 형태의 공격에 취약할 수 있다.
보호 컴퓨팅 환경은 해커 등이 컨텐츠에 대한 무허가 액세스를 취득하는 것을 제한하는 환경을 제공한다. 해커는 시스템 관리자로서 동작하는 해커를 포함할 수 있다. 시스템 관리자는 일반적으로 컴퓨터 상에서 실행되는 실질적으로 모든 프로세스의 전적인 제어를 갖지만, 이러한 액세스는 바람직하지 않을 수 있다. 예를 들어, 시스템 사용자가 미디어 파일을 사용하기 위한 라이센스를 부여 받은 경우, 사용자와 다른 시스템 관리자가 그 미디어 파일에 액세스할 수 있는 것은 허용되지 않아야 한다. 관리자도 사용자도 허가된 권리의 한계를 벗어난 방식으로는 미디어에 액세스할 수 없어야 한다. 보호 환경은 컨텐츠를 해독하고 처리하는 코드가 해커에게 해독된 컨텐츠에 대한 액세스를 제공하지 않고 동작할 수 있는 프로세스의 생성에 기여한다. 보호 환경은 또한, 보호 컨텐츠에 대한 무허가 액세스를 취득할 수도 있는 관리자 및/또는 임의의 다른 사용자와 같은 특권 사용자에 대해 무허가 액세스를 제한할 수 있다. 보호는 일반적인 사용자 모드 프로세스(도 1, 103) 및 커널 모드 프로세스(도 1, 104), 및 이들이 처리하고 있을 수 있는 임의의 데이터의 보안을 포함할 수 있다.
커널은 프로세스를 포함하는 시스템 내의 객체들에 대한 로우 레벨 액세스를 가질 수 있으므로 공격에 이용될 수 있다. 커널에서 동작하는 프로세스는 공격에 취약할 수 있다. 예를 들어, 일반적인 운영 체제의 커널에서, 관리자에 의한 무제한 액세스를 허용할 수 있는 프로세스를 포함하는 객체들이 생성된다. 따라서, 일반적으로 전반적인 액세스 특권을 갖는 관리자는 실질적으로 모든 프로세스에 액세스할 수 있으며, 이에 따라 컨텐츠 제공자가 의도하지 않은 방식으로 컨텐츠를 가로챌 수 있다.
보호 컨텐츠는 컨텐츠의 허가된 이용을 지시하는 정책 또는 유사한 정보를 포함할 수 있다. 이러한 정책은 DRM 시스템 또는 다른 보안 메커니즘을 통해 실시될 수 있다. 일반적으로, 보호 컨텐츠에 대한 액세스는 정책을 실시할 수 있는 DRM 시스템 또는 다른 메커니즘을 통해 허가된다. 그러나, 시스템에 액세스할 수 있는 시스템 관리자 또는 해커는 컨텐츠 정책을 무시하도록 DRM 시스템 또는 메커니즘의 상태를 변경하는 방법을 찾을 수 있다.
보호 환경은 관리자와 같은 상위 특권 사용자에 대해서도 보호 환경 내에서 처리되고 있는 미디어 컨텐츠에 대한 무허가 액세스를 제한하는 보호 공간을 제공한다. 보호 환경이 디지털 권리 관리 시스템 등과 함께 사용될 때, 컨텐츠 제공자가 디지털 미디어가 무허가 액세스로부터 보호되도록 적절한 보안이 제공됨을 느낄 수 있고, 또한 컨텐츠의 정책이 미디어 컨텐츠와 연관될 수 있는 임의의 다른 데이터, 키 또는 보호 메커니즘과 함께 탬퍼링되는 것을 방지할 수 있는 신뢰 애플리케이션이 생성될 수 있다.
현재의 운영 체제(OS) 아키텍처는 일반적으로 미디어 애플리케이션 및 처리되고 있는 임의의 디지털 미디어 컨텐츠를 손상시킬 수 있는 다양한 가능한 공격 벡터를 제공한다. 예를 들어, OS에서 발생할 수 있는 공격들은 2가지 공격 유형, 즉 커널 모드 공격 및 사용자 모드 공격으로 그룹화된다.
첫 번째 공격 유형은 커널 모드 공격이다. 커널 모드는 일반적으로 운영 체제의 신뢰 기반으로 간주된다. 운영 체제 및 대부분의 시스템의 코어 및 주변 드라이버들은 커널 모드로 동작할 수 있다. 일반적으로, 커널에서 실행되는 임의의 코드는 커널에서 실행되는 임의의 다른 코드에 의한 침입에 취약한데, 이는 사용자 모드에서는 그렇지 않은 경향이 있다. 또한, 커널 모드로 실행되는 코드는 일반적으로 실질적으로 모든 사용자 모드 프로세스에 대한 액세스를 갖는다. CPU는 또한 다양한 코드 유형에 대해 특권 레벨을 제공할 수 있다. 커널 모드 코드는 일반적으로 그러한 CPU에 의해 최상위 레벨의 특권을 할당받아, 일반적으로 시스템에 대한 전반적인 액세스를 제공받게 된다.
두 번째 유형의 공격은 사용자 모드 공격이다. 사용자 모드로 실행되는 코드는 그가 할당받은 특권 레벨에 따라 시스템에 의해 신뢰 코드로 간주되거나 간주되지 않을 수 있다. 이러한 특권 레벨은 그가 동작하고 있는 사용자 콘텍스트 또는 계정에 의해 결정될 수 있다. 관리자 계정의 콘텍스트에서 실행되는 사용자 모드 코드는 시스템 상에서 실행되는 다른 코드에 대한 전반적인 액세스를 가질 수 있다. 또한, 사용자 모드로 실행되는 코드는 하나의 사용자가 다른 사용자의 프로세스에 액세스하는 것을 방지하도록 분할될 수 있다.
이러한 공격들은 특정 공격 벡터들로 더 분할될 수 있다. 보호 환경은 일반적으로 이들 공격 벡터 중 하나 이상을 통해 취득될 수도 있는 무허가 액세스를 방지하도록 설계된다. 보호 환경은 프로세스 생성, 악의적인 사용자 모드 애플리케이션, 악의 코드의 프로세스로의 로딩, 악의 커널 코드, 무효 신뢰 허가서 및 외부 공격 벡터를 포함할 수 있는 공격 벡터들을 방지할 수 있다.
프로세서 생성은 가능한 공격 벡터이다. 운영 체제는 일반적으로 부모 프로세스가 자식 프로세스를 생성하는 것을 허가하는 "프로세서 생성" 메커니즘을 포함한다. 악의적인 부모 프로세스는 프로세스 생성 코드를 변경함으로써 또는 그가 생성하는 데이터를 변경함으로써, 생성되고 있는 자식 프로세스에 무허가 변경을 행할 수 있다. 이것은 악의적인 부모 프로세스에 의해 생성된 자식 프로세스에 의해 처리될 수 있는 디지털 미디어를 손상시키는 결과를 낳을 수 있다.
악의적인 사용자 모드 애플리케이션은 가능한 공격 벡터이다. 운영 체제는 일반적으로 관리자 레벨 특권을 포함한다. 관리자 특권으로 실행되는 프로세스들은 많은 운영 체제 메커니즘에 대해, 그리고 컴퓨터 상에서 실행되는 거의 모든 프로세스에 대해 무제한 액세스를 가질 수 있다. 따라서, 예를 들어 윈도우에서, 관리자 특권을 이용하여 실행되는 악의적인 사용 모드 애플리케이션은 컴퓨터 상에서 실행되는 많은 다른 프로세스에 대한 액세스를 취득할 수 있으며, 따라서 디지털 미디어를 손상시킬 수 있다. 마찬가지로, 임의의 사용자의 콘텍스트에서 동작하는 프로세스들은 동일 콘텍스트에서 동작하는 임의의 악의 프로세스에 의해 공격받을 수 있다.
악의 코드의 보안 프로세스로의 로딩은 가능한 공격 벡터이다. 악의 코드를 프로세스에 첨부 또는 추가하는 것이 가능할 수 있다. 이러한 손상된 프로세스는 신뢰될 수 없으며, 변경된 프로세스에 의해 처리되고 있는 임의의 미디어 컨텐츠 또는 다른 데이터에 대한 무허가 액세스를 취득할 수 있다.
악의 커널 모드 코드는 가능한 공격 벡터이다. 운영 체제는 일반적으로 특권의 "시스템 레벨"을 포함한다. 예를 들어, 윈도우에서, 커널 모드로 실행되는 모든 코드는 일반적으로 시스템으로서 실행되고 있으며, 따라서 최대 특권을 가질 수 있다. 그 통상의 결과는 커널 모드로 실행되는 드라이버들이 예를 들어 임의의 사용자 모드 애플리케이션을 공격할 최대의 기회를 가질 수 있다는 것이다. 이러한 악의 커널 모드 코드에 의한 공격은 디지털 미디어를 손상시킬 수 있다.
무효 신뢰 허가서(TA)는 가능한 공격 벡터이다. TA는 미디어 라이센스의 검증에 참여한 후, 디지털 미디어의 컨텐츠를 "언로킹"할 수 있다. TA는 미디어 유형 또는 포맷에 고유할 수 있으며 미디어 제공자들 또는 그들의 파트너들에 의해 구현될 수 있다. 따라서, TA는 플러깅될 수 있고, 그리고/또는 동적 링크 라이브러리(DLL) 등으로 제공될 수 있다. DLL은 악의 코드를 포함하는 실행가능 코드에 의해 로딩될 수 있다. TA가 미디어가 적절히 이용되는 것을 보장하기 위해서는, 그가 실행되고 있는 프로세스가 안전하다는 것을 보장할 수 있어야 한다. 그렇지 않은 경우, 디지털 미디어는 손상될 수 있다.
외부 공격은 또 하나의 가능한 공격 벡터이다. 시스템을 공격하기 위해 시스템에서 실행되는 악의 코드를 필요로 하지 않는 한 세트의 공격이 존재한다. 예를 들어, 프로세스에 디버거를, 또는 기계에 커널 디버거를 첨부하는 것, 디스크 상의 이진 파일에서 민감한 데이터를 찾는 것 등은 모두 디지털 미디어 또는 디지털 미디어에 액세스할 수 있는 프로세스를 발견하고 손상시키기 위한 가능한 메커니즘이다.
도 5는 무허가 방식으로 컴퓨팅 환경(100)에 일반적으로 존재하는 미디어 컨텐츠 및 다른 데이터(500)에 액세스하려고 시도하는 사용자 또는 메커니즘에 의해 이용될 수 있는 예시적인 공격 벡터들(507-510)을 나타내는 블록도이다. 보호 환경은 신뢰 애플리케이션들 및 이들이 처리하는 데이터에 대한 무허가 액세스가 제한되고 공격에 대한 저항이 제공되도록 이들 공격 벡터를 방지할 수 있다. 이러한 공격들은 실행가능 코드를 포함할 수 있는 시스템 또는 메커니즘의 사용자에 의해 수행될 수 있다. 미디어 애플리케이션(105)은 도면의 중심에 도시되며, 공격 벡터들(507-510)은 애플리케이션(105)에 의해 저장 및/또는 처리되고 있는 민감한 데이터(500)의 액세스에 집중하는 경향이 있다.
가능한 공격 벡터(509)가 악의 사용자 모드 애플리케이션(502)을 통해 개시될 수 있다. 예시적인 운영 체제 아키텍처에서, 프로세스의 부모 및 관리적 특권을 가진 임의의 프로세스 양자는 일반적으로 미디어 컨텐츠를 처리하는 프로세스와 같은 다른 프로세스들 및 이들이 처리하는 데이터에 대한 무제한 액세스를 갖는다. 이러한 미디어 컨텐츠에 대한 액세스는 허가되지 않을 수 있다. 따라서, 보호 환경은 신뢰 애플리케이션 및 그가 처리하는 미디어 컨텐츠가 다른 사용자 모드 애플리케이션들에 의한 공격에 저항하는 것을 보장할 수 있다.
가능한 공격 벡터(508)는 악의 코드(503)의 프로세스(501)로의 로딩이다. 외부로부터의 공격에 저항하는 보안 프로세스를 갖는 것은 일반적으로 내부에서 실행되는 코드가 프로세스를 형성하는 것만큼만 안전하다. DLL 및 다른 코드가 일반적으로 실행을 위해 프로세스에 로딩되는 경우, 로딩되는 코드가 프로세스에 로딩되기 전에 프로세스 내에서 실행될 것으로 믿어지는 것을 보장할 수 있는 메커니즘이 보호 환경에서 제공될 수 있다.
가능한 공격 벡터(510)는 악의 커널 모드 코드(504)를 통한다. 커널 모드(104)로 실행되는 코드는 일반적으로 최대 특권을 갖는다. 그 결과는 커널 모드로 실행되는 드라이버들이 다른 애플리케이션들을 공격할 많은 기회를 가질 수 있다는 것일 수 있다. 예를 들어, 드라이버는 다른 프로세스에서 메모리에 직접 액세스할 수 있다. 이에 대한 결과는 드라이버가 실행시 해독된 "암호화된 미디어 컨텐츠"(도 3, 309)를 포함할 수 있는 프로세스 메모리에 대한 액세스를 취득할 수 있다는 것이다. 커널 모드 공격은 커널에서 실행되는 코드가 이 예에서 제공되는 바와 같이 비악의적인 코드임을 보장함으로써 방지될 수 있다.
가능한 공격 벡터(507)는 시스템(100)에 대한 외부 공격(506)에 의한다. 이 그룹은 일반적으로 악의 코드가 시스템(100)에서 실행되는 것을 필요로 하지 않는 공격들의 세트를 나타낸다. 예를 들어, 시스템 상의 애플리케이션 및/또는 프로세스에 디버거를 첨부하는 것, 민감한 데이터를 위해 기계를 검색하는 것 등이 있다. 보호 환경은 이러한 유형의 공격에 저항하도록 생성될 수 있다.
도 6은 미디어 컨텐츠 및 다른 데이터에 대한 무허가 액세스를 제한하는 보호 환경을 생성하고 유지하기 위한 프로세스(600)를 나타내는 흐름도이다. 시퀀스(600)는 컴퓨터 시스템이 시작될 때(60) 시작되어, 운영 체제의 커널이 로딩되고 커널 보안 플래그가 초기값으로 설정된다(604). 프로세스는 일반적으로 보호 환경이 생성되고 일반적으로 애플리케이션이 그 안에 로딩되는(606) 시간을 통해 계속된다. 프로세스는 시스템이 보안 프로세스가 필요한 시간을 통해 안전하게 유지되는 것을 보장하려고 시도하는 보호 환경을 통한 주기적 검사(608)를 포함한다.
본 명세서에서 사용되는 "커널"이라는 용어는 컴퓨팅 환경, 시스템 또는 장치에 대한 운영 체제의 중심 모듈로서 정의된다. 커널 모듈은 컴퓨터 실행가능 명령 및/또는 전자 논리 회로의 형태로 구현될 수 있다. 일반적으로, 커널은 메모리 관리, 프로세스 및 태스크 관리 및 컴퓨팅 환경의 저장 매체 관리를 담당한다. 본 명세서에서 사용되는 "커널 컴포넌트"라는 용어는 커널의 일부를 구성하는 기본 제어 메커니즘, 모듈, 컴퓨터 실행가능 명령 및/또는 전자 논리 회로로 정의된다. 예를 들어, 커널 컴포넌트는 완전 동작 커널을 구축하기 위해 다른 커널 컴포넌트들의 로딩을 담당할 수 있는 "로더"일 수 있다.
보호 환경을 생성하고 유지하는 프로세스를 요약하기 위하여,
1. 블록 602는 컴퓨터 시스템의 시동을 나타낸다. 이것은 일반적으로 부트 프로세스로서 알려진 것을 시작하며, 디스크 또는 소정의 다른 저장 매체로부터의 운영 체제의 로딩을 포함한다.
2. 일반적으로 부트 프로세스 동안의 최초 동작들 중 하나는 커널 및 그의 컴포넌트들의 로딩이다. 이 예는 커널 컴포넌트들의 검증, 및 모두가 안전한 것으로 성공적으로 검증되는 경우에 커널이 안전하다는 것을 지시하는 플래그의 설정을 제공한다. 이것은 블록 604에 도시되어 있다.
3. 컴퓨터 시스템이 완전하게 동작하는 것으로 간주된 후, 사용자는 보호 환경을 필요로 할 수 있는 신뢰 미디어 재생기와 같은 애플리케이션을 시작할 수 있다. 이 예는 블록 606에 도시된 바와 같이 보안 커널에 보호 환경에서 동작하는 애플리케이션을 제공한다.
4. 보호 환경이 생성되고, 애플리케이션의 프로세스들 중 하나 이상이 그 안에 로딩되어 동작하고 있는 경우, 신뢰 환경은 블록 608에 도시된 바와 같이 커널 보안 플래그를 주기적으로 검사하여 커널이 안전하게 유지되는 것을 보장할 수 있다. 즉, 신뢰 애플리케이션이 동작을 시작하는 시점으로부터, 새로운 커널 컴포넌트가 로딩될 때마다를 포함하여 임의의 무허가 커널 컴포넌트가 로딩되었는지를 판정하기 위한 검사가 주기적으로 수행될 수 있다. 이러한 무허가 커널 컴포넌트는 신뢰 애플리케이션 및 그가 처리하고 있을 수 있는 데이터를 공격할 수 있다. 따라서, 그러한 임의의 컴포넌트가 로딩되는 경우, 커널 보안 플래그가 적절히 설정될 수 있다.
도 7은 예시적인 보안 컴퓨팅 환경(200)을 생성하는 데 사용되는 예시적인 커널 컴포넌트(720-730) 및 다른 컴포넌트(710-714)를 나타내는 블록도이다. 이 도면은 일반적으로 디스크 등에 저장되는 여러 컴포넌트(710-730)를 포함하는 컴퓨터 시스템을 나타내는데, 이들 컴포넌트 중 여러 개는 컴퓨터가 시동될 때 운영 체제의 커널을 형성하는 데 사용된다. 화살표 604는 커널 컴포넌트들을 메모리에 로딩하여 시스템의 동작 커널을 형성하는 프로세스를 나타낸다. 로딩된 커널(750)은 그의 다양한 컴포넌트(751-762), 및 커널이 보호 환경에 대해 안전한 것으로 간주되는지의 여부를 나타내는 커널 보안 플래그(790)를 포함하는 것으로 도시되어 있다. "플래그"로서 기술되고 있는 커널 보안 플래그(790)는 제한적인 의미가 아니며, 부울 변수로서 또는 보다 복잡한 데이터 구조 또는 메커니즘으로서 구현될 수도 있다. 보안 컴퓨팅 환경(200) 및/또는 커널(750)의 다양한 컴포넌트 또는 요소들은 갱신 및/또는 개별화될 수 있다.
커널 컴포넌트들(720-730)은 일반적으로 "서명"되며, 이들이 요구되는 바로 그 컴포넌트들이고 이들이 변경되지 않았고 그리고/또는 악의가 없다는 것을 커널이 검증하는 것을 허가할 수 있는 인증서 데이터(738)를 포함할 수 있다. 서명 블록 및/또는 인증서 데이터(738)가 각각의 커널 컴포넌트(720-730) 및/또는 각각의 로딩된 커널 컴포넌트(760, 762) 내에 존재할 수 있다. 서명 및/또는 인증서 데이터(738)는 각 컴포넌트에 고유할 수 있다. 서명 및/또는 인증서 데이터는 후술하는 바와 같이 보호 환경의 생성 및 유지에 이용될 수 있다. 일반적으로, 컴포넌트는 컴포넌트의 소스를 안전하게 식별하고 그리고/또는 그가 탬퍼링되었을 수 있는지를 지시하는 것과 같은 방식으로 그의 제공자에 의해 "서명"된다. 서명은 "헤더 이미지 해시"로도 종종 지칭되는 컴포넌트의 헤더의 해시로서, 또는 다른 기술을 이용하여 구현될 수 있다. 컴포넌트가 신뢰될 수 있는지를 결정하는 데 사용될 수 있는 통상의 인증서 또는 인증서 체인도 컴포넌트에 포함될 수 있다. 서명 및/또는 인증서 데이터(738)는 일반적으로 공개적인 사용을 위해 배포되기 전에 컴포넌트에 추가된다. 이 분야의 전문가들은 이러한 기술들 및 이들의 이용에 친숙할 것이다.
일반적인 컴퓨터 시스템이 시동되거나 "부팅"될 때, 운영 체제의 로딩 프로세스 또는 "커널 로더"(751)는 일반적으로 디스크 등으로부터 커널의 컴포넌트들을 시스템 메모리의 일부 안에 로딩하여 운영 체제의 커널을 형성할 수 있다. 커널 컴포넌트들 모두가 로딩되어 동작하면, 컴퓨터 및 운영 체제는 "부팅"되어 정상 동작을 위해 준비가 된 것으로 간주된다.
커널 컴포넌트 #1(720) 내지 커널 컴포넌트 #n(730)은 컴퓨팅 환경에서 디스크 또는 다른 저장 매체 상에 폐기 리스트(714), 커널 덤프 플래그(712), 디버거(710) 및 디버그 증명서(711)와 함께 저장될 수 있다. 화살표 604는 저장 위치로부터 다양한 컴포넌트(714-730)를 판독하고 이들을 시스템 메모리에 로딩하여 기능적인 운영 체제 커널(750)을 형성하는 커널 로딩 프로세스를 나타낸다. "플래그"로서 기술되고 있는 커널 덤프 플래그(712)는 제한적인 의미가 아니며, 부울 변수로서 또는 보다 복잡한 데이터 구조 또는 메커니즘으로서 구현될 수도 있다.
커널 로더(751)는 커널(752)의 보호 환경(PE) 관리부, 폐기 리스트(754) 및 2개의 커널 컴포넌트(720, 722)와 함께 커널에 로딩되는 것으로 도시되는데, 이 중 2개의 커널 컴포넌트는 블록들(760, 762)로서 도시되고, 커널에 로딩할 추가 커널 컴포넌트들(764, 770)을 위한 공간의 지시도 함께 도시되어 있다. 마지막으로, 커널(750)은 커널(750)이 현재 안전한 것으로 간주되는지의 여부를 지시하는 데 사용될 수 있는 커널 보안 플래그(790)를 포함한다. 이러한 도시는 일례로서 제공되며, 제한적이거나 완전한 것을 의도하지 않는다. 커널 로더(751), 커널(752)의 PE 관리부 및/또는 커널의 다른 컴포넌트들은 설명의 명료화를 위해 개별 커널 컴포넌트들로서 도시되지만, 실제로는 커널의 다른 부분들과 구별가능하거나 구별가능하지 않을 수 있다.
컴퓨팅 환경(200)에는 커널 컴포넌트(760, 762)와 연관된 서명 및 인증서 데이터(738)와 함께 사용될 수 있는 폐기 리스트(714)가 포함될 수 있다. 이 객체(714)는 리스트(714)의 생성일 현재 더 이상 유효한 것으로 간주되지 않는 서명, 인증서 및/또는 인증서 체인의 리스트를 보유할 수 있다. 폐기 리스트(714)는 커널 내에 객체(754)로서 로딩되는 것을 도시되어 있다. 유효하게 서명되고 인증된 컴포넌트, 예를 들어 컴포넌트들(760, 762)이 나중에 소정의 문제를 가진 것으로 발견될 수 있기 때문에 이러한 리스트들이 유지된다. 시스템은 이러한 리스트(754)를 이용하여 커널 컴포넌트들(720-730)이 로딩될 때 이들을 검사할 수 있는데, 이들은 적절히 서명되고 그리고/또는 신뢰성 있는 인증서 데이터(738)를 가질 수 있지만, 그 후에 신뢰성이 없는 것으로 간주되었을 수 있다. 이러한 폐기 리스트(754)는 일반적으로 버전 정보(755)를 포함하며, 따라서 보다 쉽게 식별되고, 관리되고, 필요에 따라 갱신될 수 있다.
커널 보안에 영향을 미칠 수 있는 시스템의 다른 하나의 컴포넌트는 디버거(710)이다. 디버거는 일반적으로 커널의 일부로 간주되지 않을 수 있지만, 컴퓨팅 환경(200) 내에 존재할 수 있다. 커널 디버거, 시스템 분석기 등으로 알려진 것들을 포함하는 디버거들은 시스템, 시스템 상에서 실행되는 프로세스 및 임의의 데이터에 대한 광범위한 액세스를 가질 수 있다. 디버거(710)는 허가된 것과 다른 방식으로 액세스되지 않아야 하는 미디어 컨텐츠를 포함하는 컴퓨팅 환경(200) 내의 임의의 데이터에 액세스할 수 있다. 한편, 디버깅은 일반적으로 새로운 기능 개발의 일부이며, 일반적으로 보호 환경 내에서 보호 미디어 컨텐츠를 처리하도록 의도된 코드를 디버깅할 수 있다. 따라서, 디버거(710)는 시스템 상의 디버거(710)의 존재가 허가됨을 지시할 수 있는 디버그 증명서(711)를 포함할 수 있다. 따라서, 임의의 관련 증명서(711)와 함께 디버거(710)의 존재의 검출은 보호 환경의 생성 및 유지(도 6, 600)의 일부일 수 있다.
컴퓨팅 환경(200)은 커널 덤프 플래그(712)를 포함할 수 있다. 이 플래그(712)는 마비 상태의 시스템 고장의 경우에 검사를 위해 얼마나 많은 커널 메모리가 이용될 수 있는지를 지시하는 데 사용될 수 있다. 대안으로, 이것 또는 유사한 플래그가 시스템의 풀 메모리 덤프를 지시할 수 있다. 이러한 커널 및/또는 메모리 덤프는 고장 이후 등의 사후 디버깅을 위해 이용될 수 있다. 플래그(712)가 실질적으로 모든 메모리가 덤프시에 검사를 위해 이용될 수 있다는 것을 지시하는 경우, 해커가 시스템 메모리 내의 보호 미디어를 노출시키는 애플리케이션을 실행한 후, 검사에 이용할 수 있는 메모리가 노출된 미디어 컨텐츠를 담고 있는 메모리를 포함하는 결과를 낳을 수 있는 마비 고장 조건을 강제할 수 있으므로, 커널(750)은 안전하지 않은 것으로 간주될 수 있다. 따라서, 커널 덤프 플래그(712)는 보호 환경의 생성 및 유지(도 6, 600)에 사용될 수 있다.
도 8 및 9는 예시적인 보안 컴퓨팅 환경을 생성하기 위해 커널 컴포넌트들을 로딩하기 위한 예시적인 프로세스(604)를 나타내는 흐름도이다. 이 프로세스(604)는 커널 로더가 시동되고 커널의 PE 관리부가 로딩되어 동작할 수 있게 된 후에 시작된다. 이들 도면에는 도시되지 않았지만, 커널의 PE 관리부는 커널 로더 자체 및/또는 이전에 로딩되었을 수 있는 임의의 다른 커널 요소들을 검증할 수 있다. 검증은 이 프로세스(604)의 부분 2에 도시된 바와 같이 주어진 컴포넌트가 안전하고 신뢰성 있는 것으로 간주되는지의 여부를 결정하는 것으로서 정의될 수 있다.
커널 컴포넌트들과 관련하여 아래에서 사용되는 "안전한 사용을 위한 허가" 등의 용어는 다음과 같은 특정 의미를 갖는다. 안전한 사용을 위해 허가되지 않은 임의의 컴포넌트를 포함하는 커널은 보호 환경이 동작할 수 있는 보안 컴퓨팅 환경을 제공하지 않는다. 이것의 반대는 공격 벡터들과 같은 다른 팩터들에 의존하므로 참이 아닐 수도 있다.
1. 블록 801은 커널의 PE 관리부가 로딩되어 동작할 수 있게 된 후의 로딩 프로세스(604)의 개시를 나타낸다. 이에 앞서 커널에 로딩된 임의의 컴포넌트는 전술한 바와 같이 검증될 수 있다.
2. 블록 802는, 커널 보안 플래그가 거짓으로 설정될 수 있는 시점에, 커널의 PE 관리부에 앞서 로딩된 임의의 컴포넌트 또는 그 컴포넌트 자체가 안전하지 않은 것으로 발견되지 않는 경우에, 커널 보안 플래그가 참으로 초기 설정된다는 것을 나타낸다. 실제로, 참 또는 거짓의 지시는 다양한 형태를 취할 수 있는데, 여기서 참 또는 거짓의 사용은 단지 일례이며, 제한적인 것을 의미하지 않는다. 대안으로, 커널 보안 플래그는 초기에 거짓으로 설정되고, 나중에 커널이 안전한 것으로 발견된 때 참으로 설정될 수 있다.
3. 블록 804는 컴퓨팅 환경 내의 디버거의 존재에 대한 검사를 나타낸다. 대안으로, 디버거는 원격적으로 위치하고, 네트워크 또는 다른 통신 미디어를 통해 컴퓨팅 환경에, 컴퓨팅 환경 내의 프로세스에 첨부될 수 있다. 디버거가 검출되지 않으면, 로딩 프로세스(604)는 블록 810에서 계속된다. 그렇지 않은 경우, 프로세스는 블록 809에서 계속된다. 도면에는 도시되지 않았지만, 이러한 검사는 주기적으로 수행될 수 있으며, 그에 따라 커널 보안 플래그의 상태가 갱신될 수 있다.
4. 디버거가 검출되는 경우, 블록 806은 디버깅이 보호 환경의 존재 하에 시스템 상에서 허가될 수 있음을 지시할 수 있는 디버그 증명서에 대한 검사를 나타낸다. 이러한 증명서가 존재하지 않는 경우, 커널 보안 플래그는 블록 808에 도시된 바와 같이 거짓으로 설정될 수 있다. 그렇지 않은 경우, 로딩 프로세스(604)는 블록 810에서 계속된다.
5. 블록 810은 커널 덤프 플래그의 검사를 나타낸다. 이 플래그가 풀 커널 메모리 덤프 등이 가능할 수 있음을 지시하는 경우, 커널 보안 플래그는 블록 808에 도시된 바와 같이 거짓으로 설정될 수 있다. 그렇지 않으면, 로딩 프로세스(604)는 블록 812로 계속된다. 도면에는 도시되지 않았지만, 이러한 검사는 주기적으로 수행될 수 있으며, 이에 따라 커널 보안 플래그의 상태가 갱신될 수 있다.
6. 블록 812는 폐기 리스트의 커널로의 로딩을 나타낸다. 폐기 리스트가 디버그 증명서 또는 이전에 로딩된 다른 증명서, 서명, 인증서 데이터 등을 검사하기 위해 사용될 수 있는 경우, 이 단계는 도시된 것보다 더 일찍(검사될 증명서 등의 로딩 전에) 시퀀스에서 발생할 수 있다. 도면에는 도시되지 않았지만, 이 컴포넌트가 로딩되면, 이전에 로딩된 임의의 그리고 모든 커널 컴포넌트를 검사하여, 이들의 서명 및/또는 인증서 데이터가 폐기 리스트에 따라 폐기되었는지를 알 수 있다. 임의의 것이 폐기된 경우, 커널 보안 플래그는 거짓으로 설정될 수 있으며, 로딩 프로세스(604)는 블록 814에서 계속된다. 폐기 리스트는 보호 환경의 생성 및 유지에 사용되도록 커널에 로딩되거나 로딩되지 않을 수 있다는 점에 유의한다.
7. 블록 814는 도 9에 도시되고 블록 901에서 계속되는 도면의 부분 2로의 전이를 나타낸다.
8. 블록 902는 로딩할 임의의 추가 커널 컴포넌트에 대한 검사를 나타낸다. 모든 컴포넌트가 로딩되면, 로드 프로세스(604)는 통상적으로 완료되며, 커널 보안 플래그는 참 또는 거짓의 최종 설정 상태로 유지된다. 로딩할 추가 커널 컴포넌트가 존재하는 경우, 로드 프로세스(604)는 블록 906으로 계속된다.
9. 블록 906은 로딩할 다음 컴포넌트의 유효 서명에 대한 검사를 나타낸다. 서명이 무효인 경우, 커널 보안 플래그는 블록 918에 도시된 바와 같이 거짓으로 설정될 수 있다. 그렇지 않으면, 로드 프로세스(604)는 블록 908로 계속된다. 컴포넌트 서명이 이용가능하지 않으면, 컴포넌트는 안전하지 않은 것으로 간주될 수 있으며, 커널 보안 플래그는 블록 918에 도시된 바와 같이 거짓으로 설정될 수 있다. 서명의 유효성은 유효 서명들의 리스트 상에서의 일치에 대한 검사에 의해 그리고/또는 서명자의 신분이 신뢰성 있는 신분인지의 검사에 의해 결정될 수 있다. 보안 기술 분야의 전문가들에게 친숙한 바와 같이, 컴포넌트 서명을 검증하기 위해 다른 방법들도 이용될 수 있다.
10. 블록 908은 컴포넌트의 인증서 데이터의 검사를 나타낸다. 인증서 데이터가 무효인 경우, 커널 보안 플래그는 블록 918에 도시된 바와 같이 거짓으로 설정될 수 있다. 그렇지 않으면, 로드 프로세스(604)는 블록 910으로 계속된다. 컴포넌트 인증서 데이터가 이용될 수 없는 경우, 컴포넌트는 안전하지 않은 것으로 간주될 수 있으며, 커널 보안 플래그는 블록 918에 도시된 바와 같이 거짓으로 설정될 수 있다. 인증서 데이터 유효성은 컴포넌트가 안전한 사용을 위해 허가되는지를 알 수 있도록 컴포넌트의 인증서 데이터를 검사함으로써 결정될 수 있다. 이 분야의 전문가들에게 친숙한 바와 같이, 컴포넌트 인증서 데이터를 검증하기 위해 다른 방법들도 이용될 수 있다.
11. 블록 810은 커널에 로딩된 폐기 리스트에 대한 컴포넌트의 서명의 검사를 나타낸다. 서명이 리스트 상에 존재하여 그 서명이 폐기된 것임을 나타내는 경우, 커널 보안 플래그는 블록 918에 도시된 바와 같이 거짓으로 설정될 수 있다. 그렇지 않으면, 로드 프로세스(604)는 블록 912로 계속된다.
12. 블록 912는 폐기 리스트에 대한 컴포넌트의 인증서 데이터의 검사를 나타낸다. 인증서 데이터가 리스트 상에 존재하여, 그 인증서 데이터가 폐기된 것임을 나타내는 경우, 커널 보안 플래그는 블록 918에 도시된 바와 같이 거짓으로 설정될 수 있다. 그렇지 않으면, 로딩 프로세스(604)는 블록 914로 계속된다.
13. 블록 914는 컴포넌트의 서명이 사용을 위해 OK인지를 결정하기 위한 검사를 나타낸다. 이 검사는 컴포넌트가 안전한 사용을 위해 허가되는지를 알기 위해 컴포넌트의 리프(leaf) 인증서 데이터를 검사함으로써 수행될 수 있다. 인증서 데이터 내의 소정의 속성들은 컴포넌트가 보호 환경 이용을 위해 승인되어 있는지를 지시할 수 있다. 그렇지 않은 경우, 컴포넌트는 적절히 서명되지 않을 수 있으며, 커널 보안 플래그는 블록 918에 도시된 바와 같이 거짓으로 설정될 수 있다. 그렇지 않으면, 로딩 프로세스(604)는 블록 916으로 계속된다.
14. 블록 916은 컴포넌트의 루트(root) 인증서 데이터의 검사를 나타낸다. 이 검사는 컴포넌트의 루트 인증서 데이터가 신뢰성 있는 루트 인증서들의 리스트 상에 리스트되어 있는지를 알기 위해 검사함으로써 수행될 수 있다. 그렇지 않은 경우, 컴포넌트는 안전하지 않은 것으로 간주될 수 있으며, 커널 보안 플래그는 블록 918에 도시된 바와 같이 거짓으로 설정될 수 있다. 그렇지 않으면, 로딩 프로세스(604)는 블록 920으로 계속된다.
15. 블록 920은 컴포넌트가 현재 동작할 수 있는 것으로 간주되는 커널로 로딩되는 것을 나타낸다. 이어서, 로딩 프로세스(604)는 블록 902로 복귀하여, 로딩할 임의의 추가 컴포넌트를 검사한다.
도 10은 일반적으로 공격에 저항하는 신뢰 애플리케이션을 형성하기 위해 애플리케이션(105)을 예시적인 보호 환경(203)에 로딩하는 보안 컴퓨팅 환경(200)을 나타내는 블록도이다. 이 예에서, 커널은 도 7에서 기술된 것과 동일할 수 있고, 이미 로딩되었으며, 시스템(200)은 완전히 동작할 수 있는 것으로 간주된다. 이 시점에서, 일례로서, 사용자는 미디어 애플리케이션(105)을 시동한다. 미디어 애플리케이션(105)은 내부에서 동작할 그의 프로세스들 및/또는 컴포넌트들 중 하나 이상을 위한 보호 환경(203)의 생성을 요청할 수 있다. 보호 환경 생성 프로세스(606)는 보호 환경(203)을 생성하고 후술하는 바와 같이 애플리케이션(105) 및/또는 그의 컴포넌트들을 로딩한다.
도 11은 보호 환경을 생성하고 애플리케이션을 보호 환경에 로딩하기 위한 예시적인 프로세스(606)를 나타내는 흐름도이다. 이 프로세스(606)는 보안 프로세스를 생성하는 초기 단계를 포함하고, 이어서 그 안에 로딩할 소프트웨어 컴포넌트를 검증한 후 소프트웨어 컴포넌트를 새로운 보안 프로세스에 로딩하여 이것이 동작할 수 있게 하는 단계를 포함한다. 성공시, 그 결과는 소프트웨어 컴포넌트가 보안 커널에 의해 지원되는 보호 환경에서 동작할 수 있다는 것이다. 이러한 소프트웨어 컴포넌트는 임의의 디지털 미디어 컨텐츠 또는 그가 처리하는 다른 데이터와 함께 전술한 것들과 같은 다양한 공격으로부터 보호될 수 있다.
1. 블록 1101은 보호 환경 생성 프로세스(606)의 개시를 나타낸다. 이 시점은 통상적으로 소정의 애플리케이션 또는 코드가 보호 환경이 동작하기를 요청할 때 도달된다.
2. 블록 1102는 보호 환경의 구축을 나타낸다. 도면에는 도시되지 않았지만, 이것은 운영 체제에게 새로운 보안 프로세스를 생성할 것을 요청함으로써 이루어질 수 있다. 이 보안 프로세스에 나중에 로딩되어 동작하는 코드는 보호 환경에서 동작하는 것으로 간주될 수 있다. 커널 보안 플래그가 거짓으로 설정되는 경우, "새로운 보안 프로세스 생성" 요청은 실패할 수 있다. 이것은 시스템이 전반적으로 안전하지 않고, 보호 환경 및 보호 환경을 필요로 하는 임의의 애플리케이션 또는 데이터에 적합하지 않은 것으로 간주될 수 있기 때문일 수 있다. 대안으로, "새로운 보안 프로세스 생성" 요청은 성공할 수 있으며, 새로운 프로세스에 로딩된 컴포넌트는 시스템이 안전하지 않은 것으로 간주됨을 통지받을 수 있으며, 따라서 컴포넌트는 그의 동작들을 적절히 수정할 수 있다. 그렇지 않으면, 프로세스(606)는 블록 1106으로 계속된다.
3. 블록 1106은 새로운 보안 프로세스 또는 보호 환경에 로딩할 소프트웨어 컴포넌트의 유효 서명에 대한 검사를 나타낸다. 서명이 무효인 경우, 프로세스(606)는 블록 1118에 도시된 바와 같이 실패할 수 있다. 그러하지 않으면, 프로세스(606)는 블록 1108로 계속된다. 프로세스에는 도시되지 않았지만, 새로운 보안 프로세스를 생성하는 프로그램 또는 그의 균등물은 또한 유효 서명에 대해 검사될 수 있다. 따라서, 컴포넌트 자체 및/또는 새로운 보안 프로세스를 생성하는 프로그램에 대해, 서명이 이용될 수 없는 경우, 컴포넌트는 안전하지 않은 것으로 간주될 수 있으며, 프로세스(606)는 블록 1118에 도시된 바와 같이 실패할 수 있다. 서명의 유효성은 유효 서명들의 리스트 상에서의 일치를 검사함으로써 그리고/또는 서명자의 신원이 신뢰성 있는 신원인지를 검사함으로써 결정될 수 있다. 보안 기술 분야의 전문가들에게 친숙한 바와 같이, 컴포넌트 서명을 검증하기 위해 다른 방법들도 이용될 수 있다.
4. 블록 1108은 소프트웨어 컴포넌트의 인증서 데이터의 검사를 나타낸다. 인증서 데이터가 무효인 경우, 프로세스(606)는 블록 1118에 도시된 바와 같이 실패할 수 있다. 그러하지 않으면, 프로세스(606)는 블록 1110으로 계속된다. 컴포넌트 인증서 데이터가 이용가능하지 않은 경우, 컴포넌트는 안전하지 않은 것으로 간주될 수 있으며, 프로세스(606)는 블록 1118에 도시된 바와 같이 실패할 수 있다. 인증서 데이터 유효성은 컴포넌트가 안전한 사용을 위해 허가되는지를 알기 위해 컴포넌트의 인증서 데이터를 검사함으로써 결정될 수 있다. 이 분야의 전문가들에게 친숙한 바와 같이, 컴포넌트 인증서 데이터를 검증하기 위해 다른 방법들도 사용될 수 있다.
5. 블록 1110은 폐기 리스트에 대한 컴포넌트의 서명의 검사를 나타낸다. 서명이 리스트 상에 존재하여, 폐기된 것을 지시하는 경우, 프로세스(606)는 블록 1118에 도시된 바와 같이 실패할 수 있다. 그렇지 않으면, 프로세스(606)는 블록 1112로 계속된다.
12. 블록 1112는 폐기 리스트에 대한 컴포넌트의 인증서 데이터의 검사를 나타낸다. 인증서 데이터가 리스트 상에 존재하여, 폐기된 것을 지시하는 경우, 프로세스는 블록 1118에 도시된 바와 같이 실패할 수 있다. 그렇지 않으면, 프로세스(606)는 블록 1114로 계속된다.
13. 블록 1114는 컴포넌트의 서명이 사용을 위해 허용되는지를 결정하기 위한 검사를 나타낸다. 이 검사는 컴포넌트가 안전한 사용을 위해 허가되는지를 알기 위해 컴포넌트의 리프 인증서 데이터를 검사함으로써 이루어질 수 있다. 인증서 데이터 내의 소정의 속성들은 컴포넌트가 보호 환경 이용을 위해 승인되어 있는지를 지시할 수 있다. 그렇지 않은 경우, 컴포넌트는 적절히 서명되지 않은 것으로 간주될 수 있으며, 프로세스(606)는 블록 1118에 도시된 바와 같이 실패할 수 있다. 그렇지 않으면, 프로세스(606)는 블록 1116으로 계속된다.
14. 블록 1116은 컴포넌트의 루트 인증서 데이터의 검사를 나타낸다. 이 검사는 컴포넌트의 루트 인증서 데이터가 신뢰성 있는 루트 인증서들의 리스트 상에 리스트되어 있는지를 알기 위해 검사함으로써 이루어질 수 있다. 그렇지 않은 경우, 컴포넌트는 안전하지 않은 것으로 간주될 수 있으며, 프로세스(606)는 블록 1118에 도시된 바와 같이 실패할 수 있다. 그렇지 않으면, 프로세스(606)는 블록 1120으로 계속된다.
15. 블록 1118은 소프트웨어 컴포넌트 로딩의 실패를 나타내며, 보호 환경 생성 프로세스(606)의 마지막인 블록 1130이 이어진다.
16. 블록 1120은 소프트웨어 컴포넌트가 동작가능한 것으로 간주되는 보호 환경에 로딩되는 것을 나타내며, 보호 환경 생성 프로세스(606)의 마지막인 블록 1130이 이어진다.
도 12는 보안 컴퓨팅 환경(200)의 보안 상태(790)를 주기적으로 검사(608)하는 예시적인 보호 환경(202)을 이용하는 예시적인 신뢰 애플리케이션을 나타낸다. 이 예에서, 컴퓨팅 환경(200) 및 커널(750)은 도 7 및 8에 기술된 것들과 동일할 수 있다. 커널(750)은 이미 로딩되었으며, 컴퓨터(200)는 완전히 동작가능한 것으로 간주된다. 또한, 보호 환경이 생성되었으며, 신뢰 애플리케이션의 적절한 컴포넌트들이 그 안에 로딩되어 동작할 수 있게 되어, 이후 "보호 환경"으로 간단히 지칭되는 보호 환경(202)을 이용하는 신뢰 애플리케이션이 구축되었다.
보호 환경(202)은 커널(752)의 PE 관리부를 주기적으로 검사하여 커널(750)이 시간에 따라 안전하게 유지되고 있는지를 결정할 수 있다. 안전하지 않은 것으로 간주될 수 있는 컴포넌트를 포함하는 새로운 컴포넌트가 언제라도 커널(750) 내에 로딩되는 것이 가능하기 때문에 이러한 주기적 검사가 수행될 수 있다. 이것이 발생한다면, 커널 보안 플래그(790)의 상태는 거짓으로 변경될 것이고, 보호 환경(202)에서 동작하는 코드는 적절히 대응할 기회를 갖게 된다.
예를 들어, 미디어 재생기 애플리케이션이 보안 커널(750)을 구비한 PC(200) 상에서 시동되고, 보호 환경(202)에서 동작하는 미디어 재생기 애플리케이션의 일부가 안전한 사용을 위해서만 허가되는 디지털 미디어 컨텐츠를 처리하는 것을 고려한다. 이 예에서, 미디어 재생기 애플리케이션이 미디어 컨텐츠를 처리하고 있는 동안, 안전하지 않은 것으로 간주되는 새로운 커널 컴포넌트가 로딩되는 경우, 커널 보안 상태 검사 프로세스(240)는 커널 보안 플래그(790)가 거짓으로 변경되어, 커널(750)이 더 이상 안전하지 않을 수 있는 것을 지시하는 점에 주목할 것이다.
대안으로, 폐기 리스트(745)가 갱신될 수 있고, 이전에 안전한 것으로 간주된 커널 컴포넌트가 더 이상 안전한 것으로 간주되지 않을 수 있으며, 그 결과 커널 보안 플래그가 거짓으로 설정될 수 있다. 이 시점에서, 애플리케이션은 시스템(200)이 더 이상 안전한 것으로 간주되지 않는다는 통지를 수신할 수 있고, 동작을 종료하거나 그 자신 및/또는 그가 처리하고 있는 미디어 컨텐츠를 보호하기 위한 다른 적절한 동작을 취할 수 있다.
도 13은 보안 컴퓨팅 환경의 보안 상태를 주기적으로 검사하기 위한 예시적인 프로세스(608)를 나타내는 흐름도이다. 이 프로세스(608)는 커널이 시간에 따라 안전하게 유지되는지를 결정하기 위해 보호 환경(202)에 의해 이용될 수 있다. 보호 환경(202)은 이 프로세스(608)를 주기적으로 이용하여, 커널의 현재 보안 상태를 검사할 수 있다. 보호 환경(202) 및/또는 그 안에서 동작하는 소프트웨어 컴포넌트는 현재의 보안 상태 정보를 이용하여 그의 동작을 적절히 수정할 수 있다. 프로세스의 주기적인 활성화는 통상의 기술을 이용하여 구현될 수 있다.
도면은 보호 환경(202)과 커널(752)의 PE 관리부 사이의, 예시적인 의사 코드와 함께 도시된 통신 시퀀스(608)를 나타낸다. 이러한 통신은 애플리케이션에게 적어도 소정 버전의 폐기 리스트를 지정하는 능력을 제공할 수 있는 폐기 리스트의 버전의 검사를 포함할 수 있다. 이러한 통신 시퀀스는 통상의 기술을 이용하여 암호 방식으로 보호될 수 있다.
1. 보호 환경(202)은 커널의 현재 보안 상태를 조회하기 위해 커널의 PE 관리부에 대해 IsKernelSecure(MinRLVer) 호출(1320)을 행한다. 이 호출(1320)에는 사용될 것으로 예상되는 폐기 리스트의 최소 버전 (MinRLVer)이 포함될 수 있다.
2. 커널의 PE 관리부는 호출 프로세스인 보호 환경이 안전한지를 알기 위한 검사를 행한다. 그렇지 않은 경우, PE 관리부는 보호 환경에 Return(SecureFlag=FALSE) 지시(1322)를 제공할 수 있으며, 통신 시퀀스(608)는 종료된다. 이러한 보안 검사는 전술한 바와 같이 유효 서명 및/또는 인증서 데이터에 대해 보호 환경을 검사하는 커널의 PE 관리부에 의해 수행될 수 있다.
3. 그렇지 않은 경우, 커널의 PE 관리부는 호출(1320)에 응답하여 커널 보안 플래그를 검사한다. 플래그의 상태가 거짓인 경우, PE 관리부는 보호 환경에 Return(SecureFlag=FALSE) 지시(1324)를 제공할 수 있으며, 통신 시퀀스(608)는 종료된다.
4. 그렇지 않은 경우, 커널의 PE 관리부는 폐기 리스트에 대한 폐기 리스트 버전 정보를 검사한다. 폐기 리스트가 IsKernelSecure(MinRLVer) 호출(1320)에서 요청된 것보다 오래된 버전 정보를 갖는 경우, 여러 옵션이 가능하다. 먼저, 도면에 지시된 바와 같이, 커널의 PE 관리부는 보호 환경에 Return(SecureFlag=FALSE) 지시(1326)를 제공할 수 있으며, 통신 시퀀스(608)는 종료된다.
대안으로, 그리고 도면에는 도시되지 않았지만, 적절한 버전의 폐기 리스트를 찾아 커널에 로딩할 수 있으며, 모든 커널 컴포넌트는 이 새로운 또는 갱신된 리스트를 이용하여 재검증될 수 있고, 커널 보안 플래그가 적절히 갱신되며, 이 통신 시퀀스(608)의 이전 단계 #3이 반복될 수 있다.
5. 그렇지 않은 경우, 커널의 PE 관리부는 보호 환경에 Return(SecureFlag=TRUE) 지시(1328)를 제공할 수 있으며, 통신 시퀀스(608)는 종료된다.
도 14는 보호 환경(203)을 포함하는 보안 컴퓨팅 환경을 구축하기 위한 프로세스, 시스템 및 방법이 구현될 수 있는 예시적인 컴퓨팅 환경(1400)을 나타내는 블록도이다. 예시적인 퍼스널 컴퓨터(1400)는 단지 보안 컴퓨팅 환경 및/또는 보호 환경을 제공할 수 있는 컴퓨팅 시스템 또는 장치의 한가지 일례이며, 본 명세서에 기술되는 예들을 이러한 특정 컴퓨팅 환경 또는 장치 유형으로 제한하고자 하는 것은 아니다.
적합한 컴퓨팅 환경은 많은 기타 범용 또는 특수 목적의 시스템을 이용하여 구현될 수 있다. 잘 알려진 시스템의 예로는 퍼스널 컴퓨터(PC; 1400), 핸드-헬드 또는 랩톱 장치, 마이크로프로세서 기반 시스템, 멀티프로세서 시스템, 셋톱 박스, 프로그램가능한 가전제품, 게임 콘솔, 소비자 전자 장치, 셀룰러 전화, PDA 등을 포함할 수 있지만 이에 제한되는 것은 아니다.
PC(1400)는 다양한 주변 장치(1403, 1404, 1415, 1416) 등에 결합되는 컴퓨팅 장치(1401) 형태의 범용 컴퓨팅 시스템을 포함한다. 컴퓨팅 장치(1401)의 컴포넌트들은 하나 이상의 프로세서(CPU, GPU, 마이크로프로세서 등을 포함)(1407), 시스템 메모리(1409) 및 각종 시스템 컴포넌트를 결합하는 시스템 버스(1408)를 포함할 수 있다. 프로세서(1407)는 다양한 컴퓨터 실행가능 명령을 처리하여 컴퓨팅 장치(1401)의 동작을 제어하고, 네트워크 접속(1414) 등과 같은 다양한 통신 접속을 통해 다른 전자 및/또는 컴퓨팅 장치들(도시되지 않음)과 통신한다. 시스템 버스(1408)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, 가속 그래픽 포트, 및/또는 각종 버스 아키텍처 중 임의의 것을 이용하는 프로세서 또는 로컬 버스를 포함하는 몇몇 유형의 버스 구조 중 임의의 것을 나타낸다.
시스템 메모리(1409)는 랜덤 액세스 메모리(RAM)와 같은 휘발성 메모리 및/또는 판독 전용 메모리(ROM)와 같은 비휘발성 메모리 형태의 컴퓨터 판독가능 매체를 포함할 수 있다. 기본 입출력 시스템(BIOS)은 ROM에 저장될 수 있다. RAM은 통상적으로 하나 이상의 프로세서(1407)에 즉시 액세스 가능하고 및/또는 현재 프로세서에 의해 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예제로서, 보호 환경(203)을 이용하는 신뢰 애플리케이션(202) 및 처리되고 있는 미디어 컨텐츠(106)가 동작을 위해 시스템 메모리에 로딩된 것으로 도시되어 있다.
대용량 저장 장치(1404, 1410)는 컴퓨팅 장치(1401)에 결합되거나, 시스템 버스에 결합함으로써 컴퓨팅 장치(1401) 내에 포함될 수 있다. 이러한 대용량 저장 장치(1404, 1410)는 이동식, 비휘발성 자기 디스크(예를 들어, 플로피 디스크)(1405)로부터 판독하고 그에 기록하는 자기 디스크 드라이브, 및/또는 CD ROM, DVD ROM 등(1406)과 같은 비휘발성 광 디스크로부터 판독하고/하거나 그에 기록하는 광 디스크 드라이브를 포함할 수 있다. 컴퓨터 판독가능 매체(1405, 1406)는 일반적으로 플로피 디스크, CD, DVD, 휴대형 메모리 스틱 등으로 제공되는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 등을 구현한다.
예를 들어, 운영 체제, 하나 이상의 애플리케이션 프로그램, 다른 프로그램 모듈 및/또는 프로그램 데이터를 포함하는 임의 수의 프로그램 또는 프로그램 모듈이 하드 디스크(1410), 다른 대용량 저장 장치(1404) 및 시스템 메모리(1409)(일반적으로 이용가능 공간에 의해 제한됨)에 저장될 수 있다. 이러한 운영 체제, 애플리케이션 프로그램, 다른 프로그램 모듈 및 프로그램 데이터(또는 이들의 소정 조합) 각각은 본 명세서에 설명되는 시스템 및 방법의 일 실시예를 포함할 수 있다. 커널 컴포넌트들(720-730)은 다른 운영 체제 코드와 함께 디스크(1410) 상에 저장될 수 있다. 미디어 애플리케이션(104) 및/또는 디지털 권리 관리 시스템(204)은 다른 애플리케이션 프로그램과 함께 디스크(1410) 상에 저장될 수 있다. 이들 컴포넌트(720-730) 및 애플리케이션들(105, 204)은 시스템 메모리(1409)에 로딩되어 동작가능하게 될 수 있다.
표시 장치(1416)가 비디오 어댑터(1411)와 같은 인터페이스를 통해 시스템 버스(1408)에 결합될 수 있다. 사용자는 키보드, 포인팅 장치, 조이스틱, 게임 패드, 직렬 포트 등과 같은 임의 수의 상이한 입력 장치(1403)를 통해 컴퓨팅 장치(1400)와 인터페이스할 수 있다. 이들 및 기타 입력 장치는 시스템 버스(1408)에 결합될 수 있는 입출력 인터페이스(1412)를 통해 프로세서(1407)에 결합될 수 있으며, 병렬 포트, 게임 포트 및/또는 USB(universal serial bus) 등과 같은 다른 인터페이스 및 버스 구조에 의해 결합될 수 있다.
컴퓨팅 장치(1400)는 하나 이상의 LAN, WAN, 인터넷, 무선 링크, 광학 링크 등을 통한 하나 이상의 원격 컴퓨터 및/또는 장치에 대한 통신 접속을 이용하여 네트워크화된 환경에서 동작할 수 있다. 컴퓨팅 장치(1400)는 네트워크 어댑터(1413)를 통해, 또는 대안으로 모뎀, DSL, ISDN 인터페이스 등을 통해 네트워크에 결합될 수 있다.
통신 접속(1414)은 통신 미디어의 일례이다. 통신 미디어는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및/또는 기타 데이터를 구현하고 모든 정보 전달 미디어를 포함한다. "피변조 데이터 신호"라는 용어는, 신호 내에 정보를 인코딩하도록 그 신호 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 미디어는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 미디어, 그리고 음향, 무선 주파수, 적외선 및 기타 무선 미디어와 같은 무선 미디어를 포함하지만 이에 제한되는 것은 아니다.
이 분야의 전문가들은 컴퓨터 판독가능 명령을 저장하는 데 사용되는 저장 장치가 네트워크를 통해 분산될 수 있다는 것을 인식할 것이다. 예를 들어, 원격 컴퓨터 또는 장치가 소프트웨어로서 기술되는 시스템의 일례를 저장할 수 있다. 로컬 또는 단말 컴퓨터 또는 장치가 원격 컴퓨터 또는 장치에 액세스하고 소프트웨어의 일부 또는 모두를 다운로드하여 프로그램을 실행할 수 있다. 대안으로, 로컬 컴퓨터는 필요에 따라 소프트웨어의 부분들을 다운로드하거나, 소프트웨어 명령들의 일부를 로컬 단말기에서 실행하고 일부를 원격 컴퓨터 및/또는 장치에서 실행함으로써 소프트웨어를 분산 처리할 수 있다.
이 분야의 전문가들은 또한, 이 분야의 전문가들에게 공지된 통상의 기술을 이용함으로써 소프트웨어 명령들의 모두 또는 일부가 DSP, 프로그래머블 로직 어레이(PLA), 개별 회로 등과 같은 전용 전자 회로에 의해 실행될 수 있다는 것을 이해할 것이다. 본 명세서에 사용되는 전자 장치라는 용어는 임의의 소프트웨어 및/또는 펌웨어 등을 포함하는 컴퓨팅 장치 및 소비자 전자 장치, 및/또는 소프트웨어 및/또는 펌웨어 등을 포함하지 않는 전자 장치를 포함한다.
컴퓨터 판독가능 매체라는 용어는 시스템 메모리, 하드 디스크, 대용량 저장 장치 및 이들과 연관된 미디어, 통신 미디어 등을 포함할 수 있다.
갱신 및 개별화 가능한 요소를 구비한 보호 컴퓨팅 환경의 구성
구성 요소들 및 컴포넌트들이 갱신 및/또는 개별화될 수 있도록 보호 환경을 구성하기 위한 시스템 및 방법이 아래에 설명된다.
도 15는 개별 요소 또는 컴포넌트로서 분리된 커널(750)의 보호 환경(PE) 관리부(752)를 포함하는 예시적인 운영 체제 커널을, 예시적인 보안 컴퓨팅 환경(200)의 생성 및 관리에 이용되는 다른 커널 컴포넌트(1551)와 함께 나타내는 블록도이다. PE 관리부(752)는 갱신 및/또는 개별화될 수 있으며, 커널(750) 또는 보안 컴퓨팅 환경(200)의 다른 컴포넌트 또는 요소들도 갱신 및/또는 개별화될 수 있다.
PE 관리부(752)는 보호 환경의 생성, 애플리케이션 또는 다른 컴포넌트의 보호 환경으로의 로딩, 및 보호 환경의 유지 및 관리에 중요한 역할을 할 수 있다. 또한, PE 관리 컴포넌트는 커널 보안 플래그(790)와 같은 데이터의 유지 및 시스템의 보안 상태에 관한 요청의 처리 외에 커널(750) 및/또는 컴퓨팅 환경(200)의 보안 상태를 모니터 및 추적할 수 있다. 이러한 기능들은 다른 커널 컴포넌트들(1551) 및/또는 보안 컴퓨팅 환경(200)과 협동하여 수행될 수 있다.
커널(750)의 PE 관리부를 개별 컴포넌트(752)로 분리함으로써, 필요할 경우에 이러한 커널의 개별 컴포넌트를 교체하기가 쉬워질 수 있다. 이러한 컴포넌트를 교체하는 이유의 일례는 PE 관리부(752)가 컴퓨터 시스템 또는 장치 상에 설치된 후에 보안 결함이 발견되는 경우이다. PE 관리 컴포넌트(752)는 비밀 보안 정보(1570)를 유지할 수 있고 보호 환경을 생성하고 유지하는 기능을 제공할 수 있으므로, 이는 결함을 노출할 수 있는 매력적인 공격 타겟일 수 있다. PE 관리 컴포넌트(752)가 커널의 통합 부분인 경우, 이러한 결함의 치유는 잠재적으로 비용이 많이 들고 시간 소모적인 동작인 전체 커널 또는 운영 체제의 교체를 필요로 할 수 있다. 다른 예는 PE 관리 컴포넌트(752)의 기능이 갱신되어 새로 발견된 위협에 대해 보다 양호하게 보호할 수 있는 경우이다. 또한, 전체 운영 체제 또는 그의 더 큰 부분들이 아니라 이러한 개별 컴포넌트(752)를 교체하는 것이 보다 쉽고 비용이 적게 들 수 있다. 개별 PE 관리 컴포넌트(752)를 교체하는 것이 필요한 경우, 이것은 후술하는 바와 같이 그것을 폐기하고 갱신함으로써 수행될 수 있다. 이러한 폐기는 컴포넌트가 갱신되거나 다른 버전으로 교체될 때까지 컴포넌트를 디스에이블링하는 것을 필요로 할 수 있다.
후술하는 바와 같이, 컴포넌트를 폐기하고 갱신하는 프로세스는 커널(750)의 임의의 다른 컴포넌트 또는 컴포넌트들의 그룹에도 적용될 수 있다. 또한, 이 프로세스는 전체 운영 체제의 임의의 컴포넌트 또는 컴포넌트들의 집합에 대해, 또는 시스템 상에 설치된 애플리케이션 소프트웨어 또는 다른 소프트웨어의 컴포넌트들, 또는 이들의 조합에 대해 적용될 수 있다. 커널(750)의 PE 관리 컴포넌트(752)와 함께 이러한 폐기 및 갱신 기능을 제공하는 것은 발견된 결함 및/또는 새로 발견된 보안 위협에 빠르게 대응하는 것을 훨씬 더 쉽고 보다 비용이 적게 들게 할 수 있다.
PE 관리 컴포넌트(752)의 구조, 데이터 및/또는 코드는 해시 마크로 도면에 지시되는 바와 같이 난독화될 수 있다. 이러한 난독화(obfuscation) 컴포넌트 내에 유지되는 비밀 또는 다른 보안 정보 및 메커니즘을 발견하는 공격자의 능력을 감소시킨다. 난독화는 이 분야의 전문가들에게 공지된 방법 및 미래에 결정될 다른 관련 방법을 포함하는 다양한 방법을 이용하여 수행될 수 있다.
일 실시예에서 PE 관리 컴포넌트(752)는 커널 보안 플래그(790)를 포함할 수 있다. 이 플래그(790)를 유지하고 이를 안전하게 PE 관리 컴포넌트(752) 내에 보유하는 것은 안전하지 않은 커널을 안전한 것처럼 보이도록 하기 위해 공격자들이 이를 탬퍼링하거나 우회하는 것을 방지할 수 있다. 커널 보안 플래그(790)는 PE 관리 컴포넌트(752) 내에서 난독화 및/또는 암호화 등이 되어 그에 대한 무허가 액세스를 더욱 줄일 수 있다.
PE 관리 컴포넌트(752)는 또한 후술하는 바와 같이 폐기 및 갱신에 사용될 수 있는 식별 정보(1572)를 포함할 수 있다. 이 식별 정보(1572)는 폐기 리스트(도 12, 754)에 대한 비교에 사용되거나 폐기 및 갱신 시스템 등의 일부로서 사용될 수 있는 버전 정보 및/또는 다른 식별 정보를 포함할 수 있다.
PE 관리 컴포넌트(752)는 또한 특히 다른 커널 컴포넌트들(1551) 및/또는 보호 환경 내에서 동작하는 신뢰 애플리케이션(도 12, 608, 202)과의 보안 통신에 사용하기 위한 비밀키를 포함할 수 있는 추가 비밀 정보(1570)를 포함할 수 있다. 비밀 정보(1570)는 PE 관리 컴포넌트(752) 내에서 난독화 및/또는 암호화 등이 되어 그에 대한 무허가 액세스를 줄일 수 있다.
PE 관리 컴포넌트(752)가 커널 자체 또는 그의 허가된 컴포넌트들(1551) 대신에 무허가 컴포넌트에 의해 로딩되는 경우, PE 관리 컴포넌트(752)는 부적절하게 사용되거나 완전히 우회될 수 있으며, 따라서 안전하지 않은 시스템이 안전하게 보이는 결과를 낳는다. 이러한 가능성을 줄이기 위하여, 커널(750)은 커널(750)이 PE 관리 컴포넌트(752)를 로딩할 때 PE 관리 컴포넌트(752)에 인증 메시지를 전송할 수 있다. 일 실시예에서, 이러한 인증 메시지는 타임스탬프를 포함할 수 있으며, 커널(750)에 의해 안전하게 보유되는 비밀키를 이용하여 서명될 수 있다. PE 관리 컴포넌트(752)는 그가 이 인증 메시지를 수신하고 검증하지 않은 경우 그가 유지하는 커널 보안 플래그(790) 또는 다른 비밀 정보(1570)에 대한 액세스를 제공하지 않도록 구성될 수 있다. 인증 메시지가 적절히 수신 및/또는 검증되지 않은 경우, 컴퓨팅 환경이 안전한 것을 보장할 수 없을 수 있기 때문에 보호 환경을 생성하는 것이 가능하지 않을 수 있다. 따라서, 보호 환경을 필요로 하는 애플리케이션 또는 다른 미디어 컨텐츠는 동작하지 못할 수 있으며, 따라서 미디어 컨텐츠, 다른 데이터 및/또는 전체 컴퓨팅 환경이 손상될 수 있는 위험을 줄일 수 있다.
PE 관리 컴포넌트(752)는 또한 개별화 데이터(1560)를 포함할 수 있다. 운영 체제, 커널(750) 또는 PE 관리 컴포넌트(752) 자체의 초기 설치시, 개별화 데이터(1560)는 다른 컴퓨터 시스템 또는 장치 상에 설치된 다른 "아웃 오브 박스(out-of-the-box)" 버전들과 유사하거나 동일할 수 있는 후술하는 바와 같은 범용 또는 장치 인증서 템플릿(도 24, 2412)의 형태일 수 있다. 사용자가 보호 환경을 필요로 하는 보호 미디어 컨텐츠 또는 다른 보호 데이터 또는 애플리케이션을 이용하려고 할 때, 고유 개별화 데이터 또는 고유 장치 인증서(도 24, 2411)가 또한 요구될 수 있다. 이 경우, 시스템 또는 장치 고유 정보, 또는 고유 장치 ID가 고유 개별화 데이터의 생성에 사용되는 경향이 있는데, 이는 고유 장치 인증서(도 24, 2411) 등의 형태로 제공될 수 있다. 이러한 고유 장치 인증서의 생성은 후술하는 보호 컴퓨팅 환경의 요소들을 개별화하기 위한 시스템 및 방법을 이용하여 이루어질 수 있다.
고유 장치 인증서(도 24, 2411)의 형태일 수 있는 고유 개별화 데이터(1560)를 가진 PE 관리 컴포넌트(752)의 개별화된 버전은 고유 장치 ID가 생성된 특정 시스템 또는 장치에 "결합(binding)"되는 것으로 간주될 수 있다. 대안으로, 시스템 또는 장치의 임의의 컴포넌트 또는 요소가 유사하게 개별화되고 결합될 수 있다. 이러한 결합은 적어도 부분적으로 시스템 또는 장치 고유 데이터 또는 고유 장치 ID에 기초하여 개별화 데이터(1560)를 형성함으로써 달성될 수 있다. 이러한 PE 관리 컴포넌트(752)와 특정 시스템 또는 장치 간의 결합은 임의의 다른 시스템 또는 장치 상에서는 그 특정 PE 관리 컴포넌트를 쓸모없게 만들 수 있다. 이 경우, 사용자가 개별화되고 어쩌면 손상된 PE 관리 컴포넌트(752)의 버전을 다른 시스템 또는 장치에 복사하고 보안 컴퓨팅 환경을 제공하는 것이 가능하지 않을 수 있다. 따라서, 공격자가 PE 관리 컴포넌트(752)의 버전을 해킹하여 이를 손상시키거나, 그의 비밀 정보(1570) 또는 그의 커널 보안 플래그(790)에 액세스할 수 있는 경우, 손상된 버전은 임의의 다른 시스템 또는 장치 상에 보안 컴퓨팅 환경을 제공하는 것이 가능하지 않을 수 있으며, 따라서 이러한 보안 파괴가 빠르게 확산될 위험을 줄일 수 있다.
보호 컴퓨팅 환경의 요소들의 폐기 및 갱신
아래의 설명은 보호 컴퓨팅 환경의 요소들을 폐기하고 갱신하기 위한 시스템 및 방법을 제공한다. 폐기 및 갱신 시스템 및 방법의 일례가 2004년 4월 30일자로 출원된 미국 특허 출원 번호 10/835,951에서 제공되는데, 이 출원의 전체 내용은 본 명세서에 참고로 반영되며 아래에 설명된다.
보호 환경의 요소들을 폐기하고 갱신하기 위한 많은 양태 및 이들이 어떻게 서로 연관되는지를 나타내는 블록도가 도 16에 제공된다. 디스에이블될 컴퓨팅 컴포넌트들(1605)의 리스트가 컴퓨터 판독가능 매체를 통해 미디어 컨텐츠(도 1, 106)의 특정 예일 수 있는 디지털 미디어 객체들(1606, 1607) 등에 액세스할 수 있는 1610과 같은 컴퓨팅 장치들에 배포될 수 있다. 이들 컴퓨터 장치(1610) 상의 프로세스(1611)는 리스트(1605)는 물론 임의의 보조 리스트(1620)를 판독하고, 리스트들(1605, 1620) 상의 컴포넌트들, 예를 들어 컴포넌트(1630)를 디스에이블할 수 있다. 프로세스(1611)는 디지털 미디어 객체, 예를 들어 1606이 리스트들(1605, 1620) 상에 지정된 모든 컴포넌트(1660)의 동작에 노출되기 전에 이들 컴포넌트가 디스에이블되는 것을 보장할 수 있다. 리스트들(1605, 1620)은 전술한 바와 같은 폐기 리스트(도 7, 714) 및/또는 로딩된 폐기 리스트(도 7, 754)의 변형일 수 있다. 컴퓨팅 장치(1610)는 PC 또는 CE 장치(도 2, 210)일 수 있으며, 보안 컴퓨팅 환경(도 2, 200)을 제공할 수 있다.
리스트(1605)는 모든 보호 미디어 객체에 대한 컴포넌트의 전역적 폐기 또는 디스에이블링을 제공할 수 있지만, 보다 유연한 폐기도 제공할 수 있다. 리스트 상의 컴포넌트들(1660)은 이들이 제한된 시간 동안만 디스에이블되는 임시 폐기를 위해 표기될 수 있다. 컴포넌트들은 또한 이들이 특정 유형의 미디어 컨텐츠, 예를 들어 음악 미디어 객체들이 액세스될 때만 디스에이블되는 컨텐츠 고유 폐기를 위해 표기될 수 있다. 컴포넌트들은 또한 특정 미디어 객체, 예를 들어 디지털 미디어 객체(1606)에 대한 액세스 동안만 디스에이블되는 미디어 객체 고유 폐기를 위해 표기되거나, 특정 소스, 예를 들어 미디어 컨텐츠 배포자(1601)로부터의 미디어 객체들에 대한 액세스 동안만 디스에이블되는 미디어 객체 소스 고유 폐기를 위해 표기될 수 있다. 리스트(1605) 상에 지정되고 갱신(1608)된 바와 같이 그리고 임의의 보조 리스트(1620)를 이용하여 컴포넌트들을 디스에이블링한 후, 애플리케이션에 의한 사용을 위해, 그리고 일상의 방식으로 사용자들이 즐길 수 있도록 하기 위해, 미디어 객체(1606, 1607)가 디지털 미디어 액세스 플랫폼(1650)에 의해 처리될 수 있다. 이들 프로세스는 설명의 명료화를 위해 도 16의 밖으로 남겨진다.
유연한 폐기에 더하여, 리스트(1605)는 유연한 배포 및 갱신을 제공할 수 있다. 리스트(1605)는 리스트의 유지를 담당하는 조직(1600)에 의해 배포 및 갱신될 수 있다. 리스트는 또한 그렇게 하도록 허가된 다른 조직(1603)에 의해 배포 또는 갱신될 수 있다. 보조 리스트(1620)는 객체(1606 또는 1607)에 대해 또는 동일 소스(1601 또는 1602)로부터의 다른 객체들에 대해 다소 엄격한 폐기 정책을 지정하는 디지털 미디어 객체(1606, 1607)에 의해 제공될 수 있다. 미디어 객체(1606 또는 1607)는 또한 리스트(1605)에 대한 최대 나이를 지정할 수 있는데, 이는 컴퓨터 장치(1601)에 의해 사용되는 리스트(1605)가 지정된 기간 내에 갱신되었음을 요구한다. 이것은 디지털 미디어의 소유자들이 그들의 재산, 예를 들어 1606에 대한 미디어 보호의 엄격함을 제어하는 것을 가능하게 한다. 폐기될 수 있는 컴포넌트들(1660), 및 리스트를 갱신하도록 허가된 것들, 예를 들어 1601, 1602, 1603 및 1604로부터 허가되는 폐기의 유형을 지정하는 제어들이 리스트(1605)에 추가될 수 있다.
또한, 리스트(1605)에 액세스하는 컴퓨팅 장치(1610) 상의 프로세스(1611)는 리스트의 갱신을 프롬프트하고, 사용자들에게 컴포넌트 디스에이블링을 통지하고, 디스에이블된 컴포넌트들의 교체를 프롬프트하는 등 리스트(1605, 1607)의 이용을 용이하게 하는 기능을 포함할 수 있다. 자동 및 투명 갱신들 외에, 사용자에게 리스트를 갱신하도록 프롬프트하는 여러 기술이 제공된다. 프로세스(1611)는 또한 컴포넌트(1630)를 디스에이블링하기 전에 사용자에게 통지하여, 사용자에게 컴포넌트(1630)를 디스에이블할 것인지 미디어 객체(1606, 1607)에 대한 액세스를 보류할 것인지의 선택을 제공할 수 있다. 리스트(1605)는 컴포넌트(163)를 교체하기 위한 URL을 포함할 수 있으며, 프로세스(1611)는 사용자에게 URL을 방문하여 디스에이블된 컴포넌트(1630)를 교체하도록 프롬프트할 수 있다.
본 발명은 리스트(1605)를 안전하게 전송하고 저장하기 위한 기술을 이용하여, 리스트가 무허가 엔티티들에 의해 변경되는 것을 방지할 수 있다. 보안 데이터 전송 및 저장 기술은 이 분야에서 이해되며, 본 발명은 임의의 그러한 기술로 제한되지 않지만, "보안 클럭" 기술이라고 하는 기존의 보안 전송 기술이 바람직한 실시예를 위해 제안된다. 이 기술은 신뢰 소스, 예를 들어 1603으로부터 보안 클럭 타임 T2를 검색하고 이를 리스트(1605)와 함께 저장된 보안 클럭 타임 T1과 비교하는 것을 포함한다. 갱신이 필요한 것으로 결정되면, T1은 다른 식별 정보와 함께 신뢰 소스(1603)로 전송될 수 있다. 이어서, 신뢰 소스(1603)는 새로운 클럭 타임 T3 및 오리지널 클럭 타임 T1과 함께 리스트 갱신(1608)을 반환할 수 있다. 이어서, T1이 수신측에 의해 검증되어, 신뢰 소스(1603)가 손상되었는지를 판정할 수 있다.
마지막으로, 컴포넌트들(1660)을 인증하고 식별하기 위한 기술들이 컴포넌트들(1660)의 추가 검사로서, 그리고 리스트(1605)의 컴포넌트들(1660)을 균일하게 식별하기 위한 방법으로서 제공된다. 모든 컴포넌트(1660)에 고유 식별자가 할당될 수 있다. 이 식별자는 컴포넌트의 소유자 또는 생성자에 의해 생성될 수 있다. 이어서, 이 사람은 리스트의 유지를 담당하는 조직을 이용하여, 사용되는 식별자가 진정으로 고유하다는 것, 그리고 컴포넌트가 디지털 미디어 보호 기술을 손상시키는 데 사용될 수 있는 특성들을 갖지 않는다는 것을 인정함으로써 고유 식별자를 인증할 수 있다. 이것은 인증 조직에 의해 이중 검사될 수 있으며, 이어서 고유 식별자는 컴포넌트를 식별하는 데 사용될 수 있다. 컴포넌트가 디지털 미디어 보호 기술의 우회를 허용하는 것으로 결정되면, 그의 고유 식별자는 리스트화될 수 있고, 컴포넌트는 후술하는 바와 같이 디스에이블될 수 있다.
컴포넌트의 디스에이블링은 컴퓨터 장치 상의 컴포넌트의 사용을 제한하거나 완전히 차단하는 것을 지칭한다. 본 명세서에 사용되는 디스에이블링은 이 용어가 특정 종류의 디스에이블링을 기술하도록 더 제한되지 않는 한, 넓은 범위의 잠재적 액션을 지칭할 수 있다. 디스에이블링은 모든 형태의 컴퓨터 메모리로부터 소프트웨어 컴포넌트를 삭제하고 어떠한 이유로 그의 재설치를 금지하는 것과 같이 모든 목적에 대한 컴포넌트의 영구적인 전역적 디스에이블링과 같이 철저할 수 있다. 디스에이블링은 또한 예를 들어 컴포넌트 또는 컴포넌트 기능들의 서브세트가 제한된 시간 동안 지정된 액션에 사용되는 것을 일시적으로 제한하거나, 컴포넌트가 지정된 디지털 미디어 객체 상에서 동작하는 것을 일시적으로 제한함으로써 보다 약할 수 있다. 디스에이블 및 폐기라는 용어는 본 명세서에서 동의어인 경향이 있다.
본 명세서에서는 두 가지 유형의 폐기가 자주 언급된다. 여기서 사용되는 전역적 폐기는 모든 보호 미디어 객체에 대해 컴포넌트를 영구적으로 폐기하는 것을 지칭하는 경향이 있다. 전역적으로 폐기된 객체는 임의의 보호 미디어 객체가 디지털 미디어 액세스 플랫폼(1650)에 의해 액세스될 때 동작하는 것이 더 이상 허용되지 않을 수 있다. 제한된 폐기는 특정 미디어 객체가 컴퓨팅 장치에 의해 동작되고 있는 동안 컴포넌트를 완전히 디스에이블링하고, 이후에 컴포넌트가 정상 기능을 재개하는 것을 허용하는 것을 지칭하는 경향이 있다. 제한된 폐기의 주체인 컴포넌트는 특정 미디어 객체가 디지털 미디어 액세스 플랫폼(1650)에 의해 조작되고 있는 어떠한 목적으로도 액세스 가능하지 않을 수 있지만, 미디어 객체가 능동적 동작들로부터 안전하게 제거된 후에 컴포넌트는 그의 전체 범위의 정상 동작들이 허가될 수 있다. 제한된 폐기는 여기서 제외로도 지칭될 수 있다.
디지털 미디어 객체는 때때로 미디어 객체로 지칭될 것이다. 디지털 미디어 객체는 소비 가능 미디어의 개별 디지털 표현일 수 있다. 동영상, 노래, 서적, 에세이, 삽화, 사진, 및 데이터베이스 또는 유용한 데이터의 집합은 모두 디지털 방식으로 저장될 수 있으며, 따라서 디지털 미디어 객체의 형태를 취할 수 있다. 이러한 미디어 객체들에 대해, 노래에 대한 친숙한 웨이브(.wav) 및 MPEG 오디오 계층-3(.mp3) 포맷, 기록된 문서들에 대한 문서(.doc) 및 리치 텍스트 포맷(.rtf), 디지털 이미지들에 대한 .Tag 이미지 파일 포맷(.tiff) 및 합동 사진 전문가 그룹(.jpeg) 포맷 등과 같은 다양한 디지털 파일 포맷이 이용될 수 있다. 일반적으로, 미디어 객체들은 소정 형태의 컴퓨터 판독가능 매체에 저장된다.
본 발명에 사용하기에 적합한 리스트의 다양한 실시예들이 도 17에 제공된다. 도 17을 참조하면, 테이블 포맷으로 리스트가 도시되어 있다. 테이블이 요구되지 않고 그 대신에 컴포넌트들 및 임의의 관련 정보가 단일 컬럼 등으로 수집될 수 있다는 것을 이해할 것이다. 테이블은 고유 식별자들의 컬럼(1700)을 제공하는데, 이 컬럼에는 컴포넌트들을 고유하게 식별하는 데 사용되는 정보가 배치될 수 있다. 고유 식별자 컬럼(1700) 내의 식별자들은 또한 컴포넌트들의 그룹들, 예를 들어 특정 소스로부터의 임의의 컴포넌트를 고유하게 식별할 수 있다. 도 17의 고유 식별자들은 "컴포넌트 A"(1701), "컴포넌트 B"(1702) 등으로 예시된다. 스트링 "Yu2#abc"(1704)와 같은 숫자, 텍스트, 심볼 등의 스트링이 사용될 수도 있다. 바람직한 실시예에서, 전역적 고유 식별자들("GUID")(1705)은 리스트의 컴포넌트들의 고유 식별자로서 사용될 수 있다.
대응 컴포넌트에 대한 폐기 특성을 정의하는 폐기 범위 컬럼(1710)이 제공될 수 있다. 예를 들어, 컴포넌트 A(1701)와 같은 컴포넌트가 전역적 폐기(1711)를 위해 표기될 수 있다. 컴포넌트 B(1702)는 제한적 폐기(1712)를 위해 표기될 수 있다. 컴포넌트 C(1703)는 "미디어 컨텐츠 유형" 폐기(1713)를 위해 표기될 수 있다. 예를 들어, 컴포넌트 C가 실제로 한 클래스의 미디어 객체들, 예를 들어 영화 또는 음악 파일, 또는 .jpeg 포맷으로 저장된 파일들을 고유하게 식별하는 것으로 상정한다. 그러한 클래스에 대해 미디어 컨텐츠 유형 폐기(1713)를 이용하여 폐기가 적용될 수 있다. Yu2#abc 컴포넌트(1704)는 미디어 소스 유형 폐기(1714)를 위해 표기된다. 이 폐기(1714)는 지정된 소스로부터의 모든 미디어 객체에 대해 대응 컴포넌트(1704)를 디스에이블링하는 데 사용될 수 있다. 마지막으로, 폐기 범위 컬럼(1710)에서 임의의 다른 유형의 폐기(1715)가 식별될 수 있다. 다양한 상황을 위해 고안되는 많은 폐기 뉘앙스가 존재할 수 있으며, 임의의 그러한 뉘앙스는 하나 이상의 폐기 범위 컬럼(1710)에 지정될 수 있다.
전역적 폐기를 위해 표기되는 컴포넌트들을 갱신하기 위한 정보를 제공하기 위해 갱신 URL 컬럼(1720)이 제공될 수 있다. 도 17은 교체 컴포넌트에 대한 위치를 제시하기 위하여 친숙한 월드 와이드 웹(www) URL을 사용하지만, 인트라넷 또는 네트워크 위치, 또는 심지어 전화 번호 또는 거리 주소를 포함하는 임의의 위치가 그러한 컬럼에 지정될 수 있다. 그러한 컬럼(1720)의 목적은 컴포넌트가 폐기되는 컴퓨팅 장치의 사용자의 교체 컴포넌트에 대한 액세스를 용이하게 하는 것인 경향이 있다.
인터넷 위치는 전역적으로 폐기된 소프트웨어 컴포넌트를 교체하는 편리한 방법을 제공할 수 있다. 예를 들어, 갱신 URL 컬럼(1720) 내의 URL은 컴포넌트의 폐기를 담당한 도 16의 1600과 같은 리스트 조직의 인터넷 위치를 지정할 수 있다. 이것은 도 17의 요소 1721에 의해 제안된다. 리스트 조직(도 16, 1600)은 새로운 또는 교체 컴포넌트를 제공하거나, 컴퓨팅 장치를 새로운 또는 교체 컴포넌트를 제공할 수 있는 위치로 재지향시킬 수 있다. 마찬가지로, 리스트는 1722에서와 같이 컴포넌트 개발자에 대한 직접 링크, 또는 1724 및 1725에 의해 제시되는 바와 같이 컴포넌트의 폐기를 담당하는 미디어 객체 소유자 또는 소정의 다른 엔티티에 대한 링크를 제공할 수 있다.
마지막으로, 도 17의 컬럼들과 관련하여, 리스트 상의 컴포넌트들에 관련된 다른 유용한 정보(1730)를 제공하기 위해 임의 수의 추가 컬럼들 x, y, z 및 n이 제공될 수 있다. 이러한 컬럼들에 저장될 수 있는 소정의 예시적인 정보는 컴포넌트 및 그의 기능에 대한 평이한 영어 기술을 포함할 수 있다. 컴퓨팅 장치의 사용자가 리스트 상의 컴포넌트를 폐기하도록 프롬프트되는 상황에서, 사용자는 그러한 기술을 이용할 수 있는 이익을 얻을 수 있다. 또한, 다수의 조직이 리스트에 대한 갱신을 제공하는 것이 허가되는 경우, 리스트 조직(도 16, 1600)과 같은 특정 조직에 의해서만 갱신되는 것으로서 식별되는 소정의 컴포넌트들이 존재할 수 있다.
도 17의 리스트는 또한 최종 갱신 시간 T1(1760)을 지시할 수 있다. 컴포넌트들의 보안에 관련된 새로운 발견들은 계속 이루어지므로, 최근의 폐기 리스트는 오래된 또는 낡은 폐기 리스트보다 양호한 보안을 제공할 수 있다. 리스트가 변경되지 않는 경우에도, 컨텐츠 소유자들은 그들의 미디어 객체를 재생하는 컴퓨팅 장치들이 가장 최신의 리스트를 갖는 것이 보장되기를 원할 수 있다.
리스트의 허용가능한 실효도(staleness)는 미디어 객체의 가치와 연관될 수 있다. 최고 가치의 컨텐츠, 예를 들어 대형 화면 영화관 시장에 최근에 공개된 고해상도 영화는 컨텐츠를 렌더링하기 바로 전에 갱신된 리스트에 대한 검사를 요구할 수 있다. 중간 가치의 컨텐츠, 예를 들어 최근에 DVD 홈 비디오 시장에 공개된 표준 해상도 영화들은 한 달 이하로 오래된 리스트를 요구할 수 있다. 보다 낮은 가치의 컨텐츠, 예를 들어 "레드북 오디오" 컨텐츠와 같은 비보호 포맷으로도 이용가능한 보호 컨텐츠는 리스트 갱신을 강요하지 않을 수 있다.
도 17의 리스트는 변화 식별자(1750)를 더 포함한다. 변화 식별자는 리스트를 갱신하고 쉽게 액세스할 수 있는 리스트의 특성들에 대한 정보를 제공하는 데 사용될 수 있다.
모든 컴포넌트, 폐기, 교체 및 다른 정보를 제공하는 단일 마스터 리스트를 제공하는 대신에, 다수의 리스트가 제공될 수 있다. 예를 들어, 본 발명의 다양한 바람직한 실시예에서, 폐기 범위 컬럼(1710)이 사용되지 않을 수 있다. 대신에, 전역적 폐기 리스트(1870)가 이것의 유지를 담당하는 조직에 의해 제공될 수 있다. 도 18의 좌측에 도시된 전역적 폐기 리스트(1870)는 전역적으로 폐기되는 컴포넌트들에 대한 고유 식별자만을 포함한다. 컴포넌트 A(1701), 컴포넌트 D(1806), 컴포넌트 E(1807) 등이 예시적인 전역적 폐기 리스트(1870) 상에 도시되며, 따라서 전역적 폐기를 위해 지정된다.
또한, 도 18과 관련하여, 제한된 폐기 리스트(1871)와 같은 임의 수의 제한된 폐기 리스트가 미디어 객체의 소유자 및 배포자에 의해 제공될 수 있다. 이들은 예를 들어 도 16에 도시된 바와 같이 디지털 미디어 객체들(1606, 1607)과 함께 번들화된 보조 리스트(1620)로서 제공될 수 있다. 제한적 폐기 리스트(1871)는 제한된 폐기를 위해 지정되는 컴포넌트만을 포함하는 경향이 있다. 따라서, 컴포넌트 B(1702), 컴포넌트 M(1810), 컴포넌트 N(1811) 및 컴포넌트 0(1812)은 모두 제한적 폐기를 위해 지정된 것으로 도시된다.
도 18에서와 같은 전역적 폐기 컴포넌트 및 제한적 폐기 컴포넌트의 분류는 본 발명의 유연하고 안전한 이용을 허가한다. 컴포넌트의 전역적 폐기는 컴퓨팅 장치에 심각한 결과를 가져올 수 있으며, 따라서 전역적 폐기 능력을 광범위한 그룹의 작업자에게 허용하는 것을 권장되지 않을 수 있다. 그러나, 제한적 폐기는 그 자신에 대해서 폐기될 컴포넌트를 지정하는 미디어 객체에만 적용되는 경향이 있다. 따라서, 제한적 폐기는 폐기가 요청되는 특정 미디어 객체의 재생을 넘는 컴퓨팅 장치에 대한 영향을 미치지 않는다. 전역적 및 제한적 폐기로 분류함으로써, 리스트 조직(도 16, 1600)은 대부분의 미디어 객체에 대한 무허가 액세스를 방지하는 전반적으로 안전한 환경을 보장할 수 있으며, 미디어 객체 소유자 및 배포자는 컴퓨팅 장치의 정상 기능에 악영향을 미치지 않고 그들 자신의 미디어 객체에 대한 보안 레벨을 향상시킬 수 있다.
도 19는 도 18의 다수의 리스트를 실시하기 위한 예시적인 기술을 나타내는 블록도이다. 도 19는 도 16을 먼저 간단히 참조함으로써 최상으로 이해될 수 있다. 갱신(1608)된 리스트(1605)는 임의의 보조 리스트(1620)와 함께 리스트들(1605, 1608, 1620) 상의 컴포넌트들, 예를 들어 1630을 디스에이블링하는 정책 엔진(1611) 등에 의해 실시될 수 있다. 이것은 미디어 객체(1606 또는 1607)가 플랫폼(1650)으로 전달되기 전에, 따라서 다양한 컴포넌트(1660)의 동작에 노출되기 전에 수행될 수 있다.
컨텐츠 소유자는 미디어 객체(1912)에 대한 액세스를 허가하기 전에 컴포넌트들이 폐기되는 것을 보장하기 위해 소스 보안 관리자(1910)를 제공할 수 있다. 소스 보안 관리자(1910)는 컨텐츠 소유자의 요구에 맞춰질 수 있다. 이와 관련하여, 소스 보안 관리자는 미디어 객체(1912)로부터 보조 리스트(1921)를 판독할 수 있다. 또한, 소스로부터의 모든 미디어 객체에 대해 디스에이블될 컴포넌트들을 지정하는 소스 범용 리스트(1911)와 같은 임의의 추가 리스트를 판독할 수 있다. 또한, 소스 보안 관리자는 필요에 따라 다른 정보(1920)에 액세스하여 특정 미디어 객체(1912)의 재생 전에 디스에이블되어야 하는 임의의 다른 컴포넌트를 결정할 수 있다. 디스에이블될 모든 컴포넌트의 결정 후, 제외 리스트(1923)가 범용 정책 엔진(1900) 등으로 전달될 수 있다.
범용 정책 엔진(1900)은 모든 미디어 객체에 적용되는 전역적 폐기 리스트(1901)는 물론 제외 리스트(1923)를 실시할 수 있다. 범용 정책 엔진은 필요에 따라 애플리케이션(1902)과 인터페이스하여 컴퓨팅 장치의 사용자에게 폐기 컴포넌트를 통지하고 사용자에게 임의의 컴포넌트(1930)를 교체하도록 프롬프트할 수 있다. 대안으로, 이것은 사용자 인터섹션 또는 인식 없이 자동으로 수행될 수 있다. 컴퓨팅 장치가 미디어 객체(1912)를 렌더링할 준비가 되면, 컴퓨팅 장치는 소스 보안 관리자(1910)에게 통지할 수 있고, 미디어 객체(1912)를 정책 엔진 등에 전달할 수 있다.
정책 엔진(2032)의 다양한 기능이 도 20에 도시되어 있다. 정책 엔진(2032)은 전역 또는 보조 리스트 상에 지정된 컴포넌트 폐기의 판독 및 실시를 담당할 수 있다. 이것은 리스트 상의 임의의 컴포넌트를 미디어 객체와 상호작용할 수 있는 각각의 컴포넌트와 비교하는 것을 필요로 하는 경향이 있다. 리스트된 컴포넌트가 옵션인지 또는 원하는 미디어 객체에 대한 액세스를 위해 필요한 것인지에 따라 둘 이상의 상이한 실시 경험이 제공될 수 있다. 컴포넌트가 옵션인 경우, 컴포넌트 갱신 사용자 인터페이스는 그것이 디스에이블됨을 지시할 수 있고, 컴포넌트 변환은 프로세스로부터 제외될 수 있으며, 미디어 객체는 계속 재생될 수 있다. 컴포넌트가 필요한 경우, 사용자는 통지받을 수 있고, 컴포넌트는 프로세스로부터 제외될 수 있으며, 미디어 객체는 스킵, 즉 재생이 차단될 수 있다. 교체 컴포넌트가 발견되고 인스톨된 후, 사용자는 다시 원하는 미디어 객체에 대한 액세스를 시도할 수 있다.
리스트의 실시에 따라, 정책 엔진(2032)은 또한 리스트 및 디스에이블된 컴포넌트를 갱신할 수 있다. 이들 프로세스는 도 20에 도시된다. 정책 엔진(2032)에 의해 임의의 리스트가 갱신될 수 있지만, 바람직한 실시예에서는 미디어 객체들이 제외될 그들 자신의 컴포넌트 리스트 및 아마도 또한 전역적 폐기 리스트의 신선도를 지정한다. 이러한 구성에서는 전역적 폐기 리스트만이 갱신되는 경향이 있다.
리스트 갱신을 트리거하는 다양한 방법이 존재할 수 있다. 다양한 실시예에서, 운영 체제 또는 장치가 갱신된 전역적 폐기 리스트를 주기적으로 검사할 수 있다. 소스 신뢰 담당자로도 지칭될 수 있는 소스 보안 관리자는 또한 갱신 리스트를 요구함으로써 갱신을 트리거할 수 있다. 갱신은 자동으로 수행되거나, 사용자가 전역적 폐기 리스트의 검사 또는 갱신을 거부할 수 있는 옵션을 제공받을 수 있다. 사용자가 갱신의 수행을 거부하는 경우, 갱신 리스트를 필요로 하는 컨텐츠는 재생되지 못할 수 있다.
갱신이 트리거되면, 도 20에 지시된 프로세스가 발생할 수 있다. 먼저, 정책 엔진(2032)이 리스트 갱신 UI(2021)을 개시할 수 있다. 이것은 사용자에게 리스트 갱신이 미결 상태인 컴퓨팅 장치를 통지하여 갱신을 거부할 기회를 제공할 수 있다. 사용자는 언제, 어떻게 리스트를 갱신하기를 원하는지를 지정하는 것이 허가될 수 있다. 예를 들어, 사용자는 갱신에 대해 검사를 하지 않거나 갱신을 주기적으로 검사하고 사용자에게 통지하는 것을 지정할 수 있다. 후자의 경우, 리스트 조직(2000)의 리스트 서비스 웹 사이트(2001) 등으로부터의 갱신 리스트의 검색이 장치가 온라인 상태일 때 이루어질 수 있다. 새로운 리스트가 이용가능한 경우, 새로운 리스트가 이용가능함을 지시하는 아이콘이 사용자의 데스크탑 상에 나타날 수 있다. 사용자는 또한 리스트에 대한 자동 갱신을 지정하는 것이 허가될 수 있다. 장치가 온라인 상태일 때, 이용가능한 갱신 리스트가 리스트 조직(2000)의 리스트 서비스 웹 사이트(2001) 등으로부터 자동으로 다운로드될 수 있다. 갱신들은 리스트 저장 장치(2031)에 안전하게 저장될 수 있다.
전역적 폐기 리스트 상에 배치된 컴포넌트들은 정책 엔진(2032) 등에 의해 컴퓨팅 장치의 사용자에 대해 교체 UI(2022)를 론칭함으로써 교체될 수 있다. UI는 사용자에게 컴포넌트가 폐기됨을 통지할 수 있다. 또한, 컴포넌트가 언제 폐기되었는지, 폐기된 컴포넌트 이름, 누가 컴포넌트를 폐기했는지, 그리고 폐기가 전역적인지, 제한적인지, 또는 지정 소스로부터의 모든 컨텐츠에 대한 것인지를 기술하는 추가 정보를 사용자에게 제공할 수 있다. 사용자는 컴포넌트가 미디어 세션을 위해 필요한지의 여부, 폐기된 컴포넌트를 교체할 위치 등을 더 통지받을 수 있다. 이와 관련하여, "지금 갱신" 및 "보다 많은 정보" 버튼이 UI의 일부일 수 있다. "보다 많은 정보"는 문제점 및 사용자가 이를 해결하기 위해 취할 수 있는 단계들을 기술하는 웹 페이지 등으로 사용자를 안내할 수 있다. "지금 갱신"은 사용자를 컴포넌트를 교체하는 다운로드 경험으로 안내할 수 있다. 대안으로, 컴포넌트는 사용자 입력 또는 인식 없이 자동 교체될 수 있다. 교체 및 갱신이라는 용어는 이 상황에서 동의어로 사용될 수 있다.
다운로드 경험은 먼저 컴포넌트 발견 서비스(2002)에 액세스할 수 있다. 이 서비스(2002)는 리스트로부터의 고유 식별자를 이용하여 어느 컴포넌트를 교체할지를 결정할 수 있다. 그러한 결정이 이루어지면, 서비스는 교체 컴포넌트를 리스트 조직 컴포넌트 다운로드 서비스(2003)를 통해 직접 클라이언트(2050)에게 다운로드해줄 수 있다. 그렇지 않은 경우, 리스트 조직은 클라이언트(2050)를 제3자 컴포넌트 다운로드 서비스(2010)로 재지향시킬 수 있다. 컴포넌트들이 이용될 수 있는 위치들의 리스트를 유지함으로써, 리스트 조직은 클라이언트(2050)가 오래된 또는 부정확한 인터넷 위치로 지향되지 않는 것을 보장할 수 있다. 컴포넌트 다운로드 또는 갱신 프로세스의 완료시, 컴포넌트 갱신 UI(2022)는 사용자에게 교체 컴포넌트를 설치하도록 프롬프트할 수 있거나, 정책 엔진(2032) 등에 의해 교체 컴포넌트가 자동 설치될 수 있다.
갱신 리스트의 다운로드와 관련하여, 리스트의 갱신은 중앙 리스트 조직만이 아니라 임의의 소스로부터 유래될 수 있다는 점에 유의한다. 이와 관련하여, 도 16은 개별 컴포넌트 정보 저장소(1603)로부터 유래되는 리스트 갱신(1608)을 나타낸다. 도 16에서의 리스트 발생자(1600) 및 리스트 갱신자(1603)의 분리는 리스트 갱신이 임의의 신뢰 소스로부터 유래될 수 있음을 제안하는 것을 의도한다. 그러나, 바람직한 실시예에서는, 1600과 같은 단일 조직이 리스트(1605)를 발생시키고 갱신하는 모두를 행하는 것이 더 효율적일 수 있다.
다양한 바람직한 실시예는 탬퍼링을 방지하기 위한 리스트의 보안 전송 및 저장을 제공한다. 리스트가 탬퍼링되는 경우, 디스에이블되어야 하는 컴포넌트들이 그리 되지 않을 수 있으며, 따라서 본 발명이 보호하도록 설계된 미디어 객체들, 다른 데이터 및/또는 전체 시스템의 보안이 손상될 수 있다. 또한, 새로운 정보가 발견됨에 따라, 잠재적인 보안 허점이 발견될 수 있고, 따라서 리스트 갱신이 주기적으로 이용가능하게 될 수 있다. 이들 갱신은 탬퍼링을 방지하기 위해 안전해야 한다. 이러한 갱신들은, 경험이 월간 갱신이 전역적 폐기 리스트에 대해 만족스러운 간격을 제공한다는 것을 나타내고 있지만, 임의의 간격으로 이용될 수도 있다. 새로운 컴포넌트가 리스트에 추가되지 않는 경우, 공백 갱신 등이 클라이언트 장치에 제공되어 컨텐츠 소유자의 신선도 요건을 만족시킬 수 있다.
데이터를 안전하게 전송하고 저장하기 위한 다양한 기술이 이 분야에 공지되어 있으며, 임의의 그러한 기술이 사용될 수 있다. 리스트를 전송하는 바람직한 하나의 방법이 보안 클럭 방법으로 알려져 있다. 이 방법은 재생 공격, 맨 인 더 미들(man-in-the-middle) 공격, 및 클럭 롤백 공격을 방지하는 이점을 갖는다. 이러한 기술을 이용하여, 클라이언트(2110)와 갱신 서버(2100) 간의 통신은 도 21에 도시된 프로세스를 개시한다. 먼저, 클라이언트 컴퓨팅 장치(2110)는 그가 가지고 있는 현재의 전역적 폐기 리스트에 대한 최종 갱신 클럭 T1을 검색한다(2101). 이어서, 클라이언트(2110)는 리스트 서비스 보안 클럭 서비스(2100)로부터 현재의 보안 클럭 T2를 검색한다(2102). 이어서, 클라이언트(2110)는 T1과 T2를 비교하여, 리스트 서비스 갱신 서비스(2100)에 갱신 요청을 전송할 필요가 있는지를 결정한다(2103). 이러한 요청이 전송된 경우, 이 요청은 T1, 전역적 폐기 리스트를 식별하는 GUID와 같은 고유 식별자, 및 클라이언트 버전 번호를 포함할 수 있다. 이어서, 리스트 서비스 갱신 서비스(2100)는 클라이언트(2110)의 요청 및 그의 현재 신선도 클럭 T1을 취득한다. 이 서비스(2100)는 전역적 폐기 리스트가 T1 이후에 갱신되었는지를 검사한다(2105). 그러한 경우, 리스트 서비스(2100)는 최종 전역적 폐기 리스트를 클라이언트(2110)에게 전송하려고 준비할 수 있다. 그렇지 않은 경우, 리스트 서비스(2100)는 단순히 공백 갱신을 식별하기 위한 응답 스트링을 전송할 준비를 할 수 있다. 리스트 서비스(2100)는 또한 현재 보안 클럭 시간 T3을 검색할 수 있다. 클라이언트 버전, T1, T3 및 응답이 리스트 서비스(2100)에 의해 함께 서명되어(2105), 탬퍼링을 방지할 수 있다. 이러한 서명된 패키지는 클라이언트(2110)에게 전송될 수 있다(2106).
클라이언트(2110)는 응답을 취득한 때 응답의 무결성 및 그가 포함하는 클럭 시간 T1, T3를 검사할 수 있다(2107). T3는 T2 및 T1보다 커야 하며, 클라이언트 버전은 클라이언트(2110)가 서버(2100)에 전송한 오리지널 값과 동일해야 한다. 이것은 맨 인 더 미들 및 클럭 롤백 공격을 방지하기 위함이다. 마지막으로, 클라이언트(2110)는 그의 전역적 폐기 리스트의 최종 갱신 클럭을 T3로 갱신하고(2108), 필요에 따라 전역적 폐기 리스트 자체를 갱신할 수 있다(2108). 이 분야의 전문가들은 다른 보안 프로토콜 및 상기 프로토콜의 변형 등이 리스트의 보안 갱신을 제공하기 위해 소정의 상황에서 실행될 수 있고 바람직할 수 있다는 것을 이해할 것이다.
클라이언트 버전 번호의 사용에 주목한다. 이것은 리스트 서비스(2100)가 클라이언트(2110)에 대한 미래의 배포를 위해 배포 메커니즘을 갱신하는 것을 가능하게 한다. 예를 들어, 리스트 서비스(2100)는 완전한 또는 비어 있는 폐기 리스트를 단지 클라이언트에게 전달함으로써 시작할 수 있다. 그러나, 이후에 리스트 서비스(2100)가 전체 폐기 리스트의 다운로드가 너무 크다고 판정하는 경우, 리스트 서비스는 전역적 폐기 리스트의 갱신 부분만을 전송하도록 델타 메커니즘을 설계할 수 있다. 그러한 경우, 새로운 클라이언트(2110)는 상이한 버전 번호를 할당받을 수 있다.
성공적인 전송 후, 리스트는 임의의 적절한 위치에 저장될 수 있다. 리스트가 서명되는 경우, 리스트는 액세스될 때마다 검증될 수 있으므로 보안 위치에 저장될 필요가 없다. 대안으로 리스트는 폐기된 컴포넌트들이 폐기 상태로 유지되는 것을 보장하기 위하여 파일 롤백 공격을 받지 않는 안전한 장소에 배치될 수 있다.
위의 설명은 리스트의 다양한 유형 및 소스 및 그러한 리스트를 실시하고 갱신하기 위한 프로세스를 포함하는 리스트의 다양한 실시예를 상세히 설명하고 있다. 아래의 간단한 설명은 도 16의 리스트 서비스(1600)와 같은 리스트 서비스에 의해 그러한 리스트를 생성하는 기술에 관한 것이다. 일반적으로, 이 프로세스는 미디어 객체들(1606, 1607)과 관련하여 컴퓨팅 장치 상에서 동작할 수 있는 컴포넌트들(1660)에 대한 고유 식별자를 생성하는 단계를 포함한다. 컴포넌트들이 또한 리스트 조직에 의해 안전을 위해 인증될 수 있는 추가적인 특징들이 제공된다. 다양한 바람직한 실시예에서, 인증된 컴포넌트들만이 미디어 객체와 관련하여 동작하는 것이 허가될 수 있다.
도 22는 플러그인들이 디지털 미디어 플랫폼(도 16, 1650)에 로딩되는 것을 허가하는 식별 정보와 연관될 수 있는 방법을 위한 예시적인 프로시저를 나타내는 블록이다. 다양한 바람직한 실시예에서, 어떠한 컴포넌트도 리스트 조직에 의해 인증되지 않는 한 디지털 미디어 플랫폼 등과 관련하여 동작하는 것이 허가되지 않는다. 인증 프로세스의 일부로서 컴포넌트에 고유 식별자가 할당되며, 이 고유 식별자는 폐기 리스트와 비교될 수 있다. 따라서, 도 22는 컴포넌트 개발자들이 디지털 미디어 플랫폼 등과 함께 사용하기 위해 이용될 수 있기를 원하는 개발된 컴포넌트에 대한 인증 및 고유 식별자를 취득하는 것을 가능하게 하는 인증 프로세스를 제공한다.
먼저, 단계 22의 단계들은 컴포넌트 개발자들이 예시적인 단계들 2201 내지 2203을 따라 그들의 컴포넌트에 대한 정식 인증서를 취득하고, 그들의 컴포넌트에 서명할 수 있음을 나타낸다. 컴포넌트 개발자는 단독으로 공개/비밀키 쌍(K1pub, K1pri)을 생성할 수 있다(2201). 이어서, 컴포넌트 개발자는 공개키(K1pub)를 임의의 신뢰 루트, 예를 들어 VERISIGN(등록상표)에 전송하여, 정식 인증서를 취득할 수 있다(2202). 이어서, 컴포넌트 개발자는 비밀키(K1pri)와 함께 표준 서명 방법을 이용하여 그들의 컴포넌트들 각각에 서명할 수 있다(2203). 이 서명은 2202로부터의 인증서와 함께, 일반적으로 컴포넌트의 사용자들이 컴포넌트가 실제로 상기 컴포넌트 개발자의 소유이고 컴포넌트가 생성된 후에 수정되지 않았음을 확인할 수 있게 한다.
상기 단계들 2201 내지 2203은 이 분야의 전문가들에게는 다른 상황으로부터 인식될 수도 있다. 2201 내지 2203의 상기 단계들을 수행한 후, 컴포넌트가 디지털 미디어 플랫폼 등에 로딩될 수 있기 전에 추가 단계들 2204 내지 2205가 요구될 수도 있다. 단계 2204에 나타낸 바와 같이, 개발자는 컴포넌트를 식별하는 정보를 디지털 링크 라이브러리(DLL) 등과 같이 컴포넌트와 연관된 서명된 블로브(blob)에 배치하도록 요구될 수 있다. 이 블로브는 예를 들어 XML 매니페스트일 수 있다. 식별 정보는 바람직하게는 컴포넌트의 해시를 포함하는데, 이는 블로브가 실제로 식별된 컴포넌트에 대한 것임을 확인한다. 블로브에 포함된 다른 정보는 컴포넌트에 고유한 GUID와 같은 고유 식별자, 개발자의 회사 이름, 및 컴포넌트와 연관된 다른 유용한 정보일 수 있다. 고유 식별자는 폐기 리스트의 컴포넌트를 식별하는 데 사용된다는 것을 상기한다. 이러한 고유 식별자는 임의의 패턴, 예를 들어 벤더 이름, 공개키, 고유 ID를 고유 식별 정보로서 포함할 수 있다. 신뢰 루트에 의해 서명된 임의의 정보는 비교 목적에 이용될 수 있다. 원할 경우, 컴포넌트 개발자는 단계 2201로부터의 동일 비밀키(K1pri) 또는 새로운 비밀키(K2pri)를 이용하여 식별 블로브에 서명할 수 있다.
마지막으로, 컴포넌트 개발자는 개별 인증을 위해 대응하는 공개키(K1pub 또는 K2pub)를 리스트 조직에 전송할 수 있다(2205). 이 시점에서, 리스트 조직은 컴포넌트 개발자에게, 제공된 식별 정보가 올바르고, 고유 식별자의 복제 이용이 존재하지 않으며, 컴포넌트가 디지털 컨텐츠를 보호하도록 설계된 소정의 일반 준수 규칙을 지킨다는 계약서에 서명할 것을 요청할 수 있다.
정책 엔진(도 16, 1611) 등은 리스트 조직을 신뢰할 수도 있다. 따라서, 리스트 조직으로부터의 인증(2205)은 정책 엔진에게 인증된 컴포넌트가 디지털 미디어 플랫폼 등에 안전하게 로딩될 수 있으며 식별 정보가 실제로 이 컴포넌트에 속하고 탬퍼링되지 않았음을 지시한다.
도 23은 컴포넌트 개발자로부터 유래되는 정보가 올바른지를 검증하는 프로세스를 나타내는 블록도이다. 도 23의 단계들은 정책 엔진 등과 같이 리스트의 실시를 담당하는 소프트웨어, 디지털 로직 등에 의해 수행될 수 있다. 먼저, 정책 엔진은 컴포넌트로부터 2202에서 취득한 정식 인증서를 검색할 수 있다. 정책 엔진은 표준 방법을 이용하여 인증서의 무결성을 검증한다(2301). 이어서, 정책 엔진은 인증서로부터 컴포넌트 개발자의 공개키를 검색하고 이 공개키를 컴포넌트의 서명을 검증하는 데 사용한다(2302). 이 시점에서, 검증이 성공적인 경우, 정책 엔진은 컴포넌트 개발자가 컴포넌트를 보증하고 컴포넌트가 그 이후 수정되지 않았음을 보장한다.
도 23의 후속 단계들에서, 정책 엔진은 단계 2301 및 2302를 반복하여 2204로부터의 식별 블로브를 검증한다. 구체적으로, 정책 엔진은 먼저 2205에서 취득한 인증서를 검색하고, 표준 방법을 이용하여 그 인증서의 무결성을 검증할 수 있다(2303). 이어서, 정책 엔진은 리스트 조직 인증서로부터 컴포넌트 개발자의 공개키를 검색하고, 이 공개키를 이용하여 식별 정보 상의 서명을 검증할 수 있다(2304). 전술한 바와 같이, 식별 정보 블로브는 바람직하게는 컴포넌트의 해시를 포함하는데, 이는 블로브를 검증하는 데 사용될 수 있다. 정책 엔진 등은 이 해시를 검색한 후, 해시가 컴포넌트와 매칭됨을 검증할 수 있는데, 이는 식별 정보가 컴포넌트에 실제로 대응함을 확인한다.
마지막으로, 정책 엔진은 서명된 블로브 내의 식별 정보가 폐기 리스트 내의 엔트리들 중 하나와 매칭되는지를 판정할 수 있다(2305). 이 프로세스는 리스트 서비스로부터 취득된 전역적 폐기 리스트 및 디지털 미디어 객체 등으로부터의 제외 리스트 양자에 대한 고유 식별자의 검사를 수반할 수 있다. 전술한 바와 같이, 식별 정보는 고유 GUID, 개발자의 회사 이름, 개발자의 공개키 등을 포함할 수 있다. 폐기 리스트의 각각의 엔트리는 이들 필드 중 하나 이상과 매칭되는 패턴을 가질 수 있다. 이것은 리스트 서비스 또는 디지털 미디어 객체가 특정 개발자로부터의 특정 컴포넌트(GUID에 의해) 또는 모든 컴포넌트, 또는 특정키로 설명된 모드 컴포넌트 등을 폐기할 수 있게 한다.
컴포넌트의 식별 정보가 폐기 리스트의 엔트리들 중 하나와 매칭되는 경우, 정책 엔진은 컴포넌트가 디지털 미디어 객체의 컨텐츠에 대한 액세스를 취득하는 것을 허가하지 않을 수 있다. 이러한 거부 자체는 이 분야의 전문가들이 이해하는 바와 같은 다양한 메커니즘을 이용하여 구현될 수 있다.
디지털 미디어를 보호하기 위한 컴포넌트의 디스에이블링 또는 폐기에 대한 위의 설명을 요약하면, 리스트는 폐기될 컴포넌트를 식별하는 데 사용될 수 있다. 리스트는 안전하게 전송 및 저장되어야 한다. 신뢰 프로세스가 리스트를 판독하고, 리스트 상의 컴포넌트의 폐기를 담당할 수 있다. 다양한 폐기 등급이 지정될 수 있다. 전역적 리스트가 모든 미디어 객체에 대해 컴포넌트를 폐기할 수 있는 반면, 임의 수의 보조 리스트가 미디어 객체들의 서브세트들에 대해서만 폐기될 컴포넌트를 열거할 수 있다. 리스트는 또한 사용자들에게 폐기, 리스트의 갱신을 통지하고 이들을 디스에이블된 컴포넌트들의 교체 또는 갱신을 통해 안내할 수 있는 사용자 인터페이스에 대한 정보를 제공할 수 있다.
보호 컴퓨팅 환경의 요소들의 개별화
아래의 설명은 고유 장치 인증서의 생성 및 개별화를 제공하기 위해 장치, 시스템 또는 소프트웨어 컴포넌트에 고유 장치 인증서를 연관시키는 것을 포함하는, 보호 환경의 요소들 또는 컴포넌트들의 개별화를 위한 시스템 및 방법을 제공한다. 템플릿을 이용하여 소비자 전자 장치, 시스템 또는 소프트웨어 컴포넌트를 구축함으로써, 고유 장치 인증서가 나중에 생성될 수 있다. 장치 인증서의 생성의 지연을 가능하게 함으로써, 제조 공정은 간단해지는 경향이 있다. 템플릿은 제조자의 생산 라인 내의 모든 장치에 공통적인 경향이 있는 정보를 포함하며, 제조 프로세스가 완료된 후에 장치, 시스템 또는 컴포넌트가 개별화 프로세스를 이용하여 고유 장치 인증서를 생성하고, 그리고/또는 이것을 이용하여 갱신되는 것을 가능하게 한다. 개별화 시스템 및 방법의 일례가 2004년 12월 20일자로 출원된 미국 특허 출원 번호 11/018,095에 제공되어 있는데, 이 출원의 전체 내용은 본 명세서에 참고로 반영되고 아래에 설명된다.
개별화된 컴포넌트는 고유 보안 업그레이드를 수신하는 것과 같은 개별화를 통해 고유하게 된 컴포넌트이다. 컨텐츠 제공자들은 그들의 컨텐츠가 개별화된 시스템 상에서만 재생될 것을 요구할 수 있다. 개별화 프로세스 동안, 인증 담당자의 개별화 서비스 등은 컴포넌트에 결합되는 고유 인증서를 생성할 수 있다. 컴포넌트가 개별화되면, 공개/비밀키 쌍이 생성될 수 있다. 비밀키는 개별화 프로세스에서 생성된 컴포넌트에 저장될 수 있다. 대응하는 공개키는 라이센스를 요청할 때 컴포넌트의 식별자로서 사용될 수 있으며, 클리어링하우스가 이 키를 이용하여 라이센스를 암호화할 수 있다. 컴포넌트가 다른 호스트로 이동되는 경우, 컴포넌트는 다른 개별화를 요구할 수 있다. 클리어링하우스에 의해 승인된 라이센스는 컴퓨터 또는 소비자 전자 장치와 같은 다른 시스템 상에서는 전송 또는 사용가능하지 않을 수 있다.
개별화는 공격에 의해 발생하는 손상을 줄일 수 있는데, 이는 시스템 상의 컴포넌트가 손상되는 경우 그 시스템만이 영향을 받는 경향이 있기 때문이다. 그러나, 이것은 권리의 이식성에 관한 어려움을 유발할 수 있는데, 예를 들어 사용자가 그의 친구의 거소에서 영화를 보거나 그의 친구의 휴대 장치(PDA, 이동 전화, 휴대 재생기 등)에서 음악을 듣기를 원할 때, 사용자는 컨텐츠 소비를 가능하게 하기 위해 각 장치에 대한 새로운 라이센스를 취득해야 할 수 있다. 사용자 경험에 대한 디지털 라이센싱 프로세스의 영향을 줄이기 위하여, 소정의 솔루션들은 사용자들이 그들의 라이센스를 백업하고 이들을 다른 시스템에 복원하는 것을 가능하게 한다. 남용을 방지하기 위하여, 사용자들은 일반적으로 제한된 횟수만 이를 행할 수 있다.
도 24는 일반적인 디지털 권리 관리 시스템(2400)을 나타내는 블록도이다. 디지탈 권리 관리(DRM)는 특히 디지털 미디어(2410)에서 권리를 정의하고, 포함시키고 실시하기 위한 시스템을 제공한다. DRM 시스템(2400)은 안전하지 않을 수 있는 인터넷(2405)과 같은 채널을 통해 서비스 제공자(2407)로부터 미디어 컨텐츠(2410)의 안전한 배포를 제공한다. 시스템(2400)은 이용 규칙을 실시하고 멀티미디어 컨텐츠(2410)가 불법으로 이용되는 것을 방지할 수 있다. 이용 규칙은 만료 일자, 사용자가 오디오 또는 비디오 파일을 재생할 수 있는 횟수, 및 사용자가 오디오 또는 비디오 파일을 복사할 수 있는 횟수 등을 포함할 수 있다.
일례로, 퍼스널 컴퓨터(2403)는 인터넷(2405)에 접속하여 서비스 제공자(2407)로부터의 컨텐츠를 소비자 전자 장치(2401)로 전송하는 데 사용될 수 있다. 경로(2402, 2404)를 통해 PC(2403)로, 그리고 CE 장치(2401)로 정보를 전송하기 위한 프로토콜들은 USB, 적외선, 블루투스, MTP 등과 같은 통상의 접속에 의해 달성될 수 있다. 대안적인 실시예에서, 소비자 전자 장치는 퍼스널 컴퓨터(2403)의 이용 없이 서비스 제공자에 결합될 수 있다. 퍼스널 컴퓨터 및 CE 장치들은 이 분야의 전문가에게 알려진 임의 수의 적절한 운영 체제를 이용하여 동작할 수 있다. 본 설명에서 기술되는 기능들을 구현하기 위한 명령들은 소프트웨어, 하드웨어(예를 들어, ASIC에 버닝된 명령들), 또는 이들의 조합으로서 존재할 수 있다.
일반적인 사용에 있어서, DRM(2400)은 암호화된 데이터 파일(2409)을 제공함으로써 컨텐츠(2410)를 보호하는 경향이 있다. 파일들(2409)은 암호화되므로, 데이터 자체가 보호된다. 따라서, 파일들(2409)은 제한 없이 이동, 보관, 복사 또는 배포될 수 있다. 파일들을 숨기거나 액세스 불가능하게 하거나, 또는 암호화된 파일들을 시스템에서 시스템으로 전송할 때 적절한 특수 보호를 행할 필요가 없는데, 파일의 복사 및 파일의 다른 곳으로의 제공은 이들이 파일을 사용하지 못하게 할 것이기 때문이다. 암호화된 파일을 사용할 수 있도록 하기 위하여, 사용자는 라이센스(2408)를 취득해야 한다. 이 라이센스(2408)는 암호화된 파일(2410)에 대한 제어를 실행하는 방법이다. 라이센스(2408)는 일반적으로 단일 머신(2401)에 대해 허가되며, 복사되는 경우에도, 라이센스는 다른 시스템 상에서 기능하지 않는 경향이 있다.
각각의 라이센스(2408)는 파일 내의 데이터가 어떻게, 어떤 조건 하에 사용될 수 있는지를 정의하는 권리 및 제한을 포함한다. 예를 들어, 음악 파일 라이센스는 "재생할 권리"를 포함하지만, "CD에 구울 권리"는 포함하지 않으며, 2005년 10월 1일과 2005년 11월 1일 사이의 기간 동안 이들 권리를 가능하게 할 수 있다. 또한, 파일에 대한 다수의 라이센스가 존재하는 것이 가능하다. 이들 라이센스 중 하나가 필요한 권리를 허가하는 한, 사용자는 원하는 방식으로 파일에 액세스하여 사용할 수 있을 것이다. 액세스는 암호 방식으로 파일을 해독하고, 패스워드에 의해 파일에 대한 액세스를 취득하는 것 등을 지칭할 수 있으며, 이에 따라 소비자 전자 장치 또는 시스템은 파일의 컨텐츠를 보고, 재생하고, 달리는 이를 이용할 수 있게 된다.
설명되는 실시예들에서, 라이센스(2408)는 암호화된 컨텐츠(2409)가 소비자 전자 장치(2401) 등에서 재생되는 것을 허가하는 장치 인증서(2411)와 관련하여 동작하는 경향이 있다. 파일은 또한 시스템이 비디오 또는 픽처 능력을 제공하는 경우에 보여질 수 있다. 보거나 재생을 위한 파일들은 일반적으로 음악 파일, 픽처 파일, 비디오 파일, 문서 등을 포함한다. 요컨대, 서비스 제공자가 채널을 통해 안전하게 전송하기를 원하는 임의의 것이다. 시스템은 장치 인증서를 통해 그 자체를 식별한다. 이러한 예시적인 XML 구조, 또는 그의 등가물은 CE 장치, 리스트 지원 특징들을 기술하며, 또한 시스템의 공개키를 포함한다. 장치 인증서(2411)는 개별 시스템, 소비자 전자 장치 등에 고유할 수 있다. 실시예들에서, 고유 장치 인증서(2411)는 소비자 전자 장치(2401), 소프트웨어 컴포넌트 등과 함께 패키지화되는 장치 인증서 템플릿(2412)으로부터 생성되는 경향이 있다. 장치 인증서 템플릿은 고유 장치 인증서의 생성을 돕는 특수 패턴, 가이드 등으로 간주될 수 있다.
컨텐츠, 데이터 등의 이용 또는 재생을 제공하는 소비자 전자 장치(2401), 컴퓨터 시스템 또는 다른 시스템 등은 디지털 권리 관리(DRM) 장치로서 지칭될 수 있다. 이러한 장치들은 보호 컨텐츠(2409)의 배포 및 컨텐츠(2409), 데이터 등에 대한 액세스를 제어하는 DRM 시스템(2400)의 일부일 수 있다. DRM 인에이블드 장치들(2401)은 DRM 동작들의 보안을 보증하는 것을 돕는 데 사용될 수 있는 "장치 인증서"("Dev Cert")(2411)라고 하는 XML(또는 XML의 등가물) 객체를 포함할 수 있다. 일반적으로, 장치 인증서는 XML을 포함하지만 이에 제한되지 않는 임의의 포맷 또는 데이터 구조로 제공될 수 있다. 장치 인증서(2411)는 각각의 CE 장치(2401) 또는 컴포넌트에 고유할 수 있으며, 이는 일반적으로 제조자가 CE 장치(2401) 또는 컴포넌트에서 간단한 일련 번호 등보다 제공하기가 어렵다.
장치 인증서(2411)는 장치(2401) 또는 컴포넌트가 보호 컨텐츠(2409)에 액세스하도록 허가되는 것을 인증함으로써 보안을 제공하기 위하여 소비자 전자 장치(2401) 또는 컴포넌트 등에서 사용될 수 있는 보안 장치이다. 장치 인증서는 외부 엔티티가 신뢰하고 의지하여 CE 장치에 컨텐츠를 제공하게 할 수 있는 증명서이다. 장치 인증서는 또한 컨텐츠 또는 데이터의 액세스에 사용하기 위해 컴포넌트를 검증하고 허가하는 데 사용될 수 있다. 이러한 자동화된 장치 인증은 보호 미디어 컨텐츠 또는 다른 데이터의 안전한 재생 또는 이용을 위해 설계된 시스템(2400)에서 사용될 수 있다.
예시적인 장치 인증서(2411)는 장치 식별, 장치 성능 요구, 중요 정보, 공개키 정보 등을 함께 수집하는 XML 객체일 수 있으며, 정보를 디지털 방식으로 서명된 단일 장치 인증서 등으로 제공할 수 있다. 장치 인증서는 일반적으로 공개키 및 서명을 최소한으로 사용하며, 장치 인증서에 포함된 다른 정보는 옵션인 경향이 있다. 장치 인증서(2411)는 장치 인증서(2411)가 그에 수반하는 장치(2401) 또는 컴포넌트의 정확한 반영이라는 OEM에 의한 인증일 수 있는 OEM 서명 인증서(도시되지 않음)에 의해, 그리고 아마도 OEM이 DRM 시스템을 생성하고 인증하도록 허가된 것을 인증하는 제3자 컨텐츠 조정자 인증서(도시되지 않음)에 의해 서명될 수 있다.
설명되는 실시예들은 OEM 생산 라인에서 각각의 소비자 전자 장치(2401), 또는 많은 시스템 상에 설치될 수 있는 소프트웨어 컴포넌트들에 대해 고유하고 검증 가능한 장치 인증서(2411)를 생성하는 것과 관련된 제조 문제를 해결한다. 실시예들은 제조자가 일반적으로 생산 라인의 모든 시스템에 대해 동일한 장치 인증서 템플릿(2412)을 이용하여 전체 생산 라인을 쉽핑하는 것을 가능하게 한다. 템플릿(2412)을 이용하여, 장치(2401)는 제조 후에 자동으로 그리고 안전하게 그 자신을 개별화할 수 있다. 즉, 장치는 장치 내에 구축된 템플릿(2412)에 기초하여 고유 장치 인증서(2411)를 생성한다. 대안으로, 개별화는 장치는 아니지만 장치에 결합되는 개별화 서비스의 지원 하에 달성될 수 있다. 이어서, 장치(2401)는 적절한 라이센스(2408) 또는 개별화된 컴포넌트가 존재할 때 암호화된 컨텐츠(2409)에 액세스할 수 있다.
장치 인증서 템플릿(2412)은 일반적인 장치 인증서의 섹션들을 가질 수 있으나, 장치 고유 섹션들은 비어 있는 경향이 있다. 템플릿(2412)은 OEM 또는 제조자에 의해 서명될 수 있으며, 제3자 컨텐츠 제공자의 고유한 장치 허가 인증서를 포함할 수 있다. 장치 인증서 템플릿(2412)으로부터 장치 인증서(2411)를 생성하기 위하여, 장치 인증서 개별화 프로세스가 개시된다. 장치 인증서가 생성된 경우, 보호 컨텐츠가 장치에 의해 액세스되고 이용될 수 있다.
도 25는 완전한 장치 인증서들(2504, 2505, 2506)을 가진 소비자 전자 장치, 컴포넌트 또는 시스템(2501, 2502, 2503)을 제조하는 통상의 방법을 나타내는 블록도이다. 각각의 장치(2501, 2502, 2503)는 대응하는 고유 장치 인증서(2504, 2505, 2506)를 갖도록 제조되는 경향이 있다. 각각의 장치 인증서는 함께 쉽핑되는 장치 또는 컴포넌트에 고유한 경향이 있다. 이러한 고유 장치 인증서의 제공은 일반적으로 장치 또는 컴포넌트의 제조에 필요한 추가 단계인데, 이는 제조의 비용 및 복잡성을 증가시키는 경향이 있다.
도 26은 나중에 고유 장치 인증서들(2604, 2605, 2606)의 생성을 가능하게 하는 공통 장치 템플릿(2412)을 이용하여 장치들(2401, 2602, 2603), 소트프웨어 컴포넌트 등을 제조하는 방법을 나타내는 블록도이다. 도시된 예에서, 일반적으로 동일한 장치 인증서 템플릿(2412)을 각각 가진 임의 수의 장치 또는 컴포넌트가 생산 런(run)에서 구축될 수 있다. 동일한 템플릿을 가진 각각의 장치 또는 컴포넌트의 로딩은 공통 템플릿을 수정함으로써 나중에 장치 인증서가 생성되는 것을 허용함으로써 제조 프로세스를 도울 수 있다.
도 27은 장치 인증서 템플릿을 고유 장치 인증서로 변환할 수 있는 장치 인증서 개별화 또는 초기화 프로세스를 나타내는 블록도이다. 장치 인증서 개별화는 장치 또는 컴포넌트가 설치 및/또는 쉽핑된 후에 발생할 수 있으며, 일반적으로 DRM 컨텐츠가 액세스되기 전에 장치 인증서를 생성한다. 논-DRM 컨텐츠는 일반적으로 자체 개별화 프로세스를 개시하지 않는데, 이는 장치 인증서가 일반적으로 논-DRM 컨텐츠에 액세스하는 데 필요하지 않기 때문이다. 장치가 손상된 경우, 오래된 장치 인증서를 제거한 후에 장치 인증서 개별화가 반복될 수 있다. 그러나, 장치는 또한 제조자 또는 서비스로부터 갱신 템플릿을 취득할 필요가 있을 수 있는데, 이는 장치 인증서가 템플릿에 기초하기 때문이다. 장치 인증서가 폐기되는 경우, 오래된 템플릿으로부터의 새로운 장치 인증서도 폐기될 수 있다.
블록 2701에서, CE 장치가 파워업된다. 파워업, 또는 대안 실시예에서는 DRM 보호 컨텐츠에 대한 액세스 시도는 개별화 프로세스를 개시할 수 있다. 블록 2702에서, DRM이 개시된다. 블록 2703에서, 장치 인증서가 이용가능한 경우, 프로세스는 블록 2705로 스킵한다. 블록 2703에서 장치 인증서가 이용가능하지 않은 경우, 프로세스는 블록 2704로 계속된다.
블록 2704에서, 고유 장치 인증서가 생성된다. 그리고, 마지막으로 블록 2705에서 DRM 컨텐츠가 액세스된다.
도 28은 장치 인증서 템플릿(2412)을 구성하는 경향이 있는 섹션들을 나타내는 블록도이다. 설명되는 템플릿은 일반적으로 소비자 전자 장치의 메모리에 저장된다. 또한, 템플릿은 플래시 RAM ASIC과 같은 다른 유형의 메모리, 하나 이상의 플로피 디스크, 광 디스크, 하드 디스크 또는 다른 컴퓨터 판독가능 매체 등에 저장될 수 있다. 장치 인증서 템플릿의 섹션들은, 컨텐츠 제공자가 템플릿 또는 그로부터 도출된 고유 장치 인증서를 포함하는 장치 또는 컴포넌트가 유효하고 의도된 사용을 위해 허가된다는 합리적인 예상을 갖도록 신뢰의 경로를 확보하기 위해 함께 동작한다. 역방향 호환성 또는 다른 목적을 위해, 둘 이상의 신뢰 경로가 장치 인증서 템플릿에 제공될 수도 있다.
장치 인증서 템플릿에 반영되는 신뢰의 경로를 확보하기 위하여, OEM은 일반적으로 장치 허가 인증서를 형성하는 데 사용될 수 있는 공개 및 비밀키 쌍을 생성한다. OEM에 의해 생성되는 장치 허가 인증서(DAC)는 일반적으로 OEM에 의해 보안 위치에 저장되는 비밀키를 포함한다. 또한, 일반적으로 인증서 담당자에 전송되는 공개키도 포함된다. 인증서 담당자는 OEM의 DAC를 검증하고, OEM에 도로 전송되는 허가 루트 인증서 및 허가 인증서를 반환한다.
OEM은 일반적으로 그룹 인증서를 생성하기 위해 인증서 담당자로부터의 소프트웨어 툴을 구비한다. 그룹 인증서는 장치 또는 컴포넌트의 특징들, 제한 및/또는 다른 메타데이터(제조자 이름, 모델 번호 등)를 포함할 수 있다. 이어서, OEM은 DAC 비밀키를 이용하여 이 그룹 인증서에 서명한다. 서명되지 않은 템플릿을 가진 허가 루트 인증서(1801), 허가 인증서(2802) 및 그룹 인증서를 포함하는 것은 템플릿이 생성되어 장치 또는 컴포넌트 플러스 그룹 인증 비밀키와 함께 포함되는 것을 허용한다. 제조 후에, 장치의 파워업 또는 파일 액세스 시도와 같은 트리거는 일반적으로 템플릿에서 요청되는 임의의 필요한 정보를 채우고 그룹 인증 비밀키를 이용하여 서명함으로써 장치 인증서가 템플릿으로부터 생성되게 한다. 트리거는 자체 개별화 프로세스 또는 장치 인증서 생성을 개시하는 개시 이벤트 또는 개시 명령으로서 간주될 수 있다.
신뢰 경로를 확보함에 있어서, 장치 인증서 내의 개별 인증서들 각각은 OEM으로 거슬러 추적될 수 있는 신뢰의 경로를 확보한다. 필요한 경우, 개별 인증서들이 폐기될 수 있으며, 이에 따라 신뢰의 체인은 파괴된다.
허가 루트 인증서(2801)는 장치 인증서 템플릿에 포함되는 섹션이다. 이 섹션은 일반적으로 인증서 담당자의 루트 인증서 정보를 포함한다. 인증서 담당자의 루트 인증서는 일반적으로 최상위 레벨의 허가이며, 인증서 담당자에 의해 발행된다. 신뢰의 체인을 구성하는 다른 인증서들은 허가 루트 인증서에 기초할 수 있다. 일반적으로, 루트 인증서는 ID(누구를 인증하고 있는지를 식별함) 및 인증되고 있는 공개키를 포함한다. 이 인증서는 일반적으로 인증서 담당자의 비밀키에 의해 서명된다. 비밀키는 일반적으로 인증서 담당자에 의해 제어되는 보안 위치에 저장된다. 대응하는 공개키는 일반적으로 장치 또는 컴포넌트에 저장되며, 서명을 검증하는 데 사용된다.
허가 인증서: 이 섹션은 일반적으로 장치 인증서를 생성하기 위한 인증서 담당자에 의한 OEM에 대한 허가를 포함한다. 데이터 섹션은 일반적으로 OEM의 허가 ID, 장치의 최대 보안 레벨, 및 그룹 인증서에 서명하기 위한 공개키를 포함한다. 이 데이터 섹션은 일반적으로 인증서 담당자의 비밀키를 이용하여 서명된다. 대응하는 공개키는 일반적으로 허가 루트 인증서에 저장된다.
그룹 인증서: 이 데이터 섹션은 일반적으로 장치 또는 컴포넌트의 이름, 제조자 등과 같이 전체 생산 라인에 대해 동일한 장치 특징들을 포함한다. 이것은 장치 인증서 섹션을 검증하는 기초인 그룹 인증서 공개키를 포함한다. 대응하는 비밀키는 장치 상에 숨겨진다. 장치 인증서 섹션은 일반적으로 이 비밀키를 이용하여 서명된다.
도 29는 예시적인 XML 장치 인증서 템플릿을 나타낸다. 장치 인증서 템플릿은 XML 또는 다른 소정의 형식으로 구현될 수 있다. XML을 이용하여 허가 루트 인증서(2801)를 구현하는 일례가 도시되어 있다. 허가 루트 인증서는 일반적으로 공개키를 포함한다. 또한, 장치 인증서 템플릿에는 허가 인증서(2802)를 구성하는 XML 코드가 포함된다. 그리고, 그 위에 그룹 인증서(2803)를 구성하는 XML 코드가 도시된다. 마지막으로, 장치 인증서(2804)를 생성하기 위해 채워지는 XML 인코딩된 템플릿의 섹션이 페이지의 최상부에 도시된다. 역방향 호환성 또는 레거시 라이센싱(2901)을 위한 규정들이 XML 코드에 포함될 수 있다.
장치 인증서 템플릿을 구성하는 다양한 섹션들은 템플릿 내에 임의의 순서로 나타날 수 있는데, 도시된 순서는 단지 일례이다. 또한, 장치 인증서 템플릿은 html, 이진 포맷 등과 같은 다양한 언어 또는 포맷으로 코딩될 수 있다. 대안 실시예에서, 제조자가 장치 또는 컴포넌트 상에 템플릿을 사전 로딩하게 하는 것이 아니라 서버 또는 서비스로부터 템플릿을 로딩하는 것도 가능하다.
도 30은 예시적인 고유 장치 인증서를 생성하기 위한 장치 인증서 개별화 프로세스를 나타내는 블록도이다. 프로세스는 장치 또는 시스템과 서비스 제공자 사이의 챌린지 및 응답 교환을 이용할 수 있다. 이러한 교환 동안, 중간 보안 레벨을 가진 키들의 교환을 제공함으로써 보안이 유지되는 경향이 있다. 중간 보안 레벨을 가진 키들은 일반적으로 프로세스를 개시하고 검증 프로세스를 보다 높은 보안 레벨로 "부트스트랩"하는 데 사용된다.
고유 장치 인증서 또는 "고유 Dev-Cert"를 제공하기 위하여, 일반적으로 개별화 프로세스가 고유 장치 인증서를 생성하는 데 사용된다(도 27, 2704). 예시적인 프로세스를 시작하는 블록 3003에서, 장치 또는 시스템은 블록 3002에서 장치 고유 정보를, 블록 3001에서 서명된 장치 인증서 템플릿을 수집함으로써 장치 인증서 챌린지를 구성한다. 이 블록으로 제공된 장치 인증서 템플릿(2412)은 전술한 바와 같을 수 있으며, 서비스 제공자로부터의 허가 인증서, 장치 정보(제조자, 모델, 버전 등), 템플릿이 제공됨을 확인하는 템플릿 필드, 장치 인증서 챌린지가 전송되어야 하는 곳인 URL, 장치 인증서 챌린지 내의 장치 비밀 데이터를 암호화하는 데 사용되는 공개키, 및 템플릿의 데이터 부분에 대한 디지털 서명을 포함할 수 있다. 장치 고유 정보는 자신의 장치 인증서가 형성되게 하려고 하는 장치 또는 컴포넌트에 고유한 정보를 포함할 수 있으며, "고유 장치 ID"로도 알려질 수 있다. 일 실시예에서, 장치 고유 정보는 장치 일련 번호 또는 다른 고유 시스템 정보에 기초하는 식별 스트링을 포함할 수 있다.
블록 3004에서, 챌린지로부터의 고유 정보는 장치 또는 컴포넌트의 OEM에 의해 동작될 수 있는 서버(또는 "Dev-cert indiv 서버")로 전송된다. 서버로 전송된 데이터는 일반적으로 비밀이며 보호된다. 서버는 일반적으로 인커밍 챌린지를 검증하고 챌린지 데이터에 기초하여 블록 3005에서 고유 장치 인증서 "Unique Dev-cert"를 생성한다. 생성된 장치 인증서를 포함하는 응답이 블록 3006에서 장치로 반환된다("Dev-cert response"). 블록 3007에서, 장치는 수신된 응답을 검증한다. 블록 3008에서, 장치 또는 시스템은 생성된 장치 인증서를 저장한다. 일 실시예에서, 고유 장치 인증서의 저장은 도 15에 도시된 PE 관리 컴포넌트(도 15, 752)와 같이 고유 장치 인증서를 가진 컴포넌트의 갱신을 포함할 수 있다.
도 31은 장치 인증서 개별화 프로세스에 사용되는 예시적인 장치 인증서 챌린지를 구성하는 섹션들을 나타내는 블록도이다. 장치 인증서 내의 섹션들의 배열이 가변적이며, 다양한 섹션 내의 정보를 인코딩하는 데 사용되는 언어 또는 프로토콜도 가변적이다. 데이터 섹션은 일반적으로 URL(3104), DEVCERT_TEMPLATE(3105), BOOTSTRAPID(3106) 및 DEVINFO(3107)을 포함한다. DEVINFO는 DEVICE_UNIQUEID(3108), DEVICE_PUBKEY(3109), DEVICE_PRIVKEY(3110) 및 DEVCERT_OLD(3111)를 포함할 수 있다.
데이터 섹션이 3102에 도시되어 있다. 이 데이터 섹션 또는 태그는 장치 인증서 챌린지에 의해 제공되는 데이터의 일부 또는 전부를 포함한다. 이 태그는 일반적으로 강제적이다. 일반적으로, 이 데이터는 URL(3104), DEVCERT_TEMPLATE(3105), BOOTSTRAPID(3106) 및 DEVINFO(3107)을 포함할 수 있다. DEVINFO는 DEVICE_UNIQUEID(3108), DEVICE_PUBKEY(3109), DEVICE_PRIVKEY(3110) 및 DEVCERT_OLD(3111)를 포함할 수 있다.
서명 섹션이 3103에 도시된다. 일반적으로, dev_cert 챌린지의 스트링들 <DATA> 및 </DATA>를 포함하는 DATA 섹션의 컨텐츠들은 OEM에 의해 제공되는 BOOTSTRAP 비밀키에 의해 디지털 서명된다. 이 섹션은 또한 일반적으로 강제적인 디지털 서명을 포함한다.
URL 섹션이 3104에 도시된다. 이 섹션에는 일반적으로 장치 인증서 챌린지가 전송되는 곳인 URL이 기록된다. URL은 일반적으로 투명하게(암호화되지 않음) 저장된다. 이 URL은 장치 인증서 템플릿으로부터 취해질 수 있으며, 따라서 애플리케이션은 URL을 취득하기 위해 장치 인증서 템플릿을 개별적으로 분석할 필요가 없게 된다. 이 태그는 강제적일 수 있다. 대안 실시예에서, URL은 장치 인증서 템플릿으로부터 분석될 수 있다.
장치 인증서 챌린지의 DEVCERT_TEMPLATE 섹션은 3105에 도시된다. 이 섹션에서 제공되는 유효 장치 인증서 템플릿은 일반적으로 OEM 비밀키에 의해 서명된다. 이 노드도 투명 상태일 수 있다. 이 태그는 일반적으로 강제적이다.
장치 인증서 챌린지의 BOOTSTRAPID 섹션은 3106에 도시된다. 부트스트랩 ID는 또한 일반적으로 OEM에 의해 제공된다. 부트스트랩 ID는 일반적으로 서버가 dev_cert 챌린지 서명을 검증하기 위한 올바른 키를 발견하는 것을 돕기 위해 제공된다. 이 노드는 일반적으로 투명하다. 이 태그는 강제적일 수 있다.
장치 인증서 챌린지의 DEVINFO 섹션은 3107에 도시된다. 이 섹션은 일반적으로, 총체적으로 보호되어야 하는 장치 고유 비밀 정보를 포함한다. 이 태그 아래의 컨텐츠는 일반적으로 dev-cert 템플릿 내에 존재하는 Indiv 서버 공개키를 이용하여 통상적으로 암호화된다. 이어서, 이 정보는 Base64 인코딩될 수 있다. 이 태그는 일반적으로 강제적이다. 이 노드는 DEVICE_UNIQUEID(3108), DEVICE_PUBKEY(3109), DEVICE_PRIVKEY(3110) 및 DEVCERT_OLD(3111)를 포함할 수 있다.
장치 인증서 챌린지의 DEVICE_UNIQUEID 섹션은 3108에 도시된다. 이 섹션은 일반적으로 고유 장치 ID를 포함한다. 이 태그는 일반적으로 강제적이다.
장치 인증서 챌린지의 DEVICE_PUBKEY 섹션은 3109에 도시된다. 챌린지를 구성하는 프로세스에서, 장치 또는 시스템은 일반적으로 공개/비밀키 쌍을 생성하고, 전술한 바와 같이 비밀키를 숨긴다. 이 섹션은 일반적으로 Base64 인코딩된 장치 공개키를 포함한다. 이 분야의 전문가들은 다른 등가적인 인코딩들이 제공될 수 있음을 이해할 것이다. 공개키는 일반적으로 서버 또는 서비스에 의해 실제의 장치 고유 장치 인증서에 삽입된다. 이 공개키는 또한 장치에 반환된 응답을 암호화하기 위해 서버에 의해 사용될 수 있다. 이 태그는 일반적으로 강제적이다.
장치 인증서 챌린지의 DEVICE_PRIVKEY 섹션은 3110에 도시된다. 이 섹션은 Base64 인코딩된 장치 비밀키를 포함할 수 있다. 장치 비밀키는 서버에 의해 생성된 에스크로 키를 암호화하기 위해 서버에 의해 사용될 수 있다. 에스크로 키는 일반적으로 클라이언트로부터 제공되는 임의의 오래된 키들을 암호화한다. 이 태그는 일반적으로 강제적이다.
장치 인증서 챌린지의 DEVCERT_OLD 섹션은 3111에 도시된다. 이 섹션은 일반적으로 오래된 "장치 고유 dev-cert"를 포함한다. 이 섹션은 일반적으로 옵션 태그이다. 이것은 방치의 재 개별화의 경우에 포함될 수 있으며, 따라서 서버는 특히 이 장치 인증서로부터 오래된 키 쌍을 추출하여 이들을 새로운 장치 인증서에 포함시킬 수 있다.
도 32는 블록(도 30, 3003)에서 이전에 구성된 예시적인 XML 장치 인증서 챌린지를 나타낸다. 도시된 예에서, XML(또는 그의 등가물)로 코딩된 장치 인증서는 Base64 인코딩될 수 있다. 대안으로, 서버 또는 서비스로의 장치 인증서 챌린지의 전송을 용이하게 하기 위하여 다른 유형의 인코딩이 수행될 수 있다. 다른 대안 실시예들에서는 인코딩이 수행되지 않을 수 있다.
서버가 챌린지(3201)를 수신할 때, 제공된 URL(3204)에 의해 식별되는 서버는 장치 챌린지의 디지털 서명(3202)을 검증함으로써 챌린지의 진정성을 검증한다. 부트스트랩 ID(3203)는 일반적으로 서버가 서명 검증에 적합한 키를 발견하는 것을 가능하게 한다. 서버는 또한 챌린지에 포함된 장치 인증서 템플릿(3205)의 서명을 검증할 수 있다. 이어서, 서버는 DEVINFO 섹션(3206)을 디코딩 및 해독하여 장치 고유 정보 또는 고유 장치 ID에 액세스할 수 있다.
장치 고유 정보를 수집한 후, 장치 인증서 챌린지는 실제 장치 고유 장치 인증서를 생성하고, 이 장치 인증서를 응답(3207)에 포함시킨다. 비밀을 보호하기 위하여, 장치 인증서 응답은 장치 공개키를 이용하여 암호화될 수 있다. 이 암호화는 응답이 장치 인증서 챌린지를 수신한 곳인 장치 또는 시스템에 의해서만 해독될 수 있음을 보장하는 경향이 있다.
도 33은 예시적인 XML 장치 인증서 응답을 나타낸다. 장치 응답은 HTML 포맷으로 도시된다. 그러나, 임의의 적절한 포맷 및/또는 프로토콜이 장치 인증서 응답에 이용될 수 있다.
장치 인증서 응답은 아래의 필드를 포함할 수 있다. 에러 필드("ERROR")(3301)는 옵션 필드이다. 에러 필드의 존재는 서버로 전송된 챌린지가 그 안에 에러 코드에 의해 지시될 수 있는 소정의 에러를 갖고 있다는 것을 지시할 수 있다.
필드 DEVCERT_NEW(3302)는 일반적으로 장치 또는 시스템과 이 장치에 결합된 서비스 사이에 이루어지는 교환에 의해 생성되는 실제 장치 고유 장치 인증서를 포함한다. 전술한 바와 같이, 퍼스널 컴퓨터가 장치와 서비스 제공자 사이에 존재하거나, 퍼스널 컴퓨터가 장치일 수 있다.
장치가 장치 인증서 응답을 수신할 때, 장치는 일반적으로 응답을 디코딩하고 해독한다. 에러 필드(3301)가 존재하는 경우, 장치는 에러 코드를 애플리케이션에 반환할 수 있다. 에러 태그가 존재하지 않는 경우, 장치는 일반적으로 장치 인증서를 추출하고, 그 서명, 서비스 제공자 허가 인증서, 고유 장치 ID, 장치 공개키 및 장치 인증서의 다른 모든 섹션을 검증한다. 이어서, 장치 인증서가 장치에 저장되거나 개별화되고 있는 컴포넌트와 함께 포함된다.
도 34는 장치 인증서 템플릿의 일 실시예에서 존재할 수 있는 신뢰 체인 구조(3400)를 나타내는 블록도이다. 신뢰 체인 구조에서, 허가 루트 인증서(3401)는 개별 OEM들에 대한 다수의 허가 인증서 또는 DAC들(3402, 3403, 3404)을 생성한다. DAC들은 또한 보안 레벨을 포함할 수 있다. 각각의 수평 레벨은, 하나의 경로가 위에서 아래로 가로지르므로, 신뢰 체인 내의 링크로서 간주될 수 있다. 각각의 링크는 일반적으로 링크의 유효성을 확보하고 이를 이전 및 후속 링크에 결합시키기 위해 그와 연관된 인증서를 갖는다. 예를 들어, 블록들(3401, 3402, 3405, 3408)은 허가 루트 링크(3401)에서 장치 인증서(3408)로 가는 링크로서 간주될 수 있다. 장치 인증서 템플릿은 일반적으로 신뢰 체인 내의 각 링크를 템플릿을 형성하는 필드들의 섹션에 포함시킴으로써 형성된다.
OEM에 제공되는 각각의 DAC로부터, OEM은 OEM에 의해 생성되는 장치 또는 각 컴포넌트의 각 모델에 대한 다수의 그룹 인증서(3405, 3406, 3407)를 생성할 수 있다. 장치 인증서들(3408, 3409, 3410)은 구축된 각 장치에 대해 생성될 수 있으며, 그룹 인증서에 기초하는 경향이 있다. 그룹 인증서들의 레벨을 추가 또는 제거함으로써 보안 레벨을 변경하는 것이 가능할 수 있다. 예를 들어, 소비자 전자 장치의 특정 모델의 생산 런들을 구별하기 위해 장치 인증서들의 레벨이 추가될 수 있다.

Claims (20)

  1. 보호 컴퓨팅 환경을 제공하는 방법으로서,
    커널의 보호 환경 관리 컴포넌트를 상기 커널의 하나 이상의 다른 컴포넌트로부터 분리하는 단계 -상기 커널의 상기 보호 환경 관리 컴포넌트는 상기 커널이 상기 보호 컴퓨팅 환경에 대해 안전한 것으로 간주되는지의 여부를 나타내는 보안 플래그의 난독화되고 암호화된 버전을 포함하고, 상기 보호 환경 관리 컴포넌트는 상기 보안 플래그의 상태에 대한 하나 이상의 요구에 응답하도록 구성됨-;
    식별 정보를 상기 보호 환경 관리 컴포넌트의 일부로서 제공하는 단계; 및
    관련 컴퓨팅 장치에 대한 개별화 정보를 상기 보호 환경 관리 컴포넌트의 일부로서 제공하는 단계 -상기 개별화 정보는 장치 식별 정보, 장치 성능 정보 및 키 정보를 수집하여 제공하도록 구성된 XML 객체를 포함하고, 상기 XML 객체는 상기 보호 컴퓨팅 환경을 상기 관련 컴퓨팅 장치에 결합하여 상기 보호 환경 관리 컴포넌트를 상기 관련 컴퓨팅 장치 이외의 다른 컴퓨팅 장치에서는 사용할 수 없게(useless) 하는 역할을 하고, 상기 개별화 정보를 제공하는 단계는 복수의 컴퓨팅 장치에 공통인 템플릿을 이용하여 상기 관련 컴퓨팅 장치에 대한 개별화 정보를 생성하는 단계를 포함함- 를 포함하는
    보호 컴퓨팅 환경을 제공하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 식별 정보를 폐기 리스트에 대해 비교하는 단계를 더 포함하는
    보호 컴퓨팅 환경을 제공하는 방법.
  4. 제1항에 있어서,
    상기 보호 환경 관리 컴포넌트는 비밀 정보를 포함하는
    보호 컴퓨팅 환경을 제공하는 방법.
  5. 삭제
  6. 제1항에 있어서,
    상기 보호 환경 관리 컴포넌트의 구조가 난독화되는
    보호 컴퓨팅 환경을 제공하는 방법.
  7. 제1항에 있어서,
    상기 보호 환경 관리 컴포넌트를 구현하는 코드가 난독화되는
    보호 컴퓨팅 환경을 제공하는 방법.
  8. 제1항에 있어서,
    상기 보호 환경 관리 컴포넌트는 적어도 부분적으로 보안 통신을 통해 상기 관련 컴퓨팅 장치의 커널과 상호작용하는
    보호 컴퓨팅 환경을 제공하는 방법.
  9. 제1항에 있어서,
    상기 템플릿은 상기 관련 컴퓨팅 장치에 내장되는
    보호 컴퓨팅 환경을 제공하는 방법.
  10. 장치 내에 보호 환경을 설정하는 방법으로서,
    보안 운영 환경을 검증하는 단계;
    상기 장치의 커널의 관리 컴포넌트 내에 유지된 난독화되고 암호화된 보안 플래그의 상태에 대한 하나 이상의 요구에 응답함으로써 상기 보안 운영 환경의 보안 상태를 표시하는 단계 -상기 장치는 적어도 하나의 프로세서 및 적어도 하나의 시스템 버스를 포함함-;
    보호 환경을 설정하는 단계; 및
    적어도 부분적으로 비밀 정보를 이용함으로써 상기 보안 운영 환경과 상기 보호 환경 사이에서 보안 통신하는 단계 -상기 비밀 정보에 대한 액세스는 상기 장치의 커널의 상기 관리 컴포넌트에 의해 제어되고, 상기 관리 컴포넌트는 상기 커널의 하나 이상의 다른 컴포넌트와 구별됨-;
    상기 장치에 대한 고유 장치 인증서를 생성하기 위해 적어도 부분적으로 장치 인증서 템플릿을 이용함으로써 상기 관리 컴포넌트를 개별화하는 단계 -상기 고유 장치 인증서는 장치 식별 정보, 장치 성능 정보 및 키 정보를 수집하여 제공하도록 구성된 XML 객체를 포함하고, 상기 고유 장치 인증서는 상기 관리 컴포넌트를 상기 장치에 결합하여 상기 관리 컴포넌트를 다른 장치에서는 사용할 수 없게(useless) 하는 역할을 함- 를 포함하는
    장치 내에 보호 환경을 설정하는 방법.
  11. 삭제
  12. 제10항에 있어서,
    상기 관리 컴포넌트의 기능을 억제(disabling)하는 단계를 더 포함하는
    장치 내에 보호 환경을 설정하는 방법.
  13. 제12항에 있어서,
    상기 관리 컴포넌트의 기능을 재개(renewing)하는 단계를 더 포함하는
    장치 내에 보호 환경을 설정하는 방법.
  14. 제10항에 있어서,
    상기 보안 운영 환경의 보안 상태를 주기적으로 검사하는 단계를 더 포함하는
    장치 내에 보호 환경을 설정하는 방법.
  15. 제10항에 있어서,
    상기 보안 운영 환경을 검증하는 단계는 상기 보안 운영 환경의 보안 상태의 표시를 제공하는
    장치 내에 보호 환경을 설정하는 방법.
  16. 제10항에 있어서,
    상기 관리 컴포넌트 또는 상기 관리 컴포넌트의 구조와 연관된 코드를 난독화하는 단계를 더 포함하는
    장치 내에 보호 환경을 설정하는 방법.
  17. 삭제
  18. 제10항에 있어서,
    상기 보호 환경을 설정하는 단계는 식별 정보를 이용하는 단계를 포함하는
    장치 내에 보호 환경을 설정하는 방법.
  19. 삭제
  20. 삭제
KR1020077023842A 2005-04-22 2005-08-26 보호 컴퓨팅 환경을 제공하는 방법 및 장치 내에 보호 환경을 설정하는 방법 KR101265887B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US67397905P 2005-04-22 2005-04-22
US60/673,979 2005-04-22
US11/116,598 2005-04-27
US11/116,598 US20060242406A1 (en) 2005-04-22 2005-04-27 Protected computing environment
US11/191,448 2005-07-28
US11/191,448 US8074287B2 (en) 2004-04-30 2005-07-28 Renewable and individualizable elements of a protected environment

Publications (2)

Publication Number Publication Date
KR20080008328A KR20080008328A (ko) 2008-01-23
KR101265887B1 true KR101265887B1 (ko) 2013-05-20

Family

ID=37215162

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077023842A KR101265887B1 (ko) 2005-04-22 2005-08-26 보호 컴퓨팅 환경을 제공하는 방법 및 장치 내에 보호 환경을 설정하는 방법

Country Status (2)

Country Link
KR (1) KR101265887B1 (ko)
WO (1) WO2006115532A2 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3340094B1 (en) * 2016-12-22 2021-04-28 Mastercard International Incorporated Method for renewal of cryptographic whiteboxes under binding of new public key and old identifier
CN114547593A (zh) * 2020-11-18 2022-05-27 成都鼎桥通信技术有限公司 终端应用认证方法、装置及设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100879907B1 (ko) * 2001-04-09 2009-01-21 피닉스 테크놀로지 리미티드 컴퓨팅 디바이스의 보안을 위한 방법 및 시스템

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5825877A (en) * 1996-06-11 1998-10-20 International Business Machines Corporation Support for portable trusted software
US6334189B1 (en) * 1997-12-05 2001-12-25 Jamama, Llc Use of pseudocode to protect software from unauthorized use
US7398389B2 (en) * 2001-12-20 2008-07-08 Coretrace Corporation Kernel-based network security infrastructure
JP2004046708A (ja) * 2002-07-15 2004-02-12 Sony Corp ソフトウェア提供システム、ソフトウェア提供サーバ、端末、制御プログラム、ソフトウェア提供方法、ソフトウェア利用方法、ソフトウェア提供プログラム、及びソフトウェア利用プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100879907B1 (ko) * 2001-04-09 2009-01-21 피닉스 테크놀로지 리미티드 컴퓨팅 디바이스의 보안을 위한 방법 및 시스템

Also Published As

Publication number Publication date
WO2006115532A2 (en) 2006-11-02
WO2006115532A3 (en) 2007-10-04
KR20080008328A (ko) 2008-01-23

Similar Documents

Publication Publication Date Title
US8074287B2 (en) Renewable and individualizable elements of a protected environment
US9189605B2 (en) Protected computing environment
US7434263B2 (en) System and method for secure storage data using a key
JP4702957B2 (ja) 耐タンパ・トラステッド仮想マシン
US6330670B1 (en) Digital rights management operating system
US8474032B2 (en) Firewall+ storage apparatus, method and system
US6820063B1 (en) Controlling access to content based on certificates and access predicates
US9363481B2 (en) Protected media pipeline
US7500267B2 (en) Systems and methods for disabling software components to protect digital media
US20050060568A1 (en) Controlling access to data
US20050060561A1 (en) Protection of data
WO2006113167A2 (en) Secure boot
JP2012508529A (ja) 汎用コンピューティングデバイスにおけるコード実行制御および再帰的セキュリティプロトコルでのコード実行制御のための方法およびシステム
US20060015860A1 (en) System and method for storing attributes in a file for processing an operating system
US7568102B2 (en) System and method for authorizing the use of stored information in an operating system
CN101167296B (zh) 受保护计算环境的可更新和可个性化元件
KR101265887B1 (ko) 보호 컴퓨팅 환경을 제공하는 방법 및 장치 내에 보호 환경을 설정하는 방법
TWI428786B (zh) 建立一受保護之計算環境的方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160419

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee