KR100946042B1 - 탬퍼-레지스턴트 애플리케이션 구동 방법 및 시스템과 컴퓨터 판독 가능 저장 매체 - Google Patents

탬퍼-레지스턴트 애플리케이션 구동 방법 및 시스템과 컴퓨터 판독 가능 저장 매체 Download PDF

Info

Publication number
KR100946042B1
KR100946042B1 KR1020067011019A KR20067011019A KR100946042B1 KR 100946042 B1 KR100946042 B1 KR 100946042B1 KR 1020067011019 A KR1020067011019 A KR 1020067011019A KR 20067011019 A KR20067011019 A KR 20067011019A KR 100946042 B1 KR100946042 B1 KR 100946042B1
Authority
KR
South Korea
Prior art keywords
trusted
application
dictionary
java
jvm
Prior art date
Application number
KR1020067011019A
Other languages
English (en)
Other versions
KR20070001893A (ko
Inventor
혼시아 진
도날드 2세 리케
제프리 로트스피츠
시그프레도 닌
윌프레드 플로우페
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 KR20070001893A publication Critical patent/KR20070001893A/ko
Application granted granted Critical
Publication of KR100946042B1 publication Critical patent/KR100946042B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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

Abstract

트러스티드 자바 가상 머신(Java Virtual Machine, JVM)은 탬퍼-레지스턴트 애플리케이션을 지지하고, 애플리케이션의 무결성 및 키와 같은 그것의 비밀을 보장하는 방법을 제공한다. 이 트러스티드 JVM은 자바 애플리케이션의 무결성을 확인하고, 자바 애플리케이션의 디버깅을 방지하며, 그리고 자바 애플리케이션이 안전하게 비밀을 저장하고 재생하도록 한다. 이 트러스티드 JVM 환경은 트러스티드 딕셔너리(TrustedDicationary), 트러스티드번들(TrustedBundle), 바이트 코드를 암호화 및 복호화하는 부수적인 암호화 수단, 그리고 근간을 이루는 트러스티드 JVM을 포함한다. 트러스티드번들이 프로그래밍 코드를 보호하는 동안에 암호화된 트러스티드 딕셔너리는 데이터를 보호하고, 애플리케이션이 비밀 데이터 및 안전 카운터를 저장하도록 한다. 애플리케이션 설계자는 트러스티드번들이 단지 애플리케이션 설계자가 명백하게 이송하는 인터페이스로 액세스하는 것을 제한할 수 있다. 오픈 소스 코드는 부수적으로 암호화된다. 애플리케이션의 오픈 소스 프로그래밍 코드에 의해 필요한 비밀은 트러스티드 딕셔너리에서 암호화된다.

Description

탬퍼-레지스턴트 애플리케이션 구동 방법 및 시스템과 컴퓨터 판독 가능 저장 매체{TAMPER-RESISTANT TRUSTED VIRTUAL MACHINE}
본 발명은 대체로 가상 컴퓨팅 머신에서 구동하는 애플리케이션에 관한 것이다. 더욱 상세하게는, 본 발명은 애플리케이션을 탬퍼-레지스턴트하게 만드는 방법을 제공하는 트러스티드 환경에서 애플리케이션을 구동하는 것에 관한 것이다.
엔터테인먼트 산업은 디지털 혁명의 중흥기에 있다. 음악, 텔레비전, 및 영화는 점차 디지털화되었고, 소비자들에게 품질 및 호환성에서 새로운 이점을 제공한다. 이와 동시에, 디지털 데이터가 완벽하게 그리고 빠르게 복제될 수 있기 때문에, 디지털 혁명은 또한 위험성을 포함한다. 만일 소비자가 자유롭게 엔터테인먼트 콘텐츠를 복제하고 인터넷상에 그 콘텐츠를 제공하면, 엔터테인먼트 콘텐츠 시장은 사라질 수도 있다.
콘텐츠 보호 방식은, 많은 다른 것들 중에서 디지털 저작권 관리(DRM, Digital Rights Management) 시스템, DVD 비디오용 콘텐츠 스크램블링 시스템(CSS, Content Scrambling System) 및 DVD 오디오용 기록 매체 콘텐츠 보호(CPPM, Content Protection for Prerecorded Media)와 같이, 위험성을 감소시키도록 설계되어왔다. 이러한 시스템은 다음과 같은 특징을 공유한다: 그들을 구현하는 소프트웨어는 "강력"하게 되는 것이 필요하며, 즉 그 소프트웨어로부터 비밀(키)을 추출하거나 또는 허가되지 않은 기능을 얻기 위해서 그 소프트웨어의 동작을 수정하는 해커의 공격을 그 소프트웨어가 방지한다. 그러한 공격을 방지하는 기술을 탬퍼-레지스턴트 소프트웨어(tamper-resistant software)라 한다.
탬퍼-레지스턴트 소프트웨어는, 해커가 오픈 소스 프로그램을 더욱 쉽게 위태롭게 할 수도 있다는 전제하에서, "오픈 소스" 개념과 상충하는 것이 공통된 인식이다. 그러나, 오픈 소스 콘텐츠 보호 방식은 한정된 장점을 제공한다. 오픈 표준은 시장의 분열을 방지할 수도 있고 그리고 독점적 솔루션이 경쟁을 폐쇄하는 것으로부터 예방할 수도 있다. 추가로, 오픈 소스 콘텐츠 보호 방식은 실제로 해커의 공격 수준을 감소시키는데 도움이 될 수도 있다. DVD 비디오 CSS 방식에 대한 해킹이 내부자로부터의 누설에 의해 상당하게 이루어지는 것으로 알려져 있다. 이러한 내부자들은 오픈-소스 플랫폼 리눅스 상에 DVD 플레이어를 구비하려는 열망에 의해 명백하게 동기를 부여받았다.
한편, 자바
Figure 112009061388795-pct00001
언어는 많은 애플리케이션에서 컴퓨터 언어 C를 대체하여 왔다. 이 자바 언어는 소스 프로그램을 자바 가상 머신(Java Virtual Machine) 또는 "JVM"(Java virtual machine)으로 지칭되는 가상 컴퓨터의 명령어(바이트 코드로 불림)로 변환함으로써 구현된다.
이 JVM은 실제 하드웨어 컴퓨터는 아니고, 그 대신에 바이트 코드를 해석하 고 주어진 물리적인 컴퓨터상에서 그들의 기능을 구현하는 프로그램이다. 이러한 접근은 주어진 자바의 휴대성으로 가능하다; 이 언어는 모든 형태의 컴퓨터에 이용 가능하며 심지어 셀룰러 폰, 스테레오, 및 TV 셋톱 박스 등과 같은 내장형 장치들에서도 이용 가능하다.
일부 회사는 JVM과 동일한 명령어 세트를 가지는 컴퓨터를 생산한다. 그러한 경우에, JVM은 실제적이고, 가상이 아니다. 그러나, 관례에 의해, 그러한 실제 컴퓨터는 여전히 "JVM"으로 불리며, 본 명세서에서는 관습을 받아들일 것이다.
콘텐츠 보호에 대한 하나의 접근은 콘텐츠 보호 방식의 강력한 요구들을 구현하는데 JVM을 이용한다. 이러한 접근에서, 모든 비밀 데이터와 알고리즘은 자바로 구현되지 않으며; 그 대신에, 그들은 JVM 그 자체로 "전송"될 것이다. 추가로, JVM은 "샌드 박스"환경을 제공하여 허가받지 않은 동작들이 금지된다. 예컨대, JVM이 보호된 콘텐츠를 처리할 때, 자바의 일반 파일-기록 메커니즘은 작동되지 않는다. 유리하게도, 자바 코드 그 자체의 무결성을 확인할 필요가 없다.
이 "샌드 박스"는 자바 코드에 의해서 임의의 허가받지 않은 동작을 방지한다. 각 콘텐츠 보호 방식의 중요한 로직은 JVM 그 자체의 탬퍼-레지스턴트 환경에 숨겨진다. 이러한 기술이 유용한 것으로 확인되었다 할지라도, 비밀 데이터 및 알고리즘이 JVM으로 구현될 필요가 없는 곳에서 솔루션을 제시하는 게 바람직하고, 이들은 자바로 구현될 수 있다. 그러한 솔루션은 "오픈 소스" 개념을 지원할 수 있는 추가적인 장점을 가진다.
대부분의 콘텐츠 보호 애플리케이션은 비밀 알고리즘에 상반되는 비밀 데이터 (키)를 포함한다. 또한, 워터마킹과 같은 일부 콘텐츠 보호 방식은 비밀 알고리즘을 포함한다. 해커가 바이트 코드로부터 원래의 자바 프로그램을 추론하는 것은 상대적으로 쉽다. 전통적인 "바이트-코드 모호화(obfuscation)" 프로그램은 실제로 이러한 추론을 거의 방지하지 못하며, 변수, 메소드, 및 클래스의 이름을 단지 읽기 어렵게 한다. 가능한 한 이 바이트 코드를 위해서 강력한 암호의 보호를 포함하는 솔루션이 필요하다.
일부 콘텐츠 보호 방식은 "안전 카운터(secure counter)"를 이용한다. 예컨대, DVD 오디오 사용자는 단지 몇 번의 복제만이 허용된다. 사용자는 이러한 카운트를 그의 하드 디스크 상에서 단지 일부 파일을 저장하고 재생함으로써 리셋할 수도 있다. 또한 사용자는 그의 보호된 파일을 일부 친구에게 복제할 수도 있고, 따라서 원래의 사용자가 구매한 콘텐츠를 복제한다. 이러한 콘텐츠 보호의 기본적 위반을 해결하는 솔루션이 필요하다.
자바 언어는 "퍼블릭(public)" 대 "프라이빗(private)"의 개념을 제시한다. 각 메소드 또는 서브루틴은 퍼블릭 또는 프라이빗으로 선언될 수 있거나 그 어느 것을 이용하지 않고서도 선언된다. 퍼블릭 메소드는 원래 자바 애플리케이션의 외부 인터페이스를 위해 계획되었다. 프라이빗 메소드는 외부에서 호출되지 않는 자바 애플리케이션 내의 모든 함수들을 위해 계획되었다. 퍼블릭이나 프라이빗 그 어느쪽도 아닌 메소드는 자바 클래스와 관련된 그룹인 "패키지"내에서 사용되도록 계획되었다.
그러나, 대형 자바 애플리케이션은 많은 자바 "패키지"를 포함하고, 결과적으로, 거의 모든 함수들이 퍼블릭화 되었다. 해커는 이러한 퍼블릭 메소드를 "백 도어"로 활용하여 이 애플리케이션을 허가받지 않은 방식으로 동작할 수도 있다. 단일 패키지 내에서도, 해커는 단지 패키지에 대한 그 자신의 클래스를 추가하여 간단히 패키지 보호를 해체할 수 있다. 애플리케이션 설계자는 해커가 이용할 수도 있는 일부 내부적 "퍼블릭" 인터페이스를 그 또는 그녀가 고의로 노출시킨 것을 확인하는 것은 매우 힘들다. 메소드와 함수의 노출을 방지하는 가상 머신 언어가 필요하며, 이는 보안의 이슈를 애플리케이션에서 가상 머신 언어로 전환한다.
최근에, 일부 하드웨어 제안은 소프트웨어가 비밀을 저장하고 보전을 확인하는데 도움이 되어왔다. 예컨대, TCPA(Trusted Computer Platform Alliance)는 그러한 하드웨어의 공개 표준을 규정하였다. 또한 유사한 비공개 기술이 개발되어왔다. 이러한 접근은 타협이 없는 면을 이용한다. 애플리케이션을 신뢰성 있게 하기 위해서, 운영 체제의 신뢰성이 필요하다. 운영 체제를 신뢰성 있게 하기 위해서, 운영 커널의 신뢰성이 필요하다. 운영 커널을 신뢰성 있게 하기 위해서, 최초 부트 코드의 신뢰성이 필요하다. 임의의 레벨에서의 양호한 변화조차도 신뢰성의 사슬을 끊는다.
하나의 솔루션은 운영 체제에서 새로운 특권 레벨을 규정한다. 이러한 특권 레벨은 커널의 서브 세트, 운영체제의 서브 세트, 그리고 모든 트러스티드 애플리케이션에 존재한다. 그러나, 이러한 독점적인 접근은 이 기술의 소유자가 트러스티드 애플리케이션을 제작하는 데 엄청난 경쟁적 장점을 제공하며, "오픈 소스"의 개념을 무효화한다. 여전히 특별한 보안 하드웨어를 효과적으로 이용할 수 있는 "오픈 소스" 애플리케이션을 개발하도록 하는 솔루션이 필요하다.
많은 자바 설계자들은 특정한 사용자 또는 장치를 위해 기록된 애플리케이션이 다른 사용자들이나 장치들에 전이되지 않기를 바라왔다. 자바 설계자들은, 단일 사용자에게 애플리케이션을 팔기를 원하고, 이 사용자가 그 애플리케이션을 다른 사용자에게 주거나 팔 수 없도록 하는 것을 원한다. 애플리케이션 설계자나 소유자의 허가없이 그 애플리케이션을 공유하는 것을 방지하는 솔류션이 필요하다.
본 발명은 탬퍼-레지스턴트 트러스티드 자바 가상 머신(JVM)을 위한 JVM 모델, 컴퓨터 프로그램 제품, 및 관련 방법(본 명세서에서는 전체적으로 "시스템" 또는 "본 시스템"을 참조함)을 제공한다. 트러스티드 JVM은 탬퍼-레지스턴트 애플리케이션을 지원하는 방법을 제공한다. 본 시스템은 애플리케이션 및 그것의 비밀의 무결성을 보장하는 방법을 제공하며, 오픈-소스 탬퍼-레지스턴트 소프트웨어를 기록하는 과정을 쉽게 한다.
트러스티드 JVM은 탬퍼-레지스턴트를 구현한다. 이는 애플리케이션의 무결성을 확인하고, 애플리케이션의 디버깅을 방지하며, 이 애플리케이션이 안전하게 비밀을 저장하고 복구하도록 한다. 트러스티드 JVM은 공개-소스화 되지 않았다. 그러나, 단지 하나의 트러스티드 JVM이 필요하며, 이는 트러스티드 JVM이 많은 서로 다른 오픈-소스 애플리케이션을 지원할 수 있다. "오픈-소스"의 값은 애플리케이션에서 구현된다.
본 시스템은 단일 트러스티드 JVM이 필요하며, 콘텐츠 보호 로직은 이 트러스티드 JVM에서 구현된다. 전통적인 자바 보안은 인터넷에서 다운 로드된 자바 애플릿 또는 애플리케이션이 사용자의 컴퓨터에 피해를 끼치는 것을 방지하도록 한다. 반대로, 본 시스템은 애플리케이션이 사용자로부터 피해를 입는 것을 방지하며, 즉, 이 애플리케이션은 비밀의 변형이나 노출로부터 보호된다. 본 시스템은 애플리케이션이 아는 트러스티드 환경이 신뢰성 있고, 그 환경에서 동작할 수 있도록 제공한다.
대부분의 콘텐츠 보호 애플리케이션은 비밀 알고리즘과 대조적으로 비밀 데이터 (키)를 포함한다. 본 시스템은 그러한 비밀을 생성하고 안전하게 저장하는 애플리케이션을 위한 방법을 제공한다. 또한, 워터마킹과 같은 일부 콘텐츠 보호 방식은 비밀 알고리즘을 포함한다. 본 시스템은, 필요하다면, 바이트 코드를 위한 강력한 암호 보호를 포함한다.
본 시스템은 애플리케이션에 의해 키와 같은 애플리케이션의 비밀에 액세스하도록 한다. 그러나, 애플리케이션은 두 개의 애플리케이션이 동일한 머신상에서 구동하고 있다면 다른 애플리케이션의 비밀에 액세스하지 않는다.
추가로, 본 시스템은 애플리케이션이 변조되지 않도록 보장하는 메커니즘을 구비한다. 그대로이며, 수정되지 않은 애플리케이션은 자신의 비밀에 액세스한다. 만일 본 시스템이 이 애플리케이션을 수정하도록 결정한다면, 그 수정된 애플리케이션은 더 이상 그 비밀에 액세스하지 못한다. 본 시스템은 애플리케이션에 의해 사용된 비밀을 규정하지는 않는다. 애플리케이션 설계자가 그러한 비밀을 규정한다.
또한, 본 시스템은 프로그래밍 코드 또는 가상 머신 명령을 암호화함으로써 애플리케이션의 프로그래밍 코드를 보호하기 위한 메커니즘을 제공한다. 본 시스템은 실제 코드와 동일한 파일에서 미디어 키 블록을 구비한다. JVM은 장치 키의 세트를 구비하며, 이 장치 키의 세트는 미디어 키를 추출하기 위해서 미디어 키 블록을 처리하는데 사용된다. 미디어 키는 그 파일에서 프로그래밍 코드를 해독하는데 사용된다. 프로그래밍 코드는 해커에 의해서 감시될 수 있는 방법으로는 결코 노출되지 않는다. 프로그래밍 코드는, 메모리에 로드될 때나 JVM에 의해 실행될 때만 노출된다.
일부 콘텐츠 보호 방식은 "안전 카운터"를 필요로 한다. 예컨대, 사용자는 단지 임의의 횟수로 DVD 오디오를 복제하도록 한다. 사용자는 하드디스크 상에서 일부 파일을 단지 저장하고 재생함으로써 그의 또는 그녀의 카운터를 리셋하도록 할 수 있다. 또한, 사용자는 그의 보호된 파일을 일부 친구들에게 복제하도록 시도할 수도 있으며, 따라서 원래의 사용자가 구매한 콘텐츠를 복제한다. 본 시스템은 콘텐츠 권리의 기본적 우회를 해결하는 방법을 제공한다.
본 시스템은 트러스티드 딕셔너리(TrustedDictionary), 트러스티드번들(TrustedBundle), 바이트 코드를 암호화하고 해독하는 선택적인 암호화 방법 및 기본적인 트러스티드 JVM을 포함한다. 트러스티드 딕셔너리가 데이터를 보호하는 반면 트러스티드번들은 프로그래밍 코드를 보호한다.
트러스티드 딕셔너리는 암호화되어, 애플리케이션이 비밀 데이터를 저장하고 카운터를 보호하도록 한다. 애플리케이션에 의한 트러스티드 딕셔너리의 이용은 암묵적으로 그 애플리케이션이 트러스티드 환경에서 구동하고 있다는 것을 확인한다. 트러스티드번들은 애플리케이션 설계자가 애플리케이션을 포함하는 모든 자바 패키지를 함께 그룹화하도록 하여, 그 애플리케이션 설계자가 명시적으로 이송한 그들의 인터페이스만으로의 액세스로 제한한다.
트러스티드번들은 애플리케이션의 필요에 따라 선택적으로 암호화될 수도 있다. 예컨대, 본 시스템은, 트러스티드번들에서 프로그래밍 코드를 오픈 소스가 되도록 하는 반면에, 애플리케이션에 의해 사용되는 비밀을 보호하는데 트러스티드 딕셔너리를 사용한다. 오픈 소스 코드는 암호화되지 않는다. 그러나, 애플리케이션의 오픈 소스 프로그래밍 코드에 의해 필요한 비밀은 트러스티드 딕셔너리에서 암호화된다.
암호화 방법은 애플리케이션 설계자로 하여금 비밀을 유지해야만하는 클래스 파일(바이트 코드의 열)을 암호화하도록 한다. 또한, 암호화 방법은, 본 시스템에 대해, 클래스 파일들이 실행되는 동안 그 클래스 파일을 해독하는 갱신가능한 방법을 제공한다. 트러스티드 JVM는 트러스티드 딕셔너리 및 트러스티드번들의 구현에 밀접한 관련이 있다. 다시 말하면, 그 구현(또는 그것의 중요한 부분)은, 가상 머신 바이트 코드에서가 아니라, 주어진 프로세서를 위한 "원시" 코드에서이다. 트러스티드 JVM은 표준 소프트웨어 탬퍼-레지스턴트 기술에 의해 보호된다.
트러스티드 딕셔너리 및 트리스티드번들은 다음과 같이 서로 관련된다: 애플리케이션이 트러스티드 딕셔너리를 예시적으로 설명할 때, 이 애플리케이션은, 그 트러스티드 딕셔너리로부터의 값을 "획득(get)"할 수 있고 "입력(put)"할 수 있는 그러한 트러스티드번들을 암묵적으로 리스트화 한다. 애플리케이션은, 그러한 트러스티드번들을 서명하기 위해 사용되었던 공개 키를 리스트화 함으로써 그러한 트러스티드번들을 리스트화 한다.
트러스티드번들은 자바 아카이브(Java Archive, JAR) 파일이 될 수도 있고, 표준 메소드에 의해 애플리케이션용 클래스 파일이 패키지화된다. 자바 언어는 자바 아카이브가 자바 아카이브 목록에 서명함으로써 디지털로 서명될 수 있도록 한다. 본 시스템은 변조되지 않고 올바르게 서명된 자바 아카이브 파일로부터의 애플리케이션만이 트러스티드 딕셔너리를 성공적으로 이용할 수 있도록 보장한다. 이 자바 아카이브 파일은 그들의 이용을 위해 표시되었던 트러스티드 딕셔너리만을 이용할 수 있다.
본 시스템은 애플리케이션이 트러스티드 환경에서 구동하고 있음을 아는 메커니즘을 제공한다. 애플리케이션 설계자는 그의 소프트웨어 제작 빌드 머신과 같은 트러스티드된 것이 알려진 환경에서 트러스티드 딕셔너리를 제시한다. 그리고 나서, 그 애플리케이션 설계자는 그 애플리케이션을 따라 이 트러스티드 딕셔너리를 배치한다. 애플리케이션은, 그것이 트러스티드 환경에서 동작할 때, 단지 트러스티드 딕셔너리로부터 제조 비밀을 성공적으로 추출만 할 수 있다.
예컨대, DVD 오디오 플레이어 애플리케이션은 DVD 오디오 장치 키의 세트를 갖는 트러스티드 딕셔너리를 공장에서 로딩할 수 있다. DVD 플레이어 애플리케이션은 트러스티드 환경에서 동작하는 것으로 알려진 그러한 키를 이용하여 DVD 오디오를 성공적으로 재생할 수 있다. 해커는 트러스티드 딕셔너리를 구비한 것으로 가장한 "트로이 목마" 환경을 시도할 수도 있다. 그러나, 그러한 "트러스티드 딕셔너리"로부터 획득된 임의의 장치 키는 DVD 오디오를 해독할 수 없다. 결과적으로, 만일 애플리케이션이 거짓된 환경에서 동작하였다면, 그러한 콘텐츠 보호 방식에 대한 노출(exposure)은 없다. 애플리케이션 설계자는, 애플리케이션이 만일 의심을 받을 만한 환경에 놓여 있다면 불법적 동작을 수행할 수 없다는 것을 안다.
다른 예로서, 디지털 저작권 관리(Digital Rights Management, DRM) 애플리케이션은 허가된 콘텐츠를 수신하기 위해서 서버를 구비하여 공개 키 프로토콜을 이용한다. 공개 키 프로토콜은 공지되었고, 그리고 프로토콜 그 자체로는 비밀이 아니다. 비밀은 프로토콜에서 공개 키에 대응하는 비밀 키이다. 프로토콜은 그 비밀 키가 감추어져 있는 한 오픈 소스 코드 내에 둘 수도 있다. 만일 클라이언트 애플리케이션이 동작하기 전에 클라이언트의 비밀 키가 트러스티드 딕셔너리 내에 주어진다면, 이 키는 단지 트러스티드 환경에서 사용만 될 수 있다. 만일 클라이언트 애플리케이션과 서버가 성공적으로 공개 키 프로토콜과 협상할 수 있다면, 그들은 클라이언트 애플리케이션이 트러스티드 환경에서 구동되고 있다는 것을 확신하게 될 것이다. 서버는 그 프로토콜의 일부로서 허가된 콘텐츠를 안전하게 전송할 수 있다.
다른 예에서, 애플리케이션 설계자는 오디오 음악용 오디오 워터마킹을 제공하는 프로그램을 기록한다. 이러한 오디오 워터마크는 다양한 오디오 플레이어를 특정 방식으로 동작하도록 지시하는 특별한 복제 제어 신호이다. 오디오 플레이어는 저작권 보호를 위해 지시되는 대로 오디오 워터마크에 응답하고, 오디오 음악의 비인가 사용을 금지한다. 오디오 워터마크에서 명령을 검출하고 응답하기 위해서 오디오 플레이어에 의해 사용된 프로그래밍 코드는 해커로부터 보호되는 것이 필요하다. 본 시스템은 이러한 프로그래밍 코드를 암호화할 수 있고, 안전한 트러스티드 환경을 제공하며, 이 환경에서 프로그래밍 코드가 동작할 수 있다.
일부 또는 모든 클래스 파일을 암호화하기 위해 선택된 애플리케이션 설계자는 애플리케이션이 트러스티드 환경에서 동작하고 있는 것을 확인하는 추가 방법을 구비한다. 그러한 클래스 파일은 그들이 트러스티드 JVM에서 동작할 수 없다면 성공적으로 로드되지 않는다. 이 경우에서, 만일 트러스티드 JVM 환경에서 로드되지 않는다면, 애플리케이션은 구동될 수 없다.
예컨대, 본 발명은 시간 및 날짜와 함께 은행 로비와 같은 화면을 기록하는 보안 카메라의 무결성을 보증하기 위해서 사용될 수도 있다. 그 은행 및 보안 회사는 영상 상에서 시간 및 날짜의 무결성에 의존한다. 본 시스템은 보안 카메라용 트러스티드 환경을 제공하는데 사용될 수 있고, 외부인이 그 시간과 날짜를 바꾸기는 매우 어렵다.
따라서 "오픈 소스"의 개념을 유지하는 반면에 탬퍼 레지스턴트 애플리케이션 소프트웨어를 지원할 수 있는 안전하고 트러스티드 JVM을 위한 모델, 컴퓨터 프로그램 제품, 및 관련 방법을 규정한다.
본 발명의 실시예는 이제 첨부된 도면을 참조하여 단지 예시적인 방식으로써 기술될 것이고, 이 도면은:
도 1은 본 발명의 트러스티드 JVM 환경에서 사용될 수 있는 바람직한 동작 환경의 개략도;
도 2는 도 1의 트러스티드 JVM 환경의 하이-레벨 구성의 블록도;
도 3은 도 1 및 도 2의 트러스티드 JVM 환경에서 사용하기 위해 애플리케이션을 제작하는 방법을 나타내는 처리 순서도; 및
도 4는 도 4a 및 4b를 포함하고, 도 1 및 도 2의 트러스티드 JVM 환경에서 바람직한 애플리케이션의 동작 방법을 나타내는 처리 순서도를 나타낸다.
도 1은 본 발명에 따른 트러스티드 JVM(Java virtual machine)을 위한 시스템 및 관련 방법이 사용될 수도 있는 바람직한 전체 환경을 도시한다. 트러스티드 JVM(10)은 전형적으로 그 내부에 내장되거나 서버(15)에 설치되는 소프트웨어 프로그래밍 코드 또는 컴퓨터 프로그램 제품을 포함한다. 선택적으로, 트러스티드 JVM(10)은 디스켓, CD, 하드 디스크, 또는 동일한 장치 등과 같은 적절한 저장 매체 상에 저장될 수 있다.
트러스티드 JVM(10)이 자바 프로그래밍 언어로서 기술되는 반면에, 본 발명은 임의의 적절한 유형의 가상 머신 또는 "실제의" 가상 머신을 이용하여 구현될 수도 있다. 트러스티드 JVM(10)을 기술하는데 자바 프로그래밍 언어를 이용하는 것이 바람직하고, 그리고 본 발명의 애플리케이션을 다른 가상 머신으로 제한하지는 않는다.
원격 인터넷 사용자와 같은 사용자들은 컴퓨터(20, 25, 30)과 같은 다양한 컴퓨터에 의해 표현되고, 네트워크(35)를 통해서 서버(15)로 액세스할 수 있다. 컴퓨터(20, 25, 30) 각각은 사용자가 안전하게 서버(15)로 인터페이스할 수 있도록 하는 소프트웨어를 포함한다. 서버(15)는 전화기, 케이블, 또는 위성 링크와 같은 통신 링크(40)를 통해 네트워크(35)에 연결된다.
컴퓨터(20, 25, 30)는 통신 링크(45)를 통해 네트워크(35)에 개별적으로 연결된다. 트러스티드 JVM(10)이 네트워크(35)에 의해서 기술되는 반면에, 컴퓨터(20, 25, 30)는 트러스티드 JVM(10)에 원격으로 보다는 국부적으로 액세스할 수도 있다. 컴퓨터(20, 25, 30)는 애플리케이션의 이용을 통해 트러스티드 JVM(10)에 상호적으로 또는 자동으로 액세스할 수도 있다.
도 2는 트러스티드 JVM(10)의 하이-레벨 계층을 나타낸다. 트러스티드 JVM 또는 TJVM(10)은 일반적으로 트러스티드 JVM(205), 자바 기반 클래스(210), 및 자바 애플리케이션(215)을 포함한다.
트러스티드 JVM(205)는 전형적으로 C와 같은 컴퓨터 프로그래밍 언어로 기록된 루틴을 포함하고, 트러스티드 JVM이 실행되는 특정 컴퓨터를 위한 머신 명령어로 컴파일된다. 트러스티드 JVM(205)이 C 프로그래밍 언어에 의해서 기술되는 반면에, 본 시스템은 임의의 형태의 프로그래밍 언어를 이용하여 구현될 수도 있다. 트러스티드 JVM(205)을 기술하는 데에는 C 프로그래밍 언어의 이용이 바람직하며, 트러스티드 JVM(205)의 애플리케이션을 다른 프로그래밍 언어로 제한하지 않는다.
표준 자바 구현예에서, C 코드는 운영 체제와의 인터페이싱을 필요로 하는 바이트 코드 해석기(220) 및 "원시" 메소드(225)를 구현한다. C 코드는 서로 다른 플랫폼에서 상이할 수도 있다. 이 예에서, C 코드는 트러스티드 JVM(205)에 의해 구현된다.
자바 기반 클래스(210)는 자바 언어로 기록되며 기본적 자바 오브젝트들(스트링, 오브젝트, I/O 등)을 구현한다. 자바 오브젝트들은 자바 컴파일러에 의해서 바이트 코드로 컴파일된다. 일부 자바 기반 클래스는 "원시"코드 - 즉 그들이 실행되는 프로세서의 원시 명령어 세트로 구현되는 메소드를 구비할 수도 있다.
자바 애플리케이션(215)은 자바 기반 클래스(210) 위에서 구동한다. 자바 애플리케이션(215)은 하나 또는 그 이상의 트러스티드번들 1(230) 내지 트러스티드번들 N(235)을 포함하며, 이는 전체적으로 트러스티드번들(240)로서 지칭된다. 추가로, 애플리케이션(215)은 애플리케이션 메인(245) 또는 애플릿 초기화(applet init)(250)와 같이 트러스트될 필요가 없는 다른 자바 코드를 포함한다. 자바 애플리케이션(215)은 선택적으로 트러스티드 딕셔너리 1(255) 내지 트러스티드 딕셔너리 N(260)과 같은 하나 또는 그 이상의 트러스티드 딕셔너리를 포함하며, 이는 전체적으로 트러스티드 딕셔너리(265)로서 지칭된다.
자바 애플리케이션(215)은 다수의 트러스티드번들(240) 및 트러스티드 딕셔너리(265)를 포함할 수도 있다. 다수의 트러스티드번들(240)은 서로 정보 교환이 가능하다. 트러스티드번들(240)은 트러스티드 딕셔너리(265)와 비밀을 분리하여 유지할 수 있거나 트러스티드 딕셔너리(265)와 그 비밀을 공유할 수 있다.
서로 다른 소프트웨어 회사들은, 정보를 교환하고 그들의 개별 트러스티드 딕셔너리(265, 267)를 통해 비밀을 전달하는 서로 다른 자바 애플리케이션(215, 266)을 제조한다. 예컨대, 소프트웨어 회사는 오디오 CD에서 디지털 워터마크를 삽입하는 자바 애플리케이션(215)을 제조한다. 디지털 워터마크 소프트웨어는 트러스티드번들(240)을 포함한다. CD 플레이어는 워터마크 신호를 검출하기 위해서 워터마킹 트러스티드번들(240)를 호출하는 자바 애플리케이션(266)으로 된 소프트웨어를 포함한다. 트러스티드 딕셔너리(265, 267)는 디지털 워터마크 소프트웨어가 CD 플레이어 소프트웨어와 정보를 교환하기 위한 안전한 경로를 제공하고, 따라서 확실하게 그들이 인증된 버전이고 그리고 소프트웨어 버전이 해킹되지 않았음을 증명한다.
"무결성 엔빌로프"로 개발된 일부 모듈이 도 2에 도시된다. 무결성 엔빌로프는 이러한 모듈이 변조되지 않았음을 확인하기 위한 메커니즘이다. 트러스티드 JVM(205)는 무결성 엔빌로프(270)에 의해 보호된다. 자바 기반 클래스(210)는 무결성 엔빌로프(275)에 의해 보호된다. 트러스티드번들 1(230)은 무결성 엔빌로프(280)에 의해 보호된다. 트러스티드번들 N(235)는 무결성 엔빌로프(285)에 의해 보호된다.
무결성 엔빌로프(270, 275, 280, 285)는 디지털 서명의 검사기를 포함한다. 추가로, 무결성 엔빌로프(270, 275, 280, 285)는 디지털 인감 등과 같은 다른 기술 을 포함한다. 디지털 인감 기술에 대해 좀 더 상세한 설명을 위해서는, 예컨대, 미국 등록 특허 번호 5,978,482 및 6,038,316을 참조한다. 디지털 인감은 디지털 서명과 유사하나, 소프트웨어 모듈의 무결성을 확인하는 데 있어서 확실한 장점을 구비한다. 추가로, 무결성 엔빌로프(270, 275, 280, 285)는 TCPA(Trusted Computing Platform Alliance) 및 팔라디움 칩(Palladium chip)에서 발견되는 것과 같은 하드웨어 기반의 무결성 체크를 포함한다.
도 2에 도시한 바와 같이, 트러스티드 JVM(205)의 원시 메소드(225)에서 비밀 메소드(290)는 암호화될 수 있다. 추가로, 트러스티드 딕셔너리(265)도 암호화된다. 추가로, 트러스티드번들 1(230)에서 클래스(295)에 의해 도시된 바와 같이, 일부 또는 모든 클래스가 암호화될 수도 있다. 최소한, 비밀 메소드(290), 트러스티드 딕셔너리(265), 및 클래스(295)는 디스크 상의 예컨대, 메모리 또는 외부 메모리에 저장되는 동안 암호화된다.
암호화는 암호 메소드(290), 트러스티드 딕셔너리(265), 및 클래스(295)가 컴퓨터 메모리에 로드된 후에도 유지될 수도 있다. 이러한 경우에, 암호 메소드(290), 트러스티드 딕셔너리(265), 및 클래스(295)를 위한 코드는 실행 전에 바로 "즉시(on the fly)" 해독될 수도 있다. 암호 메소드(290), 트러스티드 딕셔너리(265), 및 클래스(295)는 실행이 종료된 후에 논리적으로 암호화될 수도 있다.
트러스티드 JVM(10)은 공지되어 사용되거나 이용가능한 소프트웨어 탬퍼-레지스턴스 기술로 사용된다. 암호에 대한 좀 더 상세한 설명을 위해서는, 예컨대, 2000년 7월 3일에 출원되고, 대리인 등록 번호 ARC2000-0063이며, 본 명세서에서 참조로서 포함된 미국 특허출원 일련번호 09/609,809를 참조한다. 일 실시예에서, 트러스티드 딕셔너리(265)는 데이터 암호화 표준(Data Encryption Standard, DES) 또는 고등 암호화 표준(Advanced Encyption Standard, AES) 등과 같은 표준 암호화를 이용하여 암호화된다.
비밀 메소드(290)를 암호화하는데 사용되는 키는, 소프트웨어 탬퍼-레지스트턴스 기술에서 공통적으로 사용됨에 따라, 매우 모호하며 포괄적인 비밀이 될 수도 있다. 공지되거나 이용가능한 방송 암호화 기술은 클래스(295)를 암호화를 위해 사용되는 키를 관리하는데 사용될 수 있다. 방송 암호화 기술에 대한 좀 더 상세한 설명을 위해서는, 예컨대 미국 등록 특허 번호 6,118,813 및 미국 특허출원 번호 2002/01147906A1를 참조한다. 트러스티드 JVM(10)은 클래스(295)를 암호화하기 위해서 임의의 적당한 방송 암호화 방식을 이용할 수도 있다.
방송 암호화를 이용하기 위해서, 트러스티드 JVM(205)의 설계자는 클래스(295)와 같은 자바 클래스 암호화를 위해서 미디어 키 블록 및 그들과 관련된 미디어 키를 각 애플리케이션 설계자에게 전달한다. 애플리케이션 설계자는 특정한 클래스(295)를 암호화하기 위해서 미디어 키를 이용한 툴을 이용한다. 이 툴은 미디어 키 블록을 자바 아카이브 파일에 부가시킨다.
장치 키 세트(292)는 트러스티드 JVM(205) 내부에 형성된다. 트러스티드 JVM(205)의 각 버전은 서로 다른 장치 키 세트를 구비한다. 주어진 암호화된 클래스(295)를 해독하기 위해서, 트러스티드 JVM(205)은 그것의 장치 키를 자바 아카이브 파일 내에서 미디어 키 블록을 처리하고 그 미디어 키를 추출하는데 이용한다.
만일 해킹이 특별한 트러스티드 JVM(205)을 해독하고 그것의 장치 키 세트가 누설되면, 새로운 트러스티드 JVM(205)이 새로운 장치 키 세트를 구비하여 배포될 수 있다. 이 새로운 장치 키 세트는 모든 현존하는 애플리케이션에서 모든 미디어 키 블록을 처리할 수 있다.
추가로, 의심되지 않는 키가 기능을 수행하도록 하는 동안에, 의심되는 장치 키가 제외된 새로운 미디어 키 블록이 애플리케이션 설계자에게 주어질 수 있다. 애플리케이션 설계자는 편리한 대로 그의 애플리케이션에 새로운 미디어 키 블록으로 업데이트할 수도 있다. 미디어 키 블록의 업데이트는 새로운 트러스티드 JVM(205)의 발달에 엄격하게 일치시킬 필요가 없다.
트러스티드 JVM(205)이 실행되는 플랫폼은 예컨대, TCPA(Trusted Computing Platform Alliance) 및 팔라디움 칩(Palladium chip) 등과 같은 보안 칩을 포함할 수도 있다. 만일 그렇다면, 이러한 칩은 장치 키를 저장하는데 이용할 수 있다.
일 실시예에서, 트러스티드 딕셔너리(265)는 표준 자바 기반 클래스 딕셔너리의 서브클래스를 포함한다. 데이터 값의 저장 및 복구를 허용하는 임의의 적당한 클래스는 트러스티드 딕셔너리(265)로서 사용될 수도 있다. 트러스티드 딕셔너리(265)(예컨대, "획득(get)" 및 "입력(put)")의 메소드는 트러스티드 JVM(205)에서 원시 메소드(225)로서 구현된다.
만일, 트러스티드 딕셔너리(265)가 복제를 허용하지 않는다면, "제한적"으로 규정된다. 만일 자바 애플리케이션(215)이 트러스티드 딕셔너리(265)를 제한적으로 지정한다면, 그러면, 자바 애플리케이션(215)은 다른 컴퓨터 시스템상에서 트러스티드 딕셔너리(265)를 독출할 수 없다.
공지되거나 이용 가능한 논리 기술은 "키 데이터베이스"를 포함하며 키 계산에서 기만(indirection)의 수준은 트러스티드 딕셔너리(265)를 생성하는데 사용될 수 있다. 트러스티드 딕셔너리(265)의 기본적 논리에 대한 좀 더 상세한 설명을 위해서는, 예컨대, 2001년 1월 5일에 출원되고, 대리인 등록번호가 AM9-99-0145이며, 본 명세서의 참조로서 포함되는 미국 특허출원 일련번호 09/754,396를 참조한다.
자바 딕셔너리는 전형적으로 "키" 및 "값"을 구비한다. 그러나, 암호화 키를 구비한 딕셔너리 키의 혼동을 피하기 위해서, 우리는 이전 개념을 위해 "키" 대신에 "키워드"라는 용어를 사용할 것이다. 따라서, 딕셔너리 값은 키워드와 관련되어 저장되고, 그리고 그들은 나중에 키워드를 이용하여 복구된다. 트러스티드 딕셔너리(265)에서, 키워드 및 값은 비밀 키로서 암호화되고, 데이터베이스 마스터 키로 불린다. 데이터베이스 마스터 키는 다음과 같은 유형의 값의 비밀 함수의 결과이다: 일반적인 값, 플랫폼-특정값, 및 독출-기록 값. 플랫폼-특정 값은 예컨대 사용자 컴퓨터상에서 하드 디스크의 일련 번호가 될 수도 있다.
바람직한 독출-기록 값은 컴퓨터의 기본적 입출력 시스템(BIOS) 독출-기록 구역에 저장된 값이 될 수도 있다. 무결성을 위해서, 독출-기록 값은 종단-사용자에 의해서 쉽게 저장되고 복원될 수 없다. TCPA 또는 팔라디움 칩을 구비한 플랫폼에서, 플랫폼 값 및 독출/기록 능력은 칩 내에 이식된다.
예로서, "키 데이터베이스"는 트러스티드 딕셔너리(265)를 위해 사용될 수도 있다. 만일 키 데이터베이스가 일 PC에서 다른 PC로 이동되면, 프로그램은 더 이상 데이터 베이스를 위해 올바른 마스터 키를 계산할 수 없고 그 데이터베이스는 쓸모없게 된다. 키 데이터베이스는 카운터를 포함할 수도 있다. 사용자는 카운터를 리셋하기 위해서 키 데이터베이스를 저장하고 재생하려 할 수도 있다. 그 독출/기록 값은 저장 및 재생 사이에서 변화하고, 마스터 키를 변화시킨다. 결과적으로, 키 데이터베이스 및 트러스티드 딕셔너리(265)는 더 이상 사용할 수 없다. 자바 애플리케이션(215)은 이제 사용자들이 이용 규칙을 우회하려 하는 것을 알고 적절히 응답할 수 있다.
일부 자바 애플리케이션(215)은 플랫폼 결합이나 저장/재생 보호가 필요없다. 딕셔너리의 구성 파라미터를 위해서 플랫폼 결합 또는 저장/재생 보호를 제작하고, 필요에 따라 비밀 마스터 키 함수에서 플랫폼-특정 값이나 독출/기록 값을 포함하는 것을 생략하는 것은 상대적으로 간단한 일이다.
트러스티드 딕셔너리(265)는 그 트러스티드 딕셔너리(265)를 생성할 때 제공되는 공개 키의 리스트를 포함한다. 이러한 공개 키는 트러스티드 딕셔너리(265)가 트러스티드번들(240)로 액세스하는 것을 제한하며, 그 트러스티드번들의 자바 아카이브 파일들은 이 공개 키들 중 하나와 관련된 개인 키에 의해서 서명된다.
일 실시예에서, 트러스티드 딕셔너리(265) 구현은 트러스티드번들(240)을 위해서 트러스티드 딕셔너리(265)에 액세스하기 전에 공개 키의 리스트를 체크한다. 다른 실시예는, 비밀 함수에 입력되는 일반적인 값들 중 하나로서 공개 키를 이용하여, 이식된 "비밀 함수" 마스터 키 메커니즘을 이용한다. 그러면, 번들은 허가되는 것에 따라 트러스티드 딕셔너리(265)를 성공적으로 해독할 수도 있다.
만일 하나 이상의 공개 키가 트러스티드 딕셔너리(265)와 관련된다면, 기만의 수준은 키 계산에 부가될 수도 있다. 다양한 마스터 키 각각은, 각 공개키를 위한 하나, 공통의 매개 키를 암호화한다. 매개 키는 트러스티드 딕셔너리(265)에서의 값들을 암호화한다.
추가로, 매개 키의 서로 다른 암호화된 버전은 트러스티드 딕셔너리(265)에 저장된다. 트러스티드번들(240)이 트러스티드 딕셔너리(265)에 액세스하려 할 때, 그 트러스티드 JVM(205)은 마스터 키를 계산하고 매개 키의 그러한 암호화된 버전들 중에 하나를 각각 해독한다. 만일 번들이 이 트러스티드 딕셔너리(265)에 대한 액세스가 허가된다면, 그러한 해독들 중 하나는 진정한 매개 키이다. 이 진정한 매개 키는 액세스를 허가한다.
트러스티드 딕셔너리에서 키워드를 위한 값은 거의 임의의 자바 오브젝트일 수도 있다. 자바 언어에서, 예컨대, 많은 자바 오브젝트는 writeObject() 메소드를 이용한 바이트의 시퀀스로 변화될 수 있다. 그러한 오브젝트는 "나열될 수 있는(serializable)"이라 불린다. 그 바이트의 시퀀스는 딕셔너리 키워드 또는 값으로서 취급될 수 있다. 결과적으로, 임의의 나열될 수 있는 자바 오브젝트는 트러스티드 딕셔너리(265)에 안전하게 저장될 수 있다.
일 실시예에서, 트러스티드번들(240)은 오픈 서비스 게이트웨이 초기화(OSGi, Open Service Gateway Initiative)의 번들 클래스의 서브클래스이다. 애플리케이션의 공개 메소드의 대부분에 액세스를 제한할 수 있는 임의의 개념은 트러스티드번들(240)이 될 수도 있다.
자바의 특징은 그것의 프라이빗 메소드로만이 아니라, 번들의 외부에서 임의의 것으로부터 전체 클래스를 "감추는(hide)"데 이용된다. 예컨대, 클래스 X 및 클래스 Y와 같은 두 개의 클래스는 서로 다른 클래스 로더, 클래스 로더 A 및 클래스 로더 B, 에 의해서 로드된다. 클래스의 이름 및 실제 클래스 로더 모두 JVM에 대해서 클래스를 식별하는 데 중요하다.
클래스 로더 A 및 클래스 로더 B가 서로 정보를 교환하기 위해서 특별한 수단을 취하지 않는다면, 동일한 이름을 갖는 클래스 조차도 복제되며, 각 클래스 로더에 의해서 따로 유입될 것이다. 결과적으로, 동일한 이름을 갖는 두 개의 식별 클래스는 트러스티드 JVM(205)에 의해서 서로 다른 클래스로 보여진다. 예컨대, 만일 클래스 X가 위젯(Widget) 오브젝트를 생성하여 이를 클래스 Y의 메소드에 전달하면, 위젯을 구현하는 클래스 파일이 동일하다 할지라도, 클래스 X가 A 위젯 및 B 위젯을 제외한 클래스 Y를 발생하기 때문에 클래스 X에 클래스캐스트익셉션(ClassCastExcrption) 에러가 발생한다.
일 실시예에서, 전체 클래스를 감추는 이 자바 특성은 OSGi 번들 개념에서 구현된다. 각 번들은 분리된 클래스 로더에 의해서 신중하게 로드된 분리된 자바 아카이브 파일이다. 이 클래스 로더는 자바 기반 클래스(210)를 얻기 위하여 그리고 자바 아카이브 파일에 명시된 "이송(export)" 패키지로 특별하게 지정된 이송 패키지(클래스의 그룹)를 이송하기 위하여 시스템에서 서로 다른 클래스 로더와 정보를 교환한다. 단지 이송된 클래스만이 성공적으로 번들의 외부에 있는 다른 번들이나 코드에 의해서 성공적으로 참조될 수 있다.
OSGi 번들을 트러스티드번들(240)로 만들기 위해서, 트러스티드 JVM(10)은 OSGi 번들의 자바 아카이브 목록이 서명될 필요가 있다. 결과적으로, 단지 원래의 서명자에 의해 지정된 패키지만이 이송된다.
일 실시예에서, 트러스티드 JVM(10)은 getClassLoader()를 프라이빗 메소드로 만들고; 이는 해커가 예컨대, 미디어의 소유권을 보호하는 애플리케이션 설계자의 발명을 우회하기 위해서 getClassLoader()를 이용하는 것을 방지한다. 메소드 getClassLoader()는 다음의 OSGi번들의 특성 때문에 프라이빗으로 된다. 임의의 자바 오브젝트의 클래스는 그 오브젝트에 대한 "getClass()" 메소드를 이용하여 얻을 수 있다. 그 결과는 getClassLoader()를 호출했던 퍼블릭 메소드인 클래스 오브젝트이다. getClassLoader()는 클래스가 로드된 클래스 로더의 클래스로더 오브젝트(ClassLoader Object)를 반환한다. 이 클래스로더 오브젝트로부터, 메소드 loadClass()는 클래스 로더에 의해서 로드된 임의의 다른 클래스의 클래스 오브젝트를 발견하는데 사용될 수 있다. 클래스 오브젝트로부터, 그 클래스의 새로운 오브젝트가 제시될 수 있다. 이는 이송된 클래스가 트러스티드번들(240)의 외부에서 제시될 수 있도록 하려는 의도를 좌절시킨다.
다른 실시예에서, "getClassLoader()"의 동작이 수정되고, 이에 따라 트러스티드번들(240)을 인식하게 된다. 결과적으로, getClassLoader()는 유용한 클래스 로더를 메소드에게만 반환하며, 이 메소드는 동일한 트러스티드번들(240)내에 있다. 추가의 실시예는 오브젝트가 "getClassLoader()"를 수행하는 것을 금지하도록 자바 보안 관리자(Java Security Manager)를 이용한다. 또 다른 실시예는 번들 클 래스 로더를 수정하고, 이에 따라 트러스티드번들(240)의 외부에서 호출될 때 이송된 클래스만이 나타나도록 한다.
자바 기반 클래스(210)는 그 자바 기반 클래스(210)가 모든 트러스티드번들(240)에 대해 공통적이기 때문에 무결성 엔빌로프에서 캡슐화된다. 그렇지 않으면, 이론적으로 자바 기반 클래스(210)로 위장된 트로이 목마를 가지는 것이 가능하다. 예컨대, 만일 트러스티드번들(240)이 키를 스트링으로 변환하려 한다면, 가짜 스트링 클래스가 하드디스크 상에 그 결과를 기록할 수도 있다. 이러한 공격이 어느 정도 부자연스러운 반면, 이는 자바 기반 클래스(210)를 단지 체크함으로써 그것을 제거하기 위한 간단한 일이다.
트러스티드 JVM(10)은 "안정 인증 채널"을 이용한다. 이 "안정 인증 채널"이란 용어는 소프트웨어 탬퍼-레지스턴스에서 표준 용어이다. 그것은 두 개의 독립된 소프트웨어 모듈 사이에 연결된 것을 의미하고, 이 소프트웨어 모듈은 통과되는 데이터를 위장 공격자(man-in-the-middle)에게 가로채이지 않도록 서로 정보를 교환할 필요가 있다.
안정 인증 채널은 트러스트디번들(240)이 트러스티드 딕셔너리(265)를 공유하도록 함으로써 트러스티드 JVM(10)에서 편리하게 성립될 수 있다. 다시 말하면, 호출자 트러스티드번들(240)은 피호출자(callee) 트러스트번들(240)에서 이송된 클래스를 호출하며, 호출자 및 피호출자 트러스티드번들(240) 모두로부터의 공개 키로서 제시된 트러스티드 딕셔너리(265)를 전달한다. 미리 협정함으로써, 피호출자 트러스티드번들(240)에 대한 인수로써 동작하는 임의의 지정된 값이 트러스티드 딕셔너리(265)에 저장된다. 마찬가지로, 피호출자 트러스티드번들(240)은 미리 협정된 이름으로 트러스티드 딕셔너리(265)에 그들을 저장함으로써 그 값을 반환한다. 트러스티드 JVM(10)은 위장 프로그램에 의한 관찰 또는 수정을 방지하기 위해서 이러한 방식으로 키와 같은 비밀 값을 반환한다.
이러한 안정 인증 채널 접근은 그들이 트러스티드 환경에서 구동하고 있는 트러스티드번들(240)을 입증하지 못한다. 결과적으로, 트러스티드번들(240)은, 이 메커니즘을 신뢰하기 전에 상술한 방법을 이용하여 그들이 트러스티드 환경에 있다는 것을 증명한다. 추가로, 트러스티드 딕셔너리(265)를 제시하지 못한 부분은 그것의 공개 키가 기대되는 대로인 것을 입증한다. 일 실시예에서, 트러스티드 딕셔너리(265)의 클래스는 공개 키를 입증하기 위해서 getPublicKeys() 메소드를 구현한다. 트러스티드 JVM(10)은 이 공개 키를 입증하기 위해서 임의의 다수의 메소드를 이용할 수도 있다.
일 실시예에서, 트러스티드 JVM 환경은 자바 애플리케이션(215)에 영향을 미치지 않는 예컨대, TCPA 및 팔라디움 칩과 같은 보안 칩을 이용한다. 트러스티드 JVM(205)은 보통은 BIOS(basic input/outpuit system) 로더로 시작하는 신뢰성 고리의 일부로서 로드된다. 만일, 신뢰성 고리를 잃게 된다면, 트러스티드 JVM(205)은 운영 체제가 안전함을 더 이상 신뢰할 수 없다.
그러나, 이는 소프트웨어 탬퍼-레지스턴스를 위한 정상 상태이고 그리고 그것을 보상하는 기술은 공지되었다. 예컨대, 운영체계의 중요한 부분은 소프트웨어 무결성 엔빌로프를 구비할 수도 있다. 선택적으로, 바이러스 검출에서 사용되는 그것과 유사한 기술은 사용자가 그의 운영 체제 커널에 설치한 우회 프로그램을 검출하기 위해서 전달될 수 있다. 많은 우회 프로그램은 커널 레벨에서 동작하도록 설계된다.
운영 체제가 신뢰성을 상실하게 된 상황에서, 트러스티드 JVM(205)은 운영체계에서 우회 프로그램을 검출하기 위해 표준 탬퍼-레지스턴스 기술을 사용한다. 이 트러스티드 JVM(205)은 장치 키 및 트러스티드틱셔너리(265)의 계산 값을 저장하기 위해서 보안 칩을 사용한다.
정상 동작에서, 보안칩에서의 값은 자바 애플리케이션(215)의 검사합계(checksum)에 의해 보호된다. 그러나, 이러한 검사합계는 비밀이 아니며, 그들은 신뢰성 고리에서 바로 인접한 기초적인 계층으로서 수행된다. 일단 그 신뢰성 고리가 깨지면, 이 값들은 비밀 키 역할을 수행하고; 그 키는 더 이상 검사합계를 할 필요가 없다. 실시예에서, 트러스티드 JVM(205)의 저장된 값을 풀리게 하는 값은 예컨대, 디지털 서명 계산과 같은 무결성 계산의 결과이다.
트러스티드 JVM(10)을 이용한 트러스티드 자바 애플리케이션을 제작하는 방법(300)은 도 3의 처리 순서도에 의해 도시된다. 단계 305에서, 애플리케이션 설계자는 자바 애플리케이션(215)의 어떤 면이 보호가 필요한지를 결정한다. 자바 애플리케이션(215)은 비밀 코드, 비밀 데이터, 또는 그 둘의 조합을 포함할 수도 있다. 에컨대, DVD 비디오 콘텐츠 보호 방식(CSS)은 비밀 키를 가진다. 또한, CSS는 암호화 알고리즘을 보호하기 위한 라이센스를 필요로 한다. 다른 한편, DVD 오디오 보호 방식(CPPM)은 단지 비밀 키만 포함하며; 그 알고리즘은 공개적으로 기 술된다.
만일, 자바 애플리케이션(215)이 비밀 데이터를 포함한다면, 자바 애플리케이션(215)은 자바 딕셔너리에 비밀 데이터를 위치시키도록 설계된다. 자바 딕셔너리는, 자바 애플리케이션이 전달될 때, 트러스티드 딕셔너리(265)로 제시된다.
자바 애플리케이션(215)의 번들이 단계 310에서 설계된다. 일 실시에에서, 이러한 번들은 OSGi 번들로서 설계된다. 애플리케이션 설계자는 그 번들에 대응하는 자바 아카이브 파일에 서명하며; 이는 이 번들이 트러스티드번들(240)로서 다루어질 것을 보증한다. 애플리케이션 설계자는 트러스티드 딕셔너리(265)가 제시될 때 공개 키의 리스트를 제공한다. 관련된 개인 키에 의해서 서명된 번들만이 그러한 트러스티드 딕셔너리(265)로 액세스가 허가된다.
단계 305에서, 애플리케이션 설계자는 자바 애플리케이션(215)이 어떠한 비밀도 포함하지 않도록 결정할 수도 있다. 예컨대, MPEG 렌더링 애플리케이션은 그것의 기능을 수행하기 위한 비필 정보가 필요하지 않다. 예컨대, 애플리케이션 설계자는 다른 콘텐츠 보호 방식에 의한 서브루틴으로서 의도된 애플리케이션을 제작할 수도 있다. 이 경우에, 그러한 콘텐츠 보호 방식은 그 서브루틴이 단지 렌더링 되고 그리고 파일에 데이터를 저장하지 않는 것을 보증한다. 이 경우에, 애플리케이션 설계자는 추가 단계 315 - "다른 번들과 인터페이스 설계" - 를 따른다.
단계 315에서, 임의의 애플리케이션 또는 서비스(신뢰성 있는 또는 신뢰성 없는)로부터 호출될 수 있는 퍼블릭 인터페이스는 적절한 임의의 인터페이스를 구비한 정규의 OSGi 서비스로서 이용 가능하게 될 수 있다. 만일 서비스가 트러스티드번들(240)을 구비한 인터페이스가 필요하다면, 트러스티드번들(240)에 대한 인터페이스는 트러스티드 딕셔너리(265)가 필요하다.
예컨대, 트러스트디번들(240)에 대한 인터페이스는 호출자와 "피호출자" 사이에 있게 될 수도 있다. 만일, 트러스티드번들(240)을 구비한 인터페이스에서 서비스가 호출자라면, 그 서비스는 트러스티드 딕셔너리(265)를 이용한다. 만일 그 서비스가 호출자가 아니라면, 애플리케이션 설계자는 그 서비스의 공개 키 및 그 피호출자의 공개 키를 구비한 트러스티드 딕셔너리(265)를 제시한다. 이러한 공개 키는 탬퍼-레지스턴스를 보장하기 위해서 프라이빗 트러스티드 딕셔너리(265)에 저장된다.
만일 그 서비스가 피호출자라면, 호출자는 트러스티드 딕셔너리(265)를 제시한다. 트러스티드 딕셔너리(265)가 그 서비스에 대해 통과된다면, 그 서비스는 트러스티드 딕셔너리(265)가 기대했던 공개 키를 구비하여 형성된 것임을 입증한다. 임의의 호출자를 위해서 그것의 기능을 수행하는 비밀을 구비하지 않은 렌더링 애플리케이션은 트러스티드 딕셔너리(265)의 확신이 필요하지 않다.
비밀 인수들 및 반환 값은 트러스티드 딕셔너리(265)를 통해서 위장 공격을 방지하기 위해 통과된다. 트러스티드 딕셔너리(265)는 임의의 나열이 가능한 자바 오브젝트를 포함한다. "초기" 메소드는 트러스티드 딕셔너리(265)를 통해서 서비스 호출자에 대한 오브젝트로 반환할 수도 있다. 그러면, 정규 인수 및 반환 값은 초기 오브젝트에서 메소드와 함께 사용될 수도 있다. 이러한 초기 오브젝트는 이송된 클래스를 제시하는 것이 될 수도 있다. 만일 애플리케이션 설계자가 이러한 최적화를 이용하고 있다면, 단지 인터페이스 및 추상화(absract) 클래스만이 이송 패키지 내에 있을 수 있다.
단계 320에서, 애플리케이션 설계자는 부가적으로 트러스티드 딕셔너리 툴을 제작한다. 애플리케이션 설계자는 자바 애플리케이션(215)이 제작된 환경과 같은 곳처럼 공지된 트러스티드 환경에서 애플리케이션에 의해 사용된 임의의 비밀 데이터를 트러스티드 딕셔너리(265)로 제공한다.
설치 동안 사용자의 머신 상에서 트러스트디딕셔너리(265)를 종단-사용자에게 제시하는 것은, 필요한 트러스티드 환경을 보증하지 못한다. 애플리케이션 설계자는 트러스티드 딕셔너리(265)를 제시하기 위한 도구를 제작하고, 그 툴을 필요한 비밀에 제공하며, 그리고 그 도구를 표준 오브젝트출력스트림(ObjectOutputStream) 메소드를 이용하는 파일에 나열한다.
나열된 트러스티드 딕셔너리(265)는 예컨대, 자바 애플리케이션(215)의 자바 아카이브 파일의 일부로서 전달될 수 있다. 나열된 트러스티드 딕셔너리(265)는 트러스티드 JVM(205)에 의해서 독출만 가능하거나 기록만 가능할 것이다.
애플리케이션 설계자는 단계 325에서 자바 애플리케이션(215)을 위해 부가적으로 등록 절차를 설계한다. 만일, 자바 애플리케이션(215)의 주어진 예가 단일 플랫폼에 묶여 유지된다면, BundleActivatorclass's start() 메소드의 호출은 프라이빗 트러스티드 딕셔너리(265)를 독출하고, 프라이빗 트러스티드 딕셔너리(265) 상에서 setLocal()을 처리하고, 그리고 프라이빗 트러스티드 딕셔너리(265)를 파일 시스템으로 다시 기록한다.
추가된 보호를 위해, 애플리케이션 설계자는 외부의 등록 서비스와 연결하여 단계 325와 조합할 수도 있다. 애플리케이션을 가지고 전달된 프라이빗 트러스티드 딕셔너리(265)는 초기 연결을 위한 ID와 비밀을 가질 수도 있다. 연속된 비밀은 트러스티드 딕셔너리가 지역화된 이후에 등록의 일부로서 전달될 수 있다.
단계 330에서 애플리케이션 설계자는 부수적으로 안전 카운트를 설계한다. 자바 애플리케이션(215)은 동작하는 동안 안전 카운트가 필요할 수도 있다. 하드 디스크 상에서 파일을 저장하고 재생할 때 사용자에 의해 쉽게 리셋 되지 않을 수 있는 안전 카운트가 트러스티드 딕셔너리(265)에 저장된다. 번들액티베이터(BundleActivator) 클래스의 start() 메소드의 호출은 프라이빗 트러스티드 딕셔너리(265)를 독출하고 preventNormalRestore()를 프라이빗 트러스티드 딕셔너리(265) 상에서 처리한다. 그러면, 번들액티베이터 클래스는 오브젝트출력스트림(ObjectOutputStream)의 writeObject() 메소드를 이용하여 프라이빗 트러스티드 딕셔너리(265)를 파일 시스템에 다시 기록한다. 트러스티드 딕셔너리(265)는 이제 되돌릴 수 없는 상태이고, 종단-사용자는 종래의 버전으로 그것의 파일을 간단히 대체함으로써 이전 상태로 쉽게 되돌릴 수 없는 것을 의미한다.
안전 카운트가 트러스티드 딕셔너리(265)에서 매시간 증가되고, 그 안전 카운트는 다시 파일 시스템에 다시 기록된다. 그러면, 자바 애플리케이션(215)은 트러스티드 딕셔너리(265) 상에서 commit()를 처리하고, 불행한 시스템 충돌로 인한 트러스티드 딕셔너리(265)의 의도하지 않은 변조를 방지할 수 있다. commit() 없이, 사용자가 이전의 commit() 포인트에 대한 트러스티드 딕셔너리(265)를 다시 재생할 수도 있다. 임의의 트러스티드 딕셔너리 상에서 임의의 커밋은, 그들을 모두 커밋한다. 따라서, 모든 트러스티드 딕셔너리들은 다수의 트러스티드 딕셔너리를 연속해서 갱신하는 동안 단일 호출로서 커밋될 수 있다. 그러나, 트러스티드 JVM(205)은, 만일 그것이 변조되지 않는 것으로 표시되었다 하더라도, 트러스티드 딕셔너리(265)를 재생할 수 있다.
애플리케이션 설계자는 단계 335에서 자바 애플리케이션을 디버깅한다. 트러스티드 딕셔너리(265)의 디버깅 버전은 임의의 JVM에서 구동할 수 있다. trustedDictioanry.keyVerify가 "진실" 또는 "거짓"이 되는 시스템 특성을 기반으로, 디버깅 클래스는 자바 아카이브 파일을 적절하게 서명되도록 강요할 수도, 강요하지 않을 수도 있다. 트러스티드 딕셔너리(265)의 디버깅 버전은 트러스티드 딕셔너리(265)의 "나열 가능한" 행동을 강화한다: 즉, 트러스티드 딕셔너리(265)의 모든 오브젝트는 나열되고, 그리고 "get"메소드는 원래의 오브젝트 자체를 반환하기보다 원래의 오브젝트의 복제를 반환한다.
트러스티드 딕셔너리(265)의 디버깅 버전은 트러스티드 JVM(205)에서 독출할 수 없다. 트러스티드 JVM(205)은 어떠한 종류의 디버깅도 지원하지 않는다.
애플리케이션 설계자는 단계 340에서 자바 애플리케이션(215)의 제작 과정을 종료한다. 부수적으로, 만일 설계자가 하나 또는 그 이상의 클래스를 암호화하고 있다면, 미디어 키 블록이 얻어질 수도 있다. 이 미디어 키 블록은 자바 아카이브 파일의 공개 키로 변화하게 될 것이다.
자바 아카이브 서명자(jarsigner)는 자바 아카이브 파일을 서명하는 데 이용된다. 서명된 이후에는 어떠한 클래스도 자바 아카이브 파일에 부가되지 않는다. 그러나, 데이터나 다른 자원들은 그것이 서명된 이후에도 자바 아카이브 파일에 부가될 수도 있다. 트러스티드 딕셔너리(265)는 자체-인증을 한다; 결과적으로 자바 아카이브 파일에서 트러스티드 딕셔너리(265)의 서명은 일반적으로 필요치 않다.
트러스티드 JVM(10)에서 DVD 플레이어 애플리케이션 및 DVD 디스크 사이의 상호작용은 도 4(도4a, 도4b)의 처리 순서도의 방법(400)에 의해 도시된다. 사용자는 DVD 드라이브를 구비하고, 그리고 그 DVD 드라이브를 오픈 소스 DVD 플레이어 소프트웨어로 동작하기를 원한다. DVD 드라이브는 DVD 디스크를 동작할 수 있는 메커니즘이다. 사용자는 트러스티드 JVM(205)를 단계 405에서 다운로드하고 그것을 그의 DVD 장치상에 설치한다. DVD 장치는 DVD 드라이브 및 트러스티드 JVM(205) 및 그 DVD 드라이브를 구동할 수 있는 충분한 컴퓨팅 능력을 포함한다.
단계 410에서, 사용자는 DVD 플레이어 소프트웨어를 다운로드 받고 설치한다. DVD 플레이어 소프트웨어는 하나 또는 그 이상의 트러스티드번들(240)에서 오픈 소스 코드를 포함하고, 하나 또는 그 이상의 트러스티드 딕셔너리(265)에서 키 및 ID와 같은 비밀을 포함한다. 트러스티드 JVM(205)은 트러스티드번들(240)이 그것이 생성된 이후로 변조되지 않았음을 확실히 하기 위해서 DVD 플레이어 소프트웨어의 트러스티드번들(240)의 디지털 서명을 체크한다(단계 415). 만일 디지털 서명이 손상되었다면(결정 단계 420), 트러스티드 JVM(205)은 단계 425에서 트러스티드 딕셔너리(265)에 대한 액세스를 허가하지 않는다.
DVD 플레이어 소프트웨어는 단계 430에서 DVD 드라이브 상의 DVD 디스크에 액세스한다. DVD 디스크는 디스크 재생을 허가하는 확실한 장치 키를 요구한다: 이러한 키는 트러스티드 딕셔너리(265)에 저장된다. 트러스티드 딕셔너리(265)에 대한 액세스는 올바른 키에 의해서 서명된 손상되지 않은 서명을 요구한다. 트러스티드 JVM(205)은 DVD 플레이어 소프트웨어가 단계 435에서 트러스티드 딕셔너리(2665)에 액세스하기에 적절한 키를 구비하는지를 확인한다. 만일 DVD 플레이어 소프트웨어가 액세스를 위한 적절한 키를 구비하지 않았다면(결정 단계 440), 트러스티드 JVM(205)은 트러스티드 딕셔너리(265)에 액세스하는 것을 허가하지 않는다(단계 425).
만일, DVD 플레이어가 결정 단계 440에서 액세스하기에 적절한 키를 구비한다면, DVD 플레이어 소프트웨어는 손상되지 않고 인증된 것으로 확인된다. DVD 플레이어 소프트웨어는 이제 트러스티드 딕셔너리(265)에 액세스한다. 트러스티드 JVM(205)은 단계 445에서 트러스티드 딕셔너리(265)를 해독한다. DVD 플레이어 소프트웨어는 단계 450에서 예컨대, 장치 키와 같은 하나 또는 그 이상의 키를 트러스티드 딕셔너리(265)로부터 얻고 단계 455에서 DVD 드라이버에 필요한 것만큼 키를 제공한다. 그러면, DVD 드라이버는 단계 460에서 DVD 디스크를 작동한다. DVD 플레이어 소프트웨어, DVD 디스크, 및 DVD 장치는 모두 서로 다른 제조업체에 의해 제작될 수도 있다. 그러나, 그들은 모두 트러스티드 JVM(10)에서 콘텐츠 보호를 보장하기 위해서 함께 일한다.
허가받지 않은 방법으로 자바 애플리케이션(215)을 사용하려는 노력에서, 자바 애플리케이션(215)은 트러스티드 환경을 제공하지 못하는 종래의 JVM으로 로드될 수도 있다. 정규의 동작에서, 자바 애플리케이션(215)은 트러스티드 딕셔너리(265)에 액세스하려 하며, DVD 디스크를 재생하는 것과 같은 작업을 수행하기 위한 키를 요청한다. 그러나, 종래의 JVM은 트러스티드 딕셔너리(265)를 해독할 수 없다. 결과적으로 자바 애플리케이션(215)은 계속된 동작에 필요한 키를 얻을 수 없다. 이 자바 애플리케이션(215)이 종래의 JVM에서 동작하는 오프 소스 소프트웨어일지라도, 자바 애플리케이션(215)의 설계자에 의해 허가되지 않은 동작 및 정보는 올바른 키 없이는 발생하지 않는다.
지금까지 기술한 발명의 특정 실시예가 단지 본 발명의 원리의 특정 응용을 도시한다는 것은 쉽게 이해될 수 있다. 본 명세서에서 기술된 템퍼-레지스턴트 트러스티드 JVM 및 그것을 이용한 방법은 본 발명의 범위를 벗어나지 않고서 수없이 변형될 수도 있다.

Claims (21)

  1. 트러스티드 환경(a trusted environment)에서 탬퍼-레지스턴트 애플리케이션(a tamper-resistent application)을 구동하는 방법에 있어서―상기 애플리케이션은 프로그램 코드의 적어도 하나의 트러스티드 번들을 포함함―,
    비밀 보호를 위한 트러스티드 딕셔너리(a trusted dictionary)를 포함하는 트러스티드 가상 머신 환경(a trusted virtual machine environment)을 규정하는 단계―관련된 안전 카운트를 갖는 상기 트러스티드 딕셔너리는 데이터 값들의 저장 및 검색을 가능하게 하는 임의의 클래스를 사용하는 표준 기반 클래스 딕셔너리의 서브 클래스를 포함하며, 또한, 상기 트러스티드 딕셔너리는 키를 포함한 비밀(secrets)로 암호화된 키워드 및 값과, 공개 키의 리스트를 포함하며, 상기 안전 카운트가 상기 애플리케이션의 동작 동안 증분될 때마다, 상기 트러스티드 딕셔너리는 역전불가능한 상태로 놓여져, 상기 트러스티드 딕셔너리와 관련된 파일을 그 파일의 구 버전으로 대체하여 이전의 상태로 되는 것이 불가능함―와,
    상기 애플리케이션의 무결성(integrity)을 확인하는 단계를 포함하며,
    만일 상기 애플리케이션이 조작되었다면(tampered), 상기 트러스티드 가상 머신 환경은 상기 애플리케이션이 상기 트러스티드 딕셔너리 내의 비밀에 액세스하는 것을 방지하고 또한 상기 트러스티드 딕셔너리가 이전의 상태로 변경되는 것을 방지하여, 상기 애플리케이션의 정규 동작을 디스에이블시키는
    탬퍼-레지스턴트 애플리케이션 구동 방법.
  2. 제 1 항에 있어서,
    만일 상기 애플리케이션의 무결성이 확인된다면, 상기 트러스티드 가상 머신 환경은 상기 애플리케이션이 상기 트러스티드 딕셔너리의 비밀로 액세스하도록 허가하여, 상기 애플리케이션의 정규의 동작을 인에이블시키는
    탬퍼-레지스턴트 애플리케이션 구동 방법.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 트러스티드 가상 머신 환경을 규정하는 단계는, 보안 칩을 사용하여 상기 트러스티드 가상 머신 환경을 규정하는 단계를 포함하는
    탬퍼-레지스턴트 애플리케이션 구동 방법.
  7. 삭제
  8. 제 1 항에 있어서,
    상기 트러스티드 딕셔너리를 암호화하는 단계를 더 포함하는
    탬퍼-레지스턴트 애플리케이션 구동 방법.
  9. 제 1 항에 있어서,
    상기 트러스티드 가상 머신 환경을 규정하는 단계는, 상기 애플리케이션의 프로그래밍 코드를 보호하기 위한 적어도 두 개의 트러스티드 번들을 규정하는 단계를 포함하고, 상기 트러스티드 딕셔너리는 상기 적어도 두 개의 트러스티드 번들 중의 일부 사이에서 공유되어, 상기 적어도 두 개의 트러스티드 번들 간의 통신 무결성을 유지하는
    탬퍼-레지스턴트 애플리케이션 구동 방법.
  10. 제 1항에 있어서,
    상기 애플리케이션은 복제 방지 미디어를 재생하는 플레이어를 포함하는
    탬퍼-레지스턴트 애플리케이션 구동 방법.
  11. 삭제
  12. 트러스티드 환경(a trusted environment)에서 탬퍼-레지스턴트 애플리케이션(a tamper-resistent application)을 구동하는 시스템에 있어서―상기 애플리케이션은 프로그램 코드의 적어도 하나의 트러스티드 번들을 포함함―,
    비밀 보호를 위한 트러스티드 딕셔너리(a trusted dictionary)를 포함하는 트러스티드 가상 머신 환경(a trusted virtual machine environment)의 규정을 저장하는 저장 매체―관련된 안전 카운트를 갖는 상기 트러스티드 딕셔너리는 데이터 값들의 저장 및 검색을 가능하게 하는 임의의 클래스를 사용하는 표준 기반 클래스 딕셔너리의 서브 클래스를 포함하며, 또한, 상기 트러스티드 딕셔너리는 키를 포함한 비밀(secrets)로 암호화된 키워드 및 값과, 공개 키의 리스트를 포함하며, 상기 안전 카운트가 상기 애플리케이션의 동작 동안 증분될 때마다, 상기 트러스티드 딕셔너리는 역전불가능한 상태로 놓여져, 상기 트러스티드 딕셔너리와 관련된 파일을 그 파일의 구 버전으로 대체하여 이전의 상태로 되는 것이 불가능함―와,
    상기 저장 매체에 동작가능하게 연결되어, 상기 애플리케이션의 무결성(integrity)의 확인을 수행하기 위한 서버를 포함하며,
    만일 상기 애플리케이션이 조작되었다면(tampered), 상기 트러스티드 가상 머신 환경은 상기 애플리케이션이 상기 트러스티드 딕셔너리 내의 비밀에 액세스하는 것을 방지하고 또한 상기 트러스티드 딕셔너리가 이전의 상태로 변경되는 것을 방지하여, 상기 애플리케이션의 정규 동작을 디스에이블시키는
    탬퍼-레지스턴트 애플리케이션 구동 시스템.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 제 1 항, 제 2 항, 제 6 항, 제 8 항 내지 제 10항 중 어느 한 항에 기재된 방법의 단계들을 수행하기 위한 컴퓨터 프로그램 명령 코드를 구비하는 컴퓨터 판독 가능 저장 매체.
KR1020067011019A 2003-11-26 2004-11-09 탬퍼-레지스턴트 애플리케이션 구동 방법 및 시스템과 컴퓨터 판독 가능 저장 매체 KR100946042B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/723,725 2003-11-26
US10/723,725 US7516331B2 (en) 2003-11-26 2003-11-26 Tamper-resistant trusted java virtual machine and method of using the same

Publications (2)

Publication Number Publication Date
KR20070001893A KR20070001893A (ko) 2007-01-04
KR100946042B1 true KR100946042B1 (ko) 2010-03-09

Family

ID=34592355

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067011019A KR100946042B1 (ko) 2003-11-26 2004-11-09 탬퍼-레지스턴트 애플리케이션 구동 방법 및 시스템과 컴퓨터 판독 가능 저장 매체

Country Status (8)

Country Link
US (2) US7516331B2 (ko)
EP (1) EP1687688A2 (ko)
JP (1) JP4702957B2 (ko)
KR (1) KR100946042B1 (ko)
CN (1) CN101305333A (ko)
CA (1) CA2543572C (ko)
IL (1) IL175595A0 (ko)
WO (1) WO2005052841A2 (ko)

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100965437B1 (ko) 2003-06-05 2010-06-24 인터트러스트 테크놀로지즈 코포레이션 P2p 서비스 편성을 위한 상호운용 시스템 및 방법
US8271803B2 (en) * 2003-10-08 2012-09-18 Microsoft Corporation Anti-debugging protection of binaries with proxy code execution
US7979911B2 (en) 2003-10-08 2011-07-12 Microsoft Corporation First computer process and second computer process proxy-executing code from third computer process on behalf of first process
US7788496B2 (en) 2003-10-08 2010-08-31 Microsoft Corporation First computer process and second computer process proxy-executing code on behalf thereof
US8103592B2 (en) * 2003-10-08 2012-01-24 Microsoft Corporation First computer process and second computer process proxy-executing code on behalf of first process
US7516331B2 (en) 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same
FI120638B (fi) * 2003-12-17 2009-12-31 Nokia Corp Java-sovellusten käyttämän datan suojausjärjestelmä
JP2007535770A (ja) * 2004-04-28 2007-12-06 オープンロジック インコーポレイテッド 非協調ソフトウェアプロジェクトをスタックさせるためのツール
US20060048223A1 (en) * 2004-08-31 2006-03-02 Lee Michael C Method and system for providing tamper-resistant software
TWI277870B (en) * 2004-11-22 2007-04-01 Toshiba Corp Copyright management method, information recording/reproducing method and device, and information recording medium and method of manufacturing the medium
JP4688591B2 (ja) * 2005-07-08 2011-05-25 日本電信電話株式会社 オブジェクト制御装置とその制御方法
US7644403B2 (en) * 2005-09-12 2010-01-05 Oracle International Corporation Method and system for automated root-cause analysis for class loading failures in java
US7954096B2 (en) * 2005-09-12 2011-05-31 Oracle International Corporation Shared loader system and method
US7784043B2 (en) * 2005-09-12 2010-08-24 Oracle International Corporation Method and system for automated code-source indexing in Java Virtual Machine environment
US7814472B2 (en) * 2005-09-12 2010-10-12 Oracle International Corporation System and method for shared code-sourcing in a Java Virtual Machine environment
US8020156B2 (en) * 2005-09-12 2011-09-13 Oracle International Corporation Bulk loading system and method
US20070204078A1 (en) * 2006-02-09 2007-08-30 Intertrust Technologies Corporation Digital rights management engine systems and methods
US9626667B2 (en) * 2005-10-18 2017-04-18 Intertrust Technologies Corporation Digital rights management engine systems and methods
CN102882677B (zh) * 2005-10-18 2015-11-25 英特托拉斯技术公司 数字权利管理的方法
GB0603781D0 (en) * 2006-02-24 2006-04-05 Nokia Corp Application verification
US8886929B2 (en) * 2006-03-29 2014-11-11 Intel Corporation Generating a chain of trust for a virtual endpoint
WO2008018055A2 (en) * 2006-08-09 2008-02-14 Neocleus Ltd Extranet security
US8584109B2 (en) * 2006-10-27 2013-11-12 Microsoft Corporation Virtualization for diversified tamper resistance
US7613915B2 (en) * 2006-11-09 2009-11-03 BroadOn Communications Corp Method for programming on-chip non-volatile memory in a secure processor, and a device so programmed
JP2008177683A (ja) * 2007-01-16 2008-07-31 Kyocera Mita Corp データ提供システム、データ受領システム、データ提供方法、データ提供プログラム及びデータ受領プログラム
TWI328747B (en) * 2007-03-16 2010-08-11 Ind Tech Res Inst System and method for sharing e-service resource of digital home
WO2008114257A2 (en) * 2007-03-21 2008-09-25 Neocleus Ltd. Protection against impersonation attacks
WO2008114256A2 (en) * 2007-03-22 2008-09-25 Neocleus Ltd. Trusted local single sign-on
US8108856B2 (en) 2007-03-30 2012-01-31 Intel Corporation Method and apparatus for adaptive integrity measurement of computer software
US9703576B2 (en) * 2007-04-05 2017-07-11 International Business Machines Corporation Aspect scoping in a modularity runtime
US7984483B2 (en) 2007-04-25 2011-07-19 Acxess, Inc. System and method for working in a virtualized computing environment through secure access
US8332635B2 (en) * 2007-05-29 2012-12-11 International Business Machines Corporation Updateable secure kernel extensions
US8422674B2 (en) * 2007-05-29 2013-04-16 International Business Machines Corporation Application-specific secret generation
US8433927B2 (en) * 2007-05-29 2013-04-30 International Business Machines Corporation Cryptographically-enabled privileged mode execution
US7886162B2 (en) * 2007-05-29 2011-02-08 International Business Machines Corporation Cryptographic secure program overlays
DE102007045743A1 (de) * 2007-09-25 2009-04-02 Siemens Ag Verfahren und System zum Schutz gegen einen Zugriff auf einen Maschinencode eines Gerätes
US8332636B2 (en) * 2007-10-02 2012-12-11 International Business Machines Corporation Secure policy differentiation by secure kernel design
US20110035601A1 (en) * 2007-12-21 2011-02-10 University Of Virginia Patent Foundation System, method and computer program product for protecting software via continuous anti-tampering and obfuscation transforms
KR100939210B1 (ko) * 2007-12-27 2010-01-28 주식회사 안철수연구소 가상 환경에서의 디버깅 방지 장치 및 방법
US8474037B2 (en) 2008-01-07 2013-06-25 Intel Corporation Stateless attestation system
US9262594B2 (en) 2008-01-18 2016-02-16 Microsoft Technology Licensing, Llc Tamper evidence per device protected identity
US20090281949A1 (en) * 2008-05-12 2009-11-12 Appsware Wireless, Llc Method and system for securing a payment transaction
EP2286333A4 (en) * 2008-06-05 2012-08-08 Neocleus Israel Ltd SAFE MULTIPURPOSE COMPUTER CLIENT
CN101452397B (zh) * 2008-11-27 2012-08-22 上海交通大学 虚拟化环境中的强制访问控制方法及装置
US8375377B2 (en) * 2009-03-06 2013-02-12 International Business Machines Corporation Controlling java virtual machine component behavior on a per-classloader basis
US20100250442A1 (en) * 2009-03-30 2010-09-30 Appsware Wireless, Llc Method and system for securing a payment transaction with a trusted code base
AU2010232817A1 (en) * 2009-03-30 2011-11-17 Apriva, Llc Method and system for securing a payment transaction with trusted code base
US20100250441A1 (en) * 2009-03-30 2010-09-30 Appsware Wireless, Llc Method and system for securing a payment transaction with trusted code base on a removable system module
CN101567893A (zh) * 2009-05-26 2009-10-28 中兴通讯股份有限公司 一种实现在web应用中文件上传的方法及系统
US9954875B2 (en) 2009-06-26 2018-04-24 International Business Machines Corporation Protecting from unintentional malware download
US9298894B2 (en) * 2009-06-26 2016-03-29 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US8578175B2 (en) 2011-02-23 2013-11-05 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US8819446B2 (en) * 2009-06-26 2014-08-26 International Business Machines Corporation Support for secure objects in a computer system
US8954752B2 (en) 2011-02-23 2015-02-10 International Business Machines Corporation Building and distributing secure object software
US9846789B2 (en) 2011-09-06 2017-12-19 International Business Machines Corporation Protecting application programs from malicious software or malware
US8812959B2 (en) * 2009-06-30 2014-08-19 International Business Machines Corporation Method and system for delivering digital content
CN102598017B (zh) * 2009-11-13 2016-03-09 爱迪德技术有限公司 提高Java字节码的防窜改能力的系统和方法
DE102009054114A1 (de) * 2009-11-20 2011-05-26 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum Zugreifen auf Steuerungsdaten gemäß einer bereitgestellten Rechteinformation
US8495154B2 (en) * 2010-01-25 2013-07-23 International Business Machines Corporation Content usage tracking in superdistribution
CN102200925B (zh) * 2010-03-22 2015-04-29 联想(北京)有限公司 应用虚拟域数据访问的方法、虚拟机管理器及计算机
CN102812431A (zh) 2010-03-22 2012-12-05 Lrdc系统有限公司 用于识别与保护一组源数据的完整性的方法
CN101814124A (zh) * 2010-04-20 2010-08-25 浪潮电子信息产业股份有限公司 一种基于Java的软件安全性加强的方法
US8498982B1 (en) 2010-07-07 2013-07-30 Openlogic, Inc. Noise reduction for content matching analysis results for protectable content
JP5318830B2 (ja) * 2010-08-25 2013-10-16 株式会社日立ソリューションズ WebAPIサーバプログラム、WebAPI公開方法
US9087196B2 (en) * 2010-12-24 2015-07-21 Intel Corporation Secure application attestation using dynamic measurement kernels
US9864853B2 (en) 2011-02-23 2018-01-09 International Business Machines Corporation Enhanced security mechanism for authentication of users of a system
US8631480B2 (en) * 2011-03-28 2014-01-14 Canon Kabushiki Kaisha Systems and methods for implementing security services
US8732811B2 (en) * 2011-03-28 2014-05-20 Canon Kabushiki Kaisha Systems and methods for implementing security services
US9460281B2 (en) * 2011-03-31 2016-10-04 Irdeto B.V. Method of securing non-native code
WO2012142178A2 (en) 2011-04-11 2012-10-18 Intertrust Technologies Corporation Information security systems and methods
US8850593B2 (en) 2011-05-12 2014-09-30 Hewlett-Packard Development Company, L.P. Data management using a virtual machine-data image
CN103988467B (zh) * 2011-11-16 2019-04-23 V-Key公司 确保软件加密技术安全的加密系统和方法
CN102411690B (zh) * 2011-12-31 2014-07-23 中国信息安全测评中心 一种Android平台下应用软件的安全漏洞挖掘方法和装置
US8638935B2 (en) 2012-01-12 2014-01-28 Apple Inc. System and method for key space division and sub-key derivation for mixed media digital rights management content
US9992024B2 (en) * 2012-01-25 2018-06-05 Fujitsu Limited Establishing a chain of trust within a virtual machine
CN102999357B (zh) * 2012-11-16 2015-11-25 北京奇虎科技有限公司 一种信任机的配置方法和系统
CN102984229B (zh) * 2012-11-16 2015-08-19 北京奇虎科技有限公司 用于配置信任机的方法和系统
US9292673B2 (en) * 2013-03-15 2016-03-22 International Business Machines Corporation Virtual key management and isolation of data deployments in multi-tenant environments
KR101471589B1 (ko) * 2013-08-22 2014-12-10 (주)잉카엔트웍스 공통중간언어 기반 프로그램을 위한 보안 제공 방법
US9740854B2 (en) 2013-10-25 2017-08-22 Red Hat, Inc. System and method for code protection
WO2015149214A1 (en) * 2014-03-31 2015-10-08 Irdeto B.V. Method, apparatus, and computer-readable medium for obfuscating execution of application on virtual machine
CN105022936A (zh) * 2014-04-30 2015-11-04 北京畅游天下网络技术有限公司 一种类class文件加密解密方法和装置
US9531677B1 (en) * 2014-05-07 2016-12-27 Skyport Systems, Inc. Method and system for managing network access
CN105446709B (zh) * 2014-07-29 2019-06-21 阿里巴巴集团控股有限公司 一种Java应用处理方法及装置
US9628279B2 (en) * 2014-09-30 2017-04-18 Microsoft Technology Licensing, Llc Protecting application secrets from operating system attacks
WO2016100506A1 (en) * 2014-12-16 2016-06-23 Kyndi, Inc. Method and apparatus for randomizing computer instruction sets, memory registers and pointers
WO2016112338A1 (en) * 2015-01-08 2016-07-14 Intertrust Technologies Corporation Cryptographic systems and methods
US10931455B2 (en) * 2015-09-28 2021-02-23 EyeVerify Inc. Secure image pipeline
US10601593B2 (en) 2016-09-23 2020-03-24 Microsoft Technology Licensing, Llc Type-based database confidentiality using trusted computing
US10379894B1 (en) * 2016-09-27 2019-08-13 Amazon Technologies, Inc. Lineage-based trust for virtual machine images
CN108932429B (zh) * 2017-05-27 2023-02-03 腾讯科技(深圳)有限公司 应用程序的分析方法、终端及存储介质
EP3776318A4 (en) 2018-04-10 2021-03-03 Visa International Service Association INVIOLABLE DATA ENCODING FOR MOBILE DEVICES
CN109325343B (zh) * 2018-09-17 2021-08-10 北京深思数盾科技股份有限公司 Java程序执行方法及装置
SG11202103354PA (en) 2018-10-02 2021-04-29 Visa Int Service Ass Continuous space-bounded non-malleable codes from stronger proofs-of-space
US11194695B2 (en) * 2020-01-07 2021-12-07 Supercell Oy Method for blocking external debugger application from analysing code of software program
US11550883B2 (en) 2020-09-08 2023-01-10 Assured Information Security, Inc. Code protection
US11520895B2 (en) * 2020-12-07 2022-12-06 Samsung Electronics Co., Ltd. System and method for dynamic verification of trusted applications
US20230094125A1 (en) * 2021-09-24 2023-03-30 Nvidia Corporation Implementing trusted executing environments across multiple processor devices
CN114327776A (zh) * 2021-12-30 2022-04-12 支付宝(杭州)信息技术有限公司 用于智能合约的调试方法、调试设备和调试系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020184529A1 (en) * 2001-04-27 2002-12-05 Foster Michael S. Communicating data through a network
US20030135746A1 (en) * 2002-01-14 2003-07-17 International Business Machines Corporation Software verification system, method and computer program element

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0686916A1 (en) * 1994-06-07 1995-12-13 Digital Equipment Corporation Method and apparatus for testing software
CN1183841A (zh) * 1995-02-13 1998-06-03 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US5757915A (en) * 1995-08-25 1998-05-26 Intel Corporation Parameterized hash functions for access control
US6067575A (en) * 1995-12-08 2000-05-23 Sun Microsystems, Inc. System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs
US5692047A (en) * 1995-12-08 1997-11-25 Sun Microsystems, Inc. System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources
US5920861A (en) * 1997-02-25 1999-07-06 Intertrust Technologies Corp. Techniques for defining using and manipulating rights management data structures
US6092147A (en) * 1997-04-15 2000-07-18 Sun Microsystems, Inc. Virtual machine with securely distributed bytecode verification
JPH10301773A (ja) 1997-04-30 1998-11-13 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体
US7404175B2 (en) * 2000-10-10 2008-07-22 Bea Systems, Inc. Smart generator
US6961855B1 (en) * 1999-12-16 2005-11-01 International Business Machines Corporation Notification of modifications to a trusted computing base
US20010037450A1 (en) * 2000-03-02 2001-11-01 Metlitski Evgueny A. System and method for process protection
JP2002251326A (ja) * 2001-02-22 2002-09-06 Hitachi Ltd 耐タンパ計算機システム
US20020184520A1 (en) * 2001-05-30 2002-12-05 Bush William R. Method and apparatus for a secure virtual machine
GB2376765B (en) * 2001-06-19 2004-12-29 Hewlett Packard Co Multiple trusted computing environments with verifiable environment identities
US6976167B2 (en) * 2001-06-26 2005-12-13 Intel Corporation Cryptography-based tamper-resistant software design mechanism
US7103529B2 (en) * 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation
US7526654B2 (en) * 2001-10-16 2009-04-28 Marc Charbonneau Method and system for detecting a secure state of a computer system
US7469346B2 (en) * 2003-06-27 2008-12-23 Disney Enterprises, Inc. Dual virtual machine architecture for media devices
US7516331B2 (en) 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020184529A1 (en) * 2001-04-27 2002-12-05 Foster Michael S. Communicating data through a network
US20030135746A1 (en) * 2002-01-14 2003-07-17 International Business Machines Corporation Software verification system, method and computer program element

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Microsoft Security Chip Open to Discussion", PCWorld, 2002. 07.08*
Java Security May 2001(Scott Oaks)*

Also Published As

Publication number Publication date
US7516331B2 (en) 2009-04-07
IL175595A0 (en) 2006-10-05
US7747877B2 (en) 2010-06-29
WO2005052841A3 (en) 2005-08-11
JP2007514994A (ja) 2007-06-07
US20090138731A1 (en) 2009-05-28
CA2543572A1 (en) 2005-06-09
WO2005052841A9 (en) 2006-07-20
WO2005052841A2 (en) 2005-06-09
CN101305333A (zh) 2008-11-12
US20050114683A1 (en) 2005-05-26
JP4702957B2 (ja) 2011-06-15
CA2543572C (en) 2012-01-17
KR20070001893A (ko) 2007-01-04
EP1687688A2 (en) 2006-08-09

Similar Documents

Publication Publication Date Title
KR100946042B1 (ko) 탬퍼-레지스턴트 애플리케이션 구동 방법 및 시스템과 컴퓨터 판독 가능 저장 매체
Checkoway et al. Iago attacks: Why the system call API is a bad untrusted RPC interface
US7181603B2 (en) Method of secure function loading
US7546587B2 (en) Run-time call stack verification
AU2005201995B2 (en) System and method for protected operating system boot using state validation
US7434263B2 (en) System and method for secure storage data using a key
US7469346B2 (en) Dual virtual machine architecture for media devices
US7228426B2 (en) Integrity ordainment and ascertainment of computer-executable instructions with consideration for execution context
US20060048223A1 (en) Method and system for providing tamper-resistant software
US20050060568A1 (en) Controlling access to data
JP5636371B2 (ja) 汎用コンピューティングデバイスにおけるコード実行制御および再帰的セキュリティプロトコルでのコード実行制御のための方法およびシステム
US20050144448A1 (en) Transferring application secrets in a trusted operating system environment
US20020112161A1 (en) Method and system for software authentication in a computer system
KR20030082485A (ko) 대칭 키 암호화에 기초한 데이터의 저장 및 검색
KR20030082484A (ko) 공개 키 암호화에 기초한 데이터의 저장 및 검색
US20100325446A1 (en) Securing Executable Code Integrity Using Auto-Derivative Key
US20020152396A1 (en) Method for secure restoration of a database stroring non-secure content
Suciu et al. Horizontal privilege escalation in trusted applications
US20060015860A1 (en) System and method for storing attributes in a file for processing an operating system
US7568102B2 (en) System and method for authorizing the use of stored information in an operating system
KR101265887B1 (ko) 보호 컴퓨팅 환경을 제공하는 방법 및 장치 내에 보호 환경을 설정하는 방법
WO2006011888A1 (en) Dual virtual machine architecture for media devices

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
LAPS Lapse due to unpaid annual fee