CN112231647A - 一种软件授权验证方法 - Google Patents
一种软件授权验证方法 Download PDFInfo
- Publication number
- CN112231647A CN112231647A CN201910633547.8A CN201910633547A CN112231647A CN 112231647 A CN112231647 A CN 112231647A CN 201910633547 A CN201910633547 A CN 201910633547A CN 112231647 A CN112231647 A CN 112231647A
- Authority
- CN
- China
- Prior art keywords
- authorization
- software
- time
- file
- authorization file
- 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.)
- Withdrawn
Links
- 238000012795 verification Methods 0.000 title claims abstract description 134
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000013475 authorization Methods 0.000 claims abstract description 226
- 238000012545 processing Methods 0.000 claims abstract description 14
- 238000012986 modification Methods 0.000 claims description 66
- 230000004048 modification Effects 0.000 claims description 66
- 238000012937 correction Methods 0.000 claims description 10
- 238000012552 review Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 3
- 238000005336 cracking Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000001915 proofreading effect Effects 0.000 description 2
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/101—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
- G06F21/1011—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2137—Time limited access, e.g. to a computer or data
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种软件授权验证方法,包括在每次启动所述软件之前:对软件所处设备的硬件信息进行处理,获得验证码,并将验证码与存储于授权文件中的授权码进行比较,获得验证授权码比较结果;将存储于授权文件中的软件授权时间信息与设备的系统中所记录的对应时间信息进行比较,获得时间信息比较结果;在验证授权码比较结果和时间信息比较结果均满足授权条件时,允许在所述设备中运行所述软件。本发明实现了在不依赖于外接可插拔加密硬件设备、远端授权服务器、互联网以及卫星定位授时系统的情况下,对软件的授权验证,并且可有效防止用户修改授权文件内容,本发明实现了对软件的使用期限的有效控制。
Description
技术领域
本发明涉及软件使用保护技术领域,特别涉及一种软件授权验证方法。
背景技术
随着计算机技术的发展,应用软件的种类越来越多,功能愈发齐全,从而导致软件盗版等安全性问题日益突出,扰乱软件市场。
为了维护软件开发者的知识产权,软件开发者需要投入大量的人力、物力用于软件授权管理方面的开发工作,但由于各种授权设备的型号不同、操作系统不同,尤其是针对一些不能联网的情况下,软件开发者很难控制软件的使用期限,这些都是软件授权的难点。
现有技术中,软件授权验证的方式主要有硬件形式和软件形式两种。硬件形式授权方式主要是设备通过接口与硬件授权设备(如硬件形式的加密狗、加密锁)进行数据交换,来检查硬件授权设备是否插在接口上,进而通过硬件授权设备中的相关授权信息来确认软件的使用期限等;软件授权方式是通过读取待授权设备的硬件信息,对该硬件信息进行加密生成授权文件,该授权文件与待授权设备的硬件信息之间是一一绑定的,通过验证这种绑定关系来确认软件的使用期限等。另外,无论是硬件形式还是软件形式的软件授权验证的方式,还可进一步结合互联网或者卫星定位授时系统来辅助软件授权验证。
现有技术中,对于例如军工领域、保密领域等特殊应用场景中的计算机设备来说,其禁止使用外接的硬件接口,因此硬件形式的软件授权验证的方式受限于设备的硬件环境要求而无法广泛采用。同时,现有技术中,无论是硬件形式授权还是软件形式授权,都需要获取软件所安装设备的时间,往往在设备的系统时间进行人为修改后,现有的软件授权验证方式均无法识别系统时间是否被人为修改,从而导致了在软件的授权使用时间以外仍然能够被使用。在现有的基于互联网或者卫星定位授时来获取时间信息的软件授权验证方式中,虽然能够避免人为修改时间所带来的问题,但是,对于不可依赖互联网和卫星定位授时系统的设备,例如军工领域、保密领域中的计算机设备,仍然无法识别系统时间是否被人为修改。
因此,如何保证软件授权验证能够适用于所有计算机设备并确保在软件的授权使用时间以外软件不再被使用,一直以来都是致力解决的问题。
发明内容
有鉴于此,本发明提供一种软件授权验证方法,以实现在不依赖于互联网、卫星定位授时系统和外接可插拔加密硬件设备的情况下有效地控制软件的使用期限。
本发明的技术方案是这样实现的:
一种软件授权验证方法,包括在每次启动所述软件之前:
对所述软件所处设备的硬件信息进行处理,获得验证码,并将所述验证码与存储于授权文件中的授权码进行比较,获得验证授权码比较结果;
将存储于所述授权文件中的软件授权时间信息与所述设备的系统中所记录的对应时间信息进行比较,获得时间信息比较结果;
在所述验证授权码比较结果和所述时间信息比较结果均满足授权条件时,允许在所述设备中运行所述软件。
优选地,所述验证授权码比较结果的授权条件为:
所述验证码与所述授权码相同。
优选地,所述的将存储于所述授权文件中的软件授权时间信息与所述设备的系统中所记录的对应时间信息进行比较,包括:
将存储于所述授权文件中的所述软件的授权文件的创建时间与所述设备的系统中所记录的所述授权文件的创建时间进行比较;
将存储于所述授权文件中的所述授权文件的修改时间与所述系统中所记录的所述授权文件的修改时间进行比较;
将存储于所述授权文件中的所述软件的最近一次运行时间与所述系统的当前时间进行比较;
将所述系统的当前时间与所述软件的使用权限截止时间进行比较。
优选地,所述时间信息比较结果的授权条件包括:
存储于所述授权文件中的所述授权文件的创建时间与所述系统中所记录的所述授权文件的创建时间相同,存储于所述授权文件中的所述授权文件的修改时间早于所述系统中所记录的所述授权文件的修改时间,存储于所述授权文件中的所述授权文件的修改时间和所述系统中所记录的所述授权文件的修改时间之间的时差不大于时差阈值,存储于所述授权文件中的所述软件的最近一次运行时间早于所述系统的当前时间,并且所述系统的当前时间早于所述软件的使用权限截止时间。
优选地,所述的对所述软件所处设备的硬件信息进行处理,获得验证码,包括:
将表示所述设备的硬件信息的字符串的前M位中,每间隔m位提取一个字符;
将表示所述设备的硬件信息的字符串的后N位中,每间隔n位提取一个字符;
将所提取的所有字符组成明文特征标识;
将所述明文特征标识进行加密获得所述验证码;
其中,表示所述设备的硬件信息的字符串为M+N位,m<M,n<N。
优选地,所述的将所述明文特征标识进行加密获得所述验证码,包括:
利用第一密钥,采用第一加密算法对所述明文特征标识进行第一次加密,获得第一加密字符串;
利用第二密钥,采用第二加密算法对所述第一加密字符串进行第二次加密,获得所述验证码。
优选地,表示所述设备的硬件信息的字符串由所述设备的CPU序列号、MAC地址和物理硬盘序列号拼接而成。
优选地,存储于所述授权文件中的所述软件的最近一次运行时间,在所述软件运行期间定期更新。
优选地,在允许在所述设备中运行所述软件之后,所述软件授权验证方法还包括:
将所述系统中所记录的所述授权文件的修改时间更新至所述授权文件中。
优选地,存储于所述授权文件中的所述软件的授权文件的创建时间、所述授权文件的修改时间和所述软件的最近一次运行时间均为加密处理后的时间信息;
将存储于所述授权文件中的所述软件的授权文件的创建时间、所述授权文件的修改时间和所述软件的最近一次运行时间,与所述设备的系统中所记录的所述软件的授权文件的创建时间、所述授权文件的修改时间和所述系统的当前时间进行比较时,先将存储于所述授权文件中的所述软件的授权文件的创建时间、所述授权文件的修改时间和所述软件的最近一次运行时间进行解密。
优选地,在将存储于所述授权文件中的软件授权时间信息与所述设备的系统中所记录的对应时间信息进行比较之前,所述方法还包括:
将存储于所述授权文件中的软件授权时间信息与时间校对信息进行比较,若存储于所述授权文件中的软件授权时间信息与所述时间校对信息相同,则执行将存储于所述授权文件中的软件授权时间信息与所述设备的系统中所记录的对应时间信息进行比较的步骤。
优选地,所述时间校对信息存储于所述系统的系统目录下的隐藏文件中。
优选地,在允许在所述设备中运行所述软件之后,所述软件授权验证方法还包括:
将所述系统中所记录的所述授权文件的修改时间更新至所述授权文件中。
优选地,所述方法还包括在首次启动所述软件时:
记录所述软件的首次启动时间,并根据所述软件的首次启动时间,确定所述软件的使用权限截止时间。
一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储指令,其特征在于,所述指令在由处理器执行时使得所述处理器执行如上任一项所述的软件授权验证方法中的步骤。
一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如上任一项所述的软件授权验证方法中的步骤。
从上述方案可以看出,本发明的软件授权验证方法中,在授权文件中存储授权码和软件授权时间信息并结合授权码和授权时间信息的验证方式对软件进行授权验证,实现了不依赖于外接可插拔加密硬件设备的授权验证,节省了硬件设备投入。本发明中,将对设备的硬件信息进行处理得到明文特征标识,作为加密过程的输入生成验证码,即便在加密算法和密钥均泄露的情况下也难以推断出具体的明文是如何得出的。本发明中,通过定时更新软件的最近一次运行时间,可有效的防止用户修改系统时间,并且可以避免用户安装软件后一直不关机,软件永不退出,无法获取最近一次运行时间的情况。本发明中,利用授权文件中存储的授权文件创建时间、修改时间以及软件首次运行的时间、最新一次运行的时间,进行软件的授权验证,可保证在不依赖于远端授权服务器、互联网以及卫星定位授时系统的情况下也可有效的控制软件使用的期限,并且可有效防止用户修改授权文件中的内容。本发明的软件授权验证方法实现了对软件的使用期限的有效控制。
附图说明
图1为本发明实施例的软件授权验证方法示意图;
图2为本发明实施例中的从硬件信息字符串的结构示意图;
图3为采用本发明实施例的软件授权验证方法进行软件授权验证的流程图;
图4为本发明实施例中的电子设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
如图1所示,本发明实施例的软件授权验证方法,包括在每次启动软件之前的如下步骤:
对软件所处设备的硬件信息进行处理,获得验证码,并将验证码与存储于授权文件中的授权码进行比较,获得验证授权码比较结果,以确定软件是否可在设备中运行;
将存储于授权文件中的软件授权时间信息与设备的系统中所记录的对应时间信息进行比较,获得时间信息比较结果;
在验证授权码比较结果和时间信息比较结果均满足授权条件时,允许在设备中运行软件。
其中,所述设备例如计算机设备,该计算机设备可不接入互联网、可不具备卫星定位授时功能、并且可不含有供可插拔设备接入的接口。该设备的系统例如视窗(Windows)操作系统、Linux操作系统或者macOS操作系统等可供所述软件运行的操作系统。其中,授权文件存储于设备的硬盘中。
在可选实施例中,验证授权码比较结果的授权条件为:验证码与授权码相同。
在可选实施例中,对软件所处设备的硬件信息进行处理,获得验证码,包括以下步骤:
将表示设备的硬件信息的字符串的前M位中,每间隔m位提取一个字符;
将表示设备的硬件信息的字符串的后N位中,每间隔n位提取一个字符;
将所提取的所有字符按照表示设备的硬件信息的字符串的顺序组成明文特征标识;
将明文特征标识进行加密获得验证码;
其中,表示设备的硬件信息的字符串为M+N位,m<M,n<N。
在可选实施例中,表示设备的硬件信息的字符串的前M位例如字符串总位数中的前2/3位,表示设备的硬件信息的字符串的后N位例如字符串总位数中的后1/3位。在可选实施例中,m和n的取值不同。
在可选实施例中,将明文特征标识进行加密获得所述验证码,包括:
利用第一密钥(密钥I),采用第一加密算法(加密算法I)对明文特征标识进行第一次加密,获得第一加密字符串(字符串A);
利用第二密钥(密钥II),采用第二加密算法(加密算法II)对第一加密字符串(字符串A)进行第二次加密,获得验证码。
采用这种双重加密方式能够增加破解的难度,提高了验证码的安全性。
在可选实施例中,表示设备的硬件信息的字符串由设备的CPU(CentralProcessing Unit,中央处理器)序列号、MAC地址(物理地址)和物理硬盘序列号拼接而成。
在可选实施例中,授权码由软件开发单位提供,在软件开发单位,授权码的生成方法和验证码的生成方法相同。使用软件的用户事先将待授权设备的硬件信息交给软件开发单位,由软件开发单位根据待授权设备的硬件信息生成授权码,并将生成的授权码交给用户。
在可选实施例中,所述的将存储于授权文件中的软件授权时间信息与设备的系统中所记录的对应时间信息进行比较,包括:
步骤a1、将存储于授权文件中的软件的授权文件的创建时间(记为creat_save)与设备的系统中所记录的授权文件的创建时间(记为creat_get)进行比较;
步骤a2、将存储于授权文件中的授权文件的修改时间(记为revise_save)与系统中所记录的授权文件的修改时间(记为revise_get)进行比较;
步骤a3、将存储于授权文件中的软件的最近一次运行时间(记为last_save)与系统的当前时间(记为last_get)进行比较;
步骤a4、将系统的当前时间与软件的使用权限截止时间进行比较。
其中,步骤a1的目的是确定授权文件是否被恶意替换,步骤a2的目的是确定授权文件是否被恶意修改,步骤a3的目的是确定系统的系统时间是否被修改,步骤a4的目的是确定软件是否达到授权期限。
在可选实施例中,时间信息比较结果的授权条件包括以下内容:
存储于授权文件中的授权文件的创建时间与系统中所记录的授权文件的创建时间相同(即creat_save=creat_get),存储于授权文件中的授权文件的修改时间早于系统中所记录的授权文件的修改时间(即revise_save早于revise_get),存储于授权文件中的授权文件的修改时间和系统中所记录的授权文件的修改时间之间的时差不大于时差阈值(即|revise_save-revise_get|≤revise_threshold),存储于授权文件中的软件的最近一次运行时间早于系统的当前时间(即last_save早于last_get),并且系统的当前时间早于软件的使用权限截止时间(即last_get早于软件的使用权限截止时间)。其中,关于|revise_save-revise_get|≤revise_threshold,因为存储于授权文件中的授权文件的修改时间(revise_save)最初是由系统中所记录的授权文件的修改时间(revise_get)而来,是将系统中所记录的授权文件的修改时间(revise_get)存储于授权文件中之后得到的存储于授权文件中的授权文件的修改时间(revise_save),这一操作中,当将revise_get存储于授权文件中成为revise_save时,系统中所记录的授权文件的修改时间(revise_get)将会更新为将revise_get存储于授权文件中成为revise_save时刻的时间,即随着将revise_get存储为revise_save,revise_get将被更新,也就是说,revise_save的值与revise_get并不相同,并且revise_get会晚于revise_save,但是并不会晚很久,所以如果revise_get和revise_save之间差距较大则表明license文件可能被恶意篡改,因此,本发明实施例中,在时间信息比较结果的授权条件中还包含了“存储于授权文件中的授权文件的修改时间和系统中所记录的授权文件的修改时间之间的时差不大于时差阈值(即|revise_save-revise_get|≤revise_threshold)”这一条件,在可选实施例中,时差阈值(revise_threshold)可设置为1至3分钟,优选地,时差阈值为2分钟。
在本发明实施例中,授权文件例如license文件,即授权文件中存储授权码、授权文件的创建时间(creat_save)、授权文件的修改时间(revise_save)、软件的最近一次运行时间(last_save)。其中,授权文件的创建时间通过如下方法存储于授权文件中:
在授权文件刚刚存储于系统中时,将系统中所记录的授权文件的创建时间存储于授权文件中。
在可选实施例中,存储于授权文件中的软件的最近一次运行时间,在软件运行期间定期更新。例如,在软件运行期间每间隔若干分钟获得一次系统时间,并将所获得的系统时间作为软件的最近一次运行时间更新至授权文件中,即更新至license文件中。
在可选实施例中,在允许在设备中运行所述软件之后,本发明实施例的软件授权验证方法还进一步包括:
将系统中所记录的授权文件的修改时间(revise_get)更新至授权文件中。这样,授权文件中的授权文件的修改时间(revise_save)的值便由系统中所记录的授权文件的修改时间(revise_get)的值所更新,在随后下一次启动软件时便由该更新后的授权文件中的授权文件的修改时间(revise_save)与下一次启动软件时的系统中所记录的授权文件的修改时间(revise_get)进行比较,这样可以保证授权文件中的授权文件的修改时间(revise_save)的及时性。
在可选实施例中,存储于授权文件中的软件的授权文件的创建时间(creat_save)、授权文件的修改时间(revise_save)和软件的最近一次运行时间(last_save)均为加密处理后的时间信息。这样可以保证所存储的时间信息的保密性,防止被人为恶意篡改。
进而在可选实施例中,将存储于授权文件中的软件的授权文件的创建时间(creat_save)、授权文件的修改时间(revise_save)和软件的最近一次运行时间(last_save),与设备的系统中所记录的软件的授权文件的创建时间(creat_get)、授权文件的修改时间(revise_get)和系统的当前时间(last_get)进行比较时,先将存储于授权文件中的软件的授权文件的创建时间(creat_save)、授权文件的修改时间(revise_save)和软件的最近一次运行时间(last_save)进行解密。
在可选实施例中,在将存储于授权文件中的软件授权时间信息与设备的系统中所记录的对应时间信息进行比较之前,本发明的软件授权验证方法还包括:
将存储于授权文件中的软件授权时间信息与时间校对信息进行比较,若存储于授权文件中的软件授权时间信息与时间校对信息相同,则执行将存储于授权文件中的软件授权时间信息与设备的系统中所记录的对应时间信息进行比较的步骤。
在可选实施例中,时间校对信息存储于系统的系统目录下的隐藏文件中。
在该可选实施例中,在软件授权时间信息没有被恶意篡改的情况下,时间校对信息和软件授权时间信息二者内容相同,如果出现了软件授权时间信息的情况会造成软件授权时间信息和时间校对信息二者的不一致,采用这种方式可以防止对软件授权时间信息的恶意篡改。在该可选实施例中,利用系统的系统目录下的隐藏文件存储时间校对信息,不易被用户发现,不易被用户删除,并且能够确保软件授权时间信息被恶意篡改时无法启动软件。
在可选实施例中,在对授权文件中的软件授权时间信息进行修改、更新时,同步地对时间校对信息进行相同的修改、更新。这样便可保证在不被篡改的情况下,软件授权时间信息和时间校对信息保持一致。
在可选实施例中,本发明的软件授权验证方法还包括在首次启动软件时:
记录软件的首次启动时间,并根据软件的首次启动时间,确定软件的使用权限截止时间。例如,根据软件的首次启动时间以及用户所购买的使用时长,将首次启动时间加上使用时长的结果作为软件的使用权限截止时间。
以下以一个按照时间顺序执行的具体实施例,对本发明的软件授权验证方法进行进一步说明。
首先,用户通过邮件或者短信等形式将待授权设备的硬件信息发送给软件开发单位,软件开发单位反馈给用户license文件(授权文件),该license文件与用户待授权设备的硬件信息一一绑定,用户将该license文件放在待授权设备的任意目录下,用于后续的授权验证。
在软件每次启动前,获取软件所安装设备的当前硬件信息,经过明文特征提取得到明文特征标识,作为加密算法的输入,经过加密后生成验证码,该验证码与软件所安装设备的硬件信息一一绑定。
从license文件中获取授权码,对比验证码与授权码是否一样,验证码与授权码均是由硬件信息经过相同方式处理、加密得到的,如果二者一样,则继续下一步,否则,禁止启动软件。
在首次启动软件时,将从系统获得的软件首次运行时间(用于计算软件的使用权限截止时间)、license文件的创建时间、以及修改时间记录于license文件中,在软件的后期运行期间定时更新并获取软件的最近的一次运行时间。在每次启动软件时,进行关于软件授权时间信息的授权验证,授权验证成功通过后,允许软件启动并更新新的软件授权时间信息,否则,禁止软件启动。软件授权时间信息包括软件首次运行的时间、软件的最新一次运行的时间、license文件的创建时间以及修改时间,其中软件的最新一次运行时间会在软件运行期间定时更新,软件授权时间信息经过加密算法加密后保存在多个路径下(license文件中和系统文件夹下的隐藏文件中)。
本发明实施例中,根据硬件信息生成用于加密算法输入的明文特征标识。本发明实施例中,在获取到硬件信息后并不是直接将硬件信息作为加密算法的输入,而是经过处理后,得到明文特征标识。具体地,本发明中使用的硬件信息例如CPU序列号(记为cpu)、MAC地址(记为mac)、物理硬盘序列号(记为harddisk),则加密算法的输入(即硬件信息字符串)为:Input=cpu+mac+harddisk,其中“+”表示字符串拼接操作。硬件信息字符串的总长度为Q位,其中,可以选择在所有Q位中的前2/3位每间隔q位取一个字符,在所有Q位中的后1/3位每隔r位取一个字符,如图2所示,其中q和r的取值可以不同,这样可以得到长度小于硬件信息字符串的总长度的字符串A,字符串A即为明文特征标识,对字符串A(即明文特征标识)进行加密获得生成验证码。
采用对硬件信息字符串每间隔若干位取一个字符的方式可以提高授权的安全性,例如,假如CPU序列号、MAC地址、物理硬盘序列号这三个序列号中均含有字符‘9’,则破解者很难得知硬件信息字符串中的‘9’具体来自于谁。采用这种方式,即使破解者知道了硬件信息,也无法获得明文特征标识。
在得到明文特征标识后,将明文特征标识进行加密处理生成验证码,该验证码用于后续的校验授权。其加密处理过程为,明文特征标识经过加密算法I、密钥I加密后得到字符串B,字符串B再经过加密算法II、密钥II加密后得到验证码。采用这种双重加密,增加破解的难度。
在软件授权验证时,主要包括验证码校验和时间信息验证两部分,在可选实施例中,先进行验证码校验后进行时间信息验证,当然也可以先进行时间信息验证后进行验证码校验。
验证码校验过程如下,将验证码和license文件中的授权码进行比较,以确定设备是否为可供软件使用的授权设备,如果验证码和授权码一致,则进行后续的时间信息验证,否则禁止软件启动。
license文件是由软件开发者在用户购买软件时提供给用户的,里面存储的是根据用户提供的待授权设备的硬件信息生成的授权码。优选地,license文件采用.dat文件,这样,用户打开后无法获知具体的内容,此外,license文件还用于时间信息的存储。
当验证码校验通过以后,便执行时间信息验证。
在软件在设备中首次启动时,从读取设备的系统时间,作为软件首次运行时间,根据软件首次运行时间计算出软件的使用权限截止时间,将软件的使用权限截止时间存储于license文件中,读取设备的系统中所记录的license文件的创建时间并存储于license文件中,读取设备的系统中所记录的license文件的修改时间并经过加密后存储于license文件中,在随后的软件运行期间定时读取设备的系统时间作为软件的最近一次运行时间(记为last_save)经加密后更新于license文件中。license文件中存储了其自身的创建时间和修改时间。所有存储于license文件中的时间信息在存储之前均进行加密处理。
本发明实施例中,软件运行期间定时更新软件的最近一次运行时间(即在软件运行期间定时读取设备的系统时间作为软件的最近一次运行时间更新于license文件中),可有效的防止用户修改系统时间,并且可以避免用户安装软件后一直不关机,软件永不退出,无法获取最近一次运行时间的情况。
时间信息验证过程主要根据license文件中存储的时间信息和设备的系统提供的相关时间信息的比较来判断软件是否处于可使用的有效期内以及判断设备的系统时间是被篡改。验证过程主要如下。
首先,读取系统中所记录的license文件的创建时间(creat_get),读取并解密license文件中所记录的license文件的创建时间(creat_save),读取系统中所记录的license文件的修改时间(revise_get),读取并解密license文件中所记录的license文件的修改时间(revise_save),将creat_get和的creat_save进行比较并将revise_get和revise_save进行比较,来判断用户是否修改了license文件,只有creat_get和creat_save相等、revise_save早于revise_get并且revise_save和revise_get之间相差不超过2分钟时认为license文件未被篡改或替换,则执行随后的用户是否修改系统时间的判断,否则认为license文件已被篡改或已被替换,禁止软件使用。如果creat_get和creat_save不相等,则表明license文件的创建时间的记录上出现了不一致,这极大可能是由于license文件被替换所导致,如果revise_save不早于revise_get则表明license文件的修改时间出现了差异,这极大可能是由于license文件在程序运行以外的其他时间被恶意修改所导致。本发明实施例中,通过对license文件的创建时间和修改时间的比对,不但可以有效防止用户自行修改license文件中的内容,而且可以防止用户一直只使用第一次或者前一次的license文件进行授权验证,达到双重验证的目的,安全性更高。
然后,读取系统的当前时间(last_get),读取并解密license文件中所记录的软件的最近一次运行时间(last_save),将last_get和last_save进行比较,来判断用户是否修改了系统时间。如果last_save早于last_get,则进行随后的软件是否处于有效期的判断,如果last_save等于或者晚于last_get,则禁止软件使用。在优选实施例中,要求获取到的时间信息精确到毫秒量级,所以last_save必然早于last_get,倘若获取到的last_save晚于或者等于last_get则可以断定用户修改了系统时间。
然后,根据系统的当前时间(last_get)来判断软件是否处于有效期内,即将last_get与软件的使用权限截止时间进行比较,如果last_get早于软件的使用权限截止时间,则启动软件,否则禁止软件使用。
另外,在本发明的优选实施例中,获取到的时间信息分别存储在两个路径下,一个是license文件中,另一个位于系统目录下的隐藏文件中,在修改、更新license文件中的软件授权时间信息时,同步地对系统目录下的隐藏文件中的时间校对信息进行相同的修改、更新。选择license文件是因为用户肯定不会删除和轻易修改该文件,如果随便存储于某个文件,则当用户看到并且打开发现该文件是乱码时,易于被用户删除而影响软件授权验证,所以选择license文件不易被用户错误删除。选择系统目录下的隐藏文件中是因为不易被用户发现和修改。系统目录下的隐藏文件可与license文件一起使用,作为双重认证的手段,只有该系统目录下的隐藏文件和license文件中所存储的时间信息完全一致时,才进行时间信息验证,否则禁止软件使用。
如图3所示,采用本发明实施例的软件授权验证方法进行软件授权验证的流程如下:
步骤b1、获取软件所处设备的硬件信息,之后进入步骤b2;
步骤b2、从硬件信息中提取明文特征,之后进入步骤b3;
步骤b3、将明文特征进行加密生成验证码,之后进入步骤b4;
步骤b4、将验证码与从license文件中读取的授权码进行比较判断是否一致,如果是则进入步骤b5,否则进入步骤b10;
步骤b5、将license文件中存储的license文件的创建时间(creat_save)与系统中所记录的license文件的创建时间(creat_get)进行比较,如果creat_save与creat_get相同,则进入步骤b6,否则进入步骤b10;
步骤b6、将license文件中存储的license文件的修改时间(revise_save)与系统中所记录的license文件的修改时间(revise_get)进行比较,如果revise_save早于revise_get并且revise_save和revise_get之间相差不超过revise_threshold,则进入步骤b7,否则进入步骤b10;
步骤b7、将license文件中存储的软件的最近一次运行时间(last_save)与系统的当前时间(last_get)进行比较,如果last_save早于last_get,则进入步骤b8,否则进入步骤b10;
步骤b8、将系统的当前时间(last_get)与软件的使用权限截止时间进行比较,如果last_get早于软件的使用权限截止时间,则进入步骤b9,否则进入步骤b10;
步骤b9、启动软件并在软件运行期间定期更新license文件中的软件的最近一次运行时间(last_save),并更新license文件的修改时间(revise_save);
步骤b10、禁止软件启动。
本发明实施例还提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如如上述任一项实施例说明中的软件授权验证方法中的步骤。
本发明实施例还同时提供一种执行追踪调度方法的电子设备,如图4所示,该电子设备包括:至少一个处理器1以及存储器2。存储器2和至少一个处理器1通信连接,例如存储器2和至少一个处理器1通过总线连接。存储器2存储有可被至少一个处理器1执行的指令,所述指令被至少一个处理器1执行,以使至少一个处理器1执行如上述任一项实施例说明中的软件授权验证方法中的步骤。
本发明实施例的软件授权验证方法中,在授权文件中存储授权码和软件授权时间信息并结合授权码和授权时间信息的验证方式对软件进行授权验证,实现了不依赖于外接可插拔加密硬件设备的授权验证,节省了硬件设备投入。本发明实施例中,将对设备的硬件信息进行处理得到明文特征标识,作为加密过程的输入生成验证码,即便在加密算法和密钥均泄露的情况下也难以推断出具体的明文是如何得出的。本发明实施例中,通过定时更新软件的最近一次运行时间,可有效的防止用户修改系统时间,并且可以避免用户安装软件后一直不关机,软件永不退出,无法获取最近一次运行时间的情况。本发明实施例中,利用授权文件中存储的授权文件创建时间、修改时间以及软件首次运行的时间、最新一次运行的时间,进行软件的授权验证,可保证在不依赖于远端授权服务器、互联网以及卫星定位授时系统的情况下也可有效的控制软件使用的期限,并且可有效防止用户修改授权文件中的内容。本发明实施例的软件授权验证方法实现了对软件的使用期限的有效控制。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (16)
1.一种软件授权验证方法,包括在每次启动所述软件之前:
对所述软件所处设备的硬件信息进行处理,获得验证码,并将所述验证码与存储于授权文件中的授权码进行比较,获得验证授权码比较结果;
将存储于所述授权文件中的软件授权时间信息与所述设备的系统中所记录的对应时间信息进行比较,获得时间信息比较结果;
在所述验证授权码比较结果和所述时间信息比较结果均满足授权条件时,允许在所述设备中运行所述软件。
2.根据权利要求1所述的软件授权验证方法,其特征在于,所述验证授权码比较结果的授权条件为:
所述验证码与所述授权码相同。
3.根据权利要求1所述的软件授权验证方法,其特征在于:所述的将存储于所述授权文件中的软件授权时间信息与所述设备的系统中所记录的对应时间信息进行比较,包括:
将存储于所述授权文件中的所述软件的授权文件的创建时间与所述设备的系统中所记录的所述授权文件的创建时间进行比较;
将存储于所述授权文件中的所述授权文件的修改时间与所述系统中所记录的所述授权文件的修改时间进行比较;
将存储于所述授权文件中的所述软件的最近一次运行时间与所述系统的当前时间进行比较;
将所述系统的当前时间与所述软件的使用权限截止时间进行比较。
4.根据权利要求3所述的软件授权验证方法,其特征在于,所述时间信息比较结果的授权条件包括:
存储于所述授权文件中的所述授权文件的创建时间与所述系统中所记录的所述授权文件的创建时间相同,存储于所述授权文件中的所述授权文件的修改时间早于所述系统中所记录的所述授权文件的修改时间,存储于所述授权文件中的所述授权文件的修改时间和所述系统中所记录的所述授权文件的修改时间之间的时差不大于时差阈值,存储于所述授权文件中的所述软件的最近一次运行时间早于所述系统的当前时间,并且所述系统的当前时间早于所述软件的使用权限截止时间。
5.根据权利要求1所述的软件授权验证方法,其特征在于,所述的对所述软件所处设备的硬件信息进行处理,获得验证码,包括:
将表示所述设备的硬件信息的字符串的前M位中,每间隔m位提取一个字符;
将表示所述设备的硬件信息的字符串的后N位中,每间隔n位提取一个字符;
将所提取的所有字符组成明文特征标识;
将所述明文特征标识进行加密获得所述验证码;
其中,表示所述设备的硬件信息的字符串为M+N位,m<M,n<N。
6.根据权利要求5所述的软件授权验证方法,其特征在于,所述的将所述明文特征标识进行加密获得所述验证码,包括:
利用第一密钥,采用第一加密算法对所述明文特征标识进行第一次加密,获得第一加密字符串;
利用第二密钥,采用第二加密算法对所述第一加密字符串进行第二次加密,获得所述验证码。
7.根据权利要求5所述的软件授权验证方法,其特征在于:
表示所述设备的硬件信息的字符串由所述设备的CPU序列号、MAC地址和物理硬盘序列号拼接而成。
8.根据权利要求3所述的软件授权验证方法,其特征在于:
存储于所述授权文件中的所述软件的最近一次运行时间,在所述软件运行期间定期更新。
9.根据权利要求3所述的软件授权验证方法,其特征在于,在允许在所述设备中运行所述软件之后,所述软件授权验证方法还包括:
将所述系统中所记录的所述授权文件的修改时间更新至所述授权文件中。
10.根据权利要求3所述的软件授权验证方法,其特征在于:
存储于所述授权文件中的所述软件的授权文件的创建时间、所述授权文件的修改时间和所述软件的最近一次运行时间均为加密处理后的时间信息;
将存储于所述授权文件中的所述软件的授权文件的创建时间、所述授权文件的修改时间和所述软件的最近一次运行时间,与所述设备的系统中所记录的所述软件的授权文件的创建时间、所述授权文件的修改时间和所述系统的当前时间进行比较时,先将存储于所述授权文件中的所述软件的授权文件的创建时间、所述授权文件的修改时间和所述软件的最近一次运行时间进行解密。
11.根据权利要求3所述的软件授权验证方法,其特征在于,在将存储于所述授权文件中的软件授权时间信息与所述设备的系统中所记录的对应时间信息进行比较之前,所述方法还包括:
将存储于所述授权文件中的软件授权时间信息与时间校对信息进行比较,若存储于所述授权文件中的软件授权时间信息与所述时间校对信息相同,则执行将存储于所述授权文件中的软件授权时间信息与所述设备的系统中所记录的对应时间信息进行比较的步骤。
12.根据权利要求11所述的软件授权验证方法,其特征在于:
所述时间校对信息存储于所述系统的系统目录下的隐藏文件中。
13.根据权利要求11所述的软件授权验证方法,其特征在于,在允许在所述设备中运行所述软件之后,所述软件授权验证方法还包括:
将所述系统中所记录的所述授权文件的修改时间更新至所述授权文件中。
14.根据权利要求3所述的软件授权验证方法,其特征在于,所述方法还包括在首次启动所述软件时:
记录所述软件的首次启动时间,并根据所述软件的首次启动时间,确定所述软件的使用权限截止时间。
15.一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储指令,其特征在于,所述指令在由处理器执行时使得所述处理器执行如权利要求1至14中任一项所述的软件授权验证方法中的步骤。
16.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如权利要求1至14中任一项所述的软件授权验证方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910633547.8A CN112231647A (zh) | 2019-07-15 | 2019-07-15 | 一种软件授权验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910633547.8A CN112231647A (zh) | 2019-07-15 | 2019-07-15 | 一种软件授权验证方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112231647A true CN112231647A (zh) | 2021-01-15 |
Family
ID=74111408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910633547.8A Withdrawn CN112231647A (zh) | 2019-07-15 | 2019-07-15 | 一种软件授权验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112231647A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051531A (zh) * | 2021-03-12 | 2021-06-29 | 深圳市鹰硕技术有限公司 | 用于软件授权验证装置以及软件授权验证方法 |
CN113221075A (zh) * | 2021-06-02 | 2021-08-06 | 日照市海洲电子科技有限公司 | 一种软件授权方法、系统和软件终端 |
CN113343185A (zh) * | 2021-08-02 | 2021-09-03 | 统信软件技术有限公司 | 一种客户端应用的授权方法、计算设备及存储介质 |
CN113496028A (zh) * | 2021-06-28 | 2021-10-12 | 山东云缦智能科技有限公司 | 一种具备时间限制功能的软件离线认证的方法 |
CN113569205A (zh) * | 2021-06-25 | 2021-10-29 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种sdk软件接口服务授权方法及装置 |
CN113656101A (zh) * | 2021-08-17 | 2021-11-16 | 成都长城开发科技有限公司 | 一种授权管理方法、系统、服务器、用户端 |
CN113660205A (zh) * | 2021-07-12 | 2021-11-16 | 浙江瑞银电子有限公司 | 一种软件授权码加密方法 |
CN113742706A (zh) * | 2021-09-08 | 2021-12-03 | 杭州涂鸦信息技术有限公司 | 一种应用程序的授权认证方法、装置以及介质 |
CN114741664A (zh) * | 2022-04-21 | 2022-07-12 | 巨翊科技(上海)有限公司 | 一种软件的授权方法、装置及系统 |
CN114826660A (zh) * | 2022-03-16 | 2022-07-29 | 深圳爱捷云科技有限公司 | 云服务运行方法、电子设备和存储介质 |
CN115099434A (zh) * | 2022-07-05 | 2022-09-23 | 中国长江三峡集团有限公司 | 一种水电站设备运维安全管理方法及系统 |
CN116644390A (zh) * | 2023-06-07 | 2023-08-25 | 深圳市雁联计算系统有限公司 | 软件双重授权检查方法、系统、终端及介质 |
CN117574333A (zh) * | 2024-01-16 | 2024-02-20 | 四川精容数安科技有限公司 | 一种备份软件License有效期的校验方法 |
-
2019
- 2019-07-15 CN CN201910633547.8A patent/CN112231647A/zh not_active Withdrawn
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051531A (zh) * | 2021-03-12 | 2021-06-29 | 深圳市鹰硕技术有限公司 | 用于软件授权验证装置以及软件授权验证方法 |
CN113051531B (zh) * | 2021-03-12 | 2023-03-31 | 深圳市鹰硕技术有限公司 | 用于软件授权验证装置以及软件授权验证方法 |
CN113221075A (zh) * | 2021-06-02 | 2021-08-06 | 日照市海洲电子科技有限公司 | 一种软件授权方法、系统和软件终端 |
CN113569205A (zh) * | 2021-06-25 | 2021-10-29 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种sdk软件接口服务授权方法及装置 |
CN113496028A (zh) * | 2021-06-28 | 2021-10-12 | 山东云缦智能科技有限公司 | 一种具备时间限制功能的软件离线认证的方法 |
CN113660205A (zh) * | 2021-07-12 | 2021-11-16 | 浙江瑞银电子有限公司 | 一种软件授权码加密方法 |
CN113849779A (zh) * | 2021-08-02 | 2021-12-28 | 统信软件技术有限公司 | 一种客户端应用的授权方法、计算设备及存储介质 |
CN113343185B (zh) * | 2021-08-02 | 2021-10-22 | 统信软件技术有限公司 | 一种客户端应用的授权方法、计算设备及存储介质 |
CN113343185A (zh) * | 2021-08-02 | 2021-09-03 | 统信软件技术有限公司 | 一种客户端应用的授权方法、计算设备及存储介质 |
CN113656101A (zh) * | 2021-08-17 | 2021-11-16 | 成都长城开发科技有限公司 | 一种授权管理方法、系统、服务器、用户端 |
CN113656101B (zh) * | 2021-08-17 | 2024-06-11 | 成都长城开发科技股份有限公司 | 一种授权管理方法、系统、服务器、用户端 |
CN113742706A (zh) * | 2021-09-08 | 2021-12-03 | 杭州涂鸦信息技术有限公司 | 一种应用程序的授权认证方法、装置以及介质 |
CN114826660A (zh) * | 2022-03-16 | 2022-07-29 | 深圳爱捷云科技有限公司 | 云服务运行方法、电子设备和存储介质 |
CN114741664A (zh) * | 2022-04-21 | 2022-07-12 | 巨翊科技(上海)有限公司 | 一种软件的授权方法、装置及系统 |
CN114741664B (zh) * | 2022-04-21 | 2024-01-09 | 巨翊科技(上海)有限公司 | 一种软件的授权方法、装置及系统 |
CN115099434B (zh) * | 2022-07-05 | 2023-10-24 | 中国长江三峡集团有限公司 | 一种水电站设备运维安全管理方法及系统 |
CN115099434A (zh) * | 2022-07-05 | 2022-09-23 | 中国长江三峡集团有限公司 | 一种水电站设备运维安全管理方法及系统 |
CN116644390A (zh) * | 2023-06-07 | 2023-08-25 | 深圳市雁联计算系统有限公司 | 软件双重授权检查方法、系统、终端及介质 |
CN116644390B (zh) * | 2023-06-07 | 2024-08-27 | 深圳市雁联计算系统有限公司 | 软件双重授权检查方法、系统、终端及介质 |
CN117574333A (zh) * | 2024-01-16 | 2024-02-20 | 四川精容数安科技有限公司 | 一种备份软件License有效期的校验方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112231647A (zh) | 一种软件授权验证方法 | |
CN107480555B (zh) | 基于区块链的数据库访问权限控制方法及设备 | |
US20210294879A1 (en) | Securing executable code integrity using auto-derivative key | |
US8844049B2 (en) | Method for generating a cryptographic key for a protected digital data object on the basis of current components of a computer | |
CN101281468B (zh) | 生成固件更新文件和更新固件的方法和设备 | |
US8533469B2 (en) | Method and apparatus for sharing documents | |
US20070074038A1 (en) | Method, apparatus and program storage device for providing a secure password manager | |
US7992001B2 (en) | Preventing execution of software without a dynamically generated key | |
EP1168141A2 (en) | A secure and open computer platform | |
CN107430658A (zh) | 安全软件认证及验证 | |
US20110271350A1 (en) | method for protecting software | |
US20050198517A1 (en) | System and method for distributed module authentication | |
CN114186199B (zh) | 许可授权方法及装置 | |
CN110096849A (zh) | 一种License授权认证方法、装置、设备及可读存储介质 | |
CN109359478B (zh) | 基于加密许可文件的授权方法及系统 | |
CN110826092A (zh) | 一种文件签名处理系统 | |
CN101739361A (zh) | 访问控制方法、访问控制装置及终端设备 | |
US7353386B2 (en) | Method and device for authenticating digital data by means of an authentication extension module | |
CN108256351B (zh) | 文件处理方法和装置、存储介质及终端 | |
CN107133499B (zh) | 一种软件版权保护方法、客户端、服务端以及系统 | |
CN113569205A (zh) | 一种sdk软件接口服务授权方法及装置 | |
CN111191194B (zh) | 一种多核处理器软件集成开发环境离线使用许可系统 | |
CN112685698A (zh) | 一种基于USB Key的软件授权方法及系统 | |
CN108363912B (zh) | 一种程序代码的密保方法及装置 | |
CN109614768B (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210115 |
|
WW01 | Invention patent application withdrawn after publication |