论文部分内容阅读
随着软件产业的迅速发展和通过网络的快速传播,软件产品的安全问题受到越来越多的关注。分析并设计好的方法来提高软件的安全性对于软件版权保护具有重要意义。软件的安全隐患存在于软件设计、发行和使用的各个环节,既存在自身的安全漏洞,也存在外部的攻击危险。在软件开发过程中,由于网络的应用,关键代码和文件信息面临着泄漏的危险;在软件发行阶段,一些代码(如Java字节码)由于自身的机制,容易被反编译,也为盗版提供了方便;在应用上,一些软件在通信方面,尤其是在密钥协商的过程中存在安全漏洞,攻击者利用中间人攻击方法可以容易的获得软件通信双方的会话密钥,进而获得通信数据,攻击者通过分析这些数据,不仅可以窃取用户的重要信息,而且可以分析软件的流程,达到盗版的目的。本文针对以上这些安全问题进行了深入研究,并得到了如下一些研究结果:1.研究了软件保护中的混淆技术,设计了一种利用不定方程的解的特点来构造模糊谓词的混淆方案。该方案首先根据一组不定方程解的特点构建具有参数化的模糊谓词,通过动态生成数据链表图来保护模糊谓词的输出,并且引入混沌算法来干扰攻击者的跟踪调试;最后利用背包加密算法将模糊谓词的输出转换成相应的判断条件,增加了反编译的难度。2.针对加密保护Java字节码文件存在的密钥管理困难、影响程序升级的问题,提出了基于Shamir门限分存算法的密钥管理方案。不同的Java字节码文件产生不同的密钥,避免了对程序升级的影响;利用门限算法将密钥分成多个伪随机性的因子,通过置乱和异或的方法将因子均匀的分布到加密的代码中,使攻击者难以直接发现密钥因子;在加密代码还原时,随机的提取因子来恢复密钥,重复使用相同因子的概率很小,有效干扰攻击者对密钥生成过程的跟踪。3.提出了一种分块加密保护Java字节码的方法,该方法先将字节码分成若干块,每一块的加密密钥都根据其他块的信息动态生成,生成密钥的因素都来自文件本身,不需要隐藏任何信息。4.研究了软件在通信时密钥协商存在的安全漏洞,分析了中间人攻击远程桌面协议的原理和过程,提出了一种基于码分多址原理的安全密钥协商模型。5.结合访问控制、加密和水印技术,设计了基于内网的防信息泄漏系统,给出了详细的设计过程,并对其安全性做了分析。该系统嵌入两层水印,第一层水印用来实现对文件内容的保护,第二层水印用来标识文件的安全级别。在第一次嵌入水印后和第二次嵌入水印前,对文件进行加密,加密用来保证文件的机密性,只有有权限的用户才能获得解密的文件。