KR101643677B1 - 연산 리소스 실행의 안전 보호 - Google Patents

연산 리소스 실행의 안전 보호 Download PDF

Info

Publication number
KR101643677B1
KR101643677B1 KR1020127016890A KR20127016890A KR101643677B1 KR 101643677 B1 KR101643677 B1 KR 101643677B1 KR 1020127016890 A KR1020127016890 A KR 1020127016890A KR 20127016890 A KR20127016890 A KR 20127016890A KR 101643677 B1 KR101643677 B1 KR 101643677B1
Authority
KR
South Korea
Prior art keywords
resource
descriptor
computational
instance
execution
Prior art date
Application number
KR1020127016890A
Other languages
English (en)
Other versions
KR20120104271A (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 KR20120104271A publication Critical patent/KR20120104271A/ko
Application granted granted Critical
Publication of KR101643677B1 publication Critical patent/KR101643677B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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/54Monitoring 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 adding security routines or objects to programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Advance Control (AREA)

Abstract

연산 특성에 대한 액세스를 제어하는 방법으로서, 식별 값(identity value)(130)을 포함하는 우선 설명자(primary descriptor)가 제공되어 있고 상기 우선 설명자(132)에 특성 지시자(feature indicator)(136)를 관련시키는 실행 시스템(100)에 의해 실행되는 연산 리소스(computational resource)(120)를 준비하는 단계; 상기 식별 값을 포함하고 상기 연산 리소스(120)에 암호적으로 할당되는 보조 설명자(secondary descriptor)(138)를 액세스하는 단계; 및 상기 특성 지시자(136)에 기초하여 상기 실행 시스템의 연산 특성(510, 510a)에 대한 연산 리소스의 액세스를 승인하는 단계를 포함한다.

Description

연산 리소스 실행의 안전 보호{SECURING EXECUTION OF COMPUTATIONAL RESOURCES}
본 명세서는 연산 리소스(computational resources)의 실행을 안전하게 보호하는 것(securing)에 관련한다.
컴퓨터 소프트웨어와 같은 연산 리소스의 판매자들은, 제3자들에게 그러한 리소스들을 공급할 때 위험 부담을 가진다. 판매자는, 연산 리소스들의 특정 구성요소들에 대한 액세스(access)를 제한하길 원할 수 있다. 일부 경우에는, 일부 사용자는 특정 구성요소들에 액세스가 승인되는 반면에, 다른 사용자는 액세스가 거부될 것이다. 다른 경우에는, 리소스들의 특정 측면들(aspects)이 모든 사용자들로부터 차단될 것이다. 악의의 사용자는 리소스들 상에 배치된 제한들을 우회하고자 하는 시도를 할 수 있다.
일 측면에서, 대체로, 연산 특성들에 대한 액세스를 제어하는 방법은: 식별 값(identity value)을 포함하는 우선 설명자(primary descriptor)가 제공되어 있고 우선 설명자에 특성 지시자(feature indicator)를 관련시키는 실행 시스템에 의해 실행되는 연산 리소스(computational resource)를 준비하는 단계; 식별 값을 포함하고 연산 리소스에 대해 암호적으로 할당된 보조 설명자(secondary descriptor)를 액세스하는 단계; 및 특성 지시자에 기초하여 실행 시스템의 연산 특성에 대한 연산 리소스의 액세스를 승인하는 단계를 포함한다.
본원 발명의 태양들은 이하의 특성들 중 하나 이상을 포함할 수 있다.
연산 리소스가 암호화된다.
연산 리소스에 보조 설명자를 암호적으로 할당하는 과정은, 리소스를 보조 설명자와 결합하는 과정, 및 그 결합을 암호적으로 서명하는 과정(signing)을 포함한다.
결합을 암호적으로 서명하는 과정은, 우선 설명자에 할당된 비밀 암호 키(private encryption key)를 이용하여 결합으로부터 도출된 값을 암호화하는 과정을 포함한다.
방법은, 연산 리소스의 실행 중에 연산 리소스에 암호적으로 할당된 보조 설명자를 인증하는 단계를 더 포함한다.
보조 설명자를 인증하는 단계는, 우선 설명자에 할당된 공개 암호 키(public encryption key)를 이용하여 연산 리소스와 보조 설명자의 결합으로부터 도출된 값을 해독하는 단계를 포함한다.
방법은, 연산 리소스의 실행 전에 보조 설명자의 제1 인스턴스를 생성하는 단계, 연산 리소스의 실행 전에 보조 설명자의 제2 인스턴스를 생성하는 단계; 및 연산 리소스가 실행을 위해 인가되는지 여부를 결정하기 위해 설명자의 두 인스턴스를 비교하는 단계를 더 포함한다.
방법은, 보조 설명자의 제1 인스턴스를 암호화하는 단계를 더 포함한다.
방법은, 보조 설명자의 제2 인스턴스를 암호화하는 단계를 더 포함한다.
보조 설명자의 제1 인스턴스는, 보조 설명자의 제2 인스턴스와 공통되는 제1 데이터 값을 가지고, 보조 설명자의 제2 인스턴스와 공통되지 않는 제2 데이터 값을 가진다.
방법은, 연산 리소스를 실행하기 위한 명령어들을 가지는 내부 컨테이너(inner container)를 연산 리소스와 보조 설명자의 제1 인스턴스에 할당하는 단계, 및 연산 리소스를 실행하기 위한 명령어들을 데이터로서 표현하는 외부 컨테이너(outer container)를 내부 컨테이너와 보조 설명자의 제2 인스턴스에 할당하는 단계를 더 포함한다.
방법은, 외부 컨테이너를 암호적으로 서명하는 단계를 더 포함한다.
방법은, 제2 연산 리소스를 액세스하도록 하는 명령어를 연산 리소스로부터 수용하는 단계; 시스템 상에서 제2 연산 리소스를 실행하는 단계; 보조 설명자를 제2 연산 리소스에 암호적으로 할당하는 단계; 및 특성 지시자에 기초하여 연산 특성에 대한 액세스를 제2 실행된 연산 리소스에 제공하는 단계를 더 포함한다.
제2 연산 리소스는 제1 연산 리소스가 실행을 완료한 후에 실행을 계속한다.
연산 리소스는 제1 시스템 상에서 실행되고, 제2 연산 리소스는 제2 시스템 상에서 실행된다.
보조 설명자를 제2 연산 리소스에 암호적으로 할당하는 단계는, 보조 설명자의 인스턴스를 포함하는 저장 위치(storage location)에 액세스하는 단계를 포함한다.
방법은, 제2 식별 값을 포함하는 제2 보조 설명자(second secondary descriptor)에 암호적으로 할당된 제2 연산 리소스에 액세스하는 단계; 제2 연산 리소스를 실행하는 단계; 제2 식별 값을 포함하는 제2 우선 설명자(second primary descriptor)에 암호적으로 할당된 제2 특성 지시자에 액세스하는 단계; 및 제2 특성 지시자에 기초하여, 실행된 제2 연산 리소스에, 연산 특성에 대한 액세스를 제공하는 단계를 더 포함한다.
또 다른 측면에서, 대체로, 연산 특성에 대한 액세스를 제어하기 위한 시스템은, 식별 값을 포함하는 우선 설명자가 제공되는 단계를 포함하는 실행을 위해 연산 리소스를 준비하도록 구성된 개발 컴퓨터 시스템(development computer system) 및 연산 리소스를 실행하도록 구성된 실행 컴퓨터 시스템(execution computer system)을 포함한다. 연산 리소스를 실행하는 단계는, 우선 설명자에 특성 지시자를 관련시키는 단계; 식별 값을 포함하고 연산 리소스에 암호적으로 할당된 보조 설명자(secondary descriptor)를 액세스하는 단계; 및 특성 지시자에 기초하여 실행 시스템의 연산 특성에 대한 연산 리소스의 액세스를 승인하는 단계를 포함한다.
또 다른 측면에서, 대체로, 연산 특성들에 대한 액세스를 제어하기 위한 시스템은, 식별 값을 포함하는 우선 설명자가 제공되는 단계를 포함하는 실행을 위해 연산 리소스를 준비하는 수단; 및 연산 리소스를 실행하는 수단을 포함한다. 연산 리소스를 실행하는 단계는, 우선 설명자에 특성 지시자를 관련시키는 단계; 식별 값을 포함하고 연산 리소스에 암호적으로 할당된 보조 설명자를 액세스하는 단계; 및 특성 지시자에 기초하여 연산 특성에 대한 연산 리소스의 액세스를 승인하는 단계를 포함한다.
또 다른 측면에서, 대체로, 컴퓨터-판독가능 매체는 연산 특성들에 대한 액세스를 제어하기 위한 컴퓨터 프로그램을 저장한다. 컴퓨터 프로그램은, 컴퓨터로 하여금: 식별 값을 포함하는 우선 설명자가 제공되어 있고 우선 설명자에 특성 지시자를 관련시키는 실행 시스템에 의해 실행되는 연산 리소스를 준비하고; 식별 값을 포함하고 연산 리소스에 대해 암호적으로 할당된 보조 설명자를 액세스하며; 특성 지시자에 기초하여 실행 시스템의 연산 특성에 대한 연산 리소스의 액세스를 승인하게 하는 명령어들을 포함한다.
본원 발명의 측면들은 이하의 이점들 중 하나 이상을 포함할 수 있다.
연산 리소스에 설명자를 암호적으로 할당하는 것에 의해, 인가 없이는 그 할당이 변경될 수 없다. 설명자에 할당된 특성 지시자에 기초하여 연산 특성에 대한 액세스를 제공하는 것에 의해, 연산 특성은 인가 없이는 액세스 될 수 없다.
본원 발명의 다른 특성들 및 이점들은 이하의 설명, 및 청구범위로부터 명확하게 될 것이다.
도 1a는, 실행 시스템 및 관련된 구성요소들의 개관이다.
도 1b는, 실행 시스템 및 관련된 구성요소들의 개관이다.
도 2a는, 데이터 흐름도의 블록 다이어그램이다.
도 2b는, 실행 시스템의 블록 다이어그램이다.
도 3a는, 키 컨테이너의 블록 다이어그램이다.
도 3b는, 구성요소 컨테이너의 블록 다이어그램이다.
도 4a는, 브랜드 토큰들(brand tokens)의 생성을 위한 실행 시스템의 일부이다.
도 4b는, 실행 스크립트(execution script)의 생성을 위한 실행 시스템의 일부이다.
도 4c는, 스크립트 컨테이너(script container)의 생성을 위한 실행 시스템의 일부이다.
도 5a는, 스크립트 컨테이너의 액세스를 위한 실행 시스템의 일부이다.
도 5b는, 실행 스크립트의 액세스를 위한 실행 시스템의 일부이다.
도 5c는, 특성들의 이네이블(enabling)/디세이블(disabling)을 위한 실행 시스템의 일부이다.
도 6a는, 또 다른 브랜드 토큰의 생성을 위한 실행 시스템의 일부이다.
도 6b는, 또 다른 브랜드 토큰의 액세스를 위한 실행 시스템의 일부이다.
도 7은, 브랜드의 할당을 위한 절차의 플로우 차트이다.
도 8은, 특성 지시자의 액세스를 위한 절차의 플로우 차트이다.
도 9는, 실행 가능한 구성요소의 실행을 위한 절차의 플로우 차트이다.
도 10은, 특성에 대한 액세스의 제공을 위한 절차의 플로우 차트이다.
(개요)
연산 리소스가 컴퓨터 시스템 상에서 실행된 때, 리소스는 특정 방법으로 동작하고, 컴퓨터 시스템의 특정 특성들에 액세스할 수 있다. 리소스를 실행하는 악의의 사용자는, 리소스의 공급자 또는 인가자(authority)에 의해 실행 상에 부과된(imposed) 어떠한 제한들을 극복하기 위해, 보안상 결함을 이용하는 시도를 할 수 있다. 예를 들어, 악의의 사용자는, 리소스가 처음부터 설계되어 있지 않은 용도로 이용되도록, 시스템의 특성들을 이용하는 방법으로 동작시키기 위해, 그 리소스를 수정하는 시도를 할 수 있다. 그러므로, 컴퓨터 시스템은, 어떠한 사용자도 인가 없이 리소스를 수정 또는 함부로 변경할 수 없음을 보증하기 위해, 관련된 연산 리소스의 완전성(integrity)을 보호할 수 있다. 일부 경우에는, 리소스의 인가자는, 비록 어떠한 사용자가 리소스를 실행하도록 허용된 경우라도, 그러한 사용자가 리소스의 잠재적인 구조 또는 설계에 대한 액세스를 시도하는 것을 방해하기를 원할 수도 있다.
나아가, 연산 리소스의 인가자는, 리소스가 실행되는 컴퓨터 시스템의 인가자와는 상이한 엔티티(entity)가 될 수 있다. 예를 들어, 컴퓨터 시스템에 대한 시스템 소프트웨어를 제공하는 시스템 인가자는, 리소스 인가자가 시스템 소프트웨어와 함께 리소스를 이용하는 리소스로서 소프트웨어 모듈들을 개발하는 것을 가능하게 할 수 있다. 이 경우에, 시스템 인가자는, 리소스 인가자가 시스템의 일부로 제한된 특성들에 대해서만 액세스하는 것을 허용하길 원할 수 있다. 그러므로, 시스템은, 서로 오버랩(overlap)할 수 없는 세트들에 있어서, 이용 가능한 특성들의 특정 세트에 대한 연산 리소스의 액세스를 제공하고, 이용 가능한 특성들의 다른 각각의 세트들에 대한 다른 연산 리소스들 액세스를 제공하기도 하는 메커니즘을 가질 수 있다.
복잡한 컴퓨터 시스템은, 모두가 연산 리소스들의 다수의 인스턴스들의 형태로 실행할 수 있고 서로 상호 작용할 수 있는, 많은 상이한 연산 리소스들과 관련될 수 있다. 예를 들어, 시스템은, 제2 연산 리소스의 실행을 차례로 야기하는 하나의 연산 리소스를 실행할 수 있다. 동시에, 제3 연산 리소스는 제2 연산 리소스의 또 다른 인스턴스의 실행을 야기할 수 있다. 이러한 종류의 복잡한 컴퓨터 시스템은, 연산 리소스의 인스턴스들이 연산 리소스의 다른 인스턴스들과 관련되는 것을 기록하는(keep track of) 메커니즘을 가질 수 있다. 나아가, 시스템은, 오퍼레이터나 사용자에 의해 실행되는 제1 리소스와 같이 오직 하나의 연산 리소스의 액세스 특권(access privileges)에 기초하여 특정 특성들에 대한 액세스를 허용하도록 이 정보를 이용할 수 있다. 이 시나리오에서, 제1 연산 리소스와 관련되는 연산 리소스의 모든 실행된 인스턴스들은, 오직 제1 연산 리소스에 대해 액세스 가능한 특성들에 대한 액세스만을 가질 것이다.
도 1은, 관련된 주요한 구성요소들 사이의 상호관계를 보여주는 컴퓨터 시스템의 예시적인 배열에 대한 블록 다이어그램이다. 실행 시스템(100)은 실행 가능한 구성요소(executable component)(120)를 취급하는 실행 모듈(110)을 포함한다. 실행 가능한 구성요소(120)는, 컴퓨터 프로그램, 소프트웨어 코드, 또는 또 다른 종류의 실행 가능한 구성요소와 같은 실행될 수 있는 어떠한 별개의 컴퓨터 성분도 포함한다.
실행 가능한 구성요소(120)는, 구성요소 컨테이너(122) 내에 저장될 수 있다. 선택적으로, 구성요소 컨테이너(component container)(122) 내의 실행 가능한 구성요소(120)는, 실행 시스템(100)에 대해 이용 가능한 대칭 차단 키(symmetric obscuring key)(112)를 이용하여 암호화될 수 있다. 구성요소 컨테이너(122)는, 브랜드(130) 및 전자적 구성요소 서명(electronic component signature)(124)을 포함하는 실행 가능한 구성요소(120)와 관계되는 다른 정보도 포함한다. 브랜드(130)는, 어떠한 특성들(510, 510a)이 이 구성요소와 함께 이용될 수 있는지를 나타내는 구성요소에 대한 ID(identity)이다. 브랜드(130)와 관련된 구성요소는, 동일한 브랜드를 식별하는 다른 구성요소들과 같이 동일한 특성들(510, 510a)에 대한 액세스를 가진다. 특성들(510, 510a)은, 실행 시스템(100)의 상이한 구성요소들이 될 수 있다. 예를 들어, 특성들(510, 510a)은, 커맨드(command), 명령어(instruction), 소프트웨어 프로세스(software process), 하드웨어 장치(hardware device), 데이터 파일(data file), 다른 종류의 구성요소, 또는 이의 어떠한 조합에도 대응할 수 있다.
실행 시스템(100)은, 하나 이상의 브랜드들(130, 130a, 130b)도 포함하는 키 컨테이너(key container)(132)에 대한 액세스를 가진다. 실행 모듈(110)은 입력으로 키 컨테이너(132)를 수신한다. 시스템의 다른 부분에 대한 입력으로서의 시스템의 일 부분의 관계가, 본 명세서 내의 도면들을 통틀어 이용되는 화살표에 의해 도면 내에서 표시된다. 키 컨테이너(132) 내의 각 브랜드(130)는, 브랜드 공개 키(brand public key)(134)와 관련된다. 실행 시스템(100)은, 구성요소 컨테이너(122) 내의 브랜드(130)가 유효함을 입증하기 위해 브랜드 공개 키(134)를 이용한다. 각 브랜드(130)는, 브랜드(130)와 관련된 실행 시스템(100)의 특성들(510, 510a)을 설명하는 특성 지시자(136)와 관련되기도 한다. 브랜드(130)와 관련된 구성요소(120)는 오직 특성 지시자(136)에 의해 설명되는 특성들(510, 510a)에 대해서만 액세스할 수 있다.
실행 시스템(100)은 구성요소 컨테이너(122)에 액세스하는 것에 의해 실행 가능한 구성요소(120)를 실행한다. 실행 시스템(100)은 구성요소 서명(124)이 유효한지 여부를 결정하는 서명 인증 모듈(signature verification module)(140)을 가진다. 서명 인증 모듈(140)은 유효성 체크(validity check)를 수행하기 위해 브랜드 공개 키(134)를 이용한다. 실행 가능한 구성요소(120)가 암호화되면, 서명 인증 모듈(140)은 차단 키(112)를 이용하여 유효한 구성요소 컨테이너(122)를 해독하기 위해 해독 모듈(decryption module)(142)로 통과시킨다. 실행 가능한 구성요소(120)는 이후 실행 시스템(100)에 이용 가능하게 된다.
실행 시스템(100)은 브랜드 토큰화 모듈(brand tokenization module)(144)을 가지기도 한다. 브랜드 토큰화 모듈(144)은 구성요소(120)와 관련된 브랜드(130)를 포함하는 브랜드 토큰(brand token)(138)을 준비한다. 브랜드 토큰(138)은, 구성요소가 실행되는 동안에 구성요소(120)와 관련된 브랜드(130)를 유지하기 위해 이용된다.
실행 모듈(110)이 구성요소(120)를 실행할 때, 브랜드 토큰화 모듈(144)은 브랜드 토큰(138)을 안전하게 구성요소(120)에 부착한다. 실행 중에, 구성요소(120)는, 오직 브랜드 토큰(138) 내의 브랜드(130)와 관련된 특성 지시자(136)에 의해 설명되는 실행 시스템(100)의 특성들을 액세스할 수 있다.
도 1b는, 컴퓨터 시스템의 또 다른 예시적인 배열에 대한 블록 다이어그램이다. 도 1b에서, 브랜드 토큰(138)은, 브랜드(130)를 다른 실행 가능한 구성요소(120a)와 관련시키기 위해 이용될 수도 있다. 실행 가능한 구성요소(120)가 또 다른 실행 가능한 구성요소(120a)의 인스턴스의 실행을 야기하면, 실행 상황 모듈(execution context module)(146)은 브랜드 토큰(138)이 다른 실행 가능한 구성요소(120a)에 부착되는 것을 허용할 것이다. 그러므로, 다른 실행 가능한 구성요소(120a)는, 비록 다른 실행 가능한 구성요소(120a)가 자체 구성요소 컨테이너(122a) 내에 브랜드(130)를 가지지 않아도, 브랜드 토큰(138) 내의 브랜드(130)와 관련된 특성 지시자(136)에 의해 설명되는 특성들을 액세스할 수 있을 것이다. 브랜드 토큰(138)은, 실행 상황 모듈(146)을 이용하여, 데이터 구성요소(121)와 같은 실행 불가능한 구성요소에 부착될 수도 있다. 실행 상황 모듈은, 도면 내에서 다수의 인스턴스들(146, 146a)로서 보여지나, 그 구현에 따라 오직 하나의 인스턴스만이 필요할 수 있다.
실행 가능한 구성요소(120, 120a) 중 하나는, 네트워크(104)를 통해 액세스 되는 보조 또는 원격 시스템과 같은 또 다른 실행 시스템(100a) 상의 실행 가능한 구성요소(120b)를 액세스할 수도 있다. 다른 실행 시스템(100a)은 차단 키(112)를 액세스하는 것이 가능한 실행 모듈(110a)을 가지기도 하고, 브랜드(130)를 포함하는 키 컨테이너(132a)에 대한 액세스를 가진다. 실행 상황 모듈(146b)은, 브랜드 토큰(138)이 다른 실행 시스템(100a)에 의해 취급되는 실행 가능한 구성요소(120b)에 부착되는 것을 허용할 수 있다. 그러므로, 실행 가능한 구성요소(120b)는, 비록 구성요소 컨테이너(122b)가 브랜드(130)를 포함하지 않아도, 브랜드(130) 아래에서 동작할 수 있다. 실행 시스템(100)은, 표준 네트워크 프로토콜(standard network protocol), 표준 원격 프로시저 호출 프로토콜(standard remote procedure call protocol), 커스텀-테일러드 프로토콜(custom-tailored protocol), 또 다른 종류의 프로토콜 또는 이의 어떠한 조합들에 따라 다른 실행 시스템(100a)과 함께 상호 작용할 수 있다.
일 실시예에서, 실행 가능한 구성요소(120)는, 구성요소들(데이터 구성요소(121) 또는 실행 가능한 구성요소(120) 중 어느 하나)을 표현하는 그래프 내의 꼭지점들, 및 구성요소들 사이의 데이터의 흐름을 표현하는 그래프 내의 지시 링크들 또는 "에지들"을 가지는, 지시 그래프에 의해 표현되는 "데이터 흐름 그래프"를 이용하여 구현된다. 그래프는, 모듈식의 엔티티(modular entity)이다. 각 그래프는 하나 이상의 다른 그래프로 구성될 수 있고, 특수 그래프(particular graph)는 더 큰 그래프 내의 구성요소가 될 수 있다. 그래픽 개발 환경(Graphical Development Environment, GDE)은, 실행 가능한 그래프들을 지정하고 그래프 구성요소들에 대한 파라미터들을 정의하기 위한 사용자 인터페이스를 제공한다. 그러한 그래프 기반 연산을 구현하는 시스템은, 전체로서 참조되는 것으로 본 명세서에 병합되는, "EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS"의 미국 특허 5,966,072호에서 설명된다.
도 2a를 참조하면, 데이터 흐름 그래프(201)의 인스턴스는, 데이터 흐름 그래프(201)의 실행 가능한 구성요소(204a-204j)에 의해 처리될 데이터의 집합을 제공하는 입력 데이터 세트 구성요소(202)를 포함한다. 예를 들어, 데이터 세트 구성요소(202)는, 데이터 시스템 또는 거래 처리 시스템과 관련된 거래와 연관된 데이터 레코드들을 포함할 수 있다. 각 실행 가능한 구성요소(204a-204j)는, 데이터 흐름 그래프(201) 전체에 의해 정의되는 연산의 일부분과 관련된다. 작업 구성요소(work elements)(예컨대, 데이터 집합으로부터의 개별 데이터 레코드들)는 구성요소의 하나 이상의 입력 포트로 들어가고, 출력 작업 구성요소(입력 작업 구성요소의 일부 경우들 또는 처리된 버전인))는, 전형적으로 구성요소의 하나 이상의 출력 포트에서 나온다. 그래프(201)에서, 구성요소(204e, 204g, 및 204j)로부터의 출력 작업 구성요소는 출력 데이터 세트 구성요소(202a - 202c) 내에 저장된다.
도 2b는, 저장 시스템(210)에 연결되고, 데이터 흐름 그래프와 같은 하나 이상의 안전 프로그램을 이용하여 처리될, 데이터 소스(212)로부터 수신된 데이터를 처리하도록 구성된, 예시적인 실행 시스템(100)을 보여준다. 데이터 소스(212)는, 각각이 다양한 저장 포맷들(예컨대, 데이터베이스 테이블, 스프래드시트 파일, 플랫 텍스트 파일, 또는 컴퓨터 본체에 의해 이용되는 고유의 포맷) 중 어떠한 포맷으로 데이터를 저장할 수 있는, 저장 장치 또는 온라인 데이터 스트림에 대한 연결과 같은 데이터의 하나 이상의 소스를 포함할 수 있다. 실행 시스템(100)은, 본 명세서에서 설명된 저장 시스템(210) 내에 저장된 설명자(예컨대, 키 컨테이너)를 이용하여 안전성을 제공하는, 안전성 레이어(214), 및 운영 시스템(216)을 포함한다. 일 실시예에서, 안정성 레이어(214)는 운영 시스템(216)의 일 부분이다.
실행 시스템(100)은, 처리를 위해, 데이터 소스(212)로부터 데이터를 수신한다. 데이터 소스(212)를 제공하는 저장 장치는, 예를 들어, 운영 시스템(216)(예컨대, 하드 드라이브(218))을 실행시키는 컴퓨터에 연결된 저장 매체 상에 저장되는, 실행 시스템(100)의 일부가 될 수 있거나, 원격 연결을 통해, 운영 시스템(216)을 실행시키는 컴퓨터와 통신하는 원격 시스템(예컨대, 컴퓨터 본체(220)) 상에서 호스트 되는(being hosted), 실행 시스템(100)에 원격으로 연결될 수 있다.
데이터 저장 시스템(210)은, 개발 시스템(230) 내의 개발자(234)에 의해 개발되는 안전 프로그램(232)을 수신할 수 있다. 개발자(234)는, 본 명세서에서 설명된 설명자를 암호적으로 할당하기 위해 구성된 개발 시스템(230)과 함께, 실행 시스템(100) 내의 실행을 위한 안전 프로그램을 개발할 수 있다. 개발 시스템(230)은, 일 실시예에서, 데이터 흐름 그래프로서 어플리케이션들을 개발하기 위한 시스템이다(예컨대, 상기 설명된 GDE를 이용하여). 본 명세서에서 설명된 특성들에 부가하여, 예를 들어, 참조로서 본 명세서에 병합되는 “Managing Parameters for Graph-Based Applications,”로 명명된 미국 공개 특허 2007/0011668호 내에서, 그러한 시스템의 다른 특성들이 더 상세하게 설명된다.
개발 시스템(230) 및 실행 시스템(100)은, UNIX 운영 시스템과 같은 적합한 운영 시스템의 제어 아래에 있는 하나 이상의 범용 컴퓨터 시스템 상에서 각각 호스트 될 수 있고, 저장 시스템(210)은, 컴퓨터 시스템과 통신하거나 이와 융합된 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 시스템은, 근거리에 위치하거나(예컨대, SMP 컴퓨터들과 같은 멀티프로세서 시스템들), 근접하여 분배되거나(예컨대, 클러스터들 또는 MPP들과 같이 연결된 다수의 프로세서들), 원거리 또는 원거리에서 분배되거나(예컨대, 근거리 통신망(local area network, LAN) 및/또는 원거리 통신망(wide area network, WAN)을 통해 연결된 다수의 프로세서들) 그것에 관한 어떠한 조합 중 어느 하나인 다수의 중앙 처리 장치(central processing unit, CPU)들을 이용하여 컴퓨터 시스템의 구성을 포함하는 다점 병렬 연산 환경(multiple-node parallel computing environment)을 포함할 수 있다.
(컨테이너)
도 3a에서 보이듯이, 키 컨테이너(132)는 다수의 브랜드들(130, 130a, 130b)를 포함할 수 있다. 실행 가능한 구성요소(120)는 하나의 브랜드(130a)에 따라 동작할 수 있고, 또 다른 것은 또 다른 브랜드(130b)에 따라 동작할 수 있다. 실행 시스템(100)은, 구성요소와 관련된 브랜드(130)가 키 컨테이너(132) 내에서 이용 가능하면, 실행 가능한 구성요소(120)를 취급한다. 일 예시에서, 키 컨테이너(132)는, 데이터 파일, 메모리 위치, 또는 또 다른 종류의 컨테이너가 될 수 있다.
각 브랜드(130)는, 서명 인증 모듈(140)이, 실행 가능한 구성요소(120) 및 브랜드(130) 사이의 관련성이 유효한지 여부를 결정하도록 허용하는, 공개 키(134)에 대응한다. 각 브랜드(130)는, 브랜드 인가자가, 브랜드(130)가 유효한 시간기(time period)를 설정하도록 허용하는, 만료 지시자(expiration indicator, 135)를 가지기도 한다. 나아가, 각 브랜드(130)는, 이 브랜드(130)에 따라 동작하는 실행 가능한 구성요소(120)에 이용 가능한 실행 시스템(100)의 특성들(510)을 설명하는, 특성 지시자(136)를 가진다.
도 3b에서 보이듯이, 구성요소 컨테이너(122)는 구성요소(300)에 관련하는 구성요소들을 가진다. 구성요소(300)는, 예를 들어, 실행 가능한 구성요소(120)가 될 수 있다. 일 예시에서, 자체로 실행 가능하지는 않지만, 실행 가능한 구성요소(120)에 의해 이용되는 정보를 가지는 데이터 구성요소(121)와 같은, 구성요소(300)의 다른 타입들이 이용될 수 있다. 일 예시에서, 구성요소 컨테이너(122)는, 데이터 파일, 메모리 위치, 또는 또 다른 종류의 컨테이너가 될 수 있다.
구성요소(300)는, 인가되지 않은 뷰잉(viewing) 또는 분석으로부터의 구성요소의 구조 또는 내용들을 차단하기 위해 선택적으로 암호화된다. 암호화 모듈(342)은 구성요소(300)를 암호화하기 위해 차단 키(112)를 이용한다. 암호화 모듈(342)은, 데이터 암호화 표준(Data Encryption Standard, DES), 개선된 암호화 표준(Advanced Encryption Standard, AES), 또 다른 표준 암호화 프로토콜, 또는 이의 조합에 기초될 수 있다. 암호화 모듈(342)은, 독자적으로 또는 표준 암호화 프로토콜과 함께, 커스텀-테일러드 암호화 프로토콜을 이용할 수 있다.
구성요소 컨테이너(122)는, 구성요소(300)와 관련된 브랜드(130)를 포함한다. 브랜드(130)는, 구성요소(300)에 특성들의 세트를 할당하기 위해 이용된다.
구성요소 컨테이너(122)는, 구성요소 컨테이너(122)의 내용들의 유효성을 확인하기 위해 이용되는, 구성요소 서명(124)을 가진다. 서명 생성 모듈(340)은, 전자적 서명 프로토콜에 따라, 구성요소(300)와 브랜드(130)를 처리하는 것에 의해 구성요소 서명(124)을 생성한다. 프로토콜은, RSA, 디지털 서명 알고리즘(Digital Signature Algorithm, DSA), 전자적 서명에 이용되는 표준 암호 프로토콜(standard cryptographic protocol), 일립틱 커브 프로토콜(elliptic curve protocol), 또는 또 다른 종류의 암호 프로토콜이 될 수 있다. 서명 생성 모듈(340)은, 독자적으로 또는 표준 암호화 프로토콜과 함께, 커스텀-테일러드 암호화 프로토콜을 이용할 수 있다.
구성요소 서명(124)은 브랜드 비밀 키(334)를 이용하여 생성된다. 브랜드 비밀 키(334)는, 구성요소 컨테이너(122)의 인가자에 대해 이용 가능하고, 구성요소(300)를 취급하는 실행 시스템(100)에서는 이용 가능하지 않다. 실행 시스템(100)은, 오직, 브랜드(130) 및 구성요소(300)가 구성요소 서명(124)이 생성되었기 때문에 대체되지 않는 것임을 증명할 수 있다. 그러므로, 구성요소 서명(124)은, 구성요소(300)의 완전성(integrity)을 보증하는 것뿐만 아니라 브랜드(130)와 구성요소(300)를 관련시키는, 암호적으로 안전한 수단이다.
나아가, 구성요소 컨테이너(122)는, 이 구성요소 컨테이너(122)에 대한 유일한 식별자(unique identifier)인 컨테이너 번호(302)를 가진다. 또한, 이 구성요소 컨테이너(122)를 구성하는 데이터의 특별한 배열을 나타내는, 컨테이너 포맷(304)을 가지기도 한다. 또한, 구성요소 컨테이너(122)는, 구성요소(300)가 암호화되는지 여부를 포함하는, 내부에 포함된 구성요소(300)를 구성하는 데이터의 특별한 배열을 나타내는, 구성요소 타입(306)을 가지기도 한다.
(브랜드 토큰화)
상기 설명된 것으로서, 실행 시스템(100)은, 실행에 우선하여 브랜드(130)를 각 구성요소에 관련시키기 위해, 실행 가능한 구성요소(120, 120a, 120b)에 브랜드 토큰을 부착한다. 실행 시스템(100)은, 이러한 관련을 안전하게 하기 위해 각 실행에 앞서 이러한 토큰화 단계들을 거쳐서, 만약에 악의의 사용자가 브랜드(130)를 변경 또는 대체하기 위해 실행 프로세스를 가로채는 시도를 한다면, 이러한 악의의 행위가 검출될 수 있다.
도 4a에서 보이듯이, 실행 시스템(100)은, 브랜드 토큰의 다수의 인스턴스들(138a, 138b)을 이용한다. 각 인스턴스는, 본 예시에서는 실행 가능한 구성요소(120)의 구성요소 컨테이너(122)인, 구성요소의 구성요소 컨테이너로부터 생성된다.
실행 시스템(100)은 서명 인증 모듈(140)을 이용하여 구성요소 서명(124)을 인증한다. 서명 인증 모듈(140)은, 실행 가능한 구성요소(120) 또는 브랜드(130)가 조정되는지 또는 그렇지 않으면 구성요소 컨테이너(122)가 생성된 이후의 일 시점에서 변경되는지 여부를 결정하기 위해, 브랜드 공개 키(134)를 이용한다. 실행 가능한 구성요소(120) 또는 브랜드(130) 중 어느 하나가 변경되면, 서명 인증 모듈(140)은 불일치를 검출하고 구성요소 컨테이너(122)를 거부할 것이다.
브랜드 토큰화 모듈(144, 144a)은, 브랜드 토큰 인스턴스(138a, 138b)를 생성하기 위해 구성요소 컨테이너(122)의 내용들을 이용한다. 브랜드 토큰화 모듈의 두 인스턴스들이 보여지나, 일 실시예에서는, 오직 하나의 인스턴스만 필요할 수 있다. 브랜드 토큰화 모듈(144, 144a)은, 구성요소 컨테이너로부터 브랜드 토큰의 각 인스턴스(138a, 138b) 내로 브랜드(130)를 배치한다. 브랜드 토큰화 모듈(144)은, 실행 가능한 구성요소(120)가 암호화되었는지 여부를 나타내는 플래그(flag)(406)를 생성하기 위해 구성요소 타입(306)을 이용하기도 한다.
나아가, 난수 발생기(random number generator)(410)는, 브랜드 토큰의 각 인스턴스(138a, 138b)에 대해 상이한 살트(salt)(412)를 생성한다. 그러므로, 브랜드 토큰의 각 인스턴스(138a, 138b)는 다른 인스턴스들과 상이한 유일한 랜덤 값을 포함할 것이다.
도 4b에서 보이듯이, 브랜드 토큰화 모듈(144)은 실행 스크립트(420)를 생성한다. 실행 스크립트(420)는, 실행 가능한 구성요소(120)의 인스턴스를 실행하기 위한 명령어들을 포함하고, 몇몇의 어떠한 형태를 가질 수 있다. 실행 스크립트(420)는, 실행 모듈(110)에 대해, 실행 가능한 구성요소(120)의 적절한 취급을 위해 요구되는 명백한 정보를 나타내는, 해석된 또는 편집된 세트가 될 수 있다.
실행 가능한 구성요소(120)는 실행 스크립트(420)와 관련된다. 예를 들어, 실행 스크립트(420)는, 실행 가능한 구성요소(120) 자체를 구성하고 있는 명령어들을 포함하거나, 대신에 실행 가능한 구성요소(120)로 포인터 또는 참조를 가질 수 있다. 실행 스크립트(420)의 명령어들 중 하나는 본 포인터 또는 참조를 액세스할 수 있다.
실행 가능한 구성요소(120)가 구성요소 컨테이너(122) 내에 위치되기 전에 암호화되면, 해독 모듈(142)은 차단 키(112)를 이용하여 실행 가능한 구성요소(120)의 해독을 취급한다.
브랜드 토큰의 인스턴스 중 하나(138a)는 실행 스크립트(420)와 함께 이용된다. 브랜드 토큰화 모듈(144)은, 실행 번호(408)를 생성하여 브랜드 토큰 인스턴스(138a) 내에 위치시키는 것에 의해, 브랜드 토큰 인스턴스(138a)를 완료한다. 동일한 실행 번호(408)가 실행 가능한 구성요소(120)의 본 실행을 위한 토큰화 프로세스 내에서 이용되는 브랜드 토큰(138)의 모든 인스턴스들에 적용된다. 브랜드 토큰화 모듈(144)은, 브랜드 토큰의 본 인스턴스(138a)에 할당되는 실행 번호(408)를 기록하고, 다른 인스턴스들에 대해 동일한 실행 번호(408)를 이용할 것이다.
일단 브랜드 토큰 인스턴스(138a)가 완료되면, 암호화 모듈(342)이 차단 키(112)를 이용하여 브랜드 토큰 인스턴스를 암호화한다. 브랜드 토큰화 모듈(144)은 실행 스크립트(420) 내에 암호화된 브랜드 토큰(438a)을 위치시킨다. 실행 가능한 구성요소(120)와 함께, 실행 스크립트(420)는, 암호화된 브랜드 토큰(438a) 자체를 구성하는 데이터를 포함하거나, 대신에 암호화된 브랜드 토큰(438a)에 대한 포인터 또는 참조를 가질 수 있다.
도 4c에서 보이듯이, 브랜드 토큰화 모듈(144)은, 스크립트 컨테이너(430)를 생성하여 실행 스크립트(420) 내부에 위치시킨다. 일 실시예에서, 스크립트 컨테이너(430)는 데이터 파일 또는 데이터 구조이다. 브랜드 토큰화 모듈(144)은, 브랜드 토큰의 제1 인스턴스(138a)에 대해 이용되는 동일한 실행 번호(408)를 부가하는 것에 의해, 브랜드 토큰의 제2 인스턴스(138b)를 완료하기도 한다. 브랜드 토큰의 제2 인스턴스(138b)는, 암호화 모듈(342)로 암호화되고, 암호화된 브랜드 토큰(438b)은 스크립트 컨테이너(430) 내부에 위치된다.
토큰화 서명 생성 모듈(450)은, 스크립트 컨테이너(430)에 기초하여 스크립트 컨테이너 서명(424)을 생성한다. 토큰화 서명 생성 모듈(450)은 실행 시스템(100)에서 이용 가능한 토큰화 비밀 키(tokenizer private key)(452)를 이용한다. 스크립트 컨테이너 서명(424)은, 구성요소 실행을 개시한 때, 스크립트 컨테이너(430)의 유효성을 보증하는 메커니즘을 제공한다.
토큰화 서명 생성 모듈(450)은, 다른 경우에서 설명되는 다른 서명 생성 모듈들과 유사한 방법으로 동작하고, 전자적 서명 프로토콜에 따라 스크립트 컨테이너(430)를 처리하는 것에 의해 스크립트 컨테이너 서명(424)을 생성한다. 프로토콜은, RSA, 디지털 서명 알고리즘(Digital Signature Algorithm, DSA), 일립틱 커브 프로토콜(elliptic curve protocol), 또는 또 다른 종류의 암호 프로토콜과 같이, 전자적 서명을 위해 이용되는 표준 암호 프로토콜이 될 수 있다. 토큰화 서명 생성 모듈(450)은, 독자적으로 또는 표준 암호화 프로토콜과 함께, 커스텀-테일러드 암호화 프로토콜을 이용할 수 있다. 스크립트 컨테이너(430)가 수립된 후에, 실행 가능한 구성요소(120)가 안전 실행을 위해 준비된다.
(브랜드 된 실행(Branded Execution))
도 5a에서 보이듯이, 실행 모듈(110)은 실행 가능한 구성요소(120)를 포함하는 스크립트 컨테이너(430)를 수신한다. 실행 모듈(110)은, 실행 가능한 구성요소(120)의 안전 실행을 허용하도록 구성된 스크립트 컨테이너(430)의 내용들을 증명하기 위해 요구되는 단계들을 수행한다.
실행 모듈(110)은, 컨테이너 서명 인증 모듈(550)을 이용하여 스크립트 컨테이너 서명(424)을 인증한다. 컨테이너 서명 인증 모듈(550)은, 스크립트 컨테이너(430)가 조정되는지 또는 그렇지 않으면 스크립트 컨테이너(430)가 생성된 이후의 일 시점에서 변경되는지 여부를 결정하기 위해, 컨테이너 공개 키(454)를 이용한다. 컨테이너 서명 인증 모듈(550)은 불일치를 검출하고 스크립트 컨테이너(430)를 거부할 것이다. 실행 모듈(110)은, 차단 키(112)를 이용하여, 인증된 스크립트 컨테이너(430)로부터 암호화된 브랜드 토큰(438b)을 해제하고, 해독 모듈(142)에 적용하기도 한다.
도 5b에서 보이듯이, 실행 모듈(110)은, 해독 모듈(142)에 의해 이전에 해독된, 브랜드 토큰(138b)의 해독된 인스턴스를 획득한다. 실행 모듈(110)은, 인증된 스크립트 컨테이너(430)로부터 이전에 획득된, 실행 스크립트(420) 내에 포함된 명령어들을 수행하기도 한다. 실행 스크립트(420)는, 또 다른 암호화된 브랜드 토큰(438a) 뿐만 아니라, 실행 가능한 구성요소(120)를 포함한다. 실행 모듈(110)은 이 암호화된 브랜드 토큰(438a)에 해독 모듈(142)을 적용한다.
도 5c에서 보이듯이, 토큰 인증 모듈(148)은, 실행 스크립트(420)로부터 해제된 브랜드 토큰의 제1 인스턴스(138a)의 내용과 스크립트 컨테이너(430)로부터 해제된 브랜드 토큰의 제2 인스턴스(138b)의 내용을 비교한다. 브랜드 토큰화 모듈(144)에 의해 생성된 것으로서의 브랜드 토큰의 두 인스턴스들(138a, 138b)은, 랜덤 살트(412a, 412b)를 제외하고 동일한 내용을 가질 것이다. 살트(412a, 412b)는 상이하나 브랜드(130) 및 실행 번호(408)를 포함하는, 내용이 동일하다면, 토큰 인증 모듈(148)은 인증된 브랜드(130)를 실행 모듈(110)에 제공할 것이다.
브랜드 토큰의 일 인스턴스(138a)가 실행 스크립트(420)와 함께 실행 모듈(110)에 도달하고 브랜드 토큰의 또 다른 인스턴스(138b)가 스크립트 컨테이너(430)와 함께 도달하기 때문에, 브랜드 토큰의 두 인스턴스들(138a, 138b)이, 실행 가능한 구성요소(120)의 신뢰성 및 브랜드(130)와의 관련성을 인증하기 위해 이용될 수 있다. 새로운 스크립트 컨테이너(430)는 매치하는 실행 번호(408)를 가지는 브랜드 토큰(138)을 가지지 않을 것이기 때문에, 어떠한 특별 실행 스크립트(particular execution script)(420)도 새로운 스크립트 컨테이너(430) 내부에 이를 위치시키는 것에 의해 재이용될 수 없다. 실행 스크립트(420)로부터의 브랜드 토큰 인스턴스(138a)는, 실행 스크립트(420)로부터의 브랜드 토큰 인스턴스들과 스크립트 컨테이너(430)는, 실행 모듈(110)에 의해 기대되는 것처럼, 상이한 랜덤 살트(412a, 412b)를 가지지 않을 것이기 때문에, 스크립트 컨테이너(430)와 함께 이용될 수 없다. 나아가, 스크립트 컨테이너(430)에 대한 새로운 브랜드 토큰 인스턴스는, 브랜드 토큰 인스턴스(138a)가 암호화된 브랜드 토큰(438a)으로서 차단 키(112)를 이용하여 암호화되기 때문에, 인가되지 않은 사용자에 의해 실행 스크립트(420) 내부의 브랜드 토큰 인스턴스(138a)로부터 생성될 수 없다.
실행 모듈(110)이, 토큰 인증 모듈(148)에 의해, 브랜드 토큰 인스턴스들(138a, 138b)이 유효한 브랜드(130)를 표시하는 것을 인지한 때, 실행 모듈(110)은, 만료 지시자(135) 및 브랜드 토큰 인스턴스들(138a, 138b) 내의 브랜드(130)에 대응하는 키 컨테이너 내의 브랜드(130)와 관련된 특성 지시자(136)에 액세스하기 위해, 키 컨테이너(132)를 액세스한다. 실행 모듈(110)은, 실행 가능한 구성요소에서 이용 가능한 특성 세트(500) 내의 일부 특성들(510a, 510b, 510c, 510d)을 이네이블(enable)하고 특성 세트(500) 내의 다른 특성들(512a, 512b)을 디세이블(disable)하기 위해, 특성 지시자(136)를 이용한다.
실행 모듈(110)은, 실행 스크립트(420)로부터 실행 가능한 구성요소(120)를 액세스하고, 브랜드(130)의 특성 지시자(120)에 따라 이네이블 된 특성들(510)만을 이용하여 실행하는 것을 허용한다.
(브랜드 된 실행 상황의 유지)
브랜드(130)와 관련된 실행 가능한 구성요소(120)는 다른 실행 가능한 구성요소들(120a)의 실행을 개시할 수 있다. 이러한 다른 실행 가능한 구성요소들(120a)은 그들의 컨테이너 파일들(122a) 내의 브랜드(130)와 직접적으로 관련될 수는 없으나, 대신에, 예를 들어, 실행 중의 브랜드(130)와 관련된다. 다른 실행 가능한 구성요소들(120a)은, 비록 다른 실행 가능한 구성요소들(120a)이 그들의 실행이 일부 다른 상황(context)에서 개시되면 다른 특성들(512a, 512b)을 액세스 할지라도, 특성 지시자(136)와 초기의 실행 가능한 구성요소(120)와 관련된 브랜드(130)에 따라 이네이블 된 특성들(510)에만 액세스할 것이다. 초기의 실행 가능한 구성요소(120)는, 다른 실행 가능한 구성요소들(120a)을 이용하여 디세이블 된 특성들(512a, 512b)의 액세스로부터 제한된다.
나아가, 다른 실행 가능한 구성요소들(120a, 120b)은, 초기의 실행 가능한 구성요소(120)가 실행을 종료한 이후라도, 실행 가능한 구성요소(120b)와 같은, 여전한 다른 실행 가능한 구성요소들의 실행을 개시할 수 있다. 실행 시스템(100)이 초기의 실행 가능한 구성요소(120)와 관련된 브랜드(130)를 기록하므로, 모든 이러한 구성요소(120, 120a, 120b)에 액세스 가능한 특성들(510)은 그 브랜드(130)의 특성 지시자(136)에 따라 결정될 것이다.
일 실시예에서, 실행 시스템(100)은, 다수의 실행 가능한 구성요소들(120)을 처리하고, 브랜드(130)를 그 실행 가능한 구성요소들(120)과 관련시킨다. 예를 들어, 실행 시스템(100)은, 다른 실행 가능한 구성요소들(120a)에 대한 이러한 정보를 유지하기 위한 메커니즘에 부가된 실행을 완료한 후에, 하나의 실행 가능한 구성요소(120)와 관련하는 정보를 유지할 수 있다. 나아가, 메커니즘은, 다른 구성요소들, 또는 악의의 사용자들이 유지된 정보에 액세스하거나 이를 변경하도록 허용하지 않거나, 메커니즘은 불필요한 오버헤드(overhead)를 부가하거나 불안정의 요소로서 동작하는 부가적인 구성요소를 가진다.
도 6a에서 보이듯이, 실행 시스템(100)은, 실행 가능한 구성요소(120)의 브랜드(130)를 인증하기 위해 이용되는 브랜드 토큰의 인스턴스들(138a, 138b)의 내용에 관해 토큰 인증 모듈(148)로부터 정보를 수신하는, 실행 상황 모듈(146)을 가진다. 실행 상황 모듈(146)은, 과도 컨테이너(transient container)(622) 및 과도 컨테이너(622)를 가리키는 환경 참조(environment reference)(610)를 생성한다. 환경 참조(610)는, 실행 가능한 구성요소(130)의 실행 환경(605)의 내용 내에 존재한다. 일 예시에서, 실행 환경(605)은 메모리 위치, 변수, 데이터 파일, 또는 실행 가능한 구성요소(120)의 실행에 관련하는 다른 종류의 정보를 포함하거나, 이러한 종류의 정보에 대한 어떠한 조합도 포함할 수 있다.
과도 컨테이너(622)는 실행 시스템(100)에 대해 전체에서 이용 가능하지 않다. 대신에, 과도 컨테이너(622)는 오직 환경 참조(610)를 액세스하는 것에 의해 이용 가능하다. 차례로, 환경 참조(610)는 오직 실행 가능한 구성요소(130)의 실행 환경(605)에서 이용 가능하다. 실행 가능한 구성요소(120)가 또 다른 실행 가능한 구성요소(120a)의 실행을 개시하면, 그 실행을 초래한 실행 가능한 구성요소(120)로서 동일한 실행 환경(605) 내에서 동작하기 때문에, 다른 실행 가능한 구성요소(120a)는, 환경 참조(610)에 대한 액세스가 승인된다. 일 예시에서, 과도 컨테이너(622)는 환경 참조(610)를 이용함이 없이 실행 시스템(100)의 일반적인 파일 시스템을 이용해서는 액세스 불가능한 데이터 파일이 될 수 있다. 과도 컨테이너(622)는 또 다른 실행 시스템(100a)에 의해 취급되는 실행 가능한 구성요소(120b)에 대해 이용 가능할 수 있다.
실행 상황 모듈(146)은, 브랜드 토큰의 새로운 인스턴스(138c)를 생성하기 위해, 토큰 인증 모듈(148)로부터 획득된 정보를 이용한다. 브랜드 토큰(138c)의 본 인스턴스는, 브랜드 토큰의 다른 인스턴스들(138a, 138b)과 마찬가지로 동일한 브랜드(130), 플래그(406), 및 실행 번호(408)를 가지고, 난수 발생기(410)로부터 획득된 새로운 랜덤 살트(412c)도 가진다. 실행 상황 모듈(146)은 브랜드 토큰의 새로운 인스턴스(138c)를 과도 컨테이너(622) 내부에 위치시킨다.
도 6b는, 실행 가능한 구성요소(120a)를 가지면서 브랜드(130)는 가지지 않는 구성요소 컨테이너(122a)를 보여준다. 실행 모듈(110)은, 실행 가능한 구성요소의 실행 환경(605)을 액세스하는 것에 의해 실행 가능한 구성요소(120a)를 준비한다. 본 실행 가능한 구성요소(120a)의 본 실행이 또 다른 실행 가능한 구성요소(120)에 의해 개시되면, 본 실행 가능한 구성요소(120a)가 다른 실행 가능한 구성요소(120)와 같이 동일한 실행 환경(605) 내에서 동작 될 것이고, 과도 컨테이너(622)에 대한 환경 참조(610)가 이용 가능하게 될 것이다. 실행 모듈(110)은, 과도 컨테이너(622) 내부의 브랜드 토큰 인스턴스(138c)를 액세스하고, 브랜드 토큰 내의 브랜드(130)를 획득한다. 또한, 브랜드 토큰 인스턴스(138c)는, 그 유효성을 확인하기 위해, 동일한 브랜드 토큰의 다른 인스턴스들(138a, 138b)에 비교될 수 있다. 예를 들어, 악의의 사용자가 브랜드 토큰의 다른 인스턴스들(138a, 139b) 중 어느 하나를 과도 컨테이너(622) 내로 복사하면, 과도 컨테이너(622) 내의 브랜드 토큰의 인스턴스(138c)는 다른 인스턴스들에서와 같이 동일한 랜덤 살트(412a, 412b)를 가질 것이며, 그러므로 무효로서 식별될 수 있다.
브랜드 토큰화 모듈(144, 144a)은, 실행 모듈(110)로부터 브랜드(130)를 활성화하고 획득한다. 브랜드 토큰화 모듈은, 도면 내에서 다수의 인스턴스들(144, 144a)로서 보여지나, 그 구현에 따라 오직 하나의 인스턴스만이 필요할 수 있다. 브랜드 토큰화 모듈(144, 144a)은, 브랜드(130), 새로운 실행 가능한 구성요소(120a)의 구성요소 컨테이너(122a) 내의 구성요소 타입(306)으로부터 결정되는 플래그(406a), 및 난수 발생기(410)로부터 획득된 새로운 살트들(412d, 412e)을 포함하는, 브랜드 토큰의 새로운 인스턴스들(138d)을 생성한다. 브랜드 토큰의 새로운 인스턴스들(138d, 138e)은, 도 4a-4c를 고려하여 상기 설명된 실행 가능한 구성요소(120)를 준비하기 위해, 브랜드 토큰화 모듈(144, 144a)에 의해 이용된다.
(과정)
도 7은, 실행 가능한 구성요소(120)에 브랜드(130)를 암호적으로 할당하기 위해 이용되는 예시적인 과정(700)에 대한 플로우 차트를 도시한다. 과정은, 실행 가능한 구성요소(120) 및 브랜드(130)에 기초하여 구성요소 컨테이너(122)에 대한 디지털 서명을 생성한다(702). 과정은, 디지털 서명을 인증하고(704), 브랜드 토큰의 다수의 인스턴스들(138a, 138b)에 브랜드(130)를 할당한다(706). 과정은, 브랜드 토큰의 하나의 인스턴스(138a)를 암호화하고(708), 실행 스크립트(420)에 이를 부착한다(710). 과정은, 브랜드 토큰의 다른 인스턴스(138b)를 암호화하고(712), 실행 스크립트(420)를 따라 스크립트 컨테이너(430)에 암호화된 브랜드 토큰을 부착한다(714). 과정은, 스크립트 컨테이너(430)에 기초하여 스크립트 컨테이너(430)에 대해 디지털 서명을 생성한다(716).
도 8은, 브랜드(130)에 할당된 특성 지시자(136)를 액세스하기 위해 이용되는 예시적인 과정(800)에 대한 플로우 차트를 도시한다. 과정은, 디지털 서명을 인증하고(802), 스크립트 컨테이너(430)를 액세스한다. 과정은, 브랜드 토큰의 인스턴스(138b)를 해독하고(804), 스크립트 컨테이너(430) 내에 실행 스크립트(420)를 액세스한다(806). 과정은, 브랜드 토큰의 또 다른 인스턴스(138a)를 해독하고(808), 실행 스크립트(420) 내의 실행 가능한 구성요소(120)를 액세스한다(810). 과정은, 브랜드 토큰의 두 인스턴스들(138a, 138b)을 인증한다(812). 브랜드 토큰 인스턴스들(138a, 138b) 내의 브랜드(130)를 이용하여, 과정은 키 컨테이너(132) 내의 브랜드(130)에 할당된 특성 지시자(136)를 획득한다(814).
도 9는, 실행 시스템(100) 상의 실행 가능한 구성요소(120)를 실행하기 위해 이용되는 인스턴스적인 과정(900)에 대한 플로우 차트를 도시한다. 과정은, 과도 컨테이너(622)를 생성하고(902), 과도 컨테이너(622)에 대한 환경 참조 포인팅을 생성한다(904). 과정은, 실행 가능한 구성요소(120)와 관련된 브랜드(130)를 포함하는 브랜드 토큰의 인스턴스(138c)를 생성한다(906). 과정은, 과도 컨테이너(622)에 브랜드 토큰의 인스턴스(138c)를 할당한다(908). 과정은, 환경 참조(622) 외에 과도 컨테이너(622)에 대한 어떠한 다른 참조도 모두 제거한다(910). 과정은, 실행 가능한 구성요소(120)를 실행하고(912), 실행 가능한 구성요소(120)의 실행 환경(602) 내에 환경 참조(610)를 위치시킨다.
도 10은, 특성 지시자(136)에 기초하여, 실행 시스템의 특성(510)에 대한 액세스를 실행 가능한 구성요소(120)에 제공하기 위해 이용되는 예시적인 과정(1000)에 대한 차트를 도시한다. 과정은, 브랜드(130)와 관련된 획득된 특성 지시자(136)에 액세스한다(1002). 과정은, 특성 지시자(136) 및 실행 시스템(100)에 대해 이용 가능한 특성 세트(500) 내의 대응하는 특성(510)에 의해 설명되는 특성(510)을 식별한다(1004). 과정은, 실행 가능한 구성요소(120)에 의해 액세스를 위한 특성(510)을 이네이블 한다(1006). 과정은, 브랜드(130)를 실행 가능한 구성요소(120)에 의해 개시되는 실행을 가지는 다른 실행 가능한 구성요소들(120a)과 관련시킨다(1008).
(구현)
상기 설명된 연산 특성들에 대한 액세스를 제어하는 접근방법은, 컴퓨터 상에서의 실행을 위한 소프트웨어를 이용하여 구현된다. 예를 들어, 소프트웨어는, 각각이 적어도 하나의 프로세서, 적어도 하나의 데이터 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 요소를 포함하는), 적어도 하나의 입력 장치 또는 포트, 및 적어도 하나의 출력 장치 또는 포트를 포함하는 하나 이상의 프로그램 된 또는 프로그래머블 컴퓨터 시스템(분배된, 클라이언트/서버 또는 그리드와 같이 다양한 아키텍처일 수 있는) 상에서 실행하는 하나 이상의 컴퓨터 프로그램들 내에 과정들을 형성한다. 소프트웨어는, 예를 들어, 연산 그래프들의 디자인과 구성과 관련된 다른 서비스들을 제공하는 더 큰 프로그램의 하나 이상의 모듈을 형성할 수 있다. 그래프의 노드들 및 엘리먼트들은 컴퓨터 판독가능 매체 내에 저장된 데이터 구조들로서 또는 데이터 집적소 내에 저장된 데이터 모델을 따르는 다른 조직된 데이터로서 구현될 수 있다.
소프트웨어는, CD-ROM과 같은, 범용 또는 특수 목적의 프로그래머블 컴퓨터에 의해 판독가능 하거나 실행되는 컴퓨터에 대해 네트워크의 통신 매체를 넘어 전송되는(전파된 신호로 인코딩 된) 저장 매체로 제공될 수 있다. 모든 기능들은, 코-프로세서들과 같은, 특수 목적 컴퓨터 또는 특수 목적 하드웨어를 이용하여 수행될 수 있다. 소프트웨어는, 소프트웨어에 의해 지정된 연산의 상이한 부분들이 상이한 컴퓨터들에 의해 수행되는 분배된 방법으로 수행될 수 있다. 각각의 그러한 컴퓨터 프로그램은, 저장 매체 또는 장치가 본 명세서에 설명된 과정들을 수행하기 위해 컴퓨터 시스템에 의해 판독되는 때에 컴퓨터를 구성하고 동작하기 위한, 범용 또는 특수 목적의 프로그래머블 컴퓨터에 의해 판독 가능한 저장 매체 또는 장치(예컨대, 고체 상태 메모리 또는 매체, 또는 자기 또는 광학 매체)에 우선적으로 저장 또는 다운로드 된다. 본 발명의 시스템은, 본 명세서에 설명된 기능들을 수행하도록 특정 및 미리 정해진 방법으로 컴퓨터 시스템이 동작하도록 야기시키도록 구성된, 컴퓨터 프로그램과 함께 구성된 컴퓨터 판독가능 저장 매체로서 구현되는 것으로 고려될 수도 있다.
본원 발명에 대한 특정 수의 실시예들이 설명되었다. 그럼에도 불구하고, 본원 발명의 핵심 및 범위로부터 벗어남이 없이도 다양한 수정사항들이 가능할 수 있는 것으로 이해될 것이다. 예를 들어, 상기 설명된 단계들 중 일부는 순서에 독립적이고, 그러므로 설명된 순서와 상이한 순서로 수행될 수 있다.
선행하는 설명은 본원 발명의 설명을 위해 의도된 것일 뿐이고, 첨부된 청구범위의 범위에 의해 정의되는 본원 발명의 범위를 한정하는 것으로 이해될 수 없다. 예를 들어, 상기에서 설명된 기능의 단계들은 실질적으로 전체 처리에 영향을 미침이 없이도 상이한 순서로 수행될 수 있다. 다른 실시예들은 이하의 청구범위들의 범위에 포함된다.

Claims (35)

  1. 연산 특성(computational feature)에 대한 액세스를 제어하는 방법으로서,
    개개의 식별 값(identity value)과 각각 연관되고 개개의 특성 지시자(feature indicator)와 각각 연관되는 우선 설명자(primary descriptor)가 제공되어 있는, 실행 시스템에 의해 실행되는 제1 연산 리소스(computational resource)를 준비하는 단계;
    상기 우선 설명자 중 제1 우선 설명자와 연관되는 제1 식별 값을 포함하고 상기 제1 연산 리소스에 암호적으로 할당되는 보조 설명자(secondary descriptor)를 액세스하는 단계;
    제2 연산 리소스를 실행하도록 하는 명령어를 상기 제1 연산 리소스로부터 수용하는 단계;
    상기 제1 식별 값을 포함하는 보조 설명자의 적어도 하나의 인스턴스를 상기 제2 연산 리소스에 암호적으로 할당하는 단계로서, 상기 보조 설명자의 인스턴스와 상기 제2 연산 리소스를 결합하는 것과 그 결합을 암호적으로 서명(signing)하는 것을 포함하는, 암호적 할당 단계;
    상기 보조 설명자의 인스턴스와 연관되는 상기 특성 지시자에 기초하여 상기 실행 시스템의 연산 특성에 대한 제2 연산 리소스의 액세스를 승인하는 단계; 및
    상기 제2 연산 리소스가 상기 제1 연산 리소스와 연관되는 특성 지시자에 따라 이네이블된(enabled) 연산 특성만을 액세스하도록 인가된다고 결정하기 위해, 상기 제2 연산 리소스의 실행 중에, 상기 보조 설명자의 인스턴스가 상기 제2 연산 리소스에 암호적으로 할당되는 것을 인증하는 단계
    를 포함하는, 연산 특성에 대한 액세스를 제어하는 방법.
  2. 제1항에 있어서,
    상기 연산 리소스는 암호화되어 있는, 연산 특성에 대한 액세스를 제어하는 방법.
  3. 제1항에 있어서,
    상기 제1 연산 리소스에 보조 설명자를 암호적으로 할당하는 것은, 상기 제1 연산 리소스를 상기 보조 설명자와 결합하는 것과 그 결합을 암호적으로 서명하는 것을 포함하는, 연산 특성에 대한 액세스를 제어하는 방법.
  4. 제3항에 있어서,
    상기 결합을 암호적으로 서명하는 것은, 상기 제1 우선 설명자에 할당된 비밀 암호 키(private encryption key)를 이용하여 상기 결합으로부터 도출된 값을 암호화하는 것을 포함하는, 연산 특성에 대한 액세스를 제어하는 방법.
  5. 삭제
  6. 제1항에 있어서,
    상기 보조 설명자의 인스턴스를 인증하는 단계는, 상기 제1 우선 설명자에 할당된 공개 암호 키(public encryption key)를 이용하여 상기 제2 연산 리소스와 상기 보조 설명자의 인스턴스의 결합으로부터 도출된 값을 해독하는 단계를 포함하는, 연산 특성에 대한 액세스를 제어하는 방법.
  7. 제1항에 있어서,
    상기 제1 연산 리소스의 실행 전에 상기 보조 설명자의 제1 인스턴스를 생성하는 단계;
    상기 제1 연산 리소스의 실행 전에 상기 보조 설명자의 제2 인스턴스를 생성하는 단계; 및
    상기 제1 연산 리소스가 실행을 위해 인가되는지 여부를 결정하기 위해 상기 보조 설명자의 두 인스턴스들을 비교하는 단계
    를 더 포함하는 연산 특성에 대한 액세스를 제어하는 방법.
  8. 제7항에 있어서,
    상기 보조 설명자의 제1 인스턴스를 암호화하는 단계를 더 포함하는 연산 특성에 대한 액세스를 제어하는 방법.
  9. 제8항에 있어서,
    상기 보조 설명자의 제2 인스턴스를 암호화하는 단계를 더 포함하는 연산 특성에 대한 액세스를 제어하는 방법.
  10. 제7항에 있어서,
    상기 보조 설명자의 제1 인스턴스가, 상기 보조 설명자의 제2 인스턴스와 공통되는 제1 데이터 값을 가지고, 상기 보조 설명자의 제2 인스턴스와 공통되지 않는 제2 데이터 값을 가지는, 연산 특성에 대한 액세스를 제어하는 방법.
  11. 제7항에 있어서,
    상기 제1 연산 리소스를 실행하기 위한 명령어들을 가지는 제1 컨테이너를 상기 제1 연산 리소스와 상기 보조 설명자의 제1 인스턴스에 할당하는 단계; 및
    상기 제1 연산 리소스를 실행하기 위한 명령어들을 데이터로서 표현하는 제2 컨테이너를 상기 제1 컨테이너와 상기 보조 설명자의 제2 인스턴스에 할당하는 단계
    를 더 포함하는 연산 특성에 대한 액세스를 제어하는 방법.
  12. 제11항에 있어서,
    상기 제2 컨테이너를 암호적으로 서명하는 단계를 더 포함하는, 연산 특성에 대한 액세스를 제어하는 방법.
  13. 제1항에 있어서,
    제2 연산 리소스를 액세스하도록 하는 명령어를 상기 제1 연산 리소스로부터 수용하는 단계;
    시스템 상의 상기 제2 연산 리소스를 실행하는 단계;
    상기 보조 설명자를 상기 제2 연산 리소스에 암호적으로 할당하는 단계; 및
    상기 특성 지시자에 기초하여, 실행된 상기 제2 연산 리소스에 연산 특성에 대한 액세스를 제공하는 단계
    를 더 포함하는 연산 특성에 대한 액세스를 제어하는 방법.
  14. 제13항에 있어서,
    상기 제2 연산 리소스는, 상기 제1 연산 리소스가 실행을 완료한 후에 실행을 계속하는, 연산 특성에 대한 액세스를 제어하는 방법.
  15. 제13항에 있어서,
    상기 제1 연산 리소스는 제1 시스템 상에서 실행되고, 상기 제2 연산 리소스는 제2 시스템 상에서 실행되는, 연산 특성에 대한 액세스를 제어하는 방법.
  16. 제13항에 있어서,
    상기 보조 설명자를 제2 연산 리소스에 암호적으로 할당하는 단계는, 상기 보조 설명자의 인스턴스를 포함하는 저장 위치(storage location)에 액세스하는 단계를 포함하는 연산 특성에 대한 액세스를 제어하는 방법.
  17. 제1항에 있어서,
    제2 식별 값을 포함하는 제2 보조 설명자(second secondary descriptor)에 암호적으로 할당되는 상기 제2 연산 리소스에 액세스하는 단계;
    상기 제2 연산 리소스를 실행하는 단계;
    제2 식별 값을 포함하는 제2 우선 설명자(second primary descriptor)에 암호적으로 할당되는 제2 특성 지시자에 액세스하는 단계; 및
    상기 제2 특성 지시자에 기초하여, 실행된 상기 제2 연산 리소스에 연산 특성에 대한 액세스를 제공하는 단계
    를 더 포함하는 연산 특성에 대한 액세스를 제어하는 방법.
  18. 연산 특성에 대한 액세스를 제어하기 위한 시스템으로서,
    개개의 식별 값과 각각 연관되는 우선 설명자를 제공하는 것을 포함하여 실행을 위해 제1 연산 리소스를 준비하도록 구성된 개발 컴퓨터 시스템(development computer system); 및
    연산 리소스를 실행하도록 구성된 실행 컴퓨터 시스템(execution computer system)
    을 포함하며, 상기 연산 리소스를 실행하는 것은:
    개개의 특성 지시자를 개개의 우선 설명자와 연관시키고;
    상기 우선 설명자 중 제1 우선 설명자와 연관되는 제1 식별 값을 포함하고 상기 제1 연산 리소스에 암호적으로 할당되는 보조 설명자를 액세스하고;
    제2 연산 리소스를 실행하도록 하는 명령어를 상기 제1 연산 리소스로부터 수용하며;
    상기 제1 식별 값을 포함하는 보조 설명자의 적어도 하나의 인스턴스를 상기 제2 연산 리소스에 암호적으로 할당하되, 상기 보조 설명자의 인스턴스와 상기 제2 연산 리소스를 결합하는 것과 그 결합을 암호적으로 서명하는 것을 포함하며;
    상기 보조 설명자의 인스턴스와 연관되는 상기 특성 지시자에 기초하여 상기 실행 컴퓨터 시스템의 연산 특성에 대한 제2 연산 리소스의 액세스를 승인하고;
    상기 제2 연산 리소스가 상기 제1 연산 리소스와 연관되는 특성 지시자에 따라 이네이블된 연산 특성만을 액세스하도록 인가된다고 결정하기 위해, 상기 제2 연산 리소스의 실행 중에, 상기 보조 설명자의 인스턴스가 상기 제2 연산 리소스에 암호적으로 할당되는 것을 인증하는 것을 포함하는, 연산 특성에 대한 액세스를 제어하기 위한 시스템.
  19. 연산 특성에 대한 액세스를 제어하기 위한 시스템으로서,
    개개의 식별 값과 각각 연관되는 우선 설명자를 제공하는 것을 포함하여 실행을 위해 제1 연산 리소스를 준비하기 위한 수단; 및
    연산 리소스를 실행하기 위한 수단
    을 포함하며, 상기 연산 리소스를 실행하는 것은:
    개개의 특성 지시자를 개개의 우선 설명자와 연관시키고;
    상기 우선 설명자 중 제1 우선 설명자와 연관되는 제1 식별 값을 포함하고 상기 제1 연산 리소스에 암호적으로 할당되는 보조 설명자를 액세스하고;
    제2 연산 리소스를 실행하도록 하는 명령어를 상기 제1 연산 리소스로부터 수용하며;
    상기 제1 식별 값을 포함하는 보조 설명자의 적어도 하나의 인스턴스를 상기 제2 연산 리소스에 암호적으로 할당하되, 상기 보조 설명자의 인스턴스와 상기 제2 연산 리소스를 결합하는 것과 그 결합을 암호적으로 서명하는 것을 포함하며;
    상기 보조 설명자의 인스턴스와 연관되는 상기 특성 지시자에 기초하여 상기 실행 컴퓨터 시스템의 연산 특성에 대한 제2 연산 리소스의 액세스를 승인하고;
    상기 제2 연산 리소스가 상기 제1 연산 리소스와 연관되는 특성 지시자에 따라 이네이블된 연산 특성만을 액세스하도록 인가된다고 결정하기 위해, 상기 제2 연산 리소스의 실행 중에, 상기 보조 설명자의 인스턴스가 상기 제2 연산 리소스에 암호적으로 할당되는 것을 인증하는 것을 포함하는, 연산 특성에 대한 액세스를 제어하기 위한 시스템.
  20. 연산 특성에 대한 액세스를 제어하기 위한 컴퓨터 프로그램이 저장된 비일시적 컴퓨터-판독가능 기록매체로서, 상기 컴퓨터 프로그램은 컴퓨터로 하여금:
    개개의 식별 값과 각각 연관되고 개개의 특성 지시자와 각각 연관되는 우선 설명자가 제공되어 있는, 실행 시스템에 의해 실행되는 제1 연산 리소스를 준비하고;
    상기 우선 설명자 중 제1 우선 설명자와 연관되는 제1 식별 값을 포함하고 상기 제1 연산 리소스에 암호적으로 할당되는 보조 설명자를 액세스하고;
    제2 연산 리소스를 실행하도록 하는 명령어를 상기 제1 연산 리소스로부터 수용하며;
    상기 제1 식별 값을 포함하는 보조 설명자의 적어도 하나의 인스턴스를 상기 제2 연산 리소스에 암호적으로 할당하되, 상기 보조 설명자의 인스턴스와 상기 제2 연산 리소스를 결합하는 것과 그 결합을 암호적으로 서명하는 것을 포함하며;
    상기 보조 설명자의 인스턴스와 연관되는 상기 특성 지시자에 기초하여 상기 실행 시스템의 연산 특성에 대한 제2 연산 리소스의 액세스를 승인하고;
    상기 제2 연산 리소스가 상기 제1 연산 리소스와 연관되는 특성 지시자에 따라 이네이블된 연산 특성만을 액세스하도록 인가된다고 결정하기 위해, 상기 제2 연산 리소스의 실행 중에, 상기 보조 설명자의 인스턴스가 상기 제2 연산 리소스에 암호적으로 할당되는 것을 인증하도록 하기 위한 명령어를 포함하는,
    연산 특성에 대한 액세스를 제어하기 위한 컴퓨터 프로그램이 저장된 비일시적 컴퓨터-판독가능 기록매체.
  21. 제1항에 있어서,
    상기 제2 연산 리소스는, 상기 제2 연산 리소스의 실행이 상기 제1 연산 리소스에 의해 개시되지 않은 경우에 액세스하도록 인가되는 것보다 더 적은 연산 특성에 액세스하도록 인가되는, 연산 특성에 대한 액세스를 제어하는 방법.
  22. 제18항에 있어서,
    상기 연산 리소스는 암호화되어 있는, 연산 특성에 대한 액세스를 제어하기 위한 시스템.
  23. 제18항에 있어서,
    상기 제1 연산 리소스에 보조 설명자를 암호적으로 할당하는 것은, 상기 제1 연산 리소스를 상기 보조 설명자와 결합하는 것과 그 결합을 암호적으로 서명하는 것을 포함하는, 연산 특성에 대한 액세스를 제어하기 위한 시스템.
  24. 제18항에 있어서,
    상기 결합을 암호적으로 서명하는 것은, 상기 제1 우선 설명자에 할당된 비밀 암호 키를 이용하여 상기 결합으로부터 도출된 값을 암호화하는 것을 포함하는, 연산 특성에 대한 액세스를 제어하기 위한 시스템.
  25. 제18항에 있어서,
    상기 보조 설명자의 인스턴스를 인증하는 것은, 상기 제1 우선 설명자에 할당된 공개 암호 키를 이용하여 상기 제2 연산 리소스와 상기 보조 설명자의 인스턴스의 결합으로부터 도출된 값을 해독하는 것을 포함하는, 연산 특성에 대한 액세스를 제어하기 위한 시스템.
  26. 제18항에 있어서,
    상기 제1 연산 리소스의 실행은:
    상기 제1 연산 리소스의 실행 전에 상기 보조 설명자의 제1 인스턴스를 생성하는 것;
    상기 제1 연산 리소스의 실행 전에 상기 보조 설명자의 제2 인스턴스를 생성하는 것; 및
    상기 제1 연산 리소스가 실행을 위해 인가되는지 여부를 결정하기 위해 상기 보조 설명자의 두 인스턴스들을 비교하는 것
    을 더 포함하는, 연산 특성에 대한 액세스를 제어하기 위한 시스템.
  27. 제18항에 있어서,
    상기 제2 연산 리소스는, 상기 제1 연산 리소스가 실행을 완료한 후에 실행을 계속하는, 연산 특성에 대한 액세스를 제어하기 위한 시스템.
  28. 제20항에 있어서,
    상기 연산 리소스는 암호화되어 있는, 연산 특성에 대한 액세스를 제어하기 위한 컴퓨터 프로그램이 저장된 비일시적 컴퓨터-판독가능 기록매체.
  29. 제20항에 있어서,
    상기 제1 연산 리소스에 보조 설명자를 암호적으로 할당하는 것은, 상기 제1 연산 리소스를 상기 보조 설명자와 결합하는 것과 그 결합을 암호적으로 서명하는 것을 포함하는, 연산 특성에 대한 액세스를 제어하기 위한 컴퓨터 프로그램이 저장된 비일시적 컴퓨터-판독가능 기록매체.
  30. 제20항에 있어서,
    상기 결합을 암호적으로 서명하는 것은, 상기 제1 우선 설명자에 할당된 비밀 암호 키를 이용하여 상기 결합으로부터 도출된 값을 암호화하는 것을 포함하는, 연산 특성에 대한 액세스를 제어하기 위한 컴퓨터 프로그램이 저장된 비일시적 컴퓨터-판독가능 기록매체.
  31. 제20항에 있어서,
    상기 보조 설명자의 인스턴스를 인증하는 것은, 상기 제1 우선 설명자에 할당된 공개 암호 키를 이용하여 상기 제2 연산 리소스와 상기 보조 설명자의 인스턴스의 결합으로부터 도출된 값을 해독하는 것을 포함하는, 연산 특성에 대한 액세스를 제어하기 위한 컴퓨터 프로그램이 저장된 비일시적 컴퓨터-판독가능 기록매체.
  32. 제20항에 있어서,
    상기 컴퓨터로 하여금:
    상기 제1 연산 리소스의 실행 전에 상기 보조 설명자의 제1 인스턴스를 생성하고;
    상기 제1 연산 리소스의 실행 전에 상기 보조 설명자의 제2 인스턴스를 생성하며;
    상기 제1 연산 리소스가 실행을 위해 인가되는지 여부를 결정하기 위해 상기 보조 설명자의 두 인스턴스들을 비교하도록 하기 위한 명령어를 더 포함하는,
    연산 특성에 대한 액세스를 제어하기 위한 컴퓨터 프로그램이 저장된 비일시적 컴퓨터-판독가능 기록매체.
  33. 제20항에 있어서,
    상기 제2 연산 리소스는, 상기 제1 연산 리소스가 실행을 완료한 후에 실행을 계속하는, 연산 특성에 대한 액세스를 제어하기 위한 컴퓨터 프로그램이 저장된 비일시적 컴퓨터-판독가능 기록매체.
  34. 제18항에 있어서,
    상기 제2 연산 리소스는, 상기 제2 연산 리소스의 실행이 상기 제1 연산 리소스에 의해 개시되지 않은 경우에 액세스하도록 인가되는 것보다 더 적은 연산 특성에 액세스하도록 인가되는, 연산 특성에 대한 액세스를 제어하기 위한 시스템.
  35. 제20항에 있어서,
    상기 제2 연산 리소스는, 상기 제2 연산 리소스의 실행이 상기 제1 연산 리소스에 의해 개시되지 않은 경우에 액세스하도록 인가되는 것보다 더 적은 연산 특성에 액세스하도록 인가되는, 연산 특성에 대한 액세스를 제어하기 위한 컴퓨터 프로그램이 저장된 비일시적 컴퓨터-판독가능 기록매체.
KR1020127016890A 2009-12-23 2010-12-21 연산 리소스 실행의 안전 보호 KR101643677B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/646,059 US8782429B2 (en) 2009-12-23 2009-12-23 Securing execution of computational resources
US12/646,059 2009-12-23

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020157008266A Division KR101751316B1 (ko) 2009-12-23 2010-12-21 연산 리소스 실행의 안전 보호

Publications (2)

Publication Number Publication Date
KR20120104271A KR20120104271A (ko) 2012-09-20
KR101643677B1 true KR101643677B1 (ko) 2016-08-10

Family

ID=43736874

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020157008266A KR101751316B1 (ko) 2009-12-23 2010-12-21 연산 리소스 실행의 안전 보호
KR1020127016890A KR101643677B1 (ko) 2009-12-23 2010-12-21 연산 리소스 실행의 안전 보호

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020157008266A KR101751316B1 (ko) 2009-12-23 2010-12-21 연산 리소스 실행의 안전 보호

Country Status (8)

Country Link
US (1) US8782429B2 (ko)
EP (1) EP2517140B1 (ko)
JP (1) JP5797666B2 (ko)
KR (2) KR101751316B1 (ko)
CN (1) CN102770869B (ko)
AU (1) AU2010336503B2 (ko)
CA (1) CA2784896C (ko)
WO (1) WO2011079112A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5988473B2 (ja) * 2011-09-20 2016-09-07 株式会社Dnpハイパーテック モジュールの暗号化/復号化プログラム
US9112851B2 (en) * 2013-06-18 2015-08-18 Sap Se Integrating web protocols with applications and services
US10657262B1 (en) * 2014-09-28 2020-05-19 Red Balloon Security, Inc. Method and apparatus for securing embedded device firmware
CN109074576A (zh) * 2016-04-29 2018-12-21 区块链控股有限公司 使用区块链实现逻辑门功能

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1526429A2 (en) 2003-10-24 2005-04-27 Microsoft Corporation Operating system resource protection
US20090094673A1 (en) 2007-10-07 2009-04-09 Seguin Jean-Marc L Method and system for integrated securing and managing of virtual machines and virtual appliances

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US6308274B1 (en) * 1998-06-12 2001-10-23 Microsoft Corporation Least privilege via restricted tokens
US7673323B1 (en) * 1998-10-28 2010-03-02 Bea Systems, Inc. System and method for maintaining security in a distributed computer network
US6874088B1 (en) * 1999-10-22 2005-03-29 Mission Critical Linux, Llc Secure remote servicing of a computer system over a computer network
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
JP4718151B2 (ja) * 2004-09-24 2011-07-06 三菱電機株式会社 情報処理装置、情報処理方法およびプログラム
US7810153B2 (en) 2005-01-28 2010-10-05 Microsoft Corporation Controlling execution of computer applications
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US8006088B2 (en) * 2005-08-18 2011-08-23 Beyondtrust Corporation Methods and systems for network-based management of application security
US8407704B2 (en) * 2006-09-26 2013-03-26 International Business Machines Corporation Multi-level memory architecture using data structures for storing access rights and performing address translation
US8370957B2 (en) 2006-12-05 2013-02-05 Samsung Electronics Co., Ltd Method and apparatus for transmitting contents with limited system permissions
CN100446022C (zh) * 2007-08-17 2008-12-24 南京新模式软件集成有限公司 一种电子文件安全外发的方法
JP5112924B2 (ja) * 2008-03-27 2013-01-09 株式会社Kddiテクノロジー アプリケーション移動システム、アプリケーションの移動方法、プログラムおよび携帯端末

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1526429A2 (en) 2003-10-24 2005-04-27 Microsoft Corporation Operating system resource protection
US20090094673A1 (en) 2007-10-07 2009-04-09 Seguin Jean-Marc L Method and system for integrated securing and managing of virtual machines and virtual appliances

Also Published As

Publication number Publication date
CA2784896C (en) 2017-06-20
EP2517140A1 (en) 2012-10-31
US20110154051A1 (en) 2011-06-23
WO2011079112A1 (en) 2011-06-30
AU2010336503A1 (en) 2012-06-14
EP2517140B1 (en) 2019-08-14
KR20120104271A (ko) 2012-09-20
JP2013516004A (ja) 2013-05-09
CA2784896A1 (en) 2011-06-30
KR20150042298A (ko) 2015-04-20
JP5797666B2 (ja) 2015-10-21
KR101751316B1 (ko) 2017-06-27
CN102770869B (zh) 2015-11-25
AU2010336503B2 (en) 2015-01-15
US8782429B2 (en) 2014-07-15
WO2011079112A4 (en) 2011-08-18
CN102770869A (zh) 2012-11-07

Similar Documents

Publication Publication Date Title
US10498712B2 (en) Balancing public and personal security needs
WO2021073170A1 (zh) 数据提供和融合的方法及装置
US11115208B2 (en) Protecting sensitive information from an authorized device unlock
CN116490868A (zh) 用于可信执行环境中的安全快速机器学习推理的系统和方法
US20180218364A1 (en) Managing distributed content using layered permissions
KR20230046291A (ko) 연맹 권한 및 계층적 키 관리를 위한 방법, 장치 및 컴퓨터 판독 가능 매체
Nyman et al. Citizen electronic identities using TPM 2.0
KR101643677B1 (ko) 연산 리소스 실행의 안전 보호
US11398906B2 (en) Confirming receipt of audit records for audited use of a cryptographic key
US20230421543A1 (en) Method, apparatus, and computer-readable medium for secured data transfer over a decentrlaized computer network
US11405201B2 (en) Secure transfer of protected application storage keys with change of trusted computing base
CA3042984C (en) Balancing public and personal security needs
Das et al. Enhancing Security and Privacy of Permissioned Blockchain using Intel SGX
Tamrakar et al. On rehoming the electronic id to TEEs
CN116167766A (zh) 一种资产通证化方法及相关装置

Legal Events

Date Code Title Description
A201 Request for examination
A107 Divisional application of patent
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: 20190710

Year of fee payment: 4