一种云数据安全存储方法和系统与流程

文档序号:13141854阅读:1240来源:国知局
一种云数据安全存储方法和系统与流程

本发明涉及云数据安全存储方法和系统。



背景技术:

随着云服务技术的发展,越来越多的用户选择将自己的数据存储在云端服务器上,虽然已有的各种私有云、公有云或混合云的数据隔离技术能够将不同用户的数据隔离开来,但就单个用户而言,如何保证自己的数据安全甚至个人隐私需要一个完整的安全解决方案。很多数据信息涉及个人隐私和安全,虽然商家通常承诺保证用户信息的安全,对单独用户来说,信息的存储和查阅主动权都在服务端,若个人信息被浏览、下载、以致公开都完全不由个人所控制,因此,存在一定的隐患。本申请通过对用户数据的加密存储、用户设置安全码认证实现了对个人数据信息的完全保护,使得服务器端无法获取个人信息的真实内容,极大提高了信息的安全度。

一般用户的口令的存储会用sha256或sm3等杂凑算法处理后,存储相关的杂凑值,为了防止攻击者撞库或系统操作人员查看,还会进一步的采用加盐等方式保证口令数据的存储及使用安全。

另一方面,传统的sm4、des、aes等对称数据加密算法以及sm2、rsa等非对称加密算法在工作时都需要密钥。将用户口令加盐后杂凑得到的值作为杂凑值,结合用户口令一起形成密钥,用于用户云端数据的安全存储,可以有效保护用户的数据及隐私安全。

基于国家提倡的安全自主可控理念,我们采用国产化算法,包括公钥算法sm2、杂凑算法sm3及对称加密算法sm4。在实际应用中,为了与已有系统对接,或密码服务资源限制,可以适当的对等采用rsa或ecc公钥算法、sha256或sha3杂凑算法以及des、aes等对称算法。



技术实现要素:

为解决上述技术问题,本发明提供了一种新的云数据安全保护方案,不仅能够防止数据信息的恶意泄露,更能够提供用户个人的数据安全保护,防止服务器端或服务提供商对个人数据信息的非授权访问。本发明根据用户输入的身份认证的口令以及系统存储的校验信息,共同生成加解密用的对称密钥,用于保护系统存储的数据。用户的身份认证口令以及个人数据均以密文方式保存在云端,有效地保护了个人隐私和信息安全。

一种云数据安全存储方法,其特征在于包括以下步骤:

用户在注册时,设置特定的用户登录口令pin码作为登录密码,服务器端在保存用户信息时,将该pin码通过加密方式保存为pin码的密文,服务器采用杂凑算法对pin码进行加密,在保存用户信息时,只记录pin码的杂凑值:

serpin=hash(pin||id||time)

其中id为用户id,具有唯一标识性,time为用户的注册时间,

用户注册完成后,在登录过程中,需输入用户设置的pin码,服务器端将根据存储的已加密的serpin码和用户输入的pin码生成加解密密钥key;key=hash(pin||serpin),

用户在登录服务器后,产生数据e需保存、或将本地的数据e上传至系统中时,在上传的过程中,服务器将以key为密钥对数据e进行加密,实际以密文c进行存储:c=enc(e),c只有以key为密钥才能解密。

当用户需要使用系统中的数据、或从系统中下载数据时,需要首先输入pin码进行身份验证,服务器将首先验证pin码的合法性,确认是否与存储的serpin一致,如果一致,则身份验证成功,进一步计算解密密钥key,如果不一致,身份验证失败。

当用户身份验证通过后,服务器根据存储的serpin码和用户的pin码生成加解密密钥key=hash(pin||serpin),用户读取数据时,系统在读取相应的密文c的同时做解密操作:e=dec(c),并将解密后的明文e发送给用户,用户得到真正的数据信息。

当用户更新pin1码时,系统需要用户输入原pin,系统计算serpin1=hash(pin1||id||time)以及key1=hash(pin1||serpin1),系统将数据用key=key=hash(pin||serpin)解密c后,用key1重新加密,得到密文c1。

基于密钥管理和计算复杂度,上述加密算法均可采用对称加密算法。

一种云数据安全存储系统,其特征在于该系统包括:

客户端:用户在注册时,设置特定的用户登录口令pin码作为登录密码,

服务器端:在保存用户信息时,将该pin码通过加密方式保存为pin码的密文,服务器采用杂凑算法对pin码进行加密,在保存用户信息时,只记录pin码的杂凑值:

serpin=hash(pin||id||time)

其中id为用户id,具有唯一标识性,time为用户的注册时间,

用户注册完成后,在登录过程中,需输入用户设置的pin码,服务器端将根据存储的已加密的serpin码和用户输入的pin码生成加解密密钥key;key=hash(pin||serpin),

用户在登录服务器后,产生数据e需保存、或将本地的数据e上传至系统中时,在上传的过程中,服务器将以key为密钥对数据e进行加密,实际以密文c进行存储:c=enc(e),c只有以key为密钥才能解密。

所述服务器端进一步包括验证模块:当用户需要使用系统中的数据、或从系统中下载数据时,需要首先输入pin码进行身份验证,验证模块将首先验证pin码的合法性,确认是否与存储的serpin一致,如果一致,则身份验证成功,进一步计算解密密钥key,如果不一致,身份验证失败。

所述服务器端进一步包括解密模块:当收到验证模块发送的用户身份验证成功消息后,服务器的解密模块根据存储的serpin码和用户的pin码生成加解密密钥:key=hash(pin||serpin),用户读取数据时,服务器的解密模块在读取相应的密文c的同时做解密操作:e=dec(c),并将解密后的明文e发送给用户,用户得到真正的数据明文信息。

服务器端进一步包括密钥更新模块:当收到用户需更新pin1码的信息时,服务器需要用户输入原pin,密钥更新模块计算serpin1=hash(pin1||id||time)以及key1=hash(pin1||serpin1),服务器将数据用key=key=hash(pin||serpin)解密c后,用key1重新加密,得到密文c1。

基于密钥管理和计算复杂度,上述加密算法均可采用对称加密算法。

附图说明

图1:用户注册及服务器数据存储流程图

图2:用户访问数据时的身份认证流程图

具体实施方式

为了便于表述,首先对一下技术数据做统一说明:

如图1所示,密钥生成阶段:

步骤s1:用户注册,输入pin码

用户在注册时,设置特定的用户登录口令pin码作为登录密码。该pin码的设定规则可依据需要的计算复杂度进行设定。

步骤s2:服务器对pin码加密,生成serpin,并以serpin进行存储

服务器端在保存用户信息时,将该pin码通过加密方式保存为pin码的密文,服务器采用杂凑算法对pin码进行加密,在保存用户信息时,只记录pin码的杂凑值:

serpin=hash(pin||id||time)

其中id为用户id,具有唯一标识性,time为用户的注册时间,这些要素可以替换。为了防止撞库,服务器需要避免只保存hash(pin)的情况。

由于pin码具有user独占属性,那么服务器端的serpin码对服务器来说具有独占属性,为了保护数据的安全性,只有用户登录系统时才能产解密密钥,密钥设计为:

key=hash(pin||serpin)

基于密钥管理和计算复杂度,上述加密算法均可采用对称加密算法。

s3:根据pin和serpin产生加解密密钥key,对数据进行加密存储。

用户注册完成后,在登录过程中,需输入用户设置的pin码,服务器端将根据存储的已加密的serpin码和用户输入的pin码生成加解密密钥key。

用户在登录服务器后,产生数据e需保存、或将本地的数据e上传至系统中时,在上传的过程中,服务器将以key为密钥对数据e进行加密,实际以密文c进行存储:c=enc(e)

c只有以key为密钥才能解密,所以,在用户没有输入pin的情况下,系统中的数据一直是密文的形式,在这种情况下,即使发生数据泄露的情况,也能保证用户数据和敏感信息的安全。

如图2所示,当服务器端的数据被访问时,将执行以下步骤:

s5:服务器验证pin码合法性,确认与存储的serpin是否一致

当用户需要使用系统中的数据、或从系统中下载数据时,需要首先输入pin码进行身份验证,服务器将首先验证pin码的合法性,确认是否与存储的serpin一致,如果一致,则身份验证成功,进一步计算解密密钥key,如果不一致,身份验证失败。若身份验证失败,可设定失败次数的阈值,当超过阈值时,禁止该用户对数据的访问,或者根据附加的验证方式对用户身份进行核实。

s6:服务器生成加解密密钥key

当用户身份验证通过后,服务器根据存储的serpin码和用户的pin码生成加解密密钥key=hash(pin||serpin)。

s7:解密操作,用户读取明文

用户读取数据时,系统在读取相应的密文c的同时做解密操作:e=dec(c),并将解密后的明文e发送给用户,用户得到真正的数据信息。

为达到更好的安全性能,用户需要定期进行密钥的更新,以提供更为安全的信息保护,密钥的更新执行以下操作:

当用户更新pin1码时,系统需要用户输入原pin,系统计算serpin1=hash(pin1||id||time)以及key1=hash(pin1||serpin1),系统将数据用key=key=hash(pin||serpin)解密c后,用key1重新加密,得到密文c1。

在实际应用过程中,每次更新pin都重新加密数据会增加很多工作量,因此,为简化计算复杂度,系统可随机生成一个密钥serkey,并用serkey作为对数据真正的加密密钥。同时,之前的key用于保护serkey,即用key加密serkey并存储相应的密文。每次更新pin时,只需更新serkey的密文即可,无需重新加密所有数据。

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