软件启动方法、软件授权验证方法、设备和存储介质与流程

文档序号:17539217发布日期:2019-04-29 14:21阅读:199来源:国知局
本申请涉及计算机
技术领域
:,特别是涉及一种软件启动方法、软件授权验证方法、计算机设备和存储介质。
背景技术
::对于翻译型语言(包括java、.net等使用中间码的语言)以及规则引擎或工作流来说,软件执行码就是软件代码或中间码,这部分代码是可以被反编译或直接暴露在用户和其他人员面前的。只要其获得执行码,则系统就没有秘密可言。因此一直以来,保护软件不被非法拷贝和破解是较大的问题,传统的激活码和联机激活方案对软件的代码没有起到保护作用。技术实现要素:基于此,有必要针对上述技术问题,提供一种软件授权验证方法、软件授权验证处理方法、计算机设备和存储介质。一种软件启动方法,所述方法包括:向授权服务器发起授权验证请求,所述授权验证请求携带:待授权软件的软件标识、机器特征码、加密密码;获取所述授权服务器基于所述授权验证请求返回的授权响应,所述授权响应携带:所述授权服务器在基于所述软件标识、机器特征码确定授权有效时,对所述加密密码进行解密得到的密码;通过所述密码解密所述待授权软件的加密文件得到解密数据后,基于所述解密数据启动所述待授权软件。上述软件启动方法,客户端在启动软件前,需向授权服务器发起授权验证请求,将加密密码和软件标识、机器特征码发送给授权服务器,通过获取授权服务器的授权响应,授权响应在授权有效时会携带授权服务器对加密密码解密后得到的密码时,然后通过密码解密待授权软件的加密文件,才可以启动软件,从而通过上述方法可以起到对软件代码的保护作用。在其中一个实施例中,在向授权服务器发起授权验证请求之前,还包括步骤:随机生成客户端密钥对;所述授权验证请求还携带:所述客户端密钥对中的客户端公钥;所述客户端公钥用于所述授权服务器在返回授权响应之前,加密所述密码;所述授权响应携带的密码为:所述授权服务器用所述客户端公钥加密后的所述密码。在其中一个实施例中,所述授权验证响应还携带:所述授权服务器在基于所述软件标识、机器特征码确定授权有效时,获取的所述待授权软件的第一哈希值;在基于所述解密数据启动所述待授权软件之前,还包括步骤:对所述解密数据进行哈希运算得到第二哈希值,在所述第一哈希值和第二哈希值一致时,启动所述待授权软件。在其中一个实施例中,在向授权服务器发起授权验证请求之前,还包括步骤:随机生成客户端密钥对;获取当前时刻客户端的第一时间,用所述客户端密钥对中的客户端公钥加密所述第一时间,得到加密后的第一时间;所述授权验证请求还携带所述加密后的第一时间;所述授权响应还携带:所述加密后的第一时间;在基于所述解密数据启动所述待授权软件之前,还包括步骤:用所述客户端密钥对中的客户端私钥解密所述加密后的第一时间,得到第二时间;当所述第一时间和所述第二时间一致时,基于所述解密数据启动所述待授权软件。在其中一个实施例中,基于所述解密数据启动所述待授权软件,包括:将所述解密数据加载至内存,跳转至所述解密数据的代码入口处,启动所述待授权软件。在其中一个实施例中,所述授权验证响应还携带:所述授权服务器在基于所述软件标识、机器特征码确定授权有效时,生成的新密码;通过所述密码解密所述待授权软件的加密文件得到解密数据之后,还包括步骤:用所述新密码加密所述解密数据,得到新加密文件;加密所述新密码得到新加密密码;将所述新加密文件和所述新加密密码替换所述加密文件和所述加密密码。一种软件授权验证方法,所述方法包括:接收授权验证请求,所述授权验证请求携带:待授权软件的软件标识、机器特征码、加密密码;在基于所述软件标识和所述机器特征码确定授权有效时,用服务器私钥解密所述加密密码,得到密码;向客户端发送授权响应;所述授权响应携带所述密码,所述密码用于客户端解密所述待授权软件的加密文件。在其中一个实施例中,所述授权验证请求还携带:客户端公钥;在得到密码之后,还包括步骤:用所述客户端公钥加密所述密码;向所述客户端发送授权响应时携带的密码为客户端公钥加密后的密码。在其中一个实施例中,所述授权验证请求还携带:当前时刻客户端加密后的第一时间;所述授权验证响应还携带:所述加密后的第一时间;所述加密后的第一时间用于所述客户端确定授权验证响应的安全性。在其中一个实施例中,在确定授权有效后,还包括步骤:基于所述软件标识获取所述待授权软件的哈希值;所述授权响应还携带:所述待授权软件的哈希值;所述待授权软件的哈希值用于所述客户端在基于所述密码解密所述待授权软件的加密文件后得到解密数据后,确定所述解密数据的哈希值与所述待授权软件的哈希值是否一致。在其中一个实施例中,在确定授权有效后,还包括步骤:随机生成新密码;所述授权验证响应还携带:所述新密码;所述新密码用于所述客户端在通过所述密码解密所述待授权软件的加密文件后得到解密数据后,重新加密所述解密数据。在其中一个实施例中,在接收验证授权请求之前,还包括步骤:接收授权登记请求,所述授权登记请求携带机器特征码;将所述机器特征码、待登记软件的软件标识、待登记软件的授权有效期添加至授权数据库中;随机生成密码,基于所述密码确定加密密码;用所述密码加密所述待登记软件的代码,得到加密文件;将所述加密密码、加密文件、启动器和所述待登记软件的软件标识发送至终端。一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。附图说明图1为一个实施例中软件启动方法的应用环境图;图2为一个实施例中软件启动方法的流程示意图;图3为另一个实施例中软件启动方法的流程示意图;图4为一个实施例中软件授权验证方法的流程示意图;图5为另一个实施例中软件授权验证方法的流程示意图;图6为另一个实施例中软件授权验证方法的流程示意图;图7为一个实施例中客户端的结构示意图;图8为一个实施例中登记授权流程示意图;图9为一个实施例中客户端请求授权的流程示意图;图10为一个实施例中授权服务器验证授权的流程示意图;图11为一个实施例中客户端处理服务器返回授权响应的流程示意图;图12为一个实施例中客户端验证软件代码合法性的流程示意图;图13为一个实施例中客户端重新加密数据文件的流程示意图;图14为一个实施例中客户端向授权服务器请求授权验证并启动软件的过程示意图;图15为一个实施例中客户端软件启动的流程示意图;图16为一个实施例中授权服务器进行软件授权验证的流程示意图;图17为一个实施例中计算机设备的内部结构图;图18为另一个实施例中计算机设备的内部结构图。具体实施方式为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。本申请提供的软件启动方法,可以应用于如图1所示的应用环境中。其中,客户终端110通过网络与授权服务器120通过网络进行通信。客户终端110在启动软件之前,需要向授权服务器发起授权验证请求,将软件标识、机器特征码和加密密码发送至授权服务器,授权服务器在基于软件标识、机器特征码确定授权有效时,将加密密码解密之后与授权响应一起返回给客户终端,客户终端才能根据密码解密软件的加密文件以启动软件。其中,客户终端110可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,授权服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。在一个实施例中,如图2所示,提供了一种软件启动方法,以该方法应用于图1中的客户终端为例进行说明,包括步骤s210至步骤s230。步骤s210,向授权服务器发起授权验证请求,授权验证请求携带:待授权软件的软件标识、机器特征码、加密密码。客户端在启动软件之前需要向授权服务器发起验证请求,授权验证请求携带的待授权软件的软件标识为表示待授权的软件的识别码,用于区分同一授权计算机下不同的授权软件,由授权服务器维护。机器特征码用于标识计算机,在一个实施例中,机器特征码的确定方法为获取计算机的mac地址、cpu编号,通过将计算机mac地址和cpu编号拼接后,再通过摘要算法得到机器特征码,进一步地,摘要算法可以是md5算法。在其它实施例中,也可以是通过其它方式确定机器特征码。使用机器特征码验证软件授权,防止软件被非法拷贝运行。其中,加密密码为授权服务器加密过的密码,而密码在本申请的实施例中用于加密待授权软件的代码得到待授权的加密文件。客户端在通过授权服务器授权之前,存储器中只有加密密码和加密文件,因此无法直接启动软件,需要通过授权服务器的授权,以及授权服务器返回的解密之后的密码,然后用密码解密加密文件得到解密数据(待授权软件的代码),进一步地,加载解密数据到内存中,才能启动软件。其中,在一个实施例中,加密密码、加密文件存储于待授权软件的加密数据中,软件标识存储于待授权软件的配置文件中。进一步地,向待授权服务器发起授权验证请求,包括:按照授权服务器地址向授权服务器发起授权验证请求。其中的授权服务器地址可以是存储在待授权软件的配置文件中的。步骤s220,获取授权服务器基于所述授权验证请求返回的授权响应,授权响应携带:授权服务器在基于软件标识、机器特征码确定授权有效时,对加密密码进行解密得到的密码。授权响应为授权服务器基于授权验证请求中携带的数据确定授权是否有效后,向客户端返回的响应,可以理解地,若授权服务器在基于授权验证请求携带的数据确定授权有效,则授权验证响应为授权有效,若基于授权验证请求携带的数据确定授权无效,则授权验证响应为授权无效。进一步地,在一个实施例中,授权验证响应为授权有效时,授权验证响应还携带授权服务器对加密密码解密后得到的密码。在一个实施例中,授权服务器在基于软件标识、机器特征码在授权数据库中查找到对应的授权记录,且授权记录处于授权有效期内时,确定授权有效。步骤s230,通过密码解密待授权软件的加密文件得到解密数据后,基于解密数据启动待授权软件。其中,加密文件为用密码加密后的待授权软件的代码,解密数据即为待授权软件的代码。客户端在接收到授权服务器的授权有效的授权响应时,授权响应携带有密码,客户端用密码对加密文件进行解密,得到解密数据,即待授权软件的代码,从而启动待授权软件。在一个实施例中,基于解密数据启动待授权软件,包括:将解密数据加载至内存,跳转至解密数据的代码入口处,启动待授权软件。本实施例中,待授权软件的代码被密码加密,密码也被加密,因此,客户端在未取得授权服务器授权成功的授权响应的时候,无法直接解密加密文件得到待授权软件的代码;进而在启动软件之前,需要向授权服务器发送授权验证请求,在获得授权服务器的授权成功的授权响应时,通过授权响应携带的密码解密加密文件得到待授权软件的代码,进而启动软件。在一个实施例中,加密密码和加密文件在客户端合并之后存储为一个加密数据文件,存储于客户端。上述软件启动方法中,客户端在启动软件前,需向授权服务器发起授权验证请求,将加密密码和软件标识、机器特征码发送给授权服务器,通过获取授权服务器的授权响应,授权响应在授权有效时会携带授权服务器对加密密码解密后得到的密码时,然后通过密码解密待授权软件的加密文件,才可以启动软件,从而通过上述方法可以起到对软件代码的保护作用。在一个实施例中,在向授权服务器发起授权验证请求之前,还包括步骤:客户端随机生成客户端密钥对。在本实施例中,向授权服务器发起的授权验证请求还携带:客户端密钥对中的客户端公钥;客户端公钥用于所述授权服务器在返回授权响应之前,加密所述密码;授权响应携带的密码为:授权服务器用客户端公钥加密后的密码。其中,客户端生成的客户端密钥对为一对非对称密钥对,该客户端密钥对可以用于加密授权服务器返回授权响应时携带的数据,从而使授权服务器和客户端之间的通讯更加安全。在本实施例中,客户端将生成的密钥对中的客户端公钥与授权验证请求一起发送至授权服务器,进一步地,授权服务器在返回授权响应携带的密码之前,先用客户端公钥对密码加密后再发送给客户端,即授权响应携带的是授权服务器用客户端公钥加密后的密码。客户端在接收到客户端公钥加密后的密码,用客户端私钥进行解密,即可得到密码。进一步地,在一个实施例中,客户端随机生成的客户端密钥对为临时密钥对,客户端在每次发起授权验证请求之前生成客户端密钥对,在本次授权验证完成后即销毁。在一个实施例中,客户端在向授权服务器发起授权验证请求之前,还包括步骤:随机生成客户端密钥对;获取当前时刻客户端的第一时间,用客户端密钥对中的客户端公钥加密第一时间,得到加密后的第一时间。则在本实施例中,授权验证请求还携带有加密后的第一时间;服务器在返回的授权响应中还携带:加密后的第一时间。进一步地,客户端在接收到授权响应之后,在基于解密数据启动待授权软件之前,还包括步骤:用客户端密钥对中的客户端私钥解密加密后的第一时间,得到第二时间;在第一时间和第二时间一致时,基于解密数据启动待授权软件。客户端在向授权服务器发起授权验证请求时,随机生成一对非对称的客户端密钥对,并获取当前时刻的时间,记为第一时间,用客户端密钥对中的公钥加密第一时间,将加密后的第一时间与授权验证请求一起发送至授权服务器。授权服务器在返回授权响应时携带加密后的第一时间给客户端。进一步地,客户端在接收到授权响应时,需要用客户端密钥对中的客户端私钥来解密授权服务器返回的加密后的第一时间,将解密得到的时间记为第二时间,进而客户端可以通过第一时间和第二时间确定客户端和授权服务器的通讯的安全性,若第一时间和第二时间一致,则表明通讯安全。在本实施例中,客户端密钥对不仅用于加密客户端发起授权验证请求携带的数据,还用于加密第一时间,进一步提高安全性。进一步地,在一个实施例中,授权验证响应还携带:授权服务器在基于软件标识、机器特征码确定授权有效时,获取的待授权软件的第一哈希值。其中,哈希值是一个文件的特征码,每个不同的文件哈希值是唯一的(不同于容量等其他属性),本实施例中,授权服务器在确定授权有效时,基于软件标识在授权数据库中查找对应的待授权软件的哈希值,将授权服务器获取的待授权软件的哈希值记为第一哈希值。在本实施例中,上述软件启动方法在基于解密数据启动待授权软件之前,还包括步骤:对解密数据进行哈希运算得到第二哈希值,在第一哈希值和第二哈希值一致时,启动待授权软件。客户端在接收到授权响应携带的密码后,用密码解密待授权软件的加密文件,得到解密数据,即待授权软件的代码,计算解密数据的哈希值,记为第二哈希值。进一步地,客户端通过比对第一哈希值和第二哈希值是否一致,可以验证待授权软件代码的安全性,若第一哈希值和第二哈希值一致,则表示待授权软件的代码未被篡改,是安全的。若第一哈希值和第二哈希值不一致,则认为待授权软件的代码被篡改,此时客户端启动器可以控制擦除内存,并显示错误的提示信息,以提醒用户软件损坏。在一个实施例中,授权服务器返回的授权验证响应还携带:授权服务器在基于软件标识、机器特征码确定授权有效时,生成的新密码。在本实施例中,如图3所示,上述软件启动方法,在通过密码解密待授权软件的加密文件得到解密数据之后,还包括步骤s310至步骤s330。步骤s310,用新密码加密解密数据,得到新加密文件。步骤s320,用服务器公钥加密新密码得到新加密密码。步骤s330,将新加密文件和新加密密码替换加密文件和加密密码。其中,服务器公钥为授权服务器通讯使用的密钥对中的公钥,服务器公钥可以在安装客户端时,用授权服务器发送至客户端进行存储,可以理解地,服务器公钥和与其对应的服务器私钥在授权服务器中被存储起来,在一个实施例中,服务器公钥不仅可以用于加密授权服务器发送给客户端的数据,还可以用于加密用来给待授权软件的代码进行加密的密码。在本实施例中,授权服务器在确定授权有效时,不仅解密了加密密码,还会生成一个新的密码,将得到的密码和新密码都发送至客户端。其中,密码用于客户端本次解密加密文件得到代码,而新密码则用于客户端在通过代码启动软件后,将代码再一次加密后进行存储,并对新密码也用服务器公钥进行加密得到新的加密密码存储。客户端在下一次客户端启动软件时,需要获得授权服务器解密的即为新加密密码。因此,软件每次运行后被保护的代码数据部分都会被用新密码加密,大大提高软件破解的难度。在一个实施例中,客户端加密新密码用的是服务器公钥,从而在下一次向授权服务发起授权验证请求时携带新加密密码,由授权服务器用服务器私钥进行解密。进一步地,在一个实施例中,在向授权服务器发起授权验证请求之前,还包括步骤:用服务器公钥加密授权验证请求需要携带的数据后,得到加密客户端数据,再将加密客户端数据与授权验证请求一起发送至授权服务器。在本实施例中,授权服务器在接收到授权验证请求时,首先用服务器私钥解密加密客户端数据,再继续后面的验证步骤。其中,授权验证请求需要携带的数据可以包括:待授权软件的软件标识、机器特征码、加密密码、客户端公钥、第一时间。即客户端在向授权服务器发送的数据用服务器公钥加密之后再发送,从而可以进一步提高客户端和授权服务器之间的通讯的安全性。一个实施例中,本申请提供一种软件授权验证方法,以该方法应用于图1中的授权服务器端为例进行说明,如图4所示,包括步骤s410至步骤s430。步骤s410,接收授权验证请求,授权验证请求携带:待授权软件的软件标识、机器特征码、加密密码。其中,加密密码为用于加密待授权软件的代码的密码,加密后得到;软件标识、机器特征码分别表示客户端请求验证的软件、计算机,授权服务器根据软件标识和机器特征码在授权数据库中可以查找是否存在对应的授权记录,从而确定该授权验证请求是否有效。步骤s420,在基于软件标识和机器特征码确定授权有效时,用服务器私钥解密加密密码,得到密码。在本实施例中,加密密码为用服务器公钥对密码进行加密得到,因此,授权服务器确定授权有效时,用服务器私钥对加密密码进行解密,得到密码。步骤s430,向客户端发送授权响应;授权响应携带密码,密码用于客户端解密待授权软件的加密文件。本实施例中,是授权服务器基于软件标识和机器特征码确定授权有效时返回授权有效的授权响应的情况。在另一个实施例中,若授权服务器基于软件标识和机器特征码确定授权无效,则向客户端返回授权失败的授权响应。上述软件授权验证方法,授权服务器接收客户端发起的授权验证请求,基于授权验证请求中携带的待授权软件的软件标识和机器特征码,确定授权是否有效,在确定授权有效时,解密授权验证请求中携带的加密密码,得到密码,并将密码在向客户端返回的授权响应携带发送;密码用于客户端解密待授权软件的加密文件。客户端无法解密加密密码,进而也无法直接得到待授权软件的代码。从而,通过上述方法,可以保证待授权软件的代码安全。进一步地,在一个实施例中,授权服务器在基于软件标识、机器特征码确定授权是否有效,具体可以是,用软件标识、机器特征码在授权数据库中查找是否存在对应的授权记录,若查找到对应的授权记录,且授权记录显示当前还在授权有效期,则确定授权有效;若未在授权数据库中查找到对应的授权记录,则确定授权无效。其中,在一个实施例中,授权验证请求还携带:客户端公钥。其中,客户端公钥为客户端在发起授权验证请求之前随机生成的非对称客户端密钥对中的公钥。授权服务器在返回授权响应之前,可以用客户端公钥对需要携带的数据进行加密。在本实施例中,在得到密码之后,还包括步骤:用客户端公钥加密得到的密码。向客户端发送授权响应时携带的密码为客户端公钥加密后的密码。可以理解地,在其它实施例中,授权响应需要携带的其他数据也可以用客户端公钥加密后再发送。授权服务器在确定授权有效向客户端返回授权响应时携带用客户端加密过的密码,可以提高授权服务器与客户端之间通讯的安全性。进一步地,在一个实施例中,授权验证请求还携带:当前时刻客户端加密后的第一时间。在本实施例中,授权验证响应还携带:加密后的第一时间;加密后的第一时间用于客户端确定授权验证响应的安全性。本实施例中,客户端发起的授权验证请求携带有发起请求时的客户端的时间,加密后的时间,记为加密后的第一时间。因此,授权服务器在向客户端返回授权响应时还携带有该加密后的第一时间。这里加密后的第一时间可以用于客户端在接收到授权响应之后,根据加密后的第一时间进行解密,得到的时间记为第二时间,将第二时间与第一时间进行比较,若两个时间一致,则表示客户端和授权服务器之间的通讯是安全的,也即授权响应是安全的。在一个实施例中,如图5所示,授权服务器在确定授权有效后,还包括步骤s510:基于软件标识获取待授权软件的哈希值。则在本实施例中,授权响应还携带:待授权软件的哈希值;待授权软件的哈希值用于客户端在基于密码解密待授权软件的加密文件后得到解密数据后,确定解密数据的哈希值与待授权软件的哈希值是否一致。授权服务器向客户端返回待授权软件的哈希值,客户端可以基于该哈希值确定代码的安全性。其中,哈希值是一个文件的特征码,每个不同的文件哈希值是唯一的(不同于容量等其他属性);待授权软件的加密文件为加密后的待授权软件的代码。授权服务器在确定授权有效时,根据软件标识在授权数据库中查找待授权软件的哈希值,将该待授权软件的哈希值与授权响应一起返回给客户端;从而,客户端在接收到授权响应后,用授权响应携带的密码解密待授权软件的加密文件,得到解密数据,也即待授权软件的代码;客户端计算解密数据的哈希值,若软件代码未被篡改,则解密数据的哈希值应当与授权响应携带的哈希值一致。因此客户端可以根据解密数据的哈希值和授权响应携带的哈希值确定软件代码的安全性:若解密数据的哈希值与授权响应携带的哈希值一致,则认为软件代码安全,进一步可以根据解密数据启动待授权软件。在一个实施例中,如图5所示,在确定授权有效后,还包括步骤s520:随机生成新密码。本实施例中,授权验证响应还携带新密码;新密码用于客户端在通过密码解密待授权软件的加密文件后得到解密数据后,重新加密得到的解密数据。授权服务器生成新密码并发给客户端,客户端在本次解密得到解密数据(待授权软件的代码)之后,用新密码重新加密得到新的加密文件,并替换原来的加密文件,在客户端下一次启动软件之前,需要重新向授权服务器请求验证以获得新密码。软件每次运行后被保护的代码数据部分都会被用新密码加密,大大提高软件破解的难度。在一个实施例中,授权验证请求携带的是客户端用服务器公钥加密后的待授权软件的软件标识、机器特征码、加密密码。因此,本实施例中,授权服务器在确定授权有效时,还包括步骤:用服务器私钥解密加密后的待授权软件的软件标识、机器特征码、加密密码,才得到软件标识、机器特征码和加密密码。在本实施例中,客户端向授权服务器发送的数据用服务器公钥加密,从而可以提高客户端和授权服务器之间通讯的安全性。在一个实施例中,如图6所示,在接收验证授权请求之前,还包括步骤s610至步骤s640。步骤s610,接收授权登记请求,授权登记请求携带机器特征码。其中,机器特征码为终端的唯一标识。步骤s620,将机器特征码、待登记软件的软件标识、待登记软件的授权有效期添加至授权数据库中。其中,待登记软件为请求授权的软件,待登记软件的软件标识为区分同一授权计算机下不同的授权软件。步骤s630,随机生成密码,基于密码确定加密密码;用密码加密待登记软件的代码,得到加密文件。步骤s640,将加密密码、加密文件、启动器和待登记软件的软件标识发送至终端。其中,启动器用于终端运行启动器以启动软件。本实施例是终端获取软件授权时的过程;终端向授权服务器发送授权登记请求,请求授权服务器对该终端进行软件授权。授权登记请求携带有终端的机器特征码,授权服务器将机器特征码、软件标识、以及确定的授权有效期添加至授权数据库中,形成新的授权记录。在一个实施例中,授权服务器随机生成密码,用服务器公钥加密对生成的密码进行加密得到加密密码,用密码加密待登记软件的代码,得到加密文件;将加密密码、加密文件、启动器、软件标识发送至终端。进一步地,在一个实施例中,授权服务器发送至终端的数据还包括:授权服务器地址、服务器公钥,可以将授权服务器地址、待登记软件和服务器公钥作为待登记软件的配置文件,发送给终端。在一个实施例中,将加密密码和加密文件合并成为一个加密文件,授权服务器将启动器、配置文件和加密文件打包后发送至终端。上述软件授权验证方法,在授权登记的过程中,将终端发送的授权登记请求中的机器特征码和软件标识,以及授权有效期,登记到授权数据库中,形成授权记录。在终端启动软件前,向授权服务器发送授权验证请求进行授权验证时,授权服务器根据机器特征码和软件标识在授权数据库中查找是否存在对应的授权记录,进一步地根据授权记录的授权有效期确定授权是否有效。在一个具体实施例中,将终端从请求软件授权到运行一个软件的过程划分为三个部分:软件授权登记过程、软件授权验证过程和启动软件过程。以下分别对三个过程进行详细描述。其中,服务器公钥记为公钥a,服务器私钥记为私钥a,客户端公钥记为公钥b,客户端私钥记为私钥b,用来加密被保护的软件的代码的密码记为pu,客户端将加密后密码和加密后代码(待授权软件的加密文件)存储在一起,为加密数据文件。其中,软件授权登记过程包括步骤:终端在首次获取软件授权时,需要向软件供应商提供需要授权的计算机的机器特征码,机器特征码由计算机的mac地址与cpu编号拼接后进行md5运算获得。授权服务器在收到用户提交的机器特征码后在数据库中添加一个新的授权记录,包含授权计算机的机器特征码mc、授权软件pid、授权有效期以及其他用户信息,生成一个256位的随机密码pu,然后用公钥a对密码pu进行加密得加密数据a,用密码pu对软件的pe格式文件进行加密得到加密数据b,将加密数据a和加密数据b合并得到加密数据,将启动器、加密数据与配置文件打包后交给用户。一个实施例中,客户端结构如图7所示,登记授权流程如图8所示。其中,软件pid用于区分同一授权计算机下不同的授权软件,由授权服务器进行维护。启动器负责与授权服务器通讯、对数据进行加密解密、验证并装载最终程序代码;加密代码数据是需要保护的软件自身加密后的数据;配置文件记录软件的识别码、授权服务器的服务地址和授权服务器的公钥。在本实施例中,用户获取软件授权要先向授权服务器(软件供应方)提供自己计算机的身份识别码,授权服务器在授权数据库中添加相应的授权记录。其中,软件授权验证过程包括步骤:用户在终端安装好客户端后,通过运行启动器来启动软件。启动器启动后会读取配置文件及加密数据文件,从中获取授权服务器的服务地址、软件pid和授权服务器通讯使用的公钥a,从加密数据文件读取头256位获取加密后的密码pu,然后随机生成一对用于非对称加密的密钥对公钥b与私钥b,以及当前系统时间戳n1(第一时间)。启动器读取计算机的mac地址与cpu编号,拼接后进行md5运算获得计算机的机器特征码mc。客户端向授权服务器发送的身份识别码由计算机mac地址、cpu编号综合运算得来,可以保证唯一合法性。启动器将机器特征码mc、软件pid、公钥b、加密后的密码pu及用公钥b加密后的时间戳n1用公钥a加密,然后按照授权服务器的服务地址打包发送给授权服务器,开始请求验证授权,流程如图9所示。授权服务器在收到授权验证请求后,使用私钥a对验证授权请求携带的数据包进行解密,获得客户端发送的机器特征码mc、软件pid、公钥b、加密后时间戳n1与加密后的密码pu。授权服务器根据机器特征码mc及软件pid作在授权数据库进行搜索,若查找到对应记录且授权未过期则确定验证授权有效,其他情况算验证授权无效,验证无效后直接向客户端返回失败结果,流程如图10所示。授权服务器验证授权成功后,根据软件pid搜索数据库得到该软件的哈希值hasha,然后使用私钥a对加密后的密码pu进行解密得到密码pu,生成一个新的256位随机密码pu’,最后将加密后时间戳n1、密码pu、密码pu’及软件哈希值hasha用公钥b加密后返回给客户端,通知授权验证成功,流程如图10所示。软件代码使用的密码加密方式进行加密与解密,每次启动软件时会由授权服务器生成一个新的随机密码pu’返回给客户端,大大提高软件破解的难度。客户端收到授权验证成功的授权响应后,使用私钥b对授权服务器响应携带的数据进行解密,得到加密后时间n1、密码pu、新密码pu’及软件哈希值hasha,并用私钥b解密加密后时间n1,得到时间戳n2,对比时间戳n2与n1是否一致,以此验证通讯内容是否被篡改,启动器关闭与授权服务器的连接,授权验证完成,流程如图11所示。客户端与授权服务器使用基于非对称加密、以时间戳验证身份合法性的方式进行安全通讯,进一步提高安全性。进一步地,客户端接收到授权验证成功(授权有效)的授权响应之后,根据授权响应携带的数据启动软件,启动软件过程包括以下步骤:客户端启动器读取加密数据文件中除开头256位余下的数据,使用密码pu解密这部分数据,得到解密数据data。这里的解密数据data即为软件的pe格式文件。对data进行哈希值计算,得到hashb,对比授权服务器返回的hasha与hashb,若一致则确认软件未被篡改,进入下一步,若不一致则擦除内存,并提醒用户软件损坏,然后退出,流程如图12所示。启动器加载代码进内存前先计算代码的哈希值,并与授权服务器提供的代码哈希值进行对比,只有在两个哈希值一致的情况下才会将代码加载进内存,其他情况均会提示用户代码损坏。启动器用密码pu’对解密数据data重新加密得到加密数据data’,使用公钥a对新密码pu’加密得到新加密密码pun,然后将pun与data’写入加密数据文件,覆盖原文件,如图13所示。启动器在对代码数据进行加密解密时全程在内存中操作,解密后的代码不会出现在硬盘中。启动器将data装载进内存,并跳转至代码入口处,启动受保护的软件。如图14所示为一个实施例中客户端向授权服务器请求授权验证并启动软件的过程示意图,图15为客户端软件启动的流程示意图,图16为授权服务器进行软件授权验证的流程示意图。上述方法中,被保护软件代码由密码加密保护,密码由非对称密钥加密保护,加密文件(加密后的代码)和加密密码以文件方式存放在客户端,软件运行时客户端需要向授权服务器发送身份识别码进行授权验证,成功后授权服务器接收客户端发送的已加密密钥并解密,同时返回被保护软件代码的哈希值、解密密钥pu与新的加密密钥pu’,启动器使用解密密钥解密已加密的代码数据得到解密后的代码数据,并验证代码合法性,若合法则将解密后的代码装载进内存,同时使用新的加密密钥将解密后的代码数据重新加密,使用授权方公钥加密pu’,将两者合并后覆盖硬盘上的旧加密文件,最后在内存中启动解密后的软件代码。这样可以保证软件在已授权的情况下才能运行,软件运行时防止代码被篡改,并且每次运行后代码部分都会被随机加密,大大增加软件代码的安全性。通过上述方法,首先,客户端与授权服务器之间使用基于带身份验证的非对称加密的通讯方式进行通讯,可以保证在各种网络环境下进行安全通讯,防止内容被窃听和回放攻击。其次,被保护的软件的pe格式文件(portableexecutable,可移植的可执行的文件)整体加密作为一个额外文件挂载到客户端中使用,因而,软件本身编写过程中不需要做任何调整来适应本解决方案,也因此对绝大部分软件都适用,具有通用性。再次,软件每次运行后被保护的代码数据部分都会被用新密码加密,大大提高软件破解的难度。最后,使用机器特征码验证软件授权,可以防止软件被非法拷贝运行。应该理解的是,虽然图2-图16的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图16中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。在一个实施例中,本申请提供了一种软件启动装置,包括:授权验证请求发送模块、授权响应获取模块和启动模块,其中:授权验证请求发送模块,用于向授权服务器发起授权验证请求,授权验证请求携带:待授权软件的软件标识、机器特征码、加密密码。授权响应获取模块,用于获取所述授权服务器基于授权验证请求返回的授权响应,授权响应携带:授权服务器在基于软件标识、机器特征码确定授权有效时,对加密密码进行解密得到的密码。启动模块,用于通过密码解密待授权软件的加密文件得到解密数据后,基于解密数据启动待授权软件。在一个实施例中,本申请还一种软件授权验证装置,包括:授权验证请求接收模块、解密模块和授权响应发送模块。其中:授权验证请求接收模块,用于接收授权验证请求,授权验证请求携带:待授权软件的软件标识、机器特征码、加密密码。解密模块,用于在基于软件标识和机器特征码确定授权有效时,用服务器私钥解密加密密码,得到密码。授权响应发送模块,用于向客户端发送授权响应;授权响应携带所述密码,密码用于客户端解密待授权软件的加密文件。关于软件启动装置、软件授权验证装置的具体限定可以参见上文中对于软件启动方法、软件授权验证方法的限定,在此不再赘述。上述软件启动装置、软件授权验证装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图17所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种软件启动方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图18所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储授权记录数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种软件授权验证方法。本领域技术人员可以理解,图17、图18中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述软件启动方法的任意一个实施例中的方法的步骤。在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述软件授权验证方法的任意一个实施例中的方法的步骤。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1