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

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

Info

Publication number
KR101001344B1
KR101001344B1 KR1020047014855A KR20047014855A KR101001344B1 KR 101001344 B1 KR101001344 B1 KR 101001344B1 KR 1020047014855 A KR1020047014855 A KR 1020047014855A KR 20047014855 A KR20047014855 A KR 20047014855A KR 101001344 B1 KR101001344 B1 KR 101001344B1
Authority
KR
South Korea
Prior art keywords
permission
port
security context
command
bitmap
Prior art date
Application number
KR1020047014855A
Other languages
English (en)
Other versions
KR20040101332A (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

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (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 명령을 포함하는 메모리 위치의 보안 콘텍스트 레벨을 가리킨다.
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진수를 가리킨다)의 어드레스 범위에 위치한 8 비트 데이터 유닛의 64k의 연속하는 블록이고, 통상적으로 주변 장치(예를 들어, 키보드, 디스크 드라이브 등)와의 통신에 사용된다. 주변 장치는 통상적으로 "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" (포트로부터의 문자열(string)의 입력) 및 "OUTS" (포트로의 문자열의 출력) 블록 또는 문자열 I/O 명령을 포함한다. 블록 x86 명령은 I/O 포트에서 메모리로 그리고 메모리에서 I/O 포트로 직접 데이터를 전달한다.
"태스크”는 단일의 순차적인 실행 스레드(thread)이다. 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 아키텍춰는 "Intel Acchitecture Software Develop's Manual (Intel Corp. 1977)"에 상세히 기술되어있다. 특히, 입력/출력(I/O) 명령 처리에 관하여 Volumn 1 (XP-002243543), Chapter 9에 총체적으로 설명되고 있다. 프로세서가 가상 8086 모드에서 동작할때의 I/O 명령 처리에 관하여 Volumn 3 (XP-002248376), Paragraph 15.2.8에 상세히 설명되어 있다. 특히 paragraph 4.4.3.3의 "Intel 386 Microprocessor 32-bit CHMOS Microprocessor with Integrated Memory Management"(Intel Corp. 1995-XP-002243542)에서 Intel386 DX microprocessor에 관하여 상세히 설명되고 있다.
보호 모드에서 동작하는 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 아키텍춰의 공지의 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)를 발생한다. I/O 포트가 16 비트 워드 또는 32 비트 더블 워드(double word)일 때, I/O 포트는 액세스되고, 포트의 인접하는 바이트를 표현하는 모든 비트는 x86 프로세서가 I/O 명령을 실행하기 위해 "0”으로 클리어되어야 한다.
I/O 공간들이 적고 I/O 공간의 모든 64k 포트를 표현하는데 8k 바이트가 필요하기 때문에, I/O 허가 비트맵 보호 메커니즘은 I/O 허가 비트맵을 축약하는 방법을 포함한다. I/O 허가 비트맵의 끝을 벗어나 연장하는 어드레스를 갖는 I/O 포트는 I/O 허가 비트맵 내의 대응하는 비트가 "1”로 설정되는 것으로 간주된다.
x86 프로세서 아키텍춰의 I/O 보호 비트맵 메커니즘이 I/O 어드레스 공간을 적절히 보호하기에 충분하지 않다는 문제가 발생한다. 예를 들어, 관리자 레벨(예를 들어, CPL=0을 갖는)에서 실행하는 임의의 태스크는 임의의 시간에 I/O 어드레스 공간의 임의의 포트를 액세스할 수 있다. 또한, 관리자 레벨에서 실행하는 제1 태스크는, I/O 어드레스 공간 내의 모든 포트 또는 임의의 포트에의 제2 태스크 액세스를 허용하기 위해 제2 태스크의 I/O 허가 비트맵내의 비트를 변경할 수 있다. 이후, 두 번째 태스크는 하나 이상의 포트를 계속 액세스할 수 있다. 본 발명은 x86 아키텍춰의 전술한 부적절한 I/O 공간 보호 문제를 해결 또는 적어도 감소시킬 수 있는 시스템 및/또는 방법에 관한 것이다.
본 발명의 한 양상에 따르면, 입/출력(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 명령을 저장하고 있는 메모리 위치의 보안 콘텍스트 레벨을 가리킨다.
본 발명은 첨부 도면을 참조로한 다음의 설명을 통해 이해할 수 있을 것이며, 도면에서 유사한 부호는 유사한 요소를 나타낸다.
도 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 보안 구획에 상주함 - 간의 관계를 도시하는 다이어그램도.
비록 본 발명이 다양하게 변형 및 대체가 가능하지만, 그 특정 실시예가 예로서 도면에 도시되고 이하 상세히 설명된 것에 불과하다. 하지만, 특정 실시예의 설명은 본 발명을 개시된 특정 형태에 본 발명을 한정하려 의도한 것이 아니고, 첨부하는 청구범위에 한정된 바와 같이 본 발명의 취지 및 범위 내에 드는 모든 변형, 균등물, 및 대체를 포괄하도록 의도하였다는 것을 알아야 한다.
발명의 예시적인 실시예가 이하 설명된다. 명확히 하기 위해, 실제 구현의 모든 특징이 본 명세서에 설명된 것은 아니다. 물론, 이와 같은 임의의 실제 실시예에서, 실시예에 따라 변할 수 있는 시스템 관련 및 비지니스 관련 제약의 준수와 같이 개발자가 구체적인 목적을 달성하기 위해 무수히 많은 구현상의 변경이 있을 수 있다는 것을 알아야 한다. 더욱이, 이와 같은 개발 작업은 복잡하고 시간을 많이 소모하는 것이지만, 그럼에도 불구하고 본 개시의 이점을 갖는 기술분야의 숙련자에 게는 일상적인 일이 될 것이다.
도 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/O SCU(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(202)가 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)(도 2)로부터 명령을 수신할 수 있다.
컴퓨터 시스템(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 보안 예외)" 신호를 어서트할 것이다. 어서트된 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)에 결합된다. 마이크로코드 엔진(800)은 마이크로코드 저장소(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)으로 알릴 수 있다. 마이크로코드 엔진(800)은 MMU(402) 및 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 명령을 실행하고, I/O 명령과 관련된 현재의 특권 레벨을 결정하고, 상기 현재의 특권 레벨을 I/O 특권 레벨과 비교하고, 상기 비교에 근거하여 제 1 신호를 제공하도록 구성된 실행 유닛(400)과; 그리고
    I/O 포트 번호 및 상기 제 1 신호를 수신하도록 결합된 버스 인터페이스 유닛 (406)을 포함하며,
    여기서, 상기 버스 인터페이스 유닛(406)은 상기 I/O 포트 번호에 대응하는 허가 비트를 액세스하고, 상기 허가 비트의 값에 따라 제 2 신호를 생성하며,
    상기 실행 유닛(400)은 상기 제 2 신호를 수신하고, 상기 제 2 신호에 따라 상기 I/O 명령을 실행하도록 결합되며,
    상기 버스 인터페이스 유닛(406)은, 상기 제 1 신호가 상기 현재의 특권 레벨이 상기 I/O 특권 레벨 이하일 때 상기 I/O 포트에 대응하는 허가 비트를 액세스하도록 구성되는 것을 특징으로 하는 프로세서(202).
  2. 제 1 항에 있어서,
    상기 I/O 포트 번호는 I/O 명령에 의해 참조되는 상기 입/출력(I/O) 포트의 번호를 나타내고, 상기 버스 인터페이스 유닛(406)은 보안 콘텍스트 식별(SCID) 값을 수신하도록 결합되고, 상기 보안 콘텍스트 식별 값은 상기 I/O 명령을 포함하는 메모리 위치의 보안 콘텍스트 레벨을 나타내고, 상기 버스 인터페이스 유닛(406)은 상기 보안 콘텍스트 식별 값과 상기 I/O 포트 번호를 사용하여 상기 허가 비트를 얻기 위해 상기 메모리(206)에 저장된 입/출력(I/O) 허가 비트맵(600)을 액세스하도록 구성되는 것을 특징으로 하는 프로세서(202).
  3. 제 2 항에 있어서,
    상기 메모리(206)에 데이터를 저장하도록 구성된 메모리 관리 유닛(402)을 더 포함하며,
    상기 버스 인터페이스 유닛(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 허가 비트맵(600)은 주 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 포트에 대응하는 허가 비트를 얻기 위해 상기 메모리(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 포트 번호를 사용하여 상기 I/O 허가 비트맵(600)을 액세스하는 단계와; 그리고
    상기 I/O 포트에 대응하는 상기 허가 비트의 값에 따라 상기 I/O 명령을 실행하는 단계를 포함하며,
    여기서, 상기 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 KR20040101332A (ko) 2004-12-02
KR101001344B1 true 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
JPWO2007040228A1 (ja) * 2005-10-04 2009-04-16 日本電気株式会社 情報処理装置、情報処理方法およびプログラム
KR101540798B1 (ko) * 2008-11-21 2015-07-31 삼성전자 주식회사 가상화 환경에서 보안 정보를 제공하기 위한 장치 및 방법
CN102375947A (zh) * 2010-08-16 2012-03-14 伊姆西公司 用于隔离计算环境的方法和系统
CN103632088A (zh) * 2012-08-28 2014-03-12 阿里巴巴集团控股有限公司 一种木马检测方法及装置
US9047471B2 (en) 2012-09-25 2015-06-02 Apple Inc. Security enclave processor boot control
US8775757B2 (en) 2012-09-25 2014-07-08 Apple Inc. Trust zone support in system on a chip having security enclave processor
US8832465B2 (en) * 2012-09-25 2014-09-09 Apple Inc. Security enclave processor for a system on a chip
US8873747B2 (en) 2012-09-25 2014-10-28 Apple Inc. Key management using security enclave processor
US9043632B2 (en) 2012-09-25 2015-05-26 Apple Inc. Security enclave processor power control
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
WO2022171299A1 (en) * 2021-02-12 2022-08-18 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
GB2404058B (en) 2005-11-02
DE10297687T5 (de) 2005-07-07
JP4391832B2 (ja) 2009-12-24
GB0423536D0 (en) 2004-11-24
CN1623143A (zh) 2005-06-01
US7493498B1 (en) 2009-02-17
WO2003083671A1 (en) 2003-10-09
GB2404058A (en) 2005-01-19
CN1320466C (zh) 2007-06-06
DE10297687B4 (de) 2008-11-13
JP2005521941A (ja) 2005-07-21
AU2002361757A1 (en) 2003-10-13
KR20040101332A (ko) 2004-12-02

Similar Documents

Publication Publication Date Title
KR101001344B1 (ko) 구획된 보안을 위한 입/출력 허가 비트맵
JP4688490B2 (ja) 高セキュリティ実行モードにおいて高セキュリティカーネルを使用するトラステッド・クライアント
US7401358B1 (en) Method of controlling access to control registers of a microprocessor
US7631160B2 (en) Method and apparatus for securing portions of memory
US7043616B1 (en) Method of controlling access to model specific registers of a microprocessor
US7149854B2 (en) External locking mechanism for personal computer memory locations
US6823433B1 (en) Memory management system and method for providing physical address based memory access security
KR100298620B1 (ko) 컴퓨터시스템의i/o어드레스공간으로매핑된레지스터에대한액세스제어시스템
US4581702A (en) Critical system protection
US6934817B2 (en) Controlling access to multiple memory zones in an isolated execution environment
US7130977B1 (en) Controlling access to a control register of a microprocessor
AMD et al. Technology (IOMMU) specification
US20080046762A1 (en) Protecting system control registers in a data processing apparatus
KR20040093472A (ko) 영역-입도 하드웨어-제어 메모리 암호화를 제공하기 위한시스템 및 방법
US20060047959A1 (en) System and method for secure computing
JP3982687B2 (ja) 分離実行環境での複数の分離メモリへのアクセスの制御
US7082507B1 (en) Method of controlling access to an address translation data structure of a computer system
KR100992611B1 (ko) 보안 예외 스택을 이용하여 예외를 처리하는 방법 및 시스템
JP2005512228A (ja) 強化されたメモリアクセスセキュリティを提供する、メモリに対するデバイスのアクセスを制御するシステムおよび方法
KR100972635B1 (ko) 컴퓨터 시스템내에서의 장치간 액세스를 제어하는 시스템및 방법
CN115885266A (zh) 标签检查装置及方法
KR20180004192A (ko) 정확한 코드 실행 컨텍스트를 검증하는 체크 명령어
CN117222990A (zh) 用于使用能力约束对存储器的访问的技术

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