数据加密方法、数据解密方法及电子设备
文献发布时间:2023-06-19 09:26:02
技术领域
本发明涉及数据管理技术领域,尤其涉及一种数据加密方法、数据解密方法及电子设备。
背景技术
大的云运营商一般提供密钥管理服务(Key Management Service,KMS),通过应用程序编程接口(Application Programming Interface,API)提供密钥的全生命周期管理,既提供API直接加密小数据,也提供API生成数据密钥(Data Key,DK),来处理大数据或者大文件的加解密。
目前常用的数据加密处理流程如图1所示,为根据现有技术的数据加密方法的流程示意图,步骤包括:通过KMS控制台或者调用接口,创建一个用户主密钥;调用接口创建一个数据密钥DK。KMS会返回一个明文的数据密钥和一个密文的数据密钥;使用明文的数据密钥加密文件,产生密文文件,然后销毁内存中的明文密钥;用户将密文数据密钥和密文文件一同存储到持久化存储设备或服务中。
根据图1的数据加密方法的数据解密方法处理流程如图2所示,为根据现有技术的数据解密方法的流程示意图,包括:从本地文件中读取密文数据密钥;调用KMS服务接口,将密文数据密钥解密为明文数据密钥;用明文数据密钥为本地数据解密,再销毁内存中的明文数据密钥。
但是,上述数据加密方法需要用户在本地持久化储存和读取数据密钥DK的密文,势必增加存储空间,造成存储空间的浪费。
发明内容
本发明实施例提供一种数据加密方法、数据解密方法及电子设备,用以解决现有技术中用户需要在本地持久化储存和读取数据密钥DK的密文造成储藏空间浪费的缺陷,实现简化用户端操作,避免数据密钥在本地的持久化存储的目标。
第一方面,本发明实施例提供一种数据加密方法,包括:
根据用户端请求,生成并反馈数据密钥和密钥标识给所述用户端,以供所述用户端利用所述数据密钥加密数据,生成密文数据,并计算获取所述密文数据的哈希值,以及,保存所述密文数据并销毁所述数据密钥;
接收所述用户端发送的所述密钥标识和所述哈希值,并保存所述密钥标识、所述哈希值和所述密钥标识与所述哈希值的映射关系,完成数据加密。
根据本发明实施例上述第一方面所述的数据加密方法,所述根据用户端请求,生成并反馈数据密钥和密钥标识给所述用户端的步骤具体包括:
根据所述用户端的第一请求,生成用户主密钥和主密钥标识,并将所述主密钥标识反馈给所述用户端,以供所述用户端根据所述主密钥标识,发送生成数据密钥的第二请求;
根据所述第二请求,生成并反馈所述数据密钥和所述密钥标识给所述用户端。
第二方面,本发明实施例提供一种数据加密方法,包括:
向密钥管理系统KMS发送请求,以供所述密钥管理系统KMS根据所述请求,生成并返回数据密钥和密钥标识;
利用所述数据密钥加密数据,生成密文数据,并计算获取所述密文数据的哈希值;
保存所述密文数据,并销毁所述数据密钥;
发送所述密钥标识和所述哈希值给所述密钥管理系统KMS,以供所述密钥管理系统KMS保存所述密钥标识、所述哈希值和所述密钥标识与所述哈希值的映射关系,完成数据加密。
根据本发明实施例上述第二方面所述的数据加密方法,所述向密钥管理系统KMS发送请求,以供所述密钥管理系统KMS根据所述请求,生成并返回数据密钥和密钥标识的步骤具体包括:
向所述密钥管理系统KMS发送第一请求,以供所述密钥管理系统KMS根据所述第一请求,生成用户主密钥和主密钥标识,并返回所述主密钥标识;
根据所述主密钥标识,向所述密钥管理系统KMS发送生成数据密钥的第二请求,以供所述密钥管理系统KMS根据所述第二请求,生成并返回所述数据密钥和所述密钥标识。
根据本发明实施例上述第二方面所述的数据加密方法,所述计算获取所述密文数据的哈希值的步骤具体包括:
计算所述密文数据的部分哈希值和/或全文哈希值。
根据本发明实施例上述第二方面所述的数据加密方法,所述利用所述数据密钥加密数据,生成密文数据的步骤具体包括:
采用对称加密的计数CTR模式,加密所述数据,生成所述密文数据。
第三方面,本发明实施例还提供一种根据上述第一方面所述的数据加密方法的数据解密方法,包括:
接收所述用户端发送的数据解密请求,所述数据解密请求携带有所述用户端根据所述密文数据计算获取的待验证哈希值;
若根据所述待验证哈希值检索到匹配的哈希值,则将所述匹配的哈希值对应的所述数据密钥反馈给所述用户端,以供所述用户端利用所述数据密钥解密所述密文数据,生成明文数据,并销毁所述数据密钥,完成数据解密。
第四方面,本发明实施例还提供一种根据上述第二方面所述的数据加密方法的数据解密方法,包括:
计算所述密文数据的待验证哈希值,并向所述密钥管理系统KMS发送数据解密请求,所述数据解密请求携带有所述待验证哈希值,以供所述密钥管理系统KMS根据所述待验证哈希值进行检索,且若检索到匹配的哈希值,则返回所述匹配的哈希值对应的所述数据密钥;
利用所述数据密钥解密所述密文数据,生成明文数据,并销毁所述数据密钥,完成数据解密。
根据本发明实施例上述第四方面所述的数据解密方法,若所述哈希值包括全文哈希值和部分哈希值,且所述待验证哈希值为待验证部分哈希值,则在所述利用所述数据密钥解密所述密文数据的步骤之后还包括:计算所述密文数据的待验证全文哈希值,且若判断所述待验证全文哈希值与所述密钥管理系统KMS返回的全文哈希值一致,则判定所述密文数据是完整的。
第五方面,本发明实施例还提供一种密钥管理系统,包括:
第一处理模块,用于根据用户端请求,生成并反馈数据密钥和密钥标识给所述用户端,以供所述用户端利用所述数据密钥加密数据,生成密文数据,并计算获取所述密文数据的哈希值,以及,保存所述密文数据并销毁所述数据密钥;
第二处理模块,用于接收所述用户端发送的所述密钥标识和所述哈希值,并保存所述密钥标识、所述哈希值和所述密钥标识与所述哈希值的映射关系,完成数据加密。
第六方面,本发明实施例还提供一种用户端,包括:
第一处理模块,用于向密钥管理系统KMS发送请求,以供所述密钥管理系统KMS根据所述请求,生成并返回数据密钥和密钥标识;
第二处理模块,用于利用所述数据密钥加密数据,生成密文数据,并计算获取所述密文数据的哈希值;
第三处理模块,用于保存所述密文数据,并销毁所述数据密钥;
第四处理模块,用于发送所述密钥标识和所述哈希值给所述密钥管理系统KMS,以供所述密钥管理系统KMS保存所述密钥标识、所述哈希值和所述密钥标识与所述哈希值的映射关系,完成数据加密。
第七方面,本发明实施例还提供一种根据上述第五方面所述的密钥管理系统的数据解密密钥管理系统,包括:
第三处理模块,用于接收所述用户端发送的数据解密请求,所述数据解密请求携带有所述用户端根据所述密文数据计算获取的待验证哈希值;
第四处理模块,用于若根据所述待验证哈希值检索到匹配的哈希值,则将所述匹配的哈希值对应的所述数据密钥反馈给所述用户端,以供所述用户端利用所述数据密钥解密所述密文数据,生成明文数据,并销毁所述数据密钥,完成数据解密。
第八方面,本发明实施例还提供一种根据上述第六方面所述的用户端的数据解密用户端,包括:
第五处理模块,用于计算所述密文数据的待验证哈希值,并向所述密钥管理系统KMS发送数据解密请求,所述数据解密请求携带有所述待验证哈希值,以供所述密钥管理系统KMS根据所述待验证哈希值进行检索,且若检索到匹配的所述哈希值,则返回所述匹配的哈希值对应的所述数据密钥;
第六处理模块,用于利用所述数据密钥解密所述密文数据,生成明文数据,并销毁所述数据密钥,完成数据解密。
第九方面,本发明实施例还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上述第一方面或第二方面所述的数据加密方法的步骤,或者,实现如上述第三方面和第四方面所述的数据解密方法的步骤。
第十方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机指令,所述计算机指令被计算机执行时,实现如上述第一方面或第二方面所述的数据加密方法的步骤,或者,实现如上述第三方面和第四方面所述的数据解密方法的步骤。
本发明实施例提供的数据加密方法、数据解密方法及电子设备,通过在云端提供哈希值和数据密钥关联的持久化储存,能够避免数据密钥在用户端的持久化储存,从而有效节省了用户端的存储空间,且简化了用户端的操作,提升了安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据现有技术的数据加密方法的流程示意图;
图2为根据现有技术的数据解密方法的流程示意图;
图3为本发明一实施例提供的数据加密方法的流程示意图;
图4为根据本发明一实施例提供的数据加密方法的数据交互示意图;
图5为本发明另一实施例提供的数据加密方法的流程示意图;
图6为本发明一实施例提供的数据解密方法的流程示意图;
图7为本发明另一实施例提供的数据解密方法的流程示意图;
图8为根据本发明一实施例提供的数据解密方法的数据交互示意图;
图9为本发明实施例提供的密钥管理系统的结构示意图;
图10为本发明实施例提供的用户端的结构示意图;
图11为本发明一实施例提供的数据解密密钥管理系统的结构示意图;
图12为本发明一实施例提供的数据解密用户端的结构示意图;
图13为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例针对现有技术中用户端需要将数据密钥和加密数据一起存储到本地存储中造成用户端存储空间被更多占用的问题,通过在云端提供哈希值和数据密钥关联的持久化储存,能够避免数据密钥在用户端的持久化储存,从而有效节省了用户端的存储空间,且简化了用户端的操作。以下将具体通过多个实施例对本发明实施例进行展开说明和介绍。
作为本发明实施例的第一个方面,图3为本发明一实施例提供的数据加密方法的流程示意图,该方法可用于密钥管理系统KMS,如图3所示,该方法包括:
S301,根据用户端请求,生成并反馈数据密钥和密钥标识给用户端,以供用户端利用数据密钥加密数据,生成密文数据,并计算获取密文数据的哈希值,以及,保存密文数据并销毁数据密钥。
可以理解为,当用户端需要对本地数据或者文件进行加密时,向密钥管理系统KMS发送请求,以使KMS针对该请求生成对应的数据密钥。KMS在收到用户端发送的请求后,根据该请求生成对应的数据密钥,同时生成密钥标识,并将生成的数据密钥和密钥标识一起返回给用户端。
用户端在收到数据密钥和密钥标识后,可以将数据密钥存入用户端内存或者用户端的加密设备中,并利用数据密钥将待加密数据进行加密,生成密文数据。之后用户端将密文数据保存到本地存储中,并销毁用户端内存或者用户端中加密设备中的数据密钥。同时,在加密数据生成密文数据之后,用户端还会计算得到密文数据的哈希值。最后,用户端会将得到的密钥标识和密文数据的哈希值一起发送到KMS中进行存储。
可以理解的是,其中的哈希值可以是部分哈希值,或者也可以是全文哈希值,或者也可以是部分哈希值和全文哈希值的组合,或者也可以是部分密文或部分密文的变换,本发明实施例对此并不作限制。另外,本发明实施例中哈希值可以是SHA1或SHA256或SM3等,本发明实施例不限定具体的哈希算法。并且,本发明实施例也不限定哈希值、密钥和密钥标识的结构,以及具体的映射关系。同时在计算部分哈希值时,不限定密文数据的位置和长度。
S302,接收用户端发送的密钥标识和哈希值,并保存密钥标识、哈希值和密钥标识与哈希值的映射关系,完成数据加密。
可以理解为,在用户端向KMS发送密钥标识和哈希值后,KMS接收到该密钥标识和哈希值,并建立密钥标识和哈希值之间的映射关系,之后将密钥标识、哈希值以及二者间映射关系一起存储到云端存储空间中,实现用户端数据的加密。
可以理解的是,当用户端发送的是密文数据的部分哈希值时,KMS建立的是部分哈希值和密钥标识的映射关系;当用户端发送的是密文数据的全文哈希值时,KMS建立的是全文哈希值和密钥标识的映射关系;当用户端发送的是密文数据的部分哈希值时,KMS建立的是部分哈希值、全文哈希值与密钥标识三者间的映射关系。
本发明实施例提供的数据加密方法,通过在云端提供哈希值和数据密钥关联的持久化储存,能够避免数据密钥在用户端的持久化储存,从而有效节省了用户端的存储空间,且简化了用户端的操作。
其中,根据上述第一方面各实施例提供的数据加密方法可选的,根据用户端请求,生成并反馈数据密钥和密钥标识给用户端的步骤具体包括:
根据用户端的第一请求,生成用户主密钥和主密钥标识,并将主密钥标识反馈给用户端,以供用户端根据主密钥标识,发送生成数据密钥的第二请求;
根据第二请求,生成并反馈数据密钥和密钥标识给用户端。
可以理解为,本发明实施例在处理用户端对生成数据密钥的请求时,具体通过用户端和KMS的两次交互实现,也即:根据用户端的请求,先生成主密钥及主密钥标识,再根据主密钥标识生成数据密钥反馈给用户端。如图4所示,为根据本发明一实施例提供的数据加密方法的数据交互示意图,图中:
在用户端向KMS请求数据密钥时,用户端需要先向KMS发送生成主密钥的第一请求。KMS在接收到用户端发送的第一请求后,根据该第一请求,通过KMS控制台或调用API,创建一个用户主密钥MK,同时生成主密钥标识MKID,并将主密钥标识MKID返回给用户端。之后,用户端使用接收到的主密钥标识MKID,继续向KMS发送生成数据密钥的第二请求。其中,API可使用HTTPS协议来保证自身安全性,也可以使用其他通信和安全协议。
之后,KMS在接收到用户端发来的第二请求时,根据第二请求携带的主密钥标识,通过调用API创建一个对应的数据密钥DK,同时生成密钥标识DKID,并将该数据密钥DK和密钥标识DKID一起反馈给用户端。
再之后,用户端从本地存储中读取明文数据,并根据接收到的数据密钥DK加密明文数据,产生密文数据。之后用户端将密文数据存入本地存储,并销毁内存中的数据密钥DK。而在加密数据之后,用户端还计算得到密文数据的哈希值,可以是部分哈希值和/或全文哈希值。然后,用户端将得到的密钥标识DKID和哈希值一起发送到KMS进行存储。
最后,KMS根据接收到的密钥标识DKID和哈希值,建立二者间映射关系,并将该映射关系与密钥标识DKID和哈希值一起存入云端存储,实现用户端中明文数据的加密。
本发明实施例用户端本地无需保存数据密钥(不论是明文还是密文),而是在云端提供哈希值和数据密钥关联的持久化储存,将安全和功能更多地放到了云端,能够有效节省用户端存储空间。同时,通过密文数据的哈希值来关联数据密钥,去掉了数据密钥的加解密处理,提升了性能。
作为本发明实施例的第二个方面,本发明实施例还提供一种数据加密方法,该方法可用于用户端,如图5所示,为本发明另一实施例提供的数据加密方法的流程示意图,包括:
S501,向密钥管理系统KMS发送请求,以供密钥管理系统KMS根据请求,生成并返回数据密钥和密钥标识。
具体而言,当用户端需要对本地数据或者文件进行加密时,向密钥管理系统KMS发送请求,以使KMS针对该请求生成对应的数据密钥。KMS在收到用户端发送的请求后,根据该请求生成对应的数据密钥,同时生成密钥标识,并将生成的数据密钥和密钥标识一起返回给用户端。
S502,利用数据密钥加密数据,生成密文数据,并计算获取密文数据的哈希值。
具体而言,用户端在收到数据密钥和密钥标识后,可以将数据密钥存入用户端内存或者用户端的加密设备中,并利用数据密钥将待加密数据进行加密,生成密文数据。同时,在加密数据生成密文数据之后,用户端还会计算得到密文数据的哈希值。
S503,保存密文数据,并销毁数据密钥。
具体而言,在得到密文数据之后,用户端将密文数据保存到本地存储中,并销毁用户端内存或者用户端中加密设备中的数据密钥。
S504,发送密钥标识和哈希值给密钥管理系统KMS,以供密钥管理系统KMS保存密钥标识、哈希值和密钥标识与哈希值的映射关系,完成数据加密。
具体而言,在计算得到密文数据的哈希值之后,用户端会将得到的密钥标识和密文数据的哈希值一起发送到KMS中进行存储。KMS接收到该密钥标识和哈希值,并建立密钥标识和哈希值之间的映射关系,之后将密钥标识、哈希值以及二者间映射关系一起存储到云端存储空间中,实现用户端数据的加密。
本发明实施例提供的数据加密方法,通过在云端提供哈希值和数据密钥关联的持久化储存,能够避免数据密钥在用户端的持久化储存,从而有效节省了用户端的存储空间,且简化了用户端的操作,提升了安全性。
其中,根据上述第二方面各实施例提供的数据加密方法可选的,向密钥管理系统KMS发送请求,以供密钥管理系统KMS根据请求,生成并返回数据密钥和密钥标识的步骤具体包括:
向密钥管理系统KMS发送第一请求,以供密钥管理系统KMS根据第一请求,生成用户主密钥和主密钥标识,并返回主密钥标识;
根据主密钥标识,向密钥管理系统KMS发送生成数据密钥的第二请求,以供密钥管理系统KMS根据第二请求,生成并返回数据密钥和密钥标识。
可以理解为,本发明实施例在向KMS请求数据密钥时,具体通过用户端和KMS的两次交互实现,也即:
在用户端向KMS请求数据密钥时,用户端需要先向KMS发送生成用户主密钥的第一请求。KMS在接收到用户端发送的第一请求后,根据该第一请求,通过KMS控制台或调用API,创建一个用户主密钥MK,同时生成主密钥标识MKID,并将主密钥标识MKID返回给用户端。之后,用户端使用接收到的主密钥标识MKID,继续向KMS发送生成数据密钥的第二请求。
之后,KMS在接收到用户端发来的第二请求时,根据第二请求携带的主密钥标识,通过调用API创建一个对应的数据密钥DK,同时生成密钥标识DKID,并将该数据密钥DK和密钥标识DKID一起反馈给用户端。
本发明实施例在云端提供哈希值和数据密钥关联的持久化储存,将安全和功能更多地放到了云端,能够有效节省用户端存储空间。同时,通过密文数据的哈希值来关联数据密钥,去掉了数据密钥的加解密处理,提升了性能。
其中,根据上述第二方面各实施例提供的数据加密方法可选的,计算获取密文数据的哈希值的步骤具体包括:计算密文数据的部分哈希值和/或全文哈希值。
可以理解为,本发明实施例的哈希值可以是部分哈希值,或者也可以是全文哈希值,或者也可以是部分哈希值和全文哈希值的组合,本发明实施例对此并不作限制。
另外,在根据现有技术进行数据加密时,若把DK的密文和密文数据合并储存,又会改变密文数据的结构和大小,可能造成数据损坏。针对这一问题,根据上述第二方面各实施例提供的数据加密方法可选的,利用数据密钥加密数据,生成密文数据的步骤具体包括:采用对称加密的计数CTR模式,加密数据,生成密文数据。
具体而言,本发明实施例的用户端在使用数据密钥对明文数据进行加密时,采用对称加密的计数CTR模式进行数据加密。可知,计数模式(CTR模式)加密是对一系列输入数据块(称为计数)进行加密,产生一系列的输出块,输出块与明文异或得到密文。因此,通过结合对称加密的CTR模式,本发明实施例能够做到数据加密后长度不变。
作为本发明实施例的第三个方面,本发明实施例根据上述第一方面各实施例的数据加密方法还提供一种数据解密方法,该数据解密方法可用于密钥管理系统KMS,如图6所示,为本发明一实施例提供的数据解密方法的流程示意图,包括:
S601,接收用户端发送的数据解密请求,数据解密请求携带有用户端根据密文数据计算获取的待验证哈希值。
具体而言,在用户端需要对加密的密文数据进行解密处理时,先从本地存储中读取该密文数据,并计算该密文数据的哈希值,作为待验证哈希值。之后,用户端向KMS发送数据解密请求,该数据解密请求中携带有待验证哈希值。KMS通过接收用户端发送的数据解密请求,获取到该待验证哈希值。
S602,若根据待验证哈希值检索到匹配的哈希值,则将匹配的哈希值对应的数据密钥反馈给用户端,以供用户端利用数据密钥解密密文数据,生成明文数据,并销毁数据密钥,完成数据解密。
具体而言,在得到待验证哈希值之后,KMS根据该待验证哈希值在存储空间内检索是否存在匹配或一致的哈希值。若存在,则根据匹配到的哈希值,检索出对应的数据密钥反馈给用户端。用户端在收到该数据密钥之后,使用该数据密钥解密密文数据,生成明文数据,然后将明文数据存入本地存储并销毁数据密钥,实现密文数据的解密。
本发明实施例提供的数据解密方法,通过在云端提供哈希值和数据密钥关联的持久化储存,能够避免数据密钥在用户端的持久化储存,从而有效节省了用户端的存储空间,且简化了用户端的操作,提升了安全性。
作为本发明实施例的第四个方面,本发明实施例根据上述第二方面各实施例的数据加密方法还提供一种数据解密方法,该数据解密方法可用于用户端,如图7所示,为本发明另一实施例提供的数据解密方法的流程示意图,包括:
S701,计算密文数据的待验证哈希值,并向密钥管理系统KMS发送数据解密请求,数据解密请求携带有待验证哈希值,以供密钥管理系统KMS根据待验证哈希值进行检索,且若检索到匹配的哈希值,则返回匹配的哈希值对应的数据密钥。
具体而言,在用户端需要对加密的密文数据进行解密处理时,先从本地存储中读取该密文数据,并计算该密文数据的哈希值,作为待验证哈希值。之后,用户端将该待验证哈希值封装到数据解密请求中发送给KMS。KMS接收数据解密请求,并从中分解出待验证哈希值,然后根据该待验证哈希值在存储空间内检索是否存在匹配或一致的哈希值。若存在,则根据匹配到的哈希值,检索出对应的数据密钥反馈给用户端。
S702,利用数据密钥解密密文数据,生成明文数据,并销毁数据密钥,完成数据解密。
具体而言,用户端接收KMS发送的数据密钥,并使用该数据密钥解密密文数据,生成明文数据,然后将明文数据存入本地存储并销毁数据密钥,实现密文数据的解密。
本发明实施例提供的数据解密方法,通过在云端提供哈希值和数据密钥关联的持久化储存,能够避免数据密钥在用户端的持久化储存,从而有效节省了用户端的存储空间,且简化了用户端的操作,提升了安全性。
其中,根据上述第四方面各实施例提供的数据解密方法可选的,若哈希值包括全文哈希值和部分哈希值,且待验证哈希值为待验证部分哈希值,则在利用数据密钥解密密文数据的步骤之后还包括:计算密文数据的待验证全文哈希值,且若判断待验证全文哈希值与密钥管理系统KMS返回的全文哈希值一致,则判定密文数据是完整的。
可以理解为,本发明实施例的用户端在计算密文数据的哈希值时,包括了对密文数据全文哈希值的计算,由此得到的是待验证全文哈希值。相应的,在数据加密过程中,用户端对密文数据哈希值的计算也包括全文哈希值,且将该全文哈希值一起发送到KMS中进行了存储。如图8所示,为根据本发明一实施例提供的数据解密方法的数据交互示意图,图中:
用户端由本地数据读取出待解密的密文数据,并计算该密文数据的部分哈希值PMD,之后将该部分哈希值PMD发送给KMS。KMS根据该部分哈希值在存储空间内检索,若检索到匹配的部分哈希值,则根据加密过程中存储的映射关系检索出数据密钥和全文哈希值,返回给用户端。
用户端接收到数据密钥,并据此解密密文数据,得到明文数据,之后将明文数据存入本地存储并销毁数据密钥。另外,用户端在解密密文数据时,还计算密文数据的全文哈希值作为待验证全文哈希值,并对比该待验证全文哈希值和KMS返回的全文哈希值,若二者一致,则表明数据是完整的,否则认为数据的完整性被破坏了。
可以理解的是,对于数据的完整性验证,可以根据用户端加密时计算的哈希值的类型,分为以下情形:
其一,用户端在加密时发送的是全文哈希值,则在解密时,用户端发送的一定是待验证全文哈希值。此时KMS若根据待验证全文哈希值检索到相同的全文哈希值,则返回对应的数据密钥,且可以确定密文数据是完整的。若检索不到,则返回失败信息,意味着密文数据的完整性本身就无效了。
其二,用户端加密时发送的是全文哈希值和部分哈希值,则解密时又可分为以下两种情形:用户端发送的可以是待验证全文哈希值,此时KMS若根据待验证全文哈希值检索到相同的全文哈希值,则返回对应的数据密钥,且可以确定密文数据是完整的,若检索不到,则返回失败信息,意味着密文数据的完整性本身就无效了;用户端发送的也可以是待验证部分哈希值,此时KMS可以根据待验证部分哈希值进行检索,且若检索到对应的部分哈希值,则将该部分哈希值对应的全文哈希值和数据密钥返回,以供用户端本地验证完整性,若检索不到,则返回失败信息。
其三,用户端加密时发送的是部分哈希值,则解密时,用户端发送的一定是待验证部分哈希值,此时KMS据此进行检索只能返回数据密钥或者失败信息,不具有数据完整性验证功能。
也就是说,在图8中,可以使用WMD直接作为PMD,该情况下如果能够检索出DK,则表明数据完整性是好的,否则表明完整性被破坏了。当然也可以不使用WMD,该情况下不提供完整性校验功能。
本发明实施通过计算密文数据的全文哈希值,增加了对数据的完整性校验,避免数据丢失。
基于相同的发明构思,本发明实施例根据上述第一方面各实施例还提供一种密钥管理系统,该系统用于在上述第一方面各实施例中实现数据的加密。因此,在上述第一方面各实施例的数据加密方法中的描述和定义,可以用于本发明实施例中各个执行模块的理解,具体可参考上述实施例,此处不在赘述。
根据本发明的一个实施例,密钥管理系统的结构如图9所示,为本发明实施例提供的密钥管理系统的结构示意图,该密钥管理系统可以用于实现上述第一方面各方法实施例中数据的加密,该密钥管理系统包括:第一处理模块901和第二处理模块902。其中:
第一处理模块901用于根据用户端请求,生成并反馈数据密钥和密钥标识给用户端,以供用户端利用数据密钥加密数据,生成密文数据,并计算获取密文数据的哈希值,以及,保存密文数据并销毁数据密钥;第二处理模块902用于接收用户端发送的密钥标识和哈希值,并保存密钥标识、哈希值和密钥标识与哈希值的映射关系,完成数据加密。
具体而言,当用户端需要对本地数据或者文件进行加密时,向第一处理模块901发送请求,以使第一处理模块901针对该请求生成对应的数据密钥。第一处理模块901在收到用户端发送的请求后,根据该请求生成对应的数据密钥,同时生成密钥标识,并将生成的数据密钥和密钥标识一起返回给用户端。
用户端在收到数据密钥和密钥标识后,可以将数据密钥存入用户端内存或者用户端的加密设备中,并利用数据密钥将待加密数据进行加密,生成密文数据。之后用户端将密文数据保存到本地存储中,并销毁用户端内存或者用户端中加密设备中的数据密钥。同时,在加密数据生成密文数据之后,用户端还会计算得到密文数据的哈希值。最后,用户端会将得到的密钥标识和密文数据的哈希值一起发送到第二处理模块902进行存储。
在用户端向第二处理模块902发送密钥标识和哈希值后,第二处理模块902接收到该密钥标识和哈希值,并建立密钥标识和哈希值之间的映射关系,之后将密钥标识、哈希值以及二者间映射关系一起存储到云端存储空间中,实现用户端数据的加密。
本发明实施例提供的密钥管理系统,通过在云端提供哈希值和数据密钥关联的持久化储存,能够避免数据密钥在用户端的持久化储存,从而有效节省了用户端的存储空间,且简化了用户端的操作,提升了安全性。
基于相同的发明构思,本发明实施例根据上述第二方面各实施例还提供一种用户端,该用户端用于在上述第二方面各实施例中实现数据的加密。因此,在上述第二方面各实施例的数据加密方法中的描述和定义,可以用于本发明实施例中各个执行模块的理解,具体可参考上述实施例,此处不在赘述。
根据本发明的一个实施例,用户端的结构如图10所示,为本发明实施例提供的用户端的结构示意图,该用户端可以用于实现上述第二方面各方法实施例中数据的加密,该用户端包括:第一处理模块1001、第二处理模块1002、第三处理模块1003和第四处理模块1004。其中:
第一处理模块1001用于向密钥管理系统KMS发送请求,以供密钥管理系统KMS根据请求,生成并返回数据密钥和密钥标识;第二处理模块1002用于利用数据密钥加密数据,生成密文数据,并计算获取密文数据的哈希值;第三处理模块1003用于保存密文数据,并销毁数据密钥;第四处理模块1004用于发送密钥标识和哈希值给密钥管理系统KMS,以供密钥管理系统KMS保存密钥标识、哈希值和密钥标识与哈希值的映射关系,完成数据加密。
具体而言,当用户端需要对本地数据或者文件进行加密时,第一处理模块1001向密钥管理系统KMS发送请求,以使KMS针对该请求生成对应的数据密钥。KMS在收到用户端发送的请求后,根据该请求生成对应的数据密钥,同时生成密钥标识,并将生成的数据密钥和密钥标识一起返回给第二处理模块1002。
第二处理模块1002在收到数据密钥和密钥标识后,可以将数据密钥存入用户端内存或者用户端的加密设备中,并利用数据密钥将待加密数据进行加密,生成密文数据,发送给第三处理模块1003。同时,在加密数据生成密文数据之后,第二处理模块1002还会计算得到密文数据的哈希值,发送给第四处理模块1004。
在得到密文数据之后,第三处理模块1003将密文数据保存到本地存储中,并销毁用户端内存或者用户端中加密设备中的数据密钥。
在计算得到密文数据的哈希值之后,第四处理模块1004会将得到的密钥标识和密文数据的哈希值一起发送到KMS中进行存储。KMS接收到该密钥标识和哈希值,并建立密钥标识和哈希值之间的映射关系,之后将密钥标识、哈希值以及二者间映射关系一起存储到云端存储空间中,实现用户端数据的加密。
本发明实施例提供的用户端,通过在云端提供哈希值和数据密钥关联的持久化储存,能够避免数据密钥在用户端的持久化储存,从而有效节省了用户端的存储空间,且简化了用户端的操作,提升了安全性。
基于相同的发明构思,本发明实施例根据上述第三方面各实施例还提供一种数据解密密钥管理系统,该系统用于在上述第三方面各实施例中实现数据的解密。因此,在上述第三方面各实施例的数据解密方法中的描述和定义,可以用于本发明实施例中各个执行模块的理解,具体可参考上述实施例,此处不在赘述。
根据本发明的一个实施例,数据解密密钥管理系统的结构如图11所示,为本发明一实施例提供的数据解密密钥管理系统的结构示意图,该数据解密密钥管理系统可以用于实现上述第三方面各方法实施例中数据的解密,该数据解密密钥管理系统包括:第三处理模块1101和第四处理模块1102。其中:
第三处理模块1101用于接收用户端发送的数据解密请求,数据解密请求携带有用户端根据密文数据计算获取的待验证哈希值;第四处理模块1102用于若根据待验证哈希值检索到匹配的哈希值,则将匹配的哈希值对应的数据密钥反馈给用户端,以供用户端利用数据密钥解密密文数据,生成明文数据,并销毁数据密钥,完成数据解密。
具体而言,在用户端需要对加密的密文数据进行解密处理时,先从本地存储中读取该密文数据,并计算该密文数据的哈希值,作为待验证哈希值。之后,用户端向第三处理模块1101发送数据解密请求,该数据解密请求中携带有待验证哈希值。第三处理模块1101通过接收用户端发送的数据解密请求,分解出该待验证哈希值,发送给第四处理模块1102。
在得到待验证哈希值之后,第四处理模块1102根据该待验证哈希值在存储空间内检索是否存在匹配或一致的哈希值。若存在,则第四处理模块1102根据匹配到的哈希值,检索出对应的数据密钥反馈给用户端。用户端在收到该数据密钥之后,使用该数据密钥解密密文数据,生成明文数据,然后将明文数据存入本地存储并销毁数据密钥,实现密文数据的解密。
本发明实施例提供的数据解密密钥管理系统,通过在云端提供哈希值和数据密钥关联的持久化储存,能够避免数据密钥在用户端的持久化储存,从而有效节省用户端的存储空间,且简化了用户端的操作,提升了安全性。
基于相同的发明构思,本发明实施例根据上述第四方面各实施例还提供一种数据解密用户端,该数据解密用户端用于在上述第四方面各实施例中实现数据的解密。因此,在上述第四方面各实施例的数据解密方法中的描述和定义,可以用于本发明实施例中各个执行模块的理解,具体可参考上述实施例,此处不在赘述。
根据本发明的一个实施例,数据解密用户端的结构如图12所示,为本发明一实施例提供的数据解密用户端的结构示意图,该数据解密用户端可以用于实现上述第四方面各方法实施例中数据的解密,该数据解密用户端包括:第五处理模块1201和第六处理模块1202。其中:
第五处理模块1201用于计算密文数据的待验证哈希值,并向密钥管理系统KMS发送数据解密请求,数据解密请求携带有待验证哈希值,以供密钥管理系统KMS根据待验证哈希值进行检索,且若检索到匹配的哈希值,则返回匹配的哈希值对应的数据密钥;第六处理模块1202用于利用数据密钥解密密文数据,生成明文数据,并销毁数据密钥,完成数据解密。
具体而言,在用户端需要对加密的密文数据进行解密处理时,第五处理模块1201先从本地存储中读取该密文数据,并计算该密文数据的哈希值,作为待验证哈希值。之后,第五处理模块1201将该待验证哈希值封装到数据解密请求中发送给KMS。KMS接收数据解密请求,并从中分解出待验证哈希值,然后根据该待验证哈希值在存储空间内检索是否存在匹配或一致的哈希值。若存在,则根据匹配到的哈希值,检索出对应的数据密钥反馈给第六处理模块1202。
第六处理模块1202接收KMS发送的数据密钥,并使用该数据密钥解密密文数据,生成明文数据,然后第六处理模块1202将明文数据存入本地存储并销毁数据密钥,实现密文数据的解密。
本发明实施例提供的数据解密用户端,通过在云端提供哈希值和数据密钥关联的持久化储存,能够避免数据密钥在用户端的持久化储存,从而有效节省了用户端的存储空间,且简化了用户端的操作,提升了安全性。
可以理解的是,本发明实施例中可以通过硬件处理器(hardware processor)来实现上述各实施例的密钥管理系统和用户端中的各相关程序模块。并且,本发明实施例的密钥管理系统和用户端利用上述各程序模块,能够实现上述各方法实施例的数据加密或者数据解密流程,在用于实现上述各方法实施例中数据的加密或解密时,本发明实施例的密钥管理系统和用户端产生的有益效果与对应的上述各方法实施例相同,可以参考上述各方法实施例,此处不再赘述。
作为本发明实施例的又一个方面,本实施例根据上述各实施例提供一种电子设备,该电子设备包括存储器、处理器及存储在该存储器上并可在该处理器上运行的计算机程序,该处理器执行该计算机程序时,实现如上述第一方面或第二方面所述的数据加密方法的步骤,或者,实现如上述第三方面和第四方面所述的数据解密方法的步骤。
进一步的,本发明实施例的电子设备还可以包括通信接口和总线。参考图13,为本发明实施例提供的电子设备的实体结构示意图,包括:至少一个存储器1301、至少一个处理器1302、通信接口1303和总线1304。
其中,存储器1301、处理器1302和通信接口1303通过总线1304完成相互间的通信,通信接口1303用于该电子设备与用户端设备或密钥管理系统设备之间的信息传输;存储器1301中存储有可在处理器1302上运行的计算机程序,处理器1302执行该计算机程序时,实现如上述第一方面或第二方面所述的数据加密方法的步骤,或者,实现如上述第三方面和第四方面所述的数据解密方法的步骤。
可以理解为,该电子设备中至少包含存储器1301、处理器1302、通信接口1303和总线1304,且存储器1301、处理器1302和通信接口1303通过总线1304形成相互间的通信连接,并可完成相互间的通信,如处理器1302从存储器1301中读取数据加密方法或者数据解密方法的程序指令等。另外,通信接口1303还可以实现该电子设备与用户端设备或密钥管理系统设备之间的通信连接,并可完成相互间信息传输,如通过通信接口1303实现加密或解密数据的读取等。
电子设备运行时,处理器1302调用存储器1301中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:根据用户端请求,生成并反馈数据密钥和密钥标识给用户端,以供用户端利用数据密钥加密数据,生成密文数据,并计算获取密文数据的哈希值,以及,保存密文数据并销毁内存中的数据密钥;接收用户端发送的密钥标识和哈希值,并保存密钥标识、哈希值和密钥标识与哈希值的映射关系,完成数据加密等。
上述的存储器1301中的程序指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。或者,实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还根据上述各实施例提供一种非暂态计算机可读存储介质,其上存储有计算机指令,该计算机指令被计算机执行时,实现如上述各实施例所述的数据加密方法的步骤,例如包括:根据用户端请求,生成并反馈数据密钥和密钥标识给用户端,以供用户端利用数据密钥加密数据,生成密文数据,并计算获取密文数据的哈希值,以及,保存密文数据并销毁内存中的数据密钥;接收用户端发送的密钥标识和哈希值,并保存密钥标识、哈希值和密钥标识与哈希值的映射关系,完成数据加密等。
作为本发明实施例的再一个方面,本实施例根据上述各实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的数据加密方法,该方法包括:根据用户端请求,生成并反馈数据密钥和密钥标识给用户端,以供用户端利用数据密钥加密数据生成密文数据,并计算获取密文数据的哈希值,以及,保存密文数据并销毁内存中的数据密钥;接收用户端发送的密钥标识和哈希值,并保存密钥标识、哈希值和密钥标识与哈希值的映射关系,完成数据加密。
本发明实施例提供的电子设备、非暂态计算机可读存储介质和计算机程序产品,通过执行上述各实施例所述的数据加密方法或数据解密方法的步骤,在云端提供哈希值和数据密钥关联的持久化储存,能够避免数据密钥在用户端的持久化储存,从而有效节省了用户端的存储空间,且简化了用户端的操作,提升了安全性。
可以理解的是,以上所描述的系统、电子设备及存储介质的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,既可以位于一个地方,或者也可以分布到不同网络单元上。可以根据实际需要选择其中的部分或全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上实施方式的描述,本领域的技术人员可以清楚地了解,各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令,用以使得一台计算机设备(如个人计算机,服务器,或者网络设备等)执行上述各方法实施例或者方法实施例的某些部分所述的方法。
另外,本领域内的技术人员应当理解的是,在本发明实施例的申请文件中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明实施例的说明书中,说明了大量具体细节。然而应当理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明实施例公开并帮助理解各个发明方面中的一个或多个,在上面对本发明实施例的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。
最后应说明的是:以上实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述实施例对本发明实施例进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例各实施例技术方案的精神和范围。
- 数据加密方法、数据处理方法、数据解密方法及电子设备
- 数据加密方法、数据解密方法及电子设备