信息处理装置、安全模块、信息处理方法和计算机产品的制作方法

文档序号:6368210阅读:123来源:国知局
专利名称:信息处理装置、安全模块、信息处理方法和计算机产品的制作方法
技术领域
这里讨论的实施例涉及信息处理装置、安全模块、信息处理方法和计算机产品。
背景技术
传统上,移动终端(以下称为“终端”)并不采取第三方软件开发,因此终端规范和软件配置不是公开知晓的,从而保证了终端内部工作的保密性和相当大的安全性。另外,作为用于认证的策略,确保安全性的安全模块(防篡改模块,例如,订户身份模块卡(SIM))保证了必须保密的信息(例如,加密密钥,用户识别信息)的安全(例如,参见日本早期公开专利公开No. 2004-129227和日本专利No. 4408601)。换言之,必须保密的信息仅可被终端的真正的内部软件使用。因此,基于是否已经利用确保安全的真正的加密密钥加密了从终端所接收的通信内容、所接收的信息是否包括确保安全的用户识别信息等,外部装置可以判定通信内容是否是真实的,从而确保安全。 但是,如通过智能电话可看出的,近年来,伴随着第三方软件开发的进步,已经存在公开终端规范和软件配置的转变。结果,内部终端软件被黑客读取、分析和篡改从而导致恶意软件的开发的可能性增加了。另外,通过安全模块,虽然第三方不能查看或篡改这种信息,但是公开了用于经由软件来使用设备的接口。结果,必须保密的信息可被恶意软件从安全模块中容易地读出。因此,在利用真正的加密密钥加密欺骗性的通信内容或将用户信息包括在欺骗性的通信内容中之后,恶意软件可将欺骗性的通信内容发送到外部装置。因此,外部装置不能判定通信内容是否是欺骗性的,从而导致不能确保通信的真实性的问题。

发明内容
实施例的一个方面的目的在于至少解决传统技术中的以上问题。根据实施例的一个方面,信息处理装置安全地存储包括一个或多个程序的程序群组。该信息处理装置包括第一检测器,该第一检测器检测程序群组中的给定程序的执行等待状态;安全模块,该安全模块被配置为使得存储在该安全模块中的信息不能被外部设备查阅,并且当第一检测器检测到执行等待状态时,该安全模块对给定程序进行加密,并且将已加密的给定程序写入到不同于程序群组的存储区域的存储区域中;第二检测器,该第二检测器检测关于给定程序的执行请求;解密器,当第二检测器检测到关于给定程序的执行请求时,该解密器对由安全模块加密的给定程序进行解密,并且将已解密的给定程序写入到存储区域;以及程序执行器,该程序执行器执行由解密器解密的给定程序。


图IA和图IB是描绘由信息处理装置进行的程序篡改防止的示图;图2是根据实施例的信息处理装置101的第一硬件配置示例的框图;图3是在图2中所描绘的安全模块102的硬件配置示例的框图4是根据实施例的信息处理装置101的第二硬件配置示例的框图;图5是在图4中所描绘的安全模块102的硬件配置示例的框图;图6是信息处理装置101的功能配置的第一示例的框图;图7是信息处理装置101的功能配置的第二示例的框图;图8是信息处理装置101的操作示例的示意图;图9是子例程SR的修改概况的示图;图10、图11、图12和图13是描绘由修改程序PP所进行的对子例程SR的修改的示例的示意图;图14是子例程SR修改处理的示例的流程图; 图15是图14中所描绘的混排处理(shuffling process)的流程图;图16A、图16B和图16C是子例程SR的修改示例的示意图;图17是加扰处理(scrambling process)的流程图;图18是图8中所描绘的已加密的子例程S-SR的第一示例的示意图;图19是图8中所描绘的已加密的子例程S-SR的第二示例的示意图;图20是解扰处理的流程图;图21是执行解扰处理的程序的示例的示意图;图22是描绘对子例程SR的认证概况的示意图;图23是由安全模块102执行的认证处理的流程图;以及图24是由安全模块102执行的加密授权处理的流程图。
具体实施例方式将参照附图来说明本发明的优选实施例。为了使得未加密的程序驻留于安全没有保证的存储器中的时间尽可能短,在本实施例中,信息处理装置对将要被写入到安全没有保证的存储器中的程序进行加密,并且在安全有保证的安全模块处对程序加密之后,将程序写入到存储器。结果,由于在执行之前,存储器中的程序处于加密状态,因此确保了存储器中的程序的安全,从而可以防止黑客对程序的分析和篡改。另外,仅当程序将要被执行时信息处理装置才对写入到存储器的加密程序进行解密,并且当程序的执行已经被完成时,信息处理装置删除程序。结果,信息处理装置减少了未加密状态的程序驻留于存储器中的时间,从而防止了黑客对程序的分析和篡改。图IA和图IB是描绘由信息处理装置所进行的程序篡改防止的示意图。如图IA和图IB中所示,信息处理装置101具有安全模块102、主存储器103和硬盘驱动(HDD) 104。HDD 104是存储由信息处理装置101所执行的程序的存储设备。在图I中所描绘的示例中,HDD 104在其中保存通过具有高加密强度的加密方法对子例程(SR)(例如,图IA和图IB中的SRl和SR2)进行加密之后所获得的已加密的子例程C-SR。例如,具有高加密强度的加密方法是遵从诸如高级加密标准(AES)和用于签名、完整性和加密的新欧洲机制(NESSIE)之类的加密标准的标准化的加密方法。主存储器103是当信息处理装置101执行程序时充当工作区域的存储设备。在图IA和图IB中所描绘的示例中,调用并执行子例程SR的主程序MP被写入到主存储器103。但是,主存储器103是这样一种存储设备,其中(甚至黑客105都)可从中读出数据并且真实性没有保证。安全模块102是诸如抗篡改模块(TRM)之类的大规模集成(LSI),其具有使得存储在其中的信息不能被外部设备查阅的配置。因此,安全模块102防止了第三方查看并篡改内部数据。安全模块102具有加密电路。加密电路可通过被用来加密HDD 104中的已加密的子例程C-SR的高加密强度的加密方法来执行解密。另外,加密电路可通过执行高速加密和解密的加密方法来执行加密和解密。例如,执行高速加密和解密的加密方法是通过对已加密的数据和加密密钥数据的异或(XOR)来加密(加扰)的方法(以下,称为“X0R加密”)。此处,将描述以下示例当主程序MP被启动时,信息处理装置101防止黑客105对子例程SR的分析和篡改,并且执行由主程序MP调用的子例程SR。例如,如图IA所描绘的,信息处理装置101将由主程序MP所调用的子例程SR写入到被用作工作区域的主存储器103中。此处,由于对于主存储器103来说不能确保真实性,因此,如果子例程SR被以未加密的状态写入其中,则子例程SR处于被黑客105分析的 危险之中。(I)因此,信息处理装置101将处于加密状态中的子例程SR写入到主存储器103中,并且当子例程SR被执行时,解密子例程SR。由于执行了对子例程SR的高速解密,因此确保了真实性的安全模块102解密已加密的子例程C-SR,通过XOR加密对已解密的子例程SR进行加扰,并且将已加密的子例程S-SR写入到主存储器103中。如在图IA中所描绘的,写入到主存储器103中的子例程SR处于加密状态中(已加密的子例程S-SR),从而能够防止被黑客105分析。另外,由于对子例程SR的加密和解密在确保了真实性的安全模块102处被执行,因此黑客105不能查看处于解密状态中的子例程SR。类似地,黑客105不能查看在子例程SR上所使用的加密方法,也不能查看加密密钥。此处,假定如下情形已经启动主程序MP,并且主程序MP已经发出了执行子例程SRl的请求。如在图IB中所示,基于针对子例程SRl的执行请求,(2)确保了真实性的安全模块102将已加密的子例程S-SRl解密为子例程SRl。(3)信息处理装置101执行已解扰的子例程SR1。⑷当完成对子例程SRl的执行时,信息处理装置101删除子例程SR1。另外,针对子例程SR2的执行请求,信息处理装置101类似地执行(2)至(4),即执行并删除子例程SR2。如在图IB中所描绘的,被解密以供执行的子例程SR驻留于主存储器103中的时间仅为从子例程SR的执行开始时的解密到子例程SR的执行结束时的删除为止的时间。因此,黑客105可分析子例程SR的时间仅为从子例程SR的解密到删除的短暂时段,结果黑客105不能分析子例程SR。通过这种方式,信息处理装置101防止了黑客105对子例程SR的篡改和分析,从而可防止恶意软件的开发。另外,对XOR加密的使用使得信息处理装置101能够被配置为,即便直到执行前子例程SR都处于加密状态中,对主程序MP的执行也不会被对子例程SR的解密所延迟。另外,在XOR加密中,由于加密和解密由相同的处理实现,因此,当采用XOR力口密时,可更加负担得起地简化并产生安全模块102。
另外,对于处于安全模块10中并且必须保密的信息(加密密钥和用户识别信息),可消除这种信息在恶意软件中的使用以及由恶意软件导致的信息处理装置101的用户所引发的破坏。例如,在诸如用于在线购买的软件被分析并篡改以重写用户输入的购买订单信息的情形中,可防止恶意软件的开发。另外,可消除由恶意软件使用加密密钥或安全模块102中的用户识别信息来发送假的购买订单信息所引发的破坏。将描述信息处理装置101的硬件配置。如图I中所描绘的,虽然信息处理装置101具有安全模块102,但是可由一个芯片或多个芯片来创建安全模块102。参照图2和图3,将描述其中安全模块102由一个芯片配置而成的信息处理装置101的硬件配置。图2是根据实施例的信息处理装置101的第一硬件配置示例的框图。如在图2中所描绘的,信息处理装置101包括处理器201、只读存储器(ROM) 202、安全模块102、主存储器103和HDD 104。另外,信息处理装置101包括接口(I/F)203和显示器204。信息处理装置101的组件分别通过总线200相连接。处理器201管理对信息处理装置101的总体控制。ROM 202在其中存储诸如引导 程序之类的程序。主存储器103被用作处理器201的工作区域。HDD 104是在处理器201控制下的驱动装置,其控制针对内部硬盘的数据读取和写入。I/F 203经由通信线路被连接至诸如局域网(LAN)、广域网(WAN)和因特网之类的网络210,并且通过网络210被进一步连接至其他装置。I/F 203执行与网络210的内部接口,并且控制来自和去往外部装置的输入和输出。调制解调器、LAN适配器等可被用为I/F203。例如,除了光标、图标和/或工具箱以外,显示器204还显示诸如文本、图像、功能信息等之类的数据。阴极射线管(CRT)、薄膜晶体管(TFT)液晶显示器、等离子显示器等可作为显示器204被采用。安全模块102具有从HDD 104读取已加密的子例程C-SR的功能。另外,安全模块102具有将子例程SR写入到主存储器103的功能、加密功能、解密功能、随机数生成功能等。安全模块102安全地在其中保存解密已加密的子例程C-SR的加密密钥和用于XOR加密的加密密钥。但是,可以是如下配置安全模块102仅保存加密密钥,并且加密功能、随机数生成功能、解密功能等被包括在信息处理装置101中。在这种情形中,安全模块102可以利用随机数生成功能来生成加密密钥,并且根据来自信息处理装置101的请求来输出加密密钥。安全模块102可被内置于信息处理装置101中或被独立设置。图3是图2中所描绘的安全模块102的硬件配置示例的框图。安全模块102包括处理器301、I/F 302、加密电路303、RAM 304,ROM 305、闪存306和随机数生成电路307,它们分别通过总线300相连接。处理器301执行对安全模块102和计算处理的内部控制。I/F 302经由总线200被连接至信息处理装置101的内部组件,并且执行通信。加密电路303加密数据和程序,并且解密已加密的数据和程序。如果加密和解密由软件执行,则对应于加密电路303的功能的程序被存储到ROM 305中,从而消除了对加密电路303的需求。RAM 304是被用作处理器301的工作区域的主存储器。ROM 305是在其中存储了程序和数据的非易失性存储器。ROM 305在其中存储了解密已加密的子例程C-SR的加密密钥和用于XOR加密的加密密钥。闪存306是非易失性存储器,已存储的数据和程序可被重写到该闪存306。随机数生成电路307可生成诸如,用于XOR加密的加密密钥之类的随机数。由于假定有第三方嗅探和篡改,安全模块102被尽可能地作为图3中所描绘的配置的单芯片LSI而被安装。例如,安全模块102具有TRM配置。TRM配置是物理地并逻辑地防御对半导体芯片(在该情形中,为安全模块102)的内部分析和篡改的配置。例如,高强粘性的涂层(coating)被应用于安全模块102,并且在该表面被剥落的情况下,电路内部被完全破坏,或虚假布线(du_y wiring)可被布置在安全模块102中,等等。参照图4和图5,将描述信息处理装置101的硬件配置,其中,安全模块102由多个芯片配置而成。图4是根据实施例的信息处理装置101的第二硬件配置示例的框图。如在图4中所描绘的,信息处理装置101包括处理器201、ROM 202、主存储器103、HDD 104、I/F 203、 显示器204和安全模块102。在图4中,相当于图2中所描绘的组件的组件被赋予了图2中所使用的相同的参考标号,并且它们的描述被省去。如在图4中所描绘的,安全模块102被形成为邻接具有加密功能、解密功能、随机数生成功能等的LSI 401,并且邻接现有的SM卡402,该SM卡402安全地在其中保存了解密已加密的子例程C-SR的加密密钥。必要时,LSI 401从SM卡402读出加密密钥,并且使用加密功能和解密功能。图5是在图4中所描绘的安全模块102的硬件配置示例的框图。如在图5中所描绘的,安全模块102包括LSI 401和SM卡402。LSI 401包括处理器301、I/F 302、加密电路303、RAM 304,ROM 305、闪存306和随机数生成电路307。SM卡402在其中安全地保存加密密钥。在安全模块102内部,LSI 401和SM卡402通过I/F 308相连接,并且执行通信。在图5中,与在图3中所描绘的组件相同的组件被赋予图3中所使用的相同的参考标号,并且它们的描述被省去。由于假定有第三方嗅探和篡改,因此,当如图5中所示安全模块102由多个芯片实现时,所有芯片被看作是单个模块,并且必须用树脂固定并被安装,以使得第三方嗅探和篡改是困难的。将描述信息处理装置101的功能配置的第一示例。图6是信息处理装置101的功能配置的第一示例的框图。信息处理装置101包括第一检测器601、加密器602、第二检测器603、解密器604、程序执行器605、插入器606、判定器607、输出设备608、禁用器609、程序删除器610、存储设备611、修改器612和发射器613。形成控制器的这些功能(第一检测器601至程序删除器610)例如是通过在处理器201上执行或经由I/F 203在处理器201上执行存储在存储设备(诸如,图2中所描绘的ROM 202、主存储器103和HDD 104)中的程序来实现。替换地,形成控制器的这些功能(第一检测器601至程序删除器610)例如是通过在处理器301上执行或经由I/F 302在处理器301上执行存储在存储设备(诸如,图3中所描绘的ROM 305、RAM 304和闪存30)中的程序来实现。第一检测器601具有检测程序群组中的程序的执行等待状态的功能。此处,该程序是由另一程序调用的程序,例如,由操作系统(OS)调用的主程序MP、或由主程序MP调用的子例程SR。执行等待状态是当给定程序启动时等待被给定程序调用的状态。例如,第一检测器601检测到子例程SR已经进入等待被已经启动的主程序MP调用的状态。因此,可检测到触发,例如,写入到主存储器103(工作区域)的触发器、被另一程序调用的程序。当第一检测器601检测到执行等待状态时,加密器602被包括在安全模块102中,并且具有对程序进行加密并将程序写入到不同于程序群组的存储区域的存储区域中的功能。此处,不同于程序群组的存储区域的存储区域是程序工作区域,诸如主存储器103。例如,加密器602对子例程SR进行加密,并且将已加密的子例程SR写入到主存储器103。因此,通过加密写入到主存储器103的程序安全性被确保,即便主存储器103可被任何人查阅并且其安全性不能被确保也是如此。另外,由于加密在确保了真实性的安全模块102处被执行,因此加密所使用的加密方法和加密之前的程序保持保密,并且可确保程序的安全。
例如,每次执行加密时,加密器602都利用不同的加密方法。例如,不同的加密方法是每次执行加密时使用加密密钥的不同数据。此处,例如,不同的数据是由随机数生成电路307生成的随机数序列。但是,在该情形中,在执行加密时,存储了将进行加密的程序和加密密钥相关联的表格;并且,当执行解密时,该表格被参照,并且在解密中将使用的加密密钥被识别出来。结果,每当执行加密时,加密密钥都会改变,从而使得黑客难以对程序进行分析。例如,加密器602利用以下加密方法,该加密方法通过加密密钥数据和将要加密的程序的异或来加密。换言之,通过上述XOR加密来执行加密。该XOR加密是这样一种加密用于加密和解密的处理量和所消耗的时间很低;因此,当执行已加密的程序时,可减少用于解密已加密的程序所消耗的时间。另外,在XOR加密中,由于通过相同的处理来实现加密和解密,因此,当采用XOR加密时,可更加负担得起地简化并产生安全模块102。加密器602具有当调用程序群组的程序被启动时解密已加密的程序群组(C-SR)的功能。另外,加密器602具有通过不同于用于加密程序群组(C-SR)的第一加密方法的第二加密方法来加密已解密的程序群组并将作为结果的已加密的程序群组(S-SR)写入到存储区域的功能。此处,调用程序群组的程序例如是主程序MP。已加密的程序群组例如是保存在HDD 104中的已加密的子例程C-SR。第一加密方法是具有高加密强度的加密方法。第二加密方法是具有高加密强度并使用例如具有长数据长度的加密密钥的XOR加密方法。例如,加密器602首先通过具有高加密强度的XOR加密来对保存在HDD 104中的已加密的子例程C-SR进行加密,然后将已加密的子例程S-SR写入到主存储器103。因此,即使写入到主存储器103的程序已经很长时间未被执行,也可确保程序的安全。例如,“很长时间未被执行”意味着一种持续的状态,其中虽然主程序MP已经被启动,但是执行指令还未从信息处理装置101的用户输入。第二检测器603具有检测对于程序群组中的程序的执行请求的功能。例如,第二检测器603检测到对子例程SR的执行已经被主程序MP请求。因此,第二检测器603可检测到用于解密已加密的子例程S-SR的触发器。解密器604具有如下功能当第二检测器603检测到针对程序的执行请求时,解密由安全模块102加密的任意一个程序,并且将已解密的程序写入到存储区域。例如,解密器604独立于安全模块102,并且利用安全模块102所提供的并被安全模块102用在加密程序中的加密密钥来解密程序。由安全模块102所提供的加密密钥由以下所描述的发射器613发送。例如,解密器604利用安全模块102所提供的用于XOR加密的加密密钥,并且解密已加密的子例程S-SR。因此,解密器604能够将子例程SR置于可执行状态中,并且将子例程SR写入到主存储器103。另外,由于安全模块102维护加密密钥的保密性直到解密为止,因此,可防止黑客105对程序的分析。另外,如果安全模块102针对每次加密使用不同的加密密钥,则相同的加密密钥不被用于后续加密。结果,即使加密密钥通过被提供给信息处理装置101而变得 被黑客105知晓,黑客105也不能使用当前的加密密钥进行下一个或任意后续的已加密的子例程S-SR的解密,从而使得安全能够被确保。虽然解密器604可被集成在安全模块中,但是通过独立的安全模块102,可减少安全模块102的功能,从而使得能够更加负担得起地产生安全模块102。程序执行器605具有执行已经被解密器604解密的程序的功能。例如,程序执行器605执行子例程SR,从而使得主程序MP的处理能够被正常执行。插入器606被设置在安全模块102中,并且具有如下功能在加密之前将以下计算程序插入程序,其中该计算程序执行给定计算并且将计算结果写入到存储区域的给定区域。此处,计算程序是执行给定计算并且将计算结果存储在主存储器103中的给定区域中的程序和以下描述的认证子程序。例如,插入器606执行以下描述的修改程序,并且将认证子程序插入到子例程SR中。判定器607被设置在安全模块102中,并且具有根据由程序执行器605所执行的程序来获取由计算程序所写入的计算结果的功能。判定器607具有如下功能如果所获取的计算结果和通过在安全模块102处执行给定计算所得到的计算结果不相符,则判定程序已经被篡改。例如,判定器607获取由认证子程序写入到主存储器103的计算结果,其中认证子程序在子例程SR的执行之后被执行。接下来,在安全模块102处,与认证子程序的计算相同的计算被执行,以计算真正的计算结果,并且如果由认证子程序所写入的计算结果不是真正的计算结果,则程序被判定为已经被篡改。由所插入的认证子程序所执行的计算每次都是不同的计算,这使得由黑客105难以开发出插入了合法的认证子程序的恶意程序。输出设备608被设置在安全模块102中,并且具有如下功能当判定器607已经判定程序的篡改时,输出判定结果。例如,当已经判定篡改时,输出设备608将通知输出到显示器604,该通知向信息处理装置101的用户通知恶意程序可能被执行,从而防止了恶意程序所导致的破坏。禁用器609具有如下功能当判定器607已经判定篡改时,将解密器604设定到禁用状态。例如,当判定器607已经判定篡改时,禁用器609禁用解密器604、加密器602或所有功能。结果,禁用器609可促使安全模块102不响应来自已经检测到篡改的程序的解密请求。替换地,禁用器609可禁止恶意程序继续。
程序删除器610具有如下功能从存储区域删除已经由程序执行器605完成了对其的执行的程序。例如,程序删除器610删除被写入到主存储器103的子例程SR。结果,处于未加密状态中的程序驻留于安全性没有保证的主存储器103中的时段被减少,从而使得由黑客105进行的程序分析和篡改被防止。存储设备611具有保存已加密的程序群组的功能。例如,存储设备611是HDD 104,并且保存已加密的子例程C-SR。因此,程序被安全地保存。修改器61 2具有修改程序以使描述内容不同的功能,但是该功能是相同的程序代码。例如,修改器612通过以下描述的“模糊(obfuscation) ”、“加密”和“混排(shuffling) ”来修改子例程SR,从而使得对子例程SR的解码困难,并且使得能够防止由黑客105所进行的对子例程SR的分析和篡改。发射器613具有如下功能当针对程序的执行请求已经被检测到时,向信息处理装置发送解密已加密的程序的密钥。例如,发射器613向信息处理装置101发送用于XOR加密并被保存在RAM 304中的加密密钥。另外,当安全模块102针对每次加密利用不同的加密密钥时,发射器613参照关联并存储加密密钥和已加密的子例程S-SR的表格,并且识别对应于被请求执行的已加密的子例程S-SR的加密密钥。发射器613将识别出的加密密钥发送到信息处理装置101。因此,信息处理装置101可获得当已加密的子例程S-SR将被解密器604解密时将要使用的加密密钥。另外,如图7中所描绘的,解密器604可被设置在安全模块102中。图7是信息处理装置101的功能配置的第二示例的框图。例如,解密器604被设置在安全模块102中,对已加密的子例程S-SR进行解密,并且将已解密的子例程SR写入到主存储器103。因此,解密器604能够将子例程SR置于可执行状态中,并且将子例程SR写入到主存储器103。另外,由于安全模块102 (其真实性被确保)包括解密器604,因此,加密方法和加密密钥可被保密,从而有利于防止由黑客105所进行的程序分析。参照图8,将描述信息处理装置101的操作示例。图8是信息处理装置101的操作示例。(I)信息处理装置101将HDD 104上的已加密的软件输入到安全模块102,以便执行该已加密的软件,其中该已加密的软件包括已加密的主程序C-MP和已加密的子例程C-SR群组。(2)安全模块102对包括在输入的已加密的软件中的已加密的主程序C-MP进行解密,并且将已解密的主程序MP写入到主存储器103。安全模块102还对包括在输入的已加密的软件中的已加密的子例程C-SR进行解密。(3)安全模块102利用修改程序PP来修改已解密的子例程SR群组中的每个子例程SR。“插入认证子程序、命令等”、“对子例程SR的模糊、加密或混排”等可作为修改程序PP的内容的示例给出。因此,安全模块102修改子例程SR群组中的每个子例程SR,从而使得由黑客105所进行的分析和篡改变得困难。(4)安全模块102通过XOR加密和包括在已修改的子例程P-SR群组中的已修改的子例程P-SR来加扰,并且生成已加密的子例程S-SR群组。接下来,安全模块102将所生成的已加密的子例程S-SR群组写入到主存储器103中。
(5)此处,信息处理装置101执行主程序MP。已执行的主程序MP发布针对子例程SR群组中的任意一个子例程SR的执行请求。(6) 一旦检测到针对子例程的执行请求的发布,基于所检测到的执行请求,信息处理装置101对已加密的子例程S-SR进行解扰,从而获得被请求执行的子例程SR。例如,可通过如下操作来实现解扰将“输出到安全模块102的命令、用于对子例程SR进行解扰的请求”作为不使子例程SR经历(4)处的加密的命令插入到在(3)处的子例程SR中。
例如,信息处理装置101请求安全模块102对已加密的子例程S-SR进行解扰。替换地,信息处理装置101请求安全模块102提供用于对已加密的子例程S-SR进行解扰的加密密钥,并且利用由安全模块102所提供的加密密钥来对已加密的子例程S-SR进行解扰。(7)信息处理装置101执行已解扰的子例程SR。此处,一旦执行子例程SR,插入到子例程SR的认证子程序也被执行。所执行的认证子程序执行给定的计算,并且将计算结果存储到主存储器103的给定区域中。同时,安全模块102执行认证程序。所执行的认证程序执行与认证子程序相同的给定计算,从而获得真正的计算结果。所执行的认证程序获取由认证子程序所存储的计算结果,并且判定所获取的计算结果是否与真正的计算结果相符,从而判定子例程SR是否已被篡改。因此,当子例程SR中的认证子程序已经被黑客105篡改时,判定计算结果与结果不相符,从而判定安全模块102已经被篡改。在篡改的情形中,这种指示被输出到信息处理装置101的用户,执行中的子例程SR被终止,安全模块102的解密功能被禁用,等等,从而可防止由黑客105所进行的篡改所导致的破坏。(8) 一旦完成对子例程SR的执行,信息处理装置101删除子例程SR。例如,可通过将“删除子例程SR的命令”插入到(3)处的子例程中来实现对子例程SR的删除。因此,处于未加密状态中的子例程SR驻留于主存储器103中的时段是以上的(6)到(8),从而使得黑客105分析并篡改子例程SR的时间被消除。因此,可防止由黑客105所进行的对恶意软件的开发。另外,当所删除的子例程SR是被主程序MP执行多次的子例程SR时,信息处理装置101通过重新生成已加密的子例程S-SR并将其写入到主存储器103中来应对。因此,子例程SR被主程序MP第二次调用或任意的后续调用、被调用的子例程SR已经被删除并且没有驻留于主存储器103中的状态可以被避免。参照图9至图24,将详细描述图8中所描绘的信息处理装置101的每个操作。首先,参照图9至图16C,将描述对图8中的(3)处所描绘的子例程SR的修改。为了简化,在图9至图13中,在主存储器103和HDD 104中的子例程SR被描绘为处于未加密状态。但是,实际上,在主存储器103和HDD104中,子例程SR处于加密状态中。图9是对子例程SR的修改概况的示意图。子例程SR被修改程序PP修改,该修改程序PP由安全模块102的处理器301执行。子例程SR(程序)是根据地址的命令的集合。此处,为了容易理解,假定子例程SR由5个地址的命令组成。例如,假定子例程SR由子程序Pl至P5形成,该些子程序根据地址(从地址adrl到地址adr5)被顺序执行。因此,子程序Pl至P5作为逻辑地址(从地址adrl至adr5,其为执行次序)被按照地址的次序存储在HDD 104中。对子例程SR(子程序Pl至P5)即,地址的顺序排列被修改程序PP重新排列。在图9中,子例程SR被修改,从而使得地址adrl针对子程序Pl、地址adr2针对子程序P4、地址adr3针对子程序P2、地址adr4针对子程序P3,并且地址adr5针对子程序P5。在该情形中,安全模块102的读取(READ)命令被分别添加在子程序P1、P4和P3之后。在地址已经被变更之后,安全模块102保存指示对应关系的程序碎片。例如,此处,程序碎片Pa被假定为在子程序Pl的执行之后被参照的转到(GOTO)语句,并且指示跳转到地址adr3。程序碎片pb被假定为在子程序P3的执行之后被参照的转到语句,并且指示跳转到地址adr2。另外,程序碎片pc被假定为在子程序P4的执行之后被参照的转到语句,并且指示跳转到地址adr5。程序碎片pa至pc在修改时被生成。图10至图13是描绘由修改程序PP所进行的对子例程SR的修改的示例的示意 图。在图10中,HDD 104中的子例程SR的地址3至5处的命令群组被转移到地址7至9。另外,子例程SR的地址6、7处的命令群组被转移到地址15、16。地址1、2处的命令群组保持不变。在修改之前,在地址2处的命令“Y = X+8”之后,地址3处的命令“Z = X+Y”被执行。由于地址3处的命令“Z = X+Y”已经被转移到地址7,因此地址3处的内容被重写到程序碎片(跳转命令)“转到7”。安全模块102将地址3和程序碎片“转到7”的组合保存在
表格中。类似地,在修改之前,在地址5处的命令“Z = Z+1”之后,地址6处的命令“Z =5+Z”被执行。由于地址5处的命令“Z = Z+1”已经被转移到地址9,并且地址6处的命令已经被转移到地址15,因此地址9之后的地址10处的内容被重写到程序碎片(跳转命令)“转到15”。安全模块102将地址10和程序碎片“转到15”的组合保存在表格中。在将子例程SR写入到主存储器103之前,安全模块102将程序碎片重写到用于安全模块102的读取命令,从而当实现在主存储器103上的已修改的子例程SR被执行时,安全模块102中的表格被根据地址3处的读取命令而参照,并且对应于地址3的程序碎片“转到7”被识别出来。安全模块102向处理器201通知“转到7”,从而处理器201执行已修改的子例程SR的地址7处的命令。通过这种方式,形成子例程SR的命令群组被混排,同时保存对应关系。因此,通过将子例程SR置于难以解密的状态,可提升安全性。图11是比图10中所描绘的修改更加复杂的修改的示例。例如,在图10中,程序碎片仅是跳转命令,而在图11中,程序碎片不是跳转命令,而是进一步插入了子例程SR中的命令的程序碎片。在图11中,HDD 104中的子例程SR的地址4、5处的命令群组被转移到地址8、9。另外,子例程SR的地址6、7处的命令群组被转移到地址15、16。地址I至3处的命令群组
保持不变。在修改之前,在地址2处的命令“Y = X+8”之后,地址3处的命令“Z = X+Y”被执行。由于地址3之后的地址4处的命令已经被转移到地址8,因此,转到语句“转到8”被生成。安全模块102存储地址3和对应内容(地址3处的命令“Z = X+Y”和所生成的转到语句“转到8”)的组合。通过这种方式,程序碎片变得复杂,而不仅是跳转命令,从而使得安全性得到提升。图12是对形成子例程SR的命令群组的加密示例。在图12中,安全模块102利用加密密钥Kl至K4对(修改前的)子例程SR的地址4至7处的命令群组进行加密。接下来,针对安全模块102的读取命令和解密命令被插入到已加密的命令之前,从而使得地址被向下移动所插入的命令数目。例如,地址4处的命令“Y = Y+1”被加密密钥Kl加密,并且被写入到地址6。在已经为空的地址4处,针对安全模块102的读取命令被插入,并且解密命令被插入到地址5处。安全模块102将对命令进行加密的加密密钥和针对(修改后的)子例程SR中的已加密的命令所插入的读取命令的地址的组合保存在表格中。例如,安全模块102在表格中保存对写入到地址6的命令El (Y = Y+1)进行加密的加密密钥Kl和生成已加密的命令 El (Y = Y+1)之后所插入的读取命令的地址4。安全模块102将表格保存在RAM 304或闪存306中,并且将已修改的子例程SR写入到主存储器103。当(修改后的)子例程SR被执行时,根据所插入的读取命令加密密钥被读出,并且根据后续解密命令已加密的命令被解密,从而使得已解密的命令能够被执行。例如,在地址4处的读取命令之后,安全模块102参照表格,将加密密钥Kl提供给处理器201。根据地址5处的解密命令,处理器201利用加密密钥Kl来解密已加密的命令El (Y=Y+1),并且将命令“Y = Y+1”写入到地址6。在地址6处,命令“Y = Y+1”被执行。通过这种方式,即使子例程SR的一部分被加密,解密密钥也被从安全模块102获取,从而使得处
理能够继续。图13是形成子例程SR的命令群组的加密示例。在图13中,安全模块102用针对安全模块102的读取命令替换(修改前的)子例程SR的地址4至7处的命令群组。例如,地址4处的命令“Y = Y+1”被读取命令所替换。在后续地址(地址5)处,指示“写入从安全模块102的地址4处读出的命令“Y = Υ+1””的命令被插入。安全模块102在表格中保存经替换的命令及其地址的组合。例如,安全模块102保存经过替换的地址4和该地址处的命令“Y = Υ+1”的组合。安全模块102将该表格保存在RAM 304或闪存306中,并且将已修改的子例程SR写入到主存储器103。当(修改后的)子例程SR被执行时,处理器201根据经替换的读取命令来读出原始命令,并且执行子例程SR。例如,根据地址4处的读取命令,处理器201从安全模块102读出命令“Y = Υ+1”,并且执行命令。图14是子例程SR修改处理的示例的流程图。安全模块102从HDD104读出已加密的子例程C-SR(步骤S1401),并且解密已加密的子例程C-SR(步骤S1402)。此处,安全模块102将认证子程序或命令插入到子例程SR中(步骤S1403)。以下,将参照图18和图19来描述命令的内容。以下,将参照图22来描述认证子程序的内容。安全模块102随机确定用于子例程SR的修改方法(步骤S1404)。例如,安全模块102从“模糊”、“加密”(参见图12、图13)、“混排”(参见图11、图12、图13)和“什么也不做”中确定修改方法。安全模块102确定修改方法是否是“模糊”(步骤S1405)。如果修改方法是“模糊”(步骤S1405 :是),则安全模块102指定将要被模糊的子例程SR的范围(步骤S1406),对所指定的范围内的命令进行模糊(步骤S1407),然后返回到步骤S1404。在步骤S1405处,如果修改方法不是“模糊”(步骤S1405 :否),则安全模块102确定修改方法是否是“加密”(步骤S1408)。如果修改方法是“加密”(步骤S1408 :是),则安全模块102指定将要被加密的子例程SR的范围(步骤S1409),并且对所指定的范围内的命令进行加密(步骤S1410)。此时,如图12中所描绘的,安全模块102将经过加密的地址和该地址处的解密已加密的命令的解密密钥的组合保存到表格中。安全模块102返回到步骤S1404。在步骤S1408处,如果修改方法不是“加密”(步骤S1408 :否),则安全模块102确定修改方法是否是“混排”(步骤S1411)。如果修改方法是“混排”(步骤S1411 :是),则安全模块102执行混排(图15)(步骤S1412),并且在混排后返回到步骤S1404。 在步骤S1411处,如果修改方法不是“混排”(步骤S1411 :否),则安全模块102确定修改是否结束(步骤S1413)。在该示例中,由于修改方法已经被随机确定为“什么也不做”,因此,如果没有执行修改,则修改未结束(步骤S1413 :否),在该情形中,安全模块102返回到步骤S1404。如果已经至少执行了一次修改或已经执行了初始设定的次数的修改,则安全模块102随机结束修改(步骤S1413 :是),从而结束修改处理。图15是图14中所描绘的混排处理的流程图(步骤S1412)。此处,图10中所描绘的混排将被作为示例给出。安全模块102在安全模块102中建立用于修改的区域(步骤S1501),并且将子例程SR分成多个命令群组(步骤S1502)。安全模块102将头部的命令群组设定为将进行混排的命令群组(步骤S1503)。安全模块102判定是否存在当前的命令群组之后的命令群组(步骤S1504)。如果存在后续命令群组(步骤S1504:是),则安全模块102随机生成程序碎片(例如,转到语句)(步骤S1505)。例如,安全模块102随机生成程序碎片,并且使得可以存储进行混排的命令群组的区域可以被建立。接下来,安全模块102将所生成的程序碎片的地址设定为当前的命令群组的尾部地址之后的下一个地址(步骤S1506)。安全模块102将程序碎片和程序碎片被写入的地址的组合添加到表格中(步骤S1507)。安全模块102将针对程序碎片的读取命令写入到分配给子例程SR的程序碎片的地址(步骤S1508)。然后,在由程序碎片所指定的地址处(例如,如果程序碎片是“转到8”,则该地址为“8”),安全模块102将后续的命令群组设定为将进行混排的命令群组(步骤S1509),然后返回到步骤S1504。在步骤S1504处,如果没有后续的命令群组(步骤S1504 :否),则安全模块102结束混排处理,并且返回到步骤S1404。通过这种方式,通过修改子例程SR,可增加抵御对子例程SR的破解的安全强度。每当已加密的子例程SR被写入时,上述修改方法中的任意一种被执行,因此在每次写入时,修改子例程SR的方法变化。因此,使得对子例程SR的分析对黑客而言更加困难。
图16A、图16B和图16C是对子例程SR的修改示例的示意图。图16A描绘了以下示例,其中子例程SR的地址I至4处的命令被模糊,并且NOP被添加到地址5至7处。图16B描绘了以下示例,其中地址I至4处的命令保持不变,并且命令被添加到地址5至7处,但是结果相同。图16C描绘了以下示例,其中地址I至4处的命令保持不变,并且无意义的命令被添加到地址5至7处,从而结果是相同的。通过这种方式,在图16A至图16C的左手边上所描绘的子例程SR被修改为图16A至16C的右手边上所描绘的子例程SR。因此,可增加抵御对子例程SR的破解的安全强度。参照图17,将描述对将进行加密的程序进行加扰的加扰处理。例如,加扰处理是用于对图8的(4)处所描绘的已修改的子例程P_SR(通过修改程序PP而修改的、在图9至图16C中所描绘的已修改的子例程P-SR)进行加扰的加扰处理。图17是加扰处理的流程图。处理器301判定是否已经从信息处理装置101接收到加扰请求(步骤S1701)。此处,如果没有接收到加扰请求(步骤S1701 :否),则处理器301返回到步骤S1701,并且等待将要接收的加扰。
另一方面,如果已经接收到加扰请求(步骤S1701 :是),则处理器301随机生成加密密钥(步骤S1702),并且利用所生成的加密密钥来对将要进行加密的程序进行加扰(步骤 SI703)。处理器201将已加扰的程序写入到主存储器103 (步骤S1704),并且结束加扰处理。因此,针对每次加扰,使用不同的加密密钥,这使得黑客105难以进行程序分析进而防止了恶意程序的开发。参照图18和图19,将描述图8中所描绘的已加密的子例程S-SR的内容。换言之,图8中所描绘的已加密的子例程S-SR是通过图17中所描绘的加扰处理加扰后的已加密的子例程S-SR。此处,在图18中,将描述当安全模块102解密已加密的子例程S-SR时的已加密的子例程S-SR的内容。另一方面,在图19中,将描述当信息处理装置101解密已加密的子例程S-SR时的已加密的子例程S-SR的内容,其中从安全模块102已经向信息处理装置101提供了用于解密的加密密钥。图18是图8中所描绘的已加密的子例程S-SR的第一示例的示图。在已加密的子例程S-SR的前部,存在还未被加扰的区域,并且请求安全模块102解扰已加密的子例程S-SR的命令(“解扰请求”)被包括。“解扰请求”是由安全模块102经由修改程序PP所插入的命令。如果安全模块102针对每次加密都使用不同的加密密钥,则由修改程序PP所插入的“解扰请求”可包括对应于加密中所使用的加密密钥的识别信息。安全模块102参照标识信息,识别加密密钥并且执行解扰。在已加密的子例程S-SR中,在“解扰请求”之后存在解扰区域,并且用于通过已加密的软件来执行常规处理的命令(“常规处理”)被包括。另外,安全模块经由修改程序PP所插入的“认证子程序”被包括在“常规处理”和“常规处理”之间。在“常规处理”之后,包括一旦完成对已加密的子例程S-SR的执行就请求信息处理装置101删除已加密的子例程S-SR的命令(“删除处理”)。“删除处理”是由安全模块102经由修改程序PP所插入的命令。
另外,在已加密的子例程S-SR中,在“删除处理”之后存在还未被加扰的区域。在该区域中,包括请求信息处理装置101重新生成已加密的子例程S-SR以替换当前的已加密的子例程S-SR的命令(“新例程替换”)。“新例程替换”是由安全模块102经由修改程序PP所插入的命令。另外,在“新例程替换”之后,包括用以返回到主程序的命令(“主程序返回”)。但是,由安全模块102所插入的每个命令可从一开始(即,在开发子例程SR时)就被包括在子例程SR中。图19是图8中所描绘的已加密的子例程S-SR的第二示例的示意图。在图19中,“常规处理”、“认证子程序”、“删除处理”、“新例程替换”和“主程序返回”的内容与图18中所描绘的那些相同,因此它们的描述被省去。在图19中,替代图18中所描绘的“解扰请求”“请求输出用于解扰的加密密钥”和“解扰”被包括在未被加扰的头部区域中。“请求输出用于解扰的加密密钥”和“解扰”是由安全模块102经由修改程序PP所插入的命令。 “请求输出用于解扰的加密密钥”是请求安全模块102提供加密密钥的命令。如果安全模块102针对每次加密使用不同的加密密钥,则由修改程序PP所插入的“请求输出用 于解扰的加密密钥”可包括对应于加密中所使用的加密密钥的识别信息。在该情形中,安全模块102被告知识别信息,并且被请求提供加密密钥。“解扰”是针对信息处理装置101的用以使用所提供的加密密钥解扰已加密的子例程S-SR的命令。但是,由安全模块102所插入的每个命令可从一开始(即,开发子例程SR时)就被包括在子例程SR中。参照图20,将描述图8中的(6)处所描绘的对已加密的子例程S-SR进行解扰的解扰处理。例如,解扰处理由安全模块102执行,该安全模块102在图18中所描绘的“解扰请求”命令之后已经从信息处理装置101接收到解扰请求。替代地,解扰处理由信息处理装置101执行,该信息处理装置101执行图19中所描绘的“解扰”命令。此处,如图19中所描绘的,将描述由信息处理装置101执行解扰处理的示例。图20是解扰处理的流程图。处理器201读取加密密钥(步骤S2001)。例如,加密密钥由安全模块102提供并被存储在主存储器103中。处理器201判定进行解密的已加密的程序和主存储器103中的所有已加密的命令是否已经被解密(步骤S2002)。如果还有已加密的命令(步骤S2002 :否),则处理器201标识存储已加密的命令的主存储器103的地址(步骤S2003)。处理器201针对存储在所标识的地址处的已加密的命令和加密密钥执行XOR运算,并且用已解密的命令重写已加密的命令(步骤S2004)。之后,处理器201返回到步骤S2002。另一方面,如果所有命令都已经被解密(步骤S2002 :是),则处理器201执行已解密的命令群组(步骤S2005),并且结束解扰处理。因此,已加密的程序被置于可执行状态。将描述执行图20中所描绘的解扰处理的程序的示例。图21是执行解扰处理的程序的示例的示意图。子例程SR(程序)是根据地址的命令的集合。此处,假定已加密的子例程S-SR的已加扰的部分驻留于主存储器103的x5_address 至 xl00_address 处。
此处,如果安全模块102执行解扰,则解扰程序驻留于安全模块102的RAM 304中。如果信息处理装置101执行解扰,则解扰程序驻留于主存储器103中。图21描绘了以下示例,其中信息处理装置101使用由安全模块102所提供的加密密钥并且执行解扰。另外,假定解扰程序驻留于主存储器103种的Iaddress至8_addreSS处。另外,以后,XX地址是加密工作区域。已加密的命令被存储在XX地址处。XX地址处的命令被解扰并被转换成已解密的命令。在11地址处,存储了工作区域的地址的地址号。在ZZ地址处,存储了由安全模块102所提供的加密密钥。 例如,l_address处的命令是针对信息处理装置101的从存储由安全模块102所提供的加密密钥的Zz地址读取加密密钥的命令。2_addreSS处的命令是针对信息处理装置101的将地址号“x4”存储到yy地址的命令。l_address和2_address处的命令对应于图20中所描绘的步骤S2001。 3_address处的命令是针对信息处理装置101的将I添加至存储在yy地址处的地址号的命令。此处,4_address处的命令是当存储在yy地址处的地址号超过“xlOO”时针对信息处理装置101的跳转到x5_address并执行x5_address处的命令的命令。换言之,在直到xl00_address的解密结束之后,信息处理装置101跳转至x5_address并执行x5_address至xl00_address处的已解密的命令。3_address和4_address处的命令对应于图20中所描绘的步骤S2002处的分叉(fork)。5_address处的命令是针对信息处理装置101的将yy地址处所指示的已加密的命令存储到XX地址的命令。5_address处的命令对应于图20中所描绘的步骤S2003。6_address处的命令是针对信息处理装置101的利用存储在zz地址处的加密密钥来执行针对存储在XX地址处的已加密的命令的XOR运算并将存储在XX地址处的已加密的命令转换成已解密的命令的命令。7_address处的命令是针对信息处理装置101的用存储在xx地址处的已解密的命令来覆写存储在由存储在yy地址处的地址号所指示的地址处的已加密的命令的命令。6_address和7_address处的命令对应于图20中所描绘的步骤S2005。8_address处的命令是针对信息处理装置101的将要被执行的地址返回到3_address并递归执行3_address至8_address处的命令直到对xl00_address的解密结束为止的命令。上述程序是执行图20中所描绘的解扰处理的程序的示例。参照图22至图24,将描述图8中的(7)处所描绘的对子例程SR的认证。参照图22,将描述对子例程SR的认证概况。图22是描绘对子例程SR的认证概况的示意图。认证子程序是被插入到子例程SR中并基于给定计算来获得计算结果的程序。安全模块102具有执行与认证子程序相同的给定计算以获得真正的计算结果的认证程序。基于认证子程序的计算结果是否是真正的计算结果,安全模块102还判定子例程SR的真实性。例如,认证子程序将l_address处的值和第一密码“yyy ”的乘积存储到2_address,并且将2_address处的值和第二密码“zzz”的乘积存储到3_address。此处,安全模块102将随机生成的值“X”存储到l_addreSS。安全模块102执行认证程序,并且从“X”计算应当由认证子程序计算的真正值“Xans”。
另一方面,子例程SR读出l_address处的“X” ;将“X”和第一密码“yyy”的乘积(“Y”)存储至IJ 2_address ;并且将2_address处的值“Y”和第二密码“zzz”的乘积(“Xcul”)存储到 3_address。安全模块102周期性地参照3_address处的值,读出3_address处的值“Xcul”,并且比较所读取的值和真正值“Xans”。在将“X”存储到Iaddress之后,如果在给定时段内“Xcul”和“Xans”相符,则安全模块102判定子例程SR是真正的程序。如果在给定的时段内“Xcul”和“Xans”不相符,则安全模块102判定子例程SR为恶意程序。因此,安全模块102可判断子例程SR是否是由黑客105所进行的篡改导致的恶意程序。如果子例程SR是恶意程序,则安全模块102可终止对恶意程序的执行,禁用安全模块102的加密功能和/或解密功能等,以防止恶意程序所导致的破坏。参照图23,将描述图22中所描绘的、由安全模块102利用认证程序执行的认证处 理。图23是由安全模块102执行的认证处理的流程图。安全模块102开启计时器(步骤S2301)。安全模块102将随机生成的值“X”存储到第一存储地址(步骤S2302)。安全模块102从“X”计算应当由认证子程序计算的真正值“Xans” (步骤S2303)。安全模块102读出第二存储地址处的值(步骤S2304)。安全模块102判定所读出的值是否与“Xans”相符(步骤S2305)。如果所读出的值与“Xans”相符(步骤S2305 是),则安全模块102判定子例程SR是真正的程序(步骤S2306),并且结束认证处理。另一方面,如果所读出的值与“Xans”不相符(步骤S2305 :否),则安全模块102判定自从在步骤S2301处启动计时器开始是否已经经过了给定时段(步骤S2307),并且如果未经过给定时段(步骤S2307 :否),则返回到步骤S2304。另一方面,如果已经经过了给定时段(步骤S2307 :是),则安全模块102判定子例程SR为恶意程序(步骤S2308),并且结束认证处理。在每次执行时,可修改该认证处理(认证子程序)的内容以使之不同。通过在每次读入已加密的子例程SR时执行该修改,子例程SR中的认证子程序不同。因次,针对认证处理(认证子程序),由黑客所进行的分析和伪装会变得更加困难。参照图24,将描述当在图23中所描绘的认证处理中判断子例程SR为恶意程序时禁用安全模块102的功能以防止由恶意程序所导致的破坏的示例。图24是由安全模块102所执行的加密授权处理的流程图。安全模块102判定子例程SR是否已经被篡改(步骤S2401)。如果子例程SR还未被篡改(步骤S2401 :否),则安全模块102判定是否已经从子例程SR接收到处理请求(步骤S2402)。如果已经接收到处理请求(步骤S2402 :是),则安全模块102根据来自子例程SR的处理请求来执行处理(步骤S2403),并且返回到步骤S2401。如果没有接收到处理请求(步骤S2402 :否),则安全模块102返回到步骤S2401。另一方面,如果子例程SR已经被篡改(步骤S2401 :是),则安全模块102转换到“错误模式”(步骤S2404),并且结束加密授权处理。在“错误模式”期间,如果子例程SR未被重启,则安全模块102不接受来自子例程SR的操作(加密请求、解密请求等)。因此,可防止恶意程序请求安全模块102内的保密信息(加密密钥)、利用安全模块102的功能等。结果,可防止恶意程序所导致的、由信息处理装置101的用户所引发的破坏。如所述,在确保了真实性的安全模块102处,信息处理装置101对将要写入到安全性没有保证的主存储器103中的程序进行加密,然后将已加密的程序写入到主存储器103。当已加密的程序被执行时,信息处理装置101解密并执行该程序。结果,信息处理装置101减少了处于未加密状态中的程序驻留于主存储器103中的时间,从而防止了黑客105对程序的分析和篡改。另外,信息处理装置101针对每次加密使用不同的加密方法,从而使得由黑客105所进行的程序分析很困难,并且使得能够防止对恶意程序的开发。信息处理装置101通过对加密密钥数据和将要加密的程序的XOR运算来执行加密。结果,当已加密的程序被执行时,可减少解密程序所消耗的时间。因此,可减少由解密所导致的对程序的执行的延迟。
信息处理装置101在加密时将认证子程序插入到程序中,从而使能基于认证子程序的计算结果的真实性来检测程序篡改。在篡改的情形中,信息处理装置101将安全模块102设定为对已加密的程序的解密被禁止的状态,向信息处理装置101的用户通知对篡改的判定等。结果,可防止由恶意程序所导致的破坏。另外,通过配置安全模块102执行解密,可隐藏加密密钥、加密方法等,从而使得能够提升程序的安全性。另一方面,如果配置是安全模块102安全地管理加密密钥,并且解密由信息处理装置101执行,则可省去安全模块102的功能,从而使得能够更加负担得起地产生安全模块102。直到程序进入执行等待状态为止,信息处理装置101在HDD104中保存通过具有高加密强度的加密方法所加密的程序,从而使得能够确保程序的安全性。信息处理装置101通过“模糊”、“加密”和“混排”来修改程序,从而使得由黑客105所进行的对程序的分析很困难,并且使得能够防止对恶意程序的开发。此处所叙述的所有示例和条件语言都意欲出于教导目的,以帮助读者理解由发明人对发展现有技术所贡献的发明和概念,并且,将要被理解为不限于这种具体叙述的示例和条件,说明书中的这种示例的组织也不涉及显示发明的优越性和低劣性。虽然已经详细描述了本发明的实施例,但是,应当理解,可对其做出各种修改、替换和变化,只要其不偏离发明的精神和范围即可。
权利要求
1.ー种安全地存储包括一个或多个程序的程序群组的信息处理装置,所述信息处理装置包括 第一检测器,该第一检测器检测所述程序群组中的给定程序的执行等待状态; 安全模块,该安全模块被配置为使得存储在该安全模块中的信息不能被外部设备查阅,并且当所述第一检测器检测到所述执行等待状态时,该安全模块对所述给定程序进行加密,并且将已加密的给定程序写入到不同于所述程序群组的存储区域的存储区域中;第二检测器,该第二检测器检测关于所述给定程序的执行请求; 解密器,当所述第二检测器检测到关于所述给定程序的执行请求时,该解密器对由所述安全模块加密的所述给定程序进行解密,并且将已解密的给定程序写入到所述存储区域;以及 程序执行器,该程序执行器执行由所述解密器所解密的所述给定程序。
2.根据权利要求I所述的信息处理装置,其中 所述安全模块针对每次加密使用不同的加密方法。
3.根据权利要求2所述的信息处理装置,其中 所述安全模块针对每次加密使用不同的加密密钥。
4.根据权利要求I所述的信息处理装置,其中 所述安全模块通过针对加密密钥数据和将要被加密的所述给定程序的XOR运算来执行加密。
5.根据权利要求I所述的信息处理装置,其中 所述安全模块包括 插入器,在加密之前,该插入器将计算程序插入到所述给定程序中,其中该计算程序执行给定计算并将所获得的计算结果写入到所述存储区域的给定区域, 判定器,当伴随所述程序执行器对所述给定程序的执行,由所述计算程序所写入的计算结果与通过在所述安全模块处执行所述给定计算所获得的计算结果不相符时,该判定器判定所述给定程序已经被篡改,以及 输出设备,当篡改已经被所述判定器判定时,该输出设备输出判定結果。
6.根据权利要求5所述的信息处理装置,还包括 禁用器,当篡改已经被所述判定器判定时,该禁用器将所述解密器设定为禁用状态。
7.根据权利要求I所述的信息处理装置,还包括 程序删除器,该程序删除器从所述存储区域中将已经由所述程序执行器执行完成的所述给定程序删除。
8.根据权利要求I所述的信息处理装置,其中 所述解密器驻留于所述安全模块的外部,并且利用由所述安全模块提供并在对所述给定程序的加密中由所述安全模块所使用的加密密钥来解密所述给定程序。
9.根据权利要求I所述的信息处理装置,其中 所述解密器驻留于所述安全模块中。
10.根据权利要求I所述的信息处理装置,还包括 存储设备,该存储设备保存作为经加密的程序群组的已加密的程序群组,其中 当所述程序群组被调用时,所述安全模块对已经通过第一加密方法被加密的所述已加密的程序群组进行解密,通过不同于所述第一加密方法的第二加密方法对作为结果的已解密的程序群组进行加密,并且将作为结果的已加密的程序群组写入到所述存储区域。
11.根据权利要求I所述的信息处理装置,其中 在加密之前,所述安全模块模糊所述给定程序的命令。
12.根据权利要求I所述的信息处理装置,其中 在加密之前,所述安全模块混排所述给定程序的命令群组,存储指示规定了命令将要跳转至的地址的跳转命令和所述跳转命令的地址的组合的表格,并且将在混排后处于所述给定程序中的所述跳转命令的内容变更为指示对所述表格的读取的读取命令。
13.根据权利要求I所述的信息处理装置,其中 在加密之前,所述安全模块混排所述给定程序的命令群组,存储指示给定命令的地址和对应于其的包括所述给定命令和规定命令将要跳转至的地址的跳转命令在内的命令的组合的表格,并且将混排之后处于所述给定程序中的所述给定命令的内容变更为指示对所述表格的读取的读取命令。
14.根据权利要求I所述的信息处理装置,其中 在加密之前,所述安全模块用作为经加密的给定命令的已加密的命令、针对所述安全模块的读取命令和指示对所述已加密的命令的解密的解密命令来替换所述给定程序中的给定命令;并且存储指示所述读取命令的地址和对所述已加密的命令进行解密的解密密钥的组合的表格。
15.根据权利要求I所述的信息处理装置,其中 在加密之前,所述安全模块用针对所述安全模块的读取命令来替换所述给定程序的给定命令,并且存储指示所述读取命令的地址和所述给定命令的组合的表格。
16.ー种安全模块,该安全模块被配置为使得存储在该安全模块中的信息不能被外部设备查阅,并且该安全模块被布置在信息处理装置中,该信息处理装置具有第一存储区域和安全地存储包括一个或多个程序的程序群组的第二存储区域,并且该信息处理装置执行所述第一存储区域中的程序,所述安全模块包括 加密器,当给定程序的执行等待状态已经被检测到吋,该加密器对所述程序群组中的所述给定程序进行加密,并且将已加密的给定程序写入到所述第一存储区域;以及 解密器,当关于所述给定程序的执行请求已经被检测到吋,该解密器对所述已加密的给定程序进行解密,并且将已解密的给定程序写入到所述第一存储区域。
17.ー种安全模块,该安全模块被配置为使得存储在该安全模块中的信息不能被外部设备查阅,并且该安全模块被布置在信息处理装置中,该信息处理装置具有第一存储区域和安全地存储包括一个或多个程序的程序群组的第二存储区域,并且该信息处理装置在解密所述第一存储区域中的已加密的程序之后执行所述程序,所述安全模块包括 加密器,当所述程序群组中的给定程序的执行等待状态已经被检测到时,该加密器对所述给定程序进行加密,并且将已加密的给定程序写入到所述第一存储区域;以及 发射器,当关于所述给定程序的执行请求被检测到吋,该发射器将对所述已加密的给定程序进行解密的密钥发送到所述信息处理装置。
18.一种由信息处理装置执行的信息处理方法,该信息处理装置包括安全模块,该安全模块被配置为使得存储在该安全模块中的信息不能被外部设备查阅,并且该信息处理装置安全地存储包括一个或多个程序的程序群组,所述信息处理方法包括 检测所述程序群组中的给定程序的执行等待状态; 对所述给定程序进行加密,并且将已加密的给定程序写入到不同于所述程序群组的存储区域的存储区域,所述加密和所述写入由所述安全模块在所述执行等待状态被检测到时执行; 检测关于所述给定程序的执行请求; 对所述已加密的给定程序进行解密,并且将已解密的给定程序写入到所述存储区域,所述解密和所述写入由所述安全模块在关于所述给定程序的所述执行请求被检测到时执行;以及 执行所述已解密的给定程序。
19.ー种由安全模块执行的信息处理方法,该安全模块被配置为使得存储在该安全模块中的信息不能被外部设备查阅,并且该安全模块被布置在信息处理装置中,该信息处理装置具有第一存储区域和安全地存储包括一个或多个程序的程序群组的第二存储区域,并且该信息处理装置执行所述第一存储区域中的程序,所述信息处理方法包括 当所述程序群组中的给定程序的执行等待状态被检测到时,对所述给定程序进行加密,并且将已加密的给定程序写入到所述第一存储区域;以及 当关于所述给定程序的执行请求被检测到吋,对所述已加密的给定程序进行解密,并且将已解密的给定程序写入到所述第一存储区域。
20.—种由安全模块执行的信息处理方法,该安全模块被配置为使得存储在该安全模块中的信息不能被外部设备查阅,并且该安全模块被布置在信息处理装置中,该信息处理装置具有第一存储区域和安全地存储包括一个或多个程序的程序群组的第二存储区域,并且在解密所述第一存储区域中的已加密的程序之后,该信息处理装置执行已解密的程序,所述信息处理方法包括 当所述程序群组中的给定程序的执行等待状态被检测到时,对所述给定程序进行加密,并且将已加密的给定程序写入到所述第一存储区域;以及 将对所述已加密的给定程序进行解密的密钥发送到所述信息处理装置,所述发送在关于所述给定程序的执行请求被检测到时被执行。
21.一种存储信息处理程序的计算机可读介质,该信息处理程序促使信息处理装置执行处理,所述信息处理装置包括安全模块,该安全模块被配置为使得存储在该安全模块中的信息不能被外部设备查阅,并且所述信息处理装置安全地存储包括一个或多个程序的程序群组,所述处理包括 检测所述程序群组中的给定程序的执行等待状态; 对所述给定程序进行加密,并且将已加密的给定程序写入到不同于所述程序群组的存储区域的存储区域,所述加密和所述写入由所述安全模块在所述执行等待状态被检测到时执行; 检测关于所述给定程序的执行请求; 对所述已加密的给定程序进行解密,并且将已解密的给定程序写入到所述存储区域,所述解密和所述写入由所述安全模块在关于所述给定程序的所述执行请求被检测到时执行;以及执行所述已解密的给定程序。
22.—种存储信息处理程序的计算机可读介质,该信息处理程序促使处理器执行处理,所述处理器在安全模块中,该安全模块被配置为使得存储在该安全模块中的信息不能被外部设备查阅,并且所述安全模块被布置在具有第一存储区域和安全地存储包括ー个或多个程序的程序群组的第二存储区域的信息处理装置中,并且所述信息处理装置执行所述第一存储区域中的程序,所述处理包括 当所述程序群组中的给定程序的执行等待状态被检测到时,对所述给定程序进行加密,并且将已加密的给定程序写入到所述第一存储区域;以及 当关于所述给定程序的执行请求被检测到吋,对所述已加密的给定程序进行解密,并且将已解密的给定程序写入到所述第一存储区域。
23.一种存储信息处理程序的计算机可读介质,该信息处理程序促使处理器执行处理,所述处理器在安全模块中,该安全模块被配置为使得存储在该安全模块中的信息不能被外部设备查阅,并且所述安全模块被布置在具有第一存储区域和安全地存储包括ー个或多个程序的程序群组的第二存储区域的信息处理装置中,并且在对所述第一存储区域中的已加密的程序进行解密之后,所述信息处理装置执行已解密的程序,所述处理包括 当所述程序群组中的给定程序的执行等待状态被检测到时,对所述给定程序进行加密,并且将已加密的给定程序写入到所述第一存储区域;以及 将对所述已加密的给定程序进行解密的密钥发送到所述信息处理装置,该发送在关于所述给定程序的执行请求被检测到时被执行。
全文摘要
本发明公开了信息处理装置、安全模块、信息处理方法和计算机产品。一种信息处理装置,安全地存储包括一个或多个程序的程序群组,并且包括第一检测器,其检测程序群组中的给定程序的执行等待状态;安全模块,其被配置为使得存储在该安全模块中的信息不能被外部设备查阅,并且当第一检测器检测到执行等待状态时对给定程序进行加密,并且将已加密的给定程序写入到不同于程序群组的存储区域的存储区域中;第二检测器,其检测关于给定程序的执行请求;解密器,当第二检测器检测到关于给定程序的执行请求时,其对由安全模块加密的给定程序进行解密,并且将已解密的给定程序写入到存储区域;以及程序执行器,其执行由解密器所解密的给定程序。
文档编号G06F12/14GK102760103SQ201210114118
公开日2012年10月31日 申请日期2012年4月16日 优先权日2011年4月28日
发明者小桧山清之, 若杉健一, 高楠昌和 申请人:富士通半导体股份有限公司, 富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1