基于搜索聚类的多样化更新软件保护方法
在当今的软件领域,软件多样性对于提高软件的安全性和可靠性至关重要。本文将介绍一种基于搜索聚类的方法,用于寻找最具多样性的代码版本,以实现软件的多样化更新。
1. 过滤孪生混淆
在生成多样化版本的过程中,需要对孪生混淆进行过滤。当遇到 $(x \neq a) \land (y \neq a) \land (x \neq b) \land (y \neq b)$ 的情况时,暂不做决策,继续迭代,考虑排序列表中的下一个孪生值 $t_{w,z}$,并将 $a$ 和 $b$ 与 $w$ 和 $z$ 进行比较。
有多种策略可以决定何时停止排除孪生混淆:
- 设置阈值 :排除孪生值低于阈值的原子混淆。
- 设置目标大小 :设定原子混淆数量的目标大小 $m_{max}$,当达到该目标时停止过滤,即 $m \leq m_{max}$。
在本文的工作中,选择了第二种策略,将版本数量的上限 $n_{max}$ 设置为 500。因此,原子混淆的数量 $m$ 约为 $2^9 = 512$。最终,需要测量的成对相似度值 $k$ 为 130,816,因为 $n$ 个版本的不同对为 $k = n(n - 1)/2$。这种过滤策略有助于将需要生成的版本数量和需要测量的相似度值数量控制在可处理的范围内。
2. 基于相似度的聚类
将计算最大不相似版本集的问题表述为聚类问题。聚类的目的是将可用版本划分为包含非常相似版本的组。例如,在一个示例中,将版本划分为三个组。同一聚类中的版本(如 $C_1$ 中的版本)彼此非常相似,因此
基于搜索聚类的软件多样化更新保护方法
超级会员免费看
订阅专栏 解锁全文
1303

被折叠的 条评论
为什么被折叠?



