KR20160125987A - 프로세싱 시스템 내 정보의 암호 보호 - Google Patents
프로세싱 시스템 내 정보의 암호 보호 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted 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
본 발명은 일반적으로 프로세서에 관한 것이고, 특히, 프로세서에서의 정보 보안에 관한 것이다.
여러 프로세서 응용예에서, 정보 보안 보호는 중요한 특징이다. 예를 들어, 프로세서는 인프러스트럭처 애즈 어 서비스(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은 일부 실시예에 따라 정보의 안전한 분리를 위해 메모리 컨트롤러에서 암호화 모듈을 이용하는 프로세싱 시스템의 블록도다.
도 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)
- 방법으로서,
프로세서(102)의 메모리 컨트롤러(110)에서, 메모리에 제 1 정보를 기록하기 위한 제 1 메모리 액세스 요청을 수신하는 단계(902)와,
상기 제 1 정보가 암호 보호용으로 지정되었음을 식별(904)함에 응답하여, 상기 메모리 컨트롤러에서 상기 제 1 정보를 암호화하는 단계(912)를 포함하는 방법. - 제 1 항에 있어서,
상기 제 1 메모리 액세스 요청의 메모리 어드레스와 함께 포함된 비트(349)에 기초하여 상기 제 1 정보가 암호 보호용으로 지정되었음을 식별하는 단계를 더 포함하는 방법. - 제 2 항에 있어서,
메모리 어드레스를 포함하는 페이지 테이블(347)에 기초하여 상기 메모리 액세스와 함께 포함된 비트를 식별하는 단계를 더 포함하는 방법. - 제 1 항에 있어서,
상기 제 1 정보가 암호 보호용으로 지정되었음을 식별함에 응답하여, 메모리 액세스 요청을 발생시키는 가상 기계를 표시하는 가상 기계 식별자에 기초하여 키(118)를 식별하는 단계를 더 포함하며,
상기 제 1 정보의 암호화는 상기 키에 기초한 상기 제 1 정보의 암호화를 포함하는 방법. - 제 4 항에 있어서,
상기 프로세서로부터 분리된 보안 모듈(130)로부터 상기 키를 수신하는 단계를 더 포함하는 방법. - 제 1 항에 있어서,
상기 제 1 메모리 액세스 요청의 수신은 상기 프로세서에서 실행되는 하이퍼바이저(252)를 통해 상기 제 1 메모리 액세스 요청의 수신을 포함하는 방법. - 제 1 항에 있어서,
메모리에 제 2 정보를 기록하기 위한 제 2 메모리 액세스 요청을 상기 메모리 컨트롤러에서 수신하는 단계(902)와,
상기 제 2 정보가 암호 보호용으로 지정되어 있지 않음을 식별(904)함에 응답하여, 상기 메모리 컨트롤러에서 상기 제 2 정보의 암호화없이, 메모리에서 저장을 위한 제 2 정보를 제공하는 단계(906)를 더 포함하는 방법. - 제 1 항에 있어서,
상기 프로세서의 캐시에서, 상기 캐시에서 저장되는 제 2 정보를 표적화하는 제 2 메모리 액세스 요청을 수신함에 응답하여,
상기 제 2 정보와 연관된 제 1 가상 기계를 표시하는 제 1 태그 값을 식별하는 단계(714)와,
상기 프로세서에서 실행 중인 가상 기계를 나타내는 제 2 태그 값과 상기 제 1 태그 값 간의 일치를 식별함에 응답하여, 상기 제 2 정보에 대한 액세스를 제공하는 단계(712)를 더 포함하는 방법. - 제 8 항에 있어서,
상기 제 1 태그 값 및 상기 제 2 태그 값 간의 불일치를 식별함에 응답하여, 캐시 미스를 표시하는 단계(716)를 더 포함하는 방법. - 제 1 가상 기계로부터 제 1 메모리 액세스 요청을 프로세서의 메모리 컨트롤러에서 수신(902)함에 응답하여,
제 1 가상 기계에 할당된 제 1 키(118)를 식별하는 단계(910)와,
상기 제 1 키에 기초하여 상기 제 1 메모리 액세스 요청과 연관된 제 1 정보를 암호화하는 단계(912)를 포함하는 방법. - 제 10 항에 있어서,
제 2 가상 기계로부터 제 2 메모리 액세스 요청을 상기 메모리 컨트롤러에서 수신함에 응답하여,
상기 제 2 가상 기계에 할당된 제 2 키(119)를 식별하는 단계와,
상기 제 1 키에 기초하여 상기 제 2 메모리 액세스 요청과 연관된 제 2 정보를 해역하는 단계를 더 포함하는 방법. - 제 10 항에 있어서,
프로세서의 캐시에서, 상기 캐시에 저장된 제 1 정보를 표적화하는 제 2 메모리 액세스 요청을 수신하는 단계와,
상기 제 1 가상 기계를 표시하는 제 1 태그 값을 식별하는 단계(714)와,
상기 제 2 메모리 액세스 요청을 발생시킨 가상 기계를 표시하는 제 2 태그 값과 상기 제 1 태그 값 간의 일치를 식별함에 응답하여 상기 제 1 정보에 대한 액세스를 제공하는 단계(712)를 더 포함하는 방법. - 제 12 항에 있어서,
상기 제 1 태그 값과 상기 제 2 태그 값 간의 불일치를 식별함에 응답하여 캐시 미스를 표시하는 단계(716)를 더 포함하는 방법. - 제 10 항에 있어서,
상기 제 1 정보의 암호화는, 상기 제 1 메모리 액세스 요청의 메모리 어드레스와 함께 포함된 비트에 기초하여 상기 제 1 정보가 암호 보호용으로 지정되었음을 식별함에 응답하여 상기 제 1 정보를 암호화하는 단계(710)를 포함하는 방법. - 메모리 컨트롤러(110)와,
제 1 메모리 액세스 요청과 연관된 제 1 정보가 암호 보호용으로 지정되었음을 표시하는 식별자에 응답하여, 상기 제 1 정보를 암호화하기 위한 암호화 모듈(115)을 포함하는 프로세서. - 제 15 항에 있어서,
상기 식별자는 상기 제 1 메모리 액세스 요청의 메모리 어드레스와 함께 포함된 비트(349)를 포함하는 프로세서. - 제 16 항에 있어서,
상기 메모리 어드레스를 포함하는 페이지 테이블에 기초하여 상기 메모리 어드레스와 함께 포함된 비트를 식별하기 위한 어드레스 발생 유닛(345)을 더 포함하는 프로세서. - 제 16 항에 있어서,
제 2 메모리 액세스 요청과 연관된 제 2 정보가 암호 보호용으로 지정되어 있지 않음을 식별함에 응답하여 상기 메모리 컨트롤러는 상기 제 2 메모리 액세스 요청을 위해 상기 암호화 모듈을 우회(906)하는 프로세서. - 제 16 항에 있어서,
캐시(108)를 더 포함하며, 상기 캐시는
상기 캐시에 저장된 제 2 정보를 표적화하는 제 2 메모리 액세스 요청을 수신함에 응답하여,
상기 제 2 정보와 연관된 제 1 가상 기계를 표시하는 제 1 태그 값을 식별(714)하며,
상기 프로세서에서 실행될 가상 기계를 표시하는 제 2 태그 값과 상기 제 1 태그 값 간의 일치를 식별함에 응답하여 상기 제 2 정보에 대한 액세스를 제공(712)하는 프로세서. - 제 19 항에 있어서, 상기 캐시는,
상기 제 1 태그 값과 상기 제 2 태그 값 간의 불일치를 식별함에 응답하여 캐시 미스를 표시(716)하는 프로세서.
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) | EP3111365B1 (ko) |
JP (1) | JP6450775B2 (ko) |
KR (1) | KR102456084B1 (ko) |
CN (2) | CN106062768B (ko) |
WO (1) | WO2015178987A2 (ko) |
Families Citing this family (77)
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 |
CN108496159A (zh) * | 2016-01-21 | 2018-09-04 | 惠普发展公司,有限责任合伙企业 | 数据密码引擎 |
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 |
US20180081830A1 (en) * | 2016-09-20 | 2018-03-22 | Advanced Micro Devices, Inc. | Hardware supervision of page tables |
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 |
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 |
US10474359B1 (en) | 2017-02-28 | 2019-11-12 | Amazon Technologies, Inc. | Write minimization for de-allocated memory |
US10404674B1 (en) * | 2017-02-28 | 2019-09-03 | Amazon Technologies, Inc. | Efficient memory management in multi-tenant virtualized environment |
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 |
US10838722B2 (en) * | 2018-12-20 | 2020-11-17 | Intel Corporation | Restartable cache write-back and invalidation |
US11829517B2 (en) * | 2018-12-20 | 2023-11-28 | Intel Corporation | Method and apparatus for trust domain creation and destruction |
US10956188B2 (en) * | 2019-03-08 | 2021-03-23 | International Business Machines Corporation | Transparent interpretation of guest instructions in secure virtual machine environment |
US11176054B2 (en) * | 2019-03-08 | 2021-11-16 | International Business Machines Corporation | Host virtual address space for secure interface control storage |
US11403409B2 (en) | 2019-03-08 | 2022-08-02 | International Business Machines Corporation | Program interruptions for page importing/exporting |
US11068310B2 (en) | 2019-03-08 | 2021-07-20 | International Business Machines Corporation | Secure storage query and donation |
US11455398B2 (en) | 2019-03-08 | 2022-09-27 | International Business Machines Corporation | Testing storage protection hardware in a secure virtual machine environment |
US11283800B2 (en) | 2019-03-08 | 2022-03-22 | International Business Machines Corporation | Secure interface control secure storage hardware tagging |
US11182192B2 (en) | 2019-03-08 | 2021-11-23 | International Business Machines Corporation | Controlling access to secure storage of a virtual machine |
US11347869B2 (en) | 2019-03-08 | 2022-05-31 | International Business Machines Corporation | Secure interface control high-level page management |
US11206128B2 (en) | 2019-03-08 | 2021-12-21 | International Business Machines Corporation | Secure paging with page change detection |
EP4004773B1 (en) * | 2019-07-29 | 2023-09-06 | 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 | 海光信息技术股份有限公司 | 虚拟机系统和用于虚拟机系统的方法 |
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 |
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 |
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 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据管理方法及相关装置 |
US12019772B2 (en) | 2021-09-14 | 2024-06-25 | International Business Machines Corporation | Storing diagnostic state of secure virtual machines |
US20230188338A1 (en) * | 2021-12-10 | 2023-06-15 | Amazon Technologies, Inc. | Limiting use of encryption keys in an integrated circuit device |
CN114266082A (zh) * | 2021-12-16 | 2022-04-01 | 北京奕斯伟计算技术有限公司 | 防御控制流攻击的装置、方法、处理器、设备及存储介质 |
US11860797B2 (en) * | 2021-12-30 | 2024-01-02 | Advanced Micro Devices, Inc. | Peripheral device protocols in confidential compute architectures |
Citations (2)
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)
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 | 富士通株式会社 | デバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置 |
US20090113111A1 (en) | 2007-10-30 | 2009-04-30 | Vmware, Inc. | Secure identification of execution contexts |
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 |
WO2013061375A1 (en) * | 2011-10-27 | 2013-05-02 | 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 |
-
2014
- 2014-09-24 US US14/494,643 patent/US9792448B2/en active Active
-
2015
- 2015-02-27 KR KR1020167024649A patent/KR102456084B1/ko active IP Right Grant
- 2015-02-27 WO PCT/US2015/017925 patent/WO2015178987A2/en active Application Filing
- 2015-02-27 CN CN201580010043.0A patent/CN106062768B/zh active Active
- 2015-02-27 JP JP2016554448A patent/JP6450775B2/ja active Active
- 2015-02-27 EP EP15796570.8A patent/EP3111365B1/en active Active
- 2015-06-24 US US14/748,883 patent/US10152602B2/en active Active
-
2016
- 2016-06-22 CN CN201680043168.8A patent/CN107851151B/zh active Active
Patent Citations (2)
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 |
---|---|
EP3111365A4 (en) | 2017-11-01 |
US20160378522A1 (en) | 2016-12-29 |
KR102456084B1 (ko) | 2022-10-18 |
WO2015178987A3 (en) | 2016-01-28 |
CN106062768A (zh) | 2016-10-26 |
US10152602B2 (en) | 2018-12-11 |
WO2015178987A2 (en) | 2015-11-26 |
EP3111365A2 (en) | 2017-01-04 |
JP6450775B2 (ja) | 2019-01-09 |
EP3111365B1 (en) | 2024-07-24 |
JP2017517043A (ja) | 2017-06-22 |
CN106062768B (zh) | 2020-06-05 |
US20150248357A1 (en) | 2015-09-03 |
CN107851151B (zh) | 2020-06-30 |
CN107851151A (zh) | 2018-03-27 |
US9792448B2 (en) | 2017-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3111365B1 (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 | |
US20200192825A1 (en) | Security for virtualized device | |
WO2008054456A2 (en) | Hardware-facilitated secure software execution environment | |
CN106716435B (zh) | 设备与安全处理环境之间的接口 | |
CN107526974A (zh) | 一种信息密码保护装置和方法 | |
US20180053017A1 (en) | Programmable logic device, information processing apparatus, and processing method | |
JP6672341B2 (ja) | 仮想マシンの状態情報の保護 | |
US20170322891A1 (en) | Device and method for secure data storage | |
US20240202289A1 (en) | Using Ownership Identifiers in Metadata in a Memory for Protecting Encrypted Data Stored in the Memory | |
US20240054071A1 (en) | Hardware mechanism to extend mktme protections to sgx data outside epc | |
US20240220417A1 (en) | Segmented non-contiguous reverse map table | |
US20240330205A1 (en) | Storage inline encryption circuit |
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 |