KR100972635B1 - 컴퓨터 시스템내에서의 장치간 액세스를 제어하는 시스템및 방법 - Google Patents

컴퓨터 시스템내에서의 장치간 액세스를 제어하는 시스템및 방법 Download PDF

Info

Publication number
KR100972635B1
KR100972635B1 KR1020047015524A KR20047015524A KR100972635B1 KR 100972635 B1 KR100972635 B1 KR 100972635B1 KR 1020047015524 A KR1020047015524 A KR 1020047015524A KR 20047015524 A KR20047015524 A KR 20047015524A KR 100972635 B1 KR100972635 B1 KR 100972635B1
Authority
KR
South Korea
Prior art keywords
access
memory
signal
bus
security check
Prior art date
Application number
KR1020047015524A
Other languages
English (en)
Other versions
KR20040102363A (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 KR20040102363A publication Critical patent/KR20040102363A/ko
Application granted granted Critical
Publication of KR100972635B1 publication Critical patent/KR100972635B1/ko

Links

Images

Classifications

    • 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
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Accommodation For Nursing Or Treatment Tables (AREA)
  • Aiming, Guidance, Guns With A Light Source, Armor, Camouflage, And Targets (AREA)
  • Credit Cards Or The Like (AREA)

Abstract

목적 장치(414A-D)에 대한 액세스 보안을 제공하는 장치 및 방법이 제공된다. 이 장치는 전송 매체(416, 418)에 결합되는 보안 체크 유닛(416, 418)을 포함한다. 보안 체크 유닛(416, 418)은 전송 매체(408, 412)상의 신호들을 모니터하고, 상기 신호들에 근거하여 전송 매체(408, 412)에 결합된 제1 장치(414A-D 중 한 장치)에 의한 상기 전송 매체(408, 412)에 결합된 제2 장치(414A-D 중 제1 장치가 아닌 다른 한 장치)에의 액세스를 검출한다. 보안 체크 유닛(416, 418)은 또한 상기 신호들에 근거하여 상기 제1 장치의 신원을 결정하고, 상기 제1 장치의 신원에 근거하여 상기 제1 장치에 의한 상기 제2 장치에의 액세스를 제어한다.
보안 체크, 전송매체, 중재, 액세스

Description

컴퓨터 시스템내에서의 장치간 액세스를 제어하는 시스템 및 방법{SYSTEM AND METHOD FOR CONTROLLING DEVICE-TO-DEVICE ACCESSES WITHIN A COMPUTER SYSTEM}
본 발명은 일반적으로 컴퓨터 시스템에 관한 것으로, 더 상세하게는 컴퓨터 시스템 구성요소들에 대한 액세스 보호를 제공하는 구조 및 방법에 관한 것이다.
전형적으로 컴퓨터 시스템은 비교적 저가로 비교적 높은 수준의 성능을 얻기 위해 메모리 계층을 포함한다. 서로 다른 몇몇 소프트웨어 프로그램의 명령은 전형적으로 비교적 대용량이지만 속도가 느린 비휘발성 저장유닛 (예를 들면, 디스크 드라이브 유닛)에 저장된다. 사용자가 실행을 위해 프로그램 중의 하나를 선택하면, 선택된 프로그램의 명령이 주 메모리 유닛내로 복사되고, 중앙 처리 장치(CPU)는 주 메모리 유닛으로부터 상기 선택된 프로그램의 명령들을 얻는다. 공지된 가상 메모리 관리 기법은 CPU로 하여금 임의의 소정 시간에 주 메모리 유닛 내의 데이터 구조의 일부만을 저장함으로써 주 메모리 유닛보다 크기가 큰 데이터 구조를 액세스할 수 있게 한다. 나머지 데이터 구조는 비교적 대용량이지만 속도가 느린 비휘발성 저장유닛에 저장되고, 필요할 때에만 주 메모리 유닛내로 복사된다.
가상 메모리는 전형적으로 CPU의 어드레스 공간을 페이지 프레임 또는 "페이지"라고 하는 다수의 블록으로 분할하여 구현된다. 이 페이지들의 일부에 대응하는 데이터만이 임의의 소정 시간에 주 메모리 유닛에 저장된다. CPU가 소정 페이지 내에 어드레스를 생성하고 그 페이지의 사본이 주 메모리 유닛에 위치되지 않으면, 데이터의 필요한 페이지는 비교적 대용량이지만 속도가 느린 비휘발성 저장유닛에서 주 메모리 유닛내로 복사된다. 이 프로세스에서, 데이터의 다른 페이지가 주 메모리 유닛에서 비휘발성 저장유닛내로 복사되어 필요한 페이지를 위한 장소를 만들 수 있다.
흔히 사용되는 80x86 (x86) 프로세서 아키텍춰는 보호되는 가상 어드레스 모드(즉, 보호 모드)를 지원하기 위한 전용 하드웨어 요소를 포함하고 있다. 지금부터 도 1 내지 3을 사용하여 x86 프로세서가 어떻게 해서 가상 메모리와 메모리 보호 특징 모두를 구현하는지를 설명할 것이다. 도 1은 x86 프로세스 아키텍춰의 공지된 선형-대-물리적 어드레스 변환(선형 어드레스를 물리적 어드레스로 변환) 메커니즘의 다이어그램이다. 어드레스 변환 메커니즘(100)은 x86 프로세스 내에 내장되고, x86 프로세스 내에 만들어진 선형 어드레스(102), 페이지 테이블 디렉토리 (즉, 페이지 디렉토리)(104), 페이지 테이블(106)을 포함하는 다수의 페이지 테이블, 페이지 프레임(108)을 포함하는 다수의 페이지 프레임, 및 제어 레지스터 3(CR3)(110)을 포함한다. 페이지 디렉토리(104) 및 다수의 페이지 테이블은 운영 체제 소프트웨어 (즉, 운영체제)에 의해 생성되고 유지되는 페이지된 메모리 데이터 구조이다. 페이지 디렉토리(104)는 항상 메모리(즉 주 메모리 유닛)에 위치된다. 설명을 간략히 하기 위해, 페이지 테이블(106)과 페이지 프레임(108)은 또한 메모리에 상주하는 것으로 가정할 것이다.
도 1에 도시된 바와 같이, 선형 어드레스(102)는 선형-대-물리적 어드레스 변환을 달성하기 위해 세 개의 부분으로 분할된다. CR3(110)의 최고 차수 비트들은 페이지 디렉토리 기본 레지스터(page directory base register)를 저장하는데 사용된다. 페이지 디렉토리 기본 레지스터는 페이지 디렉토리(104)를 포함하는 메모리 페이지의 기본 어드레스(base address)이다. 페이지 디렉토리(104)는 페이지 디렉토리 엔트리(112)를 포함하는 다수의 페이지 디렉토리 엔트리를 포함한다. 선형 어드레스(102)의 최고 차수 또는 최상위 비트를 포함하는 선형 어드레스(102)의 상위 "디렉토리 인덱스"부분은 페이지 디렉토리(104)에의 인덱스로서 사용된다. 페이지 디렉토리 엔트리(112)는 CR3(110)의 페이지 디렉토리 기본 레지스터와 선형 어드레스(102)의 상위 "디렉토리 인덱스"부분을 사용하여 페이지 디렉토리(104) 내로부터 선택된다.
도 2는 x86 프로세서 아키텍춰의 페이지 디렉토리 엔트리 포맷(200)의 다이어그램도이다. 도 2에 도시한 바와 같이, 소정의 페이지 디렉토리 엔트리의 최고 차수 (즉 최상위) 비트들은 페이지 테이블 기본 어드레스(page table base address)를 포함하고, 여기서, 상기 페이지 테이블 기본 어드레스는 대응하는 페이지 테이블을 포함하는 메모리 페이지의 기본 어드레스이다. 페이지 디렉토리 엔트리(112)의 페이지 테이블 기본 어드레스는 대응하는 페이지 테이블(106)을 선택하는데 사용된다.
다시 도 1을 참조하면, 페이지 테이블(106)은 페이지 테이블 엔트리(114)를 비롯한 다수의 페이지 테이블 엔트리들을 포함한다. 선형 어드레스(102)의 중간부에 있는 "테이블 인덱스" 부분은 페이지 테이블(106)에의 인덱스로 사용되어, 페이지 테이블 엔트리(114)를 선택한다. 도 3은 x86 프로세스 아키텍춰의 페이지 테이블 엔트리 포맷(300)의 다이어그램도이다. 도 3에 도시한 바와 같이, 소정의 페이지 테이블 엔트리의 최고 차수 (즉 최상위) 비트들은 페이지 프레임 기본 어드레스를 포함하는데, 여기서 상기 페이지 프레임 기본 어드레스는 대응하는 페이지 프레임의 기본 어드레스이다.
다시 도 1을 참조하면, 페이지 테이블 엔트리(114)의 페이지 프레임 기본 어드레스는 대응하는 페이지 프레임(108)을 선택하는데 사용된다. 페이지 프레임(108)은 다수의 메모리 위치를 포함한다. 선형 어드레스(102)의 하위 즉, "오프셋(offset)"부분은 페이지 프레임(108)에의 인덱스로서 사용된다. 결합될 때, 페이지 테이블 엔트리(114)의 페이지 프레임 기본 어드레스 및 선형 어드레스(102)의 오프셋 부분은 선형 어드레스(102)에 대응하는 물리적 어드레스를 만들고, 페이지 프레임(108) 내의 메모리 위치(116)를 가리킨다. 메모리 위치(116)는 선형-대-물리적 어드레스 변환의 결과인 물리적 어드레스를 갖는다.
메모리 보호 특징에 관련하여, 도 2의 페이지 디렉토리 엔트리 포맷(200)과 도 3의 페이지 테이블 엔트리 포맷(300)은 사용자/감독자 (U/S) 비트 및 판독/기록 (R/W) 비트를 포함한다. U/S 및 R/W 비트의 내용(contents)은 운영체제에 의해 대응하는 페이지 프레임(즉 메모리 페이지)을 비허가 액세스로부터 보호하는데 사용된다. U/S=0은 운영체제 메모리 페이지를 지칭하는데 사용되고, 운영체제의 "감독자" 레벨에 해당한다. 운영체제의 감독자 레벨은 x86 프로세서에 의해 실행되는 소프트웨어 프로그램 및 루틴의 현재 특권 레벨 0(CPL0)에 해당한다. (감독자 레벨 은 또한 x86 프로세서의 CPL1 및/또는 CPL2에 해당할 수 있다.) U/S=1은 사용자 메모리 페이지들을 가리키고, 운영체제의 "사용자" 레벨에 해당한다. 운영체제의 사용자 레벨은 x86 프로세서의 CPL3에 해당한다. (사용자 레벨은 또한 x86 프로세서의 CPL1 및/또는 CPL2에 해당할 수 있다.)
R/W 비트는 상기 대응하는 메모리 페이지에 허용된 액세스의 종류를 가리키는데 사용된다. R/W=0는 판독 전용 액세스만이 대응하는 메모리 페이지 (즉, 대응하는 메모리 페이지는 "판독 전용"임)에 허용되었다는 것을 가리킨다. R/W=1은 판독 및 기록 억세스들 모두가 해당 메모리 페이지에 허용됨(즉, 해당 메모리 페이지는 "판독 기록 가능"임)을 가리킨다.
도 1의 선형-대-물리적 어드레스 변환 동작 동안, 페이지 프레임(108)에 대응하는 페이지 디렉토리 엔트리(112) 및 페이지 테이블 엔트리(114)의 U/S 비트의 내용은 페이지 프레임(108)에의 액세스가 허가되었는지를 판단하기 위해 논리곱 (logically ANDed)된다. 유사하게, 페이지 디렉토리 엔트리(112) 및 페이지 테이블 엔트리(114)의 R/W 비트의 내용은 페이지 프레임(108)에의 액세스가 허가되었는지를 판단하기 위해 논리곱(logically ANDed)된다. 만일 U/S 및 R/W 비트의 논리 조합은 페이지 프레임(108)에의 액세스가 허가되었다는 것을 가리키면, 메모리 위치(116)는 물리적 어드레스를 사용하여 액세스된다. 한편, 만일 U/S 및 R/W 비트의 논리 조합이 페이지 프레임(108)에의 액세스가 허가되지 않았다는 것을 가리키면, 메모리 위치(116)는 액세스되지 않으며, 보호 위반(protection fault)을 나타내는 신호가 발생된다.
불행히도, 상기 설명한 x86 프로세서 아키텍춰의 메모리 보호 메커니즘은 메모리에 저장된 데이터를 보호하기에 충분하지 않다. 예를 들어, 감독자 레벨(즉 0의 CPL을 갖는)에서 실행하는 임의의 소프트웨어 프로그램 또는 루틴은 메모리의 임의의 부분을 액세스할 수 있고, "판독 전용" (R/W=0)으로 표시되지 않은 메모리의 임의의 부분을 수정 (즉, 기록)할 수 있다. 또한, 감독자 레벨에서 실행하는 것에 의해, 소프트웨어 프로그램 또는 루틴은 메모리의 임의의 부분의 속성(즉 U/S 및 R/W 비트)을 변경할 수 있다. 따라서, 소프트웨어 프로그램 또는 루틴은 "판독 전용" 내지 "판독 기록" (R/W=1)로 표시된 메모리의 임의의 부분을 변경한 후 계속 메모리의 해당 부분을 수정할 수 있다.
x86 프로세서 아키텍춰의 보호 메커니즘은 또한 메모리에 동작가능하게 결합된 하드웨어 장치에 의한 메모리에의 잘못된 또는 악의적인 액세스를 방지하기에 부적절하다. “판독 전용”으로 표시된 메모리의 부분이 (전술한 바와 같이 우선 메모리의 해당 부분의 속성이 변하지 않고)하드웨어 장치에 의해 기동된 기록 액세스에 의해 수정될 수 없다는 것이 사실이다. 또한, 하드웨어 장치와 메모리 간에 데이터 전송을 담당하는 소프트웨어 프로그램 또는 루틴 (즉 장치 드라이버)은 전형적으로 사용자 레벨(즉 CPL3)에서 실행하고, 감독자 레벨(U/S=0)로서 표시된 메모리의 부분에의 액세스는 허용되지 않는다. 그러나, x86 프로세서 아키텍춰의 보호 메커니즘은 명령 실행(즉, 프로그램된 입력/출력)의 결과로 수행된 메모리에의 장치 액세스만을 담당(cover)한다. 장치 드라이버는, 버스 마스터링 (bus mastering) 또는 DMA 성능을 갖는 하드웨어 장치를, 이 하드웨어 장치에 의해 액세스가능한 메모리의 임의의 부분내로 이 하드웨어 장치로부터의 데이터를 전송하도록 프로그램할 수 있다. 예를 들어, 플로피 디스크로부터의 데이터를, 운영체제를 저장하는데 사용되는 메모리의 일부에 직접 전송하도록 플로피 디스크 제어기를 프로그램하는 것은 비교적 쉽다.
더욱이, X86 프로세서 아키텍춰의 보호 메커니즘은 장치간 액세스에 대처하지 못한다. 하드웨어 장치들을 비롯한 컴퓨터시스템의 모든 요소들은 전형적으로 통신을 용이하게 하기위해 서로에 동작가능하게 결합된다. 시스템 초기화(즉, "부팅업") 동안, CPU는 요구되는 기능들을 수행하도록 하드웨어장치들을 구성하는 명령들(예컨대, 프로그램)을 실행한다. 컴퓨터 시스템의 동작시, CPU 및 하드웨어 장치들은 확립된 프로토콜을 이용하여 서로에 액세스한다. 그러나, 악성 장치 드라이버(malicious device driver)들이 버스 마스터링 또는 DMA 성능을 갖는 제 1하드웨어 장치가 제 2하드웨어 장치에 액세스하도록 프로그램함으로써, 제 2하드웨어 장치로부터 기밀 정보를 취득하거나 혹은 제 2하드웨어 장치의 프로그램된 기능들을 변경시킬 수 있다. 그러한 액세스의 결과로써, 제 2하드웨어 장치가 제 2 하드웨어 장치에 물리적 손상을 야기하게 동작하게끔 프로그램되는 결과를 초래한다.
본 발명의 한 양상에 따르면, 장치가 제공된다. 이 장치는 전송 매체에 연결되는 보안 체크유닛(SCU)을 포함한다. 이 SCU는 전송 매체상의 신호들을 모니터하고, 이들 신호에 근거하여 전송 매체에 연결된 제1 장치가 역시 전송 매체에 연결된 제2 장치에 액세스를 시도하는 것을 검출한다. SCU는 또한 상기 신호들에 근거하여 상기 제1 장치의 신원을 결정하고, 이 신원에 따라 상기 제1 장치에 의한 상기 제2 장치에의 액세스를 제어한다.
본 발명의 다른 양상에 따르면, 다른 장치가 제공된다. 이 장치는 전송 매체에 연결되는 보안 체크유닛(SCU)을 포함한다. 이 SCU는 전송 매체상의 신호들을 모니터하고, 이들 신호에 근거하여 상기 전송 매체에 연결된 제1 장치가 역시 전송매체에 연결된 제2 장치에 액세스를 시도하는 것을 검출한다. 이 SCU는 또한 상기 신호들에 근거하여, 상기 제1 장치의 신원을 결정하고, 이 신원에 근거하여 상기 제1 장치가 상기 제2 장치에 액세스하도록 허가되었는지를 결정한다. 이 SCU는 또한 만일 상기 제1 장치가 상기 제2 장치에 액세스 하도록 허가되었으면, 상기 제2 장치가 상기 제1 장치에 의한 액세스를 허용하게 한다.
본 발명의 또 다른 양상에 따르면, 목적 장치에 대한 액세스 보안을 제공하는 방법이 제공된다. 이 방법은 신호들을 모니터하고, 이들 신호에 근거하여 추가의 장치가 상기 목적 장치에 액세스 하려는 시도를 검출하는 단계를 포함한다. 이 방법은 또한 상기 추가의 장치의 신원을 검출하여 이 신원에 근거하여 상기 목적 장치에 대한 액세스를 제어하는 단계를 포함한다.
본 발명은 첨부 도면을 참조로한 다음의 설명으로부터 이해될 수 있을 것이며, 도면에서 유사한 도면부호는 유사한 요소를 가리킨다.
도 1은 x86 프로세서 아키텍춰의 공지된 선형-대-물리적 어드레스 변환 메커니즘의 다이어그램도.
도 2는 x86 프로세서 아키텍춰의 페이지 디렉토리 엔트리 포맷의 다이어그램도.
도 3은 x86 프로세서 아키텍춰의 페이지 테이블 엔트리 포맷의 다이어그램도.
도 4는 CPU 및 시스템 또는 ‘호스트“ 브리지 - 상기 CPU는 CPU 보안 체크 유닛(SCU)을 포함하고, 상기 호스트 브리지는 호스트 브리지 SCU를 포함함 -를 포함하는 컴퓨터 시스템의 일 실시예의 다이어그램도.
도 5는 도 4의 컴퓨터 시스템의 다양한 하드웨어 및 소프트웨어 구성요소 간의 관계를 도시하는 다이어그램도.
도 6은 도 4의 컴퓨터 시스템의 CPU - 상기 CPU는 메모리 관리 유닛(MMU)을 포함함 - 의 일실시예의 다이어그램.
도 7은 도 6의 MMU - 상기 MMU는 페이징 유닛을 포함하고, 상기 페이징 유닛은 CPU SCU를 포함함 -의 일 실시예의 다이어그램도.
도 8은 도 7의 CPU SCU의 일 실시예의 다이어그램도.
도 9는 선택된 메모리 페이지의 추가적인 보안 정보를 얻기 위해 상기 선택된 메모리 페이지의 보안 속성 테이블(security attribute table, SAT) 엔트리를 액세스하기 위한 메커니즘의 일 실시예의 다이어그램도.
도 10은 SAT 디폴트 레지스터의 일 실시예의 다이어그램도.
도 11은 SAT 디렉토리 엔트리 포맷의 일 실시예의 다이어그램도.
도 12는 SAT 엔트리 포맷의 일 실시예의 다이어그램도.
도 13은 도 4의 호스트 브리지 - 상기 호스트 브리지는 호스트 브리지 SCU를 포함함 - 의 일 실시예의 다이어그램도.
도 14는 도 13의 호스트 브리지 SCU의 일 실시예의 다이어그램도.
도 15는 다수의 메모리 페이지 내에 정렬된 데이터를 저장하는데 사용되는 메모리에 대한 액세스 보안을 제공하기 위한 제1 방법의 일 실시예의 순서도.
도 16은 다수의 메모리 페이지 내에 정렬된 데이터를 저장하는데 사용되는 메모리에 대한 액세스 보안을 제공하기 위한 제2 방법의 일 실시예의 순서도.
도 17은 도 4의 호스트 브리지 SCU(418) - 이 호스트 브리지 SCU는 액세스 허가 테이블을 포함함 - 의 일 실시예의 다이어그램도.
도 18은 버스에 연결된 제1 장치 및 제2 장치를 포함하는 시스템내에 적용가능한 방법 - 이 방법은 상기 제2 장치에 대해 액세스 보안을 제공함 - 의 일실시예의 순서도.
비록 본 발명은 다양한 수정 및 대안적인 형태로 실시될 수도 있지만, 그 특정 실시예를 예로서 도면에 도시하고 이하 상세히 설명한다. 그러나, 이 특정 실시예의 설명은 본 발명을 개시된 특정 형태로만 한정하려 의도한 것이 아니고, 첨부하는 청구범위에 한정된 바와 같이 본 발명의 정신과 범위 내에서의 모든 수정, 균등물 및 대체를 포괄하도록 의도된 것임을 알아야만 한다.
발명의 예시적인 실시예가 이하 설명된다. 명료성을 위해, 실제 구현의 모든 특징을 본 명세서에서 설명하지는 않았다. 물론, 이와 같은 임의의 실제 실시예에서, 실시예에 따라 변할 수 있는 시스템 관련 및 사업 관련 제약에의 준수와 같이 개발자의 특정 목표들을 달성하기 위해 무수히 많은 구현 상의 변경이 있을 수 있다는 것을 알아야 한다. 더우기, 이와 같은 개발 노력은 복잡하고 시간 소모적이지만, 그럼에도 불구하고 본 개시의 이익을 갖는 당업자에게는 일상적인 일이 될 것이다.
도 4는 CPU (402), 시스템 또는 '호스트' 브리지(404), 메모리(406), 제1 장치 버스(408) (예컨대, 주변 구성요소 상호접속부 즉, PCI 버스), 장치 버스 브리지(410), 제2 장치 버스(412) (예컨대, 업계 표준 아키텍춰 즉, ISA 버스), 및 4개의 장치 하드웨어 유닛(414A-414D)을 포함하는 컴퓨터 시스템(400)의 일 실시예의 다이어그램도이다. 호스트 브리지(404)는 CPU(402), 메모리(406) 및 장치 버스(408)에 결합된다. 호스트 브리지(404)는 CPU(402)와 장치 버스(408) 간의 신호를 변환하고, 메모리(406)를 CPU(402) 및 장치 버스(408)에 동작가능하게 결합한다. 장치 버스 브리지(410)는 장치 버스(408)와 장치 버스(412) 간에 결합되고, 장치 버스(408)와 장치 버스(412)간의 신호를 변환한다. 도 4의 실시예에서, 장치 하드웨어 유닛(414A, 414B)은 장치 버스(408)에 결합되고, 장치 하드웨어(414C, 414D)는 장치 버스(412)에 결합된다. 장치 하드웨어(414A-414D) 중 하나 이상은 예를 들어, 저장유닛 (예컨대, 하드 디스크 드라이브, 플로피 드라이브 및 CD-ROM 드라이브), 통신 장치(예컨대, 모뎀 및 네트워크 어댑터) 또는 입력/출력 장치(예컨대, 비디오 장치, 오디오 장치 및 프린터)일 수 있다.
삭제
도 4의 실시예에서, CPU(402)는 CPU 보안 체크 유닛(SCU)(416)을 포함하고, 호스트 브리지(404)는 호스트 브리지 SCU(418)를 포함한다. 이하에 상세히 설명하는 바와 같이, CPU SCU(416)는 메모리(406)를 CPU(402)(즉, "소프트웨어-개시 액세스")에 의해 발생된 비허가 액세스로부터 보호하고, 호스트 브리지 SCU(418)는 메모리(406)를 장치 하드웨어 유닛(414A-414D)(즉, "하드웨어-개시 액세스")에 의해 개시된 비허가 액세스로부터 보호한다. 다른 실시예에서, 호스트 브리지(404)는 도 4에 도시한 바와 같이 CPU(402)의 일부일 수 있다는 것을 알아야 한다.
도 5는 도 4의 컴퓨터 시스템(400)의 다양한 하드웨어 및 소프트웨어 구성요소 간의 관계를 도시하는 다이어그램이다. 도 5의 실시예에서, 다수의 어플리케이션 프로그램(500), 운영체제(502), 보안 커널(504), 및 장치 드라이버(506A-506D)는 메모리(406)에 저장된다. 어플리케이션 프로그램(500), 운영체제(502), 보안 커널(504), 및 장치 드라이버(506A-506D)는 CPU(402)에 의해 실행되는 명령을 포함한다. 운영체제(502)는 사용자 인터페이스 및 소프트웨어 '플랫폼' - 이 플랫폼의 상부에서 어플리케이션 프로그램(500)이 실행됨- 을 제공한다. 운영체제(502)는 또한 예를 들어 파일 시스템 관리, 프로세스 관리 및 입력/출력(I/O) 제어를 포함하는 기본 지원 기능들을 제공할 수 있다.
운영체제(502)는 또한 기본적인 보안 기능들을 제공할 수 있다. 예를 들어, CPU(402)(도 4)는 x86 명령 세트의 명령을 실행하는 x86 프로세서일 수 있다. 이러한 상황에서, CPU(402)는 전술한 바와 같이 보호 모드로 가상 메모리 및 메모리 보호 특징 모두를 제공하는 전용 하드웨어 요소를 포함할 수 있다. 운영체제(502)는 예를 들어 보호 모드로 CPU(402)를 실행시키고 CPU(402)의 전용 하드웨어 요소 를 사용하여 보호 모드로 가상 메모리 및 메모리 보호 모두를 제공하는 운영체제 (Microsoft Corp., Redmond, WA)의 Windowsⓡ 계열중의 하나일 수 있다.
이하 상세히 설명하는 바와 같이, 보안 커널(504)은 메모리(406)에 저장된 데이터를 허가되지 않은 액세스로부터 보호하기 위해, 운영체제(502)에 의해 제공되는 보안 기능 이상의 추가적인 보안 기능을 제공한다. 도 5의 실시예에서, 장치 드라이브(506A-506D)는 각각의 대응하는 장치 하드웨어 유닛(414A-414D)과 동작가능하게 연관되어 결합된다. 장치 하드웨어 유닛(414A 및 414D)은 "안전한(secure)" 장치이고, 대응하는 장치 드라이버(506A 및 506D)는 "안전한" 장치 드라이버이다. 보안 커널(504)은 운영체제(502)와 보안 장치 드라이버(506A 및 506D) 사이에 결합되고, 어플리케이션 프로그램(500)과 운영체제(502)에 의한 안전한 장치 드라이버(506A 및 506D) 및 대응하는 안전한 장치(414A 및 414D)에의 모든 액세스를 모니터한다. 보안 커널(504)은 어플리케이션 프로그램(500) 및 운영체제(502)에 의한 안전한 장치 드라이버(506A 및 506D) 및 대응하는 안전한 장치(414A 및 414D)에의 비허가된 액세스를 방지한다.
도 5에 도시된 바와 같이, 보안 커널(504)은 (예컨대, 하나 이상의 장치 드라이버를 거쳐) CPU SCU(416) 및 호스트 브리지 SCU(418)에 결합된다. 이하에 상세히 설명하는 바와 같이, CPU SCU(416) 및 호스트 브리지 SCU(418)는 메모리(406)에의 액세스를 제어한다. CPU SCU(416)는 메모리(406)에의 모든 소프트웨어 개시 액세스를 모니터하고, 호스트 브리지 SCU(418)는 메모리(406)에의 모든 하드웨어 개시 액세스를 모니터한다. 일단 보안 커널(504)에 의해 구성되면, CPU SCU(416)와 호스트 브리지 SCU(418)는 메모리(406)에 허가된 액세스만을 허용한다.
도 5의 실시예에서, 장치 드라이버(506B 및 506C)는 “불안전한(non-secure)" 장치 드라이버이고, 대응하는 장치 하드웨어 유닛(414B 및 414C)도 "불안전한" 장치 하드웨어 유닛이다. 장치 드라이버(506B 및 506C) 및 대응하는 장치 하드웨어 유닛(414B 및 414C)은 예를 들어 "레거시(legacy)" 장치 드라이버 및 장치 하드웨어 유닛일 수 있다.
다른 실시예에서, 보안 커널(504)은 운영체제(502)의 일부일 수 있다는 것을 알아야 한다. 또 다른 실시예에서, 보안 커널(504), 장치 드라이버(506A 및 506D), 및/또는 장치 드라이버(506B 및 506C)는 운영체제(502)의 일부일 수 있다.
도 6은 도 4의 컴퓨터 시스템(400)의 CPU(402)의 일실시예의 다이어그램이다. 도 6의 실시예에서, CPU(402)는 실행 유닛(600), 메모리 관리 유닛(MMU)(602), 캐쉬 유닛(604), 버스 인터페이스 유닛(BIU)(606), 제어 레지스터(608) 세트, 및 안전 실행 모드(SEM) 레지스터(610) 세트를 포함한다. CPU SCU(416)은 MMU(602)내에 위치된다. 이하에 상세히 설명하는 바와 같이, SEM 레지스터(610) 세트는 도 4의 컴퓨터 시스템(400)내에 안전 실행 모드(SEM)를 구현하는데 사용되고, CPU SCU(416) 및 호스트 브리지 SCU(418)의 동작은 SEM 레지스터(610) 세트의 내용에 의해 제어된다. SEM 레지스터(610)는 보안 커널(504)(도 5)에 의해 액세스(즉, 기록 및/또는 판독)된다. 도 4의 컴퓨터 시스템(400)은 예를 들어, (i) CPU(402)가 x86 보호 모드로 동작하는 x86 프로세서이고, (ii) 메모리 페이징이 인에이블되고, 그리고 (iii) SEM 레지스터(610)의 내용이 SEM 동작을 명시할 때 SEM에서 동작할 수 있다.
일반적으로, 제어 레지스터(608) 세트의 내용이 CPU(402)의 동작을 제어한다. 따라서, 제어 레지스터(608) 세트의 내용은 실행 유닛(600), MMU(602), 캐쉬 유닛(604) 및/또는 BIU(606)의 동작을 제어한다. 제어 레지스터(608) 세트는 예를 들어, x86 프로세서 아키텍춰의 다수의 제어 레지스터를 포함할 수 있다.
CPU(402)의 실행 유닛(600)은 명령(예컨대, x86 명령) 및 데이터를 페치하고, 페치된 명령을 실행하고, 명령 실행 동안 신호(예컨대, 어드레스, 데이터 및 제어 신호들)를 발생한다. 실행 유닛(600)은 캐쉬 유닛(604)에 결합되고, 캐쉬 유닛(604) 및 BIU(606)를 거쳐 메모리(406)(도 4)로부터 명령을 수신할 수 있다.
컴퓨터 시스템(400)의 메모리(406)(도 4)는 각각 유일한 물리적 어드레스를 갖는 복수의 메모리 장소를 포함한다. 페이징이 인에이블된 보호 모드에서 동작할 때, CPU(402)의 어드레스 공간은 페이지 프레임 또는 "페이지"라고 하는 다수의 블록으로 분할된다. 전술한 바와같이, 페이지들의 일부에 대응하는 데이터만이 임의의 소정 시간에 메모리(406)에 저장된다. 도 6의 실시예에서, 명령 실행 동안 실행 유닛(600)에 의해 발생된 어드레스 신호들은 세그먼트 (즉, "논리") 어드레스를 표현한다. 이하에 설명하는 바와 같이, MMU(602)는 실행 유닛(600)에 의해 발생된 세그먼트된 어드레스를 메모리(406)의 대응하는 물리적 어드레스로 변환한다. MMU(602)는 캐쉬 유닛(604)에 물리적 어드레스를 제공한다. 캐쉬 유닛(604)은 실행 유닛(600)에 의해 최근에 페치된 명령과 데이터를 저장하는데 사용되는 비교적 작은 저장 유닛이다. BIU(606)는 캐쉬 유닛(604)과 호스트 브리지(404)간에 결합되어, 호스트 브리지(404)를 거쳐 메모리(406)로부터 캐쉬 유닛(604)에 존재하지 않 는 명령과 데이터를 페치하는데 사용된다.
도 7은 도 6의 MMU(602)의 일 실시예의 다이어그램도이다. 도 7의 실시예에서, MMU(602)는 세그멘테이션 유닛(700), 페이징 유닛(702), 및 물리적 어드레스를 만들기 위해 세그멘테이션 유닛(700) 및 페이징 유닛(702)의 출력들 간에서 선택을 하기 위한 선택 로직(704)을 포함한다. 도 7에 도시된 바와 같이, 세그멘테이션 유닛(700)은 실행 유닛(600)으로부터 세그먼트된 어드레스를 수신하고, x86 프로세서 아키텍춰의 공지된 세그먼트-대-선형 어드레스 변환 (세그먼트 어드레스를 선형 어드레스로 변환) 메커니즘을 사용하여 출력에 대응하는 선형 어드레스를 생성한다. 도 7에 도시된 바와 같이, "페이징" 신호에 의해 인에이블되면, 페이징 유닛(702)은 세그멘테이션 유닛(700)에 의해 만들어진 선형 어드레스를 수신하고, 출력에서 대응하는 물리적 어드레스를 만든다. 이 페이징 신호는 x86 프로세서 아키텍춰 및 제어 레지스터(608) 세트(도 6)의 제어 레지스터 0 (CT0)에 있는 페이징 플래그(PG) 비트를 미러(mirror)할 수 있다. 페이징 신호가 디어서트되면(deasserted), 메모리 페이징은 인에이블되지 않고, 선택 로직(704)은 세그멘테이션 유닛(700)으로부터 수신된 선형 어드레스를 물리적 어드레스로서 발생한다.
페이징 신호가 어서트되면(asserted), 메모리 페이징이 인에이블되고, 페이징 유닛(702)은 x86 프로세서 아키텍춰(도 1)의 전술한 선형-대-물리적 어드레스 변환 메커니즘(100)을 사용하여, 세그멘테이션 유닛(700)으로부터 수신된 선형 어드레스를 대응 물리적 어드레스로 변환한다. 전술한 바와 같이, 선형-대-물리적 어드레스 변환 동작 동안, 상기 선택된 페이지 디렉토리 엔트리 및 상기 선택된 페이지 테이블 엔트리의 U/S 비트의 내용이 논리곱되어 페이지 프레임에의 액세스가 허가되는지를 판단한다. 마찬가지로, 상기 선택된 페이지 디렉토리 엔트리 및 상기 선택된 페이지 테이블 엔트리의 R/W 비트의 내용이 논리곱되어 페이지 프레임에의 액세스가 허가되는지를 판단한다. 만일 U/S 및 R/W 비트의 논리 조합이 페이지 프레임에의 액세스가 허가됨을 가리키면, 페이징 유닛(702)은 선형-대-물리적 어드레스 변환 동작의 결과로 인한 물리적 어드레스를 생성한다. 선택 로직(704)은 페이징 유닛(702)에 의해 생성된 물리적 어드레스를 수신하고, 페이징 유닛(702)으로부터 수신된 물리적 어드레스를 물리적 어드레스로서 생성하고, 이 물리적 어드레스를 캐쉬 유닛(604)에 제공한다.
한편, 만일 U/S 및 R/W 비트의 논리 조합이 페이지 프레임(108)에의 액세스가 허가되지 않음을 가리키면, 페이징 유닛(702)은 선형-대-물리적 어드레스 변환 동작 동안 물리적 어드레스를 발생시키지 않는다. 그 대신에, 페이징 유닛(702)은 일반 보호 폴트(general protection fault)(GPF) 신호를 어서트(assert)하고, MMU(602)는 GPF 신호를 실행 유닛(600)에 전송한다. GPF 신호에 응답해서, 실행 유닛(600)은 예외 핸들러 루틴(exception handler routine)을 실행할 수 있고, 궁극적으로 GPF 신호가 어서트되었을때 실행을 행하는 어플리케이션 프로그램들(500)(도 5) 중의 하나의 실행을 중지시킬 수 있다.
도 7의 실시예에서, CPU SCU(416)는 MMU(602)의 페이징 유닛(702) 내에 위치된다. 페이징 유닛(702)은 또한 최근에 결정된 비교적 작은 수의 선형-대-물리적 어드레스 변환을 저장하기 위한 변환 색인 버퍼(translation lookaside buffer, TLB)를 포함할 수 있다.
도 8은 도 7의 CPU SCU(416)의 일 실시예의 다이어그램도이다. 도 8의 실시예에서, CPU SCU(416)는 SEM 레지스터(610)(도 6) 세트에 결합된 보안 체크 유닛(800) 및 보안 속성 테이블(SAT) 엔트리 버퍼(802)를 포함한다. 이하에 설명하는 바와 같이, SAT 엔트리는 메모리 페이지들에 대응하는 페이지 테이블 엔트리 및 페이지 디렉토리 엔트리의 U/S 및 R/W 비트들 위에 추가적인 보안 정보를 포함한다. 보안 체크 로직(800)은 소정의 SAT 엔트리에 저장된 추가적인 보안 정보를 사용하여 대응하는 메모리 페이지에의 비허가의 소프트웨어-개시 액세스를 방지한다. SAT 엔트리 버퍼(802)는 최근에 액세스된 메모리 페이지의 비교적 적은 수의 SAT 엔트리를 저장하는데 사용된다.
전술한 바와 같이, SEM 레지스터(610) 세트는 도 4의 컴퓨터 시스템(400) 내에서 안전 실행 모드(SEM)를 구현하는데 사용된다. SEM 레지스터(610)의 내용은 CPU SCU(416)의 동작을 관할한다. 보안 체크 로직(800)은 도 8에 도시한 통신 버스를 거쳐 MMU(602)로부터 SAT 엔트리 버퍼(802)에 저장될 정보를 수신한다. 보안 체크 로직(800)은 또한 페이징 유닛(702)에 의해 발생된 물리적 어드레스를 수신한다.
도 9 내지 11에서는 도 1의 어드레스 변환 메커니즘(100)을 사용하여 선택된 메모리 페이지의 추가적인 보안 정보가 도 4의 컴퓨터 시스템(400) 내에서 어떻게 얻어지는지를 설명한다. 도 9는 선택된 메모리 페이지의 추가적인 보안 정보를 얻기 위해, 선택된 메모리 페이지의 SAT 엔트리를 액세스하는 메커니즘(900)의 일 실 시예의 다이어그램도이다. 도 9의 메커니즘(900)은 도 8의 보안 체크 로직(800) 내에 구현될 수 있고, 도 4의 컴퓨터 시스템(400)이 SEM에서 동작할 때 구현될 수 있다. 메커니즘(900)은 도 1의 어드레스 변환 메커니즘(100)을 사용하여 페이징 메커니즘(702)(도 7)에 의해 발생된 물리적 어드레스(902), SAT 디렉토리(904), SAT(906)을 포함하는 다수의 SAT, 및 SEM 레지스터(610) 세트의 SAT 기본 어드레스 레지스터(908)를 포함한다. SAT 디렉토리(104) 및 SAT(906)을 포함하는 다수의 SAT는 보안 커널(504)(도 5)에 의해 생성 및 유지되는 SEM 데이터 구조이다. 이하에 설명되는 바와 같이, SAT 디렉토리(104)(존재할 때) 및 임의의 필요한 SAT는 액세스되기 전에 메모리(406)내로 복사된다.
SAT 기본 어드레스 레지스터(908)는 SAT 기본 어드레스 레지스터(908) 내의 유효 SAT 디렉토리 기본 어드레스의 존재를 가리키는 존재 (P) 비트를 포함한다. SAT 기본 어드레스 레지스터(908)의 최고 차수 (즉, 최상위) 비트는 SAT 디렉토리 기본 어드레스를 위해 할당(reserve)된다. SAT 디렉토리 기본 어드레스는 SAT 디렉토리(904)를 포함하는 메모리 페이지의 기본 어드레스이다. 만일 P=1이면, SAT 디렉토리 기본 어드레스는 유효하고, SAT 테이블은 메모리 페이지의 보안 속성을 명시한다. 만일 P=0이면, SAT 디렉토리 기본 어드레스는 유효하지 않고, 어떠한 SAT 테이블도 존재하지 않으며, 메모리 페이지의 보안 속성은 SAT 디폴트 레지스터에 의해 결정된다.
도 10은 SAT 디폴트 레지스터(1000)의 일 실시예의 다이어그램도이다. 도 10의 실시예에서, SAT 디폴트 레지스터(1000)는 안전한 페이지(secure page, SP) 비트를 포함한다. SP 비트는 모든 메모리 페이지가 안전한 페이지 인지를 가리킨다. 예를 들어, 만일 SP=0이면, 모든 메모리 페이지들은 안전한 페이지가 아닐 수 있고, 만일 SP=1이면, 모든 메모리 페이지들은 안전한 페이지일 수 있다.
다시 도 9를 참조하고 SAT 기본 어드레스 레지스터(908)의 P 비트가 ‘1’이라고 가정하면, 페이징 로직(702)(도 7)에 의해 발생된 물리적 어드레스(902)는 선택된 메모리 페이지의 SAT 엔트리를 액세스하기 위해 세 개 부분으로 분할된다. 전술한 바와 같이, SAT 기본 어드레스 레지스터(908)의 SAT 디렉토리 기본 어드레스는 SAT 디렉토리(904)를 포함하는 메모리 페이지의 기본 어드레스이다. SAT 디렉토리(904)는 SAT 디렉토리 엔트리(910)를 비롯한 다수의 SAT 디렉토리 엔트리를 포함한다. 각각의 SAT 디렉토리 엔트리는 메모리(406)에 대응하는 SAT를 가질 수 있다. 물리적 어드레스(902)의 최고 차수 즉, 최상위 비트를 포함하는 물리적 어드레스(902)의 "상위"에 있는 부분은 SAT 디렉토리(904)에의 인덱스로서 사용된다. SAT 디렉토리 엔트리(910)는 SAT 기본 어드레스 레지스터(908)의 SAT 디렉토리 기본 어드레스 및 물리적 어드레스(902)의 상위에 있는 부분을 사용하여 SAT 디렉토리(904)내로부터 선택된다.
도 11은 SAT 디렉토리 엔트리 포맷(1100)의 일 실시예의 다이어그램도이다. 도 11에 따르면, 각각의 SAT 디렉토리 엔트리는 SAT 디렉토리 엔트리 내의 유효 SAT 기본 어드레스의 존재를 가리키는 존재 (P) 비트를 포함한다. 도 11의 실시예에서, 각각의 SAT 디렉토리 엔트리의 최고 차수 (즉, 최상위) 비트는 SAT 기본 어드레스를 위해 할당된다. SAT 기본 어드레스는 대응하는 SAT를 포함하는 메모리 페이지의 기본 어드레스이다. 만일 P=1이면, SAT 기본 어드레스는 유효하고, 대응하는 SAT는 메모리(406)에 저장된다.
만일 P=0이면, SAT 기본 어드레스는 유효하지 않고, 대응하는 SAT는 메모리(406)에 존재하지 않으며 저장 유닛(예를 들어, 디스크 드라이브)으로부터 메모리(406)내로 복사되어야 한다. 만일 P=0이면, 보안 체크 로직(800)은 페이징 유닛(702)내의 로직에 페이지 폴트의 신호를 송신할 수 있고, MMU(602)는 이 페이지 폴트 신호를 실행 유닛(600)(도 6)에 전송할 수 있다. 이 페이지 폴트 신호에 응답해서, 실행 유닛(600)은 저장유닛으로부터 필요한 SAT를 검색하고 메모리(406)에 필요한 SAT를 저장하는 페이지 폴트 핸들러 루틴(page fault handler routine)을 실행할 수 있다. 필요한 SAT가 메모리(406)에 저장된 후, 대응하는 SAT 디렉토리 엔트리의 P 비트는 "1"로 설정되고, 메커니즘(900)은 처리가 계속된다.
다시 도 9를 참조하면, 물리적 어드레스(902)의 "중간부"에 있는 부분은 SAT(906)에의 인덱스로서 사용된다. 따라서 SAT 엔트리(906)는 SAT 디렉토리 엔트리(910)의 SAT 기본 어드레스 및 물리적 어드레스(902)의 중간부에 있는 부분을 사용하여 SAT(906) 내에서 선택된다. 도 12는 SAT 엔트리 포맷(1200)의 일 실시예의 다이어그램도이다. 도 12의 실시예에서, 각각의 SAT 엔트리는 안전한 페이지(SP) 비트를 포함한다. SP 비트는 선택된 메모리 페이지가 안전한 페이지인지를 가리킨다. 예를 들어, 만일 SP=0이면, 선택된 메모리 페이지는 안전한 페이지가 아닐 수 있고, 만일 SP=1이면 선택된 메모리 페이지는 안전한 페이지일 수 있다.
BIU(606)(도 6)은 메모리(406)로부터 필요한 SEM 데이터 구조 엔트리를 검색하여, 이 SEM 데이터 구조 엔트리를 MMU(602)에 제공한다. 다시 도 8을 참조하면, 보안 체크 로직(800)은 통신 버스를 거쳐 MMU(602) 및 페이징 유닛(702)로부터 SEM 데이터 구조 엔트리를 검색한다. 전술한 바와 같이, SAT 엔트리 버퍼(802)는 최근에 액세스된 메모리 페이지의 비교적 적은 수의 SAT 엔트리를 저장하는데 사용된다. 보안 체크 로직(800)은 SAT 엔트리 버퍼(802)에 대응하는 물리적 어드레스의 ‘태그(tag)’ 부분과 함께 소정의 SAT 엔트리를 저장한다.
후속 메모리 페이지 액세스 동안, 보안 체크 로직(800)은 페이징 유닛(702)에 의해 생성된 물리적 어드레스의 "태그" 부분을 SAT 엔트리 버퍼(802)에 저장된 SAT 엔트리에 대응하는 물리적 어드레스의 탭 부분과 비교할 수 있다. 만일 물리적 어드레스의 태그 부분이 SAT 엔트리 버퍼(802)에 저장된 SAT 엔트리에 대응하는 물리적 어드레스의 태그 부분과 일치하면, 보안 체크 로직(800)은 SAT 엔트리 버퍼(802) 내의 SAT 엔트리를 액세스할 수 있어, 메모리(406)로부터 SAT 엔트리를 얻기 위해 도 9의 프로세스를 수행하여야 하는 필요성을 제거한다. 보안 커널(504)(도 5)은 CPU(402)(예를 들어, 콘텍스트 스위칭 동안) 내의 SAT 기본 어드레스 레지스터(908)의 내용을 수정한다. SAT 기본 어드레스 레지스터(908)의 수정에 응답해서, CPU SCU(416)의 보안 체크 로직(800)은 SAT 엔트리 버퍼(802)를 플러쉬(flush) 할 수 있다.
도 4의 컴퓨터 시스템(400)이 SEM에서 동작할 때, 보안 체크 로직(800)은 페이지 디렉토리 엔트리(PDE) U/S 비트, PDE R/W 비트, 페이지 테이블 엔트리(PTE) U/S 비트, 및 물리적 어드레스가 상주하는 선택된 메모리 페이지의 PTE R/W 비트와 함께, 현재 실행하는 태스크 (즉, 현재 실행하는 명령)의 현재 특권 레벨(CPL)을 수신한다. 보안 체크 로직(800)은 선택된 메모리 페이지에 대응하는 SAT 엔트리의 SP 비트와 함께 상기 정보를 이용하여 메모리(406) 액세스가 허가되는지를 판단한다.
도 6의 CPU(402)는 x86 프로세서일 수 있고, x86 프로세서 아키텍춰의 16-비트 세그먼트 레지스터중의 하나인 코드 세그먼트(CS) 레지스터를 포함할 수 있다. 각각의 세그먼트 레지스터는 세그먼트라고 하는 64k의 메모리 블록을 선택한다. 페이징이 인에이블된 보호 모드에서, CS 레지스터에는 메모리(406)의 실행가능한 세그먼트를 가리키는 세그먼트 선택기가 로드된다. 세그먼터 선택기의 최고 차수 (즉 최상위) 비트는 CPU(402)(도 6)의 실행 유닛(600)에 의해 실행될 다음 명령을 포함하는 메모리의 세그먼트를 가리키는 정보를 저장하는데 사용된다. 명령 포인터(IP) 레지스터는 CS 레지스터에 의해 가리켜진 세그먼트에 오프셋을 저장하는데 사용된다. CS:IP 쌍은 다음 명령의 세그먼트된 어드레스를 가리킨다. CS 레지스터의 두개의 최하 차수 (즉, 최하위) 비트는 실행유닛(600)(즉, 현재 태스크의 CPL)에 의해 현재 실행되는 태스크의 현재 특권레벨(CPL)을 가리키는 값을 저장하는데 사용된다.
표 1은 도 4의 컴퓨터 시스템(400)이 SEM에서 동작할 때 CPU-개시(즉 소프트웨어-개시) 메모리 액세스를 위한 예시적인 규칙을 도시한다. CPU SCU(416)(도 4-도 8) 및 보안 커널(504)(도 5)는 운영체제(502)(도 5)에 의해 제공되는 데이터 보안 보다 더 높게 메모리(406)에 저장된 데이터를 위한 추가적인 보안을 제공하기 위해 함께 동작하여 도 4의 컴퓨터 시스템(400)이 SEM에서 동작할 때 표 1의 규칙 을 구현한다.
Figure 112004044392808-pct00001
상기 표 1에서, 현재 실행중인 명령의 SP 비트는 현재 실행 중인 명령을 포함하는 메모리 페이지에 대응하는 SAT 엔트리의 SP 비트이다. 선택된 메모리 페이지의 U/S 비트는 선택된 메모리 페이지의 PTE U/S 비트 및 PDE U/S 비트의 논리곱이다. 선택된 메모리 페이지의 R/W 비트는 선택된 메모리 페이지의 PDE R/W 비트 및 PTE R/W 비트의 논리곱이다. 기호 "X"는 "무관계(don't care)"를 가리키고 논리 값은 "0" 또는 "1"일 수 있다.
다시 도 8로 돌아가서, CPU SCU(416)의 보안 체크 로직(800)은 일반 보호 폴트("GPF" : General Protection Fault) 신호 및 "SEM SECURITY EXCEPTION" 신호를 생성하고, GPF 및 SEM SECURITY EXCEPTION 신호를 페이징 유닛(702)내의 로직에 제공한다. 보안 체크 로직(800)이 GPF 신호를 어서트하면, MMU(602)는 GPF 신호를 실행 유닛(600)(도 6)에 전송한다. GPF 신호에 응답해서, 실행 유닛(600)은 GPF 신호 핸들러 루틴을 액세스 및 실행하기 위해 x86 프로세서 아키텍춰의 공지된 인터럽트 디스크립터 테이블(IDT) 벡터링 메커니즘을 사용할 수 있다.
보안 체크 로직(800)이 SEM 보안 예외 신호를 어서트하면, MMU(602)는 SEM 보안 예외 신호를 실행 유닛(600)에 전송한다. x86 프로세서 아키텍춰의 IDT 벡터링 메커니즘을 사용하는 통상적인 프로세서 예외와는 달리, SEM 보안 예외를 처리하기 위해 다른 벡터링 방법을 사용할 수 있다. SEM 보안 예외는 x86 "SYSENTER" 및 "SYSEXIT" 명령이 동작하는 방법과 유사하게 한쌍의 레지스터(예를 들어, 모델 특정 레지스터 또는 MSRs)를 통해 디스패치될 수 있다. 한쌍의 레지스터는 ”보안 예외 엔트리 점“ 레지스터일 수 있고, SEM 보안 예외가 발생할 때, 명령 예외를 위한 브랜치 타겟 어드레스를 정의할 수 있다. 보안 예외 엔트리 점 레지스터는 SEM 보안 예외 핸들러에의 엔트리 상에 사용될 코드 세그먼트(CS), 명령어 포인터(IP, 또는 64-비트 버전 RIP), 스택 세그먼트(SS) 및 스택 포인터(SP 또는 64-비트 버전 RSP) 값들을 정의할 수 있다. 소프트웨어 제어 하에, 실행 유닛(600)(도 6)은 예외가 발생한 곳을 가리키기 위해 새로운 스택 상에 이전의 SS, SP/RSP, EFLAGS, CS 및 IP/RIP 값을 푸시(push)할 수 있다. 또한, 실행 유닛(600)은 에러 코드를 스택에 푸시할 수 있다. 이전의 SS 및 SS/RSP 값이 항상 저장되기 때문에 인터럽트(IRET) 명령으로부터의 정상적인 복귀는 사용되지 않을 수 있고, CPL의 변화가 발생하지 않더라도 스택 스위치는 항상 달성된다는 것을 알아야 한다. 따라서, SEM 보안 예외 핸들러로부터의 복귀를 달성하기 위해 새로운 명령이 정의될 수 있다.
도 13은 도 4의 호스트 브리지(404)의 일 실시예의 다이어그램도이다. 도 13의 실시예에서, 호스트 브리지(404)는 호스트 인터페이스(1300), 브리지 로직(1302), 호스트 브리지 SCU(418), 메모리 콘트롤러(1304), 및 장치 버스 인터페이스(1306) 및 버스 중재기(1308)를 포함한다. 호스트 인터페이스(1300)는 CPU(402)에 결합되고, 장치 버스 인터페이스(1306)는 장치 버스(408)에 결합된다. 브리지 로직(1302)은 호스트 인터페이스(1300)와 장치 버스 인터페이스(1306)간에 결합된다. 메모리 콘트롤러(1304)는 메모리(406)에 결합되어, 메모리(406)에의 모든 액세스를 수행한다. 호스트 브리지 SCU(418)는 브리지 로직(1302)과 메모리 콘트롤러(1304) 간에 결합된다. 전술한 바와 같이, 호스트 브리지 SCU(418)는 장치 버스 인터페이스(1306)를 거쳐 메모리(406)에의 액세스를 제어한다. 호스트 브리지 SCU(418)는 장치 버스 인터페이스(1306)를 거쳐 메모리(406)에의 모든 액세스를 모니터링하고, 메모리(406)에 허가된 액세스만을 허용한다.
도 13의 실시예에서, 버스 중재기(1308)가 장치 버스 인터페이스(1306), 브리지 로직 (1302) 및 호스트 브리지 SCU(418)에 결합된다. 버스 중재기 (1308)는 브리지 로직(1302), 장치 하드웨어 유닛(414A, 414B)(도 4) 및 장치 버스(408)(도 4)의 제어를 위한 장치 버스 브리지(410)(도4)간에서 중재를 행한다. (도 4의 장치 하드웨어 유닛(414C 및 414D)는 장치 버스 브리지(410)를 통해 장치 버스(408)를 액세스한다) 일반적으로, 장치 버스(408)는 허여 신호(grant signal)를 운반하는 하나 이상의 신호 라인을 포함하며, 여기서 상기 허여 신호는 장치 버스(408)에 연결된 장치들중 어느 것이 장치 버스(408)의 제어를 갖는가를 표시하는 복수의 상태들 중 하나에 놓인다. 버스 중재기(1308)는 상기 허여 신호를 운반하는 하나 이상의 신호 라인들하에서 상기 허여신호를 구동한다. 버스 중재기(1308)는 전형적으로 장치 하드웨어 유닛(414A, 414B)과 장치 버스 브리지(410)로부터의 개별 요청 신호들을 수신하며, 여기서 각 요청 신호는 대응하는 장치가 장치 버스(408)을 제어해야함을 필요로 할 때 상기 대응하는 장치에 의해 어서트된다. 버스 중재기(1308)는 개별 허여 신호들을 장치 하드웨어 유닛(414A, 414B) 및 장치 버스 브리지(410)에 발행(issue)하며, 여기서 상기 허여 신호들중 소정의 하나가 어서트되어, 대응하는 장치는 장치 버스(408)의 허여된 제어임을 표시한다. 하기에서 상세히 설명하는 바와같이, 버스 중재기(1308) 및 호스트 브리지 SCU (418)는 서로 동작하여, 컴퓨터 시스템(400)내에 장치 간 액세스 보안을 제공한다.
도 14는 도 13의 호스트 브리지 SCU(418)의 일 실시예의 다이어그램도이다. 도 14의 실시예에서, 호스트 브리지 SCU(418)는 한 세트의 SEM 레지스터(1402) 및 SAT 엔트리 버퍼(1404)에 결합된 보안 체크 로직(1400)을 포함한다. SEM 레지스터(1402)의 세트는 보안 체크 로직(1400)의 동작을 관할하고, 도 9의 제2 SAT 기본 어드레스 레지스터(908)를 포함한다. SEM 레지스터(1402)의 제2 SAT 기본 어드레스 레지스터(908)는 어드레스가능한 레지스터일 수 있다. 보안 커널(504)(도 5)이 CPU(402)(즉, 콘텍스트 스위치 동안)의 SEM 레지스터(610)의 세트내의 SAT 기본 어드레스 레지스터(908)의 내용을 수정하면, 보안 커널(504)은 또한 호스트 브지리 SCU(418)의 SEM 레지스터(1402)의 세트 내의 제2 SAT 기본 어드레스 레지스터(908)에 동일한 값을 기록할 수 있다. 제2 SAT 기본 어드레스 레지스터(908)의 수정에 응답해서, 호스트 브리지 SCU(418)의 보안 체크 로직(1400)은 SAT 엔트리 버퍼(1404)를 플러쉬할 수 있다.
보안 체크 로직(1400)은 장치 버스 인터페이스(1306) 및 브리지 로직(1302)(도 13)을 거쳐 하드웨어 장치 유닛(414A-414D)(도 4)에 의해 개시된 메모리 액세스의 메모리 액세스 신호를 수신한다. 메모리 액세스 신호는 하드웨어 장치 유닛(414A-414D)으로부터의 물리적 어드레스, 및 연관된 제어 및/또는 데이터 신호를 운반한다. 보안 체크 로직(1400)은 대응하는 메모리 페이지의 SAT 엔트리를 얻기 위한 메커니즘(900)(도 9)을 구현할 수 있고, 도 4의 컴퓨터 시스템(400)이 SEM에서 동작할 때 메커니즘(900)을 구현할 수 있다. SAT 엔트리 버퍼(1404)는 전술한 CPU SCU(416)(도 8)의 SAT 엔트리 버퍼(802)와 유사하고, 최근에 액세스된 메모리 페이지의 비교적 적은 수의 SAT 엔트리를 저장하는데 사용된다.
도 4의 컴퓨터 시스템(400)이 SEM에서 동작할 때, 도 14의 보안 체크 로직(1400)은 선택된 메모리 페이지와 연관된 SAT 엔트리의 추가적인 보안 정보를 사용하여 소정의 하드웨어-개시 메모리 액세스가 허가되는지를 판단한다. 만일 소정의 하드웨어-개시 메모리 액세스가 허가된다면, 보안 체크 로직(1400)은 메모리 콘트롤러(1304)에게 메모리 액세스의 메모리 액세스 신호(즉, 물리적 어드레스를 운반 하는 어드레스 신호 및 연관된 제어 및/또는 데이터 신호)를 제공한다. 메모리 콘트롤러(1304)는 물리적 어드레스 및 연관된 제어 및/또는 데이터 신호를 사용하여 메모리(406)를 액세스한다. 만일 메모리(406) 액세스가 기록 액세스이면, 데이터 신호에 의해 운반된 데이터가 메모리(406)에 기록된다. 만일 메모리(406) 액세스가 판독 액세스이면, 메모리 콘트롤러(1304)는 메모리(406)로부터 데이터를 판독하고, 결과로 나타나는 판독 데이터는 보안 체크 로직(1400)에 제공된다. 보안 체크 로직(1400)은 판독된 데이터를 브리지 로직(1302)에 전송하고, 브리지 로직(1302)은 이 데이터를 장치 버스 인터페이스(1306)에 제공한다.
한편, 만일 소정의 하드웨어-개시 메모리 액세스가 허가되지 않는다면, 보안 체크 로직(1400)은 메모리(406) 액세스의 물리적 어드레스 및 연관된 제어 및/또는 데이터 신호를 메모리 콘트롤러(1304)에게 제공하지 않는다. 만일 허가되지 않은 하드웨어-개시 메모리 액세스가 메모리 기록 액세스이면, 보안 체크 로직(1400)은 기록 액세스의 완료 신호를 출력하고, 기록 데이터를 폐기하여, 메모리(406)가 변경되지 않게 한다. 보안 체크 로직(1400)은 또한 보안 액세스 위반을 문서화하기 위해 로그에 로그 엔트리를 생성(예를 들어, 하나 이상의 상태 레지스터 비트들을 셋 또는 클리어)할 수 있다. 보안 커널(504)은 이와 같은 로그 엔트리를 점검하기 위해 로그를 주기적으로 액세스할 수 있다. 만일 허가되지 않은 하드웨어-개시 메모리 액세스가 메모리 판독 액세스이면, 보안 체크 로직(1400)은 거짓 결과(예를 들어, 모든 "F")를 판독된 데이터로서 브리지 로직(1302)을 거쳐 장치 버스 인터페이스(1306)에 리턴할 수 있다. 보안 체크 로직(1400)은 또한 보안 액세스 위반을 문서화하기 위해 전술한 바와 같이 로직 엔트리를 생성할 수 있다.
도 15는 다수의 메모리 페이지 내에 정렬된 데이터를 저장하는데 사용되는 메모리에 대한 액세스 보안을 제공하기 위한 방법(1500)의 일 실시예의 순서도이다. 방법(1500)은, 도 4의 컴퓨터 시스템(400)이 SEM에서 동작할 때 CPU-개시 (즉, 소프트웨어-개시) 메모리 액세스에 대한 표 1의 예시적인 규칙을 반영한다. 방법(1500)은 MMU(602)(도 6-7)에 내장될 수 있다. 방법(1500)의 단계(1502) 동안, 명령(예를 들어, 명령을 포함하는 태스크의 CPL)의 보안 속성과 함께 명령의 실행 동안 발생된 선형 어드레스가 수신된다. 명령은 메모리 페이지에 상주한다. 단계(1504) 동안, 선형 어드레스는 선택된 메모리 페이지의 기본 어드레스와 선택된 메모리 페이지의 보안 속성을 얻기 위해 메모리에 위치된 (예를 들어, 페이지 디렉토리 및 페이지 테이블) 적어도 하나의 페이지된 메모리 데이터 구조를 액세스하는데 사용된다. 선택된 메모리 페이지의 보안 속성은 예를 들어, 페이지 디렉토리 엔트리의 U/S 비트와 R/W 비트, 및 페이지 테이블 엔트리의 U/S 비트와 R/W 비트를 포함할 수 있다.
판단 단계(1506) 동안, 명령의 보안 속성 및 선택된 메모리 페이지의 보안 속성은 액세스가 허가되는지를 판단하는데 사용된다. 만일 액세스가 허가되면, 단계(1508)에서 선택된 메모리 페이지의 물리적 어드레스를 생성하기위해 선택된 메모리 페이지의 기본 어드레스 및 오프셋이 결합된다. 만일 액세스가 허가되지 않는다면, 단계(1510)동안 폴트 신호(예를 들어, 일반 보호 폴트 신호 즉, GPF 신호)가 발생된다.
단계(1508) 다음의 단계(1512) 동안, 제1 메모리 페이지의 추가적인 보안 속성 및 선택된 메모리 페이지의 추가적인 보안 속성을 얻기 위해 선택된 메모리 페이지의 물리적 어드레스를 사용하여, 메모리(예를 들어, 도 9의 SAT 디렉토리(904) 및 SAT)에 위치된 적어도 하나의 보안 속성 데이터 구조가 액세스된다. 제1 메모리 페이지의 추가적인 보안 속성은 예를 들어, 전술한 바와 같이, 안전한 페이지(SP) 비트를 포함할 수 있는데, 여기서 SP 비트는 제1 메모리 페이지가 안전한 페이지인지를 가리킨다. 마찬가지로, 선택된 메모리 페이지의 추가적인 보안 속성은 안전한 페이지(SP) 비트를 포함할 수 있는데, 여기서 SP 비트는 선택된 메모리 페이지가 안전한 페이지인지를 가리킨다.
명령의 보안 속성, 제1 메모리 페이지의 추가적인 보안 속성, 선택된 메모리 페이지의 보안 속성, 및 선택된 메모리 페이지의 추가적인 보안 속성에 따라서, 단계(1514) 동안 폴트 신호가 발생된다. 방법(1500)의 단계(1512 및 1514)는 CPU SCU(416)(도 4-8)에 내장될 수 있다.
하기의 표 2는 도 4의 컴퓨터 시스템(400)이 SEM에서 동작할 때, 장치 하드웨어 유닛(414A-414D) (즉, 하드웨어-개시 메모리 액세스)에 의해 개시된 메모리 페이지 액세스를 위한 예시적인 규칙을 도시한다. 이와 같은 하드웨어-개시 메모리 액세스는 장치 하드웨어 유닛(414A-414D) 내의 버스 마스터링 회로에 의해 또는 장치 하드웨어 유닛(414A-414D)의 요청시 DMA 장치에 의해 개시될 수 있다. 보안 체크 로직(1400)은 운영 체제(502)(도 5)에 의해 제공되는 데이터 보안 이상으로 메모리(406)에 저장된 데이터에 대한 추가적인 보안을 제공하기 위해, 도 4의 컴퓨터 시스템(400)이 SEM에서 동작할 때 표 2의 규칙을 구현할 수 있다. 이하의 표 2에서, “타겟” 메모리 페이지는 메모리 액세스의 메모리 액세스 신호에 의해 운반되는 물리적 어드레스가 상주하는 메모리 페이지이다.
Figure 112004044392808-pct00002

상기 표 2에서, 타겟 메모리 페이지의 SP 비트는, 메모리 액세스의 물리적 어드레스를 사용하여 호스트 브리지 SCU(418) 및 대응하는 메모리 페이지의 SAT 엔트리를 얻기 위한 도 9에 설명한 메커니즘(900)에 의해 얻어진다.
도 2에 도시된 바와 같이, 타겟 메모리 페이지가 안전한 페이지임을 가리키는 SP=1일 때, 메모리 액세스는 허가되지 않는다. 이와 같은 상황에서, 보안 체크 로직(1400)(도 14)은 메모리 콘트롤러에 메모리 액세스 신호를 제공하지 않는다. 메모리 액세스 신호(예를 들어, 제어 신호)의 일부는 메모리 액세스 유형을 가리키고, 이 메모리 액세스 유형은 판독 액세스 또는 기록 액세스이다. SP=1이고 메모리 액세스 신호가 메모리 액세스 유형이 판독 액세스임을 가리키면, 메모리 액세스는 허가되지 않은 판독 액세스이고, 보안 체크 로직(1400)은 실제의 메모리 내용 대신에 모든 "F”(즉, 가짜(bogus) 판독 데이터)를 제공함으로써 비허가 판독 액세스에 응답한다. 보안 체크 로직(1400)은 또한 전술한 바와 같이 비허가 판독 액세스를 로그함으로써 비허가 판독 액세스에 응답할 수 있다.
SP=1이고 메모리 액세스 신호가 메모리 액세스 유형이 기록 액세스임을 가리키면, 메모리 액세스는 비허가 기록 액세스이다. 이 상황에서, 보안 체크 로직(1400)은 메모리 액세스 신호에 의해 운반되는 기록 데이터를 폐기함으로써 비허가 기록 액세스에 응답한다. 보안 체크 로직(1400)은 또한 전술한 바와 같이 비허가 기록 액세스를 로그함으로써 비허가 기록 액세스에 응답할 수 있다.
도 16은 다수의 메모리 페이지 내에 정렬된 데이터를 저장하는데 사용되는 메모리에 액세스 보안을 제공하기 위한 방법(1600)의 일 실시예의 순서도이다 방법(1600)은 도 4의 컴퓨터 시스템(400)이 SEM에서 동작할 때 하드웨어-개시 메모리 액세스를 위한 표 2의 예시적인 규칙을 반영한다. 방법(1600)은 호스트 브리지(404)(도 4 및 도 13-14)에 내장될 수 있다. 방법(1600)의 단계(1602) 동안, 메모리 액세스의 액세스 신호가 수신되는데, 여기서 메모리 액세스 신호는 타겟 메모리 페이지 내의 물리적 어드레스를 운반한다. 전술한 바와 같이, 메모리 액세스 신호는 장치 하드웨어 유닛에 의해 생성될 수 있다. 물리적 어드레스는 단계(1604) 동안 타겟 메모리 페이지의 보안 속성을 얻기 위해 메모리에 위치한 적어도 하나의 보안 속성 데이터 구조를 액세스하는데 사용된다. 적어도 하나의 보안 속성 데이터 구조는 예를 들어, SAT 디렉토리(예를 들어, 도 9의 SAT 디렉토리(904)) 및 적어도 하나의 SAT (예를 들어, 도 9의 SAT(906))을 포함할 수 있고, 타겟 메모리 페이지의 추가 보안 속성은 타겟 메모리 페이지가 안전한 페이지인지를 가리키는, 전술한 바와 같은 안전한 페이지(SP) 비트를 포함할 수 있다. 단계(1606) 동안, 메모리는 타겟 메모리 페이지의 보안 속성에 따라 메모리 액세스 신호를 사용하여 액세스된다. 주목되는 사항으로서, 방법 (1600)의 단계 (1600) 및 단계 (1602)는 호스트 브리지 SCU(418)(도 4 및 도 13-14)내에 내장될 수도 있다.
전술한 바와 같이, 버스 중재기(1308)(도 13) 및 호스트 브리지 SCU(418)(도 4 및 13-14)는 서로 동작하여 컴퓨터 시스템(400)내에 장치 간 액세스 보안을 제공한다. 버스 중재기(1308)는 전술한 바와 같이 장치 버스(408)의 제어를 위해 장치 버스(408)(도 4)에 결합된 장치들 사이에서 중재를 행하여, 장치 버스(408)의 하나 이상의 신호 라인하에서 허여 신호들을 구동한다. 이 허여 신호의 어떤 상태는 장치 버스(408)에 결합된 장치들 중 어느 것이 장치 버스(408)의 제어를 갖는지를 표시한다.
이제, 버스 중재기(1308) 및 호스트 브리지 SCU (418)의 예시적인 동작들을 설명하기로 하며, 여기서, 장치 버스(408)는 PCI 버스이다. 버스 중재기(1308)는 n개의 요청 신호들, REQ#1 내지 REQ#n을 수신하는데, 이는 장치 버스(408)에 결합되어 장치버스 (408)(예컨대, 도 13의 브리지 로직, 도 4의 장치 하드웨어 유닛(414A 및 414B) 및 도 4의 장치 버스 브리지(410))을 구동할 수 있는 n개의 장치들 각각으로부터 나오는 것이다. (기호 "#" 는 신호가 저전압 레벨에 있을 때 상기 신호의 액티브 상태 즉, 어서트 상태가 발생함을 의미한다) 소정 장치 m은 장치 m이 장치 버스(408)를 제어해야함을 필요로 할 때 대응하는 REQ#m을 어서트한다. 버스 중재기(1308)는 허여 신호GNT#1 내지 GNT#n을 생성하여, 허여 신호들중 하나를 상기 n개의 장치들 각각에 제공한다. GNT#m 신호가 어서트되면, 장치 m은 장치 버스(408)의 제어를 허여받는다. 다음 예에서, 신호 REQ#1 및 GNT#1은 장치 하드웨어 (414A)(도 4)와 관계하며, 신호 REQ#2 및 GNT#2는 장치 하드웨어 (414B)(도 4)와 관계한다.
도 17은 도 4의 호스트 브리지 SCU(418)의 일 실시예의 다이어그램도로서, 여기서 호스트 브리지 SCU(418)은 액세스 허가 테이블(1700)을 포함한다. 일반적으로, 액세스 허가 테이블(1700)은, 장치 버스(408)에 결합되어 구동 장치 버스(408)를 구동할 수 있는 각각의 장치 (즉, 관련 REQ# 및 GNT# 신호들을 갖는 각각의 장치)에 대한 서로 다른 세트의 엔트리들을 갖는다. 장치 하드웨어(414A)에 대응하는 제 1세트의 엔트리들 및 장치 하드웨어(414B)와 관계하는 제 2 세트의 엔트리가 도 17에 도시되어 있다.
액세스 허가 테이블(1700)의 각 엔트리는 장치 버스(408)에 결합되어 장치 버스(408)를 구동할 수 있는 장치에 대응한다. 예컨대, 도 17에서, 장치 하드웨어(414A)에 대응하는 상기 제 1 세트의 엔트리에 있는 제 1엔트리는 장치 하드웨어(414B)와 관계하게된다. 이 제 1엔트리는 "(GNT#2 어서트)"를 포함하는 "허여 신호상태" 필드를 구비하여, 이는 GNT#2 신호가 어서트될 때 상기 제 1엔트리가 적용됨을 표시한다. 제 1엔트리는 또한 장치 하드웨어(414B)에 대응하는 동시에 장치 하드웨어 (414B)가 장치 하드웨어(414A)에 액세스하는 것이 허가되는지를 표시하는 "액세스 허가"를 포함한다. 액세스 허가 테이블(1700)은 보안 커널(504)(도 5)에 의해 생성 및 유지된다.
PCI 버스 프로토콜에 따르면, "개시자" 장치는 버스 전송 즉, "트랜잭션"을 개시하기 위해 "타겟" 장치를 액세스한다. 이 타겟 장치는 STOP#신호를 어서트함으로써 트랜잭션을 종료한다. 상기 개시자 장치가 어서트된 STOP#신호를 검출하면, 이 개시자 장치는 그 트랜잭션을 중지하고 트랜잭션을 완료하기 위해 PCI 버스의 제어에 대해 다시 중재를 행한다. 만일 타겟 장치가 어떤 데이터가 전송되기에 앞서 STOP# 신호를 어서트하면, 이 종료는 "재시도"라 호칭된다.
장치 버스(408)가 PCI 버스인 경우, 장치 버스(408)는 멀티플렉스 어드레스 및 데이터(A/D)신호 라인들을 포함한다. 장치 버스(408)에 결합된 개시자 장치는 타겟 장치에 할당된 어드레스를 운반하는 어드레스 신호로 장치 버스(408)의 멀티플렉스 A/D 신호라인을 구동함으로써 장치 버스(408)에 결합된 상기 타겟 장치를 액세스한다. 예컨대, 장치 버스(408)에 결합된 장치 하드웨어(414B)에의 액세스를 제어하기위해, 호스트 브리지 SCU(418)은 먼저 PCI 버스를 통해 장치 하드웨어(414B)를 프로그램함으로써, 장치 하드웨어(414B)가 STOP# 신호 어서트에 의한 모든 액세스 시도에 응답하도록 (즉, PCI 버스 재시도를 개시함에 의한 모든 액세스 시도를 차단하도록)한다.
호스트 브리지 SCU(418)은 장치 버스 인터페이스 (1306)(도 13)을 통해 장치의 신호라인들에 결합되며, 장치 액세스 시도를 검출하기위해 장치 버스(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)는 어서트된 GNT#1 신호를 통해 장치 하드웨어(414A)를 개시자로서 식별한다.
이어서, 호스트 브리지 SCU(418)는 장치 하드웨어(414A)에 의한 후속 액세스 시도가 허용되어야만 하는지를 판단한다. 호스트 브리지 SCU(418)는 장치 하드웨어(414B)에 대응하는 액세스 허가 테이블(1700)(도 17)의 제 2세트의 엔트리들을 액세스하여, 허여 신호 상태 필드에서 "(GNT#1 어서트)"를 갖는 상기 제 2세트의 제 1엔트리를 선택한다. 상기 제 1엔트리의 액세스 허가 값은 장치 하드웨어(414A)에 의한 장치 하드웨어(414B)의 액세스가 허가됨을 표시하는 '1'이며, 장치 하드웨어(414A)에 의한 후속 액세스 시도가 허용됨을 의미한다.
액세스 허가 값이 장치 하드웨어(414A)에 의한 후속 액세스 시도가 허용되어야 함을 표시할 때, 호스트 브리지 SCU(418)는 장치 하드웨어(414A)를 식별하는 신호를 버스 중재기(1308)(도 13)에 전송한다. 장치 버스(408)에 대한 차기 제어를 장치 하드웨어 (414A)에 허여하기 바로 직전에, 버스 중재기(1308)는 장치 버스(408)의 제어를 호스트 브리지 SCU(418)에 허여한다. 호스트 브리지 SCU(418)는 장치 버스(408)의 신호 라인상에서 신호들을 구동하는바, 이 신호들은 장치 하드웨어(414B)가 장치 하드웨어(414A)에 의한 후속 액세스 시도를 허용하도록 한다.
장치 하드웨어(414A)에 의한 후속 액세스 바로 직후, 버스 중재기(1308)는 다시 장치 버스(408)의 제어를 호스트 브리지 SCU(418)에 허여한다. 호스트 브리지 SCU(418)는 PCI 버스의 신호라인들상에서 신호들을 구동하는바, 이 신호들은 장치 하드웨어(414B)가 PCI 버스 재시도를 개시함으로써 모든 액세스 시도에 응답하도록(즉, 장치 버스(408)의 A/D 신호 라인들상에서 장치 하드웨어(414B)에 할당된 어드레스를 검출한후 STOP#신호를 어서트함으로써 모든 액세스 시도를 차단하도록)한다.
액세스 허가 테이블(1700)의 선택된 엔트리에서 액세스 허가 값이, 개시자 장치가 타겟 장치를 액세스하는 것이 허가되지 않으며 개시자 장치에 의한 후속 액세스 시도는 허용되지 말아야함을 표시하는 '0' 일때, 호스트 브리지 SCU(418)는 타겟 장치가 개시자 장치에 의한 후속 액세스 시도를 허용하지 않게 하며, 타겟 장치는 계속해서 PCI 버스 재시도를 개시함으로써 개시자 장치에 의한 액세스 시도를 차단한다. 주목되는 사항으로서, 전술한 원자-구성-액세스-구성 (atomic configure-access-configure) 메커니즘은 단지 기존 PCI 장치가 보호되게 PCI 버스 재시도를 개시하도록 프로그램가능해야 함을 요구한다.
도 18은 버스에 결합된 제1 장치 및 제2 장치를 포함하는 시스템내에서 응용가능한 방법(1800)의 일 실시예를 나타내는 흐름도로서, 여기서 상기 방법(1800)은 제2 장치에 대한 액세스 보안을 제공한다. 방법(1800)은 호스트 브리지 SCU(418)(도 4, 13-14 및 17)내에 내장될 수 있다. 방법(1800)의 단계 (1802)동안 버스의 신호라인들상에서 구동되는 신호들이 모니터된다. 단계 (1804)에서 상기 신호들에 근거하여 제1 장치에 의한 제2 장치에의 액세스 시도가 검출된다. 단계(1806)동안, 상기 신호들은 상기 제1 장치의 신원을 결정하는데 이용된다. 단계(1808)동안, 상기 제1 장치의 신원에 따라 상기 제 2 장치에 대한 액세스가 제어된다. 단계(1808)동안, 상기 제2 장치에 대한 액세스의 제어는 (1) 상기 제 1 장치의 신원에 근거하여 상기 제1 장치가 상기 제2 장치에 액세스하는 것이 허가되는지를 판단하고, 그리고 (2) 상기 제 1 장치가 상기 제2 장치에 액세스하는 것이 허가되는 경우, 상기 제 2 장치가 상기 제1 장치에 의한 액세스 시도를 허용하도록 함으로써 달성된다.
비록 본 발명의 여러 가지 실시예는 버스 구성에 관하여 설명 하였지만, 이 버스 구성은 예컨대 장치들간의 직접적인 지점간 접속 및 상기 브리지 또는 다른 위치를 통해 피드(feed)되는 지점간 접속으로 대체할 수 도 있다.
개시된 바와 같이 본 발명의 일부 특징이 하드웨어 또는 소프트웨어로 구현될 수 있다. 따라서, 개시된 상세한 설명의 일부는 하드웨어 구현 프로세스로 제시되고, 상세한 설명의 몇몇 부분은 컴퓨팅 시스템 또는 컴퓨팅 장치의 메모리 내에 데이터 비트에 대한 동작의 상징적 표현을 포함하는 소프트웨어 구현 프로세스로서 제시된다. 이들 설명 및 표현은 기술 분야의 숙련자가 하드웨어 및 소프트웨어를 사용하여 그 실체를 가장 효과적으로 전송하기 위해 사용된 수단이다. 이들 모두의 프로세스 및 동작은 물리적 양의 물리적 조작을 필요로 한다. 흔히 소프트 웨어적으로, 반드시는 아니지만, 이들 양들은 저장되고, 운반되고, 결합되어, 비교되고 달리 조작될 수 있는 전기적, 자기적 또는 광학적 신호 형태를 취한다. 공통 용어 때문에 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 이들 신호를 지칭하였다.
그러나, 모든 이들 또는 유사한 용어들은 물리적 양들과 연관되어 있고 이들 양들에 적용되는 편리한 레이블이라는 것을 알아야 한다. 달리 명시되지 않는 한, 본 명세서 전체에 걸쳐 이들 설명은 기억장치 내의 물리적 양으로 유사하게 표현된 다른 데이터에 일부 전자 장치의 기억장치 내의 물리적 (전자, 자기 또는 광학) 양들로서 표현된 데이터를 조작하고 변환하는 전자 장치의 작용 및 프로세스를 가리킨다. 이와같은 설명을 지칭하는 용어들의 예는 "프로세싱", "컴퓨팅", "계산", "결정", "디스플레이" 등이다.
또한 본 발명의 소프트웨어 구현 특징은 전형적으로 몇몇 형태의 프로그램 기억매체에 인코드되거나, 일부 형태의 전송 매체를 통해 구현된다는 것을 알아야 한다. 이 프로그램 기억매체는 자기적(예를 들어, 플로피 디스크 또는 하디디스크) 또는 광학적 (예를 들어, 콤팩트 디스크 판독전용 메모리 또는 “CD ROM")일 수 있고, 판독 전용 또는 랜덤 액세스일 수 있다. 유사하게, 전송 매체는 트위스트 쌍, 동축 케이블, 광섬유, 또는 기술분야에 공지된 몇몇 다른 적합한 전송 매체일 수 있다. 본 발명은 임의의 소정 구현이 이들 면에 의해 제한되지 않는다.
상기 개시된 특정 실시예는 예시적인 것이며 본 발명은 본 가름침의 이점을 갖는 기술분야의 숙련자에 명확한 방식으로 수정되고 실시될 수 있다. 더욱이, 이 하의 청구범위에 설명된 것 이외의 도시된 구성 또는 설계의 상세한 설명에 어떠한 제한도 없다. 따라서, 개시된 특정 실시예는 수정 또는 변경될 수 있고, 이와 같은 모든 변경은 본 발명의 정신과 범위내에 포함되는 것으로 간주된다. 따라서, 본 발명이 보호하고자 하는 사항은 이하의 청구범위에 나타나 있다.

Claims (10)

  1. 전송 매체(408, 412)에 연결된 복수의 장치들(414A-D)과, 상기 복수의 장치들(414A-D) 중 임의의 장치와 상기 전송 매체(408, 412)와의 사이에 배치되지 않고 상기 전송매체(408, 412)에 연결된 보안 체크유닛(416, 418)을 포함하는 장치로서,
    상기 보안 체크 유닛(416, 418)이,
    상기 전송매체(408, 412)상의 신호들을 모니터하고;
    상기 신호들에 근거하여, 상기 전송매체(408, 412)에 연결된 상기 복수의 장치들 중 제1 장치(414A-D 중 한 장치)에 의한 상기 전송매체(408, 412)에 연결된 상기 복수의 장치들 중 제2 장치(414A-D 중 상기 제1 장치가 아닌 다른 한 장치)에의 액세스 시도를 검출하고;
    상기 신호들에 근거하여 상기 제1 장치의 신원(identity)을 결정하고; 그리고
    상기 제1 장치의 상기 신원에 근거하여, 상기 제1 장치에 의한 상기 제2 장치에의 액세스를 제어하도록 된 것을 특징으로 하는 장치.
  2. 제1 항에 있어서,
    상기 전송매체(408, 412)는 버스(408, 412)의 복수의 신호 라인들을 포함하고; 상기 전송매체(408, 412)상의 상기 신호들은 상기 버스(408, 412)의 상기 신호 라인들에서 구동되는 신호들로 구성되며; 상기 버스(408, 412)의 신호 라인들은 복수의 어드레스 라인들 및 임의의 허여 신호(grant signal)를 운반하는 적어도 하나의 신호 라인으로 구성되며; 상기 허여 신호는 상기 제1 장치가 상기 버스(408, 412)의 제어를 허여받을 때 제1 상태에 있으며; 상기 제1 장치에 의한 상기 제2 장치에의 액세스 시도 동안, 상기 허여 신호는 상기 제1 상태에 있으며 상기 제1 장치는 상기 제2 장치에 할당된 어드레스를 운반하는 상기 버스(408, 412)의 어드레스 라인들에서 어드레스 신호들을 구동하고; 그리고 상기 보안 체크 유닛(416, 418)은 상기 허여 신호 및 상기 어드레스 라인들에서 구동되는 어드레스 신호들을 모니터하도록 된 것을 특징으로하는 장치
  3. 제 2항에 있어서, 상기 보안 체크 유닛(416, 418)은, 상기 허여 신호가 상기 제 1상태에 있고 상기 어드레스 신호들이 상기 제2 장치에 할당된 어드레스를 운반할때, 상기 제1 장치에 의한 상기 제2 장치에의 액세스 시도를 검출하도록 되어 있으며; 그리고 상기 보안 체크 유닛(416, 418)은 상기 허여 신호의 상태에 근거하여 상기 제 1 장치의 신원을 결정하도록 된 것을 특징으로 하는 장치.
  4. 제 1항에 있어서, 상기 보안 체크 유닛(416, 418)은 프로세서(402) 및 브리지(404)로 구성되는 그룹중 하나 내에 구성되는 것을 특징을 하는 장치.
  5. 제 1항에 있어서, 상기 보안 체크 유닛(416, 418)은, 상기 제1 장치가 상기 제2 장치에의 액세스를 허가받은 경우, 상기 제2 장치로 하여금 상기 제1 장치에 의한 액세스 시도들을 허용하게 하는 것을 특징으로 하는 장치.
  6. 제 1항에 있어서, 상기 전송매체(408, 412)는 버스(408, 412)의 복수의 신호 라인들을 포함하고; 상기 보안 체크 유닛(416, 418)은 상기 제2 장치에 대응하는 엔트리(912)를 갖는 액세스 허가 테이블(906)을 포함하고; 상기 엔트리(912)는 허여 신호의 제 1상태 및 상기 제1 장치가 상기 제2 장치에 액세스하는 것이 허가되는지를 표시하는 대응하는 액세스 허가 값을 포함하며; 상기 보안 체크 유닛(416, 418)은, 상기 액세스 허가 값을 얻기위해 상기 허여 신호의 상기 제 1상태를 이용하여 상기 액세스 허가 테이블(906)에 액세스함으로써 상기 제1 장치가 상기 제2 장치에의 액세스를 허가받았는지를 결정하며; 상기 액세스 허가 값이 상기 제1 장치가 상기 제2 장치에의 액세스를 허가받았음을 표시하면, 상기 보안 체크 유닛(416, 418)은 상기 버스(408, 412)의 상기 신호 라인들상에서 신호들을 구동하며, 상기 신호들은 상기 제2 장치로 하여금 상기 제1 장치에 의한 액세스 시도를 허용하게 하는 것을 특징으로 하는 장치.
  7. 제 1항에 있어서, 상기 전송 매체(408, 412)에 결합된 복수의 장치들 간에서의 제어를 중재하도록 된 중재기(1308)를 더 포함하며; 상기 복수의 장치들은 적어도 제1 장치 및 제2 장치를 포함하며; 상기 중재기(1308)는 상기 복수의 장치들 중 하나의 장치가 제어를 허여받았음을 상기 하나의 장치에 신호하며; 상기 중재기(1308)는 버스 중재기(1308)로 구성되며; 상기 전송 매체(408,412)는 버스(408, 412)로 구성되며; 상기 버스(408, 412)는 복수의 어드레스 라인과 허여 신호를 운반하는 적어도 하나의 신호라인을 포함하며; 상기 버스 중재기(1308)는 상기 장치들 중 상기 하나의 장치가 상기 버스(408, 412)의 제어를 허여받았음을 표시하는 임의의 상태에 놓이도록 상기 허여 신호를 운반하는 상기 적어도 하나의 신호 라인을 구동하고; 상기 보안 체크 유닛(416, 418)은 상기 어드레스 라인과 그리고 상기 허여 신호를 운반하는 상기 적어도 하나의 신호 라인에 결합되며;
    상기 보안 체크 유닛(416, 418)은,
    상기 허여 신호 및 상기 버스(408, 412)의 어드레스 라인들에서 구동되는 어드레스 신호들을 모니터하고;
    상기 어드레스 신호들에 근거하여 상기 제1 장치에 의한 상기 제2 장치에의 엑세스 시도를 검출하고;
    상기 허여 신호에 근거하여 상기 제1 장치의 신원을 결정하고;
    상기 제1 장치의 상기 신원에 근거하여 상기 제1 장치가 상기 제2 장치에 액세스하는 것이 허가되는지를 결정하고; 그리고
    상기 제1 장치가 상기 제2 장치에 액세스 하는것이 허가된 경우 상기 제2 장치로 하여금 상기 제1 장치에 의한 액세스 시도들을 허용하게 하는 것을 특징으로 하는 장치.
  8. 복수의 장치들(414A-D) 중의 한 장치인 목적 장치(414A-D 중 한 장치)에 대한 액세스 보안을 제공하는 방법으로서,
    상기 복수의 장치들 중 임의의 장치와 전송 매체(408, 412)와의 사이에 배치되지 않고 상기 전송 매체(408, 412)에 연결된 보안 체크 유닛을 사용하여, 상기 전송 매체(408, 412) 상의 신호들을 모니터하는 단계와,
    상기 신호들에 근거하여 상기 복수의 장치들 중의 한 장치인 추가의 장치(414A-D 중 상기 목적 장치가 아닌 다른 한 장치)가 상기 목적 장치에 액세스 하려는 시도를 검출하는 단계와;
    상기 추가의 장치의 신원을 결정하기 위해 상기 신호들을 이용하는 단계와; 그리고
    상기 추가의 장치의 상기 신원에 근거하여 상기 목적 장치에 대한 액세스를 제어하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 제 8항에 있어서, 상기 추가의 장치의 상기 신원에 근거하여 상기 목적 장치에 대한 엑세스를 제어하는 단계는, 상기 추가의 장치의 상기 신원에 근거하여 상기 추가의 장치에 의한 상기 목적 장치에의 액세스를 제어하는 단계를 포함하는 것을 특징으로하는 방법.
  10. 제 9항에 있어서, 상기 추가의 장치의 상기 신원에 근거하여 상기 추가의 장치에 의한 상기 목적 장치에의 액세스를 제어하는 단계는,
    상기 추가의 장치의 상기 신원에 근거하여 상기 추가의 장치가 상기 목적 장치에 액세스하는 것이 허가되는지를 결정하는 단계와; 그리고
    상기 추가의 장치가 상기 목적 장치에 액세스하는 것이 허가된 경우, 상기 목적 장치로 하여금 상기 추가의 장치에 의한 액세스 시도들을 허용하게 하는 단계를 더 포함하는 것을 특징으로하는 방법.
KR1020047015524A 2002-03-27 2002-12-18 컴퓨터 시스템내에서의 장치간 액세스를 제어하는 시스템및 방법 KR100972635B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/107,776 2002-03-27
US10/107,776 US7383584B2 (en) 2002-03-27 2002-03-27 System and method for controlling device-to-device accesses within a computer system
PCT/US2002/040742 WO2003083628A2 (en) 2002-03-27 2002-12-18 System and method for controlling device-to-device accesses within a computer system

Publications (2)

Publication Number Publication Date
KR20040102363A KR20040102363A (ko) 2004-12-04
KR100972635B1 true KR100972635B1 (ko) 2010-07-28

Family

ID=28452711

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047015524A KR100972635B1 (ko) 2002-03-27 2002-12-18 컴퓨터 시스템내에서의 장치간 액세스를 제어하는 시스템및 방법

Country Status (7)

Country Link
US (1) US7383584B2 (ko)
JP (1) JP4799822B2 (ko)
KR (1) KR100972635B1 (ko)
AU (1) AU2002357923A1 (ko)
DE (1) DE10297686B4 (ko)
GB (1) GB2402783B (ko)
WO (1) WO2003083628A2 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7617534B1 (en) 2005-08-26 2009-11-10 Symantec Corporation Detection of SYSENTER/SYSCALL hijacking
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
US8276201B2 (en) * 2007-03-22 2012-09-25 International Business Machines Corporation Integrity protection in data processing systems
US20080235422A1 (en) * 2007-03-23 2008-09-25 Dhinesh Sasidaran Downstream cycle-aware dynamic interconnect isolation
US8935775B2 (en) * 2012-06-28 2015-01-13 Intel Corporation Method and apparatus for dishonest hardware policies
CN102915417A (zh) * 2012-09-18 2013-02-06 鸿富锦精密工业(深圳)有限公司 应用程序监控系统及应用程序监控方法
US20140297910A1 (en) * 2013-03-29 2014-10-02 Hewlett-Packard Development Company, L.P. Sas expander
CN107209715B (zh) 2015-08-20 2019-09-27 华为技术有限公司 文件数据访问方法和计算机系统
CN108062486B (zh) 2017-12-15 2020-09-15 杭州中天微系统有限公司 一种针对间接访问存储控制器的存储保护装置
US10831679B2 (en) * 2018-03-23 2020-11-10 Intel Corporation Systems, methods, and apparatuses for defending against cross-privilege linear probes

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11282768A (ja) 1998-01-27 1999-10-15 Data General Corp バスを通じたターゲット・デバイスに対するアクセスを制御する装置、方法およびコンピュータ・プログラム生産物

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4882659A (en) * 1988-12-21 1989-11-21 Delco Electronics Corporation Vacuum fluorescent display having integral backlit graphic patterns
US4970441A (en) * 1989-08-04 1990-11-13 Delco Electronics Corporation Brightness stabilizing control of a VF display
US5652837A (en) 1993-03-22 1997-07-29 Digital Equipment Corporation Mechanism for screening commands issued over a communications bus for selective execution by a processor
US5469026A (en) * 1993-11-09 1995-11-21 Delco Electronics Corporation Method and apparatus for VF tube power supply
ATE278218T1 (de) * 1994-05-26 2004-10-15 Commw Of Australia Gesicherte rechnerarchitektur
US5459374A (en) * 1994-07-05 1995-10-17 Delco Electronics Corporation Combination fixed segment and active matrix vacuum fluorescent display
US5473222A (en) * 1994-07-05 1995-12-05 Delco Electronics Corporation Active matrix vacuum fluorescent display with microprocessor integration
US5613750A (en) * 1994-11-07 1997-03-25 Delco Electronics Corporation Fluorescent backlighting device for an instrument panel
US5477430A (en) * 1995-03-14 1995-12-19 Delco Electronics Corporation Fluorescing keypad
US5521449A (en) * 1995-08-28 1996-05-28 Delco Electronics Corporation Method and circuitry for reducing radiated noise in a strobed load driver circuit for a vacuum fluorescent display
US5856811A (en) * 1996-01-31 1999-01-05 Delco Electronics Corp. Visual display and helmet assembly
US6098133A (en) 1997-11-28 2000-08-01 Motorola, Inc. Secure bus arbiter interconnect arrangement
US6428174B1 (en) * 2001-04-27 2002-08-06 Delphi Technologies, Inc. Vacuum fluorescent display panel with integral illumination of panel indicia
US6996750B2 (en) * 2001-05-31 2006-02-07 Stratus Technologies Bermuda Ltd. Methods and apparatus for computer bus error termination
US7277972B2 (en) * 2002-03-08 2007-10-02 Freescale Semiconductor, Inc. Data processing system with peripheral access protection and method therefor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11282768A (ja) 1998-01-27 1999-10-15 Data General Corp バスを通じたターゲット・デバイスに対するアクセスを制御する装置、方法およびコンピュータ・プログラム生産物

Also Published As

Publication number Publication date
DE10297686B4 (de) 2017-09-28
US20030188169A1 (en) 2003-10-02
DE10297686T5 (de) 2005-05-12
KR20040102363A (ko) 2004-12-04
GB2402783A (en) 2004-12-15
WO2003083628A2 (en) 2003-10-09
JP2005521935A (ja) 2005-07-21
AU2002357923A8 (en) 2003-10-13
GB2402783B (en) 2005-12-14
AU2002357923A1 (en) 2003-10-13
GB0420728D0 (en) 2004-10-20
WO2003083628A3 (en) 2004-07-08
US7383584B2 (en) 2008-06-03
JP4799822B2 (ja) 2011-10-26

Similar Documents

Publication Publication Date Title
JP4688490B2 (ja) 高セキュリティ実行モードにおいて高セキュリティカーネルを使用するトラステッド・クライアント
US6854039B1 (en) Memory management system and method providing increased memory access security
US8135962B2 (en) System and method providing region-granular, hardware-controlled memory encryption
US6823433B1 (en) Memory management system and method for providing physical address based memory access security
US4858117A (en) Apparatus and method for preventing computer access by unauthorized personnel
JP4295111B2 (ja) メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法
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
US5469556A (en) Resource access security system for controlling access to resources of a data processing system
US7130977B1 (en) Controlling access to a control register of a microprocessor
KR20000022083A (ko) 컴퓨터 시스템의 i/o 어드레스 공간으로 매핑된 레지스터에대한 액세스 제어시스템
KR101001344B1 (ko) 구획된 보안을 위한 입/출력 허가 비트맵
US7082507B1 (en) Method of controlling access to an address translation data structure of a computer system
KR100995146B1 (ko) 개선된 메모리 엑세스 보안을 제공하는 메모리에 디바이스엑세스를 제어하기 위한 시스템 및 방법
JPS6248258B2 (ko)
KR100972635B1 (ko) 컴퓨터 시스템내에서의 장치간 액세스를 제어하는 시스템및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130531

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140716

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150618

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160616

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170616

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190617

Year of fee payment: 10