KR102073433B1 - 하드웨어 보호 애플리케이션에 대한 시스템 서비스 요청 상호작용을 용이하게 하는 기법 - Google Patents
하드웨어 보호 애플리케이션에 대한 시스템 서비스 요청 상호작용을 용이하게 하는 기법 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/74—Protecting 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Exchange Systems With Centralized Control (AREA)
- Casings For Electric Apparatus (AREA)
- Medical Preparation Storing Or Oral Administration Devices (AREA)
- Stored Programmes (AREA)
Abstract
본 명세서에서는 사용자 모드 하드웨어 보호 격리 컨테이너 내에서 애플리케이션이 실행되도록 하는 플랫폼 적응 계층을 제공하고 한편으로 이 격리 컨테이너의 외부에 존재하는 호스트 플랫폼 리소스를 이용하는 구현예를 기술한다. 플랫폼 적응 계층은 애플리케이션과 호스트 플랫폼 간의 시스템 서비스 요청의 상호 작용을 용이하게 한다. 이 용이함의 일부로서, 플랫폼 전환 계층의 보안 서비스 컴포넌트는 보안 관련 액션을 수행한다.
Description
통상적인 소프트웨어 애플리케이션은 다양한 운영 체제의 기능에 의존한다. 운영 체제는 쓰레드 스케줄링, 메모리 할당, 가상 메모리, 장치 액세스 등과 같은 기본적인 계산 서비스를 위한 일련의 애플리케이션 프로그래밍 인터페이스(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는 호스트 플랫폼으로부터의 실행을 위한 요청 및 비동기 통지를 조작하기 위한 예시적인 프로세스를 나타내는 흐름도이다.
도 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)
- 사용자 모드 하드웨어 보호 격리 컨테이너(UMHPIC, user-mode hardware-protected isolation container) 내에서 애플리케이션을 실행하는 단계 - 상기 UMHPIC는 적어도 상기 UMHPIC 외부로 실행을 전달하기 위한 출구 게이트(exit gate)와 상기 UMHPIC 내부로 실행을 반환하기 위한 입구 게이트(entry gate)를 제공하는 보안 가능 프로세서에 의해서 보호됨 - 와,
상기 UMHPIC 내에서 실행되는 UMHPIC 감지형(UMHPIC-aware) 플랫폼 적응 계층에 의해, 상기 UMHPIC 내부의 애플리케이션과 상기 UMHPIC의 외부에서 실행되는 호스트 플랫폼의 하나 이상의 비신뢰(untrusted) 컴포넌트 사이에서의 시스템 서비스 요청의 상호 작용을 용이하게 하는 단계와,
상기 UMHPIC 감지형 플랫폼 적응 계층의 보안 서비스 컴포넌트에 의해, 보안 관련 액션을 수행하는 단계
를 포함하고,
상기 보안 관련 액션은, 상기 UMHPIC 내부의 상기 애플리케이션과 상기 UMHPIC 외부에서 실행되는 상기 호스트 플랫폼의 상기 하나 이상의 비신뢰 컴포넌트 사이의 상기 시스템 서비스 요청의 상호 작용을 용이하게 하는 것인
보안 관련 액션 수행 방법.
- 제 1 항에 있어서,
상기 보안 관련 액션은, 상기 애플리케이션으로부터 오고 또한 상기 시스템 서비스 요청의 상호 작용과 관련된 데이터를 암호화하는 것을 포함하는
보안 관련 액션 수행 방법.
- 제 1 항에 있어서,
상기 보안 관련 액션은, 상기 시스템 서비스 요청의 상호 작용에 관한 정보를 저장하기 위한 부기(bookkeeping) 데이터 구조를 유지하는 것을 포함하는
보안 관련 액션 수행 방법.
- 제 1 항에 있어서,
상기 보안 관련 액션은, 상기 애플리케이션에 관한 것이고 또한 상기 시스템 서비스 요청의 상호 작용과 관련된 데이터를 복호화하는 것을 포함하는
보안 관련 액션 수행 방법.
- 제 1 항에 있어서,
상기 시스템 서비스 요청의 상호 작용은 리소스 할당에 대한 요청을 포함하고,
상기 보안 관련 액션은, 상기 시스템 서비스 요청의 상호 작용의 일부로서 상기 호스트 플랫폼에 의해서 제공되는 리소스 할당 결과의 정확성을 검증하는 것을 포함하는
보안 관련 액션 수행 방법.
- 제 5 항에 있어서,
상기 리소스 할당 결과는 메모리 리소스의 표시를 포함하며,
상기 리소스 할당 결과의 상기 정확성을 검증하는 것은 메모리 할당의 중첩에 대한 검사를 포함하는
보안 관련 액션 수행 방법.
- 제 1 항에 있어서,
상기 보안 관련 액션은 쓰레드 스케줄링 서비스를 수행하는 것을 포함하는,
보안 관련 액션 수행 방법.
- 보안 관련 액션을 수행하기 위한 시스템으로서,
사용자 모드 하드웨어 보호 격리 컨테이너(UMHPIC)로 실행을 전달하는 입구 게이트 및 상기 UMHPIC로부터 실행을 전달받는 출구 게이트를 적어도 제공하도록 구성된 보안 가능 프로세서를 포함하는 하나 이상의 프로세서와,
상기 UMHPIC를 포함하는 메모리와,
상기 UMHPIC 내에서 실행되는 애플리케이션과 상기 UMHPIC의 외부에서 실행되는 호스트 플랫폼의 하나 이상의 비신뢰 컴포넌트 사이의 시스템 서비스 요청의 상호 작용을 용이하게 하는, 적어도 부분적으로 상기 UMHPIC 내부에서 상기 보안 가능 프로세서에 의해서 실행 가능한 UMHPIC 감지형 플랫폼 적응 계층
을 포함하되,
상기 UMHPIC 감지형 플랫폼 적응 계층은, 상기 시스템 서비스 요청의 상호 작용을 용이하게 하는 것의 일부로서 보안 관련 액션을 수행하는, 상기 UMHPIC 내부의 보안 가능 프로세서에 의해 실행가능한 보안 서비스 컴포넌트를 포함하고,
상기 보안 관련 액션은, 상기 UMHPIC 내부에서 실행되는 상기 애플리케이션과 상기 UMHPIC 외부에서 실행되는 상기 호스트 플랫폼의 상기 하나 이상의 비신뢰 컴포넌트 사이의 상기 시스템 서비스 요청의 상호 작용을 용이하게 하는
보안 관련 액션을 수행하기 위한 시스템.
- 제 8 항에 있어서,
상기 보안 관련 액션은, 상기 애플리케이션으로부터 오고 또한 상기 시스템 서비스 요청의 상호 작용과 관련된 데이터를 암호화하는 것을 포함하는
보안 관련 액션을 수행하기 위한 시스템.
- 제 8 항에 있어서,
상기 UMHPIC 감지형 플랫폼 적응 계층은 상기 UMHPIC 내에 부기 데이터 구조를 작성하도록 구성되고,
상기 보안 관련 액션은, 상기 시스템 서비스 요청의 상호 작용에 관한 정보를 저장하기 위해 상기 부기 데이터 구조를 유지하는 것을 포함하는
보안 관련 액션을 수행하기 위한 시스템.
- 제 8 항에 있어서,
상기 보안 관련 액션은, 상기 애플리케이션에 관한 것이고 또한 상기 시스템 서비스 요청의 상호 작용과 관련된 데이터를 복호화하는 것을 포함하는
보안 관련 액션을 수행하기 위한 시스템.
- 제 8 항에 있어서,
상기 시스템 서비스 요청의 상호 작용은 리소스 할당에 대한 요청이고,
상기 보안 관련 액션은, 상기 시스템 서비스 요청의 상호 작용의 일부로서 상기 호스트 플랫폼에 의해서 제공되는 리소스 할당 결과의 정확성을 검증하는 것을 포함하는
보안 관련 액션을 수행하기 위한 시스템.
- 제 12 항에 있어서,
상기 리소스 할당 결과는 메모리 리소스의 표시를 포함하며,
상기 리소스 할당 결과의 상기 정확성을 검증하는 것은 메모리 할당의 중첩에 대한 검사를 포함하는
보안 관련 액션을 수행하기 위한 시스템.
- 제 8 항에 있어서,
상기 보안 관련 액션은 쓰레드 스케줄링 서비스를 수행하는 것을 포함하는
보안 관련 액션을 수행하기 위한 시스템.
- 제 8 항에 있어서,
상기 UMHPIC 감지형 플랫폼 적응 계층은, 상기 시스템 서비스 요청의 상호 작용을 용이하게 하는 것의 일부로서, 상기 시스템 서비스 요청의 상호 작용과 관련된 파라미터를 마셜링(marshal) 및 언마셜링(unmarshal)하도록 구성된 성킹(thunking) 컴포넌트를 더 포함하는
보안 관련 액션을 수행하기 위한 시스템.
- 컴퓨팅 장치의 하나 이상의 프로세서에 의해서 실행 가능한 복수의 프로그래밍 명령어를 포함하는 컴퓨터 판독 가능 저장 장치로서,
상기 복수의 프로그래밍 명령어는 상기 컴퓨팅 장치로 하여금,
사용자 모드 하드웨어 보호 격리 컨테이너(UMHPIC) 내에서 실행되는 애플리케이션과 상기 UMHPIC의 외부에서 실행되는 호스트 플랫폼의 하나 이상의 비신뢰 컴포넌트 사이의 시스템 서비스 요청의 상호 작용을 용이하게 하고 - 상기 UMHPIC는 적어도 상기 UMHPIC 외부로 실행을 전달하기 위한 출구 게이트 및 상기 UMHPIC 내로 실행을 전달하기 위한 입구 게이트를 제공하도록 구성되어 있는 보안 가능 프로세서에 의해 제공됨 -,
상기 시스템 서비스 요청의 상호 작용을 용이하게 하는 것의 일부로서 상기 애플리케이션을 대신하여 보안 관련 액션을 수행하도록 하며,
상기 보안 관련 액션은, 상기 UMHPIC 내부에서 실행되는 상기 애플리케이션과 상기 UMHPIC 외부에서 실행되는 상기 호스트 플랫폼의 상기 하나 이상의 비신뢰 컴포넌트 사이의 상기 시스템 서비스 요청의 상호 작용을 용이하게 하는
컴퓨터 판독 가능 저장 장치.
- 제 16 항에 있어서,
상기 보안 관련 액션은, 상기 애플리케이션으로부터 오고 또한 상기 시스템 서비스 요청의 상호 작용과 관련된 데이터를 암호화하는 것을 포함하는
컴퓨터 판독 가능 저장 장치.
- 제 16 항에 있어서,
상기 시스템 서비스 요청의 상호 작용은 리소스 할당에 대한 요청을 포함하고,
상기 보안 관련 액션은, 상기 시스템 서비스 요청의 상호 작용의 일부로서 상기 호스트 플랫폼에 의해서 제공되는 리소스 할당 결과의 정확성을 검증하는 것을 포함하는
컴퓨터 판독 가능 저장 장치.
- 제 18 항에 있어서,
상기 리소스 할당 결과는 메모리 리소스의 표시를 포함하며,
상기 리소스 할당 결과의 상기 정확성을 검증하는 것은 메모리 할당의 중첩에 대한 검사를 포함하는
컴퓨터 판독 가능 저장 장치.
- 제 18 항에 있어서,
상기 리소스 할당 결과는 장치 핸들을 포함하며,
상기 리소스 할당 결과의 상기 정확성 검증은 상기 장치 핸들이 중복된 장치 핸들인지를 결정하는 것을 포함하는
컴퓨터 판독 가능 저장 장치.
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)
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 |
US9063721B2 (en) | 2012-09-14 | 2015-06-23 | 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 |
US10079681B1 (en) | 2014-09-03 | 2018-09-18 | Amazon Technologies, Inc. | Securing service layer on third party hardware |
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 |
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 |
CN113791865B (zh) * | 2021-09-08 | 2024-07-26 | 山石网科通信技术股份有限公司 | 容器安全的处理方法及装置、存储介质和处理器 |
Citations (3)
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)
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 |
JP2002501251A (ja) * | 1998-01-22 | 2002-01-15 | イナリ、インコーポレイテッド | ユニバーサル・データ交換ゲートウエイのための方法および装置 |
US6721288B1 (en) | 1998-09-16 | 2004-04-13 | Openwave Systems Inc. | Wireless mobile devices having improved operation during network unavailability |
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 |
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 |
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 |
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 |
US20020069192A1 (en) | 2000-12-04 | 2002-06-06 | Aegerter William Charles | 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 |
US7421579B2 (en) | 2002-06-28 | 2008-09-02 | Microsoft Corporation | Multiplexing a secure counter to implement second level secure counters |
US7065607B2 (en) | 2002-06-28 | 2006-06-20 | Microsoft Corporation | System and method for implementing a counter |
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 |
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 |
US20080222160A1 (en) | 2003-09-15 | 2008-09-11 | Macdonald Craig | Method and system for providing a program for execution without requiring installation |
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 |
US7441011B2 (en) | 2003-10-23 | 2008-10-21 | Microsoft Corporation | Truth on client persistent caching |
US20050091226A1 (en) | 2003-10-23 | 2005-04-28 | Yun Lin | Persistent caching directory level support |
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 |
CN101006433B (zh) | 2004-08-25 | 2012-01-11 | 日本电气株式会社 | 信息通信装置和程序执行环境控制方法 |
US8332653B2 (en) * | 2004-10-22 | 2012-12-11 | Broadcom Corporation | Secure processing environment |
US20060174252A1 (en) | 2004-11-18 | 2006-08-03 | Besbris David G | Service versioning |
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 |
EP1811421A1 (en) * | 2005-12-29 | 2007-07-25 | AXSionics AG | Security token and method for authentication of a user with the security token |
US7627728B1 (en) | 2005-12-29 | 2009-12-01 | Symantec Operating Corporation | System and method for efficient generation of application snapshots |
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 |
US20080127182A1 (en) | 2006-11-29 | 2008-05-29 | Newport William T | Managing Memory Pages During Virtual Machine Migration |
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 |
US8452853B2 (en) | 2007-03-05 | 2013-05-28 | International Business Machines Corporation | Browser with offline web-application architecture |
US20080222148A1 (en) | 2007-03-09 | 2008-09-11 | Ghost Inc. | Lexicographical ordering of real numbers |
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 |
US8239959B2 (en) | 2007-05-09 | 2012-08-07 | International Business Machines Corporation | 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 |
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 |
US8671404B2 (en) | 2008-02-12 | 2014-03-11 | Red Hat, Inc. | Distributing and managing virtual machines |
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 |
US8364983B2 (en) | 2008-05-08 | 2013-01-29 | Microsoft Corporation | Corralling virtual machines with encryption keys |
US8424082B2 (en) | 2008-05-08 | 2013-04-16 | Google Inc. | Safely executing an untrusted native code module on a computing device |
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 |
US8707457B2 (en) | 2010-05-09 | 2014-04-22 | Citrix Systems, Inc. | Methods and systems for forcing an application to store data in a secure storage location |
CN102971722B (zh) | 2010-05-09 | 2015-01-07 | 思杰系统有限公司 | 用于创建和传送加密的虚拟盘的系统和方法 |
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 |
JP2013528872A (ja) | 2010-06-02 | 2013-07-11 | ヴイエムウェア インク | マルチ・テナント・クラウドにおける顧客仮想計算機の保護 |
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 |
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 |
US9436502B2 (en) | 2010-12-10 | 2016-09-06 | Microsoft Technology Licensing, Llc | Eventually consistent storage and transactions in cloud based environment |
US8903705B2 (en) | 2010-12-17 | 2014-12-02 | Microsoft Corporation | Application compatibility shims for minimal client computers |
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 |
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 | 에스케이테크엑스 주식회사 | 개선된 보안 기능 기반의 클라우드 서비스 시스템 및 이를 지원하는 방법 |
-
2011
- 2011-12-12 US US13/323,562 patent/US9389933B2/en active Active
-
2012
- 2012-12-04 RU RU2014123659A patent/RU2621001C2/ru active
- 2012-12-04 KR KR1020147016054A patent/KR102073433B1/ko active IP Right Grant
- 2012-12-04 JP JP2014547269A patent/JP6083097B2/ja active Active
- 2012-12-04 MX MX2014007102A patent/MX345408B/es active IP Right Grant
- 2012-12-04 WO PCT/US2012/067660 patent/WO2013090044A1/en active Application Filing
- 2012-12-04 AU AU2012352754A patent/AU2012352754B2/en active Active
- 2012-12-04 EP EP12858489.3A patent/EP2791857B1/en active Active
- 2012-12-04 IN IN3961CHN2014 patent/IN2014CN03961A/en unknown
- 2012-12-04 BR BR112014014153-3A patent/BR112014014153B1/pt active IP Right Grant
- 2012-12-04 CA CA2857586A patent/CA2857586C/en active Active
- 2012-12-12 CN CN201210537282.XA patent/CN103136468B/zh active Active
Patent Citations (3)
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 |
---|---|
CN103136468B (zh) | 2016-08-03 |
RU2014123659A (ru) | 2015-12-20 |
EP2791857A1 (en) | 2014-10-22 |
MX345408B (es) | 2017-01-30 |
CA2857586A1 (en) | 2013-06-20 |
US20130152209A1 (en) | 2013-06-13 |
EP2791857B1 (en) | 2019-08-07 |
WO2013090044A1 (en) | 2013-06-20 |
US9389933B2 (en) | 2016-07-12 |
CN103136468A (zh) | 2013-06-05 |
JP2015500543A (ja) | 2015-01-05 |
KR20140101367A (ko) | 2014-08-19 |
RU2621001C2 (ru) | 2017-05-30 |
AU2012352754B2 (en) | 2017-10-19 |
CA2857586C (en) | 2019-04-23 |
MX2014007102A (es) | 2014-07-28 |
JP6083097B2 (ja) | 2017-02-22 |
EP2791857A4 (en) | 2015-06-03 |
BR112014014153B1 (pt) | 2021-08-17 |
AU2012352754A1 (en) | 2014-07-03 |
BR112014014153A2 (pt) | 2017-06-13 |
IN2014CN03961A (ko) | 2015-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102073433B1 (ko) | 하드웨어 보호 애플리케이션에 대한 시스템 서비스 요청 상호작용을 용이하게 하는 기법 | |
Alpernas et al. | Secure serverless computing using dynamic information flow control | |
Liu et al. | Thwarting memory disclosure with efficient hypervisor-enforced intra-domain isolation | |
KR102255767B1 (ko) | 가상 머신 감사를 위한 시스템 및 방법들 | |
US20210124824A1 (en) | Securing secret data embedded in code against compromised interrupt and exception handlers | |
Wan et al. | RusTEE: developing memory-safe ARM TrustZone applications | |
Amiri Sani | Schrodintext: Strong protection of sensitive textual content of mobile applications | |
CN110874468B (zh) | 应用程序安全保护方法以及相关设备 | |
Santos et al. | Trusted language runtime (tlr) enabling trusted applications on smartphones | |
Zhao et al. | vSGX: virtualizing SGX enclaves on AMD SEV | |
US10303885B2 (en) | Methods and systems for securely executing untrusted software | |
Strackx et al. | Salus: Kernel support for secure process compartments | |
Jang et al. | Securing a communication channel for the trusted execution environment | |
US9398019B2 (en) | Verifying caller authorization using secret data embedded in code | |
Yao et al. | Milkomeda: Safeguarding the mobile gpu interface using webgl security checks | |
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 | |
Park et al. | Libmpk: software abstraction for Intel memory protection keys | |
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) | 一种可信平台模块调用方法、系统、装置及存储介质 | |
Weiser | Secure I/O with Intel SGX | |
De Crecchio | Deep Attestation-Virtualise a Hardware-bound Trusted Platform Module | |
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 |