KR100420569B1 - 아키텍처중간프로그램의신뢰성있는컴파일아키텍처특정버전을발생시키기위한시스템및방법 - Google Patents

아키텍처중간프로그램의신뢰성있는컴파일아키텍처특정버전을발생시키기위한시스템및방법 Download PDF

Info

Publication number
KR100420569B1
KR100420569B1 KR1019960062292A KR19960062292A KR100420569B1 KR 100420569 B1 KR100420569 B1 KR 100420569B1 KR 1019960062292 A KR1019960062292 A KR 1019960062292A KR 19960062292 A KR19960062292 A KR 19960062292A KR 100420569 B1 KR100420569 B1 KR 100420569B1
Authority
KR
South Korea
Prior art keywords
program
architecture
party
compilation
digital signature
Prior art date
Application number
KR1019960062292A
Other languages
English (en)
Other versions
KR970049509A (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 KR970049509A publication Critical patent/KR970049509A/ko
Application granted granted Critical
Publication of KR100420569B1 publication Critical patent/KR100420569B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/126Applying verification of the received information the source of the received data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Abstract

분산 컴퓨터 시스템은 프로그램 컴파일 컴퓨터 및 프로그램 실행 컴퓨터를 가진다. 프로그램 컴파일 컴퓨터는 컴파일 파티(compiling party)에 의해 동작되며, 아키텍처 중간 프로그램의 원시 파티에 대한 디지털 서명이 검사될 때 (A) 아키텍처 중간 프로그램의 아키텍처 중간 프로그램 코드를 아키텍처 중간 프로그램의 정보를 컴파일함으로서 식별되는 아키텍처 특정 언어의 아키텍처 특정 프로그램 코드로 컴파일하며 (B) 아키텍처 특정 프로그램을 발생시키기 위해 컴파일 파티의 디지털 서명을 아키텍처 특정 프로그램 코드에 부가하는 컴파일러를 포함한다. 프로그램 실행 컴퓨터는 실행 파티에 의해 동작되며, 아키텍처 중간 프로그램의 원시 파티에 대한 디지털 서명이 검사되고 아키텍처 특정 프로그램의 컴파일 파티에 대한 디지털 서명이 검사되며 상기 컴파일 파티가 소정 세트의 신뢰된 컴파일 파티의 멤버로 결정될 때, 아키텍처 특정 프로그램의 아키텍처 특정 프로그램 코드를 실행하는 아키텍처 특정 프로그램 실행기를 포함한다.

Description

아키텍처 중간 프로그램의 신뢰성 있는 컴파일 아키텍처 특정 버전을 발생시키기 위한 시스템 및 방법{SYSTEM AND METHOD FOR GENERATING TRUSTED, ARCHITECTURE SPECIFIC, COMPILED VERSIONS OF ARCHITECTURE NEUTRAL PROGRAMS}
본 발명은 일반적으로 분산형 컴퓨터 시스템, 특히 컴파일된 프로그램의 수령자가 대응하는 아키텍처 중간 프로그램의 식별자를 검사할 수 있으며 상기 아키텍처 중간 프로그램이 신뢰성 있는 제 3자(trusted third party)에 의해 컴파일되는 것을 검사할 수 있도록 실행가능한 아키텍처 중간 프로그램이 신뢰성 있는 제 3자에 의해 컴파일되는 프로그램 컴파일 시스템 및 방법에 관한 것이다.
본 명세서에서, 용어 "아키텍처"는 한 계열의 컴퓨터 모델의 동작특성을 의미한다. 다른 아키텍처의 예는 메킨토시 컴퓨터, DOS 또는 윈도우 운영체제를 사용하는 IBM PC 호환 컴퓨터, 솔라리스(Solaris) 운영체제를 사용하는 선 마이크로 시스템즈 컴퓨터 및 유닉스 운영체제를 사용하는 컴퓨터 시스템이다.
본 명세서에서, 용어 "아키텍처 중간(architecture neutral)"은 다수의 다른 컴퓨터 아키텍처를 사용하는 다양한 컴퓨터 플랫폼상에서 실행되도록 하는, 자바(Java)(선마이크로시스템즈, 인코포레이션의 상표) 언어 작성 프로그램과 같은 임의의 프로그램의 능력을 언급한다.
본 명세서에서, 용어 "아키텍처 특정(architecture specific)"은 임의의 프로그램이 단일 컴퓨터 아키텍처를 사용하는 컴퓨터 플랫폼에서만 실행되는 요구조건을 언급한다. 예를들어, 80486 어셈블러 언어로 작성된 목적 코드 프로그램(object code program)은 IBM PC 호환 컴퓨터 아키텍처를 사용하는 컴퓨터(및 IBM PC 호환 컴퓨터 에뮬레이터를 포함하는 다른 컴퓨터)상에서만 실행될 수 있다.
아키텍처 중간 프로그램(AN 프로그램)의 중요한 특징은 아키텍처 중간 언어(AN 언어)로 작성된 프로그램과 무관한 아키텍처를 포함한다는 것이다. 예를들어, 자바 바이트코드 프로그램은 자바 바이트코드 해석기를 가진 임의의 컴퓨터 플랫폼상에서 실행될 수 있다. 자바 바이트코드 프로그램의 다른 중요한 특징은 그들의 완전성(및 보존성)(integrity)이 자바 바이트코드 검사장치로 실행하기전에 직접 검사될 수 있다는 것이다. 자바 바이트코드 검사장치는 프로그램이 소정의 완전성 기준에 따르는 지의 여부를 검사한다. 이같은 기준은 자바 바이트코드 프로그램이 실행 컴퓨터 오퍼랜드 스택을 오버플로우 및 언더플로우하지 않고 모든 프로그램 명령이 알려진 데이터 형태의 데이터만을 이용하도록 하는 오퍼랜드 스택 및 데이터 형태의 사용제한을 포함한다. 결과적으로, 자바 바이트코드 프로그램은 목적 포인터(object pointer)를 만들 수 없으며 일반적으로 사용자가 명백히 사용을 허용하는 시스템 자원과 다른 시스템 자원을 액세스 할 수 없다.
불행하게도, 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자에 의해 AN 프로그램의 컴파일이 가능할지라도, 이러한 컴파일은 제 3자가 인증되는 것을 필요로한다. 즉, 신뢰성 있는 특정 제 3자에 의해 컴파일되는 컴파일된 AS 프로그램의 정보로부터 검사하는 것이 가능해야 한다. 컴파일된 AS 프로그램이 신뢰성 있는 특정 컴파일러에 의해 발생되었다는 것을 인증하는 것이 또한 가능해야 한다. 소정의 완전성 기준(integrity criteria)에 관한 컴파일된 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 : 서명 검사장치
요약하면, 본 발명은 프로그램 컴파일링 컴퓨터 및 프로그램 실행 컴퓨터를 포함하는 컴퓨터 네트워크이다.
프로그램 컴파일링 컴퓨터는 컴파일링 파티(compiling party)에 의하여 동작되며, 또한 원시 파티(originating party)에 의해 발생된 아키텍처 중간 프로그램을 저장하는 저장장치를 포함한다. 아키텍처 중간 프로그램은 아키텍처 중간 프로그램 코드 및 원시 파티의 디지털 서명을 포함한다. 프로그램 컴파일링 컴퓨터는 원시 파티의 서명이 아키텍처 중간 프로그램과 매칭되는지를 검사하기 위해서 원시파티의 디지털 서명을 검사하는 서명 검사장치를 포함한다.
프로그램 컴파일링 컴퓨터는 원시 파티의 디지털 서명이 검사될 때 정보에 대한 컴파일에 의해 식별되는 아키텍처 특정 언어의 아키텍처 특정 프로그램 코드로 아키텍처 중간 프로그램 코드를 컴파일하는 컴파일러를 더 포함한다. 컴파일러는 컴파일러 프로그램의 디지털 서명을 아키텍처 특정 프로그램 코드에 첨부하기 위해 서명 발생기를 이용하며, 여기서 컴파일러 서명은 컴파일된 아키텍처 특정 프로그램 코드와 아키텍처 중간 프로그램상의 서명을 포함하는 정보 세트를 서명한다. 바람직한 실시예에 있어서, 컴파일러는 컴파일인 파티의 디지털 서명을 아키텍처 특정 프로그램 코드에 첨부하기 위해 서명 발생기를 이용하며, 여기서 컴파일링 파티 서명은 컴파일된 아키텍처 특정 프로그램 코드, 아키텍처 중간 프로그램상의 서명 및 컴파일러 서명을 포함하는 정보 세트를 서명한다.
프로그램 실행 컴퓨터는 실행 파티에 의해 동작되며, 아키텍처 중간 및 특정 프로그램을 저장하는 저장장치를 포함한다. 프로그램 실행 컴퓨터는 (A) 아키텍처 중간 프로그램에서 원시 파티의 디지털 서명을 검사하고, (B) 아키텍처 특정 프로그램에서 컴파일러의 디지털 서명을 검사하며 및/또는 아키텍처 특정 프로그램에서 컴파일링 파티의 디지털 서명을 검사하는 서명 검사장치를 더 포함한다. 용어 "서명의 검사"는 서명이 이 서명에 의해 적법하게 서명된 정보세트와 매칭되는지를 결정하기 위한 처리과정이 수행되는 것을 의미한다.
프로그램 실행 컴퓨터는 아키텍처 특정 프로그램의 디지털 서명이 검사될 때 아키텍처 특정 프로그램의 아키텍처 특정 프로그램 코드를 실행하는 아키텍처 특정 프로그램 실행자를 포함한다.
바람직한 실시예에 있어서, 아키텍처 중간 프로그램은 아키텍처 중간 프로그램과 유일하게 연관된 메시지 요약을 포함하는 디지털 서명을 포함하는 목적에 삽입된다. 컴파일러에 의해 발생된 아키텍처 특정 프로그램은 다음과 같은 것, 즉
· 컴파일된 아키텍처 특정 코드;
· 아키텍처 중간 프로그램을 제공하는 파티에 의해 서명된 대응하는 아키텍처 중간 프로그램의 디지털 서명;
· 프로그램을 컴파일하기 위해 사용되는 컴파일러를 식별하는 정보 및 컴파일된 프로그램의 메시지 요약을 포함하며 컴퓨터의 전용 암호화 키에 의해 서명되는, 컴파일러 그 자체에 의한 디지털 서명; 및
· 신뢰성 있는 파티를 식별하는 정보 및 컴파일된 프로그램의 요약을 포함하며 컴파일링 파티의 개인 암호화 키에 의해 서명되는, 컴파일을 수행하는 신뢰성 있는 파티에 의한 디지털 서명을 포함하다.
때때로 명명 서비스(naming service)라 불리는 일반적으로 이용가능한 공개 암호화 키의 신뢰성 있는 저장소는 컴파일러 및 신뢰성 있는 컴파일링 파티(compiling party)의 공개 키를 보유한다. 이들 공개 암호화 키를 사용할 때, 컴파일된 프로그램의 모든 수령자는 컴파일된 프로그램이 지시된 신뢰성 있는 파티 및 지시된 컴파일러에 의해 컴파일되는 것을 검사하고 대응하는 아키텍처 중간 프로그램의 식별자를 검사하기 위해 컴파일된 프로그램에서 디지털 서명을 해독할 수 있다. 선택적으로, 컴파일된 프로그램의 수령자는 컴파일된 아키텍처 특정 프로그램을 실행하기 전에 대응하는 아키텍처 중간 프로그램의 적정 동작을 검사하기 위해 프로그램 검사장치를 사용할 수 있다.
그외에 목적 및 장점과 함께 본 발명은 첨부된 도면을 참조로 상세히 설명될것이다.
도 1에는 많은 클라이언트 컴퓨터(102), 서버 컴퓨터(104) 및 신뢰성 있는 키 저장소(106)를 가진 컴퓨터 네트워크(100)가 도시되어 있다. 클라이언트 컴퓨터(102)는 네트워크 통신 접속부(108)를 통해 서버 컴퓨터(104) 및 신뢰성 있는 키 저장소(106)에 접속된다. 네트워크 통신 접속부(108)는 지역 또는 광역 네트워크, 인터넷, 상기 네트워크의 결합 또는 다른 형태의 네트워크 통신 접속부일 수 있다.
대부분의 클라이언트 컴퓨터(102)가 선 워크스테이션, IBM 호환 컴퓨터 및 매킨토시 컴퓨터와 같은 탁상 컴퓨터인 반면에, 다른 형태의 컴퓨터가 클라이언트 컴퓨터 일 수 있다. 각각의 이들 클라이언트 컴퓨터는 CPU(110), 사용자 인터페이스(112), 메모리(114) 및 네트워크 통신 인터페이스(116)를 포함한다. 네트워크 통신 인터페이스는 클라이언트 컴퓨터가 네트워크 통신 접속부(106)를 통해 서보 컴퓨터(104) 및 신뢰성 있는 키 저장소(108)와 통신할 수 있도록 한다.
각각의 클라이언트 컴퓨터(102)의 메모리(114)는 운영체제(118), 네트워크 통신 관리자(120), AN 프로그램(아키텍처 중간 프로그램) 실행자(122), AS 프로그램(아키텍처 특정 프로그램) 실행자(124), AN 프로그램 완전성 검사장치(126), AN 프로그램 컴파일링 준비기(128), 서명 발생기(130), 서명 검사장치(132), 컴파일링 정보(CompInfo) 검사장치(134), 목적 클래스 로더(136), 사용자 어드레스 공간(138), 신뢰성 있는 목적 클래스 저장소(140), 신뢰성 없는 목적 클래스 저장소(142), 및 알려진 신뢰성 있는 컴파일링 파티 및 신뢰성 있는 컴파일러의리스트(144)를 포함한다. 운영체제는 CPU(110)상에서 실행되며, 사용자 인터페이스(112)를 가진 사용자에 의해 송출된 명령에 응답하여 CPU상의 프로그램(120-136)의 실행을 제어 및 조정한다.
각각의 클라이언트 컴퓨터(102)의 AN 프로그램 실행자(122)는 신뢰성 있는 그리고 신뢰성 없는 목적 클래스 저장소(140, 142)에 저장된 목적 클래스에서 AN 프로그램을 실행한다. 더욱이, AN 프로그램은 사용자가 스택 및 데이터 사용제한과 같은 소정의 완전성 기준을 수행할 수 있는 AN 언어로 기억되어, AN 프로그램은 위법 테스크를 실행하지 않은 것이다. 따라서, AN 프로그램의 완전성은 프로그램이 소정 완전성 기준(integrity criteria)을 만족하는지를 결정하여 실행하기 전에 AN 프로그램 완전성 검사장치(126)에 의해 직접 검사될 수 있다. 따라서, 이들 AN 프로그램은 완전성 검사가능 AN 프로그램으로 고려된다.
바람직한 실시예에 있어서, 완전성 검사가능 AN 프로그램은 자바 바이트코드 언어로 작성된다. 더욱이, AN 프로그램 실행자(122) 및 AN 프로그램 검사장치(124)는 각각 자바 바이트코드 프로그램 해석기 및 자바 바이트코드 프로그램을 각각 실행하여 검사하는 자바 바이트코드 프로그램 검사장치이다. 자바 바이트코드 검사장치 및 해석기는 선 마이크로시스템즈 인코포레이션의 제품이다.
그러나, 각각의 클라이언트 컴퓨터(102)는 프로그램이 대응하는 AS 언어로 기록될 수 있으며 AS 프로그램 실행자(122)에 의해 실행될 수 있는 연관된 특정 아키텍처를 가진다. AS 언어는 AS 언어로 작성된 AS 프로그램이 AN 언어의 소정의 완전성 기준을 만족하는 것을 요구하지 않는다. 결과적으로, AS 프로그램은 그들이AN 언어의 소정 완전성 기준에 의해 부여된 제한에 의해 영향을 받지 않기 때문에 AN 프로그램에 의해 실행될 수 없는 태스크를 실행할 수 있다. 그러나, 불행하게도, 이는 AS 프로그램의 완전성이 AN 프로그램 완전성 검사장치(126)에 의해 직접 검사되지 않아서 완전성 검사불능으로 고려된다는 것을 의미한다.
그럼에도 불구하고, 초기에 지시된 것처럼, AN 프로그램은 AN 언어로 컴파일된 동일한 프로그램보다 덜 효율적으로 실행된다. 따라서, 클라이언트 컴퓨터(102)의 사용자는 클라이언트 컴퓨터와 연관된 AS 언어에 대한 서버 컴퓨터(104)에 의해 컴파일된 AN 프로그램을 가질 수 있으며, 이에 따라 사용자 컴파일된 프로그램은 AS 프로그램 실행자(124)에 의해 실행될 수 있다. 또는, 사용자는, 만일 컴파일된 AS 프로그램이 분산되고 다른 클라이언트 컴퓨터의 AS 프로그램 실행자(124)에 의해 실행된다면, 다른 클라이언트 컴퓨터와 연관된 AS 언어로 컴파일된 AN 프로그램을 가질 수 있다.
컴파일하기 위한 아키텍처 중간 프로그램 준비
도 1 및 도 2를 참조하면, 원시 파티(OrigParty)가 서버 컴퓨터(104)에 의해 컴파일된 AN 프로그램(200)을 가질 때, 원시 파티는 AN 프로그램 컴파일링 준비기(128)를 호출하기 위해 사용자 인터페이스(112)로 명령을 송출하여 사용자 인터페이스(112)가 컴파일하기 위한 AN 프로그램을 준비하도록 한다. AN 프로그램은 신뢰성 있거나 또는 신뢰성 없는 목적 클래스 저장소(140, 또는 142)중 하나에 포함된 목적 클래스에 있을 수 있다. 테이블(1)은 서버 컴퓨터(104)에 의해 컴파일하기 위한 AN 프로그램을 준비하기 위해 AN 프로그램 컴파일링 준비기(128)에 의해사용된 절차를 나타내는 의사코드를 포함한다. 테이블 1-3에 사용된 의사코드는 범용 컴퓨터 언어 규정을 사용한다. 여기에 사용된 의사코드가 이들 기술(description)을 위해 유일하게 고안되었을지라도, 의사코드는 본 분야에서 숙련된 임의의 컴퓨터 프로그래머에 의하여 용이하게 이해될 수 있을 것이다.
도 1 및 도 2와 테이블 1을 참조하면, AN 프로그램 컴파일링 준비기(128)는 먼저 AN 프로그램 완전성 검사장치(126)를 호출하여 AN 프로그램 완전성 검사장치(126)로 하여금 AN 프로그램(200)의 AN 프로그램 코드(202)의 완전성을 검사하도록 한다. 이는 AN 프로그램 코드가 컴파일을 위한 서버 컴퓨터(104)에 전송되기 전에 AN 언어의 소정의 완전성 기준을 만족하도록 동작한다. 만일 AN 프로그램 코드가 소정 완전성 기준을 만족하지 않는다면, AN 프로그램 완전성 검사장치는 AN 프로그램 컴파일링 준비기에 실패 결과를 다시 전송한다. 이에 응답하여, AN 프로그램 컴파일링 준비기는 컴파일링 준비과정을 중지하며 이들을 지시하는 적정 메시지를 발생시킨다.
그러나, 만일 AN 프로그램 코드(202)가 소정의 완전성 기준을 만족한다면, AN 프로그램 완전성 검사장치(126)는 AN 프로그램 컴파일링 준비기(128)에 패스 결과(passed result)를 전송한다. 그 다음에, AN 프로그램 컴파일링 준비기는 서명 발생기(130)를 호출하여, AN 프로그램(200)이 신뢰성 있는 원시 파티에 의해 발생되도록 검사될 수 있는 원시 파티의 디지털 서명(DigitalSignatureOP)(210)을 서명 발생기(130)로 하여금 발생시키도록 명령한다. 서명 발생기는 먼저 AN 프로그램 코드(202)의 메시지 요약(MDOP)(212)을 발생시킴으로서 DigitalSignatureOP를 발생시킨다. 그것은 AN 프로그램 코드의 데이터 비트로 해시함수(HashFunctionOP)를 계산함으로서 행해진다. 사용된 해시함수는 소정의 해시함수 또는 원시 파티에 의해 선택된 해시함수중 하나일 수 있다. HashFunctionOP는 그것이 원시 파티의 DigitalSignatureOP을 위해 사용되기 때문에 원시 파티에 대응한다.
그 다음에, 서명 발생기(130)는 발생된 메시지 요약(MDOP)(212) 및 해시함수OPID(HashFunctionOPID)(214)를 원시파티의 전용 암호화 키로 암호화한다. 그다음에, 서명 발생기는 DigitalSignatureOP을 형성하기 위하여 암호화된 아이템(212, 214)의 끝의 클리어 텍스트에 원시 파티의 ID(216)을 더한다. 원시 파티의 전용키 및 ID는 사용자 인터페이스(112)를 가진 OrigParty에 의해 제공된다.
DigitalSignatureOP(210)이 발생된후에, AN 프로그램 컴파일링 준비기(128)는 AN 프로그램 코드(202)에 그것을 부가한다. 그다음에, AN 프로그램 컴파일링 준비기는 서버 컴퓨터(104)에 의하여 컴파일하기 위하여 AN 프로그램(200)이 준비되는 메시지를 발생시킨다.
그 다음에, OrigParty는 프로그램이 컴파일될 아키텍처 특정 언어(AS 언어 ID) 및 사용될 컴파일러(컴파일러 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 프로그램은 CompParty가 사용자 인터페이스로 명령을 송출할 때 네트워크 통신 관리자에 의해 저장소(170)로 이동된다.
그 다음에, 자동적으로 또는 사용자 인터페이스(252)를 가진 CompParty에 의한 명령의 송출시에, AN 프로그램 컴파일러(162)는 AN 프로그램(200)을 컴파일하기 위해 호출된다. 테이블(2)은 AN 프로그램을 컴파일하기 위해 AN 프로그램 컴파일러에 의해 사용된 컴파일 과정의 의사코드 표현을 포함한다.
도 1-2 및 테이블2를 참조하면, AN 프로그램 컴파일러(162)는 DigitalSignatureOP(210)가 AN 프로그램에 대한 원시 파티의 서명(예를들어, AN 프로그램의 몇몇의 다른 버전상의 무시된 서명 또는 원시 파티의 서명과 대조됨)이도록, 수신된 AN 프로그램(200)에서 DigitalSignatureOP(210)를 검사하기 위해 서명 검사장치(164)를 먼저 호출한다. 특히, 서명 검사장치는 신뢰성 있는 키 저장소(106)로부터 원시 파티의 공개 키를 얻기 위해서 수신된 AN 프로그램내의 클리어 텍스트 원시 파티 ID(216)을 사용한다. 그다음에, 서명 검사장치는 원시 파티의 공개 암호화 키(OrigParty's PublicKey)를 사용하여 DigitalSignatureOP에서 암호화된 MDOP(212) 및 해시함수OPID(214)를 해독한다.
그 다음에, 서명 검사장치(164)는 수신된 AN 프로그램(200)의 AN 프로그램 코드(202)상의 대응하는 해시함수OP를 계산함으로서 해독된 MDOP(212)와 매칭되어야하는 테스트 메시지 요약(TestMDOP)을 발생시킨다. 해독된 DigitalSignatureOP의 해시함수OPID(214)는 사용될 적정 해시함수OP(HashFunctionOP)를 식별하기 위해 사용된다. 해독된 MDOP및 발생된 테스트 MDOP는 DigitalSignatureOP(210)을 검사하기 위해 비교된다.
만일 MDOP(212) 및 테스트 MDOP가 매칭되지 않는다면, 서명 검사장치(162)는 AN 프로그램 컴파일러(162)에 실폐 결과를 다시 전송한다. 이에 응답하여, AN 프로그램 컴파일러는 컴파일 과정을 중지하며 적정 메시지를 발생시킨다.
다른 한편으로, 만일 MDOP(212) 및 테스트 MDOP가 매칭되면, 서명 검사장치(162)는 AN 프로그램 컴파일러(162)에 패스 결과(passed result)를 다시 전송하며, AN 프로그램 컴파일러는 AN 프로그램 완전성 검사장치(166)를 호출한다. AN 프로그램 컴파일러는 수신된 AN 프로그램(200)의 AN 프로그램 코드(202)의 완전성을 검사하기 위해서 AN 프로그램 완전성 검사장치를 명령한다. 이는 컴파일을 위한 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 프로그램 컴파일러(162)는 서명 발생기(168)를 호출하며, AS 프로그램(300)이 신뢰성 있는 AN 프로그램 컴파일러로 컴파일되도록 검사될 수 있는 AN 프로그램 컴파일러의 디지털 서명(DigitalSignatureC)(320)을 서명 발생기(168)로 하여금 발생시키도록 명령한다. 이것은 DigitalSignatureOP을 발생시키기 위해 초기에 기술된 것과 유사한 방식으로 행해진다. 그러나, 이러한 경우에 있어서, 서명된 정보의 세트는 AS 프로그램 코드 및 DigitalSignatureOP이다. 대응하는 해시함수C(HashFunctionC)ID(324)를 가진 다른 소정의 해시함수는 DigitalSignatureC에 의해 서명될 정보세트의 메시지 요약MDC(322)를 발생시키기 위해 사용될 수 있으며, AN 프로그램 컴파일러의 전용 암호화 키는 MDC및 해시함수CID를 암호화하기 위해 사용되며, AN 프로그램 컴파일러의 식별자(컴파일러 ID)는 암호화된 MDC및 해시함수C의 끝에 있는 클리어 텍스트에 더해진다. 컴파일러이 전용 키 및 ID는 AN 프로그램 컴파일러에 의해 제공된다.
AN 프로그램 컴파일러(162)는 AS 프로그램(300)이 신뢰성 있는 에 의해 발생되도록 최종 사용자에 의해 검사될 수 있는 CompParty의 디지털 서명(DigitalSignatureCP)(312)을 발생시키는 제 2시간에 서명 발생기(168)를 호출한다. 이는 DigitalSignatureOP를 발생시키기 위해 초기에 기술된 것(컴파일을 위한 ANP 프로그램의 준비를 기술한 문장에 기술된 것)과 유사한 방식으로 행해진다. 그러나, DigitalSignatureCP를 위해 발생된 메시지 요약(MDCP)(314)은 AS 프로그램 코드의 데이터 비트, 디지털 서명OP및 디지털 서명C상의 소정 해시함수(Hash functionCP)를 계산함으로서 발생된다. 해시함수OP와 유사하게, 해시함수CP는 그것이 CompParty의 DigitalSignatureCP을 위해 사용되기 때문에 CompParty에 대응한다.
그 다음에, 서명 발생기(168)는 CompParty의 전용 암호화 키(CompParty's PrivateKey)로 MDCP(314) 및 해시함수CP의 ID(316)를 암호화한다. 그 다음에, 서명 발생기는 디지털 서명CP(312)를 형성하기 위해 암호화된 아이템(314, 316)의 끝에 있는 클리어 텍스트에 컴파일링 파티의 식별자(CompParty's ID)(318)를 더한다. 컴파일링 파티의 전용 키 및 ID는 사용자 인터페이스(152)를 가진 컴파일링 파티에 의해 제공된다.
디지털 서명(DigitalSignatureC)(320) 및 디지털서명(DigitalSignatureCP)(312)이 발생된후에, AN 프로그램 컴파일러(162)는 AS 프로그램 코드(302)에 그들을 첨부하여, 결과적인 컴파일된 AS 프로그램 파일 또는 목적은 다음과 같은 성분을 가진다.
AN 프로그램 코드,
디지털 서명OP,
AS 프로그램 코드,
디지털 서명C,
디지털 서명CP
그다음에, AN 프로그램 컴파일러는 AN 프로그램(200)이 AS 프로그램(300)을 형성하기 위해 컴파일되며 원시파티에 전송될 메시지를 발생시킨다.
그다음에, 컴파일 파티는 AS 프로그램(300)을 원시 파티의 클라이언트 컴퓨터(102)에 전송하기 위해 네트워크 통신 관리자(160)를 사용한다. 네트워크 통신 관리자는 AS 프로그램이 배치되는 AS 프로그램 저장소(172)로부터 AS 프로그램을 검색하여 그것을 네트워크 통신 인터페이스(156)에 제공함으로써 행해진다. 그 다음에, 네트워크 통신 관리자는 원래의 클라이언트 컴퓨터에 AS 프로그램을 전송하기 위해 네트워크 통신 인터페이스를 명령한다.
목적 및 목적 클래스 생성 및 분산
그 다음에, 전송된 AS 프로그램(300)은 원시 파티의 클라이언트 컴퓨터의 통신 인터페이스(116)에 의해 수신되며 이것이 발생되는 네트워크 통신 관리자(120)를 명령한다. 이에 응답하여, 원시 파티는 네트워크 통신 인터페이스로부터 수신된 AS 프로그램이 검색되도록 네트워크 통신 관리자를 명령하기 위해 사용자 인터페이스(252)로 명령을 송출하며, 이에 따라 네트워크 통신 관리자는 원시 파티의 클라이언트 컴퓨터의 신뢰성 없는 목적 클래스 저장소(142)에 수신된 AS 프로그램을 배치한다. 일단 이것이 행해지면, 원시 파티는 한가지의 방법으로 수신된 AS 프로그램을 새로운 목적 클래스(object class)로서 처리할 수 있거나, 또는 AS 프로그램(300) 뿐만아니라 다른 AN 프로그램 및 AS 프로그램을 포함하는 목적 클래스를 처리할 수 있다.
도 4는 본 발명에 따라 전형적인 목적 클래스(object class)(400)를 도시한다. 목적 클래스는 하나 이상의 AS 프로그램(402) 및/또는 하나 이상의 AN 프로그램(404)뿐만아니라, 가상 함수 테이블(410)을 포함할 수 있다. 각각의 AS 프로그램에 대하여, 가상 함수 테이블은 대응 식별자(native_ASProgram ID)를 포함하며, 상기 식별자는 가상 함수 테이블이 AN 언어 및 원시 프로그램에 대응하는 포인터(Ptr)(414)에 없는 AS 프로그램(즉, 원시 프로그램)이라는 것을 나타낸다. 유사하게, 각각의 AN 프로그램에 대하여, 가상 함수 테이블은 식별자(AN 프로그램 ID)(416) 및 AN 프로그램에 대응하는 포인터(418)를 포함한다. 이 목적 클래스의 모든 목적(420)은 목적 클래스(400)를 지시하는 목적 헤더(422)를 포함한다.
따라서, 원시 파티는 목적 클래스에서 AS 프로그램(402)중 하나로서 서버 컴퓨터(104)로부터 수신되는 AS 프로그램(300)으로 목적(object)(420) 및 목적 클래스(400)를 생성할 수 있다.
원시 파티가 AS 프로그램(300) 및 AN 프로그램을 포함하는 목적 클래스 및 목적을 다양한 실행 파티에 분배할때, 원시 파티는 실행 파티의 클라이언트 컴퓨터(102)에 아이템을 전송하도록 네트워크 통신 관리자를 명령하기 위해 사용자 인터페이스(112)로 명령을 송출한다. 네트워크 통신 관리자는 그들이 배치되는 신뢰성있는 목적 클래스 저장소(142)로부터 그들을 검색하여 적정 전송명령을 가진 네트워크 통신 인터페이스(116)에 그들을 제공함으로써 상기와 같은 것을 행한다. 선택적으로, OrigParty의 네트워크 통신 관리자는 특정 목적 클래스(400)의 복사를 위해 실행 파티에 의해 초기화된 요구에 응답할 수 있다.
목적 클래스에서의 아키텍처 중간 프로그램 및
아키텍처 특정 프로그램의 실행
클라이언트 컴퓨터(102)의 네트워크 통신 인터페이스(156)는 전송된 목적 및 목적 클래스를 수신하며 이것이 발생한 네트워크 통신 관리자(160)를 명령한다. 이에 응답하여, 실행 파티는 네트워크 통신 인터페이스로부터 수신된 목적 및 목적 클래스를 검색하도록 네트워크 통신 관리자를 명령하기 위해 사용자 인터페이스(112)로 명령을 송출한다. 그 다음에, 네트워크 통신 관리자는 신뢰성 없는 목적 클래스 저장소(142)에 수신된 목적 및 목적 클래스를 저장한다.
각각의 클라이언트 컴퓨터(102)의 신뢰성없는 목적 클래스 저장소(142)는 신뢰성 없는 목적 및 그들과 연관된 목적 클래스를 포함한다. 이들 목적 클래스는 그들이 포함하는 임의의 AN 프로그램이 그들의 완전성을 검사하지 않고 그들이 포함하는 임의의 AS 프로그램이 그들의 소오스를 검사하지 않으며 적정 AN 프로그램으로부터 컴파일된 것처럼 검사되지 않기 때문에 신뢰성이 없다. 사실상 신뢰성 있는 목적 클래스 저장소(140)의 일부 또는 모든 목적 클래스는 디지털 서명을 가질 필요가 없다. 왜냐하면, 이들 목적 클래스는 신뢰성을 가져서, 이들 목적 클래스의 완전성을 검사할 이유가 없기 때문이다.
초기에 제안한 것처럼, 모든 적법한 태스크가 목적 클래스로 실행될 수 있도록 주로 AN 프로그램을 포함하나 AS 프로그램을 포함할 수 있는 목적 클래스를 가지는 것은 바람직하다. 따라서, AN 프로그램 실행자(122)는 완전성 검사가능 AN 프로그램을 실행할 수 있고 또한 완전성 검사 불능 AS 프로그램을 실행하기 위하여 AS 프로그램 실행자를 호출 할 수 있으며, 완전성 검사불능 AS 프로그램은 신뢰성 있는 목적 클래스 저장소(140)의 신뢰성 있는 목적 클래스에 있거나 또는 신뢰성 없는 목적 클래스 저장소(142)의 신뢰성 없는 목적 클래스에 있으며, 모든 적법한 태스크가 수행될 수 있도록 검사가능한 디지털 서명OP(DigitalSignatureOP), 디지털 서명CP(DigitalSignatureCP), 디지털 서명C(DigitalSignatureC) 정보를 가진다. 이러한 방식으로, 디지털 서명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)는 컴파일러 서명 DigitalSignatureC및 CompParty 서명 DigitalSignatureCP를 검사하기 위해 서명 검사장치(132)를 호출한다. 만일 임의의 AS 프로그램이 DigitalSignatureCP및 DigitalSignatureC를 포함하지 않는다면, AS 프로그램 소오스의 완전성은 검사할 수 없다. 따라서, 서명 검사장치는 실폐결과를 AN 프로그램 실행자에 다시 전송한다. 이에 응답하여, 클래스 로더는 목적 클래스 로딩 과정을 중지하며 이것이 발생했다는 적정 메시지를 발생시킨다.
게다가, 만일 목적 클래스의 모든 AS 프로그램이 DigitalSignatureCP및 DigitalSignatureC을 포함한다면, 이들 두개의 디지털 서명에 지시된 컴파일링 파티 및 컴파일러의 식별자는 알려진 신뢰성 있는 컴파일러 파티 및 신뢰성 있는 컴파일러의 리스트(144)(도 1참조)와 비교된다. 만일 목적 클래스의 임의의 AS 프로그램이 컴파일링 파티에 의해 컴파일되거나 또는 컴파일러가 알려진 신뢰성 있는컴파일러 파티 및 신뢰성 있는 컴파일러의 세트에 포함되지 않는다면, 클래스 로딩 과정은 중지되고 호출된 방법의 실행은 중지된다. 유사하게, 만일 임의의 AS 프로그램에서 식별되는 AS 언어가 AS 프로그램 실행자(124)에 의해 사용된 AS 언어와 매칭되지 않는다면, 클래스 로딩 과정은 중지된다.
그러나, 목적 목적 클래스의 모든 AS 프로그램이 DigitalSignatureCP및 DigitalSignatureC를 포함하고 모든 AS 프로그램에 대한 식별된 컴파일 파티 및 컴파일러가 신뢰성 있는 컴파일러 파티 및 컴파일러이고 모든 AS 프로그램에 의해 사용된 AS 언어가 AS 프로그램 실행자에 의해 사용된 AS언어라면, 서명 검사장치는 DigitalSignatureOP를 식별하기 위해 초기에 기술된 유사한 방법(AN 프로그램(200)의 컴파일을 기술한 단락에서 기술된 방법)으로 이들 서명을 검사한다. 그러나, 이러한 경우에 있어서, 컴파일러 및 컴파일 파티의 공개 키는 신뢰성 있는 키 저장소(106)로부터 검색되며, DigitalSignatureC에서 MDC및 해시함수CID를 해독하고 DigitalSignatureCP에서 MDCP및 해시함수CPID을 해독하기 위해 각각 사용된다. 더욱이, 해독된 MDCP및 MDC에 대응하는 테스트 메시지 요약(테스트 MDC및 테스트MDCP)은 해독된 해시함수CID 및 해시함수CPID에 의해 식별된 해시함수C및 해시함수CP에 따라, AS 프로그램 코드의 데이터 비트와 테스트 MDC에 대한 DigitalSignatureOP의 데이터 비트 더한 데이터 비트에 대한 해시코드를 계산하고동일한 데이터 비트와 테스트 MDCP에 대한 DigitalSignatureC의 데이터 비트를 더한 데이터 비트에 대한 해시코드를 계산함으로서 발생된다.
만일 디지털 서명C(DigitalSignatureC) 및/또는 디지털 서명CP(DigitalSignatureCP)가 모든 AS 프로그램에 대해 검사되지 않는다면(즉, MDC≠ 테스트MDC및/또는 MDCP≠ 테스트 MDCP), 서명 검사장치(136)는 클래스 로더(136)에 실폐결과를 다시 전송한다. 이에 응답하여, 클래스 로더는 클래스 로딩과정을 중지하며 이것이 발생했다는 적정 메시지를 발생시킨다.
그러나, 만일 DigitalSignatureC및 DigitalSignatureCP가 모든 AS 프로그램에 대해 검사된다면(즉, MDC≠ 테스트 MDC및 MDCP= 테스트 MDCP), AN 프로그램 실행자(124)는 AS 프로그램이 컴파일된 AN 프로그램에 대한 OrigParty 서명(DigitalSignatureOP)을 검사하기 위해 서명 검사장치(132)를 다시 호출한다. OrigParty 디지털 서명을 검사하기 위해서, 각각의 DigitalSignatureOP는 AN 프로그램(200)의 컴파일에 관한 단락에서 초기에 기술한 것과 동일한 방법으로 검사된다.
만일 AS 프로그램이 컴파일된 각각의 AN 프로그램의 DigitalSignatureOP가 검사된다면, 클래스 로더는 목적 클래스의 모든 AN 프로그램 및 AS프로그램이 컴파일된 AN 프로그램의 완전성을 검사하기 위해 AN 프로그램 완전성 검사장치를 호출한다. 이는 초기에 기술한 방법과 동일한 방법으로 행해진다. 만일 임의의 이들 AN프로그램의 완전성이 검사되지 않는다면, AN 프로그램 완전성 검사장치는 클래스 로딩과정을 중지하며 적절한 메시지를 발생시키는 클래스 로더에 실폐결과를 다시 전송한다.
그러나, 만일 각각의 AN 프로그램의 완전성이 검사된다면, AN 프로그램 완전성 검사장치(126)는 클래스 로더(136)에 패스결과를 다시 전송한다. 이에 응답하여, 클래스 로더는 호출된 방법을 실행하기 위해 AN 프로그램 실행자 또는 AS 프로그램 실행자를 호출한다.
전술한 것처럼, 실행 파티는 디지털 서명이 검사될 수 있는 완전성 검사가능 AN 프로그램 및 AS 프로그램을 가진 신뢰성 없는 저장소(142)에 있는 신뢰성 없는 목적 클래스만이 로딩되고 또한 신뢰성없는 목적 클래스의 프로그램만이 실행될 수 있도록 한다.
다른 실시예
앞서 기술된 본 발명의 일부 특징은 선택적인 것이다. 따라서, 당업자는 이들 특징을 포함하지 않는 다른 실시예가 존재하는 다는 것을 인식해야 한다.
예를들어, AN 프로그램 컴파일러는 컴파일링 파티 및 AN 프로그램 컴파일러에 대한 DigitalSignatureCP및 DigitalSignatureC둘다를 발생시키는 것으로 기술되었다. 그러나, AN 프로그램 컴파일러는 AS 프로그램을 컴파일하기 위해 사용된 컴파일러 또는 컴파일링 파티중 하나를 검사하기 위하여 상기 디지털 서명중 하나만을 발생시키도록 단순하게 구성될 수 있다.
유사하게, 프로그램 실행자는 DigitalSignatureCP및 DigitalSignatureC둘다의 검사를 필요로하는 것으로 기술되었다. 그러나, 프로그램 실행자는 이들 디지털 서명중 하나의 검사만을 필요로하도록 구성될 수 있으며, 선택적으로 검사된 AS 프로그램이 한 디지털 서명을 포함한다면 다른 디지털 서명만을 검사하도록 구성될 수 있다. 더욱이, 프로그램 실행자는 컴파일링 파티가 신뢰성이 있으며 또한 컴파일링 파티가 컴파일하기 전에 AS 프로그램으로 컴파일된 각각의 AS 프로그램의 완전성(integrity)을 검사한다는 가정에 기초하여, 각각의 AS 프로그램에 대응하는 AN 프로그램의 완전성을 검사하는 단계를 스킵(skip)하도록 구성될 수 있다.
실행 파티가 원시 파티일 때, 실행 파티는 원시 파티가 AS 프로그램(300)으로 컴파일될 컴파일링 파티의 서버 컴퓨터(104)에 AN 프로그램(200)을 전송한 것을 안다. 이러한 경우에, 클래스 로더(136)는 AN 프로그램에서 DigitalSignatureOP를 검사하기 위해 서명 검사장치를 호출하지 않도록 구성될 수 있다. 오히려, 실행 파티는 AN 프로그램의 로컬 복사의 DigitalSignatureOP와 컴파일된 AS 프로그램의 DigitalSignatureOP를 단순히 비교할 수 있다. 선택적으로, 클래스 로더는 AN 프로그램의 완전성이 컴파일링 서버 컴퓨터에 전송되기 전에 과정을 컴파일하기 위한 준비동안 검사되기 때문에 호출된 AS 프로그램에 대응하는 AN 프로그램의 완전성을 검사하기 위해 AN 프로그램 보존성 검사장치(126)를 호출하지 않도록 구성될 수 있다. 선택적으로, AN 프로그램 컴파일링 준비기(128)는, AN 프로그램의 완전성이 컴파일러에 의해 검사된 이후의 과정을 컴파일하기 위한 준비동안 그리고 클래스 로더가 대응하는 AS 프로그램의 실행전에 AN 프로그램 완전성 검사장치를 호출할때, AN 프로그램 보존성 검사장치를 호출하지 않도록 구성될 수 있다.
당업자는 본 발명의 권리범위를 벗어나지 않고 본 발명을 변형할 수 있다. 따라서, 본 발명은 청구범위의 사상 및 범위에 의해서만 제한된다.
본 발명은 대응 AN 프로그램으로부터 컴파일된 AS 프로그램의 사용자가 AN 프로그램을 컴파일하는 사용자의 식별자, 대응 AN 프로그램의 식별자 및 AS 프로그램이 컴파일되는 AS 언어를 인증할 수 있으며, 소오스, 컴파일 정보 및 완전성이 검사될 수 없는 AS 프로그램의 호출을 막는동안 모든 적합 테스크가 수행될 수 있도록 신뢰될 수 있으며 완전성이 검사되지 않는 AS 프로그램을 호출하기 위해 검사 가능한 AN 프로그램이 실행될 수 있게 하는 효과를 가진다.

Claims (26)

  1. 컴파일링 파티(compiling paty)에 의해 동작되며, 원시 파티(originating party)에 의해 발생된 아키텍처 중간 프로그램을 수신하는 프로그램 컴파일링 컴퓨터를 포함하며, 상기 아키텍처 중간 프로그램은 아키텍처 중간 프로그램 코드와, 검사시에 아키텍처 중간 프로그램이 상기 원시 파티에 의해 서명되었는지를 검사하기 위하여 사용되는 상기 원시 파티의 디지털 서명을 가지며,
    상기 프로그램 컴파일 컴퓨터는,
    상기 원시 파티의 디지털 서명을 검사하는 서명 검사장치와,
    상기 수신된 아키텍처 중간 프로그램이 소정의 오퍼랜드 스택 및 데이터형 사용 제한치를 포함하는 소정의 완전성 기준(integrity criteria)을 만족하는지를 검사하는 프로그램 검사장치와,
    상기 원시 파티의 디지털 서명이 검사되고 상기 수신된 아키텍처 중간 프로그램의 완전성이 상기 프로그램 검사장치에 의하여 검사되었을때 아키텍처 특정 프로그램을 발생시키며, (A) 아키텍처 중간 프로그램 코드를 아키텍처 특정 언어의 아키텍처 특정 프로그램 코드로 컴파일함으로서 그리고 (B) 검사시에 상기 아키텍처 특정 프로그램이 상기 컴파일링 파티에 의해 발생되었는지를 검사하기 위하여 사용되는 컴파일링 파티의 디지털 서명을 첨부함으로서 상기 아키텍처 특정 프로그램을 발생시키는 컴파일러와,
    상기 컴파일링 파티의 디지털 서명을 발생시키는 서명 발생기와,
    실행 파티(executing party)에 의해 동작되며, 상기 아키텍처 특정 프로그램을 수신하는 프로그램 실행 컴퓨터를 포함하며;
    상기 프로그램 실행 컴퓨터는,
    상기 컴파일링 파티의 디지털 서명을 검사하는 서명 검사장치와,
    상기 아키텍처 특정 언어로 된 프로그램 코드를 실행하며, 상기 컴파일링 파티의 서명이 검사되었을때 상기 아키텍처 특정 프로그램 코드를 실행하는 실행자와,
    특정 아키텍처 중간 프로그램이 소정의 오퍼랜드 스택 및 데이터형태 이 사용 제한치를 포함하는 상기 소정의 완전성 기준을 만족하는지의 여부를 검사하는 프로그램 검사장치와,
    상기 특정 아키텍처 중간 프로그램이 상기 소정의 완전성 기준(integrity criteria)을 만족하는 것으로 상기 프로그램 검사장치가 검사할때 상기 특정 아키텍처 중간 프로그램을 실행하는 아키텍처 중간 프로그램을 포함하며;
    상기 프로그램 실행 컴퓨터에 의해 상기 컴파일링 파티의 디지털 서명을 검사함으로써, 상기 원시 파티의 디지털 서명 뿐만아니라 상기 아키텍처 특정 프로그램이 컴파일된 상기 아키텍처 중간 프로그램의 완전성이 간접적으로 검사되는 것을 특징으로 하는 컴퓨터 네트워크.
  2. 제1항에 있어서, 상기 아키텍처 중간 프로그램은 자바 바이트코드 프로그램이며, 상기 프로그램 검사장치는 자바 바이트코드 프로그램 검사장치이며;
    상기 실행자는 상기 컴파일링 파티가 소정의 신뢰성 있는 컴파일링 파티 세트의 멤버일때만 상기 아키텍처 특정 프로그램 코드를 실행하는 것을 특징으로 하는 컴퓨터 네트워크
  3. 제 1항에 있어서,
    상기 서명 발생기는 검사시에 상기 아키텍처 특정 프로그램이 컴파일러로 발생되었는지를 검사하기 위하여 사용되는 컴파일러의 디지털 서명을 발생시키며;
    상기 컴파일러는 상기 컴파일러의 디지털 서명을 상기 아키텍처 특정 프로그램 코드에 첨부함으로서 상기 아키텍처 특정 프로그램을 발생시키며;
    상기 실행 컴퓨터의 서명 검사장치는 상기 컴파일러의 디지털 서명을 검사하며;
    상기 실행자는 상기 컴파일러의 디지털 서명이 검사된 후에만 상기 아키텍처 특정 프로그램 코드를 실행하는 것을 특징으로 하는 컴퓨터 네트워크.
  4. 제 3항에 있어서, 상기 아키텍처 중간 프로그램은 자바 바이트코드 프로그램이며, 상기 프로그램 검사장치는 자바 바이트코드 프로그램 검사장치이며;
    상기 실행자는 상기 컴파일링 파티가 소정의 신뢰성있는 컴파일링 파티 세트의 멤버이고 상기 컴파일러가 소정의 신뢰성있는 컴파일러 세트의 멤버일때만 상기 아키텍처 특정 프로그램 코드를 실행하는 것을 특징으로 하는 컴퓨터 네트워크.
  5. 제 1항에 있어서,
    상기 원시 파티 및 상기 컴파일링 파티에 대하여, 상기 네트워크는 대응하는 전용 및 공개 암호화 키와 대응하는 해시함수를 포함하며,
    상기 원시 파티의 디지털 서명은 상기 아키텍처 중간 프로그램상에서 원시파티의 대응 해시함수를 실행함으로서 발생되는 상기 아키텍처 중간 프로그램의 메시지 요약을 포함하며, 상기 아키텍처 중간 프로그램의 메시지 요약은 상기 원시 파티의 대응 공개 키로 암호화되며;
    상기 프로그램 컴파일링 컴퓨터의 서명 검사장치는 (A) 상기 원시 파티의 공개 암호화 키로 상기 아키텍처 중간 프로그램의 메시지 요약을 해독하고, (B) 상기 아키텍처 중간 프로그램 코드상에서 원시 파티의 해시함수를 실행하여 상기 아키텍처 중간 프로그램의 대응하는 테스트 메시지 요약을 발생하며, (C) 상기 해독된 메시지 요약 및 상기 아키텍처 중간 프로그램의 테스트 메시지 요약을 비교함으로서, 상기 원시 파티의 디지털 서명을 검사하기 위한 명령을 포함하며;
    상기 서명 발생기는 (A) 상기 아키텍처 특정 프로그램 코드상에서 상기 컴파일 파티의 대응하는 해시함수를 실행하여 발생된 상기 아키텍처 중간 프로그램의 메시지 요약을 발생시키고, (B) 상기 컴파일링 파티의 대응하는 전용 키로 상기 아키텍처 특정 프로그램의 메시지 요약을 암호화함으로서, 컴파일링 파티의 디지털 서명을 발생시키는 명령을 포함하며;
    상기 프로그램 실행 컴퓨터의 서명 검사장치는 (A) 상기 컴파일링 파티의 공개 암호화 키로 상기 아키텍처 특정 프로그램의 메시지 요약을 해독하고, (B) 상기아키텍처 특정 프로그램 코드상에서 상기 컴파일링 파티의 해시함수를 실행하여 상기 아키텍처 특정 프로그램의 대응하는 테스트 메시지 요약을 발생하며, (C) 상기 해독된 메시지 요약과 상기 아키텍처 특정 프로그램의 상기 테스트 메시지 요약을 비교함으로서, 상기 컴파일링 파티의 디지털 서명을 검사하는 명령을 포함하는 것을 특징으로 하는 컴퓨터 네트워크.
  6. 제 1항에 있어서, 상기 아키텍처 중간 프로그램은 자바 바이트코드 프로그램이며;
    상기 프로그램 실행 컴퓨터는 상기 아키텍처 중간 프로그램을 수신하거나 발생시키며, 또한 상기 프로그램 실행 컴퓨터는 상기 아키텍처 중간 프로그램 코드가 소정의 프로그램 완전성 기준을 만족하는지를 검사함으로써 상기 아키텍처 중간 프로그램 코드의 완전성을 검사하는 자바 바이트코드 프로그램 완전성 검사장치를 더 포함하며;
    상기 실행자는 상기 아키텍처 중간 프로그램 코드의 완전성이 검사된후에만상기 아키텍처 특정 프로그램 코드를 실행시키는 것을 특징으로 하는 컴퓨터 네트워크.
  7. 제 1항에 있어서, 상기 아키텍처 중간 프로그램을 제공하는 프로그램 발생 컴퓨터를 더 포함하며;
    상기 프로그램 발생 컴퓨터는 상기 아키텍처 중간 프로그램 코드에 첨부된원시 파티(originating party)의 디지털 서명을 발생시키는 서명 발생기를 포함하며;
    상기 프로그램 컴파일링 컴퓨터는 상기 프로그램 발생 컴퓨터로부터 상기 아키텍처 중간 프로그램을 수신하여 상기 아키텍처 특정 프로그램을 상기 프로그램 발생 컴퓨터에 제공하기 위하여 상기 프로그램 발생 컴퓨터와 통신하며;
    상기 프로그램 실행 컴퓨터는 상기 프로그램 발생 컴퓨터로부터 상기 아키텍처 중간 및 특정 프로그램을 수신하기 위하여 상기 프로그램 발생 컴퓨터와 통신하며;
    상기 프로그램 실행 컴퓨터의 서명 검사장치는 상기 원시 파티의 디지털 서명을 검사하며;
    상기 실행자는 상기 원시 파티의 디지털 서명이 검사된후에만 상기 아키텍처 특정 프로그램을 실행하는 것을 특징으로 하는 컴퓨터 네트워크.
  8. 제 1항에 있어서,
    상기 프로그램 실행 컴퓨터는 상기 아키텍처 중간 프로그램을 발생시키며;
    상기 프로그램 실행 컴퓨터는 상기 아키텍처 중간 프로그램을 서명하며 상기 아키텍처 중간 프로그램 코드에 첨부되는 상기 원시 파티의 디지털 서명을 발생시키는 신호 발생기를 포함하며;
    상기 프로그램 컴파일링 컴퓨터는 상기 프로그램 실행 컴퓨터로부터 상기 아키텍처 중간 프로그램을 수신하며 상기 아키텍처 특정 프로그램을 상기 프로그램실행 컴퓨터에 제공하기 위하여 상기 프로그램 실행 컴퓨터와 통신하는 것을 특징으로 하는 컴퓨터 네트워크.
  9. 컴파일링 파티(compiling party)에 의해 동작되는 프로그램 컴파일링 컴퓨터에서,
    원시 파티(originating party)에 의해 발생되는 아키텍처 중간 프로그램을 수신하는 단계를 포함하는데, 상기 아키텍처 중간 프로그램은 검사시에 아키텍처 중간 프로그램이 상기 원시 파티에 의해 서명되었는지를 검사하기 위하여 사용되는 원시파티의 디지털 서명과 아키텍처 중간 프로그램 코드를 포함하며,
    상기 원시파티의 디지털 서명을 검사하는 단계와,
    상기 원시파티의 디지털 서명이 검사되고 상기 아키텍처 중간 프로그램의 완전성이 검사되었을때 아키텍처 특정 프로그램을 발생시키기 위해 컴파일러로 상기 아키텍처 중간 프로그램을 컴파일하고, 검사시에 상기 아키텍처 특정 프로그램이 상기 컴파일링 파티에 의해 발생되었는지를 검사하기 위하여 사용되는 상기 컴파일링 파티의 디지털 서명을 첨부하는 단계를 포함하며;
    실행 파티(executing party)에 의해 동작되는 프로그램 실행 컴퓨터에서,
    상기 아키텍처 특정 프로그램을 수신하고, 상기 아키텍처 중간 프로그램을 수신 또는 발생시키는 단계와,
    상기 컴파일링 파티의 디지털 서명을 검사하는 단계와,
    특정 아키텍처 중간 프로그램이 소정의 오퍼랜드 스택 및 데이터 형태의 사용 제한치를 포함하는 소정의 완전성 기준을 만족하는지를 결정하는 단계와,
    상기 특정 아키텍처 중간 프로그램이 상기 소정의 완전성 기준을 만족한다고 상기 프로그램 검사장치가 검사할때 상기 특정 아키텍처 중간 프로그램을 실행시키는 단계를 포함하며;
    상기 프로그램 실행 컴퓨터에 의해 상기 컴파일링 파티의 디지털 서명을 검사함으로써, 상기 원시 파티의 서명 뿐만아니라 상기 아키텍처 특정 프로그램이 컴파일링된 상기 아키텍처 중간 프로그램의 완전성이 간접적으로 검사되는 것을 특징으로 하는 컴퓨터 네트워크를 동작시키는 방법.
  10. 제 9항에 있어서, 상기 아키텍처 중간 프로그램은 자바 바이트코드 프로그램이며, 프로그램 검사장치는 자바 바이트코드 프로그램 검사장치이며;
    상기 프로그램 실행 컴퓨터는 상기 컴파일링 파티가 소정의 신뢰성 있는 컴파일링 파티 세트의 멤버인 것을 특징으로 하는 컴퓨터 네트워크를 동작시키는 방법.
  11. 제 9항에 있어서,
    상기 프로그램 컴파일 네트워크에서,
    검사시에 상기 아키텍처 특정 프로그램이 상기 컴파일러로 발생되었는지를 검사하기 위하여 사용되는 상기 컴파일러의 디지털 서명을 발생시키는 단계와,
    상기 컴파일러의 디지털 서명을 상가 아키텍처 특정 프로그램 코드에 첨부하는 단계를 포함하며;
    상기 프로그램 실행 컴퓨터에서,
    상기 컴퓨터의 디지털 서명을 검사하는 단계와,
    상기 컴파일러의 디지털 서명이 검사된후에만 상기 아키텍처 특정 프로그램을 실행시키는 단계를 포함하는 것을 특징으로 하는 컴퓨터 네트워크를 동작시키는 방법.
  12. 제 11항에 있어서, 상기 아키텍처 중간 프로그램은 자바 바이트코드 프로그램이며, 상기 프로그램 검사장치는 자바 바이트코드 프로그램 검사장치이며;
    상기 프로그램 실행 컴퓨터에서는 상기 컴파일링 파티가 소정의 신뢰성있는 컴파일링 파티 세트의 멤버이며 상기 컴파일러가 소정의 신뢰성있는 컴파일러 세트의 멤버일때만 상기 아키텍처 특정 프로그램을 실행시키는 것을 특징으로 하는 컴퓨터 네트워크를 동작시키는 방법.
  13. 제 9항에 있어서,
    상기 원시 및 컴파일 파티에 대하여, 상기 네트워크는 대응하는 전용 및 공개 암호화 키와 대응하는 해시함수를 포함하며;
    상기 원시파티의 디지털 서명은 아키텍처 중간 프로그램상에서 상기 원시 파티의 대응하는 해시함수를 실행함으로서 발생되고, 상기 원시파티의 대응하는 전용키로 암호화되는 상기 아키텍처 중간 프로그램의 메시지 요약을 포함하며;
    상기 프로그램 컴파일 컴퓨터에서,
    (A) 상기 원시 파티의 공개 암호화 키로 상기 아키텍처 중간 프로그램의 메시지 요약을 해독하고, (B) 상기 아키텍처 중간 프로그램 코드상에서 상기 원시 파티의 해시함수를 실행하여 상기 아키텍처 중간 프로그램의 대응하는 테스트 메시지 요약을 발생시키며, (C) 상기 해독된 메시지 요약과 상기 아키텍처 중간 프로그램의 상기 테스트 메시지 요약을 비교함으로서, 상기 원시 파티의 디지털 서명을 검사하는 단계와,
    (A) 상기 아키텍처 특정 프로그램 코드상에서 상기 컴파일 파티의 대응하는 해시함수를 실행하여 발생된 상기 아키텍처 중간 프로그램의 메시지 요약을 발생시키며, (B) 상기 컴파일링 파티의 대응하는 전용 키로 상기 아키텍처 특정 프로그램의 상기 메시지 요약을 암호화함으로서 상기 컴파일 파티의 디지털 서명을 발생시키는 단계를 더 포함하며;
    상기 프로그램 실행 컴퓨터에서,
    (A) 상기 컴파일링 파티의 공개 암호화 키로 상기 아키텍처 특정 프로그램의 메시지 요약을 해독하고, (B) 상기 아키텍처 특정 프로그램 코드상에서 상기 컴파일 파티의 해시함수를 실행하여 상기 아키텍처 특정 프로그램의 대응하는 터스트 메시지 요약을 발생하며, (C) 상기 해독된 메시지 요약 및 상기 아키텍처 특정 프로그램의 상기 테스트 메시지 요약을 비교함으로서 상기 컴파일FLD 파티의 특정 서명을 검사하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 네트워크를 동작시키는 방법.
  14. 제 9항에 있어서, 상기 아키텍처 중간 프로그램은 자바 바이트코드 프로그램이며;
    상기 프로그램 실행 컴퓨터에서,
    상기 아키텍처 중간 프로그램을 수신 또는 발생시키는 단계와,
    상기 아키텍처 중간 프로그램 코드가 소정의 프로그램 완전성 기준을 만족하는지를 검사함으로써 상기 아키텍처 중간 프로그램 코드의 완전성을 검사하는 단계와,
    상기 아키텍처 중간 프로그램 코드의 완전성이 검사된후에만 상기 아키텍처 특정 프로그램 코드를 실행하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 네트워크를 동작시키는 방법.
  15. 제 9항에 있어서,
    상기 아키텍처 중간 프로그램을 제공하는 프로그램 발생 컴퓨터에서, 상기 원시 파티의 디지털 서명을 발생시키고 이를 상기 아키텍처 중간 프로그램 코드에 첨부하는 단계를 더 포함하며;
    상기 프로그램 컴파일링 컴퓨터에서, 상기 프로그램 발생 컴퓨터로부터 상기 아키텍처 중간 프로그램을 수신하여 상기 아키텍처 특정 프로그램을 상기 프로그램 발생 컴퓨터에 제공하기 위하여 상기 프로그램 발생 컴퓨터와 통신하는 단계를 더 포함하며;
    상기 프로그램 실행 컴퓨터에서,
    상기 프로그램 발생 컴퓨터로부터 상기 아키텍처 중간 및 특정 프로그램을 수신하기 위하여 상기 프로그램 발생 컴퓨터와 통신하는 단계와,
    상기 원시 파티의 디지털 서명을 검사하는 단계와,
    상기 원시 파티의 디지털 서명이 검사된후에만 상기 아키텍처 특정 프로그램을 실행시키는 단계를 더 포함하는 특징으로 하는 컴퓨터 네트워크를 동작시키는 방법.
  16. 제 9항에 있어서,
    상기 프로그램 실행 컴퓨터에서,
    상기 아키텍처 중간 프로그램을 제공하는 단계와,
    상기 아키텍처 중간 프로그램을 서명하는 원시 파티의 디지털 서명을 발생시키고, 이를 상기 아키텍처 중간 프로그램 코드에 첨부하는 단계를 더 포함하며;
    상기 프로그램 컴파일 컴퓨터에서,
    상기 프로그램 실행 컴퓨터로부터 상기 아키텍처 중간 프로그램을 수신하고 상기 프로그램 실행 컴퓨터에 상기 아키텍처 특정 프로그램을 제공하기 위해 상기 프로그램 실행 컴퓨터와 통신하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 네트워크를 동작시키는 방법.
  17. 컴파일링 파티에 의해 동작되며 원시 파티에 의해 발생된 아키텍처 중간 프로그램을 수신하는 프로그램 컴파일링 컴퓨터와 관련하여 사용되도록 구성된 제 1모듈과,
    실행 파티에 의해 동작되며, 상기 아키텍처 특정 프로그램을 수신하는 프로그램 실행 컴퓨터와 관련하여 사용되도록 구성된 제 2모듈을 포함하며;
    상기 아키텍처 중간 프로그램은 아키텍처 중간 프로그램 코드와, 검사시에 아키텍처 중간 프로그램이 상기 원시 파티에 의해 서명되었는지를 검사하기 위하여 사용되는 상기 원시 파티의 디지털 서명을 가지며;
    상기 제 1모듈은,
    상기 원시파티의 디지털 서명을 검사하는 서명 검사장치와,
    상기 수신된 아키텍처 중간 프로그램이 소정의 오퍼랜드 스택 및 데이터 형태의 사용 제한치를 포함하는 소정의 완전성 기준을 만족하는지를 검사하는 프로그램 검사장치와,
    상기 원시 파티의 디지털 서명이 검사되고 상기 수신된 아키텍처 중간 프로그램의 완전성이 상기 프로그램 검사장치에 의하여 검사되었을때 아키텍처 특정 프로그램을 발생시키며, (A) 상기 아키텍처 중간 프로그램 코드를 아키텍처 특정 프로그램 언어의 아키텍처 특정 프로그램 코드로 컴파일하고 (B) 검사시에 상기 아키텍처 특정 프로그램이 상기 컴파일 파티에 의해 발생되는지를 검사하기 위하여 사용되는 컴파일 파티의 디지털 서명을 첨부함으로서 상기 아키텍처 특정 프로그램을 발생시키는 컴파일러와,
    상기 컴파일링 파티의 디지털 서명을 발생시키는 서명 발생기를 포함하며;
    상기 제 2모듈은,
    상기 컴파일링 파티의 디지털 서명을 검사하는 서명 검사장치와,
    상기 아키텍처 특정 언어로된 프로그램 코드를 실행시키며, 상기 컴파일링 파티의 서명이 검사되었을때 상기 아키텍처 특정 프로그램 코드를 실행시키는 실행자와,
    특정 아키텍처 중간 프로그램이 소정의 오퍼랜드 스택 및 데이터 형태의 사용 제한치를 포함하는 소정의 완전성 기준을 만족하는지의 여부를 검사하는 프로그램 검사장치와,
    상기 특정 아키텍처 중간 프로그램이 상기 소정의 완전성 기준을 만족하는 것으로 상기 프로그램 검사장치가 검사한때 상기 특정 아키텍처 중간 프로그램을 실행시키는 아키텍처 중간 프로그램 실행자를 포함하며;
    상기 제 2모듈에서 상기 서명 검사장치에 의하여 상기 컴파일링 파티의 디지털 서명을 검사함으로써, 상기 원시 파티의 서명뿐만아니라 상기 아키텍처 특정 프로그램이 컴파일된 아키텍처 중간 프로그램의 완전성이 간접적으로 검사되는 것을 특징으로 하는 코드를 분산시키기 위한 시스템.
  18. 제 17항에 있어서, 상기 아키텍처 중간 프로그램은 자바 바이트코드 프로그램이며, 상기 프로그램 검사장치는 자바 바이트코드 프로그램 검사장치이며;
    상기 실행자는 상기 컴파일링 파티가 소정의 신뢰성 있는 컴파일링 파티 세트의 멤버일때만 상기 아키텍처 특정 프로그램 코드를 실행시키는 것을 특징으로하는 코드를 분산시키기 위한 시스템.
  19. 제 17항에 있어서,
    상기 서명 발생기는 검사시에 상기 아키텍처 특정 프로그램이 컴파일러로 발생되었는지를 검사하기 위하여 사용되는 컴파일러의 디지털 서명을 발생시키며;
    상기 제 1모듈은 상기 아키텍처 특정 프로그램 코드에 상기 컴파일러의 디지털 서명을 부가하며;
    상기 제 2 모듈의 서명 검사장치는 상기 컴파일러의 디지털 서명을 검사하며;
    상기 제 2 모듈 실행자는 상기 컴파일러의 디지털 서명이 검사된후에만 상기 아키텍처 특정 프로그램 코드를 실행시키는 것을 특징으로 하는 코드를 분산시키기 위한 시스템.
  20. 제 19항에 있어서, 상기 아키텍처 중간 프로그램은 자바 바이트코드 프로그램이며, 상기 프로그램 검사장치는 자바 바이트코드 프로그램 검사장치이며;
    상기 제 2모듈의 실행자는 상기 컴파일링 파티가 소정의 신뢰성있는 컴파일링 파티 세트의 멤버이고 상기 컴파일러가 소정의 신뢰성 있는 컴파일러 세트의 멤버일때만 상기 아키텍처 특정 프로그램 코드를 실행시키는 것을 특징으로 하는 코드를 분산시키기 위한 시스템.
  21. 제 17항에 있어서,
    상기 원시 및 컴파일링 파티에 대하여, 상기 시스템은 대응하는 전용 및 공개 암호화 키와 대응하는 해시함수를 포함하며;
    상기 원시 파티의 디지털 서명은 상기 아키텍처 중간 프로그램상에서 상기 원시 파티의 대응하는 해시함수를 실행시킴으로써 발생되며 상기 원시 파티의 대응하는 전용 키로 암호화되는 상기 아키텍처 중간 프로그램의 메시지 요약을 포함하며;
    상기 제 1모듈의 서명 검사장치는 (A) 상기 원시 파티의 공개 암호화 키로 상기 아키텍처 중간 프로그램의 메시지 요약을 해독하고, (B) 상기 아키텍처 중간 프로그램 코드상에서 상기 원시 파티의 해시함수를 실행하여 상기 아키텍처 중간 프로그램의 대응하는 테스트 메시지 요약을 발생시키며, (C) 상기 해독된 메시지 요약 및 상기 아키텍처 중간 프로그램의 상기 테스트 메시지 요약을 비교함으로서, 상기 원시파티의 디지털 서명을 검사하기 위한 명령을 포함하며;
    상기 제 1모듈의 서명 발생기는 (A) 상기 아키텍처 특정 프로그램 코드상에서 상기 컴파일링 파티의 대응하는 해시함수를 실행하여 발생된 상기 아키텍처 중간 프로그램의 메시지 요약을 발생시키고, (B) 상기 컴파일링 파티의 대응하는 전용키로 상기 아키텍처 특정 프로그램의 상기 메시지 요약을 암호화함으로서, 상기 컴파일링 파티의 디지털 서명을 발생시키기 위한 명령을 포함하며;
    상기 제 2모듈의 서명 검사장치는 (A) 상기 컴파일링 파티의 공개 암호화 키로 상기 아키텍처 특정 프로그램의 상기 메시지 요약을 해독하고, (B) 상기 아키텍처 특정 프로그램 코드상에서 상기 컴파일링 파티의 해시함수를 실행하여 상기 아키텍처 특정 프로그램의 대응하는 테스트 메시지 요약을 발생시키며, (C) 상기 해독된 메시지 요약 및 상기 아키텍처 특정 프로그램의 상기 테스트 메시지 요약을 비교함으로써, 상기 컴파일링 파티의 디지털 서명의 메시지 요약을 검사하기 위한 명령을 포함하는 것을 특징으로 하는 코드를 분산시키기 위한 시스템.
  22. 제 17항에 있어서, 상기 아키텍처 중간 프로그램은 자바 바이트코드 프로그램이며;
    상기 프로그램 실행 컴퓨터는 상기 아키텍처 중간 프로그램을 수신하거나 발생시키며;
    상 제 2 모듈은 상기 아키텍처 중간 프로그램 코드가 소정의 프로그램 완전성 기준을 만족하는지를 검사함으로써 상기 아키텍처 중간 프로그런 코드의 완전성을 검사하는 자바 바이트코드 프로그램 완전성 검사장치를 더 포함하며;
    상기 제 2모듈의 실행자는 상기 아키텍처 중간 프로그램의 완전성이 검사된후에만 상기 아키텍처 특정 프로그램 코드를 실행시키는 것을 특징으로 하는 코드를 분산시키기 위한 시스템.
  23. 제 17항에 있어서, 상기 시스템은 상기 아키텍처 중간 프로그램을 제공하는 프로그램 발생 컴퓨터와 관련하여 사용되는 제 3 모듈을 더 포함하며;
    상기 제 3 모듈은 상기 아키텍처 중간 프로그램 코드에 부가된 원시 파티의디지털 서명을 발생시키는 서명 발생기를 포함하며;
    상기 제 1 모듈은 상기 프로그램 발생 컴퓨터로부터 상기 아키텍처 중간 프로그램을 수신하고 상기 아키텍처 특정 프로그램을 상기 프로그램 발생 컴퓨터에 제공하기 위하여 상기 제 3 모듈과 통신하며;
    상기 제 2 모듈은 상기 프로그램 발생 컴퓨터로부터 상기 아키텍처 중간 및 특정 프로그램을 수신하기 위하여 상기 제 3 모듈과 통신하며;
    상기 제 2 모듈의 서명 검사장치는 상기 원시 파티의 디지털 서명을 검사하며;
    상기 제 2 모듈의 실행자는 상기 원시 파티의 디지털 서명이 검사된후에만 상기 아키텍처 특정 프로그램을 실행시키는 것을 특징으로 하는 코드를 분산시키기 위한 시스템.
  24. 제 17항에 있어서, 상기 프로그램 실행 컴퓨터는 상기 아키텍처 중간 프로그램을 발생시키며;
    상기 제 2 모듈은 상기 원시 파티의 디지털 서명, 및 상기 원시 파티의 디지털 서명을 상기 아키텍처 중간 프로그램 코드에 부가하기 위한 명령을 발생시키는 서명 발생시를 포함하며;
    상기 제 1모듈은 상기 프로그램 실행 컴퓨터로부터 상기 아키텍처 중간 프로그램을 수신하여 상기 아키텍처 특정 프로그램을 상기 프로그램 실행 컴퓨터에 제공하기 위하여 상기 제 2 모듈과 통신하는 것을 특징으로 하는 코드를 분산시키기위한 시스템.
  25. 컴퓨터 판독가능 저장매체 및 상기 저장매체에 저장된 컴퓨터 프로그램 메커니즘을 포함하며, 하나 이상의 컴퓨터 시스템과 관련하여 사용되는 컴퓨터 프로그램 제품에 있어서,
    컴파일링 파티에 의해 동작되며 상기 원시 파티에 의해 발생된 아키텍처 중간 프로그램을 수신하는 프로그램 컴파일링 컴퓨터와 관련하여 사용되도록 구성된 제 1모듈과,
    실행 파티에 의하여 동작되며 상기 아키텍처 특정 프로그램을 수신하는 프로그램 실행 컴퓨터와 관련하여 사용되는 제 2 모듈을 포함하며;
    상기 아키텍처 중간 프로그램은 아키텍처 중간 프로그램 코드와, 검사시에 아키텍처 중간 프로그램이 상기 원시 파티에 의해 서명되었는지를 검사하기 위하여 사용되는 상기 원시 파티의 디지털 서명을 가지며;
    상기 제 1모듈은,
    상기 원시파티의 디지털 서명을 검사하는 서명 검사장치와,
    상기 수신된 아키텍처 중간 프로그램이 소정의 오퍼랜드 스택 및 데이터 형태의 사용 제한치를 포함하는 소정의 완전성 기준을 만족하는지를 검사하는 프로그램 검사장치와,
    상기 원시 파티의 디지털 서명이 검사되고 상기 수신된 아키텍처 중간 프로그램의 완전성이 상기 프로그램 검사장치에 의하여 검사되었을때 아키텍처 특정 프로그램을 발생시키며, 또한 (A) 상기 아키텍처 중간 프로그램 코드를 아키텍처 특정 언어의 아키텍처 특정 프로그램 코드로 컴파일하고 (B) 검사시에 상기 아키텍처 특정 프로그램이 상기 컴파일 파티에 의해 발생되는지를 검사하기 위하여 사용되는 컴파일 파티의 디지털 서명을 부가함으로서 상기 아키텍처 특정 프로그램을 발생시키는 컴파일러와,
    상기 컴파일링 파티의 디지털 서명을 발생시키는 서명 발생기를 포함하며;
    상기 제 2모듈은,
    상기 컴파일링 파티의 디지털 서명을 검사하는 서명 검사장치와,
    상기 아키텍처 특정 언어로된 프로그램 코드를 실행시키며, 상기 컴파일링 파티의 서명이 검사되었을때 상기 아키텍처 특정 프로그램 코드를 실행시키는 실행자와,
    특정 아키텍처 중간 프로그램이 소정의 오퍼랜드 스택 및 데이터 형태의 사용 제한치를 포함하는 소정의 완전성 기준을 만족하는지의 여부를 검사하는 프로그램 검사장치와,
    상기 특정 아키텍처 중간 프로그램이 상기 소정의 완전성 기준을 만족하는 것으로 상기 프로그램 검사장치가 검사한때 상기 특정 아키텍처 중간 프로그램을 실행시키는 아키텍처 중간 프로그램 실행자를 포함하며;
    상기 프로그램 실행 컴퓨터에 의하여 상기 컴파일링 파티의 디지털 서명을 검사함으로써, 상기 원시 파티의 서명 뿐만아니라 상기 아키텍처 특정 프로그램이 컴파일된 아키텍처 중간 프로그램의 완전성이 간접적으로 검사되는 것을 특징으로하는 컴퓨터 프로그램 제품.
  26. 제 25항에 있어서, 상기 서명 발생기는 검사시에 상기 아키텍처 특정 프로그램이 상기 컴파일러로 발생되는지의 여부를 검사하기 위하여 사용되는 상기 컴파일러의 디지털 서명을 발생시키며;
    상기 제 1 모듈은 상기 컴파일러의 디지털 서명을 상기 아키텍처 특정 프로그램 코드에 부가하며;
    상기 제 2 모듈의 서명은 상기 컴파일러의 디지털 서명을 검사하며;
    상기 제 2 모듈의 실행자는 상기 컴파일러의 디지털 서명이 검사된후에만 그리고 상기 컴파일러 파티가 소정의 신뢰성 있는 컴파일링 파티 세트의 멤버이고 상기 컴파일러가 소정의 신뢰성있는 컴파일러 세트의 멤버일때에만 상기 아키텍처 특정 프로그램을 실행시키는 것을 특징으로 하는 컴퓨터 프로그램 제품.
KR1019960062292A 1995-12-08 1996-12-06 아키텍처중간프로그램의신뢰성있는컴파일아키텍처특정버전을발생시키기위한시스템및방법 KR100420569B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/569,397 1995-12-08
US08/569,397 US6067575A (en) 1995-12-08 1995-12-08 System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs

Publications (2)

Publication Number Publication Date
KR970049509A KR970049509A (ko) 1997-07-29
KR100420569B1 true KR100420569B1 (ko) 2004-06-10

Family

ID=24275282

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960062292A KR100420569B1 (ko) 1995-12-08 1996-12-06 아키텍처중간프로그램의신뢰성있는컴파일아키텍처특정버전을발생시키기위한시스템및방법

Country Status (10)

Country Link
US (1) US6067575A (ko)
EP (1) EP0778522B1 (ko)
JP (1) JPH1069382A (ko)
KR (1) KR100420569B1 (ko)
CN (1) CN1103968C (ko)
AU (1) AU718051B2 (ko)
CA (1) CA2191522C (ko)
DE (1) DE69635204D1 (ko)
SG (1) SG75106A1 (ko)
TW (1) TW355773B (ko)

Families Citing this family (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
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
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6466947B2 (en) * 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
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
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects 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
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
US6708171B1 (en) 1996-04-23 2004-03-16 Sun Microsystems, Inc. Network proxy
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. 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
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
JPH1165851A (ja) * 1997-08-12 1999-03-09 Mitsubishi Electric Corp ファイル変換方法および記録媒体
US6334189B1 (en) * 1997-12-05 2001-12-25 Jamama, Llc Use of pseudocode to protect software from unauthorized use
US6219787B1 (en) * 1997-12-22 2001-04-17 Texas Instruments Incorporated Method and apparatus for extending security model to native code
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
EP1058883A2 (en) 1998-02-26 2000-12-13 Sun Microsystems, Inc. Method and system for deterministic hashes to identify remote methods
CN1298503A (zh) * 1998-02-26 2001-06-06 太阳微系统公司 分布式系统中的动态查找服务
US6324685B1 (en) 1998-03-18 2001-11-27 Becomm Corporation Applet server that provides applets in various forms
JPH11282672A (ja) * 1998-03-31 1999-10-15 Hitachi Software Eng Co Ltd オンラインプログラム転送方法およびオンラインプログラム実行システム
JPH11338710A (ja) * 1998-05-28 1999-12-10 Toshiba Corp 複数種の命令セットを持つプロセッサのためのコンパイル方法ならびに装置および同方法がプログラムされ記録される記録媒体
US6430569B1 (en) 1998-08-14 2002-08-06 Sun Microsystems, Inc. Methods and apparatus for type safe, lazy, user-defined class loading
WO2000042498A1 (fr) * 1999-01-13 2000-07-20 Hitachi, Ltd. Procede et systeme permettant d'executer un code mobile
JP3360635B2 (ja) * 1999-01-14 2002-12-24 日本電気株式会社 プログラム検査システムとプログラム検査方法並びにその記憶媒体
US6581206B2 (en) 1999-11-12 2003-06-17 Sun Microsystems, Inc. Computer program language subset validation
US6880155B2 (en) 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
EP1035461A3 (de) * 1999-03-11 2004-04-14 BDC - EDV Consulting GmbH Terminal für gesichertes Bestätigen von Daten und Verfahren hierzu
US6601114B1 (en) 1999-05-27 2003-07-29 Sun Microsystems, Inc. Fully lazy linking with module-by-module verification
US6618855B1 (en) 1999-05-27 2003-09-09 Sun Microsystems, Inc. Caching untrusted modules for module-by-module verification
US6763397B1 (en) 1999-05-27 2004-07-13 Sun Microsystems, Inc. Fully lazy linking
US6766521B1 (en) 1999-05-27 2004-07-20 Sun Microsystems, Inc. Dataflow algorithm for symbolic computation of lowest upper bound type
US6618769B1 (en) 1999-05-27 2003-09-09 Sun Microsystems, Inc. Module-by-module verification
AU5470600A (en) * 1999-06-20 2001-01-09 Thinkpulse, Inc. Method and system of performing a security check of a smart device description file
NL1013249C2 (nl) * 1999-10-08 2001-04-10 Tryllian B V Werkwijze voor het overdragen van een softwaremodule van een zender aan een ontvanger in een computersysteem of computernetwerk.
US8453133B2 (en) 1999-11-12 2013-05-28 Oracle America, Inc. Optimization of N-base typed arithmetic instructions via rework
US7010786B2 (en) 1999-11-12 2006-03-07 Sun Microsystems, Inc. Predictive arithmetic overflow detection
US7207037B2 (en) 1999-11-12 2007-04-17 Sun Microsystems, Inc. Overflow sensitive arithmetic instruction optimization using chaining
US6363523B1 (en) 1999-11-12 2002-03-26 Sun Microsystems, Inc. Optimization of N-base typed arithmetic expressions
US7107581B2 (en) 1999-11-12 2006-09-12 Sun Microsystems, Inc. Overflow predictive arithmetic instruction optimization using chaining
US6629163B1 (en) 1999-12-29 2003-09-30 Implicit Networks, Inc. Method and system for demultiplexing a first sequence of packet components to identify specific components wherein subsequent components are processed without re-identifying components
US7155606B1 (en) 2000-04-12 2006-12-26 Microsoft Corporation Method and system for accepting preverified information
AU2001247742A1 (en) 2000-04-12 2001-10-30 Microsoft Corporation Method and system for accepting precompiled information
US20060053284A1 (en) * 2000-05-09 2006-03-09 Microsoft Corporation Restricted software and hardware usage on a computer
ES2180391B1 (es) * 2000-09-25 2003-12-16 Telesincro S A Circuito integrado.
US6971023B1 (en) * 2000-10-03 2005-11-29 Mcafee, Inc. Authorizing an additional computer program module for use with a core computer program
US7296275B2 (en) * 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
NZ536782A (en) 2001-01-31 2005-10-28 Ntt Docomo Inc System for program delivery to a storage module of a mobile terminal
CN1529849B (zh) * 2001-02-02 2011-05-04 开放电视公司 编译用于交互式电视的解释性语言的方法和装置
US7305697B2 (en) 2001-02-02 2007-12-04 Opentv, Inc. Service gateway for interactive television
EP1356680B1 (en) 2001-02-02 2013-05-22 Opentv, Inc. A method and apparatus for reformatting of content for display on interactive television
DE10108487A1 (de) * 2001-02-22 2002-09-12 Giesecke & Devrient Gmbh Verfahren und System zur verteilten Erstellung eines Programms für einen programmierbaren, tragbaren Datenträger
JP4099070B2 (ja) 2001-05-14 2008-06-11 株式会社エヌ・ティ・ティ・ドコモ 移動体端末の記憶部に格納されたプログラムを管理するシステム
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7660887B2 (en) * 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US8086664B2 (en) * 2001-09-24 2011-12-27 Siemens Industry, Inc. Method and apparatus for programming programmable controllers and generating configuration data from a centralized server
DE10157251A1 (de) * 2001-11-22 2003-06-05 Siemens Ag Verfahren zum Zugriff auf Daten eines Automatisierungsgerätes und Automatisierungsgerät
US8789183B1 (en) 2002-07-19 2014-07-22 Fortinet, Inc. Detecting network traffic content
AU2002321718A1 (en) * 2002-08-13 2004-02-25 Nokia Corporation Computer architecture for executing a program in a secure of insecure mode
US20040122962A1 (en) * 2002-12-24 2004-06-24 Difalco Robert A. Service environment integrity based service selection
US7587754B2 (en) * 2002-12-24 2009-09-08 Tripwire, Inc. Environment integrity assured transactions
US8402550B2 (en) * 2003-10-17 2013-03-19 Trinary Anlagenbau Gmbh Method and device for preventing a control error of a machine tool
US7516331B2 (en) * 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
JP4727278B2 (ja) * 2005-04-05 2011-07-20 株式会社エヌ・ティ・ティ・ドコモ アプリケーションプログラム検証システム、アプリケーションプログラム検証方法およびコンピュータプログラム
US8682795B2 (en) * 2005-09-16 2014-03-25 Oracle International Corporation Trusted information exchange based on trust agreements
US7681239B2 (en) * 2005-09-30 2010-03-16 Microsoft Corporation Modularly constructing a software defined radio
US8396041B2 (en) 2005-11-08 2013-03-12 Microsoft Corporation Adapting a communication network to varying conditions
JP4537940B2 (ja) * 2005-11-21 2010-09-08 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、及びプログラム実行制御方法
US8381047B2 (en) 2005-11-30 2013-02-19 Microsoft Corporation Predicting degradation of a communication channel below a threshold based on data transmission errors
US7624131B2 (en) * 2007-01-18 2009-11-24 Microsoft Corporation Type restriction and mapping for partial materialization
DE102008055076A1 (de) * 2008-12-22 2010-07-01 Robert Bosch Gmbh Vorrichtung und Verfahren zum Schutz von Daten, Computerprogramm, Computerprogrammprodukt
US8850211B2 (en) * 2009-04-27 2014-09-30 Qualcomm Incorporated Method and apparatus for improving code and data signing
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
DE102009024985A1 (de) * 2009-06-16 2010-12-23 Giesecke & Devrient Gmbh Verfahren zur Ausführung eines Bytecodes in einer gesicherten Laufzeitumgebung
DE102009031143B3 (de) * 2009-06-30 2010-12-09 Siemens Aktiengesellschaft Vorrichtung und Verfahren zum Erstellen und Validieren eines digitalen Zertifikats
WO2012079531A1 (zh) * 2010-12-16 2012-06-21 华为技术有限公司 提升移动微件widget应用性能的方法及装置
CN102141914A (zh) * 2010-12-16 2011-08-03 华为技术有限公司 提升移动微件Widget应用性能的方法及装置
US8631628B1 (en) 2011-02-25 2014-01-21 Clearview Composite Wall System, LLC Tilt-up concrete spandrel assemblies and methods
US8756582B2 (en) * 2011-08-22 2014-06-17 International Business Machines Corporation Tracking a programs calling context using a hybrid code signature
US8997038B2 (en) * 2012-03-30 2015-03-31 Anypresence, Inc. Systems and methods for building and deploying mobile applications
CN103914329B (zh) * 2014-03-20 2017-05-10 北京京东尚科信息技术有限公司 编译程序的方法和装置
EP3026559A1 (en) * 2014-11-28 2016-06-01 Thomson Licensing Method and device for providing verifying application integrity
US9547484B1 (en) * 2016-01-04 2017-01-17 International Business Machines Corporation Automated compiler operation verification
US10230527B2 (en) * 2017-04-19 2019-03-12 Continental Automotive Systems, Inc. Method and apparatus to quickly authenticate program using a security element
JP7024792B2 (ja) * 2017-07-31 2022-02-24 日本電気株式会社 プログラム検証システム、方法およびプログラム
CN115955365A (zh) * 2023-03-14 2023-04-11 之江实验室 一种内生安全的网络编译系统及方法

Family Cites Families (13)

* 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
US5280613A (en) * 1990-06-25 1994-01-18 Hewlett-Packard Company ANDF installer using the HPcode-Plus compiler intermediate language
JP2665089B2 (ja) * 1991-09-26 1997-10-22 三菱電機株式会社 分散環境下におけるコンパイル方式
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5359659A (en) * 1992-06-19 1994-10-25 Doren Rosenthal Method for securing software against corruption by computer viruses
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.
US5432937A (en) * 1993-08-20 1995-07-11 Next Computer, Inc. Method and apparatus for architecture independent executable files
US5343527A (en) * 1993-10-27 1994-08-30 International Business Machines Corporation Hybrid encryption method and system for protecting reusable software components
US5475753A (en) * 1993-11-12 1995-12-12 Matsushita Electric Corporation Of America Apparatus and method for certifying the delivery of information
US5724425A (en) * 1994-06-10 1998-03-03 Sun Microsystems, Inc. Method and apparatus for enhancing software security and distributing software
US5559884A (en) * 1994-06-30 1996-09-24 Microsoft Corporation Method and system for generating and auditing a signature for a computer program
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

Also Published As

Publication number Publication date
EP0778522A2 (en) 1997-06-11
US6067575A (en) 2000-05-23
JPH1069382A (ja) 1998-03-10
CN1103968C (zh) 2003-03-26
KR970049509A (ko) 1997-07-29
AU718051B2 (en) 2000-04-06
EP0778522A3 (en) 1999-04-07
CA2191522A1 (en) 1997-06-09
AU7402196A (en) 1997-06-12
CN1157959A (zh) 1997-08-27
EP0778522B1 (en) 2005-09-21
SG75106A1 (en) 2000-09-19
DE69635204D1 (de) 2006-02-02
CA2191522C (en) 2003-05-06
TW355773B (en) 1999-04-11

Similar Documents

Publication Publication Date Title
KR100420569B1 (ko) 아키텍처중간프로그램의신뢰성있는컴파일아키텍처특정버전을발생시키기위한시스템및방법
KR100433319B1 (ko) 신뢰된소오스로부터의검사불가능한프로그램을사용하는장치로검사가능한프로그램을실행하기위한시스템및방법
CN102880456B (zh) 插件加载方法及系统
JP3786722B2 (ja) デジタル署名を用いた進行オブジェクト指向型プログラムの有効利用方法および装置
US6922782B1 (en) Apparatus and method for ensuring data integrity of unauthenticated code
US7117371B1 (en) Shared names
US6742006B2 (en) Method and apparatus for selective execution of a computer program
EP0875814A2 (en) Information processing apparatus and method and recording medium
US11106512B2 (en) System and method for container provenance tracking
US20060059350A1 (en) Strong names
Kim et al. Capturing information flow with concatenated dynamic taint analysis
Faupel Status of Industry Work on Signed Mobile Code
CN115248767A (zh) 远程代码测试方法、装置、设备及存储介质
EP4012584A1 (en) Method for creating extended elf files to provide unified and secure deployments
US20240020359A1 (en) User-trusted executable execution environment
JP2007128537A (ja) 動的に接続可能な実行イメージの真正性検証システム及び方法
Shin et al. An Investigation of PSA Certified
Korre Security and Data De-Duplication Using Hybrid Cloud Technology
AU722119B2 (en) A method for operating computers and for processing information among computers
CN113139197A (zh) 一种项目验签方法、装置和电子设备
CN114911522A (zh) 一种软件版本发布系统、方法、设备及可读存储介质
Midi et al. Towards Authenticated Objects

Legal Events

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

Payment date: 20070208

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee