KR101238496B1 - 보호 컴퓨팅 환경 - Google Patents

보호 컴퓨팅 환경 Download PDF

Info

Publication number
KR101238496B1
KR101238496B1 KR1020077024145A KR20077024145A KR101238496B1 KR 101238496 B1 KR101238496 B1 KR 101238496B1 KR 1020077024145 A KR1020077024145 A KR 1020077024145A KR 20077024145 A KR20077024145 A KR 20077024145A KR 101238496 B1 KR101238496 B1 KR 101238496B1
Authority
KR
South Korea
Prior art keywords
kernel
application
loading
secure
components
Prior art date
Application number
KR1020077024145A
Other languages
English (en)
Other versions
KR20080008337A (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
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080008337A publication Critical patent/KR20080008337A/ko
Application granted granted Critical
Publication of KR101238496B1 publication Critical patent/KR101238496B1/ko

Links

Images

Classifications

    • 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/106Enforcing content protection by specific content processing
    • G06F21/1064Restricting content processing at operating system level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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/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/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
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

컴퓨팅 장치 내에 보호 환경을 확립하는 방법은, 컴퓨팅 장치의 커널 내로 로딩된 커널 컴포넌트의 유효성을 검사하는 단계, 유효성 검사에 기초하여 커널의 안전 상태를 확립하는 단계, 안전 프로세스를 생성하고 소프트웨어 컴포넌트를 안전 프로세스 내로 로딩하는 단계, 커널의 안전 상태를 주기적으로 점검하는 단계, 커널의 안전 상태가 변경되었을 때 안전 프로세스에 통지하는 단계를 포함한다.
Figure R1020077024145
보호 환경, 커널 컴포넌트, 안전 프로세스, 안전 상태

Description

보호 컴퓨팅 환경{PROTECTED COMPUTING ENVIRONMENT}
<관련 출원의 상호 참조>
본 출원은 2005년 4월 22일 금요일에 출원된 미국 가출원 번호 제60/673,979호(대리인 정리 번호 313361.01)의 이익을 청구한다.
도 1은 시스템에 대항하는 공격이 표시된 종래의 컴퓨팅 환경에서 동작하는 미디어 컨텐츠(media content)를 처리하는 종래의 미디어 애플리케이션을 도시하는 블록도.
도 2는 미디어 컨텐츠를 처리하고 공격에 저항력이 있는 보호 환경(protected environment)을 이용하는, 신뢰되는 애플리케이션(trusted application)을 도시하는 블록도.
도 3은 보호 환경에 포함될 수 있는 신뢰되는 애플리케이션의 예시적인 컴포넌트를 도시하는 블록도.
도 4는 보호 환경을 이용하는 예시적인 신뢰되는 애플리케이션을 이용하는 서비스 제공자로부터 디지털 미디어 컨텐츠를 다운로드하기 위한 시스템을 도시하는 블록도.
도 5는 통상적으로 컴퓨팅 환경에 존재하는 미디어 컨텐츠 및 기타 데이터를 인가되지 않은 방식으로 액세스하는 것을 시도하는 사용자 또는 메커니즘에 의해 악용될(exploit) 수 있는 예시적인 공격 벡터를 도시하는 블록도.
도 6은 미디어 컨텐츠 및 기타 데이터로의 인가되지 않은 액세스를 제한하고자 하는 보호 환경을 생성하고 유지하기 위한 프로세스를 도시하는 흐름도.
도 7은 예시적인 안전한 컴퓨팅 환경을 생성하는 데에 이용되는 예시적인 커널 컴포넌트들과 다른 컴포넌트들을 도시하는 블록도.
도 8 및 도 9는 예시적인 안전한 컴퓨팅 환경을 생성하기 위해 커널 컴포넌트들을 로딩하기 위한 예시적인 프로세스를 도시하는 흐름도.
도 10은 통상적으로 공격에 저항력이 있는 신뢰되는 애플리케이션을 형성하기 위해 애플리케이션을 예시적인 보호 환경 내로 로딩하는, 안전한 컴퓨팅 환경을 도시하는 블록도.
도 11은 보호 환경을 생성하고 애플리케이션을 보호 환경 내로 로딩하기 위한 예시적인 프로세스를 도시하는 흐름도.
도 12는 안전한 컴퓨팅 환경의 보안 상태를 주기적으로 점검하는 예시적인 보호 환경을 이용하는, 예시적인 신뢰되는 애플리케이션을 도시하는 블록도.
도 13은 안전한 컴퓨팅 환경의 보안 상태를 주기적으로 점검하기 위한 예시적인 프로세스를 도시하는 흐름도.
도 14는 보호 환경을 포함하는 안전한 컴퓨팅 환경을 확립하기 위한 프로세스, 시스템 및 방법이 구현될 수 있는, 예시적인 컴퓨팅 환경을 도시하는 블록도.
본 예의 이들 및 다른 특징들과 이점들은 첨부되는 도면에 비추어 이하의 상세한 설명으로부터 더 잘 이해될 것이다.
동일한 참조 번호는 첨부되는 도면의 동일한 구성 요소를 지정하는 데에 사용된다.
첨부된 도면과 관련하여 이하에서 제공되는 상세한 설명은 본 예의 설명으로서 의도되고, 본 예가 구성되거나 이용될 수 있는 유일한 형태를 나타내고자 하는 것이 아니다. 본 기술은 예들의 기능 및 도시된 예들과 관련하여 예를 구성하고 동작시키는 단계들의 시퀀스를 설명한다. 그러나, 동일하거나 동등한 기능 및 시퀀스가 다른 예에 의해 달성될 수도 있다.
본 예들은 컴퓨터 운영 체제에서 구현되는 것으로서 본 명세서에서 설명되고 도시되지만, 설명된 시스템은 예로서 제공되며, 제한하는 것이 아니다. 당업자들은, 본 예가 컴퓨터 시스템의 각종 상이한 유형의 애플리케이션에 적합하다는 것을 이해할 것이다.
서론
도 1은 시스템(101)에 대항하는 공격(107)이 표시된 종래의 컴퓨팅 환경(100)에서 동작하는 미디어 컨텐츠(106)를 처리하는 종래의 미디어 애플리케이션(105)을 도시하는 블록도이다. 종래의 컴퓨팅 환경(100)은 운영 체제("OS")(102)를 포함할 수 있는 퍼스널 컴퓨터("PC") 또는 소비자 가전(consumer electronics:"CE") 장치(101)에 의해 제공될 수 있다. 통상적인 운영 체제는 종종 그 동작을 사용자 모드(103)와 커널 모드(104)로 나눈다. 사용자 모드(103)와 커널 모드(104)는 하나 이상의 애플리케이션 프로그램(105)에 의해 사용될 수 있다. 애플리케이션 프로그램(105)은, CD-ROM 드라이브, 인터넷 접속 등과 같은 일부 메커니즘을 통해 장치(101)로 전달될 수 있는 미디어 컨텐츠(106)를 처리하는 데에 사용된다. 컨텐츠(106)의 예로는 오디오 및 비디오 정보를 재생하는 데에 사용될 수 있는 미디어 파일이 있다.
컴퓨팅 환경(100)은, 통상적으로, 하나 이상의 중앙 처리 장치("CPU")와 함께, 애플리케이션(105)의 동작을 용이하게 하는 운영 체제("OS")(102)를 포함할 수 있다. 많은 운영 체제(102)는 다수의 사용자들이 CPU의 동작에 액세스하는 것을 허용한다. 다수의 사용자들은, 통상적으로, 일반적인 사용자 특권(privilege)에서부터 관리자 특권에까지 이르는 액세스 특권의 범위를 지닐 수 있다. 관리자들은 통상적으로 시스템, 사용자 모드(103) 및 커널 모드(104) 상에서 실행되는 애플리케이션(105)에 대한 액세스 특권 범위를 지닌다. 이러한 컴퓨팅 환경(100)은 각종 유형의 공격(107)에 대해 영향을 받기 쉬울 수 있다. 공격으로는, 장치(101)와 장치 상의 컨텐츠(106)로의 액세스를 얻고자 하는 아웃사이더들 뿐만 아니라, 장치(101)에 대해 관리 권리(right)를 지니는 공격자 또는 무슨 액세스 권리이든지 액세스 권리가 허가된(granted) 다른 유형의 사용자들을 포함할 수 있다.
도 2는 미디어 컨텐츠(106)를 처리하고 공격에 저항력이 있는 보호 환경(203)을 이용하는, 신뢰되는 애플리케이션(202)을 도시하는 블록도이다. 본 명세서에서 사용된 용어 "신뢰되는 애플리케이션"이란, 보호 환경에서 동작하는 프로 세스들을 이용하여, 그 프로세스들이 공격(205)에 저항력이 있고, 처리되고 있는 임의의 미디어 컨텐츠(106) 또는 다른 데이터로의 인가되지 않은 액세스를 제한하도록 하는 애플리케이션으로서 정의될 수 있다. 따라서, 보호 환경에서 동작하는 애플리케이션의 컴포넌트 또는 구성 요소는, 이들이 인가되지 않은 액세스를 제한하고 공격에 저항력이 있기 때문에, 통상적으로 "신뢰되는" 것으로 간주된다. 이러한 애플리케이션(202)은 신뢰되는 애플리케이션 그 자체로 간주될 수 있고, 또는 이러한 애플리케이션(202)은 그 프로세스 및/또는 데이터의 일부를 보호하기 위해 또 다른 신뢰되는 애플리케이션을 이용할 수 있다.
예를 들면, 신뢰되는 미디어 플레이어(202)는, 통상, 미디어 컨텐츠(106)가 인가되지 않은 방식으로는 액세스될 수 없도록, 라이센스된(licensed) 미디어 컨텐츠(106)를 플레이하도록 설계될 수 있다. 이러한 신뢰되는 애플리케이션(202)은, 공격(205)에 저항력이 있는 보호 환경(203)을 제공하는 것과 같이, 컴퓨팅 환경(200)이 요구되는 보안 수준을 제공하지 못하는 경우, 미디어 컨텐츠(106)를 동작시키거나 및/또는 처리할 수 없다.
본 명세서에서 사용된 바와 같이, "프로세스"라는 용어는 커널 공간, 사용자 공간, 및/또는 운영 체제 및/또는 컴퓨팅 환경의 임의의 다른 공간에서 상주하거나 및/또는 동작하는 프로그램(실행가능 코드, 기계 명령어, 변수, 데이터, 상태 정보 등을 포함함)의 인스턴스로서 정의될 수 있다.
디지털 저작권 관리 시스템(digital rights management system)(204) 등은 보호 환경(203)과 함께 이용될 수 있다. 디지털 저작권 관리 시스템(204)의 사용 은 단지 예로서 제공된 것이며, 보호 환경 또는 안전한 컴퓨팅 환경과 함께 사용되지 않을 수 있다. 통상적으로 디지털 저작권 관리 시스템은, 생산하는 데에 비용이 많이 드는 경향이 있고, 컴퓨팅 성능에 부정적인 영향을 끼칠 수 있는 변형 억제 소프트웨어(tamper-resistant software; TRS)이다. 신뢰되는 애플리케이션(202)을 사용하는 것은, 향상된 보호를 제공하기 위해 필요한 TRS 기능의 양을 최소화할 수 있다.
이 기술 영역의 업자들에게 알려진 각종 메커니즘은 통상적인 디지털 저작권 관리 시스템을 대신하여, 또는 그에 부가하여, 또는 그와 함께 사용될 수 있다. 이러한 메커니즘으로는 암호화/암호 해독, 키 교환, 암호, 라이센스(license) 등을 포함할 수 있으나 이에 제한되지 않는다. 따라서, 본 명세서에서 사용된 디지털 저작권 관리 시스템은, 암호화된 미디어를 암호 해독하고, 데이터를 액세스하기 위해 암호를 이용하거나, 또는 다른 변형 억제(tamper-resistant) 메커니즘을 이용하는 것과 같이 단순한 메커니즘일 수 있다. 이러한 태스크를 행하는 메커니즘은 매우 단순하고 그 전체가 신뢰되는 애플리케이션(202) 내에 포함될 수 있으며, 또는 신뢰되는 애플리케이션(202)과 전혀 다른 복잡한 시스템과 통신하는 인터페이스를 통해 액세스될 수 있다.
도 3은 보호 환경(203)에 포함될 수 있는, 신뢰되는 애플리케이션(202)의 예시적인 컴포넌트를 도시하는 블록도이다. 신뢰되는 애플리케이션(202)은 그 서브 컴포넌트(302-304)의 적어도 일부에 대해 보호 환경(203)을 통상적으로 이용할 것이다. 신뢰되는 애플리케이션의 다른 컴포넌트들(301)은 보호 환경을 이용하지 않 을 수 있다. 공격 또는 인가되지 않은 액세스로부터 향상된 보호 수준을 요구할 수 있는 미디어 컨텐츠 또는 데이터의 처리에 포함되는 컴포넌트들(302-304)은 보호 환경(203) 내에서 동작할 수 있다. 보호 환경(203)은 단 하나의 신뢰되는 애플리케이션(202), 또는, 아마도, 복수의 신뢰되는 애플리케이션들에 의해 이용될 수 있다. 또는, 신뢰되는 애플리케이션(202)은 복수의 보호 환경을 이용할 수 있다. 신뢰되는 애플리케이션(202)은 또한 디지털 저작권 관리 시스템(204)에 결합할 수 있거나 및/또는 이를 이용할 수 있다.
도시된 예에서는, 보호 환경(203)에서 동작하는 미디어 파이프라인(304)의 일부로서 소스(source)(302)와 싱크(sink)(303)가 도시되어 있다. 보호 환경(203)은, 일단 보호되거나 및/또는 암호화된 컨텐츠(309)가 수신되어 암호 해독되면, 신뢰되는 애플리케이션(202)과 그 컴포넌트가 그 컨텐츠(309)로의 인가되지 않은 액세스를 막는 것을 보장한다.
디지털 저작권 관리 시스템(204)은 신뢰되는 애플리케이션(202)과 그것이 처리하는 컨텐츠(309)에 추가의 보호 수단을 제공할 수 있다. 라이센스(308), 장치 증명서(certificate)(311) 및 다른 보안 메커니즘을 통해, 컨텐츠 제공자는, 통상적으로, 암호화된 컨텐츠(309)가 제대로 인가된 장치에 전달되고 그 컨텐츠(309)가 의도된 대로 사용된다는 확신을 가질 수 있다.
도 4는 서비스 제공자(407)로부터 보호 환경(203)을 이용하는 예시적인 신뢰되는 애플리케이션(202)으로 디지털 미디어 컨텐츠(410)를 다운로딩하기 위한 시스템을 도시하는 블록도이다. 도시된 예에서, 신뢰되는 애플리케이션(202)은 두 개 의 장소(401, 403)에서 이용되고 있는 것으로 도시되어 있다. 신뢰되는 애플리케이션(202)은 CE 장치(401) 또는 PC(403)에서 사용될 수 있다. 디지털 미디어(410)는 신뢰되는 애플리케이션(202)에 의해 사용되기 위해 서비스 제공자(407)와 인터넷(405)을 통해 다운로드될 수 있다. 또는, 디지털 미디어는 네트워크, CD 또는 DVD 디스크 또는 기타 저장 매체와 같은 다른 메커니즘을 통해 신뢰되는 애플리케이션에 사용가능하게 될 수 있다. 또한, 디지털 미디어(410)는, 디지털 저작권 관리 시스템(204)의 형식을 취할 수 있는 암호 해독 키, 라이센스, 증명서 등의 시스템을 요구하는 암호화된 형식(309)으로 제공될 수도 있다. 신뢰되는 애플리케이션에 제공되는 데이터 또는 미디어 컨텐츠(410)는 보호될 수도 있고, 보호되지 않을 수도 있다(즉, 암호화 될 수도 있고 안 될 수도 있다).
한 예에서, 신뢰되는 애플리케이션(202)은 보호 환경(203)과 함께 디지털 저작권 관리("DRM") 시스템(204) 등을 이용할 수 있다. 이 경우, 신뢰되는 애플리케이션(202)은, 통상적으로, 컨텐츠의 사용 정책을 인정하고 그것을 지키도록 설계되는데, 이것은 정책을 통해 컨텐츠의 사용을 컨텐츠 제공자에 의해 인가되는 것에만 제한함으로써 행해진다. 이것을 구현하는 것은, 통상적으로 컨텐츠 라이센스를 문의하고(interrogate), 이어서 컨텐츠의 일부에 대해 요구되는 액션을 취할 수 있는지 여부에 관해 판정하는 코드를 실행하는 것을 포함한다. 이 기능은, 적어도 일부는, 디지털 저작권 관리 시스템(204)에 의해 제공될 수 있다. 디지털 저작권 관리 시스템(204)의 예는 1999년 4월 12일에 출원된 미국 특허 제09/290,363호와, 2002년 6월 28일에 출원된 미국 특허 제10/185,527호, 10/185,287호 및 10/185,511 호에서 제공되며, 이들 모두는 그 전체가 참조에 의해 본 명세서에 포함된다.
CE 장치(401) 또는 PC(403)에서 이용될 수 있는 신뢰되는 애플리케이션(202)을 구축하는 것은, 컨텐츠(209)를 암호 해독하고 처리하는 신뢰되는 애플리케이션(202)이 악성(malicious) 공격으로부터 "안전"할 수 있다는 것을 보장하는 것을 포함할 수 있다. 따라서, 보호 환경(203)은 통상적으로 공격하기 쉽지 않은 환경을 지칭한다.
도시된 바와 같이, 신뢰되는 애플리케이션(202)은, 신뢰되는 애플리케이션을 또한 제공하는 PC(403)와 주기적으로 동기화될 수 있는 소비자 가전 장치(401)에서 동작할 수 있다. PC(403)는 이어서 인터넷(405)으로 접속된다(404). 인터넷 접속으로 디지털 미디어(410)는 서비스 제공자(407)에 의해 제공될 수 있다. 서비스 제공자(407)는 인터넷(405)을 통해 신뢰되는 애플리케이션(202)으로 라이센스와 암호화된 미디어(406)를 전송할 수 있다. 일단 암호화된 미디어가 전달되어 암호 해독되면, 이것은 각종 형태의 공격을 받기 쉬울 수 있다.
보호 환경과 잠재적인 공격
보호 환경은 해커가 인가되지 않은 컨텐츠로 액세스하는 것을 제한하는 환경을 제공한다. 해커는 시스템 관리자처럼 동작하는 해커를 포함할 수 있다. 시스템 관리자는 통상적으로 컴퓨터상에서 실행되고 있는 사실상 모든 프로세스를 전부 제어하지만, 이러한 액세스는 바람직하지 않을 수 있다. 예를 들면, 시스템 사용자에게 미디어 파일을 사용하는 라이센스가 허가되었을 때, 사용자가 아닌 시스템 관리자가 그 미디어 파일을 액세스할 수 있는 것이 수락되어서는 안 된다. 보호 환경은, 해커가 암호 해독된 컨텐츠로 액세스하지 않으면서 컨텐츠를 암호 해독하고 처리하는 코드가 동작할 수 있는 프로세스의 생성에 기여한다. 보호 환경은 또한 관리자, 및/또는 보호 컨텐츠로의 인가되지 않은 액세스를 얻을 수 있는 임의의 다른 사용자와 같은 특권 사용자들로의 인가되지 않은 액세스를 제한할 수 있다. 보호는 통상적인 사용자 모드 프로세스(도 1의 참조번호(103))과 커널 모드 프로세스(도 1의 참조번호(104)) 및 처리되고 있는 임의의 데이터를 안전하게 하는 것을 포함할 수 있다.
커널에서 동작하는 프로세스들은 공격을 받기 쉬울 수 있다. 예를 들면, 통상적인 운영 체제의 커널에서, 관리자에 의한 무제한의 액세스를 허용할 수 있는 프로세스를 포함하는 객체들이 생성된다. 따라서, 통상적으로 모든 액세스 특권을 갖는 관리자는 사실상 모든 프로세스를 액세스할 수 있다.
보호 컨텐츠는 컨텐츠의 인가된 사용을 나타내는 정책 또는 유사한 정보를 포함할 수 있다. 이러한 정책은 DRM 시스템 또는 다른 보안 메커니즘을 통해 시행될 수 있다. 통상적으로, 보호 컨텐츠로의 액세스는 정책을 시행할 수 있는 DRM 시스템 또는 다른 메커니즘을 통해 허가된다. 그러나, 시스템에 대해 모든 액세스 특권을 갖는 시스템 관리자는, DRM 시스템 또는 메커니즘의 상태를 변경하여 컨텐츠 정책을 무시할 수 있다.
보호 환경은 관리자와 같은 높은 특권의 사용자에 대해서조차도, 그 보호 환경에서 처리되고 있는 미디어 컨텐츠로의 인가되지 않은 액세스를 제한하는 보호 공간을 제공한다. 보호 환경이 디지털 저작권 관리 시스템 등과 함께 사용될 때, 인가되지 않은 액세스로부터 디지털 미디어를 보호하기 위해 충분한 보안이 제공된다는 것을 컨텐츠 제공자가 느낄 수 있고, 컨텐츠 정책이 미디어 컨텐츠와 관련될 수 있는 임의의 다른 데이터, 키 또는 보호 메커니즘과 함께 함부로 변경되는 것을 방지할 수 있는 신뢰되는 애플리케이션이 생성된다.
공격 벡터(attack vectors)
현재의 운영 체제("OS") 아키텍처는 통상적으로, 처리되고 있는 미디어 애플리케이션과 임의의 디지털 미디어를 손상시킬 수 있는 수많은 공격 벡터를 제공한다. 이 예를 위해, OS에서 발생할 수 있는 공격은 커널 모드 공격과 사용자 모드 공격의 두 가지 유형의 공격으로 그룹핑된다.
공격의 제1 유형은 커널 모드 공격이다. 커널 모드는 통상적으로 운영 체제의 신뢰되는 기반으로 간주된다. 운영 체제 및 대부분의 시스템의 코어(core) 그리고 주변 장치 드라이버는 커널 모드에서 동작할 수 있다. 통상적으로, 커널에서 실행되는 임의의 코드는 커널에서 실행되는 임의의 다른 코드에 의해 침입받기 쉬우며, 사용자 모드의 경우에는 그렇지 않다. 또한, 커널 모드에서 실행되는 코드는 통상적으로 사실상 모든 사용자 모드 프로세스로 액세스할 수 있다. CPU는 또한 각종 코드 유형에 특권 수준을 제공할 수 있다. 커널 모드 코드에는 CPU에 의한 것과 같이, 가장 높은 수준의 특권이 할당되며, 통상적으로, 시스템으로의 모든 액세스가 가능하다.
공격의 제2 유형은 사용자 모드 공격이다. 사용자 모드에서 실행되는 코드는 그것에 할당된 특권의 수준에 따라, 시스템에 의해 신뢰되는 코드로 간주될 수 도 있고 아닐 수도 있다. 이 특권 수준은 그것이 동작하고 있는 사용자의 상황(context) 또는 사용자 계정에 의해 결정될 수 있다. 관리자 계정의 환경에서 실행되는 사용자 모드 코드는, 시스템에서 실행되고 있는 나머지 코드에 모두 액세스할 수 있다. 또한, 사용자 모드에서 실행되는 코드는 한 사용자가 다른 사용자의 프로세스를 액세스하는 것을 방지하기 위해 분할될 수도 있다.
이러한 공격은 특정 공격 벡터로 더욱 세분화될 수 있다. 보호 환경은, 통상적으로, 하나 이상의 이들 공격 벡터를 통해 얻어질 수 있는 인가되지 않은 액세스에 대항하여 보호하도록 설계된다. 보호 환경은, 프로세스 생성, 악성 사용자 모드 애플리케이션, 악성 코드를 프로세스 내로 로딩하는 것, 악성 커널 코드, 유효하지 않은 신뢰 인증기관(invalid trust authorities:invalid TAs) 및 외부 공격 벡터를 포함할 수 있는 공격 벡터에 대항하여 보호할 수 있다.
프로세스 생성은 가능한 공격 벡터이다. 운영 체제는 통상적으로, 부모 프로세스가 자식 프로세스를 생성할 수 있게 하는 "프로세스 생성" 메커니즘을 포함한다. 악성 부모 프로세스는, 프로세스 생성 코드를 수정하거나 이것이 생성한 데이터를 변형함으로써, 생성되고 있는 자식 프로세스에 대해 인가되지 않은 수정을 행할 수 있다. 이것은 악성 부모 프로세스에 의해 생성된 자식 프로세스에 의해 처리될 수 있는 디지털 미디어를 손상시키는 결과를 초래할 수 있다.
악성 사용자 모드 애플리케이션도 가능한 공격 벡터이다. 운영 체제는 통상적으로 관리자 수준의 특권을 포함한다. 관리자 특권으로 실행되는 프로세스들은, 많은 운영 체제 메커니즘에 그리고 컴퓨터에서 실행되고 있는 거의 모든 프로세스 들에 무제한으로 액세스할 수 있다. 따라서, 예를 들면 윈도우에서, 관리자 특권으로 실행되고 있는 악성 사용자 모드 애플리케이션은 컴퓨터 상에서 실행되고 있는 많은 다른 프로세스로 액세스할 수 있어 디지털 미디어를 손상시킬 수 있다. 마찬가지로, 임의의 사용자 상황에서 동작하는 프로세스들은 동일한 상황에서 동작하는 임의의 악성 프로세스에 의해 공격받을 수 있다.
악성 코드를 안전한 프로세스 내로 로딩하는 것도 가능한 공격 벡터이다. 프로세스에 악성 코드를 첨부하거나 또는 부가하는 것 또한 가능할 수 있다. 이렇게 손상된 프로세스는 신뢰될 수 없으며, 수정된 프로세스에 의해 처리되고 있는 임의의 미디어 컨텐츠 또는 다른 데이터로 인가되지 않은 액세스를 획득할 수 있다.
악성 커널 모드 코드도 가능한 공격 벡터이다. 운영 체제는 통상적으로 "시스템 수준"의 특권을 포함한다. 윈도우에서, 예를 들면, 커널 모드에서 실행되는 모든 코드는 통상적으로 시스템으로서 실행되고 있으며, 따라서, 최대의 특권을 지닐 수 있다. 그 결과, 일반적으로, 커널 모드에서 실행되고 있는 드라이버들이 임의의 사용자 모드 애플리케이션을 공격하는 최대의 기회를 지닐 수 있다. 이러한 악성 커널 모드 코드에 의한 공격은 디지털 미디어를 손상시킬 수 있다.
유효하지 않은 신뢰 인증기관(TAs)도 가능한 공격 벡터이다. TA는 미디어 라이센스의 유효성 검사(validation)에 참가할 수 있고, 이어서 디지털 미디어의 컨텐츠를 "잠금 해제(unlock)"할 수 있다. TAs는 미디어 유형 또는 포맷에 특정적이며 미디어 제공자 또는 그 파트너에 의해 구현될 수 있다. 이와 같이, TAs는 플 러그가능하며(pluggable) 및/또는 동적 링크 라이브러리(dynamic link libraries:DLL) 등으로서 제공될 수 있다. DLL은 악성 코드를 포함하는 실행가능 코드에 의해 로딩될 수 있다. 미디어가 제대로 이용된다는 것을 TAs가 보장하기 위해서는, 미디어가 실행되고 있는 프로세스가 안전하다는 것을 보장할 수 있어야 할 필요가 있다. 그렇지 않을 경우, 디지털 미디어는 손상될 수 있다.
외부 공격도 가능한 또 다른 공격 벡터이다. 이것은 공격하기 위해 시스템에서 악성 코드가 실행될 필요가 없는 공격 집합이다. 예를 들면, 디버거를 프로세스에 첨부하거나 또는 커널 디버거를 기계에 첨부하는 것, 디스크 상의 이진 파일에서 민감한 데이터를 검색하는 것은, 디지털 미디어 또는 디지털 미디어를 액세스할 수 있는 프로세스를 찾아 손상시키는 모든 가능한 메커니즘들이다.
도 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)는 컴퓨터 시스템이 시작될 때(602) 시작되어, 운영 체제의 커널이 로딩되고 커널의 안전 플래그가 초기 값으로 세트된다(604). 프로세스는 시간에 따라 계속되어, 보호 환경이 통상적으로 생성되고, 애플리케이션은 그것 내로 로딩된다(606). 프로세스는 안전한 프로세스가 필요한 때 내내 시스템이 안전하게 유지되는지를 확인하기 위해 보호 환경을 통한 주기적 점검(608)을 포함한다.
본 명세서에서 사용된 바와 같이, "커널"이라는 용어는, 컴퓨팅 환경, 시스템 또는 장치용의 운영 체제의 중앙 모듈로서 정의된다. 커널 모듈은 컴퓨터 실행가능 명령어 및/또는 전자 논리 회로의 형태로 구현될 수 있다. 통상적으로, 커널은 컴퓨팅 환경의 메모리 관리, 프로세스 및 태스크 관리 및 저장 매체 관리를 담당한다. 본 명세서에서 사용된 바와 같이, "커널 컴포넌트"라는 용어는 커널의 일부를 형성하는 기본 제어 메커니즘, 모듈, 컴퓨터 실행가능 명령어 및/또는 전자 논리 회로인 것으로 정의된다. 예를 들면, 커널 컴포넌트는 완전히 동작가능한 커널을 확립하기 위해 다른 커널 컴포넌트들을 로딩하는 것을 담당할 수 있는 "로더"일 수 있다.
보호 환경을 생성하고 유지하는 프로세스를 요약하면 이하와 같다:
1. 블록(602)은 컴퓨터 시스템의 시작을 나타낸다. 이것은, 통상적으로, 부트 프로세스라 보통 알려져 있는 것으로 시작되며, 디스크 또는 일부 다른 저장 매체로부터 운영 체제를 로딩하는 것을 포함한다.
2. 통상적으로, 부트 프로세스의 제1 동작들 중 하나는 커널과 그 컴포넌트들을 로딩하는 것이다. 이 예는 커널 컴포넌트들의 유효성 검사를 제공하며, 모두가 안전한 것으로 성공적으로 밝혀지는 경우, 커널이 안전하다는 것을 나타내는 플래그를 세트한다. 이것이 블록(604)에 도시되어 있다.
3. 컴퓨터 시스템이 완전히 동작가능한 것으로 간주되면, 사용자는 보호 환경을 필요로 할 수 있는 신뢰되는 미디어 플레이어와 같은 애플리케이션을 시작할 수 있다. 이 예는 블록(606)에 도시된 바와 같이, 안전한 커널에 보호 환경에서 동작하는 애플리케이션을 제공한다.
4. 일단 보호 환경이 생성되고, 애플리케이션의 하나 이상의 프로세스가 이 환경 내로 로딩되어 동작하고 있으면, 신뢰되는 환경은 블록(608)에 도시된 바와 같이, 커널이 계속 안전한지를 보장하기 위해 커널 안전 플래그를 주기적으로 점검할 수 있다. 즉, 신뢰되는 애플리케이션이 동작을 시작한 시점에서부터, 인가되지 않은 임의의 커널 컴포넌트가 로딩되었는지 여부를 판정하기 위해 주기적으로 점검 할 수 있다. 이러한 인가되지 않은 커널 컴포넌트는 신뢰되는 애플리케이션 또는 이것이 처리하고 있는 데이터를 공격할 수 있다. 따라서, 이러한 컴포넌트가 하나라도 로딩되면, 커널 안전 플래그는 적절하게 세트될 수 있다.
안전한 커널을 로딩하고 유효성 검사하기
도 7은 예시적인 안전한 컴퓨팅 환경(200)을 생성하는 데에 사용되는 예시적인 커널 컴포넌트들(720-730)과 다른 컴포넌트들(710-714)을 도시하는 블록도이다. 이 도면은 통상적으로 디스크 등에 저장되는 여러 컴포넌트들(710-730)을 포함하는 컴퓨터 시스템을 도시하며, 이들 컴포넌트들 중 몇몇은 컴퓨터가 시작될 때 운영 체제의 커널을 형성하는 데에 사용된다. 화살표(604)는 커널 컴포넌트들이, 시스템의 운영 커널을 형성하는 메모리 내로 로딩되는 프로세스를 나타낸다. 로딩된 커널(750)은 그것의 각종 컴포넌트들(751-762)과 커널이 보호 환경에 대해 안전한 것으로 간주되는지 여부를 나타내는 커널 안전 플래그(790)를 포함하여 도시된다. "플래그"로서 기술되고 있는 커널 안전 플래그(790)는 제한하고자 하는 것이 아니다; 이것은 부울 변수 또는 더 복잡한 데이터 구조 또는 메커니즘으로서 구현될 수도 있다.
커널 컴포넌트들(720-730)은 통상적으로 "서명"되어 있고, 이들은 그것들이 되고자 하는 컴포넌트들이며, 수정되지 않았고 및/또는 악성이 아니라는 것을 커널이 증명할 수 있게 하는 증명서 데이터(738)를 포함할 수 있다. 서명 블록 및/또는 증명서 데이터(738)는 각 커널 커포넌트(720-730) 및/또는 로딩된 각각의 커널 컴포넌트(760,762)에 존재할 수 있다. 서명 및/또는 증명서 데이터(738)는 각 컴 포넌트에 고유할 수 있다. 이 서명 및/또는 증명서 데이터(738)는 이하에 나타나는 바와 같이 보호 환경의 생성과 유지에 사용될 수 있다. 통상적으로, 하나의 컴포넌트는, 그 컴포넌트의 소스를 안전하게 식별하는지 및/또는 이것이 함부로 변경될 수 있었는지 여부를 나타내는 방식으로 그 제공자에 의해 "서명"될 수 있다. 서명은 컴포넌트 헤더의 해시로 또는 다른 기술을 이용하여 구현될 수 있다. 또한, 컴포넌트가 신뢰될 수 있는지 여부를 판정하기 위해 사용될 수 있는 통상의 증명서 또는 증명서가 그 컴포넌트에 포함될 수 있다. 서명 및/또는 증명서 데이터(738)는 그것이 공통으로 사용되기 위해 배포되기에 앞서 컴포넌트에 추가될 수 있다. 당업자들은 이러한 기술과 그 사용에 대해 친숙할 것이다.
통상적인 컴퓨터 시스템이 시작되거나 또는 "부팅"될 때, 운영 체제의 로딩 프로세스 또는 "커널 로더"(751)는 디스크 등으로부터 커널의 컴포넌트들을 운영 체제의 커널을 형성하는 시스템 메모리의 일부로 로딩할 수 있다. 일단 모든 커널 컴포넌트가 로딩되어 동작가능하게 되면, 컴퓨터와 운영 체제는 "부팅"되었으며 정상적인 동작 준비가 된 것으로 간주된다.
커널 컴포넌트 #1(720) 내지 커널 컴포넌트 #n(730)은, 컴퓨팅 환경에서, 디버거(710), 디버그 자격 증명서(credential)(711), 커널 덤프 플래그(kernel dump flag)(712)와 취소(revocation) 리스트(714)와 함께 디스크 또는 기타 저장 매체에 저장될 수 있다. 화살표(604)는 각종 컴포넌트들(714-730)을 그 저장 장소로부터 판독하여 그것을 기능적 운영 체제 커널(750)을 형성하는 시스템 메모리 내로 로딩하는 커널 로딩 프로세스를 나타낸다. "플래그"로서 기술된 커널 덤프 플래 그(712)는 제한하고자 하는 것이 아니다; 이것은 부울 변수 또는 더 복잡한 데이터 구조 또는 메커니즘으로 구현될 수도 있다.
커널의 PE 관리부(752)와 함께 커널 로더(751), 취소 리스트(752), 블록(760 및 762)인 두 개의 커널 컴포넌트들(720, 722), 아직 커널 내로 로딩되지 않은 추가의 커널 컴포넌트들을 위한 공간(764, 770)의 표시와 함께 커널 내로 로딩되어 도시되어 있다. 마지막으로, 커널(750)은 그것이 현재 안전하다고 간주되는지 아닌지 여부를 나타내는 데에 사용될 수 있는 커널 안전 플래그(790)를 포함한다. 이 도시는 예로서 제공되며, 이것은 제한하고자 하거나 완전한 것이 아니다. 커널 로더(751), 커널의 PE 관리부(752) 및/또는 커널의 다른 컴포넌트들은 명확하게 설명하기 위해 별도의 커널 컴포넌트로서 도시되어 있지만, 실제 적용시에는, 커널의 다른 부분과 구별 가능할 수도 있고 아닐 수도 있다.
커널 컴포넌트(760 및 762)와 관련된 서명 및 증명서 데이터(738)와 함께 사용될 수 있는 취소 리스트(714)가 컴퓨팅 환경(200)에 포함될 수 있다. 이 객체(714)는 리스트(714)의 현재의 생성 날짜에 더 이상 유효하지 않은 것으로 간주되는 서명, 증명서 및/또는 증명서 체인들의 리스트를 보유할 수 있다. 취소 리스트(714)는 객체(754)로서 커널 내로 로딩된 것으로 도시되어 있다. 이러한 리스트는, 예를 들면 컴포넌트(760, 762)와 같은 유효하게 서명되고 증명된 컴포넌트들이 후에 일부 문제를 지닌 것으로 밝혀질 수 있기 때문에 유지된다. 시스템은 커널 컴포넌트들(720-730)이 로딩될 때 이러한 리스트(754)를 사용하여 이들을 점검할 수 있고, 어느 것이 제대로 서명되었는지 및/또는 어느 것이 신뢰되는 증명서 데이 터(738)를 지녔지만 신뢰할 수 없는 것으로 간주되는지를 점검할 수 있다. 이러한 취소 리스트(754)는 더 쉽게 식별되고, 관리되고, 필요시 업데이트될 수 있도록 통상적으로 버전 정보(755)를 포함할 것이다.
커널 보안에 영향을 끼칠 수 있는 시스템의 또 다른 컴포넌트는 디버거(710)이다. 디버거는 통상적으로 커널의 일부로 간주되지 않을 수 있지만 컴퓨팅 환경(200)에 존재할 수 있다. 커널 디버거, 시스템 분석기 등으로 알려진 것들을 포함하는 디버거들은 시스템과 임의의 데이터와 함께 시스템상에서 실행되는 프로세스로의 폭 넓은 액세스를 지닐 수 있다. 디버거(710)는 인가되지 않은 방식 이외의 방식으로는 액세스되어서는 안 되는 미디어 컨텐츠를 포함하여, 컴퓨팅 환경(200)의 모든 데이터를 액세스할 수 있다. 반면, 디버깅은 새 기능을 개발하는 것의 일부이며, 이것은 통상적으로, 보호되는 미디어 컨텐츠를 처리하고자 하는 코드를 보호 환경 내에서 디버깅할 수 있다. 따라서 디버거(710)는 시스템 상의 디버거(710)의 존재가 인가되었다는 것을 나타낼 수 있는 디버그 자격 증명서(711)를 포함할 수 있다. 따라서, 디버거(710)와 함께 그에 수반되는 모든 자격 증명서(711)의 존재의 탐지는 보호 환경의 생성 및 유지(도 6의 참조번호(600))의 일부일 수 있다.
컴퓨팅 환경(200)은 커널 덤프 플래그(712)를 포함할 수 있다. 이 플래그(712)는 절망적인 시스템 장애의 경우 정밀 조사(inspection)를 위해 얼마나 많은 시스템 메모리가 사용가능한지를 나타내는 데에 사용될 수 있다. 이러한 커널 덤프는 이러한 장애 후의 사후 디버깅(postmortem debugging)에 사용될 수 있다. 이러한 플래그(712)가 덤프 시 사실상 모든 메모리가 정밀 조사에 사용가능하다는 것을 나타내는 경우, 커널(750)은 안전하지 않은 것으로 간주될 수 있는데, 이는 해커가 시스템 메모리의 보호 미디어를 노출시키는 애플리케이션을 실행하여, 노출된 미디어 컨텐츠를 포함하는 것을 포함하여 메모리를 정밀 조사에 사용가능하게 만들어버리는 절망적인 시스템 장애를 시행할 수 있기 때문이다. 따라서, 커널 덤프 플래그(712)는 보호 환경의 생성 및 유지(도 6의 참조번호(600))의 일부일 수 있다.
도 8 및 도 9는 예시적인 안전한 컴퓨팅 환경을 생성하기 위해 커널 컴포넌트들을 로딩하기 위한 예시적인 프로세스(604)를 도시하는 흐름도이다. 이 프로세스(604)는 커널 로더가 시작되고 커널의 PE 관리부가 로딩되어 동작 가능하게 된 후 시작된다. 이 도면들에 도시되지는 않았지만, PE 관리부는 커널 로더 그 자체 및/또는 이전에 로딩될 수 있는 다른 커널 구성요소들의 유효성 검사를 할 수 있다. 유효성 검사는 이 프로세스(604)의 파트 2에 도시된 바와 같이, 소정의 컴포넌트가 안전하고 신뢰되는 것으로 간주되는지 여부를 판정하는 것으로서 정의될 수 있다.
커널 컴포넌트에 관해 이하에서 사용되는 "안전한 사용을 위해 인가된(authorized for secure use)"이라는 용어는, 이하의 특별한 의미를 갖는다. 안전한 사용을 위해 인가되지 않은 임의의 컴포넌트를 포함하는 커널은 보호 환경이 동작하고 있는 컴퓨팅 환경 내에서 안전한 컴퓨팅 환경을 제공하지 않는다. 이 반대는 공격 벡터와 같은 다른 요인들에 따라 사실이 아닐 수도 있다.
1. 블록(801)은 커널의 PE 관리부가 로딩되어 동작가능하게 된 후의, 로딩 프로세스(604)의 시작을 도시한다. 이에 앞서 커널에 로딩된 임의의 컴포넌트는 상술된 바와 같이 유효성 검사될 수 있다.
2. 블록(802)은 커널의 PE 관리부에 앞서 로딩된 임의의 컴포넌트, 또는 그 컴포넌트 자체가, 커널 안전 플래그가 FALSE로 세트될 수 있는 시점에서 안전하지 않은 것으로 밝혀지지 않는다면, 초기에 TRUE로 세트되는 것을 도시한다. 실행 시, TRUE 또는 FALSE의 표시는 각종 형태를 취할 수 있다; 본 명세서에서 TRUE 또는 FALSE를 사용하는 것은 단지 한 예이며 제한하고자 하는 것이 아니다.
3. 블록(804)에서는 컴퓨팅 환경에 디버거가 존재하는지를 점검한다. 또는, 디버거는 원격으로 상주할 수 있고, 네트워크 또는 컴퓨팅 환경의 프로세스에 대한 다른 통신 매체를 통해 컴퓨팅 환경에 부착될 수도 있다. 디버거가 탐지되지 않는다면 로딩 프로세스(604)는 블록(810)으로 계속된다. 그렇지 않으면 블록(806)에서 계속된다. 이 도면에 도시되지는 않았지만, 이 점검은 주기적으로 행해져서, 커널 안전 플래그의 상태가 그에 따라 업데이트된다.
4. 디버거가 탐지된 경우, 블록(806)에서는 보호 환경이 존재하는 경우, 시스템 상에서 디버깅이 인가될 수 있다는 것을 나타낼 수 있는 디버그 자격 증명서를 점검한다. 이러한 자격 증명서가 존재하지 않는 경우, 커널 안전 플래그는 블록(808)에 도시된 바와 같이 FALSE로 세트될 수 있다. 그렇지 않을 경우, 로딩 프로세스(604)는 블록(810)에서 계속된다.
5. 블록(810)에서는 커널 덤프 플래그가 점검된다. 전체 커널 메모리 덤프 등이 가능할 수 있다는 것을 이 플래그가 나타내는 경우, 커널 안전 플래그는 블록(808)에 도시된 바와 같이 FALSE로 세트될 수 있다. 그렇지 않을 경우, 로딩 프로세스(604)는 블록(812)에서 계속된다. 도면에 도시되지는 않았지만, 이 점검은 주기적으로 행해져서, 커널 안전 플래그의 상태가 그에 따라 업데이트된다.
6. 블록(812)은 취소 리스트가 커널 내로 로딩되는 것을 도시한다. 디버그 자격 증명서, 또는 이전에 로딩된 다른 자격 증명서, 서명, 증명서 데이터 등을 점검하는 데에 취소 리스트가 사용될 수 있는 경우, 이 단계는 도시된 것보다 이전의 시퀀스에서 (점검될 자격 증명서 등의 로딩에 앞서) 일어날 수 있다. 이 컴포넌트가 일단 로딩되면, 그 서명 및/또는 증명서 데이터가 취소 리스트에 대해 취소되었는지를 알아보기 위해 이전에 로딩된 임의의 커널 컴포넌트 또는 모든 커널 컴포넌트가 점검될 수 있다는 것은 본 도면에서는 도시되어 있지 않다. 만약 취소된 것이 있다면, 커널 안전 플래그는 FALSE로 세트될 수 있고, 로딩 프로세스(604)는 블록(814)에서 계속된다. 취소 리스트는 보호 환경의 생성과 유지에서 사용되기 위해 커널 내로 로딩될 수도 있고 로딩되지 않을 수도 있음을 유의한다.
7. 블록(814)은 이 도면이 도 9에 도시된 파트 2로 이행되며, 블록(901)에서 계속됨을 도시한다.
8. 블록(902)은 로딩될 임의의 추가의 커널 컴포넌트들에 대한 점검을 도시한다. 모든 컴포넌트들이 로딩된 경우, 로드 프로세스(604)는 보통 완료되고, 커널 안전 플래그는 TRUE이든 FALSE이든 그것이 마지막으로 세트되었던 상태 그대로 남게 된다. 로딩될 추가의 컴포넌트가 있는 경우, 로드 프로세스(604)는 블 록(906)에서 계속된다.
9. 블록(906)은 로딩될 다음 컴포넌트의 유효한 서명에 대한 점검을 도시한다. 서명이 유효하지 않다면, 커널 안전 플래그는 블록(918)에 도시된 바와 같이 FALSE로 세트될 수 있다. 그렇지 않을 경우, 로딩 프로세스(604)는 블록(908)에서 계속된다. 유효한 컴포넌트 서명이 없을 경우, 컴포넌트는 안전하지 않은 것으로 간주될 수 있고, 커널 안전 플래그는 블록(918)에 도시된 바와 같이 FALSE로 세트될 수 있다. 서명 유효성은 유효 서명 리스트 상에 일치하는 것이 있는지 점검함으로써 및/또는 서명자의 아이덴티티가 신뢰되는 아이덴티티인지 여부를 점검함으로써 판정될 수 있다. 보안 기술 분야의 당업자들에게 익숙한 바와 같이, 컴포넌트 서명의 유효성을 검사하기 위해 다른 방법들이 또한 사용될 수 있다.
10. 블록(908)은 컴포넌트의 증명서 데이터 점검을 도시한다. 증명서 데이터가 유효하지 않은 경우, 커널 안전 플래그는 블록(918)에 도시된 바와 같이 FALSE로 세트될 수 있다. 그렇지 않을 경우, 로딩 프로세스(604)는 블록(910)에서 계속된다. 사용가능한 컴포넌트 증명서 데이터가 없는 경우, 컴포넌트는 안전하지 않은 것으로 간주되고, 커널 안전 플래그는 블록(918)에 도시된 바와 같이 FALSE로 세트될 수 있다. 증명서 데이터 유효성은, 컴포넌트가 안전한 사용을 위해 인가되었는지 여부를 알아보기 위해 컴포넌트의 증명서 데이터를 점검함으로써 판정될 수 있다. 당업자들에게 친숙한 바와 같이, 컴포넌트 증명서 데이터의 유효성을 검사하기 위해 다른 방법들이 또한 사용될 수 있다.
11. 블록(910)은 커널 내로 로딩된 취소 리스트에 대한 컴포넌트 서명의 점 검을 도시한다. 서명이 리스트에 존재하는 경우, 이것은 서명이 취소되었다는 것을 나타내며, 따라서 커널 안전 플래그는 블록(918)에 도시된 바와 같이 FALSE로 세트될 수 있다. 그렇지 않을 경우, 로딩 프로세스(604)는 블록(912)에서 계속된다.
12. 블록(912)은 취소 리스트에 대한 컴포넌트 증명서 데이터의 점검을 도시한다. 증명서 데이터가 리스트에 존재하는 경우, 이것은 증명서 데이터가 취소되었다는 것을 나타내며, 따라서 커널 안전 플래그는 블록(918)에 도시된 바와 같이 FALSE로 세트될 수 있다. 그렇지 않을 경우, 로딩 프로세스(604)는 블록(914)에서 계속된다.
13. 블록(914)은 컴포넌트의 서명이 사용할 수 있는지 여부를 판정하기 위한 점검을 도시한다. 이 점검은 컴포넌트가 안전한 사용을 위해 인가되었는지 여부를 알아보기 위해 컴포넌트의 리프(leaf) 증명서 데이터를 면밀히 조사함으로써 행해질 수 있다. 증명서 데이터의 어떤 속성들은 컴포넌트가 보호 환경 사용에 대해 승인되었는지 여부를 나타낼 수 있다. 그렇지 않다면, 컴포넌트는 제대로 서명되지 않을 수 있고, 커널 안전 플래그는 블록(918)에 도시된 바와 같이 FALSE로 세트될 수 있다. 그렇지 않을 경우, 로딩 프로세스(604)는 블록(916)에서 계속된다.
14. 블록(916)은 컴포넌트의 루트 증명서 데이터의 점검을 도시한다. 이 점검은 컴포넌트의 루트 증명서 데이터가 신뢰되는 루트 증명서들의 리스트에 나열되어 있는지를 알아보기 위해 컴포넌트의 루트 증명서 데이터를 면밀히 조사함으로써 행해질 수 있다. 그렇지 않다면, 컴포넌트는 안전하지 않은 것으로 간주될 수 있 고, 커널 안전 플래그는 블록(918)에 도시된 바와 같이 FALSE로 세트될 수 있다. 그렇지 않을 경우, 로딩 프로세스(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)은 보호 환경의 확립을 도시한다. 이 도면에 도시되지는 않았지만, 이것은 운영 체제가 새로운 안전한 프로세스 생성을 요청함으로써 달성될 수 있다. 나중에 로딩되고 이 안전한 프로세스에서 동작하는 코드는 보호 환경에서 동작하고 있는 것으로 간주될 수 있다. 커널 안전 플래그가 FALSE로 세트되었다면, "새로운 안전한 프로세스 생성" 요청은 실패할 수 있다. 이것은 시스템이 대체로 보호 환경 및 보호 환경을 필요로 하는 임의의 애플리케이션 또는 데이터에 대해 안전하지 않고 부적합한 것으로 간주될 수 있기 때문이다. 또는, "새로운 안전한 프로세스 생성" 요청은 성공할 수 있고, 새로운 프로세스 내로 로딩된 컴포넌트에, 시스템이 안전하지 않은 것으로 간주되어 그 동작이 그에 따라 수정될 수 있다는 것을 알릴 수 있다. 그렇지 않을 경우, 프로세스(606)는 블록(1106)에서 계속된다.
3. 블록(1106)은 새로운 안전한 프로세스 또는 보호 환경 내로 로딩될 소프트웨어 컴포넌트의 유효 서명에 대한 점검을 도시한다. 서명이 유효하지 않다면, 프로세스(606)는 블록(1118)에 도시된 바와 같이 실패할 수 있다. 그렇지 않을 경우, 프로세스(606)는 블록(1108)에서 계속된다. 프로그램 또는 그 동등물이 프로세스에 도시되지는 않았지만, 새로운 안전한 프로세스를 생성하는 것 또한 유효 서명에 대해 점검될 수 있다. 따라서, 컴포넌트 자체 및/또는 새로운 안전한 프로세스를 생성하는 프로그램 둘 중 하나에 대해, 사용가능한 서명이 없다면, 컴포넌트는 안전하기 않은 것으로 간주될 수 있고, 프로세스(606)는 블록(1118)에 도시된 바와 같이 실패할 수 있다. 서명 유효성은 유효 서명 리스트 상에 일치하는 것이 있는지를 점검함으로써 및/또는 서명자의 아이덴티티가 신뢰되는 아이덴티티인지 여부를 점검함으로써 판정될 수 있다. 보안 기술 분야의 당업자들에게 익숙한 바와 같이, 컴포넌트 서명의 유효성을 검사하기 위해 다른 방법들이 또한 사용될 수 있다.
4. 블록(1108)은 소프트웨어 컴포넌트의 증명서 데이터 점검을 도시한다. 증명서 데이터가 유효하지 않은 경우, 프로세스(606)는 블록(1118)에 도시된 바와 같이 실패할 수 있다. 그렇지 않을 경우, 프로세스(606)는 블록(1110)에서 계속된다. 사용가능한 컴포넌트 증명서 데이터가 없는 경우, 컴포넌트는 안전하지 않은 것으로 간주되고, 프로세스(606)는 블록(1118)에 도시된 바와 같이 실패할 수 있다. 증명서 데이터 유효성은, 컴포넌트가 안전한 사용을 위해 인가되었는지 여부를 알아보기 위해 컴포넌트의 증명서 데이터를 점검함으로써 판정될 수 있다. 당업자들에게 친숙한 바와 같이, 컴포넌트 증명서 데이터의 유효성을 검사하기 위해 다른 방법들이 또한 사용될 수 있다.
5. 블록(1110)은 취소 리스트에 대한 컴포넌트 서명의 점검을 도시한다. 서명이 리스트에 존재하는 경우, 이것은 서명이 취소되었다는 것을 나타내며, 따라서 프로세스(606)는 블록(1118)에 도시된 바와 같이 실패할 수 있다. 그렇지 않을 경우, 프로세스(606)는 블록(1112)에서 계속된다.
6. 블록(1112)은 취소 리스트에 대한 컴포넌트 증명서 데이터의 점검을 도시한다. 증명서 데이터가 리스트에 존재하는 경우, 이것은 증명서 데이터가 취소되었다는 것을 나타내며, 따라서 프로세스(606)는 블록(1118)에 도시된 바와 같이 실패할 수 있다. 그렇지 않을 경우, 프로세스(606)는 블록(1114)에서 계속된다.
7. 블록(1114)은 컴포넌트의 서명의 사용이 수락가능한지 여부를 판정하기 위한 점검을 도시한다. 이 점검은 컴포넌트가 안전한 사용을 위해 인가되었는지 여부를 알아보기 위해 컴포넌트의 리프 증명서 데이터를 면밀히 조사함으로써 행해질 수 있다. 증명서 데이터의 어떤 속성들은 컴포넌트가 보호 환경 사용에 대해 승인되었는지 여부를 나타낼 수 있다. 그렇지 않다면, 컴포넌트는 제대로 서명되지 않은 것으로 간주될 수 있고, 프로세스(606)는 블록(1118)에 도시된 바와 같이 실패할 수 있다. 그렇지 않을 경우, 프로세스(606)는 블록(1116)에서 계속된다.
8. 블록(1116)은 컴포넌트의 루트 증명서 데이터의 점검을 도시한다. 이 점검은 컴포넌트의 루트 증명서 데이터가 신뢰되는 루트 증명서들의 리스트에 나열되어 있는지를 알아보기 위해 컴포넌트의 루트 증명서 데이터를 면밀히 조사함으로써 행해질 수 있다. 그렇지 않다면, 컴포넌트는 안전하지 않은 것으로 간주될 수 있고, 프로세스(606)는 블록(1118)에 도시된 바와 같이 실패할 수 있다. 그렇지 않 을 경우, 프로세스(606)는 블록(1120)에서 계속된다.
9. 블록(1118)은 로드하는 소프트웨어 컴포넌트의 실패를 도시하며, 보호 환경 생성 프로세스(606)가 종료되는 블록(1130)으로 이어진다.
10. 블록(1120)은 동작가능한 것으로 간주되는 보호 환경 내로 소프트웨어 컴포넌트가 로딩되고 있는 것을 도시하며, 보호 환경 생성 프로세스(606)가 종료하는 블록(1130)으로 이어진다.
시간의 흐름에 따른 안전한 커널의 유효성 검사하기(validating a secure kernel over time)
도 12는 안전한 컴퓨팅 환경(200)의 보안 상태(790)를 주기적으로 점검하는(608) 예시적인 보호 환경(202)을 이용하는 예시적인 신뢰되는 애플리케이션을 도시하는 블록도이다. 이 예에서, 컴퓨팅 환경(200)과 커널(750)은 도 7과 도 8에 도시된 것과 동일할 수 있다. 커널(750)이 이미 로딩되어 컴퓨터(200)는 완전히 동작가능한 것으로 간주된다. 또한, 보호 환경이 생성되었고, 신뢰되는 애플리케이션의 적절한 컴포넌트들이 보호 환경으로 로딩되어 동작가능하게 되었고, 보호 환경(202)(이하에서는, 간단하게 "보호 환경"이라 지칭함)을 이용하여 신뢰되는 애플리케이션을 확립한다.
보호 환경(202)은 커널의 PE 관리부(752)를 주기적으로 점검하여, 커널(750)이 시간이 흘러도 계속 안전하게 유지되는지 여부를 판정할 수 있다. 이 주기적 점검은, 안전하지 않을 수 있다고 간주되는 컴포넌트를 포함하는 새로운 컴포넌트가 언제든지 커널(750) 내로 로딩될 수 있기 때문에 행해질 수 있다. 만약 이것이 발생한다면, 커널 안전 플래그(790)의 상태는 FALSE로 변경되고, 보호 환경(202)에서 동작하는 코드는 적절하게 응답하는 기회를 갖는다.
예를 들면, PC(200)에서 안전한 커널(750)로 시작된 미디어 플레이어 애플리케이션과 안전한 사용을 위해서만 라이센스된 디지털 미디어 컨텐츠를 처리하는 보호 환경(202)에서 동작하는 미디어 플레이어 애플리케이션의 일부를 고려해보자. 이 예에서, 미디어 플레이어 애플리케이션이 미디어 컨텐츠를 처리하는 동안 안전하지 않다고 간주되는 새로운 커널 컴포넌트가 로딩되면, 커널 안전 상태 점검 프로세스(240)는, 커널 안전 플래그(790)가 커널(750)이 더 이상 안전하지 않을 수 있다는 것을 나타내는 FALSE로 변경되었음을 유의할 것이다.
또는, 최소 리스트(745)가 업데이트되어, 이전에 안전하다고 간주되었던 커널 컴포넌트가 더 이상 안전하지 않은 것으로 간주될 수 있으며, 그 결과, 커널 안전 플래그(790)가 FALSE로 세트된다. 이 시점에서, 애플리케이션은, 시스템(200)이 더 이상 안전하다고 간주되지 않으며, 동작을 종료하거나 또는 애플리케이션 자신 및/또는 이것이 처리하는 미디어 컨텐츠를 보호하기 위해 다른 적절한 액션을 취할 수 있다는 통지를 받을 수 있다.
도 13은 안전한 컴퓨팅 환경의 보안 상태를 주기적으로 점검하기 위한 예시적인 프로세스(608)를 도시하는 흐름도이다. 이 프로세스(608)는 커널이 시간이 흘러도 계속 안전하게 유지되는지 여부를 판정하기 위해 보호 환경(202)에 의해 사용될 수 있다. 보호 환경(202)은 이 프로세스(608)를 주기적으로 이용하여 커널의 현재 보안 상태를 점검한다. 보호 환경(202) 및/또는 그것 내에서 동작하는 소프 트웨어 컴포넌트는 현재의 보안 상태 정보를 이용하여 그 동작을 적절하게 수정할 수 있다. 프로세스의 주기적인 활성화는 종래의 기술을 이용하여 구현될 수 있다.
도 13은 보호 환경(202)과 커널의 PE 관리부(752) 간에 발생하는, 예시적인 의사 코드로 도시된 통신 시퀀스(608)를 도시한다. 이 통신은, 취소 리스트의 버전 점검을 포함하고, 이로 인해 애플리케이션은 적어도 일부 버전의 취소 리스트를 특정할 수 있다. 이 통신 시퀀스는 종래의 기술을 이용하여 암호로 안전하게 될 수 있다.
1. 보호 환경(202)은 커널의 PE 관리부에 IsKernelSecure(MinRLVer) 호출(1320)을 행하여 커널의 현재 보안 상태를 질의한다. 이 호출(1320)에는 이용될 예정인 취소 리스트의 취소 버전(MinRLVer)이 포함될 수 있다.
2. 커널의 PE 관리부는 호출 프로세스인 보호 환경이 안전한지 여부를 알아보기 위해 점검한다. 그렇지 않을 경우, 보호 환경에 Return(SecureFlag=FALSE) 표시(1322)를 제공하고, 통신 시퀀스(608)가 종료된다. 이 보안 점검은 상술된 바와 같이 유효 서명 및/또는 증명서 데이터에 대해 보호 환경을 점검하는 커널의 PE 관리부에 의해 행해질 수 있다.
3. 그렇지 않을 경우, 커널의 PE 관리부는 호출(1320)에 응하여 커널 안전 플래그를 점검한다. 그 플래그의 상태가 FALSE이면, 이것은 보호 환경에 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)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, AGP (accelerated graphics port) 및/또는 각종 버스 아키텍쳐 중 임의의 것을 사용하는 프로세서 또는 로컬 버스를 포함하는, 임의의 개수의 여러 유형의 버스 구조들을 나타낸다.
시스템 메모리(1409)는 랜덤 액세스 메모리(RAM)와 같은 휘발성 메모리 및/또는 판독 전용 메모리(ROM)와 같은 비휘발성 메모리의 형태의 컴퓨터 판독가능 매체를 포함할 수 있다. 기본 입/출력 시스템(BIOS)은 ROM에 저장될 수 있다. RAM은 통상적으로 하나 이상의 프로세서(1407)에 즉시 액세스가능하거나 및/또는 하나 이상의 프로세서(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) 상에 저장될 수 있다. 미디어 애플리케이션(105) 및/또는 디지털 저작권 관리 시스템(204)은 기타 애플리케이션 프로그램들과 함께 디스크(1410) 상에 저장될 수 있다. 이들 컴포넌트들(720-730) 및 애플리케이션들(105,204)은 시스템 메모리(1409) 내로 로딩되어 동작가능하게 될 수 있다.
디스플레이 장치(1416)는 비디오 어댑터(1411)와 같은 인터페이스를 통해 시스템 버스(1408)에 결합될 수 있다. 사용자는 키보드, 포인팅 장치, 조이스틱, 게임 패드, 직렬 포트 등과 같은 임의의 개수의 서로 다른 입력 장치들(1403)을 통해 컴퓨팅 장치(1400)와 통신할 수 있다. 이들 및 기타 입력 장치들은 시스템 버스(1408)에 결합될 수 있는 입력/출력 인터페이스(1412)를 통해 프로세서들(1407)에 결합될 수 있으며, 병렬 포트, 게임 포트 및/또는 USB 등과 같은 다른 인터페이스 및 버스 구조에 의해 결합될 수 있다.
컴퓨팅 장치(1400)는 하나 이상의 LAN, WAN, 인터넷, 무선 링크, 광 링크 등을 통해 하나 이상의 원격 컴퓨터 및/또는 장치로의 통신 접속을 이용하여 네트워크화된 환경에서 동작할 수 있다. 컴퓨팅 장치(1400)는 네트워크 어댑터(1413) 또는 대안으로는 모뎀, DSL, ISDN 인터페이스 등을 통해 네트워크에 결합될 수 있다.
통신 접속(1414)는 통신 매체의 일례이다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및/또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호 내에 정보가 인코딩되도록 그 신호의 하나 이상의 특성을 설정 또는 변경시킨 신호를 의미한다. 예제로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함한다.
당업자들은 컴퓨터 판독가능 프로그램 명령어들을 저장하도록 이용되는 저장 장치가 네트워크에 걸쳐 분산될 수 있다는 것을 알 것이다. 예를 들면, 원격 컴퓨터 또는 장치는 소프트웨어로서 설명된 시스템의 일례를 저장할 수 있다. 로컬 또는 단말 컴퓨터 또는 장치는 원격 컴퓨터 또는 장치를 액세스할 수 있고, 프로그램을 실행하기 위해 소프트웨어의 일부 또는 그 전체를 다운로드할 수 있다. 또는, 로컬 컴퓨터는 필요한 소프트웨어 부분을 다운로드하거나, 또는 소프트웨어 명령어의 일부는 로컬 단말기에서 실행하고 일부는 원격 컴퓨터 및/또는 장치에서 실행함으로써 소프트웨어를 분산하여 처리할 수 있다.
당업자들에게 공지된 종래의 기술을 이용함으로써, 디지털 신호 프로세서(DSP), 프로그램가능한 로직 어레이(PLA), 개별 회로 등과 같은 전용 전기 회로에 의해 소프트웨어의 전부 또는 그 일부가 수행될 수 있다는 것을 당업자들은 또한 잘 알 것이다. 본 명세서에서 사용된 전자 장치라는 용어는, 임의의 소프트웨어 및/또는 펌웨어 등을 포함하는 컴퓨팅 장치 및/또는 소비자 전자 장치, 및/또는 소프트웨어 및/또는 펌웨어 등을 포함하지 않는 전자 장치 또는 회로를 포함한다.
컴퓨터 판독가능 매체라는 용어는 시스템 메모리, 하드 디스크, 대용량 저장 장치 및 그 관련 매체, 통신 매체 등을 포함할 수 있다.

Claims (20)

  1. 컴퓨팅 장치 내에 보호 환경(protected environment)을 설정하고 상기 보호 환경 내로 애플리케이션을 로딩하는 방법으로서, 상기 컴퓨팅 장치가,
    상기 컴퓨팅 장치의 오퍼레이팅 시스템의 커널의 복수의 커널 컴포넌트의 커널 로더(kernel loader)에 의해, 보호 환경 관리 컴포넌트를 상기 커널 내로 로딩하는 단계 - 상기 로딩된 보호 환경 관리 컴포넌트(protected environment management component)는 상기 컴퓨팅 장치 상에서 동작하며, 상기 보호 환경 관리 컴포넌트는 복수의 커널 컴포넌트 중 어느 하나이고, 상기 커널 로더는 상기 컴퓨팅 장치 상에서 동작함 - ;
    상기 보호 환경 관리 컴포넌트에 의해, 상기 커널 로더가 안전(secure)하다고 인증(validate)하는 단계;
    상기 커널 로더가 안전하다고 인증하는 것에 응답하여, 상기 커널에 대한 안전 상태(security state)를 설정하는 단계 - 상기 안전 상태의 설정은 상기 복수의 커널 컴포넌트 중 다른 하나인 커널 안전 플래그(kernel secure flag)를 설정하는 것을 포함하고, 상기 커널 안전 플래그는 상기 커널의 상기 안전 상태가 상기 보호 환경에 대해 안전하다고 여겨진다는 것을 나타냄 - ;
    상기 커널 로더에 의해, 상기 복수의 커널 컴포넌트 중 아직 로딩되지 않은 또 다른 컴포넌트들을 로딩하는 단계 - 상기 로딩된 상기 복수의 커널 컴포넌트 중 상기 또 다른 컴포넌트들은 상기 컴퓨팅 장치 상에서 동작함 - ;
    상기 로딩된 상기 복수의 커널 컴포넌트 중 상기 또 다른 컴포넌트들을 안전하다고 인증하고, 상기 인증으로 인해 상기 커널이 완전히 동작(fully operational)한다고 여겨지게 하는 단계;
    상기 커널이 완전히 동작한다고 여겨지는 것에 응답하여, 안전 프로세스(secure process)를 생성하는 단계;
    상기 안전 프로세스 내로 상기 애플리케이션을 로딩하는 단계 - 상기 애플리케이션은 상기 오퍼레이팅 시스템과 상이함 - ;
    상기 커널의 상기 안전 상태를 주기적으로 점검하는 단계; 및
    상기 커널의 상기 안전 상태의 모든 변화에 대해 상기 안전 프로세스에 통지하는 단계
    를 수행하도록 동작하는, 보호 환경 설정 방법.
  2. 제1항에 있어서, 상기 커널의 안전 상태를 주기적으로 점검하는 단계는, 상기 커널 안전 플래그를 점검하는 단계를 더 포함하는 보호 환경 설정 방법.
  3. 컴퓨팅 장치 내에 보호 환경을 설정하고 상기 보호 환경 내로 애플리케이션의 적어도 일 부분을 로딩하는 방법으로서, 상기 컴퓨팅 장치가,
    상기 컴퓨팅 장치의 오퍼레이팅 시스템의 커널의 복수의 커널 컴포넌트의 커널 로더에 의해, 보호 환경 관리 컴포넌트를 상기 커널 내로 로딩하는 단계 - 상기 로딩된 보호 환경 관리 컴포넌트는 상기 컴퓨팅 장치 상에서 동작하며, 상기 보호 환경 관리 컴포넌트는 복수의 커널 컴포넌트 중 어느 하나이고, 상기 커널 로더는 상기 컴퓨팅 장치 상에서 동작함 - ;
    상기 보호 환경 관리 컴포넌트에 의해, 상기 커널 로더가 안전(secure)하다고 인증(validate)하는 단계;
    상기 애플리케이션의 적어도 일 부분에 대한 안전 프로세스(secure process)를 생성하는 단계;
    상기 애플리케이션의 서명(signature)의 유효성(validity)을 점검하는 단계;
    상기 애플리케이션의 증명서(certificate)의 유효성을 점검하는 단계;
    상기 애플리케이션의 상기 서명이 취소 리스트(revocation list) 내에 있지 않다는 것을 판정하는 단계 - 상기 취소 리스트는 상기 커널 내에 로딩되고 유지됨 - ;
    상기 애플리케이션의 상기 증명서에 대한 데이터가 상기 취소 리스트에 있지 않다는 것을 판정하는 단계;
    상기 애플리케이션의 상기 서명이 사용이 허용되는 것임을 판정하는 단계;
    상기 애플리케이션의 상기 증명서에 대한 데이터가 사용이 허용되는 것임을 판정하는 단계; 및
    상기 보호 환경의 상기 안전 프로세스 내에 상기 애플리케이션의 상기 적어도 일 부분을 로딩하는 단계 - 상기 애플리케이션은 상기 오퍼레이팅 시스템과 상이함 -
    를 수행하도록 동작하는, 보호 환경 설정 방법.
  4. 제3항에 있어서, 상기 안전 프로세스 내에 상기 애플리케이션의 상기 적어도 일 부분을 로딩하는 단계는 상기 애플리케이션의 상기 서명의 유효성을 점검하는 단계가 실패하는 경우에 실패하는, 보호 환경 설정 방법.
  5. 제3항에 있어서, 상기 안전 프로세스 내에 상기 애플리케이션의 상기 적어도 일 부분을 로딩하는 단계는 상기 애플리케이션의 상기 증명서의 유효성을 점검하는 단계가 실패하는 경우에 실패하는, 보호 환경 설정 방법.
  6. 제3항에 있어서, 상기 안전 프로세스 내에 상기 애플리케이션의 상기 적어도 일 부분을 로딩하는 단계는 상기 애플리케이션의 상기 증명서에 대한 데이터가 취소 리스트 내에 있지 않다는 것을 판정하는 단계가 실패하는 경우에 실패하는, 보호 환경 설정 방법.
  7. 제3항에 있어서, 상기 안전 프로세스 내에 상기 애플리케이션의 상기 적어도 일 부분을 로딩하는 단계는 상기 애플리케이션의 상기 서명이 사용이 허용되는 것임을 판정하는 단계가 실패하는 경우에 실패하는, 보호 환경 설정 방법.
  8. 제3항에 있어서, 상기 안전 프로세스 내에 상기 애플리케이션의 상기 적어도 일 부분을 로딩하는 단계는 상기 애플리케이션의 상기 증명서에 대한 데이터가 사용이 허용되는 것임을 판정하는 단계가 실패하는 경우에 실패하는, 보호 환경 설정 방법.
  9. 제3항에 있어서, 상기 방법은 상기 커널의 안전 상태를 주기적으로 점검하고, 상기 주기적인 점검에 따라 커널 안전 플래그를 업데이트하는 단계를 더 포함하는, 보호 환경 설정 방법.
  10. 컴퓨터 실행가능 명령어들을 포함하는 컴퓨터 판독가능 기록매체로서, 상기 컴퓨터 실행가능 명령어들은 컴퓨팅 장치에 의해 실행되는 경우, 상기 컴퓨팅 장치로 하여금 컴퓨팅 장치 내에 보호 환경을 설정하고 상기 보호 환경 내로 애플리케이션을 로딩하는 방법을 수행하게 하며, 상기 방법은,
    상기 컴퓨팅 장치의 오퍼레이팅 시스템의 커널의 복수의 커널 컴포넌트의 커널 로더에 의해, 보호 환경 관리 컴포넌트를 상기 커널 내로 로딩하는 단계 - 상기 로딩된 보호 환경 관리 컴포넌트는 상기 컴퓨팅 장치 상에서 동작하며, 상기 보호 환경 관리 컴포넌트는 복수의 커널 컴포넌트 중 어느 하나이고, 상기 커널 로더는 상기 컴퓨팅 장치 상에서 동작함 - ;
    상기 보호 환경 관리 컴포넌트에 의해, 상기 커널 로더가 안전(secure)하다고 인증(validate)하는 단계;
    상기 커널 로더가 안전하다고 인증하는 것에 응답하여, 상기 커널에 대한 안전 상태(security state)를 설정하는 단계 - 상기 안전 상태의 설정은 상기 복수의 커널 컴포넌트 중 다른 하나인 커널 안전 플래그를 설정하는 것을 포함하고, 상기 커널 안전 플래그는 상기 커널의 상기 안전 상태가 상기 보호 환경에 대해 안전하다고 여겨진다는 것을 나타냄 - ;
    상기 커널 로더에 의해, 상기 복수의 커널 컴포넌트 중 아직 로딩되지 않은 또 다른 컴포넌트들을 로딩하는 단계 - 상기 로딩된 상기 복수의 커널 컴포넌트 중 상기 또 다른 컴포넌트들은 상기 컴퓨팅 장치 상에서 동작함 - ;
    상기 로딩된 상기 복수의 커널 컴포넌트 중 상기 또 다른 컴포넌트들을 안전하다고 인증하고, 상기 인증으로 인해 상기 커널이 완전히 동작(fully operational)한다고 여겨지게 하는 단계;
    상기 커널이 완전히 동작한다고 여겨지는 것에 응답하여, 안전 프로세스(secure process)를 생성하는 단계;
    상기 안전 프로세스 내로 상기 애플리케이션을 로딩하는 단계 - 상기 애플리케이션은 상기 오퍼레이팅 시스템과 상이함 - ;
    상기 커널의 상기 안전 상태를 주기적으로 점검하는 단계; 및
    상기 커널의 상기 안전 상태의 모든 변화에 대해 상기 안전 프로세스에 통지하는 단계
    를 포함하는, 컴퓨터 판독가능 기록매체.
  11. 제10항에 있어서, 상기 커널의 안전 상태를 주기적으로 점검하는 단계는, 상기 커널 안전 플래그를 점검하는 단계를 더 포함하는, 컴퓨터 판독가능 기록매체.
  12. 제10항에 있어서, 상기 방법은,
    상기 애플리케이션의 서명(signature)의 유효성(validity)을 점검하는 단계;
    상기 애플리케이션의 증명서(certificate)의 유효성을 점검하는 단계;
    상기 애플리케이션의 상기 서명이 취소 리스트(revocation list) 내에 있지 않다는 것을 판정하는 단계 - 상기 취소 리스트는 상기 커널 내에 로딩되고 유지됨 - ;
    상기 애플리케이션의 상기 증명서에 대한 데이터가 상기 취소 리스트에 있지 않다는 것을 판정하는 단계;
    상기 애플리케이션의 상기 서명이 사용이 허용되는 것임을 판정하는 단계; 및
    상기 애플리케이션의 상기 증명서에 대한 데이터가 사용이 허용되는 것임을 판정하는 단계
    를 더 포함하는, 컴퓨터 판독가능 기록매체.
  13. 제12항에 있어서, 상기 안전 프로세스 내에 상기 애플리케이션을 로딩하는 단계는 상기 애플리케이션의 상기 서명의 유효성을 점검하는 단계가 실패하는 경우에 실패하는, 컴퓨터 판독가능 기록매체.
  14. 제12항에 있어서, 상기 안전 프로세스 내에 상기 애플리케이션을 로딩하는 단계는 상기 애플리케이션의 상기 증명서의 유효성을 점검하는 단계가 실패하는 경우에 실패하는, 컴퓨터 판독가능 기록매체.
  15. 제12항에 있어서, 상기 안전 프로세스 내에 상기 애플리케이션을 로딩하는 단계는 상기 애플리케이션의 상기 증명서에 대한 데이터가 취소 리스트 내에 있지 않다는 것을 판정하는 단계가 실패하는 경우에 실패하는, 컴퓨터 판독가능 기록매체.
  16. 제12항에 있어서, 상기 안전 프로세스 내에 상기 애플리케이션을 로딩하는 단계는 상기 애플리케이션의 상기 서명이 사용이 허용되는 것임을 판정하는 단계가 실패하는 경우에 실패하는, 컴퓨터 판독가능 기록매체.
  17. 제12항에 있어서, 상기 안전 프로세스 내에 상기 애플리케이션을 로딩하는 단계는 상기 애플리케이션의 상기 증명서에 대한 데이터가 사용이 허용되는 것임을 판정하는 단계가 실패하는 경우에 실패하는, 컴퓨터 판독가능 기록매체.
  18. 삭제
  19. 삭제
  20. 삭제
KR1020077024145A 2005-04-22 2005-08-26 보호 컴퓨팅 환경 KR101238496B1 (ko)

Applications Claiming Priority (5)

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
PCT/US2005/030490 WO2006115533A2 (en) 2005-04-22 2005-08-26 Protected computing environment

Publications (2)

Publication Number Publication Date
KR20080008337A KR20080008337A (ko) 2008-01-23
KR101238496B1 true KR101238496B1 (ko) 2013-03-04

Family

ID=46062814

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077024145A KR101238496B1 (ko) 2005-04-22 2005-08-26 보호 컴퓨팅 환경

Country Status (3)

Country Link
KR (1) KR101238496B1 (ko)
TW (1) TWI428786B (ko)
WO (1) WO2006115533A2 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9363481B2 (en) 2005-04-22 2016-06-07 Microsoft Technology Licensing, Llc Protected media pipeline
US9436804B2 (en) 2005-04-22 2016-09-06 Microsoft Technology Licensing, Llc Establishing a unique session key using a hardware functionality scan
CN109753347B (zh) * 2017-11-06 2023-03-21 阿里巴巴集团控股有限公司 一种实现驱动的系统及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6327652B1 (en) * 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US20030188179A1 (en) * 2002-03-28 2003-10-02 International Business Machines Corporation Encrypted file system using TCPA

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030005335A1 (en) * 2001-06-28 2003-01-02 Hidekazu Watanabe Protecting secured codes and circuits in an integrated circuit
US7322042B2 (en) * 2003-02-07 2008-01-22 Broadon Communications Corp. Secure and backward-compatible processor and secure software execution thereon

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6327652B1 (en) * 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US20030188179A1 (en) * 2002-03-28 2003-10-02 International Business Machines Corporation Encrypted file system using TCPA

Also Published As

Publication number Publication date
WO2006115533A3 (en) 2007-11-15
WO2006115533A2 (en) 2006-11-02
KR20080008337A (ko) 2008-01-23
TWI428786B (zh) 2014-03-01
TW200638237A (en) 2006-11-01

Similar Documents

Publication Publication Date Title
US9189605B2 (en) Protected computing environment
US11120126B2 (en) Method and system for preventing and detecting security threats
US9363481B2 (en) Protected media pipeline
RU2413295C2 (ru) Система и способ для защищенной начальной загрузки операционной системы с использованием проверки состояния
RU2390836C2 (ru) Отображение достоверности из высоконадежной среды на незащищенную среду
EP2854066B1 (en) System and method for firmware integrity verification using multiple keys and OTP memory
KR101190479B1 (ko) 티켓 인증 보안 설치 및 부트
US20050060568A1 (en) Controlling access to data
US20090063108A1 (en) Compatible trust in a computing device
Löhr et al. Patterns for secure boot and secure storage in computer systems
US8656190B2 (en) One time settable tamper resistant software repository
CN114651253A (zh) 用于策略强制实施的虚拟环境类型验证
KR101238496B1 (ko) 보호 컴퓨팅 환경
KR101265887B1 (ko) 보호 컴퓨팅 환경을 제공하는 방법 및 장치 내에 보호 환경을 설정하는 방법

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee