KR20220151126A - 하드웨어 신뢰 실행 환경들의 레이턴시 감소 - Google Patents

하드웨어 신뢰 실행 환경들의 레이턴시 감소 Download PDF

Info

Publication number
KR20220151126A
KR20220151126A KR1020220138601A KR20220138601A KR20220151126A KR 20220151126 A KR20220151126 A KR 20220151126A KR 1020220138601 A KR1020220138601 A KR 1020220138601A KR 20220138601 A KR20220138601 A KR 20220138601A KR 20220151126 A KR20220151126 A KR 20220151126A
Authority
KR
South Korea
Prior art keywords
tee
tees
enclave
workload
memory
Prior art date
Application number
KR1020220138601A
Other languages
English (en)
Inventor
안조 루카스 바흘디엑-오베르와그너
라비 엘. 사히타
모나 비즈
라메쉬쿠마르 일리칼
마이클 스테이너
토마스 노스
드미트리 쿠바이스키
수다 크리쉬나쿠마르
크리스토프 씨. 즈무드진스키
빈센트 스칼라타
프란시스 맥킨
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20220151126A publication Critical patent/KR20220151126A/ko

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0623Securing storage systems in relation to content
    • 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/0653Monitoring storage devices or 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/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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • 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/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

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

Abstract

예시적인 방법들 및 시스템들은 신뢰 실행 환경들(TEE들)을 제공함에 있어서 레이턴시를 감소시키는 것에 관한 것이다. TEE를 초기화하는 것은 TEE가 실행을 시작하기 전에 다수의 단계들을 포함한다. 작업부하-특정적 초기화 외에, TEE에 메모리를 추가하는 것과 같은, 작업부하-독립적 초기화가 수행된다. 서비스형 함수(FaaS) 환경들에서, TEE의 대부분은 작업부하-독립적이고, 따라서 작업부하를 수신하기 전에 수행될 수 있다. TEE 초기화 동안 수행되는 특정 단계들은 작업부하들의 특정 클래스들에 대해 동일하다. 따라서, TEE 초기화 시퀀스의 공통 부분들은 TEE가 요청되기 전에 수행될 수 있다. TEE가 클래스에서의 작업부하에 대해 요청되고 TEE를 그의 특정 목적을 위해 전문화하는 부분들이 알려져 있을 때, TEE를 초기화하는 최종 단계들이 수행된다.

Description

하드웨어 신뢰 실행 환경들의 레이턴시 감소{REDUCING LATENCY OF HARDWARE TRUSTED EXECUTION ENVIRONMENTS}
본 명세서에 개시된 주제는 일반적으로 하드웨어 신뢰 실행 환경(trusted execution environment, TEE)들에 관한 것이다. 구체적으로, 본 개시내용은 하드웨어 TEE들의 레이턴시를 감소시키기 위한 시스템들 및 방법들을 다룬다.
하드웨어 특권 레벨들은 디바이스 상에서 실행되는 애플리케이션들에 의한 메모리 액세스를 제한하기 위해 프로세서에 의해 사용될 수 있다. 운영 체제는 더 높은 특권 레벨에서 실행되고 디바이스의 모든 메모리에 액세스하고 다른 애플리케이션들에 대한 메모리 범위들을 정의할 수 있다. 더 낮은 특권 레벨을 실행하는 애플리케이션들은 운영 체제에 의해 정의된 범위 내의 메모리에 액세스하는 것으로 제한되고, 다른 애플리케이션들 또는 운영 체제의 메모리에 액세스할 수 없다. 그러나, 애플리케이션은 악성 또는 손상된 운영 체제로부터의 보호를 갖지 않는다.
TEE는 TEE 내부에 로딩된 코드 및 데이터가 TEE 외부에서 실행되는 코드에 의한 액세스로부터 보호되는 것을 보장하는 프로세서 보호들에 의해 인에이블(enable)된다. 따라서, TEE는 하드웨어 레벨에서 운영 체제를 포함하는 악성 소프트웨어로부터 TEE에 포함된 데이터 및 코드의 액세스를 방지하는 격리된 실행 환경을 제공한다.
일부 실시예들은 첨부 도면들의 도면들에서 제한으로서가 아닌 예로서 예시된다.
도 1은 일부 예시적인 실시예들에 따른, TEE들을 사용하여 서비스형 함수들(functions as a service)을 제공하는 서버들에 적합한 네트워크 환경을 예시하는 네트워크 다이어그램이다.
도 2는 일부 예시적인 실시예들에 따른 TEE들의 레이턴시를 감소시키기에 적합한, 일부 예시적인 실시예들에 따른 서비스형 함수 서버(function-as-a-service server)의 블록도이다.
도 3은 종래 기술의 링 기반 메모리 보호의 블록도이다.
도 4는 일부 예시적인 실시예들에 따른 TEE들의 레이턴시를 감소시키기에 적합한 엔클레이브(enclave) 기반 메모리 보호의 블록도이다.
도 5는 TEE들의 레이턴시 감소에 사용하기에 적합한, 일부 예시적인 실시예들에 따른, 데이터베이스 스키마의 블록도이다.
도 6은 일부 예시적인 실시예들에 따른, TEE를 구축함에 있어서 수행되는 동작들의 시퀀스의 블록도이다.
도 7은 일부 예시적인 실시예들에 따른, TEE들을 초기화하고 TEE들에 대한 액세스를 제공하기에 적합한 방법의 동작들을 예시하는 흐름도이다.
도 8은 일부 예시적인 실시예들에 따른, TEE들을 초기화하고 TEE들에 대한 액세스를 제공하기에 적합한 방법의 동작들을 예시하는 흐름도이다.
도 9는 일부 예시적인 실시예들에 따른, TEE들을 초기화하고 TEE들에 대한 액세스를 제공하기에 적합한 방법의 동작들을 예시하는 흐름도이다.
도 10은 컴퓨팅 디바이스에 대한 소프트웨어 아키텍처의 일 예를 보여주는 블록도이다.
도 11은 머신으로 하여금 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위한 명령어들이 실행될 수 있는 컴퓨터 시스템의 예시적인 형태의 머신의 블록도이다.
예시적인 방법들 및 시스템들은 TEE들을 제공함에 있어서의 레이턴시를 감소시키는 것에 관한 것이다. 가장 일반적인 의미에서, TEE는, 신뢰가 어떻게 획득되는지에 관계없이, 임의의 신뢰 실행 환경이다. 그러나, 본 명세서에서 사용되는 바와 같이, TEE들은, TEE 외부의 프로세스들이 상승된 특권 레벨에서 실행되고 있더라도, 그 프로세스들에 의한 액세스로부터 보호되는 메모리의 일부분 내의 코드를 실행함으로써 제공된다. 예시적인 TEE들은 Intel® SGX(Software Guard Extensions)에 의해 생성된 엔클레이브들 및 Intel® TDX(Trust Domain Extensions)에 의해 생성된 신뢰 도메인들을 포함한다.
TEE들은 TEE 외부의 모든 소프트웨어로부터 기밀 정보(confidential information)를 보호함으로써 기밀 정보의 보안 처리를 가능하게 하기 위해 사용될 수 있다. TEE들은 또한 모듈러 프로그래밍(modular programming)에 사용될 수 있고, 여기서 각각의 모듈은 다른 모듈들에 의해 야기되는 취약점들에 노출되지 않고서 그 자신의 기능성을 위해 필요한 모든 것을 포함한다. 예를 들어, 하나의 TEE에 대해 성공적인 코드 주입 공격(code injection attack)은 다른 TEE의 코드에 영향을 줄 수 없다.
전체 메모리 암호화(total memory encryption, TME)는 메모리 내의 데이터가 프로세서를 우회함으로써 액세스되는 것으로부터 보호한다. 시스템은 부트 시에 프로세서 내에 암호화 키를 생성하고, 프로세서 외부에 키를 결코 저장하지 않는다. TME 암호화 키는 리부트들에 걸쳐 지속되지 않고 프로세서 외부에 결코 저장되지 않기 때문에 임시 키이다. 프로세서에 의해 메모리에 기입된 모든 데이터는 암호화 키를 사용하여 암호화되고 메모리로부터 다시 판독될 때 복호화된다. 따라서, 프로세서 중개 없이 메모리로부터 직접 데이터를 판독하려고 시도하는 하드웨어 기반 공격은 실패할 것이다.
멀티-키 TME(MKTME)는 TME를 확장하여 다수의 키를 사용한다. 개별 메모리 페이지들은 TME의 임시 키를 사용하여 또는 소프트웨어-제공 키(software-provided key)들을 사용하여 암호화될 수 있다. 이것은 소프트웨어 기반 공격들에 대해 TME에 비해 증가된 보안을 제공할 수 있는데, 그 이유는 공격자가 공격 소프트웨어가 액세스를 획득한 임의의 메모리를 프로세서가 자동으로 복호화하게 하기보다는 목표 소프트웨어에 의해 사용되는 특정 키를 식별할 필요가 있을 것이기 때문이다.
TEE를 초기화하는 것은 TEE가 실행을 시작할 수 있기 전에 다수의 단계들을 요구하여, TEE들을 반복적으로 생성하고 파괴하는 애플리케이션들에서의 레이턴시를 야기한다. 작업부하-특정적 초기화 외에, 엔클레이브에 메모리를 추가하는 것과 같은, 작업부하-독립적 초기화가 수행된다. 서비스형 함수(function-as-a-service, FaaS) 환경들에서, TEE의 대부분은 작업부하-독립적이고, 따라서 작업부하를 수신하기 전에 수행될 수 있다.
FaaS 플랫폼들은 애플리케이션 로직을 실행하지만 데이터를 저장하지 않는 클라우드 컴퓨팅 서비스들을 제공한다. 서비스형 플랫폼(platform-as-a-service, PaaS) 호스팅 제공자들과 대조적으로, FaaS 플랫폼들은 끊임없이 실행되는 서버 프로세스를 갖지 않는다. 그 결과, FaaS 플랫폼에 대한 초기 요청은 PaaS 호스트에 대한 동등한 요청보다 핸들링하는데 더 오래 걸릴 수 있지만, 감소된 유휴 시간 및 더 높은 확장성의 이점이 있다. 본 명세서에 설명된 바와 같이, 초기 요청을 핸들링하는 레이턴시를 감소시키는 것은 FaaS 해결책의 매력을 향상시킨다.
엔클레이브 초기화 동안 수행되는 특정 단계들은 작업부하들의 특정 클래스들에 대해 동일하다. 예를 들어, 클래스 내의 각각의 엔클레이브는 힙 메모리(heap memory)를 사용할 수 있다. 따라서, 엔클레이브 초기화 시퀀스의 공통 부분들(예를 들어, 힙 메모리의 추가)은 엔클레이브가 요청되기 전에 수행될 수 있다. 엔클레이브가 클래스에서의 작업부하에 대해 요청되고 엔클레이브를 그의 특정 목적을 위해 전문화하는 부분들이 알려져 있을 때, 엔클레이브를 초기화하는 최종 단계들이 수행된다. 이것은 엔클레이브에 대한 요청에 응답하여 모든 초기화 단계들을 수행하는 것에 비해 레이턴시를 감소시킨다.
TEE는 특정 작업부하에 대해 미리 초기화될 수 있다. TEE는 템플릿 TEE인 것으로 간주된다. 작업부하에 대한 TEE가 요청될 때, 템플릿 TEE가 포킹(fork)되고, 새로운 사본이 요청된 TEE로서 제공된다. 기존의 TEE를 포킹하는 것이 처음부터 새로운 TEE를 생성하는 것보다 더 빠르기 때문에, 레이턴시가 감소된다.
TEE는 특정 작업부하에 대해 미리 초기화되고 판독-전용으로 마킹될 수 있다. TEE는 템플릿 TEE인 것으로 간주된다. 작업부하에 대한 TEE가 요청될 때, 템플릿 TEE에 대한 판독-전용 액세스를 갖는 새로운 TEE가 생성된다. 템플릿 TEE가 판독-전용인 한, 다수의 TEE들은 템플릿 TEE에 안전하게 액세스할 수 있다. 템플릿 TEE에 대한 액세스를 갖는 새로운 TEE의 생성은 처음부터 템플릿 TEE의 모든 코드 및 데이터를 갖는 새로운 TEE를 생성하는 것보다 더 빠르기 때문에, 레이턴시가 감소된다.
일부 예시적인 실시예들에서, 본 명세서에 설명되는 바와 같이, 임시 키를 사용하여 TEE를 생성하기 위해 FaaS 이미지가 사용된다. FaaS에 대한 TEE가 요청될 때, 임시 키에 액세스-제어 키 식별자가 할당되어, 이에 응답하여 TEE의 신속한 프로비저닝을 허용한다.
엔클레이브들을 초기화하는 기존의 방법들과 비교하여, 본 명세서에서 논의되는 방법들 및 시스템들은 레이턴시를 감소시킨다. 레이턴시의 감소는 TEE들에서 추가적인 기능성이 보호되는 것, 더 미세한 입도의 TEE들이 사용되는 것, 또는 양자 모두를 허용하여, 시스템 보안을 증가시킬 수 있다. 이러한 효과들이 종합적으로 고려될 때, 본 명세서에 설명되는 방법론들 중 하나 이상은 TEE들을 초기화함에 있어서 그렇지 않으면 수반되었을 특정 노력들 또는 자원들에 대한 필요성을 제거할 수 있다. 하나 이상의 머신, 데이터베이스, 또는 네트워크에 의해 사용되는 컴퓨팅 자원들이 유사하게 감소될 수 있다. 이러한 컴퓨팅 자원들의 예들은 프로세서 사이클들, 네트워크 트래픽, 메모리 사용량, 데이터 저장 용량, 전력 소비, 및 냉각 용량(cooling capacity)을 포함한다.
도 1은 일부 예시적인 실시예들에 따른, TEE들을 사용하여 서비스형 함수들을 제공하는 서버들에 적합한 네트워크 환경(100)을 예시하는 네트워크 다이어그램이다. 네트워크 환경(100)은 FaaS 서버들(110A 및 110B), 클라이언트 디바이스들(120A 및 120B), 및 네트워크(130)를 포함한다. FaaS 서버들(110A-110B)은 네트워크(130)를 통해 클라이언트 디바이스들(120A-120B)에 함수들을 제공한다. 클라이언트 디바이스들(120A 및 120B)은 상이한 테넌트들의 디바이스들일 수 있어, 각각의 테넌트는 그들의 테넌트 특정 데이터 및 코드가 다른 테넌트들에 의해 액세스가능하지 않은 것을 보장하기를 원한다. 따라서, FaaS 서버들(110A-110B)은 제공된 각각의 FaaS에 대한 엔클레이브를 사용할 수 있다.
함수들을 제공함에 있어서 레이턴시를 감소시키기 위해, TEE 생성에서의 레이턴시를 감소시키기 위한 본 명세서에 설명된 시스템들 및 방법들이 사용될 수 있다. 예를 들어, 함수에 대한 TEE는 함수가 클라이언트 디바이스(120)에 의해 요청되기 전에 FaaS 서버(110)에 의해 부분적으로 또는 전체적으로 생성될 수 있다.
FaaS 서버들(110A-110B) 및 클라이언트 디바이스들(120A 및 120B)은 각각 도 9와 관련하여 아래에 설명되는 바와 같이, 전체적으로 또는 부분적으로, 컴퓨터 시스템에서 구현될 수 있다. FaaS 서버들(110A 및 110B)은 집합적으로 FaaS 서버들(110)로서 또는 일반적으로 FaaS 서버(110)로서 지칭될 수 있다. 클라이언트 디바이스들(120A 및 120B)은 집합적으로 클라이언트 디바이스들(120)로서 또는 일반적으로 클라이언트 디바이스(120)로서 지칭될 수 있다.
도 1에 도시된 머신들, 데이터베이스들, 또는 디바이스들 중 임의의 것은 그 머신, 데이터베이스, 또는 디바이스에 대해 본 명세서에 설명된 함수들을 수행하기 위해 특수 목적 컴퓨터가 되도록 소프트웨어에 의해 수정된(예를 들어, 구성되거나 프로그래밍된) 범용 컴퓨터에서 구현될 수 있다. 예를 들어, 본 명세서에 설명된 방법론들 중 임의의 하나 이상을 구현할 수 있는 컴퓨터 시스템이 도 9와 관련하여 아래에서 논의된다. 본 명세서에서 사용되는 바와 같이, "데이터베이스"는 데이터 저장 자원이고, 텍스트 파일, 테이블, 스프레드시트, 관계형 데이터베이스(예를 들어, 객체-관계형 데이터베이스), 트리플 스토어(triple store), 계층적 데이터 스토어, 문서-지향 NoSQL 데이터베이스, 파일 스토어, 또는 이들의 임의의 적합한 조합으로서 구조화된 데이터를 저장할 수 있다. 데이터베이스는 인-메모리 데이터베이스(in-memory database)일 수 있다. 또한, 도 1에 예시된 머신들, 데이터베이스들, 또는 디바이스들 중 임의의 2개 이상은 단일 머신, 데이터베이스, 또는 디바이스로 조합될 수 있고, 임의의 단일 머신, 데이터베이스, 또는 디바이스에 대해 본 명세서에 설명된 함수들은 다수의 머신들, 데이터베이스들, 또는 디바이스들 사이에 세분될 수 있다.
FaaS 서버들(110) 및 클라이언트 디바이스들(120)은 네트워크(130)에 의해 접속된다. 네트워크(130)는 머신들, 데이터베이스들, 및 디바이스들 사이에 또는 그들 간에 통신을 가능하게 하는 임의의 네트워크일 수 있다. 따라서, 네트워크(130)는 유선 네트워크, 무선 네트워크(예를 들어, 모바일 또는 셀룰러 네트워크), 또는 이들의 임의의 적합한 조합일 수 있다. 네트워크(130)는 사설 네트워크, 공중 네트워크(예를 들어, 인터넷), 또는 이들의 임의의 적합한 조합을 구성하는 하나 이상의 부분을 포함할 수 있다.
도 2는 일부 예시적인 실시예들에 따른 TEE들의 레이턴시를 감소시키기에 적합한, 일부 예시적인 실시예들에 따른 FaaS 서버(110A)의 블록도이다. FaaS 서버(110A)는 통신 모듈(210), 애플리케이션의 비신뢰 컴포넌트(220), 애플리케이션의 신뢰 컴포넌트(230), 신뢰 도메인 모듈(240), 쿼팅 엔클레이브(quoting enclave)(250), 공유 메모리(260), 및 전용 메모리(private memory)(270)를 포함하는 것으로 도시되며, 이들 모두는 (예를 들어, 버스, 공유 메모리, 또는 스위치를 통해) 서로 통신하도록 구성된다. 본 명세서에 설명된 모듈들 중 임의의 하나 이상은 하드웨어(예를 들어, 머신의 프로세서)를 사용하여 구현될 수 있다. 예를 들어, 본 명세서에 설명된 임의의 모듈은 그 모듈에 대해 본 명세서에 설명된 동작들을 수행하도록 구성되는 프로세서에 의해 구현될 수 있다. 또한, 이들 모듈들 중 임의의 2개 이상은 단일 모듈로 조합될 수 있고, 단일 모듈에 대해 본 명세서에 설명된 함수들은 다수의 모듈들 사이에서 세분될 수 있다. 또한, 다양한 예시적인 실시예들에 따르면, 단일 머신, 데이터베이스, 또는 디바이스 내에 구현되는 것으로서 본 명세서에 설명된 모듈들은 다수의 머신들, 데이터베이스들, 또는 디바이스들에 걸쳐 분산될 수 있다.
통신 모듈(210)은 FaaS 서버(110A)에 전송된 데이터를 수신하고, FaaS 서버(110A)로부터 데이터를 송신한다. 예를 들어, 통신 모듈(210)은 클라이언트 디바이스(120A)로부터 함수를 수행하라는 요청을 수신할 수 있다. 함수가 수행된 후에, 함수의 결과들은 통신 모듈(210)에 의해 클라이언트 디바이스(120A)에 제공된다. 통신 모듈(210)에 의해 송신 및 수신되는 통신들은 네트워크(130)에 의해 중개될 수 있다.
비신뢰 컴포넌트(220)는 엔클레이브 외부에서 실행된다. 따라서, 운영 체제 또는 다른 비신뢰 컴포넌트들이 손상되면, 비신뢰 컴포넌트(220)는 공격에 취약하다. 신뢰 컴포넌트(230)는 엔클레이브 내에서 실행된다. 따라서, 운영 체제 또는 비신뢰 컴포넌트(220)가 손상되더라도, 신뢰 컴포넌트(230)의 데이터 및 코드는 안전하게 유지된다.
신뢰 도메인 모듈(240)은 엔클레이브들을 생성하고 보호하며, 비신뢰 컴포넌트(220)와 신뢰 컴포넌트(230) 사이에서 실행을 전이(transitioning)하는 것을 담당한다. 서명된 코드가 신뢰 도메인 모듈(240)에 제공될 수 있고, 신뢰 도메인 모듈(240)은 코드가 서명된 이후로 수정되지 않았음을 검증한다. 서명된 코드는 엔클레이브의 일부인 것으로서 마킹된 물리적 메모리의 일부분에 로딩된다. 그 후, 하드웨어 보호들은 비신뢰 소프트웨어에 의한 엔클레이브 메모리의 액세스, 수정, 실행, 또는 이들의 임의의 적합한 조합을 방지한다. 코드는 신뢰 도메인 모듈(240)에 대해서만 이용가능한 키를 사용하여 암호화될 수 있다.
신뢰 컴포넌트(230)가 초기화되면, 비신뢰 컴포넌트(220)는 비신뢰 모드로부터 신뢰 모드로 전이하는 신뢰 도메인 모듈(240)의 특수 프로세서 명령어들을 사용하여 신뢰 컴포넌트(230)의 함수들을 호출할 수 있다. 신뢰 컴포넌트(230)는 파라미터 검증을 수행하고, 파라미터들이 유효하면 요청된 함수를 수행하고, 신뢰 도메인 모듈(240)을 통해 비신뢰 컴포넌트(220)에 제어를 반환한다.
신뢰 도메인 모듈(240)은 Intel® SGX, Intel® TDX, AMD® SEV(secure encrypted virtualization), ARM® TrustZone, 또는 이들의 임의의 적합한 조합을 제공하는 Intel® 하드웨어 프로세서의 하나 이상의 컴포넌트로서 구현될 수 있다. Intel® SGX에서, 증명은 소프트웨어 엔티티가 비밀들 및 보호된 데이터로 그 소프트웨어를 프로비저닝하기 전에 엔클레이브 내에서 보호되는 Intel® SGX 가능형 플랫폼 상에서 실행되고 있는 것을 제3 엔티티가 확립하는 메커니즘이다. 증명은 엔클레이브의 보안 속성들에 관한 정보를 포함하는 엔클레이브의 서명을 정확하게 반영하는 자격증명(credential)을 생성하는 플랫폼의 능력에 의존한다. Intel® SGX 아키텍처는 2가지 형태의 증명을 지원하는 메커니즘들을 제공한다. 로컬 또는 플랫폼-내(intra-platform) 증명을 지원하는, 동일한 플랫폼 상에서 실행되는 엔클레이브들 사이에 기본 어써션(assertion)을 생성하는 메커니즘, 및 이어서 엔클레이브와 원격 제3자 사이의 증명을 위한 토대를 제공하는 또 다른 메커니즘이 있다.
쿼팅 엔클레이브(250)는 엔클레이브들(예를 들어, 신뢰 컴포넌트(230))에 대한 증명을 생성한다. 증명은, 비대칭 암호화를 사용하고 빌트인 프로세서 함수들에 의해 지원되는, 호스트(예를 들어, FaaS 서버(110A))와 증명된 엔클레이브를 고유하게 식별하는 증거 구조(evidence structure)이다. 증명은 통신 모듈(210)을 통해 클라이언트 디바이스(120)에 제공될 수 있어서, 클라이언트 디바이스(120)가 신뢰 컴포넌트(230)가 손상되지 않았다는 것을 확인할 수 있게 한다. 예를 들어, 프로세서는 키의 액세스를 방지하는 하드웨어를 사용하여 빌트인 개인 키로 제조될 수 있다. 이 개인 키를 사용하여, 증명 구조는 프로세서에 의해 서명될 수 있고, 하드웨어 제조자에 의해 발행된 대응하는 공개 키를 사용하여, 서명은 클라이언트 디바이스(120)에 의해 확인될 수 있다. 이것은 클라이언트 디바이스(120)가 원격 디바이스(예를 들어, FaaS 서버(110A)) 상의 엔클레이브가 변조되지 않고서 실제로 생성되었음을 보장할 수 있게 한다.
비신뢰 컴포넌트(220)와 신뢰 컴포넌트(230) 양자 모두는 공유 메모리(260)에 액세스하고 이를 수정할 수 있지만, 신뢰 컴포넌트(230)만이 전용 메모리(270)에 액세스하고 이를 수정할 수 있다. 단지 하나의 비신뢰 컴포넌트(220), 하나의 신뢰 컴포넌트(230), 및 하나의 전용 메모리(270)가 도 2에 도시되어 있지만, 각각의 애플리케이션은, 각각이 대응하는 전용 메모리(270)를 갖는 다수의 신뢰 컴포넌트들(230), 및 어떠한 전용 메모리(270)에도 액세스하지 않는 다수의 비신뢰 컴포넌트들(220)을 가질 수 있다. 또한, 다수의 애플리케이션들은 별개의 메모리 공간들, 및 따라서 별개의 공유 메모리들(260)로 실행될 수 있다. 이러한 맥락에서, "공유"는 메모리가, 시스템 상에서 실행되는 모든 애플리케이션들에 의해 반드시 액세스가능한 것이 아니라, 메모리 공간에 대한 액세스를 갖는 모든 소프트웨어 및 하드웨어(예를 들어, 애플리케이션 및 그것의 운영 체제)에 의해 액세스가능한 것을 지칭한다.
도 3은 종래 기술의 링 기반 메모리 보호의 블록도(300)이다. 블록도(300)는 애플리케이션들(310 및 320) 및 운영 체제(330)를 포함한다. 운영 체제(330)는 링 0(Intel® 및 AMD® 프로세서들), 예외 레벨 1(ARM® 프로세서들), 또는 동등한 특권 레벨에서 프로세서 커맨드들을 실행한다. 애플리케이션들(310-320)은 링 3(Intel® 및 AMD® 프로세서들), 예외 레벨 0(ARM® 프로세서들), 또는 동등한 특권 레벨에서 프로세서 커맨드들을 실행한다.
하드웨어 프로세서는 더 낮은 특권 레벨에서 실행되고 있는 코드가 운영 체제에 의해 정의된 메모리 범위 외부의 메모리에 액세스하는 것을 방지한다. 따라서, 애플리케이션(310)의 코드는 (도 3에서 "X"로 도시된 바와 같이) 운영 체제(330) 또는 애플리케이션(320)의 메모리에 직접 액세스할 수 없다. 운영 체제(330)는 (예를 들어, 호출 게이트들, Intel® 프로세서들 상의 SYSENTER/SYSEXIT 명령어들, AMD® 프로세서들 상의 SYSCALL/SYSRET 명령어들, 또는 이들의 임의의 적합한 조합 또는 등가물에 의해) 특정 액세스 포인트들을 미리 정의함으로써 일부 기능성을 애플리케이션들(310-320)에 노출시킨다.
운영 체제(330)는 모든 메모리에 액세스하므로, 애플리케이션들(310 및 320)은 악성 운영 체제로부터 보호되지 않는다. 예를 들어, 경쟁자는 애플리케이션(310)의 코드 및 데이터에 대한 액세스를 얻기 위해 애플리케이션(310)을 실행하기 전에 운영 체제를 수정하여, 리버스 엔지니어링(reverse engineering)을 허용할 수 있다.
추가적으로, 애플리케이션이 운영 체제(330)에서의 취약점을 이용하고 그 자신을 운영 체제의 특권 레벨로 승격할 수 있는 경우, 애플리케이션은 모든 메모리에 액세스할 수 있을 것이다. 예를 들어, (도 3에서 애플리케이션들(310 및 320) 사이에 X로 도시된 바와 같이) 애플리케이션(320)의 메모리에 정상적으로 액세스할 수 없는 애플리케이션(310)은 그 자신을 링 0 또는 예외 레벨 1로 승격한 후에 애플리케이션(320)의 메모리에 액세스할 수 있을 것이다. 따라서, 사용자가 속아서 악성 프로그램(예를 들어, 애플리케이션(310))을 실행하는 경우, 사용자 또는 애플리케이션 제공자의 전용 데이터(private data)(예를 들어, 애플리케이션(320)에 의해 사용되는 뱅킹 패스워드)가 메모리로부터 직접 액세스될 수 있다.
도 4는 일부 예시적인 실시예들에 따른 TEE들의 레이턴시를 감소시키기에 적합한 엔클레이브 기반 메모리 보호의 블록도(400)이다. 블록도(400)는 애플리케이션(410), 엔클레이브(420), 및 운영 체제(430)를 포함한다. 운영 체제(430)는 링 0(Intel® 및 AMD® 프로세서들), 예외 레벨 1(ARM® 프로세서들), 또는 동등한 특권 레벨에서 프로세서 커맨드들을 실행한다. 애플리케이션(410) 및 엔클레이브(420)는 링 3(Intel® 및 AMD® 프로세서들), 예외 레벨 0(ARM® 프로세서들), 또는 동등한 특권 레벨에서 프로세서 커맨드들을 실행한다.
운영 체제(430)는 엔클레이브(420)의 메모리를 할당하고 엔클레이브(420)에 로딩될 코드 및 데이터를 프로세서에 표시한다. 그러나, 일단 인스턴스화되면, 운영 체제(430)는 엔클레이브(420)의 메모리에 액세스하지 않는다. 따라서, 운영 체제(430)가 악성이거나 손상되더라도, 엔클레이브(420)의 코드 및 데이터는 안전하게 유지된다.
엔클레이브(420)는 애플리케이션(410)에 기능성을 제공할 수 있다. 운영 체제(430)는 (예를 들어, ECALL 명령어를 사용하여) 애플리케이션(410)이 엔클레이브(420)의 함수들을 호출하도록 허용되어 있는지를 제어할 수 있다. 따라서, 악성 애플리케이션이 운영 체제(430)를 손상시킴으로써 엔클레이브(420)의 함수들을 호출하는 능력을 얻을 수 있다. 그럼에도 불구하고, 하드웨어 프로세서는 악성 애플리케이션이 엔클레이브(420)의 메모리 또는 코드에 직접 액세스하는 것을 방지할 것이다. 따라서, 엔클레이브(420) 내의 코드는 함수들이 올바르게 또는 비-공격자에 의해 호출되고 있다고 가정할 수 없지만, 엔클레이브(420) 내의 코드는 파라미터 검사 및 다른 내부 보안 조치들에 대한 완전한 제어(full control)를 가지며, 그의 내부 보안 취약성들에만 영향을 받는다.
도 5는 TEE들의 레이턴시 감소에 사용하기에 적합한, 일부 예시적인 실시예들에 따른, 데이터베이스 스키마의 블록도이다. 데이터베이스 스키마(500)는 엔클레이브 테이블(510)을 포함한다. 엔클레이브 테이블(510)은 포맷(520)의 행들(530A, 530B, 530C, 및 530D)을 포함한다.
엔클레이브 테이블(510)의 포맷(520)은 엔클레이브 식별자 필드, 상태 필드, 판독-전용 필드, 및 템플릿 식별자 필드를 포함한다. 행들(530A-530D) 각각은 단일 엔클레이브에 대한 데이터를 저장한다. 엔클레이브 식별자는 엔클레이브에 대한 고유 식별자이다. 예를 들어, 엔클레이브가 생성될 때, 신뢰 도메인 모듈(240)은 다음 미사용 식별자를 생성된 엔클레이브에 할당할 수 있다. 상태 필드는 초기화중(생성되었지만 아직 사용할 준비가 되지 않음), 초기화됨(사용할 준비가 되었지만 아직 사용 중이 아님), 및 할당됨(사용 중임)과 같은 엔클레이브의 상태를 표시한다. 판독-전용 필드는 엔클레이브가 판독-전용인지 여부를 표시한다. 템플릿 식별자 필드는 이 엔클레이브가 판독-전용 액세스를 갖는 다른 엔클레이브의 엔클레이브 식별자를 포함한다.
따라서, 도 5의 예에서, 4개의 엔클레이브가 엔클레이브 테이블(510)에 도시된다. 엔클레이브들 중 하나는 초기화중이고, 2개는 초기화됨이고, 하나는 할당됨이다. 행(530A)의 엔클레이브 0은 판독-전용 엔클레이브이고 행(530B)의 엔클레이브 1에 대한 템플릿으로서 사용된다. 따라서, 프로세서는 엔클레이브 0이 실행되는 것을 방지하지만, 엔클레이브 1은 엔클레이브 0의 데이터 및 코드에 액세스한다. 템플릿으로서 엔클레이브 0을 또한 사용하는 추가적인 엔클레이브들이 생성될 수 있어, 소비되는 메모리의 양을 곱하지 않고서 다수의 엔클레이브들이 엔클레이브 0의 데이터 및 코드에 액세스할 수 있게 한다. 행들(530B-530D)의 엔클레이브들 1-3은 판독-전용이 아니며, 따라서 실행될 수 있다.
도 6은 일부 예시적인 실시예들에 따른, TEE를 구축함에 있어서 신뢰 도메인 모듈(240)에 의해 수행되는 동작들의 시퀀스의 블록도(600)이다. 도 6에 도시된 바와 같이, 동작들의 시퀀스는 ECREATE, EADD/EEXTEND, EINIT, EENTER, 및 FUNCTION START를 포함한다. ECREATE 연산은 엔클레이브를 생성한다. EADD 연산은 초기 힙 메모리를 엔클레이브에 추가한다. EEXTEND 연산을 사용하여 부가의 메모리가 추가될 수 있다. EINIT 연산은 실행을 위한 TEE를 초기화한다. 그 후, 비신뢰 컴포넌트(220)는 신뢰 도메인 모듈(240)에 EENTER 연산을 수행하도록 요청함으로써 TEE에 실행을 전달(transfer)한다. TEE의 신뢰된 FUNCTION은, FUNCTION START CALL에 응답하여, TEE 내의 코드를 실행함으로써 수행된다.
도 6에 도시된 바와 같이, 연산들은 적어도 2가지 방식으로 분할될 수 있다. 하나의 분할은, ECREATE, EADD/EEXTEND, 및 EINIT 연산들이 호스트 애플리케이션(예를 들어, 비신뢰 컴포넌트(220))에 의해 수행되고 EENTER 연산이 FUNCTION을 수행하는 TEE에 제어를 전달하는 것을 보여준다. 다른 분할은, TEE의 생성 및 TEE에 대한 힙 메모리의 할당이 TEE에 추가될 특정 코드 및 데이터에 관계없이 수행될 수 있는 반면("작업부하-독립적 연산들"), TEE의 초기화 및 TEE 함수의 후속 호출은 로딩되는 특정 코드 및 데이터에 종속한다("작업부하-종속적 연산들")는 것을 보여준다.
TEE들의 풀(pool)은 TEE들이 요청되기 전에 작업부하-독립적 연산들을 수행함으로써 사전-초기화될 수 있다. 본 명세서에서 사용되는 바와 같이, 사전-초기화된 TEE는 TEE가 애플리케이션에 의해 요청되기 전에 적어도 하나의 연산이 개시된 TEE이다. 예를 들어, TEE는 TEE가 요청되기 전에 ECREATE 연산에 의해 생성될 수 있다. TEE에 대한 요청을 수신하는 것에 응답하여, 작업부하-종속적 연산들이 수행된다. 요청이 수신되기 전에 작업부하-독립적 연산들을 수행하지 않는 해결책들과 비교하여, 레이턴시가 감소된다. 일부 예시적인 실시예들에서, TEE의 사전-초기화를 위한 연산들은 TEE에 대한 요청을 수신하는 것과 병렬로 수행된다. 예를 들어, TEE에 대한 ECREATE 연산이 시작될 수 있고, ECREATE 연산이 완료되기 전에, TEE에 대한 요청이 수신된다. 따라서, 사전-초기화는 TEE에 대한 요청이 수신되기 전에 특정 시간량 동안 작업부하-독립적 연산들을 완료하는 것에 의해 정의되지 않지만, TEE에 대한 요청이 수신되기 전에 작업부하-독립적 연산들을 시작하는 것에 의해 정의된다.
FaaS 환경의 경우, 각각의 함수는 작업부하 독립적이고 작업부하-종속적 연산들이 수행되기 전에 초기화되는 공통 런타임 환경을 공유할 수 있다. FaaS 함수의 기동 시간은 FaaS 서비스들에서 중요한 메트릭인데, 이는 더 짧은 기동 시간들이 서비스의 더 높은 탄력성을 허용하기 때문이다.
도 7은 일부 예시적인 실시예들에 따른, TEE들을 초기화하고 TEE들에 대한 액세스를 제공하기에 적합한 방법(700)의 동작들을 예시하는 흐름도이다. 방법(700)은 동작들(710, 720, 730 및 740)을 포함한다. 제한이 아닌 예로서, 방법(700)은 도 2 내지 도 4에 도시된 모듈들, 데이터베이스들, 및 구조들을 사용하여, 도 1의 FaaS 서버(110A)에 의해 수행될 수 있다.
동작(710)에서, 신뢰 도메인 모듈(240)은 엔클레이브들의 풀을 사전-초기화한다. 예를 들어, 엔클레이브를 생성하고 힙 메모리를 엔클레이브에 할당하는 동작들은 엔클레이브들의 풀 내의 각각의 엔클레이브에 대해 수행될 수 있다. 일부 예시적인 실시예들에서, 엔클레이브들의 풀은 16-512개의 엔클레이브, 16개의 엔클레이브, 32개의 엔클레이브, 또는 128개의 엔클레이브를 포함한다.
다양한 예시적인 실시예들에서, 엔클레이브들의 풀 내의 엔클레이브들은 부분적으로 사전-초기화되거나 완전히 사전-초기화된다. 완전히 사전-초기화된 엔클레이브는 엔클레이브가 요청되기 전에 수행되는 작업부하-특정적 연산들 중 적어도 하나를 갖는다. 부분적으로 사전-초기화된 엔클레이브는 엔클레이브가 요청되기 전에 수행되는 작업부하-독립적 연산들만을 갖는다. 사전-초기화된 엔클레이브들은 임의의 엔클레이브에 대한 결과까지의 시간(time-to-result)을 감소시키지만, 이들은 초기화 오버헤드가 전체 실행 시간을 지배하는 짧은 수명의 임시 엔클레이브들(예를 들어, FaaS 작업부하들)에 특히 가치가 있다.
사전-초기화된 엔클레이브들은 템플릿 엔클레이브를 포킹하거나 복사함으로써 생성될 수 있다. 사전-초기화된 엔클레이브들의 원하는 상태로, 템플릿 엔클레이브가 먼저 생성된다. 그후, 템플릿 엔클레이브는 풀 내의 사전-초기화된 엔클레이브들 각각에 대해 포킹되거나 복사된다. 일부 예시적인 실시예들에서, 템플릿 엔클레이브 자체는 풀의 일부이다. 다른 예시적인 실시예들에서, 템플릿 엔클레이브는 판독-전용이고, 실행가능하지 않으며, 나중의 사용을 위한 템플릿으로서 보유된다. 템플릿 엔클레이브는 FaaS에 대한 메모리 콘텐츠 및 레이아웃을 포함할 수 있다.
엔클레이브들의 풀 내의 각각의 엔클레이브는 프로세서에 저장된 키를 사용하여 암호화된 메모리를 가질 수 있다. 키는 임시 키(예를 들어, TME 임시 키) 또는 프로세서 외부에서 액세스가능한 키 식별자를 갖는 키일 수 있다. 신뢰 도메인 모듈(240) 또는 MKTME 모듈은 키를 생성하고 그것을 엔클레이브에 할당할 수 있다. 따라서, 키 자체는 프로세서 외부에서 결코 노출되지 않는다. 엔클레이브에는 물리적 메모리의 일부분이 할당된다. 엔클레이브의 물리적 메모리로부터 유래하는 메모리 액세스 요청들은 엔클레이브의 키 식별자, 및 따라서 키와 연관된다. 프로세서는 엔클레이브의 물리적 메모리 외부로부터 유래하는 메모리 액세스들에 엔클레이브의 키를 적용하지 않는다. 그 결과, 비신뢰 애플리케이션들 또는 컴포넌트들(예를 들어, 비신뢰 컴포넌트(220))에 의한 메모리 액세스들은 엔클레이브의 암호화된 데이터 또는 코드만을 수신할 수 있다.
일부 예시적인 실시예들에서, 키 식별자가 없는 상이한 임시 키(예를 들어, MKTME 키)가 엔클레이브들의 풀 내의 각각의 엔클레이브를 암호화하는 데 사용된다. 그 후, FaaS에 대한 엔클레이브가 요청될 때, 신뢰 도메인 모듈(240)에 의해 임시 키에 액세스-제어 키 식별자가 할당되어, 이에 응답하여 엔클레이브의 신속한 프로비저닝을 허용한다.
동작(720)에서, 신뢰 도메인 모듈(240)은 엔클레이브에 대한 요청을 수신한다. 예를 들어, 애플리케이션의 비신뢰 컴포넌트(220)는 요청의 일부로서 신뢰 도메인 모듈(240)에 엔클레이브를 식별하는 데이터를 제공할 수 있다. 엔클레이브를 식별하는 데이터는 비신뢰 컴포넌트(220)에 의해 액세스가능한 공유 메모리(260) 내의 주소에 대한 포인터를 포함할 수 있다.
요청은 엔클레이브에 대한 미리 계산된 해시 값을 포함하고 엔클레이브에 대한 코드 및 데이터를 포함하는 공유 메모리(260)의 부분(예를 들어, 요청에 포함된 주소 및 크기에 의해 식별된 부분)을 표시할 수 있다. 신뢰 도메인 모듈(240)은 요청에 제공된 해시 값이 계산된 해시 값과 매칭되는 것을 확인하기 위해 이진 메모리 상태(예를 들어, 요청에 표시된 공유 메모리(260)의 부분)에 대한 해시 함수를 수행할 수 있다. 해시 값들이 매칭되면, 신뢰 도메인 모듈(240)은 표시된 메모리가 요청된 엔클레이브의 코드 및 데이터를 실제로 포함하는 것을 확인하였고 방법(700)은 진행할 수 있다. 해시 값들이 매칭되지 않으면, 신뢰 도메인 모듈(240)은 에러 값을 반환하여, 수정된 메모리가 엔클레이브 내로 로딩되는 것을 방지할 수 있다.
일부 예시적인 실시예들에서, 요청은 템플릿 엔클레이브의 식별자를 포함한다. 신뢰 도메인 모듈(240)은 템플릿 엔클레이브에 액세스하기 위한 판독-전용 허가들을 갖는 요청된 엔클레이브를 생성한다. 이것은 요청된 엔클레이브가 템플릿 엔클레이브의 데이터 또는 코드를 수정하지 않고서 템플릿 엔클레이브의 데이터를 판독하고 템플릿 엔클레이브의 함수들을 실행할 수 있게 한다. 따라서, 다수의 엔클레이브들은 충돌 없이 템플릿 엔클레이브에 액세스할 수 있고, 템플릿 엔클레이브의 데이터 및 코드는 (다수의 엔클레이브들 각각에 대해 한 번이 아니라) 한 번만 저장된다. 그 결과, 액세스하는 엔클레이브들의 생성 동안 더 적은 메모리가 복사되어, 레이턴시를 감소시킨다.
동작(730)에서, 수신된 요청에 응답하여, 신뢰 도메인 모듈(240)은 엔클레이브들의 사전-초기화된 풀로부터 엔클레이브를 선택한다. 신뢰 도메인 모듈(240)은, 요청과 함께 수신된 엔클레이브를 식별하는 데이터에 기초하여, 도 4에 도시된 작업부하-특정적 연산들과 같은, 선택된 엔클레이브에 대한 추가적인 연산들을 수행함으로써 선택된 엔클레이브를 수정할 수 있다. 추가적인 연산들은 요청에 표시된 공유 메모리(260) 내의 주소로부터 데이터 또는 코드를 엔클레이브에 할당된 전용 메모리(270)에 복사하는 것을 포함할 수 있다.
일부 예시적인 실시예들에서, 추가적인 연산들은 엔클레이브에 할당된 물리적 메모리를 새로운 키로 재암호화하는 것을 포함한다. 예를 들어, 사전-초기화 단계는 임시 키를 사용하여 엔클레이브의 물리적 메모리를 암호화했을 수 있고, 엔클레이브는, 대응하는 고유 키 식별자와 함께, 엔클레이브에 대한 고유 키를 사용하여 재암호화될 수 있다. 키 식별자들이 유한한 자원(예를 들어, 고정된 수의 이용가능한 키 식별자를 가짐)인 시스템들에서, 사전-초기화된 엔클레이브들에 대한 임시 키를 사용하는 것은 엔클레이브들의 풀의 최대 크기를 (예를 들어, 고정된 수의 이용가능한 키 식별자를 초과하는 크기로) 증가시킬 수 있다. 추가적인 연산들은 또한 템플릿 TEE로부터 코드 맵핑들을 도출하는 선택된 TEE에 대한 보안 EPT(extended page table) 분기를 생성하는 것을 포함할 수 있다.
신뢰 도메인 모듈(240)은 요청에 응답하여 선택된 엔클레이브에 대한 액세스를 제공한다(동작(740)). 예를 들어, 초기화된 엔클레이브의 고유 식별자가 반환되어, 엔클레이브 내의 함수를 실행하기 위한 신뢰 도메인 모듈(240)에 대한 나중의 요청(예를 들어, EENTER 커맨드)을 위한 파라미터로서 사용할 수 있다.
그 후, 신뢰 도메인 모듈(240)은 (예를 들어, 엔클레이브 퇴장 명령어를 수신하는 것에 응답하여) 선택된 엔클레이브의 실행이 완료되었다고 결정할 수 있다. 완료된 엔클레이브에 할당된 메모리는 해제될 수 있다. 대안적으로, 완료된 엔클레이브의 상태는 사전-초기화된 상태로 복원될 수 있고 엔클레이브는 풀로 반환될 수 있다. 예를 들어, 템플릿 엔클레이브가 엔클레이브 위에 복사될 수 있거나, 작업부하-특정적 연산들을 반전시키기 위한 연산들이 수행될 수 있거나, 작업부하-특정적 연산들이 수행되기 전에 엔클레이브의 체크포인트가 수행되고, 실행이 완료된 후에 체크포인트의 복원이 수행되거나, 또는 이들의 임의의 적합한 조합이 있을 수 있다.
엔클레이브에 대한 요청을 수신(동작(720))하기 전에 엔클레이브의 사전-초기화(동작(710))를 수행하지 않는 종래 기술의 구현들과 비교하여, 요청의 수신과 액세스의 제공(동작(740)) 사이의 지연이 감소된다. 레이턴시의 감소는 엔클레이브들에서 추가적인 기능성이 보호되는 것, 더 미세한 입도의 엔클레이브들이 사용되는 것, 또는 양자 모두를 허용하여, 시스템 보안을 증가시킬 수 있다. 또한, 엔클레이브가 클라이언트 디바이스(120)에 의해 네트워크(130)를 통해 호출될 때, FaaS 서버(110)로부터의 응답을 기다리는 동안 사용되는 클라이언트 디바이스(120)의 프로세서 사이클들이 감소되어, 응답성을 향상시키고 전력 소비를 감소시킨다.
도 8은 일부 예시적인 실시예들에 따른, TEE들을 초기화하고 TEE들에 대한 액세스를 제공하기에 적합한 방법(800)의 동작들을 예시하는 흐름도이다. 방법(800)은 동작들(810, 820, 830 및 840)을 포함한다. 제한이 아닌 예로서, 방법(800)은 도 2 내지 도 4에 도시된 모듈들, 데이터베이스들, 및 구조들을 사용하여, 도 1의 FaaS 서버(110A)에 의해 수행될 수 있다.
동작(810)에서, 신뢰 도메인 모듈(240)은 판독-전용으로 마킹된 템플릿 엔클레이브를 생성한다. 예를 들어, 전용 메모리(270)에 로딩된 코드 및 데이터로, 엔클레이브가 완전히 생성될 수 있다. 그러나, 템플릿 엔클레이브가 판독-전용이기 때문에, 템플릿 엔클레이브의 함수들은 비신뢰 컴포넌트(220)로부터 직접 호출될 수 없다. 도 3의 엔클레이브 테이블(310)을 참조하면, 행(330A)은 판독-전용 템플릿 엔클레이브를 도시한다.
동작(820)에서, 신뢰 도메인 모듈(240)은 엔클레이브에 대한 요청을 수신한다. 예를 들어, 애플리케이션의 비신뢰 컴포넌트(220)는 요청의 일부로서 신뢰 도메인 모듈(240)에 엔클레이브를 식별하는 데이터를 제공할 수 있다. 엔클레이브를 식별하는 데이터는 비신뢰 컴포넌트(220)에 의해 액세스가능한 공유 메모리(260) 내의 주소에 대한 포인터를 포함할 수 있다.
동작(830)에서, 수신된 요청에 응답하여, 신뢰 도메인 모듈(240)은 템플릿 엔클레이브를 복사하여 요청된 엔클레이브를 생성한다. 예를 들어, 신뢰 도메인 모듈(240)은 엔클레이브를 식별하는 데이터가 요청된 엔클레이브가 템플릿 엔클레이브와 동일한 코드 및 데이터에 대한 것임을 표시한다고 결정할 수 있다. 결정은 엔클레이브 코드 및 데이터의 서명, 엔클레이브 코드 및 데이터의 메시지 인증 코드(MAC), 비대칭 암호화, 또는 이들의 임의의 적합한 조합에 기초할 수 있다.
신뢰 도메인 모듈(240)은 요청에 응답하여 선택된 엔클레이브에 대한 액세스를 제공한다(동작(840)). 예를 들어, 초기화된 엔클레이브의 고유 식별자가 반환되어, 엔클레이브 내의 함수를 실행하기 위한 신뢰 도메인 모듈(240)에 대한 나중의 요청(예를 들어, EENTER 커맨드)을 위한 파라미터로서 사용할 수 있다.
템플릿 엔클레이브를 복사하여 요청된 엔클레이브를 생성하는 것(동작(830)) 대신에 엔클레이브에 대한 요청을 수신하는 것(동작(820))에 응답하여 엔클레이브를 생성하는 종래 기술의 구현들과 비교하여, 요청의 수신과 액세스의 제공(동작(840)) 사이의 지연이 감소된다. 레이턴시의 감소는 엔클레이브들에서 추가적인 기능성이 보호되는 것, 더 미세한 입도의 엔클레이브들이 사용되는 것, 또는 양자 모두를 허용하여, 시스템 보안을 증가시킬 수 있다. 또한, 엔클레이브가 클라이언트 디바이스(120)에 의해 네트워크(130)를 통해 호출될 때, FaaS 서버(110)로부터의 응답을 기다리는 동안 사용되는 클라이언트 디바이스(120)의 프로세서 사이클들이 감소되어, 응답성을 향상시키고 전력 소비를 감소시킨다.
도 9는 일부 예시적인 실시예들에 따른, TEE들을 초기화하고 TEE들에 대한 액세스를 제공하기에 적합한 방법(900)의 동작들을 예시하는 흐름도이다. 방법(900)은 동작들(910, 920, 930, 및 940)을 포함한다. 제한이 아닌 예로서, 방법(900)은 도 2 내지 도 4에 도시된 모듈들, 데이터베이스들, 및 구조들을 사용하여, 도 1의 FaaS 서버(110A)에 의해 수행될 수 있다.
동작(910)에서, 신뢰 도메인 모듈(240)은 제1 클래스의 엔클레이브들의 제1 풀 및 제2 클래스의 엔클레이브들의 제2 풀을 사전-초기화한다. 사전-초기화는 완전하거나 부분적이다. 완전한 초기화의 경우, 풀 내의 엔클레이브들은 사용을 위해 완전히 준비되고 엔클레이브의 코드 및 데이터가 이미 로딩되어 있다. 따라서, 클래스의 모든 멤버들은 동일하다. 부분적인 초기화의 경우, 풀 내의 엔클레이브들은 사용되는 힙 메모리의 양과 같은 하나 이상의 특성을 공유한다. 엔클레이브들은 공유된 특성들에 대해 초기화되지만, 엔클레이브의 실제 코드 및 데이터는 사전-초기화 동안 로딩되지 않는다. 또한, 추가의 커스터마이제이션(customization)이 나중의 단계에서 수행될 수 있다. 따라서, 상이한 엔클레이브들은 부분적인 초기화가 수행될 때 클래스의 멤버들일 수 있다.
동작(920)에서, 신뢰 도메인 모듈(240)은 제1 클래스의 엔클레이브에 대한 요청을 수신한다. 예를 들어, 애플리케이션의 비신뢰 컴포넌트(220)는 요청의 일부로서 신뢰 도메인 모듈(240)에 엔클레이브를 식별하는 데이터를 제공할 수 있다. 엔클레이브를 식별하는 데이터는 비신뢰 컴포넌트(220)에 의해 액세스가능한 공유 메모리(260) 내의 주소에 대한 포인터를 포함할 수 있다. 엔클레이브의 클래스를 식별하는 데이터는 엔클레이브에 또는 요청에 포함될 수 있다.
동작(930)에서, 수신된 요청에 응답하여, 신뢰 도메인 모듈(240)은 제1 클래스에 대한 엔클레이브들의 사전-초기화된 풀로부터 엔클레이브를 선택한다. 신뢰 도메인 모듈(240)은, 요청과 함께 수신된 엔클레이브를 식별하는 데이터에 기초하여, 도 4에 도시된 작업부하-특정적 연산들과 같은, 선택된 엔클레이브에 대한 추가적인 연산들을 수행함으로써 선택된 엔클레이브를 수정할 수 있다. 추가적인 연산들은 요청에 표시된 공유 메모리(260) 내의 주소로부터 데이터 또는 코드를 엔클레이브에 할당된 전용 메모리(270)에 복사하는 것을 포함할 수 있다.
신뢰 도메인 모듈(240)은 요청에 응답하여 선택된 엔클레이브에 대한 액세스를 제공한다(동작(940)). 예를 들어, 초기화된 엔클레이브의 고유 식별자가 반환되어, 엔클레이브 내의 함수를 실행하기 위한 신뢰 도메인 모듈(240)에 대한 나중의 요청(예를 들어, EENTER 커맨드)을 위한 파라미터로서 사용할 수 있다.
상이한 클래스들의 상이한 풀들을 사용함으로써, 유사하지만 상대적으로 수요가 적은 엔클레이브들을 부분적인 사전-초기화를 위한 공통 클래스에 넣을 수 있어, 그것들의 수요에 비례해서만 자원들을 소비하면서 레이턴시를 감소시킬 수 있다. 동시에, 수요가 많은 엔클레이브들은 완전히 사전-초기화될 수 있어, 레이턴시를 더욱 감소시킬 수 있다.
주제의 전술한 구현들을 고려하여, 본 출원은 다음과 같은 예들의 리스트를 개시하며, 여기서, 조합하여 취해진, 그리고, 선택적으로, 하나 이상의 추가 예의 하나 이상의 특징과 조합하여 취해진, 격리된 예의 하나의 특징 또는 예의 하나보다 많은 특징은, 본 출원의 개시내용 내에 또한 속하는 추가 예들이다.
예 1은 신뢰 실행 환경(TEE)을 제공하는 시스템이고, 이 시스템은: 프로세서; 및 상기 프로세서에 결합되고 명령어들이 저장된 스토리지 디바이스를 포함하고, 상기 명령어들은, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금: TEE들의 풀을 사전-초기화하게 하고 - 상기 TEE들의 풀의 각각의 TEE의 사전-초기화는 상기 TEE에 대해 상기 스토리지 디바이스의 메모리를 할당하는 것을 포함함 - ; 상기 TEE들의 풀의 사전-초기화 후에, TEE에 대한 요청을 수신하게 하고; 상기 사전-초기화된 TEE들의 풀로부터 상기 TEE를 선택하게 하고; 상기 요청에 응답하여 상기 선택된 TEE에 대한 액세스를 제공하게 한다.
예 2에서, 예 1의 주제는, 상기 명령어들이 추가로, 상기 프로세서로 하여금: 상기 선택된 TEE에 대한 액세스를 제공하기 전에, 상기 요청 내의 정보에 기초하여 상기 선택된 TEE를 수정하게 하는 것을 포함한다.
예 3에서, 예 2의 주제는, 상기 선택된 TEE를 수정하는 것이 상기 선택된 TEE를 시작하는 것을 포함하는 것을 포함한다.
예 4에서, 예 2 및 예 3의 주제는, 상기 선택된 TEE를 수정하는 것이 상기 TEE에 대해 할당된 메모리에 데이터 또는 코드를 복사하는 것을 포함하는 것을 포함한다.
예 5에서, 예 2 내지 예 4 중 어느 하나의 주제는, 상기 선택된 TEE를 수정하는 것이: 상기 선택된 TEE에 암호화 키를 할당하는 것; 및 상기 암호화 키를 사용하여 상기 TEE에 할당된 상기 메모리를 암호화하는 것을 포함하는 것을 포함한다.
예 6에서, 예 1 내지 예 5 중 어느 하나의 주제는, 상기 TEE들의 풀을 사전-초기화하는 것이 상기 TEE들의 풀의 각각의 TEE에 템플릿 TEE의 상태를 복사하는 것을 포함하는 것을 포함한다.
예 7에서, 예 1 내지 예 6 중 어느 하나의 주제는, 상기 명령어들이 추가로, 상기 프로세서로 하여금: 상기 선택된 TEE의 실행이 완료되었다는 결정에 기초하여, 상기 선택된 TEE를 템플릿 TEE의 상태로 복원하게 하는 것을 포함한다.
예 8에서, 예 1 내지 예 7 중 어느 하나의 주제는, 상기 명령어들이 추가로, 상기 프로세서로 하여금: 상기 선택된 TEE를 해제하라는 요청을 수신하게 하고; 상기 선택된 TEE를 해제하기 위한 상기 요청에 응답하여, 상기 선택된 TEE를 상기 TEE들의 풀에 반환하게 하는 것을 포함한다.
예 9에서, 예 1 내지 예 8 중 어느 하나의 주제는, 상기 명령어들이 추가로, 상기 프로세서로 하여금: 미리 계산된 해시 값을 수신하게 하고; 이진 메모리 상태의 해시 값을 결정하게 하고; 상기 결정된 해시 값 및 상기 미리 계산된 해시 값에 기초하여, 상기 이진 메모리 상태를 보안되지 않은 메모리로부터 상기 선택된 TEE로 복사하게 하는 것을 포함한다.
예 10은 TEE를 제공하는 시스템이고, 이 시스템은: 프로세서; 및 상기 프로세서에 결합되고 명령어들이 저장된 스토리지 디바이스를 포함하고, 상기 명령어들은, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금: TEE들의 풀을 사전-초기화하게 하고; 상기 스토리지 디바이스에 저장되고 판독-전용으로 마킹된 템플릿 TEE를 생성하게 하고; 요청을 수신하게 하고; 상기 요청에 응답하여: 상기 템플릿 TEE를 복사하여 TEE를 생성하게 하고; 상기 생성된 TEE에 대한 액세스를 제공하게 한다.
예 11에서, 예 10의 주제는, 상기 템플릿 TEE가 서비스형 함수(FaaS)에 대한 초기 메모리 콘텐츠 및 레이아웃을 포함하는 것을 포함한다.
예 12에서, 예 10 또는 예 11의 주제는, 상기 프로세서가 상기 템플릿 TEE의 실행을 방지하는 것을 포함한다.
예 13은 TEE를 제공하는 방법이고, 이 방법은: 프로세서에 의해, TEE들의 풀을 사전-초기화하는 단계 - 상기 TEE들의 풀의 각각의 TEE의 사전-초기화는 상기 TEE에 대해 스토리지 디바이스의 메모리를 할당하는 것을 포함함 - ; 상기 TEE들의 풀의 사전-초기화 후에, 상기 프로세서에 의해, 요청을 수신하는 단계; 및 상기 요청에 응답하여: 상기 프로세서에 의해, 상기 사전-초기화된 TEE들의 풀로부터 TEE를 선택하는 단계; 및 상기 프로세서에 의해, 상기 선택된 TEE에 대한 액세스를 제공하는 단계를 포함한다.
예 15에서, 예 14의 주제는, 상기 선택된 TEE에 대한 액세스를 제공하기 전에, 상기 요청 내의 정보에 기초하여 상기 선택된 TEE를 수정하는 단계를 포함한다.
예 16에서, 예 15의 주제는, 상기 선택된 TEE를 수정하는 것이 상기 선택된 TEE를 시작하는 것을 포함하는 것을 포함한다.
예 17에서, 예 15 또는 예 16의 주제는, 상기 선택된 TEE를 수정하는 것이 상기 TEE에 대해 할당된 메모리에 데이터 또는 코드를 복사하는 것을 포함하는 것을 포함한다.
예 18에서, 예 15 내지 예 17 중 어느 하나의 주제는, 상기 선택된 TEE를 수정하는 것이: 상기 선택된 TEE에 암호화 키를 할당하는 것; 및 상기 암호화 키를 사용하여 상기 TEE에 할당된 상기 메모리를 암호화하는 것을 포함하는 것을 포함한다.
예 19에서, 예 14 내지 예 18 중 어느 하나의 주제는, 상기 TEE들의 풀을 사전-초기화하는 것이 상기 TEE들의 풀의 각각의 TEE에 템플릿 TEE의 상태를 복사하는 것을 포함하는 것을 포함한다.
예 20에서, 예 14 내지 예 19 중 어느 하나의 주제는, 상기 선택된 TEE의 실행이 완료되었다는 결정에 기초하여, 상기 선택된 TEE를 템플릿 TEE의 상태로 복원하는 단계를 포함한다.
예 21에서, 예 14 내지 예 20 중 어느 하나의 주제는, 상기 선택된 TEE를 해제하라는 요청을 수신하는 단계; 및 상기 선택된 TEE를 해제하기 위한 상기 요청에 응답하여, 상기 선택된 TEE를 상기 TEE들의 풀에 반환하는 단계를 포함한다.
예 22에서, 예 14 내지 예 21 중 어느 하나의 주제는, 미리 계산된 해시 값을 수신하는 단계; 이진 메모리 상태의 해시 값을 결정하는 단계; 및 상기 결정된 해시 값 및 상기 미리 계산된 해시 값에 기초하여, 상기 이진 메모리 상태를 보안되지 않은 메모리로부터 상기 선택된 TEE로 복사하는 단계를 포함한다.
예 23은 신뢰 실행 환경(TEE)을 제공하는 방법이고, 이 방법은: 상기 프로세서에 의해, 스토리지 디바이스에 저장되고 판독-전용으로 마킹된 템플릿 TEE를 생성하는 단계; 상기 프로세서에 의해, 요청을 수신하는 단계; 및 상기 요청에 응답하여: 상기 템플릿 TEE를 복사하여 TEE를 생성하는 단계; 및 상기 생성된 TEE에 대한 액세스를 제공하는 단계를 포함한다.
예 24에서, 예 23의 주제는, 상기 템플릿 TEE가 서비스형 함수(FaaS)에 대한 초기 메모리 콘텐츠 및 레이아웃을 포함하는 것을 포함한다.
예 25에서, 예 23 또는 예 24의 주제는, 상기 프로세서가 상기 템플릿 TEE의 실행을 방지하는 것을 포함한다.
예 26은 TEE를 제공하는 방법이고, 이 방법은: 프로세서에 의해, 제1 암호화 키를 사용하여 데이터 및 코드를 암호화하는 단계; 상기 암호화된 데이터 및 코드를 스토리지 디바이스에 저장하는 단계; 상기 프로세서에 의해, 요청을 수신하는 단계; 상기 요청에 응답하여: 제2 암호화 키를 TEE에 할당하는 단계; 상기 제1 암호화 키를 사용하여 상기 암호화된 데이터 및 코드를 복호화하는 단계; 상기 제2 암호화 키를 사용하여 상기 복호화된 데이터 및 코드를 암호화하는 단계; 및 상기 TEE에 대한 액세스를 제공하는 단계를 포함한다.
예 27은 프로세서로 하여금 동작들을 수행함으로써 TEE를 제공하게 하는 명령어들을 갖는 비일시적 컴퓨터 판독가능 매체이며, 상기 동작들은: TEE들의 풀을 사전-초기화하는 것 - 상기 TEE들의 풀의 각각의 TEE의 사전-초기화는 상기 TEE에 대해 스토리지 디바이스의 메모리를 할당하는 것을 포함함 - ; 상기 TEE들의 풀의 사전-초기화 후에, TEE에 대한 요청을 수신하는 것; 상기 사전-초기화된 TEE들의 풀로부터 상기 TEE를 선택하는 것; 및 상기 요청에 응답하여 상기 선택된 TEE에 대한 액세스를 제공하는 것을 포함한다.
예 28에서, 예 27의 주제는, 상기 동작들이: 상기 선택된 TEE에 대한 액세스를 제공하기 전에, 상기 요청 내의 정보에 기초하여 상기 선택된 TEE를 수정하는 것을 추가로 포함하는 것을 포함한다.
예 29에서, 예 28의 주제는, 상기 선택된 TEE를 수정하는 것이 상기 선택된 TEE를 시작하는 것을 포함하는 것을 포함한다.
예 30에서, 예 28 또는 예 29의 주제는, 상기 선택된 TEE를 수정하는 것이 상기 TEE에 대해 할당된 메모리에 데이터 또는 코드를 복사하는 것을 포함하는 것을 포함한다.
예 31에서, 예 28 내지 예 30 중 어느 하나의 주제는, 상기 선택된 TEE를 수정하는 것이: 상기 선택된 TEE에 암호화 키를 할당하는 것; 및 상기 암호화 키를 사용하여 상기 TEE에 할당된 상기 메모리를 암호화하는 것을 포함하는 것을 포함한다.
예 32에서, 예 27 내지 예 31 중 어느 하나의 주제는, 상기 TEE들의 풀을 사전-초기화하는 것이 상기 TEE들의 풀의 각각의 TEE에 템플릿 TEE의 상태를 복사하는 것을 포함하는 것을 포함한다.
예 33에서, 예 27 내지 예 32 중 어느 하나의 주제는, 상기 동작들이: 상기 선택된 TEE의 실행이 완료되었다는 결정에 기초하여, 상기 선택된 TEE를 템플릿 TEE의 상태로 복원하는 것을 추가로 포함하는 것을 포함한다.
예 34에서, 예 27 내지 예 33 중 어느 하나의 주제는, 상기 동작들이: 상기 선택된 TEE를 해제하라는 요청을 수신하는 것; 및 상기 선택된 TEE를 해제하기 위한 상기 요청에 응답하여, 상기 선택된 TEE를 상기 TEE들의 풀에 반환하는 것을 추가로 포함하는 것을 포함한다.
예 35에서, 예 27 내지 예 34 중 어느 하나의 주제는, 상기 동작들이: 미리 계산된 해시 값을 수신하는 것; 이진 메모리 상태의 해시 값을 결정하는 것; 및 상기 결정된 해시 값 및 상기 미리 계산된 해시 값에 기초하여, 상기 이진 메모리 상태를 보안되지 않은 메모리로부터 상기 선택된 TEE로 복사하는 것을 추가로 포함하는 것을 포함한다.
예 36은 프로세서로 하여금 동작들을 수행함으로써 TEE를 제공하게 하는 명령어들을 갖는 비일시적 컴퓨터 판독가능 매체이며, 상기 동작들은: 스토리지 디바이스에 저장되고 판독-전용으로 마킹된 템플릿 TEE를 생성하는 것; 요청을 수신하는 것; 및 상기 요청에 응답하여: 상기 템플릿 TEE를 복사하여 TEE를 생성하는 것; 및 상기 생성된 TEE에 대한 액세스를 제공하는 것을 포함한다.
예 37에서, 예 36의 주제는, 상기 템플릿 TEE가 서비스형 함수(FaaS)에 대한 초기 메모리 콘텐츠 및 레이아웃을 포함하는 것을 포함한다.
예 38에서, 예 36 또는 예 37의 주제는, 상기 동작들이: 상기 템플릿 TEE의 실행을 방지하는 것을 추가로 포함하는 것을 포함한다.
예 39는 프로세서로 하여금 동작들을 수행함으로써 TEE를 제공하게 하는 명령어들을 갖는 비일시적 컴퓨터 판독가능 매체이며, 상기 동작들은: 제1 암호화 키를 사용하여 데이터 및 코드를 암호화하는 것; 상기 암호화된 데이터 및 코드를 스토리지 디바이스에 저장하는 것; 요청을 수신하는 것; 상기 요청에 응답하여: 제2 암호화 키를 TEE에 할당하는 것; 상기 제1 암호화 키를 사용하여 상기 암호화된 데이터 및 코드를 복호화하는 것; 상기 제2 암호화 키를 사용하여 상기 복호화된 데이터 및 코드를 암호화하는 것; 및 상기 TEE에 대한 액세스를 제공하는 것을 포함한다.
예 40은 TEE를 제공하는 시스템이고, 이 시스템은: 스토리지 수단; 및 처리 수단을 포함하고, 상기 처리 수단은: TEE들의 풀을 사전-초기화하고 - 상기 TEE들의 풀의 각각의 TEE의 사전-초기화는 상기 TEE에 대해 상기 스토리지 수단의 메모리를 할당하는 것을 포함함 - ; TEE에 대한 요청을 수신하고; 상기 사전-초기화된 TEE들의 풀로부터 상기 TEE를 선택하고; 상기 요청에 응답하여 상기 선택된 TEE에 대한 액세스를 제공한다.
예 41에서, 예 40의 주제는, 상기 처리 수단이 추가로: 상기 선택된 TEE에 대한 액세스를 제공하기 전에, 상기 요청 내의 정보에 기초하여 상기 선택된 TEE를 수정하는 것을 포함한다.
예 42에서, 예 41의 주제는, 상기 선택된 TEE를 수정하는 것이 상기 선택된 TEE를 시작하는 것을 포함하는 것을 포함한다.
예 43에서, 예 41 또는 예 42의 주제는, 상기 선택된 TEE를 수정하는 것이 상기 TEE에 대해 할당된 메모리에 데이터 또는 코드를 복사하는 것을 포함하는 것을 포함한다.
예 44에서, 예 41 내지 예 43 중 어느 하나의 주제는, 상기 선택된 TEE를 수정하는 것이: 상기 선택된 TEE에 암호화 키를 할당하는 것; 및 상기 암호화 키를 사용하여 상기 TEE에 할당된 상기 메모리를 암호화하는 것을 포함하는 것을 포함한다.
예 45에서, 예 40 내지 예 44 중 어느 하나의 주제는, 상기 TEE들의 풀을 사전-초기화하는 것이 상기 TEE들의 풀의 각각의 TEE에 템플릿 TEE의 상태를 복사하는 것을 포함하는 것을 포함한다.
예 46에서, 예 40 내지 예 45 중 어느 하나의 주제는, 상기 처리 수단이 추가로: 상기 선택된 TEE의 실행이 완료되었다는 결정에 기초하여, 상기 선택된 TEE를 템플릿 TEE의 상태로 복원하는 것을 포함한다.
예 47에서, 예 40 내지 예 46 중 어느 하나의 주제는, 상기 처리 수단이 추가로: 상기 선택된 TEE를 해제하라는 요청을 수신하고; 상기 선택된 TEE를 해제하기 위한 상기 요청에 응답하여, 상기 선택된 TEE를 상기 TEE들의 풀에 반환하는 것을 포함한다.
예 48에서, 예 40 내지 예 47 중 어느 하나의 주제는, 상기 처리 수단이 추가로: 미리 계산된 해시 값을 수신하고; 이진 메모리 상태의 해시 값을 결정하고; 상기 결정된 해시 값 및 상기 미리 계산된 해시 값에 기초하여, 상기 이진 메모리 상태를 보안되지 않은 메모리로부터 상기 선택된 TEE로 복사하는 것을 포함한다.
예 49는 TEE를 제공하는 시스템이고, 이 시스템은: 스토리지 수단; 및 처리 수단을 포함하고, 상기 처리 수단은: 상기 스토리지 수단에 저장되고 판독-전용으로 마킹된 템플릿 TEE를 생성하고; 요청을 수신하고; 상기 요청에 응답하여: 상기 템플릿 TEE를 복사하여 TEE를 생성하고; 상기 TEE에 대한 액세스를 제공한다.
예 50에서, 예 49의 주제는, 상기 템플릿 TEE가 서비스형 함수(FaaS)에 대한 초기 메모리 콘텐츠 및 레이아웃을 포함하는 것을 포함한다.
예 51에서, 예 49 또는 예 50의 주제는, 상기 처리 수단이 상기 템플릿 TEE의 실행을 방지하는 것을 포함한다.
예 52는 TEE를 제공하는 시스템이고, 이 시스템은: 스토리지 수단; 및 처리 수단을 포함하고, 상기 처리 수단은: 제1 암호화 키를 사용하여 데이터 및 코드를 암호화하고; 상기 암호화된 데이터 및 코드를 상기 스토리지 수단에 저장하고; 요청을 수신하고; 상기 요청에 응답하여: 제2 암호화 키를 TEE에 할당하고; 상기 제1 암호화 키를 사용하여 상기 암호화된 데이터 및 코드를 복호화하고; 상기 제2 암호화 키를 사용하여 상기 복호화된 데이터 및 코드를 암호화하고; 상기 TEE에 대한 액세스를 제공한다.
예 53은, 처리 회로에 의해 실행될 때, 상기 처리 회로로 하여금 예 1 내지 예 52 중 어느 하나를 구현하는 동작들을 수행하게 하는 명령어들을 포함하는 적어도 하나의 머신 판독가능 매체이다.
예 54는 예 1 내지 예 52 중 어느 하나를 구현하는 수단을 포함하는 장치이다.
예 55는 예 1 내지 예 52 중 어느 하나를 구현하는 시스템이다.
예 56은 예 1 내지 예 52 중 어느 하나를 구현하는 방법이다.
도 10은 컴퓨팅 디바이스에 대한 소프트웨어 아키텍처(1002)의 일 예를 보여주는 블록도(1000)이다. 아키텍처(1002)는, 예를 들어, 본 명세서에 설명된 바와 같이, 다양한 하드웨어 아키텍처들과 함께 사용될 수 있다. 도 10은 소프트웨어 아키텍처의 비제한적인 예일 뿐이며, 많은 다른 아키텍처들이 본 명세서에 설명된 기능성을 용이하게 하도록 구현될 수 있다. 대표적인 하드웨어 계층(1004)이 예시되어 있고, 예를 들어, 앞서 언급된 컴퓨팅 디바이스들 중 임의의 것을 나타낼 수 있다. 일부 예들에서, 하드웨어 계층(1004)은 도 10의 컴퓨터 시스템의 아키텍처에 따라 구현될 수 있다.
대표적인 하드웨어 계층(1004)은 연관된 실행가능 명령어들(1008)을 갖는 하나 이상의 처리 유닛(1006)을 포함한다. 실행가능 명령어들(1008)은 본 명세서에 설명된 방법들, 모듈들, 서브시스템들, 및 컴포넌트들 등의 구현을 포함하는 소프트웨어 아키텍처(1002)의 실행가능 명령어들을 나타내고, 실행가능 명령어들(1008)을 또한 갖는 메모리 및/또는 스토리지 모듈들(1010)을 또한 포함할 수 있다. 하드웨어 계층(1004)은 소프트웨어 아키텍처(1002)의 일부로서 예시된 다른 하드웨어와 같은, 하드웨어 계층(1004)의 임의의 다른 하드웨어를 나타내는 다른 하드웨어(1012)에 의해 표시된 바와 같은 다른 하드웨어를 또한 포함할 수 있다.
도 10의 예시적인 아키텍처에서, 소프트웨어 아키텍처(1002)는 각각의 계층이 특정의 기능성을 제공하는 계층들의 스택으로서 개념화될 수 있다. 예를 들어, 소프트웨어 아키텍처(1002)는 운영 체제(1014), 라이브러리들(1016), 프레임워크들/미들웨어(1018), 애플리케이션들(1020), 및 프레젠테이션 계층(1044)과 같은 계층들을 포함할 수 있다. 동작적으로, 애플리케이션들(1020) 및/또는 계층들 내의 다른 컴포넌트들은 소프트웨어 스택을 통해 애플리케이션 프로그래밍 인터페이스(API) 호출들(1024)을 호출(invoke)하고, API 호출들(1024)에 응답하여 메시지들(1026)로서 예시된 응답, 반환된 값들 등에 액세스할 수 있다. 예시된 계층들은 본질적으로 대표적인 것이며 소프트웨어 아키텍처들 모두가 모든 계층들을 갖는 것은 아니다. 예를 들어, 일부 모바일 또는 특수 목적 운영 체제들은 프레임워크들/미들웨어 계층(1018)을 제공하지 않을 수 있는 한편, 다른 모바일 또는 특수 목적 운영 체제들은 이러한 계층을 제공할 수 있다. 다른 소프트웨어 아키텍처들은 추가적인 또는 상이한 계층들을 포함할 수 있다.
운영 체제(1014)는 하드웨어 자원들을 관리하고 공통 서비스들을 제공할 수 있다. 운영 체제(1014)는, 예를 들어, 커널(1028), 서비스들(1030), 및 드라이버들(1032)을 포함할 수 있다. 커널(1028)은 하드웨어와 다른 소프트웨어 계층들 사이에서 추상화 계층(abstraction layer)으로서 작용할 수 있다. 예를 들어, 커널(1028)은 메모리 관리, 프로세서 관리(예를 들어, 스케줄링), 컴포넌트 관리, 네트워킹, 보안 설정들 등을 담당할 수 있다. 서비스(1030)는 다른 소프트웨어 계층들을 위한 다른 공통 서비스들을 제공할 수 있다. 일부 예들에서, 서비스들(1030)은 인터럽트 서비스를 포함한다. 인터럽트 서비스는 인터럽트의 수신을 검출하고, 그에 응답하여, 아키텍처(1002)로 하여금 그의 현재 처리를 일시중지하게 하고 인터럽트가 액세스될 때 인터럽트 서비스 루틴(ISR)을 실행하게 할 수 있다.
드라이버들(1032)은 기저 하드웨어를 제어하거나 그와 인터페이스하는 것을 담당할 수 있다. 예를 들어, 드라이버들(1032)은, 하드웨어 구성에 따라, 디스플레이 드라이버들, 카메라 드라이버들, 블루투스® 드라이버들, 플래시 메모리 드라이버들, 직렬 통신 드라이버들(예를 들어, USB(Universal Serial Bus) 드라이버들), Wi-Fi® 드라이버들, NFC 드라이버들, 오디오 드라이버들, 전력 관리 드라이버들 등을 포함할 수 있다.
라이브러리들(1016)은 애플리케이션들(1020) 및/또는 다른 컴포넌트들 및/또는 계층들에 의해 이용될 수 있는 공통 인프라스트럭처를 제공할 수 있다. 라이브러리들(1016)은 전형적으로 다른 소프트웨어 모듈들이 기저 운영 체제(1014) 기능성(예를 들어, 커널(1028), 서비스들(1030) 및/또는 드라이버들(1032))과 직접 인터페이스하는 것보다 더 쉬운 방식으로 태스크들을 수행할 수 있게 하는 기능성을 제공한다. 라이브러리들(1016)은 메모리 할당 함수들, 문자열 조작 함수들, 수학 함수들 등과 같은 함수들을 제공할 수 있는 시스템 라이브러리들(1034)(예를 들어, C 표준 라이브러리)을 포함할 수 있다. 게다가, 라이브러리들(1016)은 미디어 라이브러리들(예를 들어, MPEG4, H.264, MP3, AAC, AMR, JPG, PNG와 같은 다양한 미디어 포맷의 프레젠테이션 및 조작을 지원하기 위한 라이브러리들), 그래픽 라이브러리들(예를 들어, 디스플레이상의 그래픽 콘텐츠에서 2차원 및 3차원을 렌더링하기 위해 사용될 수 있는 OpenGL 프레임워크), 데이터베이스 라이브러리들(예를 들어, 다양한 관계형 데이터베이스 함수들을 제공할 수 있는 SQLite), 웹 라이브러리들(예를 들어, 웹 브라우징 기능성을 제공할 수 있는 WebKit) 등과 같은 API 라이브러리들(1036)을 포함할 수 있다. 라이브러리들(1016)은 많은 다른 API들을 애플리케이션들(1020) 및 다른 소프트웨어 컴포넌트들/모듈들에 제공하기 위한 매우 다양한 다른 라이브러리들(1038)을 또한 포함할 수 있다.
프레임워크들/미들웨어(1018)는 애플리케이션들(1020) 및/또는 다른 소프트웨어 컴포넌트들/모듈들에 의해 이용될 수 있는 상위 레벨 공통 인프라스트럭처를 제공할 수 있다. 예를 들어, 프레임워크들/미들웨어(1018)는 다양한 그래픽 사용자 인터페이스(GUI) 기능들, 하이-레벨 자원 관리, 하이-레벨 위치 서비스들 등을 제공할 수 있다. 프레임워크들/미들웨어(1018)는 애플리케이션들(1020) 및/또는 다른 소프트웨어 컴포넌트들/모듈들에 의해 이용될 수 있는 광범위한 다른 API들을 제공할 수 있으며, 그 중 일부는 특정 운영 체제 또는 플랫폼에 특정할 수 있다.
애플리케이션들(1020)은 빌트인 애플리케이션들(1040) 및/또는 제3자 애플리케이션들(1042)을 포함한다. 대표적인 빌트인 애플리케이션들(1040)의 예들은 연락처 애플리케이션, 브라우저 애플리케이션, 북 리더 애플리케이션(book reader application), 위치 애플리케이션, 미디어 애플리케이션, 메시징 애플리케이션, 및/또는 게임 애플리케이션을 포함할 수 있지만, 이에 제한되지 않는다. 제3자 애플리케이션들(1042)은 빌트인 애플리케이션들(1040) 중 임의의 것뿐만 아니라, 광범위한 다른 애플리케이션들을 포함할 수 있다. 특정 예에서, 제3자 애플리케이션(1042)(예를 들어, 특정한 플랫폼의 벤더(vendor) 이외의 엔티티에 의해 Android™ 또는 iOS™ 소프트웨어 개발 키트(software development kit, SDK)를 사용하여 개발된 애플리케이션)은 iOS™, Android™, Windows® 전화, 또는 다른 모바일 컴퓨팅 디바이스 운영 체제들과 같은 모바일 운영 체제 상에서 실행되는 모바일 소프트웨어일 수 있다. 이 예에서, 제3자 애플리케이션(1042)은 본 명세서에 설명된 기능성을 용이하게 하기 위해 운영 체제(1014)와 같은 모바일 운영 체제에 의해 제공되는 API 호출들(1024)을 호출할 수 있다.
애플리케이션들(1020)은 시스템의 사용자들과 상호작용하기 위한 사용자 인터페이스들을 생성하기 위해 빌트인 운영 체제 기능들(예를 들어, 커널(1028), 서비스들(1030) 및/또는 드라이버들(1032)), 라이브러리들(예를 들어, 시스템 라이브러리들(1034), API 라이브러리들(1036), 및 다른 라이브러리들(1038)), 프레임워크들/미들웨어(1018)를 이용할 수 있다. 대안적으로, 또는 추가적으로, 일부 시스템들에서, 사용자와의 상호작용들은 프레젠테이션 계층(1044)과 같은 프레젠테이션 계층을 통해 발생할 수 있다. 이들 시스템들에서, 애플리케이션/모듈 "로직"은 사용자와 상호작용하는 애플리케이션/모듈의 양태들로부터 분리될 수 있다.
일부 소프트웨어 아키텍처들은 가상 머신들을 이용한다. 도 10의 예에서, 이것은 가상 머신(1048)에 의해 예시된다. 가상 머신은 애플리케이션들/모듈들이 하드웨어 컴퓨팅 디바이스 상에서 실행되고 있는 것처럼 실행될 수 있는 소프트웨어 환경을 생성한다. 가상 머신은 호스트 운영 체제(운영 체제(1014))에 의해 호스팅되고, 전형적으로, 항상은 아니지만, 가상 머신(1048)의 동작뿐만 아니라 호스트 운영 체제(즉, 운영 체제(1014))와의 인터페이스를 관리하는 가상 머신 모니터(1046)를 갖는다. 소프트웨어 아키텍처는 운영 체제(1050), 라이브러리들(1052), 프레임워크들/미들웨어(1054), 애플리케이션들(1056) 및/또는 프레젠테이션 계층(1058)과 같은 가상 머신(1048) 내에서 실행된다. 가상 머신(1048) 내에서 실행되는 소프트웨어 아키텍처의 이러한 계층들은 이전에 설명된 대응하는 계층들과 동일할 수 있거나 상이할 수 있다.
모듈들, 컴포넌트들 및 로직
특정 실시예들은 로직 또는 다수의 컴포넌트들, 모듈들, 또는 메커니즘들을 포함하는 것으로서 본 명세서에 설명된다. 모듈들은 소프트웨어 모듈들(예를 들어, (1) 비일시적 머신 판독가능 매체 상에 또는 (2) 송신 신호에 구현되는 코드) 또는 하드웨어-구현 모듈들을 구성할 수 있다. 하드웨어-구현 모듈은 특정 동작들을 수행할 수 있는 유형의 유닛(tangible unit)이며 특정 방식으로 구성되거나 배열될 수 있다. 예시적인 실시예들에서, 하나 이상의 컴퓨터 시스템(예를 들어, 독립형, 클라이언트, 또는 서버 컴퓨터 시스템) 또는 하나 이상의 하드웨어 프로세서는, 소프트웨어(예를 들어, 애플리케이션 또는 애플리케이션 부분)에 의해, 본 명세서에 설명된 바와 같은 특정 동작들을 수행하도록 동작하는 하드웨어-구현 모듈로서 구성될 수 있다.
다양한 실시예들에서, 하드웨어-구현 모듈은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들어, 하드웨어-구현 모듈은 특정 동작들을 수행하도록 (예를 들어, FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit)와 같은, 특수 목적 프로세서로서) 영구적으로 구성되는 전용(dedicated) 회로 또는 로직을 포함할 수 있다. 하드웨어-구현 모듈은 특정 동작들을 수행하도록 소프트웨어에 의해 일시적으로 구성되는 프로그램가능 로직 또는 회로를 (예를 들어, 범용 프로세서 또는 다른 프로그램가능 프로세서 내에 포함되는 것으로서) 또한 포함할 수 있다. 하드웨어-구현 모듈을 기계적으로, 전용의(dedicated) 영구적으로 구성된 회로로, 또는 일시적으로 구성된 회로(예를 들어, 소프트웨어에 의해 구성됨)로 구현하기 위한 결정은 비용 및 시간 고려사항들에 의해 주도될 수 있다는 것을 이해할 것이다.
따라서, "하드웨어-구현 모듈(hardware-implemented module)"이라는 용어는, 특정 방식으로 동작하거나 및/또는 본 명세서에 설명된 특정 동작들을 수행하도록 물리적으로 구성되거나, 영구적으로 구성되거나(예를 들어, 고정배선), 또는 일시적으로 또는 임시로 구성되는(예를 들어, 프로그램되는) 엔티티인, 유형의 엔티티를 포괄하는 것으로 이해되어야 한다. 하드웨어-구현 모듈들이 일시적으로 구성(예를 들어, 프로그램)되는 실시예들을 고려할 때, 하드웨어-구현 모듈들 각각이 임의의 하나의 시간 인스턴스에서 구성되거나 인스턴스화될 필요는 없다. 예를 들어, 하드웨어-구현 모듈들이 소프트웨어를 사용하여 구성된 범용 프로세서를 포함하는 경우, 범용 프로세서는 상이한 시간들에서 각자의 상이한 하드웨어-구현 모듈들로서 구성될 수 있다. 소프트웨어는, 예를 들어, 하나의 시간 인스턴스에서는 특정 하드웨어-구현 모듈을 구성하고, 상이한 시간 인스턴스에서는 상이한 하드웨어-구현 모듈을 구성하도록, 프로세서를 그에 따라 구성할 수 있다.
하드웨어-구현 모듈들은, 다른 하드웨어-구현 모듈들에 정보를 제공하고, 다른 하드웨어-구현 모듈들로부터 정보를 수신할 수 있다. 따라서, 설명된 하드웨어-구현 모듈들은 통신가능하게 결합되는 것으로서 간주될 수 있다. 이러한 하드웨어-구현 모듈들 중 다수가 동시에 존재하는 경우, 통신들은 신호 송신을 통해(예를 들어, 하드웨어-구현 모듈들을 접속하는 적절한 회로들 및 버스들을 통해) 달성될 수 있다. 다수의 하드웨어-구현 모듈들이 상이한 시간들에서 구성되거나 인스턴스화되는 실시예들에서, 이러한 하드웨어-구현 모듈들 사이의 통신들은, 예를 들어, 다수의 하드웨어-구현 모듈들이 액세스하는 메모리 구조들에서의 정보의 저장 및 검색을 통해 달성될 수 있다. 예를 들어, 하나의 하드웨어-구현 모듈이 동작을 수행하고, 그 동작의 출력을 그것이 통신가능하게 결합되는 메모리 디바이스에 저장할 수 있다. 추가의 하드웨어-구현 모듈이, 이후, 추후 시간에, 메모리 디바이스에 액세스하여 저장된 출력을 검색하고 처리할 수 있다. 하드웨어-구현 모듈들은 또한 입력 또는 출력 디바이스들과의 통신들을 개시할 수 있고, 자원(예를 들어, 정보의 컬렉션)에 대해 동작할 수 있다.
본 명세서에 설명된 예시적인 방법들의 다양한 동작들은, 관련 동작들을 수행하도록 영구적으로 구성되거나 (예를 들어, 소프트웨어에 의해) 일시적으로 구성되는 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수 있다. 일시적으로 구성되든 또는 영구적으로 구성되든 간에, 이러한 프로세서들은 하나 이상의 동작 또는 기능을 수행하도록 동작하는 프로세서-구현 모듈(processor-implemented module)들을 구성할 수 있다. 본 명세서에서 언급된 모듈들은, 일부 예시적인 실시예들에서, 프로세서-구현 모듈들을 포함할 수 있다.
유사하게, 본 명세서에 설명된 방법들은 적어도 부분적으로 프로세서에 의해 구현될 수 있다. 예를 들어, 방법의 동작들 중 적어도 일부는 하나 이상의 프로세서 또는 프로세서-구현 모듈들에 의해 수행될 수 있다. 동작들 중 특정 동작의 수행은, 단일 머신 내에 상주할 뿐만 아니라 복수의 머신들에 걸쳐 배치되는 하나 이상의 프로세서 사이에 분산될 수 있다. 일부 예시적인 실시예들에서, 프로세서 또는 프로세서들은, 단일 위치에(예를 들어, 가정 환경, 사무실 환경, 또는 서버 팜 내에) 위치할 수 있는 반면, 다른 실시예들에서는 프로세서들이 다수의 위치에 걸쳐 분산될 수 있다.
하나 이상의 프로세서는 "클라우드 컴퓨팅" 환경에서 또는 "서비스형 소프트웨어(software as a service)"(SaaS)로서 관련 동작들의 수행을 지원하도록 또한 동작할 수 있다. 예를 들어, 동작들의 적어도 일부는 (프로세서들을 포함하는 머신들의 예들로서) 컴퓨터들의 그룹에 의해 수행될 수 있고, 이 동작들은 네트워크(예를 들어, 인터넷)를 통해 그리고 하나 이상의 적절한 인터페이스(예를 들어, API)를 통해 액세스가능하다.
전자 장치 및 시스템
예시적인 실시예들은 디지털 전자 회로로, 또는 컴퓨터 하드웨어, 펌웨어, 또는 소프트웨어로, 또는 이들의 조합으로 구현될 수 있다. 예시적인 실시예들은 컴퓨터 프로그램 제품, 예를 들어, 데이터 처리 장치, 예를 들어, 프로그램가능 프로세서, 컴퓨터, 또는 다수의 컴퓨터들에 의한 실행을 위해, 또는 그 동작을 제어하기 위해, 정보 캐리어에, 예를 들어, 머신 판독가능 매체에 유형으로 구현된 컴퓨터 프로그램을 사용하여 구현될 수 있다.
컴퓨터 프로그램은, 컴파일형 또는 인터프리터형 언어를 포함한 임의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립형 프로그램이나 모듈, 서브루틴, 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 유닛을 포함한 임의의 형태로 배치될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서, 또는 한 장소에 있거나 다수의 장소들에 걸쳐 분산되어 통신 네트워크에 의해 상호접속되는 다수의 컴퓨터들 상에서 실행되도록 배치될 수 있다.
예시적인 실시예들에서, 동작들은 입력 데이터에 대해 동작하고 출력을 생성함으로써 기능들을 수행하기 위해 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램가능 프로세서에 의해 수행될 수 있다. 방법 동작들은 또한 특수 목적 로직 회로, 예를 들어, FPGA 또는 ASIC에 의해 수행될 수 있고, 예시적인 실시예들의 장치는 특수 목적 로직 회로, 예를 들어, FPGA 또는 ASIC으로서 구현될 수 있다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로로부터 떨어져 있고 전형적으로는 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 각자의 컴퓨터들 상에서 실행되며 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의하여 발생한다. 프로그램가능 컴퓨팅 시스템을 배치하는 실시예들에서, 하드웨어 및 소프트웨어 아키텍처들 양자 모두가 고려할만한 가치가 있다는 것을 이해할 것이다. 구체적으로는, 영구적으로 구성된 하드웨어(예를 들어, ASIC)로, 일시적으로 구성된 하드웨어(예를 들어, 소프트웨어와 프로그램가능 프로세서의 조합)로, 또는 영구적으로 및 일시적으로 구성된 하드웨어의 조합으로 특정 기능성을 구현할지에 관한 선택은 설계상의 선택일 수 있다는 것을 이해할 것이다. 다양한 예시적인 실시예들에서, 배치될 수 있는 하드웨어(예를 들어, 머신) 및 소프트웨어 아키텍처들이 이하에 제시된다.
예시적인 머신 아키텍처 및 머신 판독가능 매체
도 11은 머신으로 하여금 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위한 명령어들(1124)이 실행될 수 있는 컴퓨터 시스템(1100)의 예시적인 형태의 머신의 블록도이다. 대안적인 실시예들에서, 머신은 독립형 디바이스로서 동작하거나 다른 머신들에 접속(예를 들어, 네트워크화)될 수 있다. 네트워크화된 배치에서, 머신은 서버-클라이언트 네트워크 환경에서 서버 또는 클라이언트 머신으로서, 또는 피어-투-피어(또는 분산형) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 머신은 퍼스널 컴퓨터(PC), 태블릿 PC, 셋톱 박스(set-top box, STB), PDA(personal digital assistant), 셀룰러 전화, 웹 어플라이언스(web appliance), 네트워크 라우터, 스위치, 또는 브리지, 또는 그 머신에 의해 취해질 액션들을 지정하는 명령어들을 (순차적으로 또는 다른 방식으로) 실행할 수 있는 임의의 머신일 수 있다. 게다가, 단일 머신만이 예시되어 있지만, "머신"이라는 용어는 또한 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 명령어들의 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 머신들의 임의의 컬렉션을 포함하는 것으로 취해져야 한다.
예시적인 컴퓨터 시스템(1100)은, 버스(1108)를 통해 서로 통신하는 프로세서(1102)(예를 들어, 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 또는 양자 모두), 메인 메모리(1104), 및 정적 메모리(1106)를 포함한다. 컴퓨터 시스템(1100)은 비디오 디스플레이 유닛(1110)(예를 들어, 액정 디스플레이(LCD) 또는 음극선관(CRT))을 추가로 포함할 수 있다. 컴퓨터 시스템(1100)은 또한 영숫자 입력 디바이스(1112)(예를 들어, 키보드 또는 터치-민감 디스플레이 스크린), 사용자 인터페이스(UI) 내비게이션(또는 커서 제어) 디바이스(1114)(예를 들어, 마우스), 스토리지 유닛(1116), 신호 생성 디바이스(1118)(예를 들어, 스피커), 및 네트워크 인터페이스 디바이스(1120)를 포함한다.
머신 판독가능 매체
스토리지 유닛(1116)은, 본 명세서에 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구현하거나 이에 의해 이용되는 하나 이상의 세트의 데이터 구조들 및 명령어들(1124)(예를 들어, 소프트웨어)이 저장되는 머신 판독가능 매체(1122)를 포함한다. 명령어들(1124)은 또한 컴퓨터 시스템(1100)에 의한 그의 실행 동안 메인 메모리(1104) 내에 및/또는 프로세서(1102) 내에 완전히 또는 적어도 부분적으로 상주할 수 있으며, 메인 메모리(1104) 및 프로세서(1102)는 또한 머신 판독가능 매체(1122)를 구성한다.
머신 판독가능 매체(1122)가 예시적인 실시예에서 단일 매체인 것으로 도시되어 있지만, "머신 판독가능 매체"라는 용어는 하나 이상의 명령어(1124) 또는 데이터 구조를 저장하는 단일 매체 또는 다수의 매체(예를 들어, 중앙집중형 또는 분산형 데이터베이스, 및/또는 연관된 캐시들 및 서버들)를 포함할 수 있다. "머신 판독가능 매체"라는 용어는 또한, 머신에 의한 실행을 위한 그리고 머신으로 하여금 본 개시내용의 방법론들 중 임의의 하나 이상을 수행하게 하는 명령어들(1124)을 저장, 인코딩, 또는 운반할 수 있거나, 또는 이러한 명령어들(1124)에 의해 이용되거나 이와 연관된 데이터 구조들을 저장, 인코딩, 또는 운반할 수 있는 임의의 유형 매체(tangible medium)를 포함하는 것으로 간주되어야 한다. 따라서, "머신 판독가능 매체"라는 용어는 고체 상태 메모리들, 및 광학 및 자기 매체들을 포함하지만 이에 제한되지는 않는 것으로 간주된다. 머신 판독가능 매체(1122)의 특정 예들은 예로서 반도체 메모리 디바이스들, 예를 들어, EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 및 플래시 메모리 디바이스들을 포함하는 비휘발성 메모리; 내부 하드 디스크들 및 이동식 디스크들과 같은 자기 디스크들; 광자기 디스크들; 및 CD-ROM(compact disc read-only memory) 및 DVD-ROM(digital versatile disc read-only memory) 디스크들을 포함한다. 머신 판독가능 매체는 송신 매체가 아니다.
송신 매체
명령어들(1124)은 또한 송신 매체를 사용하여 통신 네트워크(1126)를 통해 송신되거나 수신될 수 있다. 명령어들(1124)은 네트워크 인터페이스 디바이스(1120) 및 다수의 잘 알려진 전송 프로토콜들 중 임의의 하나(예를 들어, 하이퍼텍스트 전송 프로토콜(HTTP))를 사용하여 송신될 수 있다. 통신 네트워크들의 예들은 LAN(local area network), WAN(wide area network), 인터넷, 이동 전화 네트워크들, POTS(plain old telephone) 네트워크들, 및 무선 데이터 네트워크들(예를 들어, WiFi 및 WiMax 네트워크들)을 포함한다. "송신 매체"라는 용어는, 머신에 의한 실행을 위한 명령어들(1124)을 저장, 인코딩, 또는 운반할 수 있는 임의의 무형 매체를 포함하는 것으로 간주되어야 하고, 이러한 소프트웨어의 통신을 용이하게 하는 디지털 또는 아날로그 통신 신호 또는 다른 무형 매체를 포함한다.
특정 예시적인 실시예들이 본 명세서에 설명되지만, 본 개시내용의 더 넓은 사상 및 범위로부터 벗어나지 않고서 이러한 실시예들에 대해 다양한 수정들 및 변경들이 이루어질 수 있다는 점이 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미가 아닌 예시적인 것으로서 간주된다. 본 명세서의 일부를 형성하는 첨부 도면들은 주제가 실시될 수 있는 특정 실시예들을 제한이 아니라 예시로서 도시한다. 예시된 실시예들은 본 기술분야의 통상의 기술자가 본 명세서에 개시된 교시를 실시할 수 있도록 충분히 상세하게 설명된다. 본 개시내용의 범위로부터 벗어나지 않고서 구조적 및 논리적 치환들 및 변경들이 이루어질 수 있도록 다른 실시예들이 이용될 수 있고 그로부터 파생될 수 있다. 따라서, 본 상세한 설명은 제한적인 의미로 간주되지 않아야 하고, 다양한 실시예들의 범위는, 이러한 청구항들에 부여되는 균등물들의 전체 범위와 함께, 첨부된 청구항들에 의해서만 정의된다.
본 발명 주제의 이러한 실시예들은, 하나보다 많은 것이 실제로 개시되는 경우 본 출원의 범위를 임의의 단일 발명 또는 발명 개념으로 자발적으로 제한하려는 의도 없이 단지 편의를 위해 "발명"이라는 용어에 의해 개별적으로 및/또는 집합적으로 본 명세서에서 언급될 수 있다. 따라서, 특정한 실시예들이 본 명세서에서 예시되고 설명되었지만, 동일한 목적을 달성하도록 계산된 임의의 배열이 도시된 특정한 실시예들을 대체할 수 있다는 것을 이해해야 한다. 본 개시내용은 다양한 실시예들의 임의의 그리고 모든 적응들 또는 변형들을 커버하도록 의도된다. 위의 실시예들, 및 본 명세서에 구체적으로 설명되지 않은 다른 실시예들의 조합들은 위의 설명을 검토하면 본 기술분야의 통상의 기술자에게 명백할 것이다.
본 명세서에서 논의되는 주제의 일부 부분들은 머신 메모리(예를 들어, 컴퓨터 메모리) 내에 비트들 또는 이진 디지털 신호들로서 저장되는 데이터에 대한 동작들의 알고리즘들 또는 심벌 표현들의 관점에서 제시될 수 있다. 이러한 알고리즘들 또는 심벌 표현들은 데이터 처리 분야의 통상의 기술자가 자신의 작업 내용을 그 분야의 다른 통상의 기술자에게 전달하기 위해 사용되는 기법들의 예들이다. 본 명세서에서 사용되는 바와 같이, "알고리즘"은 원하는 결과로 이어지는 자기-일관적 연산 시퀀스 또는 유사한 처리이다. 이러한 맥락에서, 알고리즘들 및 연산들은 물리적 양들의 물리적 조작을 수반한다. 통상적으로, 반드시 그러하지는 않지만, 이러한 양들은 머신에 의해 저장, 액세스, 전달, 조합, 비교, 또는 다른 방식으로 조작될 수 있는 전기, 자기, 또는 광학 신호의 형태를 취할 수 있다. 주로 공통 사용의 이유로, 이러한 신호들을 "데이터", "콘텐츠", "비트들", "값들", "요소들", "심벌들", "문자들", "용어들", "수들", "번호들" 등과 같은 단어들을 사용하여 지칭하는 것이 때때로 편리하다. 그러나, 이러한 단어들은 편리한 라벨들일 뿐이며, 적절한 물리적 양들과 연관되어야 한다.
구체적으로 달리 언급되는 않는 한, "처리", "컴퓨팅", "계산", "결정", "제시", "디스플레이" 등과 같은 단어들을 사용한 본 명세서에서의 논의들은, 하나 이상의 메모리(예를 들어, 휘발성 메모리, 비휘발성 메모리, 또는 이들의 임의의 적합한 조합), 레지스터, 또는 정보를 수신하거나, 저장하거나, 송신하거나 또는 디스플레이하는 다른 머신 컴포넌트들 내의 물리적(예를 들어, 전자적, 자기적 또는 광학적) 양들로서 표현되는 데이터를 조작 또는 변환하는 머신(예를 들어, 컴퓨터)의 액션들 또는 프로세스들을 지칭할 수 있다. 또한, 구체적으로 달리 언급되지 않는 한, 단수 용어들은, 특허 문헌들에서 일반적인 바와 같이, 하나 또는 하나 초과의 사례를 포함하기 위해 본 명세서에서 사용된다. 마지막으로, 본 명세서에서 사용되는 바와 같이, 접속사 "또는"은, 구체적으로 달리 언급되지 않는 한, 비배타적인 "또는"을 지칭한다.

Claims (14)

  1. 처리 시스템으로서,
    메모리 회로; 및
    처리 회로를 포함하고, 상기 처리 회로는:
    상기 처리 회로의 자원들을 할당하여 복수의 신뢰 실행 환경(trusted execution environment, TEE)들을 생성하고;
    격리된 메모리 공간을 상기 메모리 회로에서의 각자의 TEE에 할당하고 상기 각자의 TEE가 상기 처리 회로 상에서 작업부하들을 실행할 수 있게 하는 것에 의해 상기 복수의 TEE들에서의 각각의 각자의 TEE를 초기화하고 - 상기 복수의 TEE들에서의 각각의 각자의 TEE는 복수의 상이한 타입들의 작업부하들의 독립적인 스케줄링 및 실행을 지원하도록 초기화됨 -;
    상기 복수의 TEE들에서의 각각의 각자의 TEE가 초기화된 후에, 작업부하를 실행하라는 요청을 수신하고;
    상기 요청에 응답하여 상기 초기화된 복수의 TEE들 중의 TEE가 상기 작업부하를 실행하게 하도록 구성되는, 처리 시스템.
  2. 제1항에 있어서, 상기 처리 회로는 적어도 하나의 그래픽 처리 유닛(GPU)을 포함하고, 상기 복수의 TEE에서의 각각의 각자의 TEE는 상기 적어도 하나의 GPU의 일부를 사용하여 상기 작업부하를 실행하도록 구성되는, 처리 시스템.
  3. 제2항에 있어서, 상기 적어도 하나의 GPU는 단일 GPU이고, 상기 복수의 TEE들에서의 각각의 각자의 TEE는 상기 단일 GPU 내에서 보호되고 격리되는, 처리 시스템.
  4. 제1항에 있어서, 상기 복수의 TEE들은 복수의 사용자들 사이에 할당되고, 상기 작업부하를 실행할 상기 TEE는 상기 복수의 사용자들 중 특정 사용자에 대해 격리되는, 처리 시스템.
  5. 제4항에 있어서, 상기 작업부하의 실행 동안, 상기 복수의 TEE들 중 다른 TEE들은 상기 복수의 사용자들 중 다른 사용자들에 대한 다른 작업부하들을 수행하는 데 이용가능한, 처리 시스템.
  6. 제1항에 있어서, 상기 처리 회로는:
    상기 작업부하를 실행할 상기 TEE에 암호화 키를 할당하고;
    상기 암호화 키를 사용하여 상기 작업부하를 실행할 상기 TEE에 대한 상기 메모리 공간을 암호화하도록 더 구성되는, 처리 시스템.
  7. 방법으로서,
    처리 시스템의 처리 회로의 자원들을 할당하여 복수의 신뢰 실행 환경(TEE)들을 생성하는 단계;
    (i) 격리된 메모리 공간을 상기 처리 시스템의 메모리 회로에서의 각자의 TEE에 할당하고, (ii) 상기 각자의 TEE가 상기 처리 회로 상에서 작업부하들을 실행할 수 있게 하는 것에 의해 상기 복수의 TEE들에서의 각각의 각자의 TEE를 초기화하는 단계 - 상기 복수의 TEE들에서의 각각의 각자의 TEE는 복수의 상이한 타입들의 작업부하들의 독립적인 스케줄링 및 실행을 지원하도록 초기화됨 -;
    상기 복수의 TEE들에서의 각각의 각자의 TEE가 초기화된 후에, 작업부하를 실행하라는 요청을 수신하는 단계; 및
    상기 요청에 응답하여 상기 초기화된 복수의 TEE들 중의 TEE가 상기 작업부하를 실행하게 하는 단계를 포함하는, 방법.
  8. 제7항에 있어서, 상기 처리 회로는 적어도 하나의 그래픽 처리 유닛(GPU)을 포함하고, 상기 복수의 TEE들에서의 각각의 각자의 TEE는 상기 적어도 하나의 GPU의 일부를 사용하여 상기 작업부하를 실행하도록 구성되는, 방법.
  9. 제8항에 있어서, 상기 적어도 하나의 GPU는 단일 GPU이고, 상기 복수의 TEE들에서의 각각의 각자의 TEE는 상기 단일 GPU 내에서 보호되고 격리되는, 방법.
  10. 제7항에 있어서, 상기 복수의 TEE들은 복수의 사용자들 사이에 할당되고, 상기 작업부하를 실행할 상기 TEE는 상기 복수의 사용자들 중 특정 사용자에 대해 격리되는, 방법.
  11. 제10항에 있어서, 상기 작업부하의 실행 동안, 상기 복수의 TEE들 중 다른 TEE들은 상기 복수의 사용자들 중 다른 사용자들에 대한 다른 작업부하들을 수행하는 데 이용가능한, 방법.
  12. 제7항에 있어서,
    상기 작업부하를 실행할 상기 TEE에 암호화 키를 할당하는 단계; 및
    상기 암호화 키를 사용하여 상기 작업부하를 실행할 상기 TEE에 대한 상기 메모리 공간을 암호화하는 단계를 더 포함하는, 방법.
  13. 실행될 때 처리 회로로 하여금 제7항 내지 제12항 중 어느 한 항의 방법을 수행하게 하는 명령어들을 저장할 수 있는 비일시적 컴퓨터 판독가능 저장 매체.
  14. 제7항 내지 제12항 중 어느 한 항의 방법을 수행하기 위한 수단을 포함하는 장치.
KR1020220138601A 2020-12-22 2022-10-25 하드웨어 신뢰 실행 환경들의 레이턴시 감소 KR20220151126A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/131,716 US20210110070A1 (en) 2020-12-22 2020-12-22 Reducing latency of hardware trusted execution environments
US17/131,716 2020-12-22
KR1020210161155A KR20220091356A (ko) 2020-12-22 2021-11-22 하드웨어 신뢰 실행 환경들의 레이턴시 감소

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020210161155A Division KR20220091356A (ko) 2020-12-22 2021-11-22 하드웨어 신뢰 실행 환경들의 레이턴시 감소

Publications (1)

Publication Number Publication Date
KR20220151126A true KR20220151126A (ko) 2022-11-14

Family

ID=75383997

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020210161155A KR20220091356A (ko) 2020-12-22 2021-11-22 하드웨어 신뢰 실행 환경들의 레이턴시 감소
KR1020220138601A KR20220151126A (ko) 2020-12-22 2022-10-25 하드웨어 신뢰 실행 환경들의 레이턴시 감소

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020210161155A KR20220091356A (ko) 2020-12-22 2021-11-22 하드웨어 신뢰 실행 환경들의 레이턴시 감소

Country Status (6)

Country Link
US (2) US20210110070A1 (ko)
EP (2) EP4020156A1 (ko)
JP (2) JP2022099241A (ko)
KR (2) KR20220091356A (ko)
CN (2) CN114661452A (ko)
TW (2) TW202227998A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11847253B2 (en) * 2020-11-30 2023-12-19 Red Hat, Inc. Efficient launching of trusted execution environments

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6481900B2 (ja) * 2014-06-25 2019-03-13 インテル・コーポレーション ハードウェア構成レポーティング用の装置、ハードウェア構成アービトレーションの方法、プログラム、機械可読記録媒体、及び、ハードウェア構成アービトレーション用の装置
US20160036826A1 (en) * 2014-07-29 2016-02-04 Mcafee, Inc. Secure content packaging using multiple trusted execution environments
US9842065B2 (en) * 2015-06-15 2017-12-12 Intel Corporation Virtualization-based platform protection technology
US10528722B2 (en) * 2017-05-11 2020-01-07 Microsoft Technology Licensing, Llc Enclave pool shared key
US20190140846A1 (en) * 2017-11-03 2019-05-09 Microsoft Technology Licensing, Llc Provisioning trusted execution environment(s) based on chain of trust including platform
US11169935B2 (en) * 2018-06-20 2021-11-09 Intel Corporation Technologies for low-latency cryptography for processor-accelerator communication
GB2579682B (en) * 2019-03-25 2021-03-24 Trustonic Ltd Trusted execution environment migration method
US11556654B2 (en) * 2019-12-23 2023-01-17 Mediatek Inc. Security schemes for multiple trusted-execution-environments (TEEs) and multiple rich-execution-environments (REEs)
US11163569B2 (en) * 2019-12-28 2021-11-02 Intel Corporation Hardware apparatuses, methods, and systems for individually revocable capabilities for enforcing temporal memory safety
US11436343B2 (en) * 2019-12-31 2022-09-06 Arm Limited Device, system, and method of policy enforcement for rich execution environment
US11620411B2 (en) * 2020-03-24 2023-04-04 Red Hat, Inc. Elastic launch for trusted execution environments

