KR20160125987A - 프로세싱 시스템 내 정보의 암호 보호 - Google Patents

프로세싱 시스템 내 정보의 암호 보호 Download PDF

Info

Publication number
KR20160125987A
KR20160125987A KR1020167024649A KR20167024649A KR20160125987A KR 20160125987 A KR20160125987 A KR 20160125987A KR 1020167024649 A KR1020167024649 A KR 1020167024649A KR 20167024649 A KR20167024649 A KR 20167024649A KR 20160125987 A KR20160125987 A KR 20160125987A
Authority
KR
South Korea
Prior art keywords
information
memory
memory access
access request
cache
Prior art date
Application number
KR1020167024649A
Other languages
English (en)
Other versions
KR102456084B1 (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 KR20160125987A publication Critical patent/KR20160125987A/ko
Application granted granted Critical
Publication of KR102456084B1 publication Critical patent/KR102456084B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

프로세서(102)는 프로세서의 메모리 액세스 경로 내 하드웨어 암호화 모듈(115)을 이용하여 안전 정보를 암호화 동맹 분리시킨다. 일부 실시예에서, 암호화 모듈은 프로세서의 메모리 컨트롤러(110)(가령, 노스브리지)에 위치하고, 메모리 컨트롤러에 제공되는 각각의 메모리 액세스는 액세스가 안전한 메모리 액세스인지 여부를 표시하여, 메모리 액세스와 연관된 데이터가 암호 보호용 또는 안전하지 않은 메모리 액세스용으로 지정되었는지를 표시할 수 있다. 안전 메모리 액세스를 위해, 암호화 모듈은 메모리 액세스와 관련된 데이터의 암호화(기록 액세스용) 또는 해역(판독 액세스용)을 수행한다

Description

프로세싱 시스템 내 정보의 암호 보호 {CRYPTOGRAPHIC PROTECTION OF INFORMATION IN A PROCESSING SYSTEM}
본 발명은 일반적으로 프로세서에 관한 것이고, 특히, 프로세서에서의 정보 보안에 관한 것이다.
여러 프로세서 응용예에서, 정보 보안 보호는 중요한 특징이다. 예를 들어, 프로세서는 인프러스트럭처 애즈 어 서비스(Infrastructure As A Service: IAAS) 환경에서 서버에 사용될 수 있고, 이 경우 프로세서는 하나 이상의 가상 기계(VM)를 실행하고, 하이퍼바이저를 실행하여 서버 하드웨어를 VM 간에 분할하고 VM을 서로로부터 분리시킨다. 서로 다른 VM들이 서로 다른 고객을 대행하여 실행될 수 있기 때문에, 각각의 VM에 의해 이용되는 정보(명령어 및 데이터)가 다른 VM에 의한 액세스로부터 보호될 수 있다. 관례적으로, 하이퍼바이저는 각각의 VM에 대해 개별 메모리 페이지 테이블 및 기타 로직 실체를 유지함으로써 VM 정보의 분리를 유지시킨다. 그러나, 하이퍼바이저의 흠(가령, 버그)이 하이퍼바이저 자체를 활용당하게 할 수 있고, 하나의 VM이 다른 VM의 정보에 액세스할 수 있게 된다. 개인용 컴퓨터와 같은, 더욱 사적인 보안 환경에서도, 메모리 모듈에 저장된 데이터가 도난당할 수 있고, 거기 저장된 데이터가 비인가 액세스될 수 있다.
도 1-11은 안전 정보를 암호적으로 분리시키도록 프로세서의 메모리 액세스 경로 내 하드웨어 암호화 모듈을 이용함으로써 프로세싱 시스템에서 안전 정보를 보호하기 위한 기술을 나타낸다. 일부 실시예에서, 암호화 모듈은 프로세서의 메모리 컨트롤러(가령, 노스브리지)에 위치하고, 메모리 컨트롤러에 제공되는 각각의 메모리 액세스는 액세스가 안전한 메모리 액세스인지 여부를 표시하여, 메모리 액세스와 연관된 정보가 암호 보호용 또는 안전하지 않은 메모리 액세스용으로 지정되었는지를 표시할 수 있다. 안전 메모리 액세스를 위해, 암호화 모듈은 메모리 액세스와 관련된 데이터의 암호화(기록 액세스용) 또는 해역(판독 액세스용)을 수행한다. 암호화가 프로세스의 메모리 액세스 경로 내 하드웨어에 의해 이루어지기 때문에, 메모리에 저장된 데이터는 정확한 암호화/해역 키없이 의미있게 액세스가능하지 않다.
일부 실시예에서, 프로세서가 프로세싱 시스템에서 이용되어, 서로 다른 가상 기계(VM)를 실행할 수 있고, VM과 프로세싱 시스템의 하드웨어(메모리 포함) 간에 인터페이스를 제공하도록 하이퍼바이저를 또한 실행할 수 있다. VM이 개별 사용자(가령, 서로 다른 고객)에 의해 실행될 수 있기 때문에, 하나의 VM이 다른 VM에 의해 이용되는 정보(명령어 및 데이터)에 액세스할 수 있도록 VM이 서로로부터 분리되는 것이 바람직할 수 있다. 관례적으로, 하이퍼바이저는 사적 용도를 위해 프로세싱 시스템의 메모리 및 기타 리소스의 전용부를 각각의 VM에 할당함으로써, VM을 분리시키는 데 사용되고 있다. 그러나, 하이퍼바이저 내 버그, 또는, 활용을 위한 차량으로 작용하도록 악의적으로 변형된 하이퍼바이저에 의해, 하이퍼바이저 또는 주어진 VM이 다른 VM의 정보를 검사할 수 있고, 심지어 변경할 수 있다. 여기서 설명되는 기술을 이용하여, 메모리 컨트롤러의 암호화 모듈은 하이퍼바이저에 의한, 또는, 다른 VM 실행에 의한, 액세스로부터 각각의 VM의 정보를 암호적으로 보호하는데 이용된다. 암호 보호가 (실행 하이퍼바이저 "아래의") 프로세서의 메모리 액세스 경로 내 하드웨어에서 구현되기 때문에, 하이퍼바이저 내 버그, 또는, 악성 하이퍼바이저는, 이해될 수 없거나 의미있게 해석될 수 없는 암호화된 데이터에게만 액세스를 제공할 것이다.
예를 들어, 일부 실시예에서, 암호화 모듈은 프로세서에 의해 실행되는 각각의 VM에 대한 고유 키를 저장한다. 일부 시나리오에서, VM에 대한 키는 프로세싱 시스템의 프로세서 코어로부터 분리된 보안 모듈에 의해 발생될 수 있고, 하이퍼바이저를 포함한, 프로세서 코어에서 실행되는 소프트웨어가 키에 액세스할 수 없다. 메모리 컨트롤러에서 메모리 액세스 요청을 수신함에 응답하여, 암호화 모듈은 요청을 생성한 VM을 식별하고, 요청 VM의 대응 키를 이용하여 요청과 연관된 데이터를 암호화 또는 해역한다. 따라서 데이터는 하이퍼바이저에 의한 또는 다른 VM에 의한 액세스로부터 암호적으로 보호된다. 비인가 VM이 (가령, 하이퍼바이저 내 버그를 활용함으로써) 다른 VM에 할당된 메모리 위치에 저장된 데이터를 불러와야할 경우에도, 데이터 자체가 암호화될 것이고, 따라서, 비인가 VM에게 무의미할 것이다.
일부 실시예에서, 여기서 설명되는 기술은 물리적으로 안전하지 않은 환경에 이용되는 프로세싱 시스템에서 구현되며, 프로세싱 시스템의 메모리가 비인가 물리적 액세스에 노출된다(가령, 하드웨어 메모리 모듈의 도난 또는 메모리의 물리적 프로빙). 그러나, 암호화 모듈이 암호화된 형태로 메모리에 안전 데이터를 저장하기 때문에, 안전 데이터는 비인가 물리적 액세스에 노출될 경우에도 쉽게 이용가능하지 않다.
도 1은 일부 실시예에 따라 정보의 암호 보호를 제공하는 프로세싱 시스템(100)을 도시한다. 프로세싱 시스템(100)은 프로세서(102) 및 메모리(120)를 포함한다. 프로세싱 시스템(100)은 서버, 개인용 컴퓨터, 태블릿, 셋탑박스, 게임 시스템, 등과 같은, 다양한 전자 장치 중 임의의 장치에 통합될 수 있다. 프로세서(102)는 지정된 작업을 수행하기 위해 프로세서(102)의 회로를 조작하는 명령어들의 세트(가령, 컴퓨터 프로그램)를 실행하도록 대체로 구성된다. 메모리(120)는 프로세서(102)에 의해 사용되는 데이터를 저장함으로써 이러한 작업들을 실행을 돕는다. 메모리(120)는 랜덤 액세스 메모리(RAM), 비휘발성 메모리, 가령, 플래시 메모리 또는 하드 디스크 드라이브(HDD), 등, 또는 이들의 조합일 수 있다.
명령어들의 세트를 실행하는 도중에, 프로세서(102)는 메모리(120)에 데이터를 저장하기 위한 기록 요청과, 메모리(120)로부터 데이터를 불러오기 위한 판독 요청을 포함한, 메모리 액세스 요청을 발생시킨다. 각각의 메모리 액세스 요청은 메모리 액세스 요청에 의해 표적화되는 메모리(120)에서의 위치를 표시하는 메모리 어드레스(가령, 시스템 물리적 어드레스)를 포함한다. 판독 요청에 응답하여, 메모리(120)는 판독 요청의 메모리 어드레스에 대응하는 위치에 저장된 정보(데이터 또는 명령어)를 불러들여서, 프로세서(102)에 정보를 제공한다. 판독 요청에 응답하여, 메모리(120)는 기록 요청의 메모리 어드레스에 대응하는 위치에 요청의 기록 정보를 저장한다.
프로세서(102)는 보안 모듈(130)을 포함한다. 보안 모듈(130)은 범용 프로세서, 필드 프로그래머블 게이트 어레이(FPGA), 애플리케이션 전용 집적 회로(ASIC), 프로세서 코어의 작동 모드, 또는, 프로세싱 시스템(100)을 위한 보안 작동을 수행하도록 설계 및 구성된 기타 모듈이며, 보안 작동은 프로세서(102)에서 실행될 실체(가령, 가상 기계, 컴퓨터 프로그램, 등)의 등록, 실행될 실체를 위한 보안 키의 생성 및 식별, 보안 작동을 위한 프로세싱 시스템(100)의 인증, 등을 포함한다. 일부 실시예에서, 보안 모듈(130)은 작동 실행을 허가받기 전에 안전한 등록 프로세스를 수행할 수 있고, 보안 작동만으로 제한된 작동을 가질 수 있어서, 활용당하도록 내버려둔 작동을 실행할 수가 없다. 여기서 더 설명되는 바와 같이, 보안 모듈(130)은 보안 키 생성, 프로세싱 시스템(100)에서 실행될 등록 실체의 식별, 및 이러한 암호 분리를 실현하는 기타 작동에 의해, 프로세싱 시스템(100)에서의 정보의 암호 분리를 지원한다.
명령어의 실행을 돕기 위해, 프로세서(102)는 프로세서 코어(104, 106), 캐시(105, 107, 108), 노스브리지(110), 및 보안 모드 레지스터(121)를 포함한다. 프로세서 코어(104, 106)는 명령어를 개별적으로 그리고 동시적으로 실행하는 프로세싱 유닛이다. 일부 실시예에서, 각각의 프로세서 코어(104, 106)는 개별 명령어 파이프라인을 포함하며, 이러한 파이프라인은 명령어를 인출하고, 인출된 명령어를 대응하는 작동으로 디코딩하며, 프로세싱 시스템(100)의 리소스를 이용하여, 메모리 액세스 요청을 포함한, 작동들을 실행한다. 각각의 프로세서 코어(104, 106)는 각각의 메모리 요청을 두 유형 중 하나 - 메모리 액세스 요청에 대응하는 정보가 암호 보호용으로 지정되었음을 표시하는 안전 메모리 액세스 요청, 또는, 메모리 액세스 요청에 대응하는 정보가 암호 보호용으로 지정된 것이 아닌 비-안전 메모리 액세스 요청 - 로 식별하도록 구성된다.
일부 실시예에서, 프로세싱 시스템(100)은 정보가 메모리(120)에서 저장되는 장소에 대응하는, 또는, 정보의 유형(가령, 명령어 또는 데이터)에 대응하는, 메모리 어드레스와 함께 포함되는 제어 비트에 기초하여 정보에 대한 보안 지정(정보가 암호 보호되는지 여부)을 할당하는 보안 기법을 구현한다. 이로써, 데이터의 집합들이 안전한 정보로 쉽게 분류될 수 있어서, 효율적인 정보 보호를 제공하게 된다. 예를 들어, 일부 실시예에서, 제어 비트는, 메모리(120)의 물리적 어드레스에 대한 가상 어드레스의 매핑을 제공하는 페이지 테이블 정보 또는 명령어 정보와 같은 특정 유형의 정보가 안전 정보로 지정되도록, 따라서, 아래 더 설명되는 바와 같이, 이 정보를 암호 보호하도록, 프로세싱 시스템(100)에 의해 설정된다. 데이터에 할당된 제어 비트는 예를 들어, 프로세서(102)에서 실행되는 프로그램에 의해 요청되는 지정에 기초하여 더 정밀한 입도로 지정될 수 있다. 이러한 보안 기법은 중요 데이터의 보호를 제공(가령, 가상 기계 또는 그 프로그램의 비인가 실행 방지)하면서도 더 일반적인 데이터에 대한 유연성을 여전히 제공할 수 있다.
일부 실시예에서, 정보에 할당된 보안 유형이 정보의 대응 메모리 어드레스에 기초하여 지정되기 때문에, 프로세싱 시스템(100)은 각각의 메모리 어드레스에 대한 보안 유형을 표시하도록 페이지 테이블 자체를 이용한다. 따라서, 도 3을 참조하여 아래에서 더 설명되듯이, 프로세서 코어(104, 106)는 메모리 액세스 요청에 대응하는 메모리 어드레스를 식별하는 과정에서 메모리 액세스 요청의 유형을 식별한다. 특히, 메모리 어드레스가 안정 전보를 저장하는 것으로 표시될 경우, 대응하는 메모리 액세스가 안전 메모리 액세스로 식별된다. 마찬가지로, 메모리 액세스가 비-안전 정보를 저장하는 것으로 표시되면, 대응하는 메모리 액세스가 비-안전 메모리 액세스로 식별된다.
캐시(105, 107, 108)는 메모리(120)에서 저장되는 정보의 서브세트를 저장하는, 그래서, 각자의 정보 서브세트에 대한 신속한 액세스를 프로세서 코어(104, 106)에 제공하는, 메모리 디바이스다. 단순화를 위해 캐시(108)가 단일 캐시로 도시되지만, 일부 실시예에서, 캐시(108)는, 프로세서(102)의 메모리 계층 구조의 서로 다른 레벨에 존재하는 서로 다른 캐시를 포함한, 복수의 캐시를 나타낼 수 있다. 캐시(108)는 메모리 액세스 요청을 수신하여, (도 1에 도시되지 않는) 저장 어레이가 메모리 액세스 요청에 의해 표적화되는 정보를 저장하는지 여부를 식별한다. 그러하다면, 캐시(108)는 캐시 히트를 표시하고, 저장 어레이에서 메모리 액세스 요청을 충족시킨다. 캐시(108)가 표적화된 정보를 저장하지 않을 경우, 캐시 미스를 표시하고, 메모리 액세스 요청을 노스브리지(110)에 제공한다.
도 1의 예시 실시예에서, 프로세싱 시스템(100)의 메모리 액세스 경로는 캐시(108)가, 암호화되지 않은 형태로, 안전 정보를 포함한, 정보를 저장하도록 구성된다. 따라서, 도 5를 참조하여 아래에서 더 설명되듯이, 일부 실시예에서, 캐시(108)는 주어진 크기의 각각의 저장 위치(가령, 캐시 라인)에 대해, 저장 위치에서 정보에 액세스하도록 인가된 특정 프로그램 또는 기타 실체(가령, VM)를 식별하는 실체 태그 정보를 저장한다. 저장 어레이의 일 위치에 대한 메모리 액세스에 응답하여, 캐시(108)는 메모리 액세스 요청을 발생시킨 실체의 신원을 실체 태그 정보에 비교하고, 불일치할 경우, 캐시 미스를 표시하며, 따라서, 정보에 대한 비인가 액세스를 방지할 수 있다.
노스브리지(110)는 메모리(120)와 통신하도록 프로세서(102)의 인터페이스를 제공하는 메모리 컨트롤러다. 일부 실시예에서, 노스브리지(110)는 입/출력 컨트롤러(가령, 사우스브리지 - 도시되지 않음)와 인터페이싱하는 기능, 그리고 서로 다른 프로세서 코어(가령, 프로세서 코어(104, 106) 및 기타 프로세서 코어(도시되지 않음), 가령, 그래픽 프로세싱 유닛) 간에 인터페이스를 제공하는 기능과 같은, 다른 기능들을 수행할 수 있다. 메모리 컨트롤러로서의 능력에서, 노스브리지(110)는 캐시(108)로부터 메모리 액세스 요청을 수신하고, 메모리(120)에 이 요청을 제공하는 것을 제어한다. 메모리 컨트롤러로서의 능력에서, 노스브리지(110)는 캐시(108)로부터 메모리 액세스 요청을 수신하고, 메모리(120)에 이 요청을 제공하는 것을 제어한다. 일부 실시예에서, 노스브리지(110)는 프로세싱 시스템(100)의 입/출력 디바이스(도시되지 않음)로부터 메모리 액세스 요청(가령, 직접 메모리 액세스 요청)을 수신할 수 있고, 메모리(120)로의 제공을 제어한다.
정보의 암호 분리를 제공하기 위해, 노스브리지(110)는 명시된 암호 표준에 따라, 그리고, 키(126)에 기초하여, 정보를 암호화 및 해역하도록 구성되는 암호화 모듈(115)을 포함한다. 일부 실시예에서, 암호화 모듈(115)은 고급 암호화 표준(AES: Advanced Encryption Standard) 암호화 및 해역을 이용하도록 구성되지만, 다른 실시예에서, 암호화 모듈(115)은 다른 암호화/해역 기술을 이용할 수 있다. 기록 요청 수신에 응답하여, 노스브리지(110)는 요청이 안전 메모리 액세스 요청인지 또는 비-안전 메모리 액세스 요청인지 여부를 식별한다. 기록 요청이 비-안전 메모리 액세스 요청일 경우, 노스브리지(110)는 암호화 모듈(115)을 우회하고, 기록될 정보의 암호화없이 기록 요청을 메모리(120)에 제공한다. 기록 요청이 안전 메모리 액세스 요청일 경우, 노스브리지(110)는 메모리 액세스 요청을 발생시킨 실체(가령, 프로그램, VM, 소프트웨어 서비스, 등)에 할당되는 키(126)들 중 하나를 식별한다. 일부 실시예에서, 보안 모듈(130)은 어떤 실체가 프로세서(102)에서 현재 실행되고 있는 지에 기초하여 선택될 키를 식별한다. 암호화 모듈(115)은 기록될 정보의 암호화를 위해 선택된 키를 이용하고, 암호화된 정보와 함께 기록 요청을, 저장을 위해 메모리(120)에 제공한다. 일부 실시예에서, 암호화 모듈(115)은 대응 정보의 암호화 및 해역을 위해 메모리 액세스 요청의 물리적 어드레스 및 선택된 키를 이용하고, 따라서, 블록 이동 공격을 방지한다. 일부 실시예에서, 암호화 모듈(115)은 프로세서(102)에서의 제어 비트(도시되지 않음)의 상태에 기초하여 암호화 및 해역을 위한 물리적 어드레스의 이용 여부를 식별한다. 제어 비트 상태는 보안 모듈(130)에 의해 설정될 수 있다.
판독 요청 수신에 응답하여, 노스브리지(110)는 메모리(120)에 요청을 제공하고, 이어서, 요청에 응답하여 정보를 수신한다. 노스브리지(110)가 판독 요청을 비-안전 메모리 액세스 요청을 식별할 경우, 암호화 모듈(115)을 우회하여, 암호화없이 캐시(108)에 판독 정보를 제공한다. 노스브리지(110)가 판독 요청을 안전 메모리 액세스 요청으로 식별할 경우, 판독 액세스 요청을 발생시킨 실체에 할당된 키(126)들 중 하나를 식별하고, 암호화 모듈(115)이 판독 정보를 해역한다. 노스브리지(110)는 해역된 판독 정보를 저장을 위해 캐시(108)에 제공한다. 일부 상황에서, 노스브리지(110)는 캐시(108)에 대한 정보 제공을 우회할 수 있고, 대응하는 판독 액세스 요청을 발생시킨 프로세서 코어에 해역된 판독 정보를 직접 제공한다.
일부 실시예에서, 보안 모드 레지스터(121)는 암호화 모듈(115) 작동의 제어에 이용된다. 보안 모듈 레지스터(121)는 가드-모드-온 필드(guard-mode-on field)(122) 및 가드-모드-액티브 필드(guard-mode-active field)(123)를 포함한다. 가드-모드-온 필드가 명시된 상태(가령, 니게이트된 상태(negated state))에 있음에 응답하여, 노스브리지(110)는, 안전 메모리 액세스 요청을 포함한, 모든 메모리 액세스 요청에 대해 암호화 모듈(115)을 우회한다. 이로써 프로세싱 시스템(100)이, 프로세서(102)에서 실행되는 모든 프로그램에 대해 암호화 및 해역이 우회되는 모드로 작동할 수 있다.
가드-모드-온 필드가 다른 명시된 상태(가령, 어서트된 상태(asserted state))에 있음에 응답하여, 노스브리지(110)는, 가드-모드-액티브 필드의 상태를 식별한다. 가드-모드-액티브 필드가 명시된 상태(가령, 니게이트된 상태(negated state))에 있음에 응답하여, 노스브리지(110)는, (안전 메모리 액세스 요청을 포함한) 수신된 메모리 액세스 요청에 대해 암호화 모듈(115)을 우회하고, 가드-모드-액티브 필드가 다른 상태(가령, 어서트된 상태(asserted state))에 있음에 응답하여, 노스브리지는 비-안전 메모리 액세스 요청에 대해서만 암호화 모듈을 우회한다. 일부 실시예에서, 가드-모드-온 필드는 프로세서(102)에서 복수의 개별 프로그램 또는 실체(가령, VM)의 실행을 관리하는 실체(가령, 하이퍼바이저)에 의해 설정되고, 가드-모드-온 필드는 개별 프로그램 또는 실체 각각에 대해 개별적으로 설정된다. 따라서 보안 모드 레지스터는 서로 다른 입도 레벨로 암호화 모듈(115)의 이용을 제어할 수 있다.
도 2는, 일부 실시예에 따라, VM에 대한 정보의 암호 분리를 제공하기 위한 프로세싱 시스템(100)의 예시 작동을 예시한다. 도시되는 예에서, 프로세서(102)는 VM(250) 및 VM(251)을 동시에 실행할 것이다. 추가적으로, 프로세서(102)는 프로세싱 시스템(100)의 하드웨어와 VM(250, 251) 간에 인터페이스를 제공하기 위해 하이퍼바이저(252)를 실행한다. 그 실행 과정 중, VM(250, 251)은 안전 정보(225, 226)에 각각 액세스(저장 및 불러오기)할 것이다. 암호화 모듈(115)은, 안전 정보(225, 226)가 암호적으로 분리되어, 각자의 VM에 의해서만 액세스될 수 있도록 함을 보장한다.
작동시, 프로세서(102)에서의 실행을 허락받기 전에, 각각의 VM(250, 251)은 보안 모듈(130)에 등록한다. 일부 실시예에서, VM은 다음과 같이 등록된다: VM 소유자는 보안 모듈(130)과의 안전 통신 채널(도 2에 도시되지 않음)을 구축한다. 'VMID'로 지정된 식별 값과, 'VMKEY'로 지정되는 보안 키가 VM에 대해 발생된다. 이러한 발생은 보안 모듈(130)에서 또는 별도의 보안 디바이스에서 이루어질 수 있고, 안전 통신 채널을 통해 보안 모듈(130)에 전송될 수 있다. 보안 모듈(130)은 각각의 VMKEY 및 VMID 값들이 대응 VM에 대해 고유한 것임을 보장한다. VM 소유자는 대응하는 VM의 이미지를 암호화하고, 이를 하이퍼바이저(252)에 제공하며, 하이퍼바이저는 암호화된 이미지를 메모리(120)에 안전 데이터로 저장한다. 따라서, 예시 실시예에서, 안전 정보(225)는 VM(250)을 위한 VM 이미지를 포함한다.
이어서, 프로세서(102)는 VM 실행 요청을 수신한다. 요청에 응답하여, 프로세서(102)는 요청된 VM에 대한 VMID를 보안 모듈(130)에 알린다. 보안 모듈(230)은 요청받은 VM에 대한 보안 키를 VMID에 기초하여 식별하고, 보안 키를 암호화 모듈(115)에 제공한다. 도 2의 예시 실시예에서, 프로세서(102)는 VMA(250, 251)을 모두 실행하기 위한 요청을 수신하였고, 따라서, 보안 모듈(130)은 VMA(250)에 대해 키(118)를, 그리고, VMA(251)에 대해 키(119)를 암호화 모듈(115)에 제공하였다.
그 실행 과정 중, VM(250, 251)은 메모리 액세스 요청을 발생시키고, 이를 노스브리지(110)에 제공하며, 노스브리지는 요청의 메모리 어드레스와 함께 포함된 하나 이상의 비트에 기초하여, 메모리 액세스 요청이 안전 메모리 액세스 요청인지 여부를 식별한다. 그렇지 않을 경우, 노스브리지(110)는 암호화 모듈(115)을 우회하고, 암호화 또는 해역없이 메모리 액세스 요청을 충족시킨다. 메모리 액세스 요청이 안전 메모리 액세스 요청일 경우, 노스브리지(110)는 메모리 어드레스, 또는, 메모리 액세스 요청과 함께 제공되는 기타 정보에 기초하여, VM(250, 251) 중 어느 것이 메모리 액세스 요청을 발생시켰는지를 식별한다. 암호화 모듈(115)은 메모리 액세스 요청을 발생시킨 VM에 대응하는 키(118, 119) 중 하나를 선택하고, 선택된 키를 이용하여 메모리 액세스 정보(판독 데이터 또는 기록 데이터)에 대해 (기록 요청의 경우) 암호화 또는 (판독 요청의 경우) 해역을 수행한다.
앞서 설명한 바와 같이, 데이터의 암호 보호가 노스브리지(110)에서 이루어지고, 암호 보호용으로 사용되는 키가 알려져있지 않고 VM(250, 251) 및 하이퍼바이저(252)에 액세스불가능하다. 이는 하나의 VM이 다른 VM의 안전 정보에 액세스할 수 없음을 보장한다. 예를 들어, VM(251)은 안전 정보(225)(VM(250)에 대한 안전 정보)에 액세스하기 위해 메모리 액세스 요청을 발급할 수 있다. 메모리 액세스 요청이 VM(251)에 의해 발생되었기 때문에, 암호화 모듈(115)은 안전 데이터 암호화에 사용된 키(118)보다는, VM(251)에 할당된 키(119)로 요청된 안전 데이터를 해역하려 시도할 것이다. 따라서, VM(251)은 부정확한 키를 이용하여 해역되었기 때문에 해역된 데이터를 의미있게 또는 정확하게 해석할 수 없을 것이다. 따라서, VM(250)에 대한 안전 정보(225)가 VM(251)에 의한 액세스로부터 암호적으로 분리된다.
일부 실시예에서, 프로세싱 시스템(100)은 보안성 향상을 위해 키(118, 119)를 주기적으로 바꾼다. 예를 들어, 보안 모듈(130)은 재시작될 때 VM이 새 키를 가짐을 보장하기 위해, VM이 (중지가 아니라) 완전히 셧다운될 때마다 VM에 대해 새 키를 발생시킬 수 있다. 올드 키 하에 메모리(120)에 저장된 VM 안전 정보에 대하여, 보안 모듈(130)은 올드 키를 이용하여 이러한 정보를 해역하도록, 그리고, 새 키를 이용하여 정보를 재-암호화하도록 노스브리지(110)에 지시할 수 있고, 따라서, VM이 재시작될 때 안전 정보에 액세스할 수 있게 된다.
일부 실시예에서, 보안 모듈(130)은 VM이 중지 상태에 들어감에 응답하여, VM에 대해 새 키를 발생시킬 수 있다. VM의 일부분(가령, 게스트 운영 체제)은 VM을 위한 암호화된 데이터를 저장하는 메모리(120)의 메모리 페이지를 식별하는 데이터 구조를 유지한다. VM이 중지 상태에 들어감에 응답하여, 보안 모듈(130)은 올드 키를 이용하여 식별된 메모리 페이지를 해역하도록, 그리고, 새 키를 이용하여 메모리 페이지를 재-암호화하도록 노스브리지(110)에 지시하며, 따라서, VM이 중지 상태를 빠져나올 때 안전 정보에 액세스가능함을 보장할 수 있다.
일부 실시예에서, 프로세싱 시스템(100)은 대응하는 서로 다른 고객을 위해 복수의 VM의 실행에 이용되지 않지만, 대신에, 단일-사용자 또는 단일-고객 환경에 사용되는 모드(설명의 목적을 위해 "네이티브 모드"로 지칭됨)로 배치될 수 있다. 이러한 시나리오에서, 노스브리지(110)에서 암호화 모듈(115)은, 프로세서(102)에서 실행되는 하나 이상의 프로그램에 의해 식별되는 바와 같이, 기밀 정보를 암호적으로 보호하는데 이용될 수 있다. 따라서 기밀 정보가 메모리(120)에서 암호화된 형태로 저장될 것이다. 메모리(120)가 비인가 방식으로(가령, 메모리(120)의 메모리 모듈의 도난을 통해) 액세스될 경우에도, 암호화된 정보는 정보 암호화에 사용된 키을 알지못하면 의미있게 해석될 수 없다. 따라서 기밀 정보는 비인가 액세스로부터 암호적으로 보호된다.
일부 실시예에서, 여기서 더 설명되는 바와 같이, ("VM 태그 값"이라 불리는) 전용 태그 값이 암호화 또는 해역을 돕고자 실행 VM에 할당된다. 이러한 태그값들 중 하나는 네이티브 모드로 사용하도록 예약될 수 있어서, 네이티브 모드의 암호화용으로 지정된 정보가, 프로세싱 시스템(100)이 다음에 VM 실행에 사용될 경우, 액세스될 수 없게 된다. 일부 실시예에서, 네이티브 모드는 프로세서(102)에서 지정된 제어 비트(도시되지 않음)에 의해 가동될 수 있고, 프로세서(102)에서 VM의 실행과 연계하여 또는 독립적으로 사용될 수 있다.
일부 실시예에서, 프로세서(102)와는 다른 디바이스가 노스브리지(110)를 이용하여 직접 메모리 액세스(DMA) 요청을 통해 메모리(120)에 액세스할 수 있다. 일부 실시예에서, 노스브리지(110)는 이러한 모든 DMA 요청을 위해 암호화 모듈(115)을 우회한다. 다른 실시예에서, 프로세싱 시스템(102)은 DMA 요청을 위해 특정 VM 태그값을 지정 또는 예비할 수 있고, 다른 VM 태그에 대응하는 안전 정보에 액세스하기 위한 DMA 요청에 의한 시도는 프로세싱 시스템(102)에서의 에러 통지 발생을 야기할 수 있다. 이는 DMA 요청이 정보의 암호 보호 우회에 사용될 수 없음을 보장한다.
도 3은 일부 실시예에 따라 메모리 액세스 요청을 위한 보안 유형(가령, 안전 또는 비-안전)을 식별할 수 있는 프로세서(102)의 일부분을 도시한다. 특히, 도 3은 어드레스 변환 모듈(345), 변환 색인 버퍼(TLB)(346), 및 페이지 테이블(347)을 도시한다. 어드레스 변환 모듈(345)은 대응하는 메모리 액세스 요청을 위한 가상 어드레스를 프로세서 코어(104, 106) 중 하나 또는 둘 모두로부터 수신하도록 대체로 구성되는 모듈이다. 어드레스 변환 모듈(345)은 각각의 수신된 가상 어드레스를, 메모리 액세스 요청에 의해 표적화되는 메모리(120)의 위치를 식별하는 대응하는 물리적 어드레스로, 변환한다.
어드레스 변환 모듈(345)은 TLB(346) 및 페이지 테이블(347) 중 하나 또는 둘 모두를 이용하여 가상 어드레스를 대응하는 물리적 어드레스로 변환한다. 페이지 테이블(347)은 가상 어드레스에 의해 인덱싱되는 복수의 엔트리(가령, 엔트리(348))를 포함한다. 일부 실시예에서, 페이지 테이블(347)은 멀티-레벨 페이지 테이블이고, 따라서, 하위-레벨 페이지는 가상 어드레스와 관련된 다른 페이지를 식별하는 엔트리를 포함하고, 최고 레벨 페이지는 가상 어드레스에 할당된 물리적 어드레스를 식별한다. 물리적 어드레스는 페이지 워크(page walk) 내 페이지 테이블을 가로지름으로써 식별될 수 있고, 최저 레벨 페이지는 액세스될 다음 레벨의 페이지를 식별하기 위한 첫번째 액세스이고, 등등하여, 물리적 어드레스를 포함하는 최고 레벨 페이지 테이블이 식별되어 이러한 물리적 어드레스가 최고 레벨 페이지 테이블로부터 불러들여질 때까지 진행된다. 최고 레벨 페이지 테이블은 물리적 어드레스에 대응하는 데이터가 암호적으로 보호될 것인지 여부를 표시하는 비트("C-비트"로 지정됨)를 또한 저장한다. TLB(346)는 어드레스 변환 모듈(345)에 의해 최근에 수신한 가상 어드레스를 반영하는 페이지 테이블(347)의 엔트리들의 서브세트를 함께 저장하는 복수의 엔트리(가령, 엔트리(349))를 포함한다.
가상 어드레스의 수신에 응답하여, 어드레스 변환 모듈(345)은 가상 어드레스에 대응하는 엔트리를 포함하는지 여부를 결정하기 위해 TLB(346)에 액세스한다. 만약 그러할 경우, 어드레스 변환 모듈(345)은 물리적 어드레스에 C-비트 값을 매달고, 메모리 액세스 요청에 의해 사용될 결과적인 물리적 어드레스 값을 제공한다. 물리적 어드레스의 C-비트 부분은 메모리 액세스 요청이 안전 메모리 액세스 요청인지 여부를 식별하기 위해 노스브리지(110)에 의해 사용된다. 따라서, 예를 들어, 물리적 어드레스 값의 C-비트가 어서트된 상태(asserted state)에 있을 경우, 노스브리지(110)는 대응하는 메모리 액세스 요청을 안전 메모리 액세스 요청으로 식별하고, 암호화 모듈(115)을 이용하여 요청에 대응하는 정보를 암호화 또는 해역한다.
TLB(346)가 가상 어드레스에 대응하는 엔트리를 포함하지 않을 경우, 어드레스 변환 모듈(345)은 메모리(120)로부터 페이지 테이블(347)을 불러오고, 가상 어드레스에 대응하는 엔트리를 위해 페이지 테이블(347)의 검색(가끔 "페이지 워크"(page walk)라 불림)을 수행한다. 어드레스 변환 모듈(345)은 엔트리를 TLB(346)에 전달하고, 메모리 액세스 요청에 응답하여, C-비트를 포함한, 물리적 어드레스 값을 제공한다.
페이지 테이블(347) 및 TLB(346)가 C-비트 저장에 사용되고, 따라서, 보호되는 메모리 액세스 요청만을 식별하기 때문에, 안전 정보가 더 쉽게 그리고 안전하게 보호될 수 있다. 예를 들어, 일부 실시예에서, VM 코드에 대응하는 물리적 어드레스가, 대응하는 페이지 테이블에서의 C-비트를 어서트된 상태(asserted state)로 설정함으로써, 안전 정보로 지정될 수 있다. 이는 VM 코드 자체가 암호적으로 분리됨을 보장한다. 더욱이, VM에 대한 페이지 테이블이, 대응하는 C-비트를 어서트된 상태(asserted state)로 설정함으로써, 그 자체로 암호적으로 보호될 수 있다. 일부 실시예에서, 페이지 테이블의 C-비트는 하드웨어에 의해 무조건적으로 설정된다. 일부 실시예에서, VM 자체는 다른 실행불가능 정보에 대해 C-비트를 설정할 수 있어서, 직접 메모리 액세스를 통해 입/출력 장치에 의해 직접 액세스될 데이터와 같이, 일부 데이터를 비보호 데이터로 식별하도록 VM에게 유연성을 제공할 수 있다.
일부 실시예에서, 각각의 어드레스에 대한 물리적 어드레스 값에 추가하여 C-비트를 이용하는 것보다, 프로세싱 시스템(100)은 C-비트 값을 위해 각각의 물리적 어드레스의 기본 비트(가령, 최대 유효 비트)의 용도를 맞춘다. 프로세싱 시스템(100)은 암호적으로 보호되는 정보에 액세스하도록 허용되는 VM에 대한 VM 태그 값을 저장하기 위해 물리적 어드레스의 하나 이상의 비트의 용도를 또한 재설정할 수 있다. 물리적 어드레스 비트 용도의 재설정은 프로세싱 시스템(100)의 물리적 어드레스 공간을 제한하는 잠재적 비용에서 실리콘 면적을 절감한다. 일부 실시예에서, 프로세서(102)는 더 작은 어드레스 물리적 어드레스 공간을 수용하기 위해, 페이지 워크 중 나타날 수 있는, 물리적 어드레스에 대한 기존 점검(existing checks)을 수정할 수 있다. 예를 들어, 프로세서(102)는 정보 암호화가 가동되지 않을 때 48비트의 물리적 어드레스를 이용할 수 있고, 정보 암호화가 가동될 때 44비트의 물리적 어드레스를 이용할 수 있어서, C-비트 및 VM 태그 값을 위해 나머지 4비트의 용도를 재설정할 수 있다. 따라서, 정보 암호화가 가동될 때, 프로세서(102)는 44비트 이상의 값을 가진 물리적 어드레스를 참조하는 프로그램 또는 하드웨어 모듈에 응답하여 에러 표시를 발생시킬 수 있다.
일부 실시예에서, 프로세서(102)가 VM 또는 하이퍼바이저를 실행하는 경우에, 어드레스 변환 모듈(145)은 메모리(120)에 의해 사용될 물리적 어드레스(도 4의 설명 목적을 위해 "시스템 물리적 어드레스"라 불림) 및 C-비트의 식별을 위해 하나보다 많은 레벨의 페이지 테이블에 액세스할 수 있다. 일부 실시예에 따라 도 4에서 한 예가 도시된다. 도시되는 예에서, 어드레스 변환 모듈(145)은 수신되는 가상 어드레스에 대한 시스템 물리적 어드레스를 식별하기 위해 TLB(346), 게스트 페이지 테이블(447), 및 호스트 페이지 테이블(449)(가령, 네스티드 페이지 테이블)을 이용하도록 구성된다.
게스트 페이지 테이블(447)은 게스트 물리적 어드레스라고 불리는 한 세트의 어드레스에 대한 가상 어드레스의 매핑을 저장한다. 게스트 물리적 어드레스는 메모리(120)의 실제 물리적 어드레스가 아니라, 메모리(120)의 시스템 물리적 어드레스와 가상 어드레스 사이의 중간적 어드레스를 나타낸다. 호스트 페이지 테이블(449)은 게스트 물리적 어드레스와 대응하는 시스템 물리적 어드레스 간의 매핑을 저장한다. 따라서, 게스트 페이지 테이블(447) 및 호스트 페이지 테이블(449)은 예를 들어, VM에 의해 이용되는 어드레스 공간과, 예를 들어, 하이퍼바이저에 의해 이용되는 어드레스 공간 간의 변환 및 분리층을 실현시킨다. 도 4의 도시되는 예에서, 어드레스에 대한 C-비트가 게스트 페이지 테이블(447)에 저장되어, 특정 페이지가 암호 보호용으로 지정되어있는지 여부를 VM이 제어할 수 있게 된다. 이는 하이퍼바이저로부터 C-비트를 분리시키고, 따라서, 버그 또는 악성 하이퍼바이저에 의한 활용으로부터 암호 지정을 보호할 수 있다.
작동시, 어드레스 변환 모듈(345)은 메모리 어드레스를 위한 가상 어드레스를 수신하고, 첫번째로, TLB(346)가 가상 어드레스를 위한 시스템 물리적 어드레스를 저장하고 있는지 여부를 식별한다. 만약 그러하다면, 어드레스 변환 모듈(345)이 TLB(346)로부터 시스템 물리적 어드레스 및 대응하는 C-비트를 불러들이고, 이를 노스브리지(110)에 제공한다. TLB(346)가 시스템 물리적 어드레스를 저장하지 않을 경우, 어드레스 변환 모듈(345)은 수신된 가상 어드레스에 할당된 게스트 페이지 테이블(447)의 엔트리(가령, 엔트리(448))를 식별한다. 어드레스 변환 모듈(345)은 식별된 엔트리로부터 C-비트 값을 불러들이고, 식별된 엔트리의 게스트 물리적 어드레스를 이용하여, 호스트 페이지 테이블(449)에서 페이지 워크를 수행할 수 있다. 페이지 워크의 결과, 어드레스 변환 모듈(345)은 게스트 물리적 어드레스에 할당된 호스트 페이지 테이블(449)의 엔트리(가령, 엔트리(451))를 식별하고, 엔트리는 수신된 가상 어드레스에 대응하는 시스템 물리적 어드레스를 저장한다. 어드레스 변환 모듈(345)은 시스템 물리적 어드레스를 불러들이고, 이를, 게스트 페이지 테이블(447)의 대응하는 엔트리로부터 불러들인 C-비트와 함께, 여기서 설명되는 바와 같이, 메모리 액세스 요청의 추가적 처리를 위해, 노스브리지(110)에 제공한다. 추가적으로, 어드레스 변환 모듈(345)은 수신된 가상 어드레스에 대응하는 TLB(346)의 엔트리에 시스템 물리적 어드레스 및 C-비트를 저장한다. 따라서, 도 4의 예에서, C-비트는 VM에 할당된 한 세트의 페이지 테이블(게스트 페이지 테이블(447))에 의해 제공되고, 메모리(120)에 액세스하는데 사용되는 물리적 어드레스는 하이퍼바이저에 할당된 다른 세트의 페이지 테이블(호스트 페이지 테이블(449))에 의해 제공된다.
도 5는 일부 실시예에 따라, 도 1의 프로세서(102)의 캐시(108)를 도시한다. 캐시(108)는 캐시 컨트롤러(572), CVM 태그 레지스터(573), 및 저장 어레이(575)를 포함한다. 저장 어레이(575)는 엔트리용 데이터를 저장하기 위한 데이터 필드와, 데이터 필드에서 저장되는 정보에 대한 액세스를 허가받은 VM에 대응하는 VM 태그 값을 표시하는 VM 태그 필드와, 정보가 암호 보호용으로 지정되어 있는지 여부를 표시하는 C-비트를 저장하기 위한 C-비트 엔트리를 포함하는, 복수의 엔트리(가령, 엔트리(578))를 포함한다. CVM 태그 레지스터(473)는 프로세서(102)에서 현재 실행 중인 VM에 대한 VM 태그 값을 저장한다. 일부 실시예에서, 각각의 프로세서 코어(104, 106)는 해당 코어에서 현재 실행 중인 VM에 대한 VM 태그 값을 표시하는 개별 CVM 태그 레지스터를 포함한다. 일부 실시예에서, 이 값은 VM의 실행을 시작할 때 프로세서 코어에 의해 설정된다.
저장 어레이(575)의 엔트리에 저장되는 데이터는, 심지어 암호 보호용으로 지정된 데이터가, 저장 어레이(575)에 저장 이전에, 암호화 모듈(115)에서 해역되었을 때, 암호화되지 않는다. 따라서, 캐시 컨트롤러(572)는 암호 보호용으로 지정된 데이터가 비인가 실체에 의해 액세스되지 않음을 보장하기 위해 저장 어레이(575)에서 데이터에 대한 액세스를 제어한다. 특히, 메모리 액세스 요청의 수신에 응답하여, 캐시 컨트롤러(572)는 저장 어레이(575)에서의 엔트리들 중 하나가 메모리 액세스 요청에 의해 표적화된 정보를 저장하는지 여부를, 메모리 액세스 요청으로부터 도출되는 어드레스 태그값에 기초하여, 식별한다. 그렇지 않을 경우, 캐시 컨트롤러(572)는 캐시 미스를 표시하고, 정보 불러오기를 위해 노스브리지(110)에 메모리 액세스 요청을 제공한다.
저장 어레이(575)가 메모리 액세스 요청에 의해 표적화된 정보를 저장하는 엔트리를 포함하지 않을 경우, 캐시 컨트롤러(572)는 엔트리의 C-비트가 어서트된 상태(asserted state)에 있는지 여부를 결정한다. 그렇지 않을 경우, 정보는 암호 보호용으로 지정되어 있지 않다. 따라서, 캐시 컨트롤러(572)는 캐시 히트를 표시하고, (기록 요청의 경우에) 정보를 엔트리에 기록함으로써, 또는, (판독 요청의 경우에) 엔트리의 데이터 필드에서 정보를 불러와 제공함으로써, 메모리 액세스 요청을 충족시킨다. C-비트가 어서트된 상태(asserted state)에 있을 때, 정보는 암호 보호용으로 지정되어 있다. 따라서, 캐시 컨트롤러(572)는 엔트리의 VM 태그 필드에서의 VM 태그 값을, CMV ID 값 레지스터(573)에 저장된 VM 태그 값에 비교한다. 값들의 일치는 프로세서(102)에서 현재 실행 중인 VM이 엔트리에서 정보 액세스를 인가받은 VM임을 표시한다. 따라서, 일치에 응답하여, 캐시 컨트롤러(572)는 캐시 히트를 표시하고, 메모리 액세스 요청을 충족시킨다. VM 태그 값들 간의 불일치에 응답하여, 캐시 컨트롤러(572)는 캐시 미스를 표시하고, 요청을 충족시키지 않는다. 따라서, 현재-실행 중인 VM이 암호 보호용으로 지정된 정보에 대한 액세스를 인가받지 못할 경우, 캐시 컨트롤러(572)는 액세스를 금지한다. 이로써, 저장 어레이(575)는 정보를 비인가 액세스로부터 여전히 분리시키면서도 서로 다른 VM에 대해 정보를 동시에 저장할 수 있다. 일부 실시예에서, 캐시 컨트롤러(572)는 현재 실행 중인 VM이 정보 액세스 인가를 받지 않았음을 식별함에 응답하여, 보안 모듈(130)에 알리는 등의, 추가적인 액션을 취할 수 있고, 이는 결국 시도된 보안 틈새를 감시 실체에 알릴 수 있다.
도 6은 일부 실시예에 따라 도 1의 프로세서(102)의 캐시(108)를 도시하며, 캐시(108)에서 캐시 히트를 식별하기 위해 이용되는 TLB(676)에 VM 태그 값들이 저장된다. TLB(676)는 저장 어레이(675)의 엔트리에 대응하는 각각의 엔트리를 가진 복수의 엔트리(가령, 678))를 포함한다. TLB(676)의 각각의 엔트리는 저장 어레이(675)의 대응 엔트리의 물리적 어드레스와, 물리적 어드레스에 할당된 가상 어드레스와, 저장 어레이(675)의 엔트리에 저장되는 정보에 대한 액세스를 인가받은 VM을 표시하는 VM 태그 값과, 정보가 암호 보호용으로 지정되었는지 여부를 표시하기 위한 C-비트 값을 저장한다.
메모리 액세스 요청의 수신에 응답하여, 어드레스 변환 모듈(345)은 TLB(676)의 각각의 엔트리가 메모리 액세스 요청의 가상 어드레스와 일치하는 가상 어드레스를 저장하는지 여부를 식별한다. 그렇지 않을 경우, 어드레스 변환 모듈(345)은 페이지 테이블 워크를 수행하여, 가상 어드레스에 대한 시스템 물리적 어드레스를 식별하고, 이러한 정보를 가진 새 TLB 엔트리를 생성한다. 메모리 액세스 요청에 의해 표적화된 정보를 저장하는 엔트리를 TLB(676)가 포함하면, 캐시 컨트롤러(572)는 저장 어레이(575)가 C-비트 값, 시스템 물리적 어드레스, 및 VM 태그 값을 위한 대응하는 일치 값들을 저장하는 엔트리를 포함하는지 여부를 식별한다. 그러하다면, 캐시 컨트롤러(572)는 캐시 히트를 표시하고, 캐시(108)에서 메모리 액세스 요청을 충족시킨다. 저장 어레이(575)가 이러한 엔트리를 포함하지 않을 경우, 캐시 컨트롤러(572)는 캐시 미스를 표시하고, 메모리 액세스 요청을 충족하지 않는다. 캐시 컨트롤러(572)는 상위 레벨 캐시에 및/또는 노스브리지(110)에 메모리 요청을 또한 발급하여, 요청한 정보를 불러올 수 있다.
일부 실시예에서, 저장 어레이(675)의 엔트리(가령, 캐시 라인)가 다른 정보의 저장을 위해 퇴거될 때, 캐시 컨트롤러(572)는 도 5의 엔트리(578)에서 도시되는 바와 같이, 저장된 C-비트 및 VM 태그 값과 함께, 퇴거될 정보를 노스브리지(110)에 제공한다. 이에 응답하여, 노스브리지(110)는 C-비트가 어서트된 상태(asserted state)에 있는지 여부를 식별하고, 만약 그러할 경우, 암호화 모듈(115)은 VM 태그 값에 할당된 키에 기초하여 정보를 암호화한다. 노스브리지(110)는 이 정보를 저장을 위해 메모리(120)에 제공한다. C-비트가 니게이트된 상태(negated state)에 있을 경우, 노스브리지(110)는 암호화 모듈(115)을 우회하여, 암호화되지 않은 정보를 메모리(120)에 저장을 위해 제공한다.
일부 시나리오에서, 하이퍼바이저(252)(도 2)는 메모리(120)에서 저장된 VM 정보에 액세스할 필요가 있고, 또는, 그렇지 않을 경우, 이러한 정보를 일 메모리 위치로부터 다른 위치로 이동시킬 수 있음을 보장할 필요가 있다. 그러나, 이러한 정보는 캐시(108)에서 수정되었을 수 있고, 하이퍼바이저(252)는 하이퍼바이저가 적절한 VM 태그 값을 이용할 수 없기 때문에 캐시(108)에서 이러한 정보에 액세스할 수가 없다. 메모리의 인코히어런트한 모습을 피하고, 하이퍼바이저(252)가 가장 최신 데이터의 (암호화된) 사본에 액세스할 수 있음을 보장하기 위해, 하이퍼바이저(252)는 캐시(108)의 전체 저장 어레이(675)를 플러싱(flushing)할 수 있으나, 프로세서(102)의 성능에 대해 바람직하지 않은 영향을 미칠 수 있다. 따라서, 일부 실시예에서, 프로세서 코어(104, 106)는 캐시(108)가 작동에 의해 식별되는 VM 태그 값과 어드레스 범위와 연관된 저장 어레이(575)에서 엔트리를 플러싱할 것을 요청하는 작동을 발급할 수 있다. 이에 응답하여, 캐시 컨트롤러(572)는 VM 태그 값 및 어드레스 범위에 대응하는 저장 어레이(675)에서의 임의의 엔트리를 플러싱한다. 노스브리지(110)는 메모리(120)에 플러싱된 정보를 복제하여, 어서트된 상태(asserted state)로 대응하는 C-비트를 가진 정보를 암호화한다. 따라서, 가장 최신 정보는 메모리(120)에서 하이퍼바이저(252)에 의한 액세스가 가용하다.
도 7은 암호 보호용으로 지정된 정보를 보호하도록 캐시에서 메모리 액세스 요청을 처리하는 방법(700)의 흐름도를 도시한다. 설명을 위해, 이 방법은 도 1 및 도 5에 도시되는 캐시(108)의 예시 구현예를 참조하여 설명된다. 블록(702)에서, 프로세서 코어(104, 106) 중 하나는 요청된 정보를 식별하는 가상 어드레스를 가진 메모리 액세스 요청을 발생시킨다. 블록(704)에서, 어드레스 변환 모듈(345)(도 3)은 TLB(346) 및 페이지 테이블(347)(또는 ,TLB(346), 게스트 페이지 테이블(447), 및 호스트 페이지 테이블(449))을 이용하여 가상 어드레스에 대응하는 시스템 물리적 어드레스와, 물리적 어드레스에서의 정보가 암호 보호용으로 지정되어있는지 여부를 표시하는 C-비트 값을 식별한다. 어드레스 변환 모듈(345)은 메모리 액세스 요청과 함께 시스템 물리적 어드레스 및 C-비트 값을 캐시(108)에 제공한다.
블록(706)에서, 캐시 컨트롤러(571)(도 5)는 저장 어레이(575)의 엔트리가 요청에 의해 표적화된 정보를 저장하는지 여부를, 메모리 액세스 요청과 연관된 물리적 어드레스에 기초하여, 식별한다. 그렇지 않을 경우, 방법은 블록(508)으로 진행되고, 캐시 컨트롤러(572)는 캐시 미스를 표시한다. 추가적으로, 캐시 컨트롤러(572)는 C-비트 값과 함께 물리적 어드레스 값을 포함한, 메모리 액세스 요청을, 충족을 위해, 노스브리지(110)에 제공한다. 저장 어레이(575)의 엔트리가 메모리 액세스 요청에 의해 표적화된 정보를 저장하는 경우에, 방법은 블록(710)으로 진행하여, 식별된 엔트리에 대한 C-비트가 어서트되었는지(asserted) 여부를 캐시 컨트롤러(572)가 식별한다. 그렇지 않을 경우, 식별된 엔트리에서의 정보는 암호 보호용으로 지정되어 있지 않다. 따라서, 방법은 블록(712)으로 이동하고, 캐시 컨트롤러(572)는 식별된 엔트리의 데이터 필드에 정보를 기록함으로써, 또는, 저장 어레이(575)의 식별된 엔트리로부터 정보를 불러옴으로써, 메모리 액세스 요청을 충족시킨다.
블록(710)으로 되돌아가서, 식별된 엔트리에 대한 C-비트가 설정되어 있다고 캐시 컨트롤러(572)에 의해 결정되면, 방법은 블록(714)로 이동하여, 식별된 엔트리에서의 VM 태그 값이 CVM 태그 레지스터(573)에 저장된 CVM 태그 값과 일치하는지 여부가 캐시 컨트롤러(571)에 의해 결정된다. 그러할 경우, 이는 현재 실행 중인 VM이 저장 어레이(575)의 식별된 엔트리에서의 정보에 대한 액세스를 인가받은 VM과 일치함을 표시한다. 따라서, 방법은 블록(712)으로 이동하고, 캐시 컨트롤러(572)는 식별된 엔트리의 정보를 이용하여 메모리 액세스 요청을 충족시킨다. 블록(714)에서, 식별된 엔트리의 VM 태그 값이 CVM 태그 레지스터(573)에서 저장된 CVM 태그 값과 일치하지 않는다고 캐시 컨트롤러에 의해 결정되면, 방법은 블록(716)으로 이동하고, 캐시 컨트롤러(771)는 캐시 미스를 표시한다. 캐시 컨트롤러(572)는 메모리 액세스 요청을 충족시키지 않고, 따라서, 암호 보호용으로 지정된 정보를, 비인가 액세스로부터 보호할 수 있다.
도 8은 암호 보호용으로 지정된 정보를 식별하도록 TLB를 이용하여 캐시에서 메모리 액세스 요청을 처리하는 방법(800)의 흐름도를 도시한다. 설명을 위해, 이 방법은 도 1 및 도 6에 도시되는 캐시(108)의 예시 구현예를 참조하여 설명된다. 블록(802)에서, 프로세서 코어(104, 106) 중 하나는 요청된 정보를 식별하는 가상 어드레스를 가진 메모리 액세스 요청을 발생시킨다.
블록(806)에서, TLB(676)는 메모리 액세스 요청과 연관된 가상 어드레스 및 VM 태그 값에 기초하여, 가상 어드레스 및 VM 태그 값을 위한 엔트리를 가지는지 여부를 식별한다. 그러할 경우, 방법은 아래 설명되는 블록(810)으로 진행한다. 그렇지 않을 경우, 방법은 블록(808)으로 진행되고, 어드레스 발생 유닛(345)은 테이블 워크(table walk)를 수행하여, 가상 어드레스를 위한 시스템 물리적 어드레스 및 C-비트 값을 식별한다. 추가적으로, TLB(676)는 CVM 태그 레지스터(573)로부터 VM 태그 값을 획득한다. TLB(676)는 시스템 물리적 어드레스, 가상 어드레스, VM 태그 값, 및 C-비트 값을 엔트리 중 하나에 배치한다. 방법은 블록(810)으로 진행하고, TLB(676)는 이 엔트리의 C-비트 값, 시스템 물리적 어드레스, 및 VM 태그 값을 캐시 컨트롤러(572)에 전송한다. 블록(812)에서, 캐시 컨트롤러(572)는 캐시(108)가 C-비트 값, 시스템 물리적 어드레스, 및 VM 태그 값을 위한, 대응하는 일치 값을 저장한 엔트리를 포함하는지 여부를 식별한다. 그러하다면, 방법은 블록(814)으로 진행하여, 캐시 컨트롤러(572)가 캐시 히트를 표시하고, 캐시(108)에서 메모리 액세스 요청을 충족시킨다. 블록(812)에서, 캐시(108)가 C-비트 값, VM 태그 값, 또는 물리적 어드레스 값과 일치하는 엔트리를 포함하지 않을 경우, 방법은 블록(816)으로 진행하고, 캐시 컨트롤러(572)는 캐시 미스를 표시한다. 추가적으로, 캐시 컨트롤러(572)는 VM 태그 및 C-비트 값과 함께 물리적 어드레스 값을 포함한, 메모리 액세스 요청을, 충족을 위해, 노스브리지(110)에 제공한다. 캐시 컨트롤러(572)는 메모리 액세스 요청을 충족시키지 않고, 따라서, 암호 보호용으로 지정된 정보를, 비인가 액세스로부터 보호할 수 있다.
도 9는 일부 실시예에 따라, 암호 보호용으로 지정된 정보를 보호하도록 메모리 컨트롤러에서 메모리 액세스 요청을 처리하는 방법(900)의 흐름도를 도시한다. 설명을 위해, 방법(900)은 도 1의 노스브리지(110)에서의 예시 구현예를 참조하여 설명된다. 블록(902)에서, 노스브리지(110)는 캐시(108)로부터 메모리 액세스 요청을 수신한다. 메모리 액세스 요청은 프로세서 코어(104, 106) 중 하나에 의해 발생된 요청, 또는, 퇴거 후 엔트리를 채움에 따라 캐시(108)를 대행하여 발생된 요청일 수 있다. 도 1-8을 참조하여 앞서 설명한 바와 같이, 메모리 액세스 요청이 안전 메모리 액세스 요청인지 여부를 표시하는 C-비트 값을 포함한, 메모리 액세스 요청을 위한 물리적 어드레스 값과, VM 태그 값이, 어드레스 변환 모듈(345)에 의해 앞서 식별된 바 있다.
블록(904)에서, 노스브리지(110)는 메모리 액세스 요청에 대한 C-비트가 어서트되었는지(asserted) 여부를 결정한다. 그렇지 않을 경우, 메모리 액세스 요청은 비-안전 메모리 액세스 요청이다. 따라서, 방법은 블록(906)으로 이동하고, 노스브리지(110)는 암호화 모듈을 우회하여 메모리 액세스 요청을 충족시킨다. 따라서, 기록 요청의 경우에, 노스브리지(110)는 기록 정보를 암호화하지 않아서, 메모리(120)가 암호화되지 않은 형태로 기록 정보를 저장하게 된다. 판독 요청의 경우에, 노스브리지(110)는 메모리(120)로부터 정보를 불러들여서, 정보 해역없이 캐시(108)에 제공한다. 불러들인 정보가 앞서 암호화된 경우, 이는 암호화된 형태로 의미있거나 유용하지 않을 것이다. 따라서, 악의적 실체(가령, 해킹 소프트웨어)가 비-안전 메모리 요청으로 액세스 시도함으로써 암호 보호된 정보에 대한 액세스를 실현할 수 없다.
블록(904)으로 되돌아가서, 메모리 액세스 요청에 대한 C-비트가 어서트(asserted)되었음을 노스브리지(110)가 식별하면, 메모리 액세스 요청은 안전한 메모리 액세스 요청이다. 따라서, 방법은 블록(908)으로 이동하고, 노스브리지(110)는 메모리 액세스 요청에 기초하여, 메모리 액세스 요청과 연관된 VM을 식별한다. 블록(910)에서, 노스브리지(110)는 식별된 VM에 대응하는 키(126)들 중 하나를 식별한다. 블록(912)에서, 암호화 모듈(115)은 메모리 액세스 요청 충족에 사용될 정보를 암호화 또는 해역한다. 즉, 메모리 액세스 요청이 기록 요청일 경우, 암호화 모듈(115)은 기록될 정보를 암호화한다. 메모리 액세스 요청이 판독 요청일 경우, 노스브리지(110)는 메모리(120)로부터 판독될 정보를 불러들이고, 암호화 모듈(115)은 불러들인 정보를 해역한다. 블록(914)에서, 노스브리지(110)는 (기록 요청의 경우에) 암호화된 정보 또는 (판독 요청의 경우에) 해역된 정보를 이용하여 메모리 액세스 요청을 충족시킨다.
여기서 설명되듯이, 일부 실시예에서, VM 태그(VM 태그 값으로도 불림)를 이용하여, 암호 보호용으로 지정된 정보에 액세스 권리를 가진 VM 및 현재 실행 중인 VM 모두를 식별하는데 사용된다. 일부 시나리오에서, 할당될 수 있는 VM 태그의 수는 실행될 수 있는 VM의 수보다 작다. 도 10은 일부 실시예에 따라 VM 태그 값을 할당하는 방법(1000)의 흐름도를 도시한다. 설명을 위해, 방법(1000)은 도 1 및 도 2의 프로세싱 시스템(100)에서의 예시 구현예를 참조하여 설명되며, 보안 모듈(130)은 VM 태그 값들의 생성 및 할당을 관리한다.
블록(1002)에서, 보안 모듈(130)은, 프로세서 코어(104, 106) 중 하나 이상에서 VM의 실행을 하이퍼바이저(252)가 개시하고 있음을 표시하는, VM 태그에 대한, 하이퍼바이저(252)로부터 요청을 수신한다. 하이퍼바이저(252)는 실행될 VM에 대한 식별 값(종종 VMID 값으로 불림)을 보안 모듈(130)에 제공한다. 이에 응답하여, 블록(1004)에서, 보안 모듈(130)은 VM 태그 값이 VM에게 이미 할당되었는지 여부를 식별하기 위해 할당된 VM 태그의 저장된 표에 액세스한다. 그러할 경우, 방법은 블록(1006)으로 진행되고, 보안 모듈(130)은 기할당된 VM 태그 값을 하이퍼바이저(252)에 제공한다. 따라서, VM 태그 값은 실행 중인 VM을 위한 안전 정보를 식별하기 위해, 예를 들어, 캐시(108)에서, 사용가능하다.
블록(1004)로 되돌아가서, VM 태그 값이 아직 VM에 할당되지 않은 경우, 방법은 블록(1008)으로 진행되고, 보안 모듈(130)은 모든 VM 태그 값이 이미 다른 VM에 할당되었는지 여부를 식별한다. 그렇지 않을 경우, 방법은 블록(1010)으로 진행되고, 보안 모듈(130)은 VM에 VM 태그 값을 할당하고, 할당된 VM 태그의 테이블에 VM 태그 값을 저장한다. 방법은 블록(1006)으로 진행되고, 보안 모듈(130)은 기할당된 VM 태그 값을 하이퍼바이저(252)에 제공한다.
블록(1008)로 되돌아가서, 보안 모듈(130)이 모든 가용 VM 태그 값들이 할당되었음을 식별하면, 기할당된 VM 태그들이 실행 VM에 재할당되어야만 한다. 그러나, 이는 실행 중인 VM이 액세스 인가받지 못한 캐시(108)에서 안전 정보에 액세스할 수 있게 한다. 따라서, 방법은 블록(1012)으로 진행되고, 보안 모듈(130)은 하이퍼바이저(252)에게 캐시(108)의 플러싱을 요청하며, 따라서, 대응하는 C-비트에 의해 요구되는 바와 같이, 암호화된 형태로 또는 암호화되지 않은 형태로, 메모리(120)에 모든 정보를 기록함으로써 캐시(108)로부터 보호되는 정보를 제거할 수 있다. 블록(1014)에서, 보안 모듈(130)은 캐시(108)가 플러싱되었다는 확인을 하이퍼바이저(252)로부터 수신하고, 이에 응답하여, 보안 모듈(130)이 모든 VM 태그를 미사용으로 표시한다. 그렇지 않을 경우, 방법은 블록(1010)으로 진행되고, 보안 모듈(130)은 VM에 VM 태그 값을 할당하고, 할당된 VM 태그의 테이블에 VM 태그 값을 저장한다. 방법은 블록(1006)으로 진행되고, 보안 모듈(130)은 기할당된 VM 태그 값을 하이퍼바이저(252)에 제공한다.
일부 실시예에서, 앞서 설명된 장치 및 기술은 도 1-10을 참조하여 앞서 설명한 프로세서와 같은, (집적 회로 패키지 또는 마이크로칩으로도 불리는) 하나 이상의 집적 회로(IC) 디바이스를 포함하는 시스템에서 구현된다. 전자 설계 자동화(EDA) 및 컴퓨터 보조 설계(CAD) 소프트웨어 툴이 이러한 IC 디바이스의 설계 및 제조에 사용될 수 있다. 이러한 설계 툴은 통상적으로 하나 이상의 소프트웨어 프로그램으로 나타난다. 이러한 하나 이상의 소프트웨어 프로그램은 회로 제조를 위한 제조 시스템의 설계 또는 채택을 위한 프로세스의 적어도 일부분을 수행하도록 하나 이상의 IC 디바이스의 회로를 나타내는 코드로 작동하도록 컴퓨터 시스템을 조작하기 위한 컴퓨터 시스템에 의해 실행가능한 코드를 포함한다. 이 코드는 명령어, 데이터, 또는 명령어 및 데이터의 조합을 포함할 수 있다. 설계 툴 또는 제조 툴을 나타내는 소프트웨어 명령어는 통상적으로, 컴퓨터 시스템에 액세스가능한 컴퓨터 판독가능 저장 매체에 저장된다. 마찬가지로, IC 디바이스의 설계 또는 제조의 하나 이상의 단계를 나타내는 코드가, 동일 컴퓨터 판독가능 저장 매체에 또는 다른 컴퓨터 판독가능 저장 매체에 저장 및 액세스될 수 있다.
컴퓨터 판독가능 저장 매체는 컴퓨터 시스템에 명령어 및/또는 데이터를 제공하기 위해 사용 중 컴퓨터 시스템에 의해 액세스가능한 임의의 저장 매체, 또는, 저장 매체들의 조합을 포함할 수 있다. 이러한 저장 매체는 광학 매체(가령, 컴팩트 디스크(CD), 디지털 다용도 디스크(DVD), 블루-레이 디스크), 자기 매체(가령, 플라피 디스크, 자기 테이프, 또는, 자기 하드 드라이브), 휘발성 메모리(가령, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(가령, 읽기-전용 메모리(ROM) 또는 플래시 메모리), 또는 마이크로일렉트로미캐니컬 시스템(MEMS)- 기반 저장 매체를 포함할 수 있으나, 이에 제한되지 않는다. 컴퓨터 판독가능 저장 매체는 컴퓨팅 시스템에 내장될 수 있고(가령, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정적으로 부착될 수 있으며(가령, 자기 하드 드라이브), 컴퓨팅 시스템에 제거가능하게 부착될 수 있고(가령, 광학 디스크 또는 범용 시리얼 버스(USB-기반 플래시 메모리), 또는 무선 또는 유선망을 통해 컴퓨터 시스템에 연결될 수 있다(가령, 네트워크 액세스가능 저장 매체(NAS)).
도 11은 일부 실시예에 따른 하나 이상의 형태를 구현하는 IC 디바이스의 설계 및 제조를 위한 예시 방법(1100)을 나타내는 흐름도다. 앞서 표시한 바와 같이, 다음의 프로세스들 각각에 대해 발생되는 코드가, 대응하는 설계 툴 또는 제조 툴에 의한 액세스 및 사용을 위해 비-일시적 컴퓨터 판독가능 저장 매체에 저장 또는 그렇지 않을 경우 구현된다.
블록(1102)에서, IC 디바이스용 기능적 사양이 발생된다. (종종 마이크로아키텍처 사양(MAS)으로 불리는) 기능적 사양은 C, C++, SystemC, Simulink, 또는 MATLAB를 포함한, 다양한 프로그래밍 언어 또는 모델링 언어 중 임의의 언어에 의해 표현될 수 있다.
블록(1104)에서, 기능적 사양은 IC 디바이스의 하드웨어를 나타내는 하드웨어 설명 코드를 발생시키는데 사용된다. 일부 실시예에서, 하드웨어 설명 코드는 IC 디바이스의 회로의 전형적인 설명 및 설계를 위한 다양한 컴퓨터 언어, 규격 언어, 또는 모델링 언어 중 임의의 언어를 포함하는, 적어도 하나의 하드웨어 디스크립션 랭기지(HDL)를 이용하여 표현된다. 발생된 HDL 코드는 통상적으로 IC 디바이스의 회로의 작동, 회로의 설계 및 조직, 그리고, 시뮬레이션을 통해 IC 디바이스의 정확한 작동을 검증하기 위한 검사를 나타낸다. HDL의 예는 아날로그 HDL (AHDL), 베릴로그 HDL, 시스템베릴로그(SystemVerilog) HDL, 및 VHDL을 포함한다. 동기화된 디지털 회로를 구현하는 IC 디바이스의 경우에, 하드웨어 디스크립터 코드는 동기식 디지털 회로의 작동의 추상적 표현을 제공하도록 레지스터 트랜스퍼 레벨(RTL)을 포함할 수 있다. 다른 유형의 회로의 경우에, 하드웨어 디스크립터 코드는 회로 작동의 추상적 표현을 제공하도록 거동-레벨 코드를 포함할 수 있다. 하드웨어 디스크립션 코드에 의해 표현되는 HDL 모델은 설계 검증 통과를 위해 한번 이상 라운드의 시뮬레이션 및 디버깅을 받게 된다.
하드웨어 디스크립션 코드에 의해 표현되는 설계의 검증 후, 블록(1106)에서, 합성 툴을 이용하여 하드웨어 디스크립션 코드를 합성하여, IC 디바이스의 회로의 초기 물리적 구현을 나타내거나 형성하는 코드를 발생시킬 수 있다. 일부 실시예에서, 합성 툴은 회로 디바이스 인스턴스들 간의 연결, 또는 네트와, 회로 디바이스 인스턴스(가령, 게이트, 트랜지스터, 저항기, 커패시터, 인덕터, 다이오드, 등)를 포함하는 하나 이상의 네트리스트를 발생시킨다. 대안으로서, 네트리스트의 전부 또는 일부가 합성 툴 이용없이 수작업으로 발생될 수 있다. 하드웨어 디스크립션 코드에서처럼, 네트리스트는 하나 이상의 네트리스트의 최종 세트가 발생되기 전에 하나 이상의 검사 및 검증 프로세스를 거칠 수 있다.
대안으로서, 도식적 편집 툴을 이용하여 IC 디바이스의 회로의 도식을 초안잡을 수 있고, 그 후 도식적 캡처 툴을 이용하여 결과적인 회로도를 캡처하고, 회로도의 구성요소 및 연결성을 나타내는 (컴퓨터 판독가능 매체 상에 저장되는) 하나 이상의 네트리스트를 발생시킬 수 있다. 캡처된 회로도는 그 후, 검사 및 검증을 위한 하나 이상의 시뮬레이션 라운드를 거칠 수 있다.
블록(1108)에서, 하나 이상의 EDA 툴이 블록(1106)에서 생성된 네트리스트를 이용하여, IC 디바이스의 회로의 물리적 레이아웃을 나타내는 코드를 발생시킬 수 있다. 이 프로세스는 예를 들어, IC 디바이스의 회로의 각각의 요소의 위치를 결정 또는 고정하기 위해 네트리스트를 이용하는 배치 툴을 포함할 수 있다. 더욱이, 라우팅 툴은 네트리스트에 따라 회로 요소들을 연결하는데 필요한 와이어를 추가 및 경로설정하도록 배치 프로세스 상에 구축된다. 결과적인 코드는 IC 디바이스의 3차원 모델을 나타낸다. 코드는 예를 들어, 그래픽 데이터베이스 시스템 II(GDSII) 포맷과 같은, 데이터베이스 파일 포맷으로 나타날 수 있다. 이 포맷의 데이터는 통상적으로 기하학적 형상, 텍스트 라벨, 및 계층 구조 형태의 회로 레이아웃에 관한 기타 정보를 나타낸다.
블록(1110)에서, 물리적 레이아웃 코드(가령, GDSII 코드)가 제조 시설에 제공되고, 이는 물리적 레이아웃 코드를 이용하여 IC 디바이스 제조를 위한 (가령, 마스크 작업을 통한) 제조 시설의 제조 툴을 구성 또는 그렇지 않을 경우 채택할 수 있다. 즉, 물리적 레이아웃 코드는 하나 이상의 컴퓨터 시스템으로 프로그래밍될 수 있고, 이는 그 후, 전체적으로 또는 부분적으로, 제조 시설의 툴의 작동을, 또는, 그 내부에서 수행되는 제조 작동을 제어할 수 있다.
일부 실시예에서, 앞서 설명된 기술들 중 소정의 형태가 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다. 소프트웨어는 비일시적 컴퓨터 판독가능 저장 매체 상에 저장되는 또는 그렇지 않을 경우 유형으로 구현되는 한 세트 이상의 실행가능 명령어를 포함한다. 소프트웨어는 하나 이상의 프로세서에 의해 실행될 때, 앞서 설명한 기술들의 하나 이상의 형태를 수행하도록 하나 이상의 프로세서를 조작하는 명령어 및 소정의 데이터를 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체는 예를 들어, 자기 또는 광학 디스크 저장 장치, 솔리드 스테이트 저장 장치, 가령, 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM), 또는 다른 비휘발성 메모리 디바이스(들), 등을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체 상에 저장되는 실행가능 명령어는 하나 이상의 프로세서에 의해 해석되는 또는 그렇지 않을 경우 실행가능한, 소스 코드, 어셈블리 랭기지 코드, 객체 코드, 또는 다른 명령어 포맷의 형태를 취할 수 있다.
일반적 설명에서 앞서 설명된 활동 또는 요소들이 모두 요구되는 것은 아니며, 특정 활동 또는 디바이스의 일부분이 요구되지 않을 수 있으며, 설명되는 것 외에 하나 이상의 추가적인 활동이 수행될 수 있고, 또는 요소들이 포함될 수 있다. 더욱이, 활동들이 나열되는 순서가, 반드시 이들이 수행되는 순서인 것은 아니다. 또한, 구체적 실시예를 참조하여 개념들이 설명되었다. 그러나, 당 업자는 아래 청구범위에서 제시되는 본 발명의 범위로부터 벗어나지 않으면서 다양한 변형 및 변화가 이루어질 수 있음을 이해할 것이다. 따라서, 명세서 및 도면은 제한적인 측면보다는 예시적인 면으로 간주되어야 하고, 모든 이러한 변형은 본 발명의 범위 내에 포함된다.
유익한 점, 기타 장점, 및 문제점에 대한 해법들이, 구체적 실시예들을 참조하여 앞서 설명된 바 있다. 그러나, 유익한 점, 장점, 문제점에 대한 해법, 및 유익한 점, 장점, 또는 문제점에 대한 해법을 드러나게 할 수 있는 임의의 특징이, 청구범위의 일부 또는 전체의 중요한, 필수의, 또는 본질적인 특징으로 간주되어서는 안된다. 더욱이, 앞서 개시된 특정 실시예들은 예시적인 것에 불과하고, 개시되는 주제는 여기서의 가르침의 유익한 점들을 가진 당 업자에게 명백한, 다르지만 동등한 방식으로 변형 및 실시될 수 있다. 아래 청구범위에서 설명되는 것 외에, 여기서 도시되는 구조 또는 설계의 세부사항에는 어떤 제한도 없다. 따라서, 앞서 개시된 특정 실시예들은 변경 또는 변형될 수 있고, 이러한 모든 변형예들은 개시되는 본 발명의 범위 내에 있다고 간주된다. 따라서, 여기서 추구되는 보호는 아래 청구범위에서 제시되는 바와 같다.
본 발명은 첨부 도면을 참조함으로써 당 업자에게 더욱 쉽게 이해될 수 있고, 수많은 특징 및 장점들이 명백해질 것이다. 서로 다른 도면 내 동일한 도면 부호들의 이용은 유사 또는 동일한 품목을 표시한다.
도 1은 일부 실시예에 따라 정보의 안전한 분리를 위해 메모리 컨트롤러에서 암호화 모듈을 이용하는 프로세싱 시스템의 블록도다.
도 2는 일부 실시예에 따라 가상 기계의 분리를 제공하기 위한, 도 1의 프로세싱 시스템의 예시 구현예를 나타내는 블록도다.
도 3은 일부 실시예에 따라 도 1의 프로세싱 시스템에서 안전 메모리 액세스를 식별하기 위해 변환 색인 버퍼(translation lookaside buffer) 및 페이지 테이블의 이용을 나타내는 블록도다.
도 4는 일부 실시예에 따라 도 1의 프로세싱 시스템에서 안전 메모리 액세스를 식별하기 위해 게스트 및 호스트 페이지 테이블의 이용을 나타내는 블록도다.
도 5는 일부 실시예에 따라 안전 정보를 분리하기 위해 도 1의 캐시에서 저장되는 태그의 이용을 예시하는 블록도다.
도 6은 일부 실시예에 따라 안전 정보를 분리하기 위해 도 1의 캐시의 TLB에서 저장되는 태그의 이용을 예시하는 블록도다.
도 7은 일부 실시예에 따라 암호 보호를 위해 지정된 정보를 보호하기 위해 도 1의 캐시에서 메모리 액세스 요청을 처리하기 위한 방법의 흐름도다.
도 8은 일부 실시예에 따라 암호 보호를 위해 지정된 정보를 보호하기 위해 도 1의 캐시에서 메모리 액세스 요청을 처리하기 위한 방법의 흐름도다.
도 9는 일부 실시예에 따라 암호 보호를 위해 지정된 정보를 보호하기 위해 도 1의 노스브리지에서 메모리 액세스 요청을 처리하기 위한 방법의 흐름도다.
도 10은 일부 실시예에 따라 암호 보호를 실현하도록 VM 식별 값을 할당하는 방법의 흐름도다.
도 11은 일부 실시예에 따라 프로세싱 시스템의 일 구성요소의 적어도 일부분을 구현하는 집적 회로 디바이스를 설계 및 제조하기 위한 방법을 예시하는 흐름도다.
도 1-11은 안전 정보를 암호적으로 분리시키도록 프로세서의 메모리 액세스 경로 내 하드웨어 암호화 모듈을 이용함으로써 프로세싱 시스템에서 안전 정보를 보호하기 위한 기술을 나타낸다. 일부 실시예에서, 암호화 모듈은 프로세서의 메모리 컨트롤러(가령, 노스브리지)에 위치하고, 메모리 컨트롤러에 제공되는 각각의 메모리 액세스는 액세스가 안전한 메모리 액세스인지 여부를 표시하여, 메모리 액세스와 연관된 정보가 암호 보호용 또는 안전하지 않은 메모리 액세스용으로 지정되었는지를 표시할 수 있다. 안전 메모리 액세스를 위해, 암호화 모듈은 메모리 액세스와 관련된 데이터의 암호화(기록 액세스용) 또는 해역(판독 액세스용)을 수행한다. 암호화가 프로세스의 메모리 액세스 경로 내 하드웨어에 의해 이루어지기 때문에, 메모리에 저장된 데이터는 정확한 암호화/해역 키없이 의미있게 액세스가능하지 않다.
일부 실시예에서, 프로세서가 프로세싱 시스템에서 이용되어, 서로 다른 가상 기계(VM)를 실행할 수 있고, VM과 프로세싱 시스템의 하드웨어(메모리 포함) 간에 인터페이스를 제공하도록 하이퍼바이저를 또한 실행할 수 있다. VM이 개별 사용자(가령, 서로 다른 고객)에 의해 실행될 수 있기 때문에, 하나의 VM이 다른 VM에 의해 이용되는 정보(명령어 및 데이터)에 액세스할 수 있도록 VM이 서로로부터 분리되는 것이 바람직할 수 있다. 관례적으로, 하이퍼바이저는 사적 용도를 위해 프로세싱 시스템의 메모리 및 기타 리소스의 전용부를 각각의 VM에 할당함으로써, VM을 분리시키는 데 사용되고 있다. 그러나, 하이퍼바이저 내 버그, 또는, 활용을 위한 차량으로 작용하도록 악의적으로 변형된 하이퍼바이저에 의해, 하이퍼바이저 또는 주어진 VM이 다른 VM의 정보를 검사할 수 있고, 심지어 변경할 수 있다. 여기서 설명되는 기술을 이용하여, 메모리 컨트롤러의 암호화 모듈은 하이퍼바이저에 의한, 또는, 다른 VM 실행에 의한, 액세스로부터 각각의 VM의 정보를 암호적으로 보호하는데 이용된다. 암호 보호가 (실행 하이퍼바이저 "아래의") 프로세서의 메모리 액세스 경로 내 하드웨어에서 구현되기 때문에, 하이퍼바이저 내 버그, 또는, 악성 하이퍼바이저는, 이해될 수 없거나 의미있게 해석될 수 없는 암호화된 데이터에게만 액세스를 제공할 것이다.
예를 들어, 일부 실시예에서, 암호화 모듈은 프로세서에 의해 실행되는 각각의 VM에 대한 고유 키를 저장한다. 일부 시나리오에서, VM에 대한 키는 프로세싱 시스템의 프로세서 코어로부터 분리된 보안 모듈에 의해 발생될 수 있고, 하이퍼바이저를 포함한, 프로세서 코어에서 실행되는 소프트웨어가 키에 액세스할 수 없다. 메모리 컨트롤러에서 메모리 액세스 요청을 수신함에 응답하여, 암호화 모듈은 요청을 생성한 VM을 식별하고, 요청 VM의 대응 키를 이용하여 요청과 연관된 데이터를 암호화 또는 해역한다. 따라서 데이터는 하이퍼바이저에 의한 또는 다른 VM에 의한 액세스로부터 암호적으로 보호된다. 비인가 VM이 (가령, 하이퍼바이저 내 버그를 활용함으로써) 다른 VM에 할당된 메모리 위치에 저장된 데이터를 불러와야할 경우에도, 데이터 자체가 암호화될 것이고, 따라서, 비인가 VM에게 무의미할 것이다.
일부 실시예에서, 여기서 설명되는 기술은 물리적으로 안전하지 않은 환경에 이용되는 프로세싱 시스템에서 구현되며, 프로세싱 시스템의 메모리가 비인가 물리적 액세스에 노출된다(가령, 하드웨어 메모리 모듈의 도난 또는 메모리의 물리적 프로빙). 그러나, 암호화 모듈이 암호화된 형태로 메모리에 안전 데이터를 저장하기 때문에, 안전 데이터는 비인가 물리적 액세스에 노출될 경우에도 쉽게 이용가능하지 않다.
도 1은 일부 실시예에 따라 정보의 암호 보호를 제공하는 프로세싱 시스템(100)을 도시한다. 프로세싱 시스템(100)은 프로세서(102) 및 메모리(120)를 포함한다. 프로세싱 시스템(100)은 서버, 개인용 컴퓨터, 태블릿, 셋탑박스, 게임 시스템, 등과 같은, 다양한 전자 장치 중 임의의 장치에 통합될 수 있다. 프로세서(102)는 지정된 작업을 수행하기 위해 프로세서(102)의 회로를 조작하는 명령어들의 세트(가령, 컴퓨터 프로그램)를 실행하도록 대체로 구성된다. 메모리(120)는 프로세서(102)에 의해 사용되는 데이터를 저장함으로써 이러한 작업들을 실행을 돕는다. 메모리(120)는 랜덤 액세스 메모리(RAM), 비휘발성 메모리, 가령, 플래시 메모리 또는 하드 디스크 드라이브(HDD), 등, 또는 이들의 조합일 수 있다.
명령어들의 세트를 실행하는 도중에, 프로세서(102)는 메모리(120)에 데이터를 저장하기 위한 기록 요청과, 메모리(120)로부터 데이터를 불러오기 위한 판독 요청을 포함한, 메모리 액세스 요청을 발생시킨다. 각각의 메모리 액세스 요청은 메모리 액세스 요청에 의해 표적화되는 메모리(120)에서의 위치를 표시하는 메모리 어드레스(가령, 시스템 물리적 어드레스)를 포함한다. 판독 요청에 응답하여, 메모리(120)는 판독 요청의 메모리 어드레스에 대응하는 위치에 저장된 정보(데이터 또는 명령어)를 불러들여서, 프로세서(102)에 정보를 제공한다. 판독 요청에 응답하여, 메모리(120)는 기록 요청의 메모리 어드레스에 대응하는 위치에 요청의 기록 정보를 저장한다.
프로세서(102)는 보안 모듈(130)을 포함한다. 보안 모듈(130)은 범용 프로세서, 필드 프로그래머블 게이트 어레이(FPGA), 애플리케이션 전용 집적 회로(ASIC), 프로세서 코어의 작동 모드, 또는, 프로세싱 시스템(100)을 위한 보안 작동을 수행하도록 설계 및 구성된 기타 모듈이며, 보안 작동은 프로세서(102)에서 실행될 실체(가령, 가상 기계, 컴퓨터 프로그램, 등)의 등록, 실행될 실체를 위한 보안 키의 생성 및 식별, 보안 작동을 위한 프로세싱 시스템(100)의 인증, 등을 포함한다. 일부 실시예에서, 보안 모듈(130)은 작동 실행을 허가받기 전에 안전한 등록 프로세스를 수행할 수 있고, 보안 작동만으로 제한된 작동을 가질 수 있어서, 활용당하도록 내버려둔 작동을 실행할 수가 없다. 여기서 더 설명되는 바와 같이, 보안 모듈(130)은 보안 키 생성, 프로세싱 시스템(100)에서 실행될 등록 실체의 식별, 및 이러한 암호 분리를 실현하는 기타 작동에 의해, 프로세싱 시스템(100)에서의 정보의 암호 분리를 지원한다.
명령어의 실행을 돕기 위해, 프로세서(102)는 프로세서 코어(104, 106), 캐시(105, 107, 108), 노스브리지(110), 및 보안 모드 레지스터(121)를 포함한다. 프로세서 코어(104, 106)는 명령어를 개별적으로 그리고 동시적으로 실행하는 프로세싱 유닛이다. 일부 실시예에서, 각각의 프로세서 코어(104, 106)는 개별 명령어 파이프라인을 포함하며, 이러한 파이프라인은 명령어를 인출하고, 인출된 명령어를 대응하는 작동으로 디코딩하며, 프로세싱 시스템(100)의 리소스를 이용하여, 메모리 액세스 요청을 포함한, 작동들을 실행한다. 각각의 프로세서 코어(104, 106)는 각각의 메모리 요청을 두 유형 중 하나 - 메모리 액세스 요청에 대응하는 정보가 암호 보호용으로 지정되었음을 표시하는 안전 메모리 액세스 요청, 또는, 메모리 액세스 요청에 대응하는 정보가 암호 보호용으로 지정된 것이 아닌 비-안전 메모리 액세스 요청 - 로 식별하도록 구성된다.
일부 실시예에서, 프로세싱 시스템(100)은 정보가 메모리(120)에서 저장되는 장소에 대응하는, 또는, 정보의 유형(가령, 명령어 또는 데이터)에 대응하는, 메모리 어드레스와 함께 포함되는 제어 비트에 기초하여 정보에 대한 보안 지정(정보가 암호 보호되는지 여부)을 할당하는 보안 기법을 구현한다. 이로써, 데이터의 집합들이 안전한 정보로 쉽게 분류될 수 있어서, 효율적인 정보 보호를 제공하게 된다. 예를 들어, 일부 실시예에서, 제어 비트는, 메모리(120)의 물리적 어드레스에 대한 가상 어드레스의 매핑을 제공하는 페이지 테이블 정보 또는 명령어 정보와 같은 특정 유형의 정보가 안전 정보로 지정되도록, 따라서, 아래 더 설명되는 바와 같이, 이 정보를 암호 보호하도록, 프로세싱 시스템(100)에 의해 설정된다. 데이터에 할당된 제어 비트는 예를 들어, 프로세서(102)에서 실행되는 프로그램에 의해 요청되는 지정에 기초하여 더 정밀한 입도로 지정될 수 있다. 이러한 보안 기법은 중요 데이터의 보호를 제공(가령, 가상 기계 또는 그 프로그램의 비인가 실행 방지)하면서도 더 일반적인 데이터에 대한 유연성을 여전히 제공할 수 있다.
일부 실시예에서, 정보에 할당된 보안 유형이 정보의 대응 메모리 어드레스에 기초하여 지정되기 때문에, 프로세싱 시스템(100)은 각각의 메모리 어드레스에 대한 보안 유형을 표시하도록 페이지 테이블 자체를 이용한다. 따라서, 도 3을 참조하여 아래에서 더 설명되듯이, 프로세서 코어(104, 106)는 메모리 액세스 요청에 대응하는 메모리 어드레스를 식별하는 과정에서 메모리 액세스 요청의 유형을 식별한다. 특히, 메모리 어드레스가 안정 전보를 저장하는 것으로 표시될 경우, 대응하는 메모리 액세스가 안전 메모리 액세스로 식별된다. 마찬가지로, 메모리 액세스가 비-안전 정보를 저장하는 것으로 표시되면, 대응하는 메모리 액세스가 비-안전 메모리 액세스로 식별된다.
캐시(105, 107, 108)는 메모리(120)에서 저장되는 정보의 서브세트를 저장하는, 그래서, 각자의 정보 서브세트에 대한 신속한 액세스를 프로세서 코어(104, 106)에 제공하는, 메모리 디바이스다. 단순화를 위해 캐시(108)가 단일 캐시로 도시되지만, 일부 실시예에서, 캐시(108)는, 프로세서(102)의 메모리 계층 구조의 서로 다른 레벨에 존재하는 서로 다른 캐시를 포함한, 복수의 캐시를 나타낼 수 있다. 캐시(108)는 메모리 액세스 요청을 수신하여, (도 1에 도시되지 않는) 저장 어레이가 메모리 액세스 요청에 의해 표적화되는 정보를 저장하는지 여부를 식별한다. 그러하다면, 캐시(108)는 캐시 히트를 표시하고, 저장 어레이에서 메모리 액세스 요청을 충족시킨다. 캐시(108)가 표적화된 정보를 저장하지 않을 경우, 캐시 미스를 표시하고, 메모리 액세스 요청을 노스브리지(110)에 제공한다.
도 1의 예시 실시예에서, 프로세싱 시스템(100)의 메모리 액세스 경로는 캐시(108)가, 암호화되지 않은 형태로, 안전 정보를 포함한, 정보를 저장하도록 구성된다. 따라서, 도 5를 참조하여 아래에서 더 설명되듯이, 일부 실시예에서, 캐시(108)는 주어진 크기의 각각의 저장 위치(가령, 캐시 라인)에 대해, 저장 위치에서 정보에 액세스하도록 인가된 특정 프로그램 또는 기타 실체(가령, VM)를 식별하는 실체 태그 정보를 저장한다. 저장 어레이의 일 위치에 대한 메모리 액세스에 응답하여, 캐시(108)는 메모리 액세스 요청을 발생시킨 실체의 신원을 실체 태그 정보에 비교하고, 불일치할 경우, 캐시 미스를 표시하며, 따라서, 정보에 대한 비인가 액세스를 방지할 수 있다.
노스브리지(110)는 메모리(120)와 통신하도록 프로세서(102)의 인터페이스를 제공하는 메모리 컨트롤러다. 일부 실시예에서, 노스브리지(110)는 입/출력 컨트롤러(가령, 사우스브리지 - 도시되지 않음)와 인터페이싱하는 기능, 그리고 서로 다른 프로세서 코어(가령, 프로세서 코어(104, 106) 및 기타 프로세서 코어(도시되지 않음), 가령, 그래픽 프로세싱 유닛) 간에 인터페이스를 제공하는 기능과 같은, 다른 기능들을 수행할 수 있다. 메모리 컨트롤러로서의 능력에서, 노스브리지(110)는 캐시(108)로부터 메모리 액세스 요청을 수신하고, 메모리(120)에 이 요청을 제공하는 것을 제어한다. 메모리 컨트롤러로서의 능력에서, 노스브리지(110)는 캐시(108)로부터 메모리 액세스 요청을 수신하고, 메모리(120)에 이 요청을 제공하는 것을 제어한다. 일부 실시예에서, 노스브리지(110)는 프로세싱 시스템(100)의 입/출력 디바이스(도시되지 않음)로부터 메모리 액세스 요청(가령, 직접 메모리 액세스 요청)을 수신할 수 있고, 메모리(120)로의 제공을 제어한다.
정보의 암호 분리를 제공하기 위해, 노스브리지(110)는 명시된 암호 표준에 따라, 그리고, 키(126)에 기초하여, 정보를 암호화 및 해역하도록 구성되는 암호화 모듈(115)을 포함한다. 일부 실시예에서, 암호화 모듈(115)은 고급 암호화 표준(AES: Advanced Encryption Standard) 암호화 및 해역을 이용하도록 구성되지만, 다른 실시예에서, 암호화 모듈(115)은 다른 암호화/해역 기술을 이용할 수 있다. 기록 요청 수신에 응답하여, 노스브리지(110)는 요청이 안전 메모리 액세스 요청인지 또는 비-안전 메모리 액세스 요청인지 여부를 식별한다. 기록 요청이 비-안전 메모리 액세스 요청일 경우, 노스브리지(110)는 암호화 모듈(115)을 우회하고, 기록될 정보의 암호화없이 기록 요청을 메모리(120)에 제공한다. 기록 요청이 안전 메모리 액세스 요청일 경우, 노스브리지(110)는 메모리 액세스 요청을 발생시킨 실체(가령, 프로그램, VM, 소프트웨어 서비스, 등)에 할당되는 키(126)들 중 하나를 식별한다. 일부 실시예에서, 보안 모듈(130)은 어떤 실체가 프로세서(102)에서 현재 실행되고 있는 지에 기초하여 선택될 키를 식별한다. 암호화 모듈(115)은 기록될 정보의 암호화를 위해 선택된 키를 이용하고, 암호화된 정보와 함께 기록 요청을, 저장을 위해 메모리(120)에 제공한다. 일부 실시예에서, 암호화 모듈(115)은 대응 정보의 암호화 및 해역을 위해 메모리 액세스 요청의 물리적 어드레스 및 선택된 키를 이용하고, 따라서, 블록 이동 공격을 방지한다. 일부 실시예에서, 암호화 모듈(115)은 프로세서(102)에서의 제어 비트(도시되지 않음)의 상태에 기초하여 암호화 및 해역을 위한 물리적 어드레스의 이용 여부를 식별한다. 제어 비트 상태는 보안 모듈(130)에 의해 설정될 수 있다.
판독 요청 수신에 응답하여, 노스브리지(110)는 메모리(120)에 요청을 제공하고, 이어서, 요청에 응답하여 정보를 수신한다. 노스브리지(110)가 판독 요청을 비-안전 메모리 액세스 요청을 식별할 경우, 암호화 모듈(115)을 우회하여, 암호화없이 캐시(108)에 판독 정보를 제공한다. 노스브리지(110)가 판독 요청을 안전 메모리 액세스 요청으로 식별할 경우, 판독 액세스 요청을 발생시킨 실체에 할당된 키(126)들 중 하나를 식별하고, 암호화 모듈(115)이 판독 정보를 해역한다. 노스브리지(110)는 해역된 판독 정보를 저장을 위해 캐시(108)에 제공한다. 일부 상황에서, 노스브리지(110)는 캐시(108)에 대한 정보 제공을 우회할 수 있고, 대응하는 판독 액세스 요청을 발생시킨 프로세서 코어에 해역된 판독 정보를 직접 제공한다.
일부 실시예에서, 보안 모드 레지스터(121)는 암호화 모듈(115) 작동의 제어에 이용된다. 보안 모듈 레지스터(121)는 가드-모드-온 필드(guard-mode-on field)(122) 및 가드-모드-액티브 필드(guard-mode-active field)(123)를 포함한다. 가드-모드-온 필드가 명시된 상태(가령, 니게이트된 상태(negated state))에 있음에 응답하여, 노스브리지(110)는, 안전 메모리 액세스 요청을 포함한, 모든 메모리 액세스 요청에 대해 암호화 모듈(115)을 우회한다. 이로써 프로세싱 시스템(100)이, 프로세서(102)에서 실행되는 모든 프로그램에 대해 암호화 및 해역이 우회되는 모드로 작동할 수 있다.
가드-모드-온 필드가 다른 명시된 상태(가령, 어서트된 상태(asserted state))에 있음에 응답하여, 노스브리지(110)는, 가드-모드-액티브 필드의 상태를 식별한다. 가드-모드-액티브 필드가 명시된 상태(가령, 니게이트된 상태(negated state))에 있음에 응답하여, 노스브리지(110)는, (안전 메모리 액세스 요청을 포함한) 수신된 메모리 액세스 요청에 대해 암호화 모듈(115)을 우회하고, 가드-모드-액티브 필드가 다른 상태(가령, 어서트된 상태(asserted state))에 있음에 응답하여, 노스브리지는 비-안전 메모리 액세스 요청에 대해서만 암호화 모듈을 우회한다. 일부 실시예에서, 가드-모드-온 필드는 프로세서(102)에서 복수의 개별 프로그램 또는 실체(가령, VM)의 실행을 관리하는 실체(가령, 하이퍼바이저)에 의해 설정되고, 가드-모드-온 필드는 개별 프로그램 또는 실체 각각에 대해 개별적으로 설정된다. 따라서 보안 모드 레지스터는 서로 다른 입도 레벨로 암호화 모듈(115)의 이용을 제어할 수 있다.
도 2는, 일부 실시예에 따라, VM에 대한 정보의 암호 분리를 제공하기 위한 프로세싱 시스템(100)의 예시 작동을 예시한다. 도시되는 예에서, 프로세서(102)는 VM(250) 및 VM(251)을 동시에 실행할 것이다. 추가적으로, 프로세서(102)는 프로세싱 시스템(100)의 하드웨어와 VM(250, 251) 간에 인터페이스를 제공하기 위해 하이퍼바이저(252)를 실행한다. 그 실행 과정 중, VM(250, 251)은 안전 정보(225, 226)에 각각 액세스(저장 및 불러오기)할 것이다. 암호화 모듈(115)은, 안전 정보(225, 226)가 암호적으로 분리되어, 각자의 VM에 의해서만 액세스될 수 있도록 함을 보장한다.
작동시, 프로세서(102)에서의 실행을 허락받기 전에, 각각의 VM(250, 251)은 보안 모듈(130)에 등록한다. 일부 실시예에서, VM은 다음과 같이 등록된다: VM 소유자는 보안 모듈(130)과의 안전 통신 채널(도 2에 도시되지 않음)을 구축한다. 'VMID'로 지정된 식별 값과, 'VMKEY'로 지정되는 보안 키가 VM에 대해 발생된다. 이러한 발생은 보안 모듈(130)에서 또는 별도의 보안 디바이스에서 이루어질 수 있고, 안전 통신 채널을 통해 보안 모듈(130)에 전송될 수 있다. 보안 모듈(130)은 각각의 VMKEY 및 VMID 값들이 대응 VM에 대해 고유한 것임을 보장한다. VM 소유자는 대응하는 VM의 이미지를 암호화하고, 이를 하이퍼바이저(252)에 제공하며, 하이퍼바이저는 암호화된 이미지를 메모리(120)에 안전 데이터로 저장한다. 따라서, 예시 실시예에서, 안전 정보(225)는 VM(250)을 위한 VM 이미지를 포함한다.
이어서, 프로세서(102)는 VM 실행 요청을 수신한다. 요청에 응답하여, 프로세서(102)는 요청된 VM에 대한 VMID를 보안 모듈(130)에 알린다. 보안 모듈(230)은 요청받은 VM에 대한 보안 키를 VMID에 기초하여 식별하고, 보안 키를 암호화 모듈(115)에 제공한다. 도 2의 예시 실시예에서, 프로세서(102)는 VMA(250, 251)을 모두 실행하기 위한 요청을 수신하였고, 따라서, 보안 모듈(130)은 VMA(250)에 대해 키(118)를, 그리고, VMA(251)에 대해 키(119)를 암호화 모듈(115)에 제공하였다.
그 실행 과정 중, VM(250, 251)은 메모리 액세스 요청을 발생시키고, 이를 노스브리지(110)에 제공하며, 노스브리지는 요청의 메모리 어드레스와 함께 포함된 하나 이상의 비트에 기초하여, 메모리 액세스 요청이 안전 메모리 액세스 요청인지 여부를 식별한다. 그렇지 않을 경우, 노스브리지(110)는 암호화 모듈(115)을 우회하고, 암호화 또는 해역없이 메모리 액세스 요청을 충족시킨다. 메모리 액세스 요청이 안전 메모리 액세스 요청일 경우, 노스브리지(110)는 메모리 어드레스, 또는, 메모리 액세스 요청과 함께 제공되는 기타 정보에 기초하여, VM(250, 251) 중 어느 것이 메모리 액세스 요청을 발생시켰는지를 식별한다. 암호화 모듈(115)은 메모리 액세스 요청을 발생시킨 VM에 대응하는 키(118, 119) 중 하나를 선택하고, 선택된 키를 이용하여 메모리 액세스 정보(판독 데이터 또는 기록 데이터)에 대해 (기록 요청의 경우) 암호화 또는 (판독 요청의 경우) 해역을 수행한다.
앞서 설명한 바와 같이, 데이터의 암호 보호가 노스브리지(110)에서 이루어지고, 암호 보호용으로 사용되는 키가 알려져있지 않고 VM(250, 251) 및 하이퍼바이저(252)에 액세스불가능하다. 이는 하나의 VM이 다른 VM의 안전 정보에 액세스할 수 없음을 보장한다. 예를 들어, VM(251)은 안전 정보(225)(VM(250)에 대한 안전 정보)에 액세스하기 위해 메모리 액세스 요청을 발급할 수 있다. 메모리 액세스 요청이 VM(251)에 의해 발생되었기 때문에, 암호화 모듈(115)은 안전 데이터 암호화에 사용된 키(118)보다는, VM(251)에 할당된 키(119)로 요청된 안전 데이터를 해역하려 시도할 것이다. 따라서, VM(251)은 부정확한 키를 이용하여 해역되었기 때문에 해역된 데이터를 의미있게 또는 정확하게 해석할 수 없을 것이다. 따라서, VM(250)에 대한 안전 정보(225)가 VM(251)에 의한 액세스로부터 암호적으로 분리된다.
일부 실시예에서, 프로세싱 시스템(100)은 보안성 향상을 위해 키(118, 119)를 주기적으로 바꾼다. 예를 들어, 보안 모듈(130)은 재시작될 때 VM이 새 키를 가짐을 보장하기 위해, VM이 (중지가 아니라) 완전히 셧다운될 때마다 VM에 대해 새 키를 발생시킬 수 있다. 올드 키 하에 메모리(120)에 저장된 VM 안전 정보에 대하여, 보안 모듈(130)은 올드 키를 이용하여 이러한 정보를 해역하도록, 그리고, 새 키를 이용하여 정보를 재-암호화하도록 노스브리지(110)에 지시할 수 있고, 따라서, VM이 재시작될 때 안전 정보에 액세스할 수 있게 된다.
일부 실시예에서, 보안 모듈(130)은 VM이 중지 상태에 들어감에 응답하여, VM에 대해 새 키를 발생시킬 수 있다. VM의 일부분(가령, 게스트 운영 체제)은 VM을 위한 암호화된 데이터를 저장하는 메모리(120)의 메모리 페이지를 식별하는 데이터 구조를 유지한다. VM이 중지 상태에 들어감에 응답하여, 보안 모듈(130)은 올드 키를 이용하여 식별된 메모리 페이지를 해역하도록, 그리고, 새 키를 이용하여 메모리 페이지를 재-암호화하도록 노스브리지(110)에 지시하며, 따라서, VM이 중지 상태를 빠져나올 때 안전 정보에 액세스가능함을 보장할 수 있다.
일부 실시예에서, 프로세싱 시스템(100)은 대응하는 서로 다른 고객을 위해 복수의 VM의 실행에 이용되지 않지만, 대신에, 단일-사용자 또는 단일-고객 환경에 사용되는 모드(설명의 목적을 위해 "네이티브 모드"로 지칭됨)로 배치될 수 있다. 이러한 시나리오에서, 노스브리지(110)에서 암호화 모듈(115)은, 프로세서(102)에서 실행되는 하나 이상의 프로그램에 의해 식별되는 바와 같이, 기밀 정보를 암호적으로 보호하는데 이용될 수 있다. 따라서 기밀 정보가 메모리(120)에서 암호화된 형태로 저장될 것이다. 메모리(120)가 비인가 방식으로(가령, 메모리(120)의 메모리 모듈의 도난을 통해) 액세스될 경우에도, 암호화된 정보는 정보 암호화에 사용된 키을 알지못하면 의미있게 해석될 수 없다. 따라서 기밀 정보는 비인가 액세스로부터 암호적으로 보호된다.
일부 실시예에서, 여기서 더 설명되는 바와 같이, ("VM 태그 값"이라 불리는) 전용 태그 값이 암호화 또는 해역을 돕고자 실행 VM에 할당된다. 이러한 태그값들 중 하나는 네이티브 모드로 사용하도록 예약될 수 있어서, 네이티브 모드의 암호화용으로 지정된 정보가, 프로세싱 시스템(100)이 다음에 VM 실행에 사용될 경우, 액세스될 수 없게 된다. 일부 실시예에서, 네이티브 모드는 프로세서(102)에서 지정된 제어 비트(도시되지 않음)에 의해 가동될 수 있고, 프로세서(102)에서 VM의 실행과 연계하여 또는 독립적으로 사용될 수 있다.
일부 실시예에서, 프로세서(102)와는 다른 디바이스가 노스브리지(110)를 이용하여 직접 메모리 액세스(DMA) 요청을 통해 메모리(120)에 액세스할 수 있다. 일부 실시예에서, 노스브리지(110)는 이러한 모든 DMA 요청을 위해 암호화 모듈(115)을 우회한다. 다른 실시예에서, 프로세싱 시스템(102)은 DMA 요청을 위해 특정 VM 태그값을 지정 또는 예비할 수 있고, 다른 VM 태그에 대응하는 안전 정보에 액세스하기 위한 DMA 요청에 의한 시도는 프로세싱 시스템(102)에서의 에러 통지 발생을 야기할 수 있다. 이는 DMA 요청이 정보의 암호 보호 우회에 사용될 수 없음을 보장한다.
도 3은 일부 실시예에 따라 메모리 액세스 요청을 위한 보안 유형(가령, 안전 또는 비-안전)을 식별할 수 있는 프로세서(102)의 일부분을 도시한다. 특히, 도 3은 어드레스 변환 모듈(345), 변환 색인 버퍼(TLB)(346), 및 페이지 테이블(347)을 도시한다. 어드레스 변환 모듈(345)은 대응하는 메모리 액세스 요청을 위한 가상 어드레스를 프로세서 코어(104, 106) 중 하나 또는 둘 모두로부터 수신하도록 대체로 구성되는 모듈이다. 어드레스 변환 모듈(345)은 각각의 수신된 가상 어드레스를, 메모리 액세스 요청에 의해 표적화되는 메모리(120)의 위치를 식별하는 대응하는 물리적 어드레스로, 변환한다.
어드레스 변환 모듈(345)은 TLB(346) 및 페이지 테이블(347) 중 하나 또는 둘 모두를 이용하여 가상 어드레스를 대응하는 물리적 어드레스로 변환한다. 페이지 테이블(347)은 가상 어드레스에 의해 인덱싱되는 복수의 엔트리(가령, 엔트리(348))를 포함한다. 일부 실시예에서, 페이지 테이블(347)은 멀티-레벨 페이지 테이블이고, 따라서, 하위-레벨 페이지는 가상 어드레스와 관련된 다른 페이지를 식별하는 엔트리를 포함하고, 최고 레벨 페이지는 가상 어드레스에 할당된 물리적 어드레스를 식별한다. 물리적 어드레스는 페이지 워크(page walk) 내 페이지 테이블을 가로지름으로써 식별될 수 있고, 최저 레벨 페이지는 액세스될 다음 레벨의 페이지를 식별하기 위한 첫번째 액세스이고, 등등하여, 물리적 어드레스를 포함하는 최고 레벨 페이지 테이블이 식별되어 이러한 물리적 어드레스가 최고 레벨 페이지 테이블로부터 불러들여질 때까지 진행된다. 최고 레벨 페이지 테이블은 물리적 어드레스에 대응하는 데이터가 암호적으로 보호될 것인지 여부를 표시하는 비트("C-비트"로 지정됨)를 또한 저장한다. TLB(346)는 어드레스 변환 모듈(345)에 의해 최근에 수신한 가상 어드레스를 반영하는 페이지 테이블(347)의 엔트리들의 서브세트를 함께 저장하는 복수의 엔트리(가령, 엔트리(349))를 포함한다.
가상 어드레스의 수신에 응답하여, 어드레스 변환 모듈(345)은 가상 어드레스에 대응하는 엔트리를 포함하는지 여부를 결정하기 위해 TLB(346)에 액세스한다. 만약 그러할 경우, 어드레스 변환 모듈(345)은 물리적 어드레스에 C-비트 값을 매달고, 메모리 액세스 요청에 의해 사용될 결과적인 물리적 어드레스 값을 제공한다. 물리적 어드레스의 C-비트 부분은 메모리 액세스 요청이 안전 메모리 액세스 요청인지 여부를 식별하기 위해 노스브리지(110)에 의해 사용된다. 따라서, 예를 들어, 물리적 어드레스 값의 C-비트가 어서트된 상태(asserted state)에 있을 경우, 노스브리지(110)는 대응하는 메모리 액세스 요청을 안전 메모리 액세스 요청으로 식별하고, 암호화 모듈(115)을 이용하여 요청에 대응하는 정보를 암호화 또는 해역한다.
TLB(346)가 가상 어드레스에 대응하는 엔트리를 포함하지 않을 경우, 어드레스 변환 모듈(345)은 메모리(120)로부터 페이지 테이블(347)을 불러오고, 가상 어드레스에 대응하는 엔트리를 위해 페이지 테이블(347)의 검색(가끔 "페이지 워크"(page walk)라 불림)을 수행한다. 어드레스 변환 모듈(345)은 엔트리를 TLB(346)에 전달하고, 메모리 액세스 요청에 응답하여, C-비트를 포함한, 물리적 어드레스 값을 제공한다.
페이지 테이블(347) 및 TLB(346)가 C-비트 저장에 사용되고, 따라서, 보호되는 메모리 액세스 요청만을 식별하기 때문에, 안전 정보가 더 쉽게 그리고 안전하게 보호될 수 있다. 예를 들어, 일부 실시예에서, VM 코드에 대응하는 물리적 어드레스가, 대응하는 페이지 테이블에서의 C-비트를 어서트된 상태(asserted state)로 설정함으로써, 안전 정보로 지정될 수 있다. 이는 VM 코드 자체가 암호적으로 분리됨을 보장한다. 더욱이, VM에 대한 페이지 테이블이, 대응하는 C-비트를 어서트된 상태(asserted state)로 설정함으로써, 그 자체로 암호적으로 보호될 수 있다. 일부 실시예에서, 페이지 테이블의 C-비트는 하드웨어에 의해 무조건적으로 설정된다. 일부 실시예에서, VM 자체는 다른 실행불가능 정보에 대해 C-비트를 설정할 수 있어서, 직접 메모리 액세스를 통해 입/출력 장치에 의해 직접 액세스될 데이터와 같이, 일부 데이터를 비보호 데이터로 식별하도록 VM에게 유연성을 제공할 수 있다.
일부 실시예에서, 각각의 어드레스에 대한 물리적 어드레스 값에 추가하여 C-비트를 이용하는 것보다, 프로세싱 시스템(100)은 C-비트 값을 위해 각각의 물리적 어드레스의 기본 비트(가령, 최대 유효 비트)의 용도를 맞춘다. 프로세싱 시스템(100)은 암호적으로 보호되는 정보에 액세스하도록 허용되는 VM에 대한 VM 태그 값을 저장하기 위해 물리적 어드레스의 하나 이상의 비트의 용도를 또한 재설정할 수 있다. 물리적 어드레스 비트 용도의 재설정은 프로세싱 시스템(100)의 물리적 어드레스 공간을 제한하는 잠재적 비용에서 실리콘 면적을 절감한다. 일부 실시예에서, 프로세서(102)는 더 작은 어드레스 물리적 어드레스 공간을 수용하기 위해, 페이지 워크 중 나타날 수 있는, 물리적 어드레스에 대한 기존 점검(existing checks)을 수정할 수 있다. 예를 들어, 프로세서(102)는 정보 암호화가 가동되지 않을 때 48비트의 물리적 어드레스를 이용할 수 있고, 정보 암호화가 가동될 때 44비트의 물리적 어드레스를 이용할 수 있어서, C-비트 및 VM 태그 값을 위해 나머지 4비트의 용도를 재설정할 수 있다. 따라서, 정보 암호화가 가동될 때, 프로세서(102)는 44비트 이상의 값을 가진 물리적 어드레스를 참조하는 프로그램 또는 하드웨어 모듈에 응답하여 에러 표시를 발생시킬 수 있다.
일부 실시예에서, 프로세서(102)가 VM 또는 하이퍼바이저를 실행하는 경우에, 어드레스 변환 모듈(145)은 메모리(120)에 의해 사용될 물리적 어드레스(도 4의 설명 목적을 위해 "시스템 물리적 어드레스"라 불림) 및 C-비트의 식별을 위해 하나보다 많은 레벨의 페이지 테이블에 액세스할 수 있다. 일부 실시예에 따라 도 4에서 한 예가 도시된다. 도시되는 예에서, 어드레스 변환 모듈(145)은 수신되는 가상 어드레스에 대한 시스템 물리적 어드레스를 식별하기 위해 TLB(346), 게스트 페이지 테이블(447), 및 호스트 페이지 테이블(449)(가령, 네스티드 페이지 테이블)을 이용하도록 구성된다.
게스트 페이지 테이블(447)은 게스트 물리적 어드레스라고 불리는 한 세트의 어드레스에 대한 가상 어드레스의 매핑을 저장한다. 게스트 물리적 어드레스는 메모리(120)의 실제 물리적 어드레스가 아니라, 메모리(120)의 시스템 물리적 어드레스와 가상 어드레스 사이의 중간적 어드레스를 나타낸다. 호스트 페이지 테이블(449)은 게스트 물리적 어드레스와 대응하는 시스템 물리적 어드레스 간의 매핑을 저장한다. 따라서, 게스트 페이지 테이블(447) 및 호스트 페이지 테이블(449)은 예를 들어, VM에 의해 이용되는 어드레스 공간과, 예를 들어, 하이퍼바이저에 의해 이용되는 어드레스 공간 간의 변환 및 분리층을 실현시킨다. 도 4의 도시되는 예에서, 어드레스에 대한 C-비트가 게스트 페이지 테이블(447)에 저장되어, 특정 페이지가 암호 보호용으로 지정되어있는지 여부를 VM이 제어할 수 있게 된다. 이는 하이퍼바이저로부터 C-비트를 분리시키고, 따라서, 버그 또는 악성 하이퍼바이저에 의한 활용으로부터 암호 지정을 보호할 수 있다.
작동시, 어드레스 변환 모듈(345)은 메모리 어드레스를 위한 가상 어드레스를 수신하고, 첫번째로, TLB(346)가 가상 어드레스를 위한 시스템 물리적 어드레스를 저장하고 있는지 여부를 식별한다. 만약 그러하다면, 어드레스 변환 모듈(345)이 TLB(346)로부터 시스템 물리적 어드레스 및 대응하는 C-비트를 불러들이고, 이를 노스브리지(110)에 제공한다. TLB(346)가 시스템 물리적 어드레스를 저장하지 않을 경우, 어드레스 변환 모듈(345)은 수신된 가상 어드레스에 할당된 게스트 페이지 테이블(447)의 엔트리(가령, 엔트리(448))를 식별한다. 어드레스 변환 모듈(345)은 식별된 엔트리로부터 C-비트 값을 불러들이고, 식별된 엔트리의 게스트 물리적 어드레스를 이용하여, 호스트 페이지 테이블(449)에서 페이지 워크를 수행할 수 있다. 페이지 워크의 결과, 어드레스 변환 모듈(345)은 게스트 물리적 어드레스에 할당된 호스트 페이지 테이블(449)의 엔트리(가령, 엔트리(451))를 식별하고, 엔트리는 수신된 가상 어드레스에 대응하는 시스템 물리적 어드레스를 저장한다. 어드레스 변환 모듈(345)은 시스템 물리적 어드레스를 불러들이고, 이를, 게스트 페이지 테이블(447)의 대응하는 엔트리로부터 불러들인 C-비트와 함께, 여기서 설명되는 바와 같이, 메모리 액세스 요청의 추가적 처리를 위해, 노스브리지(110)에 제공한다. 추가적으로, 어드레스 변환 모듈(345)은 수신된 가상 어드레스에 대응하는 TLB(346)의 엔트리에 시스템 물리적 어드레스 및 C-비트를 저장한다. 따라서, 도 4의 예에서, C-비트는 VM에 할당된 한 세트의 페이지 테이블(게스트 페이지 테이블(447))에 의해 제공되고, 메모리(120)에 액세스하는데 사용되는 물리적 어드레스는 하이퍼바이저에 할당된 다른 세트의 페이지 테이블(호스트 페이지 테이블(449))에 의해 제공된다.
도 5는 일부 실시예에 따라, 도 1의 프로세서(102)의 캐시(108)를 도시한다. 캐시(108)는 캐시 컨트롤러(572), CVM 태그 레지스터(573), 및 저장 어레이(575)를 포함한다. 저장 어레이(575)는 엔트리용 데이터를 저장하기 위한 데이터 필드와, 데이터 필드에서 저장되는 정보에 대한 액세스를 허가받은 VM에 대응하는 VM 태그 값을 표시하는 VM 태그 필드와, 정보가 암호 보호용으로 지정되어 있는지 여부를 표시하는 C-비트를 저장하기 위한 C-비트 엔트리를 포함하는, 복수의 엔트리(가령, 엔트리(578))를 포함한다. CVM 태그 레지스터(473)는 프로세서(102)에서 현재 실행 중인 VM에 대한 VM 태그 값을 저장한다. 일부 실시예에서, 각각의 프로세서 코어(104, 106)는 해당 코어에서 현재 실행 중인 VM에 대한 VM 태그 값을 표시하는 개별 CVM 태그 레지스터를 포함한다. 일부 실시예에서, 이 값은 VM의 실행을 시작할 때 프로세서 코어에 의해 설정된다.
저장 어레이(575)의 엔트리에 저장되는 데이터는, 심지어 암호 보호용으로 지정된 데이터가, 저장 어레이(575)에 저장 이전에, 암호화 모듈(115)에서 해역되었을 때, 암호화되지 않는다. 따라서, 캐시 컨트롤러(572)는 암호 보호용으로 지정된 데이터가 비인가 실체에 의해 액세스되지 않음을 보장하기 위해 저장 어레이(575)에서 데이터에 대한 액세스를 제어한다. 특히, 메모리 액세스 요청의 수신에 응답하여, 캐시 컨트롤러(572)는 저장 어레이(575)에서의 엔트리들 중 하나가 메모리 액세스 요청에 의해 표적화된 정보를 저장하는지 여부를, 메모리 액세스 요청으로부터 도출되는 어드레스 태그값에 기초하여, 식별한다. 그렇지 않을 경우, 캐시 컨트롤러(572)는 캐시 미스를 표시하고, 정보 불러오기를 위해 노스브리지(110)에 메모리 액세스 요청을 제공한다.
저장 어레이(575)가 메모리 액세스 요청에 의해 표적화된 정보를 저장하는 엔트리를 포함하지 않을 경우, 캐시 컨트롤러(572)는 엔트리의 C-비트가 어서트된 상태(asserted state)에 있는지 여부를 결정한다. 그렇지 않을 경우, 정보는 암호 보호용으로 지정되어 있지 않다. 따라서, 캐시 컨트롤러(572)는 캐시 히트를 표시하고, (기록 요청의 경우에) 정보를 엔트리에 기록함으로써, 또는, (판독 요청의 경우에) 엔트리의 데이터 필드에서 정보를 불러와 제공함으로써, 메모리 액세스 요청을 충족시킨다. C-비트가 어서트된 상태(asserted state)에 있을 때, 정보는 암호 보호용으로 지정되어 있다. 따라서, 캐시 컨트롤러(572)는 엔트리의 VM 태그 필드에서의 VM 태그 값을, CMV ID 값 레지스터(573)에 저장된 VM 태그 값에 비교한다. 값들의 일치는 프로세서(102)에서 현재 실행 중인 VM이 엔트리에서 정보 액세스를 인가받은 VM임을 표시한다. 따라서, 일치에 응답하여, 캐시 컨트롤러(572)는 캐시 히트를 표시하고, 메모리 액세스 요청을 충족시킨다. VM 태그 값들 간의 불일치에 응답하여, 캐시 컨트롤러(572)는 캐시 미스를 표시하고, 요청을 충족시키지 않는다. 따라서, 현재-실행 중인 VM이 암호 보호용으로 지정된 정보에 대한 액세스를 인가받지 못할 경우, 캐시 컨트롤러(572)는 액세스를 금지한다. 이로써, 저장 어레이(575)는 정보를 비인가 액세스로부터 여전히 분리시키면서도 서로 다른 VM에 대해 정보를 동시에 저장할 수 있다. 일부 실시예에서, 캐시 컨트롤러(572)는 현재 실행 중인 VM이 정보 액세스 인가를 받지 않았음을 식별함에 응답하여, 보안 모듈(130)에 알리는 등의, 추가적인 액션을 취할 수 있고, 이는 결국 시도된 보안 틈새를 감시 실체에 알릴 수 있다.
도 6은 일부 실시예에 따라 도 1의 프로세서(102)의 캐시(108)를 도시하며, 캐시(108)에서 캐시 히트를 식별하기 위해 이용되는 TLB(676)에 VM 태그 값들이 저장된다. TLB(676)는 저장 어레이(675)의 엔트리에 대응하는 각각의 엔트리를 가진 복수의 엔트리(가령, 678))를 포함한다. TLB(676)의 각각의 엔트리는 저장 어레이(675)의 대응 엔트리의 물리적 어드레스와, 물리적 어드레스에 할당된 가상 어드레스와, 저장 어레이(675)의 엔트리에 저장되는 정보에 대한 액세스를 인가받은 VM을 표시하는 VM 태그 값과, 정보가 암호 보호용으로 지정되었는지 여부를 표시하기 위한 C-비트 값을 저장한다.
메모리 액세스 요청의 수신에 응답하여, 어드레스 변환 모듈(345)은 TLB(676)의 각각의 엔트리가 메모리 액세스 요청의 가상 어드레스와 일치하는 가상 어드레스를 저장하는지 여부를 식별한다. 그렇지 않을 경우, 어드레스 변환 모듈(345)은 페이지 테이블 워크를 수행하여, 가상 어드레스에 대한 시스템 물리적 어드레스를 식별하고, 이러한 정보를 가진 새 TLB 엔트리를 생성한다. 메모리 액세스 요청에 의해 표적화된 정보를 저장하는 엔트리를 TLB(676)가 포함하면, 캐시 컨트롤러(572)는 저장 어레이(575)가 C-비트 값, 시스템 물리적 어드레스, 및 VM 태그 값을 위한 대응하는 일치 값들을 저장하는 엔트리를 포함하는지 여부를 식별한다. 그러하다면, 캐시 컨트롤러(572)는 캐시 히트를 표시하고, 캐시(108)에서 메모리 액세스 요청을 충족시킨다. 저장 어레이(575)가 이러한 엔트리를 포함하지 않을 경우, 캐시 컨트롤러(572)는 캐시 미스를 표시하고, 메모리 액세스 요청을 충족하지 않는다. 캐시 컨트롤러(572)는 상위 레벨 캐시에 및/또는 노스브리지(110)에 메모리 요청을 또한 발급하여, 요청한 정보를 불러올 수 있다.
일부 실시예에서, 저장 어레이(675)의 엔트리(가령, 캐시 라인)가 다른 정보의 저장을 위해 퇴거될 때, 캐시 컨트롤러(572)는 도 5의 엔트리(578)에서 도시되는 바와 같이, 저장된 C-비트 및 VM 태그 값과 함께, 퇴거될 정보를 노스브리지(110)에 제공한다. 이에 응답하여, 노스브리지(110)는 C-비트가 어서트된 상태(asserted state)에 있는지 여부를 식별하고, 만약 그러할 경우, 암호화 모듈(115)은 VM 태그 값에 할당된 키에 기초하여 정보를 암호화한다. 노스브리지(110)는 이 정보를 저장을 위해 메모리(120)에 제공한다. C-비트가 니게이트된 상태(negated state)에 있을 경우, 노스브리지(110)는 암호화 모듈(115)을 우회하여, 암호화되지 않은 정보를 메모리(120)에 저장을 위해 제공한다.
일부 시나리오에서, 하이퍼바이저(252)(도 2)는 메모리(120)에서 저장된 VM 정보에 액세스할 필요가 있고, 또는, 그렇지 않을 경우, 이러한 정보를 일 메모리 위치로부터 다른 위치로 이동시킬 수 있음을 보장할 필요가 있다. 그러나, 이러한 정보는 캐시(108)에서 수정되었을 수 있고, 하이퍼바이저(252)는 하이퍼바이저가 적절한 VM 태그 값을 이용할 수 없기 때문에 캐시(108)에서 이러한 정보에 액세스할 수가 없다. 메모리의 인코히어런트한 모습을 피하고, 하이퍼바이저(252)가 가장 최신 데이터의 (암호화된) 사본에 액세스할 수 있음을 보장하기 위해, 하이퍼바이저(252)는 캐시(108)의 전체 저장 어레이(675)를 플러싱(flushing)할 수 있으나, 프로세서(102)의 성능에 대해 바람직하지 않은 영향을 미칠 수 있다. 따라서, 일부 실시예에서, 프로세서 코어(104, 106)는 캐시(108)가 작동에 의해 식별되는 VM 태그 값과 어드레스 범위와 연관된 저장 어레이(575)에서 엔트리를 플러싱할 것을 요청하는 작동을 발급할 수 있다. 이에 응답하여, 캐시 컨트롤러(572)는 VM 태그 값 및 어드레스 범위에 대응하는 저장 어레이(675)에서의 임의의 엔트리를 플러싱한다. 노스브리지(110)는 메모리(120)에 플러싱된 정보를 복제하여, 어서트된 상태(asserted state)로 대응하는 C-비트를 가진 정보를 암호화한다. 따라서, 가장 최신 정보는 메모리(120)에서 하이퍼바이저(252)에 의한 액세스가 가용하다.
도 7은 암호 보호용으로 지정된 정보를 보호하도록 캐시에서 메모리 액세스 요청을 처리하는 방법(700)의 흐름도를 도시한다. 설명을 위해, 이 방법은 도 1 및 도 5에 도시되는 캐시(108)의 예시 구현예를 참조하여 설명된다. 블록(702)에서, 프로세서 코어(104, 106) 중 하나는 요청된 정보를 식별하는 가상 어드레스를 가진 메모리 액세스 요청을 발생시킨다. 블록(704)에서, 어드레스 변환 모듈(345)(도 3)은 TLB(346) 및 페이지 테이블(347)(또는 ,TLB(346), 게스트 페이지 테이블(447), 및 호스트 페이지 테이블(449))을 이용하여 가상 어드레스에 대응하는 시스템 물리적 어드레스와, 물리적 어드레스에서의 정보가 암호 보호용으로 지정되어있는지 여부를 표시하는 C-비트 값을 식별한다. 어드레스 변환 모듈(345)은 메모리 액세스 요청과 함께 시스템 물리적 어드레스 및 C-비트 값을 캐시(108)에 제공한다.
블록(706)에서, 캐시 컨트롤러(571)(도 5)는 저장 어레이(575)의 엔트리가 요청에 의해 표적화된 정보를 저장하는지 여부를, 메모리 액세스 요청과 연관된 물리적 어드레스에 기초하여, 식별한다. 그렇지 않을 경우, 방법은 블록(508)으로 진행되고, 캐시 컨트롤러(572)는 캐시 미스를 표시한다. 추가적으로, 캐시 컨트롤러(572)는 C-비트 값과 함께 물리적 어드레스 값을 포함한, 메모리 액세스 요청을, 충족을 위해, 노스브리지(110)에 제공한다. 저장 어레이(575)의 엔트리가 메모리 액세스 요청에 의해 표적화된 정보를 저장하는 경우에, 방법은 블록(710)으로 진행하여, 식별된 엔트리에 대한 C-비트가 어서트되었는지(asserted) 여부를 캐시 컨트롤러(572)가 식별한다. 그렇지 않을 경우, 식별된 엔트리에서의 정보는 암호 보호용으로 지정되어 있지 않다. 따라서, 방법은 블록(712)으로 이동하고, 캐시 컨트롤러(572)는 식별된 엔트리의 데이터 필드에 정보를 기록함으로써, 또는, 저장 어레이(575)의 식별된 엔트리로부터 정보를 불러옴으로써, 메모리 액세스 요청을 충족시킨다.
블록(710)으로 되돌아가서, 식별된 엔트리에 대한 C-비트가 설정되어 있다고 캐시 컨트롤러(572)에 의해 결정되면, 방법은 블록(714)로 이동하여, 식별된 엔트리에서의 VM 태그 값이 CVM 태그 레지스터(573)에 저장된 CVM 태그 값과 일치하는지 여부가 캐시 컨트롤러(571)에 의해 결정된다. 그러할 경우, 이는 현재 실행 중인 VM이 저장 어레이(575)의 식별된 엔트리에서의 정보에 대한 액세스를 인가받은 VM과 일치함을 표시한다. 따라서, 방법은 블록(712)으로 이동하고, 캐시 컨트롤러(572)는 식별된 엔트리의 정보를 이용하여 메모리 액세스 요청을 충족시킨다. 블록(714)에서, 식별된 엔트리의 VM 태그 값이 CVM 태그 레지스터(573)에서 저장된 CVM 태그 값과 일치하지 않는다고 캐시 컨트롤러에 의해 결정되면, 방법은 블록(716)으로 이동하고, 캐시 컨트롤러(771)는 캐시 미스를 표시한다. 캐시 컨트롤러(572)는 메모리 액세스 요청을 충족시키지 않고, 따라서, 암호 보호용으로 지정된 정보를, 비인가 액세스로부터 보호할 수 있다.
도 8은 암호 보호용으로 지정된 정보를 식별하도록 TLB를 이용하여 캐시에서 메모리 액세스 요청을 처리하는 방법(800)의 흐름도를 도시한다. 설명을 위해, 이 방법은 도 1 및 도 6에 도시되는 캐시(108)의 예시 구현예를 참조하여 설명된다. 블록(802)에서, 프로세서 코어(104, 106) 중 하나는 요청된 정보를 식별하는 가상 어드레스를 가진 메모리 액세스 요청을 발생시킨다.
블록(806)에서, TLB(676)는 메모리 액세스 요청과 연관된 가상 어드레스 및 VM 태그 값에 기초하여, 가상 어드레스 및 VM 태그 값을 위한 엔트리를 가지는지 여부를 식별한다. 그러할 경우, 방법은 아래 설명되는 블록(810)으로 진행한다. 그렇지 않을 경우, 방법은 블록(808)으로 진행되고, 어드레스 발생 유닛(345)은 테이블 워크(table walk)를 수행하여, 가상 어드레스를 위한 시스템 물리적 어드레스 및 C-비트 값을 식별한다. 추가적으로, TLB(676)는 CVM 태그 레지스터(573)로부터 VM 태그 값을 획득한다. TLB(676)는 시스템 물리적 어드레스, 가상 어드레스, VM 태그 값, 및 C-비트 값을 엔트리 중 하나에 배치한다. 방법은 블록(810)으로 진행하고, TLB(676)는 이 엔트리의 C-비트 값, 시스템 물리적 어드레스, 및 VM 태그 값을 캐시 컨트롤러(572)에 전송한다. 블록(812)에서, 캐시 컨트롤러(572)는 캐시(108)가 C-비트 값, 시스템 물리적 어드레스, 및 VM 태그 값을 위한, 대응하는 일치 값을 저장한 엔트리를 포함하는지 여부를 식별한다. 그러하다면, 방법은 블록(814)으로 진행하여, 캐시 컨트롤러(572)가 캐시 히트를 표시하고, 캐시(108)에서 메모리 액세스 요청을 충족시킨다. 블록(812)에서, 캐시(108)가 C-비트 값, VM 태그 값, 또는 물리적 어드레스 값과 일치하는 엔트리를 포함하지 않을 경우, 방법은 블록(816)으로 진행하고, 캐시 컨트롤러(572)는 캐시 미스를 표시한다. 추가적으로, 캐시 컨트롤러(572)는 VM 태그 및 C-비트 값과 함께 물리적 어드레스 값을 포함한, 메모리 액세스 요청을, 충족을 위해, 노스브리지(110)에 제공한다. 캐시 컨트롤러(572)는 메모리 액세스 요청을 충족시키지 않고, 따라서, 암호 보호용으로 지정된 정보를, 비인가 액세스로부터 보호할 수 있다.
도 9는 일부 실시예에 따라, 암호 보호용으로 지정된 정보를 보호하도록 메모리 컨트롤러에서 메모리 액세스 요청을 처리하는 방법(900)의 흐름도를 도시한다. 설명을 위해, 방법(900)은 도 1의 노스브리지(110)에서의 예시 구현예를 참조하여 설명된다. 블록(902)에서, 노스브리지(110)는 캐시(108)로부터 메모리 액세스 요청을 수신한다. 메모리 액세스 요청은 프로세서 코어(104, 106) 중 하나에 의해 발생된 요청, 또는, 퇴거 후 엔트리를 채움에 따라 캐시(108)를 대행하여 발생된 요청일 수 있다. 도 1-8을 참조하여 앞서 설명한 바와 같이, 메모리 액세스 요청이 안전 메모리 액세스 요청인지 여부를 표시하는 C-비트 값을 포함한, 메모리 액세스 요청을 위한 물리적 어드레스 값과, VM 태그 값이, 어드레스 변환 모듈(345)에 의해 앞서 식별된 바 있다.
블록(904)에서, 노스브리지(110)는 메모리 액세스 요청에 대한 C-비트가 어서트되었는지(asserted) 여부를 결정한다. 그렇지 않을 경우, 메모리 액세스 요청은 비-안전 메모리 액세스 요청이다. 따라서, 방법은 블록(906)으로 이동하고, 노스브리지(110)는 암호화 모듈을 우회하여 메모리 액세스 요청을 충족시킨다. 따라서, 기록 요청의 경우에, 노스브리지(110)는 기록 정보를 암호화하지 않아서, 메모리(120)가 암호화되지 않은 형태로 기록 정보를 저장하게 된다. 판독 요청의 경우에, 노스브리지(110)는 메모리(120)로부터 정보를 불러들여서, 정보 해역없이 캐시(108)에 제공한다. 불러들인 정보가 앞서 암호화된 경우, 이는 암호화된 형태로 의미있거나 유용하지 않을 것이다. 따라서, 악의적 실체(가령, 해킹 소프트웨어)가 비-안전 메모리 요청으로 액세스 시도함으로써 암호 보호된 정보에 대한 액세스를 실현할 수 없다.
블록(904)으로 되돌아가서, 메모리 액세스 요청에 대한 C-비트가 어서트(asserted)되었음을 노스브리지(110)가 식별하면, 메모리 액세스 요청은 안전한 메모리 액세스 요청이다. 따라서, 방법은 블록(908)으로 이동하고, 노스브리지(110)는 메모리 액세스 요청에 기초하여, 메모리 액세스 요청과 연관된 VM을 식별한다. 블록(910)에서, 노스브리지(110)는 식별된 VM에 대응하는 키(126)들 중 하나를 식별한다. 블록(912)에서, 암호화 모듈(115)은 메모리 액세스 요청 충족에 사용될 정보를 암호화 또는 해역한다. 즉, 메모리 액세스 요청이 기록 요청일 경우, 암호화 모듈(115)은 기록될 정보를 암호화한다. 메모리 액세스 요청이 판독 요청일 경우, 노스브리지(110)는 메모리(120)로부터 판독될 정보를 불러들이고, 암호화 모듈(115)은 불러들인 정보를 해역한다. 블록(914)에서, 노스브리지(110)는 (기록 요청의 경우에) 암호화된 정보 또는 (판독 요청의 경우에) 해역된 정보를 이용하여 메모리 액세스 요청을 충족시킨다.
여기서 설명되듯이, 일부 실시예에서, VM 태그(VM 태그 값으로도 불림)를 이용하여, 암호 보호용으로 지정된 정보에 액세스 권리를 가진 VM 및 현재 실행 중인 VM 모두를 식별하는데 사용된다. 일부 시나리오에서, 할당될 수 있는 VM 태그의 수는 실행될 수 있는 VM의 수보다 작다. 도 10은 일부 실시예에 따라 VM 태그 값을 할당하는 방법(1000)의 흐름도를 도시한다. 설명을 위해, 방법(1000)은 도 1 및 도 2의 프로세싱 시스템(100)에서의 예시 구현예를 참조하여 설명되며, 보안 모듈(130)은 VM 태그 값들의 생성 및 할당을 관리한다.
블록(1002)에서, 보안 모듈(130)은, 프로세서 코어(104, 106) 중 하나 이상에서 VM의 실행을 하이퍼바이저(252)가 개시하고 있음을 표시하는, VM 태그에 대한, 하이퍼바이저(252)로부터 요청을 수신한다. 하이퍼바이저(252)는 실행될 VM에 대한 식별 값(종종 VMID 값으로 불림)을 보안 모듈(130)에 제공한다. 이에 응답하여, 블록(1004)에서, 보안 모듈(130)은 VM 태그 값이 VM에게 이미 할당되었는지 여부를 식별하기 위해 할당된 VM 태그의 저장된 표에 액세스한다. 그러할 경우, 방법은 블록(1006)으로 진행되고, 보안 모듈(130)은 기할당된 VM 태그 값을 하이퍼바이저(252)에 제공한다. 따라서, VM 태그 값은 실행 중인 VM을 위한 안전 정보를 식별하기 위해, 예를 들어, 캐시(108)에서, 사용가능하다.
블록(1004)로 되돌아가서, VM 태그 값이 아직 VM에 할당되지 않은 경우, 방법은 블록(1008)으로 진행되고, 보안 모듈(130)은 모든 VM 태그 값이 이미 다른 VM에 할당되었는지 여부를 식별한다. 그렇지 않을 경우, 방법은 블록(1010)으로 진행되고, 보안 모듈(130)은 VM에 VM 태그 값을 할당하고, 할당된 VM 태그의 테이블에 VM 태그 값을 저장한다. 방법은 블록(1006)으로 진행되고, 보안 모듈(130)은 기할당된 VM 태그 값을 하이퍼바이저(252)에 제공한다.
블록(1008)로 되돌아가서, 보안 모듈(130)이 모든 가용 VM 태그 값들이 할당되었음을 식별하면, 기할당된 VM 태그들이 실행 VM에 재할당되어야만 한다. 그러나, 이는 실행 중인 VM이 액세스 인가받지 못한 캐시(108)에서 안전 정보에 액세스할 수 있게 한다. 따라서, 방법은 블록(1012)으로 진행되고, 보안 모듈(130)은 하이퍼바이저(252)에게 캐시(108)의 플러싱을 요청하며, 따라서, 대응하는 C-비트에 의해 요구되는 바와 같이, 암호화된 형태로 또는 암호화되지 않은 형태로, 메모리(120)에 모든 정보를 기록함으로써 캐시(108)로부터 보호되는 정보를 제거할 수 있다. 블록(1014)에서, 보안 모듈(130)은 캐시(108)가 플러싱되었다는 확인을 하이퍼바이저(252)로부터 수신하고, 이에 응답하여, 보안 모듈(130)이 모든 VM 태그를 미사용으로 표시한다. 그렇지 않을 경우, 방법은 블록(1010)으로 진행되고, 보안 모듈(130)은 VM에 VM 태그 값을 할당하고, 할당된 VM 태그의 테이블에 VM 태그 값을 저장한다. 방법은 블록(1006)으로 진행되고, 보안 모듈(130)은 기할당된 VM 태그 값을 하이퍼바이저(252)에 제공한다.
일부 실시예에서, 앞서 설명된 장치 및 기술은 도 1-10을 참조하여 앞서 설명한 프로세서와 같은, (집적 회로 패키지 또는 마이크로칩으로도 불리는) 하나 이상의 집적 회로(IC) 디바이스를 포함하는 시스템에서 구현된다. 전자 설계 자동화(EDA) 및 컴퓨터 보조 설계(CAD) 소프트웨어 툴이 이러한 IC 디바이스의 설계 및 제조에 사용될 수 있다. 이러한 설계 툴은 통상적으로 하나 이상의 소프트웨어 프로그램으로 나타난다. 이러한 하나 이상의 소프트웨어 프로그램은 회로 제조를 위한 제조 시스템의 설계 또는 채택을 위한 프로세스의 적어도 일부분을 수행하도록 하나 이상의 IC 디바이스의 회로를 나타내는 코드로 작동하도록 컴퓨터 시스템을 조작하기 위한 컴퓨터 시스템에 의해 실행가능한 코드를 포함한다. 이 코드는 명령어, 데이터, 또는 명령어 및 데이터의 조합을 포함할 수 있다. 설계 툴 또는 제조 툴을 나타내는 소프트웨어 명령어는 통상적으로, 컴퓨터 시스템에 액세스가능한 컴퓨터 판독가능 저장 매체에 저장된다. 마찬가지로, IC 디바이스의 설계 또는 제조의 하나 이상의 단계를 나타내는 코드가, 동일 컴퓨터 판독가능 저장 매체에 또는 다른 컴퓨터 판독가능 저장 매체에 저장 및 액세스될 수 있다.
컴퓨터 판독가능 저장 매체는 컴퓨터 시스템에 명령어 및/또는 데이터를 제공하기 위해 사용 중 컴퓨터 시스템에 의해 액세스가능한 임의의 저장 매체, 또는, 저장 매체들의 조합을 포함할 수 있다. 이러한 저장 매체는 광학 매체(가령, 컴팩트 디스크(CD), 디지털 다용도 디스크(DVD), 블루-레이 디스크), 자기 매체(가령, 플라피 디스크, 자기 테이프, 또는, 자기 하드 드라이브), 휘발성 메모리(가령, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(가령, 읽기-전용 메모리(ROM) 또는 플래시 메모리), 또는 마이크로일렉트로미캐니컬 시스템(MEMS)- 기반 저장 매체를 포함할 수 있으나, 이에 제한되지 않는다. 컴퓨터 판독가능 저장 매체는 컴퓨팅 시스템에 내장될 수 있고(가령, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정적으로 부착될 수 있으며(가령, 자기 하드 드라이브), 컴퓨팅 시스템에 제거가능하게 부착될 수 있고(가령, 광학 디스크 또는 범용 시리얼 버스(USB-기반 플래시 메모리), 또는 무선 또는 유선망을 통해 컴퓨터 시스템에 연결될 수 있다(가령, 네트워크 액세스가능 저장 매체(NAS)).
도 11은 일부 실시예에 따른 하나 이상의 형태를 구현하는 IC 디바이스의 설계 및 제조를 위한 예시 방법(1100)을 나타내는 흐름도다. 앞서 표시한 바와 같이, 다음의 프로세스들 각각에 대해 발생되는 코드가, 대응하는 설계 툴 또는 제조 툴에 의한 액세스 및 사용을 위해 비-일시적 컴퓨터 판독가능 저장 매체에 저장 또는 그렇지 않을 경우 구현된다.
블록(1102)에서, IC 디바이스용 기능적 사양이 발생된다. (종종 마이크로아키텍처 사양(MAS)으로 불리는) 기능적 사양은 C, C++, SystemC, Simulink, 또는 MATLAB를 포함한, 다양한 프로그래밍 언어 또는 모델링 언어 중 임의의 언어에 의해 표현될 수 있다.
블록(1104)에서, 기능적 사양은 IC 디바이스의 하드웨어를 나타내는 하드웨어 설명 코드를 발생시키는데 사용된다. 일부 실시예에서, 하드웨어 설명 코드는 IC 디바이스의 회로의 전형적인 설명 및 설계를 위한 다양한 컴퓨터 언어, 규격 언어, 또는 모델링 언어 중 임의의 언어를 포함하는, 적어도 하나의 하드웨어 디스크립션 랭기지(HDL)를 이용하여 표현된다. 발생된 HDL 코드는 통상적으로 IC 디바이스의 회로의 작동, 회로의 설계 및 조직, 그리고, 시뮬레이션을 통해 IC 디바이스의 정확한 작동을 검증하기 위한 검사를 나타낸다. HDL의 예는 아날로그 HDL (AHDL), 베릴로그 HDL, 시스템베릴로그(SystemVerilog) HDL, 및 VHDL을 포함한다. 동기화된 디지털 회로를 구현하는 IC 디바이스의 경우에, 하드웨어 디스크립터 코드는 동기식 디지털 회로의 작동의 추상적 표현을 제공하도록 레지스터 트랜스퍼 레벨(RTL)을 포함할 수 있다. 다른 유형의 회로의 경우에, 하드웨어 디스크립터 코드는 회로 작동의 추상적 표현을 제공하도록 거동-레벨 코드를 포함할 수 있다. 하드웨어 디스크립션 코드에 의해 표현되는 HDL 모델은 설계 검증 통과를 위해 한번 이상 라운드의 시뮬레이션 및 디버깅을 받게 된다.
하드웨어 디스크립션 코드에 의해 표현되는 설계의 검증 후, 블록(1106)에서, 합성 툴을 이용하여 하드웨어 디스크립션 코드를 합성하여, IC 디바이스의 회로의 초기 물리적 구현을 나타내거나 형성하는 코드를 발생시킬 수 있다. 일부 실시예에서, 합성 툴은 회로 디바이스 인스턴스들 간의 연결, 또는 네트와, 회로 디바이스 인스턴스(가령, 게이트, 트랜지스터, 저항기, 커패시터, 인덕터, 다이오드, 등)를 포함하는 하나 이상의 네트리스트를 발생시킨다. 대안으로서, 네트리스트의 전부 또는 일부가 합성 툴 이용없이 수작업으로 발생될 수 있다. 하드웨어 디스크립션 코드에서처럼, 네트리스트는 하나 이상의 네트리스트의 최종 세트가 발생되기 전에 하나 이상의 검사 및 검증 프로세스를 거칠 수 있다.
대안으로서, 도식적 편집 툴을 이용하여 IC 디바이스의 회로의 도식을 초안잡을 수 있고, 그 후 도식적 캡처 툴을 이용하여 결과적인 회로도를 캡처하고, 회로도의 구성요소 및 연결성을 나타내는 (컴퓨터 판독가능 매체 상에 저장되는) 하나 이상의 네트리스트를 발생시킬 수 있다. 캡처된 회로도는 그 후, 검사 및 검증을 위한 하나 이상의 시뮬레이션 라운드를 거칠 수 있다.
블록(1108)에서, 하나 이상의 EDA 툴이 블록(1106)에서 생성된 네트리스트를 이용하여, IC 디바이스의 회로의 물리적 레이아웃을 나타내는 코드를 발생시킬 수 있다. 이 프로세스는 예를 들어, IC 디바이스의 회로의 각각의 요소의 위치를 결정 또는 고정하기 위해 네트리스트를 이용하는 배치 툴을 포함할 수 있다. 더욱이, 라우팅 툴은 네트리스트에 따라 회로 요소들을 연결하는데 필요한 와이어를 추가 및 경로설정하도록 배치 프로세스 상에 구축된다. 결과적인 코드는 IC 디바이스의 3차원 모델을 나타낸다. 코드는 예를 들어, 그래픽 데이터베이스 시스템 II(GDSII) 포맷과 같은, 데이터베이스 파일 포맷으로 나타날 수 있다. 이 포맷의 데이터는 통상적으로 기하학적 형상, 텍스트 라벨, 및 계층 구조 형태의 회로 레이아웃에 관한 기타 정보를 나타낸다.
블록(1110)에서, 물리적 레이아웃 코드(가령, GDSII 코드)가 제조 시설에 제공되고, 이는 물리적 레이아웃 코드를 이용하여 IC 디바이스 제조를 위한 (가령, 마스크 작업을 통한) 제조 시설의 제조 툴을 구성 또는 그렇지 않을 경우 채택할 수 있다. 즉, 물리적 레이아웃 코드는 하나 이상의 컴퓨터 시스템으로 프로그래밍될 수 있고, 이는 그 후, 전체적으로 또는 부분적으로, 제조 시설의 툴의 작동을, 또는, 그 내부에서 수행되는 제조 작동을 제어할 수 있다.
일부 실시예에서, 앞서 설명된 기술들 중 소정의 형태가 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다. 소프트웨어는 비일시적 컴퓨터 판독가능 저장 매체 상에 저장되는 또는 그렇지 않을 경우 유형으로 구현되는 한 세트 이상의 실행가능 명령어를 포함한다. 소프트웨어는 하나 이상의 프로세서에 의해 실행될 때, 앞서 설명한 기술들의 하나 이상의 형태를 수행하도록 하나 이상의 프로세서를 조작하는 명령어 및 소정의 데이터를 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체는 예를 들어, 자기 또는 광학 디스크 저장 장치, 솔리드 스테이트 저장 장치, 가령, 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM), 또는 다른 비휘발성 메모리 디바이스(들), 등을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체 상에 저장되는 실행가능 명령어는 하나 이상의 프로세서에 의해 해석되는 또는 그렇지 않을 경우 실행가능한, 소스 코드, 어셈블리 랭기지 코드, 객체 코드, 또는 다른 명령어 포맷의 형태를 취할 수 있다.
일반적 설명에서 앞서 설명된 활동 또는 요소들이 모두 요구되는 것은 아니며, 특정 활동 또는 디바이스의 일부분이 요구되지 않을 수 있으며, 설명되는 것 외에 하나 이상의 추가적인 활동이 수행될 수 있고, 또는 요소들이 포함될 수 있다. 더욱이, 활동들이 나열되는 순서가, 반드시 이들이 수행되는 순서인 것은 아니다. 또한, 구체적 실시예를 참조하여 개념들이 설명되었다. 그러나, 당 업자는 아래 청구범위에서 제시되는 본 발명의 범위로부터 벗어나지 않으면서 다양한 변형 및 변화가 이루어질 수 있음을 이해할 것이다. 따라서, 명세서 및 도면은 제한적인 측면보다는 예시적인 면으로 간주되어야 하고, 모든 이러한 변형은 본 발명의 범위 내에 포함된다.
유익한 점, 기타 장점, 및 문제점에 대한 해법들이, 구체적 실시예들을 참조하여 앞서 설명된 바 있다. 그러나, 유익한 점, 장점, 문제점에 대한 해법, 및 유익한 점, 장점, 또는 문제점에 대한 해법을 드러나게 할 수 있는 임의의 특징이, 청구범위의 일부 또는 전체의 중요한, 필수의, 또는 본질적인 특징으로 간주되어서는 안된다. 더욱이, 앞서 개시된 특정 실시예들은 예시적인 것에 불과하고, 개시되는 주제는 여기서의 가르침의 유익한 점들을 가진 당 업자에게 명백한, 다르지만 동등한 방식으로 변형 및 실시될 수 있다. 아래 청구범위에서 설명되는 것 외에, 여기서 도시되는 구조 또는 설계의 세부사항에는 어떤 제한도 없다. 따라서, 앞서 개시된 특정 실시예들은 변경 또는 변형될 수 있고, 이러한 모든 변형예들은 개시되는 본 발명의 범위 내에 있다고 간주된다. 따라서, 여기서 추구되는 보호는 아래 청구범위에서 제시되는 바와 같다.

Claims (20)

  1. 방법으로서,
    프로세서(102)의 메모리 컨트롤러(110)에서, 메모리에 제 1 정보를 기록하기 위한 제 1 메모리 액세스 요청을 수신하는 단계(902)와,
    상기 제 1 정보가 암호 보호용으로 지정되었음을 식별(904)함에 응답하여, 상기 메모리 컨트롤러에서 상기 제 1 정보를 암호화하는 단계(912)를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 제 1 메모리 액세스 요청의 메모리 어드레스와 함께 포함된 비트(349)에 기초하여 상기 제 1 정보가 암호 보호용으로 지정되었음을 식별하는 단계를 더 포함하는 방법.
  3. 제 2 항에 있어서,
    메모리 어드레스를 포함하는 페이지 테이블(347)에 기초하여 상기 메모리 액세스와 함께 포함된 비트를 식별하는 단계를 더 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 제 1 정보가 암호 보호용으로 지정되었음을 식별함에 응답하여, 메모리 액세스 요청을 발생시키는 가상 기계를 표시하는 가상 기계 식별자에 기초하여 키(118)를 식별하는 단계를 더 포함하며,
    상기 제 1 정보의 암호화는 상기 키에 기초한 상기 제 1 정보의 암호화를 포함하는 방법.
  5. 제 4 항에 있어서,
    상기 프로세서로부터 분리된 보안 모듈(130)로부터 상기 키를 수신하는 단계를 더 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 제 1 메모리 액세스 요청의 수신은 상기 프로세서에서 실행되는 하이퍼바이저(252)를 통해 상기 제 1 메모리 액세스 요청의 수신을 포함하는 방법.
  7. 제 1 항에 있어서,
    메모리에 제 2 정보를 기록하기 위한 제 2 메모리 액세스 요청을 상기 메모리 컨트롤러에서 수신하는 단계(902)와,
    상기 제 2 정보가 암호 보호용으로 지정되어 있지 않음을 식별(904)함에 응답하여, 상기 메모리 컨트롤러에서 상기 제 2 정보의 암호화없이, 메모리에서 저장을 위한 제 2 정보를 제공하는 단계(906)를 더 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 프로세서의 캐시에서, 상기 캐시에서 저장되는 제 2 정보를 표적화하는 제 2 메모리 액세스 요청을 수신함에 응답하여,
    상기 제 2 정보와 연관된 제 1 가상 기계를 표시하는 제 1 태그 값을 식별하는 단계(714)와,
    상기 프로세서에서 실행 중인 가상 기계를 나타내는 제 2 태그 값과 상기 제 1 태그 값 간의 일치를 식별함에 응답하여, 상기 제 2 정보에 대한 액세스를 제공하는 단계(712)를 더 포함하는 방법.
  9. 제 8 항에 있어서,
    상기 제 1 태그 값 및 상기 제 2 태그 값 간의 불일치를 식별함에 응답하여, 캐시 미스를 표시하는 단계(716)를 더 포함하는 방법.
  10. 제 1 가상 기계로부터 제 1 메모리 액세스 요청을 프로세서의 메모리 컨트롤러에서 수신(902)함에 응답하여,
    제 1 가상 기계에 할당된 제 1 키(118)를 식별하는 단계(910)와,
    상기 제 1 키에 기초하여 상기 제 1 메모리 액세스 요청과 연관된 제 1 정보를 암호화하는 단계(912)를 포함하는 방법.
  11. 제 10 항에 있어서,
    제 2 가상 기계로부터 제 2 메모리 액세스 요청을 상기 메모리 컨트롤러에서 수신함에 응답하여,
    상기 제 2 가상 기계에 할당된 제 2 키(119)를 식별하는 단계와,
    상기 제 1 키에 기초하여 상기 제 2 메모리 액세스 요청과 연관된 제 2 정보를 해역하는 단계를 더 포함하는 방법.
  12. 제 10 항에 있어서,
    프로세서의 캐시에서, 상기 캐시에 저장된 제 1 정보를 표적화하는 제 2 메모리 액세스 요청을 수신하는 단계와,
    상기 제 1 가상 기계를 표시하는 제 1 태그 값을 식별하는 단계(714)와,
    상기 제 2 메모리 액세스 요청을 발생시킨 가상 기계를 표시하는 제 2 태그 값과 상기 제 1 태그 값 간의 일치를 식별함에 응답하여 상기 제 1 정보에 대한 액세스를 제공하는 단계(712)를 더 포함하는 방법.
  13. 제 12 항에 있어서,
    상기 제 1 태그 값과 상기 제 2 태그 값 간의 불일치를 식별함에 응답하여 캐시 미스를 표시하는 단계(716)를 더 포함하는 방법.
  14. 제 10 항에 있어서,
    상기 제 1 정보의 암호화는, 상기 제 1 메모리 액세스 요청의 메모리 어드레스와 함께 포함된 비트에 기초하여 상기 제 1 정보가 암호 보호용으로 지정되었음을 식별함에 응답하여 상기 제 1 정보를 암호화하는 단계(710)를 포함하는 방법.
  15. 메모리 컨트롤러(110)와,
    제 1 메모리 액세스 요청과 연관된 제 1 정보가 암호 보호용으로 지정되었음을 표시하는 식별자에 응답하여, 상기 제 1 정보를 암호화하기 위한 암호화 모듈(115)을 포함하는 프로세서.
  16. 제 15 항에 있어서,
    상기 식별자는 상기 제 1 메모리 액세스 요청의 메모리 어드레스와 함께 포함된 비트(349)를 포함하는 프로세서.
  17. 제 16 항에 있어서,
    상기 메모리 어드레스를 포함하는 페이지 테이블에 기초하여 상기 메모리 어드레스와 함께 포함된 비트를 식별하기 위한 어드레스 발생 유닛(345)을 더 포함하는 프로세서.
  18. 제 16 항에 있어서,
    제 2 메모리 액세스 요청과 연관된 제 2 정보가 암호 보호용으로 지정되어 있지 않음을 식별함에 응답하여 상기 메모리 컨트롤러는 상기 제 2 메모리 액세스 요청을 위해 상기 암호화 모듈을 우회(906)하는 프로세서.
  19. 제 16 항에 있어서,
    캐시(108)를 더 포함하며, 상기 캐시는
    상기 캐시에 저장된 제 2 정보를 표적화하는 제 2 메모리 액세스 요청을 수신함에 응답하여,
    상기 제 2 정보와 연관된 제 1 가상 기계를 표시하는 제 1 태그 값을 식별(714)하며,
    상기 프로세서에서 실행될 가상 기계를 표시하는 제 2 태그 값과 상기 제 1 태그 값 간의 일치를 식별함에 응답하여 상기 제 2 정보에 대한 액세스를 제공(712)하는 프로세서.
  20. 제 19 항에 있어서, 상기 캐시는,
    상기 제 1 태그 값과 상기 제 2 태그 값 간의 불일치를 식별함에 응답하여 캐시 미스를 표시(716)하는 프로세서.
KR1020167024649A 2014-02-28 2015-02-27 프로세싱 시스템 내 정보의 암호 보호 KR102456084B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461946086P 2014-02-28 2014-02-28
US61/946,086 2014-02-28
PCT/US2015/017925 WO2015178987A2 (en) 2014-02-28 2015-02-27 Cryptographic protection of information in a processing system

Publications (2)

Publication Number Publication Date
KR20160125987A true KR20160125987A (ko) 2016-11-01
KR102456084B1 KR102456084B1 (ko) 2022-10-18

Family

ID=54006834

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167024649A KR102456084B1 (ko) 2014-02-28 2015-02-27 프로세싱 시스템 내 정보의 암호 보호

Country Status (6)

Country Link
US (2) US9792448B2 (ko)
EP (1) EP3111365A4 (ko)
JP (1) JP6450775B2 (ko)
KR (1) KR102456084B1 (ko)
CN (2) CN106062768B (ko)
WO (1) WO2015178987A2 (ko)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9239909B2 (en) * 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
US9792448B2 (en) 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
US10095532B2 (en) * 2014-04-28 2018-10-09 Netkine, Inc. Providing excess compute resources with virtualization
US9298647B2 (en) * 2014-08-25 2016-03-29 HGST Netherlands B.V. Method and apparatus to generate zero content over garbage data when encryption parameters are changed
US9875189B2 (en) 2015-06-12 2018-01-23 Intel Corporation Supporting secure memory intent
US9710401B2 (en) 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
US10152612B2 (en) * 2015-09-25 2018-12-11 Intel Corporation Cryptographic operations for secure page mapping in a virtual machine environment
US10664179B2 (en) 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
GB2543520B (en) 2015-10-20 2019-06-19 Advanced Risc Mach Ltd Memory access instructions
US10102151B2 (en) * 2015-11-06 2018-10-16 International Business Machines Corporation Protecting a memory from unauthorized access
US10146936B1 (en) * 2015-11-12 2018-12-04 EMC IP Holding Company LLC Intrusion detection for storage resources provisioned to containers in multi-tenant environments
WO2017127084A1 (en) 2016-01-21 2017-07-27 Hewlett-Packard Development Company, L.P. Data cryptography engine
FR3048529B1 (fr) * 2016-03-01 2018-03-23 Ingenico Group Procede de modulation d'acces a une ressource, dispositif et programme correspondant
US20170277903A1 (en) * 2016-03-22 2017-09-28 Qualcomm Incorporated Data Protection Using Virtual Resource Views
US20170277898A1 (en) * 2016-03-25 2017-09-28 Advanced Micro Devices, Inc. Key management for secure memory address spaces
US10348500B2 (en) * 2016-05-05 2019-07-09 Adventium Enterprises, Llc Key material management
US11126565B2 (en) * 2016-06-27 2021-09-21 Hewlett Packard Enterprise Development Lp Encrypted memory access using page table attributes
US10261919B2 (en) * 2016-07-08 2019-04-16 Hewlett Packard Enterprise Development Lp Selective memory encryption
US10459850B2 (en) * 2016-09-20 2019-10-29 Advanced Micro Devices, Inc. System and method for virtualized process isolation including preventing a kernel from accessing user address space
US20180081830A1 (en) * 2016-09-20 2018-03-22 Advanced Micro Devices, Inc. Hardware supervision of page tables
US10740466B1 (en) 2016-09-29 2020-08-11 Amazon Technologies, Inc. Securing interfaces of a compute node
US10176122B2 (en) * 2016-10-19 2019-01-08 Advanced Micro Devices, Inc. Direct memory access authorization in a processing system
US20180165224A1 (en) * 2016-12-12 2018-06-14 Ati Technologies Ulc Secure encrypted virtualization
US10417433B2 (en) * 2017-01-24 2019-09-17 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Encryption and decryption of data owned by a guest operating system
US10496425B2 (en) * 2017-02-21 2019-12-03 Red Hat, Inc. Systems and methods for providing processor state protections in a virtualized environment
US10404674B1 (en) * 2017-02-28 2019-09-03 Amazon Technologies, Inc. Efficient memory management in multi-tenant virtualized environment
US10474359B1 (en) 2017-02-28 2019-11-12 Amazon Technologies, Inc. Write minimization for de-allocated memory
US10901627B1 (en) 2017-02-28 2021-01-26 Amazon Technologies, Inc. Tracking persistent memory usage
US10338951B2 (en) 2017-03-01 2019-07-02 Red Hat, Inc. Virtual machine exit support by a virtual machine function
US10509733B2 (en) 2017-03-24 2019-12-17 Red Hat, Inc. Kernel same-page merging for encrypted memory
US10209917B2 (en) 2017-04-20 2019-02-19 Red Hat, Inc. Physical memory migration for secure encrypted virtual machines
US10379764B2 (en) * 2017-05-11 2019-08-13 Red Hat, Inc. Virtual machine page movement for encrypted memory
US10771439B2 (en) * 2017-06-28 2020-09-08 Microsoft Technology Licensing, Llc Shielded networks for virtual machines
US11030117B2 (en) * 2017-07-14 2021-06-08 Advanced Micro Devices, Inc. Protecting host memory from access by untrusted accelerators
US11354420B2 (en) * 2017-07-21 2022-06-07 Red Hat, Inc. Re-duplication of de-duplicated encrypted memory
US10657071B2 (en) * 2017-09-25 2020-05-19 Intel Corporation System, apparatus and method for page granular, software controlled multiple key memory encryption
US20190102324A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Cache behavior for secure memory repartitioning systems
US11281495B2 (en) 2017-10-26 2022-03-22 Advanced Micro Devices, Inc. Trusted memory zone
KR20190075363A (ko) * 2017-12-21 2019-07-01 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 모듈
US10893505B2 (en) 2018-01-23 2021-01-12 Statum Systems Inc. Enhanced pager network
US11074997B2 (en) * 2018-01-23 2021-07-27 Statum Systems Inc. Multi-modal encrypted messaging system
US10838773B2 (en) 2018-03-30 2020-11-17 Intel Corporation Techniques for dynamic resource allocation among cryptographic domains
US10871983B2 (en) * 2018-05-31 2020-12-22 Intel Corporation Process-based multi-key total memory encryption
CN110659226A (zh) * 2018-06-28 2020-01-07 晨星半导体股份有限公司 用以存取数据的方法以及相关电路
GB2576005B (en) * 2018-07-31 2020-10-07 Advanced Risc Mach Ltd Handling guard tag loss
US10838915B2 (en) * 2018-09-06 2020-11-17 International Business Machines Corporation Data-centric approach to analysis
US11829517B2 (en) * 2018-12-20 2023-11-28 Intel Corporation Method and apparatus for trust domain creation and destruction
US10838722B2 (en) * 2018-12-20 2020-11-17 Intel Corporation Restartable cache write-back and invalidation
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11347869B2 (en) * 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US10956188B2 (en) 2019-03-08 2021-03-23 International Business Machines Corporation Transparent interpretation of guest instructions in secure virtual machine environment
WO2021021949A1 (en) * 2019-07-29 2021-02-04 Intertrust Technologies Corporation Systems and methods for managing state
US11842227B2 (en) 2019-10-10 2023-12-12 Advanced Micro Devices, Inc. Hypervisor secure event handling at a processor
CN112825041A (zh) * 2019-11-21 2021-05-21 上海海思技术有限公司 一种内存隔离的装置、内存隔离方法和相关设备
US11614956B2 (en) 2019-12-06 2023-03-28 Red Hat, Inc. Multicast live migration for encrypted virtual machines
US11763008B2 (en) 2020-01-15 2023-09-19 International Business Machines Corporation Encrypting data using an encryption path and a bypass path
US11520709B2 (en) * 2020-01-15 2022-12-06 International Business Machines Corporation Memory based encryption using an encryption key based on a physical address
US11567791B2 (en) * 2020-06-26 2023-01-31 Intel Corporation Technology for moving data between virtual machines without copies
CN111949376B (zh) * 2020-08-24 2021-12-17 海光信息技术股份有限公司 虚拟机系统和用于虚拟机系统的方法
US11625479B2 (en) 2020-08-27 2023-04-11 Ventana Micro Systems Inc. Virtually-tagged data cache memory that uses translation context to make entries allocated during execution under one translation context inaccessible during execution under another translation context
US11620377B2 (en) * 2020-08-27 2023-04-04 Ventana Micro Systems Inc. Physically-tagged data cache memory that uses translation context to reduce likelihood that entries allocated during execution under one translation context are accessible during execution under another translation context
US11630723B2 (en) * 2021-01-12 2023-04-18 Qualcomm Incorporated Protected data streaming between memories
US11782127B2 (en) 2021-02-05 2023-10-10 Nxp Usa, Inc. Stop criterion for greedy target detection algorithms in radar applications using sparse phased arrays
US11567676B2 (en) 2021-04-30 2023-01-31 Nxp B.V. Inline encryption/decryption for a memory controller
NL2028534B1 (en) * 2021-06-24 2023-01-02 Technolution B V Processor for secure data processing
CN113688407A (zh) * 2021-07-30 2021-11-23 山东云海国创云计算装备产业创新中心有限公司 一种数据管理方法及相关装置
US20230083083A1 (en) * 2021-09-14 2023-03-16 International Business Machines Corporation Storing diagnostic state of secure virtual machines
US11860797B2 (en) * 2021-12-30 2024-01-02 Advanced Micro Devices, Inc. Peripheral device protocols in confidential compute architectures

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100281273A1 (en) * 2009-01-16 2010-11-04 Lee Ruby B System and Method for Processor-Based Security
US20130227303A1 (en) * 2012-02-24 2013-08-29 Google Inc. Log structured volume encryption for virtual machines

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5479630A (en) * 1991-04-03 1995-12-26 Silicon Graphics Inc. Hybrid cache having physical-cache and virtual-cache characteristics and method for accessing same
US20030053630A1 (en) 2001-09-20 2003-03-20 International Business Machines Corporation Method and system for key usage control in an embedded security system
US7246245B2 (en) * 2002-01-10 2007-07-17 Broadcom Corporation System on a chip for network storage devices
US7415708B2 (en) 2003-06-26 2008-08-19 Intel Corporation Virtual machine management using processor state information
US7305592B2 (en) 2004-06-30 2007-12-04 Intel Corporation Support for nested fault in a virtual machine environment
US7886293B2 (en) * 2004-07-07 2011-02-08 Intel Corporation Optimizing system behavior in a virtual machine environment
US20060021066A1 (en) 2004-07-26 2006-01-26 Ray Clayton Data encryption system and method
JP4795812B2 (ja) * 2006-02-22 2011-10-19 富士通セミコンダクター株式会社 セキュアプロセッサ
US8014530B2 (en) 2006-03-22 2011-09-06 Intel Corporation Method and apparatus for authenticated, recoverable key distribution with no database secrets
US20080126614A1 (en) * 2006-09-26 2008-05-29 Giap Yong Ooi Input/output (I/O) device virtualization using hardware
US8151262B2 (en) 2007-03-30 2012-04-03 Lenovo (Singapore) Pte. Ltd. System and method for reporting the trusted state of a virtual machine
JP4902460B2 (ja) * 2007-08-08 2012-03-21 キヤノン株式会社 画像処理装置、撮像装置及び画像処理方法
US8249257B2 (en) 2007-09-28 2012-08-21 Intel Corporation Virtual TPM keys rooted in a hardware TPM
JP4782871B2 (ja) * 2007-10-03 2011-09-28 富士通株式会社 デバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置
US8555081B2 (en) 2007-10-30 2013-10-08 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
CN100527098C (zh) * 2007-11-27 2009-08-12 北京大学 一种虚拟机管理器的动态内存映射方法
JP5405799B2 (ja) 2008-10-30 2014-02-05 株式会社日立製作所 仮想計算機の制御方法、仮想化プログラム及び仮想計算機システム
US20100175108A1 (en) 2009-01-02 2010-07-08 Andre Protas Method and system for securing virtual machines by restricting access in connection with a vulnerability audit
US8219990B2 (en) 2009-05-28 2012-07-10 Novell, Inc. Techniques for managing virtual machine (VM) states
CN101620547B (zh) * 2009-07-03 2012-05-30 中国人民解放军国防科学技术大学 X86计算机虚拟化的物理中断处理方法
US8612975B2 (en) 2009-07-07 2013-12-17 Advanced Micro Devices, Inc. World switch between virtual machines with selective storage of state information
US8627112B2 (en) 2010-03-30 2014-01-07 Novell, Inc. Secure virtual machine memory
US8856504B2 (en) 2010-06-07 2014-10-07 Cisco Technology, Inc. Secure virtual machine bootstrap in untrusted cloud infrastructures
JP5707760B2 (ja) * 2010-07-20 2015-04-30 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、情報処理プログラム、及びそのプログラムを記録した記録媒体
US20120054740A1 (en) 2010-08-31 2012-03-01 Microsoft Corporation Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
US20120179904A1 (en) * 2011-01-11 2012-07-12 Safenet, Inc. Remote Pre-Boot Authentication
US8375221B1 (en) 2011-07-29 2013-02-12 Microsoft Corporation Firmware-based trusted platform module for arm processor architectures and trustzone security extensions
US8788763B2 (en) 2011-10-13 2014-07-22 International Business Machines Corporation Protecting memory of a virtual guest
US8578178B2 (en) * 2011-10-27 2013-11-05 Hitachi, Ltd. Storage system and its management method
WO2013112538A1 (en) 2012-01-23 2013-08-01 Citrix Systems, Inc. Storage encryption
US8656482B1 (en) 2012-08-20 2014-02-18 Bitdefender IPR Management Ltd. Secure communication using a trusted virtual machine
CN103020535B (zh) * 2012-12-06 2016-05-04 苏州国芯科技有限公司 一种带比较功能的数据加解密系统
US9514313B2 (en) 2013-03-15 2016-12-06 Netiq Corporation Techniques for secure data extraction in a virtual or cloud environment
US9792448B2 (en) 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
US9652631B2 (en) 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access
US10193879B1 (en) 2014-05-07 2019-01-29 Cisco Technology, Inc. Method and system for software application deployment
US20180060077A1 (en) 2016-08-26 2018-03-01 Qualcomm Incorporated Trusted platform module support on reduced instruction set computing architectures

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100281273A1 (en) * 2009-01-16 2010-11-04 Lee Ruby B System and Method for Processor-Based Security
US20130227303A1 (en) * 2012-02-24 2013-08-29 Google Inc. Log structured volume encryption for virtual machines

Also Published As

Publication number Publication date
US9792448B2 (en) 2017-10-17
CN107851151A (zh) 2018-03-27
CN107851151B (zh) 2020-06-30
US10152602B2 (en) 2018-12-11
CN106062768A (zh) 2016-10-26
CN106062768B (zh) 2020-06-05
EP3111365A4 (en) 2017-11-01
JP6450775B2 (ja) 2019-01-09
JP2017517043A (ja) 2017-06-22
WO2015178987A3 (en) 2016-01-28
WO2015178987A2 (en) 2015-11-26
US20160378522A1 (en) 2016-12-29
US20150248357A1 (en) 2015-09-03
EP3111365A2 (en) 2017-01-04
KR102456084B1 (ko) 2022-10-18

Similar Documents

Publication Publication Date Title
US9792448B2 (en) Cryptographic protection of information in a processing system
JP6618658B2 (ja) 処理システムにおけるダイレクトメモリアクセス認可
CN110447032B (zh) 管理程序与虚拟机之间的存储器页转换监测
US11030117B2 (en) Protecting host memory from access by untrusted accelerators
JP6620595B2 (ja) 情報処理システム、情報処理装置、管理装置、処理プログラム、及び処理方法
US10938559B2 (en) Security key identifier remapping
US10372628B2 (en) Cross-domain security in cryptographically partitioned cloud
WO2008054456A2 (en) Hardware-facilitated secure software execution environment
CN106716435B (zh) 设备与安全处理环境之间的接口
CN107526974A (zh) 一种信息密码保护装置和方法
US20200192825A1 (en) Security for virtualized device
JP6696352B2 (ja) プログラマブルロジック装置、情報処理装置、処理方法、及び処理プログラム
JP6672341B2 (ja) 仮想マシンの状態情報の保護
US8997210B1 (en) Leveraging a peripheral device to execute a machine instruction
US20170322891A1 (en) Device and method for secure data storage
US20240054071A1 (en) Hardware mechanism to extend mktme protections to sgx data outside epc

Legal Events

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