一种生成加密信息的方法、装置和智能设备与流程

文档序号:23419214发布日期:2020-12-25 11:41阅读:97来源:国知局
一种生成加密信息的方法、装置和智能设备与流程

【技术领域】

本发明涉及智能设备技术领域,尤其涉及一种生成加密信息的方法、装置和智能设备。



背景技术:

随着移动互联网和物联网技术的发展,在现有技术智能设备与应用服务器进行数据加密相关操作的一种方法中,在智能设备上生成专用于应用服务器的应用密钥或加密值时,为了确保该生成的应用密钥或加密值确实是用于该应用服务器的,会显示授权界面,在该授权界面上显示相关的应用信息,从而让用户根据该应用信息确认是否进行授权,只有用户输入表示同意授权的信息才继续生成应用密钥或加密值,这样,通过提供显示授权界面让用户确认授权,可以防止由于误操作等原因生成非必要的应用密钥或加密值。

但是,在实际应用中,本发明的发明人发现,智能设备与应用服务器之间数据加密相关的操作,通常由安装在智能设备上的应用客户端与应用服务器之间进行交互,但由于智能设备上通常会安装有多个应用客户端,每个应用客户端分别与对应的应用服务器进行交互,由于每个应用客户端是由不同的第三方应用服务商提供的,则如果通过提供显示授权界面让用户确认授权之后生成应用密钥或加密值,则至少存在如下方面的问题:

第一方面,由于需要用户在授权界面上确认是否进行授权,会严重影响授权过程的便捷性和影响用户使用体验。

第二方面,当用户在授权界面上确认是否进行授权时,对于授权界面上显示的应用信息,用户只能直观的看到该显示的应用信息,但并不能确定出该显示的应用信息实际上是不是由相应的应用客户端发起。例如,当应用客户端a仿冒应用客户端b发起生成应用密钥或加密值的过程时,当在授权界面上显示的是应用客户端b相关的应用信息时,用户并不能确定出实际是由应用客户端a发起的。

第三方面,由于现有的技术实现方式,智能设备通常是根据应用客户端发送的调用请求中携带的应用标识参数以生成应用密钥或加密值,则智能设备上的应用客户端可以将该调用请求中的应用标识参数修改成其他应用客户端的应用标识,从而仿冒其他应用客户端以获取应用密钥或加密值。

需要说明的是,上述背景信息仅用于加强对本发明背景技术的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术信息。



技术实现要素:

本发明的主要目的在于提供一种生成加密信息的方法、装置和智能设备,进而至少在一定程度上解决由于相关技术的限制和缺陷而导致的一个或者多个问题,包括以下技术方案:

第一方面,提供了一种生成加密信息的方法,应用于智能设备中,所述智能设备上运行有应用客户端,所述应用客户端与对应的应用服务器通过网络相连接,所述应用服务器与加密服务器通过网络相连接,所述方法包括:

获取用户标识和第一主密钥,并且在所述加密服务器上存储有所述用户标识与第二主密钥的关联关系,所述第二主密钥与所述第一主密钥的值相同;

通过本地进程间通信接收所述应用客户端的调用请求,所述调用请求用于获取加密信息;

通过系统内核机制识别所述应用客户端的应用标识,所述应用标识与所述加密服务器确定的所述应用服务器的应用标识一致;

根据所述第一主密钥和所述应用标识生成加密信息;

将所述用户标识和所述加密信息传递给所述应用客户端,以使得所述应用客户端根据所述用户标识和所述加密信息与所述应用服务器执行数据加密相关的操作。

优先的,所述获取用户标识和第一主密钥包括:

获取预先存储的所述用户标识和所述第一主密钥;或者,

与所述加密服务器进行密钥协商以获取所述用户标识和所述第一主密钥。

优先的,所述与所述加密服务器进行密钥协商以获取所述用户标识和所述第一主密钥包括:

基于用户识别模块sim与所述加密服务器基于用户数据系统进行认证与密钥协商以获取所述用户标识和所述第一主密钥。

优先的,所述通过本地进程间通信接收所述应用客户端的调用请求包括:

所述调用请求为所述应用客户端通过调用内嵌sdk提供的api所发送的。

优先的,所述系统为android系统,与所述应用客户端通过binder方式进行所述本地进程间通信,则所述通过系统内核机制识别所述应用客户端的应用标识包括:

获取所述应用客户端的调用者信息,根据所述调用者信息确定所述应用标识。

优先的,所述调用者信息包括applicationid或者包名,所述获取所述应用客户端的调用者信息,根据所述调用者信息确定所述应用标识包括:

获取所述调用者的applicationid,确定所述applicationid为所述应用标识;或者,

获取所述调用者的包名,确定所述包名为所述应用标识。

优先的,所述获取所述调用者的applicationid包括:

通过binder.getcallingpid()方法获取所述调用者的进程id,根据所述进程id获取所述调用者的applicationid;或者,

通过binder.getcallinguid()方法获取所述调用者的用户id,根据所述用户id通过getpackagesforuid()方法获取所述调用者的applicationid。

优先的,所述应用客户端通过activity.startactivityforresult()方法发送所述调用请求,所述获取所述调用者的包名包括:

通过activity.getcallingpackage()方法获取所述调用者的包名;或者,

通过activity.getcallingactivity()方法获取所述调用者的活动组件名称,从所述活动组件名称中获取所述调用者的包名。

优先的,所述系统为ios系统,与所述应用客户端通过urlscheme进行所述本地进程间通信,则所述通过系统内核机制识别所述应用客户端的应用标识包括:

通过uiapplicationdelegate协议中打开url指定资源的方法获取包标识,确定所述包标识为所述应用标识。

优先的,所述通过uiapplicationdelegate协议中打开url指定资源的方法获取包标识包括:

使用“application:openurl:sourceapplication:annotation:”方法调用的sourceapplication参数以获取所述包标识;或者,

使用“application:openurl:options:”方法调用的options参数的uiapplicationopenurloptionssourceapplicationkey键值以获取所述包标识。

优先的,在所述通过系统内核机制识别所述应用客户端的应用标识之后,以及在所述根据所述第一主密钥和所述应用标识生成加密信息之前还包括:

确定所述应用标识是否为经过授权的应用标识;

若是,则执行所述根据所述第一主密钥和所述应用标识生成加密信息;

若否,则不执行所述根据所述第一主密钥和所述应用标识生成加密信息。

优先的,所述确定所述应用标识是否为经过授权的应用标识包括:

确定所述应用标识是否为经过所述加密服务器授权的应用标识;或/和,

确定所述应用标识是否为经过用户授权的应用标识。

优选的,所述确定所述应用标识是否为经过所述加密服务器授权的应用标识包括:

将所述应用标识发送给所述加密服务器,以使得所述加密服务器确定所述应用标识是否为经过授权的应用标识;

若接收到所述加密服务器反馈的表示已经授权的信息,则确定所述应用标识为经过授权;

否则,则确定所述应用标识没有经过授权。

优先的,所述确定所述应用标识是否为经过用户授权的应用标识包括:

将所述应用标识发送给所述加密服务器;

接收所述加密服务器反馈的应用信息,所述应用信息是所述加密服务器根据所述应用标识获取的;

显示授权界面,在所述授权界面上显示所述应用信息;

接收用户在所述授权界面中输入的授权信息;

若所述授权信息是表示同意的授权信息,则确定所述应用标识为经过授权;

否则,则确定所述应用标识没有经过授权。

优先的,所述应用信息包括应用名称或/和应用图标或/和应用详情。

优先的,所述根据所述第一主密钥和所述应用标识生成加密信息包括:

根据所述第一主密钥和所述应用标识生成第一应用密钥,所述第一应用密钥为所述加密信息,其中,所述第一应用密钥的生成方式与所述加密服务器根据所述第二主密钥和所述应用服务器的应用标识生成第二应用密钥的生成方式一致,以使得所述第一应用密钥与所述第二应用密钥的值相同;或者,

根据所述第一主密钥和所述应用标识生成第三应用密钥,根据所述第三应用密钥对数据进行加密以生成第一加密值,所述第一加密值为所述加密信息,其中,所述第三应用密钥的生成方式与所述加密服务器根据所述第二主密钥和所述应用服务器的应用标识生成第四应用密钥的生成方式一致,以使得所述第三应用密钥与所述第四应用密钥的值相同;或者,

根据所述第一主密钥对包括所述应用标识的信息加密以生成第二加密值,所述第二加密值为所述加密信息,在将所述用户标识和所述第二加密值传递给所述应用客户端之后,所述应用客户端通过所述应用服务器将所述用户标识和所述第二加密值传递给所述加密服务器,以使得所述加密服务器根据所述用户标识获取所述第二主密钥,再根据所述第二主密钥和所述应用服务器的应用标识验证所述第二加密值。

优先的,所述根据所述第三应用密钥对数据进行加密以生成第一加密值包括:

根据所述第三应用密钥使用对称加密算法对数据进行加密以生成所述第一加密值;或者,

根据所述第三应用密钥使用消息认证码算法对数据进行加密以生成所述第一加密值。

优先的,所述根据所述第一主密钥对包括所述应用标识的信息加密以生成第二加密值包括:

根据所述第一主密钥生成第五应用密钥,其中,所述第五应用密钥的生成方式与所述加密服务器根据所述第二主密钥生成第六应用密钥的生成方式一致,以使得所述第五应用密钥与所述第六应用密钥的值相同;

根据所述应用标识生成第一验证信息,其中,所述第一验证信息的生成方式与所述加密服务器生成第二验证信息的生成方式一致,以使得所述第一验证信息与所述第二验证信息的值相同;

根据所述第五应用密钥对所述第一验证信息加密生成所述第二加密值。

优先的,所述根据所述第一主密钥生成第五应用密钥包括:

将所述第一主密钥作为所述第五应用密钥;或者,

根据包括所述第一主密钥的信息生成所述第五应用密钥。

优先的,所述根据所述应用标识生成第一验证信息包括:

将所述应用标识作为所述第一验证信息;或者,

根据包括所述应用标识的信息生成所述第一验证信息。

优先的,所述根据所述第五应用密钥对所述第一验证信息加密生成所述第二加密值包括:

根据所述第五应用密钥使用消息认证码算法对所述第一验证信息加密生成所述第二加密值;或者,

根据所述第五应用密钥使用对称加密算法对包括所述第一验证信息的信息加密生成所述第二加密值。

优先的,所述将所述用户标识和所述加密信息传递给所述应用客户端包括:

在android系统中,若所述应用客户端以activity.startactivityforresult()方法发送所述调用请求,则通过activity.setresult()方法将所述用户标识和所述加密信息传递给所述应用客户端;或者,

在ios系统中,从所述调用请求中获取所述应用客户端的回调地址,根据所述回调地址将所述用户标识和所述加密信息传递给所述应用客户端。

第二方面,提供了一种生成加密信息的安全装置,应用于智能设备中,所述智能设备上运行有应用客户端,所述应用客户端与对应的应用服务器通过网络相连接,所述应用服务器与加密服务器通过网络相连接,所述装置包括:

获取模块,用于获取用户标识和第一主密钥,并且在所述加密服务器上存储有所述用户标识与第二主密钥的关联关系,所述第二主密钥与所述第一主密钥的值相同;

接收模块,用于通过本地进程间通信接收所述应用客户端的调用请求,所述调用请求用于获取加密信息;

识别模块,用于通过系统内核机制识别所述应用客户端的应用标识,所述应用标识与所述加密服务器确定的所述应用服务器的应用标识一致;

加密模块,用于根据所述第一主密钥和所述应用标识生成加密信息;

传递模块,用于将所述用户标识和所述加密信息传递给所述应用客户端,以使得所述应用客户端根据所述用户标识和所述加密信息与所述应用服务器执行数据加密相关的操作。

优先的,所述获取模块包括:

第一获取单元,用于获取预先存储的所述用户标识和所述第一主密钥;或者,

第二获取单元,用于与所述加密服务器进行密钥协商以获取所述用户标识和所述第一主密钥。

优先的,在android系统中,所述接收模块包括第一接收单元,所述识别模块包括第一识别单元,其中:

所述第一接收单元,用于与所述应用客户端通过binder方式进行所述本地进程间通信以接收所述调用请求;

所述第一识别单元,用于获取所述应用客户端的调用者信息,根据所述调用者信息确定所述应用标识

优先的,在ios系统中,所述接收模块包括第二接收单元,所述识别模块包括第二识别单元,其中:

所述第二接收单元,用于与所述应用客户端通过urlscheme进行所述本地进程间通信以接收所述调用请求;

所述第二识别单元,用于通过uiapplicationdelegate协议中打开url指定资源的方法获取包标识,所述包标识为所述应用标识。

优先的,所述第一识别单元包括:

第一识别子单元一,用于通过binder.getcallingpid()方法获取所述调用者的进程id,根据所述进程id获取所述调用者的applicationid,所述applicationid为所述应用标识;或者,

第一识别子单元二,用于通过binder.getcallinguid()方法获取所述调用者的用户id,根据所述用户id通过getpackagesforuid()方法获取所述调用者的applicationid,所述applicationid为所述应用标识;或者,

第一识别子单元三,用于通过activity.getcallingpackage()方法获取所述调用者的包名,所述包名为所述应用标识;或者,

第一识别子单元四,用于通过activity.getcallingactivity()方法获取所述调用者的活动组件名称,从所述活动组件名称中获取所述调用者的包名,所述包名为所述应用标识。

优先的,所述加密模块包括:

第一加密单元,用于根据所述第一主密钥和所述应用标识生成第一应用密钥,所述第一应用密钥为所述加密信息,其中,所述第一应用密钥的生成方式与所述加密服务器根据所述第二主密钥和所述应用服务器的应用标识生成第二应用密钥的生成方式一致,以使得所述第一应用密钥与所述第二应用密钥的值相同;或者,

第二加密单元,用于根据所述第一主密钥和所述应用标识生成第三应用密钥,根据所述第三应用密钥对数据进行加密以生成第一加密值,所述第一加密值为所述加密信息,其中,所述第三应用密钥的生成方式与所述加密服务器根据所述第二主密钥和所述应用服务器的应用标识生成第四应用密钥的生成方式一致,以使得所述第三应用密钥与所述第四应用密钥的值相同;或者,

第三加密单元,用于根据所述第一主密钥对包括所述应用标识的信息加密以生成第二加密值,所述第二加密值为所述加密信息,在将所述用户标识和所述第二加密值传递给所述应用客户端之后,所述应用客户端通过所述应用服务器将所述用户标识和所述第二加密值传递给所述加密服务器,以使得所述加密服务器根据所述用户标识获取所述第二主密钥,再根据所述第二主密钥和所述应用服务器的应用标识验证所述第二加密值。

优先的,所述第三加密单元包括:

应用密钥生成子单元,用于根据所述第一主密钥生成第五应用密钥,其中,所述第五应用密钥的生成方式与所述加密服务器根据所述第二主密钥生成第六应用密钥的生成方式一致,以使得所述第五应用密钥与所述第六应用密钥的值相同;

验证信息生成子单元,用于根据所述应用标识生成第一验证信息,其中,所述第一验证信息的生成方式与所述加密服务器生成第二验证信息的生成方式一致,以使得所述第一验证信息与所述第二验证信息的值相同;

加密信息生成子单元,用于根据所述第五应用密钥对所述第一验证信息加密生成所述第二加密值。

优先的,所述装置还包括授权模块,所述授权模块用于确定所述应用标识是否为经过授权的应用标识;若是,则执行所述加密模块;若否,则不执行所述加密模块。

优先的,所述授权模块包括:

服务授权单元,用于确定所述应用标识是否为经过所述加密服务器授权的应用标识;或/和,

用户授权单元,用于确定所述应用标识是否为经过用户授权的应用标识。

优选的,所述服务授权单元包括:

服务标识发送子单元,用于将所述应用标识发送给所述加密服务器,以使得所述加密服务器确定所述应用标识是否为经过授权的应用标识;

服务授权接收子单元,用于接收所述加密服务器反馈的信息;

服务授权确认子单元,用于根据所述反馈的信息确认所述应用标识是否为经过授权;若所述反馈的信息为表示已经授权的信息,则确定所述应用标识为经过授权;否则,则确定所述应用标识没有经过授权。

优先的,所述用户授权单元包括:

应用标识发送子单元,用于将所述应用标识发送给所述加密服务器;

应用信息接收子单元,用于接收所述加密服务器反馈的应用信息,所述应用信息是所述加密服务器根据所述应用标识获取的;

授权界面显示子单元,用于显示授权界面,在所述授权界面上显示所述应用信息;

用户授权接收子单元,用于接收用户在所述授权界面中输入的授权信息;

用户授权确定子单元,用于当所述授权信息是表示同意的授权信息时,则确定所述应用标识为经过授权;否则,则确定所述应用标识没有经过授权。

优先的,所述应用信息包括应用名称或/和应用图标或/和应用详情。

第三方面,提供一种智能设备,所述智能设备包括:存储器、处理器,所述处理器用于运行所述存储器所存储的程序,所述程序运行时实现上述第一方面所述的方法。

提供一种智能设备,所述智能设备包括上述第二方面所述的装置。

提供一种智能操作系统,其特征在于,所述智能操作系统包括上述第一方面所述的方法,或者包括上述第二方面所述的装置。

提供一种存储介质,其特征在于,所述存储介质中存储有程序,所述程序用于实现包括上述第一方面所述的方法,或者包括上述第二方面所述的装置。

综上所述,本发明提供的技术方案运行在智能设备中,根据应用客户端的调用请求,通过系统内核机制识别应用客户端的应用标识,然后根据第一主密钥和应用标识生成加密信息,将用户标识和加密信息传递给应用客户端,以使得应用客户端根据该用户标识和加密信息与应用服务器之间执行数据加密相关的操作。本发明提供的技术方案,由于是根据系统内核机制确定调用者的应用标识,确保该应用标识不可伪造,由此使得根据第一主密钥和应用标识生成的加密信息确实是用于该应用客户端的加密信息,从而使得可以以同一个主密钥为多个不同的应用客户端提供加密信息,且该多个不同的应用客户端之间不可相互仿冒以获取加密信息;当不实施显示授权界面的实施方式时,由于不需要用户在授权界面上输入信息以确认是否进行授权,提高了用户使用的便捷性和增强了用户使用体验,以及适用于不需要用户参与交互的智能设备和应用客户端。

【附图说明】

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1是本发明各实施例所涉及的一种网络架构示意图;

图2是一种生成加密信息的方法实施例的流程示意图;

图3是一种生成加密信息的安全装置实施例一的结构示意图;

图4是一种生成加密信息的安全装置实施例二的结构示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

【具体实施方式】

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

一、相关名词术语

为了便于理解,对本文中涉及的一些名词作介绍和说明。

智能设备:具有数据计算处理功能的设备,包括智能手机、智能电视、平板电脑等用户智能设备,也包括智能手表、智能手环、智能家居等物联网智能设备。

智能操作系统:应用于智能设备的操作系统,如安卓(android)系统(包括基于android系统深度开发的系统)、苹果公司开发的ios系统(包括基于ios系统深度开发的系统)或其它系统。在智能操作系统中,使用沙箱机制隔离应用程序,使得应用程序间不能直接相互访问数据;以android系统为例,android应用程序在安装时被赋予特定的用户id(uid),并永久保持,应用程序及其运行的dalvik虚拟机运行在独立的linux进程空间,与其它应用程序完全隔离。

应用程序:也被称为app(application),是安装在智能操作系统上提供不同功能的软件程序。

应用客户端:一种应用程序(app),用户通过应用客户端可以网络访问该应用客户端对应的应用服务器,并且获取该对应的应用服务器提供的应用数据和服务,如资讯、旅游、购物等应用数据和服务。

安装包:对应用程序进行分发和安装的文件,android系统中应用程序的安装包是后缀名为apk的文件,ios系统中应用程序的安装包是后缀名为ipa的文件。

用户标识:用于识别一个用户的标识。

应用标识:用于唯一地识别应用服务器的标识,也用于唯一地识别应用客户端。

消息认证码:也被称为mac(messageauthenticationcode),利用密钥对要保护的信息加密生成一段数字串,该段数字串对于要保护的信息来说是唯一和一一对应的,别人无法伪造,也是对信息的发送者发送信息真实性的一个有效证明。因此,消息认证码可以有效地保护信息的完整性,以及实现发送方的不可抵赖和不能伪造。消息认证码算法包括基于哈希的消息认证码(hmac)、密码分组链接消息认证码(cbc-mac)、伽罗瓦消息认证码(gmac)等,以及含密钥加密的哈希函数也起到等同的作用。

对称加密算法:指加密和解密使用相同密钥的加密算法,例如三重数据加密标准(tripledataencryptionstandard,des)、高级加密标准(advancedencryptionstandard,aes)等。

二、实施环境说明

请参考图1,其示出了本发明各个实施例所涉及的一种网络架构的结构示意图。该网络架构中包括智能设备、应用服务器和加密服务器。

在智能设备上运行有安全装置和应用客户端,安全装置获取用户标识和第一主密钥,应用客户端与安全装置间通过智能操作系统内的本地进程间通信机制进行通信,安全装置接收应用客户端的调用请求,获取应用客户端的应用标识,根据该第一主密钥和该应用标识生成加密信息,并且向应用客户端提供该用户标识和该加密信息。

应用客户端与应用服务器通过网络相连接,应用客户端根据从安全装置处获取的用户标识和加密信息,与应用服务器进行身份认证、数据加解密、完整性验证等数据加密相关的操作。

应用服务器由第三方应用服务商提供,用于和应用客户端通过网络相连接,向应用客户端提供用户所需的业务应用数据和服务,例如资讯、购物、社交等;与加密服务器通过网络相连接,当加密服务器接收到应用服务器转发的用户标识时,根据该用户标识在用户标识与第二主密钥的关联关系中获取该用户标识关联的第二主密钥;加密服务器可以确定该应用服务器的应用标识,该应用服务器的应用标识与应用客户端的应用标识是一致的。由此,则加密服务器根据获取的第二主密钥和该应用服务器的应用标识,实现向应用服务器提供加密服务,例如提供应用密钥或加密结果等;而应用服务器则根据该提供的加密服务,实现与应用客户端的身份认证、数据加解密、完整性验证等数据加密相关的操作。

可以理解,在实际网络应用环境中,可以包括有多个智能设备,每个智能设备上分别运行有一个或多个应用客户端,各个应用客户端与所在智能设备上的安全装置通过智能操作系统的本地进程间通信机制进行通信,同时,各个应用客户端分别与对应的应用服务器通过网络相连接,该各个应用服务器又分别与加密服务器通过网络相连接。

需要说明的是,加密服务器是逻辑意义上的服务器,其可以作为一个功能模块集成到其他的服务器上(如认证服务器、授权服务器等)。

需要说明的是,本领域技术人员可以理解,本发明各实施例主要应用于图1所示网络架构中的智能设备及安全装置,图1中示出的网络架构并不构成对实施环境的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。图1中示出的网络架构仅用于加强对本发明技术的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术信息。

三、一种生成加密信息的方法实施例

请参考图2,其示出了本发明提供的一种生成加密信息的方法实施例的流程图,该方法可以由生成加密信息的安全装置来执行,其中,该安全装置可由软件和/或硬件实现,一般可集成于智能设备或智能操作系统中,或者运行于智能操作系统的应用程序中。本实施例以该方法应用于图1所示实施环境中的安全装置来举例说明,该方法可以包括:

步骤201.获取用户标识和第一主密钥,并且在加密服务器上存储有该用户标识与第二主密钥的关联关系,该第二主密钥与该第一主密钥的值相同。

获取用户标识和第一主密钥,并且在加密服务器上建立和存储有该用户标识与第二主密钥的关联关系,即在加密服务器上根据该用户标识在该关联关系中可以查找和获取到该第二主密钥,并且该第二主密钥与该第一主密钥的值是相同的。

该获取的用户标识和第一主密钥,可以是预先存储的用户标识和第一主密钥,例如,在智能设备生产时,给每一个智能设备分别生成和写入用于该智能设备的用户标识和第一主密钥,安全装置具有获取该用户标识和该第一主密钥的权限,同时在加密服务器上建立和存储该用户标识与第二主密钥的关联关系,该第二主密钥与该第一主密钥的值是相同的。

该获取的用户标识和第一主密钥,也可以是与加密服务器之间经过密钥协商所生成的。例如,以参照专利申请文件“一种身份认证方法、智能设备及认证服务器”(申请号:2019107750779)中的认证与密钥协商过程实施例为例,将加密服务器作为该认证与密钥协商过程实施例中的认证服务器,由智能设备基于用户识别模块sim与加密服务器基于用户数据系统进行认证与密钥协商,在成功进行认证与密钥协商之后,智能设备获取到临时用户标识和生成第一主密钥,该临时用户标识即为用户标识,该临时用户标识和该第一主密钥由智能设备传递给安全装置,同时,在加密服务器上建立有该临时用户标识与第二主密钥的关联关系,该第二主密钥与该第一主密钥的值相同。

需要说明的是,在权限控制上,应使得应用客户端不能直接获取到该第一主密钥,例如基于智能操作系统的沙箱隔离机制,该第一主密钥属于安全装置所属的资源,应用客户端等应用程序不能直接访问和获取到该第一主密钥。

步骤202.通过本地进程间通信接收应用客户端发送的调用请求,该调用请求用于获取加密信息。

应用客户端与安全装置之间通过智能操作系统内的本地进程间通信机制进行通信,应用客户端通过该本地进程间通信机制向安全装置发送调用请求,安全装置接收来自应用客户端的调用请求,该调用请求用于获取加密信息。

进一步的,应用客户端向安全装置发送调用请求的实施方式,由应用客户端在启动运行时通过调用内嵌sdk的api向安全装置发送调用请求。

其中,sdk(软件开发工具包,softwaredevelopmentkit)包含若干经过抽象的应用程序编程接口(applicationprogramminginterface,api),并提供给应用客户端开发者,由应用客户端开发者将该sdk内嵌到应用客户端中。当应用客户端安装并运行在智能操作系统之后,即可调用sdk提供的api与安全装置进行通信,包括向安全装置发送调用请求以获取加密信息,以及接收安全装置反馈的调用请求处理结果。

步骤203.通过系统内核机制识别应用客户端的应用标识,该应用标识与加密服务器确定的应用服务器的应用标识一致。

在应用程序的安装包中,携带有该应用程序的应用标识。安装包中该携带的应用标识的真实性,主要依赖于分发应用程序的应用市场所实施的审查、以及智能操作系统对安装包的校验(如对安装包的数字签名验证机制、对安装包进行的在线完整性校验等)。

当在智能设备中安装应用程序的时侯,会将该应用程序的应用标识进行记录。同样,应用客户端作为安装在智能设备中的一种应用程序,在智能设备中记录有该应用客户端的应用标识。

应用标识的命名,应当是可以唯一地识别应用服务器的标识,例如,应用标识可以是应用服务器域名的反向,如果应用服务器的域名是app.example.com,则应用标识可以命名为com.example.app。当然,应用标识也可以是其他的一个字符串。并且,加密服务器确定的应用服务器的应用标识,与该应用客户端的应用标识是一致的。加密服务器确定应用服务器的应用标识的实施方式,可以以应用服务器向加密服务器进行身份认证的应用账号作为应用服务器的应用标识;也可以通过获取应用服务器的域名作为应用服务器的应用标识,如果应用标识是应用服务器域名的反向,则将获取的域名进行反向以使得与应用客户端的应用标识相一致;还可以在加密服务器上预先保存应用服务器的身份信息与应用标识的对应关系,加密服务器获取应用服务器的身份信息(如获取应用服务器的应用账号、ip或域名等身份信息),然后根据获取的身份信息在该对应关系中查找和获取应用服务器的应用标识。

安全装置识别应用客户端的应用标识的实施方式,为了确保识别的应用标识确实是该应用客户端的应用标识,即为了避免运行在同一智能操作系统上的其他应用客户端仿冒该应用客户端的应用标识,则不能依赖调用请求中携带的应用标识参数以获取应用客户端的应用标识,否则,如果依赖调用请求中携带的应用标识参数以获取应用客户端的应用标识,则其他应用客户端在发送调用请求时,可以将调用请求中应用标识参数的值修改成该应用客户端的应用标识,从而仿冒该应用客户端获取加密信息。

由于在智能操作系统上,系统中运行的进程及本地进程间通信机制由系统内核进行管理和调度,当调用者(即该应用客户端)通过系统本地进程间通信机制向被调用者(即安全装置)发送调用请求时,则安全装置可以根据系统内核机制以识别调用者的身份信息和确定调用者的应用标识,从而使得该识别的应用标识不可仿冒。以此可以理解,本发明实施例中通过系统内核机制识别应用客户端的应用标识,是指基于系统内核层的进程间通信机制以识别应用客户端的应用标识,而非依赖调用请求中携带的应用标识参数以获取应用客户端的应用标识。

第一种实施方式,在android系统中,与应用客户端通过binder方式进行本地进程间通信,获取应用客户端的调用者信息,根据该调用者信息确定应用标识。

binder是android系统中的一种进程间通信(ipc)机制,是android系统中最重要的特性之一。在android系统中,由于采用进程沙箱隔离机制,一个进程不能直接访问另一个进程的内存空间,对于调用者与被调用者的每一次进程间通信,binder机制都通过位于内核空间的binder驱动程序来实现。此外,如intent(跨进程组件间传递带有关联数据的命令)、message(支持跨进程消息通信的对象)以及contentprovider(暴露跨进程数据管理接口的组件)等android系统中更高层次的进程间通信(ipc)抽象,都是基于binder机制实现的。

在android系统中,可以以应用程序的applicationid作为应用标识,也可以以应用程序的包名作为应用标识。applicationid为在配置文件build.gradle中定义的“applicationid”属性,包名为在androidmanifest.xml文件中定义的“package”属性。需要说明的是,为了保持与较早android版本的兼容,如果没有在配置文件build.gradle中定义“applicationid”属性,那么获取的applicationid为在androidmanifest.xml文件中定义的“package”属性。

在android系统中,安全装置与应用客户端通过binder方式进行本地进程间通信,在接收到应用客户端发送的调用请求时,获取应用客户端的调用者信息并且根据该调用者信息确定应用标识,可以包括多种实施方式:

例如,在android系统中,当调用者通过binder方式向被调用者进行通信时,binder驱动会将调用者的进程id(pid)和用户id(uid)自动添加到binder事务处理数据,被调用者可以获取到该调用者的进程id和用户id,更具体地,被调用者通过android.os.binder类的getcallingpid()和getcallinguid()方法来分别获取调用者的进程id和用户id。由于pid和uid均是由位于内核空间的binder驱动来添加的,所以调用者不能伪造该身份标识信息。

由此,安全装置获取应用客户端的调用者信息,即获取应用客户端的进程id或用户id,然后根据该进程id或用户id查找对应的applicationid。例如,获取系统中正在运行的所有进程信息,然后根据该进程id在该所有进程信息中获取对应的applicationid;又例如,根据用户id通过android.content.pm.packagemanager类的getpackagesforuid()方法获取applicationid。

又例如,安全装置以活动(activity)组件在系统中运行,应用客户端通过android.app.activity类的startactivityforresult()方法发送调用请求以获取加密信息,则安全装置通过android.app.activity类的getcallingpackage()方法获取应用客户端的包名;或者安全装置通过android.app.activity类的getcallingactivity()方法获取调用者的活动组件名称,由于活动组件名称中包含包名信息,则安全装置再从该活动组件名称中获取包名。

第二种实施方式,在ios系统中,与应用客户端通过urlscheme进行本地进程间通信,通过uiapplicationdelegate协议中打开url指定资源的方法获取包标识,确定该包标识为应用标识。

在ios系统中,以应用程序定义在plist文件中的bundleidentifier(包标识)作为应用标识。

appdelegate是ios系统中应用程序的根对象,连接应用程序和系统,确保应用程序与系统以及其他应用程序正确的交互,是每个ios系统的核心。uiapplicationdelegate协议声明了管理appdelegate对象的一系列方法。

安全装置与应用客户端通过urlscheme方式进行本地进程间通信,在接收到应用客户端发送的调用请求时,安全装置通过uiapplicationdelegate协议中用于打开url指定资源的方法(即openurl方法)获取包标识。

在ios4.2至9.0系统中,uiapplicationdelegate协议中用于打开url指定资源的方法为“application:openurl:sourceapplication:annotation:”,则安全装置使用“application:openurl:sourceapplication:annotation:”方法调用的sourceapplication参数以获取调用者的包标识,具体如下:

-(bool)application:(uiapplication*)applicationopenurl:(nsurl*)url

sourceapplication:(nsstring*)sourceapplicationannotation:(id)annotation;

在ios9.0以上的系统中,ios系统使用“application:openurl:options:”方法替代“application:openurl:sourceapplication:annotation:”方法用于打开url指定资源,则安全装置使用“application:openurl:options:”方法调用的options参数的uiapplicationopenurloptionssourceapplicationkey键值以获取调用者的包标识,具体如下:

-(bool)application:(uiapplication*)appopenurl:(nsurl*)url

options:(nsdictionary<uiapplicationopenurloptionskey,id>*)options;

步骤204.可选的,确定该应用标识是否为经过授权的应用标识;若是,则执行下述步骤205。

安全装置在通过系统内核机制识别到应用客户端的应用标识之后,确定该应用标识是否为经过授权的应用标识;若是经过授权的,则执行下述步骤205;若否,则不执行下述步骤205及其后续步骤。

确定该应用标识是否为经过授权的应用标识,可以包括两个方面,一是确定该应用标识是否为经过加密服务器授权的应用标识,二是确定该应用标识是否为经过用户授权的应用标识。

安全装置确定该应用标识是否为经过加密服务器授权的应用标识,具体包括:

第三方应用(包括应用客户端和对应的应用服务器)在加密服务器上进行注册等的过程中,加密服务器记录第三方应用的授权状态,即加密服务器对第三方应用的应用标识标记一个是否经过授权的状态;

安全装置与加密服务器通过网络相连接,安全装置将该应用标识发送给加密服务器,由加密服务器确定该应用标识是否为经过授权;

加密服务器根据安全装置发送的该应用标识获取对应的授权状态,如果是经过授权的状态,则向安全装置反馈表示已经授权的信息;如果否,则反馈表示没有授权的信息;

当安全装置接收到表示已经授权的信息时,则确定该应用标识为经过加密服务器授权的应用标识;否则,如果接收到表示没有授权的信息,或者,如果在设定时间内没有接收到加密服务器反馈的信息,则确定该应用标识为没有经过加密服务器授权的应用标识。

实施确定该应用标识是否为经过加密服务器授权的应用标识的好处在于,可以在安全装置生成加密信息之前,确定该应用标识是否为在加密服务器上已经授权过的应用标识,从而可以避免安全装置为无效的应用标识实施生成加密信息的步骤。

安全装置确定该应用标识是否为经过用户授权的应用标识,具体包括:

第三方应用在加密服务器上预先进行注册时,同时注册有第三方应用的应用信息,即建立了第三方应用的应用标识与应用信息的对应关系,该应用信息包括应用名称或/和应用图标或/和应用详情,其中:

应用名称:应用名称是第三方应用在加密服务器上注册的名称,在加密服务器上存储有应用标识与应用名称的对应关系,加密服务器根据应用标识在该对应关系中可以查找和获取到对应的应用名称。

应用图标:应用图标是第三方应用在加密服务器上注册的图标,在加密服务器上存储有应用标识与应用图标的对应关系,加密服务器根据应用标识在该对应关系中可以查找和获取到对应的应用图标。

应用详情:应用详情是第三方应用在加密服务器上注册的对该第三方应用的详细描述,在加密服务器上存储有应用标识与应用详情的对应关系,加密服务器根据应用标识在该对应关系中可以查找和获取到对应的应用详情。

安全装置将该应用标识发送给加密服务器;

加密服务器根据安全装置发送的该应用标识,获取对应的应用信息,并反馈给安全装置;

安全装置接收该对应的应用信息,调用并显示授权界面,以询问用户是否同意授权该第三方应用执行生成加密信息的操作;在显示的授权界面上,显示该应用信息,即显示包括该第三方应用的应用名称或/和应用图标或/和应用详情的信息;可以理解,如果安全装置实施上述确定该应用标识是否为经过加密服务器授权的应用标识,则还可以在加密服务器向安全装置反馈的表示已经授权的信息中包括该对应的应用信息,从而安全装置从该表示已经授权的信息中获取该对应的应用信息;

用户根据显示的授权界面,在该授权界面中输入(包括触发、选择)表示同意或者拒绝的授权信息。相应地,安全装置接收用户在授权界面中输入的授权信息。

安全装置若接收到用户在授权界面上输入的表示同意的授权信息,则确定该应用标识为经过用户授权的应用标识;否则,若接收到用户在授权界面上输入的表示拒绝的授权信息,或者,若在设定时间内没有接收到用户输入的授权信息,则确定该应用标识为没有经过用户授权的应用标识。

需要说明的是,在android系统中,安全装置可以以服务(service)或活动(activity)组件的方式在系统中运行,但如果要调用并显示授权界面,则需以活动组件的方式在系统中运行。

需要说明的是,实施该显示授权界面的实施方式,与背景技术中所述的显示授权界面以提供用户确认授权的过程,在实际作用上的区别在于,在本实施例中,这是一个可选的实施方式,而在背景技术中是一个必须的实施方式;对于用户而言,如背景技术第二方面的问题所述,用户并不能判断出授权界面上显示的应用信息实际上是不是由相应的应用客户端发起的,而在本实施方式中,应用信息是由安全装置根据应用客户端的应用标识向加密服务器获取的,并且由于已经通过系统内核机制识别应用客户端的应用标识以使得应用标识不可仿冒,因此可以确保授权界面上显示的应用信息确实是相应的应用客户端发起的。

步骤205.根据该第一主密钥和该应用标识生成加密信息。

根据获取的该第一主密钥和该应用标识生成加密信息,该生成的加密信息,既可以是应用密钥,也可以是加密之后的加密值,具体包括:

第一种实施方式,根据该第一主密钥和该应用标识生成第一应用密钥,该第一应用密钥即为加密信息,其中,该第一应用密钥的生成方式与加密服务器根据该第二主密钥和应用服务器的应用标识生成第二应用密钥的生成方式一致,以使得该第一应用密钥与该第二应用密钥的值相同。

安全装置根据该第一主密钥和该应用标识生成第一应用密钥。例如,以密钥派生算法公式为例,可以表示为:dk=pbkdf2(passphrase,salt,c,dklen),其中:dk是生成的第一应用密钥,pbkdf2是密钥派生算法,passphrase是包括该第一主密钥和该应用标识而组合拼接的字符串;salt是盐值,在本例中是一个固定字符串;c是迭代次数;dklen是密钥输出长度,可以根据使用的加密算法生成符合要求的密钥长度。

例如,以android系统为例,安全装置可调用secretkeyfactory类中的pbkdf2withhmacsha1密钥派生算法以生成第一应用密钥,具体如下:

secretkeyfactorydk=secretkeyfactory.getinstance("pbkdf2withhmacsha1");

keyspeckeyspec=newpbekeyspec(passphrase,salt,c,dklen);

secretkeysecretkey=dk.generatesecret(keyspec);

在安全装置生成第一应用密钥之后,安全装置将该用户标识和该第一应用密钥传递给应用客户端。应用客户端根据安全装置传递的该用户标识和该第一应用密钥,与对应的应用服务器执行数据加密相关的操作,例如:

应用客户端确定应用服务器的应用标识,并且将该用户标识传递给对应的应用服务器,应用服务器将该用户标识传递给加密服务器;加密服务器根据该用户标识在用户标识与第二主密钥的关联关系中查找到对应的第二主密钥,并且根据该对应的第二主密钥和该应用服务器的应用标识生成第二应用密钥,加密服务器生成第二应用密钥的生成方式与安全装置生成第一应用密钥的生成方式一致,包括密钥派生算法、输入信息、选择的参数都保持一致;由于该用户标识的第二主密钥与该第一主密钥的值是相同的,该应用服务器的应用标识与安全装置生成第一应用密钥时所使用的应用标识是相同的,并且第一应用密钥与第二应用密钥的生成方式是一致的,则生成的第二应用密钥与第一应用密钥的值是相同的。

由此,则加密服务器可以根据该第二应用密钥对应用服务器转发的与该用户标识相关的数据执行数据加密相关的操作;或者,加密服务器也可以将该第二应用密钥发送给应用服务器,以使得应用服务器根据该第二应用密钥与应用客户端之间执行数据加密相关的操作;该数据加密相关的操作包括身份认证、数据加解密、完整性验证等。

第二种实施方式,根据该第一主密钥和该应用标识生成第三应用密钥,根据该第三应用密钥对数据进行加密以生成第一加密值,该生成的第一加密值即为加密信息,其中,该第三应用密钥的生成方式与加密服务器根据该第二主密钥和应用服务器的应用标识生成第四应用密钥的生成方式一致,以使得该第三应用密钥与该第四应用密钥的值相同。

安全装置根据该第一主密钥和该应用标识生成第三应用密钥,并且该第三应用密钥的生成方式与加密服务器根据第二主密钥和应用服务器的应用标识生成第四应用密钥的生成方式一致,以使得该第三应用密钥与该第四应用密钥的值相同。具体还可以参照上述第一种实施方式中生成第一应用密钥的实施方式。

与第二种实施方式不同的是,在安全装置生成第三应用密钥之后,并不将该第三应用密钥传递给应用客户端,而是根据该第三应用密钥对数据进行加密以生成第一加密值。该数据可以是应用客户端在调用请求中所携带的数据,也可以是安全装置生成的数据,在本实施例中并不进行限定。

由于安全装置生成的第三应用密钥与加密服务器生成的第四应用密钥的值是相同的,则根据数据加密相关操作的实际需要,安全装置可以根据第三应用密钥使用对称加密算法或消息认证码算法对数据加密生成加密结果(即生成第一加密值),应用服务器或加密服务器则可以根据第四应用密钥对该第一加密值进行解密或验证。例如:

安全装置根据该第三应用密钥使用对称加密算法或消息认证码算法对数据加密以生成加密结果(即生成第一加密值);以android系统为例,安全装置可调用cipher类中相应的对称加密算法实现对数据的加密以生成第一加密值,或者,安全装置可调用mac类中的消息认证码算法实现对数据的加密以生成第一加密值;

安全装置将用户标识和该第一加密值传递给应用客户端,应用客户端将该用户标识和该第一加密值传递给对应的应用服务器,应用服务器将该用户标识传递给加密服务器;

加密服务器确定应用服务器的应用标识,并且根据该用户标识在用户标识与第二主密钥的关联关系中查找到对应的第二主密钥,并且根据该对应的第二主密钥和该应用服务器的应用标识生成第四应用密钥,加密服务器生成第四应用密钥的生成方式与安全装置生成第三应用密钥的生成方式一致,包括密钥派生算法、输入信息、选择的参数都保持一致;

加密服务器将该第四应用密钥传递给应用服务器,如果该第一加密值是安全装置使用对称加密算法对数据加密生成的,则应用服务器可以根据该第四应用密钥以及使用相同的对称加密算法对该第一加密值进行数据解密;如果该第一加密值是安全装置使用消息认证码算法对数据加密生成的,则应用服务器生成或获取与安全装置生成第一加密值时相同值的数据,根据该第四应用密钥以及使用相同的消息认证码算法、该相同值的数据对该第一加密值进行验证;或者,

应用服务器将该用户标识和该第一加密值传递给加密服务器,加密服务器生成第四应用密钥之后,根据该第四应用密钥对该第一加密值进行数据解密或验证,再将解密或验证后的结果反馈给应用服务器。

第二种实施方式与第一种实施方式的区别在于,第一种实施方式中,安全装置在生成应用密钥之后,将生成的应用密钥传递给应用客户端,由应用客户端基于该生成的应用密钥执行数据加密相关的操作;而在第二种实施方式中,安全装置不仅生成应用密钥,而且还根据该生成的应用密钥执行数据加密相关的操作,将生成的加密值传递给应用客户端。

第三种实施方式,根据该第一主密钥对包括该应用标识的信息加密以生成第二加密值,该生成的第二加密值即为加密信息,在将该用户标识和该第二加密值传递给应用客户端之后,应用客户端通过应用服务器将该用户标识和该第二加密值传递给加密服务器,以使得加密服务器根据该用户标识获取该第二主密钥,再根据该第二主密钥和应用服务器的应用标识验证该第二加密值。

第三种实施方式的具体实施方式包括:

根据该第一主密钥生成第五应用密钥,例如将该第一主密钥作为第五应用密钥,或者根据包括该第一主密钥的信息生成第五应用密钥;

根据该应用标识生成第一验证信息,例如将该应用标识作为第一验证信息,或者根据包括该应用标识的信息生成第一验证信息;

根据该第五应用密钥对该第一验证信息加密生成第二加密值,例如,根据该第五应用密钥使用消息认证码算法对该第一验证信息加密以生成第二加密值;或者,根据该第五应用密钥使用对称加密算法对包括该第一验证信息的信息加密以生成第二加密值;

将该用户标识和该第二加密值传递给应用客户端,再由应用客户端将该用户标识和该第二加密值传递给对应的应用服务器,应用服务器将该用户标识和该第二加密值传递给加密服务器;

加密服务器根据该用户标识在用户标识与第二主密钥的关联关系中查找到对应的第二主密钥,并且根据该对应的第二主密钥生成第六应用密钥,加密服务器生成第六应用密钥的生成方式与安全装置生成第五应用密钥的生成方式一致,包括密钥派生算法、输入信息、选择的参数都保持一致,以使得该第六应用密钥与该第五应用密钥的值相同;

加密服务器确定应用服务器的应用标识,并且根据该应用服务器的应用标识生成第二验证信息,该第二验证信息的生成方式与安全装置生成第一验证信息的生成方式一致,以使得该第二验证信息和该第一验证信息的值相同;

加密服务器根据该第六应用密钥和该第二验证信息验证该第二加密值,例如:如果该第二加密值是安全装置是根据第五应用密钥使用消息认证码算法对第一验证信息加密生成的,则加密服务器根据该第六应用密钥和该第二验证信息使用相同的消息认证码算法验证该第二加密值;即,加密服务器根据该第六应用密钥对该第二验证信息使用相同的消息认证码算法加密生成第三加密值,比较该第三加密值与该第二加密值是否一致,若一致,则确定该第二加密值验证成功;或者,

如果该第二加密值是安全装置根据该第五应用密钥对包括该第一验证信息的信息使用对称加密算法加密生成的,则加密服务器根据该第六应用密钥和该第二验证信息使用相同的对称加密算法验证该第二加密值;即,加密服务器根据该第六应用密钥使用相同的对称加密算法对该第二加密值解密以获得明文,并从该解密获得的明文中获取第一验证信息,比较该第二验证信息与该解密获得的第一验证信息是否一致,若一致,则确定该第二加密值验证成功;

加密服务器在确定第二加密值验证成功之后,向应用服务器反馈表示验证成功的应答消息,或者,加密服务器在确定第二加密值验证失败之后,向应用服务器反馈表示验证失败的应答消息;应用服务器则根据接收的应答消息执行相应的操作。

第三种实施方式与前两种实施方式的主要区别在于:前两种实施方式中,安全装置根据第一主密钥和应用标识生成应用密钥,加密服务器根据第二主密钥和应用标识生成应用密钥;而在第三种实施方式中,安全装置根据第一主密钥生成应用密钥,加密服务器根据第二主密钥生成应用密钥,即在生成应用密钥的信息中并不一定要包括应用标识。由于第三种实施方式中生成应用密钥的信息中并不一定要包括应用标识,这使得生成的应用密钥没有与应用客户端和应用服务器相绑定,因此,根据加密服务器上生成的应用密钥对加密值的验证过程,仅在加密服务器上执行,而不是将应用密钥发送给应用服务器以执行验证过程,从而避免将应用密钥泄露给应用服务器;而在前两种实施方式中,根据加密服务器上生成的应用密钥对数据进行解密或验证的过程,既可以在加密服务器上执行,也可以在应用服务器上执行。

可以理解,如步骤203中所述,本发明实施例是通过系统内核机制识别应用客户端的应用标识,而非依赖调用请求中携带的应用标识参数以获取应用客户端的应用标识,但这并不是限定在调用请求中不可以携带参数,也并不是限定在调用请求中不可以携带应用标识参数。例如,调用请求中可以携带加密算法、加密模式、初始向量、盐值等参数,以作为安全装置生成加密信息的输入值;又例如,在调用请求中携带应用标识参数,则还可以将系统内核机制识别的应用客户端的应用标识与该应用标识参数携带的应用标识进行比较,如果一致,则确定该应用客户端是合法客户端,并执行步骤204及其后续步骤;如果不一致,则确定该应用客户端不是合法客户端,不执行步骤204及其后续步骤。

步骤206.将该用户标识和该加密信息传递给应用客户端,以使得应用客户端根据该用户标识和该加密信息与应用服务器执行数据加密相关的操作。

安全装置根据与应用客户端之间的本地进程间通信机制将该用户标识和该加密信息传递给应用客户端。

例如,以步骤203第一种实施方式为例,在android系统中,如果应用客户端以activity.startactivityforresult()方法向安全装置发送调用请求以获取加密信息,则安全装置通过activity.setresult()方法将该用户标识和生成的该加密信息传递给应用客户端。

又例如,以步骤203第二种实施方式为例,在ios系统中,在应用客户端向安全装置以urlscheme方式发送的调用请求中,在调用地址(即调用url)中的调用参数上附上应用客户端的回调地址,则当安全装置以打开url指定资源的方法获取到该调用地址时,从该调用地址的参数中获取应用客户端的回调地址,然后根据该回调地址将该用户标识和该加密信息传递给应用客户端。

在应用客户端接收到安全装置传递的用户标识和加密信息之后,则可以根据该用户标识和该加密信息与对应的应用服务器执行数据加密相关的操作。应用客户端根据用户标识和加密信息与对应的应用服务器执行数据加密相关操作的实施方式,根据步骤205中生成加密信息的实施方式的不同,应用客户端执行数据加密相关操作的实施方式可以参照上述步骤205中所述的实施方式,在此不再赘述。

还需要说明的是,在实施一次上述步骤201之后,可以多次实施步骤202至步骤206,即安全装置可以基于步骤201中获取的用户标识和第一主密钥,多次为同一应用客户端或不同的应用客户端实施步骤202至步骤205所述的过程,从而可以实现多次向同一应用客户端或不同的应用客户端生成加密信息。

综上所述,本实施例提供的方法,安全装置根据应用客户端的调用请求,通过系统内核机制识别应用客户端的应用标识,然后根据第一主密钥和应用标识生成加密信息,将用户标识和加密信息传递给应用客户端,以使得应用客户端根据该用户标识和加密信息与应用服务器之间执行数据加密相关的操作。相比现有技术,本实施例带来的技术效果至少包括:第一方面,由于安全装置获取应用客户端的应用标识,不是根据应用客户端发送的调用请求中所携带的参数确定的,而是根据系统内核机制确定应用客户端的应用标识,确保该应用标识不可伪造,由此使得根据第一主密钥和应用标识生成的加密信息确实是用于相应的应用客户端的加密信息,从而使得安全装置可以以同一个主密钥为多个不同的应用客户端提供加密信息,且该多个不同的应用客户端之间不可相互仿冒以获取加密信息;第二方面,显示授权界面的实施方式仅是一个可选的实施方式,当不实施显示授权界面的实施方式时,由于不需要用户在授权界面上输入信息以确认是否进行授权,提高了使用的便捷性和增强了用户使用体验,以及适用于不需要用户参与交互的智能设备和应用客户端;第三方面,如果实施显示授权界面的实施方式,可以确保授权界面上显示的应用信息确实是由相应的应用客户端发起的。

四、一种生成加密信息的安全装置实施例一

请参考图3,其示出了本发明提供的一种生成加密信息的安全装置实施例一的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部份。该安全装置可以是运行于智能设备中的软件单元、硬件单元或者软硬件相结合的单元,或者作为独立的组件集成到智能设备或智能操作系统中,或者运行于智能操作系统的应用程序中。本实施例以该安全装置应用于图1所示实施环境中的安全装置来举例说明,该安全装置包括:

获取模块,用于获取用户标识和第一主密钥,并且在所述加密服务器上存储有所述用户标识与第二主密钥的关联关系,所述第二主密钥与所述第一主密钥的值相同;

接收模块,用于通过本地进程间通信接收所述应用客户端的调用请求,所述调用请求用于获取加密信息;

识别模块,用于通过系统内核机制识别所述应用客户端的应用标识,所述应用标识与所述加密服务器确定的所述应用服务器的应用标识一致;

加密模块,用于根据所述第一主密钥和所述应用标识生成加密信息;

传递模块,用于将所述用户标识和所述加密信息传递给所述应用客户端,以使得所述应用客户端根据所述用户标识和所述加密信息与所述应用服务器执行数据加密相关的操作。

优选的,所述获取模块包括:

第一获取单元,用于获取预先存储的所述用户标识和所述第一主密钥;或者,

第二获取单元,用于与所述加密服务器进行密钥协商以获取所述用户标识和所述第一主密钥。

优选的,在android系统中,所述接收模块包括第一接收单元,所述识别模块包括第一识别单元,其中:

所述第一接收单元,用于与所述应用客户端通过binder方式进行所述本地进程间通信以接收所述调用请求;

所述第一识别单元,用于获取所述应用客户端的调用者信息,根据所述调用者信息确定所述应用标识。

优选的,在ios系统中,所述接收模块包括第二接收单元,所述识别模块包括第二识别单元,其中:

所述第二接收单元,用于与所述应用客户端通过urlscheme进行所述本地进程间通信以接收所述调用请求;

所述第二识别单元,用于通过uiapplicationdelegate协议中打开url指定资源的方法获取包标识,所述包标识为所述应用标识。

优选的,所述第一识别单元包括:

第一识别子单元一,用于通过binder.getcallingpid()方法获取所述调用者的进程id,根据所述进程id获取所述调用者的applicationid,所述applicationid为所述应用标识;或者,

第一识别子单元二,用于通过binder.getcallinguid()方法获取所述调用者的用户id,根据所述用户id通过getpackagesforuid()方法获取所述调用者的applicationid,所述applicationid为所述应用标识;或者,

第一识别子单元三,用于通过activity.getcallingpackage()方法获取所述调用者的包名,所述包名为所述应用标识;或者,

第一识别子单元四,用于通过activity.getcallingactivity()方法获取所述调用者的活动组件名称,从所述活动组件名称中获取所述调用者的包名,所述包名为所述应用标识。

优选的,所述加密模块包括:

第一加密单元,用于根据所述第一主密钥和所述应用标识生成第一应用密钥,所述第一应用密钥为所述加密信息,其中,所述第一应用密钥的生成方式与所述加密服务器根据所述第二主密钥和所述应用服务器的应用标识生成第二应用密钥的生成方式一致,以使得所述第一应用密钥与所述第二应用密钥的值相同;或者,

第二加密单元,用于根据所述第一主密钥和所述应用标识生成第三应用密钥,根据所述第三应用密钥对数据进行加密以生成第一加密值,所述第一加密值为所述加密信息,其中,所述第三应用密钥的生成方式与所述加密服务器根据所述第二主密钥和所述应用服务器的应用标识生成第四应用密钥的生成方式一致,以使得所述第三应用密钥与所述第四应用密钥的值相同;或者,

第三加密单元,用于根据所述第一主密钥对包括所述应用标识的信息加密以生成第二加密值,所述第二加密值为所述加密信息,在将所述用户标识和所述第二加密值传递给所述应用客户端之后,所述应用客户端通过所述应用服务器将所述用户标识和所述第二加密值传递给所述加密服务器,以使得所述加密服务器根据所述用户标识获取所述第二主密钥,再根据所述第二主密钥和所述应用服务器的应用标识验证所述第二加密值。

优选的,所述第三加密单元包括:

应用密钥生成子单元,用于根据所述第一主密钥生成第五应用密钥,其中,所述第五应用密钥的生成方式与所述加密服务器根据所述第二主密钥生成第六应用密钥的生成方式一致,以使得所述第五应用密钥与所述第六应用密钥的值相同;

验证信息生成子单元,用于根据所述应用标识生成第一验证信息,其中,所述第一验证信息的生成方式与所述加密服务器生成第二验证信息的生成方式一致,以使得所述第一验证信息与所述第二验证信息的值相同;

加密信息生成子单元,用于根据所述第五应用密钥对所述第一验证信息加密生成所述第二加密值。

五、一种生成加密信息的安全装置实施例二

请参考图4,其示出了本发明提供的一种生成加密信息的安全装置实施例二的结构示意图。该安全装置在上述一种生成加密信息的安全装置实施例一提供的装置上,还包括授权模块,所述授权模块用于确定所述应用标识是否为经过授权的应用标识;若是,则执行所述加密模块;若否,则不执行所述加密模块。

优选的,所述授权模块包括:

服务授权单元,用于确定所述应用标识是否为经过所述加密服务器授权的应用标识;或/和,

用户授权单元,用于确定所述应用标识是否为经过用户授权的应用标识。

优选的,所述服务授权单元包括:

服务标识发送子单元,用于将所述应用标识发送给所述加密服务器,以使得所述加密服务器确定所述应用标识是否为经过授权的应用标识;

服务授权接收子单元,用于接收所述加密服务器反馈的信息;

服务授权确认子单元,用于根据所述反馈的信息确认所述应用标识是否为经过授权;若所述反馈的信息为表示已经授权的信息,则确定所述应用标识为经过授权;否则,则确定所述应用标识没有经过授权。

优选的,所述用户授权单元包括:

应用标识发送子单元,用于将所述应用标识发送给所述加密服务器;

应用信息接收子单元,用于接收所述加密服务器反馈的应用信息,所述应用信息是所述加密服务器根据所述应用标识获取的;

授权界面显示子单元,用于显示授权界面,在所述授权界面上显示所述应用信息;其中,所述表示已经授权的信息中还包括应用信息,所述应用信息是所述加密服务器根据所述应用标识获取的,所述应用信息包括应用名称或/和应用图标或/和应用详情;

用户授权接收子单元,用于接收用户在所述授权界面中输入的授权信息;

用户授权确定子单元,用于当所述授权信息是表示同意的授权信息时,则确定所述应用标识为经过授权;否则,则确定所述应用标识没有经过授权。

上述一种生成加密信息的安全装置实施例一和实施例二提供的装置与上述一种生成加密信息的方法实施例中的实施方法属于同一构思,其具体实现原理和效果可详见方法实施例,在此不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”、“传递”、“发送”或者任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者系统不仅包括那些要素,而且还可以包括没有明确列出的其他要素,或者是还可以包括为这种过程、方法、产品或者系统所固有的要素。

术语“第一”、“第二”、“第三”等(如果存在)仅用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解,这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

可以以许多方式来实现本发明的方法、装置和智能设备。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法、装置和智能设备。用于方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1