数据处理设备及用于执行混淆程序的方法技术

技术编号:4907272 阅读:156 留言:0更新日期:2012-04-11 18:40
通过对程序的指令重排序来混淆该程序。利用逻辑上连续指令的地址之间的位置相关地址步长,以不规则的方式将原始指令地址映射到目标地址。优选地,使用伪随机地址步长,例如,以相同频率利用彼此符号相反的地址步长。数据处理设备具有指令流控制单元,该指令流控制单元根据位置相关地址步长来更新指令地址。指令流控制单元可以包括包含秘密信息的电路,不能正常地从外部访问该信息来控制更新。例如,查找表可以与地址步长、连续地址或映射的地址值一同使用。在实施例中,可以通过沿着n维阵列中的点的路径(36)来可视化原始指令地址到目标地址的映射,其中n大于1。将连续原始指令地址映射到路径中的连续位置,并且将沿着阵列的相应行的位置映射到相应的彼此不相交的范围(33a-d)。由于使用n维路径,保持了提供高速缓存效率的局部性,而路径的多维特性使得能够将这种局部性与伪随机步长相组合。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及一种包括可编程处理器的数据处理设备,以及一种转换用于可编程处理器的指令程序的方法。
技术介绍
代码混淆(obfuscation)是用于转换针对计算机的指令程序的技术的一般名称, 这种转换采用模糊指令程序内容的方式。代码混淆可以应用于使得很难识别程序的相关部 分,该相关部分是在未许可类型的计算机上或者在没有保护措施的情况下执行程序所必需 的。美国专利No. 6,779,114描述了一种代码混淆技术,该技术涉及程序的模糊控制 流。将分支指令添加至指令块,以使得模糊指令块的预期执行顺序。美国专利No. 5,559,884 描述了对程序的基本块的伪随机重排序,以创建可以用于识别源的标签,通过该源来分布程序。在这样的技术中,存在可以恢复原始程序的风险。一般地,处理器的实际程序流 (即,处理器解释程序代码的方式)是公知的。因此,可以使用与目标处理器上的知识相组 合的静态和动态分析技术,来研究混淆后的程序。此外,混淆可以使性能劣化。例如,混淆 后的程序可以使高速缓存的效率低下。
技术实现思路
本专利技术的目的是提供了一种支持程序执行的数据处理设备,该程序以混淆的方式 存储在存储器中。提供了一种根据权利要求1所述的处理设备。因此,将程序中逻辑上连续位置的 指令的存储地址进行序列改变,,即,可以按照逻辑上连续位置的顺序以临时顺序执行指 令,以便正确执行程序。不执行来自于直接由传统递增产生的地址的指令,传统递增是以固 定值或者在指令的大小不是常量的情况下用该大小对程序计数器进行递增,而是程序流控 制单元在逻辑上连续指令的地址之间引入了可变位置相关目标地址步长,该步长与指令的 大小不相对应。在执行之前,可以根据这些地址步长来对指令的顺序进行序列改变,使得正 常执行程序。在实施例中,程序流控制单元包括用于表示对程序流加以控制的可编程秘密信息 的电路。如这里所使用的,“秘密”意味着正常操作下在处理设备外部不可访问该信息。用 于表示可编程秘密信息的电路可以包括例如程序流控制单元可访问的查找存储器。程序计 数器可以用于对查找存储器进行寻址,以获取对程序计数器的更新,除了在执行跳转指令 的指令周期中以外。在后一种情况下,不同的跳转控制电路可以用于提供更新。附图说明使用以下附图,根据示例实施例的描述这些和其他目的以及优点方面将变得显而易见。图1示出了数据处理设备;图la-d示出了程序流控制单元;图2示出了程序转换的流程图;图3示出了地址映射;图3a示出了空间填充路径以可视化地址映射;图4示出了程序流控制单元;图5、5a示出了程序流控制单元。具体实施例方式基本数据处理设备图1示出了数据处理设备,例如,集成电路。除了程序流控制单元16以外,处理设 备具有传统体系结构,包括存储器10、指令发出电路12、以及多个功能单元14、16,功能单 元14、16包括程序流控制单元16。指令发出电路12具有分别耦合至存储器10的地址输入 和数据输出的地址输出和指令输入。指令发出电路12具有耦合至功能单元14、16的指令 输出。程序流控制单元16具有耦合至指令发出电路12的地址输出。程序流控制单元16被配置为确保程序的正确执行,该程序的指令序列已经被重 排序,以便混淆程序内容。在实施例中,使用使指令高速缓存的效率的降低最小化的重排 序。图Ia示出了程序流控制单元16的第一实施例。在该实施例中,程序流控制单元16包括程序计数器160和分支执行电路162。程序计数器16具有耦合至指令发出电路(未 示出)的输出。分支执行电路162具有耦合至指令发出电路(未示出)以接收分支命令的 输入,以及耦合至程序计数器160的输出和输入。在操作中,程序计数器160在时钟CL所 指示的连续指令周期中进行计数。可选地,在没有以恒定间隔存储指令的情况下,计数器的 递增可以由从指令解码器(未示出)接收到的指令长度码来控制。计数值作为提供给指令 发出电路的指令的地址。在指令周期中,其中分支执行电路162已接收到分支命令并已确 定必须采用该分支命令,典型地,分支执行电路162根据将分支间隔与程序计数器值相加, 或者从程序计数器值中减去分支间隔来改写程序计数器值。图Ib示出了程序流控制单元16的实施例,程序流控制单元16还包括映射电路 164。程序计数器160使其输出通过映射电路164耦合至指令发出电路(未示出)。在操作 中,可选地,程序计数器160在连续指令周期中以受指令长度控制的递增方式进行计数。映 射电路164将计数值映射到目标地址,并将计数值提供给指令发布电路。可以将映射电路 164实现为查找表电路,例如,在计数值可寻址的位置处存储了目标地址的查找存储器。例 如可以使用被随机分配给相应计数值的目标地址集合。作为针对查找电路或者与这种查找 电路相组合的备选方案,运算电路可以用于计算地址,或者特殊设计的逻辑电路可以用于 计算地址。这样的电路可以被配置为将每个计数值映射到目标地址集合中的相应的、伪随 机选择的一个。在实施例中,逻辑上连续指令之间的地址步长的符号可以具有伪随机概率, 艮口,沿一个方向的地址步长与沿另一方向的步长常常相同。因此,即使仅使用有限数目的步 长大小,步长的符号也可以是随机的。同样,连续步长的联合概率也可以是随机的,因此,沿一个方向的步长之后常常使用沿另一方向的步长就好像是在相同方向的步长 备选地,可以使用其他映射。在指令周期中,其中,分支执行电路162已接收到分 支命令并已确定必须采用该分支命令。典型地,分支执行电路162根据将分支间隔与程序 计数器值相加,或者从程序计数器值中减去分支间隔来改写程序计数器值。图Ic示出了程序流控制单元16的备选实施例,程序流控制单元16用于被连续映 射的指令地址的块。该实施例包括耦合在映射电路164与指令存储器(未示出)之间的附 加目标程序计数器166,以及更新选择器168。更新选择器168控制程序计数器160何时递 增,以及根据映射电路164递增还是更新目标程序计数器166。在操作中,程序计数器160 在每个块的开始处递增,并且目标程序计数器166在块的开始处拷贝程序计数器160的映 射后的程序计数器值。例如,可以通过包括在程序中的信息,或者通过在执行特定类型的指 令时自动开始新块,来控制块的开始。图Id示出了具有更新单元161的程序流控制单元16的实施例。更新单元16在 不执行跳转时控制指令地址的更新。在实施例中,更新单元被配置为向程序计数器160输 出地址步长,并且程序计数器160将地址步长与程序计数器值相加。更新单元161根据程 序计数器值来选择地址步长,以下对步长值进行描述。例如可以使用伪随机步长。在实施 例中,更新单元161包括查找存储器,以查找针对相应程序计数器值的步长。备选地,可以 使用被设计为产生地址步长的逻辑电路。在另一实施例中,更新单元输出根据先前程序计 数器值而确定的下个程序计数器值的一部分或全部。查找存储器可以使用先前程序计数器 值来获取下个程序计数器值。这样,在程序计数器120中不使用相加来获得地址步长。可 选地,分支执行电路162可以包括分支目标查找存储器162a,分支目标查找存储器162a用 于以更新指令地址的相应方式查找跳转指令的分支目标。在实施例中,分支执行电路162 包括用于计本文档来自技高网...

【技术保护点】
一种数据处理设备,包括:-功能单元(14),用于执行来自于存储器(10)的指令;-地址输出,用于向存储器(10)提供指令的目标地址;-程序流控制单元(16),被配置为确定用于提供给地址输出的目标地址,程序流控制单元(16)被配置为在程序中逻辑上连续位置处的指令的目标地址之间引入位置相关大小和/或方向的地址步长,所述地址步长的至少一部分与指令大小不相对应。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:梅尔沃克莱尔彼得J汉森斯
申请(专利权)人:NXP股份有限公司
类型:发明
国别省市:NL[荷兰]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利