论文部分内容阅读
自计算机诞生之日起,其技术的发展可谓日新月异,各种新技术、新理论不断涌现,各种应用软件从最初的几个、几十个字节发展到现在的动辄几张光盘。成千上万的共享软件和商业软件越来越庞大,技术内涵也日趋复杂,一款优秀的软件,其技术秘密往往成为他人窃取的重点。PKI体系(Public Key Infrastructure)即公钥基础设施是目前被广泛应用的网络信息安全的一套完整的解决方案,它是为所有网络应用提供加密和数字签名等密码服务的一种密钥和证书管理体系,它提供了一个可扩展的,基于策略的方法,以实现身份识别和不可否认性。虽然人们对于软件版权的保护已经经历了较长时间的研究,PKI系统也越来越广泛的应用于网络信息安全领域,但将PKI系统和软件版权保护结合起来,目前还没有成熟的理论和产品。由于PKI体系对于身份识别有着特殊的优势,而软件版权保护必然要对用户的合法身份进行甄别,因此,将PKI体系与软件版权保护结合起来是可行的。鉴于这种情况,本文设计并实现了一个基于PKI的软件版权保护系统。系统由许可证服务器、客户端工具、和许可识别API组成。许可证服务器以“服务”的方式提供对外的接口,并通过Socket通信获取服务请求。服务器通过与第三方PKI的连接接口连接第三方PKI系统,并向用户提供许可证书申请和下载等用户服务,向系统管理员提供系统管理和配置等管理服务。客户端工具向用户提供获取硬件特征以及导入许可证书的功能。许可识别API为客户端工具提供所需功能,并为受保护软件提供许可证验证等功能。使用本系统进行软件版权保护时,受保护软件通过许可识别API验证软件使用者是否拥有合法授权。软件使用者在使用受保护软件时,首先应使用客户端工具获取硬件特征码,然后通过网络向许可证服务器申请许可证书,许可证服务器验证用户合法身份后,通过连接接口连接第三方PKI系统申请证书。软件使用者下载许可证书,并使用客户端工具导入许可证书。受保护软件运行时验证软件使用者的许可证书,如果验证失败则软件无法正常运行。软件版权保护的核心是防止软件产品的扩散,即防止非法用户拥有软件的副本,或即使拥有副本也无法正常使用。本系统主要通过确认用户合法身份、控制许可证书发放、防止用户非法持有软件副本几个方面来保证对软件版权的保护,另外也可以根据需要检验许可证书的有效期限来限制软件的使用时间。用户的身份由许可证书确认,软件在运行时通过验证许可证书是否由指定CA签发来判断软件使用者是否经过授权。因为只有证书的申请者才会拥有私钥,验证软件使用者是否拥有与许可证书相匹配的私钥可以提供更加严格的身份确认。这样,仅仅盗用用户证书而没有相应的私钥也无法使用软件。 <WP=66>在许可证书发放过程中,如果对合法用户的证书申请不加以控制,则会造成合法用户无限制的申请证书,那么,任何一个合法用户都可以拥有无数张许可证书,也就拥有无数个软件的副本,对软件的保护也无从谈起。因此,必须对许可证书的发放加以控制。在许可证服务器端控制每名合法用户只能拥有一张有效证书,用户要申请新的证书必须先注销原有证书,并且,对于用户申请新证书的次数也要加以控制。防止软件的非法拷贝是软件版权保护的核心。用户在许可证书申请时需要提供硬件特征码,该硬件特征码是根据用户本地硬件信息计算出来的32位16进制字符串。证书签发时,将该硬件特征码编入证书。受保护软件验证软件许可信息时,不仅验证证书的有效性,同时还需验证证书中的硬件特征码是否与用户本地工作站硬件特征相匹配。这样,即使合法用户也无法随意的拥有软件的副本,另外,非法用户即使盗用了合法用户的证书,甚至私钥,也将由于证书中的硬件特征码无法与本地工作站硬件特征相匹配而无法使用软件。有些软件需要对用户规定软件的使用期限,本系统用许可证书的有效期来标志用户的授权期限。证书超出有效期就意味着用户不再拥有软件的授权。本系统提供了一套软件版权保护的解决方案,许可识别API为受保护软件提供了所需的功能。为了更好的实现对软件版权的保护,软件开发人员在软件开发时还应该注意:软件最终发行之前一定要将可执行程序进行加壳、压缩,使得解密者无法直接修改程序;增加对软件自身的完整性检查,这包括对磁盘文件和内存映像的检查,以防止有人未经允许修改程序以达到破解的目的;检查注册信息和时间的代码越分散越好,不要调用同一个函数或判断同一个全局标志,因为这样做的话只要修改了一个地方则全部都被破解了;除了加壳、压缩之外,还需要自己编程在软件中嵌入反跟踪的代码,以增加安全性;检查注册信息时插入大量无用的运算以误导解密者,并在检查出错误的注册信息之后加入延时;另外,如果软件的开发者能够在软件中调用许可识别API所提供的加密解密等安全操作来实现软件中的特定功能,则有利于增强对软件的保护能力。本文所设计的软件版权保护系统考虑了今后系统的扩展性和对新设备的支持。许可识别API的设计考虑到安全设备的多样性,为各种安全设备定义了一个统一的接口,可以通过实现该接口方便的实现对新设备的支持。许可证服务器通过提供服务的形式?