会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 密码体制 / 基于公钥密码体制的软件授权系统

基于公钥密码体制的软件授权系统

申请号 CN201310456961.9 申请日 2013-09-30 公开(公告)号 CN103491097B 公开(公告)日 2016-07-13
申请人 华中师范大学; 发明人 张昭理; 杨宗凯; 刘三女牙; 易宝林; 舒江波; 孙建文; 郑婷; 彭晛;
摘要 本发明公开了一种基于公钥密码体制的软件授权系统,包括服务器端和客户端,其中服务器端包括机构授权证书生成模块、接收模块、验证模块和用户授权证书生成模块;用户授权证书生成模块具体包括:数字签名模块,用RSA私钥对用户注册文件中的计算机硬件特征h0进行数字签名,生成s0;加密串生成模块,用于将获取的软件版本信息v、用户信息u、授权期限ex、当前时间cur以及s0进行预设的混合运算生成加密串signB64;证书生成模块,用于将加密串signB64与RSA公钥一起生成用户授权证书。本发明可防止软件被非法拷贝,同时由软件发行者集中管理,方便软件进行升级、跟踪及为用户推送个性化服务等售后管理。
权利要求

1.一种基于公钥密码体制的软件授权系统,其特征在于,包括服务器端和客户端,其中:服务器端包括:

机构授权证书生成模块,用于根据机构用户的申请信息加密生成机构授权证书;

接收模块,用于接收由客户端传来的机构授权证书和注册文件;

验证模块,用于对接收的机构授权证书进行解密,并对解密后的信息进行验证;

用户授权证书生成模块,用于在验证时,对注册文件进行加密,生成用户授权证书并返回给客户端;

客户端包括:

注册文件获取模块,用于在用户初次使用软件时,获取包含计算机硬件特征、用户信息、软件版本信息的XML格式的注册文件;

用户授权证书存储模块,用于存储用户授权证书;

解密和验证模块,用于客户启动软件时,对用户授权证书进行解密及验证,若解密验证成功,则启动软件,否则,软件不启动;

其中,用户授权证书生成模块具体包括:

数字签名模块,用RSA私钥对用户注册文件中的计算机硬件特征h0进行数字签名,生成s0;

加密串生成模块,用于将获取的软件版本信息v、用户信息u、授权期限ex、当前时间cur以及s0进行预设的复杂混合运算生成加密串signB64;

证书生成模块,用于将加密串signB64与RSA公钥一起生成用户授权证书。

2.根据权利要求1所述的系统,其特征在于,所述加密串生成模块进行预设的复杂混合运算时具体用于:i.获取系统当前时间cur,并执行操作ex+cur后获取字节数组b8;

ii.服务器端生成22位随机数ran22,并与b8、v、u组合成32位字节数组bt32;

iii.将bt32与b8的第8个字节b8[8]执行操作 产生btxor32;

iv.执行操作 产生mixXor32;

v.合并mixXor32与s0产生mixFinal64;

vi.对mixFinal64进行Base64编码产生signB64。

3.根据权利要求1所述的系统,其特征在于,所述计算机硬件特征包括BIOS编号、硬盘序列号和MAC地址。

4.根据权利要求1所述的系统,其特征在于,所述用户信息包括用户ID和职称。

5.根据权利要求1所述的系统,其特征在于,服务器端还包括权限设置模块,用于机构用户登录服务器端时查询或修改其机构下个体软件用户的权限。

说明书全文

基于公钥密码体制的软件授权系统

技术领域

[0001] 本发明涉及软件授权方法,尤其涉及一种基于公钥密码体制的软件授权系统。

背景技术

[0002] 盗版的存在已经成为制约计算机软件业发展的重要因素,软件具有易复制性、复制成本低等性质,如今企业亟需采取技术措施来保护自己的版权。因此研究设计出一种有效的、实用的且具有安全强度的软件授权方法,具有重要的现实意义。
[0003] 在公钥密码体制中,加密密钥不同于解密密钥。迄今为止的所有公钥密码体系中,RSA算法是最著名、使用最广泛的一种。RSA算法很好地解决了对称加密算法的密钥的利用公开信道传输分发的难题,还可利用RSA算法来完成对信息的数字签名以对抗信息的否认与抵赖,同时还可以利用数字签名较容易地发现攻击者对信息的非法篡改,以保护数据信息的完整性。
[0004] 常用的软件保护方式一般分为软加密和硬加密两种。硬加密主要是指加密狗或加密锁。硬件加密锁的优点是授权发放简单、可移动。但是随着互联网的使用越来越普及,也暴露出不少缺点:1)适用于传统的一次性永久授权,无法实现试用版本和按需购买;2)硬件的存在带来额外的生产、初始化、物流、安装和维护的成本;3)安装驱动和客户端组件以及额外的硬件设备影响了客户的使用体验;4)无法实现基于互联网的电子化发行;5)难以进行升级、跟踪及售后管理。软加密不依靠特别硬件来实现的对软件的保护技术。它的最大优势在于极低的加密成本。目前主要有序列号方案、License文件方案、密码表方案等。其中License文件的授权机制逐渐得到广泛的应用,软件商可以限定只有购买了License的用户才能在特定的机器上使用软件产品。License文件机制主要有以下功能:1)应用程序可以创建以及验证绑定给用户、系统等实体的license;2)防止用户随意拷贝软件和license;3)license可以是永久性的或者临时性的;4)license的验证由JAVA Security API提供的数字签名机制来实现,安全性有保证。但是目前的license文件授权机制在机构管理环境下使用还存在明显的不足,它无法实现按用户级别进行模块化的授权。机构管理员角色无法有效管理其下普通用户的授权信息。

发明内容

[0005] 本发明要解决的技术问题在于针对现有技术中加密技术的不足之处,提供一种方便在机构环境下适用,基于公钥密码体制,可以在互联网环境下使用,有效的、实用的且具有安全强度的软件授权系统。
[0006] 本发明解决其技术问题所采用的技术方案是:
[0007] 提供一种基于公钥密码体制的软件授权系统,包括服务器端和客户端,其中:
[0008] 服务器端包括:
[0009] 机构授权证书生成模块,用于根据机构用户的申请信息加密生成机构授权证书;
[0010] 接收模块,用于接收由客户端传来的机构授权证书和注册文件;
[0011] 验证模块,用于对接收的机构授权证书进行解密,并对解密后的信息进行验证;
[0012] 用户授权证书生成模块,用于在验证时,对注册文件进行加密,生成用户授权证书并返回给客户端;
[0013] 客户端包括:
[0014] 注册文件获取模块,用于在用户初次使用软件时,获取包含计算机硬件特征、用户信息、软件版本信息的XML格式的注册文件;
[0015] 用户授权证书存储模块,用于存储用户授权证书;
[0016] 解密和验证模块,用于客户启动软件时,对用户授权证书进行解密及验证,若解密验证成功,则启动软件,否则,软件不启动;
[0017] 其中,用户授权证书生成模块具体包括:
[0018] 数字签名模块,用RSA私钥对用户注册文件中的计算机硬件特征h0进行数字签名,生成s0;
[0019] 加密串生成模块,用于将获取的软件版本信息v、用户信息u、授权期限ex、当前时间cur以及s0进行预设的混合运算生成加密串signB64;
[0020] 证书生成模块,用于将加密串signB64与RSA公钥一起生成用户授权证书。
[0021] 本发明所述的系统中,所述加密串生成模块进行复杂混合运算时具体用于:
[0022] i.获取系统当前时间cur,并执行操作ex+cur后获取字节数组b8;
[0023] ii.服务器端生成22位随机数ran22,并与b8、v、u组合成32位字节数组bt32;
[0024] iii.将bt32与b8的第8个字节b8[8]执行操作b32 b8[8]产生btxor32;
[0025] iv.执行操作h0 btxor32产生mixXor32;
[0026] v.合并mixXor32与s0产生mixFinal64;
[0027] vi.对mixFinal64进行Base64编码产生signB64。
[0028] 本发明所述的系统中,所述计算机硬件特征包括BIOS编号、硬盘序列号和MAC地址。
[0029] 本发明所述的系统中,所述用户信息包括用户ID和职称。
[0030] 本发明所述的系统中,服务器端还包括权限设置模块,用于机构用户登录服务器端时查询或修改其机构下个体软件用户的权限。
[0031] 本发明产生的有益效果是:本发明的软件授权系统使用RSA算法来保证用户授权证书的安全性和完整性,用户授权证书可以使用互联网等公开信道传输。因此,本发明的软件授权方法,软件可以实现基于互联网的电子化发行,并且可以实现软件的试用版本授权和按需购买授权。另外,本发明将用户授权证书与用户计算机硬件特征、用户信息、软件版本信息进行绑定,防止软件被非法拷贝,同时由软件发行者集中管理,方便软件进行升级、跟踪及为用户推送个性化服务等售后管理。
[0032] 再者,本发明方便机构管理员用户查询和管理其下不同级别用户的授权,使不同级别用户有针对性的使用软件的不同模块。

附图说明

[0033] 下面将结合附图及实施例对本发明作进一步说明,附图中:
[0034] 图1是本发明实施例的基于公钥密码体制的软件授权方法流程图;
[0035] 图2是本发明实施例客户端申请机构授权证书的示意图;
[0036] 图3是本发明实施例用户授权证书的生成示意图。

具体实施方式

[0037] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0038] 本发明实施例基于公钥密码体制的软件授权系统,如图1所示,包括服务器端和客户端,其中:
[0039] 服务器端包括:
[0040] 机构授权证书生成模块,用于根据机构用户的申请信息加密生成机构授权证书;所述机构授权证书为服务器端根据机构用户的申请信息加密生成,并提供给机构用户管理保存,机构用户分发给个体软件用户,个体软件用户只有将机构授权证书与注册文件同时上传至服务器端才能进行授权操作。机构授权证书的内容包括机构信息、购买软件版本、购买授权数量等基本信息;
[0041] 所述注册文件为软件用户初次使用软件时,从客户端获取的包含计算机硬件特征、用户信息、软件版本信息的XML格式文件。本发明的实施例中,所述计算机硬件特征包括BIOS编号、硬盘序列号和MAC地址等。所述用户信息包括用户ID和职称等。
[0042] 接收模块,用于接收由客户端传来的机构授权证书和注册文件;
[0043] 验证模块,用于对接收的机构授权证书进行解密,并对解密后的信息进行验证;在本发明的一个实施例中,对解密后的信息进行验证具体为:首先,服务器端检查数据库里是否存在客户端传来的机构ID,若存在,则判断机构授权数量是否有余;否则,退出验证。其次,服务器端判断客户端传来的能代表计算机硬件特征的机器码是否在数据库记录里唯一,若是,则根据授权数量是否剩余来确定返回给客户端的是正式版或是试用版的用户授权证书,若否,则判断库里对应该机器码申请的用户授权证书是否已过期,若是,则退出验证,否则通过验证。
[0044] 用户授权证书生成模块,用于在验证时,对注册文件进行加密,生成用户授权证书并返回给客户端;
[0045] 客户端包括:
[0046] 注册文件获取模块,用于在用户初次使用软件时,获取包含计算机硬件特征、用户信息、软件版本信息的XML格式的注册文件;
[0047] 用户授权证书存储模块,用于存储用户授权证书;
[0048] 解密和验证模块,用于客户启动软件时,对用户授权证书进行解密及验证,若解密验证成功,则启动软件,否则,软件不启动;
[0049] 其中,用户授权证书生成模块具体包括:
[0050] 数字签名模块,用RSA私钥对用户注册文件中的计算机硬件特征h0进行数字签名,生成s0;
[0051] 加密串生成模块,用于将获取的软件版本信息v、用户信息u、授权期限ex、当前时间cur以及s0进行预设的混合运算生成加密串signB64;
[0052] 证书生成模块,用于将加密串signB64与RSA公钥一起生成用户授权证书。
[0053] 本发明的一个实施例中,所述加密串生成模块进行复杂混合运算时具体用于:
[0054] i.获取系统当前时间cur,并执行操作ex+cur后获取字节数组b8;
[0055] ii.服务器端生成22位随机数ran22,并与b8、v、u组合成32位字节数组bt32;
[0056] iii.将bt32与b8的第8个字节b8[8]执行操作b32 b8[8]产生btxor32;
[0057] iv.执行操作h0 btxor32产生mixXor32;
[0058] v.合并mixXor32与s0产生mixFinal64;
[0059] vi.对mixFinal64进行Base64编码产生signB64。
[0060] 本发明的另一实施例中,可选择另一中混合运算,具体为:
[0061] 1、执行ex+cur,获取字节数组b8;
[0062] 2、服务器端生成20位随机数ran20,并与b8、v、u、p(2个字节)、合并生成32位字节数组bt32;
[0063] 3、执行模运算:h0 mod bt32,生成sign32;
[0064] 4、执行异或运算: b8的第八个字节b8[8]  sign32生成btxor32;
[0065] 5、执行异或操作: h0  btxor32 产生mixXor32;
[0066] 6、合并mixXor32与s0,生成mixFinal64;
[0067] 7、对mixFinal64进行Base64编码产生signB64。
[0068] 本发明的实施例中,服务器端还包括权限设置模块,用于机构用户登录服务器端时查询或修改其机构下个体软件用户的权限。
[0069] 如图2所示,本发明的一个实施例中,客户端申请机构授权证书的步骤具体包括:服务器端接收客户端传来的机构信息、购买软件版本、购买授权数量等基本信息,对这些基本信息进行加密,生成机构授权证书,并将机构的基本信息与机构授权信息保存至数据库中,然后将机构授权证书返回给客户端。
[0070] 机构用户可以登录服务器端查询或修改其机构下个体软件用户的权限,从而使不同级别用户有针对性的使用软件的不同模块。
[0071] 如图3所示,本发明的一个较佳实施例中,基于公钥密码体制的软件授权系统的软件授权方法具体包括:
[0072] (1)软件发行者使用RSA算法生成一对密钥(公钥P和私钥S),S由软件发行者秘密保存,P可公开下载;
[0073] (2)软件用户初次使用软件时,软件将用户的计算机硬件特征、用户信息、软件版本等信息生成XML格式的注册文件,用户将注册文件(License-A.dat)提交给软件发行者;
[0074] (3)软件发行者使用SHA1算法,用(1)中的S对(2)中License-A.dat文件里的计算机硬件特征进行数字签名;
[0075] (4)软件发行者将软件版本信息、授权期限和当前时间等信息一起进行特定的混合运算(上述实施例中已经具体描述,在此不赘述);
[0076] (5)软件发行者将(3)中的加密信息、(4)中的混合信息与(1)中的P一起生成用户授权证书(License-B.dat),返还给软件用户;
[0077] (6)软件使用(1)中的P对(3)中的加密信息进行解密验证,并通过(4)中混合运算的逆运算获取授权期限等授权信息;若验证通过并且授权期限有效,则软件开始正常运行,否则软件停止运行。
[0078] 本发明基于公钥密码体制的软件授权系统使用RSA算法和SHA1算法保证用户授权证书的安全性和完整性,用户授权证书可以使用互联网等公开信道传输。因此,本发明可以实现基于互联网的电子化发行,并且可以实现软件的试用版本授权和按需购买授权。
[0079] 本发明将用户授权证书与用户计算机硬件特征、用户信息、软件版本信息进行绑定,防止软件被非法拷贝,同时由软件发行者集中管理,方便软件进行升级、跟踪及为用户推送个性化服务等售后管理。
[0080] 应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。