KR20070086051A - 보안 데이터 프로세싱 및 전송을 위한 방법들 및 장치들 - Google Patents

보안 데이터 프로세싱 및 전송을 위한 방법들 및 장치들 Download PDF

Info

Publication number
KR20070086051A
KR20070086051A KR1020077013169A KR20077013169A KR20070086051A KR 20070086051 A KR20070086051 A KR 20070086051A KR 1020077013169 A KR1020077013169 A KR 1020077013169A KR 20077013169 A KR20077013169 A KR 20077013169A KR 20070086051 A KR20070086051 A KR 20070086051A
Authority
KR
South Korea
Prior art keywords
data
additional processing
processing unit
key
encrypted
Prior art date
Application number
KR1020077013169A
Other languages
English (en)
Other versions
KR100924043B1 (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 KR20070086051A publication Critical patent/KR20070086051A/ko
Application granted granted Critical
Publication of KR100924043B1 publication Critical patent/KR100924043B1/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • 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/74Protecting 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 operating in dual or compartmented mode, i.e. at least one secure mode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Systems (AREA)

Abstract

본 발명에 따르면, 프로세싱 유닛을 하나 이상의 복수의 동작 모드들에 있게 하기 위한 방법들 및 장치들이 제공된다: 장치는 로컬 메모리, 정보를 로컬 메모리에 대하여 운반하도록 동작가능한 버스, 데이터를 처리하도록 동작가능하고 로컬 메모리에 연결된 하나 이상의 연산 프로세싱 유닛들, 및 장치를 동작 모드들에 있게 하도록 동작가능한 보안 회로를 포함하고; 복수의 동작 모드들은, 장치 및 외부 디바이스가 버스를 통한 메모리에 대한 정보의 전송을 개시하는 제 1 모드, 장치와 외부 디바이스가 버스를 통한 메모리에 대한 정보의 전송을 개시하지 않는 제 2 모드, 장치가 버스를 통한 메모리에 대한 정보의 전송을 개시하고 외부 디바이스는 버스를 통한 메모리에 대한 정보의 전송을 개시하지 않는 제 3 모드를 포함한다.
로컬 메모리, 버스, 보안 회로, 외부 디바이스, 연산 프로세싱 유닛

Description

보안 데이터 프로세싱 및 전송을 위한 방법들 및 장치들{Methods and apparatus for secure data processing and transmission}
본 발명은, 예를 들어 광대역 환경에서의 보안 데이터 프로세싱을 위한 멀티프로세서 아키텍쳐(architecture)를 이용하는 보안 데이터 프로세싱을 위한 방법들 및 장치들에 관한 것이다.
실시간, 멀티미디어, 네트워크 어플리케이션(application)들은 중요성이 증가하고 있다. 이러한 네트워크 어플리케이션들은, 초당 수천 메가비트(megabit)의 데이터와 같은 극히 빠른 프로세싱 속도를 필요로 한다. 인터넷과 같은 통상의 네트워크 아키텍쳐들, 및 예를 들어 자바(Java) 모델에서 현재 실시되는 프로그래밍 모델들은, 이러한 프로세싱 속도들에 도달하는 것을 극히 어렵게 한다.
오피스(office) 네트워크들에서 사용되는 근거리 네트워크들 및 인터넷과 같은 국제 네트워크들과 같은 통상의 컴퓨터 네트워크들의 컴퓨터들 및 컴퓨팅 디바이스(device)들은, 주로 독립형 컴퓨팅을 위해 디자인되었다. 컴퓨터 네트워크에서의 데이터 및 어플리케이션 프로그램들("어플리케이션들")의 공유는 이러한 컴퓨터들 및 컴퓨팅 디바이스들의 주요한 디자인 목적이 아니었다. 이러한 컴퓨터들 및 컴퓨팅 디바이스들은, 모토롤라(Motorola), 인텔(Intel), 텍사스 인스트루먼 츠(Texas Instruments), 소니(Sony) 등과 같은 다양한 다른 제조업자들에 의해 만들어진 넓게 분류된 다른 프로세서들을 이용하여 전형적으로 디자인되었다. 이러한 프로세서들 각각은, 이러한 명령들을 수행하기 위해 주요한 연산 유닛들 및 메모리 유닛들에 대한, 자신의 특정 명령 세트 및 명령 세트 아키텍쳐(ISA; instruction set architecture), 즉 자신의 특정 세트의 어셈블리 언어 명령들 및 구조를 가진다. 프로그래머는, 이러한 프로세서들에 대한 어플리케이션들을 기록하기 위해 각각의 프로세서의 명령 세트 및 ISA(instruction set architecture)를 이해하는 것이 필요하다. 오늘날의 컴퓨터 네트워크들에 대한 컴퓨터들 및 컴퓨팅 디바이스들의 이러한 혼성 조합은, 데이터 및 어플리케이션들의 프로세싱 및 공유를 복잡하게 한다. 동일 어플리케이션의 복수의 버젼(version)들은, 이러한 혼성 환경을 수용하는 것이 종종 필요하다.
국제 네트워크들, 특히 인터넷에 연결된 컴퓨터들 및 컴퓨팅 디바이스들의 유형들은 광범위하다. 개인 컴퓨터들 및 서버들에 추가하여, 이러한 컴퓨팅 디바이스들은 휴대폰들, 이동 컴퓨터들, PDA(personal digital assistant)들, 셋톱 박스(set top box)들, 디지털 텔레비젼들 등을 포함한다. 이렇게 분류된 컴퓨터들 및 컴퓨팅 디바이스들 사이의 데이터 및 어플리케이션들의 공유는, 실질적인 문제점들을 제시한다.
많은 기술들이 이러한 문제점들을 극복하기 위해 이용되어 왔다. 이러한 기술들은 섬세한 인터페이스(interface)들 및 복잡한 프로그래밍 기술들을 포함한다. 이러한 솔루션(solution)들은 처리 능력의 실질적인 증가를 요구한다. 이러한 솔루 션들은, 어플리케이션들을 처리하고 네트워크들을 거쳐 데이터를 전송하는 데에 필요한 시간의 실질적인 증가를 일으킨다.
데이터는 전형적으로 대응하는 어플리케이션들로부터 인터넷을 거쳐 전송된다. 이러한 방법은, 어플리케이션에 대응하는 전송된 데이터의 각각의 세트를 가진 어플리케이션을 보낼 필요를 방지한다. 이러한 방법은 필요한 대역폭의 양을 최소화하는 반면에, 종종 사용자들을 실망시킨다. 전송된 데이터에 대한 적절한 어플리케이션, 또는 최신 어플리케이션이 고객의 컴퓨터에서 이용가능하지 않을 수 있다. 이러한 방법은, 네트워크에 대하여 프로세서들에 의해 이용되는 다수의 다른 ISA들 및 명령 세트들에 대한 각각의 어플리케이션의 다수의 버젼들의 기록을 필요로 한다.
자바 모델은 이러한 문제점을 해결하려고 시도하고 있다. 이러한 모델은 엄격한 보안 프로토콜(protocol)을 따르는 작은 어플리케이션("애플릿(applet)")을 이용한다. 애플릿들은, 고객 컴퓨터("고객")에 의해 실행되기 위해 네트워크를 거쳐 서버 컴퓨터로부터 보내진다. 동일한 애플릿의 다른 버젼들을 다른 ISA들을 이용하는 고객들로 보내야 하는 것을 방지하기 위해, 모든 자바 애플릿들은 고객의 자바 가상 머신에서 실행된다. 자바 가상 머신은, 자바 ISA 및 자바 명령 세트를 가지는 컴퓨터를 에뮬레이트(emulate)하는 소프트웨어이다. 그러나, 이러한 소프트웨어는 고객의 ISA 및 고객의 명령 세트에서 실행된다. 고객들의 각각의 다른 ISA 및 명령 세트에 대한 일 버젼의 자바 가상 머신이 제공된다. 따라서, 복수의 다른 버젼들의 각각의 애플릿이 필요하지 않다. 각각의 고객은, 모든 자바 애플릿들을 실행시키기 위해 특정 ISA 및 명령 세트에 대한 적절한 자바 가상 머신만을 다운로드한다.
각각의 다른 ISA 및 명령 세트에 대한 다른 버젼들의 어플리케이션을 기록해야 하는 문제점에 대한 솔루션을 제공하더라도, 자바 프로세싱 모델은 고객의 컴퓨터에 대한 추가 층의 소프트웨어를 필요로 한다. 이러한 추가 층의 소프트웨어는 프로세서의 프로세싱 속도를 의미심장하게 감소시킨다. 이러한 속도 감소는, 실시간 멀티미디어 어플리케이션들에 대하여 특히 의미심장하다. 다운로드된 자바 애플릿은 또한 바이러스들, 프로세싱 오작동들 등을 포함한다. 이러한 바이러스들 및 오작동들은 고객의 데이터베이스를 오염시키고 다른 손상을 일으킬 수 있다. 자바 모델에서 이용되는 보안 프로토콜은, 소프트웨어 "샌드박스(sandbox)", 즉 자바 애플릿이 데이터를 기록할 수 없는 고객의 메모리 내의 공간을 이용하여 이러한 문제점을 극복하려고 할지라도, 이러한 소프트웨어-구동 보안 모델은 실시형태에서 종종 비보안 상태이며 훨씬 더 많은 프로세싱을 필요로 한다.
그러므로, 당업계에서는 셀 아키텍쳐(cell architecture) 내의 데이터의 보안 프로세싱을 위한 새로운 방법들 및 장치들에 대한 필요가 있다.
새로운 컴퓨터 (및 네트워크) 아키텍쳐는, 이상에서 논의된 문제점들 중 적어도 일부를 극복하기 위해 또한 개발되었다. 이러한 새로운 컴퓨터 아키텍쳐에 따르면, 컴퓨터 네트워크의 모든 구성요소들, 즉 네트워크의 모든 컴퓨터들 및 컴퓨팅 디바이스들은, 통상의 컴퓨팅 모듈( 또는 셀)로부터 만들어진다. 이러한 통상의 컴퓨팅 모듈은 일관된 구조를 가지고 바람직하게는 동일한 ISA를 이용한다. 네트워크의 구성요소들은, 예를 들어 고객들, 서버들, PC들, 이동 컴퓨터들, 게임 기계들, PDA들, 셋톱 박스들, 어플라이언스(appliance)들, 디지털 텔레비젼들 및 컴퓨터 프로세서들을 이용하는 다른 디바이스들일 수 있다. 일관된 모듈 구조는, 네트워크의 구성요소들에 의한 어플리케이션들 및 데이터의 효율적인 고속 프로세싱, 및 네트워크를 통한 어플리케이션들 및 데이터의 고속 전송을 가능하게 한다. 이러한 구조는 또한 다양한 크기들 및 처리 능력의 네트워크의 구성요소들의 형성 및 이러한 구성요소들에 의한 프로세싱을 위한 어플리케이션들의 준비를 단순화시킨다.
새로운 컴퓨터 아키텍쳐는, 데이터 및 어플리케이션들을 네트워크를 통해 전송하고 데이터 및 어플리케이션들을 네트워크의 구성요소들 사이에서 처리하는 것을 고려하는 새로운 프로그래밍 모델을 이용한다. 이러한 프로그래밍 모델은, 네트워크의 구성요소들 중 어느 하나에 의해 처리하기 위해 네트워크를 거쳐 전송되는 소프트웨어 셀을 이용한다. 각각의 소프트웨어 셀은 동일한 구조를 가지고, 어플리케이션들 및 데이터 모두를 포함할 수 있다. 모듈 컴퓨터 아키텍쳐에 의해 제공되는 고속 프로세싱 및 전송 속도로 인하여, 이러한 셀들은 빠르게 처리될 수 있다. 어플리케이션들에 대한 코드는 바람직하게는 동일한 통상의 명령 세트 및 ISA에 근거한다. 각각의 소프트웨어 셀은, 바람직하게는 국제 ID(global identification), 및 셀의 프로세싱을 위해 필요한 컴퓨팅 자원들의 양을 기술하는 정보를 포함한다. 모든 컴퓨팅 자원들이 동일한 기본 구조를 가지고 동일한 ISA를 이용하기 때문에, 이러한 프로세싱을 수행하는 특정 자원은 네트워크에 대하여 도처에 위치되고 동적으로 할당될 수 있다.
기본 프로세싱 모듈은 프로세서 요소(PE; processor element)이다. PE는 바람직하게는 프로세싱 유닛(PU; processing unit), 직접 메모리 접근 제어기(DMAC; direct memory access controller), 및 통상의 내부 주소 및 데이터 버스를 통해 연결된 4개의 APU(attached processing unit)들과 같은 복수의 부가 프로세싱 유닛들을 포함한다. PU 및 APU들은 크로스-바(cross-bar) 아키텍쳐를 가진 공유 동적 임의 접근 메모리(DRAM; dynamic random access memory)와 상호작용한다. PU는 APU들에 의해 데이터 및 어플리케이션들의 프로세싱을 스케줄링하고 조정한다. APU들은 이러한 프로세싱을 병렬 및 독립적 방식으로 수행한다. DMAC는, PU 및 APU들에 의한 공유 DRAM 내에 저장된 데이터 및 어플리케이션들로의 접근들을 제어한다.
이러한 모듈 구조에 따라서, 네트워크의 구성요소에 의해 이용되는 PE들의 개수는 이러한 구성요소에 의해 필요한 처리 능력에 근거한다. 예를 들어, 서버는 4개의 PE들을 이용하고, 워크스테이션은 2개의 PE들을 이용하며, PDA는 하나의 PE를 이용한다. 특정 소프트웨어 셀의 프로세싱에 할당된 PE의 APU들의 개수는, 셀 내의 프로그램들 및 데이터의 복잡함과 크기에 의존한다.
복수의 PE들은 공유 DRAM과 관련되고, DRAM은 복수의 섹션들로 분리되며, 이러한 섹션들 각각은 복수의 메모리 뱅크들로 분리된다. DRAM의 각각의 섹션은 뱅크 제어기에 의해 제어되고, PE의 각각의 DMAC는 각각의 뱅크 제어기에 접근한다. 각각의 PE의 DMAC는 이러한 구성에서 공유 DRAM의 일 부분에 접근한다.
DRAM은, 또 다른 APU에 의해 처리되는 프로그램에 대한 데이터로부터 하나의 APU에 의해 처리되는 프로그램에 대한 데이터의 오염을 방지하는 보안의 수준을 제공하는 샌드박스들을 포함한다. 각각의 샌드박스는, 특정 APU 또는 APU들의 세트가 데이터를 판독하거나 기록할 수 없는 공유 DRAM의 영역을 정의한다.
샌드박스들의 사용이, 데이터 오염에 대한 일부 보안 측정을 제공하지만, 의도적인 소프트웨어 저작권침해의 이슈에는 집중하지 않는다. 주어진 PE 내의 복수의 APU들이 통상의 내부 버스를 통해 연결되어 있기 때문에, 하나의 APU에서 실행되는 소프트웨어는 또 다른 APU에 의해 감시된다. 광대역 네트워크 상황에서, 주어진 PE 내의 2개 이상의 APU들이 다른 어플리케이션 프로그램들을 실행시키는 것이 바람직하다. 높은 시스템 유연성을 확보하기 위해, 이러한 소프트웨어 프로그램들이 다른 소프트웨어 개발 회사들과 같은 다른 엔티티(entity)들로부터 얻어지는 것을 허용하는 것이 바람직하다. 예를 들어, 소프트웨어 개발 회사는 소프트웨어 어플리케이션이 보안 상태에 있고 복사되지 않거나 감시되는 것에 대한 보증을 원한다.
본 발명의 하나 이상의 실시형태들에 따른 장치는: 로컬 메모리(local memory); 로컬 메모리에 대하여 정보를 운반하도록 동작가능한 버스; 데이터를 처리하도록 동작가능하며 로컬 메모리에 영향을 미치며 결합된 하나 이상의 연산 프로세싱 유닛들; 및 장치를 복수의 동작 모드(mode)들 중 적어도 하나에 있도록 동작가능한 보안 회로를 포함하고, 장치 및 외부 디바이스가 버스를 통한 메모리에 대한 정보의 전송을 개시하는 제 1 모드, 장치와 외부 디바이스가 버스를 통한 메모리에 대한 정보의 전송을 개시하지 않는 제 2 모드, 및 장치가 버스를 통한 메모리에 대한 정보의 전송을 개시하지만 외부 디바이스가 버스를 통한 메모리에 대한 정보의 전송을 개시하지 않는 제 3 모드를 포함한다.
본 발명의 하나 이상의 추가적인 실시형태들에 따르면, 보안 회로는 장치가 2개의 동작 모드들 중 적어도 하나에 있도록 동작가능하며, 2개의 동작 모드들은: (i) 장치 및 외부 디바이스가 버스를 통한 로컬 메모리에 대한 정보의 전송을 개시하는 제 1 모드, 및 장치가 버스를 통한 로컬 메모리에 대한 정보의 전송을 개시하지만 외부 디바이스가 버스를 통한 로컬 메모리에 대한 정보의 전송을 개시하지 않는 제 3 모드; 및 (ii) 장치와 외부 디바이스가 버스를 통한 메모리에 대한 정보의 전송을 개시하지 않는 제 2 모드, 및 상기 제 3 모드 중 하나를 포함한다.
보안 회로는 바람직하게는 보안 회로 외부의 디바이스들에 의해 접근가능하지 않은 비밀 데이터 영역을 포함하고, 비밀 데이터 영역은 제 1 키 및 제 2 키를 포함한다. 보안 회로는 또한 바람직하게는 보안 회로 외부의 디바이스들에 의해 접근가능한 접근가능 데이터 영역을 포함한다. 게다가, 보안 회로는, 장치가 제 2 모드에 있을 때 제 1 키의 복사본을 접근가능 데이터 영역 내에 위치시키도록 동작가능한 논리 회로를 포함한다. 바람직하게는, 제 1 키 및 제 2 키는 보안이 장치의 사용 이전에 유지되는 제어된 프로세스에서 비밀 데이터 영역 내에 저장된다.
보안 회로는, 바람직하게는 장치가, 해독 프로그램을 실행하는 단계 및 인증 루틴(routine)을 실행하는 단계를 포함하는 인증 루틴을 실행할 때 제 2 모드에 있게 하며, 인증 프로그램은 제 2 키의 복사본을 포함하고, 인증 프로그램은 제 1 키에 따라서 암호화되어 있다. 장치는, 접근가능 데이터 영역 내에 포함된 제 1 키의 복사본이 인증 프로그램을 해독하는 데에 이용되도록 해독 프로그램을 실행한다.
보안 회로의 논리 회로는 바람직하게는 인증 프로그램의 실행에 반응하여 제 2 키의 복사본을 접근가능 데이터 영역 내에 위치시키고; 논리 회로는 인증 프로그램 내에 포함된 제 2 키의 복사본이 접근가능 데이터 영역 내에 포함된 제 2 키의 복사본에 부합하는지 여부에 대한 결정을 행한다.
인증 프로그램 내에 포함된 제 2 키의 복사본이 접근가능 데이터 영역 내에 포함된 제 2 키의 복사본에 부합할 때 장치가 제 3 모드에 있도록 동작가능하다.
본 발명의 하나 이상의 추가적인 실시형태들에 따르면, 복수의 상술한 장치들은 단일 디바이스 내에 배치된다.
본 발명의 하나 이상의 추가적인 실시형태들에 따른 한 방법은 장치가 복수의 동작 모드들 중 적어도 하나에 있는 단계를 포함하고, 장치가 로컬 메모리, 로컬 메모리에 대하여 정보를 운반하도록 동작가능한 버스, 데이터를 처리하도록 동작가능하며 영향을 미치며 로컬 메모리에 결합된 하나 이상의 연산 프로세싱 유닛들, 및 장치가 연산 모드들에 있도록 동작가능한 보안 회로를 포함하고; 복수의 동작 모드들은, 장치 및 외부 디바이스가 버스를 통한 메모리에 대한 정보의 전송을 개시하는 제 1 모드, 장치와 외부 디바이스가 버스를 통한 메모리에 대한 정보의 전송을 개시하지 않는 제 2 모드, 및 장치가 버스를 통한 메모리에 대한 정보의 전송을 개시하지만 외부 디바이스가 버스를 통한 메모리에 대한 정보의 전송을 개시하지 않는 제 3 모드를 포함한다.
본 발명의 하나 이상의 추가적인 실시형태들에 따른 한 장치는: 주 프로세싱 유닛; 각각이 로컬 메모리 및 해독 유닛을 포함하며 표준 모드의 동작 또는 보안 모드의 동작을 입력하도록 동작가능한 복수의 부가 프로세싱 유닛들; 및 공유 메모리를 포함하고, 주어진 부가 프로세싱 유닛이 표준 모드에 있을 때 주 프로세싱 유닛은, 공유 메모리와 해독 유닛을 우회하는 부가 프로세싱 유닛들 중 주어진 하나 사이의 데이터 전송들을 개시할 수 있고, 주 프로세싱 유닛은 (i) 주어진 부가 프로세싱 유닛으로부터 공유 메모리로의 데이터 전송들을 개시하거나 (ii) 주어진 부가 프로세싱 유닛이 보안 모드에 있을 때 공유 메모리로부터 해독 유닛을 우회하는 주어진 부가 프로세싱 유닛으로의 데이터 전송들을 개시할 수 없다.
부가 프로세싱 유닛들은 바람직하게는 표준 모드의 동작 또는 보안 모드의 동작에 있는지 여부에 상관없이 공유 메모리와의 데이터 전송들을 개시할 수 있다. 부가 프로세싱 유닛들은 하드웨어 리셋(reset) 조건 및 파워-업(power-up) 조건 중 적어도 하나에 대하여 보안 모드의 동작을 입력하도록 동작가능하다.
각각의 부가 프로세싱 유닛은, 바람직하게는 주어진 부가 프로세싱 유닛의 해독 유닛 및 인증된 엔티티들 중 적어도 하나에 의해서만 접근가능한 실질적으로 고유한 키를 포함하는 보안 스토어(store)를 포함한다. 각각의 부가 프로세싱 유닛의 해독 유닛은, 주어진 부가 프로세싱 유닛이 보안 모드의 동작에 있을 때 공유 메모리로부터 주 프로세싱 유닛에 의해 개시된 로컬 메모리로의 데이터 전송들을 해독하는 키를 이용한다. 각각의 부가 프로세싱 유닛은, 주어진 부가 프로세싱 유닛 및 장치 중 적어도 하나의 외부의 엔티티들에 알려진 실질적으로 고유한 ID와 관련된다.
암호화된 데이터는 장치의 외부에 있는 보안 엔티티에 의해 암호화되는 것이 바람직하고, 보안 엔티티는 주어진 부가 프로세싱 유닛의 키를 이용하도록 인증되어 있다. 보안 엔티티는 관여하는 부가 프로세싱 유닛들의 ID들 및 키들을 포함하는 데이터베이스를 포함하고, 주어진 부가 프로세싱 유닛에 대한 각각의 ID 및 키가 서로 관련되어 있다. 비보안 엔티티가, 키와 관련된 ID를 보안 엔티티로 제공한 이후에 주어진 부가 프로세싱 유닛의 키를 이용하여 주어진 부가 프로세싱 유닛의 키를 이용하도록 인증되지 않은 비보안 엔티티로부터 수신된 데이터를 암호화한다.
바람직하게는, 보안 엔티티는 암호화된 데이터를 비보안 엔티티로 제공하도록 동작가능하고; 비보안 엔티티는 암호화된 데이터를 공유 메모리 내에 저장하기 위해 장치로 제공하도록 동작가능하며; 암호화된 데이터가 해독 유닛으로 입력되도록 주 프로세싱 유닛은 공유 메모리로부터 주어진 부가 프로세싱 유닛으로 암호화된 데이터의 전송을 개시하도록 동작가능하고; 데이터가 주어진 부가 프로세싱 유닛의 로컬 메모리 내에 저장되도록 주어진 부가 프로세싱 유닛의 해독 유닛은 주어진 부가 프로세싱 유닛의 키를 이용하여 암호화된 데이터를 해독하도록 동작가능하다.
선택적으로, 주어진 부가 프로세싱 유닛의 키를 이용하도록 인증되지 않은 비보안 엔티티는, 바람직하게는 제 1 대칭 키를 이용하여 데이터를 암호화하고, 암호화된 데이터를 보안 엔티티로 제공하며, 주어진 부가 프로세싱 유닛과 관련된 ID를 보안 엔티티로 제공한다. 보안 엔티티는 바람직하게는 제 2 대칭 키를 이용하여 비보안 엔티티에 의해 제공된 암호화된 데이터를 해독하고, 비보안 엔티티로부터 수신된 ID와 관련된 주어진 부가 프로세싱 유닛의 키를 이용하여 데이터를 암호화한다.
비보안 엔티티는 바람직하게는 제 1 대칭 키를 이용하여 주어지 부가 프로세싱 유닛의 데이터 및 ID를 암호화하고, 암호화된 데이터/ID를 보안 엔티티로 제공한다. 최종적으로, 보안 엔티티는 제 2 대칭 키를 이용하여 암호화된 데이터를 암호화하고 암호화-암호화된 데이터를 비보안 엔티티로 제공하도록 동작가능하며; 비보안 엔티티는, 주어진 부가 프로세싱 유닛의 키를 이용하여 생성된 암호화된 데이터를 얻도록 제 1 대칭 키를 이용하여 암호화-암호화된 데이터를 해독하고, 암호화된 데이터를 공유 메모리 내에 저장하기 위해 장치로 제공하도록 동작가능하고; 암호화된 데이터가 해독 유닛으로 입력되도록 주 프로세싱 유닛이 공유 메모리로부터 주어진 부가 프로세싱 유닛으로의 암호화된 데이터의 전송을 개시하도록 동작가능하며; 데이터가 주어진 부가 프로세싱 유닛의 로컬 메모리 내에 저장되도록 주어진 부가 프로세싱 유닛의 해독 유닛은 주어진 부가 프로세싱 유닛의 키를 이용하여 암호화된 데이터를 해독하도록 동작가능하다.
또 다른 선택사항으로서, 데이터는 해독 프로그램이고; 주어진 부가 프로세싱 유닛의 키를 이용하도록 인증되지 않은 비보안 엔티티는 제 1 대칭 키를 이용하여 해독 프로그램을 암호화하고, 암호화된 해독 프로그램을 보안 엔티티로 제공하며, 주어진 부가 프로세싱 유닛과 관련된 ID를 보안 엔티티로 제공하고; 보안 엔티티는 제 2 대칭 키를 이용하여 비보안 엔티티에 의해 제공된 암호화된 해독 프로그램을 해독하고, 비보안 엔티티로부터 수신된 ID와 관련된 주어진 부가 프로세싱 유닛의 키를 이용하여 해독 프로그램 및 제 2 대칭 키를 암호화한다. 비보안 엔티티는, 바람직하게는 제 1 대칭 키를 이용하여 주어진 부가 프로세싱 유닛의 해독 프로그램 및 ID를 암호화하고, 암호화된 해독 프로그램/ID를 보안 엔티티로 제공한다.
바람직하게는, 보안 엔티티는 암호화된 해독 프로그램 및 제 2 대칭 키를 제 2 대칭 키를 이용하여 암호화하고 암호화-암호화된 해독 프로그램/제 2 대칭 키를 비보안 엔티티로 제공하도록 동작가능하며; 비보안 엔티티는 주어진 부가 프로세싱 유닛의 키를 이용하여 생성된 암호화된 해독 프로그램/제 2 대칭 키를 얻도록 제 1 대칭 키를 이용하여 암호화-암호화된 해독 프로그램/제 2 대칭 키를 해독하고, 암호화된 해독 프로그램/제 2 대칭 키를 공유 메모리 내에 저장하기 위해 장치로 제공하도록 동작가능하며; 암호화된 해독 프로그램/제 2 대칭 키가 해독 유닛으로 입력되도록 주 프로세싱 유닛이 공유 메모리로부터 주어진 부가 프로세싱 유닛으로의 암호화된 해독 프로그램/제 2 대칭 키의 전송을 개시하도록 동작가능하고; 해독 프로그램 및 제 2 대칭 키가 주어진 부가 프로세싱 유닛의 로컬 메모리 내에 저장되도록, 주어진 부가 프로세싱 유닛의 해독 유닛은 주어진 부가 프로세싱 유닛의 키를 이용하여 암호화된 해독 프로그램/제 2 대칭 키를 해독하도록 동작가능하다.
게다가, 비보안 엔티티는 제 1 대칭 키를 이용하여 데이터를 암호화하고 암호화된 데이터를 공유 메모리 내에 저장하기 위해 장치로 제공하도록 동작가능하다. 주어진 부가 프로세싱 유닛은 암호화된 데이터를 공유 메모리로부터 해독 유닛을 우회하는 로컬 메모리로 수신할 수 있다. 암호화된 데이터가 공유 메모리로부터 로컬 메모리로 수신될 때 주어진 부가 프로세싱 유닛은 표준 모드 또는 보안 모드에 있다. 주어진 부가 프로세싱 유닛은 해독 프로그램 및 제 2 대칭 키를 이용하여 암호화된 데이터를 해독하도록 동작가능하다. 주 프로세싱 유닛은 공유 메모리로부터 해독 유닛을 우회하는 주어진 부가 프로세싱 유닛의 로컬 메모리로 암호화된 데이터의 전송을 개시하도록 동작가능하다.
본 발명의 다른 태양들, 특징들 및 장점들은, 첨부된 도면들과 관련된 설명이 본 명세서에서 이루어질 때 당업자에게 명확해질 것이다.
설명을 위하여, 바람직한 실시형태들이 도면들에 도시되어 있지만, 본 발명은 도시된 것과 동일한 배열들 및 수단들에 제한되지 않는다.
도 1은 본 발명의 하나 이상의 실시형태들에 따른 예시적 컴퓨터 네트워크의 전체적 아키텍쳐를 도시하고;
도 2는 본 발명의 하나 이상의 실시형태들에 따른 멀티프로세서 시스템을 도시하는 블록도이며;
도 3은 본 발명의 하나 이상의 실시형태들에 따른 도 2의 시스템의 보안 회로의 구조를 도시하는 블록도이고;
도 4는 본 발명의 하나 이상의 실시형태들에 따른 인증 루틴을 달성하기 위해 도 2의 시스템에 의해 수행되는 처리 단계들의 일부를 도시하는 순서도이며;
도 5는 본 발명의 하나 이상의 실시형태들에 따른 인증 루틴을 달성하기 위 해 도 2의 시스템에 의해 수행되는 처리 단계들의 일부를 도시하는 순서도이고;
도 6은 본 발명의 하나 이상의 실시형태들에 따른 인증 루틴을 달성하기 위해 도 2의 시스템에 의해 수행되는 처리 단계들의 일부를 도시하는 순서도이며;
도 7은 본 발명의 하나 이상의 또 다른 실시형태들을 실시하는 데에 이용되는 바람직한 프로세서 요소(processor element; PE)를 도시하는 블록도이고;
도 8은 본 발명의 하나 이상의 또 다른 실시형태들에 따라 채택된 도 7의 시스템의 예시적 부 프로세싱 유닛(SPU; sub-processing unit)의 구조를 도시하는 블록도이며;
도 9는 본 발명의 하나 이상의 또 다른 실시형태들에 따라 채택된 도 7의 시스템의 예시적 프로세싱 유닛(PU; processing unit)의 구조를 도시하는 블록도이고;
도 10은 본 발명의 하나 이상의 실시형태들에 따른 보안 특징들을 가지는 프로세서의 블록도이며;
도 11은 본 발명의 특정 보안 특징들을 이용하도록 도 10의 프로세서를 이용하는 시스템의 블록도이고;
도 12는 본 발명에 따른 또 다른 보안 특징들을 이용하도록 도 10의 프로세서를 이용하는 시스템의 블록도이며;
도 13은 본 발명에 따른 또 다른 보안 특징들을 이용하도록 도 10의 프로세서를 이용하는 시스템의 블록도이고;
도 14는 도 13의 시스템의 또 다른 세부사항들을 도시하며;
도 15는 본 발명에 따른 또 다른 보안 특징들을 이용하도록 도 10의 프로세서를 이용하는 시스템의 블록도이고;
도 16은 본 발명에 따른 또 다른 보안 특징들을 이용하도록 도 10의 프로세서를 이용하는 시스템의 블록도이며;
도 17은 도 16의 시스템의 또 다른 세부사항들을 도시하고;
도 18은 본 발명의 하나 이상의 또 다른 실시형태들에 따른 복수의 프로세서들을 이용하는 시스템의 블록도이다.
본 발명에 따른 컴퓨터 시스템(1)에 대한 전체적 아키텍쳐는 도 1에 도시되어 있다. 시스템(1)은 복수의 컴퓨터들 및 컴퓨팅 디바이스들에 연결된 네트워크(4)를 포함한다. 네트워크(4)는 LAN, 인터넷과 같은 국제 네트워크, 또는 다른 컴퓨터 네트워크일 수 있다.
네트워크(4)에 연결된 컴퓨터들 및 컴퓨팅 디바이스들은, 예를 들어 고객 컴퓨터들(6), 서버 컴퓨터들(8), PDA(personal digital assistant; 10)들, 디지털 텔레비젼(DTV; digital television; 12) 및 다른 유무선 컴퓨터들 및 컴퓨팅 디바이스들을 포함한다. 네트워크(4)의 구성요소들에 의해 이용되는 프로세서들은 동일한 통상의 컴퓨팅 모듈로부터 형성될 수 있다. 이러한 프로세서들은 동일한 명령 세트에 따라서 동일한 ISA를 가지고 프로세싱을 수행하는 것이 바람직하다. 특정 프로세서 내에 포함된 모듈들의 개수는 상기 프로세서에 의해 필요한 처리 능력에 의존한다.
예를 들어, 시스템(1)의 서버들(8)은 고객들(6)보다 더 많은 데이터 및 어플리케이션들의 프로세싱을 수행하기 때문에, 서버들(8)은 고객들(6)보다 더 많은 컴퓨팅 모듈들을 포함한다. 예를 들어, PDA들(10)은 프로세싱의 최소량을 수행한다. 그러므로, PDA들(10)은 최소 개수의 컴퓨팅 모듈들을 포함한다. DTV(12)는 고객들(6)과 서버들(8) 사이의 일 수준의 프로세싱을 수행한다. 그러므로, DTV(12)는 고객들(6)과 서버들(8) 사이의 다수의 컴퓨팅 모듈들을 포함한다. 이하에서 논의된 것처럼, 각각의 컴퓨팅 모듈은, 네트워크(4)를 통하여 전송된 데이터 및 어플리케이션들의 병렬 프로세싱을 수행하도록 프로세싱 제어기 및 복수의 동일한 프로세싱 유닛들을 포함한다.
시스템(1)에 대한 이러한 동질적인 구성은 적응성, 프로세싱 속도 및 프로세싱 효율을 도모한다. 시스템(1)의 각각의 구성요소가 하나 이상의 동일 컴퓨팅 모듈을 이용하는 프로세싱을 수행하기 때문에, 데이터 및 어플리케이션들의 실제 프로세싱을 수행하는 특정 컴퓨터 또는 컴퓨팅 디바이스는 중요하지 않다. 게다가, 특정 어플리케이션 및 데이터의 프로세싱은 네트워크의 구성요소들 사이에서 공유될 수 있다. 시스템을 통하여 시스템(1)에 의해 처리되는 데이터 및 어플리케이션들을 포함하는 셀들을 고유하게 확인함으로써, 프로세싱 결과들은, 이러한 프로세싱이 어디에서 일어나는지에 상관없이 프로세싱을 요청하는 컴퓨터 또는 컴퓨팅 디바이스로 전송된다. 이러한 프로세싱을 수행하는 모듈들은 통상의 구조를 가지고 통상의 ISA를 이용하기 때문에, 프로세서들 사이의 호환성을 달성하는 소프트웨어의 추가층의 연산 부담들이 방지된다. 이러한 아키텍쳐 및 프로그래밍 모델은, 예 를 들어 실시간 멀티미디어 어플리케이션들을 실행하는 데에 필요한 프로세싱 속도를 증진시킨다.
시스템(1)에 의해 증가되는 프로세싱 속도들 및 효율성들의 또 다른 장점을 얻기 위하여, 시스템에 의해 처리되는 데이터 및 어플리케이션들은 고유하게 확인되고 고유하게 포맷된 소프트웨어 셀들(2)로 패키지된다. 각각의 소프트웨어 셀(2)은 어플리케이션들 및 데이터를 모두 포함하거나 포함할 수 있다. 각각의 소프트웨어 셀은 네트워크(4) 및 시스템(1)을 통하여 국제적으로 셀을 확인하는 ID를 또한 포함한다. 소프트웨어 셀들에 대한 구조의 이러한 균일성, 및 네트워크를 통한 소프트웨어 셀들의 고유 ID는, 네트워크의 컴퓨터 또는 컴퓨팅 디바이스에 대한 어플리케이션들 및 데이터의 프로세싱을 증진시킨다. 예를 들어, 고객(6)은 소프트웨어 셀(2)을 명확히 나타내지만, 고객(6)의 제한된 프로세싱 호환성들 때문에 이러한 소프트웨어 셀을 처리하기 위해 서버(8)로 전송한다. 소프트웨어 셀들(2)은, 네트워크(4)에 대한 프로세싱 자원들의 이용가능성에 근거한 프로세싱을 위해 네트워크(4)를 통하여 이동할 수 있다.
시스템(1)의 프로세서들 및 소프트웨어 셀들(2)의 동질적인 구조는 또한 오늘날의 동질적인 네트워크들의 많은 문제점들을 방지한다. 예를 들어, 자바 가상 기계와 같은 가상 기계들과 같은 명령 세트를 이용하는 ISA에 대한 어플리케이션들의 프로세싱을 허용하려는 비효율적인 프로그래밍 모델들이 방지된다. 그러므로, 시스템(1)은 통상의 네트워크들보다 더욱 효율적으로 광대역으로 처리될 수 있다.
도 2를 참조하면, 본 발명의 하나 이상의 특징들을 수행하기에 적합한 프로 세싱 시스템(100)의 적어도 일부분이 도시된다. 간결함과 명확함을 위하여, 도 2의 블록도는 장치(100)를 도시하도록 기술되고, 이러한 설명은 같은 효력을 가진 방법의 다양한 실시형태들에 적용된다.
프로세싱 시스템(100)은 복수의 프로세서들(102A, 102B, 102C 및 102D)을 포함하고, 임의의 개수의 프로세서들은 본 발명의 사상과 범위를 벗어나지 않고 이용될 수 있다. 프로세싱 시스템(100)은 또한 복수의 로컬 메모리들(104A, 104B, 104C, 104D) 및 공유 메모리(106)를 포함한다. 적어도 프로세서들(102), 로컬 메모리들(104), 및 공유 메모리(106)는 바람직하게는 적합한 프로토콜들에 따라 각각의 구성요소에 대해 데이터를 전송하도록 동작가능한 버스 시스템(108)을 거쳐 서로에게 (직접 또는 간접적으로) 연결된다.
프로세서들(102) 각각은 유사한 구성 또는 다른 구성일 수 있다. 프로세서들은, 데이터를 공유 메모리(106)로부터 요청하고, 요망되는 결과를 얻기 위해 데이터를 조작할 수 있는 임의의 공지된 기술들을 이용하여 실행될 수 있다. 예를 들어, 프로세서들(102)은, 표준 마이크로프로세서들, 분배된 마이크로프로세서들 등을 포함하여 소프트웨어 및/또는 펌웨어(firmware)를 실행할 수 있는 임의의 공지된 마이크로프로세서들을 이용하여 실행된다. 예를 들어, 하나 이상의 프로세서들(102)은, 그레이 스케일 정보(gray scale information), 색상 정보, 텍스쳐 데이터(texture data), 다각형 정보, 비디오 프레임 정보 등을 포함하여, 픽셀 데이터와 같은 데이터를 요청하고 조작할 수 있는 그래픽 프로세서일 수 있다.
시스템(100)의 하나 이상의 프로세서들(102)은 주 프로세서와 같은 역할을 행한다. 주 프로세서는 다른 프로세서들에 의해 데이터의 프로세싱을 스케줄링하고 조정한다.
시스템 메모리(106)는 바람직하게는 메모리 인터페이스 회로를 통해 프로세서들(102)에 연결된 동적 임의 접근 메모리이다. 시스템 메모리(106)가 바람직하게는 DRAM일지라도, 메모리(106)는, 정적 임의 접근 메모리(SRAM), 자기 임의 접근 메모리(MRAM), 광 메모리, 홀로그래픽(holographic) 메모리 등과 같은 다른 수단들을 이용하여 실행될 수 있다.
각각의 프로세서(102)는, 바람직하게는 프로세서 코어(processor core) 및 프로그램들을 실행하는 로컬 메모리들(104) 중 관련된 하나를 포함한다. 이러한 구성요소들은 디자이너의 요망에 따라서 통상의 반도체 기판 상에 통합적으로 배치되거나 분리되어 배치된다. 프로세서 코어는, 논리 명령들이 파이프라인(pipeline) 형태로 처리되는 프로세싱 파이프라인을 이용하여 실행되는 것이 바람직하다. 파이프라인이, 명령들이 처리되는 임의의 개수의 단계들로 분할될지라도, 파이프라인은 일반적으로 하나 이상의 명령들을 추출하는 것, 명령들을 해독하는 것, 명령들 사이의 종속성들을 검사하는 것, 명령들을 배포하는 것, 및 명령들을 실행하는 것을 포함한다. 이와 관련하여, 프로세서 코어는 명령 버퍼, 명령 해독 회로, 종속성 검사 회로, 명령 배포 회로, 및 실행 단계들을 포함한다.
각각의 로컬 메모리(104)는 버스를 경유하여 관련된 프로세서(102)에 연결되고 프로세서 코어와 같은 칩(반도체 기판) 상에 위치되는 것이 바람직하다. 로컬 메모리(104)는 바람직하게는 하드웨어 캐시 메모리 기능을 실행하는 온-칩 또는 오 프-칩 하드웨어 캐시 회로들, 캐시 레지스터들, 캐시 메모리 제어기들 등이 없는 전통적인 하드웨어 캐시 메모리가 아니다. 온 칩 공간이 종종 제한되기 때문에, 로컬 메모리의 크기는 공유 메모리(106)보다 훨씬 더 작다.
프로세서들(102)은, 바람직하게는 시스템 메모리(106)로부터 버스 시스템(108)을 거쳐 프로그램 실행 및 데이터 조작을 위한 각각의 로컬 메모리들(104)로 (프로그램 데이터를 포함하는) 데이터를 복사하기 위해 데이터 접근 요청들을 제공한다. 데이터 접근을 증진시키기 위한 메커니즘은, 임의의 공지된 기술들, 예를 들어 직접 메모리 접근 기술을 이용하여 실시될 수 있다. 이러한 기능은 바람직하게는 메모리 인터페이스 회로에 의해 수행된다.
도 3을 참조하면, 하나 이상의 프로세서들(102)은, 바람직하게는 프로세서(102)를 복수의 동작 모드들 중 적어도 하나에 있도록 동작가능한 보안 회로(150)를 포함한다. 보안 회로(150)는 비밀 데이터 영역(152), 접근 가능 데이터 영역(154), 및 논리 회로(156)를 포함한다. 비밀 데이터 영역(152)은 바람직하게는 보안 회로(150) 외부의 임의의 디바이스들에 의해 접근가능하지 않다. 접근가능 데이터 영역(154)은 바람직하게는 보안 회로(150) 외부의 디바이스들에 의해 접근가능하다. 비밀 데이터 영역(152) 및/또는 접근가능 데이터 영역(154)은, 로컬 메모리(106)의 각각의 부분들, 각각의 레지스터들, 및/또는 ROM들 등과 같은 각각의 다른 저장 디바이스들로서 실시될 수 있다.
바람직하게는, 제 1 키, KEY 1, 및 제 2 키, KEY 2는, 보안이 유지되는 프로세서(102)의 사용 전의 제어된 프로세스에서 보안 회로(150)의 비밀 데이터 영 역(152) 내에 저장된다. KEY 1 및 KEY 2는, 프로세서(102)를 인증하고 신뢰받은 디바이스로서 여기기 위해 이용된다는 것이 고려된다. 그러므로, 프로세서(102)가 사용되고 제조과정과 같이 사용되기 전에 있을 때, KEY 1 및 KEY 2는 비밀로 유지되고 인증된 파티(party)들의 제어 내에 있는 것이 바람직하다.
비밀 데이터 영역(152), 접근가능 데이터 영역(154), 및 논리 회로(156)는, 바람직하게는 버스 구성을 이용하여 형성되는 접속 라인들(158)을 거쳐 서로 연결된다. 논리 회로(156)는, 바람직하게는 버스 구성을 이용하여 형성되는 하나 이상의 데이터 라인들(160)에 의해 레지스터들에 연결된다.
이상에서 논의된 것처럼, 보안 회로(150)는 바람직하게는 프로세서(102)를 복수의 동작 모드들 중 적어도 하나에 있도록 동작가능하다. 이러한 모드들은, 바람직하게는 프로세서(102) 및 외부 디바이스 또는 디바이스들이 프로세서(102), 예를 들어 로컬 메모리(104)에 대한 정보의 전송을 개시하는 제 1 모드(표준 모드)를 포함한다. 동작 모드들은, 바람직하게는 프로세서(102)와 임의의 외부 디바이스 또는 디바이스들이 프로세서(102)에 대한 정보의 전송을 개시하지 않는 제 2 모드(고립 모드)를 포함한다. 동작 모드들은, 바람직하게는 프로세서(102)가 프로세서(102)에 대한 정보의 전송을 개시하지만 임의의 외부 디바이스 또는 디바이스들이 프로세서(102)에 대한 정보의 전송을 개시하지 않는 제 3 모드(보안 모드)를 포함한다.
보안 회로(150)의 동작은, 본 발명에 따른 프로세서(102)의 특정 보안 능력들을 도시하는 순서도들인 도 4 내지 6을 참조하여 더 잘 이해된다. 이와 관련하 여, 프로세서(102)는 제 1 모드, 즉 표준 모드의 동작으로 내정된다고 가정한다(단계 200). 제 1 모드에 있어서, 프로세서(102) 및 (또 다른 프로세서와 같은) 임의의 외부 디바이스 또는 디바이스들은, 프로세서(102)의 로컬 메모리(104)에 대한 정보의 전송을 개시한다. 본 발명의 선택적인 실시형태들에서, 프로세서(102)는 개시에 대한 제 1 모드의 동작을 입력하지 않거나, 이하에서 논의된 것처럼 제 2 또는 제 3 모드의 동작 대신에 상대적으로 짧은 기간 동안 제 1 모드만을 입력한다.
단계 202에서, 프로세서(102)는 신뢰 상태를 얻기 위해 인증 루틴을 실행할 수 있다. 인증 루틴은, 프로세서(102)에서 실행되는 어플리케이션 프로그램으로부터의 호출 또는 프로세서(102) 외부에서 실행되는 프로그램으로부터의 호출에 의해 개시된다. 본 발명의 선택적인 실시형태에서, 프로세서(102)는, 어플리케이션 프로그램으로부터의 호출을 필요로 하지 않는 디폴트(default) 조건으로서 개시되면 인증 루틴을 실행한다. 인증 루틴을 개시하면, 프로세서(102)는 바람직하게는 해독 프로그램을 실행한다. 해독 프로그램은, 프로세서(102)가 배치되는 모듈 내의 적절한 메모리로부터 얻어지거나, 또는 모듈 외부의 소스로부터 얻어진다. 이러한 외부 소스들의 예로서, 모듈이 배치되는 더 큰 시스템 내에 포함된 적절한 메모리, 또는 관리 기능들을 수행하는 서버(8)와 같은 네트워크(4)에 연결된 또 다른 디바이스가 있다. 본 발명의 하나 이상의 실시형태들에서, 해독 프로그램은 플래시 ROM과 같은 보안 비휘발성 ROM 내에 포함된다.
단계 206에서, 프로세서(102)에 의한 해독 프로그램 실행 이전, 실행 중, 또는 실행 결과로서, 프로세서(102)는 바람직하게는 제 2 모드, 고립 모드의 동작을 입력한다. 제 2 모드의 동작에서, 프로세서(102)와 외부 디바이스 또는 디바이스들은 로컬 메모리(104)에 대한 정보의 전송을 개시한다.
단계 208에서, 프로세서(102)는 바람직하게는 인증 루틴 동안 이용되는 인증 프로그램을 수신한다. 암호화된 인증 프로그램이 프로세서(102)에 의해 수신되는 타이밍이 고정되지 않고; 프로그램은 인증 루틴의 실행 이전 또는 실행 동안 적절한 시간에 수신된다. 인증 프로그램은, 인증된 방식들로 이용되도록 KEY 1에 따라서 암호화되는 것이 바람직하다. 게다가, 인증 프로그램은 바람직하게는 인증 프로그램을 확인하는 KEY 2를 포함한다. 예를 들어, KEY 2는 일련번호, 해시(hash) 결과 등일 수 있다.
바람직하게는, 암호화된 인증 프로그램은, 프로세서(102) 또는 프로세서(102)를 포함하는 모듈 내의 적절한 메모리, 또는 프로세서(102) 또는 모듈의 외부 메모리 내에 저장된다. 암호화된 인증 프로그램은, 모듈이 포함된 디바이스가 아닌, 프로세서(102)를 포함하는 모듈의 외부 메모리 내에 저장되는 것이 가장 바람직하다. 인증 프로그램의 암호화 및 적절한 메모리 내의 인증 프로그램의 저장은, 인증된 엔티티에 의해 제어된 프로세스에서 수행되는 것이 또한 바람직하다. 실제로, 프로세서(102) 또는 프로그램을 인증하는 것에서의 사용이 효과적이라는 것을 보증하기 위해 인증 프로그램의 통합이 항상 유지되는 것이 바람직하다. 본 발명의 하나 이상의 실시형태들에서, 인증 프로그램은 플래시 ROM과 같은 보안 비휘발성 ROM 내에 포함된다.
단계 210에서, 해독 프로그램의 실행은, 바람직하게는 KEY 1의 보안 복사본 이 비밀 데이터 영역(152)으로부터 판독되고 보안 회로(150) 내의 접근가능 데이터 영역(154) 내에 저장되도록 한다. 예를 들어, 논리 회로(156)는, 바람직하게는 프로세서(102)의 레지스터들 내의 특정 데이터의 존재에 반응하여 KEY 1의 복사본을 비밀 데이터 영역(152)으로부터 접근가능 데이터 영역(154)으로 전송하도록 동작가능하다(도시되지 않음). 프로세서(102)가 제 2 모드, 고립 모드에 있기 때문에, 접근가능 데이터 영역(154) 내의 KEY 1의 복사본의 존재는 보안 침해를 나타내지 않는다. 실제로, 프로세서(102)와 외부 디바이스는 로컬 메모리(104)를 통한 프로세서(102)로부터의 KEY 1의 전송을 개시하지 않는다.
단계 212에서, 해독 프로그램이 프로세서(102)에 의해 실행되도록, 해독 프로그램은 암호화된 인증 프로그램을 해독하도록 KEY 1을 이용하는 것이 바람직하다. 인증 프로그램의 실행 동안, 비밀 데이터 영역(152) 내에 포함된 KEY 2의 복사본은 접근가능 데이터 영역(154) 내에 기록되는 것이 바람직하다(단계 214). 예를 들어, 논리 회로(156)는, 바람직하게는 인증 프로그램에 따라 레지스터들로 기록되는 특정 데이터에 반응하여 KEY 2의 복사본을 비밀 데이터 영역(152)으로부터 접근가능 데이터 영역(154)으로 전송하도록 동작가능하다.
단계 216에서, 접근가능 데이터 영역(154) 내의 KEY 2의 복사본이 인증 프로그램 내에 포함된 KEY 2의 복사본에 부합하는지 여부에 관한 결정이 행해진다. 인증 프로그램은, 인증 프로그램이 해독될 때 이용가능하게 만들어진 KEY 2의 복사본을 포함한다(단계 212). 예를 들어, 인증 프로그램 내에 포함된 KEY 2의 복사본은 로컬 메모리(104) 내에 임시로 저장되고 인증 프로그램의 실행에 따라서 접근가능 데이터 영역(154)으로 기록된다. 다시, 프로세서(102)가 이러한 프로세스 동안 고립 모드에 있기 때문에 이것은 보안 침해를 나타내지 않으므로, 프로세서(102) 외부의 인증되지 않은 디바이스는 KEY 2의 복사본을 얻지 않는다.
인증 프로그램 내에 포함된 KEY 2의 복사본은 비밀 데이터 영역(152)으로부터 얻어진 KEY 2의 복사본에 부합하지 않다면, 프로세서(102)를 인증시키는 프로세스는 종료한다(단계 218). KEY 2의 이러한 복사본들이 부합할 때, 접근가능 데이터 영역(154) 내에 포함된 KEY 1 및 KEY 2의 복사본들이 바람직하게는 삭제되고(단계 220), 프로세서(102)는 바람직하게는 제 3 모드, 보안 모드의 동작을 입력한다(단계 222). 예를 들어, 논리 회로(156)는 KEY 1 및 KEY 2의 복사본들을 접근가능 데이터 영역(154)으로부터 삭제하고, 프로세서(102)가 제 3, 보안 모드의 동작을 입력하도록 한다.
제 3, 보안 모드의 동작에서, 프로세서(102)는 로컬 메모리(104)에 대한 정보의 전송을 개시한다. 바꿔 말하면, 제 3, 보안 모드의 동작에서, 프로세서(102)는 프로세서(102)에 대한 정보의 전송을 개시하지만, 프로세서(102) 외부의 임의의 디바이스들은 정보의 이러한 전송을 개시하지 않는다. 프로세서(102)가 제 3, 보안 모드의 동작을 입력하면, 인증되지 않은 엔티티들이 이러한 데이터를 얻지 않고 동작들을 수행하고 데이터를 조작하는 신뢰받은 디바이스가 고려된다. 실제로, 다른 프로세서들은, 프로세서(102)에 의해 개시되지 않으면 프로세서(102) 내의 데이터에 접근할 수 없다.
바람직하게는, 신뢰받은 프로세서(102)는 도 1에 도시된 분배된 시스템에서 와 같이 많은 유용한 기능들을 제공한다. 이러한 기능들은, 인증된 디바이스들에 의해 접근될 수 있는 메모리 영역을 가지는 보안 외부 메모리 제어기, 인증된 디바이스들에 의해 변형되는 보안 클록 디바이스, 신뢰받은 요청 메커니즘, 및 (예를 들어, 공공키 기반 인증 등을 이용하는) 부트 코드를 인증할 수 있는 보안 프로세싱 요소를 제공하는 단계를 포함한다.
본 발명의 하나 이상의 실시형태들에 따르면, 신뢰받은 프로세서(102)는 해독 동작들을 포함하는 주 프로세서를 포함하여 다른 프로세서들(102)에 의해 사용될 수 있다. 예를 들어, 하나의 프로세서(102)는 신뢰받은 프로세서(102)에 의해 해독된 주 메모리(106) 내에 저장되는 데이터를 가지려고 한다. 그러므로, 프로세서는, 데이터가 주 메모리(106) 내의 어디에 위치하는지 및 어느 해독 루틴이 수행되는지를 지시하는 파라미터들 중 적어도 하나를 지시하는 요청을 신뢰받은 프로세서(102)로 보낸다. (선택적으로, 해독 루틴이 예정될 수 있으므로 이러한 파라미터들이 생략될 수 있다.) 요청에 반응하여, 신뢰받은 프로세서(102)는 암호화된 데이터를 주 메모리(106)로부터 로컬 메모리(104)로 판독하고 해독 프로세스를 실행할 수 있다. 신뢰받은 프로세서(102)가 다른 프로세서(102)에 의한 요청 이전에 (KEY 1 또는 KEY 2와 같은) 해독 키를 가지고 있지 않다면, 이러한 키를 얻는 방법에 관한 해독 키 또는 정보는 바람직하게는 요청 프로세서(102)에 의해 제공된다. 해독된 데이터는 주 메모리(106)로 바람직하게 기록되고 그리고/또는 요청 프로세서(102)의 로컬 메모리(104)로 기록된다.
본 명세서에서 논의된 하나 이상의 특징들을 수행하기에 적합한 멀티프로세 서 시스템에 대한 바람직한 컴퓨터 아키텍쳐의 설명이 이루어진다. 하나 이상의 실시형태들에 따르면, 멀티프로세서 시스템은, 독립적으로 동작가능한 단일 칩 솔루션 및/또는 게임 시스템들, 홈 단말기들, PC 시스템들, 서버 시스템들 및 워크스테이션들과 같은 미디어-리치 어플리케이션들의 분배된 프로세싱으로서 실시될 수 있다. 게임 시스템들 및 홈 단말기들과 같은 일부 어플리케이션들에서, 실시간 컴퓨팅이 필수적일 수 있다. 예를 들어, 실시간 분배 게이밍 어플리케이션에서, 하나 이상의 네트워킹 영상 압축풀기, 3차원 컴퓨터 그래픽, 오디오 생성, 네트워크 통신들, 물리적 시뮬레이션, 및 인공 지능 프로세스들은 사용자에게 실시간 체험의 환영을 제공하기에 충분히 빠르게 실행되어야 한다. 그러므로, 멀티프로세서 시스템 내의 각각의 프로세서는 짧고 예견가능한 시간에 태스크들을 완료해야 한다.
이를 위하여, 이러한 컴퓨터 아키텍쳐에 따르면, 멀티프로세싱 컴퓨터 시스템의 모든 프로세서들은 통상의 컴퓨팅 모듈 (또는 셀)로부터 구성된다. 이러한 통상의 컴퓨팅 모듈은 일관된 구조를 가지고 바람직하게는 동일 명령 세트 아키텍쳐를 이용한다. 멀티프로세싱 컴퓨터 시스템은, 하나 이상의 고객들, 서버들, PC들, 이동 컴퓨터들, 게임 기계들, PDA들, 셋톱 박스들, 어플라이언스들, 디지털 텔레비젼들 및 컴퓨터 프로세서들을 이용하는 다른 디바이스들로 형성될 수 있다.
복수의 컴퓨터 시스템들은 또한 요망된다면 네트워크의 구성요소들일 수 있다. 일관된 모듈 구조는, 멀티프로세싱 컴퓨터 시스템에 의한 어플리케이션들 및 데이터의 효율적인 고속 처리를 가능하게 하고, 네트워크가 이용된다면, 네트워크를 통한 어플리케이션들 및 데이터의 고속 전송을 가능하게 한다. 이러한 구조는 또한 다양한 크기들 및 처리 능력의 네트워크의 구성요소들의 형성 및 이러한 구성요소들에 의한 처리를 위한 어플리케이션들의 준비를 단순화시킨다.
도 7을 참조하면, 기본 프로세싱 모듈은 프로세서 요소(PE; processor element; 300)이다. PE(300)는 I/O 인터페이스(302), 프로세싱 유닛(PU; 304), 및 복수의 부 프로세싱 유닛들(308), 즉, 부 프로세싱 유닛(308A), 부 프로세싱 유닛(308B), 부 프로세싱 유닛(308C), 및 부 프로세싱 유닛(308D)을 포함한다. 로컬 (또는 내부) PE 버스(312)는 데이터 및 어플리케이션들을 PU(304), 부 프로세싱 유닛들(308), 및 메모리 인터페이스(311) 사이에서 전송한다. 로컬 PE 버스(312)는, 예를 들어 통상의 아키텍쳐를 가질 수 있거나 또는 패킷-스위치 네트워크(packet-switched network)로서 이용될 수 있다. 더 많은 하드웨어를 필요로 하는 동안 패킷 스위치 네트워크로서 이용된다면, 이용가능 대역폭이 증가한다.
PE(300)는 디지털 로직을 이용하기 위한 다양한 방법들을 이용하여 형성될 수 있다. 그러나, PE(300)는 바람직하게는 실리콘 기판 상의 CMOS(complementary metal oxide semiconductor)를 이용하여 단일 집적 회로로서 형성된다. 기판들에 대한 선택적인 재료들은, 갈륨 아시나이드(gallium arsinide), 갈륨 알루미늄 아시나이드(gallium aluminum arsinide) 및 광범위한 도펀트(dopant)들을 이용하는 다른 소위 III-B 화합물들을 포함한다. PE(300)는 예를 들어 RSFQ(rapid single-flux-quantum) 로직(logic)과 같은 반도체 재료를 이용하여 실시될 수 있다.
PE(300)는 고대역 메모리 접속부(316)를 통하여 공유 (주) 메모리(314)와 가깝게 관련되어 있다. 메모리(314)가 바람직하게는 동적 임의 접근 메모리(DRAM; dynamic random access memory)일지라도, 메모리(314)는, 예를 들어 정적 임의 접근 메모리(SRAM; static random access memory), 자기 임의 접근 메모리(MRAM; magnetic random access memory), 광 메모리, 홀로그래픽 메모리 등과 같은 다른 수단들을 이용하여 실시될 수 있다.
PU(304) 및 부 프로세싱 유닛들(308)은 각각 메모리 인터페이스(311)와의 조합에서, DRAM(314), 부 프로세싱 유닛들(308) 및 PE(300)의 PU(304) 사이의 데이터 전송을 촉진하는 직접 메모리 접근 DMA 기능을 포함하는 메모리 흐름 제어기에 연결된다. DMAC 및/또는 메모리 인터페이스(311)는 부 프로세싱 유닛들(308) 및 PU(304)와 관련하여 통합적으로 또는 분리되어 배치될 수 있다. 실제로, DMAC 기능 및/또는 메모리 인터페이스(311) 기능은 부 프로세싱 유닛들(308) 및 PU(304) 중 하나 이상(바람직하게는 모두)과 통합될 수 있다. DRAM(314)은 PE(300)와 관련하여 통합되거나 분리되어 배치될 수 있다. 예를 들어, DRAM(314)은 도시된 것처럼 오프-칩으로 배치될 수 있고 또는 DRAM(314)은 통합 형태로 온-칩으로 배치될 수 있다.
PU(304)는, 예를 들어 데이터 및 어플리케이션들을 독립적으로 처리할 수 있는 표준 프로세서일 수 있다. 동작에서, PU(304)는 부 프로세싱 유닛들에 의해 데이터 및 어플리케이션들의 프로세싱을 스케줄링하고 조정하는 것이 바람직하다. 부 프로세싱 유닛들은 바람직하게는 단일 명령 멀티플 데이터(SIMD; single instruction multiple data) 프로세서들이다. PU(304)의 제어 하에, 부 프로세싱 유닛들은, 병렬 및 독립 방식으로 이러한 데이터 및 어플리케이션들의 프로세싱을 수행한다. PU(304)는, RISC(reduced instruction-set computing) 기술을 이용하는 마이크로프로세서 아키텍쳐인 파워피씨 코어를 이용하여 실시되는 것이 바람직하다. RISC는 단일 명령들의 조합들을 이용하여 더욱 복잡한 명령들을 수행한다. 그러므로, 프로세서에 대한 타이밍은 더욱 단순하고 빠른 동작들에 근거하고, 마이크로프로세서가 주어진 클록 속도에 대하여 더 많은 명령들을 수행할 수 있게 한다.
PU(304)는, 부 프로세싱 유닛들(308)에 의해 데이터 및 어플리케이션들의 프로세싱을 스케줄링하고 조정하는 주 프로세싱 유닛의 역할을 하는 주 프로세싱 유닛들(308) 중 하나에 의해 실시될 수 있다. 게다가, 프로세서 요소(300) 내에서 실시되는 하나 이상의 PU가 있을 수 있다. 이러한 모듈 구조에 따르면, 특정 컴퓨터 시스템에 의해 이용되는 PE들(300)의 개수는 시스템에 의해 요구되는 처리 능력에 근거한다. 예를 들어, 서버는 4개의 PE들(300)을 이용할 수 있고, 워크스테이션은 2개의 PE들(300)을 이용할 수 있으며, PDA는 하나의 PE(300)를 이용할 수 있다. 특정 소프트웨어 셀의 프로세싱에 할당된 PE(300)의 부 프로세싱 유닛들의 개수는 셀 내의 프로그램들 및 데이터의 복잡성 및 크기에 의존한다.
도 8은 부 프로세싱 유닛(SPU; 308)의 바람직한 구조 및 기능을 도시한다. SPU(308) 아키텍쳐는 바람직하게는 (넓은 세트의 어플리케이션들에서 높은 평균 성능을 달성하도록 고안된) 범용 프로세서들 및 (단일 어플리케이션에서 높은 성능을 달성하도록 고안된) 전용 프로세서들 사이의 공백을 채운다. SPU(308)는 게임 어플리케이션들, 미디어 어플리케이션들, 광대역 시스템들 등에서 높은 성능을 달성하고 실시간 어플리케이션들의 프로그래머들에게 높은 제어를 제공하도록 고안되어 있다. SPU(308)의 일부 능력들은 그래픽 기하 파이프라인들, 표면 재분할, 패스트 푸리에 변환(Fast Fourier Transform)들, 영상 프로세싱 키워드들, 스트림(stream) 프로세싱, MPEG 암호화/해독, 암호화, 해독, 디바이스 드라이버 확장들, 모델링, 게임 물리들, 콘텐츠 생성, 및 오디오 합성 및 프로세싱을 포함한다.
부 프로세싱 유닛(308)은, 2개의 기본 기능 유닛들, 즉 SPU 코어(310A) 및 메모리 흐름 제어기(MFC; 310B)를 포함한다. MFC(310B)가 SPU 코어(310A)와 시스템의 DRAM(314) 사이의 데이터 전송들과 관련된 기능들을 수행하는 동안, SPU 코어(310A)는 프로그램 실행, 데이터 조작 등을 수행한다.
SPU 코어(310A)는 로컬 메모리(350), 명령 유닛(IU; 352), 레지스터들(354), 하나 이상의 부동 소수점 실행 스테이지들(floating point execution stages; 356) 및 하나 이상의 고정 소수점 실행 스테이지들(fixed point execution stages; 358)을 포함한다. 로컬 메모리(350)는 SRAM과 같은 단일 포트 임의 접근 메모리를 이용하여 실시되는 것이 바람직하다. 대부분의 프로세서들은 캐시들을 이용하여 메모리에 대한 지연을 감소시키는 반면에, SPU 코어(310A)는 캐시보다 상대적으로 작은 로컬 메모리(350)를 이용한다. 실제로, 실시간 어플리케이션들( 및 본 명세서에서 언급된 다른 어플리케이션들)의 프로그래머들에 대한 일관되고 예견가능한 메모리 접근 지연을 제공하도록, SPU(308A) 내의 캐시 메모리 아키텍쳐는 바람직하지 않다. 캐시 메모리의 캐시 적중/미스 특성들은, 수 사이클들로부터 수백 사이클들로 변화하는 휘발성 메모리 접근 시간들을 일으킨다. 이러한 휘발성은, 예를 들어 실시간 어플리케이션 프로그래밍 내에서 바람직한 접근 타이밍 예견가능성을 감소시킨다. 지연 숨김은, DMA 전송들을 데이터 연산과 오버래핑함으로써 로컬 메모리 SRAM(350) 내에서 달성될 수 있다. 이것은 실시간 어플리케이션들의 프로그래밍에 대한 높은 정도의 제어를 제공한다. DMA 전송들과 관련된 지연 및 명령 오버헤드는 캐시 미스 서비스에서의 지연 오버헤드를 초과하기 때문에, SRAM 로컬 메모리 방법은, DMA 전송 크기가 충분히 크고 충분히 예견가능할 때 장점이 있다(예를 들어, 데이터가 필요하기 전에 DMA 명령이 배포될 수 있다).
부 프로세싱 유닛들(308) 중 주어진 하나에서 실행되는 프로그램은 로컬 주소를 이용하는 관련 로컬 메모리(350)를 참조하지만, 로컬 메모리(350)의 각각의 위치는 전체 시스템의 메모리 맵 내의 실 주소(RA)에 할당된다. 이것은 권한 소프트웨어가 로컬 메모리(350)를 로컬 메모리(350)과 또 다른 로컬 메모리(350) 사이의 DMA 전송들을 촉진하는 프로세스의 유효 주소(EA; Effective Address)로 매핑할 수 있게 한다. PU(304)는 유효 주소를 이용하여 로컬 메모리(350)에 직접 접근할 수 있다. 바람직한 실시형태에서, 로컬 메모리(350)는 356 킬로바이트의 스토리지를 포함하고, 레지스터들(352)의 용량은 128×128 비트이다.
SPU 코어(304A)는, 논리 명령들이 파이프라인 형태로 처리되는 프로세싱 파이프라인을 이용하여 실시되는 것이 바람직하다. 파이프라인이, 명령들이 처리되는 임의의 개수의 단계들로 분할될지라도, 파이프라인은 일반적으로 하나 이상의 명령들을 추출하는 것, 명령들을 해독하는 것, 명령들 사이의 종속성들을 검사하는 것, 명령들을 배포하는 것 및 명령들을 실행하는 것을 포함한다. 이와 관련하여, IU(352)는 명령 버퍼, 명령 해독 회로, 종속성 검사 회로, 및 명령 배포 회로를 포함한다.
명령 버퍼는, 로컬 메모리(350)에 연결되고, 명령들이 추출될 때 명령들을 임시로 저장하도록 동작가능한 복수의 레지스터들을 포함하는 것이 바람직하다. 명령 버퍼는, 바람직하게는 모든 명령들이 레지스터들을 그룹으로서, 즉 실질적으로 동시에 남기도록 동작한다. 명령 버퍼가 임의의 크기일지라도, 약 2개 또는 3개의 레지스터들보다 더 크지 않은 크기가 바람직하다.
일반적으로, 해독 회로는 명령들을 중지시키고, 대응하는 명령의 기능을 수행하는 논리 마이크로-동작들을 생성한다. 예를 들어, 논리 마이크로 동작들은 연산 및 논리 동작들을 지정하고, 로컬 메모리(350)로의 동작들, 레지스터 소스 피연산자들 및/또는 즉시 데이터 피연산자들을 로드하고 저장한다. 해독 회로는, 명령이 타겟 레지스터 주소들, 구조적 자원들, 기능 유닛들 및/또는 버스들 중 어느 자원들을 사용하는 지를 가리킬 수 있다. 해독 회로는, 자원들이 필요한 명령 파이프라인 스테이지들을 가리키는 정보를 공급할 수 있다. 명령 해독 회로는, 바람직하게는 명령 버퍼의 레지스터들의 개수와 같은 다수의 명령들을 실질적으로 동시에 해독하도록 동작가능하다.
종속성 검사 회로는, 주어진 명령의 피연산자들이 파이프라인의 다른 명령들의 피연산자들에 의존하는지 여부를 결정하는 테스팅을 수행하는 디지털 로직을 포함한다. 주어진 명령의 피연산자들이 파이프라인의 다른 명령들의 피연산자들에 의존한다면, 이러한 다른 피연산자들이 갱신될 때까지, (예를 들어, 다른 명령들이 실행을 완료하는 것을 허용함으로써) 주어진 명령은 실행되지 말아야 한다. 종속성 검사 회로는 해독기 회로(112)로부터 발송된 복수의 명령들의 종속성들을 동시에 결정하는 것이 바람직하다.
명령 배포 회로는, 명령들을 부동 소수점 실행 스테이지들(356) 및/또는 고정 소수점 실행 스테이지들(358)로 배포하도록 동작가능하다.
레지스터들(354)은, 128-엔트리 레지스터 파일과 같은 상대적으로 큰 통합된 레지스터 파일로서 실시되는 것이 바람직하다. 이것은 레지스터 재명명을 필요로 하지 않는 깊게 파이프라인된 고주파수 실시형태들을 고려하여 레지스터 기근을 방지한다. 하드웨어를 재명명하는 것은, 전형적으로 프로세싱 시스템에서의 영역 및 능력의 상당한 부분을 소비한다. 결과적으로, 유리한 동작은, 지연들이 소프트웨어 루프 언롤링 또는 다른 인터리빙 기술에 의해 보상될 때 달성될 수 있다.
바람직하게는, 하나 이상의 명령이 클록 사이클 당 배포되도록 SPU 코어(310A)는 수퍼스칼라 아키텍쳐이다. SPU 코어(310A)는, (2개 또는 3개의 명령들이 각 클록 사이클 당 배포됨을 의미하는) 2와 3 사이의 동시 명령의 개수에 대응하는 정도의 수퍼스칼라가 명령 버퍼로부터 발송되도록 동작되는 것이 바람직하다. 필요한 처리 능력에 따라서, 다소의 부동 소수점 실행 스테이지들(356) 및 고정 소수점 실행 스테이지들(358)이 이용될 수 있다. 바람직한 실시형태에서, 부동 소수점 실행 스테이지들(356)은 초당 320억 부동 소수점 동작들(32 GFLOPS)의 속도로 동작하고, 고정 소수점 실행 스테이지들(358)은 초당 320억 동작들(32 GOPS)의 속도로 동작한다.
MFC(310B)는 바람직하게는 버스 인터페이스 유닛(BIU; 364), 메모리 관리 유닛(MMU; 362), 및 직접 메모리 접근 제어기(DMAC; 360)를 포함한다. DMAC(360)를 제외하면, MFC(310B)는 바람직하게는 SPU 코어(310A) 및 버스(312)의 반 주파수(반 속도)로 실행되어 저전력 소실 디자인 목적들을 충족시킨다. MFC(310B)는, 버스(312)로부터 SPU(308)로 가는 데이터 및 명령들을 취급하도록 동작가능하고, DMAC에 대한 주소 번역을 제공하며, 데이터 일관성을 위해 스누프-동작(snoop-operation)들을 제공한다. BIU(364)는, 버스(312), MMU(362) 및 DMAC(360) 사이의 인터페이스를 제공한다. 그러므로, (SPU 코어(310A) 및 MFC(310B)를 포함하는) SPU(308) 및 DMAC(360)는 버스(312)로 물리적 그리고/또는 논리적으로 접속된다.
MMU(362)는 바람직하게는 (DMA 명령들로부터 얻어진) 유효 주소들을 메모리 접근에 대한 실 주소들로 번역하도록 동작가능하다. 예를 들어, MMU(362)는 고차 비트의 유효 주소를 실 주소 비트로 번역할 수 있다. 그러나, 저차 주소 비트들은 바람직하게는 번역할 수 없고, 실 주소를 형성하고 메모리로의 접근을 요청하는 사용을 위해 논리적이고 물리적으로 고려된다. 하나 이상의 실시형태들에서, MMU(362)는 64-비트 메모리 관리 모델에 근거하여 실시될 수 있고, 4K-, 64K-, 1M-, 및 16M- 바이트 페이지 크기들 및 256MB 세그먼트(segment) 크기들을 가진 264 바이트의 유효 주소 공간을 제공한다. 바람직하게는, MMU(362)는, 265 바이트의 가상 메모리, 및 DMA 명령들에 대한 242 바이트의 물리적 메모리를 지지하도록 동작가능하다. MMU(362)의 하드웨어는, 8-엔트리(entry), 전체 결합 SLB, 256-엔트리, 4웨이 세트 결합(4way set associative) TLB, 및 하드웨어 TLB 미스 핸들링(miss handling)을 위해 사용되는 TLB를 위한 4×4 대체 관리 테이블(RMT; Replacement Management Table)을 포함한다.
DMAC(360)는 바람직하게는 SPU 코어(310A) 및 PU(304) 및/또는 다른 SPU들과 같은 하나 이상의 다른 디바이스들로부터의 DMA 명령들을 관리하도록 동작가능하다. 다음의 3개의 카테고리들의 DMA 명령들이 있다: 데이터를 로컬 메모리(350)로부터 공유 메모리(314)로 이동시키도록 동작하는 풋 명령들; 데이터를 공유 메모리(314)로부터 로컬 메모리(350)로 이동시키도록 동작하는 겟 명령들; SLI 명령들 및 동기화 명령들을 포함하는 저장 제어 명령들. 동기화 명령들은, 원자 명령들을 포함하고, 신호 명령들 및 전용 배리어 명령들을 보낸다. DMA 명령들에 반응하여, MMU(362)는 유효 주소를 실 주소로 번역하고, 실 주소는 BIU(364)로 전송된다.
SPU 코어(310A)는 바람직하게는 DMAC(360) 내의 인터페이스를 이용하여 (DMA 명령들, 상태 등을 보내기 위해) 통신하기 위해 채널 인터페이스 및 데이터 인터페이스를 사용한다. DMA 명령은, DMA 대기행렬 내에 있다면 DMAC(360) 내의 배포 및 완료 로직에 의해 취급된다. DMA 명령에 대한 모든 버스 트랜색션(transaction)들이 종료될 때, 완료 신호는 채널 인터페이스를 통하여 SPU 코어(310A)로 보내진다.
도 9는 PU(304)의 바람직한 구조 및 기능을 도시한다. PU(304)는, 2개의 기본 기능 유닛들, PU 코어(304A) 및 메모리 흐름 제어기(MFC; 304B)를 포함한다. MFC(304B)는 PU 코어(304A) 및 시스템(100)의 메모리 공간 사이의 데이터 전송들과 관련된 기능들을 수행하지만, PU 코어(304A)는 프로그램 실행, 데이터 조작, 멀티프로세서 관리 기능들 등을 수행한다.
PU 코어(304A)는, L1 캐시(370), 명령 유닛(372), 레지스터들(374), 하나 이 상의 부동 소수점 실행 스테이지들(376) 및 하나 이상의 고정 소수점 실행 스테이지들(378)을 포함한다. L1 캐시는 공유 메모리(106), 프로세서들(102), 또는 MFC(304B)를 통한 메모리 공간의 다른 부분들로부터 수신된 데이터에 대한 데이터 캐싱 기능을 제공한다. PU 코어(304A)가 바람직하게는 수퍼파이프라인으로서 실시되기 때문에, 명령 유닛(372)은 바람직하게는 추출, 해독, 종속성 검사, 배포 등을 포함하는 많은 단계들을 가진 명령 파이프라인으로서 실시된다. PU 코어(304A)는, 2개 이상의 명령이 클록 사이클 당 명령 유닛(372)으로부터 배포되는 수퍼스칼라 구성인 것이 바람직하다. 높은 프로세싱 능력을 달성하기 위해, 부동 소수점 실행 스테이지들(376) 및 고정 소수점 실행 스테이지들(378)은 파이프라인 구성의 복수의 스테이지들을 포함한다. 필요한 프로세싱 능력에 따라서, 다소의 부동 소수점 실행 스테이지들(376) 및 고정 소수점 실행 스테이지들(378)이 이용될 수 있다.
MFC(304B)는 버스 인터페이스 유닛(BIU; 380), L2 캐시 메모리, 캐시불능 유닛(NCU; 384), 코어 인터페이스 유닛(CIU; 386), 및 메모리 관리 유닛(MMU; 388)을 포함한다. 대부분의 MFC(304B)는, PU 코어(304A) 및 버스(108)의 반 주파수(반 속도)로 실행되어 저전력 소실 디자인 목적들을 충족시킨다.
BIU(380)는 버스(108) 및 L2 캐시(382) 및 NCU(384) 로직 블록들 사이의 인터페이스를 제공한다. 이를 위하여, BIU(380)는 전체 일관 메모리 동작들을 수행하기 위해 버스(108)에서 슬레이브 디바이스 뿐만 아니라 마스터로서 동작할 수 있다. BIU(380)는, L2 캐시(382) 및 NCU(384) 대신에 서비스에 대해 버스(108)로 로드/저장 요청들을 행할 수 있다. BIU(380)는 또한 버스(108)로 보내질 수 있는 명 령들의 전체 개수를 제한하는 명령들에 대한 흐름 제어 메커니즘을 이용할 수 있다. 버스(108)에 대한 데이터 동작들은 8 비이트들을 취하도록 고안될 수 있으므로, BIU(380)는 바람직하게는 약 128 바이트 캐시-라인들로 고안되며 일관성 및 동기화 입도는 128 KB이다.
L2 캐시 메모리(382)( 및 하드웨어 로직을 지원하는 것)는 바람직하게는 312 KB의 데이터를 캐시하도록 고안된다. 예를 들어, L2 캐시(382)는 캐시가능 로드들/저장들, 데이터 예비인출들, 캐시 동작들, 및 배리어(barrier) 동작들을 취급할 수 있다. L2 캐시(382)는 바람직하게는 8-웨이 세트 결합 시스템이다. L2 캐시(382)는 6개의 캐스트아웃 대기행렬들에 부합하는 6개의 재로드 대기행렬들(예를 들어, 6개의 RC 기계들), 및 8(64 바이트 폭) 스토어 대기행렬들을 포함한다. L2 캐시(382)는 L1 캐시(370) 내의 데이터의 일부 또는 모두의 백업 복사본을 제공하도록 동작한다. 유리하게는, 프로세싱 노드들이 핫-스와프(hot-swap)될 때, 이것은 복구 상태에서 유용하다. 이러한 구성은, (요청들이 L2 캐시(382)에서 정지하기 때문에) L1 캐시(370)가 더 적은 포트들을 가지고 더 빨리 동작하는 것을 허용하고, 더 빠른 캐시-투-캐시 전송들을 허용한다. 이러한 구성은, 또한 캐시 일관성 관리를 통과시키기 위한 메커니즘을 L2 캐시 메모리(382)로 제공한다.
NCU(384)는 CIU(386), L2 캐시 메모리(382), 및 BIU(380)와 상호작용하고, 일반적으로 PU 코어(304A)와 메모리 시스템 사이의 캐시불능 동작들에 대한 대기행렬/버퍼링 회로로서 기능한다. NCU(384)는, 바람직하게는 캐시금지 로드/저장들, 배리어 동작들, 및 캐시 일관성 동작들과 같은, L2 캐시(382)에 의해 취급되지 않 는 PU 코어(304A)와의 모든 통신들을 취급한다. NCU(384)는 바람직하게는 반 속도로 실행되어 상술한 전력 소실 목적들을 충족시킨다.
CIU(386)는 MFC(304B) 및 PU 코어(304A)의 경계 상에 배치되고, 실행 스테이지들(376, 378), 명령 유닛(372), 및 MMU(388)로부터 오고 L2 캐시(382) 및 NCU(384)로 가는 요청들을 위한 경로 설정, 조정, 및 흐름 제어 점으로서 동작한다. L2 캐시(382) 및 NCU(384)가 2:1 속도비로 동작가능하지만, PU 코어(304A) 및 MMU(384)는 바람직하게는 최고 속도로 실행된다. 그러므로, 주파수 경계가 CIU(386) 내에 존재하고, 그 기능들 중 하나는, 두 주파수 영역들 사이에서 요청들을 전송하고 데이터를 재로딩함에 따라 주파수 크로싱을 적절히 처리하는 것이다.
CIU(386)는 다음의 3개의 기능 블록들로 이루어진다: 로드 유닛, 저장 유닛, 및 재로드 유닛. 게다가, 데이터 예비인출 기능은 CIU(386)에 의해 수행되고, 바람직하게는 다음의 과정이 수행되는 로드 유닛의 기능적 부분이다: (i) 로드 및 저장 요청들을 PU 코어(304A) 및 MMU(388)로부터 수신하고; (ii) 요청들을 최고 속도 클록 주파수로부터 반 속도로 변환하며(2:1 클록 주파수 변환); (iii) L2 캐시(382)로의 캐시가능 요청들을 경로설정하고 NCU(384)로의 캐시불능 요청들을 경로설정하며; (iv) L2 캐시(382) 및 NCU(384)로의 요청들 사이를 적절히 조정하고; (v) 요청들이 타겟 윈도우 내에서 수신되고 오버플로우가 방지되도록 L2 캐시(382) 및 NCU(384)로의 발송에 대한 흐름 제어를 제공하며; (vi) 로드 복귀 데이터를 수신하고 실행 스테이지들(376, 378), 명령 유닛(372) 또는 MMU(388)로 경로설정하고; (vii) 스누프 요청들을 실행 스테이지들(376, 378), 명령 유닛(372), 또는 MMU(388)로 통과시키며; (viii) 로드 복귀 데이터를 변환하고 트래픽(traffic)을 반속도로부터 최고 속도로 스누프(snoop)한다.
MMU(388)는 바람직하게는 제 2 레벨 주소 번역 기관에 의해서와 같이 PU 코어(340A)에 대한 주소 번역을 제공한다. 제 1 레벨의 번역이, 바람직하게는 MMU(388)보다 더 작고 더 빠른 분리 명령 및 데이터 ERAT(effective to real address translation) 배열들에 의해 PU 코어(304A) 내에서 제공된다.
바람직한 실시형태에서, PU(304)는 64 비트 실시형태로 46 GHz, 10F04로 동작한다. (하나 이상의 전용 레지스터들이 더 작을지라도) 레지스터들은 바람직하게는 64 비트 길이이고 유효 주소들은 64 비트 길이이다. 명령 유닛(370), 레지스터들(372) 및 실행 스테이지들(374 및 376)은 바람직하게는 (RISC) 연산 기술을 달성하기 위해 파워피씨(PowerPC) 기술을 이용하여 실시된다.
이러한 컴퓨터 시스템의 모듈 구조에 관한 추가적인 세부사항들은, 전체적인 내용이 본 명세서에 의해 구체화되어 있는 미국 특허 제6,526,491호에 공개되어 있다.
도 10은, 본 발명의 하나 이상의 추가적인 실시형태들에 따른 프로세서(500)의 블록도이다. 이러한 실시형태에서, 프로세서(500)는 해독 유닛(502) 및 보안 메모리(504)를 포함한다. 보안 메모리(504)는 눈에 보이지 않는 키(IKi)를 포함하고, i는 제 i 프로세서를 포함한다. 해독 유닛(502)은, (눈에 보이지 않는 키(IKi)를 이용하여) 메모리 흐름 제어기(310B)로부터 로컬 메모리(350)로 흐르는 데이터를 해독하도록 동작가능하다. 바람직하게는, 보이지 않는 키(IKi)는 주어진 프로세 서(500)에 대하여 실질적으로 고유한 키이며, 시스템 내의 프로세서들 각각은 고유한 보이지 않는 키를 포함한다. 해독 유닛(502)은, 간단한 XOR 알고리즘들, 또는 더 복잡한 알고리즘들과 같은 임의의 공지된 기술들을 이용한다.
프로세서(500)는, 바람직하게는 본 명세서에 기술된 기술들 또는 다른 기술들을 이용하여, 보안 모드의 동작을 입력하도록 동작가능하다. 바람직하게는, 프로세서(500)는 하드웨어 리셋 조건 또는 파워-업 조건에 대하여 보안 모드의 동작을 입력한다. 비보안 모드에 있을 때, PU(304)는 해독 유닛(502)을 통해 데이터를 통과시키지 않아도 공유 DRAM(314) 및 로컬 메모리(350) 사이의 데이터 전송들을 개시할 수 있다. 게다가, 프로세서(500)가 비보안 모드에 있을 때, PU(304)는 로컬 메모리(350)로부터 공유 DRAM(314)으로의 데이터 전송들을 개시할 수 있다. 그러나, 보안 모드에 있을 때, PU(304)는 이러한 데이터를 해독 유닛을 통해 통과시키지 않으면 공유 DRAM(314)으로부터 로컬 메모리(350)로의 데이터 전송들을 개시할 수 없다. 로컬 메모리(350)로부터 PU(304)에 의해 개시된 데이터 전송들은 보안 모드에서 허용되지 않는다. 그러므로, PU(304)( 또는 다른 외부 엔티티)에 의해 개시된 임의의 데이터 전송은, 보이지 않는 키(IKi)를이용하여 이러한 데이터가 해독되도록 한다. 그러나 프로세서(500)는 보안 모드의 동작에 있는지 여부에 상관없이 로컬 메모리(350)와 공유 DRAM(314) 사이의 데이터 전송들을 개시할 수 있다.
보안 저장 메모리(504) 내에 저장된 보이지 않는 키(IKi)는 프로세서(500)의 해독 유닛(502) 또는 일부 다른 인증된 엔티티에 의해서만 접근될 수 있다. 엔티티가 특정 프로세서(500)의 보이지 않는 키(IKi)를 알도록 인증되더라도, 이러한 엔 티티는 프로세서(500)의 보안 메모리(504)로부터 얻지 않는 방식으로 보이지 않는 키(Iki)에 접근되어야 한다. 예를 들어, 프로세서(500)의 제조 과정 동안, 보이지 않는 키(IKi)는 바람직하게는 보안 메모리(504) 내에 저장되고, 동시에 보이지 않는 키(IKi)는 정보를 얻도록 인증된 엔티티들에 알려진다.
프로세서(500)는 또한 바람직하게는 일련번호 또는 다른 확인 표시와 같은 실질적으로 고유한 ID를 포함한다. 그러나 보이지 않는 키(IKi)와 달리, 프로세서(500)의 ID는 바람직하게는 프로세서(500)의 보안 특징들을 이용함에 대한 관심을 가진 임의의 엔티티에 알려진다. 그러므로, ID는 보이는 키(VKi)로서 고려될 수 있고, i는 제 i 프로세서(500)를 나타낸다.
도 11을 참조하면, 프로세서(500)의 보안 특징들이 이용되는 시스템이 도시된다. 시스템은 프로세서(500), 중간 엔티티(510), 및 보안 엔티티( 또는 서버; 512)를 포함한다. 보안 엔티티(512)는, 이하에서 더욱 상세하게 논의되는 인증 서버(514) 및 데이터베이스(516)를 포함한다. 도 11은 본 발명의 일부 실시형태들의 구조를 도시하고, 데이터/프로세스 흐름을 도시한다. 그러므로 도 11은 본 발명의 장치들 및 방법들의 세부사항들을 논의하도록 본 명세서에서 이용된다.
중간 엔티티(510)는, 보안 상태에서 데이터를 전송하거나 프로그램들을 프로세서(500)에 대하여 실행시키는 임의의 엔티티 또는 시스템일 수 있다. 프로세서(500)는 DRAM(314)을 공유하는 복수의 부가 프로세싱 유닛들 중 하나이다. 그러므로 중간 엔티티(510)로부터 프로세서(500)로 전송된 데이터는 공유 DRAM(314) 내에 적어도 임시로 저장될 수 있다. 일부 상황들 하에서, 이것은 데이터가 다른 프 로세서들에 의해 침해되도록 할 수 있다. 그러나 본 발명에 따르면, 중간 엔티티(510)는, 프로세서(500)만이 데이터에 접근하여 사용할 수 있도록 데이터를 프로세서(500)로 전송할 수 있다. 특히, 중간 엔티티(510)는 프로세서(500)와 관련된 보이는 키(VKi)를 얻는다. 중간 엔티티(510)는 (프로세서(500)에서 실행되는 원격 프로그램과 같은) 데이터 및 보이는 키(VKi)를 보안 서버(512)로 전송한다. 이러한 전송은, 인터넷, 또는 임의의 다른 네트워크, 통신 링크 또는 수동 개입과 같은 임의의 공지 기술을 이용하여 일어날 수 있다. 보안 서버(512)는 전송으로부터 보이는 키(VKi)를 얻고, 복수의 보이는 키-보이지 않는 키 쌍들을 포함하는 데이터베이스(516)를 검색하는 인증 서버(514)를 이용한다. 보이는 키와 보이지 않는 키들의 쌍들은, 프로세서(500)와 같은 특정 프로세서에 대한 상호 관계에 의해 서로 관련되어 있다. 중간 엔티티(510)로부터 수신된 보이는 키(VKi) 및 데이터베이스(516) 내에 저장된 보이는 키들 중 하나 사이의 부합이 얻어진다면, 인증 서버(514)는 바람직하게는 보이는 키(VKi)와 관련된 보이지 않는 키(IKi) 및 프로세서(500)를 이용하여 데이터(본 실시예에서는 원격 프로그램)를 암호화한다. 보안 서버(512)는 예를 들어 인터넷을 이용하여 암호화된 데이터를 중간 엔티티(510)로 전송한다.
중간 엔티티(510)가 보안 서버(512)에 대하여 암호화된 버젼의 데이터를 얻을지라도, 중간 엔티티(510)는 프로세서(500)의 보이지 않는 키(IKi)에 관한 정보를 얻지 않는다. 이와 관련하여, 보안 서버(512)는, 프로세서(500)의 보안 메모리(504) 내에 포함된 보이지 않는 키(IKi)를 식별하는 점에서 인증된 엔티티이다. 중간 엔티티(510)와 같은 임의의 엔티티가 임의의 주어진 프로세서의 보이는 키(VKi)를 식별하는 동안, 보안 서버(512)와 같은 인증된 엔티티만이, 보이지 않는 키(IKi)를 식별하고 그리고/또는 특정된 보이는 키(VKi)와의 관련을 가진다.
중간 엔티티(510)는 인터넷 또는 임의의 다른 적절한 메커니즘에 의해 암호화된 데이터를 프로세서(500)로 전송할 수 있다. 프로세서(500)의 동작 능력에 따르면, PU(304)는 중간 엔티티(510)로부터 암호화된 데이터를 수신하고 공유 DRAM(314) 내에 암호화된 데이터를 저장하는 것을 돕는다. 프로세서(500)는, PU(304)가 암호화된 데이터를 공유 DRAM(314) 내에 저장되도록 하는 시간에 보안 모드의 동작에 있는 것이 바람직하다. 그러므로 PU(304)가 공유 DRAM(314)로부터 프로세서(500)의 로컬 메모리(350)로의 암호화된 데이터의 전송을 개시할 때, 이러한 암호화된 데이터는 해독 유닛(502)을 통하여 통과되어야 한다. 결과적으로, 해독 유닛(502)은 프로세서(500)의 보안 메모리(504) 내에 저장된 보이지 않는 키(IKi)를 이용하여 암호화된 데이터를 해독한다. 유리하게는, 중간 엔티티(510)에 의해 발생된 해독된 데이터는 보안 상태로 프로세서(500)의 로컬 메모리(350) 내에 저장된다. 실제로, 보안 모드에서, PU(304)와 임의의 다른 외부 엔트리는 데이터를 로컬 메모리(350)로부터 얻을 수 없고, 프로세서(500)는 침해되지 않으면서 이러한 데이터를 조작할 수 있다.
도 12는, 프로세서(500)의 보안 특징들을 이용하는 선택적인 방법을 이용하는 도 11의 시스템의 블록도이다. 도 11과 관련하여 논의된 방법에 따르면, 중간 엔티티(510)는 프로세서(500)와 관련된 보이는 키(VKi)를 얻는다. 그러나 상기 방법과 달리, 중간 엔티티(510)는 대칭 키 1을 이용하여 적어도 데이터(예를 들어, 원격 프로그램)를 암호화한다. 예를 들어, 중간 엔티티(510)에 의해 이용되는 암호화 기술은, 하나 이상의 대칭 키들의 사용이 민감 데이터를 암호화하고 해독할 수 있게 하는 공지된 AES(Advanced Encryption Standard)일 수 있다. 중간 엔티티(510)는 대칭 키 1을 이용하여 데이터 및 보이는 키(VKi)를 암호화할 수 있다. 어느 경우든지, 중간 엔티티(510)는 바람직하게는 암호화된 데이터( 및 보이는 키(VKi))를 보안 엔티티(512)로 전송한다. 인증 서버(514)는 바람직하게는 암호화된 데이터 및 보이는 키(VKi)를 수신하고 대칭 키 2를 이용하여 암호화된 데이터를 해독하도록 동작가능하다.
인증 서버(514)가, 암호화된 데이터 및 보이는 키(VKi)를 얻는다면, 보이는 키-보이지 않는 키 쌍을 찾기 위해 데이터 베이스(516)를 검색한다. 중간 엔티티(510)로부터 수신된 보이는 키(VKi)와 데이터베이스(516) 내에 저장된 보이는 키들 중 하나 사이의 부합이 얻어진다면, 인증 서버(514)는 바람직하게는 보이는 키(VKi)와 프로세서(500)와 관련된 보이지 않는 키(IKi)를 이용하여 데이터를 암호화한다. 인증 서버(514)는, 암호화-암호화된 데이터를 얻기 위해 대칭 키 2를 이용하여 암호화된 데이터를 또한 암호화한다. 보안 엔티티(512)는 암호화-암호화된 데이터를 중간 엔티티(510)로 전송한다.
중간 엔티티(510)는 바람직하게는 암호화-암호화된 데이터를 수신하고 대칭 키 1을 이용하여 해독하여 보이지 않는 키(IKi)에 의해 암호화된 데이터를 얻는다. 중간 엔티티(510)는, 인터넷 또는 임의의 다른 적절한 메커니즘에 의해 암호화된 데이터를 프로세서(500)로 전송한다. PU(304)는 암호화된 데이터를 중간 엔티 티(510)로부터 수신하고 공유 DRAM(314) 내에 저장한다. 프로세서(500)는, PU(304)가 암호화된 데이터를 공유 DRAM(314) 내에 저장하는 시간에 보안 모드의 동작을 하는 것이 바람직하다. PU(304)는 공유 DRAM(314)으로부터 프로세서(500)의 로컬 메모리(350)로의 암호화된 데이터의 전송을 개시할 때, 이러한 암호화된 데이터는 해독 유닛(502)을 통과해야 한다. 결과적으로, 해독 유닛(502)은 프로세서(500)의 보안 메모리(504) 내에 저장된 보이지 않는 키(IKi)를 이용하여 암호화된 데이터를 해독한다. 유리하게는, 중간 엔티티(510)에 의해 발생된 암호화된 데이터는 보안 상태에서 프로세서(500)의 로컬 메모리(350) 내에 저장된다. 보안 모드에서, PU(304)와 임의의 다른 외부 엔티티는 프로세서(500)에 의한 인증이 없으면 로컬 메모리(350)로부터 데이터를 얻을 수 없다. 그러므로 프로세서(500)는 이러한 데이터를 침해 없이 조작할 수 있다.
도 13 내지 14는, 프로세서(500)의 보안 특징을 이용하는 또 다른 선택적인 방법을 이용하는 도 11의 시스템의 블록도들이다. 본 발명의 이러한 실시형태에 따르면, 데이터는 (예를 들어, RSA 프로토콜에 따라) 해독 프로그램 및 대칭 키를 포함한다. 중간 엔티티(510)는 (바람직하게는 중간 엔티티(510)와 임의의 신뢰받은 엔티티들에만 알려진 비밀 키인) 대칭 키 1을 이용하여 해독 프로그램 및 대칭 키 2를 암호화한다. 중간 엔티티(510)는 또한 해독 프로그램 및 대칭 키 2를 따라 프로세서(500)의 보이는 키(VKi)를 암호화할 수 있다. 어느 경우든지, 중간 엔티티(510)는 암호화된 해독 프로그램/대칭 키 2 및 보이는 키(VKi)를 보안 서버(512)로 전송한다. 인증 서버(514)는 바람직하게는 (해독 프로그램과 함께 암호화되었음 을 가정하면) 해독 프로그램 및 보이는 키(VKi)를 얻기 위해 대칭 키 2를 이용하여 암호화된 데이터를 해독하도록 동작가능하다. 키 2는 바람직하게는 다른 사람들이 키 2의 세부사항들을 아는 공공 키이다. (인증 서버(514)에 의해 이용되는 공공 키 2는 해독 프로그램으로 암호화되는 공공 키 2와 다르다.) 인증 서버(514)는 수신된 보이는 키(VKi)에 부합하는 보이는 키-보이지 않는 키 쌍을 얻도록 데이터베이스(516)를 검색한다. 부합이 얻어진다면, 인증 서버(514)는 바람직하게는 보이는 키(VKi) 및 프로세서(500)와 관련된 보이지 않는 키(IKi)를 이용하여 해독 프로그램 및 대칭 키 2를 암호화한다. 인증 서버(514)는 또한 대칭 키 2(예를 들어, RSA 암호화 기술)를 이용하여 암호화된 데이터를 암호화한다. 보안 서버(512)는, 예를 들어 인터넷을 이용하여 암호화-암호화된 데이터(예를 들어, 해독 프로그램 및 대칭 키 2)를 중간 엔티티(510)로 전송한다.
중간 엔티티(510)는 바람직하게는 암호화된 데이터를 얻기 위해 대칭 (비밀) 키 1을 이용하여 암호화-암호화된 데이터를 해독한다. 이 점에서, 중간 엔티티(510)는, 보이지 않는 키(IKi)에 의해 암호화된 해독 프로그램 및 대칭 (공공) 키 2를 가진다. 중간 엔티티(510)는, 암호화된 데이터(해독 프로그램 및 대칭 키 2)를 인터넷 등에 의해 프로세서(500)로 전송할 수 있다. 이전의 실시형태에서 처럼, PU(304)는 암호화된 데이터를 중간 엔티티(510)로부터 수신하고, 공유 DRAM(314) 내에 저장하며, 해독 유닛(502)을 통하여 전송하여, 해독 프로그램 및 대칭 키 2는 보안 상태로 프로세서(500)의 로컬 메모리(350) 내에 저장된다.
여기서, 프로세서는, "보안 모드", 예를 들어 이상에서 논의된 제 3 모드에 있게 된다. 더욱 구체적으로, 제 3 모드에서, 프로세서(500)는 프로세서(500)에 대한 정보의 전송을 개시할 수 있지만, (PU(304)와 같은) 임의의 외부 디바이스는 개시할 수 없다.
이것은, 유리하게는 프로세서(500)가 보안 방식으로 해독 프로그램 및 대칭 키 2를 조작할 수 있게 하지만, 도 14와 관련하여 더욱 상세하게 논의될 간단한 방식으로 보안 데이터 전송들을 허용한다.
중간 엔티티(510)는 바람직하게는 대칭 (공공) 키 1을 이용하여 추가 데이터를 암호화하고, 예를 들어 인터넷 또는 다른 적절한 메커니즘을 이용하여 추가 데이터를 프로세서(500)로 전송한다. 추가 데이터를 암호화하기 위해 중간 엔티티(510)에 의해 이용되는 개인 키 1은, 보안 서버(512)로 전송하기 위한 해독 프로그램을 암호화하는 데에 이용된 동일 개인 키 1일 필요가 없다. PU(304)는, 암호화된 데이터를 중간 엔티티(510)로부터 수신하고, 공유 DRAM(314) 내에 저장한다. 본 발명의 이러한 실시형태에서, 프로세서(500)는 "고립 모드"의 동작 상태에 있을 필요가 없다. 고립 모드(제 2 모드)에서, 프로세서(500)와 임의의 외부 디바이스는 프로세서(500)에 대한 정보의 전송을 개시하지 않는다. 실제로, 프로세서(500) 또는 PU(304)는 공유 DRAM(314)으로부터 해독 유닛(502)을 우회하는 로컬 메모리(350)로의 암호화된 데이터의 전송을 개시한다. 이것은, 추가 데이터가 대칭 (개인) 키 1을 이용하여 암호화되기 때문이며, PU(304)와 다른 외부 엔티티는 로컬 메모리(350) 내에 안전하게 저장된 해독 프로그램 또는 대칭 (공공) 키 2로의 접근을 식별하지 않는다. 프로세서(500)는 해독 프로그램 및 대칭 키 2를 이용하여 암호화 된 추가 데이터를 해독할 수 있다. 유리하게는, 프로세서(500)는 보안 상태에서 추가 데이터를 수신하고, 보안 모드의 동작을 필요로 하지 않고 같은 방식으로 추가 데이터를 수신할 수 있다.
도 15는, 인터넷 또는 다른 적절한 통신 채널 또는 메커니즘을 통해 서로 통신하도록 동작가능한 2개의 프로세서들(500A 및 500B)을 도시하는 블록도이다. 본 발명의 이러한 실시형태에 따르면, 각각의 프로세서(500A, 500B)는 암호화/해독 프로그램 및 대칭 키를 수신하고, 바람직하게는 도 13에 대하여 본 명세서에서 논의된 방법을 이용한다. 더욱 구체적으로는, 프로세서(500A)는 바람직하게는 암호화/해독 프로그램 및 대칭 키 2를 수신하고, 프로세서(500B)는 암호화/해독 프로그램 및 대칭 키 1을 수신한다. 암호화/해독 프로그램(들) 및 대칭 키들은 AES 암호화 방법에 충실하다.
(피어-투-피어(peer-to-peer) 통신으로서 알려진) 프로세서(500A)와 프로세서(500B) 사이의 데이터의 보안 전송은 더욱 상세히 기술될 것이다. 더욱 구체적으로, 프로세서(500B)는 로컬 메모리(350B) 내의 암호화/해독 프로그램 및 대칭 키 1을 이용하여 추가 데이터를 암호화한다. 프로세서(500B)는 암호화된 추가 데이터를 로컬 메모리(350B)로부터 공유 DRAM(314B)으로 암호화된 추가 데이터를 전송한다. 그 다음에 PU(304B)는 암호화된 추가 데이터를 공유 DRAM(314B)으로부터 인터넷에 의해 프로세서(500A)와 관련된 PU(304A)로 전송한다. 그 다음에 PU(304A)는 프로세서(500A)와 관련된 공유 DRAM(314A) 내에 암호화된 추가 데이터를 전송한다. 그 다음에 프로세서(500A) 또는 PU(304A)는 암호화된 추가 데이터를 공유 DRAM(314A)으 로부터 해독 유닛(502A)을 우회하는 로컬 메모리(350A)로 전송한다. 로컬 메모리(350A) 내에서, 암호화된 추가 데이터는 암호화/해독 프로그램 및 대칭 키 2를 이용하여 해독된다. 유리하게, 추가 데이터는, 중간 엔티티(510)와의 추가 통신들이 없이 프로세서(500B)와 프로세서(500A) 사이에서 전송될 수 있다(도 13).
또 다른 추가 데이터는 이상에서 기술된 실질적으로 유사한 기술을 이용하여 프로세서(500A)로부터 프로세서(500B)로 전송된다. 실제로, 프로세서(500A)는 암호화/해독 프로그램 및 대칭 키 2를 이용하여 추가 데이터를 암호화하고 공유 DRAM(314A)으로 전송한다. PU(304A)는 이러한 암호화된 추가 데이터를 공유 DRAM(314A)으로부터 인터넷을 경유하여 프로세서(500B)와 관련된 PU(304B)로 전송한다. PU(304B)는 암호화된 추가 데이터를 프로세서(500B)와 관련된 공유 DRAM(314B)으로 전송한다. 그 다음에, 프로세서(500B) 또는 PU(304B)는, 암호화된 추가 데이터를, 공유 DRAM(314B)으로부터, 암호화/해독 프로그램 및 대칭 키 1을 이용하여 해독이 이루어지는 로컬 메모리(350B)로 전송한다. 다시, 프로세서(500A)로부터 프로세서(500B)로의 또 다른 추가 데이터의 보안 전송은, 중간 엔티티(510) 또는 보안 서버(512)의 추가 이용 없이 행해진다(도 13).
도 16 내지 17은, 다수의 프로세서들(500)의 보안 특징들을 이용하는 또 다른 선택적인 방법이 이용되는, 도 11 및/또는 12의 시스템과 실질적으로 유사한 시스템의 블록도이다. 본 발명의 이러한 실시형태에 따르면, (분배 서버인) 중간 엔티티(510)는, 해독 프로그램 및 대칭 키 2를, 이상에서 논의된 보안 경로를 통하여 보안 서버(512)로 전송한다. 중간 엔티티(510)는, 바람직하게는 보안 방식으로 추 가 데이터의 전송에 참여하는 각각의 프로세서와 관련된 각각의 보이는 키들(VKi)을 전송한다. 보안 서버(512)는 암호화된 버젼들의 해독 프로그램 및 대칭 키 2를 중간 엔티티(510)로 전송하고, 각각의 버젼은 수신된 보이는 키들(VKi) 중 하나와 관련된 특정의 보이지 않는 키(IKi)를 이용하여 암호화된다. 그 다음에 중간 엔티티(510)는 암호화된 해독 프로그램 및 대칭 키 2의 각각의 버젼들을 각각의 프로세서들(500A, 500B, ... 500i)로 전송한다. 프로세서들 각각은 바람직하게는 보안 모드의 동작 상태에 있게 되어 각각의 버젼들의 암호화된 해독 프로그램 및 대칭 키 2는 각각의 해독 유닛들(502A, 502B, ... 502i)을 통과하여야 한다. 그러므로 각각의 프로세서(500A, 500B, ... 500i)는 관련된 로컬 메모리(350A, 350B,...350i) 내에서 해독 프로그램 및 대칭 키 2를 얻는다.
이하에서, 중간 엔티티(510)는 대칭 키 1에 의해 암호화된 분배 프로그램과 같은 일 버젼의 추가 데이터를 프로세서들(500) 각각으로 전송한다(도 17). 그 다음에, 프로세서들(500) 각각은, 각각의 로컬 메모리(350) 내에 위치된 해독 프로그램 및 대칭 키 2를 이용하여 암호화된 추가 데이터를 해독한다. 유리하게, 추가 데이터는 각각의 참여 프로세서(500)에 대하여 다른 버젼들을 필요로 하지 않고 보안 상태로 전송된다. 이와 관련하여, 해독 프로그램은, 특정 프로세서(500)가 영화, 음악, 게임 프로그램과 같은 추가 데이터를 수신할 수 있는 사용자 "티켓"으로 고려된다. 티켓이 특정 프로세서(500)( 또는 사용자)에 대하여 타당하므로, 그 사용자만이 암호화된 분배 프로그램을 수신하고 해독한다. 분배 서버(510)는, 암호화되었어도 인증된 프로세서에 의해 해독되는 일 버젼의 분배 프로그램을 준비하는 것 만이 필요하다.
본 발명의 다양한 실시형태들은, 신뢰받은 코드의 프로세싱 및 분배와 같은 다양한 보안 동작들을 달성하기 위해 독립적으로 또는 조합적으로 이용될 수 있다. 실제로, 신뢰받은 코드의 발생이 증명되고, 신뢰받은 코드가 변경되었는지에 관한 결정이 행해진다. 게다가, 본 발명은, 데이터 콘텐츠를 인증하고, 데이터 콘텐츠를 안전하게 분배하며, 시스템 권한들을 관리하고, 전자상거래 지급을 처리하며, 피어-투-피어를 관리하고, 클라이언트-투-서버(client-to-server) 인증을 관리한다. 게다가, 본 발명은, 동작 시스템이 부팅되기 전에 변경되지 않는다는 것을 인증하고 증명함으로써 주어진 프로세서의 보안 부트-업 과정을 달성하는 데에 이용된다. 본 발명의 사용들은 전부 열거되지 않았고; 실제로, 당업자들은 본 발명의 사용들이 열거되기에 너무 많다는 것을 알 것이다.
도 18은, 프로세서 협력이 본 발명의 다양한 실시형태들에 따라 어떻게 실시되는지의 또 다른 실시예를 도시한다. 더욱 구체적으로, 도 18은, 데이터 버스, 네트워크, 및/또는 임의의 다른 통신 링크를 통해 서로 통신하는 복수의 프로세서들(600A, 600B, ...600F)의 블록도를 도시한다. 프로세서들(600) 중 적어도 하나는, 로컬 메모리 내의 데이터가 동의없이 얻어질 수 없다는 점에서 "고립형"이다. 즉, 하나 이상의 프로세서들(600)은 이상에서 논의된 것처럼 보안 모드의 동작에 있다. 도 18에 도시된 실시예에서, 프로세서들(600C 및 600F)은 비보안 모드의 동작에 있지만, 프로세서들(600A, 600B, 600D 및 600E)은 보안 모드의 동작에 있다. 허용되지 않는다면, 보안 프로세서와 비보안 프로세서는 데이터를 보안 프로세서의 로컬 메모리로부터 수신할 수 없다. 그러므로, 비보안 프로세서(600C)는 데이터를 프로세서(600B)의 로컬 메모리로부터 일방적으로 얻을 수 없다. 유사하게, 보안 프로세서(600E)는 데이터를 보안 프로세서(600B)의 로컬 메모리로부터 일방적으로 얻을 수 없다. 반대로, 임의의 프로세서(600)는 데이터를 비보안 프로세서의 로컬 메모리로부터 일방적으로 얻을 수 있다. 그러나, 허용이 상호 협력에 의해 얻어질 때, 서버 프로세서(예를 들어, 프로세서(600A))는 또 다른 프로세서(예를 들어, 프로세서(600B))가 데이터를 로컬 메모리로부터 일방적으로 얻을 수 있게 한다.
예를 들어, 이상의 시스템은, 데이터의 보안이 중요한 멀티파티 상업용 벤쳐(multi-party commercial venture)의 관리에서 사용되어질 수 있다. 예를 들어, 프로세서들(600A 및 600B)은, 사유 콘텐츠를 포함하고 그리고/또는 인증 기능들을 벤쳐의 다른 파티들로 제공하는 엔티티들을 관리할 수 있다. 그러므로, 프로세서들(600D 및 600E)은 콘텐츠를 인증하고, 예를 들어, 프로세서(600A) 및/또는 프로세서(600B)를 이용하여 나중의 분배 또는 프로세싱을 위한 콘텐츠를 증명하고 그리고/또는 암호화할 수 있다. 이와 관련하여, 프로세서들(600D 및 600E)은 관리 엔티티의 인가받은 자의 것으로서 고려될 수 있다. 게다가, 제 3 파티 콘텐츠는 비보안 프로세서들(600C 및 600F)에서 이용가능하고 그리고/또는 처리될 수 있다.
본 발명이 특정 실시형태들과 관련하여 기술되었을지라도, 이러한 실시형태들은 본 발명의 원리들 및 응용예들에 불과하다. 많은 변형들이 예시적인 실시형태들에 행해질 수 있고, 다른 배열들이 첨부된 청구범위에 의해 정해진 본 발명의 사상과 범위로부터 벗어나지 않으면서 고안될 수 있다.
본 발명은, 멀티프로세서 아키텍쳐를 이용하는 보안 데이터 프로세싱에 대한 기술에 적용될 수 있다.

Claims (60)

  1. 로컬 메모리;
    정보를 상기 로컬 메모리에 대하여 운반하도록 동작가능한 버스;
    데이터를 프로세싱하도록 동작가능하며, 상기 로컬 메모리와 영향을 미치며 결합된 하나 이상의 연산 프로세싱 유닛들; 및
    장치가 2개의 동작 모드들 중 적어도 하나에 있도록 동작가능한 보안 회로를 포함하는 장치로서,
    상기 2개의 동작 모드들은:
    (i) 상기 장치 및 외부 디바이스가 상기 버스를 통한 상기 로컬 메모리와의 정보의 전송을 개시하는 제 1 모드, 및 상기 장치가 상기 버스에 대한 로컬 메모리에 대한 정보의 전송을 개시하지만 상기 외부 디바이스가 상기 버스에 대한 로컬 메모리에 대한 정보의 전송을 개시하지 않는 제 3 모드; 및
    (ii) 상기 장치와 상기 외부 디바이스가 상기 버스에 대한 메모리에 대한 정보의 전송을 개시하지 않는 제 2 모드, 및 상기 제 3 모드; 중 하나를 포함하는 것을 특징으로 하는 장치.
  2. 제 1 항에 있어서, 상기 장치가 인증 루틴을 실행할 때, 상기 보안 회로는 상기 장치가 상기 제 2 모드에 있는 것을 특징으로 하는 장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 보안 회로는, 상기 보안 회로 외부의 디바이스들에 의해 접근될 수 없으며, 제 1 키 및 제 2 키를 포함하는 비밀 데이터 영역을 포함하고;
    상기 보안 회로는, 상기 보안 회로 외부의 디바이스들에 의해 접근될 수 있는 접근가능 데이터 영역을 포함하며;
    상기 보안 회로는, 상기 장치가 상기 제 2 모드에 있을 때 상기 제 1 키의 복사본을 상기 접근가능 데이터 영역 내에 위치시키도록 동작가능한 논리 회로를 포함하는 것을 특징으로 하는 장치.
  4. 제 3 항에 있어서, 상기 제 1 키 및 상기 제 2 키는, 보안이 상기 장치의 사용 전에 유지되는 제어된 프로세스에서 비밀 데이터 영역 내에 저장되는 것을 특징으로 하는 장치.
  5. 제 3 항 또는 제 4 항에 있어서,
    상기 보안 회로는, 상기 장치가 해독 프로그램을 실행하는 단계 및 인증 프로그램을 실행하는 단계를 포함하는 인증 루틴을 실행할 때, 상기 장치가 상기 제 2 모드에 있도록 하고, 상기 인증 프로그램은 상기 제 2 키의 복사본을 포함하며, 상기 인증 프로그램은 상기 제 1 키에 따라서 암호화되어 있고;
    상기 접근가능 데이터 영역 내에 포함된 상기 제 1 키의 상기 복사본이 상기 인증 프로그램을 해독하기 위해 사용되도록, 상기 장치가 상기 해독 프로그램을 실 행하는 것을 특징으로 하는 장치.
  6. 제 5 항에 있어서,
    상기 보안 회로의 논리 회로는, 상기 인증 프로그램의 실행에 반응하여 상기 제 2 키의 복사본을 상기 접근가능 데이터 영역 내에 위치시키며;
    상기 논리 회로는, 상기 인증 프로그램 내에 포함된 제 2 키의 복사본이 상기 접근가능 데이터 영역 내에 포함된 제 2 키의 복사본에 부합하는지 여부에 대한 결정을 행하는 것을 특징으로 하는 장치.
  7. 제 5 항 또는 제 6 항에 있어서,
    상기 보안 회로는 상기 장치가 상기 3개의 모드들의 동작 상태가 되도록 동작가능하며, 상기 인증 프로그램 내에 포함된 제 2 키의 복사본이 상기 접근가능 데이터 영역 내에 포함된 제 2 키의 복사본에 부합할 때 상기 제 3 모드가 입력되는 것을 특징으로 하는 장치.
  8. 제 3 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 접근가능 데이터 영역 내에 포함된 상기 제 1 및 제 2 키들의 복사본들은 상기 장치가 상기 제 3 모드에 있기 전에 삭제되는 것을 특징으로 하는 장치.
  9. 프로세싱 유닛들 중 적어도 2개는:
    로컬 메모리;
    상기 로컬 메모리에 대하여 정보를 운반하도록 동작가능한 버스;
    데이터를 프로세싱하도록 동작가능하며 상기 로컬 메모리에 영향을 미치며 결합된 하나 이상의 연산 프로세싱 유닛들; 및
    장치가 2개의 동작 모드들 중 적어도 하나에 있도록 동작가능한 보안 회로를 포함하는, 단일 디바이스 내에 배치된 복수의 프로세싱 유닛들로서,
    상기 2개의 동작 모드들은:
    (i) 상기 장치 및 외부 디바이스가 상기 버스를 통하여 상기 메모리에 대한 정보의 전송을 개시하는 제 1 모드, 및 상기 장치가 상기 버스를 통하여 상기 메모리에 대한 정보의 전송을 개시하지만 상기 외부 디바이스는 상기 버스를 통하여 상기 메모리에 대한 정보의 전송을 개시하지 않는 제 3 모드; 및
    (ii) 상기 장치와 상기 외부 디바이스는 상기 버스를 통하여 상기 메모리에 대한 정보의 전송을 개시하지 않는 제 2 모드, 및 상기 제 3 모드; 중 하나를 포함하는 것을 특징으로 하는 프로세싱 유닛들.
  10. 장치가 복수의 동작 모드들 중 적어도 하나에 있도록 하는 단계를 포함하는 방법으로서,
    상기 장치는, 로컬 메모리, 정보를 상기 로컬 메모리에 대하여 운반하도록 동작가능한 버스, 데이터를 프로세싱하도록 동작가능하며 상기 로컬 메모리에 영향을 미치며 결합된 하나 이상의 연산 프로세싱 유닛들, 및 상기 장치가 상기 동작 모드들에 있도록 동작가능한 보안 회로를 포함하며;
    상기 복수의 동작 모드들은:
    (i) 상기 장치 및 외부 디바이스가 상기 버스를 통하여 상기 메모리에 대한 정보의 전송을 개시하는 제 1 모드, 및 상기 장치가 상기 버스를 통하여 상기 메모리에 대한 정보의 전송을 개시하지만 상기 외부 디바이스는 상기 버스를 통하여 상기 메모리에 대한 정보의 전송을 개시하지 않는 제 3 모드; 및
    (ii) 상기 장치와 상기 외부 디바이스는 상기 버스를 통하여 상기 메모리에 대한 정보의 전송을 개시하지 않는 제 2 모드, 및 상기 제 3 모드; 중 하나를 포함하는 것을 특징으로 하는 방법.
  11. 제 10 항에 있어서, 상기 장치가 인증 루틴을 실행할 때 상기 장치가 상기 제 2 모드에 있도록 하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  12. 제 10 항 또는 제 11 항에 있어서,
    상기 보안 회로는, 상기 보안 회로 외부의 디바이스들에 의해 접근될 수 없고 제 1 키 및 제 2 키를 포함하는 비밀 데이터 영역을 포함하고, 상기 보안 회로는, 상기 보안 회로 외부의 디바이스들에 의해 접근될 수 있는 접근가능 데이터 영역을 포함하며;
    상기 장치가 상기 제 2 모드에 있을 때, 상기 방법은 상기 제 1 키의 복사본을 상기 접근가능 데이터 영역 내에 위치시키는 단계를 더 포함하는 것을 특징으로 하는 방법.
  13. 제 12 항에 있어서, 보안이 상기 장치의 사용 전에 유지되는 제어된 프로세스에서, 상기 제 1 키 및 상기 제 2 키를 상기 비밀 데이터 영역 내에 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  14. 제 12 항 또는 제 13 항에 있어서,
    인증 프로그램은 상기 제 2 키의 복사본을 포함하며, 상기 인증 프로그램은 상기 제 1 키에 따라서 암호화되어 있으며, 해독 프로그램을 실행하는 단계 및 상기 인증 프로그램을 실행하는 단계를 포함하는 인증 루틴을 실행할 때 상기 장치가 상기 제 2 모드에 있도록 하는 단계; 및
    상기 접근가능 데이터 영역 내에 포함된 제 1 키의 복사본이 상기 인증 프로그램을 해독하는 데에 이용되도록 상기 해독 프로그램을 실행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  15. 제 14 항에 있어서,
    상기 제 2 키의 복사본을 상기 인증 프로그램의 실행에 반응하여 상기 접근가능 데이터 영역 내에 위치시키는 단계; 및
    상기 인증 프로그램 내에 포함된 제 2 키의 복사본이 상기 접근가능 데이터 영역 내에 포함된 제 2 키의 복사본에 부합하는지 여부를 결정하는 단계를 더 포함 하는 것을 특징으로 하는 방법.
  16. 제 14 항 또는 제 15 항에 있어서,
    상기 3개의 모드들 중 어느 하나가 입력되고,
    상기 인증 프로그램 내에 포함된 제 2 키의 복사본이 상기 접근가능 데이터 영역 내에 포함된 제 2 키의 복사본에 부합할 때, 상기 방법은 상기 장치가 상기 제 3 모드에 있도록 하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  17. 제 12 항 내지 제 16 항 중 어느 한 항에 있어서,
    상기 장치가 상기 제 3 모드에 있기 이전에 상기 접근가능 데이터 영역 내에 포함된 제 1 키의 복사본 및 제 2 키의 복사본을 삭제하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  18. 주 프로세싱 유닛;
    각각이 로컬 메모리 및 해독 유닛을 포함하고, 각각이 표준 모드의 동작 또는 보안 모드의 동작을 입력하도록 동작가능한, 복수의 부가 프로세싱 유닛들; 및
    공유 메모리를 포함하는 장치로서,
    상기 주 프로세싱 유닛은, 주어진 부가 프로세싱 유닛이 상기 표준 모드에 있을 때, 상기 공유 메모리와, 상기 해독 유닛을 우회하는 부가 프로세싱 유닛들 중 주어진 하나 사이의 데이터 전송을 개시할 수 있고,
    상기 주 프로세싱 유닛은:
    주어진 부가 프로세싱 유닛이 상기 보안 모드에 있을 때, (i) 상기 주어진 부가 프로세싱 유닛으로부터 상기 공유 메모리로의 데이터 전송들을 개시하는 것; 또는 (ii) 상기 공유 메모리로부터, 상기 해독 유닛을 우회하는 상기 주어진 부가 프로세싱 유닛으로의 데이터 전송들을 개시하는 것이 가능하지 않은 것을 특징으로 하는 방법.
  19. 제 18 항에 있어서,
    상기 부가 프로세싱 유닛들은, 상기 부가 프로세싱 유닛들이 상기 표준 모드의 동작 또는 상기 보안 모드의 동작에 있는지 여부에 상관없이 상기 공유 메모리와의 데이터 전송들을 개시할 수 있는 것을 특징으로 하는 장치.
  20. 제 18 항 또는 제 19 항에 있어서,
    상기 부가 프로세싱 유닛들은, 하드웨어 리셋 조건 및 파워-업 조건 중 적어도 하나에 대하여 상기 보안 모드의 동작을 입력하도록 동작가능한 것을 특징으로 하는 장치.
  21. 제 18 항 내지 제 20 항 중 어느 한 항에 있어서, 상기 데이터는 소프트웨어 프로그램의 적어도 일부를 포함하는 것을 특징으로 하는 장치.
  22. 제 18 항 내지 제 21 항 중 어느 한 항에 있어서,
    각각의 부가 프로세싱 유닛은, 상기 주어진 부가 프로세싱 유닛의 해독 유닛, 및 인증된 엔티티들 중 적어도 하나에 의해서만 접근가능한 실질적으로 고유한 키를 포함하는 보안 스토어를 포함하는 것을 특징으로 하는 장치.
  23. 제 22 항에 있어서, 상기 주어진 부가 프로세싱 유닛이 상기 보안 모드의 동작에 있을 때, 각각의 부가 프로세싱 유닛의 해독 유닛은 상기 주 프로세싱 유닛에 의해 개시되는, 상기 공유 메모리로부터 상기 로컬 메모리로의 데이터 전송들을 해독하는 키를 사용하는 것을 특징으로 하는 장치.
  24. 제 22 항 또는 제 23 항에 있어서, 상기 공유 메모리는, 상기 부가 프로세싱 유닛들의 실질적으로 고유한 키들 중 하나를 이용하여 암호화되어 있는 암호화된 데이터를 포함하는 것을 특징으로 하는 장치.
  25. 제 22 항 내지 제 24 항 중 어느 한 항에 있어서,
    각각의 부가 프로세싱 유닛은, 상기 주어진 부가 프로세싱 유닛 및 상기 장치 중 적어도 하나의 외부에 있는 엔티티들에 알려진 실질적으로 고유한 ID와 관련된 것을 특징으로 하는 장치.
  26. 제 24 항 또는 제 25 항에 있어서, 상기 암호화된 데이터는 상기 장치의 외 부에 있는 보안 엔티티에 의해 암호화되고, 상기 보안 엔티티는 상기 주어진 부가 프로세싱 유닛의 키를 사용하도록 인증되어 있는 것을 특징으로 하는 장치.
  27. 제 22 항 내지 제 26 항 중 어느 한 항에 있어서, 상기 보안 엔티티는, 관여하는 부가 프로세싱 유닛들의 ID들 및 키들을 포함하는 데이터베이스를 포함하며, 주어진 부가 프로세싱 유닛에 대한 각각의 ID 및 키는 서로 관련되어 있는 것을 특징으로 하는 장치.
  28. 제 22 항 내지 제 27 항 중 어느 한 항에 있어서, 상기 비보안 엔티티가 상기 키와 관련된 ID를 상기 보안 엔티티로 제공한 이후에, 상기 보안 엔티티는, 주어진 부가 프로세싱 유닛의 키를 이용하여, 상기 주어진 부가 프로세싱 유닛의 키를 이용하도록 인증되지 않은, 비보안 엔티티로부터 수신된 데이터를 암호화하는 것을 특징으로 하는 장치.
  29. 제 28 항에 있어서,
    상기 보안 엔티티는 상기 암호화된 데이터를 상기 비보안 엔티티로 제공하도록 동작가능하고;
    상기 비보안 엔티티는 상기 암호화된 데이터를 상기 공유 메모리 내에 저장하기 위해 상기 장치로 제공하도록 동작가능하며;
    상기 암호화된 데이터가 상기 해독 유닛으로 입력되도록, 상기 주 프로세싱 유닛은 상기 공유 메모리로부터 상기 주어진 부가 프로세싱 유닛으로의 상기 암호화된 데이터의 전송을 개시하도록 동작가능하며;
    상기 데이터가 상기 주어진 부가 프로세싱 유닛의 로컬 메모리 내에 저장되도록, 상기 주어진 부가 프로세싱 유닛의 해독 유닛은 상기 주어진 부가 프로세싱 유닛의 키를 이용하여 상기 암호화된 데이터를 해독하도록 동작가능한 것을 특징으로 하는 장치.
  30. 제 22 항 내지 제 27 항 중 어느 한 항에 있어서,
    주어진 부가 프로세싱 유닛의 키를 이용하도록 인증되지 않은 비보안 엔티티는, 제 1 대칭 키를 이용하여 데이터를 암호화하고, 암호화된 데이터를 상기 보안 엔티티로 제공하며, 주어진 부가 프로세싱 유닛과 관련된 ID를 상기 보안 엔티티로 제공하고;
    상기 보안 엔티티는, 제 2 대칭 키를 이용하여 상기 비보안 엔티티에 의해 제공된 암호화된 데이터를 해독하고, 상기 비보안 엔티티로부터 수신된 ID와 관련된 주어진 부가 프로세싱 유닛의 키를 이용하여 상기 데이터를 암호화하는 것을 특징으로 하는 장치.
  31. 제 30 항에 있어서, 상기 비보안 엔티티는, 상기 제 1 대칭 키를 이용하여 상기 데이터 및 상기 주어진 부가 프로세싱 유닛의 ID를 암호화하고, 상기 암호화된 데이터/ID를 상기 보안 엔티티로 제공하는 것을 특징으로 장치.
  32. 제 30 항 또는 제 31 항에 있어서,
    상기 보안 엔티티는, 상기 제 2 대칭 키를 이용하여 상기 암호화된 데이터를 암호화하고, 암호화-암호화된 데이터를 상기 비보안 엔티티로 제공하도록 동작가능하고;
    상기 비보안 엔티티는, 상기 주어진 부가 프로세싱 유닛의 키를 이용하여 생성된 암호화된 데이터를 얻기 위해 상기 제 1 대칭 키를 이용하여 상기 암호화-암호화된 데이터를 해독하며, 상기 암호화된 데이터를 상기 공유 메모리 내에 저장하기 위해 상기 장치로 제공하도록 동작가능하며;
    상기 주 프로세싱 유닛은, 상기 암호화된 데이터가 상기 해독 유닛으로 입력되도록 상기 공유 메모리로부터 상기 주어진 부가 프로세싱 유닛으로의 상기 암호화된 데이터의 전송을 개시하도록 동작가능하고;
    상기 주어진 부가 프로세싱 유닛의 해독 유닛은, 상기 데이터가 상기 주어진 부가 프로세싱 유닛의 로컬 메모리 내에 저장되도록, 상기 주어진 부가 프로세싱 유닛의 키를 이용하여 상기 암호화된 데이터를 해독하도록 동작가능한 것을 특징으로 하는 장치.
  33. 제 22 항 내지 제 27 항 중 어느 한 항에 있어서,
    상기 데이터는 해독 프로그램이고;
    주어진 부가 프로세싱 유닛의 키를 이용하도록 인증되지 않은 비보안 엔티티 는, 제 1 대칭 키를 이용하여 상기 해독 프로그램을 암호화하고, 상기 암호화된 해독 프로그램을 상기 보안 엔티티로 제공하며, 주어진 부가 프로세싱 유닛과 관련된 ID를 상기 보안 엔티티로 제공하며;
    상기 보안 엔티티는, 제 2 대칭 키를 이용하여 상기 비보안 엔티티에 의해 제공된 암호화된 해독 프로그램을 해독하고, 상기 비보안 엔티티로부터 수신된 ID와 관련되어 있는 주어진 부가 프로세싱 유닛의 키를 이용하여 상기 해독 프로그램 및 상기 제 2 대칭 키를 암호화하는 것을 특징으로 하는 장치.
  34. 제 33 항에 있어서, 상기 비보안 엔티티는, 상기 제 1 대칭 키를 이용하여 상기 주어진 부가 프로세싱 유닛의 해독 프로그램 및 ID를 암호화하고, 상기 암호화된 해독 프로그램/ID를 상기 보안 엔티티로 제공하는 것을 특징으로 하는 장치.
  35. 제 33 항에 있어서, 상기 비보안 엔티티는, 상기 제 1 대칭 키를 이용하여 상기 해독 프로그램, 상기 주어진 부가 프로세싱 유닛의 ID, 및 상기 제 2 대칭 키를 암호화하고, 암호화된 해독 프로그램/ID/제 2 대칭 키를 상기 보안 엔티티로 제공하는 것을 특징으로 하는 장치.
  36. 제 33 항에 있어서,
    상기 보안 엔티티는, 상기 제 2 대칭 키를 이용하여 상기 암호화된 해독 프로그램 및 상기 제 2 대칭 키를 암호화하며 상기 암호화-암호화된 해독 프로그램/ 제 2 대칭 키를 상기 비보안 엔티티로 제공하도록 동작가능하고;
    상기 비보안 엔티티는, 상기 주어진 부가 프로세싱 유닛의 키를 이용하여 생성된 암호화된 해독 프로그램/제 2 대칭 키를 얻기 위해 상기 제 2 대칭 키를 이용하여 상기 암호화-암호화된 해독 프로그램/제 2 대칭 키를 해독하고, 상기 암호화된 해독 프로그램/제 2 대칭 키를 상기 공유 메모리 내에 저장하기 위해 상기 장치로 제공하도록 동작가능하며;
    상기 주 프로세싱 유닛은, 상기 암호화된 해독 프로그램/제 2 대칭 키가 상기 해독 유닛에 입력되도록, 상기 공유 메모리로부터 상기 주어진 부가 프로세싱 유닛으로의 상기 암호화된 해독 프로그램/제 2 대칭 키의 전송을 개시하도록 동작가능하고;
    상기 주어진 부가 프로세싱 유닛의 해독 유닛은, 상기 해독 프로그램 및 상기 제 2 대칭 키가 상기 주어진 부가 프로세싱 유닛의 로컬 메모리 내에 저장되도록, 상기 주어진 부가 프로세싱 유닛의 키를 이용하여 상기 암호화된 해독 프로그램/제 2 대칭 키를 해독하도록 동작가능한 것을 특징으로 하는 장치.
  37. 제 36 항에 있어서, 상기 비보안 엔티티는, 상기 제 1 대칭 키를 이용하여 데이터를 암호화하고, 암호화된 데이터를 상기 공유 메모리 내에 저장하기 위해 상기 장치로 제공하는 것을 특징으로 하는 장치.
  38. 제 36 항 또는 제 37 항에 있어서, 상기 주어진 부가 프로세싱 유닛은, 상기 암호화된 데이터를 상기 공유 메모리로부터 상기 해독 유닛을 우회하는 로컬 메모리로 수신할 수 있는 것을 특징으로 하는 장치.
  39. 제 38 항에 있어서, 상기 주어진 부가 프로세싱 유닛은, 상기 암호화된 데이터가 상기 로컬 메모리로부터 상기 공유 메모리로 수신될 때 상기 표준 모드 또는 상기 보안 모드에 있는 것을 특징으로 하는 장치.
  40. 제 36 항 내지 제 38 항 중 어느 한 항에 있어서, 상기 주어진 부가 프로세싱 유닛은, 상기 해독 프로그램 및 상기 제 2 대칭 키를 이용하여 상기 암호화된 데이터를 해독하도록 동작가능한 것을 특징으로 하는 장치.
  41. 제 40 항에 있어서, 상기 데이터는 소프트웨어 프로그램을 포함하는 것을 특징으로 하는 장치.
  42. 제 36 항 내지 제 38 항 중 어느 한 항에 있어서, 상기 주 프로세싱 유닛은, 상기 공유 메모리로부터 상기 해독 유닛을 우회하는 주어진 부가 프로세싱 유닛의 로컬 메모리 내로 상기 암호화된 데이터의 전송을 개시하도록 동작가능한 것을 특징으로 하는 장치.
  43. 각각의 부가 프로세싱 유닛은 로컬 메모리 및 해독 유닛을 포함하고 보안 모 드의 동작을 입력하도록 동작가능하며, 주 프로세싱 유닛, 복수의 부가 프로세싱 유닛들, 및 공유 메모리를 제공하는 단계; 및
    외부로 개시되는 상기 로컬 메모리로의 임의의 데이터 전송이, 주어진 부가 프로세싱 유닛에 실질적으로 고유하고 인증된 엔티티들에 의해서만 알려진 키를 이용하여 상기 해독 유닛에 의해 해독되도록, 상기 주어진 부가 프로세싱 유닛이 상기 보안 모드에 있을 때, 상기 주 프로세싱 유닛이 상기 공유 메모리로부터 상기 해독 유닛을 우회하는 부가 프로세싱 유닛들 중 주어진 하나로의 데이터 전송을 개시하는 것을 금지하는 단계를 포함하는 것을 특징으로 하는 방법.
  44. 제 43 항에 있어서,
    상기 부가 프로세싱 유닛들이 상기 보안 모드의 동작에 있는지 여부에 상관없이, 상기 부가 프로세싱 유닛들이 상기 공유 메모리와의 데이터 전송들을 개시하는 것을 허용하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  45. 제 43 항 또는 제 44 항에 있어서,
    상기 부가 프로세싱 유닛들이, 하드웨어 리셋 조건 및 파워-업 조건 중 적어도 하나에 대해 상기 보안 모드의 동작을 입력시키도록 하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  46. 제 43 항 내지 제 45 항 중 어느 한 항에 있어서,
    중간 엔티티로부터 보안 엔티티로의 부가 프로세싱 유닛들 중 주어진 하나와 관련된 데이터 및 ID를 전송하는 단계;
    관여하는 부가 프로세싱 유닛들의 ID들 및 관련된 키들을 포함하는 보안 엔티티의 데이터베이스를 검색하고, 상기 ID가 수신되었던 주어진 부가 프로세싱 유닛과 관련된 키를 획득하는 단계;
    상기 ID가 수신되었던 주어진 부가 프로세싱 유닛과 관련된 키를 이용하여 상기 보안 엔티티로 전송되는 데이터를 암호화하는 단계; 및
    상기 암호화된 데이터를 상기 보안 엔티티로부터 상기 중간 엔티티로 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  47. 제 46 항에 있어서,
    상기 암호화된 데이터를 상기 중간 엔티티로부터 상기 주어진 부가 프로세싱 유닛의 공유 메모리로 전송하는 단계;
    상기 암호화된 데이터가 상기 암호화된 데이터의 키를 이용하여 상기 해독 유닛에 의해 해독되도록, 상기 주어진 부가 프로세싱 유닛이 상기 보안 모드에 있을 때 상기 공유 메모리로부터 상기 주어진 부가 프로세싱 유닛으로의 암호화된 데이터의 전송을 개시하는 단계; 및
    상기 데이터를 상기 주어진 부가 프로세싱 유닛의 로컬 메모리 내에 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  48. 제 43 항에 있어서,
    상기 데이터 및 상기 부가 프로세싱 유닛들 중 주어진 하나와 관련된 ID 중 적어도 하나를 제 1 대칭 키를 이용하여 상기 중간 엔티티에서 암호화하는 단계;
    상기 암호화된 데이터 및 상기 ID를 상기 중간 엔티티로부터 보안 엔티티로 전송하는 단계;
    상기 암호화된 데이터 및 상기 ID 중 상기 적어도 하나를 제 2 대칭 키를 이용하여 상기 보안 엔티티에서 해독하는 단계;
    관여하는 부가 프로세싱 유닛들의 ID들 및 관련된 키들을 포함하는 보안 엔티티의 데이터베이스를 검색하고, 상기 ID가 수신되었던 주어진 부가 프로세싱 유닛과 관련된 키를 획득하는 단계;
    상기 주어진 부가 프로세싱 유닛과 관련된 키를 이용하여 상기 데이터를 상기 보안 엔티티에서 암호화하고, 상기 암호화된 데이터를 상기 제 2 대칭 키를 이용하여 암호화하는 단계; 및
    상기 암호화-암호화된 데이터를 상기 보안 엔티티로부터 상기 중간 엔티티로 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  49. 제 48 항에 있어서,
    상기 주어진 부가 프로세싱 유닛과 관련된 키에 의해 암호화된 데이터를 획득하기 위해 상기 제 1 대칭 키를 이용하여 상기 암호화-암호화된 데이터를 상기 중간 엔티티에서 해독하는 단계;
    상기 중간 엔티티로부터의 암호화된 데이터를 상기 주어진 부가 프로세싱 유닛의 공유 메모리로 전송하는 단계;
    상기 암호화된 데이터가 상기 암호화된 데이터의 키를 이용하여 상기 해독 유닛에 의해 해독되도록, 상기 주어진 부가 프로세싱 유닛이 상기 보안 모드에 있을 때 상기 공유 메모리로부터 상기 주어진 부가 프로세싱 유닛으로의 암호화된 데이터의 전송을 개시하는 단계; 및
    상기 데이터를 상기 주어진 부가 프로세싱 유닛의 로컬 메모리 내에 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  50. 제 49 항에 있어서, 상기 데이터는 (i) 해독 프로그램, 및 (ii) 상기 제 2 대칭 키를 포함하며, 상기 방법은:
    추가 데이터를 상기 제 1 대칭 키를 이용하여 상기 중간 엔티티에서 암호화하는 단계;
    암호화된 추가 데이터를 상기 공유 메모리 내에 저장하기 위해 상기 중간 엔티티로부터 상기 주어진 부가 프로세싱 유닛으로 전송하는 단계; 및
    상기 해독 유닛이 우회되며, 상기 주어진 부가 프로세싱 유닛이 상기 보안 모드에 있지 않은 동안 상기 암호화된 추가 데이터를 상기 공유 메모리로부터 상기 로컬 메모리로의 전송을 개시하는 것을 특징으로 하는 방법.
  51. 제 50 항에 있어서,
    상기 해독 프로그램 및 상기 제 2 대칭 키를 이용하여 상기 암호화된 추가 데이터를 해독하기 위해 상기 주어진 부가 프로세싱 유닛을 이용하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  52. 제 49 항에 있어서,
    상기 데이터는, (i) 암호화/해독 프로그램, 및 (ii) 상기 암호화/해독 프로그램과 관련된 한 쌍의 대칭 키들 중 하나를 포함하며, 상기 주어진 부가 프로세싱 유닛의 로컬 메모리 내에 저장되고,
    상기 방법은, 추가 데이터 및 추가된 부가 프로세싱 유닛을 이용하여 상기 방법의 단계들을 반복하는 단계를 포함하고, 상기 추가 데이터는 (i) 추가된 암호화/해독 프로그램, 및 (ii) 상기 추가된 암호화/해독 프로그램과 관련된 상기 한 쌍의 대칭 키들 중 다른 하나를 포함하며, 상기 추가된 부가 프로세싱 유닛의 로컬 메모리 내에 저장되는 것을 특징으로 하는 방법.
  53. 제 52 항에 있어서,
    상기 암호화/해독 프로그램 및 상기 주어진 부가 프로세싱 유닛의 하나의 대칭 키를 이용하여 추가 데이터를 암호화하는 단계;
    암호화된 추가 데이터를, 추가된 부가 프로세싱 유닛의 공유 메모리 내에 저장하기 위해 상기 주어진 부가 프로세싱 유닛으로부터 상기 추가된 부가 프로세싱 유닛으로 전송하는 단계; 및
    상기 추가된 부가 프로세싱 유닛의 해독 유닛이 우회되도록, 상기 추가된 부가 프로세싱 유닛이 상기 보안 모드에 있지 않은 동안, 상기 공유 메모리로부터 상기 추가된 부가 프로세싱 유닛의 로컬 메모리로의 암호화된 추가 데이터의 전송을 개시하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  54. 제 53 항에 있어서,
    상기 추가된 암호화/해독 프로그램 및 상기 다른 대칭 키를 이용하여 상기 암호화된 추가 데이터를 해독하기 위해 상기 추가된 부가 프로세싱 유닛을 이용하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  55. 제 52 항에 있어서,
    상기 암호화/해독 프로그램 및 상기 추가된 부가 프로세싱 유닛의 다른 대칭 키를 이용하여 추가 데이터를 암호화하는 단계;
    상기 암호화된 추가 데이터를, 상기 주어진 부가 프로세싱 유닛의 공유 메모리 내에 저장하기 위해 상기 추가된 부가 프로세싱 유닛으로부터 상기 주어진 부가 프로세싱 유닛으로 전송하는 단계; 및
    상기 주어진 부가 프로세싱 유닛의 암호화 유닛이 우회되도록, 상기 주어진 부가 프로세싱 유닛이 상기 보안 모드에 있지 않은 동안, 상기 공유 메모리로부터 상기 주어진 부가 프로세싱 유닛의 로컬 메모리로의 암호화된 추가 데이터의 전송을 개시하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  56. 제 55 항에 있어서,
    상기 암호화/해독 프로그램 및 상기 하나의 대칭 키를 이용하여 상기 암호화된 추가 데이터를 해독하기 위해 상기 주어진 부가 프로세싱 유닛을 이용하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  57. 제 55 항에 있어서,
    상기 주어진 부가 프로세싱 유닛의 공유 메모리는, 상기 추가된 부가 프로세싱 유닛의 공유 메모리와 같은 메모리인 것을 특징으로 하는 방법.
  58. 제 49 항에 있어서, 상기 데이터가 (i) 해독 프로그램, 및 (ii) 상기 해독 프로그램과 관련된 상기 제 2 대칭 키를 포함하고, 상기 주어진 부가 프로세싱 유닛의 로컬 메모리 내에 저장되며, 상기 방법은:
    상기 해독 프로그램 및 상기 제 2 대칭 키가 상기 부가 프로세싱 유닛들 각각 내에 저장되도록 추가된 부가 프로세싱 유닛들을 이용하여 상기 방법의 단계들을 반복하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  59. 제 58 항에 있어서,
    추가 데이터를 상기 제 1 대칭 키를 이용하여 상기 중간 엔티티에서 암호화하는 단계;
    암호화된 추가 데이터를 상기 중간 엔티티로부터 상기 부가 프로세싱 유닛들 각각으로 전송하는 단계; 및
    상기 부가 프로세싱 유닛들의 각각의 해독 유닛들이 우회되도록, 상기 부가 프로세싱 유닛들이 상기 보안 모드에 있지 않은 동안, 상기 공유 메모리로부터 상기 부가 프로세싱 유닛들의 각각의 로컬 메모리들로의 암호화된 추가 데이터의 전송을 개시하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  60. 제 59 항에 있어서,
    상기 각각의 해독 프로그램들 및 상기 제 2 대칭 키들을 이용하여 상기 암호화된 추가 데이터를 해독하도록 상기 부가 프로세싱 유닛들을 이용하는 단계를 더 포함하는 것을 특징으로 하는 방법.
KR1020077013169A 2004-11-12 2005-11-11 보안 데이터 프로세싱 및 전송을 위한 방법들 및 장치들 KR100924043B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/985,354 2004-11-12
US10/985,354 US7502928B2 (en) 2004-11-12 2004-11-12 Methods and apparatus for secure data processing and transmission

Publications (2)

Publication Number Publication Date
KR20070086051A true KR20070086051A (ko) 2007-08-27
KR100924043B1 KR100924043B1 (ko) 2009-10-27

Family

ID=35709177

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077013169A KR100924043B1 (ko) 2004-11-12 2005-11-11 보안 데이터 프로세싱 및 전송을 위한 방법들 및 장치들

Country Status (7)

Country Link
US (2) US7502928B2 (ko)
EP (2) EP1836635B1 (ko)
JP (2) JP4386883B2 (ko)
KR (1) KR100924043B1 (ko)
CN (2) CN101084505B (ko)
TW (1) TWI284811B (ko)
WO (1) WO2006052017A2 (ko)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060026417A1 (en) * 2004-07-30 2006-02-02 Information Assurance Systems L.L.C. High-assurance secure boot content protection
US20060155955A1 (en) * 2005-01-10 2006-07-13 Gschwind Michael K SIMD-RISC processor module
US7516315B2 (en) * 2005-03-18 2009-04-07 Research In Motion Ltd. Electronic device having an alterable configuration and methods of manufacturing and configuring the same
US20060288209A1 (en) * 2005-06-20 2006-12-21 Vogler Dean H Method and apparatus for secure inter-processor communications
US8477940B2 (en) * 2005-07-15 2013-07-02 Tyfone, Inc. Symmetric cryptography with user authentication
US8189788B2 (en) * 2005-07-15 2012-05-29 Tyfone, Inc. Hybrid symmetric/asymmetric cryptography with user authentication
FR2892838B1 (fr) * 2005-10-28 2008-04-25 Michael Vergoz Gestionnaire specialise de flux entre le processeur et la memoire a acces aleatoire
US8688856B2 (en) * 2006-01-24 2014-04-01 Novell, Inc. Techniques for managing a network delivery path of content via a key
KR100891093B1 (ko) * 2006-05-09 2009-03-31 삼성전자주식회사 보안 데이터의 안전한 이동을 제공하는 장치 및 방법
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
KR101058140B1 (ko) * 2007-05-11 2011-08-24 나그라스타 엘.엘.씨. 보안 환경에서 프로세서 실행을 제어하기 위한 장치
US8625793B2 (en) 2007-06-11 2014-01-07 Qualcomm Incorporated Resynchronization for push message security using secret keys
KR100915589B1 (ko) * 2007-07-12 2009-09-07 엔에이치엔비즈니스플랫폼 주식회사 보안 인증 시스템 및 방법
US8515052B2 (en) * 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US8826037B2 (en) * 2008-03-13 2014-09-02 Cyberlink Corp. Method for decrypting an encrypted instruction and system thereof
US8959200B2 (en) * 2008-07-01 2015-02-17 Ortho-Clinical Diagnostics, Inc. Event-based communication in a clinical diagnostic analyzer
US8566286B1 (en) 2009-05-15 2013-10-22 Idera, Inc. System and method for high speed database backup using rapidly adjusted dynamic compression ratios controlled by a feedback loop
US8646050B2 (en) * 2011-01-18 2014-02-04 Apple Inc. System and method for supporting JIT in a secure system with randomly allocated memory ranges
CN103262491A (zh) * 2011-11-09 2013-08-21 华为技术有限公司 一种保护云中数据安全的方法、装置及系统
US8832374B1 (en) * 2011-11-14 2014-09-09 Union Supply Company, Inc. Providing electronic content to residents of controlled-environment facilities
US9672574B2 (en) 2012-03-20 2017-06-06 Facebook, Inc. Bypass login for applications on mobile devices
US9154568B2 (en) 2012-03-20 2015-10-06 Facebook, Inc. Proxy bypass login for applications on mobile devices
US20130305388A1 (en) * 2012-05-10 2013-11-14 Qualcomm Incorporated Link status based content protection buffers
FR2998689B1 (fr) * 2012-11-27 2014-12-26 Oberthur Technologies Ensemble electronique comprenant un module de desactivation
US10410003B2 (en) 2013-06-07 2019-09-10 Apple Inc. Multiple containers assigned to an application
CN103400086B (zh) * 2013-07-30 2016-12-07 东莞宇龙通信科技有限公司 一种终端
CN103402019B (zh) * 2013-07-30 2016-04-06 东莞宇龙通信科技有限公司 终端和数据处理方法
US9170957B2 (en) 2013-08-29 2015-10-27 Qualcomm Incorporated Distributed dynamic memory management unit (MMU)-based secure inter-processor communication
JP6265783B2 (ja) * 2014-03-06 2018-01-24 キヤノン株式会社 暗号化/復号化システム及びその制御方法、並びにプログラム
KR102297383B1 (ko) * 2014-09-25 2021-09-03 삼성전자주식회사 보안 데이터 처리
EP3048776B2 (en) * 2015-01-22 2021-03-17 Nxp B.V. Methods for managing content, computer program products and secure element
KR101666746B1 (ko) * 2015-04-30 2016-10-17 성균관대학교산학협력단 컴퓨팅 장치의 도난 및 부정 접근으로부터 컴퓨팅 장치 내의 데이터를 안전하게 보호할 수 있는 데이터 보호 시스템 및 방법
US10102391B2 (en) * 2015-08-07 2018-10-16 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
TWI560575B (en) * 2015-10-15 2016-12-01 Via Tech Inc Microprocessor and method for securely executing instructions therein
KR102385552B1 (ko) 2015-12-29 2022-04-12 삼성전자주식회사 시스템-온-칩 및 이를 포함하는 전자 장치
US10209907B2 (en) * 2016-06-14 2019-02-19 Microsoft Technology Licensing, Llc Secure removal of sensitive data
JP6852604B2 (ja) * 2017-07-12 2021-03-31 住友電気工業株式会社 車載装置、管理方法および管理プログラム
CN109960943A (zh) * 2019-04-02 2019-07-02 山东渔翁信息技术股份有限公司 一种密码设备
US10846413B2 (en) 2019-04-18 2020-11-24 Advanced New Technologies Co., Ltd. Data processing method and device
KR102147912B1 (ko) 2019-08-13 2020-08-25 삼성전자주식회사 프로세서 칩 및 그 제어 방법들
FR3118504B1 (fr) * 2020-12-28 2024-05-17 St Microelectronics Rousset Système électronique comprenant plusieurs microprocesseurs
TWI847921B (zh) * 2023-11-22 2024-07-01 立鴻半導體股份有限公司 記憶體內二進位浮點乘法裝置及其操作方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4633388A (en) 1984-01-18 1986-12-30 Siemens Corporate Research & Support, Inc. On-chip microprocessor instruction decoder having hardware for selectively bypassing on-chip circuitry used to decipher encrypted instruction codes
US5134700A (en) 1987-09-18 1992-07-28 General Instrument Corporation Microcomputer with internal ram security during external program mode
US7133845B1 (en) * 1995-02-13 2006-11-07 Intertrust Technologies Corp. System and methods for secure transaction management and electronic rights protection
US6708273B1 (en) 1997-09-16 2004-03-16 Safenet, Inc. Apparatus and method for implementing IPSEC transforms within an integrated circuit
US7225333B2 (en) * 1999-03-27 2007-05-29 Microsoft Corporation Secure processor architecture for use with a digital rights management (DRM) system on a computing device
US7996670B1 (en) 1999-07-08 2011-08-09 Broadcom Corporation Classification engine in a cryptography acceleration chip
US7124170B1 (en) * 1999-08-20 2006-10-17 Intertrust Technologies Corp. Secure processing unit systems and methods
US6938164B1 (en) 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
JP2002163239A (ja) * 2000-11-22 2002-06-07 Toshiba Corp マルチプロセッサシステムおよびその制御方法
US6959346B2 (en) * 2000-12-22 2005-10-25 Mosaid Technologies, Inc. Method and system for packet encryption
US6826662B2 (en) 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US6526491B2 (en) 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US20030037237A1 (en) * 2001-04-09 2003-02-20 Jean-Paul Abgrall Systems and methods for computer device authentication
CN1268088C (zh) * 2001-11-29 2006-08-02 东南大学 基于pki的vpn密钥交换的实现方法
EP1329787B1 (en) 2002-01-16 2019-08-28 Texas Instruments Incorporated Secure mode indicator for smart phone or PDA
JP3866597B2 (ja) * 2002-03-20 2007-01-10 株式会社東芝 内部メモリ型耐タンパプロセッサおよび秘密保護方法
JP2003281071A (ja) * 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
DE60322366D1 (de) 2002-04-18 2008-09-04 Advanced Micro Devices Inc Rechnersystem mit einem für einen sicheren ausführungsmodus geeigneten cpu und einem sicherheitsdienst-prozessor die über einen gesicherten kommunikationsweg miteinander verbunden sind
US20040003321A1 (en) 2002-06-27 2004-01-01 Glew Andrew F. Initialization of protected system
US20040111563A1 (en) * 2002-12-10 2004-06-10 Edirisooriya Samantha J. Method and apparatus for cache coherency between heterogeneous agents and limiting data transfers among symmetric processors
US7322042B2 (en) * 2003-02-07 2008-01-22 Broadon Communications Corp. Secure and backward-compatible processor and secure software execution thereon
JP4945053B2 (ja) 2003-03-18 2012-06-06 ルネサスエレクトロニクス株式会社 半導体装置、バスインターフェース装置、およびコンピュータシステム
US7475257B2 (en) * 2003-09-25 2009-01-06 International Business Machines Corporation System and method for selecting and using a signal processor in a multiprocessor system to operate as a security for encryption/decryption of data

Also Published As

Publication number Publication date
CN101615233B (zh) 2011-12-28
EP1836635B1 (en) 2019-02-27
JP4386883B2 (ja) 2009-12-16
EP3514723A1 (en) 2019-07-24
JP2009217845A (ja) 2009-09-24
JP4756718B2 (ja) 2011-08-24
EP3514723B1 (en) 2020-12-23
WO2006052017A2 (en) 2006-05-18
CN101084505B (zh) 2010-04-21
JP2006139785A (ja) 2006-06-01
WO2006052017A3 (en) 2006-08-24
US7502928B2 (en) 2009-03-10
US20090125717A1 (en) 2009-05-14
KR100924043B1 (ko) 2009-10-27
US8001377B2 (en) 2011-08-16
EP1836635A2 (en) 2007-09-26
TWI284811B (en) 2007-08-01
US20060112213A1 (en) 2006-05-25
CN101084505A (zh) 2007-12-05
CN101615233A (zh) 2009-12-30
TW200636488A (en) 2006-10-16

Similar Documents

Publication Publication Date Title
KR100924043B1 (ko) 보안 데이터 프로세싱 및 전송을 위한 방법들 및 장치들
US7958371B2 (en) Methods and apparatus for secure operating system distribution in a multiprocessor system
US8001592B2 (en) Methods and apparatus for accessing resources using a multiprocessor in a trusted mode
US8001390B2 (en) Methods and apparatus for secure programming and storage of data using a multiprocessor in a trusted mode
US20240126930A1 (en) Secure Collaboration Between Processors And Processing Accelerators In Enclaves
US20080282341A1 (en) Methods and apparatus for random number generation in a multiprocessor system
JP4226816B2 (ja) マイクロプロセッサ
US8185748B2 (en) Methods and apparatus for facilitating a secure processor functional transition
US12093371B2 (en) Data distribution using a trusted execution environment in an untrusted device
JP4601557B2 (ja) マルチプロセッサシステムにおいてプロセッサのセキュアな連携を行う方法および装置
US20060179324A1 (en) Methods and apparatus for facilitating a secure session between a processor and an external device
US20070180271A1 (en) Apparatus and method for providing key security in a secure processor
EP1768033A1 (en) Operating a cell processor over a network
US11947659B2 (en) Data distribution across multiple devices using a trusted execution environment in a mobile device
US8726041B2 (en) Methods and apparatus for generating a random number in one or more isolated processors
JP4643702B2 (ja) マイクロプロセッサ
Fan et al. SECCEG: A secure and efficient cryptographic co-processor based on embedded GPU system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20121002

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131001

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141007

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150917

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170920

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20181004

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20191002

Year of fee payment: 11