Also Published As

Publication number Publication date
JP2022099241A (ja) 2022-07-04
US20210110070A1 (en) 2021-04-15
CN114661452A (zh) 2022-06-24
TW202227998A (zh) 2022-07-16
KR20220091356A (ko) 2022-06-30
JP2023015177A (ja) 2023-01-31
TW202311999A (zh) 2023-03-16
EP4145267A1 (en) 2023-03-08
EP4020156A1 (en) 2022-06-29
US20230015537A1 (en) 2023-01-19
CN115794375A (zh) 2023-03-14

Similar Documents

Publication Publication Date Title
JP7196132B2 (ja) データプロセッシング(dp)アクセラレータのための難読化を用いたデータ伝送
US10708051B2 (en) Controlled access to data in a sandboxed environment
JP6397500B2 (ja) 仮想マシン・マネージャーによって支援される選択的コード完全性強制
US9710400B2 (en) Secure virtual machine memory
US8799898B2 (en) Methods and apparatus for binding applications to a cloud computing environment
US11924210B2 (en) Protected resource authorization using autogenerated aliases
US20210109870A1 (en) Isolating memory within trusted execution environments
WO2019245789A1 (en) Secure sharing of license data in computing systems
US11741221B2 (en) Using a trusted execution environment to enable network booting
KR20220038082A (ko) 보안 런타임 시스템들 및 방법들
KR102363080B1 (ko) 우회-불가능한 게이트웨이를 이용한 tpm-기반의 안전한 다자간 컴퓨팅 시스템
JP2022099256A (ja) 信頼された実行環境のためのスケーラブルな証明
US20230015537A1 (en) Reducing latency of hardware trusted execution environments
KR102565414B1 (ko) 데이터 처리 가속기에 사용되는, 난독화 유닛에 의해 난독화 를 진행하는 데이터 전송
US20240095338A1 (en) Isolated runtime environments for securing secrets used to access remote resources from compute instances

Legal Events

Date Code Title Description
A107 Divisional application of patent