一种基于局域网的软件许可证动态授权管理方法

文档序号:6504606阅读:409来源:国知局
一种基于局域网的软件许可证动态授权管理方法
【专利摘要】本发明公开了一种基于局域网的软件许可证动态授权管理方法与系统,本发明涉及局域网络中许可证进行动态授权的领域,解决许可证的网络共享。该有软件许可证动态授权管理系统包括数据库、许可证生成服务器、许可证授权管理服务器以及客户机;其中epoll技术实现并发授权;心跳探测技术实现无效网络的许可证回收;该授权管理方法和系统与传统方式相比,提供高效高质的授权服务。
【专利说明】—种基于局域网的软件许可证动态授权管理方法
【技术领域】
[0001]本发明涉及软件许可证授权【技术领域】,特别是涉及一种基于局域网的软件许可证动态授权管理方法和装置,该方法用于在局域网内对网络浮动许可证进行动态授权和相关管理操作,实现许可证的网络共享。
【背景技术】
[0002]计算机软件作为一种知识密集型的商品化产品,在开发过程中付出的成本往往是硬件价值的数倍乃至数百倍。然而,从软件诞生开始,非法复制问题造成了软件生厂商的重大损失。由此,软件保护技术应运而生。目前,常用的软件保护方法有:软盘加密、密码表加密、序列号保护、Key File保护、⑶-check、软件狗、软件加壳和许可证保护。
[0003]许可证保护方法是序列号加密方法的一个发展,它能实现更多的功能性需求,灵活度更高,特别适合那些大型的功能复杂模块多的商业软件。当用户从网上下载或购买软件时,软件安装好之后第一次启动,一般会有两种情况:要么提示用户安装许可证文件,要么生成一个小文件,这个小文件里面的内容是用户机器的一些指纹信息,也可以是一串加密过的数字。用户将这个小文件发送给软件开发商,软件开发商根据用户的需求来生成不同类型的许可证,如使用期限,使用功能模块等。
[0004]常用的许可证文件分为单机锁定许可证和网络浮动许可证两大类。单机锁定许可证是根据计算机的MAC地址、硬盘号等将软件锁定到特定计算机,适合于单个用户在单台计算机上使用软件的情况。网络浮动许可证是在一台计算机上所生成的若干可共享的许可证文件,用户通过网络与之通讯并取得许可证后,即可在网络中的任何一台客户机上运行相应的应用软件。
[0005]由于单机锁定许可证与特定主机紧密相关,因此,软件的使用许可仅指向网络中的某些特定节点,不可更改到其他机器上使用,该方法具有很大的局限性。而网络浮动许可证可浮动在网络上并动态地分配给网络上正在申请使用许可的各个节点,完成软件许可的浮动并发授权,具有较大的灵活性和较高的使用效率等优点。因此,在大型商业软件的许可证授权管理方法中常采用网络浮动许可证来实现软件许可证的动态发放与回收。目前,随着客户端并发连接访问数目的增多,授权服务器承载的压力增大,严重影响了服务器的性能,导致用户无法访问或不能及时获得授权服务,不能满足日益增长的服务需求。此外,当客户端异常掉线时,服务器也不能及时获知该情况,使得授权无效占用而导致别的软件用户无法申请得到合法授权。
[0006]
因此,在局域网中,针对功能复杂、模块众多的大型商业软件,为了有效保护软件版权,最大化地为客户端软件的并发授权申请提供良好的高并发访问服务,最终提高软件的经济效率,我们需要设计一种更灵活、更高效的软件授权管理方法来实现对网络浮动许可证文件的动态共享。
【发明内容】

[0007]本发明提供了一种基于局域网的软件许可证动态授权管理系统。该系统用于在局域网内对网络浮动许可证进行动态授权和相关管理操作,实现许可证的网络共享。
[0008]本发明为解决上述技术问题所采用的技术方案是:
[0009]1.一种基于局域网的软件许可证动态授权管理方法,其特征在于包含以下步骤:
[0010]步骤一.客户端发送计算机硬件指纹信息到许可证授权管理服务器;
[0011]步骤二.许可证授权管理服务器解析客户端的申请授权信息;
[0012]步骤三.根据步骤二的信息许可证授权管理服务器执行:
[0013]三-1.申请授权信息不符合许可证规则,则提示用户重新申请许可证,跳转到步骤十一;
[0014]三-2.申请授权信息符合许可证规则,则进入步骤四;
[0015]步骤四.许可证授权管理服务器向许可证生成服务器申请浮动许可证文件;
[0016]步骤五.许可证生成服务器生成网络浮动许可证;
[0017]步骤六.许可证生成服务器将网络浮动许可证文件的相关信息存储于数据库,继而发送许可证到许可证授权管理服务器进行绑定;
步骤七.许可证授权管理服务器验证浮动许可证文件:
七-1.许可证文件不符合验证规则,则发送给客户端验证失败的消息,跳转到步骤十一 ;
七-2.许可证文件通过验证规则,检测最大并发数:
(七-2-a).若用户量已达到最大并发数,则发送给客户端申请不成功的信息,跳转到步骤十一;
(七-2-b).若用户量未达到最大并发数,允许申请授权的最大客户端用户数,且并发计数器加一;
步骤八.许可证授权服务器启动守护程序;
步骤九.发送验证通过信息到客户机;
步骤十.授权成功后,启动退出策略:
(十-1).如果软件没有正常启动,则提示用户并且将授权归还服务器后退出程序;
(十-2).如果软件正常使用后退出,则先将授权归还服务器后退出程序;
步骤十一.执行程序结束。
2.进一步地,其特征在于许可证授权管理服务器采用印oil技术实现并发授权技术。
3.进一步地,其特征在于所述许可证授权服务器守护程序包含心跳探测技术,步骤如
下:
3-1.软件获取许可证授权管理服务器授权运行时,将本次链接信息记录到许可证授权管理服务器的希哈表中,flag值至0,同时客户端定时器开始计时,管理定时器开始计时;3-2.软件运行过程中,客户端软件每间隔时间Tc向许可证授权管理服务器发送一个心跳报文,Tc为所述客户端定时器的预先设置时间;
3-3.许可证授权管理服务器未接收到心跳报文,则所述希哈表中该条授权信息的flag的值不变;
3-4.许可证授权管理服务器接受到心跳报文,则将所述希哈表中该条授权信息的flag的值至I,表示网络存活;
3-5.许可证授权管理服务器每间隔时间Ts (Ts>Tc)遍历所述希哈表,Ts为管理定时器的预先设置时间,并根据每一项flag的键值选择执行;
(3-5-1) flag值为I则保持网络,并将值I至为O ;
(3-5-2)flag值为O则认为客户端软件非正常状态,首先回收软件授权,并将该条连接信息从希哈表中删除,最大并发数减1,退出程序。
4.进一步地,其特征在于步骤一、步骤二中发送的申请授权信息由DES算法加密。
5.进一步地,其特征在于所述步骤五中网络浮动许可证采用MD5或SHA或DE5加密算法实现许可证加密。
6.进一步地,其特征在于验证所述许可证规则的步骤:
6-1.是否有许可证文件,是则继续执行6-2 ;否则执行步骤三-1 ;
6-2.是否是浮动许可证文件,是则继续执行6-3 ;否则执行步骤三-1 ;
6-3.许可证文件是否被修改,否则继续执行6-4 ;是则执行步骤三-1 ;
6-4.用户是否被授权,是则执行步骤三-2;否则执行步骤三-1。
7.进一步地,其特征在于步骤七中所述验证规则的验证步骤如下:
7-1.用户是否被授权,是则执行7-2,否则执行步骤七-1;
7-2.验证申请的模块是否被授权,是则执行步骤七_2,否则执行步骤步骤七-1 ;
8.一种基于局域网的软件许可证动态授权管理系统,该系统包括许可证授权管理服务器虚拟连接上游许可证生成服务器虚以及下游的客户端,其特征在于所述许可证生成服务器包含数据库用于存储许可证信息;许可证生成服务器用于生成加密网络浮动许可证;许可证授权管理服务器用于管理与回收授权许可。
9.进一步地,其特征是心跳探测模块位于许可证授权管理服务器和客户端建立的虚拟网络中,心跳探测模块包含客户端定时器、管理定时器、希哈表。
10.进一步地,其特征在于所述步数据库存储许可证信息包括:种子文件地址、需要授权的子模块信息、许可证文件地址、被授权的用户、授权类型。
11.进一步地,其特征在于所述计算机硬件指纹信息包含:网卡MAC地址、CPU序列号或磁盘序列号或BIOS序列号具有唯一性的指纹信息。
[0018]为了增加软件开发商现有软件的收入流,软件许可证动态授权管理方法采取了灵活度高的软件许可证授权方式。它根据软件用户的需求数来动态发放浮动许可证,完成对软件功能模块及其使用期限的限制,除此之外,它还能限制网络中使用软件的用户数目。从某种角度上来讲这种授权管理方式并不是把软件的授权与软件用户的机器绑定死,只要是在授权的机器当中,均可以在所限制的数目内同时运行授权软件,即实现软件许可证的网络共享。如果网络中正常使用的授权软件实例个数超过了授权限制,即使是授权的机器也无法正常启动软件。同时,许可证授权管理服务器还具有回收软件授权的功能。当网络中的软件用户正常退出软件之后,服务器可以回收该软件模块的授权,便于其他软件用户申请使用;当软件用户使用的计算机发生异常短线,如系统崩溃死机,电源断电以及网线无意间断开网络,服务器可以通过与客户端配合的心跳机制,在一定时间内若收不到客户端的心跳包则认为其不再存活,从而回收该客户端的软件授权。这种动态的软件授权管理方式非常适合局域网中用户共同使用的软件。[0019]在本发明的框架中,为提高软件的安全性,许可证生成服务器采用MD5、SHA, DE5等加密算法生成一种基于机器指纹的网络浮动许可证;数据库用于存放许可证生成服务器中所生成的许可证文件的具体信息,包括种子文件地址、需要授权的子模块信息、许可证文件地址、被授权的用户、授权的类型等;客户端用于连接许可证授权管理服务器,提出授权申请,并在用户退出时通知许可证授权管理服务器释放许可证资源。许可证授权管理服务器根据浮动许可证的授权信息,利用并发授权技术和心跳探测技术来对网络中的客户端软件进行动态授权发放和回收。服务器在启动时首先校验浮动许可证文件的有效性,运行服务器的机器身份认证,通过这些校验之后,服务器读取许可证文件的授权信息,包括浮动许可证授权的客户机器的身份信息,授权的软件模块,使用期限及相应的授权并发数目,随后等待客户端软件用户的软件授权申请或用户软件退出回收授权。
[0020]在该机制保护下的软件,软件启动时调用客户端模块来访问服务器并申请软件授权。服务器与客户端之间要实现一套安全的通信交互协议,客户端模块启动时,会采集机器指纹信息,并将该指纹信息和申请的授权信息按照协议,加密之后发送到服务器。服务器端解析客户端的申请授权信息并作出响应,客户端模块根据服务器的响应结果来采取软件的下一步执行操作。授权成功之后则软件启动正常,否则提示用户并退出。用户正常退出软件之前,会将授权归还给服务器,以便其他用户申请使用。如果客户端软件异常退出,服务器将在某段时间内接受不到客户端发送的心跳包,从而认为其已网络死亡,并回收其软件功能模块的授权和其他系统资源等。
[0021](I)并发授权技术
随着客户端并发连接访问数目的增多,服务器承载的压力加大,严重影响服务器的服务性能,导致用户无法访问或不能及时获得服务。基于select/poll等传统的I/O复用轮询技术的服务器渐渐不能满足日益增长的服务需求。许可证授权管理服务器采用了目前Linux2.6内核提供的epoll技术。epoll是Linux下多路复用I/O接口 select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合;另一原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核I/O事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/poll那种1/0事件的电平触发(Level Triggered)夕卜,还提供了边沿触发(Edge Triggered),这就使得用户空间程序有可能缓存1/0状态,减少epoll_wait/印oll_pwait的调用,提高应用程序效率。该技术具有良好的高并发访问服务性能,它能最大化地为客户端软件的并发授权申请提供高效的服务。
[0022](2)心跳探测技术
软件在获得许可证授权管理服务器的授权运行后,在客户端和服务器之间维持着一个虚拟的连接状态,如果这个虚拟连接异常断开之后,客户端即使正常退出,在向服务器归还授权时将归还不成功,而且服务器也不知道客户端掉线了,无法回收授权,造成授权被无效占用。为此,在服务器和客户端之间采用心跳机制来防止客户端的异常断线,让服务器知道客户端软件是网络存活的。即使客户端异常断开,服务器在某段时间后也能发现客户端异常掉线而网络死亡,从而回收授权,防止授权无效占用而导致别的软件用户无法申请得到合法授权。该机制需要客户端和服务器端之间的配合才能使服务器有效回收授权资源。每个客户端连接至服务器,服务器都有与之对应的Socket连接。如果客户端软件获得了授权管理服务器的授权,客户端和服务器的底层通信模块会一直保持这个连接状态直到客户端退出。由于客户端模块中包含了发送心跳包的定时器,软件在运行的整个过程中,会由定时器每隔时间Tc通过客户端模块向服务器发送心跳包信息,以告知服务它是网络存活的。
[0023]服务器将所有与客户端对应的Socket连接描述符记录到一张Clients_List表中,并通过这些Socket连接描述符9来了解每个客户端的信息,而且在有新的客户端授权成功后,服务器会将新的Socket连接描述符加入那张表中。Clients_List表是一张哈希表,因为哈希表的查找速度很快,它以Socket连接描述符作为键,Flag标志符作为值,键值一一对应。Flag标志符有两种值,“O”或“ I ”,“O”服务器表示没有在规定时间内接收到客户端的心跳,即服务器认为其网络死亡并采取相应动作,回收软件授权和其他资源等。“I”表示服务器在规定时间内收到了客户端的心跳包信息,即服务器认为其是网络存活的。
[0024]服务器里也设定了定时器,每隔时间Ts (Ts>Tc)会遍历Client_List表,根据每一项键值的情况采取动作,并将所有键对应的值重新设置为“O”。服务器在收到客户端心跳时,会去修改其该表中其Socket连接描述符键对应的值为“I”。在下一个Ts遍历该表时,如果发现该值为“0”,则认为该键Socket连接描述符对应的客户端软件已网络死亡,回收客户端软件的授权,并从Client_List表中删除该项。如果发现该值为“ 1”,则重置为“0”,等待下一次客户端的心跳包到达。
[0025]由于在网络中,一般是局域网,心跳包从客户端通过网络传送到达至服务器需要一定时间,这里特别要注意时间段Tc和Ts的设置,要使它们的时间差足够客户端的心跳包到达服务器,才能取得比较好的效果。如果时间差值小或Ts小于Tc,客户端还来不及发送心跳包或心跳包还在网络的传送过程中,服务器在Ts后遍历发现其标志为“0”,认为客户端网络死亡从而回收授权。事实上客户端是网络存活的,或已发送心跳包而服务器未收到,这样是不符合逻辑的, 也不科学。因此必须要设置Ts大于Tc,并且使其差值设置足够。
[0026](3)通信协议
许可证授权管理服务器与客户端模块之间的信息通信有一套简单的通信协议。客户端向服务器发出申请信息,服务器根据协议解析收到的信息,并根据浮动许可证授权的情况响应,客户端收到服务器的响应信息,根据协议解析,从而判断是否获得授权启动软件,软件退出时将授权归还给服务器,服务器回收授权以防止授权被占用,便于其他软件用户申请。具体协议内容格式如表1、表2、表3。
对象 I格式I描述
WFm~机器指纹:申客户端首先获取机器指纹信息,然后将该信息和申请模块名称以及申请标志“on”三段请模块:申请信息以“:”分开形成一个长字符串,采用ms算法加密该字符串,将加密结果发送给服
__务器,等待服务器响应。_
服务器授权模块:相服务器接收到客户端的加密信息,采用DES解密,解析发现客户端是要申请某软件模块应标志的授权,便根据授权的情况作出响应,将授权模块和响应标志以“”分开,DES加密后发__I送给客户端,由客户端模块解密和解析响应的内容。并根据内容判断进行下一步动作。[0027]表1客户端申请授权协议格式表
【权利要求】
1.一种基于局域网的软件许可证动态授权管理方法,其特征在于包含以下步骤: 步骤一.客户端发送计算机硬件指纹信息到许可证授权管理服务器; 步骤二.许可证授权管理服务器解析客户端的申请授权信息; 步骤三.根据步骤二的信息许可证授权管理服务器执行: 三-1.申请授权信息不符合许可证规则,则提示用户重新申请许可证,跳转到步骤十一 ; 三-2.申请授权信息符合许可证规则,则进入步骤四; 步骤四.许可证授权管理服务器向许可证生成服务器申请浮动许可证文件; 步骤五.许可证生成服务器生成网络浮动许可证; 步骤六.许可证生成服务器将网络浮动许可证文件的相关信息存储于数据库,继而发送许可证到许可证授权管理服务器进行绑定; 步骤七.许可证授权管理服务器验证浮动许可证文件: 七-1.许可证文件不符合验证规则,则发送给客户端验证失败的消息,跳转到步骤十一 ; 七-2.许可证文件通过验证规则,检测最大并发数: (七-2-a).若用户量已达到最大并发数,则发送给客户端申请不成功的信息,跳转到步骤十一; (七-2-b).若用户量未达到最大并发数,允许申请授权的最大客户端用户数,且并发计数器加一; 步骤八.许可证授权服务器启动守护程序; 步骤九.发送验证通过信息到客户机; 步骤十.授权成功后,启动退出策略: (十-1).如果软件没有正常启动,则提示用户并且将授权归还服务器后退出程序; (十-2).如果软件正常使用后退出,则先将授权归还服务器后退出程序; 步骤十一.执行程序结束。
2.根据权利要求1所述一种基于局域网的软件许可证动态授权管理方法,其特征在于许可证授权管理服务器采用epoll技术实现并发授权技术。
3.根据权利要求1所述一种基于局域网的软件许可证动态授权管理方法,其特征在于所述许可证授权服务器守护程序包含心跳探测技术,步骤如下: 3-1.软件获取许可证授权管理服务器授权运行时,将本次链接信息记录到许可证授权管理服务器的希哈表中,flag值至0,同时客户端定时器开始计时,管理定时器开始计时;3-2.软件运行过程中,客户端软件每间隔时间Tc向许可证授权管理服务器发送一个心跳报文,Tc为所述客户端定时器的预先设置时间; 3-3.许可证授权管理服务器未接收到心跳报文,则所述希哈表中该条授权信息的flag的值不变; 3-4.许可证授权管理服务器接受到心跳报文,则将所述希哈表中该条授权信息的flag的值至I,表示网络存活; 3-5.许可证授权管理服务器每间隔时间Ts (Ts>Tc)遍历所述希哈表,Ts为管理定时器的预先设置时间,并根据每一项flag的键值选择执行,:(3-5-1) flag值为I则保持网络,并将值I至为O ; (3-5-2)flag值为O则认为客户端软件非正常状态,首先回收软件授权,并将该条连接信息从希哈表中删除,最大并发数减1,退出程序。
4.根据权利要求1所述一种基于局域网的软件许可证动态授权管理方法,其特征在于步骤一、步骤二中发送的申请授权信息由DES算法加密。
5.根据权利要求1所述一种基于局域网的软件许可证动态授权管理方法,其特征在于所述步骤五中网络浮动许可证采用MD5或SHA或DE5加密算法实现许可证加密。
6.根据权利要求1所述一种基于局域网的软件许可证动态授权管理方法,其特征在于验证所述许可证规则的步骤: 6-1.是否有许可证文件,是则继续执行6-2 ;否则执行步骤三-1 ; 6-2.是否是浮动许可证文件,是则继续执行6-3 ;否则执行步骤三-1 ; 6-3.许可证文件是否被修改,否则继续执行6-4 ;是则执行步骤三-1 ; 6-4.用户是否被授权,是则执行步骤三-2;否则执行步骤三-1。
7.根据权利要求1所述一种基于局域网的软件许可证动态授权管理方法,其特征在于步骤七中所述验证规则的验证步骤如下: 7-1.用户是否被授权,是则执行7-2,否则执行步骤七-1; 7-2.验证申请的模块是否被授权,是则执行步骤七_2,否则执行步骤步骤七-1 ; 一种基于局域网的软件许可证动态授权管理系统,该系统包括许可证授权管理服务器虚拟连接上游许可证生成服务器虚以及下游的客户端,其特征在于所述许可证生成服务器包含数据库用于存储许可证信息;许可证生成服务器用于生成加密网络浮动许可证;许可证授权管理服务器用于管理与回收授权许可。
8.根据权利要求8所述一种基于局域网的软件许可证动态授权管理系统,其特征是心跳探测模块位于许可证授权管理服务器和客户端建立的虚拟网络中,心跳探测模块包含客户端定时器、管理定时器、希哈表。
9.根据权利要求8所述一种基于局域网的软件许可证动态授权管理系统,其特征在于所述步数据库存储许可证信息包括:种子文件地址、需要授权的子模块信息、许可证文件地址、被授权的用户、授权类型。
10.根据权利要求8所述一种基于局域网的软件许可证动态授权管理系统,其特征在于所述计算机硬件指纹信息包含:网卡MAC地址、CPU序列号或磁盘序列号或BIOS序列号具有唯一性的指纹信息。
【文档编号】G06F21/12GK103838987SQ201310252358
【公开日】2014年6月4日 申请日期:2013年6月24日 优先权日:2013年6月24日
【发明者】李玉军, 王润, 廖郭波, 张强 申请人:电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1