本发明属于计算机技术领域,更具体地,涉及一种数据存储与共享系统。
背景技术:
随着云计算概念的兴起和普及,在云计算概念上延伸和衍生发展出来的云存储技术的应用也越来越广泛。云存储是指通过集群应用、网格技术或分布式文件系统等技术,把网络中各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统,从而可以达到节约存储空间的目的。简单来说,云存储就是将存储资源放到云端上供用户存取的一种新兴方案,用户可以在任何时间、任何地方,通过任何可连网的装置连接到云存储服务器上对数据进行存取操作。
虽然云存储为用户提供了一种方便快捷而又节约存储空间的存储方法,但是在使用云存储技术时也带来了一些安全隐患。例如:
1、用户数据以明文形式存储于服务器,百度云可以任意读取用户数据;
2、在上传和下载的过程中,文件能够被黑客窃听并读取;
3、好友间共享文件时,数据可以被黑客窃听并读取;
4、文件的统一资源定位符(Uniform Resource Locator,URL)可以被黑客获取并截取用户数据;
5、黑客可以对用户数据进行任意篡改。
因此,在使用百度云盘时,总结出来即是有以下三个不安全因素:云端不可信、网络攻击者的窃听、云端被攻击时对用户数据的威胁。虽然用户可以使用对本地文件进行加密上传的方法,但是对需要共享的加密文件来说,对称密钥的分发又有着低效、繁琐和不安全等缺点。
因此,如何在保证数据安全存储的同时又可以提高数据共享的效率是业界亟需解决的难题。
技术实现要素:
针对现有技术的以上缺陷或改进需求,本发明提供了一种数据存储与共享系统,其目的在于在保证用户隐私数据安全上传的同时,又能以简便高效的方法实现加密文件的共享,由此解决目前的云存储平台在文件存储与文件共享等各方面存在的安全隐患的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种数据存储与共享系统,包括:第一终端、云服务器、第二终端:所述第一终端用于生成主密钥;所述第二终端用于生成一对公私钥对;所述第一终端还用于以待加密的文件集合、待加密的文件的文件名集合以及目标邮箱地址作为输入,将所述主密钥分别与所述文件名集合中的各文件名进行加密处理生成对称子密钥集合,使用所述对称子密钥集合中的对称子密钥对所述文件集合中的文件进行加密产生密文文件集合,并将所述密文文件集合上传到所述云服务器;所述第二终端还用于从所述云服务器下载目标密文文件,并向所述目标邮箱地址发送请求邮件,所述请求邮件中包含请求共享的文件的文件名及所述公私钥对中的公钥;所述第一终端还用于接收用户输入的针对所述请求邮件的响应指令,若所述响应指令是同意共享,则通过所述主密钥以及所述请求共享的文件的文件名生成目标对称子密钥,使用所述公私钥对中的公钥加密所述目标对称子密钥,并通过邮件向所述第二终端回复由所述公私钥对中的公钥加密的密文,若所述响应指令是拒绝共享,则通过邮件向所述第二终端回复拒绝指令;所述第二终端还用于在接收到所述第一终端发送的由所述公私钥对中的公钥加密的密文之后,使用所述公私钥对中的私钥解密由所述公私钥对中的公钥加密的密文,得到所述目标对称子密钥,用所述目标对称子密钥解密所述目标密文文件得到明文文件,完成文件共享。
优选地,所述密文文件集合中的各密文文件包括:所述目标邮箱地址、文件名、与所述文件名对应的文件的加密文件以及与所述文件名对应的文件的哈希值。
优选地,在所述用所述目标对称子密钥解密所述目标密文文件得到明文文件之后,所述第二终端还用于计算所述明文文件的哈希值;判断所述明文文件的哈希值与所述文件名对应的文件的哈希值是否相等;若相等,则得到所述明文文件,完成文件共享。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)由于本发明采用加密上传的方式,在云服务器端存储的是经过加密的密文文件,因此可以实现文件的安全云存储,在其他用户需要使用云服务器中的文件时,需要对该文件进行解密,因此可以实现文件的安全共享;
(2)通过邮件系统向文件共享者发送请求邮件,可以实现简便的共享请求与应答;
(3)使用邮箱系统解决公钥系统的身份认证问题,避免了复杂的公钥基础设施建设;
(4)通过邮件系统向被请求者发送对称子密钥,解决了对称子密钥的安全分发问题;
(5)本发明中只需要通过邮件系统请求是否可以共享文件,可以实现文件高效的自动加解密功能。
附图说明
图1是本发明实施例公开的一种数据存储与共享系统的结构示意图;
图2是本发明实施例公开的一种数据存储与共享系统的工作方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,为本发明实施例公开的一种数据存储与共享系统的结构示意图,其中,第一终端与第二终端可以为诸如手机、笔记本电脑、台式电脑、PDA等终端,第一终端用于向云服务器发送经过加密的密文文件集合,第二终端用于从云服务器下载需要的密文文件,并通过邮箱系统向第一终端发送密钥请求邮件,请求对密文文件进行解密的目标密钥,第一终端在接收到密钥请求邮件之后,将经过加密保护的目标密钥发送给第二终端,第二终端接收到经过加密保护的目标密钥之后,用自身的私钥进行解密得到目标密钥,然后用该目标密钥解密密文文件,得到明文文件。
如图2所示,为本发明实施例公开的一种数据存储与共享系统的工作方法流程图。包括:
201:第一终端随机选定一个主密钥K,并选择一个哈希函数H;
202:第二终端判断是否存在公私钥对,若不存在,则生成一对公私钥对(PK,SK);
其中,可以采用公钥加密方案中的密钥生成算法RSA.Gen(λ),产生公私钥对(PK,SK),其中,λ为安全常数。
203:第一终端以待加密的文件集合、待加密的文件的文件名集合以及目标邮箱地址作为输入,将主密钥分别与文件名集合中的各文件名进行加密处理生成对称子密钥集合,使用对称子密钥集合中的对称子密钥对文件集合中的文件进行加密产生密文文件集合;
例如,将待加密的文件集合表示为M=(M1,M2,…,Mn),将待加密的文件的文件名集合表示为W=(W1,W2,…,Wn),其中,文件集合M中的各文件Mn与文件名集合W中的各文件名Wn一一对应,将目标邮箱地址表示为D。首先计算出对称子密钥集合:
Ke=(K1,K2,…,Kn),其中,Ki=H(Wi,K),1≤i≤n;
使用SM4对称加密算法和SM3摘要算法产生密文文件集合:
C=(C1,C2,…,Cn),其中,
Ci=SM4.Enc(Ki,Mi)||SM3(Mi)||D||Wi,1≤i≤n;
即,密文文件集合中的每个密文文件Ci包括:文件名Wi,目标邮箱地址D,将与文件名Wi对应的文件Mi加密后的加密文件C[i,1]以及文件Mi的哈希值C[i,2]。
204:登陆云服务器,将密文文件集合上传到云服务器;
205:第二终端登陆云服务器,从云服务器中下载目标密文文件;
第二终端通过相同的账号密码登陆云服务器,根据云服务器提供的文件名,选择需要下载的目标密文文件,例如Ci,此密文文件中包括目标邮箱地址D,文件名Wi,与文件名Wi对应的文件的加密文件C[i,1]以及文件Mi的哈希值C[i,2]。
206:第二终端向目标邮箱地址对应的用户发送请求邮件,该请求邮件中包含请求共享的文件的文件名及公私钥对中的公钥PK;
通过步骤205获取到密文文件Ci之后,向目标邮箱D发送包含文件名Wi以及公钥PK的邮件。
207:第一终端接收用户输入的针对上述请求邮件的响应指令;
208:若同意共享,则通过主密钥K以及请求共享的文件的文件名生成目标对称子密钥,使用公私钥对中的公钥PK加密该目标对称子密钥,并通过邮件回复公私钥对中的公钥PK加密的密文;
可选地,如果目标邮箱D对应的用户同意共享文件Ci,则第一终端计算出目标对称子密钥Ki=H(Wi,K),然后使用公钥加密方案加密该目标对称子秘钥产生密文CK=RSA.Enc(PK,Ki),并通过邮件将密文CK回复给第二终端对应的用户。
209:若拒绝共享,则通过邮件回复拒绝指令,流程结束;
210:第二终端在接收到第一终端发送的公私钥对中的公钥PK加密的密文之后,使用公私钥对中的私钥SK解密公私钥对中的公钥PK加密的密文,得到目标对称子密钥,用该目标对称子密钥解密目标密文文件得到明文文件,完成文件共享。
可选地,第二终端接收到密文CK之后,使用公钥加密方案解密密文CK,得到目标对称子秘钥Ki=RSA.Dec(SK,CK),使用目标对称子秘钥Ki解密密文文件Ci,得到明文文件P[i,1]||P[i,2]=SM4.Dec(Ki,C[i,1]),其中P[i,1]表示解密出的原始文件,P[i,2]表示解密出的原始文件的哈希值,验证解密出的原始文件的哈希值P[i,2]是否与SM3(P[i,1])相等,如果不相等,结束流程,如果相等,得到明文Mi=P[i,1]。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。