KR20080097230A - 트러스트된 코드 그룹들 - Google Patents

트러스트된 코드 그룹들 Download PDF

Info

Publication number
KR20080097230A
KR20080097230A KR1020087023086A KR20087023086A KR20080097230A KR 20080097230 A KR20080097230 A KR 20080097230A KR 1020087023086 A KR1020087023086 A KR 1020087023086A KR 20087023086 A KR20087023086 A KR 20087023086A KR 20080097230 A KR20080097230 A KR 20080097230A
Authority
KR
South Korea
Prior art keywords
library
tcg
application
libraries
authorized
Prior art date
Application number
KR1020087023086A
Other languages
English (en)
Other versions
KR101033620B1 (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 KR20080097230A publication Critical patent/KR20080097230A/ko
Application granted granted Critical
Publication of KR101033620B1 publication Critical patent/KR101033620B1/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
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 어플리케이션 및 상기 어플리케이션에 의해 로딩된 라이브러리에 신뢰성을 부여(enforcing)하기 위한 메커니즘들 및 기술들에 관한 것이다. 매우 일반적으로 언급된 바와 같이, 본 출원은 하나 이상의 트러스트된 코드 그룹들을 선언(declare)하며, 상기 어플리케이션을 구비한 실행을 위해 승인되도록 라이브러리가 멤버가 되어야 한다. 하나 이상의 TCG들에 멤버십을 선언(assert)하기 위해 승인되어야 하는 라이브러리들은 상기 멤버십의 보안 표시자를 포함한다. 상기 어플리케이션이 라이브러리를 로딩하도록 시도하고 실행하므로, 상기 어플리케이션에 의해 승인된 TCG에 있는 상기 라이브러리 멤버십은 상기 라이브러리를 로딩하기에 앞서 검증된다.

Description

트러스트된 코드 그룹들{TRUSTED CODE GROUPS}
본 발명은 일반적으로는 소프트웨어 보안 분야에 관한 것이고, 보다 구체적으로는 소프트웨어 보안 검증 및 유효화에 관한 것이다.
소프트웨어 어플리케이션들은 오늘날 통상적으로 공통 "어플리케이션 기능"을 제공하도록 함께 동작하는 몇몇의 상이한 실행가능한 모듈들로 구성된다. 예를 들어, 새로운 어플리케이션의 개발자는 상기 어플리케이션의 "코어 비지니스 로직"을 구현하면서 더 많은 루틴 기능, 예컨대 공통 다이얼로그 박스들 혹은 통신 기능들을 위한 제 3 파티 혹은 다른 코드 라이브러리들을 재분류(resorting)하는 소스 코드를 기록할 수 있다. 런타임에서, 상기 어플리케이션이 개시되고 상기 실행 어플리케이션 코드에 동적으로 링크된 다른 라이브러리들의 예(instance)를 로딩하도록 상기 운영 체제에 명령한다. 이후, 상기 어플리케이션 및 상기 라이브러리들은 통상적으로 상기 어플리케이션이 실행중인 동안 메모리에서 단일 유닛으로서 함께 동작한다.
그러나, 상기 실행 어프리케이션 코드와 상기 라이브러리들 간에 트러스트(trust)를 관리하는 것은 어렵다. 어플리케이션이 실행중인 동안, 상기 어플리케이션이로딩하는 임의의 라이브러리들은 상기 어플리케이션이 메모리 공간 혹은 프로세스 경계로 매핑되고, 마치 상기 어플리케이션의 일부분인 것처럼 동작한다. 일단 로딩되면, 상기 어플리케이션 및 상기 라이브러리 간에 어떠한 경계들도 없으며, 상기 어플리케이션은 라이브러리로 호출할 때 상기 라이브러리에 완전한 트러스트를 위치시킨다. 상기 라이브러리는 상기 어플리케이션이 액세스를 가지는 임의의 혹은 모든 데이터를 수정하고, 삭제하거나, 재분배할 수 있다. 어플리케이션들이 더 복잡해지고, 라이브러리들이 다양한, 가능하게는 트러스트되지 않은 위치들로부터 계산 디아비스로 더 일반적으로 로딩됨에 따라, 어플리케이션에 의해 로딩되거나 호출될 수 있는 코드 라이브러리들의 보안성 및 무결성(즉, "신뢰성")에 초점을 맞추도록 더 중요해지고 있다.
현재까지, 코드 라이브러리의 상기 신뢰성을 평가하고 그리고/또는 보장하기 위한 적합한 메커니즘이 본 발명이 속한 기술분야에서 통상의 지식을 가진 자들에게는 알려지지 않았다.
본 발명은 어플리케이션 및 라이브러리 간에 신뢰성을 부여하거나 보장하기 위한 메커니즘들 및 기술들에 관한 것이다. 일 양상에서, 본 발명은 코드 모듈들 간에 트러스트를 보장하는 방법을 제시한다. 상기 방법은 기능(functionality) 클래스를 이용하는 어플리케이션을 수신하는 단계 - 상기 어플리케이션은 상기 클래스를 구현하기 위해 상기 어플리케이션에 의해 신뢰받는 트러스트된 코드 그룹들("TCG")의 리스트를 포함함 - 를 포함한다. 상기 방법은 또한 상기 기능 클래스를 구현하는 라이브러리를 수신하는 단계 - 상기 라이브러리는 서명키를 이용하여 서명되고, 상기 서명은 상기 라이브러리를 TCG와 연관시키고, 상기 TCG는 신뢰성(trustworthiness)을 보증(endorsement)함 - 를 포함한다. 상기 라이브러리가 로딩되도록 하는 호출이 개시될 때, 상기 방법은 상기 라이브러리의 로딩에 앞서, 상기 라이브러리가 상기 리스트된 TGC들 중 하나의 멤버인지의 여부를 결정하도록 상기 라이브러리에 있는 상기 서명이 검증되도록 하는 단계를 포함한다.
또다른 양상에서, 본 발명은 라이브러리의 신뢰성을 검증하기 위한 방법및 컴퓨터-판독가능한 매체를 제시한다. 상기 방법은 상기 라이브러리를 로딩하도록 어플리케이션으로부터 명령을 수신하는 단계 - 상기 어플리케이션은 허가된 트러스트된 코드 그룹들(TCG)의 연관된 리스트를 가지고, 각 TCG는 라이브러리들의 그룹과 연관된 트러스트의 레벨을 나타냄 - 를 포함한다. 상기 방법은 추가적으로 상기 라이브러리를 TCG와 연관시키는 디지털 서명을 검출하도록 상기 라이브러리를 검사하는 단계, 상기 라이브러리가 상기 어플리케이션을 사용하여 실행되도록 허가되었는지의 여부를 결정하기 위해 상기 어플리케이션과 연관된 허가된 TCG들의 상기 리스트들과 상기 라이브러리의 상기 TCG를 비교하는 단계, 및 상기 라이브러리가 허가된다면, 상기 라이브러리를 로딩하는 단계를 포함한다.
또다른 양상에서 본 발명은 라이브러리의 신뢰성을 검증하기 위한 장치를 제시한다. 상기 장치는 어플리케이션 및 라이브러리가 저장된 저장 매체, 프로세서, 및 상기 프로세서 및 상기 저장 매체에 연결된 메모리를 포함하되, 상기 메모리에는 컴퓨터-실행가능한 컴포넌트들이 상주한다. 상기 컴포넌트들은 상기 프로세서로 하여금 상기 라이브러리를 로딩하도록 어플리케이션으로부터 명령을 수신하고 - 상기 어플리케이션은 허가된 TCG들의 연관된 리스트를 가지고, 각 TCG는 라이브러리들의 그룹과 연관된 트러스트 레벨을 나타냄 - , 상기 라이브러리를 TCG와 연관시키는 디지털 서명을 검출하기 위해 상기 라이브러리를 검사하고, 상기 라이브러리가 상기 어플리케이션을 사용하여 실행되도록 허가되었는지의 여부를 결정하기 위해 상기 어플리케이션과 연관된 허가된 TCG들의 상기 리스트들과 상기 라이브러리의 상기 TCG를 비교하고, 그리고 상기 라이브러리가 허가된다면, 상기 라이브러리를 로딩하게 하도록 동작한다.
본 발명의 특징들 및 이점들은 유사 참조 번호들이 대응적으로 식별하는 도면와 연관될 때, 아래에서 설명된 상기 상세한 설명으로부터 보다 명백해진다.
도 1은 본 발명의 일 실시예에 따른, 라이브러리의 일 예 및 어플리케이션을 실행하는 시스템 메모리를 도시하는 도면.
도 2는 각각이 하나 이상의 연관된 트러스트된 코드 그룹들("TCG")을 가지는 트러스트된 엔티티들("TE")의 계층의 개념적인 예시를 도시하는 도면.
도 3은 코드 개발자가 상기 TE의 제어 하에 특정 TCG에 대해 허가된 라이브러리를 획득하도록 TE와 상호작용하는 샘플 개발 환경을 예시하는 도면.
도 4는 본 발명의 실시예에 따라, 라이브러리를 사용하는 어플리케이션을 실행하는, 핸드헬드 계산 디바이스와 같은 계산 디바이스를 예시하는 도면.
도 5는 상기 어플리케이션에 의해 로딩된 라이브러리 및 어플리케이션 간의 트러스트를 보장하기 위한 방법을 일반적으로 예시하는 동작 흐름도.
도 6은 본 발명의 실시예가 특히 적용가능한 샘플 계산 디바이스의 상기 코어 컴포넌트들을 일반적으로 예시하는 기능 블록도.
다음은 상기 어플리케이션이 어플리케이션 개발자로 하여금 런타임에서 로딩되도록 할 수 있는 라이브러리들의 신뢰성을 제어하도록 하는 본 발명의 다양한 실시예들의 상세한 설명이다. 간략히 말하자면, 본 발명은 라이브러리 개발자들이 하나 이상의 "트러스트된 코드 그룹들"에 포함하기 위한 평가된 공유 라이브러리들을 가지도록 허용하는 것을 보여준다. 이후, 어플리케이션 개발자들은 상기 어플리케이션이 런타임에서 트러스트해야 하는 상기 트러스트된 코드 그룹들을 식별하는 리스팅을 포함한다. 설치된 어플리케이션이 개시되고 라이브러리를 로딩하려고 시도한다면, 트러스트 매니저는 상기 라이브러리가 상기 어플리케이션에 의해 인지된 트러스트된 코드 그룹 내에 있는지 검증한다. 만약 그러하다면, 상기 트러스트 매니저는 상기 라이브러리가 로딩되는 것을 허용하고, 만약 그렇지 않은 경우, 상기 트러스트 매니저는 상기 로딩을 실패한다.
논의를 시작하기 위해, 도 1은 본 발명의 일 실시예에 따라, 어플리케이션(111) 및 라이브러리(131)의 일 예를 실행하는 시스템 메모리(101)를 도시한다. 다른 코드는 예컨대 다른 어플리케이션들(145) 및/또는 운영 체제(147)와 같은, 시스템 메모리(101)에서 실행 중일 수 있다. 진행하기 전에, 이 문서 전체에 걸쳐 사용될 몇몇 용어들의 정의들을 제공하는 것이 유용하다.
용어 "신뢰자(trustor)"는 신뢰받는 자(trustee)을 로딩하는 임의의 실행가 능한 코드(예를 들어, 어플리케이션)를 의미한다. 상기 신뢰자는 메모리 혹은 그 주변의 프로세스 보호 경계를 가지며 상기 경계를 통해 무엇이 오가는지에 대한 정책을 만든다. 간단한 사용자 어플리케이션은 단지 신뢰자의 한 예에 불과하다. 다른 예들은 스크립트들, 웹페이지 콘텐츠(예를 들어, "플래쉬(Flash)" 혹은 "쇼크웨이브(Shockwave)" 컴포넌트들), 사용자 인터페이스들(예를 들어, 하이레벨 UI 디스크립션 랭귀지에 있는 사용자 인터페이스 규격) 등을 포함하지만, 이에 제한되지는 않는다.
상기 용어 "신뢰받는 자(trustee)"는 런타임에서 신뢰자에 의해 로딩된 임의의 구성 데이터 혹은 실행 가능한 코드(예를 들어, 라이브러리)를 의미한다. 상기 용어 "신뢰받는 자(trustee)"는 공유 및 공용 라이브러리들, 동적으로 그리고 정적으로 링크된 라이브러리들, "확장들", 스크립트들, 구성들, 콘텐츠들, 사용자 인터페이스들, 혹은 당해 분야에 사용된 상기 용어들처럼 임의의 다른 자원들(예를 들어, 이미지 혹은 멀티미디어 데이터)을 포함하지만 이에 제한되지 않는다.
상기 용어 "어플리케이션" 및 "신뢰자"는 이 문서 전체에서 상호교환적으로 사용될 수 있다. 마찬가지로, 상기 용어들 "라이브러리" 및 "신뢰받는 자"은 이 문서 전체에서 상호교환적으로 사용될 수 있다. 따라서, 상기 용어들에 귀속된 상기 의미들과 다른 어떤 특정 의미도 상기 용어들 "어플리케이션" 혹은 "라이브러리"에 붙여져서는 안된다.
도 1에 도시된 바와 같이, 어플리케이션(111)이 메모리(101)에 로딩되면 프로세스는 상기 어플리케이션이 실행되는 곳에서 생성되고, 상기 프로세스는 프로세 스 경계(113)를 가진다. 상기 프로세스 경계(113) 내에서 실행중인 코드는 일반적으로 상기 경계 내의 임의의 메모리 위치들로의 자유로운 액세스를 가지지만, 상기 프로세스 경계(113) 밖에서는 적어도 직접적이지 않은 액세스를 가지지 않는다. 상기 도면에서 인접한 메모리 공간으로 도시되었지만 프로세스가 인접하지 않은 메모리 위치 역시 가질 수 있음이 이해되어야 한다.
이 예에서, 상기 어플리케이션(111)은 상기 프로세스 경계(113) 내에서 실행 중이고, 데이터를 위한 메모리 공간(115)을 스스로 할당한다. 본 명세서에서 도시된 바와 같이, 단일의 인접하는(contiguous) 데이터 공간(115)이 도시되었지만, 상기 어플리케이션(111)은 상이한 타입들의 데이터를 위한 몇몇 상이한 데이터 로케이션들을 구비할 수 있다는 점이 이해될 것이다.
실행 중 임의의 포인트에서, 상기 어플리케이션(11)은 예컨대 라이브러리(131)과 같은 하나 이상의 라이브러리들이 로딩되도록 할 수 있다. 이 실시예에서, 상기 라이브러리(131)는 상기 어플리케이션(111)에 의해 사용되는 임의의 보충 코드일 수 있으나 상기 어플리케이션(111)에 통합되지 않는다. 일 실시예에서, 상기 라이브러리(131)는 몇몇 코어 혹은 특정 기능을 수행하는 제 3 파티 라이브러리일 수 있다.
상기 라이브러리(131)는 일반적으로 자신만의 프로세스 혹은 보호 경계들을 가지지 않고, 오히려 상기 어플리케이션의 프로세스 경계(113)내에서 동작한다. 따라서, 상기 라이브러리(131)는 예컨대 상기 어플리케이션의 데이터(115) 및 상기 어플리케이션 실행가능한 코드의 짝수 부분과 같이, 상기 어플리케이션(111)이 할 수 있는 모든 것들에 대한 액세스를 가진다. 더욱이, 상기 라이브러리(131)는 상기 어플리케이션(111)이 액세스를 가질 수 있는 자신만의 고유한 데이터(117)를 가질 수 있다. 상기 어플리케이션(111)과 상기 라이브러리(131) 간의 강력한 트러스트 관계에 대한 요구를 생성하는 것은 상기 어플리케이션 코드(111) 및 데이터(115)로의 이러한 자유로운 액세스이다.
본 발명의 명세서의 나머지 부분에서 보다 완전하게 설명되는 바와 같이, 상기 어플리케이션(111)은 상기 라이브러리(131)가 속해야 하는 트러스트 관계를 정의하는 특정 정보를 선언한다. 로딩될 때, 상기 라이브러리(131)는 자신이 속하는 해당 트러스트 관계들을 표시한다. 상기 라이브러리(131)가 로딩을 시작할 때, 만약 그것이 상기 어플리케이션(111)에 의해 인지되는 트러스트 관계에 속하지 않는다면, 상기 로딩은 실패한다.
도 2는 각각이 하나 이상의 연관된 트러스트된 코드 그룹들("TCG")을 가지는 트러스트된 엔티티들("TE")의 계층(200)의 개념도이다. 본 발명에 따라, 트러스트된 코드 그룹("TCG")은 본질적으로 균등하게 트러스트된 코드 모듈들의 그룹이다. 트러스트된 엔티티(TE)는 하나 이상의 TCG들로 코드 모듈들을 허가하거나 인증하는 조직이거나, 가능하게는 개인일 수 있다. 특정 TE가 특정 TCG의 소유권을 취할 수 있고 상기 TCG에서 멤버십에 대해 제안된 코드 모듈들을 평가하거나 테스트할 것임이 계획된다.
일 특정 구현 예에서, 각각의 TCG는 연관된 TCG 식별자(TCG ID)를 가진다. 상기 TCG ID는 상기 TCG를 식별하고 각 TCG를 다른 TCG들과 고유하게 구별하는 32 비트 정수이다. 이 특정 구현 예에서, TCG ID들의 전체 범위는
Figure 112008066405957-PCT00001
로부터
Figure 112008066405957-PCT00002
까지 확대될 수 있다. 도 2를 참조하면, 최고 레벨 TE(즉, TE (201))은 상기 TCG ID들의 전체 범위에 대한 소유권(ownership)을 가진다. 이러한 최고 레벨 TE(201)는 이동식 디바이스들에 대한 상기 운영 체제를 담당하는 조직 등일 수 있다.
상기 최고 레벨 TE(201)은 몇몇 전문 구역 혹은 트러스트의 특정 영역에 대응하는 하위 TE들의 전체 TCG ID 범위들 내에서 범위들을 배치한다(delegate). 일 예에서, 하위 TE(보안 TE(211))는 임의의 타입의 보안 특징에 관련된 코드 라이브러리들을 검증하고 증명하는 책임을 가질 수 있다. 따라서, 보안 특징들을 위한 TCG ID의 범위는 상기 보안 TE(211)에 배치된다. 상기 보안 TE(211)는 추가적으로 자신의 TCG ID들의 서브-범위를 다음 레벨 TE로 배치할 수 있다. 예를 들어, 상기 보안 TE(211)는 TCG ID들의 서브-범위를 암호화 TE(221) 혹은 인증 TE(222)로 배치할 수 있다.
상기 최고 레벨 TE(201)은 사용자 인터페이스 라이브러리들에 책임이 있는 사용자 인터페이스(212)들로 사용자 인터페이스 컴포넌트들에 대한 상이한 TCG ID들의 범위를 배치할 수 있다. 상기 사용자 인터페이스(212)들은 이후 공통 다이얼로그들에 대해 책임이 있는 공통 다이얼로그 TE(203)으로 자신의 TCG ID의 서브 범위를 추가적으로 배치한다. 이러한 계층적 시스템은 미래에 부가적인 TCG들을 수용할 수 있는 TCG ID들의 범위들의 플렉서블한 분포를 허용한다. 상기 전체 범위 의 특정 서브 범위들이 예컨대 또다른 사용을 위해 예비되는 것과 같은 몇몇 이유들 때문에 TCG ID로서의 사용으로부터 배제될 수 있다는 점이 이해될 것이다.
구체적인 예를 사용하여 이러한 개념을 예시하기 위해, 상기 최고 레벨 TE(201)은 상기 범위
Figure 112008066405957-PCT00003
내지
Figure 112008066405957-PCT00004
이 상기 보안 TE(211)로 배치되고, 상기 범위
Figure 112008066405957-PCT00005
내지
Figure 112008066405957-PCT00006
는 상기 사용자 인터페이스 TE(212)로 배치된다고 가정하자. 상기 보안 TE(211)는 차례로 상기 서브 범위
Figure 112008066405957-PCT00007
내지
Figure 112008066405957-PCT00008
를 상기 암호화 TE(221)로 파견하고, 상기 서브 범위
Figure 112008066405957-PCT00009
내지
Figure 112008066405957-PCT00010
를 상기 인증 TE(222)로 파견한다. 상기 사용자 인터페이스 TE(212)는 상기 서브-범위
Figure 112008066405957-PCT00011
내지
Figure 112008066405957-PCT00012
를 상기 공통 다이얼로그 TE(223)로 배치할 수 있다. 물론, 이들 특정 범위들 및 서브-범위들은 단순히 상기 개념을 예시하기 위한 예들에 불과하고, 임의의 방식으로 본 발명에 대해 필수적이지는 않다.
도 3은 코드 개발자(301)가 상기 TE(331)의 제어하에 특정 TCG(301)로 서명되는 공유 라이브러리(311)를 획득하기 위해 TE(331)과 상호작용하는 샘플 개발 환경을 예시한다. 이 예에서, 상기 코드 개발자(301)는 보안된 미디어 콘텐츠를 디모딩하기 위해 디지털 권한 관리("DRM") 어플리케이션에서 사용될 수 있는 라이브러리(311)를 개발할 수 있다. 상기 TE(331)는 DRM 라이브러리들을 위해 특정 TCG로 라이브러리들을 허가하는 권한을 가지는 TCG ID들의 범위(332)를 배치한다. 상 기 TE(331)는 이 예에서 루트 TE 권한 혹은 "CA"(333)으로부터 라이브러리를 증명하기 위한 상기 권한을 수신한다.
상기 개발자(301)는 상기 서명되지 않은 라이브러리(311)를 상기 TE(331)로 허가의 위해 제공하는데, 상기 TE(331)는 예컨대, 버그 확인, 바이러스 확인, 성능 평가, 혹은 단순히 상기 개발자(301)가 트러스트할 만하다는 점을 보장하기 위한 상기 개발자(301)의 신원의 상기 검증과 같은 임의의 방식의 조사를 포함할 수 있다. 상기 서명되지 않은 라이브러리(31) 및/또는 상기 개발자(301)가 상기 TE의 기준을 만족시킨다면, 상기 TE(331)는 상기 서명되지 않은 라이브러리(311)를 "서명"한다. 상기 서명되지 않은 라이브러리(311)의 서명은 상기 서명되지 않은 라이블러리(311)의 해시 값(hash value)을 생성하는 것 그리고 사설 키(320)를 사용하여 상기 해시 값을 인코딩하는 것을 포함할 수 있다. 상기 인코딩된 해시 값은 상기 서명되지 않은 랑리브러리(311)의 디지털 서명(325)으로서 참조된다.
일 구현 예에서, 상기 디지털 서명(325)이 생성될 때 상기 라이브러리가 서명되고 있는 그룹의 TCG ID(325)는 상기 서명되지 않은 라이브러리(311)에 부가된다. 이는 상기 서명 프로세스동안 상기 라이브러리에 부가된 정보로부터 상기 TCG의 직접적인 식별을 허용하다. 대안적으로. 상기 TCG ID는, 상기 디지털 서명(325)이 런타임에서 검증될 때 상기 인증 체인으로부터 간접적으로 결정되는 것을 허용하면서, 상기 서명 권한(예를 들어, 상기 TE(331) 또는 상기 CA(333))과 연관될 수 있고 또한 자신의 루트 인증에 포함될 수 있다. 본 발명의 구현에 적용될 수 있는 공통 디지털 인증 표준은 ITU-T X.509 표준이다.
상기 디지털 서명(325)은 상기 서명된 라이브러리(321)를 상기 TCG로 상기 TCG ID(312)가 상기 패키지와 함께 포함되는 경우 명시적으로, 혹은 상기 인증(335)이 상기 인증 체인을 통해 상기 TCG와 연관되는 경우 묵시적으로, 효과적으로 바인딩한다는 점이 이해될 것이다.
이후, 상기 TE(331)는 상기 서명된 라이브러리(321), 상기 디지털 서명(325) 및 가능하게는 상기 라이브러리가 서명된 상기 그룹의 TCG ID(312)를 반환한다. 상기 TE(331)는 또한 상기 디지털 서명(325)의 인증을 검증하는데 사용하기 위한 상기 TE의 공중 키를 포함하는 상기 TE의 인증(335) 역시 반환한다. 상기 TE 인증(335)은 실제로, 상기 CA(333)에 대한 인증과 같은 트러스트된 루트 인증을 초래하는 중간 인증들을 포함하는 인증 체인일 수 있다. 상기 개발자(301)는 이제 상기 서명된 라이브러리(321)를 분산시키도록 준비된다.
비록 본 명세서에서 라이브러리 허가 및 인증 발행 모두를 수행하는 단일 엔티티로서 설명되었지만, 상기 두 작업들은 개별 엔티티들에 의해 수행될 수도 있다는 점이 주목되어야 한다. 예를 들어, 몇몇 경우들에서, 상기 TE(331)는 상기 CA(335)로 하여금 상기 인증(335)를 발행하도록 요청(appeal)하거나, 혹은 완전히 별도의 엔티티에 요청(appeal)할 수 있다.
도 4는 어플리케이션(411)이 실행되는, 이 예에서의 계산 디바이스(401), 핸드헬드 계산 디바이스를 예시한다. 본 발명의 구현에서 사용될 수 있는 일 예시적인 계산 디바이스는 도 6에서 예시되고 아래에서 설명된다. 상기 계산 디바이스(401)는 운영 체제(420) 및 하나 이상의 설치된 어플리케이션들(예를 들어, 어플 리케이션(411))을 포함한다. 또한 하나 이상의 코드 라이브러리들(415)이 존재하는데, 이들은 위에서 설명된 바와 같이 "인증될" 수 있거나(예를 들어, 인증된 라이브러리(417)) 혹은 인증되지 않을 수 있다(예를 들어, 라이브러리(419)). 이 예에서, 상기 인증된 라이브러리(417)는 TCG에 포함되기 위해 허가될 수 있고, 또한 위에서 설명된 바와 같이 적절한 TE에 의해 서명될 수 있다.
상기 어플리케이션(411)은, 상기 어플리케이션이 자신이 인지했음을 선언하는 상기 허가된 TCG ID들의 리스트일 수 있는, 허가된 TCG 리스트(412)를 포함할 수 있다. 이는 상기 어플리케이션(411)을 사용하여 로딩된 임의의 라이브러리들(415)이 상기 허가된 TCG 리스트(412)에 있는 상기 TCG 들 중 하나이어야 함을 의미한다. 상기 허가된 TCG 리스트(412)는 단순히 개별 TCG ID들의 리스트가 보다는, 트러스트된 TCG ID의 범위 혹은 범위들을 포함할 수 있다는 점이 이해될 것이다.
상기 어플리케이션(411)은 또한, 상기 어플리케이션(411)이 트러스트하는 임의의 TE들에 대한 루트 인증들을 포함하는, 트러스트된 인증들(413)의 리스트를 포함할 수 있다. 상기 루트 인증들은, 인증된 라이브러리가 상기 인증된 라이브러리(517)의 디지털 서명을 유효화하기 위해 상기 TE의 (루트 인증에 포함됨) 공중 키를 사용함으로써 서명된 이후 변경되는지의 여부를 결정하는데 사용된다. 상기 트러스트된 인증들(413)은 상기 계산 디바이스(401)에 사전-설치될 수 있거나, 혹은 상기 어플리케이션(411)과 함께 혹은 임의의 다른 시점에서 설치될 수 있다. 상기 운영 체제(420)는 또한 상기 어플리케이션(411)에 의해 유지되는 상기 트러스 트된 인증들(413)에 부가하여 혹은 이를 대신하여 트러스트된 인증들(422)의 저장을 유지할 수 있다.
상기 어플리케이션(411)이 실행 중인 경우, 상기 어플리케이션은 상기 인증된 라이브러리(417)를 (예를 들어, 아마도 "CreateInstance" 호출을 사용하여) 시작하려고 시도할 수 있다. 상기 어플리케이션(411)은 자신이 호출하는 임의의 라이브러리가 상기 허가된 TCG 리스트(412)에서 상기 트러스트된 TCG들 중 하나의 멤버이어야 함을 선언한다. 이는 상기 어플리케이션의 시작(startup) 프로시져의 일부로서 초기화에서 이루어질 수 있거나, 혹은 상기 어플리케이션이 상기 라이브러리를 로드하기 위해 상기 호출(예를 들어, CreateInstance)과 함께 상기 허가된 TCG 리스트(412)(혹은 이와 연관된 부분)에서 통과할 수 있다.
상기 어플리케이션(411)에 의한 상기 요청에 응답하여, 상기 시스템(420)은 상기 인증된 라이브러리(417)를 위치시키고, 상기 어플리케이션(411)을 이용하여 실행하기 위해 허가되었는지의 여부를 결정한다. 상기 허가 결정은 상기 인증된 라이브러리(417)로부터 디지털 서명을 추출하고 대응하는 루트 인증이 상기 어플리케이션 트러스트된 인증들(413)에, 혹은 가능하게는 전체(global) 트러스트된 인증들(422)에 존재하는지의 여부를 결정하는 운영 체제(420)의 트러스트 매니저(424) 모듈에 의해 실행될 수 있다. 만약 그러하다면, 상기 트러스트 매니저(424)는 상기 라이브러리가 서명된 이후 변경되지 않았음을 보증하기 위해 상기 라이브러리의 디비털 서명의 인증을 검증한다. 이러한 검증은 상기 적절한 루트 서명이 거부되지 않았음을 보증하기 위해 원격 트러스트 엔티티 혹은 인증 권한(460)으로써 체크 하는 것을 포함할 수 있다.
만약 모두를 유효화한다면, 상기 운영 체제(420)는 상기 인증된 라이브러리(417)를 로드하고 이를 상기 어플리케이션의 메모리 공간에 있는 상기 어플리케이션(411)으로 링크시킨다. 만약 상기 방법에 따른 테스트가 실패한다면, 사기 운영 체제(420)는 상기 인증된 라이브러리(417)를 로드하지 않고 에러를 반환한다.
몇몇 경우들에 있어서, 상기 어플리케이션(411)은 어느 특정 라이브러리가 인보크(invoke)될지를 반드시 특정하기 않고 특정 기능의 클래스를 요청할 수 있다. 상기 요청된 기능을 제공하는 복수의 라이브러리가 존재할 수 있는데, 몇몇은 인증된 라이브러리들(417)이고 몇몇은 인증되지 않은 라이브러리들(419)이다. 상기 경우들에서, 상기 운영 체제(420)는 상기 어플리케이션의 TCG 요구조건들을 만족시키는 상기 라이브러리들(예를 들어 인증된 라이브러리(417)들을 단지 상기 어플리케이션(411)에만 사용가능하도록 만들 수 있다. 예를 들어, 상기 어플리케이션(411)은 DRM 제어에 포함되는, 예컨대 "MP3" 콘텐츠와 같은 오디오 콘텐츠를 렌더링할 수 있다. 이러한 경우에 있어서, 상기 어플리케이션(411)은 임의의 MP3 디코더들(라이브러리들)이 콘텐츠를 무단복제하지 않도록 트러스트될 것을 요청할 가능성이 있을 것이다. 이러한 트러스트는 특정 DRM TCG에서 멤버십의 형태로 나타날 수 있다. 따라서, 상기 어플리케이션(411)이 MP3 디코더 라이브러리를 요청하는 경우, 상기 운영 체제(420)는 단지 상기 특정 DRM TCG의 멤버들인 MP3 디코더 라이브러리들만을 사용가능하게 만든다.
도 5는 어플리케이션 및 상기 어플리케이션에 의해 로드되는 라이브러간의 트러스트를 보증하기 위한 방법(500)을 일반적으로 예시하는 동작 흐름 다이어그램이다. 상기 방법(500)은 일반적으로 상기 어플리케이션과 상기 라이브러리 간의 트러스트를 설정하고 검증하기 위한 시스템에서의 다양한 메커니즘들에 의해 수행되는 방법들을 설명한다.
블록 502에서, 라이브러리는 코드 개발자에 의해 생성된다. 상기 라이브러리는 예컨대, 어플리케이션과 같은, 실행코드의 또다른 모듈과 프로세스를 공유함으로써, 지원 역할로 실행하도록 의도되거나 실행할 수 있는 임의의 모듈 혹은 코드의 컴포넌트일 수 있다.
블록 504에서, 상기 라이브러리는 상기 라이브러리가 TCG 내에 포함되기 위해 허가되었음을 나타내도록 서명된다. 상기 TCG 내로의 포함은 상기 라이브러리가 몇몇 트러스트된 엔티티(예를 들어, TE)에 의해 보증되고 상기 TCG에서의 포함을 위한 임의의 요구조건들 혹은 기준에 부합되도록 검증되었음을 내포한다. 일 구현에서, 상기 라이브러리가 서명된 상기 특정 그룹을 식별하는 TCG ID는 상기 라이브러리가 서명된 경우 이에 명시적으로 부가된다. 대안적인 실시예에 있어서, TCG 인증은 상기 라이브러리가 서명된 상기 특정 TCG를 나타내는 상기 서명된 라이브러리와 함께 포함된다. 상기 TCG 인증은 TE에 의해 발행되거나, 혹은 상기 TCG를 관할하는 TE로부터 그것의 권한을 도출한다. 이러한 방식으로, 상기 서명은 상기 라이브러리를 묵시적으로 혹은 명시적으로 상기 TCG로 바인딩한다.
블록 506에서, 어플리케이션이 생성되어 블록 502에서 생성된 라이브러리와 같은 라이브러리를 이용하도록 구성된다. 상기 어플리케이션은 일부 주 요(primary) 기능을 수행하는 임의의 실행 가능한 코드일 수 있고, 상기 기능을 지원하거나 혹은 몇몇 부가(supplemental) 기능을 제공하기 위해 또다른 코드의 모듈(즉, 라이브러리)에 의존한다.
블록 508에서, 허가된 TCG들의 리스트는 상기 어플리케이션을 위한 메타-정보에서와 같이, 상기 어플리케이션에 부가된다. 상기 허가된 TCG들의 리스트는 이들 TCG들을 식별하고, 상기 어플리케이션을 지원하도록 로드된 임의의 라이브러리는, 상기 어플리케이션의 상기 프로세스 및 메모리 경계 내에서 실행하기 위해, 이들 TCG들에 속하여야 한다. 대안적으로 혹은 부가적으로, 상기 어플리케이션은 상기 어플리케이션 개발자가 TCG로 라이브러리들을 서명하기 위해 트러스트하는 TE들을 나타내는 트러스트된 루트 인증들을 포함할 수 있다.
블록 510에서, 블록 508로부터의 어플리케이션 및 블록 504로부터의 라이브러리는 예를 들어, 핸드헬드 계산 디바이스 혹은 인텔리전트 셀룰러 폰과 같은 계산 디바이스에 설치된다. 상기 어플리케이션 및 상기 라이브러리는 동시에 설치될 필요가 없으며, 그렇게 설치되지도 않을 것이지만, 상기 두 컴포넌트들 모두 결과적으로는 동일 디바이스상에 설치된다.
블록 512에서, 상기 어플리케이션이 시작되고 실행하기 시작한다. 상기 어플리케이션이 시작될 때, 상기 어플리케이션에 대한 코드 서명은 선택적으로 상기 코드가 실제로는 상기 코드 개발자에 의해 제공되었음을 보증하도록 검증될 수 있지만, 상기 검증은 본 문서의 전반에서 설명된 상기 TCG 검증과는 특성 및 목적에 있어서 상당히 다르다.
블록 514에서, 상기 어플리케이션은 상기 라이브러리에 의해 구현되는 클래스를 로드할 CreateInstance 호출을 발행한다. 몇몇 경우들에 있어서, 특정 라이브러리에 대해서라기보다는 라이브러리의 클래스에 대해 호출하기 위해 어플리케이션이 기록될 수 있다는 점이 이해될 것이다. 복수의 라이브러리들은 해당 라이브러리의 클래스를 구현하도록 실행될 수 있고 따라서, 상기 어플리케이션은 구현 클래스가 예시되는 특정 제어를 가지지 않는다. 그러나 해당 라이브러리이 클래스의 예를 생성하기 위한 상기 어플리케이션에 의한 호출이, 이 예에서는, 블록 510으로부터의 라이브러리의 로딩을 시작한다.
블록 516에서, 상기 라이브러리가 로드되기 전에, 상기 라이브러리에 대한 서명은, 상기 서명이 유효하며 상기 어플리케이션에 의해 트러스트되는 바와 같이 식별되는 루트 인증들까지 연결(chain)하는 것을 보증하도록 체크된다. 일 구현에서, 상기 유효 서명은 상기 라이브러리가 서명된 이후 변경되지 않았음을 표시한다. 따라서, 상기 라이브러리와 함께 포함되거나 혹은 상기 라이브러리 내에 내장된 TCG ID는 상기 라이브러리가 어느 TCG에 속하는지를 직접 식별한다. 대안적으로, 상기 TCG 멤버십은 상기 라이브러리를 서명하기 위해 사용된 상기 인증 체인으로부터 결정될 수 있다. 예를 들어, 상기 어플리케이션과 연관된 트러스트된 루트 인증들은 특정 TCG에 대한 서명 권한과 함께 트러스트된 엔티티들에 대한 확정(예를 들어, 루트) 인증들을 포함할 수 있다. 상기 라이브러리와 연관된 TCG 서명은 상기 로컬 트러스트된 루트 서명들과 대조적으로 평가된다. 어플리케이션이 상기 어플리케이션을 사용하여 실행하도록 허가된 복수의 TCG ID들을 식별할수 있다는 점이 주목되어야 한다. 이들 복수의 TCG ID들은 단순히 TCG ID들의 리스트, TCG ID들의 범위, 또는 상기 어플리케이션을 사용하여 식별하기 위해 라이브러리가 어느 하나 이상의 TCG들에 포함되어야 하는지를 정의하는 불(Boolean) 표현으로서 식별될 수 있다. 이들 혹은 다른 대안예들이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자들에게 명백할 것이다.
만약 상기 라이브러리에 대한 상기 서명이 자신의 신뢰도를 확정한다면, 블록 518에서, 상기 라이브러리가 로드된다. 그러나, 만약 상기 라이브러리에 대한 상기 서명이 어떠한 방식으로든 상기 확정에 실패하다면, 블록 520에서, 상기 라이브러리는 로드되지 않는다. 만약 복수의 라이브러리들이 계산 디바이스에 로드된다면, 대체 라이브러리가 상기 초기 라이브러리와 동일한 방식으로 선택되고 평가될 수 있다. 대안적으로, 보안 프롬프트는 트러스트 결정이 사용자 혹은 또다른 보안 확정 권한에 의해 이루어지도록 허용하기 위해 발행될 수 있다. 또다른 대안예는 상기 라이브러리의 상기 로드를 단순히 실패하고, 그 영향으로 에러 코드를 발행하는 것이다.
도 6은 본 발명의 구현 예가 특정하게 적용가능한 샘플 계산 디바이스(601)의 코어 컴포넌트들을 일반적으로 예시하는 기능 블록 다이어그램이다. 상기 계산 디바이스(601)는 예를 들어, 셀룰러 폰, 개인용 휴대 정보 단말기(PDA), 핸드헬드 "팜톱(palmtop)" 디바이스, 랩톱 컴퓨터, 휴대용 음악 재생기, 글로벌 위치지정 위성(GPS) 디바이스 등과 같은 임의의 이동식 계산 디바이스일 수 있다. 유사하게, 상기 계산 디바이스(601)는 예를 들어, 데스크톱 컴퓨터 혹은 서버와 같은 임의의 고정식 계산 디바이스일 수 있다.
이 예에서, 상기 계산 디바이스(601)는 프로세서 유닛(604), 메모리(606), 저장 매체(613), 및 오디오 유닛(631)을 포함한다. 상기 프로세서 유닛(604)은 유리하게는 디지털 신호 프로세서(DSP)와 같은 전용 프로세서 혹은 마이크로프로세서를 포함하지만, 대안적으로는 임의의 종래의 형태의 프로세서, 제어기, 마이크로제어기, 혹은 상태 머신일 수 있다.
상기 프로세서 유닛(604)은 상기 메모리(606)에 결합될 수 있고, 상기 메모리(606)는 유리하게는 상기 프로세서 유닛(604)에 의해 실행되는 소프트웨어 명령들을 유지하는 RAM 메모리로서 구현된다. 이 실시예에서, 상기 메모리(606)에 저장된 상기 소프트웨어 명령들은 운영 체제(610), 하나 이상의 어플리케이션들(612), 및 하나 이상의 코드 라이브러리들(614)을 포함한다. 상기 메모리(606)는 온-보드 RAM일 수 있고, 또는 상기 프로세서 유닛(604) 및 상기 메모리(606)는 집합적으로 ASIC에 상주할 수 있다. 대안적인 실시예에 있어서, 상기 메모리(606)는 펌웨어 혹은 플래시 메모리로 구성될 수 있다.
상기 프로세서 유닛(604)은 상기 저장 매체(613)에 결합되고, 상기 저장 매체는, 단지 몇몇만 언급하자면, 예를 들어, ROM 메모리, 플래시 메모리, 혹은 자기 디스크 드라이브와 같은 임의의 비휘발성 메모리로서 구현될 수 있다. 상기 저장 매체(613)는 또한, 예를 들어, 캐시 메모리를 구비한 자기 디스크 드라이브 등과 같은 상기 혹은 다른 기술들의 임의의 조합으로서 구현될 수도 있다. 이러한 특정 실시예에서, 상기 저장 매체(613)는 상기 계산 디바이스가 파워 오프되거나 혹은 전력이 없는 주기들 동안 데이터를 저장하는데 사용된다.
상기 계산 디바이스(601)는 또한 상기 계산 디바이스(601) 및 하나 이상의 다른 계산 디바이스들 간의 양방향 통신을 가능하게 하는 통신 모듈(621)을 포함한다. 상기 통신 모듈(621)은 예를 들어, 셀룰러 폰 네트워크, 블루투스 연결, 무선 근거리 네트워크, 혹은 가능하게는 무선 광역 네트워크와 같은 다른 무선 통신들 혹은 RF를 인에이블하기 위한 컴포넌트들을 포함할 수 있다. 대안적으로, 상기 통신 모듈(621)은 예를 들어, 이더넷 연결, RJ-11 연결, 범용 직렬 버스 연결, IEEE 6394(파이어와이어(Firewire)) 연결 등과 같은 하드-유선 네트워크 통신들 혹은 지상통신선(land-line)을 인에이블하기 위한 컴포넌트들을 포함할 수 있다. 이들은 비-소모적인(non-exhaustive) 리스트들로서 의도되며,또한 많은 다른 대안예들이 가능하다.
상기 오디오 유닛(631)은 아날로그와 디지털 포맷 사이에서 신호를 변환하도록 구성된 계산 디바이스(601)의 컴포넌트이다. 상기 오디오 유닛(631)은 스피커(632)를 사용하여 사운드를 출력하고, 마이크로폰(633)으로부터 입력 신호들을 수신하도록 상기 계산 디바이스(601)에 의해 사용된다.
도 6은 대부분의 종래 계산 디바이스들에서 일반적으로 발견되는 단지 특정 컴포넌트들만을 예시한다. 매우 많은 다른 컴포넌트들 역시 특정 구현예들에서 관례적으로(routinely) 발견되며, 특정한 매우 드문 경우들에 있어서, 도 6에 도시된 몇몇 컴포넌트들은 생략될 수 있다. 그러나, 도 6에서 도시된 상기 계산 디바이스는 현재 공통적으로 발견된 상기 디바이스들의 전형이다.
상기 본 발명은 특정 실시예들 및 구현예들을 참조하여 설명되었지만, 이들은 단지 예시적이며, 본 발명의 범위는 이들 실시예들에 제한되지 않는다는 점이 이해되어야 하다. 위에서 설명된 상기 실시예들에 대한 많은 변경들, 수정들, 첨가들 및 개선들이 가능하다. 이들 변경들, 수정들, 첨가들, 및 개선들이 후속하는 청구항들 내에 상세화된 바와 같은 본 발명의 범위 내에 있다는 점이 참작된다.

Claims (35)

  1. 코드 모듈들간의 트러스트(trust)를 보장하는 방법으로서,
    기능(functionality) 클래스를 이용하는 어플리케이션을 수신하는 단계 - 상기 어플리케이션은 상기 클래스를 구현하기 위해 상기 어플리케이션에 의해 트러스트되는 트러스트된 코드 그룹들("TCG")의 리스트를 포함함 - ;
    상기 기능 클래스를 구현하는 라이브러리를 수신하는 단계 - 상기 라이브러리는 서명 키를 이용하여 서명되고, 상기 서명은 상기 라이브러리를 TCG와 연관시키고, 상기 TCG는 신뢰성(trustworthiness)을 보증(endorsement)함 -;
    상기 라이브러리가 로딩되도록 하는 호출을 개시하는 단계 ; 및
    상기 라이브러리의 로딩에 앞서, 상기 라이브러리가 상기 리스트된 TGC들 중 하나의 멤버인지의 여부를 결정하도록 상기 라이브러리에 있는 상기 서명이 검증되도록 하는 단계를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 서명은, 상기 TCG를 식별하는 TCG ID로 상기 라이브러리를 바인딩(binding)함으로써, 상기 라이브러리를 상기 TCG와 연관시키는
    방법.
  3. 제1항에 있어서,
    공개 키 암호기법이 상기 라이브러리를 서명하고 검증하기 위해 사용되는
    방법.
  4. 제3항에 있어서, 상기 서명 및 검증은 인증(certificate) 계층들을 사용하여 이루어지는
    방법.
  5. 제4항에 있어서,
    상기 서명이 검증되도록 하는 단계는 상기 TCG 인증이 만료(expire)되었는지의 여부를 결정하는 단계를 추가적으로 포함하는
    방법.
  6. 제4항에 있어서,
    상기 서명이 검증되도록 하는 단계는 상기 TCG 인증이 취소(revoke)되었는지의 여부를 결정하는 단계를 추가적으로 포함하는
    방법.
  7. 제1항에 있어서,
    상기 서명은, 상기 TCG로 서명될 라이브러리들을 허가하는 역할을 하는 트러 스트된 엔티티("TE")와 상기 서명 키를 연관시키는 인증 체인(chain)을 통해, 상기 TCG와 상기 라이브러리를 연관시키는
    방법.
  8. 제1항에 있어서,
    상기 라이브러리에 있는 상기 서명이 검증되도록 하는 단계는 TE와 연관된 루트(root) 인증을 사용하여 상기 서명, 및 상기 TE가 상기 TCG로의 상기 라이브러리를 서명하도록 허가됨을 검증하는 단계 - 상기 루트 인증은 서명의 상기 신뢰성(authenticity)을 검증하도록 사용됨 - 를 포함하는
    방법.
  9. 제1항에 있어서,
    상기 어플리케이션은 사용자 어플리케이션, 스크립트, 웹 페이지 콘텐츠, 마크업(markup) 콘텐츠, 및 사용자 인터페이스를 포함하는 그룹으로부터 선택된 하나 이상의 코드 모듈들을 포함하는
    방법.
  10. 제1항에 있어서,
    상기 라이브러리는 공유된 라이브러리, 공용 라이브러리, 동적으로 링크된 라이브러리, 정적으로 링크된 라이브러리, 확장(extension), 스크립트, 구성, 콘텐 츠, 사용자 인터페이스 및 자원을 포함하는 그룹으로부터 선택된 하나 이상의 코드 모듈들을 포함하는
    방법.
  11. 라이브러리의 신뢰성을 검증하는 방법으로서,
    상기 라이브러리를 로딩하도록 어플리케이션으로부터 명령을 수신하는 단계 - 상기 어플리케이션은 허가된 트러스트된 코드 그룹들(TCG)의 연관된 리스트를 가지고, 각 TCG는 라이브러리들의 그룹과 연관된 트러스트의 레벨을 나타냄 - ;
    상기 라이브러리를 TCG와 연관시키는 디지털 서명을 검출하도록 상기 라이브러리를 검사하는 단계;
    상기 라이브러리가 상기 어플리케이션을 사용하여 실행되도록 허가되는지의 여부를 결정하기 위해 상기 어플리케이션과 연관된 허가된 TCG들의 상기 리스트들과 상기 라이브러리의 상기 TCG를 비교하는 단계; 및
    상기 라이브러리가 허가된다면, 상기 라이브러리를 로딩하는 단계를 포함하는
    방법.
  12. 제11항에 있어서,
    상기 디지털 서명은 상기 TCG로 서명될 라이브러리들을 허가하는 역할을 하는 트러스트된 엔티티("TE")에 대한 루트 인증과 상기 디지털 서명을 생성하는데 사용되는 서명 키를 연관시키는 인증 체인(chain)을 통해, 상기 TCG와 상기 라이브러리를 연관시키는
    방법.
  13. 제11항에 있어서,
    상기 디지털 서명은 특정 TCG를 식별하는 TCG ID로 상기 라이브러리를 바인딩함으로써 상기 TCG와 상기 라이브러리를 연관시키는
    방법.
  14. 제13항에 있어서,
    상기 TCG ID는 정수 값들의 범위에 있는 정수 값을 포함하고, 상기 정수 값들 중 적어도 하나는 상기 적어도 하나의 정수 값들의 사용을 허가하기 위해 평가된 라이브러리들의 그룹을 식별하는데 사용되는
    방법.
  15. 제11항에 있어서,
    상기 라이브러리와의 상기 TCG 연관이 신뢰성 있음을 보장하기 위해 상기 디지털 서명을 유효화하는 단계를 추가적으로 포함하는
    방법.
  16. 제15항에 있어서,
    상기 디지털 서명을 유효화하는 단계는 상기 디지털 서명이 신뢰성 있음을 보장하기 위해 트러스트된 엔티티와 연관된 루트 인증을 사용하는 단계를 포함하는
    방법.
  17. 제15항에 있어서,
    상기 디지털 서명을 유효화하는 단계는 트러스트된 엔티티가 상기 TCG로 상기 라이브러리를 서명하도록 허가됨을 검증하는 단계를 포함하는
    방법.
  18. 제11항에 있어서,
    상기 라이브러리가 허가되지 않으면, 상기 라이브러리를 로딩하지 않는 단계를 추가적으로 포함하는
    방법.
  19. 제11항에 있어서,
    상기 어플리케이션은 사용자 어플리케이션, 스크립트, 웹 페이지 콘텐츠, 마크업(markup) 콘텐츠, 및 사용자 인터페이스를 포함하는 그룹으로부터 선택된 하나 이상의 코드 모듈들을 포함하는
    방법.
  20. 제11항에 있어서,
    상기 라이브러리는 공유된 라이브러리, 공용 라이브러리, 동적으로 링크된 라이브러리, 정적으로 링크된 라이브러리, 확장(extension), 스크립트, 구성, 콘텐츠, 사용자 인터페이스 및 자원을 포함하는 그룹으로부터 선택된 하나 이상의 코드 모듈들을 포함하는
    방법.
  21. 제11항에 있어서,
    상기 어플리케이션으로부터의 상기 명령은 기능의 특정 클래스에 대한 요청을 포함하고,
    추가적으로 상기 라이브러리는 상기 기능의 특정 클래스를 제공하는 라이브러리들의 그룹 중 하나를 포함하고,
    상기 방법은 허가된 TCG와 연관된 상기 라이브러리에 기반하여 상기 라이브러리들의 그룹으로부터 상기 라이브러리를 선택하는 단계를 추가적으로 포함하는
    방법.
  22. 라이브러리의 신뢰성을 검증하기 위한 컴퓨터-실행가능한 명령들을 가지는 컴퓨터-판독가능한 매체로서,
    상기 라이브러리를 로딩하는 어플리케이션으로부터 명령을 수신하는 단계 - 상기 어플리케이션은 허가된 트러스트된 코드 그룹들(TCG)의 연관된 리스트를 가지고, 각 TCG는 라이브러리들의 그룹과 연관된 신뢰의 레벨을 나타냄 - ;
    상기 라이브러리를 TCG와 연관시키는 디지털 서명을 검출하도록 상기 라이브러리를 검사하는 단계;
    상기 라이브러리가 상기 어플리케이션을 사용하여 실행되도록 허가되었는 지의 여부를 결정하기 위해 상기 어플리케이션과 연관된 허가된 TCG들의 상기 리스트들과 상기 라이브러리의 상기 TCG를 비교하는 단계; 및
    상기 라이브러리가 허가된다면, 상기 라이브러리를 로딩하는 단계를 포함하는
    컴퓨터-판독가능한 매체.
  23. 제22항에 있어서,
    상기 디지털 서명은 상기 TCG로 서명될 라이브러리들을 허가하는 역할을 하는 트러스트된 엔티티("TE")에 대한 루트 인증과 상기 디지털 서명을 생성하는데 사용되는 서명 키를 연관시키는 인증 체인을 통해, 상기 TCG와 상기 라이브러리를 연관시키는
    컴퓨터-판독가능한 매체.
  24. 제22항에 있어서,
    상기 디지털 서명은 특정 TCG를 식별하는 TCG ID로 상기 라이브러리를 바인 딩함으로써 상기 TCG와 상기 라이브러리를 연관시키는
    컴퓨터-판독가능한 매체.
  25. 제24항에 있어서,
    상기 TCG ID는 정수 값들의 범위에 있는 정수 값을 포함하고, 상기 정수 값들 중 적어도 하나는 상기 적어도 하나의 정수 값들의 사용을 허가하기 위해 평가된 라이브러리들의 그룹을 식별하는데 사용되는
    컴퓨터-판독가능한 매체.
  26. 제24항에 있어서,
    상기 라이브러리와의 상기 TCG 연관이 신뢰성 있음을 보장하기 위해 상기 디지털 서명을 유효화하는 단계를 추가적으로 포함하는
    컴퓨터-판독가능한 매체.
  27. 제26항에 있어서,
    상기 디지털 서명을 유효화하는 단계는 상기 디지털 서명이 신뢰성 있음을 보장하기 위해 트러스트된 엔티티와 연관된 루트 인증을 사용하는 단계를 포함하는
    컴퓨터-판독가능한 매체.
  28. 제26항에 있어서,
    상기 디지털 서명을 유효화하는 단계는 트러스트된 엔티티가 상기 TCG로의 상기 라이브러리를 서명하도록 허가됨을 검증하는 단계를 포함하는
    컴퓨터-판독가능한 매체.
  29. 제22항에 있어서,
    상기 라이브러리가 허가되지 않으면, 상기 라이브러리를 로딩하지 않는 단계를 추가적으로 포함하는
    컴퓨터-판독가능한 매체.
  30. 제22항에 있어서,
    상기 어플리케이션은 사용자 어플리케이션, 스크립트, 웹 페이지 콘텐츠, 마크업(markup) 콘텐츠, 및 사용자 인터페이스를 포함하는 그룹으로부터 선택된 하나 이상의 코드 모듈들을 포함하는
    컴퓨터-판독가능한 매체.
  31. 제22항에 있어서,
    상기 라이브러리는 공유된 라이브러리, 공용 라이브러리, 동적으로 링크된 라이브러리, 정적으로 링크된 라이브러리, 확장(extension), 스크립트, 구성, 콘텐츠, 사용자 인터페이스 및 자원을 포함하는 그룹으로부터 선택된 하나 이상의 코드 모듈들을 포함하는
    컴퓨터-판독가능한 매체.
  32. 제22항에 있어서,
    상기 어플리케이션으로부터의 상기 명령은 기능의 특정 클래스에 대한 요청을 포함하고,
    추가적으로 상기 라이브러리는 상기 기능의 특정 클래스를 제공하는 라이브러리들의 그룹 중 하나를 포함하고,
    상기 컴퓨터-실행가능한 명령들은 허가된 TCG와 연관된 상기 라이브러리에 기반하여 상기 라이브러리들의 그룹으로부터 상기 라이브러리를 선택하는 단계를 추가적으로 포함하는
    컴퓨터-판독가능한 매체.
  33. 라이브러리의 신뢰성을 검증하기 위한 장치로서,
    상기 라이브러리를 로딩하도록 어플리케이션으로부터 명령을 수신하는 수단 - 상기 어플리케이션은 허가된 트러스트된 코드 그룹들(TCG)의 연관된 리스트를 가지고, 각 TCG는 라이브러리들의 그룹과 연관된 신뢰의 레벨을 나타냄 - ;
    상기 라이브러리를 TCG와 연관시키는 디지털 서명을 검출하도록 상기 라이브러리를 검사하는 수단;
    상기 라이브러리가 상기 어플리케이션을 사용하여 실행되도록 허가되는지의 여부를 결정하기 위해 상기 어플리케이션과 연관된 허가된 TCG들의 상기 리스트와 상기 라이브러리의 상기 TCG를 비교하는 수단; 및
    상기 라이브러리가 허가된다면, 상기 라이브러리를 로딩하는 수단을 포함하는
    장치.
  34. 제33항에 있어서,
    상기 라이브러리가 허가되지 않으면, 상기 라이브러리를 로딩하지 않는
    장치.
  35. 라이브러리의 신뢰성을 검증하기 위한 장치로서,
    어플리케이션 및 라이브러리가 저장된 저장 매체;
    프로세서; 및
    상기 프로세서 및 상기 저장 매체에 연결된 메모리를 포함하며, 상기 메모리에는 상기 프로세서로 하여금
    상기 라이브러리를 로딩하도록 어플리케이션으로부터 명령을 수신하고 - 상기 어플리케이션은 승인된 TCG들의 연관된 리스트를 가지고, 각 TCG는 라이브러리들의 그룹과 연관된 신뢰 레벨을 나타냄 - ;
    상기 라이브러리를 TCG와 연관시키는 디지털 서명을 검출하기 위해 상기 라이브러리를 검사하고;
    상기 라이브러리가 상기 어플리케이션을 사용하여 실행되도록 허가되는지의 여부를 결정하기 위해 상기 어플리케이션과 연관된 승인된 TCG들의 상기 리스트와 상기 라이브러리의 상기 TCG를 비교하고; 그리고
    상기 라이브러리가 승인된다면, 상기 라이브러리를 로딩하도록 하는 컴퓨터-실행가능한 컴포넌트들이 상주하는
    장치.
KR1020087023086A 2006-02-23 2007-02-23 신뢰된 코드 그룹들 KR101033620B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/361,230 US8020001B2 (en) 2006-02-23 2006-02-23 Trusted code groups
US11/361,230 2006-02-23

Publications (2)

Publication Number Publication Date
KR20080097230A true KR20080097230A (ko) 2008-11-04
KR101033620B1 KR101033620B1 (ko) 2011-05-11

Family

ID=38294072

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087023086A KR101033620B1 (ko) 2006-02-23 2007-02-23 신뢰된 코드 그룹들

Country Status (6)

Country Link
US (1) US8020001B2 (ko)
EP (1) EP1987464A2 (ko)
JP (1) JP5173844B2 (ko)
KR (1) KR101033620B1 (ko)
CN (1) CN101385033B (ko)
WO (1) WO2007101126A2 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7496757B2 (en) * 2002-01-14 2009-02-24 International Business Machines Corporation Software verification system, method and computer program element
US8490184B2 (en) * 2007-04-26 2013-07-16 International Business Machines Corporation Verification for computer programs that include external call references
KR100938672B1 (ko) * 2007-11-20 2010-01-25 한국전자통신연구원 악성 코드에 의해 삽입된 동적 연결 라이브러리 검출 장치 및 방법
US8079082B2 (en) * 2008-06-30 2011-12-13 Ebay, Inc. Verification of software application authenticity
US8745153B2 (en) * 2009-02-09 2014-06-03 Apple Inc. Intelligent download of application programs
US9805196B2 (en) 2009-02-27 2017-10-31 Microsoft Technology Licensing, Llc Trusted entity based anti-cheating mechanism
US8433296B2 (en) 2009-05-01 2013-04-30 Ryan Hardin Exclusive delivery of content within geographic areas
CN102682243A (zh) * 2011-03-11 2012-09-19 北京市国路安信息技术有限公司 一种构建可信java虚拟机平台的方法
US8832447B2 (en) * 2011-08-10 2014-09-09 Sony Corporation System and method for using digital signatures to assign permissions
US9336137B2 (en) 2011-09-02 2016-05-10 Google Inc. System and method for performing data management in a collaborative development environment
US8738706B1 (en) 2011-11-16 2014-05-27 Google Inc. Systems and methods for collaborative document editing
US9971896B2 (en) * 2011-12-30 2018-05-15 International Business Machines Corporation Targeted security testing
CN103491056B (zh) * 2012-06-12 2017-12-26 中兴通讯股份有限公司 应用权限的控制方法及装置
FR2992083B1 (fr) * 2012-06-19 2014-07-04 Alstom Transport Sa Calculateur, ensemble de communication comportant un tel calculateur, systeme de gestion ferroviaire comportant un tel ensemble, et procede de fiabilisation de donnees dans un calculateur
US8954732B1 (en) * 2012-06-27 2015-02-10 Juniper Networks, Inc. Authenticating third-party programs for platforms
CN104252597B (zh) * 2013-06-25 2017-05-31 中国银联股份有限公司 一种指示移动设备操作环境的方法和能够指示操作环境的移动设备
JP5866316B2 (ja) * 2013-06-28 2016-02-17 京セラドキュメントソリューションズ株式会社 アプリケーション実行時間短縮方法
US9519758B2 (en) * 2014-02-04 2016-12-13 Pegasus Media Security, Llc System and process for monitoring malicious access of protected content
CN103916395B (zh) * 2014-04-09 2017-04-19 北京京东尚科信息技术有限公司 一种服务调用方法、设备及系统
FR3028071B1 (fr) * 2014-11-05 2016-11-04 Oberthur Technologies Appareil electronique et procede mis en œuvre dans un tel appareil electronique
US9536080B2 (en) 2015-05-29 2017-01-03 Apple Inc. Method for validating dynamically loaded libraries using team identifiers
US11809571B2 (en) * 2021-06-14 2023-11-07 Cisco Technology, Inc. Vulnerability analysis using continuous application attestation

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6182279B1 (en) 1997-08-12 2001-01-30 International Business Machines Corporation Method and apparatus for storing templates in a component system
US6233577B1 (en) * 1998-02-17 2001-05-15 Phone.Com, Inc. Centralized certificate management system for two-way interactive communication devices in data networks
US7096497B2 (en) 2001-03-30 2006-08-22 Intel Corporation File checking using remote signing authority via a network
JP4145118B2 (ja) * 2001-11-26 2008-09-03 松下電器産業株式会社 アプリケーション認証システム
WO2004006075A1 (ja) * 2002-07-09 2004-01-15 Fujitsu Limited 開放型汎用耐攻撃cpu及びその応用システム
US7401219B2 (en) 2003-01-14 2008-07-15 International Business Machines Corporation Method and apparatus for protecting external call references
CN100347986C (zh) 2003-11-24 2007-11-07 华中科技大学 一种身份认证的方法和系统
US7568096B2 (en) 2004-04-23 2009-07-28 Microsoft Corporation Rendering digital content in a content protection system according to a plurality of chained digital licenses
US7559091B2 (en) * 2004-06-12 2009-07-07 Microsoft Corporation Software obfuscation
US7590867B2 (en) 2004-06-24 2009-09-15 Intel Corporation Method and apparatus for providing secure virtualization of a trusted platform module

Also Published As

Publication number Publication date
CN101385033A (zh) 2009-03-11
CN101385033B (zh) 2012-05-30
EP1987464A2 (en) 2008-11-05
US20070198841A1 (en) 2007-08-23
WO2007101126A2 (en) 2007-09-07
US8020001B2 (en) 2011-09-13
JP2009528596A (ja) 2009-08-06
KR101033620B1 (ko) 2011-05-11
JP5173844B2 (ja) 2013-04-03
WO2007101126A3 (en) 2007-10-25

Similar Documents

Publication Publication Date Title
KR101033620B1 (ko) 신뢰된 코드 그룹들
US9871821B2 (en) Securely operating a process using user-specific and device-specific security constraints
US9137023B1 (en) Self-signed certificates for computer application signatures
WO2019144640A1 (zh) 一种提高可信应用程序安全的方法
US8196213B2 (en) Verification of un-trusted code for consumption on an insecure device
US8171295B2 (en) Information processing apparatus, a server apparatus, a method of an information processing apparatus, a method of a server apparatus, and an apparatus executable process
CN102279760B (zh) 利用初始保护组件来进行设备引导
US8131997B2 (en) Method of mutually authenticating between software mobility device and local host and a method of forming input/output (I/O) channel
US20070240194A1 (en) Scoped permissions for software application deployment
US20060236122A1 (en) Secure boot
US20090031418A1 (en) Computer, method for controlling access to computer resource, and access control program
US20100217964A1 (en) Method and apparatus for controlling enablement of jtag interface
US20130031371A1 (en) Software Run-Time Provenance
US20130145456A1 (en) System and method for authenticating code executing on computer system
WO2013075421A1 (zh) 一种分类管理功能使用权限的方法及移动终端
JP2010073193A (ja) モバイルインターネットデバイス(mid)でuefiファームウェア及びuefiアウェアなオペレーティングシステムのセキュアなブートのためのシステム及び方法
JP2005182789A (ja) 特定の装置または装置のクラスにおいてのみソフトウェアの更新のインストールまたは稼動を確実に行えるようにする方法及びシステム
BRPI0114066B1 (pt) sistema e método de assinatura de código
Al Rahat et al. Oauthlint: An empirical study on oauth bugs in android applications
KR20130114651A (ko) 서비스로서 신뢰할 수 있는 장치 클레임
CN114651253A (zh) 用于策略强制实施的虚拟环境类型验证
Haldar et al. Symmetric behavior-based trust: A new paradigm for Internet computing
KR101265887B1 (ko) 보호 컴퓨팅 환경을 제공하는 방법 및 장치 내에 보호 환경을 설정하는 방법
CN116776311A (zh) 分级验证启动方法和装置
CN117874773A (zh) 基于安全等级管控策略的操作系统安全启动方法及装置

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: 20160330

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 9