KR101238572B1 - 신뢰 환경을 지원하기 위한 컴퓨터 판독가능 구성요소의자동 업데이트 - Google Patents

신뢰 환경을 지원하기 위한 컴퓨터 판독가능 구성요소의자동 업데이트 Download PDF

Info

Publication number
KR101238572B1
KR101238572B1 KR1020077030758A KR20077030758A KR101238572B1 KR 101238572 B1 KR101238572 B1 KR 101238572B1 KR 1020077030758 A KR1020077030758 A KR 1020077030758A KR 20077030758 A KR20077030758 A KR 20077030758A KR 101238572 B1 KR101238572 B1 KR 101238572B1
Authority
KR
South Korea
Prior art keywords
revocation list
computing device
component
update
new
Prior art date
Application number
KR1020077030758A
Other languages
English (en)
Other versions
KR20080026132A (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=37669367&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR101238572(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080026132A publication Critical patent/KR20080026132A/ko
Application granted granted Critical
Publication of KR101238572B1 publication Critical patent/KR101238572B1/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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/00086Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2135Metering

Landscapes

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

Abstract

본 자동 업데이트 메커니즘은 주기적으로 업데이트를 체크하여 신뢰 환경을 지원하는 방법을 제공한다. 주기적인 체크 동안, 권장 업데이트가 있는 경우 업데이트 서비스로부터 표시가 수신된다. 표시를 수신함과 동시에, 신규 폐기 목록이 업데이트 서비스로부터 다운로드되고 보류 폐기 목록으로 저장된다. 그 다음 보호된 콘텐츠가 컴퓨팅 장치의 현재 보호 레벨에 의해 제공되는 보호보다 컴퓨팅 장치 상에 더 높은 보호 레벨을 요구하는 경우 온디맨드 업데이트에 대한 보류 폐기 목록이 이용가능하다.
인증서 폐기 목록(certificate revocation list), 자동 업데이트 메커니즘, 업데이트 서비스, 신규 폐기 목록(new revocation list), 보류 폐기 목록(pending revocation list), 신뢰 환경(trusted environment)

Description

신뢰 환경을 지원하기 위한 컴퓨터 판독가능 구성요소의 자동 업데이트{AUTOMATIC UPDATE OF COMPUTER-READABLE COMPONENTS TO SUPPORT A TRUSTED ENVIRONMENT}
본 발명은 신뢰 환경을 지원하는 자동 업데이트 메커니즘에 관한 것이다.
과거에는, 다른 유형의 매체를 이용하여 다른 유형의 콘텐츠가 배포되었다. 예를 들어, 음악은 CD(compact disc)를 통해 배포되고 CD 플레이어를 이용하여 재생되었다. 동영상은 VHS(Video Home System) 테이프 또는 DVD(Digital Versatile Disk)를 통해 배포되고 VCR(Video Cassette Recorder) 또는 DVD 플레이어를 이용하여 각각 재생되었다. CD 플레이어, VCR 및 DVD 플레이어는 특정 유형의 매체를 위해 설계된 가전 장치로 분류되었다. 이러한 가전 장치는 추가적인 소프트웨어가 로딩될 수 없는 폐쇄 시스템(closed system)이었다. 따라서, 이러한 폐쇄 시스템은 콘텐츠의 비인가된 복사를 허용하지 않았다.
그러나, 오늘날, 컴퓨팅 장치(computing device)에는 일반적으로 CD/DVD 플레이어(즉, 드라이브) 및 기타 매체를 위한 플레이어가 통합되어 있다. 따라서, 컴퓨팅 장치는 가전 장치가 재생할 수 있는 CD 또는 DVD를 마찬가지로 재생할 수 있다. 또한, 컴퓨팅 장치는 오픈 플랫폼(open platform)으로 설계되기 때문에, 추 가적인 소프트웨어가 이 컴퓨팅 장치에 로딩될 수 있다. 이러한 추가적인 소프트웨어는 저작권 보호되는 콘텐츠의 복사 및/또는 인터넷을 통한 다른 사람들과의 콘텐츠 공유를 가능하게 할 수 있다. 따라서, 콘텐츠 소유자는 자신들의 콘텐츠를 컴퓨팅 장치에서 재생시키는 것을 주저한다.
콘텐츠 소유자의 걱정을 해결하기 위해서, 컴퓨팅 장치에서 처리되는 콘텐츠(이하 디지털 매체라고 함)를 보호하고 컴퓨팅 장치를 디지털 매체의 안전한 플레이어로 개선시키기 위한 수많은 보호 기법이 설계되어 왔다. 한가지 보호 기법은 MPAA(Motion Picture Association of America)에 의해 의무화되었다. 이 보호 기법은 콘텐츠 스크램블링 시스템(Content Scrambling System: CSS)이라고 불리는 암호화 알고리즘을 이용하여 DVD의 배포를 보호했다. DVD 플레이어는 영화 콘텐츠를 해석하도록 되어 있지만, 해석된 콘텐츠를 복사하거나 저장할 수 없었다. 그러나, 컴퓨터 해커가 CSS를 해독하는 컴퓨터 프로그램을 개발했다. 그 후, 이 컴퓨터 프로그램은 인터넷 상에 공개되었다. 이 컴퓨터 프로그램으로, 자신의 컴퓨팅 장치에 DVD 드라이브를 갖고 있는 최종 사용자는 영화 콘텐츠를 해독하고 표준 파일 포맷으로 저장할 수 있게 되었다. 그리고 나서 이 파일은 다른 컴퓨팅 장치의 다른 사용자와 쉽게 공유될 수 있었고, 따라서 저작권 보호를 교묘히 피해갔다.
컴퓨팅 장치가 오픈 시스템이기 때문에, 일부 사용자들은 디지털 매체를 보호하도록 설계된 보호 기법을 깨려고 계속 시도한다. 지속적으로 디지털 매체를 보호하기 위해서, 이러한 보호 기법은 지속적으로 업데이트될 필요가 있다. 그렇지 않으면, 콘텐츠 소유자는 특정 콘텐츠를 컴퓨팅 장치에서 처리하지 못하도록 하 는 손해를 입게 된다. 계속적인 업데이트 및 특정 콘텐츠로의 액세스를 가지지 않는 손해는 최종 사용자, 심지어 어떠한 불법 행위도 하지 않는 최종 사용자에게까지 나쁜 영향을 준다. 따라서, 보호 기법이 소정의 방법으로 위반되었을 때 불필요하게 무고한 최종 사용자에게까지 영향을 주지 않는 메커니즘이 필요하다.
본 자동 업데이트 메커니즘은 주기적으로 업데이트를 체크하여 신뢰 환경을 지원하는 방법을 제공한다. 주기적인 체크 동안, 권장 업데이트가 있는 경우 업데이트 서비스로부터 표시가 수신된다. 표시를 수신함과 동시에, 신규 폐기 목록이 업데이트 서비스로부터 다운로드되고 보류 폐기 목록으로 저장된다. 그 다음 보호된 콘텐츠가 컴퓨팅 장치의 현재 보호 레벨에 의해 제공되는 보호보다 컴퓨팅 장치 상에 더 높은 보호 레벨을 요구하는 경우 온디맨드 업데이트에 대한 보류 폐기 목록이 이용가능하다.
본 설명은 아래의 실시예를 통해 더욱 설명되는 개념의 정선을 단순화한 형태로 소개하도록 제공된 것이다. 본 설명은 청구된 대상물의 주요 특징 또는 본질적인 특징을 식별하기 위한 것이 아닐 뿐더러 본 청구된 대상물의 범위를 결정하는데 보조로서 사용되는 것도 아니다.
제한적이지 않고 총망라하지 않는 실시예가 다음의 도면과 관련하여 설명되고, 동일한 참조 번호는 달리 기재되어 있지 않는 한 다양한 시점에서의 동일한 부분을 나타낸다.
도 1은 본 명세서에서 설명된 자동 업데이트 기술 및 메커니즘을 구현하는데 사용될 수 있는 컴퓨팅 장치 예이다.
도 2는 본 자동 업데이트 메커니즘이 도 1에 도시된 컴퓨팅 장치 내에서 처리되는 콘텐츠를 보호하기 위해 상호작용하는 콘텐츠 보호 기법의 예를 도시한다.
도 3은 본 자동 업데이트 메커니즘에 의해 사용되는 전역 폐기 목록(global revocation list)을 위한 포맷의 예를 도표로 나타낸 것이다.
도 4는 전역 폐기 목록의 또 다른 실시예를 도표로 표현한 것이다.
도 5는 보호된 콘텐츠를 처리하고자 하는 매체 애플리케이션을 위한 애플리케이션 프로그래밍 인터페이스들의 통합 세트를 제공하기 위해 본 자동 업데이트 메커니즘 내에서 사용될 수 있는 인터페이스의 예이다.
도 6은 신뢰 환경을 얻기 위한 온디맨드(on-demand) 자동 업데이트 프로세스의 예를 도시한 흐름도이다.
도 7은 도 6에 도시된 온디맨드 프로세스에서 사용하기에 적합한 신규 전역 폐기 목록을 업데이트하기 위한 프로세스의 예를 도시한 흐름도이다.
도 8은 도 6에 도시된 온디맨드 프로세스에서 사용하기에 적합한 컴퓨터 판독가능 구성요소를 갱신하기 위한 프로세스의 예를 도시한 흐름도이다.
도 9는 도 1에 도시된 컴퓨팅 장치 상에서 신뢰 환경을 업데이트하는 주기적인 프로세스를 수행하기 위한 프로세스의 예를 도시한 흐름도이다.
도 10은 전역 폐기 목록 업데이트 및 갱신 구성요소를 찾기 위한 메커니즘의 예이다.
도 11은 주기적인 프로세스를 구현하는 예시적인 아키텍처의 블록도이다.
다음의 설명은 콘텐츠 보호 기법의 도움을 받아 컴퓨터 판독가능 구성요소를 업데이트하기 위한 자동 업데이트 메커니즘에 관한 것이다. 자동 업데이트 메커니즘은 최종 사용자의 사용 편리성 요구와 콘텐츠 제공자의 콘텐츠 보호 요구의 균형을 맞춘다. 자동 업데이트 메커니즘은 신뢰에 기반을 둔 콘텐츠 보호 기법과 함께 동작한다. 신뢰는, 구성요소로 하여금 사용자가 콘텐츠 제공자에 의해 승인된 액션(action) 외의 액션을 수행하지 못하도록 하는 콘텐츠 정책을 고수하도록 하고 콘텐츠 소유자의 보호된 콘텐츠로의 악의적 액세스로부터 보호하는 환경을 생성함으로써 구축된다. 그 후 자동 업데이트 메커니즘은 보증된(warranted) 경우 컴퓨터 판독가능 구성요소의 신뢰를 폐기하고, 폐기된 컴퓨터 판독가능 구성요소의 신뢰도(trustworthiness)를 자동으로 재구축 시도한다. 자동 업데이트 메커니즘이 자신의 기능(functionality)을 수행하는 방식은 최종 사용자가 장기간 동안 보호 기법의 취약점을 계속해서 악용하는 것을 막을 수 있는데, 특히 악용이 발견되고 취약점이 개선된 후 배포된 콘텐츠의 경우 더욱 그러하다. 이것은 합법적인 방법으로 자신의 디지털 매체를 이용하는 최종 사용자에게 악영향을 거의 주지 않으면서 달성될 수 있다. 다양한 컴퓨팅 환경에서 동작하는 자동 업데이트 개념의 특정 구현이 이하 자세히 설명된다.
도 1은 본 명세서에 설명된 자동 업데이트 기술 및 메커니즘을 구현하는데 사용될 수 있는 컴퓨팅 장치의 예이다. 본 시스템은 컴퓨팅 장치(100)와 같은 컴 퓨팅 장치를 포함한다. 매우 기본적인 구성에서, 컴퓨팅 장치(100)는 일반적으로 적어도 하나의 프로세싱 유닛(102) 및 시스템 메모리(104)를 포함한다. 컴퓨팅 장치의 정확한 구성 및 유형에 따라, 시스템 메모리(104)는 휘발성(예컨대, RAM), 비휘발성(예컨대 ROM, 플레시 메모리 등) 또는 이 둘의 조합이 될 수 있다. 시스템 메모리(104)는 일반적으로 오퍼레이팅 시스템(106), 하나 이상의 프로그램 모듈(108), 및 프로그램 데이터(110)를 포함할 수 있다. 본 자동 업데이트 메커니즘에서, 오퍼레이팅 시스템(106)은 콘텐츠 보호 기법을 구현하기 위한 하나 이상의 구성요소(140) 및 자동 업데이트 메커니즘을 구현하기 위한 하나 이상의 구성요소(142)를 포함한다. 아래에서 설명되는 바와 같이, 자동 업데이트 메커니즘은 자신의 기능을 수행하는 경우 콘텐츠 보호 기법과 상호동작한다. 이러한 기본 구성은 도 1에서 점선(112) 안의 구성요소로 도시되어 있다.
컴퓨팅 장치(100)는 추가적인 특징 또는 기능을 가질 수 있다. 예를 들어, 컴퓨팅 장치(100)는 예컨대, 자기 디스크, 광 디스크, 또는 테이프와 같은 추가적인 데이터 저장 장치(착탈식 및/또는 비착탈식)를 또한 포함할 수 있다. 이러한 추가적인 저장소는 도 1에 착탈식 저장 장치(120) 및 비착탈식 저장 장치(122)로 도시되어 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 착탈식 및 비착탈식 매체를 포함할 수 있다. 시스템 메모리(104), 착탈식 저장 장치(120) 및 비착탈식 저장 장치(122)는 모두 컴퓨터 저장 매체의 예이다. 따라서, 컴퓨터 저장 매체는 이하 한정되지는 않지 만, RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 다른 광 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는데 사용될 수 있고 컴퓨팅 장치(100)에 의해 액세스될 수 있는 임의의 다른 매체를 포함한다. 임의의 이러한 컴퓨터 저장 매체는 장치(100)의 부분이 될 수 있다. 컴퓨팅 장치(100)는 또한 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치 등과 같은 입력 장치를 가질 수 있다. 디스플레이, 스피커, 프린터 등과 같은 출력 장치(126)가 또한 포함될 수 있다. 이러한 장치는 공지되어 있고 본 명세서에서 자세히 설명하지 않는다.
컴퓨팅 장치(100)는 또한 이 장치가 이를테면 네트워크를 통해 다른 컴퓨팅 장치들(130)과 통신하도록 하는 통신 접속부(128)를 포함할 수 있다. 통신 접속부(128)는 통신 매체의 한 예이다. 통신 매체는 일반적으로 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈, 또는 반송파(carrier wave)나 다른 전송 메커니즘과 같은 변조된 데이터 신호 내의 다른 데이터로 구체화될 수 있고, 임의의 정보 전달 매체를 포함할 수 있다. "변조된 데이터 신호(modulated data signal)"는 신호에 정보를 인코딩하는 방식으로 설정되거나 변경되는 하나 이상의 특성을 갖는 신호를 의미한다. 제한적이지 않은 예로서, 통신 매체는 유선 네트워크 또는 직접 연결된(direct-wired) 접속과 같은 유선 네트워크 및 음파, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체가 될 수 있다. 제한적이지 않은 예 로서, 컴퓨터 판독가능 매체는 "컴퓨터 저장 매체(computer storage media)" 및 "통신 매체(communications media)"를 포함할 수 있다.
본 명세서에서 다양한 모듈 및 기술이 하나 이상의 컴퓨터 또는 다른 장치에 의해 실행되는, 프로그램 모듈과 같은, 컴퓨터 실행가능 인스트럭션의 일반적인 컨텍스트(context)로 설명된다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상적 데이터 유형(abstract data type)을 구현하기 위한 루틴, 프로그램, 객체, 구성요소, 데이터 구조 등을 포함한다. 이러한 프로그램 모듈 등은 네이티브 코드(native code)로서 실행되거나, 이를테면 가성 머신 또는 다른 저스트-인-타임 컴파일링(just-in-time compilation) 실행 환경에서 다운로드 및 실행될 수 있다. 일반적으로, 프로그램 모듈의 기능은 다양한 실시예에서 원하는 대로 결합되거나 분배될 수 있다. 이러한 모듈 및 기술의 구현은 컴퓨터 판독가능 매체의 형태로 저장되거나 전송될 수 있다.
도 2는 도 1에 도시된 컴퓨팅 장치 내에서 처리되는 콘텐츠를 보호하기 위해 본 자동 업데이트 메커니즘이 상호동작할 수 있는 콘텐츠 보호 기법의 일 실시예를 도시한다. 개괄적으로, 본 자동 업데이트 메커니즘은 콘텐츠로의 액세스를 갖는 컴퓨터 판독가능 구성요소의 신뢰도에 기초하여 콘텐츠에 대한 보안(security)을 강화하는 임의의 콘텐츠 보호 기법과 상호동작한다. 콘텐츠 보호 기법의 다른 실시예는 여러 방법으로 컴퓨터 판독가능 구성요소에 대한 신뢰를 구축할 수 있다. 일 실시예에서, 신뢰는 "신뢰된(trusted)" 바이너리(binary)가 "신뢰된" 기관(authority)에 의해 서명되는 코드 서명(code-signing) 기술에 기초할 수 있다. 일단 신뢰가 구축되면, 본 자동 업데이트 메커니즘은 신뢰를 보증하지 않는 컴퓨터 판독가능 구성요소에 대한 신뢰를 폐기하도록 동작한다. 또한, 자동 업데이트 메커니즘은 폐기된 컴퓨터 판독가능 구성요소의 신뢰를 재구축하는 시도를 한다. 이렇게 함으로써, 본 자동 업데이트 메커니즘은 콘텐츠 보호 기법과 상호동작한다. 다음의 논의는 콘텐츠 보호 기법에 대한 일 실시예를 설명하고 콘텐츠 보호 기법과 자동 업데이트 메커니즘 간의 상호동작을 설명한다.
상기 언급한 바와 같이, 도 2는 콘텐츠 보호 기법의 일 실시예를 도시한다. 콘텐츠 보호 기법은 디지털 매체가 자신의 관련 라이센싱 계약(licensing agreement)에 따라 처리될 수 있는 보호된 환경을 제공한다. 보호된 환경은 라이센싱 계약을 위반하려고 하는 침입을, 처리되고 있는 보호된 콘텐츠로 액세스하는 시스템 상에서 실행되고 있는 소프트웨어 구성요소의 능력을 제한하고, 메모리 및 실행 공간(execution space) 등으로의 액세스를 제한하여 저지한다. 따라서, 콘텐츠가 처리될 수 있는 컴퓨팅 장치의 수를 제한하는 라이센싱 계약은 콘텐츠가 재생될 수 있는 횟수, 콘텐츠가 복사될 수 있는 횟수 등을 제한한다. 콘텐츠 보호 기법이 디지털 매체에 대한 보호된 환경을 제공하려고 하기 때문에, 보호된 환경이라는 용어는 보호 기법을 의미하는 것으로 또한 사용된다.
전반적으로, 보호된 환경은 라이센스 계약을 위반하려고 하는 외부 공격에 대한 "벽(wall)"을 제공한다. 보호된 환경은 사용자 모드 메모리 공간(200) 및 도 1에 도시된 시스템 메모리(104)의 커널 모드 메모리 공간(202) 모두에서 매체 구성요소를 포함한다. 매체 구성요소는 보호될 필요가 있는 콘텐츠(예컨대, 보호된 콘 텐츠)를 처리하도록 구성된다. 따라서, 매체 애플리케이션은 직접 보호된 콘텐츠를 다루는 대신에 원격 제어(예컨대, 재생, 되감기, 중지, CD-ROM에 쓰기) 기능을 제공하기만 하면 된다. 보호된 환경은 또한 보호된 콘텐츠로 액세스할 수 있는 서명된 제3자 구성요소를 위한 지원을 제공한다.
이를 달성하기 위하여, 보호된 환경은 사용자 모드 보호된 프로세스(220) 내에서 실행되는 매체 파이프라인(222)을 제공한다. 보호된 프로세스(220)는 매체 애플리케이션(212)이 실행되는 시스템 프로세스(210)와 분리된다. 보다 구체적으로, 이러한 프로세스(예컨대, 시스템 프로세스(210) 및 다른 프로세스(230))에서 실행되는 소프트웨어는 보호된 프로세스(220)에 액세스할 수 없다. 매체 애플리케이션(212)은 보호될 필요가 없는 콘텐츠를 처리할 수 있다. 그러나, 만약 매체 애플리케이션(212)이 보호된 콘텐츠를 처리하려고 하면, 매체 애플리케이션은 매체 파이프라인(222)과 상호동작하여 보호된 콘텐츠를 처리한다. 만약 보호된 환경이 컴퓨터 판독가능 구성요소가 업데이트될 필요가 있다고 인식하면, 콘텐츠 인에이블러 인터페이스(content enabler interface, 228)가 사용된다. 간단히, 도 5와 관련하여 아래에서 자세히 설명되는 콘텐츠 인에이블러 인터페이스는 보호된 콘텐츠를 처리하기 위한 액션들(예컨대, 폐기 목록의 업데이트, 라이센스 취득 등) 중 하나를 수행하는데 필요한 정보를 캡슐화(encapsulate)한다. 매체 파이프라인(222)은 보호된 콘텐츠의 처리를 수행한다.
추가적으로, 보호된 환경은 커널 모드 구성요소 PEAuth(242)를 포함한다. 전반적으로, PEAuth(242)는 로딩된 각 구성요소(예컨대, bad.exe(232), 다른 plugin.dll(214) 및 badDriver.sys(244))가 신뢰 구성요소인지를 체크하는 역할을 한다. 만약 커널 모드(202)의 구성요소들 중 하나가 신뢰되지 않는다면(예컨대, badDriver.sys(244)), PEAuth(242)는 보호된 콘텐츠가 처리되지 않도록 할 것이다.
PEAuth(242)는 관련 서명된 바이너리, 서명된 바이너리에 대한 인증서, 전역 폐기 목록(도시되지 않음) 등에 기초하여 컴퓨터 판독가능 구성요소가 신뢰되는지 여부를 결정할 수 있다. 만약 컴퓨터 판독가능 구성요소가 이러한 체크를 통과하면, PEAuth는 컴퓨터 판독가능 구성요소가 로딩되도록 한다. 그러나, 만약 컴퓨터 판독가능 구성요소가 이러한 체크를 통과하지 않으면, PEAuth는 매체 애플리케이션으로 상태(status)를 제공한다. 이 상태는 인터페이스(228)를 통해 제공된다. 그 다음 애플리케이션이 사용자 인터페이스를 이 상태에 관한 최종 사용자에게 제공하도록 구성된다. 매체 애플리케이션은 또한 인터페이스(228)를 통해 업데이트를 요구한다. PEAuth(242)는 보호된 프로세스가 생성되었는지 및 구성요소가 보호된 프로세스로 로딩되는지 여부를 통지받는다. PEAuth가 컴퓨터 판독가능 구성요소를 로딩하고 있는 과정의 경우, PEAuth는 컴퓨터 판독가능 구성요소와 관련된 파일을 체크하여 이 파일이 전역 폐기 목록에서 폐기된 것으로 목록화되어 있는지 여부를 알아본다.
추가적으로, 구성요소 자체가 전역 폐기 목록에 목록화되어 있는지 여부를 알아보도록 체크될 수 있다. 만약 구성요소가 전역 폐기 목록 내에서 폐기되면, 도 8과 관련하여 아래에서 설명되는 바와 같이, 이 구성요소를 갱신하는 프로세스가 수행된다. 간단히, 도 3과 관련하여 아래에서 자세히 설명되는 전역 폐기 목록 은 미신뢰 아이템(예컨대, 구성요소, 인증서)을 식별한다. 전역 폐기 목록 내에 어떠한 아이템을 포함할 것인지의 결정은 개별 팀에 의해 수행될 수 있다. 이 팀은 보호된 콘텐츠 소유자, 인터넷, 및/또는 다른 소스로부터 수신된 정보의 분석을 책임진다. 이 정보에 기초하여, 이 팀은 의심되는 아이템이 보호된 환경을 위반하는지 결정하고 어떻게 이 아이템이 보호된 환경을 위반하는지 결정한다. 그 다음 이 분석의 결과는 도 3과 관련하여 아래에서 설명될 전역 폐기 목록에 반영된다.
도 3은 본 자동 업데이트 메커니즘에 의해 사용되는 전역 폐기 목록을 위한 예시적인 포맷(300)의 도표식 표현이다. 일반적으로, 전역 폐기 목록은 신뢰 정보를 변조 방지(tamper-proof), 쉽게 업데이트 가능한 포맷으로 저장되도록 한다. 일 실시예에서, 포맷(300)은 여러 섹션(코어 섹션(302), 확장가능 섹션(304), 갱신 섹션(306), 및 서명 섹션(308))을 포함한다. 섹션(302-308)의 배열은 효율적인 순람(look-up)을 제공하도록 최적화될 수 있다. 예를 들어, 코어 섹션(302)은 정보에 어떠한 중단(break)도 일어나지 않도록 조직되고 정렬될 수 있다. 이것은 커널 구성요소로 하여금 코어 섹션(302)을 직접 메모리로 로딩하도록 한다. 따라서, 커널 구성요소는 정보를 사용할 수 있기 전에 정보를 파싱(parsing)할 필요가 없다. 전역 폐기 목록은 진정성(authenticity)을 보장하기 위하여 인증 기관(certificate authority)에 의해 디지털 서명될 수 있다. 포맷(300)은 전역 폐기 목록을 위한 일 예의 포맷이다. 다른 포맷이 다른 대응 서브 섹션으로 더 많거나 더 적은 섹션을 가질 수 있다. 또한, 다른 포맷이 다르게 배열될 수 있다.
코어 섹션(302)은 여러 서브-섹션(헤더(310), 커널 구성요소의 폐기 목 록(320), 사용자 모드 구성요소의 폐기 목록(322), 인증서의 폐기 목록(324), 및 신뢰 루트(trusted roots) 목록(326))을 포함한다. 이러한 각각의 서브 섹션은 더 자세히 설명될 것이다.
헤더(310)는 버전 번호(312), 강제 리부트(force reboot) 파라미터(314), 프로세스 재시작 파라미터(316), 및 시간 파라미터(318)를 포함할 수 있다. 시간 파라미터(318)는 전역 폐기 목록이 생성된 시간을 저장한다. 버전 번호(312)는 전역 폐기 목록(global revocation list: GRL)의 버전 번호를 지정한다. 신규 전역 폐기 목록이 발행될 때마다, 버전 번호(312)가 수정된다. 버전 번호(312)는 보호된 콘텐츠를 처리하는 컴퓨팅 시스템이 보호된 콘텐츠를 위해 설정된 제한(restrictions)을 지키도록 하는데 사용된다. 예를 들어, 컴퓨팅 시스템은 버전 #5의 전역 폐기 목록을 이용하여 사진들을 보고 있을 수 있다. 그러나, 만약 동일한 컴퓨팅 시스템이 페이 퍼 뷰 방식(Pay-Per-View) 영화를 재생하고자 하면, 이 페이 퍼 뷰 방식 영화(즉, 보호된 콘텐츠)는 컴퓨팅 장치가 적어도 버전 #8의 전역 폐기 목록을 사용해야 한다고 지정할 수 있다. 컴퓨팅 장치를 업데이트하고 버전 #8에서 신뢰된 컴퓨팅 장치를 입수하는 프로세스는 도 6 내지 10과 관련하여 아래에서 설명된다.
강제 리부트 파라미터(314)가 자동 업데이트 메커니즘에 의해 사용되어 컴퓨팅 장치의 최종 사용자에 대한 버전 업데이트의 악영향을 최소화한다. 이것은 이 버전에 대해 폐기 목록(320-324)으로의 임의의 추가가 로딩된 이후 자신을 숨기는 구성요소를 폐기하는지 여부를 강제 리부트 파라미터(314)와 함께 표시함으로써 달 성된다. 예를 들어, 구성요소는 "로딩된 모듈(loaded modules)" 목록으로부터 자신을 제거하거나 다른 모듈에 코드를 삽입하고 자신을 언로딩함으로써 자신을 숨길 수 있다. 따라서, "숨김(hiding)"은 로딩된 구성요소를 탐지하는 스캐닝 기술의 불능(inability)을 의미한다. 만약 신규 전역 폐기 목록이 자신을 숨기려고 하는 임의의 구성요소를 폐기하지 않으면, 자동 업데이트 메커니즘이 컴퓨팅 장치를 리부팅하지 않고 폐기 목록을 업데이트할 수 있다. 폐기 목록을 업데이트 한 후에, 자동 업데이트 메커니즘은 컴퓨팅 장치의 신뢰 상태가 이제 신규 버전으로 되었다고 확인받을 수 있다. 이러한 시나리오에서, 만약 폐기 목록들(320-324) 중 하나에 목록화된 구성요소들 중 하나가 탐지되지 않으면(즉, 숨겨져 있지 않으면), 자동 업데이트 메커니즘은 구성요소가 로딩되지 않았다고 확인받을 수 있다.
그러나, 만약 신규 전역 폐기 목록이 일단 로딩된 자신을 숨기려고 하는 구성요소를 폐기한다면, 자동 업데이트 메커니즘은 숨겨진 구성요소가 갱신 후에도 여전히 로딩되지 않는다고 확신할 수 없다. 따라서, 숨겨진 구성요소를 탐지하기 위해 리부팅이 필요하다. 만약 자신을 숨기는 구성요소가 사용자 모드 구성요소이면, 이 구성요소는 리부팅 후 로딩되지 않을 것이다. 그러나, 만약 구성요소가 커널 모드 구성요소이면, 구성요소가 로딩될 것이지만 보호된 환경은 보호된 콘텐츠가 처리되도록 하지 않을 것이다.
폐기 목록(320-324)에 목록화된 많은 폐기가 특징(feature)을 정확히 구현하지 않음으로써 우연히 위반하는 구성요소들을 폐기하기 때문에, 강제 리부트 파라미터(314)는 컴퓨팅 장치가 리부팅되어야 하는 횟수를 최소화한다. 이것은 컴퓨팅 장치의 최종 사용자에 대한 악영향을 매우 최소화한다.
일 실시예에서, 강제 리부트 파라미터(314)는 카운터(counter)로 구현된다. 카운터는 전역 폐기 목록이 자신을 숨기려고 하는 구성요소를 폐기할 때마다 업데이트 된다. 카운터를 강제 리부트 파라미터로 이용하는 것은 컴퓨팅 장치가 전역 폐기 목록의 여러 버전을 뛰어넘는 상황에 유용하다. 예를 들어, 컴퓨팅 장치는 현재 버전 #3의 전역 폐기 목록을 사용하고 있을 수 있다. 그러나, 특정 보호된 콘텐츠를 처리하는 경우, 이 보호된 콘텐츠와 관련된 신뢰 계약은 컴퓨팅 장치가 버전 #10의 전역 폐기 목록을 사용하고 있는 경우에만 보호된 콘텐츠를 처리할 수 있도록 지정할 수 있다. 만약 강제 리부트 파라미터(314)가 예/아니오 표시자(indicator)를 이용하여 구현된다면, 컴퓨팅 장치는 버전 #10 레벨에서 신뢰를 구축하지 못할 수 있다. 이것은 하나 이상의 버전(버전 #4-#9)이 강제 리부트 파라미터(314)에 대하여 "예(yes)"라고 지정되지만 버전 #10에 대해서는 "아니오(no)"라고 지정된 경우 발생할 수 있다. 다른 전역 폐기 목록의 강제 리부트 파라미터(314)에 대해 알지 못하고서는, 자동 업데이트 메커니즘은 리부트가 필요한지 알지 못한다. 리부팅 없이는, 보호된 환경은 로딩된 폐기된 구성요소를 여전히 가질 것이다. 카운터를 사용함으로써, 신규 전역 폐기 목록 내의 카운터 값은 이전 전역 폐기 목록 내의 카운터 값과 쉽게 비교될 수 있다. 그 다음, 자동 업데이트 메커니즘은 카운터가 다른 경우 강제 리부팅할 수 있다.
재시작 파라미터(316)가 자동 구성요소 업데이트 메커니즘에 의해 사용되어 컴퓨팅 장치의 최종 사용자에 대한 버전 업데이트의 악영향을 더욱 최소화한다. 폐기 목록(320-324)에 식별된 구성요소는 세 가지 클래스로 분류될 수 있다: 1)악의적이지 않은 구성요소, 2)악의적인 사용자 모드 구성요소, 및 3)악의적인 커널 모드 구성요소. 제1 클래스인 악의적이지 않은 구성요소는 일반적으로 구성요소 내의 특징을 안전하게 구현하지 못하게 됨으로써 우연히 발생한다. 따라서, 이러한 유형의 구성요소는 일반적으로 자신을 숨기려고 하지 않는다. 제2 클래스 및 제3 클래스는 소정의 유형의 보호된 콘텐츠와 관련된 신뢰 계약을 위반하도록 구체적으로 지정되어 있다. 이러한 종류의 구성요소는 악의적이기 때문에, 이들은 로딩된 후 일반적으로 자신을 숨기려고 한다.
재시작 파라미터(316)는 강제 리부트 파라미터(314)와 함께 사용되어, 신규 전역 폐기 목록 레벨에서 신뢰를 구축하기 위해 리부팅이 필요한지, 보호된 프로세스의 재시작이 필요한지, 또는 구성요소의 갱신이 필요한지 여부를 식별한다. 제1 클래스 내의 구성요소에 대하여, 자동 업데이트 메커니즘은 현재 로딩되고 있는 임의의 폐기된 구성요소를 갱신함으로써 신규 전역 폐기 목록의 요건을 충족할 수 있다. 제2 클래스 내의 구성요소에 대하여, 자동 업데이트 메커니즘은 각 보호된 프로세스를 재시작하여 신규 전역 폐기 목록의 요건을 충족할 수 있다. 폐기된 악의적인 사용자 모드 구성요소가 보호된 프로세스 내에 있기 때문에, 일단 보호된 프로세스가 죽고 나면, 악의적인 사용자 모드 구성요소 또한 효과적으로 죽게된다. 보호된 프로세스가 재시작되는 경우, 업데이트된 전역 폐기 목록에 목록화된 악의적인 사용자 모드 구성요소는 로딩이 금지될 것이다. 제3 클래스 내의 구성요소에 대하여, 자동 업데이트 메커니즘은 강제 리부트 파라미터(314)에 대하여 상기 설명 된 바와 같이 컴퓨팅 장치를 리부팅함으로써 신규 전역 폐기 목록의 요건을 충족할 수 있다.
일 실시예에서, 재시작 파라미터(316)는 카운터로 구현되고 강제 리부트 파라미터(314)와 함께 사용될 수 있다. 예를 들어, 만약 강제 리부트 파라미터가 컴퓨팅 장치를 리부팅할 필요가 없다고 표시하면, 재시작 파라미터(316)는 이전 재시작 파라미터와 비교되어 보호된 프로세스를 재시작할 필요가 있는지 결정할 수 있다. 이것은 최종 사용자로 하여금 보호된 프로세스를 필요로 하지 않는 다른 애플리케이션(예컨대, 워드 프로세서, 게임)을 계속 실행하도록 하면서, 보호된 프로세스가 재시작된다. 이것은 최종 사용자에 대한 악영향을 효과적으로 줄이면서, 컴퓨팅 장치 상에서 실행되는 보호된 콘텐츠에 대한 신뢰 레벨을 그대로 유지한다.
커널 모드 구성요소(320), 사용자 모드 구성요소(322), 및 인증서(324)에 대한 폐기 목록은 유사하다. 폐기 목록은 폐기될 예정인 아이템을 식별하는 엔트리(entry)를 포함한다. 아이템은 파일, 개별적인 컴퓨터 판독가능 구성요소, 또는 인증서가 될 수 있다. 이 파일은 여러 컴퓨터 판독가능 구성요소가 저장되는 DLL(dynamic link library), .EXE(executable) 파일이 될 수 있다. 아이템은 폐기하기 위한 사용자 모드 또는 커널 모드 바이너리의 해시(hash), 또는 폐기하기 위한 인증서의 공용 키(public key)의 해시와 같은 고유 식별자(unique identifier)를 이용하여 식별된다. 흥미롭게도, 전역 폐기 목록에서 폐기된 것으로 지정된 아이템은 보호된 환경 밖에서 여전히 사용될 수 있다. 전역 폐기 목록 내의 구성요소의 식별만이 보호된 환경의 신뢰 구성요소로서 이의 상태에 영향을 준다.
만약 아이템이 인증서를 식별하면, 인증 기관(certificate authority)에 의해 인증된 임의의 컴퓨터 판독가능 구성요소가 폐기된다. 또한, 신뢰 체인(chain of trust) 내의 인증서 내지 식별된 인증서로 인증된 임의의 컴퓨터 판독가능 구성요소 역시 폐기된다. 신뢰 체인은 루트 기관(root authority)에서 멈출때까지 계속된다. 이것은 해커가 악의적인 컴퓨터 판독가능 구성요소를 서명하도록 손상된 인증 기관(certificate authority)을 이용하는 것을 막는다.
신뢰 루트 섹션(326)은 신뢰 체인이 개시될 수 있는 루트 기관을 식별한다. 따라서, 만약 신뢰 루트들 중 하나로 목록화되지 않은 컴퓨터 판독가능 구성요소가 루트 인증서에 의해 인증되는 경우, PEAuth는 구성요소를 로딩하지 않을 것이다. 이것은 해커가 악의적인 컴퓨터 판독가능 구성요소를 서명하는 루트 인증서를 만드는 것을 방지한다.
섹션(320-322)에서 폐기된 아이템에 대한 엔트리는, 일반적으로 대응 갱신 섹션(330-332)에 갱신 엔트리를 갖는다. 갱신 엔트리는 갱신 범용 고유 식별자(globally unique identifier: GUID)를 포함한다. 일 실시예에서, 갱신 GUID는 카테고리 식별자를 지정할 수 있다. 각 서브섹션의 갱신 엔트리들은 해시 값에 의해 정렬될 수 있다. 구성요소를 갱신하는 예시적인 프로세스는 도 8과 관련하여 아래에서 설명된다.
확장가능 섹션(304)은 다운스트림 구성요소와 신뢰를 구축하는데 사용되는 확장가능 폐기 정보를 포함할 수 있다. 확장 GUID는 각 확장가능 엔트리를 식별한다. 확장가능 섹션(304)은 확장 GUID에 의해 정렬될 수 있다.
서명(signature, 340)은 헤더(31) 및 코어 데이터 섹션(320-326)을 위한 서명을 저장한다. 서명(342)은 헤더(310) 및 확장가능 섹션(304)을 위한 서명을 저장한다. 서명(340 및 342)은 어떠한 것도 전역 폐기 목록 내의 대응 섹션으로 함부로 고쳐지지 않는다는 것을 검증하는데 사용된다. 서명은 신뢰 개체에 의해 서명된다. 전역 폐기 목록 서명 인증서(global revocation list signing certificate)는 검증 동안 이용가능한 소정의 신뢰 루트로 정착된다(root up). 소정의 신뢰 루트는 검증 로직 내에서 하드 코딩될 수 있다. 갱신 엔트리는 서명될 필요가 없다. 만약 누군가가 갱신 섹션(306)을 변경하면, 컴퓨팅 장치는 신규 갱신을 얻지 못할 것이다. 그러나, 이 실패는 보호된 환경 또는 컴퓨팅 장치에 어떠한 보안 문제도 야기하지 않을 것이다. 만약, 이것이 일어난다면, 신규 전역 폐기 목록이 도 7과 관련하여 아래에서 설명된 바와 같이 획득될 것이다.
다음은 전역 폐기 목록(GRL_HEADER), 전역 폐기 목록 내의 각 엔트리(GRL_ENTRY), 확장가능 섹션 내의 각 엔트리(GRL_EXTENSIBLE_ENTRY), 갱신 섹션 내의 각 엔트리(GRL_RENEWAL_ENTRY), 및 서명(BIN_SIGN)에 대한 예시적인 구문(syntax)이다.
typedef struct _GRL_HEADER {
WCHAR wszldentifier[6];
WORD wFormatMajor;
WORD wFormatMinor;
FILETIME CreationTime;
DWORD dwSequenceNumber;
DWORD dwForceRebootVersion;
DWORD dwForceProcessRestartVersion;
DWORD cbRevocationsS ectionOffset;
DWORD cRevokedKernelBinaries;
DWORD cRevokedUserBinaries;
DWORD cRevokedCertificates;
DWORD cTrustedRoots;
DWORD cbExtensibleSectionOffset;
DWORD cRevokedKernelBinaryRenewals ;
DWORD cRevokedUserBinaryRenewals;
DWORD cRevokedCertificateRenewals;
DWORD cbSignatureCoreOffset;
DWORD cbSignatureExtOffset;
} GRL HEADER;
typedef struct _GRL_ENTRY {
BYTE rgbGRLEntry[GRL_HASH_SIZE];
} GRLJBNTRY;
typedef struct _GRL_EXTENSIBLE_ENTRY {
GUID guidExtensionID;
BYTE rgbExtensibleEntry[GRL_EXT_ENTRY_SIZE];
} GRL__EXTENSIBLE_ENTRY;
typedef struct _GRL_RENEWAL_ENTRY {
GRL_ENTRY GRLEntry;
GUID guidRenewalID;
} GRL_RENEWAL_ENTRY;
typedef struct _BIN_SIGN {
DWORD dwSignPormat;
DWORD dwSignSize;
BYTE rgbSignature[l];
} BIN_SIGN;.
전역 폐기 목록을 위해 설명된 예시적인 포맷은 시간에 따라 변할 수 있다는 것은 누구나 할 수 있을 것이다. 이것이 발생한 경우, 기존의 구성요소는 신규 포맷이 있다는 것을 인식하고 적절하게 실패할 것이다. 업데이트된 포맷 판독기는 신규 전역 폐기 목록 포맷을 읽도록 구성되는 보호된 환경에 의해 획득될 수 있다.
도 4는 전역 폐기 목록의 또 다른 실시예의 도표적 표현이다. 상기 설명된 바와 같이, 모든 컴퓨팅 장치에 대해 보안 레벨을 유지하기 위해서, 컴퓨터 판독가능 구성요소 또는 인증서가 전역 폐기 목록에 목록화되면, 구성요소 또는 인증서는 일반적으로 전역 폐기 목록에 남게된다. 따라서, 단일 파일이 너무 커지고 사용하기 어려워질 수 있다. 그러므로, 하나의 파일을 여러개의 파일로 분리하는 것을 구상해볼 수 있다.
도 4는 복수의 파일 전역 폐기 목록에 대한 일 실시예의 도표식 묘사이다. 각 파일(402, 404 및 406)은 상기 도 3에서 설명한 예시적인 포맷을 유지한다. 또한, 각 파일(402, 404, 406)은 다음 파일에 대한 포인터(즉, NextGRL), 및 이전 파일에 대한 포인터(즉, PrevGRL)를 링크된 목록 수행으로 포함한다. 마지막 파일(406)이 특정 크기에 도달하면 추가적인 멀티파트(multi-part) 파일들이 추가될 수 있다. 이 실시예에서, 일단 컴퓨팅 장치가 멀티파트 파일들(402, 404 및 406)을 다운로드하면, 신규 버전의 전역 폐기 목록이 있는 경우 마지막 파일(즉, 멀티파트 파일(406))을 다운로드하기만 하면 된다. 폐기 및 갱신 수에 따라, 이는 실질적으로 전역 폐기 목록을 다운로드하는 성능을 증가시킬 수 있다. 그러나, 멀티파일 전역 폐기 목록을 갖는 것은 갱신 프로세스, 특히 전역 폐기 목록의 로딩 프로세스를 덜 효율적이 되도록 할 수 있다.
본 자동 업데이트 프로세스는 두가지 다른 시나리오로 수행될 수 있다. 첫번째 시나리오는 온디맨드(on-demand) 프로세스로 매체 애플리케이션이 보호된 콘텐츠를 처리 시도한다. 두번째 시나리오는 소정의 간격으로 스케줄링된 주기적 업데이트 프로세스이다. 온디맨드 및 주기적 자동 업데이트 프로세스를 설명하기 전에, 본 자동 업데이트 메커니즘 내에서 사용되는 한가지 예시적인 인터페이스를 설명한다. 도 5는 보호된 콘텐츠를 처리하고자 하는 매체 애플리케이션을 위한 애플리케이션 프로그래밍 인터페이스들의 통합 세트를 제공하기 위해 본 자동 업데이트 메커니즘 내에서 사용될 수 있는 예시적인 인터페이스(500)이다. API 통합 세트는 매체 애플리케이션의 개발을 돕는다. 예를 들어, API 통합 세트는 매체 애플리케이션의 사용자 인터페이스로 하여금 전역 폐기 목록 업데이트, 구성요소 갱신, 도움말 웹 페이지 팝 업 등과 같은 다른 시나리오에 대해 일정하게 유지되도록 한다. 각 API가 설명된다.
GetEnableType 메쏘드(502)가 매체 애플리케이션에 의해 호출되고 콘텐츠 인에이블러(500)가 생성된 시나리오에 특유한 타입(type)을 반환한다. 콘텐츠 인에이블러는 PeAuth(242)가 보호된 환경이 신뢰될 수 있는지 여부를 체크한 후 도 2에 도시된 매체 파이프라인(222)에 의해 생성된다. 만약 환경이 신뢰될 수 없다면, 콘텐츠 인에이블러(500)가 생성되고 타입이 보호된 콘텐츠로의 액세스를 허용하기 위해 무엇이 필요한지를 표시하는 매체 파이프라인(222)에 의해 설정된다. 다음, 매체 애플리케이션이 반환된 타입에 기초하여 사용자 인터페이스에 스트링들을 디스플레이할 수 있다.
GetEnableURL 메쏘드(504)가 URL(uniform resource locator)을 얻기 위해 매체 애플리케이션에 의해 호출된다. 매체 애플리케이션은 특정 URL을 완성하기 위해 웹 브라우저를 시작할 수 있다. 매체 애플리케이션은 URL에 대한 HTTP POST 요구를 수행할 수 있다. GetEnableURL 메쏘드(504)는 세 가지 파라미터를 포함한다: pwszURL(510), pcchURL(522), pTrustStatus(524). 파라미터 pwszURL(510)은 호출기(caller)에 의해 할당된 어레이에 대한 포인터이다. 파라미터 pcchURL(522)은 어래이의 길이를 특정한다. 호출기는 파라미터 pwszURL(510)에 의해 포인팅된 배열의 크기로 파라미터 pcchURL(522)를 초기화한다. 파라미터 pTrustStatus(524)는 매체 애플리케이션에게 URL이 신뢰 소스로부터 온 것인지를 알린다. 매체 애플리케이션은 GetEnableURL 메쏘드(504)를 두 번 호출한다. 첫번째는 할당할 어레이의 길이를 얻기 위해, 두번째는 할당된 어레이 및 그 크기를 갖고 호출한다. GetEnableURL 메쏘드(505)는 콘텐츠 인에이블러가 특정된 타입에 기초하여 필요한 액션을 자동으로 수행할 수 없는 경우에 사용될 수 있다.
GetEnableData 메쏘드(506)가 매체 애플리케이션에 의해 호출되어 GetEnableURL 메쏘드(504)에서 수행되는 HTTP POST 요구를 동반하는 데이터를 반환한다. GetEnableData 메쏘드(506)는 두 개의 파라미터를 포함한다: 파라미터 pbData(530) 및 파라미터 pcbData(532). 파라미터 pbData(530)는 호출기에 의해 할당된 어레이를 포인팅한다. 콘텐츠 인에이블러 객체는 만약 파라미터 pcbData(532)에 의해 표시된 어레이의 크기가 충분하다면 이 어레이를 POST 데이터로 채운다. 매체 애플리케이션은 GetEnableData 메쏘드(506)를 두번 호출한다. 첫번째에서 할당할 어레이의 크기를 얻기 위해 파라미터 pbData가 NULL로 설정된다. 두번째에서는 할당된 어레이 및 이의 크기를 갖고 호출한다. 이것은 매체 애플리케이션으로 하여금 추가적인 데이터, 이를테면, 폐기된 구성요소의 발행자(publisher), 폐기된 구성요소의 버전 등을 획득하도록 한다.
IsAutomaticSupported 메쏘드(508)가 매체 애플리케이션에 의해 호출되어 콘텐츠 인에이블러 객체가 특정된 타입에 대해 필요한 액션을 자동으로 수행할 수 있는지 여부를 결정한다. 콘텐츠 인에이블러는 만약 자신이 요구된 동작을 수행할 수 있다면 파라미터 pfAutomatic(540)을 TRUE로 설정한다. 이와 달리, 콘텐츠 인 에이블러는 만약 요구된 동작의 일부를 수행하기 위해 매체 애플리케이션을 필요로 하면 파라미터 pfAutomatic(540)을 FALSE로 설정한다. 예를 들어, 만약 콘텐츠 인에이블러가 업데이트 서비스를 통해 업데이트를 얻도록 초기화되면, pfAutomatic(540)을 TRUE로 설정하는 것은 최종 사용자가 상호동작 동안 불필요하게 피해를 입지 않도록 콘텐츠 인에이블러가 내부적으로 업데이트 서비스와의 상호동작을 취급해야 한다는 것을 표시한다. 만약 콘텐츠 인에이블러가 웹페이지를 통해 업데이트를 얻도록 초기화되면, pfAutomatic(540)을 FALSE로 설정하는 것은 매체 애플리케이션이 브라우저 윈도우를 오픈하고 특정된 URL을 찾을 수 있도록 콘텐츠 인에이블러가 웹페이지 URL을 애플리케이션에 노출시키는 것을 표시한다.
인에이블 메쏘드(510)가 매체 애플리케이션에 의해 호출되어 콘텐츠 인에이블러 객체 타입에 특정된 동작을 자동으로 수행한다. 일단 최종 사용자가 매체 애플리케이션으로 하여금 매체 사용자 인터페이스에 나타난 동작을 수행하도록 인가하면 인에이블러 메쏘드(510)가 매체 애플리케이션에 의해 호출된다.
만약 매체 애플리케이션이 언제 동작이 완료되는지를 통지받기를 원하거나 및/또는 진행중인 상태를 수신하기를 원하면, MonitorEnable 메쏘드(512)가 매체 애플리케이션에 의해 호출된다. 콘텐츠 인에이블러는 MEEnablerCompleted 이벤트를 자신의 IMFMediaEventGenerator 인터페이스에 큐 업(queue up)한다.
취소 메쏘드(514)가 매체 애플리케이션에 의해 호출되어 미결중인 동작을 취소한다.
이러한 인터페이스들을 통한 동작들을 추상화(abstraction)함으로써, 매체 애플리케이션은 신뢰 환경을 얻기 위한 다양한 단계를 다루기 위해 공통 코드(common code)를 쓸 수 있다. 추가로, 미래의 콘텐츠가, 이 콘텐츠에 대한 필요물(requirements)이 인터페이스 내에서 발췌될 수 있는 한 매체 애플리케이션 하에서 자동으로 플러그인 될 수 있다. 콘텐츠 인에이블러를 위한 한가지 예시적인 호출 시퀀스가 이하 MICROSOFT? WINDOWS? Update software로부터 입수가능한 API를 이용하여 설명된다. 인스톨 세션(installation session)이 IUpdateSession 을 호출함으로써 생성된다. 업데이트 검색자(searcher) 객체가 IUpdateSession::CreateUpdateSearcher 를 호출함으로써 생성된다. 그 다음 업데이트 검색자 객체는 IUpdateSearcher::Search 를 호출함으로써 GUID에 의해 식별되는 업데이트를 검색하는데 사용된다. 그 다음 다운로드 객체가 IUpdateSession::CreateUpdateDownloader 를 호출함으로써 생성된다. 특정 업데이트가 검색 결과를 IUpdateDownloader 로 전달함으로써 다운로드될 수 있다. 업데이트는 IUpdateDownloader::Download 를 호출함으로써 컴퓨팅 장치로 다운로드될 수 있다. 인스톨 객체가 IUpdateSession::CreateUpdateInstaller 를 호출함으로써 생성된다. 인스톨할 다운로드된 업데이트 집합이 IUpdateInstaller::Install 을 호출하는 경우 전달될 수 있다. 그 다음 인스톨 메쏘드는 컴퓨팅 장치 상에 업데이트를 인스톨한다.
도 6은 신뢰 환경을 획득하는 예시적인 온디맨드 자동 업데이트 프로세스를 도시한 흐름도이다. 개괄적으로, 보호된 환경은 보호된 콘텐츠로 하여금 처리되도록 하기 전에 이 환경이 신뢰되도록 보장한다. 온디맨드 프로세스(600)는 단 계(602)에서 시작하는데, 여기서 매체 애플리케이션이 보호된 콘텐츠를 처리하려고 시도한다. 프로세싱은 결정 단계(604)로 계속한다.
결정 단계(604)에서, 로딩된 미신뢰 커널 구성요소가 있는지 여부를 판정한다. 이는 만약 미서명(unsigned) 커널 모드 구성요소가 컴퓨팅 장치 상에서 인스톨된 경우에 발생할 수 있다. 미신뢰 커널 구성요소가 보호된 콘텐츠를 포함한 컴퓨팅 장치 상의 임의의 것에 액세스할 가능성이 있기 때문에, 보호된 콘텐츠 처리 전에 미신뢰 커널 구성요소를 적절히 처리할 수 있다. 만약 로딩된 미신뢰 커널 구성요소가 있다면, 프로세싱은 결정 단계(605)로 진행한다. 그렇지 않으면, 프로세싱은 결정 단계(610)로 진행한다.
결정 단계(605)에서, 사용자 인터페이스가 매체 애플리케이션에 의해 최종 사용자에게 제공된다. 만약 최종 사용자가 미신뢰 구성요소를 다루도록 프로세스(600)를 인가하지 않으면, 프로세싱은 단계(624)로 넘어간다. 그렇지 않으면, 프로세싱은 단계(606)로 진행한다.
단계(606)에서, 미신뢰 커널 구성요소가 다루어진다. 미신뢰 커널 구성요소는 언인스톨되거나(uninstalled) 서명된 버전으로 업데이트될 수 있다. 언인스톨 인스트럭션은 웹 사이트 상의 도움말을 통해 획득될 수 있다. 업데이트된 서명된 버전은 구성요소의 발행자에 속하는 제3자 사이트, 다운로드 센터, 업데이트 서비스를 이용하여 획득될 수 있다. 만약 미신뢰 구성요소가 폐기되면, 미신뢰 커널을 폐기하는 전역 폐기 목록 엔트리가 패키지 식별자(package identifier)를 식별할 것이다. 이 패키지 식별자는 업데이트 서비스로부터 요구된다. 그러나, 만약 전 역 폐기 목록이 미신뢰 커널 구성요소를 위한 패키지 식별자를 식별하지 않거나 신뢰 커널 구성요소가 전역 폐기 목록에서 식별되지 않으면, 링크 메커니즘이 미신뢰 커널 구성요소를 어떻게 다루는지 결정하는데 사용될 수 있다. 링크 메커니즘에 대한 일 실시예는 아래에서 도 10과 관련하여 설명된다. 그 다음, 링크 메커니즘은 패키지 식별자, 신규 버전이 다운로드될 수 있는 웹페이지, 언인스톨 인스트럭션을 설명하는 웹페이지 등을 지정할 수 있다. 미신뢰 커널 구성요소를 다루는 프로세스는 위의 도 5에서 설명된 균일한(uniform) API 세트를 사용한다.
이것이 발생한 후에 프로세스는 결정 단계(608)로 진행하고, 여기서 미신뢰 커널 구성요소가 성공적으로 다루어졌는지 여부를 판정하는 체크가 이루어진다. 만약 미신뢰 커널 구성요소가 성공적으로 다루어졌다면, 프로세싱은 결정 단계(610)로 진행한다. 그렇지 않으면, 프로세싱이 단계(624)로 넘어간다.
결정 단계(610)에서, 현재 전역 폐기 목록이 신뢰되지 않았는지 여부에 대한 판정이 이루어진다. 이것은 만약 전역 폐기 목록이 보호된 콘텐츠에 대해 지정된 버전보다 오래된 경우, 만약 전역 폐기 목록에 변경이 이루어진 경우 등의 경우에 일어날 수 있다. 만약 전역 폐기 목록이 신뢰되지 않는다면, 프로세싱은 단계(611)로 진행한다. 그렇지않으면, 프로세싱은 단계(616)로 넘어간다.
결정 단계(611)에서, 사용자 인터페이스가 매체 애플리케이션에 의해 최종 사용자에게 제공된다. 만약 최종 사용자가 전역 폐기 목록을 업데이트하도록 프로세스(600)를 인가하지 않으면, 프로세싱은 단계(624)로 넘어간다. 그렇지 않으면, 프로세싱은 단계(612)로 진행한다.
단계(612)에서, 전역 폐기 목록이 업데이트된다. 간단히, 도 5 및 7과 함께 자세하게 설명되는, 현재 전역 폐기 목록은 이용가능한 지정된 버전 또는 이 지정된 버전보다 상위 버전으로 교체된다. 전역 폐기 목록을 업데이트 시도한 후에, 전역 폐기 목록의 업데이트가 성공적인지를 판단하는 체크(결정 단계(614))가 이루어진다. 만약 성공적이면, 프로세싱은 결정 단계(616)로 진행한다. 그렇지 않으면 프로세싱은 단계(624)로 넘어간다.
결정 단계(616)에서, 구성요소가 폐기되었는지 여부가 판정된다. 간단히, 도 5 및 8과 관련하여 아래에서 자세히 설명되는 바와 같이, 일단 최종 사용자가 신규(즉, 업데이트된) 구성요소를 얻기 위해 매체 애플리케이션을 인가하면, 일정한(uniform) API를 통한 매체 애플리케이션은 최종 사용자의 추가적인 개입없이 구성요소를 자동적으로 갱신한다. 업데이트된 구성요소는 이하 갱신 구성요소라고 한다. 과거에, 최종 사용자는 구성요소가 업데이트가 필요하고 나중에 다시 업데이트를 해야한다는 통지를 받았다. 이것은 업데이트될 필요가 있는 각 구성요소에 대해 발생한다. 반면, 현재 자동 업데이트 메커니즘에 따라, 일단 최종 사용자가 콘텐츠를 처리하기 위해 매체 애플리케이션을 인가하면, 업데이트될 필요가 있는 각 구성요소는 추가적인 사용자 개입없이 자동적으로 업데이트된다. 만약 폐기된 구성요소가 있으면, 프로세싱은 단계(618)로 진행한다. 그렇지 않으면, 프로세싱은 단계(622)로 넘어간다. 도시되지 않았지만, 프로세스(600)는 전역 폐기 목록에서 폐기된 것으로 식별되는 각 업데이트될 필요가 있는 구성요소를 업데이트하는 루프 또는 다른 로직을 가질 수 있다.
단계(618)에서, 구성요소 또는 폐기된 것으로 식별된 구성요소가 갱신된다. 간단히, 도 5 및 8과 관련하여 아래에서 자세하게 설명되는 바와 같이, 구성요소의 갱신은 최종 사용자와의 최소 상호동작으로 발생한다. 최종 사용자는 갱신이 성공적인 한 보호된 콘텐츠가 프로세싱을 부드럽게 시작하기 전에 짧은 지연을 경험할 것이다. 구성요소를 갱신 시도한 후에, 폐기된 구성요소가 성공적으로 갱신되었는지 여부를 판정하는 체크가 이루어진다(결정 단계(620)). 만약 구성요소가 성공적으로 갱신되었다면, 프로세싱은 단계(622)로 진행하여 매체 애플리케이션으로 하여금 보호된 콘텐츠를 처리하도록 한다. 그렇지 않으면, 프로세싱은 단계(624)로 넘어간다.
단계(624)에서, 경고(alert)가 매체 애플리케이션에게 전달되어 매체 애플리케이션에게 왜 보호된 콘텐츠가 처리될 수 없는지를 알린다. 그 다음, 프로세싱은 종료된다.
도 7은 도 1에 도시된 컴퓨팅 장치 상의 신규 전역 폐기 목록을 업데이트하는 예시적인 프로세스(700)를 도시한 흐름도이다. 프로세스(700)는 단계(702)에서 시작하고, 여기서 보호된 환경은 전역 폐기 목록의 요구된 버전 또는 상위 버전이 사전에 다운로드되었는지 여부를 체크한다. 도 9와 관련하여 아래에서 설명되는 바와 같이, 주기적인 자동 업데이트 프로세스는 신규 전역 폐기 목록을 주기적으로 다운로드하도록 구성될 수 있다. 새롭게 다운로드된 전역 폐기 목록은 컴퓨팅 장치에 보류 전역 폐기 목록(pending global revocation list) 중 하나로 저장될 수 있다. 이러한 보류 전역 폐기 목록은 전역 폐기 목록의 신규 버전이 이미 다운로 드 되었는지 여부를 알아보기 위해 체크된다. 그 다음 프로세싱은 결정 단계(704)로 진행된다.
결정 단계(704)에서, 요구된 전역 폐기 목록 또는 전역 폐기 목록의 상위 버전이 이미 컴퓨팅 장치 상에서 이용가능한지 여부가 결정된다. 또한, 보류 전역 폐기 목록에 대해, 전역 폐기 목록이 보호된 콘텐츠로 패키징되는지 여부의 체크가 이루어진다. 만약 원하는 전역 폐기 목록이 이용가능하지 않다면, 프로세싱은 단계(706)로 진행한다. 반대의 경우, 프로세싱은 결정 단계(708)로 넘어간다.
단계(706)에서, 요구된 전역 폐기 목록 또는 상위 전역 폐기 목록이 획득된다. 콘텐츠 인에이블러 객체가 전역 폐기 목록을 위한 식별자로 생성되고 초기화된다. 보호된 환경 내의 옵션은 전역 폐기 목록이 요구된 버전으로 업데이트되거나 전역 폐기 목록의 최상위 버전으로 업데이트되는지 여부를 지정한다. 요구된 버전을 이용하는 업데이트는 업그레이드가 발생한 후에 보호된 콘텐츠가 대부분 확실히 처리되도록 허용되기 때문에 유용하다. 전역 폐기 목록의 상위 버전을 이용하는 업데이트는 보호된 콘텐츠가 작동하지 못하도록 하지만, 콘텐츠 소유자에게 가장 큰 보안을 제공한다. 이는 또한 전역 폐기 목록이 업데이트될 필요의 횟수를 최소화한다. 매체 애플리케이션은 도 5와 관련하여 위에서 설명된 하나 이상의 통합된 API를 호출할 수 있다. 예를 들어, 만약 "자동(AUTOMATIC)"이 인에이블되면, 호출 인에이블 메쏘드(510)가 전역 폐기 목록 내의 식별자에 의해 식별되는 전역 폐기 목록을 자동으로 인스톨한다. 만약 식별자가 패키지 식별자를 지정하면, 식별자는 전역 폐기 목록을 획득하기 위해 업데이트 서비스로 보내진다. 만약 식별 자가 유일한 URL을 지정하면, 이 URL은 다운로드 센터, 도움말 웹 페이지 등을 탐색할 수 있다. 일 실시예에서, 자동 인스톨은 MICROSOFT? WINDOWS? Update software를 통해 달성될 수 있다. 이러한 실시예에서, 신규 전역 폐기 목록이 발행되면, 전역 폐기 목록은 매체 갱신(media renewal)과 같은 지정된 카테고리 내의 업데이트 서비스에 업로드된다. 지정된 카테고리는 식별자에 기초하여 전역 폐기 목록의 다른 버전들을 정렬시킬 수 있다. 따라서, 전역 폐기 목록의 최상위 버전을 획득하는 옵션이 선택된 경우, 업데이트 서비스는 업로드되었던 최종 전역 폐기 목록을 다운로드한다. 일 실시예에서, 업데이트 서비스로 업로드된 전역 폐기 목록 패키지는 가장 최근의 전역 폐기 목록을 포함할 것이다. 다른 실시예에서, 전역 폐기 목록 셋업 패키지가 다운로드 센터에서 호스팅될 수 있다. 다운로드 센터는 명령 라인 파라미터(command line parameter)를 받아들이고 이 명령 라인 파라미터를 이용하여 전역 폐기 목록의 대응 버전을 인스톨한다. 전역 폐기 목록 셋업 패키지가 복수의 전역 폐기 목록을 포함할 수 있어도, 명령 라인 옵션에 기초하여 인스톨하기 위한 하나의 전역 폐기 목록이 선택된다. 프로세싱은 결정 단계(708)로 진행한다.
결정 단계(708)에서, 강제 리부트 파라미터가 리부팅이 필요한지 여부를 결정하기 위해 재검토된다. 일 실시예에서, 신규 전역 폐기 목록의 강재 리부트가 현재 전역 폐기 목록 내의 강제 리부트 파라미터와 재검토된다. 만약 서로 다르면, 프로세싱은 단계(710)로 계속된다. 그렇지 않으면, 프로세싱은 단계(714)로 진행한다.
단계(710)에서, 매체 애플리케이션에 의해 요구되고 폐기된 구성요소가 갱신된다. 갱신 프로세스는 아래 도 8과 관련하여 설명된다. 구성요소가 갱신된 후에, 프로세싱은 단계(712)로 진행한다.
단계(712)에서, 신규 전역 폐기 목록이 현재 전역 폐기 목록으로 저장되고 컴퓨팅 장치는 리부팅된다. 리부팅 후에, PEAuth가 구성요소를 로딩하는 경우 신규 전역 폐기 목록을 사용한다. 그 다음 프로세싱이 완료된다.
결정 단계(714)에서, 신규 전역 폐기 목록이 보호된 프로세스의 재시작을 지정하는지 여부가 결정된다. 이 결정은 신규 전역 폐기 목록 및 현재 전역 폐기 목록 내의 프로세스 재시작 파라미터에 기초할 수 있다. 만약 프로세스 재시작 파라미터가 다르면, 프로세싱은 단계(716)로 진행한다. 그렇지 않으면, 프로세싱은 완료된다.
단계(716)에서, 매체 애플리케이션에 의해 요구되고 폐기된 구성요소가 갱신된다. 갱신 프로세스는 아래 도 8과 관련하여 설명된다. 구성요소가 갱신된 후에, 프로세싱은 단계(718)로 진행한다.
단계(718)에서, 보호된 프로세스가 재시작된다. 상기 설명된 바와 같이, 보호된 프로세스를 재시작하는 것은 보호된 프로세스 내의 악의적인 사용자 모드 구성요소를 제거한다. 그 후 보호된 프로세스가 재시작되면, 신규 전역 폐기 목록 내에 목록화된 사용자 모드 구성요소는 로딩되지 않는다. 그 후 전역 폐기 목록을 업데이트하는 프로세스(700)가 완료된다.
도 8은 도 6에 도시된 온디맨드 자동 업데이트 프로세스에서 사용하기 적합 한 컴퓨터 판독가능 구성요소를 갱신하는 예시적인 프로세스(800)를 도시하는 흐름도이다. 프로세스(800)는 전역 폐기 목록에서 폐기된 것으로 식별되는 매체 애플리케이션에 의해 요구되는 구성요소들 각각에 대해 수행된다. 그러나, 최종 사용자는 사용자가 자동 업데이트를 수행하기 원하는지 여부를 묻는 사용자 인터페이스를 단 한번만 접하게 될 수 있다. 프로세스(800)는 단계(802)에서 시작하고, 여기서 보류 갱신된 구성요소가 필요한 갱신된 구성요소가 이미 다운로드되고 인스톨되었는지 여부를 결정하기 위해 체크된다. 간단히, 도 9와 관련하여 아래에서 설명되는 바와 같이, 보류 갱신된 구성요소는 주기적인 자동 업데이트 프로세스에 의해 이전에 다운로드될 수 있다. 프로세싱은 결정 단계(804)로 진행한다.
결정 블록(804)에서, 폐기된 구성요소가 이미 이용가능한지 여부가 결정된다. 만약 폐기된 구성요소가 이미 다운로드되었다면, 프로세싱은 단계(814)로 계속된다. 그렇지 않으면, 프로세싱은 단계(806)로 진행한다.
단계(806)에서, 콘텐츠 인에이블러 객체가 폐기된 구성요소를 위하여 생성된다. 콘텐츠 인에이블러 객체는 매체 파이프라인 구성요소(222)에 의해 생성된다. 콘텐츠 인에이블러 객체는 폐기된 구성요소를 위한 식별자로 초기화된다. 식별자는 폐기된 구성요소와 연관된 해시(hash) 또는 폐기된 구성요소의 인증서가 될 수 있다. 폐기된 인증서에 대하여, 콘텐츠 인에이블러는 인증서의 공용 키의 해시 및 폐기되고 있는 구성요소의 파일이름으로 초기화된다. 링크 메커니즘은 그 다음 해시 및/또는 인증서에 기초하여 방향을 바꿀(redirect) 수 있다. 링크 매커니즘은 폐기된 인증서에 의해 서명된 각 구성요소에 대한 개별적인 엔트리를 가질 수 있 다. 프로세싱은 단계(808)로 진행한다.
단계(808)에서, 콘텐츠 인에이블러 객체의 인에이블 메쏘드가 호출된다. 이 호출은 매체 파이프라인 구성요소(222)가 콘텐츠 인에이블러 객체를 매체 애플리케이션으로 전달한 후에 매체 애플리케이션(212)에 의해 수행된다. 매체 애플리케이션은 또한, 위에서 도 5와 관련하여 설명한 바와 같이, 원하는 경우 추가적인 정보를 획득하기 위해 다른 균일한 API를 사용할 수 있다. 콘텐츠 인에이블러 객체 내의 식별자는 업데이트 서비스에서 이용가능한 갱신 패키지를 식별한다. 프로세싱은 단계(810)로 진행한다.
단계(810)에서, 업데이트 객체가 생성되고 업데이트 서비스로 보내진다. 콘텐츠 인에이블러 객체의 인에이블 메쏘드는 업데이트 객체의 생성을 담당한다. 업데이트 객체는 폐기된 구성요소를 위한 식별자를 포함한다. 업데이트 서비스가 업데이트 객체를 수신하는 경우, 이는 지정된 식별자를 갖는 패키지를 위한 자신의 패키지를 검색한다. 한 예시적인 호출 시퀀스는 도 5와 관련하여 위에서 설명하였다. 프로세싱은 단계(812)로 진행한다.
단계(812)에서, 매체 애플리케이션은 인에이블 메쏘드를 통해 갱신된 구성요소를 수신한다. 프로세싱은 단계(814)로 진행한다.
단계(814)에서, 컴퓨팅 장치에 저장된 폐기된 구성요소는 갱신된 구성요소로 교체된다. 이것은 폐기된 구성요소를 갱신된 구성요소로 덮어쓰는 것을 수반할 수 있다. 프로세싱은 단계(816)로 진행한다.
단계(816)에서, 갱신된 구성요소가 매체 애플리케이션이 자신의 프로세싱을 위한 구성요소를 사용할 수 있도록 로딩된다. 그 후 구성요소를 갱신하는 프로세스(800)는 완료된다. 상기 언급한 바와 같이, 프로세스(800)는 매체 애플리케이션에 의해 요구되고 폐기된 각 구성요소에 대하여 수행된다.
도 9는 신뢰 환경을 업데이트하는 예시적인 주기적 프로세스(900)를 도시한 흐름도이다. 일 실시예에서, 주기적인 프로세스(900)는 워싱톤 레드몬드(Redmond, WA)의 MICROSOFT 주식회사에 의해 제조된 MICROSOFT? WINDOWS? Update 소프트웨어와 같은 현존하는 소프트웨어 업데이트 메커니즘을 활용할 수 있다. 프로세스(900)는 단계(902)에서 시작하고, 여기서 소정의 이벤트가 수신되어 신뢰 환경의 업데이트 체크가 수행되어야 한다고 신호를 보낸다. 소정의 이벤트는 특정 시간, 특정 행동(예컨대, 스타트 업(start-up)) 등으로 지정될 수 있다. 소정의 이벤트 전에, 소프트웨어 업데이트 메커니즘과 관련된 클라이언트 서비스 내의 옵션이 주기적인 프로세스를 위한 자동 업데이트 행위를 제어하도록 구성된다. 예를 들어, 옵션은 1)가장 최근의 전역 폐기 목록 및 이 목록 내에서 식별된 갱신된 구성요소들 모두를 자동으로 다운로드 및 인스톨하도록, 2)가장 최근의 전역 폐기 목록 및 식별된 갱신된 구성요소를 다운로드하지만 인스톨은 대기하도록, 3)신규 전역 폐기 목록 및/또는 갱신된 구성요소가 다운로드될 수 있다는 통지를 보내지만 이들을 다운로드 또는 인스톨하지 않도록, 또는 4)주기적인 갱신을 하지 않도록 지정할 수 있다. 다른 옵션이 상기 언급된 것들에 추가될 수 있다. 상기 설명된 바와 같이, 갱신된 구성요소를 위한 갱신 패키지가 소프트웨어 업데이트 메커니즘을 제공하도록 구성되는 서버로 업로드된다. 일반적으로, 주기적인 업데이트에 대한 갱신 패 키지는 온디맨드 업데이트에 대한 것과 동일하다. 그러나, 두 패키지는 전역 폐기 목록의 경우에 다를 수 있다. 주기적인 업데이트 패키지는 신규 전역 폐기 목록을 임시 위치(temporary location)에 인스톨하는 반면, 온디맨드 업데이트 패키지는 현재의 전역 폐기 목록을 업데이트된 폐기 목록으로 교체한다. 프로세싱은 단계(904)로 진행한다.
단계(904)에서, 컴퓨팅 장치 상의 클라이언트 서비스는 소프트웨어 업데이트 서비스를 구현하도록 구성된 업데이트 서버에 연결된다. 일반적으로, 이 접속은 인터넷을 통해 이루어진다. 클라이언트 서비스 및 업데이트 서비스는 지정된 옵션에 따라 서로 통신한다. 프로세싱은 단계(906)로 진행한다.
단계(906)에서, 클라이언트 서비스는 서버가 이용가능한 신규 전역 폐기 목록을 가지는지 여부를 알기 위해 서버에게 요구(request)를 보낸다. MICROSOFT? WINDOWS? Update 소프트웨어를 이용하는 실시예에서, 가장 최근의 전역 폐기 목록은 권장 업데이트(Recommended Update)로 발행될 수 있다. 만약 가장 최근의 전역 폐기 목록이 이미 다운로드되었다면, 프로세싱은 단계(912)로 진행한다. 그렇지 않으면, 프로세싱은 단계(908)로 넘어간다.
단계(908)에서, 지정된 옵션에 기초하여, 클라이언트 서비스는 원하는 액션을 수행한다. 예를 들어, 만약 옵션 4(통지 송신)가 선택되면, 클라이언트 서비스는 컴퓨팅 장치에 디스플레이되는 통지(notification)를 송신한다. 통지는 최종 사용자로 하여금 업데이트, 다운로드 및 인스톨, 또는 단지 다운로드만을 무시해야하는지 여부를 지정하도록 한다. 다운로드 옵션은 갱신 패키지를 파일로서 저장 장치에 복사하는 것을 수반한다. 인스톨 옵션은 갱신 패키지를 개별 아이템으로(예컨대, 지정된 GRL, 지정된 구성요소) 푸는 것(unpacking)을 수반한다. 일반적으로, 클라이언트 서비스는 최종 사용자에게 덜 관여하는 옵션인 기본 옵션 1로 인스톨된다. 옵션 1이 선택되었다고 하면, 가장 최근의 전역 폐기 목록이 컴퓨팅 장치로 푸시된다(pushed). 그 다음 클라이언트 서비스는 컴퓨팅 장치에 신뢰 인스톨러(trusted installer)를 불러와 가장 최근의 전역 폐기 목록을 인스톨한다. 프로세싱은 단계(910)로 진행한다.
단계(910)에서, 가장 최근의 전역 폐기 목록은 보류 전역 폐기 목록으로 저장된다. 신규 전역 폐기 목록이 업데이트되는 경우 컴퓨팅 장치를 리부팅할 필요가 있을 수 있기 때문에, 신규 전역 폐기 목록은 컴퓨팅 장치를 신규 전역 폐기 목록으로 업데이트 하지 않은 채 저장된다. 신규 전역 폐기 목록은 최종 사용자가 현재 활성중인 전역 폐기 목록보다 더 신규 전역 폐기 목록을 요구하는 소정의 보호된 콘텐츠를 처리시도할 때까지 활성화되지 않는다. 컴퓨팅 장치는 하나의 보류 전역 폐기 목록 및 하나의 활성 전역 폐기 목록을 갖는 것으로 설정될 수 있다. 이러한 설정으로, 현재의 보류 전역 폐기 목록은 컴퓨팅 장치로 푸시되는 가장 최근의 전역 폐기 목록으로 대체된다. 다른 실시예에서, 컴퓨팅 장치는 소정 개수의 보류 전역 폐기 목록들을 유지하도록 설정될 수 있다. 이러한 설정으로, 컴퓨팅 장치로 푸시되는 가장 최근의 전역 폐기 목록이 또 다른 보류 전역 폐기 목록으로서 추가된다. 보류 전역 폐기 목록을, 컴퓨팅 장치의 모든 사용자에 대하여 읽기 및 쓰기 액세스를 갖는 컴퓨팅 장치 상의 위치에 저장하는 것일 바람직하다. 이것 은 필요한 경우 비관리자(non-administrator)에게 전역 폐기 목록을 업데이트하는 능력을 허여한다. 전역 폐기 목록의 버전을 자동으로 업데이트하는 대신에 새롭게 다운로드된 전역 폐기 목록을 보류 전역 폐기 목록으로 저장함으로써, 사용자는 이전에는 처리할 수 있었던 보호된 콘텐츠를 처리할 수 없게 되는 뜻하지 않은 경험을 겪지 않게 될 것이다. 따라서, 최종 사용자는 불필요하게 불편을 겪지 않게 된다. 프로세싱은 결정 단계(912)로 진행한다.
결정 단계(912)에서, 갱신된 구성요소가 다운로드되어야 하는지 여부가 결정된다. 만약 갱신된 구성요소를 다운로드하지 않도록 하는 옵션이 선택되면, 프로세싱은 완료된다. 그렇지 않으면, 프로세싱은 단계(914)로 진행한다.
단계(914)에서, 클라이언트 서비스는 가장 최근의 전역 폐기 목록과 연관된 갱신된 구성요소를 갖는 가장 최근의 패킷에 대한 요구를 보낸다. 프로세싱은 단계(916)로 진행한다.
단계(916)에서, 컴퓨팅 장치는 식별된 패킷을 수신한다. 프로세싱은 단계(918)로 진행한다.
단계(918)에서, 다운로드된 갱신된 구성요소는 컴퓨팅 장치에 의해 액세스가능한 저장소에 보류 구성요소로 저장된다. 그 후 PEAuth가 도 7에 도시된 온디맨드 프로세스를 수행하는 경우 컴퓨터 판독가능 구성요소를 다운로드할 필요없이 이러한 갱신된 컴퓨터 판독가능 구성요소를 로딩할 수 있다. 그 다음 프로세싱이 완료된다.
도 11은 주기적인 프로세스를 구현하는 예시적인 아키텍처의 블록도이다. 예시적인 아키텍처는 서버(1102) 및 인터넷(1104)을 통해 연결된 컴퓨팅 장치(100)를 포함한다. 서버(1102)는 폐기된 구성요소의 업데이트된 버전 및 새롭게 발행된 전역 폐기 목록을 위한 저장소(1112) 및 서버 업데이트 서비스(1110)를 포함한다. 컴퓨팅 장치(100)는 자동 업데이트 서비스(1120) 및 인스톨러(1122)를 포함한다. 자동 업데이트 서비스는 서버 업데이트 서비스와 통신하여 식별된 구성요소를 획득한다. 그 다음 식별된 구성요소는 인스톨러(1122)를 이용하여 보류 구성요소(1124)로 컴퓨팅 장치에 인스톨된다.
도 6-9에서 수행되는 프로세싱은 도 3에 도시된 전역 폐기 목록을 사용한다. 그러나, 프로세싱은 다른 폐기 목록 포맷을 이용하여 또한 수행될 수 있다. 예를 들어, DRM(Digital Rights Media) 애플리케이션은 Cardea 스타일 구성요소 폐기 목록 및 App 구성요소 폐기 목록을 활용한다. 이러한 다른 포맷에 대해, 현재 자동 업데이트 메커니즘은 링크 메커니즘을 통합할 수 있다. 이 링크 메커니즘은 식별자를 URL(uniform resource locator)와 연관시키도록 구성되는데, 여기서 업데이트된 구성요소가 다운로드되거나 신규 폐기 목록이 다운로드될 수 있다. 도 10은 식별자를 URL과 연관시키는 하나의 예시적인 링크 메커니즘을 도시한다. 이러한 다른 매체 애플리케이션에서, 이들의 순람 시스템은 본 자동 업데이트 메커니즘이 필요로 하는 정보 타입을 지원하지 않는다. 따라서, 콘텐츠 인에이블러 API는 임의의 식별자 유형을 수신하고 이것이 업데이트 서비스, 제3자 웹 사이트, 또는 도움말과 연관되어 있는지를 구분하도록 구성된다. 이러한 다른 폐기 목록을 활용하는 매체 애플리케이션은 본 자동 업데이트 메커니즘을 불러오는 코드를 포함한다. 그 러면, GUID를 전달하는 대신에, 매체 애플리케이션은 자신의 고유 식별자 타입, 이를테면 해시 또는 공용 키를 전달한다. 매체 파이프라인은 식별자를 이용하여 FWLINK를 구축한다. 그 다음 프로세스는 연관된 URL을 얻기 위해 링크 메커니즘을 통해 고유 식별자를 순람한다. 표(1000)는 링크 메커니즘의 일 실시예를 도시한다. 표(1000)는 두 개의 열: 식별자 열(1002) 및 URL 열(1004)을 포함한다. 일반적으로, 식별자가 유일하게 구성요소 또는 폐기 목록을 식별한다. 식별자는 FWLINK 메커니즘(1008)을 지원하는 웹사이트 URL 부분(1006)을 포함한다. 식별자는 또한 고유 구성요소 또는 폐기 목록과 연관시키기 위한 링크 id(1012) 또는 해시(1010)를 포함한다. URL 열(1004)는 식별된 구성요소가 인스톨될 수 있고, 도움말 인스트럭션이 획득될 수 있는 등의 웹사이트에 대한 URL을 저장한다. 만약 URL이 GUID={someguid}를 질문 스트링 파라미터로 포함하면, 자동 업데이트 메커니즘은 지정된 GUID를 이용하여 업데이트 서비스를 통해 구성요소를 찾기 시도한다. 만약 구성요소가 업데이트 서비스 상에서 찾아지지 않으면, 자동 업데이트 메커니즘은 URL을 최종 사용자에게 디스플레이한다. 그 다음 FWLINK 데이터베이스가 업데이트 서비스를 통해 이용가능한 구성요소에 대한 URL이 GUID와 함께 옵션 파라미터로 구성되도록 한다. 일 실시예에서, 특정 전역 폐기 목록이 질문 스트링 파라미터를 이용하여 지정될 수 있다. 그 다음 링크 메커니즘이 차지되어(populated), FWLINK가 제2 질문 스트링을 이용하여 전역 폐기 목록의 지정된 버전을 위한 셋업 패키지(setup package)를 나타내는 GUID를 지시한다. 동작에서, 콘텐츠 인에이블러 객체가 전역 폐기 목록 해시(즉, 고정된 스트링(fixed string))로 초기화되는 경우, 전역 폐기 목록의 버전이 질문 스트링 파라미터를 이용하여 지정된다. 콘텐츠 인에이블러가 FWLINK 동작을 수행하는 경우, 이는 GUID를 지정하는 링크를 탐지한다. 그 다음, 콘텐츠 인에이블러는 업데이트 서비스를 이용하여 이 GUID와 함께 구성요소를 다운로드하고 인스톨한다.
예시적인 실시예 및 애플리케이션이 도시되고 설명되었지만, 본 발명은 위에서 설명한 세세한 구성 및 자원에 한정되지 않는다. 당업자라면 본 발명의 범위를 넘지 않는 한도 내에서 본 명세서에서 개시된 실시예의 배열, 동작, 및 자세한 내용에 다양한 수정, 변경 등을 가할 수 있다.

Claims (26)

  1. 컴퓨팅 장치에 의하여, 신규 폐기 목록(new revocation list)이 업데이트 서버에서 발행되었는지 여부를 주기적으로 체크하는 단계;
    상기 컴퓨팅 장치에 의하여, 상기 주기적인 체크 동안, 상기 업데이트 서버로부터 상기 신규 폐기 목록에 대한 권장 업데이트가 있다는 표시(indication)를 수신하면, 상기 신규 폐기 목록을 다운로드하고 보류 폐기 목록(pending revocation list)으로서 저장하는 단계 - 상기 보류 폐기 목록은 보호된 콘텐츠(protected content)가 컴퓨팅 장치의 현재 보호 레벨에 의해 제공되는 보호보다 상기 컴퓨팅 장치의 더 높은 보호 레벨을 요구하는 경우 온디맨드 업데이트(on-demand update)를 위해 이용가능함 - ; 및
    상기 컴퓨팅 장치에 의하여, 상기 표시를 수신하면 상기 신규 폐기 목록 내에서 폐기된 구성요소로 목록화된 각 구성요소의 업데이트된 버전을 다운로드하는 단계
    를 포함하며,
    상기 폐기된 구성요소는 GUID(globally unique identifier)에 의해 식별되고, 상기 GUID는 상기 업데이트된 버전을 인스톨하기 위한 상기 업데이트 서버 상의 위치를 식별하는데 사용되는, 컴퓨터로 구현된 방법.
  2. 제1항에 있어서,
    상기 주기적으로 체크하는 단계는 상기 컴퓨팅 장치가 리부팅되는 경우 발생하는, 컴퓨터로 구현된 방법.
  3. 제1항에 있어서,
    상기 신규 폐기 목록이 현재 보류 폐기 목록을 대체하는, 컴퓨터로 구현된 방법.
  4. 제1항에 있어서,
    상기 보류 폐기 목록은 미리 다운로드된 복수의 보류 폐기 목록 중 하나로서 저장되는, 컴퓨터로 구현된 방법.
  5. 제1항에 있어서,
    상기 업데이트 서버는 MICROSOFT? WINDOWS? 업데이트 서비스를 수행하는, 컴퓨터로 구현된 방법.
  6. 제1항에 있어서,
    상기 폐기 목록은 칼디(Cardea) 스타일의 인증서 폐기 목록(certification revocation list: CRL)을 포함하고, 각 폐기된 구성요소는 인증서 해시(certificate hash)로 식별되고, 상기 인증서 해시는 상기 업데이트된 버전을 다운로드하기 위한 상기 업데이트 서버 상의 위치를 식별하는데 사용되는, 컴퓨터로 구현된 방법.
  7. 제1항에 있어서,
    상기 폐기 목록은 App 인증서 폐기 목록(CRL)을 포함하고, 각 폐기된 구성요소는 공용 키(public key)로 식별되고, 상기 공용키는 상기 업데이트된 버전을 다운로드하기 위한 상기 업데이트 서버 상의 위치를 식별하는데 사용되는, 컴퓨터로 구현된 방법.
  8. 제1항에 있어서,
    상기 폐기된 구성요소는 상기 폐기된 구성요소의 해시에 의해 식별되는, 컴퓨터로 구현된 방법.
  9. 제1항에 있어서,
    상기 폐기된 구성요소는 상기 폐기된 구성요소의 인증서에 의해 식별되는, 컴퓨터로 구현된 방법.
  10. 제1항에 있어서,
    상기 업데이트 서버는 매체 애플리케이션(media applications)과 연관되는 카테고리를 제공하고, 신규 폐기 목록들은 상기 카테고리 내에서 발행되는, 컴퓨터로 구현된 방법.
  11. 제10항에 있어서,
    복수의 패키지가 상기 카테고리 내에서 발행되고, 각 패키지는 상기 신규 폐기 목록들 중 하나와 연관되고 상기 연관된 폐기 목록에서 폐기된 것으로 목록화된 구성요소들의 업데이트된 버전들을 포함하는, 컴퓨터로 구현된 방법.
  12. 컴퓨터 실행가능 구성요소를 갖는 컴퓨터 판독가능 저장매체로서,
    네트워크를 통해 신규 폐기 목록이 업데이트 서버에서 발행되었는지 여부를 주기적으로 체크하도록 구성된 자동 업데이트 서비스 구성요소;
    상기 업데이트 서버로부터 상기 신규 폐기 목록을 다운로드한 후, 컴퓨팅 장치 상에 상기 신규 폐기 목록을 인스톨하도록 구성된 인스톨러 구성요소(installer component); 및
    상기 인스톨된 신규 폐기 목록을 보류 폐기 목록으로 저장하도록 구성된 저장 구성요소 - 상기 보류 폐기 목록은 보호된 콘텐츠의 프로세싱이 상기 신규 폐기 목록에 의해 지정된 보호 레벨을 요구하면 컴퓨팅 장치를 상기 보호 레벨로 업데이트하는데 이용가능함 -
    를 포함하는, 컴퓨터 판독가능 저장매체.
  13. 제12항에 있어서,
    상기 자동 업데이트 서비스 구성요소는 인터넷을 통해 상기 업데이트 서버의 서버 업데이트 서비스 구성요소와 통신하도록 구성된, 컴퓨터 판독가능 저장매체.
  14. 제13항에 있어서,
    상기 업데이트 서버는 MICROSOFT? WINDOWS? 업데이트 서비스를 수행하는, 컴퓨터 판독가능 저장매체.
  15. 제12항에 있어서,
    상기 저장 구성요소는 상기 인스톨된 신규 폐기 목록을 복수의 보류 폐기 목록 중 하나로서 저장하도록 더 구성된 - 상기 복수의 보류 폐기 목록은 상기 컴퓨팅 장치를 대응하는 보호 레벨로 업데이트하는데 이용가능함 - , 컴퓨터 판독가능 저장매체.
  16. 프로세서; 및
    복수의 컴퓨터 실행가능 구성요소가 로딩되는 메모리
    를 포함하는 컴퓨팅 장치로서,
    상기 복수의 구성요소는
    네트워크를 통해 신규 폐기 목록이 업데이트 서버에서 발행되었는지 여부를 주기적으로 체크하도록 구성된 자동 업데이트 서비스 구성요소;
    상기 업데이트 서버로부터 상기 신규 폐기 목록을 다운로드한 후, 컴퓨팅 장치 상에 상기 신규 폐기 목록을 인스톨하도록 구성된 인스톨러 구성요소; 및
    상기 인스톨된 신규 폐기 목록을 보류 폐기 목록으로 저장하도록 구성된 저장 구성요소 - 상기 보류 폐기 목록은 보호된 콘텐츠의 프로세싱이 상기 신규 폐기 목록에 의해 지정된 보호 레벨을 요구하면 컴퓨팅 장치를 상기 보호 레벨로 업데이트하는데 이용가능함 -
    를 포함하는, 컴퓨팅 장치.
  17. 컴퓨팅 장치에 의하여, 신규 폐기 목록이 업데이트 서버에서 발행되었는지 여부를 주기적으로 체크하는 단계;
    상기 컴퓨팅 장치에 의하여, 상기 주기적인 체크 동안, 상기 업데이트 서버로부터 상기 신규 폐기 목록에 대한 권장 업데이트가 있다는 표시를 수신하면, 상기 신규 폐기 목록을 다운로드하고 보류 폐기 목록으로서 저장하는 단계 - 상기 보류 폐기 목록은 보호된 콘텐츠가 컴퓨팅 장치의 현재 보호 레벨에 의해 제공되는 보호보다 상기 컴퓨팅 장치의 더 높은 보호 레벨을 요구하는 경우 온디맨드 업데이트를 위해 이용가능함 - ; 및
    상기 컴퓨팅 장치에 의하여, 상기 표시를 수신하면 상기 신규 폐기 목록 내에서 폐기된 구성요소로 목록화된 각 구성요소의 업데이트된 버전을 다운로드하는 단계
    를 포함하며,
    상기 폐기 목록은 칼디 스타일의 인증서 폐기 목록(CRL)을 포함하고, 각 폐기된 구성요소는 인증서 해시로 식별되고, 상기 인증서 해시는 상기 업데이트된 버전을 다운로드하기 위한 상기 업데이트 서버 상의 위치를 식별하는데 사용되는, 컴퓨터로 구현된 방법.
  18. 제17항에 있어서,
    상기 주기적으로 체크하는 단계는 상기 컴퓨팅 장치가 리부팅되는 경우 발생하는, 컴퓨터로 구현된 방법.
  19. 제17항에 있어서,
    상기 폐기된 구성요소는 GUID에 의해 식별되고, 상기 GUID는 상기 업데이트된 버전을 인스톨하기 위한 상기 업데이트 서버 상의 위치를 식별하는데 사용되는, 컴퓨터로 구현된 방법.
  20. 제17항에 있어서,
    상기 업데이트 서버는 매체 애플리케이션과 연관되는 카테고리를 제공하고, 신규 폐기 목록들은 상기 카테고리 내에서 발행되는, 컴퓨터로 구현된 방법.
  21. 제20항에 있어서,
    복수의 패키지가 상기 카테고리 내에서 발행되고, 각 패키지는 상기 신규 폐기 목록들 중 하나와 연관되고 상기 연관된 폐기 목록에서 폐기된 것으로 목록화된 구성요소들의 업데이트된 버전들을 포함하는, 컴퓨터로 구현된 방법.
  22. 컴퓨팅 장치에 의하여, 신규 폐기 목록이 업데이트 서버에서 발행되었는지 여부를 주기적으로 체크하는 단계;
    상기 컴퓨팅 장치에 의하여, 상기 주기적인 체크 동안, 상기 업데이트 서버로부터 상기 신규 폐기 목록에 대한 권장 업데이트가 있다는 표시를 수신하면, 상기 신규 폐기 목록을 다운로드하고 보류 폐기 목록으로서 저장하는 단계 - 상기 보류 폐기 목록은 보호된 콘텐츠가 컴퓨팅 장치의 현재 보호 레벨에 의해 제공되는 보호보다 상기 컴퓨팅 장치의 더 높은 보호 레벨을 요구하는 경우 온디맨드 업데이트를 위해 이용가능함 - ; 및
    상기 컴퓨팅 장치에 의하여, 상기 표시를 수신하면 상기 신규 폐기 목록 내에서 폐기된 구성요소로 목록화된 각 구성요소의 업데이트된 버전을 다운로드하는 단계
    를 포함하며,
    상기 폐기 목록은 App 인증서 폐기 목록(CRL)을 포함하고, 각 폐기된 구성요소는 공용 키로 식별되고, 상기 공용키는 상기 업데이트된 버전을 다운로드하기 위한 상기 업데이트 서버 상의 위치를 식별하는데 사용되는, 컴퓨터로 구현된 방법.
  23. 제22항에 있어서,
    상기 주기적으로 체크하는 단계는 상기 컴퓨팅 장치가 리부팅되는 경우 발생하는, 컴퓨터로 구현된 방법.
  24. 제22항에 있어서,
    상기 폐기된 구성요소는 GUID에 의해 식별되고, 상기 GUID는 상기 업데이트된 버전을 인스톨하기 위한 상기 업데이트 서버 상의 위치를 식별하는데 사용되는, 컴퓨터로 구현된 방법.
  25. 제22항에 있어서,
    상기 업데이트 서버는 매체 애플리케이션과 연관되는 카테고리를 제공하고, 신규 폐기 목록들은 상기 카테고리 내에서 발행되는, 컴퓨터로 구현된 방법.
  26. 제25항에 있어서,
    복수의 패키지가 상기 카테고리 내에서 발행되고, 각 패키지는 상기 신규 폐기 목록들 중 하나와 연관되고 상기 연관된 폐기 목록에서 폐기된 것으로 목록화된 구성요소들의 업데이트된 버전들을 포함하는, 컴퓨터로 구현된 방법.
