KR100433319B1 - 신뢰된소오스로부터의검사불가능한프로그램을사용하는장치로검사가능한프로그램을실행하기위한시스템및방법 - Google Patents

신뢰된소오스로부터의검사불가능한프로그램을사용하는장치로검사가능한프로그램을실행하기위한시스템및방법 Download PDF

Info

Publication number
KR100433319B1
KR100433319B1 KR1019960062293A KR19960062293A KR100433319B1 KR 100433319 B1 KR100433319 B1 KR 100433319B1 KR 1019960062293 A KR1019960062293 A KR 1019960062293A KR 19960062293 A KR19960062293 A KR 19960062293A KR 100433319 B1 KR100433319 B1 KR 100433319B1
Authority
KR
South Korea
Prior art keywords
program
message
architecture
digital signature
signature
Prior art date
Application number
KR1019960062293A
Other languages
English (en)
Other versions
KR970049730A (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 KR970049730A publication Critical patent/KR970049730A/ko
Application granted granted Critical
Publication of KR100433319B1 publication Critical patent/KR100433319B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several 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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress

Landscapes

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

Abstract

컴퓨터 시스템은 검사 가능한 아키텍처 증간 프로그램을 실행하는 프로그램 실행자와, (A) 검사 불가능한 프로그램이 이런 프로그램의 신뢰된 저장소에 존재하지 않고나 (B) 검사 불가능한 프로그램이 신뢰된 소오스에 의해 만들어진 프로그램을 검사하는 검사 불가능한 프로그램상의 디지털 서명에 의해 간접적으로 검사할 수 없는경우 검사 불가능한 프로그램의 로딩과 실행을 막는 클래스 로더를 포함한다. 바람직한 실시예에서, 검사 가능한 아키텍처 중간 프로그램은 보전성이 자바(Java) 바이트 코드 프로그램 검사장치를 사용하여 검사되는 자바 바이트 코드 프로그램이다. 검사 가능한 프로그램은 일반적으로 컴파일러의 지원으로 발생되는 아키텍처 특정 컴파일된 프로그램이다. 각각의 아키텍처 특정 컴파일 프로그램은 일반적으로 컴파일 파티(party)에 의한 서명과 컴파일러에 의한 서명을 포함한다. 각각의 디지털 서명은 서명 파티 식별자 및 암호화된 메시지를 포함한다. 이 암호화된 메시지는 소정의 과정에 의해 발생된 메시지를 포함하고, 서명 파티와 연관된 전용 암호화 키를 사용하여 암호화된다. 클래스 로더에 의해 사용되는 디지털 서명 검사장치는 (A) 서명 파티와 연관된 공개 키를 얻고, (B) 해독된 메시지를 발생시키기 위해 상기 공개 키로 디지털 서명의 암호화된 메시지를 해독하고, (C) 디지털 서명과 연관된 아키텍처 특정 프로그램으로 소정의 과정을 실행하여 테스트 메시지를 발생하고,(D) 해독된 메시지와 테스트 메시지를 비교하며,(E) 해독된 메시지 요약과 테스트 메시지 요약이 매칭되지 않는 경우에 실폐 신호를 발생하기 위한, 각디지털 신호를 처리하기 위한 논리를 포함한다.

Description

신뢰된 소오스로부터의 검사 불가능한 프로그램을 사용하는 장치로 검사 가능한 프로그램을 실행하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR EXECUTING VERIFIABLE PROGRAMS WITH FACILITY FOR USING NON-VERIFIABLE PROGRAMS FROM TRUSTED SOURCES}
본 발명은 일반적으로 분산 컴퓨터 시스템, 특히 보전성(integrity)이 검사 가능한 프로그램용 프로그램 해석기가 신뢰된 소오스로부터의 검사 불가능한 프로그램을 사용하고 다른 검사 불가능한 프로그램의 실행을 거절하기 위한 장치를 포함하는 시스템 및 방법에 관한 것이다.
용어 "아키텍처"는 한 계열의 컴퓨터 모델의 동작특성을 의미하는 것으로 정의된다. 개별적인 아키텍처의 예는 메킨토시 컴퓨터, DOS 또는 윈도우 운영체제를 사용하는 IBM PC 호환 컴퓨터, 솔라리스(Solaris) 운영체제를 사용하는 선 마이크로시스템스 컴퓨터 및 유닉스 운영체제를 사용하는 컴퓨터 시스템이다.
용어 "아키텍처 중간(architecture neutral)"은 다수의 다른 컴퓨터 아키텍처를 사용하는 다양한 컴퓨터 플랫폼상에서 실행되는 자바(Java)(선마이크로시스템스, 인코포레이션의 상표) 언어로 작성된 프로그램과 같은 임의의 프로그램의 능력을 언급하는 것으로 정의된다.
용어 "아키텍처 특정"은 임의의 프로그램이 단일 컴퓨터 아키텍처를 사용하는 컴퓨터 플랫폼에서만 실행되는 요구조건을 언급하기 위해 정의된다. 예를들어, 80486 어셈블러 언어로 작성된 목적 코드 프로그램은 IBM PC 호환 컴퓨터 아키텍처를 사용하는 컴퓨터(및 IBM PC 호환 컴퓨터 에뮬레이터를 포함하는 다른 컴퓨터에)상에서만 실행될 수 있다.
아키텍처 중간 프로그램(AN 프로그램)의 중요한 특징은 아키텍처 중간언어(AN 언어)로 작성된 프로그램과 무관한 아키텍처를 포함한다. 예를들어, 자바 바이트코드 프로그램은 자바 바이트코드 인터프리터를 가진 임의의 컴퓨터 플랫폼상에서 실행될 수있다. 자바 바이트코드 프로그램의 다른 중요한 특징은 그들의 보전성이 자바 바이트코드 검사장치에 의한 실행에 앞서 직접 검사될 수있다는 것이다. 자바 바이트코드 검사장치는 프로그램이 소정 보전성 기준에 따르는 지의 여부를 결정한다. 이같은 기준은 자바 바이트코드 프로그램이 실행 컴퓨터 오퍼랜드 스택을 오버플로우 및 언더플로우하지 않고 모든 프로그램 명령이 알려진 데이터 형태의 데이터만을 이용하도록 오퍼랜드 스택 및 데이터 형태의 사용제한을 포함한다. 결과적으로, 자바 바이트코드 프로그램은 목적 포인터를 만들 수 없으며 일반적으로 사용자의 사용이 명백히 허용되는 시스템 자원을 제외한 다른 시스템 자원을 액세스 할 수없다.
불행하게도, AN 언어로 실행가능한 분산 프로그램에 의해, AN 프로그램은 아키텍처 특정성질을 이용하는 경우보다 덜 효율적으로 실행된다. 예를들어, 자바 바이트코드 인터프리터에 의해 실행되는 자바 바이트코드 프로그램은 대응하는 아키텍처 특정언어(AS 언어)로 컴파일된 등가 아키텍처 특정 프로그램(AS 프로그램)보다 2.5 내지 5배 느리게 실행된다. 5배의 속도감소가 AN 프로그램 실행자(즉, 인터프리터)에 매우 적합하게 고려되는 반면에, 그것은 몇몇의 사용자가 AS 언어로 컴파일된 등가 프로그램을 사용하는 능력을 요구하는 효율을 충분히 감소시킨다.
AN 프로그램을 등가 AS 프로그램으로 검파일할 수 있는 컴파일러가 작성될 수있다. 그러나, 이 컴파일러는 최종 사용자에 매우 비싸다. 더욱이, 등가의 컴파일된 AS 프로그램의 보전성은 컴파일된 AS 프로그램 코드로부터 AN 프로그램 보전성 검사장치에 의해 직접 검사될 수없다. 따라서, 자바 바이트코드 프로그램의 경우에, 등가 AS 프로그램으로 컴파일된 AN 프로그램을 사용함으로서, AN 언어의 가장 중요한 특성중 하나가 손실될 수 있다.
그러나, 보전성 검사가능하지 않은 AS 프로그램에 의해 실행될수있으나 보전성 검사가능한 AN 프로그램에 의해 수행될 수 없는 몇몇의 적합 테스크가 존재한다. 이들 적합 테스크는 보전성이 검사가능한 AN 프로그램에 부가된 오퍼랜드 스택 및 데이터 형태의 사용제한을 다른 방식으로 위반하는 테스크를 포함한다. 더욱이, 이러한 AS 프로그램은 AN 프로그램보다 더 빠르게 실행될 수 있다. 결과적으로, 보전성이 검사가능한 AN 프로그램을 실행하도록 설계되고 보전성이 검사가능하지 않는 AS 프로그램을 실행하는 능력을 가진 컴퓨터 시스템을 가지는 것이 바람직한 다수의 이유가 존재한다.
비록 제 3파티(party)에 의해 AN 프로그램의 컴파일이 가능할지라도, 이러한 컴파일은 제 3파티가 인증되는 것을 필요로한다. 즉, AS 프로그램이 특정의 신뢰된 제 3파티에 의해 컴파일되었다는 것을 컴파일된 AS 프로그램의 정보로부터 검사하는 것이 가능해야 한다. 컴파일된 AS 프로그램이 특정 신뢰된 컴파일러에 의해 발생되는 것을 인증하는 것 또한 가능해야 한다. 소정 보전성 기준에 관한 컴파일된 AS 프로그램의 보전성이 직접 검사될 수없기 때문에, 컴파일된 AS 프로그램은 검사가능한 방법으로 그것이 컴파일된 대응 AN 프로그램과 그것이 컴파일된 AS 언어를 식별하는 정보를 포함해야 한다.
본 발명의 목적은 대응 AN 프로그램으로부터 컴파일된 AS 프로그램의 사용자가 AN 프로그램을 컴파일한 사용자의 식별, 대응 AN 프로그램의 식별 및 AS 프로그램이 컴파일된 AS 언어를 알 수 있게 하는 AN 프로그램 컴파일러 및 컴파일 방법을 제공하는 것이다.
본 발명의 다른 목적은 소오스, 컴파일 정보 및 보전성이 검사될 수 없는 AS 프로그램의 호출을 막으면서 모든 적합 테스크가 수행될 수있도록, 신뢰될 수 있거나 또는 검사 가능한 소스 및 컴파일 정보를 갖는 보전성 검사 불가능한 AS 프로그램을 보전성 검사 가능한 AN 프로그램이 실행할 수 있게 하는 AN 프로그램 실행자 및 실행 방법을 제공하는 것이다.
도 1은 본 발명의 바람직한 실시예를 통합하는 분산 컴퓨터 시스템의 블록도.
도 2는 본 발명의 바람직한 실시예에 따른 아키텍처 중간 프로그램의 구조를 나타내는 도면.
도 3은 본 발명의 바람직한 실시예에 따라 발생된 컴파일된 특정 아키텍처 프로그램의 구조를 나타낸 도면.
도 4는 본 발명의 바람직한 실시예에 따른 목적 및 연관된 목적 클래스를 나타낸 도면.
<도면의 주요부분에 대한 부호의 설명>
102: 클라이언트 컴퓨터 104: 서버 컴퓨터
110 : CPU 112 : 사용자 인터페이스
126 : AN 프로그램 보전성 검사장치 132 : 서명 검사장치
요약하면, 본 발명은 검사 가능한 아키텍처 중간 프로그램을 실행하는 프로그램 실행자와, (A) 검사 불가능한 프로그램이 프로그램의 신뢰된 저장소에 있지 않거나 (B) 검사 불가능한 프로그램이 신뢰된 소오스에 의해 만들어졌다는 것이 프로그램을 검사하는 검사 불가능한 프로그램상의 디지털 서명을 통해 간접적으로 검사될 수 없는 경우, 검사 불가능한 프로그램의 로딩과 실행을 막는 클래스 로더에 관한 것이다.
바람직한 실시예에 있어서, 각각의 검사 가능한 프로그램은 고유하게 그런 프로그램과 연관된 메시지 요약을 포함하는 디지털 서명을 가지는 목적 클래스로 구현된 아키텍처 중간 프로그램이다.
검사 불가능한 프로그램은 프로그램(방법이라 칭함)이 검사 가능한 프로그램이 아닌 것을 나타내는 키워드를 포함하는 목적 클래스로 구현된다. 바람직한 실시예에 있어서, 검사 불가능한 프로그램은 일반적으로 컴파일러의 지원으로 발생되는 아키텍처 특정 컴파일된 프로그램이다. 각각의 이런 목적 클래스는 다음과 같은 것, 즉
· 컴파일링된 아키텍처 특정 코드;
· 대응 아키텍처 중간프로그램이 있는 경우(때때로 존재하지 않음), 상기 대응 아키텍처 중간 프로그램의 메시지 요약에 대한 복사를 포함하는 상기 대응 아키텍처 중간 프로그램을 식별하는 정보;
· 상기 목적 클래스를 발생시키고(예를들면, 소오스 프로그램의 컴파일을 수행함으로써) 상기 컴파일 파티의 전용 암호화 키를 사용하여 서명되는 상기 신뢰된 "컴파일 파티"에 의한 디지털 서명; 및
· 상기 목적 클래스의 코드가 컴파일러에 의해 발생되는 경우, 상기 컴파일러의 전용 암호화 키에 의해 서명되는 컴파일러에 의한 디지털 서명을 포함한다.
때때로 명명(naming) 서비스라 불리는 일반적으로 이용가능한 공개 암호화 키의 신뢰된 저장소는 컴파일러 및 신뢰된 컴파일 파티의 공개 키를 보유한다. 이들 공개 암호화 키를 사용하여, 목적 클래스가 신뢰된 파티에 의해 만들어졌는지를 검사하고, 목적 클래스의 검사 불가능 프로그램 코드가 지시된 컴파일러에 의해 만들어졌는지를 검사하며, 대응하는 아키텍처 중간 프로그램의 식별을 검사하기 위해 검사 불가능한 프로그램들을 가지는 목적 클래스들의 모든 수신자들은 목적 클래스의 디지털 서명을 해독할 수 있다. 선택적으로, 목적 클래스의 검사 불가능한 프로그램 코드가 대응하는 검사가능한 프로그램을 가질 때, 목적 클래스의 잠재 사용자는 목적 클래스의 검사 불가능한 프로그램 코드를 실행하기 전에 대응하는 검사가능한 프로그램의 적정 동작을 검사하기 위해 상기 프로그램을 사용할 수 있다. 컴파일된 프로그램의 수령자는 컴파일된 아키텍처 특정 프로그램을 실행하기 전에 대응하는 아키텍처 중간 프로그램의 적정 동작을 검사하기 위해 프로그램 검사장치를 사용할 수있다.
그외에 목적 및 장점과 함께 본 발명은 첨부된 도면을 참조로 상세히 설명될 것이다.
도 1에는 많은 클라이언트 컴퓨터(102), 서버 컴퓨터(104) 및 신뢰된 키 저장소(106)를 가진 컴퓨터 네트워크(100)가 도시되어 있다. 클라이언트 컴퓨터(102)는 네트워크 통신 접속부(108)를 통해 서버 컴퓨터(104) 및 신뢰된 키 저장소(106)에 접속된다. 네트워크 통신 접속부는 지역 또는 광역 네트워크, 인터넷, 이들 네트워크의 결합 또는 다른 형태의 네트워크 통신 접속부일 수 있다.
대부분의 클라이언트 컴퓨터(102)가 선 워크스테이션, IBM 호환 컴퓨터 및 매킨토시 컴퓨터와 같은 탁상 컴퓨터이지만, 다른 형태의 컴퓨터가 클라이언트 컴퓨터로 사용될 수 있다. 각각의 이들 클라이언트 컴퓨터는 CPU(110), 사용자 인터페이스(112), 메모리(114) 및 네트워크 통신 인터페이스(116)를 포함한다. 네트워크 통신 인터페이스에 의해, 클라이언트 컴퓨터는 네트워크 통신 접속부(106)를 통해 서버 컴퓨터(104) 및 신뢰된 키 저장소(108)와 통신할 수 있다.
각각의 클라이언트 컴퓨터(102)의 메모리(114)는 운영체제(118), 네트워크 통신 관리자(120), AN 프로그램(아키텍처 중간 프로그램) 실행자(122), AS 프로그램(아키텍처 특정 프로그램) 실행자(124), AN 프로그램 보전성 검사장치(126), AN 프로그램 컴파일 준비기(128), 서명 발생기(130), 서명 검사장치(132), 컴파일 정보 검사장치(134), 목적 클래스 로더(136), 사용자 어드레스 스페이스(138), 신뢰된 목적 클래스 저장소(140), 신뢰되지 않은 목적 클래스 저장소(142), 및 알려진 신뢰된 컴파일 파티 및 신뢰된 컴파일러의 리스트(144)를 포함한다. 운영체제는 CPU(110)에서 실행되며, 사용자 인터페이스(112)를 가진 사용자에 의해 송출된 명령에 응답하여 CPU의 프로그램(120-136) 실행을 제어하여 통합한다.
각각의 클라이언트 컴퓨터(102)의 AN 프로그램 실행자(122)는 신뢰된 및 신뢰되지 않은 목적 클래스 저장소(140, 142)에 저장된 목적 클래스의 AN 프로그램을 실행한다. 더욱이, AN 프로그램은 사용자가 스택 및 데이터 사용제한과 같은 소정 보전성 기준을 설정할 수 있는 AN 언어로 기록되어, AN 프로그램은 위법 테스크를 실행하지 않은 것이다. 따라서, AN 프로그램의 보전성은 프로그램이 소정 보전성 기준을 만족하는지를 결정함으로써 실행하기 전에 AN 프로그램 보전성 검사장치(126)에 의해 직접 검사될 수 있다. 따라서, 이들 AN 프로그램은 검사가능한 보전성 AN 프로그램으로 간주된다.
바람직한 실시예에 있어서, 검사가능한 보전성 AN 프로그램은 자바 바이트코드 언어로 기록된다. 더욱이, AN 프로그램 실행자(122) 및 AN 프로그램 검사장치(124)는 각각 자바 바이트코드 프로그램을 각각 실행하여 검사하는 자바바이트코드 프로그램 인터프리터 및 자바 바이트코드 프로그램 검사장치이다. 자바 바이트 코드 검사장치 및 인터프리터는 선 마이크로시스템스 인코포레이션의 제품이다.
그러나, 각각의 클라이언트 컴퓨터(102)는 프로그램이 대응하는 AS 언어로 기록될 수 있으며 AS 프로그램 실행자(122)에 의해 실행될 수 있는 연관된 특정 아키텍처를 가진다. AS 언어는 AS 언어로 작성된 AS 프로그램이 AN 언어의 소정의 보전성 기준을 만족시킬 것을 요구하지 않는다. 결과적으로, AS 프로그램은 그들이 AN 언어의 소정 보전성 기준에 의해 부가된 제한에 의해 영향을 받지 않기 때문에 AN 프로그램에 의해 실행될 수 없는 태스크를 실행할 수있다. 그러나,불행하게도 이것은 AN 프로그램 보전성 검사장치(126)에 의해 그들의 보전성이 직접 검사될 수 없음을 의미하고 따라서 검사될 수 없는 보전성으로 간주된다.
그럼에도 불구하고, 초기에 지시된 것처럼, AN 프로그램은 AS 언어로 컴파일된 동일한 프로그램보다 덜 효율적으로 실행된다. 따라서, 클라이언트 컴퓨터(102)의 사용자는 사용자의 클라이언트 컴퓨터와 관련된 AS 언어를 위해 서버 컴퓨터(104)에 의해 컴파일된 AN 프로그램을 갖길 원할 수 있고, 따라서 컴파일된 AS 프로그램은 AS 프로그램 실행자(124)에 의해 실행될 수 있다. 사용자는 만일 컴파일된 AS 프로그램이 분산되어 다른 클라이언트 컴퓨터의 AS 프로그램 실행자(124)에 의해 실행된다면 다른 클라이언트 컴퓨터와 연관된 AS 언어로 컴파일된 AN 프로그램을 갖길 원할 수 있다.
컴파일하기 위한 아키텍처 중간 프로그램 준비
도 1 및 도 2를 참조하면, 원시 파티(OrigParty)가 서버 컴퓨터(104)에 의해 컴파일된 AN 프로그램(200)을 가지기를 원할 때, 원시파티는 사용자 인터페이스(112)로 AN 프로그램 컴파일 준비기(128)를 호출하고, 컴파일하기 위한 AN 프로그램 준비를 지시하는 명령을 송출한다. AN 프로그램은 신뢰된 또는 신뢰되지 않은 목적 클래스 저장소(140, 142)중 하나에 포함된 목적 클래스에 있을 수있다. 테이블(1)은 서버 컴퓨터(104)에 의해 컴파일하기 위한 AN 프로그램을 준비하기 위해 AN 프로그램 컴파일 준비기(128)에 의해 사용되는 과정의 의사코드 표현을 포함한다. 테이블 1-3에 사용된 의사코드는 범용 컴퓨터 언어 규정을 사용한다. 여기에 사용된 의사코드가 다지 이들을 기술하기 위해 발명될지라도, 본 분야에서 숙련된 임의의 컴퓨터 프로그래머가 용이하게 이해할 수 있도록 설계된다.
도 1 및 도 2와 테이블 1을 참조하면, AN 프로그램 컴파일 준비기(128)는 AN 프로그램 보전성 검사장치(126)를 우선 호출하여 AN 프로그램(200)의 AN 프로그램 코드(202)의 보전성을 검사하도록 상기 검사장치에 명령한다. 이것은 AN 프로그램 코드가 컴파일을 위해 서버 컴퓨터(104)에 전송되기 전에 AN 언어의 소정의 보전성 기준을 만족시키는 지를 확인하기 위해 이뤄진다. 만일 AN 프로그램 코드가 소정 보전성 기준을 만족하지 않는다면, AN 프로그램 보전성 검사장치는 AN 프로그램 컴파일 준비기에 실패 결과를 전송한다. 이에 응답하여, AN 프로그램 컴파일 준비기는 컴파일 준비과정을 중지하며 이들을 지시하는 적정 메시지를 발생시킨다.
그러나, 만일 AN 프로그램 코드(202)가 소정의 보전성 기준을 만족한다면, AN 프로그램 보전성 검사장치(126)는 AN 프로그램 컴파일 준비기(128)에 패스 결과를 전송한다. 그리고 나서, AN 프로그램 컴파일 준비기는 서명 발생기(130)를 호출하여, AN 프로그램(200)이 신뢰된 원시파티에 의해 발생되었음이 검증될 수 있는 원시 파티 디지털 서명(DigitalSignatureop)(210)을 발생시키도록 서명발생기에 지시한다. 서명 발생기는 우선 AN 프로그램 코드(202)의 메시지 요약(MDOP)(212)을 발생시킴으로서 디지털 서명OP를 발생시킨다. 그것은 AN 프로그램 코드의 데이터 비트로 해시함수(HashFuctionOP)를 계산함으로서 행해진다. 사용된 해시함수는 소정 해시함수 또는 원시파티에 의해 선택된 해시함수중 하나일 수있다. 본 명세서에서, 해시함수op는 원시파티의 디지털 서명op을 위해 사용되기 때문에 원시파티에 대응한다.
그리고 나서, 서명 발생기(130)는 발생된 메시지 요약(MDop)(212) 및 해시함수OPID(214)를 원시파티의 전용 암호화 키(OrigParty's Privatekey)로 암호화한다. 그다음에, 서명 발생기는 디지털 서명OP를 형성하기 위하여 암호화된 아이템(212, 214)의 끝에서 클리어 텍스트에 원시 파티 ID(216)을 더한다. 원시파티 전용 키 및 ID가 사용자 인터페이스(112)를 갖는 원시 파티에 의해 제공된다.
디지털 서명OP(210)이 발생된후에, AN 프로그램 컴파일 준비기(128)는 AN 프로그램 코드(202)에 디지털 서명OP를 부가한다. 그리고 나서, AN 프로그램 컴파일 준비기는 AN 프로그램(200)이 서버 컴퓨터(104)에 의해 컴파일하기 위한 준비가 되었다는 메시지를 발생시킨다.
그리고 나서, 원시 파티는 프로그램이 컴파일되는 아키텍쳐 특정 언어 및 사용되는 컴파일러를 특정하는 변수(AS프로그램 ID 및 Compiler ID)와 함께, 서버 컴퓨터(104)에 AN 프로그램(200)을 전송하도록 사용자 인터페이스(112)를 통해 네트워크 통신관리자(120)에 명령을 송출한다. 네트워크 통신 관리자는 AN 프로그램이 위치되어 있는 신뢰된 또는 신뢰되지 않은 목적 클래스 저장소(140, 142)로부터 AN 프로그램을 검색하고, 이를 네트워크 통신 인터페이스(116)에 제공한다. 그리고나서, 네트워크 통신 관리자는 특정 변수와 함께 AN 프로그램을 서버 컴퓨터에 전송하도록 네트워크 통신 인터페이스에 지시한다.
아키텍처 중간 프로그램 컴파일
전송된 AN 프로그램(200)은 서버 컴퓨터(104)에 수신된다. 서버 컴퓨터는 CPU(150), 사용자 인터페이스(152), 메모리(154) 및 네트워크 통신 인터페이스(156)를 포함한다. 네트워크 통신 인터페이스에 의해, 서버 컴퓨터는 네트워크 통신 접속부(108)를 통해 클라이언트 컴퓨터(102) 및 신뢰된 키 저장소(106)와 통신할 수 있다.
서버 컴퓨터(104)의 메모리(154)는 운영체제(158), 네트워크 통신 관리자(160), AN 프로그램 컴파일러(162), 서명 검출장치(164), AN 프로그램 보전성 검사장치(166), 서명 발생기(168), AN 프로그램 저장소(170) 및 AS 프로그램 저장소(172)를 구비한다. 운영체제는 CPU(150)상에서 실행되며, 사용자 인터페이스(152)를 통해 컴파일 파티(CompParty)에 의해 송출된 명령에 응답하여CPU상에서 프로그램(160-168)의 실행을 제어 및 조정한다.
네트워크 통신 인터페이스(156)는 AN 프로그램(200)을 수신하여, 수신이 이루어졌음을 네트워크 통신 관리자(160)에게 지시한다. 이에 응답하여, 네트워크 통신 관리자는 수신된 AN 프로그램을 AN 프로그램 저장소(170)에 위치시킨다. 만일 서버 컴퓨터(104)가 자동 컴파일러 서비스로서 셋업된다면, 이는 네트워크 통신 관리자(160)에 의해 자동적으로 행해진다. 그렇지 않으면, AN 프로그램은 컴파일 파티가 사용자 인터페이스를 통해 명령을 송출할 때 네트워크 통신 관리자에 의해 저장소(170)로 이동된다.
그리고 나서, 자동적으로 또는 사용자 인터페이스(152)를 통한 컴파일 파티에 의한 명령의 송출시에, AN 프로그램 컴파일러(162)는 AN 프로그램(200)을 컴파일하기 위해 호출된다. 테이블(2)은 AN 프로그램을 컴파일하기 위해 AN 프로그램 컴파일러에 의해 사용된 컴파일 과정의 의사코드 표현을 포함한다.
도 1-2 및 테이블2을 참조하면, AN 프로그램 컴파일러(162)는 디지털 서명OP(210)가 AN 프로그램에 대한 원시 파티의 서명인지를 확인할 목적으로(예를들어, AN 프로그램의 몇몇의 다른 버전상의 무시된 서명 또는 원시파티 서명과 반대), 수신된 AN 프로그램(200)에서 디지털 서명OP(210)를 검사하기 위해 서명 검사장치(164)를 호출한다. 특히, 서명 검사장치는 신뢰된 키 저장소(106)로부터 원시파티 공개 키를 얻기 위해서 수신된 AN 프로그램의 클리어 텍스트 원시 파티ID(216)을 사용한다. 그리고 나서, 서명 검사장치는 원시파티의 공개 암호화키(OrigParty's Publickey)를 사용하여 디지털 서명OP의 암호화된 MDOP(212) 및 해시함수OPID(214)를 해독한다.
다음에, 서명 검사장치(164)는 수신된 AN 프로그램(200)의 AN 프로그램 코드(202)에 대응하는 해시함수OP를 계산함으로서 해독된 MDOP(212)와 매칭되는 테스트 메시지 요약(TestMDOP)을 발생시킨다. 해독된 디지털 서명OP의 해시함수OPID(214)는 사용될 적정 해시함수OP를 식별하기 위해 사용된다. 해독된 MDOP및 발생된 테스트 MDOP는 디지털 서명OP(210)을 검사하기 위해 비교된다.
만일 MDOP(212) 및 테스트 MDOP가 매칭되지 않는다면, 서명 검사장치(162)는 AN 프로그램 컴파일러(162)에 실패결과를 다시 전송한다. 이에 응답하여, AN 프로그램 컴파일러는 컴파일 과정을 중지하며 적정 메시지를 발생시킨다.
다른 한편으로, 만일 MDOP(212) 및 테스트 MDOP가 매칭되면, 서명 검사장치(162)는 AN 프로그램 컴파일러(162)에 패스결과를 다시 전송하며, AN 프로그램 컴파일러는 AN 프로그램 보전성 검사장치(166)를 호출한다. 그것은 AN 프로그램 보전성 검사장치가 수신된 AN 프로그램(200)의 AN 프로그램 코드(202)의 보전성을 검사하도록 명령한다. 이것은 컴파일을 위한 AN 프로그램에 대한 준비 단락에서 기술한 것과 같은 방법과 동일한 목적으로 행해진다. 따라서, 만일 AN 프로그램 코드가 소정 보전성 기준에 만족하지 않는다면, AN 프로그램 보전성 검사장치는 AN 프로그램 컴파일러에 실패결과를 다시 전송한다. 이에 응답하여, AN 프로그램 컴파일러는 컴파일 과정을 중지하며 이를 나타내는 적정 메시지를 발생시킨다.
그러나, 만일 수신된 AN 프로그램(200)의 AN 프로그램 코드(202)가 소정 보전성 기준에 만족한다면, AN 프로그램 보전성 검사장치(166)는 AN 프로그램 컴파일러(162)에 패스결과를 다시 전송한다. 그리고나서, AN 프로그램 컴파일러는 원시파티에 의해 지정된 AS 프로그램 ID에 의해 식별된 AS 언어로 AN 프로그램 코드를 컴파일한다. 도 1-3 및 테이블 2를 참조하면, 컴파일러는 AS 프로그램 저장소(172)에 저장된 AS 프로그램(300)에 AN 프로그램 코드(202), 디지털 서명OP(210) 및 컴파일된 AS 프로그램 코드(302)를 위치시킨다.
그리고 나서, AN 프로그램 컴파일러는 서명 발생기(168)를 호출하며, AS 프로그램(300)이 신뢰된 AN 프로그램 컴파일러로 컴파일되었다는 것을 보장하기 위해 검사될 수 있는 AN 프로그램 컴파일러 디지털 서명(디지털 서명C)(320)를 발생시키도록 서명발생기에 지시한다. 이것은 디지털 서명OP를 발생시키기 위해 초기에 기술된 것과 유사한 방식으로 행해진다. 그러나, 이러한 경우에 있어서 서명된 정보 세트는 AS 프로그램 코드 및 디지털 서명OP이다. 대응하는 해시함수CID(324)를 가진 다른 소정 해시함수는 디지털 서명C에 의해 서명될 정보세트의 메시지 요약(MDC)(322)를 발생시키기 위해 사용될 수 있으며, AN 프로그램 컴파일러의 전용 암호화 키(Compiler's Privatekey)는 MDC및 해시함수CID를 암호화하기 위해 사용되며, AN 프로그램 컴파일러의 식별자(컴파일러 ID)는 암호화된 MDc 및 해시함수C의 끝에서클리어 텍스트에 더해진다. 컴파일러 전용 키 및 ID는 AN 프로그램 컴파일러에 의해 제공된다.
AN 프로그램 컴파일러(162)는 제 2시간에 서명 발생기(168)를 호출하여 컴파일 파티의 디지털 서명(디지털 서명CP)(312)를 발생시키고, 이는 최종 사용자에 의해 검사되어 AS 프로그램(300)이 신뢰된 컴파일 파티에 의해 발생되었음을 보장해준다. 이것은 디지털 서명OP를 발생시키기 위해 상기에 기술된 것과 유사한 방식으로 행해진다. 그러나, 디지털 서명CP를 위해 발생된 메시지 요약(MDCP)(314)은 AS 프로그램 코드의 데이터 비트, 디지털 서명OP및 디지털 서명C상에서 소정 해시함수(해시함수CP)를 계산함으로서 발생된다. 해시함수OP와 유사하게, 해시함수CP는 그것이 컴파일 파티의 디지털 서명CP을 위해 사용되기 때문에 컴파일 파티에 대응한다.
그리고 나서, 서명 발생기(168)는 컴파일 파티의 전용 암호화 키로 MDCP(314) 및 해시함수CP의 ID(316)를 암호화한다. 그리고 나서 서명 발생기는 디지털 서명CP(312)를 형성하기 위해 암호화된 아이템(314, 316)의 끝에서 클리어 텍스트에 컴파일 파티 의 식별자(318)를 더한다. 컴파일 파티 전용 키 및 ID는 사용자 인터페이스(152)를 통해 컴파일 파티에 의해 제공된다.
디지털 서명C(320) 및 디지털 서명CP(312)가 발생된후에, AN 프로그램 컴파일러(162)는 AS 프로그램 코드(302)에 그들을 부가하여, 결과적인 컴파일된 AS 프로그램 파일 또는 목적은 다음과 같은 성분을 그 내부에 가진다.
AN 프로그램 코드,
디지털 서명OP,
AS 프로그램 코드,
디지털 서명C,
디지털 서명CP
그리고 나서, AN 프로그램 컴파일러는 AS 프로그램(300)을 형성하기 위해 AN 프로그램(200)이 컴파일되었고 원시파티에 전송될 준비가 되었다는 메시지를 발생시킨다.
그리고 나서, 컴파일 파티는 AS 프로그램(300)을 원시 파티 클라이언트 컴퓨터(102)에 전송하기 위해 네트워크 통신 관리자(160)를 사용한다. 네트워크 통신 관리자는 AS 프로그램이 위치되는 AS 프로그램 저장소(172)로부터 AS 프로그램을 검색함으로서 이것을 수행하고, 네트워크 통신 인터페이스(156)에 이를 제공한다. 네트워크 통신 관리자는 네트워크 통신 인터페이스가 원시 클라이언트 컴퓨터에 AS 프로그램을 전송하도록 지시한다.
목적 및 목적 클래스 발생 및 분산
전송된 AS 프로그램(300)은 원시파티 클라이언트 컴퓨터의 통신 인터페이스(116)에 의해 수신되며, 네트워크 통신 관리자(120)에게 상기 수신이 발생하였음을 지시한다. 이에 응답하여, 원시 파티는 네트워크 통신 인터페이스로부터 수신된 AS 프로그램을 검색하라고 네트워크 통신 관리자에게 지시하는 명령을 사용자 인터페이스(112)를 통해 송출하여, 네트워크 통신 관리자가 수신된 AS 프로그램을 원시파티 클라이언트 컴퓨터의 신뢰되지 않은 목적 클래스 저장소(142)에 위치하도록 한다. 일단 이것이 행해지면, 원시파티는 한가지 방법으로(즉, 컴파일된 프로그램 코드로) 새로운 목적 클래스로서 수신된 AS 프로그램을 처리할 수있으며 상기 목적 클래스는 AS 프로그램(300) 뿐만아니라, 다른 AN 프로그램 및 AS 프로그램을 포함하는 목적 클래스를 형성할 수 있다.
도 4는 본 발명에 따라 전형적인 목적 클래스(400)를 도시한다. 목적 클래스는 하나 이상의 AS 프로그램(402) 및/또는 하나 이상의 AN 프로그램(404)뿐만아니라, 하나의 가상 함수 테이블(410)을 포함할 수있다. 각각의 AS 프로그램에 대해 가상 함수 테이블은 AN 언어로 존재하지 않는 AS 프로그램(네이티브 프로그램)임을 표시하는 대응 식별기(네이티브_AS 프로그램 ID)(412) 및 네이티브 프로그램에 대한 대응 포인터(Ptr)(414)를 포함한다. 유사하게, 각각의 AN 프로그램에 대해, 가상 함수 테이블은 대응하는 식별자(AN 프로그램 ID)(416) 및 AN 프로그램에 대한 대응 포인터(418)를 포함한다. 이 목적 클래스의 모든 목적(420)은 목적 클래스(400)를 지시하는 목적 헤더(422)를 포함한다.
따라서, 원시 파티는 목적 클래스의 AS 프로그램(402)중 하나로서 서버 컴퓨터(104)로부터 수신되는 AS 프로그램(300)을 갖는 목적(420) 및 목적 클래스(400)를 생성할 수 있다.
원시파티가 AS 프로그램(300) 및 AN 프로그램을 포함하는 목적 및 목적 클래스를 다양한 실행 파티(ExecuteParty)에 분산시킬때, 원시 파티는 네트워크 통신관리자가 실행 파티의 클라이언트 컴퓨터(102)에 아이템을 전송하도록 지시하는 명령을 사용자 인터페이스(112)를 통해 송출한다. 네트워크 통신 관리자는 아이템이 위치되는 신뢰되지 않은 목적 클래스 저장소(142)로부터 아이템을 검색함으로서 적절한 전송을 통해 아이템을 네트워크 통신 인터페이스(116)에 제공한다. 대안적으로, 원시파티의 네트워크 통신 관리자는 특정 목적 클래스(400)의 복사를 위해 실행 파티에 의해 초기화된 요구에 응답할 수 있다.
목적 클래스의 아키텍처 중간 프로그램 및
아키텍처 특정 프로그램의 실행
클라이언트 컴퓨터(102)의 네트워크 통신 인터페이스(116)는 전송된 목적 및 목적 클래스를 수신하며 네트워크 통신 관리자(160)에게 수신이 이루어졌음을 지시한다. 이에 응답하여, 실행 파티는 네트워크 통신 관리자에게 네트워크 통신 인터페이스로부터 수신된 목적 및 목적 클래스를 검색하도록 지시하는 명령을 사용자인터페이스(112)를 통해 송출한다. 그리고 나서, 네트워크 통신 관리자는 수신된 목적 및 목적 클래스를 신뢰되지 않은 목적 클래스 저장소(142)에 저장한다.
각각의 클라이언트 컴퓨터(102)의 신뢰되지 않은 목적 클래스 저장소(142)는 신뢰되지 않은 목적 및 그들과 연관된 목적 클래스를 포함한다. 이들 목적 클래스는, 그들이 포함하는 임의의 AN 프로그램이 보전성을 검사받지 않았으며 그들이 포함하는 임의의 AS 프로그램이 검사받은 소스를 가지지 않고 적정 AN 프로그램으로부터 컴파일된 것으로서 검사되지 않았기 때문에 신뢰되지 않는다.
각각의 클라이언트 컴퓨터의 신뢰된 목적 클래스 저장소(140)는 신뢰되는 목 적들 및 목적 클래스들을 포함한다. 그들이 포함하는 모든 AN 프로그램들은 AN 프로그램 보전성 검사장치(136)에 의해 이미 보전성이 검사되었고, 그들이 포함하는 모든 AS 프로그램들이 신뢰할만 하다고 확인되었기 때문에 이러한 목적 클래스들은 신뢰된다. 사실상, 신뢰된 목적 클래스 저장소(140)의 몇몇 또는 모든 목적 클래스는 디지털 서명을 가질 필요가 없는데, 이는 이들 목적 클래스가 신뢰성을 가져서, 이들 목적 클래스의 보전성을 검사할 이유가 없기 때문이다.
초기에 제안된 것처럼, 모든 적정 태스크가 목적 클래스로 실행될 수 있도록 AN 프로그램 및 AS 프로그램을 포함하는 목적 클래스를 가지는 것은 바람직하다. 따라서, AN 프로그램 실행자(122)는 보전성 검사가능한 AN 프로그램을 실행할 수있으며, 신뢰된 목적 클래스 저장소(140)의 신뢰된 목적 클래스에 있거나, 또는 신뢰되지 않은 목적 클래스 저장소(142)의 신뢰되지 않은 목적 클래스에 있으면서 모든 적정 태스크가 수행될 수 있도록 검사가능한 디지털 서명OP, 디지털 서명CP, 디지털 서명C정보를 가지는 보전성 검사 불가능한 AS 프로그램을 실행하도록 AS 프로그램실행자를 호출할 수 있다. 이러한 방식으로, 디지털 서명OP, 디지털 서명CP및 디지털 서명C정보를 가지지 않거나, 디지털 서명이 검사될 수 없는 신뢰되지 않은 목적 클래스의 AS 프로그램의 실행이 막아진다.
도 1-4 및 테이블 3을 참조하면, 실행 파티(예를들어, 원시파티 또는 다른 파티)의 클라이언트 컴퓨터(102)에서, AN 프로그램 실행자(124)는 특정 목적 클래스에서 한 방법을 호출하고자 하는 AN 프로그램을 실행할 수있다. 이 방법 호출은 목적 클래스가 이미 로드되었는지의 여부를 결정하는 목적 클래스 로더(136)에 의해 초기에 처리된다. 만일 목적 클래스가 실행 파티의 사용자 어드레스 스페이스(138)로 이미 로드되었다면, AN 프로그램 실행자(122)는 호출된 방법이 AN 프로그램인 경우 호출된 방법을 실행하며, AS 프로그램 실행자(124)는 호출된 방법이 AS 프로그램인 경우 호출된 방법을 실행한다.
그러나, 만일 목적 클래스가 실행 파티 어드레스 스페이스(138)로 아직 로드되지 않았다면, 목적 클래스 로더(136)는 목적 클래스를 실행파티 어드레스 스페이스로 로드하며 호출된 방법의 실행이 허용되는지의 여부를 결정한다. 예를들어, 만일 목적 클래스가 신뢰된 목적 클래스 저장소(140)로부터 로드되었다면, 호출된 방법의 실행은 허용되며 실행과정이 호출된다. 실행과정(테이블 3을 참조)은 호출된 방법이 AN 프로그램인 경우 AN 프로그램 실행자를 호출하며, 그렇지 않으면 AS 프로그램 실행자(124)를 호출하여 호출된 방법을 실행한다.
그러나, 만일 목적 클래스가 신뢰되지 않은 목적 클래스 저장소(142)로부터 로드되었다면, 클래스 로더(136)는 목적 클래스가 임의의 AS 프로그램을 포함하는지를 결정하기 위해 목적의 목적 헤더를 검사한다. 이것은 목적의 가상 함수 테이블에 임의의 네이티브_AS 프로그램 ID가 존재하는 지를 결정함으로서 행한다.
목적 클래스에 AS 프로그램이 존재하지 않는다면, 클래스 로더(136)는 목적 클래스에서 AN 프로그램의 보전성을 검사하기 위해 AN 프로그램 보전성 검사장치(136)를 호출한다. 이것은 AN 프로그램(200)의 보전성을 검사하기 위해 상기에 기술된 것(AN 프로그램의 컴파일을 기술한 단락에서)과 같은 방법으로 동일한 목적을 위해 행해진다. 따라서, 임의의 AN 프로그램의 보전성이 검사되지 않은경우, AN 프로그램 보전성 검사장치는 실패 결과를 클래스 로더에 다시 전송하며, 이 클래스 로더는 클래스 로딩 과정을 중지하며 이를 지시하는 적정 메시지를 발생시킨다. 그러나, 만일 AN 프로그램 보전성 검사장치가 목적 클래스의 모든 AN 프로그램이 검사되는 것을 나타내는 패스결과를 다시 전송한다면, 클래스 로더는 호출된 방법을 실행시킨다.
만일 목적 클래스에 AS 프로그램이 존재한다면, 클래스 로더(136)는 컴파일러 서명 디지털 서명C및 컴파일 파티 서명 디지털 서명CP를 검사하기 위해 서명 검사장치(132)를 호출한다. 만일 임의의 AS 프로그램이 디지털 서명CP및 디지털 서명C를 포함하지 않는다면, AS 프로그램 소오스의 보전성은 검사할 수 없고, 따라서, 서명 검사장치는 실패결과를 AN 프로그램 실행자에 다시 전송한다. 이에 응답하여, 클래스 로더는 목적 클래스 로딩 과정을 중지하며 이것이 발생하였음을 표시하는 적정 메시지를 발생시킨다.
만일 목적 클래스의 모든 AS 프로그램이 디지털 서명CP및 디지털 서명C를 포함한다면, 이들 두개의 디지털 서명에 지시된 것처럼 컴파일 파티 및 컴파일러의 식별 정보가 알려진 신뢰된 컴파일러 파티 및 신뢰된 컴파일러의 리스트(144)(도 1 참조)와 비교된다 만일 목적 클래스의 임의의 AS프로그램이 알려진 신뢰된 컴파일러 파티 및 신뢰된 컴파일러의 세트에 포함되지 않은 컴파일 파티 컴파일러에 의해컴파일 되었다면, 클래스 로딩 과정은 중지되어 호출된 방법의 실행은 중지된다. 유사하게, 만일 임의의 AS 프로그램에서 식별되는 AS 언어가 AS 프로그램 실행자(124)에 의해 사용된 AS 언어와 매칭되지 않는다면, 클래스 로딩 과정은 중지된다.
그러나, 만일 목적 클래스의 모든 AS 프로그램이 디지털 서명CP및 디지털 서명C를 포함하며 모든 AS 프로그램에 대한 식별된 컴파일 파티 및 컴파일러가 신뢰된 컴파일러 파티 및 컴파일러이며 모든 AS 프로그램에 의해 사용된 AS 언어가 AS 프로그램 실행자에 의해 사용된 AS언어라면, 서명 검사장치는 디지털 서명OP를 식별하기 위해 상기에 기술된 유사한 방법(AN 프로그램(200)의 컴파일을 기술한 단락에서)으로 이들 서명을 검사한다. 그러나, 이러한 경우에 있어서, 컴파일러 및 컴파일 파티의 공개 키는 신뢰된 키 저장소(106)로부터 검색되며, 디지털 서명C에서 MDC및 해시함수CID를 해독하고 디지털 서명CP에서 MDCP및 해시함수CPID을 해독하기 위해 각각 사용된다. 더욱이, 해독된 MDCP및 MDC에 대응하는 테스트 메시지 요약(테스트 MDC및 테스트MDCP)에 있어서, 테스트 MDC는 AS 프로그램에 디지털 서명OP를 더한 데이터 비트들에서 해시코드들을 계산함으로써 발생되고, 테스트MDCP는 상기 데이터에 추가로 디지털 서명C를 더함으로써 발생되어, 그 각각은 해독된 해시함수CID 및 해시함수CPID에 의해 각각 식별되는 해시함수C및 해시함수CP에 해당한다.
만일 디지털 서명C및/또는 디지털 서명CP가 모든 AS 프로그램에 대해 검증되지 않는다면(즉, MDC≠ 테스트MDC및/또는 MDCP≠ 테스트 MDCP), 서명 검사장치(136)는 클래스 로더(132)에 실패결과를 다시 전송한다. 이에 응답하여, 클래스 로더는 클래스 로딩과정을 중지하며 이것이 발생하였음을 나타내는 적정 메시지를 발생시킨다.
그러나, 만일 디지털 서명C및 디지털 서명CP가 모든 AS 프로그램에 대해 검증되면(즉, MDC= 테스트 MDC및 MDCP= 테스트MDCP), AS 프로그램 실행자(124)는 AS 프로그램이 컴파일되었던 AN 프로그램에 대한 원시파티 서명(디지털 서명OP)을 검사하기 위해 서명 검사장치(132)를 다시 호출한다. 원시파티 디지털 서명을 검사하기 위해서, 각각의 디지털 서명OP는 AN 프로그램(200)의 컴파일에 관한 단락에서 상기에 기술된 것과 동일한 방법으로 검사된다
만일 AS 프로그램이 컴파일되었던 각각의 AN 프로그램의 디지털 서명OP가 검사된다면, 클래스 로더는 목적 클래스 및 AS프로그램이 컴파일되었던 AN 프로그램에서 모든 AN 프로그램의 보전성을 검사하기 위해 AN 프로그램 보전성 검사장치를 호출한다. 이것은 상기에 기술한 방법과 동일한방법으로 행해진다. 만일 임의의 이들 AN 프로그램의 보전성이 검사되지 않는다면, AN 프로그램 보전성 검사장치는 클래스 로딩과정을 중지시키며 적절한 메시지를 발생시키는 실패결과를 클래스 로더에 다시 전송한다.
그러나, 만일 각각의 AN 프로그램의 보전성이 검사된다면, AN 프로그램 보전성 검사장치(126)는 클래스 로더(136)에 패스결과를 다시 전송한다. 이에 응답하여, 클래스 로더는 호출된 방법을 실행하기 위해 AN프로그램 실행자 또는 AS 프로그램 실행자를 호출한다.
전술한 것처럼, 실행 파티는 디지털 서명이 검사될 수 있는 보전성 검사가능한 AN 프로그램 및 AS프로그램을 가지면서 신뢰되지 않은 저장소(142)에 있는 신뢰되지 않은 목적 클래스만이 로딩되며 그들의 프로그램을 실행시킬 수있도록 한다.
다른 실시예
앞서 기술된 본 발명의 몇몇의 특징은 선택적인 것이다. 따라서, 당업자는 이들 특징을 포함하지 않는 다른 실시예가 존재한다는 것을 잘 이해할 수 있을 것이다.
예를들어, AN 프로그램 컴파일러는 컴파일 파티 및 AN 프로그램 컴파일러 각각에 대해 디지털 서명CP및 디지털 서명C둘다를 발생시키는 것으로 기술되었다. 그러나, AN 프로그램 컴파일러는 AS 프로그램을 컴파일하기 위해 사용된 컴파일러 또는 컴파일 파티중 하나를 검사하는데 이들 디지털 서명중 하나만을 발생시키도록 단순하게 구성될 수 있다.
유사하게, 프로그램 실행자는 디지털 서명CP및 디지털 서명C둘다의 검사를 필요로하는 것으로 기술되었다. 그러나, 프로그램 실행자는 이들 디지털 서명중 하나의 검사만을 요구하고 실행되는 AS 프로그램에 다른 디지털 서명을 포함하는 경우에 선택적으로 다른 디지털 서명을 검사하도록 구성될 수있다. 더욱이, 프로그램 실행자는 컴파일 파티가 신뢰되며 컴파일하기 전에 AS 프로그램으로 컴파일된 각각의 AS 프로그램의 보전성을 검사하는 것이 컴파일 파티의 의무라는 가정하에, 각각의 AS 프로그램에 대응하는 AN 프로그램의 보전성을 검사하는 단계를 스킵하도록 구성될 수 있다.
실행파티가 원시파티일 때, 실행파티는 AS 프로그램(300)으로 컴파일될 AN 프로그램(200)을 컴파일 파티 서버 컴퓨터(104)에 실제로 전송하였다는 것을 알고 있다. 이러한 경우에, 클래스 로더(136)는 AN 프로그램에서 디지털 서명OP를 검사하기 위해 서명 검사장치를 호출하지 않도록 구성될 수 있다. 오히려, 실행 파티는 AN 프로그램의 지역복사의 디지털 서명OP와 컴파일된 AS 프로그램의 디지털 서명OP를 단순히 비교할 수 있다. 게다가, 클래스 로더는 AN 프로그램의 보전성이 컴파일 서버 컴퓨터에 전송하기 전에 컴파일링 과정을 위한 준비기간 동안 검사되었기 때문에 호출된 AS 프로그램에 대응하는 AN 프로그램의 보전성을 검사하기 위해 AN 프로그램 보전성 검사장치(126)를 호출하지 않도록 구성될 수있다. 대안적으로, AN 프로그램 컴파일 준비기(128)는 그것의 보전성이 컴파일러에 의해 그리고 대응 AS 프로그램 실행에 앞서 AN 프로그램 보전성 검사장치를 호출할 때 검사되기 때문에 컴파일 과정을 위한 준비동안 AN 프로그램 보전성 검사장치를 호출하지 않도록 구성될 수있다.
당업자는 본 발명의 권리범위를 벗어나지 않고 본 발명을 변형할 수있다. 따라서, 본 발명은 청구범위의 사상 및 범위에 의해서만 제한된다.
본 발명은 대응 AN 프로그램으로부터 컴파일된 AS 프로그램의 사용자가 AN 프로그램을 컴파일하는 사용자의 식별, 대응 AN 프로그램의 식별 및 AS 프로그램이 컴파일된 AS 언어를 인증할 수 있으며, 소오스, 컴파일 정보 및 보전성이 검사될 수 없는 AS 프로그램의 호출을 막는동안 모든 적합 테스크가 수행될 수있도록 신뢰될 수있으며 보전성이 검사되지 않는 AS 프로그램을 호출하기 위해 검사가능한 AN 프로그램이 실행될 수있게 하는 효과를 가진다.

Claims (18)

  1. 아키텍처 중간 언어로 작성된 프로그램이 소정의 프로그램 보전성 기준에 만족하는지를 검사하는 프로그램 보전성 검사장치와;
    상기 프로그램에 포함되는 프로그램의 원시 파티(originating party)에 대한 디지털 서명을 검사하는 디지털 서명 검사장치와;
    신뢰되지 않은 목적 클래스를 저장하는 신뢰되지 않은 목적 클래스 저장소와;
    신뢰된 목적 클래스를 저장하는 신뢰된 목적 클래스 저장소를 포함하는데, 상기 목적 클래스 각각은 적어도 하나의 프로그램을 포함하고, 각 프로그램은 (A) 상기 아키텍처 중간 언어로 작성된 아키텍처 중간 프로그램 및 (B) 그 보전성이 상기 보전성 검사장치에 의해 검사될 수 없는 아키텍처 특정 언어로 작성된 아키텍처 특정 프로그램으로 이루어진 그룹으로부터 선택된 프로그램을 포함하고;
    아키텍처 특정 프로그램 실행자와;
    아키텍처 중간 프로그램 실행자와;
    사용자 어드레스 공간과;
    상기 하나의 목적 클래스의 임의의 프로그램에 대한 실행이 요구될 때 실행을 위한 상기 사용자 어드레스 공간내에 상기 목적 클래스들 중 특정 목적 클래스를 로딩하는 클래스 로더를 포함하며;
    상기 클래스 로더는 상기 요구된 목적 클래스의 모든 아키텍처 특정 프로그램이 디지털 서명을 포함하지 않아서 상기 디지털 서명이 상기 디지털 서명 검사장치에 의해 성공적으로 검증되지 않는다면, 상기 신뢰된 목적 클래스 저장소내의 목적 클래스를 제외하고, 적어도 하나의 아키텍처 특정 프로그램을 포함하는 임의의 요구된 목적 클래스의 로딩을 막는 프로그램 보안 논리를 포함하고,
    상기 클래스 로더는 상기 요구된 목적 클래스가 상기 신뢰된 목적 클래스 저장소에 저장되지 않고 적어도 하나의 아키텍처 중간 프로그램을 포함할 때 상기 요구된 목적 클래스의 모든 아키텍처 중간 프로그램의 보전성을 검사하기위해 상기 프로그램 보전성 검사장치를 호출하는 검사장치 논리를 포함하고;
    상기 프로그램 보안 논리는 상기 요구된 목적 클래스가 상기 프로그램 보전성 검사장치에 의해 보전성이 검사될 수 없는 적어도 하나의 아키텍처 중간 프로그램을 포함할 때, 상기 신뢰된 목적 클래스 저장소내의 목적 클래스를 제외한 임의의 요구된 목적 클래스의 로딩을 추가적으로 막는 것을 특징으로 하는 컴퓨터.
  2. 제 1항에 있어서,
    상기 클래스로더는 상기 요청된 프로그램이 아키텍쳐 중간 프로그램이고 상기 요청된 목적 클래스의 로딩이 상기 프로그램 보안 논리에 의해 차단되지 않는 경우에는 상기 아키텍쳐 중간 프로그램 실행자에 의해 요청된 프로그램의 실행을 추가로 인에이블링 하고, 상기 요청된 프로그램이 아키텍쳐 특정 프로그램이고 요청된 목적 클래스의 로딩이 상기 프로그램 보안 논리에 의해 차단되지 않는 경우 상기 아키텍쳐 특정 프로그램 실행자에 의해 요청된 프로그램의 실행을 추가로 인에이블링하는 컴퓨터.
  3. 제 1항에 있어서,
    상기 아키텍처 특정 프로그램 중 하나와 연관되는 상기 각각의 디지털 서명은 서명 파티 식별자 및 암호화된 메시지를 포함하고, 상기 암호화된 메시지는 메시지 요약(digest) 함수를 사용하여 발생되는 아키텍처 특정 프로그램의 메시지 요약을 포함하며, 여기서 상기 암호화된 메시지는 상기 식별된 서명 파티와 연관된 전용 암호화 키를 사용하여 암호화되며,
    상기 디지털 서명 검사장치는 상기 서명 파티 식별자에 의해 식별되는 상기 서명 파티와 연관된 공개 키를 구하고, 해독된 메시지 요약을 발생시키기 위해 상기 공개 키로 상기 디지털 서명의 상기 암호화된 메시지를 해독하고, 상기 디지털 서명과 연관된 상기 아키텍처 특정 프로그램에서 상기 메시지 요약 함수를 실행함으로서 테스트 메시지 요약을 발생시키고, 상기 테스트 메시지 요약을 상기 해독된 메시지 요약과 비교하며, 상기 해독된 메시지 요약과 테스트 메시지 요약이 매칭되지 않는 경우 실패신호를 송출함으로써, 상기 특정 디지털 서명을 처리하는 논리를 포함하는 것을 특징으로 하는 컴퓨터.
  4. 제 1항에 있어서,
    상기 아키텍처 특정 프로그램 중 하나와 연관되는 상기 각각의 디지털 서명은 서명 파티 식별자 및 암호화된 메시지를 포함하고, 상기 암호화된 메시지는 소정 과정에 의해 발생된 메시지를 포함하고, 여기서 상기 암호화된 메시지는 상기 식별된 서명 파티와 연관된 전용 암호화 키를 사용하여 암호화되며,
    상기 디지털 서명 검사장치는 상기 서명 파티 식별자에 의해 식별되는 상기 서명 파티와 연관된 공개 키를 구하고, 해독된 메시지를 발생시키기 위해 상기 공개 키로 상기 디지털 서명의 상기 암호화된 메시지를 해독하고, 상기 디지털 서명과 연관된 상기 아키텍처 특정 프로그램에서 상기 소정 과정을 실행함으로서 테스트 메시지를 발생시키고, 상기 테스트 메시지를 상기 해독된 메시지와 비교하며, 상기 해독된 메시지와 테스트 메시지가 매칭되지 않는 경우 실패신호를 송출함으로써, 상기 특정 디지털 서명을 처리하는 논리를 포함하는 것을 특징으로 하는 컴퓨터.
  5. 제 1항에 있어서,
    상기 프로그램 보안 논리는, 요구된 목적 클래스의 모든 아키텍처 특정 프로그램이 2개의 디지털 서명을 포함하지 않고 상기 디지털 서명이 상기 디지털 서명 검사장치에 의해 둘 다 성공적으로 검증되지 않는 경우, 상기 신뢰된 목적 클래스 저장소 내의 목적 클래스를 제외하고, 적어도 하나의 아키텍처 특정 프로그램을 포함하는 임의의 요구된 목적 클래스의 로딩을 추가적으로 막고,
    상기 아키텍처 특정 프로그램 중 하나와 연관되는 상기 각각의 디지털 서명은 서명 파티 식별자 및 암호화된 메시지를 포함하고, 상기 암호화된 메시지는 소정 과정에 의해 발생되는 메시지를 포함하며, 상기 암호화된 메시지는 상기 식별된서명 파티와 연관된 전용 암호화 키를 사용하여 암호화되며,
    상기 디지털 서명 검사장치는 상기 서명 파티 식별자에 의해 식별되는 상기 서명 파티와 연관된 공개 키를 구하고, 해독된 메시지를 발생시키기 위해 상기 공개 키로 상기 디지털 서명의 상기 암호화된 메시지를 해독하고, 상기 디지털 서명과 연관된 상기 아키텍처 특정 프로그램에서 상기 소정 과정을 실행함으로서 테스트 메시지를 발생시키고, 상기 테스트 메시지를 상기 해독된 메시지와 비교하며, 상기 해독된 메시지 요약과 상기 테스트 메시지 요약이 일치하지 않는 경우 실패 신호를 송출함으로써, 특정 디지털 서명을 처리하는 논리를 포함하며,
    상기 프로그램 보안 논리는 상기 서명 파티가 신뢰된 파티의 제 1 그룹의 멤버인 제 1 디지털 서명 및 상기 서명 파티가 신뢰된 파티의 제 2 그룹의 멤버인 제 2 디지털 서명을 상기 요구된 목적 클래스의 모든 아키텍처 특정 프로그램이 포함하지 않는경우, 상기 신뢰된 목적 글래스 저장소내의 목적 클래스를 제외한 요구된 목적 클래스의 로딩을 막는 것을 특징으로 하는 컴퓨터.
  6. 제 1항에 있어서,
    상기 프로그램 보안 논리는 상기 요구된 목적 클래스내의 모든 아키텍처 특정 프로그램이 연관된 아키텍처 중간 프로그램에 대한 메시지 요약을 포함하지 않고 상기 메시지 요약이 상기 연관된 아키텍처 중간 프로그램의 소정의 메시지 요약 과정을 수행하여 상기 프로그램 보안 논리에 의해 발생되는 테스트 메시지요약과 매칭되지 않는경우, 상기 신뢰된 목적 클래스 저장소내의 목적 클래스를 제외한 요구된 목적 클래스의 로딩을 막는 것을 특징으로 하는 컴퓨터.
  7. 신뢰되지 않은 목적 클래스 저장소내에 신뢰되지 않은 목적 클래스를 저장하는 단계와;
    신뢰된 목적 클래스 저장소내에 신뢰된 목적 클래스를 저장하는 단계를 포함하는데,
    상기 목적 클래스 각각은 적어도 하나의 프로그램을 포함하며, 각 프로그램은 (A) 아키텍처 중간 언어로 작성된 아키텍처 중간 프로그램 및 (B) 아키텍처 특정 언어로 작성된 아키텍처 특정 프로그램으로 이루어진 그룹으로부터 선택된 프로그램을 가지며;
    상기 하나의 목적 클래스내의 임의의 프로그램에 대한 실행이 요구될 때, 상기 요구된 목적 클래스의 로딩이 보안 위배에 의해 차단되지 않는 경우, 실행을 위해 사용자 어드레스 공간으로 상기 요구된 목적 클래스를 로딩하는 단계를 포함하는데,
    상기 로딩단계는 상기 요구된 목적 클래스의 모든 아키텍처 특정 프로그램이 디지털 서명을 포함하지 않아서 상기 디지털 서명이 상기 디지털 서명 검사장치에 의해 성공적으로 검증되지 않는 경우, 상기 신뢰적인 목적 클래스 저장소 내의 목적 클래스를 제외하고, 적어도 하나의 아키텍처 특정 프로그램을 포함하는 임의의 요구된 목적 클래스의 로딩을 방지하는 단계를 포함하고,
    상기 목적 클래스 로딩 단계는 (A) 상기 요구된 목적 클래스가 상기 신뢰된목적 클래스 저장소내에 저장되지 않고 적어도 하나의 아키텍처 중간 프로그램을 포함할 때 상기 요구된 목적 클래스의 모든 아키텍처 중간 프로그램의 보전성을 검사하는 단계와, (B) 보전성이 검증되지 않은 적어도 하나의 아키텍처 중간 프로그램을 상기 요구된 목적 클래스가 포함할 때, 상기 요구된 목적 클래스가 상기 신뢰된 목적 클래스 저장소 내에 있지 않으면 상기 요구된 목적 클래스의 로딩을 막는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템을 동작시키기 위한 방법.
  8. 제 7항에 있어서,
    상기 목적 클래스 로딩단계는 상기 요청된 프로그램이 아키텍쳐 중간 프로그램이고 상기 요청된 목적 클래스의 로딩이 상기 프로그램 보안 논리에 의해 차단되지 않는 경우에는 상기 아키텍쳐 중간 프로그램 실행자에 의해 요청된 프로그램의 실행을 추가로 인에이블링 하고, 상기 요청된 프로그램이 아키텍쳐 특정 프로그램이고 요청된 목적 클래스의 로딩이 상기 프로그램 보안 논리에 의해 차단되지 않는 경우 상기 아키텍쳐 특정 프로그램 실행자에 의해 요청된 프로그램의 실행을 추가로 인에이블링하는 것을 포함하는 컴퓨터 시스템을 동작시키기 위한 방법.
  9. 제 7항에 있어서,
    상기 아키텍처 특정 프로그램중 하나와 연관되는 상기 각각의 디지털 서명은 서명 파티 식별자 및 암호화된 메시지를 포함하고, 상기 암호화된 메시지는 메시지 요약 함수를 사용하여 발생된 상기 아키텍처 특정 프로그램의 메시지 요약을 포함하며 상기 암호화된 메시지는 상기 식별된 서명 파티와 연관된 전용 암호화 키를 사용하여 암호화되며,
    상기 목적 클래스 로딩 단계는 상기 서명 파티 식별자에 의해 식별된 상기 서명 파티와 연관된 공개 키를 구하고, 해독된 메시지 요약을 발생시키기 위해 상기 공개 키로 상기 디지털 서명의 암호화된 메시지를 해독하고, 상기 디지털 서명과 연관된 상기 아키텍처 특정 프로그램에서 상기 메시지 요약 함수를 실행함으로써 테스트 메시지 요약을 발생하고, 상기 테스트 메시지 요약을 상기 해독된 메시지 요약과 비교하고, 상기 해독된 메시지 요약과 테스트 메시지 요약이 매칭되지 않는 경우 실패신호를 발생하여, 특정 디지털 서명을 처리하는 것을 특징으로 하는 컴퓨터 시스템을 동작시키기 위한 방법.
  10. 제 7항에 있어서,
    상기 아키텍처 특정 프로그램 중 하나와 연관되는 상기 각각의 디지털 서명은 서명 파티 식별자 및 암호화된 메시지를 포함하고, 상기 암호화된 메시지는 소정 과정에 의해 발생된 메시지를 포함하고, 여기서 상기 암호화된 메시지는 상기 식별된 서명 파티와 연관된 전용 암호화 키를 사용하여 암호화되며,
    상기 목적 클래스 로딩단계는 상기 서명 파티 식별자에 의해 식별되는 상기 서명 파티와 연관된 공개 키를 구하고, 해독된 메시지를 발생시키기 위해 상기 공개 키로 상기 디지털 서명의 상기 암호화된 메시지를 해독하고, 상기 디지털 서명과 연관된 상기 아키텍처 특정 프로그램에서 상기 소정 과정을 실행함으로서 테스트 메시지를 발생시키고, 상기 테스트 메시지를 상기 해독된 메시지와 비교하며, 상기 해독된 메시지와 테스트 메시지가 매칭되지 않는 경우 실패신호를 송출함으로써, 상기 특정 디지털 서명을 처리하는 것을 포함하는 것을 특징으로 하는 컴퓨터 시스템을 동작시키기 위한 방법.
  11. 제 7항에 있어서,
    상기 목적 클래스 로딩 단계는 상기 요구된 목적 클래스의 모든 아키텍처 특정 프로그램이 2개 디지털 서명을 포함하지 않고 상기 디지털 서명이 상기 디지털 서명 검사장치에 의해 둘 다 성공적으로 검증되지 않는경우, 적어도 하나의 아키텍처 특정 프로그램을 포함하는 상기 신뢰된 목적 클래스 저장소내의 목적 클래스를 제외한 임의의 요구된 목적 클래스의 로딩을 막는 단계를 포함하고,
    상기 아키텍처 특정 프로그램중 하나와 연관된 상기 각각의 디지털 서명은 서명 파티 식별자 및 암호화된 메시지를 포함하고, 상기 암호화된 메시지는 소정과정에 의해 발생된 메시지를 포함하며 상기 암호화된 메시지는 상기 식별된 서명 파티와 연관된 전용 암호화 키를 사용하여 암호화되고,
    상기 목적 클래스 로딩 단계는 상기 서명 파티 식별자에 의해 식별된 상기 서명 파티와 연관된 공중 키를 구하고, 해독된 메시지 요약을 발생시키기 위해 상기 공개 키로 상기 디지털 서명의 암호화된 메시지를 해독하고, 상기 디지털 서명과 연관된 상기 아키텍처 특정 프로그램으로 상기 소정 과정을 실행함으로써 테스트 메시지 요약을 발생하고, 상기 테스트 메시지를 상기 해독된 메시지와 비교하며, 상기 해독된 메시지 요약과 테스트 메시지 요약이 일치하지 않는 경우 실패신호를 발생하여, 특정 디지털 서명을 처리하는 단계를 포함하고,
    상기 목적 클래스 로딩 단계는 상기 서명 파티가 신뢰된 파티의 제 1 그룹의 멤버인 제 1 디지털 서명 및 상기 서명 파티가 신뢰된 파티의 제 2 그룹의 멤버인 제 2 디지털 서명을 상기 요구된 목적 클래스의 모든 아키텍처 특정 프로그램이 포글하지 않는 경우, 상기 신뢰된 목적 클래스 저장소의 목적 클래스를 제외한 요구된 목적 클래스의 로딩을 막는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템을 동작시키기 위한 방법.
  12. 제 7항에 있어서,
    상기 목적 클래스 로딩 단계는 상기 요구된 목적 클래스의 모든 아키텍처 특정 프로그램이 연관된 아키텍처 중간 프로그램에 대한 메시지 요약을 포함하지 않고 상기 메시지 요약이 상기 연관된 아키텍처 중간 프로그램에서 소정의 메시지 요약 과정을 수행함으로써 상기 프로그램 보안 논리에 의해 발생되는 테스트 메시지 요약과 매칭되지 않는경우, 상기 신뢰된 목적 클래스 저장소내의 목적 클래스를 제외한 상기 요구된 목적 클래스의 로딩을 막는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템을 동작시키기 위한 방법.
  13. 데이터 처리 시스템상에서 실행되는 데이터 프로그램을 저장하기 위한 메모리에 있어서,
    아키텍처 중간 언어로 작성된 프로그램이 소정의 프로그램 보전성 기준에 만족하는지를 검사하는 프로그램 보전성 검사장치와;
    상기 프로그램에 포함되는 프로그램의 원시 파티에 대한 디지털 서명을 검사하는 디지털 서명 검사장치와;
    신뢰되지 않은 목적 클래스를 저장하는 신뢰되지 않은 목적 클래스 저장소와;
    신뢰된 목적 클래스를 저장하는 신뢰된 목적 클래스 저장소를 포함하는데,
    상기 목적 클래스 각각은 적어도 하나의 프로그램을 포함하고, 각 프로그램은 (A) 상기 아키텍처 중간 언어로 작성된 아키텍처 중간 프로그램 및 (B) 보전성이 상기 보전성 검사장치에 의해 검사될 수 없는 아키텍처 특정 언어로 작성된 아키텍처 특정 프로그램으로 이루어진 그룹으로부터 선택된 프로그램을 가지며;
    아키텍처 특정 프로그램 실행자와;
    아키텍처 중간 프로그램 실행자와;
    상기 하나의 목적 클래스의 임의의 프로그램에 대한 실행이 요구될 때 실행을 위해 상기 사용자 어드레스 공간내에 상기 목적 클래스중 특정 목적 클래스를 로딩하는 클래스 로더를 포함하는데,
    상기 클래스 로더는 상기 요구된 목적 클래스의 모든 아키텍처 특정 프로그램이 디지털 서명을 포함하지 않으며 상기 디지털 서명이 상기 디지털 서명 검사장치에 의해 성공적으로 검증되지 않는 경우, 적어도 하나의 아키텍처 특정 프로그램을 포함하는 상기 신뢰된 목적 클래스 저장소내의 목적 클래스를 제외한 임의의 요구된 목적 클래스의 로딩을 막는 프로그램 보안 논리를 포함하고,
    상기 클래스 로더는 상기 요구된 목적 클래스가 상기 신뢰된 목적 클래스 저장소에 저장되지 않고 적어도 하나의 아키텍처 중간 프로그램을 포함할 때, 상기 요구된 목적 클래스의 모든 아키텍처 중간 프로그램의 보전성을 검사하기 위해 상기 프로그램 보전성 검사장치를 호출하는 검사장치 명령을 포함하고;
    상기 프로그램 보안 명령은 보전성이 상기 프로그램 보전성 검사장치에 의해 검사되지 않는 적어도 하나의 아키텍처 중간 프로그램을 상기 요구된 목적 클래스가 포함할 때, 상기 신뢰된 목적 클래스 저장소내의 목적 클래스를 제외한 상기 임의의 요구된 목적 클래스의 로딩을 추가적으로 막는 것을 특징으로 하는 메모리.
  14. 제 13항에 있어서,
    상기 클래스로더는 상기 요청된 프로그램이 아키텍쳐 중간 프로그램이고 상기 요청된 목적 클래스의 로딩이 상기 프로그램 보안 명령에 의해 차단되지 않는 경우에는 상기 아키텍쳐 중간 프로그램 실행자에 의해 요청된 프로그램의 실행을 추가로 인에이블링 하고, 상기 요청된 프로그램이 아키텍쳐 특정 프로그램이고 요청된 목적 클래스의 로딩이 상기 프로그램 보안 명령에 의해 차단되지 않는 경우 상기 아키텍쳐 특정 프로그램 실행자에 의해 요청된 프로그램의 실행을 추가로 인에이블링하는 메모리.
  15. 제 13항에 있어서,
    상기 아키텍처 특정 프로그램 중 하나와 연관되는 상기 각각의 디지털 서명은 서명 파티 식별자 및 암호화된 메시지를 포함하고, 상기 암호화된 메시지는 메시지 요약(digest) 함수를 사용하여 발생되는 아키텍처 특정 프로그램의 메시지 요약을 포함하며, 여기서 상기 암호화된 메시지는 상기 식별된 서명 파티와 연관된 전용 암호화 키를 사용하여 암호화되며,
    상기 디지털 서명 검사장치는 상기 서명 파티 식별자에 의해 식별되는 상기 서명 파티와 연관된 공개 키를 구하고, 해독된 메시지 요약을 발생시키기 위해 상기 공개 키로 상기 디지털 서명의 상기 암호화된 메시지를 해독하고, 상기 디지털 서명과 연관된 상기 아키텍처 특정 프로그램에서 상기 메시지 요약 함수를 실행함으로서 테스트 메시지 요약을 발생시키고, 상기 테스트 메시지 요약을 상기 해독된 메시지 요약과 비교하며, 상기 해독된 메시지 요약과 테스트 메시지 요약이 매칭되지 않는 경우 실패신호를 송출함으로써, 상기 특정 디지털 서명을 처리하는 명령을 포함하는 것을 특징으로 하는 메모리.
  16. 제 13항에 있어서,
    상기 아키텍처 특정 프로그램 중 하나와 연관되는 상기 각각의 디지털 서명은 서명 파티 식별자 및 암호화된 메시지를 포함하고, 상기 암호화된 메시지는 소정 과정에 의해 발생되는 메시지를 포함하며, 여기서 상기 암호화된 메시지는 상기 식별된 서명 파티와 연관된 전용 암호화 키를 사용하여 암호화되며,
    상기 디지털 서명 검사장치는 상기 서명 파티 식별자에 의해 식별되는 상기서명 파티와 연관된 공개 키를 구하고, 해독된 메시지를 발생시키기 위해 상기 공개 키로 상기 디지털 서명의 상기 암호화된 메시지를 해독하고, 상기 디지털 서명과 연관된 상기 아키텍처 특정 프로그램에서 상기 소정 과정을 실행함으로서 테스트 메시지를 발생시키고, 상기 테스트 메시지를 상기 해독된 메시지와 비교하며, 상기 해독된 메시지 요약과 테스트 메시지 요약이 매칭되지 않는 경우 실패신호를 송출함으로써, 상기 특정 디지털 서명을 처리하는 명령을 포함하는 것을 특징으로 하는 메모리.
  17. 제 13항에 있어서,
    상기 프로그램 보안 명령은 요구된 목적 클래스의 모든 아키텍처 특정 프로그램이 2개의 디지털 서명을 포함하지 않고 상기 디지털 서명이 상기 디지털 서명 검사장치에 의해 둘 다 성공적으로 검증되지 않는 경우, 적어도 하나의 아키텍처 특정 프로그램을 포함하는 상기 신뢰된 목적 클래스 저장소내의 목적 클래스를 제외한 임의의 요구된 목적 클래스의 로딩을 추가적으로 막고,
    상기 아키텍처 특정 프로그램 중 하나와 연관되는 상기 각각의 디지털 서명은 서명 파티 식별자 및 암호화된 메시지를 포함하고, 상기 암호화된 메시지는 소정 과정에 의해 발생되는 메시지를 포함하며, 상기 암호화된 메시지는 상기 식별된 서명 파티와 연관된 전용 암호화 키를 사용하여 암호화되며,
    상기 디지털 서명 검사장치는 상기 서명 파티 식별자에 의해 식별되는 상기 서명 파티와 연관된 공개 키를 구하고, 해독된 메시지를 발생시키기 위해 상기 공개 키로 상기 디지털 서명의 상기 암호화된 메시지를 해독하고, 상기 디지털 서명과 연관된 상기 아키텍처 특정 프로그램에서 상기 소정 과정을 실행함으로서 테스트 메시지를 발생시키고, 상기 테스트 메시지를 상기 해독된 메시지와 비교하며, 상기 해독된 메시지 요약과 상기 테스트 메시지 요약이 일치하지 않는 경우 실패 신호를 송출함으로써, 특정 디지털 서명을 처리하는 명령을 포함하며,
    상기 프로그램 보안 명령은 상기 서명 파티가 신뢰된 파티의 제 1 그룹의 멤버인 제 1 디지털 서명 및 상기 서명 파티가 신뢰된 파티의 제 2 그룹의 멤버인 제 2 디지털 서명을 상기 요구된 목적 클래스의 모든 아키텍처 특정 프로그램이 포함하지 않는경우, 상기 신뢰된 목적 클래스 저장소내의 목적 클래스를 제외한 요구된 목적 클래스의 로딩을 막는 것을 특징으로 하는 메모리.
  18. 제 13항에 있어서,
    상기 프로그램 보안 명령은 상기 요구된 목적 클래스내의 모든 아키텍처 특정 프로그램이 연관된 아키텍처 중간 프로그램에 대한 메시지 요약을 포함하지 않고 상기 메시지 요약이 상기 연관된 아키텍처 중간 프로그램에서 소정의 메시지 요약 과정을 수행하여 상기 프로그램 보안 명령에 의해 발생되는 테스트 메시지 요약과 매칭되지 않는경우, 상기 신뢰된 목적 클래스 저장소내의 목적 클래스를 제외한 요구된 목적 클래스의 로딩을 막는 것을 특징으로 하는 메모리.
KR1019960062293A 1995-12-08 1996-12-06 신뢰된소오스로부터의검사불가능한프로그램을사용하는장치로검사가능한프로그램을실행하기위한시스템및방법 KR100433319B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/569,398 US5692047A (en) 1995-12-08 1995-12-08 System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources
US08/569,398 1995-12-08

Publications (2)

Publication Number Publication Date
KR970049730A KR970049730A (ko) 1997-07-29
KR100433319B1 true KR100433319B1 (ko) 2004-08-09

Family

ID=24275287

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960062293A KR100433319B1 (ko) 1995-12-08 1996-12-06 신뢰된소오스로부터의검사불가능한프로그램을사용하는장치로검사가능한프로그램을실행하기위한시스템및방법

Country Status (11)

Country Link
US (2) US5692047A (ko)
EP (1) EP0778520B1 (ko)
JP (1) JP4112033B2 (ko)
KR (1) KR100433319B1 (ko)
CN (1) CN1097771C (ko)
AU (1) AU717615B2 (ko)
CA (1) CA2190556A1 (ko)
DE (1) DE69634684T2 (ko)
HK (1) HK1000846A1 (ko)
SG (1) SG75108A1 (ko)
TW (1) TW355768B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100752067B1 (ko) * 2000-07-25 2007-08-28 메크로비젼 코오포레이션 동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법
KR101691600B1 (ko) * 2016-04-28 2017-01-02 지티원 주식회사 공통 구조 변환 기반 프로그램 분석 방법 및 장치

Families Citing this family (213)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10361802B1 (en) 1999-02-01 2019-07-23 Blanding Hovenweep, Llc Adaptive pattern recognition based control system and method
US7162635B2 (en) * 1995-01-17 2007-01-09 Eoriginal, Inc. System and method for electronic transmission, storage, and retrieval of authenticated electronic original documents
US7743248B2 (en) * 1995-01-17 2010-06-22 Eoriginal, Inc. System and method for a remote access service enabling trust and interoperability when retrieving certificate status from multiple certification authority reporting components
US6237096B1 (en) * 1995-01-17 2001-05-22 Eoriginal Inc. System and method for electronic transmission storage and retrieval of authenticated documents
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6948070B1 (en) 1995-02-13 2005-09-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
CN1183841A (zh) 1995-02-13 1998-06-03 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US7133846B1 (en) 1995-02-13 2006-11-07 Intertrust Technologies Corp. Digital certificate support system, methods and techniques for secure electronic commerce transaction and rights management
US20120166807A1 (en) 1996-08-12 2012-06-28 Intertrust Technologies Corp. Systems and Methods Using Cryptography to Protect Secure Computing Environments
US6658568B1 (en) 1995-02-13 2003-12-02 Intertrust Technologies Corporation Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management
US5943422A (en) 1996-08-12 1999-08-24 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
WO1996038795A1 (en) * 1995-05-30 1996-12-05 Corporation For National Research Initiatives System for distributed task execution
FR2742245B1 (fr) * 1995-12-08 1998-01-23 Transtar Procede de manipulation de modeles de donnees utilises en genie logiciel
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
US6075863A (en) * 1996-02-28 2000-06-13 Encanto Networks Intelligent communication device
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6247026B1 (en) 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6282652B1 (en) 1998-02-26 2001-08-28 Sun Microsystems, Inc. System for separately designating security requirements for methods invoked on a computer
US6560656B1 (en) 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6237024B1 (en) 1998-03-20 2001-05-22 Sun Microsystem, Inc. Method and apparatus for the suspension and continuation of remote processes
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US5978484A (en) * 1996-04-25 1999-11-02 Microsoft Corporation System and method for safety distributing executable objects
US5794049A (en) * 1996-06-05 1998-08-11 Sun Microsystems, Inc. Computer system and method for executing architecture specific code with reduced run-time memory space requirements
US6161121A (en) * 1996-07-01 2000-12-12 Sun Microsystems, Inc. Generic transfer of exclusive rights
US5987123A (en) * 1996-07-03 1999-11-16 Sun Microsystems, Incorporated Secure file system
AU2003203649B2 (en) * 1996-08-12 2006-03-02 Intertrust Technologies Corporation Systems and methods using cryptography to protect secure computing environments
AU2004240210B2 (en) * 1996-08-12 2008-03-06 Intertrust Technologies Corporation Systems and methods using cryptography to protect secure computing environments
US7590853B1 (en) * 1996-08-12 2009-09-15 Intertrust Technologies Corporation Systems and methods using cryptography to protect secure computing environments
US6089460A (en) * 1996-09-13 2000-07-18 Nippon Steel Corporation Semiconductor device with security protection function, ciphering and deciphering method thereof, and storage medium for storing software therefor
US6857099B1 (en) 1996-09-18 2005-02-15 Nippon Steel Corporation Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program
US5958050A (en) * 1996-09-24 1999-09-28 Electric Communities Trusted delegation system
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US5944823A (en) * 1996-10-21 1999-08-31 International Business Machines Corporations Outside access to computer resources through a firewall
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US8079086B1 (en) * 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US6167520A (en) 1996-11-08 2000-12-26 Finjan Software, Inc. System and method for protecting a client during runtime from hostile downloadables
US6154844A (en) * 1996-11-08 2000-11-28 Finjan Software, Ltd. System and method for attaching a downloadable security profile to a downloadable
US7058822B2 (en) * 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US7613926B2 (en) * 1997-11-06 2009-11-03 Finjan Software, Ltd Method and system for protecting a computer and a network from hostile downloadables
US5937193A (en) * 1996-11-27 1999-08-10 Vlsi Technology, Inc. Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof
US6367012B1 (en) * 1996-12-06 2002-04-02 Microsoft Corporation Embedding certifications in executable files for network transmission
US6148401A (en) * 1997-02-05 2000-11-14 At&T Corp. System and method for providing assurance to a host that a piece of software possesses a particular property
US5915085A (en) * 1997-02-28 1999-06-22 International Business Machines Corporation Multiple resource or security contexts in a multithreaded application
US5905895A (en) * 1997-03-07 1999-05-18 International Business Machines Corporation Method and system for optimizing non-native bytecodes before bytecode interpretation
US5946493A (en) * 1997-03-28 1999-08-31 International Business Machines Corporation Method and system in a data processing system for association of source code instructions with an optimized listing of object code instructions
US6167522A (en) * 1997-04-01 2000-12-26 Sun Microsystems, Inc. Method and apparatus for providing security for servers executing application programs received via a network
US6381698B1 (en) 1997-05-21 2002-04-30 At&T Corp System and method for providing assurance to a host that a piece of software possesses a particular property
IL133024A (en) * 1997-05-29 2003-11-23 Sun Microsystems Inc Method and apparatus for signing and sealing objects
US6175924B1 (en) 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US6065046A (en) * 1997-07-29 2000-05-16 Catharon Productions, Inc. Computerized system and associated method of optimally controlled storage and transfer of computer programs on a computer network
US6182279B1 (en) 1997-08-12 2001-01-30 International Business Machines Corporation Method and apparatus for storing templates in a component system
US6195794B1 (en) 1997-08-12 2001-02-27 International Business Machines Corporation Method and apparatus for distributing templates in a component system
US5970252A (en) * 1997-08-12 1999-10-19 International Business Machines Corporation Method and apparatus for loading components in a component system
US6093215A (en) * 1997-08-12 2000-07-25 International Business Machines Corporation Method and apparatus for building templates in a component system
US5978579A (en) * 1997-08-12 1999-11-02 International Business Machines Corporation Architecture for customizable component system
US6009524A (en) * 1997-08-29 1999-12-28 Compact Computer Corp Method for the secure remote flashing of a BIOS memory
US6397331B1 (en) * 1997-09-16 2002-05-28 Safenet, Inc. Method for expanding secure kernel program memory
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US6128774A (en) * 1997-10-28 2000-10-03 Necula; George C. Safe to execute verification of software
US7975305B2 (en) * 1997-11-06 2011-07-05 Finjan, Inc. Method and system for adaptive rule-based content scanners for desktop computers
US8225408B2 (en) * 1997-11-06 2012-07-17 Finjan, Inc. Method and system for adaptive rule-based content scanners
US7418731B2 (en) * 1997-11-06 2008-08-26 Finjan Software, Ltd. Method and system for caching at secure gateways
IL122314A (en) * 1997-11-27 2001-03-19 Security 7 Software Ltd Method and system for enforcing a communication security policy
US6334189B1 (en) * 1997-12-05 2001-12-25 Jamama, Llc Use of pseudocode to protect software from unauthorized use
US6044467A (en) * 1997-12-11 2000-03-28 Sun Microsystems, Inc. Secure class resolution, loading and definition
US6418444B1 (en) 1997-12-11 2002-07-09 Sun Microsystems, Inc. Method and apparatus for selective excution of a computer program
ATE216095T1 (de) 1998-01-16 2002-04-15 Macrovision Corp System und verfahren zur beglaubigung gleichrangiger komponenten
US7268700B1 (en) 1998-01-27 2007-09-11 Hoffberg Steven M Mobile communication device
CN1298514A (zh) 1998-02-26 2001-06-06 太阳微系统公司 确定性散列识别远程方法的方法和系统
AU2680399A (en) * 1998-02-26 1999-09-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
EP0981789A1 (en) * 1998-03-13 2000-03-01 2way Corporation Method and apparatus for publishing documents in a protected environment
US5999732A (en) * 1998-03-23 1999-12-07 Sun Microsystems, Inc. Techniques for reducing the cost of dynamic class initialization checks in compiled code
US6684332B1 (en) 1998-06-10 2004-01-27 International Business Machines Corporation Method and system for the exchange of digitally signed objects over an insecure network
AU4568299A (en) * 1998-06-15 2000-01-05 Dmw Worldwide, Inc. Method and apparatus for assessing the security of a computer system
US6131165A (en) * 1998-06-18 2000-10-10 Sun Microsystems, Inc. Permit for controlling access to services in protected memory systems
US6792606B2 (en) 1998-07-17 2004-09-14 International Business Machines Corporation Method and apparatus for object persistence
US6223287B1 (en) 1998-07-24 2001-04-24 International Business Machines Corporation Method for establishing a secured communication channel over the internet
US6735696B1 (en) * 1998-08-14 2004-05-11 Intel Corporation Digital content protection using a secure booting method and apparatus
US6202201B1 (en) 1998-09-23 2001-03-13 Netcreate Systems, Inc. Text object compilation method and system
US6154842A (en) * 1998-10-13 2000-11-28 Motorola, Inc. Method and system for reducing time and power requirements for executing computer-readable instruction streams in an execution environment having run-time security constraints
US6802006B1 (en) * 1999-01-15 2004-10-05 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
US6880155B2 (en) 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
AU3993500A (en) * 1999-03-31 2000-10-16 Telefonaktiebolaget Lm Ericsson (Publ) Distribution of service execution environments with respect to a centralized service supplier environment
WO2000060466A1 (en) * 1999-04-05 2000-10-12 Manage.Com Management agent and system including the same
US6748580B1 (en) 1999-04-22 2004-06-08 International Business Machines Corporation Method and apparatus for creating software tools using a JTML interface
US6782478B1 (en) 1999-04-28 2004-08-24 Thomas Probert Techniques for encoding information in computer code
US7421586B2 (en) * 1999-05-12 2008-09-02 Fraunhofer Gesselschaft Protecting mobile code against malicious hosts
WO2000072149A1 (en) * 1999-05-25 2000-11-30 Motorola Inc. Pre-verification of applications in mobile computing
US6681329B1 (en) * 1999-06-25 2004-01-20 International Business Machines Corporation Integrity checking of a relocated executable module loaded within memory
US6658567B1 (en) * 1999-06-25 2003-12-02 Geomechanics International, Inc. Method and logic for locking geological data and an analyzer program that analyzes the geological data
US7650504B2 (en) * 1999-07-22 2010-01-19 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
US7243236B1 (en) * 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
ATE306098T1 (de) 1999-07-30 2005-10-15 Intertrust Tech Corp Verfahren und systeme zur transaktionsaufzeichnungsübertragung unter anwendung von schwellen und einem mehrstufigen protokoll
US6675298B1 (en) * 1999-08-18 2004-01-06 Sun Microsystems, Inc. Execution of instructions using op code lengths longer than standard op code lengths to encode data
US7406603B1 (en) 1999-08-31 2008-07-29 Intertrust Technologies Corp. Data protection systems and methods
US7353541B1 (en) * 1999-09-07 2008-04-01 Sony Corporation Systems and methods for content distribution using one or more distribution keys
US6985885B1 (en) 1999-09-21 2006-01-10 Intertrust Technologies Corp. Systems and methods for pricing and selling digital goods
US6684387B1 (en) 1999-09-23 2004-01-27 International Business Machines Corporation Method and apparatus for verifying Enterprise Java Beans
US6748538B1 (en) * 1999-11-03 2004-06-08 Intel Corporation Integrity scanner
US7158993B1 (en) 1999-11-12 2007-01-02 Sun Microsystems, Inc. API representation enabling submerged hierarchy
US6976258B1 (en) 1999-11-30 2005-12-13 Ensim Corporation Providing quality of service guarantees to virtual hosts
FI111567B (fi) * 1999-12-27 2003-08-15 Nokia Corp Menetelmä ohjelmamoduulin lataamiseksi
JP2001195247A (ja) * 2000-01-07 2001-07-19 Nec Corp ソフトウェアの安全性を検証し保証するシステム及び方法
US6529985B1 (en) 2000-02-04 2003-03-04 Ensim Corporation Selective interception of system calls
US6711607B1 (en) 2000-02-04 2004-03-23 Ensim Corporation Dynamic scheduling of task streams in a multiple-resource system to ensure task stream quality of service
US6560613B1 (en) 2000-02-08 2003-05-06 Ensim Corporation Disambiguating file descriptors
US6754716B1 (en) 2000-02-11 2004-06-22 Ensim Corporation Restricting communication between network devices on a common network
US7343421B1 (en) 2000-02-14 2008-03-11 Digital Asset Enterprises Llc Restricting communication of selected processes to a set of specific network addresses
US6745386B1 (en) * 2000-03-09 2004-06-01 Sun Microsystems, Inc. System and method for preloading classes in a data processing device that does not have a virtual memory manager
US6948003B1 (en) 2000-03-15 2005-09-20 Ensim Corporation Enabling a service provider to provide intranet services
US6651186B1 (en) 2000-04-28 2003-11-18 Sun Microsystems, Inc. Remote incremental program verification using API definitions
US6883163B1 (en) 2000-04-28 2005-04-19 Sun Microsystems, Inc. Populating resource-constrained devices with content verified using API definitions
US6986132B1 (en) 2000-04-28 2006-01-10 Sun Microsytems, Inc. Remote incremental program binary compatibility verification using API definitions
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US6985937B1 (en) 2000-05-11 2006-01-10 Ensim Corporation Dynamically modifying the resources of a virtual server
US6907421B1 (en) 2000-05-16 2005-06-14 Ensim Corporation Regulating file access rates according to file type
US6934755B1 (en) 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
US6922782B1 (en) * 2000-06-15 2005-07-26 International Business Machines Corporation Apparatus and method for ensuring data integrity of unauthenticated code
US7124408B1 (en) * 2000-06-28 2006-10-17 Microsoft Corporation Binding by hash
US7117371B1 (en) 2000-06-28 2006-10-03 Microsoft Corporation Shared names
US7143024B1 (en) 2000-07-07 2006-11-28 Ensim Corporation Associating identifiers with virtual processes
US7552333B2 (en) * 2000-08-04 2009-06-23 First Data Corporation Trusted authentication digital signature (tads) system
WO2002013445A2 (en) * 2000-08-04 2002-02-14 First Data Corporation Linking public key of device to information during manufacture
US6909691B1 (en) 2000-08-07 2005-06-21 Ensim Corporation Fairly partitioning resources while limiting the maximum fair share
US7032114B1 (en) * 2000-08-30 2006-04-18 Symantec Corporation System and method for using signatures to detect computer intrusions
AU9084201A (en) * 2000-09-14 2002-03-26 Sun Microsystems Inc Remote incremental program binary compatibility verification using api definitions
US6981245B1 (en) 2000-09-14 2005-12-27 Sun Microsystems, Inc. Populating binary compatible resource-constrained devices with content verified using API definitions
US6732211B1 (en) 2000-09-18 2004-05-04 Ensim Corporation Intercepting I/O multiplexing operations involving cross-domain file descriptor sets
US6964039B2 (en) * 2000-12-13 2005-11-08 Esmertec Ag Method to create optimized machine code through combined verification and translation of JAVA™ bytecode
US7219354B1 (en) 2000-12-22 2007-05-15 Ensim Corporation Virtualizing super-user privileges for multiple virtual processes
FR2819602B1 (fr) * 2001-01-12 2003-02-21 Gemplus Card Int Procede de gestion d'applications informatiques par le systeme d'exploitation d'un systeme informatique multi-applications
EP1233333A1 (en) * 2001-02-19 2002-08-21 Hewlett-Packard Company Process for executing a downloadable service receiving restrictive access rights to al least one profile file
US6618736B1 (en) 2001-03-09 2003-09-09 Ensim Corporation Template-based creation and archival of file systems
US7181017B1 (en) 2001-03-23 2007-02-20 David Felsher System and method for secure three-party communications
US6978451B2 (en) * 2001-05-31 2005-12-20 Esmertec Ag Method for fast compilation of preverified JAVA bytecode to high quality native machine code
DE10131395B4 (de) * 2001-06-28 2006-08-17 Daimlerchrysler Ag Verfahren zum Übertragen von Software- Modulen
US7237121B2 (en) * 2001-09-17 2007-06-26 Texas Instruments Incorporated Secure bootloader for securing digital devices
GB0121064D0 (en) 2001-08-31 2001-10-24 Transitive Technologies Ltd Obtaining translation of generic code representation
US7660887B2 (en) 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US20030050981A1 (en) * 2001-09-13 2003-03-13 International Business Machines Corporation Method, apparatus, and program to forward and verify multiple digital signatures in electronic mail
US7143313B2 (en) 2001-11-09 2006-11-28 Sun Microsystems, Inc. Support interface module bug submitter
US7266731B2 (en) 2001-11-13 2007-09-04 Sun Microsystems, Inc. Method and apparatus for managing remote software code update
US7146500B2 (en) * 2001-11-14 2006-12-05 Compass Technology Management, Inc. System for obtaining signatures on a single authoritative copy of an electronic record
US7496757B2 (en) * 2002-01-14 2009-02-24 International Business Machines Corporation Software verification system, method and computer program element
US7240213B1 (en) * 2002-03-15 2007-07-03 Waters Edge Consulting, Llc. System trustworthiness tool and methodology
US20030188180A1 (en) * 2002-03-28 2003-10-02 Overney Gregor T. Secure file verification station for ensuring data integrity
US20070118899A1 (en) * 2002-05-17 2007-05-24 Satyam Computer Services Limited Of Mayfair Centre System and method for automated safe reprogramming of software radios
US20030216927A1 (en) * 2002-05-17 2003-11-20 V. Sridhar System and method for automated safe reprogramming of software radios
WO2004023313A1 (en) * 2002-09-04 2004-03-18 Fraunhofer Crcg, Inc. Protecting mobile code against malicious hosts cross references to related applications
US9818136B1 (en) 2003-02-05 2017-11-14 Steven M. Hoffberg System and method for determining contingent relevance
US6965968B1 (en) 2003-02-27 2005-11-15 Finjan Software Ltd. Policy-based caching
US9781154B1 (en) 2003-04-01 2017-10-03 Oracle International Corporation Systems and methods for supporting information security and sub-system operational protocol conformance
US10275723B2 (en) * 2005-09-14 2019-04-30 Oracle International Corporation Policy enforcement via attestations
US10063523B2 (en) * 2005-09-14 2018-08-28 Oracle International Corporation Crafted identities
US8468330B1 (en) 2003-06-30 2013-06-18 Oracle International Corporation Methods, systems, and data structures for loading and authenticating a module
GB0318197D0 (en) * 2003-08-02 2003-09-03 Koninkl Philips Electronics Nv Copy-protecting applications in a digital broadcasting system
GB0318198D0 (en) * 2003-08-02 2003-09-03 Koninkl Philips Electronics Nv Copy-protected application for digital broadcasting system
US7263690B1 (en) * 2003-11-14 2007-08-28 Sun Microsystems, Inc. Mechanism for safe byte code in a tracing framework
US7516331B2 (en) * 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same
EP1538509A1 (fr) * 2003-12-04 2005-06-08 Axalto S.A. Procédé de sécurisation de l'éxécution d'un programme contre des attaques par rayonnement
US7287243B2 (en) * 2004-01-06 2007-10-23 Hewlett-Packard Development Company, L.P. Code verification system and method
US7752453B2 (en) 2004-01-08 2010-07-06 Encryption Solutions, Inc. Method of encrypting and transmitting data and system for transmitting encrypted data
US8031865B2 (en) * 2004-01-08 2011-10-04 Encryption Solutions, Inc. Multiple level security system and method for encrypting data within documents
US7526643B2 (en) * 2004-01-08 2009-04-28 Encryption Solutions, Inc. System for transmitting encrypted data
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7500108B2 (en) 2004-03-01 2009-03-03 Microsoft Corporation Metered execution of code
US7493596B2 (en) * 2004-06-30 2009-02-17 International Business Machines Corporation Method, system and program product for determining java software code plagiarism and infringement
US7539975B2 (en) * 2004-06-30 2009-05-26 International Business Machines Corporation Method, system and product for determining standard Java objects
US7647581B2 (en) * 2004-06-30 2010-01-12 International Business Machines Corporation Evaluating java objects across different virtual machine vendors
US7590589B2 (en) 2004-09-10 2009-09-15 Hoffberg Steven M Game theoretic prioritization scheme for mobile ad hoc networks permitting hierarchal deference
US8312431B1 (en) * 2004-09-17 2012-11-13 Oracle America, Inc. System and computer readable medium for verifying access to signed ELF objects
CN101065716A (zh) 2004-11-22 2007-10-31 诺基亚公司 用于验证电子设备的平台软件的完整性的方法和设备
JP4727278B2 (ja) * 2005-04-05 2011-07-20 株式会社エヌ・ティ・ティ・ドコモ アプリケーションプログラム検証システム、アプリケーションプログラム検証方法およびコンピュータプログラム
US8375369B2 (en) * 2005-04-26 2013-02-12 Apple Inc. Run-time code injection to perform checks
US8838974B2 (en) * 2005-07-15 2014-09-16 The Mathworks, Inc. System and method for verifying the integrity of read-only components in deployed mixed-mode applications
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
JP4537940B2 (ja) * 2005-11-21 2010-09-08 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、及びプログラム実行制御方法
US8250559B2 (en) * 2006-04-12 2012-08-21 Oracle America, Inc. Supporting per-program classpaths with class sharing in a multi-tasking virtual machine
KR100728517B1 (ko) * 2006-12-28 2007-06-15 메크로비젼 코오포레이션 동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법
CN101226569A (zh) * 2007-01-19 2008-07-23 国际商业机器公司 在虚拟机中验证代码模块的方法及装置
US9122864B2 (en) * 2008-08-05 2015-09-01 International Business Machines Corporation Method and apparatus for transitive program verification
US8301903B2 (en) * 2009-02-27 2012-10-30 Research In Motion Limited Low-level code signing mechanism
US9117071B2 (en) 2009-06-03 2015-08-25 Apple Inc. Methods and apparatuses for secure compilation
US8677329B2 (en) * 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
CN102598017B (zh) * 2009-11-13 2016-03-09 爱迪德技术有限公司 提高Java字节码的防窜改能力的系统和方法
US8782435B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
CN104054084B (zh) 2011-10-17 2017-07-28 英特托拉斯技术公司 用于保护和管理基因组及其它信息的系统和方法
US9015680B1 (en) * 2012-02-24 2015-04-21 Google Inc. Differential analysis of translation of software for the detection of flaws
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US10001978B2 (en) * 2015-11-11 2018-06-19 Oracle International Corporation Type inference optimization
CN111770206B (zh) * 2020-08-31 2020-12-29 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质
US11809839B2 (en) 2022-01-18 2023-11-07 Robert Lyden Computer language and code for application development and electronic and optical communication

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05334073A (ja) * 1992-02-12 1993-12-17 Internatl Business Mach Corp <Ibm> ユーザ定義機能機構

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5224160A (en) * 1987-02-23 1993-06-29 Siemens Nixdorf Informationssysteme Ag Process for securing and for checking the integrity of the secured programs
US4868877A (en) * 1988-02-12 1989-09-19 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
GB8901932D0 (en) * 1989-01-28 1989-03-15 Int Computers Ltd Data processing system
US4926476A (en) * 1989-02-03 1990-05-15 Motorola, Inc. Method and apparatus for secure execution of untrusted software
US5280613A (en) * 1990-06-25 1994-01-18 Hewlett-Packard Company ANDF installer using the HPcode-Plus compiler intermediate language
US5504814A (en) * 1991-07-10 1996-04-02 Hughes Aircraft Company Efficient security kernel for the 80960 extended architecture
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
FR2703800B1 (fr) * 1993-04-06 1995-05-24 Bull Cp8 Procédé de signature d'un fichier informatique, et dispositif pour la mise en Óoeuvre.
US5475753A (en) * 1993-11-12 1995-12-12 Matsushita Electric Corporation Of America Apparatus and method for certifying the delivery of information
US5559884A (en) * 1994-06-30 1996-09-24 Microsoft Corporation Method and system for generating and auditing a signature for a computer program
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05334073A (ja) * 1992-02-12 1993-12-17 Internatl Business Mach Corp <Ibm> ユーザ定義機能機構

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100752067B1 (ko) * 2000-07-25 2007-08-28 메크로비젼 코오포레이션 동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법
KR101691600B1 (ko) * 2016-04-28 2017-01-02 지티원 주식회사 공통 구조 변환 기반 프로그램 분석 방법 및 장치

Also Published As

Publication number Publication date
EP0778520A3 (en) 1999-03-31
DE69634684D1 (de) 2005-06-09
DE69634684T2 (de) 2006-01-19
TW355768B (en) 1999-04-11
US5692047A (en) 1997-11-25
HK1000846A1 (en) 2003-04-11
CA2190556A1 (en) 1997-06-09
CN1097771C (zh) 2003-01-01
CN1156286A (zh) 1997-08-06
SG75108A1 (en) 2000-09-19
JP4112033B2 (ja) 2008-07-02
EP0778520B1 (en) 2005-05-04
EP0778520A2 (en) 1997-06-11
US6070239A (en) 2000-05-30
AU7185696A (en) 1997-06-12
KR970049730A (ko) 1997-07-29
JPH1011281A (ja) 1998-01-16
AU717615B2 (en) 2000-03-30

Similar Documents

Publication Publication Date Title
KR100433319B1 (ko) 신뢰된소오스로부터의검사불가능한프로그램을사용하는장치로검사가능한프로그램을실행하기위한시스템및방법
KR100420569B1 (ko) 아키텍처중간프로그램의신뢰성있는컴파일아키텍처특정버전을발생시키기위한시스템및방법
JP3786722B2 (ja) デジタル署名を用いた進行オブジェクト指向型プログラムの有効利用方法および装置
US6922782B1 (en) Apparatus and method for ensuring data integrity of unauthenticated code
US6742006B2 (en) Method and apparatus for selective execution of a computer program
US7117371B1 (en) Shared names
KR101150091B1 (ko) 효과적 패칭
EP1399808B1 (en) Binding by hash
US6802006B1 (en) System and method of verifying the authenticity of dynamically connectable executable images
CN102880456B (zh) 插件加载方法及系统
US20050027988A1 (en) System and method of verifying the authenticity of dynamically connectable executable images
US20060253760A1 (en) System and methods for processing software authorization and error feedback
US11556323B1 (en) Systems and methods for trusted and secure application deployment via collective signature verification of the application artifacts
JP4698925B2 (ja) 動的に接続可能な実行可能イメージの真正性検証システム及び方法
US7480919B2 (en) Safe exceptions
Gritzalis et al. Architectures for secure portable executable content
JP2002041173A (ja) プログラムファイル認証方法
CN112926058A (zh) 代码处理方法、污点分析方法和装置
Kleindienst BeanChannel: Java Distributed Event Model
Xu SecureDart: Trusting Client-side Code
KR20070012561A (ko) 동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법

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

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee