KR20040093472A - 영역-입도 하드웨어-제어 메모리 암호화를 제공하기 위한시스템 및 방법 - Google Patents

영역-입도 하드웨어-제어 메모리 암호화를 제공하기 위한시스템 및 방법 Download PDF

Info

Publication number
KR20040093472A
KR20040093472A KR10-2004-7015187A KR20047015187A KR20040093472A KR 20040093472 A KR20040093472 A KR 20040093472A KR 20047015187 A KR20047015187 A KR 20047015187A KR 20040093472 A KR20040093472 A KR 20040093472A
Authority
KR
South Korea
Prior art keywords
memory
data
page
cache
block
Prior art date
Application number
KR10-2004-7015187A
Other languages
English (en)
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 KR20040093472A publication Critical patent/KR20040093472A/ko

Links

Classifications

    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

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)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 메모리(406), 및 메모리(406)에 저장되고 복수의 메모리 영역 내에 정렬된 데이터용 보안을 제공하기 위한 방법을 제공한다. 이 방법은 선정된 메모리 영역 내의 어드레스를 수신하고 이 어드레스를 사용하여 암호화 표시기를 액세스하는 것을 포함한다. 이 암호화 표시기는 상기 선택된 메모리 페이지에 저장된 데이터가 암호화되어 있는 지를 가리킨다. 이 메모리는 또한 상기 선택된 메모리 영역 및 상기 암호화 표시기로부터 데이터의 블록을 수신하고 암호화 표시기에 따른 데이터의 블록을 암호 해독하는 것을 포함한다.

Description

영역-입도 하드웨어-제어 메모리 암호화를 제공하기 위한 시스템 및 방법{SYSTEM AND METHOD PROVIDING REGION-GRANULAR, HARDWARE-CONTROLLED MEMORY ENCRYPTION}
전형적으로 컴퓨터 시스템은 비교적 저가로 비교적 높은 수준의 성능을 얻기 위해 메모리 계층을 포함한다. 서로 다른 몇몇 소프트웨어 프로그램의 명령은 전형적으로 비교적 크지만 느린 비휘발성 저장유닛 (예를 들면, 디스크 드라이브 유닛)에 저장된다. 사용자가 실행을 위해 프로그램 중의 하나를 선택하면, 선택된 프로그램의 명령이 주 메모리 유닛내로 복사되고, 중앙 처리 장치(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)의 페이지 테이블 기본 어드레스는 대응하는 페이지 테이블(116)을 선택하는데 사용된다.
다시 도 1을 참조하면, 페이지 테이블(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 성능을 갖는 하드웨어 장치를, 이 하드웨어 장치에 의해 액세스가능한 메모리의 임의의 부분내로 이 하드웨어 장치로부터의 데이터를 전송하도록 프로그램할 수 있다. 예를 들어, 플로피 디스크로부터의 데이터를, 운영체제를 저장하는데 사용되는 메모리의 일부에 직접 전송하도록 플로피 디스크 제어기를 프로그램하는 것은 비교적 쉽다.
더욱이, CPU는 신호 라인을 통해 운반되는 신호들를 통해 다른 컴퓨터 시스템 구성요소(즉, 메모리)와 통신한다. 이와 같은 신호들은 (예컨대, 외부 장비에 의해)모니터링된다. 이와 같은 신호 분석을 통해, 전송되는 기밀 데이터 뿐만 아니라, 이러한 기밀 데이터를 처리하는데 사용되는 컴퓨터 시스템내에서 구현된 방법들(예컨대, 소프트웨어 프로그램들)을 알 수 있다.
따라서, 메모리에 대한 액세스 보안을 강화하기 위한 시스템 및 방법을 갖는 것이 유익하다. 바람직한 시스템 및 방법은 또한 기밀 데이터 및 기밀 데이터를 처리하는데 사용되는 방법 모두를 마스크(mask)하기 위해 CPU의 내로 그리고 CPU로부터 다른 곳으로 전송되는 (명령)을 포함하는 모든 데이터를 암호화하는 능력을 보유하는 것이다.
본 발명은 총체적으로 컴퓨터 시스템에 관한 것으로, 더 상세하게는 컴퓨터 시스템 내에서 기밀 데이터(confidential data)를 전송하는 동안 신호들에 대한 외부 모니터링으로부터 이 기밀 데이터가 노출되는 것을 방지하는 시스템 및 방법에 관한 것이다.
본 발명은 첨부 도면과 결합한 다음의 설명을 참조하여 이해할 수 있을 것이며, 도면에서 유사한 도면부호는 유사한 요소를 가리킨다.
도 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은 도 6의 MMU에 의해 생성되고 도 6의 캐쉬 유닛에 의해 제공되는 예시적인 물리적 어드레스의 다이어그램도.
도 18은 도 6의 캐쉬 유닛의 캐쉬 메모리 엔트리의 일 실시예의 다이어그램도.
도 19는 도 6의 캐쉬 유닛의 캐쉬 디렉토리 엔트리의 일 실시예의 다이어그램도.
도 20은 도 4의 메모리 내에 저장되고 도 4의 CPU와 메모리 간에 전송되는 데이터에 보안을 제공하기 위한 방법의 일 실시예의 순서도.
비록 본 발명은 다양하게 수정가능하지만, 그 특정 실시예를 예로서 도면에 도시하고 이하 상세히 설명한다. 그러나, 특정 실시예의 설명은 본 발명을 개시된 특정 형태로만 한정하려 의도한 것이 아니고, 첨부하는 청구범위에 한정된 바와 같이 본 발명의 정신과 범위 내에서의 모든 수정, 등가 및 대체를 포괄하도록 의도된 것임을 알아야만 한다.
본 발명의 한 양상에 따르면, 메모리가 제공된다. 이 메모리는 적어도 하나의 기억장소 및 데이터를 암호화 및 암호해독하기 위한 암호화/암호해독 유닛을 포함한다. 이 기억장소는 데이터의 블록 및 상기 데이터의 블록을 위한 대응하는 암호화 표시기를 수신하도록 결합된다. 상기 데이터의 블록은 선택된 메모리 영역에 대응한다. 상기 암호화 표시기는 상기 선택된 메모리 영역에 대응하는 상기 데이터가 암호화되는지를 가리킨다. 상기 암호화/암호해독 유닛은 데이터의 블록이 상기 기억장소에 저장되기 전에 상기 암호화 표시기에 따라 데이터의 블록을 암호해독하도록 구성된다.
본 발명의 다른 양상에 따르면, 시스템이 제공된다. 이 시스템은 메모리에 동작가능하게 결합되고 메모리를 관리하도록 구성된 메모리 관리 유닛(MMU)과, 선택된 메모리 영역 내의 물리적 어드레스를 수신하도록 결합된 보안 체크 유닛과, 그리고 선택된 메모리 영역으로부터 얻어지는 데이터의 블럭을 수신하고, 암호화 표시기를 수신하도록 결합된 캐쉬 유닛을 포함한다. MMU는 이 메모리를 관리하도록 구성함으로써, 메모리가 복수의 메모리 영역 내에 정렬된 데이터를 저장할 수 있게 한다. 보안 체크 유닛은 물리적 어드레스를 사용하여 암호화 표시기를 얻기 위해 메모리에 위치된 적어도 하나의 보안 속성 데이터 구조를 액세스하도록 구성된다. 암호화 표시기는 선택된 메모리 영역에 저장된 데이터가 암호화되는지를 가리킨다. 보안 체크 유닛은 암호화 표시기를 암호화/암호해독 유닛에 제공하도록 구성된다. 캐쉬 유닛은 암호화/암호해독 유닛을 포함한다. 암호화/암호해독 유닛은 데이터의 블럭을 저장하기 전에 암호화 표시기에 따라 데이터의 블록을 암호해독하도록 구성된다.
본 발명의 또 다른 양상에 따르면, 메모리에 저장되고 복수의 메모리 영역 내에 정렬된 데이터에 대한 보안을 제공하기 위한 방법이 제공된다. 이 방법은 선택된 메모리 영역 내의 어드레스를 수신하고, 상기 어드레스를 사용하여 암호화 표시기를 액세스하는 것을 포함한다. 상기 암호화 표시기는 상기 선택된 메모리 페이지에 저장된 데이터가 암화화되는지를 가리킨다. 이 방법은 또한 상기 선택된 메모리 영역으로부터의 데이터의 블록 및 상기 암호화 표시기를 수신하고, 상기 암호화 표시기에 따라 상기 데이터의 블록을 암호해독하는 것을 포함한다.
발명의 예시적인 실시예가 이하 설명된다. 명료성을 위해, 실제 구현의 모든 특징을 본 명세서에서 설명하지는 않았. 물론, 이와 같은 임의의 실제 실시예에서, 실시예에 따라 변할 수 있는 시스템 관련 및 사업 관련 제약에의 준수와 같이 개발자의 특정 목표들을 달성하기 위해 무수히 많은 구현 상의 변경이 있을 수 있다는 것을 알아야 한다. 더우기, 이와 같은 개발 노력은 복잡하고 시간 소모적이지만, 그럼에도 불구하고 본 개시의 이익을 갖는 당업자에게는 일상적인 일이 될 것이다.
도 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)에 동작가능하게 결합한다. 장치 버스 브리지(401)는 장치 버스(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)는 메모리(418)를 CPU(402)(즉, "소프트웨어-개시 액세스")에 의해 발생된 비허가 액세스로부터 보호하고, 호스트 브리지 SCU(418)는 메모리(406)를 장치 하드웨어 유닛(414A-414D)(즉, "하드웨어-개시 액세스")에 의해 개시된 비허가 액세스로부터 보호한다. 다른 실시예에서, 호스트 브리지(4040는 도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)가 페이징이 인에이블된 보호 모드로 동작할 때, CPU(402)의 어드레스 공간은 페이지 프레임 또는 "페이지"라고 하는 다수의 블록으로 분할된다. 전술한 바와같이, 페이지들의 일부에 대응하는 데이터만이 임의의 소정 시간에 메모리(406)에 저장된다. 도 6의 실시예에서, 명령 실행 동안 실행 유닛(600)에 의해 발생된 어드레스 신호들은 세그먼트 (즉, "논리적") 어드레스를 표현한다. 이하에 설명하는 바와 같이, MMU(602)는 실행 유닛(600)에 의해 발생된 세그먼트된 어드레스는 메모리(406)의 대응하는 물리적 어드레스로 변환한다. MMU(602)는 캐쉬 유닛(604)에 물리적 어드레스를 제공한다. 캐쉬 유닛(604)은 실행 유닛(600)에 의해 최근에 페치된 명령과 데이터를 저장하는데 사용되는 비교적 작은 저장 유닛이다. BIU(606)는 캐쉬 유닛(604)과 호스트 브리지(404)간에 결합되어, 호스트 브리지(404)를 거쳐 메모리(406)로부터 캐쉬 유닛(604)에 존재하지 않는 명령과 데이터를 페치하는데 사용된다.
도 6에 도시된 바와 같이, 캐쉬 유닛(604)은 데이터 암호화 기능과 데이터 암호해독 기능 모두를 수행하는 암호화/암호해독 유닛(612)을 포함한다. CPU(402)가 페이징이 인에이블된 채 보호 모드로 동작하면, 메모리(406)는 다수의 페이지(즉 메모리 페이지)내에 정렬된 데이터를 저장한다. 이하에 설명되는 바와 같이,선택된 메모리 페이지의 (명령을 포함하는) 데이터는 보안을 위해 암호화될 수 있다. 암호화/암호해독 유닛(612)의 데이터 암호화 기능은 BIU(606)을 거쳐 메모리(406)로부터 캐쉬 유닛(604)에 의해 수신된 암호화된 데이터(명령만을 포함)를 암호해독하는데 사용된다. 암호화/암호해독 유닛(612)의 데이터 암호화 기능은 데이터가 캐쉬 유닛(604)으로부터 퇴거 (즉 보다 최근에 참조되는 명령어 및/또는 데이터를 위한 자리를 만들기 위해)되기 전에, 캐쉬 유닛(604)에 저장되고 실행 유닛(600)에 이용가능한 암호화되지 않은 (즉 "플레인텍스트(plaintext)") (명령들을 포함하는) 데이터를 암호화하는데 사용된다. 암호화/암호해독 유닛(612)에 의해 수행되는 데이터 암호화 및 암호해독 기능은 실행 유닛(600)의 동작에 영향을 미치지 않는다는 것을 알아야 한다. (즉, 실행 유닛(600)에 투명함) 또한 다른 실시예에서, 암호화/암호해독 유닛(612)은 BIU(606) 내에 위치될 수 있다는 것을 알아야 한다.
도 7은 도 6의 MMU(602)의 일 실시예의 다이어그램도이다. 도 7의 실시예에서, MMU(602)는 세그멘테이션 유닛(700), 페이징 유닛(702), 및 물리적 어드레스를 만들기 위해 세그먼트 유닛(700) 및 페이징 유닛(702)의 출력 사이를 선택하기 위한 선택 로직(704)을 포함한다. 도 7에 도시된 바와 같이, 세그멘테이션 유닛(700)은 실행 유닛(600)으로부터 세그먼트된 어드레스를 수신하고, x86 프로세서 아키텍춰의 공지된 세그먼트-대-선형 어드레스 변환 (세그먼트 어드레스를 선형 어드레스로 변환) 메커니즘을 사용하여 출력에서 대응하는 선형 어드레스를 만든다. 도 7에 도시된 바와 같이, "PAGING" 신호에 의해 인에이블되면, 페이징 유닛(702)은 세그멘테이션 유닛(700)에 의해 만들어진 선형 어드레스를 수신하고, 출력에서 대응하는 물리적 어드레스를 만든다. PAGING 신호는 x86 프로세서 아키텍춰 및 일단의 제어 레지스터(608) (도 6)의 제어 레지스터 0 (CT0)에 있는 페이징 플래그(PG)를 미러(mirror)할 수 있다. PAGING 신호가 디어서트되면(deasserted), 메모리 페이징은 인에이블되지 않고, 선택 로직(704)은 세그멘테이션 유닛(700)으로부터 수신된 선형 어드레스를 물리적 어드레스로서 발생한다.
PAGING 신호가 어서트되면(asserted), 메모리 페이징이 인에이블되고, 페이징 유닛(702)은 x86 프로세서 아키텍춰(도 1)의 전술한 선형-대-물리적 어드레스 변환 메커니즘(100)을 사용하여, 세그먼테이션 유닛(700)으로부터 수신된 선형 어드레스를 대응 물리적 어드레스로 변환한다. 전술한 바와 같이, 선형-대-물리적 어드레스 변환 동작 동안, 선택된 페이지 디렉토리 엔트리 및 선택된 페이지 테이블 엔트리의 U/S 비트의 내용이 논리적으로 AND되어 페이지 프레임에의 액세스가 허가되는지를 판단한다. 마찬가지로, 선택된 페이지 디렉토리 엔트리 및 선택된 페이지 테이블 엔트리의 R/W 비트의 내용이 논리적으로 AND되어 페이지 프레임에의 액세스가 허가되는지를 판단한다. 만일 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의 어드레스 변환 메커니즘을 사용하여 선택된 메모리 페이지의 추가적인 보안 정보가 도 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 디렉토리(904) 및 SAT(906)을 포함하는 다수의 SAT는 보안 커널(504)(도 5)에 의해 생성 및 유지되는 SEM 데이터 구조이다. 이하에 설명되는 바와 같이, SAT 디렉토리(104)(존재할 때) 및 임의의 필요한 SAT는 액세스되기 전에 메모리(406)내로 복사된다.
SAT 기본 어드레스 레지스터(908)은 SAT 기본 어드레스 레지스터(908) 내의 유효 SAT 디렉토리 기본 어드레스의 존재를 가리키는 존재 (P) 비트를 포함한다. SAT 기본 어드레스 레지스터(908)의 최고 차수 (즉, 최상위) 비트는 SAT 디렉토리 기본 어드레스를 위한 것이다. 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)에 대응하는 물리적 어드레스의 ‘탭’ 부분과 함께 소정의 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의 규칙을 구현한다.
표 1 : 도 4의 컴퓨터 시스템(400)이 SEM에서 동작할 때 소프트웨어-개시 메모리 액세스를 위한 예시적인 규칙
현재 선택됨
실행 메모리
명령 페이지
SP CP SP U/S R/W 액세스 허용 주목
1 0 X X X 1(R/W) R/W 완전한 액세스 허용된. (전형적인 액세스 페이지 내용: 보안 커널 및 SEM 데이터 구조)
1 0 X X X 0(R) Read Only 기록 시도는 GPF 유발; 만일 선태된 메모리 페이지가 안전한 페이지(SP=1)이면, GPF 대신에 SEM 보안 예외가 시그날된다.
1 3 1 1 1(U) 1 R/W 표준 보호 메커니즘 적용. (전형적인 액세스 페이지 내용: 높은 보안 애플릿)
1 3 1 1 0(S)X None 액세스는 GPF 유발. (전형적인 액세스 페이지 내용: 보안 커널 및 SEM 데이터 구조)
1 3 0 0 0 1 None 액세스는 GPF 유발. (전형적인 액세스 페이지 내용: OS 커널 및 링 0 장치 드라이버)
0 0 1 1 X X None 액세스는 SEM 보안 예외를 유발.
0 0 0 0 1 1 R/W 표준 보호 메커니즘 적용. (전형적인 액세스 페이지 내용: 높은 보안 애플릿)
0 3 X X 0 X None 액세스는 GPF 유발. 만일 선택된 메모리 페이지가 안전한 페이지(SP=1)이면, GPF 대신에 SEM 보안 예외다 제기됨.
0 3 0 0 1 1 R/W 표준 보호 메커니즘 적용.(전형적인 액세스 페이지 내용: 어플리케이션)
표 1에서, 현재 실행중인 명령의 SP 비트는 현재 실행 중인 명령을 포함하는 메모리 페이지에 대응하는 SAT 엔트리의 SP 비트이다. 선택된 메모리 페이지의 U/S 비트는 PDE U/S 비트 및 선택된 메모리 페이지의 PTE U/S 비트의 논리적 AND이다. 선택된 메모리 페이지의 R/W 비트는 선택된 메모리 페이지의 PDE R/W 비트 및 PTE R/W 비트의 논리적 AND이다. 기호 "X"는 "무관계"를 가리키고 논리적 값은 "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 SECURITY EXCEPTION 신호를 어서트하면, MMU(602)는 SEM SECURITY EXCEPTION 신호를 실행 유닛(600)에 전송한다. x86 프로세서 아키텍춰의 IDT 벡터링 메커니즘을 사용하는 통상적인 프로세서 예외와는 달리, SEM 보안 예외를 처리하기 위해 다른 벡터링 방법을 사용할 수 있다. SEM 보안 예외는 x86 "SYSTENTER" 및 "SYSEXIT" 명령이 동작하는 방법과 유사하게 한쌍의 레지스터(예를 들어, 모델 특정 레지스터 또는 MSR)를 통해 디스패치될 수 있다. 한쌍의 레지스터는 ”보안 예외 엔트리 점“ 레지스터일 수 있고, 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)를 포함한다. 호스트 인터페이스(1300)는 CPU(402)에 결합되고, 장치 버스 인터페이스(1304)는 장치 버스(408)에 결합된다. 브리지 로직(1302)은 호스트 인터페이스(1300)와 장치 버스 인터페이스(1306)간에 결합된다. 메모리 콘트롤러(1304)는 메모리(406)에 결합되어, 메모리(406)에의 모든 액세스를 수행한다. 호스트 브리지 SCU(418)는 브리지 로직(406)과 메모리 콘트롤러(1304) 간에 결합된다. 전술한 바와 같이, 호스트 브리지 SCU(418)는 장치 버스 인터페이스(1306)를 거쳐 메모리(406)에의 액세스를 제어한다. 호스트 브리지 SCU(418)는 장치 버스 인터페이스(1306)을 거쳐 메모리(406)에의 모든 액세스를 모니터링하고, 메모리(406)에 허가된 액세스만을 허용한다.
도 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에서, “타겟” 메모리 페이지는 메모리 액세스의 메모리 액세스 신호에 의해 운반되는 물리적 어드레스가 상주하는 메모리 페이지이다.
표 2 : 도 4의 컴퓨터 시스템(400)이 SEM에서 동작할 때 하드웨어-개시 메모리 액세스를 위한 예시적인 규칙
특수
메모리
페이지
액세스
SP 유형 동작
0 R/W 액세스는 정상적으로 완료한다.
1 읽기 실제의 메모리 내용 대신에 모든 "F"를 반환하고 액세스가 완료된다.
1 쓰기 액세스는 완료하지만 기록 데이터는 폐기된다. 메모리 내용은 변치 않는다. 비허가 액세스가 로그될 수 있다.
상기 표 2에서, 타겟 메모리 페이지의 SP 비트는, 메모리 액세스의 물리적 어드레스를 사용하여 호스트 브리지 SCU(418) 및 대응하는 메모리 페이지의 SAT 엔트리를 얻기 위한 도 9에 설명한 메커니즘(900)에 의해 얻어진다.
도 2에 도시된 바와 같이, 타겟 메모리 페이지가 안전한 페이지임을 가리키는 SP=1일 때, 메모리 액세스는 허가되지 않는다. 이와 같은 상황에서, 보안 체크 로직(1400)(도 14)은 메모리 콘트롤러에 메모리 액세스 신호를 제공하지 않는다. 메모리 액세스 신호(예를 들어, 제어 신호)의 일부는 메모리 액세스 유형을 가리키고, 이 메모리 액세스 유형은 판독 액세스 또는 기록 액세스이다. SP=1이고 메모리 액세스 신호가 메모리 액세스 유형이 판독 액세스임을 가리키면, 메모리 액세스는 허가되지 않은 판독 액세스이고, 보안 체크 로직(1400)은 실제의 메모리 내용 대신에 모든 "F”(즉, 가짜(vogus) 판독 데이터)를 제공함으로써 비허가 판독 액세스에 응답한다. 보안 체크 로직(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) 동안, 메모리는 타겟 메모리 페이지의 보안 속성에 따라 메모리 액세스 신호를 사용하여 액세스된다.
CPU(402)(도 4 및 6)는 신호 라인을 통해 운반된 신호를 거쳐 컴퓨터 시스템(400)(도 4)의 다른 구성요소와 통신한다. 전술한 바와 같이, 이와 같은 신호들은 모니터링(예를 들어, 외부 장비에 의해)된다. 이들 신호를 분석함으로써, 운반되고 있는 기밀 데이터를 알 수 있을 뿐 아니라, 기밀 데이터를 처리하는데 사용되는 컴퓨터 시스템에 내장된 방법(예를 들어, 소프트웨어 프로그램)을 알 수 있다. 컴퓨터 시스템(400)은 기밀 데이터와 기밀 데이터를 처리하는데 사용되는 방법들 모두를 마스크하기 위해 CPU(402)내/외로 전송되는 모든 데이터(명령을 포함)를 암호화하는 능력을 갖고 있다.
전술한 바와 같이, 캐쉬 유닛(604)(도 6)은 데이터 암호화 기능과 데이터 암호해독 기능 모두를 수행하는데 사용되는 암호화/암호해독 유닛(612)을 포함한다. CPU(402)가 페이징이 인에이블되는 보호 모드에서 동작하면, 메모리(406)는 전술한 바와 같이 다수의 페이지(즉, 메모리 페이지)내에 정렬된 데이터를 저장한다. 선택된 메모리 페이지의 데이터(명령을 포함)는 암호 목적으로 암호화될 수 있다. 암호화/암호해독 유닛(612)의 데이터 암호해독 기능은 BIU(06)을 거쳐 메모리(406)로부터 캐쉬 유닛(604)에 의해 수신된 암호화 데이터(명령을 포함)을 암호해독하는데 사용된다. 암호화/암호해독 유닛(612)의 데이터 암호화 기능은, 데이터가 캐쉬 유닛(604)으로부터 추출되기 전에 (즉, 가장 최근에 참조된 명령 및/또는 데이터를 위한 공간을 마련하기 위해), 캐쉬 유닛(604)에 저장되어 있으며 실행 유닛(600)에 이용가능한 (명령을 포함한) 암호해독된 (즉, “플레인텍스트”) 데이터를 암호화하는데 사용된다. 암호화/암호해독 유닛(612)은 데이터를 암호화 및 암호해독 하기 위해 다양한 암호화 및 암호해독 알고리즘 중의 하나를 이용할 수 있다.
도 12를 다시 참조하면, SAT 엔트리 포맷(1200) 엔트리는 전술한 SP 비트외에 추가로 암호화 메모리(E)를 포함한다. E 비트는 대응하는 메모리 페이지의 메모리 위치에 저장된 데이터가 암호화되는지를 가리킨다. 예를 들어, 만일 E=0이면, 대응하는 메모리 페이지 내의 데이터는 암호화될 수 없고, 만일 E=1이면, 대응하는 메모리 페이지 내의 데이터는 암호화될 수 있다.
도 17 내지 19를 사용하여 도 6의 캐쉬 유닛(604) - 여기서 캐쉬 유닛(604)은 다수의 세트를 갖는 세트 연관 캐쉬 유닛(set associative cache unit)임 - 의 일 실시예의 동작을 설명한다. 세트 연관 캐쉬 유닛으로서, 캐쉬 유닛(604)은 행과 열을 갖는 2차원 어레이로서 정렬된 것으로 간주될 수 있다. 각각의 행은 캐쉬 유닛(604)의 다수의 "세트”중의 하나를 나타내고, 각각의 열은 캐쉬 유닛(604)의 다수의 "웨이(ways)”중의 하나를 나타낸다. 캐쉬 유닛(604)의 특정 행(즉, 세트)에 맵핑된 데이터는 세트의 다수의 열(즉, 웨이) 중 어느 것에 저장될 수 있다.
도 17은 도 6의 MMU(602)에 의해 발생되고 도 6의 캐쉬 유닛(604)에 제공되는 예시적인 물리적 어드레스(1700)의 다이어그램이다. 캐쉬 유닛(604)은 물리적 어드레스(1700)를 세가지 부분: 물리적 어드레스(1700)의 최고 차수 (즉, 최상위)비트를 포함하는 상부 "어드레스 태그” 부(1702), 중간 "세트 어드레스” 부분(1704), 및 물리적 어드레스(1700)의 최하 차수 (즉, 최하위) 비트를 포함하는 하부 "바이트 어드레스” 부분(1706)으로 분할한다. 세트 어드레스 부분(1704)의 비트들은 캐쉬 유닛(604)의 다수의 세트중 하나를 선택하는데 사용되고, 바이트 어드레스 부분(1706)의 비트들은 캐쉬 유닛(604) 내에 존재하는 대응하는 캐쉬 메모리 내의 특정 바이트를 선택하는데 사용된다.
도 18은 도 6의 캐쉬 유닛(604)의 캐쉬 메모리 엔트리(1800)의 일 실시예의 다이어그램도이다. 각각의 캐쉬 메모리 엔트리는 데이터(즉, 명령)의 다수의 바이트를 저장하는데 사용된다. 도 19는 도 6의 캐쉬 유닛(604)의 캐쉬 디렉토리 엔트리(1900)의 일 실시예의 다이어그램도이다. 각각의 캐쉬 디렉토리 엔트리는 서로 다른 캐쉬 메모리 엔트리에 대응하고, 대응하는 캐쉬 메모리 엔트리와 연관된 데이터를 저장하는데 사용된다. 도 19의 실시예에서, 캐쉬 디렉토리 엔트리(1900)는 어드레스 부분(1902)과 제어 부분(1904)을 포함한다. 어드레스 부분(1902)은 다수의 비트 부분을 포함하고, 대응하는 캐쉬 메모리 엔트리에 저장된 데이터와 연관된 물리적 어드레스의 어드레스 태그 부분 (예를 들어, 물리적 어드레스(1700)의 어드레스 태그 부분(1702))을 저장하는데 사용된다. 제어 부분(1904)은 또한 다수의 비트 위치를 포함하고, 대응하는 캐쉬 메모리 엔트리의 내용을 관리하는데 사용되는 데이터를 저장하는데 사용된다.
도 19의 실시예에서, 캐쉬 디렉토리 엔트리(1900)의 제어 부분(1904)은 유효(V) 비트, 기록 보호(W) 비트, 하나 이상의 교체(R) 비트, 및 암호화 데이터(E)비트를 포함한다. 유효(V) 비트는 대응하는 캐쉬 메모리 엔트리의 내용이 유효한지를 가리킨다. 예를 들어, 만일 V=1이면, 대응하는 캐쉬 메모리 엔트리는 유효 데이터를 저장할 수 있다. 한편, 만일 V=0이면, 대응하는 캐쉬 메모리 엔트리의 내용은 유효일 수 없다. 기록 보호(W) 비트는 대응하는 캐쉬 메모리 엔트리의 내용이 기록 보호(write protected)인지를 가리킨다. 예를 들어, W=1은 대응하는 캐쉬 메모리 엔트리의 내용이 기록될 없음을 가리키는 반면, W=0은 대응하는 캐쉬의 내용이 기록될 수 있음을 가리킨다.
하나 이상의 교체(R) 비트는 대응하는 캐쉬 메모리 엔트리의 내용을 교체하기 위한 전략을 구현하는데 사용된다. 예를 들어, 교체 전략은 최근에 가장 적게 사용된 (LRU : Least recently Used) 교체 전략일 수 있다. 암호화 데이터(E) 비트는 대응하는 캐쉬 메모리 엔트리의 내용이 암호화되는지를 가리킨다. 예를 들어, E=1은 대응하는 캐쉬 메모리 엔트리의 내용이 암호화됨을 가리킬 수 있고, E=0은 대응하는 캐쉬 메모리 엔트리의 내용이 암호화되지 않음을 가리킨다.
캐쉬 유닛(604)(도 6)이 실행 유닛(600)(예를 들어, 명령)에 의해 요구되는 데이터와 연관된 MMU(602)(도 6)로부터 물리적 어드레스(예를 들어, 도 17의 물리적 어드레스(1700))를 수신할 때, 캐쉬 유닛(604)은 물리적 어드레스(1700)의 세트 어드레스 부분(1704)을 캐쉬 유닛(604)의 2차원 캐쉬 구조의 행(즉, 세트)에의 인덱스로 사용한다. 인덱스로서 사용됨에 따라, 세트 어드레스 부분(1704)은 캐쉬 유닛(604)내의 특정 세트를 선택한다. 캐쉬 유닛(604)은 물리적 어드레스(1700)의 어드레스 태그 부분(1702)을 선택된 행(즉, 세트) 내의 각각의 열(즉, 웨이)의 (유효) 캐쉬 디렉토리 엔트리(1900)의 어드레스 부분(1902)과 비교한다. 만일 이들이 일치하면, 캐쉬 "히트(hit)”가 발생하고, 캐쉬(604)는 물리적 어드레스(1700)의 바이트 어드레스 부분(1706)을 사용하여 요청된 데이터 바이트를 제공한다.
만일 비교 결과, 일치하지 않으면, 캐쉬 "미스(miss)"가 발생하여, 메모리(406)(도 4)로부터 요청된 데이터를 얻을 필요가 있음을 신호한다. 이와같은 상황에서, 캐쉬 유닛(604)은 "캐쉬 미스” 신호와 함께 물리적 어드레스(1700)을 BIU(606)(도 6)에 제공한다. 이에 응답해서, BIU(606)는 물리적 어드레스(1700)를 사용하여 메모리(406)로부터 요청된 데이터를 포함하는 데이터(즉, 캐쉬 라인)의 블록을 얻고, 요청된 데이터를 포함하는 데이터의 블록을 캐쉬 유닛(604)에 제공한다.
캐쉬 미스가 발생하면, 캐쉬 유닛(604)은 또한 캐쉬 미스 신호를 CPU SCU(416)(도 6)에 제공한다. MMU(602)에 의해 수행된 선형-대-물리적 어드레스 변환 동작 다음에, CPU SCU(416)는 물리적 어드레스를 사용하여 전술한 바와 같이 물리적 어드레스를 포함하는 메모리 페이지의 SAT 엔트리(즉, 대응하는 메모리 페이지의 SAT 엔트리)를 얻는다. 캐쉬 유닛(604)으로부터의 캐쉬 미스 신호에 응답해서, CPU SCU(416)는 대응하는 SAT 엔트리 내의 암호화 데이터(E) 비트의 값을 캐쉬 유닛(604)에 제공한다. (도 12 참조)
만일 대응하는 SAT 엔트리 내의 암호화 메모리(E) 비트가 설정되어 있으면, BIU(606)에 의해 메모리(406)로부터 얻어진 데이터의 블록은 암호화된다. 이 상황에서, 캐쉬 유닛(6040은 선택된 세트의 웨이의 캐쉬 메모리 엔트리 내의 데이터의블록을 저장하기 전에 암호화/암호해독 유닛(612)(도 6)을 사용하여 데이터의 블록을 암호해독한다. 캐쉬 유닛(604)은 또한 대응하는 캐쉬 디렉토리 엔트리(1900)(도 19 참조)의 제어 부분91904)의 암호화 데이터(E) 비트를 설정한다.
만일 선택된 세트의 모든 웨이들이 유효 데이터를 포함하고 있으면, 캐쉬 유닛(604)은 BIU(606)에 의해 메모리(406)로부터 얻어진 데이터의 블록을 위한 공간을 마련하기 위해 캐쉬 유닛(604)으로부터 캐쉬 라인을 추출하는 교체 전략을 실시할 수 있다. 만일 캐쉬 유닛(604)으로부터 추출된 메모리 엔트리(1800)(즉, 캐쉬 라인)에 대응하는 캐쉬 디렉토리 엔트리(1900)의 암호화 데이터(E) 비트가 설정되어 있다면, 캐쉬 유닛(604)은 메모리(406)에 기록될 BIU(606)에 추출된 캐쉬 라인을 제공하기 전에 암호화/암호해독 유닛(612)을 사용하여 데이터의 블록을 암호화한다.
도 20은 메모리(406)(도 4)에 저장되고 CPU(402)(도 4)와 메모리(406) 간에 전송되는 데이터에 대한 보안을 제공하기 위한 방법(2000)의 일 실시예의 순서도이다 전술한 바와 같이, 메모리(406)에 저장된 데이터는 다수의 메모리 페이지 내에 정렬된다. 방법(200)의 단계(2002) 동안, 선택된 메모리 페이지 내의 물리적 어드레스가 수신된다. 단계(2004) 동안, 이 물리적 어드레스는 선택된 메모리 페이지의 암호화 표시기를 얻기 위해 메모리(406)에 위치된 SEM 데이터구조를 액세스하는데 사용된다. 전술한 바와 같이, SEM 데이터 구조는 SAT 디렉토리(904)(도 9) 및 적어도 하나의 SAT (예를 들어, 도 9의 SAT(906))을 포함한다. 선택된 메모리 페이지의 암호화 표시기는 선택된 메모리 페이지에 저장된 데이터가 암호화되는지를 가리킨다. 선택된 메모리 페이지의 암호화 표시기는 예를 들어, 선택된 메모리 페이지에 대응하는 SAT 엔트리의 암호화 메모리(E) 비트일 수 있다. (도 12 참조)
단계(2006) 동안, 선택된 메모리 페이지로부터의 데이터의 블록 및 암호화 표시기가 수신된다. 예를 들어, 데이터의 블록은 메모리(406)의 연속하는 위치에 저장된 다수의 데이터 유닛(예를 들어, 데이터의 바이트)를 포함할 수 있다. 단계(2008) 동안, 데이터의 블록은 암호화 표시기에 따라 암호화되고, 단계(2010)동안 데이터의 블록이 저장된다.
방법(2000)의 단계(2002, 2004)는 CPU SCU(416)(도 4 및 도 6-8)에서 구현될 수 있고, 방법(2000)의 단계(2006, 2008 및 2010)는 캐쉬 유닛(604)(도 6)에서 구현될 수 있음을 알아야 한다.
또한 CPU(402)의 외부에 존재할 때 (예를 들어, 메모리(406)에 저장될 때), 컴퓨터 시스템(400) 내의 선택 데이터(즉, 기밀 데이터 및 기밀 데이터를 처리하는데 사용되는 소프트웨어 프로그램)의 암호화 및 CPU(402)와 컴퓨터 시스템(400)의 다른 구성요소(예를 들어, 메모리(406))와의 사이에서의 상기 암호화 데이터의 전송은 기밀 데이터 및 이 기밀 데이터를 처리하는데 사용되는 소프트웨어 프로그램 모두를 마스크한다는 것을 알아야 한다. 또한, 비록 본 발명이 순서도를 사용하여 설명되었지만, 본 발명의 방법은 도시된 실시예에 한정되지 않는다는 것을 알아야 한다. 다른 실시예에서, 이 방법의 하나 이상의 단계가 서로 다른 순서로 수행될 수 있거나 생략될 수 있다.
예시된 실시예에서, 사용된 메모리 영역은 메모리 페이지이다. 다른 실시예에서, 기저대역 쌍(base-band pairs)과 같이 메모리 세그먼트 E는 메모리 어드레스 쌍을 포함한 메모리의 다른 입도(granularities)가 사용될 수 있다. 메모리 어드레스 쌍은 메모리 범위를 정의하는 상부 및 하부 어드레스, 또는 기저대역 쌍에서와 같은 정도를 갖는 기저 메모리를 포함할 수 있다. 한 실시예에서, 사용된 메모리 영역의 입도는 운영체제에 의해 사용되는 입도이다. 다른 실시예에서, 사용된 메모리 영역의 입도는 하드웨어에 의해 사용되는 입도이다.
개시된 바와 같이 본 발명의 일부 특징이 하드웨어 또는 소프트웨어로 구현될 수 있다. 따라서, 개시된 상세한 설명의 일부는 하드웨어 구현 프로세스로 제시되고, 상세한 설명의 몇몇 부분은 컴퓨팅 시스템 또는 컴퓨팅 장치의 메모리 내에 데이터 비트에 대한 동작의 상징적 표현을 포함하는 소프트웨어 구현 프로세스로서 제시된다. 이들 설명 및 표현은 기술 분야의 숙련자가 하드웨어 및 소프트웨어를 사용하여 그 실체를 가장 효과적으로 전송하기 위해 사용된 수단이다. 이들 모두의 프로세스 및 동작은 물리적 양의 물리적 조작을 필요로 한다. 흔히 소프트웨어적으로, 반드시는 아니지만, 이들 양들은 저장되고, 운반되고, 결합되어, 비교되고 달리 조작될 수 있는 전기적, 자기적 또는 광학적 신호 형태를 취한다. 공통 용어 때문에 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 이들 신호를 지칭하였다.
그러나, 모든 이들 또는 유사한 용어들은 물리적 양들과 연관되어 있고 이들 양들에 적용되는 편리한 레이블이라는 것을 알아야 한다. 달리 명시되지 않는 한, 본 명세서 전체에 걸쳐 이들 설명은 기억장치 내의 물리적 양으로 유사하게 표현된다른 데이터에 일부 전자 장치의 기억장치 내의 물리적 (전자, 자기 또는 광학) 양들로서 표현된 데이터를 조작하고 변환하는 전자 장치의 작용 및 프로세스를 가리킨다. 이와같은 설명을 지칭하는 용어들의 예는 "프로세싱", "컴퓨팅", "계산", "결정", "디스플레이" 등이다.
또한 본 발명의 소프트웨어 구현 특징은 전형적으로 몇몇 형태의 프로그램 기억매체에 인코드되거나, 일부 형태의 전송 매체를 통해 구현된다는 것을 알아야 한다. 이 프로그램 기억매체는 자기적(예를 들어, 플로피 디스크 또는 하디디스크) 또는 광학적 (예를 들어, 콤팩트 디스크 판독전용 메모리 또는 “CD ROM")일 수 있고, 판독 전용 또는 랜덤 액세스일 수 있다. 유사하게, 전송 매체는 트위스트 쌍, 동축 케이블, 광섬유, 또는 기술분야에 공지된 몇몇 다른 적합한 전송 매체일 수 있다. 본 발명은 임의의 소정 구현이 이들 면에 의해 제한되지 않는다.
상기 개시된 특정 실시예는 예시적인 것이며 본 발명은 본 가름침의 이점을 갖는 기술분야의 숙련자에 명확한 방식으로 수정되고 실시될 수 있다. 더욱이, 이하의 청구범위에 설명된 것 이외의 도시된 구성 또는 설계의 상세한 설명에 어떠한 제한도 없다. 따라서, 개시된 특정 실시예는 수정 또는 변경될 수 있고, 이와 같은 모든 변경은 본 발명의 정신과 범위내에 포함되는 것으로 간주된다. 따라서, 본 발명이 보호하고자 하는 사항은 이하의 청구범위에 나타나 있다.

Claims (10)

  1. 메모리(406)에 있어서,
    데이터의 블록 및 상기 데이터의 블록에 대한 대응하는 암호화 표시기를 수신하도록 결합된 적어도 하나의 기억장소(604) - 상기 데이터의 블록은 선택된 메모리 영역에 대응하고, 상기 암호화 표시기는 상기 선택된 메모리 영역에 대응하는 상기 데이터가 암호화되었는지를 가리킴 - 와; 그리고
    데이터를 암호화 및 암호해독하기 위한 암호화/암호해독 유닛(612) - 상기 암호화/암호해독 유닛(612)은 데이터의 블록이 상기 기억장소에 저장되기 전에 상기 암호화 표시기에 따라 상기 데이터의 블록을 암호해독하도록 구성됨 - 을 포함하는 것을 특징으로 하는 메모리.
  2. 제1항에 있어서, 상기 데이터의 블록은 연속하는 장소에 저장된 복수의 데이터 유닛을 포함하고, 상기 선택된 메모리 영역은 메모리 페이지, 메모리 세그먼트 및 기저대역 쌍 중 하나에 대응하는 것을 특징으로 하는 메모리.
  3. 제1항에 있어서, 상기 암호화 표시기는 적어도 하나의 보안 속성 데이터 구조를 액세스함으로써 얻어지는 적어도 하나의 암호화 메모리 비트인 것을 특징으로 하는 메모리.
  4. 제3항에 있어서, 상기 적어도 하나의 암호화 메모리 비트는 x86 프로세서 아키텍춰에 의해 정의된 것으로서 사용자/감독자(U/S) 비트 및 판독/기록(R/W) 비트 중의 적어도 하나를 포함하는 것을 특징으로 하는 메모리.
  5. 제1항에 있어서, 상기 메모리는 캐쉬(604)를 포함하고, 상기 캐쉬 유닛(604)은 상기 선택된 메모리 영역으로부터 상기 데이터의 블록 및 상기 대응하는 암호화 표시기를 수신하도록 결합되어 있는 것을 특징으로 하는 메모리.
  6. 제5항에 있어서, 상기 캐쉬(604)는 데이터의 블록을 저장하기 위한 복수의 캐쉬 메모리 엔트리(1800), 및 상기 블록을 액세스하는데 필요한 데이터를 저장하기 위한 복수의 캐쉬 디렉토리 엔트리(1900)를 포함하고,
    상기 캐쉬 디렉토리 엔트리(1900) 각각은 대응하는 캐쉬 메모리 엔트리(1800)에 저장된 데이터의 블록이 저장에 앞서 암호화될 것인지를 가리키는 암호화 데이터 비트를 포함하는 것을 특징으로 하는 메모리.
  7. 제6항에 있어서, 소정의 캐쉬 메모리 엔트리(1800)에 저장된 데이터의 블록이 상기 메모리(406)에 저장될 때, 상기 캐쉬(604)는 상기 암호화/암호해독 유닛(612)를 사용하여, 상기 메모리(406)에 상기 데이터의 블록을 저장하기 전에 상기 소정의 캐쉬 메모리 엔트리(1800)에 대응하는 상기 캐쉬 디렉토리 엔트리(1900)내의 상기 암호화 데이터 비트에 따라 상기 데이터의 블록을 암호화하도록 구성된 것을 특징으로 하는 메모리.
  8. 메모리(406)에 저장된 데이터 - 상기 데이터는 복수의 메모리 영역 내에 정렬됨 - 에 대한 보안 제공 방법에 있어서,
    선택된 메모리 영역 내의 어드레스를 수신하는 단계와;
    상기 어드레스를 사용하여 암호화 표시기를 액세스하는 단계 - 상기 암호화 표시기는 상기 선택된 메모리 페이지에 저장된 데이터가 암호화되었는지를 가리킴 - 와;
    상기 선택된 메모리 영역으로부터의 데이터의 블록 및 상기 암호화 표시기를 수신하는 단계와; 그리고
    상기 암호화 표시기에 따라 상기 데이터의 블록을 암호해독하는 단계를 포함하는 것을 특징으로 하는 메모리에 저장된 데이터에 대한 보안 제공 방법.
  9. 제8항에 있어서, 상기 선택된 메모리 영역으로부터의 데이터의 블록 및 상기 암호화 표시기를 수신하는 단계는 상기 선택된 메모리 영역 및 상기 암호화 표시기로부터 연속하는 장소에 저장된 복수의 데이터 유닛을 수신하는 것을 포함하고,
    상기 암호화 표시기에 따라 상기 데이터의 블록을 암호해독하는 단계는 상기 암호화 표시기에 따라 연속하는 장소에 저장된 복수의 데이터 유닛을 암호해독하는 것을 더 포함하는 것을 특징으로 하는 메모리에 저장된 데이터에 대한 보안 제공 방법.
  10. 제8항에 있어서, 상기 선택된 메모리 영역내의 어드레스를 수신하는 단계는 상기 선택된 메모리 영역 내의 물리적 어드레스를 수신하는 것을 포함하고,
    상기 어드레스를 사용하여 상기 암호화 표기기를 액세스하는 단계는 암호화 메모리 비트를 포함하는 보안 속성 테이블 엔트리(912)를 얻기 위해 상기 물리적 어드레스를 사용하여 상기 메모리에 위치한 적어도 하나의 보안 속성 데이터 구조(906)를 액세스하는 것을 포함하는 것을 특징으로 하는 메모리에 저장된 데이터에 대한 보안 제공 방법.
KR10-2004-7015187A 2002-03-27 2002-12-18 영역-입도 하드웨어-제어 메모리 암호화를 제공하기 위한시스템 및 방법 KR20040093472A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/108,253 US8135962B2 (en) 2002-03-27 2002-03-27 System and method providing region-granular, hardware-controlled memory encryption
US10/108,253 2002-03-27
PCT/US2002/040740 WO2003083672A1 (en) 2002-03-27 2002-12-18 System and method providing region-granular, hardware-controlled memory encryption

Publications (1)

Publication Number Publication Date
KR20040093472A true KR20040093472A (ko) 2004-11-05

Family

ID=28452830

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7015187A KR20040093472A (ko) 2002-03-27 2002-12-18 영역-입도 하드웨어-제어 메모리 암호화를 제공하기 위한시스템 및 방법

Country Status (6)

Country Link
US (1) US8135962B2 (ko)
EP (1) EP1490774A1 (ko)
JP (1) JP2005521942A (ko)
KR (1) KR20040093472A (ko)
AU (1) AU2002357921A1 (ko)
WO (1) WO2003083672A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100969758B1 (ko) * 2007-01-22 2010-07-13 삼성전자주식회사 플래시 변환 레이어에서 데이터를 암호화하여 처리하기위한 방법 및 장치

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2849233B1 (fr) * 2002-12-24 2005-05-20 Trusted Logic Procede de securisation des systemes informatiques par confinement logiciel
US8060756B2 (en) * 2003-08-07 2011-11-15 Rao G R Mohan Data security and digital rights management system
US7162647B2 (en) * 2004-03-11 2007-01-09 Hitachi, Ltd. Method and apparatus for cryptographic conversion in a data storage system
US7734926B2 (en) * 2004-08-27 2010-06-08 Microsoft Corporation System and method for applying security to memory reads and writes
US7444523B2 (en) * 2004-08-27 2008-10-28 Microsoft Corporation System and method for using address bits to signal security attributes of data in the address space
US7822993B2 (en) * 2004-08-27 2010-10-26 Microsoft Corporation System and method for using address bits to affect encryption
US7653802B2 (en) * 2004-08-27 2010-01-26 Microsoft Corporation System and method for using address lines to control memory usage
US7617534B1 (en) 2005-08-26 2009-11-10 Symantec Corporation Detection of SYSENTER/SYSCALL hijacking
EP1768028A1 (en) * 2005-09-22 2007-03-28 STMicroelectronics (Research & Development) Limited Addressing peripherals in an ic
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
US8473754B2 (en) 2006-02-22 2013-06-25 Virginia Tech Intellectual Properties, Inc. Hardware-facilitated secure software execution environment
US7681047B2 (en) * 2006-04-18 2010-03-16 International Business Machines Corporation Decryption of data in storage systems
US8726042B2 (en) * 2008-02-29 2014-05-13 Microsoft Corporation Tamper resistant memory protection
US9798898B2 (en) 2010-05-25 2017-10-24 Via Technologies, Inc. Microprocessor with secure execution mode and store key instructions
US9892283B2 (en) 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US8671285B2 (en) 2010-05-25 2014-03-11 Via Technologies, Inc. Microprocessor that fetches and decrypts encrypted instructions in same time as plain text instructions
US9967092B2 (en) 2010-05-25 2018-05-08 Via Technologies, Inc. Key expansion logic using decryption key primitives
US9911008B2 (en) 2010-05-25 2018-03-06 Via Technologies, Inc. Microprocessor with on-the-fly switching of decryption keys
US9164924B2 (en) 2011-09-13 2015-10-20 Facebook, Inc. Software cryptoprocessor
US20150143071A1 (en) * 2011-12-30 2015-05-21 Ravi L. Sahita Memory event notification
US8954755B2 (en) 2012-01-23 2015-02-10 International Business Machines Corporation Memory address translation-based data encryption with integrated encryption engine
US8751830B2 (en) 2012-01-23 2014-06-10 International Business Machines Corporation Memory address translation-based data encryption/compression
US9569633B2 (en) * 2012-06-29 2017-02-14 Intel Corporation Device, system, and method for processor-based data protection
WO2014041395A1 (en) 2012-09-12 2014-03-20 Freescale Semiconductor, Inc. System-on-chip device, method of peripheral access and integrated circuit
WO2014080248A1 (en) 2012-11-23 2014-05-30 Freescale Semiconductor, Inc. System on chip
US9244840B2 (en) 2012-12-12 2016-01-26 International Business Machines Corporation Cache swizzle with inline transposition
US9208105B2 (en) * 2013-05-30 2015-12-08 Dell Products, Lp System and method for intercept of UEFI block I/O protocol services for BIOS based hard drive encryption support
US9781120B2 (en) 2013-07-18 2017-10-03 Nxp Usa, Inc. System on chip and method therefor
US9910865B2 (en) 2013-08-05 2018-03-06 Nvidia Corporation Method for capturing the moment of the photo capture
US20150035999A1 (en) * 2013-08-05 2015-02-05 Nvidia Corporation Method for sharing digital photos securely
US9477603B2 (en) 2013-09-05 2016-10-25 Facebook, Inc. System and method for partitioning of memory units into non-conflicting sets
US9983894B2 (en) 2013-09-25 2018-05-29 Facebook, Inc. Method and system for providing secure system execution on hardware supporting secure application execution
US10049048B1 (en) 2013-10-01 2018-08-14 Facebook, Inc. Method and system for using processor enclaves and cache partitioning to assist a software cryptoprocessor
US9471511B2 (en) 2013-11-24 2016-10-18 Truly Protect Oy System and methods for CPU copy protection of a computing device
US9306916B2 (en) * 2013-12-25 2016-04-05 Cavium, Inc. System and a method for a remote direct memory access over converged ethernet
US9747450B2 (en) 2014-02-10 2017-08-29 Facebook, Inc. Attestation using a combined measurement and its constituent measurements
US9734092B2 (en) 2014-03-19 2017-08-15 Facebook, Inc. Secure support for I/O in software cryptoprocessor
US9690719B2 (en) 2014-09-11 2017-06-27 Nxp Usa, Inc. Mechanism for managing access to at least one shared integrated peripheral of a processing unit and a method of operating thereof
US8990589B1 (en) * 2014-09-18 2015-03-24 Kaspersky Lab Zao System and method for robust full-drive encryption
JP6085320B2 (ja) * 2015-02-09 2017-02-22 インテル・コーポレーション プロセッサ、プログラム、システム及び方法
US20170109526A1 (en) * 2015-10-20 2017-04-20 Intel Corporation Systems and methods for providing anti-malware protection and malware forensics on storage devices
EP3252651A1 (en) 2016-05-30 2017-12-06 Samsung Electronics Co., Ltd Computing system having an on-the-fly encryptor and an operating method thereof
US10664183B1 (en) 2016-07-25 2020-05-26 Oracle International Corporation Method and apparatus for storing memory attributes
US10698836B2 (en) 2017-06-16 2020-06-30 International Business Machines Corporation Translation support for a virtual cache
US10606762B2 (en) 2017-06-16 2020-03-31 International Business Machines Corporation Sharing virtual and real translations in a virtual cache
US10831664B2 (en) * 2017-06-16 2020-11-10 International Business Machines Corporation Cache structure using a logical directory
US11119939B2 (en) * 2017-08-21 2021-09-14 Alibaba Group Holding Limited Methods and systems for memory management of kernel and user spaces
US10984115B2 (en) 2018-12-04 2021-04-20 Bank Of America Corporation System for triple format preserving encryption
US11188685B2 (en) 2019-02-22 2021-11-30 Google Llc Secure transient buffer management

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2180127B (en) * 1985-09-04 1989-08-23 Philips Electronic Associated Method of data communication
US5224166A (en) * 1992-08-11 1993-06-29 International Business Machines Corporation System for seamless processing of encrypted and non-encrypted data and instructions
JP3627384B2 (ja) 1996-01-17 2005-03-09 富士ゼロックス株式会社 ソフトウェアの保護機能付き情報処理装置及びソフトウェアの保護機能付き情報処理方法
US5784459A (en) 1996-08-15 1998-07-21 International Business Machines Corporation Method and apparatus for secure, remote swapping of memory resident active entities
US5757919A (en) 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US6321337B1 (en) * 1997-09-09 2001-11-20 Sanctum Ltd. Method and system for protecting operations of trusted internal networks
US6003117A (en) * 1997-10-08 1999-12-14 Vlsi Technology, Inc. Secure memory management unit which utilizes a system processor to perform page swapping
US6356996B1 (en) * 1998-03-24 2002-03-12 Novell, Inc. Cache fencing for interpretive environments
US6523118B1 (en) * 1998-06-29 2003-02-18 Koninklijke Philips Electronics N.V. Secure cache for instruction and data protection
US6385727B1 (en) * 1998-09-25 2002-05-07 Hughes Electronics Corporation Apparatus for providing a secure processing environment
US7000106B2 (en) * 1999-03-26 2006-02-14 Siemens Communications, Inc. Methods and apparatus for kernel mode encryption of computer telephony
US20030046256A1 (en) * 1999-12-23 2003-03-06 Ola Hugosson Distributed information management
US7003571B1 (en) * 2000-01-31 2006-02-21 Telecommunication Systems Corporation Of Maryland System and method for re-directing requests from browsers for communication over non-IP based networks
WO2002023344A2 (en) * 2000-09-15 2002-03-21 Wind River Systems, Inc. System and method for communicating software debug, diagnostic and maintenance information between devices
US6903737B2 (en) * 2001-01-23 2005-06-07 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing spread memory layout
US6854039B1 (en) * 2001-12-05 2005-02-08 Advanced Micro Devices, Inc. Memory management system and method providing increased memory access security

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100969758B1 (ko) * 2007-01-22 2010-07-13 삼성전자주식회사 플래시 변환 레이어에서 데이터를 암호화하여 처리하기위한 방법 및 장치
US8261098B2 (en) 2007-01-22 2012-09-04 Samsung Electronics Co., Ltd Method and apparatus for encrypting and processing data in flash translation layer
US8935541B2 (en) 2007-01-22 2015-01-13 Samsung Electronics Co., Ltd Method and apparatus for encrypting and processing data in flash translation layer

Also Published As

Publication number Publication date
AU2002357921A1 (en) 2003-10-13
EP1490774A1 (en) 2004-12-29
US8135962B2 (en) 2012-03-13
US20030188178A1 (en) 2003-10-02
JP2005521942A (ja) 2005-07-21
WO2003083672A1 (en) 2003-10-09

Similar Documents

Publication Publication Date Title
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
US6854039B1 (en) Memory management system and method providing increased memory access security
JP4295111B2 (ja) メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法
US7401358B1 (en) Method of controlling access to control registers of a microprocessor
JP4688490B2 (ja) 高セキュリティ実行モードにおいて高セキュリティカーネルを使用するトラステッド・クライアント
US7043616B1 (en) Method of controlling access to model specific registers of a microprocessor
EP2537097B1 (en) Storing secure mode page table data in secure and non-secure regions of memory
US8296538B2 (en) Storing secure mode page table data in secure and non-secure regions of memory
US8473754B2 (en) Hardware-facilitated secure software execution environment
US7130977B1 (en) Controlling access to a control register of a microprocessor
US7426644B1 (en) System and method for handling device accesses to a memory providing increased memory access security
US7082507B1 (en) Method of controlling access to an address translation data structure of a computer system
KR100992611B1 (ko) 보안 예외 스택을 이용하여 예외를 처리하는 방법 및 시스템
KR20040101332A (ko) 구획된 보안을 위한 입/출력 허가 비트맵
KR100831468B1 (ko) Nodma 캐시
KR100972635B1 (ko) 컴퓨터 시스템내에서의 장치간 액세스를 제어하는 시스템및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee