KR101091465B1 - 프로세서의 가상 머신 내 기밀 콘텐츠의 보안 처리를 위한 방법 및 장치 - Google Patents

프로세서의 가상 머신 내 기밀 콘텐츠의 보안 처리를 위한 방법 및 장치 Download PDF

Info

Publication number
KR101091465B1
KR101091465B1 KR1020090121384A KR20090121384A KR101091465B1 KR 101091465 B1 KR101091465 B1 KR 101091465B1 KR 1020090121384 A KR1020090121384 A KR 1020090121384A KR 20090121384 A KR20090121384 A KR 20090121384A KR 101091465 B1 KR101091465 B1 KR 101091465B1
Authority
KR
South Korea
Prior art keywords
content
party
program
processor
virtual machine
Prior art date
Application number
KR1020090121384A
Other languages
English (en)
Other versions
KR20100066404A (ko
Inventor
데이비드 와이어트
하이시아 시
제프리 스코트 터키
Original Assignee
엔비디아 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엔비디아 코포레이션 filed Critical 엔비디아 코포레이션
Publication of KR20100066404A publication Critical patent/KR20100066404A/ko
Application granted granted Critical
Publication of KR101091465B1 publication Critical patent/KR101091465B1/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F21/575Secure boot
    • 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/12Protecting executable software
    • 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/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • 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/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • 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/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/84Protecting input, output or interconnection devices output devices, e.g. displays or monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

프로세서 상에서 구현되는 보안 가상 머신 시스템, 방법 및 컴퓨터 프로그램 제품이 출력을 위해 제3 당사자의 콘텐츠를 처리하기 위해 제공된다. 적어도 하나의 프로세서가 제공된다. 또한, 이 프로세서 상에서 구현되는 적어도 하나의 보안 가상 머신이 제3 당사자의 콘텐츠를 처리하고 출력하는 제2 당사자의 프로그램을 해석하기 위해 제공된다. 가상 머신 시스템은 제품에서의 구현 변형이 동일한 프로그램을 동일하게 실행할 수 있게 하는 하부 프로세서 하드웨어를 추출한다. 또한, 프로그램에 의한 잠재적인 보안 누설을 경감하고 제2 당사자의 비밀 및 제2 당사자의 프로그램에 의해 관리되는 제3 당사자의 콘텐츠의 기밀성을 보장하기 위해, 프로그램가능한 동작의 범위, 입출력 변수의 종류, 및 프로세서 내 프로그램의 실행이 가상 머신 환경 내에서 신중히 제한된다.
프로세서, 가상 머신, 기밀 콘텐츠, 보안 처리, 컴퓨터 프로그램, 재암호화

Description

프로세서의 가상 머신 내 기밀 콘텐츠의 보안 처리를 위한 방법 및 장치{METHOD AND APPARATUS FOR THE SECURE PROCESSING OF CONFIDENTIAL CONTENT WITHIN A VIRTUAL MACHINE OF A PROCESSOR}
본 발명은 프리미엄 오디오/비디오 콘텐츠의 처리에 관한 것으로, 특히 콘텐츠 플레이어 애플리케이션이 실행되는 프로세서 컨텍스트 외부의 콘텐츠 처리에 관한 것이다.
종래의 컴퓨팅 환경에서, 콘텐츠 처리는 종종 개별 프로세서에 의해 수행된다. 예컨대, 이러한 하드웨어 프로세서들이 고선명 콘텐츠를 디코딩하기 위해 제공될 수 있다. 현재까지, 단일 칩에 모든 필요한 콘텐츠 처리를 통합하는 것이 어려웠다. 또한, 허가된 콘텐츠(licensed content)를 처리하기 위한 알고리즘을 사용할 권한을 얻고 암호화된 콘텐츠를 추출하기 위한 피허가자(licensee) 키를 얻기 위해 완전한 구현은 일반적으로 구현자가 제3 당사자 콘텐츠의 허가받은 채택자가 될 것을 요할 것이다. 이러한 라이센스는 허가자(licensor) 비밀의 기밀성, 구현에 있어서 이벤트 결함에서의 책임 및 법적 구제가 기밀 정보 또는 콘텐츠의 타협(compromising)에 이르게 됨을 보장하기 위해 일반적으로 컴플라이언 스(compliance) 및 강건성(robustness) 규칙을 포함한다. 따라서, 제2 당사자 피허가자의 소프트웨어 애플리케이션은 일반적으로 재암호화된 비디오 콘텐츠를 더 일반적인 포맷으로 그래픽 또는 시각 프로세서로 전달하기 전에 적어도 부분적으로 중앙 처리 장치 등을 이용하여 콘텐츠를 처리하도록 의존해 왔다.
불행하게도, 중앙 처리 장치에 대한 의존은 일부 제한이 있다. 예컨대, CPU 상에서 실행되는 애플리케이션 내 피허가자 키 및 알고리즘의 취급은 처리 동안에 어느 지점에서 프로세서 내부의 이 기밀 정보의 노출을 불가피하게 수반한다. 상기 기밀 프로세스 및 비밀을 이용한 콘텐츠의 처리는 보안 취약성으로 이어질 수 있는 이러한 유닛으로 및 유닛으로부터의 전송을 포함한다. 또한, 부정조작 방지 기술의 이용으로도, 가상화를 위해 설계된 중앙 프로세서 내에서의 실행은 예컨대 하이퍼바이저(hypervisor) 또는 실행 가상 머신(executing virtual machine)보다 더 높은 우선순위 실행 컨텍스트로부터의 강건한 부정조작 방지 실행 환경을 보장하지 못하는 결과로 이어진다. 또한, 중앙 처리 장치들은 그들의 일반적인 컴퓨터 아키텍처에 의하여 임의 종류의 처리(예컨대, 암호화 등)에 대해 덜 효율적이다. 추가적인 부정조작 방지 및 재암호화 프로세스는 콘텐츠 재생 동안의 배터리 수명의 감소를 가져오는 전력 낭비 및 CPU의 과다하고 낭비적인 과잉 사용으로 이어진다. 따라서, 종래기술과 연관된 이들 및/또는 다른 문제를 해결할 필요성이 있다.
프로세서 상에서 구현되는 SVM(secure virtual machine: 보안 가상 머신) 시스템, 방법 및 컴퓨터 프로그램 제품이 출력용 콘텐츠 처리를 위해 제공된다. 적어도 하나의 프로세서가 제공된다. 또한, 이 프로세서 상에서 구현되는 적어도 하나의 SVM이 제3 당사자의 콘텐츠를 처리하고 출력하는 제2 당사자의 프로그램을 해석하기 위해 제공된다. 가상 머신 시스템은 제품에서의 구현 변형이 동일한 프로그램을 동일하게 실행할 수 있게 하는 하부 프로세서 하드웨어를 추출한다(abstract). 또한, 프로그램에 의한 잠재적인 보안 누설을 경감하고 제2 당사자의 비밀 및 제2 당사자의 프로그램에 의해 관리되는 제3 당사자의 콘텐츠의 기밀성을 보장하기 위해, 프로그램가능한 동작의 범위, 입출력 변수의 종류, 및 프로세서 내 프로그램의 실행이 가상 머신 환경 내에서 신중히 제한된다.
도 1a는 일 실시예에 따라 프로세서를 이용하여 콘텐츠 해독용 키를 생성하는 프로그램을 실행하는 방법(100)을 도시한다. 도시된 바와 같이, 콘텐츠 해독 프로그램이 생성된다. 단계(102)를 참조한다. 일단 프로그램이 생성되면, 이 프로그램은 보호된다(secured). 단계(104)를 참조한다. 일 실시예에서, 이 프로그램은 암호화됨으로써 보호될 수 있다.
본 설명의 문맥에서, 프로그램은 프로세서를 이용하여 실행될 수 있는 임의의 프로그램을 가리킨다. 일 실시예에서, 프로그램은 콘텐츠 해독용 키를 생성할 수 있는 프로그램을 포함할 수 있는데, 여기서 콘텐츠는 암호화될 수 있는 임의의 데이터를 가리킨다. 선택적으로, 콘텐츠는 사유 정보를 포함할 수 있다.
이 경우, 콘텐츠 및 콘텐츠 해독용 키를 생성하는 프로그램은 프로세서에서 수신될 수 있다. 단계(106)를 참조한다. 추가적으로, 이 프로그램은 콘텐츠를 해독하기 위한 프로세서를 이용하여 실행될 수 있다. 단계(108)를 참조한다.
본 설명의 문맥에서, 프로세서는 디스플레이를 위한 데이터를 처리할 수 있는 임의의 프로세서를 말한다. 예컨대, 다양한 실시예에서, 프로세서는 그래픽 프로세서 및 비디오 프로세서 중 적어도 하나를 포함할 수 있다. 일 실시예에서, 프로세서는 출력용 콘텐츠를 처리하는 프로세서에서 구현되는 적어도 하나의 보안 가상 머신을 포함할 수 있다.
도 1b는 일 실시예에 따라 출력용 콘텐츠를 처리하는 프로세서에서 구현되는 보안 가상 머신(150)을 도시한다. 도시된 바와 같이, 적어도 하나의 프로세서(152)가 제공된다. 추가적으로, 프로세서 상에서 구현되는 적어도 하나의 보안 가상 머신(150)이 출력용 콘텐츠를 처리하기 위해 제공된다.
동작시, 프로그램 및 콘텐츠가 입력으로서 프로세서(152)에 의해 수신될 수 있다. 일 실시예에서, 가상 머신(150)은 콘텐츠를 처리하는 프로그램을 실행할 수 있을 수 있다. 예컨대, 콘텐츠는 가상 머신(150)에 의해 처리되기 전에 암호화될 수 있다. 이 경우, 이 처리는 콘텐츠의 해독을 포함할 수 있다.
이 처리는 콘텐츠의 재암호화를 더 포함할 수 있다. 선택적으로, 재암호화는 콘텐츠가 프로세서(152)로부터 출력되기 전에 발생할 수 있다. 또 다른 선택으로, 재암호화는 콘텐츠가 프로세서로부터 출력된 후에 발생할 수 있다.
일 실시예에서, 복수의 보안 가상 머신(150)이 프로세서(152)에서 구현될 수 있다. 이 경우, 가상 머신들(152) 사이의 정보 공유가 제한될 수 있다. 예컨대, 가상 머신들(152)에 의해 처리되고 있는 정보가 제한될 수 있다. 일 실시예에서, 이 정보는 키(key)들을 포함할 수 있다.
이하, 사용자의 희망에 따라, 전술한 프레임워크가 구현될 수 있거나 구현될 수 없는 다양한 선택적인 아키텍처 및 특징에 대해 더 많은 예시적인 정보를 설명하기로 한다. 이하의 정보는 단지 예시적인 목적으로 설명되는 것이며 어떤 방식으로든지 한정적인 것으로 해석되지 않아야 한다는 것에 주목해야 한다. 다음 특징들 중 임의의 것은 설명되는 다른 특징들을 배제하거나 배제하지 않고 선택적으로 포함될 수 있다.
도 2는 일 실시예에 따라 프로세서를 이용하여 콘텐츠 해독용 키를 생성하는 프로그램을 생성, 보호 및 실행하는 시스템(200)을 도시한다. 선택적으로, 본 시스템(200)은 도 1a 및 1b의 컨텍스트(context) 및 세부사항으로 구현될 수 있다. 그러나, 시스템(200)은 임의의 바라는 환경에서 구현될 수 있음은 물론이다. 전술한 정의는 본 설명 동안에 적용될 수 있음을 또한 주목해야 한다.
동작시, 콘텐츠가 매체(202)로부터 수신될 수 있다. 이 경우, 콘텐츠는 암호화될 수 있다. 예컨대, 콘텐츠는 키를 이용하여 암호화될 수 있다. 도시된 바와 같이, 콘텐츠는 허가된 플레이어 벤더 또는 다른 독립적인 소프트웨어 벤더(independent software vendor; ISV)(204)에 의해 수신될 수 있다. 또한, 플레이어 ISV(204)는 콘텐츠를 처리하는 프로세서(예컨대, 그래픽 프로세서 등)(250)에서 실행하기 위해 프로그램(206)을 수신할 수 있다. 선택적으로, 프로그램(206)은 애플리케이션의 실행 결과로서 메모리(228)로부터 플레이어 ISV(204)에 의해 인출될 수 있다.
프로그램을 인출한 후, 플레이어(204)는 이 프로그램(206)을 그래픽 프로세서(250)로 전달할 수 있다. 일 실시예에서, 프로그램(206)은 프로세서(250)로 전달되기 전에 플레이어 ISV(204)에 의해 암호화될 수 있다.
예컨대, 프로그램(206)은 플레이어 ISV(204)에 의해 생성되고나서 암호화되어 보호될 수 있다. 일 실시예에서, 프로그램(206)은 프로세서(250)가 콘텐츠를 수신하는 애플리케이션(예컨대, 콘텐츠 플레이어 등)에 의해 사용될 수 있다. 이 경우, 프로그램(206)은 이 애플리케이션에 의해 보호될 수 있다. 프로그램(206)은 콘텐츠에 기초하여 이 애플리케이션에 의해 메모리(228)로부터 검색될 수 있다.
일 실시예에서, 프로그램(206)은 애플리케이션에 의해 검색되기 전에 암호화될 수 있다. 예컨대, 프로그램(206)은 애플리케이션에 의해 검색되기 전에 공개 키(public key)를 이용하여 암호화될 수 있다. 이 경우, 공개 키(206)는 프로세서(250)의 제조자에 의해 제공될 수 있다.
또다른 선택으로서, 프로그램(206)은 애플리케이션에 의해 검색된 후 암호화될 수 있다. 이 경우, 프로그램(206)은 실행시간 동안에 애플리케이션에 의해 검색된 후 암호화될 수 있다. 추가적으로, 프로그램(206)은 임시 키(ephemeral key)를 이용하여 암호화될 수 있다. 예컨대, 임시 키는 프로세서(250) 상에만 저장된 정보를 이용하여 생성될 수 있다. 일 실시예에서, 프로그램(206)은 애플리케이션과 프로세서(250) 사이에서 교환되는 적어도 하나의 인증서를 이용하여 암호화될 수 있다.
일단 프로세서(250)에 의해 수신되면, 해석기(interpreter)(208)는 콘텐츠로부터 타이틀 키(title key)(210)를 도출하기 위해 사용된다. 이 경우, 해석기(208)는 타이틀 키(210)를 도출하기 위해 프로세서(250)에 의해 수신된 프로그램(206)을 실행할 수 있는 보안 가상 머신(VM)의 일부로 간주될 수 있다. 따라서, 프로그램(206)은 가상 머신이 콘텐츠를 처리하고, 타이틀 키(210)를 도출하고, 콘텐츠를 취급하고(예컨대, 콘텐츠를 오디오 및 비디오 스트림으로 분할함으로써), 콘텐츠를 재암호화할 수 있게 하는 정보를 포함할 수 있다.
일 실시예에서, 가상 머신에 의해 처리되는 콘텐츠는 처리되기 전에 암호화될 수 있다. 이 경우, 이 처리는 콘텐츠의 해독을 포함할 수 있다. 이 처리는 콘텐츠의 재암호화를 더 포함할 수 있다. 예컨대, 재암호화는 콘텐츠가 프로세서(250)로부터 출력되기 전에 발생할 수 있다.
상기한 바와 같이, 프로그램은 애플리케이션으로부터 수신될 수 있다. 이 경우, 프로세서(250)와 애플리케이션 사이의 통신 채널이 보호될 수 있다. 예컨대, 프로세서(250)와 애플리케이션 사이의 통신 채널은 적어도 하나의 인증서를 이용하여 보호될 수 있다.
일 실시예에서, 보안 가상 머신은 콘텐츠를 오디오 및 비디오 스트림으로 분할하기 위해 사용될 수 있는 디멀티플렉서(de-multiplexer)(212)를 포함할 수 있다. 또한, 프로그램(206)은 가상 머신과 연관된 재암호화 비디오 모듈(220) 및 재암호화 오디오 모듈(214)이 콘텐츠 출력(예컨대, 디스플레이 등) 전에 콘텐츠를 재 암호화할 수 있게 하는 정보를 포함할 수 있다. 비디오 및 오디오 스트림의 재암호화는 선택적일 수 있음을 주목해야 한다.
시스템(200)을 이용하여, 콘텐츠 및 이 콘텐츠 해독을 위한 암호화된 키를 생성하기 위해 사용되는 프로그램(206)이 프로세서(250)에 의해 수신될 수 있고 프로그램(206)은 콘텐츠 해독을 위해 실행될 수 있다. 추가적으로, 상기 키는 프로세서(250)를 이용하여 해독될 수 있다.
일 실시예에서, 상기 키는 콘텐츠와 연관된 적어도 하나의 콘텐츠 키 및 콘텐츠와 프로그램(206)이 수신되는 애플리케이션과 연관된 적어도 하나의 애플리케이션 키를 포함할 수 있다. 다음으로, 프로세서(250)는 타이틀 키(210)를 생성하기 위해 콘텐츠 키 및 애플리케이션 키를 처리할 수 있다. 이 경우, 타이틀 키(210)는 콘텐츠 해독을 위해 사용될 수 있다. 따라서, 플레이어 ISV(204)와 연관된 중앙 처리 장치(CPU)에 대한 상기 키들의 노출이 방지될 수 있다.
일단 콘텐츠가 분리되면, 비디오 콘텐츠는 디코딩을 위해 비디오 디코드 모듈(222)로 전송되어, 프레임 버퍼(224)에 픽셀로서 저장된 후 디스플레이(226)로 출력될 수 있다. 오디오 콘텐츠는 해독 모듈(216)(예컨대, 플레이어 ISV(204)와 연관됨)로 PCIE 버스를 통해 전송되고 최종적으로 출력을 위한 오디오 스택(218)으로 전송될 수 있다.
이와 같은 방식으로, 그래픽 처리 유닛(GPU), GPU 상의 보안 임베디드 가상 머신에서 실행할 수 있는 보안 마이크로코드(즉, 펌웨어), 및 집합적으로 소프트웨어 플레이어 벤더가 미디어를 위한 처리(예컨대, AACS 처리 등)를 안전하게 오프로 드(offload)할 수 있게 하는 플레이어 ISV의 CPU 상에서 실행하는 그래픽 드라이버 소프트웨어를 포함하는 시스템이 구현될 수 있다. 키 취급(예컨대, AACS에서 이용되는 것 등), 콘텐츠 스트림 해독 및 파싱(parsing), 및 콘텐츠 스트림 수정 프로세스의 처리 단계들을 GPU 상의 보안 임베디드 프로세서로 이동하고 이 단계들을 다중 콘텐츠 종류에 적용하는 방식으로 추출함으로써, 플레이어 ISV와 연관된 장치 키 및 시퀀스 키, 미디어, 및 타이틀 키에 대한 보호가 제공될 수 있다. 또한, 프리미엄 비디오 콘텐츠는 압축된, 디코딩되지 않고 암호화되지 않은 형태로 제공될 수 있다.
추가적으로, 플레이어 ISV는 오디오/비디오(AV) 콘텐츠(예컨대, AACS 보호 AV 스트림 데이터 등)의 처리와 연관된 CPU 사용 및 전력 소비의 대부분을 구성할 수 있는 비디오 기본 스트림(video elementary stream)의 해독 및 재암호화 태스크를 경감할 수 있다. 또한, 다중 콘텐츠 종류, 암호화, 및 키 라이센싱 모델(key licensing model)은 시스템(200)을 이용하여 구현되고 지원될 수 있다.
따라서, CPU 내에서 및 버스를 통한 보호되지 않은 콘텐츠 및 키의 흐름이 회피될 수 있다. 예컨대, 보안 프로세스들이 GPU 상에서 실행되는 컨텍스트가 하드웨어에 의해 보호될 수 있고, 가상 머신에 의해 사용되는 메모리가 보호될 수 있고, 프로그램은 플레이어 ISV에 의해 검증될 수 있는 칩 개인/공개 키를 이용하여 서명될 수 있다.
도 3은 일 실시예에 따라 해석기를 이용하여 수신 프로그램 및 콘텐츠를 해석하는 방법(300)을 도시한다. 선택적으로, 본 방법(300)은 도 1-2의 기능 및 아 키텍처의 컨텍스트에서 구현될 수 있다. 예컨대, 일 실시예에서, 방법(300)은 도 2의 해석기(208)의 세부사항의 컨텍스트에서 수행될 수 있다. 그러나, 방법(300)은 임의의 원하는 환경에서 수행될 수도 있음은 물론이다. 또한, 전술한 정의는 본 설명 동안 적용될 수 있다.
도시된 바와 같이, 바이트 코드 이미지(byte code image)가 수신된다. 단계(302)를 참조한다. 일 실시예에서, 바이트 코드 이미지는 플레이어 ISV로부터 GPU에 의해 수신될 수 있다. 이 경우, 바이트 코드 이미지는 플레이어 ISV에 의해 전송된 프로그램과 연관된 코드를 포함할 수 있다.
일단 수신되면, 바이트 코드 이미지의 서명이 확인된다. 단계(304)를 참조한다. 이 경우, 이 확인은 서명이 신뢰성있는 소스(trusted source)와 연관되는지를 검증하는 것을 포함할 수 있다. 바이트 코드 이미지는 이후 해독될 수 있다. 단계(306)를 참조한다. 일단 해독되면, 바이트 코드는 해석될 수 있다. 단계(308)를 참조한다.
도 4는 일 실시예에 따라 수신 프로그램 및 콘텐츠 해석을 위한 프로세서(402) 및 보안 가상 머신(404)을 포함하는 시스템(400)을 도시한다. 선택적으로, 시스템(400)은 도 1-3의 기능 및 아키텍처의 컨텍스트에서 구현될 수 있다. 그러나, 시스템(400)은 임의의 원하는 환경에서 구현될 수 있음은 물론이다. 또한, 전술한 정의는 본 설명 동안 적용될 수 있다.
도시된 바와 같이, 시스템(400)은 하나 이상의 보안 임베디드 프로세서(406) 및 이 임베디드 프로세서(406)에 의해 호스트되는 보안 가상 머신(404)을 포함하는 GPU(402)를 포함한다. 보안 가상 머신(404)은 비디오 스트림 취급(handling) 및 패칭(patching)에서의 프리미티브들(primitives)뿐만 아니라 암호 프리미티브를 수행할 수 있는 바이트 코드 명령어들을 지원하는 서명된 보안 마이크로코드 해석기를 포함할 수 있다. 해석기를 이용하여, 가상 머신(404)은 플레이어 ISV에 의해 제공되는 프로그램을 해석하는 해석기로 기능할 수 있다.
보안 가상 머신(404)은 AES 또는 SHA-1 프리미티브 등과 같은 하드웨어 암호 엔진을 더 포함할 수 있다. 또한, 보안 가상 머신(404)은 엔진에 액세스불가능하고 가상 머신(404)의 외부로부터(예컨대, CPU 또는 GPU 렌더러(renderer) 등으로부터) 액세스될 수 있는 기밀 메모리의 보안 샌드박스(secure sandbox)를 포함할 수 있다.
또한, 보안 바이트 코드는 가상 머신(404)에서의 실행을 위해 제공된다. 이 경우, 보안 바이트 코드는 GPU(402)로 ISV에 의해 제공되는 프로그램과 연관된 바이트 코드이다. 예컨대, 바이트 코드는 허가된 콘텐츠 메커니즘(licensed content mechanism)의 핵심 작업을 수행하기 위해 허가된 플레이어 ISV에 의해 생성될 수 있다. 따라서, 바이트 코드는 가상 머신(404) 내에서 콘텐츠 및 키의 처리를 수행하기 위해 이용될 수 있는데, 콘텐츠 및 키는 GPU(402)에 의해 수신된다.
보안 가상 머신(404)은 또한 서명된 ISV 코드가 보안 가상 머신(404) 내에서 실행될 수 있게 하는 인정된 권한자에 의해 서명된 인증서와 칩 개인 및 공개 키에 액세스한다. 또한, 이 키들은 플레이어 ISV가 ISV 비밀을 안전하게 암호화하고 이 비밀이 신뢰성있는 가상 머신(404) 내부에서 일단 사용되면 오직 볼 수 있게 되는 것을 보장할 수 있도록 할 수 있다. 이 키들은 또한 플레이어 ISV가 콘텐츠 디코드의 실행을 수행하기 위해 신뢰성있는 엔드 포인트로서 능력있는 GPU를 인정할 수 있게 한다.
보안 가상 머신(404)은 또한 보안 가상 머신(404)의 키 부분을 암호화하는 능력을 허용하여 서로 다른 콘텐츠 스트림을 지원하는 다른 보안 가상 머신(404) 컨텍스트와 교체되도록 실행 후 메모리로 페이지 아웃(paged-out)되도록 할 수 있다. 또한, 보안 가상 머신(404)의 콘텐츠는 비밀이 남겨지지 않도록 제거될 수 있다. 예컨대, 가상 머신(404)에 의해 처리되는 정보는 처리 후 삭제될 수 있다.
보안 가상 머신(404)은, 집합적으로 소프트웨어 콘텐츠 플레이어 벤더가 가상 머신(404)으로 보안 바이트 코드의 로딩을 협상할 수 있게 하는 CPU 상에서 실행되는 그래픽 드라이버(예컨대, 소프트웨어)를 더 포함할 수 있다. 또한, 보안 가상 머신(404)은 ISV 피허가자 포팅 타이틀 해독(ISV licensee porting title decryption)을 지원하고 프로그램(예컨대, 어셈블리 또는 C 등으로 기록됨)을 컴파일하고 해석기에 의해 지원되는 바이트 코드를 출력하는 데 필요한 툴 및 컴파일러를 포함할 수 있다.
도 5는 일 실시예에 따라 보안 가상 머신을 이용한 타이틀 키 추출 방법(500)을 도시한다. 선택적으로, 본 방법(500)은 도 1-4의 기능 및 아키텍처의 컨텍스트에서 구현될 수 있다. 그러나, 본 방법(500)은 임의의 원하는 환경에서 구현될 수 있음은 물론이다. 또한, 전술한 정의는 본 설명 동안 적용될 수 있다.
동작시, 플레이어 ISV 코드 또는 프로그램은 기밀 키 그룹을 해독하는 프로 세스를 설명할 수 있다. 이 코드는 콘텐츠 스트림을 해독하기 위한 타이틀 키를 형성하기 위한 다른 콘텐츠 키 및 정책(policy)과 함께 사용될 수 있다. 이 경우, ISV 프로그램은 해독을 허용하기 위해 식별된 실행시간 변수(예컨대, 즉각적인 간접 변수, 로컬 변수, 스트림 및 버퍼 포인터 등)를 이용하는 해석기에 대한 명령을 포함할 수 있다. 이 프로그램은 GPU 및 ISV가 신뢰할 수 있다고 인정하는 키를 이용하여 서명될 수 있다.
일단 타이틀 키가 추출되면, 콘텐츠 스트림은 보안 가상 머신을 이용하여 해독될 수 있다. 도 6은 본 발명의 일 실시예에 따라 보안 가상 머신을 이용한 콘텐츠 스트림 해독 방법(600)을 도시한다. 선택적으로, 본 방법(600)은 도 1-5의 기능 및 아키텍처의 컨텍스트에서 구현될 수 있다. 그러나, 본 방법(600)은 임의의 원하는 환경에서 구현될 수 있음은 물론이다. 또한, 전술한 정의는 본 설명 동안 적용될 수 있다.
ISV 코드는 디스크, 네트워크 또는 다른 매체로부터 복사된 스트림의 콘텐츠를 해독하기 위해 타이틀 키 추출 동안 저장될 수 있는 타이틀 키를 이용하는 프로세스를 설명할 수 있다. 출력은 이후 처리를 위해 가상 머신 내부에 남아 있을 수 있다.
일단 콘텐츠 스트림이 해독되면, 콘텐츠 스트림은 보안 가상 머신을 이용하여 패치 및 재암호화될 수 있다. 도 7은 본 발명의 일 실시예에 따라 보안 가상 머신을 이용한 콘텐츠 스트림 패칭 및 재암호화 방법(700)을 도시한다. 선택적으로, 본 방법(700)은 도 1-6의 기능 및 아키텍처의 컨텍스트에서 구현될 수 있다. 그러나, 본 방법(700)은 임의의 원하는 환경에서 구현될 수 있음은 물론이다. 또한, 전술한 정의는 본 설명 동안 적용될 수 있다.
동작시, ISV 프로그램은 변환 디스크립터(transform descriptor)에 따라 콘텐츠 스트림을 패치하는 데 필요한 명령을 인캡슐레이트(encapsulate)할 수 있다. 콘텐츠 스트림은 오디오를 추가 처리를 위한 플레이어 ISV로 또는 오프칩 오디오 디코더로 리턴하기 위해 분리되어 재암호화될 수 있다.
선택적으로, 콘텐츠 스트림은 다음 온칩 비디오 디코더에서 소비될 비디오 포트로 분리될 수 있다. 이 경우, 콘텐츠는 암호화되지 않은 형태로 남아있을 수 있는데, 여기서 콘텐츠는 비디오 디코더 이외에는 액세스불가능한 특권있는 메모리(privileged memory) 영역에서 비밀리에 저장될 수 있다.
일 실시예에서, 플레이어 ISV에 의해 제공되는 프로그램은 해석기가 하나의 개별 동작으로서 완수하도록 개별 명령을 포함할 수 있다. 예컨대, 다양한 실시예에서, 이 명령은 표 1의 공통 동작에 대한 암호 프리미티브를 포함할 수 있다.
Figure 112009075809899-pat00001
일 실시예에서, 이 프리미티브는 GPU의 임베디드 제어기에서의 실행을 위해 최적화된 사전코딩된 루틴을 포함할 수 있다. 다른 실시예에서, 이 프리미티브는 성능에 민감한 동작을 직접 가속화하는 하드웨어 엔진에 의한 실행을 추출하는 인터페이스 래퍼(interface wrapper)일 수 있다.
다른 선택으로, 이 프리미티브는 보안 가상 머신에서 하우스키핑(housekeeping) 동작을 포함할 수 있다. 표 2는 일 실시예에 따라 일부 하우스키핑 동작을 나타낸다.
Figure 112009075809899-pat00002
일 실시예에서, Diffie-Helman 키 교환은 가상 머신에 의해 구현될 수 있다. 일 실시예에 따라, 해석된 코드로 기록된 단계별 Diffie-Helman 키 교환이 표 3에 도시된다.
Figure 112009075809899-pat00003
다른 실시예에서, 이 프로그램은 전체적인 프로세스 서브루틴을 형성하기 위해 중간 누산기를 이용하여 바이트-바이트 기초로 반복 동작을 수행하는 복잡한 동작 집합을 표현할 수 있다. 이러한 루프가 발생하는 경우, 서브루틴은 실행될 때 재해석을 요하지 않는 프로세서 마이크로코드로부터 만들어진 고유 동작을 이용하여 보다 효율적인 형태로 최적으로 다시 컴파일될 수 있다. 일단 선언되면, 서브루틴은 매크로 레벨에서 개별 단계로서 수행될 수 있다.
일 실시예에 따라, 가상 머신 서브루틴으로 기록된 RC4 암호화 알고리즘 동작의 일예가 표 4에 예시된다.
Figure 112009075809899-pat00004
시각 프로세스를 갖는 보안 가상 머신을 이용하는 것은 비디오 디코더 하드웨어가 이미 존재하는(예컨대, GPU 등에) 키 처리 및 스트림 파싱을 취급하기 위한 보안 실행 환경을 제공하여, CPU 내에서 및 버스를 통한 보호되지 않은 콘텐츠 및 키의 흐름이 회피된다. 또한, 보안 가상 머신의 사용은, GPU가 콘텐츠를 해독하는 키를 생성하는 프로그램을 가상 머신으로 전달함으로써 허가된 장치가 되는 것을 필요로 하지 않고 제3자 피허가자가 GPU 상에서 허가된 콘텐츠에 대한 보안 컴플라이언트 디코더(secure compliant decoder)를 생성하는 능력을 제공한다.
도 8은 본 발명의 일 실시예에 따라 콘텐츠 해독용 키를 생성하는 프로그램을 생성하는 방법(800)을 도시한다. 선택적으로, 본 방법(800)은 도 1-7의 기능 및 아키텍처의 컨텍스트에서 구현될 수 있다. 그러나, 본 방법(800)은 임의의 원하는 환경에서 수행될 수 있음은 물론이다. 또한, 전술한 정의는 본 설명 동안 적용될 수 있다.
도시된 바와 같이, 해석 언어 스펙(interpretive language specification)이 제공된다. 단계(802)를 참조한다. 이 경우, 플레이어 ISV에는 프로세서의 제조자에 의해 해석 언어 스펙이 제공된다. 예컨대, 언어 스펙은 해석기를 포함한 보안 가상 머신에 대한 스펙을 포함할 수 있다. 일 실시예에서, 이 스펙은 콘텐츠 해독용 키를 생성하는 프로그램의 생성을 위해 사용될 프로그래밍 언어를 포함할 수 있다.
프로그램이 이후 기록된다. 단계(804)를 참조한다. 예컨대, 이 프로그램은 해석 언어 스펙에 기초하여 플레이어 ISV에 의해 소스 코드로 기록될 수 있다. 이 프로그램은 이후 처리를 위해 컴파일러 및/또는 해석기와 같은 툴을 통해 실행된다. 단계(806)를 참조한다.
처리의 결과, 바이트 코드가 생성된다. 단계(808)를 참조한다. 이 바이트 코드는 실행 시간 동안 가상 머신에 의한 처리를 위해 사용되는 코드를 포함할 수 있다.
바이트 코드는 이후 암호화 서명 프로세스로 입력된다. 단계(810)를 참조한다. 일 실시예에서, 암호화 서명 프로세스는 프로세서 제조자에 의해 제공되는 프로세스일 수 있다. 암호화 서명 프로세스 구현 후, 임베드가능한(embeddable) 암호화된 이미지가 제공된다. 이 암호화된 이미지는 이후 ISV 플레이어의 프로그램으로 임베드될 수 있어서, 플레이어는 이 프로그램을 실행 시간 동작 동안 처리를 위한 GPU의 가상 머신에 제공할 수 있다.
도 9는 일 실시예에 따라 콘텐츠 해독용 키를 생성하는 프로그램을 보호하는 시스템(900)을 도시한다. 선택적으로, 본 시스템(900)은 도 1-8의 기능 및 아키텍처의 컨텍스트에서 구현될 수 있다. 그러나, 본 시스템(900)은 임의의 원하는 환경에서 구현될 수 있음은 물론이다. 또한, 전술한 정의는 본 설명 동안 적용될 수 있다.
동작시, 시스템(900)은 도 10에 방법(1000)으로 도시된 콘텐츠 해독용 키를 생성하는 프로그램을 보호하는 방법을 구현하는 데 이용될 수 있다. 도 10에 도시된 바와 같이, 애플리케이션은 서명을 위한 한 쌍의 키 PA 및 pA를 생성한다. 또한, GPU는 서명을 위한 한 쌍의 키 PG 및 pG와 암호화용 키 PS를 생성한다.
GPU는 이후 GPU의 서명 비밀키를 이용하여 애플리케이션의 서명 공개 키를 서명하여, 결과적으로 애플리케이션으로 전송될 수 있는 인증서(예컨대, CERTG 등)로 될 수 있다. 이 애플리케이션은 이후 가상 머신 프로그램을 암호화할 수 있다. 이 프로그램은 서명되고 컴파일될 수 있다.
실행 시간에, 이 애플리케이션은 임시 키 비밀(예컨대, KSK 등)을 구축할 수 있다. GPU는 또한 임시 키 비밀(예컨대, K'SK 등)을 도출할 수 있다. 암호화된 프로그램 및 키는 이후 애플리케이션으로부터 GPU로 전달된다. 해석기는 이후 애플리케이션의 인증서를 해독하여 검증하고 가상 머신 프로그램이 실행된다.
이 기술을 이용하여, 한 쌍의 개인 키 및 공개 키가 GPU 제공자에 의한 서명을 위해 생성될 수 있다. 개인 키는 내부 서명 서버에 위치할 수 있다. 공개 키는 API 스펙에 공개되어 보안 해석기 마이크로코드에 임베드될 수 있다. 하드웨어 비밀 또는 그 도출된 값은 이후 칩 비밀 키로 이용될 수 있고 대응하는 공개 키가 암호화를 위해 도출될 수 있다.
애플리케이션 제공자는 서명을 위한 자신의 한 쌍의 개인 키 및 공개 키를 개인적으로 생성할 수 있다. 애플리케이션 제공자는 공개 키를 이메일이나 ftp를 통해 GPU 제공자에게 전송할 수 있다. GPU 제공자는 자신의 서명 비밀키를 이용하여 애플리케이션 제공자의 서명 공개 키를 서명할 수 있다. 결과적인 서명은 GPU 제공자에 의해 발행된 애플리케이션 제공자의 서명 공개 키에 대한 인증서이다. 이 인증서는 애플리케이션 제공자에게 다시 전송될 수 있다.
애플리케이션 제공자는 일부 해석기 프로그램 및 매우 기밀인 라이센스 비밀(예컨대, 플레이어/장치 키 등)을 개인적으로 기록하여 이것을 바이너리(binary)로 컴파일할 수 있다. 애플리케이션 제공자는 GPU 제공자의 칩 공개 키 하에서 바이너리 프로그램을 개인적으로 암호화할 수 있다. 애플리케이션 제공자는 애플리케이션 제공자의 서명 비밀키 하에서 암호화된 바이너리 프로그램을 개인적으로 서명할 수 있다.
서명 및 애플리케이션 제공자의 인증서와 함께 암호화된 프로그램은 실행가능한 애플리케이션 제공자의 플레이어에서 정적으로 임베드될 수 있다. 실행 시간에, 애플리케이션 제공자는 GPU 내에서 온칩 난수 생성기(Random Number Generator; RNG)를 이용하여 임시 세션 키 비밀을 구축하고, 이를 이용하여 추가적으로 이미 정적으로 암호화된 프로그램을 실행 시간 암호화된 페이로드로 재암호화할 수 있다.
실행 시간에, GPU 상의 해석기는 이중으로 암호화된 페이로드, 서명 및 인증서를 로딩할 수 있다. 해석기는 GPU 제공자의 서명 공개 키를 이용하여 애플리케이션 제공자의 인증서를 검증할 수 있다. 해석기는 애플리케이션 제공자의 서명 공개 키를 이용하여 암호화된 프로그램을 검증할 수 있다. 해석기는 협상 동안에 GPU 내부에서 생성된 임시 세션키 비밀을 이용하여 실행시간 암호화된 페이로드를 해독하고, 이에 의해 정적으로 암호화된 프로그램(여전히 암호화된 형태임)을 추출할 수 있다.
해석기는 이후 하드웨어 비밀로부터 GPU 제공자의 칩 비밀키를 도출하고 해석된 프로그램의 비밀 및 콘텐츠/플레이어의 비밀을 포함하는 정적으로 암호화된 프로그램을 해독할 수 있다. 해석기는 이후 프로그램을 안전하게 실행하고 GPU 내부의 보안 가상 머신 내에서 매우 기밀인 콘텐츠 비밀을 디레퍼런스(dereference)할 수 있다.
임시 세션키를 생성할 때 사용되는 비밀이 난수 생성기로부터 도출되어 GPU 내에 비밀리에 유지될 수 있으므로, GPU 제공자의 칩 비밀 및 다른 서명 키를 아는 사람이라도 페이로드를 해독할 가망이 없다. ISV가 ISV의 코드를 실행하는 해석기와 GPU의 서명을 인식한다고 하면, ISV는 해석기 및 보안 가상 머신 환경을 신뢰한다고 가정할 수 있어서, ISV는 기밀 정보를 누설하지 않을 것이라고 믿는다. 추가적으로, 가상 머신에서 실행되는 코드가 ISV에 의해 기록되고 실행전 서명/검증된다고 가정하면, ISV는 GPU 제공자에게도 어떠한 콘텐츠나 기밀 비밀도 누설되지 않음을 보장하는 환경을 생성할 수 있다.
페이로드 암호화 프로세스에서 사용되는 비밀을 노출할 위험을 더 경감하기 위해, 추가적인 피허가자 비밀이 ISV 피허가자, 제품 피허가자 또는 시스템 벤더와 같은 제2 또는 제3 당사자에 의해 GPU로 직접 융합될 수 있다. GPU 제공자에게도 비밀이 알려지지 않음을 더 보장하기 위해, 프로그래밍 프로세스는 GPU가 GPU 제공자의 제조 및 재고 프로세스를 종료한 후 임의 시간에 비밀이 설정될 수 있도록 한다. GPU 벤더는 예컨대 GPU가 시스템 벤더의 설비에서의 조립 동안에 보드에 위치된 후 GPU로의 비밀의 독립 프로그래밍을 허용하도록 액세스를 제공한다. 예컨대, 일 실시예에서, 이 비밀은 1회 칩 퓨즈에 포함될 수 있는데, 이것은 피허가자 비밀의 값 비트와 일치하는 비트 패턴으로 GPU 패킷의 특정 핀에 더 높은 전압의 인가를 통해 끊어진다. 일 실시예에서, GPU로부터 판독될 수 없고 암호 및 GPU의 다른 내부 암호 프로세스에 의해 키로서 또는 다른 키와 조합하여서만 사용될 수 있는 기록 전용 레지스터에서 상기 퓨즈의 인가에 의해 상기 비밀은 기밀로 유지된다. 일 실시예에서, 피허가자 비밀은 설계에 의해 일반 텍스트 입력 및 암호 텍스트 출력이 외부에서 가시적이더라도 키 값의 복구를 허용하지 않는 AES 암호의 키 값으로 사용된다.
추가적으로 퓨즈-비밀(fuse-secret)의 프로그래밍은, 비밀을 손상시키기 위해 알려진 것으로 재프로그래밍되는, 후속의 변경이나 공격으로부터 보호하기 위해 1회 설정으로 제한될 수 있다. 일 실시예에서, 프로그래밍된 비밀이 GPU에 의해 사용될 수 있게 하는 퓨즈는 피허가자 비밀의 프로그래밍 완료시 스스로 끊어지고 일단 끊어지면 상기 퓨즈는 피허가자 비밀 퓨즈의 후속 프로그래밍을 허용하지 않는다.
피허가자 비밀은 페이로드 생성 및 추출시 사용되는 암호화 및 해독 키를 형성하기 위해 다른(판독불가) GPU 비밀과 간접적으로 조합될 수 있다. 피허가자 비밀이 독립적으로 프로그래밍될 수 있고 GPU 제공자가 이러한 비밀을 모르고 있다고 가정하고, 이 비밀이 보안 가상 머신 내의 GPU 하드웨어에 의해 실행시간에 간접적으로만 조합된다고 가정하면, 제2 당사자의 기밀 프로그램, 알고리즘 및 키는 기밀 칩 비밀에 대해 상세한 지식을 가진 사람에 대해 더욱 강화된다.
따라서, 일 실시예에 따르면, 적어도 하나의 프로세서, 제2 당사자의 프로그램을 처리하는 프로세서에서 구현되는 제1 당사자의 적어도 하나의 보안 가상 머신, 및 출력용 제3 당사자의 콘텐츠를 처리하는 적어도 하나의 프로그램을 포함하는 장치가 제공될 수 있다. 이 경우, 제1 당사자는 보안 가상 머신 및/또는 프로세서를 제공하는 임의의 개체(entity)나 개인을 포함할 수 있고, 제2 당사자는 소프트웨어를 허가하는 임의의 개체나 개인(예컨대, 독립 소프트웨어 벤더 피허가자 등)을 포함할 수 있고, 제3 당사자는 콘텐츠를 허가하는 임의의 개체나 개인을 포함할 수 있다. 다양한 실시예에서, 제1, 제2, 및 제3 당사자는 동일하거나 다를 수 있고 임의의 개인이나 개체를 포함할 수 있음은 물론이다.
이 장치를 이용하여, 잔여 기밀 프로그램 정보, 처리되고 있는 정보, 및 적어도 하나의 가상 머신 각각에 의해 생성되는 임시 변수는 처리 후 삭제될 수 있다. 일 실시예에서, 복수의 보안 가상 머신은 개별 컨텍스트 내의 프로세서에서 구현될 수 있다. 이 경우, 복수의 보안 가상 머신 사이의 정보 공유가 제한될 수 있다.
예컨대, 임시 정보의 종류 및 복수의 보안 가상 머신에 의해 처리되고 있는 정보의 저장이 제한될 수 있다. 이 정보는 또한 보호되는 콘텐츠의 해독에서 사용되는 키 및 중간 암호 값을 포함할 수 있다.
다른 실시예에서, 적어도 하나의 가상 머신은 보호되는 콘텐츠를 처리하기 위해 클라이언트 제공 프로그램(예컨대, 제2 당사자의 프로그램 등)을 실행하기 위해 제공될 수 있다. 이 경우, 클라이언트 제공 프로그램은 제3 당사자의 콘텐츠를 처리할 때 클라이언트 제공 프로그램에 의해 사용되는 알고리즘 세부사항, 비밀, 및 키의 기밀성을 보장하기 위해 제2 당사자에 의해 암호화될 수 있다. 클라이언트 제공 프로그램은 추가적으로 클라이언트 제공 프로그램의 무결성(integrity)의 검증을 허용하기 위해 제2 당사자에 의해 서명될 수 있고 클라이언트 제공 프로그램의 소스의 진정성(authenticity)이 검증될 수 있게 하는 인증서를 포함할 수 있다.
일 실시예에서, 제3 당사자의 콘텐츠는 적어도 하나의 가상 머신에 의해 처리되기 전에 제3 당사자에 의해 별개로 암호화되었을 수 있다. 이 경우, 클라이언트 제공 프로그램, 기밀 알고리즘, 및 비밀은 적어도 하나의 가상 머신 내에서의 실행을 허용하기 전에 포함된 서명 및 인증서를 검증함으로써 해독 및 인증될 수 있다.
다른 선택으로서, 클라이언트 제공 프로그램을 처리하는 단계는 제3 당사자의 콘텐츠를 해독하는 단계를 포함할 수 있다. 이 처리는 제3 당사자의 콘텐츠의 하나 이상의 부분 또는 제3 당사자의 콘텐츠 내의 스트림들 중 적어도 하나를 재암호화하는 단계를 더 포함할 수 있다. 하나의 경우, 재암호화는 제3 당사자의 콘텐츠가 적어도 하나의 가상 머신으로부터 나가기(exit) 전에 발생할 수 있다. 다른 경우, 재암호화는 제3 당사자의 콘텐츠가 프로세서로부터 출력된 후에 발생할 수 있다.
일 실시예에서, 클라이언트 제공 프로그램은 애플리케이션으로부터 수신될 수 있고, 클라이언트 제공 프로그램은 프로세서와 애플리케이션 사이에 보안 통신 채널을 구축할 수 있다. 이 경우, 프로세서와 애플리케이션 사이의 통신 채널은 프로세서에서 도출된 암호 값 및 적어도 하나의 인증서를 이용하여 보호될 수 있다.
다른 실시예에서, 적어도 하나의 가상 머신은 애플리케이션에 의해 제공되는 보호된 콘텐츠 처리 프로그램의 해석기로 기능할 수 있다. 또한, 프로세서는 적어도 하나의 보안 프로세서를 포함할 수 있고 처리된 콘텐츠를 그래픽 프로세서, 비디오 프로세서 또는 오디오 프로세서 중 적어도 하나에 제공하도록 구성될 수 있다.
다른 실시예에서, 프로세서는 프로그램 실행 동안 도출된 중간 암호 값 및 패키지로부터 풀린 콘텐츠 키를 위한 보안 기밀 저장장소를 포함할 수 있다. 임의의 경우, 프로세서의 적어도 하나의 가상 머신 내 제2 당사자의 프로그램에 의한 제3 당사자의 콘텐츠의 처리는 프로세서가 허가된 비밀을 포함하거나 이전에 구현된 허가된 알고리즘을 가질 것을 요하지 않을 수 있다. 적어도 하나의 가상 머신의 설계 및 적어도 하나의 가상 머신 내 제2 당사자의 프로그램에 의한 제3 당사자의 콘텐츠의 처리는 라이센스 컴플라이언스 및 강건성 규칙에 대해 제2 당사자에 의해 검토되어 이에 의해 제3 당사자의 콘텐츠에 대한 적합성의 결정이 허용될 수 있다.
또한, 장치를 사용함으로써, 제3 당사자의 콘텐츠 및 제3 당사자의 콘텐츠를 해독하는 기밀 키를 생성하기 위해 사용되는 제2 당사자의 프로그램이 프로세서(예컨대, 제1 당사자에 의해 제조됨)에서 수신될 수 있고, 제2 당사자의 프로그램은 제3 당사자의 콘텐츠 해독을 위한 프로세서를 이용하여 실행될 수 있다. 이 경우, 제3 당사자의 콘텐츠 해독은 제2 당사자에 제공되는 기밀 알고리즘 및 키 정보의 사용을 필요로 할 수 있다. 선택적으로, 제3 당사자의 콘텐츠를 해독하기 위해 사용되는 기밀 키 및 알고리즘은 제2 당사자에 의해 재암호화될 수 있다. 기밀 키는 프로세서를 이용하여 해독될 수도 있다.
일 실시예에서, 기밀 실행시간 값, 중간 암호 값, 및 제2 당사자의 프로그램으로부터 생성된 기밀 키는 기밀 기록 전용 프로세서 레지스터에 및/또는 프로세서 동작에 의해서만 간접적으로 디레퍼런싱되도록 구성되고 판독불가능하도록 구성된 인덱싱된 버퍼(indexed buffer)에 저장될 수 있다. 이 경우, 기록 전용 프로세서 레지스터 및 인덱싱된 버퍼는 제2 당사자의 프로그램이 종료된 후에 제거되어, 후속 가상 머신 세션이 잔여 비밀로 액세스하지 않음을 보장할 수 있다.
선택적으로, 기밀 키는 제3 당사자의 콘텐츠와 연관된 적어도 하나의 콘텐츠 키 및 제3 당사자의 콘텐츠 및 제2 당사자의 프로그램이 프로세서에서 수신되는 제2 당사자의 애플리케이션과 연관된 적어도 하나의 애플리케이션 키를 포함할 수 있다. 일 실시예에서, 제2 당사자의 애플리케이션은 콘텐츠 플레이어를 포함할 수 있다.
또한, 프로세서는 제3 당사자의 적어도 하나의 콘텐츠 키 및 제2 당사자의 적어도 하나의 애플리케이션 키를 처리하여 적어도 하나의 타이틀 키를 생성할 수 있다. 이 경우, 타이틀 키는 제3 당사자의 콘텐츠를 해독하기 위해 사용될 수 있다.
일 실시예에서, 제2 당사자의 프로그램은 제3 당사자의 콘텐츠 및 제2 당사자의 프로그램이 수신되는 제2 당사자의 애플리케이션에 의해 사용될 수 있다. 이 경우, 제2 당사자의 프로그램은 제3 당사자의 콘텐츠를 해독하기 위해 적용가능할 수 있고 제3 당사자의 콘텐츠에 기초하여 제2 당사자의 애플리케이션에 의해 검색될 수 있다.
일부 경우, 제2 당사자의 프로그램 및 콘텐츠 키는 제2 당사자의 애플리케이션에 의해 검색되기 전에 암호화되었을 수 있다. 이 경우, 제2 당사자의 프로그램 및 콘텐츠 키는 제2 당사자의 애플리케이션에 의해 검색되기 전에 공개 키를 이용하여 암호화될 수 있다. 선택적으로, 제2 당사자의 프로그램 및 콘텐츠 키의 암호화를 위한 하나 이상의 키가 프로세서의 제조자(예컨대, 제1 당사자 등)에 의해 제공될 수 있다. 다른 선택으로, 제2 당사자의 프로그램은 제2 당사자의 애플리케이션과 연관된 분배 바이너리 내에서 한 패키지에 조합되기 전에 암호화될 수 있다.
일 실시예에서, 제2 당사자의 애플리케이션은 프로세서로 전달되기 전에 제2 당사자의 프로그램 및 기밀 키를 포함하는 패키지를 더 재암호화할 수 있다. 일 실시예에서, 프로세서 내부의 가상 머신 내에서 실행될 때까지 해독되지 않은 암호화된 프로그램 패키지 내에 기밀 알고리즘과 기밀 키를 포함함으로써 기밀 알고리즘 및 기밀 키의 중앙 처리 장치로의 노출이 방지될 수 있다는 것에 주목해야 한다. 이 경우, 제2 당사자의 애플리케이션과 제2 당사자의 프로그램이 해독될 프로세서 사이에서 공개 키 교환에 의해 생성된 임시값을 이용하여 패키지를 암호화함으로써 기밀 알고리즘 및 기밀 키 비밀의 잠재적인 노출이 더 방지될 수 있다.
또한, 프로세서에 위치하고 제2 당사자의 프로그램의 암호화에 의해 프로세서 벤더로의 노출없이 사용되는 제2 당사자 라이센스 비밀 또는 제3 당사자 피허가자 비밀의 사용을 통해 기밀 알고리즘 및 기밀 키의 노출이 방지될 수 있다. 이 경우, 제2 당사자 라이센스 비밀 및 제3 당사자 피허가자 비밀의 프로그래밍은 1회 프로그래밍 메커니즘(예컨대, 컴퓨터 코드 등)의 사용을 통해 프로세서로 일단 프로그램되면 변경으로부터 보호될 수 있다.
다른 실시예에서, 이 장치를 사용함으로써, 제3 당사자의 콘텐츠를 암호화하고 처리하는 패키지가 제2 당사자에 의해 생성될 수 있는데, 여기서 이 패키지는 프로세서를 이용하여 실행될 수 있는 프로그램을 포함한다. 또한, 이 프로그램은 이 프로그램과 연관된 비밀의 기밀성을 보장하는 암호화를 이용하여 보호될 수 있다. 또한, 이 프로그램은 이 프로그램의 소스의 진정성을 보장하기 위해 서명될 수 있다. 또한, 프로그램의 소스의 인증서 및 프로그램을 보호한 개체가 검증될 수 있다.
프로세서는 그래픽 프로세서, 비디오 프로세서, 및/또는 오디오 프로세서 등을 포함할 수 있다. 또한, 프로세서는 제2 당사자 애플리케이션 제공 패키지, 프로그램, 기밀 알고리즘, 콘텐츠 키 및 사유 비밀을 안전하게 해독할 수 있는 보안 프로세서 컨텍스트를 포함할 수 있다.
일부 경우, 제3 당사자 콘텐츠는 도용 및 복사로부터 보호되어야 할 만큼 제3 당사자에게 가치가 있는 것일 수 있다. 다양한 실시예에서, 패키지는 제3 당사자의 콘텐츠의 해독 및 처리에 필요한 프로그램, 기밀 알고리즘, 콘텐츠 키 및 사유 비밀을 포함할 수 있다. 또한, 선택적으로, 이 패키지는 암호화됨으로써 보호될 수 있다.
일 실시예에서, 프로그램, 기밀 알고리즘, 콘텐츠 키, 및 사유 비밀은 프로세서가 제3 당사자 콘텐츠를 수신하는 제2 당사자의 콘텐츠 피허가자 플레이어 애플리케이션에 의해 제공될 수 있다. 이 경우, 프로그램, 기밀 알고리즘, 콘텐츠 키, 및 사유 비밀을 포함하는 패키지는 제2 당사자 애플리케이션 제공자에 의해 보호되고 애플리케이션에서 임베드될 수 있다.
일 실시예에서, 애플리케이션은 사용자 선택 콘텐츠를 처리하고 출력하기 위해 적어도 하나의 플레이어 및 패키지, 또는 적어도 하나의 다른 패키지를 포함할 수 있다. 또한, 제3 당사자의 콘텐츠를 해독 및 처리하기 위해 사용되는 패키지는 제3 당사자의 콘텐츠의 종류 및 포맷에 기초하여 애플리케이션 내에서부터 검색될 수 있다. 또한, 패키지, 프로그램, 기밀 알고리즘, 콘텐츠 키, 및 사유 비밀은 애플리케이션에 의해 검색되기 전에 암호화될 수 있다.
이 경우, 패키지, 프로그램, 기밀 알고리즘, 콘텐츠 키, 및 사유 비밀은 애플리케이션에서 임베드되기 전에 하나 이상의 공개 및 개인 키를 이용하여 암호화되고 서명될 수 있다. 공개 키 및 인증서는 제2 당사자 애플리케이션 벤더와 프로세서의 벤더 사이에서 교환될 수 있다. 선택적으로, 이 프로그램은 프로세서에서 임베드되는 피허가자 비밀을 이용하여 암호화될 수 있다.
일 실시예에서, 패키지는 애플리케이션에 의해 추출된 후 실행시간에 암호화될 수 있다. 이 경우, 프로그램은 의사난수 생성기를 이용하여 생성된 임시 키 및 프로세서에만 저장된 비밀을 이용하여 암호화될 수 있다. 또한, 이 프로그램은 의사난수 생성기를 이용하여 생성된 임시 키 및 애플리케이션에서만 저장된 정보를 이용하여 암호화될 수 있다.
다른 선택으로, 이 프로그램은 애플리케이션과 프로세서 벤더 사이에 교환되는 적어도 하나의 인증서의 적어도 하나의 키를 이용하여 암호화될 수 있다. 일 실시예에서, 이 프로그램은 애플리케이션과 프로세서 사이에서 교환되는 적어도 하나의 인증서의 적어도 하나의 키를 이용하여 서명될 수 있다. 이 경우, 프로세서 벤더에게 알려지지 않은 피허가자 비밀이 프로세서에서 임베드될 수 있는데, 여기서 피허가자 비밀은 프로세서 벤더에 의해 프로세서로부터 추론되거나 및/또는 다시 판독될 수 없다. 일부 경우, 피허가자 비밀은 1회만 기록될 수 있고 침입자가 프로세서에 저장된 비밀을 변경하여 비밀을 도출하거나 손상시킬 수 없음을 보장하기 위해 프로그래밍 후 변경 또는 수정될 수 없을 수 있다.
도 11은 다양한 이전 실시예의 다양한 아키텍처 및/또는 기능이 구현될 수 있는 예시적인 시스템(1100)을 도시한다. 도시된 바와 같이, 통신 버스(1102)에 연결되는 적어도 하나의 호스트 프로세서(1101)를 포함하는 시스템(1100)이 제공된다. 시스템(1100)은 또한 메인 메모리(1104)를 포함한다. 제어 로직(소프트웨어) 및 데이터는 랜덤 액세스 메모리(RAM) 형태를 가질 수 있는 메인 메모리(1104)에 저장된다.
시스템(1100)은 또한 그래픽 프로세서(1106) 및 컴퓨터 모니터와 같은 디스플레이(1108)를 포함한다. 일 실시예에서, 그래픽 프로세서(1106)는 복수의 쉐이더(shader) 모듈, 래스터화(rasterization) 모듈 등을 포함할 수 있다. 각 모듈은 그래픽 처리 유닛(GPU)을 형성하기 위해 단일 반도체 플랫폼에 위치할 수도 있다.
본 설명에서, 단일 반도체 플랫폼은 하나의 단일 반도체 기반 집적회로 또는 칩을 가리킬 수 있다. 단일 반도체 플랫폼이라는 용어는 온칩 동작을 시뮬레이트하는 증가된 연결성을 갖는 멀티칩 모듈을 가리킬 수 있고, 종래의 중앙 처리 장치(CPU) 및 버스 구현을 이용하는 것에 비해 상당한 개선을 가져올 수 있다. 다양한 모듈이 사용자의 희망에 따라 별개로 또는 다양한 조합의 반도체 플랫폼으로 위치할 수 있음은 물론이다.
시스템(1100)은 보조 저장장치(1110)를 포함할 수 있다. 보조 저장장치(1110)는 예컨대 하드 디스크 드라이브 및/또는 플로피 디스크 드라이브, 자기 테이프 드라이브, 컴팩트 디스크 드라이브 등을 나타내는 분리형 저장 드라이브를 포함한다. 분리형 저장 드라이브는 잘 알려진 방식으로 분리형 저장 유닛으로부터 판독하거나 및/또는 이에 기록한다.
컴퓨터 프로그램 또는 컴퓨터 제어 로직 알고리즘은 메인 메모리(1104) 및/또는 보조 저장장치(1110)에 저장될 수 있다. 이러한 컴퓨터 프로그램은 실행될 때 시스템(1100)이 다양한 기능을 수행할 수 있게 한다. 메모리(1104), 저장장치(1110) 및/또는 임의의 다른 저장장치가 컴퓨터 판독 가능한 매체의 예로 가능하다.
일 실시예에서, 다양한 이전의 도면의 아키텍처 및/또는 기능이 호스트 프로세서(1101), 그래픽 프로세서(1106), 호스트 프로세서(1101) 및 그래픽 프로세서(1106)의 능력 중 적어도 일부가 가능한 집적회로(도시되지 않음), 칩셋(즉, 관련 기능 등을 수행하는 유닛으로서 작동하고 판매되도록 설계된 일군의 집적 회로), 및/또는 이에 관한 임의의 다른 집적 회로의 컨텍스트에서 구현될 수 있다.
또한, 다양한 이전의 도면의 아키텍처 및/또는 기능은 일반 컴퓨터 시스템, 회로기판 시스템, 오락용 게임 콘솔 시스템, 애플리케이션 특정 시스템, 및/또는 임의의 다른 원하는 시스템의 컨텍스트에서 구현될 수 있다. 예컨대, 시스템(1100)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 및/또는 임의의 다른 종류의 로직의 형태를 취할 수 있다. 또한, 시스템(1100)은 PDA(personal digital assistant) 장치, 이동전화 장치, 텔레비전 등을 포함하지만 이에 한정되지 않는 다양한 다른 장치의 형태를 취할 수 있다.
또한, 도시되지는 않았지만, 시스템(1100)은 통신 목적을 위한 네트워크(예컨대, 전자통신 네트워크, LAN, 무선 네트워크, 인터넷과 같은 WAN, 피어-투-피어 네트워크, 케이블 네트워크 등)에 결합될 수 있다.
다양한 실시예가 전술되었지만, 이들은 예시적인 목적으로 제시된 것이며 한정하기 위한 것이 아님을 이해해야 한다. 따라서, 바람직한 실시예의 폭 및 범위는 전술한 예시적인 실시예 중 임의의 것에 의해 한정되어서는 안 되며, 이하의 청구범위 및 그 균등물에 따라서만 정의되어야 한다.
도 1a는 일 실시예에 따라 프로세서를 이용하여 콘텐츠 해독용 키를 생성하는 프로그램을 실행하는 방법을 도시하는 도면.
도 1b는 일 실시예에 따라 출력용 콘텐츠를 처리하는 프로세서 상에 구현되는 보안 가상 머신(secure virtual machine: SVM)을 도시하는 도면.
도 2는 일 실시예에 따라 프로세서를 이용하여 콘텐츠 해독용 키를 생성하는 프로그램을 생성, 보호(securing) 및 실행하는 시스템을 도시하는 도면.
도 3은 일 실시예에 따라 해석기를 이용하여 수신 프로그램 및 콘텐츠를 해석하는 방법을 도시하는 도면.
도 4는 일 실시예에 따라 수신 프로그램 및 콘텐츠 해석을 위한 프로세서 및 보안 가상 머신을 포함하는 시스템을 도시하는 도면.
도 5는 일 실시예에 따라 보안 가상 머신을 이용한 타이틀 키 추출 방법을 도시하는 도면.
도 6은 일 실시예에 따라 보안 가상 머신을 이용한 콘텐츠 스트림 해독 방법을 도시하는 도면.
도 7은 일 실시예에 따라 보안 가상 머신을 이용한 콘텐츠 스트림 패칭 및 재암호화 방법을 도시하는 도면.
도 8은 일 실시예에 따라 콘텐츠 해독용 키를 생성하는 프로그램을 생성하는 방법을 도시하는 도면.
도 9는 일 실시예에 따라 콘텐츠 해독용 키를 생성하는 프로그램을 보호하는 시스템을 도시하는 도면.
도 10은 일 실시예에 따라 콘텐츠 해독용 키를 생성하는 프로그램을 생성 및 보호하는 방법을 도시하는 도면.
도 11은 다양한 이전 실시예의 다양한 아키텍처 및/또는 기능이 구현될 수 있는 예시적인 시스템을 도시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
152: 시각 프로세서
150: 보안 가상 머신
200: 그래픽 프로세서
202: 콘텐츠
204: 플레이어
206: 프로그램
208: 해석기
210: 타이틀 키
212: 디멀티플렉서
214: 재암호화 오디오 모듈
216: 해독 모듈
218: 오디오 스택
220: 재암호화 비디오 모듈
222: 비디오 디코드 모듈
224: 프레임 버퍼
1101: 중앙 프로세서
1104: 메인 메모리
1110: 보조 저장장치
1102: 버스
1106: 그래픽 프로세서
1108: 디스플레이

Claims (22)

  1. 적어도 하나의 프로세서;
    제2 당사자의 프로그램을 처리하기 위해 상기 프로세서에서 구현되는 제1 당사자의 적어도 하나의 보안 가상 머신(secure virtual machine); 및
    제3 당사자의 콘텐츠를 처리하고 출력하기 위해 컴퓨터 판독 가능한 매체에 수록되는 적어도 하나의 프로그램
    을 포함하는 장치.
  2. 제1항에 있어서, 잔여 기밀 프로그램 정보, 처리중인 정보, 및 상기 적어도 하나의 보안 가상 머신 각각에 의해 생성되는 임시 변수들이 상기 제2 당사자의 상기 프로그램을 처리한 후에 삭제되는 장치.
  3. 제1항에 있어서, 상기 적어도 하나의 보안 가상 머신이 개별 컨텍스트(context) 내에서 상기 프로세서 상에 구현되어, 상기 적어도 하나의 보안 가상 머신 사이의 정보의 공유가 제한되는 장치.
  4. 삭제
  5. 제3항에 있어서, 상기 적어도 하나의 보안 가상 머신 사이의 정보의 공유는 임시 정보의 종류들, 및 상기 적어도 하나의 보안 가상 머신에 의해 처리중인 정보의 저장을 포함하는 장치.
  6. 제3항에 있어서, 상기 정보는 보호되는 콘텐츠의 해독에 사용되는 키들 및 중간 암호 값들을 포함하는 장치.
  7. 제1항에 있어서, 상기 적어도 하나의 보안 가상 머신은 보호되는 콘텐츠를 처리하는 클라이언트 제공 프로그램을 실행하기 위해 제공되는 장치.
  8. 제7항에 있어서, 상기 클라이언트 제공 프로그램은 상기 제3 당사자의 상기 콘텐츠의 처리시에 상기 클라이언트 제공 프로그램에 의해 사용되는 알고리즘 세부사항들, 비밀들 및 키들의 기밀성을 보장하기 위해 상기 제2 당사자에 의해 암호화되는 장치.
  9. 제8항에 있어서, 상기 클라이언트 제공 프로그램은 상기 클라이언트 제공 프로그램의 보전(integrity)의 검증을 허용하기 위해 상기 제2 당사자에 의해 추가적으로 서명되고 상기 클라이언트 제공 프로그램의 소스의 진정성(authenticity)이 검증될 수 있게 하는 인증서를 포함하는 장치.
  10. 제7항에 있어서, 상기 제3 당사자의 상기 콘텐츠는 상기 적어도 하나의 보안 가상 머신에 의해 처리되기 전에 상기 제3 당사자에 의해 별개로 암호화된 장치.
  11. 제10항에 있어서, 패키지에 포함된 상기 클라이언트 제공 프로그램, 기밀 알고리즘 및 비밀들은, 상기 적어도 하나의 보안 가상 머신 내에서의 실행을 허용하기 전에, 상기 클라이언트 제공 프로그램에 포함된 서명 및 인증서를 검증함으로써 해독되고 인증되는 장치.
  12. 제10항에 있어서, 상기 클라이언트 제공 프로그램의 처리는 상기 제3 당사자의 상기 콘텐츠를 해독하는 것을 포함하는 장치.
  13. 제12항에 있어서, 상기 처리는 상기 제3 당사자의 상기 콘텐츠의 하나 이상의 부분 또는 상기 제3 당사자의 상기 콘텐츠 내의 스트림들 중 적어도 하나를 재암호화(re-encrypt)하는 것을 더 포함하는 장치.
  14. 제13항에 있어서, 상기 재암호화는 상기 제3 당사자의 상기 콘텐츠가 상기 적어도 하나의 보안 가상 머신으로부터 나가기(exit) 전에 발생하는 장치.
  15. 제13항에 있어서, 상기 재암호화는 상기 제3 당사자의 상기 콘텐츠가 상기 프로세서로부터 출력된 후에 발생하는 장치.
  16. 제7항에 있어서, 상기 클라이언트 제공 프로그램은 애플리케이션으로부터 수신되고, 상기 클라이언트 제공 프로그램은 상기 프로세서와 상기 애플리케이션 사 이에 보안 통신 채널(secure communication channel)을 구축하는 장치.
  17. 제16항에 있어서, 상기 프로세서와 상기 애플리케이션 사이의 상기 통신 채널은 상기 프로세서에서 도출되는 암호 값들 및 적어도 하나의 인증서를 이용하여 보호되는 장치.
  18. 제1항에 있어서, 상기 적어도 하나의 보안 가상 머신은 애플리케이션에 의해 제공되는 보호된 콘텐츠 처리 프로그램의 해석기(interpreter)로 기능하는 장치.
  19. 제1항에 있어서, 상기 프로세서는 적어도 하나의 보안 프로세서를 포함하고 처리된 콘텐츠를 그래픽 프로세서, 비디오 프로세서 또는 오디오 프로세서 중 적어도 하나의 프로세서에 제공하도록 구성되는 장치.
  20. 제1항에 있어서, 상기 프로세서는 프로그램 실행 중에 도출된 중간 암호 값들 및 패키지로부터 풀린(unwrapped) 콘텐츠 키들을 위한 보안 기밀 저장장치(secure confidential storage)를 포함하는 장치.
  21. 제1항에 있어서, 상기 프로세서의 상기 적어도 하나의 보안 가상 머신 내에 상기 제2 당사자의 상기 프로그램에 의한 상기 제3 당사자의 상기 콘텐츠의 상기 처리는 상기 프로세서가 허가된 비밀들(licensed secrets)을 포함하거나 허가된 알고리즘들을 이전에 구현하였을 것을 요하지 않는 장치.
  22. 제1항에 있어서, 상기 적어도 하나의 보안 가상 머신의 설계 및 상기 적어도 하나의 보안 가상 머신 내에서 상기 제2 당사자의 상기 프로그램에 의한 상기 제3 당사자의 상기 콘텐츠의 상기 처리는 라이센스 컴플라이언스(compliance) 및 강건성(robustness) 규칙에 대해 상기 제2 당사자에 의해 검토되어, 상기 제3 당사자의 상기 콘텐츠에 대한 적합성의 결정이 허용되는 장치.
KR1020090121384A 2008-12-09 2009-12-08 프로세서의 가상 머신 내 기밀 콘텐츠의 보안 처리를 위한 방법 및 장치 KR101091465B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/331,295 US8868925B2 (en) 2008-12-09 2008-12-09 Method and apparatus for the secure processing of confidential content within a virtual machine of a processor
US12/331,295 2008-12-09

Publications (2)

Publication Number Publication Date
KR20100066404A KR20100066404A (ko) 2010-06-17
KR101091465B1 true KR101091465B1 (ko) 2011-12-07

Family

ID=42232519

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090121384A KR101091465B1 (ko) 2008-12-09 2009-12-08 프로세서의 가상 머신 내 기밀 콘텐츠의 보안 처리를 위한 방법 및 장치

Country Status (5)

Country Link
US (1) US8868925B2 (ko)
JP (1) JP5532291B2 (ko)
KR (1) KR101091465B1 (ko)
CN (1) CN101751529B (ko)
TW (1) TWI423136B (ko)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8135964B2 (en) * 2008-12-09 2012-03-13 Nvidia Corporation Apparatus, system, method, and computer program product for executing a program utilizing a processor to generate keys for decrypting content
US8266448B2 (en) * 2008-12-09 2012-09-11 Nvidia Corporation Apparatus, system, method, and computer program product for generating and securing a program capable of being executed utilizing a processor to decrypt content
US9124535B2 (en) 2009-07-17 2015-09-01 Honeywell International Inc. System for using attributes to deploy demand response resources
US9137050B2 (en) * 2009-07-17 2015-09-15 Honeywell International Inc. Demand response system incorporating a graphical processing unit
US9818073B2 (en) 2009-07-17 2017-11-14 Honeywell International Inc. Demand response management system
US8402280B1 (en) 2009-10-15 2013-03-19 Nvidia Corporation System, method, and computer program product for buffering in association with audio/video digital rights management (DRM) processing
TW201201037A (en) 2010-06-22 2012-01-01 Novatek Microelectronics Corp Electronic apparatus, display driving apparatus, and digital content displaying method
JP2012084071A (ja) 2010-10-14 2012-04-26 Toshiba Corp デジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置
US9053339B2 (en) 2010-10-27 2015-06-09 Hytrust, Inc. System and method for secure storage of virtual machines
TWI453624B (zh) * 2010-11-09 2014-09-21 Inst Information Industry 資訊安全防護主機
US8705729B2 (en) 2010-12-17 2014-04-22 Intel Corporation Audio content protection
WO2012082411A2 (en) * 2010-12-17 2012-06-21 Intel Corporation Audio content protection
US8625788B2 (en) 2011-01-05 2014-01-07 Intel Corporation Method and apparatus for building a hardware root of trust and providing protected content processing within an open computing platform
US9153001B2 (en) 2011-01-28 2015-10-06 Honeywell International Inc. Approach for managing distribution of automated demand response events in a multi-site enterprise
US8661527B2 (en) 2011-08-31 2014-02-25 Kabushiki Kaisha Toshiba Authenticator, authenticatee and authentication method
JP5275432B2 (ja) 2011-11-11 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
CN103988467B (zh) * 2011-11-16 2019-04-23 V-Key公司 确保软件加密技术安全的加密系统和方法
JP5204290B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、システム、及び装置
JP5100884B1 (ja) 2011-12-02 2012-12-19 株式会社東芝 メモリ装置
JP5112555B1 (ja) 2011-12-02 2013-01-09 株式会社東芝 メモリカード、ストレージメディア、及びコントローラ
JP5204291B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、装置、システム
JP5275482B2 (ja) 2012-01-16 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
CN102722678B (zh) * 2012-05-31 2016-06-15 北京朋创天地科技有限公司 一种虚拟桌面可执行程序保护机制
US9646153B2 (en) * 2012-08-08 2017-05-09 Intel Corporation Securing content from malicious instructions
US8656482B1 (en) * 2012-08-20 2014-02-18 Bitdefender IPR Management Ltd. Secure communication using a trusted virtual machine
US20140081704A1 (en) 2012-09-15 2014-03-20 Honeywell International Inc. Decision support system based on energy markets
US9389850B2 (en) 2012-11-29 2016-07-12 Honeywell International Inc. System and approach to manage versioning of field devices in a multi-site enterprise
US9201811B2 (en) 2013-02-14 2015-12-01 Kabushiki Kaisha Toshiba Device and authentication method therefor
US8984294B2 (en) 2013-02-15 2015-03-17 Kabushiki Kaisha Toshiba System of authenticating an individual memory device via reading data including prohibited data and readable data
US9052740B2 (en) * 2013-03-12 2015-06-09 Qualcomm Incorporated Adaptive data path for computer-vision applications
US10346931B2 (en) 2013-07-11 2019-07-09 Honeywell International Inc. Arrangement for communicating demand response resource incentives
US9989937B2 (en) 2013-07-11 2018-06-05 Honeywell International Inc. Predicting responses of resources to demand response signals and having comfortable demand responses
US9691076B2 (en) 2013-07-11 2017-06-27 Honeywell International Inc. Demand response system having a participation predictor
DE102014204417A1 (de) * 2014-03-11 2015-09-17 Siemens Aktiengesellschaft Vorrichtung und Verfahren zum Detektieren einer Manipulation an einem Programmcode
US9665078B2 (en) 2014-03-25 2017-05-30 Honeywell International Inc. System for propagating messages for purposes of demand response
US20150278512A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Virtualization based intra-block workload isolation
US20170132430A1 (en) * 2014-07-15 2017-05-11 Neil Sikka Apparatus for and Method of Preventing Unsecured Data Access
CN105760719B (zh) * 2014-12-19 2019-11-15 深圳市中兴微电子技术有限公司 一种密文数据解密方法及系统
WO2016112338A1 (en) * 2015-01-08 2016-07-14 Intertrust Technologies Corporation Cryptographic systems and methods
FR3038404B1 (fr) * 2015-07-02 2019-04-26 Viaccess Procede et systeme d'execution securisee de machines virtuelles par un ensemble de dispositifs programmables interconnectes
US10616184B2 (en) * 2016-06-30 2020-04-07 Intel Corporation Wireless display streaming of protected content
US10338951B2 (en) 2017-03-01 2019-07-02 Red Hat, Inc. Virtual machine exit support by a virtual machine function
US10541556B2 (en) 2017-04-27 2020-01-21 Honeywell International Inc. System and approach to integrate and manage diverse demand response specifications for multi-site enterprises
US10685106B2 (en) * 2018-03-10 2020-06-16 International Business Machines Corporation Protecting cognitive code and client data in a public cloud via deployment of data and executables into a stateless secure partition
US11068607B2 (en) * 2018-03-10 2021-07-20 International Business Machines Corporation Protecting cognitive code and client data in a public cloud via deployment of data and executables into a secure partition with persistent data
US10999304B2 (en) 2018-04-11 2021-05-04 Palo Alto Networks (Israel Analytics) Ltd. Bind shell attack detection
US11443072B2 (en) * 2018-06-29 2022-09-13 Microsoft Technology Licensing, Llc Peripheral device with resource isolation
US11126757B2 (en) 2018-10-19 2021-09-21 Microsoft Technology Licensing, Llc Peripheral device
US11184377B2 (en) 2019-01-30 2021-11-23 Palo Alto Networks (Israel Analytics) Ltd. Malicious port scan detection using source profiles
US11184378B2 (en) 2019-01-30 2021-11-23 Palo Alto Networks (Israel Analytics) Ltd. Scanner probe detection
US11184376B2 (en) * 2019-01-30 2021-11-23 Palo Alto Networks (Israel Analytics) Ltd. Port scan detection using destination profiles
KR20210016764A (ko) * 2019-08-05 2021-02-17 삼성전자주식회사 시스템 온 칩
CN114600108A (zh) * 2019-08-16 2022-06-07 边信联科技股份有限公司 异构处理器通过开放式连接器进行具有远距认证及信息独立的可信运算系统及方法
US11841961B2 (en) * 2020-07-02 2023-12-12 International Business Machines Corporation Management of computing secrets
US11799865B2 (en) * 2020-12-18 2023-10-24 Microsoft Technology Licensing, Llc Multi-chamber hosted computing environment for collaborative development between untrusted partners
US11308226B1 (en) * 2021-02-22 2022-04-19 CipherMode Labs, Inc. Secure collaborative processing of private inputs
US20220318096A1 (en) * 2021-03-30 2022-10-06 Acronis International Gmbh System and method for distributed-agent restoration of virtual machines
EP4145762B1 (en) 2021-09-06 2023-10-25 Axis AB Method and system for enabling secure processing of data using a processing application
US11799880B2 (en) 2022-01-10 2023-10-24 Palo Alto Networks (Israel Analytics) Ltd. Network adaptive alert prioritization system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008033584A (ja) 2006-07-28 2008-02-14 Nec Corp 情報処理システム、クライアント装置、プログラム、及びファイルアクセス制御方法

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1183841A (zh) * 1995-02-13 1998-06-03 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US5825879A (en) * 1996-09-30 1998-10-20 Intel Corporation System and method for copy-protecting distributed video content
US7200842B1 (en) * 1999-02-02 2007-04-03 Sun Microsystems, Inc. Object-oriented instruction set for resource-constrained devices
GB9922665D0 (en) * 1999-09-25 1999-11-24 Hewlett Packard Co A method of enforcing trusted functionality in a full function platform
US6598032B1 (en) * 2000-03-10 2003-07-22 International Business Machines Corporation Systems and method for hiding from a computer system entry of a personal identification number (pin) to a smart card
US6961858B2 (en) * 2000-06-16 2005-11-01 Entriq, Inc. Method and system to secure content for distribution via a network
US20020073025A1 (en) * 2000-12-08 2002-06-13 Tanner Robert G. Virtual experience of a mobile device
EP1323018A4 (en) * 2001-06-07 2004-07-07 Contentguard Holdings Inc PROTECTED CONTENT DELIVERY SYSTEM
MXPA03002097A (es) * 2001-07-13 2003-06-19 Sony Corp Dispositivo de grabacion de informacion de video y dispositivo de reproduccion.
US7272858B2 (en) * 2002-04-16 2007-09-18 Microsoft Corporation Digital rights management (DRM) encryption and data-protection for content on a relatively simple device
JP4675031B2 (ja) 2002-04-23 2011-04-20 パナソニック株式会社 サーバ装置及びプログラム管理システム
US20030217258A1 (en) * 2002-05-16 2003-11-20 International Business Machines Corporation Apparatus and method of using ephemeral asymmetric keys to exchange security data between hardware security modules
US20030229794A1 (en) * 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
US7174021B2 (en) * 2002-06-28 2007-02-06 Microsoft Corporation Systems and methods for providing secure server key operations
US7440574B2 (en) * 2003-06-11 2008-10-21 Hewlett-Packard Development Company, L.P. Content encryption using programmable hardware
US8838950B2 (en) * 2003-06-23 2014-09-16 International Business Machines Corporation Security architecture for system on chip
KR100950007B1 (ko) * 2003-06-27 2010-03-29 디즈니엔터프라이지즈,인크. 차세대 미디어 플레이어층에 대한 이중 가상 머신 및 신뢰플랫폼 모듈 아키텍쳐
CN101241735B (zh) * 2003-07-07 2012-07-18 罗威所罗生股份有限公司 重放加密的视听内容的方法
US7389273B2 (en) * 2003-09-25 2008-06-17 Scott Andrew Irwin System and method for federated rights management
US7539307B2 (en) * 2003-11-26 2009-05-26 International Business Machines Corporation System, method, and service for delivering enhanced multimedia content on physical media
JP4629416B2 (ja) 2003-11-28 2011-02-09 パナソニック株式会社 データ処理装置
US7552419B2 (en) * 2004-03-18 2009-06-23 Intel Corporation Sharing trusted hardware across multiple operational environments
US7401230B2 (en) * 2004-03-31 2008-07-15 Intel Corporation Secure virtual machine monitor to tear down a secure execution environment
KR20060081336A (ko) 2005-01-07 2006-07-12 엘지전자 주식회사 기록매체에서의 디지털 인증방법
US7587595B2 (en) * 2005-05-13 2009-09-08 Intel Corporation Method and apparatus for providing software-based security coprocessors
JPWO2007116835A1 (ja) * 2006-04-03 2009-08-20 パナソニック株式会社 通信システム間の共存を可能にする通信装置
CN101438290B (zh) * 2006-05-01 2011-10-05 联发科技股份有限公司 用于包括处理器和缓存虚拟存储器的系统中的安全语境切换的方法和装置
WO2008021682A2 (en) * 2006-08-08 2008-02-21 Sandisk Corporation Portable mass storage with virtual machine activation
US7860246B2 (en) * 2006-11-01 2010-12-28 International Business Machines Corporation System and method for protecting data in a secure system
US20080262968A1 (en) * 2007-03-26 2008-10-23 Infosys Technologies Ltd. Software licensing control via mobile devices
ES2632958T3 (es) * 2007-06-14 2017-09-18 Intrinsic Id B.V. Método y dispositivo para proporcionar seguridad digital
EP2183695B1 (en) * 2007-07-20 2014-11-12 Nxp B.V. Device with a secure virtual machine
US8135964B2 (en) * 2008-12-09 2012-03-13 Nvidia Corporation Apparatus, system, method, and computer program product for executing a program utilizing a processor to generate keys for decrypting content
US8266448B2 (en) * 2008-12-09 2012-09-11 Nvidia Corporation Apparatus, system, method, and computer program product for generating and securing a program capable of being executed utilizing a processor to decrypt content
US8402280B1 (en) * 2009-10-15 2013-03-19 Nvidia Corporation System, method, and computer program product for buffering in association with audio/video digital rights management (DRM) processing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008033584A (ja) 2006-07-28 2008-02-14 Nec Corp 情報処理システム、クライアント装置、プログラム、及びファイルアクセス制御方法

Also Published As

Publication number Publication date
JP5532291B2 (ja) 2014-06-25
CN101751529A (zh) 2010-06-23
TWI423136B (zh) 2014-01-11
JP2010140470A (ja) 2010-06-24
US20100146501A1 (en) 2010-06-10
US8868925B2 (en) 2014-10-21
CN101751529B (zh) 2014-01-08
TW201023047A (en) 2010-06-16
KR20100066404A (ko) 2010-06-17

Similar Documents

Publication Publication Date Title
KR101091465B1 (ko) 프로세서의 가상 머신 내 기밀 콘텐츠의 보안 처리를 위한 방법 및 장치
US8266448B2 (en) Apparatus, system, method, and computer program product for generating and securing a program capable of being executed utilizing a processor to decrypt content
US8135964B2 (en) Apparatus, system, method, and computer program product for executing a program utilizing a processor to generate keys for decrypting content
JP5670578B2 (ja) 機密コードおよびデータを保護するためのアーキテクチャを含む方法および装置
CN112005237B (zh) 安全区中的处理器与处理加速器之间的安全协作
US7970133B2 (en) System and method for secure and flexible key schedule generation
US20090187769A1 (en) System and method for an autonomous software protection device
WO2023029447A1 (zh) 模型保护方法、装置、设备、系统以及存储介质
Averbuch et al. Truly-protect: An efficient VM-based software protection
US9292708B2 (en) Protection of interpreted source code in virtual appliances
US20190044709A1 (en) Incorporating software date information into a key exchange protocol to reduce software tampering
Roussel-Tarbouriech et al. Methodically defeating nintendo switch security
US20210026935A1 (en) High performance compute ip encryption using unique set of application attributes
Kim et al. CAFE: A virtualization-based approach to protecting sensitive cloud application logic confidentiality
CN114816549B (zh) 一种保护bootloader及其环境变量的方法及系统
CN116680755A (zh) Gpu固件的保护方法、装置、电子设备和存储介质
CN115081000A (zh) 保护远程目标程序源码的方法、系统、设备和存储介质

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: 20141126

Year of fee payment: 4