CN1103968C - 受托编译中性结构程序版本产生特定结构的系统和方法 - Google Patents

受托编译中性结构程序版本产生特定结构的系统和方法 Download PDF

Info

Publication number
CN1103968C
CN1103968C CN96121380A CN96121380A CN1103968C CN 1103968 C CN1103968 C CN 1103968C CN 96121380 A CN96121380 A CN 96121380A CN 96121380 A CN96121380 A CN 96121380A CN 1103968 C CN1103968 C CN 1103968C
Authority
CN
China
Prior art keywords
program
mesomorphism
hoc structure
originators
digital sign
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
CN96121380A
Other languages
English (en)
Other versions
CN1157959A (zh
Inventor
查尔斯·E·麦克梅尼斯
弗兰克·耶林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of CN1157959A publication Critical patent/CN1157959A/zh
Application granted granted Critical
Publication of CN1103968C publication Critical patent/CN1103968C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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

一个分布计算机系统,具有一程序编译计算机,它由一编译方操作,并包括一个编译程序,当检验了一中性结构程序的始发方数字署名时,编译程序通过(A)将中性结构程序码编译成特定结构程序码,和(B)将编译方数字署名加到特定结构程序码以产生一特定结构程序,该系统还具有一程序执行计算机,它由一执行方运行,并包括一特定结构程序执行器,当验证3中性结构程序的始发方数字署名、特定结构程序编译方数字署名和编译方是规定的受托编译方时,该特定结构程序执行器执行特定结构程序码。

Description

受托编译中性结构程序版本产生特定结构的系统 和方法
                       技术领域
本发明一般涉及一种分布式计算机系统,特别涉及一种程序编译系统(Program Compilation System)和方法,其中,由受托的第三方以如下方式对中性结构可执行程序进行编译,所述的方式是指该编译程序的接受者能够检验所述相应中性结构程序的同一性(identity)并能够检验它由所述受托第三方(trusted third party)所编译。
                       背景技术
术语“结构”被规定用于这个文件的目的意指一系列型号计算机(familyof computer models)的运行特性。不同的结构例子是:Macintosh计算机、使用DOS或Windows操作系统的IBM PC兼容计算机、运行Solaris操作系统的SUN微系统计算机和使用Unix操作系统的计算机系统。
术语“中性结构”(architecture neutral)被规定用于这个文件的目的涉及到使用一些不同的计算机结构在多种计算机平台上执行诸如用Java(Sun Microsystem公司的商标)语言编写的程序等某些程序的能力。
术语“特定结构”被规定用于这个文件的目的涉及到仅使用一个单一的计算机结构在计算机平台上执行某些程序的请求。例如,用80486汇编程序语言编写的目标代码程序只能在使用IBM PC兼容计算机结构的计算机(以及含有IBM PC兼容计算机仿真器的其它计算机)上执行。
中性结构程序(ANPrograms)的重要特性包括用所述中性结构语言(ANLanguage)编写的程序的结构独立性。例如,Java字节码程序可以在具有Java字节码解译程序的任意一个计算机平台上执行。Java字节码程序的另一个重要特性是在执行以前利用Java字节码检验器(verifier)可以直接检验它们的完整性。Java字节码检验器确定所述的程序是否符合预定的完整性标准。这些标准包括操作数栈(operand stack)和数据类型使用限制,该使用限制保证Java字节码程序不会在执行计算机的操作数栈中上溢或下溢,并保证所有的程序指令仅利用已知数据类型的数据。其结果是Java字节码程序不能够建立目标指针,并且,通常不能访问除用户显然已经被授权允许使用的系统资源以外的系统资源。
遗憾的是,分布在ANLanguage中的可执行程序使得所述ANProgram的运行效率要低于如果利用特定结构性能时所能达到的效率。例如,由Java字节码解译程序执行的Java字节码程序的运行速度通常要比在相应的特定结构语言(ASLanguage)中编译的等效特定结构程序(ASProgram)慢2.5到5倍。在速度减少5倍被认为对于一个ANProgram执行器(即,解译程序)来讲是不好的同时,它会在效率方面带来足够大的损失,所以某些用户将需要或坚持要求按ASLanguage编译的等效程序的能力使用。
编写的编译程序可将ANProgram编译成等效ASProgram,但是,对于终端用户来讲,它们特别昂贵。另外,不能利用一个ANProgram完整性检验器根据编译的ASProgram代码来直接检验所述等效编译的ASProgram的完整性。因此,在Java字节码程序的情况下,将ANProgram编译成等效ASProgram的这种使用可能导致ANLanguage的一种最重要特性的丧失。
但是,存在有某些合法的(或正当的)任务,这些任务可以利用完整性不可检验的ASProgram加以执行,但不能利用完整性可检验的ANProgram加以执行。这些任务包括其它违背设置在完整性可检验的ANProgram上的操作数栈和数据类型使用限制的任务,另外,这种ASProgram能够比ANProgram执行得更快,其结果是就存在有为什么希望具有如下计算机系统的理由,这种计算机系统被设计成除了具有执行完整性不可检验的ASProgram的能力以外,它主要用于执行完整性可检验的ANProgram。
虽然通过第三者执行ANProgram的编译是可能的,但是,这种编译需要将所述的第三者认证,就是说,必须可以对由特定受托的第三者编译的ASProgram中的信息进行检验。最好,它还能够确认编译后的ASProgram是由一个特定受托编译程序产生的,并且由于相对于预定完整性标准编译后的ASProgram的完整性不能够被直接检验,所以该编译后的ASProgram应当包括某种信息,这种信息可以用能检验的方式识别依据其进行编译的相应的ANProgram和对其进行编译的ASLanguage。
                       发明内容
因此,本发明的一个目的是提供一种ANProgram编译程序和编译方法,这种编译方法使根据相应的ANProgram所编译的ASProgram的用户能够确认编译该ANProgram的编译者的同一性以及所述相应的ANProgram的同一性和其中所编译的ASProgram的ASLanguage语言。
本发明的另一个目的是提供一种ANProgram执行器(executer)和一种执行方法,这种方法是在防止调用其源、编译信息和完整性不能检验的ASProgram的同时,允许正在执行的、完整性可检验的ANProgram去调用受托的或具有可检验源和编译信息的完整性不可检验的ASProgram,从而使得几乎所有的合法任务都可以被执行。
本发明提供一种计算机网络,包括:由一个编译方操作的程序编译计算机,该程序编译计算机接收一个由始发方产生的中性结构程序,该中性结构程序包含有中性结构程序码和所述始发方的数字署名,当其被检验时检验由所述始发方所标记的中性结构程序,所述程序编译计算机包括:一个署名检验器,用于检验所述始发方的数字署名;一个编译单元,用于当所述始发方的数字署名被检验完毕时,产生特定结构程序,所述编译单元,通过下述方式产生所述特定结构程序,所述方式是:(A)按照特定结构语言将所述中性结构程序码编译成特定结构程序码,和(B)附加一个编译方的数字署名,当其被检验时,检验由所述编译方产生的特定结构程序;署名发生器,用于产生编译方的数字署名;和由一个执行方操作的程序执行计算机,该程序执行计算机接收特定结构程序,和接收或始发该中性结构程序,所述程序执行计算机包括:一个署名检验器,用于检验所述编译方的数字署名;一个执行器,用于执行按所述特定结构语言写成的程序码,当所述编译方的署名已被检验,并且所述的编译方是指定设定的受托编译方时,所述执行器执行特定结构程序码。
本发明还提供一种操作计算机网络的方法,包括如下步骤:在由一个编译方操作的程序编译计算机处:接收由一个始发方产生的中性结构程序,该中性结构程序含有中性结构程序码和所述始发方的数字署名,当其被检验时,检验由所述始发方所标记的所述中性结构程序;检验所述始发方的数字署名;和当所述始发方的数字署名被检验完毕时,利用一个编译程序对所述中性结构程序进行编译,从而产生一个特定结构程序,并附加一个编译方的数字署名,当其被检验时,检验由所述编译方产生的特定结构程序;和在由一个执行方操作的程序执行计算机处:接收所述特定结构程序和接收或始发所述中性结构程序;检验所述编译方的数字署名;和当所述编译方的数字署名被验证完毕且所述编译方被确定是一指定设定的受托编译方时,执行所述特定结构程序。
总之,本发明是一种计算机网络,该网络包括一个程序编译计算机和一个程序执行计算机。
所述程序编译计算机是由编译方(compiling party)运行的,它包括一个存储器,用于存储由一个始发方(originating party)产生的中性结构程序。所述中性结构程序包含有中性结构程序码和所述始发方的一个数字署名(signature)。所述程序编译计算机还包括一个署名检验器,该检验器检验所述始发方的数字署名,以验证所述始发方的数字署名匹配与附加到中性结构程序的署名(即:是由其产生)。
所述程序编译计算机还包括一个编译程序,当验证完所述始发方的数字署名时,该编译程序按照由对信息编译所识别的特定结构语言,将该中性结构程序码编译成特定结构程序码。该编译程序使用一个署名发生器将一个所述编译程序的数字署名附加到所述特定结构程序码上,其中,该编译程序的署名标记一组信息,该信息包括所编译的特定结构程序码加上位于所述中性结构程序上的署名。在最佳实施例中,所述编译程序使用上述署名发生器将所述编译方的数字署名也附加到特定结构程序码上,其中,编译方署名标记一组信息,该信息包括所编译的特定结构程序码、位于中性结构程序上的署名和该编译程序署名。
所述程序执行计算机由执行方操作,它包括一个存储器,用于存储中性结构和特定结构程序。它还包括一个署名检验器,用于(A)检验处于中性结构程序形式下的所述始发方的数字署名,和(B)检验处于特定结构程序形式下的编译程序的数字署名和/或检验处于特定结构程序形式下的编译方的数字署名。术语“检验一个署名”的意思是执行一个过程以确定所述的署名与被所述署名标记的该组信息相匹配(即:实际上是由其产生)。
所述程序执行计算机还包括一个特定结构程序执行器,当处于所述特定结构程序形式下的数字署名被验证完毕时,该特定程序执行器执行所述特定结构程序的特定结构程序码。
在最佳实施例中,在一个对象中表示了所述中性结构程序,所述对象含有一个数字署名,该数字署名包括唯一与所述中性结构程序相关的一个消息摘要。由所述编译程序产生的该特定结构程序包括:
·该编译的、特定结构码;
·由所述中性结构程序的提供方标记的该相应的中性结构程序的数字署名;
·编译程序本身的数字署名,包括所编译的程序的消息摘要和用于识别编译该程序所使用的和利用编译程序的专用加密密钥标记的编译程序的信息;和
·执行该编译的受托方的数字署名,包括所编译的程序的消息摘要和用于识别该受托方的信息和使用编译方的专用加密密钥标记的信息。
通常可以获得的公用加密密钥的受托储存部分(repository),有时调用一个命名服务,并保持该公用密钥以用于该编译程序和受托的编译方。使用这些公用加密密钥,该编译程序的所有接受者都能够对编译后的程序中的数字署名进行解密,以验证所述的编译程序是由指定的受托方编译以及是由指定的编译程序编译,并且,检验相应的中性结构程序的同一性。作为选择,编译程序的接受者能够使用一个程序检验器在执行所编译的特定结构程序之前去检验相应的中性结构程序的正确运行。
                       附图简述
本发明的其它目的和特征通过下述结合附图的详细描述及所附权利要求将变得更清楚。
图1是本发明最佳实施例中的一个分布计算机系统方框图;
图2是根据本发明最佳实施例的一个中性结构程序的结构;
图3是根据本发明最佳实施例产生的一个编译的、特定结构程序结构;
图4是根据本发明一个最佳实施例的一个对象和相关的对象分类。
                       具体实施方式
参看图1,这里示出了一计算机网络100,它包括很多客户计算机102、服务计算机104和受托密钥储存部分106。经过网络通信连接器108,客户计算机102彼此相连并与服务计算机104和受托密钥储存部分106相互连接。所述网络通信连接器可以是一个局部或广域网络、互联网络、这些网络的结合或某些其它类型的网络通信连接器。
虽然大多数客户计算机102是诸如Sun工作站、IBm兼容计算机、Macintosh计算机等桌面计算机,但是实际上任何类型的计算机都可作一客户计算机。这些客户计算机中的每一个都包括一个CPU110,一个用户接口112,一个存储器114和一个网络通信接口116。所述网络通信接口允许多个客户计算机彼此间以及与服务计算机104和与受托密钥储存部分108之间经过网络通信连接器106相互通信。
每个客户计算机102的存储器114存储有一个操作系统118,一个网络通信管理器120,一个ANProgram(中性结构程序)执行器122,一个ASProgram(特定结构程序)执行器124,和一个ANProgram完整性检验器126,一个ANProgram编译制备器128,一个署名发生器130,一个署名检验器132,一个编译信息(Complnfo)检验器134,一个对象分类加载器136,一个用户地址空间138,一个受托对象分类储存部分140,一个未受托对象分类储存部分142和一个已知的受托编译方和受托编译程序的表144。所述操作系统运行在CPU110上,并响应由一用户通过所述用户接口112发出的命令而控制和协调在所述CPU上运行的程序120-136。
每个客户计算机102的ANProgram执行器1 22执行存储在所述受托和未受托对象分类储存部分140和142内所述对象分类中的ANProgram。并且所述ANProgram按照一个ANLanguage编写,对于这个ANLanguage,用户可建立诸如堆栈和数据使用限制的预定完整性标准,从而使得该ANProgram不执行非法的任务。因此,在执行之前,通过确定该程序是否满足所述预定完整性标准,ANProgram完整性检验器126可以直接验证所述ANProgram的完整性。因此,这个ANProgram被认为是完整性可检验的ANProgram。
在最佳实施例中,所述完整性可检验的ANProgram由所述Java字节码语言编写。并且,ANProgram执行器122和ANProgram检验器124分别是Java字节码程序解译器和Java字节码程序检验器,它们分别被用于执行和检验所述的Java字节码程序。所述Java字节码检验器和解译器是由SunMicrosystem公司生产的。
但是,每个客户计算机102都具有一个相关的特定结构,对于这个结构,许多程序可以按相应的ASLanguage编写并由所述ASProgram执行器122执行。所述ASLanguage不需要按ASLanguage编写的ASProgram满足ANLanguage的预定完整性标准。其结果是所述ASProgram能够执行某些任务,而这些任务不能够由所述ANProgram执行由于其没有被装载而受到所述ANLanguage的预定完整性标准所设置的限制。但是,遗憾的是这也意味着它们的完整性不能够利用所述ANProgram完整性检验器126直接进行检验,并因此被认为完整性不可检验。
尽管如此,如前面所指出的,ANProgram运行的效率要低于按ASLanguage编译的同一程序。因此考虑到与用户的客户计算机相关的ASLanguage,客户计算机102的用户可以希望具有一个由服务计算机(server computer)104编译的ANProgram,以使所编译的ASProgram能够在那里被ASProgram执行器124执行,或者,如果利用其它客户计算机的ASProgram执行器124分布和执行此编译的ASProgram,那么用户可以希望具有考虑到与其它客户计算机相关的ASLanguage编译的ANProgram。
制备一个用于编译的中性结构程序(ANProgram)
参看图1和2,当一个始发方(OrigParty)希望具有一个由所述服务计算机1 04编译的ANProgram 200时,OrigParty利用用户接口112发出一个命令以对所述ANProgram编译制备器128提出一个请求并指令它制备用于编译的ANProgram。该ANProgram可以位于包含在受托或未受托对象分类储存部分140或142的其中之一内的一个对象分类中。表1包含有由ANProgram编译制备器128使用的该过程的伪代码表示,用于制备由服务计算机104编译的ANProgram。表1-3中使用的伪代码采用通用计算机语言规范。这里使用伪代码的主要目的是用于叙述,同时,它可以很容易被本专业技术领域内的计算机程序编制人员所理解。
参看图1和图2以及表1,所述ANProgram编译制备器128首先调用所述ANProgram完整性检验器126并指令它检验ANProgram 200的ANProgram代码202的完整性。做这项工作的目的在于确认在将其传送给服务计算机104进行编译之前,ANProgram码满足所述ANLanguage的预定完整性标准。如果所述ANProgram码不满足预定的完整性标准,那么,所述ANProgram完整性检验器将一失效结果送回ANProgram编译制备器。作为响应,所述ANProgram编译制备器中止编译制备过程并产生一个适当的消息以指示该状态。
但是,如果该ANProgram码202满足所述预定的完整性标准,那么,ANProgram完整性检验器126将一个通过的结果回送给ANProgram编译制备器128。该ANProgram编译制备器然后调用署名发生器130并指令它产生origParty的数字署名(DigitalSignatureDP)210,该署名210可以被检验以保证所述ANProgram 200由受托的OrigParty产生。署名发生器通过首先产生所述ANProgram码202的消息摘要(MDOP)212产生所述的DigitalSignatureOP。这是通过在ANProgram码的数据比特上计算一个散列函数、即HashFunctionOP而进行的。所使用的该散列函数可以是一个预定的散列函数,也可以是由所述OrigParty选择的一个散列函数。本文为描述的目的,该HashFunctionOP对应于所述OrigParty,由于它用于所述OrigParty的DigitalSignatureDP
然后,署名发生器130利用OrigParty的专用加密密钥(OrigParty与Privatekey)加密所产生的消息摘要(MDOP)212和HashFunctionOP(HashFunctionOP ID)214的该ID。然后,该署名发生器将所述OrigParty的ID 216加到位于加密项212和214末端处明文(clear text)中,以形成所述DigitalSignatureOP。OrigParty的专用密钥和ID由具有用户接口112的OrigParty提供。
在产生DigitalSignatureOP 210以后,所述ANProgram编译制备器128将它附加到ANProgram码202上。然后,ANProgram编译制备器产生一个已经制备的所述服务计算机104用于编译的ANProgram 200的消息。
然后,OrigParty利用用户接口112向网络通信管理器120发出一个命令,以便将所述的ANProgram 200和一些变元(argument)一起传送给服务计算机104,这些变元说明将被编译成该程序的特定结构语言(ASLanguage ID)和所使用的编译程序(Compiler ID)。该网络通信管理器从配置有受托或未受托的对象分类储存部分140或142中提取所述ANProgram,并将它提供给网络通信接口116。然后,该网络通信管得器指令网络通信接口将ANProgram和所述特定变元一起传送给服务计算机。
                     编译一个中性结构程序
然后,服务计算机104接收被传送的ANProgram 200。该服务计算机包括CPU150,用户接口152,存储器154和网络通信接口156。该网络通信接口允许该服务计算机经过网络通信连接器108与客户计算机102和受托密钥储存部分106进行通信。
服务计算机104的存储器154存储一个操作系统158,一个网络通信管理器160,一个ANProgram编译程序162,一个署名检验器164,一个ANProgram完整性检验器166,一个署名发生器168,一个ANProgram储存部分repository 170和一个ASProgram储存部分repository 172。操作系统在CPU 150上运行,并响应编译方(CompParty)利用用户接口152发出的命令控制和协调在CPU上运行的程序160-168。
该网络通信接口156接收该ANProgram 200并将正发生的该情况指示给网络通信管理器160。作为响应,该网络通信管理器将所接收的ANProgram放置入ANProgram储存部分170中。如果所述服务器104被设置成自动编译程序服务器,那么,通过网络通信管理器160自动执行编译。反之,当该CompParty利用所述用户接口发出一个命令时,所述网络通信管理器将所述ANProgram移入储存部分170。
然后,或是自动地、或是根据该CompParty利用所述用户接口252发出的命令,该ANProgram编译程序162被请求对ANProgram 200进行编译。表2包含有该ANProgram编译程序对所述ANProgram进行编译所使用的编译过程伪码表示。
参看图1-2和表2,该ANProgram编译程序162首先调用该署名检验器164去检验在所接收的ANProgram 200中的DigitalSignatuyeOP 210,从而建立如下状态,即:所述DigitalSignatuyeOP 210实际上是始发方用于该ANProgram的署名(例如,与在所述ANProgram某些其它版本上的OrigParty署名或伪造的署名相对照)。特别是,该署名检验器使用在所接收ANProgram中的明文Orig Party的ID 216以便从受托密钥储存部分106中获得所述OrigParty的公用密钥。然后,该署名检验器使用所述OrigParty的公用加密密钥(OrigParty’s publickey)对在DigitalSignatuyeOP中的被加密的MDOP212和HashFuctionOP ID 214进行解密。
接着,该署名检验器164根据所接收的ANProgram 200的ANProgram码202计算相应的Hahs FuctionOP而产生一个测试消息摘要(TestMDOP),该测试消息摘要应当与被解密的MDOP相匹配。解密的DigitalSignatuyeOP中的HashFuctionOP ID 214用于识别所使用的适当的HashFuctionOP。然后,将解密的MDOP和所产生的TestMDOP进行比较以检验所述的DigitalSignatuyeOP210。
如果MDOP212和TestMDOP不相匹配,那么,该署名检验器162回送一个失效结果给该ANProgram编译程序162。作为响应,该ANProgram编译程序中止编译过程并产生一个适当的消息。
另一方面,如果MDOP 212和TestMDOP相匹配,那么,署名检验器回送一个通过结果给ANProgram编译程序162,并且所述ANProgram编译程序162调用ANProgram完整性检验器166。它指令所述ANProgram完整性检验器去检验所接收ANProgram 200的ANProgram码202的完整性。与在前面讨论的制备用于编译的ANProgram部分相比,其执行的方式相同并具有相同的目的。因此,如果ANProgram码不满足所述预定完整性标准,那么,ANProgram完整性检验器就要回送一个失效结果给ANProgram编译程序。作为响应,所述ANProgram编译程序中止编译过程并产生一个指示该状态的适当消息。
但是,如果所接收ANProgram 200的ANProgram码202满足了所述的预定完整性标准,那么,ANProgram完整性检验器166回送一个通过结果给ANProgram编译程序162。编译程序162然后将ANProgram码编译成利用由所述OrigParty指定的ASL anguage ID识别的ASLanguage。参看图1-3和表2,所述编译程序将ANProgram码202,DigitalSignatureOP 210和编译后的ASProgram码302放置入ASProgram 300,该ASProgram 300被存储在ASProgram储存部分172中。
ANProgram编译程序162然后调用署名发生器168并指令它产生ANProgram编译程序的数字署名(DigitalSignatureC)320,该数字署名320可以被检验以保证所述ASProgram 300由受托的ANProgram编译程序编译。它的执行方式类似于前面描述的有关产生DigitalSignatureOP的执行方式。但是,在这种情况下,所标记的一组信息是ASProgram码和DigitalSignatureOP。具有相应Ha shFunctionC ID 234的其它预定散列函数可以被用于产生将由DigitalSidnatureC标记的该组信息的消息摘要MDC322,ANProgram编译程序的专用加密密钥(编译程序的专用密钥)被用于加密所述MDC和HashFunctionC ID,ANProgram编译程序的识别符(编译程序的ID)被加到位于被加密的MDC和HashFunctionC末端处的明文中。所述编译程序的专用密钥和ID由ANProgram编译程序提供。
ANProgram编译程序162第二次调用署名发生器168以产生CompParty的数字署名(DigitalSignatureCP)312,该数字署名312可以被终端用户(enduser)检验以保证所述ASProgram 300由受托的CompParty产生。关于这一点的执行方式类似于前面所述的关于(在制备用于编译的ANProgram的讨论中)产生DigitalSignatureOP的方式。但是,这里为DigitalSignatureCP产生的消息摘要(MDCP)314是通过在ASProgram码、DigitalSignatureOP和DigitalSignatureC的数据比特的基础上计算一个预定的或所选择的散列函数(HashFunctionCP)产生的。与所述HashFunctionOP类似,为该文件叙述的目的,HashFunctionCP对应于所述CompParty,由于它被用于CompoParty的DigitalSignatureCP
然后,署名发生器168利用CompParty的专用加密密钥(CompParty的专用密钥)加密所述MDCP 314和HashFanctionCP的ID(HashFunctionCP ID)316。然后,署名发生器将CompParty的识别符(CompParty的ID)318加到位于被加密项314和316末端处明文中以形成DigitalSignatureCP312。CompParty的专用密钥和ID是由CompParty利用所述用户接口152提供的。
在产生DigitalSignatureC320和DiigtalSignatureCP312以后,ANProgram编译程序162将它们附加到ASProgram码302上,从而使在所产生的编译的ASProgram文件或对象中具有下述成分:
                    ANProgram码,
                    DigitalSignatureOP
                    ASProgram码,
                    DigitalSignatureC,和
                    DigitalSignatureCP。然后,该ANProgram编译程序产生一个消息,该消息表示ANProgram 200已经被编译成ASProgram 300,并已经准备传送给所述OrigParty。
CompParty然后使用网络通信管理器160将ASProgram 300传送给OrigParty的客户计算机102。网络通信管理器是通过从其中设置有ASProgram的ASProgram储存部分172中提取所述ASProgram的并将它提供给所述网络通信接口156而作到这一点的。然后,网络通信管理器指令所述网络通信接口将所述ASProgram传送给OrigParty的客户计算机。
               对象和对象分类的建立和分布
然后,所传送的ASProgram 300由OrigParty客户计算机的通信接口116接收并将该发生的情况指示给网络通信管理器120。作为响应,OrigParty利用用户接口252发出一个命令,以命令从网络通信接口中提取接收的ASProgram,从而使得网络通信管理器将所接收的ASProgram放置入所述OrigParty客户计算机的未受托对象分类储存部分142中。一旦做了这件事情,OrigParty可以将所接收的ASProgram作为仅具有一种方法的新对象分类(例如编译程序的代码)进行处理,或者它可以建立一个对象分类,该对象分类包括ASProgram 300以及其它的ANProgram和ASProgram。
图4示出了根据本发明的一个典型的对象分类400。该对象分类可以包括一个或多个ASProgram 402和/或一个或多个ANProgram 404,以及一个虚拟函数表410。对于每个ASProgram来讲,所述虚拟函数表包含着指示一个不是用ANLanguage编写的ASProgram(即本机程序)的相应的识别符(identifiet(native_ASProgram ID))412并包含一个到本机程序的相应指针(Ptr)414。类似的,对于每个ANProgram来讲,虚拟函数表包含一个相应的识别符(AN-Program ID)416和一个到所述ANProgram的相应指针418。这个对象分类的每个对象420包括一个指向对象分类400的对象标题422。
因此,OrigParty可以利用ASProgram 300建立对象420和对象分类400,所述ASProgram 300从服务计算机104中被接收而作为所述对象分类内多个ASProgram 402中的一个。
当所述OrigParty希望将一个对象和包括ASProgram 300和ANProgram在内的对象分类分布给各个ExecuteParty(执行方)时,OrigParty利用用户接口112发出一个命令,以指令所述网络通信管理器将这些项(items)传送给ExecutePartys的客户计算机102。网络通信管理器通过从其中设置有这些项的未受托对象分类储存部分142中提取它们、并利用适当的传送指令将它们提供给网络通信接口116而做这项工作。另外,OrigParty的网络通信管理器可以响应由一个ExecuteParty启动的请求,以对指定的对象分类400进行复制。
         在对象分类中的中性结构程序和特定结构程序的执行
客户计算机102的网络通信接口156接收所传送的对象和对象分类并将已发生的状态指示给网络通信接口160。作为响应,ExecuteParty利用用户接口112发出一个命令,该命令指令所述网络通信管理器提取从网络通信接口所接收的对象和对象分类。然后,网络通信管理器将所接收的对象和对象分类存储到未受托对象分类储存部分142中。
每个客户计算机102的未受托对象分类储存部分142包含有多个未受托的对象和与其有关的多个对象分类。当根据适当的ANProgram进行编译时,由于它们所包括的任意的ANProgram都还不具有已经过检验的其完整性和它们所包括的任意的ASProgram还都不具有已经过检验或还没有经过检验的其源,所以,这些对象分类不是受托的。
每个客户计算机的受托对象分类储存部分140包含有多个受托对象和其多个对象分类。由于它们所包括的任意ANProgram已经可具有经过ANProgram完整性检验器166检验过的其完整性和它们所包括的任意ASProgram已经被确定为是值得信赖的,所以,这些对象分类是受托的。实际上,由于这些对象分类是受托的,因此就没有理由在这些对象分类的所述方法上执行完整性检查,所以,在受托对象分类储存部分140中的某些或全部对象分类并不需要具有数字署名。
下面这一点是希望的,即如前面所建议的,一个对象分类主要包括ANProgram,但还可以包括ASProgram,从而使得利用所述对象分类基本上可以执行所有的合法任务如上述所建议的。因此,ANProgram执行器122能够执行完整性可检验的ANProgram并能调用ASProgram执行器去执行完整性不可检验的ASProgram,所述完整性不可检验的ASProgram位于(1)在受托对象分类储存部分140内的受托对象分类中,或(2)在未受托对象分类储存部分14 2内的未受托对象分类中并具有可检验的DigitalSignatureOP、DigitalSignatureCP和DigitalSignatureC信息,从而,基本上可以执行所有的合法任务。在这种方式下,不具有DigitalSignatureOP、DigitalSignatureCP和DigitalSignatureC信息或它们的数字署名不能够被检验的未受托对象分类的ASProgram将被避免执行。表3包含有由所述ANProgram执行器使用的执行过程的伪码表示。
参看图1-4和表3,在一个ExecuteParty(例如,OrigParty或另外的一方)的客户计算机102上,ANProgram执行器124可以正在执行ANProgram其试图调用一个特定对象分类的方法。所述方法调用最初是由对象分类加载器136处理的,它确定所述对象分类是否已经被装载。如果所述对象分类已经被装载到ExecuteParty的用户地址空间138中,那么,假如所调用的方法是一个ANProgram,则ANProgram执行器122执行所调用的方法,假如所调用的方法是一个ASProgram,则ASProgram执行器124执行所调用的方法。
但是,如果所述对象分类还没有被装入到ExecuteParty的地址空间138中,那么,对象分类加载器136就要将所述对象分类装入到ExecuterParty的地址空间中并确定所调用的方法是否被允许执行。例如,如果所述对象分类是从受托对象分类储存部分140装入的,那么,所调用的方法被允许执行,并调用所述Execute过程。如果所调用的方法是一个ANProgram,Execute过程(见表3)调用所述ANProgram执行器去执行所调用的方法。反之,则调用ASProgram执行器124去执行所调用的方法。
但是,如果所述对象分类是从未受托的对象分类储存部分142装入的,那么,分类加载器136检查所述对象的对象标题以确定它的对象分类是否还包括任意的ASProgram。这是通过确定在该对象的虚拟函数表中是否存在任意native_ASProgram ID进行的。
如果在所述对象分类中不存在ASProgram,那么,分类加载器136调用ANProgram完整性检验器166去检验在该对象分类中ANProgram的完整性。其执行方式和目的与前面所述检验ANProgram 200(在讨论对ANProgram进行编译的部分中)所使用的方式和目的相类似。因此,如果多个ANProgram中任意一个的完整性没有被检验,那么,ANProgram完整性检验器将回送一个失效结果给所述分类加载器,并且,所述分类加载器中止分类装载过程并产生一个适当的消息以指示该状态。但是,如果ANProgram完整性检验器回送一个表示该对象分类的所有ANProgram都已经被检验通过的结果(passedresult)时,那么,分类加载器能执行所调用的方法。
如果在所述对象分类中存在有任意一个ASProgram,那么,分类加载器136调用署名检验器132去检验编译程序DigitalSignatureC和CompParty的署名DigitalSignatureCP。如果ASPrograms中的任意一个不包括DigitalSignatureCP和DigitalSignatureC,那么,ASProgram源的完整性不能被检验,因此,署名验证器回送一个失效结果给ANProgram执行器。作为响应,分类加载器中止对象分类装载过程并产生一个适当的消息指明发生了该状态。
另外,如果在所述对象分类中的所有ASPrograms都包括DigitalSignatureCPDigitalSignatureC,那么,将在这两个数字署名中所指出的CompParty和Ciompiler(编译程序)的同一性与已知的表144(见图1)。受托的Compiler Parties与受托的Compilers(编译程序)进行比较。如果在由CompParty或Compiler编译的对象分类中的ASProgram内的任意一个ASProgram都不包括在已知的、受托的Compiler Parties和受托的Comiler设定中,那么,分类装载过程被中止,借此以阻止所调用方法的执行。类似的,如果在ASProgram中的任意一个ASProgram内识别的ASLanguage与由ASProgram执行器124使用的ASLanguage不匹配,那么,分类装载过程被中止。
但是,如果在该对象分类中的所有ASPrograms都包括DigitalSignatureCP和DigitalSignatureC,和用于所有ASPrograms的、被识别的CompParty和Compiler是受托的Compiler Parties和Compilers,并且,由所有ASProgram使用的ASLanguage是由ASProgram执行器使用的语言,那么,署名检验器以与前面所述(在有关对ANProgram 200进行编译的讨论部分中)用于检验DigitalSignatureOP的类似方式检验这些署名。但是,在这种情况下,所述Compiler和CompParty的公用密钥是从受托密钥储存部分106中提取的,并被分别用于对在DigitalSignatureC中的MDC和HashFunctionC ID和在DigitalSignatureCP中的MDCP和HashFunctionCP ID进行解密。另外,与解密的MDCP和MDC相应的测试消息摘要(TestMDC和TestMDCP)是通过计算散列码产生,其是在ASProgram码数据比特上加TestMDC的DigitalSignatureOP和在相同数据比特上加TestMDCP的DigitalSignatureC,分别根据由解密的HashFunctionC ID和HashFunctionCP ID所识别的HashFunctionC和HashFunctionCP而计算的。
如果用于每个ASProgram的DigitalSignatureC和/或DigitalSignatureCP没有被验证(即:MDC≠TestMDC和/或MDCP≠Tes tMDCP),那么,署名检验器132回送一个失效结果给分类加载器136,作为响应,分类加载器中止分类装载过程并产生一个适当的消息以指示该状态已经发生。
但是,如果用于每个ASProgram的DigitalSignatureC和DigitalSignatureCP都已经被验证(即:MDC=TestMDC和MDCP=TestMDCP),那么,ASProgram执行器124再一次调用署名检验器132去检验用于ANProgram的所述OrigParty(Digital SignatoreCP)的署名,所述ASProgram是根据所述ANProgram进行编译的。为了检验OrigParty的数字署名,每个DigitalSignatureOP都是以与前面有关对ANProgram 200进行编译的讨论中所涉及的相同方式检验的。
如果,作为ASProgram编译基础的ANProgram中每一个DigitalSignatureOP被验证,那么,分类加载器调用ANProgram完整性检验器去检验在所述对象分类中每个ANProgram的完整性和作为ASProgram编译基础的ANProgram的完整性。其执行方式与前述相同。如果这些ANPrograms中任意一个ANProgram的完整性没有被验证,那么,ANProgram完整性检验器将回送一个失效结果给分类加载器,该分类装载器将中止分类装载过程并产生一个适当的消息。
但是,如果这些ANrograms中的每一个ANProgram的完整性都已经被验证,那么,ANProgram完整性检验器126将回送一个通过的结果给分类加载器136。作为响应,该分类加载器将请求ANProgram执行器或ASProgram执行器在适当的时候去执行所调用的方法。
从前述可看出,ExecuterParty被保证只有在具有其数字署名可以被检验的完整性可验证的ANProgram和ASProgram的未受托储存部分142中的那些未受托对象分类将被装入并具有它们执行的程序。
                   另外的实施例
上述讨论的本发明的某些特征是可以选择的。因此,本专业技术领域内的技术人员可以认识到存在有某些未包括这些特性的另外一些实施例。
例如,已经描述了作为分别对CompParty和ANProgram编译程序产生的DigitalSignatureCP和DigitalSignatureC的ANProgram编译程序。但是,所述ANProgram编译程序能够被简单的构成以产生这些数字署名中的一个署名,该署名为了能对ANProgram进行编译的编译程序进行验证或对编译方(compiling party)进行验证。
类似的,已经描述了作为用于请求对DigitalSignatureCP和DigitalSignatureC进行检验的程序执行器。但是,所述的程序执行器能够被构成仅请求对这些数字署名中的一个进行检验,并且,如果正在被检验的ASProgram包括它的话,应当对另一个的数字署名进行可选择的检验。再有,在假设的基础上即在假设所述编译方是受托的并且该编译方的一项工作就是在执行所述编译之前去检验编译成ASProgram的每一个ANProgram的完整性的基础上,所述程序执行器能够被构成跳过检验与每一个ASProgram相对应的ANProgram的完整性的步骤。
当Executer Party是所述Orig Party时,Executer Party知道,它实际上是将ANProgram 200传送给Comp Party的服务计算机104以便将其编译成ASProgram 300。在这种情况下,分类加载器136能够被结构成不调用署名检验器去检验在ANProgram中的DigitalSignatureOP。而是使得所述ExecuterParty能够简单地将在ANProgram的局部复制中的DigitalSignatureOP和在编译后ASProgram中的DigitalSignatureOP加以比较。另外,由于在被传送给所述编译服务计算机之前的编译过程准备期间已经检查了ANProgram的完整性,所以,所述分类加载器能够被结构成不调用ANProgram完整性检验器去检验对应于所调用ASProgram的ANProgram的完整性。另外,由于所述ANProgram的完整性已经利用所述编译程序在执行相应ASProgram之前由所述分类加载器调用所述ANProgram完整性检验器进行了检查,所以,ANProgram编译准备器128能够被构成在制备编译过程期间不调用所述ANProgram完整性检验器。
在结合本发明几个特殊实施例对本发明进行描述的同时,这指出这些描述仅仅是为了对本发明进行的说明,并不是对本发明的限制。本专业技术领域内的普通技术人员可以在不脱离本发明权利要求限定的本发明的构思和范围的前提下作出许多修改。
                          表1
       制备用于编译中性结构程序方法的伪代码表示
Procedure:Prepare for Compiling(ANProgram code,OrigParty’s PrivateKey,and

     OrigParty’s ID)

    {

    Verify integrity of ANProgram with ANProgram integrity verifier

    If failed result

            {abort and generate failed result message}

    Generate MDOP=HashFunctionOP(ANProgram code)

    Generate DigitalSignatureOP=Encrypt(MDOP+HashFunctionOP ID,OrigParty’s

            PrivateKey)+ClearText(OrigParty’s ID)

    Append DigitalSignatureOP to ANProgram code

    Generate message that ANProgram is prepared for compiling

    Return

    }
                       表2
       编译ANProgram和产生ASProgram方法的伪码表示
Procedure:Conmpile(ANProgram,CompParty’s ID,ASLanguageID,CompParty’s

    PrivateKey,Compiler’s ID,and Compiler’s PrivateKey)

    {

    Retrieve OrigParty’s PublicKey from trusted key repository using ClearText

           OrigParty’s ID in DigitalSignatureOP

    Decrypt(MDOP+HashFunctionOP ID in DigitalSignatureOP,OrigParty’s

           PublicKey)

    Generate TestMDOP=HashFunctionOP(ANProgram code)using

           HashFunctionOP identified by decrypted HashFunctionOP ID

    Compare decrypted MDOP and TestMDOP

    If decrypted MDOP≠TestMDOP

           {

           /*DigitalSignatureOP of OrigParty not verified*/

           Generate failed result message

           }

    Else

          {

          /*DigitalSignatureOP of OrigParty has been verified*/

          Verify integrity of ANProgram with ANProgram integrity verifier

          If failed result

                  {

                  abort and generate failed result message

                  }

          Else

                 {

                  /*ANProgram has been verified*/

                  Compile ANProgram code into ASLanguage identified by

                       ASLanguage ID to generate ASProgram code

                  Generate MDC=HashFunctionCS(ASProgram code+

                        DigitalSignatureOP)

                  Generate DigitalSignatureC=Encrypt(MDC+HashFunctionC ID,

                        ANProgrom Compiler’s PrivateKey)+ClearText

                        ANProgram Compiler’s ID

                  Generate MDCP=HashFunctionCP(ASProgram code+

                        DigitalSignatureOP+DigitalSignatureC)

                  Generate DigitalSignatureCP=Encrypt(MDCP+HashFunctionCP

                        ID,CompParty’s PrivateKey)+ClearText CompParty’s ID
        <!-- SIPO <DP n="19"> -->
        <dp n="d19"/>
       Generate and Return File or Object containing:

            ANProgram Code,

            DigitalSignatureOP,

            ASProgram Code,

            DigitalSignatureC,and

            DigitalSignatureCP

       /*ASProgram has been compiled and generated*/

       }

  }
}
                  表3
         执行ASProgram方法的伪码表示
Procedure:Execute(ObjectClass,Program)

  {

  If the Program is a verifiable program

       {Execute Program using the Bytecode Interpreter}

  Else

       {Execute Program using the compiled program executer}

  }
Procedure:ClassLoad(ObjectClass,Program)

  {

  If Object Class has already been loaded into ExecuterParty’s address space

      {

      Call Execute(ObjectClass,Program)

      Return

      }

  /*The Object Class has not been loaded*/

  Load Object Class into ExecuterParty’s address space

  If Object Class was loaded from Trusted Object Class Repository

      {

      Call Execute(ObjectClass,Program)

      Return

      }

  /*Object Class was loaded from Untrusted Object Class Repository*/

  If Object Class does not contain any ASPrograms designated as

      native_ASPrograms in Object Header of Object

      {

      Verify integrity of all ANPrograms of Object Class with ANProgram integrity

          verifier

      If failed result

          {

          Abort with appropriate failed result message

          }

      Else

         /*Integrity of all ANPrograms of Object Class have been verified*/

        {    Call Execute(ObjectClass,Prograrm)      }
        <!-- SIPO <DP n="21"> -->
        <dp n="d21"/>
  Return

  }
/*Object Class does contain ASPrograms desigrnated as native_ASPrograms in
   Object Header of Object*/
If any ASProgram does not contain a DigitalSignatureCP and a DigitalSignatureC

   {

   /*Compiling Party and Compiler of every ASProgram cannot be verified*/

   Generate appropriate message

   Return

   }
For each ASProgram in Object Class:

   { Determine identity of CompParty and Compiler and determine

     ASLanguage used by ASProgram  }
If identity of CompParty for any ASProgram is not a known,trusted,Compiling

   Party,or the identity of Compiler is not a known,trusted Compiler,or the

  identified ASLanguage is not one used by the ASProgram Executer

  {

  Generate appropriate message

  Return

  }
For each ASProgram in Object Class:

  {    

  Retrieve CompParty’s PublicKey from trusted key repository using ClearText

      CompParty’s ID in DigitalSignatureCP

  Decrypt(MDCP+HashFunctionCP ID in DigitalSignatureCP,CompParty’s

      PublicKey)

  Generate TestMDCP=HashFunctionCP(ASProgram code+DigitalSignatureOP

      +DigitalSignatureC in ASProgram)using HashFunctionCP identified by

      decrypted HashFunctionCP ID

  Compare decrypted MDCP and TestMDCP

  }
If decrypted MDCP≠TestMDCP for any ASProgram

  {

  /*DigitalSignatureCP for every ASProgram has not been verified*/

  Generrate appropriate failed result message

  Return

  }
/*DigitalSignatureCP for every ASProgram has been verified*/
        <!-- SIPO <DP n="22"> -->
        <dp n="d22"/>
For each AS Program in Object Class:

  {

  Retrieve ANProgram Compiler’s PublicKey from trusted key repository using

      ClearText ANProgram Compiler’s ID in DigitalSignatureC

  Decrypt(MDC+HashFunctionC ID in DigitalSignatureC,ANProgram

      Compiler’s PublicKey)

  Generate TestMDC=HashFunctionC(ASProgram code+DigitalSignatureOP)

      using HashFunctionC identified by decrypted HashFunctionC ID

  Compare decrypted MDC and TestMDC

  }
If decrypted MDC≠TestMDC for any ASProgram

  {

  /*DigitalSignatureC for every ASProgram in Object Class has not been

      verified*/

  Generate appropriate failed result message

  Return

  }
/*DigitalSignatureC for every ASProgram in Object Class has been verified*/
For each ANProgram from which an ASProgram in Object Class was compiled:

  {

  Retrieve OrigParty’s PublicKey from trusted key repository using ClearText

      OrigParty’s ID in DigitalSignatureOP

  Decrypt(MDOP+HashFunctionOP ID in DigitalSignatureOP,OrigParty’s

      PublicKey)    

  Geerate TestMDOP=HashFunctionOP(ANProgram code)using

  HashFunctionOP identified by decrypted HashFunctionOP ID

  Compare decrypted MDOP and TestMDOP

  }
If decrypted MDOP≠TestMDOP for any ANProgram

  {

  /*DigitalSignatureOP for every ANProgram from which an ASProgram in

      Object Class was compiled not verified*/

  Generate failed result message

  Return

  }
/*The DigitalSignatureOP in every ASProgram in Object Class is verified*/
Verify integrity of ANPrograms in Object class and ANPrograms from which

  ASPrograms in Object Class were compiled with ANProgram integrity verifie
If failed result

  {
        <!-- SIPO <DP n="23"> -->
        <dp n="d23"/>
  Generate failed result message

  Return


/*Integrity of all ANPrograms in Object class and all ANPrograms from which

  ASPrograms in Object Class were compiled have been verified*/
Call Execute(ObjectClass,Program)
}

Claims (11)

1、一种计算机网络,包括
由一个编译方操作的程序编译计算机,该程序编译计算机接收一个由始发方产生的中性结构程序,该中性结构程序包含有中性结构程序码和所述始发方的数字署名,当其被检验时检验由所述始发方所标记的中性结构程序,所述程序编译计算机包括:
一个署名检验器,用于检验所述始发方的数字署名;
一个编译单元,用于当所述始发方的数字署名被检验完毕时,产生特定结构程序,所述编译单元,通过下述方式产生所述特定结构程序,所述方式是:(A)按照特定结构语言将所述中性结构程序码编译成特定结构程序码,和(B)附加一个编译方的数字署名,当其被检验时,检验由所述编译方产生的特定结构程序;
署名发生器,用于产生编译方的数字署名;和
由一个执行方操作的程序执行计算机,该程序执行计算机接收特定结构程序,和接收或始发该中性结构程序,所述程序执行计算机包括:
一个署名检验器,用于检验所述编译方的数字署名;
一个执行器,用于执行按所述特定结构语言写成的程序码,当所述编译方的署名已被检验,并且所述的编译方是指定设定的受托编译方时,所述执行器执行特定结构程序码。
2、如权利要求1所述的计算机网络,其中:
所述署名发生器产生编译单元的数字署名,当其被检验时,验证该特定结构程序是用所述编译单元产生的;
所述编译单元还通过将所述编译单元的数字署名附加到所述特定结构程序码上产生所述特定结构程序;
该执行计算机的署名检验器检验所述计算机的数字署名;
所述执行器仅在所述编译单元的数字署名已经被验证和该编译单元被确定是一指定设定的受托编译单元之后才执行所述特定结构程序码。
3、如权利要求1所述的计算机网络,其中:
对于始发方和编译方来讲,所述的网络包括相应的专用和公用加密密钥和相应的散列函数;
所述始发方的数字署名包括通过在中性结构程序基础上执行对应于始发方的散列函数产生的中性结构程序的消息摘要,所述中性结构程序的消息摘要利用对应于该始发方的专用密钥加密;
所述程序编译计算机的署名检验器包括通过下述方式用于检验所述始发方数字署名的多个指令,所述方式是:(A)利用所述始发方的公用加密密钥去解密所述中性结构程序的消息摘要,(B)通过在所述中性结构程序码的基础上执行所述始发方的散列函数来产生所述中性结构程序对应的测试消息摘要,和(C)比较所述中性结构程序的解密消息摘要和测试消息摘要;
所述署名发生器包括用于以如下方式产生编译方数字署名的多个指令,所述方式是:(A)通过在所述特定结构程序码的基础上执行所述编译方的相应散列函数产生中性结构程序的消息摘要,和(B)利用所述编译方的相应专用密钥加密所述特定结构程序的消息摘要;和
所述程序执行计算机的署名检验器包括以如下方式检验所述编译方数字署名的多个指令,所述方式是:(A)利用所述编译方的公用加密密钥去解密所述特定结构程序的消息摘要,(B)通过在所述特定结构程序码的基础上执行所述编译方的散列函数产生所述特定结构程序的相应测试消息摘要,和(C)比较所述特定结构程序的解密消息摘要和测试消息摘要。
4、如权利要求1所述的计算机网络,其中:
所述程序执行计算机还包括一个中性结构程序完整性检验器,通过检验所述中性结构程序码满足预定程序完整性标准来检验所述中性结构程序码的完整性;
只有在所述中性结构程序码的完整性被验证以后,所述执行器才执行所述特定结构程序码。
5、如权利要求1所述的计算机网络,其中还包括:
一个初始程序计算机,该计算机提供中性结构程序,所述初始程序计算机包括一个署名发生器,用于产生被附加到所述中性结构程序码上的始发方的数字署名;
所述程序编译计算机与所述初始程序计算机进行通信,以从所述初始程序计算机接收中性结构程序并向所述初始程序计算机提供所述特定结构程序;
所述程序执行计算机与所述初始程序计算机进行通信,以从所述初始程序计算机接收所述中性结构和特定结构程序;
所述程序执行计算机的署名检验器还检验所述始发方的数字署名;
所述执行器只有在所述始发方的数字署名被验证之后才执行所述特定结构程序。
6、一种操作计算机网络的方法,包括如下步骤:
在由一个编译方操作的程序编译计算机处:
接收由一个始发方产生的中性结构程序,该中性结构程序含有中性结构程序码和所述始发方的数字署名,当其被检验时,检验由所述始发方所标记的所述中性结构程序;
检验所述始发方的数字署名;和
当所述始发方的数字署名被检验完毕时,利用一个编译程序对所述中性结构程序进行编译,从而产生一个特定结构程序,并附加一个编译方的数字署名,当其被检验时,检验由所述编译方产生的特定结构程序;和
在由一个执行方操作的程序执行计算机处:
接收所述特定结构程序和接收或始发所述中性结构程序;
检验所述编译方的数字署名;和
当所述编译方的数字署名被验证完毕且所述编译方被确定是一指定设定的受托编译方时,执行所述特定结构程序。
7、如权利要求6的方法,其中,包括:
在程序编译计算机处:
产生一个编译程序的数字署名,当其被检验时,检验用所述编译程序产生的所述特定结构程序;和
将所述编译程序的数字署名附加到所述特定结构程序码中;和
在程序执行计算机处:
检验所述编译程序的数字署名;和
仅在所述编译程序的数字署名被检验完毕且所述编译程序被确定是一指定设定的受托编译程序之后才执行所述特定结构程序。
8、如权利要求6的方法,其中,
对于所述始发方和编译方来讲,所述网络包括相应的专用和公用加密密钥和对应的散列函数;
所述始发方的数字署名包括通过在所述中性结构程序的基础上执行所述始发方的相应散列函数产生的所述中性结构程序的消息摘要,利用所述始发方的相应专用密钥加密所述中性结构程序的消息摘要;
所述方法包括如下步骤:
在程序编译计算机处:
通过如下方式检验所述始发方的数字署名,所述方式是:(A)利用所述始发方的公用加密密钥对所述中性结构程序的消息摘要解密,(B)通过在所述中性结构程序码的基础上执行所述始发方的散列函数来产生所述中性结构程序对应的测试消息摘要,和(C)比较所述中性结构程序的解密消息摘要和测试消息摘要;和
通过如下方式产生编译方的数字署名,所述方式是:(A)通过在所述特定结构程序码的基础上执行所述编译方的相应散列函数,产生一个所述特定结构程序的消息摘要,和(B)利用所述编译方的相应专用密钥加密所述特定结构程序的消息摘要;和
在程序执行计算机处:
通过如下方式检验所述编译方的数字署名,所述方式是:(A)利用所述编译方的公用加密密钥解密所述特定结构程序的消息摘要,(B)通过在所述特定结构程序码的基础上执行所述编译方的散列函数,产生所述特定结构程序的相应测试消息摘要,和(C)比较所述特定结构程序的解密消息摘要和测试消息摘要。
9、如权利要求6的方法,其中,包括:
在程序执行计算机处:
由检验所述中性结构程序码满足预定程序完整性标准来检验所述中性结构程序的完整性;和
仅在所述中性结构程序码的完整性被检验完毕之后才执行所述特定结构程序码。
10、如权利要求6的方法,其中,还包括:
在提供所述中性结构程序的初始程序计算机中:
产生所述始发方的数字署名并将它附加到所述中性结构程序码中;
在所述程序编译计算机处:
与所述初始程序计算机进行通信,以从所述初始程序计算机中接收所述中性结构程序并将所述特定结构程序提供给所述初始程序计算机;
在所述程序执行计算机处:
与所述初始程序计算机进行通信,以从所述初始程序计算机中接收,所述中性结构和特定结构程序;
检验所述始发方的数字署名;和
仅在所述始发方的数字署名被检验完毕之后才执行所述特定结构程序。
11、如权利要求6的方法,其中,包括:
在所述程序执行计算机处:
提供所述中性结构程序;
产生一个始发方的数字署名,该署名标记所述中性结构程序并将它附加到所述中性结构程序码中;和
在所述程序编译计算机处:
与所述程序执行计算机进行通信,以从所述程序执行计算机中接收所述中性结构程序并将所述特定结构程序提供给所述程序执行计算机。
CN96121380A 1995-12-08 1996-12-08 受托编译中性结构程序版本产生特定结构的系统和方法 Expired - Fee Related CN1103968C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US569,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
US569397 1995-12-08

Publications (2)

Publication Number Publication Date
CN1157959A CN1157959A (zh) 1997-08-27
CN1103968C true CN1103968C (zh) 2003-03-26

Family

ID=24275282

Family Applications (1)

Application Number Title Priority Date Filing Date
CN96121380A Expired - Fee Related CN1103968C (zh) 1995-12-08 1996-12-08 受托编译中性结构程序版本产生特定结构的系统和方法

Country Status (10)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103765402A (zh) * 2011-08-22 2014-04-30 国际商业机器公司 使用混合代码签名跟踪程序的调用上下文

Families Citing this family (94)

* 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
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership 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
US6708171B1 (en) 1996-04-23 2004-03-16 Sun Microsystems, Inc. Network proxy
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
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
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
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
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
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
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. 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
CN1298514A (zh) 1998-02-26 2001-06-06 太阳微系统公司 确定性散列识别远程方法的方法和系统
EP1057107A1 (en) * 1998-02-26 2000-12-06 Sun Microsystems, Inc. Dynamic lookup service in a distributed system
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
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
AU1889699A (en) * 1999-01-13 2000-08-01 Hitachi Limited Method and system for executing mobile code
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
US6618855B1 (en) 1999-05-27 2003-09-09 Sun Microsystems, Inc. Caching untrusted modules for module-by-module verification
US6766521B1 (en) 1999-05-27 2004-07-20 Sun Microsystems, Inc. Dataflow algorithm for symbolic computation of lowest upper bound type
US6601114B1 (en) 1999-05-27 2003-07-29 Sun Microsystems, Inc. Fully lazy linking with module-by-module verification
US6763397B1 (en) 1999-05-27 2004-07-13 Sun Microsystems, Inc. Fully lazy linking
US6618769B1 (en) 1999-05-27 2003-09-09 Sun Microsystems, Inc. Module-by-module verification
WO2000079382A2 (en) * 1999-06-20 2000-12-28 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.
US7107581B2 (en) 1999-11-12 2006-09-12 Sun Microsystems, Inc. Overflow predictive arithmetic instruction optimization using chaining
US7207037B2 (en) 1999-11-12 2007-04-17 Sun Microsystems, Inc. Overflow sensitive arithmetic instruction optimization using chaining
US7010786B2 (en) 1999-11-12 2006-03-07 Sun Microsystems, Inc. Predictive arithmetic overflow detection
US8453133B2 (en) 1999-11-12 2013-05-28 Oracle America, Inc. Optimization of N-base typed arithmetic instructions via rework
US6363523B1 (en) 1999-11-12 2002-03-26 Sun Microsystems, Inc. Optimization of N-base typed arithmetic expressions
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
US7603721B2 (en) * 2000-05-09 2009-10-13 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
JP3910915B2 (ja) 2001-01-31 2007-04-25 株式会社エヌ・ティ・ティ・ドコモ 移動体端末の記憶モジュールにプログラムを配信するシステム
ES2559638T3 (es) 2001-02-02 2016-02-15 Opentv, Inc. Método y equipo para la compilación de un lenguaje interpretativo para televisión interactiva
US7669212B2 (en) 2001-02-02 2010-02-23 Opentv, Inc. Service platform suite management system
US7305697B2 (en) 2001-02-02 2007-12-04 Opentv, Inc. Service gateway for 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
TWI270270B (en) 2001-05-14 2007-01-01 Ntt Docomo Inc System for managing program
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
US7519990B1 (en) * 2002-07-19 2009-04-14 Fortinet, Inc. Managing network traffic flow
WO2004015553A1 (en) * 2002-08-13 2004-02-19 Nokia Corporation Computer architecture for executing a program in a secure of insecure mode
US7587754B2 (en) * 2002-12-24 2009-09-08 Tripwire, Inc. Environment integrity assured transactions
US20040122962A1 (en) * 2002-12-24 2004-06-24 Difalco Robert A. Service environment integrity based service selection
ATE520061T1 (de) * 2003-10-17 2011-08-15 Trinary Anlagenbau Gmbh Verfahren und vorrichtung zur vermeidung einer fehlansteuerung einer werkzeugmaschine
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
US8677329B2 (en) * 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US9117071B2 (en) 2009-06-03 2015-08-25 Apple Inc. Methods and apparatuses for secure compilation
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
EP2597568A4 (en) * 2010-12-16 2013-07-17 Huawei Tech Co Ltd METHOD AND DEVICE FOR IMPROVING THE PERFORMANCE OF A MOBILE DEVICE
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
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 之江实验室 一种内生安全的网络编译系统及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0328232A2 (en) * 1988-02-12 1989-08-16 Addison M. Fischer Public key/signature cryptosystem with enhanced digital signature certification
EP0464526A2 (en) * 1990-06-25 1992-01-08 Hewlett-Packard Company Architecture neutral distribution format (ANDF) installer using a compiler intermediate language
US5359659A (en) * 1992-06-19 1994-10-25 Doren Rosenthal Method for securing software against corruption by computer viruses
US5432937A (en) * 1993-08-20 1995-07-11 Next Computer, Inc. Method and apparatus for architecture independent executable files

Family Cites Families (9)

* 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
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
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.
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0328232A2 (en) * 1988-02-12 1989-08-16 Addison M. Fischer Public key/signature cryptosystem with enhanced digital signature certification
EP0464526A2 (en) * 1990-06-25 1992-01-08 Hewlett-Packard Company Architecture neutral distribution format (ANDF) installer using a compiler intermediate language
US5359659A (en) * 1992-06-19 1994-10-25 Doren Rosenthal Method for securing software against corruption by computer viruses
US5432937A (en) * 1993-08-20 1995-07-11 Next Computer, Inc. Method and apparatus for architecture independent executable files

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103765402A (zh) * 2011-08-22 2014-04-30 国际商业机器公司 使用混合代码签名跟踪程序的调用上下文
CN103765402B (zh) * 2011-08-22 2016-06-29 国际商业机器公司 使用混合代码签名跟踪程序的调用上下文

Also Published As

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

Similar Documents

Publication Publication Date Title
CN1103968C (zh) 受托编译中性结构程序版本产生特定结构的系统和方法
CN1097771C (zh) 执行可校验程序的系统和方法
US9589154B2 (en) Programming on-chip non-volatile memory in a secure processor using a sequence number
US7360097B2 (en) System providing methodology for securing interfaces of executable files
KR100991061B1 (ko) 컴팩트 하드웨어 id 생성 방법, 소프트웨어 제품의 사용가능성 결정 방법, 및 그를 위한 컴퓨팅 시스템 및 컴퓨터 판독 가능 기록 매체
US6327652B1 (en) Loading and identifying a digital rights management operating system
US7591014B2 (en) Program authentication on environment
US7424606B2 (en) System and method for authenticating an operating system
CN1122213C (zh) 给对象签名和签章的方法和设备
CN1745377A (zh) 使用隐含中间密钥来认证软件的系统和方法
CN1661551A (zh) 代码重写
CN1645288A (zh) 确保软件更新仅在特定设备或设备类上安装或运行
WO2015150391A9 (en) Software protection
CN1303049A (zh) 生成与使用无病毒文件证书的方法与系统
EP3583536B1 (en) Securely defining operating system composition without multiple authoring
JP2016197399A (ja) オペレーティング・システム・リソースに対する機械語のネイティブイメージのアクセス制御のシステム及び方法
US20060059350A1 (en) Strong names
KR101036701B1 (ko) 하드웨어 변경의 허용 범위를 갖는 컴퓨터 시스템에 비밀을 연계시키는 시스템
JP2005527905A (ja) 実行可能なコードを格納するタンパーエビデントな取り外し可能な媒体
CN112115430A (zh) 一种apk的加固方法、电子设备及存储介质
CN112231674A (zh) 一种url地址的跳转验证方法、系统及电子设备
CN1205475A (zh) 信息处理设备和方法以及记录介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1001142

Country of ref document: HK

C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee