KR20040101332A - 구획된 보안을 위한 입/출력 허가 비트맵 - Google Patents

구획된 보안을 위한 입/출력 허가 비트맵 Download PDF

Info

Publication number
KR20040101332A
KR20040101332A KR10-2004-7014855A KR20047014855A KR20040101332A KR 20040101332 A KR20040101332 A KR 20040101332A KR 20047014855 A KR20047014855 A KR 20047014855A KR 20040101332 A KR20040101332 A KR 20040101332A
Authority
KR
South Korea
Prior art keywords
port
permission
security context
grant
port number
Prior art date
Application number
KR10-2004-7014855A
Other languages
English (en)
Other versions
KR101001344B1 (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 KR20040101332A publication Critical patent/KR20040101332A/ko
Application granted granted Critical
Publication of KR101001344B1 publication Critical patent/KR101001344B1/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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)
  • Bus Control (AREA)

Abstract

본 발명은 I/O 명령을 선택적으로 실행하기 위한 방법 및 장치에 관한 것이다. 이 방법은 메모리(260)에 I/O 허가 비트맵(600)을 생성하고, I/O 포트 번호 및 보안 콘텍스트 식별 값을 수신하는 것을 포함한다. 이 방법은 또한 보안 콘텍스트 식별 값 및 I/O 포트번호를 사용하여 I/O 포트에 대응하는 허가 비트를 얻기 위해 저장된 I/O 허가 비트맵(600)을 액세스하고, I/O 포트에 대응하는 허가 비트의 값에 따라 I/O 명령을 실행하는 것을 포함한다. I/O 허가 비트맵(600)은 복수의 허가 비트를 포함한다. 각각의 허가 비트는 복수의 I/O 포트의 서로 다른 포트에 대응한다. 각각의 허가 비트는 대응하는 I/O 포트에의 액세스가 허락되었는지를 가리키는 값을 갖는다. I/O 포트 번호는 I/O 명령에 의해 참조되는 I/O 포트를 가리킨다. 보안 콘텍스트 식별 값은 I/O 명령을 포함하는 메모리 장소의 보안 콘텍스트 레벨을 가리킨다.

Description

구획된 보안을 위한 입/출력 허가 비트맵{INPUT/OUTPUT PERMISSION BITMAPS FOR COMPARTMENTALIZED SECURITY}
80x86(즉, "x86") 프로세서 아키텍춰는 메모리 어드레스 공간으로부터 구분된 입/출력(I/O) 어드레스 공간을 가능하게 한다. x86 I/O 어드레스 공간은 0에서 65,535 (0000h 내지 FFFFh, 여기서 "h"는 16진수를 가리킨다)의 어드레스에 위치한 64k 8 비트 데이터 유닛의 연속하는 블록이고, 전형적으로 주변 장치(예를 들어, 키보드, 디스크 드라이브 등)와의 통신에 사용된다. 주변 장치는 전형적으로 "I/O 포트” 또는 간단히 "포트”라고 하는 특수한 액세스 레지스터를 포함한다. 이 I/O 포트는 8 비트 포트, 16 비트 포트 또는 32 비트 포트일 수 있다. 8 비트 포트들은 그들의 고유한 바이트 어드레스를 사용하여 액세스된다. 16비트 I/O 포트는 두개의 인접하는 바이트를 포함하고, 32 비트 I/O 포트는 네 개의 인접하는 바이트를 포함한다. 16 및 32 비트 I/O 포트는 모든 인접하는 바이트의 최하위 어드레스를 사용하여 액세스된다.
x86 프로세서의 I/O 어드레스 공간의 어드레스는 x86 프로세서에 결합된 주변 장치의 서로 다른 포트에 대응할 수 있다. x86 프로세서는, 어드레스 신호 라인에서 구동되는 어드레스 신호를 거쳐 운반되는 어드레스가 메모리 어드레스 공간 또는 I/O 어드레스 공간에 있는 허가 비트(permission bit)를 가리키는 M/IO (메모리-I/O) 신호에 의해 M/IO 신호 라인을 구동시킨다.
x86 명령 세트는 I/O 어드레스 공간을 액세스하는 I/O 명령을 포함한다. x86 I/O 명령은 x86 프로세서의 내부 레지스터와 I/O 어드레스 공간에 맵핑된 I/O 포트 간에 그리고 x86 프로세서에 결합된 메모리와 I/O포트 간에 데이터를 교환하기 위한 방법을 제공한다. x86 I/O 명령은 "IN" (포트로부터의 입력) 및 "OUT" (포트로의 출력) 레지스터 I/O 명령과, "INS" (포트로부터의 입력 스트링) 및 "OUTS" (포트로의 출력 스트링) 블록 또는 스트링 I/O 명령을 포함한다. 블록 x86 명령은 I/O 포트에서 메모리로 그리고 메모리에서 I/O 포트로 직접 데이터를 전달한다.
"태스크”는 단일의 순차적인 실행 스레드이다. 80286 및 후의 x86 프로세서는 다수의 태스크를 동시에 실행하는 멀티태스킹을 지원한다. 실제로 단지 하나의 태스크만이 임의의 시간에 실행하고 있으며, x86 프로세서는 다수의 태스크 사이를 지시에 따라 단순히 전환한다.
근래의 x86 프로세서는 실제 어드레스 또는 "실제(real)” 모드, 보호된 가상 어드레스 (protected virtual address) 또는 "보호”모드, 및 가상 8086 또는 "가상” 모드를 포함하는 몇몇 서로 다른 모드 중의 하나로 동작할 수 있다. 보호모드에서는, I/O 명령의 사용은 FLAGS 레지스터 내의 IOPL (I/O 특권레벨)의 설정에 의해 제어된다. 80386 및 후의 x86 프로세서에서는, I/O 어드레스 공간에 맵핑된 개별적인 포트에의 액세스는 태스크의 태스크 상태 세그먼트(TSS) 내의 I/O 허가 비트맵(permission bitmap)에 의해 제어된다. 대부분의 보호 모드 운영체제는 I/O에의 액세스를 그들 자신(특권레벨 0) 및 적은 수의 "트러스트드(trusted)” 장치 드라이버(특권레벨(privilege level) 1)에 제한한다.
80386 또는 x86 프로세서가 보호 모드로 동작할 때에는, 두 가지 메커니즘을 이용하여 태스크에 의한 I/O 어드레스 공간에의 액세스를 제한한다. 먼저, I/O 명령의 사용은 플래그 (EFLAGS) 레지스터 내의 I/O 특권레벨 (IOPL) 필드의 설정에 의해 제어된다. 둘째, I/O 공간 내의 개별적인 I/O 포트들은 태스크 각각의 태스크 상태 세그먼트(TSS) 내의 I/O 허가 비트맵을 거쳐 제어될 수 있다. I/O 허가 비트맵 메커니즘은 80386 및 후의 x86 프로세서 상에서만 구현될 수 있다는 것을 알아야 한다.
대부분의 보호 모드 운영체제는 I/O 명령의 사용을 자신과 적은 수의 "트러스트드” 장치 드라이버에 제한하려 시도한다. x86 프로세서 아키텍춰의 동심 링 특권모델(concentric ring privilege model)에서, 보호 모드 운영체제 소프트웨어는 전형적으로 특권레벨 0에서 내부 링에서 실행하고, 트러스트드 장치 드라이버 소프트웨어는 전형적으로 특권레벨 1 또는 특권레벨 0에서 내부 링을 둘러싸는 링에서 실행한다. 어플리케이션 프로그램은 전형적으로 특권레벨 3의 외부 링에서 실행한다.
보호 모드에서 동작하는 x86 프로세서가 태스크의 I/O 명령을 실행할 때, x86 프로세서는 먼저 태스크의 현재 특권레벨(CPL)을 I/O 특권레벨(IOPL)에 비교한다. 만일 태스크의 현재의 특권레벨(CPL)이 I/O 특권레벨(IOPL)과 적어도 같다면(즉, 수치적으로 적거나 같은), x86 프로세서는 I/O 명령을 실행한다. 한편, 만일 태스크의 현재의 특권레벨(CPL)이 I/O 특권레벨(IOPL)보다 못하다면(즉, 수치적으로 크다면), x86 프로세서는 태스크의 태스크 상태 세그먼트(TSS) 내의 I/O 허가 비트맵을 점검한다.
도 1은 메모리에 저장된, x86 아키텍춰의 태스크 상태 세그먼트(TSS) 및 x86 아키텍춰의 대응하는 I/O 허가 비트맵을 도시하는 다이어그램이다. 도 1은 메모리(100)에 저장된, 태스크 상태 세그먼트(TSS)(102), 대응하는 I/O 허가 비트맵(104)을 도시하는 다이어그램이다. 태스크 상태 세그먼트(TSS)(102)는 메모리 세그먼트의 시작(즉, 베이스)에서 끝나고, I/O 허가 비트맵(104)은 메모리 세그먼트의 끝 (즉, 한계(limit))에서 끝난다. 태스크 상태 세그먼트(TSS)(102)는 메모리 세그먼트 내의 상대 어드레스(66h)에서 16 비트 "I/O 맵 베이스”를 포함한다. I/O 맵 베이스는 대응하는 I/O 허가 비트맵(104)의 첫 번째 바이트인, 바이트로의 오프셋을 포함한다.
I/O 허가 비트맵(104)의 각 비트는 I/O 공간 내의 바이트에 대응한다. 예를 들어, I/O 허가 비트맵(104)의 첫 번째 비트는 I/O 공간에서 어드레스 "0”에 있는 8 비트 포트를 가리키고, 두 번째 비트는 I/O 공간에서 어드레스 "1”에 있는 8 비트 포트를 가리킨다... 등등. 액세스되는 I/O 포트의 수는 I/O 허가 비트맵(104)에의 비트 오프셋으로서 사용된다. 만일 액세스되는 I/O 포트에 대응하는 I/O 허가 비트맵(104)의 비트가 "0”으로 클리어되면, x86 프로세서(메모리(100)에 결합되고 I/O 허가 비트맵(104)을 액세스함)는 I/O 명령을 실행한다. 만일 비트가 "1”로 세트되면, x86 프로세서는 I/O 명령을 실행하지 않고, 전체적인 보호 폴트(protection fault)를 발생한다. 16 비트 워드 또는 32 비트 더블 워드(double word)일 때, I/O 포트는 액세스되고, 포트의 인접하는 바이트를 표현하는 모든 비트는 I/O 명령을 실행하는 x86 프로세서에 대해 "0”으로 클리어되어야 한다.
I/O 공간들이 적고 I/O 공간의 모든 64k 포트를 표현하는데 8k 바이트가 필요하다면, I/O 허가 비트맵 보호 메커니즘은 I/O 허가 비트맵을 축약하는 방법을 포함한다. I/O 허가 비트맵의 끝을 벗어나 연장하는 어드레스를 갖는 I/O 포트는 I/O 허가 비트맵 내의 대응하는 비트가 "1”로 설정되는 것으로 간주된다.
x86 프로세서 아키텍춰의 I/O 보호 비트맵 메커니즘이 I/O 어드레스 공간을 적절히 보호하기에 충분하지 않다는 문제가 발생한다. 예를 들어, 감독자 레벨(예를 들어, CPL을 갖는)에서 실행하는 임의의 태스크는 임의의 시간에 I/O 어드레스 공간의 임의의 포트를 액세스할 수 있다. 또한, 감독자 레벨에서 실행하는 제1 태스크는, I/O 어드레스 공간 내의 모든 포트 또는 임의의 포트에의 제2 태스크 액세스를 허용하기 위해 제2 태스크의 I/O 허가 비트맵내의 비트를 수정할 수 있다. 이때 두 번째 태스크는 하나 이상의 포트를 계속 액세스할 수 있다. 본 발명은 x86 아키텍춰의 전술한 부적절한 I/O 공간 보호 문제를 해결 또는 적어도 감소시킬 수 있는 시스템 및/또는 방법에 관한 것이다.
본 발명은 총체적으로 메모리 관리 시스템 및 방법에 관한 것으로, 더 상세하게는 메모리에 저장된 데이터에 대한 보호를 제공하는 메모리 관리 시스템 및 방법에 관한 것이다.
도 1은 메모리에 저장된, x86 아키텍춰의 태스크 상태 세그먼트(TSS) 및 x86 아키텍춰의 대응하는 I/O 허가 비트맵을 도시하는 다이어그램도.
도 2는 중앙처리장치(CPU), 시스템 또는 "호스트” 브리지, 메모리, 제1 장치 버스(예를 들어, 주변 구성요소 상호접속부 또는 PCI 버스), 장치 버스 브리지, 제2 장치 버스(예를 들어, 업계 표준 아키텍춰 또는 ISA 버스) 및 네 개의 장치 하드웨어 유닛 - 여기서 CPU는 CPU에 의해 발생된 비허가 액세스로부터 장치 하드웨어를 보호하기 위해 사용된 입/출력(I/O) 보안 체크 유닛(SCU)을 포함함 -을 포함하는 컴퓨터 시스템의 일 실시예를 도시하는 다이어그램도.
도 3은 도 2의 컴퓨터 시스템의 다양한 하드웨어 및 소프트웨어 구성요소 간의 관계를 도시하는 다이어그램도.
도 4는 도 2의 컴퓨터 시스템(200)의 CPU - 상기 CPU는 실행 유닛, 메모리 관리 유닛(MMU), 및 실행 유닛과 MMU에 결합된 버스 인터페이스 유닛(BIU)을 포함하고, 상기 BIU는 I/O SCU를 포함함-의 일 실시예를 도시하는 다이어그램도.
도 5는 도 4의 I/O SCU의 일 실시예를 도시하는 다이어그램도.
도 6은 도 2의 메모리에 저장된 안전 실행 모드(SEM) I/O 허가 비트맵의 일 실시예 및 SEM I/O 허가 비트맵을 위한 메커니즘의 일 실시예를 도시하는 다이어그램도.
도 7은 도 6의 SEM I/O 허가 비트맵의 다른 실시예 및 SEM I/O 허가 비트맵을 액세스하기 위한 메커니즘의 다른 실시예를 도시하는 다이어그램도.
도 8은 도 2의 컴퓨터 시스템의 CPU - 상기 CPU는 실행 유닛, MMU, 상기 실행 유닛과 MMU에 결합된 버스 인터페이스 유닛(BIU), 및 상기 실행 유닛, MMU 및 BIU에 결합된 마이크로코드 엔진을 포함하고, 상기 마이크로코드 엔진은 마이크로코드 저장소에 저장된 마이크로코드 명령을 실행하고, 상기 마이크로코드 명령에 따라 상기 실행 유닛, MMU 및 BIU의 동작을 제어하는 신호들을 발생함-의 대체 실시예를 도시하는 다이어그램도.
도 9는 도 2의 컴퓨터 시스템의 다양한 하드웨어 및 소프트웨어 - 제1 장치 드라이버와 대응하는 제1 장치 하드웨어 유닛은 제1 보안 "구획”에 상주하고, 제2 장치 드라이버와 대응하는 제2 장치 하드웨어 유닛은 상기 제1 보안 구획과 분리되고 동작적으로 격리된 제2 보안 구획에 상주함 - 간의 관계를 도시하는 다이어그램도.
비록 본 발명이 다양하게 수정 가능하지만, 그 특정 실시예가 예로서 도면에 도시되고 이하 상세히 설명된다. 그러나, 특정 실시예의 설명은 본 발명을 개시된 특정 형태에 본 발명을 한정하려 의도한 것이 아니고, 첨부하는 청구범위에 한정된 바와 같이 본 발명의 정신과 범위 내에 포괄하는 모든 수정, 등가, 및 대체를 포괄하도록 의도하였다는 것을 알아야 한다.
본 발명의 한 양상에 따르면, 입/출력(I/O) 명령을 선택적으로 실행하기 위한 방법에 제공된다. 이 방법은 메모리에 I/O 허가 비트맵을 생성하고, I/O 포트 번호 및 보안 콘텍스트 식별 값(Secutiry Context Identification, SCID)을 수신하는 것을 포함한다. 이 방법은 또한 SCID 및 I/O 포트번호를 사용하여 I/O 포트에 대응하는 허가 비트를 얻기 위해 저장된 I/O 허가 비트맵을 액세스하고, I/O 포트에 대응하는 허가 비트의 값에 따라 I/O 명령을 실행하는 것을 포함한다. I/O 허가 비트맵은 복수의 허가 비트를 포함한다. 각각의 허가 비트는 복수의 I/O 포트의 서로 다른 포트에 대응한다. 각각의 허가 비트는 대응하는 I/O 포트에의 액세스가 허락되었는지를 가리키는 값을 갖는다. I/O 포트 번호는 I/O 명령에 의해 참조되는 I/O 포트를 가리킨다. SCID 값은 I/O 명령을 포함하는 메모리 장소의 보안 콘텍스트 레벨을 가리킨다.
본 발명은 첨부 도면을 참조로한 다음의 설명을 통해 이해할 수 있을 것이며, 도면에서 유사한 부호는 유사한 요소를 나타낸다.
발명의 예시적인 실시예가 이하 설명된다. 명확히 하기 위해, 실제 구현의 모든 특징이 본 명세서에 설명된 것은 아니다. 물론, 이와 같은 임의의 실제 실시예에서, 실시예에 따라 변할 수 있는 시스템 관련 및 비지니스 관련 제한에의 준수와 같이 개발자가 특정 목표를 달성하기 위해 무수히 많은 구현상의 변경이 있을 수 있다는 것을 알아야 한다. 더우기, 이와 같은 개발 노력은 복잡하고 시간을 소모하는 것이지만, 그럼에도 불구하고 본 개시의 이점을 갖는 기술분야의 숙련자에 게는 일상적인 일이 될 것이다.
도 2는 중앙처리장치(CPU)(102), 시스템 또는 "호스트” 브리지(204), 메모리(206), 제1 장치 버스(208)(예를 들어, 주변 구성요소 상호접속부 또는 PCI 버스), 장치 버스 브리지(210), 제2 장치 버스(212)(예를 들어, 업계 표준 아키텍춰 또는 ISA 버스) 및 네 개의 장치 하드웨어 유닛(214A-214D)을 포함하는 컴퓨터 시스템(200)의 일 실시예를 도시하는 다이어그램이다. 호스트 브리지(204)는 CPU(202), 메모리(206) 및 제1 장치 버스(208)에 결합된다. 호스트 브리지(204)는 CPU(202)와 제1 장치 버스(208) 간의 신호를 변환하고, 메모리(206)를 CPU(202)에 그리고 제1 장치 버스(208)에 동작가능하게 결합시킨다. 장치 버스 브리지(210)는 제1 장치 버스(208)와 제2 장치 버스(212)간에 결합되어 제1 장치 버스(208)와 제2 장치 버스(212)간의 신호를 변환한다. 도 2의 실시예에서, 장치 하드웨어 유닛(214A 및 214B)은 제1 장치 버스(208)에 결합되고, 장치 하드웨어 유닛(214C 및 214D)은 제2 장치 버스(212)에 결합된다. 하나 이상의 장치 하드웨어 유닛(214A-214D)은 예를 들어 기억장치(예를 들어, 하드 디스크 드라이브, 플로피 디스크 및 CD-ROM 드라이브), 통신 장치(예를 들어, 모뎀 및 네트워크 어댑터) 또는 입/출력 장치(예를 들어, 비디오 장치, 오디오 장치 및 프린터)일 수 있다.
도 2의 실시예에서, CPU(202)는 입/출력(I/O) 보안 체크 유닛(SCU)(216)을 포함한다. 장치 하드웨어 유닛(214A-214D)은 CPU(220)의 I/O 공간의 다양한 I/O 포트에 맵핑될 수 있고, CPU(202)는 대응하는 I/O 포트를 거쳐 장치 하드웨어(214A-214D)와 통신할 수 있다. 이 상황에서, I/O SCU(216)는 CPU(202)에 의해 발생된 비허가 액세스로부터 장치 하드웨어 유닛(214A-214D)을 보호하는데 사용된다. 다른 실시예에서, 호스트 브리지(204)는 도 2에 도시한 바와 같이 CPU(202)의 일부일 수 있다는 것을 알아야 한다.
도 3은 도 2의 컴퓨터 시스템(200)의 다양한 하드웨어 및 소프트웨어 구성요소 간의 관계를 도시하는 다이어그램이다. 도 3의 실시예에서, 다수의 어플리케이션 프로그램(300), 운영체제(302), 보안 커널(304) 및 장치 드라이버(306A-306D)는 메모리(206)에 저장된다. 어플리케이션 프로그램(300), 운영체제(304), 보안 커널(304) 및 장치 드라이버(306A-306D)는 CPU(202)에 의해 실행되는 명령을 포함한다. 운영체제(302)는 어플리케이션 프로그램(300)일 실행하는 사용자 인터페이스 및 소프트웨어 "플랫폼”을 제공한다. 운영체제(302)는 또한 예를 들어, 파일 시스템 관리, 프로세스 관리, 입/출력(I/O) 제어를 포함하는 기본 지원 기능을 제공할 수 있다.
운영체제(302)는 또한 기본적인 보안 기능을 제공할 수 있다. 예를 들어, CPU(202)(도 2)는 x86 명령 세트의 명령을 실행하는 x86 프로세서일 수 있다. 이 상황에서, CPU(202)는 상술한 바와 같이 보호 모드로 가상 메모리 및 물리적 메모리 보호 특징 모두를 제공하기 위한 전용 하드웨어 요소를 포함할 수 있다. 운영체제(302)는 예를 들어 보호 모드로 CPU(202)를 실행하고 CPU(202)의 전용 하드웨어 요소를 사용하여 가상 메모리 및 메모리 보호 모두를 보호 모드로 제공하는 운영체제(Microsoft Corp., Redmond, WA)의 Windows 계열 중의 하나일 수 있다.
이하에 상세히 설명하는 바와 같이, 보안 커널(304)은 비허가 액세스로부터 메모리(206)에 저장된 데이터를 보호하기 위해 운영체제(302)에 의해 제공되는 보안 기능을 넘어선 부수적인 보안 기능을 제공한다. 도 3에 도시된 바와 같이, 보안 커널(304)은 I/O SCU(216)에 결합된다. 이하에 상세히 설명하는 바와 같이, I/OSCU(216)는 I/O 어드레스 공간 내의 I/O 포트에의 모든 소프트웨어-개시 액세스를 모니터하고, I/O 포트에의 허가된 액세스만을 허용한다.
도 3의 실시예에서, 장치 드라이버(306A-306D)는 대응하는 각각의 장치 하드웨어유닛(214A-214D)과 동작가능하게 연관되어 이에 결합된다. 장치 하드웨어(214A 및 214D)는 예를 들어, "안전한(secure)” 장치일 수 있고, 대응하는 장치 드라이버(306A 및 306D)는 "안전한” 장치 드라이버일 수 있다. 보안 커널(304)은 운영체제(302)와 안전한 장치 드라이버(306A 및 306D) 간에 결합되고, 어플리케이션 프로그램(300) 및 운영체제(302)에 의한 모든 액세스를 모니터하여 장치 드라이버(306A 및 306D) 및 대응하는 안전한 장치(214A 및 214D)를 안전하게 할 수 있다. 보안 커널(304)은 어플리케이션 프로그램(300) 및 운영체제(302)에 의한 장치 드라이버(306A 및 306D) 및 대응하는 안전한 장치(214A 및 214D)에의 비허가 액세스를 방지할 수 있다. 한편, 장치 드라이버(306B 및 306C)는 "불안전한(non-secure)” 장치 드라이버이고, 대응하는 장치 하드웨어 드라이버(214B 및 214C)는 "불안전한” 장치 하드웨어 유닛일 수 있다. 장치 드라이버(306B 및 306C) 및 대응하는 장치 하드웨어 유닛(214B 및 214C)은 예를 들어, "레거시(legacy)" 장치 드라이버 및 장치 하드웨어 유닛일 수 있다.
다른 실시예에서, 보안 커널(304)은 운영체제(302)의 일부일 수 있다는 것을 알아야 한다. 또 다른 실시예에서, 보안 커널(304), 장치 드라이버(306A 및 306D) 및/또는 장치 드라이버(306B 및 306C)는 운영체제(302)의 일부일 수 있다.
도 4는 도 2의 컴퓨터 시스템(200)의 CPU(202)의 일 실시예를 도시하는 다이어그램이다. 도 4의 실시예에서, CPU(202)는 실행 유닛(400), 메모리 관리 유닛(MMU)(402), 캐쉬 유닛(404), 버스 인터페이스 유닛(BIU)(406), 일단의 제어 레지스터(408), 및 일단의 안전 실행 모드(SEM) 레지스터(410)를 포함한다. BIU(406)는 호스트 브리지(204)(도 2)에 결합되고, CPU(202)와 호스트 브리지(204) 간의 인터페이스를 형성한다. BIU(406)은 또한 호스트 브리지(204)를 거쳐 메모리(206)(도 2)에 결합되고, CPU(202)와 메모리(206) 간의 인터페이스를 형성한다. 도 4의 실시예에서, I/O SCU(216)는 BIU(406) 내에 위치된다.
이하에 상세히 설명하는 바와 같이, 일단의 SEM 레지스터(410)는 도 2의 컴퓨터 시스템(200) 내의 안전 실행 모드(SEM)를 실시하는데 사용되고, I/O SCU(216)의 동작은 일단의 SEM 레지스터(410)의 내용에 의해 제어된다. SEM 레지스터(410)는 보안 커널(304)(도 3)에 의해 액세스(즉, 기록 및/또는 판독)된다.
도 4의 실시예에서, 일단의 SEM 레지스터(410)는 안전 실행 모드(SEM)를 포함한다. 도 2의 컴퓨터 시스템(200)은 예를 들어, (i) CPU(2020가 x86 보호 모드에서 동작하는 x86 프로세서이고, (ii) 메모리 페이징이 인에이블되고 그리고 (iii) SEM 비트가 "1”로 설정될 때 안전 실행 모드(SEM)에서 동작할 수 있다.
일반적으로, 일단의 제어 레지스터(408)의 내용은 CPU(202)의 동작을 관할한다. 따라서, 일단의 제어 레지스터(408)의 내용은 실행 유닛(400), MMU(402), 캐쉬 유닛(404) 및/또는 BIU(406)의 동작을 관할한다. 일단의 제어 레지스터(408)는 예를 들어, x86 프로세서 아키텍춰의 다수의 제어 레지스터를 포함할 수 있다.
CPU(202)의 실행 유닛(400)은 명령(예를 들어, x86 명령) 및 데이터를 페치하고, 페치된 명령을 실행하고, 명령 실행 동안 신호(예를 들어, 어드레스, 데이터 및 제어 신호)를 발생한다. 실행 유닛(400)은 캐쉬 유닛(404)에 결합되고, 캐쉬 유닛(404) 및 BIU(406)를 거쳐 메모리(206)로부터 명령을 수신할 수 있다.
컴퓨터 시스템(200)의 메모리(206)(도 2)는 각각 유일한 물리적 어드레스를 갖는 다수의 메모리 장소를 포함한다. 페이징이 인에이블된 채 보호 모드에서 동작할 때, CPU(202)의 어드레스 공간은 페이지 프레임 또는 "페이지”라고 하는 다수의 블록으로 분할된다. 페이지의 일부에 대응하는 데이터만이 임의의 소정 시간에 메모리(206)에 저장된다. 도 4의 실시예에서, 명령 실행 동안 실행 유닛(400)에 의해 발생된 어드레스 신호들은 세그먼트된 (즉, "논리적”) 어드레스를 나타낸다. MMU(402)는 실행 유닛(400)에 의해 발생된 세그먼트된 어드레스를 메모리(206)의 대응하는 물리적 어드레스로 변환한다. MMU(402)는 물리적 어드레스를 캐쉬 유닛(404)에 제공한다. 캐쉬 유닛(404)은 실행 유닛(400)에 의해 최근에 페치된 명령과 데이터를 저장하는데 사용되는 비교적 작은 기억장치이다.
BIU(406)는 캐쉬 유닛(404)과 호스트 브리지(204)간에 결합된다. BIU(406)는 호스트 브리지(204)를 거쳐 메모리(206)로부터 캐쉬 유닛(404)에 존재하지 않는 명령과 데이터를 페치하는데 사용된다. BIU(406)는 또한 I/O SCU(216)을 포함한다. I/O SCU(216)은 SEM 레지스터(410), 실행 유닛(400) 및 MMU(402)에 결합된다. 상술한 바와 같이, I/O SCU(216)는 I/O 어드레스 공간 내의 I/O 포트에의 모든 소프트웨어-개시 액세스를 모니터하고 I/O 포트에의 허가된 액세스만을 허용한다.
도 5는 도 4의 I/O SCU(216)의 일 실시예를 도시하는 다이어그램이다. 도 5의 실시예에서, I/O SCU(216)는 보안 체크 로직(500)을 포함한다. 보안 체크 로직(500)은 실행 유닛(400)으로부터 "ENABLE" 신호와 I/O 포트 번호를 수신하고, MMU(402)로부터 보안 콘텍스트 식별(SCID) 값을 수신한다. 실행 유닛(400)은 I/O 어드레스 공간 내의 "타겟” I/O 포트를 액세스하는 I/O 명령을 실행하기 전에 ENABLE 신호를 어서트할 수 있다. I/O 포트 번호는 타겟 I/O 포트의 번호이다. SCID 값은 I/O 명령을 포함하는 메모리 페이지의 보안 콘텍스트 레벨을 가리킨다.
도 2의 컴퓨터 시스템(200)이 안전 실행 모드(SEM)에서 동작할 때, 보안 커널(304)(도 3)은 하나 이상의 보안 속성 데이터 구조(예를 들어, 테이블)를 발생하고 이를 메모리(206)(도 2)에 유지시킨다. 각각의 메모리 페이지는 대응하는 보안 콘텍스트 식별(SCID) 값을 가지며, 대응하는 보안 콘텍스트 식별(SCID) 값은 보안 속성 데이터 구조 내에 저장될 수 있다. MMU(402)는 명령 실행 동안 발생된 어드레스(예를 들어, 물리적 어드레스)를 사용하여 대응하는 메모리 페이지의 보안 콘텍스트 식별(SCID)을 얻기 위해 하나 이상의 보안 속성 데이터 구조를 액세스한다. 일반적으로, 컴퓨터 시스템(200)은 n 개의 서로 다른 보안 콘텍스트 식별(SCID) 값 (여기서, n은 정수 및 n≥1임)을 갖는다.
도 2의 컴퓨터 시스템(200)이 안전 실행 모드(SEM)에서 동작할 때, 보안 커널(304)(도 3)은 또한 안전 실행 모드(SEM) I/O 허가 비트맵을 생성하고 이를 메모리(206)(도 2)에 유지시킨다. 실행 유닛(400)(도 4)이 태스크의 I/O 명령을 실행할 때, CPU(202) 내의 로직은 먼저 태스크의 현재 특권레벨(CPL)을 I/O 특권 레벨(IOPL)과 비교할 수 있다. 만일 태스크의 현재 특권레벨(CPL)이 I/O 특권레벨(IOPL)과 적어도 같다면(즉, 수치적으로 적거나 같은), CPU(202) 내의 로직은 안전 실행 모드(SEM) I/O 허가 비트맵을 점검할 수 있다. 한편, 만일 태스크의 현재의 특권레벨(CPL)이 I/O 특권레벨(IOPL)보다 못하다면(즉, 수치적으로 크다면), 실행 유닛(400)은 I/O 명령을 실행하지 않을 것이다. 한 실시예에서, 일반적인 보호 폴트가 발생할 것이다.
실행 유닛(400)(도 4)이 ENABLE 신호를 어서트하면, 보안 체크 로직(500)은 ENABLE 신호, 수신된 보안 콘텍스트 식별(SCID) 값, 및 BIU(406) 내의 로직에 대한 수신된 I/O 포트 번호를 제공한다. BIU(406) 내의 로직은 SCID 값과 수신된 I/O 포트 번호를 사용하여 안전 실행 모드(SEM) I/O 허가 비트맵을 액세스하고, 안전 실행 모드(SEM) I/O 허가 비트맵에서 보안 체크 로직(500)으로 대응하는 비트를 제공한다. 만일 안전 실행 모드(SEM) I/O 허가 비트맵으로부터의 대응하는 비트가 "0”으로 클리어되었다면, 보안 체크 로직(500)은 실행 유닛(400)에 제공된 출력 "EXECUTE" 신호를 어서트할 것이다. 어서트된 EXECUTE 신호에 응답해서, 실행 유닛(400)은 I/O 명령을 실행할 수 있다. 한편, 만일 대응하는 비트가 "1“로 설정되어 있다면, 보안 체크 로직(500)은 실행 유닛(400)에 제공된 출력 "SEM SECURITY EXCEPTION" 신호를 어서트할 것이다. 어서트된 SEM SECURITY EXCEPTION 신호에 응답해서, 실행 유닛(400)은 I/O 명령을 실행하지 않을 것이고, 대신에 안전 실행 모드(SEM) 예외 핸들러(exception handler)를 실행할 수 있다.
I/O 명령이 16 비트 워드 I/O 포트 또는 32 비트 더블 워드 I/O 포트를 액세스하려 시도하면, 실행 유닛(400)은 보안 체크 로직(500)에 멀티플 바이트 I/O 포트 번호를 연속해서 제공할 수 있다. 만일 보안 체크 로직(500)이 바이트 I/O 포트 번호의 각각에 대해 EXECUTE 신호를 어서트하면, 실행 유닛(400)은 I/O 명령을 실행할 수 있다. 한편, 만일 보안 체크 로직(500)이 하나 이상의 바이트 I/O 포트 번호에 대해 SEM SECURITY EXCEPTION을 어서트하면, 실행 유닛(400)은 I/O 명령을 실행할 수 없고, 대신에 안전 실행 모드(SEM) 예외 핸들러를 실행할 수 있다.
도 6은 도 6에서 600으로 도면부호가 붙은 안전 실행 모드 (SEM) I/O 허가 비트맵의 일 실시예, 및 안전 실행 모드(SEM) I/O 허가 비트맵(600)을 액세스하기 위한 메커니즘의 일 실시예를 도시하는 다이어그램이다. 도 6의 메커니즘은 BIU(406)(도 4)내의 로직내에 구현될 수 있고, 컴퓨터 시스템(200)이 안전 실행 모드(SEM)로 동작할 때 적용할 수 있다. 도 6에서, 일단의 안전 실행 모드(SEM) 레지스터(410)는 모델-특정 레지스터(MST)(602)를 포함한다. 모델-특정 레지스터(MSR)(602)는 안전 실행 모드(SEM) I/O 허가 비트맵(600)의 시작 (즉, 베이스) 어드레스를 저장하는데 사용된다. 상술한 바와 같이, 컴퓨터 시스템(200)은 n개의 서로 다른 보안 콘텍스트 식별(SCID) 값 (여기서 n은 정수와 n≥1임)을 갖는다. 안전 실행 모드(SEM) I/O 허가 비트맵(600)은 n개의 서로 다른 보안 콘텍스트 식별(SCID) 값의 각각에 대한 서로 다른 I/O 허가 비트맵을 포함한다. 각각의 개별적인 I/O 허가 비트맵은 64k 비트 또는 8k 바이트를 포함한다.
도 6의 실시예에서, I/O 포트를 액세스하는 I/O 명령을 포함하는 메모리 페이지의 보안 콘텍스트 식별(SCID) 값은, 모델-특정 레지스터(602)의 내용(즉, 안전 실행 모드(SEM) I/O 허가 비트맵(600)의 베이스 어드레스)으로부터 실행 모드(SEM)I/O 허가 비트맵(600)을 구성하는 하나 이상의 64k 비트(8k 바이트) I/O 허가 비트맵으로의 오프셋으로서 사용된다. 결국, 보안 콘텍스트 식별(SCID) 값에 대응하는 I/O 허가 비트맵이 액세스된다. 이때 I/O 포트 번호는 보안 콘텍스트 식별(SCID) 값에 대응하는 I/O 허가 비트맵에의 비트 오프셋으로서 사용된다. 이와 같은 액세스된 비트는 I/O 포트 번호에 의해 정의된 I/O 포트에 대응하는 비트이다.
도 7은 도 7에서 700의 도면부호가 부여된 안전 실행 모드(SEM) I/O 허가 비트맵의 다른 실시예 및 안전 실행 모드(SEM) I/O 허가 비트맵을 액세스하기 위한 메커니즘의 다른 실시예를 도시하는 다이어그램이다. 도 7의 메커니즘은 BIU(406)(도 4)의 로직 내에 구현될 수 있다. 도 7의 실시예에서, 안전 실행 모드(SEM) I/O 허가 비트맵(700)은 하나의 64k 비트(8k 바이트) I/O 허가 비트맵을 포함한다. I/O 포트 번호는 모델-특정 레지스터(602)의 내용(즉, 안전 실행 모드(SEM) I/O 허가 비트맵(600)의 베이스 어드레스)으로부터 I/O 허가 비트맵으로의 비트 오프셋으로서 사용된다. 이와 같은 액세스된 비트는 I/O 포트 번호에 의해 정의된 I/O 포트에 대응하는 비트이다.
도 8은 도 2의 컴퓨터 시스템(200)의 CPU(202)의 대안적인 실시예를 도시하는 다이어그램이다. 도 8의 실시예에서, CPU(202)는 상술한 실행 유닛(400), 메모리 관리 유닛(MMU)(402), 캐쉬 유닛(404), 버스 인터페이스 유닛(BIU)(406), 일단의 제어 레지스터(408), 및 일단의 안전 실행 모드(SEM) 레지스터(410)를 포함한다. 또한, CPU(202)는 마이크로코드 엔진(800)과 마이크로코드 저장소(802)를 포함한다. 마이크로코드 엔진(800)은 실행 유닛(400), MMU (402), 캐쉬 유닛(404),BIU(406), 일단의 제어 레지스터(408) 및 일단의 안전 실행 모드(SEM) 레지스터(410)에 결합된다. 마이크로코드 엔진9800)은 마이크로코드 저장소(802)에 저장된 마이크로코드 명령을 실행하고, 마이크로 명령 및 일단의 제어 레지스터(408) 및 일단의 안전 실행 모드(SEM) 레지스터(410)의 내용에 따라, 실행 유닛(400), MMU (402), 캐쉬 유닛(404) 및 BIU(406)을 동작을 제어하는 신호들을 발생한다. 마이크로코드 엔진(800)은 또한 x86 명령 세트의 보다 복잡한 명령을 실행하는데 있어 실행 유닛(4000을 도울 수 있다.
도 8의 실시예에서, 마이크로코드 저장소(802)에 저장된 마이크로코드 명령의 일부는 I/O 보안 체크 코드(804)를 형성한다. I/O 보안 체크 코드(804)는 도 2의 컴퓨터 시스템(200)이 안전 실행 모드(SEM)로 동작할 때 실행되고, I/O 명령은 실행을 위해 실행 유닛(400)으로 전송된다. 본질적으로, I/O 보안 체크 코드(804)의 마이크로코드 명령은 마이크로코드 엔진(800) 및 BIU(406)으로 하여금 상술한 I/O SCU(216)(도 2-4)의 기능을 수행할 수 있게 한다.
예를 들어, I/O 명령이 실행을 위해 실행 유닛(400)으로 전송되면, 실행 유닛(400)은 I/O 명령의 존재를 마이크로코드 엔진(800)으로 신호할 수 있다. 마이크로코드 엔진은 MMU(403) 및 BIU(406)에의 신호를 어서트할 수 있다. 마이크로코드 엔진(800)으로부터의 신호에 응답해서, MMU(402)는 BIU(406)에 I/O 명령을 포함하는 메모리 페이지의 보안 콘텍스트 식별(SCID) 값을 제공할 수 있다. 실행 유닛(400)은 I/O 명령에 의해 액세스된 I/O 포트 번호를 BIU(406)에 제공할 수 있다.
마이크로코드 엔진(800)으로부터의 신호에 응답해서, BIU(406)는 상술한 바와 같이 보안 콘텍스트 식별(SCID) 값과 수신된 I/O 포트 번호를 사용하여 안전 실행 모드(SEM) I/O 허가 비트맵을 액세스할 수 있고, 안전 실행 모드(SEM) I/O 허가 비트맵으로부터의 대응하는 비트를 마이크로코드 엔진(800)에 제공할 수 있다. 만일 안전 실행 모드(SEM) I/O 허가 비트맵으로부터의 대응하는 비트가 "0”으로 클리어되면, 마이크로코드 엔진(800)은 I/O 명령의 실행을 완료하는데 있어 실행 유닛(400)을 계속 도울 수 있다. 한편, 만일 대응하는 비트가 "1”로 설정되면, 마이크로코드 엔진은 실행 유닛(400)에 신호하여 I/O 명령을 실행하는 것을 중지하게 하고 안전 실행 모드(SEM) 예외 핸들러의 명령의 실행을 시작하게 한다.
도 9를 사용하여 보안 목적으로 보안 콘텍스트 식별(SCID) 값의 할당 및 대응하는 안전 실행 모드(SEM) I/O 허가 비트맵의 생성이 어떻게 해서 도 2의 컴퓨터 시스템(200) 내의 장치 드라이버 및 연관된 하드웨어 유닛을 "구획”하는 역할을 하는지를 설명한다. 도 9는 도 2의 컴퓨터 시스템(200)의 다양한 하드웨어 및 소프트웨어 구성요소간의 관계를 설명하는 다이어그램으로, 여기서 장치 드라이버(306A) 및 대응하는 장치 하드웨어 유닛(214A)은 제1 보안 "구획”(900)에 상주하고, 장치 드라이버(306D) 및 대응하는 장치 하드웨어 유닛(214D)은 제2 보안 "구획”(902)에 상주한다. 보안 구획(900 및 902)은 상호 분리되어 동작적으로 격리되어 있다. 장치 드라이버(306A) 만이 장치 하드웨어 유닛(214A)에 액세스하는 것이 허용되고, 장치 드라이버(306D) 만이 장치 하드웨어 유닛(214D)에 액세스하는 것이 허용된다. 장치 드라이버 및 연관된 장치 하드웨어 유닛의 이와 같은 "구획”은 사악하거나 잘못된 코드가 장치 하드웨어 유닛의 상태에 부정적인 영향을 미치는것을 방지하거나 도 2의 컴퓨터 시스템(200)의 적절한 동작을 방해하는 것을 방지하는데 돕는다.
예를 들어, 도 9의 실시예에서, 장치 드라이버(306A 및 306D)의 명령을 포함하는 메모리 페이지는 서로 다른 보안 콘텍스트 식별(SCID) 값이 부여될 수 있다. 장치 드라이버(306A)의 SCID 값을 위해 생성된 제1 안전 실행 모드(SEM) I/O 허가 비트맵은 장치 드라이버(306A)로 하여금 장치 하드웨어 유닛(214A)에 지정된 컴퓨터 시스템(200)의 I/O 어드레스 공간의 제1 부분을 액세스할 수 있게 하고, 장치 드라이버(306A)로 하여금 장치 하드웨어 유닛(214D)에 지정된 I/O 어드레스 공간의 제2 부분을 액세스할 수 있게 한다. 유사하게, 장치 드라이버(306D)의 SCID 값을 위해 생성된 제2 안전 실행 모드(SEM) I/O 허가 비트맵은 장치 드라이버(306D)로 하여금 장치 하드웨어 유닛(214D)에 지정된 컴퓨터 시스템(200)의 I/O 어드레스 공간의 제2 부분을 액세스할 수 있게 하고, 장치 드라이버(306A)로 하여금 장치 하드웨어 유닛(214A)에 지정된 I/O 어드레스 공간의 제1 부분을 액세스할 수 없게 한다. 결국, 장치 드라이버(306A)는 장치 하드웨어 유닛(214A)을 액세스하는 것이 허용되고, 장치 드라이버(306D)는 장치 하드웨어 유닛(214D)을 액세스하는 것이 허용된다.
개시된 바와 같이 본 발명의 일부 특징이 하드웨어 또는 소프트웨어로 구현될 수 있다. 따라서, 개시된 상세한 설명의 일부는 하드웨어 구현 프로세스로 제시되고, 상세한 설명의 몇몇 부분은 컴퓨팅 시스템 또는 컴퓨팅 장치의 메모리 내에 데이터 비트에 대한 동작의 상징적 표현을 포함하는 소프트웨어 구현 프로세스로서제시된다. 이들 설명 및 표현은 기술 분야의 숙련자가 하드웨어 및 소프트웨어를 사용하여 그 실체를 가장 효과적으로 전달하기 위해 사용된 수단이다. 이들 모두의 프로세스 및 동작은 물리적 양의 물리적 조작을 필요로 한다. 흔히 소프트웨어적으로, 반드시는 아니지만, 이들 양들은 저장되고, 운반되고, 결합되어, 비교되고 달리 조작될 수 있는 전기적, 자기적 또는 광학적 신호 형태를 취한다. 공통 용어 때문에 비트, 값, 소자, 기호, 문자, 용어, 숫자 등으로 이들 신호를 지칭하였다.
그러나, 모든 이들 또는 유사한 용어들은 물리적 양들과 연관되어 있고 이들 양들에 적용되는 편리한 레이블이라는 것을 알아야 한다. 달리 명시되지 않는 한, 본 명세서 전체에 걸쳐 이들 설명은 기억장치 내의 물리적 양으로 유사하게 표현된 다른 데이터에 일부 전자 장치의 기억장치 내의 물리적 (전자, 자기 또는 광학) 양들로서 표현된 데이터를 조작하고 변환하는 전자 장치의 작용 및 프로세스를 가리킨다. 이와 같은 설명을 지칭하는 용어들의 예는 "프로세싱", "컴퓨팅", "계산", "결정", "디스플레이" 등이다.
또한 본 발명의 소프트웨어 구현 특징은 전형적으로 몇몇 형태의 프로그램 기억매체에 인코드되거나, 일부 형태의 전송 매체를 통해 구현된다는 것을 알아야 한다. 이 프로그램 기억매체는 자기적(예를 들어, 플로피 디스크 또는 하디디스크) 또는 광학적 (예를 들어, 콤팩트 디스크 판독전용 메모리 또는 “CD ROM")일 수 있고, 판독 전용 또는 랜덤 액세스일 수 있다. 유사하게, 전송 매체는 트위스트 쌍, 동축 케이블, 광섬유, 또는 기술 분야에 공지된 몇몇 다른 적합한 전송 매체일 수 있다. 본 발명은 임의의 소정 구현이 이들 면에 의해 제한되지 않는다.
상기 개시된 특정 실시예는 예시적인 것이며 본 발명은 개시의 이익을 갖는 당업자에게 명확한 바와같이 수정되고 실시될 수 있다.
더욱이, 이하의 청구범위에 설명된 것 이외의 도시된 구성 또는 설계의 상세한 설명에 어떠한 제한도 없다. 따라서, 개시된 특정 실시예는 수정 또는 변경될 수 있고, 이와 같은 모든 변경은 본 발명의 정신과 범위 내에 포함되는 것으로 간주된다. 따라서, 본 발명이 보호하고자 하는 사항은 이하의 청구범위에 나타나 있다.

Claims (10)

  1. 메모리(206)에 결합되도록 된 프로세서(202)에 있어서,
    I/O 명령을 실행하도록 구성된 실행 유닛(400)과;
    메모리(206)에 데이터를 저장하도록 구성된 메모리 관리 유닛(402)과; 그리고
    입/출력(I/O) 포트 번호 및 상기 I/O 포트 번호에 대응하는 허가 비트를 수신하고, 상기 허가 비트의 값에 따른 출력 신호를 발생하도록 결합된 버스 인터페이스 유닛(406)을 포함하며,
    상기 실행 유닛(400)은 상기 출력 신호를 수신하도록 결합되고 상기 출력 신호에 따른 상기 I/O 명령을 실행하도록 구성된 것을 특징으로 하는 프로세서(202).
  2. 제1항에 있어서, 상기 I/O 포트 번호는 I/O 명령에 의해 참조되는 상기 입/출력(I/O) 포트의 번호를 가리키고, 상기 버스 인터페이스 유닛(406)은 보안 콘텍스트 식별 값을 수신하도록 결합되고, 상기 보안 콘텍스트 식별 값은 상기 I/O 명령을 포함하는 메모리 장소의 보안 콘텍스트 레벨을 가리키고, 상기 버스 인터페이스 유닛(406)은 상기 보안 콘텍스트 식별 값과 상기 I/O 포트 번호를 사용하여 상기 허가 비트를 얻기 위해 상기 메모리(206)에 저장된 입/출력(I/O) 허가 비트맵(600)을 액세스하도록 구성된 것을 특징으로 하는 프로세서(202).
  3. 제2항에 있어서, 상기 버스 인터페이스 유닛(406)은 상기 실행 유닛(400)과 상기 메모리 관리 유닛(402)에 연결되고, 상기 I/O 포트 번호는 상기 실행 유닛(400)으로부터 수신되고, 상기 보안 콘텍스트 식별 값은 상기 메모리 관리 유닛(402)으로부터 수신되는 것을 특징으로 하는 프로세서(202).
  4. 제2항에 있어서, 상기 I/O 포트 번호와 상기 보안 콘텍스트 식별 값은 상기 실행 유닛(400)에 의한 상기 I/O 명령의 실행 동안 수신되는 것을 특징으로 하는 프로세서(202).
  5. 제2항에 있어서, 상기 I/O 허가 비트맵(600)은 복수의 허가 비트들을 구비하고, 상기 허가 비트들의 각각은 복수의 I/O 포트의 서로 다른 하나에 대응하며, 상기 허가 비트들의 각각은 대응하는 I/O 포트에의 액세스가 허용되었는지를 가리키는 값을 갖는 것을 특징으로 하는 프로세서(202).
  6. 제2항에 있어서, 상기 I/O 허가 비트맵(600)의 베이스 어드레스를 저장하도록 구성된 모델-특정 레지스터(602)를 더 포함하며,
    상기 버스 인터페이스 유닛(406)은, 상기 I/O 포트 번호를 상기 모델-특정 레지스터(602)의 내용에서 상기 I/O 허가 비트맵(600)으로의 비트 오프셋으로서 사용하여 상기 I/O 허가 비트맵(600)을 액세스하여 상기 I/O 포트 번호에 대응하는 허가 비트를 얻는 것을 특징으로 하는 프로세서(202).
  7. 제2항에 있어서, 상기 I/O 허가 비트맵(6000은 주 I/O 허가 비트맵(600)이고, 상기 주 I/O 허가 비트맵(600)은 복수의 보조 I/O 허가 비트맵을 포함하고, 상기 보조 I/O 허가 비트맵의 각각은 복수의 허가 비트들을 구비하고, 상기 보조 I/O 허가 비트맵들 중 소정의 비트맵의 허가 비트들의 각각은 복수의 I/O 포트의 서로 다른 하나에 대응하고, 상기 허가 비트들의 각각은 상기 대응하는 I/O 포트에의 액세스가 허용되었는지를 가리키는 값을 가지며, 상기 보조 I/O 허가 비트맵의 각각은 복수의 보안 콘텍스트 식별 값의 서로 다른 하나에 대응하는 것을 특징으로 하는 프로세서(202).
  8. 제1항에 있어서, 상기 실행 유닛(400), 상기 메모리 관리 유닛(402) 및 상기 버스 인터페이스 유닛(406)에 결합되고 마이크로코드 저장소(802)에 저장된 마이크로코드 명령을 실행하도록 구성된 마이크로코드 엔진(800)을 더 포함하며, 상기 마이크로코드 엔진(800)은 상기 마이크로코드 명령중의 적어도 하나를 실행하는 동안 제어 신호들을 발생하고, 상기 마이크로코드 명령의 일부는 상기 마이크로코드 엔진(800)으로 하여금 상기 버스 인터페이스 유닛(406)이:
    상기 입/출력(I/O) 포트 번호와 다수의 보안 콘텍스트 식별 값 - 상기 I/O 포트 번호는 I/O 명령에 의해 참조되는 입/출력(I/O)의 번호를 가리키고, 상기 보안 콘텍스트 식별 값은 상기 I/O 명령을 포함하는 메모리 장소의 보안 콘텍스트 레벨을 가리킴-을 수신하고,
    상기 보안 콘텍스트 식별 값과 상기 I/O 포트 번호를 사용하여 상기 I/O 포트에 대응하는 허가 비트를 얻기 위해 상기 메모리(206)에 저장된 입/출력 (I/O) 허가 비트맵(600)을 액세스하고 상기 허가 비트의 값에 따른 상기 출력 신호를 발생하게 하는 제어 신호를 발생케 하며,
    상기 실행 유닛(400)은 상기 출력 신호를 수신하도록 결합되고 상기 출력 신호에 따른 상기 I/O 명령을 실행하도록 구성된 것을 특징으로 하는 프로세서(202).
  9. 입/출력(I/O) 명령을 선택적으로 실행하기 위한 방법에 있어서,
    메모리(206)에 입/출력(I/O) 허가 비트맵(600)을 생성하는 단계 - 상기 I/O 허가 비트맵(600)은 복수의 허가 비트를 구비하고, 상기 허가 비트의 각각은 서로 다른 I/O 포트의 서로 다른 하나에 대응하고, 상기 허가 비트의 각각은 대응하는 I/O 포트에의 액세스가 허용되었는지를 가리키는 값을 가짐 - 와;
    I/O 포트 번호와 보안 콘텍스트 식별 값을 수신하는 단계 - 상기 I/O 포트 번호는 상기 I/O 명령에 의해 참조되는 상기 I/O 포트를 가리키고, 상기 보안 콘텍스트 식별 값은 상기 I/O 명령을 포함하는 메모리 장소의 보안 콘텍스트 레벨을 가리킴 - 와;
    상기 보안 콘텍스트 식별 값과 상기 I/O 포트 번호를 사용하여 상기 I/O 포트에 대응하는 허가 비트를 얻기 위해 저장된 상기 I/O 허가 비트맵(600)을 액세스하는 단계; 및
    상기 I/O 포트에 대응하는 상기 허가 비트의 값에 따라 상기 I/O 명령을 실행하는 단계를 포함하는 것을 특징으로 하는 입/출력(I/O) 명령을 선택적으로 실행하기 위한 방법.
  10. 제9항에 있어서, 상기 I/O 포트 번호와 상기 보안 콘텍스트 식별 값을 수신하는 단계는 상기 I/O 명령의 실행 동안 상기 I/O 포트 번호와 상기 보안 콘텍스트 식별 값을 수신하는 것을 더 포함하고,
    상기 I/O 포트에 대응하는 상기 허가 비트의 값에 따라 상기 I/O 명령을 실행하는 단계는, 상기 I/O 포트에 대응하는 상기 허가 비트의 값이 상기 I/O 포트에의 액세스를 가리키면 상기 I/O 명령을 실행하는 것을 더 포함하는 것을 특징으로 하는 입/출력(I/O) 명령을 선택적으로 실행하기 위한 방법.
KR1020047014855A 2002-03-27 2002-12-17 구획된 보안을 위한 입/출력 허가 비트맵 KR101001344B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/107,784 2002-03-27
US10/107,784 US7493498B1 (en) 2002-03-27 2002-03-27 Input/output permission bitmaps for compartmentalized security
PCT/US2002/040396 WO2003083671A1 (en) 2002-03-27 2002-12-17 Input/output permission bitmaps for compartmentalized security

Publications (2)

Publication Number Publication Date
KR20040101332A true KR20040101332A (ko) 2004-12-02
KR101001344B1 KR101001344B1 (ko) 2010-12-14

Family

ID=28673583

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047014855A KR101001344B1 (ko) 2002-03-27 2002-12-17 구획된 보안을 위한 입/출력 허가 비트맵

Country Status (8)

Country Link
US (1) US7493498B1 (ko)
JP (1) JP4391832B2 (ko)
KR (1) KR101001344B1 (ko)
CN (1) CN1320466C (ko)
AU (1) AU2002361757A1 (ko)
DE (1) DE10297687B4 (ko)
GB (1) GB2404058B (ko)
WO (1) WO2003083671A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7103914B2 (en) * 2002-06-17 2006-09-05 Bae Systems Information Technology Llc Trusted computer system
CA2551045C (en) * 2005-06-30 2008-04-22 Hitachi, Ltd. Input-output control apparatus, input-output control method, process control apparatus and process control method
WO2007040228A1 (ja) * 2005-10-04 2007-04-12 Nec Corporation 情報処理装置、情報処理方法およびプログラム
KR101540798B1 (ko) * 2008-11-21 2015-07-31 삼성전자 주식회사 가상화 환경에서 보안 정보를 제공하기 위한 장치 및 방법
CN102375947A (zh) * 2010-08-16 2012-03-14 伊姆西公司 用于隔离计算环境的方法和系统
CN103632088A (zh) * 2012-08-28 2014-03-12 阿里巴巴集团控股有限公司 一种木马检测方法及装置
US9043632B2 (en) 2012-09-25 2015-05-26 Apple Inc. Security enclave processor power control
US8832465B2 (en) * 2012-09-25 2014-09-09 Apple Inc. Security enclave processor for a system on a chip
US8775757B2 (en) 2012-09-25 2014-07-08 Apple Inc. Trust zone support in system on a chip having security enclave processor
US9047471B2 (en) 2012-09-25 2015-06-02 Apple Inc. Security enclave processor boot control
US8873747B2 (en) 2012-09-25 2014-10-28 Apple Inc. Key management using security enclave processor
JP5920595B2 (ja) * 2013-07-16 2016-05-18 横河電機株式会社 電子機器、オペレーティングシステム、アクセス管理方法
US9547778B1 (en) 2014-09-26 2017-01-17 Apple Inc. Secure public key acceleration
CN106326130B (zh) * 2015-06-16 2019-03-15 辰芯科技有限公司 寄存器地址空间的控制方法、控制器及片上系统
US10261748B2 (en) 2015-12-18 2019-04-16 Intel Corporation Technologies for protecting audio data with trusted I/O
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
US10360163B2 (en) * 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
EP4248323A1 (en) * 2021-02-12 2023-09-27 Huawei Technologies Co., Ltd. Low overhead active mitigation of security vulnerabilities by memory tagging

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146565A (en) * 1986-07-18 1992-09-08 Intel Corporation I/O Control system having a plurality of access enabling bits for controlling access to selective ports of an I/O device
US5596739A (en) * 1994-02-08 1997-01-21 Meridian Semiconductor, Inc. Method and apparatus for detecting memory segment violations in a microprocessor-based system
US5644755A (en) * 1995-02-24 1997-07-01 Compaq Computer Corporation Processor with virtual system mode
JPH10232878A (ja) * 1997-02-19 1998-09-02 Hitachi Ltd ドキュメント管理方法および装置
JP4522548B2 (ja) * 2000-03-10 2010-08-11 富士通フロンテック株式会社 アクセス監視装置及びアクセス監視方法
US6978018B2 (en) * 2001-09-28 2005-12-20 Intel Corporation Technique to support co-location and certification of executable content from a pre-boot space into an operating system runtime environment

Also Published As

Publication number Publication date
DE10297687B4 (de) 2008-11-13
KR101001344B1 (ko) 2010-12-14
GB2404058A (en) 2005-01-19
CN1623143A (zh) 2005-06-01
CN1320466C (zh) 2007-06-06
WO2003083671A1 (en) 2003-10-09
GB0423536D0 (en) 2004-11-24
GB2404058B (en) 2005-11-02
US7493498B1 (en) 2009-02-17
AU2002361757A1 (en) 2003-10-13
JP4391832B2 (ja) 2009-12-24
DE10297687T5 (de) 2005-07-07
JP2005521941A (ja) 2005-07-21

Similar Documents

Publication Publication Date Title
KR101001344B1 (ko) 구획된 보안을 위한 입/출력 허가 비트맵
JP4688490B2 (ja) 高セキュリティ実行モードにおいて高セキュリティカーネルを使用するトラステッド・クライアント
KR101455011B1 (ko) 메시지 시그널 인터럽션을 i/o 어댑터 이벤트 통지로 변환
US6823433B1 (en) Memory management system and method for providing physical address based memory access security
US6633963B1 (en) Controlling access to multiple memory zones in an isolated execution environment
US6678825B1 (en) Controlling access to multiple isolated memories in an isolated execution environment
EP0306702B1 (en) Virtual input/output commands
US6934817B2 (en) Controlling access to multiple memory zones in an isolated execution environment
US4581702A (en) Critical system protection
US7043616B1 (en) Method of controlling access to model specific registers of a microprocessor
KR101514872B1 (ko) 컴퓨팅 환경의 인에이블/디스에이블 어댑터들
KR20040093472A (ko) 영역-입도 하드웨어-제어 메모리 암호화를 제공하기 위한시스템 및 방법
KR100992611B1 (ko) 보안 예외 스택을 이용하여 예외를 처리하는 방법 및 시스템
JP3982687B2 (ja) 分離実行環境での複数の分離メモリへのアクセスの制御
AU600040B2 (en) Implied domain addressing
JP2005512228A (ja) 強化されたメモリアクセスセキュリティを提供する、メモリに対するデバイスのアクセスを制御するシステムおよび方法
KR100972635B1 (ko) 컴퓨터 시스템내에서의 장치간 액세스를 제어하는 시스템및 방법
US20180143831A1 (en) Check instruction for verifying correct code execution context

Legal Events

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

Payment date: 20131119

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141126

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161123

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee