首页> 中国专利> 软件的正当性确认方法及执行软件的装置

软件的正当性确认方法及执行软件的装置

摘要

本发明提供软件的正当性确认方法及执行软件的装置。在软件中包含用来确认该软件的正当性的正当性确认模块。提取该正当性确认模块,利用提取的正当性确认模块进行正当性的确认。于是,利用该确认结果,判断该软件的正当性。

著录项

  • 公开/公告号CN1677307A

    专利类型发明专利

  • 公开/公告日2005-10-05

    原文格式PDF

  • 申请/专利权人 佳能株式会社;

    申请/专利号CN200510062901.4

  • 发明设计人 牛久丰彦;

    申请日2005-03-30

  • 分类号G06F1/00;

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人吴丽丽

  • 地址 日本东京

  • 入库时间 2023-12-17 16:33:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-03-11

    未缴年费专利权终止 IPC(主分类):G06F 1/00 专利号:ZL2005100629014 申请日:20050330 授权公告日:20070620

    专利权的终止

  • 2007-06-20

    授权

    授权

  • 2005-11-30

    实质审查的生效

    实质审查的生效

  • 2005-10-05

    公开

    公开

说明书

技术领域

本发明涉及软件的正当性确认方法及执行软件的装置。

背景技术

以往,在预先将程序编入ROM(Read Only Memory:只读存储器)等之中而构成的被称为编入装置的电子装置中,在改变出厂时安装的程序的情况下,必须更换ROM等来改变硬件。然而,近年来,即使是这种编入装置,也可以像通用计算机那样构成电子器件,以使在出厂后对程序等软件进行安装或置换以便使用的例子正在增加。

因此,可以认为,在软件中,特别是在程序安装中,证明所安装的程序是正当程序,在将该程序安装到电子装置中之后执行时不会使该电子装置受到不良影响这一点是很重要的。

在因特网领域中,用来证明经因特网安装的程序是正当程序的方法有数种。下面对其中之一的Java(注册商标)的代码签名方法予以说明(所谓Java(注册商标),是SUN Microsystems开发的编程语言,是SUN Microsystems的注册商标)。

Java(注册商标)程序大多是以称为Jar文件的文件形式进行分发的。在Java(注册商标)中,在此Jar文件上签名。此处所说的所谓签名是数字签名,数字签名是根据在Jar文件中存放的内容数据和实体(公司或个人等等)持有的非公开密钥计算出的位串,内容数据不同时,数字签名的位串也不同。

Java(注册商标)程序的开发者,为了证明签名是真实的,必须具有与非公开密钥成对的公开密钥和为证明该公开密钥由权威认证机构发行的证书。为了得到此证书,开发者要向认证机构提供用来确定开发者本身的个人信息等等。

通过在Jar文件上实现这种签名,可以识别所安装的Java(注册商标)程序是可以信赖的代码,并且,可由签名者改变赋予程序的权限。

另外,许可执行所安装的程序的方法,在US P5812980及特开平2-31227号公报及特开平10-187433号公报等中有记述。任何一种方法的构成都是当安装的程序及电子装置持有的特定信息及从外部给予的执行许可用的关键词等受到在电子装置中从最初就存在的程序(进行安装的安装程序等)或所安装的程序本身的确认,当其为正当时,才许可执行所安装的程序。

另外,在US P5802275及特开2000-322254号公报中还记述了在所安装的程序本身经过加密,并在安装之际在使用电子装置可使用的译码用的密钥进行译码之后进行安装的方法。

然而,作为在将程序安装到电子装置中之际作为用来证明该程序是正当程序的方法,在使用上述以往的代码签名方法的情况下,是可以确定进行了代码签名的签名者(程序开发者)的,但不能证明该签名者对于安装程序的电子装置来说是否可以信赖。所以,就存在在程序安装时,即使是不进行该程序的开发者对于上述电子装置是否是可以信赖的确认,通过只进行签名就信赖该开发者而必须进行安装的问题。

此外,这就存在为了查清签名的可靠性,就必须访问因特网上存在的认证机构判明签名附带的证书是真实的,而在不能联网的状态下,即在离线时没有调查签名是否真实的办法的问题。

另外存在,在上述US P5812980等之中公开的以往的程序执行许可机构中,在许可中使用的数据(上述特定的信息及上述关键词单等等)被固定,比如,即使是打算使用更强的密码算法也不能使用等等缺乏灵活性的问题。

此外,如上述的US P5802275等之中所公开的,还存在在装载加密的程序时经过译码进行安装的方法中,由于会立即将包含不需要的程序模块的全部程序在安装时进行译码,而译码需要花费时间,会使安装时间增加的问题。

发明内容

本发明的目的是简单灵活地保证程序的可靠性。

另外,本发明的另一目的是由电子装置的制造厂对安装于电子装置中的软件是对电子装置正常生成的这一点进行认证。

本发明的另一目的是提供一种从软件中提取用于确认该软件的正当性的正当性确认模块;判断由上述提取步骤提取的正当性确认模块的确认结果的软件的正当性确认方法。

本发明是一种具有存储软件的存储单元,以及执行存储于上述存储单元中的软件的执行单元;其中,上述执行单元,从存储于上述存储单元中的软件中,提取用于确认该软件的正当性的正当性确认模块;并判断所提取的正当性确认模块的确认结果的装置。

另外,本发明的其他目的可由以下的实施例说明得到了解。

附图说明

图1为示出实施方式的信息处理系统的主要部分的结构框图。

图2为示出在实施方式中使用的档案文件(ArchiveFile)的结构的示图。

图3为示出实施方式1的处理的流程图。

图4为示出实施方式2的处理的流程图。

具体实施方式

[实施方式1]

图1为示出具有执行本发明的软件的装置的一个例子的电子装置的信息处理系统的主要部分的结构框图。

在同图中,此信息处理系统是由执行所安装的程序的电子装置1010与连接到电子装置1010并指示程序安装的个人计算机(PC)1020经过网络1040相连接而构成的。

在PC1020内,存放应该安装到电子装置1010中的程序文件1030。另外,在电子装置1010内,用于控制电子装置1010的控制部1050、存放由控制部1050所执行的程序的程序存储部1060及经网络1040与外部进行通信的通信部1070经由总线1080相连接。在控制部1050中用于解释执行Java(注册商标)程序的Java(注册商标)虚拟机进行(以下称其为JVM)工作,可执行Java(注册商标)程序。控制部1050是从程序存储部1060中读出存储于程序存储部1060中的程序并进行处理的计算机。电子装置1010一个例子是具有打印机功能和扫描仪功能的装置,但本发明并不限定于这种装置。

程序安装以如下方式进行。即,PC1020经由通信部1070与控制部1050进行通信,将存在于PC1020中的程序文件1030发送到电子装置1010。于是,接受程序文件1030的数据(程序)的控制部1050,将该数据(程序)作为具有下面说明的在图2中所示的格式结构的程序文件存放于程序存储部1060。另外,此处说明的是经网络1040来安装程序的示例,但本发明并不限定于经过这种网络来安装程序的系统,也可以应用从CD-ROM或DVD-ROM等存储媒体来安装程序的系统。

图2为示出在对图1所示的电子装置1010安装程序之际所使用的档案文件(ArchiveFile)的格式的示图。

在同图中,2010是档案文件(ArchiveFile),文件元素(FileElement)1,2,...,N-2,N-1,N具有线性排列的形式。2020表示各文件元素1~N的内容。各文件元素1~N分别由表示文件元素的开始的文件元素识别信息(File Element Signature)21、表示数据区的长度的数据长度信息(Data Length)22、表示文件名的长度的文件名长度信息(File Name Length)23、存放文件名的文件名字段(File Name)24及存放文件数据的数据字段(Data)25构成。

另外,图中的2030表示程序存放于数据字段中时的上述数据字段25的结构(内容)。此数据字段2030由存放在程序为明文时算出的消息摘要值的消息摘要值字段31和存放被加密的程序的程序字段32组成。另外,在本实施方式中,对加密程序的方式进行说明,但本发明,并不限定于这样的加密程序的方式,也可以不经过加密。

