首页> 中国专利> 云存储环境下的数据访问控制方法和系统

云存储环境下的数据访问控制方法和系统

摘要

本发明实施例提供了一种云存储环境下的数据访问控制方法和系统。该方法主要包括:用户通过客户端向云服务器注册个人信息,当数据拥有者确定需要上传给所述云服务器的数据是共享数据时,数据拥有者的客户端利用对称密钥加密所述数据,将加密后的所述数据、对称密钥、数据的哈希运算结果和数据的共享属性发送到云服务器;当数据是非共享数据时,数据拥有者的客户端利用自己的公钥加密所述数据,将加密后的数据、数据的哈希运算结果和数据的共享属性发送到云服务器。本发明实施例保证了用户数据的机密性和完整性,同时对用户文件机密性进行了划分,从而更好的实现数据共享下的权限控制,有效提供了提高云存储下的数据访问控制的安全性。

著录项

  • 公开/公告号CN104980477A

    专利类型发明专利

  • 公开/公告日2015-10-14

    原文格式PDF

  • 申请/专利权人 航天信息股份有限公司;

    申请/专利号CN201410148866.7

  • 发明设计人 梁睿;耿方;郭向国;张先强;

    申请日2014-04-14

  • 分类号H04L29/08(20060101);H04L29/06(20060101);G06F17/30(20060101);

  • 代理机构北京工信联合知识产权代理事务所(普通合伙);

  • 代理人黄晓军

  • 地址 100195 北京市海淀区杏石口路甲18号航天信息园

  • 入库时间 2023-12-18 11:33:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-07-09

    授权

    授权

  • 2015-11-11

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20140414

    实质审查的生效

  • 2015-10-14

    公开

    公开

说明书

技术领域

本发明涉及网络通信技术领域,尤其涉及一种云存储环境下的数据访问控制方法和系统。

背景技术

随着大数据时代的到来,云存储已经成为未来存储发展的一种必然趋势,不同用户都将自己的文件上传到云端,由云存储提供商提供统一的数据存储和业务访问,保证数据的安全性并节约存储空间。数据拥有者可以授权其他用户下载和使用自己的文件,通过共享和数据同步的方式来实现不同用户间的协同工作。虽然云存储能够方便的实现用户数据在不同设备上面的同步和共享,节约成本。但是这些隐私的用户数据放在公共的云存储中也存在着巨大的安全隐患。

现有技术中的一种云存储环境下的数据访问方法如下:数据拥有者计算需要上传的文件的哈希值,然后利用用户密钥对文件和哈希值进行加密,最后将加密结果和哈希值上传到云端。通过这种方案,云存储的服务提供商和没有权限的窃听者均不能得到数据内容。用户从云端中取回文件时,先对加密结果进行解密,然后对解密后的文件进行哈希运算,将哈希运算的结果同存放在云端中的哈希值进行比较,如果相符,则该文件是完整未经篡改的。其他用户想要访问这个数据,需要向数据拥有者申请密钥,从而实现数据共享。

上述现有技术中的云存储环境下的数据访问方法的缺点如下:存在云服务提供商对用户数据进行非法利用的可能;该方案中的密钥传递过程必须要求申请者和拥有者同时在线,才能完成密钥传递过程。

发明内容

本发明的实施例提供了一种云存储环境下的数据访问控制方法和系统,以提高云存储下的数据访问控制的安全性。

本发明提供了如下方案:

一种云存储环境下的数据访问控制方法,包括:

用户通过客户端向云服务器注册个人信息,在所述云服务器中存储用户的个人信息,该个人信息包括用户的标识UID和证书;

当数据拥有者确定需要上传给所述云服务器的数据是共享数据时,所述数据拥有者的客户端利用对称密钥加密所述数据,将加密后的所述数据、所述对称密钥、所述数据的哈希运算结果和所述数据的共享属性发送到所述云服务器;

当数据拥有者确定需要上传给所述云服务器的数据是非共享数据时,所述数据拥有者的客户端利用自己的公钥加密所述数据,将加密后的所述数据、所述数据的哈希运算结果和所述数据的共享属性发送到所述云服务器。

所述的当数据拥有者确定需要上传给所述云服务器的数据是共享数据时,所述数据拥有者的客户端利用对称密钥加密所述数据,将加密后的所述数据、所述对称密钥、所述数据的哈希运算结果和所述数据的共享属性发送到所述云服务器,包括:

数据拥有者需要上传的数据为Data,该Data的文件标识符为FID,该Data为共享数据,共享属性isShared=TRUE,所述数据拥有者的客户端生成一个共享密钥K,利用所述数据拥有者的公钥PKDO对所述共享密钥K进行加密E(K)PKDO,得到KeyUnit;所述客户端计算E(Data)K,得到DataUnit,并对Data进行哈希运算Hash(Data),得到HashDataUnit,所述客户端将所述HashDataUnit,DataUnit,KeyUnit,FID和isShared上传到所述云服务器;

所述云服务器将所述客户端上传的HashDataUnit,DataUnit,KeyUnit,FID和isShared,以及所述数据拥有者的UID进行关联存储。

所述的当数据拥有者确定需要上传给所述云服务器的数据是非共享数据时,所述数据拥有者的客户端利用自己的公钥加密所述数据,将加密后的所述数据、所述数据的哈希运算结果和所述数据的共享属性发送到所述云服务器,包括:

数据拥有者需要上传的数据为Data,该Data的文件标识符为FID,该Data为非共享数据,共享属性isShared=FALSE,所述数据拥有者的客户端对数据文件Data进行哈希运算Hash(Data),得到HashDataUnit,利用所述数据拥有者的公钥PKDO对Data进行加密运算E(Data)PKDO,得到DataUnit,所述客户端将所述HashDataUnit、DataUnit,FID和isShared上传到所述云服务器;

所述云服务器将所述客户端上传的HashDataUnit,DataUnit,FID和isShared,以及所述数据拥有者的UID进行关联存储。

所述的方法还包括:

数据使用者的客户端将当前系统时间Time和自己的UID利用自己的私钥SKDU进行签名S(Time||UID)SKDU,得到申请时间戳,所述数据使用者的客户端向数据拥有者的客户端发送携带所述申请时间戳和自己的UID的数据访问请求;

所述数据拥有者的客户端获取所述数据访问请求中携带的S(Time||UID)SKDU||UID,审核所述数据使用者的UID,当确定所述数据使用者是可以开通数据访问权限的用户后,则向云服务器提交携带S(Time||UID)SKDU||UID的授权申请;否则,向所述数据使用者的客户端发送授权失败应答;

所述云服务器接收到所述授权申请后,根据所述数据使用者的UID查找对应的所述数据使用者的公钥证书CertDU,验证V(S(Time||UID))SKDU,得到Time'和UID',验证Time实效性以及UID'?=UID,验证通过,则所述云服务器向所述数据拥有者的客户端发送携带KeyUnit和所述数据使用者的证书CertDU的验证通过结果;验证不通过,向所述数据拥有者的客户端发送验证失败结果;

所述数据拥有者的客户端接收到验证通过结果后,获取验证通过结果中携带的KeyUnit和CertDU,对共享密钥单元解密D(KeyUnit)SKDO得到共享密钥K,利用所述数据使用者的公钥PKDU加密共享密钥K得到共享密码存储单元副本KeyUnit_1,所述数据拥有者的客户端将授权许可应答消息发送到所述数据使用者,并将所述数据使用者的标识UID和KeyUnit_1发送给所述云服务器,所述云服务器将所述数据使用者的UID和KeyUnit_1存放在所述数据拥有者上传的Data相对应的访问权限列表中;所述数据拥有者的客户端接收到验证失败结果后,向所述数据使用者发送授权许可失败信息。

所述的方法还包括:

用户的客户端向所述云服务器发送携带自己的UID和FID的数据访问请求,所述云服务器根据所述数据访问请求中携带的FID查询云服务器中存储的的目录数据,找到对应的数据存储区,根据该数据存储区获取所述FID对应的Data的isShared属性;

当所述用户的客户端选择访问isShared=FALSE的所述Data时,所述云服务器根据所述用户的UID验证所述用户身份是否为数据拥有者,如果是,则将所述Data对应的HashDataUnit和DataUnit发送给所述用户的客户端;

所述用户的客户端利用用户自己的SKDO对所述DataUnit进行解密D(DataUnit)SKDO,得到Data',当验证Hash(Data')=HashDataUnit后,则确定所述Data没有被篡改,Data'=Data,所述用户的客户端对所述Data'进行处理。

所述的方法还包括:

用户的客户端向所述云服务器发送携带自己的UID的数据访问请求,所述云服务器根据所述数据访问请求中携带的FID查询所述云服务器中存储的的目录数据,找到对应的数据存储区,根据该数据存储区获取所述FID对应的Data的isShared属性;

当所述用户的客户端选择访问isShared=TRUE的所述Data时,所述云服务器检查请求中携带的UID是否包含在所述Data对应的访问权限列表中,如果是,则判断用户的客户端可以访问所述Data,继续后续流程;否则,则判断用户的客户端不可以访问所述Data,流程结束;

所述云服务器将所述Data对应的KeyUnit,DataUnit和HashDataUnit发送给用户的客户端,所述用户的客户端用用户自己的私钥解密KeyUnit,即计算D(KeyUnit)SK(DO|DU)得到共享密钥K;

所述用户的客户端利用K解密DataUnit得到Data',验证Hash(Data')=HashDataUnit后,Data'=Data,所述用户的客户端对所述Data'进行处理。

一种云存储环境下的数据访问控制系统,包括:数据拥有者的客户端和云服务器,

所述的数据拥有者的客户端,用于向云服务器注册所述数据拥有者的个人信息,当数据拥有者确定需要上传给所述云服务器的数据是共享数据时,所述客户端利用对称密钥加密所述数据,将加密后的所述数据、所述对称密钥、所述数据的哈希运算结果和所述数据的共享属性发送到所述云服务器;

当数据拥有者确定需要上传给所述云服务器的数据是非共享数据时,所述客户端利用自己的公钥加密所述数据,将加密后的所述数据、所述数据的哈希运算结果和所述数据的共享属性发送到所述云服务器。

所述的云服务器,用于存储用户的个人信息,该个人信息包括用户的标识UID和证书,并且将所述数据拥有者的客户端上传的信息进行存储。

所述的数据拥有者的客户端,具体用于当数据拥有者需要上传的数据为Data,该Data的文件标识符为FID,该Data为共享数据,共享属性isShared=TRUE时,所述客户端生成一个共享密钥K,利用所述数据拥有者的公钥PKDO对所述共享密钥K进行加密E(K)PKDO,得到KeyUnit;计算E(Data)K,得到DataUnit,并对Data进行哈希运算Hash(Data),得到HashDataUnit,将所述HashDataUnit,DataUnit,KeyUnit、FID和isShared上传到所述云服务器;

所述的云服务器,具体用于将所述客户端上传的HashDataUnit,DataUnit,KeyUnit、FID和isShared,以及所述数据拥有者的UID进行关联存储。

所述的数据拥有者的客户端,具体用于当数据拥有者需要上传的数据为Data,该Data的文件标识符为FID,该Data为非共享数据,共享属性isShared=FALSE时,对数据文件Data进行哈希运算Hash(Data),得到HashDataUnit,利用所述数据拥有者的公钥PKDO对Data进行加密运算E(Data)PKDO,得到DataUnit,将所述HashDataUnit、DataUnit、FID和isShared上传到所述云服务器;

所述的云服务器,具体用于将所述客户端上传的HashDataUnit,DataUnit,FID和isShared,以及所述数据拥有者的UID进行关联存储。

所述的系统还包括:数据使用者的客户端

所述的数据使用者的客户端,用于将当前系统时间Time和自己的UID利用自己的私钥SKDU进行签名S(Time||UID)SKDU,得到申请时间戳,向数据拥有者的客户端发送携带所述申请时间戳和自己的UID的数据访问请求;

所述的数据拥有者的客户端,用于获取所述数据访问请求中携带的S(Time||UID)SKDU||UID,审核所述数据使用者的UID,当确定所述数据使用者是可以开通数据访问权限的用户后,则向云服务器提交携带S(Time||UID)SKDU||UID的授权申请;否则,向所述数据使用者的客户端发送授权失败应答;

所述的云服务器,用于接收到所述授权申请后,根据所述数据使用者的UID查找对应的所述数据使用者的公钥证书CertDU,验证V(S(Time||UID))SKDU,得到Time'和UID',验证Time实效性以及UID'?=UID,验证通过,则向所述数据拥有者的客户端发送携带KeyUnit和所述数据使用者的证书CertDU的验证通过结果;验证不通过,向所述数据拥有者的客户端发送验证失败结果;

所述的数据拥有者的客户端,用于接收到验证通过结果后,获取验证通过结果中携带的KeyUnit和CertDU,对共享密钥单元解密D(KeyUnit)SKDO得到共享密钥K,利用所述数据使用者的公钥PKDU加密共享密钥K得到共享密码存储单元副本KeyUnit_1,将授权许可应答消息发送到所述数据使用者,并将所述数据使用者的标识UID和KeyUnit_1发送给所述云服务器;接收到验证失败结果后,向所述数据使用者发送授权许可失败信息;

所述的云服务器,用于将所述数据使用者的UID和KeyUnit_1存放在所述数据拥有者上传的Data相对应的访问权限列表中。

所述的数据拥有者或者所述数据使用者的客户端,具体用于向所述云服务器发送携带自己的UID和FID的数据访问请求;

所述的云服务器,具体用于根据所述数据访问请求中携带的FID查询云服务器中存储的的目录数据,找到对应的数据存储区,根据该数据存储区获取所述FID对应的Data的isShared属性;当所述数据拥有者或者所述数据使用者的客户端选择访问isShared=FALSE的所述Data时,根据所述数据拥有者或者所述数据使用者的UID验证用户身份是否为数据拥有者,如果是,则将所述Data对应的HashDataUnit和DataUnit发送给所述用户的客户端;

所述数据拥有者或者所述数据使用者的客户端,具体用于利用用户自己的SKDO对所述DataUnit进行解密D(DataUnit)SKDO,得到Data',当验证Hash(Data')=HashDataUnit后,则确定所述Data没有被篡改,Data'=Data,所述用户的客户端对所述Data'进行处理。

所述的数据拥有者或者所述数据使用者的客户端,具体用于向所述云服务器发送携带自己的UID的数据访问请求;

所述的云服务器,具体用于根据所述数据访问请求中携带的FID查询所述云服务器中存储的的目录数据,找到对应的数据存储区,根据该数据存储区获取所述FID对应的Data的isShared属性;当所述数据拥有者或者所述数据使用者的客户端选择访问isShared=TRUE的所述Data时,检查请求中携带的UID是否包含在所述Data对应的访问权限列表中,如果是,则判断数据拥有者或者所述数据使用者的客户端可以访问所述Data,继续后续流程;否则,则判断数据拥有者或者所述数据使用者的客户端不可以访问所述Data,流程结束;将所述Data对应的KeyUnit,DataUnit和HashDataUnit发送给用户的客户端;

所述数据拥有者或者所述数据使用者的客户端,具体用于用用户自己的私钥解密KeyUnit,即计算D(KeyUnit)SK(DO|DU)得到共享密钥K;利用K解密DataUnit得到Data',验证Hash(Data')=HashDataUnit后,Data'=Data,所述用户的客户端对所述Data'进行处理。

由上述本发明的实施例提供的技术方案可以看出,本发明实施例实现了一种云存储下的安全数据访问控制方法,保证了用户数据的机密性和完整性,同时对用户文件机密性进行了划分,从而更好的实现数据共享下的权限控制,有效提供了提高云存储下的数据访问控制的安全性。

附图说明

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

图1为本发明实施例一提供的一种云存储环境下的数据拥有者向云服务器上传数据的方法的原理示意图;

图2为本发明实施例一提供的一种数据使用者(DataUser)向C_Server申请数据访问权限方法的原理示意图;

图3为本发明实施例一提供的一种非共享数据的访问方法的原理示意图;

图4为本发明实施例一提供的一种共享数据的访问方法的原理示意图;

图5为本发明实施例二提供的一种云存储环境下的数据访问控制云存储环境下的数据访问控制系统的结构示意图,图中,数据拥有者的客户端、数据使用者的客户端和云服务器。

具体实施方式

为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。实施例一

下面首先对本文中出现的名词符号进行解释:

DataOwner:数据拥有者

DataUser:数据使用者

C_Server:云服务器

UID:用户标识

FID:文件标识符

HashDataUnit:数据哈希单元

DataUnit:数据存储单元

KeyUnit:共享密钥存储单元

PKDO:数据拥有者公钥

SKDO:数据拥有者私钥

K:共享密钥

CertDU:数据使用者证书

PKDU:数据使用者公钥

SKDU:数据使用者私钥

Hash():哈希计算

E(M)K:利用对称密钥K对明文M进行对称加密

E(M)PK:利用公钥对明文M进行加密

D(C)PK:利用私钥对密文C进行解密

S(v)SK:利用私钥对证据v进行签名

V(s)PK:利用公钥对签名s进行验签

Data:处理的数据

isShared:共享类型

在本发明实施例中,客户端的用户分为数据拥有者和数据使用者,数据拥有者是指上传数据的用户,这些用户具备对上传数据的下载、修改、同步以及删除权限,数据使用者只能下载数据拥有者上传的数据。

上传数据又分为非共享数据和共享数据,共享数据可以供得到授权的用户进行下载和传播,非共享数据只有数据拥有者具备操作的权限。

本发明实施例提出了针对不同数据共享类型的两种数据加密方案,一种是非共享数据,采用公钥加密算法进行加密,能够保证只有数据拥有者本人有使用数据的权限;另外一种,共享数据的加密利用对称密钥算法加密,拥有共享密钥的数据使用者就可以下载该数据。用户数据和用户密钥以密文形式保存,保证云存储环境下数据访问的机密性和完整性。

该实施例提供的一种云存储环境下的数据拥有者(DataOwner)向云服务器(C_Server)上传数据的方法的原理示意图如图1所示,包括如下的处理步骤:

步骤S110、首先进行系统初始化,用户首先通过客户端向注册机构申请一个由PKI(Public Key Infrastructure,公钥基础设施)授予的证书文件,该证书文件可以为X509证书,用户通过客户端向C_Server注册个人信息,C_Server保存每个用户的个人信息,该个人信息包括用户的UID以及证书文件。

步骤S120、DataOwner的客户端向C_Server发送数据上传请求,上述客户端确定需要上传的数据文件Data(文件标识符为FID),选择是否进行共享,如果isShared=TRUE,则执行步骤S130;如果isShared=FALSE,则执行步骤S140。

步骤S130、如果isShared=FALSE,则DataOwner的客户端对数据文件Data进行哈希运算Hash(Data),得到HashDataUnit。

然后,利用DataOwner的公钥PKDO对Data进行加密运算E(Data)PKDO,得到DataUnit,最后,DataOwner的客户端将HashDataUnit,DataUnit,FID以及isShared上传至C_Server。执行步骤S150。

步骤S140、如果isShared=TRUE,则DataOwner的客户端生成一个数据共享密钥K,利用公钥PKDO对共享密钥K进行加密E(K)PKDO,得到KeyUnit,然后计算E(Data)K,得到DataUnit,并对Data进行哈希运算Hash(Data),得到HashDataUnit,最后将HashDataUnit,DataUnit,KeyUnit,FID和isShared上传至C_Server。执行步骤S150。

步骤S150、服务器保存客户端上传的数据。

C_Server接收到DataOwner的客户端发送的数据上传请求后,首先建立一条目录数据和数据存储区,其中目录数据包括FID,目录拥有者(即上传数据的DataOwner的信息)的UID,目录的绝对路径,数据共享类型和访问权限列表。

如果isShared=FALSE,数据存储区存储上述客户端上传的HashDataUnit和DataUnit以及isShared;

如果isShared=TRUE,则数据存储区存储上述客户端上传的HashDataUnit,DataUnit,KeyUnit和isShared。

该实施例提供的一种数据使用者(DataUser)向DataOwner、C_Server申请数据访问权限方法的原理示意图如图2所示,包括如下的处理步骤:

步骤S210、DataUse的客户端将当前系统时间Time和自己的UID利用自己的私钥SKDU进行签名S(Time||UID)SKDU,得到申请时间戳。然后,DataUse的客户端向DataOwner的客户端发送携带上述申请时间戳和自己的UID的数据访问请求。

步骤S220、DataOwner的客户端接收到上述数据访问请求后,获取数据访问请求中携带的S(Time||UID)SKDU||UID,审核DataUse的UID,当确定DataUse是可以开通数据访问权限的用户后,则向C_Server提交携带S(Time||UID)SKDU||UID的授权申请;否则向DataUse发送授权失败应答。

步骤S230、C_Server接收到上述授权请求后,验证该授权申请。C_Server根据UID查找对应用户的公钥证书CertDU,然后验证V(S(Time||UID))SKDU,得到Time'和UID'。

检查Time实效性以及UID'?=UID,验证通过,则向DataOwner的客户端发送携带KeyUnit和申请者DataUse的证书CertDU的验证通过结果;验证不通过,则向DataOwner发送验证失败结果。

步骤S240、DataOwner的客户端接收到C_Server发送的验证通过结果后,获取验证通过结果中携带的KeyUnit和CertDU,对共享密钥单元解密D(KeyUnit)SKDO得到共享密钥K,然后利用DataUse的公钥PKDU加密共享密钥,E(K)PKDU,得到共享密码存储单元副本KeyUnit_1,然后将DataUse的标识UID和KeyUnit_1发送给C_Server,并将授权许可应答发送给DataOwner。DataOwner的客户端接收到验证失败结果后,向所述数据使用者发送授权许可失败信息。

步骤S250、C_Server接收DataOwner发送的上述消息,将DataUse的UID和KeyUnit_1存放在所述DataOwner上传的Data相对应的访问权限列表中。

步骤S260、用户需要删除自己的访问权限时,用户的客户端向C_Server发送删除权限请求Req_DelPri(UID),C_Server解析Req_DelPri(UID)中的用户标识UID,在各个Data相对应的访问权限列表中删除UID的权限访问记录。

该实施例提供的一种非共享数据的访问方法的原理示意图如图3所示,包括如下的处理步骤:

步骤S310、用户(DataUse或DataOwner)的客户端向C_Server发送数据访问请求,该数据访问请求中携带用户的UID和FID。C_Server接收到上述数据访问请求后,根据数据访问请求中携带的FID查询C_Server中存储的的目录数据,找到对应的数据存储区,根据该数据存储区获取FID对应的Data的isShared属性。

当用户的客户端选择访问isShared=FALSE的上述Data时,C_Server根据用户的UID验证用户身份确定是否为DataOwner,如果是,则将HashDataUnit和DataUnit发送给DataOwner;否则,不将HashDataUnit和DataUnit发送给DataOwner,流程结束。

步骤S320、DataOwner的客户端利用SKDO对DataUnit进行解密D(DataUnit)SKDO,得到Data',然后对数据进行完整性验证,即验证Hash(Data')?是否和C_Server发送过来的HashDataUnit相等,确定数据是否未被篡改。

