KR20050006282A - 보안 실행 모드 하에서 보안 커넬을 사용하는 트러스트된클라이언트 - Google Patents

보안 실행 모드 하에서 보안 커넬을 사용하는 트러스트된클라이언트 Download PDF

Info

Publication number
KR20050006282A
KR20050006282A KR10-2004-7019257A KR20047019257A KR20050006282A KR 20050006282 A KR20050006282 A KR 20050006282A KR 20047019257 A KR20047019257 A KR 20047019257A KR 20050006282 A KR20050006282 A KR 20050006282A
Authority
KR
South Korea
Prior art keywords
security
memory
request
sem
access
Prior art date
Application number
KR10-2004-7019257A
Other languages
English (en)
Other versions
KR100975981B1 (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 KR20050006282A publication Critical patent/KR20050006282A/ko
Application granted granted Critical
Publication of KR100975981B1 publication Critical patent/KR100975981B1/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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

방법 및 상기 방법을 수행하기 위한 시스템(400A-B)이 제공된다. 상기 방법은 비보안 루틴을 실행하는 단계와 상기 비보안 루틴으로부터 요청을 수신하는 단계를 포함한다. 상기 방법은 또한 하드웨어에서 상기 요청의 제 1 평가를 수행하는 단계와 소프트웨어 내의 보안 루틴에서 상기 요청의 제 2 평가를 수행하는 단계를 포함한다. 상기 컴퓨터 시스템(400A-B)은 보안 루틴 및 비보안 루틴을 실행하도록 구성가능한 프로세서(404)를 포함한다. 상기 컴퓨터 시스템(400A-B)은 또한 상기 비보안 루틴에 관련된 요청의 제 1 평가를 수행하도록 연결된 하드웨어를 포함한다. 상기 하드웨어는 상기 요청의 통지를 상기 보안 루틴에 제공하도록 또한 구성된다. 상기 보안 루틴은 상기 요청의 제 2 평가를 수행하도록 구성된다. 상기 보안 루틴은 상기 요청에 요청된 응답을 거절하도록 또한 구성된다.

Description

보안 실행 모드 하에서 보안 커넬을 사용하는 트러스트된 클라이언트{TRUSTED CLIENT UTILIZING SECURITY KERNEL UNDER SECURE EXECUTION MODE}
도 1은 Windows™운영 시스템(마이크로 사, 레드몬드, WA)을 동작하는 경우와 같은 x86 프로세서에 의하여 생산된 예외 스택 프레임(exception stack frame)(100)의 도면이다. 예외 처리기(exception handler)에 엔트리시, 코드 세그먼트(CS:code segment) 레지스터, 명령 포인터(EIP:instruction pointer) 레지스터, 스택 세그먼트(SS:stack segment) 레지스터, 스택 포인터(ESP:stack pointer) 레지스터 및 EFLAGS를 제외하고 상기 예외가 일어나는 애플리케이션(즉, "폴팅 애플리케이션(faulting application)") 프로그램의 모든 레지스터들은 보존된다. 이러한 레지스터들의 컨텐츠는 상기 예외 스택 프레임(100)에서 유효하다.
상기 예외 스택 프레임(100)은 세그먼트된 어드레스(SS:ESP)에서 시작한다. 에러 코드는 세그먼트된 어드레스(SS:ESP + 00h)에서 상기 예외 스택 프레임(100)에 존재한다. 상기 폴팅 애플리케이션의 명령 포인터(EIP) 레지스터의 컨텐츠는 세그먼트된 어드레스(SS:EPS + 04h)에서 상기 예외 스택 프레임(100)에 존재한다. 상기 폴팅 애플리케이션의 상기 코드 세그먼트(CS)의 컨텐츠는 세그먼트된 어드레스(SS:EPS + 08h)에서 상기 예외 스택 프레임(100)에 존재한다. 상기 폴팅 애플리케이션의 플레그(EFLAGS) 레지스터의 컨텐츠는 세그먼트된 어드레스(SS:EPS + 0Ch)에서 상기 예외 스택 프레임(100)에 존재한다. 상기 폴팅 애플리케이션의 스택 포인터(ESP) 레지스터의 컨텐츠는 세그먼트된 어드레스(SS:EPS + 10h)에서 상기 예외 스택 프레임(100)에 존재한다. 상기 폴팅 애플리케이션의 스택 세그먼트(SS) 레지스터의 컨텐츠는 세그먼트된 어드레스(SS:EPS + 14h)에서 상기 예외 스택 프레임(100)에 존재한다. 상기 예외 처리기로 상기 관련된 제어 전송이 특권 레벨의 변화를 포함하는 경우, 상기 ESP 및 SS 값들이 상기 예외 스택 프레임(100)에 나타난다는 점이 주목된다.
상기 폴팅 애플리케이션의 명령 포인터(EIP) 레지스터의 컨텐츠는 세그먼트된 어드레스(SS:EPS + 04h)에서 상기 예외를 발생한 상기 폴팅 애플리케이션 내의 명령을 지시한다. 상기 폴팅 애플리케이션의 스택 포인터(ESP) 레지스터의 컨텐츠는 세그먼트된 어드레스(SS:EPS + 10h)에서 폴트 타임에서 상기 폴팅 애플리케이션의 스택 프레임의 어드레스이다(즉 상기 스택 프레임을 지시한다)
세그먼트 관련 예외들에 대한 에러 코드는 보안된 모드 선택기에 매우 유사하다. 최고 차수의 13비트들(비트 15:3)은 상기 선택기 인덱스이고, 비트 2는 상기 테이블 인덱스이다. 그러나, 요청자 특권 레벨(RPL:requestor privilege level) 대신에, 비트 0 및 1이 하기의 일치점(meeting)을 가지는 바, 비트 0(EXT)은 상기 폴트가 상기 프로그램에 외부인 이벤트에 의하여 기인하는 경우 설정되고, 비트1(IDT)은 상기 선택기 인덱스가 상기 IDT 내의 게이트 기술자(descriptor)를 지칭하는 경우 설정된다.
도 2는 어드밴스드 디바이스 인코포레이티드(Advanced Micro Devices, Inc.)사에서 제조된 x86 프로세서에서 사용되는 SYSCALL/SYSRET 타겟 어드레스 레지스터(STAR)(200)를 도시한다. 상기 SYSCALL/SYSRET 타겟 어드레스 레지스터(STAR)(200)는 "SYSRET CS 선택기 및 SS 선택기 베이스" 필드, "SYSCALL SS 선택기 및 SS 선택기 베이스" 필드, 및 "타겟 EIP 어드레스" 필드를 포함한다.
SYSCALL 명령의 실행에 앞선 임의의 포인트에서, 운영 시스템은 적당한 시스템 서비스 코드의 코드 세그먼트(CS)에 대한 값들을 상기 SYSCALL/SYSRET 타겟 어드레스 레지스터(STAR)(200)의 상기 SYSCALL SS 선택기 및 SS 선택기 베이스 필드에 기입한다. 상기 운영 시스템은 또한 상기 시스템 서비스 코드 이내의 제 1 명령의 어드레스를 상기 SYSCALL/SYSRET 타겟 어드레스 레지스터(STAR)(200)의 타겟 EIP 어드레스 필드 안에서 실행되도록 기입한다. 상기 STAR 레지스터는 시스템 부트에서 구성된다. 상기 타겟 EIP 어드레스는 상기 운영 시스템 커넬 안의 고정된 시스템 서비스를 가리킨다.
SYSCALL 명령의 실행 동안, 상기 SYSCALL SS 선택기 및 SS 선택기 베이스 필드의 컨텐츠가 상기 CS 레지스터 안으로 복사된다. 상기 SYSCALL SS 선택기 및 SS 선택기 베이스 필드의 컨텐츠는 값 '1000b'를 플러스하여 상기 SS 레지스터 안으로 복사된다. 이에 의하여, 결과적인 SS 선택기가 상기 CS 서술자 후에, 서술자 테이블에서 다음의 서술자를 가리키도록 상기 CS 선택기의 인덱스 필드를 효과적으로인크리먼트할 수 있다. 상기 타겟 EIP 어드레스 필드의 컨텐츠는 상기 명령 포인터(EPI) 레지스터 안으로 복사되어, 실행되는 제 1 명령의 어드레스를 명시한다.
상기 SYSCALL 명령에 대응하는 SYSRET 명령의 실행에 앞선 임의의 포인트에서, 상기 운영 시스템은 호출 코드의 코드 세그먼트(CS)에 대한 값들을 상기 SYSCALL/SYSRET 타겟 어드레스 레지스터(STAR)(200)의 상기 SYSCALL SS 선택기 및 SS 선택기 베이스 필드에 기입한다. 상기 SYSRECT 명령은 상기 ECX 레지스터로부터의 반환 EIP 어드레스를 획득한다.
본 발명은 일반적으로 메모리 관리 시스템 및 방법에 관한 것으로, 보다 구체적으로 보안된 컴퓨팅 환경을 제공하는 시스템 및 방법에 관한 것이다.
본 발명은 첨부 도면들과 관련한 다음의 설명을 참조함으로써 이해될 수 있으며, 이 첨부 도면들에서 동일한 참조부호들은 동일한 요소들을 나타낸다.
도 1은 Windows™운영 시스템을 런하는 경우와 같은, x86 프로세서에 의하여 생산되는 예외 스택 프레임의 도면이다.
도 2는 SYSCALL/SYSRET 타겟 어드레스 레지스터의 도면이다.
도 3은 본 발명의 일 양상에 따른 시스템의 일 실시예의 도면이다.
도 4A는 본 발명의 일 양상에 따라서 사용될 수 있는 컴퓨터 시스템의 일 실시예의 블럭도이다.
도 4B는 본 발명의 일 양상에 따라서 상기 CPU에 의해 발생된 비승인된 액세스로부터 디바이스 하드웨어 유닛들을 보호하기 위하여 사용되는 입력/출력(I/O) 보안 체크 유닛을 포함하는 중앙 처리 유닛을 포함하는 컴퓨터 시스템의 일 실시예의 도면이다.
도 4C는 본 발명의 일 양상에 따라서 CPU 보안 체크 유닛(SCU)을 포함하는 CPU 및, 호스트 브리지 SCU를 포함하는 호스트 브리지를 포함하는 시스템의 일 실시예의 도면이다.
도 5A는 본 발명의 일 양상에 따른 컴퓨터 시스템 실시예들의 다양한 하드웨어와 소프트웨어 성분들 사이의 관계들을 예시하는 도면이다.
도 5B는 본 발명의 일 양상에 따른 컴퓨터 시스템 실시예들의 다양한 하드웨어와 소프트웨어 성분들 사이의 관계들을 예시하는 또다른 도면이다.
도 5C는 본 발명의 일 양상에 따른 컴퓨터 시스템 실시예들의 다양한 하드웨어와 소프트웨어 성분들 사이의 관계들을 예시하는 다른 도면이다.
도 6A는 본 발명의 일 양상에 따른 CPU의 일 실시예의 도면이다.
도 6B는 본 발명의 일 양상에 따른 CPU의 일 실시예의 다른 도면이다.
도 6C는 본 발명의 일 양상에 따른 CPU의 일 실시예의 다른 도면이다.
도 7은 본 발명의 일 양상에 따른 CPU SCU를 구비하는 페이징 유닛을 포함하는 MMU의 일 실시예의 도면이다.
도 8A는 본 발명의 일 양상에 따른 I/O SCU의 일 실시예를 예시하는 도면이다.
도 8B는 본 발명의 일 양상에 따른 CPU SCU의 일 실시예를 예시하는 도면이다.
도 9는 본 발명의 일 양상에 따른 보안 실행 모드(SEM:secure execution mode) 예외를 처리하는데 사용되는 보안 모드 SMCALL/SMRET 타겟 어드레스 레지스터(SMSTAR) 및 보안 모드 GS 베이스(SMGSBASE) 레지스터의 실시예의 도면이다.
도 10A는 본 발명의 일 양상에 따른, SEM 예외가 일어나는 경우, 발생되는 SEM 예외 스택 프레임의 일 실시예의 도면이다.
도 10B는 본 발명의 일 양상에 따른, 상기 SEM 예외 스택 프레임의 에러 코드의 예시적인 포맷의 도면이다.
도 11은 본 발명의 일 양상에 따른, 보안 실행 모드 예외를 처리하는 방법의 실시예의 흐름도를 도시한다.
도 12는 본 발명의 다양한 양상에 따른 컴퓨터 시스템에서 보안을 유지하기위한 다양한 실시예들을 통합하는 도면이다.
도 13은 본 발명의 다양한 양상에 따른 선택된 메모리 페이지의 추가적인 보안 정보를 획득하기 위하여 상기 선택된 메모리 페이지의 보안 속성 테이블(SAT : security attribute table) 엔트리에 액세스하는 메카니즘의 일 실시예의 도면이다.
도 14A는 본 발명의 일 양상에 따른 SAT 디폴트 레지스터의 일 실시예의 도면이다.
도 14B는 본 발명의 일 양상에 따른 SAT 디렉토리 엔트리 포맷의 일 실시예의 도면이다.
도 15는 본 발명의 일 양상에 따른 SAT 엔트리 포맷의 일 실시예의 도면이다.
도 16A는 본 발명의 일 양상에 따른 호스트 브리지 SCU를 포함하는 호스트 브리지의 일 실시예의 블럭도이다.
도 16B는 본 발명의 일 양상에 따른 호스트 브리지 SCU를 포함하는 호스트 브리지의 다른 실시예의 블럭도이다.
도 17은 본 발명의 일 양상에 따도 호스트 브리지 SCU의 일 실시예의 블럭도이다.
도 18은 본 발명의 일 양상에 따른 액세스 인증 테이블을 포함하는 호스트 브리지 SCU의 다른 실시예의 블럭도이다.
도 19는 본 발명의 일 양상에 따라서, 도 2에 도시된 처리 유닛의 보다 자세한 블럭도를 도시한다.
도 20은 본 발명의 일 양상에 따라서, 도 19에 도시된 I/O 액세스 인터페이스의 보다 자세한 블럭도를 도시한다.
도 21A 및 도 21B는 본 발명의 일 양상에 따라서, 도 19 및 도 20에 도시된 프로세서에 의하여 수행되는 I/O-스페이스/I/O-메모리 액세스의 블럭도를 도시한다.
도 22는 본 발명의 다양한 양상에 따른, 메모리 내에 저장된 SEM I/O 허가 비트맵의 일 실시예 및 상기 SEM I/O 허가 비트맵에 액세스하기 위한 메카니즘의 일 실시예를 도시하는 도면이다.
도 23은 본 발명의 다양한 양상에 따른, 도 22의 SEM I/O 허가 비트맵의 다른 실시예 및 상기 SEM I/O 허가 비트맵에 액세스하기 위한 메카니즘의 다른 실시예를 도시하는 도면이다.
도 24는 본 발명의 일 양상에 따른 컴퓨터 시스템의 다양한 하드웨어 및 소프트웨어 성분들 사이의 관계를 설명하는 도면으로서, 제 1 디바이스 드라이버 및 대응하는 제 1 디바이스 하드웨어 유닛은 제 1 보안 "구획(compartment)"에 존재하고, 제 2 디바이스 드라이버 및 대응하는 제 2 디바이스 하드웨어 유닛은 상기 제 1 보안 구획으로부터 분리되고 선택적으로 격리된 제 2 보안 구획에 존재한다.
도 25는 본 발명의 일 양상에 따른 강화된 보안을 위한 컴퓨터 시스템 운영 방법의 실시예의 흐름도를 도시한다.
본 발명의 일 양상에 따르면 방법이 제공된다. 상기 방법은 비보안 루틴을 실행하는 단계 및 상기 비보안 루틴으로부터 요청을 수신하는 단계를 포함한다. 상기 방법은 하드웨어에서 상기 요청의 제 1 평가를 수행하는 단계 및, 소프트웨어 내의 보안 루틴에서 상기 요청의 제 2 평가를 수행하는 단계를 또한 포함한다.
본 발명의 다른 양상에 따르면 컴퓨터 시스템이 제공된다. 상기 컴퓨터 시스템은 보안 루틴 및 비보안 루틴을 실행하도록 구성가능한 프로세서를 포함한다. 상기 컴퓨터 시스템은 또한 상기 비보안 루틴에 관련된 요청의 제 1 평가를 수행하도록 연결된 하드웨어를 포함한다. 상기 하드웨어는 상기 요청의 통지를 상기 보안 루틴에 제공하도록 또한 구성된다. 상기 보안 루틴은 상기 요청의 제 2 평가를 수행하도록 구성된다. 상기 보안 루틴은 상기 요청에 요청된 응답을 거절하도록 또한 구성된다.
본 발명은 비록 다양한 수정과 대안적인 형태들이 가능하지만, 본 명세서에서는 발명의 특정한 실시예를 예로써 도면에 도시하였으며, 이에 대해 자세히 설명될 것이다. 그러나 도면 및 이에 대한 상세한 설명은 본 발명을 개시된 특정 예로만 제한하도록 의도된 것은 아니며, 오히려 첨부된 청구항에 의해 정의되는 것처럼 본 발명의 정신 및 범위 내에 드는 모든 변형, 균등물 및 대안들을 포괄하도록 의도된 것이다.
이하, 본 발명의 예시적인 실시예들이 설명된다. 명확성을 위하여, 본원에서는 실제 구현시의 모든 특징들을 다 설명하지는 않는다. 어떠한 실제 실시예의 전개에 있어서, 실행마다 변하게 되는 시스템 관련 및 사업 관련 제약들과의 호환성과 같은 개발자의 특정한 목표들을 달성하기 위해서는 다수의 실시별 특정한 결정들이 이루어져야 한다는 것을 알 수 있을 것이다. 또한, 이러한 개발 노력은 복잡하고 시간 소모적이지만, 그럼에도 불구하고 본원의 개시의 이익을 갖는 당업자에게 있어서는 일상적인 일이라는 것을 알 수 있을 것이다.
도 3에서, 본 발명에 따른 시스템(300)의 일 실시예가 도시된다. 상기 시스템(300)은 처리 유닛(310)과; 키보드(330), 마우스(340), 입력 펜(350)과 같은 다수의 입력/출력 디바이스들과; 그리고 모니터와 같은 디스플레이 유닛(320)을 포함한다. 일 실시예에서, 본 발명에 의하여 개시된 보안 레벨 시스템이 상기 처리 유닛(310) 내에 존재한다. 본 발명의 일 양상에 따라서, 상기 입력/출력 디바이스들(330, 340, 350) 중 하나로부터의 입력에 의하여 상기 처리 유닛(310)내의 운영 시스템을 포함하는 하나 이상의 소프트웨어 구성들의 실행이 개시된다. 상기 시스템(300)에 존재하는 I/O 스페이스 및/또는 I/O 스페이스에 관련된 메모리는 그 후 상기 처리 유닛(310)에 존재하는 다양한 소프트웨어 구성들을 실행하기 위하여 액세스된다. 본 발명의 실시예들은 상기 시스템(300) 안으로 프로그램된 소정의 보안 엔티티에 근거한, 하나 이상의 소프트웨어 구성들에 의하여 개시되는 I/O 스페이스 액세스를 제한할 수 있다.
도 4A는 CPU(402), 시스템 또는 "호스트" 브리지(404), 메모리(406), 제 1 디바이스 버스(408)(예를 들어, 주변 성분 상호연결 또는 PCI 버스), 디바이스 버스 브리지(410), 제 2 디바이스 버스(412)(예를 들어, 산업 포준 아키텍처 또는 ISA 버스) 및 4개의 디바이스 하드웨어 유닛들(414A-414D)을 포함하는 컴퓨터 시스템의 일 실시예를 도시한다. 상기 호스트 브리지(404)는 상기 CPU(402), 상기 메모리(406) 및 상기 제 1 디바이스 버스(408)에 연결된다. 상기 호스트 브리지(404)는 상기 CPU(402)와 상기 제 1 디바이스 버스 사이의 신호들을 변환하고, 상기 메모리(406)를 상기 CPU(402) 및 상기 제 1 디바이스 버스(408)에 연결한다. 상기 디바이스 버스 브리지(410)는 상기 제 1 디바이스 버스(408)와 상기 제 2 디바이스 버스(412) 사이에 연결되어 상기 제 1 디바이스 버스(408)와 상기 제 2 디바이스 버스(412) 사이의 신호들을 변환한다.
도 4A의 실시예에서, 상기 디바이스 하드웨어 유닛들(414A 및 414B)은 상기 제 1 디바이스 버스(408)에 연결되고, 상기 디바이스 하드웨어 유닛들(414C 및 414D)은 상기 제 2 디바이스 버스(412)에 연결된다. 하나 이상의 디바이스 하드웨어 유닛들(414A-414D)은, 예를 들어 저장 디바이스(예를 들어, 하드 디스크 드라이브, 플로피 드라이브, 및 CD-ROM 드라이브들), 통신 디바이스(예를 들어, 모뎀 및 네트워크 어뎁터) 또는 입력/출력 디바이스들(예를 들어, 비디오 디바이스, 오디오 디바이스 및 프린터들)일 수 있다. 다른 실시예에서, 상기 호스트 브리지(404)는 도 4A에 도시된 것과 같은 CPU(402)의 일부일 수 있다는 점이 주목된다.
도 4B의 실시예에서, CPU(404)는 입력/출력(I/O) 보안 체크 유닛(SCU)(415)를 포함한다. 상기 디바이스 하드웨어 유닛들(414C 및 414D)은 상기 CPU(404)의 I/O 스페이스의 다양한 I/O 포트들로 맵핑될 수 있고, 상기 CPU(404)는 대응하는 I/O 포트들을 통하여 상기 디바이스 하드웨어 유닛들(414C 및 414D)과 통신할 수 있다. 이러한 상황에서, 상기 I/O SCU(415)는 상기 CPU(404)에 의하여 발생되는 비인증된 액세스로부터 상기 디바이스 하드웨어 유닛들(414C 및 414D)을 보호하는데 사용된다. 다른 실시예에서, 상기 호스트 브리지(404)는 도 4B에 도시된 것과 같은 상기 CPU(404)의 일부일 수 있다는 점이 주목된다.
도 4C의 실시예에서, CPU(402)는 CPU 보안 체크 유닛(SCU)(416)을 포함하고, 상기 호스트 브리지(404)는 호스트 브리지 SCU(418)를 포함한다. 하기에서 설명할 것과 같이, 상기 CPU SCU(416)는 상기 CPU(402)(예를 들어, "소프트웨어-개시된 액세스들")에 의하여 발생되는 비인증된 액세스로부터 상기 메모리(406)를 보호하고, 상기 호스트 브리지 SCU(418)는 디바이스 하드웨어 유닛들(414A-414D)(예를 들어, "하드웨어-개시된 액세스들")에 의하여 개시된 비인증된 액세스들로부터 메모리(406)를 보호한다.
도 5A는 도 4A 또는 도 4B의 컴퓨터 시스템(400)의 다양한 하드웨어 성분들과 소프트웨어 성분들 사이의 관계를 설명하는 도면이다. 도 5의 실시예에서, 다수의 응용 프로그램들(500), 운영 시스템(502), 보안 커넬(504) 및 디바이스 드라이버들(506A-506D)이 상기 메모리(406)에 저장된다. 상기 응용 프로그램들(500), 운영 시스템(502), 보안 커넬(504) 및 디바이스 드라이버들(506A-506D)은 상기 CPU(402)에 의하여 실행되는 명령들을 포함한다. 상기 운영 시스템(502)은 상기 응용 프로그램(500)이 런되는 상부에 사용자 인터페이스 및 소프트웨어 "플렛폼(platform)"을 동작상 제공한다. 상기 운영 시스템(502)은 파일 시스템 관리, 프로세스 관리 및 입력/출력(I/O) 제어를 포함하는 예를 들어 기본 지원 기능들을 또한 제공한다.
상기 운영 시스템(502)은 기본 보안 기능들을 또한 제공한다. 예를 들어, 상기 CPU(402)는 상기 x86 명령 세트의 명령들을 실행하는 x86 프로세서일 수 있다. 이러한 상황에서, 상기 CPU(402)는 상술한 보안된 모드에서 가상 메모리 및 물리적 메모리 보호 모두를 제공하기 위하여 특수 하드웨어 요소들을 포함할 수 있다. 상기 운영 시스템(502)은, 예를 들어 보안된 모드에서 상기 CPU(402)를 운영하는 윈도우즈(Windows™) 운영 시스템들 중 하나일 수 있고, 보안된 모드에서 가상 메모리 및 물리적 메모리 보호 모두를 제공하기 위하여 상기 CPU(402)의 특수 하드웨어 요소들을 사용할 수 있다. 상기 보안 커넬(504)은 예를 들어 비인증된 액세스로부터 상기 메모리(406)에 저장된 데이터를 보호하기 위하여, 상기 운영 시스템(502)에 의하여 제공되는 보안 기능들 이상의 추가적인 보안 기능들을 제공한다.
도 5A의 실시예에서, 상기 디바이스 드라이버들(506A-506D)은 상기 개별적으로 대응하는 디바이스 소프트웨어 유닛들(414A-414D)에 동작상 관련되고 연결된다. 상기 디바이스 하드웨어 유닛들(414A 및 414D)은, 예를 들어 "보안" 디바이스일 수 있고, 대응하는 디바이스 드라이브들(506A 및 506D)은 "보안" 디바이스 드라이버일 수 있다. 상기 보안 커넬(504)은 상기 운영 시스템(502)과 상기 보안 디바이스 드라이버들(506A 및 506D) 사이에 연결되고, 상기 응용 프로그램들(500) 및 상기 운영 시스템(502)에 의한 모든 액세스들을 모니터하여 상기 디바이스 드라이버들(506A 및 506D) 및 대응하는 보안 디바이스들(414A 및 414D)을 보안한다. 상기 보안 커넬(504)은 상기 응용 프로그램들(500) 및 상기 운영 시스템(502)에 의한 상기 보안 디바이스 드라이버들(506A 및 506D) 및 대응하는 보안 디바이스들(414A 및 414D)로의 비인증된 액세스를 방지할 수 있다. 반면에, 상기 디바이스 드라이버들(506B 및 506C)은 "비-보안" 디바이스 드라이버들일 수 있고, 상기 대응하는 디바이스 하드웨어 유닛들(414B 및 414C)은 "비-보안" 디바이스 하드웨어 유닛들일 수 있다. 상기 디바이스 드라이버들(506B 및 506C) 및 상기 대응하는 디바이스 하드웨어 유닛들(414B 및 414C)은, 예를 들어 "레가시(legacy)" 디바이스 드라이버들 및 디바이스 하드웨어 유닛들일 수 있다.
다른 실시예에서, 상기 보안 커넬(504)은 상기 운영 시스템(502)의 일부일 수 있다는 점이 주목된다. 다른 실시예에서, 상기 보안 커넬(504), 상기 디바이스 드라이버들(506A 및 506D), 및/또는 상기 디바이스 드라이버들(506B 및 506C)은 상기 I/O 포트들에 단지 인증된 액세스들만 허용한다.
도 5B에 도시된 바와 같이, 상기 보안 커넬(504)은 상기 I/O SCU(417)에 연결될 수 있다. 하기에서 상세히 설명할 것과 같이, 상기 I/O SCU(216)은 상기 I/O 어드레스 스페이스에서의 상기 I/O 포트들로의 모든 소프트웨어-개시 액세스들을 모니터하고, 상기 I/O 포트들에 단지 인증된 액세스들만 허용한다.
도 5C에 도시된 바와 같이, 보안 커넬(504)은 (예를 들어, 하나 이상의 디바이스 드라이버들을 통하여) CPU SCU(416) 및 호스트 브리지 SCU(418)에 연결된다. 하기에서 상세히 설명할 것과 같이, 상기 I/O SCU(416) 및 상기 호스트 브리지 SCU(418)는 메모리(406)로의 액세스들을 제어한다. CPU SCU(416)은 메모리(406)로의 모든 소프트웨어-개시된 액세스들을 모니터하고, 호스트 브리지 SCU(418)는 메모리(406)로의 모든 하드웨어-개시된 액세스들을 모니터한다. 보안 커넬(504)에 의하여 일단 구성되면, CPU SCU(416) 및 호스트 브리지 SCU(418)는 메모리(406) 및 I/O 스페이스에 단지 인증된 액세스들만 허용한다. 일 실시예에서, 상기 CPU SCU(416)는 레지스터 스페이스를 보호한다.
도 6A는 도 4A의 컴퓨터 시스템(400A)의 CPU(402)의 일 실시예를 도시한다. 도 6A의 실시예에서, 상기 CPU(402A)는 실행 유닛(600), 메모리 관리 유닛(MMU)(602), 캐시 유닛(604), 버스 인터페이스 유닛(BIU)(606), 일련의 제어 레지스터들(608) 및 일련의 보안 실행 모드(SEM) 레지스터들(610)을 포함한다. 상기 일련의 보안 실행 모드(SEM)(610)는 도 4A의 컴퓨터 시스템(400A) 내에서 보안 실행 모드(SEM)를 구현하는데 사용될 수 있다. 상기 SEM 레지스터들(610)은 상기 보안 커넬(504)에 의하여 액세스된다(즉, 보안 커넬로 기입되고 및/또는 그로부터 판독된다).
도 6A의 실시예에서, 상기 일련의 보안 실행 모드(SEM)(610)는 보안 실행 모드(SEM) 비트(609)를 포함한다. 도 4A의 컴퓨터 시스템(400A)은, (ⅰ) 상기 CPU(402)가 x86 보호된 모드에서 운영되는 x86 프로세서이고, (ⅱ) 메모리 페이징이 인에이블되고, 그리고 (ⅲ) 상기 SEM 비트가 '1'로 설정되는 경우, 예를 들어 상기 보안 실행 모드(SEM)에서 동작한다. SEM에서의 동작을 나타내는 다른 방법 및 SEM의 다른 동작들이 또한 사용될 수 있다.
일반적으로, 상기 일련의 제어 레지스터들(608)의 컨텐츠는 상기 CPU(402)의 동작을 관리(govern)하는데 사용된다. 따라서, 상기 일련의 제어 레지스터들(608)의 컨텐츠는 상기 실행 유닛(600), 상기 MMU(602) 상기 캐시 유닛(604) 및/또는 상기 BIU(606)의 동작을 관리하는데 사용된다. 상기 일련의 제어 레지스터들(608)은, 예를 들어, 상기 x86 프로세서 아키텍처의 다수의 제어 레지스터들을 포함할 수 있다.
상기 CPU(402)의 실행 유닛(600)은 명령들(예를 들어, x86 명령들) 및 데이터를 페치하고, 상기 페치된 명령들을 실행하고, 그리고 명령 실행 동안 신호들(예를 들어, 어드레스, 데이터 및 제어 신호들)을 발생한다. 상기 실행 유닛(600)은 상기 캐시 유닛(604)에 연결되고, 상기 캐시 유닛(604) 및 상기 BIU(606)을 통하여 상기 메모리(406)로부터 명령들을 수신할 수 있다. 상기 실행 유닛(600)은 상기 구현에 따라서, 표준 명령들, 보안 명령들, 및/또는 마이크로코드를 실행할 수 있다는 점이 주목된다. 일 실시예에서, 상기 프로세서(402)에서 실행하는 마이크로코드는 소프트웨어가 아닌 하드웨어이다.
상기 컴퓨터 시스템(400A)의 메모리(406)(예를 들어 도 4A)는 다수의 메모리 위치들을 포함하고, 각 메모리 위치는 유일한 물리적 어드레스를 가진다. 페이징이 인에이블된 보호된 모드에서 동작되는 경우, 상기 CPU(402)의 어드레스 스페이스는 페이지 프레임들 또는 "페이지들"로 불려지는 다수의 블럭들로 분할된다. 다른 실시예에서, 상기 메모리는 상이하게 정의된 메모리 영역들을 통하여 분할 또는 액세스될 수 있다. 전형적으로, 상기 페이지들의 일부분에 대응하는 데이터만이 임의의 소정 시간에서 상기 메모리(406) 내에 저장된다.
도 6A의 실시예에서, 명령 실행 동안 상기 실행 유닛(600)에 의하여 발생되는 어드레스 신호들은 세그먼트된(즉, "논리적") 어드레스들을 나타낸다. 상기 MMU(602)는 상기 실행 유닛(600)에 의하여 발생되는 세그먼트된 어드레스들을 상기 메모리(406)의 대응하는 물리적 어드레스들로 변환한다. 상기 MMU(602)는 상기 캐시 유닛(604)에 상기 물리적 어드레스들을 제공한다. 상기 캐시 유닛(604)은 상기 실행 유닛(600)에 의하여 최근에 페치된 명령들 및 데이터를 저장하는데 사용되는 상대적으로 작은 저장 유닛이다. 상기 BIU(606)는 상기 캐시 유닛(604)과 상기 호스트 브리지(404) 사이에 연결되고, 상기 호스트 브리지(404)를 통하여 상기 캐시 유닛(604)에 나타나지 않는 명령들 및 데이터를 상기 메모리(406)로부터 페치하는데 사용된다. 캐시 유닛(604)의 사용은 선택적이지만, 상기 CPU(402)의 보다 좋은 동작 효율성을 유리하게 제공할 수 있다는 점이 주목된다.
도 4A의 컴퓨터 시스템(400A)이 상기 SEM에서 동작하는 경우, 상기 보안 커넬(505)은 상기 메모리(406)에 하나 이상의 보안 속성 데이터 구조들(예를 들어,테이블들)을 발생하고 유지한다. 각 메모리 페이지는 대응하는 보안 콘텍스트 식별(context identification) 값(SCID)을 가지고, 그리고 상기 대응하는 SCID 값은 상기 보안 속성 데이터 구조들 내에 저장될 수 있다. 상기 MMU(602)는 명령 실행 동안 발생된 어드레스(예를 들어, 물리적 어드레스)를 사용하여, 대응하는 메모리 페이지들의 상기 SCID들을 획득하기 위하여 상기 하나 이상의 보안 속성 데이터 구조에 액세스한다. 일반적으로, 상기 컴퓨터 시스템(400A)은 n개의 상이한 SCID 값들을 가지고, 여기서 n은 정수이고, n≥1이다.
도 4A의 컴퓨터 시스템(400A)이 상기 SEM에서 동작하는 경우, 보안 메카니즘들을 위반하는 소프트웨어에 의한 다양한 동작들이 SEM 보안 예외를 야기할 것이다. 상기 SEM 보안 예외들은 x86 "SYSENTER" 및 "SYSEXIT" 명령들이 동작하는 방식과 유사한 쌍의 레지스터들(예를 들어, 모델 특정 레지스터들 또는 MSR들)을 통하여 디스패치될 수 있다. 상기 쌍의 레지스터들은 "보안 예외 엔트리 포인트" 레지스터들일 수 있고, SEM 보안 예외가 일어날 때 명령 실행에 대한 브랜치 타겟 어드레스를 정의할 수 있다. 상기 보안 예외 엔트리 포인트 레지스터들은 코드 세그먼트(CS)를 정의할 수 있고, 그 후 SEM 보안 예외 처리기(1210)으로의 엔트리 상에서 사용되는(도 12 참조) 명령 포인터(IP, 또는 64-비트 버전 RIP), 스택 세그먼트(SS) 및 상기 스택 포인터(SP, 또는 64-비트 버전 RSP) 값들을 정의할 수 있다.
소프트웨어 제어 하에서, 실행 유닛(600)은 종전의 SS, SP/RSP, EFLAGS, CS 및 IP/RIP 값들을 신규 스택 상으로 푸쉬하여 상기 예외가 일어나는 곳을 표시할 수 있다. 또한, 실행 유닛(600)은 에러 코드를 상기 스택 상으로 푸쉬할 수 있다.인터럽(IRET) 명령으로부터의 정규 반환은 종전의 SS로서 사용될 수 없고, SP/RSP 값들은 항상 저장되고, 그리고 상기 스택 전환은 현재 특권 레벨(CPL)에서 변화가 일어나지 않더라도 항상 달성된다는 점이 주목된다. 따라서, 신규 명령이 정의되어 상기 SEM 보안 예외 처리기(1210)(SMRET)로부터의 반환이 달성된다.
도 6B는 도 4B의 컴퓨터 시스템(400B)의 CPU(402B)의 일 실시예를 도시한다. 도 6A의 실시예에서, 상기 CPU(402B)는 실행 유닛(600), 메모리 관리 유닛(MMU)(602), 캐시 유닛(604), 버스 인터페이스 유닛(BIU)(606), 일련의 제어 레지스터들(608) 및 일련의 보안 실행 모드(SEM) 레지스터들(610)을 포함한다. 상기 BIU(606)은 상기 호스트 브리지(404)(도 2)에 연결되고, 상기 CPU(402B) 및 상기 호스트 브리지(404) 사이의 인터페이스를 형성한다. 상기 BIU(606)는 상기 호스트 브리지(404)를 통하여 상기 메모리(404)(도 2)에 또한 연결되고, 상기 CPU(402B)와 상기 메모리(404) 사이의 인터페이스를 형성한다. 도 6A의 실시예에서, 상기 I/O SCU(417)은 상기 BIU(606) 내에 위치된다.
상기 일련의 SEM 레지스터들(610)은 도 4B의 컴퓨터 시스템(400B) 내에서 보안 실행 모드(SEM)를 구현하는데 사용될 수 있고, 상기 I/O SCU(417)의 동작은 상기 일련의 SEM 레지스터들(610)의 컨텐츠들에 의하여 관리된다. 상기 SEM 레지스터들(610)은 상기 보안 커넬(504)에 의하여 액세스된다(즉, 상기 보안 커넬에 기입되고 및/또는 그로부터 판독된다).
도 6B의 실시예에서, 상기 일련의 SEM 레지스터들(610)은 SEM 비트(609)를 포함한다. 도 4B의 컴퓨터 시스템(400B)은, (ⅰ) 상기 CPU(402B)가 x86 보호된 모드에서 운영되는 x86 프로세서이고, (ⅱ) 메모리 페이징이 인에이블되고, 그리고 (ⅲ) 상기 SEM 비트가 '1'로 설정되는 경우, 예를 들어 상기 보안 실행 모드(SEM)에서 동작한다.
일반적으로, 상기 일련의 제어 레지스터들(608)의 컨텐츠는 상기 CPU(402B)의 동작을 관리한다. 따라서, 상기 일련의 제어 레지스터들(608)의 컨텐츠는 상기 실행 유닛(600), 상기 MMU(602), 상기 캐시 유닛(604), 및/또는 상기 BIU(606)의 동작을 관리한다. 상기 일련의 제어 레지스터들(608)은, 예를 들어 상기 x86 프로세서 아키텍처의 다수의 제어 레지스터들을 포함할 수 있다.
상기 CPU(402B)의 실행 유닛(600)은 명령들(예를 들어, x86 명령들) 및 데이터를 페치하고, 상기 페치된 명령들을 실행하고, 그리고 명령 실행 동안 신호들(예를 들어, 어드레스, 데이터 및 제어 신호들)을 발생한다. 상기 실행 유닛(600)은 상기 캐시 유닛(604)에 연결되고 상기 캐시 유닛(604) 및 상기 BIU(606)을 통하여 상기 메모리(406)로부터 명령들을 수신할 수 있다.
상기 컴퓨터 시스템(400B)의 메모리(406)는 다수의 메모리 위치들을 포함하고, 각 메모리 위치는 유일한 물리적 어드레스를 가진다. 페이징이 인에이블되어 보호된 모드에서 동작하는 경우, 상기 CPU(402B)의 어드레스 스페이스가 페이지 프레임들 또는 "페이지들"로 불리는 다수의 블럭들로 분할된다. 다른 메모리 유닛들 또는 분할들이 또한 고려된다. 상기 페이지의 일부에 대응하는 데이터만이 임의의 소정 시간에 상기 메모리(406) 내에 저장된다. 도 6B의 실시예에서, 명령 실행 동안 상기 실행 유닛(600)에 의해 발생되는 어드레스 신호들은 세그먼트된(즉, "논리적") 어드레스들을 나타낸다. 상기 MMU(602)는 상기 실행 유닛(600)에 의하여 발생된 상기 세그먼트된 어드레스들을 상기 메모리(406)의 대응하는 물리적 어드레스들로 변환한다. 상기 MMU(602)는 상기 물리적 어드레스들을 상기 캐시 유닛(604)에 제공한다. 상기 캐시 유닛(604)은 상기 실행 유닛(600)에 의하여 최근에 페치된 명령들 및 데이터를 저장하는데 사용되는 상대적으로 작은 저장 유닛이다.
상기 BIU(606)는 상기 캐시 유닛(604)과 상기 호스트 브리지(404) 사이에 연결된다. 상기 BIU(606)는 상기 캐시 유닛(604)에서 나타나지 않는 명령들 및 데이터를 상기 호스트 브리지(404)를 통하여 상기 메모리(404)로부터 페치한다. 상기 BIU(606)는 또한 상기 I/O SCU(417)를 포함한다. 상기 I/O SCU(417)는 상기 SEM 레지스터들(610), 상기 실행 유닛(600) 및 상기 MMU(602)에 연결된다. 상술한 바와 같이, 상기 I/O SCU(417)는 상기 I/O 어드레스 스페이스에서 상기 I/O 포트로의 모든 소프트웨어-개시된 액세스들을 모니터하고, 상기 I/O 포트로의 단지 인증된 액세스들만 허용한다.
도 6C는 도 4C의 컴퓨터 시스템(400C)의 CPU(402C)의 일 실시예를 도시한다. 도 6C의 실시예에서, CPU(402C)는 실행 유닛(600), 메모리 관리 유닛(MMU)(602), 캐시 유닛(604), 버스 인터페이스 유닛(BIU)(606), 일련의 제어 레지스터들(608), 및 일련의 보안 실행 모드(SEM) 레지스터들(610)을 포함한다. CPU SCU(416)는 MMU(602) 내에 위치된다.
상기 일련의 SEM 레지스터들(610)은 도 4C의 컴퓨터 시스템(400C) 내에서 보안 실행 모드(SEM)를 구현하는데 사용될 수 있고, 상기 CPU SCU(416) 및 호스트 브리지 SCU(418)의 동작은 상기 일련의 SEM 레지스터들(610)의 컨텐츠들에 의하여 관리된다. 상기 SEM 레지스터들(610)은 상기 보안 커넬(504)에 의하여 액세스된다(즉, 상기 보안 커넬에 기입되고 및/또는 그로부터 판독된다). 도 4C의 컴퓨터 시스템(400C)은, (ⅰ) 상기 CPU(402C)가 x86 보호된 모드에서 운영되는 x86 프로세서이고, (ⅱ) 메모리 페이징이 인에이블되고, 그리고 (ⅲ) 상기 SEM 레지스터(610)의 컨텐츠가 SEM 동작을 명시하는 경우, 예를 들어 상기 SEM에서 동작한다.
도 6C의 실시예에서, 상기 일련의 SEM 레지스터들(610)은 SEM 비트(609)를 포함한다. 상기 컴퓨터 시스템(400C)의 동작 모드들은 "정규 실행 모드" 및 "보안 실행 모드"(SEM)를 포함한다. 상기 컴퓨터 시스템(400C)은 일반적으로 상기 정규 실행 모드에서 동작한다. 상기 일련의 SEM 레지스터들(610)은 상기 컴퓨터 시스템(400C) 내의 상기 SEM을 구현하는데 사용된다. 상기 SEM 레지스터들(610)은 상기 보안 커넬(504)에 의하여 액세스된다(즉, 상기 보안 커넬에 기입되고 및/또는 그로부터 판독된다). 상기 컴퓨터 시스템(400C)은, (ⅰ) 상기 CPU(402C)가 x86 보호된 모드에서 운영되는 x86 프로세서이고, (ⅱ) 메모리 페이징이 인에이블되고, 그리고 (ⅲ) 상기 SEM 비트(609)가 '1'로 설정되는 경우, 예를 들어 상기 SEM에서 동작한다.
일반적으로, 상기 일련의 제어 레지스터들(608)의 컨텐츠는 상기 CPU(402C)의 동작을 관리한다. 따라서, 상기 일련의 제어 레지스터들(608)의 컨텐츠는 상기 실행 유닛(600), 상기 MMU(602), 상기 캐시 유닛(604), 및/또는 상기 BIU(606)의 동작을 관리한다. 상기 일련의 제어 레지스터들(608)은, 예를 들어 상기 x86 프로세서 아키텍처의 다수의 제어 레지스터들을 포함할 수 있다.
상기 CPU(402C)의 실행 유닛(600)은 명령들(예를 들어, x86 명령들) 및 데이터를 페치하고, 상기 페치된 명령들을 실행하고, 그리고 명령 실행 동안 신호들(예를 들어, 어드레스, 데이터 및 제어 신호들)을 발생한다. 상기 실행 유닛(600)은 상기 캐시 유닛(604)에 연결되고 상기 캐시 유닛(604) 및 상기 BIU(606)을 통하여 상기 메모리(406)로부터 명령들을 수신할 수 있다.
상기 컴퓨터 시스템(400C)의 메모리(406)는 다수의 메모리 위치들을 포함하고, 각 메모리 위치는 유일한 물리적 어드레스를 가진다. 페이징이 인에이블된 보호된 모드에서 동작하는 경우, 상기 CPU(402)의 어드레스 스페이스가 페이지 프레임들 또는 "페이지들"로 불리는 다수의 블럭들로 분할된다. 다른 메모리 유닛들 또는 분할들이 또한 고려된다. 상술한 바와 같이, 상기 페이지의 일부에 대응하는 데이터만이 임의의 소정 시간에 상기 메모리(406) 내에 저장된다. 도 6C의 실시예에서, 명령 실행 동안 상기 실행 유닛(600)에 의해 발생되는 어드레스 신호들은 세그먼트된(즉, "논리적") 어드레스들을 나타낸다. 하기에서 설명되는 바와 같이, 상기 MMU(602)는 상기 실행 유닛(600)에 의하여 발생된 상기 세그먼트된 어드레스들을 상기 메모리(406)의 대응하는 물리적 어드레스들로 변환한다. MMU(602)는 상기 물리적 어드레스들을 상기 캐시 유닛(604)에 제공한다. 캐시 유닛(604)은 상기 실행 유닛(600)에 의하여 최근에 페치된 명령들 및 데이터를 저장하는데 사용되는 상대적으로 작은 저장 유닛이다. BIU(606)는 캐시 유닛(604)과 호스트 브리지(404) 사이에 연결되고, 상기 호스트 브리지(404)를 통하여 상기 메모리(406)로부터 상기캐시 유닛(604)에 나타나지 않는 명령들 및 데이터를 페치하는데 사용된다.
도 6D는 상기 컴퓨터 시스템(400)의 CPU(402)의 대안적인 실시예를 도시한다. 도 6D의 실시예에서, 상기 CPU(402D)는 상기 도 6A과 관련하여 설명한 상기 실행 유닛(600), 상기 MMU(602), 상기 캐시 유닛(604), 상기 BIU(606), 상기 일련의 레지스터들(608), 및 상기 일련의 보안 실행 모드(SEM) 레지스터들(610)을 포함한다. 또한, 상기 CPU(602D)는 마이크로코드 엔진(650) 및 보안 체크 코드(654)를 포함하는 마이크로코드 저장소(652)를 포함한다. 상기 마이크로코드 엔진(650)은 상기 실행 유닛(600), 상기 MMU(602), 상기 캐시 유닛(604), 상기 BIU(606), 상기 일련의 레지스터들(608), 및 상기 일련의 SEM 레지스터들(610)에 연결된다. 이러한 연결은 공유된 버스 구조로 도시되나, 다른 연결 구조들도 고려될 수 있다. 상기 마이크로코드 엔진(650)은 상기 마이크로코드 저장소(652)에 저장된 마이크로코드 명령들을 실행하고, 상기 마이크로코드 명령들에 따라서 상기 실행 유닛(600), 상기 MMU(602), 상기 캐시 유닛(604) 및 상기 BIU(606)의 동작들, 상기 일련의 레지스터들(608)의 컨텐츠, 및 상기 일련의 SEM 레지스터들(610)의 컨텐츠를 제어한다. 도 6D의 실시예에서, 상기 마이크로코드 저장소(652)에 저장된 상기 마이크로코드 명령들을 실행하는 상기 마이크로코드 엔진(650)은 하나 이상의 상기 CPU SCU(416) 및 I/O SCU(417)를 대체할 수 있다. x86 구현에서, 상기 마이크로코드 엔진(650)은 상기 실행 유닛(600)이 상기 x86 명령 세트의 보다 복잡한 명령들을 실행하는 것을 보조할 수도 있다.
도 6D의 실시예에서, 상기 마이크로코드 저장소(652)에 저장된 일부의 상기마이크로코드 명령들은 상기 보안 체크 코드(654)를 형성한다. 상기 보안 체크 코드(654)는 상기 컴퓨터 시스템(400)이 상기 SEM에서 동작하는 경우 실행될 수 있고, 명령들은 실행하기 위하여 상기 실행 유닛(600)으로 전송된다. 본질적으로, 상기 보안 체크 코드(654)의 상기 마이크로코드 명령들의 실행은, 상기 마이크로코드 엔진(650) 및, 상기 실행 유닛(600), 상기 MMU(602), 및 상기 BIU(606) 중 다양한 것들로 하여금 상술한 상기 CPU SCU(416) 및 상기 I/O SCU(417)의 하나 이상의 기능들을 실행하도록 야기한다.
예를 들어, I/O 명령들이 실행을 위하여 상기 실행 유닛(600)에 전송되는 경우, 상기 실행 유닛(600)은 상기 I/O 명령의 존재를 상기 마이크로코드 엔진(650)에 시그널링한다. 상기 마이크로코드 엔진(650)은 신호들을 상기 MMU(602) 및 상기 BIU(606)에 표명한다. 상기 마이크로코드 엔진(650)으로부터의 신호에 응답하여, 상기 MMU(602)는 상기 I/O 명령을 포함하는 상기 메모리 페이지의 보안 콘텍스트 식별(SCID)을 상기 BIU(606)에 제공한다. 상기 실행 유닛(600)은 I/O 명령에 의하여 액세스되는 I/O 포트 넘버를 상기 BIU(606)에 제공한다.
상기 마이크로코드 엔진(650)으로부터의 신호에 응답하여, 상기 BIU(606)는 상기 보안 콘텍스트 식별(SCID) 값 및 상기 수신된 I/O 포트 넘버를 사용하여 SEM I/O 허용 비트맵(2200, 2300)(도 22 및 도 23 참조)에 액세스하고 상기 SEM I/O 허용 비트맵(2200, 2300)로부터의 대응하는 비트를 상기 마이크로코드 엔진(650)에 제공할 수 있다. 상기 SEM I/O 허용 비트맵(2200, 2300)로부터의 대응하는 비트가 '0'으로 클리어되면, 상기 마이크로코드 엔진(650)은 상기 실행 유닛(600)이 상기I/O 명령의 실행을 완료하는 것을 계속하여 보조할 수 있다. 반면에, 상기 대응하는 비트가 '1'로 설정되면, 상기 마이크로코드 엔진(650)은 상기 I/O 명령의 실행을 중지하고, 상기 SEM 예외 처리기(1210)의 명령의 실행을 시작하도록 상기 실행 유닛(600)을 시그널링할 수 있다.
상기 실행 유닛(600)은 구현에 따라서, 표준 명령들, 보안 명령들, 및/또는 마이크로코드를 실행할 수 있다는 점을 주목하라. 따라서, 일 실시예에서, 상기 실행 유닛(600) 및 상기 마이크로코드 엔진(650) 모두가 마이크로코드를 실행한다.
도 7은 x86 실시예를 설명하는 도 6C에서 도시된 것과 같은 MMU(602)의 일 실시예를 도시한다. 도 7의 실시예에서, MMU(602)는 세그먼트화 유닛(700), 페이징 유닛(702) 및, 물리적 어드레스를 생성하기 위하여 세그먼트화 유닛(700)의 출력들과 페이징 유닛(702)의 출력들과의 사이에 선택하는 선택 로직(704)을 포함한다. 도 7에 도시된 바와 같이, 세그먼트화 유닛(700)은 상기 실행 유닛(600)으로부터 세그먼트된 어드레스를 수신하고, 출력부에 대응하는 선형 어드레스를 생성하기 위하여 상기 x86 프로세서 아키텍처의 공지된 세그먼트된 어드레스에서 선형 어드레스로의 변환 메카니즘을 사용할 수 있다. 도 7에 도시된 바와 같이, "페이징" 신호에 의하여 인에이블된 경우, 페이징 유닛(702)은 세그먼트화 유닛(700)에 의하여 생성된 선형 어드레스들을 수신하여 출력부에 대응하는 물리적 어드레스들을 생성한다. 상기 페이징 신호는 상기 x86 아키텍처 및 상기 일련의 제어 레지스터들(608)의 제어 레지스터 0(CR0)에서 상기 페이징 플레그(PG) 비트를 반영할 수 있다. 상기 페이징 신호가 비표명되는 경우, 메모리 페이징은 인에이블되지 않고, 그리고 선택 로직(704)은 세그먼트화 유닛(700)으로부터 수신된 상기 선형 어드레스를 상기 물리적 어드레스로서 생성한다.
상기 페이징 신호가 표명된 경우, 메모리 페이징이 인에이블되고, 페이징 유닛(702)은 상기 x86 아키텍처의 선형 어드레스에서 물리적 어드레스로의 변환 메카니즘을 사용하여 세그먼트화 유닛(700)으로부터 수신된 상기 선형 어드레스를 대응하는 물리적 어드레스로 변환한다. 상기 선형 어드레스에서 물리적 어드레스로의 변환 동작 동안, 상기 선택된 페이지 디렉토리 엔트리 및 상기 선택된 페이지 테이블 엔트리의 U/S의 컨텐츠가 논리적으로 AND 연산되어 페이지 프레임으로의 액세스가 인증되는지를 결정한다. 유사하게, 상기 선택된 페이지 디렉토리 엔트리 및 상기 선택된 페이지 테이블 엔트리의 R/W 비트들의 컨텐츠가 논리적으로 AND 연산되어 페이지 프레임으로의 액세스가 인증되는지를 결정한다. 상기 U/S 및 R/W 비트들의 논리적 조합들이 상기 페이지 프레임으로의 액세스가 인증된 것을 표시하는 경우, 페이징 유닛(702)은 상기 선형 어드레스에서 물리적 어드레스로의 변환 동작으로부터 결과적인 물리적 어드레스를 생성한다. 선택 로직(704)은 페이징 유닛(702)에 의하여 생성된 상기 물리적 어드레스를 수신하고, 페이징 유닛(702)으로부터 수신된 물리적 어드레스를 상기 물리적 어드레스로서 생성하고, 그리고 상기 물리적 어드레스를 캐시 유닛(604)에 제공한다.
반면에, 상기 U/S 및 R/W 비트들의 논리적 조합들은 상기 페이지 프레임으로의 액세스가 비인증된 것을 표시하는 경우, 페이징 유닛(702)은 상기 선형 어드레스에서 물리적 어드레스로의 변환 동작 동안 물리적 어드레스를 생성하지 않는다.대신에, 페이징 유닛(702)은 페이지 폴트(PF) 신호를 표명하고, 그리고 MMU(602)는 상기 PF 신호를 실행 유닛(600)에 전송한다. 상기 PF 신호에 응답하여, 실행 유닛(600)은 예외 처리기 루틴을 실행할 수 있고, 결과적으로 상기 RF 신호가 표명된 때에 런하는 응용 프로그램들(500) 중 하나의 실행을 중지할 수 있다.
도 7의 실시예에서, CPU SCU(416)는 MMU(602)의 페이징 유닛(702) 내에 위치된다. 페이징 유닛(702)은 상대적으로 적은 수의 최근에 결정된 선형 어드레스에서 물리적 어드레스로의 변환들을 저장하는 변환 색인 버퍼(TLB:translation lookaside buffer)를 또한 포함할 수 있다.
도 8A는 도 4의 I/O SCU(515)의 일 실시예를 도시한다. 도 8A의 실시예에서, 상기 I/O SCU(417)은 보안 체크 로직(800A)를 포함한다. 상기 보안 체크 로직(800A)은 실행 유닛(600)으로부터 "인에이블" 신호 및 I/O 포트 넘버를 수신하고, 상기 MMU(602)로부터 SCID 값을 수신한다. 상기 실행 유닛(600)은 상기 I/O 어드레스 스페이스에서 "타겟" I/O 포트에 액세스하는 I/O 명령을 실행하기에 앞서 상기 인에이블 신호를 표명할 수 있다. 상기 I/O 포트 넘버는 상기 타겟 I/O 포트의 넘버이다. 상기 SCID 값은 상기 I/O 명령을 포함하는 상기 메모리 페이지의 보안 콘텍스트 레벨을 표시한다.
상기 컴퓨터 시스템이 상기 SEM에서 동작하는 경우, 상기 보안 커넬(504)은 상기 메모리(406)에 하나 이상의 보안 속성 데이터 구조(예들 들어, 테이블)를 발생 및 유지한다. 각 메모리 페이지는 대응하는 SCID 값을 가지고, 상기 대응하는 SCID 값은 상기 보안 속성 데이터 구조 내에 저장될 수 있다. 상기 MMU(602)는 명령 실행 동안 발생된 어드레스(예들 들어, 물리적 어드레스)를 사용하여 대응하는 메모리 페이지들의 SCID들을 획득하기 위하여 상기 하나 이상의 보안 속성 데이터 구조들에 액세스한다. 일반적으로, 상기 컴퓨터 시스템은 n개의 상이한 SCID 값들을 가지고, 여기서 n은 정수이고, n≥1이다.
상기 컴퓨터 시스템(400)이 상기 SEM에서 동작하는 경우, 상기 보안 커넬(504)은 또한 상기 메모리(406)에 SEM I/O 허용 비트맵(2200, 2300)(도 22 및 도 23 참조)을 생성 및 유지할 수 있다. 상기 실행 유닛(600)이 태스크(task)의 I/O 명령을 실행하는 경우, 상기 CPU(402B) 내의 로직은 먼저 상기 태스크의 CPL을 I/O 특권 레벨(IOPL)과 비교할 수 있다. 상기 태스크의 CPL이 적어도 상기 IOPL 정도로 특권화되면(즉, 수적으로 상기 IOPL 이하이면), 상기 CPU(402B) 내의 로직은 상기 SEM I/O 허용 비트맵(2200, 2300)을 체크할 수 있다. 반면에, 상기 태스크의 CPL이 상기 IOPL 정도로 특권화되지 않으면(즉, 수적으로 상기 IOPL보다 크면), 상기 실행 유닛(600)은 상기 I/O 명령을 실행하지 않을 것이다. 일 실시예에서, 일반적인 보호 폴트(GPF)가 일어날 것이다.
상기 실행 유닛(600)이 상기 인에이블 신호를 표명하는 경우, 상기 보안 체크 로직(800A)은 상기 인에이블 신호, 상기 수신된 SCID 값 및 상기 수신된 I/O 포트 넘버를 상기 BIU(406) 내의 로직에 제공한다. 상기 BIU(406) 내의 로직은 상기 SCID 값 및 상기 수신된 I/O 포트 넘버를 사용하여 상기 SEM I/O 허용 비트맵(2200, 2300)에 액세스하고, 상기 SEM I/O 허용 비트맵(2200, 2300)로부터 대응하는 비트를 상기 보안 체크 로직(800A)에 제공할 수 있다. 상기 상기 SEM I/O 허용비트맵(2200, 2300)로부터 대응하는 비트가 '0'으로 클리어되면, 상기 보안 체크 로직(800A)은 상기 실행 유닛(600)에 제공된 출력된 "실행" 신호를 표명할 수 있다. 상기 표명된 실행 신호들에 응답하여, 상기 실행 유닛(600)은 I/O 명령을 실행할 수 있다. 반면에, 상기 대응하는 비트가 '1'로 설정되면, 상기 보안 체크 로직(800A)은 상기 실행 유닛(600)에 제공된 출력된 "SEM 보안 예외" 신호를 표명할 수 있다. 상기 표명된 SEM 보안 예외 신호에 응답하여, 상기 실행 유닛(600)은 I/O 명령을 실행할 수 없고, 대신에 SEM 예외 처리기를 실행할 수 있다(하기 참조).
상기 I/O 명령이 16-비트 워드 I/O 포트 또는 32-비트 이중 워드 I/O 포트에 액세스하려 시도하는 경우, 상기 실행 유닛(600)은 다양한 바이트 I/O 포트 넘버들을 상기 보안 체크 로직(800A)에 차례로 제공할 수 있다. 상기 보안 체크 로직(800A)이 상기 바이트 I/O 포트 넘버들 각각에 대하여 상기 실행 신호를 표명한다면, 상기 실행 유닛(600)은 상기 I/O 명령을 실행할 수 있다. 반면에, 상기 보안 체크 로직(800A)이 하나 이상의 I/O 포트 넘버들에 대하여 상기 SEM 보안 예외를 표명한다면, 상기 실행 유닛(600)은 상기 I/O 명령을 실행할 수 없고, 반면에 상기 SEM 예외 처리기를 실행할 수 있다.
도 8B는 상기 CPU SCU(416)의 일 실시예를 도시한다. 도 8B의 실시예에서, 상기 CPU SCU(416)는 상기 일련의 SEM 레지스터들(610) 및 보안 속성 테이블(SAT) 엔트리 버퍼(802)에 연결된 보안 체크 로직(800B)을 포함한다. 상기 SAT 엔트리들(1225)(도 12 참조)은 상기 메모리 페이지에 대응하는 페이지 디렉토리 및 페이지 테이블 엔트리들의 U/S 및 R/W 비트들 이상의 추가적인 보안 정보를 포함할 수 있다. 보안 체크 로직(800B)은 상기 SAT 엔트리들(1225) 중 소정의 하나에 저장된 상기 추가적인 보안 정보를 사용하여 상기 대응하는 메모리 페이지로의 비인증된 소프트웨어-개시된 액세스들을 방지한다. 상기 SAT 엔트리 버퍼(802)는 최근에 액세스된 메모리 페이지들의 상대적으로 적은 수의 SAT 엔트리들(1225)을 저장하는데 사용된다.
상술한 바와 같이, 상기 일련의 SEM 레지스터들(610)은 상기 컴퓨터 시스템(400) 내의 상기 SEM을 구현하는데 사용될 수 있다. 상기 일련의 SEM 레지스터들(610)의 컨텐츠는 CPU SCU(417)의 상기 동작을 관리한다. 보안 체크 로직(800B)은 도 8B에 표시된 통신 버스를 통하여 MMU(602)로부터의 SAT 엔트리 버퍼(802)에 저장된 정보를 수신한다. 상기 보안 체크 로직(800B)은 페이징 유닛에 의하여 생성된 물리적 어드레스를 또한 수신한다.
도 9는 상기 SEM 보안 예외들을 처리하는데 사용되는 보안 모드 SMCALL/SMART 타겟 어드레스 레지스터(SMSTAR)(900) 및 보안 모드 GS 베이스(SMGBASE) 레지스터(902)를 도시한다.
보안 유지를 위하여, 상기 SEM 보안 예외 메카니즘은 상기 SEM 보안 예외가 일어날 때 상기 SEM 예외 처리기 및 스택의 어드레스들을 제공하기 위하여, 임의의 로드 제어 레지스터들 또는 데이터 구조들의 컨텐츠에 의존할 수 없다.
상기 SMSTAR 레지스터(900)는 "SMRET CS 선택기 및 SS 선택기 베이스" 필드, "SMCALL CS 선택기 및 SS 선택기 베이스" 필드, 및 "타겟 EIP 어드레스" 필드를 포함한다. 상기 SMGBASE 레지스터(902)는 보안 모드 GS 베이스 어드레스를 포함한다.상기 SMSTAR(900) 및 상기 SMGBASE 레지스터(902)에 저장된 값은 일반적으로 부트 시간에 설정된다.
도 10A는 SEM 예외가 일어날 때 상기 운영 시스템(502)에 의하여 발생된 SEM 예외 스택 프레임(1000)의 일 실시예를 도시한다. 상기 SEM 예외 스택 프레임(1000)은 GS[00h]에서 시작한다.
에러 코드는 GS[00h]에서 상기 SEM 예외 스택 프레임(1000)에 존재한다. 상기 폴팅 적용의 명령 포인터(EIP)의 컨텐츠는 GS[04h]에서 상기 SEM 예외 스택 프레임(1000)에 존재한다. 상기 폴팅 적용의 코드 세그먼트(CS) 레지스터의 컨텐츠는 GS[08h]에서 상기 SEM 예외 스택 프레임(1000)에 존재한다. 상기 폴팅 적용의 플레그들(EFLAGS) 레지스터의 컨텐츠는 GS[0Ch]에서 상기 SEM 예외 스택 프레임(1000)에 존재한다. 상기 폴팅 적용의 스택 포인터(ESP) 레지스터의 컨텐츠는 GS[10h]에서 상기 SEM 예외 스택 프레임(1000)에 존재한다. 상기 폴팅 적용의 스택 세그먼트(SS) 레지스터의 컨텐츠는 GS[14h]에서 상기 SEM 예외 스택 프레임(1000)에 존재한다.
도 10B는 도 10A의 상기 SEM 예외 스택 프레임(1000)의 에러 코드의 예시적인 포맷(1010)을 도시한다. 도 10B의 실시예에서, 상기 에러 코드 포맷은 기입/판독(W/R) 비트, 사용자/수퍼바이저(U/S) 비트, 모델 특정 레지스터(MSR) 비트, 및 시스템 관리 인터럽(SMI) 비트를 포함한다. 상기 기입/판독(W/R) 비트는 기입 동작 동안 상기 SEM 예외가 발생한 경우 '1'이고, 판독 동안 상기 SEM 보안 예외가 발생한 경우 '0'이거나 또는 동작을 실행한다. 상기 사용자/수퍼바이저(U/S) 비트는 상기 보안 실행 모드(SEM) 예외가 사용자 모드(CPL=3)에서 일어나는 경우 '1'이고, 상기 SEM 예외가 수퍼바이저 모드(CPL=0)에서 일어나는 경우 '0'이다.
상기 모델 특정 레지스터(MSR) 비트는 보안 모델 특정 레지스터(MSR)에 액세스하려 시도하는 동안 상기 SEM 보안 예외가 일어나는 경우 '1'이고, 보안 MSR에 액세스하려 시도하는 동안 상기 SEM 보안 예외가 일어나지 않는 경우 '0'이다. 상기 시스템 관리 인터럽트(SMI) 비트는 상기 시스템 관리 인터럽트(SMI) 동안 상기 SEM 보안 예외가 일어나는 경우 '1'이고, SMI 동안 상기 SEM 보안 예외가 일어나지 않는 경우 '0'이다.
도 11은 본 발명의 일 양상에 따른, SEM 보안 예외를 처리하는 방법(1100)의 실시예의 흐름도를 도시한다. 상기 방법(1100)은 블럭(1105)에서, 상기 SMCALL 명령과 같은 하드웨어를 통하거나 또는 소프트웨어를 통하여, 상기 SEM 보안 예외를 발생하는 단계를 포함한다. 상기 방법(1100)은 블럭(1110)에서, 베이스 어드레스 플러스 오프셋에서 SEM 스택 프레임(100)을 생성하는 단계를 포함한다. 보안 모드 GS 베이스 어드레스는 상기 SMGBASE 레지스터(902)로부터 판독된다. 상기 SEM 스택 포인터는 상기 SEM 스택 프레임에서 바이트들의 수만큼 오프셋된 상기 보안 모드 GS 베이스 어드레스로부터 형성될 수 있다. 상기 SEM 스택 프레임(1000)은 상기 에러 코드가 상기 SMGBASE 레지스터(902)에 저장된 상기 보안 모드 GS 베이스 어드레스에 의하여 가리켜진 위치에 있도록 메모리 안에 기입된다. 상기 SEM 보안 예외의 에러 코드는 상기 SEM 예외 하드웨어에 의하여 발행된다. 상기 SEM 보안 예외 자체는 상기 운영 시스템(502)에 의하여, 디바이스 드라이버 코드(506)에 의하여, 응용코드(500)에 의하여 등으로 발생될 수 있을 것이다. 상기 폴트 코드 세그먼트 값들은 도 10A에 도시된 것과 같이 GS 스페이스 안으로 기입된다.
다음으로 상기 방법(1100)은 블럭(1115)에서, 상기 SMSTAR 레지스터(900)로부터 상기 타겟 EIP 어드레스 및 상기 SMCALL CS 및 SS 선택기 값들을 판독하고, 상기 타겟 EIP 어드레스 및 상기 SMCALL CS 및 SS 선택기 값들을 적절한 레지스터들에 저장한다. 상기 타겟 EIP 어드레스는 상기 EIP 레지스터에 로드된다. 상기 CS 선택기 값은 상기 CS 레지스터에 로드되고, 상기 SS 선택기 값은 상기 SS 레지스터에 로드된다. 상기 CS 선택기 어드레스는 상기 CS 선택기 어드레스로부터 유도될 수 있다. 상기 타겟 EIP 어드레스는 상기 SEM 보안 예외 처리기 코드의 제 1 명령을 가르킨다.
블럭(1120)에서, 상기 방법(1100)은 SWAPGS 명령을 또한 실행한다. 상기 SWAPGS 명령의 실행은 상기 SMGBASE 레지스터(902)의 컨텐츠를 상기 CPU(402)에 캐시된 상기 GS 세그먼트 기술자의 베이스 어드레스로 교환(swap)한다. 다음의 SEM 보안 예외 처리기 명령들이 GS 스페이스 변이전용 어드레싱을 사용하여 상기 SEM 보안 예외 스택 프레임(1000) 및 상기 SEM 보안 예외 스택 프레임(1000)의 위 또는 아래의 메모리에 액세스할 수 있다. 상기 GS 스페이스 어드레싱은 상기 SEM 보안 예외 처리기에 대한 보안 메모리를 제공한다.
상기 보안 커넬(504) 내의 상기 SEM 보안 예외 처리기는 상기 SEM 레지스터(610) 또는 본 장에서 설명되는 다른 보안 측정들에 저장된 것과 같은, 보안 비트들에 의하여 보호되는 가상 메모리의 다수의 페이지들을 포함할 수 있다. 상기 SEM보안 예외 처리기는 상기 SEM 레지스터(610) 또는 본 장에서 설명되는 다른 보안 측정들에 저장된 것과 같은, 보안 비트들에 의하여 보호되는 물리적 메모의 다수의 페이지들을 포함할 수 있다.
상기 방법(1100)은 다음으로 블럭(1125)에서 에러 코드를 분석(parse)한다. 상기 에러 코드 비트들은 상기 SEM 예외의 소스들이 결정됨에 따라서 한번에 하나씩 분석될 수 있다. 선택적으로, 상기 방법(1100)은 블럭(1130)에서, 상기 SEM 보안 예외가 발생되기 전에 실행되거나 실행을 준비하는 하나 이상의 명령들을 디코드한다. 그러한 특정한 명령들 및 그들의 오퍼랜드들은 상기 SEM 보안 예외의 소스 상의 추가적인 정보를 제공한다. 상기 방법(1100)은 블럭(1135)에서 상기 에러 코드 및, 상기 SEM 보안 예외의 발생을 야기했던 명령 전 또는 후에 가능하게는 명령들에 근거하여, 상기 SEM 보안 예외를 평가한다. 블럭(1135)의 평가는 룩업 테이블을 참조하거나 또는 보안 알고리즘을 수행하는 것을 포함할 수 있다. 상기 룩업 테이블은 하나 이상의 에러 코드, 상기 에러 코드의 하나 이상의 비트들 및, 하나 이상의 특정한 명령들 및/또는 그들의 오퍼랜드들에 의하여 인덱스될 수 있다. 상기 보안 알고리즘은 상기 보안 커넬(504)에 의하여 수행되는 코드 트리를 포함할 수 있다. 상기 룩업 테이블 및 보안 알고리즘 모두는 정확한 하드웨어(310) 등 및 사기 컴퓨터 시스템(300)에서 구현되는 운영 시스템(402)에서 결정될 것이다.
일단 상기 방법(1100)이 블럭(1135)에서 상기 SEM 보안 예외를 평가하면, 상기 방법(1100)은 블럭(1140)에서 필요한 경우 상기 평가에 작용한다. 상기 SEM 보안 예외는 무시될 수 있고, 동작들이 다시 시작된다. 상기 폴팅 명령 또는 코드 세그먼트가 무시될 수 있다. 상기 폴팅 명령 또는 코드 세그먼트는 상기 폴팅 명령 또는 코드 세그먼트가 가상 메모리 또는 I/O 스페이스에서, 프록시에 의해 실행되도록 포함된다.
상기 방법(1100)은 블럭(1145)에서 상기 컴퓨터 시스템(300)을 종전의 SEM 보안 예외 구성으로 대부분 복구한다. 상기 SEM 보안 예외 처리기가 존재하는 경우, 또다른 SWAPGS 명령이 실행되어 상기 보안 모드 베이스 어드레스 값을 그 원래의 값으로 반환하고, 그리고 블럭(1150)에서 SMRET 명령이 실행되어 종전의 동작 모드로 반환한다. 상기 SWAPGS 명령을 실행하는 경우, 상기 보안 커넬(504)은 상기 폴팅 코드의 코드 세그먼트(CS)에 대한 값을 상기 SMSTAR 레지스터(900)의 SMRET CS 선택기 및 SS 선택기 베이스 필드에 기입한다. 상기 SMRET 명령은 상기 시스템(300)을 정규 모드로 반환한다. 상기 SYSRET 명령과 다르게, 상기 SMRET 명령을 상기 CPL을 0에 남겨놓고, 상기 EFLAGS.IF 비트를 설정하지 않는다.
일 실시예에서, 상기 방법(1100)의 블럭들(1105-1115)은 주로 하드웨어에서 수행되고, 블럭들(1120-1145)은 주로 소프트웨어에서 수행된다는 점이 주목된다. 다른 실시예에서, 상기 방법(1100)은 주로 소프트웨어에서 수행된다. 또다른 실시예에서, 상기 방법(1100)은 주로 하드웨어에서 수행된다. 일 실시예에서, 상기 EIP 어드레스가 변경되어 상기 SEM 보안 예외를 야기한 명령을 피한다.
도 8B를 다시 참조하면, 컴퓨터 시스템(300)이 상기 SEM에서 동작하는 경우, 보안 체크 로직(800B)은 정규 제어 비트들 및 물리적 어드레스가 존재하는 선택된 메모리 페이지에 관련된 하나 이상의 SEM 비트들(509)와 함께, 현재 실행되는 태스크(즉, 현재 실행되는 명령)의 CPL을 수신한다. 보안 체크 로직(800B)은 상기의 정보를 사용하여 상기 메모리(406)의 그 부분에 대한 액세스가 인증되는지 여부를 결정한다.
상기 CPU(402)는 x86 프로세서일 수 있고, 코드 세그먼트(CS) 레지스터, 상기 x86 프로세서 아키텍처의 16-비트 세그먼트 레지스터 중 하나를 포함할 수 있다. 각 세그먼트 레지스터는 세그먼트라고 지칭되는 메모리의 64k 블럭을 선택한다. 페이징이 인에이블되는 보호된 모드에서, 상기 CS 레지스터는 메모리(406)의 실행가능한 세그먼터를 표시하는 세그먼트 선택기로 로드된다. 상기 세그먼트 선택기의 최상위(즉, 가장 중요한) 비트들은 상기 CPU(402)의 실행 유닛(600)에 의하여 실행될 다음의 명령을 포함하는 메모리의 세그먼트를 나타내는 정보를 저장하는데 사용된다. 명령 포인터(IP) 레지스터는 오프셋을 상기 CS 레지스터에 의하여 표시되는 세그먼트에 저장하는데 사용된다. 상기 CS:IP 쌍은 다음 명령의 세그먼트된 어드레스를 표시한다. 상기 CS 레지스터의 두 개의 최하위(즉, 가장 적게 중요한) 비트들은 상기 실행 유닛(600)에 의하여 현재 실행되고 있는 태스크의 CPL(즉, 현재 태스크의 CPL)을 표시하는 값을 저장하는데 사용된다.
상기 CPU SCU(416)의 보안 체크 로직(800B)은 페이지 폴트("PF") 신호 및 "SEM 보안 예외" 신호를 생성할 수 있고, 상기 PF 신호 및 SEM 보안 예외 신호를 상기 페이징 유닛(702) 내의 로직에 제공할 수 있다. 상기 보안 체크 로직(800B)이 상기 PF 신호를 표명하는 경우, MMU(602)는 상기 PF 신호를 상기 실행 유닛(600)으로 전송한다. 상기 PF 신호에 응답하여, 실행 유닛(600)은 상기 x86 프로세서 아키텍처의 공지된 인터럽 기술자 테이블(IDT) 벡터링 메카니즘을 사용하여 RF 처리기 루틴에 액세스 및 실행할 수 있다.
상기 보안 체크 로직(800B)가 상기 SEM 보안 예외 신호를 표명한 경우, 상기 MMU(602)는 상기 SEM 보안 예외 신호를 상기 실행 유닛(600)에 전송한다. 상기 x86 프로세서 아키텍처의 상기 IDT 벡터링 메카니즘을 사용하는 정규 프로세서 예외들과는 다르게, 상이한 벡터링 방법이 SEM 보안 예외들을 처리하는데 사용될 수 있다. 상기 SEM 보안 예외들은 x86 "SYSENTER" 및 "SYSEXIT" 명령이 동작하는 방식과 유사하게, 한 쌍의 레지스터들(예를 들어, MSR들)을 통하여 디스패치될 수 있다. 상기 레지스터들의 쌍은 "보안 예외 엔트리 포인터" 레지스터일 수 있고, 그리고 상기 SEM 보안 예외가 일어날 때 명령에 대한 브랜치 타겟 어드레스를 정의할 수 있다.
상기 보안 예외 엔트리 포인터 레지스터는 SEM 보안 예외 처리기로의 엔트리 상에서 사용될 상기 코드 세그먼트(CS), 그 후 명령 포인터(EIP 또는 64-비트 버전 RIP), 스택 세그먼트(SS) 및 스택 포인터(ESP 또는 64-비트 버전 RSP) 값들을 정의할 수 있다. 상기 실행 유닛(600)은 종전의 SS, ESP/RSP, EFLAGS, CS 및 EIP/RIP 값들을 신규 스택에 푸쉬하여 상기 SEM 보안 예외가 어디서 일어날 지를 표시한다. 또한, 상기 실행 유닛(600)은 에러 코드를 상기 스택에 푸쉬할 수 있다. 상술한 바와 같이, CPL 내의 변화가 발생하지 않는 경우에도, 상기 IRET 명령은 종전 SS로서 사용될 수 없고, ESP/RSP 값들은 저장되고, 그리고 스택 전환이 달성된다. 상기 SEM 보안 예외 처리기로부터의 반환은 상기 SMRET 명령을 통한다.
도 12는 본 발명의 다양한 양상에 따른, 컴퓨터 시스템에서 보안을 유지하는 다양한 실시예들을 통합한 도면(1200)이다. 도 12에 도시된 바와 같이, 상기 운영 시스템은 보안 커넬(504)을 포함할 수 있다. 상기 보안 커넬(504)은 SEM 보안 예외 처리기(1210) 및/또는 페이지 관리 루틴(1215)을 포함할 수 있다. 상기 보안 커넬(504)은 상기 SEM 보안 예외(1205)를 수신한다. 상기 보안 커넬(504)은 하나 이상의 신호들(1255)을 통하여 현재 CPU 상태(1230)를 전달하는 하나 이상의 값들을 수신한다. 상기 보안 커넬(504)은 또한 하나 이상의 신호들(1255)을 통하여 현재 CPU 상태(1230)를 변경할 수 있다. 상기 CPU 상태(1230)는 제어 레지스터들(1235) 및 MSR들(1240)에 저장된 값들로부터 결정될 수 있다. 상기 값들은 상기 CR3 제어 레지스터(1242), 상기 CPL(1244) 및 상기 SEM 인에이블 비트(1246)에 저장된 것들을 포함할 수 있다.
다른 값들이 페이징을 턴온 또는 턴오프하기 위하여 포함된 것, 예를 들어 CR0으로서 고려되고, 확장된 어드레싱에 대한 확장된 구조 레지스터들 또는 페이지 어드레스 확장 모드 레지스터가 고려되는 등이다. 하나 이상의 설명된 값들(1242, 1244, 1246)은 또한 필요한 경우 배제될 수 있다. 상기 보안 커넬(504)은 하나 이상의 CPU 상태(1230), 가상 메모리 구성(1220), 및 보안 속성 엔트리들(1225)로부터 보안 값들 및 신호들(1250)을 수신한다. 상기 보안 값들(1250A)은 상기 보안 커넬(504)과 상기 가상 메모리 구성(1220) 사이에 도시된다. 상기 보안 값들(1250B)은 상기 보안 커넬(504)과 상기 보안 속성 엔트리(1225) 사이에 도시된다. 상기 보안 값들(1250C)은 상기 보안 커넬(504)과 상기 CPU 상태(1230) 사이에 도시된다.
일 실시예에서, 상기 가상 메모리 구조(1220)는 (1250A)를 통하여 상기 페이지 관리 루틴(1215)을 통해 상기 보안 커널(504)에 의하여 모니터되어, 상기 메모리(406)로의 액세스에 대한 보안이 유지된다. 상기 CPU 상태(1230)는 상기 보안 커넬(504)에 의하여 또한 모니터되어 적당한 보안이 상기 페이지 관리 루틴(1215)에 의하여 적용된다. 상기 가상 메모리 구성(1220)은 또한 (1250A)를 통하여 상기 페이지 관리 루틴(1215)에 의하여 변경될 수 있다. 상기 페이지 관리 유닛(1215)은 상기 운영 시스템(502)의 일부일 수 있다. 상기 페이지 관리 유닛(1215)은 또한 상기 SEM 보안 예외 처리기를 사용하여 상기 가상 메모리 구성(1220)으로의 변화를 감시한다.
일 실시예에서, 상기 보안 속성 엔트리(1225)는 (1250B)를 통하여 상기 보안 커넬(504)에 의하여 모니터된다. 메모리 위치로의 액세스의 시도는 SEM 보안 예외(1205)를 상기 SEM 보안 예외 처리기(1210)에 발생하고, 상기 SEM으로의 상기 CPU 상태(1230)의 변화를 유도한다. 상기 메모리 위치로의 액세스가 상기 보안 속성 엔트리(1225) 중 관련된 하나에 따라서 허용되거나 거절될 수 있다. 상기 보안 속성 엔트리(1225)는 상기 메모리(406) 내의 보호된 페이지내에 있을 수 있다.
일 실시예에서, 상기 CPU 상태(1230)는 (1250C)를 통하여 상기 보안 커넬(504)에 의하여 모니터된다. 이러한 실시예는 형태상이다. 메모리 위치로의 시도된 액세스는 SEM 보안 예외(1205)를 상기 SEM 보안 예외 처리기(1210)에 발생한다. 상기 메모리 위치로의 액세스는 시도된 액세스의 시간에서 상기 CPU 상태(1230)에 따라서 허용되거나 거절될 수 있다.
상기 CPU(402) 이내의 범용 레지스터들(도시되지 않음)의 컨텐츠는 임의의 소정의 시간에서 사용가능하다. 일 실시예에서, 상기 제어 레지스터(1235)로의 액세스는 보안 비트의 값, 예를 들어 상기 제어 레지스터(1235) 내의 TX(트러스트된 실행) 비트 또는 상기 MSR들(1240) 내의 SIE(보안 명령)의 값에 의존한다. 유사하게, 상기 MSR들(1240)로의 액세스는 보안 비트의 값에 의존한다. 상기 보안 비트가 설정되지 않는 경우, 보안 감지 제어 레지스터(1235) 및 MSR들(1240)으로의 임의의 시도된 변화는 SEM 보안 예외(1205)를 가져온다. 다른 실시예에서, 실행 페이지 값은 상기 제어 레지스터(1235)로의 액세스를 제어한다.
보안 모드, 예를 들어 SEM으로부터 비보안 모드, 예를 들어 정규 모드로의 변이는 임의의 레지스터들의 컨텐츠를 클리어한다. 상기 메모리 컨텐츠는 정적으로 남으나, 임의의 메모리 어드레스는 더이상 판독되지 않는다. 보안을 강화하기 위하여 가상 메모리 구성(1220)을 사용하는 경우, 상기 CR3 레지스터(1242)의 컨텐츠가 리로드(reload)될 수 있다. 이에 의하여 가상 메모리 구성(1220)이 트러스트된 코드에 의하여 사용되는 상기 가상 메모리 구성(1220)과 상이한 비트러스트된 코드에 제공된다. 상기 보안 속성 엔트리(1225)를 사용하는 경우, 보안 페이지에 관련된 엔트리들이 상기 페이지 테이블에서 보호된 것으로 마크되고, 상기 CPU 상태(1230)가 보안(또는 보호된) 모드에 있지 않는 경우 액세스를 방지한다. 보안을 강화하기 위하여 상기 CPU 상태(1230)를 사용하는 경우, 상기 CPU 상태(1230)는 보호된 메모리로의 액세스가 허용되기 전에 보안 모드에 있어야만 한다.
일 실시예에서, 상기 SEM에서 상기 보안 커넬(504)은 상기 페이지 관리 루틴(1215)을 실행함으로써 상기 가상 메모리 구성(1220)을 통하여 보호를 제공할 수 있다. 이러한 보호는 최소의 하드웨어를 요구하고, 최상위 특권(SCID) 레벨에서 실행하는 소프트웨어에서 주로 구현된다.
상기 SEM은 페이징이 인에이블된 보호된 모드 환경에 적용가능하다. 부적당한 또는 스크램블(scramble)된 선형을 물리적 맵핑에 생성함으로써 상기 SEM에 대한 어택들을 방지하기 위하여, 부적당한 변경으로부터 상기 페이징 구조 및 페이징에 관련된 CR3(1242)와 같은 상기 제어 레지스터들(1235) 및/또는 상기 MSR들(1240)을 보호할 필요가 있다.
도 12에 도시된 한 메카니즘을 사용하여 보안이 강화되면, 상기 가상 메모리 구성(1220), 상기 보안 속성 엔트리(1225), 및 상기 CPU 상태(1230)가 잔여 메카니즘들 배제할 수 있다. 다른 실시예에서, 이러한 메카니즘들의 둘 이상이 함께 작용할 수 있다.
도 13 내지 도 15가 이제 메모리 페이지의 추가적인 보안 정보가 어떻게 도 4A 내지 도 4C의 컴퓨터 시스템(400) 내에서 사용될 수 있는 어드레스 변환 메카니즘을 사용하여 선택될 수 있는지를 설명하는데 사용된다. 도 13은 상기 선택된 메모리 페이지의 추가적인 보안 정보를 얻기 위하여 선택된 메모리 페이지에 대하여 관련된 하나의 SAT 엔트리들(1225)에 액세스하는 메카니즘(1300)의 일 실시예를 도시한다. 도 13의 메카니즘(1300)은 도 8A 및 도 8B의 보안 체크 로직(800) 내에 구현되고, 도 4A 내지 도 4C의 임의의 컴퓨터 시스템(400)이 상기 SEM에서 동작하는 경우 구현될 수 있다. 메카니즘(1300)은 상기 x86 어드레스 변환 메카니즘, SAT 디렉토리(1304), SAT(1306)를 포함하는 다양한 SAT들, 및 상기 일련의 SEM 레지스터들(610)의 SAT 베이스 어드레스 레지스터(1308)을 사용하여 페이징 메카니즘(702)에 의하여 생성된 물리적 어드레스(1302)를 포함한다. SAT 디렉토리(1304) 및 SAT(1306)를 포함하는 다수의 SAT들은 상기 보안 커넬(504)에 의하여 생성 및 유지되는 SEM 데이터 구조들이다. 하기에서 설명되는 바와 같이, 상기 SAT 디렉토리(1304)(존재하는 경우) 및 임의의 요구되는 SAT(1306)이 액세스되기 전에 상기 메모리(406) 안으로 복사된다.
상기 SAT 베이스 어드레스 레지스터(1308)는 SAT 베이스 어드레스 레지스터(1308) 내에 유효한 SAT 디렉토리 베이스 어드레스의 존재를 표시하는 존재하는(present)(P) 비트를 포함한다. SAT 베이스 어드레스 레지스터(1308)의 최상위(즉, 가장 중요한) 비트들은 상기 SAT 디렉토리 베이스 어드레스에 대하여 보전(reserve)된다. 상기 SAT 디렉토리 베이스 어드레스는 SAT 디렉토리(1304)를 포함하는 메모리 페이지의 베이스 어드레스이다. P=1인 경우, 상기 SAT 디렉토리 베이스 어드레스는 유효하고, 그리고 SAT 테이블(1306)은 메모리 페이지들의 보안 속성을 명시한다. P=0인 경우, 상기 SAT 디렉토리 베이스 어드레스는 유효하지 않고, 어떤 SAT 테이블도 존재하지 않고, 그리고 메모리 페이지들의 보안 속성들은 SAT 디폴트 레지스터에 의하여 결정된다.
도 14A는 상기 SAT 디폴트 레지스터(1400)의 일 실시예를 도시한다. 도 14A의 실시예에서, 상기 SAT 디폴트 레지스터(1400)는 보안 페이지(SP) 비트를 포함한다. 상기 SP 비트는 모든 메모리 페이지가 보안 페이지들인지 아닌지를 표시한다.예를 들어, SP=0인 경우, 모든 메모리 페이지들은 보안 페이지들이 아니고, SP=1인 경우, 모든 메모리 페이지들은 보안 페이지들이다.
도 13을 다시 참조하고, 상기 SAT 베이스 어드레스 레지스터(1308)의 P 비트가 '1'이라고 가정하면, 상기 페이징 로직(702)에 의하여 생성된 물리적 어드레스(1302)는 선택된 메모리 페이지에 대한 SAT 엔트리들(1225) 중 관련된 하나에 액세스하기 위하여 3 부분들로 분할된다. 상술한 바와 같이, 상기 SAT 베이스 어드레스 레지스터(1308)의 SAT 디렉토리 베이스 어드레스는 SAT 디렉토리(1304)를 포함하는 메모리 페이지의 베이스 어드레스이다. 상기 SAT 디렉토리(1304)는 SAT 디렉토리 엔트리(1312)를 포함하는 다양한 SAT 디렉토리 엔트리들을 포함한다. 각 SAT 디렉토리 엔트리는 메모리(406)에 대응하는 SAT를 가질 수 있다. 물리적 어드레스(1302)의 최상위 또는 가장 중요한 비트들을 포함하는 물리적 어드레스(1302)의 "상부" 부분은 SAT 디렉토리(1304)로의 인덱스로서 사용된다. 상기 SAT 디렉토리 엔트리(1312)는 SAT 베이스 어드레스 레지스터(1308)의 상기 SAT 디렉토리 베이스 어드레스 및 물리적 어드레스(1302)의 상부 부분을 사용하여 SAT 디렉토리(304) 내에서 선택된다.
도 14B는 SAT 디렉토리 엔트리의 일 실시예를 도시한다. 도 14B에 따라서, 각 SAT 디렉토리 엔트리는 상기 SAT 디렉토리 엔트리 내에 유효한 SAT 베이스 어드레스의 존재를 표시하는 존재하는(P) 비트를 포함한다. 도 14B의 실시예에서, 각 SAT 디렉토리 엔트리(1310)의 최상위(즉, 가장 중요한) 비트가 SAT 베이스 어드레스에 대하여 보전된다. 상기 SAT 베이스 어드레스는 대응하는 SAT를 포함하는 메모리 페이지의 베이스 어드레스이다. P=1인 경우, 상기 SAT 베이스 어드레스는 유효하고, 그리고 상기 대응하는 SAT는 메모리(406)에 저장된다.
P=0인 경우, 상기 SAT 베이스 어드레스는 유효하지 않고, 상기 대응하는 SAT는 메모리(406)에 존재하지 않고, 저장 디바이스(예를 들어, 디스크 드라이브)로부터 메모리(406) 안으로 복사될 것이다. P=0인 경우, 보안 체크 로직(800)은 페이지 폴드를 페이징 유닛(702) 내의 로직으로 시그널링하고, MMU(602)는 상기 페이지 폴드 신호를 실행 유닛(600)(도 6)으로 전송할 수 있다. 상기 페이지 폴트 신호에 응답하여, 실행 유닛(600)은 상기 저장 디바이스로부터 필요한 SAT를 검색하는 페이지 폴트 처리기 루틴을 실행할 수 있고, 상기 필요한 SAT를 메모리(406)에 저장한다. 상기 필요한 SAT가 메모리(406)에 저장된 후에, 대응하는 SAT 디렉토리 엔트리의 P 비트가 '1'로 설정되고, 그리고 메카니즘(1300)이 계속된다.
도 13을 다시 참조하면, 물리적 어드레스(1302)의 "중간" 부분이 SAT(1306)으로의 인덱스로서 사용된다. 따라서, SAT 엔트리(1312) SAT 디렉토리 엔트리(1312)의 상기 SAT 베이스 어드레스 및 물리적 어드레스(1302)의 중간 부분을 사용하여 SAT(1306) 내에서 선택된다.
도 15는 SAT 엔트리 포맷(1500)의 일 실시예를 도시한다. 도 15의 실시예에서, 각 SAT 엔트리(1312)는 보안 페이지(SP) 비트를 포함한다. 상기 SP 비트는 상기 선택된 메모리 페이지가 보안 페이지인지 아닌지를 표시한다. 예를 들어, SP=0인 경우, 상기 선택된 메모리 페이지는 보안 페이지가 아니고, 그리고 SP=1인 경우, 상기 선택된 메모리 페이지는 보안 페이지일 것이다.
상기 BIU(606)는 필요한 SEM 데이터 구조를 메모리(406)로부터 검색하고, 상기 SEM 데이터 구조 엔트리를 MMU(602)에 제공한다. 도 8B를 다시 참조하면, 보안 체크 로직(800B)은 통신 버스를 통하여, 상기 MMU(602) 및 상기 페이징 유닛(702)으로부터 SEM 데이터 구조 엔트리들을 수신한다. 상술한 바와 같이, SAT 엔트리 버퍼(802)는 최근에 액세스된 메모리 페이지의 상대적으로 적은 수의 SAT 엔트리들(1225)를 저장하는데 사용된다. 상기 보안 체크 로직(800B)은 대응하는 물리적 어드레스의 "태그" 부분과 함께, 상기 SAT 엔트리 버퍼(802)에 소정의 SAT 엔트리(1312)를 저장한다.
후속의 메모리 페이지 액세스 동안, 보안 체크 로직(800B)은 페이징 유닛(702)에 의하여 생성된 물리적 어드레스의 "태그" 부분을 상기 SAT 엔트리 버퍼(1102)에 저장된 SAT 엔트리(1225)의 태그 부분과 비교한다. 상기 물리적 어드레스의 태그 부분이 상기 SAT 엔트리 버퍼(1102)에 저장된 SAT 엔트리(1312)에 대응하는 물리적 어드레스의 태그 부분에 매치하는 경우, 상기 보안 체크 로직(800B)은 상기 SAT 엔트리 버퍼(1102) 내의 상기 SAT 엔트리(1312)에 액세스하고, 메모리(406)로부터 상기 SAT 엔트리(1312)를 획득하기 위하여 도 13의 과정을 수행하는 필요성을 제거한다. 보안 커넬(504)은 (예를 들어, 콘텍스트 전환 동안) 상기 CPU(402) 내의 SAT 베이스 어드레스 레지스터(1308)의 컨텐츠를 변경한다. SAT 베이스 어드레스 레지스터(1308)의 변경에 응답하여, CPU SCU(417)의 상기 보안 체크 로직(800B)은 상기 SAT 엔트리 버퍼(802)를 플러시(flush)한다.
도 4A 내지 도 4C의 컴퓨터 시스템(400)이 상기 SEM에서 동작하는 경우, 보안 체크 로직(800B)은 물리적 어드레스가 존재하는 선택된 메모리 페이지의 상기 페이지 디렉토리 엔트리(PDE) U/S 비트, 상기 PDE R/W 비트, 상기 페이지 테이블 엔트리(PTE) U/S 비트, 및 상기 PTE R/W 비트와 함께, 현재 실행되는 테스크(즉, 현재 실행되는 명령)의 CPL을 수신한다. 상기 보안 체크 로직(800B)은 메모리(406) 액세스가 인증되는지를 결정하기 위하여, 선택된 메모리 페이지에 대응하는 상기 SAT 엔트리(1312)의 상기 SP 비트와 함께, 상술한 정보를 사용한다.
도 4B의 CPU(402B)는 x86 프로세서일 수 있고, 코드 세그먼트(CS) 레지스터, 상기 x86 프로세서 아키텍처의 하나의 16-비트 세그먼트 레지스터를 포함할 수 있다. 각 세그먼트 레지스터는 세그먼트로 불리는 메모리의 64k 블럭을 선택한다. 페이징이 인에이블된 보호된 모드에서, 상기 CS 레지스터는 메모리(406)의 실행가능한 세그먼트를 표시하는 세그먼트 선택기로 로드된다. 상기 세그먼트 선택기의 최상위(즉, 가장 중요한) 비트들은 CPU(402B)의 실행 유닛(600)에 의하여 실행될 다음의 명령을 포함하는 메모리의 세그먼트를 표시하는 정보를 저장하는데 사용된다. 명령 포인터(IP) 레지스터는 상기 CS 레지스터에 의하여 표시되는 세그먼트에 오프셋을 저장하는데 사용된다. 상기 SC:IP 쌍은 다음의 명령의 세그먼트된 어드레스를 표시한다. 상기 CS 레지스터의 두 개의 최하위(즉, 가장 적게 중요한) 비트들은 실행 유닛(600)에 의하여 현재 실행되는 태스크의 CPL을 표시하는 값을 저장하는데 사용된다.
하기의 표 1은 컴퓨터 시스템(400B)이 SEM에서 동작하는 경우 CPU-개시(즉, 소프트웨어-개시) 메모리 액세스에 대한 예시적인 법칙을 도시한다. 상기 CPUSCU(417) 및 상기 보안 커넬(504)은 함께 작용하여 상기 컴퓨터 시스템(400B)이 SEM에서 동작하는 경우, 메모리(406)에 저장된 데이터에 대한 상기 운영 시스템(502)에 의하여 제공된 데이터 보안 이상의 추가적인 보안을 제공한다.
현재 실행되는 명령 선택된 메모리 페이지 허용된
SP CPL SP U/S R/W 액세스 표시
1 0 x x 1(R/W) R/W 전체 액세스 가능(1)
1 0 x x 0(R) 판독 (2)
1 3 1 1(U) 1(R/W) 표준 보호 메카니즘 적용
1 3 1 0(S) x 없음 액세스가 GPF.(1)를 야기
1 3 0 0 1 없음 액세스가 GPF.(4)를 야기
0 0 1 x x 없음 액세스가 SEM 보안 예외를 야기
0 0 0 1 1 R/W 표준 보호 메카니즘 적용(5)
0 3 x 0 x 없음 주(5)
0 3 0 1 1 R/W 표준 보호 메카니즘 적용(6)
주(1): 전형적으로 액세스된 페이지 컨텐츠가 보안 커넬 및 SEM 데이터 구조를 포함한다.
주(2): 기입 시도가 GPF를 야기한다; 상기 선택된 메모리 페이지가 보안 페이지(SP=1)인 경우, SEM 보안 예외가 GPF 대신에 시그널링된다.
주(3): 전형적으로 액세스된 페이지 컨텐츠가 고보안 애플릿(applet)들을 포함한다.
주(4): 전형적으로 액세스된 페이지 컨텐츠가 OS 커넬 및 링0 디바이스 드라이버들을 포함한다.
주(5): 임의의 액세스 시도가 GPF를 야기한다; 상기 선택된 메모리 페이지가 보안 페이지(SP=1)인 경우, SEM 보안 예외가 GPF 대신에 시그널링된다.
주(6): 전형적으로 액세스된 페이지 컨텐츠가 애플리케이션들을 포함한다.
상기 표 1에서, 현재 실행되는 명령의 SP 비트는 현재 실행되는 명령을 포함하는 메모리 페이지에 대응하는 상기 SAT 엔트리(1312)의 SP 비트이다. 상기 선택된 메모리 페이지의 U/S 비트는 상기 선택된 메모리 페이지의 PDE U/S 비트 및 PTE U/S 비트의 AND 논리이다. 상기 선택된 메모리 페이지의 R/W 비트는 상기 선택된 메모리 페이지의 PDE R/W 비트 및 PTE R/W 비트의 AND 논리이다. 상기 심볼 "X"는 "고려하지 말것"을 명시한다: 즉 상기 논리 값이 '0' 또는 '1'일 것이다.
도 8B를 다시 참조하면, CPU SCU(417)의 보안 체크 로직(800B)은 일반적인 보호 폴트("GPF") 신호 및 "SEM 보안 예외" 신호를 생성하고, 상기 GPF 및 SEM 보안 예외 신호를 페이징 유닛(702) 내의 로직에 제공한다. 보안 체크 로직(800B)이 상기 GPF 신호를 표명한 경우, MMU(602)는 상기 GPF 신호를 실행 유닛(600)에 전송한다. 상기 GPF 신호에 응답하여, 실행 유닛(600)은 GPF 처리기 루틴에 액세스 및 실행하기 위하여 상기 x86 프로세서 아키텍처의 공지된 인터럽 기술자 테이블(IDT) 벡터링 메카니즘을 사용할 수 있다.
보안 체크 로직(800B)이 상기 SEM 보안 예외 신호를 표명한 경우, MMU(602)는 상기 SEM 보안 예외 신호를 실행 유닛(600)에 전송한다. 상기 x86 프로세서 아키텍처의 IDT 벡터링 메카니즘을 사용하는 정규 프로세서 예외와 다르게, 상이한 벡터링 방법이 SEM 보안 예외들을 처리하는데 사용될 수 있다. SEM 보안 예외는 x86 "SYSENTER" 및 "SYSEXIT" 명령들이 동작하는 방식과 유사한 쌍의 레지스터들(예를 들어, MSR들)을 통하여 디스패치될 수 있다. 상기 쌍의 레지스터들은 "보안예외 엔트리 포인트" 레지스터들일 수 있고, SEM 보안 예외가 일어날 때 명령 실행에 대한 브랜치 타겟 어드레스를 정의할 수 있다. 상기 보안 예외 엔트리 포인트 레지스터들은 코드 세그먼트(CS)를 정의할 수 있고, 그 후 SEM 보안 예외 처리기(1210)로의 엔트리 상에서 사용되는 명령 포인터(IP, 또는 64-비트 버전 RIP), 스택 세그먼트(SS) 및 상기 스택 포인터(SP, 또는 64-비트 버전 RSP) 값들을 정의할 수 있다. 소프트웨어 제어 하에서, 실행 유닛(600)은 종전의 SS, SP/RSP, EFLAGS, CS 및 IP/RIP 값들을 신규 스택 상으로 푸쉬하여 상기 예외가 일어나는 곳을 표시할 수 있다. 또한, 실행 유닛(600)은 에러 코드를 상기 스택 상으로 푸쉬할 수 있다. 상술한 바와 같이, 상기 IRET 명령은 종전의 SS로서 사용될 수 없고, SP/RSP 값들은 항상 저장되고, 그리고 상기 스택 전환은 CPL에서 변화가 일어나지 않더라도 항상 달성된다. 상기 SEM 보안 예외 처리기(1210)(SMRET)로부터의 반환이 상기 SMRET 명령을 통하여 달성된다.
하기의 표 2는 컴퓨터 시스템(400)이 SEM에서 동작하는 경우 디바이스 하드웨어 유닛들(414A-414D)(즉, 하드웨어-개시 메모리 액세스)에 의하여 개시된 메모리 액세스 페이지에 대한 예시적인 법칙을 도시한다. 그러한 하드웨어-개시된 메모리 액세스들은 디바이스 하드웨어 유닛들(414A-414D)의 요청시 디바이스 하드웨어 유닛들(414A-414D) 내의 버스 마스터링 회로소자에 의하여 또는 DMA 디바이스들에 의하여 개시될 수 있다. 상기 보안 체크 로직(800)은 운영 시스템(502)에 의하여 제공된 데이터 보안 이상의 메모리(406)에 저장된 데이터에 대한 추가적인 보안을 제공하기 위하여 컴퓨터 시스템(400)이 상기 SEM에서 동작하는 경우, 표 2의 법칙들을 구현할 수 있다. 하기의 표 2에서, 상기 "타겟" 메모리 페이지는 물리적 어드레스가 메모리 액세스의 메모리 액세스 신호에 의하여 전달된 물리적 어드레스가 존재하는 메모리 페이지이다.
특정 메모리 페이지SP 액세스유형 동작
0 R/W 액세스가 정규적으로 완료된다.
1 판독 액세스가 실제 메모리 컨텐츠 대신에 모든 "F"들의 반환을 완료한다. 비인증된 액세스가 로그된다.
1 기입 액세스가 완료되나 기입 데이터는 폐기된다. 메모리 컨텐츠는 변화하지 않는다. 비인증된 액세스가 로그된다.
상기 표 2에서, 상기 타겟 메모리 페이지의 SP 비트가 상기 메모리 액세스의 물리적 어드레스 및 상술한 도 9의 메카니즘(900)을 사용하여, 대응하는 메모리 페이지들의 SAT 엔트리들(1225)를 획득하기 위하여 호스트 브리지 SCU(418)에 의하여 획득된다.
표 2에서 나타난 바와 같이, 상기 타겟 메모리 페이지가 보안 페이지 임을 표시하는 SP=1인 경우, 상기 메모리 액세스는 비인증된다. 이러한 상황에서, 보안 체크 로직(800)은 상기 메모리 제어기에 상기 메모리 액세스 신호들을 제공하지 않는다. 상기 메모리 액세스 신호들(즉, 제어 신호)의 일부는 메모리 액세스 유형을 표시하고, 여기서 상기 메모리 액세스 유형은 판독 액세스 또는 기입 액세스이다. SP=1이고 상기 메모리 액세스 신호들이 상기 메모리 액세스 유형이 판독 액세스라는 것을 표시하는 경우, 상기 메모리 액세스는 비인증된 판독 액세스이고, 그리고 보안 체크 로직(800)은 실제 메모리 컨텐츠(즉, 위조된 판독 데이터) 대신에 모든 "F"들을 제공함으로써 상기 비인증된 판독 액세스에 응답한다. 보안 체크 로직(800)은 또한 상술한 것과 같이 비인증된 판독 액세스를 로그함으로써 상기 비인증된 판독 액세스에 또한 응답한다.
SP=1이고 상기 메모리 액세스 신호가 상기 메모리 액세스 유형이 기입 액세스라는 것을 표시하는 경우, 상기 메모리 액세스는 비인증된 기입 액세스이다. 이러한 상황에서, 보안 체크 로직(800) 상기 메모리 액세스 신호들에 의하여 전달된 기입 데이터를 폐기함으로써 상기 비인증된 기입 액세스에 응답한다. 보안 체크 로직(800)은 또한 상술한 것과 같이 비인증된 기입 액세스를 로그함으로써 상기 비인증된 기입 액세스에 또한 응답한다.
도 16A는 도 4C의 호스트 브리지(404C)의 일 실시예를 도시한다. 도 16A의 실시예에서, 호스트 브리지(404C)는 호스트 인터페이스(1600), 브리지 로직(1602), 상기 호스트 브리지 SCU(418), 메모리 제어기(1604), 및 디바이스 버스 인터페이스(1606)을 포함한다. 호스트 인터페이스(1600)는 CPU(402)에 연결되고, 디바이스 버스 인터페이스(1606)는 디바이스 버스(408)에 연결된다. 브리지 로직(1602)은 호스트 인터페이스(1600)와 디바이스 버스 인터페이스(1606) 사이에 연결된다. 메모리 제어기(1604)는 메모리(406)에 연결되고, 메모리(406)로의 모든 액세스를 수행한다. 상기 호스트 브리지 SCU(418)는 상기 브리지 로직(1602)과 상기 메모리 제어기(1604) 사이에 연결된다. 상술한 바와 같이, 상기 호스트 브리지 SCU(418)는 상기 디바이스 버스 인터페이스(1606)를 통하여 상기 메모리(406)로의 액세스를 제어한다. 상기 호스트 브리지 SCU(418)는 상기 디바이스 버스 인터페이스(1606)를 통하여 상기 메모리(406)로의 모든 액세스들을 모니터하고, 상기 메모리(406)로의 인증된 액세스만 허용한다.
도 16B는 도 4C의 호스트 브리지(404C)의 다른 실시예를 도시한다. 도 16B의 실시예에서, 호스트 브리지(404C)는 호스트 인터페이스(1600), 브리지 로직(1602), 상기 호스트 브리지 SCU(418), 메모리 제어기(1604), 및 디바이스 버스 인터페이스(1606) 및 버스 조정자(arbiter)(1608)를 포함한다. 상기 호스트 인터페이스(1600)는 CPU(402)에 연결되고, 그리고 디바이스 버스 인터페이스(1606)는 디바이스 버스(408)에 연결된다. 브리지 로직(1602)은 호스트 인터페이스(1600)와 디바이스 버스 인터페이스(1606) 사이에 연결된다. 메모리 제어기(1604)는 메모리(406)에 연결되고, 메모리(406)로의 모든 액세스를 수행한다. 상기 호스트 브리지 SCU(418)는 상기 브리지 로직(1602)과 상기 메모리 제어기(1604) 사이에 연결된다. 상술한 바와 같이, 상기 호스트 브리지 SCU(418)는 상기 디바이스 버스 인터페이스(1606)를 통하여 상기 메모리(406)로의 액세스를 제어한다. 상기 호스트 브리지 SCU(418)는 상기 디바이스 버스 인터페이스(1606)를 통하여 상기 메모리(406)로의 모든 액세스들을 모니터하고, 상기 메모리(406)로의 인증된 액세스만 허용한다.
도 16B의 실시예에서, 버스 중재자(1608)는 디바이스 버스 인터페이스(1606), 브리지 로직(1602) 및 상기 호스트 브리지 SCU(418)에 연결된다. 버스 중재자(1608)는 디바이스 버스(408)의 제어를 위하여 브리지 로직(1602), 디바이스 하드웨어 유닛들(414A 및 414B), 그리고 디바이스 버스 브리지(410) 사이를 중재한다. (디바이스 하드웨어 유닛들(414C 및 414D)은 디바이스 버스 브리지(410)를 통하여 디바이스 버스(408)에 액세스한다.) 일반적으로, 디바이스 버스(408)는 승인신호를 전달하는 하나 이상의 신호 라인들을 포함할 수 있는 바, 여기서 상기 승인 신호는 디바이스 버스(408)에 연결된 디바이스들 중 어느 것이 디바이스 버스(408)의 제어를 구비하는지를 표시하는 다수의 상태들 중 하나에 있을 것이다. 버스 중재자(1608)은 상기 승인 신호를 전달하는 하나 이상의 신호 라인들에 상기 승인 신호를 유도할 수 있다. 버스 중재자(1608)는, 전형적인 경우, 디바이스 하드웨어 유닛들(414A 및 414B) 및 디바이스 버스 브리지(410)로부터 요청 신호들을 수신하는 바, 여기서 각 요청 신호는 상기 대응하는 디바이스가 디바이스 버스(408)를 제어할 필요가 있는 경우 상기 대응하는 디바이스에 의하여 표명된다. 버스 중재자(1608)는 개별적인 승인 신호들을 상기 디바이스 하드웨어 유닛들(414A 및 414B) 및 디바이스 버스 브리지(410)에 발행할 수 있는 바, 여기서 상기 승인 신호들 중 소정의 하나가 표명되어 상기 대응하는 디바이스가 디바이스 버스(408)의 인증된 제어라는 것을 표시한다. 상기 버스 중재자(1608)는 상기 호스트 브리지 SCU(418)와 함께 작동하여, 컴퓨터 시스템(400C) 내의 디바이스-투-디바이스 액세스 보안을 제공한다.
도 17은 도 16A 및 도 16B의 호스트 브리지 SCU의 일 실시예를 도시한다. 도 17의 실시예에서, 호스트 브리지 SCU(418)는 일련의 SEM 레지스터들(1702) 및 SAT 엔트리 버퍼(1704)에 연결된 보안 체크 로직(1700)을 포함한다. 상기 일련의 SEM 레지스터들(1702)은 보안 체크 로직(1700)의 동작을 관리하고, 도 9의 제 2 SAT 베이스 어드레스 레지스터(908)을 포함한다. 상기 일련의 SEM 레지스터들(1702)의 상기 제 2 SAT 베이스 어드레스 레지스터(908)는 어드레스가능한 레지스터이다. 보안커넬(504)이 (콘텍스트 교환 동안) CPU(402)의 일련의 SEM 레지스터들(610)에서 SAT 베이스 어드레스 레지스터(908)의 컨텐츠를 변경하는 경우, 보안 커넬(504)은 호스트 브리지 SCU(418)의 상기 일련의 SEM 레지스터들(1702)에서 상기 제 2 SAT 베이스 어드레스 레지스터(908)에 또한 같은 값을 기입한다. 상기 제 2 SAT 베이스 어드레스 레지스터(908)의 변경에 응답하여, 호스트 브리지 SCU(418)의 보안 체크 로직(1700)은 SAT 엔트리 버퍼(1704)를 플러시할 수 있다.
보안 체크 로직(1700)은 디바이스 버스 인터페이스(1606) 및 브리지 로직(1602)를 통하여 하드웨어 디바이스 유닛들(417A-417D)에 의하여 개시된 메모리 액세스들의 메모리 액세스 신호들을 수신한다. 상기 메모리 액세스 신호들은 하드웨어 디바이스 유닛들(417A-417D)로부터 물리적 어드레스들, 관련된 제어 및/또는 데이터 신호들을 전달한다. 보안 체크 로직(1700)은 대응하는 메모리 페이지들의 SAT 엔트리들(1225)을 획득하는 메카니즘(1300)을 실현할 수 있고, 그리고 컴퓨터 시스템(400)이 상기 SEM에서 동작하는 경우 메카니즘(1300)을 구현할 수 있다. SAT 엔트리 버퍼(1704)는 상술한 CPU SCU(416)의 SAT 엔트리 버퍼(802)와 유사하고, 그리고 최근에 액세스된 메모리 페이지들의 상대적으로 적은 수의 SAT 엔트리들(1225)를 저장하는데 사용된다.
컴퓨터 시스템(400)이 상기 SEM에서 동작하는 경우, 도 17의 상기 보안 체크 로직(1700)은 소정의 하드웨어-개시된 메모리 액세스가 인증되는지를 결정하기 위하여 선택된 메모리 페이지에 관련된 SAT 엔트리(1312)의 추가적인 보안 정보를 사용할 수 있다. 상기 소정의 하드웨어-개시된 메모리 액세스가 인증된 경우, 보안체크 로직(1700)은 상기 메모리 액세스의 메모리 액세스 신호들(즉, 물리적 어드레스 및 관련된 제어 및/또는 데이터 신호들)을 메모리 제어기(1604)에 제공한다. 메모리 제어기(1604)는 상기 물리적 어드레스 및 관련된 제어 및/또는 데이터 신호들을 사용하여 메모리(406)에 액세스한다. 메모리(406) 액세스가 기입 액세스인 경우, 상기 데이터 신호들에 의하여 전달된 데이터가 메모리(406)에 기입된다. 메모리(406) 액세스가 판독 액세스인 경우, 메모리 제어기(1604)는 메모리(406)로부터 데이터를 판독하고, 결과적인 판독 데이터를 보안 체크 로직(1700)에 제공한다. 보안 체크 로직(1700)은 상기 판독 데이터를 브리지 로직(1602)에 전송하고, 상기 브리지 로직(1602)은 상기 데이터를 디바이스 버스 인터페이스(1606)에 제공한다.
반면에, 상기 소정의 하드웨어-개시된 메모리 액세스가 비인증된 경우, 보안 체크 로직(1700)은 메모리(406) 액세스들의 물리적 어드레스 및 관련된 제어 및/또는 데이터 신호들을 메모리 제어기(1604)에 제공하지 않는다. 상기 비인증된 하드웨어-개시된 메모리 액세스가 메모리 기입 액세스인 경우, 보안 체크 로직(1700)은 상기 기입 액세스의 완료를 시그널링하고, 상기 기입 데이터를 폐기하여, 메모리(406)가 변경되지 않게된다. 보안 체크 로직(1700)은 또한 상기 보안 액세스 위반을 문서화하기 위하여 로그에 로그 엔트리를 생성한다(예를 들어, 상태 레지스터의 하나 이상의 비트들을 설정 또는 클리어한다). 보안 커넬(504)은 그러한 로그 엔트리들을 체크하기 위하여 상기 로그에 주기적으로 액세스한다. 상기 비보안된 하드웨어-개시된 메모리 액세스가 메모리 판독 액세스인 경우, 보안 체크 로직(1700)은 폴스(false) 결과(예를 들어, 모드 "F"들)를 상기 판독 데이터와 같이 브리지 로직(1602)을 통하여 디바이스 버스 인터페이스(1606)로 반환할 수 있다. 보안 체크 로직(1700)은 상기 보안 액세스 위반을 문서화하기 위하여 상술한 바와 같이 로그 엔트리를 또한 생성할 수 있다.
도 18은 호스트 브리지 SCU(418)의 다른 실시예를 도시하는 바, 여기서 상기 호스트 브리지 SCU(418)는 액세스 인증 테이블(1800)을 포함한다. 일반적으로, 액세스 인증 테이블(1800)은 디바이스 버스(408)에 연결된 각 디바이스에 대한 상이한 세트의 엔트리들을 구비하고, 그리고 디바이스 버스(408)를 구동할 수 있다(즉, 각 디바이스는 관련된 REQ# 및 GNT# 신호들을 구비한다). 디바이스 하드웨어(414A)에 대응하는 제 1 세트의 엔트리 및 디바이스 하드웨어(414B)에 관련된 제 2 세트의 엔트리들이 도 18에 도시된다. 추가적인 세트의 엔트리들이 또한 고려된다.
액세스 인증 테이블(1800)의 각 엔트리는 디바이스 버스(408)에 연결된 디바이스에 대응하고, 디바이스 버스(408)를 구동할 수 있다. 예를 들어, 도 18에서, 디바이스 하드웨어(414A)에 대응하는 상기 제 1 세트의 엔트리들에서의 제 1 엔트리는 디바이스 하드웨어(414B)를 향하게 된다. 상기 제 1 엔트리는 구문 "(표명된 GNT#2)"를 포함하는 "승인 신호 상태" 필드를 포함하고, 상기 GNT#2 신호가 표명된 경우 상기 제 1 엔트리가 적용된다는 것을 표시한다. 상기 제 1 엔트리는 또한 디바이스 하드웨어(414B)에 대응하는 "액세스 인증" 값을 포함하고, 디아비스 하드웨어(414B)가 디바이스 하드웨어(414A)에 액세스하도록 인증되었는지 여부를 표시한다. 액세스 인증 테이블(1800)이 상기 보안 커넬(504)에 의하여 생성 및 유지될 수 있다.
상기 PCU 버스 프로토콜에 따라서, "개시자" 디바이스가 버스 전송 또는 "트랜잭션"을 위하여 "타겟" 디바이스에 액세스한다. 상기 타겟 디바이스는 STOP# 신호를 표명함으로써 상기 트랜잭션을 중지할 수 있다. 상기 개시자 디바이스는 표명된 STOP# 신호를 검출하면, 상기 개시자 디바이스는 상기 트랜잭션을 중지해야하고, 그리고 상기 트랜잭션을 완료하기 위하여 상기 PCI 버스의 제어를 위하여 재중재해야한다. 임의의 데이터가 전송되기 전에, 상기 타겟 디바이스가 STOP# 신호를 표명하면, 상기 중단은 "재시도"로 호출된다.
상기 디바이스 버스(408)가 PCI 버스인 실시예에서, 디바이스 버스(408)는 다중 어드레스 및 데이터(A/D) 신호 라인들을 포함한다. 디바이스 버스(408)에 연결된 개시자 디바이스는 상기 타겟 디바이스에 할당된 어드레스를 전달하는 어드레스 신호들로 디바이스 버스(408)의 상기 다중 A/D 신호 라인들을 구동함으로써 디바이스 버스(408)에 연결된 타겟 디바이스에 액세스한다. 예를 들어, 디바이스 버스(408)에 연결된 디바이스 하드웨어(414B)로의 액세스를 제어하기 위하여, 호스트 브리지 SCU(418)는 상기 STOP# 신호를 표명함으로써, 모든 액세스 시도들에 응답하도록(즉, PCI 버스 재시도를 개시함으로써 모든 액세스 시도들을 차단하도록) 디바이스 하드웨어(414B)를 구성하기 위하여 상기 PCI 버스를 통하여 디바이스 하드웨어(414B)를 프로그램한다.
호스트 브리지 SCU(418)는 디바이스 버스 인터페이스(1606)을 통하여 디바이스 버스(408)의 신호 라인들에 연결되고, 디바이스 버스(408)의 상기 GNT# 및 A/D 신호 라인들을 모니터하여 디바이스 액세스 시도들을 검출한다. 예를 들어, 디바이스 하드웨어(414A)가 디바이스 하드웨어(414B)에 액세스하려 시도한다고 가정하자. "개시자" 디바이스 하드웨어(414A)가 "타겟" 디바이스 하드웨어(414B)에 액세스하려 시도하는 경우, 디바이스 하드웨어(414B)는 PCI 버스 재시도를 개시함으로써(즉, 디바이스 버스(408)의 A/D 신호 라인들에서 디바이스 하드웨어(414B)에 할당된 어드레스를 검출한 후에 상기 STOP# 신호를 표명함으로써) 상기 액세스 시도를 차단한다. 이러한 동작은 디바이스 하드웨어(414A)로 하여금 후속적인 액세스 시도를 통하여 상기 액세스 신호를 재시도하도록 한다.
디바이스 하드웨어(414B)가 상기 액세스 시도를 차단하는 동안, 호스트 브리지 SCU(418)는 디바이스 버스(408)의 A/D 신호 라인들에 구동된 디바이스 하드웨어(414B)에 할당된 어드레스를 통하여 상기 액세스 시도를 검출한다. 디바이스 하드웨어(414A)가 디바이스 버스(408)의 제어를 구비하는 경우, 상기 GNT#1 신호가 표명되고, 그리고 호스트 브리지 SCU(418)는 디바이스 하드웨어(414A)를 상기 표명된 GNT#1 신호를 통하여 개시자로서 식별한다.
상기 호스트 브리지 SCU(418)는 그 후 디바이스 하드웨어(414A)에 의한 후속하는 액세스 시도가 허용될 것인지를 결정한다. 상기 호스트 브리지 SCU(418)는 디바이스 하드웨어(414B)에 대응하는 액세스 인증 테이블(1800)의 제 2 세트의 엔트리들에 액세스하고, 상기 승인 신호 상태 필드에서 "표명된 GNT#1"를 가지는 상기 제 2 세트의 제 1 엔트리를 선택한다. 상기 제 2 엔트리의 인증된 액세스 값은 '1'이고, 이는 디바이스 하드웨어(414A)에 의한 디바이스 하드웨어(414B)로의 액세스가 승인된 것을 표시하고, 그리고 디바이스 하드웨어(414A)에 의한 후속적인 액세스 시도가 허용될 것이다.
상기 인증된 액세스 값이 디바이스 하드웨어(414A)에 의한 후속적인 액세스 시도가 허용될 것이라는 것을 나타내는 경우, 호스트 브리지 SCU(418)는 디바이스 하드웨어(414A)를 식별하는 신호를 버스 중재자(1608)에 전달한다. 디바이스 버스(408)의 디바이스 하드웨어(414A)로의 제어의 다음번 승인에 바로 앞서서, 버스 중재자(1608)는 호스트 브리지 SCU(418)로의 디바이스 버스(408)의 제어를 승인한다. 호스트 브리지 SCU(418)는 디바이스 하드웨어(414A)에 의한 후속하는 액세스 시도들을 허용하도록 디바이스 하드웨어(414B)를 구성하는 디바이스 버스(408)의 신호 라인 상에 신호들을 구동한다.
디바이스 하드웨어(414A)에 의한 후속하는 액세스 시도 바로 후에, 버스 중재자(1608)는 또한 디바이스 버스(408)의 제어를 호스트 브리지 SCU(418)에 승인한다. 호스트 브리지 SCU(418)는 PCI 버스 재시도를 개시함으로써, 모든 액세스 시도들에 응답하도록 디바이스 하드웨어(414B)를 구성하는 상기 PCI 버스의 신호 라인들 상에 신호들을 구동한다(즉, 디바이스 버스(408)의 A/D 신호 라인들에서 디바이스 하드웨어(414B)에 할당된 어드레스를 검출한 후에 상기 STOP# 신호를 표명함으로써 모든 액세스 시도들을 차단한다).
액세스 인증 테이블(1800)의 선택된 엔트리 내의 인증된 액세스 값이, 개시자 디바이스가 타겟 어드레스에 액세스하도록 승인되지 않았고 상기 개시자 디바이스에 의한 후속하는 액세스 시도가 허용될 수 없다는 것을 표시하는, '0'인 경우, 호스트 브리지 SCU(418)는 상기 개시 디바이스에 의한 후속하는 액세스 시도를 허용하도록 상기 타겟 디바이스를 구성하지 않고, 그리고 상기 타겟 디바이스는 PCI 버스 재시도를 개시함으로써 상기 개시자 디바이스에 의한 액세스 시도들을 계속하여 차단한다. 존재하는 PCI 디바이스가 보호되기 위하여 PCI 버스 재시도를 개시하도록 프로그램가능할 것만을 상술한 자동 구성-액세스-구성 메카니즘이 요구한다는 점이 주목된다.
도 19는 본 발명에 따른 상기 처리 유닛(1910)의 일 실시예의 단순화된 블럭도를 도시한다. 일 실시예에서 상기 처리 유닛(310)은 프로세서(1910), I/O 액세스 인터페이스(1920), I/O 스페이스(1940), 및 소프트웨어 객체들 또는 구조들과 같은 프로그래가능한 객체들(1950)을 포함한다. 상기 프로세서(1910)는 마이크로프로세서(예를 들어, CPU(420))일 수 있고, 다수의 프로세서들(도시되지 않음)일 수 있다.
일 실시예에서, 상기 I/O 스페이스(1940)는 모뎀, 디스크 드라이브, 하드 디스크 드라이브, CD-ROM 드라이브, DVD 드라이브, PCMCIA 카드, 및 다양한 다른 입력/출력 주변 디바이스들(예를 들어, 414A-414D)과 같은 I/O 디바이스(1960)에 "게이트웨이"를 제공한다. 대안적인 실시예에서, 상기 I/O 스페이스(1940)는 상기 I/O 디바이스(1960) 내에 통합된다. 일 실시예에서, 상기 I/O 스페이스(1940)는 상기 I/O 스페이스(1940)와의 어드레싱 및 통신에 관련된 데이터를 포함하는 메모리 유닛(1947)을 포함한다. 상기 메모리 유닛(1947)은 자기 테잎 메모리, 플래시 메모리, RAM, 반도체 칩 상에 존재하는 메모리 등과 같은 물리적 메모리를 포함하는 물리적 메모리 부분을 포함한다. 상기 반도체 칩 상에 존재하는 메모리는 동기식 동적 램(SDRAM: synchronous dynamic random access memory), 이배속 동적 램(DDRAM:double-rate dynamic random access memory) 등과 같은 임의의 다양한 형태들을 취할 수 있다.
상기 프로세서(1910)는 상기 시스템 I/O 액세스 인터페이스(1920)를 통하여 상기 I/O 스페이스(1940)와 통신한다. 일 실시예에서, 상기 I/O 액세스 인터페이스(1920)는 기존 구성의 것이고, I/O 스페이스 어드레스들 및 논리적 신호들을 상기 I/O 액세스 인터페이스(1920)에 제공하여 바람직한 입력/출력 데이터 트랜잭션들을 특정화한다. 본 발명의 실시예들은 다중 테이블, 보안 기반 어드레스 시스템을 수행하는 I/O 액세스 인터페이스(1920)를 제공한다.
일 실시예에서, 상기 프로세서(1910)는 호스트 버스(1915)에 연결된다. 상기 프로세서(1910)는 상기 호스트 버스(1915)를 통하여 상기 I/O 액세스 인터페이스(1920) 및 상기 객체들(1950)과 통신한다. 상기 I/O 액세스 인터페이스(1920)는 상기 호스트 버스(1915) 및 상기 I/O 스페이스(1940)에 연결된다. 상기 프로세서(1910)는 또한 주변 디바이스들과 통신하는데 사용되는 주 버스(1925)에 또한 연결된다. 일 실시예에서, 상기 주 버스(1925)는 주변 성분 상호 연결(PCI) 버스(PCI 사양서, 2.1 참조)이다. 디스플레이 유닛(220) 및 다른 디바이스들(예를 들어, PCI 디바이스들)을 구동하는 비디어 제어기(도시되지 않음)가 상기 주 버스(1925)에 연결된다. 상기 컴퓨터 시스템(200)은 보조 PCI 버스(도시되지 않음) 또는 당업자에게 공지된 다른 주변 디바이스들(도시되지 않음)과 같은 다른 버스들을 포함할 수 있다.
상기 프로세서(1910)는 상기 객체들(1950)로부터의 명령들에 근거하여 다수의 컴퓨터 처리 동작들을 수행한다. 상기 객체들(1950)은 다수의 기능들을 실행하도록 상기 프로세서(1910)를 프롬프트하는 소프트웨어 구조들을 포함할 수 있다. 또한, 운영 시스템, 마이크로소프트 워드(Microsoft Word™)등과 같은 사용자 인터페이스 소프트웨어 시스템과 같은 객체들(1950)의 다수의 서브섹션들이 동시에 상기 프로세서(1910) 내에 존재하고 동작들을 실행한다. 본 발명의 실시예들은 상기 프로세서(1910)에 보안 레벨 액세스 및 특권을 제공한다.
상기 객체들(1950)에 의하여 제공되는 소프트웨어 코드들의 실행에 응답하여, 상기 프로세서(1910)는 하나 이상의 객체들(1950)의 개시에 의하여 프롬프트된 테스크를 수행하기 위하여, 메모리 액세스들을 포함하는 하나 이상의 I/O 디바이스 액세스들을 수행할 수 있다. 상기 프로세서(1910)에 의하여 수행되는 I/O 액세스는 모뎀의 동작과 같은 상기 I/O 디바이스(1960)의 개별적인 기능들을 제어하기 위하여 I/O 디바이스(1960)로의 액세스를 포함한다. 상기 프로세서(1910)에 의하여 수행되는 I/O 액세스는 저장된 메모리 위치들로부터 데이터를 획득하기 위하여, 실행 코드들 및 메모리 액세스들의 저장소를 위한 I/O 디바이스들(1960)의 메모리 위치들에 액세스하는 것을 또한 포함할 수 있다.
여러번, 특정한 I/O 디바이스들(1960), 또는 I/O 디바이스들(1960)의 일부분들을 하나 이상의 선택된 객체들(1950)에 의한 액세스에 대하여 제한될 수 있다. 유사하게, I/O 디바이스(1920)의 임의의 메모리 위치들에 저장된 특정 데이터는 하나 이상의 선택된 객체들(1950)에 의한 액세스에 대하여 제한될 수 있다. 본 발명의 실시예들은 상기 시스템(200)에서, 임의의 I/O 디바이스들(1960)로의 액세스, 또는 I/O 디바이스들(1960)의 메모리 위치들로의 액세스를 제한하는 다중 테이블 보안 액세스를 제공한다. 상기 프로세서(1910)는 상기 I/O 액세스 인터페이스(1920)를 통하여 I/O 스페이스 액세스를 수행한다. 상기 I/O 액세스 인터페이스(1920)는 상기 I/O 스페이스(1940)로의 액세스를 제공하고, 이는 다수의 I/O 디바이스들(1960)에 게이트웨이를 포함할 수 있다. 다중 테이블 가상 메모리 액세스 프로토콜이 본 발명의 적어도 하나의 실시예에 의하여 제공된다.
도 20에서, 본 발명에 따른 I/O 액세스 인터페이스(1920)의 일 실시예의 블럭도가 도시된다. 일 실시예에서, 상기 I/O 액세스 인터페이스(1920)는 I/O 액세스 테이블(2010), 보조 I/O 테이블(2030), 및 I/O 스페이스 인터페이스(1945)를 포함한다. 일 실시예에서, 상기 I/O 스페이스 인터페이스(1945)는 I/O 디바이스(1960)에 관련된 또는 상기 I/O 디바이스(1960)의 일부에 관련된 물리적 위치에 어드레스하는데 사용될 수 있는 "가상" I/O 스페이스 어드레스를 나타낸다. 상기 프로세서(1910)는 상기 I/O 스페이스 인터페이스(1945)에 어드레스함으로써 상기 I/O 스페이스(1940)에 액세스할 수 있다.
본 발명의 실시예들은 다중 테이블 I/O 및 메모리 액세스 시스템을 사용하여 I/O 액세스를 수행하는 것을 제공한다. 본 발명의 실시예에서 사용되는 상기 다중 테이블 I/O 및 메모리 액세스 시스템은 상기 I/O 스페이스 인터페이스(1945)를 통하여 I/O 스페이스 어드레스에 액세스하기 위하여, (즉, 상기 보조 I/O 테이블(2030)에 관련된 상기 I/O 액세스 테이블(2010)을 사용하는) 다중레벨 테이블 어드레싱 방식을 사용한다. 상기 I/O 메모리 어드레스들은 상기 요구되는 물리적 I/O 위치에 위치시키기 위하여 상기 프로세서(1910)에 의하여 사용된다.
상기 시스템(300)은 가상 I/O 스페이스 어드레스를 정의하기 위하여, 상기 보조 I/O 테이블(2030)과 같은 하나 이상의 다른 테이블들에 관련된 상기 I/O 액세스 테이블(2010)을 사용할 수 있다. 상기 I/O 액세스 테이블(2010) 및 상기 보조 I/O 액세스 테이블(2030)은 물리적 I/O 어드레스를 야기하는 가상 I/O 스페이스 어드레스들을 변환하는데 사용된다. 상기 물리적 I/O 어드레스는 I/O 디바이스(360)의 물리적 위치, 또는 상기 I/O 디바이스(1960) 내의 메모리 위치를 가리킨다. 본 발명의 실시예들에 의하여 제공되는 상기 다중 레벨 I/O 액세스 테이블 시스템은 상기 보조 I/O 테이블(2030)로 하여금 상기 I/O 액세스 테이블(2010)의 전체적인 섹션들을 정의하도록 허용한다. 이러한 예에서, 상기 보조 I/O 테이블(2030)은 상기 I/O 액세스 테이블(2010)에 나타날 수 없는 가상 I/O 어드레스의 일부분을 정의할 수 있다. 상기 보조 I/O 테이블(2030)은 상기 I/O 액세스 테이블(2010)에 의하여 발생되는 가상 I/O 어드레스에 근거하여 물리적 I/O 위치를 또한 정의하는 미세 교정 디바이스로서 사용될 수 있다. 이에 의하여 보다 정확하고 빠른 가상 I/O 어드레스 정의가 이루어진다.
일 실시예에서, 상기 보조 테이블(2030) 내에 다수의 서브셋 테이블을 포함할 수 있는 상기 보조 테이블(2030)이 상기 시스템(300)의 상기 메모리 유닛(1947) 또는 메인 메모리(도시되지 않음)에 저장된다. 상기 보조 I/O 테이블(2030)은 상기 보조 I/O 테이블(2030)로의 액세스를 얻은 비보안되거나 비검증된 소프트웨어 구조들 또는 객체들(1950)를 방지하기 위하여 고보안 레벨에 저장된다. 일 실시예에서, 상기 프로세서(1910)는 객체(1950)에 의하여 보내진 명령들에 근거하여 물리적 I/O 디바이스 위치내의 위치로의 액세스를 요청한다. 상기 프로세서(1910)에 의한 메모리 액세스 요청에 응답하여, 상기 I/O 액세스 인터페이스(1920)는 상기 I/O 액세스 테이블(2010)을 가상 I/O 어드레스를 생성하도록 프롬프트하는데, 이는 상기 보조 I/O 테이블(2030)에 의하여 추가적으로 정의된다. 상기 가상 I/O 액세스는 또한 상기 I/O 스페이스 인터페이스(1945)를 가리킨다. 그 후, 상기 프로세서(1910)는 상기 가상 I/O 위치로의 액세스를 요청하고, 이는 그 후 대응하는 위치를 상기 I/O 디바이스(1960)에 위치하는데 사용된다.
상기 프로세서(1910)에 의하여 수행되는 메모리 액세스를 수행하는 일 실시예가 도 21A, 도 21B 및 하기의 설명에 의하여 예시된다. 도 21A에서, 데이터 프로세서 또는 시스템(300)에서 보안 레벨 속성들을 저장하고 검색하는 I/O 액세스 시스템(2100)의 예시적인 일 실시예가 도시된다. 일 실시예에서, 상기 I/O 액세스 시스템(2100)은 상기 시스템(300)의 처리 유닛(1910)에 통합된다. 상기 I/O 액세스 시스템(2100)은 I/O 스페이스(1940)에 액세스하는데 다중 테이블 보안 방식을 사용하는 데이터 프로세서(도시되지 않음)에 유용하다. 예를 들어, 상기 I/O 액세스 시스템(2100)은 x86 타입의 마이크로프로세서들에서 구현되는 페이징 방식과 같은 페이징 방식을 사용하여 I/O 스페이스(1940)에 액세스 하는 경우 상기 프로세서(1910)에 의하여 사용될 수 있다. 일 실시예에서, x86 시스템에서 단일 메모리 페이지가 4킬로바이트의 메모리를 포함한다. 또한 상기 I/O 액세스 시스템(2100)은상기 페이지 레벨에서 적당한 보안 레벨 속성을 할당하는 상기 프로세서(1910)에서의 특정한 응용들을 발견한다.
상기 I/O 액세스 시스템(2100)은 x86 타입 마이크로프로세서에서 페이징 유닛에 의하여 수신될 가상의, 선형의 또는 중간 어드레스에 반대로서, 페이지 부분(2110) 및 오프셋 부분(2120)을 구성하는 I/O 스페이스 어드레스(2153)를 수신한다. 일 실시예에서, 상기 페이지 부분(2110) 데이터는 적당한 메모리 페이지에 어드레스하고, 반면에 상기 오프셋 부분(2100) 데이터는 상기 선택된 페이지 부분(2110) 이내에 특정한 오프셋 I/O 위치에 어드레스한다. 상기 I/O 액세스 시스템(2100)은, x86 타입 마이크로프로세서에서 페이징 유닛(도시되지 않음)에 의하여 생산될 상기 물리적 어드레스를 수신한다.
일반적으로 확장된 보안 속성 테이블(ESAT)로 언급되는 다중 레벨 룩업 테이블(2130)이 상기 물리적 I/O 어드레스의 페이지 부분(2110)을 수신한다. 상기 다중 레벨 룩업 테이블(2130)은 메모리의 각 페이지(2110)에 관련된 보안 속성들을 저장한다. 다시 말하면, 각 페이지(2110)는 그 페이지(2110)에 관련된 특정한 보안 레벨 속성들을 가진다. 일 실시예에서, 상기 페이지(2110)에 관련된 보안 속성은 상기 다중 레벨 룩업 테이블(2130)에 저장된다. 예를 들어, 각 페이지(2110)에 관련된 보안 속성은 룩 다운(look down), 보안 콘텍스트 ID, 라이트웨이트 콜 게이트, 판독 인에이블, 기입 인에이블, 실행, 외부 마스터 기입 인에이블, 외부 마스터 판독 인에이블, 암호화 메모리, 인에이블된 보안 명령등을 포함할 수 있다. 이러한 많은 속성들은 본 개시에 이득을 가지는 당업자에게 공지되어 있다.
일 실시예에서, 상기 다중 레벨 룩업 테이블(2130)은 시스템(300)의 상기 시스템 메모리(도시되지 않음)에 위치된다. 대안적인 실시예에서, 상기 다중 레벨 룩업 테이블(2130)은 상기 프로세서(1910) 안에 통합되고, 이는 상기 시스템(300)을 사용하는 마이크로프로세서를 포함한다. 따라서, 상기 다중 레벨 룩업 테이블(2130)이 실행가능한 속도는 적어도 부분적으로 상기 시스템 메모리의 속도에 의존한다. 상기 시스템 메모리의 속도는 상기 프로세서(310)의 속도와 비교하여, 일반적으로 느리다. 따라서, 다중 레벨 룩업 테이블(2130)을 사용한 상기 보안 속성의 검색 과정은 상기 시스템(300)의 전체적인 동작보다 느릴 수 있다. 상기 보안 속성을 위치시키고 검색하는데 요구되는 시간 주기를 감소하기 위하여, 상기 다중 레벨 룩업 테이블(2130)과 병행하여 캐시(2140)가 구현된다. 상기 캐시(2140)는 상기 프로세서(1910)와 같은 반도체 다이에 위치될 수 있거나(즉, 상기 캐시(2140) 및 상기 프로세서(1910)는 하나의 반도체 칩에 통합된다), 또는 상기 프로세서 다이의 외부에 위치하거나 또는 이 두 경우 모두일 수 있다. 일반적으로, 상기 캐시(2140)의 속도는 상기 다중 레벨 룩업 테이블(2130)의 속도보다 실질적으로 빠를 수 있다. 상기 캐시(2140)는 상기 페이지들(2110)의 보다 작은 서브세트들 및 상기 다중 레벨 룩업 테이블(2130) 내에 포함된 그들의 보안 속성을 포함한다. 따라서, 상기 캐시(2140)에 저장된 페이지들(2100)에 대하여, 보안 속성 검색 동작은 실질적으로 강화될 수 있다.
도 21B에서, 메모리 내의 페이지(2110)에 관련된 상기 보안 속성을 저장하고 검색하는데 사용되는 다중 레벨 룩업 테이블(2130)의 일 실시예가 도시된다. 상기다중 레벨 룩업 테이블(2130)은 일반적으로 ESAT 디렉토리로서 언급되는 제 1 테이블(2150) 및, 일반적으로 상기 ESAT로서 언급되는 제 2 테이블(2152)을 포함한다. 일반적으로, 상기 제 1 테이블(2150)은 상기 페이지들(2110) 각각에 대한 보안 속성들이 저장되는 다수의 ESAT들(2152)에 대한 어드레스를 시작하는 디렉토리를 포함한다. 본 장에 예시된 실시예에서, 상기 I/O 디바이스들(1960) 이내의 전체 I/O 어드레스 및/또는 메모리를 맵핑하는데 단일 ESAT 디렉토리(2150)가 사용될 수 있다.
최상위 비트들을 포함하고 일반적으로 상기 디렉토리(DIR)(2154)로 언급되는 I/O 스페이스 어드레스(2153)의 제 1 부분은 상기 제 1 테이블(2150)로의 포인터로서 사용된다. 상기 I/O 스페이스 어드레스(2153)는 테이블 데이터(2170)을 포함하는 부분을 또한 포함하고, 이는 어드레스되는 테이블(2150, 2152)을 식별할 수 있다. 상기 I/O 스페이스 어드레스(2153)는 특정 엔트리(2160, 2180)를 야기하는 테이블(2150, 2152) 내에 오프셋(2120)을 또한 포함한다. 상기 제 1 테이블(2150)은 베이스 어드레스(2155)에서 상기 시스템 메모리에 위치된다. 상기 I/O 스페이스 어드레스(2153)의 상기 DIR 부분(2154)은 상기 베이스 어드레스(2155)에 추가되어 상기 제 1 테이블(2152)에서 적당한 어드레스의 베이스 어드레스를 가리키는 엔트리(2160)를 식별한다. 일 실시예에서, 다수의 제 2 테이블들(2152)은 다중 레벨 룩업 테이블(2130)에 존재할 수 있다. 일반적으로, 상기 제 1 테이블(2150) 내의 상기 엔트리들(2160)의 각 하나는 상기 제 2 테이블(2152)에서의 어드레스들 중 하나의 시작 어드레스를 가리킨다. 다시 말하면, 각 엔트리(2180)는 그 자신의 개별ESAT(2152)를 가리킬 수 있다.
일 실시예에서, 상기 제 1 테이블(2150) 및 각각의 제 2 테이블들(2152)은 물리적 메모리에서 하나의 페이지(2110)를 차지한다. 따라서, 인에이블된 페이징이 상기 테이블들(2150, 2152)을 교환할 수 있는 x86 타입 마이크로프로세서의 기존의 메모리 관리 유닛은 필요에 따라서 상기 시스템 메모리의 내부 및 외부에 존재한다. 즉, 상기 테이블들(2150, 2152)의 다중 레벨 배치 때문에, 모든 테이블들(2152)이 상기 I/O 스페이스(340)에 동시에 존재하는 것이 요구된다. 상기 메모리 유닛(1947)에 현재 위치되지 않는 상기 테이블들(2150) 중 하나는 상기 제 1 테이블(2150) 내의 엔트리(2160)에 의하여 요청되고, x86 마이크로프로세서의 기존의 메모리 관리 유닛(도시되지 않음)은 하드 디스트 드라이브와 같은 메인 메모리로부터 상기 페이지(2110)를 판독하고, 상기 요청된 페이지(2110)를 액세스될 수 없는 상기 시스템 메모리에 저장한다. 이러한 상기 테이블들(2150, 2152)의 한페이지 사이즈는 상기 다중 레벨 룩업 테이블(2130)을 저장하는데 필요한 시스템 메모리의 양을 감소시키고, 상기 테이블들(2150, 2152)을 사용하여 I/O 스페이스(1940)에 액세스하는데 사용되는 메모리 교환의 양을 감소시킨다.
일 실시예에서, 각 페이지는 4킬로바이트(Kbyte) 크기이고, 상기 시스템 메모리는 전체적으로 16메가바이트(Mbyte)이상이다. 따라서, 대략적으로 4000개의 ESAT 테이블들(2152)이 페이지(2110)에 존재한다. 일 실시예에서, 상기 4000개의 ESAT 테이블들(2152)은 각기 4000개 세트의 보안 속성들을 포함할 수 있다. 또한, 상기 ESAT 디렉토리(2150)은 상기 4000개의 ESAT 테이블들(2152) 각각에 대한 시작어드레스를 포함한다. 상기 제 1 테이블(2150)의 상기 엔트리(2160)는 상기 적당한 제 2 테이블(2152)의 베이스 어드레스를 가리킨다. 상기 적절한 제 2 테이블(2152)의 요구되는 엔트리(2180)는 상기 I/O 스페이스 어드레스(2153)의 제 2 부분(2152)(상기 테이블 부분)을 상기 엔트리(2160)에 포함된 상기 베이스 어드레스(2155)에 추가함으로써 식별된다. 일 실시예에서, 상기 엔트리(2180)는 상기 I/O 스페이스(340) 내의 식별된 페이지(2100)에 관련된 소정의 보안 속성을 포함한다. 도 21A 및 도 21B에 도시된 상기 다중 테이블 방식은 예시적인 실시예이며, 본 발명의 개시의 이익을 가지는 당업자는 본 발명에 따라서 다양한 다중 테이블 방식들을 구현할 수 있을 것이다.
도 22는 도 22에서 (2200)으로 표시된 상기 SEM I/O 허용 비트맵의 일 실시예, 및 상기 SEM I/O 허용 비트맵(2200)에 액세스하는 메카니즘의 일 실시예를 도시하는 도면이다. 도 22의 메카니즘은 상기 BIU(406) 이내에 상기 로직 내에서 구현될 수 있고, 상기 컴퓨터 시스템(400)이 상기 SEM에서 동작하는 경우 적용될 수 있다. 도 22에서, 상기 일련의 SEM 레지스터들(610)은 모델 특정 레지스터(MSR)(2202)를 포함한다. 상기 MSR(2202)는 상기 SEM I/O 허용 비트맵(2200)의 시작(즉, 베이스) 어드레스를 저장하는데 사용된다. 상술한 바와 같이, 상기 컴퓨터 시스템(400)은 n 개의 상기한 SCID 값들을 가지고, 여기서 n은 정수이고, n≥1이다. 상기 SEM I/O 허용 비트맵(2200)은 상기 n개의 상이한 SCID 값들 각각에 대한 상이한 I/O 허용 비트맵을 포함한다. 상기 개별적인 I/O 허용 비트맵들 각각은 64k비트들 또는 8k 바이트를 포함한다.
도 22의 실시예에서, 상기 I/O 포트에 액세스하는 상기 I/O 명령을 포함하는 상기 메모리 페이지의 상기 SCID 값은 상기 모델 특정 레지스터(2202)의 컨텐츠(즉, SEM I/O 허용 비트맵(2200)의 베이스 어드레스)로부터 상기 SEM I/O 허용 비트맵(2200)을 차지하는 하나 이상의 64k 비트(8k 바이트) I/O 허용 비트맵으로의 오프셋으로서 사용된다. 결과적으로, 상기 SCID 값에 대응하는 상기 I/O 허용 비트맵이 액세스된다. 상기 I/O 포트 넘버는 그 후, 상기 SCID 값에 대응하는 상기 I/O 허용 비트맵으로의 비트 오프셋으로서 사용된다. 이러한 방식으로 액세스되는 비트는 상기 I/O 포트 넘버에 의하여 정의되는 상기 I/O 포트에 대응하는 비트이다.
도 23은 도 23에서 (2300)으로 표시된 상기 SEM I/O 허용 비트맵의 다른 실시예 및 상기 SEM I/O 허용 비트맵에 액세스하는 메카니즘의 다른 실시예를 도시하는 도면이다. 도 23의 메카니즘은 상기 BIU(406) 내의 로직에서 구현될 수 있다. 도 23의 실시예에서, 상기 SEM I/O 허용 비트맵(2300)은 단일의 64 비트(8k 바이트) I/O 허용 비트맵을 포함한다. 상기 I/O 포트 넘버는 상기 모델 특정 레지스터(2202)의 컨텐츠(즉, 보안 실행 모드 I/O 허용 비트맵(2200)의 베이스 어드레스)로부터 상기 I/O 허용 비트맵으로의 비트 오프셋으로서 사용된다. 이러한 방식으로 액세스된 비트는 상기 I/O 포트 넘버에 의하여 정의되는 상기 I/O 포트에 대응하는 비트이다. 달리 언급되지 않는 한, 상기 SEM I/O 허용 비트맵(2200)과 SEM I/O 허용 비트맵(2300)은 서로 변경가능하다.
도 24는 상기 SCID 값들의 할당 및 대응하는 SEM I/O 허용 비트맵(2200, 2300)의 생성이 어떻게 보안 목적을 위하여 상기 컴퓨터 시스템(400) 내의 "구획하는" 디바이스 드라이버 및 관련된 디바이스 하드웨어 유닛들에 작용하는지를 설명하는데 사용될 수 있다. 도 24는 도 5B에 유사한, 컴퓨터 시스템(400)의 다양한 하드웨어 성분과 소프트웨어 성분들 사이의 관계를 예시하는 도면으로, 여기서 상기 디바이스 드라이버(506A) 및 대응하는 디바이스 하드웨어 유닛(414A)은 제 1 보안 "구획"(2400)에 존재하고, 상기 디바이스 드라이버(506D) 및 대응하는 디바이스 하드웨어 유닛(414D)는 제 2 보안 구획(2404)에 존재한다. 상기 보안 구획(2400 및 2404)은 서로간에 개별적이고 분리된다. 단지 상기 디바이스 드라이버(506A)가 상기 디바이스 하드웨어 유닛(414A)에 액세스하도록 허용되고, 단지 상기 디바이스 드라이버(506D)가 상기 디바이스 하드웨어 유닛(414D)에 액세스하도록 허용된다. 디바이스 드라이버들 및 관련된 디바이스 하드웨어 유닛들의 이러한 "구획"은 상기 디바이스 하드웨어 유닛들의 상태에 부정적으로 영향을 주고, 상기 컴퓨터 시스템(400)의 적절한 동작을 방해하는 부당하거나 잘못된 코드를 방지하는데 도움을 준다.
예를 들어, 도 24의 실시예에서, 상기 디바이스 드라이버들(506A 및 506C)의 명령들을 포함하는 메모리 페이지들은 할당된 상이한 SCID 값들일 것이다. 상기 디바이스 드라이버(506A)의 상기 SCID 값에 대하여 생성된 제 1 SEM I/O 허용 비트맵(2200, 2300)은 상기 디바이스 드라이버(506A)로 하여금 상기 디바이스 하드웨어 유닛(414A)에 할당된 컴퓨터 시스템(400)의 I/O 어드레스 스페이스의 제 1 부분에 액세스하는 것을 허용하고, 상기 디바이스 드라이버(506A)로 하여금 상기 디바이스 하드웨어 유닛(414D)에 할당된 컴퓨터 시스템(400)의 I/O 어드레스 스페이스의 제2 부분에 액세스하는 것을 허용하지 않을 수 있다. 유사하게, 상기 디바이스 드라이버(506D)의 상기 SCID 값에 대하여 생성된 제 2 SEM I/O 허용 비트맵(2200, 2300)은 상기 디바이스 드라이버(506D)로 하여금 상기 디바이스 하드웨어 유닛(414D)에 할당된 컴퓨터 시스템(400)의 I/O 어드레스 스페이스의 제 2 부분에 액세스하는 것을 허용하고, 상기 디바이스 드라이버(506D)로 하여금 상기 디바이스 하드웨어 유닛(414A)에 할당된 컴퓨터 시스템(400)의 I/O 어드레스 스페이스의 제 1 부분에 액세스하는 것을 허용하지 않을 수 있다. 결과적으로, 단지 상기 디바이스 드라이버(506A)가 상기 디바이스 하드웨어 유닛(414A)에 액세스하도록 허용되고, 단지 상기 디바이스 드라이버(506D)가 상기 디바이스 하드웨어 유닛(414D)에 액세스하도록 허용된다.
전술한 시스템(300)과 그에 관하여 설명된 다야한 특성들의 측면에서, 상기 컴퓨터 시스템(400)을 동작하는 방법(3300)의 실시예가 도 25에 도시된다. 상기 방법(3300)은 블럭(1305)에서 보안 루틴을 실행하는 것을 포함한다. 상기 보안 루틴은 동작에 대한 보안 프로토콜들을 요구하지 않는 전형적인 소프트웨어 루틴일 수 있다. 상기 보안 루틴은 또한 최소의 보안 프로토콜들을 가지는 소프트웨어 루틴일 수도 있다. 상기 보안 루틴은 동작 시스템 호출을 포함할 수 있다.
상기 방법(3300)은 또한 블럭(3310)에서 상기 보안 루틴으로부터 요청을 수신하는 것을 포함한다. 상기 요청은, 예를 들어 메모리 트랜잭션, I/O 트랜잭션, 디바이스-투-디바이스 트랜잭션, 또는 소프트웨어 루틴을 포함할 수 있다. 상기 요청은 전형적으로 상기 컴퓨터 시스템(400)에 의하여 예측된 응답에 일치할 수 있을것이다. 블럭(3315)에서, 상기 방법(3300)은 하드웨어에서 상기 요청의 제 1 평가를 수행한다. 상기 제 1 평가는 특성화 또는 다른 넓은 가능한 보안 위험 결정을 포함할 수 있다. 상기 제 1 평가는 실제 보안 위험이 아닌, 그러나 가능하거나 잠재적인 보안 위험들을 포함하는 카테고리 또는 트랜잭션 유형 내에 있는 요청들을 플레그한다.
블럭(3320)에서 상기 방법(3300)은 다음으로, 상기 요청이 잠재적인 보안 위험인지를 결정한다. 결정 블럭(3320)에서, 상기 요청이 잠재적인 보안 위험으로 나타나지 않는 경우, 상기 방법(3300)은 블럭(3325)에서 상기 요청을 파일링한다. 상기 요청은 임의의 보안 위험들을 최소화하고 및/또는 상기 컴퓨터 시스템(400)의 응답 시간을 최대화하도록 충족될 수 있다. 결정 블럭(3320)에서 상기 요청이 잠재적인 보안 위험으로 나타난 경우, 상기 방법(3300)은 블럭(3330)에서 보다 자세한 소프트웨어에서의 제 2 평가를 수행한다. 상기 제 2 평가는 상기 요청 및 상기 예상된 응답으로 상기 요청을 충족하는데 임의의 잠재적 보안 위험들의 보다 철저한 평가를 포함한다.
블럭(3335)에서, 상기 방법(3300)은 다음으로 상기 요청이 보안 위험으로 나타나는지를 결정한다. 상기 결정 블럭(3335)에서 상기 요청이 보안 위험으로 나타나지 않는 경우, 상기 방법(3300)은 블럭(3325)에서 상기 요청을 파일링한다. 상기 요청은 임의의 보안 위험들을 최소화하고 및/또는 상기 컴퓨터 시스템(400)의 응답 시간을 최대화하도록 충족될 수 있다. 결정 블럭(3335)에서 상기 요청이 보안 위험으로 나타나는 경우, 상기 방법(3300)은 상기 위험이 본 장에서 설명된 본 발명의하나 이상의 양상들을 사용하여 관리가능한지를 결정하여, 블럭(3340)에서 상기 요청은 보안적으로 응답될 수 있다. 결정 블럭(3340)에서 상기 요청을 파일링하는 보안 위험이 관리될 수 있다고 보여지는 경우, 상기 방법(3300)은 블럭(3345)에서 상기 요청의 보안 버전을 파일링한다. 일 실시예에서, 상기 응답은 상기 요청이 요청된 것을 충족하지 않았다는 것의 어떤 표시도 수신하지 않는 비보안 루틴으로 가상화함으로써 수행된다. 상기 요청은 소프트웨어 구성에 의하여 대신 파일링되어, 상기 컴퓨터 시스템(400)으로 하여금 상기 요청에 관련된 보안 문제들을 트랩(trap)하거나 포함하도록 허용한다. 상기 요청을 파일링하는데 상기 보안 위험이 관리될 수 없다고 보여지면, 상기 방법(3300)은 블럭(3350)에서 상기 요청을 거부 또는 무시한다. 상기 방법(3300)은 또한 가상의 또는 소정의 응답으로 상기 요청에 또한 응답할 수 있다.
블럭(3315)에서, 상기 제 1 평가는 하드웨어에서 빠르게 수행되는 장점을 가진다. 블럭(3330)에서, 상기 제 2 평가는 소프트웨어에서 보다 자세하게 수행되는 장점을 가진다. 상기 소프트웨어 평가는 개발되는 신규 보안 위험 알고리즘으로 또한 쉽게 업그레이드될 수 있다.
하기의 요청들 및 가능한 보안 응답들은 단지 예시적인 것이고, 어떤 임의의 청구항들을 제한하려고 의도된 것이 아니다. 보안된 확실한 데이터를 포함하는 메모리 페이지에 기입되는 요청을 고려하자. 상기 기입은 요청되는 것으로서 허용될 수 없다. 상기 메모리 페이지는 가상 페이지 및 상기 가상 페이지로 허용되는 기입으로 가상화된다. 상기 컴퓨터 시스템(400)은 그 후 상기 가상 페이지로의 변화들을 평가할 수 있다.
보안된 레지스터로의 기입에 대한 다음의 요청을 고려하자. 상기 보호된 레지스터는 가상 레지스터로 가상화될 수 있다. 상기 기입은 상기 가상 레지스터로 허용될 수 있고, 보안 위험에 대하여 평가될 수 있다. 또한 실시간 클록을 변경하는 요청을 고려하자. 상기 실시간 클록은 가상 클록으로 가상화될 수 있다. 상기 요청는 상기 실시간 클록의 변화없이 상기 비보안 루틴에 대하여 충족될 수 있다.
상술한 바와 같은 본 발명의 임의의 양상은 하드웨어 또는 소프트웨어로 구현될 수 있다. 따라서, 결과적으로 본 장의 자세한 설명의 일부분은 하드웨어 구현된 절차의 형태로 그리고 본 장의 자세한 설명의 일부분은 컴퓨팅 시스템 또는 컴퓨팅 디바이스의 메모리 내의 데이터 비트들 상에 동작들의 심볼적인 표현들을 포함하는 소프트웨어 구현된 절차의 형태로 보여질 것이다. 이러한 기술 및 표현들은 하드웨어 및 소프트웨어 모두를 사용하는 기술 분야의 당업자들이 그들의 연구의 실체를 가장 효과적으로 전달하는데 사용되는 수단이다.
상기 개시된 본 발명의 양상들은 하드웨어나 소프트웨어에서 구현될 수 있다. 그래서, 본원의 상세한 설명의 일부는 결과적으로는 하드웨어로 구현된 과정의 관점에서 나타나고 본원의 상세한 설명의 일부는 결과적으로는 컴퓨터 시스템이나 컴퓨팅 디바이스의 메모리 내의 데이터 비트들 상의 동작들의 기호화된 표현들을 포함하는 소프트웨어로 구현된 과정의 관점에서 나타난다. 이러한 설명 및 표현들은 본 기술분야의 당업자들이 그들의 작업의 요지를 효율적으로 하드웨어 및 소프트웨어를 사용하는 기술 분야의 당업자들에게 전달하기 위해 사용된다. 둘 모두의과정 및 동작은 물리적인 양들의 물리적인 조정들을 요구한다. 보통 소프트웨어에서는 필수적인 것은 아니지만, 이러한 양들은 저장되고 전달되고 조합되고 비교되고 또다르게 조작될 수 있는 전기적, 자기적 또는 광학적 신호들의 형태를 사용한다.
그러나 이러한 모든 것들 및 유사한 용어들은 적당한 물리적 양들과 관련되어 있고 이러한 정량화에 적용되는 단지 편리한 라벨들이라는 것을 명심해야 한다. 본 명세서를 통해 명확하게 언급되지 않았다면 또는 다른 점에서 명백한 것처럼, 이러한 묘사들은 다른 데이터 안으로의 어떤 전기적 디바이스들의 저장 내의 물리적인 즉 전기적, 자기적 또는 광학적인 양들로써 나타난, 유사하게는 상기 저장 내의 또는 전달 또는 디스플레이 장치들 내에서 물리적 양들을 나타낸 데이터를 조작 및 변형시키는 전기적 디바이스의 작동이나 과정을 말한다. 제한 없이, 묘사로 나타난 예시적인 용어들은 용어들 "처리(processing)", "컴퓨팅(computing)", "계산(calculating)", "결정(determining)", "디스플레이(displaying)" 및 유사한 것이다.
소프트웨어로 구현된 본 발명의 양상은 전형적으로 어떤 형태의 프로그램 저장 매체에 앤코드 되거나 또는 어떤 형태의 전송 매체에서 구현된다. 상기 프로그램 저장 매체는 자기적 즉, 플로피 디스켓 또는 하드 드라이브이거나 또는 광학적 즉, 컴팩트 디스크 판독 전용 메모리 또는 CD ROM 및 판독 전용 또는 랜덤 액세스 일 수 있다. 유사하게, 상기 전송 매체는 트위스트된 전선 쌍, 동축 케이블, 광학 섬유 기술 분야에 알려진 또는 다른 어떤 적절한 전송 매체일 수 있다. 본 발명은주어진 구현의 이러한 양상들에 의해 제한되지 않는다.
상기 개시된 특정 실시예들은 단지 예시적인 것으로서, 본 발명은 서로 다르지만, 본원의 가르침의 이득을 갖는 이 기술분야의 당업자들에게 명백한 등가적인 방식으로 변경 및 실행될 수 있다. 또한, 본 발명은 본원에 도시된 구조 또는 설계의 세부적인 사항들에 한정되지 않으며, 하기의 청구항들에 의해서만 정의된다. 따라서, 상기 개시된 특정 실시예들은 본 발명의 청구 범위 내에서 변동 또는 변경될 수 있다. 그러므로, 본원에서 보호받고자 하는 권리는 하기의 청구항들에서 정의된다.

Claims (10)

  1. 보안 루틴 및 비보안 루틴을 실행하도록 구성가능한 프로세서(404)와; 그리고
    상기 비보안 루틴에 관련된 요청의 제 1 평가를 수행하기 위하여 연결된 하드웨어를 포함하고,
    상기 하드웨어는 또한 상기 요청의 통지를 상기 보안 루틴에 제공하도록 되며, 상기 보안 루틴은 상기 요청의 제 2 평가를 수행하도록 되며, 상기 보안 루틴은 또한 상기 요청에 요청된 응답을 거절하도록 되는 것을 특징으로 하는 컴퓨터 시스템(400A-B).
  2. 제 1항에 있어서,
    상기 보안 루틴은 상기 요청의 상기 제 2 평가를 수행하도록 된 소프트웨어 보안 예외 처리기(1210)를 포함하는 것을 특징으로 하는 컴퓨터 시스템(400A-B).
  3. 제 2항에 있어서,
    상기 소프트웨어 보안 예외 처리기(1210)는 상기 요청이 상기 제 2 평가를 통과한 경우 상기 요청된 응답을 허용하도록 된 것을 특징으로 하는 컴퓨터 시스템(400A-B).
  4. 제 1항에 있어서,
    상기 보안 루틴은 보안 커넬(505)의 성분이며, 상기 보안 커넬(505)은 운영 시스템(502)의 성분인 것을 특징으로 하는 컴퓨터 시스템(400A-B).
  5. 제 1항에 있어서,
    상기 제 1 평가는 분류화이며, 상기 제 2 평가는 보안 위험 평가인 것을 특징으로 하는 컴퓨터 시스템(400A-B).
  6. 제 5항에 있어서,
    상기 분류화는 상기 요청을 최소 보안 위험 범주 및 잠재적인 고 보안 위험 범주를 포함하는 다수의 범주들과 비교하는 것을 포함하며, 상기 하드웨어는 상기 요청이 잠재적인 고 보안 위험 범주 중 하나에 있는 경우 상기 요청을 상기 보안 루틴에게 통지하는 것을 특징으로 하는 컴퓨터 시스템(400A-B).
  7. 제 1항에 있어서,
    상기 하드웨어는 적어도 하나의 보안 실행 모드 비트(609)를 저장하는 보안 실행 모드 레지스터(610), I/O 보호 비트맵(2200)을 저장하는 메모리(406) 및 보안 속성 데이터 구조를 포함하며, 상기 보안 루틴은 적어도 하나의 마이크로코드(650) 및 유한 상태 머신을 포함하는 것을 특징으로 하는 컴퓨터 시스템(400A-B).
  8. 비보안 루틴을 실행하는 단계와;
    상기 비보안 루틴으로부터 요청을 수신하는 단계와;
    하드웨어에서 상기 요청의 제 1 평가를 수행하는 단계와; 그리고
    소프트웨어 내의 보안 루틴에서 상기 요청의 제 2 평가를 수행하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 제 8항에 있어서,
    상기 하드웨어에서 상기 요청의 제 1 평가를 수행하는 단계는 하드웨어에서 상기 요청의 분류화를 수행하는 단계를 포함하며,
    상기 소프트웨어 내의 보안 루틴에서 상기 요청의 제 2 평가를 수행하는 단계는 소프트웨어 내의 상기 보안 루틴에서 상기 요청의 보안 위험 평가를 수행하는 것을 특징으로 하는 방법.
  10. 제 9항에 있어서,
    하드웨어에서 상기 요청의 분류화를 수행하는 단계는 상기 요청을 적은 보안 위험 범주 및 잠재적인 보안 위험 범주를 포함하는 다수의 범주들과 비교하는 단계와; 그리고
    상기 요청이 잠재적인 보안 위험 범주 중 하나에 있는 경우 상기 요청을 상기 보안 루틴으로 통과시키는 단계를 포함하는 것을 특징으로 하는 방법.
KR1020047019257A 2002-05-31 2002-12-17 보안 실행 모드 하에서 보안 커넬을 사용하는 트러스트된클라이언트 KR100975981B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/160,984 2002-05-31
US10/160,984 US20030226014A1 (en) 2002-05-31 2002-05-31 Trusted client utilizing security kernel under secure execution mode
PCT/US2002/040218 WO2003102745A2 (en) 2002-05-31 2002-12-17 Trusted client utilizing security kernel under secure execution mode

Publications (2)

Publication Number Publication Date
KR20050006282A true KR20050006282A (ko) 2005-01-15
KR100975981B1 KR100975981B1 (ko) 2010-08-16

Family

ID=29583316

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047019257A KR100975981B1 (ko) 2002-05-31 2002-12-17 보안 실행 모드 하에서 보안 커넬을 사용하는 트러스트된클라이언트

Country Status (9)

Country Link
US (1) US20030226014A1 (ko)
EP (1) EP1509839A2 (ko)
JP (1) JP4688490B2 (ko)
KR (1) KR100975981B1 (ko)
CN (1) CN1307535C (ko)
AU (1) AU2002360617A1 (ko)
GB (1) GB2405976B (ko)
TW (1) TWI289787B (ko)
WO (1) WO2003102745A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101017015B1 (ko) * 2008-11-17 2011-02-23 (주)소만사 네트워크 기반 고성능 콘텐츠 보안 시스템 및 방법

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7130951B1 (en) * 2002-04-18 2006-10-31 Advanced Micro Devices, Inc. Method for selectively disabling interrupts on a secure execution mode-capable processor
US7334123B2 (en) * 2003-05-02 2008-02-19 Advanced Micro Devices, Inc. Computer system including a bus bridge for connection to a security services processor
US8838950B2 (en) * 2003-06-23 2014-09-16 International Business Machines Corporation Security architecture for system on chip
US7089397B1 (en) * 2003-07-03 2006-08-08 Transmeta Corporation Method and system for caching attribute data for matching attributes with physical addresses
US7496958B2 (en) * 2003-10-29 2009-02-24 Qualcomm Incorporated System for selectively enabling operating modes of a device
KR100591555B1 (ko) 2004-01-19 2006-06-21 주식회사 전유시스템 Pam 인증 기반 보안 커널 시스템 및 그 제어방법
US8533777B2 (en) * 2004-12-29 2013-09-10 Intel Corporation Mechanism to determine trust of out-of-band management agents
JP2006203564A (ja) * 2005-01-20 2006-08-03 Nara Institute Of Science & Technology マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法
US7617534B1 (en) 2005-08-26 2009-11-10 Symantec Corporation Detection of SYSENTER/SYSCALL hijacking
US20070168574A1 (en) * 2005-09-28 2007-07-19 Dell Products L.P. System and method for securing access to general purpose input/output ports in a computer system
US7685638B1 (en) 2005-12-13 2010-03-23 Symantec Corporation Dynamic replacement of system call tables
US8214296B2 (en) * 2006-02-14 2012-07-03 Microsoft Corporation Disaggregated secure execution environment
EP1865435A1 (en) * 2006-06-06 2007-12-12 Texas Instruments France Enhanced exception handling
US8245307B1 (en) 2006-12-18 2012-08-14 Nvidia Corporation Providing secure access to a secret
US20090144821A1 (en) * 2007-11-30 2009-06-04 Chung Shan Institute Of Science And Technology, Armaments Bureau, M.N.D. Auxiliary method for investigating lurking program incidents
US9348784B2 (en) * 2008-12-01 2016-05-24 Micron Technology, Inc. Systems and methods for managing endian mode of a device
CN101833621B (zh) * 2010-04-27 2011-11-30 广州广电运通金融电子股份有限公司 终端安全审计方法及系统
US8495750B2 (en) 2010-08-31 2013-07-23 International Business Machines Corporation Filesystem management and security system
KR101895453B1 (ko) 2011-11-09 2018-10-25 삼성전자주식회사 이기종 컴퓨팅 환경에서 보안 강화 방법 및 장치
US9225719B2 (en) * 2011-12-12 2015-12-29 Jpmorgan Chase Bank, N.A. System and method for trusted pair security
WO2013128060A1 (en) * 2012-02-27 2013-09-06 Nokia Corporation Access control for hardware units
US9204522B2 (en) * 2012-10-16 2015-12-01 Productions Resource Group, LLC Remote communications protocol
US9207940B2 (en) * 2013-03-15 2015-12-08 Intel Corporation Robust and high performance instructions for system call
JP6370098B2 (ja) * 2014-05-16 2018-08-08 杉中 順子 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
US20170109526A1 (en) * 2015-10-20 2017-04-20 Intel Corporation Systems and methods for providing anti-malware protection and malware forensics on storage devices
US10375106B1 (en) * 2016-01-13 2019-08-06 National Technology & Engineering Solutions Of Sandia, Llc Backplane filtering and firewalls
WO2017120812A1 (en) * 2016-01-14 2017-07-20 Intel Corporation Secure communication channel for system management mode
CN108345522B (zh) * 2017-12-15 2019-03-29 清华大学 用于对中央处理器cpu进行安全检测的方法、装置和系统
US11182192B2 (en) * 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US10747875B1 (en) * 2020-03-19 2020-08-18 Cyberark Software Ltd. Customizing operating system kernels with secure kernel modules

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4621321A (en) * 1984-02-16 1986-11-04 Honeywell Inc. Secure data processing system architecture
US5027273A (en) * 1985-04-10 1991-06-25 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US4984272A (en) * 1988-11-30 1991-01-08 At&T Bell Laboratories Secure file handling in a computer operating system
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5303378A (en) * 1991-05-21 1994-04-12 Compaq Computer Corporation Reentrant protected mode kernel using virtual 8086 mode interrupt service routines
JPH06324910A (ja) * 1993-05-13 1994-11-25 Hitachi Ltd コンピュータシステムのアクセス検出装置
US5684948A (en) * 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US5835594A (en) * 1996-02-09 1998-11-10 Intel Corporation Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
US5881282A (en) * 1996-12-10 1999-03-09 Intel Corporation Controlling ill-behaved computer add-on device through a virtual execution mode
US6282657B1 (en) * 1997-09-16 2001-08-28 Safenet, Inc. Kernel mode protection
US6292798B1 (en) * 1998-09-09 2001-09-18 International Business Machines Corporation Method and system for controlling access to data resources and protecting computing system resources from unauthorized access
US7013296B1 (en) * 1999-06-08 2006-03-14 The Trustees Of Columbia University In The City Of New York Using electronic security value units to control access to a resource
US6745306B1 (en) * 1999-07-29 2004-06-01 Microsoft Corporation Method and system for restricting the load of physical address translations of virtual addresses
US6880108B1 (en) * 1999-07-29 2005-04-12 International Business Machines Corporation Risk assessment methodology for AIX-based computer systems
JP3607540B2 (ja) * 1999-08-18 2005-01-05 エヌイーシーシステムテクノロジー株式会社 プログラム単位メモリアクセス属性管理方式
US6718485B1 (en) * 1999-11-16 2004-04-06 Parasoft Corporation Software emulating hardware for analyzing memory references of a computer program
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
GB0016835D0 (en) * 2000-07-07 2000-08-30 Messagelabs Limited Method of, and system for, processing email
US7185192B1 (en) * 2000-07-07 2007-02-27 Emc Corporation Methods and apparatus for controlling access to a resource
US6738875B1 (en) * 2000-07-31 2004-05-18 Microsoft Corporation Efficient write-watch mechanism useful for garbage collection in a computer system
US20020083183A1 (en) * 2000-11-06 2002-06-27 Sanjay Pujare Conventionally coded application conversion system for streamed delivery and execution
US7058978B2 (en) * 2000-12-27 2006-06-06 Microsoft Corporation Security component for a computing device
US6789156B1 (en) * 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
US7130613B2 (en) * 2001-08-30 2006-10-31 Motorola, Inc. Method for reducing fraudulent system access
US8051301B2 (en) * 2001-11-13 2011-11-01 Advanced Micro Devices, Inc. Memory management system and method providing linear address based memory access security
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
US7127579B2 (en) * 2002-03-26 2006-10-24 Intel Corporation Hardened extended firmware interface framework

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101017015B1 (ko) * 2008-11-17 2011-02-23 (주)소만사 네트워크 기반 고성능 콘텐츠 보안 시스템 및 방법

Also Published As

Publication number Publication date
TWI289787B (en) 2007-11-11
AU2002360617A8 (en) 2003-12-19
WO2003102745A2 (en) 2003-12-11
GB2405976A (en) 2005-03-16
JP4688490B2 (ja) 2011-05-25
EP1509839A2 (en) 2005-03-02
CN1307535C (zh) 2007-03-28
WO2003102745A3 (en) 2004-03-25
GB0427590D0 (en) 2005-01-19
US20030226014A1 (en) 2003-12-04
JP2005528686A (ja) 2005-09-22
TW200307216A (en) 2003-12-01
AU2002360617A1 (en) 2003-12-19
KR100975981B1 (ko) 2010-08-16
GB2405976B (en) 2007-02-21
CN1630849A (zh) 2005-06-22

Similar Documents

Publication Publication Date Title
KR100975981B1 (ko) 보안 실행 모드 하에서 보안 커넬을 사용하는 트러스트된클라이언트
US5469556A (en) Resource access security system for controlling access to resources of a data processing system
US6678825B1 (en) Controlling access to multiple isolated memories in an isolated execution environment
US7631160B2 (en) Method and apparatus for securing portions of memory
US6854039B1 (en) Memory management system and method providing increased memory access security
US7401358B1 (en) Method of controlling access to control registers of a microprocessor
US7043616B1 (en) Method of controlling access to model specific registers of a microprocessor
US8135962B2 (en) System and method providing region-granular, hardware-controlled memory encryption
US4858117A (en) Apparatus and method for preventing computer access by unauthorized personnel
US6823433B1 (en) Memory management system and method for providing physical address based memory access security
JP4295111B2 (ja) メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法
US7130977B1 (en) Controlling access to a control register of a microprocessor
US20080222663A1 (en) Policy-Based Direct Memory Access Control
KR100992611B1 (ko) 보안 예외 스택을 이용하여 예외를 처리하는 방법 및 시스템
US7082507B1 (en) Method of controlling access to an address translation data structure of a computer system
KR101001344B1 (ko) 구획된 보안을 위한 입/출력 허가 비트맵
US7426644B1 (en) System and method for handling device accesses to a memory providing increased memory access security
WO2002006929A2 (en) Controlling access to multiple isolated memories in an isolated execution environment
US7383584B2 (en) System and method for controlling device-to-device accesses within a computer system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130723

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140722

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150716

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160720

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170719

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180718

Year of fee payment: 9