基于web服务和签名证书的软件授权试用方法

文档序号:7871335阅读:716来源:国知局
专利名称:基于web服务和签名证书的软件授权试用方法
技术领域
本发明涉及一种软件版权保护方法,尤其是涉及一种基于web服务和签名证书的软件授权试用方法。
背景技术
各种应用软件的蓬勃发展,促进了各产业的进步和经济的发展,提高了整个社会的效率,也给人们的生产和生活带来了极大的便利,而应用软件的开发往往需要巨大的资金和时间投入,尤其是需要长期的技术积累,但我国在知识产权保护力度上存在一定欠缺,加上盗版者法律意识的淡薄,导致软件盗版屡有发生,严重损害了开发者的利益,开发商的投资和软件开发工作者的劳动很容易失去尊重和回报,影响开发者的积极性和行业的长期健康发展。因此,从技术上解决软件防盗的想法应运而生,产生了加密锁硬件加密、软件授权书授权、注册码正版验证等很多方式。近年来随着非对称加密算法的技术成熟和推广,软件保护技术方案还加入了采用数字签名加密方式。关于软件保护方面的研究论文和专利非常多,也越来越受到各方关注,但不管是那一种方式,都是在一定程度上增加破解难度防盗版。软件需要发展和进步,一方面软件防盗版成为开发者首要面临的困难与风险,另一方面,软件需要宣传和推广,开发者要将尽可能多的软件功能展示给用户试用选择。许多开发者为了防盗,选择不提供软件试用版本,或者关键功能限制使用,产品宣传采用图片和视频方式,而这种方式毕竟不符合一般商品的销售规则,软件产品比一般商品更具有用户体验要求,没有试用产品的功能和交互习惯,用户无法理性选择,不利于宣传和推广。而另外一些很好的软件,由于不注意盗版问题,采用简单的序列号验证、日期限制、或者注册信息等方式,发布不久即遭到破解,没有给开发者带来合理的回报,让人痛惜。如何让软件最大限度的受到版权保护,又不至于限制软件的宣传推广,是摆在开发者面前的一道难题,传统方式有的采用硬件锁写入版本信息、使用时间限制或者次数限制方式,这种方式的好处是破解难度大,保护效果好,缺陷是成本高,不便于大规模推广。另一种方式是用户发起注册申请,开发商通过申请信息产生加密的授权文件,然后通过邮件等方式,将授权文件交给用户放在指定目录下随程序一起运行,验证程序的合法性。该方式的优点是成本低廉,容易推广,缺陷是技术漏洞多,保护功能脆弱。例如时间限制型授权,只要安装一个系统时间锁定工具即让保护失效。另外还有利用网络授权,用户采用实名或者电话注册申请,开发商人工审批,远程在线口令验证方式,该方式优点是破解风险可控,缺陷是维护成本高。武汉理工大学学报第31卷第6期《软件保护技术的分析及实现》一文中提出用因特网来发布软件的保护方案,从理论上讲具有一定的可行性,但没有讲述申请提交如何实现,是否自动提交。另外没有考虑一个用户注册开发商多个产品的问题,该方案用户信息、软件及版本信息显然不够,没有考虑服务器端的用户及版本管理,存在明显局限性。
中国专利公开号为CN 1621992A的申请案,是利用了数字签名及计算机指纹信息授权软件的版权保护方案,该方案主要针对已购买用户的正版授权,但该方案局限性在于没有考虑用户硬件损坏更换的情况,造成的授权失败问题,还有授权过程较复杂,用于时间或者次数限制的软件试用存在显著不足。基于以上问题和原因,找到一种低成本、易于管理的,既能保护软件版权,又便于软件试用和推广宣传的方法非常迫切。

发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种低成本、易实现、管理简单、版权保护理想,且不影响客户全面体验试用软件功能的基于web服务和签名证书的软件授权试用方法。本发明的目的可以通过以下技术方案来实现:一种基于web服务和签名证书的软件授权试用方法,该方法包括:客户端加载软件验证模块,软件验证模块检查本地是否存在试用许可数字证书,若是,则启动证书验证步骤,验证该试用许可数字证书的合法性及证书的有效时间;若否,则启动申请注册步骤,向web服务器发送申请注册信息,并从web服务器获取带有开发商私有密钥签名的试用许可数字证书。所述的申请注册步骤具体包括:(11)软件验证模块判断是否收到申请注册信息,若是,则执行步骤(12),若否,则退出申请;(12)软件验证模块将申请注册信息进行加密,并通过SOAP协议发送给web服务器;(13)web服务器对收到申请注册信息进行解密,判断该申请注册信息是否合法,若是,则web服务器将该申请注册信息保存至客户管理数据库中,并执行步骤(14),若否,则web服务器将注册失败原因反馈给软件验证模块,退出申请;(14)web服务器生成唯一证书编号,用开发商私有密钥签名并生成试用许可数字证书,将试用许可数字证书发送给软件验证模块;(15)软件验证模块收到试用许可数字证书后,在本地备份该证书,若接收失败或者备份过程错误,则发送注册失败消息到web服务器,若成功备份该证书,则发送验证成功消息到web服务器;(16)客户端完成申请注册和软件授权,开始试用软件。所述的申请注册信息包括硬件指纹信息、用户信息、试用软件名称、软件版本和首次注册时间。所述的步骤(12)具体为:(121)软件验证模块提取硬件指纹信息,包括BIOS编号、硬盘序列号和MAC地址;(122)生成随机码信息,将申请注册信息和随机码信息格式化,同时生成一个随机会话密钥,通过该随机会话密钥加密格式化后的信息;(123)提取开发商公开密钥,通过开发商公开密钥加密随机会话密钥,将加密后的信息通过SOAP协议发送给web服务器。
所述的步骤(13)中的解密具体为:首先用开发商私有密钥解密随机会话密钥,再用随机会话密钥解密申请注册信息。所述的步骤(13)中的将注册失败原因反馈给软件验证模块具体为:web服务器将注册失败原因的特征值,加上软件验证模块发送的随机码信息,以明文方式直接反馈给软件验证模块。所述的证书验证步骤具体包括:(21)软件验证模块提取硬件指纹信息和本地试用许可数字证书的序列号,并对所有信息进行加密,形成证书验证请求信息,并发送给web服务器;(22)web服务器接收到证书验证请求信息后,对信息进行解密,提取证书序列号、硬件指纹信息、随机码,通过查找序列号和硬件指纹信息确定该试用许可数字证书是否合法,并将特征值加上随机码反馈给软件验证模块;(23)软件验证模块根据返回的随机码,提取特征值,确定是否通过证书合法性验证,若是,则执行步骤(24),若否,则显示不通过原因;(24)软件验证模块将证书编号进行加密,形成证书有效期检查请求信息,并发送给web服务器;(25)web服务器接收到证书有效期检查请求信息后,对信息进行解密,提取证书编号,在客户管理数据库中查找该证书首次注册时间、该证书对应软件版本和软件试用期限,通过对比当前web服务器时间、首次注册时间和试用期限,确定该证书是否过期,并向软件验证模块反馈特征值和随机码;(26)软件验证模块提取特征值,并根据特征值显示验证结果。所述的对信息进行加密具体为:生成随机码信息,将信息与随机码信息进行格式化,并用随机密钥加密格式化后的所有信息,用开发商公开密钥加密该随机会话密钥;所述的对信息进行解密具体为:用开发商私有密钥解密随机会话密钥,再用随机会话密钥解密消息。与现有技术相比,本发明具有以下优点:(I)本发明利用因特网web服务提供试用软件的授权验证功能,自动为客户提供软件试用的注册和验证服务,为软件的宣传推广提供便利,节省了传统网络注册的人工授权的时间和维护成本。(2)本发明采用计算机硬件指纹信息和注册信息的验证方法和证书的数字签名技术保护授权版权,具有较高的安全性。(3)本发明在软件验证模块生成随机码,然后在密文中将随机码带到申请或者验证服务,然后在web服务器返回消息时,以明文的方式返回随机码加上特征值,这种方式客户端很容易获取特征值,既有效减少了通讯数量,又有效地避开直接返回特征值带来的特征值暴露风险。(4)在服务器客户管理上,本发明完全采用服务器时间,对于时间限制软件,避免了传统软件保护授权文件方式存在的采用客户端本地时间带来的时间计数漏洞,通过记录登陆次数或者有效验证次数,还可以用于软件限次试用。(5)本发明采用SOAP协议通讯,使得验证模块具有广泛的适应性,没有开发语言局限性,且web服务器和客户端容易部署。


图1为本发明的软件授权验证流程图;图2为本发明的申请注册流程图;图3为本发明的证书验证流程图。
具体实施例方式下面结合附图和具体实施例对本发明进行详细说明。实施例如图1所示,一种基于web服务和签名证书的软件授权试用方法,该方法包括:客户端加载软件验证模块,软件验证模块检查本地是否存在试用许可数字证书,若是,则启动证书验证步骤,验证该试用许可数字证书的合法性及证书的有效时间;若否,则启动申请注册步骤,向web服务器发送申请注册信息,并从web服务器获取带有开发商私有密钥签名的试用许可数字证书。如图2所示,申请注册步骤具体包括:步骤slOl,软件验证模块判断是否收到申请注册信息,若是,则执行步骤(12),开始试用申请,若否,则退出申请。所述的申请注册信息包括硬件指纹信息、用户信息(姓名、邮箱、单位、地址)、试用软件名称、软件版本和首次注册时间。步骤S102,软件验证模块将申请注册信息进行加密,具体为:(11)软件验证模块提取硬件指纹信息,包括BIOS编号、硬盘序列号和MAC地址;(12)生成随机码信息,将申请注册信息和随机码信息格式化,同时用CryptGenKey ()函数生成一个随机会话密钥,通过该随机会话密钥加密格式化后的信息;(13)提取开发商公开密钥,通过开发商公开密钥加密随机会话密钥。步骤sl03,软件验证模块将将加密后的信息通过SOAP协议发送给web服务器。步骤sl04,web服务器对收到申请注册信息进行解密,首先用开发商私有密钥解密随机会话密钥,再用随机会话密钥解密申请注册信息,判断该申请注册信息是否合法,若是,则web服务器将该申请注册信息保存至客户管理数据库中,并生成唯一证书编号,用开发商私有密钥签名并生成试用许可数字证书,将试用许可数字证书发送给软件验证模块,若否,则web服务器将注册失败原因反馈给软件验证模块,退出申请。web服务器并生成试用许可数字证书的具体步骤为:(41)使用微软API函数CoCreateGuidO生成唯一编号,将其格式为化证书序列号;(42)将客户信息输入客户管理数据库,包含硬件指纹信息,试用软件模块与版本信息,首次注册时间和其他附加信息;(43)使用CryptEncodeObjectExO函数编码数字证书,通过函数CryptSignAndEncodeCertificate ()对证书签名,调用WriteFileO函数写入证书编码到文件;(44)将证书文件提取到内存缓冲,将缓冲区、随机码加上特征值,返回给软件验证模块。
所述的将注册失败原因反馈给软件验证模块具体为:web服务器将注册失败原因的特征值(例如11代表成功,-10代表用户存在,-20代表过期),加上软件验证模块发送的随机码信息,以明文方式直接反馈给软件验证模块。步骤S105,软件验证模块收到试用许可数字证书后,在本地备份该证书,若接收失败或者备份过程错误,则发送注册失败消息到web服务器,若成功备份该证书,则发送验证成功消息到web服务器,客户端完成申请注册和软件授权,开始试用软件。如图3所示,证书验证步骤具体包括:步骤slll,软件验证模块提取硬件指纹信息和本地试用许可数字证书的序列号。步骤S112,软件验证模块对所有信息进行加密,生成随机码信息,将信息与随机码信息进行格式化,并用随机密钥加密格式化后的所有信息,用开发商公开密钥加密该随机会话密钥,形成证书验证请求信息,并发送给web服务器。步骤sll3,web服务器接收到证书验证请求信息后,对信息进行解密,用开发商私有密钥解密随机会话密钥,再用随机会话密钥解密消息。步骤S114,web服务器提取证书序列号、硬件指纹信息、随机码,通过查找序列号和硬件指纹信息确定该试用许可数字证书是否合法,并将特征值加上随机码反馈给软件验证模块;软件验证模块根据返回的随机码,提取特征值,确定是否通过证书合法性验证,若是,则执行步骤sll5,若否,则显示不通过原因。步骤S115,软件验证模块提取证书编号,并生成随机码。步骤sll6,软件验证模块对信息进行加密,形成证书有效期检查请求信息,并发送给web服务器。步骤S117,web服务器接收到证书有效期检查请求信息后,对信息进行解密,用开发商私有密钥解密随机会话密钥,再用随机会话密钥解密消息。步骤S118,web服务器提取证书编号,在客户管理数据库中查找该证书首次注册时间、该证书对应软件版本和软件试用期限,通过对比当前web服务器时间、首次注册时间和试用期限,确定该证书是否过期,并向软件验证模块反馈特征值和随机码;软件验证模块提取特征值,并根据特征值显示验证结果。本发明中,web服务器有广域网域名,软件授权采用web服务和签名证书技术;客户端可备份数字证书;《eb服务器提供软件试用的首次申请授权和试用期验证服务,软件验证模块通过SOAP协议与web服务器进行通讯;web服务器返回随机码加特征值为消息验证;web服务器通过硬件指纹、软件版本和申请人信息签发试用证书;试用期通过硬件指纹和软件版本验证证书,通过证书编号验证是否在有效期;软件试用授权由软件验证模块和web服务自动完成,无须人工干预。
权利要求
1.一种基于web服务和签名证书的软件授权试用方法,其特征在于,该方法包括:客户端加载软件验证模块,软件验证模块检查本地是否存在试用许可数字证书,若是,则启动证书验证步骤,验证该试用许可数字证书的合法性及证书的有效时间;若否,则启动申请注册步骤,向web服务器发送申请注册信息,并从web服务器获取带有开发商私有密钥签名的试用许可数字证书。
2.根据权利要求1所述的一种基于web服务和签名证书的软件授权试用方法,其特征在于,所述的申请注册步骤具体包括: (11)软件验证模块判断是否收到申请注册信息,若是,则执行步骤(12),若否,则退出申请; (12)软件验证模块将申请注册信息进行加密,并通过SOAP协议发送给web服务器; (13)web服务器对收到申请注册信息进行解密,判断该申请注册信息是否合法,若是,则web服务器将该申请注册信息保存至客户管理数据库中,并执行步骤(14),若否,则web服务器将注册失败原因反馈给软件验证模块,退出申请; (14)web服务器生成唯一证书编号,用开发商私有密钥签名并生成试用许可数字证书,将试用许可数字证书发送给软件验证模块; (15)软件验证模块收到试用许可数字证书后,在本地备份该证书,若接收失败或者备份过程错误,则发送注册失败消息到web服务器,若成功备份该证书,则发送验证成功消息到web服务器; (16)客户端完成申请注册和软件授权,开始试用软件。
3.根据权利要求2所述的一种基于`web服务和签名证书的软件授权试用方法,其特征在于,所述的申请注册信息包括硬件指纹信息、用户信息、试用软件名称、软件版本和首次注册时间。
4.根据权利要求3所述的一种基于web服务和签名证书的软件授权试用方法,其特征在于,所述的步骤(12)具体为: (121)软件验证模块提取硬件指纹信息,包括BIOS编号、硬盘序列号和MAC地址; (122)生成随机码信息,将申请注册信息和随机码信息格式化,同时生成一个随机会话密钥,通过该随机会话密钥加密格式化后的信息; (123)提取开发商公开密钥,通过开发商公开密钥加密随机会话密钥,将加密后的信息通过SOAP协议发送给web服务器。
5.根据权利要求3所述的一种基于web服务和签名证书的软件授权试用方法,其特征在于,所述的步骤(13)中的解密具体为:首先用开发商私有密钥解密随机会话密钥,再用随机会话密钥解密申请注册信息。
6.根据权利要求3所述的一种基于web服务和签名证书的软件授权试用方法,其特征在于,所述的步骤(13)中的将注册失败原因反馈给软件验证模块具体为:web服务器将注册失败原因的特征值,加上软件验证模块发送的随机码信息,以明文方式直接反馈给软件验证模块。
7.根据权利要求1所述的一种基于web服务和签名证书的软件授权试用方法,其特征在于,所述的证书验证步骤具体包括: (21)软件验证模块提取硬件指纹信息和本地试用许可数字证书的序列号,并对所有信息进行加密,形成证书验证请求信息,并发送给web服务器; (22)web服务器接收到证书验证请求信息后,对信息进行解密,提取证书序列号、硬件指纹信息、随机码,通过查找序列号和硬件指纹信息确定该试用许可数字证书是否合法,并将特征值加上随机码反馈给软件验证模块; (23)软件验证模块根据返回的随机码,提取特征值,确定是否通过证书合法性验证,若是,则执行步骤(24),若否,则显示不通过原因; (24)软件验证模块将证书编号进行加密,形成证书有效期检查请求信息,并发送给web服务器; (25)web服务器接收到证书有效期检查请求信息后,对信息进行解密,提取证书编号,在客户管理数据库中查找该证书首次注册时间、该证书对应软件版本和软件试用期限,通过对比当前web服务器时间、首次注册时间和试用期限,确定该证书是否过期,并向软件验证模块反馈特征值和随机码; (26)软件验证模块提取特征值,并根据特征值显示验证结果。
8.根据权利要求7所述的一种基于web服务和签名证书的软件授权试用方法,其特征在于,所述的对信息进行加密具体为:生成随机码信息,将信息与随机码信息进行格式化,并用随机密钥加密格式化后的所有信息,用开发商公开密钥加密该随机会话密钥; 所述的对信息进行解密具体为:用开发商私有密钥解密随机会话密钥,再用随机会话密钥解密 消息。
全文摘要
本发明涉及一种基于web服务和签名证书的软件授权试用方法,该方法包括客户端加载软件验证模块,软件验证模块检查本地是否存在试用许可数字证书,若是,则启动证书验证步骤,验证该试用许可数字证书的合法性及证书的有效时间;若否,则启动申请注册步骤,向web服务器发送申请注册信息,并从web服务器获取带有开发商私有密钥签名的试用许可数字证书。与现有技术相比,本发明具有低成本、易实现、管理简单、版权保护理想、且不影响客户全面体验试用软件功能等优点。
文档编号H04L9/32GK103078858SQ20121059401
公开日2013年5月1日 申请日期2012年12月31日 优先权日2012年12月31日
发明者周德成, 刘新根, 张 杰, 齐磊, 彭丹, 刘学增 申请人:上海同岩土木工程科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1