CN104992082B - 软件授权方法、装置及电子设备 - Google Patents
软件授权方法、装置及电子设备 Download PDFInfo
- Publication number
- CN104992082B CN104992082B CN201510487279.5A CN201510487279A CN104992082B CN 104992082 B CN104992082 B CN 104992082B CN 201510487279 A CN201510487279 A CN 201510487279A CN 104992082 B CN104992082 B CN 104992082B
- Authority
- CN
- China
- Prior art keywords
- code
- encrypted
- state value
- electronic equipment
- generation
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000013475 authorization Methods 0.000 claims abstract description 35
- 230000009977 dual effect Effects 0.000 claims abstract description 28
- 238000012795 verification Methods 0.000 claims description 24
- 230000005540 biological transmission Effects 0.000 claims description 10
- 238000001514 detection method Methods 0.000 claims description 10
- 238000012360 testing method Methods 0.000 claims description 4
- 108010001267 Protein Subunits Proteins 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
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/106—Enforcing content protection by specific content processing
- G06F21/1064—Restricting content processing at operating system level
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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/2149—Restricted operating environment
Abstract
本发明实施例公开了一种软件授权方法、装置及电子设备,将软件解密过程和认证授权的过程都放置在安全环境(即第一系统)下运行,普通环境下的攻击不影响安全环境下的安全,而且,本发明实施例提供的软件授权方法包括两次解密过程,第二次解密过程是在双系统均安全,且认证通过的情况下进行的,在保证电子设备安全的情况下,保证软件的运行是在授权许可下进行,提高了软件被破解的难度,提高了软件的安全性。
Description
技术领域
本发明涉及软件保护技术领域,更具体地说,涉及一种软件授权方法、装置及电子设备。
背景技术
为了防止软件被盗版使用,较常用的软件授权方法是通过本地注册码或网络认证的方式对软件进行授权。然而,发明人在实现本发明的过程中发现,目前,软件通常是基于单系统(或单运行环境)进行授权,因此,当终端的运行环境受到攻击时,软件仍然很容易被破解,从而被盗用。
因此,如何提高软件被破解的难度成为亟待解决的问题。
发明内容
本发明的目的是提供一种软件授权方法、装置及电子设备,以提高软件被破解的难度。
为实现上述目的,本发明提供了如下技术方案:
一种软件授权方法,应用于具有双系统的电子设备,其中,所述双系统中的第一系统的安全性高于所述双系统中的第二系统的安全性,所述第一系统和所述第二系统逻辑隔离;所述方法包括:
所述第二系统下载所述软件的第一代码;
所述第二系统运行所述第一代码,所述第一代码的运行的过程包括:
下载加密后的第二代码和加密后的第三代码,所述第一代码和所述第二代码组成所述软件的业务逻辑;
向所述第一系统发送第一请求消息,以使所述第一系统对所述加密后的第三代码进行解密;
在所述第一系统对所述加密后的第三代码解密并启动成功后,向所述第一系统发送第二请求消息,以使所述第一系统对所述加密后的第二代码进行解密;
所述第一系统对所述加密后的第二代码解密成功后,将所述第二代码拷贝到所述第一系统和所述第二系统的共享内存中;
其中,所述第二代码由所述第一系统运行所述第三代码而得到,所述第三代码的运行过程包括:接收到所述第二请求消息后,在检测出所述第一系统和所述第二系统均安全时,发起认证过程,当认证通过时,对所述加密后的第二代码进行解密得到所述第二代码。
上述方法,优选的,所述第一系统对所述加密后的第三代码进行解密包括:
所述第一系统使用所述电子设备绑定的第一密钥对所述加密后的第三代码进行解密。
上述方法,优选的,所述第一系统对所述加密后的第二代码进行解密包括:
所述第一系统使用所述第三代码中携带的第二密钥对所述加密后的第二代码进行解密。
上述方法,优选的,检测所述第一系统和所述第二系统的安全性的过程包括:
分别获取所述第一系统和所述第二系统的状态列表;
将所述第一系统的状态列表中的各个状态值与所述第一系统的预期状态值进行比较,并将所述第二系统的状态列表中的各个状态值与所述第二系统的预期状态值进行比较;
当所述第一系统的状态列表中的各个状态值均与所述第一系统的预期状态值一致,且所述第二系统的状态列表中的各个状态值均与所述第二系统的预期状态值一致时,确定所述第一系统和所述第二系统均安全。
上述方法,优选的,所述认证过程包括:
所述第一系统显示用户认证界面;
接收用户输入的认证码;
向所述第二系统发送第一认证请求,所述第一认证请求中携带有安全性报告,所述认证码和所述第一系统生成的随机数;
所述第二系统接收到所述第一认证请求后,向网络侧的授权服务器发送第二认证请求,所述第二认证请求中携带有所述安全性报告,所述电子设备的身份识别信息,所述认证码和所述随机数;
所述第二系统接收到所述授权服务器发送的授权凭证后,向所述第一系统发送所述授权凭证,所述授权凭证由所述授权服务器对所述电子设备的身份识别信息、所述安全性报告和所述认证码进行校验,校验通过后基于所述随机数生成;
所述第一系统对所述授权凭证进行校验,根据校验结果判断是否认证通过。
一种软件授权装置,应用于具有双系统的电子设备,其中,所述双系统中的第一系统的安全性高于所述双系统中的第二系统的安全性,所述第一系统和所述第二系统逻辑隔离;所述装置包括:运行在所述第二系统下的下载模块,第一运行模块,以及,运行在所述第一系统下的解密模块,第二运行模块和加载模块;其中,
所述下载模块用于下载所述软件的第一代码;
所述第一运行模块用于运行所述第一代码,包括:下载单元,用于下载加密后的第二代码和加密后的第三代码,所述第二代码为所述软件的核心业务代码,所述第一代码和所述第二代码组成所述软件的业务逻辑;第一发送单元,用于向所述解密模块发送第一请求消息,以使所述解密模块对所述加密后的第三代码进行解密;第二发送单元,用于在所述解密模块对所述加密后的第三代码解密并启动成功后,向所述第二运行模块发送第二请求消息,以使所述第二运行模块对所述加密后的第二代码进行解密;
所述第二运行模块用于运行所述第三代码,包括:检测单元,用于在收到所述第二请求消息后,检测所述第一系统和所述第二系统的安全性;认证单元,用于在所述检测单元在检测出所述第一系统和所述第二系统均安全时,发起认证过程;第一解密单元,用于在所述认证单元确定认证通过时,对所述加密后的第二代码进行解密得到所述第二代码
所述加载模块用于在所述第二运行模块对所述加密后的第二代码解密成功后,将所述第二代码拷贝到所述第一系统与所述第二系统的共享内存中;。
上述装置,优选的,所述解密模块包括:
第二解密单元,用于使用所述电子设备绑定的第一密钥对所述加密后的第三代码进行解密。
上述装置,优选的,所述第一解密单元包括:
解密子单元,用于使用所述第三代码中携带的第二密钥对所述加密后的第二代码进行解密。
上述装置,优选的,所述检测单元包括:
获取子单元,用于分别获取所述第一系统和所述第二系统的状态列表;
比较子单元,用于将所述第一系统的状态列表中的各个状态值与所述第一系统的预期状态值进行比较,并将所述第二系统的状态列表中的各个状态值与所述第二系统的预期状态值进行比较;
确定子单元,用于当所述第一系统的状态列表中的各个状态值均与所述第一系统的预期状态值一致,且所述第二系统的状态列表中的各个状态值均与所述第二系统的预期状态值一致时,确定所述第一系统和所述第二系统均安全。
上述装置,优选的,所述认证单元包括:
显示子单元,用于显示用户认证界面;
第一接收子单元,用于接收用户输入的认证码;
发送子单元,用于向所述第一运行模块发送第一认证请求,所述第一认证请求中携带有安全性报告,及所述认证码和所述第一系统生成的随机数;
第二接收子单元,用于接收所述第一运行模块发送的授权凭证;
校正子单元,用于对所述授权凭证进行校验,根据校验结果判断是否认证通过;
相应的,所述第一运行模块还包括:
第一接收单元,用于接收所述发送子单元发送的第一认证请求;
第三发送单元,用于向网络侧的授权服务器发送所述安全性报告,所述电子设备的身份识别信息,所述认证码和所述随机数;
第二接收单元,用于接收所述授权服务器发送所述的授权凭证,所述授权凭证由所述授权服务器对所述电子设备的身份识别信息、所述安全性报告和所述认证码进行校验,校验通过后基于所述随机数生成;
第四发送单元,用于向所述第二接收子单元发送所述授权凭证。
一种电子设备,该电子设备具有双系统,其中,所述双系统中的第一系统的安全性高于所述双系统中的第二系统的安全性,所述第一系统和所述第二系统逻辑隔离;该电子设备包括如上任意一项所述的软件授权装置。
通过以上方案可知,本申请提供的一种软件授权方法、装置及电子设备,将软件解密过程和认证授权的过程都放置在安全环境(即第一系统)下运行,普通环境下的攻击不影响安全环境下的安全,而且,本发明实施例提供的软件授权方法包括两次解密过程,第二次解密过程是在双系统均安全,且认证通过的情况下进行的,在保证电子设备安全的情况下,保证软件的运行是在授权许可下进行,提高了软件被破解的难度,提高了软件的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的软件授权方法的一种实现流程图;
图2为本申请实施例提供的检测第一系统和第二系统的安全性的一种实现流程图;
图3为本申请实施例提供的进行网络认证的认证过程的一种实现流程图;
图4为本申请实施例提供的软件授权方法的另一种实现流程图;
图5为本申请实施例提供的软件授权装置的一种结构示意图。
说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的部分,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示的以外的顺序实施。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的软件授权方法应用于具有双系统的电子设备上,该双系统中的第一系统的安全性高于该双系统中的第二系统的安全性,第一系统和第二系统逻辑隔离。
目前,针对移动设备的开放环境,安全问题也越来越受到关注,基于此,业界提出将同一硬件设备划分为两种相互独立且硬件上隔离的执行环境:普通执行环境(RichExecution Environment,REE)和可信执行环境(Trusted Execution Environment,TEE)。平台上的软硬件资源可以分别标识为两种执行环境状态,标识为安全(或可信)执行状态的软硬件资源只能由可信执行环境所访问,而标识为普通执行状态的软硬件资源则可以为两种执行环境所访问。普通执行环境运行目前常用的移动操作系统,如Android、ios等,可信执行环境运行一个功能简单、代码量小、封闭且可认为审核控制的安全操作系统。安全性较高的应用部署在安全操作系统中,并为部署在移动操作系统中的普通应用提供安全服务。移动操作系统与安全操作系统逻辑隔离,二者只能通过授权的接口进行交互。当普通应用调用相应的安全应用执行时,硬件设备由普通执行环境切换到可信执行环境,此时整个硬件设备处于可信状态,设备与外界的交互都得到控制,保证都是真实可信的行为。
本发明实施例中,第一系统可以是运行在可信执行环境的安全操作系统,第二系统可以是运行在普通执行环境的智能操作系统,如Android、ios等移动操作系统。
请参阅图1,图1为本申请实施例提供的软件授权方法的一种实现流程图,包括:
步骤S11:第二系统下载软件的第一代码。
本发明实施例中,需授权软件的代码被软件开发者分为两部分,分别为无需授权即可执行的部分(为叙述方便,记为第一代码),以及需要授权才可执行的部分(为叙述方便,记为第二代码),第二代码为软件的核心业务代码,第一代码和第二代码组成软件的业务逻辑。
步骤S12:第二系统运行下载下来的第一代码,该第一代码的运行过程包括:
步骤S121:下载加密后的第二代码和加密后的第三代码;
本发明实施例中,软件开发者在发布软件代码的同时,还发布用于对第二代码进行授权的代码(为叙述方便,记为第三代码)。
其中,第二代码和第三代码均加密发布,即软件开发人员在发布第二代码和第三代码前,对第二代码和第三代码分别加密,在发布第二代码和第三代码时,发布的是加密后的第二代码和第三代码。
步骤S122:向第一系统发送第一请求消息,以使第一系统对加密后的第三代码进行解密;
步骤S123:在第一系统对加密后的第三代码解密成功后,向第一系统发送第二请求消息,以使第一系统对加密后的第二代码进行解密;
其中,第二代码由第一系统运行第三代码而得到,也就是说,第一系统对加密后的第二代码进行解密的过程是通过第一系统运行第三代码实现的。第三代码的运行过程包括:
接收到第二请求消息后,检测第一系统和第二系统的安全性,在检测出第一系统和第二系统均安全时,发起认证过程,当认证通过时,对加密后的第二代码进行解密得到第二代码。
步骤S13:第一系统对加密后的第二代码解密成功后,将第二代码拷贝到第一系统与第二系统的共享内存中。
将第二代码拷贝到第一系统与第二系统的共享内存中后,就可以在第二系统加载运行软件了。
可见,本发明实施例提供的软件授权方法,将软件解密过程和认证授权的过程都放置在可信执行环境(即第一系统)下运行,普通执行环境下的攻击不会影响可信执行环境下的安全,而且,本发明实施例提供的软件授权方法包括两次解密过程,第二次解密过程是在双系统均安全,且认证通过的情况下进行的,在保证电子设备安全的情况下,保证软件的运行是在授权许可下进行,提高了软件被破解的难度,提高了软件的安全性。
可选的,第一系统对加密后的第三代码进行解密的具体实现过程可以包括:
第一系统可以使用电子设备绑定的第一密钥对加密后的第三代码进行解密。
可信执行环境通常需要绑定密钥以保证可信执行环境的安全,该密钥不可导出可信执行环境,同一类型的电子设备可以共享一个密钥,该密钥可以是对称密钥,也可以是非对称密钥。
本发明实施例中,软件开发者在对第三代码进行加密时,使用电子设备绑定的密钥对第三代码进行加密。具体的,
若使用电子设备绑定的对称密钥对第三代码进行加密,则软件开发者可以向电子设备的对称密钥的享有者提交加密请求,由电子设备的对称密钥的享有者用对称密钥对第三代码进行加密。本发明实施例中,第一密钥为电子设备的对称密钥。
若使用电子设备绑定的非对称密钥进行加密,则软件开发者可以获取非对称密钥的公钥对第三代码进行加密。本发明实施例中,第一密钥为非对称密钥的公钥。
可选的,第一系统对加密后的第二代码进行解密的过程可以包括:
第一系统使用第三代码中携带的第二密钥对加密后的第二代码进行解密。
本发明实施例中,软件开发者使用自定义的密钥对第二代码进行加密,并将密钥集成到第三代码中。
第一系统在对加密后的第三代码解密成功后,当需要对加密后的第二代码进行解密时,使用第三代码中携带的密钥对第二代码进行解密。即第二密钥为第三代码中携带的密钥。
可选的,检测第一系统和第二系统的安全性的一种实现流程图如图2所示,可以包括:
步骤S21:分别获取所第一系统和第二系统的状态列表;
第一系统的状态列表可以是在第一系统启动过程中记录的第一系统的状态列表,第一系统的状态列表中可以包括:安装程序,第一代码完整性,第一系统启动链信息等;同理,第二系统的状态列表可以是在第二系统启动过程中记录的第二系统的状态列表。第一状态列表和第二状态列表可以均记录在第一系统中。
步骤S22:将第一系统的状态列表中的各个状态值与第一系统的预期状态值进行比较,并将第二系统的状态列表中的各个状态值与第二系统的预期状态值进行比较;
系统的预期状态值(包括第一系统的预期状态值和第二系统的状态值)可以是设备出厂时运行系统所记录的状态。
步骤S23:当第一系统的状态列表中的各个状态值均与第一系统的预期状态值一致,且第二系统的状态列表中的各个状态值均与第二系统的预期状态值一致时,确定第一系统和第二系统均安全。
当第一系统的状态列表中的各个状态值均与第一系统的预期状态值一致,且第二系统的状态列表中的各个状态值均与第二系统的预期状态值一致时,说明第一系统和第二系统的完整性均未被破坏。
任意一个系统的状态值与预期值不一样,该系统就是不安全的。
可选的,上述认证过程可以是终端身份认证,也可以是网络认证。优选的,本发明实施例提供的进行网络认证的认证过程的一种实现流程图如图3所示可以包括:
步骤S31:第一系统显示用户认证界面;
步骤S32:接收用户输入的认证码;
例如,用户输入可以从开发者向用户发送的邮件中获取认证码。用户在用户认证界面输入所获取的认证码。
步骤S33:第一系统向第二系统发送第一认证请求,第一认证请求中携带有安全性报告,用户输入的认证码和第一系统生成的随机数;
安全性报告是第一系统检测第一系统和第二系统的安全性后生成,由第一系统签名。第一系统在用户输入认证码后,生成随机数。
为了进一步提高安全性,可以对认证码和随机数进行加密。
步骤S34:第二系统接收到第一认证请求后,向网络侧的授权服务器发送第二认证请求,该第二认证请求中携带有所述安全性报告,电子设备的身份识别信息,所述认证码和所述随机数;
电子设备的身份识别信息可以是电子设备的ID,网卡MAC地址,硬盘序列号等代表网络终端特征的唯一识别信息。安全性报告中包括第一系统和第二系统的预期状态记录和详细的检验过程。
步骤S35:第二系统接收到授权服务器发送的授权凭证后,向第一系统发送授权凭证,授权凭证由授权服务器对电子设备的身份识别信息、安全性报告和认证码进行校验,校验通过后基于随机数生成;
授权服务器可以校验认证码在数据库中是否有匹配,若有则校验通过,进行下一项校验,若没有,则校验不通过,拒绝授权;
在认证码校验通过后,校验电子设备身份识别信息,若通过校验确定电子设备为模拟器则直接拒绝授权;否则可以确定电子设备身份校验通过;
在电子设备身份校验通过后,对完整性报告进行校验,校验第一系统和第二系统的预期状态记录是否与数据库中记录的匹配,若匹配校验通过,否则校验不通过,拒绝授权。
在上述三项都校验通过后,确定校验通过。对随机数进行加密,生成授权凭证的数字签名。
步骤S36:第一系统对授权凭证进行校验,根据校验结果判断是否认证通过。
第一系统对数字签名进行解密,获得随机数,与之前发送给授权服务器的随机数进行比对,相同则校验通过,否则校验不通过。
下面结合具体的应用场景对本申请的具体实现方式进行说明。
本发明实施例可以基于ARM公司的TrustZone技术实现的可信执行环境实现,本发明实施例可以用于Android智能终端上。本发明实施例提供的软件授权方法的另一种实现流程图如图4所示,可以包括:
步骤S41:用户点击下载A软件后,智能终端的第二系统(普通执行环境,即Android操作系统)下载A软件的第一代码。
为叙述方便,本发明实施例中,将用户下载的软件记为A软件。
步骤S42:用户点击运行第一代码后,第二系统运行第一代码,运行过程中,第一代码下载加密后的第二代码和加密后的第三代码。
其中第一代码和第二代码组成A软件业务逻辑。第三代码用于对加密后的第二代码进行解密授权。
第二系统可以通过service方式从网络下载加密后的第二代码和加密后的第三代码。
第二系统将加密后的第二代码和加密后的第三代码下载下来后,申请第一共享内存,并把加密后的第二代码和加密后的第三代码拷贝到该第一共享内存中。
步骤S43:第一代码向第一系统中第三代码的管理进程发送第一消息指令,指示第三代码的管理进程加载运行第三代码,第一消息指令中携带有加密后的第三代码在第一共享内存的具体物理地址和大小。
步骤S44:第三代码的管理进程接收到第一消息指令后,调用第一系统接口获取设备密钥的私钥,从共享内存中拷贝加密后的第三代码到第一系统的内存中,使用获取的私钥对加密后的第三代码进行解密得到第三代码,然后对第三代码进行加载运行。
步骤S45:第三代码的管理进程向第一代码发送第二消息指令,该第二消息指令中携带有第三代码加载运行成功的信息;
步骤S46:第一代码接收到第二消息指令后,向第一系统中的第三代码发送第三消息指令,以指示第三代码对加密后的第二代码进行解密,该第三消息指令中携带有加密后的第二代码在第一共享内存的具体物理地址和大小。
步骤S467:第三代码接收到第三消息指令后,调用第一系统接口获取第一系统的状态列表,将第一系统的状态列表与第一系统的预期状态列表比对,不一致则通过消息指令返回错误(图中未示出),一致则检测第二系统的安全性。
步骤S48:第三代码调用第一系统接口获取第二系统的状态列表,将第二系统的状态列表与第二系统的预期状态列表比对,不一致则通过消息指令返回错误(图中未示出),一致则生成安全性报告。
步骤S49:第三代码调用第一系统的用户认证界面(UI界面),等待用户输入认证码;
步骤S410:第三代码在用户输入认证码后,向第一代码发送第四消息指令,该指令中携带有第一认证请求,该第一认证请求中包含:安全性报告,认证码和第三代码生成的随机数;
可选的,可以对认证码和随机数进行加密。
步骤S411:第一代码接收到第四消息指令后,向网络侧的授权服务器发送第二认证请求,该第二认证请求中携带有安全性报告,智能终端的身份识别信息,认证码,和随机数。
步骤S412:授权服务器对智能终端的身份识别信息、安全性报告和认证码进行校验。
步骤S413:在校验通过时,基于随机数生成授权凭证;
步骤S414:向智能终端在第二系统运行的第一代码发送授权凭证;
步骤S415:第一代码通过第五消息指令将授权凭证发送给运行在第一系统的第三代码;
步骤S416:第三代码对授权凭证进行校验,校验通过后进入步骤S417,即对加密后的第二代码进行解密,若校验不通过,在第一系统的用户界面提示认证未通过(图中未示出)。
步骤S417:第三代码将加密后的第二代码从第一共享内存中拷贝到第一系统的内存中,并对加密后的第二代码进行解密,解密密钥携带于第三代码中。
步骤S418:第三代码向第二系统中指定的服务进程发送第六消息指令,指示该指定的进程申请第二共享内存,该第六消息指令中携带有第二共享内存的大小。
该指定的服务进程可以是指第一代码,也可以是由第三代码指定的其它服务进程。
步骤S419:第二系统的服务进程接收到第六消息指令后,申请第二共享内存。
步骤S420:第二系统的服务进程向第三代码发送第七消息指令,该第七消息指令中携带有第二共享内存的地址。
步骤S421:第三代码接收到第七消息指令后,将第二代码拷贝到第二共享内存中。
步骤S422:第三代码向第二系统的服务进程发送第八消息指令,以指示第二系统的服务器进程可以从第二共享内存中加载运行A软件。
第二系统的服务进程接收到第八消息指令后,可以通过动态加载方式(即DexClassLoader)加载运行A软件。
与方法实施例相对应,本发明实施例还提供一种软件授权装置,本发明实施例提供的软件授权装置的一种结构示意图如图5所示,可以包括:
运行在第二系统下的下载模块51,第一运行模块52,以及运行在第一系统下的解密模块54、第二运行模块55和加载模块53;其中,
下载模块51用于下载软件的第一代码;
第一运行模块52用于运行第一代码,包括:
下载单元521,用于下载加密后的第二代码和加密后的第三代码,第二代码为软件的核心业务代码,第一代码和第二代码组成软件的业务逻辑;
第一发送单元522,用于向解密模块54发送第一请求消息,以使解密模块54对所述加密后的第三代码进行解密;
第二发送单元523,用于在所述解密模块54对加密后的第三代码解密并启动成功后,向第二运行模块55发送第二请求消息,以使第二运行模块55对加密后的第二代码进行解密;
第二运行模块55用于运行第三代码,包括:
检测单元551,用于在收到第二请求消息后,检测第一系统和第二系统的安全性;
认证单元552,用于在检测单元在检测出第一系统和第二系统均安全时,发起认证过程;
第一解密单元553,用于在认证单元确定认证通过时,对加密后的第二代码进行解密得到第二代码;
加载模块53用于在第二运行模块55对加密后的第二代码解密成功后,将第二代码拷贝到第一系统与第二系统的共享内存中。
本发明实施例提供的软件授权装置,将软件解密过程和认证授权的过程都放置在安全环境(即第一系统)下运行,普通环境下的攻击不影响安全环境下的安全,而且,本发明实施例提供的软件授权方法包括两次解密过程,第二次解密过程是在双系统均安全,且认证通过的情况下进行的,在保证电子设备安全的情况下,保证软件的运行是在授权许可下进行,提高了软件被破解的难度,提高了软件的安全性。
可选的,解密模块54可以包括:
第二解密单元,用于使用电子设备绑定的第一密钥对加密后的第三代码进行解密。
可选的,第一解密单元553可以包括:
解密子单元,用于使用第三代码中携带的第二密钥对加密后的第二代码进行解密。
可选的,检测单元551可以包括:
获取子单元,用于分别获取第一系统和第二系统的状态列表;
比较子单元,用于将第一系统的状态列表中的各个状态值与第一系统的预期状态值进行比较,并将第二系统的状态列表中的各个状态值与第二系统的预期状态值进行比较;
确定子单元,用于当第一系统的状态列表中的各个状态值均与第一系统的预期状态值一致,且第二系统的状态列表中的各个状态值均与第二系统的预期状态值一致时,确定第一系统和第二系统均安全。
可选的,认证单元552可以包括:
显示子单元,用于显示用户认证界面;
第一接收子单元,用于接收用户输入的认证码;
发送子单元,用于向第一运行模块52发送第一认证请求,第一认证请求中携带有安全性报告,及认证码和第一系统生成的随机数;
第二接收子单元,用于接收第一运行模块52发送的授权凭证;
校验子单元,用于对授权凭证进行校验,根据校验结果判断是否认证通过;
相应的,第一运行模块52还可以包括:
第一接收单元,用于接收发送子单元发送的第一认证请求;
第三发送单元,用于向网络侧的授权服务器发送安全性报告,电子设备的身份识别信息,认证码和随机数;
第二接收单元,用于接收授权服务器发送的授权凭证,授权凭证由授权服务器对电子设备的身份识别信息、安全性报告和认证码进行校验,校验通过后基于随机数生成;
第四发送单元,用于向第二接收子单元发送授权凭证。
本发明实施例还提供一种电子设备,该电子设备具有双系统,其中,双系统中的第一系统的安全性高于双系统中的第二系统的安全性,第一系统和第二系统逻辑隔离,该电子设备包括如上任意一装置实施例公开的软件授权装置。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (11)
1.一种软件授权方法,其特征在于,应用于具有双系统的电子设备,其中,所述双系统中的第一系统的安全性高于所述双系统中的第二系统的安全性,所述第一系统和所述第二系统逻辑隔离;所述方法包括:
所述第二系统下载所述软件的第一代码;
所述第二系统运行所述第一代码,所述第一代码的运行的过程包括:
下载加密后的第二代码和加密后的第三代码,所述第一代码和所述第二代码组成所述软件的业务逻辑;
向所述第一系统发送第一请求消息,以使所述第一系统对所述加密后的第三代码进行解密;
在所述第一系统对所述加密后的第三代码解密并启动成功后,向所述第一系统发送第二请求消息,以使所述第一系统对所述加密后的第二代码进行解密;
所述第一系统对所述加密后的第二代码解密成功后,将所述第二代码拷贝到所述第一系统和所述第二系统的共享内存中;
其中,所述第二代码由所述第一系统运行所述第三代码而得到,所述第三代码的运行过程包括:接收到所述第二请求消息后,在检测出所述第一系统和所述第二系统均安全时,发起认证过程,当认证通过时,对所述加密后的第二代码进行解密得到所述第二代码。
2.根据权利要求1所述的方法,其特征在于,所述第一系统对所述加密后的第三代码进行解密包括:
所述第一系统使用所述电子设备绑定的第一密钥对所述加密后的第三代码进行解密。
3.根据权利要求1所述的方法,其特征在于,所述第一系统对所述加密后的第二代码进行解密包括:
所述第一系统使用所述第三代码中携带的第二密钥对所述加密后的第二代码进行解密。
4.根据权利要求1所述的方法,其特征在于,检测所述第一系统和所述第二系统的安全性的过程包括:
分别获取所述第一系统和所述第二系统的状态列表;
将所述第一系统的状态列表中的各个状态值与所述第一系统的预期状态值进行比较,并将所述第二系统的状态列表中的各个状态值与所述第二系统的预期状态值进行比较;
当所述第一系统的状态列表中的各个状态值均与所述第一系统的预期状态值一致,且所述第二系统的状态列表中的各个状态值均与所述第二系统的预期状态值一致时,确定所述第一系统和所述第二系统均安全。
5.根据权利要求1所述的方法,其特征在于,所述认证过程包括:
所述第一系统显示用户认证界面;
接收用户输入的认证码;
向所述第二系统发送第一认证请求,所述第一认证请求中携带有安全性报告,所述认证码和所述第一系统生成的随机数;
所述第二系统接收到所述第一认证请求后,向网络侧的授权服务器发送第二认证请求,所述第二认证请求中携带有所述安全性报告,所述电子设备的身份识别信息,所述认证码和所述随机数;
所述第二系统接收到所述授权服务器发送的授权凭证后,向所述第一系统发送所述授权凭证,所述授权凭证由所述授权服务器对所述电子设备的身份识别信息、所述安全性报告和所述认证码进行校验,校验通过后基于所述随机数生成;
所述第一系统对所述授权凭证进行校验,根据校验结果判断是否认证通过。
6.一种软件授权装置,其特征在于,应用于具有双系统的电子设备,其中,所述双系统中的第一系统的安全性高于所述双系统中的第二系统的安全性,所述第一系统和所述第二系统逻辑隔离;所述装置包括:运行在所述第二系统下的下载模块,第一运行模块,以及,运行在所述第一系统下的解密模块,第二运行模块和加载模块;其中,
所述下载模块用于下载所述软件的第一代码;
所述第一运行模块用于运行所述第一代码,包括:下载单元,用于下载加密后的第二代码和加密后的第三代码,所述第一代码和所述第二代码组成所述软件的业务逻辑;第一发送单元,用于向所述解密模块发送第一请求消息,以使所述解密模块对所述加密后的第三代码进行解密;第二发送单元,用于在所述解密模块对所述加密后的第三代码解密并启动成功后,向所述第二运行模块发送第二请求消息,以使所述第二运行模块对所述加密后的第二代码进行解密;
所述第二运行模块用于运行所述第三代码,包括:检测单元,用于在收到所述第二请求消息后,检测所述第一系统和所述第二系统的安全性;认证单元,用于在所述检测单元在检测出所述第一系统和所述第二系统均安全时,发起认证过程;第一解密单元,用于在所述认证单元确定认证通过时,对所述加密后的第二代码进行解密得到所述第二代码;
所述加载模块用于在所述第二运行模块对所述加密后的第二代码解密成功后,将所述第二代码拷贝到所述第一系统与所述第二系统的共享内存中。
7.根据权利要求6所述的装置,其特征在于,所述解密模块包括:
第二解密单元,用于使用所述电子设备绑定的第一密钥对所述加密后的第三代码进行解密。
8.根据权利要求6所述的装置,其特征在于,所述第一解密单元包括:
解密子单元,用于使用所述第三代码中携带的第二密钥对所述加密后的第二代码进行解密。
9.根据权利要求6所述的装置,其特征在于,所述检测单元包括:
获取子单元,用于分别获取所述第一系统和所述第二系统的状态列表;
比较子单元,用于将所述第一系统的状态列表中的各个状态值与所述第一系统的预期状态值进行比较,并将所述第二系统的状态列表中的各个状态值与所述第二系统的预期状态值进行比较;
确定子单元,用于当所述第一系统的状态列表中的各个状态值均与所述第一系统的预期状态值一致,且所述第二系统的状态列表中的各个状态值均与所述第二系统的预期状态值一致时,确定所述第一系统和所述第二系统均安全。
10.根据权利要求6所述的装置,其特征在于,所述认证单元包括:
显示子单元,用于显示用户认证界面;
第一接收子单元,用于接收用户输入的认证码;
发送子单元,用于向所述第一运行模块发送第一认证请求,所述第一认证请求中携带有安全性报告,及所述认证码和所述第一系统生成的随机数;
第二接收子单元,用于接收所述第一运行模块发送的授权凭证;
校验子单元,用于对所述授权凭证进行校验,根据校验结果判断是否认证通过;
相应的,所述第一运行模块还包括:
第一接收单元,用于接收所述发送子单元发送的第一认证请求;
第三发送单元,用于向网络侧的授权服务器发送所述安全性报告,所述电子设备的身份识别信息,所述认证码和所述随机数;
第二接收单元,用于接收所述授权服务器发送所述的授权凭证,所述授权凭证由所述授权服务器对所述电子设备的身份识别信息、所述安全性报告和所述认证码进行校验,校验通过后基于所述随机数生成;
第四发送单元,用于向所述第二接收子单元发送所述授权凭证。
11.一种电子设备,其特征在于,该电子设备具有双系统,其中,所述双系统中的第一系统的安全性高于所述双系统中的第二系统的安全性,所述第一系统和所述第二系统逻辑隔离;该电子设备包括如权利要求6-10任意一项所述的软件授权装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510487279.5A CN104992082B (zh) | 2015-08-10 | 2015-08-10 | 软件授权方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510487279.5A CN104992082B (zh) | 2015-08-10 | 2015-08-10 | 软件授权方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104992082A CN104992082A (zh) | 2015-10-21 |
CN104992082B true CN104992082B (zh) | 2018-04-20 |
Family
ID=54303895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510487279.5A Active CN104992082B (zh) | 2015-08-10 | 2015-08-10 | 软件授权方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104992082B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11100227B2 (en) | 2015-11-25 | 2021-08-24 | Huawei Technologies Co., Ltd. | Security indication information configuration method and device |
CN105656890B (zh) * | 2015-12-30 | 2018-11-06 | 深圳数字电视国家工程实验室股份有限公司 | 一种基于tee和无线确认的fido认证器及系统及方法 |
CN107305607B (zh) * | 2016-04-18 | 2019-12-03 | 大唐半导体设计有限公司 | 一种防止后台恶意程序独立运行的方法和装置 |
CN105978920B (zh) * | 2016-07-28 | 2019-05-24 | 恒宝股份有限公司 | 一种访问可信应用的方法及ta |
CN109960903A (zh) * | 2017-12-26 | 2019-07-02 | 中移(杭州)信息技术有限公司 | 一种应用加固的方法、装置、电子设备及存储介质 |
CN108108595B (zh) * | 2017-12-29 | 2023-03-28 | 星宸科技股份有限公司 | 对电子设备内的软件进行授权的方法及系统 |
CN109246099A (zh) * | 2018-08-31 | 2019-01-18 | 深圳市元征科技股份有限公司 | 汽车尾气排放数据的分析方法、安全元件se及检测设备 |
CN110427784A (zh) * | 2019-07-29 | 2019-11-08 | 浙江吉利新能源商用车集团有限公司 | 一种车辆的安全网关装置及安全通信方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102202040A (zh) * | 2010-03-26 | 2011-09-28 | 联想(北京)有限公司 | 一种对客户端进行认证方法及装置 |
US8849988B2 (en) * | 2008-11-25 | 2014-09-30 | Citrix Systems, Inc. | Systems and methods to monitor an access gateway |
CN104252598A (zh) * | 2013-06-28 | 2014-12-31 | 深圳市腾讯计算机系统有限公司 | 一种检测应用漏洞的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8578026B2 (en) * | 2009-06-22 | 2013-11-05 | Citrix Systems, Inc. | Systems and methods for handling limit parameters for a multi-core system |
-
2015
- 2015-08-10 CN CN201510487279.5A patent/CN104992082B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8849988B2 (en) * | 2008-11-25 | 2014-09-30 | Citrix Systems, Inc. | Systems and methods to monitor an access gateway |
CN102202040A (zh) * | 2010-03-26 | 2011-09-28 | 联想(北京)有限公司 | 一种对客户端进行认证方法及装置 |
CN104252598A (zh) * | 2013-06-28 | 2014-12-31 | 深圳市腾讯计算机系统有限公司 | 一种检测应用漏洞的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104992082A (zh) | 2015-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104992082B (zh) | 软件授权方法、装置及电子设备 | |
CN110324276B (zh) | 一种登录应用的方法、系统、终端和电子设备 | |
CN103685138B (zh) | 移动互联网上的Android平台应用软件的认证方法和系统 | |
JP4727278B2 (ja) | アプリケーションプログラム検証システム、アプリケーションプログラム検証方法およびコンピュータプログラム | |
CN103974250B (zh) | 配置方法和设备 | |
CN110719166A (zh) | 芯片烧录方法、芯片烧录装置、芯片烧录系统及存储介质 | |
CN107430658B (zh) | 安全软件认证及验证 | |
CN105787357A (zh) | 一种基于安卓系统apk下载方法及其系统 | |
CN111404696B (zh) | 协同签名方法、安全服务中间件、相关平台及系统 | |
CN105959287A (zh) | 一种基于生物特征的安全认证方法及装置 | |
CN103051451A (zh) | 安全托管执行环境的加密认证 | |
TW202109320A (zh) | 基於可信執行環境的應用程式啟動方法及裝置 | |
TW201012152A (en) | Portable device association | |
JP2004265026A (ja) | アプリケーション認証システムと装置 | |
CN113268715A (zh) | 软件加密方法、装置、设备及存储介质 | |
JP2005071328A (ja) | セキュアデバイス、情報処理端末、集積回路、端末アプリ生成装置、アプリケーション認証方法 | |
JP2005196776A (ja) | 通信端末と通信機器との間の安全なデータ通信方法及びそのシステム | |
CN103248495B (zh) | 一种应用内付费的方法、服务器、客户端和系统 | |
CN106302544A (zh) | 一种安全验证方法和系统 | |
CN108200078B (zh) | 签名认证工具的下载安装方法及终端设备 | |
CN109660353A (zh) | 一种应用程序安装方法及装置 | |
CN105592071A (zh) | 一种在设备之间进行授权的方法和装置 | |
JP2017011491A (ja) | 認証システム | |
CN104104650B (zh) | 数据文件访问方法及终端设备 | |
CN105430649B (zh) | Wifi接入方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |