掌桥专利:专业的专利平台
掌桥专利
首页

用于数据安全访问的密钥管理方法以及数据访问方法

文献发布时间:2024-04-18 20:01:23


用于数据安全访问的密钥管理方法以及数据访问方法

技术领域

本申请涉及数据安全领域,特别涉及一种用于数据安全访问的密钥管理方法、一种数据访问方法、一种客户端、一种服务器以及一种数据存储系统。

背景技术

客户端可以对服务器发起数据访问,以将该客户端关联的用户账户的数据存入至存储设备中、以及将存储设备中为该客户端关联的用户账户存储的数据取出。

为了确保数据在存储期间内的安全性、以及在客户端与服务器之间传输过程中的安全性,可以由客户端以归属于关联的用户账户的账户私有识别码为数据密钥,对存入存储设备之前的数据加密、以及对从存储设备取出的加密数据解密,以使得数据在存储期间内、以及在客户端与服务器之间的传输过程中都处于加密状态。

由于用户账户的账户私有识别码具有私密性,因此,数据的加解密的权限完全由账户私有识别码的拥有者掌控。然而,对于任意用户账户而言,若其账户私有识别码因某些原因丧失了私密性,则,为了确保该用户账户的数据的安全性,需要变更该用户账户的账户私有识别码,此时,需要将存储设备中为该用户账户存储的加密数据全部取出、并利用原有账户私有识别码解密,再利用新的账户私有识别码重新加密后再存入存储设备、并覆盖存储设备中利用原有账户私有识别码加密存储的数据。

也就是,账户私有识别码的更新会引发客户端与服务器之间的大规模数据访问、客户端对数据的重新加密、以及加密数据在存储设备的覆盖更新,因此,账户私有识别码的每次更新都会对存储系统产生较大的系统负担。

可见,如何在兼顾数据安全的前提下,降低由于账户私有识别码的更新所引发的系统负担,成为现有技术中有待解决的技术问题。

发明内容

有鉴于此,本申请旨在降低由于账户私有识别码的更新所引发的系统负担、并同时兼顾数据安全。

在一个实施例中,提供一种用于数据安全访问的密钥管理方法,所述密钥管理方法应用于客户端、并且包括:

利用本地获取到的当前用户账户的账户私有识别码、以及分配给所述当前用户账户的隐藏数据密钥,生成伪装数据密钥,所述隐藏数据密钥和所述伪装数据密钥在所述客户端非持久化存储;

将所述伪装数据密钥发送至服务器持久化存储;

其中,在所述服务器中持久化存储的所述伪装数据密钥用于响应于所述客户端对所述隐藏数据密钥的使用需求而被提供至所述客户端,以供所述客户端利用所述账户私有识别码和所述伪装数据密钥还原得到所述隐藏数据密钥;

并且,所述隐藏数据密钥被所述客户端的使用包括:利用还原得到的所述隐藏数据密钥实现对所述当前用户账户的关联数据容器的数据访问,以及,响应于所述账户私有识别码的更新,利用更新后的所述账户私有识别码以及还原得到的所述隐藏数据密钥更新被持久化存储的所述伪装数据密钥。

在一些示例中,可选地,所述密钥管理方法进一步包括:响应于所述当前用户账户用于创建所述关联数据容器的容器创建请求,向所述服务器发送所述容器创建请求、并为所述当前用户账户生成用作所述隐藏数据密钥的随机密钥。

在一些示例中,可选地,所述密钥管理方法进一步包括:获取所述服务器为成功创建所述关联数据容器的所述当前用户账户分配的数据访问种子,所述数据访问种子在所述客户端非持久化存储;所述利用本地获取到的当前用户账户的账户私有识别码、以及分配给所述当前用户账户的隐藏数据密钥,生成伪装数据密钥,包括:利用所述账户私有识别码、所述隐藏数据密钥以及所述数据访问种子,生成所述伪装数据密钥;所述将所述伪装数据密钥发送至服务器存储,包括:将所述伪装数据密钥发送至服务器与所述数据访问种子彼此关联地持久化存储;并且,对所述隐藏数据密钥的还原进一步利用所述数据访问种子。

在一些示例中,可选地,所述利用所述账户私有识别码、所述隐藏数据密钥以及所述数据访问种子,生成所述伪装数据密钥,包括:利用对所述数据访问种子和所述账户私有识别码的信息提取,得到账户访问密钥;以及,利用所述账户访问密钥对所述隐藏数据密钥加密,得到所述伪装数据密钥;其中,所述账户访问密钥在所述客户端非持久化存储;并且,对所述隐藏数据密钥的还原包括:利用对所述数据访问种子和所述账户私有识别码的信息提取,得到账户访问密钥;以及,利用所述账户访问密钥对所述伪装数据密钥解密,还原得到所述隐藏数据密钥。

在一些示例中,可选地,所述密钥管理方法进一步包括:利用对所述账户访问密钥的信息提取,得到账户访问码;将所述账户访问码发送至所述服务器,以被所述服务器作为访问校验码、并与所述数据访问种子和所述伪装数据密钥彼此关联地持久化存储;其中,所述账户访问码在所述客户端非持久化存储,响应于所述客户端向所述服务器每一次发起的对所述关联数据容器的数据访问,或,响应于所述客户端对持久化存储在所述服务器的所述伪装数据密钥发起的密钥更新,所述账户访问码在所述客户端基于本地获取到的所述账户私有识别码被再次生成,再次生成的所述账户访问码用于被发送至所述服务器,以使得所述服务器利用所述客户端在请求发起所述数据访问或所述密钥更新时再次生成的所述账户访问码、以及持久化存储的所述访问校验码的一致性比对结果,实现对所述数据访问或所述密钥更新的权限校验,和/或,利用所述访问校验码与再次生成所述账户访问码的所述客户端协同实现对所述数据访问的防重放过滤;并且,所述服务器中持久化存储的所述访问校验码响应于所述账户私有识别码的每一次更新而与所述伪装数据密钥一起被关联更新,所述访问校验码被关联更新的过程包括:利用所述服务器提供的所述数据访问种子、以及更新后的所述账户私有识别码重新生成所述账户访问密钥,重新生成的所述账户访问密钥用于生成所述伪装数据密钥的数据密钥更新信息,所述数据密钥更新信息用于更新所述服务器中持久化存储的所述伪装数据密钥,并且,响应于对所述密钥更新的权限校验的校验成功,将所述服务器中持久化存储的所述访问校验码,更新为利用对重新生成的所述账户访问密钥进行信息提取得到的访问码更新信息,对重新生成的所述账户访问密钥进行信息提取得到所述访问码更新信息时的提取规则,与,对所述账户访问密钥得到所述账户访问码时的提取规则相同。

在另一个实施例中,提供一种用于数据安全访问的密钥管理方法,所述密钥管理方法应用于服务器、并且包括:

为客户端的当前用户账户创建关联数据容器,所述客户端被配置为利用所述当前用户账户的账户私有识别码、以及分配给所述当前用户账户的隐藏数据密钥,生成伪装数据密钥,所述伪装数据密钥和所述隐藏数据密钥在所述客户端非持久化存储;

将所述客户端提供的所述当前用户账户的所述伪装数据密钥持久化存储;

其中,持久化存储的所述伪装数据密钥用于响应于所述客户端对所述隐藏数据密钥的使用需求而被提供至所述客户端,以供所述客户端利用所述账户私有识别码和所述伪装数据密钥还原得到所述隐藏数据密钥;

并且,所述隐藏数据密钥被所述客户端的使用包括:利用还原得到的所述隐藏数据密钥实现对所述当前用户账户的关联数据容器的数据访问,以及,响应于所述账户私有识别码的更新,利用更新后的所述账户私有识别码以及还原得到的所述隐藏数据密钥更新被持久化存储的所述伪装数据密钥。

在一些示例中,可选地,所述密钥管理方法进一步包括:响应于对所述关联数据容器的成功创建,向所述客户端提供为成功创建所述关联数据容器的所述当前用户账户分配的数据访问种子,以供所述客户端在生成所述伪装数据密钥时进一步使用所述数据访问种子,所述数据访问种子在所述客户端非持久化存储;所述将所述客户端提供的所述当前用户账户的所述伪装数据密钥持久化存储,包括:将所述伪装数据密钥与所述数据访问种子彼此关联地持久化存储;对所述隐藏数据密钥的还原进一步利用所述数据访问种子。

在一些示例中,可选地,所述客户端被配置为:利用对所述数据访问种子和所述账户私有识别码的信息提取,得到账户访问密钥,所述账户访问密钥在所述客户端非持久化存储;利用所述账户访问密钥对所述隐藏数据密钥加密,得到所述伪装数据密钥;以及,利用对所述账户访问密钥的信息提取,得到账户访问码;所述密钥管理方法进一步包括:将所述客户端提供的所述账户访问码作为访问校验码,与所述数据访问种子和所述伪装数据密钥彼此关联地持久化存储;其中,所述账户访问码在所述客户端非持久化存储,响应于所述客户端向所述服务器每一次发起的对所述关联数据容器的数据访问,或,响应于所述客户端对持久化存储在所述服务器的所述伪装数据密钥发起的密钥更新,所述账户访问码在所述客户端基于本地获取到的所述账户私有识别码被再次生成;并且,所述密钥管理方法还包括:利用所述客户端在请求发起所述数据访问或所述密钥更新时再次生成的所述账户访问码、以及持久化存储的所述访问校验码之间的一致性比对结果,实现对所述数据访问或所述密钥更新的权限校验,和/或,利用所述访问校验码与再次生成所述账户访问码的所述客户端协同实现对所述数据访问的防重放过滤;以及,持久化存储的所述访问校验码响应于所述账户私有识别码的每一次更新,而与所述伪装数据密钥一起被所述客户端关联更新,所述客户端进一步被配置为以如下方式实现所述关联更新:利用所述服务器提供的所述数据访问种子、以及更新后的所述账户私有识别码重新生成所述账户访问密钥,重新生成的所述账户访问密钥用于生成所述伪装数据密钥的数据密钥更新信息,所述数据密钥更新信息用于更新所述服务器中持久化存储的所述伪装数据密钥,并且,将所述服务器中持久化存储的所述访问校验码,更新为利用对重新生成的所述账户访问密钥进行信息提取得到的所述账户访问码的访问码更新信息,对重新生成的所述账户访问密钥进行信息提取得到所述访问码更新信息时的提取规则,与,对所述账户访问密钥得到所述账户访问码时的提取规则相同。

在另一个实施例中,提供一种数据访问方法,所述数据访问方法应用于客户端、并且包括:

向服务器发起对当前用户账户的关联数据容器的访问请求;

获取所述服务器响应于所述访问请求提供的伪装数据密钥,所述伪装数据密钥在所述服务器持久化存储;

利用所述服务器提供的所述伪装数据密钥、以及本地获取的所述当前用户账户的账户私有识别码,还原得到所述客户端在发起所述访问请求之前分配给所述当前用户账户的隐藏数据密钥;

利用还原得到的所述隐藏数据密钥,实现对所述关联数据容器的数据访问;

其中,所述伪装数据密钥和所述隐藏数据密钥在所述客户端非持久化存储。

在一些示例中,可选地,所述数据访问方法进一步包括:获取所述服务器响应于所述访问请求提供的数据访问种子,所述数据访问种子和所述伪装数据密钥在所述服务器彼此关联地持久化存储,并且,所述数据访问种子在所述客户端非持久化存储;所述利用所述服务器提供的所述伪装数据密钥、以及本地获取的所述当前用户账户的账户私有识别码,还原得到所述当前用户账户的隐藏数据密钥,包括:利用所述服务器提供的所述伪装数据密钥和所述数据访问种子、以及本地获取的所述账户私有识别码,还原得到所述隐藏数据密钥。

在一些示例中,可选地,所述利用所述服务器提供的所述伪装数据密钥和所述数据访问种子、以及本地获取的所述账户私有识别码,还原得到所述隐藏数据密钥,包括:利用对所述数据访问种子和所述账户私有识别码的信息提取,得到账户访问密钥;利用所述账户访问密钥对所述伪装数据密钥解密,还原得到所述隐藏数据密钥;其中,所述账户访问密钥在所述客户端非持久化存储。

在一些示例中,可选地,所述服务器中持久化存储有访问校验码,并且,所述访问校验码在所述服务器中与所述数据访问种子和所述伪装数据密钥彼此关联地持久化存储;所述数据访问方法进一步包括:对发起所述访问请求时基于所述账户私有识别码再次生成的所述账户访问密钥进行信息提取,得到账户访问码、并将所述账户访问码携带至所述访问请求中,以促使所述服务器利用所述访问请求中携带的所述账户访问码、以及持久化存储的所述访问校验码的一致性比对结果,实现对所述数据访问的权限校验;其中,对所述关联数据容器的所述数据访问是在所述权限校验成功之后被使能的;并且,所述服务器中持久化存储的所述访问校验码响应于所述账户私有识别码的每一次更新而与所述伪装数据密钥一起被关联更新,所述访问校验码被关联更新的过程包括:利用所述服务器提供的所述数据访问种子、以及更新后的所述账户私有识别码重新生成所述账户访问密钥,重新生成的所述账户访问密钥用于生成所述伪装数据密钥的数据密钥更新信息,所述数据密钥更新信息用于更新所述服务器中持久化存储的所述伪装数据密钥,并且,响应于对所述密钥更新的权限校验的校验成功,将所述服务器中持久化存储的所述访问校验码,更新为利用对重新生成的所述账户访问密钥进行信息提取得到的访问码更新信息,对重新生成的所述账户访问密钥进行信息提取得到所述访问码更新信息时的提取规则,与,对所述账户访问密钥得到所述账户访问码时的提取规则相同。

在一些示例中,可选地,所述数据访问方法进一步包括:获取所述服务器响应于所述访问请求而与所述数据访问种子和所述伪装数据密钥一起提供的一次性临时码,所述服务器被配置为利用预设信息提取规则,通过对所述访问校验码和所述一次性临时码的信息提取而得到动态访问验证码,其中,所述一次性临时码在所述服务器的生命周期,响应于所述动态访问验证码的一次生成而结束,并且,所述动态访问验证码响应于所述数据访问的结束而基于重新生成的所述一次性临时码更新;利用所述预设信息提取规则对所述一次性临时码以及发起所述访问请求时得到的所述账户访问码进行信息提取,得到用于标识所述访问请求的配对访问验证码;将生成的所述配对访问验证码与发送至所述服务器,以促使所述服务器根据所述配对访问验证码与所述动态访问验证码之间的一致性判定结果,对所述数据访问进行防重放过滤。

在另一个实施例中,提供一种数据访问方法,所述数据访问方法应用于服务器、并且包括:

响应于客户端对当前用户账户的关联数据容器发起的访问请求,查询持久化存储的伪装数据密钥;

向所述客户端提供查询到的所述伪装数据密钥,以促使所述客户端利用所述伪装数据密钥、以及本地获取的所述当前用户账户的账户私有识别码,还原得到在发起所述访问请求之前分配给所述当前用户账户的隐藏数据密钥、并利用还原得到的所述隐藏数据密钥实现对所述关联数据容器的数据访问;

其中,所述伪装数据密钥和所述隐藏数据密钥在所述客户端非持久化存储。

在一些示例中,可选地,所述数据访问方法进一步包括:响应于所述访问请求,查询与所述伪装数据密钥彼此关联地持久化存储的数据访问种子;将查询到的所述数据访问种子与所述伪装数据密钥一起提供至所述客户端,以供所述客户端在生成所述伪装数据密钥时进一步使用所述数据访问种子;其中,所述数据访问种子在所述客户端非持久化存储,并且,所述客户端对所述隐藏数据密钥的还原进一步使用所述数据访问种子和所述伪装数据密钥。

在一些示例中,可选地,所述服务器中持久化存储有访问校验码,并且,所述访问校验码在所述服务器中与所述数据访问种子和所述伪装数据密钥彼此关联地持久化存储;所述数据访问方法进一步包括:获取所述访问请求中携带的账户访问码,所述账户访问码是由所述客户端对发起所述访问请求时基于所述账户私有识别码再次生成的所述账户访问密钥进行信息提取得到的;利用所述访问请求中携带的所述账户访问码、以及持久化存储的所述访问校验码的一致性比对结果,实现对所述数据访问的权限校验;其中,对所述关联数据容器的所述数据访问是在所述权限校验成功之后被使能的;并且,所述服务器中持久化存储的所述访问校验码响应于所述账户私有识别码的每一次更新而与所述伪装数据密钥一起被关联更新,所述访问校验码被关联更新的过程包括:利用所述服务器提供的所述数据访问种子、以及更新后的所述账户私有识别码重新生成所述账户访问密钥,重新生成的所述账户访问密钥用于生成所述伪装数据密钥的数据密钥更新信息,所述数据密钥更新信息用于更新所述服务器中持久化存储的所述伪装数据密钥,并且,响应于对所述密钥更新的权限校验的校验成功,将所述服务器中持久化存储的所述访问校验码,更新为利用对重新生成的所述账户访问密钥进行信息提取得到的访问码更新信息,对重新生成的所述账户访问密钥进行信息提取得到所述访问码更新信息时的提取规则,与,对所述账户访问密钥得到所述账户访问码时的提取规则相同。

在一些示例中,可选地,所述数据访问方法进一步包括:响应于所述访问请求,利用预设信息提取规则对所述访问校验码和所述一次性临时码的信息提取,得到用于标识所述访问请求的动态访问验证码,并且,将生命周期内尚未结束的所述一次性临时码与所述数据访问种子和所述伪装数据密钥一起提供至所述客户端,以促使所述客户端利用所述预设信息提取规则对所述账户访问码和所述一次性临码的信息提取得到配对访问验证码,其中,所述一次性临时码在所述服务器的生命周期,响应于所述动态访问验证码的一次生成而结束,所述动态访问验证码响应于所述数据访问的结束而基于重新生成的所述一次性临时码更新,并且,所述客户端得到所述配对访问验证码时使用的所述账户访问码,是由所述客户端对发起所述访问请求时基于所述账户私有识别码再次生成的所述账户访问密钥进行信息提取得到的;根据所述动态访问验证码、以及从所述客户端获取到的所述配对访问验证码之间的一致性判定结果,对所述数据访问进行防重放过滤。

在另一个实施例中,提供一种客户端,包括第一处理器、用于与服务器通信的第一通信组件、用于输入账户私有识别码的信息输入组件、以及用于非持久化存储的内存,所述第一处理器用于执行如前述实施例所述应用于述客户端的密钥管理方法和数据访问方法。

在另一个实施例中,提供一种服务器,包括第二处理器、用于与客户端通信的第二通信组件、以及用于持久化存储的物理磁盘,所述第二处理器用于执行如前述实施例所述应用于服务器的密钥管理方法和数据访问方法。

在另一个实施例中,提供一种数据存储系统,包括:前述实施例中的客户端和服务器;以及,存储设备,所述存储设备用于部署与任意用户账户的所述关联数据容器。

在另一个实施例中,提供一种非瞬时计算机可读存储介质,该非瞬时计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行:如前述实施例所述应用于述客户端的密钥管理方法和数据访问方法;或者,如前述实施例所述应用于服务器的密钥管理方法和数据访问方法。

基于上述实施例,任意用户账户通过客户端对关联数据容器的数据访问,可以使用客户端为该用户账户分配的隐藏数据密钥。其中,隐藏数据密钥在客户端非持久化存储,以降低隐藏数据密钥在客户端被窃取的风险;并且,利用隐藏数据密钥、以及由用户账户的所有者保管的账户私有识别码生成的伪装数据密钥,可以作为该隐藏数据密钥的替代者持久化存储在服务器中,只要客户端能够获取到用户账户的账户私有识别码,就可以借助从服务器获取到的伪装数据密钥还原得到需要使用的隐藏数据密钥、并且利用隐藏数据密钥为数据提供安全保护。而且,当用户账户的账户私有识别码更新时,只需变更作为隐藏数据密钥的替代者而被持久化存储在服务器中的伪装数据密钥,而无需对该用户账户的所有加密数据进行解密后的再次加密,从而在兼顾数据安全的前提下,降低由于账户私有识别码的更新所引发的系统负担。

附图说明

以下附图仅对本申请做示意性说明和解释,并不限定本申请的范围:

图1为本申请的一个实施例中的数据安全访问机制的原理图;

图2为本申请实施例在客户端侧基于如图1所示原理的密钥管理方法的示例性流程示意图;

图3为本申请实施例在服务器侧基于如图1所示原理的密钥管理方法的示例性流程示意图;

图4为本申请实施例在客户端侧基于如图1所示原理的数据访问方法的示例性流程示意图;

图5为本申请实施例在服务器侧基于如图1所示原理的数据访问方法的示例性流程示意图;

图6为本申请实施例中如图1所示的数据安全访问机制采用双边参数的优化原理图;

图7为本申请实施例在客户端侧基于如图6所示优化原理的密钥管理方法的示例性流程示意图;

图8为本申请实施例在服务器侧基于如图6所示优化原理的密钥管理方法的示例性流程示意图;

图9为本申请实施例在客户端侧基于如图6所示优化原理的数据访问方法的示例性流程示意图;

图10为本申请实施例在服务器侧基于如图6所示优化原理的数据访问方法的示例性流程示意图;

图11为本申请实施例在数据访问过程中引入权限校验机制的优化原理示意图

图12为本申请实施例在数据访问过程中引入防重放机制的优化原理示意图;

图13为本申请实施例中的一种客户端的示例性结构示意图;

图14为本申请实施例中的一种服务器的示例性结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本申请作进一步详细说明。

图1为本申请的一个实施例中的数据安全访问机制的原理图。请参见图1,在本申请的实施例中,用于数据安全访问的参数包括账户私有识别码90、隐藏数据密钥91以及伪装数据密钥93。

在本申请的实施例中,在诸如PC(Personal Computer,个人电脑)等计算机设备或移动终端等客户端10登录的任意一个用户账户都可以具有设定的账户私有识别码90,其中,每个用户账户的账户私有识别码90可以看作是该用户账户在发起数据访问时供客户端10识别的身份标识,因此,账户私有识别码90可以采用PIN(Personal IdentificationNumber,个人识别码)的形态。而且,任意用户账户的账户私有识别码90可以允许被设定为与用于服务器20对该用户账户进行身份认证时所需的验证密码相同,优选地,任意用户账户的账户私有识别码90可以设定为与该用户账户的验证密码不同。

任意用户账户的账户私有识别码90仅由该用户账户的所有者保管、并可以由保管者提供给客户端10,例如,用户私有密钥90可以通过客户端10的人机交互组件以输入信息的方式提供给客户端10,或者,用户私有密钥90也可以通过存储在诸如加密狗等热插拔装置中、并通过客户端10的热插拔接口传输给客户端10。而且,任意用户账户的账户私有识别码90可以在客户端10非持久化存储,或者,账户私有识别码90也可以允许在客户端10持久化存储(例如以加密状态在在客户端10持久化存储),但是,客户端10被禁止将账户私有识别码90提供给服务器20。

在本申请的实施例中,“非持久化存储”是指被存储的对象仅被保存到诸如RAM(Random-Access Memory,随机存取存储器)等易失性存储介质(例如客户端10的内存)中,而不会被保存到诸如Flash或磁盘等非易失性存储介质中,因此,非持久化存储的任何信息在本地被使用后会自动丢弃。与之相反的,“持久化存储”是指被存储的对象被保存到诸如Flash或磁盘等非易失性存储介质中,即,持久化存储的任何信息只能响应于删除操作等具有丢弃意图的操作、或由于硬件损坏等客观原因而丢失。

在本申请的实施例中,服务器20可以为每个用户账户(例如经过身份认证的每个用户账户)创建关联的数据容器,与每个用户账户关联的数据容器用于存储该用户账户的加密数据,并且,每个用户账户的加密数据都是由客户端10分配给该用户账户的隐藏数据密钥91加密得到的,相应地,每个用户账户的加密数据也可以由客户端10分配给该用户账户的隐藏数据密钥91解密。也就是,隐藏数据密钥91用于对数据加密,以保证数据内容不被泄露,因此,隐藏数据密钥91也可以被认为是内容密钥(Content Key)。

任意用户账户的隐藏数据密钥91可以由客户端10在向服务器20请求为该用户账户创建关联的数据容器时产生,例如,客户端10在向服务器20请求为该用户账户创建关联的数据容器时,可以产生随机密钥作为分配给该用户账户的隐藏数据密钥91,并且,隐藏数据密钥91在客户端10非持久化存储。

也就是说,隐藏数据密钥91在图1中示出的密钥初始化阶段S_INIT由客户端10生成,然后就会被客户端10自动丢弃,但是,客户端10在图1中示出的每一次的密钥使用阶段S_U都需要再次获得(即还原)曾被自动丢弃的隐藏数据密钥91。

为了确保客户端10在需要使用任意用户账户的隐藏数据密钥91时能够得到该用户账户的隐藏数据密钥91,在本申请的实施例中,可以利用由客户端10生成的伪装数据密钥93作为隐藏数据密钥91的替代者持久化存储在服务器20,例如持久化存储在服务器20中的伪装数据密钥93可以以所属的用户账户的账户明文标识(诸如账户名称等账户唯一标识)为索引,以使得客户端10能够借助持久化存储在服务器20的伪装数据密钥93还原出需要使用的隐藏数据密钥91,并且,伪装数据密钥93在客户端10同样也是非持久化存储。也就是,相比于不可见的隐藏数据密钥91,伪装数据密钥93是可见、但非真实的“内容密钥”,因此,伪装数据密钥93可以认为是影子内容密钥(Shadow Content Key)。

对于任意用户账户,在图1中示出的密钥初始化阶段S_INIT,客户端10可以利用该用户账户的账户私有识别码90、以及客户端10为该用户账户分配的隐藏数据密钥91,生成用于替代该用户账户的隐藏数据密钥91而被持久化存储在服务器20的伪装数据密钥93,并且,在客户端10非持久化存储的隐藏数据密钥91和伪装数据密钥93可以在客户端10中的生命周期结束后被客户端10删除丢弃,例如,客户端10可以响应于伪装数据密钥93向服务器20的成功发送,而删除丢弃非持久化存储的隐藏数据密钥91和伪装数据密钥93。

对于任意用户账户,在图1中示出的密钥使用阶段S_ACC和S_UPDT,客户端10可以从服务器20获取为该用户账户在服务器20持久化存储的伪装数据密钥93,此时,只要客户端10还能够获取到该用户账户的账户私有识别码90,则,客户端10可以利用获取到的该用户账户的账户私有识别码90和伪装数据密钥93还原得到该用户账户的隐藏数据密钥91(即利用账户私有识别码90和隐藏数据密钥91生成伪装数据密钥93的处理算法的逆运算),并且,客户端10可以响应于隐藏数据密钥91的成功还原而删除丢弃非持久化存储的伪装数据密钥93、以及响应于对还原的隐藏数据密钥91的使用完成而删除丢弃还原后仍保持非持久化存储的该隐藏数据密钥91。

在本申请的实施例中,客户端10对隐藏数据密钥91的使用可以包括:利用还原得到的隐藏数据密钥91实现对用户账户的关联数据容器的数据访问,即,图1中示出的用于数据访问的密钥使用阶段S_ACC。

例如,客户端10可以向服务器20发起用户账户对关联数据容器存入数据的数据存入请求,此时,客户端10利用还原得到的隐藏数据密钥91对用户账户的关联数据容器的数据访问可以包括:利用该用户账户的隐藏数据密钥91对该用户账户待存入至关联数据容器的数据加密,并且,将加密数据发送至服务器20,以被服务器20存储在该用户账户的关联数据容器中。

再例如,客户端10可以向服务器20发起用户账户从关联数据容器取出数据的数据取出请求,此时,客户端10利用还原得到的隐藏数据密钥91对用户账户的关联数据容器的数据访问可以包括:获取服务器20提供的该用户账户的关联数据容器中的指定加密数据,并且,利用该用户账户的隐藏数据密钥91对获取到的指定加密数据解密。

基于上述实施例,任意用户账户通过客户端10对关联数据容器的数据访问,可以使用客户端10为该用户账户分配的隐藏数据密钥91。其中,隐藏数据密钥91在客户端10非持久化存储,以降低隐藏数据密钥91在客户端10被窃取的风险;并且,利用隐藏数据密钥91、以及由用户账户的所有者保管的账户私有识别码90生成的伪装数据密钥93,可以作为该隐藏数据密钥91的替代者持久化存储在服务器20中,只要客户端10能够获取到用户账户的账户私有识别码90,就可以借助从服务器20获取到的伪装数据密钥93还原得到需要使用的隐藏数据密钥91、并且利用隐藏数据密钥91为数据提供安全保护。

在本申请的实施例中,客户端10对隐藏数据密钥91的使用还可以包括:响应于任意用户账户的账户私有识别码90的更新,利用更新后的账户私有识别码90’、以及还原得到的隐藏数据密钥91更新被持久化存储在服务器20中的伪装数据密钥93,即,图1中示出的用于密钥更新的密钥使用阶段S_UPDT,此处所述的密钥更新是指客户端10由于账户私有识别码90的更新而对持久化存储在服务器20的伪装数据密钥93发起的密钥更新。

例如,客户端10可以响应于任意用户账户的账户私有识别码90的更新,获取在服务器20为该用户账户持久化存储的伪装数据密钥93;利用从服务器20获取到的伪装数据密钥93、以及该用户账户更新前的账户私有识别码90还原得到该用户账户的隐藏数据密钥91;利用该用户账户更新后的账户私有识别码90’、以及还原得到的该用户账户的隐藏数据密钥91,重新生成该用户账户更新后的伪装数据密钥93’;以及,将该用户账户更新后的伪装数据密钥93’作为数据密钥更新信息发送至服务器20,以促使服务器20将为该用户账户持久化存储的原伪装数据密钥93,替换为更新后的伪装数据密钥93’。

可以理解的是,响应于任意用户账户的账户私有识别码90的更新,而对持久化存储在服务器20中的伪装数据密钥93实施更新的过程,可以不限制更新次数。即,用户账户更新后的账户私有识别码90’可以被再次更新,相应地,更新后的伪装数据密钥93’也可以被再次更新。

由此可见,基于上述实施例,任意用户账户的隐藏数据密钥91仅在客户端非持久化存储,并且,该用户账户的账户私有识别码90作为在需要使用隐藏数据密钥91时在客户端10还原该隐藏数据密钥91的凭证,而不是作为对该用户账户的数据加解密的数据密钥,因此,当任意用户账户的账户私有识别码90更新时,只需变更作为隐藏数据密钥91的替代者而被持久化存储在服务器中的伪装数据密钥93,而无需对该用户账户的所有加密数据进行解密后的重新加密,从而在兼顾数据安全的前提下,可以降低由于账户私有识别码的更新所引发的系统负担。

图2为本申请实施例在客户端侧基于如图1所示原理的密钥管理方法的示例性流程示意图。请参见图2,在本申请的实施例中,应用于客户端的密钥管理方法可以包括:

S210:响应于当前用户账户用于创建关联数据容器的容器创建请求,向服务器发送该容器创建请求、并为当前用户账户分配隐藏数据密钥,其中,隐藏数据密钥在客户端非持久化存储。

例如,S210可以响应于当前用户账户用于创建关联数据容器的容器创建请求,生成非持久化存储的随机密钥、并将该随机密钥确定为分配给当前用户账户的隐藏数据密钥,即,S210可以生成用作隐藏数据密钥的随机密钥。

S230:利用本地获取到的当前用户账户的账户私有识别码、以及分配给当前用户账户的隐藏数据密钥,生成当前用户账户的伪装数据密钥,其中,当前用户账户的隐藏数据密钥和伪装数据密钥在客户端非持久化存储。

S250:将为当前用户账户生成的伪装数据密钥发送至服务器持久化存储,其中,在服务器中持久化存储的伪装数据密钥用于响应于客户端对隐藏数据密钥的使用需求而被提供至客户端,以供客户端利用当前用户账户的账户私有识别码和伪装数据密钥,还原得到当前用户账户的隐藏数据密钥。

例如,隐藏数据密钥被客户端的使用包括:利用还原得到的隐藏数据密钥实现对所述当前用户账户的关联数据容器的数据访问,以及,响应于账户私有识别码的更新,利用更新后的账户私有识别码以及还原得到的隐藏数据密钥更新被持久化存储的伪装数据密钥。

S270:响应于当前用户账户的账户私有识别码的更新,利用当前用户账户更新前的账户私有识别码、以及从服务器获取到的当前用户账户的伪装数据密钥还原得到当前用户账户的隐藏数据密钥,并且,利用当前用户账户更新后的账户私有识别码、以及还原得到的当前用户账户的隐藏数据密钥,更新被持久化存储在服务器中的伪装数据密钥。

例如,S270可以具体包括:响应于当前用户账户的账户私有识别码的更新,获取在服务器为当前用户账户持久化存储的伪装数据密钥;利用当前用户账户的伪装数据密钥和更新前的账户私有识别码还原得到(即再次生成)当前用户账户的隐藏数据密钥;利用当前用户账户更新后的账户私有识别码、以及还原得到的当前用户账户的隐藏数据密钥,重新生成当前用户账户更新后的伪装数据密钥;以及,将当前用户账户更新后的伪装数据密钥作为数据密钥更新信息发送至服务器,以促使服务器利用数据密钥更新信息,将为当前用户账户持久化存储的伪装数据密钥,替换为当前用户账户更新后的伪装数据密钥。

并且,客户端利用还原得到的隐藏数据密钥实现对所述当前用户账户的关联数据容器的数据访问,可以发生在S250~S270之间,或者,也可以发生在S270之后。

图3为本申请实施例在服务器侧基于如图1所示原理的密钥管理方法的示例性流程示意图。请参见图3,在本申请的实施例中,应用于服务器的密钥管理方法可以包括:

S310:为客户端的当前用户账户创建关联数据容器,其中,该客户端被配置为利用当前用户账户的账户私有识别码、以及分配给当前用户账户的隐藏数据密钥,生成当前用户账户的伪装数据密钥,并且,当前用户账户的伪装数据密钥和隐藏数据密钥在该客户端非持久化存储。

S330:将客户端提供的当前用户账户的伪装数据密钥持久化存储,其中,持久化存储的伪装数据密钥用于响应于客户端对隐藏数据密钥的使用需求而被提供至客户端,以供客户端利用当前用户账户的账户私有识别码和伪装数据密钥还原得到隐藏数据密钥。

例如,隐藏数据密钥被客户端的使用包括:利用还原得到的当前用户账户的隐藏数据密钥实现对当前用户账户的关联数据容器的数据访问,以及,响应于当前用户账户的账户私有识别码的更新,利用当前用户账户更新后的账户私有识别码以及还原得到的当前用户账户的隐藏数据密钥,更新被持久化存储的当前用户账户的伪装数据密钥。

S350:响应于客户端在当前用户账户的账户私有识别码被更新时发起的密钥更新请求,向客户端提供为当前用户账户持久化存储的伪装数据密钥,以供客户端利用更新后的账户私有识别码以及还原得到的隐藏数据密钥为当前用户账户重新生成伪装数据密钥。

S370:利用客户端响应于当前用户账户的账户私有识别码的更新而重新生成的伪装数据密钥,更新为当前用户账户非持久化存储的伪装数据密钥。

例如,S370可以利用客户端为当前用户账户更新的伪装数据密钥(即数据密钥更新信息),覆盖替换在本地为当前用户账户非持久化存储的伪装数据密钥。

并且,客户端利用还原得到的隐藏数据密钥实现对所述当前用户账户的关联数据容器的数据访问,可以发生在S330~S370之间,或者,也可以发生在S370之后。

图4为本申请实施例在客户端侧基于如图1所示原理的数据访问方法的示例性流程示意图。请参见图4,在本申请的实施例中,应用于客户端的数据访问方法可以包括:

S410:向服务器发起对当前用户账户的关联数据容器的访问请求。

例如,S410发起的访问请求可以包括向当前用户账户的关联数据容器存入数据的数据存入请求,或者,S410发起的访问请求可以包括从当前用户账户的关联数据容器取出数据的数据取出请求,进一步地,若持久化存储在服务器20中的伪装数据密钥93可以以所属的用户账户的账户明文标识(诸如账户名称等账户唯一标识)为索引,则,S410发起的访问请求中可以携带当前用户账户的账户明文标识。

S430:获取服务器响应于访问请求提供的当前用户账户的伪装数据密钥,其中,当前用户账户的伪装数据密钥在服务器持久化存储,并且,当前用户账户的伪装数据密钥在客户端非持久化存储。

S450:利用服务器提供的当前用户账户的伪装数据密钥、以及本地获取的当前用户账户的账户私有识别码,还原得到客户端在发起访问请求之前分配给当前用户账户的隐藏数据密钥,其中,当前用户账户的隐藏数据密钥在客户端非持久化存储。

如前文所述,客户端在发起访问请求之前为当前用户账户分配隐藏数据密钥,可以是发生在客户端为当前用户账户向服务器发起用于创建关联数据容器的容器创建请求时,但可以理解的是,客户端为当前用户账户分配隐藏数据密钥可以是发生在发起访问请求之前的任意时刻。

S470:利用还原得到的当前用户账户的隐藏数据密钥,实现对当前用户账户的关联数据容器的数据访问。

例如,若S410发起的访问请求为向当前用户账户的关联数据容器存入数据的数据存入请求,则,S470可以具体包括:利用还原得到的当前用户账户的隐藏数据密钥,对待存入至当前用户账户的关联数据容器的数据加密,并且,将当前用户账户的加密数据发送至服务器,以促使当前用户账户的加密数据被服务器持久化存储在当前用户账户的关联数据容器中。

再例如,若S410发起的访问请求为从当前用户账户的关联数据容器取出数据的数据取出请求,则,S470可以具体包括:获取服务器提供的当前用户账户的关联数据容器中的指定加密数据,并且,利用还原得到的当前用户账户的隐藏数据密钥对获取到的指定加密数据解密。

上述如图4所示的流程可以不限次数地被触发执行,并且,可以发生在如图2所示流程的S250~S270之间和/或S270之后。

图5为本申请实施例在服务器侧基于如图1所示原理的数据访问方法的示例性流程示意图。请参见图5,在本申请的实施例中,应用于服务器的数据访问方法可以包括:

S510:响应于客户端对当前用户账户的关联数据容器发起的访问请求,查询为当前用户账户持久化存储的伪装数据密钥。

例如,S510响应的访问请求可以包括向当前用户账户的关联数据容器存入数据的数据存入请求,或者,S510响应的访问请求可以包括从当前用户账户的关联数据容器取出数据的数据取出请求,进一步地,若持久化存储在服务器20中的伪装数据密钥93可以以所属的用户账户的账户明文标识(诸如账户名称等账户唯一标识)为索引,则,S410发起的访问请求中可以携带当前用户账户的账户明文标识。

S530:向客户端提供查询到的当前用户账户的伪装数据密钥,以促使客户端利用从服务器获取到的当前用户账户的伪装数据密钥、以及客户端本地获取的当前用户账户的账户私有识别码,还原得到客户端在发起访问请求之前分配给当前用户账户的隐藏数据密钥、并利用还原得到的隐藏数据密钥实现对当前用户账户的关联数据容器的数据访问,其中,当前用户账户的伪装数据密钥和隐藏数据密钥在客户端非持久化存储。

上述如图5所示的流程可以不限次数地被触发执行,并且,可以发生在如图3所示流程的S330~S370之间和/或S370之后。

图6为本申请实施例中如图1所示的数据安全访问机制采用多方参数的优化原理图。请参见图6,在本申请的实施例中,用于数据安全访问的参数可以在包括属于账户归属者的账户私有识别码90、以及由客户端10生成的隐藏数据密钥91和伪装数据密钥93的基础上,进一步包括由服务器20生成的数据访问种子92,即,用于数据安全访问的参数包括账户归属者、客户端10侧、以及服务器20侧的多方参数。

具体地,在本申请的实施例中,服务器20可以为成功创建的任意用户账户的关联数据容器分配数据访问种子92、并且提供给客户端10,并且,服务器20为每个用户账户的关联数据容器分配的数据访问种子92都可以持久化存储在该服务器20中;相应地,客户端10在为任意用户账户生成伪装数据密钥93时,可以进一步使用服务器20为该用户账户分配的数据访问种子92。在此情况下,客户端10在还原得到任意用户账户的隐藏数据密钥91时、以及更新该用户账户的伪装数据密钥93时,也需要进一步使用服务器20为该用户账户分配的数据访问种子(Access Seed)92。

对于任意用户账户,在图6中示出的密钥初始化阶段S_INIT,客户端10可以利用该用户账户的账户私有识别码90、服务器20为该用户账户分配的数据访问种子92、以及客户端10为该用户账户分配的隐藏数据密钥91,生成用于替代该用户账户的隐藏数据密钥91而被持久化存储在服务器20的伪装数据密钥93,并且,在客户端10非持久化存储的隐藏数据密钥91、数据访问种子92以及伪装数据密钥93可以在客户端10中的生命周期结束后被客户端10删除丢弃,例如,客户端10可以响应于伪装数据密钥93向服务器20的成功发送,而删除丢弃非持久化存储的隐藏数据密钥91、数据访问种子92以及伪装数据密钥93。

对于任意用户账户,在图1中示出的密钥使用阶段S_ACC和S_UPDT,客户端10可以从服务器20获取为该用户账户在服务器20彼此关联地持久化存储的数据访问种子92和伪装数据密钥93,例如,持久化存储在服务器20中的数据访问种子92和伪装数据密钥93都可以以所属的用户账户的账户明文标识(诸如账户名称等账户唯一标识)为索引,此时,只要客户端10还能够获取到该用户账户的账户私有识别码90,则,客户端10可以利用获取到的该用户账户的账户私有识别码90、以及服务器20提供的数据访问种子92和伪装数据密钥93还原得到该用户账户的隐藏数据密钥91,并且,客户端10可以响应于隐藏数据密钥91的成功还原而删除丢弃非持久化存储的数据访问种子92和伪装数据密钥93、以及响应于对还原的隐藏数据密钥91的使用完成而删除丢弃还原后仍保持非持久化存储的该隐藏数据密钥91。

在本申请的实施例中,客户端10对隐藏数据密钥91的使用可以包括:利用还原得到的隐藏数据密钥91实现对用户账户的关联数据容器的数据访问,即,图1中示出的用于数据访问的密钥使用阶段S_ACC,该阶段可以参见前文对于图1的描述部分,此处不再重复举例。

相比于如图1所示的原理,如图6所示的优化原理在生成替代隐藏数据密钥91持久化存储的伪装数据密钥93时、以及在利用伪装数据密钥93还原得到隐藏数据密钥91时,使用了由用户账户的所有者保管的账户私有识别码90与服务器20分配的数据访问种子92的密钥组合,因此,隐藏数据密钥91与伪装数据密钥93之间的转换逻辑可以被进一步加强,以提升从伪装数据密钥93破译得到隐藏数据密钥91的难度,从而进一步提升对隐藏数据密钥91的隐秘保护力。

在一些示例中,客户端10可以利用对任意用户账户的账户私有识别码90和数据访问种子92的信息提取,得到该用户账户的账户访问密钥(Access Key)94,例如,可以通过任意用户账户的账户私有识别码90和数据访问种子92的哈希(HASH)运算实现信息提取,以得到该用户账户的账户访问密钥94;利用该用户账户的账户访问密钥94对该用户账户的隐藏数据密钥91进行加密,得到该用户账户的伪装数据密钥93,其中,本申请并不意图限定对账户访问密钥94和隐藏数据密钥进行加密的加密算法,而是支持具有可逆解密算法的任意一种加密算法。也就是,账户访问密钥94可以看作是账户私有识别码90和数据访问种子92的合成密钥、以及在隐藏数据密钥91与伪装数据密钥93之间转换的中介密钥,任何用户账户的账户访问密钥94在客户端10都是非持久化存储,并且客户端10被禁止将账户访问密钥94提供给服务器20,因此,引入账户访问密钥94可以提升从伪装数据密钥93破译得到隐藏数据密钥91的难度,从而进一步提升对隐藏数据密钥91的隐秘保护力度。

若引入账户访问密钥94,则,客户端10对隐藏数据密钥的还原过程可以包括:对服务器20提供的数据访问种子、以及本地获取的用户账户的账户私有识别码90进行信息提取(例如哈希运算),还原得到账户访问密钥94;以及,利用还原得到的账户访问密钥94对从服务器20获取到的伪装数据密钥93解密,还原得到该用户账户的隐藏数据密钥91。

如前文所述,在本申请的实施例中,客户端10对隐藏数据密钥91的使用还可以包括:响应于任意用户账户的账户私有识别码90的更新,利用更新后的账户私有识别码90’、以及还原得到的账户访问密钥94和隐藏数据密钥91,更新被持久化存储在服务器20中的伪装数据密钥93,即,图6中示出的用于密钥更新的密钥使用阶段S_UPDT。

例如,客户端10可以响应于任意用户账户的账户私有识别码90的更新,获取在服务器20为该用户账户彼此关联地持久化存储的数据访问种子92和伪装数据密钥93;利用从服务器20获取到的数据访问种子92和伪装数据密钥93、以及该用户账户更新前的账户私有识别码90,还原得到该用户账户的隐藏数据密钥91;利用从服务器20获取到的数据访问种子92、该用户账户更新后的账户私有识别码90’、以及还原得到的该用户账户的隐藏数据密钥91,重新生成该用户账户更新后的伪装数据密钥93’,若引入账户访问密钥94,则,在重新生成伪装数据密钥93’的过程中也会重新生成新的账户访问密钥94’,即,重新生成的账户访问密钥94’用于重新生成伪装数据密钥93’,并且,重新生成伪装数据密钥93’的过程可以看作是生成伪装数据密钥93的数据密钥更新信息的过程;以及,将该用户账户更新后的伪装数据密钥93’作为伪装数据密钥93的数据密钥更新信息发送至服务器20,以促使服务器20将为该用户账户持久化存储的原伪装数据密钥93,替换为更新后的伪装数据密钥93’。

与图1所示的原理同理,基于如图6所示的优化原理,响应于任意用户账户的账户私有识别码90的更新而对持久化存储在服务器20中的伪装数据密钥93实施更新的过程,可以不限制更新次数。即,用户账户更新后的账户私有识别码90’可以被再次更新,相应地,更新后的伪装数据密钥93’也可以被再次更新。

因此,如图6所示的优化原理在进一步提升对隐藏数据密钥91的隐秘保护力度的基础上,仍可以支持由于账户私有识别码的更新所引发的系统负担的降低。

图7为本申请实施例在客户端侧基于如图6所示优化原理的密钥管理方法的示例性流程示意图。请参见图7,在本申请的实施例中,应用于客户端的密钥管理方法可以包括:

S710:响应于当前用户账户用于创建关联数据容器的容器创建请求,向服务器发送该容器创建请求、并为当前用户账户分配隐藏数据密钥,其中,隐藏数据密钥在客户端非持久化存储。

也就是,S710可以认为是与如图2所示流程中的S210基本相同。

S730:获取服务器为成功创建关联数据容器的当前用户账户分配的数据访问种子,其中,从服务器获取到的当前用户账户的数据访问种子在客户端非持久化存储。

也就是,相比于如图2所示的流程,S730可以是应用于客户端的密钥管理方法进一步包括的步骤。

S750:利用从服务器获取到的当前用户账户的数据访问种子、本地获取到的当前用户账户的账户私有识别码、以及分配给当前用户账户的隐藏数据密钥,生成伪装数据密钥,其中,当前用户账户的隐藏数据密钥和伪装数据密钥在客户端非持久化存储。

也就是,相比于如图2所示的流程中的S230,S750在生成当前用户账户的伪装数据密钥时进一步使用了服务器为当前用户账户分配的数据访问种子,相应地,在S750之后对当前用户账户的隐藏数据密钥的还原也可以进一步利用当前用户账户的数据访问种子。

例如,S750可以具体包括:利用对当前用户账户的账户私有识别码和数据访问种子的信息提取(诸如哈希算法等任意一种支持不可逆运算的信息提取算法),得到该用户账户的账户访问密钥;以及,利用当前用户账户的账户访问密钥对当前用户账户的隐藏数据密钥进行加密,得到当前用户账户的伪装数据密钥。

相应地,在S750之后还原当前用户账户的隐藏数据密钥时,可以具体包括:

S770:将为当前用户账户生成的伪装数据密钥发送至服务器与当前用户账户的数据访问种子彼此关联地持久化存储,其中,在服务器中彼此关联地持久化存储的数据访问种子和伪装数据密钥用于响应于客户端对隐藏数据密钥的使用需求而被提供至客户端,以供客户端利用当前用户账户的数据访问种子、账户私有识别码以及伪装数据密钥,还原得到当前用户账户的隐藏数据密钥。

与前文同理,隐藏数据密钥被客户端的使用包括:利用还原得到的隐藏数据密钥实现对所述当前用户账户的关联数据容器的数据访问,以及,响应于账户私有识别码的更新,利用更新后的账户私有识别码以及还原得到的隐藏数据密钥更新被持久化存储的伪装数据密钥。

S790:响应于当前用户账户的账户私有识别码的更新,利用当前用户账户更新前的账户私有识别码、以及从服务器获取到的当前用户账户的数据访问种子和伪装数据密钥还原得到当前用户账户的隐藏数据密钥,并且,利用从服务器获取到的当前用户账户的数据访问种子、当前用户账户更新后的账户私有识别码、以及还原得到的当前用户账户的隐藏数据密钥更新被持久化存储在服务器中的伪装数据密钥。

例如,S790可以具体包括:响应于当前用户账户的账户私有识别码的更新,获取在服务器为当前用户账户彼此关联地持久化存储的数据访问种子和伪装数据密钥;利用当前用户账户的数据访问种子和伪装数据密钥、以及更新前的账户私有识别码,还原得到当前用户账户的隐藏数据密钥;利用当前用户账户的数据访问种子、以及当前用户账户更新后的账户私有识别码重新生成账户访问密钥,并且,利用重新生成的账户访问密钥、以及还原得到的当前用户账户的隐藏数据密钥,重新生成当前用户账户更新后的伪装数据密钥;以及,将当前用户账户更新后的伪装数据密钥作为对伪装数据密钥的数据密钥更新信息发送至服务器,以促使服务器利用对伪装数据密钥的数据密钥更新信息,将当前用户账户持久化存储的伪装数据密钥替换为当前用户账户更新后的伪装数据密钥。

并且,客户端利用还原得到的隐藏数据密钥实现对所述当前用户账户的关联数据容器的数据访问,可以发生在S770~S790之间,或者,也可以发生在S790之后。

图8为本申请实施例在服务器侧基于如图6所示优化原理的密钥管理方法的示例性流程示意图。请参见图8,在本申请的实施例中,应用于服务器的密钥管理方法可以包括:

S810:为客户端的当前用户账户创建关联数据容器,其中,该客户端被配置为利用当前用户账户的账户私有识别码、以及分配给当前用户账户的隐藏数据密钥,生成当前用户账户的伪装数据密钥,并且,当前用户账户的伪装数据密钥和隐藏数据密钥在该客户端非持久化存储。

S830:响应于对当前用户账户的关联数据容器的成功创建,向客户端提供为当前用户账户分配的数据访问种子,以供客户端在生成当前用户账户的伪装数据密钥时进一步使用当前用户账户的数据访问种子,并且,当前用户账户的数据访问种子在客户端非持久化存储。

S850:将客户端提供的当前用户账户的伪装数据密钥,与当前用户账户的数据访问种子彼此关联地持久化存储,其中,持久化存储的数据访问种子和伪装数据密钥用于响应于客户端对隐藏数据密钥的使用需求而被提供至客户端,以供客户端利用当前用户账户的账户私有识别码、以及数据访问种子和伪装数据密钥还原得到隐藏数据密钥。

与前文同理,隐藏数据密钥被客户端的使用包括:利用还原得到的当前用户账户的隐藏数据密钥实现对当前用户账户的关联数据容器的数据访问,以及,响应于当前用户账户的账户私有识别码的更新,利用当前用户账户更新后的账户私有识别码以及还原得到的当前用户账户的隐藏数据密钥,更新被持久化存储的当前用户账户的伪装数据密钥。

S870:响应于客户端在当前用户账户的账户私有识别码被更新时发起的密钥更新请求,向客户端提供为当前用户账户彼此关联地持久化存储的数据访问种子和伪装数据密钥,以供客户端利用当前用户账户的数据访问种子、当前用户账户更新后的账户私有识别码、以及还原得到的隐藏数据密钥,为当前用户账户重新生成伪装数据密钥。

S890:利用客户端响应于当前用户账户的账户私有识别码的更新而重新生成的伪装数据密钥,更新为与当前用户账户的数据访问种子彼此关联地持久化存储的伪装数据密钥。

例如,S890可以利用客户端为当前用户账户更新的伪装数据密钥,覆盖替换在本地与当前用户账户的数据访问种子彼此关联地持久化存储的伪装数据密钥。

并且,客户端利用还原得到的隐藏数据密钥实现对所述当前用户账户的关联数据容器的数据访问,可以发生在S850~S890之间,或者,也可以发生在S890之后。

图9为本申请实施例在客户端侧基于如图6所示优化原理的数据访问方法的示例性流程示意图。请参见图9,在本申请的实施例中,应用于客户端的数据访问方法可以包括:

S910:向服务器发起对当前用户账户的关联数据容器的访问请求。

例如,S910发起的访问请求可以与前文提及的S410发起的访问请求基本相同,此处不在赘述。

S930:获取服务器响应于访问请求提供的当前用户账户的数据访问种子和伪装数据密钥,其中,当前用户账户的数据访问种子和伪装数据密钥在服务器中彼此关联地持久化存储,并且,当前用户账户的数据访问种子和伪装数据密钥在客户端非持久化存储。

也就是,相比于如图4所示的流程,S930可以看作是应用于客户端的数据访问方法进一步包括的步骤。

S950:利用服务器提供的当前用户账户的数据访问种子和伪装数据密钥、以及本地获取的当前用户账户的账户私有识别码,还原得到客户端在发起访问请求之前分配给当前用户账户的隐藏数据密钥,其中,当前用户账户的数据访问种子和隐藏数据密钥在客户端非持久化存储。

也就是,相比于如图4所示流程的S450,S950可以看作是在还原当前用户账户的隐藏数据密钥时进一步使用了当前用户账户的数据访问种子。

例如,S950可以具体包括:利用对当前用户账户的数据访问种子和账户私有识别码的信息提取(诸如哈希算法等任意一种支持不可逆运算的信息提取算法),得到当前用户账户的账户访问密钥;以及,利用当前用户账户的账户访问密钥对当前用户账户的伪装数据密钥解密,还原得到当前用户账户的隐藏数据密钥,其中,当前用户账户的账户访问密钥在客户端非持久化存储。

S970:利用还原得到的当前用户账户的隐藏数据密钥,实现对当前用户账户的关联数据容器的数据访问。

对S970的举例说明可以参见前文对如图4所示的S470的描述,此处不再赘述。

上述如图9所示的流程可以不限次数地被触发执行,并且,可以发生在如图7所示流程的S770~S790之间和/或S790之后。

图10为本申请实施例在服务器侧基于如图6所示优化原理的数据访问方法的示例性流程示意图。请参见图10,在本申请的实施例中,应用于服务器的数据访问方法可以包括:

S1010:响应于客户端对当前用户账户的关联数据容器发起的访问请求,查询为当前用户账户彼此关联地持久化存储的数据访问种子和伪装数据密钥。

例如,S1010响应的访问请求可以与前文提及的S510响应的访问请求基本相同,此处不再赘述。

S1030:向客户端提供查询到的当前用户账户的数据访问种子和伪装数据密钥,以促使客户端利用从服务器获取到的当前用户账户的数据访问种子和伪装数据密钥、以及客户端本地获取的当前用户账户的账户私有识别码,还原得到客户端在发起访问请求之前分配给当前用户账户的隐藏数据密钥、并利用还原得到的隐藏数据密钥实现对当前用户账户的关联数据容器的数据访问,其中,当前用户账户的数据访问种子、伪装数据密钥以及隐藏数据密钥在客户端非持久化存储。

上述如图10所示的流程可以不限次数地被触发执行,并且,可以发生在如图8所示流程的S850~S890之间和/或S890之后。

在本申请的实施例中,若采用如图6所示的优化原理、并引入账户访问密钥94,则,利用该账户访问密钥94还可以得到账户访问码(Access Code),并且,账户访问码95可以用于服务器20对客户端10发起访问的权限校验、和/或服务器20对客户端10发起的数据访问的防重放过滤。

图11为本申请实施例在数据访问过程中引入权限校验机制的优化原理示意图。请参见图11,在本申请的实施例中,如前文所述,客户端10可以利用对数据访问种子92和账户私有识别码90的信息提取,得到在客户端10非持久化存储的账户访问密钥94,并且,客户端10还可以利用账户访问密钥94的信息提取,得到在客户端10非持久化存储的账户访问码95、并将账户访问码95发送至服务器20;服务器可以将客户端10提供归属于任意用户账户的账户访问码95作为该用户账户的访问校验码99、并与数据访问种子92和伪装数据密钥93彼此关联地持久化存储,例如,持久化存储在服务器20中的数据访问种子92和伪装数据密钥93、以及访问校验码99都以所属的用户账户的账户明文标识(诸如账户名称等账户唯一标识)为索引。

无论是对客户端10发起的数据访问、还是对持久化存储在服务器20的访问校验码99发起的密钥更新,服务器20都可以利用客户端10在请求发起数据访问或密钥更新时再次生成的账户访问码95、以及在服务器20中持久化存储的访问校验码99之间的一致性比对结果,实现对数据访问或密钥更新的权限校验,即:

若客户端10在请求发起数据访问或密钥更新时再次生成的账户访问码95、与服务器20中持久化存储的访问校验码99一致,则,权限校验成功,相应地,客户端10发起的数据访问或密钥更新被使能;

若客户端10在请求发起数据访问或密钥更新时再次生成的账户访问码95、与服务器20中持久化存储的访问校验码99不同,则,权限校验失败,相应地,客户端10发起的数据访问或密钥更新被服务器20拒绝。

仍参见图11,服务器20中持久化存储的访问校验码99响应于归属的用户账户的账户私有识别码90的每一次更新而被同步更新,即,任意用户账户的账户私有识别码90被更新后,在利用该用户账户更新后的账户私有识别码90’、以及还原得到的该用户账户的隐藏数据密钥91重新生成该用户账户更新后的伪装数据密钥93’的过程中,会重新生成新的账户访问密钥94’,并且,通过对重新生成的新的账户访问密钥94’的信息提取,也可以得到新的账户访问码95’,此时的新的该账户访问码95’可以看作是对当前已使用的账户访问码95的访问码更新信息,从而,服务器20中为该用户账户持久化存储的与账户访问码95相同的访问校验码99,也会利用新的账户访问码95’而被更新为新的访问校验码99’。也就是,在本申请的实施例中,账户访问码95在客户端10非持久化存储、在服务器20持久化存储,服务器20中持久化存储的访问校验码响应于账户私有识别码90的每一次更新而被客户端10发起的密钥更新关联更新,并且,该密钥更新引发服务器20中持久化存储的访问校验码99与伪装数据密钥93一起被关联更新的过程可以包括:客户端10利用服务器20提供的数据访问种子92、以及更新后的账户私有识别码90’重新生成账户访问密钥94’,重新生成的账户访问密钥94’用于生成伪装数据密钥93的数据密钥更新信息(即更新后的伪装数据密钥93’),该数据密钥更新信息用于更新服务器中持久化存储的伪装数据密钥93,并且,将服务器中持久化存储的访问校验码99更新为利用对重新生成的账户访问密钥94’进行信息提取得到的访问码更新信息(即新的账户访问码95’)。

也就是,在访问校验码99与伪装数据密钥93关联更新时,客户端10既要再次生成当前已使用的账户访问码95用于校验,还要生成新的账户访问码95’用作对当前已使用的账户访问码95的访问码更新信息。

在关联更新完成之后,无论是对客户端10发起的数据访问、还是对持久化存储在服务器20的访问校验码99发起的密钥更新,服务器20中用于权限校验的一致性比对结果,都变为客户端10在请求发起数据访问或密钥更新时再次生成的账户访问码95’、以及在服务器20中持久化存储的访问校验码99’之间的一致性比对结果,即:

若客户端10在请求发起数据访问或密钥更新时再次生成的账户访问码95’、与服务器20中持久化存储的访问校验码99’一致,则,权限校验成功,相应地,客户端10发起的数据访问或密钥更新被使能;

若客户端10在请求发起数据访问或密钥更新时再次生成的账户访问码95’、与服务器20中持久化存储的访问校验码99’不同,则,权限校验失败,相应地,客户端10发起的数据访问或密钥更新被服务器20拒绝。

对于如图7所示的应用于客户端的密钥管理方法,若引入权限校验机制,则,该密钥管理方法的S750可以进一步包括:利用对账户访问密钥的信息提取,得到账户访问码;该密钥管理方法的S770可以进一步包括:将账户访问码与伪装数据密钥一起发送至服务器,以被服务器作为访问校验码、并与数据访问种子和伪装数据密钥彼此关联地持久化存储;该密钥管理方法的S790可以进一步包括前文提及的密钥更新引发服务器20中持久化存储的伪装数据密钥93和访问校验码99被关联更新的过程。

对于如图8所示的应用于服务器的密钥管理方法,若引入权限校验机制,则,该密钥管理方法的S850可以进一步包括:将客户端提供的账户访问码作为访问校验码,与数据访问种子和伪装数据密钥彼此关联地持久化存储;该密钥管理方法的S890可以进一步包括:利用客户端在请求发起密钥更新时再次生成的账户访问码、以及持久化存储的访问校验码之间的一致性比对结果,实现对密钥更新的权限校验,以使得持久化存储的访问校验码响应于账户私有识别码的每一次更新而被客户端发起的密钥更新关联更新。

对于如图9所示的应用于客户端的数据访问方法,若引入权限校验机制,则,该数据访问方法的S910可以进一步包括:对发起访问请求时基于账户私有识别码再次生成的账户访问密钥进行信息提取,得到账户访问码、并将该账户访问码携带至访问请求中,以促使服务器利用该访问请求中携带的账户访问码、以及持久化存储的访问校验码的一致性比对结果,实现对数据访问的权限校验;相应地,S970对关联数据容器的数据访问是在服务器的权限校验成功之后被使能的,即,向当前用户账户的关联数据容器存入数据、以及从当前用户账户的关联数据容器取出数据,都是在服务器的权限校验成功之后被使能的,若权限校验失败,则向关联数据容器存入的数据将被服务器拒收或丢弃、且无法通过服务器从当前用户账户的关联数据容器取出数据。

对于如图10所示的应用于服务器的数据访问方法,若引入权限校验机制,则,该数据访问方法在S1010之后可以进一步包括:获取访问请求中携带的账户访问码,该账户访问码是由客户端对发起访问请求时基于账户私有识别码再次生成的账户访问密钥进行信息提取得到的;以及,利用访问请求中携带的所述账户访问码、以及持久化存储的访问校验码的一致性比对结果,实现对数据访问的权限校验;其中,客户端在S1030之后对关联数据容器的数据访问是在权限校验成功之后被使能的。

除了权限校验之外,服务器20还可以利用持久化存储的访问校验码99或99’,与为数据访问再次生成账户访问码95或95’的客户端10协同实现对数据访问的防重放过滤。

图12为本申请实施例在数据访问过程中采用的防重放机制的原理示意图。请参见图12,在本申请的实施例中,可生成账户访问码95的客户端10、以及持久化存储有访问校验码99的和服务器20之间,可以基于服务器20提供的一次性临时码96实现对数据访问的防重放过滤。具体地:

服务器20可以产生一次性临时码96、并提供至客户端10(例如,响应于客户端10为任意用户账户发起的访问请求的一次性临时码96,可以与该用户账户的数据访问种子92和伪装数据密钥93一起提供至客户端10),服务器20产生的一次性临时码96可以为随机数(Salt),因此,服务器20每次产生的一次性临时码96大概率不同,并且,服务器20每次产生的一次性临时码96在被使用一次后删除丢弃;

服务器20可以按照预设信息提取规则,对任意用户账户的访问校验码99、以及当前针对该用户账户发起的访问请求生成的一次性临时码96进行信息提取(使用诸如哈希算法等任意一种支持不可逆运算的信息提取算法),得到动态访问验证码98;

客户端10可以按照与服务器20相同的预设信息提取规则,对该用户账户的账户访问码95、以及服务器20提供的一次性临时码96进行信息提取,得到配对访问验证码97并发送至服务器20;

由于一次性临时码96在服务器20的生命周期可以响应于动态访问验证码98的一次生成而结束,并且,动态访问验证码98响应于当前的数据访问的结束而基于重新生成的一次性临时码而被更新,因此,服务器20可以利用当前的动态访问验证码98与客户端10提供的配对访问验证码97之间的一致性比对结果,实现对数据访问的防重放过滤。

例如,若客户端发起的访问请求包括向当前用户账户的关联数据容器存入数据的数据存入请求,则,客户端10将生成的配对访问验证码97与发送至服务器20的过程可以包括:将生成的配对访问验证码97、以及对待存入至关联数据容器的数据加密得到的加密数据一起发送至服务器20,以供服务器20基于配对访问验证码97和动态访问验证码98的一致性判定结果,执行是否允许当前用户账户的加密数据被存入关联数据容器的防重放过滤,其中,若配对访问验证码97和动态访问验证码98一致,则表示本次的加密数据是对应于当前用户账户的数据存入请求的正常数据存入,因而本次的加密数据被允许存入关联数据容器,但若配对访问验证码97和动态访问验证码98不一致,则表示本次的加密数据是在当前用户账户的数据存入请求对应的加密数据已完成存入后的重复数据存入,因而禁止本次的加密数据在关联数据容器的重复存入。

再例如,若访问请求包括从当前用户账户的关联数据容器取出数据的数据取出请求,则,客户端10将生成的配对访问验证码97与发送至服务器20的过程可以包括:在获取到当前用户账户的关联数据容器中的指定加密数据之前,将配对访问验证码97发送至服务器20,以供服务器20基于配对访问验证码97和动态访问验证码98的一致性判定结果,执行是否允许向客户端10提供当前用户账户的关联数据容器中的指定加密数据的防重放过滤,其中,若配对访问验证码97和动态访问验证码98一致,则表示对指定加密数据的本次取数据行为是对应于当前用户账户的数据取出请求的正常取数据行为,因而允许从关联数据容器中取出指定加密数据,但若配对访问验证码97和动态访问验证码98不一致,则表示本次的取数据行为是在当前用户账户的数据取出请求对应的取数据行为已完成存入后的重复取数据,因而禁止指定加密数据从关联数据容器的本次重复取出。

从而,服务器20可以通过对配对访问验证码97和动态访问验证码98的一致性判定结果,对客户端10发起的数据访问进行防重放过滤。

对于如图9所示的应用于客户端的数据访问方法,若引入防重放机制,则该数据访问方法的S930可以进一步包括:获取服务器响应于访问请求而与数据访问种子和伪装数据密钥一起提供的一次性临时码,服务器被配置为利用预设信息提取规则,通过对访问校验码和一次性临时码的信息提取而得到动态访问验证码,其中,一次性临时码在服务器的生命周期,响应于动态访问验证码的一次生成而结束,并且,动态访问验证码响应于数据访问的结束而基于重新生成的一次性临时码而被更新;该数据访问方法可以在S970之前进一步包括:利用与服务器相同的预设信息提取规则对一次性临时码以及发起访问请求时得到的账户访问码进行信息提取,得到用于标识访问请求的配对访问验证码;并且,该数据访问方法的S970可以进一步包括:将生成的配对访问验证码与发送至服务器,以促使服务器根据配对访问验证码与服务器对账户访问码和一次性临时码进行信息提取得到的动态访问验证码之间的一致性判定结果,对数据访问进行防重放过滤。

对于如图10所示的应用于服务器的数据访问方法,若引入防重放机制,则,该数据访问方法的S1030可以进一步包括:响应于访问请求,利用预设信息提取规则对访问校验码和一次性临时码的信息提取,得到用于标识访问请求的动态访问验证码,并且,将生命周期内尚未结束的所述一次性临时码与数据访问种子和伪装数据密钥一起提供至客户端,以促使所述客户端利用相同的预设信息提取规则对账户访问码和一次性临码的信息提取得到配对访问验证码,其中,一次性临时码在服务器的生命周期,响应于动态访问验证码的一次生成而结束,动态访问验证码响应于数据访问的结束而基于重新生成的一次性临时码而被更新,并且,客户端得到配对访问验证码时使用的账户访问码,是由客户端对发起访问请求时基于账户私有识别码再次生成的账户访问密钥进行信息提取得到的;以及,该数据访问方法还可以在S1030之后进一步包括:根据当前的动态访问验证码、以及从客户端获取到的配对访问验证码之间的一致性判定结果,对当前的数据访问进行防重放过滤。

如上可见,在本申请实施例中,响应于客户端向服务器每一次发起的对关联数据容器的数据访问,或,响应于客户端对持久化存储在服务器的访问校验码发起的密钥更新,在客户端非持久化存储的账户访问码可以在客户端基于本地获取到的账户私有识别码被再次生成,再次生成的账户访问码用于被发送至服务器,以使得服务器利用客户端在请求发起所述数据访问或密钥更新时再次生成的账户访问码、以及持久化存储的访问校验码的一致性比对结果,实现对数据访问或密钥更新的权限校验,和/或,利用访问校验码与再次生成账户访问码的客户端协同实现对数据访问的防重放过滤。

图13为本申请实施例中的一种客户端的示例性结构示意图。请参见图13,在本申请的实施例中,客户端可以包括第一处理器1210、用于与服务器通信的第一通信组件1220、用于输入账户私有识别码的信息输入组件1230、以及用于非持久化存储的内存1240,其中,第一处理器1210可以用于执行前述实施例中应用于客户端的密钥管理方法和数据访问方法,并且,第一通信组件1220可以包含支持有线通信和/或无线通信的功能组件、信息输入组件1230可以包括诸如支持人机交互功能和/或接口热插拔功能的功能组件。另外,客户端还可以包括第一非瞬时计算机可读存储介质1200,其中存储有指令,这些指令用于引发第一处理器1210执行前述实施例中应用于客户端的密钥管理方法和数据访问方法。

图14为本申请实施例中的一种服务器的示例性结构示意图。请参见图14,在本申请的实施例中,服务器可以包括第二处理器1310、用于与客户端通信的第二通信组件1320、用于与存储设备通信的数据接口组件1330、以及用于持久化存储的物理磁盘1340,其中,第二处理器1310可以用于执行前述实施例中应用于服务器的密钥管理方法和数据访问方法,并且,第二通信组件1320可以包含支持有线通信和/或无线通信的功能组件。另外,客户端还可以包括第二非瞬时计算机可读存储介质1300,其中存储有指令,这些指令用于引发第二处理器1310执行前述实施例中应用于服务器的密钥管理方法和数据访问方法。

在本申请的另一个实施例中,还提供了一种数据存储系统,包括如图13所示的客户端、如图14所示的服务器、以及存储设备,该存储设备中用于部署任意用户账户的关联数据容器,其中的至少一个为前述实施例中提及的当前用户账户的关联数据容器。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

技术分类

06120116546812