论文部分内容阅读
近年来,移动代码技术得到了极大的发展,并有着广泛的应用前景,但代码移动性所引发的安全问题阻碍了该技术在现实商业应用中的大规模使用。在这些安全问题中,如何保护移动代码不受主机的损害是传统安全技术无法处理的新需求。因此,恶意主机环境下移动代码保护技术的研究具有重要的理论和现实意义并受到极大的重视。保密性是移动代码保护中尚未解决的最本质最困难的一个问题,论文以java字节码作为具体的研究对象,深入研究了移动代码保密性相关的各种技术。从移动代码反盗版和知识产权保护角度出发,深入研究了软件水印技术。论文通过优化不经意传输(OT)协议,提出了一个新的基于非交互保密函数计算的移动代理保护方案。由于OT协议的计算开销主要集中在计算密集的取幂运算,通过扩展二选一OT协议为N选一OT协议,把N个二选一OT调用合并成单个N选一OT调用,并在此基础上定义新的并发OT协议,使取幂运算次数减少为常数次。组合该并发OT协议与加密电路构造,得到一个非交互保密函数计算协议。以源主机充当Alice,多个主机充当Bob,所有主机贡献出加密电路当中代表自己函数的部分,各个子电路进行级联,从而构造出最终的加密电路。与同类方案相比,新方案较大地降低了计算开销,并消除了对公共随机源的依赖,使得安全性更强,协议更容易实现。论文还对java虚拟机模型与类文件格式进行了分析,建立了一个对java字节码进行代码混淆的形式化模型,揭示了混淆变换具有的一些特性,并证明对java字节码可以创建单轮的混淆算法。论文从字节码的角度描述了不同的混淆方法,并设计了有效的方法来产生冗余代码。同时论文还讨论了评估混淆处理质量的不同方法。在理论分析的基础上设计了一个字节码层次的代码混淆算法,与其它对高级语言程序进行完全分析的混淆算法相比它同样有效但更简单,同时算法具有灵活性和可伸缩性方面的优势。论文提出并实现了一种新型的基于代码指令统计分布的盲提取软件水印方案,该方案是当前健壮性最强的软件水印方案之一。在程序的指令集中随机抽取两个不相交的基数相等的子集,对特定子集的选取就是要嵌入的水印。改变程序使对应于某个子集的所有指令的出现次数都增加一个常数。检测时,分别计算相应两个子集指令出现次数的平均值,如果两个均值之差大于阈值,则认为包含水印。由于水印信号分散在整个代码的指令统计分布上,因此具有非常强的健壮性,能有效抵抗多种常用攻击。基于假设检验理论给出了详细的理论分析和证明。针对Java字节码实现了提出的方案,通过大量实验进行了验证。 论文对恶意主机环境下移动代码保护技术进行了广泛深入的研究,对非交互保密函数计算、代码混淆和软件水印技术进行了有益的探索,并取得了一些很有意义的成果,从而为今后这方面的进一步研究打下了良好的基础。