KR20190075063A - 처리 시스템에서의 직접 메모리 액세스 인가 - Google Patents

처리 시스템에서의 직접 메모리 액세스 인가 Download PDF

Info

Publication number
KR20190075063A
KR20190075063A KR1020197010624A KR20197010624A KR20190075063A KR 20190075063 A KR20190075063 A KR 20190075063A KR 1020197010624 A KR1020197010624 A KR 1020197010624A KR 20197010624 A KR20197010624 A KR 20197010624A KR 20190075063 A KR20190075063 A KR 20190075063A
Authority
KR
South Korea
Prior art keywords
memory
access request
secure
iommu
request
Prior art date
Application number
KR1020197010624A
Other languages
English (en)
Other versions
KR102107711B1 (ko
Inventor
데이비드 카플란
매기 찬
필립 엔지
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
에이티아이 테크놀로지스 유엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드, 에이티아이 테크놀로지스 유엘씨 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20190075063A publication Critical patent/KR20190075063A/ko
Application granted granted Critical
Publication of KR102107711B1 publication Critical patent/KR102107711B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data

Landscapes

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

Abstract

프로세서[102]는 입력/출력 장치[106]와 메모리[104] 간의 메모리 액세스 경로에서 하드웨어 암호화 모듈[120]을 사용하여 보안 정보를 암호로 격리한다. 일부 실시형태에서, 암호화 모듈은 프로세서의 메모리 제어기[116]에 배치되고, 메모리 제어기에 제공된 각 메모리 액세스 요청은 메모리 액세스 요청의 소스를 식별하는 VM 태그 값을 포함한다. VM 태그는 메모리 액세스 요청의 소스를 식별하는 요청자 ID에 기초하여 결정된다. 암호화 모듈은 VM 태그와 관련된 암호화 키에 기초하여 메모리 액세스와 관련된 데이터의 암호화(기록 액세스에 대한) 또는 복호(판독 액세스에 대한)를 수행한다.

Description

처리 시스템에서의 직접 메모리 액세스 인가
많은 프로세서 애플리케이션에서는, 정보 보안의 보호가 중요한 특징이다. 예를 들어, 프로세서는 IAAS(Infrastructure As A Service) 환경의 서버에서 사용될 수 있고, 여기서 프로세서는 하나 이상의 가상 머신(VM)을 실행하고 하이퍼바이저를 실행하여 VM 간에 서버 하드웨어를 분할하고 VM을 서로로부터 격리시킨다. 상이한 VM이 상이한 고객을 대신하여 실행될 수 있으므로, 각 VM에 의해 사용되는 정보(명령어 및 데이터)는 다른 VM에 의한 액세스로부터 보호되는 것이 바람직하다. 통상적으로, 하이퍼바이저는 각 VM에 대해 별도의 메모리 페이지 테이블 및 다른 논리 엔티티를 유지함으로써 VM 정보의 격리를 유지한다. 그러나, 하이퍼바이저 내의 결함(예를 들어, 버그)은 하이퍼바이저 자체를 공격에 취약하게 할 수 있어, 하나의 VM을 다른 VM의 정보에 액세스할 수 있게 한다. 퍼스널 컴퓨터와 같은 더욱 사적인 보안 환경에서도, 메모리 모듈 내에 저장된 데이터가 도난당할 수 있고, 그 내부에 저장된 데이터가 비인가 액세스를 받을 수 있다. 일부 보안 환경에서, 장치로부터 보안 메모리 공간으로의 직접 메모리 액세스(DMA)는 DMA 요청의 개시자를 식별함에 있어서의 곤란성 때문에 신뢰적이지 않다. 예를 들어, 비인가 엔티티는 비인가 장치를 통해 DMA를 요청함으로써 보안 메모리 공간에 액세스할 수 있다.
본 개시는 첨부 도면을 참조함으로써 당업자에게 보다 잘 이해될 수 있고, 그의 많은 특징 및 이점이 명백해질 수 있다. 상이한 도면에서 동일한 참조 기호의 사용은 유사 또는 동일한 항목을 나타낸다.
도 1은 일부 실시형태에 따라 정보의 보안 격리를 위해 메모리 제어기에서 암호화 모듈을 사용하는 처리 시스템의 블록도이다.
도 2는 일부 실시형태에 따라 정보의 격리를 제공하기 위해 도 1의 처리 시스템의 예시적인 구현을 도시하는 블록도이다.
도 3은 일부 실시형태에 따라 정보의 격리를 제공하기 위해 도 1의 처리 시스템의 다른 예시적인 구현을 도시하는 블록도이다.
도 4는 일부 실시형태에 따라 도 1 내지 도 3의 처리 시스템에서 보안 메모리 액세스를 식별하기 위한 변환 색인 버퍼(translation lookaside buffer) 및 페이지 테이블의 사용을 도시하는 블록도이다.
도 5는 일부 실시형태에 따라 암호로 보호된 정보를 보호하기 위해 도 1 내지 도 3의 처리 시스템에서 메모리 액세스 요청을 처리하는 방법의 흐름도이다.
도 1 내지 도 5는 보안 정보를 암호로 격리하기 위해 프로세서의 메모리 액세스 경로에서 하드웨어 암호화 모듈을 사용함으로써 처리 시스템에서 보안 정보를 보호하기 위한 기술을 도시한다. 프로세서는 입력/출력 장치와 메모리 간의 메모리 액세스 경로에서 하드웨어 암호화 모듈을 사용하여 보안 정보를 암호로 격리한다. 일부 실시형태에서, 암호화 모듈은 프로세서의 메모리 제어기에 배치되고, 프로세서에서의 입력/출력 메모리 관리 유닛(IOMMU)에 제공된 각 메모리 액세스 요청은 메모리 액세스 요청의 소스를 식별하는 요청자 ID 값을 포함한다. 일부 실시형태에서, 프로세서는 입력/출력(IO) 장치 상에서 상이한 가상 기능(virtual function: VF)을 실행하기 위해 처리 시스템에서 사용된다. 예를 들어, 일부 실시형태에서, 암호화 모듈은 IO 장치 상에서 실행하는 각 VF에 대한 고유 키를 저장한다. 일부 시나리오에서, VF에 대한 키는 처리 시스템의 프로세서 코어와 별도의 보안 모듈에 의해 생성될 수 있어, 하이퍼바이저를 포함한 프로세서 코어에서 실행하는 소프트웨어가 키에 액세스할 수 없다. IOMMU에서 DMA 요청을 수신하는 것에 응답하여, 요청자 VF의 소스는 메모리 액세스 요청에 포함된 요청자 ID 값에 기초하여 식별된다. 요청자 ID 값은, 장치 테이블을 사용하여 요청자 VF와 관련된 VM TAG 값을 룩업하기 위해 IOMMU에 의해 사용된다. VM TAG 값은, 메모리에 기록된 데이터를 암호화하거나 또는 메모리로부터 판독된 데이터를 복호하기 위해 DMA 요청과 함께 사용해야 하는 특정 암호화 키를 식별한다.
일부 실시형태에서, 본 명세서에서 설명된 기술은 물리적으로 안전하지 않은 환경에서 사용되는 처리 시스템에서 구현되며, 여기서 처리 시스템의 메모리는 비인가 물리 액세스(예를 들어, 하드웨어 메모리 모듈의 도난 또는 메모리의 물리 프로빙)를 받는다. 그러나, 암호화 모듈이 보안 데이터가 암호화된 형태로 메모리에 저장되게 하기 때문에, 보안 데이터는 비인가 물리 액세스를 받는 경우에도 쉽게 유용되지 않는다. 예를 들어, 인가된 VF가 다른 VM/VF에 할당된 메모리 위치에 저장된 데이터를 검색하기 위해 DMA 요청을 시도하려고 한 경우에도, 부정확한 암호화 키로 데이터에 액세스하게 되어, 부정확한 키가 암호화/복호를 위해 사용되게 한다(즉, 메모리 액세스에 응답하여 데이터의 진정한 플레인텍스트/클리어텍스트(plaintext/cleartext)가 리턴되지 않는다).
도 1은 일부 실시형태에 따라 정보의 암호 보호(cryptographic protection)를 제공하는 처리 시스템(100)을 도시한다. 처리 시스템(100)은 프로세서(102) 및 메모리(104)를 포함한다. 처리 시스템(100)은 서버, 퍼스널 컴퓨터, 태블릿, 셋톱박스, 게이밍 시스템 등과 같은 임의의 다양한 전자 장치에 통합될 수 있다. 프로세서(102)는 일반적으로 정의된 태스크를 수행하기 위해 프로세서(102)의 회로를 조작하는 명령어의 세트(예를 들어, 컴퓨터 프로그램)를 실행하도록 구성된다. 메모리(104)는 프로세서(102)에 의해 사용되는 데이터를 저장함으로써 이들 태스크의 실행을 용이하게 한다. 메모리(104)는 랜덤 액세스 메모리(RAM), 플래시 메모리 또는 하드 디스크 드라이브(HDD) 등과 같은 비휘발성 메모리, 또는 이들의 조합일 수 있다. 처리 시스템(100)은 또한 물리 입력/출력(I/O) 장치(106)를 포함한다. 물리 I/O 장치(106)는, 예를 들어 네트워크 인터페이스 카드(NIC), 호스트 버스 어댑터(HBA) 등일 수 있다.
프로세서(102)는 보안 모듈(108)을 포함한다. 보안 모듈(108)은 범용 프로세서, 필드 프로그래머블 게이트 어레이(FPGA), 주문형 집적 회로(ASIC), 프로세서 코어의 동작 모드, 또는 프로세서(102)에서 실행될 엔티티(예를 들어, 가상 머신, 컴퓨터 프로그램 등)의 등록, 실행될 엔티티에 대한 보안 키의 생성 및 식별, 보안 동작에 대한 처리 시스템(100)의 인증을 포함한 처리 시스템(100)에 대한 보안 동작을 수행하도록 설계되고 구성된 다른 모듈이다. 일부 실시형태에서, 보안 모듈(108)은 자신의 동작을 실행하도록 허용되기 전에 보안 등록 프로세스를 거칠 수 있고, 보안 동작에만 제한된 자신의 동작을 가질 수 있어, 공격에 취약한 동작을 실행할 수 없게 한다. 본 명세서에서 더욱 설명되는 바와 같이, 보안 모듈(108)은, 처리 시스템(100)에서 실행되도록 등록된 엔티티를 식별하는 보안 키를 생성함으로써 처리 시스템(100)에서의 정보의 암호 격리(cryptographic isolation)를 지원하고, 이러한 암호 격리를 가능하게 하는 다른 동작을 지원한다.
프로세서(102)는 또한 프로세서 코어(110 및 112), 캐시(114), 메모리 제어기(예를 들어, 노스브릿지)(116), 및 보안 모드 레지스터(118)를 포함한다. 프로세서 코어(110, 112)는 개별적으로 그리고 동시에 명령어를 실행하는 처리 유닛이다. 일부 실시형태에서, 프로세서 코어(110 및 112) 각각은, 명령어를 페치하고, 페치된 명령어를 대응하는 동작으로 디코딩하고, 처리 시스템(100)의 리소스를 사용하여 다양한 동작을 실행하는 개별 명령어 파이프라인을 포함한다. 프로세서(102)는 또한 장치(예를 들어, 도 1에 나타낸 I/O 장치(106))를 메모리 제어기(116)에 연결하는 데 사용되는 입력/출력 메모리 관리 유닛(IOMMU)(120)을 포함한다.
일부 실시형태에서, 처리 시스템(100)은 보안 방식을 구현하며, 이에 따라 정보에 대한 보안 지정(정보가 암호로 보호되는지 여부)은 정보가 메모리(104)에 저장되는 곳에 대응하거나 또는 정보의 유형(예를 들어, 명령어 또는 데이터)에 대응하는 메모리 어드레스에 포함되는 제어 비트에 기초하여 할당된다. 이것은, 데이터의 대량 수집이 보안 정보로서 쉽게 분류될 수 있게 하여, 효율적인 정보 보호를 제공한다. 예를 들어, 일부 실시형태에서, 제어 비트는 처리 시스템(100)에 의해 설정되어, 메모리(104)의 물리 어드레스에 가상 어드레스의 매핑을 제공하는 명령어 정보와 같은 특정 유형의 정보 또는 페이지 테이블 정보가 보안 정보로서 지정됨으로써, 이 정보를 암호로 보호한다. 데이터에 할당된 어드레스에 대한 제어 비트는, 예를 들어 프로세서(102)에서 실행하는 프로그램에 의해 요청된 지정에 기초하여 보다 세분화된 방식으로 지정될 수 있다. 이 보안 방식은, 보다 일반적인 데이터에 대해 유연성을 제공하면서도 중요한 데이터의 보호(예를 들어, 가상 머신 또는 그의 프로그램의 비인가 실행의 방지)를 제공한다.
일부 실시형태에서, 정보에 할당된 보안 유형이 정보의 대응하는 메모리 어드레스에 기초하여 지정되기 때문에, 처리 시스템(100)은 각 메모리 어드레스에 대한 보안 유형을 나타내기 위해 페이지 테이블 자체를 사용한다. 따라서, 이하에서 더욱 설명되는 바와 같이, IOMMU(120)는 메모리 액세스 요청에 대응하는 메모리 어드레스를 식별하는 과정에서 메모리 액세스 요청의 유형을 식별한다. 특히, 메모리 어드레스가 보안(secure) 정보를 저장하는 것으로서 표시되는 경우, 대응하는 메모리 액세스는 보안 메모리 액세스로서 식별된다. 마찬가지로, 메모리 어드레스가 비보안(non-secure) 정보로서 표시되는 경우, 대응하는 메모리 액세스는 비보안 메모리 액세스로서 식별된다.
메모리 제어기(116)는 I/O 장치(106)가 메모리(104)와 통신하기 위한 인터페이스를 제공한다. IOMMU(120)는 I/O 장치(106)로부터 메모리 액세스 요청(예를 들어, 직접 메모리 액세스 요청)을 수신하고, 메모리 제어기(116)를 통해 메모리(104)로의 해당 요청의 제공을 제어한다. 또한, 메모리 제어기(116)는 메모리(104)로부터의 메모리 액세스 요청에 대한 응답을 수신하고, I/O 장치(106)로의 응답의 제공을 제어한다.
정보의 암호 격리를 제공하기 위해, 메모리 제어기(116)는 지정된 암호 표준에 따라, 그리고 키(124)에 기초하여 정보를 암호화하고 복호하도록 구성된 암호화 모듈(122)을 포함한다. 일부 실시형태에서, 암호화 모듈(122)은 AES(Advanced Encryption Standard) 암호화 및 복호를 사용하도록 구성되지만, 다른 실시형태에서는 암호화 모듈(122)이 다른 암호화/복호 기술을 사용할 수 있다.
메모리 제어기(116)는 각 메모리 액세스 요청을 2개의 유형 중 하나, 즉 메모리 액세스 요청에 대응하는 정보가 암호 보호를 위해 지정된 것을 나타내는 보안 메모리 액세스 요청, 또는 메모리 액세스 요청에 대응하는 정보가 암호 보호를 위해 지정되지 않은 것을 나타내는 비보안 메모리 액세스 요청으로서 식별하도록 구성된다. 기록 요청을 수신하는 것에 응답하여, 메모리 제어기(116)는 요청이 보안 메모리 액세스 요청 또는 비보안 메모리 액세스 요청인지 여부를 식별한다. 기록 요청이 비보안 메모리 액세스 요청인 경우, 메모리 제어기(116)는 암호화 모듈(122)을 우회하여, 기록될 정보를 암호화하지 않고 기록 요청을 메모리(104)에 제공한다. 기록 요청이 보안 메모리 액세스 요청인 경우, 메모리 제어기(116)는 메모리 액세스 요청을 생성한 I/O 장치(106)에 할당되는 키(124) 중 하나를 식별한다. 일부 실시형태에서, 메모리 제어기(116)는, I/O 장치(106)에 할당된, 본 명세서에서 더욱 설명되는 바와 같이, 식별 태그 값(즉, VM TAG)에 기초하여 키를 식별하고 선택한다. 암호화 모듈(122)은 선택된 키를 사용하여 기록될 정보를 암호화하고, 암호화된 정보와 함께 기록 요청을 저장을 위해 메모리(104)에 제공한다. 일부 실시형태에서, 암호화 모듈(122)은 대응하는 정보의 암호화 및 복호를 위해 선택된 키 및 메모리 액세스 요청의 물리 어드레스 모두를 사용함으로써, 블록 이동 공격을 방지한다. 일부 실시형태에서, 암호화 모듈(122)은 프로세서(102)에서 제어 비트(미도시)의 상태에 기초하여 암호화 및 복호를 위해 물리 어드레스를 사용할 것인지 여부를 식별한다. 제어 비트 상태는 보안 모듈(108)에 의해 설정될 수 있다.
판독 요청을 수신하는 것에 응답하여, 메모리 제어기(116)는 요청을 메모리(104)에 제공하고, 이어서 요청에 응답하여 정보를 수신한다. 메모리 제어기(116)가 판독 요청을 비보안 메모리 액세스 요청으로서 식별하는 경우에는, 암호화 모듈(122)을 우회하여, 판독 정보를 암호화없이 I/O 장치(106)에 제공한다. 메모리 제어기(116)가 판독 요청을 보안 메모리 액세스 요청으로서 식별하는 경우에는, 판독 액세스 요청을 생성한 I/O 장치(106)에 할당되는 키(124) 중 하나를 식별하고, 암호화 모듈(122)은 판독 정보를 복호한다. 그 후, 메모리 제어기(116)는 복호된 판독 정보를 I/O 장치(106)에 제공한다.
일부 실시형태에서, 보안 모드 레지스터(118)는 암호화 모듈(122)의 동작을 제어하는 데 사용된다. 보안 모드 레지스터(118)는 가드 모드 온 필드(guard-mode-on field)(126) 및 가드 모드 액티브 필드(guard-mode-active field)(128)를 포함한다. 지정된 상태(예를 들어, 무효 상태(negated state))에 있는 가드 모드 온 필드(126)에 응답하여, 메모리 제어기(116)는 보안 메모리 액세스 요청을 포함한 모든 메모리 액세스 요청에 대해 암호화 모듈(122)을 우회한다. 이것은, 처리 시스템(100)이 프로세서(102) 및 I/O 장치(106)에서 실행되고 있는 모든 프로그램에 대해 암호화 및 복호가 우회되는 모드로 동작할 수 있게 한다.
가드 모드 온 필드(126)가 다른 지정된 상태(예를 들어, 어서트 상태(asserted state))에 있는 것에 응답하여, 메모리 제어기(116)는 가드 모드 액티브 필드(128)의 상태를 식별한다. 지정된 상태(예를 들어, 무효 상태)에 있는 가드 모드 액티브 필드(128)에 응답하여, 메모리 제어기(116)는 수신된 메모리 액세스 요청(보안 메모리 액세스 요청을 포함함)에 대해 암호화 모듈(122)을 우회하고, 다른 상태(예를 들어, 어서트 상태)에 있는 가드 모드 액티브 필드(128)에 응답하여, 비보안 메모리 액세스 요청에 대해서만 암호화 모듈(122)을 우회한다. 일부 실시형태에서, 가드 모드 온 필드(126)는 프로세서(102)에서 다수의 개별 프로그램 또는 엔티티(예를 들어, VM)의 실행을 관리하는 엔티티(예를 들어, 하이퍼바이저)에 의해 설정되는 한편, 가드 모드 온 필드(126)는 개별 프로그램 또는 엔티티 각각에 대해 개별적으로 설정된다. 따라서, 보안 모드 레지스터(118)는 암호화 모듈(122)의 사용이 상이한 입도(granularity) 레벨에서 제어될 수 있게 한다.
일부 실시형태에서, I/O 장치(106)는 메모리 제어기(116)를 사용하여 IOMMU(120)에 전송된 가상 어드레스를 포함하는 메모리 액세스 요청을 시작함으로써 직접 메모리 액세스(DMA) 요청을 통해 메모리(104) 내의 보안 정보(130)에 액세스할 수 있다. IOMMU(120)는 I/O 장치(106)에 의해 사용된 장치 가상 어드레스와 메모리(104) 내의 물리 어드레스 사이에서 어드레스 변환(address translation)을 수행할 수 있다. 예를 들어, I/O 장치(106)는, 메모리(104)에 데이터를 저장하기 위한 기록 요청 및 메모리(104)로부터 데이터를 검색하기 위한 판독 요청을 포함하는 메모리 액세스 요청을 생성한다. 각 메모리 액세스 요청은 메모리 액세스 요청에 의해 타깃팅된 메모리(104)에서의 위치를 나타내는 메모리 어드레스를 포함한다. 판독 요청에 응답하여, 메모리(104)는 판독 요청의 메모리 어드레스에 대응하는 위치에 저장된 정보(데이터 또는 명령어)를 검색하고, 그 정보를 I/O 장치(106)에 제공한다. 기록 요청에 응답하여, 메모리(104)는 기록 요청의 메모리 어드레스에 대응하는 위치에 요청의 기록 정보를 저장한다.
또한, 암호화 모듈(122)은 메모리 액세스 요청과 관련된 데이터의 암호화(기록 액세스에 대한) 또는 복호(판독 액세스에 대한)를 수행한다. 보안 메모리 액세스의 경우, 암호화 모듈(122)은 메모리 액세스와 관련된 데이터의 암호화(기록 액세스에 대한) 또는 복호(판독 액세스에 대한)를 수행한다. 암호화가 프로세서의 메모리 액세스 경로에서 하드웨어에 의해 행해지므로, 메모리(104)에 저장된 데이터는, 이하에서 더욱 설명되는 바와 같이, 정확한 암호화/복호 키없이 의미있게 액세스할 수 없다.
도 2는 일부 실시형태에 따라, 도 1의 처리 시스템(100)의 예시적인 동작을 도시한다. 프로세서(202)는 2개의 가상 머신(VM), 즉 VM-A(204) 및 VM-B(206)를 동시에 실행하는 것이다. 또한, 프로세서(202)는 하이퍼바이저(208)를 실행하여 VM(204, 206)과 처리 시스템의 하드웨어 사이에 인터페이스를 제공한다. 동작시, 프로세서(202)에서 실행하도록 허용되기 전에, VM(204 및 206) 각각은 보안 모듈(210)에 등록된다. 일부 실시형태에서, VM은 다음과 같이 등록된다: VM 소유자는 보안 모듈(210)과의 보안 통신 채널(212)을 확립한다. "VM TAG"로 지정된 식별 태그 값 및 "VM KEY"로 지정된 보안 키가 VM에 대해 생성된다. 이 생성은 보안 모듈(210) 또는 별도의 보안 장치에서 행해질 수 있고, 보안 통신 채널(212)을 통해 보안 모듈(210)에 전달될 수 있다. 일부 실시형태에서, 각 VM에 대한 VM TAG 값은 하이퍼바이저(208)에 의해 초기에 기록되고, 암호화될 보안 모듈(210)에 제공된다. 보안 모듈(210)은, VM KEY 및 VM TAG 값 각각이 대응하는 VM에 고유한 것을 보장한다. VM 소유자는 대응하는 VM의 이미지를 암호화하여 하이퍼바이저(208)에 제공하며, 하이퍼바이저(208)는 암호화된 이미지를 보안 데이터로서 메모리(214)(예를 들어, 보안 정보 공간(232 및 234))에 저장한다.
하이퍼바이저(208)는 각 VM을 VM에 대한 대응하는 암호화된 어드레스 공간에 할당한다. 보안 정보(232)는 VM-A(204)에 대한 VM 이미지를 포함하고, 보안 정보(234)는 VM-B(206)에 대한 VM 이미지를 포함한다. 메모리(214)는 프로세서(202)에 의해 사용되는 데이터를 저장한다. 메모리(214)는 랜덤 액세스 메모리(RAM), 플래시 메모리 또는 하드 디스크 드라이브(HDD) 등과 같은 비휘발성 메모리, 또는 이들의 조합일 수 있다.
처리 시스템은 또한 물리 입력/출력(I/O) 장치(216)를 포함한다. 물리 I/O 장치(216)는, 예를 들어 네트워크 인터페이스 카드(NIC), 호스트 버스 어댑터(HBA) 등일 수 있다. I/O 장치(216)는 장치 상에 구성되는 복수의 가상 기능(VF)을 포함할 수 있다. 예를 들어, I/O 장치(216)는 장치 상에 구성되는 2개의 VF, 즉 VF-A(218) 및 VF-B(220)를 포함한다. 하이퍼바이저(208)는 VF(218, 220)를 VM(204, 206)에 매핑(예를 들어, 할당)한다. 예를 들어, VF-A(218)는 VM-A(204)에 매핑되고, VF-B(220)는 VM-B(206)에 매핑된다. 또한, 보안 모듈(210)은 각 VF에 고유한 식별 태그 값(예를 들어, VM TAG)을 할당함으로써 VM을 I/O 장치 VF와 관련시킨다. 이 구성은 IOMMU(224)를 통해 VM으로부터 I/O 장치(216)의 레지스터로의 경로를 제공하고, 인가된 VM만이 그들의 관련 VF의 레지스터에 도달할 수 있다는 것을 보장한다. 예를 들어, VM-A TAG는 VF-A(218)와 관련되고, VM-B TAG는 메모리(214) 내에 상주하는 장치 테이블(236) 내의 VF-B(220)와 관련된다.
IOMMU(224)는 장치(예를 들어, I/O 장치(216))를 메모리 제어기(222)에 연결하는 데 사용된다. IOMMU(224)는 I/O 장치(216)가 메모리(214)와 통신하기 위한 인터페이스를 제공한다. 메모리 제어기(222)는 IOMMU(224)를 통해 I/O 장치(216)로부터 메모리 액세스 요청(예를 들어, 직접 메모리 액세스 요청)을 수신하고, 메모리(214)로의 해당 요청의 제공을 제어한다. 또한, 메모리 제어기(222)는 메모리(214)로부터 메모리 액세스 요청에 대한 응답을 수신하고, I/O 장치(216)에 대한 응답의 제공을 제어한다.
정보의 암호 격리를 제공하기 위해, 메모리 제어기(222)는 지정된 암호 표준에 따라, 그리고 키(228, 230)에 기초하여 정보를 암호화하고 복호하도록 구성된 암호화 모듈(226)을 포함한다. 일부 실시형태에서, 암호화 모듈(226)은 AES(Advanced Encryption Standard) 암호화 및 복호를 사용하도록 구성되지만, 다른 실시형태에서는 암호화 모듈(226)이 다른 암호화/복호 기술을 사용할 수 있다. 통상적으로, 하이퍼바이저(208)는 프로세서(202)와 직접 상호 작용할 것이고, 이에 따라 VM(204, 206)과 관련된 모든 보안 키에 대한 액세스를 가질 것이다. 이것은 악의적이거나 결함이 있는 하이퍼바이저가 VM의 보안 정보에 대한 액세스를 비인가자에게 제공할 수 있게 할 것이다. 예를 들어, 악의적인 하이퍼바이저 또는 VM-A가 VM-B에 할당된 장치 VF-B와 통신하는 것과 특정의 악의적인 DMA 동작을 수행하는 해당 VF-B를 VM-B의 메모리로 알리는 것을 방지하는 것이 바람직하다. 마찬가지로, 악의적인 VF는 DMA가 인가되지 않은 다른 VM/VF에 의해 사용되는 정보에 액세스하는 것을 수행하려고 시도할 수 있다. 대조적으로, 도 2의 예에서, 보안 키에 대한 액세스는 보안 모듈(210)에 의해 관리되고, 본 명세서에서 더욱 설명되는 바와 같이, 인가된 정보에 대한 VF 액세스만을 허용한다.
보안 모듈(210)은, 처리 시스템에서 실행되도록 등록된 엔티티를 식별하는 보안 키를 생성함으로써 정보의 암호 격리를 지원하고, 이러한 암호 격리를 가능하게 하는 다른 동작을 지원한다. 보안 키의 생성은 보안 모듈(210) 또는 별도의 보안 장치에서 행해질 수 있고, 보안 통신 채널(212)을 통해 보안 모듈(210)에 전달될 수 있다. 보안 모듈(210)은, VM KEY 및 VM TAG 값 각각이 대응하는 VM에 고유한 것을 보장한다. 본 명세서에서 사용되는 바와 같이 용어 "보안 키"는 인증 또는 암호화 키뿐만 아니라, 키에 서명하는 임의의 인증서 또는 인증서 체인을 지칭한다. 보안 모듈(210)은 각각 VM-A(204) 및 VM-B(206)와 관련된 2개의 상이한 보안 키, 즉 KEY-A(228) 및 KEY-B(230)를 생성하고 유지한다. 보안 모듈(210)은 보안 키(228, 230)를 메모리 제어기(222)에 직접 제공하여, 하이퍼바이저(208)가 보안 키에 액세스할 수 없다. 일부 실시형태에서, 보안 모듈(210)은 키를 메모리 제어기(222)의 레지스터에 직접 기록함으로써 키를 제공한다. 이들 레지스터는 프로세서(202)에서 실행하는 하이퍼바이저(208) 또는 다른 엔티티에는 액세스할 수 없으므로, 악의적인 엔티티가 보안 키(228, 230)에 액세스하는 것을 방지하고, 결국에는 보안 정보 어드레스 공간(232, 234)에 액세스하는 것을 방지한다.
도 3은 일부 실시형태에 따라 예시적인 직접 메모리 액세스 동작을 수행하기 위한 도 1 및 도 2의 처리 시스템의 일부를 도시한다. 도시된 실시예에서, 프로세서(302)는 2개의 가상 머신(VM), 즉 VM-A(304) 및 VM-B(306)를 동시에 실행하는 것이다. 또한, 프로세서(302)는 하이퍼바이저(308)를 실행하여 VM(304, 306)과 처리 시스템의 하드웨어 사이에 인터페이스를 제공한다. 동작시, 프로세서(302)에서 실행하도록 허용되기 전에, VM(304 및 306) 각각은 보안 모듈(310)에 등록된다. 하이퍼바이저(308)는 각 VM을 메모리(312) 내의 VM에 대한 대응하는 암호화된 어드레스 공간에 할당한다. 메모리(312)는 프로세서(302)에 의해 사용되는 데이터를 저장한다. 메모리(312)는 랜덤 액세스 메모리(RAM), 플래시 메모리 또는 하드 디스크 드라이브(HDD) 등과 같은 비휘발성 메모리, 또는 이들의 조합일 수 있다. 보안 정보 공간(314)은 VM-A(304)와 관련되고, 보안 정보 공간(316)은 VM-B(306)와 관련된다.
처리 시스템은 또한 물리 입력/출력(I/O) 장치(318), 메모리 제어기(320), 및 입력/출력 메모리 관리 유닛(IOMMU)(322)을 포함한다. 물리 I/O 장치(318)는, 예를 들어 네트워크 인터페이스 카드(NIC), 호스트 버스 어댑터(HBA) 등일 수 있다. I/O 장치(318)는 장치 상에 구성되는 복수의 가상 기능(VF)을 포함할 수 있다. I/O 장치(318)는 장치 상에 구성되는 2개의 VF, 즉 VF-A(324) 및 VF-B(326)를 포함한다. 하이퍼바이저(308)는 VF(324, 326)를 VM(304, 306)에 매핑(예를 들어, 할당)한다. 예를 들어, VF-A(324)는 VM-A(304)에 매핑되고, VF-B(326)는 VM-B(306)에 매핑된다.
도 2를 참조하여 전술한 바와 같이, 보안 모듈(310)은 각 VF에 고유한 식별 태그 값(예를 들어, VM TAG)을 할당함으로써 VM을 I/O 장치 VF와 관련시킨다. 프로세서(302)가 VM-A를 실행할 때, VM-A TAG(즉, 식별 태그 값)가 로딩되고, 이 태그는 메모리에 액세스할 때에 사용된다. 예를 들어, VM-A TAG는 VF-A(324)에 할당되고, VM-B TAG는 보안 모듈(310)에 의해 VF-B(326)에 할당된다. 보안 모듈(310)은 또한 보안 키(328 및 330)를 생성하여 메모리 제어기(320)에 제공한다. 도 3의 실시예에서, 보안 모듈(310)은 각각 VM-A(304) 및 VM-B(306)와 관련된 2개의 상이한 보안 키, 즉 KEY-A(328) 및 KEY-B(330)를 생성하고 유지한다. 보안 모듈(310)은, 하이퍼바이저(308)가 보안 키에 액세스할 수 없도록 보안 키(328, 330)를 메모리 제어기(320)에 직접 제공한다.
이 동일한 태그는 I/O 장치(318) 내의 메모리 매핑된 I/O(MMIO) 레지스터에 액세스할 때에 제공된다. IOMMU(322)는, VM-A 태그를 갖는 MMIO 요청이 요청된 MMIO 어드레스에 액세스하는 것이 허용되는지 여부를 식별하기 위해 보호 테이블로 구성된다. 일부 실시형태에서, IOMMU는 VM 액세스 가능성과 함께 MMIO 애퍼처(예를 들어, MMIO 레지스터와 관련된 메모리 물리 어드레스 공간의 일부)를 포함하는 룩업 테이블(미도시)을 포함한다. 룩업 테이블은, MMIO 트래픽(예를 들어, VM으로부터 I/O 장치(318)의 MMIO로의 판독/기록)을 체크하고 VM TAG를 허용 가능한 다운스트림 MMIO 어드레스 범위와 관련시키는 데 사용된다. VM TAG는 VM으로부터 I/O 장치(318)로의 트래픽을 인가하기 위해 MMIO 액세스 요청에 포함된다. VM에 의해 제공된 값과 VF에 할당된 값 사이의 VM TAG 값의 불일치의 경우, I/O 장치(318) MMIO에 대한 액세스가 방지된다. 이 MMIO 격리는 악의적인 하이퍼바이저가 VM에 액세스하는 VF를 제어하는 것을 방지한다.
일부 실시형태에서, 이 다운스트림 MMIO 액세스 인가는 IOMMU(322)에 의해 수행되지만, IOMMU(322)와 별개의 모듈에서 수행될 수 있다. 이 구성은 VM으로부터 I/O 장치(318)의 레지스터로의 경로를 제공하고, 보안 모듈(310)에 의해 인가된 VM만이 그들의 관련 VF의 레지스터에 도달할 수 있는 것을 보장한다. 본 명세서에서 사용되는 바와 같이, 용어 "다운스트림(downstream)"은 IOMMU(322)를 통해 VM으로부터 I/O 장치(318)로의 판독 또는 기록을 포함하는 MMIO 트래픽을 지칭한다. 용어 "업스트림(upstream)"은 IOMMU(322)를 통해 VF(324, 326) 또는 I/O 장치(318)로부터 메모리(312)로의 판독 또는 기록을 포함하는 직접 메모리 액세스(DMA) 트래픽을 지칭한다.
IOMMU(322)는 장치(예를 들어, I/O 장치(318))를 메모리 제어기(320)에 연결하는 데 사용된다. 메모리 제어기(320)는 I/O 장치(318)가 메모리(312)와 통신하기 위한 인터페이스를 제공한다. 메모리 제어기(320)는 IOMMU(322)를 통해 I/O 장치(318)로부터 메모리 액세스 요청(예를 들어, 직접 메모리 액세스 요청)을 수신하고, 메모리(312)로의 해당 요청의 제공을 제어한다. 다른 실시예에서, 메모리 제어기(320)는 메모리(312)로부터 메모리 액세스 요청에 대한 응답을 수신하고, I/O 장치(318)에 대한 응답의 제공을 제어한다.
I/O 장치(318)에서의 VF(324 및 326)는 메모리 제어기(320)를 사용하여, 메모리 액세스 요청을 시작함으로써 직접 메모리 액세스(DMA) 요청을 통해 메모리(312) 내의 보안 정보(314, 316)에 액세스할 수 있다. 예를 들어, 그들의 실행 과정에서, VF(324 및 326)는 각각 보안 정보(314 및 316)에 액세스(저장 및 검색)하는 것이다. 암호화 모듈(332)은 보안 정보(314 및 316)가 암호로 격리되는 것을 보장하여, 그 안에 저장된 데이터가 단지 그들 각각의 VM/VF에 할당된 보안 키만을 사용하여 암호화/복호될 수 있다.
일부 실시형태에서, VF(324 및 326)는 메모리 액세스 요청을 IOMMU(322)에 제공하며, 메모리 액세스 요청은 메모리 요청에 의해 타깃팅된 가상 어드레스 및 각 VF마다 고유한 요청자 ID를 포함한다. 예를 들어, VF-A(324)는 자신의 메모리 액세스 요청과 함께 "REQUEST ID-A"의 요청자 ID를 송신하고, VF-B는 자신의 메모리 액세스 요청과 함께 "REQUEST ID-B"의 요청자 ID를 송신한다. 요청자 ID는 I/O 장치 하드웨어(예를 들어, 장치 번호 및 가상 기능 번호)에 의해 및/또는 시스템 바이오스 펌웨어 또는 하이퍼바이저(308)(예를 들어, 버스 번호)에 의해 부분적으로 제어될 수 있다. IOMMU(322)는, 요청자 ID로의 VM TAG의 매핑을 포함하는, 메모리(312)에 저장된 장치 테이블(340)을 사용하여 수신된 요청자 ID와 관련된 VM TAG를 룩업함으로써 DMA 동작의 요청자 ID에 기초하여 VM TAG 값을 결정한다.
일부 시나리오에서, 악의적인 엔티티는 IOMMU(322)를 에뮬레이팅함으로써(예를 들어, 소프트웨어 에뮬레이션을 통해) VM에 대한 보안 정보에 액세스하려고 시도할 수 있다. 이들 시나리오를 처리하기 위해, 일부 실시형태에서 IOMMU(322) 및 VM(304, 306)은 IOMMU(322)가 에뮬레이팅되고 있지 않음을 보장하기 위해 무결성 검사 절차를 수행할 수 있다. 특히, IOMMU(322)의 무결성을 검사하기 위해, VM(304, 306)은 지정된 커맨드를 메모리(312)에서의 대응하는 보안 정보 공간에 기록할 수 있다. 예를 들어, 일부 실시형태에서, VM(304, 306)은 각각의 VM이 페이지 테이블을 변경할 때에 IOMMU TLB 무효화 커맨드를 대응하는 보안 정보 공간의 지정된 위치에 기록한다. IOMMU(322)는 보안 정보 공간으로부터 커맨드를 판독하고, (예를 들어, 자신의 TLB(336)에서 구 어드레스 변환의 임의의 캐싱된 사본을 무효화함으로써) 커맨드를 실행하며, 커맨드의 완료 시 지정된 값을 대응하는 보안 정보 공간의 지정된 위치에 기록한다(즉, 지정된 위치에 저장된 커맨드를 오버라이팅한다). IOMMU는 지정된 값을 메모리 제어기(320)를 통해 메모리(312)에 기록하여, 지정된 값이 커맨드를 발행한 VM에 대한 대응하는 암호화 키를 사용하여 기록된다. 커맨드를 발행한 VM은 지정된 값에 대한 지정된 위치를 주기적으로 체크한다. VM이 지정된 위치에 기록된 부정확한 값을 식별하는 경우, 또는 지정된 위치에서의 커맨드가 지정된 시간량 내에 오버라이팅되지 않는 경우, VM은 페이지 테이블 커맨드가 발행된 엔티티가 인가되지 않은 것을 결정하고, 그 후 VM은 시정 조치를 취할 수 있다. 무결성 검사를 수행하기 위해 보안 정보 공간을 사용함으로써, 프로세서(302)는 비인가 엔티티가 보안 정보 공간에 액세스하기 위해 IOMMU(322)를 에뮬레이팅할 수 없다는 것을 보장한다. 특히, 비인가 엔티티는, 지정된 값을 적절하게 암호화할 수 없으므로(정확한 암호화 키를 인식하지 못하기 때문에) 지정된 값을 메모리(312)에 기록할 수 없다.
일부 실시형태에서, IOMMU(322)는 요청의 가상 메모리 어드레스와 함께 포함된 하나 이상의 비트에 기초하여, 메모리 액세스 요청이 보안 메모리 액세스 요청인지 여부를 식별한다. 예를 들어, 이하의 도 4 및 도 5에서 더욱 설명되는 바와 같이, 가상 어드레스는 액세스 요청이 보안/비보안인지 여부를 나타내는 C-비트를 포함한다. 요청이 비보안인 경우, IOMMU(322)는 암호화 모듈(332)을 우회하여 암호화 또는 복호없이 메모리 액세스 요청을 충족시킨다.
요청이 (예를 들어, C-비트가 어서트되는 것에 기초한) 보안 메모리 액세스 요청인 경우, IOMMU(322)는 VF 요청 DMA(예를 들어, 메모리 액세스 요청을 생성한 VF(324 및 326) 중 하나)에 의해 제공된 요청자 ID(예를 들어, REQUEST ID-A 또는 ID-B)에 기초하여 장치 테이블(340)을 사용하여 VM TAG를 룩업한다. 식별된 VM TAG는, 어느 암호화 키가 DMA 요청과 함께 사용되어야 하는지를 식별하는 메모리 제어기(320)의 암호화 모듈(332)에 제공된다(즉, 메모리 판독은 관련 키를 사용하여 메모리(312)로부터 데이터를 복호한다. 메모리 기록은 관련 키를 사용하여 메모리(312)로 이동하는 데이터를 암호화한다). 따라서, 암호화 모듈(332)은 IOMMU로부터 출력된 VM TAG에 대응하는 보안 키(328 및 330) 중 하나를 선택하고, 선택된 키를 사용하여 메모리 액세스 정보(판독 데이터 또는 기록 데이터)에 대한 암호화(기록 요청의 경우) 또는 복호(판독 요청의 경우)를 수행한다.
IOMMU(322)는 또한 어드레스 변환을 위해 사용될 I/O 장치(318)와 관련된 (페이지 테이블(338) 내의) 페이지 테이블 정보를 룩업한다. IOMMU(322)는 I/O 장치(318)에 의해 사용된 장치 가상 어드레스와 메모리(312) 내의 물리 어드레스 간의 주소 변환을 수행하기 위한 어드레스 변환 모듈(334) 및 변환 색인 버퍼(TLB)(336)를 포함한다. IOMMU(322)는 TLB(336) 및 메모리(312) 내의 페이지 테이블(338)을 사용하여 메모리 액세스 요청에 의해 타깃팅되는 메모리의 특정 페이지에 대한 물리 어드레스를 획득한다. 페이지 테이블(338)은 가상 어드레스를 물리 어드레스에 매핑한다. 물리 어드레스는 메모리의 페이지에 액세스하기 위해 메모리 제어기(320)에 의해 사용된다. 일부 실시형태에서, IOMMU 어드레스 변환 후에 도출되는 물리 어드레스는 암호화 모듈(332)로의 전달을 위해 VM TAG를 인코딩하도록 용도 변경된 그의 상위 비트를 가질 수 있다. 다른 실시형태에서, VM TAG는 또한 물리 어드레스와 별도로 전송될 수 있다.
IOMMU(322)는 요청자 ID에 기초하여 VM TAG를 룩업하고, DMA 요청에 의해 타깃팅된 물리 어드레스를 메모리 제어기(320)에 전달한다. 일부 실시형태에서, IOMMU 어드레스 변환 후에 도출되는 물리 어드레스는 암호화 모듈(332)로의 전달을 위해 VM TAG를 인코딩하도록 용도 변경된 그의 상위 비트를 가질 수 있다. 다른 실시형태에서, VM TAG는 또한 물리 어드레스와 별도로 전송될 수 있다. 메모리 제어기가 요청을 수신할 때에는, VM TAG에 기초하여 암호화 키를 룩업하고, 그 후 암호화 모듈을 사용하여 메모리를 암호화/복호한다. 이것은 I/O 장치(318) 상에서 실행하는 VF가 자신의 관련 VM과 동일한 암호화 키(예를 들어, KEY-A(328) 및 KEY-B(330))를 참조함으로써 메모리(312)의 암호화된 메모리 영역을 직접 액세스할 수 있게 하며, VM(304, 306) 및 하이퍼바이저(308)와의 상호 작용을 필요로 하지 않는다. 전술한 바와 같이, 데이터의 암호 보호는 메모리 제어기(320)에서 발생하고, 암호 보호에 사용되는 보안 키는 알려지지 않고 VF(324, 326) 및 VM(304, 306) 및 하이퍼바이저(308)에 액세스할 수 없다. 이것은 하나의 VF가 다른 VM/VF에 대한 보안 정보에 액세스할 수 없다는 것을 보장한다.
DMA 요청은 일반적으로 메모리 제어기(320)에 전달되지만, (DMA 요청과 함께 제공되고 VM TAG를 룩업하기 위해 장치 테이블(340)에 의해 사용되는 요청자 ID 값에 기초하여) 적절한 VM TAG를 가질 수도 아닐 수도 있어, 적절한 암호 키 또는 잘못된 암호 키를 사용하여 메모리 액세스가 발생할 수 있다. 예를 들어, 요청자 VF에 의해 제공된 요청자 ID와 관련된 VM TAG가 정확한 보안 키와 일치하는 경우, 메모리 액세스 요청은 메모리 트래픽을 암호화/복호하기 위해 적절한 보안 키와 함께 암호화 모듈(332)에 전달되어, 요청자 VF가 자신의 관련 VM의 보안 메모리 공간에 액세스할 수 있게 한다. 그러나 요청자 VF에 의해 제공된 요청자 ID와 관련된 VM TAG가 정확한 보안 키와 일치하지 않는 경우, 보안 메모리 공간 내의 물리 메모리는 여전히 판독 또는 기록되지만, 복호/암호화에 대해 잘못된 키를 사용한다. 잘못된 보안 키를 사용하는 판독은 진정한 플레인텍스트가 복호 후에 리턴되지 않게 한다.
예를 들어, 일부 실시형태에서, VF-A(324)는 보안 정보(316)(VF-B(326)에 대한 보안 정보)에 액세스하기 위한 메모리 액세스 요청을 발행할 수 있다. 메모리 액세스 요청이 VF-A(324)에 의해 생성되었기 때문에, IOMMU(322)는 VF-A(324)와 관련된 VM TAG를 룩업하고 메모리 제어기(320)에 제공하기 위해 메모리(312)에서의 장치 테이블(340)에 액세스할 것이다. VF-A(324)의 VM-A 태그는, 암호화 모듈(332)을 사용하여 제공된 VM-A 태그와 관련된 보안 키를 룩업하는 메모리 제어기(320)에 제공된다. 메모리 액세스 요청에 의해 타깃팅된 보안 정보(316)는 원래 보안 데이터를 암호화하는 데 사용된 KEY-B(330)가 아니라 KEY-A(328)를 사용하여 복호된다. 따라서, VF-A는, 부정확한 키를 사용하여 복호됨에 따라, 복호된 데이터를 의미있게 또는 정확하게 해석할 수 없을 것이다. 따라서, VM-B(306)/VF-B(326)에 대한 보안 정보(316)는 VF-A(324)에 의한 액세스로부터 암호로 격리된다.
도 4는 일부 실시형태에 따라 메모리 액세스 요청에 대한 보안 유형(예를 들어, 보안 또는 비보안)의 식별을 가능하게 하는 IOMMU(322)의 일부를 도시한다. 특히, 도 4는 어드레스 변환 모듈(434) 및 변환 색인 버퍼(TLB)(436)를 도시한다. 어드레스 변환 모듈(434)은 일반적으로, 대응하는 메모리 액세스 요청에 대한 가상 어드레스를 VF(예를 들어, 도 3의 VF-A(324) 및 VF-B(326))로부터 수신하도록 구성된다. 어드레스 변환 모듈(434)은 각각의 수신된 가상 어드레스를, 메모리 액세스 요청에 의해 타깃팅된 메모리(312)의 위치를 식별하는 대응하는 물리 어드레스로 변환한다.
어드레스 변환 모듈(434)은 가상 어드레스를 대응하는 물리 어드레스로 변환하기 위해 (예를 들어, 도 3의 메모리(312) 내의) TLB(436) 및 페이지 테이블(438) 중 하나 또는 둘다를 사용한다. 페이지 테이블(438)은 가상 어드레스에 의해 인덱싱된 복수의 엔트리(예를 들어, 엔트리(402))를 포함한다. 일부 실시형태에서, 페이지 테이블(438)은 다중 레벨 페이지 테이블이며, 이에 따라 상위 페이지는 가상 어드레스와 관련된 다른 페이지를 식별하는 엔트리를 포함하고, 하위 레벨 페이지는 가상 어드레스에 할당된 물리 어드레스를 식별한다. 물리 어드레스는 페이지 워크(page walk)에서 페이지 테이블을 트래버싱(traversing)함으로써 식별될 수 있고, 여기서 최상위 레벨의 페이지가 먼저 액세스되어, 물리 어드레스를 포함하는 최하위 레벨의 페이지 테이블이 식별되고 물리 어드레스가 해당의 최상위 레벨의 페이지 테이블로부터 검색될 때까지 액세스될 다음 레벨 등에서 페이지를 식별한다. 최하위 레벨의 페이지 테이블은 또한 물리 어드레스에 대응하는 데이터가 암호로 보호되는지 여부를 나타내는 비트("C- 비트"로 지정됨)를 저장한다. TLB(436)는 어드레스 변환 모듈(434)에 의해 최근에 수신된 가상 어드레스를 반영하는 페이지 테이블(438)의 엔트리의 서브세트를 함께 저장하는 복수의 엔트리(예를 들어, 엔트리(404))를 포함한다.
가상 어드레스를 수신하는 것에 응답하여, 어드레스 변환 모듈(434)은 TLB(436)에 액세스하여 그것이 가상 어드레스에 대응하는 엔트리를 포함하는지 여부를 결정한다. 어드레스의 C 비트 부분은 IOMMU(322)에 의해 사용되어 메모리 액세스 요청이 보안 메모리 액세스 요청인지 여부를 식별한다. 따라서, 예를 들어, 물리 어드레스 값 내의 C-비트가 어서트 상태에 있는 경우, 메모리 IOMMU(322)는 대응하는 메모리 액세스 요청을 보안 메모리 액세스 요청으로서 식별하고, IOMMU(322)는 요청자에 대응하는 VM TAG를 룩업한다. 어드레스 변환 모듈(434)은 VM TAG 값을 물리 어드레스에 첨부하고, 보안 모듈을 검색하기 위해 암호화 모듈에 의해 사용될 결과적인 물리 어드레스 값을 제공한다. 페이지 테이블 엔트리 내의 C-비트가 디어써트된(deasserted) 경우, IOMMU(322)는 VM 태그를 물리 어드레스에 첨부하지 않고, 암호화 또는 복호화없이 메모리 액세스가 진행된다.
도 5는 일부 실시형태에 따라 암호 보호를 위해 지정된 정보를 보호하기 위해 메모리 제어기에서 직접 메모리 액세스 요청을 처리하는 방법(500)의 흐름도를 도시한다. 설명의 목적으로, 방법(500)은 도 3의 IOMMU(322)에서의 예시적인 구현예와 관련하여 설명된다. 블록 502에서, IOMMU(322)는 요청자 VF로부터 메모리 액세스 요청을 수신한다. 메모리 액세스 요청은 VF(324 또는 326) 중 하나에 의해 생성된 요청일 수 있다. 도 1 내지 도 4와 관련하여 전술한 바와 같이, 메모리 액세스 요청에 대한 어드레스 값은 메모리 액세스 요청이 보안 메모리 액세스 요청인지 여부를 나타내는 C-비트 값, 및 요청자 VF를 식별하는 요청자 ID 값을 포함할 수 있다.
블록 504에서, IOMMU(322)는 메모리 액세스 요청에 대한 C-비트가 어서트되는지 여부를 결정한다. 그렇지 않다면, 메모리 액세스 요청은 비보안 메모리 액세스 요청이고, 방법 흐름은 블록 506으로 이동하며, 메모리 제어기(320)는 암호화 모듈(332)을 우회하여 메모리 액세스 요청을 충족시킨다. 기록 요청의 경우, 메모리 제어기(320)는 기록 정보를 암호화하지 않아, 메모리(312)는 기록 정보를 암호화되지 않은 형태로 저장한다. 판독 요청의 경우, 메모리 제어기(320)는 메모리(312)로부터 정보를 검색하여 정보를 복호하지 않고 요청자 VF에 제공한다.
블록 504로 되돌아가서, IOMMU(322)가 메모리 액세스 요청에 대한 C-비트가 어서트된 것을 식별하는 경우에는, 메모리 액세스 요청은 보안 메모리 액세스 요청이다. 따라서, 방법 흐름은 블록 508로 이동하고, IOMMU(322)는 도 3에서 설명된 장치 테이블(340)을 사용하여 요청자 VF의 요청자 ID에 기초하여 VM TAG를 룩업한다. VM TAG가 메모리 제어기(320)에 제공되고, 방법 흐름은 블록 510으로 진행한다. 블록 510에서, 메모리 제어기(320)는 제공된 VM TAG에 대응하는 보안 키(328 및 330) 중 하나를 식별한다. 블록 512에서, 암호화 모듈(332)은 메모리 액세스 요청을 충족시키기 위해 사용될 정보를 암호화하거나 복호한다. 즉, 메모리 액세스 요청이 기록 요청인 경우, 암호화 모듈(332)은 식별된 보안 키를 사용하여 기록될 정보를 암호화한다. 메모리 액세스 요청이 판독 요청인 경우, 메모리 제어기(320)는 메모리(312)로부터 판독될 정보를 검색하고, 암호화 모듈(332)은 식별된 보안 키를 사용하여 검색된 정보를 복호한다. 블록 514에서, 메모리 제어기(320)는 암호화된(기록 요청의 경우) 또는 복호된(판독 요청의 경우) 정보를 사용하여 메모리 액세스 요청을 충족시킨다.
일부 실시형태에서, 전술한 장치 및 기술은 도 1 내지 도 5를 참조하여 전술한 프로세서와 같은 하나 이상의 집적 회로(IC) 장치(집적 회로 패키지 또는 마이크로 칩이라고도 지칭됨)를 갖는 시스템으로 구현된다. 전자 설계 자동화(EDA) 및 컴퓨터 지원 설계(CAD) 소프트웨어 툴이 이들 IC 장치의 설계 및 제조에 사용될 수 있다. 이러한 설계 툴은 전형적으로 하나 이상의 소프트웨어 프로그램으로서 표현된다. 하나 이상의 소프트웨어 프로그램은, 회로를 제조하기 위한 제조 시스템을 설계 또는 적응시키기 위한 프로세스의 적어도 일부를 수행하도록 하나 이상의 IC 장치의 회로를 나타내는 코드 상에서 동작하도록 컴퓨터 시스템을 조작하기 위해 컴퓨터 시스템에 의해 실행 가능한 코드를 포함한다. 이 코드는 명령어, 데이터, 또는 명령어와 데이터의 조합을 포함할 수 있다. 설계 툴 또는 제조 툴을 나타내는 소프트웨어 명령어는 전형적으로 컴퓨팅 시스템에 액세스 가능한 비일시적 컴퓨터 판독가능 저장 매체 내에 저장된다. 마찬가지로, IC 장치의 설계 또는 제조의 하나 이상의 단계를 나타내는 코드는 동일한 컴퓨터 판독가능 저장 매체 또는 다른 컴퓨터 판독가능 저장 매체 내에 저장되고 그로부터 액세스될 수 있다.
컴퓨터 판독가능 저장 매체는 명령어 및/또는 데이터를 컴퓨터 시스템에 제공하기 위해 사용 중에 컴퓨터 시스템에 의해 액세스 가능한 임의의 저장 매체 또는 저장 매체의 조합을 포함할 수 있다. 이러한 저장 매체는 광학 매체(예를 들어, CD(Compact Disc), DVD(Digital Versatile Disc), 블루-레이 디스크), 자기 매체(예를 들어, 플로피 디스크, 자기 테이프, 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(예를 들어, 판독 전용 메모리(ROM) 또는 플래시 메모리), 또는 마이크로전자기계 시스템(MEMS) 기반 저장 매체를 포함할 수 있지만, 이에 한정되지 않는다. 컴퓨터 판독가능 저장 매체는 컴퓨팅 시스템에 내장되거나(예를 들어, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정식으로 부착되거나(예를 들어, 자기 하드 드라이브), 컴퓨팅 시스템에 착탈식으로 부착되거나(예를 들어, 광학 디스크 또는 유니버설 직렬 버스(USB) 기반 플래시 메모리), 또는 유선 또는 무선 네트워크를 통해 컴퓨터 시스템에 연결될 수 있다(예를 들어, 네트워크 액세스가능 스토리지(NAS)).
일반적인 설명으로 전술한 활동 또는 요소의 전부가 필요한 것은 아니며, 특정 활동 또는 장치의 일부는 필요하지 않을 수 있고, 설명된 것 이외에도 하나 이상의 추가 활동이 수행될 수 있거나, 또는 요소가 포함될 수 있다는 점에 유의해야 한다. 또한, 활동이 열거되는 순서가 반드시 그들이 수행되는 순서는 아니다 또한, 개념이 특정 실시형태를 참조하여 설명되어 있다. 그러나, 당업자는 이하의 청구범위에 설명된 바와 같이 본 개시의 범위를 벗어나지 않고 다양한 수정 및 변경이 이루어질 수 있음을 이해한다. 따라서, 명세서 및 도면은 제한적인 의미라기보다는 예시적인 것으로 간주되어야 하며, 이러한 모든 수정은 본 개시의 범위 내에 포함되는 것으로 의도된다.
이점, 다른 장점, 및 문제에 대한 해결책이 특정 실시형태와 관하여 전술되어 있다. 그러나, 이점, 장점, 문제점에 대한 해결책, 및 발생하거나 보다 현저하게 되는 임의의 이점, 장점, 또는 해결책을 유발할 수 있는 임의의 특징(들)은 임의의 또는 모든 청구범위의 중요한, 필요한, 또는 필수적인 특징으로서 해석되지 않아야 한다. 또한, 상기 개시된 특정 실시형태는, 개시된 주제가 본 명세서의 교시의 이점을 갖는 당업자에게 명백한 상이하지만 동등한 방식으로 수정되고 실시될 수 있으므로 단지 예시적인 것이다. 이하의 청구범위에 기술된 것 이외의 본 명세서에 나타낸 구성 또는 설계의 세부 사항에 어떠한 제한도 의도되어 있지 않다. 따라서, 상기 개시된 특정 실시형태는 변경되거나 수정될 수 있으며, 이러한 모든 변형은 개시된 주제의 범위 내에서 고려되는 것이 명백하다. 따라서, 본 명세서에서 구하는 보호는 이하의 청구범위에 기술된 바와 같다.

Claims (20)

  1. 프로세서[102]의 입력/출력 메모리 관리 유닛(IOMMU)[120]에서, 메모리[104] 내의 메모리 공간에 액세스하기 위해 입력/출력(IO) 장치로부터 메모리 액세스 요청을 수신하는 단계로서, 상기 메모리 액세스 요청은 메모리 어드레스 값 및 요청자 ID를 포함하는, 상기 수신하는 단계;
    상기 IOMMU에서, 상기 요청자 ID와 관련된 식별 태그 값을 결정하는 단계; 및
    상기 식별 태그 값에 대응하는 보안 키[124]를 사용하여 상기 메모리 공간의 상기 메모리 어드레스 값에서 데이터에 액세스하는 단계;를 포함하는, 방법.
  2. 제1항에 있어서, 상기 IO 장치로부터의 상기 메모리 액세스 요청을 수신하는 단계는 상기 IO 장치 상에 구성된 가상 기능(VF)[218]으로부터 상기 메모리 액세스 요청을 수신하는 단계를 포함하는, 방법.
  3. 제1항에 있어서, 상기 식별 태그 값을 결정하는 단계는 장치 테이블[236]을 사용하여 상기 요청자 ID에 기초하여 상기 식별 태그 값을 룩업하는 단계를 포함하는, 방법.
  4. 제1항에 있어서,
    상기 메모리 액세스 요청과 관련된 가상 머신(VM)[204]을 식별하는 단계를 더 포함하고, 상기 보안 키는 상기 식별된 VM에 대응하는, 방법.
  5. 제4항에 있어서,
    상기 프로세서와 별도의 보안 모듈[108]로부터 상기 보안 키를 수신하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서,
    상기 메모리 액세스 요청이 비보안(non-secure) 메모리 공간의 상기 메모리 어드레스 값에서 데이터에 액세스하는 것임을 결정하는 것에 응답하여, 상기 보안 키를 사용하지 않고 상기 비보안 메모리 공간에서 데이터에 액세스하는 단계를 더 포함하는, 방법.
  7. 제1항에 있어서,
    상기 메모리 액세스 요청이 보안 메모리 공간의 상기 메모리 어드레스 값에서 데이터에 액세스하기 위한 기록 액세스 요청임을 결정하는 것에 응답하여, 상기 보안 키를 사용하여 상기 보안 메모리 공간에 기록하기 위한 데이터를 암호화하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서,
    상기 메모리 액세스 요청이 보안 메모리 공간의 상기 메모리 어드레스 값에서 데이터에 액세스하기 위해 인가된 판독 액세스 요청임을 결정하는 것에 응답하여, 상기 보안 키를 사용하여 상기 보안 메모리 공간으로부터 판독된 데이터를 복호하는 단계를 더 포함하는, 방법.
  9. 제1항에 있어서,
    메모리 매핑된 I/O(MMIO) 레지스터에 액세스하기 위한 IOMMU에서의 요청을 수신하는 것에 응답하여, 상기 식별 태그 값에 기초하여 상기 MMIO 레지스터에 대한 액세스를 허용하는 단계를 더 포함하는, 방법.
  10. 제1항에 있어서,
    가상 머신으로부터의 커맨드를 상기 보안 메모리 공간에 기록하는 단계;
    상기 커맨드에 응답하여 상기 IOMMU에서 상기 커맨드를 실행하는 단계;
    상기 IOMMU에 의해, 커맨드를 실행하는 것에 응답하여 지정된 값을 갖는 메모리 공간에서 상기 커맨드를 오버라이팅(overwriting)하는 단계; 및
    상기 가상 머신이 상기 보안 메모리 공간에서 상기 지정된 값을 판독하는 것에 응답하여 상기 IOMMU를 인증하는 단계를 더 포함하는, 방법.
  11. 프로세서[102]로서,
    메모리 제어기[116]를 포함하고, 상기 메모리 제어기는,
    입력/출력(IO) 장치[106]로부터의 메모리 액세스 요청을 수신하여 메모리[104] 내의 메모리 공간[130]에 액세스하기 위한 입력/출력 메모리 관리 유닛(IOMMU)[120]; 및
    상기 메모리 액세스 요청과 관련된 식별 태그 값에 기초하여 상기 메모리 공간 내의 데이터에 대한 암호화 액세스를 제공하기 위한 암호화 모듈[122]을 포함하는, 프로세서.
  12. 제11항에 있어서,
    상기 식별 태그 값은 상기 메모리 액세스 요청에 포함된 요청자 ID에 기초하여 결정되는, 프로세서.
  13. 제12항에 있어서,
    상기 요청자 ID에 기초하여, 상기 암호화 모듈에 전달될 상기 식별 태그 값을 결정하기 위한 장치 테이블[236]을 더 포함하는, 프로세서.
  14. 제12항에 있어서,
    상기 요청자 ID를 상기 식별 태그 값과 관련시키기 위한 하이퍼바이저[208]를 더 포함하는, 프로세서.
  15. 프로세서[102]로서,
    프로세서 코어(110); 및
    입력/출력 메모리 관리 유닛(IOMMU)[120];을 포함하고, 상기 입력 출력 메모리 관리 유닛(IOMMU)은,
    가상 머신(VM)[204]과 관련된 메모리[104] 내의 보안 메모리 공간에 액세스하기 위해 입력/출력(IO) 장치[106]로부터 메모리 액세스 요청을 수신하는 것 - 상기 메모리 액세스 요청은 메모리 어드레스 값 및 상기 VM을 나타내는 요청자 ID를 포함함 -;
    상기 요청자 ID와 관련된 식별 태그 값을 결정하는 것; 및
    상기 식별 태그 값에 대응하는 보안 키를 사용하여 상기 보안 메모리 공간의 상기 메모리 어드레스 값에서 데이터에 액세스하는 것인, 프로세서.
  16. 제15항에 있어서,
    상기 보안 키를 저장하기 위해 상기 프로세서 코어와 분리된 보안 모듈[108]을 더 포함하는, 프로세서.
  17. 제16항에 있어서, 상기 보안 모듈은,
    상기 VM으로부터의 요청에 응답하여 보안 키를 생성하는, 프로세서.
  18. 제17항에 있어서,
    상기 메모리 액세스 요청이 상기 보안 메모리 공간의 상기 메모리 어드레스 값에서 데이터에 액세스하기 위해 인가된 기록 액세스 요청임을 결정하는 것 응답하여 상기 보안 메모리 공간에 기록하기 위해 상기 보안 키를 사용하여 데이터를 암호화하기 위한 암호화 모듈[122]을 포함하는 메모리 제어기[116]를 더 포함하는, 프로세서.
  19. 제18항에 있어서, 상기 암호화 모듈은,
    상기 메모리 액세스 요청이 상기 보안 메모리 공간의 상기 메모리 어드레스 값에서 데이터에 액세스하기 위해 인가된 판독 액세스 요청임을 결정하는 것에 응답하여 상기 보안 키를 사용하여 상기 보안 메모리 공간으로부터 판독된 데이터를 복호하는 것인, 프로세서.
  20. 제15항에 있어서, 상기 메모리 액세스 요청은 상기 IO 장치 상에 구성된 가상 기능(VF)에 의해 요청되는, 프로세서.
KR1020197010624A 2016-10-19 2017-10-17 처리 시스템에서의 직접 메모리 액세스 인가 KR102107711B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/297,868 US10176122B2 (en) 2016-10-19 2016-10-19 Direct memory access authorization in a processing system
US15/297,868 2016-10-19
PCT/US2017/057005 WO2018075535A1 (en) 2016-10-19 2017-10-17 Direct memory access authorization in a processing system

Publications (2)

Publication Number Publication Date
KR20190075063A true KR20190075063A (ko) 2019-06-28
KR102107711B1 KR102107711B1 (ko) 2020-05-07

Family

ID=61904502

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197010624A KR102107711B1 (ko) 2016-10-19 2017-10-17 처리 시스템에서의 직접 메모리 액세스 인가

Country Status (6)

Country Link
US (1) US10176122B2 (ko)
EP (1) EP3529738A4 (ko)
JP (1) JP6618658B2 (ko)
KR (1) KR102107711B1 (ko)
CN (1) CN109844751B (ko)
WO (1) WO2018075535A1 (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710401B2 (en) 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
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
US10817447B2 (en) * 2016-11-14 2020-10-27 Intel Corporation Input/output translation lookaside buffer (IOTLB) quality of service (QoS)
US10771439B2 (en) * 2017-06-28 2020-09-08 Microsoft Technology Licensing, Llc Shielded networks for virtual machines
US10325109B2 (en) * 2017-09-14 2019-06-18 International Business Machines Corporation Automatic and dynamic selection of cryptographic modules for different security contexts within a computer network
US10706493B2 (en) 2017-12-29 2020-07-07 Intel Corporation Apparatus and method for display virtualization using mapping between virtual and physical display planes
US11789874B2 (en) 2018-01-09 2023-10-17 Qualcomm Incorporated Method, apparatus, and system for storing memory encryption realm key IDs
US11138132B2 (en) * 2018-06-20 2021-10-05 Intel Corporation Technologies for secure I/O with accelerator devices
WO2020041583A1 (en) * 2018-08-22 2020-02-27 Qualcomm Incorporated Method, apparatus, and system for storing memory encryption realm key ids
US11836091B2 (en) * 2018-10-31 2023-12-05 Advanced Micro Devices, Inc. Secure memory access in a virtualized computing environment
CN109684030B (zh) * 2018-11-22 2021-05-04 海光信息技术股份有限公司 虚拟机内存密钥生成装置、以及方法、加密方法和SoC系统
US11256427B2 (en) 2018-12-28 2022-02-22 Micron Technology, Inc. Unauthorized memory access mitigation
US11347869B2 (en) * 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11494211B2 (en) * 2019-04-22 2022-11-08 Advanced Micro Devices, Inc. Domain identifier and device identifier translation by an input-output memory management unit
US20200387326A1 (en) * 2019-06-10 2020-12-10 Advanced Micro Devices, Inc. Guest Operating System Buffer and Log Accesses by an Input-Output Memory Management Unit
US11593529B2 (en) * 2019-07-29 2023-02-28 Intel Corporation Device interface security management for computer buses
US11003588B2 (en) * 2019-08-22 2021-05-11 Advanced Micro Devices, Inc. Networked input/output memory management unit
CN112825041A (zh) * 2019-11-21 2021-05-21 上海海思技术有限公司 一种内存隔离的装置、内存隔离方法和相关设备
CN111274555B (zh) * 2020-01-15 2022-11-18 福建杰木科技有限公司 Flash存储器中的代码保护方法及保护装置
US11604671B2 (en) 2020-03-19 2023-03-14 Red Hat, Inc. Secure virtual machine and peripheral device communication
EP3913512A1 (en) * 2020-05-21 2021-11-24 BAE SYSTEMS plc On-die computer apparatus
EP4154140B1 (en) * 2020-05-21 2024-04-10 BAE SYSTEMS plc On-die computer apparatus
US11748135B2 (en) * 2020-07-30 2023-09-05 Red Hat, Inc. Utilizing virtual input/output memory management units (IOMMU) for tracking encryption status of memory pages
KR20220041586A (ko) 2020-09-25 2022-04-01 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 전자 시스템
CN112257092B (zh) * 2020-11-05 2023-10-27 海光信息技术股份有限公司 数据传输控制方法、密钥管理方法、配置方法及相关装置
CN112433817B (zh) * 2020-11-27 2022-11-25 海光信息技术股份有限公司 信息配置方法、直接存储访问方法及相关装置
US20220188135A1 (en) * 2020-12-10 2022-06-16 Ati Technologies Ulc Hardware-based protection of virtual function resources
US11893410B2 (en) 2021-01-13 2024-02-06 Vmware, Inc. Secure storage of workload attestation reports in a virtualized and clustered computer system
US11709700B2 (en) * 2021-01-13 2023-07-25 Vmware, Inc. Provisioning identity certificates using hardware-based secure attestation in a virtualized and clustered computer system
US20220308756A1 (en) * 2021-03-26 2022-09-29 Ati Technologies Ulc Performing Memory Accesses for Input-Output Devices using Encryption Keys Associated with Owners of Pages of Memory
US20230040900A1 (en) * 2021-07-27 2023-02-09 International Business Machines Corporation Secure memory isolation for secure endpoints
US11874777B2 (en) 2021-12-16 2024-01-16 International Business Machines Corporation Secure communication of virtual machine encrypted memory
CN114238185A (zh) * 2021-12-20 2022-03-25 海光信息技术股份有限公司 直接存储访问及命令数据传输方法、装置及相关设备
US11860797B2 (en) * 2021-12-30 2024-01-02 Advanced Micro Devices, Inc. Peripheral device protocols in confidential compute architectures
US20230393780A1 (en) * 2022-06-02 2023-12-07 Micron Technology, Inc. Memory controller firmware virtualization

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120072619A1 (en) * 2010-09-16 2012-03-22 Red Hat Israel, Ltd. Memory Overcommit by Using an Emulated IOMMU in a Computer System with a Host IOMMU
US20130080726A1 (en) * 2011-09-25 2013-03-28 Andrew G. Kegel Input/output memory management unit with protection mode for preventing memory access by i/o devices
US20140068137A1 (en) * 2012-08-29 2014-03-06 Andrew G. Kegel Virtual Input/Output Memory Management Unit Within a Guest Virtual Machine
US20150248357A1 (en) * 2014-02-28 2015-09-03 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
US20160224496A1 (en) * 2011-04-21 2016-08-04 International Business Machines Corporation Techniques for mapping device addresses to physical memory addresses

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721068B2 (en) * 2006-06-12 2010-05-18 Oracle America, Inc. Relocation of active DMA pages
JP6402034B2 (ja) * 2011-09-13 2018-10-10 フェイスブック,インク. コンピュータ内の情報を安全に保つシステム及び方法
US9063891B2 (en) * 2012-12-19 2015-06-23 Advanced Micro Devices, Inc. Secure computer system for preventing access requests to portions of system memory by peripheral devices and/or processor cores
US9990221B2 (en) * 2013-03-15 2018-06-05 Oracle International Corporation System and method for providing an infiniband SR-IOV vSwitch architecture for a high performance cloud computing environment
US9798678B2 (en) * 2015-04-02 2017-10-24 International Business Machines Corporation Protecting storage from unauthorized access

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120072619A1 (en) * 2010-09-16 2012-03-22 Red Hat Israel, Ltd. Memory Overcommit by Using an Emulated IOMMU in a Computer System with a Host IOMMU
US20160224496A1 (en) * 2011-04-21 2016-08-04 International Business Machines Corporation Techniques for mapping device addresses to physical memory addresses
US20130080726A1 (en) * 2011-09-25 2013-03-28 Andrew G. Kegel Input/output memory management unit with protection mode for preventing memory access by i/o devices
US20140068137A1 (en) * 2012-08-29 2014-03-06 Andrew G. Kegel Virtual Input/Output Memory Management Unit Within a Guest Virtual Machine
US20150248357A1 (en) * 2014-02-28 2015-09-03 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system

Also Published As

Publication number Publication date
WO2018075535A1 (en) 2018-04-26
EP3529738A4 (en) 2020-02-26
JP2019532438A (ja) 2019-11-07
KR102107711B1 (ko) 2020-05-07
US20180107608A1 (en) 2018-04-19
EP3529738A1 (en) 2019-08-28
CN109844751B (zh) 2021-02-02
US10176122B2 (en) 2019-01-08
JP6618658B2 (ja) 2019-12-11
CN109844751A (zh) 2019-06-04

Similar Documents

Publication Publication Date Title
KR102107711B1 (ko) 처리 시스템에서의 직접 메모리 액세스 인가
CN110447032B (zh) 管理程序与虚拟机之间的存储器页转换监测
CN106062768B (zh) 处理系统中信息的密码保护
JP7158985B2 (ja) セキュアなパブリッククラウドのための暗号メモリオーナーシップテーブル
US11030117B2 (en) Protecting host memory from access by untrusted accelerators
US20170277898A1 (en) Key management for secure memory address spaces
US10372628B2 (en) Cross-domain security in cryptographically partitioned cloud
US10938559B2 (en) Security key identifier remapping
CN107526974B (zh) 一种信息密码保护装置和方法
CN106716435B (zh) 设备与安全处理环境之间的接口
JP2022512051A (ja) メモリ完全性チェックのための完全性ツリー
JP6672341B2 (ja) 仮想マシンの状態情報の保護
JP2009064126A (ja) Icカードシステム、その端末装置、プログラム

Legal Events

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