KR20040068606A - 인증된 코드 방법 및 장치 - Google Patents

인증된 코드 방법 및 장치 Download PDF

Info

Publication number
KR20040068606A
KR20040068606A KR10-2004-7010282A KR20047010282A KR20040068606A KR 20040068606 A KR20040068606 A KR 20040068606A KR 20047010282 A KR20047010282 A KR 20047010282A KR 20040068606 A KR20040068606 A KR 20040068606A
Authority
KR
South Korea
Prior art keywords
module
processor
memory
dedicated memory
key
Prior art date
Application number
KR10-2004-7010282A
Other languages
English (en)
Other versions
KR100668000B1 (ko
Inventor
앤드류 글류
제임스 2세 수톤
로렌스 2세 스미스
데이비드 그로우로크
길버트 네이거
마이클 코즈츠
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 KR20040068606A publication Critical patent/KR20040068606A/ko
Application granted granted Critical
Publication of KR100668000B1 publication Critical patent/KR100668000B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00

Landscapes

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

Abstract

전용 공간에 저장된 AC(authenticated code) 모듈을 로딩, 인증, 및/또는 실행하는 장치 및 방법.

Description

인증된 코드 방법 및 장치{AUTHENTICATED CODE METHOD AND APPARATUS}
컴퓨팅 장치들은 다양한 동작들을 수행하기 위해 펌웨어 및/또는 소프트웨어 코드를 실행한다. 코드는 사용자 어플리케이션들, BIOS 루틴들, 오퍼레이팅 시스템 루틴들 등의 형태일 수 있다. 몇몇 오퍼레이팅 시스템들은 불량 코드(rogue code)에 대한 컴퓨팅 장치의 무결성(integrity)을 유지하기 위해 한정된 보호 방법들을 제공한다. 예를 들면, 관리자는 임의의 미리 승인된 코드를 실행하는 것에 대해 사용자들 또는 사용자들의 그룹들을 제한할 수 있다. 또한, 관리자는 관리자가 코드를 신뢰할 수 있다고 생각할 때까지 신뢰되지 않은 코드를 실행할 수 있는 고립된 환경 또는 샌드박스(sandbox)를 구성할 수 있다. 상기 기술들이 일부 보호 방법을 제공하지만, 그것들은 관리자가 코드의 제공자, 코드의 이력적 성능, 및/또는 소스 코드 그자체의 검토에 기초하여 수동적으로 신뢰할 수 있는 결정을 하도록 요구한다.
신뢰할 수 있는 판정을 하는 자동 메카니즘을 제공하기 위해 다른 메카니즘들도 도입되었다. 예를 들어, 개체(예를 들어 소프트웨어 제조업자)는 코드를 디지털적으로 사인하고 코드의 무결성을 증명하는 X.509 인증서와 같은 인증서를 코드에 제공할 수 있다. 관리자가 문제가 되는 코드를 특별히 분석하지 않고 신뢰되는 개체로부터의 인증서를 제공하는 코드를 사용자가 자동적으로 실행하게 하는 오퍼레이팅 시스템을 관리자는 구성할 수 있다. 상기 기술이 몇몇 환경들에는 충분할 수 있지만, 상기 기술은 인증서를 올바르게 처리하는 오퍼레이팅 시스템의 제어하에서는, 실행하는 오퍼레이팅 시스템 또는 이외의 소프트웨어를 본질적으로 신뢰한다.
그러나, 몇몇 동작들은 이러한 결정을 내리는 오퍼레이팅 시스템을 신뢰할 수 없을 수 있다. 예를 들어, 실행될 코드에 의해 오퍼레이팅 시스템이 신뢰되는지를 컴퓨팅 장치가 판정한다. 이러한 코드를 인증하기 위해 오퍼레이팅 시스템에 의존하는 것은 코드의 목적을 방해할 수 있다. 또한, 실행될 코드는 컴퓨팅 장치의 오퍼레이팅 시스템 이전에 실행되는 시스템 초기화 코드를 포함할 수 있다. 따라서 이러한 코드는 오퍼레이팅 시스템에 의해 인증될 수 없다.
이 출원은 본 출원과 동일한 날짜로 출원된 "Processor Supporting Execution Of An Authenticated Code Instruction"이라는 제목의 출원 번호 __/___,___, 및 "Authenticated Code Module"이라는 제목의 출원 번호 __/___,___와 관련된다.
이하에 설명된 발명은 예로서 도시되고 첨부 도면에 의해 한정되지 않는다. 설명의 간단함 및 명료함을 위해 도면들에 도시된 구성요소들은 반드시 일정한 비율로 그려지지 않는다. 예를 들어, 몇몇 구성요소들의 치수들은 명료함을 위해 다른 구성요소들에 비해 과장될 수 있다. 또한, 적합하다고 생각되는 경우에는, 대응하거나 유사한 구성요소들을 표시하도록 도면들 사이에서 참조 부호들이 반복되었다.
도 1A-1E는 전용 메모리를 갖는 컴퓨팅 장치의 예시적인 실시예들을 도시한 도면.
도 2는 도 1A-1E에 도시된 컴퓨팅 장치에 의해 론칭(launching)될 수 있는 예시적인 AC(authenticated code) 모듈을 도시한 도면.
도 3은 도 1A-1E에 도시된 컴퓨팅 장치의 프로세서에 대한 예시적인 실시예를 도시한 도면.
도 4는 도 2에 도시된 AC 모듈을 론칭하는 예시적인 방법을 나타낸 도면.
도 5는 도 2에 도시된 AC 모듈의 실행을 중단하는 예시적인 방법을 도시한 도면.
도 6은 도 1A-1E에 도시된 컴퓨팅 장치의 또 다른 실시예를 나타낸 도면.
도 7A-7B는 도 2에 도시된 AC 모듈의 실행을 론칭 및 중단하는 예시적인 방법들을 도시한 도면.
도 8은 도 1A-1E에 도시된 컴퓨팅 장치들의 프로세서들을 시뮬레이트, 에뮬레이트, 및/또는 테스트하는 시스템을 도시한 도면.
다음 설명은 신뢰되는 컴퓨팅 환경을 확립 및/또는 유지하는 등의 다양한 동작들에 사용될 수 있는 AC 모듈들의 실행을 론칭 및 중단하는 기술을 설명한다. 이어지는 설명에서는, 본 발명의 보다 완전한 이해를 제공하기 위해, 로직 구현들,연산 코드(opcodes)들, 피연산자(opernad)들을 지정하는 수단, 자원 분할/공유/복제 구현들, 시스템 컴포넌트들의 유형들 및 상호관계들, 및 로직 분할/집적화 선택들과 같은 수많은 특정 세부 사항들이 개시된다. 그러나, 본 기술분야의 당업자들은 본 발명이 이러한 특정한 세부사항들 없이 수행될 수 있음을 이해할 것이다. 다른 예에서는, 발명을 모호하게 하지 않기 위해 제어 구조들, 게이트 레벨 회로들 및 전체 소프트웨어 명령어 시퀀스들은 상세히 도시되지 않았다. 본 기술 분야의 당업자들은 포함되는 설명에 의해, 과도한 실험없이 적절한 기능을 구현할 수 있을 것이다.
명세서에서 "일 실시예", "실시예", "예시적인 실시예" 등에 대한 언급은, 언급되는 실시예가 특별한 특징, 구조, 또는 특성을 포함할 수 있지만, 모든 실시예들이 반드시 특별한 특징, 구조, 또는 특성을 포함해야 하는 것은 아니라는 것을 나타낸다. 또한, 이러한 어구들은 반드시 동일한 실시예들을 언급하는 것은 아니다. 또한, 특별한 특징, 구조, 또는 특성이 한 실시예와 관련하여 설명되는 경우, 명백히 기재되거나 그렇지 않더라도 다른 실시예들과 관련된 이러한 특징, 구조, 또는 특성을 달성하기 위해 특별한 특징, 구조, 또는 특성이 본 기술 분야의 당업자들의 지식 내에 있다.
이하의 설명 및 청구범위에서는, "결합된(coupled)" 및 "접속된(connected)"이라는 용어가 그 파생어와 함께 사용될 수 있다. 이러한 용어들은 서로에 대한 유의어들로서 의도되지 않는다. 오히려, 특정 실시예들에서 "접속된"은 2개 이상의 구성요소들이 서로 직접적인 물리적 또는 전기적 접촉 상태에 있는 것을 나타내도록 사용될 수 있다. "결합된"은 2개 이상의 구성요소들이 서로 직접적인 물리적 또는 전기적 접촉 상태에 있는 것을 의미할 수 있다. 그러나, "결합된"은 2개 이상의 구성요소들이 서로 직접적으로 접촉되지 않고 계속해서 서로 협력하거나 상호작용하는 것을 의미할 수도 있다.
컴퓨팅 장치(100)의 예시적인 실시예들이 도 1A-1E에 도시된다. 컴퓨팅 장치(100)는 프로세서 버스(130)를 통해 칩세트(120)에 결합된 하나 이상의 프로세서들(110)을 포함할 수 있다. 칩세트(120)은 프로세서들(110)을 시스템 메모리(140), 물리적 토큰(150), 전용 메모리(160), 매체 인터페이스(170), 및/또는 컴퓨팅 장치(100)의 기타 I/O 장치들에 결합시키는 하나 이상의 집적 회로 패키지 또는 칩들을 포함할 수 있다.
각 프로세서(110)는 단일 집적 회로, 다수의 집적 회로들, 또는 소프트웨어 루틴들(예를 들어 2진 번역 루틴들)을 갖는 하드웨어로서 구현될 수 있다. 또한, 프로세서들(110)은 캐시 메모리들(112) 및 제어 레지스터들(114)을 포함할 수 있는데, 제어 레지스터들(114)을 통해 일반 캐시 모드에서 또는 캐시-애즈-RAM(cache-as-RAM) 모드에서 동작하도록 캐시 메모리들(112)이 구성될 수 있다. 일반 캐시 모드에서는, 캐시 메모리들(112)이 캐시 히트(cache hit)들에 응답하여 메모리 요청들을 만족시키고, 캐시 미스(cache miss)들에 응답하여 캐시 라인들을 교체하고, 프로세서 버스(130)의 스누프(snoop) 요청들에 응답하여 캐시 라인들을 무효화 또는 교체할 수 있다. 캐시-애즈-RAM 모드에서는, 캐시 메모리들(112)은 캐시 메모리들(112)의 메모리 범위 내에 있는 요청들이 캐시 메모리들에 의해 만족되고 캐시의 라인들이 프로세서 버스(130)의 스누프 요청들에 응답하여 교체되거나 무효화되지 않는 RAM으로서 동작한다.
프로세서들(110)은 예를 들어 대칭 암호화 알고리즘(예를 들어 공지된 DES, 3DES, AES 알고리즘들) 또는 비대칭 암호화 알고리즘(예를 들어, 공지된 RSA 알고리즘)의 키와 같은 키(116)를 더 포함할 수 있다. 프로세서(110)는 AC 모듈(190)을 실행하기 전에 AC 모듈(190)을 인증하기 위해 키(116)를 사용할 수 있다.
프로세서들(110)은 예를 들어 리얼 모드, 보호 모드, 가상 현실 모드, 및 가상 기계 모드(VMX 모드)와 같은 하나 이상의 동작 모드들을 지원할 수 있다. 또한, 프로세서들(110)은 지원된 동작 모드들의 각각에서 하나 이상의 특권 레벨(privileged level) 또는 링(ring)들을 지원할 수 있다. 일반적으로 프로세서(110)의 동작 모드들 및 특권 레벨들은 실행에 이용가능한 명령어들 및 이러한 명령어들의 실행 효과를 정의한다. 특히, 프로세서(110)는 프로세서(110)가 적합한 모드 및/또는 특권 레벨에 있을 때에만 소정의 특권이 있는 명령어들을 실행하도록 허가될 수 있다.
프로세서들(110)은 프로세서 버스(130)의 잠금(locking)을 지원할 수도 있다. 프로세서 버스(130)를 잠근 결과로서, 프로세서(110)는 프로세서 버스(130)의 배타적 소유권을 획득한다. 기타 프로세서들(110) 및 칩세트(120)은 프로세서 버스(130)가 해제(release)될 때까지 프로세서 버스(130)의 소유권을 획득할 수 없다. 예시적인 실시예에서, 프로세서(110)는 기타 프로세서들(110) 및 칩세트(120)에게 LT.PROCESSOR.HOLD 메시지를 제공하는 프로세서 버스(130) 상의 특별한 트랜잭션을 발행할 수 있다. LT.PROCESSOR.HOLD 버스 메시지는, 프로세서(110)가 LT.PROCESSOR.RELEASE 버스 메시지를 통해 프로세서 버스(130)를 해제할 때까지 기타 프로세서들(110) 및 칩세트(120)이 프로세서 버스(130)의 소유권을 획득하는 것을 방지한다.
그러나 프로세서들(110)은 프로세서 버스(130)의 잠금에 대한 대안적 및/또는 추가 방법들을 지원할 수 있다. 예를 들어, 프로세서(110)는 인터 프로세서(Inter-Processor) 인터럽트를 발행하고, 프로세서 버스 잠금 신호를 어서팅(asserting)하고, 프로세서 버스 요청 신호를 어서팅하고, 및/또는 기타 프로세서들(110)의 실행을 정지시킴으로써 잠금 조건을 기타 프로세서들(110) 및/또는 칩세트(120)에 알릴 수 있다. 마찬가지로, 프로세서(110)는 인터-프로세서 인터럽트를 발행하고, 프로세서 버스 잠금 신호를 디어서팅(deasserting)하고, 프로세서 버스 요청 신호를 디어서팅하고, 및/또는 기타 프로세서들(110)의 실행을 재개시킴으로써 프로세서 버스(130)를 해제할 수 있다.
프로세서들(110)은 AC 모듈들(190)의 론칭 및 AC 모듈들(190)의 실행 중단을 더 지원할 수 있다. 예시적인 실시예에서, 프로세서들(110)은 전용 메모리(160)로부터 AC 모듈(190)의 실행을 로딩, 인증, 및 개시하는 ENTERAC 명령어의 실행을 지원한다. 그러나, 프로세서들(110)이 AC 모듈(190)의 실행을 로딩, 인증, 및/또는 개시하는 추가의 또는 상이한 명령어들을 프로세서들(110)이 지원할 수 있다. 이들 다른 명령어들은 AC 모듈들(190)을 론칭하기 위한 변형들일 수 있거나 또는 많은 태스크의 달성을 돕기 위해 AC 모듈들(190)을 론칭하는 기타 동작들에 관한 것일 수 있다. 다른 방법으로 표시되지 않으면, 이들 명령어들의 일부가 예를 들어 신뢰되는 컴퓨팅 환경을 확립하는 등의 또 다른 동작의 부수적 효과로서 AC 모듈(190)을 로딩, 인증, 및 론칭할 수 있다는 사실에도 불구하고 이하에서는 ENTERAC 명령어 및 이들 다른 명령어들을 론치 AC 명령어(launch AC instruction)라고 한다.
예시적인 실시예에서, 프로세서들(110)은 AC 모듈(190)의 실행을 중단하고 포스트-AC를 개시하는 EXITAC 명령어의 실행을 더 지원한다(도 6 참조). 그러나, 프로세서들(110)은 프로세서(110)가 AC 모듈(190)을 중단하고 포스트-AC를 론칭하게 하는 추가적인 또는 상이한 명령어들을 지원할 수 있다. 이들 다른 명령어들은 AC 모듈들(190)을 중단하기 위한 EXITAC 명령어의 변경들일 수 있거나 또는 AC 모듈들(190)이 많은 동작의 일부로서 중단되게 하는 기타 동작들과 일차적으로 관련된 명령어들일 수 있다. 다른 방법으로 표시되지 않으면, 예를 들어 신뢰되는 컴퓨팅 환경을 해체하는 등과 같은 또 다른 동작의 부수적 효과로서 이들 명령어들의 일부가 AC 모듈들(190)을 중단하고 포스트-AC를 론칭할 수 있다는 사실에도 불구하고 이후에는 EXITAC 명령어 및 이들 다른 명령어들을 중단 AC 명령어들(terminate AC instructions)로서 나타낸다.
칩세트(120)은 메모리(140)에 대한 액세스를 제어하기 위한 메모리 콘트롤러(122)를 포함할 수 있다. 또한, 칩세트(120)은 실행 전에 AC 모듈(190)을 인증하기 위해 프로세서(410)가 사용할 수 있는 키(124)를 포함할 수 있다. 프로세서(110)의 키(116)와 마찬가지로, 키(124)는 대칭형 또는 비대칭형 암호화 알고리즘의 키를 포함할 수 있다.
칩세트(120)은 칩세트(120)의 신뢰되는 플랫폼 특징에 관한 상태 정보를 제어 및 제공하기 위해 신뢰되는 플랫폼 레지스터들(126)을 포함할 수도 있다. 예시적인 실시예에서, 칩세트(120)은 신뢰되는 플랫폼 레지스터들(126)을 메모리(140)의 전용 공간(private space)(142) 및/또는 공용 공간(public space)(144)에 맵핑하여 신뢰되는 플랫폼 레지스터들(126)을 프로세서들(110)이 일관된 방식으로 액세스할 수 있게 한다.
예를 들어, 칩세트(120)은 레지스터들(126)의 서브세트를 공용 공간(144)의 판독 전용 위치들로서 맵핑할 수 있고 레지스터들(126)을 전용 공간(142)의 판독/기록 위치들로서 맵핑할 수 있다. 칩세트(120)은 가장 특권이 있는 모드의 프로세서들(110)만이 특권이 있는 판독 및 기록 트랜잭션들로 맵핑된 레지스터들(126)을 액세스할 수 있게 하는 방식으로 전용 공간(142)을 구성할 수 있다. 또한, 칩세트(120)은 모든 특권 모드의 프로세서들(110)이 통상의 판독 및 기록 트랜잭션들로 맵핑된 레지스터들(126)을 액세스할 수 있게 하는 방식으로 공용 공간(144)을 더 구성할 수 있다. 칩세트(120)은 또한 커맨드 레지스터(124)에 기록된 OpenPrivate 커맨드에 응답하여 전용 공간(142)을 개방할 수 있다. 전용 공간(142)을 개방한 결과로서, 프로세서들(110)은 통상의 특권을 갖지 않은 판독 및 기록 트랜잭션들로 공용 공간(144)과 동일하게 전용 공간(142)을 액세스할 수 있다.
컴퓨팅 장치(100)의 물리적 토큰(150)은 무결성 메트릭들을 기록하고 예를들어 암호화 키들과 같은 비밀들을 저장하기 위해 보호된 저장 장치를 포함한다. 물리적 토큰(150)은 프로세서들(110) 및 칩세트(120)으로부터의 요청들에 응답하여 각종 무결성 기능들을 수행할 수 있다. 특히, 물리적 토큰(150)은 신뢰되는 방식으로 무결성 메트릭들을 저장할 수 있고 신뢰되는 방식으로 무결성 메트릭들을 인용할 수 있고, 특정 환경에 대한 암호화 키들과 같은 비밀들을 봉인할 수 있고, 봉인된 환경에 대한 비밀들을 단지 개봉할 수 있다. 이하, "플랫폼 키(platform key)"라는 용어는 특정 하드웨어 및/또는 소프트웨어 환경에 대해 봉인되어 있는 키를 지칭하도록 사용된다. 물리적 토큰(150)은 다수의 상이한 방식들로 구현될 수 있다. 그러나, 예시된 실시예에서, 물리적 토큰(150)은 2001년 7월 31일자 TCPA(Trusted Computing Platform Alliance) 주 사양, 버전 1.1에 상세하게 기재된 TPM(Trusted Platform Module)의 사양과 일치하도록 구현된다.
전용 메모리(160)는 AC 모듈(190)을 실행해야 하는 프로세서 또는 프로세서들(110)이 AC 모듈(190)을 액세스할 수 있게 하고 컴퓨팅 장치(100)의 다른 프로세서들(110) 및 컴포넌트들이 AC 모듈(190)을 변경하거나 AC 모듈(190)의 실행을 방해할 수 없는 방식으로 AC 모듈(190)을 저장할 수 있다. 도 1A에 도시된 바와 같이, 전용 메모리(160)는 론치 AC 명령어를 실행하고 있는 프로세서(110)의 캐시 메모리(112)로 구현될 수 있다. 대안적으로, 전용 메모리(160)는 도 1B에 도시되어 있는 바와 같이 캐시 메모리(112)로부터 분리되어 있는 프로세서(110)의 내부에 있는 메모리 영역으로서 구현될 수 있다. 전용 메모리(160)는 도 1C에 도시된 바와 같이 별도의 전용 버스를 통해 프로세서들(110)에 결합된 별도의 외부 메모리로서구현될 수도 있기 때문에, 관련된 외부 메모리들을 갖는 프로세서들(110)만이 론치 AC 명령어들을 확실하게 실행할 수 있게 한다.
전용 메모리(160)는 또한 시스템 메모리(140)를 통해 구현될 수도 있다. 이러한 실시예에서는, 특정 프로세서(110)로 한정될 수 있고 특정 동작 모드시 특정 프로세서(110)에 의해 단지 액세스될 수 있는 전용 메모리(160)(도 1D 참조)로서 메모리(140)의 소정의 영역들을 칩세트(120) 및/또는 프로세서들(110)이 정의할 수 있다. 본 실시예의 한가지 단점은 프로세서(110)가 칩세트(120)의 메모리 콘트롤러(122)에 의존하여 전용 메모리(160) 및 AC 모듈(190)을 액세스한다는 점이다. 따라서, AC 모듈(190)은 프로세서(110)가 AC 모듈(190)에 대한 액세스를 부정하여 프로세서(110)로 하여금 AC 모듈(190)의 실행을 중지시키지 않고 메모리 콘트롤러(122)를 재구성할 수 없다.
전용 메모리(160)는 도 1E에 도시된 바와 같이 칩세트(120)의 별도의 전용 메모리 콘트롤러(128)에 결합된 별도의 메모리로서 구현될 수도 있다. 이러한 실시예에서는, 전용 메모리 콘트롤러(128)는 전용 메모리(160)에 대한 별도의 인터페이스를 제공할 수 있다. 별도의 전용 메모리 콘트롤러(128)의 결과로서, 프로세서(110)는, 프로세서(110)가 전용 메모리(160) 및 AC 모듈(190)을 액세스할 수 있을 것을 보장하는 방식으로 시스템 메모리(140)용의 메모리 콘트롤러(122)를 재구성할 수 있다. 일반적으로, 별도의 전용 메모리 콘트롤러(128)은 추가의 메모리 및 메모리 콘트롤러를 희생해서 도 1D에 도시된 실시예의 몇몇 단점을 극복한다.
AC 모듈(190)은 임의의 다양한 기계 판독가능한 매체들(180)에 제공될 수 있다. 매체 인터페이스(170)는 기계 판독가능한 매체(180) 및 AC 모듈(190)에 대한 인터페이스를 제공한다. 기계 판독가능한 매체(180)는 기계 인터페이스(170)에 의해 판독용의 정보를 적어도 일시적으로 저장할 수 있는 임의의 매체를 포함할 수 있다. 이것은 다양한 유형의 디스크 및 메모리 저장 장치들과 같은 물리적 저장 매체들 및/또는 (매체로서 배선, 광학 장치 또는 공기를 통한) 신호 전송들을 포함할 수 있다.
도 2를 참조하면, AC 모듈(190)의 예시적인 실시예가 보다 상세하게 도시된다. AC 모듈(190)은 코드(210) 및 데이터(220)를 포함할 수 있다. 코드(210)는 하나 이상의 코드 페이지들(212)을 포함하고 데이터(220)는 하나 이상의 데이터 페이지들(222)을 포함한다. 예시적인 실시예에서의 각 코드 페이지(212) 및 데이터 페이지(222)는 4 킬로바이트 인접하는 메모리 영역에 대응하지만, 코드(210) 및 데이터(220)는 상이한 페이지 사이즈들로 또는 비 페이징 방식(non-paging manner)으로 구현될 수 있다. 코드 페이지들(212)은 하나 이상의 프로세서들(110)에 의해 실행되는 프로세서 명령어들을 포함하며 데이터 페이지들(222)은 하나 이상의 프로세서들(110)에 의해 액세스되는 데이터 및/또는 코드 페이지들(212)의 명령어들을 실행하는 것에 응답하여 하나 이상의 프로세서들(110)에 의해 발생되는 데이터를 저장하기 위한 스크래치 패드(scratch pad)를 포함한다.
AC 모듈(190)은 코드(210) 또는 데이터(220)의 일부일 수 있는 하나 이상의 헤더들(230)을 더 포함할 수 있다. 헤더들(230)은 예를 들어 모듈 저자, 저작권표지, 모듈 버전, 모듈 실행 포인트 위치, 모듈 길이, 인증 방법 등과 같은 AC 모듈(120)에 관한 정보를 제공할 수 있다. AC 모듈(190)은 코드(210), 데이터(220), 및/또는 헤더들(230)의 일부일 수 있는 서명(240)을 더 포함할 수 있다. 서명(240)은 AC 모듈(190)에 관한 정보, 인증 실체, 인증 메시지, 인증 방법, 및/또는 다이제스트값(digest value)을 제공할 수 있다.
AC 모듈(190)은 또한 모듈 마커(module marker)(250)의 단부(end)를 포함할 수 있다. 모듈 마커(250)의 단부는 AC 모듈(190)의 단부를 지정하고 AC 모듈(190)의 길이를 지정하는 것에 대한 대안으로서 사용될 수 있다. 예를 들어, 코드 페이지들(212) 및 데이터 페이지들(222)은 인접하는 방식으로 지정될 수 있고 모듈 마커(250)의 단부는 코드 페이지들(212) 및 데이터 페이지들(222)의 단부를 신호하는 미리 형성된 비트 패턴을 포함할 수 있다. AC 모듈(190)은 다수의 상이한 방식들로 그 길이 및/또는 단부를 지정할 수 있다는 것을 이해해야 한다. 예를 들어, 헤더(230)는 AC 모듈(190)이 포함하는 바이트수 또는 페이지수를 지정할 수 있다. 대안적으로, 론치 AC 및 중단 AC 명령어들은 AC 모듈(190)이 소정 수의 바이트 길이를 갖거나 소정 수의 페이지들을 포함하기를 기대할 수 있다. 또한, 론치 AC 및 중단 AC 명령어들은 AC 모듈(190)의 길이를 지정하는 피연산자들을 포함할 수 있다.
AC 모듈(190)은 물리적 메모리 공간에서 인접하거나 또는 가상 메모리 공간에서 인접하는 메모리(140)의 인접 지역에 존재할 수 있다는 것을 이해해야 한다. 물리적으로 인접하든 가상적으로 인접하든, AC 모듈(190)을 저장하는 메모리(140)의 위치들은 시작 위치에 의해 지정될 수 있고 모듈 마커(250)의 길이 및/또는 단부가 지정될 수 있다. 대안적으로, AC 모듈(190)은 물리적으로 또는 가상적으로도 인접하지 않는 방식으로 메모리(140)에 저장될 수 있다. 예를 들어, AC 모듈(190)은 예를 들어 컴퓨팅 장치(100)가 비인접 방식으로 메모리(140)로부터 AC 모듈(190)을 저장 및 검색할 수 있게 하는 연결된 리스트와 같은 데이터 구조에 저장될 수 있다.
이하에 보다 상세히 설명하는 바와 같이, 예시적인 프로세서들(110)은 AC 모듈(190)을 전용 메모리(160)로 로딩하고 실행 포인트(260)으로부터 AC 모듈(190)의 실행을 개시하는 론치 AC 명령어들을 지원한다. 이러한 론치 AC 명령어에 의해 론칭되는 AC 모듈(190)은 전용 메모리(160)로 로딩되는 경우에 실행 포인트(260)을 론치 AC 명령어의 하나 이상의 피연산자가 지정된 위치에 배치하는 코드(210)를 포함할 수 있다. 대안적으로, 론치 AC 명령어에 의해 프로세서(110)는 AC 모듈(190) 그자체로부터 실행 포인트(260)의 위치를 획득할 수 있다. 예를 들어, 코드(210), 데이터(220), 헤더(230), 및/또는 서명(240)은 실행 포인트(260)의 위치를 지정하는 하나 이상의 필드들을 포함할 수 있다.
이하에 보다 상세히 설명하는 바와 같이, 예시적인 프로세서들(110)은 실행 전에 AC 모듈(190)을 인증하는 론치 AC 명령어들을 지원한다. 따라서, AC 모듈(190)은 프로세서들(110)에 의한 인증성(authenticity) 판정들을 지원하는 정보를 포함할 수 있다. 예를 들어, 서명(240)은 다이제스트값(242)을 포함할 수 있다. 다이제스트값(242)은 AC 모듈(190)이 해싱 알고리즘(예를 들어 SHA-1 또는MD5) 또는 몇몇 다른 알고리즘을 거침으로써 발생될 수 있다. 서명(240)은 또한 암호화 알고리즘(예를 들어, DES, 3DES, AES, 및/또는 RSA 알고리즘들)을 통해 다이제스트값(242)의 변경을 방지하도록 암호화될 수 있다. 예시적인 실시예에서, 서명(240)은 프로세서 키(116), 칩세트 키(120), 및/또는 플랫폼 키(152)의 공개 키에 대응하는 전용 키로 RSA 암호화된다.
AC 모듈(190)은 기타 메카니즘들을 통해 인증될 수 있음을 이해해야 한다. 예를 들어, AC 모듈(190)은 상이한 해싱 알고리즘들 또는 상이한 암호화 알고리즘들을 이용할 수 있다. 또한, AC 모듈(190)은 어떤 알고리즘들이 사용되었는지를 나타내는 코드(210), 데이터(220), 헤더들(230), 및/또는 서명(240)의 정보를 포함할 수 있다. AC 모듈(190)은 또한 프로세서 키(116), 칩세트 키(124), 또는 플랫폼 키(152)의 대칭 또는 비대칭 키를 통해 암호해제를 위한 전체 AC 모듈(190)을 암호화함으로써 보호될 수 있다.
프로세서(110)의 예시적인 실시예는 도 3에서 보다 상세히 설명된다. 도시된 바와 같이, 프로세서(110)는 프런트엔드(302), 레지스터 파일(306), 하나 이상의 실행 유닛들(370), 및 폐기(retirement) 유닛 또는 백엔드(380)를 포함할 수 있다. 프런트엔드(302)는 프로세서 버스 인터페이스(304), 명령어 및 명령어 지시자 레지스터들(instruction pointer registers)(314, 316)을 갖는 페칭 유닛(fetching unit)(330), 디코더(340), 명령어 큐(350), 및 하나 이상의 캐시 메모리들(360)을 포함한다. 레지스터 파일(306)은 범용 레지스터들(312), 상태/제어 레지스터들(318), 및 기타 레지스터들(320)을 포함한다. 페칭 유닛(330)은 프로세서 버스 인터페이스(304) 또는 캐시 메모리들(360)을 통해 메모리(140)로부터 명령어 지시자 레지스터들(316)에 의해 지정된 명령어들을 페치하고 페치된 명령어들을 명령어 레지스터들(314)에 저장한다.
명령어 레지스터(314)는 하나 이상의 명령어를 포함할 수 있다. 따라서, 디코더(340)는 명령어 레지스터들(314)의 명령어들을 식별하고 식별된 명령어들을 실행에 적합한 형태로 명령어 큐(350)에 배치한다. 예를 들어 디코더(340)는 각 식별된 명령어에 대한 하나 이상의 마이크로 동작들(uops)을 발생하여 명령어 큐(350)에 저장할 수 있다. 대안적으로, 디코더(340)는 각 식별된 명령어들에 대한 단일 매크로 동작(Mop)을 발생하여 명령어 큐(350)에 저장할 수 있다. 다르게 표시되지 않는다면 이제 용어 ops는 uops 및 Mops 모두를 지칭하도록 사용된다.
프로세서(110)는 명령어 큐(350)의 ops가 명령한 동작들을 수행하는 하나 이상의 실행 유닛들(370)을 더 포함한다. 예를 들어, 실행 유닛들(370)은 해싱 유닛들, 암호해독 유닛들, 및/또는 AC 모듈(190)을 인증하기 위해 사용될 수 있는 인증 동작들을 구현하는 마이크로코드 유닛들(microcode units)을 포함할 수 있다. 실행 유닛들(370)은 명령어 큐(350)에 저장된 ops의 실행을 순서대로(in-order) 수행할 수 있다. 그러나, 예시적인 실시예에서, 프로세서(110)는 실행유닛에 의한 ops의 무순위의(out-of-order) 실행을 지원한다. 이러한 실시예에서, 프로세서(110)는 명령어 큐(350)로부터 ops를 순서대로 제거하고 ops 실행 결과들을 하나 이상의 레지스터들(312, 314, 316, 318, 320)에 넘겨 적절한 순서화된 결과들을 보장하는 폐기 유닛(380)을 더 포함할 수 있다.
디코더(340)는 식별된 론치 AC 명령어에 대한 하나 이상의 ops를 발생할 수 있고 실행 유닛들(370)은 관련 ops를 실행하는 것에 응답하여 AC 모듈(190)의 실행을 로딩, 인증, 및/또는 개시할 수 있다. 또한, 디코더(340)는 식별된 중단 AC 명령어에 대해 하나 이상의 ops를 발생할 수 있고 실행 유닛들(370)은 AC 모듈(190)의 실행을 중단하고, 컴퓨팅 장치(100)의 보안 특성들을 조정하고, 및/또는 관련 ops를 실행하는 것에 응답하여 포스트-AC의 실행을 개시한다.
특히, 디코더(340)는 론치 AC 명령어에 의존하는 하나 이상의 ops 및 론치 AC 명령어와 관련된 제로 또는 그 이상의 피연산자들을 발생할 수 있다. 각 론치 AC 명령어 및 관련 피연산자들은 AC 모듈(190)을 론칭하기 위한 파라미터들을 지정한다. 예를 들어, 론치 AC 명령어 및/또는 피연산자들은 AC 모듈 위치, AC 모듈 길이, 및/또는 AC 모듈 실행 포인트와 같은 AC 모듈(190)에 관한 파라미터들을 지정할 수 있다. 론치 AC 명령어 및/또는 피연산자들은 예를 들어 전용 메모리 위치, 전용 메모리 길이, 및/또는 전용 메모리 구현과 같은 전용 메모리(160)에 관한 파라미터들을 지정할 수도 있다. 론치 AC 명령어 및/또는 피연산자들은 어떤 인증 알고리즘들, 해싱 알고리즘들, 암호해독 알고리즘들, 및/또는 기타 알고리즘들이 사용되어야 하는지를 지정하는 것과 같은, AC 모듈(190)을 인증하기 위한 파라미터들을 더 지정할 수 있다. 론치 AC 명령어 및/또는 피연산자들은 예를 들어 키 길이, 키 위치, 및/또는 키들과 같은 알고리즘들에 대한 파라미터들을 더 지정할 수 있다. 론치 AC 명령어 및/또는 피연산자들은 예를 들어 마스킹/언마스킹되는 이벤트들 및/또는 갱신될 보안 성능들을 지정하는 것과 같은, AC 모듈 론칭용 컴퓨터시스템(100)을 구성하기 위한 파라미터들을 더 지정할 수 있다.
론치 AC 명령어들 및/또는 피연산자들은 상술된 파라미터들보다 소수의, 부가적인, 및/또는 상이한 파라미터들을 제공할 수 있다. 또한, 론치 AC 명령어들은 제로 또는 그 이상의 명시적인 피연산자들 및/또는 함축적 피연산자들을 포함할 수 있다. 예를 들어, 론치 AC 명령어 그 자체가 이들 피연산자들의 위치를 정의하는 필드들을 포함하지 않음에도 불구하고 론치 AC 명령어는 프로세서 레지스터들 및/또는 메모리 위치들에 의해 함축적으로 지정된 피연산자 값들을 가질 수 있다. 또한, 론치 AC 명령어는 예를 들어 즉시 데이터(immediate data), 레지스터 식별, 절대 어드레스들, 및/또는 상대 어드레스들과 같은 각종 기술들을 통해 피연산자들을 명시적으로 지정할 수 있다.
디코더(340)는 또한 중단 AC 명령어들 및 중단 AC 명령어들과 관련된 제로 또는 그 이상의 피연산자들에 의존하는 하나 이상의 ops를 발생할 수 있다. 각 중단 AC 명령어 및 관련 피연산자들은 AC 모듈(190)의 실행을 중단하기 위한 파라미터들을 지정한다. 예를 들어, 중단 AC 명령어 및/또는 피연산자들은 AC 모듈 위치 및/또는 AC 모듈 길이와 같은 AC 모듈(190)에 관한 파라미터들을 지정할 수 있다. 중단 AC 명령어 및/또는 피연산자들은 또한 예를 들어 전용 메모리 위치, 전용 메모리 길이, 및/또는 전용 구현과 같은 전용 메모리(160)에 관한 파라미터들을 지정할 수 있다. 중단 AC 명령어 및/또는 피연산자들은 예를 들어 론칭 방법 및/또는 포스트-AC 실행 포인트와 같이 포스트-AC를 론칭하는 것에 관한 파라미터들을 지정할 수 있다. 중단 AC 명령어 및/또는 피연산자들은 마스킹/언마스킹되는 이벤트들및/또는 갱신될 보안 성능들을 지정하는 것과 같은 포스트-AC 실행을 위한 컴퓨터 시스템(100)을 구성하기 위해 파라미터들을 더 지정할 수 있다.
중단 AC 명령어들 및/또는 피연산자들은 상술된 파라미터들 보다 적은, 부가적이고 및/또는 상이한 파라미터들을 제공할 수 있다. 또한, 중단 AC 명령어들은 론치 AC 명령어들에 관하여 상술된 바와 같은 방식으로 제로 또는 그 이상의 명시적인 피연산자들 및/또는 함축적 피연산자들을 포함할 수 있다.
도 4를 참조하면, AC 모듈(190)을 론칭하는 방법(400)이 도시된다. 특히, 방법(400)은 인증 피연산자, 모듈 피연산자, 및 길이 피연산자를 갖는 예시적인 ENTERAC 명령어를 실행하는 것에 응답하는 프로세서(110)의 동작들을 도시한다. 그러나, 본 기술 분야의 당업자는 과도한 실험 없이, 보다 적은, 부가적인, 및/또는 상이한 피연산자들을 갖는 기타 론치 AC 명령어들을 구현할 수 있어야 한다.
블록 404에서, 프로세서(110)는 AC 모듈(190)의 실행을 개시하는데 환경이 적절한지를 판정한다. 예를 들어, 프로세서(110)는 프로세서의 현재 특권 레벨, 동작 모드, 및/또는 어드레싱 모드가 적절한지를 검증할 수 있다. 또한, 프로세서가 다수의 하드웨어 스레드들을 지원하면, 프로세서는 모든 다른 스레드들이 정지했는지를 검증할 수 있다. 프로세서(110)는 칩세트(120)이 소정의 요건들을 만족시키는지를 더 검증할 수 있다. ENTERAC 명령어의 예시적인 실시예에서, 프로세서(110)가 보호된 플랫 모드의 동작 상태인지, 프로세서의 현재 특권 레벨이 0인지, 프로세서(110)가 모든 다른 실행 스레드들을 정지시켰는지, 및 칩세트(120)이 하나 이상의 레지스터들(126)에 의해 표시된 바와 같이 신뢰되는 플랫폼 성능들을 제공하는지를 판정하는 것에 응답하여 환경이 적절한지를 프로세서(110)가 판정한다. 론치 AC 명령어들의 기타 실시예들은 적절한 환경들을 다르게 정의할 수 있다. 다른 론치 AC 명령어들 및/또는 관련 피연산자들은 프로세서(110)가 소수의, 부가적인, 및/또는 상이한 환경의 파라미터들을 검증하도록 하는 환경 요건들을 지정할 수 있다.
환경이 AC 모듈(190)을 론칭하는데 부적합하다고 판정한 것에 응답하여, 프로세서(110)는 적절한 에러 코드로 ENTERAC 명령어를 중단할 수 있다(블록 408). 대안적으로, 프로세서(110)는 또한 몇몇의 보다 신뢰되는 소프트웨어 레이어를 트랩하여 ENTERAC 명령어의 에뮬레이션을 허용한다.
그렇지 않으면, 블록 414에서 프로세서(110)는 AC 모듈(190)의 론칭을 지원하기 위해 이벤트 프로세싱을 갱신할 수 있다. ENTERAC 명령어의 예시적인 실시예에서, 프로세서(110)는 INTR, NMI, SMI, INIT, 및 A20M 이벤트들의 프로세싱을 마스킹한다. 다른 론치 AC 명령어들 및/또는 관련 피연산자들은 보다 적은, 부가적인, 및/또는 상이한 이벤트들의 마스킹을 지정할 수 있다. 또한, 다른 론치 AC 명령어들 및/또는 관련 피연산자들은 마스킹되는 이벤트들 및 마스킹되지 않는 이벤트들을 명시적으로 지정할 수 있다. 대안적으로, 기타 실시예들은 컴퓨팅 장치(100)로 하여금 예를 들어 이와 같은 이벤트들에 응답하여 AC 모듈(190)의 이벤트 핸들러들과 같은 신뢰되는 코드를 실행하게 함으로써 이벤트들의 마스킹을 회피할 수 있다.
블록 416에서 프로세서(110)는 프로세서 버스(130)를 잠금으로써 이외의 프로세서들(110) 및 칩세트(120)이 AC 모듈(190)의 론치 및 실행 동안 프로세서 버스(130)의 소유권을 획득하지 못하게 할 수 있다. ENTERAC 명령어의 예시적인 실시예에서, 프로세서(110)는 다른 프로세서들(110) 및 칩세트(120)에 LT.PROCESSOR.HOLD 버스 메시지를 제공하는 특별한 트랜잭션을 발생함으로써 프로세서 버스(130)의 배타적인 소유권을 획득한다. 론치 AC 명령어들 및/또는 관련 피연산자들의 다른 실시예들은 프로세서 버스(130)가 잠금해제되도록 지정할 수 있거나 또는 프로세서 버스(130)를 잠그는 상이한 방식을 지정할 수 있다.
블록 420에서 프로세서(110)는 AC 모듈(190)을 수신하기 위한 전용 메모리(160)를 구성할 수 있다. 프로세서(110)는 전용 메모리(160)의 콘텐츠를 소거할 수 있고 전용 메모리(160)와 관련된 제어 구조들을 구성하여 프로세서(110)가 전용 메모리(160)를 액세스할 수 있도록 한다. ENTERAC 명령어의 예시적인 실시예에서는, 프로세서(110)가 하나 이상의 제어 레지스터들을 갱신하여 캐시 메모리(112)를 캐시-애즈-RAM 모드로 전환하고 캐시 메모리(112)의 콘텐츠를 무효화한다.
기타 론치 AC 명령어들 및/또는 관련 피연산자들은 전용 메모리(160)의 상이한 구현들을 위해 전용 메모리 파라미터들을 지정할 수 있다. (예를 들어, 도 1A-1E를 참조). 따라서, 프로세서(110)는 이들 다른 론치 AC 명령어들을 실행할 때 AC 모듈(190)에 대한 전용 메모리(160)를 준비하기 위해 상이한 동작들을 수행할 수 있다. 예를 들어, 프로세서(110)는 전용 메모리(160)와 관련된 메모리 콘트롤러(예를 들어 도 1E의 PM 콘트롤러(128))를 인에이블/구성할 수 있다.프로세서(110)는 또한 전용 메모리(160)에 소거, 리셋, 및/또는 무효화 신호를 제공하여 전용 메모리(160)를 소거할 수 있다. 대안적으로, 프로세서(110)는 제로들 또는 몇몇 다른 비트 패턴들을 전용 메모리(160)에 기입하고, 전용 메모리(160)로부터 파워를 제거하고, 및/또는 몇몇 다른 메카니즘을 이용하여 론치 AC 명령어 및/또는 피연산자들에 의해 지정된 전용 메모리(160)를 소거할 수 있다.
블록 424에서, 프로세서(110)는 AC 모듈(190)을 전용 메모리(160)로 로딩한다. ENTERAC 명령어의 예시적인 실시예에서, 길이 피연산자에 의해 지정되는 많은 바이트들이 그의 캐시 메모리(112)로 전송될 때까지 어드레스 피연산자에 의해 지정되는 메모리(140)의 위치로부터 프로세서(110)는 판독을 시작한다. 론치 AC 명령어들 및/또는 관련 피연산자들의 다른 실시예들은 AC 모듈(190)을 전용 메모리(160)로 다른 방식으로 로딩하기 위한 파라미터들을 지정할 수 있다. 예를 들어, 다른 론치 AC 명령어들 및/또는 관련 피연산자들은 AC 모듈(190)의 위치, 전용 메모리(160)의 위치(여기서, AC 모듈(190)은 전용 메모리(160)으로 로딩된다), 및/또는 AC 모듈(190)의 단부를 수많은 다양한 방식으로 지정할 수 있다.
블록 428에서, 프로세서(110)는 또한 전용 메모리(160)를 잠글 수 있다. ENTERAC 명령어의 예시적인 실시예에서, 프로세서(110)는 그 캐시 메모리(112)를 잠그기 위하여 하나 이상의 제어 레지스터들을 갱신하여 프로세서들이나 I/O 장치들로부터의 스누프(snoop) 요청들과 같은 외부 이벤트들이 AC 모듈(190)의 저장된 라인들을 변경시키는 것을 막는다. 그러나, 다른 론치 AC 명령어들 및/또는 관련 피연산자들이 프로세서(110)에 대한 다른 동작들을 지정할 수 있을 것이다. 예를들어, 프로세서(110)는 전용 메모리(160)와 관련된 메모리 콘트롤러(예컨대, 도 1E의 PM 콘트롤러)를, 다른 프로세서들(110) 및/또는 칩세트(120)들이 전용 메모리(160)로 액세스하는 것을 막도록 구성될 수 있다. 일부 실시예들에서, 전용 메모리(160)는 이미 충분히 잠겨, 프로세서(110)는 블록 428에서 어떠한 액션도 취하지 않을 수 있다.
블록 432에서 프로세서는 ENTERAC 명령어의 보호 피연산자에 의해 지정된 보호 메카니즘에 기초하여 전용 메모리(160)에 저장된 AC 모듈(190)이 인증된 것인지를 판정한다. ENTERAC 명령어의 예시적인 실시예에서, 프로세서(110)은 보호 피연산자에 의해 지정된 프로세서 키(116), 칩세트 키(124), 및/또는 플랫폼 키(152)를 검색한다. 프로세서(110)는 그 다음 검색된 키를 사용하여 AC 모듈(190)의 서명을 RSA 암호해독하여 다이제스트값(242)을 얻는다. 프로세서(110)는 또한 SHA-1 해시를 이용하여 AC 모듈(190)을 해싱하여 계산된 다이제스트값을 얻는다. 프로세서(110)는 그 다음 예측된 관계를 갖는(예컨대, 서로 동일) 계산된 다이제스트값과 다이제스트값(242)에 응답하여 AC 모듈(190)이 인증된 것인지를 판정한다. 그렇지 않으면, 프로세서(110)는 AC 모듈(190)이 인증되지 않았다고 판정한다.
다른 론치 AC 명령어들 및/또는 관련 피연산자들이 상이한 인증 파라미터들을 지정할 수 있다. 예를 들어, 다른 론치 AC 명령어 및/또는 관련 피연산자들은 상이한 인증 방법, 상이한 암호해독 알고리즘, 및/또는 상이한 해싱 알고리즘을 지정할 수 있다. 다른 론치 AC 명령어 및/또는 관련 피연산자들은 상이한 키 길이들, 상이한 키 위치들, 및/또는 AC 모듈(190)을 인증하기 위한 키들을 더 지정할수 있다.
AC 모듈(190)이 인증된 것이 아니라는 판정에 응답하여, 블록 436의 프로세서(110)는 에러 코드를 생성하고 론치 AC 명령어의 실행을 중단한다. 그렇지 않으면, 블록 440의 프로세서(110)는 컴퓨팅 장치(100)의 보안 특성들을 갱신하여 AC 모듈(190)의 실행을 지원할 수 있다. ENTERAC 명령어의 예시적인 실시예에서, 블록 440의 프로세서(110)는 OpenPrivate 커맨드를 칩세트(120)의 커맨드 레지스터(126)에 기록하여 프로세서(110)가 통상의 권한없는 판독 및 기록 트랜잭션들로 전용 공간(142)을 통해 레지스터들(126)에 액세스할 수 있도록 한다.
다른 론치 AC 명령어들 및/또는 관련 피연산자들은 AC 모듈 실행을 위해 컴퓨팅 장치(100)를 구성하기 위한 다른 동작들을 지정할 수 있다. 예를 들어, 론치 AC 명령어 및/또는 관련 피연산자들은 현 상태에서 프로세서(110)가 전용 공간(142)를 떠나는지를 지정할 수 있다. 론치 AC 명령어 및/또는 관련 피연산자들은 또한 프로세서(110)가 보호된 메모리 영역들, 보호된 저장 장치들, 보호된 저장 장치 파티션들, 보호된 저장 장치 파일들 등과 같은 일부 컴퓨팅 자원들에 대한 액세스를 인에이블 및/또는 디스에이블하는지를 지정할 수 있다.
컴퓨팅 장치(100)의 보안 특성들을 갱신한 후, 블록(444)의 프로세서(110)는 AC 모듈(190)의 실행을 개시할 수 있다. ENTERAC 명령어의 예시적인 실시예에서, 프로세서(110)는 모듈 피연산자에 의해 제공된 물리적 어드레스로 그의 명령어 지시자 레지스터(316)을 로드하여 프로세서(110)가 이 물리적 어드레스로 점프하고 이 물리적 어드레스에 의해 지정된 실행 포인트(260)로부터 AC 모듈(190)을 실행하는 결과를 낳는다. 다른 론치 AC 명령어들 및/또는 관련 피연산자들은 많은 다른 방식들로 실행 포인트(260)의 위치를 지정할 수 있다. 예를 들어, 론치 AC 명령어 및/또는 관련 피연산자들은 프로세서(110)가 AC 모듈(190) 자체로부터 실행 포인트(260)의 위치를 얻게 할 수 있다.
이제 도 5를 참조하면, AC 모듈(190)을 중단하는 방법(500)이 도시되어 있다. 특히, 이 방법(500)은 보호 피연산자, 이벤트 피연산자, 및 론치 피연산자를 갖는 예시적인 EXITAC 명령어의 실행에 응답하여 프로세서(110)의 동작들을 기술한다. 그러나, 본 기술분야의 당업자라면 보다 적고, 추가적인, 및/또는 상이한 피연산자들을 갖는 다른 중단 AC 명령어들을 과도한 실험없이 실시할 수 있어야 한다.
블록 504에서, 프로세서(110)는 전용 메모리(160)를 소거 및/또는 재구성하여 전용 메모리(160)에 저장된 AC 모듈(190)에 추가로 액세스하는 것을 막을 수 있다. EXITAC 명령어의 예시적인 실시예에서, 프로세서(110)는 그의 캐시 메모리(112)를 무효화시키고 제어 레지스터들을 갱신하여 캐시 메모리(112)를 정상적인 캐시 동작 모드로 전환한다.
중단 AC 명령어 및/또는 관련 피연산자는 전용 메모리(160)의 상이한 구현들에 대한 전용 메모리 파라미터들을 지정할 수 있다(예컨대, 도 1A-1E 참조). 따라서, 중단 AC 명령어 및/또는 관련 피연산자는 포스트-AC 실행을 위해 컴퓨팅 장치(100)를 준비하기 위해 프로세서(110)가 상이한 동작들을 수행하게 한다. 예를 들어, 프로세서(110)는 전용 메모리(160)과 관련된 메모리 콘트롤러(예컨대, 도1E의 PM 콘트롤러(128))를 디스에이블시켜 AC 모듈(190)로의 더이상의 액세스를 막을 수 있다. 프로세서(110)는 또한 전용 메모리(160)를 소거하기 위해 소거, 리셋, 및/또는 무효화 신호를 전용 메모리(160)에 제공할 수 있다. 다르게는, 프로세서(110)는 전용 메모리(160)에 제로들이나 소정의 기타의 비트 패턴을 기록하거나, 전용 메모리(160)로부터 전력을 제거하거나, 및/또는 중단 AC 명령어 및/또는 관련 피연산자에 의해 지정된 바와 같이 전용 메모리(160)를 소거하기 위한 일부 다른 메카니즘들을 이용할 수 있다.
블록 506의 프로세서(110)는 보호 피연산자에 기초하여 컴퓨팅 장치(100)의 보안 특성들을 갱신하여 포스트-AC 실행을 지원할 수 있다. EXITAC 명령어의 예시적인 실시예에서, 보호 피연산자는 프로세서(110)가 전용 공간(142)을 닫는지 혹은 현 상태에서 전용 공간(142)을 떠나는지를 지정한다. 현 상태에서 전용 공간(142)을 떠난다는 판정에 대한 응답으로, 프로세서(110)는 블록 510으로 진행한다. 그렇지 않으면, 프로세서(110)는 ClosePrivate 커맨드를 커맨드 레지스터(126)에 기록함으로써 전용 공간을 닫아 프로세서(110)가 전용 공간(142)에 대한 특권이 없는 보통의 판독 및 기록 트랜잭션들을 통해 레지스터들(126)에 더 액세스하는 것을 막는다.
다른 실시예의 중단 AC 명령어 및/또는 관련 피연산자들은 프로세서(110)가 컴퓨팅 장치(100)의 다른 보안 특성들을 갱신하여 AC 모듈(190) 후 코드의 실행을 지원하도록 할 수 있다. 예를 들어, 중단 AC 명령어 및/또는 관련 피연산자들은 프로세서(110)가 보호된 메모리 영역들, 보호된 저장 장치들, 보호된 저장 장치 파티션들, 보호된 저장 장치 파일들 등과 같은 소정의 컴퓨팅 자원들에 대한 액세스를 인에이블 및/또는 디스에이블하는지를 지정할 수 있다.
블록 510의 프로세서(110)는 프로세서 버스(130)를 잠금해제(unlock)하여 다른 프로세서들(110)과 칩세트(120)가 프로세서 버스(130)의 소유권을 획득하도록 할 수 있다. EXITAC 명령어의 예시적인 실시예에서, 프로세서(110)는 다른 프로세서들(110)과 칩세트(120)에 LT.PROCESSOR.RELEASE 버스 메세지를 제공하는 특수 트랜잭션을 발생시킴으로써 프로세서 버스(130)의 배타적인 소유권을 해제한다. 중단 AC 명령어들 및/또는 관련 피연산자들의 다른 실시예들은 프로세서 버스(130)를 잠금 상태로 유지시키도록 지정하거나 프로세서 버스(130)를 잠금해제하는 다른 방식을 지정할 수 있다.
블록 514의 프로세서(110)는 마스크 피연산자에 기초하여 이벤트 프로세싱을 갱신할 수 있다. EXITAC 명령어의 예시적인 실시예에서, 마스크 피연산자는 프로세서(110)가 이벤트 프로세싱을 인에이블하게 하거나 이벤트 프로세싱을 현 상태로 두는지를 지정한다. 이벤트 프로세싱을 현 상태로 두기로 한 결정에 응답하여, 프로세서(110)는 블록 516으로 진행한다. 그렇지 않으면 프로세서(110)는 INTR, NMI, SMI, INIT, 및 A20M 이벤트들을 언마스크(unmask)하여 이러한 이벤트들의 프로세싱을 인에이블하게 한다. 다른 중단 AC 명령어들 및/또는 관련 피연산자들은 보다 적고, 추가적이고, 및/또는 상이한 이벤트들의 언마스킹을 지정할 수 있다. 또한, 다른 중단 AC 명령어들 및/또는 관련 피연산자들은 마스크되는 이벤트들 및 언마스크되는 이벤트들을 명백히 지정할 수 있다.
블록 516의 프로세서는 AC 모듈(190)의 실행을 중단하고 론치 피연산자에 의해 지정된 포스트-AC를 론칭한다. EXITAC 명령어의 예시적인 실시예에서, 프로세서(110)는 론치 피연산자에 의해 지정된 세그먼트 오프셋 및 코드 세그먼트를 갖는 그의 코드 세그먼트 레지스터 및 명령어 지시자 레지스터를 갱신한다. 그 결과, 프로세서(110)는 이 코드 세그먼트 및 세그먼트 오프셋에 의해 지정된 포스트-AC의 실행 포인트로 점프하고 실행을 시작한다.
다른 중단 AC 모듈들 및/또는 관련 피연산자들은 많은 다른 방식들로 포스트-AC의 실행 포인트를 지정할 수 있다. 예를 들어, 론치 AC 명령어는 포스트-AC의 실행 포인트를 식별하기 위해 프로세서(110)가 현재의 명령어 지시자를 세이브(save)시킬 수 있다. 이러한 실시예에서, 중단 AC 명령어는 론치 AC 명령어에 의해 세이브된 실행 포인트를 검색하고 이 검색된 실행 포인트로부터 포스트-AC의 실행을 개시할 수 있다. 이러한 방식으로, 중단 AC 명령어는 론치 AC 명령어 이후의 명령어로 실행을 반환한다. 또한, 이러한 실시예에서, AC 모듈(190)은 함수 호출 또는 시스템 호출처럼, 인보킹 코드(invoking code)에 의해 호출된 것으로 보인다.
컴퓨팅 장치(100)의 다른 실시예가 도 6에 도시된다. 컴퓨팅 장치(100)는 프로세서(110), 프로세서(110) 액세스를 메모리 공간(640)에 제공하는 메모리 인터페이스(620), 및 프로세서(110) 액세스를 매체(180)에 제공하는 매체 인터페이스(170)를 포함한다. 메모리 공간(640)은 프로세서(110)가 예컨대, 펌웨어, 시스템 메모리(140), 전용 메모리(160), 하드 디스크 저장장치, 네트워크 저장장치 등과 같은 코드를 실행할 수 있는 다수의 기계 판독가능한 매체에 걸쳐있는 어드레스 공간을 포함한다(도 1A-1E 참조). 메모리 공간(640)은 프리-AC(642), AC 모듈(190), 및 포스트-AC(646)를 포함한다. 프리-AC(642)는 오퍼레이팅 시스템 코드, 시스템 라이브러리 코드, 공유 라이브러리 코드, 애플리케이션 코드, 펌웨어 루틴들, BIOS 루틴들 및/또는 AC 모듈(190)의 실행을 론칭시킬 수 있는 다른 루틴들을 포함할 수 있다. 포스트-AC(646)는 유사하게, 오퍼레이팅 시스템 코드, 시스템 라이브러리 코드, 공유 라이브러리 코드, 애플리케이션 코드, 펌웨어 루틴들, BIOS 루틴들 및/또는 AC 모듈(190) 후에 실행될 수 있는 다른 루틴들을 포함할 수 있다. 프리-AC(642)와 포스트-AC(646)는 동일한 소프트웨어 및/또는 펌웨어 모듈 또는 상이한 소프트웨어 및/또는 펌웨어 모듈이 될 수 있다.
AC 모듈을 론칭하고 중단시키는 예시적인 실시예가 도 7A에 도시된다. 블록 704에서, 컴퓨팅 장치(100)는 프리-AC(642)의 실행에 응답하여 AC 모듈(190)을 메모리 공간(640)으로 저장한다. 예시적인 실시예에서, 컴퓨팅 장치(100)는 매체 인터페이스(170)를 통해 기계 판독가능한 매체(180)로부터 AC 모듈(190)을 검색하고 메모리 공간(640)으로 AC 모듈(190)을 저장한다. 예를 들어, 컴퓨팅 장치(100)는 펌웨어, 하드 드라이브, 시스템 메모리, 네트워크 저장장치, 파일 서버, 웹 서버 등으로부터 AC 모듈(190)을 검색하고 검색된 AC 모듈(190)을 컴퓨팅 장치(100)의 시스템 메모리(140)로 저장할 수 있다.
블록 708의 컴퓨팅 장치(100)는 프리-AC(642)의 실행에 응답하여 AC 모듈(190)을 로딩하고 인증하며 실행을 론칭한다. 예를 들어, 프리-AC(642)는ENTERAC 명령어, 또는 컴퓨팅 장치(100)가 AC 모듈(190)을 메모리 공간(640)의 전용 메모리(160)으로 전송하고, AC 모듈(190)을 인증하고, 그 실행 포인트로부터 AC 모듈(190)의 실행을 인보크하도록 하는 다른 론치 AC 명령어를 포함할 수 있다. 그와 달리, 프리-AC(642)는 컴퓨팅 장치(100)가 AC 모듈(190)을 메모리 공간(640)의 전용 메모리(160)으로 전송하고, AC 모듈(190)을 인증하고, 그 실행 포인트로부터 AC 모듈(190)의 실행을 인보크하도록 하는 일련의 명령어들을 포함할 수 있다.
블록 712에서, 컴퓨팅 장치(100)는 AC 모듈(190)의 코드(210)를 실행한다(도 2 참조). 블록 716의 컴퓨팅 장치(100)는 AC 모듈(190)의 실행을 중단하고 메모리 공간(640)의 포스트-AC(646)의 실행을 개시한다. 예를 들어, AC 모듈(190)은 EXITAC 명령어 또는 컴퓨팅 장치(100)가 AC 모듈(190)의 실행을 중단시키도록 하고, 컴퓨팅 장치(100)의 보안 특성들을 갱신하고, 포스트-AC(646)의 실행 포인트로부터 포스트-AC(646)의 실행을 개시하도록 하는 다른 중단 AC 명령어를 포함할 수 있다. 그와 달리, AC 모듈(190)은 컴퓨팅 장치(100)가 AC 모듈(190)의 실행을 중단하고 포스트-AC(646)의 실행 포인트로부터 포스트-AC(646)의 실행을 개시하도록 하는 일련의 명령어들을 포함할 수 있다.
도 7B에 AC 모듈을 론칭하고 중단시키는 다른 실시예가 도시되어 있다. 블록 740에서, 컴퓨팅 장치(100)는 프리 AC(642)의 실행에 응답하여 AC 모듈(190)을 메모리 공간(640)으로 저장한다. 실시예에서, 컴퓨팅 장치(100)는 매체 인터페이스(170)를 통해 기계 판독가능한 매체(180)로부터 AC 모듈(190)을 검색하고 메모리 공간(640)에 AC 모듈(190)을 저장한다. 예를 들어, 컴퓨팅 장치(100)는 AC모듈(190)을 펌웨어, 하드 드라이브, 시스템 메모리, 네트워크 저장장치, 파일 서버, 웹 서버 등으로부터 검색하고 이 검색된 AC 모듈(190)을 컴퓨팅 장치(100)의 시스템 메모리(140)으로 저장한다.
블록 744의 컴퓨팅 장치(100)는 프리-AC(642)의 실행에 응답하여 AC 모듈(190)의 실행을 로딩, 인증, 및 개시한다. 블록 744의 컴퓨팅 장치는 명령어 지시자에 기초한 포스트-AC(646)의 실행 포인트를 또한 세이브한다. 예를 들어, 프리-AC(642)는 ENTERAC 명령어, 또는 컴퓨팅 장치(100)가 AC 모듈(190)을 메모리 공간(640)의 전용 메모리(160)에 전송하고, AC 모듈(190)을 인증하고, 그 실행 포인트로부터 AC 모듈(190)의 실행을 인보크하고, 프로세서(110)가 AC 모듈(190)의 실행 후 론치 AC 명령어 이후의 명령어를 반환할 수 있도록 명령어 지시자를 세이브하도록 하는 다른 론치 AC 명령어를 포함할 수 있다. 대안적으로, 프리-AC(642)는 컴퓨팅 장치(100)가 AC 모듈(190)을 메모리 공간(640)의 전용 메모리(160)로 전송하고, AC 모듈(190)을 인증하고, 그 실행 포인트로부터 AC 모듈(190)의 실행을 인보크하고, 명령어 지시자를 세이브하도록 하는 일련의 명령어들을 포함할 수 있다.
블록 748에서, 컴퓨팅 장치(100)는 AC 모듈(190)의 코드(210)를 실행한다(도 2 참조). 블록 752의 컴퓨팅 장치(100)는 AC 모듈(190)의 실행을 중단하고, 블록 744에서 세이브된 실행 포인트에 기초하여 명령어 지시자를 로딩하고, 블록 744에서 실행된 일련의 명령어들 또는 론치 AC 명령어 이후의 명령어의 실행을 개시한다. 예를 들어, AC 모듈(190)은 EXITAC 명령어, 또는 컴퓨팅 장치가 AC 모듈(190)의 실행을 중단하고, 컴퓨팅 장치(100)의 보안 측면들을 갱신하고, 블록 744에서 세이브된 명령어 지시자에 의해 지정된 포스트-AC(646)의 실행 포인트로부터 포스트-AC(646)의 실행을 개시하도록 하는 다른 중단 AC 명령어를 포함할 수 있다. 그와 달리, AC 모듈(190)은 컴퓨팅 장치(100)가 AC 모듈(190)의 실행을 중단하고, 컴퓨팅 장치(100)의 보안 측면들을 갱신하고, 블록 744에서 세이브된 명령어 지시자에 의해 지정된 포스트-AC(646)의 실행 포인트로부터 포스트-AC(646)의 실행을 개시하도록 하는 일련의 명령어들을 포함할 수 있다.
도 8은 개시된 기술을 이용한 시뮬레이션, 에뮬레이션, 및 설계 제조를 위한 다양한 설계 표현 또는 포맷들을 도시한다. 설계를 나타내는 데이타는 많은 방식으로 설계를 표현한다. 먼저, 시뮬레이션에서 유용한 바와 같이, 하드웨어는 하드웨어 기술 언어 또는 설계된 하드웨어가 어떻게 수행되기를 기대하는지의 컴퓨터화된 모델을 본질적으로 제시하는 다른 기능적 기술 언어를 이용하여 표현될 수 있다. 하드웨어 모델(810)은 컴퓨터 메모리와 같은 저장 매체(800)에 저장되어 특정 테스트 슈트(830)를 하드웨어 모델(810)에 적용하는 시뮬레이션 소프트웨어(820)를 이용하여 모델이 시뮬레이션되어 그것이 의도하는 대로 정말로 기능하는지를 판정한다. 일부 실시예에서, 시뮬레이션 소프트웨어는 매체에 기록, 캡쳐, 또는 포함되지 않는다.
추가적으로, 로직 및/또는 트랜지스터 게이트들을 갖는 회로 수준의 모델이 설계 과정의 일부 단계들에서 생성될 수 있다. 이 모델은 유사하게 시뮬레이션될 수 있는데, 어떤 경우에는 프로그램가능한 로직을 사용하여 모델을 형성하는 전용하드웨어 시뮬레이터에 의해서 시뮬레이션된다. 이러한 유형의 시뮬레이션은 어느 정도 더 나아가면 에뮬레이션 기술이 될 수도 있다. 임의의 경우에, 재구성가능한 하드웨어가 개시된 기술을 채용하는 모델을 저장하는 기계 판독가능한 매체를 포함하는 다른 실시예가 될 수 있다.
또한, 어떤 단계에서 대부분의 설계들은 이 하드웨어 모델의 다양한 장치들의 물리적 위치를 나타내는 데이타의 수준에 도달한다. 종래의 반도체 제조 기술이 사용되는 경우, 하드웨어 모델을 나타내는 데이타는 집적 회로를 생성하는데 사용되는 마스크들의 상이한 마스크 층들 상에 다양한 특성들의 존재 또는 부재를 지정하는 데이타가 될 수 있다. 다시 말해서, 집적 회로를 나타내는 이 데이타는, 이러한 기술들을 수행하기 위하여 데이타 내의 회로 또는 로직이 시뮬레이트되거나 제조될 수 있다는 점에서 개시된 기술들을 구현한다.
임의의 설계 표현에 있어서, 데이타는 컴퓨터 판독가능한 매체의 임의의 형태로 저장될 수 있다. 이러한 정보를 전송하기 위해 변조되거나 달리 생성된 광학적 또는 전기적 파(860), 메모리(850), 또는 디스크와 같은 자기 또는 광학 저장장치(840)가 이 매체가 될 수 있다. 이 설계나 이 설계의 특정 부분을 기술하는 비트들의 세트는 제품으로 그리고 그 자체로 시판되될 수 있는 물품이며 추가의 설계나 제조를 위해 기타의 것들에 의해 사용될 수 있다.
일부 예시적인 실시예들이 기술되고 첨부 도면에 도시되었지만, 이러한 실시예들은 단지 예시적인 것이고 광범위한 발명의 범위에 제한적인 것이 아니며, 본 명세서를 연구하면 본 기술분야에서 통상의 지식을 갖는 자들에게 다양한 기타의변형들이 가능할 것이기 때문에, 본 발명은 도시되고 기술된 특정 구성들 및 장치들에 제한되는 것은 아니라는 것을 이해해야 한다.

Claims (34)

  1. AC 모듈(authenticated code module)을 전용 메모리로 전송하는 단계; 및
    상기 전용 메모리에 저장된 상기 AC 모듈이 인증된 것인지(authentic)를 판정하는 단계에 응답하여 상기 전용 메모리에 저장된 상기 AC 모듈을 실행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 전송하는 단계는 메모리로부터의 피연산자(operand)에 의해 지정된 다수의 바이트들을 전송하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    랜덤 액세스 메모리와 같이 동작하는 프로세서의 캐시 메모리를 구성하는 단계를 더 포함하고,
    상기 전송하는 단계는 상기 캐시 메모리에 상기 AC 모듈을 저장하는 단계를 포함하는 방법.
  4. 제3항에 있어서,
    상기 캐시 메모리에 상기 AC 모듈을 저장하는 단계에 앞서 상기 캐시 메모리를 무효화하는(invalidating) 단계를 더 포함하는 방법.
  5. 제3항에 있어서,
    상기 AC 모듈의 라인들이 교체되는 것을 막기 위해 상기 캐시 메모리를 잠그는(locking) 단계를 더 포함하는 방법.
  6. 제1항에 있어서,
    상기 AC 모듈의 디지탈 서명에 기초하여 상기 AC(authenticated code)가 인증된 것인지 여부를 판정하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 전용 메모리에 저장된 상기 AC 모듈로부터 제1 값을 얻는 단계;
    상기 AC 모듈로부터 제2 값을 계산하는 단계; 및
    소정의 관계를 갖는 상기 제1 값 및 상기 제2 값에 응답하여 상기 AC 모듈이 인증된 것인지를 판정하는 단계
    를 더 포함하는 방법.
  8. 제1항에 있어서,
    키를 검색하는 단계;
    상기 키를 가지고 상기 AC 모듈의 디지탈 서명을 암호해독하여 제1 값을 얻는 단계;
    상기 AC 모듈을 해싱(hashing)하여 제2 값을 얻는 단계;
    소정의 관계를 갖는 상기 제1 값 및 상기 제2 값에 응답하여 상기 AC 모듈을 실행하는 단계
    를 더 포함하는 방법.
  9. 제8항에 있어서,
    상기 암호해독 단계는 상기 키를 이용하여 상기 디지탈 서명을 RSA-암호해독하는 단계를 포함하고,
    상기 해싱 단계는 상기 AC 모듈에 SHA-1 해시를 적용하여 상기 제2 값을 얻는 단계를 포함하는 방법.
  10. 제8항에 있어서,
    상기 키를 프로세서로부터 검색하는 단계를 더 포함하는 방법.
  11. 제8항에 있어서,
    상기 키를 칩세트(chipset)로부터 검색하는 단계를 더 포함하는 방법.
  12. 제8항에 있어서,
    상기 키를 토큰(token)으로부터 검색하는 단계를 더 포함하는 방법.
  13. 제1항에 있어서,
    상기 전송 단계는 기계 판독가능한 매체로부터 상기 AC 모듈을 수신하는 단계를 포함하는 방법.
  14. 칩세트;
    상기 칩세트에 결합된 메모리;
    기계 판독가능한 매체로부터 AC 모듈을 수신하기 위한 기계 판독가능한 매체 인터페이스;
    상기 칩세트에 결합된 전용 메모리; 및
    상기 AC 모듈을 상기 기계 판독가능한 매체 인터페이스로부터 상기 전용 메모리로 전송하고 상기 전용 메모리에 저장된 상기 AC 모듈을 인증하는 프로세서
    를 포함하는 컴퓨팅 장치.
  15. 제14항에 있어서,
    상기 칩세트는 상기 메모리에 결합된 메모리 콘트롤러 및 상기 전용 메모리에 결합된 별개의 전용 메모리 콘트롤러를 포함하는 컴퓨팅 장치.
  16. 제14항에 있어서,
    상기 칩세트는 키를 포함하고,
    상기 프로세서는 상기 칩세트의 상기 키에 기초하여 상기 전용 메모리에 저장된 상기 AC 모듈을 인증하는 컴퓨팅 장치.
  17. 제14항에 있어서,
    상기 프로세서는 키를 포함하고 상기 프로세서의 상기 키에 기초하여 상기 전용 메모리에 저장된 상기 AC 모듈을 인증하는 컴퓨팅 장치.
  18. 제14항에 있어서,
    상기 칩세트에 결합된 토큰을 더 포함하고,
    상기 토큰은 키를 포함하고, 상기 프로세서는 상기 토큰의 상기 키에 기초하여 상기 전용 메모리에 저장된 상기 AC 모듈을 인증하는 컴퓨팅 장치.
  19. 칩세트;
    기계 판독가능한 매체로부터 AC 모듈을 수신하기 위한 기계 판독가능한 매체 인터페이스;
    프로세서 버스를 통해 상기 칩세트에 결합된 프로세서 - 상기 프로세서는 상기 AC 모듈을 상기 기계 판독가능한 매체 인터페이스로부터 상기 프로세서의 전용 메모리로 전송하고 상기 전용 메모리에 저장된 상기 AC 모듈을 인증함 -
    를 포함하는 컴퓨팅 장치.
  20. 제19항에 있어서,
    상기 전용 메모리는 전용 버스를 통해 상기 프로세서에 결합되는 컴퓨팅 장치.
  21. 제19항에 있어서,
    상기 전용 메모리는 상기 프로세서의 내부에 있는 컴퓨팅 장치.
  22. 제19항에 있어서,
    상기 전용 메모리는 상기 프로세서의 내부 캐시 메모리를 포함하는 컴퓨팅 장치.
  23. 제19항에 있어서,
    상기 프로세서 버스를 통해 상기 칩세트에 결합된 다른 프로세서들을 더 포함하고, 상기 프로세서는 상기 다른 프로세서들이 상기 AC 모듈을 변경하는 것을 방지하기 위하여 상기 프로세서 버스를 잠그는 단계를 더 포함하는 컴퓨팅 장치.
  24. 메모리;
    상기 메모리의 일부분을 전용 메모리로서 규정하는 메모리 콘트롤러를 포함하는 칩세트;
    기계 판독가능한 매체로부터 AC 모듈을 수신하는 기계 판독가능한 매체 인터페이스; 및
    상기 AC 모듈을 상기 기계 판독가능한 매체 인터페이스로부터 상기 전용 메모리로 전송하고 상기 전용 메모리에 저장된 상기 AC 모듈을 인증하는 프로세서
    를 포함하는 컴퓨팅 장치.
  25. 제24항에 있어서,
    상기 칩세트는 상기 메모리에 결합된 메모리 콘트롤러 및 상기 전용 메모리에 결합된 별도의 전용 메모리 콘트롤러를 포함하는 컴퓨팅 장치.
  26. 제24항에 있어서,
    상기 칩세트는 키를 포함하고,
    상기 프로세서는 상기 칩세트의 상기 키에 기초하여 상기 전용 메모리에 저장된 상기 AC 모듈을 인증하는 컴퓨팅 장치.
  27. 제24항에 있어서,
    상기 프로세서는 키를 포함하고 상기 프로세서의 상기 키에 기초하여 상기 전용 메모리에 저장된 상기 AC 모듈을 인증하는 컴퓨팅 장치.
  28. 제24항에 있어서,
    키를 포함하는 토큰을 더 포함하고,
    상기 프로세서는 상기 토큰의 상기 키에 기초하여 상기 전용 메모리에 저장된 상기 AC 모듈을 인증하는 컴퓨팅 장치.
  29. 실행에 응답하여 컴퓨팅 장치가,
    프로세서와 관련된 전용 메모리에 AC 모듈을 전송하는 단계; 및
    상기 전용 메모리에 저장된 상기 AC 모듈이 인증된 것인지의 판정에 응답하여 상기 전용 메모리에 저장된 상기 AC 모듈을 실행하는 단계
    를 수행하게 하는 하나 이상의 명령어들을 포함하는 기계 판독가능한 매체.
  30. 제29항에 있어서,
    실행에 응답하여 컴퓨팅 장치가,
    상기 AC 모듈의 디지탈 서명에 기초하여 상기 AC가 인증된 것인지를 판정하는 단계를 수행하게 하는 하나 이상의 명령어들을 포함하는 기계 판독가능한 매체.
  31. 제29항에 있어서,
    실행에 응답하여 컴퓨팅 장치가,
    상기 전용 메모리에 저장된 상기 AC 모듈로부터 제1 값을 얻는 단계;
    상기 AC 모듈로부터 제2 값을 계산하는 단계; 및
    소정의 관계를 갖는 상기 제1 값과 상기 제2 값에 응답하여 상기 AC 모듈이 인증된 것인지를 판정하는 단계
    를 수행하게 하는 하나 이상의 명령어들을 포함하는 기계 판독가능한 매체.
  32. 제29항에 있어서,
    실행에 응답하여 컴퓨팅 장치가,
    비대칭 키를 검색하는 단계;
    상기 비대칭 키로 상기 AC 모듈의 디지탈 서명을 암호해독하여 제1 값을 얻는 단계;
    상기 AC 모듈을 해싱하여 제2 값을 얻는 단계; 및
    소정의 관계를 갖는 상기 제1 값과 상기 제2 값에 응답하여 상기 AC 모듈의 실행을 개시하는 단계
    를 수행하게 하는 하나 이상의 명령어들을 포함하는 기계 판독가능한 매체.
  33. 제29항에 있어서,
    상기 하나 이상의 명령어들은,
    실행되면 컴퓨팅 장치가,
    비대칭 키를 검색하는 단계;
    상기 비대칭 키로 상기 AC 모듈의 디지탈 서명을 암호해독하여 제1 값을 얻는 단계;
    상기 AC 모듈을 해싱하여 제2 값을 얻는 단계; 및
    소정의 관계를 갖는 상기 제1 값과 상기 제2 값에 응답하여 상기 AC 모듈의 실행을 개시하는 단계
    를 수행하게 하는 론치 명령어(launch instruction)를 포함하는 기계 판독가능한 매체.
  34. 제33항에 있어서,
    실행에 응답하여 컴퓨팅 장치가,
    기계 판독가능한 매체 인터페이스를 통해 상기 AC 모듈을 수신하는 단계
    를 수행하게 하는 하나 이상의 명령어들을 포함하는 기계 판독가능한 매체.
KR1020047010282A 2001-12-28 2002-12-20 인증된 코드 방법 및 장치 KR100668000B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/041,071 2001-12-28
US10/041,071 US20030126454A1 (en) 2001-12-28 2001-12-28 Authenticated code method and apparatus
PCT/US2002/041177 WO2003058412A2 (en) 2001-12-28 2002-12-20 Authenticated code method and apparatus

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020067022444A Division KR20060120291A (ko) 2001-12-28 2002-12-20 인증된 코드 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20040068606A true KR20040068606A (ko) 2004-07-31
KR100668000B1 KR100668000B1 (ko) 2007-01-15

Family

ID=21914564

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020047010282A KR100668000B1 (ko) 2001-12-28 2002-12-20 인증된 코드 방법 및 장치
KR1020067022444A KR20060120291A (ko) 2001-12-28 2002-12-20 인증된 코드 방법 및 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020067022444A KR20060120291A (ko) 2001-12-28 2002-12-20 인증된 코드 방법 및 장치

Country Status (8)

Country Link
US (1) US20030126454A1 (ko)
EP (1) EP1502168A2 (ko)
JP (1) JP2006507548A (ko)
KR (2) KR100668000B1 (ko)
CN (1) CN1287248C (ko)
AU (1) AU2002364106A1 (ko)
TW (1) TW200304620A (ko)
WO (1) WO2003058412A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100800346B1 (ko) * 2005-07-12 2008-02-04 인터내셔널 비지네스 머신즈 코포레이션 신뢰 컴퓨팅 플랫폼에서 동적으로 생성된 배서 키에 대한가상 배서 증명서를 확립하는 방법, 장치 및 프로그램을기록한 컴퓨터로 판독 가능한 기록 매체
WO2008127523A1 (en) * 2007-04-13 2008-10-23 Hewlett-Packard Development Company, L.P. Trusted component update system and method

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7194092B1 (en) * 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US7174457B1 (en) * 1999-03-10 2007-02-06 Microsoft Corporation System and method for authenticating an operating system to a central processing unit, providing the CPU/OS with secure storage, and authenticating the CPU/OS to a third party
US6986052B1 (en) 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US7480806B2 (en) * 2002-02-22 2009-01-20 Intel Corporation Multi-token seal and unseal
US7900054B2 (en) * 2002-03-25 2011-03-01 Intel Corporation Security protocols for processor-based systems
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7076669B2 (en) * 2002-04-15 2006-07-11 Intel Corporation Method and apparatus for communicating securely with a token
US7487365B2 (en) * 2002-04-17 2009-02-03 Microsoft Corporation Saving and retrieving data based on symmetric key encryption
US7890771B2 (en) 2002-04-17 2011-02-15 Microsoft Corporation Saving and retrieving data based on public key encryption
US7974416B2 (en) * 2002-11-27 2011-07-05 Intel Corporation Providing a secure execution mode in a pre-boot environment
FR2849226B1 (fr) * 2002-12-20 2005-12-02 Oberthur Card Syst Sa Procede et dispositif de securisation de l'execution d'un programme informatique.
US20050044408A1 (en) * 2003-08-18 2005-02-24 Bajikar Sundeep M. Low pin count docking architecture for a trusted platform
US8079034B2 (en) 2003-09-15 2011-12-13 Intel Corporation Optimizing processor-managed resources based on the behavior of a virtual machine monitor
US7739521B2 (en) 2003-09-18 2010-06-15 Intel Corporation Method of obscuring cryptographic computations
US7681046B1 (en) * 2003-09-26 2010-03-16 Andrew Morgan System with secure cryptographic capabilities using a hardware specific digital secret
US7694151B1 (en) * 2003-11-20 2010-04-06 Johnson Richard C Architecture, system, and method for operating on encrypted and/or hidden information
US8156343B2 (en) 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
US8037314B2 (en) 2003-12-22 2011-10-11 Intel Corporation Replacing blinded authentication authority
US7222062B2 (en) * 2003-12-23 2007-05-22 Intel Corporation Method and system to support a trusted set of operational environments using emulated trusted hardware
US20050198461A1 (en) * 2004-01-12 2005-09-08 Shaw Mark E. Security measures in a partitionable computing system
GB0411654D0 (en) * 2004-05-25 2004-06-30 Hewlett Packard Development Co A generic trusted platform architecture
US7356456B1 (en) * 2004-11-12 2008-04-08 Paravirtual Corporation Computer storage exception handing apparatus and method for virtual hardware system
US8924728B2 (en) 2004-11-30 2014-12-30 Intel Corporation Apparatus and method for establishing a secure session with a device without exposing privacy-sensitive information
CN100489728C (zh) * 2004-12-02 2009-05-20 联想(北京)有限公司 一种建立计算机中可信任运行环境的方法
US20060136608A1 (en) * 2004-12-22 2006-06-22 Gilbert Jeffrey D System and method for control registers accessed via private operations
US8533777B2 (en) 2004-12-29 2013-09-10 Intel Corporation Mechanism to determine trust of out-of-band management agents
US7840845B2 (en) * 2005-02-18 2010-11-23 Intel Corporation Method and system for setting a breakpoint
US20060294380A1 (en) * 2005-06-28 2006-12-28 Selim Aissi Mechanism to evaluate a token enabled computer system
US7644258B2 (en) 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US9176741B2 (en) 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
JP4568196B2 (ja) 2005-09-01 2010-10-27 株式会社東芝 プロセッサ、コンピュータシステムおよび認証方法
US7809957B2 (en) 2005-09-29 2010-10-05 Intel Corporation Trusted platform module for generating sealed data
US8973094B2 (en) * 2006-05-26 2015-03-03 Intel Corporation Execution of a secured environment initialization instruction on a point-to-point interconnect system
JP2008234074A (ja) * 2007-03-16 2008-10-02 Fujitsu Ltd キャッシュ装置
WO2009090505A1 (en) * 2008-01-20 2009-07-23 Nds Limited Secure data utilization
US8117642B2 (en) * 2008-03-21 2012-02-14 Freescale Semiconductor, Inc. Computing device with entry authentication into trusted execution environment and method therefor
US9058491B1 (en) 2009-03-26 2015-06-16 Micron Technology, Inc. Enabling a secure boot from non-volatile memory
US20110167496A1 (en) * 2009-07-07 2011-07-07 Kuity Corp. Enhanced hardware command filter matrix integrated circuit
US9336410B2 (en) * 2009-12-15 2016-05-10 Micron Technology, Inc. Nonvolatile memory internal signature generation
US9202015B2 (en) * 2009-12-31 2015-12-01 Intel Corporation Entering a secured computing environment using multiple authenticated code modules
JP4937365B2 (ja) * 2010-02-22 2012-05-23 株式会社東芝 プロセッサ、コンピュータシステムおよび認証方法
US10402218B2 (en) 2016-08-30 2019-09-03 Intel Corporation Detecting bus locking conditions and avoiding bus locks
CN109582525B (zh) * 2018-10-19 2022-06-03 京信网络系统股份有限公司 测试代码验证方法、验证装置、设备和存储介质
JP2022135443A (ja) * 2021-03-05 2022-09-15 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム

Family Cites Families (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3699532A (en) * 1970-04-21 1972-10-17 Singer Co Multiprogramming control for a data handling system
US3996449A (en) * 1975-08-25 1976-12-07 International Business Machines Corporation Operating system authenticator
US4162536A (en) * 1976-01-02 1979-07-24 Gould Inc., Modicon Div. Digital input/output system and method
US4037214A (en) * 1976-04-30 1977-07-19 International Business Machines Corporation Key register controlled accessing system
US4247905A (en) * 1977-08-26 1981-01-27 Sharp Kabushiki Kaisha Memory clear system
US4278837A (en) * 1977-10-31 1981-07-14 Best Robert M Crypto microprocessor for executing enciphered programs
US4276594A (en) * 1978-01-27 1981-06-30 Gould Inc. Modicon Division Digital computer with multi-processor capability utilizing intelligent composite memory and input/output modules and method for performing the same
US4207609A (en) * 1978-05-08 1980-06-10 International Business Machines Corporation Method and means for path independent device reservation and reconnection in a multi-CPU and shared device access system
JPS5823570B2 (ja) * 1978-11-30 1983-05-16 国産電機株式会社 液面検出装置
JPS5576447A (en) * 1978-12-01 1980-06-09 Fujitsu Ltd Address control system for software simulation
US4307447A (en) * 1979-06-19 1981-12-22 Gould Inc. Programmable controller
US4307214A (en) * 1979-12-12 1981-12-22 Phillips Petroleum Company SC2 activation of supported chromium oxide catalysts
US4319323A (en) * 1980-04-04 1982-03-09 Digital Equipment Corporation Communications device for data processing system
US4419724A (en) * 1980-04-14 1983-12-06 Sperry Corporation Main bus interface package
US4366537A (en) * 1980-05-23 1982-12-28 International Business Machines Corp. Authorization mechanism for transfer of program control or data between different address spaces having different storage protect keys
US4403283A (en) * 1980-07-28 1983-09-06 Ncr Corporation Extended memory system and method
DE3034581A1 (de) * 1980-09-13 1982-04-22 Robert Bosch Gmbh, 7000 Stuttgart Auslesesicherung bei einchip-mikroprozessoren
US4521852A (en) * 1982-06-30 1985-06-04 Texas Instruments Incorporated Data processing device formed on a single semiconductor substrate having secure memory
JPS59111561A (ja) * 1982-12-17 1984-06-27 Hitachi Ltd 複合プロセツサ・システムのアクセス制御方式
US4759064A (en) * 1985-10-07 1988-07-19 Chaum David L Blind unanticipated signature systems
US4975836A (en) * 1984-12-19 1990-12-04 Hitachi, Ltd. Virtual computer system
JPS61206057A (ja) * 1985-03-11 1986-09-12 Hitachi Ltd アドレス変換装置
FR2601525B1 (fr) * 1986-07-11 1988-10-21 Bull Cp8 Dispositif de securite interdisant le fonctionnement d'un ensemble electronique apres une premiere coupure de son alimentation electrique
US5007082A (en) * 1988-08-03 1991-04-09 Kelly Services, Inc. Computer software encryption apparatus
US5079737A (en) * 1988-10-25 1992-01-07 United Technologies Corporation Memory management unit for the MIL-STD 1750 bus
JPH02171934A (ja) * 1988-12-26 1990-07-03 Hitachi Ltd 仮想計算機システム
JPH02208740A (ja) * 1989-02-09 1990-08-20 Fujitsu Ltd 仮想計算機制御方式
JP2590267B2 (ja) * 1989-06-30 1997-03-12 株式会社日立製作所 仮想計算機における表示制御方式
US5022077A (en) * 1989-08-25 1991-06-04 International Business Machines Corp. Apparatus and method for preventing unauthorized access to BIOS in a personal computer system
JP2825550B2 (ja) * 1989-09-21 1998-11-18 株式会社日立製作所 多重仮想空間アドレス制御方法および計算機システム
CA2010591C (en) * 1989-10-20 1999-01-26 Phillip M. Adams Kernels, description tables and device drivers
CA2027799A1 (en) * 1989-11-03 1991-05-04 David A. Miller Method and apparatus for independently resetting processors and cache controllers in multiple processor systems
US5075842A (en) * 1989-12-22 1991-12-24 Intel Corporation Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism
US5108590A (en) * 1990-09-12 1992-04-28 Disanto Dennis Water dispenser
US5230069A (en) * 1990-10-02 1993-07-20 International Business Machines Corporation Apparatus and method for providing private and shared access to host address and data spaces by guest programs in a virtual machine computer system
US5317705A (en) * 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
US5287363A (en) * 1991-07-01 1994-02-15 Disk Technician Corporation System for locating and anticipating data storage media failures
US5437033A (en) * 1990-11-16 1995-07-25 Hitachi, Ltd. System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode
US5255379A (en) * 1990-12-28 1993-10-19 Sun Microsystems, Inc. Method for automatically transitioning from V86 mode to protected mode in a computer system using an Intel 80386 or 80486 processor
US5522075A (en) * 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5319760A (en) * 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
JPH06236284A (ja) * 1991-10-21 1994-08-23 Intel Corp コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム
US5627987A (en) * 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5574936A (en) * 1992-01-02 1996-11-12 Amdahl Corporation Access control mechanism controlling access to and logical purging of access register translation lookaside buffer (ALB) in a computer system
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5237616A (en) * 1992-09-21 1993-08-17 International Business Machines Corporation Secure computer system having privileged and unprivileged memories
US5293424A (en) * 1992-10-14 1994-03-08 Bull Hn Information Systems Inc. Secure memory card
JP2765411B2 (ja) * 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
US5668971A (en) * 1992-12-01 1997-09-16 Compaq Computer Corporation Posted disk read operations performed by signalling a disk read complete to the system prior to completion of data transfer
JPH06187178A (ja) * 1992-12-18 1994-07-08 Hitachi Ltd 仮想計算機システムの入出力割込み制御方法
US5483656A (en) * 1993-01-14 1996-01-09 Apple Computer, Inc. System for managing power consumption of devices coupled to a common bus
US5469557A (en) * 1993-03-05 1995-11-21 Microchip Technology Incorporated Code protection in microcontroller with EEPROM fuses
FR2703800B1 (fr) * 1993-04-06 1995-05-24 Bull Cp8 Procédé de signature d'un fichier informatique, et dispositif pour la mise en Óoeuvre.
JPH06348867A (ja) * 1993-06-04 1994-12-22 Hitachi Ltd マイクロコンピュータ
US5555385A (en) * 1993-10-27 1996-09-10 International Business Machines Corporation Allocation of address spaces within virtual machine compute system
US5825880A (en) * 1994-01-13 1998-10-20 Sudia; Frank W. Multi-step digital signature method and system
US5459869A (en) * 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
US5604805A (en) * 1994-02-28 1997-02-18 Brands; Stefanus A. Privacy-protected transfer of electronic information
US5684881A (en) * 1994-05-23 1997-11-04 Matsushita Electric Industrial Co., Ltd. Sound field and sound image control apparatus and method
US5539828A (en) * 1994-05-31 1996-07-23 Intel Corporation Apparatus and method for providing secured communications
US5473692A (en) * 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
US5978481A (en) * 1994-08-16 1999-11-02 Intel Corporation Modem compatible method and apparatus for encrypting data that is transparent to software applications
JPH0883211A (ja) * 1994-09-12 1996-03-26 Mitsubishi Electric Corp データ処理装置
DE69534757T2 (de) * 1994-09-15 2006-08-31 International Business Machines Corp. System und Verfahren zur sicheren Speicherung und Verteilung von Daten unter Verwendung digitaler Unterschriften
US5606617A (en) * 1994-10-14 1997-02-25 Brands; Stefanus A. Secret-key certificates
US5564040A (en) * 1994-11-08 1996-10-08 International Business Machines Corporation Method and apparatus for providing a server function in a logically partitioned hardware machine
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5555414A (en) * 1994-12-14 1996-09-10 International Business Machines Corporation Multiprocessing system including gating of host I/O and external enablement to guest enablement at polling intervals
US5615263A (en) * 1995-01-06 1997-03-25 Vlsi Technology, Inc. Dual purpose security architecture with protected internal operating system
US5764969A (en) * 1995-02-10 1998-06-09 International Business Machines Corporation Method and system for enhanced management operation utilizing intermixed user level and supervisory level instructions with partial concept synchronization
JPH08305558A (ja) * 1995-04-27 1996-11-22 Casio Comput Co Ltd 暗号化プログラム演算装置
US5717903A (en) * 1995-05-15 1998-02-10 Compaq Computer Corporation Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device
JP3451595B2 (ja) * 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5684948A (en) * 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US5633929A (en) * 1995-09-15 1997-05-27 Rsa Data Security, Inc Cryptographic key escrow system having reduced vulnerability to harvesting attacks
US5737760A (en) * 1995-10-06 1998-04-07 Motorola Inc. Microcontroller with security logic circuit which prevents reading of internal memory by external program
JP3693721B2 (ja) * 1995-11-10 2005-09-07 Necエレクトロニクス株式会社 フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法
US5657445A (en) * 1996-01-26 1997-08-12 Dell Usa, L.P. Apparatus and method for limiting access to mass storage devices in a computer system
US5835594A (en) * 1996-02-09 1998-11-10 Intel Corporation Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
US5809546A (en) * 1996-05-23 1998-09-15 International Business Machines Corporation Method for managing I/O buffers in shared storage by structuring buffer table having entries including storage keys for controlling accesses to the buffers
US5732238A (en) * 1996-06-12 1998-03-24 Storage Computer Corporation Non-volatile cache for providing data integrity in operation with a volatile demand paging cache in a data storage system
US5729760A (en) * 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
US5740178A (en) * 1996-08-29 1998-04-14 Lucent Technologies Inc. Software for controlling a reliable backup memory
US5844986A (en) * 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US5937063A (en) * 1996-09-30 1999-08-10 Intel Corporation Secure boot
US5935242A (en) * 1996-10-28 1999-08-10 Sun Microsystems, Inc. Method and apparatus for initializing a device
JPH10134008A (ja) * 1996-11-05 1998-05-22 Mitsubishi Electric Corp 半導体装置およびコンピュータシステム
US5852717A (en) * 1996-11-20 1998-12-22 Shiva Corporation Performance optimizations for computer networks utilizing HTTP
US5901225A (en) * 1996-12-05 1999-05-04 Advanced Micro Devices, Inc. System and method for performing software patches in embedded systems
US5757919A (en) * 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US5953502A (en) * 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
US6044478A (en) * 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
US6175924B1 (en) * 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US5978475A (en) * 1997-07-18 1999-11-02 Counterpane Internet Security, Inc. Event auditing system
US5919257A (en) * 1997-08-08 1999-07-06 Novell, Inc. Networked workstation intrusion detection system
US5935247A (en) * 1997-09-18 1999-08-10 Geneticware Co., Ltd. Computer system having a genetic code that cannot be directly accessed and a method of maintaining the same
US5970147A (en) * 1997-09-30 1999-10-19 Intel Corporation System and method for configuring and registering a cryptographic device
DE69942712D1 (de) * 1998-05-29 2010-10-14 Texas Instruments Inc Sichere Rechnervorrichtung
NZ509018A (en) * 1998-06-17 2002-06-28 Aristocrat Technologies Au Software verification and authentication
US6401208B2 (en) * 1998-07-17 2002-06-04 Intel Corporation Method for BIOS authentication prior to BIOS execution
US6463535B1 (en) * 1998-10-05 2002-10-08 Intel Corporation System and method for verifying the integrity and authorization of software before execution in a local platform
JP2000148851A (ja) * 1998-11-11 2000-05-30 Oki Electric Ind Co Ltd 電子決済システム
US6571335B1 (en) * 1999-04-01 2003-05-27 Intel Corporation System and method for authentication of off-chip processor firmware code
JP4226760B2 (ja) * 2000-05-08 2009-02-18 株式会社東芝 マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
US7117371B1 (en) * 2000-06-28 2006-10-03 Microsoft Corporation Shared names

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100800346B1 (ko) * 2005-07-12 2008-02-04 인터내셔널 비지네스 머신즈 코포레이션 신뢰 컴퓨팅 플랫폼에서 동적으로 생성된 배서 키에 대한가상 배서 증명서를 확립하는 방법, 장치 및 프로그램을기록한 컴퓨터로 판독 가능한 기록 매체
WO2008127523A1 (en) * 2007-04-13 2008-10-23 Hewlett-Packard Development Company, L.P. Trusted component update system and method
US9053323B2 (en) 2007-04-13 2015-06-09 Hewlett-Packard Development Company, L.P. Trusted component update system and method

Also Published As

Publication number Publication date
WO2003058412A2 (en) 2003-07-17
AU2002364106A1 (en) 2003-07-24
KR20060120291A (ko) 2006-11-24
US20030126454A1 (en) 2003-07-03
CN1608234A (zh) 2005-04-20
KR100668000B1 (ko) 2007-01-15
TW200304620A (en) 2003-10-01
CN1287248C (zh) 2006-11-29
EP1502168A2 (en) 2005-02-02
JP2006507548A (ja) 2006-03-02
WO2003058412A3 (en) 2004-11-18

Similar Documents

Publication Publication Date Title
KR100668000B1 (ko) 인증된 코드 방법 및 장치
US7308576B2 (en) Authenticated code module
US20030126453A1 (en) Processor supporting execution of an authenticated code instruction
US9989043B2 (en) System and method for processor-based security
JP5249399B2 (ja) 安全なメモリ区分を使用した安全な実行のための方法および装置
KR101457355B1 (ko) 보안 애플리케이션 실행을 제공하는 방법 및 장치
KR101237527B1 (ko) 보안 부팅 메커니즘을 포함하는 컴퓨터 시스템
JP4823481B2 (ja) 安全な環境を初期化する命令を実行するシステムおよび方法
US6941458B1 (en) Managing a secure platform using a hierarchical executive architecture in isolated execution mode
US8132254B2 (en) Protecting system control registers in a data processing apparatus
CN108509250A (zh) 具有受保护的访客机验证主机控制的安全公共云
TWI576698B (zh) 跨電源週期維持安全處理環境
US7194634B2 (en) Attestation key memory device and bus
US7013484B1 (en) Managing a secure environment using a chipset in isolated execution mode
JP5410445B2 (ja) オンチップデバイス管理のためのノウングットコード
JP3982687B2 (ja) 分離実行環境での複数の分離メモリへのアクセスの制御
US7013481B1 (en) Attestation key memory device and bus
US6754815B1 (en) Method and system for scrubbing an isolated area of memory after reset of a processor operating in isolated execution mode if a cleanup flag is set
Guan et al. Building a trustworthy execution environment to defeat exploits from both cyber space and physical space for ARM
Evtyushkin et al. Flexible hardware-managed isolated execution: Architecture, software support and applications
US6769058B1 (en) Resetting a processor in an isolated execution environment
Champagne Scalable security architecture for trusted software
Zhao et al. FIMCE: a fully isolated micro-computing environment for multicore systems
Gazidedja HW-SW architectures for security and data protection at the edge
KR20190031136A (ko) 신뢰 도메인들을 사용한 가상화된 시스템들에서의 격리 제공

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
A107 Divisional application of patent
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130104

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140103

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee