云存储环境下的数据访问控制方法和系统的制作方法
【技术领域】
[0001]本发明涉及网络通信技术领域,尤其涉及一种云存储环境下的数据访问控制方法和系统。
【背景技术】
[0002]随着大数据时代的到来,云存储已经成为未来存储发展的一种必然趋势,不同用户都将自己的文件上传到云端,由云存储提供商提供统一的数据存储和业务访问,保证数据的安全性并节约存储空间。数据拥有者可以授权其他用户下载和使用自己的文件,通过共享和数据同步的方式来实现不同用户间的协同工作。虽然云存储能够方便的实现用户数据在不同设备上面的同步和共享,节约成本。但是这些隐私的用户数据放在公共的云存储中也存在着巨大的安全隐患。
[0003]现有技术中的一种云存储环境下的数据访问方法如下:数据拥有者计算需要上传的文件的哈希值,然后利用用户密钥对文件和哈希值进行加密,最后将加密结果和哈希值上传到云端。通过这种方案,云存储的服务提供商和没有权限的窃听者均不能得到数据内容。用户从云端中取回文件时,先对加密结果进行解密,然后对解密后的文件进行哈希运算,将哈希运算的结果同存放在云端中的哈希值进行比较,如果相符,则该文件是完整未经篡改的。其他用户想要访问这个数据,需要向数据拥有者申请密钥,从而实现数据共享。
[0004]上述现有技术中的云存储环境下的数据访问方法的缺点如下:存在云服务提供商对用户数据进行非法利用的可能;该方案中的密钥传递过程必须要求申请者和拥有者同时在线,才能完成密钥传递过程。
【发明内容】
[0005]本发明的实施例提供了一种云存储环境下的数据访问控制方法和系统,以提高云存储下的数据访问控制的安全性。
[0006]本发明提供了如下方案:
[0007]一种云存储环境下的数据访问控制方法,包括:
[0008]用户通过客户端向云服务器注册个人信息,在所述云服务器中存储用户的个人信息,该个人信息包括用户的标识UID和证书;
[0009]当数据拥有者确定需要上传给所述云服务器的数据是共享数据时,所述数据拥有者的客户端利用对称密钥加密所述数据,将加密后的所述数据、所述对称密钥、所述数据的哈希运算结果和所述数据的共享属性发送到所述云服务器;
[0010]当数据拥有者确定需要上传给所述云服务器的数据是非共享数据时,所述数据拥有者的客户端利用自己的公钥加密所述数据,将加密后的所述数据、所述数据的哈希运算结果和所述数据的共享属性发送到所述云服务器。
[0011]所述的当数据拥有者确定需要上传给所述云服务器的数据是共享数据时,所述数据拥有者的客户端利用对称密钥加密所述数据,将加密后的所述数据、所述对称密钥、所述数据的哈希运算结果和所述数据的共享属性发送到所述云服务器,包括:
[0012]数据拥有者需要上传的数据为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上传到所述云服务器;
[0013]所述云服务器将所述客户端上传的HashDataUnit, DataUnit, KeyUnit, FID和isShared,以及所述数据拥有者的UID进行关联存储。
[0014]所述的当数据拥有者确定需要上传给所述云服务器的数据是非共享数据时,所述数据拥有者的客户端利用自己的公钥加密所述数据,将加密后的所述数据、所述数据的哈希运算结果和所述数据的共享属性发送到所述云服务器,包括:
[0015]数据拥有者需要上传的数据为Data,该Data的文件标识符为FID,该Data为非共享数据,共享属性isShared=FALSE,所述数据拥有者的客户端对数据文件Data进行哈希运算Hash (Data),得到HashDataUnit,利用所述数据拥有者的公钥PKDO对Data进行加密运算 E (Data) PKD0,得到 DataUnit,所述客户端将所述 HashDataUnit、DataUnit, FID 和isShared上传到所述云服务器;
[0016]所述云服务器将所述客户端上传的HashDataUnit, DataUnit, FID和isShared,以及所述数据拥有者的UID进行关联存储。
[0017]所述的方法还包括:
[0018]数据使用者的客户端将当前系统时间Time和自己的UID利用自己的私钥SKDU进行签名S (Time I IUID) SKDU,得到申请时间戳,所述数据使用者的客户端向数据拥有者的客户端发送携带所述申请时间戳和自己的WD的数据访问请求;
[0019]所述数据拥有者的客户端获取所述数据访问请求中携带的S(Time I |UID)SKDUl |nD,审核所述数据使用者的WD,当确定所述数据使用者是可以开通数据访问权限的用户后,则向云服务器提交携带S (Time I I UID) SKDUI UID的授权申请;否则,向所述数据使用者的客户端发送授权失败应答;
[0020]所述云服务器接收到所述授权申请后,根据所述数据使用者的UID查找对应的所述数据使用者的公钥证书CertDU,验证V (S (Time | UID)) SKDU,得到Time,和UID,,验证Time实效性以及WD’ ?=UID,验证通过,则所述云服务器向所述数据拥有者的客户端发送携带KeyUnit和所述数据使用者的证书CertDU的验证通过结果;验证不通过,向所述数据拥有者的客户端发送验证失败结果;
[0021]所述数据拥有者的客户端接收到验证通过结果后,获取验证通过结果中携带的KeyUnit和CertDU,对共享密钥单元解密D (KeyUnit) SKDO得到共享密钥K,利用所述数据使用者的公钥PKDU加密共享密钥K得到共享密码存储单元副本KeyUnit_l,所述数据拥有者的客户端将授权许可应答消息发送到所述数据使用者,并将所述数据使用者的标识UID和KeyUnit_l发送给所述云服务器,所述云服务器将所述数据使用者的UID和KeyUnit_l存放在所述数据拥有者上传的Data相对应的访问权限列表中;所述数据拥有者的客户端接收到验证失败结果后,向所述数据使用者发送授权许可失败信息。
[0022]所述的方法还包括:
[0023]用户的客户端向所述云服务器发送携带自己的UID和FID的数据访问请求,所述云服务器根据所述数据访问请求中携带的FID查询云服务器中存储的的目录数据,找到对应的数据存储区,根据该数据存储区获取所述FID对应的Data的isShared属性;
[0024]当所述用户的客户端选择访问isShared=FALSE的所述Data时,所述云服务器根据所述用户的UID验证所述用户身份是否为数据拥有者,如果是,则将所述Data对应的HashDataUnit和DataUnit发送给所述用户的客户端;
[0025]所述用户的客户端利用用户自己的SKDO对所述DataUnit进行解密D (DataUnit)SKDO,得到Data’,当验证Hash (Data’) =HashDataUnit后,则确定所述Data没有被篡改,Data’ =Data,所述用户的客户端对所述Data’进行处理。
[0026]所述的方法还包括:
[0027]用户的客户端向所述云服务器发送携带自己的WD的数据访问请求,所述云服务器根据所述数据访问请求中携带的FID查询所述云服务器中存储的的目录数据,找到对应的数据存储区,根据该数据存储区获取所述FID对应的Data的isShared属性;
[0028]当所述用户的客户端选择访问isShared=TRUE的所述Data时,所述云服务器检查请求中携带的UID是否包含在所述Data对应的访问权限列表中,如果是,则判断用户的客户端可以访问所述Data,继续后续流程;否则,则判断用户的客户端不可以访问所述Data,流程结束;
[0029]所述云服务器将所述Data对应的KeyUnit, DataUnit和HashDataUnit发送给用户的客户端,所述用户的客户端用用户自己的私钥解密KeyUnit,即计算D(KeyUnit)SK(DOlDU)得到共享密钥K;
[0030]所述用户的客户端利用K解密DataUnit得到Data’ ,验证Hash (Data’) =HashDataUnit后,Data’ =Data,所述用户的客户端对所述Data’进行处理。
[0031]一种云存储环境下的数据访问控制系统,包括:数据拥有者的客户端和云服务器,
[0032]所述的数据拥有者的客户端,用于向云服务器注册所述数据拥有者的个人信息,当数据拥有者确定需要上传给所述云服务器的数据是共享数据时,所述客户端利用对称密钥加密所述数据,将加密后的所述数据、所述对称密钥、所述数据的哈希运算结果和所述数据的共享属性发送到所述云服务器;
[0033]当数据拥有者确定需要上传给所述云服务器的数据是非共享数据时,所述客户端利用自己的公钥加密所述数据,将加密后的所述数据、所述数据的哈希运算结果和所述数据的共享属性发送到所述云服务器。
[0034]所述的云服务器,用于存储用户的个人信息,该个人信息包括用户的标识UID和证书,并且将所述数据拥有者的客户端上传的信息进行存储。
[0035]所述的数据拥有者的客户端,具体用于当数据拥有者需要上传的数据为Data,该Data的文件标识符为FID,该Data为共享数据,共享属性isShared=TRUE时,所述客户端生成一个共享密钥K,利用所述数据拥有者的公钥PKDO对所述共享密钥K进行加密E(K)PKD0,得到 KeyUnit ;计算 E (Data) K,得到 DataUnit,并对 Data 进行哈希运算 Hash(Data),得到 HashDataUnit,将所述 HashDataUnit, DataUnit, KeyUnit、FID 和 isShared 上传到所述云服务器;
[0036]所述的云服务器,具体用于将所述客户端上传的HashDataUnit, DataUnit,KeyUnit、FID和isShar