KR101801567B1 - 권한 관리된 콘텐츠의 정책에 기반한 신뢰성 있는 검사 - Google Patents

권한 관리된 콘텐츠의 정책에 기반한 신뢰성 있는 검사 Download PDF

Info

Publication number
KR101801567B1
KR101801567B1 KR1020167019458A KR20167019458A KR101801567B1 KR 101801567 B1 KR101801567 B1 KR 101801567B1 KR 1020167019458 A KR1020167019458 A KR 1020167019458A KR 20167019458 A KR20167019458 A KR 20167019458A KR 101801567 B1 KR101801567 B1 KR 101801567B1
Authority
KR
South Korea
Prior art keywords
enclave
content
node
secure
secure enclave
Prior art date
Application number
KR1020167019458A
Other languages
English (en)
Other versions
KR20160101108A (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 KR20160101108A publication Critical patent/KR20160101108A/ko
Application granted granted Critical
Publication of KR101801567B1 publication Critical patent/KR101801567B1/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1062Editing
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • G06F2221/0724
    • 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)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Bioethics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

실시예는 적어도 하나의 프로세서에 의해 실행된 방법을 포함하며, 이 방법은 제 1 및 제 2 보안 엔클레이브를 초기화하는 단계 - 각각의 보안 엔클레이브는 제 1 및 제 2 보안 엔클레이브 외부에서 실행하는 소프트웨어가 제 1 및 제 2 보안 엔클레이브 내부의 소프트웨어 및 데이터에 액세스하는 것을 방지하는 신뢰성 있는 소프트웨어 실행 환경을 포함함 - 와, 제 1 보안 엔클레이브가 (a)(i) 정책을 검사하고, (a)(ii) 정책을 검사하는 것에 응답하여 제 2 보안 엔클레이브를 인증하고, (a)(iii) 제 2 보안 엔클레이브를 인증하는 것에 응답하여 암호화된 콘텐츠를 제 2 보안 엔클레이브로 전달하는 단계와, 제 2 보안 엔클레이브가 (b)(i) 암호화된 콘텐츠를 복호화하여 복호화된 콘텐츠를 생성하고, (b)(ii) 복호화된 콘텐츠를 검사하는 단계를 포함한다. 본 출원에서 다른 실시예가 개시된다.

Description

권한 관리된 콘텐츠의 정책에 기반한 신뢰성 있는 검사{POLICY-BASED TRUSTED INSPECTION OF RIGHTS MANAGED CONTENT}
본 실시예는 신뢰성 있는 컴퓨팅에 관한 것이다.
디지털 정보의 보안은 점점 더 중요해지고 있는데, 특히 정보가 상업적인 가치를 가질 때는 기밀성을 띄거나 민감한 주제와 관련된다. 일부 사례에서, 디지털 정보는 멀웨어로 가득한 클라이언트 디바이스에서 프로비저닝될 수 있다. 검사하지 않고 놔둔다면, 그러한 멀웨어는 클라이언트 디바이스 상의 디지털 정보의 보안 및/또는 무결성에 손상을 입힐 수 있다. 예를 들면, 멀웨어는 클라이언트 자체로부터(예를 들면, 클라이언트의 저장소 또는 메모리로부터), 클라이언트로 가는 정보 분배 경로로부터, 및/또는 클라이언트의 사용자가 검토할 수 있게 해주거나 아니면 다른 방식으로 디지털 정보와 상호작용할 수 있게 해주는 경로로부터 디지털 정보에 액세스하고 그리고/또는 디지털 정보를 취득하려 시도할 수 있다. 그러한 영역 중 어느 영역에서 성공적인 멀웨어 공격은 디지털 정보의 보안에 손상을 입힐 수 있으며, 인가되지 않은 당사자에 의한 정보의 액세스 및/또는 수정을 초래할 수 있다.
디지털 정보의 보안을 증대하기 위해, 기업 권한 관리(enterprise rights management, ERM) 및 다른 제품이 개발되었다. 많은 사례에서, ERM 제품은 정보의 무결성 및 비밀성을 유지하기 위한 메커니즘을 제공하고, 정보에 액세스하는 것을 관리하는 하나 이상의 정책을 집행하고, 그리고/또는 클라이언트상의 디지털 정보의 사용을 추적하는 로깅 정책을 집행함으로써 민감한 디지털 정보(예를 들면, 문서, 및 전자 메일 등)의 분배를 보호하도록 설계된다.
기존의 ERM 제품은 유용하지만, 이들 제품은 디지털 정보가 클라이언트에 프로비저닝되고, 저장되고 그리고/또는 사용될 때 디지털 정보를 취득하기 위해 기존의 ERM 제품에서 하나 이상의 취약점을 악용할 수 있는 멀웨어로부터의 보안 문제에 끊임없이 직면하고 있다. 디지털 정보의 인가된 사용자는 또한 사용자가 불편한 것으로 보일 수 있는 ERM 제품에 부여된 보호수단을 파괴하려 시도할 수 있다. 따라서, 디지털 정보가 클라이언트 플랫폼상에 프로비저닝되고, 저장되고 그리고/또는 사용될 때 디지털 정보의 보안을 개선하는 기술이 필요하다.
본 발명의 실시예의 특징 및 장점은 첨부의 청구범위와, 하나 이상의 예시적인 실시예의 다음과 같은 상세한 설명, 및 이에 대응하는 도면으로부터 자명해질 것이다.
도 1은 본 발명의 실시예에서 보안 시스템을 도시한다.
도 2는 본 발명의 실시예에서 정책 기반의 검사를 위한 프로세스를 예시한다.
도 3은 본 개시와 일치하는 클라이언트 프로비저닝 시스템의 예시적인 시스템 아키텍처의 블록도를 예시한다.
도 4는 본 개시와 일치하는 예시적인 프로비저닝 방법의 메시지 흐름을 예시한다.
도 5는 본 개시와 일치하는 클라이언트 프로비저닝 방법에 따라서 수행될 수 있는 예시적인 클라이언트 동작의 흐름도이다.
도 6은 본 개시와 일치하는 클라이언트 프로비저닝 방법에 따라서 수행될 수 있는 예시적인 서버 동작의 흐름도이다.
도 7은 본 개시와 일치하는 클라이언트와 서버 사이의 보안 통신 채널(세션)의 설정과 관련하여 수행될 수 있는 예시적인 클라이언트 동작의 흐름도이다.
도 8은 본 발명의 실시예와 함께 사용하기 위한 시스템을 포함하는 도면이다.
아래의 설명에서, 많은 특정 세부사항이 설명되지만 본 발명의 실시예는 이러한 특정 세부사항 없이도 실시될 수 있다. 공지된 회로, 구조체 및 기술은 본 설명의 이해를 방해하지 않도록 하기 위해 상세하게 도시되지 않았다. "실시예", "다양한 실시예" 등은 그렇게 설명된 실시예가 특별한 특징, 구조, 또는 특성을 포함할 수 있지만, 반드시 모든 실시예가 그 특별한 특징, 구조, 또는 특성을 포함하지는 않는다는 것을 시사한다. 일부 실시예는 다른 실시예에 대해 설명된 특징의 일부 또는 전부를 가지거나 아무것도 갖지 않을 수 있다. "제 1", "제 2", "제 3" 등은 일반적인 개체를 설명하며 같은 개체의 여러 사례가 언급되고 있다는 것을 시사한다. 그러한 형용사는 그렇게 설명된 개체가 시간적으로나 공간적으로나 주어진 순서대로, 순위대로, 또는 임의의 다른 방식대로 되어야 한다는 것을 암시하지는 않는다.
앞에서 언급한 바와 같이, ERM 기술은 보안 컴퓨팅을 장려하는 것을 목표로 한다. 그러나, ERM, 디지털 저작권 관리(Digital Rights Management), 및 암호화된 소프트웨어 해법과 같은 기술은 멀웨어 방지 검사 기술에서 시스템을 공격에 취약하게 내버려 둔다는 문제를 만든다. 일 예는 휴대용 문서 포맷(portable document format, PDF)(국제 표준화 기구(ISO)에 의해 유지되는 전자 문서 교환용 공개용 표준) 문서 및 PDF 문서용 "보강된(hardened)" 렌더러(renderer)와 관계가 있다. 렌더러는 보호되거나 보안되며 쉽게 검사할 수 없기 때문에 "강화"된다(예를 들면, 렌더러는 신뢰성 있는 실행 기술(Trusted Execution Technology, TXT) 또는 다른 보호된 환경 내부에 포함된다). ERM-보호된 암호화된 PDF 문서를 렌더링하기 위한 보강된 렌더러는 렌더러가 PDF 문서 내에 존재하거나 PDF 문서에 결합된 멀웨어에 의해 손상 받게 하는 스크립팅 취약점(scripting vulnerability)을 가질 수도 있다. 구체적으로 설명하면, PDF 문서는 암호화되고 (PDF 문서의 스크립트를 실행하는 스크립팅 엔진을 포함하는) PDF 렌더러는 강화되어 있기 때문에, 멀웨어 방지 기술은 PDF 문서에 대응하는 스크립트를 실행하기 전에 의심스러운 PDF 문서를 검사하는데 사용될 수 없다. 유사하게 소프트웨어를 이용한 해적 방지를 위한 노력은 때때로 크랙킹을 방지하기 위해 중요한 코드 부분을 암호화하는 것인데, 이는 만일 그 코드가 취약하거나 악성 코드이면 시스템은 취약성에 그대로 노출된다.
도 1은 본 발명의 실시예의 보안 시스템을 도시한다. 실시예는 (아래에서 추가로 논의되는 "보안 엔클레이브(secure enclave)"와 같은) 신뢰성 있는 실행 환경(110) 내부에서 강화된 애플리케이션(105)이 애플리케이션 프로그래밍 인터페이스(application programming interface, API)를 다른 애플리케이션에 이를 테면, 암호화된 콘텐츠(135)(예를 들면, 영화, 텔레비전 쇼, 노래, 및 책 등과 같은 비디오 또는 오디오 또는 텍스트 콘텐츠)의 검사를 복호화된 이후에 수행하는 검사 엔진(120)(예를 들면, 신뢰성 있는 바이러스 방지(anti-virus, AV) 엔진)에 제공하게 한다.
실시예는 애플리케이션(120)(예를 들면, AV 엔진이나 애플리케이션 또는 유틸리티)에 의한 검사가 허용되어야 하는지를 결정하는 정책 인프라스트럭처(125)를 사용한다. 만일 허용되어야 한다면, 정책(130)은 또한 어떤 엔티티 또는 엔티티들이 검사받게 해야 하는지를 지시할 수 있다. 이렇게 하는 것은 정책(130)이 기밀의 콘텐츠 소유자, 이를테면 기업의 정보 기술(information technology, IT) 부서 또는 프리미엄 콘텐츠 유통 업자에 의해 구성되게 해준다. 예를 들면, IT 부서는 AV 애플리케이션 X만이 콘텐츠 Y를 조사하기 위해 사용될 수 있지만 그 AV 애플리케이션 X 또는 Z가 콘텐츠 Q를 조사하기 위해 사용될 수 있다고 주장할 수 있다.
더 상세하게, 본 실시예는 네 개의 부분으로 구성된다.
첫 번째 부분은 한정하지 않고 예를 들면, 인텔® 보안 엔클레이브(Secure Enclave) (때로는 인텔® 소프트웨어 가이드 확장(Software Guard Extensions, 인텔® SGX라 지칭함)), 인텔® 관리 엔진(Management Engine, 인텔® ME) 등과 같은 입증 역량을 가진 신뢰성 있는 실행 환경(110)을 포함한다. 그러한 입증 역량은 예를 들면, 하나의 플랫폼상의 엔클레이브가 올바르게 인스턴트화되었다는 것을 원격 엔티티(또는 다른 엔클레이브)에게 입증하는 메커니즘을 포함할 수 있다.
두 번째 부분은 신뢰성 있는 실행 환경(110) 내에서 구동하며 정책(130)을 집행하는 정책 집행 엔진(126)을 포함하는(또는 정책 집행 엔진에 연결된), 암호화된 또는 난독화된(obfuscated) 콘텐츠(135) (예를 들면, 비디오, 오디오, 및/또는 텍스트 등)에 대해 동작하는 보강된 애플리케이션(105) (예를 들면, 윈도우즈® 미디어 플레이어(windows® media player)와 같은 영화용 플레이어, 또는 아도브® 리더(Adobe® Reader®)와 같은 문서 뷰어 등)를 포함한다.
세 번째 부분은 정책(130)을 생성하고 보강된 애플리케이션(105)에 전달할 수 있는 정책 인프라스트럭처(125)(예를 들면, 활성 디렉토리 권한 관리 서비스(Active Directory Rights Management Services, AD RMS), 윈도우즈® 권한 관리 서비스(Windows® Rights Management Services), 아도브® LiveCycleRights 관리 ES(Adobe® LiveCycleRights Management ES) 등)를 포함한다.
네 번째 부분은 신뢰성 있는 실행 환경(110) 내에서 구동하는 검사 엔진(120)(예를 들면, 바이러스, 스파이웨어, 웹 위협(web threat), 및 해커 공격 등에 대비하여 보호하는 맥아피® SaaS 엔드포인트 보호 스위트(McAfee® SaaS Endpoint Protection Suite)와 같은 AV 소프트웨어)을 포함한다.
일부 실시예는 네 개의 부분을 모두 포함하지만, 다른 실시예는 단지 네 부분 중 서브세트(예를 들면, 부분 1, 2 및 4)만의 여러 조합을 포함할 수 있다.
도 2는 본 발명의 정책 기반 검사를 위한 프로세스(200)를 예시한다.
실시예에서, 프로세스(200)가 시작하며(블록(205)) 보강된 애플리케이션은 보호된/암호화된 콘텐츠를 열고/복호화한다(블록(210)). 콘텐츠의 분석에 따라, 보강된 애플리케이션은 콘텐츠와 관련된 검사 정책을 취득한다(블록(215)). 정책은 보강된 애플리케이션과 동일한 플랫폼상에 (또는 보강된 애플리케이션으로부터 원거리에 있는 멀리 떨어져 위치한 곳에) 위치한 정책 데이터베이스와 같은 정책 인프라스트럭처로부터 검색되며(블록(220)), 만일 존재한다면, 무슨 검사 엔진이 보호된 콘텐츠를 검사하도록 허용되는지를 결정한다(블록(225). 정책은 조직에 특유할 수 있고(예를 들면, 모든 콘텐츠는 IT 승인 받은 바이러스 방지 엔진에 의해 검사될 수 있고), 콘텐츠 특유할 수 있다(예를 들면, 문서 X는 특정한 검사 엔진에 의해서만 검사될 수 있다) 등등.
실시예에서, 만일 콘텐츠의 검사가 허용되면, 보강된 애플리케이션은 검사 엔진의 식별정보를 결정하고(블록(230)) 검사 엔진이 승인되는지를 결정한다(블록(235)). 만일 승인되면, 보강된 애플리케이션(105)과 검사 엔진(120)은 서로 인증하여 서로와 신뢰성 있는 인터페이스(예를 들면, 세션 키 보호된 채널)을 생성한다(블록(240)). 정책(130)에 따라서 검사를 수행하도록 허용된 검사 엔진(120)에게 보호된 콘텐츠의 검사를 받게 하는 외부의 API가 노출된다(블록(245)). 그러면 검사 엔진(또는 일부 실시예에서는 검사 엔진들)은 콘텐츠를 분석할 수 있으며 이에 따라서 콘텐츠를 악성이라고 거절하거나 콘텐츠가 잠재적으로 위험할 수 있다고 자문하는 것과 같은 판단을 내릴 수 있다. 이후 프로세스는 종료한다(블록(255)). 만일 정책이 일반적으로 검사를 허가하지 않으면(226) 또는 해당하는 특정 검사 엔진으로 하여금 콘텐츠의 검사를 수행하도록 허가하지 않으면(236), 검사 엔진으로의 액세스가 거부된다(블록(250)).
그러므로 실시예는 콘텐츠를 검사하게 허가되는 엔티티를 여전히 제한하면서 보호된 콘텐츠가 충분히 검사받을 수 있게 한다. "제한하는 것"은 콘텐츠와 연관된 정책을 사용하는 것에 따른다. 이를 위해 일부 실시예는 인가되지 않은 에이전트에 의한 액세스를 방지하기 위해 정상적으로 보호되는 평문(cleartext) 및/또는 비보호 콘텐츠(예를 들면, 암호화되지 않은 비디오, 오디오, 및/또는 텍스트 콘텐츠)로의 정책 기반의 액세스를 사용한다. 그러한 실시예는 신뢰성 있는 실행 환경 내부에 거주하는 멀웨어에 관한 염려를 덜어주거나 줄여주며, 그럼으로써 기업, 소비자 등의 그와 같은 환경의 가치를 더 높여준다. 그러한 실시예는 예를 들면, 보호된 콘텐츠가 해를 입을 수 있기 전에 무엇을 알아볼 수 있거나 알아볼 수 없는지를 통제하기 위해 멀웨어 방지 후크 및 콘텐츠 보호 후크가 경쟁하는 "바닥치기 경쟁(race-to-the-bottom)" 방식에서 후크 포인트(hook point)를 실행 경로에 삽입하는 것에 관련되는 종래 방법을 개선한 것이다.
이제 특정 실시예에 관한 더 상세한 내용이 다루어진다.
실시예는 신뢰성 있는 실행 환경을 제공하기 위해 보안 엔클레이브를 사용한다. 예를 들면, 정책 인프라스트럭처(125), 보강된 애플리케이션(105), 및 검사 엔진(120)은 같은 또는 상이한 신뢰성 있는 환경에 포함될 수 있다. 보안 엔클레이브는 엔클레이브 외부에서 실행하는 소프트웨어가 엔클레이브 내부의 소프트웨어 및 데이터에 액세스하지 못하게 하는 신뢰성 있는 소프트웨어 실행 환경이다. 요소(125105120) 중 임의의 요소 또는 모든 요소는 하나 이상의 엔클레이브에 포함될 수 있다.
보안 엔클레이브의 여러 실시예는 예를 들면 2009년 11월 13일자로 출원한 "Method and Apparatus to Provide Secure Application Execution(보안 애플리케이션 실행을 제공하는 방법 및 장치)"라는 명칭의 미국 특허출원(제12/590,767호); 2009년 12월 22일자로 출원한 "Method and Apparatus to Provide Secure Application"이라는 명칭의 PCT 특허 출원(PCT/US2009/069212호); 2010년 12월 22일자로 출원한 "System and Method for Implementing a Trusted Dynamic Launch and Trusted Platform Module (TPM) Using Secure Enclaves(보안 엔클레이브를 이용하여 신뢰성 있는 다이나믹 런치 및 신뢰성 있는 플랫폼 모듈(TPM)을 구현하는 시스템 및 방법)"이라는 명칭의 미국 특허출원(제12/976,831호); 2013년 6월 4일자로 출원한 "Technologies For Hardening The Security Of Digital Information On Client Platforms(클라이언트 플랫폼에서 디지털 정보의 보안을 보강하는 기술)"이라는 명칭의 PCT 특허 출원(제 PCT/US2013/44158호); 2013년 6월 24일자로 이스라엘 텔아비브에서, The Second Workshop on Hardware and Architectural Support for Security and Privacy, In Conjunction with ISCA 40에서 제시된 "Using Innovative Instructions to Create Trustworthy Solutions(신뢰할 수 있는 해법을 창출하는 획기적 명령어의 사용" (저자 Matthew Hoekstra 등), "Innovative Instructions and Software Model for Isolated Execution(격리된 실행을 위한 획기적 명령어 및 소프트웨어 모델)" (저자 Frank Mckeen 등) 및 다른 논문에서 설명되어 있다. 따라서, 보안 엔클레이브의 동작에 관한 상세 내용은 본 명세서에서 전부 다루어지지 않는다. 이들 애플리케이션 및 논문은 본 명세서에서 일괄하여 "보안 엔클레이브 자료"라고 지칭된다.
보안 엔클레이브 자료에서 설명된 바와 같이, 보안 엔클레이브에는 보안 엔클레이브의 내장 프로세스의 가상 어드레스 공간이 새겨져 있다. 엔클레이브의 메모리 관리는 가상 어드레스의 관점에서 수행된다. 실시예에서, 엔클레이브 메모리 관리는 두 부분, 즉 어드레스 공간 할당 및 메모리 투입(memory commitment)으로 나누어진다. 어드레스 공간 할당은 엔클레이브가 사용할 수 있는 최대 범위의 어드레스의 사양이다. 어떠한 실제 자원도 이 구역에 투입되지 않는다. 메모리 투입은 할당된 어드레스 공간 내에 실제 메모리 자원을 (페이지로서) 할당하는 것이다. 이러한 두 단계의 기술은 엔클레이브로 하여금 메모리 사용을 융통성 있게 제어하게 해주며 엔클레이브 수요가 낮을 때 메모리 자원을 남용하지 않고 증가하게 해준다. 투입은 가상 페이지를 엔클레이브에 추가한다.
이와 같은 구분은 두 개의 명령어, CREATE와 EADD에서 반영된다. ECREATE는 엔클레이브에 의해 사용하기 위한 어드레스 범위를 할당한다. EADD는 범위에 드는 메모리 페이지를 엔클레이브에 투입한다. 오퍼레이팅 시스템은 별개의 할당 및 투입 동작을 지원할 수 있다. 예를 들면, 윈도우즈 API VirtualAlloc는 MEM_RESERVE(할당) 또는 MEM_COMMIT(투입)이라는 플래그 인수를 사용한다. OS는 이러한 분리를 지원하는 것이 요구되지 않지만, 이러한 분리가 존재함으로써 엔클레이브 내부의 메모리 관리를 더욱 융통성 있고 효과적으로 수행되게 할 수 있다.
일 실시예에서, 보안 엔클레이브는 엔클레이브가 구축되는 가상 어드레스 공간 범위의 바닥과 크기를 명시하는 ECREATE 명령어를 사용하여 생성된다. 메모리는 보안 엔클레이브가 봉인되기 전에 보안 엔클레이브에 추가된다. 엔클레이브의 생성 및 투입 프로세스는 예를 들면, 윈도우즈 API를 이용하여 가장 잘 예시되며 이는 다음과 같이 진행된다. 즉 (1) VirtualAlloc을 이용하여 프로세스에다 어드레스 공간 구역을 예약하여, MEM_RESERVE 플래그에 전달하고(이것은 실제로 임의의 물리 어드레스 또는 페이지 파일 저장소를 투입하지 않고 메모리의 구역을 예약하는 것임); (2) VirtualAlloc을 다시 호출함으로써 엔클레이브의 첫 페이지를 함께 투입 - 이때는 MEM_COMMIT 플래그임 - 하고; ECREATE 명령어를 사용하여 전술한 바와 동일한 어드레스 범위를 명시하는 초기 환경을 구축하고(즉, ECREATE는 보안 코드 및 데이터를 호스팅하기 위한 애플리케이션 내부에 가상 어드레스의 구역을 할당한다); 그리고 (4) 엔클레이브에 추가(즉 엔클레이브 페이지를 VirtualAlloc함)될 각각의 부가적인 페이지마다, EADD를 사용하여 새로운 페이지를 엔클레이브에 추가하고, EEXTEND를 사용하여 128바이트 페이지의 치수를 추가하고(EEXTEND는 EADD에서 추가된 코드 또는 데이터를 포함하는 엔클레이브의 치수를 갱신한다), 그리고 이러한 명령어를 전체 엔클레이브가 측정될 때까지 호출한다(예를 들면, 치수는 치수가 초기화될 때 엔클레이브 내 코드 및 데이터의 암호 해시를 포함할 수 있다). 만일 엔클레이브 페이지 세트의 인접한 세트가 한번 추가된다면, 전술한 단계들은 시스템 콜의 횟수를 최소화하기 위해 재정렬되고 최적화될 수 있다. 별개의 예약 및 투입 동작을 지원하지 않는 오퍼레이팅 시스템에서, 상기 VirtualAlloc은 예를 들어 간단한 malloc로 대체될 수 있으며, VirtualAlloc하는 나머지 호출은 삭제된다.
ECREATE 및 EADD 명령어는 추가된 페이지의 암호화 및 무결성을 보장할 수 있기 때문에, 논(non)-엔클레이브 소프트웨어는 메모리가 엔클레이브에 추가된 이후에 이러한 메모리를 초기화하는 것은 가능하지 않다. 런타임 시스템은 책임을 맡은 임의의 메모리를 완전 초기화한 다음에 EADD하여야 한다. 이것은 ECREATE를 호출하기 전일지라도 (즉 SECS가 ECREATE 이후 소프트웨어에 의해 수정될 수 없기 때문에) 통상적으로 런타임 시스템이 엔클레이브 이미지를 제자리에 구축하는 것을 필요로 한다. 일단 메모리가 초기화되고, 엔클레이브가 ECREATE되고 그의 메모리가 EADD되면, 메모리는 본 명세서에서 설명된 바와 같이 봉인되고 측정된다. 되풀이 하자면, 검사 엔진(120), 보강된 애플리케이션(105), 및/또는 정책 인프라스트럭처(125)는 전술한 바와 같이 각기 초기화되고, 봉인되고 측정될 수 있다.
일 실시예에서, 엔클레이브 내부에는 두 개의 데이터 구조체, 즉 보안 엔클레이브 제어 저장소(Enclave Control Store, SECS) 및 스레드 제어 구조체(Thread Control Structure, TCS)가 있다. SECS 및 TCS는 런타임 소프트웨어에 의해 사용되는 아키텍처적 정보 필드(architectural information field) 및 비아키텍처적 편의 필드(non-architectural convenience field)를 포함한다. 모든 편의 필드 및 소수의 아키텍처적 필드는 소프트웨어에 의해 초기화된다. 엔클레이브의 생성 동안, 엔클레이브에 필요한 코드 및 데이터는 평문 소스로부터 로딩될 수 있다. 생성 중에 암호화된 코드 및/또는 데이터를 직접 엔클레이브에 로딩하는 것은 가능하지 않다. 그러나, 암호화된 소스로부터의 코드 및/또는 데이터는 신뢰성 있는 로더(loader)를 먼저 엔클레이브에 로딩함으로써 엔클레이브에 설치될 수 있다. 일단 엔클레이브가 가동하면, 이러한 로더는 비밀 코드/데이터(예를 들면, 암호화된 텍스트, 오디오, 및/또는 비디오)를 엔클레이브에다 설치하기 위해 사용될 수 있다.
일단 SECS, 하나 이상의 TCS, 및 코드와 데이터가 EADD되면, EINIT 명령어에 의해 엔클레이브 생성이 완료된다. 이와 같은 명령어는 더 이상의 치수 정보가 치수 레지스터(measurement register, MR)(때때로 본 출원과 함께 계류 중인 출원에서는 "IR0"라고 지칭됨)에 기록되는 것을 중단한다. 다시 말해서, EINIT는 엔클레이브의 콘텐츠를 잠그고 엔클레이브 내부의 코드만이 같은 엔클레이브 내 데이터 구역에 액세스하는 것을 보장한다. EINIT 이후, 어떠한 추가 페이지도 엔클레이브에 추가될 수 없다.
신뢰성 없는 코드는 EENTER 명령어를 사용하여 엔클레이브 안으로 불러들여지며 엔클레이브는 신뢰성 없는 호출자를 EEXIT를 통해 다시 반환한다. 엔클레이브 엔트리상에서, 스택 포인터를 엔클레이브 내부의 스택 포인터로 전환하는 코드로 제어가 이관된다. 소프트웨어가 다시 바뀌어 되돌아 갈 때, 스택 포인터는 EEXIT 명령어를 실행한다.
그러므로, 일단 엔클레이브가 EINIT를 이용하여 엔클레이브가 생성되고 초기화되면, 엔클레이브 자체보다 높은 특권 레벨에서 동작하는 가상 머신 모니터, BIOS, 또는 오퍼레이팅 시스템과 같은 소프트웨어일지라도, 신뢰성 없는 소프트웨어로부터 엔클레이브의 메모리에 대해 시도된 액세스는 방지된다. 물리적인 관점에서 보면, 엔클레이브 데이터가 프로세서 패키지 내부의 레지스터, 캐시, 또는 다른 로직 블록 내에 상주하지만, 소프트웨어를 통한 인가되지 않은 액세스는 CPU 로직에 의해 방지된다. 플랫폼 메모리에 기록될 엔클레이브 데이터가 온-패키지 캐시를 떠날 때마다, 이 데이터는 자동으로 암호화되며 그의 무결성이 보호된다. 이렇게 함으로써 악의적인 개개인이 메모리 프로브 또는 다른 기술을 이용하여 엔클레이브 내부에 간직된 데이터나 코드를 검토하거나, 수정하거나, 또는 재생하려는 것을 방지한다.
직전의 설명은 보안 엔클레이브를 인스턴스화하기 위한 다양한 메커니즘을 논의한 것이다. 일단 이러한 엔클레이브들이 인스턴스화되면, 엔클레이브들은 입증을 통해 스스로 서로를 인증할 수 있다. 더 구체적으로, (예를 들면, 암호화된 텍스트, 오디오, 및/또는 비디오) 데이터의 각 페이지가 엔클레이브에 로딩될 때, EADD 및 EEXTEND 명령어를 사용하여 CPU 내부의 내부 데이터 구조체는 엔클레이브에 추가된 코드 및 데이터의 암호 치수를 포함하도록 갱신된다. 엔클레이브 치수 및 플랫폼 설정치가 예상한대로 구성된 것을 증명하는 원격 당사자의 기능은 입증이라고 지칭된다. SGX는 증명을 위해 두 개의 관련된 크리덴셜(credential), 즉 레포트(report) 및 쿼트(quote)를 사용한다. 레포트는 로컬 플랫폼상의 엔클레이브의 정확함을 검증하기 위해 사용되며, 쿼트는 플랫폼 및 엔클레이브 상태를 플랫폼 외부의 엔트리에 반영하기 위해 사용될 수 있다. 일단 입증이 성공적으로 완료되면, 서버와 엔클레이브 사이에서 비밀내용이 안전하게 전송되게 할 수 있는 신뢰성 있는 채널이 설정될 수 있다.
이제 엔클레이브를 프로비저닝한 다음 엔클레이브를 서로 인증하기 위한 실시예의 더 상세한 검토가 검토된다.
본 출원에서 사용된 바와 같이, 용어 "프로비저닝"은 클라이언트가 그의 식별정보를 서버와 설정하고, 그 식별정보 및 지엽적으로 다른 크리덴셜을 서버와의 후속 통신을 위해 보안된 방식으로 저장하는 프로세스를 말한다. 따라서, 프로비저닝은 디지털 정보, 모듈 등이 클라이언트 디바이스에 제공된 후, 그 동안, 또는 그 이후에 발생할 수 있는 초기화 단계라고 이해될 수 있다.
도 3은 본 개시와 일치하는 클라이언트 프로비저닝 시스템의 예시적인 시스템 아키텍처의 블록도를 예시한다. 도시된 바와 같이, 시스템은 노드(101) 및 노드(102)를 포함한다. 노드(101) 및 노드(102)는 네트워크(315)를 이용하여 직접 또는 간접으로 통신할 수 있으며, 네트워크는 단거리 통신 네트워크(short range communications network), 장거리 통신 네트워크(long range communications network), 또는 이들의 조합일 수 있다.
노드(101) 및 노드(102)는 각기 디바이스 플랫폼(301, 308)을 포함한다. 한정하지 않고, 디바이스 플랫폼(301, 308)은 서버, 클라이언트, 이동 컴퓨팅 노드, 스마트폰, 태블릿, 랩톱, 노트북, 및 넷북 등과 같은 하나 이상의 디바이스 유형과 상관할 수 있다.
노드(101) 및 노드(102)는 또한 각기 프로세서(302, 309)를 포함할 수 있다. 그러한 프로세서는 임의의 적합한 범용 프로세서이거나 주문형 집적 회로일 수 있으며, 하나 또는 여러 개의 프로세서 코어에서 하나 또는 여러 스레드를 실행할 수 있다. 한정하지 않고, 프로세서(302, 309)세서는 이것으로 한정되지 않지만, 인텔™ 코포레이션, 어드밴스드 마이크로 디바이스™, ARM™, 엔비디아™, 애플™, 및 삼성™으로부터 상업적으로 구입 가능한 범용 프로세서와 같은 범용 프로세서일 수 있다. 도 3은 노드(101) 및 노드(102)가 각기 단일의 프로세서를 포함하는 것으로 예시되어 있지만, 여러 개의 프로세서가 사용될 수 있다.
노드(101) 및 노드(102)는 또한 각기 임의의 적합한 유형의 컴퓨터 판독가능한 메모리일 수 있는 메모리(303, 310)를 포함할 수 있다. 메모리(303) 및 메모리(310)로서 사용될 수 있는 예시적인 메모리 유형은 이것으로 한정되지 않지만, 반도체 펌웨어 메모리, 프로그래머블 메모리, 비휘발성 메모리, 판독 전용 메모리, 전기적으로 프로그램가능한 메모리, 랜덤 액세스 메모리, 플래시 메모리(예를 들면, NAND 또는 NOR 타입 메모리 구조체를 포함할 수 있음), 자기 디스크 메모리, 광 디스크 메모리, 및 이들의 조합 등을 포함한다. 부가적으로 또는 대안으로, 메모리(303, 310)는 다른 유형 및/또는 향후 개발될 유형의 컴퓨터 판독가능한 메모리를 포함할 수 있다.
노드(101)는 또한 이것으로 한정되지 않지만 인증 크리덴셜을 비롯한 신뢰성 있는 데이터, 코드, 모듈 및 기타 정보의 프로비저닝 및 저장을 위한 강화된 보안을 제공하도록 구성될 수 있다. 그러므로 노드(101)는 디지털 정보의 저장 및 처리를 위한 보안 환경을 제공하도록 기능할 수 있는 메모리 엔클레이브(304)를 포함할 수 있다. 도 3에서 도시된 바와 같이, 노드(101)에서 메모리 엔클레이브(304)는 예를 들면, 독립적인 메모리 모듈 내에서 독립적인 컴포넌트로서 존재할 수 있다. 대안으로 또는 부가적으로, 메모리 엔클레이브(304)는 메모리(303) 내부에 존재할 수 있는데, 이 경우 메모리(303)의 전부 또는 일부분이 메모리 엔클레이브로서 구성될 수 있다. 도 3에서 단일의 메모리 엔클레이브(304)가 도시되어 있지만, 노드(101)는 복수개의 메모리 엔클레이브를 포함할 수 있다는 것을 이해하여야 한다. 예를 들면, 노드(101)는 프로세서(302)의 로컬 메모리와 같이, 메모리(303) 내부 또는 노드(101)의 다른 메모리 내부에 제공될 수 있는 부가적인 메모리 엔클레이브(예를 들면, 도시되지 않은 쿼팅 엔클레이브)를 포함할 수 있다.
노드(101) 및 노드(102)는 또한 각기 입출력(input/output, I/O)(305 및 311)을 포함할 수 있다. I/O(305)는 노드(101)가 노드(102) 및 해당된다면 디지털 정보의 분배기(예를 들면, 분배기(103))로 및 그로부터 통신신호를 송신하고 수신하도록 구성되는 하드웨어(즉, 회로), 소프트웨어, 또는 하드웨어와 소프트웨어의 조합을 포함할 수 있다. 마찬가지로, I/O(311)는 노드(102)가 노드(101) 및 해당된다면 디지털 정보의 분배기로 및 그로부터 통신신호를 전송하고 수신하도록 구성되는 하드웨어(즉, 회로), 소프트웨어, 또는 하드웨어와 소프트웨어의 조합을 포함할 수 있다. 일부 실시예에서, I/O(305 및 311)는 노드(101) 및 노드(102)가 서로 통신할 수 있게 해주는 하나 이상의 통신 모듈을 포함할 수 있다.
I/O(305)와 I/O(315) 사이의 통신은 단거리 및/또는 장거리 통신 네트워크를 이용하여 유선이나 무선 접속을 통해 이루어질 수 있다. 그러한 통신은 블루투스™ 프로토콜, 근접장 통신 프로토콜, 본 개시의 유효한 출원일자로 실시되거나 그 출원일 이후 실시되는 임의의 또는 무선 802.11 통신 프로토콜, 또는 이들의 조합과 같은 미리 정의된 통신 프로토콜을 준수할 수 있다. 그러므로 I/O(305, 311)는 그러한 통신을 지원하는 하드웨어, 예를 들면 하나 이상의 트랜스폰더, 안테나, 블루투스™ 칩, 개인 영역 네트워크 칩, 근접장 통신 칩, 및 이들의 조합을 포함할 수 있다.
I/O(305, 311)는 또한 자기 기록 매체, 광 기록 매체, 광자기 기록 매체, 고체 상태(FLASH) 기록 매체, 및 이들의 조합과 같은 데이터 저장 매체로부터 정보(예를 들면, 디지털 정보, 라이선스 정책 등)를 수신하도록 구성될 수 있다. 이러한 사례에서, I/O(305, 311)는 그러한 데이터 저장 디바이스를 통해 각종 콘텐츠를 수신하도록 구성될 수 있다.
노드(101) 및 노드(102)는 (노드(101)가 클라이언트이어야 하고 노드(102)가 서버이어야 한다는 것을 암시하지 않겠지만) 또한 각기 "클라이언트" 프로비저닝 모듈("client" provisioning module, CPM)(306) 및 "서버" 프로비저닝 모듈("server" provisioning module, SPM)(312)을 포함할 수 있다. CPM(306)은 메모리 엔클레이브(304)의 콘텍스트 내부에 저장되어 실행될 수 있고 그래서 노드(101)에 거주할 수 있는 멀웨어 및 다른 악의적인 엔티티로부터 보호될 수 있다.
실시예에서, SPM(312)은 메모리 엔클레이브(310)에 저장되고 그리고/또는 실행될 수 있고, 메모리 엔클레이브에서 SPM(312)는 노드(102)에 거주할 수 있는 멀웨어 및 다른 엔티티로부터 보호될 수 있다.
CPM(306) 및 SPM(312)은 각기 프로세서(302 및 309) 또는 다른 프로세서에 의해 실행될 수 있는 컴퓨터 판독가능한 명령어를 포함할 수 있다. CPM(306)의 경우, CPM 명령어는 메모리 엔클레이브(304) 내부에서 실행될 수 있다. 어쨌든, CPM 명령어의 실행은 노드(101) 및 노드(102)로 하여금 본 개시와 일치하는 보안 프로비저닝 동작을 수행하도록 할 수 있다. 노드(101)는 또한 쿼팅 모듈(307)을 포함할 수 있고, 쿼팅 모듈은 (예를 들면, 프로세서(302)에 의해) 실행될 때 노드(101)로 하여금 본 개시와 일치하는 엔클레이브 레포트 검증 동작 및 엔클레이브 쿼트 발생 동작을 수행하도록 할 수 있는 컴퓨터 판독가능한 명령어를 포함할 수 있다. 쿼팅 모듈(307)은 메모리 엔클레이브(304) 내부에 저장되어 실행될 수 있거나, 아니면 아래에서 논의되는 것처럼 다른 (쿼팅) 엔클레이브에 저장되어 실행될 수 있다.
CPM(306) 또는 SPM(312)은 노드(101)와 노드(102) 사이에서 보안 프로비저닝 프로세스를 개시할 수 있다. 예를 들면, CPM(306)은 프로비저닝 요청 메시지를 노드(102)로 전송함으로써 노드(101)가 프로비저닝을 개시하도록 구성될 수 있다. 예를 들면, 노드(101)는 검사 엔진(120)(도 1)을 포함할 수 있으며 노드(102)는 보강된 애플리케이션(105)(도 1)을 포함할 수 있다. 프로비저닝 요청 메시지는 그 요청의 비공개(privacy)가 요구된다면 노드(102)의 공개 키를 이용하여 암호화될 수 있는데, 이 경우 노드(102)만이 그 요청을 복호화할 수 있다. 어쨌든, SPM(312)은 노드(102)가 프로비저닝 요청 메시지 내 정보를 분석하게 할 수 있다.
프로비저닝 요청 메시지를 분석하면, SPM(312)은 노드(102)로 하여금 노드(101)로 전송하기 위한 응답 메시지를 발생하도록 할 수 있다. 응답 메시지는 임의값(nonce)과 같은 재생 방지(anti-replay) 또는 다른 목적 용도로 사용될 수 있는 정보를 포함할 수 있다. 응답 메시지는 디지털 시그니처로 서명될 수 있으며, 그 응답 메시지의 진위를 검증하기 위해 노드(101)에 의해(또는 더 구체적으로는 CPM(306)에 의해) 분석될 수 있는 정보를 포함할 수 있다. 일부 실시예에서, SPM(312)은 노드(102)로 하여금 디지털 시그니처 프로토콜을 이용하여 응답 메시지를 서버 개인 키(Spriv)로 서명하게 한다. 이 경우, 노드(101)는 대응하는 노드/서버 공개 키(Spub) ("S"를 사용하는 것은 당연히 서버라는 것 또는 임의의 다른 종류의 노드라는 것임)를 이용하여 응답 메시지에 대한 디지털 시그니처를 검증할 수 있다.
만일 노드(101)가 노드(102)로부터 수신한 응답 메시지를 적절하게 검증할 수 있다면, CPM(306)은 노드(101)로 하여금 응답 메시지 내 정보(예를 들면, 임의값(N))를 메모리 엔클레이브(304)에 저장함으로써 이 정보를 보호하게 할 수 있다. CPM(306)은 또한 노드(101)로 하여금 자체의 임의값(M)을 발생하고 이를 메모리 엔클레이브(304)에 저장하게 할 수 있다.
또한 응답 메시지에 응답하여, CPM(306)은 노드(101)로 하여금 이를 테면 RSA(Rivest, Shamir, Adleman) 공개 키 암호 및/또는 디지털 시그니처 프로토콜에서 사용될 수 있는 비대칭 키 쌍을 발생하게 할 수 있다. 더 구체적으로, CPM(306)은 노드(101)로 하여금 노드/클라이언트 공개 키(Cpub) 및 클라이언트 개인 키(Cpriv)("C"를 사용하는 것은 당연히 클라이언트라는 것 또는 임의의 다른 종류의 노드라는 것임)를 포함하는 비대칭 키 쌍을 발생하도록 구성될 수 있으며, 이들 키는 모두 메모리 엔클레이브(304)에 저장되고 그리고/또는 메모리 엔클레이브(304)로 봉인된다.
CPM(306)은 또한 노드(101)로 하여금 엔클레이브 레포트를 발생하게 할 수 있다. 엔클레이브 레포트는 예를 들면, 메모리 엔클레이브(304)에 저장된 정보를 캡슐화하는 사용자 데이터 블랍(blob)(이하, "사용자데이터(userdata)"라고 함)의 해시를 포함할 수 있다. 사용자데이터는 임의값(N)(노드(102)의 재생 방지 정보), 임의값(M)(노드(101)의 응답 방지 정보), 및 Cpub를 선택사양으로 메모리 엔클레이브(304)에 저장된 다른 정보와 조합하여 캡슐화할 수 있다. 일부 실시예에서, 사용자데이터는 노드(101)의 플랫폼 식별(플랫폼 ID), 노드(101)의 하나 이상의 사용자의 사용자 식별(사용자 ID), 애플리케이션 특정 식별 정보(애플리케이션 특정 ID), 메모리 엔클레이브(304)의 보안 버전 번호(security version number, SVN), 노드(101)상에 메모리 엔클레이브(304)를 프로비저닝하는 독립 소프트웨어 벤더(independent software vendor, ISV)의 식별자, 및 이들의 조합을 캡슐화할 수 있다.
CPM(306)은 또한 노드(101)가 쿼트 생성 동작을 수행하도록 할 수 있다. 이와 관련하여, CPM(306)은 노드(101)가 엔클레이브 레포트를 쿼팅 모듈(307)과 같은 쿼팅 모듈로 전송하게 할 수 있다. 한정하지 않고, 쿼팅 모듈(307)은 프로세서(302)와 같은 프로세서의 로컬 메모리상에 상주하는 쿼팅 엔클레이브 내부에 저장되어 실행되는 것이 바람직하다. 쿼팅 모듈(307)로 전송된 엔클레이브 레포트는 디지털 시그니처로 서명될 수 있고 그리고/또는 쿼팅 모듈(307)이 엔클레이브 레포트의 진위를 검증하는데 사용될 수 있는 다른 정보를 포함할 수 있다. 예를 들면, CPM(306)은 노드(101)로 하여금 엔클레이브 레포트를 쿼팅 모듈(307)로 전송하기 전에 적합한 디지털 시그니처 프로토콜 및 메모리 엔클레이브(304)의 엔클레이브 키를 사용하여 엔클레이브 레포트를 서명하게 할 수 있다.
쿼팅 모듈(307)은 본 개시와 일치하는 엔클레이브 레포트 검증 동작 및 엔클레이브 쿼트 생성 동작을 수행하도록 구성될 수 있다. 예를 들면, 엔클레이브 쿼트를 수신하면, 쿼팅 모듈(307)은 노드(101)가 레포트의 진위를 검증하게 할 수 있다. 임의의 적합한 검증 방법론은 이러한 목적을 위해 사용될 수 있다. 예를 들면, 엔클레이브 레포트가 디지털 시그니처로 서명된 경우, 쿼팅 모듈(307)은 노드(101)로 하여금 적합한 시그니처 검증 프로토콜을 사용하여 디지털 시그니처의 진위를 검증하게 할 수 있다. 엔클레이브 레포트에 적용된 시그니처가 검증되면, 쿼팅 모듈(307)은 엔클레이브 레포트가 노드(101)상의 엔클레이브(예를 들면, 메모리 엔클레이브(304))에 의해 생성되었고, 멀웨어와 같은 인가되지 않은 엔티티에 의해 생성되지 않았다는 것을 결정할 수 있다.
예를 들어, CPM(306)은 노드(101)로 하여금 메모리 엔클레이브(304)에 특유할 수 있는 엔클레이브 키(Ekey)로 엔클레이브 레포트를 서명하게 할 수 있다. 그러한 경우, 쿼팅 모듈(307)은 노드(101)로 하여금 쿼팅 모듈(307)에 사전에 프로비저닝되었을 수 있거나 또는 다른 정보로부터 도출될 수 있는 대응하는 키를 이용하여 엔클레이브 레포트에 대한 시그니처의 진위를 검증하게 할 수 있다. 예를 들면, Ekey가 클라이언트 프로세서 ID 및/또는 클라이언트의 하드웨어 프로파일로부터 도출되는 경우, 쿼팅 모듈(307)은 그러한 정보로부터 Ekey와 동등한 키를 도출할 수 있고 그 동등한 키로 수행된 시그니처를 Ekey를 이용하여 엔클레이브 레포트에 적용된 시그니처와 비교할 수 있다.
일단 쿼팅 모듈(307)이 엔클레이브 레포트의 진위를 검증하면, 쿼팅 모듈은 엔클레이브 레포트가 노드(101)상의 유효한 엔클레이브(예를 들면, 메모리 엔클레이브(304))에 의해 생성되었고 멀웨어와 같은 인가되지 않은 엔티티에 의해 생성되지 않았다는 것을 결정할 수 있다. 그 다음 쿼팅 모듈(307)은 노드(101)가 엔클레이브 쿼트를 생성하게 할 수 있다. 엔클레이브 쿼트는 엔클레이브 레포트의 사본을 선택사양으로 다른 정보와 조합하여 포함할 수 있다. 엔클레이브 쿼트에 포함될 수 있는 다른 정보의 일 예는 노드(101)로부터의 통신신호에 적용될 수 있는 디지털 시그니처를 검증하는 노드(102)에 의해 사용될 수 있는 키 또는 키들을 포함한다. 예를 들면, 쿼팅 모듈(307)은 노드(101)로 하여금 노드(101)의 공개 키(즉, Cpub)를 포함하는 엔클레이브 쿼트를 생성하도록 할 수 있다. 엔클레이브 쿼트에 포함될 수 있는 다른 정보의 다른 예는 클라이언트의 플랫폼 ID, 관련 사용자 ID, 엔클레이브(304)의 보안 버전 번호(SVN), 엔클레이브(304)를 프로비저닝한 ISV의 식별정보, 엔클레이브(304)의 치수, 애플리케이션 특정 식별(ID), 및 이들의 조합을 포함한다.
엔클레이브 쿼트가 생성된 후, 제어는 CPM(306)으로 되돌아 갈 수 있고, 그러면 CPM(306)은 노드(101)가 엔클레이브 쿼트를 노드(102)로 전송하게 할 수 있다. 예를 들면, CPM(306)은 노드(101)로 하여금 선택사양으로 서버의 공개 키와 같은 키를 이용하여 암호화될 수 있는 쿼팅 메시지를 노드(101)로 보낼 준비를 하도록 할 수 있다. 그런 다음 CPM(306)은 노드(101)가 예를 들면 네트워크(315)를 통해 쿼팅 메시지를 노드(102)로 전송하게 할 수 있다.
쿼팅 메시지에 응답하여, SPM(312)은 노드(102)로 하여금 노드(101)로부터 수신한 엔클레이브 메시지에 포함된 엔클레이브 쿼트의 진위를 검증하도록 할 수 있다. 엔클레이브 쿼트의 검증은 임의의 방식으로 수행될 수 있다. 예를 들면, SPM(312)은 노드(102)가 쿼팅 메시지를 도 3에서 박스(313)의 해싱에 의해 예시된 것과 같은, 노드(102)에 가깝거나 원거리에 있는 검증 서비스(313)로 전달하게 할 수 있다. 검증 서비스(313)는 적합한 검증 프로토콜을 이용하여 엔클레이브 쿼트를 검증할 수 있다. 엔클레이브 쿼트가 디지털 시그니처로 서명된 사례에서, 검증 서비스(313)는 적합한 디지털 시그니처 검증 프로토콜을 이용하여 시그니처를 검증할 수 있다. 예를 들면, 엔클레이브 쿼트는 노드(101)의 개인 키, 예를 들면 강화된 프라이버시 식별(enhanced privacy identification, EPID) 개인 키로 서명될 수 있다. 그러한 경우, 검증 서비스(313)는 대응하는 공개 키, 예를 들면 EPID 공개 키를 이용하여 시그니처의 진위를 검증할 수 있다.
만일 엔클레이브 쿼트에 적용된 시그니처가 검증되면, SPM(312)은 노드(102)로 하여금 쿼팅 메시지에 포함된 엔클레이브 쿼트를 분석함으로써 메모리 엔클레이브(304)의 무결성을 검증하도록 할 수 있다. 예를 들면, SPM(312)은 노드(102)로 하여금 엔클레이브 쿼트 내 메모리 엔클레이브(304)의 치수를 노드(102)에 가깝거나 노드(102)에서 원거리에 있는 데이터베이스에 저장된 유효한 엔클레이브 치수의 화이트리스트에 대비하여 비교하도록 할 수 있다. (만일 있다면) 엔클레이브 쿼트에 포함된 부가 정보는 유사한 방식으로, 예를 들면 부가 정보를 선택사양의 데이터베이스(314)에 저장된 정보의 대응하는 화이트 리스트에 비교함으로써 검증될 수 있다.
만일 검증 동작 모두 성공적으로 끝나면, SPM(312)은 노드(101)상의 메모리 엔클레이브(304)가 유효하고 신뢰성 있다고 결정할 수 있다. 그 다음 SPM(312)은 노드(102)가 노드(101)에 대해 화이트리스트 식별정보(화이트리스트 ID)를 생성하게 하고, 또한 엔클레이브 쿼트의 콘텐츠 모두 또는 일부를 화이트리스트 ID와 연관하여 화이트리스트 데이터베이스 내에 저장하게 할 수 있다.
SPM(312)은 또한 노드(102)가 화이트리스트 ID를 포함하는 메시지를 노드(101)로 전송하게 할 수 있다. 그러한 메시지에 응답하여, CPM(306)은 노드(101)로 하여금 화이트리스트 ID를 메모리 엔클레이브(304)에 저장하도록 할 수 있다. 특히, CPM(306)은 노드(101)로 하여금 화이트리스트 ID 및 다른 클라이언트 인증 크리덴셜(예를 들면, 클라이언트 키(들), 사용자 식별, 머신 식별, 애플리케이션 특정 ID 등)을 예를 들면, 그러한 정보를 메모리 엔클레이브(304)의 엔클레이브 키(Ekey)로 암호화함으로써 메모리 엔클레이브(304)에 봉인하게 할 수 있다.
그러므로 본 명세서에서 설명된 기술은 화이트리스트 ID를 가진 노드(101)를 프로비저닝하기 위해 사용될 수 있다. 노드(101)의 화이트리스트 ID 및 다른 비밀내용(예를 들면, 노드의 플랫폼 ID, 사용자 ID, SVN, ISV, 엔클레이브 키(Ekey), 엔클레이브 치수 등)은 사용 중이 아닌 동안 메모리 엔클레이브(304)에 저장 및/또는 봉인될 수 있으며, 그래서 노드(101)에 거주하는 멀웨어에 의한 공격으로부터 보호될 수 있다. 프로비저닝 기술은 또한 노드(102)에 가깝거나 원거리에 있는 데이터베이스(314)와 같은 메모리에 저장될 수 있는 클라이언트 화이트리스트 ID 및 다른 비밀내용(예를 들면, 엔클레이브 쿼트의 콘텐츠)을 가진 노드(102)를 프로비저닝한다.
프로비저닝 후, 노드(101)는 메모리 엔클레이브(304) 내부의 비밀내용을 봉인해제하고 예를 들면, 서명된 메시지 내 그의 화이트리스트 ID를 노드(102)로 전송함으로써 자신을 노드(102)에게 인증할 수 있다. 노드(102)는 메시지에 적용된 시그니처를 검증하고 클라이언트의 화이트리스트 ID를 승인된 플랫폼의 화이트리스트 ID와 비교함으로써 클라이언트의 진위를 검증할 수 있다. 노드(101)는 메모리 엔클레이브(304) 내부의 비밀내용을 봉인해제할 수 있기 때문에, 그러한 비밀내용의 평문은 노드(101)상에 거주하는 멀웨어 또는 다른 인가되지 않은 엔티티로부터 보호될 수 있다. 그러므로 본 개시의 기술은 클라이언트 인증 크리덴셜 및 다른 정보가 클라이언트에 프로비저닝되고, 클라이언트에 저장되고, 클라이언트에서 사용되므로, 그리고 이것들의 조합으로 수행되므로 클라이언트 인증 크리덴셜 및 다른 정보를 보호할 수 있다.
도 4는 본 개시와 일치하는 예시적인 프로비저닝 방법의 메시지 흐름을 예시한다. 이러한 설명을 위해, 노드(101) 및 노드(102)는 도 3에서 도시된 것처럼 구성되고, 각기 난수 발생기(random number generator)와 같은 임의값을 발생하는 엔트로피의 소스를 갖고 있다고 가정한다. 또한, 메시지 흐름의 실행에 앞서 노드(102)에 필요한 서명용 키 쌍이 생성되었다고 가정하며, 이때 노드(101)는 서버 공개 키(Spub)를 보유하며 노드(102)는 서버 개인 키(Spriv)를 보유한다. Spub는 메모리 엔클레이브(304) 내부에 저장되고 그리고/또는 메모리 엔클레이브(304)에 봉인되며 그래서 노드(101)상에 거주할 수 있는 멀웨어로부터 보호될 수 있다. 실제로, 메모리 엔클레이브(304) 내부의 Spub를 무단 변경하는 것은 무단 변경의 증거라고 고려될 수 있는 메모리 엔클레이브(304)의 치수에서 검출 가능한 변화를 발생할 수 있다.
이러한 예시적인 메시지 흐름에서, 노드(101)의 사용자는 노드(102)로부터 디지털 정보(예를 들면, 소프트웨어, 문서 등)를 받고자 할 수 있다. 그러나 이에 앞서 노드(102)는 노드(101)를 신뢰하지 않을 수 있다. 그러므로 노드(101) 및 노드(102)는 신뢰의 근원을 설정하고 노드(101)상의 비밀내용의 프로비저닝을 용이하게 하기 위해 프로비저닝 방법을 실행한다.
먼저 노드(101) 및 노드(102)는 프로비저닝을 시작한다. 이러한 개념은 노드(101)가 프로비저닝을 개시하는 것을 도시하는 도 4에서 예시된다. 이 경우, (401)에 따라서, CPM(306)의 컴퓨터 판독 가능한 명령어는 실행될 때 노드(101)로 하여금 프로비저닝 요청(MSG1)을 노드(102)로 전송하도록 한다. 보안 또는 다른 목적을 위해, 프로비저닝 요청은 노드(101)에 의해 예를 들면 단일 키 암호화, 대칭 키 암호화, 또는 비대칭 키 암호화 등을 이용하여 암호화될 수 있다. 일부 실시예에서, 프로비저닝 요청은 비대칭 키 암호화 프로토콜을 통해 보호된다. 이러한 개념은 도 4에서 노드(101)가 MSG1을 노드(102)의 공개 키(Spub)로 암호화하는 것으로 예시된다.
그 다음 방법은 요소(402)로 진행할 수 있는데, 여기서 SPM(312)의 서버 프로비저닝 모듈(SPM) 명령어는 실행될 때 노드(102)로 하여금 임의의 적합한 검증 프로토콜을 이용하여 노드가 수신한 프로비저닝 요청의 진위를 검증하게 할 수 있다. 예를 들면, 노드(102)는 예를 들면 그의 개인 키(즉, Spriv)로 프로비저닝 요청을 복호화하려 시도함으로써 수신한 프로비저닝 요청을 검증할 수 있다. 만일 프로비저닝 요청이 Spriv로 성공적으로 복호화될 수 있다면, 노드(102)는 그 요청이 Spub를 알고 있는 클라이언트로부터 발원된 것임을 확신할 수 있다. 이 때 SPM 명령어는 실행될 때 노드(102)로 하여금 난수 발생기와 같은 엔트로피의 로컬 소스 또는 원격 소스를 이용하여 서버 임의값(N)(서버의 재생 방지 정보)를 발생하게 할 수 있다.
그 다음 방법은 요소(403)로 진행할 수 있고, 여기서 SPM 명령어는 실행될 때 노드(102)로 하여금 임의값(N)을 포함하는 프로비저닝 응답 메시지(MSG2)를 발생하게 할 수 있다. SPM 메시지는 또한 노드(102)로 하여금 MSG2를 노드(101)에 의해 검증될 수 있는 서명키, 예를 들면 노드(102)의 개인 키(Spriv)로 서명하게 할 수 있다. 일단 MSG2가 서명되면, SPM 명령어는 노드(102)로 하여금 서명된 MSG2를 노드(101)로 전송하게 할 수 있다. 이때 방법은 요소(404-406)로 진행할 수 있다.
요소(404)에 따르면, CPM(306)의 CPM 명령어는 실행될 때 노드(101)로 하여금 MSG2에 적용된 시그니처를 검증하게 할 수 있다. 노드(102)가 예를 들어 MSG2를 Spriv로 서명한 경우, CPM 명령어는 노드(101)가 Spub를 이용하여 시그니처의 진위를 검증하게 할 수 있다. 만일 검증이 성공하면, CPM 명령어는 노드(101)가 임의값(N)을 메모리 엔클레이브(304)에 저장하게 할 수 있다. CPM 명령어는 또한 노드(101)가 엔트로피의 로컬 또는 원격 소스를 이용하여 임의값(M)(클라이언트 재생 방지 정보)을 발생하게 할 수 있다. 임의값(N)과 마찬가지로, CPM 명령어는 노드(101)가 임의값(M)을 메모리 엔클레이브(304)에 저장하게 할 수 있다.
CPM 명령어는 실행될 때 또한 노드(101)로 하여금 이를테면 RSA(Rivest, Shamir, Adleman) 공개 키 암호화에서 사용될 수 있는 비대칭 키 쌍을 발생하게 할 수 있다. 더 구체적으로, CPM 명령어는 노드(101)로 하여금 Cpub를 포함하는 비대칭 키 쌍 및 대응하는 개인 키(Cpriv)를 발생하게 할 수 있으며, 이들 두 키는 모두 메모리 엔클레이브(304)에 저장될 수 있다.
그런 다음 방법은 요소(405)로 진행할 수 있는데, 여기서 CPM 명령어는 실행될 때 노드(101)로 하여금 사용자 데이터 블랍(사용자데이터)을 계산하게 할 수 있다. 사용자데이터는 임의값(N), 임의값(M), Cpub, 및 앞에서 설명한 바와 같은 선택사양의 다른 정보를 캡슐화할 수 있다. CPM 명령어는 또한 노드(101)로 하여금 엔클레이브 레포트를 발생하게 할 수 있다. 한정하지 않고, 엔클레이브 레포트는 사용자데이터의 해시를 앞에서 설명한 바와 같이 단독으로 또는 다른 정보와 조합하여 포함할 수 있다.
그 다음 CPM 명령어는 노드(101)로 하여금 (사용자데이터의 해시 및 선택사양의 식별 정보를 포함하는) 엔클레이브 레포트를 서명 키로 서명하게 할 수 있다. 일부 실시예에서, CPM 명령어는 노드(101)로 하여금 예를 들면 메모리 엔클레이브(304)가 노드(101)상에서 설정되었던 시점에서 메모리 엔클레이브(304) 내에 미리 프로비저닝되었을 수 있는 엔클레이브 키(Ekey)를 이용하여 엔클레이브 레포트를 서명하게 할 수 있다. Ekey는 노드(101)의 하드웨어에 특유할 수 있다. 즉 Ekey는 프로세서(302)의 프로세서 ID, 노드(101)의 하드웨어 프로파일, 및 이들의 조합에 대응하거나 이들로부터 도출될 수 있다. 대안으로 또는 부가적으로, Ekey는 메모리 엔클레이브(304)의 소유자, 예를 들면 노드(101)에서 메모리 엔클레이브(304)를 설정했던 독립 소프트웨어 벤더(ISV)에 특유할 수 있는데, 이 경우 Ekey는 ISV 서명 키라고 이해할 수 있다.
일단 서명한 엔클레이브 레포트가 생성되면, 방법은 블록(406)으로 진행할 수 있는데, 여기서 CPM 명령어는 노드(101)로 하여금 서명된 엔클레이브를 입증하게 하고 서명된 엔클레이브 쿼트를 발생하게 할 수 있다. 이와 관련하여, CPM 명령어는 노드(101)로 하여금 서명된 엔클레이브 레포트를 도 3의 쿼팅 모듈(307)과 같은 쿼팅으로 포워딩하게 할 수 있는데, 이 쿼팅 모듈은 노드(101)의 프로세서에 가까이에서 실행되는 독립적인 보안 엔클레이브일 수 있으며 컴퓨터 판독가능한 쿼팅 모듈 명령어를 포함할 수 있다. 서명된 엔클레이브 레포트를 수신하는 것에 응답하여, 쿼팅 모듈 명령어는 노드(101)로 하여금 서명된 엔클레이브 레포트에 적용된 시그니처를 검증하게 할 수 있다. 예를 들면, 쿼팅 모듈 명령어는 프로세서(302)로 하여금 서명된 엔클레이브 레포트에 적용된 시그니처를 클라이언트 플랫폼 키(Pkey) 키로부터 취득한 시그니처에 대비하여 검증하게 할 수 있다. Pkey는 Ekey와 동등한 키일 수 있으며, 쿼팅 모듈 내부에 저장될 수 있다. 만일 시그니처가 동일하면, 쿼팅 모듈은 클라이언트상의 유효한 보안 엔클레이브가 서명된 엔클레이브 레포트를 발생한 것으로 결정할 수 있다.
일단 서명된 엔클레이브 레포트가 입증되면, 쿼팅 모듈 명령어는 노드(101)로 하여금 전술한 바와 같이 다양한 정보를 포함할 수 있는 보안 엔클레이브 쿼트를 발생하게 할 수 있다. 쿼팅 모듈 명령어는 또한 노드(101)로 하여금 클라이언트에서 미리 프로비저닝되었을 수 있는 클라이언트의 EPID 개인 키와 같은 서명 키를 이용하여 엔클레이브 쿼트를 서명하게 할 수 있다. 그 다음 방법은 블록(407)으로 진행할 수 있는데, 여기서 CSM 명령어는 실행될 때 노드(101)로 하여금 서명된 엔클레이브 쿼트를 캡슐화하는 메시지(MSG3)를 노드(102)로 전송하게 할 수 있다. 도 4에서 도시된 바와 같이, 선택사양으로 MSG3는 예를 들면 노드(102)의 공개 키인 Spub 또는 다른 키를 이용하여 암호화될 수 있다.
그 다음 방법은 요소(408)로 진행할 수 있는데, 여기서 SPM 명령어는 실행될 때 노드(102)가 MSG3에 대해 각종 동작을 수행하게 할 수 있다. 예를 들면, 만일 노드(101)가 MSG3을 Spub로 암호화하였다면, SPM 명령어는 노드(102)로 하여금 복호화 프로토콜 및 Spriv를 이용하여 MSG3을 복호화하게 할 수 있다. 일단 MSG3이 복호화되면(또는 MSG3이 암호화되지 않았다면), SPM 명령어는 실행될 때 노드(102)로 하여금 노드(102)에 가깝거나 노드(102)로부터 원거리에 있는 검증 서비스를 이용하여, 서명된 보안 엔클레이브 쿼트에 적용된 디지털 (예를 들면, EPID) 시그니처를 검증하게 할 수 있다. 어쨌든, 검증 서비스는 노드(101)에 의해 엔클레이브 쿼트를 서명하는데 사용된 키에 대응하는 하나 이상의 키를 알고 있을 수 있다. 예를 들면, 엔클레이브 쿼트가 노드(101)의 EPID 개인 키로 서명된 경우, 검증 서비스는 알고 있는 EPID 검증 프로토콜에 따라서 대응하는 EPID 공개 키를 이용하여 EPID 개인 키의 진위를 검증할 수 있다.
SPM 명령어는 실행될 때 또한 노드(102)로 하여금 노드(101)상의 메모리 엔클레이브(304)의 진위를 검증하게 할 수 있다. 예를 들면, SPM 명령어는 노드(102)로 하여금 보안 엔클레이브 쿼트에 포함된 엔클레이브 치수를 도 3의 데이터베이스(314)와 같은 로컬 또는 원격 데이터베이스에 저장되어 있을 수 있는 유효 엔클레이브 치수의 화이트리스트에 대비하여 비교하게 할 수 있다. 만일 다른 식별 표시(예를 들면, 클라이언트의 머신 식별자, 노드(101)의 인증된 사용자의 사용자 ID, 애플리케이션 특정 식별 정보, 독립 소프트웨어 벤더(ISV) 식별자, 메모리 엔클레이브(304)의 보안 버전 번호(SVN) 등)이 보안 엔클레이브 쿼트에 포함되어 있다면, CPM 명령어는 노드(102)로 하여금 그러한 정보를 예를 들면, 데이터베이스(314)에 저장되어 있거나 다른 장소에 저장되어 있는 식별 표시의 화이트리스트와 비교함으로써 검증하게 할 수 있다.
일부 사례에서, 서명된 엔클레이브 쿼트는 사용자데이터의 해시 및 임의값(예를 들면, 임의값(N) 및 임의값(M))을 포함할 수 있다. 이러한 사례에서, SPM 명령어는 실행될 때 노드(102)로 하여금 사용자데이터 해시를 승인된 사용자데이터 해시의 화이트 리스트에 대비하여 검증하게 할 수 있다. 또한, SPM 명령어는 실행될 때 노드(102)로 하여금 예를 들면 재생 방지 목적을 위한 임의값을 검증하게 할 수 있다.
그 다음 방법은 요소(409)로 진행할 수 있는데, 여기서 SPM 명령어는 실행될 때 노드(102)로 하여금 로컬 또는 원격 메모리, 예를 들면, 선택사양의 데이터베이스(314) 내부의 엔클레이브 쿼트/레포트에다 모든 정보 또는 그 일부를 저장하게 할 수 있다. 예를 들면, SPM 명령어는 노드(102)로 하여금 엔클레이브(304)의 치수, (포함되어 있다면) 클라이언트 사용자이름, (포함되어 있다면) 클라이언트 머신 ID, (포함되어 있다면) 애플리케이션 특정 정보, 사용자데이터의 해시, 및 클라이언트 공개 키(Cpub)를 선택사양의 데이터베이스(314) 또는 다른 데이터 구조체에 저장하게 할 수 있다. SPM 명령어는 또한 노드(102)로 하여금 노드(101)에 대한 화이트리스트 ID를 발생하게 할 수 있고, 이 화이트리스트 ID는 엔클레이브 쿼트에서 수신한 정보와 연관되어 저장될 수 있다. 예를 들면, SPM 명령어는 노드(102)로 하여금 화이트리스트 ID를 노드(101)로부터 수신한 다른 정보와 연관하여 데이터베이스(314)에 저장하게 할 수 있다.
그런 다음 방법은 요소(410)로 진행할 수 있으며, 여기서 SPM 명령어는 노드(102)로 하여금 화이트리스트 ID를 노드(101)로 전송하게 할 수 있다. 이와 관련하여, SPM 명령어는 노드(102)로 하여금 선택사양으로 Spriv로 서명되고 그리고/또는 Cpub를 이용하여 암호화될 수 있는 화이트리스트 ID를 포함하는 메시지(MSG4)를 준비하게 할 수 있다. 어쨌든, SPM 명령어는 노드(102)가 예를 들면 네트워크(315)를 이용하여 유선이나 무선 통신을 통해 MSG4를 노드(101)로 전송하게 할 수 있다.
그 다음 방법은 요소(411)로 진행할 수 있는데, 여기서 SPM 명령어 실행될 때 노드(101)로 하여금 MSG4의 진위를 검증하게 할 수 있다. 예를 들면, MSG4가 노드(102)의 개인 키(예를 들면, Spriv)로 서명된 경우, SPM 명령어는 실행될 때 노드(101)로 하여금 대응하는 공개 키(예를 들면, Spub)를 이용하여 시그니처의 진위를 검증하게 할 수 있다. 대안으로 또는 부가적으로, 만일 MSG4가 Cpub로 암호화되었다면, CPM 명령어는 실행될 때 노드(101)로 하여금 대응하는 개인 키(예를 들면, Cpriv)를 이용하여 메모리 엔클레이브(304) 내 MSG4를 복호화하게 할 수 있다. 이러한 방법으로, 화이트리스트 ID는 노드(101)에 의해 메모리 엔클레이브(304) 내부에서 취득될 수 있으며 그래서 멀웨어로부터 보호될 수 있다. CPM 명령어는 또한 예를 들어 화이트리스트 ID를 메모리 엔클레이브(304)의 엔클레이브 키로 암호화함으로써 화이트리스트 ID를 메모리 엔클레이브(304)로 봉인하게 할 수 있다.
그러므로 전술한 바는 엔클레이브가 인스턴스화된 다음 서로에 대해 어떻게 인증될 수 있는지를 설명한다. 아래의 설명은 정책 사용을 다룬다.
실시예에서, 문서 사용 정책 및 암호 키는 콘텐츠를 실행하는 엔클레이브 (예를 들면, 도 1의 문서 렌더러(105)) 및/또는 AV 유틸리티(예를 들면, 도 1의 유틸리티(120))와 같은 검사 유틸리티를 포함하는 임의의 엔클레이브를 동작시키는 플랫폼으로부터 원거리에 위치한 서버(예를 들면, 도 1의 정책 인프라스트럭처(125)) 상의 데이터베이스에 저장된다. IT 부서와 같은 당사자는 엔클레이브 내부에서 구동하는 정책 엔진을 이용하여 사용 정책 및 액세스 제어를 명시한다.
다시 도 1을 참조하면, 정책은 보안 통신 채널을 통해 데이터베이스(인프라스트럭처(125) 참조)에 업로딩된다. 보호된 문서는 보강된 애플리케이션(105)을 포함하는 엔클레이브 내부에서 암호화된다. 암호화된 문서를 수신하면 인증된 사용자(105)는 엔클레이브 내부에서 구동하는 클라이언트 애플리케이션의 보안 문서 판독기 컴포넌트를 이용하여 암호화된 문서를 검토할 수 있다. 인가된 사용자(105)는 문서의 (서버로부터 안전하게 엔클레이브에 다운로딩된) 사용 정책이 사용자 조작(예를 들면, 콘텐츠를 검사하는 AV 유틸리티(120))과 양립 가능하다고 입증한 후, 또한 문서 복호화 키를 또한 키 및 제어를 검사 엔진(120)으로 이관한다. 검사 엔진은 그의 엔클레이브 내부에서 문서를 복호화하고, 콘텐츠를 파싱하고, 멀웨어 등에 대해 콘텐츠를 전반적으로 검사한다.
검사 엔진(126)을 관리하는 정책을 집행하는 코드(예를 들면, 정책 엔진)는 코드 수정 공격을 방지하는 애플리케이션(105)을 포함하는 엔클레이브 내부에서 호스팅된다. 엔클레이브는 실행 엔진(예를 들면, 문서 렌더러, 영화용 플레이어)을 보유한 동일한 엔클레이브일 수 있거나 동일한 엔클레이브가 아닐 수도 있다.
그러므로 전술한 바는 콘텐츠가 검사 엔진(120)에 제공되어야 하는지를 결정하기 위해 어떻게 정책이 사용될 수 있는지를 도시한다. 그러나 아래에서는 애플리케이션(105)을 포함하는 엔클레이브가 엔진(120)을 포함하는 엔클레이브와 통신할 수 있는 방법에 관한 메커니즘을 설명한다.
도 5는 두 노드 사이에서 보안 통신 채널(세션)의 설정과 관련하여 수행될 수 있는 예시적인 클라이언트 동작의 흐름도이다. 설명을 위해, 노드는 도 3에서 도시된 바와 같이 구성된다고 가정한다. 또한, 클라이언트와 서버는 도4와 관련하여 앞에서 설명된 바와 같이 비밀내용과 함께 프로비저닝되었으며, 노드에 프로비저닝된 비밀내용은 노드의 메모리 엔클레이브(예를 들면, 메모리 엔클레이브(304))에 봉인된다고 가정한다. 명확하게 논의되지 않을지라도, 도 5와 관련하여 수행된 동작은 노드(101)에 상주할 수 있는 클라이언트 프로비저닝 모듈(CPM) 또는 클라이언트 기업 권한 집행 모듈(client enterprise rights enforcement module, CEREM)과 독립적이거나 그에 포함될 수 있는 클라이언트 디바이스상의 보안 세션 설정 모듈(secure session establishment module, SSEM)를 실행함으로써 발생될 수 있다는 것을 이해하여야 한다.
도시된 바와 같이, 방법은 블록(701)에서 시작한다. 블록(702)에서, 노드(101)는 그의 엔클레이브 키(Ekey)를 이용하여 그의 메모리 엔클레이브로부터 개인 키(Cpriv), 그의 화이트리스트 ID 및 선택사양으로 공개 키(Spub)를 봉인해제할 수 있다. 한정하지 않고, 노드(101)는 그의 메모리 엔클레이브 내부의 이와 같은 항목을 봉인해제하여, 이들의 평문이 멀웨어로부터 보호되도록 하는 것이 바람직하다.
일단 Cpriv, 화이트리스트 ID 및 선택사양의 Spub가 봉인해제되면, 방법은 블록(703)으로 진행할 수 있고, 여기서 노드(101)는 하나 이상의 인증 요청 메시지를 발생할 수 있다. 인증 요청 메시지(들)는 노드(101)를 인증하는데 사용될 수 있는 화이트리스트 ID 및 선택사양의 다른 정보를 캡슐화할 수 있다. 예를 들면, 정보 요청 메시지는 노드(101)의 메모리 엔클레이브의 치수, 클라이언트 메모리 엔클레이브의 SVN 등을 포함할 수 있다. 어쨌든, 노드(101)는 Cpriv를 이용하여 인증 요청 메시지를 서명할 수 있으며, 선택사양으로 Spub를 이용하여 요청 메시지를 암호화할 수 있다. 일부 실시예에서, 노드의 화이트리스트 ID는 인증 요청 메시지 내에 평문으로서 포함될 수 있는데 반해, 메시지의 다른 부분은 서명될 수 있고 선택사양으로 앞에서 설명한 바와 같이 암호화될 수 있다. 어쨌든, 그런 다음 노드(101)는 서명되고 선택사양으로 암호화된 인증 요청 메시지를 노드(102)로 전송할 수 있다.
도 6과 관련하여 나중에 설명되는 바와 같이, 노드(102)는 노드(101)로부터 수신한 인증 요청 메시지에 대해 인증 및 검증 동작을 수행할 수 있다. 일단 서버(102)가 성공적으로 인증 요청 메시지의 진위를 검증하면, 서버는 그 메시지의 콘텐츠를 검사하여 콘텐츠가 유효한지를 결정한다. 만일 콘텐츠가 유효하다면, 노드(102)는 응답 메시지를 발생하여 노드(101)로 전송할 수 있는데, 이 응답 메시지는 선택사양으로 공개 키(Cpub)로 암호화되고 선택사양으로 개인 키(Spriv)를 이용하여 서명될 수 있다.
도 5를 참조하면, 블록(704)에 따라서 노드(101)는 노드(102)로부터 응답 메시지의 수신에 관해 모니터링할 수 있다. 도 7에서 도시되지 않지만, 만일 노드(102)로부터 응답 메시지가 수신되지 않으면 (또는 미리 할당된 시한 내에 수신되지 않으면), 방법은 블록(708)으로 진행하여 종료할 수 있다. 만일 응답 메시지가 수신되면, 방법은 블록(705)으로 진행할 수 있고, 여기서 노드(101)는 수신한 응답 메시지에 대해 검증 동작을 수행할 수 있다. 예를 들면, 응답 메시지가 노드(102)에 의해 Cpub을 이용하여 암호화되었다면 노드(101)는 Cpriv를 이용하여 응답 메시지를 복호화하려 시도할 수 있다. 만일 그러한 복호화가 성공하면, 노드(101)는 응답 메시지가 Cpub을 알고 있는 당사자, 즉 노드(102)로부터 발원된 것이라고 확신할 수 있다.
추가로 응답 메시지(들)의 진위를 검증하기 위해, 노드(101)는 노드(102)에 의해 그러한 메시지에 적용된 디지털 시그니처를 입증할 수 있다. 예를 들면, 만일 노드(102)가 그의 개인 키(예를 들면, Spriv)를 이용하여 응답 메시지를 서명하였으면, 노드(101)는 그 시그니처를 공지된 시그니처 검증 프로토콜을 이용하는 대응하는 공개 키(예를 들면, Spub)을 이용하여 검증할 수 있다. 이러한 목적을 위해, 만일 Spub이 아직 봉인해제되지 않았다면, 노드(101)는 이때 그의 엔클레이브 내부의 Spub을 봉인해제할 수 있다.
그 다음 방법은 블록(706)으로 진행할 수 있는데, 여기서 응답 메시지가 성공적으로 입증되었는지에 대해 결정이 내려질 수 있다. 만일 응답 메시지의 입증이 성공하지 못하면, 방법은 블록(708)으로 진행하여 종료할 수 있다. 만일 응답 메시지의 입증이 성공이면, 방법은 블록(707)으로 진행할 수 있는데, 여기서 노드(101)는 노드(102)와 보안 세션(통신 채널)을 설정할 수 있다. 일부 실시예에서, 노드(101) 및 노드(102)는 자기들 각자의 공개 키를 이용하여 메시지를 서로 암호화하는 보안 세션을 설정할 수 있다. 즉, 노드(102)는 노드(101)에 보낼 메시지를 Cpub을 이용하여 암호화할 수 있으며 노드(101)는 서버(102)에 보낼 메시지를 Spub을 이용하여 암호화할 수 있다. 노드(101) 및 노드(102)는 이렇게 암호화된 메시지를 자기들의 대응하는 개인 키, 즉 Cpriv 및 Spriv를 이용하여 복호화할 수 있다. 이러한 방법으로, 노드(101) 및 노드(102)는 자기들의 대응하는 공개 및 개인 키를 이용하여 안전하게 정보를 전달하고 교환할 수 있다.
대안으로 또는 부가적으로, 노드(101) 및 노드(102)는 공유 세션 키(shared session key, SSK)의 사용에 기초하여 보안 세션을 협상할 수 있다. 예를 들어, 상호 인증 시, 노드(101) 및 노드(102)는 SSK를 설정하기 위해 서명 및 메시지 인증 코드(sign and message authentication code, SIGMA) 프로토콜 또는 다른 적합한 프로토콜을 실행할 수 있다. 어쨌든, SSK는 임시적이거나 영구적일 수 있다. 만일 임시적이면, SSK는 설정된 개수(예를 들면, 1, 2 등)의 세션 동안 또는 설정된 기간 동안 유효한 채로 남아 있을 수 있으며, 그 후 새로운 SSK가 필요할 수 있다. 어쨌든 노드(101) 및 노드(102)는 보안 세션이 활성 상태인 동안 SSK를 이용하여 서로에게 전할 메시지를 암호화할 수 있다. 노드들은 각기 SSK를 알고 있기 때문에, 노드(101)는 노드(102)로부터의 SSK로 암호화된 메시지를 복호화할 수 있으며, 그 반대로도 가능하다. 이러한 방법으로, 노드(101) 및 노드(102)는 공유 세션 키를 이용하여 메시지를 안전하게 교환할 수 있다. 보안 세션이 설정된 후, 방법은 블록(708)으로 진행하여 종료할 수 있다.
SIGMA 프로토콜을 사용하여 SSK를 생성하고 사용하는 것이 보안 세션을 설정하기에 적합한 메커니즘이지만, 다른 메커니즘도 또한 본 개시에 의해 사용될 수 있고 구상된다. 실제로, 본 개시와 일치하여 클라이언트와 서버 사이에서 보안 통신 세션을 설정하기 위한 임의의 적합한 암호 프로토콜이 사용될 수 있다.
일단 보안 세션이 설정되면, 노드(101)는 정보 요청 메시지를 노드(102)로 전송할 수 있다. 그러한 메시지는 선택사양으로 서명되고 SSK 또는 공개 키(Spub)를 이용하여 암호화될 수 있다. 노드(102)는 그러한 메시지를 선택사양으로 검증하고 복호화할 수 있고, 요청된 정보를 노드(101)로 전송할 수 있다. 이와 같은 역량은 기업 권한 관리 맥락에서 특별한 용도를 가질 수 있다. 실제로, 노드(101)는 보안 세션을 이용하여 디지털 정보(예를 들면, 영화, 노래, 및 텍스트와 같은 콘텐츠), 디지털 정보에 관한 라이선스 등의 요청을 안전하게 노드(102)로 송신할 수 있고, 노드(102)는 보안 세션을 이용하여 그 보안 세션에 따라서 암호화된 응답 메시지에서 요청된 콘텐츠를 제공할 수 있다. 마찬가지로, 노드(102)는 보안 채널을 이용하여 모듈, 소프트웨어 등을 안전하게 노드(101)로 분배할 수 있다.
이제 본 개시와 일치하는 예시적인 보안 정보 전달 방법과 관련하여 수행될 수 있는 노드(102)의 동작에 관한 흐름도인 도 6이 참조된다. 명확하게 설명되지 않을지라도, 도 6에 따라서 수행된 동작은 SPM(312) 또는 서버 기업 권한 관리 모듈(server enterprise rights management module, SERMM)과 같은 노드상의 하나 이상의 모듈을 실행함으로써 발생될 수 있다.
도시된 바와 같이, 방법은 블록(801)에서 시작한다. 블록(802)에서, 노드는 노드(101)로부터 인증 요청 메시지의 수신을 모니터링할 수 있다. 그 다음 방법은 블록(803)으로 진행할 수 있으며, 여기서 정보 요청 메시지가 수신되었는지에 대해 결정이 내려질 수 있다. 만일 수신되지 않았다면, 방법은 블록(802)으로 되돌아가서 반복한다. 그러나 인증 요청 메시지가 수신되었으면, 방법은 블록(804)으로 이어질 수 있다.
전술한 바와 같이, 인증 요청 메시지는 노드(101)의 화이트리스트 ID 뿐만 아니라 디지털 시그니처를 포함할 수 있다. 블록(804)에 따라서, 노드(102)는 정보 요청 메시지 내 화이트리스트 ID를 노드(102)에서 가까이 또는 멀리 예를 들면 도 3의 데이터베이스(314)에 저장될 수 있는 미리 승인된 화이트리스트 ID의 데이터베이스에 대비하여 검증할 수 있다.
만일 정보 요청 메시지 내 화이트리스트 ID가 미리 승인된 화이트리스트 ID와 일치하면, 방법은 블록(805)으로 진행할 수 있고, 여기서 노드(102)는 인증 요청 메시지에 적용된 디지털 시그니처를 입증할 수 있다. 예를 들면, 인증 요청 메시지가 노드(101)의 개인 키(예를 들면, Cpriv, EPID 개인 키 등)로 서명된 경우, 노드(102)는 미리 승인된 화이트리스트 ID와 연관하여 예를 들면 노드(102)의 데이터베이스(314)에 저장되어 있을 수 있는 대응하는 공개 키(예를 들면, Cpub, EPID 공개 키)를 이용하여 시그니처를 입증할 수 있다.
그 다음 방법은 블록(806)으로 진행할 수 있고, 여기서 시그니처가 성공적으로 검증되었는지에 대해 결정될 수 있다. 검증되지 않았다면, 방법은 블록(809)으로 진행하여 종료할 수 있다. 만일 시그니처가 성공적으로 검증되면, 방법은 블록(807)으로 진행할 수 있고, 여기서 노드(102)는 필요하다면 정보 요청 메시지를 복호화할 수 있다. 노드(101)는 정보 요청 메시지의 모두 또는 그의 일부를 서버의 공개 키인 Spub을 이용하여 암호화할 수 있다는 것을 다시 주목해보면, 이 경우 노드(101)는 그의 개인 키인 Spriv를 이용하여 그러한 메시지를 복호화할 수 있다.
일단 복호화가 완료되면 (또는 만일 정보 요청 메시지가 암호화되지 않았다면), 방법은 블록(808)으로 진행할 수 있다. 이 블록에 따라서, 노드(102)는 예를 들면 전술한 바와 같이 협상된 SSK 및/또는 노드(101) 및 노드(102)의 공개 및 개인 키를 이용하여 노드(101)와 보안 통신 세션을 협상할 수 있다. 한정하지 않고, 노드(101) 및 노드(102)는 보안 통신 세션이 활성 상태인 동안 노드(101)와 노드(102) 사이의 모든 메시지를 암호화하기 위해 사용될 수 있는 임시 SSK를 협상하는 것이 바람직하다. 그 다음 방법은 블록(809)으로 진행하여 종료할 수 있다.
그러므로 전술한 바는 엔클레이브를 인스턴트화하고, 엔클레이브를 인증하고, 엔클레이브들 사이에서 통신하는 실시예의 설명이다. 아래의 설명은 이와 같은 역량을 가진 요소를 활용하는 실시예를 설명한다.
도 7은 본 발명의 실시예에서 보안 컴퓨팅을 위한 프로세스(700)를 포함한다 프로세스(700)는 제 1 보안 엔클레이브를 초기화하는 단계(예를 들면, 인스턴트화하는 단계)(블록(705)) 및 제 2 보안 엔클레이브를 초기화하는 단계(블록(720))를 포함하며, 각각의 엔클레이브는 제 1 및 제 2 보안 엔클레이브 외부에서 실행하는 소프트웨어가 제 1 및 제 2 보안 엔클레이브 내부의 소프트웨어 및 데이터에 액세스하지 못하게 하는 신뢰성 있는 소프트웨어 실행 환경을 포함한다. 제 1 보안 엔클레이브는 애플리케이션(예를 들면, PDF 렌더링 애플리케이션 및 미디어 플레이어 등)의 가상 어드레스 공간 내부에서 격리된 메모리 구역을 포함하며 제 1 보안 엔클레이브 내부에서 실행하는 코드만이 제 1 보안 엔클레이브 내에 배치된 데이터(예를 들면, 비디오, 오디오, 및 텍스트 등과 같은 디지털 콘텐츠)에 액세스할 수 있다. 제 2 보안 엔클레이브는 애플리케이션(예를 들면, 멀웨어 검출 유틸리티와 같은 검사 엔진(본 명세서에서 AV 유틸리티라고도 지칭되며 비공인 치수 및 멀웨어 시그니처의 존재 등과 같은 어떠한 이유 때문에 콘텐츠가 부적당한지를 결정하는 코드를 포함할 수 있음)의 가상 어드레스 공간 내부에서 격리된 메모리 구역을 통상 포함할 수 있으며 제 2 보안 엔클레이브 내부에서 실행하는 코드만이 제 2 보안 엔클레이브 내에 배치된 데이터(예를 들면, 비디오, 오디오, 및 텍스트 등과 같은 디지털 콘텐츠)에 액세스할 수 있다.
다른 실시예는 예를 들면 보강된 문서 렌더러를 포함하지만 검사 엔진이 보안 엔클레이브와 같은 신뢰성 있는 컴퓨팅 환경에 반드시 포함되지 않아도 되는 단일의 보안 엔클레이브를 포함할 수 있다.
또한, 제 1 및 제 2 보안 엔클레이브 중 어느 것도 (다른 실시예에서는 둘 중 하나 또는 둘 다 특권을 받을 수 있을지라도) 반드시 특권을 받는 것은 아니다. 그러므로 보안 엔클레이브에 포함된 애플리케이션은 콘텐츠를 처리(예를 들면, 영화를 재생하거나 영화를 검사)할 수 있는데 반해 하나의 엔클레이브를 포함하는 플랫폼에서 동작하는 오퍼레이팅 시스템, 가상 머신 모니터, 및 이진 입출력 시스템(binary input/output system, BIOS) 중 적어도 하나는 제 1 보안 엔클레이브보다 많은 특권을 가진 멀웨어를 포함한다. 그러한 멀웨어는 오퍼레이팅 시스템에서 존재하는 멀웨어의 본성으로 인해 제 1 보안 엔클레이브보다 더 많은 특권을 가질 수 있다.
블록(710)에서, 제 1 보안 엔클레이브는 콘텐츠를 수신하고, 블록(715)에서 콘텐츠에 대응하는 정책을 검사한다. 이들 블록은 반드시 이와 같은 순서로 일어나야 하는 것은 아니며 서로와 관계 없이 일어날 수 있다. 정책은 만약 있다면 검사 엔진이 제 1 보안 엔클레이브에 의해 수신된 콘텐츠에 액세스할 수 있는 정책에 관한 것일 수 있다. 다른 실시예에서, (유틸리티가 보안 컴퓨팅에 초점을 맞추고 있는지에 상관 없이) 화이트리스트는 콘텐츠에 액세스할 수 있는 다른 유틸리티에 더 일반적으로 대응할 수 있다.
블록(725)은 제 1 보안 엔클레이브가 제 2 보안 엔클레이브를 인증하는 단계를 포함한다. 이것은 정책을 검사하는 것(블록(75))에 대한 대응일 수 있지만 다른 실시예에서 이 사례가 반드시 필요하지는 않다. 블록(725)은 제 1 보안 엔클레이브가 제 2 보안 엔클레이브를 인증하거나 또는 그 반대로 하는 것을 반드시 요구하지 않는다. 더 중요한 것은 해당 콘텐츠(예를 들면, 노래)를 검사할 수 있는 애플리케이션을 포함하고 있음으로써 나중에 제 2 보안 엔클레이브를 심사하기 위해 제 1 보안 엔클레이브가 제 2 엔클레이브가 "누구"인지를 인식하는 것이다. 인증(때로는 본 명세서에서 입증이라고 말함)은 다양한 선택사양의 요소를 포함할 수 있다. 예를 들면, 인증은 제 2 보안 엔클레이브가 레포트를 제 1 보안 엔클레이브에 전달하는 것을 포함할 수 있는데, 레포트(블록(730))는 (a) 제 2 보안 엔클레이브를 포함하는 적어도 하나의 컴퓨팅 플랫폼에 특유한 식별자, 독립 소프트웨어 벤더(ISV)(예를 들면, ISV에 대응하는 키 또는 시그니처), 및 (예를 들면, 제 2 보안 엔클레이브를 포함하는 플랫폼의 프로세서에서 레지스터 설정에 기초한) 적어도 하나의 프로세서의 일부분, (b) 컴퓨팅 플랫폼에 의해 발생된 임의값, 및 (c) 제 2 보안 엔클레이브에 포함된 콘텐츠에 기초한 치수 중 적어도 하나에 기초한다. 인증에 관해, 각종 식별자는 이것으로 한정되지 않지만 도 4와 관련하여 사용자 정보의 블랍, 노드(101, 102)의 임의값, 서명된 엔클레이브 레포트, 및 서명된 엔클레이브 쿼트 등을 포함하는 것으로 설명되었다.
인증은 또한 제 2 보안 엔클레이브에 포함된 인증된 검사 엔진을 열거하는 화이트리스트를 포함하는 정책(블록(735))을 포함할 수 있다. 예를 들면, 일단 제 1 보안 노드가 제 2 보안 엔클레이브가 "누구"인지를 이해하면, 식별(또는 그의 어떤 변형)은 제 2 보안 노드의 애플리케이션이 콘텐츠를 검사해야 하는지를 결정하기 위해 화이트리스트와 비교될 수 있다. 그러므로 실시예는 제 2 보안 엔클레이브를 믿을 수 있는 엔클레이브로서 인식하지만 제 2 엔클레이브가 화이트리스트에 없기 때문에 여전히 제 2 엔클레이브를 "인증"하지 않는 제 1 보안 엔클레이브를 가질 수 있다. 그래서 만일 성공이면 제 1 보안 엔클레이브는 정책을 검사하는 것에 "응답하여" 제 2 보안 엔클레이브를 인증한다.
블록(740)은 제 2 보안 엔클레이브를 인증한 것에 응답하여 제 1 보안 노드가 암호화된 콘텐츠를 제 2 보안 엔클레이브에 전달하는 단계를 포함한다. 블록(745)은 제 2 보안 엔클레이브가 암호화된 콘텐츠를 복호화하여 복호화된 콘텐츠를 생성하고, 복호화된 콘텐츠를 검사하는 단계를 포함한다. 이와 같은 분석 또는 검사에 기초하여, 제 2 보안 엔클레이브는 복호화된 콘텐츠를 검사하는 것에 응답하여 복호화된 콘텐츠를 인증하고(즉, 비공인 치수, 멀웨어 시그니처의 존재 등과 같은 어떤 이유 때문에 콘텐츠가 부적당한지를 결정하고), 복호화된 콘텐츠를 인증하는 것에 응답하여 메시지를 제 1 보안 엔클레이브로 전달(746, 747)한다. 진위를 표시하는 메시지(746)는 블록(750)으로 진행하는데, 여기서 제 2 보안 엔클레이브로부터 메시지를 수신하는 것에 응답하여 제 1 보안 엔클레이브는 암호화된 콘텐츠를 복호화하여 부가적인 복호화된 콘텐츠를 생성하고 부가적인 복호화된 콘텐츠를 처리한다(예를 들면, 문서를 렌더링하고, 노래를 재생하고, 텔레비전 쇼를 재생한다). 그러나, 출처불명/진위가 불확실하다고 표시하는 메시지(747)는 (블록(725)에서 인증이 성공하지 못하므로) 블록(755)으로 진행하며, 이 블록은 제 2 보안 엔클레이브가 복호화된 콘텐츠를 검사하는 것에 응답하여 제 1 보안 엔클레이브가 암호화된 콘텐츠로부터 도출된 암호화되지 않은 콘텐츠를 처리하지 못하게 하는 단계를 포함한다.
본 발명의 실시예는 시스템이 제 1 및 제 2 보안 엔클레이브를 모두 포함하는 것으로 한정되지 않는다. 예를 들면, 실시예는 제 1 보안 엔클레이브 자체에 관련하는 명령어에서 제공된다. 예를 들면, 실시예는 적어도 하나의 프로세서에 의해 실행되는 방법을 포함하며, 이 방법은 제 1 보안 엔클레이브 외부에서 실행하는 소프트웨어가 제 1 보안 엔클레이브 내부의 소프트웨어 및 데이터에 액세스하는 것을 방지하는 신뢰성 있는 소프트웨어 실행 환경을 포함하는 제 1 보안 엔클레이브를 초기화하는 단계와; 제 1 보안 엔클레이브가, 콘텐츠를 수신하고 정책을 검사하고, 정책을 검사하는 것에 기초하여 멀웨어 검출 유틸리티가 콘텐츠를 검사할 수 있는지를 결정하고, 멀웨어 검출 유틸리티를 인증하는 단계와, 멀웨어 검출 유틸리티에 응답하여 콘텐츠의 암호화된 버전을 멀웨어 검출 유틸리티로 전달하고, 콘텐츠가 인증된 것을 표시하는 메시지를 멀웨어 검출 유틸리티로부터 수신하는 단계와; 메시지를 수신하는 것에 응답하여 콘텐츠를 실행하는 단계를 포함한다. 이와 같은 실시예는 제 2 보안 엔클레이브와 상호작용할 수 있지만 제 2 보안 엔클레이브는 실시예를 이행하거나 인스턴트화할 필요 없다.
여러 엔클레이브는 정책을 포함하는 데이터베이스와 함께 단일의 플랫폼(예를 들면, 태블릿)에 포함될 수 있다. 그러나, 이러한 항목들은 여러 노드 사이에 분산될 수 있다. 예를 들면, 정책은 클라우드 기반 서버에 포함될 수 있고 검사 엔진은 스마트폰 또는 더 포괄적으로는 이동 컴퓨팅 노드상에 존재하는 보강된 렌더링 엔진을 가진 다른 클라우드 기반 서버에 포함될 수 있다.
실시예는 장치를 포함할 수 있으며, 이 장치는 적어도 하나의 메모리와, 메모리에 연결되어, 제 1보안 엔클레이브 외부에서 실행하는 소프트웨어가 제 1 보안 엔클레이브 내부의 소프트웨어 및 데이터에 액세스하는 것을 방지하는 제 1 의 신뢰성 있는 소프트웨어 실행 환경을 포함하는 제 1 보안 엔클레이브를 초기화하는 것을 포함하는 동작을 수행하는 적어도 하나의 프로세서와, 제 1 보안 엔클레이브 - 제 1 보안 엔클레이브는 콘텐츠를 수신하고 정책을 검사하고, 정책을 검사하는 것에 기초하여 검사 엔진 모듈이 콘텐츠를 검사할 수 있는지를 결정하고, 검사 엔진 모듈을 인증하고, 멀웨어 검출 유틸리티에 응답하여 콘텐츠의 암호화된 버전을 검사 엔진 모듈로 전달하고, 검사 엔진 모듈로부터 콘텐츠가 인증된 것을 표시하는 메시지를 수신하고, 메시지를 수신하는 것에 응답하여 콘텐츠를 처리함 - 를 포함한다. 메모리는 도 3의 메모리(304 또는 310)와 같은 보안 엔클레이브에 의해 보안된 메모리를 포함할 수 있다. 프로세서는 프로세서(302, 309) 등을 포함할 수 있다.
다시 도 3을 참조하면, 도 3은 실시예를 동작시키는 하드웨어 기반 시스템의 실시예를 도시한다. 노드(101, 102) 중 하나의 노드는 아래에서 논의되는 도 8의 시스템과 같은 시스템을 활용할 수 있다. 실제로, 실시예는 많은 여러 종류의 시스템에서 사용될 수 있다. 예를 들면, 일 실시예에서, 통신 디바이스는 본 명세서에서 설명된 여러 방법 및 기술을 수행하도록 배치될 수 있다. 물론 본 발명의 범위는 통신 디바이스로 한정되지 않으며, 그 대신 다른 실시예는 명령어를 처리하기 위한 다른 유형의 장치에 관련될 수 있다.
프로그램 명령어는 명령어에 따라 프로그램된 범용 또는 특수 목적 프로세싱 시스템으로 하여금 본 명세서에서 설명된 동작을 수행하게 하는데 사용될 수 있다. 대안으로, 동작은 동작을 수행하는 하드와이어드 로직을 포함하는 특정한 하드웨어 컴포넌트에 의해, 또는 프로그램된 컴퓨터 컴포넌트와 커스톰 하드웨어 컴포넌트의 임의의 조합에 의해 수행될 수 있다. 본 명세서에서 설명된 방법은 (a) 프로세싱 시스템 또는 다른 전자 디바이스가 그 방법을 수행하도록 프로그램하는데 사용될 수 있는 명령어가 저장된 하나 이상의 머신 판독가능한 매체를 포함할 수 있는 컴퓨터 프로그램 제품, 또는 (b) 시스템으로 하여금 방법을 수행하게 하는 명령어가 저장된 적어도 하나의 저장 매체로서 제공될 수 있다. 본 명세서에서 사용된 용어 "머신 판독가능한 매체" 또는 "저장 매체"는 머신에 의해 실행하기 위한 명령어들의 시퀀스를 저장 또는 인코딩할 수 있고 또한 그 머신으로 하여금 본 명세서에서 설명된 방법 중 어느 하나의 방법을 수행하게 하는 임의의 매체를 포함할 수 있다. 따라서 용어 "머신 판독가능한 매체" 또는 "저장 매체"는 이것으로 제한되지 않지만, 고체 상태 메모리, 광 및 자기 디스크, 판독 전용 메모리(read-only memory, ROM), 프로그래머블 ROM(programmable ROM, PROM), 소거가능한 PROM(erasable PROM, EPROM), 전기적 EPROM(electrically EPROM, EEPROM), 디스크 드라이브, 플로피 디스크, 콤팩트 디스크 ROM(compact disk ROM, CD-ROM), 디지털 다기능 디스크(digital versatile disk, DVD), 플래시 메모리, 광자기 디스크뿐만 아니라 머신 액세스 가능한 생체 상태 보존 또는 신호 보존 저장소와 같은 에조틱 매체(exotic medium)를 포함할 것이다. 매체는 정보를 머신에 의해 판독가능한 형태로 저장하고, 송신하고, 또는 수신하기 위한 임의의 메커니즘을 포함할 수 있으며, 매체는 프로그램 코드가 전달될 수 있는, 안테나, 광섬유, 통신 인터페이스 등과 같은 매체를 포함할 수 있다. 프로그램 코드는 패킷, 직렬 데이터, 병렬 데이터 등의 형태로 전송될 수 있으며, 압축 또는 암호화된 포맷으로 사용될 수 있다. 그뿐만 아니라 본 기술에서 소프트웨어를 행위를 취하거나 결과를 유발하므로 하나의 형태 도는 다른 형태(예를 들면, 프로그램, 절차, 프로세스, 애플리케이션, 모듈, 및 로직 등)으로 부르기도 한다. 그러한 표현은 프로세싱 시스템에 의한 소프트웨어의 실행으로 말미암아 프로세서가 행위를 수행하거나 결과를 생성하게 한다는 것을 그저 간단한 방식으로 말하는 것이다.
이제 도 8을 참조하면, 본 발명의 실시예에 따라서 시스템 실시예(1000)의 블록도가 도시된다. 시스템(1000)은 예를 들면, 셀룰러 폰, 스마트폰, 태블릿, 울트라북®, 노트북, 랩톱, 개인 휴대정보 단말기, 및 이동 프로세서 기반 플랫폼과 같은 이동 컴퓨팅 노드에 포함될 수 있다.
멀티프로세서 시스템(1000)은 제 1 프로세싱 요소(1070) 및 제 2 프로세싱 요소(1080)를 포함하는 것으로 도시된다. 두 개의 프로세싱 요소(1070 및 1080)가 도시되어 있지만, 시스템(1000)의 실시예는 또한 단 하나의 그러한 프로세싱 요소를 포함할 수 있음은 물론이다. 시스템(1000)은 제 1 프로세싱 요소(1070) 및 제 2 프로세싱 요소(1080)가 포인트-투-포인트 인터커넥트(1050)를 통해 연결된 포인트-투-포인트 인터커넥트 시스템으로서 예시된다. 예시된 인터커넥트 중 임의의 인터커넥트 또는 모든 인터커넥트는 포인트-투-포인트 인터커넥트라기 보다는 오히려 멀티-드롭 버스로서 구현될 수 있다. 도시된 바와 같이, 각각의 제 1 프로세싱 요소(1070) 및 1080)는 제 1 및 제 2 프로세서 코어(즉, 프로세서 코어(1074a 및 1074b) 및 프로세서 코어(1084a 및 1084b)를 포함하는 멀티코어 프로세서일 수 있다. 그러한 코어(1074, 1074b, 1084a, 1084b)는 본 명세서에서 논의된 방법과 유사한 방식으로 명령어 코드를 실행하도록 구성될 수 있다.
각각의 프로세싱 요소(1070, 1080)는 적어도 하나의 공유 캐시를 포함할 수 있다. 공유 캐시는 프로세서의 하나 이상의 컴포넌트, 예를 들면 코어(1074a, 1074b 및 1084a, 1084b)에 의해 각기 활용되는 데이터(예를 들면, 명령어)를 저장할 수 있다. 예를 들면, 공유 캐시는 프로세서의 컴포넌트에 의한 빠른 액세스를 위해 메모리(1032, 1034)에 저장된 데이터를 국부적으로 캐싱할 수 있다. 하나 이상의 실시예에서, 공유 캐시는 레벨 2(L2), 레벨 3(L3), 레벨 4(L4) 또는 다른 레벨의 캐시, 최종 레벨 캐시(last level cache, LLC), 및/또는 이들의 조합과 같은 하나 이상의 중간-레벨 캐시를 포함할 수 있다.
단지 두 프로세싱 요소(1070, 1080)만이 도시되어 있지만, 본 발명의 범위는 그렇게 한정되지 않음은 물론이다. 다른 실시예에서, 하나 이상의 부가적인 프로세싱 요소는 특정 프로세서에서 존재할 수 있다. 대안으로, 프로세싱 요소(1070, 1080) 중 하나 이상의 프로세싱 요소는 프로세서와 다른 요소, 예를 들면 가속기 또는 필드 프로그래머블 게이트 어레이일 수 있다. 예를 들면, 부가적인 프로세싱 요소(들)는 제 1 프로세싱 요소(1070)와 동일한 부가적인 프로세서(들), 제 1 프로세싱 요소(1070)에 대해 이종이거나 비대칭인 부가적인 프로세서(들), (예를 들면, 그래픽 가속기 또는 디지털 신호 프로세싱(digital signal processing, DSP) 유닛과 같은) 가속기, 필드 프로그래머블 게이트, 또는 임의의 다른 프로세싱 요소를 포함할 수 있다. 프로세싱 요소(1070, 1080) 사이에는 아키텍처적이고, 마이크로아키텍처적이고, 정열적인 전력 소비 특성 등을 비롯한 장점들의 메트릭스의 범위의 관점에서 많은 차이가 있을 수 있다. 이와 같은 차이는 프로세싱 요소(1070, 1080)를 자체적으로 비대칭과 이질성이라고 나타낼 수 있다. 적어도 하나의 실시예에 대해 말하자면, 각종 프로세싱 요소(1070, 1080)는 동일한 다이 패키지에서 존재할 수 있다.
제 1 프로세싱 요소(1070)는 또한 메모리 제어기 로직(memory controller logic, MC)(1072) 및 포인트-투-포인트(point-to-point, 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 인터페이스(1076, 1086)와 P-P 인터페이스(1062, 10104)를 통해 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 버스(1010)에 연결될 수 있다. 일 실시예에서, 본 발명의 범위가 이것으로 한정되지 않지만, 제 1 버스(1010)는 주변 컴포넌트 인터커넥트(Peripheral Component Interconnect, PCI) 버스, 또는 PCI 익스프레스 버스나 다른 3세대 I/O 인터커넥트 버스와 같은 버스일 수 있다.
도시된 바와 같이, 여러 I/O 디바이스(1014, 1024)는 제 1 버스(10110)를 제 2 버스(1020)에 연결할 수 있는 버스 브릿지(1018)와 함께 제 1 버스(10110)에 연결될 수 있다. 일 실시예에서, 제 2 버스(1020)는 LPC(low pin count) 버스일 수 있다. 예를 들면 키보드/마우스(1022), (궁극적으로 컴퓨터 네트워크와 통신할 수 있는) 통신 디바이스(들)(1026), 및 일 실시예에서 코드(1030)를 포함할 수 있는 디스크 드라이브 또는 다른 대량 저장 디바이스와 같은 데이터 저장 유닛(1028)을 비롯한 여러 디바이스는 제 2 버스(1020)에 연결될 수 있다. 코드(1030)는 전술한 방법 중 하나 이상의 방법의 실시예를 수행하기 위한 명령어를 포함할 수 있다. 또한, 오디오 I/O(1024)는 제 2 버스(1020)에 연결될 수 있다.
시스템(1000)의 각종 컴포넌트, 이를 테면 컴포넌트(1070, 1080, 1032, 1034, 1038, 1090)는 본 명세서에서 설명된 RDL 라인을 포함할 수 있다.
다른 실시예가 예상된다는 것을 주목하자. 예를 들면, 도시된 포인트-투-포인트 아키텍처 대신, 시스템은 멀티-드롭 버스 또는 다른 그러한 통신 토폴로지를 구현할 수 있다. 또한, 대안으로 도 8의 요소는 도 8에서 도시된 것보다 많거나 적은 수의 통합된 칩을 이용하여 분할될 수 있다.
또한, 보안 엔클레이브가 때로는 인텔® 보안 엔클레이브(때때로 인텔® 소프트웨어 가이드 확장(Software Guard Extensions, 인텔® SGX)이라 지칭됨)으로 비유되었지만, "보안 엔클레이브"는 신뢰성 있는 소프트웨어 실행 환경의 한 형태이며 본 명세서 및 청구범위에서 사용된 바와 같이 더 포괄적으로는 애플리케이션에 대해 격리된 메모리 구역을 말하며 보안 엔클레이브 내부에서 처리하는 코드만이 보안 엔클레이브 내에 배치된 각각의 데이터에 액세스할 수 있다.
예 1은 적어도 하나의 프로세서에 의해 실행된 방법을 포함하며, 방법은 제 1 및 제 2 보안 엔클레이브를 초기화하는 단계 - 각각의 보안 엔클레이브는 제 1 및 제 2 보안 엔클레이브 외부에서 실행하는 소프트웨어가 제 1 및 제 2 보안 엔클레이브 내부의 소프트웨어 및 데이터에 액세스하는 것을 방지하는 신뢰성 있는 소프트웨어 실행 환경을 포함함 - 와, 제 1 보안 엔클레이브가 (a)(i) 정책을 검사하고, (a)(ii) 정책을 검사하는 것에 응답하여 제 2 보안 엔클레이브를 인증하고, (a)(iii) 제 2 보안 엔클레이브를 인증하는 것에 응답하여 암호화된 콘텐츠를 제 2 보안 엔클레이브로 전달하는 단계와, 제 2 보안 엔클레이브가 (b)(i) 암호화된 콘텐츠를 복호화하여 복호화된 콘텐츠를 생성하고, (b)(ii) 복호화된 콘텐츠를 검사하는 단계를 포함한다.
예 2에서, 예 1의 주제는 선택사양으로 정책이 제 2 보안 엔클레이브에 포함된 인증된 검사 엔진을 열거하는 화이트리스트를 포함하는 것을 포함될 수 있다.
예 3에서, 예 1-2의 주제는 선택사양으로 제 2 보안 엔클레이브를 인증하는 단계가 제 2 보안 엔클레이브에 포함된 콘텐츠의 치수를 분석하는 단계를 포함하는 것을 포함할 수 있다.
예 4에서, 예 1-3의 주제는 선택사양으로 제 2 보안 엔클레이브 콘텐츠가 멀웨어 검출 유틸리티를 포함하는 것을 포함될 수 있다.
예 5에서, 예 1-4의 주제는 선택사양으로 복호화된 콘텐츠를 검사하는 것에 응답하여 제 2 보안 엔클레이브가 복호화된 콘텐츠를 인증하고, 복호화된 콘텐츠를 인증하는 것에 응답하여 제 1 보안 엔클레이브로 메시지를 전달하는 단계를 포함하는 것을 포함될 수 있다.
예 6에서, 예 1-5의 주제는 선택사양으로 제 2 보안 엔클레이브로부터 메시지를 수신하는 것에 응답하여 제 1 보안 엔클레이브가 암호화된 콘텐츠를 복호화하여 부가적인 복호화된 콘텐츠를 생성하고 부가적인 복호화된 콘텐츠를 처리하는 단계를 포함하는 것을 포함할 수 있다.
예 7에서, 예 1-6의 주제는 선택사양으로 제 1 보안 엔클레이브가 특권을 갖지 않으며, 방법은 또한 오퍼레이팅 시스템, 가상 머신 모니터, 및 이진 입출력 시스템(BIOS) 중 적어도 하나가 제 1 보안 엔클레이브보다 많은 특권을 가진 멀웨어를 포함하는 동안 부가적인 복호화된 콘텐츠를 처리하는 단계를 포함하는 것을 포함할 수 있다.
예 8에서, 예 1-7의 주제는 선택사양으로 제 1 보안 엔클레이브가 특권을 갖지 않는 것을 포함할 수 있다.
예 9에서, 예 1-8의 주제는 선택사양으로 제 2 보안 엔클레이브가 복호화된 콘텐츠를 검사하는 것에 응답하여, 제 1 보안 엔클레이브가 암호화된 콘텐츠로부터 도출된 암호화되지 않은 콘텐츠를 처리하지 않게 하는 단계를 포함할 수 있다.
예 10에서, 예 1-9의 주제는 선택사양으로 제 1 보안 엔클레이브가 애플리케이션의 가상 어드레스 공간 내부에서 격리된 메모리 구역을 포함하며 제 1 보안 엔클레이브 내부에서 처리하는 코드만이 제 1 보안 엔클레이브 내에 배치된 데이터에 액세스할 수 있는 것을 포함할 수 있다.
예 11에서, 예 1-10의 주제는 선택사양으로 암호화된 콘텐츠가 비디오 및 오디오 콘텐츠 중 적어도 하나를 포함하는 것을 포함할 수 있다.
예 12에서, 예 1-11의 주제는 선택사양으로 제 2 보안 엔클레이브를 인증하는 단계가 제 2 보안 엔클레이브가 레포트를 제 1 보안 엔클레이브에 전달하는 단계 - 레포트는 (a) 제 2 보안 노드를 포함하는 컴퓨팅 플랫폼, 독립 소프트웨어 벤더(ISV), 및 적어도 하나의 프로세서의 일부분 중 적어도 하나에 특유한 식별자와, (b) 컴퓨팅 플랫폼에 의해 발생된 임의값(nonce), 및 (c) 제 2 보안 엔클레이브에 포함된 콘텐츠에 기초하는 치수 중 적어도 하나에 기초함 - 를 포함하는 것을 포함할 수 있다.
실시예는 복수개의 명령어를 포함하는 적어도 하나의 머신 판독가능한 매체를 포함하고, 명령어는 컴퓨팅 디바이스에서 실행됨에 따라서, 컴퓨팅 디바이스로 하여금 예 1 내지 예 12 중 어느 한 예에 따른 방법을 실행하게 한다. 실시예는 예 1 내지 예 12로부터의 동작 중 어느 하나의 동작을 수행하기 위한 수단을 포함한다. 실시예는 예 1 내지 예 12 중 어느 한 예에 따른 방법을 실행하도록 배치된 통신 디바이스를 포함한다.
예 13은 적어도 하나의 프로세서에 의해 실행된 방법을 포함하며, 방법은 제 1 보안 엔클레이브 외부에서 실행하는 소프트웨어가 제 1 보안 엔클레이브 내부의 소프트웨어 및 데이터에 액세스하는 것을 방지하는 신뢰성 있는 소프트웨어 실행 환경을 포함하는 제 1 보안 엔클레이브를 초기화하는 단계와, 제 1 보안 엔클레이브가 콘텐츠를 수신하고 권한 관리 정책을 검사하고, 정책을 검사하는 것에 기초하여 멀웨어 검출 유틸리티가 콘텐츠를 검사할 수 있는지를 결정하고, 멀웨어 검출 유틸리티를 인증하고, 멀웨어 검출 유틸리티를 인증하는 것에 응답하여 콘텐츠의 암호화된 버전을 멀웨어 검출 유틸리티로 전달하고, 콘텐츠가 인증된 것을 표시하는 메시지를 멀웨어 검출 유틸리티로부터 수신하는 단계와, 메시지를 수신하는 것에 응답하여 콘텐츠를 처리하는 단계를 포함한다.
예 14에서, 예 13의 주제는 선택사양으로 멀웨어 검출 유틸리티를 인증하는 단계가 멀웨어 검출 유틸리티의 적어도 일부분의 치수를 분석하는 단계를 포함하는 것을 포함할 수 있다.
예 15에서, 예 13-14의 주제는 선택사양으로 적어도 하나의 프로세서에 대응하는 오퍼레이팅 시스템, 가상 머신 모니터, 및 이진 입출력 시스템(BIOS) 중 적어도 하나가 제 1 보안 엔클레이브보다 많은 특권을 가진 멀웨어를 포함하는 동안 콘텐츠를 처리하는 단계를 포함할 수 있다.
예 16에서, 예 13-15의 주제는 선택사양으로 제 1 보안 엔클레이브가 특권을 갖지 않는 것을 포함할 수 있다.
예 17에서, 예 13-16의 주제는 선택사양으로 제 1 보안 엔클레이브가 애플리케이션의 가상 어드레스 공간 내부에서 격리된 메모리 구역을 포함하며 제 1 보안 엔클레이브 내부에서 실행하는 코드만이 제 1 보안 엔클레이브 내에 존재하는 콘텐츠에 액세스할 수 있는 것을 포함할 수 있다.
실시예는 복수개의 명령어를 포함하는 적어도 하나의 머신 판독가능한 매체를 포함하고, 명령어는 컴퓨팅 디바이스에서 실행됨에 따라서, 컴퓨팅 디바이스로 하여금 청구항 제 13 항 내지 제 17 항 중 어느 한 항에 따른 방법을 실행하게 한다.
예 18은 장치를 포함하며, 장치는 적어도 하나의 메모리와, 메모리에 연결되어, 제 1의 신뢰성 있는 소프트웨어 실행 환경 외부에서 실행하는 소프트웨어가 제 1의 신뢰성 있는 소프트웨어 실행 환경 내부의 소프트웨어 및 데이터에 액세스하는 것을 방지하는 제 1의 신뢰성 있는 소프트웨어 실행 환경을 초기화하는 것을 포함하는 동작을 수행하는 적어도 하나의 프로세서와, 제 1의 신뢰성 있는 소프트웨어 실행 환경 - 제 1의 신뢰성 있는 소프트웨어 실행 환경은 콘텐츠를 수신하고 정책을 검사하고, 정책을 검사하는 것에 기초하여 검사 엔진 모듈이 콘텐츠를 검사할 수 있는지를 결정하고, 검사 엔진 모듈을 인증하고, 멀웨어 검출 유틸리티를 인증하는 것에 응답하여 콘텐츠의 암호화된 버전을 검사 엔진 모듈로 전달하고, 검사 엔진 모듈로부터 콘텐츠가 인증된 것을 표시하는 메시지를 수신하고, 메시지를 수신하는 것에 응답하여 콘텐츠를 처리함 - 을 포함한다.
예 19에서, 예 18의 주제는 선택사양으로 동작이 장치의 오퍼레이팅 시스템, 가상 머신 모니터, 및 이진 입출력 시스템(BIOS) 중 적어도 하나가 제 1의 신뢰성 있는 소프트웨어 실행 환경보다 많은 특권을 가진 멀웨어를 포함하는 동안 콘텐츠를 처리하는 동작을 포함하는 것을 포함할 수 있다.
예 20에서, 예 18-19의 주제는 선택사양으로 제 1의 신뢰성 있는 소프트웨어 실행 환경이 특권을 갖지 않는 제 1 보안 엔클레이브를 포함하는 것을 포함할 수 있다.
예 21에서, 예 18-20의 주제는 선택사양으로 제 1 보안 엔클레이브가 애플리케이션의 가상 어드레스 공간 내부에서 적어도 하나의 메모리의 격리된 메모리 구역을 포함하며 제 1 보안 엔클레이브 내부에서 실행하는 코드만이 제 1 보안 엔클레이브에 존재하는 데이터에 액세스할 수 있는 것을 포함할 수 있다.
본 발명이 한정된 개수의 실시예에 대해 설명되었지만, 본 기술에서 통상의 지식을 가진 자라면 그로부터 많은 수정 및 변형을 인식할 것이다. 첨부의 청구의 범위는 그와 같은 수정 및 변형이 본 발명의 진정한 사상 및 범위에 속하는 것으로 의도하고자 한다.

Claims (25)

  1. 명령어가 저장된 적어도 하나의 저장 매체로서,
    상기 명령어는 시스템으로 하여금 동작을 수행하게 하되,
    상기 동작은,
    제 1 보안 엔클레이브(enclave) 및 제 2 보안 엔클레이브를 초기화하는 동작 - 각각의 보안 엔클레이브는, 상기 제 1 보안 엔클레이브 및 상기 제 2 보안 엔클레이브 내부에 부가적인 소프트웨어 및 데이터가 존재하는 동안, 상기 제 1 보안 엔클레이브 및 상기 제 2 보안 엔클레이브 외부에서 실행하는 소프트웨어가 상기 부가적인 소프트웨어 및 데이터에 액세스하는 것을 방지하는 신뢰성 있는 소프트웨어 실행 환경을 포함함 - 과,
    상기 제 1 보안 엔클레이브가 (a)(i) 정책을 검사하고, (a)(ii) 상기 정책을 검사하는 것에 응답하여 상기 제 2 보안 엔클레이브를 인증하고, (a)(iii) 상기 제 2 보안 엔클레이브를 인증하는 것에 응답하여 암호화된 콘텐츠를 상기 제 2 보안 엔클레이브로 전달하는 동작과,
    상기 제 2 보안 엔클레이브 - 상기 제 2 보안 엔클레이브는 멀웨어 검출 유틸리티를 포함함 - 가 (b)(i) 상기 암호화된 콘텐츠를 복호화하여 복호화된 콘텐츠를 생성하고, (b)(ii) 상기 멀웨어 검출 유틸리티로 상기 복호화된 콘텐츠를 검사하고, (b)(iii) 상기 멀웨어 검출 유틸리티로 상기 복호화된 콘텐츠를 검사하는 것에 응답하여 상기 복호화된 콘텐츠를 인증하고, (b)(iv) 상기 복호화된 콘텐츠를 인증하는 것에 응답하여 상기 제 1 보안 엔클레이브로 메시지를 전달하는 동작을 포함하는
    적어도 하나의 저장 매체.
  2. 제 1 항에 있어서,
    상기 정책은 상기 멀웨어 검출 유틸리티를 열거하는 화이트리스트(a whitelist)를 포함하는
    적어도 하나의 저장 매체.
  3. 제 1 항에 있어서,
    상기 제 2 보안 엔클레이브를 인증하는 동작은 상기 제 2 보안 엔클레이브에 포함된 콘텐츠의 치수를 분석하는 동작을 포함하는
    적어도 하나의 저장 매체.
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 동작은 상기 제 2 보안 엔클레이브로부터 상기 메시지를 수신하는 것에 응답하여 상기 제 1 보안 엔클레이브가 상기 암호화된 콘텐츠를 복호화하여 부가적인 복호화된 콘텐츠를 생성하고 상기 부가적인 복호화된 콘텐츠를 처리하는 동작을 포함하는
    적어도 하나의 저장 매체.
  7. 제 6 항에 있어서,
    상기 제 1 보안 엔클레이브는 특권을 갖지 않으며,
    상기 동작은, 오퍼레이팅 시스템, 가상 머신 모니터, 및 이진 입출력 시스템(binary input/output system: BIOS) 중 적어도 하나가 상기 제 1 보안 엔클레이브보다 많은 특권을 가진 멀웨어를 포함하는 동안 상기 부가적인 복호화된 콘텐츠를 처리하는 동작을 더 포함하는
    적어도 하나의 저장 매체.
  8. 제 1 항에 있어서,
    상기 제 1 보안 엔클레이브는 특권을 갖지 않는
    적어도 하나의 저장 매체.
  9. 제 1 항에 있어서,
    상기 동작은 상기 제 2 보안 엔클레이브가 상기 복호화된 콘텐츠를 검사하는 동작에 응답하여, 상기 제 1 보안 엔클레이브가 상기 암호화된 콘텐츠로부터 도출된 암호화되지 않은 콘텐츠를 처리하지 않게 하는 단계를 포함하는
    적어도 하나의 저장 매체.
  10. 제 1 항에 있어서,
    상기 제 1 보안 엔클레이브는 애플리케이션의 가상 어드레스 공간 내부에서 격리된 메모리 구역을 포함하며, 상기 제 1 보안 엔클레이브 내부에서 처리하는 코드만이 상기 제 1 보안 엔클레이브 내에 배치된 데이터에 액세스할 수 있는
    적어도 하나의 저장 매체.
  11. 제 10 항에 있어서,
    상기 암호화된 콘텐츠는 비디오 및 오디오 콘텐츠 중 적어도 하나를 포함하는
    적어도 하나의 저장 매체.
  12. 제 1 항에 있어서,
    상기 제 2 보안 엔클레이브를 인증하는 동작은 상기 제 2 보안 엔클레이브가 레포트를 상기 제 1 보안 엔클레이브로 전달하는 동작을 포함하고, 상기 레포트는 (a) 제 2 보안 노드를 포함하는 컴퓨팅 플랫폼, 독립 소프트웨어 벤더(independent software vendor: ISV), 및 상기 적어도 하나의 프로세서의 부분 중 적어도 하나에 특유한 식별자와, (b) 상기 컴퓨팅 플랫폼에 의해 발생된 임의값(nonce), 및 (c) 상기 제 2 보안 엔클레이브에 포함된 콘텐츠에 기초하는 치수 중 적어도 하나에 기초하는
    적어도 하나의 저장 매체.
  13. 명령어가 저장된 적어도 하나의 저장 매체로서,
    상기 명령어는 시스템으로 하여금 동작을 수행하게 하되,
    상기 동작은,
    제 1 보안 엔클레이브 내부에 부가적인 소프트웨어 및 데이터가 존재하는 동안, 상기 제 1 보안 엔클레이브 외부에서 실행하는 소프트웨어가 상기 부가적인 소프트웨어 및 데이터에 액세스하는 것을 방지하는 신뢰성 있는 소프트웨어 실행 환경을 포함하는 상기 제 1 보안 엔클레이브를 초기화하는 동작과,
    상기 제 1 보안 엔클레이브가,
    콘텐츠를 수신하고 권한 관리 정책을 검사하고,
    상기 정책을 검사하는 것에 기초하여 멀웨어 검출 유틸리티가 상기 콘텐츠를 검사할 수 있는지를 결정하고,
    상기 멀웨어 검출 유틸리티를 인증하고,
    상기 멀웨어 검출 유틸리티를 인증하는 것에 응답하여 상기 콘텐츠의 암호화된 버전을 상기 멀웨어 검출 유틸리티로 전달하고,
    상기 콘텐츠가 인증됨을 표시하는 메시지를 상기 멀웨어 검출 유틸리티로부터 수신하고,
    상기 메시지를 수신하는 것에 응답하여 상기 콘텐츠를 처리하는 동작
    을 포함하는
    적어도 하나의 저장 매체.
  14. 제 13 항에 있어서,
    상기 멀웨어 검출 유틸리티를 인증하는 동작은 상기 멀웨어 검출 유틸리티의 적어도 일부의 치수를 분석하는 동작을 포함하는
    적어도 하나의 저장 매체.
  15. 제 13 항에 있어서,
    상기 동작은 상기 적어도 하나의 프로세서에 대응하는 오퍼레이팅 시스템, 가상 머신 모니터, 및 이진 입출력 시스템(BIOS) 중 적어도 하나가 상기 제 1 보안 엔클레이브보다 많은 특권을 가진 멀웨어를 포함하는 동안 상기 콘텐츠를 처리하는 동작을 포함하는
    적어도 하나의 저장 매체.
  16. 제 15 항에 있어서,
    상기 제 1 보안 엔클레이브는 특권을 갖지 않는
    적어도 하나의 저장 매체.
  17. 제 13 항에 있어서,
    상기 제 1 보안 엔클레이브는 애플리케이션의 가상 어드레스 공간 내부에서 격리된 메모리 구역을 포함하며, 상기 제 1 보안 엔클레이브 내부에서 실행하는 코드만이 상기 제 1 보안 엔클레이브 내에 배치된 상기 콘텐츠에 액세스할 수 있는
    적어도 하나의 저장 매체.
  18. 장치로서,
    적어도 하나의 메모리와,
    상기 메모리에 연결된 적어도 하나의 프로세서 - 상기 적어도 하나의 프로세서는, 제 1의 신뢰성 있는 소프트웨어 실행 환경 내부에 부가적인 소프트웨어 및 데이터가 존재하는 동안, 상기 제 1의 신뢰성 있는 소프트웨어 실행 환경 외부에서 실행하는 소프트웨어가 상기 부가적인 소프트웨어 및 데이터에 액세스하는 것을 방지하는 상기 제 1의 신뢰성 있는 소프트웨어 실행 환경을 초기화하는 것을 포함하는 동작을 수행함 - 와,
    상기 제 1의 신뢰성 있는 소프트웨어 실행 환경을 포함하되,
    상기 제 1의 신뢰성 있는 소프트웨어 실행 환경은,
    콘텐츠를 수신하고 정책을 검사하고,
    상기 정책을 검사하는 것에 기초하여 검사 엔진 모듈이 상기 콘텐츠를 검사할 수 있는지를 결정하고,
    상기 검사 엔진 모듈을 인증하고,
    상기 검사 엔진 모듈을 인증하는 것에 응답하여 상기 콘텐츠의 암호화된 버전을 상기 검사 엔진 모듈로 전달하고,
    상기 검사 엔진 모듈로부터 상기 콘텐츠가 인증됨을 표시하는 메시지를 수신하고,
    상기 메시지를 수신하는 것에 응답하여 상기 콘텐츠를 처리하는
    장치.
  19. 제 18 항에 있어서,
    상기 동작은 상기 장치의 오퍼레이팅 시스템, 가상 머신 모니터, 및 이진 입출력 시스템(BIOS) 중 적어도 하나가 상기 제 1의 신뢰성 있는 소프트웨어 실행 환경보다 많은 특권을 가진 멀웨어를 포함하는 동안 상기 콘텐츠를 처리하는 동작을 포함하는
    장치.
  20. 제 19 항에 있어서,
    상기 제 1의 신뢰성 있는 소프트웨어 실행 환경은 특권을 갖지 않는 제 1 보안 엔클레이브를 포함하는
    장치.
  21. 제 20 항에 있어서,
    상기 제 1 보안 엔클레이브는 애플리케이션의 가상 어드레스 공간 내부에서 상기 적어도 하나의 메모리의 격리된 메모리 구역을 포함하며, 상기 제 1 보안 엔클레이브 내부에서 실행하는 코드만이 상기 제 1 보안 엔클레이브 내에 배치된 데이터에 액세스할 수 있는
    장치.
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
KR1020167019458A 2013-12-19 2013-12-19 권한 관리된 콘텐츠의 정책에 기반한 신뢰성 있는 검사 KR101801567B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/076413 WO2015094261A1 (en) 2013-12-19 2013-12-19 Policy-based trusted inspection of rights managed content

Publications (2)

Publication Number Publication Date
KR20160101108A KR20160101108A (ko) 2016-08-24
KR101801567B1 true KR101801567B1 (ko) 2017-11-27

Family

ID=53403362

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167019458A KR101801567B1 (ko) 2013-12-19 2013-12-19 권한 관리된 콘텐츠의 정책에 기반한 신뢰성 있는 검사

Country Status (5)

Country Link
US (1) US9514317B2 (ko)
EP (1) EP3084667A4 (ko)
KR (1) KR101801567B1 (ko)
CN (1) CN105745661B (ko)
WO (1) WO2015094261A1 (ko)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9635014B2 (en) * 2014-02-21 2017-04-25 Samsung Electronics Co., Ltd. Method and apparatus for authenticating client credentials
US20150326652A1 (en) * 2014-05-12 2015-11-12 Kerry Lee Davis System and method of transferring dynamic data in real time through wireless, server-less communication between a immobile computing device and a mobile computing device
US20160006754A1 (en) * 2014-07-01 2016-01-07 Mcafee, Inc. Secure enclave-rendered contents
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
US9491111B1 (en) * 2014-09-03 2016-11-08 Amazon Technologies, Inc. Securing service control on third party hardware
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
US9660994B2 (en) * 2014-09-30 2017-05-23 Schneider Electric USA, Inc. SCADA intrusion detection systems
US20160253664A1 (en) * 2015-02-27 2016-09-01 Samsung Electronics Co., Ltd Attestation by proxy
EP3262582B1 (en) 2015-02-27 2021-03-17 Samsung Electronics Co., Ltd. Electronic device providing electronic payment function and operating method thereof
US9870467B2 (en) * 2015-03-27 2018-01-16 Intel Corporation Apparatus and method for implementing a forked system call in a system with a protected region
US9716710B2 (en) * 2015-06-26 2017-07-25 Intel Corporation Technologies for virtualized access to security services provided by a converged manageability and security engine
US10257223B2 (en) * 2015-12-21 2019-04-09 Nagravision S.A. Secured home network
US10417218B2 (en) 2015-12-23 2019-09-17 Intel Corporation Techniques to achieve ordering among storage device transactions
US10114949B2 (en) * 2015-12-24 2018-10-30 Mcafee, Llc Techniques for monitoring integrity of OS security routine
US10536274B2 (en) * 2016-03-31 2020-01-14 Intel Corporation Cryptographic protection for trusted operating systems
US10257189B2 (en) 2016-05-24 2019-04-09 Microsoft Technology Licensing, Llc Using hardware based secure isolated region to prevent piracy and cheating on electronic devices
US11829998B2 (en) * 2016-06-07 2023-11-28 Cornell University Authenticated data feed for blockchains
US10592670B2 (en) * 2016-06-28 2020-03-17 Intel Corporation Technologies for provisioning and managing secure launch enclave with platform firmware
US10715533B2 (en) * 2016-07-26 2020-07-14 Microsoft Technology Licensing, Llc. Remediation for ransomware attacks on cloud drive folders
US10437985B2 (en) * 2016-10-01 2019-10-08 Intel Corporation Using a second device to enroll a secure application enclave
GB2555961B (en) * 2016-11-14 2019-08-28 Google Llc System of enclaves
US10311217B2 (en) 2016-12-09 2019-06-04 Microsoft Technology Licensing, Llc Application piracy prevention with secure enclave protection of automatically modularized functions
US11165565B2 (en) 2016-12-09 2021-11-02 Microsoft Technology Licensing, Llc Secure distribution private keys for use by untrusted code
US11777729B2 (en) 2017-01-20 2023-10-03 Enveil, Inc. Secure analytics using term generation and homomorphic encryption
US10880275B2 (en) 2017-01-20 2020-12-29 Enveil, Inc. Secure analytics using homomorphic and injective format-preserving encryption
US11196541B2 (en) 2017-01-20 2021-12-07 Enveil, Inc. Secure machine learning analytics using homomorphic encryption
US10721057B2 (en) 2017-01-20 2020-07-21 Enveil, Inc. Dynamic channels in secure queries and analytics
US11507683B2 (en) 2017-01-20 2022-11-22 Enveil, Inc. Query processing with adaptive risk decisioning
US11196540B2 (en) 2017-01-20 2021-12-07 Enveil, Inc. End-to-end secure operations from a natural language expression
US10628585B2 (en) 2017-01-23 2020-04-21 Microsoft Technology Licensing, Llc Ransomware resilient databases
US11438155B2 (en) * 2017-01-24 2022-09-06 Microsoft Technology Licensing, Llc Key vault enclave
US11036875B2 (en) * 2017-01-24 2021-06-15 Microsoft Technology Licensing, Llc Dependent enclave binaries
US10931652B2 (en) * 2017-01-24 2021-02-23 Microsoft Technology Licensing, Llc Data sealing with a sealing enclave
US10911451B2 (en) * 2017-01-24 2021-02-02 Microsoft Technology Licensing, Llc Cross-platform enclave data sealing
US11443033B2 (en) 2017-01-24 2022-09-13 Microsoft Technology Licensing, Llc Abstract enclave identity
US10530777B2 (en) * 2017-01-24 2020-01-07 Microsoft Technology Licensing, Llc Data unsealing with a sealing enclave
US10897459B2 (en) * 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using encryption key
DE102018101307A1 (de) * 2017-02-22 2018-08-23 Intel Corporation Techniken für SGX-Enklaven-Fernauthentifizierung
US10528722B2 (en) 2017-05-11 2020-01-07 Microsoft Technology Licensing, Llc Enclave pool shared key
US10740455B2 (en) 2017-05-11 2020-08-11 Microsoft Technology Licensing, Llc Encave pool management
US10747905B2 (en) 2017-05-11 2020-08-18 Microsoft Technology Licensing, Llc Enclave ring and pair topologies
US10664591B2 (en) 2017-05-11 2020-05-26 Microsoft Technology Licensing, Llc Enclave pools
US10833858B2 (en) 2017-05-11 2020-11-10 Microsoft Technology Licensing, Llc Secure cryptlet tunnel
US10637645B2 (en) 2017-05-11 2020-04-28 Microsoft Technology Licensing, Llc Cryptlet identity
US11488121B2 (en) 2017-05-11 2022-11-01 Microsoft Technology Licensing, Llc Cryptlet smart contract
US10238288B2 (en) 2017-06-15 2019-03-26 Microsoft Technology Licensing, Llc Direct frequency modulating radio-frequency sensors
GB2563884B (en) * 2017-06-28 2020-01-08 Advanced Risc Mach Ltd Exception return instruction
CN107544918B (zh) * 2017-08-17 2021-01-15 海光信息技术股份有限公司 一种内存页共享方法
US20190140846A1 (en) * 2017-11-03 2019-05-09 Microsoft Technology Licensing, Llc Provisioning trusted execution environment(s) based on chain of trust including platform
US11943368B2 (en) 2017-11-03 2024-03-26 Microsoft Technology Licensing, Llc Provisioning trusted execution environment based on chain of trust including platform
US20190295049A1 (en) * 2018-03-22 2019-09-26 NEC Laboratories Europe GmbH System and method for secure transaction verification in a distributed ledger system
EP4155996A1 (en) 2018-04-30 2023-03-29 Google LLC Enclave interactions
CN112005230B (zh) 2018-04-30 2024-05-03 谷歌有限责任公司 通过统一的安全区接口管理安全区创建
CN112005237B (zh) 2018-04-30 2024-04-30 谷歌有限责任公司 安全区中的处理器与处理加速器之间的安全协作
KR102074074B1 (ko) * 2018-05-08 2020-02-05 한국과학기술원 암호화폐 계좌 분석 및 Remote Attestation을 활용한 안전한 암호화폐 거래 방법
EP3794478B1 (en) 2018-05-16 2024-07-10 Telefonaktiebolaget Lm Ericsson (Publ) Enclave population
US10924282B2 (en) * 2018-05-24 2021-02-16 Cyber Pack Ventures, Inc. System and method for measuring and reporting IoT boot integrity
US11386017B2 (en) * 2018-06-20 2022-07-12 Intel Corporation Technologies for secure authentication and programming of accelerator devices
US11093272B2 (en) * 2018-06-27 2021-08-17 International Business Machines Corporation Virtual machine allocation and migration between hardware devices by destroying and generating enclaves using transmitted datafiles and cryptographic keys
US10902133B2 (en) 2018-10-25 2021-01-26 Enveil, Inc. Computational operations in enclave computing environments
US10817262B2 (en) 2018-11-08 2020-10-27 Enveil, Inc. Reduced and pipelined hardware architecture for Montgomery Modular Multiplication
CN109993003A (zh) * 2019-03-12 2019-07-09 广州大学 一种基于sgx的软件流安全验证方法及装置
EP3980946A4 (en) * 2019-06-04 2023-02-08 Telefonaktiebolaget Lm Ericsson (Publ) EXECUTION OF MACHINE LEARNING MODELS
US10939206B2 (en) 2019-06-07 2021-03-02 Microsoft Technology Licensing, Llc Audio accessory storing a policy for generating audio output
WO2021041771A1 (en) 2019-08-30 2021-03-04 Cornell University Decentralized techniques for verification of data in transport layer security and other contexts
US11652801B2 (en) 2019-09-24 2023-05-16 Pribit Technology, Inc. Network access control system and method therefor
US11082256B2 (en) 2019-09-24 2021-08-03 Pribit Technology, Inc. System for controlling network access of terminal based on tunnel and method thereof
US11271777B2 (en) 2019-09-24 2022-03-08 Pribit Technology, Inc. System for controlling network access of terminal based on tunnel and method thereof
US11190494B2 (en) * 2019-09-24 2021-11-30 Pribit Technology, Inc. Application whitelist using a controlled node flow
US11954198B2 (en) * 2019-10-31 2024-04-09 Vmware, Inc. Unifying hardware trusted execution environment technologies using virtual secure enclave device
US11019033B1 (en) * 2019-12-27 2021-05-25 EMC IP Holding Company LLC Trust domain secure enclaves in cloud infrastructure
US20210200858A1 (en) * 2019-12-28 2021-07-01 Intel Corporation Executing code in protected memory containers by trust domains
US11606279B2 (en) * 2020-07-10 2023-03-14 Fortanix, Inc. Secure heartbeat monitoring
US11782744B2 (en) * 2020-10-08 2023-10-10 Nxp B.V. Data processing system and method for accessing data in the data processing system
US11601258B2 (en) 2020-10-08 2023-03-07 Enveil, Inc. Selector derived encryption systems and methods
CN112651018B (zh) * 2020-12-18 2022-08-02 卓尔智联(武汉)研究院有限公司 基于sgx的可信输入输出控制方法、装置、设备和存储介质
CN114035980B (zh) * 2021-11-08 2023-11-14 海飞科(南京)信息技术有限公司 基于便笺存储器来共享数据的方法和电子装置
CN114422117B (zh) * 2021-12-14 2023-09-22 杭州宇链科技有限公司 隐私保护的视频采集方法及其对应的播放方法
CN114553607A (zh) * 2022-04-26 2022-05-27 南方科技大学 飞地实时自省方法、飞地实时自省装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100169666A1 (en) * 2008-12-31 2010-07-01 Prashant Dewan Methods and systems to direclty render an image and correlate corresponding user input in a secuire memory domain
US20120084562A1 (en) * 2010-10-04 2012-04-05 Ralph Rabert Farina Methods and systems for updating a secure boot device using cryptographically secured communications across unsecured networks
US20130312117A1 (en) * 2012-05-16 2013-11-21 Spydrsafe Mobile Security, Inc. Systems and Methods for Providing and Managing Distributed Enclaves

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6663000B1 (en) * 2002-08-01 2003-12-16 Networks Associates Technology, Inc. Validating components of a malware scanner
US20040158741A1 (en) 2003-02-07 2004-08-12 Peter Schneider System and method for remote virus scanning in wireless networks
US7627896B2 (en) * 2004-12-24 2009-12-01 Check Point Software Technologies, Inc. Security system providing methodology for cooperative enforcement of security policies during SSL sessions
US7712143B2 (en) * 2006-09-27 2010-05-04 Blue Ridge Networks, Inc. Trusted enclave for a computer system
US8689010B2 (en) * 2007-06-28 2014-04-01 Microsoft Corporation Secure storage for digital rights management
US8266707B2 (en) 2008-02-28 2012-09-11 Intel Corporation Tamper resistant method, apparatus and system for secure portability of digital rights management-protected content
EP2172862A1 (en) 2008-10-02 2010-04-07 Broadcom Corporation Secure virtual machine manager
US8140655B1 (en) * 2009-05-18 2012-03-20 Lockheed Martin Corporation Dynamic enclave computing system
WO2011078855A1 (en) * 2009-12-22 2011-06-30 Intel Corporation Method and apparatus to provide secure application execution
US20110238402A1 (en) * 2010-03-23 2011-09-29 Fujitsu Limited System and methods for remote maintenance in an electronic network with multiple clients
US9552478B2 (en) * 2010-05-18 2017-01-24 AO Kaspersky Lab Team security for portable information devices
US8578486B2 (en) * 2010-06-18 2013-11-05 Microsoft Corporation Encrypted network traffic interception and inspection
US8972746B2 (en) 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
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
US20140019745A1 (en) * 2012-07-12 2014-01-16 David S. Dodgson Cryptographic isolation of virtual machines
US9519803B2 (en) * 2012-11-30 2016-12-13 Intel Corporation Secure environment for graphics processing units
US9465933B2 (en) * 2012-11-30 2016-10-11 Intel Corporation Virtualizing a hardware monotonic counter
US20140189246A1 (en) * 2012-12-31 2014-07-03 Bin Xing Measuring applications loaded in secure enclaves at runtime
US20150304736A1 (en) 2013-06-04 2015-10-22 Reshma Lal Technologies for hardening the security of digital information on client platforms
US9117080B2 (en) * 2013-07-05 2015-08-25 Bitdefender IPR Management Ltd. Process evaluation for malware detection in virtual machines
US9276750B2 (en) * 2013-07-23 2016-03-01 Intel Corporation Secure processing environment measurement and attestation
US9781113B2 (en) * 2013-12-19 2017-10-03 Intel Corporation Technologies for supporting multiple digital rights management protocols on a client device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100169666A1 (en) * 2008-12-31 2010-07-01 Prashant Dewan Methods and systems to direclty render an image and correlate corresponding user input in a secuire memory domain
US20120084562A1 (en) * 2010-10-04 2012-04-05 Ralph Rabert Farina Methods and systems for updating a secure boot device using cryptographically secured communications across unsecured networks
US20130312117A1 (en) * 2012-05-16 2013-11-21 Spydrsafe Mobile Security, Inc. Systems and Methods for Providing and Managing Distributed Enclaves

Also Published As

Publication number Publication date
EP3084667A4 (en) 2017-07-26
CN105745661A (zh) 2016-07-06
EP3084667A1 (en) 2016-10-26
WO2015094261A1 (en) 2015-06-25
CN105745661B (zh) 2020-05-05
KR20160101108A (ko) 2016-08-24
US9514317B2 (en) 2016-12-06
US20150347768A1 (en) 2015-12-03

Similar Documents

Publication Publication Date Title
KR101801567B1 (ko) 권한 관리된 콘텐츠의 정책에 기반한 신뢰성 있는 검사
US10341321B2 (en) System and method for policy based adaptive application capability management and device attestation
Hoekstra et al. Using innovative instructions to create trustworthy software solutions.
RU2756048C2 (ru) Адресация доверенной среды исполнения с использованием ключа шифрования
Shabtai et al. Google android: A comprehensive security assessment
US7103771B2 (en) Connecting a virtual token to a physical token
US9998438B2 (en) Verifying the security of a remote server
US20150304736A1 (en) Technologies for hardening the security of digital information on client platforms
JP6114832B2 (ja) 仮想マシンのための管理制御方法、装置及びシステム
US8213618B2 (en) Protecting content on client platforms
US8356361B2 (en) Secure co-processing memory controller integrated into an embedded memory subsystem
US8131997B2 (en) Method of mutually authenticating between software mobility device and local host and a method of forming input/output (I/O) channel
CN103827881A (zh) 用于设备操作系统中的动态平台安全的方法和系统
WO2015117523A1 (zh) 访问控制方法及装置
CN109756492A (zh) 基于sgx的云平台可信执行方法、装置、设备及介质
US20230155984A1 (en) Trusted execution environment for service mesh
Lee et al. Secure mobile device structure for trust IoT
KR20100054940A (ko) 임베디드 리눅스에서 서명 검증 방식을 이용한 악성 프로그램 차단 장치 및 방법
Hao et al. Trusted block as a service: Towards sensitive applications on the cloud
KR20150089696A (ko) 접근제어와 우선순위기반 무결성 검증 시스템 및 그 방법
Wu et al. The mobile agent security enhanced by trusted computing technology
CN113468610A (zh) 去中心化可信访问控制框架及其运行方法
Gowrisankar et al. GateKeeper: Operator-centric Trusted App Management Framework on ARM TrustZone
Kostiainen et al. Key attestation from trusted execution environments
Murti et al. Security in embedded systems

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