KR1020077030758A 2005-07-19 2006-07-14 신뢰 환경을 지원하기 위한 컴퓨터 판독가능 구성요소의자동 업데이트 KR101238572B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/184,555 2005-07-19
US11/184,555 US7590841B2 (en) 2005-07-19 2005-07-19 Automatic update of computer-readable components to support a trusted environment
PCT/US2006/027251 WO2007011667A2 (en) 2005-07-19 2006-07-14 Automatic update of computer-readable components to support a trusted environment

Publications (2)

Publication Number Publication Date
KR20080026132A KR20080026132A (ko) 2008-03-24
KR101238572B1 true KR101238572B1 (ko) 2013-03-04

Family

ID=37669367

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077030758A KR101238572B1 (ko) 2005-07-19 2006-07-14 신뢰 환경을 지원하기 위한 컴퓨터 판독가능 구성요소의자동 업데이트

Country Status (10)

Country Link
US (1) US7590841B2 (ko)
EP (1) EP1905184B1 (ko)
JP (1) JP5027807B2 (ko)
KR (1) KR101238572B1 (ko)
CN (1) CN101310472B (ko)
AU (1) AU2006270273B2 (ko)
BR (1) BRPI0612865B1 (ko)
CA (1) CA2612631C (ko)
NO (1) NO20076576L (ko)
WO (1) WO2007011667A2 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7370212B2 (en) 2003-02-25 2008-05-06 Microsoft Corporation Issuing a publisher use license off-line in a digital rights management (DRM) system
US8074287B2 (en) * 2004-04-30 2011-12-06 Microsoft Corporation Renewable and individualizable elements of a protected environment
US20060242406A1 (en) 2005-04-22 2006-10-26 Microsoft Corporation Protected computing environment
US8347078B2 (en) 2004-10-18 2013-01-01 Microsoft Corporation Device certificate individualization
US8336085B2 (en) 2004-11-15 2012-12-18 Microsoft Corporation Tuning product policy using observed evidence of customer behavior
US8438645B2 (en) 2005-04-27 2013-05-07 Microsoft Corporation Secure clock with grace periods
US8725646B2 (en) 2005-04-15 2014-05-13 Microsoft Corporation Output protection levels
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
US20060265758A1 (en) 2005-05-20 2006-11-23 Microsoft Corporation Extensible media rights
US8230037B2 (en) * 2006-09-29 2012-07-24 Audible, Inc. Methods and apparatus for customized content delivery
US8875259B2 (en) 2007-11-15 2014-10-28 Salesforce.Com, Inc. On-demand service security system and method for managing a risk of access as a condition of permitting access to the on-demand service
US8584212B1 (en) 2007-11-15 2013-11-12 Salesforce.Com, Inc. On-demand service security system and method for managing a risk of access as a condition of permitting access to the on-demand service
US9253536B2 (en) * 2009-03-18 2016-02-02 Microsoft Technology Licensing, Llc Updating data-consuming entities
US9135091B2 (en) 2009-04-03 2015-09-15 Microsoft Technology Licensing, Llc Communicating events or data between application components
US8205257B1 (en) * 2009-07-28 2012-06-19 Symantec Corporation Systems and methods for preventing threats originating from a non-process based component hosted by a trusted process
US20110185179A1 (en) * 2009-08-26 2011-07-28 Viswanathan Swaminathan System And Method For Digital Rights Management With A Lightweight Digital Watermarking Component
EP2360581A1 (en) * 2010-01-18 2011-08-24 Thomson Licensing Method, system and device for execution of a software application
KR20130114672A (ko) 2011-01-19 2013-10-17 인터내셔널 비지네스 머신즈 코포레이션 소프트웨어를 업데이트하는 장치 및 방법
US10282221B2 (en) 2011-12-09 2019-05-07 International Business Machines Corporation Controlling usage of virtual disks before their attachment to virtual machines
US9727326B2 (en) * 2013-03-15 2017-08-08 Apple Inc. Providing customized notifications for security software updates
US9143565B2 (en) * 2013-05-30 2015-09-22 Opentv, Inc. Synchronizing an application on a companion device
US9298923B2 (en) * 2013-09-04 2016-03-29 Cisco Technology, Inc. Software revocation infrastructure
CN107533608B (zh) * 2014-12-26 2021-08-24 迈克菲有限责任公司 可信更新
US10445503B2 (en) 2017-07-14 2019-10-15 Google Llc Secure persistent software updates

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003056823A1 (en) 2001-12-28 2003-07-10 Thomson Licensing S.A. Process for updating a revocation list of noncompliant keys, appliances or modules in a secure system for broadcasting content

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5373561A (en) * 1992-12-21 1994-12-13 Bell Communications Research, Inc. Method of extending the validity of a cryptographic certificate
US6367013B1 (en) * 1995-01-17 2002-04-02 Eoriginal Inc. System and method for electronic transmission, storage, and retrieval of authenticated electronic original documents
US5615268A (en) * 1995-01-17 1997-03-25 Document Authentication Systems, Inc. System and method for electronic transmission storage and retrieval of authenticated documents
US6128740A (en) * 1997-12-08 2000-10-03 Entrust Technologies Limited Computer security system and method with on demand publishing of certificate revocation lists
EP1096446A3 (en) * 1999-11-01 2004-02-11 Citicorp Development Center, Inc. Method and system for secure communication between a self-service financial transaction terminal and a remote operator interface
JP4474845B2 (ja) * 2002-06-12 2010-06-09 株式会社日立製作所 Crl発行通知機能付き認証基盤システム
JP2004056635A (ja) * 2002-07-23 2004-02-19 Hitachi Ltd 証明書失効リストの更新装置、システム及び方法
US20040205345A1 (en) * 2003-04-11 2004-10-14 Ripley Michael S. System for identification and revocation of audiovisual titles and replicators

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003056823A1 (en) 2001-12-28 2003-07-10 Thomson Licensing S.A. Process for updating a revocation list of noncompliant keys, appliances or modules in a secure system for broadcasting content

Also Published As

Publication number Publication date
EP1905184B1 (en) 2018-02-14
BRPI0612865A2 (pt) 2010-11-30
JP2009503648A (ja) 2009-01-29
KR20080026132A (ko) 2008-03-24
US7590841B2 (en) 2009-09-15
EP1905184A2 (en) 2008-04-02
NO20076576L (no) 2008-02-18
CA2612631C (en) 2014-03-04
EP1905184A4 (en) 2016-03-30
WO2007011667A3 (en) 2007-08-23
JP5027807B2 (ja) 2012-09-19
BRPI0612865B1 (pt) 2019-10-01
WO2007011667A2 (en) 2007-01-25
AU2006270273A1 (en) 2007-01-25
CN101310472A (zh) 2008-11-19
CA2612631A1 (en) 2007-01-25
US20070033652A1 (en) 2007-02-08
CN101310472B (zh) 2011-12-07
AU2006270273B2 (en) 2010-05-06

Similar Documents

Publication Publication Date Title
KR101238572B1 (ko) 신뢰 환경을 지원하기 위한 컴퓨터 판독가능 구성요소의자동 업데이트
US7650492B2 (en) Automatic update of computer-readable components to support a trusted environment
US7496757B2 (en) Software verification system, method and computer program element
US8667487B1 (en) Web browser extensions
KR101301332B1 (ko) 보안 기계 카운팅
US9189605B2 (en) Protected computing environment
US8887152B1 (en) Android application virtual environment
US7062650B2 (en) System and method for verifying integrity of system with multiple components
US7181603B2 (en) Method of secure function loading
US8739298B2 (en) Method and system for enforcing a license dependency rule for a software application
US20110030062A1 (en) Version-based software product activation
US20060015718A1 (en) Use of kernel authorization data to maintain security in a digital processing system
US20100037317A1 (en) Mehtod and system for security monitoring of the interface between a browser and an external browser module
JP2005129066A (ja) オペレーティングシステムリソース保護
EP3583536B1 (en) Securely defining operating system composition without multiple authoring
JP2005234864A (ja) 配信サーバおよびセキュリティポリシ配信サーバ
KR101265887B1 (ko) 보호 컴퓨팅 환경을 제공하는 방법 및 장치 내에 보호 환경을 설정하는 방법
CN102216936A (zh) 已声明的起源策略
Kim et al. Self‐Controllable Mobile App Protection Scheme Based on Binary Code Splitting

Legal Events

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

Payment date: 20160119

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180201

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 8