KR102489790B1 - 서명키를 사용한 신뢰 실행 환경의 어드레싱 기법 - Google Patents

서명키를 사용한 신뢰 실행 환경의 어드레싱 기법 Download PDF

Info

Publication number
KR102489790B1
KR102489790B1 KR1020197022013A KR20197022013A KR102489790B1 KR 102489790 B1 KR102489790 B1 KR 102489790B1 KR 1020197022013 A KR1020197022013 A KR 1020197022013A KR 20197022013 A KR20197022013 A KR 20197022013A KR 102489790 B1 KR102489790 B1 KR 102489790B1
Authority
KR
South Korea
Prior art keywords
trustlet
key
tree
protected data
requestor
Prior art date
Application number
KR1020197022013A
Other languages
English (en)
Other versions
KR20190108580A (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 KR20190108580A publication Critical patent/KR20190108580A/ko
Application granted granted Critical
Publication of KR102489790B1 publication Critical patent/KR102489790B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • 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/2105Dual mode as a secondary aspect

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computing Systems (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

요청자와 연관된, 보안 커널의 상부에서 실행중인 트러스트릿(a trustlet)을 포함해서, 중첩(nested) 신뢰 실행 환경(TrEE; trusted execution environment)에 보호 데이터를 전달하기 위한 방법, 시스템, 및 디바이스가 본 명세서에서 설명된다. 중첩 TrEE는 보안 커널 상부에서 실행중인 트러스트릿을 포함할 수 있다. 일 측면에서, 타겟화 프로토콜 헤드, 또는 요청자와 키 관리 시스템 또는 보호 데이터의 다른 저장부 사이의 다른 중재자는 잠재적 비신뢰 요청자로부터 보호 데이터에 대한 요청 및 보안 커널의 증명문(an attestation statement) 및 키 인증문을 수신할 수 있다. 키 인증문은 트러스트릿 공개 암호화키 및 트러스트릿 ID를 바인딩할 수 있다. 타겟화 프로토콜 헤드는 보호 데이터를 검색하고, 보호 데이터를 트러스트릿 공개 암호화키로 암호화할 수 있다. 타겟화 프로토콜 헤드는 이어서 암호화된 보호 데이터를 요청자에게 전송할 수 있다.

Description

서명키를 사용한 신뢰 실행 환경의 어드레싱 기법
본 발명은 일반적으로 컴퓨팅 디바이스에서의 신뢰 및/또는 격리 실행 환경에 관한 것으로, 보다 구체적으로는 신뢰 실행 환경으로의 하나 이상의 비밀 또는 키의 안전한 전송에 관한 것이다.
키 관리 시스템(KMS; key management system)은 비밀 저장소이다. 비밀은 일반적으로 공개 ID, 보호된 값 및 누가 그 값을 획득할 수 있는지를 제어하는 정책을 갖는다. 일부 경우에, 비밀은 또한 만료일 및 기타 메타 데이터 등을 가질 수 있다. 통상의 사용 사례에서, 요청자는 KMS에 대해 인증하고, 보안 채널을 수립하고, 비밀 ID를 제공함으로써 비밀 값을 요청하고, 그것이 평문 비밀 값으로 되돌아올 것으로 KMS에게 기대한다. 이 값은 요청자와 KMS 간의 보안 채널에 의한 불법 도청 및 조작으로부터 보호된다.
신뢰 실행 환경(TrEE; Trusted Execution Environment)은, 본 명세서에서 사용되는 바와 같이, 가상 보안 모드(VSM; virtual secure mode) 트러스트릿(trustlet), SGX 애플리케이션, ARM TrustZone 애플리케이션 또는 일부 다른 유사한 수단 중 임의의 하나를 포함할 수 있다. TrEE에는 일반적으로 공통으로 갖는 몇 가지 고유한 속성이 있다. TrEE는 일반적으로 완전한 암호화 스택(a full crypto stack)을 갖는다(즉, 보안 랜덤 번호 생성부터 비밀 키를 사용한 해싱, 암호화 및 서명 라이브러리의 완전한 메뉴에 이르기까지 전체 스펙트럼에 걸쳐서 매우 다양한 암호학적 원리를 가정할 수 있음). 또한, TrEE는 일반적으로, 신뢰할 수 없는 "외부 세계"에 의해 요청이 개시되는 요청 기반 아키텍처로 통상 제한되는, 소수의 I/O 시설 또는 제한된 I/O 시설을 갖거나 그와 연관될 것이다. 예컨대, VSM 트러스트릿은 미인증 원격 프로시저 호출(RPC; Remote Procedure Calls)을 사용할 수 있다. 또한, TrEE는 TrEE 외부에서 사용할 수 없는 데이터 또는 핵심 자료로의 액세스를 가질 수 있다. 이는 무엇보다도 TrEE로 하여금 비신뢰 I/O를 사용하여 데이터를 저장한 후에 그것을 다시 판독하도록 하게 하여, 변조 방지성(tamper-resistance) 및 기밀 상태를 보장한다. 또한, TrEE는 일반적으로 증명 가능한 코드, 구성 및 핵심 자료를 갖거나 그와 연관될 것이다. 특히, 증명 가능한 핵심 자료는 TrEE로 하여금 제3자로부터 암호화된 메시지를 수신하고, TrEE에서 오는 것처럼 메시지를 제3자에게 서명할 수 있게 한다.
다른 애플리케이션들과 마찬가지로, TrEE을 갖는 KMS의 사용은 보안성 제약이 발생할 수 있다. 따라서, TrEE를 갖는 KMS로부터 소싱되거나 TrEE에서의 KMS로부터 소싱된 키를 이용하여 보안성을 향상시킬 수 있다.
본 발명의 예는, 제한 없이, 방법, 시스템, 및 다양한 디바이스를 포함한다. 일 측면에서, 비신뢰 요청자와 연관된, 중첩(nested) 신뢰 실행 환경(TrEE)에 보호 데이터를 전송하는 방법은, 타겟화 프로토콜 헤드에 의해, 또는 요청자와 키 관리 시스템 또는 보호 데이터의 다른 저장소와의 사이의 다른 중재자에 의해, 적어도 부분적으로 수행될 수 있다. 중첩 TrEE는 보안 커널의 상부에서 실행되는 트러스트릿을 포함할 수 있다. 타겟화 프로토콜 헤드는 잠재적 비신뢰 요청자로부터 보호 데이터에 대한 요청, 보안 커널의 증명문(an attestation statement) 및 키 인증문(key certification statement)을 수신할 수 있다. 키 인증문은 트러스트릿 공개 암호화키와 트러스트릿 ID를 바인딩할 수 있다. 타겟화 프로토콜 헤드는 보호 데이터를 검색하고, 트러스트릿 공개 암호화키로 보호 데이터를 암호화할 수 있다. 타겟화 프로토콜 헤드는 암호화된 보호 데이터를 요청자에게 전송할 수 있다.
상기 시스템 및 방법의 다른 특징을 아래에서 설명한다. 특징, 기능, 및 이점은 다양한 예에서 독립적으로 달성될 수 있거나, 또 다른 예에서 결합될 수 있으며, 그 추가적인 세부사항은 이하의 설명 및 도면을 참조하여 알 수 있다.
본 발명의 실시예는 첨부 도면을 참조하여 이후 보다 완전하게 설명될 것이다.
도 1a, 1b 및 1c는 요청자와 키 관리 시스템 사이에서 키를 교환하기 위한 시스템 및 프로세스의 3가지 예를 나타낸다.
도 2는 격리 영역 또는 신뢰 실행 환경(TrEE)을 구현하는 제어 프로그램 모니터의 예시적인 도면을 나타낸다.
도 3은 중재 타겟화 프로토콜 헤드를 이용하여 TrEE에 보호 데이터를 전송하기 위한 예시적인 프로세스를 나타낸다.
도 4a 및 도 4b는 중재 타겟화 프로토콜 헤드를 이용하여 TrEE에 보호 데이터를 전송하는 또 다른 예시적인 프로세스를 나타낸다.
도 5a 및 도 5b는 중재 타겟화 프로토콜 헤드를 이용하여 중첩 TrEE에 보호 데이터를 전달하기 위한 예시적인 프로세스를 나타낸다.
도 6은 설명된 프로세스들 중 하나 이상이 구현될 수 있는 예시적인 시스템을 도시한다.
도 7은 전송키 및/또는 보호 데이터를 TrEE에 안전하게 전달하는 데 사용되는 데이터 구조의 예를 나타낸다.
도 8은 외부 TrEE의 암호화키를 기반으로 하는 중재 타겟화 프로토콜 헤드를 이용하여 중첩 TrEE에 보호 데이터를 전달하기 위한 또 다른 예시적인 프로세스를 나타낸다.
도 9는 내부 TrEE의 암호화키를 기반으로 하는 중재 타겟화 프로토콜 헤드를 이용하여 중첩 TrEE에 보호 데이터를 전달하기 위한 또 다른 예시적인 프로세스를 나타낸다.
도 10은 본 명세서에서 설명된 기술이 구현될 수 있는 예시적인 범용 컴퓨팅 환경을 도시한다.
시스템 및 기술은 하나 이상의 물리적 또는 가상의 컴퓨팅 디바이스와 같은 신뢰 실행 환경(TrEE)에 적어도 하나의 키(예를 들면, 서명키 또는 암호화키) 또는 보호 데이터/비밀을 안전하게 전달하기 위해 본 명세서에서 설명된다. 일 측면에서, 중재는 보호 데이터를 소유한 키 관리 시스템 또는 개체와 키 요청자 사이에서 구현될 수 있다. 중재는 본 명세서에서 타겟화 프로토콜 헤드로서 지칭될 수 있다. 키 요청자는 VSM 트러스트릿, SGX 애플리케이션, ARM TrustZone 애플리케이션, 또는 몇몇의 다른 유사한 수단 중 하나 이상을 포함할 수 있는 TrEE 또는 보안 실행 환경과 연관될 수 있다. TrEE는 요청자로부터 격리될 수 있다. 요청자는 타겟화 프로토콜 헤드로부터 TrEE 내에서 실행중인 특정 트러스트릿 또는 TrEE로 하나 이상의 비밀을 전달하도록 요청할 수 있다. 타겟화 프로토콜 헤드는, 그 요청에 응답하여, 비밀을 보유한 키 관리 시스템 또는 다른 개체와 통신하여 TrEE에 전달하기 위한 하나 이상의 비밀을 획득할 수 있다. 타겟화 프로토콜 헤드는 보호 데이터를 TrEE에서 구체적으로 타겟화할 수 있어서, 요청자 또는 공격자가 보호 데이터에 액세스할 수 없다.
일부 측면에서, 타겟화 프로토콜 헤드의 구현은 요청자와 키 관리 시스템 사이의 보안 채널에 대한 요구를 무효화할 수 있다. 타겟화 프로토콜 헤드는, 요청자가 비밀/데이터에 액세스할 수 없도록, 본 명세서에서 설명된 TrEE 타겟화 기술을 사용하여, TrEE 또는 중첩 TrEE(예를 들면, 보안 커널의 상부에서 실행중인 트러스트릿)에 하나 이상의 비밀 또는 데이터를 전송하는 것을 가능하게 할 수도 있다. 일부 경우에, 요청자가 비신뢰되거나 잠재적을 비신뢰될 수 있어서, 보호 데이터의 소유자는 다양한 이유 때문에 요청자에 의해 액세스 불가한 보호 데이터를 유지하길 원할 수 있다. 일부 경우에, 요청자가 신뢰할 수 있음을 확립하는 것이나 요청자가 여전히 신뢰할 수 있음을 확실히 하는 것은 어렵거나 번거로울 수 있다. 요청자가 신뢰될 수 없다고 가정하여 요청자로부터 TrEE를 격리함으로써, 이러한 많은 우려 사항들은 무효화될 수 있다. 이러한 격리는 상이한 유형의 공격에 대한 보안성을 크게 개선할 수 있으며, 아래에서 더 자세히 설명되는 바와 같이, 다른 혜택 및 이점을 제공할 수 있다.
도 1a는 요청자와 키 관리 시스템 사이에서 키를 교환하는 예시적인 시스템 및 프로세스(100a)를 도시한다. 도시된 바와 같이, 클라이언트 디바이스 또는 클라이언트측(110)과 연관된 요청자 또는 요청 디바이스(120)는 서버 또는 서버측(105)과 연관된 몇몇의 요구되는 비밀(들)의 소유자 또는 키 관리 시스템(115)과 통신할 수 있다. 요청자(120)는 예를 들어 소정의 보호 데이터에 액세스하는 것, 하나 이상의 보호 프로세스를 실행하는 것 등을 위해 키 관리 시스템(115)으로부터 하나 이상의 비밀 또는 보호 데이터를 요청할 수 있다. 요청자(120) 및 키 관리 시스템(KMS)(115)은 당해 기술 분야에 알려진 바와 같이 요구되는 비밀/데이터를 교환하기 위해 공개키-개인키 보안 시스템 또는 다른 키 프로토콜을 이용할 수 있다.
요청자(120)는, 동작 125에서, KMS(115)를 이용해서 먼저 인증하고 당해 기술 분야의 임의의 공지된 기술을 통해 보안 통신 채널을 수립할 수 있다. 동작 125는 공개키 시스템 등을 이용하는 것을 포함할 수 있다. 다음으로, 동작 125를 통해 수립된 보안 채널을 이용하여, 요청자(120)는 동작 130에서 하나 이상의 비밀/보호 데이터에 대한 요청을 KMS(115)로 전송할 수 있다. 요청의 검증시에, KMS(115)는 동작 135에서 보안 통신 채널을 통해 요청자(120)에게 다시 비밀 또는 요청된 데이터를 송신할 수 있다. 당해 기술 분야에서 표준적인 것과 같이, 비밀/요청된 데이터는, 보안 채널 위에서 임의의 추가적인 보호 없이, 135에서 보안 채널을 통해 송신될 수 있다. 결과적으로, 동작 135에서 송신된 비밀/데이터는 요청 디바이스(120)에 노출될 수 있다.
도 1b는 신뢰 실행 환경(TrEE)(140), 엔클레이브(enclave), 또는 요청자(120)와 연관된 격리 실행 환경을 나타내는 데 사용되는 다른 용어를 대표하여, 요청자(120)와 KMS(115) 사이에서 하나 이상의 비밀 또는 보호 데이터를 보다 안전하게 교환하기 위한 예시적인 시스템 및 프로세스(100b)를 도시한다. TrEE(140)는 요청자(120)로부터 격리될 수 있어서, TrEE(140)에 포함된 코드 및/또는 데이터가 요청자(120)에 의해 액세스 가능(예를 들면, 판독 가능 및/또는 기록 가능)하지 않을 수 있다. 도 2는 컴퓨팅 디바이스(205)가 로직(210)(예를 들면, 코드), 및 데이터와 같은 상태 정보(220)를 포함할 수 있는 신뢰 실행 환경의 예(200)를 나타낸다. 상태 정보(220)는 허가되지 않은 액세스로부터 안전할 수 있는 것과 같이 격리 영역(215)에 저장되거나 위치될 수 있다. 일부 경우에, 격리 영역(215) 내의 데이터(220)는 격리 영역(215)과 연관된 로직(210) 이외의 임의의 개체에 의해 직접 판독되거나 기록될 수 없다. 격리된 로직(210)은 어떤 데이터(220)의 유형 또는 일부에 대해 어떤 유형의 액세스를 허용할지를 결정한다. 일례에서, 로직(210)은 데이터(220)와 연관된 값을 증분 및 판독하는 것을 허용할 수 있지만, 이와 달리 데이터(220)를 수정하는 것은 허용하지 않을 수 있다. 다른 예에서, 로직(210)은 키 자체의 값에 대한 액세스를 전혀 승인하지 않고서 키를 사용한 암호화 연산을 허용할 수 있다. 도시된 예에서, 로직 또는 코드(210)는 CPM(205)의 일반적인 영역 또는 액세스 가능한 영역에 있을 수 있지만, 일부 예들에서는, 상태 정보(220)와 동일하거나 상이한 격리 영역 내에 로직(210)이 위치될 수도 있음을 이해해야 한다.
시스템(100b)으로 돌아가서, 타겟화 프로토콜 헤드(TPH)(150)는 요청자(120)/TrEE(140)와 KMS(115) 사이의 중재자 역할을 하기 위해 서버측(105)에서 구현될 수 있다. 프로토콜 헤드는, 통상 특정 프로토콜을 기본적으로 사용하지 않는 시스템을 향하고 있는, 프로토콜 핸들러의 소프트웨어 구현을 참조할 수 있다. 타겟화는 실행 환경의 암호학적 타겟화를 참조할 수 있다. 종합해 보면, 용어는 TrEE에서 응답을 타겟화하는 비밀들을 검색하기 위한 프로토콜을 구현하는 소프트웨어 및/또는 하드웨어를 나타낼 수 있다. 일부 측면에서, 타겟화 프로토콜 헤드(150)는 예를 들어 상이한 하드웨어, 소프트웨어 상에서 실행되거나 및/또는 KMS(115)와 별개로 실행될 수 있는 가상 또는 클라우드 리소스로서 구현될 수 있다. 일부 측면에서, 데이터 센터와 같은 개체는 예를 들어 서비스로서 타겟화 프로토콜 헤드(150)를 호스팅 및/또는 제공할 수 있다. 타겟화 프로토콜 헤드(150)는 2가지 주요 기능을 수행할 수 있다: 1) KMS(115)와 통신하고/외부 개체로부터 비밀 또는 보호 데이터를 획득하는 것, 및 2) 요청자(120)의 TrEE(140)에 대해 응답을 타겟화하는 것. 타겟화 프로토콜 헤드(150)의 사용 결과로서, 요청자(120)는 KMS(115)를 직접 인증할 필요가 없다. KMS(115)는 요청자(120)가 아닌 타겟화 프로토콜 헤드(150)에 비밀을 넘겨준다. 타겟화 프로토콜 헤드(150)의 기능은 요청자(120)의 TrEE(140)에 대해 응답을 타겟화하는 것이므로, 요청자(120)가 비밀/보호 데이터의 평문을 획득할 수 없는 것을 보장한다. 타겟화 프로토콜 헤드(150)는 요청자(120)를 대신하여 KMS(115)를 인증할 수 있지만, 요청자(120)의 신원을 사용하거나 사용하지 않고서 수행할 수 있다. 일부 경우에, 타겟화 프로토콜 헤드(150)는 요청자(120)의 TrEE(140)로 되돌아올 비밀이 "안전한 손(safe hands)"에 있을 것임을 확신할 필요가 있을 수 있다. 이 예에서, 요청자(120)는 TrEE(140)의 상태에 대해서 타겟화 프로토콜 헤드(150)에 증명 가능한 정보를 제공할 수 있으며, 이 정보는 응답을 암호화할 수 있는 TrEE(140)와 연관된 증명 가능한 핵심 자료를 포함할 수 있다.
일부 경우에, 하나 이상의 트러스트릿에 의해 제공되는 것과 같이 다수의 상이한 프로세스는 보안 커널 내에서 동시에 동작할 수 있으며, 여기서 각각의 트러스트릿 및 보안 커널은 각각 TrEE(140)로 간주된다(예를 들면, 이는 중첩 TrEE의 예임). 이 시나리오에서, 각각의 상이한 트러스트릿은 보안 커널 내에서 개개의 트러스트릿을 식별하는 데 사용될 수 있는 세션 ID, 트러스트릿 유형, 및/또는 다른 ID와 연관될 수 있다(예를 들면, 모두 TrEE(140)로서 표현됨). 타겟화 프로토콜 헤드(150)로부터의 응답은, 아래에서 더 상세히 설명되는 바와 같이, 요청에서 식별된 TrEE(140) 내의 특정 트러스트릿에서 폭 좁게 타겟화될 수 있다.
TrEE(140) 타겟화의 경우에, 요청자(120) 스스로가 응답을 갖고서 신뢰되지 않기 때문에, 요청자(120)와 타겟화 프로토콜 헤드(150) 사이의 보안 채널에 대한 본질적인 필요성은 없다. 그러나, 요청자(120)와 타겟화 프로토콜 헤드(150) 사이의 보안 채널이 예를 들어 요청 자체(요청자가 원하는 비밀)에 대한 액세스를 보호하기 위해 인증 동작(160)을 통해 추가될 수 있고, 이는 바람직하지 않은 정보 공개로 이어질 수 있음을 이해해야 한다. 동작 160에서의 인증 후 또는 이를 대신하여, 요청자(120)는, 동작 155에서, 예를 들어 TrEE(140)에 전달할 하나 이상의 비밀들 또는 비밀 또는 보호 데이터에 대한 요청을 TrEE(140)을 대신하여 타겟화 프로토콜 헤드(150)에 전송할 수 있다. 일부 측면에서, 요청은 TrEE(140)와 연관될 수 있거나 TrEE(140)를 식별할 수 있다. 타겟화 프로토콜 헤드(150)는 TrEE(140)가 신뢰할 만한지를 결정할 수 있다. 일 측면에서, 요청자(120)의 인증은 클린룸 프로비저닝(clean room provisioning)의 유형에 의존할 수 있다. 다른 측면에서, 인증은 증명에 의존할 수 있다.
클린룸 프로비저닝은 요청자(120) 디바이스가 예를 들어 새로운 것이며 또한 악성 소프트웨어로부터 자유롭다고 합리적으로 가정된 경우에 사용될 수 있다. 클린룸 프로비저닝을 사용하여 요청자와 연관된 TrEE에 보호 데이터를 전달하기 위한 예시적인 프로세스는 도 3을 참조하여 아래에서 보다 상세히 설명될 것이다. 증명(예를 들면, 증명 서비스)을 사용하여 요청자와 연관된 TrEE에 보호 데이터를 전달하기 위한 예시적인 프로세스는 도 4을 참조하여 아래에서 보다 상세히 설명될 것이다.
어느 경우든, TPH(150)가 요청자(120)를 인증하였고 및/또는 TrEE(140)의 신뢰도를 확립하였으면, TPH(150)는 동작 165에서 KMS(115)와의 보안 통신 채널을 인증 및 수립할 수 있다. 일부 측면에서, KMS(115)는 라이센스, 허가, 암호 등과 같은 하나 이상의 비밀 또는 보호 데이터를 보유하고 있는 임의의 개체를 포함할 수 있거나 그 임의의 개체와 연관될 수 있다. KMS(115)와 보안 통신 채널을 수립하면, TPH(150)는 동작 170에서 보호 데이터에 대한 요청을 전송할 수 있다. KMS(115)는 동작 175에서 요청된 비밀을 되돌려줄 수 있다. TPH(150)는 동작 180에서 TrEE(140)의 비밀(들) 또는 보호 데이터를 타겟화하고, 하나 이상의 비밀을 전송할 수 있다.
일부 측면에서, 동작 180에서 TrEE(140)로 보호 데이터를 전달하는 것은 다음의 데이터 구조들 중 적어도 하나를 이용할 수 있다: TrEE 아이덴티티 또는 증명 프로세스 또는 증명 로그를 중심으로 구축될 수 있는 암호화 아이덴티티 키, 또는 중첩 TrEE 예(예를 들면, 보안 커널의 상부에서 실행중인 트러스트릿)에서, 아래에서 보다 상세히 설명되는 바와 같이, 증명 프로세스를 중심으로 구축될 수도 있는 서명 아이덴티티 키.
도 1c는, 신뢰 실행 환경(TrEE)(140)을 대신하여, 요청자(120)와 KMS(115) 사이에서 하나 이상의 비밀 또는 보호 데이터를 안전하게 교환하기 위한 또 다른 예시적인 시스템 및 프로세스(100c)를 나타낸다. 시스템(100c)은 상기한 시스템(100b)의 특정 예일 수 있다. 시스템(100c)에서, 타겟화 프로토콜 헤드(150)는 호스트 가디언 서비스(HGS; Host Guardian Service)(150a)일 수 있다. 시스템(100c)에서, HGS(150a)는 예를 들어 TrEE(140)를 인스턴스화하거나 다른 경우에는 제어할 수 있는 클라우드 호스트(185) 또는 다른 개체로부터 키 보호기(190)를 수신할 수 있다. 시스템(100c)에서, 요청자(120)는 예를 들어 클라우드 호스트(185)에 의해 제공된 가상 머신과 연관될 수 있다. KP(190)는 "연속적인 소유자 액세스를 갖는 암호화된 가상 머신의 보안 전송(Secure Transport of Encrypted Virtual Machines with Continuous Owner Access)"이라는 제목으로 2014년 9월 9일에 출원된 관련 미국 특허 출원 제14/481,399호에서 설명된 키 보호기에 대한 하나 이상의 측면을 포함할 수 있다. KP(190)는 TrEE(140)에 의해 사용 가능한 하나 이상의 비밀, 예를 들어 전송키를 포함할 수 있다. KP(190)는 본질적으로 전송키를 랩핑할 수 있어서, 전송키에 액세스하도록 허가된 가디언 세트에 의해서만 액세스 가능하다. 동작 165에서 KMS(115)와 보안 통신 채널을 인증 및 수립한 후에, KP(190)의 콘텐츠를 판독하고 전송키를 검색하기 위해, HGS(150a)가 동작 170a에서 KMS(115)로부터 복호화키를 요청할 수 있도록 KP(190)가 암호화될 수 있다. KMS(115)는, 대응하여, 동작 175a에서 HGS에 복호화키를 전송할 수 있다. 그 후에, HGS(150a)는 복호화키를 사용하여 KP(190)를 복호화하고, 하나 이상의 비밀(예를 들면, 전송키)을 검색하여 TrEE(140)에 전송할 수 있다. 그 후에, HGS(150a)는 아래에서 보다 상세히 설명되는 하나 이상의 어드레싱 기술을 통해 동작 180에서 TrEE로 비밀 또는 전송키를 보낼 수 있다. 일부 측면에서, TrEE(140)는 KP(190)로부터의 데이터에 기초하여 어드레싱될 수 있다.
일부 경우에 HGS(150a) 및 KMS(115)가 하나의 개체일 수 있어서, 그들 사이에 통신 채널도 수립될 필요가 없고 또한 인증도 필요로 되지 않음을 이해해야 한다.
시스템(100c)에서는, 요청자(120)와 HGS(150a) 사이의 인증이 필요로 되지 않는다. 클라우드 또는 패브릭 호스트(fabric host)(180)가 정상인 한, 패브릭에 있는 서버 중 하나라면, 어떤 패브릭 호스트가 HGS(150a)와 통신하는지는 중요하지 않다(이는 증명을 통해 검증될 수 있음).
도 3은 요청자의 TrEE로 보호 데이터를 전송하기 위한 예시적인 프로세스(300)를 나타내고, 여기서 요청자는 신뢰할 수 있는 것(예를 들면, 악성 소프트웨어로부터 자유로움)으로 가정된다. 본 명세서에서 사용되는 바와 같이, 임의의 도면에서의 박스 또는 동작의 파선은 동작이 선택적이어서 배제될 수 있음을 나타낸다. 프로세스(300)는 TrEE와 연관된 암호화키, 예를 들어 TrEE에 의해 생성된 공개키 개인키 쌍(예를 들면, 비대칭키 쌍)의 공개키 또는 TrEE를 개시하는 요청자의 보안 커널을 이용할 수 있다. 다른 경우에, 암호화키는 대칭일 수 있다. 본 명세서에서 사용되는 바와 같이, 보안 커널은 당해 기술 분야에서 알려진 바와 같이 보다 높은 수준의 보안성과 연관되는 컴퓨팅 디바이스의 임의의 부분을 지칭할 수 있다.
이 시나리오에서, TrEE(140)는 동작 302에서 시작되거나 개시될 수 있으며, 또한 하나 이상의 개인키(예를 들면, 개인 암호화키) 및 대응하는 공개키는 동작 304에서 TrEE(140) 내부에서 생성될 수 있다. 그러면 대응하는 공개키는 동작 306에서 TPH(150)에 등록될 수 있고, 또한 요청자 및/또는 요청 디바이스의 아이덴티티와 연관될 수 있다. 일부 경우에, TrEE(140)의 공개키는 1번만 등록되어야 하므로, 공개키가 등록된 후에 프로세스(300)는 동작 308에서 시작될 수 있다. 다음에, 요청자(120)는 공지된 임의의 인증 기술을 통해 동작 308에서 TPH(150)으로 인증할 수 있다. 그 후에 TPH(150)는, 예를 들어 요청자(120)의 아이덴티티와 연관될 수 있는 TrEE(140)의 등록된 공개키에 기초하여, TrEE(140)로의 응답 전달시에 사용할 공개키를 찾을 수 있다. 이 프로세스는 요청자(120)가 공지된 양호하거나 신뢰할 수 있는 상태에 있을 때에만 안전하게 행해질 수 있기 때문에 "클린룸" 프로비저닝이라고 할 수 있다. 이 예에서, 요청자(120)가 신뢰할만 하기 때문에, 요청자(120)가 THC(TrEE Health Certificate)를 TPH(150)로 전송하는 경우에 인증서 기반 인증이 필요하지 않다. 유비쿼터스 증명 서비스가 없는 경우에, 이는 올바른 TrEE(140)가 TPH(150)에 의해 타겟화되고 있음을 검증하기 위한 실행 가능한 옵션이다.
다음으로, TPH(150)는 동작 312에서 상기한 바와 같이 예를 들어 KMS(115)로부터 TrEE(140)로의 전달을 위해 보호 데이터를 획득할 수 있다. 그 후에, 동작 310을 통해 액세스된 TrEE 공개키를 사용하여, TPH(150)는 획득된 보호 데이터를 포함해서 TrEE(140)로 전송할 메시지를 동작 314에서 구축할 수 있다. TPH(150)는 동작 316에서 메시지를 요청자(120)에게 전송할 수 있다.
메시지의 수신시에, 요청자(120)는 동작 318에서 메시지를 TrEE(140)에게 전달할 수 있다. 요청자(120)가 TrEE의 개인키에 대한 액세스를 갖지 않기 때문에, 요청자(120)는 보호 데이터에 액세스하기 위해 메시지를 복호화할 수 없다. TrEE(140)는 동작 320에서 그 개인키를 사용하여 메시지를 복호화하고 보호 데이터에 액세스할 수 있다.
도 4a는 비신뢰 요청자의 TrEE에 보호 데이터를 전달하기 위한 예시적인 프로세스(400)를 도시한다. 프로세스(400)는, 본 명세서에서 트러스트릿이라고 할 수 있는 중첩 TrEE의 경우에서와 같이, TrEE를 개시하는 요청자의 보안 커널 또는 TrEE에 의해 생성된 공개키 개인키 쌍의 공개키 등의 TrEE와 연관된 암호화키를 이용할 수 있다. 프로세스(400)는 TrEE와 연관된 보안 커널의 상부에서 중첩되거나 실행되는 트러스트릿과 함께, 외부 TrEE로 간주될 수 있는 보안 커널의 서명키를 추가적으로 또는 대안적으로 이용할 수 있어, 아래에서 더 상세히 설명되는 바와 같이, TrEE에 의해 생성된 키 쌍의 공개키를 인증하는 데 사용될 수 있다.
프로세스(400)에 따르면, 동작 402에서의 TrEE의 개시 후에, 요청자(120)는 동작 406에서 증명 서비스로부터 증명 보고 또는 진술을 요청할 수 있다. 도 4b는 증명 서비스(424)로부터 증명문 또는 보고를 획득하기 위한 예시적인 프로세스를 도시한다. 도 4b의 예에서, 요청자(120)는 동작 426에서 TrEE(140)(트러스트릿)의 공개키(IDK_E) 또는 TrEE(보안 커널)의 서명키(IDK_S)를 포함하는 부팅에서 증명 로그(TCG 로그)를 생성할 수 있다. 그 후에, 요청자(120)는 동작 428에서 TCG 로그를 증명 서비스(424)에 제공할 수 있다. 일부 경우에, TPH(150)에 의해 신뢰되는 증명 서비스를 TPH(150)가 지시하거나 요청자(120)가 선택할 수 있다. 증명 서비스(424)는 동작 430에서 TCG 로그를 검사하고, TrEE(140)(보안 커널)의 암호화키(IDK_E) 및/또는 서명키(IDK_S)에 기초하여 THC(TrEE Health Certificate)를 발행할 수 있다. 그 후에 증명 서비스(424)는 동작 432에서 THC(본 명세서에서 증명문이라고도 함)를 요청자(120)에게 되돌려 보낼 수 있다.
동작 406에서 증명문을 획득하면, 요청자(120)는 동작 408에서 TrEE(140)를 대신하여 증명문 및 보호 데이터에 대한 요청을 TPH(150)로 전송할 수 있다. THC 또는 증명문은 (인증시에 수립된 요청자의 아이덴티티와 인증서 간의 바인딩을 생성하기 위해) 요청자(120)의 서브젝트명, 및 응답자(TPH(150))가 응답(예를 들면, 암호화키 또는 서명키)의 공식화에 사용해야 하는 키를 포함할 수 있다.
일부 측면에서, 신뢰 플랫폼 모듈(TPM; trusted platform module)의 암호화키(EK)와 같은 변조 방지 아이덴티티(a tamper-proof identity)는 요청자(120)와 연관된다. 요청자(120)의 증명은 당해 기술 분야에서 알려진 바와 같이 TPM EK를 사용하여 수행될 수 있다.
일부 측면에서는, 대역 밖에서, 또는 THC의 일부일 수 있는 IP(issuance policy) 객체 식별자(OID; object identifier)를 통해, TrEE는 키가 암호화키이던지 서명키이던지 간에 요청자(120)를 통해 TPH(150)와 통신할 수 있다. 어떤 키가 사용되는지의 선택은 상기한 바와 같이 응답을 구조화하는 데 사용되는 메카니즘의 선택에 영향을 줄 수 있다. 결정적으로, 인증서를 뒷받침하는 개인키 소유의 증거가 TPH(150)에 의해 요구되지 않는데, 왜냐하면 단순히 잘못된 인증서가 주어지면, 대응하는 개인키로의 액세스를 응답이 갖고 있지 않으므로 요청자(120)는 응답을 이해할 수 없을 것이기 때문이다.
또한, 도 5a 및 도 5b는 비신뢰 요청자의 중첩 TrEE로 보호 데이터를 전달하기 위한 예시적인 프로세스(500)를 도시한다. 일부 측면에서, 하나의 TrEE가 또 다른 TrEE 내에 포함되도록 두 개 이상의 TrEE가 중첩될 수 있다. 본 명세서에서 언급되는 바와 같이, 트러스트릿은 외부 TrEE에 포함되어 있는 중첩 TrEE이다. 일례에서, 외부 TrEE는, 도 6을 참조하여 이하에서 더 상세히 설명되는 바와 같이, 가상 신뢰도와 연관된 메모리의 특정 파티션과 같은, 오퍼레이팅 시스템의 신뢰 부분의 보안 커널을 포함할 수 있다. 예를 들어 일부 경우에 트러스트릿을 인스턴스화하는 머신의 보안 커널일 수 있는 외부 TrEE의 암호화키만이 이용 가능할 때에 프로세스(500)가 이용될 수 있다.
요청자(120)에 의해 결정되는 "세션 식별자"를 갖고서 트러스트릿을 개시하는 동작 502에서 프로세스(500)가 시작될 수 있으며, 상기 세션 식별자는 트러스트릿의 사용자와 관련하여 트러스트릿이 동작시킬 콘텐츠 또는 데이터가 무엇인지를 식별하거나 또는 그에 관련된 것과 같은 임의의 유형의 식별자, 등(예를 들면, '특정 타이틀'을 재생하기 위한 스트리밍 콘텐츠 애플리케이션 트러스트릿)을 포함할 수 있다. 일례에서, 세션 ID는 32-바이트 값일 수 있다. 그 값은 보존될 수 있고, 트러스트릿의 수명 기간 동안에는 읽기 전용이며, 트러스트릿에 대해 타겟화된 메시지를 수신할 때에는 보안 커널에 대해 이용 가능할 수 있다. 이 값은 누락될 수 있으며(프로세스 개시에서 특정되지 않음), 이 경우에 세션 ID는 제로로 가정될 수 있다.
다음에, 동작 504에서, 요청자(120)는 TPH(150)에 대해 인증할 수 있다(요청자들 간에 실제로 차이가 없는 것과 같이 매우 제한된 상황에서만 상기한 바와 같이 선택적임). TrEE(예를 들면, TrEE의 키)와 요청자의 아이덴티티 간의 바인딩이 요구되는 일례는, 예를 들어 영화와 같은 콘텐츠 항목의 재생이 라이센스 또는 가입자 검증에 의해 제한되는 경우(예를 들면, NetFlix 사용자가 영화 재생을 위한 라이센스를 얻길 원하지만 NetFlix는 (TrEE 내에서) 영화 라이센스를 수신하는 구독자인지를 확인하길 원함)이다.
요청자(120)는, 도 4b를 참조하여 전술한 프로세스(406)에 따르는 것과 같이, 동작 506에서 TPH(150)에 의해 신뢰되는 증명 서비스로부터 증명문을 획득할 수 있다. 다음에, 요청자(120)는 증명문을 TPH(150)에 제공할 수 있다. 본 명세서에서 적용될 수 있는 상기한 클린룸 프로비저닝 예에 있어서 증명이 필요로 되지 않음을 이해해야 한다.
증명문을 수신하면, TPH(150)는 동작 510에서 증명문을 검증할 수있다(또는, 상기 클린룸 프로비저닝 예의 경우에, 그들의 아이덴티티에 기초하여 요청자의 키를 찾음). 프로세스(500)의 이 시점에서, 요청자(120)는 외부 TrEE를 어드레싱하기 위해 어떤 키를 사용할지를 안다. 일부 측면에서, 증명문 또는 요청으로부터 획득된 키가 외부 TrEE 또는 보안 커널(및 내부가 아닌 트러스트릿)의 암호화키라는 표시는 요청 또는 증명문과 함께 포함될 수 있거나, 다른 방식으로 또는 TPH(150) 대역 밖으로 전달될 수 있거나, 디폴트 절차로서 설정될 수 있다. 다음에, 동작 511에서, TPH(150)는 예를 들어 라이센스, 패스워드, 허가, 및/또는 다른 정보를 보유하는 하나 이상의 서비스와 같이 보호 데이터를 보유하는 임의의 다른 개체 또는 KMS(115)로부터, 요청에 표시된 보호 데이터를 획득할 수 있다.
TPH(150)는, 동작 512에서, 예를 들어 요청에 기초하거나 또는 TPH(150) 자체에 기초하여(예를 들면, 각 TPH(150)가 소정의 목적 또는 NetFlix와 같은 애플리케이션을 위해 특별히 설계될 수 있음) 타겟화할 트러스트릿 유형을 결정할 수 있다. 상기 도 1c를 참조하여 설명된 바와 같이 KP를 이용하는 예에서, 트러스트릿 유형은 KP에서 인코딩될 수 있다. 일부 다른 예에서, 트러스트릿 유형은 HGS(150a)를 이용하는 구현예에서와 같이 디폴트로 설정되거나 하드-코딩될 수 있다. HGS 예에서, HGS(150a)는 가상 모드 보안 프로세스(VMSP) 트러스트릿을 항상 타겟화할 수 있으며, 그 유형은 (KP가 그 정보를 포함하지 않을 수 있음에 따라) 하드-코딩될 수 있다.
타겟화할 트러스트릿 유형을 결정할 때, TPH(150)는 동작 514에서 보호 데이터를 포함하는 메시지를 구축하여 TrEE에 전송할 수 있다. 동작 514의 더욱 상세한 예는 도 5b에 도시된다.
일부 측면에서, 동작 514는 전송키 TX 및 랩핑키(wrapping key) TW와 같은 2개의 랜덤 대칭키를 TPH(150)가 생성하는 동작 536을 더 포함할 수 있다. 다음에, TPH(150)는, 동작 538에서(예를 들면, THC가 서명키가 아닌 암호화키에 기초한다고 가정하면), (증명문의 일부인) THC의 공개키를 사용하여 TX를 암호화할 수 있다. 일부 측면에서, 동작 538은 RSA 암호화 및 OAEP 패딩을 사용하여 호스트의 IDK로 TX를 암호화하는 것을 포함할 수 있다. 일부 측면에서, TPH(150)는, 예를 들어 트러스트릿이 (예를 들어, 온라인 서비스 또는 콘텐츠 항목에 대해 지불된) 보호 데이터에 액세스하도록 권한이 있는지 또는 올바른 허가를 갖는지를 검증하기 위해, 동작 540에서 트러스트릿의 세션 ID를 검증할 수 있다. 일부 경우에, 세션 ID는 트러스트릿 유형을 포함할 수 있지만, 다른 경우에, 트러스트릿 유형은 KP에서 인코딩되거나 심지어 하드-코딩될 수 있다. 그 후에, TPH(150)는 동작 542 및 544에서 TX를 사용하여 TW를 암호화할 수 있고, 또한 트러스트릿의 트러스트릿 타입 및 세션 ID는 연결되어 "인증 태그"로서 사용될 수 있다. 인증 태그의 사용이 AES-GCM 프로토콜의 아티팩트(an artifact)이며; 다른 암호화 프로토콜이 동일한 효과를 갖는 상이한 방식을 사용할 수 있음을 유의한다. 인증 태그 뒤의 아이디어는, 전송중에 공격자에 의해 분리될 수 없는 방식으로, TW를 트러스트릿 유형 및 세션 ID와 함께 바인딩하는 것이다. 암호학적으로 이를 달성하는 다수의 다른 방식들이 있으며, AES-GCM은 기본적으로 이러한 기능을 제공함으로써 유리하기 때문에 본 명세서에서 설명된다.
그 후에, TPH(150)는 동작 546에서 TW의 인증된 암호화 및 암호화된 TX를 요청자(120)에게 전송할 수 있다. 도 5a로 되돌아가면, 도 5b의 동작들을 통해 생성될 수 있고 및/또는 TW와 유사한 방식으로 암호화된 보호 데이터를 포함할 수 있는 메시지를 수신(516)한 후에, 요청자(120)는 동작 518에서 메시지를 트러스트릿에 전달할 수 있다. 트러스트릿이 (TW에서 얻고자 시도하는) 메시지를 복호화할 수 없음에 따라, 트러스트릿은 동작 520에서 메시지를 보안 커널에 전달할 수 있다. 이와 달리 요청자(120)는 트러스트릿을 바이패스하여 보안 커널에 응답을 전송할 수 있고, 보안 커널은 TW를 복호화할 때에 트러스트릿에게 새로운 정보를 알릴 것이다.
다음에, 동작 522에서, 보안 커널은 그 개인 암호화키를 사용하여 TX를 복호화할 수 있고, 그 후에 올바른 세션 ID와 함께 올바른 트러스트릿 유형이 복호화되는 메시지를 요청하고 있음을 확실히 하기 위해 인증 태그를 사용하는 TX를 사용하여 TW를 복호화할 수 있다. 인증 태그가 검증되면, 보안 커널은 동작 524에서 TW를 트러스트릿에게 되돌려 보낼 수 있다. 그 후에 트러스트릿은 임의의 크기일 수도 있는 보호 데이터와 같이 TW가 암호화하고 있는 어떤 것이라도 복호화하기 위해 상기 수신된 TW를 사용할 수 있다.
일부 측면에서, 보안 커널은 올바른 트러스트릿에 대해 타겟화된 메시지를 수신하고, 복호화하고, 전달하기 위해 하나 이상의 API에 의해 정의된 바와 같은 하나 이상의 프로세스를 구현할 수 있다. API는 특정 트러스트릿에서 타겟화되는 암호화된 메시지를 수신하고, IDK의 개인 부분을 사용하여 TX를 복호화할 수 있다(보안 커널이 암호화키를 식별함). API는 호출 트러스트릿의 세션 ID와 트러스트릿 유형의 연결을 태그로서 사용하여 그 자신의 인증 태그를 구축할 수 있다(명백한 보안상의 이유로 제공된 인증 태그를 사용할 수 없음). 그 후에 트러스트릿 유형 및 세션 ID가 획득될 수 있다. 인증이 성공하면, API는 TX를 사용하여 TW를 복호화할 수 있다. 복호화가 성공하면, API는 TW를 트러스트릿에게 되돌려줄 수 있다.
일례에서, 수신된 메시지는 이하의 정보를 포함할 수 있다: 버전 번호(예를 들면, 0); 전송키 암호화 프로토콜 ID(예를 들면, RSA 2048); 전송키 암호화 패딩 ID(예를 들면, OAEP); 랩핑키 암호화 프로토콜 ID(예를 들면, AES-GCM); 전송키 암호문의 길이; 랩핑키 인증 태그의 길이(무시됨); 랩핑키 암호문의 길이; 및 전송키 암호문, 랩핑키 인증 태그(무시됨) 및 랩핑키 암호문. 이는 메시지를 구축할 수 있는 많은 방법들 중 단지 하나일 뿐임을 이해해야 한다.
일부 측면에서, 상기한 시스템들 또는 프로세스들(100, 300, 400 또는 500) 중 하나 이상은 가상 보안 모드(VSM)를 구현하는 가상 머신 또는 리소스에서 구현될 수 있다. VSM 및 관련 개념은, 가상 머신의 맥락에서, 2014년 2월 21일에 "가상 머신을 위한 가상 보안 모드(Virtual Secure Mode for Virtual Machines)"라는 제목으로 출원된 미국 특허 출원 제14/186,415호에 설명되어 있다. 도 6은 상이한 가상 신뢰 레벨인 VTL0(610) 및 VTL1(615)로 나뉘어진 VSM 컴퓨팅 환경을 포함하는 시스템 또는 호스트 오퍼레이팅 시스템(600)을 도시한다. 시스템(600)은 VSM에서 구동중인 컴퓨팅 환경을 포함해서 클라우드 호스트(180)와 같은 시스템들(100a, 100b 또는 100c)의 하나 이상의 측면의 더욱 특정한 구현예일 수 있다. VTL0(610)는 사용자 모드(620) 및 일반 커널 모드(630)를 포함할 수 있고, VTL1(615)는 사용자 모드(625) 및 보안 커널 모드(635)를 포함할 수 있다. 상이한 VTL은 예를 들어 물리적 컴퓨팅 컴포넌트 또는 가상 컴퓨팅 리소스(예를 들면, 하나 이상의 가상 머신)의 상부에서 실행중인 하이퍼바이저에 의해 제공될 수 있으며, 상기 하이퍼바이저는 소정의 프로세스 등을 위한 메모리 액세스에 대한 제한을 통해 VTLO(610) 및 VTL1(615)과 상호 작용하고 이들을 정의한다. 도시된 예에서, VTL1(615)은 VTL0(610)보다 더 안전할 수 있어, VTL1과 연관된 데이터 또는 코드를 판독 및/또는 기록하는 데 보다 상위의 액세스가 요구된다. VTL0(610)는 요청자(120)에 대응할 수 있지만, VTL1(615)은 TrEE(140)에 대응할 수 있다. 시스템(600)은 KP(700)를 이용하는 것으로 아래에서 설명된다. 그러나, 이는 단지 이러한 예로서 주어진다는 것을 이해해야 한다: 시스템(600)은 유사한 효과에 대한 KP의 사용 없이 상기한 증명/인증 방식을 이용할 수 있음.
시스템(600)을 참조하여 설명된 바와 같이, 호스트(600)의 클라이언트 애플리케이션(650)/VTL0(610)는 요청자(120)에 대응할 수 있지만, VTL1(615)은, 보다 구체적으로 VTL1(615)의 보안 커널(635)은 TrEE(140)에 대응할 수 있다. 일부 측면에서, 트러스트릿(640)은 프로세스(500)을 참조하여 설명된 중첩 트러스트릿에 대응할 수 있다. 일부 측면에서, 시스템(600)은 상기한 프로세스(500)를 구현할 수 있다. 다른 실례에서, 시스템(600)은 도 8 및 도 9를 참조하여 아래에서 설명되는 프로세스(800) 및/또는 프로세스(900)를 구현할 수 있으며, 여기서 프로세스들(500 및 800) 간의 주요한 차이점은 보다 일반적인 TPH(150) 대신에 트러스트릿을 개시하는 KP의 사용 및 HGS(150a)의 특정 구현예의 사용이다.
도시된 바와 같이, 하나 이상의 TrEE 또는 트러스트릿(640)은 VTL1(615)의 사용자 모드(625)에서 존재할 수 있다. 일부 측면에서, 하나 이상의 트러스트릿(640)은 VMSP(Virtual Machine Secure Process)(645)에 액세스되거나 이와 연관될 수 있다. 클라이언트 동작, 애플리케이션, 프로그램, 등(650)(클라이언트)은 VTL0(610)의 사용자 모드(620)에서 동작되고 있을 수 있다. VTL1(615)의 사용자 모드(625)에서 존재하는 서버(655)는 RPC(660)를 통해 클라이언트(650)와 통신할 수 있다. 도시된 바와 같이, 클라이언트(650)는 예를 들어 하나 이상의 RPC(660)를 통해 VMSP(645)를 이용하여 하나 이상의 보안 동작을 수행하도록 트러스트릿(640)의 개시를 요청할 수 있다. 다른 측면에서, 서버(655)는 클라이언트(650)로부터 명시적인 요청을 수신하지 않고서 트러스트릿(640)을 개시할 수 있다. 어느 경우든, 서버(655)는 트러스트릿(640)의 특정 인스턴스를 식별하는 세션 ID 및 트러스트릿의 파라미터를 식별하는 특정 트러스트릿 유형을 갖고서 트러스트릿(들)(640)을 개시할 수 있다. 일부 측면에서, 도 1c를 참조하여 시스템(100c)에서 상술한 바와 같이, KP(405)를 포함하는 데이터 구조를 통해 트러스트릿 유형이 개시될 수 있다. KP(700)와 같은 KP를 포함하는 예시적인 데이터 구조가 도 7에 도시된다.
데이터 구조(700)는, 2014년 9월 9일에 "연속적인 소유자 액세스를 이용한 암호화된 가상 머신의 보안 전송(Secure Transport of Encrypted Virtual Machines with Continuous Owner Access)"이라는 제목으로 출원된 미국 특허 출원 제14/481,399호에서 설명된 바와 같이, 암호화키(여기서는 전송키 TK)의 암호화 랩핑인 키 보호기(KP)(705)를 포함할 수 있다. KP(705)는 TK(710) 및/또는 다른 보호 데이터로의 액세스가 권한 부여된 개체에게만 주어짐을 확실히 한다. TrEE(140)에 전달되어야 하는 키인 TK(710)는 KP(705)에 의해, 또는 일부 경우에는 랩핑키 또는 TW에 의해 랩핑될 수 있다. TK(710)는 상위값 비밀로 간주될 수 있다. 일부 경우에, TK(710)는 KMS(115)에서 복호화될 수 있다.
또한, 데이터 구조(700)는 트러스트릿을 개시하기 위한 데이터를 포함할 수있는 VMD(virtual machine data)(730)를 포함할 수 있다. VMD(730)는 Redmond Wash의 마이크로소프트사로부터 이용 가능한 BitLocker와 같은 적절한 암호화 기술을 사용하여 암호화될 수 있다. FVEK(full voloume encryption key)(725)는 VMD(730)를 복호화하는 데 사용될 수 있고, 가상 신뢰 플랫폼 모듈(VTPM)에 의해 보호될 수 있으며, 그 상태(725)는 암호화되고 KP(705)와 함께 메타데이터의 부분으로서 저장된다. 일부 측면에서, FVEK(725)는 볼륨 마스터키(VMK)(720)에 의해 암호화될 수 있다. VTPM 상태(725)는 KP(705)에 의해 랩핑된 키를 사용하여 그 자체가 암호화된다. 일부 측면에서, VTPM 상태(725)는 TK(710)(상위값 비밀) 및 "밀봉" 데이터를 PCR 값들(예를 들면, PCR7)에 의해 암호화될 수 있어, PCR 값이 예상된 상태에 있으면 TPM은 예를 들어 핵심 자료를 복호화하기 위한 액세스를 허용할 것이다. 이 경우에, TPM 보호기는 하나 이상의 PCR이 예상된 상태에 있을 때에 일부 비밀을 해제하도록 TPM에 제공되는 데이터 구조이다. 다른 경우에, 비-TPM 보호기가 또한 사용될 수 있다.
볼륨 마스터키(VMK)(720)는 VTPM 상태(725)에 의해 해제될 수 있다. VTPM 상태(725)는 KP(705) 내부의 TK(710)에 의해 암호화될 수 있다. 일부 경우에, VMK(720)는 Bitlocker 볼륨 마스터키일 수 있으며, 하위값 비밀로서 표시될 수 있다.
또한, KP(700)의 각 필드 또는 블록은, 암호화(키, 데이터) 약칭과 같이, 암호화하는 관점에서 설명될 수 있다.
VMDDISK 암호화(FVEK, ClearText 디스크 데이터)
FVEKDISK 암호화(VMK, FVEK)
VMKDISK 암호화(VMK)
VTPM.DISK 암호화(TK, VTPM)
TKDISK 암호화(KP, TK)
KP KP는 VM과 연관되어 있으며, 트러스트릿은 실제로 VM을 볼 수 없다. KP는 VM을 복호화하여 (상기한 타겟화 메카니즘을 통해) TK를 트러스트릿에 되돌려주는 KMS로 가게 된다. TK는 vTPM을 복호화하고, vTPM은 VMK를 해제하여, FVEK를 산출한다.
일례에서, KP(405), VTPM 상태(415), VMK(420), 및 VMD(430)는 디스크에 저장된 데이터일 수 있다. VTPM 상태(415)는 VTPM이 생성될 때에 개시될 수 있고, 고유하도록 보장받을 수 있다. 예를 들어 생성된 비밀 또는 보호 데이터의 런타임 고유성 때문에, VTPM은 보안 커널에 의해 제공되는 RNG의 보안에 의존한다. 트러스트릿이 복호화된 TK(710)를 사용하여 VTPM 상태(415)를 복호화한 후, VMD(730)에 액세스하기 위한 나머지 동작들은 물리적 머신과 물리적 TPM 사이에서 수행되는 동작들과 동일하거나 유사할 수 있다. 이들 동작은 VMK를 해제하는 데 VTPM 측정을 사용하여 VTPM이 VSM의 측정을 수행하는 것(오퍼레이팅 시스템 로더에 FVEK(725)를 제공하게 됨)과, 오퍼레이팅 시스템이 VMD(730)를 복호화하는 데 FVEK(725)를 사용하는 것을 포함할 수 있다.
트러스트릿을 개시하기 위해, 클라이언트(650)는 데이터 구조(700)를 요청하고 및/또는 수신할 수 있다. 클라이언트(650)는 KP(705) 또는 전체 데이터 구조(700)를 TPH(150)(또는 일부 구현예에서는 HGS(150a))에 전송할 수 있어, TK(710)를 복호화하도록 KMS(115)와 통신할 수 있다. 그 후에 TPH는 예를 들어 아래에서 설명된 프로세스(800)를 통해 IDK_pub(665)를 이용하여 트러스트릿(640)과 연관된 보안 커널(635)에서 TK(710)를 타겟화할 수 있다. 보안 커널(635)은 개시 시점에서 IDK_pub 및 IDK_pri를 획득할 수 있다. 보안 커널(635)은 TK(710)를 복호화하고 또한 TK(710)를 서버(655)에 되돌려주는 데 개인키(675)(예를 들면, IDK_pri)를 사용할 수 있다. 그 후에 서버(655)는 TK(710)를 트러스트릿(640)에 전달할 수 있다. 일부 경우에, 보안 커널(635)은 TK(710)를 트러스트릿(640)에 직접 되돌려줄 수 있다. 일부 측면에서, 보호 데이터는 TK(710)와 함께 트러스트릿(640)에 전달되고, TK(710)에 의해 암호화될 수 있다. 이에 의해, 트러스트릿(640)은 TK(710)를 사용하여 보호 데이터를 복호화할 수 있다.
도 8은 TrEE 또는 트러스트릿의 아이덴티티 키를 사용하여, 전송키 및/또는 그 전송키에 의해 암호화된 보호 데이터를 TrEE 또는 특정 트러스트릿에 대해 타겟화하기 위한 프로세스(800)를 도시한다. 보다 구체적으로, 프로세스(800)는 트러스트릿의 보안 커널의 암호화키를 통해 트러스트릿을 타겟화하는 방법을 도시한다.
클라우드 패브릭 호스트 또는 호스트 OS(예를 들면, 호스트 OS(600))는 전송키를 수신하기 위해 일련의 단계를 수행한다. 클라우드 패브릭 호스트는, 예를 들어 상기에서 도 4b를 참조하여 설명된 프로세스에 따라, TrEE 또는 트러스트릿과 연관된 보안 커널의 암호화 아이덴티티 키(IDK_E)를 기반으로 구축된 THC(TrEE Health Certificate)를 동작 802에서 획득할 수 있다. 일 측면에서, 동작 802는, IDK_E의 공개 버전을 포함하는 부팅시 증명 로그(TCG 로그)를 호스트에 의해 생성하는 것을 포함할 수 있으며, 그 개인 부분은 트러스트릿과 연관된 VSM 보안 커널(SK)에 존재한다. 증명 로그는 증명 서비스(AS)에 제공될 수 있다. AS는 증명 로그를 검사하고, IDK_E(예를 들면, 비대칭 키의 공개 부분) 기반으로 구축된 THC를 호스트에 대해 발행할 수 있다. 또한, 일부 측면에서, IDK_E와 유사한 "서명 아이덴티티 키"(IDK_S)는 생성될 수 있으며, 도 9를 참조하여 아래에서 더 상세히 설명되는 바와 같이 그것을 기반으로 구축된 별도의 THC를 가질 수 있다. 키 전달 문제에 대한 해결안은 아래에서 설명되는 바와 같이 IDK_E 또는 IDK_S를 사용하여 구축될 수 있다.
새로운 차폐된 VM을 로딩할 시간이 오면, 호스트는 동작 804에서 VM의 KP를 획득하고, 또한 KP에 의해 암호화된 TK를 VMSP 트러스트릿에 주입하는 것이 목표인 TPH(예를 들면, TPH(150))와의 대화를 개시한다.
TK와 KP를 교환하기 위해, 호스트는 동작 806에서 TPH(150) 등의 TPH에게 THC와 함께 KP 및 "트러스트릿 아이덴티티"를 제공할 수 있다. 또한, 클라우드 패브릭 호스트는 동작 808에서 트러스트릿 또는 TrEE를 KP(KPSID)로부터 도출된 "세션 ID"를 갖고서 시작시킬 수 있다. 일부 측면에서, 수신된 KP는 그 위에서 SHA-2 해시를 생성하거나 다른 단방향 기능들을 이용함으로써 세션 ID 값의 기반을 형성할 것이다. TPH는 동작 822에서 THC를 검사할 수 있고, 동작 824에서 KMS(115) 등의 KMS, 혹은 소유하고 있거나 보호 데이터 및/또는 KP에 대한 복호화키에 대한 액세스를 갖고 있는 다른 개체와 통신하여 TK에 액세스하기 위한 KP를 복호화할 수 있다. 동작 826에서, TPH는 예를 들어 프로세스(500)와 관련하여 상기한 바와 같이, 계산된 KPSID를 갖고서 트러스트릿을 타켓화하는 데 특수 암호화 구조를 사용할 수 있다.
요청자 또는 클라이언트(650)는 TPH로부터 응답을 수신하고, 주어진 KPSID를 갖고서 트러스트릿에 전달할 수 있다. 트러스트릿 또는 서버는 동작 810에서 응답을 복호화하고 TK로 되돌려 주도록 VSM 보안 커널에 대해 요청할 수 있다. 보안 커널은 응답을 검사하고, 동작 812에서 트러스트릿 유형 및 트러스트릿의 세션 ID에서 타겟화되는 것인지를 검증하며, 동작 818에서 매칭이 존재할 때에만 키를 되돌려 보낸다. 이러한 방식은, TPH 응답이 악의적인 손에 들어가게 되면, 암호학적으로는 이해하는 것이 불가능하다. 키를 수신하면, 호스트는 동작 820에서 키를 복호화하여 TrEE에 제공할 수 있고, 그 시점에서 프로세스(800)는 종료될 수 있다.
도 9는 보안 커널의 서명키를 사용하여, 전송키 및/또는 그 전송키에 의해 암호화된 보호 데이터를 트러스트릿에 대해 타겟화하기 위한 다른 예시적인 프로세스(900)를 도시한다. 보다 구체적으로, 프로세스(900)는 보안 커널의 서명키에 의해 인증된 트러스트릿의 암호화키를 통해 트러스트릿을 타겟화하는 방법을 도시한다.
프로세스(800)는 모든 트러스트릿들 사이에서 공유되는 아이덴티티 암호화키를 통해 간접적으로 트러스트릿에서 응답이 어떻게 타겟화될 수 있는지를 도시한다. 그러나, TrEE가 증명 가능한 아이덴티티 서명키를 갖고 있으면, 다른 방안이 사용될 수도 있다. 여기서, 각 트러스트릿은 자신의 암호화키 쌍을 생성할 수 있고, 상기 쌍의 공개키 부분인 IDK_S를 사용하여 보안 커널 인증서를 가질 수 있다. 이러한 인증서 또한 트러스트릿 유형 및 트러스트릿의 세션 ID에 키를 암호학적으로 바인딩해야 하는 것임을 유의한다.
Key_certification=σIDK_S(Trustlet_Encryption_Key_Pub, Trustlet_Type, Session_ID)
여기서 σIDK_S는 주어진 키를 사용하여 이들 입력 대한 서명이 뒤따르는 그 입력들()의 연결을 표시한다.
이 경우에, 요청자는 THC 및 키 인증서와 함께 트러스트릿의 키를 TPH에 제공하고, TPH는 동작 822 및 824에서의 프로세스(800)와 구별되는 바와 같이 트러스트릿의 암호화키에 대해 전송키를 암호화함으로써 응답한다.
일부 측면에서, "보안 버전 번호"(SVN)는 또한 다른 유형의 공격을 막기 위해 사용되거나 키 인증서에 표시될 수 있어 TrEE가 오래되고 잠재적으로 취약한 버전이 아님을 보장할 수 있다. 일부 경우에, 보안 커널이 증명되지만 내부 트러스트릿이 없는 경우(예를 들면, 증명이 이미 행해진 후에 트러스트릿이 로드되는 것이 요구됨), 트러스트릿의 SVN을 포함하면 THC가 괜찮더라도 오래되고 취약한 트러스트릿의 타겟화를 거부할 것을 TPH(150)에게 지시할 수 있다.
프로세스(800 및 900)의 2가지 방안들 간의 하나의 차이점은 트러스트 ID 또는 TrEE ID, 세션 ID 및 전송키 사이의 바인딩을 누가 시행하는지이다: 프로세스(800)에서는 보안 커널이고, 프로세스(900)에서는 TPH(150)이다. 다른 주요한 차이점은 응답이 암호학적으로 어떻게 구조화되는지에 있다. 이전의 경우에는, 보안 커널에서 타겟화되며 어떤 트러스트릿이 이를 볼 수 있는지를 결정하고, 이 경우에서는, 보안 커널의 키에 의해 인증된 트러스트릿의 키를 갖고서 트러스트릿에서 직접 응답이 타겟화된다.
일부 측면에서, 상기한 기술들은 컨테이너들에 대한 완전한 자격 증명 격리를 제공하도록 구현될 수 있다. 근본적인 문제점은 동일하여, 컨테이너가 그 호스트로부터 자격 증명을 요청할 수 있다. 그 후에 호스트는 일부 KMS로부터 컨테이너를 대신하여 자격 증명을 요청할 수 있다. 요청된 자격 증명이 호스트에 대해 암호화되지 않은 상태로 되돌아 오는 경우(예를 들면, 자격 증명이 요청에 따라 도착하고 컨테이너 이미지의 부분이 아님), "지연된 자격 증명 바인딩"을 초래할 것이다. 이 바인딩은 가치가 있지만 자격 증명 격리에 해당하지 않아서, 호스트가 손상되면 자격 증명이 공개된다.
실시예에서, 개시된 실시예는 컴퓨팅 시스템으로서 구현될 수 있고, 컴퓨팅 시스템은:
프로세서; 및
상기 프로세서에 통신 가능하게 결합되고, 인스트럭션이 저장된 메모리를 포함하되,
상기 인스트럭션은 상기 프로세서에 의한 실행시에, 상기 컴퓨팅 시스템으로 하여금,
중첩 TrEE와 연관된 요청자로부터의 보호 데이터에 대한 요청 및 보안 커널의 증명문 및 키 인증문을 수신하는 동작 - 상기 중첩 TrEE는 보안 커널의 상부에서 실행중인 트러스트릿을 포함하고, 상기 키 인증문은 트러스트릿 공개 암호화키 및 트러스트릿 ID를 바인딩함 - ;
상기 보호 데이터를 검색하는 동작;
상기 보호 데이터를 상기 트러스트릿 공개 암호화키로 암호화하는 동작; 및
상기 암호화된 보호 데이터를 상기 요청자에게 제공하는 동작을 수행하게 한다.
실시예에서, 상기 키 인증문은 서명 키를 사용하여 보안 커널에 의해 생성된다.
실시예에서, 상기 서명키는 상기 트러스트릿에 의해 생성된 공개키 개인키 쌍의 상기 트러스트릿 공개 암호화키를 인증한다.
실시예에서, 상기 트러스트릿 ID는 트러스트릿 유형을 포함하거나, 상기 트러스트릿 유형 및 세션 ID를 포함한다.
실시예에서, 상기 키 인증문은 상기 보안 커널에 의해 서명키를 사용하여 생성되고, 상기 트러스트릿 공개키, 상기 트러스트릿 유형 및 상기 세션 ID를 바인딩한다.
실시예에서, 상기 인스트럭션은, 상기 프로세서에 의한 실행시에, 상기 컴퓨팅 시스템으로 하여금,
상기 트러스트릿 ID를 승인된 트러스트릿 ID들의 리스트와 비교하는 동작; 및
상기 트러스트릿 ID가 승인된 트러스트릿 ID들의 리스트와 연관되는 경우에만, 상기 보호 데이터를 트러스트릿 공개 암호화키로 암호화하는 동작을 수행하도록 하게 한다.
실시예에서, 외부 신뢰 실행 환경(TrEE)의 상부에서 실행중인 트러스트릿을 포함하는 중첩 TrEE에 보호 데이터를 전달하는 방법 - 상기 트러스트릿 및 상기 외부 TrEE 양쪽은 비신뢰 요청자와 연관되어 있음 - 이 구현될 수 있고, 이 방법은,
타겟화 프로토콜 헤드에 의해, 상기 중첩 TrEE와 연관된 요청자로부터의 보호 데이터에 대한 요청 및 상기 외부 TrEE의 진술문 및 키 인증문을 수신하는 단계 - 상기 키 인증문은 트러스트릿 공개 암호화키 및 트러스트릿 ID를 바인딩함 - 와;
타겟화 프로토콜 헤드에 의해, 상기 보호 데이터를 검색하는 단계와;
상기 보호 데이터를 상기 트러스트릿 공개 암호화키로 암호화하는 단계와;
암호화된 보호 데이터를 요청자에게 전송하는 단계를 포함한다.
실시예에서, 상기 키 인증문은 상기 외부 TrEE에 의해 서명키를 사용하여 생성된다.
실시예에서, 상기 서명키는 상기 트러스트릿에 의해 생성된 공개키 개인키 쌍의 트러스트릿 공개 암호화키를 인증한다.
실시예에서, 상기 트러스트릿 ID는 트러스트릿 유형을 포함하거나 상기 트러스트릿 유형 및 세션 ID를 포함한다.
실시예에서, 상기 키 인증문은 상기 외부 TrEE에 의해 서명키를 사용하여 생성되고, 상기 트러스트릿 공개키 및 상기 트러스트릿 유형 및 상기 세션 ID를 바인딩한다.
실시예에서, 상기 방법은,
상기 타겟화 프로토콜 헤드에 의해, 트러스트릿 ID를 승인된 트러스트릿 ID들의 리스트와 비교하는 단계와;
상기 타겟화 프로토콜 헤드에 의해, 트러스트릿 ID가 승인된 트러스트릿 ID들의 리스트와 연관되는 경우에만 보호 데이터를 상기 트러스트릿 공개 암호화키로 암호화하는 단계를 더 포함한다.
실시예에서, 상기 방법은,
상기 요청자에 의해 상기 암호화된 보호 데이터를 상기 트러스트릿에 전송하는 단계와;
상기 트러스트릿에 의해 상기 암호화된 보호 데이터를 상기 트러스트릿 공개 암호화키에 대응하는 트러스트릿 개인 암호화키를 사용하여 복호화하는 단계를 더 포함한다.
실시예에서, 상기 보호 데이터는 래핑키(wrapping key)를 포함한다.
실시예에서, 컴퓨터 판독 가능 저장 매체가 구현될 수 있고, 컴퓨터 판독 가능 저장 매체는, 보안 커널의 상부에서 실행되는 트러스트릿을 포함하는 중첩 신뢰 실행 환경(TrEE)에 보호 데이터를 전달하기 위한 인스트럭션을 포함하되,
상기 매체는, 컴퓨터 시스템 상에서의 실행시에, 컴퓨터 시스템으로 하여금 적어도,
중첩 TrEE와 연관된 요청자로부터의 보호 데이터에 대한 요청, 보안 커널의 증명문 및 키 인증문을 수신 - 상기 키 인증문은 트러스트릿 보안 암호화키 및 트러스트릿 ID를 바인딩함 - 하고;
상기 보호 데이터를 검색하고;
상기 보호 데이터를 상기 트러스트릿 공개 암호화키로 암호화하고;
상기 암호화된 보호 데이터를 상기 요청자에게 전송하게 하는 인스트럭션을 포함한다.
실시예에서, 상기 키 인증문은 상기 보안 커널에 의해 서명키를 사용하여 생성된다.
실시예에서, 상기 서명키는 상기 트러스트릿에 의해 생성된 공개키 개인키 쌍의 상기 트러스트릿 공개 암호화키를 인증한다.
실시예에서, 상기 트러스트릿 ID는 트러스트릿 유형을 포함하거나 상기 트러스트릿 유형 및 세션 ID를 포함한다.
실시예에서, 상기 키 인증문은 상기 보안 커널에 의해 서명키를 사용하여 생성되고 상기 트러스트릿 공개키, 상기 트러스트릿 유형 및 상기 세션 ID를 바인딩한다.
실시예에서, 인스트럭션은, 컴퓨팅 시스템 상에서의 실행시에, 상기 컴퓨팅 시스템으로 하여금 적어도,
트러스트릿 ID를 승인된 트러스트릿 ID들의 리스트와 비교하고;
트러스트릿 ID가 승인된 트러스트릿 ID들의 리스트와 연관되는 경우에만, 트러스트릿 공개 암호화키로 상기 보호 데이터를 암호화하게 하는 인스트럭션을 더 포함한다.
상기한 기술들은, 아래에서 설명되는 바와 같이, 하나 이상의 컴퓨팅 디바이스 또는 환경에서 구현될 수 있다. 도 10은 본 명세서에서 설명된 기술들 중 일부가 구현될 수 있는, 예를 들어 요청자(120), TrEE(140), TPH(150), 호스트 OS(600), AS(424), KMS(115) 중 하나 이상을 구현할 수 있는 예시적인 범용 컴퓨팅 환경을 도시한다. 컴퓨팅 시스템 환경(1002)은 적절한 컴퓨팅 환경의 일례일 뿐이며, 본 발명의 청구대상의 사용 또는 기능의 범위에 대한 임의의 제한을 제시하기 위한 것이 아니다. 또한, 컴퓨팅 환경(1002)이 예시적인 오퍼레이팅 환경(1002)에서 도시된 구성요소들 중 임의의 하나 또는 조합에 관한 임의의 의존성 또는 요구사항을 갖는 것으로서 해석되지 않아야 한다. 일부 실시예에서, 다수의 도시된 컴퓨팅 요소들은 본 발명의 특정 측면을 인스턴스화도록 구성된 회로를 포함할 수 있다. 예컨대, 본 명세서에서 사용되는 회로라는 용어는 펌웨어 또는 스위치에 의해 기능(들)을 수행하도록 구성된 특수 하드웨어 구성요소를 포함할 수 있다. 다른 실시예에서, 회로라는 용어는 기능(들)을 수행하도록 동작 가능한 로직을 구현하는 소프트웨어 인스트럭션에 의해 구성된 범용 프로세싱 유닛, 메모리, 등을 포함할 수 있다. 회로가 하드웨어 및 소프트웨어의 조합을 포함하는 실시예에서, 구현자는 소스 코드 구현 로직을 기록할 수 있고, 소스 코드는 범용 프로세싱 유닛에 의해 처리될 수 있는 머신 판독 가능 코드로 컴파일될 수 있다. 당업자라면 기술의 상태가 하드웨어, 소프트웨어, 또는 하드웨어/소프트웨어의 조합에 별 차이가 없는 정도로 진화했음을 이해할 수 있기 때문에, 특정 기능을 발휘하기 위한 하드웨어 대 소프트웨어의 선택은 구현자에게 남겨진 설계 선택사항이다. 보다 구체적으로, 당업자라면 소프트웨어 프로세스가 동등한 하드웨어 구조로 변형될 수 있고, 하드웨어 구조 자체가 동등한 소프트웨어 프로세스로 변형될 수 있음을 이해할 수 있다. 따라서, 하드웨어 구현 대 소프트웨어 구현의 선택사항은 하나의 디자인 선택사항이며 구현자에게 맡겨진 것이다.
모바일 디바이스 또는 스마트폰, 태블릿, 랩탑, 데스크탑 컴퓨터, 또는 네트워크 디바이스, 클라우드 컴퓨팅 리소스 등의 집합물 중 임의의 것을 포함할 수 있는 컴퓨터(1002)는 통상적으로 다양한 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터(1002)에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있고, 휘발성 및 비휘발성 매체, 착탈식 및 비착탈식 매체 모두를 포함한다. 시스템 메모리(1022)는 ROM(1023) 및 RAM(1060)과 같은 휘발성 및/또는 비휘발성 메모리의 형태로 컴퓨터 판독 가능 저장 매체를 포함한다. 시동(start-up) 중과 같이 컴퓨터(1002) 내의 요소들 사이에서 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(1024)은 통상적으로 ROM(1023)에 저장된다. RAM(1060)은 통상적으로 프로세싱 유닛(1059)에 의해 즉시 액세스 가능하고 및/또는 프로세싱 유닛(1059) 상에서 현재 동작중인 데이터 및/또는 프로그램 모듈을 포함한다. 제한되는 것이 아니라 예로서, 도 10은 오퍼레이팅 시스템(1025), 애플리케이션 프로그램(1026), TrEE 타겟화 애플리케이션(1065)을 포함하는 기타 프로그램 모듈(1027), 및 프로그램 데이터(1028)를 도시한다.
또한, 컴퓨터(1002)는 다른 착탈식/비착탈식, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예컨대, 도 10은 비착탈식 비휘발성 자기 매체로부터 판독하거나 이에 기록하는 하드디스크 드라이브(1038), 착탈식 비휘발성 자기 디스크(1054)로부터 판독하거나 이에 기록하는 자기 디스크 드라이브(1039), 및 CD-ROM 또는 기타 광학 매체와 같은 착탈식 비휘발성 광학 디스크(1053)로부터 판독하거나 이에 기록하는 광학 디스크 드라이브(1004)를 도시한다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 기타 착탈식/비착탈식, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, 디지털 다용도 디스크, 디지털 비디오 테이프, 솔리드 상태 RAM, 솔리드 상태 ROM, 등을 포함하지만, 이로 제한되지 않는다. 하드디스크 드라이브(1038)는 통상적으로 인터페이스(1034)와 같은 비착탈식 메모리 인터페이스를 통해 시스템 버스(1021)에 연결되고, 자기 디스크 드라이브(1039) 및 광학 디스크 드라이브(1004)는 통상적으로 인터페이스(1035 또는 1036)와 같은 착탈식 메모리 인터페이스에 의해 시스템 버스(1021)에 연결된다.
위에서 논의되고 도 10에서 설명된 드라이브 및 관련 컴퓨터 저장 매체는 컴퓨터 판독 가능 인스트럭션, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장소를 컴퓨터(1002)에 제공된다. 예컨대, 도 10에서, 하드디스크 드라이브(1038)는 오퍼레이팅 시스템(1058), 응용 프로그램(1057), 기타 프로그램 모듈(1056), 및 프로그램 데이터(1055)를 저장하는 것으로서 도시되어 있다. 이들 구성요소가 오퍼레이팅 시스템(1025), 응용 프로그램(1026), 기타 프로그램 모듈(1027), 및 프로그램 데이터(1028)와 동일하거나 상이할 수 있음을 유의한다. 오퍼레이팅 시스템(1058), 응용 프로그램(1057), 기타 프로그램 모듈(1056), 및 프로그램 데이터(1055)는 최소한 이것들이 상이한 복사본임을 도시하기 위해 본 명세서에서 상이한 번호를 부여받는다. 일반적으로 마우스, 트랙볼 또는 터치 패드로 불리는, 키보드(1051) 및 포인팅 디바이스(1052)와 같은 입력 디바이스를 통해 사용자가 명령 및 정보를 컴퓨터(1002)에 입력할 수 있다. 기타 입력 디바이스(도시되지 않음)는 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너, 망막 스캐너, 등을 포함할 수 있다. 이들 및 기타 입력 디바이스는 시스템 버스(1021)에 결합된 사용자 입력 인터페이스(1036)를 통해 프로세싱 유닛(1059)에 종종 연결되지만, 병렬 포트, 게임 포트 또는 범용 직렬 버스(USB)와 같은 다른 인터페이스 및 버스 구조에 의해 연결될 수 있다. 모니터(1042) 또는 다른 유형의 디스플레이 디바이스는 또한 비디오 인터페이스(1032)와 같은 인터페이스를 통해 시스템 버스(1021)에 연결된다. 모니터 외에도, 컴퓨터는 또한 스피커(1044) 및 프린터(1043)와 같은 기타 주변 출력 디바이스를 포함할 수 있으며, 이는 출력 주변 인터페이스(1033)를 통해 연결될 수 있다.
컴퓨터(1002)는 원격 컴퓨터(1046)와 같은 하나 이상의 원격 컴퓨터에 대한 논리적 연결을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(1046)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스 또는 기타 일반적인 네트워크 노드일 수 있으며, 또한 메모리 저장 디바이스(1047)만이 도 10에서 도시되어 있지만 컴퓨터(1002)와 관련해서 위에서 설명한 다수의 요소 또는 모든 요소를 통상적으로 포함한다. 도 10에 표시된 논리적 연결은 LAN(1045) 및 WAN(1049)을 포함하지만, 다른 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크, 인트라넷, 인터넷, 및 클라우드 컴퓨팅 리소스에서 흔한 것이다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(1002)는 네트워크 인터페이스또는 어댑터(1037)를 통해 LAN(1045)에 연결된다. WAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(1002)는 인터넷과 같은 WAN(1049) 통한 통신을 수립하기 위한 모뎀(1005) 또는 기타 수단을 통상적으로 포함한다. 내부적 또는 외부적일 수 있는 모뎀(1005)은 사용자 입력 인터페이스(1036), 또는 다른 적절한 메카니즘을 통해 시스템 버스(1021)에 연결될 수 있다. 네트워크화된 환경에서, 컴퓨터(1002)와 관련하여 도시된 프로그램 모듈, 또는 그 일부는 원격 메모리 저장 디바이스에 저장될 수 있다. 제한되는 것이 아니라 예로서, 도 10은 원격 응용 프로그램(1048)을 메모리 디바이스(1047) 상에 존재하는 것으로서 도시한다. 도시된 네트워크 접속이 예시적이며, 컴퓨터들 간의 통신 링크를 확립하는 다른 수단이 사용될 수 있음을 이해할 것이다.
일부 측면에서, 기타 프로그램(1027)은 상기한 바와 같은 기능을 포함하는 TrEE 타겟화 구성요소 또는 애플리케이션(1065)을 포함할 수 있다. 일부 경우에, TrEE 타겟화 애플리케이션(1065)은 프로세스들(300, 400, 500, 800 및/또는 900)의 일부 또는 모든 동작을 실행할 수 있다.
앞선 부분들에서 설명된 프로세스들, 방법들 및 알고리즘들 각각은 하나 이상의 컴퓨터 또는 컴퓨터 프로세서에 의해 실행되는 코드 모듈들에 의해 구현될 수 있고, 또한 이들에 의해 완전하게 또는 부분적으로 자동화될 수 있다. 코드 모듈들은 하드 드라이브, 고체 상태 메모리, 광학 디스크, 등과 같은 임의의 유형의 비일시적 컴퓨터 판독 가능 매체 또는 컴퓨터 저장 디바이스에 저장될 수 있다. 프로세스들 및 알고리즘들은 애플리케이션 특정 회로에서 부분적으로 또는 전체적으로 구현될 수 있다. 개시된 프로세스들 및 프로세스 단계들의 결과는 예를 들어 휘발성 또는 비휘발성 저장 장치와 같은 임의의 유형의 비일시적 컴퓨터 저장 장치에 지속적으로 또는 그와는 다르게 저장될 수 있다. 상기한 다양한 특징 및 프로세스는 서로 독립적으로 사용될 수 있거나, 다양한 방식으로 결합될 수 있다. 모든 가능한 결합 및 서브 결합은 본 발명의 범위 내에 들어가도록 의도된다. 또한, 일부 구현예에서는 소정의 방법들 또는 프로세스 블록들이 생략될 수 있다. 본 명세서에서 설명된 방법들 및 프로세스들은 또한 임의의 특정 시퀀스로 제한되지 않으며, 그에 관련된 블록들 또는 상태들은 적절한 다른 시퀀스로 수행될 수 있다. 예컨대, 설명된 블록들 또는 상태들은 구체적으로 개시된 것 이외의 순서로 수행될 수 있고, 또는 다수의 블록들 또는 상태들은 단일 블록 또는 상태로 결합될 수 있다. 예시적인 블록들 또는 상태들은 직렬로, 병렬로 또는 일부 다른 방식으로 수행될 수 있다. 블록들 또는 상태들은 개시된 실시예들로부터 추가되거나 제거될 수 있다. 본 명세서에서 설명된 예시적인 시스템들 및 구성요소들은 설명된 것과는 상이하게 구성될 수 있다. 예컨대, 개시된 실시예들과 비교하여 요소들이 추가되거나 제거되거나 재배열될 수 있다.
또한, 다양한 항목들이 사용되는 동안에 메모리 또는 저장 장치에 저장되는 것으로 도시되며, 이들 항목 또는 그 부분들이 메모리 관리 및 데이터 무결성을 위해 메모리와 다른 저장 디바이스들 사이에서 전송될 수 있음을 이해할 것이다. 이와 달리, 다른 실시예들에서 소프트웨어 모듈들 및/또는 시스템들 중 일부 또는 전부는 다른 디바이스 상의 메모리에서 실행될 수 있고, 또한 컴퓨터간 통신을 통해 도시된 컴퓨팅 시스템들과 통신할 수 있다. 또한, 일부 실시예에서, 시스템들 및/또는 모듈들의 일부 또는 전부는 다른 방식으로, 예를 들어 하나 이상의 ASIC, 표준 집적 회로, 컨트롤러(예를 들면, 적절한 인스트럭션을 실행함으로써, 마이크로 컨트롤러 및/또는 임베디드 컨트롤러를 포함함), FPGA, CPLD(Complex Programmable Logic Device), 등을 포함하지만 이로 제한되지 않는 하드웨어 및/또는 펌웨어에서 적어도 부분적으로 구현되거나 제공될 수 있다. 또한, 모듈들, 시스템들 및 데이터 구조들의 일부 또는 전부는, 하드디스크, 메모리, 네트워크, 또는 적절한 드라이브에 의해 또는 적절한 접속을 통해 판독되는 휴대용 매체 물품 등의 컴퓨터 판독 가능 매체 상에 (예를 들면, 소프트웨어 인스트럭션 또는 구조화된 데이터로서) 저장될 수 있다. 본 명세서 및 청구범위의 목적을 위해, "컴퓨터 판독 가능 저장 매체"라는 문구 및 그 변형은 파형, 신호, 및/또는 다른 일시적 및/또는 무형의 통신 매체를 포함하지 않는다. 또한, 시스템들, 모듈들 및 데이터 구조들은 무선 기반 및 유선/케이블 기반 매체를 포함해서 다양한 컴퓨터 판독 가능 전송 매체 상에서 생성된 데이터 신호로서(예를 들면, 반송파 또는 다른 아날로그 또는 디지털 전파 신호의 일부로서) 전송될 수 있으며, 다양한 형태를 (예를 들면, 단일 또는 다중화된 아날로그 신호의 일부로서, 또는 다수의 개별 디지털 패킷 또는 프레임으로서) 취할 수 있다. 이러한 컴퓨터 프로그램 제품은 다른 실시예에서 다른 형태를 취할 수도 있다. 따라서, 본 발명은 다른 컴퓨터 시스템 구성으로 실시될 수 있다.
본 명세서에서 사용되는 조건 언어, 예를 들어 "can", "could", "might", "may", "e.g." 등은, 특별히 달리 명시되지 않는 한, 또는 사용된 문맥 내에서 달리 이해되지 않는 한, 소정의 실시예가 소정의 특징, 요소 및/또는 단계를 포함하지만 다른 실시예들은 이를 포함하지 않는다는 것을 일반적으로 전달하고자 하는 것이다. 따라서, 이러한 조건 언어는 특징, 요소 및/또는 단계가 하나 이상의 실시예를 위해 임의의 방식으로 요구된다는 것, 혹은 작성자 입력 또는 프롬프팅을 갖고서 또는 갖지 않고서, 이들 특징, 요소 및/또는 단계가 임의의 특정 실시예에 포함되거나 임의의 특정 실시예에서 수행되어야 하는지를 결정하기 위한 로직을 하나 이상의 실시예가 반드시 포함한다는 것을 일반적으로 암시하고자 하는 것은 아니다. "comprising", "including", "having" 등의 용어는 동의어이고 개방형 방식으로 포괄적으로 사용되며, 추가적인 요소, 특징, 행동, 동작, 등을 배제하지 않는다. 또한, "or"이라는 용어는 포괄적인 의미로 사용되므로(배타적인 의미로는 사용되지 않음), 예를 들어 요소들의 리스트를 연결하기 위해 사용될 때에 "or"이라는 용어는 리스트에서의 요소들 중 하나, 일부 또는 전부를 의미한다.
소정의 실시예들이 설명되었지만, 이들 실시예는 단지 예로서 제시되었으며 본 명세서에서 개시된 본 발명의 범위를 제한하고자 하는 것이 아니다. 따라서, 전술한 설명에서의 어떤 것도 임의의 특정한 특징, 특성, 단계, 모듈 또는 블록이 필수적이거나 필요 불가결하다는 것을 암시하고자 하는 것은 아니다. 실제로, 본 명세에서 설명된 새로운 방법들 및 시스템들은 다양한 다른 형태로 구현될 수 있으며; 또한, 본 명세서에서 설명된 방법들 및 시스템들의 형태에서의 다양한 생략, 대체 및 변경은 본 명세서에서 개시된 본 발명의 사상을 벗어나지 않고서 이루어질 수 있다. 첨부하는 청구범위 및 그 등가물은 본 명세서에서 개시된 본 발명의 범위 및 사상 내에 있는 이러한 형태 또는 수정을 포함하도록 의도된다.

Claims (20)

  1. 컴퓨팅 시스템으로서,
    프로세서와,
    상기 프로세서에 통신 가능하게 결합되고 인스트럭션이 저장된 메모리를 포함하되,
    상기 인스트럭션은 상기 프로세서에 의한 실행시에, 상기 컴퓨팅 시스템으로 하여금 요청자와 비밀을 저장하는 시스템 사이의 중개자 역할을 하는 타겟팅 프로토콜 헤드를 구현하게 하고,
    상기 타겟팅 프로토콜 헤드는,
    중첩(nested) TrEE(trusted execution environment)와 연관된 상기 요청자로부터의 보호 데이터에 대한 요청, 보안 커널의 증명문(an attestation statement) 및 키 인증문을 수신하는 동작 - 상기 중첩 TrEE는 상기 보안 커널의 상부에서 실행중인 트러스트릿(a trustlet)을 포함하고, 상기 키 인증문은 트러스트릿 공개 암호화키 및 트러스트릿 ID를 바인딩함 - 과,
    상기 요청에 응답하여 상기 비밀을 저장하는 상기 시스템으로부터 상기 보호 데이터를 검색하는 동작과,
    상기 보호 데이터를 상기 트러스트릿 공개 암호화키로 암호화하는 동작과,
    상기 암호화된 보호 데이터를 상기 요청자에게 전송하는 동작을 수행하도록 구성되며,
    상기 트러스트릿 ID는 트러스트릿 유형을 포함하거나 상기 트러스트릿 유형 및 세션 ID를 포함하는
    컴퓨팅 시스템.
  2. 제 1 항에 있어서,
    상기 키 인증문은 상기 보안 커널에 의해 서명키를 사용하여 생성되는
    컴퓨팅 시스템.
  3. 제 2 항에 있어서,
    상기 서명키는 상기 트러스트릿에 의해 생성된 공개키 개인키 쌍의 상기 트러스트릿 공개 암호화키를 인증하는
    컴퓨팅 시스템.
  4. 삭제
  5. 제 1 항에 있어서,
    상기 키 인증문은 상기 보안 커널에 의해 서명키를 사용하여 생성되고, 상기 트러스트릿 공개 암호화키 및 상기 트러스트릿 유형 및 상기 세션 ID를 바인딩하는
    컴퓨팅 시스템.
  6. 제 1 항에 있어서,
    상기 인스트럭션은, 상기 프로세서에 의한 실행시에, 상기 컴퓨팅 시스템으로 하여금,
    상기 트러스트릿 ID를 승인된 트러스트릿 ID들의 리스트와 비교하는 동작; 및
    상기 트러스트릿 ID가 상기 승인된 트러스트릿 ID들의 리스트와 연관되는 경우에만, 상기 보호 데이터를 상기 트러스트릿 공개 암호화키로 암호화하는 동작을 수행하게 하는
    컴퓨팅 시스템.
  7. 외부 신뢰 실행 환경(TrEE)의 상부에서 실행중인 트러스트릿을 포함하는 중첩 TrEE에 보호 데이터를 전달하는 방법 - 상기 트러스트릿 및 상기 외부 TrEE 양쪽은 비신뢰 요청자와 연관되어 있음 - 으로서,
    요청자와 비밀을 저장하는 시스템 사이의 중개자 역할을 하는 타겟화 프로토콜 헤드에 의해, 상기 중첩 TrEE와 연관된 요청자로부터의 보호 데이터에 대한 요청, 상기 외부 TrEE의 진술문 및 키 인증문을 수신하는 단계 - 상기 키 인증문은 트러스트릿 공개 암호화키 및 트러스트릿 ID를 바인딩함 - 와;
    상기 타겟화 프로토콜 헤드에 의해, 상기 요청을 수신하는 것에 응답하여 상기 비밀을 저장하는 상기 시스템으로부터 상기 보호 데이터를 검색하는 단계와;
    상기 보호 데이터를 상기 트러스트릿 공개 암호화키로 암호화하는 단계와;
    암호화된 보호 데이터를 요청자에게 전송하는 단계를 포함하며,
    상기 트러스트릿 ID는 트러스트릿 유형을 포함하거나 상기 트러스트릿 유형 및 세션 ID를 포함하는
    방법.
  8. 제 7 항에 있어서,
    상기 키 인증문은 상기 외부 TrEE에 의해 서명키를 사용하여 생성되는
    방법.
  9. 제 8 항에 있어서,
    상기 서명키는 상기 트러스트릿에 의해 생성된 공개키 개인키 쌍의 트러스트릿 공개 암호화키를 인증하는
    방법.
  10. 삭제
  11. 제 7 항에 있어서,
    상기 키 인증문은 상기 외부 TrEE에 의해 서명키를 사용하여 생성되고, 상기 트러스트릿 공개 암호화키 및 상기 트러스트릿 유형 및 상기 세션 ID를 바인딩하는
    방법.
  12. 제 7 항에 있어서,
    상기 타겟화 프로토콜 헤드에 의해, 상기 트러스트릿 ID를 승인된 트러스트릿 ID들의 리스트와 비교하는 단계와;
    상기 타겟화 프로토콜 헤드에 의해, 상기 트러스트릿 ID가 승인된 트러스트릿 ID들의 리스트와 연관되는 경우에만 보호 데이터를 상기 트러스트릿 공개 암호화키로 암호화하는 단계를 더 포함하는
    방법.
  13. 제 7 항에 있어서,
    상기 요청자에 의해 상기 암호화된 보호 데이터를 상기 트러스트릿에 전송하는 단계와;
    상기 트러스트릿에 의해 상기 암호화된 보호 데이터를 상기 트러스트릿 공개 암호화키에 대응하는 트러스트릿 개인 암호화키를 사용하여 복호화하는 단계를 더 포하는
    방법.
  14. 제 7 항에 있어서,
    상기 보호 데이터는 래핑키(wrapping key)를 포함하는
    방법.
  15. 프로세서 기반 시스템으로 하여금 보안 커널의 상부에서 실행되는 트러스트릿을 포함하는 중첩 신뢰 실행 환경(TrEE)에 보호 데이터를 전달하기 위한 동작의 수행을 가능하게 하는 인스트럭션을 포함하는 컴퓨터 판독 가능 저장 장치로서,
    상기 동작은,
    요청자와 비밀을 저장하는 시스템 사이의 중개자 역할을 하는 타겟팅 프로토콜 헤드에 의해, 중첩 TrEE와 연관된 상기 요청자로부터의 보호 데이터에 대한 요청, 보안 커널의 증명문 및 키 인증문을 수신 - 상기 키 인증문은 트러스트릿 공개 암호화키 및 트러스트릿 ID를 바인딩함 - 하는 것;
    상기 타겟팅 프로토콜에 의해, 상기 요청을 수신하는 것에 응답하여 상기 비밀을 저장하는 상기 시스템으로부터 상기 보호 데이터를 검색하는 것;
    상기 보호 데이터를 상기 트러스트릿 공개 암호화키로 암호화하는 것;
    상기 암호화된 보호 데이터를 상기 요청자에게 전송하게 하는 것을 포함하며,
    상기 트러스트릿 ID는 트러스트릿 유형을 포함하거나 상기 트러스트릿 유형 및 세션 ID를 포함하는
    컴퓨터 판독 가능 저장 장치.
  16. 제 15 항에 있어서,
    상기 키 인증문은 상기 보안 커널에 의해 서명키를 사용하여 생성되는
    컴퓨터 판독 가능 저장 장치.
  17. 제 16 항에 있어서,
    상기 서명키는 상기 트러스트릿에 의해 생성된 공개키 개인키 쌍의 상기 트러스트릿 공개 암호화키를 인증하는
    컴퓨터 판독 가능 저장 장치.
  18. 삭제
  19. 제 15 항에 있어서,
    상기 키 인증문은 상기 보안 커널에 의해 서명키를 사용하여 생성되고, 상기 트러스트릿 공개 암호화키 및 상기 트러스트릿 유형 및 상기 세션 ID를 바인딩하는
    컴퓨터 판독 가능 저장 장치.
  20. 제 15 항에 있어서,
    상기 동작은,
    상기 트러스트릿 ID를 승인된 트러스트릿 ID들의 리스트와 비교하는 것; 및
    상기 트러스트릿 ID가 상기 승인된 트러스트릿 ID들의 리스트와 연관되는 경우에만, 상기 보호 데이터를 상기 트러스트릿 공개 암호화키로 암호화하는 것을 더 포함하는
    컴퓨터 판독 가능 저장 장치.
KR1020197022013A 2017-01-26 2017-12-20 서명키를 사용한 신뢰 실행 환경의 어드레싱 기법 KR102489790B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/417,042 US10419402B2 (en) 2017-01-26 2017-01-26 Addressing a trusted execution environment using signing key
US15/417,042 2017-01-26
PCT/US2017/067461 WO2018140170A1 (en) 2017-01-26 2017-12-20 Addressing a trusted execution environment using signing key

Publications (2)

Publication Number Publication Date
KR20190108580A KR20190108580A (ko) 2019-09-24
KR102489790B1 true KR102489790B1 (ko) 2023-01-17

Family

ID=60991591

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197022013A KR102489790B1 (ko) 2017-01-26 2017-12-20 서명키를 사용한 신뢰 실행 환경의 어드레싱 기법

Country Status (18)

Country Link
US (1) US10419402B2 (ko)
EP (1) EP3574443A1 (ko)
JP (1) JP2020506611A (ko)
KR (1) KR102489790B1 (ko)
CN (1) CN110249336B (ko)
AU (1) AU2017396531B2 (ko)
BR (1) BR112019013584A2 (ko)
CA (1) CA3048895A1 (ko)
CL (1) CL2019002026A1 (ko)
CO (1) CO2019007875A2 (ko)
IL (1) IL268005B (ko)
MX (1) MX2019008693A (ko)
MY (1) MY201812A (ko)
PH (1) PH12019550119A1 (ko)
RU (1) RU2756040C2 (ko)
SG (1) SG11201905458WA (ko)
WO (1) WO2018140170A1 (ko)
ZA (1) ZA201903702B (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR112015026372B8 (pt) * 2013-04-18 2024-02-15 Facecon Co Ltd Dispositivo de comunicação que reforça a segurança para um arquivo armazenado em uma unidade virtual
US10897459B2 (en) 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using encryption key
US10972265B2 (en) * 2017-01-26 2021-04-06 Microsoft Technology Licensing, Llc Addressing a trusted execution environment
US10897360B2 (en) 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using clean room provisioning
US10515077B2 (en) * 2017-06-14 2019-12-24 Microsoft Technology Licensing, Llc Execution optimization of database statements involving encrypted data
US10771439B2 (en) * 2017-06-28 2020-09-08 Microsoft Technology Licensing, Llc Shielded networks for virtual machines
CN112292678A (zh) * 2019-01-04 2021-01-29 百度时代网络技术(北京)有限公司 用于验证将要由主机系统的数据处理加速器执行的内核对象的方法与系统
EP3610405B1 (en) 2019-03-26 2021-07-21 Advanced New Technologies Co., Ltd. Program execution and data proof scheme using multiple key pair signatures
US11610012B1 (en) * 2019-11-26 2023-03-21 Gobeep, Inc. Systems and processes for providing secure client controlled and managed exchange of data between parties
CN113254940B (zh) * 2021-05-20 2023-01-17 浙江网商银行股份有限公司 基于遥感数据的数据处理方法及装置
CN114036527B (zh) * 2021-11-04 2023-01-31 云海链控股股份有限公司 一种代码注入方法、代码运行端、代码注入端及相关设备
CN115065487B (zh) * 2022-08-17 2022-12-09 北京锘崴信息科技有限公司 隐私保护云计算方法、保护金融隐私数据的云计算方法
CN117992993A (zh) * 2024-04-07 2024-05-07 蓝象智联(杭州)科技有限公司 基于可信执行环境的数据管控方法和系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150318986A1 (en) * 2014-05-05 2015-11-05 Microsoft Corporation Secure Transport of Encrypted Virtual Machines with Continuous Owner Access

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437771B2 (en) * 2004-04-19 2008-10-14 Woodcock Washburn Llp Rendering protected digital content within a network of computing devices or the like
US8059820B2 (en) * 2007-10-11 2011-11-15 Microsoft Corporation Multi-factor content protection
CN101159556B (zh) * 2007-11-09 2011-01-26 清华大学 基于组密钥服务器的共享加密文件系统中的密钥管理方法
WO2012122994A1 (en) * 2011-03-11 2012-09-20 Kreft Heinz Off-line transfer of electronic tokens between peer-devices
EP2717186A4 (en) * 2011-05-25 2015-05-13 Panasonic Ip Man Co Ltd INFORMATION PROCESSING DEVICE AND INFORMATION PROCESSING METHOD
US9413538B2 (en) * 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
EP2820587B1 (de) * 2012-02-28 2020-04-08 Giesecke+Devrient Mobile Security GmbH Verfahren zur computer-zugangskontrolle mittels mobilem endgerät
EP2680487B1 (en) * 2012-06-29 2019-04-10 Orange Secured cloud data storage, distribution and restoration among multiple devices of a user
US9064109B2 (en) * 2012-12-20 2015-06-23 Intel Corporation Privacy enhanced key management for a web service provider using a converged security engine
EP2759955A1 (en) * 2013-01-28 2014-07-30 ST-Ericsson SA Secure backup and restore of protected storage
EP2974120B1 (en) * 2013-03-14 2017-09-27 Intel Corporation Trusted data processing in the public cloud
EP3036680B1 (en) * 2013-08-21 2018-07-18 Intel Corporation Processing data privately in the cloud
US9633210B2 (en) * 2013-09-13 2017-04-25 Microsoft Technology Licensing, Llc Keying infrastructure
CN105493097B (zh) * 2013-09-27 2019-08-27 英特尔公司 用于远程存储的数据的保护方案
EP2887607A1 (en) * 2013-12-23 2015-06-24 Orange Migration of assets of a trusted execution environment
GB201408539D0 (en) * 2014-05-14 2014-06-25 Mastercard International Inc Improvements in mobile payment systems
US9775029B2 (en) * 2014-08-22 2017-09-26 Visa International Service Association Embedding cloud-based functionalities in a communication device
US9621547B2 (en) * 2014-12-22 2017-04-11 Mcafee, Inc. Trust establishment between a trusted execution environment and peripheral devices
CN105812332A (zh) * 2014-12-31 2016-07-27 北京握奇智能科技有限公司 数据保护方法
US10073985B2 (en) * 2015-02-27 2018-09-11 Samsung Electronics Co., Ltd. Apparatus and method for trusted execution environment file protection
US9722775B2 (en) * 2015-02-27 2017-08-01 Verizon Patent And Licensing Inc. Network services via trusted execution environment
CN104899506B (zh) * 2015-05-08 2018-01-12 深圳市雪球科技有限公司 基于可信执行环境中虚拟安全元件的安全系统实现方法
WO2017004447A1 (en) * 2015-06-30 2017-01-05 Activevideo Networks, Inc. Remotely managed trusted execution environment for digital-rights management in a distributed network with thin clients
CN105260663B (zh) * 2015-09-15 2017-12-01 中国科学院信息工程研究所 一种基于TrustZone技术的安全存储服务系统及方法
CN105429760B (zh) * 2015-12-01 2018-12-14 神州融安科技(北京)有限公司 一种基于tee的数字证书的身份验证方法及系统
CN105978917B (zh) * 2016-07-19 2019-05-10 恒宝股份有限公司 一种用于可信应用安全认证的系统和方法
CN106230584B (zh) * 2016-07-21 2019-09-03 北京可信华泰信息技术有限公司 一种可信平台控制模块的密钥迁移方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150318986A1 (en) * 2014-05-05 2015-11-05 Microsoft Corporation Secure Transport of Encrypted Virtual Machines with Continuous Owner Access

Also Published As

Publication number Publication date
US10419402B2 (en) 2019-09-17
SG11201905458WA (en) 2019-08-27
CA3048895A1 (en) 2018-08-02
US20180212932A1 (en) 2018-07-26
WO2018140170A1 (en) 2018-08-02
CO2019007875A2 (es) 2019-07-31
AU2017396531B2 (en) 2021-11-25
KR20190108580A (ko) 2019-09-24
IL268005A (en) 2019-09-26
RU2019126631A3 (ko) 2021-04-08
IL268005B (en) 2022-03-01
ZA201903702B (en) 2020-10-28
CN110249336A (zh) 2019-09-17
RU2756040C2 (ru) 2021-09-24
PH12019550119A1 (en) 2020-03-09
CL2019002026A1 (es) 2019-12-13
MY201812A (en) 2024-03-19
MX2019008693A (es) 2019-09-11
EP3574443A1 (en) 2019-12-04
AU2017396531A1 (en) 2019-07-04
JP2020506611A (ja) 2020-02-27
BR112019013584A2 (pt) 2020-01-07
CN110249336B (zh) 2023-05-30
RU2019126631A (ru) 2021-02-26
NZ754540A (en) 2023-08-25

Similar Documents

Publication Publication Date Title
KR102443857B1 (ko) 암호화키를 사용한 신뢰 실행 환경의 어드레싱 기법
KR102489790B1 (ko) 서명키를 사용한 신뢰 실행 환경의 어드레싱 기법
CN110214440B (zh) 计算系统,传送受保护数据的方法和可读存储介质
US20200293698A1 (en) Systems and methods for using extended hardware security modules
CN110235134B (zh) 使用洁净室供应来寻址可信执行环境
AU2016218981A1 (en) Confidential communication management
CA3048894C (en) Addressing a trusted execution environment using encryption key
CA3048895C (en) Addressing a trusted execution environment using signing key
NZ754540B2 (en) Addressing a trusted execution environment using signing key

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant