KR102073433B1 - 하드웨어 보호 애플리케이션에 대한 시스템 서비스 요청 상호작용을 용이하게 하는 기법 - Google Patents

하드웨어 보호 애플리케이션에 대한 시스템 서비스 요청 상호작용을 용이하게 하는 기법 Download PDF

Info

Publication number
KR102073433B1
KR102073433B1 KR1020147016054A KR20147016054A KR102073433B1 KR 102073433 B1 KR102073433 B1 KR 102073433B1 KR 1020147016054 A KR1020147016054 A KR 1020147016054A KR 20147016054 A KR20147016054 A KR 20147016054A KR 102073433 B1 KR102073433 B1 KR 102073433B1
Authority
KR
South Korea
Prior art keywords
umhpic
security
interaction
application
service request
Prior art date
Application number
KR1020147016054A
Other languages
English (en)
Other versions
KR20140101367A (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 KR20140101367A publication Critical patent/KR20140101367A/ko
Application granted granted Critical
Publication of KR102073433B1 publication Critical patent/KR102073433B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • 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

Abstract

본 명세서에서는 사용자 모드 하드웨어 보호 격리 컨테이너 내에서 애플리케이션이 실행되도록 하는 플랫폼 적응 계층을 제공하고 한편으로 이 격리 컨테이너의 외부에 존재하는 호스트 플랫폼 리소스를 이용하는 구현예를 기술한다. 플랫폼 적응 계층은 애플리케이션과 호스트 플랫폼 간의 시스템 서비스 요청의 상호 작용을 용이하게 한다. 이 용이함의 일부로서, 플랫폼 전환 계층의 보안 서비스 컴포넌트는 보안 관련 액션을 수행한다.

Description

하드웨어 보호 애플리케이션에 대한 시스템 서비스 요청 상호작용을 용이하게 하는 기법{FACILITATING SYSTEM SERVICE REQUEST INTERACTIONS FOR HARDWARE-PROTECTED APPLICATIONS}
통상적인 소프트웨어 애플리케이션은 다양한 운영 체제의 기능에 의존한다. 운영 체제는 쓰레드 스케줄링, 메모리 할당, 가상 메모리, 장치 액세스 등과 같은 기본적인 계산 서비스를 위한 일련의 애플리케이션 프로그래밍 인터페이스(API, application programming interface)를 제공할 수 있다. 또한, 운영 체제는 그래픽 유저 인터페이스(GUI, graphical user interface), 클립보드 서비스 등과 같은 추가적인 운영 체제 서비스를 제공하는 API의 풍부한 특성 세트(a rich feature set of API)를 제공할 수도 있다.
일부 보안 가능 프로세서는 보안 실행 환경을 제공할 수 있다. 그와 같은 보안 가능 프로세서는 보호 메모리 공간을 제공하며, 또한 보안 가능 프로세서는 보호 메모리 공간 내에 저장된 코드 및 데이터가 이 보호 메모리 공간 외부의 코드에 의해서는 액세스되지 않도록 보장한다. 보안 가능 프로세서는 명확하게 정의된 출구 기능 및 입구 기능을 제공하며(이하에서는 출구 게이트 및 입구 게이트라 함), 이 게이트는 보호 메모리 공간 내의 코드와 외부 환경의 코드 사이에서 실행을 전달할 수 있도록 한다. 보안 가능 프로세서는 입출력 장치에 대한 액세스를 허용하지 않거나 보호 메모리 공간 내에서의 커널 모드 실행을 허용하지 않는다. 그 결과, 보안 가능 프로세서의 보호 메모리 영역은 통상적인 소프트웨어 애플리케이션을 동작시키는 데는 너무 제약이 많았다.
본 "발명의 내용" 항목은 본 개시의 간략화된 개념을 소개하기 위해서 제공되는 것이며, 간략화된 개념에 대해서는 이하의 "발명을 실시하기 위한 구체적인 내용" 항목에서 더욱 상세하게 설명하기로 한다. 본 "발명의 내용" 항목에 기재된 내용은 특허청구범위에서 청구하는 필수 특징을 식별하고자 의도된 것이 아니며, 더욱이 특허청구범위에서 청구하고 있는 범위를 결정하는데 사용되고자 하는 것도 아니다.
애플리케이션은 보안 가능 프로세서에 의해서 제공되는 사용자 모드 하드웨어 보호 격리 컨테이너(UMHPIC, user-mode hardware-protected isolation container) 내에서 실행된다. 애플리케이션의 일부로서 UMHPIC 내에서 실행되는 라이브러리 운영 체제는 고수준의 요청을 포함하는 대부분의 운영 체제의 요청을 완수한다. UMHPIC 감지형 플랫폼 적응 계층(U-PAL, UMHPIC-aware platform adaptation layer)은 한편으로는 UMHPIC의 외부에 존재하는 운영 체제의 리소스를 활용하면서도 UMHPIC에 대한 특별한 지식 없이도 애플리케이션이 UMHPIC 내부에서 실행되도록 한다. U-PAL은 UMHPIC 내에서 실행되며 또한 애플리케이션을 대신하여 쓰레드 스케줄링, 파일 시스템 상호 작용, 및 리소스 할당이 적절하게 조작되도록 보장하는 보안 서비스 컴포넌트를 포함한다. U-PAL은 UMHPIC 내부에 존재하는 신뢰 부분 및 외부의 실행 환경에서 사용자 모드로 실행되는 비신뢰 부분을 갖는 성킹(thunking) 컴포넌트를 포함한다. 신뢰 성킹 컴포넌트는 보안 가능 프로세서에 의해서 제어되는 출구를 통해서 시스템 콜을 비신뢰 성킹 컴포넌트로 전달한다. 비신뢰 성킹 컴포넌트는 보안 가능 프로세서에 의해서 제어되는 입구 게이트를 통해서 운영 체제로부터의 시스템 콜을 UMHPIC로 전달한다.
"발명을 실시하기 위한 구체적인 내용" 항목은 첨부 도면을 참조하여 설명한다. 도면에서 도면 부호의 맨 좌측 숫자는 이 도면 부호가 처음 나타나는 도면의 번호를 나타낸다. 서로 다른 도면에서 동일한 참조 부호를 사용한 것은 유사한 또는 동일한 항목을 나타낸다.
도 1은 UMHPIC 내의 애플리케이션을 실행하기 위한 보안 실행 환경의 개략적인 다이어그램이다.
도 2는 실시예에 따른 보안 실행 환경을 제공하기 위해서 사용할 수 있는 예시적인 컴퓨팅 시스템의 블록 다이어그램이다.
도 3은 UMHPIC 내에서 실행되는 애플리케이션에 보안성을 제공하기 위한 예시적인 프로세스를 나타내는 흐름도이다.
도 4는 UMHPIC의 내에서 실행되는 애플리케이션 및 UMHPIC의 외부에서 실행되는 호스트 플랫폼 간의 리소스 요청의 상호 작용을 용이하게 하기 위한 예시적인 프로세스를 나타내는 흐름도이다.
도 5는 호스트 플랫폼으로부터의 실행을 위한 요청 및 비동기 통지를 조작하기 위한 예시적인 프로세스를 나타내는 흐름도이다.
개요
상술한 바와 같이, 종래의 소프트웨어 애플리케이션은 풍부한(rich) 특성을 갖는 일련의 운영 체제의 기능에 의존한다. 본 발명의 실시예는 보안 실행 환경(무수정 애플리케이션) 내에서 동작하도록 특정하여 작성되지 않은 애플리케이션이 보안 실행 환경 외부의 임의의 코드를 신뢰하지 않고도 보안 실행 환경 - 이하, 사용자 모드 하드웨어 보호 격리 컨테이너(UMHPIC)라고 함 - 내에서 실행될 수 있도록 한다. UMHPIC, 예를 들면 호스트 운영 체제 외부의 코드가 UMHPIC 내부의 코드에 대한 서비스를 거부할 수는 있지만, UMHPIC 외부의 코드는 UMHPIC 내의 코드의 실행에 대해서 부정 조작(tampering) 또는 스누핑(snooping)할 수는 없다. 종래 UMHPIC 내에서의 무수정(unmodified) 애플리케이션의 실행은 보통 UMHPIC 외부에서 실행되는 "호스트" 운영 체제를 신뢰하는 것을 수반할 수 있다. 무수정 애플리케이션은 정상적으로는 다음 세 가지 이유에 의해서 호스트 운영 체제를 신뢰한다. 먼저, 통상적인 애플리케이션은 운영 체제로부터의 풍부하고 다양한 서비스를 이용한다. 다음으로, 무수정 애플리케이션은 실행을 가능하게 하기 위해서 또한 UMHPIC 및 외부의 실행 환경 간에 데이터가 전달될 수 있도록 하기 위해서 보안 가능 프로세서의 특정 입구 게이트와 출구 게이트가 호출하도록 구성되어 있지 않다. 마지막으로, 애플리케이션은 보안을 위해서 운영 체제의 정확한 기능에 의존한다. 본 발명의 "발명을 실시하기 위한 구체적인 내용" 항목의 실시예는 또한 미합중국 특허 출원 12/834,895("ULTRA-LOW COST SANDBOXING FOR APPLICATION APPLIANCES")에서 기술된 것과 같은 UMHPIC 내에서 실행되어질 샌드박스(sandbox) 환경을 가능하게 한다.
본 발명의 "발명을 실시하기 위한 구체적인 내용" 항목에 기술된 실시예는 부분적으로는 UMHPIC 내에 존재하고 또한 부분적으로는 외부 실행 환경에 존재하는 UMHPIC 감지형 플랫폼 적응 계층(U-PAL, UMHPIC-aware platform adaptation layer)을 포함한다. U-PAL은 UMHPIC 내에서 실행되는 애플리케이션 및 UMHPIC 외부에서 실행되는 호스트 플랫폼 사이에서 시스템 자원 요청의 상호 작용을 용이하게 한다. 또한, 이 용이함의 일부로서, 하나 이상의 보안 관련 액션이 수행된다. 보안 관련 액션은, 특히, 애플리케이션으로 하여금 호스트 플랫폼을 이용하여 UMHPIC의 외부에서 호스트 플랫폼이 실행되고, 따라서 "비신뢰" 코드가 되더라도 리소스에 대한 액세스가 가능하도록 한다.
실시예에 있어서, 애플리케이션은 UMHPIC 내부의 신뢰하는 라이브러리 운영 체제를 포함하고, 대부분의 운영 체제의 요청은 필요에 따라서 U-PAL의 서비스를 호출하는 라이브러리 운영 체제에 의해서 완수되며, 이 U-PAL은 또한 호스트 운영 체제로부터의 서비스를 호출한다. U-PAL의 신뢰 부분(즉, UMHPIC의 내부에 존재하고 내부에서 실행되는 부분)은 UMHPIC 내에서 실행되는 애플리케이션에 대한 서비스 인터페이스를 제공한다. U-PAL의 비신뢰 부분(즉, UMHPIC의 외부에 존재하고 외부의 사용자 모드에서 실행되는 부분)은 호스트 컴퓨터 시스템에 의해서 제공되는 플랫폼 적응 계층(PAL, platform adaptation layer)을 통하는 것과 같이 운영 체제와 인터페이스를 이룬다.
U-PAL은 보안 서비스 컴포넌트 및 성킹(thunking) 컴포넌트를 포함한다. 보안 서비스 컴포넌트는 UMHPIC 내에서 실행되며, 또한 따라서 애플리케이션의 관점으로부터는 "신뢰되는" 컴포넌트이다. 보안 서비스 컴포넌트는 무수정 애플리케이션을 대신하여 쓰레드 스케줄링, 파일 시스템 상호 작용, 및 리소스 할당을 포함하는 모든 시스템 서비스가 적절하게 조작되는지를 검증하며 따라서 비신뢰 호스트 운영 체제를 허용한다. 성킹 컴포넌트는 UMHPIC 내부에 존재하는 신뢰 부분 및 UMHPIC 외부의 사용자 모드에서 실행되는 비신뢰 부분을 모두 포함한다. 성킹 컴포넌트는, 보안 서비스 컴포넌트를 포함하며 UMHPIC의 외부에서 실행되는 호스트 운영 체제의 기능에 액세스하는 U-PAL의 신뢰 부분을 제공한다. 성킹 컴포넌트 및 보안 서비스 컴포넌트는 라이브러리 OS와 함께 패키지로 포함된 애플리케이션과 같은 무수정 애플리케이션이 UMHPIC 내에서 실행될 수 있도록 허용한다.
본 명세서에서 기술된 프로세스, 시스템, 및 장치는 다수의 방식으로 구현될 수 있다. 이하, 첨부 도면을 참조하여 예시적인 구현례에 대해서 설명한다.
UMHPIC 내의 무수정 애플리케이션을 실행하기 위한 예시적인 환경
도 1은 UMHPIC 내에서 애플리케이션을 실행하기 위한 보안 실행 환경의 개략적인 다이어그램이다. 시스템(100)의 특징은 무수정 애플리케이션을 위한 보안 실행 환경을 구현할 수 있는 다양한 적절한 컴퓨팅 장치 타입 상에 구현될 수 있다. 적절한 컴퓨팅 장치는 무수정 애플리케이션을 실행하기 위한 보안 실행 환경 전체 또는 일부를 저장하고 실행할 수 있는, 하나 이상의 개인용 컴퓨터, 서버, 서버 팜, 데이터 센터, 전용 컴퓨터, 태블릿 컴퓨터, 게임 콘솔, 스마트폰, 이들의 조합, 또는 임의의 기타 컴퓨팅 장치를 포함하거나, 그 일부가 될 수 있다.
시스템(100)은 UMHPIC(104)를 포함하는 보안 실행 환경을 인스턴스화하도록 구성된 보안 가능 프로세서(102)를 포함한다. UMHPIC(104)는 사용자 모드 메모리(106) 또는 메모리(108) 내의 보호 메모리 영역 내에 존재한다. UMHPIC(104) 내외로의 실행 및 데이터를 전달하기 위해서 UMHPIC(104) 상에서 코드가 실행되도록 하는 보안 가능 프로세서(102)에 의해서 제공되는 특정 입구 게이트 및 출구 게이트를 통한다는 것만 제외한다면, UMHPIC(104) 내에 저장된 코드 및 데이터는 UMHPIC(104)의 외부의 코드에 액세스할 수 없다.
쓰레드는 UMHPIC(104)를 벗어나서 출구 게이트를 통해서 비보호 메모리로 반환된다. 출구 게이트는 콜(call) 명령을 통하는 것과 같이 직접적으로 호출될 수 있고, 또는 프로세서의 예외 처리를 통하는 것과 같이 간접적으로 호출될 수도 있다. UMHPIC(104)는 암호화 메커니즘에 의해서 보호될 수 있는데, 예를 들면, 보안 가능 프로세서(102)는 UMHPIC(104)로의 기입 동작시에 암호화하고 또한 판독 동작시에 복호화하도록 구성된다. 또한, UMHPIC(104)는 암호화 해쉬(인라인 또는 대역외 중의 하나)로 추적할 수 있으며, 따라서 보안 가능 프로세서(102)는 메모리가 변경되지 않았다 것을 판독 동작 중에 검증할 수 있다. 다른 실시예에 있어서, UMHPIC(104) 내에 존재하는 메모리 공간은 보안 가능 프로세서(102)와 동일한 칩상에 존재할 있으며, 이 메모리 공간은 실행이 입구 게이트에 진입할 때 보안 가능 프로세서(102)가 액세스할 수 있도록 분리될 수 있다. 다양한 실시예에 있어서, 보안 가능 프로세서(102)는 시스템 온 칩(SOC, system-on-chip)과 같은 단일 칩 내에 구현될 수 있으며, 또는 시스템(100)의 프로세서 및 추가 칩셋에 걸쳐서 구현될 수도 있다.
애플리케이션(110)은 UMHPIC(104) 내에서 실행된다. 즉, 보안 가능 프로세서(102)는, 이하에서 더욱 상세하게 설명하는 명확하게 정의된 입구 게이트 및 출구 게이트를 통한다는 것만 제외한다면, UMHPIC(104) 내부의 코드 또는 데이터에 대한 부정 조작 또는 스누핑으로부터 비신뢰 코드(112) 또는 호스트 운영 체제(OS)(114)를 포함하는 UMHPIC(104)의 외부에서의 코드의 실행을 방지하도록 하는 방식으로 애플리케이션(110)을 실행시킨다. 예를 들면, UMHPIC(104) 외부에 저장된 쓰레드 실행 코드는 UMHPIC(104) 내에 저장된 데이터에 액세스할 수 없다. 보안 가능 프로세서(102)는 프로세서를 벗어날 때 데이터를 암호화하는 것, 외부에서의 부정 조작(tampering)을 검출하기 위해 데이터를 서명하는 것, I/O 장치로부터의 직접 메모리 액세스(DMA, direct memory access) 조작을 차단하는 것, 캐시를 분리하는 것, 또는 프로세서 상에 바로 저장된 메모리를 사용하는 것을 포함하며, 이들만으로 한정되지 않는 다양한 기법을 통해 스누핑 또는 부정 조작에 대해 UMHPIC 내의 코드 및 데이터를 보호할 수 있다. 이는 UMHPIC(104)의 콘텐트에 대한 스누핑(snooping) 또는 부정 조작(tampering)에 대해서 비신뢰 코드 - 즉, UMHPIC(104)의 외부에서 실행되는 임의의 코드 - 에 대한 보호를 제공한다.
비신뢰 코드(112)는 UMHPIC의 외부의 사용자 모드에서 실행된다. 보안 가능 프로세서(102)는 비신뢰 코드(112)가 UMHPIC(104) 내의 코드 및 데이터데 액세스할 수 없도록 하는 방식으로 비신뢰 코드를 실행한다. 복수의 UMHPIC가 가능하며, 또한 보안 가능 프로세서(102)는 다른 UMHPIC 내에서 비신뢰 코드(112)를 실행할 수도 있다. 다른 UMHPIC 내에서 실행되더라도, UMHPIC(104)의 관점으로부터 비신뢰 코드(112)는 "비신뢰" 상태이다. 일부 보안 가능 프로세서에 있어서, UMHPIC는 중첩될 수 있으며, 내측 UMHPIC는 외측 UMHPIC 내의 코드 및 외측 UMHPIC 외부의 모든 코드로부터 보호된다. 중첩된 UMHPIC의 경우에 있어서, 외측 UMHPIC의 코드는 내측 UMHPIC에 의해서 신뢰받지 못하며, 내측 UMHPIC의 코드 및 데이터는 외측 UMHPIC의 코드에 의해서 부정 조작되거나 스누핑되지 않을 수 있다.
초기화 프로세스, 예를 들면, 동시 출원 중이고 변리사 문서 참조 번호가 MS1-5267US인 관련된 미합중국 출원 XXXXXX에서 기술된 것과 같은 초기화 프로세스를 사용하여 클라이언트의 신뢰 코드 및 데이터로, 및 미신뢰 코드 또는 데이터는 없는 채로 UMHPIC(104)가 확립되도록 하는 신뢰도를 갖는 클라이언트 시스템을 제공하고, 이에 의해서 애플리케이션(110)이 시스템(100) 상에서 적절하게 실행되고 있다는 신뢰를 클라이언트 시스템에 제공하도록 하는 방식으로 UMHPIC(104)를 초기화할 수 있다.
UMHPIC(104)는 호스트되는 컴퓨팅 서비스, 예를 들어 "클라우드 컴퓨팅" 서비스와 같이 컴퓨팅 서비스의 맥락에 따라서 구현될 수 있으며, 여기에서 클라이언트 시스템은 애플리케이션(110)이 클라우드 컴퓨팅 서비스 상에서 안전하게 실행될 수 있도록 하기 위해서 UMHPIC(104)를 초기화한다. 따라서, 클라이언트 시스템의 관점으로부터, UMHPIC(104) 외부의 시스템(100)의 모든 부분 및 보안 가능 프로세서(102)는 "비신뢰"된다. 본 출원의 실시예는 애플리케이션(110)이 UMHPIC 내에서 실행되도록 하고 또한 호스트 OS(114)와 같은 "비신뢰" 호스트 운영 체제로부터 운영 체제의 기능에 여전히 액세스할 수 있도록 한다.
다양한 실시예에 있어서, 애플리케이션(110)은 하나 이상의 서브 컴포넌트를 포함한다. 일반적인 실시예에 있어서, 애플리케이션의 하나 이상의 서브 컴포넌트는 라이브러리 운영 체제(OS)(116)를 포함하며, 이 운영 체제는 2010년 7월 13일 출원한 발명의 명칭이 "ULTRA-LOW COST SANDBOXING FOR APPLICATION APPLIANCES"인 미합중국 특허 출원 12/834,895에 기술된 격리 OS 서브 시스템과 동일하거나 유사할 수 있다. 미합중국 특허 출원 12/834,895는 운영 체제의 다른 요소로부터 분리된 격리된 애플리케이션 프로세스 내에서 다양한 운영 체제 요소(가끔 "라이브러리 OS"(library OS)라고도 언급됨)를 동작시키도록 구성된 "애플리케이션 샌드박스"(application sandboxes)에 대해서 기술한다. 미합중국 특허 출원 12/834,895에 기술되어 있는 애플리케이션 샌드박스는 애플리케이션에 의한 부정 조작 또는 스누핑으로부터 호스트 운영 체제를 보호하지만, 호스트 운영 체제에 의한 부정 조작 또는 스누핑으로부터 애플리케이션을 반드시 보호하고는 있지 않다. 미합중국 특허 출원 12/834,895에서 기술된 격리된 OS 서브 시스템은 API의 풍부한 특성 세트를 갖는 애플리케이션을 제공하여 이 애플리케이션이 사용되도록 설계된 운영 체제 기능을 직접 제공한다. 격리된 OS 서브 시스템은 또한 작은 서브셋의 애플리케이션 프로그래밍 인터페이스(API, application programming interface)를 이용하여 기본 계산 서비스를 갖는 애플리케이션을 제공하기 위해서 운영 체제 플랫폼 적응 계층(PAL, platform adaptation layer)을 통해 호스트 운영 체제와 통신한다. 호스트 PAL(118)은 미합중국 특허 출원 12/834,895에서 기술된 호스트 운영 체제 PAL과 동일하거나 유사할 수 있다. 호스트 PAL(118)은 실시예에 있어서 트랩(trap) 명령을 포함할 수 있다. 다른 실시예에 있어서, 호스트 PAL(118)은 저수준 호스트 OS(114) 추상화로부터 고수준 추상화를 생성하는 라이브러리를 포함한다. 집합적으로, (존재하는 경우) 호스트 PAL(118) 및 호스트 OS(114)는 호스트 플랫폼(130) 내에 포함되어 있다.
라이브러리 OS(116)는 운영 체제 서비스 중의 제 1 서브셋(예를 들면, 한정하지 않는 예시로서 상술한 "풍부한" 서비스 세트)을 갖는 애플리케이션(110)을 제공하도록, 또한 호스트 OS(114)를 호출하여 운영 체제 서비스 중의 제 2 서브셋(예를 들면, 한정하지 않는 예시로서 상술한 기본 계산 서비스)을 갖는 애플리케이션(110)을 제공하도록 구성될 수 있다. 본 개시의 실시예는 라이브러리 OS(116)와 같은 라이브러리 OS와 함께 패키징되어 있는 애플리케이션(110)과 같은 애플리케이션을 실행하는 것으로 제한되지는 않는다. 호스트 PAL(118) 및/또는 라이브러리 OS(116)는 다양한 실시예에서 생략되어 있다. 적어도 일 실시예에 있어서, 라이브러리 OS(116)는 생략되어 있으며, 또한 애플리케이션(110)은 (또한 "게스트" 운영 체제 및 애플리케이션으로 이루어져 있을 수 있는) 가상 머신을 실행하는 사용자 모드 프로세서 에뮬레이터로 이루어져 있다.
UMHPIC 감지형 PAL(U-PAL)(120)은 부분적으로는 UMHPIC(104) 내에 존재하고, 부분적으로는 사용자 모드 메모리(106)의 비신뢰 부분 내에 존재한다. 다양한 실시예에 있어서, 애플리케이션(110)은 UMHPIC(104) 내부에서의 실행을 위해서 수정되어 있지 않을 수 있으며, 이 애플리케이션(110)은 무수정 버전의 상태로 호스트 플랫폼(130)에 의해서 제공되는 서비스 인터페이스를 통해서 호스트 플랫폼과 직접 인터페이스를 이루도록 구성된다. 따라서, U-PAL(120)은 UMHPIC 내에서 실행되는 애플리케이션(110) 및 UMHPIC의 외부에서 실행되는 호스트 플랫폼(130)의 하나 이상의 컴포넌트 사이에서의 시스템 리소스 요청의 상호 작용을 용이하게 한다. 또한, U-PAL(120)의 보안 서비스 컴포넌트(122)는 하나 이상의 보안 관련 액션을 수행한다. U-PAL(120)은 UMHPIC(104) 내에서 호스트 플랫폼(130)에 의해서 제공되는 인터페이스를 모방하는 서비스 인터페이스를 갖는 애플리케이션(110)을 제공한다. UMHPIC(104)의 외부에 존재하는 U-PAL(120)의 일부는, 플랫폼 인터페이스를 통해서 호스트 PAL(118)을 통해서, 호스트 OS(114)와 인터페이스를 이루도록 구성되어 있다. 다른 실시예에 있어서, 호스트 PAL(118)은 U-PAL(120)의 서브 컴포넌트일 수 있다. 라이브러리 OS(116) 및 호스트 PAL(118)을 생략하는 또 다른 실시예에 있어서, U-PAL(120)은 호스트 OS(114)에 의해서 제공되는 서비스 인터페이스의 전부 또는 일부를 모방한다. 예를 들면, U-PAL(120)은 애플리케이션(110)이 사용하도록 구성된 API의 풍부한 특성 세트의 일부 또는 전체를 제공할 수 있다.
U-PAL(120)은 보안 서비스 컴포넌트(122) 및 성킹(thunking) 컴포넌트(124)를 포함한다. 보안 서비스 컴포넌트(122)는 완전히 UMHPIC(104) 내에 존재하고 또한 보안 관련 액션을 수행한다. 보안 서비스 컴포넌트는 호스트 플랫폼에 의해서 반환되는 핸들을 검증하고, 메모리 할당을 검증하고, 쓰레드 스케줄링이 예상되는 문법(예컨대, 상호 배제 프리미티브가 실제로 상호 배제를 제공하는지)에 적합한지를 보장하고, 호스트 플랫폼(130)에 행해진 다양한 콜의 결과를 검증하고, 그와 같은 검증에 대해서 필요한 데이터 구조를 업데이트하고, 데이터를 암호화하고, 디지털 서명 또는 메시지 인증 코드에 의해서 데이터의 무결성을 보호하고, 재전송 공격으로부터 데이터를 보호하고, 안전하게 난수를 제공하는 것과 같은 보안 관련 액션을 수행한다. 애플리케이션(110)은 무수정일 수 있으며, 또한 비신뢰 컴퓨팅 시스템 상에서 UMHPIC(104) 내에서는 실행되도록 설계되지 않을 수 있다. 따라서, 애플리케이션(110)이 동작하는 컴퓨팅 시스템은 신뢰되는 컴퓨팅 시스템이라는 가정 하에 애플리케이션이 개발되어질 수 있었다. 따라서, 애플리케이션(110)은 호스트 OS(114)가 적절하게 동작하는 것을 검증하도록 구성되지 않는다. 하지만, 컴퓨팅 시스템(100)은 UMHPIC(104)의 관점으로는 신뢰할 수 없을 수 있기 때문에, 호스트 플랫폼(130)은 적절하게 동작한다고 간주되지 않는다. 따라서, 보안 서비스 컴포넌트(122)는 보안 관련 액션을 수행하고, 그 결과 예측되고 적절한 방식으로 거동하는 가상 플랫폼이 가능해진다.
비제한적 일 예시에 있어서, 보안 서비스 컴포넌트(122)는 애플리케이션(110) 및/또는 라이브러리 OS(116)에 의해서 이루어지는 장치 액세스에 대한 API 콜에 응답하여 호스트 플랫폼(130)에 의해서 반환되는 인터페이스 핸들이 적절한지를 검증한다. 예를 들면, 인터페이스 핸들이 애플리케이션(110) 및/또는 라이브러리 OS(116)에 이전에 제공된 인터페이스 핸들과 중복되어 있는 지를 결정할 수 있다. 그와 같은 인터페이스 핸들을 사용하여 I/O 장치, 네트워킹 장치, 또는 기타 타입의 장치와 같은 장치에 액세스할 수 있다. 다른 비제한적 예시에 있어서, 보안 서비스 컴포넌트(122)는 호스트 플랫폼(130)에 의해서 반환되는 메모리 할당이 적절한지를 검증한다. 예를 들면, 신규 메모리 할당이 이전에 애플리케이션(110)에 할당된 메모리와 중첩되지 않는 것을 보장할 수 있다. 이와 같은 중첩되는 메모리 할당은 애플리케이션(110)으로 하여금 자신의 데이터를 예상하지 못한 방식으로 덮어쓰도록 할 수 있고, 따라서 잠재적으로 예측하지 못한 방식으로 동작하도록 할 수 있다.
다른 비제한적 예시에 있어서, 보안 서비스 컴포넌트(122)는 호스트 플랫폼(130)의 파일 시스템 상에 파일을 기입되어지는 데이터를 보호하도록 구성된다. 이 보호는 암호화, 디지털 서명 또는 메시지 인증 코드 및/또는 재전송 공격으로부터 보호하는 대책을 포함할 수 있으며, 예를 들면 2008년 9월 2일자로 England 등에게 허여되고 발명의 명칭이 "Multiplexing a secure counter to implement second level secure counters"인 미합중국 특허 7,421,579; 2006년 6월 20일자로 England 등에게 허여되고 발명의 명칭이 "System and method for implementing a counter"인 미합중국 특허 7,065,607; 및 Bryan Parno, Jacob R. Lorch, John R. Douceur, James Mickens, 및 Jonathan M. McCune의 "Memoir: Practical State Continuity for Protected Modules"에 설명되고, 보안 및 프라이버시(Security and Privacy) 심포지움에서 발행된 IEEE의 회보(2011년 5월)에 기재된 것과 같다. 애플리케이션(110) 자체는 비보호 형태로 파일 시스템에 데이터를 기입하도록 구성될 수 있는데, 이는 애플리케이션(110)이, 상술한 바와 같이, 동작되는 컴퓨팅 시스템이 신뢰된다는 가정으로 개발될 수 있기 때문이다. 따라서, 애플리케이션(110) 및/또는 라이브러리 OS(116)가 API 콜을 발행하여 파일 시스템에 데이터를 기입하려고 하는 경우, 보안 서비스 컴포넌트(122)는 콜 내에서의 보호된 데이터가 호스트 플랫폼(130)으로 전달되기 전에 애플리케이션(110)을 대신하여 데이터를 보호하게 된다. 보안 서비스 컴포넌트는 또한 호스트 플랫폼으로부터 판독되는 데이터를 비보호 및/또는 검증하도록 구성될 수 있는데, 이는 애플리케이션(110)이 파일 시스템으로부터 보호 데이터를 수신하도록 구성되지 않기 때문이고 또한 디지털 서명 또는 메시지 인증 코드를 검증하지 않도록 및 재전송 공격에 대해서 검사하지 않을 수 있도록 하였기 때문이다. 다른 실시예에 있어서, 보안 서비스 컴포넌트(122)는 가능하게는 암호화, 디지털 서명, 메시지 인증 코드, 및/또는 재전송 공격에 대한 대책을 사용하는 보호 가상 파일 시스템을 사용하여 모든 파일 시스템에 액세스하도록 구현될 수 있으며, 호스트 플랫폼(130)으로의 신뢰된 파일명 및 메타데이터의 노출을 회피한다.
애플리케이션(110)은 호스트 플랫폼(130)으로부터 쓰레드 스케줄링 서비스를 요청하도록 구성될 수도 있다. 그러나, 비신뢰 오작동 호스트 플랫폼(130)에 대해서 쓰레드를 스케줄링하는 방식으로 애플리케이션(110)이 부정확하게 실행하도록 할 수도 있다. 예를 들면, 애플리케이션(110) 중의 하나의 쓰레드가 잠금(lock)을 필요로 하게 되면, 오작동 운영 체제는 다른 쓰레드로 하여금 동시적으로 동일한 잠금을 획득하도록 허용할 수 있으며, 이에 의해서 이 쓰레드가 동시적으로 동작하게 되고 따라서 예측하지 못한 결과를 초래할 수 있다. 따라서, 보안 서비스 컴포넌트(122)는 애플리케이션(110) 및/또는 라이브러리 OS(116)를 대신하여 쓰레드 스케줄링을 취급하도록 구성된 사용자 모드 쓰레드 스케줄러를 포함할 수 있다. 그와 같은 사용자 모드 쓰레드 스케줄러는, 예를 들면, 애플리케이션(110) 및 라이브러리 OS(116)가 단 하나의 실행 쓰레드만 가지고 있는 경우에는 필요하지 않을 수도 있다. 애플리케이션(110) 및/또는 라이브러리 OS(116)가 쓰레드 스케줄링과 관련된 호스트 기능에 대한 콜을 호출하게 되면, 보안 서비스 컴포넌트(122)는 이 콜을 호스트 플랫폼(130)으로 전달하는 것이 아니라 쓰레드 스케줄링 콜 자체를 취급할지를 결정할 수 있다.
U-PAL(120)의 성킹 컴포넌트(124)는 보안 서비스 컴포넌트(122)로부터 호스트 플랫폼(130)으로 API 콜을 전달할 수 있는 능력을 제공한다. 성킹 컴포넌트의 신뢰 부분, 즉 신뢰 성킹 컴포넌트(126)는 UMHPIC(104) 내부에서 실행되며 또한 호스트 플랫폼(130)으로의 콜과 관련된 파라미터를 마셜링(marshaling)하고, 보안 가능 프로세서(102)에 의해서 제공되는 출구 게이트를 호출하고, 또한 이 마셜링된 파라미터를 비신뢰 성킹 컴포넌트(128)로 전달하도록 구성된다. 따라서, 신뢰 성킹 컴포넌트(126)는 보안 서비스 컴포넌트(122)로부터 호스트 플랫폼(130)으로 콜을 전달하는 전달자로서 동작한다.
신뢰 성킹 컴포넌트(126)는 또한 비신뢰 성킹 컴포넌트(128)에 의해서 호출되는 입구 게이트를 통해서, 호스트 플랫폼(130)으로부터의 실행 요청 및 호스트 플랫폼(130)에 행해진 콜로부터의 결과를 수신한다. 신뢰 성킹 컴포넌트(126)는 실행 요청 및 결과와 관련된 다양한 파라미터의 언마셜링하며, 또한 이들을 보안 서비스 컴포넌트(122)로 전달하여 검증한다.
성킹 컴포넌트(124)의 일부이기도 한 비신뢰 성킹 컴포넌트(128)는 UMHPIC(104)의 외부에서 실행된다. 비신뢰 성킹 컴포넌트는 출구 게이트를 통해서 신뢰 성킹 컴포넌트(126)에 의해 자신에게 전달된 파라미터를 언마셜링(unmarshaling)하고, 또한 UMHPIC(104)를 대신하여 대응하는 콜을 호스트 플랫폼(130)으로 전달하도록 구성된다(예를 들면, 운영 체제 콜을 호출하여 호스트 PAL(118)을 통해서 호스트 OS(114)로 전달한다). 비신뢰 성킹 컴포넌트(128)는 호스트 플랫폼(130)으로부터 실행 요청 및 시스템 콜로부터의 결과를 수신하고, 실행 요청 및 결과에 대한 대응하는 파라미터를 마셜링하고, 입구 게이트를 호출하고, 또한 그와 같은 마셜링된 컴포넌트를 신뢰 성킹 컴포넌트(126)로 전달한다. 따라서, 비신뢰 성킹 컴포넌트(128)는 호스트 플랫폼(130)으로부터 콜 및 실행 요청의 결과에 대한 진입점으로서 동작한다.
일반적인 실시예에 있어서, 비신뢰 성킹 컴포넌트(128)는 UMHPIC(104) 외부의 사용자 모드에서 실행되며, 또한 명시적인 출구 게이트를 통해서 신뢰 성킹 컴포넌트(126)에 의해서 호출될 수도 있다. 다른 실시예에 있어서, 비신뢰 성킹 컴포넌트(128)는 호스트 플랫폼(130)의 서브 컴포넌트로 실행되며, 또한 신뢰 성킹 컴포넌트(126) 내에서 발행된 시스템 콜 또는 트랩 명령으로부터 호출될 수도 있다.
성킹 컴포넌트(124)는 보안 가능 프로세서(102)의 입구 기능 및 출구 기능을 호출하도록 구성되며, 이에 의해서 UMHPIC(104) 및 외부 실행 환경 간 및 그 반대로도 파라미터 및 실행을 전달할 수 있도록 한다. 다른 곳에서 설명한 바와 같이, 애플리케이션(110)은 수정되지 않을 수 있고('무수정') 또한 UMHPIC(104) 내에서 실행되는 지를 알 수 없을 수 있으며, 따라서 호스트 플랫폼(130)으로 콜을 전달하기 위해서 보안 가능 프로세서(102)의 출구 게이트를 호출하도록 구성되지 않을 수도 있다. 마찬가지로, 호스트 PAL(118)은 또한 UMHPIC(104) 내에서 실행되는 애플리케이션에 대한 지원을 제공하도록 수정되지 않을 수 있으며, 따라서 애플리케이션(110) 실행 요청 및 호출의 결과를 애플리케이션(110)으로 되돌려서 전달하기 위해서 보안 가능 프로세서(102)의 입구 게이트를 호출하도록 구성되지 않을 수도 있다. 따라서, 성킹 컴포넌트(124)는 애플리케이션(110) 및 호스트 PAL(118)을 대신하여 보안 가능 프로세서(102)의 입구 게이트 및 출구 게이트를 호출하는 능력을 제공한다. 보안 서비스 컴포넌트(122)는 쓰레드 실행을 조작하고, 비신뢰 저장 장치로의 애플리케이션 데이터의 기입을 방지하고 또한 애플리케이션(110)을 대신하여 호스트 플랫폼(130)의 거동을 검증하고 대응하는 보안 관련 액션을 취하는 능력을 제공한다. 성킹 컴포넌트(124)와 보안 서비스 컴포넌트(122)는 함께 애플리케이션(110)을 UMHPIC(104) 내에서 실행되도록 하는 한편 "비신뢰" 호스트 OS(114)에 의해서 제공되는 시스템 리소스도 여전히 사용한다.
보안 실행 환경을 제공하기 위한 컴퓨팅 장치의 예시
도 2는 실시예에 따른 보안 실행 환경을 제공하기 위해서 사용할 수 있는 예시적인 컴퓨팅 시스템의 블록 다이어그램이다. 컴퓨팅 시스템(200)은 보안 실행 환경을 구현할 수 있는 임의의 적절한 컴퓨팅 장치로서 구성될 수 있다. 다양한 비제한적 예시에 따르면, 적절한 컴퓨팅 장치는 보안 실행 환경의 전체 또는 일부를 저장하고 또한 실행할 수 있는 개인용 컴퓨터(PC), 서버, 서버 팜, 데이터 센터, 전용 컴퓨터, 태블릿 컴퓨터, 게임 콘솔, 스마트폰, 이들의 조합, 또는 임의의 기타 컴퓨팅 장치를 포함할 수 있다.
예시적인 일 구성에 있어서, 컴퓨팅 시스템(200)은 하나 이상의 프로세서(202) 및 메모리(204)를 포함한다. 프로세서(202)는 보안 가능 프로세서(102)와 동일하거나 또는 유사한 하나 이상의 보안 가능 프로세서를 포함한다. 프로세서(202)는 하나의 보안 가능 프로세서 이외의 하나 이상의 범용 또는 전용 프로세서를 포함할 수 있다. 컴퓨팅 시스템(200)은 또한 다양한 다른 시스템과의 통신을 허용하는 통신 접속부(206)를 포함할 수 있다. 컴퓨팅 시스템(200)은 또한 프로세서(202) 및 메모리(204)에 통신 가능하게 결합된 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치, 등과 같은 하나 이상의 입력 장치(208), 및 디스플레이, 스피커, 프린터, 등과 같은 하나 이상의 출력 장치(210)를 포함할 수 있다.
메모리(204)는 프로세서(202)에 적재되고 프로세서에서 실행될 수 있는 프로그램 명령을 저장할 수 있으며, 또한 이들 프로그램의 실행 중에 생성되고/또는 이들 프로그램과 연동되어 사용될 수 있는 데이터도 저장할 수 있다. 도시된 예시에 있어서, 메모리(204)는 운영 체제(212)를 저장하며, 이 운영 체제는 시스템(200)의 기본 시스템 기능을 제공하고 또한, 무엇보다도 먼저, 컴퓨팅 시스템(200)의 다른 프로그램 및 모듈의 조작을 제공한다. 운영 체제(212)는 호스트 OS(114)와 동일하거나 유사할 수 있다.
메모리(204)의 일부는 본 "발명을 실시하기 위한 구체적인 내용" 항목의 다른 곳에서 설명한 것과 같이 UMHPIC 내에 포함되어 있을 수 있다. 메모리(204)는 프로세서와 같이 동일한 물리 칩 상의 메모리 및 다른 칩 상의 메모리 간에 분할되어 있을 수 있다. 메모리(204)는 U-PAL(120)과 동일하거나 또는 유사할 수도 있는 U-PAL(214)을 포함한다. 메모리(204)는 애플리케이션(110)과 동일하거나 또는 유사할 수도 있는 애플리케이션(216)을 포함한다. 애플리케이션(216)은 본 "발명을 실시하기 위한 구체적인 내용" 항목의 다른 곳에서 설명한 것과 같이 호스트 PAL(118)과 동일하거나 또는 유사할 수 있는 호스트 PAL(218)과 인터페이스를 이루도록 구성되는 라이브러리 OS를 포함할 수 있다. 메모리(204)는 비신뢰 코드(112)와 동일하거나 또는 유사할 수도 있는 비신뢰 코드(220)를 포함한다.
UMHPIC 내의 애플리케이션을 실행하는 조작의 예시
도 3은 UMHPIC(104)와 같은 UMHPIC 내에서 실행되는 애플리케이션(110)과 같은 애플리케이션에 보안성을 제공하기 위한 예시적인 프로세스(300)를 나타내는 흐름도이다. 단계(302)에서, 애플리케이션은 본 "발명을 실시하기 위한 구체적인 내용" 항목의 다른 곳에서 설명한 것과 같이 UMHPIC 내부에서 실행된다.
단계(304)에서, U-PAL(120)과 같은 U-PAL은 UMHPIC 내부에서 실행되는 애플리케이션 및 UMHPIC 외부에서 실행되는 호스트 플랫폼 간의 리소스 할당 요청의 상호 작용을 용이하게 한다. 이 용이하게 하는 것은 본 "발명을 실시하기 위한 구체적인 내용" 항목의 다른 곳에서 설명한 것과 같이, 애플리케이션으로부터의 요청, 및 호스트 플랫폼으로부터의 결과를 UMHPIC의 외부로 및 내부로 전달하는 것을 포함할 수 있다. 본 "발명을 실시하기 위한 구체적인 내용" 항목의 다른 곳에서 설명한 것과 같이 이 용이하게 하는 것은 입구 게이트 및 출구 게이트를 호출하는 것 및 파라미터를 마셜링하는 것이 포함될 수 있다. 이 용이하게 하는 것은 시스템 리소스 요청을 호스트 플랫폼으로 전달하는 것, 및 호스트 플랫폼으로부터 관련된 결과를 수신하는 것을 포함할 수 있다.
단계(306)에서, 보안 서비스 컴포넌트(122)와 같은 U-PAL의 보안 서비스 컴포넌트는 용이함의 일부로서 보안 관련 액션을 수행한다. 보안 관련 액션은, 다양한 실시예에 있어서, 본 "발명을 실시하기 위한 구체적인 내용" 항목의 다른 곳에서 설명한 것과 같이, 시스템 서비스 요청의 상호 작용과 관련된 애플리케이션으로부터의 데이터를 암호화하는 단계와, 애플리케이션에 대한 시스템 서비스 요청의 상호 작용과 관련된 데이터를 복호화하는 단계와, 시스템 서비스 요청의 상호 작용과 관련하여 정보를 저장하기 위하여 부기(bookkeeping) 데이터 구조를 유지하는 단계와, 시스템 서비스 요청의 상호 작용의 일부로서 호스트 플랫폼에 의해서 제공되는 리소스 할당 결과의 정확성을 검증하는 단계와, 메모리 할당이 중첩되었는지를 검사하는 단계와, 장치 핸들이 중복되었는지를 판단하는 단계와, 쓰레드 스케줄링 서비스를 수행하는 단계 등을 포함할 수 있다. 기타 보안 관련 액션은 본 개시의 범위로부터 벗어나지 않고도 수행될 수 있다.
도 4는 UMHPIC의 내에서 실행되는 애플리케이션 및 UMHPIC의 외부에서 실행되는, 호스트 플랫폼(130)과 같은 호스트 플랫폼 간의 리소스 요청의 상호 작용을 용이하게 하기 위한 예시적인 프로세스(400)를 나타내는 흐름도이다. 단계(401)에서, 애플리케이션은 UMHPIC 내에서 실행된다.
단계(402)에서, UMHPIC 내에서 실행되는 애플리케이션은 시스템 서비스에 대한 콜을 발행한다. UMHPIC는 보안 가능 프로세서(102)와 같은 보안 가능 프로세서에 의해서 제공된다. 보안 가능 프로세서는 UMHPIC의 외부로 실행을 전달하기 위한 적어도 하나의 출구 게이트 및 UMHPIC의 내부로 실행을 전달하기 위한 적어도 하나의 입구 게이트를 제공한다. 콜은 라이브러리 OS(116)와 같은 라이브러리 OS를 포함하는 애플리케이션의 임의의 서브 컴포넌트로부터 올 수 있으며, 라이브러리 OS를 포함하는 애플리케이션 및 임의의 서브 컴포넌트는 무수정되어 UMHPIC 내에서 실행될 수 있으며 또한 UMHPIC의 외부로 실행을 전달하는 고유의 기능은 가지고 있지 않을 수 있다.
단계(404)에서, U-PAL(120)의 보안 서비스 컴포넌트(122)와 같은 보안 서비스 컴포넌트는 애플리케이션으로부터 콜을 수신한다. 보안 서비스 컴포넌트는 UMHPIC 내에서 실행된다.
단계(405)에서, U-PAL은 호스트 플랫폼으로 전송되기 전에 콜 파라미터 내의 데이터를 은폐하기 위한 조작을 수행할 수 있다. 예를 들면, U-PAL은 호스트 플랫폼에 의해서 항구적 저장 장치에 기입되는 데이터를 암호화할 수 있다.
단계(406)에서, U-PAL(102)의 신뢰 성킹 컴포넌트(126)와 같은 U-PAL의 신뢰 성킹 컴포넌트는 이 콜의 파라미터를 마셜링한다. 일부 파라미터, 예를 들면 스칼라 값에 대해서, 마셜링 조작은 널(null) 조작일 수 있다. 다른 파라미터에 대해서, 마셜링 조작은 더욱 복잡할 수 있다. 예를 들면, 콜이 버퍼를 디스크에 기입하는 것인 경우, 신뢰 성킹 컴포넌트는 보호 메모리 영역 외부의 비보호 메모리에 임시 버퍼를 할당하고, 보호 메모리 영역 내의 버퍼로부터 비보호 메모리 내의 임시 버퍼로 콘텐트를 복사하고, 또한 임시 버퍼를 가리키는 콜 파라미터 내의 버퍼 포인터를 업데이트할 수 있다. 다른 예시에 있어서, 파라미터는 포인터 리치(pointer-rich) 데이터 구조를 포함할 수 있으며, 또한 신뢰 성킹 컴포넌트는 이를 임시 버퍼 내로 직렬화할 수 있다.
단계(408)에서, 신뢰 성킹 컴포넌트는 보안 가능 프로세서에 의해서 제공되는 UMHPIC의 출구 게이트를 호출하여 UMHPIC의 외부에서 실행되는 U-PAL(120)의 비신뢰 성킹 컴포넌트(128)와 같은 비신뢰 성킹 컴포넌트의 코드로 실행을 전달한다.
단계(410)에서, 비신뢰 성킹 컴포넌트는 콜 파라미터를 언마셜링한다. 일부 파라미터, 예를 들면 스칼라 값에 대해서, 언마셜링 조작은 널(null) 조작일 수 있다. 다른 파라미터에 대해서, 언마셜링 조작은 더욱 복잡할 수 있다. 예를 들면, 언마셜링 조작은 다수의 포인터 리치 데이터 구조를 비직렬화할 수 있다. 다양한 실시예는 성능을 개선하기 위해서 비신뢰 성킹 컴포넌트 및 신뢰 성킹 컴포넌트 간의 최적화 및/또는 추가적인 조정을 포함할 수 있다. 마셜링 및 언마셜링에 대해서 다양한 최적화 기법을 사용할 수 있다.
단계(412)에서, 비신뢰 성킹 컴포넌트는 호스트 플랫폼(130)과 같은 호스트 플랫폼으로 콜을 발행한다. 단계(414)에서, 호스트 플랫폼은 요청된 시스템 서비스를 완수한다.
단계(416)에서, 호스트 플랫폼으로부터 비신뢰 성킹 컴포넌트로 실행이 반환되면, 비신뢰 컴포넌트는 이 콜의 결과를 마셜링한다. 일부 결과, 예를 들면 스칼라 값에 대해서, 마셜링 조작은 널(null) 조작일 수 있다. 다른 결과에 대해서, 마셜링 조작은 더욱 복잡할 수 있다. 예를 들면, 마셜링 조작은 포인터 리치 데이터 구조를 직렬화할 수 있다.
단계(418)에서, 비신뢰 성킹 컴포넌트는 보안 가능 프로세서에 의해서 제공되는 UMHPIC의 입구 게이트를 호출하여 UMHPIC의 내부에서 실행되는 신뢰 성킹 컴포넌트의 코드로 실행을 전달한다.
단계(420)에서, 신뢰 성킹 컴포넌트는 호출 결과를 언마셜링한다. 일부 결과, 예를 들면 스칼라 값에 대해서, 언마셜링 조작은 널(null) 조작일 수 있다. 다른 결과에 대해서, 언마셜링 조작은 더욱 복잡할 수 있다. 예를 들면, 콜이 디스크로부터 버퍼를 판독하는 것인 경우, 신뢰 성킹 컴포넌트는 비보호 메모리 내의 임시 버퍼로부터 데이터를 보호 메모리 영역 내의 버퍼로 복사하고, 또한 최종 버퍼를 가리키는 결과 파라미터 내의 버퍼 포인터를 업데이트할 수 있다. 다른 예시에 있어서, 파라미터는 포인터 리치 데이터 구조를 포함할 수 있으며, 또한 신뢰 성킹 컴포넌트는 이 데이터 구조를 비직렬화할 수 있다.
단계(421)에서, 보안 서비스 컴포넌트는 호스트 플랫폼에 의해서 제공되는 저장 장치로부터 판독되는 데이터를 암호화할 수 있으며 또한 디지털 서명 또는 메시지 인증 코드를 검증하여 데이터의 무결성을 검증할 수도 있다. 또한 재전송 공격에 대해 보호되도록 설계된 검증을 수행할 수도 있다. 이들 단계는 또한, 예를 들면, 하드 디스크 상의 페이지 파일로부터 판독되기 때문에 가상 메모리 페이지에도 적용될 수 있다. 본 "발명을 실시하기 위한 구체적인 내용" 항목의 다른 곳에서 기술한 것과 같이, 보안 서비스 컴포넌트는 UMHPIC 내에서 실행되는 애플리케이션에 의해서 호스트 저장 시스템에 기입된 데이터를 보호한다. 이는 호스트 플랫폼에 의해서 제공되는 임의의 파일 시스템을 포함하여 호스트 플랫폼 및 그 저장 서비스가 UMHPIC 내에서 실행되는 애플리케이션에 의해서 신뢰받지 못하기 때문이다. 하지만 애플리케이션 자체는 수정되지 않고 UMHPIC 내에서 실행될 수 있으며, 따라서 보호없이도 파일 시스템에 데이터를 기입하도록 구성될 수 있다. 따라서, 파일 시스템으로부터 판독되는 데이터는 보안 서비스 컴포넌트에 의해서 복호화 및/또는 검증되는데, 이는 애플리케이션이 보호 데이터를 수신하도록 구성되지 않았고, 또한 보호 데이터를 복호화하고 검증하도록 장비되지 않았기 때문일 수 있다. 실시예에 있어서, 복호화 단계(421)는 최적화의 하나로써 언마셜링 단계(420)와 조합될 수도 있다.
단계(422)에서, 보안 서비스 컴포넌트는 부기 데이터 구조에 대해서 반환된 결과를 검증하여 이 결과가 일관성 있고 또한 신뢰성이 있음을 검증한다. 실시예에 있어서, 콜은 시스템 리소스 또는 서비스에 대한 요청일 수 있으며, 또한 보안 서비스 컴포넌트는 시스템 요청에 대해 반응하여 반환된 결과가 요청된 리소스 또는 서비스에 대해서 유효한지를 검증한다. 시스템 리소스는, 다양한 실시예에 있어서, 할당된 메모리 리소스, 네트워킹 리소스, 입/출력 리소스, 또는 기타 시스템 리소스일 수 있다.
보안 서비스 컴포넌트는 부기 데이터 구조를 이용하여 호스트 플랫폼으로부터의 임의의 비신뢰 서비스의 출력을 검증할 수 있다. 예를 들면, 부기 데이터 구조는 보안 서비스 컴포넌트가 호스트 플랫폼으로부터의 인터페이스 핸들 및 메모리 할당이 적절한 것인지를 검증하도록 할 수 있다. 결과가 리소스 또는 인터페이스 핸들인 경우의 실시예에 있어서, 보안 서비스 컴포넌트는 재전송 공격(replay attack)을 회피하기 위해서 반환된 리소스 또는 인터페이스 핸들이 이전에 제공된 리소스 핸들과 중복되는지를 검증한다. 결과가 애플리케이션에 할당된 메모리를 표시하는 경우의 실시예에 있어서, 보안 서비스 컴포넌트는 할당된 메모리가 애플리케이션에 이전에 할당된 메모리인지(이 경우 애플리케이션이 자신의 데이터에 덮어쓰게 되고 예상하지 못한 방식으로 동작할 수 있음), 애플리케이션에서 액세스 가능한지, 및 예약된 또는 유효한 주소 범위 내에 위치하지 않는지를 검증한다. 일반적인 실시예에 있어서, 부기 데이터 구조는 하나 이상의 메모리 할당, 리소스 핸들, 및 쓰레드 식별자와 관련된 데이터를 저장하기 위한 구조를 포함한다.
단계(424)에서, 콜의 결과에 대한 부기 데이터 구조에 대해 검증하여 이 결과가 유효하며 따라서 신뢰할 수 있는 것으로 결정되는 경우, 실행은 계속된다.
단계(426)에서, 단계(422)에서의 검증의 결과가 하나 이상의 결과가 유효하지 않은 결과를 얻게 되면, 보안 서비스 컴포넌트는 실패 결과를 애플리케이션으로 반환한다. 일부 실시예에 있어서, 실패 결과는 이 서비스 요청과 관련된 에러 코드이며, 예를 들면, 디스크 판독 서비스 요청에 대해서는 공지의 "disk read error"가 표시된다. 일부 실시예에 있어서, 실패는 파국적인 실패로서 애플리케이션으로 전달되어 애플리케이션이 곧바로 종료되도록 할 수 있다.
단계(428)에서, 단계(422)에서의 검증의 결과 이 결과가 유효하다는 것을 포함하는 경우, 보안 서비스 컴포넌트는 서비스 요청의 타입에 따라 적절하게 부기 데이터 구조를 업데이트한다. 예를 들면, 서비스 요청이 새로운 메모리 영역을 할당하는 것인 경우, 보안 서비스 컴포넌트는 메모리 할당 테이블을 업데이트할 수 있으며, 보안 서비스 컴포넌트는 또한 보안 가능 프로세서에 명령을 발행하여 UMHPIC의 보호 메모리 영역에 새로운 메모리 영역을 추가하도록 할 수 있다.
단계(430)에서, 보안 서비스 컴포넌트는 애플리케이션에 대한 콜의 성공적인 결과를 제공하며, 실행은 계속된다.
도 5는 호스트 플랫폼(130)과 같은 호스트 플랫폼으로부터의 실행을 위한 요청 및 비동기 이벤트의 통지를 조작하기 위한 예시적인 프로세스(500)를 나타내는 흐름도이다. 단계(502)에서, 비신뢰 성킹 컴포넌트(128)와 같은 비신뢰 성킹 컴포넌트는 호스트 OS(114) 또는 호스트 PAL(118)과 같은 호스트 플랫폼으로부터 실행 요청 또는 비동기 통지를 수신한다. 요청 및 비동기 통지에는 다양한 명확하게 정의된 파라미터가 수반된다.
단계(504)에서, 비신뢰 성킹 컴포넌트는 요청 및 통지에 부속되는 파라미터를 마셜링한다. 즉, 비신뢰 성킹 컴포넌트는 입구 게이트를 통해서 UMHPIC 내부에서 실행되는 프로세스로 UMHPIC(104)와 같은 UMHPIC 내로 전달하는데 적합하도록 파라미터를 변환시킨다.
단계(506)에서, 비신뢰 성킹 컴포넌트는 보안 가능 프로세서에 의해서 제공되는 입구 게이트를 호출하여 마셜링된 요청 및 통지와 관련된 파라미터를 UMHPIC로 전달한다. 또한 단계(508)에서, UMHPIC 내부에서 실행되는 신뢰 성킹 컴포넌트(126)와 같은 신뢰 성킹 컴포넌트는 입구 게이트를 통해서 마셜링된 파라미터를 수신한다.
단계(501)에서, 신뢰 성킹 컴포넌트는 비신뢰 성킹 계층(layer)로부터 수신된 파라미터를 언마셜링한다. 파라미터의 언마셜링은 마셜링된 파라미터를 변환하여 실행 요청 또는 비동기 통지를 재생성하는 것을 포함한다. 단계(512)에서, 신뢰 성킹 컴포넌트는 언마셜링링된 파라미터를 UMHPIC 내부에서 실행되는 안전 서비스 컴포넌트(122)와 같은 안전 서비스 컴포넌트로 전달한다.
단계(514)에서, 보안 서비스 컴포넌트는 보안 관련 액션을 수행한다. 이들 액션은 호스트 플랫폼에 의해서 제공되는 실행 요청 또는 비동기 통지가 유효한지를 검증하는 단계를 포함할 수 있다.
단계(516)에서, 보안 서비스 컴포넌트는 실행 요청 또는 비동기 통지를 UMHPIC 내에서 실행되는 애플리케이션 및/또는 라이브러리 OS로 전달한다.
도 3 내지 도 5는 다양한 실시예에 따른 예시적인 프로세스는 나타내는 흐름도를 도시한다. 이들 프로세스의 동작은 개별적인 블록에 도시하였으며 또한 이들 블록을 참조하여 요약하여 설명하였다. 이들 프로세스는 각각의 조작이 하드웨어, 소프트웨어 또는 이들을 조합하여 구현될 수 있는 일련의 조작을 나타낼 수 있는 논리적인 흐름도로서 도시되었다. 소프트웨어의 맥락에 있어서, 컴퓨터 실행 가능 명령을 나타내는 동작은 하나 이상의 컴퓨터 저장 매체 상에 저장되며, 이 명령은 하나 이상의 프로세서에 의해서 실행될 때, 하나 이상의 프로세서가 상술한 동작을 수행할 수 있도록 한다. 일반적으로, 컴퓨터 실행 가능 명령은 특정 기능을 수행하거나 특정 추상 데이터 타입을 구현한 루틴, 프로그램, 객체, 모듈, 컴포넌트, 데이터 구조, 등을 포함한다. 설명된 동작의 순서는 제한으로서 간주되도록 의도되지 않았으며, 또한 임의 갯수의 설명한 동작은 임의의 순서대로 조합될 수도 있고, 하위 동작으로 분리될 수도 있으며, 및/또는 이 프로세스를 구현함에 있어서 병렬로 수행될 수도 있다. 본 개시의 다양한 실시예에 따른 프로세스는 논리적인 흐름도에 도시된 일부만 또는 전체 조작 공정을 포함할 수 있다.
컴퓨터 판독 가능 매체
사용되는 컴퓨팅 장치의 구성 및 타입에 따라서, 도 2에서의 컴퓨팅 시스템(200)의 메모리(204)는 휘발성 메모리(예를 들면, RAM) 및/또는 비휘발성 메모리(예를 들면, ROM, 플래시 메모리 등)를 포함할 수 있다. 메모리(204)는 또한 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈, 및 기타 데이터의 비휘발성 저장 장치를 컴퓨팅 시스템(200)에 제공할 수 있는 플래시 메모리, 자기 기억 장치, 광학 기억 장치, 및/또는 테이프 기억 장치를 포함하지만 이에 한정되지는 않는 부가적인 탈착식 저장 장치 및/또는 비탈착식 저장 장치를 포함할 수 있다.
메모리(204)는 컴퓨터 판독 가능 매체의 일 예시이다. 컴퓨터 판독 가능 매체는 적어도 두 타입의 컴퓨터 판독 가능 매체, 즉 컴퓨터 저장 매체 및 통신 매체를 포함한다.
컴퓨터 저장 매체는 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하기 위한 임의의 프로세스 또는 기술에서 구현되는 휘발성 및 비휘발성, 탈착식 및 비탈착식 매체를 포함한다. 컴퓨터 저장 매체는, 상변화 메모리(PRAM, phase change memory), 스태틱 RAM(SRAM, static RAM), 다이나믹 RAM(DRAM, dynamic RAM), 기타 타입의 RAM(random-access memory), ROM(read-only memory), 전기적으로 소거 가능한 프로그래머블 읽기 전용 메모리(EEPROM, electrically erasable programmable read-only memory), 플래시 메모리 또는 기타 메모리 기술, CD-ROM, 디지털 다용도 디스크(DVD, digital versatile disk), 또는 기타 광학 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨팅 장치에 의해서 액세스되는 정보를 저장하기 위해서 사용될 수 있는 임의의 기타 비전송 매체를 포함하지만, 이에 한정되지는 않는다.
반대로, 통신 매체는 반송파와 같은 변조 데이터 신호, 또는 기타 전송 메커니즘 내의 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈, 또는 기타 데이터로 구현될 수 있다. 본 명세서에서 정의된 바와 같이, 컴퓨터 저장 매체는 통신 매체를 포함하지 않는다.
결론
이상의 개시가 구조적 특징 및/또는 방법적 동작에 특유한 표현을 이용하였지만, 본 발명은 설명된 구체적인 특징 또는 동작으로 제한되지는 않는다. 오히려, 구체적인 특징 및 동작은 본 발명을 구현하는 예시적인 형태로서 개시되었다.

Claims (20)

  1. 사용자 모드 하드웨어 보호 격리 컨테이너(UMHPIC, user-mode hardware-protected isolation container) 내에서 애플리케이션을 실행하는 단계 - 상기 UMHPIC는 적어도 상기 UMHPIC 외부로 실행을 전달하기 위한 출구 게이트(exit gate)와 상기 UMHPIC 내부로 실행을 반환하기 위한 입구 게이트(entry gate)를 제공하는 보안 가능 프로세서에 의해서 보호됨 - 와,
    상기 UMHPIC 내에서 실행되는 UMHPIC 감지형(UMHPIC-aware) 플랫폼 적응 계층에 의해, 상기 UMHPIC 내부의 애플리케이션과 상기 UMHPIC의 외부에서 실행되는 호스트 플랫폼의 하나 이상의 비신뢰(untrusted) 컴포넌트 사이에서의 시스템 서비스 요청의 상호 작용을 용이하게 하는 단계와,
    상기 UMHPIC 감지형 플랫폼 적응 계층의 보안 서비스 컴포넌트에 의해, 보안 관련 액션을 수행하는 단계
    를 포함하고,
    상기 보안 관련 액션은, 상기 UMHPIC 내부의 상기 애플리케이션과 상기 UMHPIC 외부에서 실행되는 상기 호스트 플랫폼의 상기 하나 이상의 비신뢰 컴포넌트 사이의 상기 시스템 서비스 요청의 상호 작용을 용이하게 하는 것인
    보안 관련 액션 수행 방법.
  2. 제 1 항에 있어서,
    상기 보안 관련 액션은, 상기 애플리케이션으로부터 오고 또한 상기 시스템 서비스 요청의 상호 작용과 관련된 데이터를 암호화하는 것을 포함하는
    보안 관련 액션 수행 방법.
  3. 제 1 항에 있어서,
    상기 보안 관련 액션은, 상기 시스템 서비스 요청의 상호 작용에 관한 정보를 저장하기 위한 부기(bookkeeping) 데이터 구조를 유지하는 것을 포함하는
    보안 관련 액션 수행 방법.
  4. 제 1 항에 있어서,
    상기 보안 관련 액션은, 상기 애플리케이션에 관한 것이고 또한 상기 시스템 서비스 요청의 상호 작용과 관련된 데이터를 복호화하는 것을 포함하는
    보안 관련 액션 수행 방법.
  5. 제 1 항에 있어서,
    상기 시스템 서비스 요청의 상호 작용은 리소스 할당에 대한 요청을 포함하고,
    상기 보안 관련 액션은, 상기 시스템 서비스 요청의 상호 작용의 일부로서 상기 호스트 플랫폼에 의해서 제공되는 리소스 할당 결과의 정확성을 검증하는 것을 포함하는
    보안 관련 액션 수행 방법.
  6. 제 5 항에 있어서,
    상기 리소스 할당 결과는 메모리 리소스의 표시를 포함하며,
    상기 리소스 할당 결과의 상기 정확성을 검증하는 것은 메모리 할당의 중첩에 대한 검사를 포함하는
    보안 관련 액션 수행 방법.
  7. 제 1 항에 있어서,
    상기 보안 관련 액션은 쓰레드 스케줄링 서비스를 수행하는 것을 포함하는,
    보안 관련 액션 수행 방법.
  8. 보안 관련 액션을 수행하기 위한 시스템으로서,
    사용자 모드 하드웨어 보호 격리 컨테이너(UMHPIC)로 실행을 전달하는 입구 게이트 및 상기 UMHPIC로부터 실행을 전달받는 출구 게이트를 적어도 제공하도록 구성된 보안 가능 프로세서를 포함하는 하나 이상의 프로세서와,
    상기 UMHPIC를 포함하는 메모리와,
    상기 UMHPIC 내에서 실행되는 애플리케이션과 상기 UMHPIC의 외부에서 실행되는 호스트 플랫폼의 하나 이상의 비신뢰 컴포넌트 사이의 시스템 서비스 요청의 상호 작용을 용이하게 하는, 적어도 부분적으로 상기 UMHPIC 내부에서 상기 보안 가능 프로세서에 의해서 실행 가능한 UMHPIC 감지형 플랫폼 적응 계층
    을 포함하되,
    상기 UMHPIC 감지형 플랫폼 적응 계층은, 상기 시스템 서비스 요청의 상호 작용을 용이하게 하는 것의 일부로서 보안 관련 액션을 수행하는, 상기 UMHPIC 내부의 보안 가능 프로세서에 의해 실행가능한 보안 서비스 컴포넌트를 포함하고,
    상기 보안 관련 액션은, 상기 UMHPIC 내부에서 실행되는 상기 애플리케이션과 상기 UMHPIC 외부에서 실행되는 상기 호스트 플랫폼의 상기 하나 이상의 비신뢰 컴포넌트 사이의 상기 시스템 서비스 요청의 상호 작용을 용이하게 하는
    보안 관련 액션을 수행하기 위한 시스템.
  9. 제 8 항에 있어서,
    상기 보안 관련 액션은, 상기 애플리케이션으로부터 오고 또한 상기 시스템 서비스 요청의 상호 작용과 관련된 데이터를 암호화하는 것을 포함하는
    보안 관련 액션을 수행하기 위한 시스템.
  10. 제 8 항에 있어서,
    상기 UMHPIC 감지형 플랫폼 적응 계층은 상기 UMHPIC 내에 부기 데이터 구조를 작성하도록 구성되고,
    상기 보안 관련 액션은, 상기 시스템 서비스 요청의 상호 작용에 관한 정보를 저장하기 위해 상기 부기 데이터 구조를 유지하는 것을 포함하는
    보안 관련 액션을 수행하기 위한 시스템.
  11. 제 8 항에 있어서,
    상기 보안 관련 액션은, 상기 애플리케이션에 관한 것이고 또한 상기 시스템 서비스 요청의 상호 작용과 관련된 데이터를 복호화하는 것을 포함하는
    보안 관련 액션을 수행하기 위한 시스템.
  12. 제 8 항에 있어서,
    상기 시스템 서비스 요청의 상호 작용은 리소스 할당에 대한 요청이고,
    상기 보안 관련 액션은, 상기 시스템 서비스 요청의 상호 작용의 일부로서 상기 호스트 플랫폼에 의해서 제공되는 리소스 할당 결과의 정확성을 검증하는 것을 포함하는
    보안 관련 액션을 수행하기 위한 시스템.
  13. 제 12 항에 있어서,
    상기 리소스 할당 결과는 메모리 리소스의 표시를 포함하며,
    상기 리소스 할당 결과의 상기 정확성을 검증하는 것은 메모리 할당의 중첩에 대한 검사를 포함하는
    보안 관련 액션을 수행하기 위한 시스템.
  14. 제 8 항에 있어서,
    상기 보안 관련 액션은 쓰레드 스케줄링 서비스를 수행하는 것을 포함하는
    보안 관련 액션을 수행하기 위한 시스템.
  15. 제 8 항에 있어서,
    상기 UMHPIC 감지형 플랫폼 적응 계층은, 상기 시스템 서비스 요청의 상호 작용을 용이하게 하는 것의 일부로서, 상기 시스템 서비스 요청의 상호 작용과 관련된 파라미터를 마셜링(marshal) 및 언마셜링(unmarshal)하도록 구성된 성킹(thunking) 컴포넌트를 더 포함하는
    보안 관련 액션을 수행하기 위한 시스템.
  16. 컴퓨팅 장치의 하나 이상의 프로세서에 의해서 실행 가능한 복수의 프로그래밍 명령어를 포함하는 컴퓨터 판독 가능 저장 장치로서,
    상기 복수의 프로그래밍 명령어는 상기 컴퓨팅 장치로 하여금,
    사용자 모드 하드웨어 보호 격리 컨테이너(UMHPIC) 내에서 실행되는 애플리케이션과 상기 UMHPIC의 외부에서 실행되는 호스트 플랫폼의 하나 이상의 비신뢰 컴포넌트 사이의 시스템 서비스 요청의 상호 작용을 용이하게 하고 - 상기 UMHPIC는 적어도 상기 UMHPIC 외부로 실행을 전달하기 위한 출구 게이트 및 상기 UMHPIC 내로 실행을 전달하기 위한 입구 게이트를 제공하도록 구성되어 있는 보안 가능 프로세서에 의해 제공됨 -,
    상기 시스템 서비스 요청의 상호 작용을 용이하게 하는 것의 일부로서 상기 애플리케이션을 대신하여 보안 관련 액션을 수행하도록 하며,
    상기 보안 관련 액션은, 상기 UMHPIC 내부에서 실행되는 상기 애플리케이션과 상기 UMHPIC 외부에서 실행되는 상기 호스트 플랫폼의 상기 하나 이상의 비신뢰 컴포넌트 사이의 상기 시스템 서비스 요청의 상호 작용을 용이하게 하는
    컴퓨터 판독 가능 저장 장치.
  17. 제 16 항에 있어서,
    상기 보안 관련 액션은, 상기 애플리케이션으로부터 오고 또한 상기 시스템 서비스 요청의 상호 작용과 관련된 데이터를 암호화하는 것을 포함하는
    컴퓨터 판독 가능 저장 장치.
  18. 제 16 항에 있어서,
    상기 시스템 서비스 요청의 상호 작용은 리소스 할당에 대한 요청을 포함하고,
    상기 보안 관련 액션은, 상기 시스템 서비스 요청의 상호 작용의 일부로서 상기 호스트 플랫폼에 의해서 제공되는 리소스 할당 결과의 정확성을 검증하는 것을 포함하는
    컴퓨터 판독 가능 저장 장치.
  19. 제 18 항에 있어서,
    상기 리소스 할당 결과는 메모리 리소스의 표시를 포함하며,
    상기 리소스 할당 결과의 상기 정확성을 검증하는 것은 메모리 할당의 중첩에 대한 검사를 포함하는
    컴퓨터 판독 가능 저장 장치.
  20. 제 18 항에 있어서,
    상기 리소스 할당 결과는 장치 핸들을 포함하며,
    상기 리소스 할당 결과의 상기 정확성 검증은 상기 장치 핸들이 중복된 장치 핸들인지를 결정하는 것을 포함하는
    컴퓨터 판독 가능 저장 장치.
KR1020147016054A 2011-12-12 2012-12-04 하드웨어 보호 애플리케이션에 대한 시스템 서비스 요청 상호작용을 용이하게 하는 기법 KR102073433B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/323,562 2011-12-12
US13/323,562 US9389933B2 (en) 2011-12-12 2011-12-12 Facilitating system service request interactions for hardware-protected applications
PCT/US2012/067660 WO2013090044A1 (en) 2011-12-12 2012-12-04 Facilitating system service request interactions for hardware-protected applications

Publications (2)

Publication Number Publication Date
KR20140101367A KR20140101367A (ko) 2014-08-19
KR102073433B1 true KR102073433B1 (ko) 2020-02-04

Family

ID=48496285

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147016054A KR102073433B1 (ko) 2011-12-12 2012-12-04 하드웨어 보호 애플리케이션에 대한 시스템 서비스 요청 상호작용을 용이하게 하는 기법

Country Status (12)

Country Link
US (1) US9389933B2 (ko)
EP (1) EP2791857B1 (ko)
JP (1) JP6083097B2 (ko)
KR (1) KR102073433B1 (ko)
CN (1) CN103136468B (ko)
AU (1) AU2012352754B2 (ko)
BR (1) BR112014014153B1 (ko)
CA (1) CA2857586C (ko)
IN (1) IN2014CN03961A (ko)
MX (1) MX345408B (ko)
RU (1) RU2621001C2 (ko)
WO (1) WO2013090044A1 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
US9323921B2 (en) 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9141979B1 (en) * 2013-12-11 2015-09-22 Ca, Inc. Virtual stand-in computing service for production computing service
US20150278512A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Virtualization based intra-block workload isolation
GB2525596B (en) * 2014-04-28 2021-05-26 Arm Ip Ltd Access control and code scheduling
US9922200B2 (en) 2014-06-30 2018-03-20 Microsoft Technology Licensing, Llc Securely storing content within public clouds
US10044695B1 (en) 2014-09-02 2018-08-07 Amazon Technologies, Inc. Application instances authenticated by secure measurements
US10061915B1 (en) 2014-09-03 2018-08-28 Amazon Technologies, Inc. Posture assessment in a secure execution environment
US9491111B1 (en) * 2014-09-03 2016-11-08 Amazon Technologies, Inc. Securing service control on third party hardware
US10079681B1 (en) 2014-09-03 2018-09-18 Amazon Technologies, Inc. Securing service layer on third party hardware
US10230529B2 (en) * 2015-07-31 2019-03-12 Microsft Technology Licensing, LLC Techniques to secure computation data in a computing environment
GB201516227D0 (en) * 2015-09-14 2015-10-28 Horne Stephen And Hemmer Fabian And Von Oven Peter Running applications on a computer device
US10664179B2 (en) 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
US9798641B2 (en) * 2015-12-22 2017-10-24 Intel Corporation Method to increase cloud availability and silicon isolation using secure enclaves
US10936331B2 (en) 2017-02-23 2021-03-02 International Business Machines Corporation Running a kernel-dependent application in a container
US10146707B2 (en) 2017-03-14 2018-12-04 International Business Machines Corporation Hardware-based memory protection
US10795647B2 (en) * 2017-10-16 2020-10-06 Adobe, Inc. Application digital content control using an embedded machine learning module
CN109040137B (zh) * 2018-10-10 2021-04-09 杭州安恒信息技术股份有限公司 用于检测中间人攻击的方法、装置以及电子设备
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
CN109922056B (zh) 2019-02-26 2021-09-10 创新先进技术有限公司 数据安全处理方法及其终端、服务器
US11409619B2 (en) 2020-04-29 2022-08-09 The Research Foundation For The State University Of New York Recovering a virtual machine after failure of post-copy live migration
CN113297566B (zh) * 2020-05-15 2024-04-02 阿里巴巴集团控股有限公司 沙箱实现方法、装置、设备和存储介质
US11475140B1 (en) 2020-11-24 2022-10-18 Amazon Technologies, Inc. Enclave-based cryptography services in edge computing environments
CN113791865A (zh) * 2021-09-08 2021-12-14 山石网科通信技术股份有限公司 容器安全的处理方法及装置、存储介质和处理器

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030208595A1 (en) * 2001-04-27 2003-11-06 Gouge David Wayne Adaptable wireless proximity networking
US20110047376A1 (en) * 2000-06-30 2011-02-24 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US20110162082A1 (en) * 2004-04-08 2011-06-30 Texas Instruments Incoporated Methods and apparatus for providing data security

Family Cites Families (192)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4874164A (en) 1986-07-18 1989-10-17 Commodore-Amiga, Inc. Personal computer apparatus for block transfer of bit-mapped image data
US5819091A (en) 1994-12-22 1998-10-06 Arendt; James Wendell User level control of degree of client-side processing
US5754830A (en) 1996-04-01 1998-05-19 Openconnect Systems, Incorporated Server and web browser terminal emulator for persistent connection to a legacy host system and method of operation
US5815686A (en) 1996-09-12 1998-09-29 Silicon Graphics, Inc. Method and apparatus for address space translation using a TLB
US5926631A (en) 1997-08-15 1999-07-20 International Business Machines Corporation Network computer emulator systems, methods and computer program products for personal computers
AU2331099A (en) * 1998-01-22 1999-08-09 Intelogis, Inc. Method and apparatus for universal data exchange gateway
US6721288B1 (en) 1998-09-16 2004-04-13 Openwave Systems Inc. Wireless mobile devices having improved operation during network unavailability
US6546425B1 (en) 1998-10-09 2003-04-08 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US7136645B2 (en) 1998-10-09 2006-11-14 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US7293107B1 (en) 1998-10-09 2007-11-06 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US8060656B2 (en) 1998-10-09 2011-11-15 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6357003B1 (en) 1998-10-21 2002-03-12 Silicon Graphics, Inc. Advanced firmware boot sequence x86 computer system that maintains legacy hardware and software compatibility
US7882247B2 (en) 1999-06-11 2011-02-01 Netmotion Wireless, Inc. Method and apparatus for providing secure connectivity in mobile and other intermittent computing environments
US6578054B1 (en) 1999-10-04 2003-06-10 Microsoft Corporation Method and system for supporting off-line mode of operation and synchronization using resource state information
US6668376B1 (en) 2000-01-07 2003-12-23 Ricoh Company, Ltd. System and method for automatically loading a device driver
US7287259B2 (en) 2000-04-24 2007-10-23 Microsoft Corporation Isolating assembly versions for binding to application programs
US6665731B1 (en) 2000-05-16 2003-12-16 Intel Corporation Method for remotely accessing component management information
US6760815B1 (en) 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
US6865591B1 (en) 2000-06-30 2005-03-08 Intel Corporation Apparatus and method for building distributed fault-tolerant/high-availability computed applications
US6813670B1 (en) 2000-09-26 2004-11-02 Microsoft Corporation Automatic server-side plug-and-play without user intervention
WO2002059773A1 (en) 2000-12-04 2002-08-01 Thinkshare Corp. Modular distributed mobile data applications
US6832273B2 (en) 2000-12-21 2004-12-14 Microsoft Corporation System and method to specify extended configuration descriptor information in USB devices
US20030037237A1 (en) 2001-04-09 2003-02-20 Jean-Paul Abgrall Systems and methods for computer device authentication
US20050198379A1 (en) 2001-06-13 2005-09-08 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
US6799173B2 (en) 2001-11-14 2004-09-28 Sun Microsystems, Inc. Method and apparatus for sharing code containing references to non-shared objects
US6981268B2 (en) 2001-12-05 2005-12-27 Microsoft Corporation System and method for persisting and resolving application assembly binds
US7185359B2 (en) 2001-12-21 2007-02-27 Microsoft Corporation Authentication and authorization across autonomous network systems
US7275105B2 (en) 2002-01-16 2007-09-25 Laszlo Systems, Inc. Enabling online and offline operation
KR100444996B1 (ko) 2002-02-08 2004-08-21 삼성전자주식회사 인터넷을 통한 디바이스 드라이버 자동 설치 및 유지 보수방법 및 그 시스템
US7577722B1 (en) 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
US6954852B2 (en) 2002-04-18 2005-10-11 Ardence, Inc. System for and method of network booting of an operating system to a client computer using hibernation
US7676538B2 (en) 2002-05-02 2010-03-09 Bea Systems, Inc. Systems and methods for application view transactions
US8255548B2 (en) 2002-06-13 2012-08-28 Salesforce.Com, Inc. Offline web services API to mirror online web services API
US9171049B2 (en) 2002-06-13 2015-10-27 Salesforce.Com, Inc. Offline simulation of online session between client and server
US7065607B2 (en) 2002-06-28 2006-06-20 Microsoft Corporation System and method for implementing a counter
US7421579B2 (en) 2002-06-28 2008-09-02 Microsoft Corporation Multiplexing a secure counter to implement second level secure counters
US20040015537A1 (en) 2002-07-15 2004-01-22 Richard Doerksen Handheld client framework system
US7484208B1 (en) 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US7536688B2 (en) 2003-02-28 2009-05-19 Azul Systems Segmented virtual machine
US7509644B2 (en) * 2003-03-04 2009-03-24 Secure 64 Software Corp. Operating system capable of supporting a customized execution environment
US7788669B2 (en) 2003-05-02 2010-08-31 Microsoft Corporation System for isolating first computing environment from second execution environment while sharing resources by copying data from first portion to second portion of memory
US7444337B2 (en) 2004-03-09 2008-10-28 Ntt Docomo, Inc. Framework and associated apparatus for the adaptive replication of applications with server side code units
US7530103B2 (en) * 2003-08-07 2009-05-05 Microsoft Corporation Projection of trustworthiness from a trusted environment to an untrusted environment
US7383537B2 (en) 2003-08-20 2008-06-03 Microsoft Corporation Debugging an application that employs rights-managed content
US20080222160A1 (en) 2003-09-15 2008-09-11 Macdonald Craig Method and system for providing a program for execution without requiring installation
US7774762B2 (en) 2003-09-15 2010-08-10 Trigence Corp. System including run-time software to enable a software application to execute on an incompatible computer platform
US7519814B2 (en) 2003-09-15 2009-04-14 Trigence Corp. System for containerization of application sets
US20050076186A1 (en) 2003-10-03 2005-04-07 Microsoft Corporation Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements
US20050091226A1 (en) 2003-10-23 2005-04-28 Yun Lin Persistent caching directory level support
US7441011B2 (en) 2003-10-23 2008-10-21 Microsoft Corporation Truth on client persistent caching
US7496768B2 (en) 2003-10-24 2009-02-24 Microsoft Corporation Providing secure input and output to a trusted agent in a system with a high-assurance execution environment
US20050108171A1 (en) 2003-11-19 2005-05-19 Bajikar Sundeep M. Method and apparatus for implementing subscriber identity module (SIM) capabilities in an open platform
US20050177635A1 (en) 2003-12-18 2005-08-11 Roland Schmidt System and method for allocating server resources
US7272782B2 (en) 2003-12-19 2007-09-18 Backweb Technologies, Inc. System and method for providing offline web application, page, and form access in a networked environment
JP2005227995A (ja) * 2004-02-12 2005-08-25 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US7444621B2 (en) 2004-02-20 2008-10-28 Microsoft Corporation Method and system for providing a common operating system
US7574709B2 (en) 2004-04-30 2009-08-11 Microsoft Corporation VEX-virtual extension framework
US7584502B2 (en) 2004-05-03 2009-09-01 Microsoft Corporation Policy engine and methods and systems for protecting data
US20060005047A1 (en) * 2004-06-16 2006-01-05 Nec Laboratories America, Inc. Memory encryption architecture
US7769720B2 (en) 2004-06-16 2010-08-03 Hewlett-Packard Development Company, L.P. Systems and methods for migrating a server from one physical platform to a different physical platform
US7587755B2 (en) 2004-07-02 2009-09-08 Citrix Systems, Inc. System and method for executing interactive applications with minimal privileges
US9083765B2 (en) 2004-07-02 2015-07-14 Oracle International Corporation Systems and methods of offline processing
AU2005266943C1 (en) 2004-07-23 2011-01-06 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
US20090024757A1 (en) 2004-07-30 2009-01-22 Proctor David W Automatic Protocol Determination For Portable Devices Supporting Multiple Protocols
US7613862B2 (en) 2004-08-10 2009-11-03 Intel Corporation Embedded driver for bus-connected device
EP1811387A4 (en) 2004-08-25 2016-04-13 Nec Corp INFORMATION COMMUNICATION DEVICE AND PROGRAMMING ENVIRONMENTAL CONTROL METHOD
US8332653B2 (en) * 2004-10-22 2012-12-11 Broadcom Corporation Secure processing environment
WO2006055838A2 (en) 2004-11-18 2006-05-26 America Online, Inc. Runtime environment
US9450966B2 (en) 2004-11-29 2016-09-20 Kip Sign P1 Lp Method and apparatus for lifecycle integrity verification of virtual machines
US7721138B1 (en) 2004-12-28 2010-05-18 Acronis Inc. System and method for on-the-fly migration of server from backup
US20060156418A1 (en) 2005-01-10 2006-07-13 Ibm Corporation Method and apparatus for preventing unauthorized access to data
US20060161982A1 (en) 2005-01-18 2006-07-20 Chari Suresh N Intrusion detection system
US7996493B2 (en) 2005-03-10 2011-08-09 Microsoft Corporation Framework for managing client application data in offline and online environments
US7496495B2 (en) 2005-05-12 2009-02-24 Microsoft Corporation Virtual operating system device communication relying on memory access violations
US7685593B2 (en) 2005-05-12 2010-03-23 Microsoft Corporation Systems and methods for supporting multiple gaming console emulation environments
US7363463B2 (en) 2005-05-13 2008-04-22 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines
US20060294518A1 (en) 2005-06-28 2006-12-28 Richmond Michael S Method, apparatus and system for a lightweight virtual machine monitor
US7844442B2 (en) 2005-08-16 2010-11-30 Exent Technologies, Ltd. System and method for providing a remote user interface for an application executing on a computing device
US20070074191A1 (en) 2005-08-30 2007-03-29 Geisinger Nile J Software executables having virtual hardware, operating systems, and networks
US20070283324A1 (en) 2005-08-30 2007-12-06 Geisinger Nile J System and method for creating programs that comprise several execution layers
US7523323B2 (en) 2005-09-15 2009-04-21 Intel Corporation Method and apparatus for quick resumption
US7703081B1 (en) 2005-09-22 2010-04-20 Symantec Corporation Fast system call hooking on x86-64 bit windows XP platforms
US8074231B2 (en) 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US7836303B2 (en) 2005-12-09 2010-11-16 University Of Washington Web browser operating system
US8539481B2 (en) 2005-12-12 2013-09-17 Microsoft Corporation Using virtual hierarchies to build alternative namespaces
US7447896B2 (en) 2005-12-12 2008-11-04 Microsoft Corporation OS mini-boot for running multiple environments
US20070174910A1 (en) 2005-12-13 2007-07-26 Zachman Frederick J Computer memory security platform
EP1967981A4 (en) * 2005-12-27 2009-04-22 Nec Corp DEVICE, PROGRAM EXECUTION MONITORING METHOD, AND EXECUTION MONITORING PROGRAM
US7627728B1 (en) 2005-12-29 2009-12-01 Symantec Operating Corporation System and method for efficient generation of application snapshots
EP1811421A1 (en) * 2005-12-29 2007-07-25 AXSionics AG Security token and method for authentication of a user with the security token
US20070169116A1 (en) 2006-01-18 2007-07-19 Dell Products L.P. Method and system for automated installation of system specific drivers
US20070174429A1 (en) 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US7743026B2 (en) 2006-01-31 2010-06-22 Microsoft Corporation Redirection to local copies of server-based files
WO2007109921A1 (en) * 2006-03-28 2007-10-04 Intel Corporation Methods and apparatus to implement annotation based thunking
US7913252B2 (en) 2006-04-11 2011-03-22 Installfree, Inc. Portable platform for executing software applications in a virtual environment
US7747785B2 (en) 2006-04-14 2010-06-29 Microsoft Corporation Instant messaging plug-ins
US8104041B2 (en) 2006-04-24 2012-01-24 Hewlett-Packard Development Company, L.P. Computer workload redistribution based on prediction from analysis of local resource utilization chronology data
US8117554B1 (en) 2006-04-25 2012-02-14 Parallels Holdings, Ltd. Seamless integration of non-native widgets and windows with dynamically scalable resolution into native operating system
US7725305B2 (en) 2006-06-08 2010-05-25 Microsoft Corporation Partial virtualization on computing device
US7812985B2 (en) 2006-06-09 2010-10-12 Kabushiki Kaisha Toshiba System and method for rerouting of document processing jobs
US20080016339A1 (en) 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
US20080005472A1 (en) 2006-06-30 2008-01-03 Microsoft Corporation Running applications from removable media
US7644264B1 (en) 2006-10-17 2010-01-05 Symantec Corporation Method and system for creating and deploying disk images
US8171502B2 (en) 2006-11-29 2012-05-01 Sony Ericsson Mobile Communications Ab Methods, devices and computer program products for automatically installing device drivers from a peripheral device onto a host computer
US20080127182A1 (en) 2006-11-29 2008-05-29 Newport William T Managing Memory Pages During Virtual Machine Migration
US8452853B2 (en) 2007-03-05 2013-05-28 International Business Machines Corporation Browser with offline web-application architecture
WO2008111052A2 (en) 2007-03-09 2008-09-18 Ghost, Inc. A virtual file system for the web
US8037039B2 (en) 2007-04-20 2011-10-11 Microsoft Corporation Runtime class database operation
US20080276012A1 (en) 2007-05-04 2008-11-06 Joe Mesa Driver Loading via a PnP Device
EP2143031A1 (en) 2007-05-09 2010-01-13 International Business Machines Corporation IBM A method and data processing system to prevent manipulation of computer systems
US8875266B2 (en) 2007-05-16 2014-10-28 Vmware, Inc. System and methods for enforcing software license compliance with virtual machines
ITRM20070347A1 (it) * 2007-06-21 2008-12-22 Space Software Italia S P A Metodo e sistema per la interazione e cooperazione di sensori, attuatori e robot
US20090064196A1 (en) 2007-08-31 2009-03-05 Microsoft Corporation Model based device driver code generation
US20090094337A1 (en) 2007-10-08 2009-04-09 Eric Wilfred Bruno Dias Method of accessing web e-mail off-line
CN100498816C (zh) 2007-11-19 2009-06-10 南京大学 一种高安全等级操作系统的参照监视器实现方法
US8505029B1 (en) 2007-11-26 2013-08-06 Adobe Systems Incorporated Virtual machine communication
JP4740926B2 (ja) 2007-11-27 2011-08-03 フェリカネットワークス株式会社 サービス提供システム、サービス提供サーバ、及び情報端末装置
EP2238535A4 (en) 2007-12-20 2011-03-09 Virtual Computer Inc SYSTEMS AND METHODS FOR VIRTUAL COMPUTER MANAGEMENT
US8671404B2 (en) 2008-02-12 2014-03-11 Red Hat, Inc. Distributing and managing virtual machines
US8156503B2 (en) 2008-02-12 2012-04-10 International Business Machines Corporation System, method and computer program product for accessing a memory space allocated to a virtual machine
US20090210871A1 (en) 2008-02-20 2009-08-20 Zak Dechovich System and method for software application migration
US7971049B2 (en) 2008-03-31 2011-06-28 Symantec Corporation Systems and methods for managing user configuration settings
US8782604B2 (en) 2008-04-11 2014-07-15 Oracle International Corporation Sandbox support for metadata in running applications
US8359593B2 (en) 2008-04-21 2013-01-22 Vmware, Inc. Computer machine migration of file system images using a redo-log file
US8424082B2 (en) 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US8364983B2 (en) 2008-05-08 2013-01-29 Microsoft Corporation Corralling virtual machines with encryption keys
US8195774B2 (en) 2008-05-23 2012-06-05 Vmware, Inc. Distributed virtual switch for virtualized computer systems
WO2009147468A2 (en) 2008-05-27 2009-12-10 Telefonaktiebolaget L M Ericsson (Publ) System and method for backwards compatible multi-access with proxy mobile internet protocol
US8276145B2 (en) 2008-06-27 2012-09-25 Microsoft Corporation Protected mode scheduling of operations
US9176754B2 (en) 2008-07-16 2015-11-03 Google Inc. Method and system for executing applications using native code modules
US8285670B2 (en) * 2008-07-22 2012-10-09 International Business Machines Corporation Dynamically maintaining coherency within live ranges of direct buffers
US20100211663A1 (en) 2008-07-28 2010-08-19 Viewfinity Inc. Management of pool member configuration
CN101640589B (zh) * 2008-07-29 2012-11-07 华为技术有限公司 在安全可移动媒介之间共享许可的方法及装置
CN101645020A (zh) 2008-08-04 2010-02-10 优诺威讯国际有限公司 虚拟操作系统创建方法
US7886183B2 (en) 2008-08-07 2011-02-08 Symantec Operating Corporation Providing fault tolerant storage system to a cluster
JP2010044579A (ja) 2008-08-12 2010-02-25 Brother Ind Ltd 周辺装置、プログラム、およびドライバインストールシステム
TW201007574A (en) 2008-08-13 2010-02-16 Inventec Corp Internet server system and method of constructing and starting a virtual machine
US8381288B2 (en) 2008-09-30 2013-02-19 Intel Corporation Restricted component access to application memory
JP4966942B2 (ja) 2008-10-01 2012-07-04 株式会社日立製作所 仮想pc管理方法、仮想pc管理システム、および仮想pc管理プログラム
US8291261B2 (en) 2008-11-05 2012-10-16 Vulcan Technologies Llc Lightweight application-level runtime state save-and-restore utility
US8782670B2 (en) 2009-04-10 2014-07-15 Open Invention Network, Llc System and method for application isolation
US8103837B2 (en) * 2008-12-17 2012-01-24 Hewlett-Packard Development Company, L.P. Servicing memory read requests
TWI384378B (zh) 2008-12-29 2013-02-01 Ind Tech Res Inst 網頁應用程式執行方法
US8117317B2 (en) 2008-12-31 2012-02-14 Sap Ag Systems and methods for integrating local systems with cloud computing resources
US8230121B2 (en) * 2009-01-05 2012-07-24 Sierra Wireless, Inc. Method and apparatus for identifying a device handle in a computer system
US8214829B2 (en) 2009-01-15 2012-07-03 International Business Machines Corporation Techniques for placing applications in heterogeneous virtualized systems while minimizing power and migration cost
US8112480B2 (en) 2009-01-16 2012-02-07 Microsoft Corporation Signaling support for sharer switching in application sharing
US8019861B2 (en) 2009-01-29 2011-09-13 Vmware, Inc. Speculative virtual machine resource scheduling
US10203993B2 (en) 2009-02-18 2019-02-12 International Business Machines Corporation Method and system for continuous optimization of data centers by combining server and storage virtualization
US8769068B2 (en) 2009-02-24 2014-07-01 Telcordia Technologies, Inc. System and method for policy based management for a high security MANET
US8418236B1 (en) 2009-04-10 2013-04-09 Open Invention Network Llc System and method for streaming application isolation
JP5289153B2 (ja) 2009-04-14 2013-09-11 キヤノン株式会社 情報処理装置及びその制御方法、並びにコンピュータプログラム
US8751627B2 (en) 2009-05-05 2014-06-10 Accenture Global Services Limited Method and system for application migration in a cloud
US8429647B2 (en) 2009-05-06 2013-04-23 Vmware, Inc. Virtual machine migration across network by publishing routes to the associated virtual networks via virtual router after the start of migration of the virtual machine
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
JP2010267135A (ja) 2009-05-15 2010-11-25 Toshiba Corp メモリコントローラ
US8150971B2 (en) 2009-05-31 2012-04-03 Red Hat Israel, Ltd. Mechanism for migration of client-side virtual machine system resources
US20100332629A1 (en) 2009-06-04 2010-12-30 Lauren Ann Cotugno Secure custom application cloud computing architecture
EP2449466A1 (en) 2009-06-30 2012-05-09 Citrix Systems, Inc. Methods and systems for selecting a desktop execution location
WO2011027191A1 (en) 2009-09-02 2011-03-10 Telenor Asa A method, system, and computer readable medium for controlling access to a memory in a memory device
US8285987B1 (en) 2009-12-04 2012-10-09 The United States Of America As Represented By The Secretary Of The Air Force Emulation-based software protection
US8479286B2 (en) 2009-12-15 2013-07-02 Mcafee, Inc. Systems and methods for behavioral sandboxing
US8645977B2 (en) 2010-02-04 2014-02-04 Microsoft Corporation Extensible application virtualization subsystems
US8301856B2 (en) 2010-02-16 2012-10-30 Arm Limited Restricting memory areas for an instruction read in dependence upon a hardware mode and a security flag
RU101231U1 (ru) * 2010-03-02 2011-01-10 Закрытое акционерное общество "Лаборатория Касперского" Система управления безопасностью мобильного вычислительного устройства
US20110231670A1 (en) 2010-03-16 2011-09-22 Shevchenko Oleksiy Yu Secure access device for cloud computing
US8880773B2 (en) 2010-04-23 2014-11-04 Red Hat, Inc. Guaranteeing deterministic bounded tunable downtime for live migration of virtual machines over reliable channels
EP2569705A4 (en) 2010-05-09 2014-05-14 Citrix Systems Inc SYSTEMS AND METHOD FOR CREATING AND DISTRIBUTING ENCRYPTED VIRTUAL PLATES
EP2569693B1 (en) 2010-05-09 2015-08-12 Citrix Systems, Inc. Methods and systems for forcing an application to store data in a secure storage location
US8640187B2 (en) 2010-05-28 2014-01-28 Red Hat, Inc. Systems and methods for providing an fully functional isolated execution environment for accessing content
AU2011261831B2 (en) 2010-06-02 2014-03-20 VMware LLC Securing customer virtual machines in a multi-tenant cloud
US8166211B2 (en) 2010-06-07 2012-04-24 Vmware, Inc. Safely sharing USB devices
US8935317B2 (en) 2010-06-23 2015-01-13 Microsoft Corporation Dynamic partitioning of applications between clients and servers
US9323921B2 (en) 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
US8972995B2 (en) * 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
US20120084545A1 (en) 2010-10-04 2012-04-05 Ralph Rabat Farina Methods and systems for implementing a secure boot device using cryptographically secure communications across unsecured networks
US9436502B2 (en) 2010-12-10 2016-09-06 Microsoft Technology Licensing, Llc Eventually consistent storage and transactions in cloud based environment
US8972746B2 (en) 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
US8903705B2 (en) 2010-12-17 2014-12-02 Microsoft Corporation Application compatibility shims for minimal client computers
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
US20120179485A1 (en) 2011-01-07 2012-07-12 Independa, Inc. Systems and methods for integrated care management
US20120203932A1 (en) 2011-02-08 2012-08-09 Microsoft Corporation Multi-master media metadata synchronization
US9483284B2 (en) 2011-02-25 2016-11-01 Red Hat, Inc. Version compatibility determination
US9891939B2 (en) 2011-03-03 2018-02-13 Microsoft Technology Licensing, Llc Application compatibility with library operating systems
US9100188B2 (en) 2011-04-18 2015-08-04 Bank Of America Corporation Hardware-based root of trust for cloud environments
US8745434B2 (en) 2011-05-16 2014-06-03 Microsoft Corporation Platform for continuous mobile-cloud services
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US20130031371A1 (en) 2011-07-25 2013-01-31 Alcatel-Lucent Usa Inc. Software Run-Time Provenance
US20130036431A1 (en) 2011-08-02 2013-02-07 Microsoft Corporation Constraining Execution of Specified Device Drivers
US20130054734A1 (en) 2011-08-23 2013-02-28 Microsoft Corporation Migration of cloud applications between a local computing device and cloud
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
KR101874081B1 (ko) 2012-06-07 2018-07-03 에스케이테크엑스 주식회사 개선된 보안 기능 기반의 클라우드 서비스 시스템 및 이를 지원하는 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110047376A1 (en) * 2000-06-30 2011-02-24 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US20030208595A1 (en) * 2001-04-27 2003-11-06 Gouge David Wayne Adaptable wireless proximity networking
US20110162082A1 (en) * 2004-04-08 2011-06-30 Texas Instruments Incoporated Methods and apparatus for providing data security

Also Published As

Publication number Publication date
CA2857586C (en) 2019-04-23
AU2012352754A1 (en) 2014-07-03
EP2791857B1 (en) 2019-08-07
IN2014CN03961A (ko) 2015-10-23
RU2621001C2 (ru) 2017-05-30
JP2015500543A (ja) 2015-01-05
AU2012352754B2 (en) 2017-10-19
JP6083097B2 (ja) 2017-02-22
RU2014123659A (ru) 2015-12-20
US20130152209A1 (en) 2013-06-13
EP2791857A4 (en) 2015-06-03
MX345408B (es) 2017-01-30
MX2014007102A (es) 2014-07-28
KR20140101367A (ko) 2014-08-19
CA2857586A1 (en) 2013-06-20
CN103136468A (zh) 2013-06-05
BR112014014153A2 (pt) 2017-06-13
EP2791857A1 (en) 2014-10-22
CN103136468B (zh) 2016-08-03
US9389933B2 (en) 2016-07-12
BR112014014153B1 (pt) 2021-08-17
WO2013090044A1 (en) 2013-06-20

Similar Documents

Publication Publication Date Title
KR102073433B1 (ko) 하드웨어 보호 애플리케이션에 대한 시스템 서비스 요청 상호작용을 용이하게 하는 기법
Liu et al. Thwarting memory disclosure with efficient hypervisor-enforced intra-domain isolation
Alpernas et al. Secure serverless computing using dynamic information flow control
US20210124824A1 (en) Securing secret data embedded in code against compromised interrupt and exception handlers
KR102255767B1 (ko) 가상 머신 감사를 위한 시스템 및 방법들
Amiri Sani Schrodintext: Strong protection of sensitive textual content of mobile applications
Wan et al. RusTEE: developing memory-safe ARM TrustZone applications
Santos et al. Trusted language runtime (tlr) enabling trusted applications on smartphones
CN110874468B (zh) 应用程序安全保护方法以及相关设备
US10303885B2 (en) Methods and systems for securely executing untrusted software
Zhao et al. vsgx: Virtualizing sgx enclaves on amd sev
Strackx et al. Salus: Kernel support for secure process compartments
US9398019B2 (en) Verifying caller authorization using secret data embedded in code
Jang et al. Securing a communication channel for the trusted execution environment
Yao et al. Milkomeda: Safeguarding the mobile gpu interface using webgl security checks
Park et al. Libmpk: software abstraction for Intel memory protection keys
Quarta et al. Tarnhelm: Isolated, Transparent & Confidential Execution of Arbitrary Code in ARM's TrustZone
Vinck et al. Sharing is caring: Secure and efficient shared memory support for mvees
Ribeiro et al. DBStore: A TrustZone-backed Database Management System for Mobile Applications.
Zobaed et al. Confidential computing across edge-to-cloud for machine learning: A survey study
Hong et al. Sdvisor: Secure debug enclave with hypervisor
CN116049844A (zh) 一种可信平台模块调用方法、系统、装置及存储介质
De Crecchio Deep Attestation-Virtualise a Hardware-bound Trusted Platform Module
Werner Secure I/O with Intel SGX
KR20200097416A (ko) Sgx 상의 입력 채널을 보호하기 위한 고립된 인터럽트 핸들러를 포함하는 프로세서 및 인터럽트 처리 방법

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant