软件授权方法、装置及电子设备的制造方法_3

文档序号:9274828阅读:来源:国知局
器发送的授权凭证后,向第一系统发送授权凭证,授权凭证由授权服务器对电子设备的身份识别信息、安全性报告和认证码进行校验,校验通过后基于随机数生成;
[0108]授权服务器可以校验认证码在数据库中是否有匹配,若有则校验通过,进行下一项校验,若没有,则校验不通过,拒绝授权;
[0109]在认证码校验通过后,校验电子设备身份识别信息,若通过校验确定电子设备为模拟器则直接拒绝授权;否则可以确定电子设备身份校验通过;
[0110]在电子设备身份校验通过后,对完整性报告进行校验,校验第一系统和第二系统的预期状态记录是否与数据库中记录的匹配,若匹配校验通过,否则校验不通过,拒绝授权。
[0111]在上述三项都校验通过后,确定校验通过。对随机数进行加密,生成授权凭证的数字签名。
[0112]步骤S36:第一系统对授权凭证进行校验,根据校验结果判断是否认证通过。
[0113]第一系统对数字签名进行解密,获得随机数,与之前发送给授权服务器的随机数进行比对,相同则校验通过,否则校验不通过。
[0114]下面结合具体的应用场景对本申请的具体实现方式进行说明。
[0115]本发明实施例可以基于ARM公司的TrustZone技术实现的可信执行环境实现,本发明实施例可以用于Android智能终端上。本发明实施例提供的软件授权方法的另一种实现流程图如图4所示,可以包括:
[0116]步骤S41:用户点击下载A软件后,智能终端的第二系统(普通执行环境,即Android操作系统)下载A软件的第一代码。
[0117]为叙述方便,本发明实施例中,将用户下载的软件记为A软件。
[0118]步骤S42:用户点击运行第一代码后,第二系统运行第一代码,运行过程中,第一代码下载加密后的第二代码和加密后的第三代码。
[0119]其中第一代码和第二代码组成A软件业务逻辑。第三代码用于对加密后的第二代码进行解密授权。
[0120]第二系统可以通过service方式从网络下载加密后的第二代码和加密后的第三代码。
[0121]第二系统将加密后的第二代码和加密后的第三代码下载下来后,申请第一共享内存,并把加密后的第二代码和加密后的第三代码拷贝到该第一共享内存中。
[0122]步骤S43:第一代码向第一系统中第三代码的管理进程发送第一消息指令,指示第三代码的管理进程加载运行第三代码,第一消息指令中携带有加密后的第三代码在第一共享内存的具体物理地址和大小。
[0123]步骤S44:第三代码的管理进程接收到第一消息指令后,调用第一系统接口获取设备密钥的私钥,从共享内存中拷贝加密后的第三代码到第一系统的内存中,使用获取的私钥对加密后的第三代码进行解密得到第三代码,然后对第三代码进行加载运行。
[0124]步骤S45:第三代码的管理进程向第一代码发送第二消息指令,该第二消息指令中携带有第三代码加载运行成功的信息;
[0125]步骤S46:第一代码接收到第二消息指令后,向第一系统中的第三代码发送第三消息指令,以指示第三代码对加密后的第二代码进行解密,该第三消息指令中携带有加密后的第二代码在第一共享内存的具体物理地址和大小。
[0126]步骤S467:第三代码接收到第三消息指令后,调用第一系统接口获取第一系统的状态列表,将第一系统的状态列表与第一系统的预期状态列表比对,不一致则通过消息指令返回错误(图中未示出),一致则检测第二系统的安全性。
[0127]步骤S48:第三代码调用第一系统接口获取第二系统的状态列表,将第二系统的状态列表与第二系统的预期状态列表比对,不一致则通过消息指令返回错误(图中未示出),一致则生成安全性报告。
[0128]步骤S49:第三代码调用第一系统的用户认证界面(Π界面),等待用户输入认证码;
[0129]步骤S410:第三代码在用户输入认证码后,向第一代码发送第四消息指令,该指令中携带有第一认证请求,该第一认证请求中包含:安全性报告,认证码和第三代码生成的随机数;
[0130]可选的,可以对认证码和随机数进行加密。
[0131]步骤S411:第一代码接收到第四消息指令后,向网络侧的授权服务器发送第二认证请求,该第二认证请求中携带有安全性报告,智能终端的身份识别信息,认证码,和随机数。
[0132]步骤S412:授权服务器对智能终端的身份识别信息、安全性报告和认证码进行校验。
[0133]步骤S413:在校验通过时,基于随机数生成授权凭证;
[0134]步骤S414:向智能终端在第二系统运行的第一代码发送授权凭证;
[0135]步骤S415:第一代码通过第五消息指令将授权凭证发送给运行在第一系统的第二代码;
[0136]步骤S416:第三代码对授权凭证进行校验,校验通过后进入步骤S417,即对加密后的第二代码进行解密,若校验不通过,在第一系统的用户界面提示认证未通过(图中未示出)。
[0137]步骤S417:第三代码将加密后的第二代码从第一共享内存中拷贝到第一系统的内存中,并对加密后的第二代码进行解密,解密密钥携带于第三代码中。
[0138]步骤S418:第三代码向第二系统中指定的服务进程发送第六消息指令,指示该指定的进程申请第二共享内存,该第六消息指令中携带有第二共享内存的大小。
[0139]该指定的服务进程可以是指第一代码,也可以是由第三代码指定的其它服务进程。
[0140]步骤S419:第二系统的服务进程接收到第六消息指令后,申请第二共享内存。
[0141]步骤S420:第二系统的服务进程向第三代码发送第七消息指令,该第七消息指令中携带有第二共享内存的地址。
[0142]步骤S421:第三代码接收到第七消息指令后,将第二代码拷贝到第二共享内存中。
[0143]步骤S422:第三代码向第二系统的服务进程发送第八消息指令,以指示第二系统的服务器进程可以从第二共享内存中加载运行A软件。
[0144]第二系统的服务进程接收到第八消息指令后,可以通过动态加载方式(即DexClassLoader)加载运行A软件。
[0145]与方法实施例相对应,本发明实施例还提供一种软件授权装置,本发明实施例提供的软件授权装置的一种结构示意图如图5所示,可以包括:
[0146]运行在第二系统下的下载模块51,第一运行模块52,以及运行在第一系统下的解密模块54、第二运行模块55和加载模块53 ;其中,
[0147]下载模块51用于下载软件的第一代码;
[0148]第一运行模块52用于运行第一代码,包括:
[0149]下载单元521,用于下载加密后的第二代码和加密后的第三代码,第二代码为软件的核心业务代码,第一代码和第二代码组成软件的业务逻辑;
[0150]第一发送单元522,用于向解密模块54发送第一请求消息,以使解密模块54对所述加密后的第三代码进行解密;
[0151]第二发送单元523,用于在所述解密模块54对加密后的第三代码解密并启动成功后,向第二运行模块55发送第二请求消息,以使第二运行模块55对加密后的第二代码进行解密;
[0152]第二运行模块55用于运行第三代码,包括:
[0153]检测单元551,用于在收到第二请求消息后,检测第一系统和第二系统的安全性;
[0154]认证单元552,用于在检测单元在检测出第一系统和第二系统均安全时,发起认证过程;
[0155]第一解密单元553,用于在认证单元确定认证通过时,对加密后的第二代码进行解密得到第二代码;
[0156]加载模块53用于在第二运行模块55对加密后的第二代码解密成功后,将第二代码拷贝到第一系统与第二系统的共享内存中。
[0157]本发明实施例提供的软件授权装置,将软件解密过程和认证授权的过程都放置在安全环境(即第一系统)下运行,普通环境下的攻击不影响安全环境下的安全,而且,本发明实施例提供的软件授权方法包括两次解密过程,第二次解密过程是在双系统均安全,且认证通过的情况下进行的,在保证电子设备安全的情况下,保证软件的运行是在授权许可下进行,提高了软件被破解的难度,提高了软件的安全性。
[0158]可选的,解密模块54可以包括:
[0159]第二解密单元,用于使用电子设备绑定的第一密钥对加密后的第三代码进行解tM
I_L| O
[0160]可选的,第一解密单元553可以包括:
[0161]解密子单元,用于使用第三代码中携带的第二密钥对加密后的第二代码进行解I ? f O
[0162]可选的,检测单元551可以包括:
[0163]获取子单元,用于分别获取第一系统和第二系统的状态列表;
[0164]比较子单元,用于将第一系统的状态列表中的各个状态值与第一系统的预期状态值进行比较,并将第二系统的状态列表中的各个状态值与第二系统的预期状态值进行比较;
[0165]确定子单元,用于当第一系统的状态列表中的各个状态值均与第一系统的预期状态值一致,且第二系统的状态列表中的各个状态值均与第二系统的预期状态值一致时,确定第一系统和第二系统均安全。
[0166]可选的,认证单元552可以包
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1