KR20050016202A - 신뢰 환경으로부터의 신뢰성의 비신뢰 환경으로의 투영 - Google Patents

신뢰 환경으로부터의 신뢰성의 비신뢰 환경으로의 투영

Info

Publication number
KR20050016202A
KR20050016202A KR1020040062034A KR20040062034A KR20050016202A KR 20050016202 A KR20050016202 A KR 20050016202A KR 1020040062034 A KR1020040062034 A KR 1020040062034A KR 20040062034 A KR20040062034 A KR 20040062034A KR 20050016202 A KR20050016202 A KR 20050016202A
Authority
KR
South Korea
Prior art keywords
environment
monitoring agent
application
monitoring
untrusted
Prior art date
Application number
KR1020040062034A
Other languages
English (en)
Other versions
KR100949022B1 (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 KR20050016202A publication Critical patent/KR20050016202A/ko
Application granted granted Critical
Publication of KR100949022B1 publication Critical patent/KR100949022B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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

Abstract

비신뢰 환경에서 실행되는 엔티티 및 신뢰 환경에서 실행되는 엔티티를 갖는 단일 머신에서, 신뢰 환경 내의 엔티티의 신뢰성이 비신뢰 환경 내의 엔티티로 투영된다. 이것은 예를 들면 Microsoft NGSCB(Next Generation Secure Computing Base, 차세대 보안 컴퓨팅 베이스)에 적용가능하며, 이 경우 보통의 오퍼레이팅 시스템(예를 들어, Microsoft

Description

신뢰 환경으로부터의 신뢰성의 비신뢰 환경으로의 투영{PROJECTION OF TRUSTWORTHINESS FROM A TRUSTED ENVIRONMENT TO AN UNTRUSTED ENVIRONMENT}
본 발명은 일반적으로 컴퓨터 보안 분야에 관한 것이다. 보다 상세하게는, 본 발명은 단일 컴퓨팅 장치 상에서 복수의 실행 환경(예를 들면, 오퍼레이팅 환경)을 사용하는 것에 관한 것으로서, 이러한 오퍼레이팅 시스템 또는 환경의 신뢰성을 지원하는 기술을 제공한다.
최초의 컴퓨터는 한번에 단 하나의 프로그램 밖에 실행할 수 없었다. 그렇지만, 현대에 있어서, 컴퓨터는 한꺼번에 몇개의 서로 다른 소프트웨어를 실행할 수 있도록 요망되고 있다. 예를 들어, 일반적인 멀티태스킹 오퍼레이팅 시스템은 하나의 머신 상에서 한꺼번에 몇개의 애플리케이션 프로그램을 실행시킬 수 있다. 이러한 상황 및 공유 개방형 네트워크(즉, 인터넷)의 발전을 고려할 때, 보안 및 프라이버시는 컴퓨터 산업이 직면하고 있는 2가지 중요하고도 어려운 문제가 되고 있다. 퍼스널 컴퓨터가 가정, 직장 및 학교에서 점점 더 중심적인 역할을 함에 따라, 소비자 및 기업 고객 모두는 점차적으로 프라이버시 및 보안 문제에 눈을 뜨게 되었다. 디지털 정보의 무결성 및 컴퓨터 사용자의 프라이버시를 보호하기 위해 소프트웨어 및 하드웨어의 능력을 향상시키는 것이 소프트웨어 개발자 및 하드웨어 제조업자 모두에게 중요한 핵심 사안이 되었다. 미국 와싱턴주 레드몬드 소재의 마이크로소프트사는 오퍼레이팅 시스템에서의 보안 및 프라이버시를 제공하는 NGSCB(Next-Generation Secure Computing Base, 차세대 보안 컴퓨팅 베이스) 퍼스널 컴퓨터 플랫폼을 소개하였다.
도 2에 도시한 바와 같은 컴퓨터(110) 내에서의 종래의 NGSCB에서, RHS(right-hand side, 우측) 보안 시스템은 종래의 LHS(left-hand side, 좌측) 시스템 및 CPU(중앙 처리 장치)와 연계하여 동작한다. RHS는 운영 체제의 개방성을 보존하면서 악성 소프트웨어로부터 보호하도록 설계되어 있다. NGSCB에서, 애플리케이션은 소프트웨어 변조(tampering) 및 간섭(interference)에 대한 내성이 높은 보호 메모리 공간(protected memory space)에서 실행된다. 일반적으로, 컴퓨터(110)에는 LHS와 RHS 둘다가 사용하는 하나의 칩셋이 있다. LHS 및 RHS는 컴퓨터(110)의 논리적이지만 물리적으로 실시되는(physically enforced) 분리 또는 분할이다.
LHS는 Microsoft Windows 오퍼레이팅 시스템 등의 종래의 오퍼레이팅 시스템(201)과 함께 Microsoft Word 및 Microsoft Excel 등의 종래의 애플리케이션(205, 210)을 포함한다. 비록 2개의 애플리케이션이 도시되어 있지만, 일반적으로 임의의 개수가 구현될 수 있다.
RHS는 "넥서스"(nexus)(251)와 함께 신뢰 에이전트(trusted agent)(255, 260)를 포함한다. 넥서스는 그의 동작에 관해 일정 수준의 보장을 제공하는 "고신뢰"(high assurance) 오퍼레이팅 시스템으로서, RHS 상의 모든 커널 모드 코드를 포함할 수 있다. 예를 들어, 넥서스는 정보를 넥서스 외부의 세계에 누출시키지 않는 것으로 보증되어 있는 은폐된 메모리(curtained memory)를 제공함으로써 또한 어떤 인증된 애플리케이션만이 넥서스 하에서 실행되고 은폐된 메모리를 액세스할 수 있게 함으로써, 누설되어서는 안되는 비밀 정보(예를 들면, 암호키 등)를 처리하는 데 사용될 수 있다. 넥서스(251)는 메인 오퍼레이팅 시스템(201)에서 일어나는 이벤트가 넥서스(251)의 동작에 악영향을 줄 수 있게 되는 방식으로 메인 오퍼레이팅 시스템(201)과 상호작용해서는 안된다. 넥서스(251)는 모든 애플리케이션이 실행될 수 있게 할 수 있거나, 머신 소유자는 넥서스(251)가 일정 에이전트만이 실행될 수 있게 하는 머신 정책을 수립할 수 있다. 즉, 넥서스(251)는 머신 소유자가 그 자신에게 실행하도록 지시한 임의의 에이전트를 실행하게 된다. 머신 소유자는 또한 넥서스에게 실행해서는 안되는 것을 알려줄 수도 있다.
넥서스(251)는 신뢰 에이전트(255, 260)를 격리시키고, 신뢰 에이전트(255, 260)와의 통신을 관리하며, 저장된(예를 들어, 하드 디스크 드라이브에 저장된) 데이터를 암호로 봉인(cryptographically seal)한다. 보다 구체적으로 설명하면, 넥서스(251)는 신뢰 공간(trusted space)에서 커널 모드로 실행되며, 신뢰 에이전트 및 기타 애플리케이션과의 통신을 위한 프로세스 메카니즘의 확립 등의 기본적인 서비스(basic service)와, 하드웨어/소프트웨어 플랫폼 또는 실행 환경의 증명(attestation) 및 비밀의 봉인(sealing)과 개봉(unsealing) 등의 특수한 신뢰 서비스(special trust service)를 신뢰 에이전트(255, 260)에 제공한다. 증명이란 하나의 코드가 하나의 데이터에 디지털 서명을 하거나 그 데이터를 다른 방식으로 증명하는 기능을 말하며, 또한 수신자에게 그 데이터가 변조불가능하고 암호로 식별되는 소프트웨어 스택(unforgeable, cryptographically identified software stack)에 의해 작성되었음을 보증한다.
신뢰 에이전트는 신뢰 공간에서 사용자 모드로 실행되는 프로그램, 프로그램의 일부, 또는 서비스이다. 신뢰 에이전트(255, 260)는 보안 관련 서비스, 및 메모리 관리 등의 중요한 일반 서비스를 위해 넥서스(251)를 호출한다. 신뢰 에이전트는 봉인된 스토리지(sealed storage)를 사용하여 비밀을 저장할 수 있으며, 넥서스의 증명 서비스를 사용하여 그 자신을 인증한다. 각각의 신뢰 에이전트 또는 엔티티는 그 자신의 신뢰 도메인(domain of trust)을 제어하며, 또 서로에 의존할 필요가 없다.
RHS는 암호화 기능과 함께 PKI(public key infrastructure, 공개키 기반 구조) 키 쌍을 사용하여 보안 상태(secure state)를 제공하는 SSC(security support component, 보안 지원 컴포넌트)(253)를 더 포함한다.
NGSCB는 "증명"(attestation), "봉인된 스토리지"(sealed storage), 및 "강력한 프로세스 격리"(strong process isolation) 등의 특징을 제공한다. 증명은 어떤 컴퓨터가 정말로 자신이 주장하고 있는 그 컴퓨터이고 또 그 자신이 실행하고 있다고 주장하는 그 소프트웨어를 실행하고 있음을 다른 컴퓨터들에게 알려 준다. NGSCB 소프트웨어 및 하드웨어는 사용자가 또한 다른 컴퓨터, 프로그램 및 서비스가 암호적으로 검증할 수 있기 때문에, 시스템은 다른 컴퓨터 및 프로세스를 참여시키거나 정보를 공유하기 전에 그 컴퓨터 및 프로세스가 신뢰할만한 것인지를 검증할 수 있다. 따라서, 증명에 의해 사용자는 오퍼레이팅 환경의 선택된 특성을 외부 요청자에게 누출할 수 있다.
봉인된 스토리지는 정보가 신뢰할만한 애플리케이션에 의해서만 액세스될 수 있도록 사용자가 그 정보를 암호화할 수 있게 해준다. 이것은 그 정보를 맨처음 생성한 애플리케이션, 또는 그 데이터를 소유하는 애플리케이션에 의해 신뢰되는 임의의 애플리케이션만을 포함할 수 있다. 따라서, 봉인된 스토리지는 프로그램이 바이러스 또는 트로이 목마 등의 비신뢰 프로그램(nontrusted program)에 의해 검색될 수 없는 비밀을 저장할 수 있게 해준다.
강력한 프로세스 격리는 보안 영역(secure area)(RHS)을 퍼냄으로써 신뢰 공간(trusted space)을 제공한다. RHS 상에서 실행되는 동작들은 보호되고 LHS로부터 격리되며, LHS는 그 동작들이 공격으로부터 상당히 더 안전하게 만들어준다.
NGSCB는 또한 안전한 입력 및 출력을 제공한다. NGSCB에서, 키스트로크(keystroke)는 소프트웨어에 의해 판독될 수 있기 전에 암호화되고 그 키스트로크가 RHS에 도달하면 복호화된다. 이것은 악성 소프트웨어를 사용하여 키스트로크를 기록, 절도 또는 변경할 수 없음을 의미한다. 안전한 출력도 이와 마찬가지이다. 스크린 상에 나타나는 정보는 사용자 외의 어느 누구도 그 정보를 가로채서 판독할 수 없도록 그 사용자에게 제공될 수 있다. 종합해보면, 이러한 것들에 의해 사용자는 자신의 컴퓨터 내의 소프트웨어가 수행하기로 되어 있는 것을 그 소프트웨어가 수행하고 있음을 높은 신뢰도로 알 수 있게 된다.
RHS가 이용할 수 있는 많은 신뢰 자원에도 불구하고, LHS는 비신뢰 상태로 있게 된다. 본 발명은 현재의 신뢰할만한 컴퓨팅 시스템의 이러한 결점 및 그 밖의 결점을 해소한다.
본 발명은 신뢰 환경 내의 엔티티의 신뢰성(trustworthiness)을 비신뢰 환경 내의 엔티티로 투영하기 위한 메카니즘을 제공한다.
비신뢰 환경과 신뢰 환경이 제공되어 있는 시스템 및 방법에 대해 기술되어 있다. 베이스 모니터링 에이전트(base monitoring agent)는 신뢰 환경에서 실행된다. 베이스 모니터링 에이전트는 비신뢰 환경을 모니터링한다.
일 실시예에 따르면, 모니터링 에이전트는 애플리케이션과 관련되어 있으며, 모니터링 에이전트는 공격을 나타낼 수 있는 이벤트 또는 동작에 대해 그의 관련 애플리케이션을 모니터링한다. 모니터링 에이전트의 신뢰받는 특성에 의해 이들 이벤트/동작은 신뢰성있게 검출 및 보고될 수 있으며, 그에 따라 신뢰 환경의 신뢰성을 비신뢰 환경으로 투영할 수 있게 된다. 베이스 모니터링 에이전트는 모니터링 에이전트에 보고되거나 또는 모니터링 에이전트에 의해 발견된 비신뢰 환경 이벤트를 승인, 금지 또는 변경할 수 있다. 보고된다는 것이란 하드웨어가 GDT(global descriptor table, 글로벌 디스크립터 테이블)를 이동시키려는 시도를 넥서스에 보고하고 이어서 넥서스가 이를 예를 들어 베이스 모니터링 에이전트에 보고하는 등의 경우를 포함한다. 발견이란 (OS에 대한) 베이스 모니터링 에이전트 또는 (어떤 애플리케이션에 대한) 모니터링 에이전트가 예를 들어 비신뢰 애플리케이션의 메모리를 스캔함으로써 문제를 발견하는 경우가 된다.
다른 실시예에 있어서, 베이스 모니터링 에이전트는 안전한 입력으로부터 수신된 입력에 응답한다. 예를 들어, 베이스 모니터링 에이전트는 안전한 입력을 통해 승인을 수신하지 않으면 비신뢰 환경에 대한 변경을 허용하기를 거부할 수 있다. 다른 예로서, 베이스 모니터링 에이전트는 비신뢰 환경에 대한 변경이 승인된 당사자에 의해 서명된 패키지에 의해 기술되어 있지 않는 경우 그 변경을 허용하지 않으려 할 수 있다.
또다른 실시예에 있어서, 모니터링 에이전트는 비신뢰 환경에 존재하는 오퍼레이팅 시스템 또는 애플리케이션에 대해 비밀을 지키기 위해 봉인된 스토리지를 사용한다. 모니터링 에이전트는 오퍼레이팅 시스템 또는 애플리케이션이 비밀의 소유자와 매칭하는 다이제스트(digest)를 가지고 있지 않은 경우 그 오퍼레이팅 시스템 또는 애플리케이션에게 비밀을 누설하지 않으려 할 수 있다. 대안에서, 모니터링 에이전트는 오퍼레이팅 시스템 또는 애플리케이션이 비밀을 판독할 수 있는 다이제스트의 리스트 상에 있지 않은 경우 그 오퍼레이팅 시스템 또는 애플리케이션에게 비밀을 누설하지 않으려 할 수 있다.
다른 특징에 따르면, 모니터링 에이전트는 테스트를 사용하여 적법한 엔티티가 비밀을 요구하고 있는지를 결정한다. 한가지 이러한 테스트로는 엔티티의 스택을 검사하고 그 스택이 적법한 스택 내용을 가지고 있음을 보증하는 것이 있다. 게다가, 모니터링 에이전트는 비신뢰 환경의 상태를 편집하거나 그것을 안전하거나 또는 다른 점에서 승인가능하게 만들 수 있다. 이 상태는 초기 구성 또는 에러 보고 옵션을 포함할 수 있다.
본 발명의 추가의 특징 및 이점은 첨부 도면을 참조하여 기술되어 있는 예시적인 실시예들에 대한 이하의 상세한 설명으로부터 명백하게 될 것이다.
양호한 실시예에 대한 이하의 상세한 설명은 물론 이상의 요약은 첨부 도면과 연계하여 읽어보면 보다 잘 이해될 것이다. 본 발명의 설명 목적상, 본 발명의 예시적인 구성이 도면에 도시되어 있지만, 본 발명은 개시되어 있는 구체적인 방법 및 수단으로 한정되는 것은 아니다.
개요
비신뢰 환경에서 실행되는 엔티티와 신뢰 환경에서 실행되는 엔티티를 갖는 단일 머신에서, 본 발명은 신뢰 환경 내의 엔티티의 신뢰성을 비신뢰 환경 내의 엔티티로 투영하는 메카니즘을 제공한다. 본 발명은 제1 실행 환경(예를 들면, 오퍼레이팅 시스템)이 제2 실행 환경을 호스팅하는 경우 사용되는 메카니즘에 관한 것이다. 본 발명은 정규의 오퍼레이팅 시스템(예를 들어, Windows 오퍼레이팅 시스템)이 보안 오퍼레이팅 시스템(예를 들어, 넥서스)을 호스팅하는 Microsoft NGSCB(차세대 보안 컴퓨팅 베이스) 등의 상황에 적용된다. 제2 환경이 그의 신뢰성을 제1 환경에 투영할 수 있게 해주는 여러가지 메카니즘에 대해 기술되어 있다.
예시적인 컴퓨팅 환경
도 1은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 나타낸다. 컴퓨팅 시스템 환경(100)은 단지 적절한 컴퓨팅 환경의 일 예이며 본 발명의 사용 또는 기능의 범위에 제한을 가하도록 의도된 것은 아니다. 컴퓨팅 환경(100)은 예시적인 오퍼레이팅 환경(100)에 도시된 컴포넌트들 중의 임의의 하나 또는 조합에 관하여 임의의 종속성(dependency) 또는 요구사항(requirement)을 갖는 것으로 해석되어서는 안된다.
본 발명은 많은 다른 범용 또는 특수목적 컴퓨팅 시스템 환경들 또는 구성들과 함께 동작될 수 있다. 본 발명과 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는, 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드(hand-held) 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋 탑 박스(set top box), 이동 전화기, 프로그램가능한 가전제품(programmable consumer electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기의 시스템 또는 장치 중의 임의의 것을 포함하는 분산형 컴퓨팅 환경 등이 포함될 수 있지만, 이에 한정되지 않는다.
본 발명은 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은 컴퓨터 실행가능 명령과 일반적으로 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크 또는 다른 데이터 전송 매체를 통해 링크된 원격 프로세싱 장치에 의해 태스크를 수행하는 분산형 컴퓨팅 환경에서 실행될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈 및 그외 데이터는 메모리 저장 장치를 포함하는 국부 및 원격 컴퓨터 저장 매체 내에 위치할 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들로는, 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)가 포함될 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로컬 버스, 및 (메자닌(Mezzanine) 버스로도 알려진) 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이에 한정되는 것은 아니다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형(removable) 및 비분리형(non-removable) 매체를 둘다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 둘다 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장장치, 또는 컴퓨터(110)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함할 수 있지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메카니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하도록 설정되거나 변환된 특성을 하나 또는 그 이상을 갖는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 상술한 것들 중의의 임의의 조합이 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(110) 내의 구성요소들간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 즉시 액세스될 수 있고 및/또는 프로세싱 유닛(120)에 의해 현재 작동되는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, (한정하고자 하는 것은 아님) 도 1은 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 도시한다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(140), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 기타 광학 매체 등의 분리형 비휘발성 광학 디스크(156)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(155)가 도시되어 있다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD(Digital versatile disk), 디지털 비디오 테이프, 고상 RAM, 고상 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다. 본 발명이 또한 CPU 및 모든 메모리가 단일 패키지의 단일 다이 상에 있는 내장형 마이크로프로세서에서 구현될 수 있다는 것도 예상될 수 있다.
앞서 기술되고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(110)를 위한 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시된다. 이들 컴포넌트는 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다. 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)는 최소한 다른 복사본(different copies)임을 나타내기 위하여 다른 번호를 부여하였다. 사용자는 일반적으로 마우스, 트랙볼, 또는 터치 패드라 불리우는 포인팅 장치(161) 및 키보드(162)와 같은 입력 장치를 통해 컴퓨터(110)에 명령 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 장치는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB) 와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치는 또한 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터외에도, 컴퓨터는 또한 출력 주변 인터페이스(195)를 통해 접속될 수 있는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 1 에는 메모리 저장 장치(181)만이 도시되어 있지만, 컴퓨터(110)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함할 수 있다. 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 그 외의 네트워크를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서 (한정하고자 하는 것은 아님), 도 1은 메모리 장치(181)에 상주하는 원격 애플리케이션 프로그램(185)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있다.
예시적인 실시예
전술한 바와 같이, 컴퓨터가 2가지 별개의 환경, 즉 신뢰 환경과 비신뢰 환경을 제공하도록 구성될 수 있음은 당업계에 공지되어 있다. 신뢰성이 검증되지 않은 보통의 코드(즉, 동작이 검증되지 않은 코드 또는 아마도 악의적 목적을 행하지 않을 것으로 배제할 수 없는 코드)가 비신뢰 환경에서 실행된다. 통상의 오퍼레이팅 시스템, 장치 드라이버 및 디버거 뿐만 아니라 게임, 워드 프로세서, 스프레드쉬트 등과 같은 통상의 애플리케이션 소프트웨어는 일반적으로 비신뢰 부류에 속한다. 어떻게든 해서 신뢰성이 검증된 코드는 신뢰 환경에서 실행될 수 있다. 컴퓨터의 메모리의 일부 부분(즉, "격리된" 또는 "은폐된" 메모리)은 신뢰 환경만이 액세스할 수 있는 것으로 지정되어 있다.
이하의 설명에 있어서, 에이전트가 그의 무결성을 보존하도록 또는 그의 무결성의 어떤 침해를 명확하게 드러나도록 설계된 보안 프로시저에 따라 인스턴스화되어 있는 경우 그 에이전트는 "신뢰"(trusted) 에이전트이다. 예를 들어, 이 에이전트는 그 에이전트의 아이덴티티(identity) 및 그 에이전트가 실행되고 있는 환경을 검증하는 신뢰 프로시저(trusted procedure)(증명(attestation))를 통해 개시될 수 있고, 이 에이전트는 다른 에이전트(신뢰 또는 비신뢰 에이전트이든지 상관없음)가 액세스할 수 없는 안전한 메모리 위치(은폐된 메모리)를 할당받을 수 있으며, 또 이 에이전트는 비밀을 봉인할 수 있다. 이러한 신뢰 에이전트(trusted agent)는 고유하고 신뢰성있게 식별될 수 있다.
신뢰 환경에서는, 어떤 코드가 실행이 허용되는지에 관한 제한이 있다. 예를 들어, (일반적인 LHS에는 아주 풍부한 세트의 API가 있는 것에 반해) 더 적은 신뢰 API가 있으며, 신뢰 환경에서 실행되는 에이전트는 제한된 정식의 프로세스간 통신(IPC, Inter-Process Communication) 메카니즘을 통해 서로 통신할 수 있을 뿐이며, 에이전트는 사용자에게 텍스트 및 이미지를 제공하기 위해 보다 제한되고 원시적인 세트의 API 및 서비스에 액세스할 수 있다. 이러한 제한들은 복잡도를 감소시키며, 그 결과 신뢰 환경 및 그 안에서 동작하는 신뢰 에이전트의 공격면(attack surface)을 감소시킨다. 반면에, 비신뢰 환경은 "개방형" 컴퓨팅 시스템(예를 들어, 퍼스널 컴퓨터, 핸드헬드 컴퓨터 등) 상의 오퍼레이팅 시스템에 의해 일반적으로 생성되는 환경과 유사하다. 즉, 거의 모든 코드가 이러한 비신뢰 환경에서 실행이 허용되어 있으며, 표준 환경에서 실행되는 코드는 많은 풍부한 일련의 프로그래밍 서비스 및 인터페이스에 대한 완전한 액세스를 갖는다. 비신뢰 환경 및 신뢰 환경은 서브-환경들로 추가로 분할될 수 있다. 예를 들어, 비신뢰 환경은 비신뢰 사용자 모드(통상의 애플리케이션이 실행함)와 비신뢰 커널 모드(통상의 오퍼레이팅 시스템이 실행함)로 분할될 수 있다. 마찬가지로, 신뢰 환경은 신뢰 사용자 모드(특수한 신뢰 애플리케이션이 실행함)와 신뢰 커널 모드(신뢰 애플리케이션에 대한 신뢰 환경을 생성하는 신뢰 오퍼레이팅 시스템이 실행함)로 분할될 수 있다.
신뢰 환경과 비신뢰 환경이 동일한 컴퓨터 시스템 내에 공존하는 경우, 신뢰 환경은 비신뢰 환경에서 일어나는 어떤 것에 의해서 또는 신뢰 환경 내의 어떤 사용자 모드 코드에 의해서 그의 신뢰성이 영향받지 않도록 보장하기 위해 액션들을 취할 수 있다. 본 발명의 실시예들은 비신뢰측(untrusted side)을 위해 신뢰측(trusted side)의 신뢰성을 투영하거나 다른 방식으로 이 신뢰성을 사용하는 메카니즘을 제공한다.
도 3은 본 발명에 따른 투영 시스템의 일 실시예의 블록도이고, 도 4는 본 발명에 따른 투영 방법의 일 실시예의 흐름도이다. 컴퓨터(110) 상에서 실행되는 시스템의 LHS는 도 2에 관하여 전술한 것과 유사하다. 2개의 애플리케이션(305, 310)은 오퍼레이팅 시스템(301)과 연계하여 실행되고 있다. RHS의 일부분은 또한 도 2에 관하여 전술한 것과 유사하다. 2개의 신뢰 에이전트(355, 360)는 넥서스(351) 및 SSC(353)와 함께 실행되고 있다. 임의의 수의 애플리케이션이 LHS 상에서 실행될 수 있고 임의의 수의 신뢰 에이전트가 RHS 상에서 실행될 수 있는 것도 생각되고 있다.
도 3은 오퍼레이팅 시스템(301)과 넥서스(351)가 단일 컴퓨터(110) 상에서 실행되는 시스템을 나타낸 것이다. 오퍼레이팅 시스템(301)과 넥서스(351) 사이의 논리적 분리(350)는 일정 통신이 발생하도록 허용하는 한편, 오퍼레이팅 시스템(301)에서 일어나는 이벤트에 대해 넥서스(351)를 보호한다.
도 3에 예시된 실시예에서, 오퍼레이팅 시스템(301)은 호스트 오퍼레이팅 시스템(host operating system)이고, 넥서스(351)는 OS(301)에 의해 호스팅되는 게스트(guest)이다. 즉, OS(301)는 넥서스(351)에 메모리 및 프로세서 시간 등의 일정 서비스 및 자원을 제공한다. 일 실시예에 있어서, 논리적 분리(350)는 넥서스(351)가 오퍼레이팅 시스템(301)의 일정 자원에 의존할 수 있게 해주는 반면, 여전히 넥서스(351)가 오퍼레이팅 시스템(301)에서 일어나는 동작(악의적인 동작 또는 악의없는 동작)으로부터 그 자신을 보호할 수 있게 해주며 또 넥서스(351)로 하여금 그의 동작 사양(behavioral specification)과 반대로 동작하도록 할 수도 있다. 예를 들어, 넥서스(351) 및 그와 관련된 신뢰 자원, 예를 들어 SSC(353)는 논리적 분리를 관리할 수 있다. 그렇지만, 본 발명이 특정 형태의 넥서스(351)로 한정되지 않음을 잘 알 것이다. 분리(350)가 상호작용과 보호의 이러한 균형을 가능하도록 구성될 수 있게 해주는 메카니즘도 생각되고 있다.
도 3이 오퍼레이팅 시스템(301)을 "호스트"로서 나타내고 넥서스(351)를 "게스트"로서 나타내고 있음에 유의해야 한다. 일반적으로, 이러한 특성 파악은 이들 예에서 오퍼레이팅 시스템(301)이 오퍼레이팅 시스템(301)과 넥서스(351)에 의해 사용되는 일정한 오퍼레이팅 시스템 기반 구조(예를 들어, 장치 드라이버, 스케쥴링 등)를 제공한다는 사실을 말해준다. 넥서스(351)는 그 자신이 오퍼레이팅 시스템(301)의 일정한 기반 구조 자원 자체를 제공하기 보다는 그에 의존할 수 있다는 의미에서 "게스트"이다. 그렇지만, 무엇이 오퍼레이팅 시스템을 "호스트" 또는 "게스트"로 만드는지의 파라미터가 유연적이라는 것에 유의해야 한다. 본 명세서에 기재된 기술이 동일한 머신 상에서(또는 심지어 동일한 일련의 연결된 머신 상에서) 실행되는 임의의 2개 이상의 오퍼레이팅 시스템의 상호작용에 적용될 수 있음을 잘 알 것이다. 단일 머신 상에서 실행되는 2개 이상의 오퍼레이팅 시스템은 단일 머신 상에서 서로 상호작용할 필요가 있을 수 있는 "환경"의 일례이지만, 본 발명이 종래의 오퍼레이팅 시스템에 한정되지 않음을 잘 알 것이다.
투영은 (RHS 상의) 신뢰 에이전트의 권한 및 속성의 일부를 LHS 코드로 확장시킬 수 있는 메카니즘이다. 일례에 따르면, 투영은 NGSCB 퍼스널 컴퓨터 플랫폼의 권한이 기존의 코드에 적용될 수 있게 해준다. 예를 들어, Microsoft Excel 등의 애플리케이션을 RHS로 포팅하기보다는, 본 발명에 따른 투영은 애플리케이션(본 명세서에서 모탈(mortal)이라고도 함)에 대한 모니터링 에이전트(본 명세서에서 엔젤(angel)이라고도 함)의 구축을 가능하게 해주며, 이는 이어서 기존의 애플리케이션이 신뢰 에이전트와 동일한 유용한 속성의 대부분을 갖고서 실행될 수 있게 해준다. 투영은 어떤 수준의 신뢰 동작이 바람직한 LHS 오퍼레이팅 시스템(예를 들어, Microsoft Windows) 및 임의의 LHS 애플리케이션 프로그램(예를 들어, Microsoft Office) 둘다에 적용될 수 있다. 투영은 LHS 장치 드라이버에도 적용될 수 있다. 따라서, 이하에 더 기술하는 바와 같이, 투영은 신뢰 에이전트가 LHS 오퍼레이팅 시스템, 서비스 및 프로그램을 보호(protect), 보증(assure), 증명(attest) 및 확장(extend)할 수 있게 해준다.
도 3은 애플리케이션(305)에 대응하는 모니터링 에이전트(390)와 애플리케이션(310)에 대응하는 모니터링 에이전트(395)(도 4의 단계 400)를 도시하고 있다. 각각의 모니터링 에이전트 또는 엔젤은 그의 관련 애플리케이션을 보호한다.
일 실시예에서, 관심의 LHS 엔티티(예를 들어, 애플리케이션)의 생성자(creator)는 LHS 엔티티를 보호하는 엔젤도 생성한다. 이것에 의해 그 생성자는 엔젤이 모니터링하는 애플리케이션에 대한 상세한 지식을 그 엔젤에 제공할 수 있게 된다. 이러한 엔젤은 그 자신이 모니터링하는 애플리케이션에서의 변칙에 더욱 민감할 수 있고 따라서 그 애플리케이션을 더욱 효과적으로 보호하고 검증할 수 있게 된다. 예를 들어, 오퍼레이팅 시스템 개발자에 의해 생성된 베이스 모니터링 에이전트는 오퍼레이팅 시스템의 메모리 관리에 관한 상세한 지식을 포함할 수 있으며, 이 지식에 의해 베이스 모니터링 에이전트는 의심스런 메모리 동작을 신속하게 식별할 수 있게 된다.
다른 실시예에 있어서, 엔젤은 그의 관련 애플리케이션에서의 변칙적이거나 의심스런 동작을 검출한 경우 정정 액션 또는 예방 액션을 취할 수 있다. 예를 들어, 엔젤은 그의 관련 애플리케이션이 애플리케이션 생성자에 의해 불변인 것으로 간주되고 있는 메모리 내의 주요 변수를 변경하려고 시도하는 것을 검출하고 그 변수에 대한 기입을 차단할 수 있다. 이러한 기입 동작은 악의적 코드, 예를 들어 바이러스 코드에 의한 명백한 파괴는 아니지만 최소한 애플리케이션 코드의 오염을 나타내는 것일 수 있다. 요약하면, 엔젤은 그의 관련 애플리케이션에서의 부정적이거나 의심스런 동작을 감시하고 적절한 정정 액션 또는 예방 액션을 취하는 모니터링 에이전트로서 동작한다. 엔젤이 그의 관련 애플리케이션을 손상시키지 않도록 하기 위해 엔젤의 액션에 한계가 정해질 수 있다. 엔젤은 예를 들면 특정의 엔티티, 프로그램 또는 애플리케이션, 또는 이러한 엔티티, 프로그램 및/또는 애플리케이션의 그룹에 부속될 수 있다.
베이스 모니터링 에이전트(본 명세서에서 아크엔젤(archangel)이라고도 함)(380)는 베이스 오퍼레이팅 시스템(즉, LHS OS(301))과 관련되어 있다(단계 410). 일 실시예에서, 베이스 모니터링 에이전트(380)는 LHS 오퍼레이팅 시스템의 생성자에 의해 작성된다. 이것에 의해 베이스 모니터링 에이전트(380)는 LHS 오퍼레이팅 시스템에 관한 상세한 지식을 포함할 수 있게 되며, 이에 따라 베이스 모니터링 에이전트는 그의 관련 오퍼레이팅 시스템에 의한 변칙적인 동작에 더욱 민감하게 된다.
예를 들어, 아크엔젤은 가상 주소 데이터베이스(virtual address database), 프로세스 데이터베이스, 및 PFN(page frame number, 페이지 프레임 번호) 데이터베이스의 포맷을 알 수 있으며, 이것에 기초하여 불법 장치 드라이버(rogue device driver)가 자신이 가져서는 안되는 PFN을 매핑함으로써 프로세스로의 불법적인 매핑을 행한 경우를 검출할 수 있다. 따라서, 아크엔젤은 메모리 관리자에 의해 행해지지 않은 (예를 들면, 불량 장치 드라이버에 의한) 매핑을 검출할 수 있고, 있어서는 안되는 프로세스간 매핑(cross process mapping)을 검출할 수 있다.
이러한 경우, 아크엔젤은 변경된 모탈 OS(altered mortal OS)와 공조할 수 있다. OS와 아크엔젤은 예를 들어 특정의 잠금(lock)이 유지되지 않을 때마다 PFN 데이터베이스가 항상 일관성이 있어야 하고 또한 이러한 일관성이 체크섬(checksum)을 통해 표현가능해야만 하는 것으로 합의할 수 있다. 따라서, 주기적 간격으로, 아크엔젤은 잠금을 조사할 수 있으며, 그 잠금이 해제된 것을 발견하면(잠금은 메모리 변수이며, 따라서 테스트가 용이함) PFN 데이터베이스를 체크섬하러 가게 된다. 아크엔젤은 체크섬이 매칭하지 않음을 발견하면, PFN 데이터베이스가 변조되었음을 안다.
게다가, 아크엔젤은 커널 디버거에 대한 제어 변수를 알 수 있으며 강제적으로 그 제어 변수로 하여금 커널 디버거의 사용을 디스에이블하도록 할 수 있다.
추가의 일례로는 프로세스 로딩, 즉 정확한 비트가 사용자 모드 프로세스(또는 시스템에 로드된 임의의 다른 모듈)로 정확하게 로드되거나, 또는 적절히 서명되어 아마도 아크엔젤이 알고 있는 테이블 내에 유지되는 해쉬 리스트에 열거되어 있도록 하기 위해 로더(loader), 캐시 관리자(cache manager), 페이지 폴트 핸들러(page fault handler) 등을 모니터링하는 것이 있다. 아크엔젤은 로더, 페이지 폴트 핸들러 등이 코드/데이터를 프로세스(페이징 등) 내부로 또는 프로세스로부터 매핑할 필요가 있게 되는 때를 예견할 수 있다. RHS는 OS가 정상 작동했던 기능(known good function)을 수행하고 있지 않은 경우 그 프로세스에 대한 LHS 물리 페이지를 (LHS OS에 대해서조차도) 잠금 상태로 유지할 수 있다. RHS는 LHS 프로세스에 대한 페이지 테이블을 제어한다. 따라서, 아크엔젤 작성자가 불량 동작을 제한하기 위해 아크엔젤에 집어넣을 수 있는 다수의 메카니즘이 있다.
추가의 예는 프로세스 강화(process hardening)를 포함한다. 한 프로세스가 다른 프로세스를 변경하기 위한 공지되고 승인된 메카니즘이 있다. 아크엔젤은 서로 다른 프로세스 공간으로 또는 그로부터 데이터를 복사하는 것 뿐만 아니라 모든 공유 메모리 맵이 제한되도록 보장해줄 수 있다. 다른 예는 읽기 전용 커널을 수반하며, 이 경우 커널 및 장치 드라이버의 모든 "텍스트" 페이지(코드 페이지)가 잠금 상태에 있다.
아크엔젤(380)은 또한 엔젤에 대한 프로세스 단위 (제한된 액세스) 투영(per-process projection)을 지원한다. 이것은, 사용자가 (사용자 정책에 부합하도록) 요구하는 임의의 엔젤을 시스템이 실행하게 된다는 점에서 에이전트와 비슷하고 또 이하에 기술하는 바와 같이 증명 벡터(attestation vector)의 일부가 아닌 엔젤이 파괴를 가져올 수 있게 되어, 예를 들어 좌측 프라이버시(left side privacy)를 침해하고 그 엔젤이 적용되지 않게 되어 있는 모탈 애플리케이션(mortal application)을 염탐하게 된다는 것을 의미한다. 따라서, 엔젤이 특정의 애플리케이션(모탈)에 아주 강력하게 바인드되어 있는 것이 바람직하다. 이것은 엔젤이 기동시키는 모탈에만 그 엔젤이 영향을 줄 수 있도록 함으로써 또는 엔젤의 매니페스트(manifest) 내의 선언된 다이제스트와 매칭하는 모탈에만 그 엔젤이 적용될 수 있도록 함으로써 행해지는 것이 바람직하며, 이 때 다이제스트 검사는 아크엔젤에 의해 또한 그 모탈을 기동시키기 위해 엔젤의 다이제스트를 가지고 모탈 애플리케이션 호출이 있은 후에만 행해진다. 이것은, 그것이 다른 모든 것에 대해 파괴를 가져오거나 프라이버시를 해칠 위험이 없이 임의의 애플리케이션 벤더가 그의 애플리케이션에 대한 엔젤을 작성할 수 있게 해주는 것과 임의의 사용자가 그 엔젤을 사용하게 해주는 것을 안전하고 실용적이게 만들어 주기 때문에 바람직하다.
따라서, 아크엔젤은 LHS를 감시하는 에이전트 및 다른 엔젤들에 서비스를 제공하는 에이전트 둘다이다. 아크엔젤이 LHS 프로세스 구조에 대한 가장 상세한 지식을 가지고 있기 때문에, 어느 엔젤이 어느 LHS 프로세스에 바인드될 수 있는지를 결정하는 것이 바로 아크엔젤이 될 가능성이 있다. 제한이란 (넥서스 증명 벡터의 일부가 아닌) 엔젤은 그 자신이 기동시키거나 그 엔젤에게 자신들을 보호해달라고 요청하는 프로세스만 간섭할 수 있음을 의미한다. 이렇게 함으로써 엔젤이 LHS 프로세스에 대해 임의대로 작용하지 못하게 된다. 이러한 분할(아크엔젤은 OS 레벨 권한을 가지며, 넥서스처럼 검증되고, 엔젤은 제한된 애플리케이션 레벨 권한을 가지며 임의의 다른 에이전트처럼 자유롭게 실행될 수 있음)이 바람직하다.
일 실시예에서, 엔젤은 그의 증명 벡터 내에 아크엔젤 (및 확장에 의해 LHS 베이스 OS)을 포함할 수 있다. 증명 벡터란 엔티티의 보안 관련 구성을 확립하는 보안 관련 컴포넌트의 다이제스트 리스트를 말한다. 예를 들어, 에이전트에 대한 다이제스트는 머신 또는 마더보드 자체, 넥서스, 및 에이전트 자체를, 다른 정보와 함께 포함할 수 있다. 이러한 숫자의 스택(stack of numbers)은 그 에이전트가 무엇인지 및 그 에이전트가 어떤 환경에서 실행되고 있는지를 나타내는 강력하고 신뢰성있는 표시자이다. 이 스택은 다른 엔티티로 하여금 그 자신이 "실제 에이전트"(real agent)를 처리하고 있거나 그렇지 않음을 신뢰할 수 있게 해준다. 증명 벡터는 스택된다(따라서 에이전트의 다이제스트는 넥서스에 대한 벡터의 일부가 아니지만, 넥서스의 다이제스트는 에이전트에 대한 다이제스트의 일부이다). 따라서, 어떤 것의 증명 벡터가 다른 것 내에 포함되어 있는 경우, 이것은 그들 모두가 인식가능한 보안 구성 내에 함께 바인드되어 있음을 의미한다. 증명의 한 특성은 증명이 시스템의 보안 관련 구성을 아주 강력히 식별한다는 것이다.
다른 식으로 말하면, 증명 벡터는 RHS의 소프트웨어 아이덴티티를 정의하는 다이제스트 값의 리스트이다. 양호하게는, RHS 상에 로드된 소프트웨어는 로드되기 이전에 다이제스트(digest)되고, 프로세스 자체는 잘 격리되어 있으므로 그 프로세스는 변경될 수 없다. 이것은 귀납적 프로세스(inductive process)로, 즉, 하드웨어가 넥서스의 다이제스트에 서명을 하고(넥서스의 다이제스트를 증명하고), 이어서 넥서스는 그 에이전트를 증명한다. 이와 같이, 외부측의 당사자가 시스템 상에서 실행되는 소프트웨어를 승인할지를 결정하기 위해, 그 외부 당사자는 기지의 리스트에 대하여 이들 다이제스트들을 검증할 수 있다. 엔젤과 아크엔젤은 RHS 상에서 실행되고 있기 때문에, 이들은 잘 정의된 코드 아이덴티티(code identity)를 가지고 있다. 이 때문에, 이들 코드 아이덴티티는 LHS 코드가 실행되고 있는 환경을 기술하는 증명 벡터에 열거되어 있을 수 있다. 엔젤이 LHS 코드의 실행을 완벽하게 제어할 수 없기 때문에, 이 코드 아이덴티티문(code identity statement)은 RHS 에이전트의 코드 아이덴티티문만큼 강력하지는 않지만, 이것은 주어진 LHS 코드가 강력한 코드 아이덴티티를 갖는 엔젤, 아크엔젤, 및 넥서스의 구속 하에서 실행되고 있음을 의미한다.
아크엔젤의 구현들은 엔젤의 어떤 기능 및/또는 특징에 대한 지원을 제공하기 위해 임의의 세트의 API를 엔젤에 노출시킬 수 있다. 예를 들어, 임의의 메모리 동작에 있어서, 아크엔젤은 바람직하게는 중재 역할을 한다. 엔젤은 가상 주소 VA=100에서의 은폐된 애플리케이션 코드(covered-application code)를 검사하고자 할 수 있다. 그렇지만, 그 가상 주소가 어느 물리 주소로 매핑되는지를 모를 수도 있다. 넥서스는 이러한 구조에 관해 모른다. 따라서, 그 대신에 아크엔젤(LHS OS가 어떻게 동작하는지를 알고 있음)은 기본적인 넥서스 서비스(아크엔젤만이 호출할 수 있음)를 사용하여 관련 LHS 커널 메모리를 판독한다. 아크엔젤은 LHS OS 메모리로부터의 데이터를 사용하여 LHS 애플리케이션 메모리에 대한 정확한 매핑을 계산한다. 이어서, 엔젤은 어느 은폐된 애플리케이션 주소가 엔젤 주소에 대응하는지를 알게 되고, 이어서 엔젤은 그 내용을 검사하고 프로세싱을 계속할 수 있다. 요약하면, 프로세스 바인드된 엔젤(process bound angel)(즉, LHS 상태를 랜덤하게 로밍하기보다는 오히려 허가된 프로세스에만 적용되는 엔젤)에 있어서는, 아크엔젤이 LHS 데이터 구조를 해석하는 것이 바람직하다.
부가의 예시적인 기능으로는 LHS 애플리케이션 및 RHS 엔젤만이 데이터를 볼 수 있게 해주는 보안 IPC 채널(secured IPC channel)을 제공하는 것을 포함한다. LHS 커널은 통상 LHS와 RHS 사이의 IPC 채널을 통과하는 모든 페이지를 볼 수 있지만, 그 페이지가 아크엔젤의 감시 하에서 액세스될 수 있을 뿐인 경우에는, 문제의 프로세스(소정의 엔젤에 의해 제어되는 프로세스)만이 그 채널 내의 데이터를 볼 수 있다는 높은 보장성이 제공된다. 다른 예시적인 기능은 어느 모듈(예를 들어, DLL) 및 그 모듈의 어느 버전들이 소정의 프로세스의 프로세스 공간으로 로드될 수 있는지를 제어할 수 있는 능력을 엔젤에 제공한다.
신뢰 엔티티로서, 아크엔젤(380)은 LHS와 관련된 메모리를 액세스하고 LHS 상에서 무언가 일어날 때마다 통지를 받는다. 아크엔젤(380)은 보안 또는 보호를 위하여 어떤 액션이 취해져야만 하는지를 결정하기 위해 일관성 결여를 검출하는 데 사용하는 일단의 지식으로 미리 프로그램되어 있다. 예를 들어, 아크엔젤(380)은 일정한 세트의 LHS 이벤트를 트랩할 수 있다. 이들은 LHS에 의해 허용되고 또 넥서스(351) 또는 넥서스가 관리하는 신뢰 환경에 의해 배제되지 않은 이벤트일 수 있다. 예를 들어, 아크엔젤(380)은 있음직한 공격 또는 보안 문제를 나타내는 (그렇지 않았으면 넥서스(351)가 허용하게 될 것인) LHS 상에서의 부적절한 매핑을 검출할 수 있다. 아크엔젤(380)은 또한 일관성 검사(consistency check)를 수행할 수 있다.
도 3에 도시한 실시예에 있어서, 각각의 엔젤은 아크엔젤(380) 및 넥서스(351)에 의해 바인드되어 있거나 다른 방식으로는 관리된다(단계 420). 아크엔젤(380)은 엔젤과 그의 관련 LHS 코드 사이의 바인딩을 시행하며, 이는 LHS 상에서의 예를 들어 프라이버시 및 보안에 영향을 주기 위한 엔젤의 능력을 제한한다.
엔젤의 동작은 그 엔젤이 부속되기로 되어 있는 프로세스에만 영향을 주는 것으로 제한되는 것이 바람직한데, 그 이유는 사용자가 넥서스(351) 및 아크엔젤(380)에게 실행하도록 지시한 임의의 엔젤을 그 넥서스 및 아크엔젤이 사용자의 정책에 따라 실행하기 때문이다. 아크엔젤은 넥서스와 동일한 권한을 가지고 있으며, 거의 동일한 레벨까지 조사될 것이다. 엔젤의 경우, 임의의 다른 에이전트에 대해서와 같이, 넥서스는 사용자가 엔젤에 지시하는 것이 무엇이든지간에 실행한다. 따라서, 넥서스와 아크엔젤이 제약을 받는 반면, (에이전트와 같은) 통상의 엔젤은 그렇지 않다(사용자는 예를 들어 특정의 평가기에 의해 서명된 에이전트 또는 엔젤을 실행하도록 또는 실행하지 않도록 넥서스에 지시하는 정책을 설정할 수 있음에도 불구하고임).
엔젤은 제한을 받는 것이 바람직하다. 예를 들어, "제1 프로그램에 대한 엔젤"이라고 되어 있는 서명 블록을 갖는 엔젤은 LHS 베이스 OS 메모리를 사용하거나 다른 프로그램의 메모리를 사용하도록 허용되어서는 안된다. 이것을 허용하는 것은 많은 사용자 권한을 침해하게 되고, 엔젤을 돕기보다는 오히려 위험하게 만들게 된다. 따라서, 아크엔젤은 엔젤이 액세스할 수 있게 되어 있는 LHS 프로그램만을 그 엔젤이 액세스하도록 한다.
신뢰 에이전트는 양호하게는 임의의 LHS 프로그램 보다 많은 권한을 갖지 않는다. 구체적으로 말하면, 신뢰 에이전트는 LHS OS를 들여다볼 수 없으며 LHS OS 구성 상태를 제어도 편집도 할 수 없다. 그 대신에, 엔젤은 양호하게는 엔젤이 적용되는 모탈의 메모리를 검사 또는 수정하는 것만 허용되어 있다. 게다가, 일부 실시예들에서, 아크엔젤은 엔젤이 모탈의 코드를 변경하지 못하도록 할 수 있으며, 이에 따라 그 엔젤을 그의 모탈의 사용자 모드 주소 공간 내의 모든 것을 판독하는 것으로 제한하고 그 엔젤이 그 모탈의 비공유 판독-기입 메모리 공간을 기입하는 것을 허용한다. 그렇지만, 일부 메카니즘은 엔젤에 대한 모탈 호출이 그 호출점(call point)으로가 아니라 계산된 복귀점(computed return point)으로 복귀하도록 허용될 것을 필요로 한다. 이것은 엔젤이 어떤 이벤트를 강제적으로 모탈 내의 기지의 정확한 주소에서 시작하도록 할 수 있게 해주며, 이는 복귀 주소를 변경하는 오염된 스택에 기초한 트램폴린 공격(trampoline attack)에 대처하는 강력한 방법이다.
엔젤은 그의 관련 엔티티 또는 일군의 엔티티만을 모니터링할 수 있으며(블럭 430), 임의의 다른 에이전트처럼 신뢰 엔젤이 아니다. 엔젤은 비관련 엔티티를 모니터링하거나 다른 방식으로 살펴볼 수 없다. 구체적으로 설명하면, 엔젤은 이하의 특성 중 하나 이상을 갖는다.
a. 엔젤은 그 자신이 부속되어 있는 프로세스 또는 프로세스들(즉, 모탈)만의 사용자 모드 메모리를 모니터링할 수 있다(RHS 코드에 통상 제공되는 권한이 아님-상기 참조).
b. 아크엔젤만이 그 자신이 부속되어 있는 LHS OS의 커널 모드 메모리를 볼 수 있다.
c. 엔젤은 그 자신을 호출하여 요청하는 그 LHS 프로세스에만 적용될 수 있거나 또는 그 자신이 기동시키는 LHS 프로세스에만 적용된다.
d. 엔젤은 선언적 시행(declarative enforcement)에 의해 제한될 수 있다. 예를 들어, 넥서스 및/또는 아크엔젤은 엔젤을 위한 매니페스트에 선언된 실행 파일(executables)에 매칭하는 실행 파일을 포함하는 그 프로세스 상에만 투영하도록 엔젤에 제약을 가할 수 있다. 따라서, 예를 들어, "해커툴"(hackertool)에 대한 엔젤은 누군가가 그 엔젤에 대한 매니페스트를 변경하지 않고 우연히 또는 악의로 LHS 애플리케이션으로 투영될 수 없다. 이러한 매니페스트 변경은 정책 툴(policy tool)이 단번에 알 수 있는 것이다.
아크엔젤(380)은 이상의 제한을 시행할 수 있다(블럭 440 및 블럭 450). 이 목적을 위해, 아크엔젤은 LHS에 대한 광범위한 액세스 권한을 부여받을 수 있으며, 이 경우 그 아크엔젤은 넥서스의 것과 유사한 수준의 조사(즉, 강도 높은 조사(intense scrutiny))를 받게 된다. 예를 들어, 아크엔젤은 LHS OS에 대해 권한을 가지고 있으며, 따라서 LHS 상에서 실행되는 모든 것에 대해서도 권한을 가지고 있다. 다른 식으로 말하면, 아크엔젤은 어떤 LHS 메모리라도 판독할 수 있지만, RHS 커널 메모리에 대한 액세스 권한, 또는 그외의 에이전트 프로세스를 살펴볼 수 있는 기능 또는 넥서스나 다른 RHS 에이전트를 제한, 확장, 수정하는 것 등의 특수한 RHS 권한은 가지고 있지 않다. 엔젤은 그 자신이 적용되는 프로그램의 주소 공간만을 판독할 수 있다(즉, 엔젤은 그 자신이 적용되는 모탈에만 적용되는 특수한 권한을 가지고 있다). 아크엔젤은 또한 모든 LHS 메모리를 판독할 수 있는 반면(단계 440), 엔젤이 모니터링하고 보호하는 프로그램의 주소 공간만을 그 엔젤이 들여다 볼 수 있도록 프로세스 특정 서비스(process specific service)를 제공한다.
엔젤은 적어도 이하의 방식으로 그의 피보호자(protectee)를 "투영"할 수 있다(단계 430 및 단계 450).
a. 엔젤은 피보호자에 대한 일정한 변경(예를 들어, 바이러스 공격)을 방지하기 위해 아마도 피보호자 동작과 공조하여 메모리의 여러가지 요소들을 읽기 전용으로서 잠그거나 마크할 수 있다.
b. 엔젤은 그의 신뢰 공간 내에서 피보호자에 대한 일부 주요 동작을 수행할 수 있다.
c. 엔젤은 어떤 구성 변경이 행해질 수 있는지를 제한하는 것, 또는 안전한 입력 메카니즘을 사용하여 허가 받은 사람에 의해 승인되는 경우 이러한 변경이 행해질 수 있도록 하는 것 등의 피보호자 특정 보호(protectee specific protection)를 고집할 수 있다.
d. 엔젤은 피보호자 메모리 및 상태를 원하는 간격으로 스캔하여 일관성 에러, 오염 등을 탐색하고, 추가의 손상 또는 뜻하지 않은/허가받지 않은 동작이 일어나기 전에 사용자에게 경고하거나 피보호자를 중지시킬 수 있다.
e. 엔젤은 언젠가 공격받을 수 있는 봉인된/암호화된 데이터의 양을 최소화시키기 위해 이러한 데이터를 필요한 경우에만 피보호자에게 릴리스할 수 있다.
1. 엔젤은 LHS(또는 LHS 애플리케이션)에 대해 봉인된 비밀을 지키기 위해 봉인된 스토리지를 사용할 수 있으며 비밀 소유자와 매칭하거나 또는 비밀 소유자에 의해 허용가능(allowable)으로서 열거되어 있는 다이제스트를 갖지 않는 임의의 LHS(또는 LHS 애플리케이션)에게는 그 비밀을 제공하는 것을 거부할 수 있다.
f. 적당한 API가 주어지면, 엔젤은 피보호자의 실행 상태를 변경할 수 있다. 즉, 엔젤은 쓰레드를 기지의 실행점으로 보내거나, 타겟 애플리케이션에서의 제어의 흐름의 방향을 조정(redirect)하거나, 또는 타겟 애플리케이션에 대한 분기 계산 및 실행을 수행할 수 있다. 엔젤은 또한 피보호자의 안전한/정확한 동작을 위해 상황을 강제적으로 승인가능한 모드로 만들기 위해 구성 상태, 기동 상태 등을 편집할 수 있다.
g. 엔젤은 아크엔젤을 호출하여, 피보호자를 대신하여 예방, 보호, 발견, 또는 반응을 수행하도록 그 아크엔젤에게 요청할 수 있다.
h. 엔젤은 애플리케이션으로부터 출력 데이터를 (예를 들어, 호출에 의해 또는 메모리 검사에 의해) 추출하고, 이러한 데이터를 검증하며(예를 들면, 체크섬 등을 행함), 그 다음에 이 데이터를 안전한 출력 하드웨어를 사용하여 제공할 수 있다.
엔티티 또는 애플리케이션의 기능의 일부는 엔젤로 이동될 수 있다. 이와 마찬가지로, LHS 커널의 기능의 일부도 아크엔젤로 이동될 수 있다. 애플리케이션 생성자는 애플리케이션의 기능의 일부를 엔젤에 구현할 수 있다. 이것은 RHS 부담을 증가시키지만, 이에 따라 이전된 기능이 신뢰 환경에서 수행될 수 있게 된다. 마찬가지로, LHS OS(301)의 일부분은 아크엔젤(380)에서 이동될 수 있다.
엔젤은 몇가지 방식으로 로드되거나 또는 호출될 수 있다. 애플리케이션(305) 등의 LHS 프로그램은 그의 엔젤(390)을 호출할 수 있다. 이런 방식으로, 예를 들어 애플리케이션의 기동 시에, 대응하는 엔젤이 로드된다. 대안으로, 엔젤은 RHS로부터 호출될 수 있으며, 이어서 그 엔젤은 대응하는 LHS 프로세스 또는 애플리케이션을 호출한다. 엔젤은 아크엔젤을 사용하여 LHS에 호출하여, 그 애플리케이션이 기동되도록 요청한다. 이어서, 아크엔젤은 에이전트를 애플리케이션에 바인딩시킨다. 일 실시예에서, 넥서스 및 아크엔젤이 애플리케이션 엔젤에 제공하는 API는, 그 애플리케이션 엔젤이 그 애플리케이션 엔젤이 생성한 프로세스 및 아마도 그의 자식만을 보도록 해준다.
다른 대체예로서, LHS 프로그램은 매니페스트에 의해 호출되고 이어서 그 엔젤을 기동시키는 RHS로 보내질 수 있으며, 그 LHS 프로그램은 대응하는 LHS 프로세스 또는 애플리케이션을 기동시키기 위해 LHS로 콜백된다. 일반적으로, LHS 프로그램은 그 자신을 포함하는 파일을 지명함으로써 기동된다(예를 들어 "run c:\somedir\someotherdir\someprogram.exe"인 API). RHS 코드(에이전트 또는 엔젤)의 경우, 그것은 매니페스트(manifest)를 지명함으로써 기동되고, 그 매니페스트는 바이너리(binary)를 지명한다. 이것은 위치 독립적(location independent)이다. 또한, 매니페스트는 일반적으로 예를 들면 서명되고 인증되며, 따라서 매니페스트는 스푸핑(spoof)하기가 훨씬 더 어렵다. 따라서, 예시적인 메카니즘은 결합된 좌/우 매니페스트를 RHS(넥서스)에 제공하게 되고 RHS는 LHS 애플리케이션과 그의 관련 엔젤 둘다를 기동시키고 이들을 서로 바인딩시킨다. 게다가, 엔젤은 LHS 또는 RHS 중 어느 하나로부터 애플리케이션을 기동시키기 위해 사용될 수 있다.
본 발명의 실시예에서, 아크엔젤은 LHS 프로세스의 초기 로드된 코드 이미지가 그 엔젤과 관련되어 있는 선언된 타겟 코드 이미지와 매칭하는 것을 확인할 수 있다. 선언된 타겟 코드 이미지는 엔젤의 매니페스트를 통해 제공될 수 있다. 이것은 특정 애플리케이션에 대한 엔젤임을 주장하는 코드가 그 대신에 다른 애플리케이션을 기동시키는 것을 방지하며, 이는 공격에 대한 추가의 보안을 제공한다.
본 발명의 일부 실시예들에 따르면, 엔젤은 그와 관련된 LHS 애플리케이션 또는 프로세스의 코드 이미지를 편집하지 못하게 되어 있다. 엔젤은 데이터를 판독/기입할 수 있지만, 코드를 판독만 할 수 있다.
이들 정책 및 그와 유사한 정책은 엔젤이 LHS에 대한 감독 또는 제한 없이 실행되는 것을 방지하기 위해 사용될 수 있으며, 불법 엔젤(rogue angel)은 LHS 프로그램 및 애플리케이션을 사용하여 스푸핑하는 것이 방지된다.
전술한 개시 메카니즘(initiation mechanism) 이외에, 올바른 엔젤이 올바른 LHS(또는 RHS) 애플리케이션에 부속되고 그에 부속된 채로 있도록 하는 다른 방법들이 있다. 실행 중인 애플리케이션은 그의 에이전트를 호출하기 이전에 공격자에 의해 변경될 수 있거나, LHS 바이러스는 어떤 다른 엔젤을 목표로 하기 위해 그의 호출을 가로채서 교체할 수 있다.
본 발명의 실시예들은 아크엔젤 또는 넥서스와 같은 신뢰 기관(trusted authority)을 통해 애플리케이션으로부터의 그의 엔젤에 대한 호출을 처리함으로써 이것을 처리할 수 있다. 예를 들어, 아크엔젤은 호출하는 LHS 애플리케이션을 다이제스트(digest)하고 그 다이제스트를 RHS 엔젤과 관련된 "승인된" 다이제스트의 리스트와 비교할 수 있다. 이들이 LHS 애플리케이션이 교체되었기 때문에 또는 그 호출이 다른 엔젤을 목표로 하기 위해 변경되었기 때문에 매칭하지 않는 경우, 그 호출은 실패하고, 시스템은 사용자에게 경고할 수 있으며, 및/또는 임의의 다른 수의 액션들을 취할 수 있다.
어느 엔젤이 어느 LHS 애플리케이션에 부속될 수 있는지를 특정하기 위해 시스템 정책이 사용될 수 있다. 강력한 정책 메카니즘을 사용하는 것은, 이러한 의존성을 설정하기 위해, 스푸핑하기 어렵고 또 초기화 오류가 발생하기 어려운 메카니즘을 제공한다.
일부 실시예들에서, 엔젤은 양호하게는 관련 애플리케이션에 대한 위협을 목표로 하기 위해 조정가능하거나 여러가지 프로그램가능한 수준의 조사를 갖는다. 인지된 위협 또는 공격에 대한 엔젤의 감도는 조정될 수 있다.
LHS OS 또는 애플리케이션에 투영(예를 들어, 방어, 보호, 조언)을 제공하는 것에 추가하여, 엔젤은 또한 신뢰 컴퓨팅 환경에서 실행되는 에이전트에 적용될 수도 있다. 이러한 경우, 타겟 에이전트(통상 의심많은 엔티티(paranoid entity))는 그에 부속된 엔젤을 신뢰한다. 이것에 의해 외부 감시자 프로세스(outside watcher process)는 타겟 에이전트에서의 여러가지 버그(bug) 및 부정 이용(exploit)을 방지할 수 있게 된다. 엔젤은 (예를 들어 종래의 안티바이러스(anti-virus) 기술에서와 같이) 보안 에러에 대한 스캐닝과 반대인 보안 불변식들(security invariant)과, 넥서스가 제공하는 엄격한 프로세스 분리 및 보호의 사용을 시행할 수 있다.
일 실시예에서, 에이전트는 어떤 실제 머신의 "효과적으로 동일한 복제품"을 제공하는 가상 머신으로서, 그 안에 OS 이미지가 가동(launch)되어 있다. 신뢰 환경은 에이전트가 가상 머신의 프로세스 메모리를 액세스할 수 있게 해줄 수 있다. 액세스하는 에이전트는 그것이 포함하고 있는 이미지로부터의 공격에 대해 가상 머신을 보호하기 위해 프로세스 메모리를 모니터링할 수 있다. 신뢰 환경은 엔젤이 가상 머신에 OS 이미지를 투영할 수 있게 해주고 또 엔젤이 가상 머신에 애플리케이션을 투영할 수 있게 줄 수 있다. 그 대신에 LHS 애플리케이션에 통상적으로 적용되는 동일한 메카니즘이 가상 머신 환경에 적용되는 것도 생각되고 있다.
본 발명의 일 실시예에 있어서, 넥서스는 아크엔젤에게 (적어도) 메모리 검사 및 변경을 위한 API를 제공한다. 제어 구조를 변경하려는 시도를 트랩하고 그 시도에 반응하기 위한 API 지원은 투영을 용이하게 해준다. 예를 들어, x86 아키텍처 상에서, GDT, LDT, IDT, 디버그 레지스터, TR 등의 제어 구조에 대한 보호는 API를 통해 제공될 수 있다. GDT는 글로벌 디스크립터 테이블(global descriptor table)을 지칭하고, LDT는 로컬 디스크립터 테이블(local descriptor table)을 지칭한다. GDTR(글로벌 디스크립터 테이블 레지스터, global descriptor table register)을 잠금 상태로 만드는 것은 공격자가 통상적으로 점프할 수 없는 장소로 점프할 수 있도록 하기 위해 가상 주소의 의미를 왜곡시키는 것에 의존하는 공격을 중단시킨다. IDT는 인터럽트의 라우팅을 제어하는 인터럽트 디스패치 테이블(interrupt dispatch table)을 말한다. IDT의 위치는 IDTR(인터럽트 디스패치 테이블 레지스터, interrupt dispatch table register)에 의해 표시된다. IDTR을 잠금 상태로 만드는 것은 공격자가 IDT와 포스팅된 인터럽트를 사용하여 다른 방법으로는 공격이 도달하지 못할 수 있는 브랜치를 강제로 코드화시키는 그 공격을 중단시킴으로써 투영을 보다 강력하게 만든다.
신뢰 환경(즉, RHS) 및 개방 환경(즉, LHS)이 어떤 면에서는 연결되는 것이 바람직하다. 이 연결은 신뢰 환경이 개방 환경에서의 상태를 검사하고 이벤트를 통지받을 수 있게 해준다. 본 명세서에서의 개시 내용은 이하의 구조를 포함한 구조에 대해서 동작하지만, 이에 결코 한정되는 것은 아니다.
1. RHS 및 LHS는 동일한 머신 상에 있으며, RHS는 LHS 메모리를 직접 검사할 수 있다(반면 LHS는 허가 없이 RHS 메모리를 검사할 수 없다).
2. RHS 및 LHS는 아마도 서로 다른 메모리를 갖는 서로 다른 프로세서 상에 있지만, 버스, 네트워크, 포트, 또는 기타 상호접속은 RHS가 LHS 메모리를 들여다볼 수 있게 해준다. 예를 들어, ARM 서비스 프로세서는 완전 신뢰 스택(fully trusted stack)을 실행할 수 있으며, 이 신뢰 스택은 x86 MP 시스템의 메인 메모리를 검사할 수 있다. 예를 들어, 누군가가 x86 메인 프로세서와 서비스 프로세서로서의 ARM 또는 PowerPC를 갖는 머신을 가지고, 본 발명의 메카니즘을 사용하여 그 서비스 프로세서가 메인 프로세서 상의 소프트웨어를 감시할 수 있게 해줄 수 있다.
3. RHS가 LHS 이벤트(예를 들어, 맵의 변경)의 통지를 수신할 수 있지만 그 이벤트를 변경하거나 방지할 수 없거나 또는 LHS 메모리를 들여다볼 수 없는 경우, 투영의 일부 부분(예를 들어, 취약 부분)은 여전히 가능하다.
4. RHS는 임의대로 LHS 메모리를 검사할 수 있고, LHS 메모리 매핑 및 주소 변환 구조에 대한 LHS 편집을 제어(즉, 방지 또는 변경)할 수 있으며, 인터럽트 디스패치 벡터가 가리키는 곳을 제어할 수 있다(그러나 인터럽트 콘트롤러를 제어할 필요는 없지만, 이러한 제어가 제공되는 경우 그 점에서 효력이 있다). 강력한 투영을 지원하기 위해 RHS가 바람직하게는 완전히 제어할 수 있는 상태/이벤트의 리스트를 결정하는 것이 각각의 프로세서 아키텍처에 대해 해야할 작업이라고 생각되고 있으며, 당업자라면 그 리스트가 서로 다른 아키텍처에 대해 서로 다르다는 것을 잘 알 것이다.
5. 일 실시예에서, x86 TR 레지스터의 변경 및 하드웨어 디버그 레지스터의 설정도 RHS에 의해 제어가능하다.
종래 기술의 하드웨어에서, 신뢰 환경이 통상의 인터럽트 하드웨어, LHS 인터럽트 디스패치 테이블 등에 의존할 수 있기 때문에, 그 신뢰 환경은 실행될 것이라고 보장되지 않는다.
앞서 열거한 하드웨어에서, (x86 또는 그 밖의 균등물 상에서) IDT를 제어할 수 있는 것은 RHS가 그의 선택 중의 일부 인터럽트가 RHS를 호출하는 코드를 항상 실행하게 될 것임을 보장할 수 있게 해준다.
그렇지만, LHS 공격자 또는 에러는 인터럽트 콘트롤러를 오염시킬 수 있고, 인터럽트를 턴오프시킬 수 있으며, 기타 등등을 할 수 있다. RHS가 이따금 실행되어지도록 보장하기 위해 ATC(주소 변환 제어, address translation control)가 사용되는 것도 생각되고 있다. RHS가 ATC를 사용하고 있는 경우, RHS는 ATC를 수정카운터를 증가시킬 수 있다. 카운터는 RHS가 아크엔젤을 스케쥴링할 때마다 어떤 값으로 설정된다. 카운터가 0에 도달하면, ATC는 아크엔젤이 "너무 오랫동안" 실행되지 않았음을 알고 아크엔젤을 강제적으로 실행시키는 넥서트 진입점을 호출한다. 이 기술은 아크엔젤이 임의의 특정 시간에 실행됨을 보장하지 않지만 아크엔젤이 다수의 LHS 메모리 편집 동작 후에 실행될 것임을 보장한다. 따라서, 활성인 LHS는 결국에는 아크엔젤이 실행되게 해야만 한다.
RHS가 IDT를 잠금 상태로 만들 수 있고 또 시스템이 NMI(non-maskable interrupt, 마스크 불가능 인터럽트)의 신뢰성있는 소스를 갖는 경우, RHS는 강제적으로 NMI 핸들러가 우측을 호출하도록 할 수 있다.
예시적인 실시예에서, 하드웨어는 매우 많은 수의 틱(tick) 후에 RHS에 강제적으로 인터럽트를 거는 타이머를 갖는다.
본 발명은 한 컴퓨팅 환경의 신뢰성을 제2 컴퓨팅 환경으로 투영할 수 있게 해주는 메카니즘을 제공한다. 비록 본 발명이 종래의 오퍼레이팅 시스템에 한정되는 것이 아님을 잘 알 것이지만, 단일 머신 상에서 실행되는 2개 이상의 오퍼레이팅 시스템은 단일 머신 상에서 서로 상호작용할 필요가 있을 수 있는 "환경"의 일례이다. 게다가, 적어도 본 명세서에 기재된 기술 중 어떤 것은 일반적인 경우에 임의의 유형의 실행가능 엔티티(예를 들어, 임의의 소프트웨어)로부터의 신뢰성을 임의의 다른 유형의 엔티티로 투영하기 위해 사용될 수 있다.
2개의 엔티티가 나란히 단일 머신 상에 존재하고 서로 상호작용할 필요가 있는 경우, 그 상호작용은 여러가지 형태를 가질 수 있다. 예를 들어, 2개의 엔티티는 서로 간에 이리저리 데이터를 통신할 필요가 있을 수 있다. 엔티티가 오퍼레이팅 시스템(또는 가상 머신 상에서 스크립트를 실행시키는 스크립트 엔진 등의 어떤 다른 유형의 실행 환경)인 경우, 그 엔티티는 어떤 다른 방식으로 서로 상호작용할 필요가 있을 수 있다, 예를 들면, 메모리를 공유하고, 프로세서 상에서 시간을 공유하며, 자원을 공유하고, 인터럽트를 처리할 필요가 있을 수 있다. 본 발명은 한 엔티티가 그의 신뢰성을 그외의 엔티티에게 투영할 수 있게 해주면서 2개의 엔티티가 이들 유형의 서로간의 상호작용에 참여할 수 있게 해주는 기술을 제공한다.
전술한 실시예들은 모니터링되는 자원으로서 메모리에 중점을 두고 있지만, 본 발명은 그에 한정되지 않는다. 보안 모니터가 메모리 이외의 자원에 대해 이용가능한 경우, 베이스 모니터링 에이전트(예를 들어, 아크엔젤)는 그의 신뢰 영역을 확장시키기 위해 이러한 모니터를 신뢰 대리(trusted delegate)로서 사용할 수 있다. 예를 들어, 보안 NIC가 이용가능한 경우, 베이스 모니터링 에이전트는 일정한 헤더를 갖는 패킷을 전송하는 것을 배제시키기 위해 그 NIC을 사용할 수 있다. 일반적으로, 이러한 신뢰 대리는 측정 불변식(measurement invariant), 예를 들어 <regexp>에 매칭하는 헤더를 이해하고, 불변식의 변경에 관해 모니터링 에이전트에 신뢰성있게 경고할 필요가 있다.
전술한 일례는 단지 설명의 목적을 위해 제공된 것이며 결코 본 발명을 한정하는 것으로 해석되어서는 안된다. 본 발명이 여러가지 실시예를 참조하여 기술되어 있지만, 본 명세서에 사용된 용어는 설명 및 예시를 위한 것이지 제한을 위한 것이 아님을 이해해야 한다. 게다가, 비록 본 발명이 특정의 수단, 재료 및 실시예를 참조하여 본 명세서에 기술되어 있지만, 본 발명을 본 명세서에 기재된 구체적인 내용으로 한정하기 위함이 아니며, 오히려 본 발명은 첨부된 청구항의 범위 내에 속하는 모든 기능상 등가인 구조, 방법 및 사용에까지 확장된다. 당업자라면 본 명세서의 기재 내용을 이용하여 그에 대한 여러가지 수정을 실시할 수 있으며, 본 발명의 특징에 있어서 그의 범위 및 사상을 벗어나지 않고 변경이 행해질 수 있다.
본 발명에 따르면, 신뢰 환경 내의 엔티티의 신뢰성(trustworthiness)을 비신뢰 환경 내의 엔티티로 투영하기 위한 메카니즘을 제공하여, 단일 컴퓨팅 장치 상에서 복수의 실행 환경(예를 들면, 오퍼레이팅 환경)에 있어서, 오퍼레이팅 시스템 또는 환경의 신뢰성을 지원할 수 있다.
도 1은 본 발명의 특징들이 구현될 수 있는 예시적인 컴퓨팅 환경을 나타낸 블록도.
도 2는 신뢰 환경 및 비신뢰 환경 둘다를 갖는 기존의 NGSCB 시스템의 블록도.
도 3은 본 발명에 따른 예시적인 투영 시스템의 블록도.
도 4는 본 발명에 따른 예시적인 투영 방법의 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
110: 컴퓨터
301: 오퍼레이팅 시스템
305, 310: 애플리케이션
351: 넥서스
355, 360: 신뢰 에이전트
390, 395: 모니터링 에이전트

Claims (66)

  1. 비신뢰 환경(untrusted environment);
    신뢰 환경; 및
    상기 비신뢰 환경을 모니터링하며, 상기 신뢰 환경에서 실행되는 적어도 하나의 베이스 모니터링 에이전트(base monitoring agent)
    를 포함하는 시스템.
  2. 제1항에 있어서,
    상기 신뢰 환경에서 실행되는 복수의 모니터링 에이전트를 더 포함하며, 각각의 모니터링 에이전트는 상기 비신뢰 환경에서 실행되는 적어도 하나의 애플리케이션, 익스텐션(extension), 또는 컴포넌트를 모니터링하는 시스템.
  3. 제2항에 있어서,
    각각의 모니터링 에이전트는 애플리케이션과 관련되어 있고,
    각각의 모니터링 에이전트는 공격 및 일관성 결여가 있는지 그의 관련된 애플리케이션을 모니터링함으로써, 상기 신뢰 환경의 신뢰성을 상기 비신뢰 환경으로 투영(projecting)하는 시스템.
  4. 제3항에 있어서,
    각각의 모니터링 에이전트는 관련되어 있는 상기 애플리케이션의 일부분을 포함할 수 있는 시스템.
  5. 제3항에 있어서,
    각각의 모니터링 에이전트는 상기 관련 애플리케이션에 대한 위협을 목표로 정한 조절가능한 레벨의 검사를 갖는 시스템.
  6. 제3항에 있어서,
    각각의 모니터링 에이전트는 안전한 입력을 수신하고 상기 안전한 입력을 상기 관련 애플리케이션으로 전송할 수 있는 시스템.
  7. 제2항에 있어서,
    상기 모니터링 에이전트들 중 적어도 하나는 상기 신뢰 환경에서 실행되는 애플리케이션 에이전트들을 모니터링하는 시스템.
  8. 제2항에 있어서,
    상기 신뢰 환경에서 실행되는 다른 모니터링 에이전트를 더 포함하며,
    상기 모니터링 에이전트들은 서로 통신하고 있는 시스템.
  9. 제1항에 있어서,
    상기 베이스 모니터링 에이전트는 상기 비신뢰 환경에서의 일관성 결여를 검출하는 시스템.
  10. 제9항에 있어서,
    상기 비신뢰 환경에서 실행되는 애플리케이션들에서의 일관성 결여를 검출하는 복수의 모니터링 에이전트를 더 포함하는 시스템.
  11. 제10항에 있어서,
    상기 신뢰 환경에서 실행되는 애플리케이션들에서의 일관성 결여를 검출하는 추가의 모니터링 에이전트들을 더 포함하는 시스템.
  12. 제1항에 있어서,
    상기 베이스 모니터링 에이전트들 중 적어도 하나는 비신뢰 환경 이벤트를 승인(approve) 또는 불승인(disapprove)하는 시스템.
  13. 제12항에 있어서,
    상기 적어도 하나의 베이스 모니터링 에이전트는 입력을 수신하기 위한 안전한 입력을 포함하며,
    상기 베이스 모니터링 에이전트는 상기 수신된 입력에 기초하여 승인 또는 불승인하는 시스템.
  14. 제1항에 있어서,
    상기 베이스 모니터링 에이전트들 중 적어도 하나는 안전한 입력을 통한 승인의 수신이 없으면 상기 비신뢰 환경에 대한 변경을 허용하려 하지 않는 시스템.
  15. 제1항에 있어서,
    상기 베이스 모니터링 에이전트들 중 적어도 하나는 상기 비신뢰 환경에 대한 변경이 승인된 당사자에 의해 서명되어 있는 패키지에 의해 기술되어 있지 않은 경우 그 변경을 허용하려 하지 않는 시스템.
  16. 제1항에 있어서,
    상기 신뢰 환경에서 실행되는 모니터링 에이전트를 더 포함하며,
    상기 모니터링 에이전트는 상기 비신뢰 환경에서 실행되는 적어도 하나의 애플리케이션, 익스텐션, 또는 컴포넌트를 모니터링하고,
    상기 모니터링 에이전트는 상기 비신뢰 환경에 존재하는 오퍼레이팅 시스템 또는 애플리케이션에 대해 비밀을 지키기 위해 봉인된 스토리지를 사용하는 시스템.
  17. 제16항에 있어서,
    상기 모니터링 에이전트는 상기 오퍼레이팅 시스템 또는 애플리케이션이 상기 비밀의 소유자와 매칭하는 다이제스트를 갖지 않는 경우 상기 오퍼레이팅 시스템 또는 상기 애플리케이션에 상기 비밀을 누설하려 하지 않는 시스템.
  18. 제16항에 있어서,
    상기 모니터링 에이전트는 상기 오퍼레이팅 시스템 또는 애플리케이션이 상기 비밀을 판독할 수 있는 다이제스트들의 리스트 상에 있지 않는 경우 상기 오퍼레이팅 시스템 또는 상기 애플리케이션에 상기 비밀을 누설하려 하지 않는 시스템.
  19. 제16항에 있어서,
    상기 모니터링 에이전트는 적법한 엔티티가 상기 비밀을 요청하고 있는지를 결정하기 위해 소정의 테스트를 사용하는 시스템.
  20. 제19항에 있어서,
    상기 소정의 테스트는 상기 엔티티의 스택(stack)들을 검사하고 상기 스택들이 적법한 스택 내용을 가짐을 보증하는 것을 포함하는 시스템.
  21. 제1항에 있어서,
    상기 신뢰 환경에서 실행되는 모니터링 에이전트를 더 포함하고,
    상기 모니터링 에이전트는 상기 비신뢰 환경에서 실행되는 적어도 하나의 애플리케이션, 익스텐션, 또는 컴포넌트를 모니터링하며,
    상기 모니터링 에이전트는 상기 비신뢰 환경의 상태를 안전하거나 또는 다른 점에서 허용가능한 것으로 만들기 위해 그 상태를 편집하는 시스템.
  22. 제21항에 있어서,
    상기 상태는 초기 구성 또는 에러 보고 옵션을 포함하는 시스템.
  23. 제1항에 있어서,
    상기 베이스 모니터링 에이전트는 상기 비신뢰 환경의 기지의 양호한 구성(known good configuration) 또는 상기 신뢰 환경에 속하지 않는 물리 메모리를 소거(zero)하는 시스템.
  24. 제1항에 있어서,
    상기 비신뢰 환경은 기본 입출력 시스템(BIOS), 펌웨어, 또는 로더(loader)를 포함하는 시스템.
  25. 제1항에 있어서,
    부트 시에 상기 베이스 모니터링 에이전트를 실행시키기 위한 넥서스(nexus)를 더 포함하는 시스템.
  26. 제1항에 있어서,
    상기 신뢰 환경에 카운터를 더 포함하며,
    상기 카운터는 상기 베이스 모니터링 에이전트가 실행되어야만 하는지의 여부를 결정하기 위해 사용되는 시스템.
  27. 제26항에 있어서,
    상기 카운터는 비신뢰 메모리 편집 동작들의 횟수를 카운트하는 시스템.
  28. 비신뢰 환경을 모니터링하는 방법으로서,
    상기 비신뢰 환경을 제공하는 단계;
    신뢰 환경에 있는 적어도 하나의 베이스 모니터링 에이전트를 제공하는 단계; 및
    상기 신뢰 환경의 신뢰성을 상기 비신뢰 환경으로 투영하기 위해 공격 및 일관성 결여가 있는지 상기 비신뢰 환경을 모니터링하는 단계
    를 포함하는 방법.
  29. 제28항에 있어서,
    상기 신뢰 환경에서 실행되는 복수의 모니터링 에이전트를 제공하는 단계; 및
    상기 비신뢰 환경에서 실행되는 적어도 하나의 애플리케이션, 익스텐션, 또는 컴포넌트를 모니터링하는 단계를 더 포함하는 방법.
  30. 제29항에 있어서,
    각각의 모니터링 에이전트를 애플리케이션과 관련시키는 단계; 및
    공격 및 일관성 결여가 있는지 각각의 관련된 애플리케이션을 모니터링하는 단계를 더 포함하는 방법.
  31. 제29항에 있어서,
    애플리케이션을 상기 모니터링 에이전트들 중 하나와 관련시키는 단계, 및
    상기 애플리케이션의 일부분이 상기 신뢰 환경에 존재하도록 상기 일부분을 상기 모니터링 에이전트로 전송하는 단계를 더 포함하는 방법.
  32. 제29항에 있어서,
    애플리케이션을 상기 모니터링 에이전트와 관련시키는 단계, 및
    상기 관련된 애플리케이션에 대한 위협을 목표로 하는, 상기 모니터링 에이전트에서의 검사의 레벨을 조정하는 단계를 더 포함하는 방법.
  33. 제29항에 있어서,
    애플리케이션을 상기 모니터링 에이전트와 관련시키는 단계, 및
    상기 모니터링 에이전트에서 안전한 입력을 수신하고 이 안전한 입력을 상기 애플리케이션으로 전송하는 단계를 더 포함하는 방법.
  34. 제29항에 있어서,
    상기 모니터링 에이전트들은 서로 통신하고 있는 것인 방법.
  35. 제28항에 있어서,
    상기 베이스 모니터링 에이전트가 비신뢰 환경 이벤트를 승인(approve)하거나 또는 불승인(disapprove)하는 단계를 더 포함하는 방법.
  36. 제35항에 있어서,
    상기 베이스 모니터링 에이전트가 안전한 입력으로부터 입력을 수신하는 단계를 더 포함하는 방법.
  37. 제28항에 있어서,
    안전한 입력을 통한 승인의 수신이 없으면 상기 베이스 모니터링 에이전트가 상기 비신뢰 환경에 대한 변경을 허용하려 하지 않는 단계를 더 포함하는 방법.
  38. 제28항에 있어서,
    상기 비신뢰 환경에 대한 변경이 승인된 당사자에 의해 서명되어 있는 패키지에 의해 기술되어 있지 않은 경우 상기 베이스 모니터링 에이전트가 그 변경을 허용하려 하지 않는 단계를 더 포함하는 방법.
  39. 제28항에 있어서,
    상기 신뢰 환경에서 실행되는 복수의 모니터링 에이전트를 제공하는 단계; 및
    상기 모니터링 에이전트들 중 하나가 상기 비신뢰 환경에 존재하는 오퍼레이팅 시스템 또는 애플리케이션에 대해 비밀을 지키기 위해 봉인된 스토리지를 사용하는 단계를 더 포함하는 방법.
  40. 제39항에 있어서,
    상기 모니터링 에이전트는 상기 오퍼레이팅 시스템 또는 애플리케이션이 상기 비밀의 소유자와 매칭하는 다이제스트를 갖지 않는 경우 상기 오퍼레이팅 시스템 또는 상기 애플리케이션에 상기 비밀을 누설하려 하지 않는 방법.
  41. 제39항에 있어서,
    상기 모니터링 에이전트는 상기 오퍼레이팅 시스템 또는 애플리케이션이 상기 비밀을 판독할 수 있는 다이제스트들의 리스트 상에 있지 않는 경우 상기 오퍼레이팅 시스템 또는 상기 애플리케이션에 상기 비밀을 누설하려 하지 않는 방법.
  42. 제39항에 있어서,
    적법한 엔티티가 상기 비밀을 요청하고 있는지의 여부를 결정하기 위해 소정의 테스트를 사용하는 단계를 더 포함하는 방법.
  43. 제42항에 있어서,
    상기 소정의 테스트는 상기 엔티티의 스택을 검사하는 단계 및 상기 스택이 적법한 스택 내용을 가짐을 보증하는 단계를 포함하는 방법.
  44. 제28항에 있어서,
    상기 신뢰 환경에서 실행되는 복수의 모니터링 에이전트를 제공하는 단계, 및
    상기 모니터링 에이전트들 중 하나가 상기 비신뢰 환경의 상태를 안전하거나 또는 다른 점에서 허용가능한 것으로 만들기 위해 그 상태를 편집하는 단계를 더 포함하는 방법.
  45. 제44항에 있어서,
    상기 상태는 초기 구성 또는 에러 보고 옵션을 포함하는 방법.
  46. 제28항에 있어서,
    상기 베이스 모니터링 에이전트가 상기 비신뢰 환경의 기지의 양호한 구성 또는 상기 신뢰 환경에 속하지 않는 물리 메모리를 소거(zero)하는 단계를 더 포함하는 방법.
  47. 제28항에 있어서,
    상기 비신뢰 환경은 기본 입출력 시스템(BIOS), 펌웨어, 또는 로더를 포함하는 방법.
  48. 제28항에 있어서,
    부트 시에 넥서스를 통해 상기 베이스 모니터링 에이전트를 실행시키는 단계를 더 포함하는 방법.
  49. 제28항에 있어서,
    카운터에 응답하여 상기 베이스 모니터링 에이전트가 실행되어야만 하는지의 여부를 결정하는 단계를 더 포함하는 방법.
  50. 제49항에 있어서,
    상기 카운터는 비신뢰 메모리 편집 동작들의 횟수를 카운트하는 방법.
  51. 제28항에 있어서,
    상기 비신뢰 환경에서 실행되는 애플리케이션들에서의 일관성 결여를 검출하는 복수의 모니터링 에이전트를 제공하는 단계를 더 포함하는 방법.
  52. 제51항에 있어서,
    상기 신뢰 환경에서 실행되는 애플리케이션들에서의 일관성 결여를 검출하는 추가의 모니터링 에이전트들을 제공하는 단계를 더 포함하는 방법.
  53. 오퍼레이팅 시스템, 펌웨어, 및 기본 입출력 시스템(BIOS) 중 적어도 하나를 갖는 신뢰 환경;
    비신뢰 환경; 및
    상기 신뢰 환경에서 실행되는 적어도 하나의 모니터링 에이전트 - 이 모니터링 에이전트는 상기 오퍼레이팅 시스템, 상기 펌웨어, 상기 BIOS, 및 상기 비신뢰 환경에서 실행되는 애플리케이션 중 하나와 관련되어 있음 -
    를 포함하는 시스템.
  54. 제53항에 있어서,
    상기 적어도 하나의 모니터링 에이전트는 복수의 모니터링 에이전트를 포함하며, 각각의 모니터링 에이전트는 관련 권한을 갖는 시스템.
  55. 제53항에 있어서,
    상기 신뢰 환경은 제1 프로세서 아키텍처 상에서 실행되고,
    상기 비신뢰 환경은 제2 프로세서 아키텍처 상에서 실행되며,
    상기 제1 프로세서 상에서 실행되는 베이스 모니터링 에이전트를 더 포함하는 시스템.
  56. 제53항에 있어서,
    상기 신뢰 환경 및 상기 비신뢰 환경은 동일한 프로세서 상에서 실행되고,
    상기 신뢰 환경에서 실행되는 베이스 모니터링 에이전트를 더 포함하는 시스템.
  57. 제53항에 있어서,
    상기 신뢰 환경은 제1 프로세서 상에서 실행되고,
    상기 비신뢰 환경은 제2 프로세서 상에서 실행되며,
    상기 제1 및 제2 프로세서는 신뢰 모드 또는 비신뢰 모드 중 어느 한 모드에서 실행될 수 있는 시스템.
  58. 제53항에 있어서,
    상기 신뢰 환경에 존재하는 넥서스 및 베이스 모니터링 에이전트를 더 포함하며,
    상기 베이스 모니터링 에이전트는 상기 넥서스에 바인드, 링크 또는 컴파일되어 있는 시스템.
  59. 제53항에 있어서,
    상기 신뢰 환경에 존재하는 넥서스 및 베이스 모니터링 에이전트를 더 포함하며,
    상기 베이스 모니터링 에이전트는 상기 넥서스 상에서 실행되는 사용자 모드 프로세서인 시스템.
  60. 제53항에 있어서,
    상기 신뢰 환경에 존재하는 베이스 모니터링 에이전트를 더 포함하며, 상기 베이스 모니터링 에이전트는 상기 비신뢰 환경의 오퍼레이팅 시스템과 동일하거나 또는 관련된 구축 환경(build environment)에 의해, 이들을 가지고, 이들 내에 개발되어 있는 시스템.
  61. 제53항에 있어서,
    상기 신뢰 환경에 존재하는 베이스 모니터링 에이전트를 더 포함하며, 상기 베이스 모니터링 에이전트는 보안 평가를 위한 신뢰 컴퓨팅 베이스(trusted-computing-base)의 일부인 시스템.
  62. 제53항에 있어서,
    베이스 모니터링 에이전트를 더 포함하며, 상기 베이스 모니터링 에이전트의 제1 부분은 상기 신뢰 환경에 존재하고, 상기 베이스 모니터링 에이전트의 제2 부분은 물리적으로 떨어져 있는 머신(physically remote machine) 상에 존재하며, 상기 제1 및 제2 부분은 보안 링크에 의해 연결되어 있는 시스템.
  63. 신뢰 환경에서 실행되는 에이전트;
    상기 신뢰 환경에서 실행되며 상기 에이전트에 대한 투영을 제공하는 모니터링 에이전트; 및
    상기 신뢰 환경에서 실행되고, 상기 모니터링 에이전트를 모니터링하는 베이스 모니터링 에이전트
    를 포함하는 시스템.
  64. 제63항에 있어서,
    상기 에이전트는 가상 머신 에이전트이고,
    상기 모니터링 에이전트는 가상 머신 모니터링 에이전트인 시스템.
  65. 제64항에 있어서,
    상기 베이스 모니터링 에이전트는 가상 머신 베이스 모니터링 에이전트이고 오퍼레이팅 시스템 이미지를 상기 가상 머신 에이전트에 투영하는 시스템.
  66. 제64항에 있어서,
    상기 가상 머신 모니터링 에이전트와 관련된 애플리케이션을 더 포함하고,
    상기 베이스 모니터링 에이전트는 가상 머신 베이스 모니터링 에이전트이고 상기 애플리케이션으로의 투영을 제공하는 시스템.
KR1020040062034A 2003-08-07 2004-08-06 신뢰 환경으로부터의 신뢰성의 비신뢰 환경으로의 투영 KR100949022B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/638,199 2003-08-07
US10/638,199 US7530103B2 (en) 2003-08-07 2003-08-07 Projection of trustworthiness from a trusted environment to an untrusted environment

Publications (2)

Publication Number Publication Date
KR20050016202A true KR20050016202A (ko) 2005-02-21
KR100949022B1 KR100949022B1 (ko) 2010-03-23

Family

ID=33552981

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040062034A KR100949022B1 (ko) 2003-08-07 2004-08-06 신뢰 환경으로부터의 신뢰성의 비신뢰 환경으로의 투영

Country Status (21)

Country Link
US (1) US7530103B2 (ko)
EP (2) EP1916614B1 (ko)
JP (1) JP4726449B2 (ko)
KR (1) KR100949022B1 (ko)
CN (1) CN1581073B (ko)
AT (2) ATE530991T1 (ko)
AU (1) AU2004203528B9 (ko)
BR (1) BRPI0403261B1 (ko)
CA (1) CA2473487C (ko)
CO (1) CO5600214A1 (ko)
ES (2) ES2376433T3 (ko)
IL (1) IL162997A (ko)
MX (1) MXPA04007483A (ko)
MY (1) MY140973A (ko)
NO (1) NO20043285L (ko)
NZ (1) NZ534064A (ko)
PL (2) PL1505475T3 (ko)
RU (1) RU2390836C2 (ko)
SG (1) SG108962A1 (ko)
TW (1) TWI356298B (ko)
ZA (1) ZA200405646B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150033368A (ko) * 2013-09-24 2015-04-01 삼성전자주식회사 신뢰하는 실행 환경에서의 보안 도메인 관리 방법 및 장치

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7730318B2 (en) * 2003-10-24 2010-06-01 Microsoft Corporation Integration of high-assurance features into an application through application factoring
US8619971B2 (en) 2005-04-01 2013-12-31 Microsoft Corporation Local secure service partitions for operating system security
US7571475B2 (en) * 2005-04-05 2009-08-04 Cisco Technology, Inc. Method and electronic device for triggering zeroization in an electronic device
US8464354B2 (en) 2005-05-13 2013-06-11 Cryptomill Inc. Content cryptographic firewall system
EP1897019A4 (en) 2005-05-13 2011-10-05 Cryptomill Technologies Ltd CRYPTOGRAPHIC CONTROL FOR MOBILE MEMORY
US20060294596A1 (en) * 2005-06-27 2006-12-28 Priya Govindarajan Methods, systems, and apparatus to detect unauthorized resource accesses
US7587724B2 (en) * 2005-07-13 2009-09-08 Symantec Corporation Kernel validation layer
US8272058B2 (en) * 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
US20070028291A1 (en) * 2005-07-29 2007-02-01 Bit 9, Inc. Parametric content control in a network security system
US7895651B2 (en) * 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8984636B2 (en) * 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US8799680B2 (en) 2005-09-15 2014-08-05 Microsoft Corporation Transactional sealed storage
US8201240B2 (en) * 2005-09-16 2012-06-12 Nokia Corporation Simple scalable and configurable secure boot for trusted mobile phones
US7761914B2 (en) * 2005-10-21 2010-07-20 Oracle International Corporation Method and apparatus for facilitating adjustment of an audit state in a computing environment
US8510596B1 (en) * 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US20070192826A1 (en) * 2006-02-14 2007-08-16 Microsoft Corporation I/O-based enforcement of multi-level computer operating modes
US8365294B2 (en) * 2006-06-30 2013-01-29 Intel Corporation Hardware platform authentication and multi-platform validation
WO2008018055A2 (en) * 2006-08-09 2008-02-14 Neocleus Ltd Extranet security
US20080046546A1 (en) 2006-08-18 2008-02-21 Parmar Pankaj N EFI based mechanism to export platform management capabilities to the OS
JP4918334B2 (ja) * 2006-11-13 2012-04-18 株式会社日立ソリューションズ 情報処理装置、及びシステム監視方法、並びにシステム監視方法をコンピュータに実行させるためのプログラム
JP2010518468A (ja) * 2007-01-16 2010-05-27 アブソリュート ソフトウェア コーポレイション ホストエージェントと協働する補助エージェントを備えたセキュリティモジュール
WO2008114257A2 (en) * 2007-03-21 2008-09-25 Neocleus Ltd. Protection against impersonation attacks
WO2008114256A2 (en) * 2007-03-22 2008-09-25 Neocleus Ltd. Trusted local single sign-on
US20080263679A1 (en) * 2007-04-23 2008-10-23 Microsoft Corporation Storing information in closed computing devices
US8336107B2 (en) * 2007-04-27 2012-12-18 Angel Secure Networks, Inc. System and methods for defending against root
US8230412B2 (en) 2007-08-31 2012-07-24 Apple Inc. Compatible trust in a computing device
US8474037B2 (en) * 2008-01-07 2013-06-25 Intel Corporation Stateless attestation system
WO2009147631A1 (en) * 2008-06-05 2009-12-10 Neocleus Israel Ltd Secure multi-purpose computing client
US8122514B2 (en) * 2008-07-30 2012-02-21 Microsoft Corporation Software enhanced trusted platform module
US8161285B2 (en) * 2008-09-26 2012-04-17 Microsoft Corporation Protocol-Independent remote attestation and sealing
US9166797B2 (en) * 2008-10-24 2015-10-20 Microsoft Technology Licensing, Llc Secured compartment for transactions
US20100106977A1 (en) * 2008-10-24 2010-04-29 Jan Patrik Persson Method and Apparatus for Secure Software Platform Access
US9805196B2 (en) * 2009-02-27 2017-10-31 Microsoft Technology Licensing, Llc Trusted entity based anti-cheating mechanism
CN101599112B (zh) * 2009-04-09 2010-11-03 广州市芯德电子技术有限公司 一种保护加密软件的方法
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
US8955108B2 (en) * 2009-06-17 2015-02-10 Microsoft Corporation Security virtual machine for advanced auditing
US8205257B1 (en) * 2009-07-28 2012-06-19 Symantec Corporation Systems and methods for preventing threats originating from a non-process based component hosted by a trusted process
US8352797B2 (en) * 2009-12-08 2013-01-08 Microsoft Corporation Software fault isolation using byte-granularity memory protection
US9323921B2 (en) 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
CN103548287A (zh) * 2011-03-21 2014-01-29 瑞典爱立信有限公司 波分复用光网络的监管
CN102142897B (zh) 2011-03-29 2014-08-20 华为技术有限公司 一种光网络单元的检测方法、装置和无源光网络系统
CN102388547B (zh) * 2011-04-22 2015-03-11 华为技术有限公司 自注入光收发模块和波分复用无源光网络系统
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
CN103620612B (zh) 2011-07-12 2016-04-13 惠普发展公司,有限责任合伙企业 包括端口和来宾域的计算设备
US8826440B2 (en) 2011-10-19 2014-09-02 Google Inc. Defensive techniques to increase computer security
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US9389933B2 (en) 2011-12-12 2016-07-12 Microsoft Technology Licensing, Llc Facilitating system service request interactions for hardware-protected applications
US9208319B2 (en) 2011-12-15 2015-12-08 Microsoft Technology Licensing, Llc Code base partitioning system
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
US9027031B2 (en) * 2012-10-15 2015-05-05 Vmware, Inc. Allowing inter-process communication via file system filter
DE102013000147A1 (de) 2013-01-03 2014-07-03 Giesecke & Devrient Gmbh Endgeräte-Chip mit Firewall
US9619238B2 (en) 2013-04-15 2017-04-11 Amazon Technologies, Inc. Remote attestation of host devices
US9594638B2 (en) * 2013-04-15 2017-03-14 Amazon Technologies, Inc. Host recovery using a secure store
RU2531861C1 (ru) 2013-04-26 2014-10-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
CN104239820B (zh) * 2013-06-13 2017-11-03 普天信息技术研究院有限公司 一种安全存储设备
US9268948B2 (en) * 2013-06-24 2016-02-23 Intel Corporation Secure access enforcement proxy
AU2014318585B2 (en) 2013-09-12 2018-01-04 Virsec Systems, Inc. Automated runtime detection of malware
US10198572B2 (en) 2013-09-17 2019-02-05 Microsoft Technology Licensing, Llc Virtual machine manager facilitated selective code integrity enforcement
US10114726B2 (en) 2014-06-24 2018-10-30 Virsec Systems, Inc. Automated root cause analysis of single or N-tiered application
WO2015200511A1 (en) 2014-06-24 2015-12-30 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
US9628279B2 (en) * 2014-09-30 2017-04-18 Microsoft Technology Licensing, Llc Protecting application secrets from operating system attacks
US9727591B1 (en) 2015-01-30 2017-08-08 EMC IP Holding Company LLC Use of trust characteristics of storage infrastructure in data repositories
US10325115B1 (en) * 2015-01-30 2019-06-18 EMC IP Holding Company LLC Infrastructure trust index
US10394793B1 (en) 2015-01-30 2019-08-27 EMC IP Holding Company LLC Method and system for governed replay for compliance applications
US9842065B2 (en) * 2015-06-15 2017-12-12 Intel Corporation Virtualization-based platform protection technology
US9858119B2 (en) * 2015-12-08 2018-01-02 International Business Machines Corporation Resource management for untrusted programs
WO2017218872A1 (en) 2016-06-16 2017-12-21 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
US10482034B2 (en) * 2016-11-29 2019-11-19 Microsoft Technology Licensing, Llc Remote attestation model for secure memory applications
TWI617940B (zh) * 2016-12-01 2018-03-11 財團法人資訊工業策進會 資料保護方法與資料保護系統
US20190042797A1 (en) * 2017-12-28 2019-02-07 Intel Corporation Security Hardware Access Management
US11615188B2 (en) 2018-05-02 2023-03-28 Hewlett-Packard Development Company, L.P. Executing software
US10735308B2 (en) * 2018-12-21 2020-08-04 Cisco Technology, Inc. Attestation based routing
CN109922056B (zh) 2019-02-26 2021-09-10 创新先进技术有限公司 数据安全处理方法及其终端、服务器
CN116680037A (zh) * 2019-05-05 2023-09-01 创新先进技术有限公司 数据隔离方法及装置、电子设备
CN110837632B (zh) * 2019-09-29 2023-07-25 深圳市火乐科技发展有限公司 安全检测方法、智能投影仪及相关产品
RU2750626C2 (ru) * 2019-11-27 2021-06-30 Акционерное общество "Лаборатория Касперского" Система и способ управления доступом в электронных блоках управления транспортными средствами
US11941155B2 (en) 2021-03-15 2024-03-26 EMC IP Holding Company LLC Secure data management in a network computing environment
CN113553231B (zh) * 2021-07-01 2023-08-22 江苏电力信息技术有限公司 一种基于安全芯片的嵌入式操作系统运行环境监控方法
US11593490B2 (en) * 2021-07-28 2023-02-28 Dell Products, L.P. System and method for maintaining trusted execution in an untrusted computing environment using a secure communication channel
CN116109521B (zh) * 2023-04-07 2023-07-14 北京建筑大学 局部对抗性攻击启发式防御方法和装置

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5235642A (en) * 1992-07-21 1993-08-10 Digital Equipment Corporation Access control subsystem and method for distributed computer system using locally cached authentication credentials
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5961656A (en) * 1995-10-31 1999-10-05 Sun Microsystems, Inc. Method and apparatus for testing memory devices under load
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US6408391B1 (en) * 1998-05-06 2002-06-18 Prc Inc. Dynamic system defense for information warfare
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6553403B1 (en) * 1998-06-03 2003-04-22 International Business Machines Corporation System, method and computer program product for monitoring in a distributed computing environment
US6505300B2 (en) * 1998-06-12 2003-01-07 Microsoft Corporation Method and system for secure running of untrusted content
US6304262B1 (en) * 1998-07-21 2001-10-16 Raytheon Company Information security analysis system
US6308208B1 (en) * 1998-09-30 2001-10-23 International Business Machines Corporation Method for monitoring network distributed computing resources using distributed cellular agents
US6138239A (en) * 1998-11-13 2000-10-24 N★Able Technologies, Inc. Method and system for authenticating and utilizing secure resources in a computer system
US6330588B1 (en) 1998-12-21 2001-12-11 Philips Electronics North America Corporation Verification of software agents and agent activities
EP1055990A1 (en) * 1999-05-28 2000-11-29 Hewlett-Packard Company Event logging in a computing platform
JP2000347866A (ja) * 1999-06-04 2000-12-15 Nec Corp 分散システムとアクセス制御装置及び方法、並びにアクセス制御用プログラムを記録した記録媒体
US7152165B1 (en) * 1999-07-16 2006-12-19 Intertrust Technologies Corp. Trusted storage systems and methods
US6823456B1 (en) * 1999-08-25 2004-11-23 International Business Machines Corporation System and method for providing trusted services via trusted server agents
EP1085396A1 (en) * 1999-09-17 2001-03-21 Hewlett-Packard Company Operation of trusted state in computing platform
US6775536B1 (en) * 1999-11-03 2004-08-10 Motorola, Inc Method for validating an application for use in a mobile communication device
US7134141B2 (en) * 2000-06-12 2006-11-07 Hewlett-Packard Development Company, L.P. System and method for host and network based intrusion detection and response
GB0020441D0 (en) * 2000-08-18 2000-10-04 Hewlett Packard Co Performance of a service on a computing platform
US6938164B1 (en) * 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
JP2002182560A (ja) * 2000-12-12 2002-06-26 Hitachi Ltd 暗号処理機能を備えた情報サーバ装置
JP2002251374A (ja) * 2000-12-20 2002-09-06 Fujitsu Ltd 情報管理システム、情報管理方法、およびその方法をコンピュータに実行させるプログラム、並びにそのプログラムを記録したコンピュータ読み取り可能な記録媒体
AU2002239889B2 (en) * 2001-01-10 2008-01-31 Cisco Technology, Inc. Computer security and management system
US7313822B2 (en) 2001-03-16 2007-12-25 Protegrity Corporation Application-layer security method and system
EP1273955A1 (de) 2001-07-04 2003-01-08 MUETEC Automatisierte Mikroskopie und Messtechnik GmbH Optische Verschlussvorrichtung
US7206933B2 (en) * 2001-07-09 2007-04-17 Advanced Micro Devices, Inc. Software modem with privileged mode driver authentication
US7131141B1 (en) * 2001-07-27 2006-10-31 At&T Corp. Method and apparatus for securely connecting a plurality of trust-group networks, a protected resource network and an untrusted network
GB2378272A (en) * 2001-07-31 2003-02-05 Hewlett Packard Co Method and apparatus for locking an application within a trusted environment
JP2003099144A (ja) * 2001-09-20 2003-04-04 Fujitsu Frontech Ltd 携帯用電子機器、キーデータ処理方法、記録媒体及びプログラム
CA2460492A1 (en) 2001-09-28 2003-04-10 British Telecommunications Public Limited Company Agent-based intrusion detection system
US7243230B2 (en) * 2001-11-16 2007-07-10 Microsoft Corporation Transferring application secrets in a trusted operating system environment
US7082507B1 (en) * 2002-04-18 2006-07-25 Advanced Micro Devices, Inc. Method of controlling access to an address translation data structure of a computer system
US7359962B2 (en) * 2002-04-30 2008-04-15 3Com Corporation Network security system integration
US7634806B2 (en) * 2002-05-30 2009-12-15 Microsoft Corporation Peer assembly inspection
US7103914B2 (en) * 2002-06-17 2006-09-05 Bae Systems Information Technology Llc Trusted computer system
US20040117318A1 (en) * 2002-12-16 2004-06-17 Grawrock David W. Portable token controlling trusted environment launch
US20040128544A1 (en) * 2002-12-31 2004-07-01 International Business Machines Corporation Method and system for aligning trust relationships with namespaces and policies
US7788495B2 (en) * 2003-06-03 2010-08-31 Microsoft Corporation Systems and methods for automated configuration of secure web site publishing
US7380136B2 (en) * 2003-06-25 2008-05-27 Intel Corp. Methods and apparatus for secure collection and display of user interface information in a pre-boot environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150033368A (ko) * 2013-09-24 2015-04-01 삼성전자주식회사 신뢰하는 실행 환경에서의 보안 도메인 관리 방법 및 장치

Also Published As

Publication number Publication date
EP1505475A3 (en) 2005-03-09
CA2473487C (en) 2013-09-17
RU2004124072A (ru) 2006-01-27
AU2004203528B2 (en) 2010-01-28
TW200519583A (en) 2005-06-16
NZ534064A (en) 2005-08-26
BRPI0403261B1 (pt) 2017-06-13
CN1581073A (zh) 2005-02-16
JP2005056429A (ja) 2005-03-03
IL162997A (en) 2010-05-17
ES2376433T3 (es) 2012-03-13
ATE539411T1 (de) 2012-01-15
TWI356298B (en) 2012-01-11
MY140973A (en) 2010-02-12
BRPI0403261A (pt) 2005-05-31
ES2372989T3 (es) 2012-01-30
RU2390836C2 (ru) 2010-05-27
CA2473487A1 (en) 2005-02-07
AU2004203528A1 (en) 2005-02-24
EP1916614B1 (en) 2011-10-26
AU2004203528B9 (en) 2010-03-04
NO20043285L (no) 2005-02-08
JP4726449B2 (ja) 2011-07-20
MXPA04007483A (es) 2005-06-08
PL1916614T3 (pl) 2012-03-30
KR100949022B1 (ko) 2010-03-23
US20050033980A1 (en) 2005-02-10
SG108962A1 (en) 2005-02-28
EP1505475B1 (en) 2011-12-28
ATE530991T1 (de) 2011-11-15
EP1505475A2 (en) 2005-02-09
PL1505475T3 (pl) 2012-05-31
ZA200405646B (en) 2005-05-25
EP1916614A1 (en) 2008-04-30
US7530103B2 (en) 2009-05-05
CN1581073B (zh) 2012-03-21
CO5600214A1 (es) 2006-01-31

Similar Documents

Publication Publication Date Title
KR100949022B1 (ko) 신뢰 환경으로부터의 신뢰성의 비신뢰 환경으로의 투영
US11514159B2 (en) Method and system for preventing and detecting security threats
KR101176646B1 (ko) 상태 검증을 사용하는 보호된 오퍼레이팅 시스템 부팅을 위한 시스템 및 방법
Bratus et al. TOCTOU, traps, and trusted computing
US20050198645A1 (en) Run-time call stack verification
Iglio Trustedbox: a kernel-level integrity checker
Yalew Mobile device security with ARM TrustZone
Sahita et al. PROTECTING CRITICAL APPLICATIONS ON MOBILE PLATFORMS.
Kimball SecureQEMU: Emulation-based software protection providing encrypted code execution and page granularity code signing
Zhao Authentication and Data Protection under Strong Adversarial Model
De Win et al. Security Middleware for Mobile Applications
Daniel et al. Launch Time Application Security: The Trusted Approach

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130218

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140217

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150217

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 9