程序变换装置及程序执行装置的制作方法

文档序号:6566612阅读:122来源:国知局
专利名称:程序变换装置及程序执行装置的制作方法
技术领域
本发明涉及用于防止计算机程序的不正当分析、篡改而使程序难读化的 技术,以及保护并执行难读化后的程序的技术。
背,景技术
目前,为了防止计算机程序的不正当分析、篡改,公开有各种使程序难 度化的技术。
如专利文献l中,公开有以如下的方法,即,目的在于提供用于增强软 件的安全性的混乱化技术的、用于使计算机执行的代码混乱化的方法,其包 括选择应该混乱化的代码的子集的阶段,选择应该适用的混乱化变换的阶段 以及适用变换的阶段,变换后的代码具有相对于未变换代码的弱的等价性。
另外,如专利文献2中,公开有以如下的技术,即,以通过相对于库的 认证功能实现与正规库的链接的功能、由此实现防止库的伪造为目的,在具 有动态 链接 库功能的计算机系统中,主程序将认证用数据和键控数据从 认证用函数中包含的数据生成部输入到数据加工部,并且将相同的认证用数 据和键控数据输入到DLL的认证用函数中包含的数据加工部,主程序侧的 数据比较部对从各数据加工部得到的第1和第2加工处理数据进行比较,在 一致的情况下将DLL作为正规的库进行认证的技术。
另外,如专利文献3中,公开有如下的技术,即,以提供可以不会被篡 改程序并且可以进行高效的加密,解密的系统为目的,通过初始程序IP,在 密码吻合时,从信息处理装置向IC卡发送加密后的加/解密处理程序Prl、 Pr2、…,IC卡利用正当使用者的解密密钥对该程序解密后发送回来,信息 处理装置将该程序配置在作业内存区域PA启动并进行数据的加/解密处理。 通过该技术,通常,由于程序被加密所以不能被第三者分析及篡改。正当使 用者完成数据处理后,由于该明文的程序被删除,处理后也不剩留明文的程 序,因此确保程序的安全性。因此在每次加密/解密处理时即使不进行从保 管场所将程序的存储介质取出而设置在信息处理装置上的作业也可以进行
高效的加密作业。
另外,如专利文献4中,公开有如下的技术,SP,以防止由于解密支援 程序的篡改而加密保护的数据不正当外流为目的,接收解密指示的解密装 置,使CPU的动作暂时停止,地址检测部监视CPU的内存读取,取得解密 指示发行的命令代码的保存地址Pr,加密认证部进行加密密钥的认证,解密 支援程序认证部从加密密钥取得验证范围指定(pre、 post),对于从Pr-pre 到Pr+post的区域,计算出利用单向散列函数的消息摘号,将该计算结果与 加密密钥中的消息摘号进行比较,认证解密支援程序的正当性,认证成功时, 数据解密部从加密密钥取得加密的解密密钥,对加密数据进行解密。
专利文献1:日本特表2002-514333号公报
专禾J文献2:日本特开平11-110193号公报
专利文献3:日本特开平9-6232号公报
专利文献4:日本特开平11-39156号公报
如上所述,虽然提出有各种用于程序保护的技术,但是,由于执行程序 的机器具有的安全功能或其强度,例如,防止内存被窥视的功能或使调试等 的分析工具不能用而无效化的功能,由于机器的不同而不同,因此,为了防 止程序的不正当分析或篡改,在使程序难读化的情况下,在安全功能不同的 各机器上,必须对应于机器的安全功能而改变难读化的方法而生成难读化程 序。但是存在如下的问题,即,相对于安全功能或其强度不同的多个装置, 生成分别不同的程序并管理是非常繁杂的。

发明内容
为了解决上述的问题,本发明的目的在于,提供在安全功能及其强度不 同的多个装置中,分别保持适当的安全,生成可执行的仅一个分布式程序的 程序生成单元,执行所述分布式程序的程序执行装置、方法、计算机程序以 及记录介质。
为了达成上述的目的,本发明提供一种程序变换装置,从一个原程序, 生成在具有不同的安全级的多个程序执行装置中执行的仅一个分布式程序,
其特征在于,具有存储单元,存储有由相对于计算机的多个命令构成的原 程序;难读化单元,将所述原程序难读化并生成难读程序;生成单元,对应 于安全级生成表示削弱所述难读程序的难读化的变换的变换信息;以及输出
单元,输出包括所述难读程序和所述变换信息的分布式程序。另外本发明提 供一种程序执行装置,按照分布式程序进行动作,其特征在于,具有存储 单元,存储有通过权利要求1的程序变换装置生成的分布式程序;取得单元, 从所述分布式程序,试着取得对应于自身装置的安全级的变换信息;生成单 元,在可以取得对应于自身装置的安全级的变换信息的情况下,利用取得的 所述变换信息,对所述分布式程序中包含的难读程序,实施削弱难读化的变 换,生成对应于自身装置的安全级的固有程序;以及处理器,按照所生成的 固有程序进行动作。 发明的效果
通过上述构成,分布式程序由于含有难读程序和对应于安全级并削弱所 述难读程序的难读化的变换信息,由程序生成单元仅生成一个分布式程序, 仅由此',在程序执行装置中,可以利用难读程序以及变换信息,生成并利用 对应于自身装置的安全级的固有程序。
在此,可以为如下情况,所述存储单元存储的原程序包含由一个以上的 命令构成的子程序,所述难读化单元包含分割部,将包含在所述原程序中 的所述子程序分割并生成多个部分程序;以及难读化部,分别将所生成的所 述多个部分程序难读化,生成多个难读化部分程序,来作为所述难读程序, 所述生成单元,对表示多个所述部分程序的综合的综合信息加密并生成加密 综合信息,来作为所述变换信息,所述输出单元输出包含多个所述难读化部 分程序以及所述加密综合信息的所述分布式程序。也可以为如下情况,所述 难读化部,分别对所生成的所述多个的部分程序加密,生成多个加密部分程 序,来作为所述多个难读化部分程序,所述输出单元输出包含多个所述加密 部分程,以及所述加密综合信息的所述分布式程序。
另'外,可以为如下情况,所述存储单元存储有通过所述程序变换装置生 成的所述分布式程序,所述取得单元试着对作为所述变换信息的所述加密综 合信息解密,所述生成单元,在可以对所述加密综合信息解密的情况下,对 于由所得到的综合信息表示综合的多个部分程序,将对应的多个加密部分程 序解密,生成多个部分程序,来作为所述固有程序的一部分,所述处理器, 按照包含所生成的多个所述部分程序的所述固有程序进行动作。
通过上述的构成,通过程序生成单元,对多个部分程序的综合信息加密 并生成加密综合信息,通过程序执行装置,若可以对加密综合信息解密并生
成综合ft息,则利用生成的综合信息,可以将多个部分程序综合并利用,因
此可以削减程序执行装置中的解密的次数,减轻该装置的负荷。
在此,所述生成单元,可以利用变换信息密钥,对所述综合信息加密。 另外,可以为如下情况,所述存储单元,存储通过所述程序变换装置生
成的所述分布式程序,所述取得单元,利用变换信息密钥,对所述加密综合
信息解密。
通过该构成,通过程序生成装置,利用变换信息密钥,对综合信息加密, 通过程序执行装置,利用变换信息密钥,对加密综合信息解密,因此,可以 进行控制,以便仅在保持有变换信息密钥的程序执行装置上,综合并利用多 个部分程序。
在此,所述加密部,可以利用程序密钥,对各部分程序加密。
另外,可以为如下情况,所述存储单元,存储通过所述程序变换装置生
成的所述分布式程序,所述生成单元,利用程序密钥,对所述加密程序解密。 通过这样的构成,通过程序生成装置,利用程序密钥,对部分程序加密,
通过程序执行装置,利用程序密钥,对加密部分程序解密,因此,可以进行
控制,以便仅在保持程序密钥变换信息密钥的程序执行装置上,对加密部分
程序解密。
在此,可以为如下情况,所述存储单元存储的原程序包含由一个以上的 命令构成的子程序,所述难读化单元包含分割部,将包含在所述原程序中 的所述子程序分割并生成多个部分程序;以及加密部,分别对所生成的所述 多个部分程序加密,生成多个加密部分程序,来作为所述难读程序,所述生 成单元,利用对应于安全级的安全级密钥,分别对表示多个所述部分程序的
综合的综合信息加密并生成加密综合信息,来作为所述变换信息,所述输出 单元,输出包含多个所述加密部分程序以及所述加密综合信息的所述分布式 程序。'
另外,可以为如下情况,所述存储单元存储通过所述程序变换装置生成 的所述分布式程序,所述取得单元,利用自身装置保持的安全级密钥,试着 对作为所述变换信息的所述加密综合信息解密,所述生成单元,在可以对所 述加密综合信息解密的情况下,对于由所得到的综合信息表示综合的多个部 分程序,将对应的多个加密部分程序解密,生成多个部分程序,来作为所述 固有程序的一部分,所述处理器,按照包含生成的多个的所述部分程序的所
述固有程序进行动作。
通过这样的构成,通过程序生成装置,利用对应于安全级的安全级密钥, 对多个部分程序的综合信息解密并生成加密综合信息,通过程序执行装置, 利用保持的安全级密钥,若可以对加密的综合信息解密并生成综合信息,则 可以利用生成的综合信息,对多个部分程序综合并利用,因此,可以削减程 序执行装置中的解密的次数,减轻该装置的负荷。
在此,可以为如下情况,所述难度化单元,在所述原程序中,插入由冗 余的一个以上的命令构成的冗余块,生成所述难读程序,所述生成单元,对 表示所述分布式程序中的所述冗余块的插入位置的位置信息进行加密并生 成加密位置信息,来作为所述变换信息,所述输出单元,输出包含插入冗余 块的难读程序以及所述加密位置信息的所述分布式程序。
另外,可以为如下情况,所述存储单元存储有通过所述程序变换装置生 成的所述分布式程序,所述取得单元试着对作为所述变换信息的所述加密位 置信息解密,所述生成单元,在可以对所述加密位置信息解密的情况下,在 所述分布式程序中,将由所得到的位置信息表示的位置上保存的命令无效 化,所述处理器按照包含被无效化的命令的所述固有程序进行动作。
通过这样的构成,通过程序生成装置,将冗余块插入,对表示插入位置 的位置信息加密并生成加密位置信息,通过程序执行装置,若可以对加密位 置信息解密并生成位置信息,则利用生成的位置信息,可以将冗余块无效化, 因此,可以减轻程序执行装置中的负荷。
在此,所述生成单元,可以利用变换信息密钥,对所述位置信息加密。
另外,可以为如下情况,所述存储单元,存储有通过所述程序变换装置 生成的所述分布式程序,所述取得单元,利用变换信息密钥,对所述加密位
^通过这样的构成,通过程序生成装置,利用变换信息密钥,对位置信息 加密,通过程序执行装置,利用变换信息密钥,对加密位置信息解密,因此, 可以进行控制,以便仅在保持有变换信息密钥的程序执行装置中,得知位置
在此,可以为如下情况,所述难度化单元,在所述原程序中,插入检测 该原程序的一部分的篡改的检查用程序,生成所述难读程序,所述生成单元, 对包括位置信息以及无效化程序的检查信息加密并生成加密检查信息,来作为所述变换信息,所述位置信息表示所述原程序中的所述检査用程序的插入 位置,所述无效化程序将由所述检査用程序进行的篡改的检测的动作无效, 所述输出单元,输出包含插入检査用程序的难读程序以及所述加密检查信息 的所述分布式程序。
另外,可以为如下情况,所述存储单元,存储有通过所述程序变换装置 生成的所述分布式程序,所述取得单元,试着对作为所述变换信息的所述加 密检査信息解密,所述生成单元,在可以对所述加密检査信息解密的情况下, 在所述分布式程序中,将由所生成的检査信息中包含的位置信息表示的位置 上所保存的命令,置换为所生成的检査信息包含的无效化程序,所述处理器, 按照包含有所述无效化程序的所述固有程序进行动作。
通过这样的构成,通过程序生成装置,插入检查用程序,对表示插入位 置的位置信息以及无效化程序构成的检查信息加密并生成加密检查信息,通 过程序执行装置,若可以对加密检查信息解密并生成位置信息以及无效化程 序,则利用生成的位置信息以及无效化程序,将检査用程序置换为无效化程 序,因此可以减轻程序执行装置中的负荷。
在此,所述生成单元,可以利用变换信息密钥,对所述检査信息加密。
另外,可以为如下情况,所述存储单元,存储有通过所述程序变换装置 生成的所述分布式程序,所述取得单元,利用变换信息密钥,对所述加密检 査信息解密。
通过这样的构成,通过程序生成装置,利用变换信息密钥,对检查信息 加密,通过程序执行装置,利用变换信息密钥,对加密检査信息解密,因此, 可以进行控制以便仅在保持有变换信息的程序执行装置上得知检査信息。
.如上所述,通过本发明的程序生成装置以及程序执行装置,可以对安全 强度不同的机器分布相同的程序。另外,在分布目的地机器中,可以对应于 机器具有的安全强度,利用不同的变换信息,执行不同难读化强度的程序。
附'图说明


图1是表示程序分布系统10的构成的系统构成图。 图2是表示程序变换装置100的构成的框图。 图3是变换信息密钥表格121的数据构造的一例。 图4是原程序130的数据构造的一例。
图5是冗余块16、162、 163、 164、…的数据结构的一例。
图6是原函数信息表格140的数据结构的一例。
图7是分布式程序500的数据结构的一例。
图8是头部510的数据结构的一例。
图'9是新程序530的数据结构的一 例。
图10是加密程序546的数据结构的一例。
图11是变换信息550的数据结构的一例。图12继续。
图12是变换信息550的数据结构的一例。上接图11。
图13是表示程序变换装置100的动作的流程图。图14继续。
图14是表示程序变换装置100的动作的流程图。图15继续。
图15是表示程序变换装置100的动作的流程图。图16继续。
图16是表示程序变换装置100的动作的流程图。图17继续。
图17是表示程序变换装置100的动作的流程图。图18继续。
图18是表示程序变换装置100的动作的流程图。上接图17。
图19是表示便携电话200a的构成的框图。
图.20是变换信息密钥表格261的数据结构的一例。
图21是函数信息281的数据结构的一例。
图22是综合信息301、综合信息302、…冗余信息303、冗余信息304、…
的数据结构的一例。
图23是函数保持部203保持的函数341、函数342、函数343以及函数
344的数据结构的一例。
图24是解密状况表格361的数据结构的一例。
图25是表示通过便携电话200a的分布式程序的执行动作的流程图。
图26是表示通过前处理部204及解密部205加密的函数位置信息和加
密的综合信息的解密动作的流程图。
图27是表示冗余处理部212的动作的流程图。 图28是表示展开部206的动作的流程图。图29继续。 图29是表示展开部206的动作的流程图。上接图28。 图30是表示DVD播放器200b的构成的框图。 图31是表示个人计算机200c的构成的框图。
图32是表示分布式程序的接收时的便携电话200ab的动作的流程图。
图33继续。
.图33表示分布式程序的接收时的便携电话200ab的动作的流程图。上 接图32。
图34是表示由前处理部204进行的函数综合的详细动作的流程图。
图35是表示由便携电话200ab进行的分布式程序的执行动作的流程图。
图36是表示原程序601的数据结构的一例。
图37是表示检査用程序611的数据结构的一例。
图38是表示程序621的数据结构的一例。
图39是表示变换信息块641的数据结构的一例。
图40是表示程序651的数据结构的一例。
图41是表示便携电话200ac中的分布式程序250的执行时的动作的流 程图。
图42是表示设备密钥表格701的数据结构的一例。 图43是表示设备密钥对应表格711的数据结构的一例。 图44是表示加密子模块密钥块721以及加密变换信息密钥块722的数 据结构的一例。
图.45是表示通过程序变换装置100d的难读化部103的加密子模块密钥 块721以及加密变换信息密钥块722的生成动作的流程图。图46继续。
图46是表示通过程序变换装置100d的难读化部103的加密子模块密钥 块721以及加密变换信息密钥块722的生成动作的流程图。上接图45。
图47是表示便携电话200ad中的加密子模块密钥以及加密变换信息密 钥的解密动作的流程图。
符号说明
10程序分布系统
20因特网
30便携电话网
100程序变换装置
101信息存储部
102程序分析部
103难读化部
104控制部
105输入部
106显示部
107冗余处理生成部
109子模块密钥保持部
110变换信息密钥保持部
112通信部
2Q0a便携电话
200b DVD播放器
200c个人计算机
201子模块密钥保持部
202变换信息密钥保持部
203函数信息保持部
203函数保持部
204前处理部
205解密部
206展开部
207程序执行部
208综合信息保持部
209函数信息保持部
210解密状况管理部
211信息存储部
212冗余处理部
221扬声器
222麦克风
223显示部
224输入部
225变换部
226控制部
227通信控制部
228通信部
22'9天线
具体实施方式
l.实施方式
对作为本发明的实施方式的程序分布系统io进行说明。
1.1程序分布系统10的构成
程序分布系统10,如图1所示,具有程序变换装置100、便携电话200a、 DVD播放器200b以及个人计算机200c。
程序变换装置100、 DVD播放器200b以及个人计算机200c分别与因 特网20连接,便携电话200a经由便携电话网30与因特网20连接。
程序变换装置IOO,例如,在音乐再现用的计算机程序即原程序上,实 施难读化的变换处理,生成分布式程序(distribution program)。在本实施 方式的难读化中,将程序内的函数分割为子模块进行加密。程序变换装置 100,将生成的分布式程序经由因特网20以及便携电话网30发送到便携电 话200a,将生成的分布式程序经由因特网20发送到DVD播放器200b以 及个人计算机200c。
便携电话200a、 DVD播放器200b以及个人计算机200c分别按照接收 的分布式程序进行动作,由此进行再现音乐。在该情况下,这些各装置, 只对执行时需要的一部分的子模块进行解密并执行,在执行结束后,重复 将这些子模块从内存中删除的动作。
在通过进行这样的难读化而生成的分布式程序中,明文程序的收集困 难,程序的分析困难。
在此,便携电话200a、 DVD播放器200b以及个人计算机200c的安全 强度彼此不同。便携电话200a、 DVD播放器200b以及个人计算机200c, 对应于各自的机器具有的安全强度利用不同的难读化强度进行分布式程序 的执行。另外,个人计算机200c具有处理性能高的CPU,设为安全强度低 的机器,便携电话200a以及DVD播放器200b具有处理性能低的CPU, 设为安全强度高的机器。
1.2程序变换装置100的构成
程序变换装置IOO,如图2所示,具有信息存储部101、程序分析部 102、难读化部103、控制部104、输入部105、显示部106、冗余处理生成 部107、子模块密钥保持部109、加密部110、变换信息密钥保持部111以
及通信部112。
程序变换装置100,具体地,为具有微处理器、ROM、 RAM、通信单 元、硬盘单元、显示器单元、键盘、鼠标等构成的计算机系统。所述RAM 或所述硬盘单元上存储有计算机程序。通过所述微处理器按照所述计算机 程序进行动作,构成程序变换装置100的各构成要素达成其一部分的功能。
(1) 子模块密钥保持部109以及变换信息密钥保持部111 子模块密钥保持部109,预先存储一个子模块密钥120。在此,自模块
密钥120为加密时利用的密钥信息,为128位长。在此,加密时利用的算 法,作为一例,为密钥加密方式的AES (Advanced Encryption Standard)。
变换信息密钥保持部lll,在图3中,作为一例具有变换信息密钥表格 121。变换信息密钥表格121,作为一例,含有100个密钥信息。各密钥信 息由凌换信息密钥ID和变换信息密钥构成。
变换信息密钥ID为专门识别包含该变换信息密钥ID的密钥信息的识 别信息。
变换信息密钥为在加密时利用的密钥信息,为128位长。在此,在加密 时利用的算法,作为一例,为AES。
如图3所示,变换信息密钥表格121,作为一例,由密钥信息122、 123、 124、…构成。其中,例如,密钥信息122,为变换信息密钥ID125 "001" 和变换信息密钥126 "0xl234546…"。
另外,在本说明书以及附图中,"0xl234546…"等表示接着"0x"的 "123456…"为16进制数的表现。
(2) 信息存储部101
信.息存储部101,如图2所示,具有用于存储原程序130、分布式程序 500、原函数信息表格140、冗余块161、 162、 163、 164、…以及其他的计 算机程序及其他的数据的区域,信息存储部101,预先存储有原程序130 以及冗余块161、 162、 163、 164、。 (a)原程序130
原程序130如图4所示,为用于达成固定的整体功能的计算机程序,具 有函数131以及135。各函数为用于达成所述整体功能中的部分功能的整合 的子程序。函数131具有处理块132、处理块133以及处理块134,函数135 具有处理块136以及处理块137。各处理块为用于达成所述部分功能中的进
一步的一部分功能的程序, 一个以上地组合了表示相对于计算机的指令的命 令代码而构成。
在各函数中,付与了唯一识别该函数的函数名。
(b) 冗余块161、 162、 163、 164、… 图5表示了冗余块161、 162、 163、 164、…的一例。 各冗余块被插入构成原程序130的各处理块内而被利用。 冗余块161、 162、 163、 164、…,由一个以上地组合命令代码而构成。
在被插入构成原程序130的处理块内而被利用的情况下,通过包含在冗余 块内的命令代码的运算,不会对插入目的地的处理块内的演算产生内容性 的影响。
插入有冗余块的原程序130内的处理块,由于含有与该处理块的功能无 关的命令代码,其结果,该处理块的分析困难。
冗余块161,如图5所示,为声明有整数型的变量的命令代码,具体地, 声明有整数型的三个变量"templ"、变量"temp2"、变量"temp3"。这样, 在冗余块161中,声明有预想为在原程序130中不使用的特殊的变量名。
冗余块162定义了利用变量"tempi"、变量"temp2"、变量"temp3" 的运算,由三个算数式构成。在冗余块162中,不使用变量"tempi"、变 量"temp2"、变量"temp3"以外的变量。因此,在冗余块162中定义的运 算不对插入目的地的处理块的运算产生内容性影响。
冗余块163,与冗余块162相同,定义有利用变S"templ"、变量'temp2"、 变量"temp3"的运算,由三个算数式构成。定义在冗余块163中的运算, 与定义在冗余块162中的运算不同。
冗余块164,与冗余块162相同,定义有利用变M" tempi "、变量'temp2"、 变量"temp3"的运算,由三个算数式构成。定义在冗余块164中的运算, 与分别定义在冗余块162及164中的运算不同。
冗余块161,仅含有变量的说明语句,冗余块162、 163、 164分别都不 具有变量的说明语句。因此,例如,冗余块161和162组合,插入到处理 块。另外,其它的组合还有冗余块161和163,再其它的组合还有冗余块 161和164。这些组合插入到处理块中。
(c) 原函数信息表格140
原函数信息表格140,由通过程序分析部102的原程序130的分析而生
成,含有关于包含在原程序130中的函数的信息。
原函数信息表格140,如图6所示的一例,具有原函数合计数141、由
原函数合计数141表示的数的原函数信息142、 143、、 144。 原函数合计数141表示原函数130中包含的函数的合计数。 原函数信息"2、 143、…、144,分别与包含在原函数130中的函数对应。
各原函数信息,具有原函数名、开始位置、结束位置以及处理块数。 原函数名为识别对应于原函数信息的函数的识别名,该原函数信息包含 有该原函数名。
开始位置表示函数的开头位置的、原程序130中的存在位置,该函数与 包含该开始位置的原函数信息对应。
结束位置表示函数的结束位置的、原程序130中的存在位置,该函数与 包含该结束位置的原函数信息对应。
处理块数表示对应于包含该处理块数的原函数信息的函数内的处理块 的数*。
(d)分布式程序500
分布式程序500,为了达成预定的功能,为由表示相对于计算机的指令 的命令代码多个组合而构成的计算机程序,为在原程序130上施以后述的难 读化的变换而生成的计算机程序。
分布式程序500,如图7所示,具有头区域501、程序区域502以及变 换信息区域503,在头区域501上,作为一例保存有图8所示的头部510, 在程序区域502上,作为一例保存有图9所示的新程序530,在变换信息区 域503上,作为一例保存有图11及图12所示的变换信息550。
另外,在后述的难读化的变换结束后,头部510内的一部分的信息、新 程序529内的全部信息以及变换信息550内的一部分信息被加密。例如,新 程序530含有的全部函数,如图10所示,被加密,由多个加密函数构成的 加密程序546保存在程序区域502,以代替新程序530。头部510内加密的 一部分信息、以及变换信息550内加密的一部分信息的详细情况在后面叙 述。
(头部510的数据结构) 头部510,如图8所示,具有分布式程序ID511、版本信息512、函数
信息513以及变换信息位置信息521,函数信息513由函数的个数514、多 个函数位置信息515、 516、…、517构成。另外,各函数位置信息由函数名、 函数开始位置以及函数结束位置构成。
另外,在图8中,被括号符号[]括住的序号,例如"函数位置信息"的 记载后的[#1],说明性地表示多个函数位置信息中,该函数位置信息为第几 个,并不构成数据结构。另外,在图8中,括弧符号()括住的记载事项, 表示该项目的具体例。例如,分布式程序ID511后的(1)表示分布式程序 ID511的具体例为"1"。另外,例如,版本信息512后记载的(1)表示版 本信息512的具体例为"1"。这些表现方法,在本申请的其它附图中,在表 示其它的数据结构的情况下也有采用。
分布式程序ID511为唯一识别分布式程序500的识别信息,版本信息 512为分布式程序500被更新后的情况下的分布式程序为第几代。
函数个数514表示分布式程序500内的程序区域502中保存的新程序 530具有几个函数。
函数信息513含有通过函数个数514表示的数的函数位置信息。函数位 置信息515、 516、…、517,分别与包含在新程序530中的多个函数对应。
函数位置信息中包含的函数名为识别对应于该函数位置信息的函数的 识别名。
包含在函数位置信息中的函数开始位置,为表示对应于分布式程序500 内的该函数位置信息的函数的开头位置的地址。分布式程序500内的位置, 将分布式程序500的开头位置表现为"0"。以下相同。
函数位置信息中包含的函数结束位置表示对应于分布式程序500内的 该函数位置信息的函数的结束位置的地址。
如图8所示,函数的个数514,作为一例,保持有"7"。表示着在分布 式程序500内,作为一例,包含有7个函数。另外,如图8所示,函数位置 信息515,作为一例,包含有函数名518"Methodl"、函数开始位置519"200"、 函数结束位置520 "250"。表示识别对应于函数位置信息515的函数的函数 名为"Methodl",该函数配置在分布式程序500内,从地址"200"表示的 位置开始到地址"250"表示的位置之间。
变换信息位置信息521为表示分布式程序500内的变换信息区域503 的开头位置的地址。
(新程序530的数据结构)
新程序530,如图9所示,作为一例,具有函数530a、 530b、 530c、 530d、 530e、 530f以及530g。
函数530a,如图9所示,具有函数呼出命令531、冗余块532、函数呼 出命令533、冗余块534、函数呼出命令535以及冗余块536。
函数呼出命令为表示执行通过函数名识别的函数的命令代码,该函数名 记载在该函数呼出命令中。
冗余块,如上所述,包含进行运算的命令代码组,该运算不对作为函数 530a的目的的运算产生影响。
函数530b包含处理块538。处理块538含有用于达成预定的功能的命 令代码组。
函数530c以及函数530d分别具有处理块539以及处理块540。处理块 539以及处理块540分别具有用于达成预定的功能的命令代码组。 函数530e包含函数呼出命令544以及545。
函数530f以及函数530g,分别包含处理块542以及处理块543。处理 块542以及处理块543,分别含有用于达成预定的功能的命令代码组。 (加密程序546的数据结构)
力口'密程序546,如图10所示,作为一例,具有加密函数546a、 546b、 546c、 546d、 546e、 546f以及546g。
加密函数546a、 546b、 546c、 546d、 546e、 546f以及546g,分别与图 9所示的函数530a、 530b、 530c、 530d、 530e、 530f以及530g对应,将存 储在子模块密钥保持部109的子模块密钥120作为密钥利用,在530a、530b、 530c、 530d、 530e、 530f以及530g上分别实施AES而生成。
在明文上实施AES生成加密文的情况下,明文的位长和加密文的位长 相同,因此,加密函数546a、 546b、 546c、 546d、 546e、 546f以及546g的 各个位长与函数530a、 530b、 530c、 530d、 530e、 530f以及530g的各个位 长相同。
另外,AES为块加密,因此在加密时,将各函数分解为预定长、这里 为128 ;^长的块,在每个块上实施加密。 (变换信息550的数据结构) 变换信息550,如图11以及图12所示,具有变换信息块数551、变换
信息块552、 553、…、554、 555以及556。
变换信息块数551,表示包含在变换信息550内的变换信息块的数量。 变换信息块有两种。变换信息块552以及553为第一种,变换信息块
554、 555、 556为第二种。第一种变换信息块含有关于原程序130中包含的
函数的分割的信息。另外,第二种变换信息块,含有关于追加插入到原程序
130的冗余块的信息。
<第一种变换信息块>
第一种变换信息块为包含在原程序130的函数,与通过后述的难读化的 变换处理分割为多个函数的情况对应。
变换信息块552具有变换信息尺寸561、变换信息种类562、变换信息 密钥ID563以及综合信息(integration information) 546。另外,变换信息快 553也具有与变换信息块552相同的结构。在此,省略了对变换信息块553 的详细说明。
变换信息尺寸561,表示含有该变换信息尺寸561的变换信息块552的 长度。
变换信息种类562,表示含有该变换信息种类562的变换信息块552为 第一种。具体地,如图11所示,该值为"1"。
变换信息密钥ID563为在对包含该变换信息密钥ID563的变换信息块 552内的综合信息加密时,对应于加密中使用的变换信息密钥的识别符。
综合信息564,为对应于含有该综合信息564的变换信息块552的函数, 对于分割后的情况,含有关于成为分割对象的追加元函数以及分割后的新生 成的追加函数的信息。
综合信息564含有追加元函数565、追加元函数尺寸566、追加信息数 567以及追加信息568、 569以及570。在此,追加信息568、 569以及570, 分别与通过追加元函数的分割而新生成的多个追加函数对应。
追加元函数565为识别成为分割对象的追加元函数的识别名。
追加元函数尺寸566为成为分割对象的追加元函数,表示实施了分割处 理后的尺寸。
追加信息数567表示综合信息564中包含的追加信息的数量。即,与通 过分割而新生成的追加函数的数量相等。
追.加信息568含有追加函数名571及追加函数尺寸572。与追加信息569及570相同,分别具有追加函数名以及追加函数尺寸。
在此,追加函数名为识别对应于含有该追加函数名的追加信息的追加函 数的识别名。
追加函数尺寸表示对应于含有该追加函数尺寸的追加信息的追加函数 的尺寸。
<第二种变换信息块>
第二种变换信息块,与追加插入到原程序130的冗余块对应。
变换信息块554具有变换信息尺寸581、变换信息种类582、变换信息 密钥ID583以及综合信息546。
另'外,变换信息块555及556也具有与变换信息块554相同的数据结构。 在此,省略了对变换信息块555及556的详细说明。
变换信息尺寸581表示含有该变换信息尺寸581的变换信息块554的长度。
变换信息种类582表示含有该变换信息种类582的变换信息块554为第 二种。具体地,如图12所示,该值为"2"。
变换信息密钥ID583为,在对包含该变换信息密钥ID583的变换信息 块554内的冗余信息加密时,对应于加密中使用的变换信息密钥的识别符。
冗余信息584为对应于含有该冗余信息584的变换信息块554的冗余 块,含有关于追加插入到原程序130的冗余块的信息,由函数名585、开始 位置586以及结束位置587构成。
函数名585为识别该冗余块的插入目的地的函数的识别名。
开'始位置586为,通过函数名585识别的函数内,在插入该冗余块的情 况下,表示该函数内的该冗余块的开头位置的地址。
结束位置587为,通过函数名585识别的函数内,在插入该冗余块的情 况下,表示该函数内的该冗余块的最终位置的地址。 (3)程序分析部102
程序分析部102接收来自控制部104的分析原程序130的内容的分析指示。
接收了所述分析指示后,程序分析部102在信息存储部101中确保用于 原函数信息表格140的区域。
接着,程序分析部102,顺序读出构成存储在信息存储部101中的原程序130的命令代码,分析读出的命令代码,査找函数的开始位置和结束位置, 由此,特定出函数。另外,将特定的函数的函数名抽出。特定包含在特定的 函数中的处理快,对该数进行计数。
程序分析部102,相对于该特定的函数,生成由识别该函数的识别名即 原函数名、该函数的开始位置、结束位置、包含在该函数中的处理块数构成 的原函数信息,将生成的原函数信息写入到原函数信息表格140。
程序分析部102,对于该特定的全部函数,重复原函数信息的生成、生 成的原函数信息向原函数信息表格140的写入。
所述重复结束后,程序分析部102对生成的原函数信息的数进行计数, 作为原函数合计数,写入原函数信息表格140。
然、后,程序分析部102,将内容为原程序130的分析结束的分析结束信 息输出到控制部104。 (4)难读化部103
难读化部103从控制部104接收内容为进行难读化处理的难读化指示。 (函数分割的结束判定)
接收了所述难读化指示后,难读化部103对分布式程序500的程序区域 502内保存的程序中包含的函数的合计比预定的收束阈值小或相等进行判 断。
在此,难读化部103,若在通过程序分析部102的分析之后,艮P,若原 程序130与分布式程序500的程序区域502内保存的程序完全一致,则从原 函数信息表格140读出原函数合计数,作为所述函数的合计进行利用。如后 所述,若对分布式程序500的程序区域502中保存的程序进行更新后,从分 布式程序500的程序区域502中保存的程序计算出该程序中含有的函数的合 计并利用。
另外,难读化部103预先保持所述收束阈值。该收束阈值,例如,可以 依存于原程序130的大小。作为一例,若分割后的各函数的大小的基准为 IOO命令代码,原程序130的大小为1000命令代码,则收束阈值为"10"。
收束阈值可以按照下式计算出。
收束阈值-原程序的大小/函数的大小的基准
利用这样的收束阈值,通过进行函数分割的结束判定,可以预想分割后 的多个函数的大小分别成为大致相同的100命令代码左右。
分割后的各函数的大小的基准,可以依存于执行分布式程序的程序执行 装置具有的处理器或内存的大小而决定。
若函数的合计为所述收束阈值以下,则难读化部103,如下面所示,在 分布式程序500的程序区域502中保存的程序中,进行该程序中含有的函数 的分割的处理。若函数的合计比所述收束阈值大,则难读化部103结束函数 的分割处理。
另外,函数的分割,可以重新返回地进行。在所述收束阈值大时,可以 使重新返回的分割发生。更具体地讲,在全部函数处于结束分割的时刻,在 函数的总数还在收束阈值以下的情况下,可以对分割后新生成的函数进一步 分割而增加函数的总数。
(函数的分割处理) 难读化部103,分别对分布式程序500的程序区域502中保存的程序中 含有的多个函数,进行以下的处理(i ) ~ (vii)。在此,将成为以下处理的 对象的函数称为追加元函数。
(i )难读化部103,计算出该追加元函数中包含的处理块数,将计算 出的处理块数代入到变量M。
(ii )难读化部103,判定变量M是否为"1 "。在变量M为"1"的情 况下,认为该追加元函数不能再分割,结束对该函数的分割。
(iii) 在变量M不为"1"的情况下,难读化部103,计算出包含在该 追加元函数内的命令代码的合计命令数。难读化部103预先保持命令数阈 值。然后,对合计命令数和命令数阈值进行比较,在合计命令数比命令数阈 值小的情况下,判定为该追加元函数不能再分割,结束对该函数的分割处理。 在合计命令数比命令数阈值大或相等的情况下,进行如下的处理。
(iv) 难读化部103,在分布式程序500的变换信息区域503中,确保 变换信息块,将该追加元函数的函数名写入变换信息块内的综合信息的追加 元函数名中。
(v) 难读化部103,到从该追加元函数中抽出的处理块消失为止,重 复以下步骤(v-l) ~ (v-5)。
(v-l)从该追加元函数抽出一个以上的处理块。 (v-2)利用难读化部103预先保持的函数名候补表,生成追加函数名。 函数名候补表,含有多个用于生成追加函数名的名称的候补。在此,在步骤(V-l)中一个处理块被抽出的情况下,生成一个追加函数名,在多个处理 块被抽出的情况下,生成相同数量的追加函数名。
(,v-3)将抽出的各处理块置换为含有生成的函数名的函数呼出命令。 在此,在步骤(v-l)中抽出一个处理块的情况下,将抽出的一个处理块置 换为含有生成的函数名的一个函数呼出命令。在多个处理块被抽出的情况 下,按照每个处理块,将该处理块置换为包含生成的函数名的一个函数呼出 命令。
(v-4)在将抽出的处理块作为具有生成的函数名的一个新的函数追加 并写入到追加元函数的末尾。
(v-5)将步骤(v-2)中生成的函数名和其尺寸作为追加信息追加并 写入到综合信息中。[结束]
(vi) 难读化部103对追加到综合信息中的追加信息的数进行计数,将 计数得到的值作为追加信息数追加写入到综合信息中。
(vii) 难读化部103,对追加元函数的尺寸进行计数,将计数得到的值 作为追加元函数尺寸写入到综合信息中。然后,将变换信息种类"l"写入 到变换信息中。[结束]
(头部510的生成) 难读化部103,生成分布式程序ID,将生成的分布式程序ID作为分布 式程序ID511写入到头部510,然后,生成版本信息,作为版本信息512写 入到头部510。
然后,难读化部103,将用于函数信息以及变换信息位置信息的区域确 保在头部510内,将各函数名写入各函数信息,设各函数位置信息的函数开 始位置以及函数结束位置为"0",变换信息位置信息为"0"。 (冗余块的插入处理) 难读化部103,将内容为生成冗余处理的冗余处理指示输出到冗余处理 生成部107。然后,难读化部103,从冗余处理生成部107接收表示冗余处 理的生威结束的冗余处理结束结果。 (函数的再配置)
然后,难读化部103,对于配置与分布式程序500的程序区域502内的 全部函数,再一次按照随机顺序更改配置。
难读化部103,将在分布式程序500的程序区域502内再配置的各函数
的函数开始位置以及函数结束位置,写入到头区域501内的对应于该函数的 函数位置信息内。 (加密处理)
接着,难读化部103,从子模块密钥保持部109取得子模块密钥120, 向加密部110发出指示,利用取得的子模块密钥,对头区域501内的各函数 位置信息进行加密。
另外,难读化部103,向加密部IIO发出指示,利用取得的子模块密钥, 对程序区域502内的各函数进行加密。 (变换信息的更新)
接着,难读化部103,对变换信息区域503内的变换信息550中包含的 变换信息块的合计数进行计数,将得到的合计数作为变换信息块数写入到变 换信息550。
然后,难读化部103,分别对变换信息550内的全部变换信息块进行以 下的处理(i ) ~ (iii)。
(i )在变化信息密钥表格121中,随机地选择与变换信息密钥ID对 应的变换信息密钥。
( ii)将所选择的变换信息密钥ID写入该变换信息块。 (iii)将所选择的变换信息密钥输出到加密部IIO,将该变换信息块相 对于加密部110指定,向加密部110指示,利用所选择的变换信息密钥,对 该变换信息块加密。[结束]
然后,难读化部103,将变换信息的最先位置作为变换信息位置信息写 入头区域501内的头部510。
然后,难读化部103,将表示分布式程序500的生成结束的结束信息输 出到控制部104。
(5)冗余处理生成部107 冗余处理生成部107,从难读化部103接收表示生成冗余处理的内容的 冗余处理指示。接收所述冗余处理指示后,计算出分布式程序500的程序 区域502中保存的程序内的函数的合计。
然'后,冗余处理生成部107,对所述程序内的全部的函数分别进行以下 的处理(i ) ~ (iv)
(i )冗余处理生成部107,随机判断是否有冗余块插入到该函数中。
具体地,生成满足(K随机数K1的随机数r,判断是否为(K随机数K0.5。 若0.5《随机数K1,则决定不插入冗余块,结束该函数的处理。
(ii) 若0<随机数r<0.5,则计算出目前为止插入到该函数中的冗余块 的数,判断计算得出的冗余块的数与预定的阈值相比的情况,在此作为一 例,判断是否比"10"大,若为大于"10"的情况下,决定不再插入冗余 块,结束对该函数的处理。在冗余块的数不大于"10"的情况下,决定插 入冗余块,冗余处理生成部107,随机决定从信息存储部101读出的冗余块, 读出决定的冗余块。
(iii) 冗余处理生成部107,在该函数中,决定插入冗余块的位置,将 读出的冗余块插入到决定的位置。
(iv) 冗余处理生成部107,在变换信息550内确保变换信息块,在确 保的变换信息块内,写入该函数的函数名,将变换信息种类"2"写入,在 该函数内,将插入所述冗余块的插入开始位置以及插入结束位置作为开始 位置以及结束位置写入到变换信息块内。
对分布式程序250的变换信息中含有的全部变换信息块重复进行上述 处理(i ) ~ (iii)后,前处理部204,向控制部226输出表示前处理结束 的结束信息。
(8)解密部205
解密部205从前处理部204接收子模块密钥,并且,接收指示,该指示 的内容为对函数信息保持部209中存储的函数信息内的全部的函数位置信 息中,含的被加密的函数名、被加密的函数开始位置以及被加密的函数结 束位置进行解密。接收了子模块密钥以及所述指示后,解密部205将接收 的子模块密钥作为密钥,对函数信息保持部209中存储的全部的函数位置 信息中包含的被加密的函数名、被加密的函数开始位置以及被加密的函数 结束位置进行解密,分别生成函数名、函数开始位置以及函数结束位置, 用生成的函数名、函数开始位置以及结束位置覆盖原来的被加密的函数名、 被加密的函数开始位置以及被加密的函数结束位置。
解密部205,从前处理部204接收变换信息密钥,接收变换信息块中包 含的综合信息的指定、和内容为对变换信息块中包含的综合信息进行解密 的指示。接收所述变换信息密钥、所述指定以及所述指示后,解密部205, 利用接收的变换信息密钥,对指定的被加密的综合信息进行解密,生成综 合信息,用生成的综合信息覆盖被加密的综合信息。
解密部205从展开部206接收了解密的指示、子模块密钥、分布式程序 250中的函数开始位置以及函数结束位置、函数保持部203中的保存位置
后,在分布式程序250中,对到抽出的所述函数开始位置和所述函数结束 位置为止利用读出的子模块密钥进行解密,将得到的函数写入通过展开部 206指定的函数保持部203内的保存位置。写入结束后,将该函数的保存位 置的开始地址和结束地址向展开部206输出。
(9) 展开部206
展开部206,从程序执行部207,接收内容为对指定的函数展开的指示 以及识别所述函数的函数名。
接收了所述指示后,展开部206,从解密状况管理部210中保持的解密 状况表格361,取得函数保持部203中最后保持的函数的结束地址。即,在 解密状况表格361内存储的解密状况信息中,抽取包含最大的结束地址的解 密状况信息,抽取所抽取的解密状况信息中包含的结束地址。
然后,展开部206从子模块密钥保持部201读出子模块密钥251。
接着,展开部206从函数信息保持部209中保持的函数信息281中读出 包含所指定的函数名的函数位置信息,并从所读出的函数位置信息中抽取函 数开始位置和函数结束位置。
接着,展开部206对解密部205输出解密的指示、子模块密钥、分布式 程序250中的函数开始位置以及函数结束位置、函数保持部203中的保存位 置(即,由抽取的所述结束地址表示的位置)。然后,从解密部205接收该 函数的保存位置的开始地址和结束地址,将指定的函数名、以及由接收的开 始位置'以及结束位置构成的解密状况信息向解密状况表格361写入。
然后,展开部206,从综合信息保持部208中査找将指定的函数名作为 追加元函数名而包含的综合信息,在不存在的情况下,展开部206将表示展 开结束的结束信息向程序执行部207输出,结束处理。
在存在的情况下,在存在的该综合信息中,对该综合信息中包含的全部 追加信息,从该追加信息抽取追加函数名,指定抽取的追加函数名而进行展 开处理。
(10) 程序执行部207
程序执行部207,具有表示命令代码保存的保存位置的程序计数器PC。 程序执行部207,从由程序计数器PC表示的保存位置读出命令代码, 对读出的命令代码解读,判断命令代码的种类是否为(i )外部函数的呼出、 (ii) jnvoke命令或函数的呼出、(iii)结束命令、(iv)其他的命令代码。
(i) 在为外部函数的呼出的情况下,程序执行部207,将外部函数的 开始为止设定在程序计数器PC中。
(ii) 在为invoke命令或函数的呼出的情况下,程序执行部207,从解 密状况管理部210保持的解密状况表格361 ,试着取得由识别由invoke命令 或函数的呼出指定的函数的函数名,若函数名存在,则试着取得表示该函数 保存的位置的开始地址。若可以取得开始地址,则将取得的开始地址设定在 程序计数器PC中。
开始地址若不能取得,即,若包含有识别该函数的函数名的解密状况信 息在解密状况表格361内不存在,则程序执行部207将函数保持部203内存 储的全部函数删除,对展开部206指示所指定的函数展开,然后,程序执行 部207,从展开部206接收表示展开结束的结束信息。接收了所述结束指示 后,向冗余处理部212指示进行冗余块的处理,从冗余处理部212接收表示 冗余块的处理结束的结束信息。接收了所述结束指示后,将指定的函数的开 始地址指定在程序计数器PC中。
(iii) 为结束命令的情况下,程序执行部207,将函数保持部203、综 合信息保持部208、函数信息保持部209以及解密状况管理部210保持的信 息全部删除,将其它程序的命令代码保存的位置设定在程序计数器PC中。
(iv) 在为其它命令代码的情况下,程序执行部207,按照该命令代码 的解读结果,执行处理,对程序计数器PC加"1"。
然后,返回到所述命令代码的读出,重复处理。
( 11) 冗余处理部212 冗余处理部212,从程序执行部207接收内容为进行冗余块的处理的指 示。接收了所述指示后,冗余处理部212从综合信息保持部208试着读出冗
余信息。
从综合信息保持部208读出了全部冗余信息,或综合信息保持部208 内不存在冗余信息的情况下,将表示冗余块的处理结束的结束信息向程序执 行部207输出,结束冗余处理部212的处理。
从综合信息保持部208读出了一个冗余信息后,冗余处理部212,从读 出的冗余信息中抽取函数名,在解密状况管理部210的解密状况表格361中 查找包含抽取的函数名的解密状况信息。解密状况表格361内不存在包含抽 取的函数名的解密状况信息的情况下,然后,冗余处理部212返回到从综合
信息保持部208的冗余信息的读出,重复处理。
在解密状况表格361内存在包含抽取的函数名的解密状况信息的情况 下,冗余处理部212,从该解密状况信息取得对应于所述函数名的开始地址 以及结束地址,从读出的冗余信息中抽取开始位置以及结束位置,在函数保 持部203内,对由取得的开始地址以及结束地址特定的函数,将从抽取的开 始位置到抽取的结束位置存在的命令代码全部置换为NOP命令。
在此,NOP命令为指示什么处理也不进行的命令。在NOP命令执行的 情况下,基本不占用处理时间。
然后,冗余处理部212,返回到从综合信息保持部208的冗余信息的读 取,重复处理。
这样,通过切换为NOP命令,由于几乎冗余处理的执行中没有占用处 理时间,因此,可以更高速执行程序。
(12) 天线229、通信部228以及通信控制部227
通信部228,对由天线229接收的无线频率信号进行放大,将输出信号 变换为.IF信号,对IF信号放大,将放大的IF信号解调为基带信号。另外, 通过基带信号对高频信号进行调制,将该输出变换为无线频率,对无线频率 进行放大并向天线229输出。通信控制部227,生成基带信号并向通信部228 输出,另外,从通信部228取得基带信号。
这样,通信控制部227、通信部228以及天线229,在经由便携电话网 30、因特网20连接的程序变换装置100之间,进行信息的接收和发送。
具体地,通信控制部227、通信部228以及天线229,从经由便携电话 网30、'因特网20连接的程序变换装置100,接收分布式程序,将接收的分 布式程序作为分布式程序250写入到信息存储部211 。
(13) 控制部226
控制部226,经由输入部224,从便携电话200a的利用者接收分布式程 序250的执行指示。接收了所述指示后,向前处理部204发出内容为进行分 布式程序250的处理的指示。
控制部226,从前处理部204接收了表示前处理结束的结束信息。接收 了结束信息后,将表示呼出命令存在的位置的地址设定在程序执行部207具 有的程序计数器PC中,该呼出命令呼出分布式程序250的主要函数即 "Methodl"。由此,开始通过程序执行部207按照分布式程序250的处理。
另外,呼出分布式程序250的主要函数即"Methodl"的呼出命令,包 含在呼出分布式程序的呼出程序内,所述呼出程序预先存储在信息存储部 211内。
1.5由便携电话200a进行的分布式程序的执行动作 对由便携电话200a进行的分布式程序的执行动作进行说明。
(1)由便携电话200a进行的分布式程序的执行动作 通过图25所示的流程图对由便携电话200a进行的分布式程序的执行动 作进行说明。
控制部226,经由输入部224,从便携电话200a的利用者接收分布式程 序250的执行指示(步骤S200),前处理部204,对分布式程序250,进行 加密的函数位置信息和加密的综合信息的解密(步骤S201)。
程序执行部207,从由程序计数器PC表示的保存位置,读出命令代码 (步骤S202),对读出的命令代码解读(步骤S203),判断命令代码的种类 是否为外部函数的呼出,invoke命令或函数的呼出、结束命令、或其它的命 令代码(步骤S204)。
在为外部函数的呼出的情况下(步骤S204),程序执行部207将外部函 数的开始地址设定在程序计数器PC (步骤S214),然后,返回到步骤S202 重复处理。
若为invoke命令或函数的呼出的情况下(步骤S204),程序执行部207, 从解密状况管理部210保持的解密状况表格361 ,试着取得识别通过invoke 命令或函数呼出指定函数的函数名,若函数名存在,则试着取得表示该函数 保存的位置的开始地址(步骤S208)。若可以取得开始地址,(步骤S209), 则将取得的开始地址设定在程序计算器PC中(步骤S213),然后,返回到 步骤S202重复处理。
若不能取得开始地址(步骤S209),则程序执行部207,删除函数保持 部203内存储的全部的函数(步骤S210),展开部206对指定的函数展开(步 骤S211),冗余处理部212,进行冗余块处理(步骤S212),将指定的函数 的开始地址设定在程序计数器PC中(步骤S213),然后返回到步骤S202 重复处理。
在为结束命令的情况下(步骤S204),程序执行部207将函数保持部203、 综合信息保持部208、函数信息保持部209以及解密状况管理部210保持的
信息全部删除(步骤S206),将保存其它的程序命令代码的位置设定在程序 计算器'PC中(步骤S207),然后,返回到步骤202重复处理。
在为其它的命令代码的情况下(步骤S204),程序执行部207,按照该 命令代码的解读结果,执行处理(步骤S205),对程序计数器PC加"1"(步 骤S215),然后,返回到步骤S202的处理重复处理。 (2)前处理部204及解密部205的动作
禾廿用图26所示的流程图说明通过前处理部204及解密部205进行的对 加密的函数位置和加密的综合信息的解密动作。
前处理部204,从控制部226接收内容为进行分布式程序250的处理的 指示后,从信息存储部211中存储的分布式程序250读出头区域内的头部含 有的函数信息,将读出的函数信息作为函数信息281写入到函数信息保持部 209 (步骤S231)。
然后,前处理部204,从子模块密钥保持部201读出子模块密钥251 (步 骤S23^),解密部205,将存储于函数信息保持部209的全部函数位置信息 中包含的加密的函数名、加密的函数开始位置以及加密的函数结束位置,利 用接收的子模块密钥作为密钥而进行解密,分别生成函数名、函数开始位置 以及函数结束位置,用生成的函数名、函数开始位置以及函数结束位置,覆 盖原来的被加密的函数名、被加密的函数开始位置以及函数结束位置(步骤 S233)。
然后,前处理部204,从分布式程序250的变换信息读出变换信息块数 (步骤S234),将"0"代入变量N (步骤S235)。
然后,前处理部204,对变量N和变换信息块数进行比较,在变量N 不比变换信息块数小的情况下(步骤S236为NO),结束处理。
在变量N比变换信息块数小的情况下(步骤S236为YES),前处理部 204,对变量N加"1"(步骤S237),读出分布式程序250的变换信息中包 含的第N变换信息块,从读出的变换信息块抽取变换信息密钥ID (步骤 S238),然后,从变换信息密钥保持部202中保持的变换信息密钥表格261 査找与抽取的变换信息密钥ID相同的变换信息密钥ID (步骤S239)。
若变换信息密钥表格261内不存在相同的变换信息密钥ID (步骤 S240),返回到步骤S236重复处理。
若变换信息密钥表格261内存在相同的变换信息密钥ID (步骤S240),
将对应于抽取的所述变换信息密钥ID的变换信息密钥从变换信息密钥表格 261读出(步骤S241),将读出的第N变换信息密钥向解密部205输出,解 密部205,利用接收的变换信息密钥,对指定的加密的综合信息解密,生成 综合信息,用生成的综合信息覆盖加密的综合信息(步骤S242)。然后,返 回到步骤S236重复处理。
(3) 由冗余处理部212进行的动作
另用图27所述的流程图对由冗余处理部212进行的动作进行说明。
从程序执行部207接收内容为进行冗余块的处理的指示后,冗余处理部 212,试着从综合信息保持部208读出冗余信息(步骤S261)。
从综合信息保持部208读出了全部冗余信息后,或综合信息保持部208 中不存在冗余信息的情况下(步骤S262为YES),将表示冗余块的处理结束 的结束信息向程序执行部207输出,结束由冗余处理部212进行的处理。
从综合信息保持部208读出了一个冗余信息后(步骤S262为NO),冗 余处理部212从读出的冗余信息读出函数名(步骤S263),从解密状况管理 部210.的解密状况表格361査找包含抽取的函数名的解密状况信息(步骤
5264) 。在解密状况表格361内不存在包含抽取的解密状况信息的情况下(步 骤S265),返回到步骤S262重复处理。
在解密状况表格361内存在包含抽取的解密状况信息的情况下(步骤
5265) ,冗余处理部212,从解密状况信息中取得对应于函数名的开始地址 以及结束地址(步骤S266),从读出的冗余信息抽取开始位置以及结束位置
(步骤S267),在函数保持部203内,对通过取得的开始地址以及结束地址 特定的函数,将从抽取的开始位置到抽取的结束位置为止存在的命令代码, 全部置换为NOP命令(步骤S268)。然后,返回步骤S262重复处理。
另外,在上述中,将冗余块包含的命令代码置换为NOP命令,但是, 也可以将冗余块中包含的命令代码全部删除。
如上说述,通过对冗余块无效化,在安全强度高但CPU低速的程序变 换装置中,由于分布式程序被变换,没有执行冗余块,因此,减轻了处理时 间,进行了适于机器的处理。
(4) 由展开部206进行的动作
禾偶图28 图29所示的流程图说明由展开部206进行的动作。 从程序执行部207接收了内容为展开指定的函数的指示以及识别所述
函数的函数名后,展开部206,从解密状况管理部210中保持的解密状况表 格361取得函数保持部203中最后保持的函数的结束地址(步骤S281),从 子模块密钥保持部201读出子模块密钥251 (步骤S282),将包含指定的函 数名的函数位置信息从函数信息保持部209中保持的函数信息281中读出, 从读出的函数位置信息中抽取函数开始位置以及函数结束位置(步骤S283)。
然后,解密部205,在分布式程序250中,对函数开始位置到函数结束 位置利用读出的子模块密钥进行解密(步骤S284),将得到的函数写入到由 展开部206指定的函数保持部203内的保存位置(步骤S285)。
然后,展开部206,将由指定的函数名、以及接收的开始地址以及结束 地址构成的解密状况信息写入到解密状况表格361 (步骤S286)。
接着,展开部206,从综合信息保持部208中,查找将指定的函数名作 为追加元函数名而包含的综合信息,在不存在的情况下(步骤S287为NO), 展开部206结束处理。
在存在的情况下(步骤S287为YES),将"O"代入到变量N(步骤S288), 将变量N和所述综合信息中包含的追加信息数进行比较,在变量N不比追 加信息数小的情况下(步骤S289为NO),展开部206结束处理。
在'变量N比追加信息数小的情况下(步骤S289为YES),展开部206, 对变量N加"1"(步骤S290),在存在的该综合信息中,从第N的追加信 息抽取追加函数名,指定抽取的追加函数名,再返回地进行本展开处理(步 骤S291)。然后,返回步骤S289重复处理。
如上所述,步骤S284中得到的函数以及步骤S288 步骤S291中得到的 一个以上的函数,存储在函数保持部203。这些函数具有呼出关系,临时地 同时保持在函数保持部203,因此,进行了某个函数的呼出后,很可能继续 进行这些函数中的其它函数的呼出。通过一次对这些函数进行解密,函数的 解密频度小,在处理性能方面有利。
1.6 DVD播放器200b以及个人计算机200c (1) DVD播放器200b
DyD播放器200b,如图300所示,具有子模块密钥保持部201、变换 信息密^保持部202、函数保持部203、前处理部204、解密部205、展开部 206、程序执行部207、综合信息保持部208、函数信息保持部209、解密状 况管理部210、信息存储部211、冗余处理部212、从DVD读出图像声音信息的输出部231、将读出的图像声音信息分离为图像信息和声音信息的分离 部232、从图像信息生成图像信号并向监视器输出的图像生成部233、从声 音信息生成声音信号并向扬声器输出的声音生成部234、接收来自遥控器的 操作指示的输入部236、控制部226、从程序变换装置100经由因特网20接 收分布式程序并将接收的分布式程序向信息存储部211写入的通信部228。
DVD播放器200b,具体地,与便携电话200a相同,为由微处理器、 ROM、 RAM等构成的计算机系统。在所述RAM中存储有计算机程序。所 述微处理器按照所述计算机程序进行动作,构成DVD播放器200b的各构成 要素实现其一部分的功能。
构成DVD播放器200b的子模块密钥保持部201 、变换信息密钥保持部 202、函数保持部203、前处理部204、解密部205、展开部206、程序执行 部207、综合信息保持部208、函数信息保持部209、解密状况管理部210、 信息存储部211、冗余处理部212,除去以下所示的不同点,分别与便携电 话200a中具有相同参照符号的构成要素相同。
变换信息密钥保持部202具有变换信息密钥表格261b,以代替便携电 话200a保持的变换信息密钥表格261。变换信息密钥表格261b具有三个密 钥信息,这三个密钥信息分别与图3所示的密钥信息122、 123以及124相 同。
这样,便携电话200a保持的变换信息密钥表格261与DVD播放器200b 保持的变换信息密钥表格261b比较后,分别在表格内部保持的密钥信息不 同,另外保持密钥信息的数不同。 (2)个人计算机200c
个人计算机200c,如图31所示,具有子模块密钥保持部20K变换 信息密钥保持部202、函数保持部203、前处理部204、解密部205、展开部 206、程序执行部207、综合信息保持部208、函数信息保持部209、解密状 况管理部210、信息存储部211、冗余处理部212、控制监视器以及键盘间 的信息的输出输入的输出输入控制部237、控制部226、从程序变换装置100 经由因特网20接收分布式程序并将接收的分布式程序写入到信息存储部 211的通信部228c。
个'人计算机200c,具体地,与便携电话200a相同,为由微处理器、ROM 、RAM等构成的计算机系统。在所述RAM中存储有计算机程序。所述微
处理器按照所述计算机程序进行动作,构成个人计算机200c的各构成要素 实现其一部分的功能。
构成个人计算机200c的子模块密钥保持部201、变换信息密钥保持部 202、函数保持部203、前处理部204、解密部205、展开部206、程序执行 部207、综合信息保持部208、函数信息保持部209、解密状况管理部210、 信息存储部211、冗余处理部212,除去以下所示的不同点,分别与便携电 话200a中具有相同参照符号的构成要素相同。
变'换信息密钥保持部202具有变换信息密钥表格261c,以代替便携电 话200a保持的变换信息密钥表格261 。变换信息密钥表格261c具有一个密 钥信息,这一个密钥信息与图3所示的密钥信息122相同。
这样,便携电话200a保持的变换信息密钥表格261与个人计算机200c 保持的变换信息密钥表格261c比较后,分别在表格内部保持的密钥信息不 同,另外保持密钥信息的数不同。 (3)总结
便携电话200a、 DVD播放器200b以及个人计算机200c,如上所述, 预先保持有程序变换装置100保持的多个密钥信息中的一部分密钥信息。另 外,例如,个人计算机200c,可以不保持程序变换装置100保持的多个密 钥信息的任何一个。
内.藏的CPU的处理性能高,另外,内部存储的程序等信息容易被不正 当篡改的装置,例如,个人计算机200c,保持有比便携电话200b或DVD 播放器200b保持的密钥信息的数少的密钥信息。
另外,内藏的CPU的处理性能低,另外,内部存储的程序等信息不容 易被不正当篡改的装置,例如,便携电话200b及DVD播放器200b,分别 保持有比个人计算机200c保持的密钥信息的数多的密钥信息。
这样,各装置保持的密钥信息的数不同。保存在分布式程序中的各综合 信息,由于利用密钥信息中包含的变换信息密钥而被加密,因此,在各装置 中,可以解密的综合信息的数不同。因此,在各装置中, 一起解密的函数组 不同。
例如,便携电话200a以及DVD播放器200b中, 一起解密的函数组多, 个人计算机200c中一起解密的函数组少。
这样,在CPU能力低的便携电话200a以及DVD播放器200b中,由于
一起解密的函数组多,因此,这些函数组的解密以及删除的发生频率小,可
以减轻这些函数组的解密以及删除时对CPU的负荷。
另外,在CPU能力高的个人计算机200c中, 一起解密的函数组少,这 些函数组的解密以及删除的产生频率高,但是不容易在处理性能方面出问 题。
这样,通过上述的实施方式,起到如下的好的效果,即,可以配合各处 理装置具有的CPU的处理能力以及相对于内部保持的程序等信息的安全功 能的程度来选择处理方法。
2.变形例(1)
对'作为实施方式的程序分布系统10的变形例的程序分布系统10b进行 说明。程序分布系统10b,与程序分布系统10相同,具有程序变换装置100b、 便携电话200ab、 DVD播放器200bb以及个人计算机200cb。
程序变换装置100b,与实施方式的程序分布系统10的程序变换装置100 相同。另外,便携电话200ab、 DVD播放器200bb以及个人计算机200cb, 分别具有与实施方式的程序分布系统10的便携电话200a、DVD播放器.200b 以及个人计算机200c相同的构成。
在此,以与便携电话200a的不同点为中心,对便携电话200ab进行说 明。另外,DVD播放器200bb以及个人计算机200cb与便携电话200ab相 同,因此省略说明。
(1)分布式程序的接收时的动作
在.此,禾l诉图32~图33所示的流程图说明分布式程序的接收时的便携 电话200ab的动作。
通信控制部227、通信部228以及天线229从经由便携电话网30、因特 网20连接的程序变换装置100b,接收分布式程序(步骤S301),将接收的 分布式程序作为分布式程序250,写入到信息存储部211 (步骤S302)。
然后,如图25的步骤S201所示,前处理部204,对分布信息250,进 行加密的函数位置信息和加密的综合信息进行解密(步骤S303)。
然后,在步骤S304^SM6中,前处理部204,对综合信息保持部208中 存储的全部综合信息重复进行如下步骤S305 S315。
前处理部204,从子模块密钥保持部201读出自模块密钥251 (步骤 S305)。然后,前处理部204,从成为处理对象的综合信息抽取追加元函数
名,将包含抽取的追加元函数名的函数位置从函数信息保持部209读出(步 骤S306),前处理部204,从读出的函数位置信息抽出函数开始位置以及函 数结束位置,将读出的子模块密钥向解密部205输出,向解密部205发出指 示,对存储在信息存储部211中的分布式程序250中,从抽取函数开始位置 到函数结束位置保存的加密的函数进行解密,解密部205,按照指示进行解 密(步骤S307),解密部205将生成的函数写入到函数保持部203 (步骤 S308)o
然后,在步骤S309 S313中,前处理部204,对处理对象的综合信息中 包含的全部的追加信息分别重复进行如下步骤S310 S312。
前处理部204,从成为处理对象的追加信息抽取追加函数名,从函数信 息保持部209读出包含抽取的追加函数名的函数位置信息(步骤S310),前 处理部'204,从读出的函数位置信息中抽取函数幵始位置以及函数结束位置, 将读出的子模块密钥向解密部205输出,向解密部205发出指示,对存储在 信息存储部211的分布信息中,从抽取的函数开始位置到函数结束位置保存 的加密的函数进行解密,解密部205按照指示迸行解密(步骤S3U),解密 部205将生成的函数写入到函数保持部203 (步骤S312)。
然后,冗余处理部212,进行图27所示的冗余块的处理(步骤S314), 前处理部204进行函数的综合(步骤S315)。
然后,前处理部204,将函数保持部203、综合信息保持部208、函数 信息保持部209内存储的全部内容删除(步骤S317)。
这样,包含在解密的综合信息中的多个函数作为一个函数被综合。
接着,利用图34所示的流程图对由步骤S315所示的前处理部204进行 的函数的综合进行详细说明。
前处理部204,将函数保持部203中储存的多个函数作为一个函数综合, 将新生成的函数写入到分布式程序250的程序区域内(步骤S331),将存储 在函数保持部203的全部函数删除(步骤S332)。
接着,前处理部204,将分布式程序250的头部内的各函数位置信息配 合着程序区域内保存的函数进行更新(步骤S333)。
然后,前处理部204,向解密部205发出指示,进行对分布式程序250 的程序区域内的函数的加密,解密部205利用子模块密钥,对程序区域内的 函数进行加密(步骤S334)。
然后,前处理部204向解密部205发出指示,进行对分布式程序250 的头部'内的函数位置信息的加密,解密部205利用子模块密钥,对头部内的 函数位置信息进行加密(步骤S335)。
接着,前处理部204,在分布式程序250中,将成为处理对象的变换信 息块删除(步骤S336),在分布式程序250中,将变换信息块数和变换信息 位置信息更新(步骤S337)。
(2)由便携电话200ab进行的分布式程序的执行动作
利用图35所示的流程图对由便携电话200ab进行的分布式程序的执行 动作进行说明。
控制部226,经由输入部224,接收来自便携电话200ab的利用者的分 布式程序250的执行的指示(步骤S200),前处理部204,对分布式程序250, 通过图26所示的步骤S231-S233的处理,进行加密的函数位置信息的解密 (步骤S201a)。
程序执行部207,从程序计数器PC表示的保存位置,读出命令代码(步 骤S202),对读出的命令代码解读(步骤S203),判断命令代码的种类是否 为外部函数的呼出、invoke命令或函数的呼出、结束命令、其他的命令代码。
在为外部函数的呼出的情况下(步骤S204),程序执行部207,将外部 函数的开始地址设定在程序计数器PC中(步骤S214),然后,返回步骤S202 重复处理。
在为invoke命令或函数的呼出的情况下(步骤S204),程序执行部207, 从解密状况管理部210保持的解密状况表格361,试着取得识别invoke命令 或函数的呼出指定的函数的函数名,若函数名存在,则试着取得表示该函数 的保存位置的开始地址(步骤S208)。若可以取得开始地址(步骤S209), 则将取得的开始地址设定在程序计数器PC中(步骤S213),然后,返回到 步骤S202循环处理。
开始地址若不能取得(步骤S209),则程序执行部207将函数保持部203 内存储的全部函数删除(步骤S210),对展开部206,通过图28所示的步骤 S281 S286的处理,指示对指定的函数展开(步骤S211a),将指定的函数的 开始地址设定在程序计数器PC中(步骤S213),然后,返回到步骤S202 重复处理。
为结束命令的情况下(步骤S204),程序执行部207,将函数保持部203、
函数信息保持部209以及解密状况管理部210保持的信息全部删除(步骤 S206a),将其它程序的命令代码保存的位置设定在程序计数器PC中(步骤 S207),'然后返回到步骤S202重复处理。
在为其它命令代码的情况下(步骤S204),程序执行部207按照该命令 代码的解读结果,执行处理(步骤S205),对程序计数器PC加"1"(步骤 S215),然后返回到步骤S202重复处理。 (3)总结
在上述说明的变性例中,在最初接收分布式程序时,按照可解密的综合 信息,将该综合信息所示的多个函数综合为一个函数,将新生成的函数解密 并写入到分布式程序中。
在执行分布式程序时,不进行基于综合信息的多个函数的解密,而在每 次函数的呼出时进行对加密的函数的解密。由此,可以起到减轻分布式程序 执行时的CPU的负荷的效果。
3.突形例(2)
对作为实施方式的程序分布系统10的变形例的程序分布系统10c进行 说明。程序分布系统10c,与程序分布系统IO相同,具有程序变换装置100c、 便携电话200ac、 DVD播放器200bc以及个人计算机200cc。
程序变换装置100c,与实施方式的程序分布系统10的程序变换装置100 相同。另外,便携电话200ac、 DVD播放器200bc以及个人计算机200cc, 分别具有与实施方式的程序分布系统io的便携电话200a、DVD播放器200b 以及个人计算机200c相同的构成。
在此,以与程序变换装置100的不同点为中心,对程序变换装置100c 进行说明。另外,以与便携电话200a的不同点为中心,对便携电话200ac 进行说明。另夕卜,DVD播放器200bc以及个人计算机200cc与便携电话200ac 相同,因此省略说明。
3.1程序变换装置100c的构成 (1)信息存储部101
程序变换装置100c的信息存储部101,预先存储有图36所示的原程序 601、图37所示的检查用程序611以及图39所示的变换信息块641。 (原程序601)
原程序601,如同36所示,具有处理块602、 603、 604、 605以及606。
在此,将保存在处理块606的全部命令代码作为数值加上"300"。 (检查用程序611) 检查用程序611,如图37所示,具有命令代码612、 613、 614、 615、 616、 617。
命令代码612表示将"0"代入变量sum的命令代码。 命令代码613表示对表示地址的变量a,从变量a400开始,对变量
a加"l",直到变量&=400,重复执行命令代码613、命令代码615之间记
载的命令代码。
命令代码614,表示将变量a表示的保存位置保存的数据加上变量sum。
命令代码615表示,命令代码613的重复的结束位置。
命令代码616为判断变量sum是否为"300"的命令代码。只有在该判 断结果为真的情况下,执行命令代码617。
命令代码617为表示程序结束的命令代码。程序执行装置检査出该命令 后,结束该程序的执行。
另外,检查用程序611,不一定必须为分布式程序的构成要素。例如, 执行环境为具有检查用程序的功能的构成,分布式程序中记载有用于使用该 功能的程序命令也可以。 (变换信息块641)
变换信息块641,如图39所示,具有变换信息尺寸642、变换信息种 类643、变换信息密钥ID644、以及变换内容645。
变换信息尺寸642表示包含该变换信息尺寸642的变换信息块641的长度。
变换信息种类643表示含有该变换信息种类643的变换信息块641为第 三种。具体地,如图39所示,该值为"3"。第三种变换信息块包含有变换 分布式程序中包含的命令代码的内容的变换命令。
变换信息密钥ID644为在对包含该变换信息密钥ID644的变换信息块 641内的变换内容进行加密时,加密中利用的变换信息密钥对应的识别符。
变换内容645,由开始地址646、结束地址647以及变换命令648构成,
是用于对检查用程序无效化的信息。
开始地址646以及结束地址647,分别表示分布式程序中的位置。 变换命令648包含变换有的命令代码。
这样,变换内容465表示,在分布式程序中,将从开始地址646表示的 位置到结束地址647表示的位置,变换为变换命令648包含的命令代码。
(2) 控制部104
控制部104,从输入部105,接收内容为对原程序601实施变换并生成 分布式程序500的生成指示。接收了所述生成指示后,控制部104,在信息 存储部'101中确保用于保存分布式程序500的区域。然后,从信息存储部 101读出原程序601,将读出的原程序601写入到分布式程序500的程序区 域502。
(3) 难度化部103
难度化部103,从信息存储部101读出检查用程序611,在写入到程序 区域502的原程序中,在处理块604和处理块605位置,将读出的检査用程 序插入写入。
这样,在程序区域502中,保存有图38所示的程序621。程序621,包 含有处理块622、 623、 624、 625、 626以及627。
处理块622、 623、 624、 626以及627,分别与原程序601的处理块602、 603、 604、 605、 606相同,处理块625与检査用程序611相同。处理块625 包含有命令代码630 635,命令代码630 635分别与检査用程序611的命令 代码612-617相同。
在此,在分布式程序500中,保存命令代码625以及633的保存位置为 地址"280"和"282",处理块627的最先位置为地址"400",最终位置为 地址"500"。
这样生成的分布式程序500被分布后,在不正当者篡改处理块627内部 的命令代码的情况下,处理块627内的全部命令代码的加法值很可能不会为 "300",此时,通过处理块625的命令代码634,检测处理块627的篡改, 检测出篡改后,立即通过命令代码635结束分布式程序500的执行。
程序621中包含的处理块622~627,分别保存在通过子模块密钥加密的 分布式程序500内。
然后,难度化部103,从信息存储部101读出变换信息块641,将读出 的变换信息追加写入到分布式程序500的变换信息区域503内的变换信息 550。该变换信息块,利用变换信息密钥被加密,保存在变换信息550内。
(4) 通信部112
通信部112,至少将包含图38所示的程序621加密生成的加密程序和 图39所示的变换信息块641加密生成的加密变换量信息块的分布式程序 500,,便携电话200ac、 DVD播放器200bc以及个人计算机200cc发送。
3.2便携电话200ac的构成
便携电话200ac,至少从程序变换装置100c接收分布式程序500,该分 布式程序500包含有加密程序621生成的加密程序和加密变换信息块641生 成的加密变量信息块,将该分布信息500作为分布式程序250存储在信息存 储部2U。
然后,利用图41所示的流程图,对便携电话200ac中的分布式程序250 的执行时的动作进行说明。
接收了分布式程序250的执行的操作指示后,前处理部204,读出分布 式程序250的变换信息中包含的一个变换信息块,从读出的变换信息块抽取 变换信息密钥ID(步骤S401),然后,从变换信息密钥保持部202中保持的 变换信息密钥表格261,査找与抽取的变换信息密钥ID相同的变换信息密 钥ID (步骤S402)。
在变换信息密钥表格261内不存在相同的变换信息密钥ID时(步骤 S403),进入步骤S409。
在变换信息密钥表格261内存在相同的变换信息密钥ID时(步骤 S403),将与抽取的前变换信息密钥ID对应的变换信息密钥,从变换信息密 钥表格261读出(步骤S404),将读出的变换信息密钥向解密部205输出。 解密部205,利用接收的变换信息密钥,对变换信息块内的加密的部分解密
(步骤S405)。然后,判断变换信息块中含有的变换信息种类是否为"3", 在不为"3"的情况下(步骤S406),进行其它处理。
在判断出变换信息种类为"3"的情况下(步骤S406),前处理部204, 从变换信息块将变换内容读出(步骤S407),从读出的变换内容将开始地址、 结束地址以及变换命令抽取出来,在分布式程序250中,将从抽取的开始地 址表示的位置到抽取的地址表示的位置为止,置换为抽取的变换命令(步骤 S408)。这样,生成图40所示的程序651。程序651,具有处理块652、 653、 654、 655、 656以及657。另外,处理块655含有命令代码658、 659、 660、 661 。由于通过命令代码659将"300"代入到变量sum,因此在命令代码660 中,总是判断为伪,不会执行命令代码611。
之后,程序执行部207,从程序计算器PC表示的保存位置读出命令代 码(步骤S409),对读出的命令代码解读(步骤S410),按照解读结果,执 行处理,对程序计数器PC加"1"(步骤S411),然后返回到步骤S409重复 处理。
3.3总结
如上所述,在第三种变换信息块内的加密的变换内容解密的情况下,如 图40所示,通过变换内容,变换分布式程序内的检査用程序,因此省略了 检查用程序的动作。另外,在第三种变换信息块内的加密的变换内容解密的 情况下,检查用程序不变换而维持原状,在不正当者篡改成为检査用程序的 检查对象的部分的情况下,通过检査用程序检测出该篡改,结束分布式程序 的动作。
第三种变换信息块内的加密的变换内容是否被解密,依赖于便携电话 200ac是否保持有变换信息块中包含的变换信息密钥ID对应的变换信息密 钥。在便携电话200ac保持有与变换信息块中包含的变换信息密钥ID对应 的变换信息密钥的情况下,对变换内容解密,在没有保持该变换信息密钥的 情况下,不对变换内容解密。
这样,可以使检査用程序是否动作依赖于便携电话200ac是否保持有变 换信息密钥。
便携电话200ac具有的信息存储部211,在具有保护其存储内容不受不 正当者'的不正当利用的机构的情况下,可以将变换信息密钥保持在便携电话 200ac。
如个人计算机200cc,具有机器的信息存储部,在为外部者可以简单地 访问的构成的情况下,可以将变换信息密钥保持在个人计算机200cc。 4.变形例(3)
对作为实施方式的程序分布系统10的变形例的程序分布系统10d进行 说明。程序分布系统10d,与程序分布系统IO相同,具有程序变换装置100d、 便携电话200ad、 DVD播放器200bd以及个人计算机200cd。
程序变换装置100d,与实施方式的程序分布系统10的程序变换装置100 相同。另外,便携电话200ad、 DVD播放器200bd以及个人计算机200cd, 分别具有与实施方式的程序分布系统10的便携电话200a、DVD播放器200b 以及个入计算机200c相同的构成。
在此,以与程序变换装置100的不同点为中心,对程序变换装置100d 进行说明。另外,以与便携电话200a的不同点为中心,对便携电话200ad 进行说明。另外,DVD播放器200bd以及个人计算机200cd与便携电话200ad 相同,因此省略说明。
在程序变换装置100d中,在初期状态下,在子模块密钥保持部109中 没有保持子模块密钥,另外,变换信息密钥保持部111的变换信息密钥表格 121没有保持变换信息密钥。
程序变换装置100d还具有后述的密钥生成部。
4.i程序变换装置100d的构成
(1) 密钥生成部
密钥生成部生成随机数,将生成的随机数作为子模块密钥,写入到子模 块密钥保持部109。
另外,密钥生成部生成变换信息密钥ID,生成随机数,将生成的随机 数作为变换信息密钥,将包括变换信息密钥ID和变换信息密钥的密钥信息 写入到变换信息密钥表格121。密钥生成部重复进行上述变换信息密钥ID 的生成、随机数的生成、作为变换信息密钥ID和变换信息密钥的所述生成 的随机数构成的密钥信息的写入。
(2) 信息存储部101
程序变换装置100d的信息存储部101,预先存储有图42所示的设备密 钥表格.701以及图43所示的设备密钥对应表格711。 (设备密钥表格701)
设备密钥表格701,作为一例如图42所示,由多个设备密钥信息构成。 其个数与程序变换装置的程序分布的对象即机器的台数相同。各设备密钥信 息与各机器对应。
各设备密钥信息,含有设备密钥ID以及设备密钥。设备密钥ID为唯 一识别与该设备密钥信息对应的机器的识别信息。设备密钥为分配到与该设 备密钥信息对应的机器上的密钥信息。 (设备密钥对应表格711)
设备密钥对应表格711,如图43所示,由多个设备密钥对应信息构成, 各设备密钥对应信息具有设备密钥ID和变换信息密钥ID。设备密钥ID如 上所述,为识别机器的识别信息,另外,变换信息密钥ID如上所述,为识
别变换信息密钥的识别信息。
各设备密钥信息表示对各机器分配了哪一个变换信息密钥。即,各设备
密钥信息中包含的设备密钥ID和变换信息密钥ID的对应,表示对通过该设 备密钥ID识别的机器,分配了通过该变换信息密钥ID识别的变换信息密钥。 (分布式程序)
分布式程序,进一步具有图44所示的加密子模块密钥块721以及加密 变换信息密钥块722。
加密子模块密钥块721包含多个加密子模块密钥,各加密子模块密钥是 通过利用设备密钥对子模块密钥加密而生成的。
加密变换信息密钥块722含有多个变换信息密钥块。各变换信息密钥块 具有变换信息密钥ID、设备密钥ID以及加密变换密钥信息。在此,变换信 息密钥ID以及设备密钥ID,如上所述。加密变换密钥信息是通过利用设备 密钥对变换信息密钥加密而生成的。 (3)难读化部103
利用图45~图46所示的流程图对难读化部103的动作进行说明。
难读化部103进一步地,从子模块密钥保持部109读出子模块密钥 SJCey (步骤S501)。
然后,难读化部103,在步骤S502至S506中,对设备密钥表格701中 含有的各设备密钥信息,重复步骤S503 S505。
难读化部103,从设备密钥表格701读出一个设备密钥信息,从读出的 设备密钥信息抽取设备密钥DK (步骤S503)。然后,利用抽取的设备密钥 DK对子模块密钥S_Key加密生成加密子模块密钥Enc (DK, S一Key)(步 骤S504)。然后,将生成的加密子模块密钥写入到加密子模块密钥块721中 (步骤S505)。
对各设备密钥信息结束的上述重复后,难读化部103,接着在步骤S507 至S513中,对设备密钥对应表格711中包含的各设备密钥对应信息重复步 骤S508 S512。
难读化部103,从设备密钥对应表格711读出一个设备密钥对应信息, 从读出的设备密钥对应信息抽取设备密钥ID和变换信息密钥ID (步骤 S508)。然后,从设备密钥表格701读出与抽取的设备密钥ID对应的设备密 钥DK (步骤S509),从变换信息密钥表格121读出与抽取的变换信息密钥
ID对应的变换信息密钥C_Key (步骤S510),然后,利用读出的设备密钥 DK,对读出的变换信息密钥C_Key加密并生成加密变换信息密钥Enc(DK, C—Key)(步骤S511),将变换信息密钥ID、设备密钥ID以及加密变换信息 密钥写入到变换信息密钥块(步骤S512)。
这样,生成了含有图44所示的加密子模块密钥块721以及加密变换信 息密钥块722的分布式程序。 (4)通信部112
通信部112,将含有加密子模块密钥块721以及加密变换信息密钥块722 的分布式程序,向便携电话200ad、DVD播放器200bd以及个人计算机200cd 发送。
4.2便携电话200ad的构成
便携电话200ad,预先保持有自身的设备密钥DK以及设备密钥ID。另 外,在初期状态下,在子模块密钥保持部201中,没有保持子模块密钥,变 换信息密钥保持部202具有的变换信息密钥表格261没有保持密钥信息。
信息存储部211,存储含有加密子模块密钥块以及加密变换信息密钥块 722的分布式程序。
在此,利用图47所示的流程图,对便携电话200ad中的加密子模块密 钥以及加密变换信息密钥的解密动作进行说明。
便携电话200ad的前处理部204,读出自身的设备密钥DK和设备密钥 ID(步骤S512),然后,在分布式程序250内的加密子模块密钥块中,对与 读出的设备密钥ID对应的加密子模块密钥进行特定。具体地,对设备密钥 ID对应的字段保存的加密子模块密钥进行特定(步骤S522)。然后前处理部 204利用设备密钥,对特定的加密子模块密钥解密,生成子模块密钥(步骤 S523),将生成的子模块密钥向子模块密钥保持部201写入(步骤S524)。
然后,前处理部204,在步骤S525至S531中,对分布式程序内的加密 变换信息密钥块含有的各变换信息密钥块重复步骤S526 S530。
前处理部204,从分布式程序内的加密变换信息密钥块读出一个变换信 息密钥块(步骤S526),将变换信息密钥块内的设备密钥ID和自身保持的 设备密钥ID比较(步骤S527)。若不一致(步骤S528为NO),则返回到上 述重复。若一致(步骤S528为YES),则利用设备密钥,对加密变换信息密 钥解密并生成变换信息密钥(步骤S529),将变换信息密钥块内的变换信息
密钥ID与生成的变换信息密钥对应,写入到变换信息密钥表格261 (步骤 S530)。
如上所述,子模块密钥写入到子模块密钥保持部201,变换信息密钥写 入到变换信息密钥表格261。
由此,不持有设备密钥的不正当机器不能得到子模块密钥或变换信息密 钥,因此,没有不正当机器对程序不正当解密的危险,或削弱程序的难读化 的危险,可以保护程序不受这样的不正当攻击。
4.3信息处理装置的无效化
程序变换装置100d,管理便携电话200ad、 DVD播放器200bd以及个 人计算机200cd等各信息处理装置的无效化。
在此,设具有通过设备密钥ID "t"识别的设备密钥DK-t的信息处理 装置被不正当分析,设备密钥、子模块密钥、变换信息密钥中的某一个被暴
在该情况下,程序变换装置100d,在设备密钥表格701以及设备密钥 对应表^711中,删除含有设备密钥ID为"t"的字段。这样,从设备密钥 对应表格711中删除了无效化的设备密钥。
以后,程序变换装置100d利用不包含无效化的设备密钥的设备密钥对 应表格。
由此,即使将以后通过程序变换装置100d生成的分布式程序,在具有 设备密钥DK-t的信息处理装置中执行,也不会得到子模块密钥或变换信息 密钥。这样,可以将具有设备密钥DK的信息处理装置无效化。
子模块密钥以及变换信息密钥,每次生成分布式程序时,利用随机数生 成。这样,即使无效化前的子模块密钥暴露,无效化后新生成的分布式程序 的生成中利用的子模块密钥,与无效化前的子模块密钥不同,新的子模块密 钥不会被知道。
5.其它的变形例
基于上述实施方式对本发明进行了说明,但是,本发明并不限定于上述 的实施方式。以下的情况也包含于本发明。
(1)程序变换装置100,可以保持多个安全级密钥。多个安全级密钥 分别与多个安全级对应。
例如,便携电话200a的安全级为"3", DVD播放器200b的安全级为"2",个人计算机200c的安全级为"1"。
此时,程序变换装置100,保持有对应于安全级"3"的安全级寧钥 SKEY3、对应于安全级"2"的安全级密钥SKEY2、对应于安全级"1"的 安全级齊钥SKEY1。
在此,在程序变换装置100中,例如生成三个综合信息并对各综合信息 加密。
程序变换装置100,分别利用安全级密钥SKEY3,分别对第一、第二 以及第三的综合信息进行加密,生成三个加密综合信息。另外,程序变换装 置100,分别利用安全级密钥SKEY2,分别对第一、第二综合信息进行加密, 生成两个加密综合信息。另外,程序变换装置100,分别利用安全级密钥 SKEY1,分别对第一综合信息进行加密,生成加密综合信息。
然后,程序变换装置100,将这样生成的六个加密综合信息插入到变化 信息550内。
这样,含有插入了六个加密综合信息的变换信息550的分布式程序,送 动到便携电话200a、 DVD播放器200b以及个人计算机200c。
便.携电话200a、 DVD播放器200b以及个人计算机200c,分别预先保 持有安全级密钥SKEY3、 SKEY2 、 SKEY1。
便携电话200a,利用保持的安全级密钥SKEY3,对三个加密的综合信 息解密,生成三个综合信息,利用生成的三个综合信息。
DVD播放器200b,利用保持的安全级密钥SKEY2,对两个加密的综合 信息解密,生成两个综合信息,利用生成的两个综合信息。
个人计算机200c,利用保持的安全级密钥SKEY1,对一个加密的综合 信息解密,生成一个综合信息,利用生成的一个综合信息。
在此,即使个人计算机200c没有保持安全级密钥也可以。在各情况下, 个人计算机200c,不能对加密综合信息解密,无法利用综合信息。
(2) 在图ll所示的综合信息中,通过函数名识别函数,但是,综合信 息不限于此,综合信息可以含有表示函数名的识别符,以代替函数名,或也 可以含有表示函数的保存位置的位置地址,以代替函数名。
(3) 追加元函数尺寸,在展开处理追加元函数时,可以为在函数保持 部展开的函数的合计尺寸。
例如,将旧Methodl分割为新Methodl、新Methodl b0、新Methodl bl
以及新Methodl—b2的情况下,将新Methodl、新Method 1—b0、新Method 1—bl 以及新Methodl一b2的合计尺寸作为追加元函数尺寸。
程序变换装置,在对结合信息加密的情况下,基于追加元函数尺寸,决 定是否利用哪一个变换信息密钥进行加密。
例如,追加元函数尺寸,在0K字节以上4K字节不到的情况下,选择 变换信息密钥A,追加元函数尺寸在4K字节以上40K字节不到的情况下, 选择变换信息密钥B。
机器1在安全强度高的存储器(例如,存在于LSI内部且用户的访问困 难的存储器)中具有函数保持部,该函数保持部在具有40K字节以上的存 储区域的情况下,在机器1上预先持有变换信息密钥A和变换信息密钥B。
机器2在安全强度高的存储器中具有函数保持部,该函数保持部,在具 有4K字节 40K字节的存储区域的情况下,在机器2上只持有变换信息密 钥A。
不具有安全强度高的内存的机器上,不持有变换信息密钥A和变换信 息密钥B。
若利用了上述构成,在具有安全强度高的存储器的机器上,可以在该机 器具有的安全强度高的存储器上展开程序,进行程序的处理。
(4) 在本实施方式中,在加密及解密中,利用了DES或AES等的所 谓通用密钥密码术,但是并不限于此。也可以利用RSA等所谓的公钥密码 术。
另外,相对于安全强度低的机器,利用公钥密码术,相对于安全强度高 的机器,利用通用公钥密码术等,可以区分使用密码术。
(5) 如上所述,便携电话200a,从程序变换装置100取得分布式程序 并存储在内容。然后,便携电话200a,可以通过将分布式程序写入到内存条 而保存。另外,安全强度不同的其它的装置,例如,DVD播放器200b或个 人计算机200c,可以从所述内存条读出分布式程序,将读出的分布式程序存 储在内部,执行存储的程序。
这样,分布式程序可以在安全强度不同的机器执行。 ('6)在上述实施方式中,冗余信息包含有表示冗余块的存在位置的开 始位置、结束位置,但是为了表示冗余块的存在位置,可以不含有直接表示 位置的地址。
例如,所述冗余信息可以含有,表示利用了程序内的特定变量的块为冗 余块的信息。
(7) 在上述实施方式中,程序变换装置,典型地,基于难读化利用的 信息,生成削弱难读化强度的信息。
在此,削弱难读化的强度的信息,可以为进行难读化的逆变换的变换信
'良o
通'过这样的构成,通过难读化利用的信息,可以知道在哪里实施了怎样 的难读化,因此,可以容易地定义对其削弱的变换。具体地,可以将冗余的 地点置换为NOP命令或定义表示实施了难读化的逆变换的变换信息。
(8) 如上述说明,本发明为利用用于变换程序的难读化效果的变换信 息,并具有执行程序的执行单元的程序变换执行装置。
在此,所述变换信息的一部分或全部被加密,所述程序变换执行装置, 可以进一步具有对加密的变换信息解密的解密装置,所述执行单元,可以利 用通过所述解密单元解密的变换信息执行程序。
在此,所述程序变换执行装置,可以进一步具有存储通过所述变换单元 生成的程序的程序存储单元。
在此,所述变换信息,可以为削弱程序的难读化效果的变换信息。
另外,本发明为具有分析程序的结构的程序分析单元、以及基于所述程 序分析单元的分析信息,生成用于变换所述程序的变换信息的变换信息生成 单元的变换信息生成装置。
另外,本发明为具有使程序难读化的程序难读化单元、以及生成用于变 换所述程序难读化单元难读化后的程序的难读化效果的变换信息的变换信 息生成单元的程序生成装置。
在此,所述变换信息可以为削弱程序的难读化效果的变换信息。
在此,所述变换信息可以为用于使各终端装置达到最好的难读化效果而 变换程序的变换信息。
另外,本发明为对程序和用于变换所述程序的变换信息进行分布的程序 分布方法。
在此,所述变换信息,可以为用于在终端装置上变换由所述分布方法分 布的程序的信息。
在此,所述变换信息可以为削弱程序的难读化效果的变换信息。
在此,所述变换信息可以为用于使各终端装置达到最好的难读化效果而 变换程序的变换信息。
另外,本发明为具有利用变换信息对程序进行变换的变换步骤的程序变 换方法,该变换信息用于变换程序。
在此,所述程序变换方法,可以进一步具有对加密的变换信息解密的 解密步骤、利用所述解密步骤中解密的变换信息变换程序的变换步骤。
(9) 上述各装置,具体地,为微处理器、ROM、 RAM、硬盘单元、显 示器单k、键盘、鼠标等构成的计算机系统。在所述RAM或所述硬盘单元 中存储有计算机程序。在此,计算机程序的构成为,为了达成预定的功能, 多个地组合了表示对计算机的指令的命令代码。通过所述微处理器按照所述 计算机程序的动作,各装置达成其功能。即,所述微处理器将所述计算机程 序中包含的各命令一个一个地读出,对读出的命令解读,并按照解读结果动 作。
(10) 构成所述各装置的构成要素的一部分或全部,可以由一个系统 LSI (Large Scale Integration:大规模集成电路)构成。系统LSI为将多个构 成部集成在一个芯片上而制造出的超多功能LSI,具体地,为包含微处理器、 ROM、 RAM等而构成的计算机系统。所述RAM中存储有计算机程序。通 过所述微处理器按照所述计算机程序的动作,系统LSI达成其功能。
另.外,构成所述各装置的构成要素的各部,可以单独地一芯片化,也可 以包含一部分或全部地一芯片化。另外,在此,称为LSI,但是由于集成度 的不同,也称为IC、系统LSI、超级LSI、顶级LSI。
另外,集成电路化的方法不限于LSI,也可以利用专用电路或通用处理 器实现。LSI制造后,也可以利用可编程的FPGA (Field Programmable Gate Array),或利用可在构成LSI内部的电路单元的连接或设定的可重构处理器。
另外,若由于半导体技术的进步或派生的其他技术,出现了置换LSI 的集成电路化技术,当然也可以利用该技术进行功能块的集成化。也具有适 应生物工艺学技术等的可能性。
(11) 构成所述各装置的构成要素的一部分或全部,可以为在各装置上 可以安装和拆卸的IC卡或单体的模块构成。所述IC卡或所述模块,为微处 理器、ROM、 RAM等构成的计算机系统。所述IC卡或所述模块,可以含 有所述超多功能LSI。通过微处理器按照计算机程序动作,所述IC卡或所
述模块,达成其功能。该ic卡或该模块,可以具有耐篡改性。
(12) 本发明可以为上述所示的方法。也可以为将这些方法在计算机上 实现的计算机程序,或所述计算机程序构成的数字信号。
另外,本发明可以为将所述计算机程序或所述数字信号记录在计算机可 读取的记录介质上,例如软盘、硬盘、CD-ROM、 MO、 DVD、 DVD-ROM、 DVD-RAM、 BD (Blu-rayDisc)、半导体存储器等。另外,可以为记录在这 些记录介质上的计算机程序或所述数字信号。
另外,本发明可以为将所述计算机程序或所述数字信号,经由电信线路、 无线或有线通信线路、以因特网为代表的网络、数据发送等进行发送。
另外,本发明可以为具有微处理器和存储器的计算机系统,所述存储器 存储所述计算机程序,所述微处理器,按照所述计算机程序动作。
可以通过将所述程序或所述数字信号记录在所述记录介质上输送,或通 过将所述程序或所述数字信号经由所述网络等输送,在独立的其他计算机系 统上实施。
(13) 可以将上述实施方式以及上述变形例分别组合。 产业上的可利用性
构成本发明的各装置,在分布、制作计算机程序的计算机产业中,可以 经营地或继续反复地使用。另外,构成本发明的各装置,在电器制造产业中, 可以经营地或继续反复地制造、销售。
权利要求
1.一种程序变换装置,从一个原程序,生成在具有不同的安全级的多个程序执行装置中执行的仅一个分布式程序,其特征在于,具有存储单元,存储有由相对于计算机的多个命令构成的原程序;难读化单元,将所述原程序难读化并生成难读程序;生成单元,对应于安全级生成表示削弱所述难读程序的难读化的变换的变换信息;以及输出单元,输出包括所述难读程序和所述变换信息的分布式程序。
2. 如权利要求1所述的程序变换装置,其特征在于所述生成单元, 基于难读化单元在难读化中利用的信息,生成表示削弱难读化的变换的所述 变换信息。
3. 如权利要求1所述的程序变换装置,其特征在于 所述存储单元存储的原程序包含由一个以上的命令构成的子程序, 所述难读化单元包含分割部,将包含在所述原程序中的所述子程序分割并生成多个部分程 序;以及难读化部,分别将所生成的所述多个部分程序难读化,生成多个难读化 部分程序,来作为所述难读程序,所述生成单元,对表示多个所述部分程序的综合的综合信息加密并生成 加密综合信息,来作为所述变换信息,所述输出单元,输出包含多个所述难读化部分程序以及所述加密综合信 息的所述分布式程序。
4. 如权利要求3所述的程序变换装置,其特征在于 所述难读化部分别对所生成的所述多个的部分程序加密,生成多个加密部分程序,来作为所述多个难读化部分程序,所述输出单元,输出包含多个所述加密部分程序以及所述加密综合信息 的所述分布式程序。
5. 如权利要求4所述的程序变换装置,其特征在于 所述生成单元利用变换信息密钥,对所述综合信息加密。
6. '如权利要求4所述的程序变换装置,其特征在于 所述加密部利用程序密钥,对各部分程序加密。
7. 如权利要求1所述的程序变换装置,其特征在于 所述存储单元存储的原程序包含由一个以上的命令构成的子程序, 所述难读化单元包含分割部,将包含在所述原程序中的所述子程序分割并生成多个部分程 序;以及加密部,分别对所生成的所述多个部分程序加密,生成多个加密部分程 序,来作为所述难读程序,所'述生成单元,利用对应于安全级的安全级密钥,分别对表示多个所述 部分程序的综合的综合信息加密并生成加密综合信息,来作为所述变换信 息,所述输出单元,输出包含多个所述加密部分程序以及所述加密综合信息 的所述分布式程序。
8. 如权利要求1所述的程序变换装置,其特征在于 所述难度化单元,在所述原程序中,插入由冗余的一个以上的命令构成的冗余块,生成所述难读程序,所述生成单元,对表示所述分布式程序中的所述冗余块的插入位置的位 置信息进行加密并生成加密位置信息,来作为所述变换信息,所述输出单元,输出包含插入冗余块的难读程序以及所述加密位置信息 的所述分布式程序。
9. 如权利要求8所述的程序变换装置,其特征在于 所述生成单元,利用变换信息密钥,对所述位置信息加密。
10. 如权利要求1所述的程序变换装置,其特征在于 所述难度化单元,在所述原程序中,插入检测该原程序的一部分的篡改的检查用程序,生成所述难读程序,所述生成单元,对包括位置信息以及无效化程序的检查信息加密并生成 加密检查信息,来作为所述变换信息,所述位置信息表示所述原程序中的所 述检查用程序的插入位置,所述无效化程序将由所述检查用程序进行的篡改 的检测的动作无效,所述输出单元,输出包含插入检査用程序的难读程序以及所述加密检査 信息的所述分布式程序。
11. 如权利要求10所述的程序变换装置,其特征在于 所述生成单元,利用变换信息密钥,对所述检査信息加密。
12. —种程序执行装置,按照分布式程序进行动作,其特征在于,具有: 存储单元,存储有通过权利要求1的程序变换装置生成的分布式程序; 取得单元,从所述分布式程序,试着取得对应于自身装置的安全级的变换信息;生成单元,在可以取得对应于自身装置的安全级的变换信息的情况下, 利用取得的所述变换信息,对所述分布式程序中包含的难读程序,实施削弱 难读化的变换,生成对应于自身装置的安全级的固有程序;以及处理器,按照所生成的固有程序进行动作。
13. 如权利要求12所述的程序执行装置,其特征在于 所述存储单元,存储有通过权利要求4的程序变换装置生成的所述分布式程序,所述取得单元,试着对作为所述变换信息的所述加密综合信息解密, 所述生成单元,在可以对所述加密综合信息解密的情况下,对于由所得到的综合信息表示综合的多个部分程序,将对应的多个加密部分程序解密,生成多个部分程序,来作为所述固有程序的一部分,所述处理器,按照包含所生成的多个所述部分程序的所述固有程序进行动作。
14. 如权利要求13所述的程序执行装置,其特征在于 所述存储单元,存储有通过权利要求5的程序变换装置生成的所述分布式程序,所述取得单元,利用变换信息密钥,对所述加密综合信息解密。
15. 如权利要求13所述的程序执行装置,其特征在于 所述存储单元,存储有通过权利要求6的程序变换装置生成的所述分布式程序,^ 述生成单元,利用程序密钥,对所述加密程序解密。
16. 如权利要求12所述的程序执行装置,其特征在于 所述存储单元,存储有通过权利要求7的程序变换装置生成的所述分布式程序,所述取得单元,利用自身装置保持的安全级密钥,试着对作为变换信息的所述加密综合信息解密,所述生成单元,在可以对所述加密综合信息解密的情况下,对于由所得 到的综合信息表示综合的多个部分程序,将对应的多个加密部分程序解密, 生成多个部分程序,来作为所述固有程序的一部分,所述处理器,按照包含所生成的多个所述部分程序的所述固有程序进行 动作。
17. 如权利要求12所述的程序执行装置,其特征在于所述存储单元,存储有通过权利要求8的程序变换装置生成的所述分布式程序,所述取得单元,试着对作为所述变换信息的所述加密位置信息解密, 所述生成单元,在可以对所述加密位置信息解密的情况下,在所述分布 式程序中,将由所得到的位置信息表示的位置上所保存的命令无效化, 所述处理器,按照包含被无效化的命令的所述固有程序进行动作。
18. 如权利要求17所述的程序执行装置,其特征在于所述存储单元,存储有通过权利要求9的程序变换装置生成的所述分布式程序,所述取得单元,利用变换信息密钥,对所述加密位置信息解密。
19. 如权利要求12所述的程序执行装置,其特征在于 所述存储单元,存储有通过权利要求10的程序变换装置生成的所述分布式程序,所述取得单元,试着对作为所述变换信息的所述加密检査信息解密, 所述生成单元,在可以对所述加密检査信息解密的情况下,在所述分布式程序中,将由包含在所生成的检査信息中的位置信息表示的位置上所保存的命令',置换为所生成的检査信息中包含的无效化程序,所述处理器,按照包含所述无效化程序的所述固有程序进行动作。
20. 如权利要求19所述的程序执行装置,其特征在于所述存储单元,存储有通过权利要求11的程序变换装置生成的所述分 布式程序,所述取得单元,利用变换信息密钥,对所述加密检查信息解密。
21. —种程序变换方法,被利用在程序变换装置中,该程序变换装置, 从一个原程序,生成具有不同的安全级的多个程序执行装置中执行的仅一个 分布式程序,存储有由相对于计算机的多个命令构成的原程序,该方法的特征在于,具有以下步骤难读化步骤,将所述原程序难读化并生成难读程序;生成步骤,对应于安全级生成表示削弱所述难读程序的难读化的变换的变换信息;以及输出步骤,输出包括所述难读程序和所述变换信息的分布式程序。
22. —种程序变换程序,被利用在程序变换装置中,该程序变换装置, 从一个原程序,生成具有不同的安全级的多个程序执行装置中执行的仅一个 分布式程序,存储有由相对于计算机的多个命令构成的原程序,该程序变换 程序的特征在于,具有以下步骤难读化步骤,将所述原程序难读化并生成难读程序; 生成步骤,对应于安全级生成表示削弱所述难读程序的难读化的变换的 变换信息;以及输出步骤,输出包括所述难读程序和所述变换信息的分布式程序。
23. 如权利要求22所述的程序变换程序,其特征在于 所述程序变换程序,被记录在计算机可读取的记录介质中。
24. —种集成电路,从一个原程序,生成具有不同的安全级的多个程序 执行装置中执行的仅一个分布式程序,其特征在于,具有存储单元,存储有由相对于计算机的多个命令构成的原程序;难读化单元,将所述原程序难读化并生成难读程序; 生成单元,对应于安全级生成表示削弱所述难读程序的难读化的变换的 变换信息;以及输出单元,输出包括所述难读程序和所述变换信息的分布式程序。
25. —种程序执行方法,被利用在按照通过权利要求1的程序变换装置 生成的分布式程序而动作的程序执行装置中,其特征在于,具有以下步骤取得步骤,从所述分布式程序,试着取得对应于自身装置的安全级的变 换信息;生成步骤,在可以取得对应于自身装置的安全级的变换信息的情况下, 利用所取得的所述变换信息,对所述分布式程序中包含的难读程序,实施削 弱难读化的变换,生成对应于自身装置的安全级的固有程序;以及处理步骤,按照所生成的固有程序进行动作。
26. —种程序执行用程序,被利用在按照通过权利要求1的程序变换装置生成.的分布式程序而动作的程序执行装置中,其特征在于,具有以下步骤: 取'得步骤,从所述分布式程序,试着取得对应于自身装置的安全级的变 换信息;生成步骤,在可以取得对应于自身装置的安全级的变换信息的情况下, 利用所取得的所述变换信息,对所述分布式程序包含的难读程序,实施削弱 难读化的变换,生成对应于自身装置的安全级的固有程序;以及处理步骤,按照所生成的固有程序进行动作。
27. 如权利要求26所述的程序执行用程序,其特征在于 所述程序执行用程序,被记录在计算机可读取的记录介质中。
28. —种集成电路,按照分布式程序进行动作,其特征在于,具有 存储单元,存储有通过权利要求1的程序变换装置生成的分布式程序; 取得单元,从所述分布式程序,试着取得对应于自身装置的安全级的变换信息;生成单元,在可以取得对应于自身装置的安全级的变换信息的情况下, 利用所取得的所述变换信息,对所述分布式程序中包含的难读程序,实施削 弱难读化的变换,生成对应于自身装置的安全级的固有程序;以及处理器,按照所生成的固有程序进行动作。
29. —种系统,由程序变换装置和程序执行装置构成,所述程序变换装 置,从一个原程序,生成具有不同的安全级的多个程序执行装置中执行的仅 一个分布式程序,所述程序执行装置按照所述分布式程序进行动作,该系统 的特征在于,所述程序变换装置具有存储单元,存储有由相对于计算机的多个命令构成的原程序; 难读化单元,将所述原程序难读化并生成难读程序;生成单元,对应于安全级生成表示削弱所述难读程序的难读化的变换的 变换信息;以及输出单元,输出包括所述难读程序和所述变换信息的分布式程序, 所述程序执行装置具有存储单元,存储有通过权利要求1的程序变换装置生成的分布式程序; 取得单元,从所述分布式程序,试着取得对应于自身装置的安全级的变 换信息;生成单元,在可以取得对应于自身装置的安全级的变换信息的情况下, 利用所取得的所述变换信息,对所述分布式程序包含的难读程序,实施削弱 难读化的变换,生成对应于自身装置的安全级的固有程序;以及处理器,按照生成的固有程序进行动作。
全文摘要
本发明提供一种程序变换装置及程序执行装置。在具有安全功能低但是高速的CPU的机器(PC等)和具有安全功能高但低速的CPU的机器(民用机等)等各种传送目的地机器的各个中难读化等级不同的程序预先全部通过传送元(服务器)来管理。程序变换装置,生成并传送将原程序难读化而生成的被变换程序,以及将用于对所述被变换程序逆变换的变化参数加密而生成的加密变换参数。安全功能高的机器,预先保持解密密钥,在程序执行时,对所述加密变换参数解密,利用解密的变换参数变换并生成程序,执行生成的程序。安全功能低的机器,不变换被变换程序而直接执行难读化的状态的程序。
文档编号G06F21/22GK101116083SQ200680004529
公开日2008年1月30日 申请日期2006年2月9日 优先权日2005年2月10日
发明者井藤好克, 佐藤太一, 松岛秀树, 浅井理惠子, 金村孝一 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1