安全模块和信息处理装置的制作方法

文档序号:6424717阅读:258来源:国知局
专利名称:安全模块和信息处理装置的制作方法
技术领域
这里论述的实施例涉及保护信息的安全模块和信息处理装置。
背景技术
随着宽带互联网和数字广播变得更普遍,确保所递送的内容(主要是数字视听 (AV)内容)的安全性的版权保护技术已经涌现出来。尤其,具有开放体系结构的个人计算机(PC)使得安全性的实现很困难,因为被存储到存储器并且处理AV内容的程序(软件) 存在于任何人都能够查看、分析和改写程序的环境中。换言之,当AV内容存在于互联网上或广播网络上时,虽然AV内容被加密并从而是安全的,但当AV内容被PC接收和处理时,AV内容必须被解密并且经解密的AV内容可能被非法拷贝。在程序在PC的存储器上的情况下,任何人都能够查看和改写这些程序,因此原则上可以进行更改,从而使得程序能够被分析,由此经解密的AV内容在没有授权的情况下被拷贝到例如硬盘。另一方面,由于PC是到宽带互联网的主要网关,所以如果能够确保安全性,那么在整个互联网上分发数字AV内容将成为可能,其意义是巨大的。传统上,PC上的主流程序安全性涉及对确保安全性的算法的隐藏和为了使对算法的分析困难而进行的混淆(obfuscation)(即,在不限制程序的情况下提高复杂度,在不限制程序分析(非法程序改写的第一步)的情况下提高复杂度)。然而,一旦在主存储器上展开了程序,由于如前所述存储器是可见的环境,因此拷贝就容易了,并且通过花时间来分析拷贝的程序,就可以分析版权保护算法。在被认为是就安全性而言极不稳定的版权保护系统的具有很高程度的共享广播的系统中,考虑到单次分析可能招致的损害,采用这种程序是很困难的。另外,可以考虑一种保证程序安全性的方法,其中保证安全性并且作为可靠性基础的安全模块(防篡改模块)(实时地)扫描在装置的存储器区域处展开的程序并且不允许对程序的改写以防止对程序的篡改(非法改写)(例如参见日本早期专利公布 No.2004-129227 和 2003-198527)。可靠性的这个基础是保证安全性的安全模块(防篡改模块,基本上是硬件)并且对此硬件的禁用是极为困难的,从而大幅提高了安全性。在上述的日本早期专利公布 No. 2004-129227中,如果安全模块程序实时地扫描程序,则“扫描功能禁用”被中断,由此使用被称为直接存储器访问(DMA)扫描的使用DMA的硬件扫描。上述硬件扫描仅能应用到兼容的系统。换言之,假定安全模块和PC连接接口是能够进行硬件扫描的接口并且例如限于外围组件互连(PCI)接口和快速PCI (PCIe)接口。另一方面,连接PC和模块的最常见接口是通用串行总线(USB)。由于USB不支持硬件扫描功能,因此不能应用硬件扫描。PC上的遵从USB的软件(驱动器等等)对于所有处理都需要请求。例如,如果具有USB接口的模块请求扫描,则该模块向PC上的遵从USB的软件发出对扫描PC的存储器的请求。遵从USB的软件在接收到该请求后,执行扫描并将扫描的结果返回给该模块。这里,PC上的USB兼容软件有被非法篡改从而禁用扫描功能的危险。

发明内容
在实施例的一个方面中,一个目的是至少解决传统技术的上述问题。根据实施例的一个方面,一种安全模块包括生成单元,该生成单元执行生成扫描程序的生成处理并且还执行随机更新所述扫描程序的内容的更新处理,其中所述扫描程序使得生成对象程序所特有的代码的扫描处理在连接的设备处被执行;存储设备,该存储设备中存储有所述对象程序所特有的代码;以及认证单元,如果所述扫描程序被所述连接的设备执行并且是针对在所述连接的设备中的指定存储区域处存储的所述对象程序执行的, 则所述认证单元基于所述存储设备中存储的所述特有的代码和在所述连接的设备处执行的所述扫描程序的执行结果来认证在所述指定存储区域处存储的所述对象程序的有效性。根据本发明的安全模块和信息处理装置实现了不易被破解器禁用、并且即使在接口不支持硬件扫描的情况下也能实现的扫描。


图1是信息处理装置的硬件构造的框图2示出了安全模块的硬件构造的框图3示出了信息处理装置的操作的示例性概要;
图4示出了对象程序TP的执行的示例;
图5、6、7和8示出了扫描程序的示例;
图9是扫描程序生成/更新处理的流程图10和11是图9中所示的扫描程序生成处理(步骤S903)的示例的流程图
图12和13是扫描程序更新处理(步骤S908)的示例的流程图14示出了对象程序TP的修改的概要;
图15、16、17A和17B示出了通过修改程序来修改对象程序TP的示例;
图18是对象程序TP修改处理的流程图19是图18中所示的打乱处理(步骤S1811)的流程图;并且
图20A、20B和20C示出了对象程序TP的修改的示例。
具体实施例方式将参考附图来说明本发明的优选实施例。信息处理装置例如是计算机(比如个人计算机)、固定视频游戏控制台、电视机、硬盘记录器、移动终端(移动电话、智能电话、便携式视频游戏机、电子字典、平板终端)等等。图1是信息处理装置的硬件构造的框图。信息处理装置100包括处理器101、北桥102、存储器(RAM 103,ROM 104)、显示器105、南桥106、硬盘驱动器(HDD) 107、通信接口 (I/F) 108、输入设备109和安全模块110,它们分别通过总线相连。处理器101控制信息处理装置100并执行计算处理。北桥102连接到处理器101、 存储器、显示器105和南桥106并且形成它们之间的桥接器。RAM 103是用作处理器101的工作区域的主存储器。ROM 104是其中存储有程序和数据的非易失性存储器。显示器105 例如显示诸如文本、图像、功能信息等等的数据,并且还显示显示光标、图标和/或工具框。南桥106连接到北桥102、HDD 107、通信I/F 108、输入设备109和安全模块110 并且形成它们之间的桥接器。HDD 107在处理器101的控制下是控制对内部硬盘的数据读取和写入的驱动装置。通信I/F 108是一接口,其在南桥106的控制下能够通过通信线路连接到诸如局
域网(LAN)、广域网(WAN)和互联网之类的网络。通信I/F还是能够接收数字广播波的接□。输入设备109是用于输入文本、数字、各种指令等等的装置并且例如可以是键盘、 鼠标、触摸面板等等。来自输入设备109的输入数据经由南桥106和北桥102被发送到处理器101,并且被处理器101处理。安全模块110是防止内部存储的信息被外部设备参考的构造的大规模集成电路 (LSI),并且是防止从外部设备观看并且还防止对内部数据的篡改的硬件。安全模块110例如具有抗篡改模块(TRM)构造。TRM构造是用于在物理上和逻辑上进行保护以对抗内部半导体(在此情况下是安全模块110)分析和篡改的构造。例如,在安全模块110中,内部被涂覆以极强力且粘性的涂层,其中如果该涂层的表面被去除,则内部电路完全毁坏,或者在安全模块110中布置有虚拟布线(dummy wiring)。安全模块110具有如下功能从HDD 107读出要监视的软件(对象程序)、生成/ 更新扫描对象程序的扫描程序、在RAM 103上实现对象程序和/或扫描程序、加密、以及解密。安全模块110经由南桥106中的USB控制器和USB总线111可通信地连接。安全模块 110可被内置在信息处理装置100中或者可设在外部。图2示出了安全模块110的硬件构造的框图。安全模块110包括处理器201、USB I/F 202、加密电路 203、RAM 204, ROM 205 以及闪存 206。处理器201执行安全模块110的内部控制和计算处理。USB I/F 202经由USB总线111连接到南桥106中的USB控制器并且执行通信。加密电路203对数据和程序加密, 并且对加密的数据和程序解密。RAM 204是用作处理器201的工作区域的主存储器。ROM 205是其中存储有程序和数据的非易失性存储器。闪存206是使能改写存储的数据和程序的非易失性存储器。将描述信息处理装置100的操作的概要。在本实施例中,保护信息处理装置100 上的软件免遭改写的安全模块110通过不能进行硬件扫描的USB接口连接到信息处理装置 100。因此,当安全模块110(经由USB接口)正常请求USB兼容软件(通常是“驱动器”) 对存储器中的区域进行扫描时,该USB兼容软件被破解。例如,USB兼容软件被破解,返回表明改写没有发生的结果,尽管信息处理装置 100上的软件已被改写。从而,扫描功能可能不会有效地操作,由此在本实施例中,以下处理被执行。图3示出了信息处理装置100的操作的示例性概要。在本实施例,安全模块110 获取被加密并存储在HDD 107中的对象程序(经加密的对象程序E(TP))并且使用加密电路203来将经加密的对象程序E (TP)解密成对象程序TP。随后,安全模块110把经解密的对象程序TP写入到RAM 103中的扫描区域130。对象程序TP可被保存在安全模块110中。如果存储在HDD 107中的程序未被加密,则所获取的对象程序TP在不被安全模块 110解密的情况下被存储到RAM 103的扫描区域130。另外,安全模块110可通过修改程序PP来修改对象程序TP。虽然修改的细节在下文中描述,但对象程序TP的操作是相同的,只不过处理的细节和顺序被修改。另外,由于此修改,对象程序TP的一部分(程序片段)被保存在安全模块110中,并且当对象程序TP在信息处理装置100上被执行时,如果不参考安全模块110中的程序片段,则对象程序TP的执行不能继续。(2)安全模块110周期性地或者按随机的间隔执行生成程序GP,自动地随机生成 /更新扫描程序SP。例如,虽然扫描对象程序TP的功能不变,但处理细节每次均不同的扫描程序SP被自动地随机生成。此自动生成例如可以按若干毫秒到若干分钟的间隔周期性地执行,或者可以按随机的间隔执行。在任一情况下,该间隔都被设定得短于破解器进行篡改所需的时间。生成程序GP随机地改变例如扫描区域130、扫描地址的顺序、扫描结果计算、向安全模块110返回计算结果的计算处理、扫描程序SP代码、信息处理装置100的存储器上的位置,等等。生成程序GP对扫描程序SP的随机生成/更新处理是在安全模块110中执行的,因此生成处理不会被查看、分析,并且其结果也不会被无效。如果扫描程序SP被生成程序GP生成/更新,则安全模块110也利用最新的扫描程序SP来扫描对象程序TP并且更新扫描结果Rl。扫描结果Rl被存储到RAM 204或闪存 206,并且是对象程序TP所特有的代码。(3)扫描程序SP请求驱动器131使处理器101在RAM 103上的不会被扫描的区域处提供布置。结果,驱动器131使得处理器101把从安全模块110发送来的扫描程序SP存储到RAM 103上的不会被扫描的区域。(4)被存储到RAM 103的扫描程序SP使得处理器101对扫描区域130中的对象程序TP进行扫描。扫描结果R2经由驱动器131被报告给安全模块110。(5)安全模块110接收从驱动器131发送来的扫描结果R2。当接收到扫描结果R2 时,认证程序AP使得处理器201比较在安全模块110中保存的扫描结果Rl和所接收的扫描结果R2的一致性。如果扫描结果Rl和R2 —致,则对象程序TP没有被篡改。另一方面,如果对象程序TP已被改写,则安全模块110向处理器101发送结束对象程序TP的执行的指令,由此处理器101在接收到该指令后结束对象程序TP的执行。另外,如果在给定的时段已逝去之后仍未从驱动器131接收到扫描结果R2,则安全模块110向处理器101发送结束对象程序TP的执行的指令。(6)安全模块110循环地执行上述(2)至(5),直到对象程序TP的操作结束为止。这样,周期性地或者按随机的间隔使安全模块110随机地生成/更新扫描程序SP, 由此,例如,即使扫描程序SP存在于信息处理装置100的存储器亦即任何人都能够查看和分析扫描程序SP的环境中,也没有被破解器破解的危险。换言之,破解需要一定量的时间来查看、分析扫描程序SP并将其改写成伪造的扫描程序。然而,由于安全模块110周期性地或者按随机的间隔使得扫描程序每次随机地变化成不同的形式,因此破解器没有时间来分析扫描程序并将其改写成伪造的扫描程序。图4示出了对象程序TP的执行的示例。在RAM 103的扫描区域130中,内容密钥解密程序401、内容解密程序402和内容处理程序403被实现为对象程序TP。通过诸如互联网之类的网络、利用广播波、或者从HDD 107,安全模块110获取经加密的内容(经加密的内容以412))和经加密的内容密钥(经加密的内容密钥E(411)),并且内容密钥解密程序 401对经加密的内容密钥E(411)解密。内容解密程序402使用经解密的内容密钥411并且对经加密的内容E (41 解密。 经加密的内容412被内容处理程序403进行给定的处理(例如MPEG解码)并且经处理的内容被显示在显示器105上。图5至8示出了扫描程序SP的示例。在图5至8中,为了易于理解,示出了简单的扫描程序SP。另外,在图5至8中,“laddr_XX”指示地址,例如与扫描区域130相对应的逻辑地址。图5示出了执行对象程序TP的扫描的扫描程序SP。例如,在laddr_ll如果存储 “1”,在laddr_12如果存储“2”,在laddr_13如果存储“3”,在laddr_14如果存储“4”并且在laddr_15如果存储“5”,则在地址1至5处的步骤中,这些值分别被写入到laddr_1001 至laddr_1005。在地址6处的步骤中,所有的值被求和并且总和“ 15”在地址7处的步骤中被写入到laddr_1010。在地址8处的步骤中,“+80”被加到laddr_1010的内容“ 15”,并且总和被乘以 “*5”,由此获得(15+80) X 5 = 475。在地址9处的步骤中,地址8的计算结果“475”被写入到laddr_1011,并且在地址10处的步骤中,laddr_1011处的内容“475”被报告给安全模块 110。安全模块110也保存先前扫描的扫描结果。如果所报告的扫描结果与所保存的扫描结果一致,则没有发生篡改。另一方面,如果扫描结果不一致,则发生了篡改,并且对象程序TP的执行被结束。图6示出了把扫描程序SP中的地址1至5处的步骤中读取值的扫描地址从 laddr_ll至laddr_15改变成laddr_21至laddr_25的示例。在图6所示的示例中,由于值是从laddr_21至25读取的,所以报告给安全模块110的扫描结果与在图5所示的示例中报告的不同。图7示出了改变图5所示的扫描程序SP中的扫描地址的顺序并且依赖于顺序改变而改变计算的示例。例如,扫描程序SP改变在地址1至5处的步骤中要扫描的地址的顺序。由于扫描结果与图5所示的扫描结果的不同之处仅在于顺序的变化,所以地址6处的步骤中的计算也被随机改写,由此报告给安全模块110的扫描结果与图5所示的示例的扫描结果的值不同。图8示出了如下示例在图7所示的扫描程序SP中,如果扫描程序SP未被保存在指定的存储区域中,则扫描程序SP不执行扫描。在此情况下,在安全模块110处,保存扫描程序SP的地址已被指定。例如,保存扫描程序SP的地址(例如开头块)被加到在地址1至5处的步骤中读取的扫描地址的值。在此情况下,如果图8所示的被安全模块110保存的扫描程序SP的扫描结果Rl和被信息处理装置100的处理器101执行的扫描程序SP的扫描结果R2 —致,则对象程序TP没有被篡改,并且可以确认扫描程序SP位于指定的位置处。相反,如果结果不一致,则扫描程序SP可能被故意保存在了另外的位置,由此,在这种情况下,对象程序TP因为扫描结果的差异而被结束。这样,如果扫描程序SP所在的存储器逻辑地址不同,则扫描结果变化并且扫描程序SP被写入到与假定的不同的存储器逻辑地址,由此难以通过操作分析来进行破解。图9是扫描程序生成/更新处理的流程图。扫描程序生成/更新处理是当安全模块Iio的处理器101执行生成程序GP时执行的处理。安全模块110等待给定的时段逝去(步骤S901 否)。例如,由已写入到RAM 103 的扫描区域130的对象程序TP的执行的开始所触发,该给定时段的定时开始。该给定时段如上所述是若干毫秒到若干分钟的间隔,并且可在若干毫秒到若干分钟的范围内随机设定。当该给定时段已逝去时(步骤S901 是),安全模块110判断扫描程序SP的生成是否已经完成(步骤S902)。如果生成尚未完成(步骤S902 否),则安全模块110执行扫描程序生成处理(图10至11)(步骤S903)并且将所生成的扫描程序SP写入到RAM 103 上的不会被扫描的区域(步骤S904)。随后,安全模块110利用所生成的扫描程序SP扫描对象程序TP,将扫描结果保存在安全模块110中(例如RAM 204、闪存206)(步骤S905),并且返回到步骤S901。在步骤S902,如果扫描程序SP的生成已完成(步骤S902 是),则安全模块110判定是新生成扫描程序SP还是更新已生成的扫描程序SP (步骤S906)。如果要新生成扫描程序SP (步骤S907 新生成),则安全模块110进到步骤S903。如果要更新扫描程序SP (步骤S907 更新),则安全模块110执行扫描程序更新处理(图12至13)(步骤S908),并且将经更新的扫描程序SP写入到RAM 103上不会被扫描的区域(步骤S904)。随后,安全模块110利用经更新的扫描程序SP扫描对象程序TP,将扫描结果保存在安全模块110中(例如RAM 204、闪存206)(步骤S905),并且返回到步骤S901。在由于对象程序TP的结束(这是启动的动力)而从扫描区域130删除对象程序 TP后,安全模块110结束扫描程序生成/更新处理。图10是图9所示的扫描程序生成处理(步骤S903)的前一半的示例的流程图。安全模块110在安全模块110外部的RAM 103中确立扫描区域130 [As,Ae]和写入区域[Bs, Be](步骤S1001)。所确立的扫描区域130[As,Ae]可具有与对象程序TP的大小相当的大小或者可以具有与对象程序TP的一部分相当的大小。。另外,如果扫描区域130具有与对象程序TP的一部分相当的大小,则每次扫描程序生成处理被执行时,扫描区域130[As,Ae]具有不同的范围。例如,每次扫描程序生成处理被执行时,扫描区域130[As,Ae]被移位。安全模块110在安全模块110的RAM 204(或闪存206)中确立比扫描区域130大的存储器区域[Ms,Me](确立模块区域)(步骤S10(^)。安全模块110初始化各种变量(步骤S1003)。i是被初始化到1的变量。Ai指示扫描区域130的任意地址并且被初始化到开头地址As。Bi指示写入区域的任意地址并且被初始化到开头地址Bs。Mi指示确立模块区域中的任意地址并且被初始化到开头地址Ms。Yi是要生成的扫描程序SP中使用的地址并且被初始化到Bi。随后,安全模块110向确立模块区域中的laddr_Mi写入指令“读取laddr_Ai处的内容并写入到laddr_Bi”的命令(步骤S1004)。安全模块110判断Ai > Ae是否为真(步骤S1005)。Ai是扫描区域130的末尾地址。如果Ai > Ae不为真(步骤S1005 否),则安全模块110递增i (步骤S1006),并且返回到步骤S1004。另一方面,如果Ai > Ae为真(步骤S1005 是),则安全模块110进到图11中示出的步骤S1101。图11是图9所示的扫描程序生成处理(步骤S903)的后一半的示例的流程图。 在图10中的步骤S1005 是之后,安全模块110递增确立模块区域中的laddr_Mi (步骤 Sl 101),并且判断Mi > Me-2是否为真(步骤Sl 102)。如果Mi > Me-2不为真(步骤S1102 否),则安全模块110将变量j的初始值设定为j = 1(步骤S1103),并且随机地确定计算方法Zj (步骤S1104)。计算方法例如可以是算术运算、逻辑运算、校验和计算、利用散列函数的散列值计算,等等。以下,利用计算方法Zj进行的计算被称为“Zj计算”。安全模块110递增j (步骤S1105),并且判断j = y是否为真(步骤S1106)。这里,y是计数Yi,即确立模块区域中的laddr_Mi的数量。如果j =y不为真(步骤Sl 106 否),则安全模块110返回到步骤Sl 104。另一方面,如果j = y为真(步骤Sl 106 是),则安全模块110向laddr_Mi写入指令“对laddr_ Yl处的内容和laddr_Y2处的内容执行Zl计算,对Zl计算结果和laddr_Y3处的内容执行
Z2计算,......,对Z(y_2)计算结果和laddr_Yy处的内容执行Z(y_l)计算”的扫描命令
Z(Mi)(步骤 Sl 107)。安全模块110递增Mi (步骤Sl 108),向laddr_Mi写入指令“将扫描命令Z (Mi_l) 的计算结果写入到laddr_(Bi+l),,的扫描命令(步骤S1109),并且返回到步骤S1101。在步骤Sl 102,如果Mi > Me-2为真(步骤Sl 102 是),则安全模块110向laddr_ Mi写入指令“将laddr_(Bi+l)处的内容报告给安全模块110”的扫描命令(步骤S1110), 并且进到步骤S904。根据扫描程序处理(步骤S90;3),扫描程序SP可被周期性地(或者按随机的间隔)随机生成。图12是扫描程序更新处理(步骤S908)的示例的流程图。安全模块110随机地确定更新的内容(步骤S1201)。这里,更新的内容例如是“混淆”、“改变扫描区域”、“改变扫描地址的顺序”、“额外的扫描结果计算”、“扫描程序SP地址添加”、“不进行任何操作”,等寸。参考图12来描述“混淆”、“扫描区域的改变”和“扫描地址的顺序的改变”的顺序改变。另一方面,参考图13来描述“额外的扫描结果计算”、“扫描程序SP地址添加”和“不进行任何操作”。在扫描程序更新处理中,执行这6个更新中的至少一个(除“不进行任何操作”以外)即可。如图12所示,安全模块110判定随机确定的更新的内容是否是“混淆”(步骤S 1202)。混淆是通过使命令复杂化来使得对一个命令或一组命令的译解困难的方法,例如将一命令替换为“操作相同,但处理细节是不同的程序代码”的命令。例如,对于单个命令,命令“X = 1+Y”被更新为“X = 10-9+2Y-Y”。另外,命令“X = 1+Y”和“Z = X+50”被更新为命令 “X =洸+Y” 和 “Z = X+25”。虽然更新后的命令执行的操作与更新前的相同,但程序代码不同,由此更新前后的生成程序GP具有“相同的操作,但处理细节是不同的程序代码”。即使破解器查看了生成程序GP代码,生成程序GP的程序代码在每次更新时也是不同的,从而使得分析困难,并且还有一个优点是破解器无法得知生成程序GP的哪个部分包括重要代码。如果更新是通过“混淆”进行的(步骤S 1202 是),则安全模块110规定对象程序TP中要被混淆的范围(步骤S1203),对规定的范围中的(一个或多个)命令进行混淆 (限于能够被混淆的命令),并且返回到步骤S1201。另一方面,在步骤S1202,如果更新不是通过“混淆”进行的(步骤S1202 否),则安全模块110判断更新是否是通过“改变扫描区域”进行的(步骤S1205)。“改变扫描区域”是将扫描程序SP中规定的扫描地址改变成扫描区域130中的不同地址。例如,在将图5所示的扫描程序SP更新成图6所示的扫描程序SP时,执行了扫描区域的改变。如果更新是通过“改变扫描区域”进行的(步骤S1205 是),则安全模块110从对象程序TP规定扫描区域130改变的范围(步骤S1206),将(一个或多个)地址改变成规定的范围的(一个或多个)地址(步骤S1207),并且返回到步骤S1201。即使改变了扫描区域,也只改变生成程序GP访问的地址,而扫描程序SP的操作保持相同。另外,通过改变扫描区域130,扫描结果也被更新,由此安全性得到加强。在步骤S1205,如果更新不是通过“改变扫描区域”进行的(步骤S1205 否),则安全模块110判断更新是否是通过“改变扫描地址的顺序”进行的(步骤S1208)。改变扫描地址的顺序是将扫描程序SP中的给定地址处的代码替换为另一给定地址处的代码。例如,在将图5所示的扫描程序SP改变成图7所示的扫描程序SP时,扫描地址的顺序被改变。虽然通过改变扫描地址的顺序改变了执行的顺序,但在改变前后扫描结果可能变化也可能不变化。如果更新是通过“改变扫描地址的顺序”进行的(步骤S1208 是),则安全模块 110从对象程序TP规定顺序改变的范围(步骤S1209),将代码改变成规定的范围的(一个或多个)地址处的代码(步骤S1210),并且返回到步骤S1201。另一方面,在步骤S1208,如果更新不是通过“改变扫描地址的顺序”进行的(步骤S1208 否),则安全模块110进到图 13所示的步骤S1301。图13是扫描程序更新处理(步骤S908)的示例的另一流程图。在步骤S1301,安全模块110判断更新是否是通过“额外的扫描结果计算”进行的(步骤S1301)。如果更新是通过“额外的扫描结果计算”进行的(步骤S1301 是),则安全模块 110从对象程序TP规定要经历计算的地址(步骤S130》并且随机地确定计算方法(步骤 S13(X3)。这里,计算方法是针对经历计算的地址处的数据的算术运算和/或逻辑运算、对每个数据项的校验和计算和/或利用散列函数进行的散列值计算。安全模块110向经历更新的扫描程序SP添加指令“使用计算地址处的数据并执行在步骤S1303确定的计算方法”的扫描命令(步骤S1304)。另外,安全模块110向经历更新的扫描程序SP添加指令“向安全模块110报告通过额外的扫描命令获得的计算结果”的扫描命令(步骤S1305),并且返回到步骤S1201。在步骤S1201,如果更新不是通过“额外的扫描结果计算”进行的(步骤S1301 否),则安全模块Iio判断更新是否是通过“扫描程序SP地址添加”进行的(步骤S1306)。扫描程序SP地址添加是将扫描程序SP的地址提供给扫描程序SP中的给定地址处的命令以获得依赖于扫描程序SP的地址的扫描结果的方法。例如,在将图7所示的扫描程序SP更新成图8所示的扫描程序SP时,执行扫描程序SP地址添加。在步骤S1306,如果更新是通过“扫描程序SP地址添加”进行的(步骤S1306 是), 则安全模块110从对象程序TP规定要经历添加的(一个或多个)地址(步骤S1307),并且如图7中的地址1至5所示,将扫描程序SP地址的值额外地提供给经历添加的地址处的数据,改写该数据(步骤S1308),随后返回到步骤S1201。在步骤S1306,如果更新不是通过“扫描程序SP地址添加”进行的(步骤S1306 否),则安全模块110判断是否结束生成程序GP的更新(步骤S1309)。例如,由于存在随机判定“不进行任何操作”的情况,因此如果一次也未曾执行更新,则安全模块110不结束更新(步骤S1309 否),并且返回到步骤S1201。如果执行了至少一次更新或者执行了预定次更新,则安全模块110随机地结束更新(步骤S1309 是)并且返回到图9所示的步骤S904。这样,由于执行是在具有防篡改构造的安全模块110内的,因此扫描程序SP的生成/更新每次可被安全地执行,由此通过破解来禁用扫描功能变得困难,并且即使是USB连接的情况下安全性也能得到加强。将描述对对象程序TP的修改。如参考图3所述,安全模块110中的处理器201通过运行修改程序PP来修改对象程序TP。这里,将详细描述对象程序TP的修改。图14示出了对象程序TP的修改的概要。程序是各个地址处的命令的集合。为了方便,对象程序TP包括5个地址每个处的命令,例如包括子程序Pl至P5,根据地址adr 1至 adr5按子程序Pl至P5的顺序被执行,并且因此按照地址adrl至adr5的执行顺序被顺序地在HDD 107中存储为逻辑地址。布置顺序,即对象程序TP的地址(子程序Pl至P5),被修改程序PP重布置。在图 14中,地址adr 1被修改为子程序Pl,地址adr2被修改为子程序P4,地址adr3被修改为子程序P2,地址adr4被修改为子程序P3,并且地址adr5被修改为子程序P5。在此情况下,在子程序PI、P4和P3之后,额外记述了指令从安全模块110读取的 READ命令。指示地址重布置后的关联关系的程序片段被保存在安全模块110中。例如,程序片段pa是跳到地址adr3的Goto语句,其在子程序Pl的执行之后被参考。程序片段Pb是跳到地址adr2的Goto语句,其在子程序P3的执行之后被参考。程序片段PC是跳到地址adr5的Goto语句,其在子程序P4的执行之后被参考。程序片段pa 至pc是在修改时生成的。扫描结果Rl在修改前后保持相同。图15至17B示出了修改程序PP修改对象程序TP的示例。在图15所示的示例中, HDD 107中的对象程序TP的地址3至5处的命令被移动到地址7至9。另外,对象程序TP 的地址6和7处的命令被移动到地址15和16 ;并且地址1和2处的命令保持原样。在修改之前,地址3处的命令“Ζ = X+Y”是在地址2处的命令“Y = X+8”之后被执行的。由于地址3处的“Ζ = X+Y”被移动到了地址7,所以地址3处的内容被改写为程序片段(跳跃命令)“Goto7”。安全模块110在表中将地址3与程序片段“Goto7”关联起来并且存储该表。
类似地,在修改之前,地址6处的命令“Ζ = 5+Z”是在地址5处的命令“Ζ = Z+1” 之后被执行的。由于地址5处的“Ζ = Z+1”被移动到了地址9并且地址6处的命令被移动到了地址15,所以地址10(地址9后的地址)处的内容被改写为程序片段(跳跃命令)“Gotol5”。安全模块110在表中将地址10与程序片段“Gotol5”关联起来并且存储该表。在将对象程序TP写入到扫描区域130之前,安全模块110将程序片段改写为指令从安全模块110读取的READ命令。结果,当在扫描区域130处实现的经修改的对象程序TP 被执行时,根据地址3处的READ命令,安全模块110中的表被参考并且与地址3相对应的程序片段“Goto7”被识别出。安全模块110通知处理器101 “Goto7”,由此处理器101执行经修改的对象程序TP的地址7处的命令。这样,构成对象程序TP的命令被打乱,同时存储各个对应关系,由此对象程序TP 变得难以译解,从而使得安全性能够得以提高。图16是比图15所示的更复杂的修改的示例。例如,在图15中,程序片段只是跳跃命令,而在图16中,进一步插入了构成对象程序TP的命令。在图16所示的示例中,HDD 107中的对象程序TP的地址4和5处的命令被移动到地址8和9。另外,对象程序TP的地址6和7处的命令被移动到地址15和16 ;并且地址 1至3处的命令保持原样。在修改之前,地址3处的命令“Z = X+Y”是在地址2处的命令“Y = X+8”之后被执行的。由于地址4 (地址3后的地址)处命令的被移动到了地址8,所以Goto语句“GotoS ” 被生成。安全模块110将地址3、地址3处的命令“Ζ = X+Y”和所生成的Goto语句“GotoS” 关联起来并存储到表。这样,不仅仅是跳跃命令,通过使程序片段复杂化,可以促进安全性的提高。图17A示出了对构成对象程序TP的命令加密的示例。在图17A所示的示例中,安全模块110利用加密/解密密钥Kl至K4对对象程序TP (修改前)的地址4至7处的命令加密。接下来,安全模块110在经加密的命令之前插入指令从安全模块110读取的READ命令和解密命令,由此地址按插入的命令的数目被向下移位。例如,地址4处的命令“Y = Y+1”被利用加密/解密密钥Kl来加密并被写入到地址6。在已变空的地址4处,插入了指令从安全模块110读取的READ命令,并且在地址5处插入解密命令。随后,安全模块110把用于对对象程序TP(修改前)中的命令加密的密钥和为经加密的命令插入的READ命令的地址关联起来并且存储到表。例如,安全模块110把用于对在地址6处写入的经加密的命令El (Y = Y+1)加密的加密/解密密钥Kl和由于经加密的命令Ε1 (γ = γ+1)的生成而插入READ命令的地址4关联起来并存储到表。然后,安全模块110将该表存储到RAM 204或闪存206并且将经修改的对象程序 TP写入到扫描区域。当对象程序TP (修改后)被执行时,由于插入的READ命令,加密/解密密钥被读取,并且由于解密命令(下一命令),经加密的命令被解密,从而使得经解密的命令能够被执行。例如,如果地址4具有READ命令,则安全模块110参考该表并且将加密 /解密密钥Kl传递给处理器101。处理器101利用加密/解密密钥Kl并且遵从地址5处的解密命令,对经加密的命令El (Y = Y+1)解密并将命令“Y = Y+1”写入到地址6,由此在地址6处,命令“Y = Y+1”被执行。从而,即使要扫描的程序的一部分被加密,通过从安全模块110获取解密密钥,处理也可以继续。图17B是对构成对象程序TP的一组命令加密的示例。在图17B所示的示例中,安全模块110将对象程序TP (修改前)的地址4至7处的命令替代为指令从安全模块110读取的READ命令,例如将地址4处的命令“Y = Y+1”替代为READ命令。安全模块110在地址5(下一地址)处插入指令“写入遵照地址4处的命令从安全模块110读取的命令“Y = Y+1””的命令。随后,安全模块110把被替代的命令和相应的地址关联起来并存储到表。例如,安全模块110在表中把经历替代的地址4及其命令“Y = Y+1”关联起来。然后,安全模块110将该表存储到RAM 204或闪存206并且将经修改的对象程序 TP写入到扫描区域。当对象程序TP (修改后)被执行时,遵照替代的READ命令,处理器101 读出替代前的原始命令。例如,处理器101遵照地址4处的READ命令从安全模块110读出并执行命令“Y = Y+1”。图18是对象程序TP修改处理的流程图。如图所示,安全模块110从HDD 107读取经加密的对象程序E(TP)(步骤S1801)并且对经加密的对象程序E(TP)解密(步骤S1802)。 如果对象程序TP在HDD 107中未被加密,则只是从HDD 107读取对象程序TP。安全模块110为对象程序TP随机地确定修改方法(步骤S1803)。例如,安全模块 110从“混淆”、“加密”(参见图17)、“打乱”(参见图16和17)以及“不进行任何操作”之中确定修改方法。如果修改方法是“混淆”(步骤S1804 是),则安全模块110从对象程序TP规定要混淆的范围(步骤S180O,对规定的范围内的(一个或多个)命令进行混淆(步骤S1806), 并且返回到步骤S1803。在步骤S1804,如果修改方法不是“混淆”(步骤S1804 否),则安全模块110判断修改方法是否是“加密”(步骤S1807)。如果修改方法是“加密”(步骤S1807 是),则安全模块110从对象程序TP规定经历加密的范围(步骤S1808)并且对该范围内的(一个或多个)命令进行加密(步骤S1809),此时,如图17所示,经历加密的地址和用于对该地址处经加密的命令解密的解密密钥被关联起来并保存在表中。随后,安全模块110返回到步骤 S1803。在步骤S1807,如果修改方法不是“加密”(步骤S1807 否),则安全模块110判断修改方法是否是“打乱”(步骤S1810)。如果修改方法是“打乱”(步骤S1810 是),则安全模块110执行打乱处理(图19),并且在打乱处理之后(步骤S1811),返回到步骤S1803。在步骤S1810,如果修改方法不是“打乱”(步骤S1810 否),则安全模块110判断修改是否已结束(步骤S1812)。例如,在此示例,假定修改方法被随机地确定为“不进行任何操作”,那么如果修改一次也没被执行,则修改不被结束(步骤S1812 否),在此情况下安全模块110返回到步骤S1803。如果修改被执行了至少一次或预定次数,则修改被随机地结束(步骤S1812 是)。 在此情况下,经修改的对象程序TP被写入到RAM 103的扫描区域130 (步骤S181!3),从而结束修改处理。图19是图18所示的打乱处理(步骤S1811)的流程图。这里,作为示例,将描述图15所示的打乱。安全模块110在安全模块110中确立修改目的地区域(步骤S1901)并且将对象程序TP分成多个命令组(步骤S1902)。安全模块110将开头命令组设定为要打乱的命令组(步骤S1903)。安全模块110 判断在要打乱的命令组的随后是否有命令组(步骤S1904)。如果有随后的命令组(步骤 S1904:是),则安全模块110随机地生成程序片段(例如Goto语句)(步骤S1905)。例如, 安全模块110随机地生成程序片段,从而确立要被打乱的命令组将被放置到的区域。随后,安全模块110将所生成的程序片段的地址设定为要被打乱的命令组的末尾地址的随后的地址(步骤S1906)。安全模块110将该程序片段与写入该程序片段的地址关联起来并添加到表(步骤S1907)。安全模块110在分配给对象程序TP的程序片段的地址处写入用于该程序片段的 READ命令(步骤S1908)。随后,安全模块110在该程序片段所规定的地址处(如果程序片段是“GotoS”,则在地址“8”处)将随后的命令组设定为要打乱的命令组(步骤S1909),并且返回到步骤S1904。在步骤S1904,如果没有随后的命令组(步骤S1904 否),则安全模块110结束打乱处理并且返回到步骤S1803。这样,通过修改对象程序TP,安全性可得以加强,甚至对抗对对象程序TP的破解。 上述修改处理在每次经加密的对象程序TP被读取时被执行,并且在每次执行时,对象程序 TP修改方法变化,由此使得破解器更难以分析对象程序TP。另外,如果扫描程序SP按随机的间隔或者周期性地对扫描区域130进行扫描,则在扫描程序SP被更新前,修改程序PP随机地写入数据和/或代码到扫描区域130。在更新前,通过在修改后利用扫描程序SP扫描,扫描程序SP的适当操作可不断被确认。图20A至20C示出了对象程序TP的修改的示例。在图20A中,示出了如下示例 对象程序TP的地址1至4处的命令被混淆并且NOP被添加到地址5至7。在图20B中,示出了如下示例地址1至4处的命令保持原样并且命令被添加到地址5至7,然而结果是相同的。在图20C中,示出如下示例地址1至4处的命令保持原样,并且由于无意义的命令被添加到地址5至7,因此结果相同。从而,在图20的左侧的对象程序TP被扫描后,对象程序TP如图20的右侧所示被修改,并且在扫描程序SP的更新之前,经修改的对象程序TP被扫描,由此扫描程序SP的适当操作可不断被确认。如上所述,根据实施例,即使在接口不支持硬件扫描的情况下,也实现了不容易被破解器禁用的扫描。尤其,通过提高更新扫描程序SP的频率,可进一步加强安全性。另外, 由于在每次对象程序TP被写入到扫描区域130时对象程序TP被修改,因此安全性可得到进一步加强。在实施例中,虽然说明了安全模块110通过USB连接而连接到能够进行PCI (或 PCIe)连接和USB连接的信息处理装置100的示例,但构造并不限于USB而是可以与除USB 标准以外的标准兼容。另外,当要对开放体系结构PC的软件保证安全性(保护数字AV信息免遭窃取) 时,例如当通过数字广播或宽带互联网来传送数字AV信息、游戏软件和应用时,可以使用实施例。
这里记载的所有示例和条件性语言是用于教导目的的,以便帮助读者理解本发明和发明人为了推进技术而贡献的思想,并且应当被解释为不限于这种具体记载的示例和条件,而且说明书中对这种示例的组织也不涉及对本发明的优势和劣势的示出。虽然已详细描述了本发明的实施例,但应当理解,在不脱离本发明的精神和范围的情况下可对其进行各种改变、替代和更改。
权利要求
1.一种安全模块,包括生成单元,该生成单元执行生成扫描程序的生成处理并且还执行随机更新所述扫描程序的内容的更新处理,其中所述扫描程序使得生成对象程序所特有的代码的扫描处理在连接的设备处被执行;存储设备,该存储设备中存储有所述对象程序所特有的代码;以及认证单元,如果所述扫描程序被所述连接的设备执行并且是针对在所述连接的设备中的指定存储区域处存储的所述对象程序执行的,则所述认证单元基于所述存储设备中存储的所述特有的代码和在所述连接的设备处执行的所述扫描程序的执行结果来认证在所述指定存储区域处存储的所述对象程序的有效性。
2.根据权利要求1所述的安全模块,其中,所述安全模块具有禁止在内部存储的信息被从外部参考的结构。
3.根据权利要求1所述的安全模块,其中,所述生成单元周期性地执行所述更新处理。
4.根据权利要求1所述的安全模块,其中,所述生成单元按随机的间隔执行所述更新处理。
5.根据权利要求1所述的安全模块,其中,作为所述更新处理,所述生成单元使所述扫描程序的命令混淆。
6.根据权利要求1所述的安全模块,其中,作为所述更新处理,所述生成单元改变由所述扫描程序规定的、在所述指定存储区域中要扫描的地址。
7.根据权利要求1所述的安全模块,其中,作为所述更新处理,所述生成单元改变在所述扫描程序的命令组中规定的、在所述指定存储区域中要扫描的地址的顺序。
8.根据权利要求1所述的安全模块,其中,作为所述更新处理,所述生成单元改变基于所述扫描程序中的命令所规定的数据的计算命令的内容;把由于改变后的计算命令获得的计算结果存储到所述存储设备;并且添加用于将所获得的计算结果返回给所述安全模块的命令。
9.根据权利要求1所述的安全模块,其中,作为所述更新处理,所述生成单元把所述扫描程序中的命令改变成依赖于在所述连接的设备中存储所述扫描程序的地址的命令。
10.根据权利要求1所述的安全模块,其中,作为所述更新处理,所述生成单元在保持生成与所述特有的代码相同的代码的同时随机地生成具有不同的记述内容的扫描程序。
11.根据权利要求10所述的安全模块,其中,所述生成单元周期性地执行所述生成处理。
12.根据权利要求10所述的安全模块,其中,所述生成单元按随机的间隔执行所述生成处理。
13.根据权利要求1所述的安全模块,还包括修改单元,该修改单元把所述对象程序修改成具有不同的记述内容和相同的功能的程序代码,其中经修改的对象程序所特有的代码被写入到所述存储设备,覆盖现有的特有代码。
14.根据权利要求13所述的安全模块,其中,所述修改单元使所述对象程序中的命令混淆。
15.根据权利要求13所述的安全模块,其中,所述修改单元打乱所述对象程序中的命令;把将规定跳跃到的地址的跳跃命令与该跳跃命令的地址关联起来的表存储到所述存储设备;把打乱后的对象程序中的跳跃命令的内容改变成对于所述表的读取命令;并且把包括所述读取命令的对象程序写入到所述指定存储区域。
16.根据权利要求13所述的安全模块,其中,所述修改单元打乱所述对象程序中的命令;把将规定跳跃到的地址的跳跃命令、跳跃源命令与该跳跃源命令的地址关联起来的表存储到所述存储设备;把打乱后的对象程序中的跳跃源命令的内容改变成对于所述表的读取命令;并且把包括所述读取命令的对象程序写入到所述指定存储区域。
17.根据权利要求13所述的安全模块,其中,所述修改单元把所述对象程序中的给定命令替代为作为被加密的所述给定命令的经加密命令、指令从所述安全模块读取的读取命令、以及指令对所述经加密命令解密的解密命令;把将所述读取命令的地址与对所述经加密的命令解密的解密密钥关联起来的表存储到所述存储设备;并且把经修改的对象程序写入到所述指定存储区域。
18.根据权利要求13所述的安全模块,其中,所述修改单元把所述对象程序中的给定命令替代为指令从所述安全模块读取的读取命令;把将所述读取命令的地址与替代前的所述给定命令关联起来的表存储到所述存储设备;并且把经修改的对象程序写入到所述指定存储区域。
19.根据权利要求13所述的安全模块,其中在所述连接的设备处对所述扫描程序的执行期间,所述修改单元把所述对象程序修改成具有不同的记述内容和相同的功能的程序代码,并且经修改的对象程序所特有的代码被写入到所述存储设备,覆盖现有的特有代码。
20.一种信息处理装置,包括处理器存储器;以及安全模块,包括生成单元,该生成单元执行生成扫描程序的生成处理并且执行随机更新所述扫描程序的内容的更新处理,其中所述扫描程序使得生成对象程序所特有的代码的扫描处理被所述处理器执行;存储设备,该存储设备中存储有所述对象程序所特有的代码;以及认证单元,如果所述扫描程序针对在所述存储器中的指定存储区域处存储的所述对象程序执行,则所述认证单元基于所述存储设备中存储的所述特有的代码和所述扫描程序的执行结果来认证在所述指定存储区域处存储的所述对象程序的有效性。
全文摘要
本发明提供了安全模块和信息处理装置。安全模块包括生成单元,该生成单元执行生成扫描程序的生成处理并且还执行随机更新所述扫描程序的内容的更新处理,其中所述扫描程序使得生成对象程序所特有的代码的扫描处理在连接的设备处被执行;存储设备,该存储设备中存储有所述对象程序所特有的代码;以及认证单元,如果所述扫描程序被所述连接的设备执行并且是针对在所述连接的设备中的指定存储区域处存储的所述对象程序执行的,则所述认证单元基于所述存储设备中存储的所述特有的代码和在所述连接的设备处执行的所述扫描程序的执行结果来认证在所述指定存储区域处存储的所述对象程序的有效性。
文档编号G06F21/00GK102375948SQ20111013524
公开日2012年3月14日 申请日期2011年5月18日 优先权日2010年8月10日
发明者吉武敏幸, 小桧山清之, 川上达郎, 高楠昌和 申请人:富士通半导体股份有限公司, 富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1