KR101058140B1 - 보안 환경에서 프로세서 실행을 제어하기 위한 장치 - Google Patents

보안 환경에서 프로세서 실행을 제어하기 위한 장치 Download PDF

Info

Publication number
KR101058140B1
KR101058140B1 KR1020097023525A KR20097023525A KR101058140B1 KR 101058140 B1 KR101058140 B1 KR 101058140B1 KR 1020097023525 A KR1020097023525 A KR 1020097023525A KR 20097023525 A KR20097023525 A KR 20097023525A KR 101058140 B1 KR101058140 B1 KR 101058140B1
Authority
KR
South Korea
Prior art keywords
context
processor
trust vector
secure processor
secure
Prior art date
Application number
KR1020097023525A
Other languages
English (en)
Other versions
KR20090130121A (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 KR20090130121A publication Critical patent/KR20090130121A/ko
Application granted granted Critical
Publication of KR101058140B1 publication Critical patent/KR101058140B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

Abstract

기술된 여러 가지 실시예는 보안 컴퓨팅 환경(100) 내의 소프트웨어 실행을 위한 장치에 관한 것이다. 보안 프로세서(104)는 소프트웨어의 제1 부분에서 소프트웨어의 제2 부분으로 실행을 교환할 때 제1 콘텍스트에서 제2 콘텍스트로 콘텍스트 스왑을 요청하도록 사용되고 구성될 수 있다. 콘텍스트 관리자(106)는 보안 프로세서와 통신할 수 있으며, 요청된 콘텍스트 스왑을 수신하고 개시하도록 구성될 수 있다. 신뢰 벡터 검증기(108)는 보안 프로세서 및 콘텍스트 관리자와 통신할 수 있으며, 콘텍스트 관리자로부터의 명령에 대해 신뢰 벡터 기술자를 로드하도록 구성될 수 있다.
보안 환경, 보안 프로세서, 콘텍스트, 콘텍스트 관리자, 신뢰 벡터 검증기, 신뢰 벡터 기술자

Description

보안 환경에서 프로세서 실행을 제어하기 위한 장치{APPARATUS FOR CONTROLLING PROCESSOR EXECUTION IN A SECURE ENVIRONMENT}
본 명세서에 기술된 본 발명의 여러 가지 실시예는 보안 환경에서 하나 이상의 프로세서의 실행을 제어하기 위한 장치, 시스템 및 프로세스(process)와 다양하게 관련된 것이다. 또한, 이러한 여러 가지 실시예는 케이블(cable), 위성, 전기통신(telecommunication), 무선 및/또는 다른 오디오, 비디오 및/또는 데이터 서비스 제공자에 의해 제공되는 공중파(over the air) 및 비공중파(non-over the air) 텔레비전 수신 장치내의 프로세서 실행을 제어하는 것을 포함할 수 있다.
본 출원은 "보안 환경에서 프로세서 실행을 제어하기 위한 장치 및 방법(APPARATUS AND METHOD FOR CONTROLLING PROCESSOR EXECUTION IN A SECURE ENVIRONMENT)"의 제목을 갖고, 그 내용 전체가 참조로써 본 명세서에 통합되는, 미국 임시 출원 60/917,582호의 우선권을 주장한다.
본 명세서에서 설명된 실시예는 신뢰되는 마이크로프로세서(microprocessor) 컴퓨팅(computing)을 포함하는 방법 및 시스템과 관련된 것이다. 이러한 컴퓨팅은 예컨대, 가입(subscription) 위성 텔레비전 시스템 내에서 일어날 수 있다. 다른 실시예는 또한 예컨대, 케이블(cable) 텔레비전, 방송(broadcast) 텔레비전, 유선 또는 무선 전기통신(telecommunication) 시스템, 오디오/비디오/데이터 분배(distribution) 시스템, 임의의 콘텐트 전송(delivery) 서비스, 및/또는 임의의 다른 컴퓨팅 환경을 포함하지만, 이에 제한되는 것은 아니다.
본 명세서에 기술된 본 발명의 여러 가지 실시예는 소프트웨어(software)의 일부(portion)를 실행하기 위해 보안 컴퓨팅(computing) 환경을 수립하고 실시하기 위한 장치, 시스템 및 방법과 관련된 것이다. 보다 자세하게는 일 실시예는 컴퓨팅 환경 자원(resource)으로의 제한된 접근(access)을 제공하는 환경에서 소프트웨어의 일부를 실행하는 보안 프로세서를 제공한다.
다른 실시예에서, 보안 컴퓨팅 환경을 제공하기 위한 시스템은 보안 프로세서, 콘텍스트(context) 관리자(manager) 및 신뢰 벡터(trust vector) 검증기(identifier)를 포함하지만 이에 한정되는 것은 아니다. 보안 프로세서는 관련된 콘텍스트, 예컨대, 소프트웨어가 제한된 특정 동작 환경을 가진 소프트웨어 프로그램 및/또는 루틴(routine)의 일부 또는 전부를 실행하도록 구성될 수 있다. 소프트웨어는 예컨대, 방법, 서브-프로그램(sub-program), 루틴, 전체 어플리케이션 또는 하나 이상의 소프트웨어 어플리케이션의 임의의 부분을 포함할 수 있다. 적어도 일 실시예에서, 소프트웨어는 하나 이상의 콘텍스트로 제한될 수 있다.
다른 실시예에서, 보안 동작 환경에서 보안 프로세서의 실행을 제어하기 위한 방법은 콘텍스트 스왑(swap)을 요청하는 보안 프로세서를 포함한다. 일 실시예에서, 콘텍스트 스왑은 소프트웨어의 상이한 부분에 대해 새로운 콘텍스트로의 교환이다. 콘텍스트 관리자는, 일 실시예에서, 콘텍스트 스왑 요청을 수신한다. 콘텍스트 관리자는, 다른 실시예에서, 신뢰 벡터 검증기 내의 신뢰 벡터 기술자(descriptor)를 로드(load)한다. 하나 이상의 실시예에서, 콘텍스트 관리자는 보안 프로세서를 리셋(reset)한다. 신뢰 벡터 검증기는, 다른 실시예에서, 로드된 신뢰 벡터 기술자에 기반하여 하나 이상의 자원으로의 보안 프로세서의 접근을 제어한다.
보안 프로세서의 실행을 제어하기 위해 사용되는 인코딩된(encoded) 데이터 구조를 가진 컴퓨터로 판독 가능한 매체가 기술된다. 데이터 구조는 보안 프로세서를 위한 동작 환경을 정의하는 하나 이상의 콘텍스트에 관한 데이터를 포함할 수 있다. 또한, 콘텍스트는 주어진 콘텍스트를 인식하는 필드(field), 보안 프로세서가 접근할 수 있는 메모리의 하나 이상의 영역(region)의 지정(designation) 및 보안 프로세서가 접근할 수 있는 하나 이상의 하드웨어 자원의 지정을 포함할 수 있다. 비슷하게, 데이터 구조를 실행하는 컴퓨터 시스템은 보안 프로세서가 하드웨어 신뢰 벡터에 따라 하드웨어 자원에 접근할 수 있는지를 결정한다.
발명의 상세한 설명은 실시예에서 아래에 더 기술된 개념의 선택을 간략화된 형식으로 소개하기 위해 제공된다. 발명의 상세한 설명은 본 발명의 주요 특징 또는 필수적인 특징을 인식하는 것으로 의도되지 않고, 본 발명의 범위를 제한하기 위해 사용되는 것으로 의도되지 않는다.
본 명세서에서 기술된 몇몇 실시예가 첨부된 도면을 참조하여 기술된다. 몇 가지 도면 내의 유사 번호는 유사 요소를 지정한다.
도 1은 본 명세서에 기술된 본 발명의 하나 이상의 실시예에서 사용하기 위한 컴퓨팅(computing) 환경의 블록도이다.
도 2는 하나 이상의 실시예에서 사용하기 위한 신뢰 벡터(trust vector) 표의 일 실시예의 간략화된 데이터 구조도이다.
도 3a 및 도 3b는 컴퓨팅 환경 내의 콘텍스트를 변경하고 컴퓨팅 환경을 유지하기 위한 방법의 일 실시예의 순서도이다.
도 4는 하나 이상의 실시예에서 사용하기 위한 장치의 블록도이다.
도 5는 다른 실시예에서 사용하기 위한 장치의 블록도이다.
도 6은 본 명세서에 기술된 본 발명의 하나 이상의 실시예 내에서 및/또는 이와 함께 사용하기 위한 소프트웨어 코드(code) 또는 데이터에 대한 메모리 영역(region)을 인증(authenticate)하기 위한 방법의 순서도이다.
본 명세서는 이제 가능한 실시예의 일부만이 도시된 첨부 도면을 참조하여 몇가지 실시예를 충분히 기술할 것이다. 하지만, 다른 측면은 많은 상이한 형태로 구현될 수 있으며, 본 명세서에서 설명된 실시예에 제한되는 것으로 해석되어서는 안된다. 본 명세서에서 설명된 실시예는 신뢰되는 마이크로프로세서(microprocessor) 컴퓨팅(computing)을 포함하는 방법 및 시스템과 관련된 것이다. 이러한 컴퓨팅은 예컨대, 가입(subscription) 위성 텔레비전 시스템 내에서 일어날 수 있다. 다른 실시예는 또한 예컨대, 케이블(cable) 텔레비전, 방 송(broadcast) 텔레비전, 유선 또는 무선 전기통신(telecommunication) 시스템, 오디오/비디오/데이터 분배(distribution) 시스템, 임의의 콘텐트 전송(delivery) 서비스, 및/또는 임의의 다른 컴퓨팅 환경을 포함하지만, 이에 제한되는 것은 아니다.
도 1에 도시된 실시예에서, 컴퓨팅 환경(100)은 선으로 표시된 보안 컴퓨팅 또는 동작 환경(102)을 포함할 수 있다. 보안 컴퓨팅 또는 동작 환경(102)은 보안 중앙 처리 장치(central processing unit:CPU) 또는 프로세서(104), 콘텍스트(context) 관리자(manager)(106) 및 신뢰 벡터(trust vector) 검증기(verifier)(108)를 포함할 수 있다. 또한, 프로세서(104), 콘텍스트 관리자(106) 및 신뢰 벡터 검증기(108)의 각각은 서로 직접 또는 간접 통신할 수 있다. 보안 프로세서(104)는 임의의 타입(type)의 범용(general purpose) 프로세서일 수 있고 원하는 대로 안전하게 특별히 설계될 수 있다. 콘텍스트 관리자(106) 및 신뢰 벡터 검증기(108)는, 실시예에서, 본 발명의 실시예에서 사용하기 위한 특별히 설계된 하드웨어 장치, 소프트웨어 모듈(module) 또는 하드웨어 및 소프트웨어의 조합(combination)일 수 있다.
일 실시예에서, 보안 프로세서(104)는 세 개 이상의 기본 동작 즉, 소프트웨어 프로그램 내에서 수학 함수 또는 논리 연산을 실행하기, 소프트웨어 프로그램 내에서 사용되는 데이터를 유지하기 위해 메모리 내의 상이한 위치로 또는 상이한 위치로부터 이동하기, 및/또는 결정을 내리고 소프트웨어 내의 새로운 명령어로 점프(jump)하기를 실행하기 위해 동작한다. 이러한 태스크(task)를 달성하기 위해, 보안 프로세서(104)는 산술 논리 장치(arithmetic or logic unit: ALU)(미도시), 레지스터(register)(124), 메모리(122) 및 내부 또는 외부 메모리 또는 다른 데이터 저장소(126)를 포함할 수 있다. ALU는 수학 함수 또는 논리 연산을 실행한다. 레지스터(124)는 보안 프로세서(104)에 의해 실행되는 연산에 관한 정보 또는 데이터를 유지한다. 예를 들면, 데이터 레지스터는 ALU에 의해 완료되는 수학 연산 내에서 이용되는 데이터 값을 담을 수 있고, 메모리 레지스터는 데이터가 저장된 메모리(126) 내의 주소(address)를 담을 수 있다. 메모리(126)는 일반적으로 임시로 또는 달리 데이터를 유지 및/또는 저장하는 하나 이상의 하드웨어 장치 구조 또는 컴포넌트(component)로 구성된다. 일 실시예에서, 메모리는 보안 프로세서(104)에 의해 정기적으로(regulary) 접근되는 데이터를 담는 캐시(cache)(122) 및 하나 이상의 다른 메모리(126)를 포함한다. 캐시(122)는 보안 프로세서(104) 내로 통합된 메모리 영역(area)으로, 보안 프로세서(104)와 직접 연결된 메모리 또는 보안 프로세서(104)에 의해 쉽게 접근되거나 보안 프로세서(104)와 인터페이스(interface)로 연결되는 메모리(126)의 영역이다. 다른 실시예에서, 메모리(126)는 메모리(126)로의 데이터의 판독 및 기록을 제어하는 메모리 관리 장치(memory management unit: MMU)(128)를 포함할 수 있다. 메모리(126)는 데이터를 유지하는 하나 이상의 타입의 메모리 예컨대, RAM(random access memory), ROM(read only memory), 하드 디스크, 광학(optical) 저장소 또는 하나 이상의 다른 메모리 기술을 포함할 수 있다. 당업자는 보안 프로세서(104)가 컴퓨팅 시스템에 관련한 설명에 한정되지 않고 종래 기술에서 알려진 다른 컴포넌트 또는 함수를 포함할 수 있다는 것을 이해할 것 이다. 더불어, 본 명세서의 컴퓨팅 시스템 설명은 본 발명의 실시예에 관한 설명을 간략화하기 위해 제공되고 본 발명은 본 명세서에 기술된 컴퓨팅 시스템으로 한정되어서는 안 된다.
상기 언급된 세가지 동작을 실행함에 있어서, 보안 프로세서(104)는 소프트웨어의 일부를 실행한다. 소프트웨어의 이러한 일부는 일반적으로 큰 스케일(large-scale)의 태스크를 달성하기 위한 소프트웨어 프로그램 또는 어플리케이션을 생성하도록 결합된다. 일반적으로, 소프트웨어의 일부는 보안 프로세서(104)에 의해 실행되는 하나 이상의 명령어이다. 이하에서는, 소프트웨어의 일부는 소프트웨어 루틴, 서브루틴(subroutine) 또는 모듈로 언급될 수 있다. 소프트웨어의 일부를 실행할 때, 보안 프로세서(104)는 스택(stack)(미도시)이라 불리는 추상적(abstract) 데이터 타입을 생성할 수 있다. 스택은, 보안 프로세서(104)가 데이터 또는 명령어를 각각 저장하거나 판독하는 메모리 예컨대, 캐시(122) 또는 메모리(126) 내의 메모리 주소의 세트(set)일 수 있다. 예를 들면, 데이터 또는 명령어의 아이템(item)이 스택으로 세이브(save)될 때, 보안 프로세서(104)는, 데이터 또는 명령어가 저장되는 메모리 내의 주소인 스택 포인터(pointer)를 레지스터(124)에 기록할 수 있다. 데이터는 소프트웨어의 둘 이상의 부분 사이에 공유될 수 있고, 이러한 공유를 이용하기 위해, 데이터는 스택에 저장될 수 있고 스택 포인터는 소프트웨어의 일부로 제공된다.
여러 가지 실시예에서, 보안 프로세서(104)는 예컨대, 소프트웨어, 메모리(122/126) 및 자원(120)의 조합을 포함하는 동작 환경에서 여러 가지 소프트웨어 의 일부를 실행한다. 보안 프로세서(104)는 주어진 동작을 실행하기 위한 소프트웨어, 메모리, 자원 등을 실행, 인터페이스로 연결 및/또는 이용하도록 구성될 수 있다. 악의적인 또는 다른 바람직하지 않은 코드의 명령어를 방지 및/또는 최소화하기 위해, 보안 프로세서(104)의 동작 환경의 제어를 이용하는 시스템, 방법, 장치 등이 제공된다.
적어도 일 실시예에서, 보안 동작 환경(102)은 하나 이상의 "콘텍스트"에 의해 특정될 수 있다. 콘텍스트는 보안 프로세서(104)가 실행하도록 하는 명령어, 함수 및/또는 동작을 특정함에 의해 동작 환경의 경계(boundary)를 정의한다. 예를 들면, 소프트웨어 어플리케이션은 네 개의 명령어를 포함할 수 있다. 콘텍스트는 보안 프로세서(104)가 이러한 네 개의 명령어 중 첫 번째, 이러한 명령어의 하나 이상, 이러한 명령어의 전부, 이들의 조합 등을 실행할 수 있도록 특정할 수 있다. 즉, 콘텍스트는 특정되지 않은(non-specified) 명령어가 실행되는 것을 차단하는 허용(permissive) 환경을 수립할 수 있다. 예를 들면, 보안 프로세서(104)가 네 개의 명령어 중 하나가 아닌 명령어를 실행하도록 시도하면, 예외가 인지되고 보안 프로세서(104)는 다른 명령어를 실행하지 못하게 된다.
다른 예에서, 콘텍스트는 보안 프로세서를 오로지 1 내지 20까지의 메모리 주소로만 접근하도록 허용할 수 있다. 보안 프로세서가 40의 메모리 주소로 접근하려고 시도하면, 예외가 인지되고 보안 프로세서(104)는 40의 메모리 주소로 접근하지 못하게 된다.
또 다른 예에서, 콘텍스트는 보안 프로세서(104)가 오로지 하드 드라이 브(drive)로만 접근하게 허용되도록 특정할 수 있다. 보안 프로세서(104)가 사용자 인터페이스 장치로 접근하려고 시도하면, 예외가 인지되고 보안 프로세서(104)는 사용자 인터페이스로 접근하지 못하게 된다.
여러 가지 실시예에서, 콘텍스트 관리자(106) 및 신뢰 벡터 검증기(108)는 콘텍스트를 수립하고 실시한다. 콘텍스트 관리자(106)는 콘텍스트의 변경을 관리한다. 소프트웨어의 두 개 이상의 부분은 각각 관련된 콘텍스트를 갖는다. 소프트웨어의 제1 부분을 실행하면, 제1 콘텍스트가 보안 동작 환경을 정의하기 위해 사용된다. 마찬가지로, 보안 프로세서(104)가 소프트웨어의 제2 부분을 실행하면, 상이한 제2 콘텍스트가 상이한 보안 동작 환경을 정의하기 위해 사용된다. 소프트웨어의 부분 간을 교환하기 위해, 콘텍스트 관리자는 실행될 소프트웨어의 새로운 부분과 관련된 새로운 콘텍스트를 수립한다. 새로운 콘텍스트를 수립함에 있어서, 소프트웨어의 새로운 부분은 소프트웨어의 그 부분에 맞추어진 동작 환경에서 실행된다. 소프트웨어의 새로운 부분에 의한 콘텍스트로부터의 일탈(deviation)은 보안 예외로 인지된다. 따라서, 보안 동작 환경은 원하는 대로 보안 프로세서(104) 동작을 제어하기 위해 소프트웨어의 각 부분에 대해 설정된다.
상기 언급한 바와 같이, 여러 가지 실시예는 또한 콘텍스트를 실시하는 신뢰 벡터 검증기(108)를 포함할 수 있다. 신뢰 벡터 검증기(108)는 가상으로 및/또는 실제로 보안 프로세서(104) 및 자원(120) 및 메모리(126)와 같은 주어진 시스템의 다른 가상 또는 실제 컴포넌트 사이에 (데이터 신호의 흐름 내에서) 배치된다. 신뢰 벡터 검증기(108)의 배치와 함께, 신뢰 벡터 검증기(108)는 보안 프로세 서(104), 자원(120) 및/또는 메모리(126) 간의 통신을 수신하도록 구성될 수 있다. 실시예에서, 신뢰 벡터 검증기(108)는 주어진 콘텍스트를 정의하고 신뢰 벡터 검증기(108)가 보안 프로세서(104)에 의해 동작을 비교하는 정보와 함께 로드될 수 있다. 만약 동작이 신뢰 벡터 검증기(108)에 로드된 정보와 비교되지 않으면, 동작은 그 콘텍스트 내에서 허용되지 않는다. 로드된 정보와 비교되지 않은 동작은 허용된 콘텍스트 외부에 존재한다. 신뢰 벡터 검증기(108)는 이러한 동작을 예외로 인지하고 이러한 동작이 일어나지 못하게 한다. 예를 들면, 신뢰 벡터 검증기(108)는 메모리(126)로의 접근에 대하여 보안 프로세서(104)로부터 요청을 수신하고, 신뢰 벡터 검증기(108)는 요청이 현재의 콘텍스트 내에서 허용되는지를 결정하며, 요청이 허용되지 않으면, 신뢰 벡터 검증기(108)는 예외를 인지하고 메모리로의 접근을 막는다.
보안 프로세서(104)는 또한 소프트웨어의 제1 부분 및 소프트웨어의 제2 부분의 실행 간을 주기적으로 교환하도록 구성될 수 있다. 일 실시예에서, 소프트웨어의 상이한 부분 간의 실행의 교환 전에, 시스템(100)의 보안을 보증하기 위해 하나 이상의 단계가 실행될 수 있다. 예를 들면, 보안 프로세서(104)는 캐시(122) 및/또는 MMU(128)를 비우고 데이터로의 포인터를 스택에 저장할 수 있다. 보안 프로세서(104)는 콘텍스트 스왑(110)에 대한 요청(즉, 새로운 미리 결정된 콘텍스트로 변경하도록 하는 요청)을 콘텍스트 관리자(106)로 통신할 수 있다. 콘텍스트 관리자(106)는, 실시예에서, 보안 프로세서(104)를 리셋(reset)하기 위한 리셋(112)을 보안 프로세서(104)에 송신하고, 신뢰 벡터 검증기(108)에 의해 접근 가능한 메모 리(126) 또는 다른 메모리(미도시)로부터 원하는 콘텍스트와 관련된 신뢰 벡터 기술자를 로드하기 위해 신뢰 벡터 검증기(108)로 명령어(114)를 송신한다. 실시예에서, 리셋은 바람직하게는 보안 프로세서(104)의 하나 이상의 내부 상태의 클리어링(clearing)을 초래한다. 이러한 클리어링은 보안 프로세서(104)에 도입되는 악의적인 소프트웨어의 위험을 감소시킨다는 것이 이해되어야 한다. 리셋은 보안 프로세서(104)의 하나, 복수 또는 전부를 클리어(clear)하는 임의의 방법을 포함할 수 있다. 다른 실시예에서, 보안 프로세서(104)는, 리셋 동안에, 모든 상태 정보가 동작 불가능(inoperable) 및 사용 불가능(unusable)을 나타내도록 구성될 수 있다.
보다 자세하게는, 하나 이상의 실시예에 대해서, 보안 프로세서(104)는 부트(boot) 또는 하드(hard) 리셋 동작을 실행하여 리셋 함수를 달성할 수 있다. 예컨대, 이러한 부팅(booting)은 보안 프로세서(104)가 새로운 콘텍스트에서 하나 이상의 명령어를 실행하기 전에 일어날 수 있다. 부트는 소프트웨어의 리로드(reload)를 요구하는 소프트(soft) 부트 또는 보안 프로세서(104) 및/또는 하나 이상의 다른 컴포넌트의 전원 오프(off) 및 온(on)을 요구하는 하드 부트일 수 있음이 이해되어야 한다. 모든 실시예에서 필수적이지는 않지만 바람직하게는, 소프트 및 하드 부트는 모두 캐시(122), 레지스터(124) 및/또는 메모리(126) 내에 저장된 데이터 및/또는 명령어의 일부 아니면 전부를 삭제한다. 실시예에서, 하나 이상의 일반적으로 알려진 방법은 캐시(122), 레지스터(124) 및/또는 메모리(126) 내에 저장된 데이터 또는 명령어의 일부 또는 전부를 삭제하는데 사용될 수 있다. 예를 들면, 저장된 메모리 주소는 이전에 저장된 데이터에 새로운 데이터를 덮어씀으로 써 삭제될 수 있다. 따라서 보안 프로세서(104)는 제1 콘텍스트에서 유용하고 제2 콘텍스트에서는 요구되지 않는 데이터 및/또는 명령어를 삭제하거나 아니면 사용 불가능을 나타내도록 구성될 수 있다.
하나 이상의 실시예에서, 보안 프로세서(104)는 하나의 콘텍스트로부터 다른 콘텍스트로 임의의 상태 정보를 유지하지 않는다. 즉, 보안 프로세서는 임의의 이전의 콘텍스트 또는 소프트웨어의 임의의 지식(knowledge)을 유지하지 않도록 구성될 수 있다.
도 1에 도시한 바와 같이, 신뢰 벡터 검증기(108)는 통신 경로(116)를 통하여 보안 프로세서(104)와 통신한다. 일 실시예 및 보안 예외를 막기 위해 일반적으로, 신뢰 벡터 검증기(108)는 보안 프로세서(104)로 하드웨어 인터럽트(interrupt)(121)를 송신하도록 구성될 수 있다. 하드웨어 인터럽트(121)를 수신하면, 도 3과 함께 아래에 설명된 바와 같이, 보안 프로세서(104)는 리셋하고/하거나 다른 콘텍스트로 부트 또는 재부트(reboot)한다. 이러한 다른 콘텍스트는 미리 결정되거나 실시간으로 결정될 수 있다. 다른 실시예에서, 신뢰 벡터 검증기(108)는 보안 예외에 반응하여 새로운 콘텍스트로 콘텍스트 스왑을 요청하는 동안 현재 콘텍스트에서 보안 예외를 처리하도록 구성될 수 있다.
신뢰 벡터 검증기(108)는, 여러 가지 실시예에서, 그것이 임의의 주어진 콘텍스트를 실시할 수 있게 하는 정보와 함께 구성되고 로드될 수 있다. 이러한 정보는 영구적으로 로드되거나, 콘텍스트 스왑에 앞서 로드되거나, 보안 프로세서의 리셋동안 로드되거나, 보안 프로세서(104)가 리셋된 후에 및/또는 다른 시간에 로드 될 수 있다. 예를 들면, 로드된 정보는 메모리(126) 또는 다른 보안 메모리(미도시)로부터 로드된 하나 이상의 신뢰 벡터 기술자를 포함할 수 있다. 이러한 메모리(126)는 원하는 대로, 신뢰 벡터 검증기(108)에 의해서만 접근 가능하도록 구성될 수 있다. 다른 실시예에서, 신뢰 벡터 검증기(108)는 ROM, EEPROM, 하드 드라이브 등과 같은 하나 이상의 전용 또는 공유 메모리 장치로의 접근을 포함하고/하거나 가질 수 있다. 이러한 메모리는, 원하는 대로, 하나 이상의 신뢰 벡터 기술자를 지속적으로 포함하도록 구성될 수 있다. 신뢰 벡터 기술자는, 하나 이상의 실시예에서, 보안 프로세서(104)가 실행할 수 있는 소프트웨어 프로그램, 루틴 및/또는 명령어를 정의한다. 신뢰 벡터 기술자는 또한 어떻게, 언제 또는 어떤 자원에 보안 프로세서(104)가 접근, 제어, 이용, 통신 등을 할 수 있는지를 정의하도록 구성될 수 있다. 비슷하게, 신뢰 벡터 기술자는 어떤 메모리(126 또는 122)에 보안 프로세서(104)가 접근 할 수 있는지 및 보안 프로세서(104)가 콘텍스트 내에서 개시, 실행 및 완료할 수 있는 다른 동작을 정의할 수 있다.
신뢰 벡터 기술자의 일 실시예가 도 2에 도시된다. 이러한 실시예에서, 신뢰 벡터 기술자는 하나 이상의 신뢰 벡터 기술자(202)를 포함하고 복수의 신뢰 벡터 기술자(202, 204 또는 206)를 포함할 수 있다. 신뢰 벡터 기술자는 예컨대, 신뢰 벡터 표(trust vector table: TVT) 데이터 구조(200) 또는 임의의 다른 원하는 데이터 구조 내에 저장될 수 있다. 도 1을 참조하여 상기 언급한 바와 같이, 신뢰 벡터 검증기(108)에 의한 사용을 위한 신뢰 벡터 기술자(202)를 로드 또는 달리 지정함에 있어서, 새로운 콘텍스트가 수립되고 보안 프로세서(104)의 동작을 관리한다.
도 2에 나타난 실시예에 더 도시한 바와 같이, 각 신뢰 벡터 기술자(202, 204, 206)는 상이한 콘텍스트를 정의할 수 있고, 이와 같이, 상이한 데이터를 가질 수 있다. 신뢰 벡터 기술자(202, 204, 206)의 각 부의 데이터는, 일 실시예에서, 특정 타입을 가진다. 각 신뢰 벡터 기술자(202, 204, 206)는 하나 이상의 다른 데이터 필드(field)를 포함할 수 있지만 기술된 데이터 필드에 한정되는 것은 아니다. 신뢰 벡터 기술자(202, 204, 206)는 콘텍스트 인식(identification: ID) 필드(208)에 의해 인식될 수 있다. 다른 실시예에서, 각 신뢰 벡터 기술자(202, 204, 206)는 코드 시작 주소(210), 코드 종료 주소(212), 키 숫자(key number)(214), 목표(target) CPU 및 벡터 숫자(#)(216), 스크럽(scrub) 타입(218), 하드웨어 신뢰 벡터 기술자(220), 메모리 데이터 영역(222), CPU 부트 주소(224), 신뢰 벡터 기술자 서명(signature)(226) 및 코드 서명(228)에 대한 데이터 필드를 포함할 수 있다.
코드 시작 주소(210) 및 코드 종료 주소(212)는 코드의 어떤 부분이 보안 프로세서(104)(도 1)에 의해 인증되고 실행될지를 인식한다. 실행된 코드의 부분 예컨대, 코드 시작 주소 및 코드의 길이를 인식하기 위한 다른 방법이 존재함이 이해되어야 한다. 예를 들면, 코드 시작(210) 및 종료(212) 주소는 원하는 코드를 포함하는 메모리의 복수의, 비연속적인 영역의 하나 이상의 세트를 지정할 수 있다. 이러한 영역은 예컨대, 둘 이상의 시작 및 종료 주소에 의해 더 지정될 수 있다.
하나 이상의 실시예에서, 신뢰 벡터 기술자(202, 204, 206)는 실행될 소프트웨어 및/또는 그 일부의 인증을 검증하기 위해 사용되는 키 숫자 및/또는 다른 참 조 정보를 포함할 수 있다. 참조 정보는 예컨대, 코드를 인증하기 위해 사용되는 코드의 지문(fingerprint)(인증), 코드를 인증하기 위해 사용되는 코드의 서명 및/또는 코드의 서명을 검증하기 위해 사용되는 키(key)에 대한 참조를 포함할 수 있다. 또한, 복수의 키를 가진 일 실시예에서, 키 숫자(214)는 생성된 서명을 검증하고 소프트웨어의 일부를 인증하기 위해 어떤 키를 사용할지를 특정할 수 있다. 이러한 검증은 예컨대, 생성된 서명을 신뢰 기술자 서명(226) 및/또는 코드 서명(228)과 비교함으로써, 발생할 수 있다.
목표 CPU 필드(216)는 시스템이 다중 프로세서일 경우, 어떤 프로세서를 사용할지에 대한 지정자(designator)를 제공한다. 도 4를 참조하여 설명할 바와 같이, 소프트웨어의 일부는 하나 이상의 보안 프로세서 상에서 실행될 수 있다. 벡터 숫자 필드(216)는 신뢰 벡터 기술자(202)에 대한 지정자를 제공한다.
스크럽 타입 필드(218)는, 도 6을 참조하여 논의된 바와 같이, 소프트웨어의 일부를 어떻게 스크럽할지, 즉, 소프트웨어의 일부의 인증을 어떻게 증명할지에 관한 정보를 제공한다. 예를 들면, 소프트웨어의 일부가 일단 인증되거나 스크럽되면, 스크럽 타입 필드(218)는 "초기(initial)" 스크럽의 지정자를 포함할 수 있다. 다른 타입의 스크럽 방법은, 소프트웨어의 일부가 동작 동안 연속으로 스크럽되는 "연속(continuous)" 스크럽, 그리고 소프트웨어의 일부의 어떠한 스크럽도 요청하지 않는 "네버(never)"를 포함하지만 이에 한정되는 것은 아니다. 다른 실시예에서, 다른 스크럽 방법이 사용될 수 있다.
하드웨어 신뢰 벡터 기술자 필드(220)는 콘텍스트 내에서 자원 접근을 정의 하기 위해 사용될 수 있다. 보다 자세하게는, 하드웨어 신뢰 벡터 기술자(220)는 주어진 신뢰 벡터 기술자(202, 204, 206)에 의해 정의된 콘텍스트 내에서 수행되는 동작의 동안에 보안 프로세서(104)(도 1)가 인터페이스로 연결되고 통신 등을 할 수 있는 주변 장치 또는 내부 컴포넌트와 같은 자원을 인식한다. 일 실시예에서, 하드웨어 신뢰 벡터 기술자(220)는 비트 맵(bit map) 또는 비트 어레이(array)의 각 비트가 하드웨어의 특정 타입을 나타내는 비트 어레이일 수 있다. 예를 들면, 하드웨어 신뢰 벡터 기술자(220)는 "0101"로 나타날 수 있다. "1"로 설정된 첫 번째 비트는 프로세서가 하드 드라이브 제어기(controller)로 접근할 수 있음을 나타낼 수 있다. "0"으로 설정된 두 번째 비트는 프로세서가 스마트 카드(smart card)로 접근할 수 없음을 나타낼 수 있다. "1"으로 설정된 세 번째 비트 및 "0"로 설정된 네 번째 비트는 프로세서가 I/O 포트(port)로 접근할 수 있지만 비디오 제어기로 접근할 수 없음을 나타낼 수 있다. 하드웨어 신뢰 벡터 기술자(220) 내의 비트의 수는 보안 프로세서가 사용되는 실시예에 따라 다양할 수 있고 네 개의 비트보다 적거나 그 이상일 수 있다. 하드웨어 신뢰 벡터 기술자(220)의 다른 실시예가 사용될 수 있음이 이해되어야 한다. 예를 들면, 신뢰 벡터 기술자(220)는 모든 자원이, 주어진 구현 내에서, 하드웨어 신뢰 벡터(220)에 의해 식별된 것을 제외하고 보안 프로세서에 이용 가능하다. 다른 실시예 또한 가능하고 첨부된 또는 아래에 부가된 청구항의 범위 내에 포함된다.
메모리 데이터 영역 필드(222)도 콘텍스트 내에서 자원 접근을 정의하고 보안 프로세서(104)(도 1)가 예컨대, 메모리로부터/메모리로 데이터를 판독 및/또는 기록하기 위해 메모리(126)(도 1) 내의 어떤 주소 공간으로 접근할 수 있는지 정의하기 위해 사용될 수 있다. 하드웨어 신뢰 벡터(220)에 관해서, 메모리 데이터 영역 필드(222)는, 시작 및 종료 주소에 기반하여, 인접하는(contiguous) 블록 및/또는 다른 블록으로, 특정 주소에 의해 주소 공간을 특정할 수 있다. 또한, 주소 공간은 긍정(affirmative)(즉, 접근될 수 있는 것), 예외(exception)(즉, 인식된 것을 제외하고 모두 접근 가능함), 또는 다르게 표현될 수 있다. 이와 같이, 메모리 데이터 영역 필드(222)는 실행 가능한 데이터가 판독 및/또는 기록될 수 있는 주소를 인식할 수 있음이 이해되어야 한다. 마찬가지로, 하나 이상의 정의되지 않은 주소를 포함한 데이터는 실행 불가능(non-executable)한 것으로 지정되고, 이러한 보안 예외는 보안 프로세서가 금지된 데이터 영역으로부터 코드를 실행하고/하거나 데이터를 이용하려고 시도하면 일어날 것이다.
일 실시예에서, 접근 가능한 메모리(126)(도 1)의 하나 이상의 부분이 소프트웨어의 다른 부분과 함께 공유된다. 또한, 소프트웨어의 각 부분은 하나 이상의 콘텍스트에서 실행될 수 있다. 이러한 일 실시예에서, 소프트웨어의 두 부분은 동일한 콘텍스트에서 실행되지 않지만, 소프트웨어의 일 부분은 데이터를 소프트웨어의 다른 부분으로 데이터를 전달할 필요를 가질 수 있다. 메모리 데이터 영역 필드(222)는 예컨대, 인식된 주소 공간에 대해 예외 접근(exceptions approach)을 사용함으로써 이러한 상황을 지원하도록 구성될 수 있다. 비슷하게, 다른 실시예에서, 메모리 데이터 영역 필드(222)는, 특정된 메모리의 임의의 또는 각 영역에 대하여, 하나 이상의 스크럽 동작에 포함될 메모리의 영역을 지정하는 공통 또는 개 별 스크럽 비트를 포함할 수 있다.
본 명세서에 기술된 하나 이상의 실시예에서 논의된 바와 같이, 보안 프로세서(104)(도 1)가 콘텍스트를 스왑하면, 보안 프로세서는 새로운 콘텍스트에서 리셋되고 부트할 수 있다. 도 2를 참조하면, CPU 부트 주소 필드(224)는 보안 프로세서(104)(도 1)를 부트할 메모리(126)(도 1) 내의 주소를 제공한다. 일 실시예에서, 부트 주소(224)는 플래시(flash) 메모리 내의 오프셋(offset)이다. 다른 실시예에서, 부트 주소(224)는 메모리(126)에 대한 ROM 주소, RAM 주소 또는 다른 주소이다. 각 콘텍스트는, 일 실시예에서, 고유의(unique) 부트 주소(124)를 가질 수 있다.
신뢰 벡터 기술자(202, 204, 206)는 또한 서명 필드(226)를 포함할 수 있다. 서명 필드(226)는 각 신뢰 벡터 기술자(202, 204, 206)를 검증하는데 사용하기 위한 데이터 값 예컨대, 개인(private) 키를 제공한다. 신뢰 벡터 기술자의 검증은 신뢰 벡터 검증기(108)(도 1)가 주어진 신뢰 벡터 기술자를 로드하도록 지시된 전 또는 후에 일어날 수 있다. 또한, 서명 필드(226)는 주어진 신뢰 벡터 기술자를 통해 필드(208 내지 228) 내의 데이터의 일부 또는 모두를 검증하는데 사용하기 위한 서명을 제공하도록 구성될 수 있다. 또한, 도 6과 함께 설명한 바와 같이, 보안 프로세서(104)(도 1)가 소프트웨어의 주어진 부분의 일부 또는 전부를 실행하도록 허용하기 전에 소프트웨어의 주어진 부분의 일부 또는 전부가 스크럽 또는 인증되거나 아무것도 스크럽 또는 인증되지 않을 수 있음이 이해되어야 한다.
본 발명의 하나 이상의 실시예에서, 신뢰 벡터 기술자는 또한 보안 프로세서 에 의한 소프트웨어 코드의 주어진 부분의 실행에 앞서 이를 검증하는데 사용하기 위한 데이터를 제공하는 코드 서명 필드(228)를 포함하도록 구성될 수 있다. 임의의 타입의 디지털 서명이 서명(226) 및/또는 코드 서명(228)으로 사용될 수 있음이 이해되어야 한다. 예를 들면, 디지털 서명은, 교시(teach)하는 모든 것에 대해 특히, 디지털 서명, 개인 키 시스템, 공개(public) 키 시스템의 교시에 대해 그 내용 전체가 참조로써 본 명세서에 통합되는 디지털 서명 표준(Digital Signature Standard: DSS)(Federal Information Processing Standard Publication 186, 1994. 5. 19) 내에 기술된 인증 방법과 같은 개인 및 공개 키 시스템을 사용할 수 있다.
콘텍스트(301)를 스왑하기 위한 및 보안 예외(309)를 관리하기 위한 프로세스(300)의 일 실시예를 나타내는 순서도가 도 3a 및 도 3b에 도시된다. 콘텍스트 스왑 프로세스는 콘텍스트 관리자, 보안 프로세서 및/또는 보안 프로세서와 콘텍스트 관리자의 조합에 의해 실행될 수 있다. 도 3a에 도시한 바와 같이, 콘텍스트는 현재 세이브된(303 동작) 보안 프로세서(104)(도 1)에 의해 실행된다. 하나 이상의 실시예에서, 보안 프로세서(104)(도 1)는 포인터를 스택에 세이브하고, 임의의 요청된 데이터를 메모리(126)(도 1)로 저장하며, 콘텍스트 스왑이 일어나기 전에 요청되는 임의의 "클린-업(clean-up)" 함수를 완료한다. 세이브 동작은 수요대로, 정기적인 간격으로, 요구되는대로, 및/또는 다른 방법으로, (도 3a에 도시된 바와 같이) 콘텍스트 스왑 전에 일어날 수 있다. 콘텍스트 스왑 프로세스는 또한 콘텍스트 스왑 요청의 통신을 포함할 수 있다(302 동작). 이러한 요청은 일반적으로 보안 프로세서로부터 콘텍스트 관리자로 송신되고 콘텍스트 스왑이 요청되기 전 또는 후에 발생할 수 있으며 다양한 환경에서 일어날 수 있다.
보안 프로세서(104)(도 1)는 상이한 또는 제2 콘텍스트 하의 소프트웨어의 제2 부분을 실행할 필요가 있는 보안 프로세서를 초래하는 상황이 발생하는 경우 소프트웨어의 제1 부분을 실행할 수 있다. 소프트웨어의 제2 부분의 실행을 용이하게 하기 위해, 보안 프로세서(104)(도 1)는 도 3a에서 동작(302)에 의해 도시한 바와 같이, 콘텍스트를 스왑하도록 하는 요청을 콘텍스트 관리자(106)(도 1)로 통신하도록 구성될 수 있다. 콘텍스트 스왑 요청은 예컨대, 보안 프로세서(104)(도 1)가 스왑하고자 하는 콘텍스트(202)(도 2)에 대한 콘텍스트 ID(208)를 포함할 수 있다. 콘텍스트 스왑 요청은 사용되는 특정 구현 또는 실시예에 의존하여 부가적인 또는 다른 정보를 포함할 수 있다.
도 3a에 더 도시한 바와 같이, 콘텍스트 스왑 프로세스는 보안 프로세서(104)를 리셋하는 단계를 포함할 수 있다. 즉, 보안 프로세서는 보안 프로세서에 의해 통신된 콘텍스트 스왑 요청을 수신한 수에 콘텍스트 관리자에 의해 리셋될 수 있다(304 동작). 보안 프로세서 리셋은 바람직하게는 보안프로세서 캐시(122), MMU(128), 레지스터(124), 메모리 등 내의 임의의 데이터를 삭제하고 보안 프로세서(104)(도 1)로부터 이전의 소프트웨어 상태를 제거한다. 또한, 여러 가지 실시예는 요청 동작(302) 및/또는 세이브 동작(303)이 달성됨이 없는 리셋 동작(304)을 포함할 수 있음이 이해되어야 한다.
도 3a에 도시된 바와 같이, 콘텍스트 스왑 프로세스는 또한 신뢰 벡터 검증기로 신뢰 벡터를 로드하는 단계(306 동작)를 포함할 수 있다. 원하는 경우, 콘텍 스트 관리자(106)(도 1)는 기술자(202)와 같은 신뢰 벡터 기술자를 신뢰 벡터 검증기(106)(도 1)로 로드한다. 본 발명의 특정 실시예와 관련하여 상기 논의한 바와 같이, 신뢰 벡터 검증기는 비활성(non-active) 상태에 있는 기술자와 함께 미리 로드될 수 있다. 따라서, 신뢰 벡터 검증기의 로드는 임의의 주어진 실시예에서 선택적인 및/또는 불필요한 것이 될 수 있음이 쉽게 이해되어야 한다.
콘텍스트 스왑 프로세스는 또한, 신뢰 벡터 검증기로 로드된 또는 필요한 경우, 달리 활성(active) 상태에 대해 지정된 소프트웨어의 일부가 새로운 콘텍스트와 함께 사용되기 위해 준비되도록, 새로운 콘텍스트를 인에이블(enable)하는 단계(308 동작)을 포함한다. 몇가지 실시예에서, 신뢰 벡터 기술자(202)(도 2)는 신뢰 벡터 기술자(202)(도 2) 내에 세이브된 서명(226)(도 2)을 생성된 서명과 비교하여 인증될 수 있다. 이러한 인증은 기술자가 신뢰 벡터 검증기(108) 내에 로드된 전 또는 후에 일어날 수 있다. 비슷하게, 새로운 콘텍스트 하에서 실행될 소프트웨어의 일부는 코드 서명(228)(도 2)을 생성된 서명에 비교함으로서 인증될 수 있다. 신뢰 벡터 기술자 및 소프트웨어의 일부를 인증하는 단계는 도 6과 함께 아래에 보다 세부적으로 논의된다. 신뢰 벡터 기술자(202) 및 소프트웨어의 일부를 로드하는 것은 바람직하게는 새로운 콘텍스트 내의 소프트웨어의 실행을 위한 보안 프로세서를 구성한다.
보안 예외를 관리하기 위한 프로세스의 일 실시예(309)가 도 3b에 도시된다. 적어도 본 실시예에 있어서, 자원 요청은 보안 프로세서(104)(도 1)로부터, 신뢰 벡터 검증기(108)(도 1)에 의해, 수신된다. 자원 요청을 수신하면(310 동작), 신뢰 벡터 검증기는 요청을 현재의 활성 신뢰 벡터 기술자와 비교하고 요청이 기술자를 따르는지를 결정한다(312 동작). 예를 들면, 신뢰 벡터 검증기는 현재의 활성 신뢰 벡터 기술자 내에서 요청된 메모리 주소를 인가(authorize)된 메모리 데이터 영역(222)(도 2)의 리스트(list)와 비교한다.
요청이 현재의 활성 신뢰 벡터 기술자를 따르면, 신뢰 벡터 검증기는 보안 프로세서 및 자원 간에 일어나는 통신을 허용한다(316 동작). 예를 들면, 신뢰 벡터 검증기는 자원 요청(118)(도 1)을 적절한 자원(120)(도 1)으로 전달한다.
요청이 신뢰 벡터 기술자를 따르지 않으면, 보안 예외가 발생될 수 있고(320 동작), 보안 프로세서의 리셋(330 동작)을 초래한다. 하나 이상의 실시예에서, 신뢰 벡터 검증기는 하드웨어 인터럽트 또는 명령어(121)(도 1)와 같은 리셋 명령어를 보안 프로세서로 송신한다. 또한, 하나 이상의 실시예에 있어서, 보안 프로세서만이 아닌, 전체 칩셋(chipset)은 보안 예외가 일어나면 리셋될 수 있다.
프로세스는 최근 발생된 보안 예외가 보안 예외 발생의 두 번째 발생인지의 선택적 결정(322 동작)을 더 포함한다. 최근 발생된 보안 예외가 두 번째 예외 보안이 아닌 경우, 신뢰 벡터 검증기는 미리 결정된 또는 실시간 결정된 시간 기간(time period)에 대해 대기하도록 지시될 수 있다(326 동작). 또한, 하나 이상의 실시예에 있어서, 신뢰 벡터 검증기는 주어진 대기 기간이 만료(expire)한 후에 리셋될 것이라고 보안 프로세서에 경고하도록 프로그래밍될 수 있다. 대기 기간 동안, 보안 프로세서는 부가적인 처리 동작을 달성하고/하거나 부가적인 자원을 요청할 수 있음이 이해되어야 한다. 대기 기간이 만료하면, 보안 프로세서는 리셋된 다(330 동작).
하나 이상의 실시예에서, 보안 프로세서의 리셋은 둘 이상의 개별 상황 하에서 발생할 수 있다. 첫째, 보안 프로세서(104)(도 1)는 콘텍스트 스왑에 반응하여 콘텍스트 관리자(106)(도 1)에 의해 리셋될 수 있다. 콘텍스트 스왑 리셋은 다른 콘텍스트와 관련된 상태 정보를 접근함으로부터 시스템(100)에 삽입될 수 있는 임의의 악의적인 코드를 막는다. 둘째, 보안 프로세서(104)는, 신뢰 벡터 검증기(108)(도 1)가 하나 이상의 보안 예외에 반응하여 보안 프로세서(104)(도 1) 및/또는 임의의 지원 회로의 하드웨어 리셋 또는 하드 부트를 개시할 때 마다, 리셋될 수 있다. 이러한 상황에서, 보안 예외 하드웨어 리셋은 현재 콘텍스트 내에서 악의적인 코드가 인가되지 않은 프로세스를 완료하는 것을 막는다. 따라서, 콘텍스트 스왑 및 보안 예외는 보안 프로세서, 메모리, 자원 등의 안전하고/하거나 인가된 사용을 용이하게하는 리셋을 개시하고 이러한 컴포넌트의 안전하지 않고/않거나 인가되지 않은 사용에 대해 일정 정도의 보호를 제공할 수 있다.
보안 동작 환경(402)의 일 실시예를 포함하는 장치(400)의 일 실시예의 블록도가 도 4에 도시된다. 장치(400)는 예컨대, 위성 텔레비전 변환 장치일 수 있다. 하나 이상의 일 실시예에서, 장치(400)는, 보안 동작 환경(402), 메인 프로세서 환경(404), 메모리(406), 주변 인터페이스(408) 및 [하드 드라이브(434)와 같은 외부 데이터 저장소가 제공될 때 사용을 위한] 데이터 저장 인터페이스(410) 중 하나 이상을 더 포함할 수 있지만 이에 한정되지는 않는 제어 전자 제품(electronics)(426)을 포함할 수 있다. 보다 자세하게는, 보안 동작 환경(402)은 제1 보안 프로세서(414)와 제1 신뢰 벡터 검증기(416)를 포함하는 제1 보안 동작 환경(412) 및 제2 보안 프로세서(420)와 제2 신뢰 벡터 검증기(422)를 포함하는 제2 보안 동작 환경(418)을 포함할 수 있다. 보안 동작 환경의 다른 실시예는 단일 보안 프로세서, 복수의 보안 프로세서, 단일 벡터 검증기, 복수의 벡터 검증기, 단일 동작 환경 또는 복수의 동작 환경을 포함할 수 있다. 제1 보안 동작 환경(412) 및 제2 보안 동작 환경(418)은 또한 하나 이상의 공통 또는 전용 콘텍스트 관리자(424)와 연결되어 동작될 수 있다. 따라서, 환경, 프로세서, 벡터 검증기 및 콘텍스트 관리자의 여러 가지 조합이 사용될 수 있음이 이해되어야 한다.
도 4에 더 도시한 바와 같이, 제어 전자 제품(426)은 또한 시스템 버스(bus)(432)를 포함할 수 있다. 버스로의 및 버스로부터의 통신은 도 4에 도시한 바와 같이, 직접적일 수 있고/있거나 하나 이상의 독립된(stand alone) 또는 통합된 버스 마스터(master) 등을 통할 수 있다. 예를 들면, 보안 프로세서(414/420)는 버스 마스터를 포함할 수 있다.
신뢰 벡터 검증기(416, 422, 430)는 바람직하게는 시스템 버스(432)로의/시스템 버스(432)로부터의 보안 프로세서로부터의/보안 프로세서로의 통신을 각각 중재하도록 구성될 수 있다. 또한, 하나 이상의 보안 프로세서[예컨대, 보안 프로세서(414, 420)]는 (병렬로) 제어 전자 제품(426)의 동일한 또는 상이한 함수 또는 태스크를 실행하도록 구성될 수 있다. 예를 들면, 프로세서(420)는 보안 함수를 처리하도록 즉, 비디오 신호를 해독(decrypt)하고, 사용자 시청(viewing) 권리(right)를 검증하며, 텔레비전 변환 장치(400)의 다른 구성 요소와 상호 작용하 도록 구성되는 반면, 프로세서(414)는 디스플레이(display) 데이터 및 사용자 명령(command)을 처리하도록 구성될 수 있다.
보안 프로세서(414, 420), 신뢰 벡터 검증기(416, 422) 및 콘텍스트 관리자(424)는 하나 이상의 통합된 회로 또는 분리된 이산(discrete) 컴포넌트로 제공될 수 있다. 예를 들면, 프로세서(414, 420)는 단일 통합된 회로 또는 두 개의 개별 통합된 회로로 신뢰 벡터 검증기(416, 422)와 함께 각각 조합되어, 즉, 각 보안 동작 환경(412, 418)에 대한 하나의 통합된 회로가 될 수 있다.
또한, 보안 프로세서(414, 420), 신뢰 벡터 검증기(416, 422), 콘텍스트 관리자(424) 및/또는 다른 컴포넌트는 하드웨어 및/또는 소프트웨어의 임의의 원하는 조합으로 제공될 수 있다. 예를 들면, 콘텍스트 관리자(424)는 하나 이상의 프로세스를 포함하는 소프트웨어 모듈이 될 수 있다. 비슷하게, 하나 이상의 논리 컴포넌트를 포함하는 하드웨어 회로가 사용될 수 있다.
제어 전자 제품(426)은 또한 하나 이상의 휘발성(volatile) 및/또는 비휘발성(non-volatile) 메모리 컴포넌트(406)를 포함할 수 있다. 이러한 메모리 장치의 예는 RAM 및 플래시 메모리를 포함하지만 이에 한정되지는 않는다.
보안 프로세서(414, 420) 및/또는 콘텍스트 관리자(424)는 또한 또는 선택적으로 하나 이상의 하나 이상의 공통 또는 개별 메모리 컴포넌트 또는 메모리 영역(range)(미도시)과 연결될 수 있다. (안전할 수 있는) 메모리 컴포넌트는 예컨대, 하나 이상의 콘텍스트에 상응하는 TVT(200)(도 2) 및/또는 하나 이상의 신뢰 벡터 기술자(202)(도 2)를 저장하는데 사용될 수 있다. 마찬가지로, 메모리 컴포넌 트는 기술자 및/또는 소프트웨어 일부의 계산된(calculated) 서명 및 참조(reference) 서명의 비교에 사용되는 계산된 해시(hash)를 저장하도록 구성될 수 있다.
콘텍스트 메모리 영역, 참조 서명 및 신뢰 벡터 기술자는 비보안(unsecure) 메모리에 저장될 수 있다. 예를 들면, 콘텍스트 메모리 영역, 참조 서명 및/또는 신뢰 벡터 기술자는 RAM(random access memory), DRAM(dynamic RAM), SRAM(static RAM) 또는 플래시 메모리와 같은 재기록 가능(re-writable) 및 휘발성 메모리에 저장될 수 있다. 하나 이상의 실시예에서, 콘텍스트 관리자(424)는 포인터, 메모리 주소 또는 비슷한 참조를 사용하여 메모리(406)와 통신할 수 있다.
보안 프로세서(414, 420) 및 신뢰 벡터 검증기(416, 422, 430)는 하나 이상의 실시예에서, 범용 프로세서일 수 있다. 보안 프로세서는 또한 캐시 및 메모리 관리 장치(MMU)를 포함할 수 있지만, 이에 한정되지는 않는다. 보안 프로세서는 또한 필요에 따라 명령어 페치(fetch), 데이터 판독/기록, I/O 판독/기록 및 다른 함수 및 루틴을 실행할 수 있다.
하나 이상의 신뢰 벡터 검증기(416, 422, 430)는 보안 프로세서(414, 420)와 전자 제품(426)의 시스템 버스(432), 메모리(406), 주변 인터페이스(408), 데이터 저장 인터페이스(410) 및/또는 다른 컴포넌트 간의 접근을 중재하기 위해 하나 이상의 주소 검사기(checker)를 이용한다. 또한, 신뢰 벡터 검증기(416, 422, 430)는 보안 프로세서(414, 420, 또는 428)로부터 시스템 버스(432)로의 직접적인 연결 및 그 확장으로서 메모리(406), 주변 인터페이스(408) 또는 하드 드라이브 인터페이 스(410)로의 직접적인 연결을 막는다. 프로세서 및 버스 간의 문지기(gatekeeper)로서 역할을 함으로써, 신뢰 벡터 검증기는 보안 프로세서 및 다른 시스템 컴포넌트 간의 연결 및/또는 분리(isolation)를 제어하고 용이하게 할 수 있다.
신뢰 벡터 검증기는, 임의의 주어진 시간에 하나 이상의 콘텍스트를 처리하기 위해 그들이 사용되는 실시예에 의존하여 구성될 수 있다. 마찬가지로, 신뢰 벡터 검증기(416)는 주소 검사기로서 주어진 콘텍스트에 대한 유효 메모리 영역을 저장하고 검증하도록 구성될 수 있다. 이러한 정보는 예컨대, 신뢰 벡터 기술자 내의 개별적인 엔트리(entry)로서 저장될 수 있다. 당업자는 콘텍스트 데이터를 처리하는 다른 방법이 가능하고 본 발명의 여러 가지 실시예의 범위 내에 있음을 인지할 것이다.
신뢰 벡터 검증기는 하나 이상의 프로세서 접근 요청이 유효 영역의 밖에 있는 것으로 결정이 도달할 때마다, 시그널링(signaling), 플래깅(flagging), 보안 예외 또는 다른 방법에 의해 반응하도록 구성될 수 있다. 마찬가지로, 신뢰 벡터 검증기는 메모리(406)의 임의의 영역에 대해 판독, 판독/기록 및 기록과 같은 접근 모드를 검증하도록 구성될 수 있다. 예를 들면, 신뢰 벡터 검증기(416)는 보안 프로세서(414)에 의한 기록 요청을 수신하면, 데이터 메모리 영역이 각 콘텍스트에 대해 유효 영역인지 및 데이터 메모리 영역이 기록 접근을 허용하는지를 결정하도록 구성될 수 있다. 예컨대, 만약 기록 접근이 허용되지 않으면, 신뢰 벡터 검증기(416)는 보안 예외를 플래깅하도록 구성될 수 있다.
여러 가지 실시예에서, 프로그램 코드 또는 데이터를 저장하는데 사용되는 메모리 영역은 인접하거나 또는 비인접(non-contiguous)할 수 있다. 예를 들면, 메모리 영역은 하나 이상의 주소의 형태 및 하나 이상의 프롬-투(from-to) 주소의 길이일 수 있다. 마찬가지로, 메모리 영역은 하나 이상의 메모리 컴포넌트 또는 장치를 이용할 수 있다. 예를 들면, 메모리 영역은 두 개의 DDR-SDRAM 메모리 컴포넌트, 세 개의 EEPROM 메모리 컴포넌트와 조합된 하나의 DDR-SDRAM 메모리 컴포넌트 및/또는 실제 및/또는 가상 메모리 및/또는 데이터 저장 장치의 다른 조합을 이용할 수 있다. 이러한 장치는 주어진 제어 전자 제품에 대하여 가깝거나(proximal) 멀(distal) 수 있다.
도 4를 더 참조하면, 신뢰 벡터 기술자는 또한 하나 이상의 콘텍스트에 따라 주변 컴포넌트를 부분적으로 또는 전체적으로 인가하는데 사용될 수 있다. 예를 들면, 신뢰 벡터 기술자는 주변 인터페이스(408)를 통한 스마트 카드(436), 리모콘(remote controller)(438), 텔레비전 및/또는 다른 주변 장치 중의 하나 이상으로의 접근을 인가할 수 있다. 하나 이상의 주변 장치는 예컨대, 엔트리 포인터 및 주변 영역에 의해 신뢰 벡터 테이블 내에서 표시될 수 있다. 영역은 하나 이상의 프롬-투 주소의 형태로 표현될 수 있다. 도 2와 같이 설명된 바와 같이, 비트맵(bitmap)은 콘텍스트의 신뢰 벡터 기술자 내의 주변 장치를 인가하는데 사용될 수 있다. 예컨대, 비트맵 "0101B"는 주변 컴포넌트 (1) 및 (3)을 인가하는 것으로 이해될 수 있다.
도 4에 도시된 실시예에서, 콘텍스트 관리자(424)는 보안 프로세서(414, 420) 상의 보안 콘텍스트 스왑을 관리하는 것을 담당한다. 일 실시예에서, 초기 페 이즈(phase) 동안 즉, 텔레비전 변환 장치(400)를 위한 부트 프로세스 동안, 콘텍스트 관리자(424)는 메모리(406)로부터 하나 이상의 콘텍스트를 위한 신뢰 벡터 기술자를 수신한다. 신뢰 벡터 기술자가 콘텍스트 관리자(424)로 로드되기 전에, 신뢰 벡터 기술자의 보전(integrity)은 신뢰 벡터 기술자를 인증함에 의해 검증될 수 있다. 예를 들면, 신뢰 벡터 기술자의 보전은 다이제스트(digest)를 계산하기 위해 해시 함수를 사용하고, 계산된 서명을 생성하기 위해 키로 다이제스트를 서명하며, 계산된 서명을 참조 서명(226)(도 2)과 비교함으로써 검증할 수 있다. 이러한 예에서, 만약 계산된 서명 및 참조 서명이 부합(match)되지 않으면 보안 예외는 생성될 수 있거나 제어 전자 제품(426)은 경고될 수 있고, 콘텍스트 관리자(424)는 소프트웨어를 인에이블하는 것이 불가능해 질 것이다.
하나 이상의 실시예에서, 신뢰 벡터 검증기(416, 422)는 신뢰 벡터 검증기를 특정 영역 또는 메모리(406)의 영역으로 제한할 수 있다. 예를 들면, 초기 페이즈 부트 프로세스 동안 및 신뢰 벡터 검증기(416, 422)가 콘텍스트 관리자(424)로부터 하나 이상의 명령을 수신하기에 앞서, 하나 이상의 신뢰 벡터 기술자는 메모리의 다른 영역으로부터가 아니고 특정 정의된 영역 또는 메모리(406)의 영역으로부터 로드될 수 있다.
다른 실시예에서, 신뢰 벡터 기술자 내에 리스트된 영역(210)(도 2)부터 영역(212)(도 2)까지의 메모리 영역에 저장된 코드는 또한 하나 이상의 콘텍스트에 대해 인증될 수 있다. 마찬가지로, 콘텍스트 관리자(424)는 부가 콘텍스트 확인에 대한 인증에 사용되는 계산된 해시를 저장할 수 잇다.
하나 이상의 실시예에 대하여 도 3과 함께 설명된 바와 같이, 보안 프로세서(414, 420)는 신호 예컨대, 콘텍스트 스왑에 대한 요청을 콘텍스트 관리자(424)로 송신함으로써 콘텍스트를 변경할 수 있다. 콘텍스트 관리자(424)는 하나 이상의 신뢰 벡터 기술자의 지정을 수신하면, 하나 이상의 콘텍스트에 상응하는 프로그램 메모리 영역의 인증을 검증한다. 일단 콘텍스트 메모리 영역이 검증되면, 콘텍스트 관리자(424)는 신뢰 벡터 기술자를 로드하기 위한 검증된 콘텍스트에 상응하는 영역 또는 메모리(406)의 영역을 신뢰 벡터 검증기(416, 422)에게 통지한다. 일 실시예에서, 프로그램 메모리 영역 및 메모리(406)의 데이터 메모리 영역에 대한 참조 서명은 초기화 때, 연속적으로, 무작위로, 스케쥴(schedule)에 따라 또는 어떤 이벤트에 반응하여 검증된다.
하나 이상의 콘텍스트에 상응하는 영역 또는 메모리(406)의 영역 및 참조 서명은 비보안 위치에 인캡슐레이트(encapsulate)되고/되거나 저장될 수 있다. 예를 들면, 하나 이상의 콘텍스트에 상응하는 영역 또는 메모리(406)의 영역 및 참조 서명은 정의 헤더(definition header) 내에 인캡슐레이트될 수 있다. 또한, 비대칭(asymmetric) 키는 서명을 도출하는데 사용될 수 있다. 하지만, 안전하게 저장된 대칭(symmetric) 키도 또한 서명을 도출하는데 사용될 수 있다는 것이 이해되어야 한다.
도 4를 다시 참조하면, 제어 전자 제품(404)은 메인 프로세서(428) 및 메인 신뢰 벡터 검증기(430)를 더 포함하는 메인 프로세서 동작 환경(404)을 포함할 수 있다. 하나 이상의 실시예에서, 메인 프로세서 환경(404)은 예컨대, 사용자 인터페 이스 및 다른 소프트웨어 루틴을 실행하는데 사용될 수 있다. 일반적으로, 이러한 루틴은 보안 프로세서(414, 416)에 의해 실행되되는 루틴과 동일한 수준(level)의 보안을 요구하지 않는다.
또한, 리눅스(Linux) 운영 체제와 같은 보안 콘텍스트 스왑을 실행하는 것이 불가능한 특정 프로세스는 일반적으로 보안 프로세서(414)가 아닌 메인 프로세서(428)에 의해 실행된다. 또한, 메인 환경은 메인 프로세서에 의한 하나 이상의 자원으로의 접근을 중재하도록 구성되는 신뢰 벡터 검증기(430)를 포함하도록 구성될 수 있다. 또한, 콘텍스트 관리자는 메인 환경으로부터 제외될 수 있고 메인 프로세서에 의해 콘텍스트 스왑을 제거할 수 있다.
도 5는 하나 이상의 실시예에서의 사용을 위한 장치의 블록도를 제공한다. 도시된 바와 같이, 이 장치(500)는 보안 프로세서(414) 및 콘텍스트 관리자(424)를 가진 보안 동작 환경(502)을 포함한다. 또한, 이 장치는 메인 프로세서(512)를 포함하는 메인 처리 환경(404)을 포함한다. 보안 프로세서(414) 및 메인 프로세서(512)는 버스(432)를 통해 서로 연결된다. 신뢰 벡터 검증기(504, 506, 508)는 버스(432)로 연결되고 보안 프로세서(414) 및/또는 메인 프로세서(512)에 의한 하나 이상의 자원으로의 접근 요청을 중재하도록 구성된다. 신뢰 벡터 검증기(504, 506, 508)는 보안 프로세서(414)와 관련하여 비동기적으로(asynchronously) 동작하도록 구성될 수 있다. 보다 자세하게는, 콘텍스트 관리자(424)는 초기 페이즈 동안 즉, 부트 시퀀스(sequence) 동안 특정 콘텍스트 또는 보다 일반적으로 보안 수준과 관련된 영역 또는 메모리(406)의 영역과 함께 신뢰 벡터 검증기(504, 506, 508)를 로드한다. 이러한 콘텍스트는 콘텍스트 변경이 실행되고 새로운 신뢰 벡터 기술자는 하나 이상의 벡터 검증기로 로드될 때까지, 프로세서 및 자원 간의 모든 통신을 위해 사용될 수 있다. 따라서 보안 관리자는, 그 관련된 콘텍스트 관리자를 통하여, 그 자체 및 메인 프로세서에 의해 이용되는 벡터 검증기의 구성을 결정한다는 것이 이해되어야 한다.
다른 실시예에서, 개별 컴포넌트는 하나 이상의 신뢰 벡터 검증기를 가질 수 있고 하나 이상의 보안 프로세서는 동일한 검증기 모듈에 접근할 수 있다. 예를 들면, 복수의 보안 프로세서 구성에서, 컴포넌트당 복수의 신뢰 벡터 검증기는 컴포넌트당 둘 이상의 콘텍스트의 부가적인 비동기 처리를 허용한다. 또 다른 실시예에서, 하나 이상의 컴포넌트는 신뢰 벡터 검증기(504, 506, 508)에 의해 중재되는 다른 연결 없이 또는 그에 부가하여 시스템 버스(432)로 각각 연결된다.
도 6을 참조하면, 소프트웨어 일부, 신뢰 벡터 기술자 또는 데이터를 위한 메모리 영역을 스크럽 또는 인증하기 위한 프로세스(600)는 본 발명의 하나 이상의 실시예에 대하여 도시된다. 도시된 바와 같이, 인증을 위해 특정된 로컬(local) 데이터의 해시가 생성된다(612 동작). 예를 들어, 제어 전자 제품(426)(도 4)이 메모리 영역에 대해 해시 값 또는 다른 유사한 값을 결정한다.
해시가 키에 의하여 서명됨으로써, 계산된 서명이 생성된다(612 동작). 하나 이상의 실시예에서, 참조 해시는 계산된 서명을 생성하기 위해 공개 키로 서명될 수 있다. 계산된 서명은 비교를 위해 저장된다(613 동작).
도 6에 더 도시된 바와 같이, 인증 프로세스는 참조 서명을 검색(retrieve) 하는 단계(614 동작)을 포함할 수 있다. 하나 이상의 실시예에 있어서, 콘텍스트 관리자(106)(도 1)는 신뢰 벡터 데이터 구조의 서명 필드(226)(도 2) 또는 코드 서명 필드(228)(도 2)에 대한 참조 서명을 검색한다. 하지만, 참조 서명은 상이한 데이터 구조로부터 검색될 수 있거나 다른 컴포넌트로부터 수신될 수 있다는 것이 이해되어야 한다. 예를 들면, 콘텍스트 관리자는 보안 메모리로부터 서명을 검색할 수 있다. 하나 이상의 실시예에서, 이전의 해시는 참조 서명을 생성하기 위해 개인 키로 서명되었다.
도 6에 더 도시된 바와 같이, 인증 프로세스는 계산된 서명을 참조 서명과 비교하는 단계(616 동작)를 포함할 수 있다. 즉, 콘텍스트 관리자(106)(도 1)는 공개 키로 해시를 서명함에 의해 생성된 계산된 서명을 신뢰 벡터 데이터 구조로부터 검색된 참조 서명과 수학적으로 비교할 수 있다. 계산된 서명 및 참조 서명의 비교는 비트 단위(bit wise)의 비교 또는 다른 연산 프로세스에 의해 완료될 수 있다는 것이 이해되어야 한다. 서명을 비교하면, 소프트웨어 일부, 신뢰 벡터 기술자 또는 데이터가 인증된다.
인증 프로세서는 선택적으로 인증 프로세스가 연속적인지를 결정하는 단계(618 동작)를 포함한다. 하나 이상의 실시예에서, 콘텍스트 관리자(106)(도 1)는 신뢰 벡터 기술자 내에서 스크럽 타입 데이터 필드(218)(도 2)에 대한 설정을 결정한다. 예를 들면, 연속적인 스크럽 타입 비트가 스크럽 타입 데이터 필드(218) 내에 설정된다면, 콘텍스트 관리자(106)(도 1)는 인증이 연속적이라고 결정한다. 콘텍스트 관리자(106)(도 1)는 소프트웨어 일부, 신뢰 벡터 기술자 또는 데이터와 함 께 송신되는 헤더 내의 값을 조사함에 의해, 메모리의 다른 부분의 설정을 검색함에 의해, 또는 다른 컴포넌트로부터 명령어를 수신함에 의해 인증의 타입을 결정할 수 있다는 것이 이해되어야 한다.
인증이 연속적인 것이면, 도 6에 도시된 인증 프로세스의 다른 실시예는 동일한 소프트웨어 일부, 신뢰 벡터 기술자 또는 데이터에 대한 다른 인증을 수행하는 시간의 기간동안 대기하는 단계(620 동작)를 선택적으로 포함할 수 있다. 하나 이상의 실시예에서, 콘텍스트 관리자(106)(도 1)는 시간의 미리 결정된 기간동안 대기하고 동일한 소프트웨어 일부, 신뢰 벡터 기술자 또는 데이터에 대한 다른 인증을 완료한다. 시간의 미리 결정된 기간은 일 초의 몇 분의 일(fraction of a second), 초, 분, 시, 일 등의 임의의 시간 기간일 수 있다. 하나 이상의 실시예에서, 콘텍스트 관리자(106)(도 1)의 타이머(timer)는 미리 결정된 시간 기간을 센다(count). 설정된 한도에 도달하면, 인증 프로세스는 다시 수행된다.
상기에 따르면, 일 실시예는 보안 컴퓨팅 환경에서 소프트웨어를 실행하기 위한 시스템을 포함한다. 시스템은 소프트웨어의 제1 부분에서 소프트웨어의 제2 부분으로 실행을 교환할 때 제1 콘텍스트에서 제2 콘텍스트로 콘텍스트 스왑을 요청하도록 구성되는 보안 프로세서를 포함한다. 시스템은 또한 보안 프로세서와 통신하는 콘텍스트 관리자를 포함하고, 콘텍스트 관리자는 요청된 콘텍스트 스왑을 수신하고 콘텍스트 스왑을 개시하도록 구성된다. 시스템은 또한 보안 프로세서 및 콘텍스트 관리자와 통신하는 신뢰 벡터 검증기를 포함하고, 신뢰 벡터 검증기는 콘텍스트 관리자로부터의 명령에 대해 신뢰 벡터 기술자를 로드하도록 구성된다.
하나 이상의 실시예에서, 콘텍스트 관리자는, 콘텍스트 스왑에 반응하여, 보안 프로세서의 리셋을 개시한다.
하나 이상의 실시예에서, 콘텍스트 관리자는 신뢰 벡터 기술자를 제2 콘텍스트와 연관시킨다.
하나 이상의 실시예에서, 신뢰 벡터 검증기는 신뢰 벡터 기술자에 따라 보안 프로세서에 의한 하나 이상의 자원으로의 접근을 제어한다.
하나 이상의 실시예에서, 시스템은 콘텍스트 관리자와 통신하는 제2 보안 프로세서를 포함한다. 제2 보안 프로세서는 소프트웨어의 하나 이상의 다른 부분을 실행하고 소프트웨어의 제3 부분에서 소프트웨어의 제4 부분으로 실행을 교환할 때 제3 콘텍스트에서 제4 콘텍스트로 콘텍스트 스왑을 요청하도록 구성된다. 시스템은 또한 제2 보안 프로세서 및 콘텍스트 관리자와 통신하는 제2 신뢰 벡터 검증기를 포함하고, 신뢰 벡터 검증기는 콘텍스트 관리자로부터의 명령에 대해 제2 신뢰 벡터 기술자를 로드하도록 구성된다. 신뢰 벡터 검증기는 제2 신뢰 벡터 기술자에 따라 제2 보안 프로세서에 의한 하나 이상의 자원으로의 접근을 제어하도록 구성된다.
하나 이상의 실시예에서, 시스템은 정적(static) 콘텍스트 내에서 소프트웨어의 일부를 실행하도록 구성된 메인 프로세서를 포함한다. 시스템은 또한 메인 프로세서와 통신하며, 신뢰 벡터 기술자를 로드하고 정적 콘텍스트 내에서 메인 프로세서에 의한 하나 이상의 자원으로의 접근을 제어하도록 구성된 메인 신뢰 벡터 검증기를 포함한다.
하나 이상의 실시예에서, 시스템은 메인 신뢰 벡터 검증기와 통신하며, 정적 콘텍스트 내에서 동작을 실행하도록 구성된 버스 마스터를 포함한다.
하나 이상의 실시예에서, 정적 콘텍스트 내에서 실행되는 소프트웨어의 일부는 운영 체제이다.
다른 실시예는 보안 컴퓨팅 환경에서 소프트웨어를 실행하기 위한 시스템을 포함한다. 시스템은, 각 프로세서가 소프트웨어의 제1 부분에서 소프트웨어의 다른 부분으로 실행을 교환할 때 제1 콘텍스트에서 다른 콘텍스트로 콘텍스트 스왑을 요청하도록 구성되는 둘 이상의 보안 프로세서를 포함한다. 시스템은 또한 둘 이상의 보안 프로세서의 각각과 통신하며, 둘 이상의 보안 프로세서 중 하나 이상에 의해 요청된 콘텍스트 스왑을 수신하는 콘텍스트 관리자를 포함한다. 수신된 요청에 반응하여, 콘텍스트 관리자는 요청하는 보안 프로세서의 리셋을 개시하고 다른 요청된 콘텍스트와 하나 이상의 자원으로의 접근을 제어하는데 사용하기 위하여 구성된 제1 신뢰 벡터 기술자를 연관시킨다. 콘텍스트 관리자는 또한 다른 요청된 콘텍스트로의 스왑을 개시한다. 시스템은 또한 정적 콘텍스트 내에서 운영 체제를 실행하도록 구성된 메인 프로세서를 포함한다. 시스템은 또한, 각 신뢰 벡터 검증기가 보안 프로세서 및 메인 프로세서의 하나 이상과 통신하는, 복수의 신뢰 벡터 검증기를 포함한다. 신뢰 벡터 검증기는 요청된 콘텍스트 또는 메인 신뢰 벡터 기술자와 관련되고, 메인 프로세서에 의한 하나 이상의 자원으로의 접근을 제어하는데 사용하기 위하여 구성된 제1 신뢰 벡터 기술자를 로드하도록 구성된다.
하나 이상의 실시예에서, 보안 프로세서 중 하나는 소프트웨어의 제1 부분에 서 소프트웨어의 제2 부분으로 실행을 교환할 때 제1 콘텍스트에서 제2 콘텍스트로 제1 콘텍스트 스왑을 요청하도록 구성된다.
하나 이상의 실시예에서, 보안 프로세서 중 하나는 소프트웨어의 제3 부분에서 소프트웨어의 제4 부분으로 실행을 교환할 때 제3 콘텍스트에서 제4 콘텍스트로 제2 콘텍스트 스왑을 요청하도록 구성된다.
하나 이상의 실시예에서, 소프트웨어의 제2 부분 및 제4 부분은 실질적으로 비슷하다.
다른 실시예는 소프트웨어의 일부에 대한 콘텍스트로 스왑하도록 하는 요청을 수신하면, 보안 동작 환경 내에서 소프트웨어를 실행하기 위한 방법을 포함한다. 방법은 프로세서의 동작을 제어하는데 사용하기 위하여 구성된 신뢰 벡터 기술자를 로딩하는 단계 및 프로세서를 리셋하는 단계를 포함한다.
하나 이상의 실시예에서, 신뢰 벡터 기술자는 프로세서에 의한 하나 이상의 주변 장치로의 접근을 정의하고, 신뢰 벡터 검증기는 프로세서에 의한 하나 이상의 주변 장치로의 접근을 제어한다.
하나 이상의 실시예에서, 신뢰 벡터 기술자는 비트맵을 포함한다.
하나 이상의 실시예에서, 방법은 소프트웨어의 일부를 인증하는 단계를 포함한다.
하나 이상의 실시예에서, 인증하는 동작은 소프트웨어의 일부의 해시를 생성하는 단계, 계산된 서명을 생성하기 위해 생성된 해시를 서명하는 단계, 참조 서명을 검색하는 단계 및 참조 서명과 계산된 서명을 비교하는 단계를 포함한다. 서명 이 동일하면, 방법은 소프트웨어의 일부의 실행을 허용하는 단계를 더 포함한다.
하나 이상의 실시예에서, 방법은 시간의 기간동안 대기하는 단계 및 소프트웨어의 제2 인증을 실행하는 단계를 포함한다.
하나 이상의 실시예에서, 제2 인증은 소프트웨어 인증이 연속적인 경우 발생한다.
하나 이상의 실시예에서, 방법은 보안 프로세서로부터 자원 요청을 수신하는 단계 및 자원 요청이 신뢰 벡터 기술자를 따르는지를 결정하는 단계를 포함한다. 자원 요청이 신뢰 벡터 기술자를 따르지 않으면, 방법은 보안 예외를 발생하는 단계 및 보안 프로세서를 리셋하는 단계를 포함한다.
하나 이상의 실시예에서, 방법은 보안 예외가 두 번째 보안 예외인지를 결정하는 단계를 포함한다. 보안 예외가 두 번째 보안 예외가 아니면, 방법은 보안 프로세서를 리셋하기 전에 시간의 기간동안 대기하는 단계를 포함한다. 보안 예외가 두 번째 보안 예외이면, 방법은 시간의 기간 동안 대기함이 없이 보안 프로세서를 리셋하는 단계를 더 포함한다.
일 실시예는, 소프트웨어의 일부에 대한 콘텍스트로의 스왑을 요청하고 소프트웨어의 일부의 해시를 생성함에 의해 소프트웨어의 일부를 인증하도록 구성된 보안 프로세서를 포함하는 장치이다. 보안 프로세서는 계산된 서명을 생성하기 위해 생성된 해시를 서명하고, 참조 서명을 검색하며, 참조 서명과 계산된 서명을 비교하도록 더 구성된다. 서명이 동일하면, 보안 프로세서는 소프트웨어의 일부의 실행을 허용한다. 장치는 또한 요청된 콘텍스트 스왑을 수신하고, 신뢰 벡터 검증기 내 의 신뢰 벡터 기술자를 로드하며, 보안 프로세서를 리셋하도록 구성된 콘텍스트 관리자를 포함한다. 장치는 또한 보안 프로세서로부터 자원 요청을 수신하고 자원 요청이 신뢰 벡터 기술자를 따르는지를 결정하도록 구성된 신뢰 벡터 검증기를 포함한다. 신뢰 벡터 검증기는 또한 자원 요청이 신뢰 벡터 기술자를 따르지 않으면 보안 예외를 발생하고 보안 예외가 두 번째 보안 예외인지를 결정하도록 구성된다. 신뢰 벡터 검증기는 보안 예외가 두 번째 보안 예외가 아니면 보안 프로세서를 리셋하기 전에 시간의 기간 동안 대기한다. 하지만, 신뢰 벡터 검증기는 보안 예외가 두 번째 보안 예외이면 시간의 기간 동안 대기함이 없이 보안 프로세서를 리셋한다.
다른 실시예는 보안 프로세서의 실행을 제어하기 위한 컴퓨터 시스템 상에서 실행되는 인코딩된(encoded) 데이터 구조를 가진 컴퓨터로 판독 가능한 매체를 포함한다. 데이터 구조는 콘텍스트를 인식하는 콘텍스트 인식 필드, 메모리의 영역에 접근 가능한 보안 프로세서를 지정하는 메모리 데이터 영역 및 하드웨어 자원에 접근 가능한 보안 프로세서를 지정하는 하드웨어 신뢰 벡터를 포함하는 각 콘텍스트를 가진 하나 이상의 콘텍스트를 포함한다. 컴퓨터 시스템은 보안 프로세서가 하드웨어 신뢰 벡터에 기반하여 하드웨어 자원에 접근할 수 있는지를 결정하도록 구성된다.
하나 이상의 실시예에서, 하드웨어 신뢰 벡터는 보안 프로세서에 대하여 허용된 접근의 타입을 인식하는 비트맵이다.
하나 이상의 실시예에서, 데이터 구조는 코드 시작 주소 필드를 포함한다.
하나 이상의 실시예에서, 데이터 구조는 코드 종료 주소 필드를 포함한다.
하나 이상의 실시예에서, 데이터 구조는 키 숫자 필드, 목표 프로세서 필드, 벡터 숫자 필드, 스크럽 타입 필드, 프로세서 부트 주소 필드, 신뢰 벡터 기술자 서명 필드 및 코드 서명 필드를 포함한다.
하나 이상의 실시예에서, 코드 시작 주소 필드 및 코드 종료 주소 필드는 콘텍스트 내에서 실행되는 소프트웨어의 일부에 대한 프로그램 메모리 영역을 정의한다.
하나 이상의 실시예에서, 스크럽 타입 필드는 소프트웨어의 일부의 인증이 연속적인지를 지정한다.
다른 실시예는 보안 프로세서 및 컴퓨터로 판독 가능한 매체를 포함하는 컴퓨터 시스템이다. 컴퓨터로 판독 가능한 매체는 보안 프로세서에 의한 실행을 위한 하나 이상의 콘텍스트를 가진 인코딩된 데이터 구조를 포함한다. 각 콘텍스트는 콘텍스트 인식 필드, 어떤 하드웨어 자원에 보안 프로세서가 접근할 수 있는지를 지정하는 하드웨어 신뢰 벡터, 코드 시작 주소 필드, 코드 종료 주소 필드 및 프로세서 부트 주소 필드를 포함한다. 코드 시작 주소 필드 및 코드 종료 주소 필드는 콘텍스트 내에서 실행되는 소프트웨어의 일부에 대한 프로그램 메모리 영역을 정의한다. 컴퓨터 시스템은 보안 프로세서가 하드웨어 신뢰 벡터에 기반하여 하드웨어 자원에 접근할 수 있는지를 결정하도록 구성된다.
하나 이상의 실시예에서, 콘텍스트는 목표 프로세서 필드를 포함한다.
다른 실시예는 악의적인 소프트웨어로부터 시스템을 보호하기 위한 방법을 포함한다. 방법은 콘텍스트를 정의하는 신뢰 벡터 기술자를 로드하는 단계를 포함한다. 방법은 악의적인 소프트웨어를 수신하는 단계 및 악의적인 소프트웨어 내에서 명령어를 실행하도록 시도하는 단계를 더 포함한다. 방법은 명령어가 콘텍스트에 대한 예외임을 인지하는 단계, 명령어가 실행되는 것을 막는 단계 및 보안 프로세서를 리셋하는 단계를 포함한다.
하나 이상의 실시예에서, 방법은 악의적인 소프트웨어에 대한 콘텍스트 스왑을 수신하는 단계를 포함한다.
하나 이상의 실시예에서, 방법은 악의적인 소프트웨어를 인식하는 단계를 포함한다.
하나 이상의 실시예에서, 악의적인 소프트웨어를 인식하는 단계는 악의적인 소프트웨어의 해시를 생성하는 단계, 해시로부터 계산된 서명을 생성하는 단계, 참조 서명을 검색하는 단계 및 생성된 서명을 참조 서명과 비교하는 단계를 더 포함한다. 계산된 서명 및 참조 서명이 동일하지 않으면, 방법은 명령어가 실행되지 않도록 막는 단계를 더 포함한다.
하나 이상의 실시예에서, 방법은 신뢰 벡터 기술자를 인식하는 단계를 포함한다.
하나 이상의 실시예에서, 명령어는 콘텍스트 내의 접근 불가능한 메모리 영역에 저장된다.
하나 이상의 실시예에서, 명령어는 콘텍스트 내의 접근 불가능한 주변 장치 또는 메모리 위치의 접근을 시도한다.
많은 예시적인 측면 및 실시예가 상기 논의 되었으나, 당업자는 이의 특정 수정, 변경, 부가 및 서브-콤비네이션(sub-combination)을 인지할 것이다. 따라서 후술하는 첨부된 청구항 및 아래에 소개된 청구항은 모든 이러한 수정, 변경, 부가 및 서브-콤비네이션을 포함하고 그들의 참된 사상 및 범위 내에 있다고 이해되는 것으로 의도된다.

Claims (20)

  1. 소프트웨어 명령어의 제1 및 제2 부분을 실행하도록 동작하고, 상기 소프트웨어 명령어의 제1 부분과 관련된 제1 콘텍스트 및 상기 소프트웨어 명령어의 제2 부분과 관련된 제2 콘텍스트 간에 교환하도록 하는 요청을 생성하며, 상기 제1 콘텍스트는 동작 환경의 제1 경계를 특정하고, 상기 제2 콘텍스트는 동작 환경의 제2 경계를 특정하며, 상기 제1 경계 및 상기 제2 경계는 상이한 보안 프로세서(104);
    상기 보안 프로세서와 연결되어 통신하며, 상기 요청을 수신하고 상기 제1 콘텍스트 및 콘텍스트 식별자와 관련된 상기 제2 콘텍스트 간의 콘텍스트 교환을 개시하는 제1 이산 회로(106); 및
    상기 보안 프로세서 및 상기 제1 이산 회로와 연결되어 통신하며, 상기 콘텍스트 식별자에 기반하여 상기 보안 프로세서 및 상기 보안 프로세서와 관련된 하나 이상의 자원(120) 간의 접근을 중재하도록 동작하는 제2 이산 회로(108)를 포함하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  2. 제1항에 있어서,
    상기 제2 콘텍스트는 신뢰 벡터 기술자와 관련되고,
    상기 제2 이산 회로는 상기 제1 이산 회로로부터의 명령에 반응하여 상기 신뢰 벡터 기술자를 로드하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  3. 제2항에 있어서,
    상기 제2 이산 회로는 상기 신뢰 벡터 기술자에 기반하여 상기 보안 프로세서 및 상기 하나 이상의 자원 간의 접근을 중재하도록 동작하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  4. 제1항에 있어서,
    상기 제1 이산 회로는 상기 요청에 반응하여 상기 보안 프로세서의 리셋을 개시하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  5. 제1항에 있어서,
    상기 자원은 메모리(126)를 포함하고,
    상기 제2 이산 회로는 상기 보안 프로세서 및 상기 메모리 간의 접근을 중재하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  6. 제1항에 있어서,
    상기 자원은 하나 이상의 주변 장치(408)를 포함하고,
    상기 제2 이산 회로는 상기 보안 프로세서 및 상기 하나 이상의 주변 장치 간의 접근을 중재하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  7. 정적 콘텍스트 내의 제1 소프트웨어 명령어를 실행하도록 동작하는 메인 프로세서(512);
    제2 소프트웨어 명령어의 제1 및 제2 부분을 실행하도록 동작하고, 상기 제2 소프트웨어 명령어의 제1 부분과 관련된 제1 콘텍스트 및 상기 제2 소프트웨어 명령어의 제2 부분과 관련된 제2 콘텍스트 간에 교환하도록 하는 요청을 생성하며, 상기 제1 콘텍스트는 동작 환경의 제1 경계를 특정하고, 상기 제2 콘텍스트는 동작 환경의 제2 경계를 특정하며, 상기 제1 경계 및 상기 제2 경계는 상이한 보안 프로세서(414);
    상기 보안 프로세서와 연결되어 통신하며, 상기 요청을 수신하고 상기 제1 콘텍스트 및 콘텍스트 식별자와 관련된 상기 제2 콘텍스트 간의 콘텍스트 교환을 개시하는 제1 이산 회로(424);
    상기 메인 프로세서 및 상기 보안 프로세서와 연결되어 통신하는 버스(432);
    상기 버스를 통해 상기 메인 프로세서 및 상기 보안 프로세서와 연결되어 통신하는 하나 이상의 자원(406, 408, 434, 436); 및
    상기 버스와 연결되어 통신하며, 상기 콘텍스트 식별자에 기반하여 상기 보안 프로세서 및 상기 메인 프로세서에 의한 상기 하나 이상의 자원으로의 접근을 중재하도록 동작하는 제2 이산 회로(504, 506, 508)를 포함하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  8. 제7항에 있어서,
    상기 제2 콘텍스트는 신뢰 벡터 기술자와 관련되고,
    상기 제2 이산 회로는 상기 제1 이산 회로로부터의 명령에 반응하여 상기 신뢰 벡터 기술자를 로드하되, 상기 제2 이산 회로는 상기 신뢰 벡터 기술자에 기반하여 상기 메인 프로세서 및 상기 보안 프로세서에 의한 상기 하나 이상의 자원으로의 접근을 중재하도록 동작하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  9. 제7항에 있어서,
    상기 제1 이산 회로는 상기 요청에 반응하여 상기 보안 프로세서의 리셋을 개시하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  10. 제7항에 있어서,
    상기 자원은 메모리(406)를 포함하고,
    상기 제2 이산 회로는 상기 메인 프로세서 및 상기 보안 프로세서에 의한 상기 메모리로의 접근을 중재하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  11. 제7항에 있어서,
    상기 자원은 하나 이상의 주변 장치(434)를 포함하고,
    상기 제2 이산 회로는 상기 메인 프로세서 및 상기 보안 프로세서에 의한 상기 하나 이상의 주변 장치로의 접근을 중재하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  12. 제7항에 있어서,
    상기 하나 이상의 주변 장치는 하드 드라이브를 포함하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  13. 소프트웨어 명령어의 제1 및 제2 부분을 실행하도록 동작하고, 상기 소프트웨어 명령어의 제1 부분과 관련된 제1 콘텍스트 및 상기 소프트웨어 명령어의 제2 부분과 관련된 제2 콘텍스트 간에 교환하도록 하는 제1 요청을 생성하며, 상기 제1 콘텍스트는 동작 환경의 제1 경계를 특정하고, 상기 제2 콘텍스트는 동작 환경의 제2 경계를 특정하며, 상기 제1 경계 및 상기 제2 경계는 상이한 제1 보안 프로세서(414);
    상기 소프트웨어 명령어의 제3 및 제4 부분을 실행하도록 동작하고, 상기 소프트웨어 명령어의 제3 부분과 관련된 제3 콘텍스트 및 상기 소프트웨어 명령어의 제4 부분과 관련된 제4 콘텍스트 간에 교환하도록 하는 제2 요청을 생성하는 제2 보안 프로세서(420);
    상기 제1 및 제2 보안 프로세서와 연결되어 통신하며, 상기 제1 요청을 수신하고 상기 제1 콘텍스트 및 제1 콘텍스트 식별자와 관련된 상기 제2 콘텍스트 간의 제1 콘텍스트 교환을 개시하며, 상기 제2 요청을 수신하고 상기 제3 콘텍스트 및 제2 콘텍스트 식별자와 관련된 상기 제4 콘텍스트 간의 제2 콘텍스트 교환을 개시하는, 이산 콘텍스트 관리자 회로(424);
    상기 제1 보안 프로세서 및 상기 이산 콘텍스트 관리자 회로와 연결되어 통신하며, 상기 제1 콘텍스트 식별자에 기반하여 상기 보안 프로세서 및 상기 제1 보안 프로세서와 관련된 하나 이상의 자원(406, 408, 434, 436) 간의 접근을 중재하도록 동작하는 제1 이산 신뢰 벡터 검증기 회로(416); 및
    상기 제2 보안 프로세서 및 상기 이산 콘텍스트 관리자 회로와 연결되어 통신하며, 상기 제2 콘텍스트 식별자에 기반하여 상기 제2 보안 프로세서 및 하나 이상의 자원 간의 접근을 중재하도록 동작하는 제2 이산 신뢰 벡터 검증기 회로(422)를 포함하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  14. 제13항에 있어서,
    상기 제2 콘텍스트는 제1 신뢰 벡터 기술자와 관련되고,
    상기 제1 이산 신뢰 벡터 검증기는 상기 이산 콘텍스트 관리자로부터의 명령에 반응하여 상기 제1 신뢰 벡터 기술자를 로드하되,
    상기 제1 이산 신뢰 벡터 검증기 회로는 상기 제1 신뢰 벡터 기술자에 기반하여 상기 제1 보안 프로세서 및 상기 하나 이상의 자원 간의 접근을 중재하도록 동작하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  15. 제13항에 있어서,
    상기 제1 이산 신뢰 벡터 검증기 회로는 상기 요청에 반응하여 상기 보안 프로세서의 리셋을 개시하는 신호를 생성하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  16. 제13항에 있어서,
    정적 콘텍스트 내의 제2 소프트웨어 명령어를 실행하도록 동작하는 메인 프로세서(428);
    상기 메인 프로세서와 연결되어 동작하며, 신뢰 벡터 기술자를 로드하기 위해 상기 이산 콘텍스트 관리자로부터의 명령을 수신하고 상기 신뢰 벡터 기술자에 기반하여 상기 정적 콘텍스트 내에서 상기 메인 프로세서에 의한 상기 하나 이상의 자원으로의 접근을 중재하는 메인 신뢰 벡터 검증기 회로(430)를 포함하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  17. 제16항에 있어서,
    상기 하나 이상의 자원은 상기 제1 보안 프로세서, 상기 제2 보안 프로세서 및 상기 메인 프로세서에 의해 접근 가능한 메모리(406)를 포함하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  18. 제16항에 있어서,
    상기 하나 이상의 자원은 상기 제1 보안 프로세서, 상기 제2 보안 프로세서 및 상기 메인 프로세서에 의해 접근 가능한 주변 장치(434)를 포함하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  19. 제17항에 있어서,
    상기 제2 소프트웨어 명령어는 상기 정적 콘텍스트에서 실행되는 운영 체제를 포함하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
  20. 제19항에 있어서,
    상기 운영 체제는 텔레비전 수신기와 함께 동작하는 것을 특징으로 하는, 보안 환경에서 프로세서 실행을 제어하기 위한 장치.
KR1020097023525A 2007-05-11 2008-05-08 보안 환경에서 프로세서 실행을 제어하기 위한 장치 KR101058140B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US91758207P 2007-05-11 2007-05-11
US60/917,582 2007-05-11
PCT/US2008/063089 WO2008141100A2 (en) 2007-05-11 2008-05-08 Apparatus for controlling processor execution in a secure environment

Publications (2)

Publication Number Publication Date
KR20090130121A KR20090130121A (ko) 2009-12-17
KR101058140B1 true KR101058140B1 (ko) 2011-08-24

Family

ID=39855296

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097023525A KR101058140B1 (ko) 2007-05-11 2008-05-08 보안 환경에서 프로세서 실행을 제어하기 위한 장치

Country Status (11)

Country Link
US (2) US8613081B2 (ko)
EP (3) EP2624166B1 (ko)
JP (1) JP5007867B2 (ko)
KR (1) KR101058140B1 (ko)
CN (2) CN101681410B (ko)
CA (1) CA2685058C (ko)
HK (1) HK1183954A1 (ko)
IL (1) IL201697A (ko)
MX (1) MX2009012134A (ko)
TW (2) TWI457829B (ko)
WO (1) WO2008141100A2 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4916576B2 (ja) * 2008-03-14 2012-04-11 三菱電機株式会社 マルチオペレーティングシステム(os)起動装置及びマルチos起動プログラム及び記録媒体及びマルチos起動方法
US8839420B2 (en) 2009-05-01 2014-09-16 Adobe Systems Incorporated Validation of function call parameters
US8732830B2 (en) * 2009-05-28 2014-05-20 Adobe Systems Incorporated Scripting engine externalized function execution control
JP5565040B2 (ja) * 2010-03-30 2014-08-06 富士通株式会社 記憶装置、データ処理装置、登録方法、及びコンピュータプログラム
US9037895B2 (en) * 2010-10-13 2015-05-19 The Trustees Of Columbia University In The City Of New York System and methods for silencing hardware backdoors
US8904190B2 (en) * 2010-10-20 2014-12-02 Advanced Micro Devices, Inc. Method and apparatus including architecture for protecting sensitive code and data
WO2013012435A1 (en) 2011-07-18 2013-01-24 Hewlett-Packard Development Company, L.P. Security parameter zeroization
US8418230B1 (en) * 2012-08-28 2013-04-09 Netcomm Wireless Limited Apparatus and method for mobile communications and computing
US9135435B2 (en) * 2013-02-13 2015-09-15 Intel Corporation Binary translator driven program state relocation
US9183399B2 (en) 2013-02-14 2015-11-10 International Business Machines Corporation Instruction set architecture with secure clear instructions for protecting processing unit architected state information
US9298911B2 (en) * 2013-03-15 2016-03-29 Intel Corporation Method, apparatus, system, and computer readable medium for providing apparatus security
DE102013209264A1 (de) * 2013-05-17 2014-11-20 Robert Bosch Gmbh Verfahren zum Betreiben eines Kommunikationsmoduls und Kommunikationsmodul
JP6081300B2 (ja) * 2013-06-18 2017-02-15 株式会社東芝 情報処理装置及びプログラム
GB2520061B (en) * 2013-11-08 2016-02-24 Exacttrak Ltd Data accessibility control
US20150294123A1 (en) * 2014-04-11 2015-10-15 Krimmeni Technologies, Inc. System and method for sharing data securely
US9503443B2 (en) * 2014-09-15 2016-11-22 Ciena Corporation Secure access systems and methods to network elements operating in a network
US20160224098A1 (en) * 2015-01-30 2016-08-04 Alexander Gendler Communicating via a mailbox interface of a processor
US10121013B2 (en) * 2015-05-07 2018-11-06 Samsung Electronics Co., Ltd. XOR-based scrambler/descrambler for SSD communication protocols
WO2017019061A1 (en) * 2015-07-29 2017-02-02 Hewlett Packard Enterprise Development Lp Firewall to determine access to a portion of memory
JP6769999B2 (ja) 2015-08-21 2020-10-14 クリプトグラフィ リサーチ, インコーポレイテッド セキュア計算環境
US10664179B2 (en) * 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
US10125163B2 (en) * 2015-10-23 2018-11-13 Cem Corporation Solid phase peptide synthesis
US9799130B1 (en) * 2015-10-27 2017-10-24 Google Inc. Lossless spatial feature descriptor compression
DE102016009232A1 (de) 2016-07-28 2018-02-01 Giesecke+Devrient Mobile Security Gmbh Integriertes Teilnehmeridentitätsmodul mit Core-OS und Anwendungs-OS
US10452870B2 (en) 2016-12-06 2019-10-22 Dish Technologies Llc Smart card authenticated download
US10484752B2 (en) 2016-12-23 2019-11-19 DISH Technologies L.L.C. Securely paired delivery of activation codes from smart card to host set-top box
US10325077B2 (en) 2016-12-23 2019-06-18 DISH Technologies L.L.C. Strong authentication of client set-top boxes
US10484753B2 (en) 2016-12-23 2019-11-19 DISH Tchnologies L.L.C. Securely paired delivery of activation codes from smart card to remote client set-top box
US10171870B2 (en) * 2016-12-28 2019-01-01 DISH Technologies L.L.C. Forced execution of authenticated code
US10552206B2 (en) 2017-05-23 2020-02-04 Ge Aviation Systems Llc Contextual awareness associated with resources
GB2563881B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Realm execution context masking and saving
WO2019030763A1 (en) * 2017-08-10 2019-02-14 Argus Cyber Security Ltd. SYSTEM AND METHOD FOR DETECTING THE OPERATION OF A COMPONENT CONNECTED TO AN ONBOARD NETWORK
US11238155B2 (en) * 2018-06-28 2022-02-01 Intel Corporation Microarchitectural mechanisms for the prevention of side-channel attacks
JP7210238B2 (ja) * 2018-11-15 2023-01-23 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及び、プログラム
US11218316B2 (en) * 2018-12-05 2022-01-04 Ares Technologies, Inc. Secure computing hardware apparatus
FR3106685B1 (fr) * 2020-01-23 2022-05-06 Renault Sas Procédé et système de sécurisation des notifications audio d’un calculateur de véhicule
US11403403B2 (en) 2020-04-13 2022-08-02 KameleonSec Ltd. Secure processing engine for securing a computing system
WO2021211091A1 (en) * 2020-04-13 2021-10-21 KameleonSec Ltd. Secure processing engine for securing a computing system
DE102020120656A1 (de) 2020-08-05 2022-02-10 Dr. Ing. H.C. F. Porsche Aktiengesellschaft Vorrichtung und Verfahren zur Authentifizierung in einem Steuergerät

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040003277A1 (en) * 2002-06-27 2004-01-01 Thorwald Rabeler Security processor with bus configuration
WO2004107181A1 (en) 2003-05-27 2004-12-09 Koninklijke Philips Electronics N.V. Access protected bus system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05298119A (ja) * 1992-04-17 1993-11-12 Mitsubishi Electric Corp マイクロプロセッサのコンテキストスイッチ機構
FR2765361B1 (fr) * 1997-06-26 2001-09-21 Bull Cp8 Microprocesseur ou microcalculateur imprevisible
DK1141804T3 (da) 1999-01-07 2004-03-29 Remedan Aps Kontrolanordning til en computer, anvendelse af en kontrolanordning, computer omfattende en kontrolanordning, samt fremgangsmåde til ind- og udkobling af enheder i en computer
WO2000042564A2 (en) * 1999-01-12 2000-07-20 Microsoft Corporation Filtering image data to obtain samples mapped to pixel sub-components of a display device
US6832376B1 (en) * 1999-09-29 2004-12-14 Unisys Corporation Method and apparatus for resuse of a thread for different programmed operations
US6832378B1 (en) * 2000-06-20 2004-12-14 International Business Machines Corporation Parallel software processing system
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
US20030221030A1 (en) * 2002-05-24 2003-11-27 Timothy A. Pontius Access control bus system
GB2402785B (en) 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Processor switching between secure and non-secure modes
US7383587B2 (en) 2002-11-18 2008-06-03 Arm Limited Exception handling control in a secure processing system
EP1563380B1 (en) 2002-11-18 2006-07-19 ARM Limited Virtual to physical memory address mapping within a system having a secure domain and a non-secure domain
US7730318B2 (en) * 2003-10-24 2010-06-01 Microsoft Corporation Integration of high-assurance features into an application through application factoring
US7249381B2 (en) 2004-03-29 2007-07-24 Bryte Computer Technologies, Inc. Controller and resource management system and method with improved security for independently controlling and managing a computer system
EP1603088A1 (fr) * 2004-06-03 2005-12-07 Nagracard S.A. Composant pour module de sécurité
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
EP1619572A1 (en) 2004-07-23 2006-01-25 Texas Instruments Incorporated System and method of identifying and preventing security violations within a computing system
US7502928B2 (en) * 2004-11-12 2009-03-10 Sony Computer Entertainment Inc. Methods and apparatus for secure data processing and transmission
CN100440893C (zh) * 2006-02-28 2008-12-03 北京航空航天大学 实现分布式访问控制与通信安全的系统与方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040003277A1 (en) * 2002-06-27 2004-01-01 Thorwald Rabeler Security processor with bus configuration
WO2004107181A1 (en) 2003-05-27 2004-12-09 Koninklijke Philips Electronics N.V. Access protected bus system

Also Published As

Publication number Publication date
EP2164020A2 (en) 2010-03-17
EP2164020B1 (en) 2014-02-26
US9043902B2 (en) 2015-05-26
EP2164020A3 (en) 2012-12-12
TW200901034A (en) 2009-01-01
US20140033297A1 (en) 2014-01-30
TWI457829B (zh) 2014-10-21
CN101681410B (zh) 2013-06-05
EP2156359A2 (en) 2010-02-24
KR20090130121A (ko) 2009-12-17
EP2624166A2 (en) 2013-08-07
CA2685058C (en) 2016-11-08
MX2009012134A (es) 2009-11-25
US20080282345A1 (en) 2008-11-13
WO2008141100A3 (en) 2009-05-22
US8613081B2 (en) 2013-12-17
EP2156359B1 (en) 2014-06-25
IL201697A (en) 2015-08-31
WO2008141100A2 (en) 2008-11-20
CN103294946A (zh) 2013-09-11
JP5007867B2 (ja) 2012-08-22
HK1183954A1 (en) 2014-01-10
TWI536264B (zh) 2016-06-01
CN101681410A (zh) 2010-03-24
TW201506789A (zh) 2015-02-16
CA2685058A1 (en) 2008-11-20
JP2010530563A (ja) 2010-09-09
EP2624166A3 (en) 2013-09-04
IL201697A0 (en) 2010-05-31
EP2624166B1 (en) 2014-12-17
CN103294946B (zh) 2016-12-07

Similar Documents

Publication Publication Date Title
KR101058140B1 (ko) 보안 환경에서 프로세서 실행을 제어하기 위한 장치
US7788487B2 (en) Data processing apparatus
US8190917B2 (en) System and method for securely saving and restoring a context of a secure program loader
US7945789B2 (en) System and method for securely restoring a program context from a shared memory
US7827326B2 (en) Method and apparatus for delegation of secure operating mode access privilege from processor to peripheral
US9183402B2 (en) Protecting secure software in a multi-security-CPU system
US8095802B2 (en) System and method for securely saving a program context to a shared memory
US9483626B2 (en) Multi-security-CPU system
US9171170B2 (en) Data and key separation using a secure central processing unit
US7770046B2 (en) Management of time information within a plurality of execution spaces
US20040162974A1 (en) Method and apparatus for offloaded enhanced boot process

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
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: 20140701

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 9