CN102375948B - 安全模块和信息处理装置 - Google Patents
安全模块和信息处理装置 Download PDFInfo
- Publication number
- CN102375948B CN102375948B CN201110135244.7A CN201110135244A CN102375948B CN 102375948 B CN102375948 B CN 102375948B CN 201110135244 A CN201110135244 A CN 201110135244A CN 102375948 B CN102375948 B CN 102375948B
- Authority
- CN
- China
- Prior art keywords
- security module
- object program
- scanning sequence
- address
- order
- 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.)
- Active
Links
- 230000003750 conditioning effect Effects 0.000 title claims abstract description 20
- 238000000034 method Methods 0.000 claims abstract description 94
- 230000008569 process Effects 0.000 claims abstract description 78
- 230000015572 biosynthetic process Effects 0.000 claims abstract description 4
- 230000008859 change Effects 0.000 claims description 22
- 230000015654 memory Effects 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 238000010276 construction Methods 0.000 description 4
- 101100490563 Caenorhabditis elegans adr-1 gene Proteins 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000009191 jumping Effects 0.000 description 3
- 101100388220 Caenorhabditis elegans adr-2 gene Proteins 0.000 description 2
- 239000011248 coating agent Substances 0.000 description 2
- 238000000576 coating method Methods 0.000 description 2
- FTGYKWAHGPIJIT-UHFFFAOYSA-N hydron;1-[2-[(2-hydroxy-3-phenoxypropyl)-methylamino]ethyl-methylamino]-3-phenoxypropan-2-ol;dichloride Chemical compound Cl.Cl.C=1C=CC=CC=1OCC(O)CN(C)CCN(C)CC(O)COC1=CC=CC=C1 FTGYKWAHGPIJIT-UHFFFAOYSA-N 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 230000003014 reinforcing effect Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/54—Monitoring 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 adding security routines or objects to programs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/414—Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
- H04N21/4143—Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a Personal Computer [PC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/418—External card to be used in combination with the client device, e.g. for conditional access
- H04N21/4181—External card to be used in combination with the client device, e.g. for conditional access for conditional access
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/45—Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
- H04N21/462—Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
- H04N21/4627—Rights management associated to the content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/8166—Monomedia components thereof involving executable data, e.g. software
- H04N21/8173—End-user applications, e.g. Web browser, game
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/109—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by using specially-adapted hardware at the client
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2153—Using hardware token as a secondary aspect
Abstract
本发明提供了安全模块和信息处理装置。安全模块包括:生成单元,该生成单元执行生成扫描程序的生成处理并且还执行随机更新所述扫描程序的内容的更新处理,其中所述扫描程序使得生成对象程序所特有的代码的扫描处理在连接的设备处被执行;存储设备,该存储设备中存储有所述对象程序所特有的代码;以及认证单元,如果所述扫描程序被所述连接的设备执行并且是针对在所述连接的设备中的指定存储区域处存储的所述对象程序执行的,则所述认证单元基于所述存储设备中存储的所述特有的代码和在所述连接的设备处执行的所述扫描程序的执行结果来认证在所述指定存储区域处存储的所述对象程序的有效性。
Description
技术领域
这里论述的实施例涉及保护信息的安全模块和信息处理装置。
背景技术
随着宽带互联网和数字广播变得更普遍,确保所递送的内容(主要是数字视听(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、存储器(RAM103、ROM104)、显示器105、南桥106、硬盘驱动器(HDD)107、通信接口(I/F)108、输入设备109和安全模块110,它们分别通过总线相连。
处理器101控制信息处理装置100并执行计算处理。北桥102连接到处理器101、存储器、显示器105和南桥106并且形成它们之间的桥接器。RAM103是用作处理器101的工作区域的主存储器。ROM104是其中存储有程序和数据的非易失性存储器。显示器105例如显示诸如文本、图像、功能信息等等的数据,并且还显示显示光标、图标和/或工具框。
南桥106连接到北桥102、HDD107、通信I/F108、输入设备109和安全模块110并且形成它们之间的桥接器。HDD107在处理器101的控制下是控制对内部硬盘的数据读取和写入的驱动装置。
通信I/F108是一接口,其在南桥106的控制下能够通过通信线路连接到诸如局域网(LAN)、广域网(WAN)和互联网之类的网络。通信I/F还是能够接收数字广播波的接口。
输入设备109是用于输入文本、数字、各种指令等等的装置并且例如可以是键盘、鼠标、触摸面板等等。来自输入设备109的输入数据经由南桥106和北桥102被发送到处理器101,并且被处理器101处理。
安全模块110是防止内部存储的信息被外部设备参考的构造的大规模集成电路(LSI),并且是防止从外部设备观看并且还防止对内部数据的篡改的硬件。安全模块110例如具有抗篡改模块(TRM)构造。
TRM构造是用于在物理上和逻辑上进行保护以对抗内部半导体(在此情况下是安全模块110)分析和篡改的构造。例如,在安全模块110中,内部被涂覆以极强力且粘性的涂层,其中如果该涂层的表面被去除,则内部电路完全毁坏,或者在安全模块110中布置有虚拟布线(dummywiring)。
安全模块110具有如下功能:从HDD107读出要监视的软件(对象程序)、生成/更新扫描对象程序的扫描程序、在RAM103上实现对象程序和/或扫描程序、加密、以及解密。安全模块110经由南桥106中的USB控制器和USB总线111可通信地连接。安全模块110可被内置在信息处理装置100中或者可设在外部。
图2示出了安全模块110的硬件构造的框图。安全模块110包括处理器201、USB I/F202、加密电路203、RAM204、ROM205以及闪存206。
处理器201执行安全模块110的内部控制和计算处理。USB I/F202经由USB总线111连接到南桥106中的USB控制器并且执行通信。加密电路203对数据和程序加密,并且对加密的数据和程序解密。
RAM204是用作处理器201的工作区域的主存储器。ROM205是其中存储有程序和数据的非易失性存储器。闪存206是使能改写存储的数据和程序的非易失性存储器。
将描述信息处理装置100的操作的概要。在本实施例中,保护信息处理装置100上的软件免遭改写的安全模块110通过不能进行硬件扫描的USB接口连接到信息处理装置100。因此,当安全模块110(经由USB接口)正常请求USB兼容软件(通常是“驱动器”)对存储器中的区域进行扫描时,该USB兼容软件被破解。
例如,USB兼容软件被破解,返回表明改写没有发生的结果,尽管信息处理装置100上的软件已被改写。从而,扫描功能可能不会有效地操作,由此在本实施例中,以下处理被执行。
图3示出了信息处理装置100的操作的示例性概要。在本实施例,安全模块110获取被加密并存储在HDD107中的对象程序(经加密的对象程序E(TP))并且使用加密电路203来将经加密的对象程序E(TP)解密成对象程序TP。随后,安全模块110把经解密的对象程序TP写入到RAM103中的扫描区域130。对象程序TP可被保存在安全模块110中。
如果存储在HDD107中的程序未被加密,则所获取的对象程序TP在不被安全模块110解密的情况下被存储到RAM103的扫描区域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并且更新扫描结果R1。扫描结果R1被存储到RAM204或闪存206,并且是对象程序TP所特有的代码。
(3)扫描程序SP请求驱动器131使处理器101在RAM103上的不会被扫描的区域处提供布置。结果,驱动器131使得处理器101把从安全模块110发送来的扫描程序SP存储到RAM103上的不会被扫描的区域。
(4)被存储到RAM103的扫描程序SP使得处理器101对扫描区域130中的对象程序TP进行扫描。扫描结果R2经由驱动器131被报告给安全模块110。
(5)安全模块110接收从驱动器131发送来的扫描结果R2。当接收到扫描结果R2时,认证程序AP使得处理器201比较在安全模块110中保存的扫描结果R1和所接收的扫描结果R2的一致性。
如果扫描结果R1和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的执行的示例。在RAM103的扫描区域130中,内容密钥解密程序401、内容解密程序402和内容处理程序403被实现为对象程序TP。通过诸如互联网之类的网络、利用广播波、或者从HDD107,安全模块110获取经加密的内容(经加密的内容E(412))和经加密的内容密钥(经加密的内容密钥E(411)),并且内容密钥解密程序401对经加密的内容密钥E(411)解密。
内容解密程序402使用经解密的内容密钥411并且对经加密的内容E(412)解密。经加密的内容412被内容处理程序403进行给定的处理(例如MPEG解码)并且经处理的内容被显示在显示器105上。
图5至8示出了扫描程序SP的示例。在图5至8中,为了易于理解,示出了简单的扫描程序SP。另外,在图5至8中,“laddr_XX”指示地址,例如与扫描区域130相对应的逻辑地址。
图5示出了执行对象程序TP的扫描的扫描程序SP。例如,在laddr_11如果存储“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)×5=475。在地址9处的步骤中,地址8的计算结果“475”被写入到laddr_1011,并且在地址10处的步骤中,laddr_1011处的内容“475”被报告给安全模块110。
安全模块110也保存先前扫描的扫描结果。如果所报告的扫描结果与所保存的扫描结果一致,则没有发生篡改。另一方面,如果扫描结果不一致,则发生了篡改,并且对象程序TP的执行被结束。
图6示出了把扫描程序SP中的地址1至5处的步骤中读取值的扫描地址从laddr_11至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的扫描结果R1和被信息处理装置100的处理器101执行的扫描程序SP的扫描结果R2一致,则对象程序TP没有被篡改,并且可以确认扫描程序SP位于指定的位置处。
相反,如果结果不一致,则扫描程序SP可能被故意保存在了另外的位置,由此,在这种情况下,对象程序TP因为扫描结果的差异而被结束。
这样,如果扫描程序SP所在的存储器逻辑地址不同,则扫描结果变化并且扫描程序SP被写入到与假定的不同的存储器逻辑地址,由此难以通过操作分析来进行破解。
图9是扫描程序生成/更新处理的流程图。扫描程序生成/更新处理是当安全模块110的处理器201执行生成程序GP时执行的处理。
安全模块110等待给定的时段逝去(步骤S901:否)。例如,由已写入到RAM103的扫描区域130的对象程序TP的执行的开始所触发,该给定时段的定时开始。该给定时段如上所述是若干毫秒到若干分钟的间隔,并且可在若干毫秒到若干分钟的范围内随机设定。
当该给定时段已逝去时(步骤S901:是),安全模块110判断扫描程序SP的生成是否已经完成(步骤S902)。如果生成尚未完成(步骤S902:否),则安全模块110执行扫描程序生成处理(图10至11)(步骤S903)并且将所生成的扫描程序SP写入到RAM103上的不会被扫描的区域(步骤S904)。
随后,安全模块110利用所生成的扫描程序SP扫描对象程序TP,将扫描结果保存在安全模块110中(例如RAM204、闪存206)(步骤S905),并且返回到步骤S901。
在步骤S902,如果扫描程序SP的生成已完成(步骤S902:是),则安全模块110判定是新生成扫描程序SP还是更新已生成的扫描程序SP(步骤S906)。如果要新生成扫描程序SP(步骤S907:新生成),则安全模块110进到步骤S903。如果要更新扫描程序SP(步骤S907:更新),则安全模块110执行扫描程序更新处理(图12至13)(步骤S908),并且将经更新的扫描程序SP写入到RAM103上不会被扫描的区域(步骤S904)。
随后,安全模块110利用经更新的扫描程序SP扫描对象程序TP,将扫描结果保存在安全模块110中(例如RAM204、闪存206)(步骤S905),并且返回到步骤S901。
在由于对象程序TP的结束(这是启动的动力)而从扫描区域130删除对象程序TP后,安全模块110结束扫描程序生成/更新处理。
图10是图9所示的扫描程序生成处理(步骤S903)的前一半的示例的流程图。安全模块110在安全模块110外部的RAM103中确立扫描区域130[As,Ae]和写入区域[Bs,Be](步骤S1001)。所确立的扫描区域130[As,Ae]可具有与对象程序TP的大小相当的大小或者可以具有与对象程序TP的一部分相当的大小。。
另外,如果扫描区域130具有与对象程序TP的一部分相当的大小,则每次扫描程序生成处理被执行时,扫描区域130[As,Ae]具有不同的范围。例如,每次扫描程序生成处理被执行时,扫描区域130[As,Ae]被移位。
安全模块110在安全模块110的RAM204(或闪存206)中确立比扫描区域130大的存储器区域[Ms,Me](确立模块区域)(步骤S1002)。安全模块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(步骤S1101),并且判断Mi>Me-2是否为真(步骤S1102)。
如果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不为真(步骤S1106:否),则安全模块110返回到步骤S1104。另一方面,如果j=y为真(步骤S1106:是),则安全模块110向laddr_Mi写入指令“对laddr_Y1处的内容和laddr_Y2处的内容执行Z1计算,对Z1计算结果和laddr_Y3处的内容执行Z2计算,……,对Z(y-2)计算结果和laddr_Yy处的内容执行Z(y-1)计算”的扫描命令Z(Mi)(步骤S1107)。
安全模块110递增Mi(步骤S1108),向laddr_Mi写入指令“将扫描命令Z(Mi-1)的计算结果写入到laddr_(Bi+1)”的扫描命令(步骤S1109),并且返回到步骤S1101。
在步骤S1102,如果Mi>Me-2为真(步骤S1102:是),则安全模块110向laddr_Mi写入指令“将laddr_(Bi+1)处的内容报告给安全模块110”的扫描命令(步骤S1110),并且进到步骤S904。根据扫描程序处理(步骤S903),扫描程序SP可被周期性地(或者按随机的间隔)随机生成。
图12是扫描程序更新处理(步骤S908)的示例的流程图。安全模块110随机地确定更新的内容(步骤S1201)。这里,更新的内容例如是“混淆”、“改变扫描区域”、“改变扫描地址的顺序”、“额外的扫描结果计算”、“扫描程序SP地址添加”、“不进行任何操作”,等等。
参考图12来描述“混淆”、“扫描区域的改变”和“扫描地址的顺序的改变”的顺序改变。另一方面,参考图13来描述“额外的扫描结果计算”、“扫描程序SP地址添加”和“不进行任何操作”。在扫描程序更新处理中,执行这6个更新中的至少一个(除“不进行任何操作”以外)即可。
如图12所示,安全模块110判定随机确定的更新的内容是否是“混淆”(步骤S1202)。混淆是通过使命令复杂化来使得对一个命令或一组命令的译解困难的方法,例如将一命令替换为“操作相同,但处理细节是不同的程序代码”的命令。例如,对于单个命令,命令“X=1+Y”被更新为“X=10-9+2Y-Y”。另外,命令“X=1+Y”和“Z=X+50”被更新为命令“X=26+Y”和“Z=X+25”。
虽然更新后的命令执行的操作与更新前的相同,但程序代码不同,由此更新前后的生成程序GP具有“相同的操作,但处理细节是不同的程序代码”。即使破解器查看了生成程序GP代码,生成程序GP的程序代码在每次更新时也是不同的,从而使得分析困难,并且还有一个优点是破解器无法得知生成程序GP的哪个部分包括重要代码。
如果更新是通过“混淆”进行的(步骤S1202:是),则安全模块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规定要经历计算的地址(步骤S1302)并且随机地确定计算方法(步骤S1303)。这里,计算方法是针对经历计算的地址处的数据的算术运算和/或逻辑运算、对每个数据项的校验和计算和/或利用散列函数进行的散列值计算。
安全模块110向经历更新的扫描程序SP添加指令“使用计算地址处的数据并执行在步骤S1303确定的计算方法”的扫描命令(步骤S1304)。另外,安全模块110向经历更新的扫描程序SP添加指令“向安全模块110报告通过额外的扫描命令获得的计算结果”的扫描命令(步骤S1305),并且返回到步骤S1201。
在步骤S1201,如果更新不是通过“额外的扫描结果计算”进行的(步骤S1301:否),则安全模块110判断更新是否是通过“扫描程序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个地址每个处的命令,例如包括子程序P1至P5,根据地址adr1至adr5按子程序P1至P5的顺序被执行,并且因此按照地址adr1至adr5的执行顺序被顺序地在HDD107中存储为逻辑地址。
布置顺序,即对象程序TP的地址(子程序P1至P5),被修改程序PP重布置。在图14中,地址adr1被修改为子程序P1,地址adr2被修改为子程序P4,地址adr3被修改为子程序P2,地址adr4被修改为子程序P3,并且地址adr5被修改为子程序P5。
在此情况下,在子程序P1、P4和P3之后,额外记述了指令从安全模块110读取的READ命令。指示地址重布置后的关联关系的程序片段被保存在安全模块110中。例如,程序片段pa是跳到地址adr3的Goto语句,其在子程序P1的执行之后被参考。
程序片段pb是跳到地址adr2的Goto语句,其在子程序P3的执行之后被参考。程序片段pc是跳到地址adr5的Goto语句,其在子程序P4的执行之后被参考。程序片段pa至pc是在修改时生成的。扫描结果R1在修改前后保持相同。
图15至17B示出了修改程序PP修改对象程序TP的示例。在图15所示的示例中,HDD107中的对象程序TP的地址3至5处的命令被移动到地址7至9。另外,对象程序TP的地址6和7处的命令被移动到地址15和16;并且地址1和2处的命令保持原样。
在修改之前,地址3处的命令“Z=X+Y”是在地址2处的命令“Y=X+8”之后被执行的。由于地址3处的“Z=X+Y”被移动到了地址7,所以地址3处的内容被改写为程序片段(跳跃命令)“Goto7”。安全模块110在表中将地址3与程序片段“Goto7”关联起来并且存储该表。
类似地,在修改之前,地址6处的命令“Z=5+Z”是在地址5处的命令“Z=Z+1”之后被执行的。由于地址5处的“Z=Z+1”被移动到了地址9并且地址6处的命令被移动到了地址15,所以地址10(地址9后的地址)处的内容被改写为程序片段(跳跃命令)“Goto15”。安全模块110在表中将地址10与程序片段“Goto15”关联起来并且存储该表。
在将对象程序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所示的示例中,HDD107中的对象程序TP的地址4和5处的命令被移动到地址8和9。另外,对象程序TP的地址6和7处的命令被移动到地址15和16;并且地址1至3处的命令保持原样。
在修改之前,地址3处的命令“Z=X+Y”是在地址2处的命令“Y=X+8”之后被执行的。由于地址4(地址3后的地址)处命令的被移动到了地址8,所以Goto语句“Goto8”被生成。安全模块110将地址3、地址3处的命令“Z=X+Y”和所生成的Goto语句“Goto8”关联起来并存储到表。这样,不仅仅是跳跃命令,通过使程序片段复杂化,可以促进安全性的提高。
图17A示出了对构成对象程序TP的命令加密的示例。在图17A所示的示例中,安全模块110利用加密/解密密钥K1至K4对对象程序TP(修改前)的地址4至7处的命令加密。接下来,安全模块110在经加密的命令之前插入指令从安全模块110读取的READ命令和解密命令,由此地址按插入的命令的数目被向下移位。
例如,地址4处的命令“Y=Y+1”被利用加密/解密密钥K1来加密并被写入到地址6。在已变空的地址4处,插入了指令从安全模块110读取的READ命令,并且在地址5处插入解密命令。
随后,安全模块110把用于对对象程序TP(修改前)中的命令加密的密钥和为经加密的命令插入的READ命令的地址关联起来并且存储到表。例如,安全模块110把用于对在地址6处写入的经加密的命令E1(Y=Y+1)加密的加密/解密密钥K1和由于经加密的命令E1(Y=Y+1)的生成而插入READ命令的地址4关联起来并存储到表。
然后,安全模块110将该表存储到RAM204或闪存206并且将经修改的对象程序TP写入到扫描区域。当对象程序TP(修改后)被执行时,由于插入的READ命令,加密/解密密钥被读取,并且由于解密命令(下一命令),经加密的命令被解密,从而使得经解密的命令能够被执行。例如,如果地址4具有READ命令,则安全模块110参考该表并且将加密/解密密钥K1传递给处理器101。处理器101利用加密/解密密钥K1并且遵从地址5处的解密命令,对经加密的命令E1(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将该表存储到RAM204或闪存206并且将经修改的对象程序TP写入到扫描区域。当对象程序TP(修改后)被执行时,遵照替代的READ命令,处理器101读出替代前的原始命令。例如,处理器101遵照地址4处的READ命令从安全模块110读出并执行命令“Y=Y+1”。
图18是对象程序TP修改处理的流程图。如图所示,安全模块110从HDD107读取经加密的对象程序E(TP)(步骤S1801)并且对经加密的对象程序E(TP)解密(步骤S1802)。如果对象程序TP在HDD107中未被加密,则只是从HDD107读取对象程序TP。
安全模块110为对象程序TP随机地确定修改方法(步骤S1803)。例如,安全模块110从“混淆”、“加密”(参见图17)、“打乱”(参见图16和17)以及“不进行任何操作”之中确定修改方法。
如果修改方法是“混淆”(步骤S1804:是),则安全模块110从对象程序TP规定要混淆的范围(步骤S1805),对规定的范围内的(一个或多个)命令进行混淆(步骤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被写入到RAM103的扫描区域130(步骤S1813),从而结束修改处理。
图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在该程序片段所规定的地址处(如果程序片段是“Goto8”,则在地址“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信息、游戏软件和应用时,可以使用实施例。
这里记载的所有示例和条件性语言是用于教导目的的,以便帮助读者理解本发明和发明人为了推进技术而贡献的思想,并且应当被解释为不限于这种具体记载的示例和条件,而且说明书中对这种示例的组织也不涉及对本发明的优势和劣势的示出。虽然已详细描述了本发明的实施例,但应当理解,在不脱离本发明的精神和范围的情况下可对其进行各种改变、替代和更改。
Claims (19)
1.一种安全模块,包括:
生成单元,该生成单元执行生成扫描程序的生成处理并且还执行随机更新所述扫描程序的内容的更新处理,其中所述扫描程序使得生成对象程序所特有的代码的扫描处理在连接的设备处被执行,执行所述生成处理或更新处理的间隔短于破解器进行篡改所需的时间;
存储设备,该存储设备中存储有所述对象程序所特有的代码;以及
认证单元,如果所述扫描程序被所述连接的设备执行并且是针对在所述连接的设备中的指定存储区域处存储的所述对象程序执行的,则所述认证单元基于所述存储设备中存储的所述特有的代码和在所述连接的设备处执行的所述扫描程序的执行结果来认证在所述指定存储区域处存储的所述对象程序的有效性;
其中,所述安全模块具有禁止在内部存储的信息被从外部参考的结构,并且所述生成处理和更新处理在所述安全模块中执行,
所述安全模块与所述连接的设备之间的接口不支持硬件扫描。
2.根据权利要求1所述的安全模块,其中,所述生成单元周期性地执行所述更新处理。
3.根据权利要求1所述的安全模块,其中,所述生成单元按随机的间隔执行所述更新处理。
4.根据权利要求1所述的安全模块,其中,作为所述更新处理,所述生成单元使所述扫描程序的命令混淆。
5.根据权利要求1所述的安全模块,其中,作为所述更新处理,所述生成单元改变由所述扫描程序规定的、在所述指定存储区域中要扫描的地址。
6.根据权利要求1所述的安全模块,其中,作为所述更新处理,所述生成单元改变在所述扫描程序的命令组中规定的、在所述指定存储区域中要扫描的地址的顺序。
7.根据权利要求1所述的安全模块,其中,作为所述更新处理,所述生成单元改变基于所述扫描程序中的命令所规定的数据的计算命令的内容;把由于改变后的计算命令获得的计算结果存储到所述存储设备;并且添加用于将所获得的计算结果返回给所述安全模块的命令。
8.根据权利要求1所述的安全模块,其中,作为所述更新处理,所述生成单元把所述扫描程序中的命令改变成依赖于在所述连接的设备中存储所述扫描程序的地址的命令。
9.根据权利要求1所述的安全模块,其中,作为所述更新处理,所述生成单元在保持生成与所述特有的代码相同的代码的同时随机地生成具有不同的记述内容的扫描程序。
10.根据权利要求9所述的安全模块,其中,所述生成单元周期性地执行所述生成处理。
11.根据权利要求9所述的安全模块,其中,所述生成单元按随机的间隔执行所述生成处理。
12.根据权利要求1所述的安全模块,还包括:
修改单元,该修改单元把所述对象程序修改成具有不同的记述内容和相同的功能的程序代码,其中
经修改的对象程序所特有的代码被写入到所述存储设备,覆盖现有的特有代码。
13.根据权利要求12所述的安全模块,其中,所述修改单元使所述对象程序中的命令混淆。
14.根据权利要求12所述的安全模块,其中,所述修改单元打乱所述对象程序中的命令;把将规定跳跃到的地址的跳跃命令与该跳跃命令的地址关联起来的表存储到所述存储设备;把打乱后的对象程序中的跳跃命令的内容改变成对于所述表的读取命令;并且把包括所述读取命令的对象程序写入到所述指定存储区域。
15.根据权利要求12所述的安全模块,其中,所述修改单元打乱所述对象程序中的命令;把将规定跳跃到的地址的跳跃命令、跳跃源命令与该跳跃源命令的地址关联起来的表存储到所述存储设备;把打乱后的对象程序中的跳跃源命令的内容改变成对于所述表的读取命令;并且把包括所述读取命令的对象程序写入到所述指定存储区域。
16.根据权利要求12所述的安全模块,其中,所述修改单元把所述对象程序中的给定命令替代为作为被加密的所述给定命令的经加密命令、指令从所述安全模块读取的读取命令、以及指令对所述经加密命令解密的解密命令;把将所述读取命令的地址与对所述经加密的命令解密的解密密钥关联起来的表存储到所述存储设备;并且把经修改的对象程序写入到所述指定存储区域。
17.根据权利要求12所述的安全模块,其中,所述修改单元把所述对象程序中的给定命令替代为指令从所述安全模块读取的读取命令;把将所述读取命令的地址与替代前的所述给定命令关联起来的表存储到所述存储设备;并且把经修改的对象程序写入到所述指定存储区域。
18.根据权利要求12所述的安全模块,其中
在所述连接的设备处对所述扫描程序的执行期间,所述修改单元把所述对象程序修改成具有不同的记述内容和相同的功能的程序代码,并且
经修改的对象程序所特有的代码被写入到所述存储设备,覆盖现有的特有代码。
19.一种信息处理装置,包括:
处理器;
存储器;以及
安全模块,包括:
生成单元,该生成单元执行生成扫描程序的生成处理并且执行随机更新所述扫描程序的内容的更新处理,其中所述扫描程序使得生成对象程序所特有的代码的扫描处理被所述处理器执行,执行所述生成处理或更新处理的间隔短于破解器进行篡改所需的时间;
存储设备,该存储设备中存储有所述对象程序所特有的代码;以及
认证单元,如果所述扫描程序针对在所述存储器中的指定存储区域处存储的所述对象程序执行,则所述认证单元基于所述存储设备中存储的所述特有的代码和所述扫描程序的执行结果来认证在所述指定存储区域处存储的所述对象程序的有效性;
其中,所述安全模块具有禁止在内部存储的信息被从外部参考的结构,并且所述生成处理和更新处理在所述安全模块中执行,
所述安全模块与连接的设备之间的接口不支持硬件扫描。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010-179876 | 2010-08-10 | ||
JP2010179876A JP5588781B2 (ja) | 2010-08-10 | 2010-08-10 | セキュアモジュールおよび情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102375948A CN102375948A (zh) | 2012-03-14 |
CN102375948B true CN102375948B (zh) | 2015-09-09 |
Family
ID=45446262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110135244.7A Active CN102375948B (zh) | 2010-08-10 | 2011-05-18 | 安全模块和信息处理装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9177117B2 (zh) |
EP (1) | EP2437196A1 (zh) |
JP (1) | JP5588781B2 (zh) |
KR (1) | KR101337157B1 (zh) |
CN (1) | CN102375948B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8458798B2 (en) * | 2010-03-19 | 2013-06-04 | Aspect Security Inc. | Detection of vulnerabilities in computer systems |
US9268945B2 (en) | 2010-03-19 | 2016-02-23 | Contrast Security, Llc | Detection of vulnerabilities in computer systems |
US20130254906A1 (en) * | 2012-03-22 | 2013-09-26 | Cavium, Inc. | Hardware and Software Association and Authentication |
US9058494B2 (en) | 2013-03-15 | 2015-06-16 | Intel Corporation | Method, apparatus, system, and computer readable medium to provide secure operation |
WO2015060858A1 (en) * | 2013-10-24 | 2015-04-30 | Intel Corporation | Methods and apparatus for protecting software from unauthorized copying |
US9928385B2 (en) * | 2014-08-29 | 2018-03-27 | The Boeing Company | Periodic memory refresh in a secure computing system |
US20160328539A1 (en) * | 2015-05-05 | 2016-11-10 | Nxp B.V. | Obscuring Software Code With Split Variables |
US10068070B2 (en) * | 2015-05-05 | 2018-09-04 | Nxp B.V. | White-box elliptic curve point multiplication |
US10310870B2 (en) * | 2015-08-20 | 2019-06-04 | Appdome Ltd. | Method for creating a revised application by adding code functionality to an existing application executable |
JP6647524B2 (ja) * | 2015-10-27 | 2020-02-14 | 北陽電機株式会社 | エリアセンサ及び外部記憶装置 |
WO2019079504A1 (en) | 2017-10-17 | 2019-04-25 | Appdome Ltd. | AUTOMATED INTEGRATION OF MOBILE APPLICATIONS |
JP7084273B2 (ja) * | 2018-10-10 | 2022-06-14 | 株式会社Nttドコモ | 難読化判定装置 |
US11831631B2 (en) | 2018-11-08 | 2023-11-28 | Appdome Ltd. | Single sign-on for mobile applications using direct brokering for identity authentication |
WO2020097573A1 (en) | 2018-11-08 | 2020-05-14 | Appdome Ltd. | Artificial intelligence mobile integration |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1387238A2 (en) * | 2002-07-30 | 2004-02-04 | Fujitsu Limited | Method and apparatus for reproducing information using a security module |
US7765579B2 (en) * | 2004-09-07 | 2010-07-27 | Greencastle Technology, Inc. | Security deployment system |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4434436A (en) * | 1981-07-13 | 1984-02-28 | Bruce Merrill | Addressable premium channel obfuscation device for cable television systems |
JP3493369B2 (ja) * | 1994-12-13 | 2004-02-03 | 株式会社ルネサステクノロジ | コンピュータ |
JP3627384B2 (ja) * | 1996-01-17 | 2005-03-09 | 富士ゼロックス株式会社 | ソフトウェアの保護機能付き情報処理装置及びソフトウェアの保護機能付き情報処理方法 |
JP4408601B2 (ja) | 2001-12-27 | 2010-02-03 | 富士通株式会社 | 情報再生装置およびセキュアモジュール |
JP4576100B2 (ja) * | 2002-07-30 | 2010-11-04 | 富士通株式会社 | 情報再生装置、セキュアモジュールおよび情報再生方法 |
JP3944069B2 (ja) * | 2002-12-06 | 2007-07-11 | 国立大学法人 奈良先端科学技術大学院大学 | 自己書換え処理追加プログラム、自己書換え処理追加装置及び自己書換え処理追加方法 |
GB2396227B (en) | 2002-12-12 | 2006-02-08 | Messagelabs Ltd | Method of and system for heuristically detecting viruses in executable code |
TWI290439B (en) * | 2005-11-09 | 2007-11-21 | Min-Chieh Su | Mobile communication terminal verification authorization system and method thereof |
FR2877118B1 (fr) * | 2004-10-22 | 2007-01-19 | Oberthur Card Syst Sa | Protection contre les attaques par generation de fautes sur les instructions de saut |
JP4845467B2 (ja) * | 2004-11-08 | 2011-12-28 | 株式会社エヌ・ティ・ティ・ドコモ | デバイス管理装置、デバイス及びデバイス管理方法 |
US20070200661A1 (en) * | 2006-01-30 | 2007-08-30 | Immotec Security Systems Ltd. | Rfid visual based access control |
WO2009008482A1 (ja) * | 2007-07-10 | 2009-01-15 | Nec Corporation | 通信管理システム、通信管理端末、通信管理方法、及び通信管理プログラム |
US8086677B2 (en) * | 2007-07-27 | 2011-12-27 | Research In Motion Limited | Information exchange in wireless servers |
US8396799B2 (en) * | 2007-11-29 | 2013-03-12 | Visa U.S.A. Inc. | Media device payments remote control personalization and protection |
US8561178B2 (en) * | 2007-11-30 | 2013-10-15 | Intel Corporation | Chipset based cheat detection platform for online applications |
EP2161931A1 (en) * | 2008-09-09 | 2010-03-10 | Nagravision S.A. | Method for the allocation and management of subscriptions for the reception of broadcast products |
CA2761889A1 (en) * | 2009-05-13 | 2010-11-18 | Eric Myron Smith | System and method for securely identifying and authenticating devices in a symmetric encryption system |
-
2010
- 2010-08-10 JP JP2010179876A patent/JP5588781B2/ja active Active
-
2011
- 2011-04-26 US US13/094,518 patent/US9177117B2/en not_active Expired - Fee Related
- 2011-04-28 EP EP20110164136 patent/EP2437196A1/en not_active Ceased
- 2011-05-11 KR KR1020110044039A patent/KR101337157B1/ko active IP Right Grant
- 2011-05-18 CN CN201110135244.7A patent/CN102375948B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1387238A2 (en) * | 2002-07-30 | 2004-02-04 | Fujitsu Limited | Method and apparatus for reproducing information using a security module |
US7765579B2 (en) * | 2004-09-07 | 2010-07-27 | Greencastle Technology, Inc. | Security deployment system |
Non-Patent Citations (2)
Title |
---|
《Remote Trust with Aspect-Oriented Programming》;Paolo Falcarin etc.;《ADVANCED INFORMATION NETWORKING AND APPLICATIONS》;20060418;第1卷;第3.2节、第4-6节,图1 * |
Frederick B.Cohen.《OPERATING SYSTEM PROTECTION THROUGH PROGRAM EVOLUTION》.《Computers Security》.1993,第12卷(第6期),第565-584页. * |
Also Published As
Publication number | Publication date |
---|---|
US9177117B2 (en) | 2015-11-03 |
US20120042380A1 (en) | 2012-02-16 |
JP2012038222A (ja) | 2012-02-23 |
JP5588781B2 (ja) | 2014-09-10 |
KR101337157B1 (ko) | 2013-12-26 |
KR20120023505A (ko) | 2012-03-13 |
CN102375948A (zh) | 2012-03-14 |
EP2437196A1 (en) | 2012-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102375948B (zh) | 安全模块和信息处理装置 | |
US9152773B2 (en) | Communication apparatus and secure module including function for disabling encrypted communication | |
CN100424677C (zh) | 保护媒体路径的方法、设备和系统 | |
US8826037B2 (en) | Method for decrypting an encrypted instruction and system thereof | |
EP2518658B1 (en) | Information processing apparatus, secure module, information processing method, and program | |
CN104318135B (zh) | 一种基于可信执行环境的Java代码安全动态载入方法 | |
JP5185271B2 (ja) | デジタルコンテンツの配信制御 | |
US20110271350A1 (en) | method for protecting software | |
US20080025503A1 (en) | Security method using self-generated encryption key, and security apparatus using the same | |
US20110219242A1 (en) | Method and system for managing secure code loading in pc-slave devices | |
CN101523398A (zh) | 用于管理对插件数据文件访问的系统和方法 | |
EP3127037B1 (en) | Protecting an item of software | |
CN104217175A (zh) | 一种数据读写方法和装置 | |
CN115277143B (zh) | 一种数据安全传输方法、装置、设备及存储介质 | |
CN104506504A (zh) | 一种无卡终端涉密信息的安全机制及安全装置 | |
JP4514473B2 (ja) | コンピュータシステム、中央装置及びプログラム実行方法 | |
JP6343869B2 (ja) | 携帯端末装置及び復号処理プログラム | |
CN111190614A (zh) | 一种软件安装的方法及计算机设备 | |
CN1996323B (zh) | 用于再次导入内容的方法和设备 | |
CN107209815A (zh) | 用于使用返回导向编程的代码混淆的方法 | |
US20150039900A1 (en) | Program execution method and decryption apparatus | |
CN112818359B (zh) | 一种文件保护方法及装置 | |
CN103413098B (zh) | 硬件加密方法与系统及其装置 | |
CN115982708A (zh) | 图像处理方法、装置、设备及存储介质 | |
CN109286488B (zh) | Hdcp关键密钥保护方法 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190906 Address after: Kanagawa Patentee after: Fujitsu Ltd. Address before: Kanagawa Co-patentee before: Fujitsu Semiconductor Co., Ltd. Patentee before: Fujitsu Ltd. |