步骤S330、当验证Hash(Data')=HashDataUnit,则通过数据完整性验证,即Data'=Data,Data没有被篡改,DataOwner的客户端就可以对Data'进行修改,修改完成后,再次同步,即再次执行上述图1所示的上传数据流程。

该实施例提供的一种共享数据的访问方法的原理示意图如图4所示,包括如下的处理步骤:

步骤S410、用户(DataUse或DataOwner)的客户端向C_Server发送数据访问请求,该数据访问请求中携带用户的UID和FID。C_Server接收到上述数据访问请求后,根据数据访问请求中携带的FID查询C_Server中存储的目录数据,找到对应的数据存储区,根据该数据存储区获取FID对应的Data的isShared属性。

当用户的客户端选择下载isShared=TRUE的上述Data时,C_Server检查请求中携带的UID是否包含在所述Data对应的访问权限列表中,如果是,则判断用户的客户端可以访问所述Data,继续后续流程;否则,则判断用户的客户端不可以访问所述Data,流程结束;

步骤S420、C_Server将所述Data对应的KeyUnit,DataUnit和HashDataUnit发送给用户的客户端,用户的客户端用用户自己的私钥解密KeyUnit,即计算D(KeyUnit)SK(DO|DU)得到共享密钥K。

步骤S430、然后,用户的客户端利用K解密DataUnit,D(DataUnit)SK(DO|DU)即得到Data'。用户的客户端对Data'进行完整性验证,即验证Hash(Data')?=HashDataUnit,确定数据是否未被篡改。

用户的客户端如果需要同步修改后的Data',则再执行上述图1所示的上传数据流程。

实施例二

该实施例提供了一种云存储环境下的数据访问控制系统,其具体实现结构如图5所示,具体可以包括:数据拥有者的客户端、数据使用者的客户端和云服务器。

所述的数据拥有者的客户端,用于向云服务器注册所述数据拥有者的个人信息,当数据拥有者确定需要上传给所述云服务器的数据是共享数据时,所述客户端利用对称密钥加密所述数据,将加密后的所述数据、所述对称密钥、所述数据的哈希运算结果和所述数据的共享属性发送到所述云服务器;

当数据拥有者确定需要上传给所述云服务器的数据是非共享数据时,所述客户端利用自己的公钥加密所述数据,将加密后的所述数据、所述数据的哈希运算结果和所述数据的共享属性发送到所述云服务器。

所述的云服务器,用于存储用户的个人信息,该个人信息包括用户的标识UID和证书,并且将所述数据拥有者的客户端上传的信息进行存储。

进一步地,所述的数据拥有者的客户端,具体用于当数据拥有者需要上传的数据为Data,该Data的文件标识符为FID,该Data为共享数据,共享属性isShared=TRUE时,所述客户端生成一个共享密钥K,利用所述数据拥有者的公钥PKDO对所述共享密钥K进行加密E(K)PKDO,得到KeyUnit;计算E(Data)K,得到DataUnit,并对Data进行哈希运算Hash(Data),得到HashDataUnit,将所述HashDataUnit,DataUnit,KeyUnit、FID和isShared上传到所述云服务器;

进一步地,所述的云服务器,具体用于将所述客户端上传的HashDataUnit,DataUnit,KeyUnit、FID和isShared,以及所述数据拥有者的UID进行关联存储。

进一步地,所述的数据拥有者的客户端,具体用于当数据拥有者需要上传的数据为Data,该Data的文件标识符为FID,该Data为非共享数据,共享属性isShared=FALSE时,对数据文件Data进行哈希运算Hash(Data),得到HashDataUnit,利用所述数据拥有者的公钥PKDO对Data进行加密运算E(Data)PKDO,得到DataUnit,将所述HashDataUnit、DataUnit、FID和isShared上传到所述云服务器;

所述的云服务器,具体用于将所述客户端上传的HashDataUnit,DataUnit,FID和isShared,以及所述数据拥有者的UID进行关联存储。

进一步地,所述的数据使用者的客户端,用于将当前系统时间Time和自己的UID利用自己的私钥SKDU进行签名S(Time||UID)SKDU,得到申请时间戳,向数据拥有者的客户端发送携带所述申请时间戳和自己的UID的数据访问请求;

所述的数据拥有者的客户端,用于获取所述数据访问请求中携带的S(Time||UID)SKDU||UID,审核所述数据使用者的UID,当确定所述数据使用者是可以开通数据访问权限的用户后,则向云服务器提交携带S(Time||UID)SKDU||UID的授权申请;否则,向所述数据使用者的客户端发送授权失败应答;

所述的云服务器,用于接收到所述授权申请后,根据所述数据使用者的UID查找对应的所述数据使用者的公钥证书CertDU,验证V(S(Time||UID))SKDU,得到Time'和UID',检查Time实效性以及UID'?=UID,验证通过,则向所述数据拥有者的客户端发送携带KeyUnit和所述数据使用者的证书CertDU的验证通过结果;验证不通过,向所述数据拥有者的客户端发送验证失败结果;

所述的数据拥有者的客户端,用于接收到验证通过结果后,获取验证通过结果中携带的KeyUnit和CertDU,对共享密钥单元解密D(KeyUnit)SKDO得到共享密钥K,利用所述数据使用者的公钥PKDU加密共享密钥K得到共享密码存储单元副本KeyUnit_1,将授权许可应答消息发送到所述数据使用者,并将所述数据使用者的标识UID和KeyUnit_1发送给所述云服务器;接收到验证失败结果后,向所述数据使用者发送授权许可失败信息;

所述的云服务器,用于将所述数据使用者的UID和KeyUnit_1存放在所述数据拥有者上传的Data相对应的访问权限列表中。

进一步地,所述的数据拥有者或者所述数据使用者的客户端,具体用于向所述云服务器发送携带自己的UID和FID的数据访问请求;

所述的云服务器,具体用于根据所述数据访问请求中携带的FID查询云服务器中存储的的目录数据,找到对应的数据存储区,根据该数据存储区获取所述FID对应的Data的isShared属性;当所述数据拥有者或者所述数据使用者的客户端选择访问isShared=FALSE的所述Data时,根据所述数据拥有者或者所述数据使用者的UID验证用户身份是否为数据拥有者,如果是,则将所述Data对应的HashDataUnit和DataUnit发送给所述用户的客户端;

所述数据拥有者或者所述数据使用者的客户端,具体用于利用用户自己的SKDO对所述DataUnit进行解密D(DataUnit)SKDO,得到Data',当验证Hash(Data')=HashDataUnit后,则确定所述Data没有被篡改,Data'=Data,所述用户的客户端对所述Data'进行处理。

进一步地,所述的数据拥有者或者所述数据使用者的客户端,具体用于向所述云服务器发送携带自己的UID的数据访问请求;

所述的云服务器,具体用于根据所述数据访问请求中携带的FID查询所述云服务器中存储的的目录数据,找到对应的数据存储区,根据该数据存储区获取所述FID对应的Data的isShared属性;当所述数据拥有者或者所述数据使用者的客户端选择访问isShared=TRUE的所述Data时,检查请求中携带的UID是否包含在所述Data对应的访问权限列表中,如果是,则判断数据拥有者或者所述数据使用者的客户端可以访问所述Data,继续后续流程;否则,则判断数据拥有者或者所述数据使用者的客户端不可以访问所述Data,流程结束;将所述Data对应的KeyUnit,DataUnit和HashDataUnit发送给用户的客户端;

所述数据拥有者或者所述数据使用者的客户端,具体用于用用户自己的私钥解密KeyUnit,即计算D(KeyUnit)SK(DO|DU)得到共享密钥K;利用K解密DataUnit得到Data',验证Hash(Data')=HashDataUnit后,Data'=Data,所述用户的客户端对所述Data'进行处理。

本发明实施例的系统进行云存储环境下的数据访问控制的具体过程与前述方法实施例类似,此处不再赘述。

综上所述,本发明实施例实现了一种云存储下的安全数据访问控制方法,保证了用户数据的机密性和完整性,同时对用户文件机密性进行了划分,从而更好的实现数据共享下的权限控制,有效提供了提高云存储下的数据访问控制的安全性。

本发明实施例通过区分不同数据共享类型,有效提高非共享文件的访问速度。数据加密密钥对云服务器不可见,防止云服务提供商对用户数据进行非法利用,保证了数据的机密性。数据使用者和数据拥有者之间的共享密钥传递利用云服务器作为中间介质,提高了密钥传递的安全性,同时不要求双方同时在线进行授权,提高了授权的效率。

本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号