license授权方法、设备以及系统
文献发布时间:2023-06-19 12:18:04
技术领域
本发明属于license授权技术领域,尤其涉及一种license授权方法、设备以及系统。
背景技术
随着物联网发展,目前硬件设备联网功能成为常态,产品价值逐步从硬件价值转为软件附加值。
目前,市面上大部分嵌入式设备产品基本没有license授权方案,以防止抄板及嵌入式软件反编译,或者虽有license授权方案,但是不具备对各功能的权限以及有效期进行管控的能力,导致无法涵盖完整保护。
发明内容
基于此,针对上述技术问题,提供一种保护完整、可靠的license授权方法、设备以及系统。
为解决上述技术问题,本发明采用如下技术方案:
一方面,提供一种license授权方法,应用于嵌入式设备,其特征在于,包括:
S101、每次上电后检测是否存在license文件,若是,则执行步骤S102,若否,则执行步骤S105;
S102、判断所述license文件是否合法,若是,则执行步骤S103,若否,则执行步骤S104;
S103、从所述license文件中解析出功能模块权限信息以及权限有效期信息,根据所述功能模块权限信息以及权限有效期信息提供相应的功能授权;
S104、停止所有功能;
S105、向服务器发送license生成请求,执行步骤S106;
S106、接收所述服务器的反馈,若反馈为生成license命令,执行步骤S107,若反馈代表license异常,则执行步骤104;
S107、生成license文件,并进行存储,所述license文件中包括功能模块权限信息以及权限有效期信息。
另一方面,提供一种license授权方法,应用于服务器,其特征在于,包括:
接收嵌入式设备发送的license生成请求;
判断是否已向所述嵌入式设备发送过生成license命令,若是,则向所述嵌入式设备反馈license异常,若否,则向所述嵌入式设备反馈生成license命令,所述生成license命令中包括功能模块权限信息以及权限有效期信息。
又一方面,提供一种嵌入式设备,其特征在于,该设备被配置为执行上述一种应用于嵌入式设备的license授权方法。
又一方面,提供一种服务器,其特征在于,该服务器被配置为执行上述一种应用于服务器的license授权方法。
再一方面,提供一种license授权系统,其特征在于,包括上述一种嵌入式设备以及上述一种服务器。
本发明license授权方案为嵌入式设备涵盖完整保护可以防止被抄板及反编译,并且具备对各功能的权限以及有效期进行管控的能力。
附图说明
下面结合附图和具体实施方式本发明进行详细说明:
图1为本发明的一种应用于嵌入式设备的license授权方法的流程图;
图2为本发明的一种应用于服务器的license授权方法的流程图。
具体实施方式
如图1所示,本说明书实施例提供一种应用于嵌入式设备的license授权方法,包括:
S101、每次上电后检测是否存在license文件,若是,则执行步骤S102,若否,则执行步骤S105。
S102、判断license文件是否合法,若是,则执行步骤S103,若否,则执行步骤S104。具体过程如下:
对硬件特征码、设备类型信息以及预设的字符串进行哈希,判断哈希结果与license文件的第一数据是否匹配一致,若是,则代表license文件合法,若否,则不合法。
需要指出的是,license文件存在的情况下,设备类型信息已经在生成该license文件前从生成license命令中获得,参见步骤S107部分。
S103、从license文件中解析出功能模块权限信息以及权限有效期信息,根据功能模块权限信息以及权限有效期信息提供相应的功能授权。具体过程如下:
将license文件的第一数据作为密钥,从license文件的第二数据中逆向解密出功能模块权限信息以及权限有效期信息,根据功能模块权限信息以及权限有效期信息提供相应的功能授权。
优选地,可以根据设备类型信息对应的全局功能权限信息、功能模块权限信息以及权限有效期信息提供相应的功能授权,可参见步骤S107部分中的描述。
较佳地,在提供相应的功能授权时,进一步包括:
1、将权限有效期与当前时间进行比较,判断权限有效期是否合法,若是,则根据设备类型信息对应的全局功能权限信息以及功能模块权限信息提供相应的功能授权,若否,则向服务器发送license更新请求。
2、接收服务器发送的license更新命令,根据步骤S107重新生成license文件。
S104、停止所有功能。
S105、向服务器发送license生成请求,执行步骤S106。
S106、接收所述服务器的反馈,若反馈为生成license命令,执行步骤S107,若反馈代表license异常,则执行步骤104。
S107、根据生成license命令,生成license文件,并进行存储,所述license文件中包括功能模块权限信息以及权限有效期信息。
在本实施例中,生成license命令中包括设备类型信息、功能模块权限信息以及权限有效期信息,通过设备类型信息可以对相应的功能进行全局授权,有的场景硬件是完全相同的,但是设备类型可以不同,举个例子,相同的iphone,如果设备类型是iphone,则代表授权了手机功能,如果设备类型是itouch,则只授权了随身听功能,这样就可以通过license里的设备类型信息来全局决定硬件启动什么样的程序和提供什么样的服务。
当然,也可以仅仅通过功能模块权限信息来对每个功能分别进行授权。
生成license文件的具体过程如下:
1、对硬件特征码、设备类型信息以及预设的字符串进行哈希,得到第一数据。
2、将第一数据作为密钥对功能模块权限信息以及权限有效期信息进行双向可逆加密生成第二数据。
3、将第一数据以及第二数据拼接形成license文件。
硬件特征码为嵌入式设备的硬件唯一标识,将其作为license授权加密种子,并采用哈希算法与对称加密(双向可逆加密)并进行融合作为核心加密算法,从而实现一机一密、单向加密与双向加密解密的方案,不易被破解,提高了授权保护能力。
license文件中具有功能模块权限信息以及权限有效期信息,使本发明具备对各功能的权限以及有效期进行管控的能力。
在本实施例中,硬件特征码采用单片机唯一码或者子模块mac唯一地址(子模块的唯一信息,mac地址具有唯一性,子模块可以是网卡、蓝牙、wifi模块或者其它模块)等。
功能模块权限信息为一个若干位(bit)的数据,如使用一个32bit的数据作为功能模块权限信息,其中每一位代表一个功能,通过0和1来代表是否具有相应功能的权限,如手机有4个功能,分别是短信,电话,上网,音乐,分别对应4个bit,若功能模块权限信息为1101,则此手机运行时,只开启对应的短信,电话,音乐功能。
在本实施例中,哈希算法采用SHA256或者其它算法,双向可逆加密算法采用AES256或其它算法。
如图2所示,基于同一发明构思,本说明书实施例还提供一种应用于服务器的license授权方法,包括:
S201、接收嵌入式设备发送的license生成请求。
S202、判断是否已向当前嵌入式设备发送过生成license命令,若是,则执行步骤203,若否,则执行步骤204。
203、向该嵌入式设备反馈license异常。
204、向该嵌入式设备反馈生成license命令。
其中,生成license命令中包括设备类型信息、功能模块权限信息以及权限有效期信息。使嵌入式设备生成的license文件中包含功能模块权限信息以及权限有效期信息,使本发明具备对各功能的权限以及有效期进行管控的能力。
本实施例方法还包括:
接收嵌入式设备发送的license更新请求。
若相应的用户已续费,则向当前嵌入式设备发送license更新命令。
在实际的应用场景中,嵌入式设备首次入网,没有license文件,会请求服务器下发生成license命令,服务器下发的生成license命令中设备类型信息、功能模块权限信息以及权限有效期信息,嵌入式设备通过哈希算法对硬件特征码+设备类型+solt(任意字符串)进行哈希得到第一数据,然后以第一数据作为密钥对功能模块权限信息以及权限有效期信息进行双向可逆算法运算生成第二数据,两者拼接形成license文件进行存储。
后续上电后,嵌入式设备首先检测license文件,如果没有,则请求服务器生成,服务器若之前已经下发过,则拒绝,并告知下位机license异常,停止运行功能;如果有,则按照哈希算法规则计算出哈希结果与license文件中的第一数据进行比对,确认license文件是否合法,然后用第一数据作为密钥,通过可逆算法计算出功能模块权限信息以及权限有效期信息,再判断功能模块权限和权限有效期是否合法。
如果license文件不合法,则停止所有功能;如果功能模块权限和权限有效期不合法,则在入网后请求服务器更新license,服务器根据用户是否续费决定是否重新下发license命令。
当然,服务器也可以主动下发命令重新生成license,从而更改license产品、功能模块权限信息以及权限有效期信息。
本说明书实施例还提供一种嵌入式设备,该设备被配置为执行本说明书一种应用于嵌入式设备的license授权方法部分中描述的根据本发明各种示例性实施方式的步骤。
本说明书实施例还提供一种服务器,该服务器被配置为执行本说明书一种应用于服务器的license授权方法部分中描述的根据本发明各种示例性实施方式的步骤。
本说明书实施例还提供一种license授权系统,包括上述一种嵌入式设备以及上述一种服务器,此处不再赘述。
对于车辆诊断,嵌入式设备是指下位机,服务器是指云端服务器。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
但是,本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,而并非用作为对本发明的限定,只要在本发明的实质精神范围内,对以上所述实施例的变化、变型都将落在本发明的权利要求书范围内。
- license授权方法、设备以及系统
- 一种嵌入式设备license授权管理方法