论文部分内容阅读
计算机是人类最伟大的科学技术发明之一,其应用已非常普遍,也使得计算机软件的应用也越来也广泛。软件作为信息的载体,包含了许多应用中的私密数据和重大的商业价值。为此,软件安全是关系国家安全的重要课题,其安全应得到足够的重视。软件破解者能够通过逆向工程来获取软件运行的关键信息,在此基础上完成对软件的篡改和复制使用,所以如何采取有效措施来保证软件的安全性显得尤为重要。软件防篡改是软件保护的一种重要技术,主要通过插入完整性验证模块来实现,能够对攻击者的篡改做出响应,防止软件被篡改和使用,无需修改底层硬件,易于实现,开销小且算法安全性高。本文主要针对防篡改技术中的控制流完整性验证作研究,为了提高防篡改机制的抗攻击性,并解决响应和验证易受攻击的问题,提出了一种基于完整性验证的防篡改方案。本文的主要工作如下:第一,简要论述了逆向工程以及软件防篡改技术,包括静态分析、动态分析,防篡改的研究现状、定义、分类、有效性评价。具体研究了控制流完整性,软件哨兵,代码加密,隐式哈希这几方面的内容。第二,详细介绍了分存技术,并在此基础上构建了完整性验证机制。该机制将软件分为多个单元,采用多种加密方式加密软件,对程序的控制流进行完整性验证得到Hash值,通过隐藏在程序中的密钥生成函数,利用得到的哈希值、注册码和用户码来计算各个加密单元的解密密钥。第三,简要介绍了加密强度的相关知识,分析了攻击者破解软件所需的攻击时间,并用此理论来验证本文方案的有效性。第四,详细分析了改进后防篡改方案的抗攻击性,隐秘性和开销这三方面的性能,基于完整性验证的防篡改方案的有效性得到了验证。