KR20150079405A - 보안 처리 환경으로부터의 기능의 오프로딩 - Google Patents

보안 처리 환경으로부터의 기능의 오프로딩 Download PDF

Info

Publication number
KR20150079405A
KR20150079405A KR1020140168975A KR20140168975A KR20150079405A KR 20150079405 A KR20150079405 A KR 20150079405A KR 1020140168975 A KR1020140168975 A KR 1020140168975A KR 20140168975 A KR20140168975 A KR 20140168975A KR 20150079405 A KR20150079405 A KR 20150079405A
Authority
KR
South Korea
Prior art keywords
instruction
execution
secure enclosure
key
enclosure
Prior art date
Application number
KR1020140168975A
Other languages
English (en)
Other versions
KR101653193B1 (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 KR20150079405A publication Critical patent/KR20150079405A/ko
Application granted granted Critical
Publication of KR101653193B1 publication Critical patent/KR101653193B1/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/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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/3247Cryptographic 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 involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • 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

Abstract

보안 처리 환경으로부터 기능을 오프로딩하는 본 발명의 실시예가 개시된다. 일 실시예에서, 프로세서는 명령어 유닛 및 실행 유닛을 포함한다. 명령어 유닛은 보안 인클레이브를 초기화하는 명령어를 수신한다. 실행 유닛은 명령어를 실행한다. 명령어의 실행은 서명 구조 키가 기능이 오프로딩되는 것을 허가하는 하드웨어 키와 매칭되는 것을 확인하는 것을 포함한다.

Description

보안 처리 환경으로부터의 기능의 오프로딩{OFFLOADING FUNCTIONALITY FROM A SECURE PROCESSING ENVIRONMENT}
본 발명은 정보 처리 분야, 및 더 구체적으로, 정보 처리 시스템들에서의 보안 분야에 속한다.
기밀 정보는 다수의 정보 처리 시스템에 의해 저장, 전송, 및 이용된다. 따라서, 기밀 정보의 보안 취급 및 저장을 제공하기 위한 기법들이 개발되어 왔다. 이러한 기법들은 정보 처리 시스템 내의 보안화된, 보호된, 또는 격리된 컨테이너, 파티션, 또는 환경을 생성 및 유지하기 위한 다양한 접근들을 포함한다.
본 발명은 예로서 예시되고 첨부된 도면들에 한정되지 않는다.
도 1은 본 발명의 실시예에 따른 보안 처리 환경으로부터 기능을 오프로딩하기 위한 시스템을 예시하는 도면.
도 2는 본 발명의 실시예에 따른 보안 처리 환경으로부터 기능을 오프로딩하기 위한 프로세서를 예시하는 도면.
도 3은 본 발명의 실시예에 따른 인클레이브 페이지 캐시(enclave page cache)를 예시하는 도면.
도 4는 본 발명의 실시예에 따른 보안 처리 환경에서의 특징 라이센싱(feature licensing)을 위한 방법을 예시하는 도면.
보안 처리 환경으로부터 기능을 오프로딩하기 위한 발명의 실시예들이 설명된다. 이러한 설명에서는, 본 발명의 더 철저한 이해를 제공하기 위해, 컴포넌트 및 시스템 구성들과 같은, 다수의 특정 상세가 개시될 수 있다. 그러나, 그러한 특정 상세들 없이 본 발명이 실시될 수 있다는 것이 당업자에게 이해될 것이다. 또한, 본 발명을 불필요하게 모호하게 하지 않기 위해, 일부 공지된 구조들, 회로들, 및 그외의 특징들은 상세히 도시되지 않는다.
이하의 설명에서, "일 실시예", "실시예", "예시 실시예", "다양한 실시예들" 등에 대한 참조는, 그렇게 설명된 본 발명의 실시예(들)는 특정 특징들, 구조들, 또는 특성들을 포함할 수 있지만, 하나보다 많은 실시예가 특정 특징들, 구조들, 또는 특성들을 포함할 수 있고, 모든 실시예가 반드시 특정 특징들, 구조들, 또는 특성들을 포함하지는 않는다는 것을 나타낸다. 또한, 일부 실시예들은 그외의 실시예들에 대해 설명된 특징들 중 일부 또는 전부를 가질 수 있거나, 또는 그 중 아무것도 가지지 않을 수 있다.
특허청구범위에서 이용되는 바와 같이, 달리 특정되지 않는 한 구성 요소를 설명하는 통상의 형용사들 "제1", "제2", "제3" 등의 이용은 구성 요소의 특정 예시 또는 유사한 구성 요소들의 상이한 예시들이 지칭되고 있다는 것만을 나타내고, 그렇게 설명된 구성 요소들이 반드시 시간적, 또는 공간적인 특정 순서, 서열, 또는 임의의 그외의 방식이어야 한다는 것을 시사하도록 의도되지 않는다.
또한, 용어들 "비트", "플래그", "필드", "엔트리", "지시자" 등은, 하드웨어 또는 소프트웨어에서 구현된, 레지스터, 테이블, 데이터베이스, 또는 그외의 데이터 구조에서의 임의의 유형의 저장 위치를 설명하는 데 이용될 수 있지만, 임의의 특정 유형의 저장 위치 또는 임의의 특정 저장 위치 내의 비트들의 수 또는 그외의 구성 요소들에 본 발명의 실시예들을 한정하기 위한 의도가 아니다. 용어 "클리어(clear)"는 저장 위치에 논리 값 0을 저장하는 것 또는 다르게는 저장되게 하는 것을 나타내는 데 이용될 수 있고, 용어 "셋(set)"은 저장 위치에 논리 값 1, 모두 1, 또는 일부 그외의 특정 값을 저장하는 것 또는 다르게는 저장되게 하는 것을 나타내는 데 이용될 수 있지만, 임의의 논리적 협약이 본 발명의 실시예들 내에서 이용될 수 있기 때문에, 이러한 용어들은 본발명의 실시예들을 임의의 특정 논리적 협약에 한정하기 위한 의도가 아니다.
배경기술 부분에서 설명한 바와 같이, 정보 처리 시스템 내의 보안화된, 보호된, 또는 격리된 컨테이너, 파티션, 또는 환경을 생성 및 유지하기 위한 다양한 접근 방법들이 개발되어 왔다. 하나의 그러한 접근 방법은, 보안화된, 보호된, 또는 격리된 컨테이너, 파티션, 또는 환경의 적어도 일 실시예에 관한 정보를 제공하는, 출원번호 13/527,547로서 2012년 6월 19일 출원된, "보안 애플리케이션 실행을 제공하는 방법 및 장치"로 명명된 함께 계류중인 미국 특허 출원에 설명된 바와 같은 보안 인클레이브들을 포함한다. 그러나, 이러한 참조는 본 발명의 실시예들의 범주를 임의의 방식으로 한정하기 위한 의도가 아니고 그외의 실시예들이 본 발명의 기술적 사상 및 범주 내에 속한 채로 이용될 수 있다. 따라서, 본 발명의 임의의 실시예에서 이용되는 임의의 보안화된, 보호된, 또는 격리된 컨테이너, 파티션, 또는 환경의 임의의 예시는 본원에서 보안 인클레이브 또는 인클레이브로서 지칭될 수 있다.
본 발명의 실시예들은, 인클레이브 내부에서 실행하는 애플리케이션에 대해 인클레이브 외부에서 실행하는 하드웨어 또는 소프트웨어에 의해 기능이 수행되도록, 보안 인클레이브로부터 기능을 오프로딩하는 것을 제공할 수 있다. 예를 들어, 본 발명의 실시예에 따라 인클레이브 내부 대신 인클레이브 외부에서 암호화 프로토콜을 수행하는 것이 더 효율적일 수 있다.
도 1은 본 발명의 실시예에 따른, 기능이 보안 처리 환경으로부터 오프로딩될 수 있는 정보 처리 시스템인, 시스템(100)을 예시한다. 시스템(100)은 서버, 데스크톱 컴퓨터, 휴대용 컴퓨터, 셋 톱 박스, 태블릿 또는 스마트 폰과 같은 휴대용 장치, 또는 임베드된 제어 시스템과 같은, 임의의 유형의 정보 처리 시스템을 나타낼 수 있다. 시스템(100)은 프로세서(110), 주변 제어 에이전트(120), 시스템 메모리(130), 및 정보 저장 장치(140)를 포함한다. 본 발명을 이용하는 시스템들은 임의의 수의 각각의 이러한 컴포넌트들 및, 주변 장치들 및 입/출력 장치들과 같은, 임의의 그외의 컴포넌트들 또는 그외의 구성 요소들을 포함할 수 있다. 이러한 또는 임의의 시스템 실시예에서 컴포넌트들 또는 그외의 구성 요소들 중 임의의 것 또는 모두는, 달리 특정되지 않는 한, 임의의 수의 버스들, 점-대-점, 또는 그외의 유선 또는 무선 인터페이스들 또는 접속들을 통해, 서로 접속, 연결, 또는 다르게는 통신할 수 있다. 도 1에 도시되었든 도 1에 도시되지 않았든, 시스템(100)의 임의의 컴포넌트들 또는 그외의 부분들은 단일 칩(시스템-온-칩 또는 SOC), 다이, 기판, 또는 패키지에 집적되거나 또는 다르게는 포함될 수 있다.
주변 제어 에이전트(120)는, 칩셋과 같이, 프로세서(110)를 포함하거나 또는 그것을 통해 주변 장치, 입/출력, 또는 그외의 컴포넌트들 또는 장치들이 프로세서(110)에 접속 또는 연결될 수 있는 임의의 컴포넌트를 나타낼 수 있다. 시스템 메모리(130)는 프로세서(110)에 의해 판독가능한 DRAM(dynamic random access memory) 또는 임의의 그외의 유형의 매체일 수 있다. 정보 저장 장치(140)는, 플래시 메모리 및/또는 고체 상태, 자기, 또는 광 디스크 드라이브와 같은, 임의의 유형의 지속성 또는 비휘발성 메모리 또는 스토리지를 포함할 수 있다.
프로세서(110)는 단일 기판 상에 집적되거나 또는 단일 패키지 내에 패키징된 하나 이상의 프로세서를 나타낼 수 있고, 이들 각각은, 임의의 조합의, 다수의 스레드(thread) 및/또는 다수의 실행 코어를 포함할 수 있다. 프로세서(110)로서 또는 그 내에서 나타내진 각 프로세서는, Intel® Core® Processor 군, Intel® Atom® Processor 군, 또는 Intel® Corporation으로부터의 그외의 프로세서 군 내의 프로세서, 또는 또 다른 기업으로부터의 또 다른 프로세서와 같은, 범용 마이크로프로세서, 또는 특수 목적 프로세서 또는 마이크로컨트롤러를 포함하는, 임의의 유형의 프로세서일 수 있다.
프로세서(110)는 보안 인클레이브를 생성하는 제1 명령어, 인클레이브에 콘텐트를 추가하는 제2 명령어, 인클레이브의 콘텐트를 측정하는 제3 명령어, 인클레이브를 초기화하는 제4 명령어, 및 기능을 오프로딩하는 데 이용되는 키를 취득하는 제5 명령어를 포함하는 명령어 세트 아키텍처에 따라 동작할 수 있다. 본 발명의 실시예들은 임의의 명령어 세트 아키텍처를 갖는 프로세서를 이용하여 실시될 수 있고, Intel® Corporation으로부터의 프로세서 군의 아키텍처에 한정되지 않지만, 명령어들은 기존 아키텍처에 대한 소프트웨어 보호 확장들의 세트의 일부일 수 있고, 본원에서 ECREATE 명령어, EADD 명령어, EEXTEND 명령어, EINIT 명령어, 및 EGETKEY 명령어로서 각각 지칭될 수 있다. 이러한 명령어들에 대한 지원은, 이하에 설명되는 바와 같이 배열되는 하드웨어, 마이크로코드, 펌웨어, 및/또는 그외의 구조들에 임베드된 임의의 조합의 회로 및/또는 로직을 이용하는 프로세서에서 구현되거나, 또는 임의의 그외의 접근 방법에 따라 구현될 수 있고, 도 1에서 ECREATE 하드웨어(112), EADD 하드웨어(114), EEXTEND 하드웨어(116), EINIT 하드웨어(118), EGETKEY 하드웨어(119)로서 표현된다.
도 2는 프로세서(200)를 도시하고, 도 2의 실시예는 시스템(100)의 프로세서(110)로서 기능할 수 있다. 프로세서(200)는 코어(210), 코어(220) 및 언코어(230)를 포함할 수 있다. 코어(210)는 저장 유닛(212), 명령어 유닛(214), 실행 유닛(270), 제어 유닛(218) 및 키(216)를 포함할 수 있다. 코어(220)는 저장 유닛(222), 명령어 유닛(224), 실행 유닛(270), 제어 유닛(228), 및 키(226)를 포함할 수 있다. 언코어(230)는 캐시 유닛(232), 인터페이스 유닛(234), 프로세서 예비 메모리 범위 레지스터들(250) 및 메모리 액세스 제어 유닛(260)을 포함할 수 있다. 프로세서(200)는 또한 도 2에 도시되지 않은 임의의 그외의 회로, 구조들 또는 로직을 포함할 수 있다. 전술되고 이하에 더 기술되는 바와 같이, ECREATE 하드웨어(112), EADD 하드웨어(114), EEXTEND 하드웨어(116), EINIT 하드웨어(118), 및 EGETKEY 하드웨어(119)의 기능성은 임의의 라벨링된 유닛들 중에 또는 프로세서(200) 내의 다른 곳에 분배될 수 있다.
저장 유닛들(212 및 222)은 코어들(210 및 220) 내에 임의의 목적으로 사용가능한 임의의 유형의 스토리지의 임의의 조합뿐만 아니라 그 스토리지에 액세스하는데 사용가능한 회로를 각각 포함할 수 있다; 예를 들어, 저장 유닛들(212 및 222)은, 코어들(210 및 220)의 동작 시에 사용가능한 능력 정보, 구성 정보, 제어 정보, 상태 정보, 성능 정보, 명령어들, 데이터, 및 임의의 그외의 정보를 각각 저장하기 위해, 임의의 메모리 또는 저장 기술을 사용하여 구현된, 임의의 수의 판독가능한, 기입가능한, 및/또는 기입-판독가능한 레지스터들, 버퍼들 및/또는 캐시들을 포함할 수 있다.
명령어 유닛들(214 및 224)은 코어들(210 및 220)에 의해 실행될 명령어들을 패치하고, 수신하고, 디코딩하고, 해석하고 및/또는 스케줄링하기 위한 임의의 회로, 로직, 구조들 및/또는 그외의 하드웨어를 각각 포함할 수 있다. 임의의 명령어 포맷은 본원의 범주 내에서 사용될 수 있다; 예를 들어, 명령어는 연산코드 및 하나 이상의 연산자들을 포함할 수 있고, 연산코드는 각각의 실행 유닛(216 또는 226)에 의한 실행을 위해 하나 이상의 마이크로 명령어들 또는 마이크로 연산들로 디코딩될 수 있다. ECREATE, EADD, EEXTEND 및 EINIT 명령어들 등의 명령어들은 권한 보안 인클레이브 연산코드(privileged secure enclave opcode)(예를 들어, ENCLS) 등의 단일 연산코드의 리프들(leaves)일 수 있고, 리프 명령어들은 프로세서 레지스터(예를 들어, EAX)의 값에 의해 특정된다. EGETKEY 명령어 등의 명령어들은 또한 비권한 보안 인클레이브 연산코드(예를 들어, ENCLU) 등의 단일 연산코드의 리프들일 수 있고, 리프 명령어들은 또한 프로세서 레지스터(예를 들어, EAX)의 값에 의해 특정된다. 연산자들 또는 그외의 파라미터들은 암시적으로, 직접으로, 간접으로, 또는 임의의 그외의 접근법에 따라 명령어와 연관될 수 있다.
실행 유닛들(270 및 280)은, 데이터 및 실행 명령어들, 마이크로 명령어들 및/또는 마이크로 연산들을 처리하기 위해 임의의 회로, 로직, 구조들, 및/또는 산술 유닛들, 로직 유닛들, 부동 소수점 유닛들, 시프터들 등의 그외의 하드웨어를 포함할 수 있다. 실행 유닛들(270 및 280)은, 본원의 실시예들에 따른 데이터를 측정하기 위한 전용의 회로, 로직, 구조들 및/또는 그외의 하드웨어를 포함할 수 있거나, 또는 임의의 그 측정들은, 공유된 회로, 로직, 구조들 및/또는 실행 유닛(270 및 280) 내의 및/또는 프로세서(200) 내의 다른 곳의 그외의 하드웨어를 이용하여 수행될 수 있다. 실행 유닛들(270 및 280)은 암호화 유닛들(272 및 282)을 각각 포함할 수 있다.
암호화 유닛들(272 및 282)은 임의의 하나 이상의 암호화 알고리즘들, 대응하는 복호화 알고리즘들 및/또는 해싱 알고리즘들을 실행하기 위한 임의의 회로, 로직, 구조들 및/또는 그외의 하드웨어를 나타낼 수 있다. 암호화 유닛들(272 및 282)은, SHA-256, SHA-512, SHA-3, 또는 SM3 등의 보안 해시 알고리즘을 구현하기 위한 SHA 로직(274 및 284)을 각각 포함할 수 있고, 및/또는 AES-CMAC(Advanced Encryption Standard Cipher-based MAC) 등의 MAC(method authentication code)를 생성하기 위한 MAC 로직(276 및 286)을 각각 포함할 수 있고, 및/또는 SHA 로직(274), SHA 로직(284), MAC 로직(276) 및 MAC 로직(286) 중 임의의 하나는 이 기능들을 수행하기 위한 임의의 전용의 또는 공유된 회로, 로직, 구조들 및/또는 프로세서(200) 내의 다른 곳의 그외의 하드웨어를 나타낼 수 있다. MAC들을 계산하기 위해, MAC 로직(276 및 286)은 키(216 및 226)를 각각 사용할 수 있고, 키 각각은 부트 프로세스 중에 생성된 퓨즈 어레이 내의 프로세서(200) 내에 프로그램된 프로세서 또는 플랫폼 고유 키 등의 임의의 키, 및/또는 그렇지 않은 경우 MAC 알고리즘에서 사용되거나 또는 임의의 그외의 목적으로 사용되는 비밀 키로서 이용가능한 키를 나타낼 수 있다.
제어 유닛들(218 및 228)은, 코어들(210 및 220)의 유닛들 및 그외의 엘리먼트들의 동작, 및 코어들(210 및 220) 내의, 코어들(210 및 220) 내로의 및 코어들(210 및 220) 외로의 데이터의 전송을 제어하기 위한 임의의 마이크로코드, 펌웨어, 회로, 로직, 구조들 및/또는 그외의 하드웨어를 각각 포함할 수 있다. 제어 유닛들(218 및 228)은, 예를 들어, 코어들(210 및 220)로 하여금 명령어 유닛들(214 및 224)에 의해 수신된 명령어들 및 명령어 유닛들(214 및 224)에 의해 수신된 명령어들로부터 도출된 마이크로 명령어들 또는 마이크로 연산들을 실행하게 함으로써, 코어들(210 및 220) 및 프로세서(200)로 하여금 후술하는 방법 실시예들 등의 본원의 방법 실시예들의 성능을 수행하거나 또는 그 성능에 참여하게 할 수 있다.
캐시 유닛(232)은, 정적 랜덤 액세스 메모리 또는 임의의 그외의 메모리 기술로 구현된 정보 처리 시스템(100)의 메모리 계층구조에서 캐시 메모리의 하나 이상의 레벨들에서 임의의 수의 캐시 어레이들 및 캐시 제어기들을 포함할 수 있다. 캐시 유닛(232)은, 정보 처리 시스템들에서의 캐싱에 대한 임의의 접근법에 따라 프로세서(200) 내의 임의의 수의 코어들 및/또는 로직 프로세서들 사이에 공유될 수 있다. 캐시 유닛(232)은 또한 더 후술되는 바와 같이 EPC(enclave page cache)(240)로서 사용되는 하나 이상의 메모리 어레이들을 포함할 수 있다.
인터페이스 유닛(234)은, 임의의 회로, 로직, 구조들, 및/또는 프로세서(200)가 임의의 유형의 버스, 점대점 또는 그외의 접속을 통해 직접, 또는 브리지, 허브, 또는 칩셋 등의 임의의 그외의 컴포넌트를 통해, 시스템(200) 등의 시스템 내의 그외의 컴포넌트들과 통신하는 것을 허용하는 링크 유닛, 버스 유닛 또는 메시징 유닛 등의 그외의 하드웨어를 나타낼 수 있다. 인터페이스 유닛(234)은, 시스템 메모리(130) 등의 시스템 메모리와 통신하기 위해 하나 이상의 집적 메모리 제어기들을 포함할 수 있고, 또는 프로세서(200) 외부의 하나 이상의 메모리 제어기들을 통해 시스템 메모리와 통신할 수 있다.
PRMRR(processor reserved memory range registers)(250)은, 저장 유닛들(212 및 222) 내의 임의의 하나 이상의 저장 위치들, 프로세서(200) 내의 다른 곳, 및/또는 언코어(230)의 그 카피들을 나타낼 수 있다. PRMRR(250)은, PRM(processor reserved memory)으로 지칭되는 메모리의 하나 이상의 물리적으로 인접한 범위들을 리저브하기 위해 예를 들어 기본 입력/출력 시스템 등의 구성 펌웨어에 의해 사용될 수 있다. 메모리 액세스 제어 유닛(260)은, 임의의 회로, 구조들, 로직, 및/또는 EPC(240)가 PRM으로 정의된 시스템 메모리 공간 내에 생성될 수 있도록 PRM에 대한 액세스를 제어할 수 있는 프로세서(200) 내의 다른 곳의 그외의 하드웨어를 나타낼 수 있다.
실시예에서, PRM은 2의 정수승인 크기, 예를 들어, 32MB, 64MB 또는 128MB 이고, 그 크기의 배수인 메모리 어드레스에 할당된다. PRMRR(250)은, PRM이 구성될 수 있는 유효한 크기들을 나타내기 위한 판독전용 PRMMR 유효 구성 레지스터(252)의 하나 이상의 인스턴스들, PRM의 하나 이상의 베이스 어드레스들 및 범위들을 정의하기 위한 PRMMR 베이스 레지스터(254) 및 PRMMR 마스크 레지스터(256)의 하나 이상의 인스턴스들을 포함할 수 있다.
EPC(240)는, 소프트웨어가 임의의 권한 레벨에서 동작하는 멀웨어에 의한 공격들로부터 보호될 수 있는 보안 저장 영역이다. 하나 이상의 보안 인클레이브들은, 각각의 인클레이브가 그 인클레이브 내에서 실행중인 소프트웨어에 의해서만 액세스될 수 있는 방법으로 코드, 데이터 또는 그외의 정보를 저장하는 EPC(240)의 하나 이상의 페이지들 또는 그외의 영역들을 포함할 수 있도록 생성될 수 있다. 예를 들어, 보안 인클레이브는, 소프트웨어 애플리케이션만이, 그 인클레이브 내에서 실행중인 동안, 그 인클레이브의 콘텐츠들을 액세스할 수 있도록 그 소프트웨어 애플리케이션에 의해 사용될 수 있다. 그외의 소프트웨어는 물론, 운영 시스템 또는 가상 머신 모니터 조차도, 그 인클레이브의 비암호화된 콘텐츠들을 판독할 수 없고, 그 인클레이브의 콘텐츠를 수정할 수 없고, 또는 그렇지 않은 경우 콘텐츠가 EPC로 로드되는 중에 (그 인클레이브가, 예를 들어, 디버그 인클레이브와 반대의 생산 인클레이브라고 가정함) 그 인클레이브의 콘텐츠를 이용하여 탬퍼링할 수 없다. 그러나, 인클레이브의 콘텐츠들은 시스템(100) 내의 임의의 프로세서 상의 그 인클레이브내로부터 실행하는 소프트웨어에 의해 액세스될 수 있다. 이러한 보호는 보호 인클레이브 아키텍처에 따라 동작하는 메모리 액세스 제어 유닛(260)에 의해 달성된다.
도 2에서, EPC(240)는 캐시 유닛(232) 내에 도시되고, EPC(240)는 공유된 캐시 또는 전용 메모리의 격리된 부분(sequestered portion)일 수 있다. 프로세서(200) 내에서 또는 프로세서(200)와 동일한 다이 상에서, EPC(240)는 정적 랜덤 액세스 메모리, 임베딩된 동적 랜덤 액세스 메모리, 또는 임의의 그외의 메모리 기술로 구현될 수 있다. EPC(240)는 또한 프로세서(200) 외부, 예를 들어 시스템 메모리(130)의 보안 영역 내에 추가적으로 구현될 수 있다. EPC(240)가 온-다이로 저장되지 않는 경우 보안 인클레이브들의 콘텐츠를 보호하기 위해, 암호화 유닛들(272 및/또는 282)은 EPC(240)가 오프-다이로 전달되기 전에 콘텐츠를 암호화하고 온 다이로 EPC(240) 내로 다시 전달된 콘텐츠를 복호화하는데 사용될 수 있다. 리플레이 및 그외의 공격들로부터 콘텐츠를 보호하는데 그외의 보호 메커니즘들이 또한 적용될 수 있다.
도 3은 EPC(300)를 도시하고, 도 3의 실시예는 도 2의 EPC(240)로서 기능할 수 있다. 도 3에서, EPC(300)는 SECS(secure enclave control structure)(310), TCS(thread control structure) 영역(320), 및 데이터 영역(330)을 포함한다. 도 3은 EPC(300)가 3개의 개별 영역들로 분할된 것을 도시하지만, EPC(300)는 임의의 수의 청크들(chunks), 영역들, 또는 페이지들로 분할될 수 있고, 이들 각각은 임의의 유형의 콘텐츠에 대해 사용될 수 있다. 일 실시예에서, EPC(300)는 4킬로바이트(KB) 페이지들로 분할되고, 4KB의 배수인 시스템 메모리(130) 내의 어드레스에 할당되고, SECS(310)는 EPC(300) 내의 4KB 페이지들 중 임의의 하나일 수 있고, TCS 영역(320)은 임의의 수의 인접한 또는 비인접한 4KB 페이지들일 수 있고, 데이터 영역(330)은 임의의 수의 인접한 또는 비인접한 4KB 페이지들일 수 있다. 또한, 도 3은 1개의 보안 인클레이브에 대응하는 1개의 SECS, 1개의 TCS 영역 및 1개의 데이터 영역을 도시하지만, EPC는, 각각의 인클레이브가 오직 유일한 SECS를 갖는 한, 임의의 수의 SECS들 및 임의의 수의 TCS 및 데이터 영역들을 포함할 수 있고, 각각의 유효 TCS 및 유효 데이터 영역(예를 들어, 페이지)은 오직 유일한 인클레이브에 속하고, SECS들, TCS, 및 데이터 페이지들 모두는 EPC 내에 피트된다(또는 EPC 외로 및 EPC 내로 다시 페이지될 수 있다).
SECS는, ECREATE 명령어의 실행에 의해, 하드웨어에 의해 사용되고, 인클레이브를 정의, 유지 및 보호하기 위해 하드웨어에 의해서만 액세스가능한(즉, 인클레이브 내부에서 실행되든 또는 외부에서 실행되든, 소프트웨어에 의해서는 판독가능하지 않고, 기입가능하지 않고, 또는 달리 액세스가능하지 않은) 메타데이터를 포함하도록 생성된다. 예를 들어, SECS(310)는 제1 측정 레지스터(MRENCLAVE)(312)를 포함하고, 이것은 SECS(310) 내에서 임의의 크기의 필드일 수 있고; 일 실시예에서, MRENCLAVE(312)는 32 바이트일 수 있다. MRENCLAVE(312)는 인클레이브의 빌드 측정(이하에서 설명되는 바와 같음)치를 저장하고, 그것은 ECREATE 명령어에 의해 초기화되고, 인클레이브와 연관된 모든 EADD 및 EEXTEND 명령어에 의해 업데이트 되고, 인클레이브와 연관된 EINIT 명령어에 의해 잠금된다. SECS(310)은 또한, 이하에서 추가로 설명되는 바와 같이, 인클레이브의 생성을 확인한 엔티티의 식별자(예를 들어 공개 키)의 측정치를 저장하는 제2 측정 레지스터(MRSIGNER)(314)를 포함한다. 일 실시예에서, MRSIGNER(314)는 32 바이트일 수 있다. 이하에서 설명되는 바와 같이, 인클레이브 속성들은 ATTRIBUTES 필드(316)에 저장될 수 있고, 이것은 일 실시예에서 16 바이트의 크기를 가질 수 있다.
하나 이상의 TCS들은 보안 인클레이브와 연관될 수도 있다. TCS는 인클레이브에 진입하고 빠져나갈 때 스레드 특정 정보를 저장하고 복원하도록 하드웨어에 의해 사용되는 메타데이터를 포함한다.
각 페이지의 보안 속성들은, 메모리 액세스 제어 유닛(260)에 의해 사용되어 보안 인클레이브 아키텍처에 의해 제공된 보호들을 시행하는 인클레이브 페이지 캐시 맵(EPCM)이라 불리는 마이크로-아키텍처 데이터 구조에 저장된다. EPCM은 각 페이지에 대해 하나의 엔트리를 EPC 내에 저장한다. 각각의 엔트리는 페이지가 속하는 SECS(즉, 인클레이브)의 식별자(즉, 64 비트 필드)를 포함한다. 이러한 식별자들은, EADD, EEXTEND, 및 EINIT 등의 보안 인클레이브 명령어들(예컨대, SECS의 주소는 RCX 등의 레지스터에 저장될 수 있고, SECS의 주소를 포함하는 마이크로-아키텍처 데이터 구조의 주소는 RBX 등의 레지스터에 포함될 수 있고, 등등)에 의해 참조되어, 명령어를 실행하기 위해 SECS가 하드웨어에 의해 판독되도록 할 수 있다.
도 4는 본 발명의 실시예에 따른 보안 처리 환경으로부터 기능을 오프로딩하는 방법(400)을 예시한다. 본 발명의 방법 실시예들은 이러한 측면으로 제한되지 않지만, 도 4의 방법 실시예를 설명하는 것을 돕기 위해 도 1, 2 및 3의 요소들에 대한 참조가 이루어질 수 있다. 방법(400)은 ECREATE, EADD, EEXTEND, 및 EINIT 명령어들을 사용하여 보안 인클레이브를 빌드하는 것, 및 EGETKEY 명령어를 사용하여 키를 요청하는 것을 포함하지만, 본 발명의 실시예들은 이러한 구체적으로 명명된 명령어들로 한정되지 않는다.
방법(400)의 박스(410)에서, 인클레이브의 빌드가 시작된다. 박스(412)에서, 예를 들어 인스톨러 애플리케이션에 의해 ECREATE 명령어가 발행되어 인클레이브를 생성한다. 박스(414)에서, 예를 들어 실행 유닛(270 또는 280)에 의해 ECREATE 명령어의 실행이 시작된다. 일 실시예에서, ECREATE 명령어의 실행은 인클레이브에 의해 사용될 주소들의 범위의 할당을 포함한다. 일 실시예에서, 주소들은, 예를 들어 시스템 메모리(130) 등의 시스템 메모리 내의 물리 주소인 제2 타입의 주소로 변환될, 예를 들어 가상 또는 선형 주소들인 제1 타입의 주소일 수 있다.
ECREATE 명령어의 실행은 또한, 박스(416)에서, 인클레이브의 속성들을 설정하고 인클레이브 속성들을 SECS, 예를 들어 SECS(310)의 ATTRIBUTES 필드(316)에 저장하는 것을 포함할 수 있다. 마이크로-아키텍처 데이터 구조(예컨대, PAGEINFO)는 ECREATE 명령어(예컨대, RBX 레지스터 내의 그것의 주소)와 연관될 수 있다. PAGEINFO는 SECS(310)로 복사될 소스 SECS의 주소를 특정하는 필드를 가질 수 있다. 소스 SECS는 SECS ATTRIBUTES 필드(316)에 복사될 소스 SECS ATTRIBUTES 비트 어레이를 포함할 수 있다.
박스(418)에서, 인스톨러 애플리케이션은, 예를 들어 하나 이상의 EADD 명령어를 발행함으로써, 하나 이상의 페이지들(또는 다른 영역들)을 인클레이브에 추가하고, 예를 들어 하나 이상의 EEXTEND 명령어를 발행함으로써, 이들이 측정되게 할 수 있다. 페이지를 인클레이브에 추가하는 것은 소스 페이지를 시스템 메모리로부터 EPC로 복사하고 EPC 페이지를 인클레이브의 SECS와 연관시키는 것을 포함할 수 있다. 소스 페이지는 암호화되지 않은 코드, 데이터, 또는 인클레이브의 데이터 영역에 대한 다른 정보를 포함하는 보통의 페이지일 수 있거나, 또는 소스 페이지는 TCS 영역에 대한 데이터를 포함하는 TCS 페이지일 수 있다. 이들을 측정되게 하는 것은, 컨텐츠, 위치, 및/또는 페이지 또는 페이지들의 다른 속성들에 기초하여 암호화 해시를 증분적으로 계산하거나 또는 확장하는 것, 및 해시를 MRENCLAVE(312)에 저장하는 것을 포함할 수 있다.
박스(420)에서, 인스톨러 애플리케이션은 인클레이브의 빌드를 마무리짓고 그것을 초기화하기 위해 EINIT 명령어를 발행한다. 일 실시예에서, EINIT는 EAX 레지스터에 값 0x2를 갖는 ENCLS의 리프이다. 박스(422)에서, 예를 들어 실행 유닛(270 또는 280)에 의해, EINIT 명령어의 실행이 시작된다.
박스(424)에서, EINIT 명령어의 실행은, 인클레이브의 서명자 또는 인스톨러에 의해 제공된 인클레이브 인증서 또는 서명 구조(SIGSTRUCT)가, 인증서 또는 서명 구조에 포함된 키를 이용함으로써 유효하다는 것을 확인하는 것을 포함할 수 있다. 박스(426)에서, EINIT 명령어의 실행은 또한, MRENCLAVE(312)의 컨텐츠가, 인증서 또는 서명 구조에 제공된 MRENCLAVE의 예상된 값과 일치한다는 것을 확인하는 것을 포함할 수 있고, MRENCLAVE(312)의 최종 값은, 인클레이브 내부에 배치된 코드 및 데이터, 인클레이브 내부의 페이지들의 위치 및 배치 순서, 및 각 페이지의 보안 특성들을 암호적으로 식별하는 고유한 SHA-256 다이제스트일 수 있다.
박스(428)에서, EINIT 명령어의 실행은 또한, 인증서 또는 서명 구조에서 제공된 키가 오프로딩될 특수 기능을 허용하는 키, 예컨대 하드웨어에 임베드된 키와 일치한다는 것을 확인하는 것을 포함할 수 있다. 박스(430)에서, (임의의 다른 원하는 검사들과 함께) 인증서 구조의 성공적인 검증 및 MRENCLAVE의 확인 및 키들은, 예를 들어 하나 이상의 특수 기능 비트를 SECS ATTRIBUTES 필드(316)에 설정함으로써, 특수 기능 속성들(인증서 또는 서명 구조에서 제공될 수 있음)을 인클레이브에 할당하게 하고, SECS는 EINIT 명령어(예컨대, ECX 내의 그것의 주소)와 연관될 수 있다.
박스(432)에서, EINIT 명령어의 실행은, 임의의 추가 영역들 또는 페이지들이 인클레이브에 추가되는 것을 방지하기 위하여, 후속하여 EADD 또는 EEXTEND 명령어가 실행되더라도, MRENCLAVE(312)의 컨텐츠가 변경되지 않도록 그것을 잠그고, SECS 내에 속성 지시자를 설정하는 것을 계속할 수 있다. 박스(434)에서, 인클레이브의 빌드가 완료된다.
박스(440)에서, 인클레이브 내의 소프트웨어 애플리케이션을 안전하게 실행하기 위하여, (EENTER 명령어를 발행함으로써) 인클레이브에 진입할 수 있다. 박스(432)에서, 소프트웨어 애플리케이션은 오프로딩 기능을 원할 수 있다. 박스(442)에서, 인클레이브는 (EGETKEY 명령어를 발행함으로써) 기능을 오프로딩하기 위해 사용하는 기능 특수 키를 요청한다. 박스(444)에서, SECS의 적절한 특수 기능 속성 비트들이 설정되어 있기 때문에, 요청은 성공적이다.
박스(446)에서, 인클레이브는 외부(인클레이브 외부) 엔티티, 예를 들어, 박스(418)에서 사용된 하드웨어 키에 대한 액세스를 갖는 시스템 하드웨어 또는 다른 시스템에 기능을 오프로딩하기 위해 기능 특수 키를 사용한다. 박스(446)는 외부 엔티티에 대해 설정된 키-기반 오프로딩 프로토콜을 구현 및/또는 수행하는 것을 포함할 수 있다. 박스(448)에서, 인클레이브가 기능 특수 키를 사용했고, 이는 오프로딩이 인가되고 안전하다는 것을 보장하므로, 오프로딩은 성공적이다.
본 발명의 다양한 실시예들에서, 도 5에 도시된 방법은 상이한 순서로, 도시된 박스들을 결합하거나 삭제하여, 추가의 박스들을 더하여, 또는 재정렬된, 결합된, 삭제된, 또는 추가의 박스들의 결합으로 수행될 수 있다. 또한, 본 발명의 방법 실시예들은 방법(500) 또는 그 변형들로 한정되지 않는다.
본 명세서에서 설명되지 않은 다수의 다른 방법 실시예들(뿐만 아니라 장치, 시스템, 및 기타 실시예들)은 본 발명의 범주 내에 있을 수 있다.
전술한 본 발명의 실시예들 또는 실시예들의 부분들은 임의의 형태의 머신-판독가능한 매체 상에 저장될 수 있다. 예를 들어, 방법(500)의 전부 또는 일부는 프로세서(110)에 의해 판독가능한 매체 상에 저장된 소프트웨어 또는 펌웨어 명령어들로 구현될 수 있고, 이들은 프로세서(110)에 의해 실행될 때, 프로세서(110)로 하여금 본 발명의 실시예를 실행하게 한다. 또한, 본 발명의 양태들은 머신-판독가능한 매체 상에 저장된 데이터로 구형될 수 있고, 데이터는 프로세서(110)의 전부 또는 일부를 제작하기 위해 사용가능한 디자인 또는 다른 정보를 나타낸다.
이와 같이, 보안 처리 환경으로부터 기능을 오프로딩하기 위한 발명의 실시예들이 설명되었다. 소정 실시예들이 설명되었고, 첨부 도면들에 도시되었지만, 그러한 실시예들은 단순히 예시적인 것이고, 넓은 발명을 제한하는 것은 아니며, 본 명세서를 탐구하면 다양한 다른 수정들이 통상의 기술자에게 발견될 것이기 때문에, 본 발명은 도시되고 설명된 특수 구성들 및 배열들로 한정되지 않는다. 이와 같은 기술의 영역에서는, 성장이 빠르고 추가의 발전은 쉽게 예견되지 않기 때문에, 개시된 실시예들은 본 발명의 원칙들 또는 첨부의 특허청구범위의 범주로부터 벗어나지 않고서, 기술적 진보들을 가능하게 함으로써 용이해지는 바와 같이, 배열과 상세에 있어서 쉽게 수정가능하다.

Claims (20)

  1. 제1 명령어를 수신하는 명령어 유닛 - 상기 제1 명령어는 보안 인클레이브(secure enclave)를 초기화함 -; 및
    상기 제1 명령어를 실행하는 실행 유닛 - 상기 제1 명령어의 실행은 서명 구조 키가 기능이 오프로딩되는(offloaded) 것을 허가하는 하드웨어 키와 매칭되는 것을 확인하는 것을 포함함 -
    을 포함하는 프로세서.
  2. 제1항에 있어서,
    상기 제1 명령어의 실행은 상기 보안 인클레이브에 대한 기능 특정 속성 비트를 설정하는 것을 더 포함하는 프로세서.
  3. 제2항에 있어서,
    상기 명령어 유닛은 상기 보안 인클레이브 내로부터 제2 명령어를 더 수신하고, 상기 실행 유닛은 제2 명령어를 실행하고, 상기 제2 명령어의 실행은 상기 기능 특정 속성 비트가 설정된 경우 기능 특정 키를 제공하는 것을 포함하는 프로세서.
  4. 제3항에 있어서,
    상기 제1 명령어의 실행은 상기 서명 구조 키를 제공하는 서명 구조를 확인하는 것을 더 포함하는 프로세서.
  5. 제4항에 있어서,
    상기 제1 명령어의 실행은 상기 보안 인클레이브의 측정치를 확인하는 것을 더 포함하는 프로세서.
  6. 제5항에 있어서,
    상기 명령어 유닛은 상기 보안 인클레이브를 생성하는 제3 명령어를 더 수신하고, 상기 실행 유닛은 상기 제3 명령어를 실행하고, 상기 제3 명령어의 실행은 상기 보안 인클레이브의 속성들을 확립하는 것을 포함하는 프로세서.
  7. 제6항에 있어서,
    상기 명령어 유닛은 상기 보안 인클레이브에 페이지들을 추가하는 제4 명령어를 더 수신하고, 상기 실행 유닛은 상기 제4 명령어를 실행하는 프로세서.
  8. 제7항에 있어서,
    상기 명령어 유닛은 상기 보안 인클레이브에 진입하는 제5 명령어를 더 수신하고, 상기 실행 유닛은 상기 제4 명령어를 실행하는 프로세서.
  9. 보안 인클레이브를 초기화하는 제1 명령어를 수신하는 단계; 및
    상기 제1 명령어를 실행하는 단계 - 상기 제1 명령어의 실행은 서명 구조 키가 기능이 오프로딩되는 것을 허가하는 하드웨어 키와 매칭되는 것을 확인하는 것을 포함함 -
    를 포함하는 방법.
  10. 제9항에 있어서,
    상기 제1 명령어의 실행은 상기 보안 인클레이브에 대한 기능 특정 속성 비트를 설정하는 것을 더 포함하는 방법.
  11. 제10항에 있어서,
    제2 명령어를 상기 보안 인클레이브 내로부터 수신하는 단계, 및 상기 제2 명령어를 실행하는 단계를 더 포함하고, 상기 제2 명령어의 실행은 상기 기능 특정 속성 비트가 설정된 경우 기능 특정 키를 제공하는 것을 포함하는 방법.
  12. 제11항에 있어서,
    상기 제1 명령어의 실행은 상기 서명 구조 키를 제공하는 서명 구조를 확인하는 것을 더 포함하는 방법.
  13. 제12항에 있어서,
    상기 제1 명령어의 실행은 상기 보안 인클레이브의 측정치를 확인하는 것을 더 포함하는 방법.
  14. 제13항에 있어서,
    상기 보안 인클레이브를 생성하는 제3 명령어를 수신하는 단계, 및 상기 제3 명령어를 실행하는 단계를 더 포함하고, 상기 제3 명령어의 실행은 상기 보안 인클레이브의 속성들을 확립하는 것을 포함하는 방법.
  15. 제14항에 있어서,
    상기 보안 인클레이브에 페이지들을 추가하는 제4 명령어를 수신하는 단계, 및 상기 제4 명령어를 실행하는 단계를 더 포함하는 방법.
  16. 제15항에 있어서,
    상기 보안 인클레이브에 진입하는 제5 명령어를 수신하는 단계, 및 상기 제4 명령어를 실행하는 단계를 더 포함하는 방법.
  17. 제16항에 있어서,
    상기 보안 인클레이브 내로부터의, 상기 기능 특정 키를 이용하여 기능을 오프로딩하는 단계를 더 포함하는 방법.
  18. 제17항에 있어서,
    상기 기능 특정 키를 이용하여 기능을 오프로딩하는 단계는, 상기 보안 인클레이브 외부의 엔티티를 이용하여 키-기반 프로토콜을 구현하는 단계를 포함하는 방법.
  19. 기능을 제공하는 엔티티; 및
    프로세서
    를 포함하고,
    상기 프로세서는,
    제1 명령어를 수신하는 명령어 유닛 - 상기 제1 명령어는 보안 인클레이브를 초기화함 -; 및
    상기 제1 명령어를 실행하는 실행 유닛 - 상기 제1 명령어의 실행은 서명 구조 키가 기능이 오프로딩되는 것을 허가하는 하드웨어 키와 매칭되는 것을 확인하는 것을 포함함 -
    을 포함하는 시스템.
  20. 제19항에 있어서,
    상기 기능은 암호(cryptographic) 프로토콜을 포함하는 시스템.
KR1020140168975A 2013-12-28 2014-11-28 보안 처리 환경으로부터의 기능의 오프로딩 KR101653193B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/142,837 2013-12-28
US14/142,837 US20150188710A1 (en) 2013-12-28 2013-12-28 Offloading functionality from a secure processing environment

Publications (2)

Publication Number Publication Date
KR20150079405A true KR20150079405A (ko) 2015-07-08
KR101653193B1 KR101653193B1 (ko) 2016-09-01

Family

ID=51951682

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140168975A KR101653193B1 (ko) 2013-12-28 2014-11-28 보안 처리 환경으로부터의 기능의 오프로딩

Country Status (4)

Country Link
US (1) US20150188710A1 (ko)
EP (1) EP2889794B1 (ko)
KR (1) KR101653193B1 (ko)
ES (1) ES2781826T3 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9864861B2 (en) * 2014-03-27 2018-01-09 Intel Corporation Object oriented marshaling scheme for calls to a secure region
US10565370B2 (en) * 2015-12-24 2020-02-18 Intel Corporation System and method for enabling secure memory transactions using enclaves
GB2553376A (en) 2016-09-06 2018-03-07 Trustonic Ltd Future constraints for hierarchical chain of trust
US11570010B2 (en) * 2020-12-26 2023-01-31 Intel Corporation ISA accessible physical unclonable function
US11700135B2 (en) * 2020-12-26 2023-07-11 Intel Corporation ISA accessible physical unclonable function
US11706039B2 (en) 2020-12-26 2023-07-18 Intel Corporation ISA accessible physical unclonable function

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100318800A1 (en) * 2009-06-11 2010-12-16 Microsoft Corporation Key management in secure network enclaves
US20120163589A1 (en) * 2010-12-22 2012-06-28 Johnson Simon P System and method for implementing a trusted dynamic launch and trusted platform module (tpm) using secure enclaves

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8639943B2 (en) * 2008-06-16 2014-01-28 Qualcomm Incorporated Methods and systems for checking run-time integrity of secure code cross-reference to related applications
US9087200B2 (en) * 2009-12-22 2015-07-21 Intel Corporation Method and apparatus to provide secure application execution
US8972746B2 (en) * 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
US20150113241A1 (en) * 2013-10-21 2015-04-23 Jason Martin Establishing physical locality between secure execution environments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100318800A1 (en) * 2009-06-11 2010-12-16 Microsoft Corporation Key management in secure network enclaves
US20120163589A1 (en) * 2010-12-22 2012-06-28 Johnson Simon P System and method for implementing a trusted dynamic launch and trusted platform module (tpm) using secure enclaves

Also Published As

Publication number Publication date
EP2889794A2 (en) 2015-07-01
EP2889794A3 (en) 2015-08-05
US20150188710A1 (en) 2015-07-02
EP2889794B1 (en) 2020-03-04
ES2781826T3 (es) 2020-09-08
KR101653193B1 (ko) 2016-09-01

Similar Documents

Publication Publication Date Title
US9276750B2 (en) Secure processing environment measurement and attestation
US11088846B2 (en) Key rotating trees with split counters for efficient hardware replay protection
US20200226074A1 (en) System, Apparatus And Method For Page Granular,Software Controlled Multiple Key Memory Encryption
US10216648B2 (en) Maintaining a secure processing environment across power cycles
CN110447032B (zh) 管理程序与虚拟机之间的存储器页转换监测
US9904805B2 (en) Cryptographic cache lines for a trusted execution environment
US9698989B2 (en) Feature licensing in a secure processing environment
CN112149148A (zh) 计算环境中存储器隔间的密码隔离
EP3025266B1 (en) Measuring a secure enclave
US11841806B1 (en) System, apparatus and method for integrity protecting tenant workloads in a multi-tenant computing environment
KR101653193B1 (ko) 보안 처리 환경으로부터의 기능의 오프로딩
US10181027B2 (en) Interface between a device and a secure processing environment
TW202226782A (zh) 包括增強型密碼位址之密碼運算技術
JP7464586B2 (ja) メモリ完全性チェックのための完全性ツリー
US20170308467A1 (en) Shared memory in a secure processing environment

Legal Events

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

Payment date: 20190729

Year of fee payment: 4