[发明专利]程序混淆装置无效
申请号: | 200780011709.X | 申请日: | 2007-02-06 |
公开(公告)号: | CN101416197A | 公开(公告)日: | 2009-04-22 |
发明(设计)人: | 佐藤太一;浅井理惠子;K·A·尼克尔森 | 申请(专利权)人: | 松下电器产业株式会社 |
主分类号: | G06F21/22 | 分类号: | G06F21/22 |
代理公司: | 永新专利商标代理有限公司 | 代理人: | 杨 谦;胡建新 |
地址: | 日本*** | 国省代码: | 日本;JP |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 混淆 装置 | ||
技术领域
本发明涉及软件保护,尤其涉及程序的混淆。
背景技术
软件保护是指防止软件被篡改、解析、复制等,即,保持软件的机密性。
例如,为了防止复制,有对影像内容等进行加密的技术。但是,加密的程序被使用作为秘密信息的密钥进行了处理,当处理被解析而密钥被非法解析者窃取时,将导致加密后的内容被解密,内容能够自由利用。
此外,还有在图像中嵌入水印来控制复制的技术。但是,当被非法解析者解析了进行这种水印检测的程序的处理/算法时,有可能根据该解析结果制作除去被嵌入到图像中的水印的工具。即,导致对图像数据的复制控制失效,从而能够自由地复制原数据。
由于这样的无法保持软件的机密性的情况会导致对权利者的保护缺失、商业方面损失较大等很多缺陷,因此,期望有使程序的解析变得困难的技术。
应对这种期望,例如在非专利文献1中记述有如下方法:转换程序中包含的秘密信息,使得可通过执行多个程序命令来进行计算,进而将该程序命令扩散到程序中的各种位置,从而使得解析变得困难。
这样的使程序中包含的处理变得复杂、即程序的混淆将会延长程序的解析所需要的时间,结果,具有能够防止程序中包含的秘密信息被解析这样的效果。
非专利文献1:鴨志田、松本、井上、「耐タンパ—ソフトウェアの構成手法に関する考察」、ISEC97—59
但是,这种程序混淆方法有时由于该程序的控制构造而难以变得复杂。
也就说,这是因为,在包括众多分支、循环的控制构造复杂的程序中,到达使用秘密信息的部位的路线(root)将有多个,但是,存在执行时不管通过哪个路线而秘密信息的计算结果都必须相同的限制。
换言之,用于计算秘密信息的处理只能配置在执行时必定通过的路线上。
在该情况下,非法解析者通过重点解析这样的部位例如无分支的程序的入口等,能够比较容易地得到秘密信息。
发明内容
本发明的目的在于,提供一种程序混淆装置,用于生成虽然控制构造复杂但用于使处理变得复杂的程序命令被扩散到较宽范围配置的程序。
为了解决上述课题,本发明的程序混淆装置,根据由多个块构成的对象程序生成混淆程序,其特征在于,上述块是如下命令组,该命令组由具有顺序的多个命令构成,除最初的命令以外执行控制不从其它块转移,除最后的命令以外执行控制不转移到其它块;上述程序混淆装置具有:属性确定单元,对块中的执行控制的入口和出口分别确定属性,进行该确定,使得处于执行控制从一个块的出口转移到其他块的入口的关系中的该出口和该入口成为相同的属性;以及生成单元,对1个或多个块附加进行与该块的入口或出口的属性相对应的处理的1个或多个命令,生成混淆程序。
另外,执行控制是指执行程序时可执行的多个路线的选择控制。
发明效果:
本发明涉及的程序混淆装置具有上述结构,由此,块的出口属性和执行控制从该块转移的转移目的地块的入口属性被设定成相同的属性,能保障在这些块之间交接的处理的内容是转移目的地块的预定处理的内容。
因此,在转移目的地块中,能够根据预定处理的内容进行本块的处理。
此外,也可以是,上述对象程序包括秘密信息,上述程序混淆装置还具有块确定单元,该块确定单元确定包含从上述对象程序根据特定变量的值求出上述秘密信息的命令的块,作为秘密块;1个或多个特定变量和1个或多个其值分别与上述属性相对应,上述生成单元对执行控制转移到上述秘密块的块,附加使特定变量成为与该块的出口属性对应的值的1个或多个命令,生成混淆程序。
由此,块的出口属性和执行控制从该块转移的转移目的地块的入口属性被设定成相同的属性,能保障在这些块之间传送的特定变量的值是转移目的地块的预定值。这是因为特定变量根据属性确定。
因此,即便在执行控制转移到秘密块之前的块内追加了想要使用特定变量的程序命令,只要在相关块的出口中特定变量成为与出口属性对应的值,在秘密块中就能够使用特定变量求出秘密信息。
换言之,由于需要根据特定变量求出秘密信息,因此,只要秘密信息不直接出现在程序中,求出秘密信息的式等就会远离秘密信息的位置,因此难以发现秘密信息的位置,结果,可避免秘密信息被窃取的可能性提高。
此外,也可以是,在执行控制转移到上述秘密块的块存在多个的情况下,上述生成单元对全部该块附加使特定变量成为与该块的出口属性对应的值的1个或多个命令,生成混淆程序。
由此,不管执行时通过哪个路线,在秘密块的入口中特定变量都是预定值,因此,在秘密块中能够使用特定变量求出秘密信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于松下电器产业株式会社,未经松下电器产业株式会社许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200780011709.X/2.html,转载请声明来源钻瓜专利网。