KR101149998B1 - 애플리케이션 분할을 통한 하나의 애플리케이션 내로의 고보증 특징들의 통합 - Google Patents

애플리케이션 분할을 통한 하나의 애플리케이션 내로의 고보증 특징들의 통합 Download PDF

Info

Publication number
KR101149998B1
KR101149998B1 KR1020040070788A KR20040070788A KR101149998B1 KR 101149998 B1 KR101149998 B1 KR 101149998B1 KR 1020040070788 A KR1020040070788 A KR 1020040070788A KR 20040070788 A KR20040070788 A KR 20040070788A KR 101149998 B1 KR101149998 B1 KR 101149998B1
Authority
KR
South Korea
Prior art keywords
data
environment
software
wrapper
software object
Prior art date
Application number
KR1020040070788A
Other languages
English (en)
Other versions
KR20050039541A (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 KR20050039541A publication Critical patent/KR20050039541A/ko
Application granted granted Critical
Publication of KR101149998B1 publication Critical patent/KR101149998B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)

Abstract

애플리케이션 분할은 종래의 애플리케이션내로 안전 특징을 통합하는데 사용된다. 애플리케이션의 기능은 주어진 액션이 민감 데이터의 처리를 수반하는지 수반하지 않는 지에 따라 2개의 세트로 분할된다. 분리된 소프트웨어 객체들(프로세서들)은 이들 2개의 세트의 액션을 실행하도록 작성된다. 신뢰 프로세서는 안전 데이터를 처리하고, 고보증 환경에서 실행한다. 다른 프로세서가 안전 데이터에 봉착하면, 그 데이터는 신뢰 프로세서로 보내진다. 데이터는, 데이터가 신뢰 프로세서로 라우트될 수 있게 하고, 데이터가 신뢰 프로세서 이외의 소정의 엔티티에 의해 판독되지 않게 하는 방식으로 래핑된다. 객체들을 래핑하고, 그들을 정확한 프로세서로 라우트하며, 신뢰할 수 있는 것으로 알려진 기본 구성요소로 다시 이끌어가는 신뢰 체인을 통해 객체들의 무결성이 입증될 수 있게 하는 기반구조가 제공된다.
애플리케이션 분할, 기본 구성요소, 고보증 환경, 래퍼, 라우트, 데이터 객체, 소프트웨어 객체

Description

애플리케이션 분할을 통한 하나의 애플리케이션 내로의 고 보증 특징들의 통합{INTEGRATION OF HIGH-ASSURANCE FEATURES INTO AN APPLICATION THROUGH APPLICATION FACTORING}
도 1은 본 발명의 실시예들이 구현될 수 있는 예시적인 컴퓨팅 환경의 블록도.
도 2는 구성 기능으로 분할되는 애플리케이션의 블록도.
도 3은 애플리케이션의 상이한 구성요소들로의 데이터 라우팅(routing)을 도시한 블록도.
도 4는 분할가능 애플리케이션용 사용자 인터페이스의 한 예를 도시한 블록도.
도 5는 분할된 애플리케이션의 사용을 지원하는 예시적인 아키텍처의 블록도.
도 6은 분할된 애플리케이션이 사용될 수 있는 예시적인 환경들의 계층을 도시한 블록도.
도 7은 분할된 애플리케이션의 사용을 지원하는 환경에서 사용하기 위한 예시적인 데이터 객체의 블록도.
도 8은 데이터가 분할된 애플리케이션에서 프로세스될 수 있는 예시적인 프 로세스의 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
100 : 컴퓨터 환경
110 : 컴퓨터
135 : 애플리케이션
206(1)~206(n+m) : 분할부
400 : 사용자 인터페이스
402(1)~402(4) : 항목
502(1), 502(2) : 환경
504(1)~504(4) : 프로세서
508 : 기본 구성요소
510 : 참조 모니터
602(1)~602(4) : 운영 채계
700 : 데이터 객체
702 : 데이터 항목
본 발명은 일반적으로 컴퓨팅에 관한 것이다. 더욱 구체적으로, 본 발명은 일정수준의 신뢰 또는 보안을 필요로 하는 동작들이 통상의 비안전(non-secure) 소 프트웨어 내로 통합될 수 있게 하는 방식으로 애플리케이션의 분할을 지원하는 메카니즘을 제공한다.
컴퓨팅 분야에서, 한편으로는 고도의 보안을 제공하는 시스템들과, 다른 한편으로는 다수의 기능적 특징 및 고도의 확장가능성을 제공하는 시스템들 간에 상반성이 있다. 컴퓨팅 분야에서의 보안은 고도의 확실성을 갖고 컴퓨터 시스템의 비헤비어(behavior)(즉, 소프트웨어 및 하드웨어의 비헤비어)를 이해하고 예측할 수 있는 능력, 즉 시스템이 부주의한 오용 또는 계획적인 공격을 통해 설계된 것과 다른 소정의 방식으로는 동작할 수 없게 하는 것을 보장할 수 있는 능력에 따라 좌우된다. 예를 들어, 저작권 자료를 복사로부터 보호하도록 설계된 컴퓨터 시스템은 시스템이 실제로 설계된대로 실행할 수 있을지 우리에게 보장될 수 있는 한도까지 신뢰할 수 있을 뿐이다. 그러나, 큰 오픈 아키텍처는 다루기 힘들고 복잡해지려는 경향이 있어서, 그들의 비헤비어를 분석하기 어렵게 만드는데, 그것은 그 비헤비어에 영향을 미칠 수 있는 다수의 변수가 있기 때문이다. 현재, 전체(full)-서비스 운영 체계 또는 워드 프로세서와 같은 크고 복잡한 프로그램은 고도의 확실성으로 검증된 비헤비어를 가질 수 있을 것 같지 않아 보인다. 비헤비어가 광범위한 조건 및 종류의 공격 하에서 테스트되고 검증될 수 있는 작은 프로그램을 기입하는 것은 가능하지만, 이러한 프로그램은 제한된 세트의 기능을 실행할 수 있을 뿐이다. 그러므로, 다량의 기능성 제공과 고도의 보안성 제공 사이에 상반성이 존재한다.
제안되어 있는 한가지 해결책은 2개의 시스템-즉, 고도의 기능을 갖는 하나 의 큰 시스템 및 고도의 보안을 갖는 다른 하나의 작은 시스템-을 병행하여 실행하는 것이다. 그러므로, WINDOWS XP와 같은 전체-서비스 운영 체계는 작은 고 보증 운영 체계측을 따라 실행될 수 있다. 고도의 신뢰성으로 엄격하게 제어된 방식으로 실행될 필요가 있는 전체-서비스 운영 체계에서 이벤트가 발생한 때마다, 태스크는 고 보증 운영 체계로 넘겨질 수 있었다.
운영 체계는 그외 다른 프로그램이 실행할 수 있는 환경을 제공한다. 그러나, 2개의 운영 체계가 나란히 존재할 수 있다는 단순한 사실은 주어진 애플리케이션이 양쪽 환경을 사용할 수 있게 하는 방법의 문제를 처리하지는 못한다. 애플리케이션이, 대부분의 기능(즉, 고도의 보안을 필요로 하지 않는 것들)을 실행하기 위해서 전체-특징 환경을 사용하고, 고도의 보안을 필요로 하는 기능을 실행하기 위해서 고 보증 환경을 사용하는 것이 바람직할 것이다. 게다가, 이들 2개의 환경을 통합된 사용자 경험을 제공하는 방식으로 사용하는 것이 바람직하다.
상술된 것에 비추어, 종래의 결점을 극복하는 시스템이 필요하다.
본 발명은 애플리케이션의 기능이 여러 부분-즉, 어느 정도의 보안 또는 보호를 필요로 하는 이들 액션, 및 그렇지 않은 것들-로 분할될 수 있는 메카니즘을 제공한다. 본 발명에 따르면, 한 애플리케이션은 최소한 2개의 소프트웨어 객체: 전체 특징(그러나 저보증) 환경에서 실행하는 하나의 소프트웨어 객체, 및 고 보증(그러나, 제한된 특징) 환경에서 실행하는 다른 하나의 소프트웨어 객체로 구현된다. 전체 특징 환경에서 객체가 실행될 때, 객체는 어느 정도의 보호를 필요 로 하는 데이터에 봉착할 수 있다(예를 들어, 데이터는 비밀을 필요로 할 수 있고, 또는 데이터가 부당하게 변경되었는 지를 판정한다는 점에서 검증가능하게 될 필요가 있을 수 있다). 전체 특징 환경에서 실행하는 소프트웨어 객체가 그러한 데이터에 봉착할 때, 그 소프트웨어 객체는 데이터가 고 보증 환경으로 넘겨질 수 있게 한다. 그러면, 고 보증 환경에서 동작하는 소프트웨어 객체는 그 데이터를 처리한다. 데이터가 프로세스되는 동안에 요구되는 데이터의 임의의 입력, 출력 또는 저장은 고 보증 환경의 외부에서 발생한 이벤트들에 의해 데이터를 부당하게 변경하거나 가로채지 못하게 하기 위해, 고 보증 환경을 사용하여 실행된다.
2개의 환경은 2개의 환경이 통신하는데 필요한 기반구조(또는 "플러밍(plumbing)")을 제공하는 기본 구성요소(base component)에 의해 호스트된다. 예를 들어, 고 보증 환경에서 프로세스될 필요가 있는 데이터 객체는 기본 구성요소에 의해 생성된 래퍼(wrapper)를 가질 수 있다. 이 래퍼는 데이터 객체가 프로세싱을 위해 라우트되어야 할 환경을 식별할 수 있고, 또한 데이터 객체가 기본 구성요소에 의해 래핑된 이후로 부당하게 변경되지 않았다는 사실의 검증을 가능하게 하는 시일(seal)을 제공할 수 있다. 그러므로, 소프트웨어 객체는 데이터 객체를 기본 구성요소로 보낼 수 있고, 기본 구성요소는 (1) 데이터 객체가 보내져야 하는 환경을 판단할 수 있고, (2) 데이터 객체가 작성되었기 때문에 변경되지 않았다는 것을 검증할 수 있다. 이 후자의 액션은 객체의 신뢰가능성이 플랫폼을 가로질러 확립될 수 있게 하는 기반구조를 제공한다: 객체가 (제1 기본 구성요소를 갖는) 제1 기계 상에서 작성되면, 제1 기본 구성요소는 객체가 이 기본 구 성요소에 알려진 고 보증 환경에서 생성된 정확한 객체라는 증거로서 객체에 서명을 한다. 그 다음, 객체가 다른 기계 상에서 오픈되면, 다른 기계는 서명을 검증할 수 있고, 그들이 서명자를 신뢰하는 지에 관한 판정을 할 수 있다. (예를 들어, 일부 기계들 및/또는 기본 구성요소들은 그들의 호스트된 환경의 정확한 비헤비어를 보장하는데 있어서 다른 기계들보다 잘할 수 있고; 각각의 기계는 주어진 데이터 객체가 작성된 플랫폼을 신뢰하는 지의 여부를 단독으로 결정할 수 있다.
본 발명의 그외 다른 특징은 후술된다.
양호한 실시예에 관한 다음의 상세한 설명뿐만 아니라, 상술된 개략적인 설명은 첨부된 도면과 함께 읽으면 더욱 잘 이해될 것이다. 본 발명을 설명하기 위해, 본 발명의 예시적인 구성이 도면에 도시되는데; 본 발명은 개시된 특정 방법 및 수단에 제한되지 않는다.
개요
본 발명은, 애플리케이션이 안전 및 비안전 구성요소들로 분할될 수 있게 하고, 애플리케이션에 관하여 통합된 사용자 경험을 제공하기 위해 이들 구성요소들이 함께 동작할 수 있게 하는 메카니즘을 제공한다. 예를 들어, 워드 프로세싱 프로그램은 워드 프로세서와 연관된 기능들인, 레이아웃, 편집, 인쇄, 맞춤법 검사, 문법 검사 등의 대부분을 실행하는 비안전 구성요소, 및 소정 방식의 보호를 필요로 하는 데이터 객체의 표시 및 편집을 가능하게 하는 안전 구성요소로 분할될 수 있다. 비안전 구성요소는 전형적인 상용 운영 체계와 같은 통상의 오픈 환경에서 실행할 수 있다. 안전 구성요소는 소정 유형들의 소프트웨어가 정확하게 동작할 수 있다는 높은 보증을 갖고 실행할 수 있게 하는 고 보증 환경에서 실행할 수 있다. 본 발명은 이러한 시나리오와 관련하여 여러가지 특징을 제공한다. 첫째, 본 발명은, 사용자의 견지에서, 사용자가 되도록이면 단일의 애플리케이션을 사용하는 것으로 생각되도록, 2개의 구성요소를 가로질러 통합된 사용자 경험을 제공한다. 둘째, 본 발명은 애플리케이션이 안전 및 비안전 데이터를 처리할 수 있게 하고, 그러한 데이터가 분할부들을 가로질러 사용될 수 있게 하는 기반구조 또는 "플러밍"을 제공한다.
사용자 경험에 관해서는, 일반적으로 사용자가 애플리케이션의 비안전 부분을 사용하기 시작하는 경우이다. 이러한 사용 과정에서 생기는 데이터(예를 들어, 워드 프로세싱 문서 내의 민감한 텍스트 항목, 스프레드시트 내의 민감한 금융 계산 등)는, 데이터가 비안전 부분에 의해 실제로 표시될 수 없더라도, 애플리케이션의 비안전 부분에 의해 소정의 방식으로 사용자 경험 내로 양호하게 통합된다. 예를 들어, 워드 프로세싱 문서 내의 민감한 또는 비밀의 데이터 항목인 경우, 워드 프로세서의 비안전 부분은 텍스트가 표시될 수 없더라도 텍스트가 존재한다는 사실을 나타내는 소정 유형의 그래픽(예를 들어, 텍스트를 나타내는 구불거리는 곡선)과 함께, 항목을 나타내는 박스를 표시할 수 있다. 한가지 예에서, 사용자가 박스 또는 그래픽 위를 클릭하면, 애플리케이션의 안전 부분은 박스가 발생하는 스크린 상의 동일한 위치에 텍스트를 표시하도록 호출될 수 있다. 그러므로, 애플리케이션의 안전 및 비안전 부분은 사용자 경험에 관하여 통합된다.
기반구조에 관하여, 본 발명은 한 환경 내의 데이터 객체가 다른 환경으로 라우트될 수 있게 하는 메카니즘을 제공한다. 전형적으로, 비밀의 또는 민감한-따라서 안전 부분에 의해 처리될 필요가 있는- 데이터 객체는 비안전 부분이 그것을 판독할 수 없도록 암호화될 수 있다. 그러므로, 이러한 객체는 전형적으로 데이터 객체의 생성에 참여한 각 구성요소에 의해 일련의 래퍼 내에 래핑될 수 있다. 각각의 래퍼는 래퍼 내부의 데이터 무결성이 검증될 수 있게 하는 시일뿐만 아니라, 래퍼에 부가된 구성요소의 식별자를 양호하게 포함한다. 외측의 래퍼는 래퍼를 작성한 기계 상의 신뢰의 본질부에 의해, 즉 단일 기계 상에서 여러 환경을 호스트하고, 그것의 비헤비어에 관해 신뢰할 수 있도록 소정의 잘 알려진 기관에 의해 검증된 기본 구성요소에 의해 부가되는 것이 바람직하다. 이 외측 래퍼는 기본 구성요소가 라우터로서 작용할 수 있게 한다. 그러므로, 비안전 부분이 객체에 봉착할 때, 비안전 부분은 객체를 판독할 수는 없지만, 객체를, 프로세싱하기 위한 다른 환경으로 보내질 필요가 있는 것으로 식별할 수는 있다. 그러므로, 비안전 부분은 객체를 기본 구성요소로 보내고, 그러면 기본 구성요소는 환경이 래퍼 내에서 식별되는 것에 기초하여 객체를 정확한 환경으로 라우트한다.
부수적으로, 객체가 제1 기계 상에서 작성되어 제2 기계 상에서 오픈되면, 제2 기계는 외측 래퍼의 일부분인 서명을 확인함으로써 객체의 신뢰성을 판단할 수 있다. 기본 구성요소가 객체를 래핑하고 시일할 때, 객체의 작성 동안에, 기본 구성요소가 작성 프로세스를 외부의 부당한 변경으로부터 보호하는 면에서 그 기능을 정확하게 실행했다는 것을 기본 구성요소는 본질적으로 증명한다는 것을 알아야 된 다. (기본 구성요소는 전형적으로 고 보증 환경이 자신을 부당한 변경으로부터 보호할 수 있게 하는 메카니즘-예를 들어, 신뢰 프로세서 모듈(TPM), 메모리 분리 메카니즘 등을 제공한다.) 몇몇 기본 구성요소들은 이 기능을 다른것들보다 잘 실행할 수 있으므로, 데이터 객체가 오픈되는 소정의 기계는 객체가 실제로 그 객체에 적용되는 보안 요구사항에 따라 작성되었다는 것을 신뢰할 것 인지의 여부에 대해 판정을 할 수 있다. 예를 들어, 객체가 키보드에 의해 입력된 텍스트를 구성하면, 고 보증 환경은 안전한 방식으로 키보드로부터 입력을 수신할 수 있지만, 안전하게 키보드 입력을 수신할 수 있는 환경의 능력은 키보드로부터 고 보증 환경으로의 경로를 보호할 수 있는 기본 구성요소의 능력에 따라 좌우될 수 있다. 래퍼가 특정 기본 구성요소에 의해 생성된 시일 또는 서명을 포함하기 때문에, 래퍼는 데이터 객체가 작성된 기계의 추정된 보안에 데이터 객체가 기초하고 있다는 것을 얼마나 신뢰할 수 있는 지에 관해 상이한 기계가 판정을 할 수 있는 신뢰 모델을 지원한다.
다음은 분할된 애플리케이션의 사용을 지원하는 시스템, 방법 및 메카니즘을 설명한다.
예시적인 컴퓨팅 장치
도 1은 본 발명의 실시예가 구현될 수 있는 예시적인 컴퓨팅 환경을 나타낸다. 컴퓨팅 시스템 환경(100)은 단지 적절한 컴퓨팅 환경의 일 예이며 본 발명의 사용 또는 기능의 범위에 제한을 가하도록 의도된 것은 아니다. 컴퓨팅 환경(100)은 예시적인 동작 환경(100)에 도시된 구성요소들 중의 임의의 하나 또는 조합에 관하여 임의의 종속성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
본 발명은 다수의 기타 범용 또는 전용 컴퓨팅 시스템 환경 또는 구성과 함께 동작가능하다. 본 발명과 함께 사용하기에 적합하게 될 수 있는 널리 공지된 컴퓨팅 시스템, 환경 및/또는 구성의 예는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서 기반의 시스템, 셋탑 박스, 프로그램가능 소비자 전자제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 내장형 시스템, 임의의 상기 시스템 또는 장치를 포함하는 분산형 컴퓨팅 환경 등을 포함하는데, 이에 한정되지 않는다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어들의 일반적인 문맥으로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 실행하거나 특정 추상 데이터형을 구현하는 루틴, 프로그램, 객체, 구성요소, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크 또는 기타 데이터 송신 매체를 통해 링크되는 원격 프로세싱 장치에 의해 태스크가 실행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈 및 기타 데이터는 메모리 저장 장치를 포함하는 구내 및 원격 컴퓨터 저장 매체 내에 위치될 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 구성요소들로는, 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 구성요소를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)가 포함될 수 있지 만, 이에 한정되는 것은 아니다. 프로세싱 유닛(120)은 멀티-스레디드(threaded) 프로세서 상에 지원된 것들과 같은 다수의 논리적 프로세싱 유닛들을 나타낼 수 있다. 시스템 버스(121)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로컬 버스, 및 (메자닌(Mezzanine) 버스로도 알려진) 주변 구성요소 상호접속(PCI) 버스를 포함하지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 또한 통신 장치들 사이에서 점 대 점 접속, 스위칭 패브릭(fabric) 등으로서 구현될 수 있다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 억세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 둘다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 둘다 포함한다. 컴퓨터 저장 매체는 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, 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하지만, 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 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)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함할 수 있다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 그 외의 네트워크를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 기업 전반의 컴퓨터 네트워크, 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서(한정하고자 하는 것은 아님), 도 1은 메모리 장치(181)에 상주하는 원격 응용 프로그램(185)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있다는 것을 알 수 있을 것이다.
분할된 애플리케이션
응용 프로그램과 같은 소프트웨어는 전형적으로 여러가지 서로다른 기능을 실행하고, 여러가지 서로다른 유형의 데이터를 처리한다. 이러한 점에서, 애플리케이션은 상이한 기능들의 모임으로 보여질 수 있다. 애플리케이션을 여러가지 상이한 기능으로 분류하는 것이 유용할 수도 있으므로, 이들 상이한 기능은 따로 실행될 수 있다(예를 들어, 상이한 보안 레벨을 제공하는 환경에 할당될 수 있다). 도 2는 애플리케이션이 여러가지 상이한 기능으로 분류될 수 있는 방법을 도시한 것이다.
애플리케이션(135)은 여러가지 상이한 기능(202(1), 202(2),...,202(n), 202(n+1), 202(n+2),...,202(n+m))을 포함한다. 예를 들어, 애플리케이션(135)은 워드 프로세싱 프로그램일 수 있고, 분리된 기능은 편집, 뷰잉(viewing), 인쇄, 변경 추적 등일 수 있다. 도 2는 애플리케이션(135)을 n+m개의 분리된 기능을 갖는 것으로 도시하고 있는데, 분리된 기능인지 결정하는데 있어서 약간의 재량이 있다는 것을 알기바란다. 예를 들어, 모든 인쇄 동작은 하나의 기능으로 보여질 수 있거나, 그렇지 않으면 인쇄는 2개 이상의 상이한 기능(예를 들어, 페이지 인쇄 대 전체 문서 인쇄)을 포함하는 것으로 보여질 수 있다. 부수적으로, 후술되는 바와 같이, 동일한 기본 동작은 어떤 유형의 데이터가 조작되고 있는 지에 따라 다수의 기능으로 보여질 수 있다. (예를 들어, 문서를 뷰잉하는 기본 동작은 뷰잉되고 있는 데이터가 안전 데이터인지 비안전 데이터인지에 따라, 2개의 상이한 기능 중의 하나로 간주될 수 있다.) 그러므로, 어떤 점에서 안전한 것, 그렇지 않은 것의 2가지 분리된 뷰잉 기능이 있을 수 있다. 본질적으로, 프로그램을 그 구성 기능으로 분류하는 것은 프로그램이 행하는 여러가지 일들(및/또는 프로그램이 처리하는 여러가지 상이한 유형의 데이터)의 주위에 경계를 긋는 일로서, 일반적으로 이러한 경계가 그어지는 방식에 관한 특정 요구사항은 없다.
한 예에서, 기능(202(1) 내지 202(n))이 제1 "분할"부(206(1))이고, 기능(202(n+1) 내지 202(n+m))이 제2 분할부(206(2))가 되도록 기능들은 함께 그룹화될 수 있다. 동일한 분할부 내의 기능들이 유사하게 처리될 수 있도록 기능들을 이러한 방식으로 그룹화하는 것이 편리할 수 있다. 예를 들어, 분할부(206(1))는 통상의 비안전 데이터를 수반하는 애플리케이션(135)의 기능을 포함할 수 있는 반면, 분할부(206(2))는 비밀 또는 안전 데이터(또는 이와 달리 소정 레벨의 보호를 요구 하는 데이터)를 수반하는 애플리케이션(135)의 기능을 포함할 수 있다. 그러므로, 분할부(206(1)) 내의 기능은 통상의 오픈 환경(예를 들어, 통상의 상용 운영 체계에 의해 제공된 환경)에서 실행될 수 있는 반면에, 분할부(206(2)) 내의 기능은 고 보증 환경에서 실행될 수 있다. (고 보증 환경은 더욱 구체적으로 후술된다.)
도 3은 하나의 애플리케이션(135)이 안전 및 비안전 데이터 둘다 처리할 수 있게 하기 위해 분할이 사용될 수 있는 방법의 한 예를 도시한 것이다. 도 3의 예에서, 애플리케이션(135)은 고도의 보호를 요구하는 조작(302)(예를 들어, 비밀 데이터를 수반하는 조작)을 실행하고, 또한 낮은 정도의 보호를 요구하거나 보호할 필요가 없는 조작(304)(예를 들어, 비밀 데이터를 수반하지 않는 조작)을 실행한다. (데이터 "조작(operation)"은 이 예에서 데이터의 입력 또는 출력 실행, 데이터에 관한 계산 실행 등과 같은 소정 유형의 데이터 처리를 포함할 수 있다.) 이 예에서, 비밀 데이터 조작을 수반하지 않는 기능은 애플리케이션(135)의 분할부(206(1))에 의해 처리되고, 비밀 데이터(또는 이와 달리 소정 유형의 보호를 요구하는 데이터) 조작을 수반하는 기능은 분할부(206(2))에 의해 처리된다. 예를 들어, 애플리케이션(135)이 워드 프로세싱 프로그램이면, 통상의(비보호) 문서의 표시는 분할부(206(1))에 의해 실행될 수 있고, 비밀 문서의 표시는 분할부(206(2))에 의해 실행될 수 있다. 다른 예로서, 애플리케이션(135)이 주식 거래 프로그램이면, 분할부(206(1))는 사용자가 현재의 주식시세를 알아볼 수 있게 하는 기능을 포함할 수 있고, 분할부(206(2))는 사용자 인증후에(이 경우에, 사용자 인증서 및 그 금융계정의 상세는 일종의 비밀 데이터임) 사용자가 주식을 매매할 수 있게 할 수 있다.
도 3은 한 애플리케이션의 상이한 분할이 안전 및 비안전 데이터를 처리하는데 사용될 수 있다는 것을 설명한 것으로, 도 3은 분할된 애플리케이션을 구현하거나 사용하기 위한 특정 메카니즘에 제한되지 않는다는 것을 알기바란다. 예시적인 아키텍처는, 애플리케이션의 분할을 지원하고, 통합된 사용자 경험을 제공하는 방식으로 분할의 사용을 지원하는 도 4-8과 관련하여 후술된다.
예시적인 분할 애플리케이션
상술된 바와 같이, 애플리케이션의 여러가지 기능은 소정의 기준에 따라 분할될 수 있다. 도 3의 예에서, 애플리케이션의 기능은 애플리케이션이 안전 데이터를 처리하는지 비안전 데이터를 처리하는지에 따라 분할된다. 애플리케이션이 분할될 때, 여러가지 분할을 단일의 사용자 경험 내로 통합하는 것이 바람직하다. 도 4는 분할된 애플리케이션의 예시적인 사용자 인터페이스를 도시한 것이다. (본 발명이 어떤 특정의 보호 유형에 제한되지는 않지만, "안전한" 데이터는 소정 유형의 보호를 요구하는 데이터를 칭하는 것이라는 것을 알기 바란다. 예를 들어, 데이터가 암호화될 수 있는 경우에, 데이터는 "비밀"이라는 점에서 보호를 필요로 할 수 있다. 다른 예로서, 데이터에 서명이 될 수 있는 경우에, 데이터는 검증가능하다는 점에서-즉, 데이터가 소정의 기준 시점 이후에 변경되었는 지를 판단할 수 있는 능력이 있다는 점에서- 보호를 필요로 할 수 있다.)
사용자 인터페이스(400)는 워드 프로세싱 프로그램용 인터페이스이다. (워드 프로세싱 프로그램은 결코 유일한 예는 아니지만, 애플리케이션의 편리한 예라 는 것을 알기 바란다.) 도 4의 예에서, 사용자 인터페이스(400)는 워드 프로세싱 문서의 일부일 수 있는 여러가지 항목(402(1) 내지 402(5))을 표시한다. 항목(402(1))은 통상의 비안전 텍스트이다. 항목(402(2))은 비안전 그래픽(404)이다. 항목(402(3), 402(4) 및 402(5))은 안전한 텍스트의 항목이다. 애플리케이션의 비안전 분할부는 안전한 데이터의 처리를 수반하지 않는 모든 프로세싱을 실행한다. 이 예에서, 이 프로세싱은 모든 항목(심지어 안전 항목까지)의 레이아웃뿐만 아니라, 비안전 항목(402(1) 및 402(2))의 표시(및 가능한 편집, 인쇄, 저장 등)를 포함한다. 비안전 분할부는, 항목(402(3), 402(4) 및 402(5))의 내용이 안전 데이터일 수 있지만, 이들 항목의 존재가 비안전한 것으로 생각되기 때문에, 안전 항목들을 배열할 수 있다. 그러므로, 비안전 분할부는 항목(402(3) 내지 402(5))을 판독불가능한 구불거리는 곡선(405)으로 표시함으로써, 사용자에게 비안전 분할부가 프로세스할 수 없는 내용에 관하여 최소한 약간의 사용자 경험을 제공할 수 있다.
사용자가 내용 항목(402(3), 402(4) 및 402(5))을 보고자 하는 경우, 사용자는, 예를 들어 주어진 내용 항목을 나타내는 구불거리는 곡선(405) 위를 클릭할 수 있다. 이 액션은 안전한 분할부가 불러내질 수 있게 할 수 있다. 그 다음, 안전한 항목들 중의 한 항목 내에 포함된 내용은 처리를 위해 안전 분할부로 넘겨질 수 있다. 한 예에서, 안전 분할부는 이때 비안전 분할부에 의해 배열된 내용를 위한 장소 위에 겹쳐진 윈도우 내에 실제 내용 항목을 표시할 수 있다 - 예를 들어, 안전 분할부는 내용 항목(402(3))을 표시할 때, 내용 항목(402(3))을 나타내는 구불거리는 곡선(405)이 미리 표시되어 있던 영역의 상부에 그 내용 항목의 이미지를 배치함으로써 그렇게 할 수 있다. 상술된 시나리오는 2개의 서로다른 부분의 소프트웨어(즉, 안전 및 비안전 분할부)와 사용자의 상호작용을 수반하지만, 사용자에게 자신이 하나의 애플리케이션과 상호작용하고 있는 것으로 보이게 함으로써, 2개의 분할부를 가로질러 통합된 사용자 경험을 제공할 수 있다.
도 4는 분할된 애플리케이션이 워드 프로세싱 프로그램인 예를 도시한 것이다. 기타 예들은 다음을 포함한다:
사용자가 비안전 분할부에서 식을 입력하거나 표를 만들 수 있는 스프레드시트가 있다(하지만, 이 경우에 조작될 실제 데이터는 안전 분할부에서만 이용가능함). 그러므로, 비안전 분할부는 각 셀 내에 소정의 위치보유자 데이터(예를 들어, "xxxx")를 표시할 수 있다. 셀 내의 데이터의 평가 및 렌더링은 애플리케이션의 안전 분할부에 의해 실행된다. 사용자가 "계산" 버튼을 누르면, (안전 분할부에 의해 생성된) 윈도우는 팝업하고, 안전 분할부에 이용가능한 하위 데이터에 기초하여 계산되는 적절한 행 및 열에 셀 값을 표시한다. 이러한 구현 시에, 안전 분할부는 평가 엔진 및 (단순한) 렌더링 루틴을 가질 수 있지만, 스프레드시트의 사용자 인터페이스, 헬프 윈도우, 포뮬러 빌더(formular builder) 등의 기타 양상을 편입시킬 필요는 없을 것이다.
기능들이 안전 및 비안전 분할부에 할당되는 증권 거래 애플리케이션이 있다. 예를 들어, 거래 그래프 및 주식 정보(공용임)의 표시는 비안전 분할부에 의해 실행될 수 있다. 한편, 안전 분할부는 사용자가 주식 거래 심볼, 매매한 주식 수 및 시세를 입력할 수 있게 하고, 서버의 식별정보를 먼저 검증한 후에, 이 정보 를 원격 거래 서버에 보낸다.
이미지 포맷(예를 들어, 포터블 문서 포맷, 또는 "PDF") 내의 문서를 출력하는 워드 프로세서가 있다. 안전 분할부는 이미지를 판독하고 표시할 수 있다. 이러한 문서의 렌더링은 문서의 "팩시밀리"라 불린다. 하위 워드 프로세싱 문서(즉, 그대로의 이미지 대신에, 포매팅 코드 및 텍스트 문자를 포함하는 문서 버전) 및 그 팩시밀리는 비안전 분할부에 의해 안전 분할부에 보내지고, 안전 분할부는 팩시밀리를 표시한다. 사용자는 안전 환경 내의 안전 서명 에이전트를 사용하여 팩시밀리(또는 팩시밀리 및 문서의 다이제스트)에 서명한다. 서명된 팩시밀리("팩시밀리-0"이라 함) 및 하위 문서는 비안전 분할부에 블럽(blol)으로 복귀된다. 검증기(verifier)가 문서, 팩시밀리-0 및 팩시밀리의 서명을 수신하면, 검증기는 먼저, 하위 워드 프로세싱 문서에 기초하여 팩시밀리의 새로운 카피(팩시밀리-1이라 함)를 렌더한다. 검증기는 팩시밀리가 동일한지, 그리고 팩시밀리-0 상의 서명이 유효한지 검증하는 안전 분할부로 팩시밀리-0, 팩시밀리-1, 워드 문서 및 서명을 송신한다. 이 모델은 문서의 비밀을 제공하지 않지만(문서의 팩시밀리-1이 비안전 분할부에 의해 여전히 렌더될 수 있기 때문에), 문서의 무결성-즉, 문서는 오리지널로 작성된 것이고 변경되지 않았다는 사실을 검증하는 기능을 한다.
도 5는 애플리케이션의 분할을 지원하는 아키텍처를 도시한 것이다. 도 5에는, 소프트웨어가 실행할 수 있는 2개의 환경(502(1) 및 502(2))이 있다. 이 예에서는, 4개의 분리된 프로세서(504(1), 504(2), 504(3) 및 504(4))가 있다. 이와 관련하여, "프로세서"는 마이크로프로세서를 칭하는 것이 아니라, 애플리케이션용 데이터를 소정의 방식으로 프로세스하는 소프트웨어 구성요소를 칭하는 것이다. 프로세서(504(1) 및 504(2))는 환경(502(1))에서 실행하고, 프로세서(504(3) 및 504(4)는 환경(502(2))에서 실행한다. 예를 들어, 프로세서(504(1) 및 504(3))는 각각 단일 워드 프로세싱 애플리케이션의 비안전부 및 안전부일 수 있다. 기본 구성요소(508)는 2개의 환경이 하나의 기계 상에서 공존할 수 있도록 환경(502(1) 및 502(2))을 호스트한다. 본 발명은 소정의 특정 유형의 기본 구성요소(508)에 제한되지 않고; 기본 구성요소(508)의 몇몇 예로는 가상 기계 모니터(VMM), 엑소커널(exokernel), 마이크로커널, 또는 하이퍼바이저(hypervisor)가 있다. 예를 들어, 환경(502(1) 및 502(2))은 VMM 또는 하이퍼바이저에 의해 호스트된 분리된 운영 체계일 수 있다. 다른 예로서, 기본 구성요소(508)는 운영 체계 중의 하나-예를 들어, 어떤 사용자 기능을 제공하고, 또한 자신과, 다른(저보증) 운영 체계 사이를 분리시키는 고 보증 운영 체계일 수 있다.
기본 구성요소(508)의 일부로서 실행하는 한 구성요소는 참조 모니터(510)이다. 참조 모니터(510)는 주어진 데이터 객체를 프로세싱을 위한 정확한 환경으로 라우트하는 기능을 실행한다. 예를 들어, 레이블된(labeled) 데이터(506)는 애플리케이션의 실행 동안에 봉착(생성 또는 입력)될 수 있고, 참조 모니터(510)는 레이블된 데이터가 정확한 환경으로 라우트되게 한다. 레이블된 데이터(506)는 레이블된 데이터가 어느 환경으로 라우트되어야 하는 지를 참조 모니터(510)가 판정할 수 있게 하는 식별 태그와 연관된다. 부수적으로, 레이블된 데이터(506)는 또한 데이터가 프로세싱을 위해 어느 프로세서에 제공되어야 하는 지를 수신지 환경이 판정할 수 있게 하는 추가 태그를 포함할 수 있다. 레이블된 데이터(506)의 예시적인 구조는 도 7과 관련하여 후술된다.
대부분의 전형적으로 레이블된 데이터가 한 환경에서 봉착되어 다른 환경으로 보내질 수 있을 지라도, 레이블된 데이터(506)는 소정의 위치에서 봉착(또는 생성, 또는 입력)될 수 있다. 예를 들어, 워드 프로세싱 애플리케이션의 비안전부는 소정의 비밀 텍스트를 포함하는 레이블된 데이터에 봉착할 수 있다. 워드 프로세싱 애플리케이션은 이때 도 4에 도시된 방식으로(예를 들어, 판독불가능한 구불거리는 곡선으로) 텍스트의 표현을 표시할 수 있다. 사용자가 (예를 들어, 데이터용으로 예비할당된 영역을 클릭함으로써) 실제 텍스트를 표시하고자 한다면, 애플리케이션의 비안전 분할부(예를 들어, 환경(502(1))에서 실행하는 프로세서(504(1))는 레이블된 데이터(506)를 참조 모니터(510)에 제공할 수 있고, 그 다음 참조 모니터(510)는 데이터를 환경(502(2))에 제공할 수 있다. 그 다음, 환경(502(2))은 데이터를 정확한 프로세서(예를 들어, 프로세서(504(3))로 라우트할 수 있고, 그 다음 프로세서(504(3))는 도 4와 관련하여 상술된 방식으로 스크린 상의 적절한 위치에 데이터를 표시할 수 있다.
도 5의 모델 내에서, 애플리케이션은 본질적으로 프로세서들-즉, 상이한 특정 유형의 데이터를 처리하거나 어떤 카테고리의 태스크를 실행할 수 있는 구성요소들-로 이루어지고, 애플리케이션의 상이한 분할부들은 상이한 프로세서를 사용한다는 것을 알기 바란다. 예를 들어, 프로세서(504(1) 및 504(3))는 단일 애플리케이션(예를 들어, 워드 프로세싱 애플리케이션)의 안전 및 비안전 프로세서를 나타 낼 수 있고, 여기에서 데이터는 데이터가 안전 데이터인지 비안전 데이터인지에 따라 프로세서(504(1) 또는 504(3)) 중의 하나로 라우트된다.
또한, 어떤 유형의 환경이 이용가능한 지에 관한 요구사항은 없지만, 고 보증 운영 체계에 어떤 한 환경이, 그리고 통상의 전체 서비스 오픈 운영 체계에 다른 한 환경이 특히 유용할 수 있다는 것을 알기바란다. "고 보증" 운영 체계는 예상된 기능을 정확하게 실행할 수 있는 비교적 높은 레벨의 보증을 제공하는 것이다. (운영 체계를 포함하는) 모든 소프트웨어가 소프트웨어의 예상된 기능을 기술하는 스펙과 연관된다고 하고, 모든 소프트웨어가 예상되지 않은 방식으로 동작하게 하는 소정 레벨의 버그 또는 공격을 당하게 된다고 하면, "고 보증" 운영 체계는 운영 체계가 그 스펙에 따라 동작할 것이라는 비교적 높은 레벨의 신뢰를 제공하는 것이다. (이와 관련하여 스펙은 소프트웨어가 동작해야 하는 방식에 관해 암시적이고 기입되지 않은 약정을 구성할 수도 있지만, 대부분의 상용 소프트웨어는 명확하게 기입된 스펙에 당연히 따른다.) 고 보증은 보안을 달성하는데 사용될 수는 있지만, 보안과 동일한 것은 아니다. 예를 들어, 비밀 데이터를 위한 프로세서는 고 보증 운영 체계에서 실행하도록 설계될 수 있는데; 비밀 데이터를 보호할 수 있는 프로세서의 능력이 프로세서가 실행되는 환경의 정확한 비헤비어(예를 들어, 시스템 호출의 정확한 실행, 정확한 프로세스 분리 등)에 따라 좌우되는 한도까지, 프로세서는 프로세서가 통상의 전체 서비스 운영 체계에서 실행되었다면 달성 불가능했을 보안 레벨을 제공할 수 있다. (고 보증의 이율배반성은 고 보증 환경이 매우 제한된 범위의 기능을 가질 수 있다는 것이고; 더 큰 프로그램은 광범위한 상황 에서 프로그램이 정확하게 동작할 수 있다는 것을 검증하는 것이 더욱 어려운 점이다. 그러므로, WINDOWS XP와 같은 전체 서비스 상용 운영 체계는 통상적으로 고 보증으로 간주되지 않는다.)
고 보증에 관한 상기 설명과 관련하여, 애플리케이션을, 중요한 보안을 요구하지 않는 데이터를 처리하는 저보안 프로세서와, 더 많은 보안을 요구하는 데이터를 처리하는 고보안 프로세서로 분할하는 것이 유용하다는 것을 알 수 있다. 고보안 프로세서는 고 보증 환경에서 실행할 수 있고, 저보안 프로세서는 저보증 환경에서 실행할 수 있다.
분할된 애플리케이션을 지원하기 위한 예시적인 아키텍처
도 6은 분할된 애플리케이션이 실행될 수 있는 예시적인 아키텍처(600)를 도시한 것이다. 아키텍처(600)는 기본 구성요소(508)를 포함하고, 기본 구성요소(508)의 기능은 애플리케이션의 분할이 실행될 수 있는 여러가지 환경을 호스트하는 것이다. 상술된 바와 같이, 기본 구성요소(508)는 VMM, 엑소커널, 마이크로커널, 하이퍼바이저 등과 같은 여러가지 형태를 취할 수 있다. 기본 구성요소(508)는 다수의 환경(예를 들어, 운영 체계)을 호스트하는 기능을 갖고, 또한 이들 환경들 간의 상호작용을 관리(및 제한)한다. 다수의 환경의 호스팅은 여러가지 기술을 사용하여 실행될 수 있다. 예를 들어, 기본 구성요소(506)는 다수의 운영 체계의 각각에게, 자체 포함된 "가상 기계"를 노출할 수 있고; 이때, 운영 체계는 가상 기계 "가상 하드웨어"를 제어하고, 기본 구성요소(506)는 운영 체계가 가상 기계에 제공한 명령어에 기초한(하지만 이 명령어와 반드시 동일하지는 않음) "실(real)" 하드웨어에 명령을 내린다. (일반적으로 말하자면, 이것은 종래의 VMM이 작동하는 방식이다.) 다른 예로서, 기본 구성요소(506)는 기계의 물리적 어드레스 공간의 소정의 세그먼트 및 소정의 장치를 상이한 운영 체계에 할당할 수 있고, 어드레스 공간의 할당된 부분 및 할당된 장치만을 제어하기 위해 허용된 각 운영 체계에 의해 할당을 실시할 수 있다. 본 발명은 기본 구성요소에 관한 소정의 특정 실시예에 제한되지 않고; 도 6을 위해, 다수의 환경이 서로 약간 분리된 정도로 하나의 기계 상에 공존할 수 있도록 다수의 환경을 호스트할 수 있는 기본 구성가 있다고 가정한 것뿐이다.
도 6의 예에서, 기본 구성요소(506)는 운영 체계(602(1) 내지 602(4))를 호스트한다. 운영 체계(602(1))는 WINDOWS XP 운영 체계, 또는 다른 범용 운영 체계의 한 예이고; 운영 체계(602(2))는 리눅스(Linux) 운영 체계의 한 예이며; 운영 체계(602(3))는 "넥서스(nexus)"-즉, 제한 기능이긴 하지만, 이 기능이 정확하게 실행될 수 있는 고 보증을 제공할 수 있는 (상술된 의미 내에서의) 고 보증 운영 체계이고; 운영 체계(602(4))는 OS/2와 같은 다른 범용 운영 체계일 수 있다. 일반적으로, 기본 구성요소(508)는 임의 수의 운영 체계(또는 그외 다른 유형의 환경)을 호스트할 수 있고, 도 6에 도시된 4개의 운영 체계는 한 예일 뿐이다.
주어진 운영 체계 내에서, 애플리케이션-레벨 소프트웨어의 일부분을 실행하는 것이 가능하다. 예를 들어, MICROSOFT WORD 워드 프로세싱 프로그램(604) 및 MICROSOFT EXEL 스프레드시트 프로그램(606)은 WINDOWS XP 운영 체계(602(1)) 하에서 실행된다. 리눅스 운영 체계(602(2)), 넥서스(602(3)) 및 OS/2 운영 체계 (602(4))는 또한 그들 자신의 응용 프로그램을 실행할 수 있다. 이 예에서, "워드릿(Word-let)"(608) 및 "엑셀릿(Excel-let)"(610)은 넥서스(602(3)) 하에서 실행한다. 워드릿(608)은 WORD가 안전 데이터를 처리할 필요가 있을 때 WORD(604)와 함께 동작하는 안전 프로그램이다. 이와 유사하게, 엑셀릿(610)은 EXCEL(606)용의 안전 데이터를 처리한다. 그러므로, 도 4의 예에서, WORD(604)는 비안전 데이터 항목을 처리하고, 윈도우 내에 데이터 항목을 배열하며, 안전 항목을 나타내는 판독불가능의 구불거리는 곡선을 표시하는 프로그램(또는 "프로세서")일 수 있다. 워드릿(608)은 안전 항목을 오픈하고, WORD(604)가 그 항목을 위해 예비해 둔 윈도우의 영역 내에 그 항목을 렌더하는 프로그램일 수 있다. 본질적으로, WORD(604) 및 워드릿(608)은 상이한 환경에서 실행하는 상이한 프로세서를 가로질러 워드 프로세싱 애플리케이션의 기능 분할을 함께 나타낸다. 이와 유사하게, EXCEL(606) 및 엑셀릿(610)은 유사한 관계를 가질 수 있고-즉, EXCEL(606)은 안전 데이터와 관련없는 대부분의 스프레드시트 기능을 처리하고, 엑셀릿(610)은 EXCEL 대신에 안전 데이터를 처리한다.
상술된 바와 같이, 넥서스(602(3))는 신뢰된 애플리케이션(즉, 안전 데이터의 오프닝과 같이 주의를 요하는 조작이 맡겨질 수 있을 만큼 그 비헤비어가 충분히 확실한 애플리케이션)이 실행될 수 있는 환경을 제공할 수 있는 고 보증 운영 체계이다. 그러나, 넥서스(602(3))는 아마도 매우 제한된 기능을 제공할 것이다. 그러므로, WORD가 광범위한 기능을 제공하기 위해 범용 운영 체계에서 이용가능한 확장된 특징을 사용할 수 있고, 워드릿이 고도의 신뢰성으로 (아마도 제한된) 세트 의 민감한 기능을 실행하기 위해 넥서스(602(3))에 의해 제공된 환경의 고 보증 성질을 사용할 수 있도록, 워드 프로세싱 애플리케이션을, 예를 들어 WORD(604) 및 워드릿(608)으로 분할하는 것이 유용하다.
도 6은 애플리케이션의 분할을 지원하기 위한 기반구조를 제공하는 기본 구성요소를 도시한 것이다. 다음은 기반구조가 포함할 수 있는 몇몇 특징에 대한 설명이다:
등록 및 디렉토리 서비스(registration and directory service): 기본 구성요소는 기본 구성요소에 의해 호스트된 환경이 기본 구성요소와 함께 등록할 수 있는 인터페이스를 제공할 수 있다. 기본 구성요소는 또한 호스트된 환경이 개시될 수 있는 방법을 제공할 수 있다(또는 기본 구성요소가 호스트된 환경 중의 하나일 수 있다). 환경의 보증 레벨은 환경과 연관된 메타-정보이고, 기본 구성요소는 구조적 방식으로 이 정보를 억세스하고 살펴보기 위한 선택사양의 서비스를 제공할 수 있다.
분리(separation): 호스트된 환경들은 기본 구성요소에 의해 그들에게 할당된 보안 문맥을 갖는다. 환경의 보안 문맥은 다음과 같은 구성요소를 포함할 수 있다.
a. DAC 문맥, 예를 들어 환경의 코드-아이디(code-id).
b. MAC 문맥: MAC의 경우에, 환경의 MAC 문맥은 보안 레이블 및 카테고리로 되어 있다.
통신: 환경간 통신은 기본 구성요소에 의해 지배된 단일 방향성 트랜스포트 (transport)를 사용함으로써 기본 구성요소에 의해 조정된다.
a. 트랜스포트는 환경들 간의 순차적인 신뢰성있는 메시지 전달을 제공한다. 동기화 객체는 트랜스포트 상의 데이터 도착을 환경에 통지하기 위해 제공된다.
b. 억세스 제어: 트랜스포트는 기본 구성요소에 의해 지배된 객체이고, 트랜스포트로부터/로 판독/기입할 수 있는 호스트된 환경의 능력은 기본 구성요소에 의해 실시된 억세스 제어 모델에 의해 조정된다. DAC의 경우에, 이것은 액션 "판독" 및 "기입"을 위한 트랜스포트 상의 ACL에 의해 제어된다. MAC의 경우에, 이것은 트랜스포트에 부가된 레이블에 의해 제어된다. 다중 레벨 장치로의 보내기(export)를 제공하기 위해, 기본 구성요소는 전단(front-end) 보안 필터의 구현을 제공한다. 전단 보안 필터(FESF)는 트랜스포트의 기입 또는 판독단에 부가될 수 있는 기본 구성요소에 등록된 기능이다. 기입(판독)-FESF의 경우에, 기입 FESF는 데이터가 VN에 의해 트랜스포트로(로부터) 기입(판독)되기 전에 VMM에 의해 호출된다. 기입-FESF의 한 예는 MAC가 실시되는 경우에 데이터가 통상의(비-고 보증) 환경으로 기입되기 전에 고 보증 환경에서 데이터에 전형적으로 가해지는 Seal()이다. MAC가 실시되지 않는 경우, 환경은 사적 기밀로 간주되는 데이터를 다른 환경에 보내기 전에 암호화해야 할 것이다.
메시지: 트랜스포트는 상이한 환경을 가로질러 메시지를 전달한다. 메시지는 다음과 같이 구성되는 기본 구성요소에 의해 작성된 데이터 블롭이다.
a. 기본 구성요소에 의해 할당된 보안 문맥: DAC 및 MAC 문맥을 포함한다. DAC 문맥은 작성 환경의 주체-아이디(subject-id)를 포함한다. MAC 문맥은 작성 환경의 보안 레벨 및 카테고리를 포함한다.
b. 내용: (작성 환경에 의해 할당된 보안 문맥을 포함하는) 데이터
더 높은 레벨 추상화: 환경(또는 환경에서 실행되는 애플리케이션 또는 기타 소프트웨어 객체)는 기본 구성요소에 의해 노출된 통신 추상화를 사용함으로써 그들 자신에 의해 RPC 인터페이스를 구현할 수 있다. 이것은 환경, 또는 단순히 라이브러리 코드에 의해 제공된 서비스일 수 있다. 노출될 수 있는 다른 추상화는 기본 구성요소에 의해 구현될 필요가 없는 환경들 간의 소켓(socket) 호출 인터페이스이다.
포커스 관리: 분할된 애플리케이션의 다수의 예에서, 한 환경에서 다른 환경으로의 메시지의 도달은 안전한 입력 또는 출력 장치의 현재 소유권자의 변경을 야기할 수 있다. 포커스 관리는 기본 구성요소에 의해 제공되거나 환경에 의해 요청되는데-예를 들어, 환경은 다른 환경으로부터의 메시지 도달 시에 포커스의 변경을 요청할 수 있다. 환경은 이때 안전한 입/출력 장치와의 세션을 가진 다음에, 제어를 그만둔다. 기본 구성요소는 환경에 의한 I/O 세션을 강제로 종료시킬 수 있다.
분할된 애플리케이션과 함께 사용하기 위한 예시적인 데이터 객체
도 7은 데이터 객체가 분할된 애플리케이션과 함께 사용될 수 있게 하는 데이터 객체의 예시적인 구조를 도시한 것이다. 상술된 바와 같이, 애플리케이션이 분할될 때, 애플리케이션의 제1 분할부는 그 분할부에 의해 처리될 수는 없지만 제2 분할부로 보내질 필요가 있는 데이터 객체에 봉착할 수 있다. 제1 분할부가 애플리케이션의 "비안전" 부분이고, 제2 분할부가 "안전" 부분인 경우에, 제1 분할부 가 객체에 대한 그밖의 무엇인가를 판단할 수 없더라도(예를 들어, 제1 분할부가 객체의 내용을 판독할 수 없더라도), 제1 분할부는 데이터 객체가 프로세싱을 위해 다른 곳으로 보내져야 한다는 것을 인식할 수 있는 것이 바람직하다. 부수적으로, 어떤 상황에서, 데이터 객체가 실제로 안전한 상황 하에서 작성되었으며 그후 변경되지 않았다는 것을 검증하는 것이 중요할 수 있다(예를 들어, 키보드에서 애플리케이션의 I/O 스트림으로의 경로 상의 데이터가 위장으로부터 보호되는 환경에서 데이터가 입력되었는 지를 판단하는 것이 가능해야 된다). 그러므로, 데이터 객체의 처리 체인이 검증될 수 있게 하는 방식으로 데이터 객체가 표현되는 것이 또한 바람직하다.
데이터 객체(700)는 데이터 항목(702)을 포함한다. 데이터 항목(702)은 데이터 객체(700)가 예를 들어, 비밀 워드 프로세싱 문서(또는 그 일부), 스프레드시트용의 민감한 금융 데이터, 금융 거래시에 사용자를 인증하기 위한 패스워드 정보 등을 전달하기 위해 존재하는 하위 실제 내용이다.
데이터 항목(702)은 데이터를 처리하는 아키텍처의 각 층에 의해 일련의 래퍼 내에 래핑된다. 각 래퍼는 2가지 용도로 쓰인다:(1) 래퍼는 항목 상에 래퍼를 배치한 엔티티(예를 들어, 애플리케이션, 환경 등)를 식별하는데, 이것은 나중에 항목을 그 엔티티에 라우트하는 것을 돕는다; (2) 래퍼는 항목이 래핑된 이후 변경되지 않았는지 나중에 검증할 수 있게 하는 방식으로 항목을 시일한다. 예를 들어, 워드릿(608)이 데이터 항목(702)을 작성하면, 워드릿은 데이터 항목(702)이 소정의 방식으로 처리될 필요가 있을 때 나중에 라우트되어야 하는 프로세서로서 워 드릿을 식별하는 헤더뿐만 아니라, 데이터 항목(702)의 디지털 서명을 부가할 수 있다. 그러므로, 서명 및 헤더는 래퍼(704)를 구성한다. 래퍼는 서명 및 헤더, 또는 소정의 특정 실시예에 제한되지 않고, 항목이 식별될 수 있게 하고, 항목의 무결성(즉, 비변경)이 검증될 수 있게 하는 여러가지 공지된 기술이 있다는 것을 알기바란다.
상술된 바와 같이, 워드릿과 같은 프로세서의 보안은 신뢰 구성요소의 계층에 기초하고-즉, 워드릿은 고 보증의 넥서스에 의존하기 때문에 신뢰할 수 있고; 넥서스는 기본 구성요소 등의 분리 능력에 의존하기 때문에 신뢰할 수 있다. 그러므로, 데이터 항목(702)을 작성하는 애플리케이션으로 이끌어가는 체인 내에 있는 계층의 각 구성요소는 그 자신의 래퍼 내에 항목을 래핑한다. 그 다음, 워드릿의 래퍼에 의해 이미 래핑되어 있는 데이터 항목(702)은 넥서스의 래퍼(706)에 의해 래핑된다. 그 다음, 이러한 (이중으로 래핑된) 항목은 기본 구성요소의 래퍼(708)에 의해 래핑된다. 각 래퍼는 본질적으로 래핑 구성요소를 식별하고, 또한 래핑된 내용들이 래핑된 이후에 변경되지 않았다는 (래핑 구성요소가 신뢰할 수 있을 정도의) 검증가능한 단정을 구성한다.
부수적으로, 래퍼는 계층 순서에 따라 내포되기 때문에, 각 래퍼는 라우팅 용도에 유용하다. 그러므로, 데이터 객체(700)가 애플리케이션에 의해 봉착될 때, 외측 래퍼(708)는 객체가 다른 프로세서로 라우트될 필요가 있는 것으로 식별하므로, 객체는 기본 구성요소에 보내진다. 그 다음, 기본 구성요소는 래퍼 내부의 내용의 무결성을 검증하기 위해 래퍼를 사용하고, 어떤 환경(이 경우에, 넥서스)으로 내용이 라우트되어야 하는 지를 판정하기 위해 다음 레벨의 래퍼(706)를 사용한다. 그 다음, 넥서스는 래퍼(706) 내부의 내용의 무결성을 검증하고, 또한 어떤 소프트웨어 객체(이 경우에, 워드릿)가 내용을 처리할 것인지를 판정하기 위해 래퍼(704)를 사용한다. 그 다음, 워드릿은 래퍼(704) 내부의 내용의 무결성을 검증한다. 이 내용은 데이터 항목(702)이다. 그러므로, 데이터 객체(700)의 구조는 데이터 항목(702)을 처리할 프로세서로 이끌어가는 체인 내의 각 단계에서 데이터 항목(702)이 라우트되어 검증될 수 있게 한다.
분할된 애플리케이션을 사용하는 예시적인 프로세스
도 8은 분할된 애플리케이션이 사용되는 예시적인 프로세스를 도시한 것이다. 도 8의 예를 위해, 애플리케이션이 프로세서 1 및 프로세서 2라고 하는 2개의 프로세서를 갖는다고 가정하자.
초기에, 프로세서 1이 실행된다; 프로세서 1이 실행되고 있는 시간 동안에, 프로세서 1은 데이터 객체(802)에 봉착한다. 상술된 바와 같이, 프로세서 1은 데이터 객체를 판독할 수 없지만, 데이터 객체를 프로세싱을 위해 다른 곳으로 보내져야 하는 것으로 인식할 수 있다. 그러므로, 프로세서 1은 데이터 객체를 참조 모니터(804)로 보낸다.
참조 모니터는 데이터 객체가 보내져야 하는 곳을 판정하기 위해 데이터 객체의 가장 바깥의 래퍼를 사용한다. 상술된 바와 같이, 참조 모니터(양호하게 상술된 기본 구성요소의 일부임)는 또한 가장 바깥의 래퍼를 사용하여 래퍼의 내용의 무결성을 검증한다. 이 예에서, 내용의 무결성이 유지되었다고 하고, 참조 모니터 는 데이터 객체가 프로세서 2에 의해 프로세스되어야 한다고 판정했다고 하자(806). (상술된 바와 같이, 참조 모니터는 프로세서 2의 존재를 바로 알 수 있는 것이 아니라, 래퍼를 사용하여 객체를 특정 환경으로 라우트할 수 있고, 그 다음에 객체는 수신 환경에 의해 프로세서 2로 라우트된다. 이러한 방식으로 내포된 래퍼의 사용은 도 7과 관련하여 상술되었기 때문에, 설명을 간략하게 하기 위해, 도 8은 예는 객체를 프로세서 2로 라우트하는데 관련될 수 있는 중간 라우팅 단계에 관계없이 소정의 방식으로 데이터 객체가 프로세서 2로 라우트될 수 있다고만 가정한다.
데이터 객체가 프로세서 2용으로 정해진다는 판정이 이루어지면, 프로세서 2가 실행중인지 판정된다(808). 예를 들어, 이 판정은 프로세서 2가 실행될 예정인 환경(예를 들어, 앞의 예에서는 넥서스)에 의해 이루어질 수 있다. 프로세서 2가 실행중이 아니면, 프로세서 2가 개시된다(810). 프로세서 2가 개시된 후(또는 이와 달리 이미 실행중이라고 판정된 후), 프로세서 2는 소정의 입력 또는 출력을 처리할 경우에 포커스(즉, 입력 및 출력 장치 상에서 I/O를 실행할 수 있는 능력)가 제공된다.
본 발명에 따르면, 사용자가 하나의 애플리케이션을 사용하고 있는 것으로 생각될 수 있도록 2개의 구성요소를 가로질러 통합된 사용자 경험이 제공된다.
상술된 예들은 단지 설명을 위해 제공되었을 뿐이지, 본 발명을 제한하고자 하는 것은 아니라는 것을 알기 바란다. 본 발명이 여러가지 실시예를 참조하여 설 명되는 동안, 여기에서 사용된 단어들은 제한적인 의미의 단어가 아니라 설명 및 도시를 위한 단어라는 것을 알 수 있을 것이다. 더욱이, 본 발명은 특정 수단, 재료 및 실시예를 참조하여 설명되었지만, 본 발명은 여기에 개시된 특정사항에 제한되지 않고; 오히려, 본 발명은 첨부된 청구범위에 속하는 것과 기능적으로 대등한 모든 구조, 방법 및 용도로 확장된다. 이 명세서에 교시된 이점을 알고있는 본 분야에 숙련된 기술자들은 여러가지 변형을 할 수 있고, 본 발명의 범위 및 정신을 벗어나지 않고서 본 발명의 실시양상을 변경시킬 수도 있다.

Claims (34)

  1. 애플리케이션의 분할(partitioning)을 관리하는 시스템에 있어서,
    적어도 하나의 프로세서와, 상기 적어도 하나의 프로세서와 통신하는 적어도 하나의 메모리를 포함하고, 상기 프로세서는 프로그램 명령어를 실행하도록 구성되며, 상기 프로그램 명령어는,
    제1 환경과 제2 환경의 동작을 호스팅(host)하는 상기 적어도 하나의 메모리에 저장된 기본 컴포넌트(base component)를 포함하고,
    상기 애플리케이션은
    제1 운영 시스템을 포함하는 상기 제1 환경에서 실행되는 상기 애플리케이션의 제1 소프트웨어 객체 - 상기 제1 소프트웨어 객체는 상기 애플리케이션의 동작의 서브세트를 제공하고, 상기 제1 소프트웨어 객체는 복수의 데이터를 취급하고, 상기 복수의 데이터 중의 제1 데이터를 상기 제1 소프트웨어 객체에 의해 프로세싱 가능하지 않는 것으로 식별하는 로직을 포함하며, 상기 제1 소프트웨어 객체는 상기 복수의 데이터 중의 상기 제1 데이터를 상기 기본 컴포넌트로 송신하고, 상기 제1 소프트웨어 객체는 상기 기본 컴포넌트로부터 상기 복수의 데이터 중의 상기 제1 데이터에 대응하는 프로세싱된 데이터를 수신하며, 상기 제1 소프트웨어 객체는 상기 프로세싱된 데이터를 사용하여 상기 복수의 데이터를 더 프로세싱함 -; 및
    제2 운영 시스템을 포함하는 상기 제2 환경에서 실행되는 상기 애플리케이션의 제2 소프트웨어 객체를 포함하고,
    상기 제2 소프트웨어 객체는 상기 기본 컴포넌트로부터 상기 복수의 데이터 중의 상기 제1 데이터를 대응하는 래퍼(wrapper)와 함께 수신하며, 상기 제2 소프트웨어 객체는 상기 데이터와 상기 대응하는 래퍼를 비교함으로써, 상기 복수의 데이터 중의 상기 제1 데이터를, 수정되지 않았다고 검증하며, 상기 제2 소프트웨어 객체는 상기 복수의 데이터 중의 상기 제1 데이터의 부당 변경을 방지하는 방식으로 상기 복수의 데이터 중의 상기 제1 데이터를 프로세싱하며, 상기 제2 소프트웨어 객체는 상기 기본 컴포넌트로 상기 프로세싱된 데이터를 송신하며,
    상기 기본 컴포넌트는 상기 제1 소프트웨어 객체로부터 상기 복수의 데이터 중의 상기 제1 데이터를 수신하고, 상기 복수의 데이터 중의 상기 제1 데이터를 상기 대응하는 래퍼에 적용(apply)하며 - 상기 대응하는 래퍼는 상기 제2 소프트웨어 객체의 상기 제2 환경의 지시 및 시일(seal)을 포함하고, 상기 시일(seal)은 상기 시일(seal)이 결정된 이후 상기 복수의 데이터 중의 상기 제1 데이터가 변경되었는지 결정하기 위해 상기 복수의 데이터 중의 상기 제1 데이터에 대해 체크될 수 있음 - 상기 복수의 데이터 중의 상기 제1 데이터를 상기 제2 환경에 라우팅하는 로직을 포함하거나 호스팅함으로써, 상기 애플리케이션의 기능이 상기 제1 및 제2 운영 시스템 사이에서 파싱(parse)되고,
    상기 기본 컴포넌트는 상기 제2 소프트웨어 객체로부터 상기 프로세싱된 데이터를 수신하고, 제2 래퍼를 상기 프로세싱된 데이터에 적용(apply)하며 - 상기 제2 래퍼는 상기 제1 소프트웨어 객체의 상기 제1 환경의 지시(indication) 및 제2 시일(seal)을 포함하고, 상기 제2 시일(seal)은, 상기 제2 시일(seal)이 결정된 이후 상기 프로세싱된 데이터가 변경되었는지 결정하기 위해 상기 프로세싱된 데이터에 대해 체크될 수 있음 - 상기 프로세싱된 데이터를 상기 제1 환경에 라우팅(route)하는 로직을 포함하거나 호스팅함으로써, 상기 애플리케이션의 기능이 상기 제1 및 제2 운영 시스템 사이에서 파싱되는, 시스템.
  2. 제1항에 있어서,
    상기 제1 소프트웨어 객체는 상기 복수의 데이터 중의 상기 제1 데이터의 표현이 표시 장치 상에 표시되게 하고, 상기 표현은 하나 이상의 판독할 수 없는 그래픽을 포함하는, 시스템.
  3. 삭제
  4. 제1항에 있어서,
    상기 제2 소프트웨어 객체에 의해 제공된 부당 변경 방지는, 상기 복수의 데이터 중의 상기 제1 데이터의 표현이 표시될 표시 장치 상의 한 위치에서의 소정의 이미지를 상기 표현이 대신하게 하기 위해 상기 표시 장치와 연관된 비디오 메모리 내로 상기 복수의 데이터 중의 상기 제1 데이터의 상기 표현을 기입함으로써, 상기 제2 환경이 상기 복수의 데이터 중의 상기 제1 데이터의 표시를 방해하지 않게 하는 것을 포함하는, 시스템.
  5. 제1항에 있어서,
    상기 복수의 데이터 중의 상기 제1 데이터는 키보드 상에서 입력되고, 상기 제2 소프트웨어 객체에 의해 제공된 상기 부당 변경 방지는, 상기 키보드에서 상기 제2 소프트웨어 객체의 입력 스트림으로의 이동(transit) 중에 상기 복수의 데이터 중의 상기 제1 데이터의 부당 변경을 방지하는 것을 포함하는, 시스템.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 제1항에 있어서,
    상기 제1 환경은 상기 제1 환경의 비헤비어(behavior)를 기술하는 제1 스펙(specification)과 연관되고, 상기 제2 환경은 상기 제2 환경의 비헤비어를 기술하는 제2 스펙과 연관되며, 상기 제1 환경이 상기 제1 스펙을 따를 것이라는 보증 레벨보다도, 상기 제2 환경이 상기 제2 스펙을 따를 것이라는 보증 레벨이 더 높은, 시스템.
  11. 삭제
  12. 제1항에 있어서, 상기 기본 컴포넌트는 상기 제2 환경이거나, 또는 상기 제2 환경 내에 포함되는, 시스템.
  13. 컴퓨터상에서 실행하는 제1 운영 시스템을 포함하는 제1 환경에서 실행되는 애플리케이션의 제1 소프트웨어 객체가, 상기 애플리케이션이 예상되는 기능을 정확하게 수행할 것이라는 보증의 레벨에 대응하는 보증 정책이 적용되는 데이터를 처리하는 방법으로서,
    상기 컴퓨터 상에서 실행되는 상기 제1 소프트웨어 객체에 의해, 상기 데이터가 안전하게 프로세싱되어야 할 것을 결정하는 단계;
    상기 제1 소프트웨어 객체에 의해, 상기 데이터를 안전하게 프로세싱하라는 지시와 함께 기본 환경으로 상기 데이터를 전송하는 단계;
    상기 기본 환경에 의해, 상기 데이터를 안전하게 프로세싱하는 제2 소프트웨어 객체를 결정하는 단계 - 상기 제2 소프트웨어 객체는 상기 제1 소프트웨어 객체에 대응함 -;
    상기 기본 환경에 의해, 래퍼를 상기 데이터에 적용하는 단계 - 상기 래퍼는 상기 제2 소프트웨어 객체의 제2 소프트웨어 환경을 식별하고, 상기 래퍼는 시일(seal)을 포함하고, 상기 시일(seal)은, 상기 시일(seal)이 결정된 이후 상기 데이터가 변경되었는지 결정하기 위해 상기 데이터에 대해 체크될 수 있음 -;
    상기 기본 환경에 의해 상기 데이터와 대응하는 래퍼를 상기 제2 소프트웨어 환경으로 전송하는 단계;
    상기 제2 소프트웨어 환경에 의해, 상기 데이터 및 대응하는 시일(seal)을 사용하여, 상기 데이터가 수정되지 않았음을 결정하는 것을 포함하는 부당 변경 방지를 생성하는 단계;
    상기 제2 소프트웨어 환경에 의해, 상기 데이터를 프로세싱하는 단계;
    상기 제2 소프트웨어 환경에 의해, 상기 프로세싱된 데이터의 결과를, 상기 데이터를 본래 전송했던 소프트웨어 환경으로 상기 데이터를 복귀하라는 지시와 함께 상기 기본 환경으로 전송하는 단계;
    상기 기본 환경에 의해, 제1 소프트웨어 환경이 상기 결과를 본래 전송했던 상기 소프트웨어 환경인 것을 판단하는 단계;
    상기 기본 환경에 의해, 제2 래퍼를 상기 결과에 적용하는 단계 - 상기 제2 래퍼는 상기 제1 소프트웨어 환경을 식별하고, 상기 제2 래퍼는 제2 시일(seal)을 포함하며, 상기 제2 시일(seal)은 상기 제2 시일이 결정된 이후 상기 결과가 변경되었는지 결정하기 위해 상기 결과에 대해 체크될 수 있음 -;
    상기 기본 환경에 의해 상기 결과와 상기 제2 래퍼를 상기 제1 소프트웨어 환경으로 전송하는 단계; 및
    상기 결과 및 상기 제2 시일(seal)을 사용하여 상기 결과가 수정되지 않았음을 상기 제1 소프트웨어 환경에 의해 검증하는 단계를 포함하는
    방법.
  14. 삭제
  15. 삭제
  16. 제13항에 있어서,
    상기 제1 소프트웨어 객체에 의해, 영상 표시 장치 상에 표시될 상기 데이터의 표현을 표시하기 위해 시각적 출력 담당인 컴포넌트에 지시하는 단계를 더 포함하고, 상기 표현은 하나 이상의 판독할 수 없는 그래픽을 포함하는, 방법.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 제13항에 있어서,
    상기 데이터는, 상기 제2 환경을 상기 데이터가 프로세스될 위치로서 식별하는 제1 레이블(label)을 포함하거나 또는 이 제1 레이블과 연관되는, 방법.
  22. 삭제
  23. 제13항에 있어서,
    상기 제2 환경은 상기 제2 환경의 비헤비어를 기술하는 제1 스펙(specificaiton)과 연관되고, 상기 보증 정책은 상기 제2 환경이 상기 제1 스펙을 따를 것이라는 것을 제공하는, 방법.
  24. 삭제
  25. 사용자가 제1 및 제2 형식의 데이터를 동작하도록 하는 코드와 데이터가 저장된 컴퓨터 판독가능 저장 매체로서, 상기 제2 형식의 데이터는 상기 제1 형식의 데이터보다 상대적으로 더 높은 레벨의 부당 방지로부터의 보호를 요구하고, 상기 코드와 데이터는,
    제1 소프트웨어 환경의 제1 소프트웨어 객체에 의해 상기 데이터가 안전하게 프로세싱되어야 할 것을 결정하는 단계;
    상기 제1 소프트웨어 객체에 의해, 상기 데이터를 안전하게 프로세싱하라는 지시와 함께 상기 데이터를 기본 환경으로 전송하는 단계;
    상기 기본 환경에 의해, 상기 데이터를 안전하게 프로세싱하는 제2 소프트웨어 객체를 결정하는 단계 - 상기 제2 소프트웨어 객체는 상기 제1 소프트웨어 객체에 대응함 -;
    상기 기본 환경에 의해, 래퍼를 상기 데이터에 적용하는 단계 - 상기 래퍼는 상기 제2 소프트웨어 객체의 제2 소프트웨어 환경을 식별하고, 상기 래퍼는 시일(seal)을 포함하고, 상기 시일(seal)은, 상기 시일(seal)이 결정된 이후 상기 데이터가 변경되었는지 결정하기 위해 상기 데이터에 대해 체크될 수 있음 -;
    상기 기본 환경에 의해, 상기 데이터와 대응하는 래퍼를 상기 제2 소프트웨어 환경으로 전송하는 단계;
    상기 데이터 및 대응하는 시일(seal)을 사용하여, 상기 데이터가 수정되지 않았음을, 상기 제2 소프트웨어 환경에 의해, 검증하는 단계;
    상기 제2 소프트웨어 환경에 의해 상기 데이터를 프로세싱하는 단계;
    상기 제2 소프트웨어 환경에 의해, 상기 프로세싱된 데이터의 결과를, 상기 데이터를 본래 전송했던 소프트웨어 환경으로 상기 데이터를 복귀하라는 지시와 함께, 상기 기본 환경으로 전송하는 단계;
    상기 기본 환경에 의해, 상기 제1 소프트웨어 환경이 상기 결과를 본래 전송했던 소프트웨어 환경인 것임을 판단하는 단계;
    상기 기본 환경에 의해, 제2 래퍼를 상기 결과에 적용하는 단계 - 상기 제2 래퍼는 상기 제1 소프트웨어 환경을 식별하고, 상기 제2 래퍼는 제2 시일(seal)을 포함하며, 상기 제2 시일(seal)은 상기 제2 시일(seal)이 결정된 이후 상기 결과가 변경되었는지 결정하기 위해 상기 결과에 대해 체크될 수 있음 -;
    상기 기본 환경에 의해, 상기 결과와 상기 제2 래퍼를 상기 제1 소프트웨어 환경으로 전송하는 단계;
    상기 제1 소프트웨어 환경에 의해, 상기 결과 및 상기 제2 시일을 사용하여 상기 결과가 수정되지 않았음을 검증하는 단계;
    상기 제1 소프트웨어 환경에 의해, 상기 제2 소프트웨어 환경은, 상기 제1 소프트웨어 환경이 상기 결과를 신뢰하기에 충분한 신뢰의 대응 레벨을 갖는지 결정하는 단계; 및
    상기 제1 소프트웨어 객체를 실행하기 위해 상기 결과를 사용하는 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
KR1020040070788A 2003-10-24 2004-09-06 애플리케이션 분할을 통한 하나의 애플리케이션 내로의 고보증 특징들의 통합 KR101149998B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/693,749 2003-10-24
US10/693,749 US7730318B2 (en) 2003-10-24 2003-10-24 Integration of high-assurance features into an application through application factoring

Publications (2)

Publication Number Publication Date
KR20050039541A KR20050039541A (ko) 2005-04-29
KR101149998B1 true KR101149998B1 (ko) 2012-06-01

Family

ID=34394598

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040070788A KR101149998B1 (ko) 2003-10-24 2004-09-06 애플리케이션 분할을 통한 하나의 애플리케이션 내로의 고보증 특징들의 통합

Country Status (11)

Country Link
US (1) US7730318B2 (ko)
EP (1) EP1526456B1 (ko)
JP (1) JP4896385B2 (ko)
KR (1) KR101149998B1 (ko)
CN (1) CN100426224C (ko)
AT (1) ATE519156T1 (ko)
AU (1) AU2004216595B2 (ko)
BR (1) BRPI0404008B1 (ko)
CA (1) CA2480906C (ko)
MX (1) MXPA04010158A (ko)
RU (1) RU2367006C2 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7484247B2 (en) 2004-08-07 2009-01-27 Allen F Rozman System and method for protecting a computer system from malicious software
US20060075236A1 (en) * 2004-09-30 2006-04-06 Marek James A Method and apparatus for high assurance processing
CN100464295C (zh) * 2006-05-17 2009-02-25 联想(北京)有限公司 一种基于虚拟机的安全输入方法
US7877506B2 (en) * 2006-05-26 2011-01-25 International Business Machines Corporation System, method and program for encryption during routing
US9747426B2 (en) * 2006-08-31 2017-08-29 Invention Science Fund I, Llc Handling masquerading elements
EP2083372A4 (en) * 2006-10-20 2012-02-29 Panasonic Corp DEVICE AND METHOD FOR MONITORING FALSIFICATION OF APPLICATION INFORMATION
JP5007867B2 (ja) * 2007-05-11 2012-08-22 ナグラスター エル.エル.シー. 安全な環境におけるプロセッサ実行を制御するための装置
US8249257B2 (en) * 2007-09-28 2012-08-21 Intel Corporation Virtual TPM keys rooted in a hardware TPM
US8259948B2 (en) * 2007-12-29 2012-09-04 Intel Corporation Virtual TPM key migration using hardware keys
DK3046062T3 (da) * 2009-01-18 2021-05-31 Gilbarco Inc Betalingsbehandlingssystem til anvendelse i et detailsalgsmiljø med segmenteret arkitektur
US20100250903A1 (en) * 2009-03-26 2010-09-30 Celio Technology Corporation Apparatuses and systems including a software application adaptation layer and methods of operating a data processing apparatus with a software adaptation layer
FR2948789B1 (fr) * 2009-07-28 2016-12-09 Airbus Composant logiciel et dispositif pour le traitement automatise de donnees multi-usages, mettant en oeuvre des fonctions ayant besoin de differents niveaux de surete ou limites de responsabilite
RU2467389C1 (ru) * 2011-06-07 2012-11-20 Антон Андреевич Краснопевцев Способ защиты программно-информационного обеспечения от несанкционированного использования
US8874935B2 (en) 2011-08-30 2014-10-28 Microsoft Corporation Sector map-based rapid data encryption policy compliance
US9916439B2 (en) * 2012-03-22 2018-03-13 Microsoft Technology Licensing, Llc Securing a computing environment against malicious entities
CN103379089B (zh) * 2012-04-12 2016-06-22 中国航空工业集团公司第六三一研究所 基于安全域隔离的访问控制方法及其系统
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
CN103346886B (zh) * 2013-07-01 2016-12-28 天地融科技股份有限公司 一种发送签名数据的方法和电子签名令牌
CN103390142B (zh) * 2013-07-30 2016-09-21 东莞宇龙通信科技有限公司 一种终端
US10615967B2 (en) 2014-03-20 2020-04-07 Microsoft Technology Licensing, Llc Rapid data protection for storage devices
US9825945B2 (en) 2014-09-09 2017-11-21 Microsoft Technology Licensing, Llc Preserving data protection with policy
US9853812B2 (en) 2014-09-17 2017-12-26 Microsoft Technology Licensing, Llc Secure key management for roaming protected content
WO2016072310A1 (ja) 2014-11-05 2016-05-12 キヤノン電子株式会社 特定装置、その制御方法、及びプログラム
US9900295B2 (en) 2014-11-05 2018-02-20 Microsoft Technology Licensing, Llc Roaming content wipe actions across devices
US20160352783A1 (en) * 2015-05-27 2016-12-01 Microsoft Technology Licensing, Llc Partitioning Media Data
US9853820B2 (en) 2015-06-30 2017-12-26 Microsoft Technology Licensing, Llc Intelligent deletion of revoked data
US9900325B2 (en) 2015-10-09 2018-02-20 Microsoft Technology Licensing, Llc Passive encryption of organization data
RU2638000C1 (ru) 2017-02-08 2017-12-08 Акционерное общество "Лаборатория Касперского" Способ контроля системы исполнения программируемого логического контроллера
US11188639B2 (en) * 2018-07-19 2021-11-30 Intel Corporation System, method and apparatus for automatic program compartmentalization
DE102018120347A1 (de) * 2018-08-21 2020-02-27 Pilz Gmbh & Co. Kg Automatisierungssystem zur Überwachung eines sicherheitskritischen Prozesses
CN117354068B (zh) * 2023-12-06 2024-03-01 国网浙江省电力有限公司金华供电公司 提高分布式能量管理系统通信安全性方法与系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030107584A1 (en) 2001-12-12 2003-06-12 Intel Corporation Security system and method for visual display

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5859966A (en) * 1995-10-10 1999-01-12 Data General Corporation Security system for computer systems
US6006332A (en) 1996-10-21 1999-12-21 Case Western Reserve University Rights management system for digital media
US6496823B2 (en) 1997-11-07 2002-12-17 International Business Machines Corporation Apportioning a work unit to execute in parallel in a heterogeneous environment
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6327652B1 (en) * 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US6192477B1 (en) * 1999-02-02 2001-02-20 Dagg Llc Methods, software, and apparatus for secure communication over a computer network
GB2380303B (en) * 2000-05-28 2005-09-14 Yaron Mayer System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages
US7039801B2 (en) * 2000-06-30 2006-05-02 Microsoft Corporation System and method for integrating secure and non-secure software objects
US20020124177A1 (en) * 2001-01-17 2002-09-05 Harper Travis Kelly Methods for encrypting and decrypting electronically stored medical records and other digital documents for secure storage, retrieval and sharing of such documents
DK1305708T3 (da) * 2001-05-11 2003-07-14 Sospita As Rækkefølge-nummereringsmekanisme til at sikre integriteten af eksekveringsrækkefølgen for indbyrdes afhængige smartcard-applikationer
US20020184520A1 (en) * 2001-05-30 2002-12-05 Bush William R. Method and apparatus for a secure virtual machine
GB2378272A (en) * 2001-07-31 2003-02-05 Hewlett Packard Co Method and apparatus for locking an application within a trusted environment
US7272832B2 (en) * 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US7228426B2 (en) * 2002-04-03 2007-06-05 Microsoft Corporation Integrity ordainment and ascertainment of computer-executable instructions with consideration for execution context
US7058768B2 (en) 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
US7165135B1 (en) * 2002-04-18 2007-01-16 Advanced Micro Devices, Inc. Method and apparatus for controlling interrupts in a secure execution mode-capable processor
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
US7043616B1 (en) * 2002-04-18 2006-05-09 Advanced Micro Devices, Inc. Method of controlling access to model specific registers of a microprocessor
US7130951B1 (en) * 2002-04-18 2006-10-31 Advanced Micro Devices, Inc. Method for selectively disabling interrupts on a secure execution mode-capable processor
US7603551B2 (en) * 2003-04-18 2009-10-13 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
US7130977B1 (en) * 2002-04-18 2006-10-31 Advanced Micro Devices, Inc. Controlling access to a control register of a microprocessor
US7266658B2 (en) * 2002-09-12 2007-09-04 International Business Machines Corporation System, method, and computer program product for prohibiting unauthorized access to protected memory regions
US7309004B1 (en) * 2002-12-26 2007-12-18 Diebold Self-Service Systems, Division Of Diebold, Incorporated Cash dispensing automated banking machine firmware authentication system and method
US7313687B2 (en) * 2003-01-10 2007-12-25 Microsoft Corporation Establishing a secure context at an electronic communications end-point
US7146477B1 (en) * 2003-04-18 2006-12-05 Advanced Micro Devices, Inc. Mechanism for selectively blocking peripheral device accesses to system memory
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
US7269702B2 (en) * 2003-06-06 2007-09-11 Microsoft Corporation Trusted data store for use in connection with trusted computer operating system
US7398432B2 (en) * 2003-07-24 2008-07-08 International Business Machines Corporation Identify indicators in a data processing system
US7530103B2 (en) * 2003-08-07 2009-05-05 Microsoft Corporation Projection of trustworthiness from a trusted environment to an untrusted environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030107584A1 (en) 2001-12-12 2003-06-12 Intel Corporation Security system and method for visual display

Also Published As

Publication number Publication date
AU2004216595B2 (en) 2010-02-18
JP4896385B2 (ja) 2012-03-14
US7730318B2 (en) 2010-06-01
BRPI0404008B1 (pt) 2017-03-28
BRPI0404008A (pt) 2005-06-21
CA2480906C (en) 2014-01-28
RU2367006C2 (ru) 2009-09-10
ATE519156T1 (de) 2011-08-15
KR20050039541A (ko) 2005-04-29
EP1526456B1 (en) 2011-08-03
JP2005129033A (ja) 2005-05-19
EP1526456A2 (en) 2005-04-27
RU2004131022A (ru) 2006-04-10
US20050091661A1 (en) 2005-04-28
CN1609801A (zh) 2005-04-27
CN100426224C (zh) 2008-10-15
EP1526456A3 (en) 2006-05-31
AU2004216595A1 (en) 2005-05-12
MXPA04010158A (es) 2005-04-28
CA2480906A1 (en) 2005-04-24

Similar Documents

Publication Publication Date Title
KR101149998B1 (ko) 애플리케이션 분할을 통한 하나의 애플리케이션 내로의 고보증 특징들의 통합
Stefan et al. Flexible dynamic information flow control in Haskell
Murray et al. Improving Xen security through disaggregation
Zdancewic Programming languages for information security
US8122256B2 (en) Secure bytecode instrumentation facility
Wan et al. RusTEE: developing memory-safe ARM TrustZone applications
US10884838B2 (en) Maintaining core dump privacy during application fault handling
EP3847568B1 (en) Protecting selected disks on a computer system
BR112014018837B1 (pt) Dispositivo eletrônico, mídia legível por máquina e método de avaliar segurança de operações executadas por um sistema operacional.
JPH11282753A (ja) オブジェクトへのアクセス方法及び装置、オブジェクトへのアクセスを制御するプログラムを格納した記憶媒体
US7725585B2 (en) Methods and systems for alerting a user interface with full destination information
KR20220090537A (ko) 정책 적용을 위한 가상 환경 유형 검증
US20050289358A1 (en) Method and system for sensitive information protection in structured documents
CN107220529A (zh) 一种针对Android平台SDK包的加固方法
US20180046454A1 (en) Securing secret information in source code verification and at runtime
Hiet et al. Policy-based intrusion detection in web applications by monitoring java information flows
WO2004114528A2 (en) Method and system for operating system anti-tampering
EP4145318A1 (en) System and method for monitoring delivery of messages passed between processes from different operating systems
US20240176634A1 (en) Updating secure guest metadata of a specific guest instance
Vemuri et al. Measures to improve security in a microkernel operating system
Myers Programming with explicit security policies
Meadows Type Checking and Security
Ureche et al. Towards an implementation of information flow security using semantic web technologies
CN115080980A (zh) 一种SELinux操作系统安全策略完整性模型及完整性检测方法
Singh et al. Security on the IBM Mainframe

Legal Events

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

Payment date: 20160419

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180417

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190417

Year of fee payment: 8