KR102244645B1 - 인증된 변수의 관리 - Google Patents

인증된 변수의 관리 Download PDF

Info

Publication number
KR102244645B1
KR102244645B1 KR1020167032826A KR20167032826A KR102244645B1 KR 102244645 B1 KR102244645 B1 KR 102244645B1 KR 1020167032826 A KR1020167032826 A KR 1020167032826A KR 20167032826 A KR20167032826 A KR 20167032826A KR 102244645 B1 KR102244645 B1 KR 102244645B1
Authority
KR
South Korea
Prior art keywords
firmware
cryptographic processor
variable
key
stored
Prior art date
Application number
KR1020167032826A
Other languages
English (en)
Other versions
KR20160146955A (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 KR20160146955A publication Critical patent/KR20160146955A/ko
Application granted granted Critical
Publication of KR102244645B1 publication Critical patent/KR102244645B1/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/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/72Protecting 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 in cryptographic circuits
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/3234Cryptographic 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 additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • 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/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Abstract

실시예는 장치를 포함하며, 장치는 보안 비-휘발성 저장부에 연결되는 아웃-오브-밴드 암호프로세서; 및 런타임(runtime) 동안 그리고 장치의 운영 체제가 부트된 이후, 암호프로세서로 하여금, (a) 보안 비-휘발성 저장부 내에 키를 저장하게 하고, (b) 키가 암호프로세서 내에 있는 동안, 서명(signature)을 생성하도록 키로 객체에 사인(sign)하게 하고, 그리고 (c) 서명을 검증하게 하는 펌웨어 명령어가 저장되어 있는 적어도 하나의 저장 매체를 포함한다. 다른 실시예가 본원에서 설명된다.

Description

인증된 변수의 관리{MANAGEMENT OF AUTHENTICATED VARIABLES}
실시예에는 신뢰 컴퓨팅(trusted computing)에 관한 것이다.
기본 입력/출력 시스템(BIOS) 소프트웨어는, 부트 업(즉, 운영 체제(OS)의 로딩 및 시작, 하드웨어 테스트 등과 같은 부팅 동작을 수행함)하고 컴퓨터 시스템에서 저레벨 동작을 수행하는데 이용되는 저레벨 소프트웨어이다. BIOS(또는 유사한 저레벨 소프트웨어)는 통합 확장 펌웨어 인터페이스(Unified Extensible Firmware Interface; UEFI) 오픈 소스 표준(예를 들어, www.uefi.org/specs/에서 이용 가능한 UEFI 규격 버전 2.4)을 이용하여 구현될 수 있으며, 이는 운영 체제(OS)와 플랫폼 펌웨어(지속성 메모리 및 지속성 메모리에 저장된 프로그램 코드 및 데이터의 조합) 간의 소프트웨어 인터페이스를 정의하는 규격이다. UEFI는 UEFI 보안 부트(Secure Boot) 기술에서 이용되는 UEFI 변수라 불리는 컴포넌트를 포함한다. UEFI 변수는 MRC(Memory Reference Code) 구성 데이터, PCH(Platform Control Hub) 구성 데이터, SA(System Agent) 구성 데이터, 키 등을 저장하는데 이용된다. UEFI 보안 부트 기술은 표준화되고(예를 들어, UEFI2.3.1c 규격), 일부 UEFI 기술은 오픈 소스 어레인지먼트(예를 들어, edk2.sourceforge.net)로 구현된다.
신뢰 플랫폼 모듈(Trusted Platform Module; TPM)은, 암호 기능성이 추가된 보안 마이크로-제어기/암호프로세서(cryptoprocessor)인 하드웨어 디바이스이다. 이것은 컴퓨팅 노드에 대한 비인가된 액세스를 방지하도록 지원 소프트웨어 및 펌웨어와 협력한다. TPM은 암호화/복호화를 수행하기 위한 하드웨어 엔진을 포함한다. TPM은 디지털 서명 및 키 랩핑(key wrapping) 동작 동안 자신의 빌트-인 암호화 엔진을 이용한다.
진보된 부트 업 소프트웨어 프로토콜(예를 들어, UEFI 보안 부트) 및 보안 암호프로세서(예를 들어, TPM)를 사용 가능하지만, 멀웨어(malware) 등은 여전히 진정한 신뢰 컴퓨팅에 위협적이다.
본 발명의 실시예의 특징 및 이점은 첨부된 청구항, 하나 이상의 예시적인 실시예의 하기의 상세한 설명 및 대응하는 도면으로부터 자명해질 것이다.
도 1은 보안 엔클레이브(secure enclave) 인에이블/디스에이블에 관한 본 발명의 실시예의 프로세스를 포함한다.
도 2는 변수(UEFI 변수) 저장소의 안티-롤백에 관한 본 발명의 실시예의 프로세스를 포함한다.
도 3은 다수의 OS 간의 보안 토글링에 관한 본 발명의 실시예의 프로세스를 포함한다.
도 4는 펌웨어가 보안 암호프로세서에 액세스하도록 시도할 때 OS와 펌웨어 간의 충돌을 방지하기 위한 본 발명의 실시예의 프로세스를 포함한다.
도 5는 본 발명의 실시예에서 이용하기 위한 시스템을 포함한다.
하기의 설명에서, 다수의 특정 세부사항이 개시되지만, 본 발명의 실시예는 이러한 특정 세부사항 없이도 실시될 수 있다. 본 설명의 이해를 모호하게 하는 것을 방지하기 위해서 공지된 회로, 구조 및 기술은 상세히 도시되지 않는다. "실시예", "다양한 실시예" 등은 그렇게 설명된 실시예가 특정한 특징, 구조 또는 특성을 포함할 수 있지만, 각각의 모든 실시예가 반드시 이러한 특정한 특징, 구조 또는 특성을 포함할 필요는 없다는 것을 나타낸다. 일부 실시예는 다른 실시예에 대해 설명된 특징 중 일부 또는 전부를 갖거나 어느 것도 갖지 않을 수 있다. "제1", "제2", "제3" 등은 공통적인 개체를 나타내는 것으로, 유사한 개체의 상이한 인스턴스를 참조하고 있다는 것을 나타낸다. 이러한 형용사는, 그렇게 설명된 개체가 시간적으로, 공간적으로, 순서면에서, 또는 임의의 다른 방식으로, 주어진 순서가 되어야 한다는 것을 암시하는 것은 아니다.
실시예에서는, 암호프로세서(예를 들어, TPM 2.0)에 대한 런타임 액세스(runtime access) 및 암호프로세서에 서명 서비스를 제공하고 있으며, 이에 따라, 펌웨어는 암호프로세서 내부에서 키를 생성하고, 객체(예를 들어, UEFI 변수)에 사인하기 위해 키(key)를 이용하고, 그 후 그 서명을 검증하도록 암호프로세서를 이용할 수 있다. 이로서 적어도 3개의 용례(use case)가 가능하다. 첫째로, 용례는, 제한 없이, Intel® 보안 엔클레이브(때때로, Intel® Software Guard Extensions(Intel® SGX)로 지칭됨), Intel® 관리 엔진(Intel® ME) 등과 같은 신뢰 실행 환경을 인에이블/디스에이블하는 능력을 포함한다. 둘째로, 다른 용례는 변수 롤백 보호(variable roll back protection)를 포함한다. 이는, 암호프로세서로(예를 들어, SMM의 UEFI 코드가 보호기 또는 '콘텐츠의 가드(guard of the contents)'로서 기능할 수 없을 때 전력 사이클 동안 불순해지는 SPI 플래시에 대한 무결성 검사의 역할을 암호프로세서가 할 수 있도록, 암호프로세서 내에 위치되는 보안 메모리로) 변수 또는 변수를 암호화 방식으로 바인딩함으로써(예를 들어, 암호 해시 이용하여), 특정 메모리 영역(예를 들어, 직렬 주변기기 인터페이스(serial peripheral interface; SPI) 플래시 메모리에 저장된 UEFI 변수)에 대한 오프라인 공격을 저지하는데 도움을 줄 수 있다. SMM의 UEFI/PI 이용에 관한 더 많은 정보는 미국 특허 번호 제6,848,046호(CA, 산타클라라의 인텔 사에 양도됨)에서 발견될 수 있다. 셋째로, 또 다른 용례는, 암호프로세서로 하여금, 다른 운영 체제(OS) 대신, 하나의 운영 체제를 인에이블/디스에이블(예를 들어, 단일 플랫폼 상에서 동작하는 2개의 OS 간의 토글링)하는 변수를 조작(예를 들어, 토글링)하게 하도록 런타임 동안 펌웨어가 암호프로세서에 액세스하는 것을 포함한다. 이러한 실시예는 추가로, 런타임 동안 암호프로세서로 하여금, 제1 OS에 제1 양(amount)의 메모리를, 그리고 제2 OS에 제2 양의 메모리를 할당하게 하도록, 펌웨어가 암호프로세서에 액세스하는 것을 포함한다. 이하 다양한 실시예에 관해 보다 상세하게 설명한다.
(암호프로세서에 의해 사인된 변수의 런타임 액세스 및/또는 조작)
UEFI 변수에 대해서는 앞에서 설명했다. UEFI 변수는 악의적인 활동에 취약하다. 특히, 오리지날 장비 제조자(original equipment manufacturers; OEM)/독립적인 BIOS 벤더(independent BIOS vendor; IBV)는 플래시 영역 상에 변수 데이터를 저장하고 시스템 관리 모드(system management mode; SMM)를 이용하여 변수 데이터의 무결성을 유지한다(즉, 어떠한 비밀성 제어도 존재하지 않고, 이에 따라 아무나 판독할 수 있지만, 신뢰 엔티티만이 기록할 수 있음). 따라서, 변수는, 공격자가 디바이스에 대한 물리적 액세스를 갖지만 집적 회로 패키지 내에서 공격하기에 장비나 전문지식이 충분치 않는 경우의 저-예산 하드웨어 공격인 "쉑 어택(shack attack)"과 같은 악성 활동에 취약하다. 공격자는 JTAG 디버그, 바운더리 스캔 I/O, 및 빌트-인 자가-테스트 설비를 이용하여 디바이스에 접속하도록 시도한다. 이들은 버스 라인, 핀 및 시스템 신호를 스눕핑(snoop)하기 위해 로직 프로브 및 네트워크 분석기를 이용하여 시스템을 수동적으로 모니터링할 수 있다. 공격자는 또한, 핀 및 버스 라인이 하이 또는 로우 전압에 있게 되도록 강제하고, 메모리 디바이스를 재프로그래밍하고 하드웨어 컴포넌트를 악성 대안물로 대체하는 것과 같은 단순 능동 하드웨어 공격을 수행할 수 있다. 다른 위협은 예를 들어, Bunnie Huang의한 XBOX1 공격(예를 들어, http:// www.uefidk.com/sites/default/files/resources/Platform_Security_Review_lntel_Cisco_White_Paper.pdf의 18쪽 참조)에서 설명된 바와 같은 "ROM 스와이프"/"교체" 스타일 공격 등을 포함한다.
이 변수에 대한 더 나은 보안을 위해, 실시예는, 변수에 사인하고 검증하기 위해 또는 TPM NVData에서 변수의 SHA256 해시와 같은 암호 체크섬을 유지하기 위해 암호 프로세서(cryptographic processor)를 이용함으로써 UEFI 변수(및 구성 정보 등을 저장하기 위한 유사한 컨테이너 또는 매커니즘)을 플랫폼에 암호로 바인딩한다. 이는, 예를 들어, TPM 표준 버전 2.0이 플랫폼 계층(platform hierarchy)을 지원하고, 결과적으로 플랫폼 펌웨어(예컨대, 반도체 집적 코드(semiconductor integrated code; SIC)) 및 OS 둘 다는 TPM을 이용할 수 있기 때문에 가능하다(이는 이전의 TPM 표준(예를 들어, 단지 OS 만이 TPM을 이용할 수 있었던 TPM 표준 1.2)에서 해당하지 않았었음). 결과적으로, (펌웨어가 액세스할 필요가 있는) UEFI 변수는 런타임 동안 TPM에 의해 사인되고 및/또는 UEFI PI SMM 코드 및 (TPM의 값 및 SPI 플래시로부터 도출된 값이 '동일'한지를 확인하기 위해 리부트 시에 생성된 해시와의 후속 비교를 위한) TPM에 저장된 후속 해시 값에 의해 해시될 수 있다. TPM은 또한 사인된 변수의 액세스/조작을 관리하기 위한 매커니즘을 갖는다. 예를 들어, TPM은 강한 액세스 제어(예를 들어, 변수의 판독을 방지하는 리드-록(read-lock) 및 변수로의 기록을 방지하는 라이트-록(write-lock))를 갖는다. 따라서, TPM은 예를 들어, 변수에 대한 (비밀성을 위한) READ_LOCK 보호 및 (무결성을 위한) WRITE_LOCK 보호를 구현할 수 있다.
아래에서 추가로 다뤄지는 바와 같이, 실시예는 TPM에 개인 키(private key)를 저장하는 것을 포함한다. 키는 UEFI 변수(또는 임의의 다른 데이터)에 사인하기 위해 이용될 수 있다. 그 결과, 어떠한 비밀성 스테이트먼트(confidentiality statement)도 요구되지 않고, 무결성 보호만이 요구된다. 이는 신뢰 엔티티에 대해 타겟 플랫폼상의 데이터에 안전하게 사인하는 능력을 촉구한다. 실시예에서, 신뢰 엔티티는 SMM이다. 이러한 실시예에서, (런타임중의) SMM은 다른 엔티티 대신 액션(action)을 수행하도록 SMM에 요청할 수 있는 다른 엔티티와의 신뢰(trust)를 설정한다. UEFI 변수 이용이 일부 실시예에서 단지 무결성 보호를 위해 필요할 수 있지만, "사인" 능력은 변수 저장소를 "암호화"하는데 이용될 수 있고, 이에 따라 사용자 패스워드 또는 다른 개인 식별 정보(personally identifiable information; PII)와 같은 정보는 신뢰할 수 없는 링 0 OS 코드로부터 적절히 차폐될 수 있다는 것에 주의한다.
즉, 상술된 3개의 용례 중 일부 또는 전부를 구현하는 능력은, OS가 TPM의 소유권을 차지하면 펌웨어가 TPM에 액세스할 수 없기 때문에, TPM 규격 버전 1.2와 같은 구식 TPM 방식을 통해서 가능하지 않았다. 그러나 TPM 2.0 "플랫폼 계층(Platform Hierarchy)"은 런타임 시에 펌웨어가 TPM 2.0 자원에 계속 액세스하도록 허용하고, 그리하여 펌웨어로 하여금, 보안 엔클레이브의 보안 인에이블/디스에이블을 허용하고 롤-백을 방지하고, 듀얼 OS 시나리오를 더 양호하게 구현하고 및/또는 임의의 다른 부트 또는 보안 크리티컬 세팅(security critical setting)을 조작하도록 안전하게 저장된 변수를 조작하게 허용한다.
런타임 동안(및/또는 프리부트(preboot) 동작 동안) TPM에 액세스하고 이와 상호작용하기 위해 펌웨어에 의해 이용되는 명령어는 SIC 또는 다른 곳에서 제공될 수 있다. 펌웨어는 PEI(Pre-EFI initialization) 및 DXE(Driver execution Environment) 명령어와 같은 코드(예를 들어, 드라이버) 또는 다른 호스트 실행 펌웨어 컴포넌트를 포함할 수 있다. UEFI 변수와 같이 SIC에 의해 액세스되도록 요구될 수 있는 다양한 컴포넌트는, TPM과 같은 보안 암호프로세서 내에서 이것에 사인하거나 해시함으로써, 그리고 리부트 시에 후속 검출을 위해 TPM에 관련 해시를 저장하게 함으로써 무결성이 보호될 수 있다. UEFI 규격은 암호프로세서에 의해 사인된 변수를 조작하기 위해 실시예에 의해 이용될 수 있는, 변수 액세스를 위한 애플리케이션 프로그래밍 인터페이스(application programming interface; API)(예를 들어, 변수를 기록/삭제하기 위한 SetVariable, 변수를 판독하기 위한 GetVariable)를 정의한다. 실시예에서, UEFI 변수는 SMM 런타임 동안은 물론 부트시간 동안에도 액세스 가능하다. 런타임 동안, 변수는 OS, SMM 및/또는 펌웨어(예를 들어, SIC)에 대해 액세스 가능할 수 있다.
아래에서 추가로 논의되는 바와 같이, 실시예는 TPM 2.0 서명 능력이 호스트 펌웨어에 의해 레버리지될 수 있는 수단을 제공한다. 구체적으로, 일 실시예에서, TPM 2.0의 플랫폼 계층은 디바이스가 '별개의 TPM'(dTPM20)(즉, TPM 2.0 디바이스)이든지 또는 암호프로세서의 펌웨어-기반(예를 들어, ARM TrustZone®, 인텔 사 플랫폼 신뢰 기술(Platform Trust Technology; PTT)) 구현이든지 간에, TPM 2.0 디바이스에 대한 런타임 액세스 및 프리(pre)-OS를 갖는 OEM PI 코드를 제공하는데 이용될 수 있다. 이따금, 본원에서, UEFI 특정 용어(예를 들어, PEI 등)에 대한 참조가 이루어지지만, 실시예는 그것으로 제한되지 않고, 임의의 호스트-기반 펌웨어 실행 방식(예를 들어, www.coreboot.org와 같은 오픈 소스 에코시스템 기반 펌웨어 및 런타임 동작의 그의 SMM 모델)과 관련된다.
통상적으로, 인증된 UEFI 변수는 OS 특정 툴(예를 들어, 보호된 사이닝 서버(protected signing server; HSM))를 이용하여 "오프 플랫폼(off platform)"으로 생성되고 사인된다. OS는 그 후 (예를 들어, 실제 SetVariable() 액션을 취하도록 UEFI 클라이언트에 전달되는 사인된 블랍(signed blob)을 이용하여) 펌웨어에 인증된 변수를 기재하도록 SetVariable 런타임 서비스를 호출한다. 연관된 공개키가 펌웨어의 저장된 변수에 기재되면, GetVariable 런타임 서비스가 호출될 때, 인증된 변수의 서명이 검증될 수 있다. 예를 들어, 이는 UEFI 보안 부트 PK, KEK, DB, DBX 변수가 이용되는 이유이다. 그러나 펌웨어는 그 자신의 목적을 위해 인증된 변수를 생성하고 이용하지 않을 수 있다. 아래에서 추가고 다뤄질 바와 같이, 실시예는 UEFI 변수가 암호프로세서 내에서 (또는 암호프로세서에 의해 안전하게 제어되는 영역 내에서) "온 플랫폼"으로 생성되고 및/또는 사인되도록 허용한다.
(런타임 액세스를 위한 컴포넌트)
위에서 언급된 바와 같이, 실시예는 다양한 작업을 수행하기 위해 TPM 2.0을 이용할 수 있다. 예를 들어, 실시예는 TPM 내에서 키를 생성(예를 들어, TPM2_CreatePrimary)하고, 키로 객체에 사인(예를 들어, TPM2_Sign)하고, 그리고 추후에 사인된 객체를 검증(예를 들어, TPM2_VerifySignature)하기 위한 커맨드의 구현을 제공하는 커맨드의 라이브러리(예를 들어, Tpm2CommandLib)를 포함한다. SMM 드라이버는 SetVariable 및 GetVariable UEFI 런타임 서비스와 함께 이 커맨드를 호출할 수 있다. SMM 드라이버는 데이터 객체에 사인하고 그 서명을 또한 검증하도록 TPM 2.0을 이용하는 "SMM 인증된 변수 서명 드라이버"일 수 있다. TPM2.0 NVData에 무결성 값(예를 들어, 각각의 기록 이후 전체 변수 저장소의 해시)의 저장을 위해, TPM2_NVWrite와 같은 커맨드가 SMM의 플랫폼 계층의 인가 하에서 런타임 시에 이용되고 그 후 마지막 런타임 세션과 후속 리부트(여기서 펌웨어는 Intel® 부트 가드와 같은 플랫폼 엘리먼트에 의해 안전하게 인증될 것임) 사이에, 값이 동일하다는 것을 보장하기 위해 리부트 시에 TPM2_NVRead를 통해 TPM NVData에 대해 검사될 수 있다. 하드웨어 보안 부트의 보다 일반적 설명은 미국 특허 번호 제7,984,286호(CA,산타클라라 인텔 사에 양도됨)에서 발견될 수 있다.
플랫폼 계층을 이용한 TPM 2.0에 대한 액세스는 인증 값으로 제어된다. 초기에, 이는 알려진 값이다. 제3 자 코드의 실행 이전에, 펌웨어는 이 인증 값을 비밀 값으로 변화시킨다. 이 새로운 비밀 값은 SMM에 전달되고 런타임 시에 SMM 드라이버에 의한 이용을 위해 SMRAM에 저장되어야 한다. 예를 들어, BIOS가 리셋 시에 실행되기 때문에, BIOS는 플랫폼 계층을 통해 TPM 2.0에 액세스할 수 있게 되는 제1 컴포넌트이다. 악성 제3 자 코드(예를 들어, 악성 옵션 ROM)가 TPM에 액세스하기 위해 플랫폼 계층을 이용하는 것을 잠재적으로 방지하기 위해, 플랫폼 계층의 인증 값은 새로운 비밀 값으로 변경되고 그 값은 추후 이용을 위해 SMM에 저장된다. 이것의 수행은, 제3 자 코드가 새로운 인증 값을 알지 못하기 때문에 제3 자 코드가 TPM에 액세스하는 것을 방지한다.
(펌웨어에 의한 UEFI 인증된 변수의 생성)
위에서 설명된 바와 같이, 프레임워크 펌웨어는 그 자신의 이용을 위해 UEFI 인증된 변수를 생성하고 조작할 수 있다. UEFI 인증된 변수를 생성하기 위해, SMI를 생성하는 SMM 인증된 변수 서명 드라이버의 사인 매서드가 호출되고, SMM 핸들러는 실시예에서 다음을 실행할 것이다. 첫째로, SMM 핸들러는, (런타임의 경우) OS로부터 TPM 2.0 상에서 미처리된 액션이 존재하지 않는다는 것을 보장할 것이며, 이는 아래에서 보다 상세히 다뤄진다(도 4 참조). 둘째로, SMM 핸들러는 키가 아직 존재하지 않는 경우, TPM2_CreatePrimary 커맨드를 이용함으로써 키를 생성하도록 플랫폼 계층을 어서트(assert)할 것이다. TPM 2.0 주(primary) 키의 개인 컴포넌트는 TPM 2.0 내의 보호된 위치에 저장되고 일 실시예에서 디바이스를 결코 떠나지 않는다는 것에 주의한다. 공개 컴포넌트(TPM 2.0에서 유지되는 개인 키에 대응하는 공개 키)만이 펌웨어에 대해 이용 가능하다. 셋째로, SMM 핸들러는 TPM2_Sign 커맨드를 이용하여 객체의 실제 사인을 수행할 것이다. 넷째로, SMM 핸들러는 SetVariable UEFI 런타임 서비스를 이용하여 플랫폼의 변수 저장소(예를 들어, 플랫폼 상에 위치되는 플래시 메모리)에 사인된 객체(예를 들어, UEFI 인증된 변수)를 저장할 것이다.
(펌웨어 생성 UEFI 인증된 변수의 검증)
펌웨어가 생성한 UEFI 인증된 변수를 검증하기 위해, SMI를 생성하는 SMM 인증된 변수 서명 드라이버의 검증 매서드가 호출되고, SMM 핸들러는 (i) (런타임의 경우) OS로부터 TPM 2.0 상의 미처리 액션이 존재하지 않는다는 것을 보장하고, (2) 키가 아직 존재하지 않는 경우, TPM2_CreatePrimary 커맨드를 이용하여 키를 생성하도록 플랫폼 계층을 어서트하고, 그리고 (3) 변수 데이터를 리트리브(retrieve)하고 그 후 TPM 2.0에 의해 생성되고 플래시에 저장된 공개 키에 기초하여 변수 데이터를 인증하도록 GetVariable UEFI 런타임 서비스를 호출할 것이다.
(보안 엔클레이브의 인에이블 및 디스에이블)
실시예는 신뢰 실행 환경을 제공하도록 보안 엔클레이브를 이용한다. 보안 엔클레이브는, 엔클레이브 외부에서 실행하는 소프트웨어가 엔클레이브 내부의 소프트웨어 및 데이터에 대한 액세스를 갖는 것을 방지하는 신뢰 소프트웨어 실행 환경이다.
보안 엔클레이브의 다양한 실시예는, 예를 들어, 2009년 11월 13일 출원되고 발명의 명칭이 "Method and Apparatus to Provide Secure Application Execution"인 미국 특허 출원(일련번호 12/590,767); 2009년 12월 22일 출원되고 발명의 명칭이 "Method and Apparatus to Provide Secure Application Execution"인 PCT 특허 출원(출원 번호 PCT/US2009/069212); 2010년 12월 22일 출원되고 발명의 명칭이 "System and Method for Implementing a Trusted Dynamic Launch and Trusted Platform Module (TPM) Using Secure Enclaves"인 미국 특허 출원(일련번호 12/976,831); 2013년 6월 4일 출원되고 발명의 명칭이 "Technologies For Hardening The Security Of Digital Information On Client Platforms"인 PCT 특허 출원(출원 번호 PCT/US2013/44158); (Matthew Hoekstra 등에 의한) "Using Innovative Instructions to Create Trustworthy Solutions", (Frank Mckeen 등에 의한) "Innovative Instructions and Software Model for Isolated Execution" , 및 이스라엘, Tel-Aviv에서 2013년 6월 24일 ISCA 40와 관련하여, 보안 및 프라이버시에 대한 하드웨어 및 아키텍처 지원에 관한 2차 워크숍(The Second Workshop on Hardware and Architectural Support for Security and Privacy)에서 제시된 다른 논문에서 설명된다. 결과적으로, 보안 엔클레이브의 동작에 관한 세부사항은 여기서 전체적으로 다뤄지지 않는다. 이 출원 및 논문은 여기서 "보안 엔클레이브 자료"로서 집합적으로 지칭된다.
보안 엔클레이브 자료에서 설명된 바와 같이, 보안 엔클레이브는 그의 함유 프로세스(containing process)의 가상 어드레스 공간으로부터 이루어진다. 엔클레이브의 메모리 관리는 가상 어드레스의 견지에서 수행된다. 일 실시예에서, 엔클레이브 메모리 관리는 2개의 부분: 어드레스 공간 할당 및 메모리 커밋(memory commitment)으로 분할된다. 어드레스 공간 할당은 엔클레이브가 이용할 수 있는 어드레스의 최대 범위의 규격(specification)이다. 어떠한 실제 자원도 이 영역에 커밋되지 않는다. 메모리 커밋은 할당된 어드레스 공간 내의 (페이지로서) 실제 메모리 자원의 할당이다. 이 2-페이즈 기술은 엔클레이브가 그의 메모리 이용을 플렉서블하게 제어하도록 허용하고 엔클레이브 요구가 낮을 때 메모리 자원의 남용 없이 성장을 허용한다. 커밋은 가상 페이지를 엔클레이브에 부가한다.
이러한 차별성은 2개의 명령어(ECREATE 및 EADD)에서 반영된다. ECREATE는 엔클레이브에 의한 이용을 위한 어드레스의 범위를 할당한다. EADD는 그 범위 내의 가상 메모리 페이지를 엔클레이브에 커밋한다. 운영 체제는 별개의 할당 및 커밋 동작을 지원할 수 있다. 예를 들어, 윈도우 API VirtualAlloc는 MEM_RESERVE(할당) 또는 MEM_COMMIT(커밋)의 플래그 인수(flag argument)를 취한다. OS가 이 분리를 지원하도록 요구되는 것이 아니며, 그의 존재는 엔클레이브 내의 메모리 관리가 보다 플렉서블하고 효율적이 되게 할 수 있다.
일 실시예에서, 보안 엔클레이브는, 엔클레이브가 구축되는 가상 어드레스 공간 범위의 베이스 및 크기를 특정하는 ECREATE 명령어를 이용하여 생성된다. 메모리는 보안 엔클레이브가 확정되기 전에 거기에 부가된다. 엔클레이브 생성 및 커밋 프로세스는 예를 들어, 윈도우 API를 이용함으로써 가장 잘 예시되며, 다음과 같이 진행된다: 1) (어떠한 물리적 메모리 또는 페이지 파일 저장부도 실제로 커밋함 없이 메모리의 영역을 예약하는) MEM_RESERVE 플래그에서 전달되는 VirtualAlloc를 이용하여 프로세스의 어드레스 공간 영역을 예약하고; (2) VirtualAlloc을 재차 호출함으로써 엔클레이브의 제1 페이지를 커밋하고(이때, MEM_COMMIT 플래그를 이용함); (3) 위와 동일한 어드레스 범위를 특정하도록 ECREATE 명령어를 이용하여 초기 환경을 셋업하고(즉, ECREATE는 보안 코드 및 데이터를 호스팅하기 위한 애플리케이션 내의 가상 메모리의 영역을 할당함); 그리고 (4) 각각의 부가적인 페이지가 엔클레이브: VirtualAlloc 엔클레이브 페이지에 부가되기 위해, 새로운 페이지를 엔클레이브에 부가하도록 EADD를 이용하고, 페이지의 128 바이트에 대한 측정값을 부가하도록 EEXTEND를 이용하고(EEXTEND는 EADD에서 부가된 데이터 또는 코드를 포함하도록 엔클레이브의 측정값을 업데이트함), 그리고, 전체 엔클레이브가 측정될 때까지 이 명령어를 호출한다(예를 들어, 측정값은 그것이 초기화된 시간에 엔클레이브의 데이터 및 코드의 암호 해시를 포함할 수 있음). 엔클레이브 페이지의 인접 세트가 한 번에 부가되는 경우, 위의 단계는 시스템 호출의 수를 최소화하도록 재순서화되고 최적화될 수 있다. 별개의 예약 및 커밋 동작을 지원하는 않는 운영 체제 상에서, 위의 VirtualAlloc은 예를 들어, 단순한 말록(malloc)에 의해 대체될 수 있으며, VirtualAlloc에 대한 잔여 호출은 제거된다.
ECREATE 및 EADD 명령어가 부가된 페이지에 대한 암호화 및 무결성을 인에이블하기 때문에, 그것이 엔클레이브에 부가된 이후 비-엔클레이브 소프트웨어가 이 메모리를 초기화하는 것은 가능하지 않다. 런타임 시스템은 그것을 EADD하기 이전에 그것이 담당하는 임의의 메모리를 완전히 초기화해야 한다. 이는 통상적으로 ECREATE를 호출하기 이전에라도 엔클레이브 이미지를 적소에 구축하도록 런타임 시스템에 요구한다(즉, 왜냐하면, SECS는 ECREATE 이후 소프트웨어에 의해 수정될 수 없기 때문임). 메모리가 초기화되고, 엔클레이브가 ECREATE되고 그의 메모리는 EADD되면, 그것은 본원에서 설명된 바와 같은 확정되고 측정될 수 있다.
일 실시예에서, 엔클레이브 내에 2개의 데이터 구조: 보안 엔클레이브 제어 저장소(Secure Enclave Control Store; SECS) 및 스레드 제어 구조(Thread Control Structure; TCS)가 존재한다. SECS 및 TCS는 런타임 소프트웨어에 의해 이용되는 아키텍처 정보 및 비-아키텍처 편의 필드를 포함한다. SECS, 하나 이상의 TCS 및 코드 및 데이터가 EADD되면, 엔클레이브 생성은 EINIT 명령어에 의해 완료된다. 이 명령어는 추가로 측정값 정보가 측정값 레지스터(measurement register; MR)(때때로 동시-계류중인 출원에서 "IR0"로서 지칭됨)에 기록되는 것을 방지한다. 즉, EINIT는 엔클레이브의 콘텐츠를 락 다운(lock down)하고 엔클레이브 내의 코드만이 동일한 엔클레이브의 데이터 영역에 대한 액세스를 갖는다고 보장한다. EINIT 이후, 어떠한 추가의 페이지도 엔클레이브에 부가될 수 없다.
미신뢰 코드가 EENTER 명령어를 이용하여 엔클레이브를 호출해서, 엔클레이브는 EEXIT를 통해 미신뢰 호출자로 다시 리턴한다. 엔클레이브 진입 시에, 제어는 엔클레이브 내부의 것으로 스택 포인터를 스위칭하는 코드로 전달된다. 리턴 시에, 소프트웨어는 재차 스택 포인터를 스왑(swap)하고 그 후 EEXIT 명령어를 실행한다.
따라서, 엔클레이브가 생성되어 EINIT로 초기화되고, 비인가 소프트웨어로부터의 엔클레이브의 메모리에 대한 액세스가 시도되면, 엔클레이브 그 자신보다 더 높은 특권 레벨에서 동작하는 가상 머신 모니터, BIOS 또는 운영 체제 함수와 같은 소프트웨어 조차도 방지된다. 물리적 관점에서, 엔클레이브 데이터가 레지스터, 캐시 또는 프로세서 패키지 내부의 다른 로직 블록에 상주하는 동안, 소프트웨어를 통한 비인가 액세스는 CPU 로직에 의해 방지된다. 엔클레이브 데이터가 플랫폼 메모리에 기록되도록 온-패키지 캐시(on-package cache)를 떠날 때마다, 데이터는 자동으로 암호화되고 그의 무결성이 보호된다. 이는 악성 개인이 엔클레이브 내에 포함된 코드나 데이터를 보고, 수정하거나 재생하기 위해 메모리 프로브 또는 다른 기술을 이용하는 것을 방지한다.
바로 이전의 설명은 보안 엔클레이브를 인스턴스화(instantiating)하기 위한 다양한 매커니즘을 논의한다. 보안 엔클레이브를 디스에이블하는 것은, 다음의 부트 동안 보안 엔클레이브를 설정하는데 필수적인 메모리 구성을 디스에이블함으로써 유사한 방식으로 발생할 수 있다.
실시예는 보안 엔클레이브의 인에이블/디스에이블을 개선한다. 예를 들어, 메모리는 부트 프로세스 동안 보안 엔클레이브에 대해 설정될 수 있다. UEFI 인증된 변수의 이용은 보안 엔클레이브를 설정하는데 이용되는 메모리를 신뢰 엔티티가 인에이블/디스에이블하도록 허용할 수 있다. UEFI 인증된 변수의 상태를 변경함으로써, BIOS는 다음의 부트 동안 보안 엔클레이브를 설정하는데 필수적인 메모리 구성을 안전하게 디스에이블하거나 확장할 수 있다. 예를 들어, OEM-사인된 OS 상주 드라이버는 ACPI Comm 버퍼를 통해서든 또는 직접 OxB2 포트 액세스를 통해서든 SMM 드라이버에 인에이블/디스에이블 요청을 발행할 수 있다. SMM 코드는 제1 인보크(invocation) 시에 인에이블/디스에이블 변수를 생성하거나, 또는 인보커(invoker)와의 신뢰 관계의 설정 시에 기존의 변수 이용을 업데이트할 것이다.
보안 엔클레이브 인에이블/디스에이블을 통해 다뤄지는 문제는, 머신이 전력 사이클 동안 변수 저장을 붕괴시키지 않는다는 것을 보장할 필요성과 결합하여, 특히 메모리 이용에 대해 민감한(즉, 메모리 요건을 위반하지 않도록 보안 엔클레이브 메모리 할당을 보류하는) 클라이언트 시스템에 대해 보안 엔클레이브 특징을 턴 온 및 오프하는 것을 허용하기 위한 보안 수단에 대한 요구가 존재한다는 것이다.
신뢰되는 SMM 드라이버는, TPM이 어떠한 호출자에도 응답하는 "혼란된 디퓨티(confused deputy)"가 되는 것을 방지하는데 도움을 준다(예를 들어, http://www.cis.upenn.edu/~KeyKOS/ConfusedDeputy.html 참조).
컴퓨팅 노드(예를 들어, 스마트폰, 태블릿, 노트북, 랩톱, Ultrabooks®, 자동차, 항공 드론, 생물학적 데이터를 모니터링하기 위해 손목/몸에 착용되는 피트니스 밴드, 인터넷 액세스를 제공하는 안경, 이들의 조합, 예컨대, 하이브리드 태블릿 및 스마트폰 등)는 서로 독립적으로 인에이블/디스에이블될 수 있는 다수의 보안 메모리 엔클레이브를 포함할 수 있다.
도 1은 본 발명의 실시예의 프로세스(100)를 포함한다.
블록(101)은 선택적이며, OS로부터의 커맨드에 기초하여 아웃-오브-밴드 암호프로세서(out-of-band cryptoprocessor)가 동작을 수행중인지를 결정하고, 아닌 경우 펌웨어가 암호프로세서에 액세스하게 하는 것을 포함한다. 이 결정을 내리기 위한 예시적인 방법은 도 4에 관하여 아래에서 다뤄진다.
블록(105)은 펌웨어가, 런타임 동안, 암호프로세서(예를 들어, TPM 2.0)로 하여금 키(예를 들어, 개인 키)를 생성하게 하는 것을 포함한다. 키의 생성은 TPM 2.0 시동 세션 또는 부트 사이클 당 한번 행해질 수 있다. (예를 들어, TPM2_CreatePrimary 커맨드를 이용하여) 키가 생성되면, 키는 다음 전력 사이클, OS 부트 및/또는 TPM 2.0 시동 세션 때까지 존재한다. 제한된 저장부를 갖는 일부 암호프로세서에서, 프로세서는 메모리 자원의 고갈 이전에 단지 제한된 수의 키(예를 들어, 3개의 키)를 생성할 수 있다. 일단 생성되면, 키는 그의 핸들(handle)을 통해 재사용될 수 있다. 키는 키의 이전의 버전을 생성하는데 이용된 동일 시드(seed)로 추후의 시간(예를 들어, 다음 전력 사이클, OS 부트 및/또는 TPM 2.0 시동 세션)에 재생성될 수 있다.
블록(110)은 펌웨어가, 런타임 동안, 암호프로세서로 하여금, 암호프로세서에 연결되는 보안 비-휘발성 저장부 내에(TPM 2.0 보호 메모리 영역 내에) 키를 저장하게 하는 것을 포함한다. 따라서, TPM2_CreatePrimary 커맨드를 (직접적으로 또는 간접적으로) 호출하는 펌웨어는 (직접적으로 또는 간접적으로) 키가 생성되고 저장되게 한다.
블록(115)은, 펌웨어가, 암호프로세서로 하여금 암호프로세서 내에서 객체를 생성하게 하는 것을 포함한다. 블록(120)은 펌웨어가, 런타임 동안, 암호프로세서로 하여금, 키가 암호프로세서 내에 있는 동안 키를 이용하여 객체(예를 들어, UEFI 변수와 같은 펌웨어 변수)에 사인해서 서명을 생성하게 하는 것을 포함한다. 그러나 다른 실시예에서, 사인되는 객체는 암호프로세서 내에서 생성되지 않는다. 대신, 객체는 TPM2_Sign 커맨드에 대한 파라미터 중 하나로서 암호프로세서(예를 들어, TPM 2.0)에 전달된다. 사인된 객체는 TPM 2.0에 저장되는 것이 아니라 암호프로세서 외부로 리턴된다. 사인된 객체는 그 후, 보안 엔클레이브가 인에이블되는지 또는 디스에이블되는지를 나타내는 UEFI 인증된 변수로서 (예를 들어, UEFI SetVariable(SGX 인에이블 값) 커맨드를 이용하여) 저장된다.
블록(125)은, 펌웨어가, 런타임 동안, 암호프로세서로 하여금, 사인된 객체 상의 서명을 검증하게 하는 것을 포함한다. 그러나 다른 실시예에서, 프로세스(100)의 임의의 지점에서 사인된 객체를 검증하도록 요구되지 않는다. 예를 들어, (암호프로세서에 의한) 사인된 객체의 검증은, 보안 엔클레이브(예를 들어, Intel® SGX) 인에이블 값 변수/객체가 UEFI GetVariable(SGX 인에이블 값/객체) 커맨드를 이용하여 액세스될 때 발생할 수 있다. 암호프로세서에 의한 검증은 선택적일 수 있다(예를 들어, 블록(105)에서 생성된 키에 대응하는 공개키가 검증을 위해 이용될 수 있음).
블록(130)은, 런타임 동안, 검증된 사인된 객체(예를 들어, 보안 엔클레이브를 인에이블하는데 이용되는 인증된 UEFI 변수)에 기초하여 (보안 엔클레이브 외부에서 실행중인 소프트웨어가 보안 엔클레이브 내부의 소프트웨어 및 데이터에 대한 액세스를 갖는 것을 방지하는 신뢰 소프트웨어 실행 환경을 포함하는) 보안 엔클레이브를 초기화하는 것을 포함한다. 블록(135)은 런타임 동안, 검증된 사인된 객체에 기초하여 보안 엔클레이브를 디스에이블하는 것을 포함한다. 일 실시예에서, 암호프로세서는 보안 엔클레이브의 인에이블/디스에이블을 담당하지 않는다. 대신, BIOS가 (호스트 프로세서를 통해) 이를 담당한다. 예를 들어, 보안 엔클레이브를 디스에이블하는 인증된 변수가 메모리(예를 들어, 플래시 메모리)에 존재한다고 BIOS가 결정한 경우, BIOS는 엔클레이브에 대해 이용될 메모리를 설정하지 않을 것이고, 엔클레이브를 설정하는데 필수적인 프로세서 특징을 인에이블하지 않을 것이다. 일 실시예에서, 변수는 무결성 보호(예를 들어, 기록 보호)되지만 비밀성 보호(예를 들어, 판독 보호)되지 않을 것이다.
(롤백 방지)
실시예는 UEFI 변수 저장소(즉, 변수가 저장된 메모리)에 관한 오프라인 공격으로부터 플랫폼을 보호하며, 여기서 이러한 공격은 이전의 비보안(insecure) 값으로 UEFI 변수의 롤백을 구현한다. 그렇지 않고, 보안 구성이 비보안 구성으로 "롤백"되는 경우, 플랫폼은 위험해진다. 특히, 실시예는 "dbx" UEFI 보안 부트 변수가 위험해진 인증서(compromised certificate)를 차단하도록 업데이트되기 이전의 변수 저장소로의 롤 백에 대한 시도를 방지한다. 실시예는, SPI 플래시의 UEFI 변수 저장소를 플랫폼에 암호로 바인딩함으로써 이를 달성한다. 각각의 변수 업데이트마다(즉, SetVariable의 호출 마다), 변수 저장소의 해시가 계산되고 그 후 해시는 보호된 TPM 2.0 NV 플래시 위치에 저장된다. 이 NV 인덱스는 TPM 2.0 액세스 정책에 따라 보호될 수 있어서, 예를 들어, 그것은 플랫폼 계층에 의해서만 판독되거나 기록될 수 있게 된다. 그 후, 부트 사이클 초기에 그리고 변수 저장소의 최초의 액세스 이전에, 변수 저장소 해시가 계산되고 마지막 변수 '기록' 또는 업데이트 이후 UEFI 코드에 의해 기록된 해시가 변수 저장소의 현재 상태와 부합하는지를 평가하기 위해 TPM 2.0 NV 플래시의 저장된 값과 비교된다.
도 2는 본 발명의 실시예의 프로세스(200)를 포함한다.
블록(201)은 선택적이며, OS로부터의 커맨드에 기초하여 아웃-오브-밴드 암호프로세서가 동작을 수행중인지를 결정하고, 아닌 경우 펌웨어가 암호프로세서에 액세스하게 하는 것을 포함한다. 이 결정을 내리기 위한 예시적인 방법은 도 4에 관하여 아래에서 다뤄진다.
선택적인 엘리먼트는 펌웨어가, 런타임 동안, 암호프로세서(예를 들어, TPM 2.0)로 하여금 키(예를 들어, 개인 키)를 생성 및 저장하게 하는 것을 포함한다. 그러나 다른 실시예에서, 키를 생성 및 저장할 필요성은, 해시(아래에서 설명됨)가 일부 실시예에서 사인되지 않기 때문에 필요하지 않다. 블록(210)은, 런타임 동안, 펌웨어(BIOS)가 암호프로세서 내에 포함되지 않는 메모리에 저장된 적어도 하나의 변수의 측정을 행하는 것을 포함한다. 블록(215)은, 펌웨어가 런타임 동안 암호프로세서에 포함된 보안 비-휘발성 저장부 내에 측정값을 저장하는 것을 포함한다. 예를 들어, 일 실시예에서, UEFI SetVariable() 커맨드가 호출될 때, 커맨드는 변수 저장소를 변경한다. 결과적으로, 변수 저장소의 새로운 해시가 계산된다. 그 해시(즉, 객체)는 그 후 이전에 프로비저닝된(provision) TPM NV 안티-롤백 위치에 저장된다. 실시예에서, 해시는 사인되지 않는다. 이러한 방식으로, NV 위치는 항상 현재 변수 저장소의 해시를 포함한다.
블록(220)은, 프리-부트 동작 동안, 측정값을, 암호프로세서 내에 포함되지 않는 메모리에 저장된 적어도 하나의 변수의 제2 측정값과 비교하는 것을 포함한다. 예를 들어, 제1 SetVariable 호출 이전에 시스템이 리부트할 때, 펌웨어(예를 들어, BIOS)는 변수 저장소를 해시하고, 그 해시를 암호프로세서의 보안 메모리(예를 들어, TPM2 NV 위치)의 값과 비교한다. 해시가 상이한 경우, 이는 변수 저장소가 변경되었다는 증거이다. 예를 들어, 이러한 변경은 시스템이 가동중단된 동안 발생할 수 있다(즉, 변수 저장소를 포함하는 플래시 메모리는 플래시 프로그래머 또는 일부 이러한 디바이스를 이용하여 폐지된 키를 포함하는 구(old) 값으로 변형됨).
(다수의 OS의 수용)
도 3은 본 발명의 실시예의 프로세스(300)를 포함한다.
블록(301)은 선택적이며, OS로부터의 커맨드에 기초하여 아웃-오브-밴드 암호프로세서가 동작을 수행중인지를 결정하고, 아닌 경우 펌웨어가 암호프로세서에 액세스하게 하는 것을 포함한다. 이 결정을 내리기 위한 예시적인 방법은 도 4에 관하여 아래에서 다뤄진다.
블록(305)은 펌웨어가, 런타임 동안, 암호프로세서(예를 들어, TPM 2.0)로 하여금 키(예를 들어, 개인 키)를 생성하게 하는 것을 포함한다. 블록(310)은 펌웨어가, 런타임 동안, 암호프로세서로 하여금, 암호프로세서에 연결되는(예를 들어, 암호프로세서 내에 포함되는) 보안 비휘발성 저장부 내에 키를 저장하게 하는 것을 포함한다. 블록(315)은 선택적이며, 펌웨어가, 암호프로세서로 하여금, 암호프로세서 내에서 객체를 생성(또는 예를 들어, TPM2_Sign 커맨드에 대한 파라미터로서 객체를 수신함으로써 이전에 생성된 객체에 액세스)하게 하는 것을 포함한다. 블록(320)은 펌웨어가, 런타임 동안, 암호프로세서로 하여금, 키가 암호프로세서 내에 있는 동안 키를 이용하여 객체(예를 들어, UEFI 변수와 같은 펌웨어 변수)에 사인해서 서명을 생성하게 하는 것을 포함한다. 사인된 객체는 암호프로세서에 저장되는 것이 아니라 암호프로세서 외부로 리턴될 수 있다. 블록(325)은, 펌웨어가, 런타임 동안, 암호프로세서로 하여금 (변수가 액세스될 때와 같이 추후의 시간에 검증이 발생할 수 있더라도) 사인된 객체 상의 서명을 검증하게 하는 것을 포함한다.
블록(330)은 펌웨어가, 런타임 동안, 장치에 포함된 호스트 프로세서로 하여금, 검증된 사인 객체에 기초하여 OS(예를 들어, Microsoft Windows®)와 부가적인 OS(예를 들어, Android™) 간에 제어를 토글링하게 하는 것을 포함한다. 블록(335)은, 펌웨어가, 런타임 동안, 프로세서(예를 들어, 호스트 프로세서)로 하여금, 검증된 사인된 객체에 기초하여 OS와 부가적인 OS 간에 메모리를 할당하게 하는 것을 포함한다.
(TPM에 액세스하는데 있어 OS 및 펌웨어 충돌)
도 4는 본 발명의 실시예의 프로세스를 포함한다.
도 4는 본 발명의 실시예에서 TPM에 액세스하는 OS 및 SMM 동작에 대한 프로세스를 포함한다. SMM/OS TPM 액세스를 허용하기 위한 몇 개의 방법이 존재한다. SMM 드라이버는, TPM 2.0 어드밴스드 구성 및 전력 인터페이스(Advanced Configuration and Power Interface; ACPI) 표를 이용하여 런타임 시에 TPM 2.0에 액세스하도록 시도하는 펌웨어 및 OS 양자 간의 경합을 방지할 수 있다. 예를 들어, TPM 2.0 요청은 (TPM2 ACPI 표를 통해) BIOS 또는 OS로부터 TPM 2.0 SMM 액세스 드라이버에 도달할 수 있다. TPM 2.0 액세스 드라이버는, 새로운 요청이 어느 하나의 소스로부터 들어올 때 이전의 요청이 프로세싱중인지를 인지함으로써 펌웨어와 OS 간의 경합을 방지한다. ACPI(www.uefi.org)는 OS와 펌웨어 간의 통신을 위한 표준이다. 펌웨어/BIOS는 플랫폼의 설명을 OS에 제공하는 ACPI 표를 생성한다. 이 표는 BIOS에 요청을 행하기 위해 OS가 이용할 수 있는 매서드를 포함한다(즉, OS는 TPM2 ACPI 표 상의 매서드를 인보크함으로써 TPM 2.0에 요청을 행할 수 있음). TPM 2.0 표는 OS에 의한 이용을 위해 부트 동안 BIOS에 의해 생성되는 메모리의 데이터 구조이다.
도 4에 관하여, 프로세스는 블록(505)에서 시작하고, 블록(510)에서, SMM에서 시스템이 TPM.STATUS 비트를 검사한다. 이미 OS TPM 커맨드가 존재하는 경우(블록 515), 시스템은 OS TPM 커맨드가 끝마치기를 기다린다(블록 (530)). 시간 만료(time out) 시에, 시스템은 커맨드를 삭제(블록 540)하거나, 또는 OS 커맨드가 끝마치기를 계속 기다린다(블록 535). 블록(535, 540) 이후, OS 커맨드와의 충돌이 더 이상 존재하지 않음을 인지하는 시스템은 SMM TPM 커맨드를 송신한다(블록 520). 응답이 그 후 획득될 수 있다(블록 525). 블록(515)에서, 어떠한 OS TPM 커맨드도 존재하지 않는 경우, 프로세스는 블록(520)으로 진행될 수 있다.
다른 실시예에서, SMM TPM 커맨드는 큐(queue)에 배치될 수 있고, 주기적인 시스템 관리 인터럽트(system management interrupt; SMI)는 주기적인 SMI 핸들러에서 TPM 상태(예를 들어, OS 커맨드가 존재하는지 여부)를 검사하는데 이용될 수 있다. 다른 실시예는 모든 TPM 액세스(예를 들어, OS TPM 액세스)를 트랩(trap)하고, SMM에서 TPM 하드웨어에 항상 액세스한다(그리하여 SIC 또는 OS TPM 액세스와 충돌이 없게 됨).
실시예는 UEFI 변수를 보호하기 위해 read_only 및 write_only와 같은 보안 제어를 이용한다.
UEFI 변수 및 TPM이 다수의 실시예에 대해 여기서 다뤄지지만, 이는 설명의 용이함 및 간결함을 위해 이루어진 것이고, 모든 실시예가 UEFI 변수 또는 TPM 중 어느 하나로 제한된다는 것을 암시하는 것은 아니다. 다른 실시예는 다른 프리-부트 코드, 부트 코드, 초기화 코드 및/또는 BIOS 코드는 물론, 다른 보안 암호프로세서 및/또는 보안 저장 매커니즘과 함께 이용될 수 있다. 또한, 특정 표준은 간략함을 위해 언급되었지만, 실시예는 임의의 하나의 BIOS 또는 TPM 표준 또는 임의의 다른 표준으로 제한되지 않는다.
이따금, 변수는 암호프로세서 NV 저장부에 저장되는 것으로 위에서 기술된다. 그러나 다양한 실시예에서, 이러한 변수는 변수의 해시(또는 다른 공간 절약 축약형 또는 파생물)를 포함할 수 있다. 해시/파생물은 저장 공간이 제한될 수 있는 NV에 저장된 것일 수 있다. 이 어레인지먼트는 변수의 훨씬 더 큰 세트가 암호프로세서 NV 메모리의 가능한 더 작은 세트에 맵핑되게 하도록 허용한다.
본원에서 논의된 실시예는 아래에서 논의된 도 5의 시스템과 같은 시스템을 활용할 수 있다. 사실상, 실시예는 다수의 상이한 타입의 시스템에서 이용될 수 있다. 예를 들어, 일 실시예에서, 통신 디바이스는 본원에서 설명되는 다양한 방법 및 기술을 수행하도록 배열될 수 있다. 물론, 본 발명의 범위는 통신 디바이스에 제한되지 않고, 오히려 다른 실시예는 명령어를 프로세싱하기 위한 다른 타입의 장치에 관련될 수 있다.
프로그램 명령어는, 명령어로 프로그래밍되는 범용 또는 특수-목적 프로세싱 시스템으로 하여금 본원에서 설명되는 동작을 수행하게 하는데 이용될 수 있다. 대안적으로, 동작은 동작을 수행하기 위한 하드와이어드 로직(hardwired logic)을 포함하는 특정 하드웨어 컴포넌트에 의해 또는 프로그래밍된 컴퓨터 컴포넌트와 커스텀 하드웨어 컴포넌트의 임의의 조합에 의해 수행될 수 있다. 본원에서 설명되는 방법은, (a) 방법을 수행하도록 프로세싱 시스템 또는 다른 전자 디바이스를 프로그래밍하는데 이용될 수 있는 명령어가 저장되어 있는 하나 이상의 머신 판독 가능 매체를 포함할 수 있는 컴퓨터 프로그램 물건 또는 (b) 시스템이 방법을 수행하게 하기 위한 명령어가 저장되어 있는 적어도 하나의 저장 매체로서 제공될 수 있다. 본원에서 이용되는 "머신 판독 가능 매체" 또는 "저장 매체"란 용어는, 머신으로 하여금, 본원에서 설명되는 방법 중 임의의 방법을 수행하게 하고 머신에 의한 실행을 위한 명령어의 시퀀스를 저장 또는 인코딩할 수 있는 임의의 매체(신호를 포함하는 일시적인 매체 또는 비-일시적인 매체)를 포함해야 한다. "머신 판독 가능 매체" 또는 "저장 매체"란 용어는 이에 따라, 고상 메모리, 광학 및 자기 디스크, 판독-전용 메모리(ROM), 프로그래밍 가능 ROM(PROM), 소거 가능 PROM(EPROM), 전기적 EPROM(EEPROM), 디스크 드라이브, 플로피 디스크, 콤팩트 디스크 ROM(CD-ROM), 디지털 다용도 디스크(DVD), 플래시 메모리, 자기-광학 디스크는 물론, 머신-액세스 가능 생물학적 상태 보존 또는 신호 보존 저장부와 같은 보다 실험적인 매체와 같은 메모리를 포함(그러나 이것으로 제한되지 않음)해야 한다. 매체는 머신에 의해 판독 가능한 형태로 정보를 저장, 송신, 또는 수신하기 위한 임의의 매커니즘을 포함할 수 있고, 매체는 안테나, 광섬유, 통신 인터페이스 등과 같이 프로그램 코드를 전달할 수 있는 매체를 포함할 수 있다. 프로그램 코드는 패킷, 직렬 데이터, 병렬 데이터 등의 형태로 송신될 수 있고 압축된 또는 암호화된 포맷으로 이용될 수 있다. 또한, 액션을 취하거나 결과를 유발하는 하나의 형태 또는 다른 형태(예를 들어, 프로그램, 프로시저, 프로세스, 애플리케이션, 모듈, 로직 등)의 소프트웨어를 증명하는 것은 당분야에서 일상적이다. 이러한 표현은 단지 프로세싱 시스템에 의한 소프트웨어의 실행이 프로세서로 하여금 액션을 수행하게 하거나 결과를 생성하게 한다는 것을 기술하는 간단한 방식이다.
이제 도 5를 참조하면, 본 발명의 실시예에 따른 시스템 실시예(1000)의 블록도가 도시된다. 시스템(1000)은 예를 들어, 셀룰러 폰, 스마트폰, 태블릿, Ultrabook®, 노트북, 랩톱, 개인용 디지털 보조기기 및 모바일 프로세서 기반 플랫폼과 같은 모바일 컴퓨팅 노드에 포함될 수 있다.
제1 프로세싱 엘리먼트(1070) 및 제2 프로세싱 엘리먼트(1080)를 포함하는 다중프로세서 시스템(1000)이 도시된다. 2개의 프로세싱 엘리먼트(1070 및 1080)가 도시되지만, 시스템(1000)의 실시예는 또한 단지 하나의 이러한 프로세싱 엘리먼트만을 포함할 수 있다는 것이 이해될 것이다. 시스템(1000)은 제1 프로세싱 엘리먼트(1070) 및 제2 프로세싱 엘리먼트(1080)가 점대점 상호접속(1050)을 통해 연결되는 점대점 상호접속 시스템으로서 예시된다. 예시된 상호접속 중 일부 또는 전부는 점대점 상호접속보다 오히려 다중-드롭 버스(multi-drop bus)로서 구현될 수 있다는 것이 이해되어야 한다. 도시된 바와 같이, 프로세싱 엘리먼트(1070 및 1080) 각각은 제1 및 제2 프로세서 코어(즉, 프로세서 코어(1074a 및 1074b) 및 프로세서 코어(1084a 및 1084b))를 포함하는 다중코어 프로세서일 수 있다. 이러한 코어(1074a, 1074b, 1084a, 1084b)는 본원에서 논의되는 방법과 유사한 방식으로 명령어 코드를 실행하도록 구성될 수 있다.
각각의 프로세싱 엘리먼트(1070, 1080)는 적어도 하나의 공유 캐시를 포함할 수 있다. 공유 캐시는 코어(1074a, 1074b 및 1084a, 1084b)와 같이 프로세서의 하나 이상의 컴포넌트에 의해 각각 활용되는 데이터(예를 들어, 명령어)를 저장할 수 있다. 예를 들어, 공유 캐시는 프로세서의 컴포넌트에 의한 더 빠른 액세스를 위해 메모리(1032, 1034)에 저장된 데이터를 국부적으로 캐시할 수 있다. 하나 이상의 실시예에서, 공유 캐시는 레벨 2(L2), 레벨 3(L3), 레벨 4(L4) 또는 다른 레벨의 캐시와 같은 하나 이상의 중간-레벨 캐시, 최종 레벨 캐시(last level cache; LLC) 및/또는 이들의 조합을 포함할 수 있다.
단지 2개의 프로세싱 엘리먼트(1070, 1080)만이 있는 것으로 도시되지만, 본 발명의 범위는 이것으로 제한되지 않는다는 것이 이해될 것이다. 다른 실시예에서, 하나 이상의 부가적인 프로세싱 엘리먼트가 주어진 프로세서에 존재할 수 있다. 대안적으로, 프로세싱 엘리먼트(1070, 1080) 중 하나 이상의 프로세싱 엘리먼트는 가속기와 같은 프로세서 또는 필드 프로그래밍 가능 게이트 어레이 이외의 다른 엘리먼트일 수 있다. 예를 들어, 부가적인 프로세싱 엘리먼트는 제1 프로세서(1070)와 동일한 부가적인 프로세서, 제1 프로세서(1070)와 이종이거나 비대칭적인 부가적인 프로세서, (예를 들어, 그래픽 가속기 또는 디지털 신호 프로세싱(DSP) 유닛과 같은) 가속기, 필드 프로그래밍 가능 게이트 어레이 또는 임의의 다른 프로세싱 엘리먼트를 포함할 수 있다. 아키텍처, 마이크로아키텍처, 열, 전력 소비 특성 등을 비롯해서 메리트(merit)의 메트릭의 스펙트럼의 견지에서 프로세싱 엘리먼트(1070, 1080) 간에 다양한 차이가 있을 수 있다. 이 차이는 프로세싱 엘리먼트(1070, 1080) 사이에서 비대칭성 및 이종성으로서 자신을 효과적으로 나타낼 수 있다. 적어도 하나의 실시예에 대해, 다양한 프로세싱 엘리먼트(1070, 1080)는 동일한 다이 패키지에 상주할 수 있다.
제1 프로세싱 엘리먼트(1070)는 추가로 메모리 제어기 로직(MC)(1072) 및 점대점(P-P) 인터페이스(1076 및 1078)를 포함할 수 있다. 유사하게, 제2 프로세싱 엘리먼트(1080)는 MC(1082) 및 P-P 인터페이스(1086 및 1088)를 포함할 수 있다. MC(1072 및 1082)는 프로세서를 각각의 메모리, 즉 메모리(1032) 및 메모리(1034)에 연결하며, 이는 각각의 프로세서에 국부적으로 부착되는 메인 메모리의 부분일 수 있다. MC 로직(1072 및 1082)이 프로세싱 엘리먼트(1070, 1080) 내에 통합되는 것으로서 예시되지만, 대안적인 실시예에 대해, MC 로직은 내부에 통합되기보단, 프로세싱 엘리먼트(1070, 1080) 외부의 별개의 로직일 수 있다.
제1 프로세싱 엘리먼트(1070) 및 제2 프로세싱 엘리먼트(1080)는 각각 P-P 상호접속(1062, 10104)을 경유하여 P-P 인터페이스(1076, 1086)를 통해 I/O 서브시스템(1090)에 연결될 수 있다. 도시된 바와 같이, I/O 서브시스템(1090)은 P-P 인터페이스(1094 및 1098)를 포함한다. 또한, I/O 서브시스템(1090)은 I/O 서브시스템(1090)을 고성능 그래픽 엔진(1038)에 연결하기 위한 인터페이스(1092)를 포함한다. 일 실시예에서, 버스는 그래픽 엔진(1038)을 I/O 서브시스템(1090)에 연결하는데 이용될 수 있다. 대안적으로, 점-대-점 상호접속(1039)이 이 컴포넌트를 연결할 수 있다.
결국, I/O 서브시스템(1090)은 인터페이스(1096)를 통해 제1 버스(10110)에 연결될 수 있다. 일 실시예에서, 제1 버스(10110)는 주변기기 컴포넌트 상호접속(Peripheral Component Interconnect; PCI) 버스 또는 PCI 익스프레스 버스 또는 다른 제3 세대 I/O 상호접속 버스와 같은 버스일 수 있지만, 본 발명의 범위는 이것으로 제한되지 않는다.
도시된 바와 같이, 다양한 I/O 디바이스(1014, 1024)는 제1 버스(10110)를 제2 버스(1020)에 연결할 수 있는 버스 브리지(1018)를 따라 제1 버스(10110)에 연결될 수 있다. 일 실시예에서, 제2 버스(1020)는 로우 핀 카운트(low pin count; LPC) 버스일 수 있다. 예를 들어, 키보드/마우스(1022), 통신 디바이스(1026)(결국, 컴퓨터 네트워크와 통신하게 될 수 있음), 및 디스크 드라이브 또는 다른 대용량 저장 디바이스와 같은 데이터 저장 유닛(1028)(일 실시예에서, 코드(1030)를 포함할 수 있음)을 포함하는 다양한 디바이스가 제2 버스(1020)에 연결될 수 있다. 코드(1030)는 위에서 설명된 방법 중 하나 이상의 방법의 실시예를 수행하기 위한 명령어를 포함할 수 있다. 또한, 오디오 I/O(1024)는 제2 버스(1020)에 연결될 수 있다.
다른 실시예가 고려된다는 것에 주의한다. 예를 들어, 도시된 점-대-점 아키텍처 대신, 시스템은 다중-드롭 버스 또는 다른 이러한 통신 토폴로지를 구현할 수 있다. 또한, 도 5의 엘리먼트는 대안적으로, 도 5에서 도시된 것보다 더 많거나 더 적은 집적된 칩을 이용하여 파티셔닝될 수 있다.
예 1은 장치를 포함하며, 장치는 보안 비-휘발성 저장부에 연결되는 아웃-오브-밴드 암호프로세서; 및 런타임 동안 그리고 장치의 운영 체제가 부트된 이후, 암호프로세서로 하여금, (a) 보안 비-휘발성 저장부 내에 키를 저장하게 하고, (b) 키가 암호프로세서 내에 있는 동안, 키로 객체에 사인해서 서명을 생성하게 하고, 그리고 (c) 서명을 검증하게 하는 펌웨어 명령어가 저장되어 있는 적어도 하나의 저장 매체를 포함한다.
예 2에서, 예 1의 청구 대상은, 객체는 통일 확장 펌웨어 인터페이스(Unified Extensible Firmware Interface; UEFI) 변수를 포함하고, 펌웨어는 플랫폼 초기화(platform initialization; PI) 펌웨어를 포함하고, 암호프로세서는 펌웨어 및 하드웨어 중 적어도 하나에서 구현되는 신뢰 제품 모듈(trusted product module; TPM)이고, TPM은 프로세서에 관하여 아웃-오브-밴드인 것을 선택적으로 포함할 수 있다.
예 3에서, 예 1 내지 2의 청구 대상은, 객체가 펌웨어 변수를 포함한다는 것을 선택적으로 포함할 수 있다.
예 4에서, 예 1 내지 3의 청구 대상은, 키는 개인 키를 포함하고, 암호프로세서는 보안 비휘발성 저장부를 포함하고, 적어도 하나의 저장 매체는, 암호프로세서로 하여금, 개인 키를 암호프로세서 내에 보유하는 동안 개인 키에 대응하는 공개 키를 암호프로세서 외부로 통신하게 하는 펌웨어 명령어가 저장되어 있다는 것을 선택적으로 포함할 수 있다.
예 5에서, 예 1 내지 4의 청구 대상은, 적어도 하나의 저장 매체는 암호프로세서로 하여금, (a) 암호프로세서 내에서 객체를 생성하는 것 및 (b) 키를 생성하는 것 중 적어도 하나를 수행하게 하는 펌웨어 명령어가 저장되어 있다는 것을 선택적으로 포함할 수 있다.
예 6에서, 예 1 내지 5의 청구 대상은, 적어도 하나의 저장 매체는, 보안 엔클레이브 외부에서 실행중인 소프트웨어가 보안 엔클레이브 내부의 소프트웨어 및 데이터에 대한 액세스를 갖는 것을 방지하는 신뢰 소프트웨어 실행 환경을 포함하는 보안 엔클레이브를 초기화하는 펌웨어 명령어가 저장되어 있다는 것을 선택적으로 포함할 수 있다.
예 7에서, 예 1 내지 6의 청구 대상은, 보안 엔클레이브를 초기화하는 것이 펌웨어 변수를 포함하는 객체의 인에이블에 기초한다는 것을 선택적으로 포함할 수 있다.
예 8에서, 예 1 내지 7의 청구 대상은, 적어도 하나의 저장 매체는 보안 엔클레이브를 디스에이블하는 펌웨어 명령어가 저장되어 있다는 것을 선택적으로 포함할 수 있다.
예 9에서, 예 1 내지 8의 청구 대상은, 적어도 하나의 저장 매체는 런타임 동안, 암호프로세서 내에 포함되지 않은 메모리에 저장된 적어도 하나의 변수의 측정값을 판정하는 펌웨어 명령어가 저장되어 있다는 것을 선택적으로 포함할 수 있다.
예 10에서, 예 1 내지 9의 청구 대상은, 적어도 하나의 저장 매체는 보안 비-휘발성 저장부 내에 측정값을 저장하는 펌웨어 명령어가 저장되어 있다는 것을 선택적으로 포함할 수 있다.
예 11에서, 예 1 내지 10의 청구 대상은, 적어도 하나의 저장 매체는 프리-부트 동작 동안 그리고 런타임 이전에, 측정값을, 암호프로세서에 포함되지 않은 메모리에 저장된 적어도 하나의 변수의 제2 측정값과 비교하는 펌웨어 명령어가 저장되어 있다는 것을 선택적으로 포함할 수 있다.
예 12에서, 예 1 내지 11의 청구 대상은, 적어도 하나의 저장 매체는 시스템 관리 모드(System Management Mode; SMM) 런타임 동안, 암호프로세서로 하여금, (a) 보안 비-휘발성 저장부 내에 키를 저장하게 하고, (b) 키로 객체에 사인하게 하고, 그리고 (c) 서명을 검증하게 하는 펌웨어 명령어가 저장되어 있다는 것을 선택적으로 포함할 수 있다.
예 13에서, 예 1 내지 12의 청구 대상은, 적어도 하나의 저장 매체는 프리-부트 동작 동안 암호프로세서 내의 명령어를 실행하게 하는 펌웨어 명령어가 저장되어 있다는 것을 선택적으로 포함할 수 있다.
예 14에서, 예 13의 청구 대상은 프로세서를 선택적으로 포함할 수 있고, 변수는 운영 체제와 추가 운영 체제 간에 프로세서의 제어의 토글링을 인에이블한다.
예 15에서, 예 1 내지 14의 청구 대상은, 변수가 운영 체제와 추가 운영 체제 사이의 메모리 할당을 인에이블한다는 것을 선택적으로 포함할 수 있다.
예 16에서, 예 1 내지 15의 청구 대상은, 암호프로세서가 보안 비-휘발성 저장부를 포함하고, 펌웨어는 운영 체제에 포함되지 않은 명령어를 포함하고, 적어도 하나의 저장 매체는 비-일시적이라는 것을 선택적으로 포함할 수 있다.
예 17에서, 예 1 내지 16의 청구 대상은, 적어도 하나의 저장 매체는, 운영 체제가 암호프로세서에 액세스하는 중이 아니라고 결정하고, 결정에 응답해서, 펌웨어 명령어로 하여금 암호프로세서에 액세스하게 하는 펌웨어 명령어가 저장되어 있다는 것을 선택적으로 포함할 수 있다.
예 18은 보안 비휘발성 저장부에 연결되는 아웃-오브-밴드 암호프로세서; 및 (a) 런타임 동안, 암호프로세서 내에 포함되지 않은 메모리에 저장된 적어도 하나의 변수의 측정값을 판정하게 하고, (b) 런타임 동안, 보안 비-휘발성 저장부 내에 측정값을 저장하게 하고, 그리고 (c) 프리-부트 동작 동안 그리고 런타임 이전에, 측정값을, 암호프로세서 내에 포함되지 않는 메모리에 저장된 적어도 하나의 변수의 제2 측정값과 비교하게 하는 펌웨어 명령어가 저장되어 있는 적어도 하나의 저장 매체를 포함한다.
예 19에서, 예 18의 청구 대상은 프로세서를 선택적으로 포함할 수 있고, 적어도 하나의 변수는 통일 확장 펌웨어 인터페이스(UEFI) 변수를 포함하고, 암호프로세서는 펌웨어 및 하드웨어 중 적어도 하나에서 구현되는 신뢰 제품 모듈(TPM)이고, TPM은 프로세서에 관하여 아웃-오브-밴드이다.
예 20에서, 예 18 내지 19의 청구 대상은, 적어도 하나의 저장 매체는 런타임 동안 그리고 장치의 운영 체제가 부트된 이후, 암호프로세서로 하여금, (a) 보안 비-휘발성 저장부 내에 키를 저장하게 하고, (b) 키가 암호프로세서 내에 있는 동안, 키로 적어도 하나의 변수에 사인해서 서명을 생성하게 하고, 그리고 (c) 서명을 검증하게 하는 펌웨어 명령어가 저장되어 있다는 것을 선택적으로 포함할 수 있다.
예 21에서, 예 18 내지 20의 청구 대상은, 적어도 하나의 저장 매체는, 보안 엔클레이브 외부에서 실행중인 소프트웨어가 보안 엔클레이브 내부의 데이터에 대한 액세스를 갖는 것을 방지하는 신뢰 소프트웨어 실행 환경을 초기화하는 펌웨어 명령어가 저장되어 있다는 것을 선택적으로 포함할 수 있다.
예 22에서, 예 18 내지 21의 청구 대상은, 보안 엔클레이브를 초기화하는 것이 적어도 하나의 변수의 인에이블에 기초한다는 것을 선택적으로 포함할 수 있다.
예 23은 시스템으로 하여금, 런타임 동안 그리고 장치의 운영 체제가 부트된 이후, (a) 아웃-오브-밴드 암호프로세서에 포함되는 보안 비-휘발성 저장부 내에 키를 저장하게 하고, (b) 키가 암호프로세서 내에 있는 동안, 키로 객체에 사인해서 서명을 생성하게 하고, 그리고 (c) 서명을 검증하게 하는 펌웨어 명령어가 저장되어 있는 적어도 하나의 저장 매체를 포함한다.
예 24에서, 예 23의 청구 대상은, 객체가 펌웨어 변수를 포함한다는 것을 선택적으로 포함할 수 있다.
예 25에서, 예 23 내지 24의 청구 대상은, 펌웨어 변수의 인에이블에 기초하여, 보안 엔클레이브 외부에서 실행중인 소프트웨어가 보안 엔클레이브 내부의 소프트웨어 및 데이터에 대한 액세스를 갖는 것을 방지하는 신뢰 소프트웨어 실행 환경을 포함하는 보안 엔클레이브를 초기화하는 것을 선택적으로 포함할 수 있다.
예 1a은, 런타임 동안 그리고 장치의 운영 체제가 부트된 이후, 암호프로세서로 하여금, (a) 보안 비-휘발성 저장부 내에 키를 저장하게 하고, (b) 키가 암호프로세서 내에 있는 동안 키로 객체에 사인해서 서명을 생성하게 하고 그리고 (c) 서명을 검증하게 하는 펌웨어를 포함하는 적어도 하나의 프로세서에 의해 실행되는 방법을 포함하며, 암호프로세서는 장치에 포함되고, 아웃-오브-밴드이며, 보안 비-휘발성 저장부에 연결된다.
예 2a에서, 예 1a의 청구 대상은, 객체는 통일 확장 펌웨어 인터페이스(UEFI) 변수를 포함하고, 펌웨어는 플랫폼 초기화(PI) 펌웨어를 포함하고, 암호프로세서는 펌웨어 및 하드웨어 중 적어도 하나에서 구현되는 신뢰 제품 모듈(TPM)이고, TPM은 프로세서에 관하여 아웃-오브-밴드라는 것을 선택적으로 포함할 수 있다.
예 3a에서, 예 1a 내지 2a의 청구 대상은, 객체가 펌웨어 변수를 포함한다는 것을 선택적으로 포함할 수 있다.
예 4a에서, 예 1a 내지 3a의 청구 대상은, 키는 개인 키를 포함하고, 암호프로세서는 보안 비휘발성 저장부를 포함하고, 방법은, 암호프로세서로 하여금, 개인 키를 암호프로세서 내에 보유하는 동안 개인 키에 대응하는 공개 키를 암호프로세서 외부로 통신하게 하는 펌웨어를 포함한다는 것을 선택적으로 포함할 수 있다.
예 5a에서, 예 1a 내지 4a의 청구 대상은, 암호프로세서로 하여금, (a) 암호프로세서 내에서 객체를 생성하는 것 및 (b) 키를 생성하는 것 중 적어도 하나를 수행하게 하는 펌웨어를 선택적으로 포함할 수 있다.
예 6a에서, 예 1a 내지 5a의 청구 대상은, 보안 엔클레이브 외부에서 실행중인 소프트웨어가 보안 엔클레이브 내부의 소프트웨어 및 데이터에 대한 액세스를 갖는 것을 방지하는 신뢰 소프트웨어 실행 환경을 포함하는 보안 엔클레이브를 초기화하는 펌웨어를 선택적으로 포함할 수 있다.
예 7a에서, 예 1a 내지 6a의 청구 대상은, 보안 엔클레이브를 초기화하는 것은 펌웨어 변수를 포함하는 객체의 인에이블에 기초한다는 것을 선택적으로 포함할 수 있다.
예 8a에서, 예 1a 내지 7a의 청구 대상은, 보안 엔클레이브를 디스에이블하는 펌웨어를 선택적으로 포함할 수 있다.
예 9a에서, 예 1a 내지 8a의 청구 대상은, 암호프로세서 내에 포함되지 않는 메모리에 저장된 적어도 하나의 변수의 측정값을 판정하는 펌웨어를 선택적으로 포함할 수 있다.
예 10a에서, 예 1a 내지 9a의 청구 대상은, 보안 비-휘발성 저장부 내에 측정값을 저장하는 펌웨어를 선택적으로 포함할 수 있다.
예 11a에서, 예 1a 내지 10a의 청구 대상은, 프리-부트 동작 동안 그리고 런타임 이전에, 측정값을, 암호프로세서 내에 포함되지 않는 메모리에 저장된 적어도 하나의 변수의 제2 측정값과 비교하는 펌웨어를 선택적으로 포함할 수 있다.
예 12a에서, 예 1a 내지 11a의 청구 대상은, 시스템 관리 모드(SMM) 런타임 동안, 암호프로세서로 하여금, (a) 보안 비-휘발성 저장부 내에 키를 저장하게 하고, (b) 키로 객체에 사인하게 하고, 그리고 (c) 서명을 검증하게 하는 펌웨어를 선택적으로 포함할 수 있다.
예 13a에서, 예 1a 내지 12a의 청구 대상은, 프리-부트 동작 동안 암호프로세서 내에서 명령어가 실행되게 하는 펌웨어를 선택적으로 포함할 수 있다.
예 14a에서, 예 1a 내지 13a의 청구 대상은, 변수가 운영 체제와 추가 운영 체제 간에 프로세서의 제어의 토글링을 인에이블한다는 것을 선택적으로 포함할 수 있다.
예 15a에서, 예 1a 내지 14a의 청구 대상은, 변수가 운영 체제와 추가 운영 체제 사이의 메모리 할당을 인에이블한다는 것을 선택적으로 포함할 수 있다.
예 16a에서, 예 1a 내지 15a의 청구 대상은, 암호프로세서가 보안 비-휘발성 저장부를 포함한다는 것을 선택적으로 포함할 수 있다.
예 17a에서, 예 1a 내지 16a의 청구 대상은, 펌웨어는 운영 체제가 암호프로세서에 액세스하는 중이 아니라고 결정하고, 이 결정에 응답해서, 펌웨어는 암호프로세서에 액세스한다는 것을 선택적으로 포함할 수 있다.
예 18a는, (a) 런타임 동안, 암호프로세서 내에 포함되지 않은 메모리에 저장된 적어도 하나의 변수의 측정값을 판정하고, (b) 런타임 동안, 보안 비-휘발성 저장부 내에 측정값을 저장하게 하고, 그리고 (c) 프리-부트 동작 동안 그리고 런타임 이전에, 측정값을, 암호프로세서 내에 포함되지 않는 메모리에 저장된 적어도 하나의 변수의 제2 측정값과 비교하는 펌웨어를 포함하는 적어도 하나의 프로세서에 의해 실행되는 방법을 포함하며; 암호프로세서는 아웃-오브-밴드이며, 보안 비-휘발성 저장부에 연결된다.
예 19a에서, 예 18a의 청구 대상은, 적어도 하나의 변수는 통일 확장 펌웨어 인터페이스(UEFI) 변수를 포함하고, 암호프로세서는 펌웨어 및 하드웨어 중 적어도 하나에서 구현되는 신뢰 제품 모듈(TPM)이라는 것을 선택적으로 포함할 수 있다.
예 20a에서, 예 18a 내지 19a의 청구 대상은, 런타임 동안 그리고 장치의 운영 체제가 부트된 이후, 암호프로세서로 하여금, (a) 보안 비-휘발성 저장부 내에 키를 저장하게 하고, (b) 키가 암호프로세서 내에 있는 동안, 키로 적어도 하나의 변수에 사인해서 서명을 생성하게 하고, 그리고 (c) 서명을 검증하게 하는 펌웨어를 선택적으로 포함할 수 있다.
예 21a에서, 예 18a 내지 20a의 청구 대상은, 보안 엔클레이브 외부에서 실행중인 소프트웨어가 보안 엔클레이브 내부의 데이터에 대한 액세스를 갖는 것을 방지하는 신뢰 소프트웨어 실행 환경을 초기화하는 펌웨어를 선택적으로 포함할 수 있다.
예 22a에서, 예 18a 내지 21a의 청구 대상은, 보안 엔클레이브를 초기화하는 것은 적어도 하나의 변수의 인에이블에 기초한다는 것을 선택적으로 포함할 수 있다.
예 23a는, 런타임 동안 그리고 장치의 운영 체제가 부트된 이후, (a) 아웃-오브-밴드 암호프로세서에 포함되는 보안 비-휘발성 저장부 내에 키를 저장하고, (b) 키가 암호프로세서 내에 있는 동안, 키로 객체에 사인해서 서명을 생성하며, 그리고 (c) 서명을 검증하기 위한 수단을 포함하는 프로세싱 장치를 포함한다.
예 24a에서, 예 23a의 청구 대상은, 객체가 펌웨어 변수를 포함한다는 것을 선택적으로 포함할 수 있다.
예 25a에서, 예 23a 내지 24a의 청구 대상은, 펌웨어 변수의 인에이블에 기초하여, 보안 엔클레이브 외부에서 실행중인 소프트웨어가 보안 엔클레이브 내부의 소프트웨어 및 데이터에 대한 액세스를 갖는 것을 방지하는 신뢰 소프트웨어 실행 환경을 포함하는 보안 엔클레이브를 초기화하기 위한 수단을 선택적으로 포함할 수 있다.
본 발명이 제한된 수의 실시예에 관하여 설명되었지만, 당업자는 이 실시예로부터의 다수의 변형 및 변동을 인지할 것이다. 첨부된 청구항은 본 발명의 진정한 사상 및 범위 내에 속하는 것으로서 모든 이러한 변형 및 변동을 커버하도록 의도된다.

Claims (25)

  1. 장치로서,
    프로세서와,
    보안 비-휘발성 저장부에 연결되는 암호프로세서(cryptoprocessor) - 상기 암호프로세서는 상기 프로세서에 대하여 아웃-오브-밴드(out-of-band)임 - 와,
    상기 장치를 위한 운영 체제가 부트된 이후 런타임(runtime) 동안, 상기 암호프로세서로 하여금, (a) 상기 보안 비-휘발성 저장부 내에 키를 저장하게 하고, (b) 상기 키가 상기 암호프로세서 내에 있는 동안, 상기 키로 객체에 사인(sign)해서 서명(signature)을 생성하게 하고, 그리고 (c) 상기 서명을 검증하게 하는 펌웨어 명령어가 저장되어 있는 적어도 하나의 저장 매체를 포함하는
    장치.
  2. 제1 항에 있어서,
    상기 객체는 통일 확장 펌웨어 인터페이스(Unified Extensible Firmware Interface; UEFI) 변수를 포함하며,
    상기 펌웨어는 플랫폼 초기화(platform initialization; PI) 펌웨어를 포함하고,
    상기 암호프로세서는 펌웨어 및 하드웨어 중 적어도 하나에서 구현되는 신뢰 제품 모듈(trusted product module; TPM)인
    장치.
  3. 제1 항에 있어서,
    상기 객체는 펌웨어 변수를 포함하는
    장치.
  4. 제3 항에 있어서,
    상기 키는 개인 키이고, 상기 암호프로세서는 상기 보안 비-휘발성 저장부를 포함하고,
    상기 적어도 하나의 저장 매체에는, 상기 암호프로세서로 하여금, 상기 개인 키를 상기 암호프로세서 내에 보유하는 동안, 상기 개인 키에 대응하는 공개 키를 상기 암호프로세서 외부로 통신하게 하는 펌웨어 명령어가 저장되어 있는
    장치.
  5. 제1 항에 있어서,
    상기 적어도 하나의 저장 매체에는, 상기 암호프로세서로 하여금, (a) 상기 암호프로세서 내에서 상기 객체를 생성하는 것 및 (b) 상기 키를 생성하는 것 중 적어도 하나를 수행하게 하는 펌웨어 명령어가 저장되어 있는
    장치.
  6. 제1 항에 있어서,
    상기 적어도 하나의 저장 매체에는, 보안 엔클레이브(secure enclave) 외부에서 실행중인 소프트웨어가 상기 보안 엔클레이브 내부의 소프트웨어 및 데이터에 대한 액세스를 갖는 것을 방지하는 신뢰 소프트웨어 실행 환경을 포함하는 상기 보안 엔클레이브를 초기화하는 펌웨어 명령어가 저장되어 있는
    장치.
  7. 제6 항에 있어서,
    상기 보안 엔클레이브를 초기화하는 것은 펌웨어 변수를 포함하는 객체의 인에이블에 기초하는
    장치.

  8. 제1 항에 있어서,
    상기 적어도 하나의 저장 매체에는, 보안 엔클레이브를 디스에이블하는 펌웨어 명령어가 저장되어 있는
    장치.
  9. 제1 항에 있어서,
    상기 적어도 하나의 저장 매체에는, 런타임 동안, 상기 암호프로세서 내에 포함되지 않은 메모리에 저장된 적어도 하나의 변수의 측정값을 판정하는 펌웨어 명령어가 저장되어 있는
    장치.
  10. 제9 항에 있어서,
    상기 적어도 하나의 저장 매체에는, 상기 보안 비-휘발성 저장부 내에 상기 측정값을 저장하는 펌웨어 명령어가 저장되어 있는
    장치.

  11. 제10 항에 있어서,
    상기 적어도 하나의 저장 매체에는, 런타임 이전 프리-부트(pre-boot) 동작 동안, 상기 측정값을, 상기 암호프로세서에 포함되지 않은 메모리에 저장된 적어도 하나의 변수의 제2 측정값과 비교하는 펌웨어 명령어가 저장되어 있는
    장치.
  12. 제1 항에 있어서,
    상기 적어도 하나의 저장 매체에는, 시스템 관리 모드(System Management Mode; SMM) 런타임 동안, 상기 암호프로세서로 하여금, (a) 상기 보안 비-휘발성 저장부 내에 상기 키를 저장하게 하고, (b) 상기 키로 상기 객체에 사인하게 하고, 그리고 (c) 상기 서명을 검증하게 하는 펌웨어 명령어가 저장되어 있는
    장치.
  13. 제1 항에 있어서,
    상기 적어도 하나의 저장 매체에는, 프리-부트 동작 동안 상기 암호프로세서 내의 명령어를 실행하게 하는 펌웨어 명령어가 저장되어 있는
    장치.
  14. 제3 항에 있어서,
    상기 펌웨어 변수는 상기 운영 체제와 추가 운영 체제 간에 상기 프로세서의 제어의 토글링을 인에이블하는
    장치.
  15. 제3 항에 있어서,
    상기 펌웨어 변수는 상기 운영 체제와 추가 운영 체제 사이의 메모리 할당을 인에이블하는
    장치.
  16. 제3 항에 있어서,
    상기 암호프로세서는 상기 보안 비-휘발성 저장부를 포함하고,
    상기 펌웨어는 상기 운영 체제에 포함되지 않은 명령어를 포함하며,
    상기 적어도 하나의 저장 매체는 비-일시적인 것인
    장치.
  17. 제1 항에 있어서,
    상기 적어도 하나의 저장 매체에는, 상기 운영 체제가 상기 암호프로세서에 액세스하는 중이 아니라고 결정하고, 상기 결정에 응답해서, 상기 펌웨어 명령어로 하여금 상기 암호프로세서에 액세스하게 하는 펌웨어 명령어가 저장되어 있는
    장치.
  18. 장치로서,
    프로세서와
    보안 비-휘발성 저장부에 연결되는 암호프로세서 - 상기 암호프로세서는 상기 프로세서에 대하여 아웃-오브-밴드임 - 와,
    (a) 런타임 동안, 상기 암호프로세서 내에 포함되지 않은 메모리에 저장된 적어도 하나의 변수의 측정값을 판정하게 하고, (b) 런타임 동안, 상기 보안 비-휘발성 저장부 내에 상기 측정값을 저장하게 하며, 그리고 (c) 런타임 이전 프리-부트 동작 동안, 상기 측정값을, 상기 암호프로세서 내에 포함되지 않는 메모리에 저장된 적어도 하나의 변수의 제2 측정값과 비교하게 하는 펌웨어 명령어가 저장되어 있는 적어도 하나의 저장 매체를 포함하는
    장치.
  19. 제18 항에 있어서,
    상기 적어도 하나의 변수는 통일 확장 펌웨어 인터페이스(UEFI) 변수를 포함하며,
    상기 암호프로세서는 펌웨어 및 하드웨어 중 적어도 하나에서 구현되는 신뢰 제품 모듈(TPM)인
    장치.
  20. 제18 항에 있어서,
    상기 적어도 하나의 저장 매체에는, 상기 장치의 운영 체제가 부트된 이후 런타임 동안, 상기 암호프로세서로 하여금, (a) 상기 보안 비-휘발성 저장부 내에 키를 저장하게 하고, (b) 상기 키가 상기 암호프로세서 내에 있는 동안, 상기 키로 상기 적어도 하나의 변수에 사인해서 서명을 생성하게 하고, 그리고 (c) 상기 서명을 검증하게 하는 펌웨어 명령어가 저장되어 있는
    장치.
  21. 제18 항에 있어서,
    상기 적어도 하나의 저장 매체에는, 보안 엔클레이브 외부에서 실행중인 소프트웨어가 상기 보안 엔클레이브 내부의 데이터에 대한 액세스를 갖는 것을 방지하는 신뢰 소프트웨어 실행 환경을 초기화하는 펌웨어 명령어가 저장되어 있는
    장치.
  22. 제21 항에 있어서,
    상기 보안 엔클레이브를 초기화하는 것은 상기 적어도 하나의 변수의 인에이블에 기초하는
    장치.
  23. 암호프로세서로 하여금, 장치의 운영 체제가 부트된 이후 런타임 동안, (a) 상기 암호프로세서에 포함되는 보안 비-휘발성 저장부 내에 키를 저장하게 하고, (b) 상기 키가 상기 암호프로세서 내에 있는 동안, 상기 키로 객체에 사인해서 서명을 생성하게 하고, 그리고 (c) 상기 서명을 검증하게 하는 펌웨어 명령어 - 상기 장치는 상기 암호프로세서와 프로세서를 포함하고, 상기 암호프로세서는 상기 프로세서에 대하여 아웃-오브-밴드임 - 가 저장되어 있는
    적어도 하나의 저장 매체.
  24. 제23 항에 있어서,
    상기 객체는 펌웨어 변수를 포함하는
    적어도 하나의 저장 매체.
  25. 제24 항에 있어서,
    상기 펌웨어 변수의 인에이블에 기초하여, 보안 엔클레이브 외부에서 실행중인 소프트웨어가 상기 보안 엔클레이브 내부의 소프트웨어 및 데이터에 대한 액세스를 갖는 것을 방지하는 신뢰 소프트웨어 실행 환경을 포함하는 상기 보안 엔클레이브를 초기화하는 펌웨어 명령어가 저장되어 있는
    적어도 하나의 저장 매체.
KR1020167032826A 2014-06-27 2015-06-25 인증된 변수의 관리 KR102244645B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/317,909 2014-06-27
US14/317,909 US9785801B2 (en) 2014-06-27 2014-06-27 Management of authenticated variables
PCT/US2015/037600 WO2015200581A1 (en) 2014-06-27 2015-06-25 Management of authenticated variables

Publications (2)

Publication Number Publication Date
KR20160146955A KR20160146955A (ko) 2016-12-21
KR102244645B1 true KR102244645B1 (ko) 2021-04-23

Family

ID=54930873

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167032826A KR102244645B1 (ko) 2014-06-27 2015-06-25 인증된 변수의 관리

Country Status (6)

Country Link
US (2) US9785801B2 (ko)
EP (2) EP3161716B1 (ko)
KR (1) KR102244645B1 (ko)
CN (2) CN106462708B (ko)
TW (1) TWI570589B (ko)
WO (1) WO2015200581A1 (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160036826A1 (en) * 2014-07-29 2016-02-04 Mcafee, Inc. Secure content packaging using multiple trusted execution environments
US10044695B1 (en) * 2014-09-02 2018-08-07 Amazon Technologies, Inc. Application instances authenticated by secure measurements
US10061915B1 (en) 2014-09-03 2018-08-28 Amazon Technologies, Inc. Posture assessment in a secure execution environment
US10079681B1 (en) 2014-09-03 2018-09-18 Amazon Technologies, Inc. Securing service layer on third party hardware
US9491111B1 (en) * 2014-09-03 2016-11-08 Amazon Technologies, Inc. Securing service control on third party hardware
EP3234852B1 (en) * 2014-12-19 2020-01-15 Private Machines Inc. Systems and methods for using extended hardware security modules
CN107292176B (zh) * 2016-04-05 2021-01-15 联想企业解决方案(新加坡)有限公司 用于访问计算设备的可信平台模块的方法和系统
JP2019518642A (ja) * 2016-04-14 2019-07-04 ロンバス システムズ グループ, インコーポレイテッドRhombus Systems Group, Inc. 無人航空機の完全性を検証するためのシステム
US10592670B2 (en) * 2016-06-28 2020-03-17 Intel Corporation Technologies for provisioning and managing secure launch enclave with platform firmware
US10042693B2 (en) * 2016-07-12 2018-08-07 Infineon Technologies Ag Diverse integrated processing using processors and diverse firmware
US10148444B2 (en) * 2016-08-04 2018-12-04 Dell Products L.P. Systems and methods for storing administrator secrets in management controller-owned cryptoprocessor
WO2018075057A1 (en) * 2016-10-21 2018-04-26 Hewlett-Packard Development Company, L.P. Bios security
KR102130999B1 (ko) 2016-11-04 2020-07-09 주식회사 케이티 무선 통신에서 멀티 빔 기반 스케줄링 요청을 수행하는 방법 및 장치
US10831897B2 (en) 2017-07-14 2020-11-10 Dell Products, L.P. Selective enforcement of secure boot database entries in an information handling system
US10754955B2 (en) 2017-08-04 2020-08-25 Dell Products, L.P. Authenticating a boot path update
WO2019032095A1 (en) * 2017-08-08 2019-02-14 Hewlett-Packard Development Company L.P. BASIC INPUT / OUTPUT SYSTEM UPDATES
AU2018329224B2 (en) 2017-09-06 2023-03-16 Absolute Software Corporation Secure firmware interface
US11507668B2 (en) * 2017-09-19 2022-11-22 Hewlett-Packard Development Company, L.P. Cryptographic key security
US11475107B2 (en) * 2018-03-12 2022-10-18 Hewlett-Packard Development Company, L.P. Hardware security
WO2019219181A1 (en) * 2018-05-16 2019-11-21 Telefonaktiebolaget Lm Ericsson (Publ) Enclave population
US10802834B2 (en) 2018-06-11 2020-10-13 Google Llc Enabling multiple secure boot paths on a hardware platform
US11012241B2 (en) 2018-09-10 2021-05-18 Dell Products L.P. Information handling system entitlement validation
CN109683972B (zh) * 2018-12-25 2021-07-16 联想(北京)有限公司 信息控制方法及装置
FR3091600B1 (fr) * 2019-01-08 2021-01-08 St Microelectronics Rousset Elément sécurisé à fonctions personnalisables et procédé de gestion correspondant
CN109922056B (zh) 2019-02-26 2021-09-10 创新先进技术有限公司 数据安全处理方法及其终端、服务器
US10970100B2 (en) * 2019-03-08 2021-04-06 International Business Machines Corporation Starting a secure guest using an initial program load mechanism
US11171786B1 (en) 2019-03-21 2021-11-09 Cisco Technology, Inc. Chained trusted platform modules (TPMs) as a secure bus for pre-placement of device capabilities
CN111901105B (zh) * 2020-07-20 2022-11-01 上海龙旗科技股份有限公司 一种基于UEFI架构EDK2支持Openssl算法的方法与设备
WO2022019910A1 (en) * 2020-07-23 2022-01-27 Hewlett-Packard Development Company, L.P. Read protection for uefi variables
WO2022093254A1 (en) * 2020-10-30 2022-05-05 Hewlett-Packard Development Company, L.P. Hashed function point identifiers for data processing security
KR20220091955A (ko) * 2020-12-24 2022-07-01 에스케이하이닉스 주식회사 메모리 시스템 폐기 방법 및 그 메모리 시스템
US20230021213A1 (en) * 2021-07-19 2023-01-19 Dell Products L.P. Firmware secure boot customization extensions

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090006859A1 (en) 2007-06-28 2009-01-01 Zimmer Vincent J System and method for out-of-band assisted biometric secure boot
US20090327741A1 (en) 2008-06-30 2009-12-31 Zimmer Vincent J System and method to secure boot uefi firmware and uefi-aware operating systems on a mobile internet device (mid)
US20120167205A1 (en) 2010-12-22 2012-06-28 Ghetie Sergiu D Runtime platform firmware verification
US20130067210A1 (en) 2010-03-10 2013-03-14 Amy Christine Nelson System and method for recovering from an interrupted encryption and decryption operation performed on a volume
US20140040605A1 (en) 2012-08-01 2014-02-06 William T. Futral Methods and apparatus for performing secure bios upgrade

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2069090A (en) * 1935-02-11 1937-01-26 Paul E Hawkinson Tire retread and process of producing and applying the same
US6339824B1 (en) * 1997-06-30 2002-01-15 International Business Machines Corporation Method and apparatus for providing public key security control for a cryptographic processor
US6871278B1 (en) * 2000-07-06 2005-03-22 Lasercard Corporation Secure transactions with passive storage media
US6792505B2 (en) * 2001-04-16 2004-09-14 International Business Machines Corporation System apparatus and method for storage device controller-based message passing having effective data channel bandwidth and controller cache memory increase
US6848046B2 (en) 2001-05-11 2005-01-25 Intel Corporation SMM loader and execution mechanism for component software for multiple architectures
US20040078483A1 (en) * 2002-10-16 2004-04-22 Raymond Simila System and method for implementing virtual loopbacks in ethernet switching elements
US7974416B2 (en) * 2002-11-27 2011-07-05 Intel Corporation Providing a secure execution mode in a pre-boot environment
US8613387B1 (en) * 2002-12-26 2013-12-24 Diebold Self-Service Systems, Division Of Diebold, Incorporated Banking system controlled reponsive to data bearing records
US20050195975A1 (en) * 2003-01-21 2005-09-08 Kevin Kawakita Digital media distribution cryptography using media ticket smart cards
US7320052B2 (en) * 2003-02-10 2008-01-15 Intel Corporation Methods and apparatus for providing seamless file system encryption and redundant array of independent disks from a pre-boot environment into a firmware interface aware operating system
CN1553315A (zh) * 2003-06-06 2004-12-08 微软公司 在安全引导装载程序中使用散列技术
US20050039016A1 (en) * 2003-08-12 2005-02-17 Selim Aissi Method for using trusted, hardware-based identity credentials in runtime package signature to secure mobile communications and high-value transaction execution
US7263608B2 (en) * 2003-12-12 2007-08-28 Lenovo (Singapore) Pte. Ltd. System and method for providing endorsement certificate
US7181293B2 (en) * 2004-12-27 2007-02-20 Intel Corporation System and method for enabling home power management
US8090919B2 (en) * 2007-12-31 2012-01-03 Intel Corporation System and method for high performance secure access to a trusted platform module on a hardware virtualization platform
US8209542B2 (en) * 2006-12-29 2012-06-26 Intel Corporation Methods and apparatus for authenticating components of processing systems
KR100807939B1 (ko) * 2007-03-08 2008-02-28 박경진 안구내렌즈 조립체
US8984265B2 (en) * 2007-03-30 2015-03-17 Intel Corporation Server active management technology (AMT) assisted secure boot
US20090204823A1 (en) * 2008-02-07 2009-08-13 Analog Devices, Inc. Method and apparatus for controlling system access during protected modes of operation
WO2009123631A1 (en) * 2008-04-02 2009-10-08 Hewlett-Packard Development Company, L.P. Binding a cryptographic module to a platform
US7984286B2 (en) 2008-06-25 2011-07-19 Intel Corporation Apparatus and method for secure boot environment
US8103909B2 (en) * 2008-09-15 2012-01-24 Juniper Networks, Inc. Automatic hardware-based recovery of a compromised computer
US20100082960A1 (en) * 2008-09-30 2010-04-01 Steve Grobman Protected network boot of operating system
US8694761B2 (en) * 2008-12-31 2014-04-08 Vincent Zimmer System and method to secure boot both UEFI and legacy option ROM's with common policy engine
US9077654B2 (en) * 2009-10-30 2015-07-07 Iii Holdings 2, Llc System and method for data center security enhancements leveraging managed server SOCs
US8510569B2 (en) * 2009-12-16 2013-08-13 Intel Corporation Providing integrity verification and attestation in a hidden execution environment
GB201000288D0 (en) * 2010-01-11 2010-02-24 Scentrics Information Security System and method of enforcing a computer policy
US8375220B2 (en) * 2010-04-02 2013-02-12 Intel Corporation Methods and systems for secure remote wake, boot, and login to a computer from a mobile device
US9721101B2 (en) * 2013-06-24 2017-08-01 Red Hat, Inc. System wide root of trust chaining via signed applications
US8607040B2 (en) * 2010-11-16 2013-12-10 Intel Corporation Method of provisioning firmware in an operating system (OS) absent services environment
US8832452B2 (en) * 2010-12-22 2014-09-09 Intel Corporation System and method for implementing a trusted dynamic launch and trusted platform module (TPM) using secure enclaves
CN102063593B (zh) * 2011-01-07 2013-01-09 北京工业大学 主动控制功能的可信设备及其认证方法
US8918907B2 (en) * 2011-04-13 2014-12-23 Phoenix Technologies Ltd. Approaches for firmware to trust an application
US9164924B2 (en) * 2011-09-13 2015-10-20 Facebook, Inc. Software cryptoprocessor
CN102801525A (zh) 2012-06-29 2012-11-28 鸿富锦精密工业(深圳)有限公司 电子设备、签名认证系统及其签名认证方法
US20140010365A1 (en) * 2012-07-06 2014-01-09 Vincent Von Bokern Replaceable encryption key provisioning
US9384352B2 (en) * 2013-10-02 2016-07-05 Intel Corporation Trusted boot and runtime operation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090006859A1 (en) 2007-06-28 2009-01-01 Zimmer Vincent J System and method for out-of-band assisted biometric secure boot
US20090327741A1 (en) 2008-06-30 2009-12-31 Zimmer Vincent J System and method to secure boot uefi firmware and uefi-aware operating systems on a mobile internet device (mid)
US20130067210A1 (en) 2010-03-10 2013-03-14 Amy Christine Nelson System and method for recovering from an interrupted encryption and decryption operation performed on a volume
US20120167205A1 (en) 2010-12-22 2012-06-28 Ghetie Sergiu D Runtime platform firmware verification
US20140040605A1 (en) 2012-08-01 2014-02-06 William T. Futral Methods and apparatus for performing secure bios upgrade

Also Published As

Publication number Publication date
KR20160146955A (ko) 2016-12-21
EP3161716A1 (en) 2017-05-03
CN106462708B (zh) 2019-05-14
US9785801B2 (en) 2017-10-10
CN109918919B (zh) 2023-06-20
CN109918919A (zh) 2019-06-21
US20180025183A1 (en) 2018-01-25
US20150379306A1 (en) 2015-12-31
EP3161716A4 (en) 2018-03-21
TW201617957A (zh) 2016-05-16
US10831934B2 (en) 2020-11-10
EP4064089A1 (en) 2022-09-28
CN106462708A (zh) 2017-02-22
TWI570589B (zh) 2017-02-11
WO2015200581A1 (en) 2015-12-30
EP3161716B1 (en) 2023-08-30

Similar Documents

Publication Publication Date Title
KR102244645B1 (ko) 인증된 변수의 관리
US10749683B2 (en) Technologies for end-to-end biometric-based authentication and platform locality assertion
US11520611B2 (en) Secure public cloud using extended paging and memory integrity
CN111638943B (zh) 具有受保护的访客机验证主机控制的装置和方法
CN107111715B (zh) 将可信执行环境用于代码和数据的安全性
US8220029B2 (en) Method and system for enforcing trusted computing policies in a hypervisor security module architecture
US10635821B2 (en) Method and apparatus for launching a device
US10726120B2 (en) System, apparatus and method for providing locality assertion between a security processor and an enclave
CN113886809A (zh) 计算设备
US9384352B2 (en) Trusted boot and runtime operation
US10776524B2 (en) Secure communication channel for system management mode
US20180082057A1 (en) Access control
US9183391B2 (en) Managing device driver cross ring accesses
US11575672B2 (en) Secure accelerator device pairing for trusted accelerator-to-accelerator communication
US20200213115A1 (en) Trust domain isolation management in secured execution environments
US20080104711A1 (en) System and method for an isolated process to control address translation
EP3338214B1 (en) Secure computation environment
Ushakov et al. Trusted hart for mobile RISC-V security
US11960737B2 (en) Self-deploying encrypted hard disk, deployment method thereof, self-deploying encrypted hard disk system and boot method thereof
US20230098288A1 (en) Apparatus and method for role-based register protection for tdx-io
Gazidedja HW-SW architectures for security and data protection at the edge

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