在作为档案文件(ArchiveFile)2010的文件元素存放Java(注册商标)类的情况下,作为此档案文件(ArchiveFile)2010的文件名使用将Java(注册商标)类的全名映射为文件名的名字。比如,在存在“com.xyz.aaa.bbb.Class1”的类时,作为文件名使用“com/xyz/aaa/bbb/Class1.class”这样的文件名。此文件名中的“/”表示是目录,“.class”表示Java(注册商标)程序是经过编译的程序的后缀。

图3为示出实施方式1的处理的流程图,具体言之,表示在电子装置1010中,在程序开始执行之际进行的处理。此流程图示出从PC1020向程序存储部1060安装的程序的一部分。作为计算机的控制部1050,从程序存储部1060读出此程序进行处理。程序存储部1060是让控制部1050可以读出程序的那样地存储的存储媒体。

用来保证软件的正当性的程序,由称为“com.xyz.check.Checklet”的Java(注册商标)类来实现。另一方面,软件的各种属性存放于称为声明清单(manifest)的特别的条目(Entry)中。在此声明清单中将表示是什么属性的属性名和表示其值的属性值的一对作为字符串存放。

首先,在步骤S3010中,调查是否存在检验程序(CheckProgram)的程序模块。即,以“com.xyz.check.Checklet”的文件名作为“com/xyz/check/Cheklet.Class”。于是,从档案文件(ArchiveFile)2010每次一个地取出文件元素2020,通过调查所取出的文件元素2020是否是持有上述文件名的文件元素2020来调查检验程序(CheckProgram)的存在。此检验程序(CheckProgram)是用于从存放于档案文件(ArchiveFile)2010中的软件中确认该软件的正当性的正当性确认模块。

在存在检验程序(CheckProgram)时,就进入到步骤S3020。在不存在时,就进入到步骤S3080。

在步骤S3020中,进行检验程序(CheckProgram)的译码。即,在步骤S3010中通过探索将发现的检验程序(CheckProgram)利用控制部1050保管的密钥进行译码,进入到步骤3030。另外,此示例是将检验程序(CheckProgram)进行加密并存放于程序字段32中的示例。译码的密钥,由系统库中存在的类(以下称其为密钥管理类)对访问进行管理。密钥管理类存在于“com.xyz.check”包中,用来访问密钥的方法(Method),利用只能从同一包内的类进行访问的方法(Method)取得,此方法(Method)不公开。

在步骤S3030中,在检验程序(CheckProgram)译码之后,计算消息摘要(MessageDigest)值。于是,将此计算值与作为检验程序(CheckProgram)的消息摘要(MessageDigest)存储于档案文件(ArchiveFile)中的消息摘要(MessageDigest)值字段2030的值进行比较。在计算的消息摘要(MessageDigest)值与存储于档案文件(ArchiveFile)中的消息摘要(MessageDigest)不同时,就可以认为对检验程序(CheckProgram)进行了篡改,于是进入步骤S3080。如果不是这样的情况就进入到步骤S3040。另外,在程序未加密的场合,不执行步骤S3020及步骤S3030,在步骤S3010中判断存在检验程序(CheckProgram)时,进入到步骤S3080。

在步骤S3040中,进行检验程序(CheckProgram)的装载/实例(Instantiate)化。即,将在步骤S3020中经译码的检验程序(CheckProgram)的类进行装载以便可由JVM执行。在装载之后,生成装载的类的实例(Instantiate),进入到步骤S3050。

在步骤S3050中,执行检验程序(CheckProgram)。具体地说,针对在步骤S3040中生成的实例,调用用来调查检验程序(CheckProgram)是否正当的正当性确认方法(Method)。将规定的字符串(比如,用来确定要动作的电子装置1010的型号的信息型号识别信息和用于电子装置的个体识别的序列号)作为变元转交给此正当性确认方法(Method)。

在正当性确认方法(Method)中,由作为变元转交的型号识别信息和系列号,可以判断是否可以由依照在声明清单(manifest)内记述的适合机种信息所指定的电子装置来执行程序。

此处所谓的适合机种信息,比如,是以下所示的信息。

conform_ models=ModelA(1000-),ModelB,ModelC(-5000)

就是说,适合机种信息是由可执行程序的型号识别信息的列表组成,在一部分型号中可以指定确定的序列号的范围。在上述的示例中,示出的是以“ModelA”型号的序列号大于等于1000号、“ModelB”型号及“ModelC”型号的序列号5000小于等于的机种为对象。正当性确认方法(Method),检查转交的字符串并将其结果返回。比如,如果可以执行时,将加密的电子装置的制造厂的数字签名返回。如果不能执行时,就返回null值。另外,用于确认此正当性的信息,并不限定于型号识别信息和序列号。也可以是型号识别信息和序列号中的一个,并且,也可以是预先规定的字符串。在预先规定的字符串的情况下,正当性确认方法(Method)判断转交的字符串和预先规定的字符串是否一致,并返回一致或不一致的判断结果。

在接着的步骤S3060中,进行上述检验程序(CheckProgram)的执行结果的确认。即,调查在步骤S3050中调用的正当性确认方法(Method)的执行结果,是否是执行环境所寻求的期待值。在本实施方式中,作为期待值使用电子装置的制造厂的公司所有的数字签名的加密签名。

所以,在将上述检验程序(CheckProgram)的执行结果利用控制部1050保管的密钥进行译码的结果与制造厂的数字签名一致时,认识到安装的是正常的程序,进入到步骤S3070。在不一致的场合,就看成所安装的是不正常的程序而进入到步骤S3080。另外,执行环境所寻求的期待值,并不限定于加密值。在未加密的情况下,在步骤S3060中,不进行译码。另外,执行环境所寻求的期待值,并不限定于数字签名,也可以是其他的值。

在步骤S3070中,从安装的软件的入口(EntryPoint)开始执行。入口(EntryPoint),在声明清单(manifest)中记述为属性,解释为属性值表示类,生成这一类的实例,通过调用其start方法(Method)而使软件启动。

在步骤S3080中,输出出错消息(errorMessage)。即,因为要启动的程序是非正常的程序,将表示程序启动失败的出错消息(errorMessage)作为在程序存储部1060存储的日志文件中的日志(LogFile)进行输出而不执行程序。

通过以上的处理流程,可以确认启动的软件的正当性。

按照本实施方式,在执行安装的程序时,从程序中提取用于确认程序的正当性的正当性确认模块,执行正当性确认模块,判断该执行结果是否为正常,只有在确认所安装的程序是正当的程序时,进行程序启动。由此,在将程序安装到电子装置之际,即使是不进行访问网络上的认证机构等等也可以很容易证明该程序的开发者是该电子装置的开发公司认定的开发者。就是说,由电子装置的制造厂认证所安装的程序是对电子装置正常生成的程序,可以简单灵活地实现安全的程序安装。另外,由于可以调查所安装的程序是否经过篡改,所以可以确保安装后的程序的正当性。

另外,在本实施方式中,通过对软件的存放文件的消息摘要(MessageDigest)值进行计算并将此消息摘要(MessageDigest)值与预先生成文件时经计算存放在文件中的值进行比较,可以确认软件未经过篡改。按照这种方法,存放于文件中的消息摘要(MessageDigest)值,只有利用控制部1050保管的用于译码的密钥才可能进行译码,可以使系统更加牢靠。

[实施方式2]

下面对实施方式2予以说明。

本实施方式的系统结构及档案文件(ArchiveFile)的结构分别如图1及图2所示,与实施方式1完全相同。

图4为示出实施方式2的处理的流程图,具体言之,表示在电子装置1010中,在程序执行开始之际进行的处理。在此处理中,从步骤S3010到步骤S3040及步骤S3080与图3所示的实施方式1相同。

下面只对不同的处理(步骤S3050A、步骤3060A及步骤3070A)进行说明。

在本实施方式的步骤S3050A中,对于由步骤S3040生成的实例,调用作为用来调查检验程序(CheckProgram)是否是正当程序的方法(Method)的正当性确认方法(Method)。将成为软件的入口(EntryPoint)的类的名称作为变元转交给此方法(Method)。入口(EntryPoint)在声明清单(manifest)中记述为属性,可通过解释属性值表示类而得到。

在正当性确认方法(Method)中,从档案文件(ArchiveFile)2010装载指定的类的数据。装载的类的数据借助于可以使用控制部1050保管的用于译码的钥进行译码的密钥来加密。因此,此类数据(ClassData)使用用于上述译码的密钥进行译码。其结果,生成类对象(ClassObject)。类对象(ClassObject)可正常生成时,将其类对象(ClassObject)作为方法(Method)返回值返回。不然的话,就返回null值。

条目类(EntryClass)的数据,指定或篡改使用不能以控制部1050保管的译码用的钥来译码的密钥进行加密的部分的情况下,或者译码失败或者作为非正当类数据(ClassData)进行译码。其结果,在生成类对象(ClassObject)时,或在执行从类对象(ClassObject)生成的实例对象(InstanceObject)时,会发生出错,因此,可以检测到使用非正当的密钥及对条目类(EntryClass)数据的篡改。

在本实施方式的步骤S3060A中,确认在步骤S3050A中调用的正当性确认方法(Method)的执行结果不是null值。在不是null值时,就进入到步骤S3070A。在是null值时,视为安装了非正当的程序,进入到步骤3080。

在本实施方式的步骤S3070A中,根据在步骤S3050A中从正当性确认方法(Method)返回的入口类(EntryPointClass)的类对象(ClassObject)生成实例对象(InstanceObject)。于是,通过调用生成的实例对象(InstanceObject)的start方法而使软件启动。

采用如本实施方式的结构,也可以得到与上述实施方式1同样的效果。

在本实施方式中,只对入口类(EntryPointClass)利用正当性确认消息进行译码,但也可以在制造时将作为档案文件(ArchiveFile)的条目(Entry)的全部类数据(ClassData)逐条目(Entry)地进行加密并存放于软件的档案文件(ArchiveFile),每当产生对类进行装载需要时,就调用正当性确认方法(Method)进行装载/译码/类对象(ClassObject)的生成。

另外,也可以采用如下的结构,在将全部类数据(ClassData)的消息摘要(MessageDigest)与类数据(ClassData)一起加密存放,对类进行装载之际,从类数据(ClassData)计算消息摘要(MessageDigest),将该计算值与利用控制部1050保管的用于译码的钥对文件中存储的被加密的消息摘要值进行译码的值进行比较,可以调查出类数据(ClassData)是否未受到篡改。

另外,通过把依照上述图3及图4的流程图存放于电子装置1010内的程序存储部1060中进行工作,可以实现上述的控制方法。

以上,是根据本发明的优选实施例进行的说明,但本发明并不限定于此,在权利要求范围内可以有种种变型。比如,本发明,并不限定于上述实施方式的装置,既可应用于由多个电子装置构成的系统,也可以应用于由一个电子装置构成的装置。也可以将存储实现上述实施方式的功能的软件的程序代码的存储媒体供给系统或装置,由该系统或装置的计算机(或CPU及MPU)读出存放于存储媒体中的程序代码来执行而完成。

在此场合,由于从存储媒体读出的程序代码本身实现上述实施方式的功能,存储该程序代码的存储媒体构成本发明。作为用来供给程序代码的存储媒体,可以使用,比如,有软盘(注册商标)、硬盘、光盘、磁光盘、CD-ROM、CD-R、磁带、非易失性存储卡、ROM等。另外,通过执行计算机读出的程序代码,不仅可实现上述实施方式的功能,而且可以基于该程序代码的指示,由运行于计算机上的OS(操作系统)等执行实际处理的一部分或全部,通过这种处理实现上述的实施方式的功能的场合也包含在内。

进而,从记录媒体读出的程序代码,在写入到插入到计算机中的功能扩展板及与计算机相连接的功能扩展单元中设置的存储器之后,基于下一个程序代码的指示,由设置于该功能扩展板及功能扩展单元中的CPU等进行实际的处理的一部分或全部,藉助该处理也可实现上述的实施方式的功能的情况也包含在内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号