CN105790931A - 一种密钥分发方法、网络设备、终端设备及系统 - Google Patents
一种密钥分发方法、网络设备、终端设备及系统 Download PDFInfo
- Publication number
- CN105790931A CN105790931A CN201410836184.5A CN201410836184A CN105790931A CN 105790931 A CN105790931 A CN 105790931A CN 201410836184 A CN201410836184 A CN 201410836184A CN 105790931 A CN105790931 A CN 105790931A
- Authority
- CN
- China
- Prior art keywords
- application
- security component
- component code
- terminal unit
- network equipment
- 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.)
- Granted
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种安全密钥分发方法、网络设备、终端设备及系统,其中,所述方法包括:应用于第一网络设备,所述方法包括:所述第一网络设备获取到针对第一应用的安全密钥;利用所述针对所述第一应用的安全密钥,生成针对所述第一应用的安全组件代码;接收到终端设备发来的第一请求;其中,所述第一请求为获取所述第一应用的安全组件代码的请求;根据所述第一请求将所述安全组件代码发送至所述终端设备,使得所述终端设备利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作。
Description
技术领域
本发明涉及通信领域的安全管理技术,尤其涉及一种密钥分发方法、网络设备、终端设备及系统。
背景技术
随着终端设备应用软件数量不断飙升,大量具有高安全性需求的终端设备应用软件需要采用密码技术以保证安全性。为此,需要向这些终端设备应用软件分发安全密钥。
目前,分发安全密钥的方法包括:方法一、在应用开发或上线阶段在应用程序中预置密钥,应用使用时,基于密钥计算出一个Token,并在能力调用请求中携带该Token,验证该应用和用户的身份,并据此判断是否应为其提供能力服务。方法二、在终端设备部署特殊的硬件,在硬件中预置与平台侧共享的主密钥或密钥种子,利用硬件中预置的密钥,与平台侧建立安全通道,然后利用这个安全通道传输应用所需的密钥。
可见,上述分发安全密钥的方法,无法在避免增加硬件的情况下,提升安全密钥的安全性。
发明内容
有鉴于此,本发明的目的在于提供一种安全密钥分发方法、网络设备、终端设备及系统,能至少解决现有技术存在的上述问题。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供了一种安全密钥分发方法,应用于第一网络设备,所述方法包括:
所述第一网络设备获取到针对第一应用的安全密钥;其中,所述第一应用为在第二网络设备中发布的应用;
利用所述针对所述第一应用的安全密钥,生成针对所述第一应用的安全组件代码;
接收到终端设备发来的第一请求;其中,所述第一请求为获取所述第一应用的安全组件代码的请求;
根据所述第一请求将所述安全组件代码发送至所述终端设备,使得所述终端设备利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作。
上述方案中,所述利用所述针对所述第一应用的安全密钥,生成针对所述第一应用的安全组件代码,包括:
将所述安全密钥以及所述第一应用的标识信息作为密钥信息;
根据预设的密钥隐藏算法利用所述密钥信息生成安全组件;
将安全组件添加到预设的安全组件模板中得到针对所述第一应用的安全组件代码。
上述方案中,所述生成针对所述第一应用的安全组件代码之后,所述方法还包括:
计算得到针对所述第一应用的安装包的校验码;
在所述第一应用的安全组件代码中添加所述校验码。
上述方案中,所述方法还包括:
判断所述第一应用是否符合第一预设条件,所述第一预设条件表征所述第一应用处于需要更新安全密钥的状态;
当所述第一应用符合第一预设条件时,获取到针对所述第一应用的新的安全密钥;
利用所述第一应用的新的安全密钥,生成所述第一应用的新的安全组件代码;
检测到第一应用符合第二预设条件时,所述第二预设条件表征所述第一应用在终端设备中处于运行状态;
利用所述第一应用的新的安全组件代码生成第一指令,发送所述第一指令至所述终端设备,控制所述终端设备根据所述第一指令安装所述新的安全组件代码,利用新的所述安全组件代码模块进行处理。
上述方案中,所述利用所述针对所述第一应用的安全密钥,生成所述第一应用的安全组件代码,包括:
获取到所述第一应用的版本号;
将所述安全密钥、所述第一应用的标识信息以及所述第一应用的版本号作为密钥信息;
根据预设的密钥隐藏算法利用所述密钥信息生成安全组件;
将安全组件添加至预设的安全组件模板中得到针对所述第一应用的安全组件代码。
本发明实施例还提供了一种安全密钥发布方法,应用于终端设备,所述方法包括:
从第二网络设备中获取到的应用的安装包,安装所述应用;
运行所述应用,判断所述应用是否符合第二预设条件,所述第二预设条件表征所述应用为第一次在所述终端设备中运行;
当所述应用符合第二预设条件时,向第一网络设备发出第一请求,所述第一请求为获取所述第一应用的安全组件代码的请求;
接收到所述第一网络设备发来的针对所述第一应用的安全组件代码,所述安全组件代码由针对所述第一应用的安全密钥生成;
利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作。
本发明实施例还提供了一种网络设备,所述网络设备包括:
第一通信单元,用于获取到针对第一应用的安全密钥;其中,所述第一应用为在第二网络设备中发布的应用;
处理单元,用于利用所述针对所述第一应用的安全密钥,生成针对所述第一应用的安全组件代码;根据所述第一请求将所述安全组件代码发送至所述终端设备,使得所述终端设备利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作;
第二通信单元,用于接收到终端设备发来的第一请求;其中,所述第一请求为获取所述第一应用的安全组件代码的请求。
上述方案中,所述处理单元,具体用于将所述安全密钥以及所述第一应用的标识信息作为密钥信息;根据预设的密钥隐藏算法利用所述密钥信息生成安全组件;将安全组件添加到预设的安全组件模板中得到针对所述第一应用的安全组件代码。
上述方案中,所述处理单元,还用于计算得到针对所述第一应用的安装包的校验码;在所述第一应用的安全组件代码中添加所述校验码。
上述方案中,所述处理单元,还用于判断所述第一应用是否符合第一预设条件,所述第一预设条件表征所述第一应用处于需要更新安全密钥的状态;当所述第一应用符合第一预设条件时,获取到针对所述第一应用的新的安全密钥;利用所述第一应用的新的安全密钥,生成所述第一应用的新的安全组件代码;检测到第一应用符合第二预设条件时,所述第二预设条件表征所述第一应用在终端设备中处于运行状态;利用所述第一应用的新的安全组件代码生成第一指令;
所述第二通信单元,还用于发送所述第一指令至所述终端设备,控制所述终端设备根据所述第一指令安装所述新的安全组件代码,利用新的所述安全组件代码模块进行处理。
上述方案中,所述处理单元,还用于获取到所述第一应用的版本号;将所述安全密钥、所述第一应用的标识信息以及所述第一应用的版本号作为密钥信息;根据预设的密钥隐藏算法利用所述密钥信息生成安全组件;将安全组件添加至预设的安全组件模板中得到针对所述第一应用的安全组件代码。
本发明实施例还提供了一种终端设备,所述终端设备包括:
处理单元,用于从第二网络设备中获取到的应用的安装包,安装所述应用;运行所述应用,判断所述应用是否符合第二预设条件,所述第二预设条件表征所述应用为第一次在所述终端设备中运行;利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作;
安全组件加载单元,用于当所述应用符合第二预设条件时,向第一网络设备发出第一请求,所述第一请求为获取所述第一应用的安全组件代码的请求;接收到所述第一网络设备发来的针对所述第一应用的安全组件代码,所述安全组件代码由针对所述第一应用的安全密钥生成。
本发明实施例还提供了一种安全密钥分发系统,所述系统包括:第一网络设备、第二网络设备以及至少一个终端设备;其中,
所述终端设备,用于从第二网络设备中获取到的应用的安装包,安装所述应用;运行所述应用,判断所述应用是否符合第二预设条件,所述第二预设条件表征所述应用为第一次在所述终端设备中运行;当所述应用符合第二预设条件时,向第一网络设备发出第一请求,所述第一请求为获取所述第一应用的安全组件代码的请求;接收到所述第一网络设备发来的针对所述第一应用的安全组件代码,所述安全组件代码由针对所述第一应用的安全密钥生成;利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作;
所述第一网络设备,用于获取到针对第一应用的安全密钥;利用所述针对所述第一应用的安全密钥,生成针对所述第一应用的安全组件代码;接收到终端设备发来的第一请求;其中,所述第一请求为获取所述第一应用的安全组件代码的请求;根据所述第一请求将所述安全组件代码发送至所述终端设备,使得所述终端设备利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作;
所述第二网络设备,用于为终端设备提供所述第一应用的安装包。
本发明所提供的安全密钥分发方法、网络设备、终端设备及系统,能够通过第一网络设备针对第一应用的所述安全密钥进行处理,生成安全组件代码,并发送安全组件代码至终端设备;如此,将安全密钥的分发与应用其他部分分开发布,提升了针对安全密钥的破解难度,保证了运行应用的安全性。
附图说明
图1为本发明实施例安全密钥分发方法网络设备侧流程示意图;
图2为本发明实施例更新安全密钥的方法流程示意图;
图3为本发明实施例网络侧系统组成示意图;
图4为本发明实施例网络侧分发安全密钥的流程;
图5为本发明实施例安全密钥分发方法终端设备侧流程示意图;
图6为本发明实施例终端设备配置安全组件代码的方法流程示意图;
图7为本发明实施例网络设备组成结构示意图;
图8为本发明实施例终端设备组成结构示意图;
图9为本发明实施例系统组成结构示意图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
实施例一、
本发明实施例提供的一种安全密钥分发方法,应用于第一网络设备,如图1所示,包括:
步骤101:所述第一网络设备获取到针对第一应用的安全密钥;其中,所述第一应用为在第二网络设备中发布的应用;
步骤102:利用所述针对所述第一应用的安全密钥,生成针对所述第一应用的安全组件代码;
步骤103:当接收到终端设备发来的第一请求时,将所述安全组件代码发送至所述终端设备,使得所述终端设备利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作;其中,所述第一请求为获取所述第一应用的安全组件代码的请求。
上述利用所述针对所述第一应用的安全密钥,生成针对所述第一应用的安全组件代码,可以包括:
将所述安全密钥以及所述第一应用的标识信息作为密钥信息,根据预设的密钥隐藏算法将所述密钥信息设置到安全组件模板中,生成针对所述第一应用的安全组件代码;
其中,所述密钥隐藏算法可以包括:白盒密码(whiteboxcryptography)算法;编码时对密钥进行分片,运行时再拼装的方法;将密钥隐藏在资源文件的冗余信息中,运行时读取。
优选地,上述生成所述第一应用的安全组件代码之后,还可以包括:在所述第一应用的安全组件代码中添加针对所述第一应用的安装包的校验码;
其中,所述针对所述第一应用的安装包的校验码的获取方法可以包括:计算所述第一应用的安装包中可执行部分的HASH值,将所述HASH值作为所述校验码。
优选地,上述步骤103完成之后,还可以根据实际情况更新所述安全密钥,进而更新所述安全组件代码,并向终端设备下发更新后的所述第一应用的安全组件代码,如图2所示,包括:
步骤201:判断所述第一应用是否符合第一预设条件,所述第一预设条件表征所述第一应用处于需要更新安全密钥的状态;
步骤202:当所述第一应用符合第一预设条件时,获取到针对所述第一应用的新的安全密钥;
步骤203:利用所述第一应用的新的安全密钥,生成所述第一应用的新的安全组件代码;
步骤204:检测到第一应用符合第二预设条件,所述第二预设条件表征所述第一应用在终端设备中处于运行状态;利用所述第一应用的新的安全组件代码生成第一指令,发送所述第一指令至所述终端设备,控制所述终端设备根据所述第一指令安装所述新的安全组件代码,利用新的所述安全组件代码模块进行处理。
如此,通过上述更新安全密钥的流程,就能够进一步的保证终端设备运行第一应用执行安全要求高的操作时的安全性。
优选地,上述更新安全密钥的流程中,还可以包括:设置新的安全密钥以及原安全密钥之间的过渡时长,在所述过渡时长中,新的安全密钥以及原安全密钥均可使用;所述过渡时长可以根据实际情况设置,比如可以设置为7天。
优选地,上述利用所述针对所述第一应用的安全密钥,生成所述第一应用的安全组件代码,可以包括:
获取到针对所述第一应用的属性信息,从所述属性信息中提取所述第一应用的版本号;
将所述安全密钥、所述第一应用的标识信息以及所述第一应用的版本号作为密钥信息,根据预设的密钥隐藏算法将所述密钥信息设置到安全组件模板中,生成针对所述第一应用的安全组件代码。如此,就能够实现应用的每个不同版本每次安装所形成的副本,均对应一个唯一不同的安全密钥。安全密钥的副本唯一性可保证一个终端设备的应用被破解不会影响到其他的终端设备。能实现每个应用的每个不同版本每次安装所形成的副本,均对应一个唯一不同的安全密钥appKey,安全密钥的副本唯一性可保证一个终端用户的应用被破解不会影响到其他的用户,从而提高大规模批量破解的难度。
下面针对上述实施例,提供一个网络侧的实施场景,如图3所示,在网络侧中,所述第一网络设备可以为安全组件发布平台31,进一步的,网络侧还可以具备以下设备:应用注册平台32、应用发布平台33以及应用安全密钥管理平台34;具体的操作流程,如图4所示,包括:
步骤401:开发者完成第一应用的开发之后登录应用注册平台32,设置所述第一应用的相关信息,并且下载安全组件开发库.
其中,所述第一应用的相关信息可以包括所述第一应用需要使用的与安全密钥相关的功能,比如,本地安全存储、或网络侧能力调用等;
所述安全组件开发库包括安全组件加载器的开发包、以及安全组件所提供的与应用安全密钥相关的各种协议和操作的开发包。
步骤402:开发者将开发完成的第一应用的安装包上传到应用注册平台32。
通过将所述第一应用的安装包上传至所述应用注册平台32实现对所述第一应用的初步审核,用于在应用的发布端对应用进行控制。
步骤403:所述应用注册平台32将第一应用的安装包及第一应用的相关信息一起发送至给应用发布平台33以及安全组件发布平台31。
步骤404:应用发布平台33将第一应用的相关信息显示给终端设备,并提供第一应用的安装包,当接收到终端设备发来的第二请求时,根据所述第二请求发送所述第一应用的安装包至所述终端设备。
步骤405:安全组件发布平台31在接收到应用注册平台32发来的第一应用的安装包及第一应用的相关信息时,向应用安全密钥管理平台34申请第一应用的安全密钥(appKey),并将所述第一应用的标识信息作为密钥索引(appID)。安全组件发布平台31将(appID,appKey)二元组通过预设的密钥隐藏算法添加到安全组件模板中得到安全组件代码。
优选地,安全组件发布平台31还会计算第一应用的安装包中可执行部分的HASH值,将计算得到的HASH值作为校验码添加至所述安全组件代码中。
另外,在此基础上,还可以对安全组件代码进行防破解加固处理。所述防破解加固处理通常包括:源代码或二进制代码的混淆变换(名称替换混淆、结构混淆、控制流混淆等)、加壳加密、插入反调试代码、插入完整性校验代码等。
另外,针对活跃度较高的appID,安全组件发布平台31定期(例如每月一次)、或在检测到密钥破解威胁时,向应用安全密钥管理平台申请更新其对应的appKey;
安全密钥管理平台34为新旧两个appKey设置一个过渡期(例如7天),过渡期间两个密钥均可使用;
安全组件发布平台31将新的(appID,appKey)二元组通过新的“密钥隐藏算法”(变换隐藏算法,或变换隐藏算法的参数)置入安全组件模板库,并插入应用发布包HASH校验功能,以生成一个新的安全组件代码模块。
安全组件发布平台使用新的算法(变换加固算法,或变换加固算法的参数)对安全组件代码模块本身进行防破解加固处理。
终端设备应用软件启动运行时,安全组件发布平台向安全组件加载器推送更新消息,触发一个新的安全组件下载与安装流程。
下面针对上述实施例,提供一个网络侧的实施场景,如图3所示,在网络侧中,所述第一网络设备可以为安全组件发布平台31,进一步的,网络侧还可以具备以下设备:应用注册平台32、应用发布平台33以及应用安全密钥管理平台34;具体的根据第一应用的版本获取生成安全组件代码的操作流程,包括:
安全组件发布平台31向应用安全密钥管理平台34申请一个针对第一应用的安全密钥(appKey),获取到所述第一应用对应的密钥索引(appID)和版本号(seqN);安全组件发布平台31将(appID,seqN,appKey)三元组通过“密钥隐藏算法”置入安全组件模板库以生成一个新的安全组件代码模块。
可见,采用上述方案,能够通过第一网络设备针对第一应用的所述安全密钥进行处理,生成安全组件代码,并发送安全组件代码至终端设备;如此,将安全密钥的分发与应用其他部分分开发布,提升了针对安全密钥的破解难度,保证了运行应用的安全性。
实施例二、
本发明实施例提供的安全密钥分发方法,应用于终端设备,如图5所示,包括:
步骤501:从第二网络设备中获取到的应用的安装包,安装所述应用;
步骤502:运行所述应用,判断所述应用是否符合第二预设条件,所述第二预设条件表征所述应用为第一次在所述终端设备中运行;
步骤503:当所述应用符合第二预设条件时,向第一网络设备发出第一请求,所述第一请求为获取所述第一应用的安全组件代码的请求;
步骤504:接收到所述第一网络设备发来的针对所述第一应用的安全组件代码,所述安全组件代码由针对所述第一应用的安全密钥生成;
步骤505:利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作。
优选地,运行所述应用,判断所述应用是否符合第二预设条件可以为:运行所述应用时,获取到应用的属性信息,从所述应用的属性信息中提取所述应用是否已经运行过的第一标识,如果所述第一标识表征所述应用为已经运行过的应用时,所述应用为不符合第一预设条件的应用,否则,所述应用为符合第一预设条件的应用。
本实施例提供的终端设备向第一网络设备发出第一请求的一种实施场景可以如图6所示,包括:
步骤601:当需要获取安全组件代码时,触发安全组件加载单元;
步骤602:所述安全组件加载单元向安全组件发布平台发送第一请求;所述第一请求中携带有应用的标识信息以及版本信息;其中,所述应用的标识信息可以为应用的安装包的名称,或者为应用的名称;
步骤603:安全组件发布平台根据所述第一请求中的应用的标识信息以及版本信息查找到安全组件代码模块,并发送所述安全组件代码模块至所述终端设备;
步骤604:所述终端设备的所述安全组件加载单元对所述安全组件代码进行配置。
其中,所述对所述安全组件代码进行配置包括:
从所述安全组件代码中提取安全组件,计算所述安全组件的HASH值,当所述安全组件的HASH值符合预设要求时,确定安全组件的自检通过;
计算所述第一应用的安装包中可执行部分的HASH值,从所述安全组件代码中提取到HASH值;
判断所述HASH值以及所述提取的HASH值是否相同,当相同时,确认所述第一应用具有使用安全组件的权限;其中,所述配置包括记录模块路径、设置加载成功标记等。
所述安全组件为利用所述密钥信息根据预设的密钥隐藏算法计算得到的信息。
优选地,所述方法还包括:终端设备需要调用安全组件执行安全相关的功能,比如,在进行本地安全存储、或网络侧能力调用时,调用所述安全组件进行验证。
如安全密钥用于本地安全存储,经过加密的数据必须使用正确的appKey才能解密。安全密钥的版本唯一性可保证一个应用的密钥被破解不会影响其他应用的数据安全性,一个应用的某个版本密钥被破解不会影响其他版本的数据安全性。
如安全密钥用于网络侧能力调用,那么终端侧可以将二元组添加至请求中,网络侧可根据接收到请求中的(appID,appKey)二元组判断该应用的合法性,从而决定是否允许该应用调用网络侧能力。安全密钥的版本唯一性可保证一个应用的密钥被破解不会影响其他应用的合法性,一个应用的某个版本密钥被破解不会影响其他版本的应用合法性。
优选地,所述方法还可以包括更新所述安全组件代码模块的操作,具体为:
运行所述应用时,检测是否接收到网络侧发出的第一指令,如果检测到所述第一指令,则根据所述第一指令安装所述新的安全组件代码,利用新的所述安全组件代码模块进行处理。
可见,采用上述方案,能够使得终端设备分别从不同的网络设备获取应用以及密钥;如此,将安全密钥的分发与应用其他部分分开发布,提升了针对安全密钥的破解难度,保证了运行应用的安全性。
实施例三、
本发明实施例提供的一种网络设备,如图7所示,所述网络设备包括:
第一通信单元71,用于获取到针对第一应用的安全密钥;其中,所述第一应用为在第二网络设备中发布的应用;
处理单元72,用于利用所述针对所述第一应用的安全密钥,生成针对所述第一应用的安全组件代码;根据所述第一请求将所述安全组件代码发送至所述终端设备,使得所述终端设备利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作;
第二通信单元73,用于接收到终端设备发来的第一请求;其中,所述第一请求为获取所述第一应用的安全组件代码的请求。
上述处理单元72,具体用于将所述安全密钥以及所述第一应用的标识信息作为密钥信息,根据预设的密钥隐藏算法将所述密钥信息设置到安全组件模板中,生成针对所述第一应用的安全组件代码;
其中,所述密钥隐藏算法可以包括:白盒密码(whiteboxcryptography)算法;编码时对密钥进行分片,运行时再拼装的方法;将密钥隐藏在资源文件的冗余信息中,运行时读取。
优选地,处理单元72,还用于在所述第一应用的安全组件代码中添加针对所述第一应用的安装包的校验码;其中,所述针对所述第一应用的安装包的校验码的获取方法可以包括:计算所述第一应用的安装包中可执行部分的HASH值,将所述HASH值作为所述校验码。
优选地,处理单元72,还用于判断所述第一应用是否符合第一预设条件,所述第一预设条件表征所述第一应用处于需要更新安全密钥的状态;当所述第一应用符合第一预设条件时,获取到针对所述第一应用的新的安全密钥;利用所述第一应用的新的安全密钥,生成所述第一应用的新的安全组件代码;检测到第一应用符合第二预设条件时,所述第二预设条件表征所述第一应用在终端设备中处于运行状态;相应的,所述第二通信单元73,还用于利用所述第一应用的新的安全组件代码生成第一指令,发送所述第一指令至所述终端设备,控制所述终端设备根据所述第一指令安装所述新的安全组件代码,利用新的所述安全组件代码模块进行处理。
如此,通过上述更新安全密钥的流程,就能够进一步的保证终端设备运行第一应用执行安全要求高的操作时的安全性。
优选地,上述更新安全密钥的流程中,还可以包括:设置新的安全密钥以及原安全密钥之间的过渡时长,在所述过渡时长中,新的安全密钥以及原安全密钥均可使用;所述过渡时长可以根据实际情况设置,比如可以设置为7天。
优选地,所述处理单元,还用于获取到针对所述第一应用的属性信息,从所述属性信息中提取所述第一应用的版本号;将所述安全密钥、所述第一应用的标识信息以及所述第一应用的版本号作为密钥信息,根据预设的密钥隐藏算法将所述密钥信息设置到安全组件模板中,生成针对所述第一应用的安全组件代码。如此,就能够实现应用的每个不同版本每次安装所形成的副本,均对应一个唯一不同的安全密钥。安全密钥的副本唯一性可保证一个终端设备的应用被破解不会影响到其他的终端设备。能实现每个应用的每个不同版本每次安装所形成的副本,均对应一个唯一不同的安全密钥appKey,安全密钥的副本唯一性可保证一个终端用户的应用被破解不会影响到其他的用户,从而提高大规模批量破解的难度。
可见,采用上述方案,能够通过第一网络设备针对第一应用的所述安全密钥进行处理,生成安全组件代码,并发送安全组件代码至终端设备;如此,将安全密钥的分发与应用其他部分分开发布,提升了针对安全密钥的破解难度,保证了运行应用的安全性。
实施例四、
本发明实施例提供的一种终端设备,如图8所示,所述终端设备包括:
处理单元81,用于从第二网络设备中获取到的应用的安装包,安装所述应用;运行所述应用,判断所述应用是否符合第二预设条件,所述第二预设条件表征所述应用为第一次在所述终端设备中运行;利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作;
安全组件加载单元82,用于当所述应用符合第二预设条件时,向第一网络设备发出第一请求,所述第一请求为获取所述第一应用的安全组件代码的请求;接收到所述第一网络设备发来的针对所述第一应用的安全组件代码,所述安全组件代码由针对所述第一应用的安全密钥生成。
优选地,安全组件加载单元82,具体用于运行所述应用时,获取到应用的属性信息,从所述应用的属性信息中提取所述应用是否已经运行过的第一标识,如果所述第一标识表征所述应用为已经运行过的应用时,所述应用为不符合第一预设条件的应用,否则,所述应用为符合第一预设条件的应用。
所述处理单元81,具体用于当需要获取安全组件代码时,触发安全组件加载单元82;
相应的,所述安全组件加载单元82,具体用于向第一网络设备发送第一请求;所述第一请求中携带有应用的标识信息以及版本信息;其中,所述应用的标识信息可以为应用的安装包的名称,或者为应用的名称;第一网络设备根据所述第一请求中的应用的标识信息以及版本信息查找到安全组件代码模块,并返回所述安全组件代码模块;对所述安全组件代码进行配置。
其中,所述安全组件加载单元82,具体用于从所述安全组件代码中提取安全组件,计算所述安全组件的HASH值,当所述安全组件的HASH值符合预设要求时,确定安全组件的自检通过;计算所述第一应用的安装包中可执行部分的HASH值,从所述安全组件代码中提取到HASH值;判断所述HASH值以及所述提取的HASH值是否相同,当相同时,确认所述第一应用具有使用安全组件的权限;其中,所述配置包括记录模块路径、设置加载成功标记等。
所述安全组件为利用所述密钥信息根据预设的密钥隐藏算法计算得到的信息。
优选地,所述处理单元,还用于需要调用安全组件执行安全相关的功能,比如,在进行本地安全存储、或网络侧能力调用时,调用所述安全组件进行验证。
如安全密钥用于本地安全存储,经过加密的数据必须使用正确的appKey才能解密。安全密钥的版本唯一性可保证一个应用的密钥被破解不会影响其他应用的数据安全性,一个应用的某个版本密钥被破解不会影响其他版本的数据安全性。
如安全密钥用于网络侧能力调用,网络侧可凭借(appID,appKey)二元组判断该应用的合法性,从而决定是否允许该应用调用网络侧能力。安全密钥的版本唯一性可保证一个应用的密钥被破解不会影响其他应用的合法性,一个应用的某个版本密钥被破解不会影响其他版本的应用合法性。
优选地,所述处理单元,还用于运行所述应用时,检测是否接收到网络侧发出的第一指令,如果检测到所述第一指令,则根据所述第一指令安装所述新的安全组件代码,控制所述安全利用新的所述安全组件代码进行处理。
可见,采用上述方案,能够使得终端设备分别从不同的网络设备获取应用以及密钥;如此,将安全密钥的分发与应用其他部分分开发布,提升了针对安全密钥的破解难度,保证了运行应用的安全性。
实施例五、
本实施例提供一种安全密钥分发系统,如图9所示,包括:第一网络设备91、第二网络设备92以及至少一个终端设备93;其中,
所述终端设备93,用于从第二网络设备中获取到的应用的安装包,安装所述应用;运行所述应用,判断所述应用是否符合第二预设条件,所述第二预设条件表征所述应用为第一次在所述终端设备中运行;当所述应用符合第二预设条件时,向第一网络设备发出第一请求,所述第一请求为获取所述第一应用的安全组件代码的请求;接收到所述第一网络设备发来的针对所述第一应用的安全组件代码,所述安全组件代码由针对所述第一应用的安全密钥生成;利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作;
所述第一网络设备91,用于获取到针对第一应用的安全密钥;利用所述针对所述第一应用的安全密钥,生成针对所述第一应用的安全组件代码;接收到终端设备发来的第一请求;其中,所述第一请求为获取所述第一应用的安全组件代码的请求;根据所述第一请求将所述安全组件代码发送至所述终端设备,使得所述终端设备利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作;
所述第二网络设备92,用于为终端设备提供所述第一应用的安装包。
下面针对上述实施例,提供一个网络侧的实施场景,如图3所示,在网络侧中,所述第一网络设备可以为安全组件发布平台31,进一步的,网络侧还可以具备以下设备:应用注册平台32、应用发布平台33以及应用安全密钥管理平台34;具体的操作流程,包括:
开发者完成第一应用的开发之后登录应用注册平台32,设置所述第一应用的相关信息,并且下载安全组件开发库.
其中,所述第一应用的相关信息可以包括所述第一应用需要使用的与安全密钥相关的功能,比如,本地安全存储、或网络侧能力调用等;
所述安全组件开发库包括安全组件加载单元的开发包、以及安全组件所提供的与应用安全密钥相关的各种协议和操作的开发包。
开发者将开发完成的第一应用的安装包上传到应用注册平台32。
通过将所述第一应用的安装包上传至所述应用注册平台32实现对所述第一应用的初步审核,用于在应用的发布端对应用进行控制。
所述应用注册平台32将第一应用的安装包及第一应用的相关信息一起发送至给应用发布平台33以及安全组件发布平台31。
应用发布平台33将第一应用的相关信息显示给终端设备,并提供第一应用的安装包,当接收到终端设备发来的第二请求时,根据所述第二请求发送所述第一应用的安装包至所述终端设备。
安全组件发布平台31在接收到应用注册平台32发来的第一应用的安装包及第一应用的相关信息时,向应用安全密钥管理平台34申请第一应用的安全密钥(appKey),并将所述第一应用的标识信息作为密钥索引(appID)。安全组件发布平台31将(appID,appKey)二元组通过预设的密钥隐藏算法添加到安全组件模板中得到安全组件代码。
优选地,安全组件发布平台31还会计算第一应用的安装包中可执行部分的HASH值,将计算得到的HASH值作为校验码添加至所述安全组件代码中。
另外,在此基础上,还可以对安全组件代码进行防破解加固处理。所述防破解加固处理通常包括:源代码或二进制代码的混淆变换(名称替换混淆、结构混淆、控制流混淆等)、加壳加密、插入反调试代码、插入完整性校验代码等。
另外,针对活跃度较高的appID,安全组件发布平台31定期(例如每月一次)、或在检测到密钥破解威胁时,向应用安全密钥管理平台申请更新其对应的appKey;
安全密钥管理平台34为新旧两个appKey设置一个过渡期(例如7天),过渡期间两个密钥均可使用;
安全组件发布平台31将新的(appID,appKey)二元组通过新的“密钥隐藏算法”(变换隐藏算法,或变换隐藏算法的参数)置入安全组件模板库,并插入应用发布包HASH校验功能,以生成一个新的安全组件代码模块。
安全组件发布平台使用新的算法(变换加固算法,或变换加固算法的参数)对安全组件代码模块本身进行防破解加固处理。
终端设备应用软件启动运行时,安全组件发布平台向安全组件加载单元推送更新消息,触发一个新的安全组件下载与安装流程。
下面针对上述实施例,提供一个网络侧的实施场景,如图3所示,在网络侧中,所述第一网络设备可以为安全组件发布平台31,进一步的,网络侧还可以具备以下设备:应用注册平台32、应用发布平台33以及应用安全密钥管理平台34;具体的根据第一应用的版本获取生成安全组件代码的操作流程,包括:
安全组件发布平台31向应用安全密钥管理平台34申请一个针对第一应用的安全密钥(appKey),获取到所述第一应用对应的密钥索引(appID)和版本号(seqN);安全组件发布平台31将(appID,seqN,appKey)三元组通过“密钥隐藏算法”置入安全组件模板库以生成一个新的安全组件代码模块。
本发明实施例所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
相应的,本发明实施例还提供一种计算机存储介质,其中存储有计算机程序,该计算机程序用于执行本发明实施例的密钥分发方法。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (13)
1.一种安全密钥分发方法,应用于第一网络设备,其特征在于,所述方法包括:
所述第一网络设备获取到针对第一应用的安全密钥;其中,所述第一应用为在第二网络设备中发布的应用;
利用所述针对所述第一应用的安全密钥,生成针对所述第一应用的安全组件代码;
接收到终端设备发来的第一请求;其中,所述第一请求为获取所述第一应用的安全组件代码的请求;
根据所述第一请求将所述安全组件代码发送至所述终端设备,使得所述终端设备利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作。
2.根据权利要求1所述的方法,其特征在于,所述利用所述针对所述第一应用的安全密钥,生成针对所述第一应用的安全组件代码,包括:
将所述安全密钥以及所述第一应用的标识信息作为密钥信息;
根据预设的密钥隐藏算法利用所述密钥信息生成安全组件;
将安全组件添加到预设的安全组件模板中得到针对所述第一应用的安全组件代码。
3.根据权利要求1所述的方法,其特征在于,所述生成针对所述第一应用的安全组件代码之后,所述方法还包括:
计算得到针对所述第一应用的安装包的校验码;
在所述第一应用的安全组件代码中添加所述校验码。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
判断所述第一应用是否符合第一预设条件,所述第一预设条件表征所述第一应用处于需要更新安全密钥的状态;
当所述第一应用符合第一预设条件时,获取到针对所述第一应用的新的安全密钥;
利用所述第一应用的新的安全密钥,生成所述第一应用的新的安全组件代码;
检测到第一应用符合第二预设条件时,所述第二预设条件表征所述第一应用在终端设备中处于运行状态;
利用所述第一应用的新的安全组件代码生成第一指令,发送所述第一指令至所述终端设备,控制所述终端设备根据所述第一指令安装所述新的安全组件代码,利用新的所述安全组件代码模块进行处理。
5.根据权利要求1所述的方法,其特征在于,所述利用所述针对所述第一应用的安全密钥,生成所述第一应用的安全组件代码,包括:
获取到所述第一应用的版本号;
将所述安全密钥、所述第一应用的标识信息以及所述第一应用的版本号作为密钥信息;
根据预设的密钥隐藏算法利用所述密钥信息生成安全组件;
将安全组件添加至预设的安全组件模板中得到针对所述第一应用的安全组件代码。
6.一种安全密钥发布方法,应用于终端设备,其特征在于,所述方法包括:
从第二网络设备中获取到的应用的安装包,安装所述应用;
运行所述应用,判断所述应用是否符合第二预设条件,所述第二预设条件表征所述应用为第一次在所述终端设备中运行;
当所述应用符合第二预设条件时,向第一网络设备发出第一请求,所述第一请求为获取所述第一应用的安全组件代码的请求;
接收到所述第一网络设备发来的针对所述第一应用的安全组件代码,所述安全组件代码由针对所述第一应用的安全密钥生成;
利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作。
7.一种网络设备,其特征在于,所述网络设备包括:
第一通信单元,用于获取到针对第一应用的安全密钥;其中,所述第一应用为在第二网络设备中发布的应用;
处理单元,用于利用所述针对所述第一应用的安全密钥,生成针对所述第一应用的安全组件代码;根据所述第一请求将所述安全组件代码发送至所述终端设备,使得所述终端设备利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作;
第二通信单元,用于接收到终端设备发来的第一请求;其中,所述第一请求为获取所述第一应用的安全组件代码的请求。
8.根据权利要求7所述的网络设备,其特征在于,所述处理单元,具体用于将所述安全密钥以及所述第一应用的标识信息作为密钥信息;根据预设的密钥隐藏算法利用所述密钥信息生成安全组件;将安全组件添加到预设的安全组件模板中得到针对所述第一应用的安全组件代码。
9.根据权利要求7所述的网络设备,其特征在于,所述处理单元,还用于计算得到针对所述第一应用的安装包的校验码;在所述第一应用的安全组件代码中添加所述校验码。
10.根据权利要求7所述的网络设备,其特征在于,
所述处理单元,还用于判断所述第一应用是否符合第一预设条件,所述第一预设条件表征所述第一应用处于需要更新安全密钥的状态;当所述第一应用符合第一预设条件时,获取到针对所述第一应用的新的安全密钥;利用所述第一应用的新的安全密钥,生成所述第一应用的新的安全组件代码;检测到第一应用符合第二预设条件时,所述第二预设条件表征所述第一应用在终端设备中处于运行状态;利用所述第一应用的新的安全组件代码生成第一指令;
所述第二通信单元,还用于发送所述第一指令至所述终端设备,控制所述终端设备根据所述第一指令安装所述新的安全组件代码,利用新的所述安全组件代码模块进行处理。
11.根据权利要求7所述的网络设备,其特征在于,
所述处理单元,还用于获取到所述第一应用的版本号;将所述安全密钥、所述第一应用的标识信息以及所述第一应用的版本号作为密钥信息;根据预设的密钥隐藏算法利用所述密钥信息生成安全组件;将安全组件添加至预设的安全组件模板中得到针对所述第一应用的安全组件代码。
12.一种终端设备,其特征在于,所述终端设备包括:
处理单元,用于从第二网络设备中获取到的应用的安装包,安装所述应用;运行所述应用,判断所述应用是否符合第二预设条件,所述第二预设条件表征所述应用为第一次在所述终端设备中运行;利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作;
安全组件加载单元,用于当所述应用符合第二预设条件时,向第一网络设备发出第一请求,所述第一请求为获取所述第一应用的安全组件代码的请求;接收到所述第一网络设备发来的针对所述第一应用的安全组件代码,所述安全组件代码由针对所述第一应用的安全密钥生成。
13.一种安全密钥分发系统,其特征在于,所述系统包括:第一网络设备、第二网络设备以及至少一个终端设备;其中,
所述终端设备,用于从第二网络设备中获取到的应用的安装包,安装所述应用;运行所述应用,判断所述应用是否符合第二预设条件,所述第二预设条件表征所述应用为第一次在所述终端设备中运行;当所述应用符合第二预设条件时,向第一网络设备发出第一请求,所述第一请求为获取所述第一应用的安全组件代码的请求;接收到所述第一网络设备发来的针对所述第一应用的安全组件代码,所述安全组件代码由针对所述第一应用的安全密钥生成;利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作;
所述第一网络设备,用于获取到针对第一应用的安全密钥;利用所述针对所述第一应用的安全密钥,生成针对所述第一应用的安全组件代码;接收到终端设备发来的第一请求;其中,所述第一请求为获取所述第一应用的安全组件代码的请求;根据所述第一请求将所述安全组件代码发送至所述终端设备,使得所述终端设备利用所述第一应用的所述安全组件代码处理针对所述第一应用的操作;
所述第二网络设备,用于为终端设备提供所述第一应用的安装包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410836184.5A CN105790931B (zh) | 2014-12-26 | 2014-12-26 | 一种密钥分发方法、网络设备、终端设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410836184.5A CN105790931B (zh) | 2014-12-26 | 2014-12-26 | 一种密钥分发方法、网络设备、终端设备及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105790931A true CN105790931A (zh) | 2016-07-20 |
CN105790931B CN105790931B (zh) | 2019-05-24 |
Family
ID=56389582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410836184.5A Active CN105790931B (zh) | 2014-12-26 | 2014-12-26 | 一种密钥分发方法、网络设备、终端设备及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105790931B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109643345A (zh) * | 2016-09-27 | 2019-04-16 | 英特尔公司 | 用于确定性代码流完整性保护的技术 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719210A (zh) * | 2009-12-25 | 2010-06-02 | 武汉大学 | 基于linux平台数字版权管理的文件使用控制方法 |
CN102195957A (zh) * | 2010-03-19 | 2011-09-21 | 华为技术有限公司 | 一种资源共享方法、装置及系统 |
EP2430584A1 (en) * | 2009-05-06 | 2012-03-21 | Irdeto Canada Corporation | Interlocked binary protection using whitebox cryptography |
CN102419804A (zh) * | 2010-11-19 | 2012-04-18 | 微软公司 | 具有冗余安全性的可靠的软件产品验证和激活 |
CN102426640A (zh) * | 2010-11-19 | 2012-04-25 | 微软公司 | 用于产品验证和激活的安全软件产品标识符 |
US8255687B1 (en) * | 2011-09-15 | 2012-08-28 | Google Inc. | Enabling users to select between secure service providers using a key escrow service |
CN103178964A (zh) * | 2013-03-05 | 2013-06-26 | 中国地质大学(武汉) | 一种基于二维码的智能终端认证的密钥交换方法 |
-
2014
- 2014-12-26 CN CN201410836184.5A patent/CN105790931B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2430584A1 (en) * | 2009-05-06 | 2012-03-21 | Irdeto Canada Corporation | Interlocked binary protection using whitebox cryptography |
CN101719210A (zh) * | 2009-12-25 | 2010-06-02 | 武汉大学 | 基于linux平台数字版权管理的文件使用控制方法 |
CN102195957A (zh) * | 2010-03-19 | 2011-09-21 | 华为技术有限公司 | 一种资源共享方法、装置及系统 |
CN102419804A (zh) * | 2010-11-19 | 2012-04-18 | 微软公司 | 具有冗余安全性的可靠的软件产品验证和激活 |
CN102426640A (zh) * | 2010-11-19 | 2012-04-25 | 微软公司 | 用于产品验证和激活的安全软件产品标识符 |
US8255687B1 (en) * | 2011-09-15 | 2012-08-28 | Google Inc. | Enabling users to select between secure service providers using a key escrow service |
CN103178964A (zh) * | 2013-03-05 | 2013-06-26 | 中国地质大学(武汉) | 一种基于二维码的智能终端认证的密钥交换方法 |
Non-Patent Citations (1)
Title |
---|
杨勇义: "基于Android平台的软件保护技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109643345A (zh) * | 2016-09-27 | 2019-04-16 | 英特尔公司 | 用于确定性代码流完整性保护的技术 |
CN109643345B (zh) * | 2016-09-27 | 2023-07-25 | 英特尔公司 | 用于确定性代码流完整性保护的技术 |
Also Published As
Publication number | Publication date |
---|---|
CN105790931B (zh) | 2019-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103677891B (zh) | 用于选择性软件回退的方法 | |
CN103460195B (zh) | 用于安全软件更新的系统和方法 | |
US20100063996A1 (en) | Information processing device, information recording device, information processing system, program update method, program, and integrated circuit | |
KR101430240B1 (ko) | 어플리케이션 서명 장치 및 방법 | |
CN103220264A (zh) | 提供数字签名以确保闪存编程功能的方法 | |
CN102314578A (zh) | 一种实现软件保护的系统及方法 | |
CN106656513B (zh) | 安卓平台上apk文件的二次打包签名验证方法 | |
CN103577745A (zh) | 辅助处理器的安全烧录编程 | |
CN102567685B (zh) | 基于非对称公钥密码体系的软件版权保护方法 | |
JP2016540282A (ja) | 動的ライブラリを保護する方法及び装置 | |
CN103679005A (zh) | 启用安全电子控制单元的开发模式的方法 | |
CN103677892A (zh) | 在安全电子控制单元中启用特殊优先模式的授权方案 | |
CN107466455B (zh) | Pos机安全验证方法及装置 | |
CN102479305A (zh) | 软件许可验证的方法及系统 | |
CN113378119B (zh) | 一种软件授权方法、装置、设备及存储介质 | |
CN104123488A (zh) | 应用程序的验证方法和装置 | |
US9858061B2 (en) | Tamperproof installation of building control software in approved runtime environments | |
CN104683299A (zh) | 一种软件注册的控制方法、认证服务器及终端 | |
KR101642267B1 (ko) | 앱 위변조 방지시스템 및 그 방법 | |
CN111399867B (zh) | 一种软件升级方法、装置、设备及计算机可读存储介质 | |
CN102750479A (zh) | 一种分层软件版权保护方法和系统 | |
CN103403729A (zh) | 唯一代码签名密钥的安全管理和个性化 | |
WO2018033017A1 (zh) | 一种授信的终端状态转换方法和系统 | |
CN102426592B (zh) | 一种基于动态口令的数据库初始化方法 | |
KR101711024B1 (ko) | 부정조작방지 장치 접근 방법 및 그 방법을 채용한 단말 장치 |
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 |