CN1130627C - 一种以Java虚拟机实现的信息处理设备 - Google Patents

一种以Java虚拟机实现的信息处理设备 Download PDF

Info

Publication number
CN1130627C
CN1130627C CN98108755A CN98108755A CN1130627C CN 1130627 C CN1130627 C CN 1130627C CN 98108755 A CN98108755 A CN 98108755A CN 98108755 A CN98108755 A CN 98108755A CN 1130627 C CN1130627 C CN 1130627C
Authority
CN
China
Prior art keywords
key
program
java
public key
signature
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
CN98108755A
Other languages
English (en)
Other versions
CN1208193A (zh
Inventor
竹内彰一
难波慎二
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Publication of CN1208193A publication Critical patent/CN1208193A/zh
Application granted granted Critical
Publication of CN1130627C publication Critical patent/CN1130627C/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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
    • G06F2211/008Public Key, Asymmetric Key, Asymmetric Encryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2115Third party

Landscapes

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

Abstract

在一程序执行环境中,用密钥-A加密的应用程序输入译码部分82,用密钥-B加密的公用密钥-B和公用密钥-A(与密钥-A对应)输入译码部分84。译码部分84用公用密钥-B将公用密钥-A解码,并将其传给译码部分82。译码部分82用译码部分84传输的公用密钥-A将加密的应用程序解码,并将JAVA字节码作为译码结果供到JAVA虚拟机83,虚拟机判读执行由译码部分82提供的码。结果,只允许合法软件开发商的程序在确定的程序执行环境中执行。

Description

一种以Java虚拟机实现的信息处理设备
技术领域
本发明涉及一种信息处理设备和方法及一种记录载体。具体地说,本发明涉及这样一种信息处理设备和方法及一种记录载体,它只允许由合法的软件开发人员编制的程序在一个确定的程序执行环境下被执行。
背景技术
Java(注册商标为美国Sun Microsystem公司)现在已经引起越来越多的关注,因为它非常适用于近年来迅速发展的Internet网。术语“Java”用于指Java语言,这是一种面向对象的语言,一个虚拟机(以下相应出现之处简称为“Java虚拟机”),它限定适于执行由Java语言编写的程序(以下相应出现之处简称为“Java程序”)的处理器体系结构,和其他与Java相关的部分,它或者是Java语言和其他与Java相关的元件的通用术语。术语“虚拟机”是指在实现一个语言处理系统时的假设,不是指对用户而言将一个单个计算机虚拟成多个计算机的情况。
Java虚拟机是在一个实际的(真的)计算机上实现的,从而依靠安装在该计算机中的OS(操作系统)工作。另一方面,Java程序汇编成遵循所述的Java虚拟机指令集规则的二进制代码,这些二进制代码可以在Java虚拟机能够工作的任何硬件上运行。因此,只要Java虚拟机工作,已编制的Java程序就能够在各平台上被执行。
一旦已实现一个Java虚拟机,一个Java程序就能够在任何机器上运行,基于这一事实,人们希望将Java虚拟机推广到许多用户,并且许多应用程序将被开发和发布(这与用户交费或免费无关)给这些用户。
在上述情况下,可能会发生这样一种情况,已经开发和发布一种程序执行环境(例如Java虚拟机)的一方希望限制由第三方开发的应用程序的发布和在这样一种程序执行环境中被执行;例如,正规的一方可能希望只允许应用程序发布给被许可的用户。
另一方面,在Java虚拟机中,通过Java编程人员编程的Java程序获得的称为字节代码(Java代码)的中间代码被译码和执行。Java字节编程能够比较容易地通过解码译码,也就是说能够易于实现反向解译。因此,防止第三者仿制和伪造是十分必要的。
发明内容
本发明正是针对上述情况设计完成的,本发明的目的是使在一个确定的程序执行环境下限制程序的运行,及防止程序的被仿制和伪造成为可能。
根据本发明,提供了一种以Java虚拟机实现的信息处理设备,执行一个执行程序的过程,包括:第一密钥译码装置,通过利用一个第二密钥,将需要对一个程序的加密版本译码的第一密钥的加密版本解码;程序译码装置,利用通过第一密钥译码装置译码后得到的第一密钥对该程序的加密版本译码;执行装置,用于完成由程序译码装置输出的程序;第二密钥译码装置,通过利用一个第三密钥,在第二密钥加密情况下,将第二密钥的加密版本解码;其中:第一密钥是一个公共密钥,用于按照一种公共密钥加密方案加密所述程序;第二密钥是与一个按照一种公共密钥加密方案加密所述第一密钥的保密密钥相应的公用密钥;以及第三密钥是与一个按照一种公共密钥加密方案加密所述第二密钥的保密密钥相应的公用密钥;所述执行装置以Java虚拟机实现;所述执行装置和所述第二密钥从一个程序许可机构提供的;所述程序的加密版与所述第三密钥是从一个软件开发者提供的;所述第三密钥通过使用第二密钥的保密版加密由所述软件开发者提供的第一密钥的公共版而中所述程序许可机构产生的,并被送到所述软件开发者。
附图说明
图1是一个程序执行系统的功能模块的第一个实例的方框图;
图2是一个程序执行系统的功能模块的第五个实例的方框图;
图3是表示软件开发商31的一种方法的流程图;
图4是一个程序执行系统的功能模块的第三个实例的方框图;
图5是表示软件开发商31的一种方法的流程图;
图6表示在计算机1资源和在计算机1上实现的Java虚拟机11资源之间相关性;
图7表示Java虚拟机11的处理过程;
图8和9A-9B表示Java虚拟机11的处理过程;
图10是本发明的程序供应系统的一个实施例的结构实例的方框图;
图11表示如图10所示的软件开发商31的结构实例的方框图;
图12是图10所示的正规(有相关证书的)程序编制人员32的结构实例的方框图;
图13是图10所示的用户终端33的结构实例的方框图;
图14是一个加密/解码系统的结构实例的方框图;
图15是采用一个数字标号的加密/解码系统的结构实例的方框图;
图16是表示软件开发服务部门31的一种方法的流程图;
图17是表示程序许可机构服务部门32的一种方法的流程图;
图18是程序执行系统的功能模块的第二个实例的方框图;
图19是表示程序许可机构服务部门32的一种方法的流程图;
图20是装入程序的功能模块的一个实例的方框图;
图21是程序执行系统的功能模块的第四个实例的方框图;
图22是软件开发服务部门31的一个结构实例的方框图。
具体实施方式
下面将描述本发明的实施例。首先为了明确在权利要求书和下面的实施例中所述的本发明的有关装置之间的相关性,我们将这样描述本发明的特征,在各实施例的相关的部分辅以圆括号(仅举例)说明相关的装置。
根据本发明的信息处理设备执行一个执行程序的过程,它包括第一密钥译码装置(例如,图1所示的译码部分84和图2所示的译码部分131),利用一个第二密钥将第一密钥的加密版本解码,这需要对一个程序的加密版本译码;程序译码装置(例如,图1所示的译码部分82和图2所示的译码装置132)利用通过第一密钥译码装置译码后得到的第一密钥对该程序的加密版本译码;执行装置(例如,图1和2中所示的Java虚拟机83)用于执行由程序译码装置输出的程序。
上述信息处理设备还包括第二译码装置(例如,图2的译码部分84),利用第三密钥将第二密钥的已加密的版本解码。
在根据本发明的信息处理设备中,这个信息处理设备执行一个程序,并且包括将程序加密成可被译码成代码的加密语句的加密装置(例如,图11中所示的CPU41,执行图3中的程序处理步骤S7),这种代码能够通过根据本发明第一个方案的信息处理设备执行。
在根据本发明的信息处理设备中,该信息处理设备执行一个程序,并且包括执行所述程序的执行装置(例如图4中所示的Java虚拟机83);密钥译码装置(例如图4所示的译码部分84)利用一个第二密钥将第一密钥的加密版本解码,第一密钥用于检验附加给该程序的签名;检验装置(例如图4所示的签名检验部分103)利用由第一密钥解码装置译码后得到的第一密钥检验附加到程序上的签名是否合法;以及供应装置(例如图4所示的虚拟机输入控制部分104)为执行装置提供已经由检验装置确认合法和附加了签名的程序。
根据本发明的信息处理设备执行一个程序,并且包括对程序进行处理的处理装置(例如,图11中的CPU41执行如图16所示的程序处理步骤S22和S23),用于确认在根据本发明的信息处理设备中的一个签名是否合法。
显然,上述陈述并不是将相关的装置限定在举例说明的组成部分。
下面的实施例是直接说明将本发明应用到一个Java虚拟机的情况,尽管除了类似Java虚拟机的虚拟机以外,本发明也可以应用在真实的机器本身。
由于例如在由Nikkei商业出版公司1996年3月25日(NO.658)和1996年6月17日出版(NO.664)的Nikkei电子学中已经详细介绍了Java,为简化起见,下面仅作简单说明。
Java虚拟机是一种抽象的执行机器,实际上程序是由真实的计算机执行的。类似于一个真实的计算机,Java虚拟机具有程序计数器,寄存器组,通用寄存器,一组或一堆存储器,以及其他资源,并且这些资源被设计成一个真实的计算机的资源的翻版。
假设真实的计算机1具有一个中央处理器2,一个与中央处理器2协同工作的寄存器3,存储器4和其他如图6中所示的资源。当Java虚拟机11是在计算机1上实现的,则将真实的计算机1的资源翻版成Java虚拟机11的资源。在图6的实施例中,Java虚拟机11具有一个寄存器13,一个存储器14和其他
资源。寄存器13是寄存器3的翻版,存储器14的地址200与存储器4的地址100对应。
在真实计算机1中,中央处理器2执行一个操纵其资源的指令,类似地,在Java虚拟机11中,定义了要执行的操纵其资源的指令。Java语言是一种描述对Java虚拟机11的指令语言。在Java虚拟机11中,通过Java编程人员用Java语言描述的源程序编程的Java程序获得的Java字节代码被译码和执行。
如图7所示,用Java语言编写的源程序(即Java语言程序)被Java编写人21编译成Java字节代码。Java字节代码被输入到Java虚拟机11,在那里转变成可由真实的计算机1(中央处理器2)判读的机器语言代码。特别是如图8所示,用Java字节代码描述的指令(Java字节代码指令)为“移动#125,寄存器13”,表示在寄存器13中“设置数字125”,被输入到Java虚拟机11中,Java虚拟机11将其变换成用机器语言代码描述的指令(机器语言指令)“移动#125,寄存器3”。
在计算机1中,如图9A所示,在计算机1的寄存器3内设置数字“125”,这是执行以机器语言代码编写的指令的结果。
如上所述,Java虚拟机11的寄存器13即相应于计算机1的寄存器3,因此,当如图9B所示从Java虚拟机11的角度而言,在计算机1的寄存器3内设置数字“125”也表示在寄存器13内设置数字“125”。
以上述方式,输入给Java虚拟机11的Java字节代码指令被转换成计算机1的机器语言代码,然后执行相应于Java虚拟机11的资源的控制计算机1的资源的操作。如果从Java虚拟机11的角度看,上述的操作与对Java虚拟机11的资源的操作相符合;执行正规操作是指执行Java字节代码指令。
因此如上所述,通过在一个真实的计算机上实现一个Java虚拟机11,可以执行已编程的Java程序,而不考虑CPU(中央处理器)和在该计算机中所用的OS。
在一个将Java字节代码转换成机器语言然后执行的技术实例中,提供一个译码方式,它将所述的指令判读成机器语言,并且当执行一个BASIC语言程序时,逐条执行该机器语言代码。另一个实例是一个JIT(即时)编译方式,它将所述的指令判读成机器语言,并且整个地执行该机器语言代码。
在执行一个BASIC语言程序时采用的译码方式与判读Java字节代码的方
式不同,后者的源程序首先被判读成正规的中间代码(Java字节代码)方式,然后被判读成最终代码方式。但是,在本实施例中对这两种方式没有限制(没有必要这样作)。
图10表示本发明的程序供应系统(术语“系统”是指多个相互逻辑相关的装置的集合;并不要求这些装置必须安装在一个单个的机架上)的一个实施例的结构实例。
在这个程序供应系统中,当软件开发者向其用户提供一个没有由软件许可机构认可的盗版应用程序时,在这个用户的用户终端33上使用该应用程序是被禁止的。
例如,当一个软件开发者已经开发了一个工作在以Java虚拟机为程序执行环境的的应用程序,这样的程序执行环境是指该程序是由程序设计机构开发完成的,或者该软件开发者已经请求软件许可机构认可其使用和销售该应用程序,并且这个软件开发者已经与软件许可机构签订了许可合同。一旦许可合同一生效,所述软件许可机构作为认可给被许可的软件开发者提供一个用于为该应用程序加密或在其上附加一个签名的“密钥”。
在这个实施例中,假设已经根据公用密钥加密方式对应用程序加密或在其上附加一个签名,这种加密方式是由RSA设计人员完成的(RSA是指三个MIT的软件研究人员的名称的首字母)。在这种情况下,一套按照公用密钥加密方式保密的密钥-A用于加密,而公用密钥-A用于对采用保密的密钥-A进行加密后的加密版本解码,它们被提供给所述软件开发者。
所述软件开发者的软件开发服务部门31和所述软件许可机构的软件许可机构服务部门32之间可以通过因特网络34、公用线路、CATV网络、地面载波网络。卫星网络或其他网络实现相互联系。例如,通过网络34提供保密的密钥-A和公用密钥-A。
保密的密钥-A和公用密钥-A也可以由软件开发者自己而不是软件许可机构制作,然后提供给已被许可的软件开发者。
在收到保密的密钥-A和公用密钥-A之后,软件开发者的服务部门31例如通过因特网络34将公用密钥-A传送给该程序许可机构服务部门32。
根据由所述软件开发者的服务部门31传送的已接收公用密钥-A的情况,该程序许可机构服务部门32将其加密,并且将已加密的公用密钥-A(以下均称“加密的公用密钥”)通过因特网络34传送给所述软件开发者服务部门31。
在程序许可机构服务部门32中,对公用密钥-A的加密是根据一种公用密钥加密方式完成的,这就是说,在程序许可机构服务部门32中,用一套保密密钥-B实现加密,并且用公用密钥-B对利用所述的保密密钥-B进行加密的结果实现解码,而公用密钥-A的加密是利用保密密钥-B实现的。
另一方面,在软件开发者的服务部门31中,接收由所述程序许可机构服务部门32传送来的已加密的公用密钥-A后,采用保密的密钥-A实现对应用程序的加密或在应用程序上附加一个签名。存储该已被加密或已附加了一个签名的应用程序,从而建立了与加密的公用密钥-A的相关性。
当通过网络34接收到来自用户终端33的关于该应用程序的请求后,软件开发者服务部门31通过网络34将该应用程序(如上所述已加密或已附加了一个签名)及其相关的已加密的公用密钥-A共同传送给该用户终端33。
下面将说明以Java虚拟机作为程序执行环境的情况,这样的程序执行环境是指该程序是由程序设计机构开发完成的,或者该软件开发者已经请求软件许可机构认可其使用和销售该经许可的程序给用户终端33。这个软件许可机构服务部门32建立有一个程序执行系统(即,一个允许计算机(用户终端33)在程序可执行环境中运算的程序),它具有Java程序执行环境,即包含一个由该软件许可机构提供的Java虚拟机。当用户通过操作用户终端33请求该软件许可机构服务部门32发送所述程序执行系统时,软件许可机构服务部门32通过网络34向用户终端33传送该程序执行系统。以此方式,所述的由软件许可机构提供的该程序执行系统可以在用户终端33上实现。
软件许可机构服务部门32向用户终端33传送该程序执行系统的同时还传送了公用密钥-B。接收的公用密钥-B被存储在用户终端33中。
如果用户终端33作为可以实现程序执行系统的Java虚拟机,那么只有当一个应用程序是得到其程序许可机构许可的情况下,这个从软件开发者服务部门31提供的应用软件才能正常被执行。
即,在用户终端33上,从软件开发者服务部门31提供的已加密的公用密钥-A必须利用由软件许可机构服务部门32提供的公用密钥-B译码,变成公用密钥-A。另外,在用户终端33上,从软件开发者服务部门31提供的已加密的应用程序必须利用所述的公用密钥-A进行解码。之后已解码的应用程序才能在该Java虚拟机上执行。或者从软件开发者服务部门31提供的已附加在一个应用程序上的逻辑签名必须利用所述的公用密钥-A进行识别,只有当这个签名被确认为合法时,该应用程序才能在Java虚拟机上正常被执行。
因此,如果利用公用密钥-B译码后获得的密钥不是已加密的公用密钥-A,即不是合法的,则不能获得公用密钥-A。如果利用这样的译码结果将该应用程序解码,不能获得能够在Java虚拟机上正常被执行的应用程序;即,Java虚拟机不能正常工作。
类似地,当识别一个签名不是应用公用密钥-A进行识别时,该签名的合法性将被否定,于是不能获得能够在Java虚拟机上正常被执行的应用程序。
如上所述,凡是由软件开发者服务部门31提供的没有得到有关的软件许可机构的承认的应用程序,都不能在用户终端33上作为Java虚拟机执行(至少不能正常执行)。
结果,凡是以Java虚拟机作为程序执行环境开发和销售的公司能够限制一个由第三方制作的应用程序的非法销售和在Java虚拟机上执行。例如,正规的公司可以允许将其应用程序只销售给经其许可的软件开发者。
在上述实例中,当获得公用密钥-A、保密的密钥-A和加密的公用密钥-A之后,软件开发者可以自由销售能够在用户终端33中实现的Java虚拟机上执行的应用软件。因此,每次新发布应用软件时,这些软件开发者无需作麻烦的与软件许可机构服务部门32联系和请求认可的工作。
但是,可能发生这样的情况,即软件许可机构对于某些程序要求限制只由一个软件开发者使用公用密钥-A、保密的密钥-A和加密的公用密钥一A的情况。例如,软件许可机构可以通过修改用于加密公用密钥-A的保密的密钥-A来实现这种限制(在这种情况下,软件许可机构需要向用户公布一个与新的保密的密钥对应的公用密钥)。此外,上述目的可以以下列方式不进行上述修改实现。如果软件许可机构给有关的软件开发者提供唯一的公用密钥-A、保密的密钥-A,可以确认这些软件开发者销售的是带有密码字的公用密钥-A或带有签名的一定的应用程序。例如,软件许可机构可以容易地识别出一个软件开发者所销售的应用程序的数量是否超过在许可证合同书中规定的允许使用公用密钥-A、保密的密钥-A的数量,一个带有密码字的公用密钥-A用于限制上述程序的数量。
软件开发者可以通过记录载体35向用户提供一个应用程序,例如一张CD-ROM或一个磁盘,可以采用邮寄或通过经纪代理人发货(over thecounter)。这种情况也包括上面所述的不能在作为Java虚拟机上正常被执行的应用程序的情况,即这个应用程序没有获得软件许可机构的认可。
尽管在上述实例中,数据(公用密钥-A、保密的密钥-A和带有密码字的公用密钥-A)是通过网络34在软件开发者和软件许可机构之间交换,但是,数据的交换也可以通过邮寄方式发送记录有数据的记录载体。
类似地,软件许可机构可以向用户提供程序执行系统和已记录在记录载体36上的公用密钥-B,记录载体例如CD-ROM或磁盘,发送方式可以通过邮寄或通过经纪代理人发货。
尽管在图10的实施例中,软件开发者服务部门31、软件许可机构服务部门32和用户终端33每个都只有一个,实际上,它们可以是多个。
图11表示图10所示的软件开发者服务部门31的结构的一个实例。
CPU41根据存入辅助存储器46中的执行程序执行各种过程,所述的存入(记录在)辅助存储器46中的执行程序是操作系统控制程序。ROM(一个只读存储器)42内存有一个IPL(初始装入程序)程序和其他程序。RAM(随机存取存储器)43存有一个由CPU41执行的程序和CPU操作所必需的数据。一个输入部分,例如键盘或鼠标44受控制输入一个命令或数据,。一个输出部分45,例如显示器或打印机显示或打印必要的信息。所述的辅助存储器46例如硬磁盘,用于存储操作系统和其他由CPU41执行的程序,以及CPU41的执行结果和其他必要的数据。通信控制部分47通过网络34控制所完成的通信任务。
图12表示如图10所示的软件许可机构服务部门32的结构的一个实例。和图13表示如图10所示的用户终端33的结构的一个实例。
软件许可机构服务部门32的结构包括一个与通信控制部分57连接的CPU51,用户终端33包括一个与通信控制部分67连接的CPU61。由于上述组件的构成方式与图11中的与通信控制部分47连接的CPU41的方式相同,因此这里不再赘述。
下面,说明根据上述对公用密钥加密的方案实现加密/解码的方法,即对公用密钥-A或一个应用程序加密/解码的方法。
图14表示根据上述对公用密钥加密的方案实现加密/解码的一个加密/解码系统的结构的实例。
一个正常的语句作为加密的标的输入加密器71中,加密器71利用一个称为保密密钥的加密开关将该正常语句变成加密码字的语句,并且对每个人来说是唯一的。
另一方面,由加密器71产生的加密码字的语句输入到译码器72,它利用称为公用密钥的译码开关将加密码字的语句译码变成常规的正常语句,并且对公众是公用。
类似于加密器71,软件开发者服务部门31利用保密密钥-A将Java字节代码作为一个应用程序加密。而且,类似于加密器71,程序许可机构服务部门32采用保密的密钥-B对由软件开发者服务部门31传送的公用密钥-A加密。
另一方面,类似于译码器72,用户终端33利用公用密钥-B对已加密的公用密钥-A解码,并且利用已解码的公用密钥-A将已加密的应用程序译码。
加密/解码方法不限于公用密钥加密设计方案,也可以使用其他的设计方案,例如公共密钥加密方案是典型的使用DES(数据加密标准)的方法(由IBM公司研制并且已作为美国政府的一个标准使用)。关于这种公共密钥加密方案,利用一个公共密钥完成加密/解码,这个公共密钥除了相关的当事人以外不对任何人公开。在已公用密钥加密方案中,加密用的保密密钥是与解码用的已公用密钥不同的(相反,一个公开密钥和一个保密密钥可以被分别用于加密和解码)。但是在公共密钥加密方案中,同一个公共密钥既可用于加密,也可用于解码。因此,始终将该公共密钥除了相关的当事人以外不对任何人公开是非常必要的。
下面,说明根据已公用密钥加密方案附加签名的方法,用于对一个应用程序附加一个签名(数字签名)。
图15表示根据已公用密钥加密方法生成/识别一个数字标号的加密/解码系统的结构实例。
一个正常语句作为加密的标的输入到一个摘要发生器91,它根据MD5(MD:信息汇编)算法或SHA-1(SHA:散列数据保密算法)算法产生被接受的该正常语句的摘要,这种信息汇编分类是一种工具分类,它用于提供密码字保密信息摘要的函数性,例如SHA-1或MD5。一个密码字保密摘要具有随机大小的输入(字节组),并且产生固定大小的称为一个摘要的输出。一个摘要具有下列特性。它应不可能通过计算找出另一个可产生相同摘要的输入字串。这个摘要不会表现与找出输入信息相关的任何途径。信息摘要用于产生唯一的和可靠的数据的标识。这种标识有时被称为数据的“数字化指纹”。
一个摘要相应于一个正常语句的机械压缩的语句,由不同的正常语句产生的不同的摘要作为输入。例如,利用散列数据功能将一个正常语句进行变换,然后产生一个摘要。
一种标记一组由关键词调用的范围(RANGE)的方法称为使信号散列法,用于检索一个数据库,获得一个有限的确定的数字范围(相当于一个记录号或一组尾标)。这个标记的变换功能称为信号散列功能。
由摘要发生器91生成的摘要供给加密器92。加密器92采用一个保密密钥对这个摘要加密,例如如图14所示的加密器71,并且输出已加密的摘要作为数字签名。这个数字签名被附加在原来的正常的语句上,作为附加了签名的正常语句输出。
另一方面,这个数字签名作为附加了签名的正常语句的一部分被输入到一个译码器93,而该语句本身被输入到摘要发生器94。译码器93利用一个公用密钥将该数字签名译码成一个摘要,例如如图14所示的译码器72。所得到的摘要供给签名识别装置95。
类似于摘要发生器91,摘要发生器94将所接收的正常语句变成摘要形式,并且提供给签名识别装置95。
签名识别装置95判断该签名的合法性(数字签名),即识别此签名。尤其是签名识别装置95识别出由译码器93输出的摘要是否与由摘要发生器94输出的摘要相互间吻合,如果这两个摘要相互间不吻合,签名的合法性将被否定,可以认定,该正常语句是有误的,或用于译码器93中的该公开密钥不对。
另一方面,如果由译码器93输出的摘要与由摘要发生器94输出的摘要相互间吻合,签名的合法性将被确认,可以认定,该正常语句是无误的,或用于译码器93中的该公开密钥正确。
该带有签名的正常语句也供给签名识别装置95。当该签名被确认为是合法的,签名识别装置95输出这个正常语句。
一个应用程序的签名被附加到软件开发者服务部门31上的应用程序上,通过产生该应用程序的摘要,产生一个签名(数字签名),然后以上述方式利用保密密钥加密这个摘要。另一方面,在用户终端33中,利用公开密钥-A将该签名译码为摘要,并且由该应用程序产生一个摘要。通过比较两个摘要是否吻合来判断该签名的合法性。
一个符合用于定义一个附加该签名的一方(在本实例中指软件开发者)。一个带有签名的应用程序的源程序可以比较容易地根据其签名确定。例如,一个应用程序具有一个错误等干扰,则可以比较容易地发现问题,即发现是哪个软件开发者销售了这个具有一个错误的带有签名的应用程序。
此外,如果一个带有签名的应用程序出现错误或已被计算机病毒破坏,则根据该应用程序生成的一个摘要不会与通过对该签名的译码所得到的摘要相互符合,因此,该签名的合法性将被否定。于是,防止了在用户终端33上执行出现错误或已被计算机病毒破坏的应用程序。
用于产生一个签名的保密密钥-A不应让第三者获知(在本实例中指该软件开发者和该程序许可机构之外的公司),第三者即使译码了该应用程序,仍然很难找到签名的生成方法。
这个签名的生成/识别方法并不限于上述采用已公用密钥加密的方法。
下面,说明由软件开发者服务部门31、该程序许可机构服务部门32、用户终端33执行应用程序的过程,这里指采用保密密钥-A进行加密完成对一个应用程序的识别的情况。
首先,将参照附图3和16的流程图说明软件开发者服务部门31的过程。
这个软件开发者与该程序许可机构签订一个许可证合同书,并且被提供保密的密钥-A和公用密钥-A,例如,获得该程序许可机构予以配发的这些密钥。在软件开发者服务部门31处,首先进行图16的步骤S1,通信控制部分47通过网络34传输公用密钥-A到程序许可机构服务部门32,以便得当该程序许可机构的许可。接着,程序进到S2,CPU41判断加密的公用密钥-A作为被许可的公用密钥-A是否已由该程序许可机构服务部门32予以配发,如果判断出还没有配发被许可的公用密钥-A,程序返回到S2。
如果判断出已接收到配发的被许可的公用密钥-A,程序进到S3,通信控制部分47接收已加密的公用密钥-A。接着,程序进到S4,通过通信控制部分47接收的已加密的公用密钥-A被传输到和存入辅助存储器46。于是该过程完成。
之后,该软件开发者应用一个在JAVA虚拟机上运行的应用程序,将其存入(记录在)辅助存储器46中。在软件开发者服务部门31处,首先进行图3的步骤S6,CPU根据一个JAVA程序将存入辅助存储器46中的应用程序编译成JAVA字节代码。这个JAVA字节代码也传输到和存入辅助存储器46中。
接着,程序进到S7,CPU41采用保密的密钥-A对由步骤S6编译获得的JAVA字节代码加密,类似于关于图14的方式,产生加密的字节代码。在S8,将加密的字节代码存入辅助存储器46中。于是建立了与加密的公用密钥-A的相关性,该过程完成。
下面,将参照附图17的流程图说明程序许可机构服务部门的过程。
例如,该程序许可机构是一个应用JAVA虚拟机作为程序执行环境的公司,或是一个依靠自己能力从事开发的组织。例如,该程序许可机构服务部门32执行一个确认的过程,确认公用密钥-A是作为一个被许可的公司的应用程序的许可证。
这是以下述方式实现的,首先,在步骤S11,该程序许可机构服务部门32的CPU41判断作为一个被许可的标的的公用密钥-A是否已通过网络34从软件开发者服务部门31处传输。如果判断出公用密钥-A还没有被传输,程序返回S11。如果判断出公用密钥-A已经被传输,程序进到S12,CPU51判断出所接收的公用密钥-A是由一个被许可的即合法的软件开发者服务部门31处传输来的。
当该程序许可机构已经与一个软件开发者签订了允许该软件开发者应用和销售一个在JAVA虚拟机上执行的应用程序的许可合同书,则提供一个ID和一个密码字给这个软件开发者。所述的一个ID和一个密码字的配发是在接收到被许可的合法的软件开发者传输的许可证合同和公用密钥-A(作为许可标的)时。在S12,判断出所接收的公用密钥-A是由一个被许可的即合法的软件开发者服务部门31处根据上述的ID和密码字形成的。
在S12,如果判断出所接收的公用密钥-A不是由一个被许可的即合法的软件开发者服务部门31处传输的,即所接收的公用密钥-A是由一个没有许可合同的软件开发者传输的,程序进到S13,通信控制部分57向这个软件开发者传输一个信息反馈,使公用密钥-A不能被许可,除非签订许可合同。于是程序完成。
另一方面,如果在S12判断出所接收的公用密钥-A是由一个被许可的即合法的软件开发者服务部门31处传输的,程序进到S14,CPU51将所接收的公用密钥-A加密成一个加密的公用密钥-A。因此这个公用密钥-A得以确认。
程序进到S15,通信控制部分57将这个加密的公用密钥-A作为已被确认的公用密钥-A传输给通过网络34发送公用密钥-A的那个软件开发者(在本例中指软件开发者服务部门31)。于是程序完成。
图1表示在用户终端33执行一个应用程序的作为程序执行环境的程序执行系统的设计结构实例。
输入部分81接收加密的字节代码(加密的JAVA字节代码)和加密的公用密钥-A以及公用密钥-B,提供该加密的字节代码给译码器82,提供该加密的公用密钥-A以及公用密钥-B给译码器84。译码器82的操作同图14的译码器72。译码器82利用由译码器84输出的公用密钥-A,将由输入部分81提供的加密的字节代码解码为原来的JAVA字节代码。由译码器82获得的JAVA字节代码提供给JAVA虚拟机83。JAVA虚拟机83执行由译码器82获得的JAVA字节代码所定义的程序。类似于译码器82,译码器84的操作同图14的译码器72。尤其是,译码器84利用由输入部分81提供的公用密钥-B,将由输入部分81提供的加密的公用密钥-A解码为公用密钥-A,然后将获得的公用密钥-A传输给译码器82。
在上述程序执行系统的设计结构实例中,第一,输入部分81得到加密的字节代码和加密的公用密钥-A以及公用密钥-B,例如,加密的字节代码和加密的公用密钥-A已经预先由软件开发者服务部门31处通过网络34传输,并作为文件存入辅助存储器66中,或者在记录载体35上记录了加密的字节代码和加密的公用密钥-A,它们作为文件放入用户终端33,输入部分81打开这些文件,读取加密的字节代码和加密的公用密钥-A。
考虑软件开发者服务部门31处与Internet网络34连接的情况。在这个软件开发者服务部门31处,加密的字节代码和加密的公用密钥-A与一个URL(Universal Resource Locator)(统一资源定位器)相关,当用户通过控制输入部分64指定所述的URL时,输入部分81接收由软件开发者服务部门31处通过网络34传输的加密的字节代码和加密的公用密钥-A。
考虑软件开发者服务部门31通过地面或通过卫星通信网络34数字式传输加密的字节代码和加密的公用密钥-A的情况。在这种情况下,输入部分81接收所传输的加密的字节代码和加密的公用密钥-A。
以类似的方式,输入部分81得到由程序许可机构配发的公用密钥-B。
关于加密的字节代码和加密的公用密钥-A、公用密钥-B,输入部分81提供该加密的字节代码给译码器82,提供该加密的公用密钥-A以及公用密钥-B给译码器84。
译码器84利用由输入部分81提供的公用密钥-B,将由输入部分81提供的加密的公用密钥-A解码为公用密钥-A,然后将获得的公用密钥-A传输给译码器82。译码器82利用由译码器84输出的公用密钥-A,将由输入部分81提供的加密的字节代码解码为原来的JAVA字节代码。由译码器82获得的JAVA字节代码提供给JAVA虚拟机83。JAVA虚拟机83判读和执行由译码器82获得的JAVA字节代码所定义的程序。
如上所述,译码器84利用与在程序许可机构服务部门32用于加密的保密的密钥-B相应的(配对的)公用密钥-B,将加密的公用密钥-A解码为公用密钥-A,然后将获得的公用密钥-A传输给译码器82。然后,译码器82利用由译码器84通过译码和与在软件开发者服务部门31用于加密的保密的密钥-B相应而得到的公用密钥-A,将加密的字节代码解码为原来的JAVA字节代码。由译码获得的JAVA字节代码提供给JAVA虚拟机83。
因此,如果采用公用密钥-B译码获得的一个密钥不是由程序许可机构配发的合法的加密的公用密钥-A,则不能得到合法的公用密钥-A。(存在这样的可能性,由译码器84偶然输出一个合法的公用密钥-A,然而,这种可能性几乎等于零。)例如,这相应于输入了未加密的公用密钥-A的情况,加密的密钥-A是根据与程序许可机构服务部门32使用的算法不同的算法加密的,或公用密钥-A是根据与程序许可机构服务部门32使用的算法相同的算法加密的,但是没有用在正常情况下应当采用的保密的密钥-B。所以,即使利用这种解码方式获得加密的字节代码,但是不能获得可以在JAVA虚拟机83上正常工作的应用程序,JAVA虚拟机83不能正常工作。结果,可以限制在JAVA虚拟机83上工作的JAVA字节代码的扩散,因为程序许可机构没有许可这个用户在其可实现JAVA虚拟机83的用户终端33上使用该JAVA字节代码。
以上述方式,可能实现仅仅允许与程序许可机构签订了许可证合同书的软件开发者销售在JAVA虚拟机83上工作的JAVA字节代码给具有JAVA虚拟机83工作环境的用户33。JAVA虚拟机83的制造商或销售商可以从销售在JAVA虚拟机83上工作的JAVA字节代码的软件开发者收取许可费用。
还可以考虑只允许译码器82将JAVA字节代码输入给JAVA虚拟机83的情况。而且,希望只允许译码器84输入公用密钥-A给译码器82的情况。
当接收了一个确定的输入时,图1所示的译码器82和译码器84中每个执行相应于该输入的译码工作,并输出处理结果。因此,当密钥不是公用密钥-B、JAVA字节代码没有用保密的密钥-A加密时,或没有用保密的密钥-B加密的公用密钥-A被输入和译码后,所得到的密钥或JAVA字节代码传输给JAVA虚拟机83时,JAVA虚拟机83一般工作出毛病。所以,可以采用一个程序,检验译码器82输出的是否是合法的(正常的)JAVA字节代码,以及该JAVA虚拟机83是否仅当译码器82输出的是合法的JAVA字节代码时才允许判读和执行这个JAVA字节代码。例如,判定译码器82输出的是否是合法的(正常的)JAVA字节代码,当位于JAVA字节代码前端的称为“可多变的(MAGIC)”32比特数据具有一个合法的数值时(以十六进制表示为“CAFEBABE”),JAVA虚拟机83可以被允许判读和执行这个JAVA字节代码。以此防止了JAVA虚拟机83的异常工作。
从限制在JAVA虚拟机83上执行一个应用程序的角度而言,即使图1所示的译码器82和译码器84所用的解码算法或公用密钥-A和B已由非合法用户所知,只要用于加密的加密算法或保密的密钥-A和B是不知道的,上述限制也没有问题。也就是说,即使一个加密的语句的解码方法已泄露,只要不知道供给译码器82的产生加密的字节代码和由其输出的是在JAVA虚拟机83上可以被允许判读和执行的JAVA字节代码的方法或不知道供给译码器84的产生加密的公用密钥-A的方法,仍然能够限制在JAVA虚拟机83上执行一个应用程序。
可是,如果某人知道了一个加密的语句的解码方法,他可以根据加密的字节代码获得原来的JAVA字节代码。由于JAVA字节代码的内容可以较容易地被解码,易于实现反向译码。
为了防止这种反向译码的实施,应当对一个加密的语句的解码方法始终保密。例如,用于对已加密的公用密钥-A解码的公用密钥-B保密,尽管一般它被公用,上述已加密的公用密钥-A由对用于将加密的字节代码解码的公用密钥-A加密获得。
图18表示一个程序执行系统的结构的实例,其中公用密钥-B是保密的。图18中的与图1中的相应的组件采用相同的签名,相应的说明将予以省略。
在这个实施例中,例如,公用密钥-B是位于一个单独的位置或分散在程序的多个位置处,该程序构成一个包含JAVA虚拟机83的程序执行系统。译码器84利用这个公用密钥-B译码加密的语句。因此,公用密钥-B永远不会由该程序执行系统泄露,可以防止发生加密的语句被非法解码和实现反向译码(或实现反向译码的可能性降低)。
下面,将说明由用户终端33和软件开发者服务部门31执行一个应用程序的过程,这个应用程序是通过附加一个用加密的密钥-A产生的签名被确认的,此时,由于程序许可机构服务部门32执行一个类似于在上述给应用程序加密的情况的过程,因此类似的描述在此予以省略。
首先,将参照附图解说明软件开发者服务部门31的工作方式。假设上述与附图16的流程图相关的过程已在软件开发者服务部门31执行完毕,即一个加密的公用密钥-A已经由程序许可机构服务部门32提供。还假设一个在JAVA虚拟机上执行的应用程序已经提供和存入辅助存储器46中。
在软件开发者服务部门31中,如图3的S6的情况,CPU41根据一个JAVA编译程序(步骤21)将该存入辅助存储器46中的应用程序编译成JAVA字节代码,再将这个JAVA字节代码也存入辅助存储器46中。
然后,程序进到S22,将一个签名添加到这个JAVA字节代码,该加密的签名是确认在步骤S21通过编译获得的这个JAVA字节代码的合法性。
尤其是在S22,CPU41产生一个JAVA字节代码的摘要,例如,采用如图15的摘要发生器91的方式实现,接着,程序进到S23,CPU41利用保密的密钥-A加密在S22中产生的摘要,加密方式采用如图15的加密器92的方式实现,于是产生一个数字签名。接着,程序进到S24,这个数字签名被添加到所述JAVA字节代码上(添加数字签名的JAVA字节代码在下面称为“加签名的字节代码”)。在步骤S24,加签名的字节代码存入辅助存储器46中,建立了与公用密钥-A的相关性。该过程结束。
图4表示一个程序执行系统作为一个检验一个应用程序的合法性和只允许合法地在用户终端33中执行的程序执行环境的结构的实例,图4中的与图1中的相应的组件采用相同的签名,相应的说明将予以省略。
输入部分101采用基本上与图1中的接收部分81相同的方式输入。但是输入部分101与图1中的接收部分81具有差别,它接收加签名的字节代码(添加数字签名的JAVA字节代码),而不是加密的字节代码。输入部分101将加签名的字节代码分成一个签名和JAVA字节代码后输出。该签名提供给签名识别部分103,JAVA字节代码则送到信息摘要系统102和一个虚拟机输入控制器104。
信息摘要系统102执行一个类似于图15中的由摘要发生器94完成的过程。即,信息摘要系统102根据JAVA字节代码产生一个摘要,然后供给签名识别部分103,签名识别部分103与图15中的译码器93和签名识别器95类似,检验由输入部分101供给的签名的合法性。
尤其是,签名识别部分103接收由输入部分101供给的签名和由信息摘要系统102提供的摘要、及由译码器84输出的公用密钥-A。签名识别部分103利用接收的公用密钥-A将该签名判读成一个摘要,将此摘要与由信息摘要系统102提供的摘要相比,检验该签名的合法性。此外,签名识别部分103根据检验的结果控制虚拟机输入控制器104。
虚拟机输入控制器104在签名识别部分103的控制下向JAVA虚拟机83提供由输入部分101供给的JAVA字节代码。
在上述结构的程序执行系统中,首先,输入部分101采用基本上与图1中的接收部分81相同的方式输入加签名的字节代码和加密的公用密钥-A及公用密钥-B。然后,输入部分101将加签名的字节代码分成一个签名和JAVA字节代码后输出。该签名提供给签名识别部分103,JAVA字节代码则送到信息摘要系统102和一个虚拟机输入控制器104。而且输入部分101提供加密的公用密钥-A及公用密钥-B到译码器84。如上关于图1的描述,译码器84利用由输入部分提供的公用密钥-B,将由输入部分提供的加密的公用密钥-A解码为公用密钥-A,然后将获得的公用密钥-A传输给签名识别部分103。
另一方面,信息摘要系统102根据由输入部分101提供的JAVA字节代码产生一个摘要,然后将摘要供给签名识别部分103,签名识别部分103利用由译码器84提供的公用密钥-A将由输入部分101供给的签名解码,签名识别部分103将此摘要与由信息摘要系统102提供的摘要相比,根据这两个签名是否相符的情况,判断由输入部分101供给的签名的合法性。
如果证实了该签名的合法性,即,如果由签名解码所获得的摘要与由信息摘要系统102提供的摘要相符,签名识别部分103根据检验的结果控制虚拟机输入控制器104,由输入部分101提供的JAVA字节代码输出到JAVA虚拟机83。虚拟机输入控制器104根据签名识别部分103的控制指令向JAVA虚拟机83提供由输入部分101提供的JAVA字节代码。
因此,此时,JAVA虚拟机83在虚拟机输入控制器104的控制下判读和执行由输入部分101提供的JAVA字节代码。
另一方面,如果证实了该签名不合法,即,如果由签名解码所获得的摘要与由信息摘要系统102提供的摘要不相符,签名识别部分103根据检验的结果控制虚拟机输入控制器104,则由输入部分101提供的JAVA字节代码不会输出到JAVA虚拟机83。
此时,虚拟机输入控制器104不向JAVA虚拟机83输出由输入部分101提供的JAVA字节代码。因此,JAVA虚拟机83不执行任何操作。
如上所述,同附加签名以便确认一个应用程序的情况,存在限制JAVA字节代码扩散的可能性,这种JAVA字节代码是在JAVA虚拟机83上工作的,但未得到程序许可机构授权在用户终端33上的JAVA虚拟机83执行的许可。即,可能实现仅仅允许与程序许可机构签订了许可证合同书的软件开发者销售在JAVA虚拟机83上工作的JAVA字节代码给具有JAVA虚拟机83工作环境的用户33。JAVA虚拟机83的制造商或销售商可以从销售在JAVA虚拟机83上工作的JAVA字节代码的软件开发者收取许可费用。
如上所述,同附加签名以便确认一个应用程序的情况,存在限制添加签名的JAVA字节代码错误版本在JAVA虚拟机83上工作的可能性。
在图4的实施例中,有必要考虑只允许虚拟机输入控制器104向JAVA虚拟机83输出JAVA字节代码。而且,希望考虑只允许译码器84将输入的公用密钥-A,然后将获得的公用密钥-A传输给签名识别部分103。
应当注意,此时JAVA字节代码本身存在于添加了签名的JAVA字节代码中,这不象将JAVA字节代码加密的情况。因此,在一个不检验该签名的合法性(例如,在一个程序执行系统中,JAVA字节代码作为输入部分101的输出被直接供给JAVA虚拟机83)的程序执行系统中,JAVA字节代码可以不受限制地被判读和执行。
在添加了签名的JAVA字节代码的情况下,JAVA虚拟机的销售商和开发者,销售JAVA虚拟机给用户终端33的销售商和类似的公司可以组成一个如图4所示的程序执行系统。一个不想限制JAVA字节代码的执行的公司可以组成一个不必检查附加的签名的合法性的程序执行系统。
如图10所示的实施例中,程序许可机构以如下的方式向用户提供一个程序执行系统(即,激发用户终端33变成一个程序执行系统的程序),它可以在用户终端33上起程序执行系统的作用。这个程序执行系统也可以以如下的方式形成,如被加密或被添加一个签名,就象由软件开发者提供的一个应用程序。
例如,程序许可机构以向用户提供一个添加一个签名的程序执行系统,该程序许可机构服务部门32执行如图19的流程图所示的过程。
此时,在这个程序许可机构服务部门32中,首先,在步骤S31,CPU51将一个程序执行系统的程序编译成可由用户终端33的CPU61执行的代码(以下称为“执行代码”),在步骤S32,例如,采用上述如图15所示的方式,CPU51根据在步骤S31编译获得的执行代码产生一个摘要。程序进到S33,CPU51利用加密公用密钥-A的保密的密钥-B对在S32产生的摘要加密,生成一个签名(数字签名)。在S34,这个数字签名被附加到该执行代码(被附加了数字签名的执行代码以下称为“加签名的执行代码”),加签名的执行代码被存入辅助存储器56中,从而建立了与公用密钥-B的相关性,公用密钥-B是与生成一个签名的保密的密钥-B成对存在的。至此程序结束。
图20表示程序装入装置(程序执行系统实现装置)的功能结构的实例,用于在用户终端33上实现上述类型的附加了签名的程序执行系统。
在本例中,程序装入装置包含输入部分111,信息摘要系统112,签名识别系统113和一个执行系统114。其中输入部分111,信息摘要系统112和签名识别系统113的结构分别与图4表示的输入部分101,信息摘要系统102和签名识别系统103的结构相同。执行系统114相应于用户终端33包括CPU61的部分,判读和执行该执行代码。
在上述结构的程序装入装置中,输入部分111接收到加签名的执行代码和公用密钥-B。然后,输入部分111将加签名的执行代码分成一个签名和执行代码,将签名供给签名识别系统113,将该执行代码供给信息摘要系统112和执行系统114。此外,输入部分111还将公用密钥-B供给签名识别系统113。
信息摘要系统112根据由输入部分111供给的执行代码产生一个摘要,然后将产生的摘要送到签名识别系统113,签名识别系统113利用由输入部分111供给的公用密钥-B,将由输入部分111供给的摘要解码成签名。接着,签名识别系统113将此摘要与由信息摘要系统112提供的摘要相比,根据这两个签名是否相符的情况,判断由输入部分111供给的签名的合法性。
如果证实了该签名的合法性,即,如果由签名解码所获得的摘要与由信息摘要系统112提供的摘要相符,签名识别部分113根据检验的结果控制执行系统114,判读和执行由输入部分111提供的JAVA字节代码。此时,执行系统114根据签名识别部分113的控制指令判读和执行由输入部分111提供的所述执行代码。
另一方面,如果证实了该签名不合法,即,如果由签名解码所获得的摘要与由信息摘要系统112提供的摘要不相符,签名识别部分113根据检验的结果控制执行系统114,则由输入部分111提供的JAVA字节代码是不予以考虑的。此时,执行系统114不考虑由输入部分111提供的执行代码,在签名识别部分113的控制下不执行操作。
如上所述,在将签名添加到一个程序执行系统的情况下,能够防止盗用或类似非法行为。
如上所述,程序执行系统可以加密,能够防止对该程序执行系统的反向译码。
当已经证实程序执行系统上添加的签名是合法的,如上所述,执行系统114根据签名识别部分113的控制指令判读和执行由输入部分111提供的所述执行代码。结果,一个类似于图4表示的程序执行系统的程序执行系统如图21所示实现在用户终端33上。但是,此时,公用密钥-B是由图20表示的程序装入装置的输入部分111提供给译码部分84的,而不是由输入部分101供给的。
应当注意,加密一个具有较大信息量的程序是需要花费时间的,对已加密程序的解码也是同样费时的。这种程序是指应用程序或根据RSA公开密钥加密方法编撰的程序执行系统的程序。反之,如果根据一个公共密钥的加密方法(如DES方法)进行加密/解码,即使具有较大信息量的程序,也可在较短的时间内完成。另一方面,如上所述,即使用于解码的公用密钥已对外公开,由于这个公用密钥与用于加密的保密的密钥不同,采用RSA方法也是没有问题的。可是,如果使用DES方法,由于采用一个公共的密钥进行加密和解码,有必要严格控制这个公共的密钥,不能让局外人获知。
根据上述观点,能够在较短的时间内实现所需的加密和解码过程,可以实现开关密钥的灵活管理。尤其是,采用DES方法加密一个具有较大信息量的应用程序,并且采用DES方法进行加密的一个公共的密钥是根据所述RSA方法实现加密的(一种加密技术,其中将RSA方法和DES方法相互组合,以下称为“组合方法”)。
图22表示一个软件开发者服务部门31的结构的实例,其中加密是用组合方法完成的。
由JAVA编译器编译的一个应用程序获得的JAVA字节代码输入到加密器121,除了这个JAVA字节代码外,加密器121还接收一个公共密钥。加密器121利用该公共密钥根据DES方法对JAVA字节代码加密,形成加密的字节代码(加密的语句)。
这个输入到加密器121的公共密钥也输入给加密器122。加密器122根据RSA方法进行加密,例如,利用保密的密钥-A加密该公共密钥。
此时,软件开发者向用户发布一套加密的字节代码、利用保密的密钥-A加密的一个公共密钥(以下称为“加密的公共密钥”)和由程序许可机构提供的公用密钥-A。
图2表示一个应用在用户终端的33中的程序执行系统的结构的实例,其中应用程序的加密是用组合方法完成的。图2中的与图1中的相应的组件采用相同的签名,相应的说明将予以省略。
例如,译码部分131根据RSA方法对公共密钥进行译码,将译码结果的公共密钥传输到译码部分132。译码部分132例如根据DES方法将已加密的字节代码解码。
在上述结构的程序执行系统中,输入部分81接收一个已加密的字节代码(已加密的JAVA字节代码)、一个加密的公共密钥、一个加密的公用密钥-A和公用密钥-B。接着,输入部分81提供加密的公用密钥-A和公用密钥-B给译码部分84,提供加密的公共密钥给译码部分131,还提供已加密的字节代码给译码部分132。
如上所述,译码器84利用公用密钥-B,将加密的公用密钥-A解码为公用密钥-A,然后将获得的公用密钥-A传输给译码器131。译码器131利用由译码器84提供的公用密钥-A,将由输入部分81输送的加密的公共密钥解码成一个公共密钥,然后将得到的公共密钥输送给译码器132,利用由译码器131输送的公共密钥,译码器132将由输入部分81输送的加密的字节代码解码为原来的JAVA字节代码。由译码获得的JAVA字节代码提供给JAVA虚拟机83。
上述组合方法能够使开关密钥的管理方式简化,并可加快加密和解码的速度。
这种组合方法不仅能够用于加密一个应用程序,而且能够加密程序执行系统或其它情况的程序(执行代码)。
本发明不仅能够用于上述两种JAVA虚拟机(判读式和JIT编译式),而且能够用于并非JAVA虚拟机的虚拟机。本发明还可用于下列情况,一个程序执行系统的输入是通过C语言或C++语言的程序系统的机器代码实现的,和一个程序执行系统的输入是通过BASIC语言的程序系统的源码实现的。
尽管在图1和4的实施例中只提供了单个的程序执行系统,但是在用户终端33上可具有多个程序执行系统。这将在下面予以说明。此时具有一组输入部分81或101,一个加密语句或附加了签名的字节代码可由多个输入通道输入;具有一组译码部分82或84,加密的语句可由多个解码算法实现译码;具有一组JAVA虚拟机83,可以支持多个JAVA字节代码格式。而且,具有多个信息摘要系统102和多个签名识别部分103,能够分别根据多个方法识别所附加的多个签名。
尽管在上述实施例中,加密或生成签名是用单个开关密钥实现的,但也可以采用多个密钥实现。例如,加密操作可以顺序采用一组开关密钥完成,签名可以生成多个(数量等于开关密钥的数量)。
在上述实施例中,JAVA字节代码可以采用任何一种或数种方式,例如Java Application,Java Applet,Java Benas,Java Class Library。
在根据本发明的以Java虚拟机实现的信息处理设备中,第一密钥译码装置,用于利用一个第二密钥将第一密钥的加密版本解码,这需要对一个程序的加密版本译码;程序译码装置,利用通过第一密钥译码装置译码后得到的第一密钥译码该程序的加密版本;执行装置,用于完成由程序译码装置输出的程序。根据本发明,利用一个第二密钥将第一密钥的加密版本解码的步骤,这需要对一个程序的加密版本译码;利用通过第一密钥译码装置译码后得到的第一密钥译码该程序的加密版本的步骤;和记录、执行通过程序译码得到的程序。因此,只有当第一密钥和所述程序已被译码后,才可能执行该程序。
在根据本发明的以Java虚拟机实现的信息处理设备中,加密装置,它将程序加密成可被译码成代码的加密语句,这种代码能够通过根据本发明的信息处理设备执行。因此通过根据本发明的信息处理设备,能够提供一个可以执行的加密的程序。
在根据本发明的以Java虚拟机实现的信息处理设备中,包括执行一个程序的执行装置;密钥译码装置,它利用一个第二密钥将第一密钥的加密版本解码,第一密钥用于检验附加给该程序的签名;检验装置,利用由第一密钥解码装置译码后得到的第一密钥检验附加到程序上的签名是否合法;执行只有已由检验装置确认附加的签名合法的程序。记录本发明方案的记录载体上,这种记录载体上存贮了程序,该程序是利用一个第二密钥由计算机将第一密钥的加密版本译码的,第一密钥用于检验附加给该程序的签名;利用由第一密钥解码译码后得到的第一密钥检验附加到程序上的签名是否合法;以及只有已经由检验装置确认程序合法后才执行该程序。因此,只有当附加到程序的签名是合法的,才可能允许执行该程序。
在根据本发明的以Java虚拟机实现的信息处理设备中,处理装置对程序进行处理,用于确认在信息处理设备中的一个签名是否合法。

Claims (1)

1、一种以Java虚拟机实现的信息处理设备,执行一个执行程序的过程,包括:
第一密钥译码装置,通过利用一个第二密钥,将需要对一个程序的加密版本译码的第一密钥的加密版本解码;
程序译码装置,利用通过第一密钥译码装置译码后得到的第一密钥对该程序的加密版本译码;
执行装置,用于完成由程序译码装置输出的程序;
第二密钥译码装置,通过利用一个第三密钥,在第二密钥加密情况下,将第二密钥的加密版本解码;
其中:第一密钥是一个公共密钥,用于按照一种公共密钥加密方案加密所述程序;
第二密钥是与一个按照一种公共密钥加密方案加密所述第一密钥的保密密钥相应的公用密钥;以及
第三密钥是与一个按照一种公共密钥加密方案加密所述第二密钥的保密密钥相应的公用密钥;
所述执行装置以Java虚拟机实现;
所述执行装置和所述第二密钥从一个程序许可机构提供的;
所述程序的加密版与所述第三密钥是从一个软件开发者提供的;
所述第三密钥通过使用第二密钥的保密版加密由所述软件开发者提供的第一密钥的公共版而中所述程序许可机构产生的,并被送到所述软件开发者。
CN98108755A 1997-04-30 1998-04-29 一种以Java虚拟机实现的信息处理设备 Expired - Fee Related CN1130627C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP112182/97 1997-04-30
JP9112182A JPH10301773A (ja) 1997-04-30 1997-04-30 情報処理装置および情報処理方法、並びに記録媒体
JP112182/1997 1997-04-30

Publications (2)

Publication Number Publication Date
CN1208193A CN1208193A (zh) 1999-02-17
CN1130627C true CN1130627C (zh) 2003-12-10

Family

ID=14580316

Family Applications (1)

Application Number Title Priority Date Filing Date
CN98108755A Expired - Fee Related CN1130627C (zh) 1997-04-30 1998-04-29 一种以Java虚拟机实现的信息处理设备

Country Status (7)

Country Link
US (1) US6647495B1 (zh)
EP (1) EP0875814B1 (zh)
JP (1) JPH10301773A (zh)
KR (1) KR19980081644A (zh)
CN (1) CN1130627C (zh)
DE (1) DE69837303T2 (zh)
TW (1) TW405096B (zh)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0825506B1 (en) 1996-08-20 2013-03-06 Invensys Systems, Inc. Methods and apparatus for remote process control
JP3995338B2 (ja) 1998-05-27 2007-10-24 富士通株式会社 ネットワーク接続制御方法及びシステム
GB2343022B (en) * 1998-10-19 2003-01-08 Ibm Encrypting of java methods
FI990461A0 (fi) * 1999-03-03 1999-03-03 Nokia Mobile Phones Ltd Menetelmä ohjelmiston lataamiseksi palvelimelta päätelaitteeseen
TW518497B (en) 1999-03-30 2003-01-21 Sony Corp Information processing system
US7089530B1 (en) 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
US6449720B1 (en) * 1999-05-17 2002-09-10 Wave Systems Corp. Public cryptographic control unit and system therefor
WO2000070531A2 (en) 1999-05-17 2000-11-23 The Foxboro Company Methods and apparatus for control configuration
US6788980B1 (en) * 1999-06-11 2004-09-07 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
US7865442B1 (en) * 1999-10-15 2011-01-04 Invensys Systems, Inc. Distributing and billing software according to customer use of program modules
US7117371B1 (en) * 2000-06-28 2006-10-03 Microsoft Corporation Shared names
GB0024918D0 (en) * 2000-10-11 2000-11-22 Sealedmedia Ltd Method of providing java tamperproofing
EP1235145A3 (en) * 2001-01-19 2006-10-04 Matsushita Electric Industrial Co., Ltd. Information terminal device and program executed thereon
US20020116633A1 (en) * 2001-01-19 2002-08-22 Takuya Kobayashi Data processor
AU2002240166A1 (en) * 2001-02-01 2002-08-12 Abn Amro Services Company, Inc. A system and method for an automatic license facility
DE60209217T2 (de) * 2001-04-19 2006-09-21 Ntt Docomo, Inc. Endgeräte-kommunikationssystem
KR20030050300A (ko) * 2001-12-18 2003-06-25 (주)쉘컴정보통신 공개키 기반 소프트웨어 암호화 기법을 이용한 컴퓨터변조 방지 방법
US20030115471A1 (en) * 2001-12-19 2003-06-19 Skeba Kirk W. Method and apparatus for building operational radio firmware using incrementally certified modules
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US6782477B2 (en) 2002-04-16 2004-08-24 Song Computer Entertainment America Inc. Method and system for using tamperproof hardware to provide copy protection and online security
US7930537B2 (en) * 2002-08-13 2011-04-19 Nokia Corporation Architecture for encrypted application installation
US7877613B2 (en) * 2002-09-04 2011-01-25 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Protecting mobile code against malicious hosts
AU2003303882A1 (en) * 2003-02-03 2004-08-30 Nokia Corporation Architecture for encrypted application installation
US8041957B2 (en) * 2003-04-08 2011-10-18 Qualcomm Incorporated Associating software with hardware using cryptography
CN100451983C (zh) * 2003-06-27 2009-01-14 迪斯尼实业公司 下一代媒体播放器的双虚拟机以及信任平台
TW200502758A (en) * 2003-07-07 2005-01-16 Yuen Foong Paper Co Ltd Portable secure information accessing system and method thereof
TWI235303B (en) * 2003-07-22 2005-07-01 Yuen Foong Paper Co Ltd Digital content management system, method and application method thereof
US7516331B2 (en) * 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same
US7590867B2 (en) * 2004-06-24 2009-09-15 Intel Corporation Method and apparatus for providing secure virtualization of a trusted platform module
JP2006203564A (ja) * 2005-01-20 2006-08-03 Nara Institute Of Science & Technology マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法
US8838974B2 (en) * 2005-07-15 2014-09-16 The Mathworks, Inc. System and method for verifying the integrity of read-only components in deployed mixed-mode applications
US7921303B2 (en) 2005-11-18 2011-04-05 Qualcomm Incorporated Mobile security system and method
US20070240194A1 (en) * 2006-03-28 2007-10-11 Hargrave Bentley J Scoped permissions for software application deployment
JP4240047B2 (ja) * 2006-04-10 2009-03-18 ソニー株式会社 電子機器、コンテンツ記録方法及びそのプログラム
CN101226569A (zh) * 2007-01-19 2008-07-23 国际商业机器公司 在虚拟机中验证代码模块的方法及装置
DE102007045743A1 (de) * 2007-09-25 2009-04-02 Siemens Ag Verfahren und System zum Schutz gegen einen Zugriff auf einen Maschinencode eines Gerätes
AU2009222082A1 (en) * 2008-03-04 2009-09-11 Apple Inc. Managing code entitlements for software developers in secure operating environments
CN102124432B (zh) 2008-06-20 2014-11-26 因文西斯系统公司 对用于过程控制的实际和仿真设施进行交互的系统和方法
JP5268694B2 (ja) * 2009-02-13 2013-08-21 京セラドキュメントソリューションズ株式会社 ライセンス管理システム、画像形成装置およびライセンス管理方法
CN101872404B (zh) * 2009-04-21 2011-12-07 普天信息技术研究院有限公司 一种保护Java软件程序的方法
US8463964B2 (en) 2009-05-29 2013-06-11 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
US8127060B2 (en) 2009-05-29 2012-02-28 Invensys Systems, Inc Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware
JP5550439B2 (ja) 2010-05-06 2014-07-16 キヤノン株式会社 アプリケーションのインストール方法
CN101945010B (zh) * 2010-09-19 2013-07-10 中国联合网络通信集团有限公司 业务许可的处理方法、设备和系统
US8646050B2 (en) * 2011-01-18 2014-02-04 Apple Inc. System and method for supporting JIT in a secure system with randomly allocated memory ranges
US9152801B2 (en) * 2012-06-28 2015-10-06 Steven W. Cooke Cryptographic system of symmetric-key encryption using large permutation vector keys
US10318715B2 (en) * 2014-02-06 2019-06-11 Sony Corporation Information processing device, information processing method, program, and server
CN104318133A (zh) * 2014-10-28 2015-01-28 艾普工华科技(武汉)有限公司 基于图片加密License的处理方法及装置
US10394554B1 (en) * 2016-09-09 2019-08-27 Stripe, Inc. Source code extraction via monitoring processing of obfuscated byte code
US10896032B2 (en) * 2018-11-02 2021-01-19 Accenture Global Solutions, Limited System and method for certifying and deploying instruction code

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1043594A (zh) * 1988-11-30 1990-07-04 莫托罗拉公司 数据加密密钥故障监视器
US5224160A (en) * 1987-02-23 1993-06-29 Siemens Nixdorf Informationssysteme Ag Process for securing and for checking the integrity of the secured programs
WO1996005673A1 (en) * 1994-08-11 1996-02-22 Trusted Information Systems, Inc. System and method for key escrow and data escrow encryption
EP0706118A1 (en) * 1994-04-22 1996-04-10 Kabushiki Kaisya Advance Data protection system
CN1121754A (zh) * 1993-05-05 1996-05-01 刘尊全 数据加密的装置和方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4168396A (en) * 1977-10-31 1979-09-18 Best Robert M Microprocessor for executing enciphered programs
EP0121853A3 (en) * 1983-04-04 1988-01-13 BURROUGHS CORPORATION (a Delaware corporation) Data processing system having public encryption and private decryption keys
CA1238427A (en) * 1984-12-18 1988-06-21 Jonathan Oseas Code protection using cryptography
US4924378A (en) * 1988-06-13 1990-05-08 Prime Computer, Inc. License mangagement system and license storage key
US5050212A (en) * 1990-06-20 1991-09-17 Apple Computer, Inc. Method and apparatus for verifying the integrity of a file stored separately from a computer
US5343527A (en) * 1993-10-27 1994-08-30 International Business Machines Corporation Hybrid encryption method and system for protecting reusable software components
US5724425A (en) * 1994-06-10 1998-03-03 Sun Microsystems, Inc. Method and apparatus for enhancing software security and distributing software
JPH0822390A (ja) * 1994-07-05 1996-01-23 Advance Co Ltd ソフトウエア防衛方式
EP0706275B1 (en) * 1994-09-15 2006-01-25 International Business Machines Corporation System and method for secure storage and distribution of data using digital signatures

Patent Citations (5)

* 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
CN1043594A (zh) * 1988-11-30 1990-07-04 莫托罗拉公司 数据加密密钥故障监视器
CN1121754A (zh) * 1993-05-05 1996-05-01 刘尊全 数据加密的装置和方法
EP0706118A1 (en) * 1994-04-22 1996-04-10 Kabushiki Kaisya Advance Data protection system
WO1996005673A1 (en) * 1994-08-11 1996-02-22 Trusted Information Systems, Inc. System and method for key escrow and data escrow encryption

Also Published As

Publication number Publication date
KR19980081644A (ko) 1998-11-25
CN1208193A (zh) 1999-02-17
EP0875814A3 (en) 2004-05-26
DE69837303T2 (de) 2007-11-29
JPH10301773A (ja) 1998-11-13
EP0875814A2 (en) 1998-11-04
TW405096B (en) 2000-09-11
US6647495B1 (en) 2003-11-11
EP0875814B1 (en) 2007-03-14
DE69837303D1 (de) 2007-04-26

Similar Documents

Publication Publication Date Title
CN1130627C (zh) 一种以Java虚拟机实现的信息处理设备
CN1097771C (zh) 执行可校验程序的系统和方法
CN1183442C (zh) 内容管理方法及内容管理装置
CN1132373C (zh) 复制控制方法及复制控制装置
CN1873652A (zh) 保护数字内容的装置和方法,处理受保护的数字内容的装置和方法
CN1122213C (zh) 给对象签名和签章的方法和设备
CN1525373A (zh) 结合颁发内容的数字版权管理(drm)许可证审查高速缓存的用户组信息
CN1531253A (zh) 在drm结构中登记/子登记数字权利管理(drm)服务器
CN1764883A (zh) 数据保护管理装置和数据保护管理方法
CN1467642A (zh) 数据保护程序及数据保护方法
CN1521980A (zh) 按照数据权限管理(drm)系统在一个定义域诸如—组织内发行数字内容
CN1470972A (zh) 用于提供安全服务器密钥操作的系统和方法
CN101044490A (zh) 将光盘用作智能密钥装置的方法和系统
CN1914603A (zh) 访问认证方法、访问认证程序、信息处理单元以及记录介质
CN1829950A (zh) 用于判断信息的使用许可的方法以及使用该方法的内容分发系统
CN1502186A (zh) 在计算机网络中有控制地分发应用程序代码和内容数据
CN1783019A (zh) 用于创建web服务并与其交互的接口基础结构
CN1207530A (zh) 保护软件的计算机系统及一种保护软件的方法
CN1383644A (zh) 信息处理系统、信息处理方法以及信息记录介质和程序提供介质
CN101034424A (zh) 一种数据安全存储系统和装置及方法
CN1610917A (zh) 许可管理装置、许可管理方法和计算机程序
CN1788263A (zh) 登录系统和方法
CN1802813A (zh) 用于接收许可的用户终端
CN1411642A (zh) 信息处理装置及信息处理方法和程序记忆媒体
CN1298512A (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
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