KR20090051235A - 컴퓨터 구현 방법, 장치, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체 - Google Patents

컴퓨터 구현 방법, 장치, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체 Download PDF

Info

Publication number
KR20090051235A
KR20090051235A KR1020097006162A KR20097006162A KR20090051235A KR 20090051235 A KR20090051235 A KR 20090051235A KR 1020097006162 A KR1020097006162 A KR 1020097006162A KR 20097006162 A KR20097006162 A KR 20097006162A KR 20090051235 A KR20090051235 A KR 20090051235A
Authority
KR
South Korea
Prior art keywords
digital content
secure processing
vault
encrypted
secure
Prior art date
Application number
KR1020097006162A
Other languages
English (en)
Other versions
KR101055091B1 (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 KR20090051235A publication Critical patent/KR20090051235A/ko
Application granted granted Critical
Publication of KR101055091B1 publication Critical patent/KR101055091B1/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
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead

Abstract

보안 프로세싱 볼트를 사용하는 디지털 콘텐츠 플레이어에 관한 시스템 및 방법이 제공된다. 시스템은 하드웨어-기반 보안 프로세싱 볼트로서 부착된 프로세싱 유닛 및 로컬 저장 영역을 사용한다. 보안 프로세싱 볼트는 저장된 장치 키에 기초하여 타이틀 키를 계산하고, 계산된 타이틀 키를 사용하여 암호화/인코딩된 디지털 콘텐츠를 해독한다. 해독 프로세스는 인코딩된 디지털 콘텐츠를 얻는데, 이는 보안 프로세싱 볼트가 인코딩된 디지털 콘텐츠를 디코딩할 때까지 보안 프로세싱 볼트 내에서 유지된다. 그 후, 디코딩된 디지털 콘텐츠는 추가 프로세싱을 위해 메인 프로세싱 유닛 또는 그래픽 카드로 전달된다. 일 실시예에서, 보안 프로세싱 볼트는 다수의 스레드를 병렬로 프로세싱할 수 있다. 다른 실시예에서, 다수의 보안 프로세싱 볼트는 하나의 매우 연산적인 스레드를 프로세싱하는 데에 사용될 수 있다.

Description

컴퓨터 구현 방법, 장치, 정보 처리 시스템 및 컴퓨터 프로그램{SYSTEM AND METHOD FOR DIGITAL CONTENT PLAYER WITH SECURE PROCESSING VAULT}
본 발명은 보안 프로세싱 볼트를 갖는 디지털 콘텐츠 플레이어를 위한 시스템 및 방법에 관한 것이다. 더 구체적으로, 본 발명은 하드웨어-기반 보안 환경 내에서 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩하는 시스템 및 방법에 관한 것이다.
고해상도 엔터테인먼트 콘텐츠가 널리 이용 가능하게 되면서 침해에 대한 디지털 콘텐츠 소유자들의 우려가 커지고 있다. 디지털 콘텐츠 소유자들은 인터넷과 같은 새로운 보급 채널로 확장하기를 바라지만 보급 통제를 상실하여 결과적으로 수익을 잃게 되는 것을 우려한다는 것을 이해할 수 있다.
판매자-구매자 디지털 콘텐츠 전송을 촉진하는 많은 프로토콜 및 소프트웨어-레벨 콘텐츠 보호 기술이 존재한다. 그러나, 이들 기술과 관련되는 과제는 플랫폼 시스템 보안을 고려하지 않는다는 것이다. 복사 보호 기술이 적절하더라도 보안되지 않는 시스템 플랫폼에서 디지털 콘텐츠가 "도난"당할 수 있다.
통상적으로 시스템 보안은 액세스를 올바르게 승인하는 운영 시스템에 기초하여 왔다. 따라서, 이론적인 관점에서 운영 시스템은 악의의 클라이언트가 디지털 콘텐츠에 액세스하려는 시도를 방지해야 한다. 그러나, 실제로는 악의의 클라이언트는 이 보호 방안을 회피하는 수단을 발견하였으며 디지털 콘텐츠에 액세스한다. 예를 들어, 악의의 클라이언트는 버퍼 오버플로우를 사용하여 운영 시스템 제어를 획득함으로써 디지털 콘텐츠에 액세스한다. 시스템 보안 결여의 결과로서, 디지털 콘텐츠 소유자는 디지털 콘텐츠 보급을 통제하는 시스템 기능에 관심을 갖는다.
기존 기술은 구분된 구획 내에 "디지털 콘텐츠 플레이어"를 위치시키는 가상화 기술을 사용하여 시스템 보안 결여를 해결하려 한다. 그러나, 이 방안과 관련되는 과제는, 구분된 구획이 대응 하이퍼비저 코드의 무결성(hypervisor code's integrity)에 의존하므로 디지털 콘텐츠 플레이어가 소프트웨어 기반 공격에 여전히 취약하다는 점이다.
통상적으로, 디지털 콘텐츠는 먼저 인코딩(또는 압축)된 후 암호화되는데, 이는 침해에 대응하는 콘텐츠 보호에 대한 주요 통제 지점이다. 이 콘텐츠를 재생하기 위해 먼저 해독되고 디코딩되어야 한다. 암호화/인코딩된 포맷으로부터 디지털 콘텐츠를 복원하는 하나의 방안은 보안 환경 내에서 디지털 콘텐츠를 해독하고 보안되지 않는 환경 내에서 디지털 콘텐츠를 디코딩하는 것이다. 그러나, 이 방안과 관련되는 과제는 해독되지만 여전히 인코딩된 디지털 콘텐츠의 가장 중요한 형태가 보안되지 않는 환경에 존재하며 악의의 클라이언트에게 이용 가능하다는 점이 다.
제 1 양태에 따르면, 컴퓨터 구현 방법이 제공되는데, 이 방법은, 보안 프로세싱 볼트(a secure processing vault) 내에서 암호화/인코딩된 디지털 콘텐츠를 수신하는 단계와, 보안 프로세싱 볼트 내에서 상기 암호화/인코딩된 디지털 콘텐츠를 해독(decrypting)하여 보안 프로세싱 볼트에 대해 외부인(external) 임의의 프로세스로부터 격리되는 인코딩된 디지털 콘텐츠를 얻는 단계와, 보안 프로세싱 볼트 내에서 인코딩된 디지털 콘텐츠를 디코딩하여 디코딩된 디지털 콘텐츠를 얻는 단계와, 디코딩된 디지털 콘텐츠를 보안 프로세싱 볼트에 대해 외부인 하나 이상의 프로세스에 제공하는 단계를 포함한다.
하드웨어-기반 보안 환경 내에서 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩하는 시스템 및 방법이 제공되는 것이 바람직하다.
암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩하기 위해 하드웨어-기반 보안 프로세싱 볼트를 사용하는 시스템 및 방법에 제공되는 것이 바람직하다. 결과적으로, 해독되고 여전히 인코딩된 디지털 콘텐츠가 보안 프로세싱 볼트 내에 존재하며 메인 메모리와 같은 보안되지 않는 영역에는 존재하지 않는 것이 바람직하다.
시스템은 메인 프로세싱 유닛(MPU) 및 하나 이상의 부착된 프로세싱 콤플렉스(APC)를 포함하는 것이 바람직하다. MPU는 애플리케이션 프로그램을 실행하고 프로그램 스레드 요청을 APC 중 하나 이상으로 송신하여 워크로드에 기초하여 프로세싱하는 것이 바람직하다. 예를 들어, MPU는 비디오 애플리케이션을 실행할 수 있으며 APC로 하여금 암호화/인코딩된 디지털 비디오에 대응하는 스레드를 프로세싱할 것을 요구할 수 있다.
각 APC는 버스 인터페이스 유닛, 부착된 프로세싱 유닛(APU) 및 로컬 저장 영역을 포함하는 것이 바람직하다. APU는 프로세싱 코어인 것이 바람직한데, 이는 MPU와는 다른 코어 유형일 수 있다. 예를 들어, MPU는 애플리케이션을 실행하는 제어기-기반 코어일 수 있고, APU는 신호 처리 작업에 더 잘 적합한 디지털 신호 처리-기반 코어일 수 있다. 로컬 저장 영역은 컴퓨터 메모리와 같은 비휘발성 또는 휘발성 저장 영역에 저장될 수 있다.
MPU가 APC로 하여금 스레드를 프로세싱할 것을 요청하면, 스레드 요청은 버스 인터페이스를 통해 APU로 전달되는 것이 바람직하다. APU는 이 스레드를 식별하고 보안 프로세싱 볼트(SPV)를 닫는 것이 바람직하다. SPV는 APU 및 로컬 저장 영역을 포함하고, 닫혀 있으면 악의의 클라이언트와 같은 외부 소스에 대해 액세스 가능하지 않는 것이 바람직하다. 보안 프로세싱 볼트는 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩하기 위해 격리되고 인증된 환경을 제공하는 것이 바람직하다. 보안 프로세싱 볼트의 보안성은 소프트웨어에 대립되는 하드웨어에 의해 보장되므로, 악의의 클라이언트가 시스템을 변경하고 손상시키기 훨씬 어렵게 된다.
APU는 수신된 프로그램 스레드를 인증하고 특정 장치 키에 기초하여 타이틀 키를 계산하는 것이 바람직하다. 다음으로, APU는 로컬 저장 영역과 함께 (타이클 키를 사용하여) 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩하는 것이 바람직하다. 해독 및 디코딩 단계 동안, APU는 물리적 어드레스를 사용하여 로컬 스토어(변환되지 않은 어드레스)에 액세스하여 악의의 클라이언트가 어드레스 변환 테이블을 변경하려 할 때 보안 프로세싱 볼트가 손상되지 않는 것이 바람직하다. APU가 암호화/인코딩된 디지털 콘텐츠의 해독 및 디코딩을 종료하면, APU는 추가 프로세싱을 위해 해독되고 디코딩된 디지털 콘텐츠를 다시 MPU 또는 그래픽 카드에 제공하는 것이 바람직하다.
일 실시예에서, MPU는 APC로 하여금 다수의 프로그램 스레드를 프로세싱할 것을 요청할 수 있다. 이 실시예에서, APU는 보안 프로세싱 볼트를 닫고 각 스레드를 병렬로 프로세싱한다. 다른 실시예에서, MPU는 복수의 APC로 하여금 하나의 연산적으로 집약된 스레드를 프로세싱할 것을 요청할 수 있다. 이 실시예에서, 각 APC는 암호화/인코딩된 디지털 콘텐츠를 부분적으로 디코딩하고, 이를 다른 APC로 송신하기 전에 부분적으로 디코딩된 디지털 -콘텐츠를 암호화한다.
제 2 양태에 따르면, 하나 이상의 보안 프로세싱 볼트를 포함하는 장치가 제공되는데, 이 보안 프로세싱 볼트 각각은 암호화/인코딩된 디지털 콘텐츠를 수신하고, 암호화/인코딩된 디지털 콘텐츠를 해독하여 보안 프로세싱 볼트에 대해 외부인 임의의 프로세스로부터 격리되는 인코딩된 디지털 콘텐츠를 얻으며, 인코딩된 디지털 콘텐츠를 디코딩하여 디코딩된 디지털 콘텐츠를 얻고, 디코딩된 디지털 콘텐츠를 보안 프로세싱 볼트에 대해 외부인 하나 이상의 프로세스에 제공하도록 구성된다.
본 발명의 제 3 양태에 따르면, 메인 프로세싱 유닛과, 부착된 프로세싱 유닛과, 격리된 로컬 저장 영역과, 디지털 콘텐츠를 프로세싱하는 디지털 콘텐츠 프로세싱 툴을 포함하는 정보 처리 시스템이 제공되는데, 이 디지털 콘텐츠 프로세싱 툴은 부착된 프로세싱 유닛 및 격리된 로컬 저장 영역을 포함하는 보안 프로세싱 볼트에서 암호화/인코딩된 디지털 콘텐츠를 수신하고, 보안 프로세싱 볼트 내에서 암호화/인코딩된 디지털 콘텐츠를 해독하여 보안 프로세싱 볼트에 대해 외부인 임의의 프로세스로부터 격리되는 인코딩된 디지털 콘텐츠를 얻으며, 보안 프로세싱 볼트 내에서 상기 인코딩된 디지털 콘텐츠를 디코딩하여 디코딩된 디지털 콘텐츠를 얻고, 디코딩된 디지털 콘텐츠를 상기 보안 프로세싱 볼트에 대해 외부인 하나 이상의 프로세스에 제공한다.
본 발명은 컴퓨터 소프트웨어로 구현될 수 있다.
전술한 설명은 개요이므로 필연적으로 간략화되고 일반화되며 세부 사항을 생략하였으므로, 결과적으로 당업자는 개요는 단지 예시적이며 제한적으로 의도되지 않았음을 인식할 것이다. 청구범위에 의해서만 정의되는 본 발명의 다른 양태, 발명적 특징 및 장점은 후술하는 제한적이지 않은 상세한 설명에서 명백해질 것이다.
이제 본 발명의 바람직한 실시예를 설명할 것인데, 단지 예시적인 것이며 다음 도면을 참조한다.
도 1은 본 발명의 바람직한 실시예에 따른, 보안 환경 내에서 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩하는 보안 프로세싱 볼트를 포함하는 시스템을 도시하는 도면이다.
도 2(a)는 본 발명의 바람직한 실시예에 따른, 하나의 암호화/인코딩된 디지털 콘텐츠 스레드를 해독하고 디코딩하는 보안 프로세싱 볼트를 도시하는 도면이다.
도 2(b)는 본 발명의 바람직한 실시예에 따른, 복수의 암호화/인코딩된 디지털 콘텐츠 볼트를 해독하고 디코딩하는 보안 프로세싱 볼트를 도시하는 도면이다.
도 3은 본 발명의 바람직한 실시예에 따른, 암호화/인코딩된 디지털 콘텐츠 스레드를 단계적으로 해독하고 디코딩하는 복수의 보안 프로세싱 볼트(SPV)를 도시하는 도면이다.
도 4는 본 발명의 바람직한 실시예에 따른, 부착되는 프로세싱 콤플렉스로 하여금 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩할 것을 요청하는 메인 프로세싱 유닛에서 취해지는 단계를 도시하는 하이 레벨 흐름도이다.
도 5는 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩하기 위해 보안 프로세싱 볼트로서 기능하는 부착된 프로세싱 유닛(APU) 및 로컬 저장 영역에서 취해지는 단계를 도시하는 흐름도이다.
도 6은 본 발명의 바람직한 실시예에 따른, 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩하는 복수의 보안 프로세싱 볼트(SPV)에서 취해지는 단계를 도시하는 흐름도이다.
도 7은 바람직한 실시예에 따른 본 발명을 구현할 수 있는 컴퓨터 장치의 블록도이다.
다음은 본 발명의 일례의 상세한 설명을 제공하도록 의도된 것이며 본 발명 자체를 제한하는 것으로 고려되어서는 안 된다. 오히려, 임의의 수의 변형이 본 발명의 범위에 해당할 수 있으며 본 발명의 범위는 상세한 설명에 이어지는 청구범위에서 정의된다.
도 1은 보안 환경 내에서 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩하는 보안 프로세싱 볼트를 포함하는 시스템을 도시하는 도면이다. 시스템(100)은 메인 프로세싱 유닛(MPU)(110) 및 부착된 프로세싱 콤플렉스(APC)(120, 170 및 180)를 포함한다. MPU(110)는 응용 프로그램을 실행하며 워크로드에 기초하여 프로그램 스레드 요청을 APC 중 하나 이상으로 송신하여 프로세싱한다. 예를 들어, MPU(110)는 비디오 애플리케이션을 실행하고 있을 수 있으며 APC(120)로 하여금 암호화/인코딩된 디지털 비디오에 대응하는 스레드를 프로세싱할 것을 요청할 수 있다.
각 APC는 버스 인터페이스 유닛, 부착된 프로세싱 유닛 및 로컬 저장 영역을 포함한다. 도 1에서 볼 수 있는 바와 같이, APC(120)는 버스 인터페이스 유닛(160), 부착된 프로세싱 유닛(140) 및 로컬 저장 영역(150)을 포함한다. 버스 인터페이스 유닛(160)은 APC(120)와 시스템 버스(115) 사이에서 데이터와 제어 신 호를 제공한다. 부착된 프로세싱 유닛(140)은 프로세싱 코어인데, 이는 MPU(110)와는 다른 코어 유형일 수 있다. 예를 들어, MPU(110)는 애플리케이션을 실행하기 위한 제어기-기반 코어일 수 있고, APU(140)는 신호 프로세싱 작업에 더 적합한 디지털 신호 프로세싱 기반 코어일 수 있다. 로컬 스토어(150)는 격리된 로컬 저장 영역이며 컴퓨터 메모리와 같은 비휘발성 또는 휘발성 저장 영역에 저장될 수 있다.
MPU(110)가 APC(120)로 하여금 스레드를 프로세싱할 것을 요청하면, 스레드 요청은 버스 인터페이스 유닛(160)을 통해 APU(140)로 전달된다. APU(140)는 스레드를 식별하고, 보안 프로세싱 볼트(secure processing vault, SPV)(130)를 닫는다(locks). SPV(130)는 APU(140) 및 로컬 스토어(150)를 포함하고, 닫혀 있으면 악의의 클라이언트와 같은 외부 소스에 대해 액세스 불가능하다. 보안 프로세싱 볼트는 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩하기 위한 격리되고 인증된 환경을 제공한다. 보안 프로세싱 볼트의 보안은 소프트웨어에 대립되는 하드웨어에 의해 보장되기 때문에, 악의의 클라이언트가 시스템(100)을 변경하거나 손상시키기 훨씬 어렵게 된다.
APU(140)는 수신된 프로그램 스레드를 인증하고, 메인 메모리(190)로부터 암호화 장치 키(195)를 검색한다(retrieve). 다음으로, APU(140)는 암호화 장치 키(195)를 해독하고 해독된 장치 키에 기초하여 타이틀 키를 계산한다. 이와 같이, 로컬 스토어(150)와 함께 APU(140)는 (타이틀 키를 사용하여) 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩한다. 해독 및 디코딩 단계 동안, APU(140)는 물 리적 어드레스(145)를 사용하여 로컬 스토어(150)(변환되지 않은 어드레스)에 액세스하게 되므로 악의의 클라이언트가 어드레스 변환 테이블을 변경하려 할 때 보안 프로세싱 볼트(130)가 손상되지 않는다. APU(140)가 암호화/인코딩된 디지털 콘텐츠의 해독 및 디코딩을 종료하면, APU(140)는 추가 프로세싱을 위해 해독되고 디코딩된 디지털 콘텐츠를 다시 MPU(110) 또는 그래픽 카드에 제공한다.
일 실시예에서, MPU(110)는 APC(120)로 하여금 다수의 프로그램 스레드를 프로세싱할 것을 요청할 수 있다. 이 실시예에서, APU(140)는 보안 프로세싱 볼트(130)를 닫고 각 스레드를 병렬로 프로세싱한다(추가 세부 사항을 위해 도 2(b) 및 대응 텍스트 참조).
다른 실시예에서, MPU(110)는 복수의 APC로 하여금 하나의 연산적으로 집약된 스레드를 프로세싱할 것을 요청할 수 있다. 이 실시예에서, 각 APC는 암호화/인코딩된 디지털 콘텐츠를 부분적으로 디코딩하고, 이를 다른 APC로 송신하기 전에 부분적으로 디코딩된 디지털-콘텐츠를 암호화한다(추가 세부 사항을 위해 도 3, 6 및 대응 텍스트 참조).
도 2(a)는 하나의 암호화/인코딩된 디지털 콘텐츠 스레드를 해독하고 디코딩하는 보안 프로세싱 볼트를 도시하는 도면이다. 보안 프로세싱 볼트(130)는 도 1에 도시된 바와 동일한 것이며, 부착된 프로세싱 유닛(APU 140) 및 로컬 저장 영역(로컬 스토어 150)을 포함한다.
보안 프로세싱 볼트(130)는 하나 이상의 장치 키로부터 타이틀 키를 계산하고 다음으로 타이틀 키를 사용하여 암호화/인코딩된 디지털 콘텐츠(200)를 해독한 다(단계 210). 예를 들어, 타이틀 키는 AACS(advanced access content standards)를 사용하여 계산될 수 있다(추가 세부 사항을 위해 도 5 및 대응 텍스트 참조). 보안 프로세싱 볼트(130)는 단계 215에서 해독되고 인코딩된 디지털 콘텐츠를 디코딩하는데, 이는 디코딩된 디지털 콘텐츠(220)를 얻는다.
해독(단계 210)과 디코딩(단계 215) 사이의 위치는 가장 중요한 디지털 콘텐츠 상태를 포함하는데, 이는 해독되지만 아직 디코딩되지 않은 디지털 콘텐츠이다. 볼 수 있는 바와 같이, 이 위치는 보안 프로세싱 볼트(130) 내에서 보안되므로 악의의 클라이언트에 대해 액세스 가능하지 않다.
도 2(b)는 복수의 암호화/인코딩된 디지털 콘텐츠 스레드를 해독하고 디코딩하는 보안 프로세싱 볼트를 도시하는 도면이다. 메인 프로세싱 유닛이 하나의 부착된 프로세싱 콤플렉스가 프로세싱할 수 있는 다수의 프로그램 스레드를 식별하면, 메인 프로세싱 유닛은 하나의 부착된 프로세싱 콤플렉스로 하여금 다수의 프로그램 스레드 각각을 프로세싱할 것을 요청할 수 있다. 이와 같이, APC의 대응 부착된 프로세싱 유닛은 보안 프로세싱 볼트를 닫아서 다수의 스레드를 프로세싱한다.
SPV(130)는 타이틀 키를 계산하고 3개의 암호화/인코딩된 디지털 콘텐츠 스트림(230, 250 및 270)을 수신한다. SPV(130)는 도 1에 도시된 것과 동일하다. 이와 같이, SPV(130)는 3개의 암호화/인코딩된 디지털 콘텐츠 스트림을 병렬로 해독(단계 235, 255 및 275)하고 디코딩(단계 240, 260 및 280)하는데, 이는 디코딩된 디지털 콘텐츠 A(245), 디코딩된 디지털 콘텐츠 B(265) 및 디코딩된 디지털 콘 텐츠 C(285)를 생성한다.
도 3은 암호화/인코딩된 디지털 콘텐츠 스레드를 단계적으로 해독하고 디코딩하는 복수의 보안 프로세싱 볼트(SPV)를 도시하는 도면이다. 메인 프로세싱 유닛이 매우 연산적인 프로그램 스레드를 식별하면, 메인 프로세싱 유닛은 다수의 SPV로 하여금 스레드를 프로세싱할 것을 요구할 수 있다. 이와 같이, SPV는 인코딩된 디지털 콘텐츠를 부분적으로 디코딩한 후 이를 다른 SPV로 송신하기 전에 부분적으로 디코딩된 디지털 콘텐츠를 암호화함으로써 프로그램 스레드를 순차적으로 프로세싱한다.
보안 프로세싱 볼트(300)는 메인 메모리(190)로부터 암호화된 장치 키(195)를 검색하고 암호화된 장치 키(195)를 해독하는데, 이는 해독된 장치 키(310)를 얻는다. 다음으로, 보안 프로세싱 볼트(300)는 해독된 장치 키(310)를 사용하여 타이틀 키(315)를 계산한다(타이틀 키 계산에 관한 추가 세부 사항을 위해 도 5 및 대응 텍스트 참조). 다음으로, 보안 프로세싱 볼트(300)는 타이틀 키(315)를 보안 프로세싱 볼트(320)에 제공한다. 메인 메모리(190) 및 암호화된 장치 키(195)는 도 1에 도시된 것과 동일하다.
보안 프로세싱 볼트(320)는 타이틀 키(315)를 사용하여 암호화/인코딩된 디지털 콘텐츠(305)를 해독하여(단계 325), 인코딩된 디지털 콘텐츠를 얻는다. 또한, 보안 프로세싱 볼트(320)는 MPEG 4(H.264)와 같은 공통 기술을 사용하여 인코딩된 디지털 콘텐츠를 부분적으로 디코딩할 수 있다(단계 330). 부분적으로 디코딩된 디지털 콘텐츠가 추가 디코딩을 위해 다른 보안 프로세싱 볼트로 전달될 때 보안하기 위해, 보안 프로세싱 볼트(320)는 부분적으로 디코딩되는 디지털 콘텐츠를 암호화하고 암호화된 부분적으로 디코딩된 디지털 콘텐츠를 보안 프로세싱 볼트(340)로 송신하는데, 이는 상이한 부착된 프로세싱 유닛 및 상이한 로컬 저장 영역을 포함한다.
보안 프로세싱 볼트(340)는 암호화된 부분적으로 디코딩된 디지털 콘텐츠를 해독하고(단계 345) 디코딩 프로세스를 계속한다(단계 350). 보안 프로세싱 볼트(340)가 디지털 콘텐츠를 완전히 디코딩하지 않으므로, 보안 프로세싱 볼트(340)는 부분적으로 디코딩된 디지털 콘텐츠를 암호화하고(단계 355) 부분적으로 디코딩된 디지털 콘텐츠를 보안 프로세싱 볼트(360)로 송신하는데, 이는 상이한 부착된 프로세싱 유닛 및 상이한 로컬 저장 영역을 포함한다.
보안 프로세싱 볼트(360)는 암호화된 부분적으로 디코딩된 디지털 콘텐츠를 해독하고(단계 365) 디코딩 프로세스(단계 370)를 종료하기 위해 진행한다. 결과적으로, 보안 프로세싱 볼트(360)는 해독되고 디코딩되는 디코딩된 디지털 콘텐츠(380)를 메인 프로세싱 유닛 또는 그래픽 카드에 제공한다.
도 4는 부착된 프로세싱 콤플렉스로 하여금 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩할 것을 요청하는 메인 프로세싱 유닛에서 취해지는 단계를 도시하는 하이 레벨 흐름도이다. 도 1에 도시된 MPU(110)와 같은 메인 프로세싱 유닛(MPU)는 암호화/인코딩된 디지털 콘텐츠에 대응하는 프로그램 스레드를 도 1에 도시된 APU(140)와 같은 부착된 프로세싱 유닛(APU)으로 전달한다. 다음으로, APU는 보안 프로세싱 볼트 내에서 데이터를 해독하고 디코딩하며, 추가 프로세싱을 위 해 해독되고 디코딩된 디지털 콘텐츠를 다시 메인 프로세싱 유닛으로 전달한다. 예를 들어, 디지털 콘텐츠는 디지털 비디오 스트림일 수 있는데, 이 경우에 메인 프로세싱 유닛은 모니터상에 보여주기 위한 디지털 비디오 스트림의 포맷을 지정한다. 다른 예에서, 디지털 콘텐츠는 디지털 오디오 스트림일 수 있는데, 이 경우 메인 프로세싱 유닛은 스피커에서 재생하기 위한 디지털 오디오 스트림의 포맷을 지정한다.
MPU 프로세싱은 400에서 시작하는데, MPU는 단계 405에서 암호화/인코딩된 디지털 콘텐츠에 대응하는 프로그램 스레드를 선택한다. 단계 410에서, 프로세싱은 하나 이상의 부착된 프로세싱 유닛을 선택하여 프로그램 스레드를 프로세싱한다. 예를 들어, 도 3에 도시된 예와 같이, 이 스레드가 다수의 APU가 프로세싱할 것을 요구하는 경우, MPU는 다수의 APU를 선택하여 단계 410에서 이 스레드를 프로세싱한다. 도 4에 도시된 흐름도는 암호화/인코딩된 디지털 콘텐츠가 하나의 APU가 프로세싱할 것을 요구하는 것을 도시하고 있다.
단계 420에서, MPU는 프로그램 스레드를 선택된 APU로 송신한다. APU 프로세싱은 440에서 시작하는데, APU는 단계 445에서 프로그램 스레드를 수신한다. 단계 450에서, APU는 보안 프로세싱 유닛을 닫는데, 이는 도 1에 도시된 로컬 스토어(150)와 같은 APU 및 로컬 저장 영역을 포함한다.
보안 프로세싱 볼트가 닫혀 있는 동안, APU 및 로컬 저장 영역은 악의의 클라이언트와 같은 외부 소스에 대해 액세스 가능하지 않다. 또한, APU는 물리적 어드레스(변환된 어드레스가 아님)를 사용하여 로컬 저장 영역에 액세스하여, 악의의 클라이언트가 어드레스 변환 테이블을 변경하려 할 때 보안 프로세싱 볼트가 손상되지 않는다. 이와 같이, 보안 프로세싱 볼트(APU 및 로컬 저장 영역)는 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩하며, 해독되고 디코딩된 디지털 콘텐츠를 MPU 또는 그래픽 카드(465)에 제공한다(사전 정의된 프로세스 블록 460, 추가 세부 사항을 위해 도 5 및 대응 텍스트 참조).
일단 APU가 암호화/인코딩된 디지털 콘텐츠 스레드 프로세싱을 종료하면, APU는 단계 470에서 보안 프로세싱 볼트를 해제하고 APU 프로세싱은 480에서 종료한다. MPU는 단계 425에서 APU로부터 해독되고 디코딩된 디지털 콘텐츠를 수신한다. 종료되면, MPU 프로세싱은 430에서 종료한다.
도 5는 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩하기 위한 보안 프로세싱 볼트로서 기능하는 부착된 프로세싱 유닛(APU) 및 로컬 저장 영역에서 취해지는 단계를 도시하는 흐름도이다. APU는 암호화/인코딩된 디지털 콘텐츠에 대응하는 메인 프로세싱 유닛(MPU)으로부터의 프로그램 스레드를 수신하였다. 이와 같이, APU는 보안 환경에서 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩하기 위해 보안 프로세싱 볼트를 "닫았다"(추가 사항을 위해 도 4 및 대응 텍스트 참조).
보안 프로세싱 볼트(SPV) 프로세싱은 500에서 시작하는데, 프로세싱은 단계 505에서 MPU로부터 수신된 프로그램 스레드를 인증한다. 예를 들어, 인증은 실시간 보안 부트를 포함할 수 있다. 이 예에서, APU는 실시간 연산 동안 격리된 보안 프로세스를 인증하는데, 이는 운영 시스템이 손상될 때 신뢰를 재수립하는 기능을 스레드에 제공한다.
프로그램 스레드가 인증되는지에 대한 결정이 내려진다(결정 510). 프로그램 스레드가 인증되지 않는 경우, 결정(510)은 "아니오" 분기점(512)으로 진행하는데, APU는 단계 515에서 에러 메시지를 MPU(110)로 송신하고, 볼트 프로세싱은 520에서 복귀한다. MPU(110)는 도 1에 도시된 것과 동일하다.
한편, 프로그램 스레드가 인증하는 경우, 결정(510)은 "예" 분기점(518)으로 진행하는데, 프로세싱은 단계(525)에서 메인 메모리(190)로부터 암호화된 장치 키(195)를 검색한다. 단계(530)에서, 프로세싱은 암호화 장치 키(195)를 해독한다. 프로세싱은 해독된 장치 키를 사용하여 타이틀 키를 계산하고 타이틀 키를 로컬 저장 스토어(150)에 저장하는데, 이는 보안 프로세싱 볼트 내에 위치되며 도 1에 도시된 것과 동일하다(단계 540). 메인 메모리(190)와 암호화 장치 키(195)는 도 1에 도시된 것과 동일하다.
SPV의 격리된 로컬 저장 영역(임시 스토어 545) 내에 장치 키를 저장하는 것이 중요한 이유는 격리된 로컬 저장 영역은 루트 프리빌리지(root privileges)를 갖는 것들을 포함하는 임의의 다른 소프트웨어 프로세스에 의해 액세스 가능하지 않기 때문이다. 전술한 예를 사용하면, 프로세싱은 브로드캐스트 암호화 기술에 기초하여 장치 키로부터 타이틀 키를 계산한다. 단계 550에서, 프로세싱은 단계 555에서 타이틀 키를 계산하는 프로그램 스레드를 종료시키고, 프로세싱은 암호화/인코딩된 디지털 콘텐츠를 해독하고 디코딩하기 위해 상이한 스레드를 불러온다(invokes). 프로세싱은 브로드캐스트 암호 기술을 사용하는 타이틀 키 계산이 비디오 스트리밍 애플리케이션인 해독/디코딩으로부터 기능적으로 분리된다는 사실로 인해 새로운 스레드를 불러온다.
프로세싱은 단계(560)에서 해독/디코드 스레드를 인증하여 메인 메모리에 존재하는 스레드가 변경되지 않았음을 보장한다. 해독/디코드 스레드가 인증하는지에 대한 결정이 내려진다(결정 570). 해독/디코드 스레드가 인증하지 않는 경우, 결정(570) 분기는 "아니오" 분기점(572)로 진행하는데, 프로세싱은 단계 575에서 MPU로 에러 메시지를 송신하고, 580에서 볼트 프로세싱은 복귀한다.
한편, 해독/디코드 스레드가 인증하는 경우, 결정(570)은 "예" 분기점(578)으로 진행하는데, 해독/디코딩 스레드는 (단계 585에서) 임시 스토어(545)에 이전에 저장된 타이틀 키에 액세스한다. 단계 590에서, APU는 로컬 스토어(150)에 위치되는 암호화/인코딩된 디지털 콘텐츠를 해독하는데, 이는 인코딩된 디지털 콘텐츠를 얻는다. APU는 로컬 스토어(150)에 인코딩된 디지털 콘텐츠를 저장하는데, 이는 보안 프로세싱 볼트 내에 존재하므로 악의의 클라이언트에 액세스 가능하지 않다.
단계 595에서, 프로세싱은 로컬 스토어(150)에 위치되는 인코딩된 디지털 콘텐츠를 디코딩하고 MPU(110) 또는 그래픽 카드(465)에 디코딩된 디지털 콘텐츠를 제공한다. 예를 들어, 프로세싱은 인코딩된 디지털 콘텐츠를 디코딩하기 위해 MPEG 4(H.264)와 같은 표준을 사용할 수 있다. 그래픽 카드(465)는 도 4에 도시된 것과 동일하다. 일단 APU가 암호화/인코딩된 디지털 콘텐츠를 디코딩하고 해독하면, 보안 프로세싱 볼트 프로세싱은 599에서 복귀한다.
도 6은 암호화/인코딩 디지털 콘텐츠를 해독하고 디코딩하는 복수의 보안 프로세싱 볼트(SPV)에서 취해지는 단계를 도시하는 흐름도이다. 메인 프로세싱 유닛(MPU)은 복수의 부착된 프로세싱 컴플렉스(APC)로 하여금 하나의 연산적으로 집약된 스레드를 프로세싱할 것을 요청할 수 있다. 이 실시예에서, 각 APC 내의 각 부착된 프로세싱 유닛(APU)은 그 보안 프로세싱 볼트를 닫고 스레드를 프로세싱하기 위해 진행한다.
SPV A(610)는 메인 메모리(190)로부터 암호화 장치 키(195)를 검색하고 암호화 장치 키(195)를 해독하여, 해독된 장치 키(615)를 얻는다. 그 후, SPV A(610)는 해독화 장치 키(615)에 기초하여 타이틀 키를 계산하고 타이틀 키를 SPV B에 전달한다. SPV B 프로세싱은 600에서 시작하는데, SPV B는 단계 605에서 SPV A(610)로부터 타이틀 키를 검색한다. 단계(620)에서, 프로세싱은 타이틀 키를 사용하여 암호화/인코딩된 디지털 콘텐츠를 해독하여, 인코딩된 디지털 콘텐츠를 얻는다.
인코딩된 디지털 콘텐츠를 디코딩하는 프로세스는 연산적으로 집약적이므로, SPV B는 단계 625에서 인코딩된 디지털 콘텐츠를 부분적으로 디코딩하기 시작한다. 디코딩 프로세스 동안, SPV B는 부분적으로 디코딩된 디지털 콘텐츠를 암호화하고 암호화된 부분적으로 디코딩된 디지털 콘텐츠를 SPV C로 전달한다. SPV B는 부분적으로 디코딩된 디지털 콘텐츠가 SPV C로 전달될 때 보안을 위해 암호화 단계를 수행한다.
SPV C 프로세싱은 650에서 시작하는데, 프로세싱은 (단계 655에서) 암호화된 부분적으로 디코딩된 디지털 콘텐츠를 수신하기 시작한다. 단계 660에서, SPV C는 암호화된 부분적으로 디코딩된 디지털 콘텐츠를 해독하기 시작하여, 부분적으로 디코딩된 디지털 콘텐츠를 얻는다. 이와 같이, SPV C는 단계 670에서 디코딩 프로세스를 시작하고 MPU(110) 또는 그래픽 카드(465)에 디코딩된 디지털 콘텐츠를 제공한다. MPU(110)는 도 1에 도시된 것과 동일하며 그래픽 카드(465)는 도 4에 도시된 것과 동일하다. 당업자가 인식할 수 있는 바와 같이, 도 6에 도시된 것보다 많은 보안 프로세싱 볼트가 사용되어 디지털 콘텐츠를 디코딩할 수 있다.
SPV B가 인코딩된 디지털 콘텐츠를 부분적으로 디코딩하고 암호화하는 것을 종료하는지에 대한 결정(결정 640)이 내려진다. SPV B가 분분적으로 디코딩하고 암호화는 것을 종료하지 않은 경우, 결정(640)은 "예" 분기점(642)으로 진행하는데, 이는 루프로 돌아가서 인코딩된 디지털 콘텐츠를 부분적으로 디코딩하고 암호화는 것을 계속한다. 이 루프는 SPC V 프로세싱이 종료될 때까지 계속되는데, 종료 지점에서 결정(640)은 "아니오" 분기점(644)으로 진행하며 SPV B 프로세싱은 645에서 종료된다.
SPV C가 부분적으로 디코딩된 디지털 콘텐츠 모두를 디코딩 완료하였는지에 대한 결정(결정 680)이 내려진다. SPV C가 디코딩을 완료하지 않은 경우, 결정(680)은 "예" 분기점(682)으로 진행하는데, 이는 루프로 돌아가서 부분적으로 디코딩된 디지털 콘텐츠의 디코딩을 계속한다. 이 루프는 SPV C 프로세싱이 디코딩을 종료할 때까지 계속되는데, 종료 지점에서 결정(680)은 "아니오" 분기점(688)으로 진행하며 SPV C 프로세싱은 690에서 종료된다.
도 7은 메인 프로세서 및 하나의 시스템 메모리를 공유하는 복수의 보조 프 로세서를 갖는 프로세싱 요소를 도시하는 블록도이다. 도 7은 바람직한 실시예에 따른 본 발명을 구현하기 위해 사용될 수 있는 이종(heterogeneous) 프로세싱 환경을 도시하고 있다. 주요 프로세서 요소(PPE)(705)는 메인 프로세싱 유닛(MPU)(710)을 포함하는데, 일 실시예에서 이는 메인 프로세서로서 기능하며 운영 시스템을 실행시킨다. 예를 들어, MPU(710)는Linux® 운영 시스템을 실행하는 IBM® PowePC® 코어일 수 있다. 또한, PPE(705)는 APC(745, 765 및 785)와 같은 복수의 부착된 프로세싱 컴플렉스(APC)를 포함한다. APC는 MPU(710)에 대한 보조 프로세싱 유닛으로서 기능하는 부착된 프로세싱 유닛(APU), 메모리 저장 유닛 및 로컬 저장장치를 포함한다. 예를 들어, APC(745)는 APU(760), MMU(755) 및 로컬 저장장치(759)를 포함하고, APC(765)는 APU(770), MMU(775) 및 로컬 저장장치(779)를 포함하며, APC(785)는 APU(790), MMU(795) 및 로컬 저장장치(799)를 포함한다. (IBM 및 Power PC는 미국, 기타 국가 또는 양쪽 모두에 International Business Machines Corporation의 상표로서 등록되어 있으며, Linux는 미국, 기타 국가 또는 양쪽 모두에 Linux Torvalds의 등록된 상표이다.)
모든 APC는 동일한 ISA를 사용할 수 있거나 각각 애플리케이션 특정 ISA를 구현할 수 있다. 각 APC는 상이한 작업을 수행하도록 구성될 수 있어서, 일 실시예에서 각 APC는 상이한 인스트럭션 세트를 사용하여 액세스될 수 있다. PPE(705)가 무선 통신 시스템에서 사용되는 경우, 예를 들어, 각 APC는 이러한 변조, 칩 레이트 프로세싱, 인코딩, 네트워크 인터페이싱 등과 같은 개별 프로세싱 작업을 수 행할 수 있다. 다른 실시예에서, APC는 동일한 인스트럭션 세트를 가질 수 있으며 병렬 프로세싱으로부터 이점을 취하는 연산을 수행하기 위해 서로에 대해 병렬로 사용될 수 있다.
또한, PPE(705)는 MPU(710)의 사용을 위해 L2 캐시(715)와 같은 레벨 2 캐시를 포함할 수 있다. 또한, PPE(705)는 시스템 메모리(720)를 포함하는데, 이는 MPU(710)와 APU 사이에서 공유된다. 시스템 메모리(720)는, 예를 들어, 실행 중 운영 시스템(커널을 포함할 수 있음), 장치 구동기, I/O 구성 등의 이미지, 실행하는 애플리케이션 및 기타 데이터를 저장할 수 있다. 시스템 메모리(720)는 APC 중 하나 이상의 로컬 저장 유닛을 포함하는데, 이는 시스템 메모리(720)의 영역으로 맵핑된다. 예를 들어, 로컬 저장장치(759)는 맵핑된 영역(735)으로 맵핑될 수 있고, 로컬 저장장치(779)는 맵핑된 영역(740)으로 맵핑될 수 있으며, 로컬 저장장치(799)는 맵핑된 영역(742)으로 맵핑될 수 있다. MPU(710) 및 APC는 서로 통신하고 버스(717)를 통한 시스템 메모리(720)는 이들 장치들 사이의 데이터를 전달하도록 구성된다.
MMU는 APU 로컬 스토어와 시스템 메모리 사이의 데이터 전송을 수행한다. 일 실시예에서, MMU는 이 기능을 수행하도록 구성되는 직접 메모리 액세스(DMA) 제어기를 포함한다. MPU(710)는 MMU를 프로그래밍하여 어느 메모리 영역이 MMU 각각에 대해 이용 가능하지를 제어할 수 있다. MMU 각각에 대해 이용 가능한 맵핑을 변경함으로써, MPU는 어느 APU가 시스템 메모리(720)의 어느 영역에 액세스하는지를 제어할 수 있다. 이 방식에서, MPU는, 예를 들어, 특정 APU의 배타적 사용을 위한 프라이버시로서 시스템 메모리의 영역을 지정할 수 있다. 일 실시예에서, APU 로컬 스토어는 메모리 맵을 사용하여 MPU(710) 및 다른 APU에 의해 액세스될 수 있다. 일 실시예에서, MPU(710)는 모든 APU에 대한 공통 시스템 메모리(720)에 대한 메모리 맵을 관리한다. 메모리 맵 테이블은 MPU(710) L2 캐시(715), 시스템 메모리(720) 및 APU 공유 로컬 스토어를 포함할 수 있다.
일 실시예에서, APU는 MPU(710) 제어 하에서 데이터를 프로세싱한다. APU는, 예를 들어, 디지털 신호 프로세싱 코어, 마이크로프로세서 코어, 마이크로 제어기 코어 등일거나 전술한 코어의 조합일 수 있다. 로컬 스토어 각각은 특정 APU와 관련되는 저장 영역이다. 일 실시예에서, 각 SPU는 개인 저장 영역으로서 그 로컬 스토어, 공유 저장 영역을 구성할 수 있거나, APU는 부분적 개인 저장장치 및 부분적 공유 저장장치로서 그 로컬 스토어를 구성할 수 있다.
예를 들어, APU가 상당한 양의 로컬 메모리를 요구하는 경우, APU는 그 APU에 의해서만 액세스 가능한 개인 메모리에 로컬 스토어 100%를 할당할 수 있다. 한편, APU가 최소량의 로컬 메모리를 요구하는 경우, APU는 개인 메모리에 로컬 스토어의 10%를 할당하고 공유 메모리에 나머지 90%를 할당할 수 있다. 공유 메모리는 MPU(710) 및 다른 APU에 의해 액세스 가능하다. APU는 고속의 보장되는 메모리 액세스를 요구하는 작업을 수행할 때 이러한 고속 액세스를 갖기 위해 그 로컬 스토어의 일부분을 보존할 수 있다. 또한, APU는 민감한 데이터를 프로세싱할 때, 예를 들어, APU가 암호화/해독을 수행할 때 프라이버시로서 그 로컬 스토어의 일부를 보존할 수 있다.
도 7은 하나의 정보 처리 시스템을 도시하고 있으며, 정보 처리 시스템은 많은 형태를 취할 수 있다. 예를 들어, 정보 처리 시스템은 테스크톱, 서버, 휴대용, 랩탑, 노트북 또는 기타 형태 요소 컴퓨터 또는 데이터 프로세싱 시스템의 형태를 취할 수 있다. 또한, 정보 처리 시스템은 PDA(personal digital assistant), 게임 장치, ATM 머신, 휴대용 전화 장치, 통신 장치 또는 프로세서와 메모리를 포함하는 기타 장치와 같은 다른 형태 요소를 취할 수 있다.
본 발명의 특정 실시예를 도시하고 설명하였지만, 본 명세서의 개시 내용에 기초하여 당업자에게 자명한 바와 같이 본 발명의 범위와 넓은 양태를 벗어나지 않고 변형 및 수정이 이루어질 수 있다. 그러므로, 첨부된 청구범위는 그 범위 내에서 본 발명의 진정한 사상과 범위 내에 존재하는 모든 이러한 변형 및 수정을 포함한다. 또한, 본 발명은 첨부된 청구범위에 의해서만 정의된다는 것을 이해해야 한다. 당업자가 이해할 바와 같이, 도입되는 한 청구항 요소의 특정 개수가 의도되는 경우에 이러한 의도는 그 청구항에 명시적으로 인용될 것이며, 이러한 인용이 없는 경우에는 그러한 제한은 존재하지 않는다. 제한적이지 않은 예에 있어서, 이해를 돕기 위해, 다음의 첨부된 청구항은 청구항 요소를 도입하기 위해 도입 문구 "적어도 하나" 및 "하나 이상"의 사용을 포함한다. 그러나, 이러한 문구의 사용은, 수식어 "하나의"에 의한 청구항 요소의 도입이 이러한 도입된 청구항 요소를 포함하는 임의의 특정 청구항을 이러한 요소를 단지 하나만 포함하는 발명으로 제한하는 것으로 고려되어서는 안되며, 동일한 청구항이 도입 문구 "하나 이상" 또는 "적어도 하나" 및 수식어 ""하나의"를 포함하는 경우에도 그러하다.

Claims (10)

  1. 보안 프로세싱 볼트(a secure processing vault) 내에서 암호화/인코딩된 디지털 콘텐츠를 수신하는 단계와,
    상기 보안 프로세싱 볼트 내에서 상기 암호화/인코딩된 디지털 콘텐츠를 해독하는 단계(decrypting) - 상기 해독은 상기 보안 프로세싱 볼트에 대해 외부인(external) 임의의 프로세스로부터 격리되는 인코딩된 디지털 콘텐츠를 얻게 함 - 와,
    상기 보안 프로세싱 볼트 내에서 상기 인코딩된 디지털 콘텐츠를 디코딩하는 단계 - 상기 디코딩은 디코딩된 디지털 콘텐츠를 얻게 함 - 와,
    상기 디코딩된 디지털 콘텐츠를 상기 보안 프로세싱 볼트에 대해 외부인 하나 이상의 프로세스에 제공하는 단계를 포함하는
    컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 보안 프로세싱 볼트는, 상기 보안 프로세싱 볼트가 닫히면(locked), 외부적으로 액세스 가능하지 않은 부착된 프로세싱 유닛 및 격리된 로컬 저장 영역을 포함하는
    컴퓨터 구현 방법.
  3. 제 2 항에 있어서,
    상기 부착된 프로세싱 유닛에서 메인 프로세싱 유닛으로부터의 스레드 요청(a thread request)을 수신하는 단계와,
    상기 스레드 요청을 수신하는 단계에 응답하여, 상기 해독하는 단계 및 상기 디코딩하는 단계에 앞서 상기 보안 프로세싱 볼트를 닫는 단계와,
    상기 보안 프로세싱 볼트를 닫는 것에 이어서 상기 수신된 스레드 요청을 인증하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  4. 제 3 항에 있어서,
    상기 부착된 프로세싱 유닛에서 상기 메인 프로세싱 유닛으로부터의 복수의 암호화/인코딩된 디지털 콘텐츠에 대응하는 복수의 스레드 요청을 수신하는 단계 - 상기 스레드 요청은 상기 복수의 스레드 요청에 포함되고, 상기 암호화/인코딩된 디지털 콘텐츠는 상기 복수의 암호화/인코딩된 디지털 콘텐츠에 포함됨 - 와,
    상기 복수의 스레드 요청을 수신하는 단계에 응답하여, 상기 보안 프로세싱 볼트 내에서 상기 복수의 스레드 요청 각각에 대한 상기 해독하는 단계, 상기 디코딩하는 단계 및 상기 제공하는 단계를 동시에 수행하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  5. 제 3 항 또는 제 4 항에 있어서,
    상기 인증하는 단계에 응답하여, 외부 저장 영역으로부터 상기 격리된 로컬 저장 영역으로 암호화된 장치 키를 검색하여 가져오는 단계(retrieving)와,
    상기 닫혀 있는 보안 프로세싱 볼트 내에서 상기 암호화된 장치 키를 해독하여 해독된 장치 키를 얻는 단계와,
    상기 해독된 장치 키를 사용하여 상기 보안 프로세싱 볼트 내에서 타이틀 키를 계산하는 단계와,
    상기 암호화된 디지털 콘텐츠의 해독을 위해 상기 보안 프로세싱 볼트 내에서 상기 타이틀 키를 사용하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  6. 제 2 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 부착된 프로세싱 유닛은 어드레스 변환 메커니즘을 사용하지 않고 물리적 어드레스 위치를 사용하여 상기 로컬 저장 영역에 액세스하는
    컴퓨터 구현 방법.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 방법은 복수의 보안 프로세싱 볼트를 포함하고 상기 보안 프로세싱 볼트는 상기 복수의 보안 프로세싱 볼트에 포함되며, 상기 복수의 보안 프로세싱 볼트 각각은 부착된 프로세싱 유닛 및 로컬 저장 영역을 포함하고,
    상기 디코딩하는 단계는
    상기 보안 프로세싱 볼트에서 상기 인코딩된 디지털 콘텐츠를 부분적으로 디코딩하여, 부분적으로 디코딩된 디지털 콘텐츠를 얻는 단계와,
    상기 보안 프로세싱 볼트 내에서 상기 부분적으로 디코딩된 디지털 콘텐츠를 암호화하여, 암호화되고 부분적으로 디코딩된 디지털 콘텐츠를 얻는 단계와,
    상기 암호화되고 부분적으로 디코딩된 디지털 콘텐츠를 상기 복수의 보안 프로세싱 볼트에 포함된 다른 보안 프로세싱 볼트로 송신하는 단계와,
    상기 다른 보안 프로세싱 볼트에서, 상기 암호화되고 부분적으로 디코딩된 디지털 데이터를 해독하여, 상기 부분적으로 디코딩된 디지털 콘텐츠를 얻는 단계와,
    상기 다른 보안 프로세싱 볼트 내에서 상기 부분적으로 디코딩된 디지털 콘텐츠를 추가적으로 디코딩하여 디코딩된 디지털 콘텐츠를 얻는 단계를 더 포함하는
    컴퓨터 구현 방법.
  8. 하나 이상의 보안 프로세싱 볼트를 포함하는 장치로서,
    상기 보안 프로세싱 볼트 각각은
    암호화/인코딩된 디지털 콘텐츠를 수신하고,
    상기 암호화/인코딩된 디지털 콘텐츠를 해독하여, 상기 보안 프로세싱 볼트에 대해 외부인 임의의 프로세스로부터 격리되는 인코딩된 디지털 콘텐츠를 얻으며,
    상기 인코딩된 디지털 콘텐츠를 디코딩하여 디코딩된 디지털 콘텐츠를 얻고,
    상기 디코딩된 디지털 콘텐츠를 상기 보안 프로세싱 볼트에 대해 외부인 하나 이상의 프로세스에 제공하도록 구성되는
    장치.
  9. 정보 처리 시스템으로서,
    메인 프로세싱 유닛과,
    부착된 프로세싱 유닛과,
    격리된 로컬 저장 영역과,
    디지털 콘텐츠를 프로세싱하는 디지털 콘텐츠 프로세싱 툴을 포함하되,
    상기 디지털 콘텐츠 프로세싱 툴은
    상기 부착된 프로세싱 유닛 및 상기 격리된 로컬 저장 영역을 포함하는 보안 프로세싱 볼트에서 암호화/인코딩된 디지털 콘텐츠를 수신하고,
    상기 보안 프로세싱 볼트 내에서 상기 암호화/인코딩된 디지털 콘텐츠를 해독하여, 상기 보안 프로세싱 볼트에 대해 외부인 임의의 프로세스로부터 격리되는 인코딩된 디지털 콘텐츠를 얻으며,
    상기 보안 프로세싱 볼트 내에서 상기 인코딩된 디지털 콘텐츠를 디코딩하여 디코딩된 디지털 콘텐츠를 얻고,
    상기 디코딩된 디지털 콘텐츠를 상기 보안 프로세싱 볼트에 대해 외부인 하나 이상의 프로세스에 제공하는
    정보 처리 시스템.
  10. 컴퓨터 상에서 실행되면 제 1 항 내지 제 7 항 중 어느 한 항에 기재된 방법을 수행하도록 구성되는 프로그램 코드 수단을 포함하는
    컴퓨터 프로그램.
KR1020097006162A 2006-09-12 2007-08-31 컴퓨터 구현 방법, 장치, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체 KR101055091B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/530,940 2006-09-12
US11/530,940 US7660769B2 (en) 2006-09-12 2006-09-12 System and method for digital content player with secure processing vault
PCT/EP2007/059124 WO2008031729A1 (en) 2006-09-12 2007-08-31 System and method for digital content player with secure processing vault

Publications (2)

Publication Number Publication Date
KR20090051235A true KR20090051235A (ko) 2009-05-21
KR101055091B1 KR101055091B1 (ko) 2011-08-08

Family

ID=39047184

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097006162A KR101055091B1 (ko) 2006-09-12 2007-08-31 컴퓨터 구현 방법, 장치, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체

Country Status (5)

Country Link
US (1) US7660769B2 (ko)
EP (1) EP2059887B1 (ko)
KR (1) KR101055091B1 (ko)
TW (1) TWI427501B (ko)
WO (1) WO2008031729A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7945789B2 (en) * 2006-09-12 2011-05-17 International Business Machines Corporation System and method for securely restoring a program context from a shared memory
US8095802B2 (en) * 2006-09-12 2012-01-10 International Business Machines Corporation System and method for securely saving a program context to a shared memory
US7660769B2 (en) * 2006-09-12 2010-02-09 International Business Machines Corporation System and method for digital content player with secure processing vault
US8190917B2 (en) * 2006-09-12 2012-05-29 International Business Machines Corporation System and method for securely saving and restoring a context of a secure program loader
US8181038B2 (en) * 2007-04-11 2012-05-15 Cyberlink Corp. Systems and methods for executing encrypted programs
TWI426449B (zh) * 2009-10-23 2014-02-11 Dynalab Singapore Ltd 用手機執行軟體虛擬化服務的方法
US8904190B2 (en) * 2010-10-20 2014-12-02 Advanced Micro Devices, Inc. Method and apparatus including architecture for protecting sensitive code and data
US8800050B2 (en) 2010-11-09 2014-08-05 Microsoft Corporation Security system for computing resources pre-releases
US8943330B2 (en) 2011-05-10 2015-01-27 Qualcomm Incorporated Apparatus and method for hardware-based secure data processing using buffer memory address range rules
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
US9836619B1 (en) * 2017-02-13 2017-12-05 Tunego, Inc. Digital vault for music owners
US11250111B2 (en) 2017-02-13 2022-02-15 Tunego, Inc. Tokenized media content management
US11604858B2 (en) 2017-02-13 2023-03-14 Tunego, Inc. Media content management
US10860694B2 (en) 2017-02-13 2020-12-08 Tunego, Inc. Systems and methods for content metadata management
US11256788B2 (en) 2017-02-13 2022-02-22 Tunego, Inc. Tokenized media content management
US11687628B2 (en) 2017-02-13 2023-06-27 Tunego, Inc. Non-fungible token (NFT) authenticity protocol with fraud deterrent
CN106941620B (zh) * 2017-03-31 2019-11-12 武汉斗鱼网络科技有限公司 一种Flash资源加载方法及装置
US11392637B2 (en) 2019-07-10 2022-07-19 Tunego, Inc. Systems and methods for content metadata management
US20210357515A1 (en) * 2020-05-18 2021-11-18 Gsi Technology Inc. Secure similarity search for sensitive data

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7095854B1 (en) * 1995-02-13 2006-08-22 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
EP1555591B1 (en) 1995-02-13 2013-08-14 Intertrust Technologies Corp. Secure transaction management
US6529602B1 (en) * 1997-08-19 2003-03-04 Walker Digital, Llc Method and apparatus for the secure storage of audio signals
US7092914B1 (en) * 1997-11-06 2006-08-15 Intertrust Technologies Corporation Methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
US6732275B1 (en) * 1999-03-23 2004-05-04 Samsung Electronics Co., Ltd. Securing encrypted files in a PC and PC peripheral environment
US20020012432A1 (en) * 1999-03-27 2002-01-31 Microsoft Corporation Secure video card in computing device having digital rights management (DRM) system
US7073063B2 (en) * 1999-03-27 2006-07-04 Microsoft Corporation Binding a digital license to a portable device or the like in a digital rights management (DRM) system and checking out/checking in the digital license to/from the portable device or the like
US7051005B1 (en) * 1999-03-27 2006-05-23 Microsoft Corporation Method for obtaining a black box for performing decryption and encryption functions in a digital rights management (DRM) system
US7270193B2 (en) 2000-02-14 2007-09-18 Kabushiki Kaisha Toshiba Method and system for distributing programs using tamper resistant processor
US7054949B2 (en) * 2001-01-19 2006-05-30 World Streaming Network, Inc. System and method for streaming media
JP2002229447A (ja) * 2001-01-30 2002-08-14 Nippon Telegr & Teleph Corp <Ntt> デジタルコンテンツ流通における著作権保護システム
US6876984B2 (en) * 2001-05-31 2005-04-05 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
TWI227846B (en) * 2001-11-20 2005-02-11 Contentguard Holdings Inc Method and apparatus managing the transfer of rights
US20040044774A1 (en) * 2002-09-04 2004-03-04 Ruchi Mangalik System for providing content sharing and method therefor
US7308573B2 (en) * 2003-02-25 2007-12-11 Microsoft Corporation Enrolling / sub-enrolling a digital rights management (DRM) server into a DRM architecture
US7370212B2 (en) * 2003-02-25 2008-05-06 Microsoft Corporation Issuing a publisher use license off-line in a digital rights management (DRM) system
KR100493904B1 (ko) * 2003-09-18 2005-06-10 삼성전자주식회사 다수의 기기를 지원하는 drm 라이센스 방법
US7465231B2 (en) * 2004-05-20 2008-12-16 Gametap Llc Systems and methods for delivering content over a network
JP4447977B2 (ja) 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
JP4380480B2 (ja) * 2004-09-16 2009-12-09 ソニー株式会社 ライセンス処理装置,プログラム,およびライセンス処理方法
US20060064756A1 (en) * 2004-09-17 2006-03-23 Ebert Robert F Digital rights management system based on hardware identification
US7660769B2 (en) * 2006-09-12 2010-02-09 International Business Machines Corporation System and method for digital content player with secure processing vault

Also Published As

Publication number Publication date
EP2059887A1 (en) 2009-05-20
US7660769B2 (en) 2010-02-09
US20080065547A1 (en) 2008-03-13
EP2059887B1 (en) 2013-02-27
TW200821891A (en) 2008-05-16
TWI427501B (zh) 2014-02-21
WO2008031729A1 (en) 2008-03-20
KR101055091B1 (ko) 2011-08-08

Similar Documents

Publication Publication Date Title
KR101055091B1 (ko) 컴퓨터 구현 방법, 장치, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체
US11651113B2 (en) Program execution device
KR101030354B1 (ko) 그래픽 시스템에서 컴포넌트들의 인증을 위한 방법, 시스템, 컴퓨팅 디바이스, 및 컴퓨터 판독가능 매체
EP2580704B1 (en) Methods and apparatuses for securing playback content comprising sensitive and non-sensitive data
US7810163B2 (en) Secure media path methods, systems, and architectures
EP2107486B1 (en) Method and apparatus for providing a secure display window inside the primary display
TWI364682B (en) Method and system for secure system-on-a-chip architecture for multimedia data processing
US8677142B2 (en) Method and system for protecting against the execution of unauthorized software
US8826037B2 (en) Method for decrypting an encrypted instruction and system thereof
US9342666B2 (en) Providing security support for digital rights management in different formats
US9483626B2 (en) Multi-security-CPU system
US9177121B2 (en) Code protection using online authentication and encrypted code execution
US9025768B2 (en) Securing variable length keyladder key
US20170371808A1 (en) Direct memory access encryption with application provided keys
US11790050B2 (en) Systems and methods for securely processing content
Mohanty et al. Media data protection during execution on mobile platforms–A review
US11283600B2 (en) Symmetrically encrypt a master passphrase key
Shimizu et al. Cell Broadband Engine™ processor security architecture and digital content protection

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150728

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160801

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170725

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180727

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190730

Year of fee payment: 9