CN115357870B - 一种基于软件完成的授权管控的方法及系统 - Google Patents

一种基于软件完成的授权管控的方法及系统 Download PDF

Info

Publication number
CN115357870B
CN115357870B CN202211284726.3A CN202211284726A CN115357870B CN 115357870 B CN115357870 B CN 115357870B CN 202211284726 A CN202211284726 A CN 202211284726A CN 115357870 B CN115357870 B CN 115357870B
Authority
CN
China
Prior art keywords
certificate
service
software
authorization
resource
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211284726.3A
Other languages
English (en)
Other versions
CN115357870A (zh
Inventor
王孟华
王乐珩
张金银
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Bizhi Technology Co ltd
Original Assignee
Hangzhou Bizhi Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Bizhi Technology Co ltd filed Critical Hangzhou Bizhi Technology Co ltd
Priority to CN202211284726.3A priority Critical patent/CN115357870B/zh
Publication of CN115357870A publication Critical patent/CN115357870A/zh
Application granted granted Critical
Publication of CN115357870B publication Critical patent/CN115357870B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于软件完成的授权管控的方法及系统,所述方法包括如下步骤:步骤S1.授权服务模块进行设备注册,并生成唯一的识别码;步骤S2.证书生成管理模块使用识别码生成证书;步骤S3.授权服务模块安装证书,校验证书合法性;步骤S4.激活证书,记录当前时间,更新证书状态;步骤S5.定时更新证书状态,记录证书使用天数和资源使用情况;步骤S6.资源使用采集模块,采集实现软件功能的所有微服务使用CPU和内存资源使用信息;步骤S7.定时统计心跳发送来的资源使用信息,进行心跳检测和资源管控。本技术方案无需绑定所有客户提供的集群机器,仅需绑定少数几台机器,即可达到管控效果。

Description

一种基于软件完成的授权管控的方法及系统
技术领域
本发明涉及计算机科学领域,尤其涉及一种基于软件完成的授权管控的方法及系统。
背景技术
当一款软件进行商业用途时,保护软件开发商的知识产权与核心技术尤为重要,软件的使用期限,范围,权限是产品和用户共同关注的问题。软件授权目前包含两种方式:软件授权和硬件授权。硬件授权是一种硬件和软件结合的方式,通过安装在并行口或USB上硬件电路(俗称加密锁)和软件函数进行数据交换,当不存在该硬件电路时,无法访问应用程序。软件授权是仅通过软件程序对使用权限进行管控的手段。硬件产品安全性高,但是和硬件设备相关,价格高昂,一般需要技术人员现场调试。软件授权成本低,但容易被破解。
目前市面上基于软件对软件产品进行管控的产品较少,一是因为安全性不高,容易被破解;二是通用性较差,通常不同的产品,管控的范围不同,有些需要对流量和并发度进行管控,有些需要对资源进行管控,因此一般公司会自主研发。基于以上研究,本发明提供了一套更加安全的软件授权系统。
商业软件中,软件保护和授权尤为重要。
软件授权的主要目的有以下几点:
功能管控:软件功能模块众多,不通的客户需求不同,因此售卖的模块也不同;
授权使用时间管控:客户购买软件时,可买断使用权,同时,也可以仅购买n年,甚至可以仅试用1个月;
防止软件盗用:售卖的软件,会有源码泄露的风险;同时,用户有了安装包后,可能会将软件售卖,损害软件开发商的权益;软件授权以增加破解难度;
软件授权技术中,一般将授权和授权文件生成在一个服务中,容易被破解,同时,用户可以任意生成证书文件。同时未能清楚的介绍软件授权端在用户本地还是远端,未充分利用微服务体系各个服务的特性做改造,保证软件安全性。此外,部署手段中需考虑:容器化和物理机两种方式,缺少防破解手段。
发明内容
针对现有技术存在的问题,本发明的目的在于提供一种新的技术方案:授权系统中避免不了和物理机进行绑定,但是本发明的技术方案无需绑定所有客户提供的集群机器,仅需绑定少数几台机器,即可达到管控效果。并且设置网关管控接口,微服务中所有接口都会通过网关,当软件授权到期时,网关对所有接口进行拦截。该方案涵盖物理机部署和容器化部署两种方式。
为实现上述目的,本发明提供一种基于软件完成的授权管控的方法,所述方法包括如下步骤:
步骤S1.授权服务模块进行设备注册,并生成唯一的识别码;
步骤S2.证书生成管理模块使用识别码生成证书;
步骤S3.授权服务模块安装证书,校验证书合法性;
步骤S4.激活证书,记录当前时间,更新证书状态;
步骤S5.定时更新证书状态,记录证书使用天数和资源使用情况;
步骤S6.资源使用采集模块,采集实现软件功能的所有微服务使用CPU和内存资源使用信息;
步骤S7. 定时统计心跳发送来的资源使用信息,进行心跳检测和资源管控。
进一步,步骤S1中,用户首次使用时,仅需注册授权服务所在的机器或容器,采集授权服务所在机器或容器的物理信息,触发设备注册操作,具体包括如下子步骤:
S101.获取设备硬件指纹;硬件指纹包括物理机的mac地址、cpu序列号和主板号;
S102.采集到所有授权服务的硬件指纹后,对每个硬件指纹进行加密,加密后,按照顺序存储到一个字符串中。
进一步,步骤S2中,证书生成步骤如下:
S201.系统管理员输入必填字段,保存证书信息,必填字段包括使用期限、CPU核数和内存大小;
S202.将信息加密后生成证书压缩文件,下载证书到本地。
进一步,步骤S3中,加入防止破解技术手段和防止更改机器时间的技术手段;
其中,安装证书具体包括以下子步骤:
S301.安装证书时,设置前置校验,包括检验证书文件格式是否合法,证书内容格式是否和证书生成端生成的格式一致;还包括校验证书的唯一性,保证一份证书仅能使用一次;
S302.校验成功后,使用证书内的密钥对证书内容进行解密;解密流程为:使用lic.keystore密钥对pub.key解密得到非对称加密的公钥,使用公钥解密xxx.lic文件,得到加密内容;解密后,需要对证书内容进行校验,校验剩余使用时间是否大于0、当前时间是否在授权时间范围内以及当前设备是否为注册设备;
S303.证书校验成功后,将证书内容缓存一份到内存中;
S304.安装成功后,存储证书的非加密信息到数据库中,非加密信息包括识别码、证书状态、安装时间和更新时间;
防止更改机器时间的技术手段如下:
安装证书时,使用天数设置为1,每使用一天记录加1;获取license状态时,判断证书内开始时间到结束时间的使用天数是否超出授权的总天数;内存中定时记录当前时间,当时间差发生较大变化时,说明用户修改了系统时间。
进一步,步骤S4中,证书校验成功后,需要点击激活按钮,才可以进入系统,使用软件;证书安装成功时,可激活证书;证书安装失败时,无法激活证书,需要上传新的证书;激活证书时,记录当前时间为使用的第一天,更新证书状态为正常使用状态,并将之前安装的有效的证书置为失效状态。
进一步,步骤S5中,在安装证书后,每天执行一次更新证书状态,记录证书使用天数和资源使用情况。
进一步,步骤S6中,具体包括以下子步骤:
步骤S601:采集实现软件功能的各个微服务使用的CPU核数和内存大小;Java中通过Runtime.getRuntime().availableProcessors()获取CPU核数,通过OperatingSystemMXBean类获取内存大小,将采集的信息通过心跳的方式,发送给授权服务模块,使用md5后的机器物理地址,作为心跳包唯一标识;发送心跳时,需要对心跳包进行加签处理;
步骤S602:采集功能嵌入到实现软件功能的各个微服务;
首先,将采集功能单独打成一个jar包,记录为collect-agent.jar,各个服务引入该jar包;将是否需要发送心跳、心跳间隔和心跳接收端配置信息放到配置文件中;将该功能打成单独的jar包,记录为spring-boot-device-collector.jar;代码实现逻辑如下,在项目启动时,检查配置文件参数,是否需要发送心跳,需要发送心跳时,根据配置信息调用collect-agent.jar发送心跳;每个微服务依赖spring-boot-device-collector.jar实现。
进一步,授权服务模块定时统计所有心跳发送的资源使用信息,若资源使用超出预设值时,记录为超出一次,授权服务模块每天统计当天资源超出的次数,若超出次数大于总次数的设定比例,则说明服务超出限制,发出告警提示。
另一方面,本发明提供一种基于软件完成的授权管控的系统,其特征在于,所述系统用于实现本发明所述的方法。
进一步,所述系统包括授权服务模块、证书生成管理模块、网关服务模块及资源使用采集模块,其中,
授权服务模块用于注册物理设备,防止用户切换物理设备、安装证书、对证书内容进行校验,以及作为注册中心,收集其余各个服务资源情况;
证书生成管理模块用于采用对称加密和非对称加密结合的方式,生成加密证书;
网关服务模块用于对整个软件应用的所有接口拦截,当证书失效时,所有接口无法访问;
资源使用采集模块用于采集每个服务资源使用情况,资源使用采集模块和授权服务模块保持心跳;通过统计每个服务资源使用情况,判断是否超出预设值,若超出,系统将不可用。
本发明通过证书合法性校验、证书使用时长记录、网关访问拦截、授权和证书生成在两个端、兼容容器化部署和物理机部署和可定制化软件权限管控几种手段的联合实现在不联网的情况下,有效的管控软件使用时间和权限。本发明采用授权端和证书生成端分离的方式,实现了在不联网的情况下,有效的管控软件使用时间和权限。开放性接口设计,使用者可扩展实现自己的业务需求。本发明同时兼容物理机和容器化部署。
附图说明
图1示出了本发明实施例一种基于软件完成的授权管控的方法及系统中软件授权时序图;
图2示出了根据本发明实施例一种基于软件完成的授权管控的方法及系统中软件授权泳道图;
图3示出了根据本发明实施例一种基于软件完成的授权管控的方法及系统中证书生成管理端字段示意图;
图4示出了根据本发明实施例一种基于软件完成的授权管控的方法及系统中授权服务和采集端交互流程图。
具体实施方式
下面将结合附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
以下结合图1-图4对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
图1是本发明基于软件完成的授权管控的方法及系统技术方案的主流程图。下文将介绍授权管控系统的各个模块的作用。
软件授权可通过远端获取序列号的方式。但是大部分客户为了安全性,服务器只能连接内网,这样就无法联网获取序列号。因此,本发明研发了一种安装在客户端的授权服务。
服务安装完成后,用户点击生成识别码,再将识别码提供给软件供应商,供应商生成证书后,发送给用户,用户安装证书后,即可完成激活。
软件授权中必不可少的是绑定机器的物理设备信息,本发明重点在于不必采集所有服务的物理信息,仅采集license服务所在服务器的物理信息即可保证授权安全性。采用该方案的技术原理如下:
采集所有服务所在机器的物理信息有两种方案,一是,输入设备的ip、端口、用户名、密码,通过shell命令的方式获取每台机器的物理信息;这种方式用户会担心安全问题,不会给到每台机器的用户名和密码,同时,集群庞大时,输入每台机器的信息较为繁琐和耗时;二是,通过集群管控的方式,每个服务采集了物理信息后,发送采集到的信息给license服务,license服务统计每个服务发来的信息,这种方案有延时,需要所有服务启动成功后,才能进行证书安装。两种方案目的都是管控住每一台机器,各有缺陷。现有技术中采集每台机器的物理信息的原因在于为了防止用户“复制”部署一套完全一样的软件,当系统发现物理信息变更的时候,便禁止用户使用。
绑定多台机器复杂耗时,假设仅绑定一台机器,利用这台机器的物理信息生成唯一识别码,将该识别码放入证书内,同时证书内容无法破解和伪造。由于证书和这台绑定的机器是一一对应的,用户复制到新机器上部署时,发现原证书无法安装到新环境下,整个软件无法使用。
虽然复制不能使用,但是这套系统和其他人(子公司或其他部门)是可以共用的,只是资源会受到限制。当前用户自己单独使用的情况下,资源够用,但加入了其他用户时,关键节点CPU和内存资源会受到限制,软件的处理速度和效率会大大的降低,用户觉得影响自己使用会想到扩容,资源充足了,再加几个使用者系统也能够用。于是可能会出现一台机器安装后多台机器共用一个系统的情况。
为了防止这种情况发生,本发明中提出通过管控关键节点的资源使用来解决这个问题。由此本发明采用了绑定物理信息和资源管控同时进行的方式,实现软件授权管控方案。
图2为根据本发明的软件授权的泳道图,示出了授权流程,本发明基于软件完成的授权管控的系统包括授权服务模块、证书生成管理模块、网关服务模块及资源使用采集模块,其中证书生成管理模块具有证书生成管理端,资源使用采集模块具有采集端。
其中,授权服务模块:授权服务模块的作用是注册物理设备,防止用户切换物理设备(一个证书绑定一个授权服务集群);安装证书;对证书内容进行校验;作为注册中心,收集其余各个服务资源情况。
证书生成管理模块:采用对称加密和非对称加密结合的方式,生成加密证书;由于该端不会开放给用户,加密解密的密钥不会暴露,用户将无法伪造证书。生成证书基础字段如图3所示,基本字段包括产品名称、产品版本号、工作空间名称、上传识别码、cpu核数和内存大小等。
证书生成步骤,系统管理员输入必填字段后,保存该证书信息。点击下载按钮,将信息加密后,生成证书压缩文件,下载该证书到本地。生成的证书压缩文件中包含:pub.key,lic.keystore,xxx.lic三个文件。
系统管理员将证书发送给用户使用即可。
加密流程:首先使用非对称加密对证书内容进行加密,加密内容生成后缀为.lic的文件;再使用对称加密对非对称加密的公钥进行加密,生成pub.key文件;最后,将对称加密的密钥放到lic.keystore文件中。
网关服务模块:对整个软件应用的所有接口拦截,当证书失效时,所有接口无法访问。
网关启动时,需要重新调用授权服务接口,拉取证书状态。同时需要定时拉取证书状态,否则证书状态更新时不能及时感知,例如每两秒拉取一次。证书状态放到内存中,每次拉取时更新证书状态信息。
资源采集模块:采集每个服务资源使用情况,资源采集模块和授权服务模块保持心跳。通过统计每个服务资源使用情况,判断是否超出预设值,若超出,系统将不可用。
本发明基于软件完成的授权管控的方法包括如下步骤:
步骤S1.授权服务模块进行设备注册,并生成唯一的识别码;
步骤S2.证书生成管理模块使用识别码生成证书;
步骤S3.授权服务模块安装证书,校验证书合法性;
步骤S4.激活证书,记录当前时间,更新证书状态;
步骤S5.定时更新证书状态,记录证书使用天数和资源使用情况;
步骤S6.资源使用采集模块,采集实现软件功能的所有微服务使用CPU和内存资源使用信息;
步骤S7.授权服务定时统计心跳发送来的资源使用信息,进行心跳检测和资源管控。
具体地,按照以上思路,步骤S1:授权服务模块进行设备注册,并生成唯一的识别码。用户首次使用时,仅需注册授权服务所在的机器/容器,采集授权服务所在机器的物理信息。
用户点击生成识别码时,触发设备注册操作。包括如下子步骤:
S101.获取设备硬件指纹;硬件指纹可采集物理机的mac地址,CPU序列号,主板号等。
代码上,本发明实现了多个操作系统的采集逻辑,包括Linux系统,Mac,Windows系统的物理信息采集逻辑。
例如:Linux系统中我们可以通过执行shell命令的方式,采集CPU序列号,命令如下:
dmidecode -t processor | grep 'ID' | awk -F ':' '{print $2}' | head -n 1。
S102.采集到所有授权服务的硬件指纹后,先对每个硬件指纹进行加密,加密后,按照顺序存储到一个字符串中。为了保证信息的安全,防止用户篡改信息,采用不可逆加密算法。可采用的加密算法有信息摘要算法(MD5),安全散列(SHA)等。
其中,MD5信息摘要算法(MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5算法有以下特点:
压缩性:无论数据长度是多少,计算出来的MD5值长度相同;
容易计算性:由原数据容易计算出MD5值;
抗修改性:即便修改一个字节,计算出来的MD5值也会巨大差异;
抗碰撞性:知道数据和MD5值,很小概率找到相同MD5值相同的原数据。
其次,安全散列算法(Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。
基于以上研究,本发明优选采用较为安全的MD5算法实现物理信息加密逻辑。
代码上,本发明实现了多个操作系统的采集逻辑,包括Linux系统,Mac,Windows系统的物理信息采集逻辑。
例如:Linux系统中我们可以通过执行shell命令的方式,采集CPU序列号,命令如下:
dmidecode -t processor | grep 'ID' | awk -F ':' '{print $2}' | head -n 1。
步骤S2:证书生成管理模块使用识别码生成证书。
该步骤在证书生成管理端完成,且该端客户不可见,用户无法自己生成证书。证书生成步骤如下:
S201.系统管理员输入必填字段如使用期限,CPU核数,内存大小等,保存该证书信息。
系统管理员输入必填字段中,如客户名称:xx,产品名称:xx,工作空间:xx,识别码:填写步骤S1产生的识别码,使用期限:2022-10-18~2023-10-30,CPU核数:64核,内存大小:500GB,点击保存,保存该证书信息。
具体地,该内容在具体实施时,可以增加用户需要管控的数据,例如:节点数量,菜单权限等。
S202.点击下载按钮,将信息加密后,生成证书压缩文件,下载该证书到本地。生成的证书压缩文件中包含:pub.key,lic.keystore,xxx.lic三个文件。
实施时,将密文存储到文件xxx.lic中,再使用非对称加密,对对称加密的密钥进行加密,加密后存储到文件pub.key中。最后,将非对称加密的公钥存储到文件lic.keystore中。将这三个文件合并生成一个压缩文件,文件名称为随机UUID.zip,供用户下载到本地。
步骤S3:授权服务模块,安装证书,校验证书合法性。
生成证书后进行安装操作;该步骤的重点在于加入防止破解技术手段和防止更改机器时间的技术手段。
安装证书具体包括以下子步骤:
S301.安装证书时,设置前置校验,检验证书文件格式是否合法,证书内容格式是否和证书生成端生成的格式一致;校验证书的唯一性:保证一份证书仅能使用一次。
该步骤具体实施时,首先检验证书文件格式是否为后缀为zip格式的文件,证书内容解压后,校验文件是否为xxx.lic,pub.key,lic.keystore;最后校验当前证书是否已经使用过,已经使用的证书会保存到数据库中,无法再次安装。
S302.校验成功后,使用证书内的密钥对证书内容进行解密。解密流程为:使用lic.keystore密钥对pub.key解密得到非对称加密的公钥,使用公钥解密xxx.lic文件,得到加密内容。解密后,需要对证书内容进行校验。校验剩余使用时间是否大于0;当前时间是否在授权时间范围内;当前设备是否为注册设备;当前设备物理信息MD5后和证书内的识别码是否一致等。
S303.证书校验成功时,将证书内容缓存一份到内存中。否则需要频繁的读取证书文件,程序中IO频繁时,影响效率。
S304.安装成功后,存储证书的非加密信息到数据库中,如识别码,证书状态(未激活),安装时间,更新时间等。
具体实施时,需要将证书的信息加密后存储到数据库中,防止用户修改数据库配置,影响校验。
防止更改机器时间的技术手段有以下两种方案:
方案一、激活证书时,在数据库中存储:使用天数字段设置为1。每天通过定时任务更新数据库中的使用天数字段。获取license状态时,判断使用天数是否超出证书内开始时间到结束时间总天数。
方案二、用户未联网情况下,内存中定时记录当前时间,假设为A,当页面调用授权服务证书状态接口时,判断A和当前时间差,时间差较大时,说明用户修改了机器时间;用户联网情况下,代码中获取NTP服务器的时间(NTP可以提供高精准度的时间校正)。可以通过本地时间与NTP服务器时间对比,当时间差发生较大变化时,说明用户修改了系统时间。当发现用户修改时间后,发出告警通知;当两者时间差大于15天时,发出告警,禁止用户使用。
步骤S4:激活证书,记录当前时间,更新证书状态。
证书校验成功后,需要点击激活按钮,才可以进入系统,使用软件。
证书安装成功时,可激活证书。证书安装失败时,无法激活证书,需要上传新的证书。
激活证书时,记录当前时间为使用的第一天,更新证书状态为正常使用状态,并将之前安装的有效的证书置为失效状态。
步骤S5:定时更新证书状态,记录证书使用天数和资源使用情况。
该步骤在安装证书后,启动定时任务记录证书使用天数和资源使用情况(每天执行一次)。为防止用户修改数据库内容,采用对称加密的方式,对证书使用天数,CPU核数,内存使用大小加密后,存储到数据库中等。
例如,在安装证书后,每天凌晨1点执行一次,更新数据库中证书的使用天数+1,剩余天数-1。当资源超出限制时,更新数据库中资源超出天数+1。
步骤S6.资源使用采集模块,采集实现软件功能的所有微服务使用CPU、内存等资源使用信息。
整个软件系统中,包含授权管控服务,证书生成服务,网关服务,和实现软件功能的各个微服务。采集模块嵌入到实现软件功能的各个微服务中。
资源使用采集模块和授权服务模块的关系如图4所示。
由于本方案中加入了资源管控的措施,本发明需要采集实现软件功能的各个微服务使用的CPU核数和内存大小,尤其是需要消耗内存和CPU资源的服务。
资源使用采集模块,采集实现软件功能的所有微服务使用CPU、内存等资源使用信息,具体包括以下子步骤:
步骤S601:采集实现软件功能的各个微服务使用的CPU核数和内存大小。
采集功能是通过嵌入实现软件功能的各个微服务的方式实现。首先要采集当前服务使用的CPU核数和内存大小。Java中可以通过Runtime.getRuntime().availableProcessors()获取CPU核数,通过OperatingSystemMXBean类获取内存大小。然后,将采集信息通过Http请求,发送心跳包(采集的CPU和内存)至授权服务。由于授权服务服务需要对采集的信息进行去重统计和心跳更新,因此,发送的心跳包中,需要保证此次心跳的唯一性。本方案中,使用md5后的机器物理地址,作为心跳包唯一标识。其次,发送心跳时,需要控制心跳的间隔,心跳接收端地址(授权服务URL),代码中通过入参的方式,指定这两个参数。最后,为了防止中途篡改心跳信息,发送心跳时,需要对心跳包进行加签处理。
步骤S602:采集功能嵌入到实现软件功能的各个微服务。
首先,将采集功能单独打成一个jar包,记录为collect-agent.jar,各个服务引入该jar包即可。为了保证使用的灵活性,将是否需要发送心跳、心跳间隔、心跳接收端配置等信息放到配置文件中,具体实施中可将这些参数放到Nacos配置文件中,或本地配置文件中。若项目为Spring Boot/Spring Cloud项目,防止每个服务都实现该逻辑,可将该功能打成单独的jar包,记录为spring-boot-device-collector.jar。代码实现逻辑如下,在项目启动时,检查配置文件参数,是否需要发送心跳,需要发送心跳时,根据配置信息调用collect-agent.jar发送心跳。每个微服务依赖spring-boot-device-collector.jar即可。
步骤S7:授权服务定时统计心跳发送来的资源使用信息,进行心跳检测和资源管控。具体包括以下子步骤:
步骤S701:授权服务处理采集的心跳信息。
授权服务模块收到各个服务发送来的心跳信息后,首先,需要验证签名。验签失败后无法正常心跳,心跳实例中将不会有该非法的心跳信息。同时,授权服务会启动心跳检测任务,当软件系统中,一个实现软件功能的微服务下线时,将剔除该微服务的心跳信息。当软件中新增一个微服务或微服务扩容时,将添加该服务的心跳信息。
步骤S702:授权服务统计资源使用总值并检测是否超出证书中的预设值。
授权服务模块定时统计所有心跳发送的CPU和内存等资源信息,并将所有资源使用信息分别累加,累加值大于证书中预设值时,记录超出次数+1。授权服务一天统计一次资源超出的次数,若超出次数大于总次数的80%,则说明资源使用超出证书预设值,会发出告警:系统发现用户非法操作,n小时后,系统将不可用,需联系系统管理员处理。
例如:授权服务模块,每1分钟,统计所有心跳包发送的CPU和内存等资源信息,授权服务每天凌晨1点统计一次资源超出的次数,进而进行数据检测。
步骤S703:授权可实现的扩展功能。
授权端仅管控基础功能:时间和资源管控,扩展功能每个业务模块可获取到配置值后,自主管控,实现了可扩展的功能。
例如:证书生成管理模块内可添加其他业务参数进行管控,在一个具体实施例中,一款大数据可视化分析云软件,通过控制大屏数量定义商品价格。代码上可通过自定义参数实现,页面上设置参数名称(key),参数限制值(value)。证书中保存该内容,业务方通过获取证书状态,获取该客户购买的数量,限制用户创建和使用新的大屏。
又如:授权管控菜单功能权限实现逻辑如下:
可在证书生成管理端中,配置客户购买的功能菜单,例如:自定义标签菜单,用户管理菜单。菜单权限管控模块调用授权服务获取证书状态接口,该接口返回客户购买的菜单权限,菜单权限管控单元根据接口返回内容,控制是否开放该菜单权限。
本发明实施时,技术要点如下:
(1)本发明中,授权服务作为最核心的逻辑,若服务不可用了,影响巨大。
授权服务不可用可能有以下几种原因。授权服务资源不足时,服务频繁重启;授权服务代码有问题,发生死循环或OOM(内存溢出)时;授权服务被人为停止。
当授权服务不可用时,网关获取证书状态接口报错。此处加了缓冲逻辑,即服务不可用时,不能立即拦截所有接口,需要提前让用户感知到授权服务发生了异常,让用户将授权服务启动起来,系统才能正常使用。具体实现为配置中设置调用次数n和调用间隔m,在n*m时间内一直会重试获取,直到授权服务正常启动。若在n*m期间,授权服务不可用,将发送告警,通知用户;若在n*m后,授权服务还不可用,整个软件将无法使用;一般来说m要大于授权服务的启动时间,否则服务还未启动成功,相当于做无用请求。
访问任意接口时,会经过网关拦截。当授权服务状态异常时,直接拦截接口;当证书状态异常时,拦截接口;当服务正常启动,且证书状态正常时,接口可放行。
(2)当证书仅剩余30天时,可提前通知用户,短信或页面通知的方式。
(3)容器化部署和物理机部署的区别如下:
授权管控有两个地方是与机器相关的。一个是生成识别码时,绑定的物理机器信息。另一个是采集每个服务资源使用情况时,采集内存和CPU信息。
在实施过程中,发现容器化部署时,采集不到宿主物理机器信息,例如CPU序列号主板号等。解决方案是,将宿主机的内核信息文件映射到容器内,那么容器中就可以获取物理机器的信息。但是采集这些信息需要root用户,客户可能不提供相应的权限,因此使用的方案是,仅授权服务提供root权限,其他不和物理机绑定的服务不需要root权限。
采集资源使用情况时,物理机采集的是物理机的CPU和内存情况,容器中采集的是分配给容器的资源信息。其实这里并不会影响管控的效果。只要证书内合理地设置资源管控大小,就可以管控住用户扩容的情况。
本发明的技术优势如下:
通过证书合法性校验、证书使用时长记录、网关访问拦截、授权和证书生成在两个端、兼容容器化部署和物理机部署和可定制化软件权限管控几种手段的联合实现在不联网的情况下,有效的管控软件使用时间和权限
并且,本发明简单易用,用户仅需要通过三步,即可完成软件授权。
本发明采用授权端和证书生成端分离的方式,实现了在不联网的情况下,有效的管控软件使用时间和权限。开放性接口设计,使用者可扩展实现自己的业务需求。本发明同时兼容物理机和容器化部署。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本说明书的描述中,参考术语“实施例”、“示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,本领域的技术人员可以在不产生矛盾的情况下,将本说明书中描述的不同实施例或示例以及其中的特征进行结合或组合。
上述内容虽然已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型等更新操作。

Claims (8)

1.一种基于软件完成的授权管控的方法,其特征在于,所述方法包括如下步骤:
步骤S1.授权服务模块进行设备注册,并生成唯一的识别码;
步骤S2.证书生成管理模块使用识别码生成证书;
步骤S3.授权服务模块安装证书,校验证书合法性;
步骤S4.激活证书,记录当前时间,更新证书状态;
步骤S5.定时更新证书状态,记录证书使用天数和资源使用情况;
步骤S6.资源使用采集模块,采集实现软件功能的所有微服务使用CPU和内存资源使用信息;
步骤S7.定时统计心跳发送来的资源使用信息,进行心跳检测和资源管控;
步骤S3中,加入防止破解技术手段和防止更改机器时间的技术手段;
其中,证书生成步骤如下:
S201.系统管理员输入必填字段,保存该证书信息;
S202.点击下载按钮,将信息加密后,生成证书压缩文件,下载该证书到本地,生成的证书压缩文件中包含:pub.key,lic.keystore,xxx.lic三个文件;
其中,安装证书具体包括以下子步骤:
S301.安装证书时,设置前置校验,包括检验证书文件格式是否合法,证书内容格式是否和证书生成端生成的格式一致;还包括校验证书的唯一性,保证一份证书仅能使用一次;
首先检验证书文件格式是否为后缀为zip格式的文件,证书内容解压后,校验文件是否为xxx.lic,pub.key,lic.keystore;最后校验当前证书是否已经使用过,已经使用的证书会保存到数据库中,无法再次安装;
S302.校验成功后,使用证书内的密钥对证书内容进行解密;解密流程为:使用lic.keystore密钥对pub.key解密得到非对称加密的公钥,使用公钥解密xxx.lic文件,得到加密内容;解密后,需要对证书内容进行校验,校验剩余使用时间是否大于0、当前时间是否在授权时间范围内以及当前设备是否为注册设备;当前设备物理信息MD5后和证书内的识别码是否一致;
S303.证书校验成功后,将证书内容缓存一份到内存中;
S304.安装成功后,存储证书的非加密信息到数据库中,非加密信息包括识别码、证书状态、安装时间和更新时间;
防止更改机器时间的技术手段如下:
安装证书时,使用天数设置为1,每使用一天记录加1;获取license状态时,判断证书内开始时间到结束时间的使用天数是否超出授权的总天数;内存中定时记录当前时间,当时间差发生变化时,说明用户修改了系统时间;
授权服务模块定时统计所有心跳发送的资源使用信息,若资源使用超出预设值时,记录为超出一次,授权服务模块每天统计当天资源超出的次数,若超出次数大于总次数的设定比例,则说明服务超出限制,发出告警提示;
其中,步骤S6包括以下子步骤:
步骤S601:采集实现软件功能的各个微服务使用的CPU核数和内存大小;
步骤S602:采集功能嵌入到实现软件功能的各个微服务。
2.根据权利要求1所述的基于软件完成的授权管控的方法,其特征在于,步骤S1中,用户首次使用时,仅需注册授权服务所在的机器或容器,采集授权服务所在机器或容器的物理信息,触发设备注册操作,具体包括如下子步骤:
S101.获取设备硬件指纹;硬件指纹包括物理机的mac地址、cpu序列号和主板号;
S102.采集到所有授权服务的硬件指纹后,对每个硬件指纹进行加密,加密后,按照顺序存储到一个字符串中。
3.根据权利要求2所述的基于软件完成的授权管控的方法,其特征在于,步骤S2中,证书生成步骤如下:
S201.系统管理员输入必填字段,保存证书信息,必填字段包括使用期限、CPU核数和内存大小;
S202.将信息加密后生成证书压缩文件,下载证书到本地。
4.根据权利要求1所述的基于软件完成的授权管控的方法,其特征在于,步骤S4中,证书校验成功后,需要点击激活按钮,才可以进入系统,使用软件;证书安装成功时,可激活证书;证书安装失败时,无法激活证书,需要上传新的证书;激活证书时,记录当前时间为使用的第一天,更新证书状态为正常使用状态,并将之前安装的有效的证书置为失效状态。
5.根据权利要求4所述的基于软件完成的授权管控的方法,其特征在于,步骤S5中,在安装证书后,每天执行一次更新证书状态,记录证书使用天数和资源使用情况。
6.根据权利要求5所述的基于软件完成的授权管控的方法,其特征在于,步骤S6中,具体包括以下子步骤:
步骤S601:Java中通过Runtime.getRuntime().availableProcessors()获取CPU核数,通过OperatingSystemMXBean类获取内存大小,将采集的信息通过心跳的方式,发送给授权服务模块,使用md5后的机器物理地址,作为心跳包唯一标识;发送心跳时,需要对心跳包进行加签处理;
步骤S602:
首先,将采集功能单独打成一个jar包,记录为collect-agent.jar,各个服务引入该jar包;将是否需要发送心跳、心跳间隔和心跳接收端配置信息放到配置文件中;将该功能打成单独的jar包,记录为spring-boot-device-collector.jar;代码实现逻辑如下,在项目启动时,检查配置文件参数,是否需要发送心跳,需要发送心跳时,根据配置信息调用collect-agent.jar发送心跳;每个微服务依赖spring-boot-device-collector.jar实现。
7.一种基于软件完成的授权管控的系统,其特征在于,所述系统用于实现权利要求1-6任一项所述的方法。
8.根据权利要求7所述的基于软件完成的授权管控的系统,其特征在于,所述系统包括授权服务模块、证书生成管理模块、网关服务模块及资源使用采集模块,其中,
授权服务模块用于注册物理设备,防止用户切换物理设备、安装证书、对证书内容进行校验,以及作为注册中心,收集其余各个服务资源情况;
证书生成管理模块用于采用对称加密和非对称加密结合的方式,生成加密证书;
网关服务模块用于对整个软件应用的所有接口拦截,当证书失效时,所有接口无法访问;
资源使用采集模块用于采集每个服务资源使用情况,资源使用采集模块和授权服务模块保持心跳;通过统计每个服务资源使用情况,判断是否超出预设值,若超出,系统将不可用。
CN202211284726.3A 2022-10-20 2022-10-20 一种基于软件完成的授权管控的方法及系统 Active CN115357870B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211284726.3A CN115357870B (zh) 2022-10-20 2022-10-20 一种基于软件完成的授权管控的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211284726.3A CN115357870B (zh) 2022-10-20 2022-10-20 一种基于软件完成的授权管控的方法及系统

Publications (2)

Publication Number Publication Date
CN115357870A CN115357870A (zh) 2022-11-18
CN115357870B true CN115357870B (zh) 2023-03-24

Family

ID=84007935

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211284726.3A Active CN115357870B (zh) 2022-10-20 2022-10-20 一种基于软件完成的授权管控的方法及系统

Country Status (1)

Country Link
CN (1) CN115357870B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116318982B (zh) * 2023-03-10 2023-11-17 深圳市银拓科技有限公司 一种基于license的待授权产品软件激活方法及电子设备
CN116415222B (zh) * 2023-05-09 2023-10-20 南京中图数码科技有限公司 流程工业数字工厂云设计平台的授权管理方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103078858A (zh) * 2012-12-31 2013-05-01 上海同岩土木工程科技有限公司 基于web服务和签名证书的软件授权试用方法
CN109086575A (zh) * 2018-07-26 2018-12-25 郑州云海信息技术有限公司 一种软件许可证的授权方法和系统
CN115080927A (zh) * 2022-06-14 2022-09-20 杭州安恒信息技术股份有限公司 一种软件授权方法、装置、系统和存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6148083A (en) * 1996-08-23 2000-11-14 Hewlett-Packard Company Application certification for an international cryptography framework
WO2006101765A2 (en) * 2005-03-16 2006-09-28 Snyder Jeremy N Method for preventing unauthorized installation of a software product
CN110213276B (zh) * 2019-06-05 2021-08-27 宁波深擎信息科技有限公司 一种微服务架构下的授权验证方法、服务器、终端及介质
CN110866226B (zh) * 2019-11-15 2022-05-24 中博信息技术研究院有限公司 一种基于加密技术的java应用软件版权保护方法
CN113204744B (zh) * 2021-04-07 2024-04-23 西安链融科技有限公司 一种基于分布式身份的软件授权系统及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103078858A (zh) * 2012-12-31 2013-05-01 上海同岩土木工程科技有限公司 基于web服务和签名证书的软件授权试用方法
CN109086575A (zh) * 2018-07-26 2018-12-25 郑州云海信息技术有限公司 一种软件许可证的授权方法和系统
CN115080927A (zh) * 2022-06-14 2022-09-20 杭州安恒信息技术股份有限公司 一种软件授权方法、装置、系统和存储介质

Also Published As

Publication number Publication date
CN115357870A (zh) 2022-11-18

Similar Documents

Publication Publication Date Title
US11695555B2 (en) Federated key management
CN110799941B (zh) 防盗和防篡改的数据保护
CN115357870B (zh) 一种基于软件完成的授权管控的方法及系统
EP2957063B1 (en) Policy enforcement with associated data
CA2899019C (en) Delayed data access
US11372993B2 (en) Automatic key rotation
CN110213276B (zh) 一种微服务架构下的授权验证方法、服务器、终端及介质
CN107948235B (zh) 基于jar的云数据安全管理与审计装置
CN110362984B (zh) 多设备运行业务系统的方法及装置
CN114925141B (zh) 一种基于区块链的云原生自动化部署管理系统及方法
JP6721248B2 (ja) 情報管理端末装置
US20070028116A1 (en) Data collation system and method
US20030014658A1 (en) System and method of verifying system attributes
US20230244797A1 (en) Data processing method and apparatus, electronic device, and medium
GB2428318A (en) Auditing networked devices
CN117728942A (zh) 互信码生成方法、设备验证方法及电子设备
CN118051934A (zh) 一种变电站的数据管理方法、装置及电子设备
CN118350031A (zh) 基于区块链的数据处理方法、装置、设备以及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant