发明内容
为了解决上述问题,本发明的目的在于提供一种基于国密算法的可靠数据传输及存储的方法,能够避免攻击者通过网络传输过程窃取文件或者通过破解服务器,直接拷走服务器磁盘上的文件而造成的损失,极大提升数据传输和存储的安全性和可靠性。
为实现上述目的,本发明采用以下技术方案:
技术方案一
一种基于国密算法的可靠数据传输及存储的方法,包括数据传输步骤:
客户端随机生成第一秘钥组,用该第一秘钥组对待传输数据进行国密算法SM4加密,生成第一密文;用服务端发来的公钥对该第一秘钥组进行国密算法SM2加密,生成秘钥加密值;对所述第一密文、秘钥加密值进行国密算法SM3摘要加密,生成第一摘要值;将所述第一密文、秘钥加密值以及第一摘要值发送至服务端。服务端接收后,用私钥通过国密算法SM2解密所述秘钥加密值,得到解密后的第一秘钥组;然后,对解密得到的第一秘钥组和接收到的第一密文进行国密算法SM3加密,得到第二摘要值,比对所述第一摘要值和第二摘要值,若不一致,则接收到数据被篡改,通知客户端,若一致,用解密得到的第一秘钥组对接收到的第一密文进行国密算法SM4解密,得到所述待传输的数据。
更优地,所述数据传输步骤还包括对摘要值进行加密,具体如下:客户端随机生成第一秘钥组,用该第一秘钥组对待传输数据进行国密算法SM4加密,生成第一密文;用服务端发来的公钥对该第一秘钥组进行国密算法SM2加密,生成秘钥加密值;对所述第一密文、秘钥加密值进行国密算法SM3摘要加密,生成第一摘要值;用该第一秘钥组对所述第一摘要值进行国密算法SM4加密,生成摘要加密值,将所述第一密文、秘钥加密值以及摘要加密值发送至服务端。服务端接收后,用私钥通过国密算法SM2解密所述秘钥加密值,得到解密后的第一秘钥组;用解密得到的第一秘钥组对接收到的摘要加密值进行国密算法SM4解密,若解密不成功,则接收到的数据被篡改,通知客户端,若解密成功,得到解密后的第一摘要值,然后,用解密得到的第一秘钥组和接收到的第一密文进行国密算法SM3加密,得到第二摘要值,比对所述第一摘要值和第二摘要值,若不一致,则接收到数据被篡改,通知客户端,若一致,用解密得到的第一秘钥组对接收到的第一密文进行国密算法SM4解密,得到所述待传输的数据。
更优地,所述服务端解密第一密文,得到传输数据,服务端解析传输数据,若为上传的文件,则执行数据存储步骤:服务端随机生成第二秘钥组,用该第二秘钥组对上传的文件进行加密,生成第二密文,并保存在文件服务器上,服务端将所述第二秘钥组保存至数据库并建立第二秘钥组与第二密文的一一对应关系。
更进一步地,所述服务端解密第一密文,得到传输数据,服务端解析所述传输数据,若为文件ID,服务端执行文件下载步骤:服务端根据文件ID 从文件服务器下载与该文件ID对应的第二密文,同时,根据文件ID查找数据库中与之匹配的第二秘钥组,使用该第二秘钥组解密与该文件ID对应的第二密文,得到要下载的文件;服务端利用解密得到的第一秘钥组对要下载的文件进行加密,生成第三密文,返回至客户端;客户端使用所述第一秘钥组解密所述第三密文,得到需要下载的文件。
更优地,所述第一秘钥组和第二秘钥组均由秘钥和偏移向量组成。
为解决上述问题,本发明的目的在于还提供一种基于国密算法的可靠数据传输及存储的系统。
为实现上述目的,本发明采用以下技术方案:
技术方案二
一种基于国密算法的可靠数据传输及存储的系统,包括客户端加解密模块和服务端加解密模块; 所述客户端加解密模块随机生成第一秘钥组,用该第一秘钥组对待传输数据进行国密算法SM4加密,生成第一密文;用服务端发来的公钥对该第一秘钥组进行国密算法SM2加密,生成秘钥加密值;对所述第一密文、秘钥加密值进行国密算法SM3摘要加密,生成第一摘要值;将所述第一密文、秘钥加密值以及第一摘要值发送至服务端加解密模块;所述服务端加解密模块接收后,用私钥通过国密算法SM2解密所述秘钥加密值,得到解密后的第一秘钥组;然后,对解密得到的第一秘钥组和接收到的第一密文进行国密算法SM3加密,得到第二摘要值,比对所述第一摘要值和第二摘要值,若不一致,则接收到数据被篡改,通知客户端,若一致,用解密得到的第一秘钥组对接收到的第一密文进行国密算法SM4解密,得到所述待传输的数据。
更优地,所述客户端加解密模块还对摘要值进行加密,具体如下:所述客户端加解密模块随机生成第一秘钥组,用该第一秘钥组对待传输数据进行国密算法SM4加密,生成第一密文;用服务端发来的公钥对该第一秘钥组进行国密算法SM2加密,生成秘钥加密值;对所述第一密文、秘钥加密值进行国密算法SM3摘要加密,生成第一摘要值;用该第一秘钥组对所述第一摘要值进行国密算法SM4加密,生成摘要加密值;将所述第一密文、秘钥加密值以及摘要加密值发送至服务端加解密模块;所述服务端加解密模块接收后,用私钥通过国密算法SM2解密所述秘钥加密值,得到解密后的第一秘钥组;用解密得到的第一秘钥组对接收到的摘要加密值进行国密算法SM4解密,若解密不成功,则接收到的数据被篡改,通知客户端,若解密成功,得到解密后的第一摘要值,然后,用解密得到的第一秘钥组和接收到的第一密文进行国密算法SM3加密,得到第二摘要值,比对所述第一摘要值和第二摘要值,若不一致,则接收到数据被篡改,通知客户端,若一致,用解密得到的第一秘钥组对接收到的第一密文进行国密算法SM4解密,得到所述待传输的数据。
更优地,所述系统还包括服务端文件管理模块;所述服务端文件管理模块解析解密得到的传输数据,若为上传的文件,则执行数据存储步骤:所述服务端加解密模块随机生成第二秘钥组,用该第二秘钥组对上传的文件进行加密,生成第二密文;所述服务端文件管理模块将所述第二密文保存在文件服务器上,将所述第二秘钥组保存至数据库并建立第二秘钥组与第二密文的一一对应关系。
更优地,所述服务端文件管理模块解析解密得到的传输数据,若为文件ID,则执行文件下载步骤:所述服务端文件管理模块根据文件ID 从文件服务器下载与该文件ID对应的第二密文,同时,根据文件ID查找数据库中与之匹配的第二秘钥组,使用该第二秘钥组解密与该文件ID对应的第二密文,得到要下载的文件;所述服务端加解密模块利用解密得到的第一秘钥组对要下载的文件进行加密,生成第三密文,返回至客户端;所述客户端加解密模块1使用所述第一秘钥组解密所述第三密文,得到需要下载的文件。
更优地,所述第一秘钥组和第二秘钥组均由秘钥和偏移向量组成。
本发明具有如下有益效果:
1、本发明一种基于国密算法的可靠数据传输及存储的方法,该方法在文件传输过程中,使用客户端随机生成的第一秘钥组结合国密算法对待传输数据进行加密,用公钥对第一秘钥组进行加密,在对第一密文进行运行SM3国密算法时,还进一步结合客户端随机生成的第一秘钥组,确保在传输过程中都无法截获文件数据的明文,从而保证文件数据传输的安全性;服务端接收到密文数据,解密生成原文后,随机一组密钥重新对原文进行加密后存储到文件服务器的磁盘上面,确保文件存储在文件服务器也是加密并且和客户端加密的密钥是不相同的,加密的结果也是不同的,防止传输的时候密钥被窃取,造成文件被破解的风险,从而保证文件存储的安全性。
2、本发明一种基于国密算法的可靠数据传输及存储的方法,该方法对待传输的加密密文和加密秘钥进行SM3摘要加密,再进一步对SM3摘要加密后的加密值进行SM4加密,不仅确保数据传输的安全性,还能通过在服务器端比对第一摘要值和第二摘要值,验证数据传输过程是否收到攻击,提高数据传输的可靠性。
具体实施方式
以下结合附图和具体实施例对本发明做进一步详细说明。
实施例一
参见图1,一种基于国密算法的可靠数据传输及存储的方法,包括数据传输步骤:客户端随机生成第一秘钥组,用该第一秘钥组对待传输数据进行国密算法SM4加密,生成第一密文;用服务端发来的公钥对该第一秘钥组进行国密算法SM2加密,生成秘钥加密值;对所述第一密文、秘钥加密值进行国密算法SM3摘要加密,生成第一摘要值;将所述第一密文、秘钥加密值以及第一摘要值发送至服务端。服务端接收后,用私钥通过国密算法SM2解密所述秘钥加密值,得到解密后的第一秘钥组;然后,对解密得到的第一秘钥组和接收到的第一密文进行国密算法SM3加密,得到第二摘要值,比对所述第一摘要值和第二摘要值,若不一致,则接收到数据被篡改,通知客户端,若一致,用解密得到的第一秘钥组对接收到的第一密文进行国密算法SM4解密,得到所述待传输的数据。
上述实施方式,采用客户端随机密钥的加密方式,在客户端每次分别产生不同的随机密钥组的方式进行加密,不会因为一对公私密钥的泄露导致所有的数据泄露,从而增强数据的安全的。同时,在服务端通过国密算法SM3用解密得第一秘钥组和第一密文进行加密,生成第二摘要值,比对第二摘要值和第一摘要值,验证摘要值是否被篡改,从而确定数据传输过程是否收到攻击,增强数据传输安全性的同时,能够及时发现数据是否被篡改,实现了对传输数据保护的安全性和可靠性。
实施例二
请参阅图2,更优地,本实施例增加了对摘要值的进一步的加密以增强数据传输安全性。现结合客户端上传文件为例,进一步说明本发明数据传输以及数据存储过程。
应当可以理解,在客户端向服务端发起文件上传请求时,服务端响应请求并发送私钥至客户端。较优地,客户端将需要上传的文件转成base64字符串,作为待传输的数据。数据上传和存储过程为:
步骤1、客户端随机生成第一秘钥组:秘钥s_key和偏移向量s_IV;
步骤2、用该第一秘钥组对待传输数据进行国密算法SM4加密,生成第一密文;
步骤3、用服务端发来的公钥对该第一秘钥组进行国密算法SM2加密,生成秘钥加密值;
步骤4、对所述第一密文、秘钥加密值进行国密算法SM3摘要加密,生成第一摘要值;
步骤5、用该第一秘钥组对所述第一摘要值进行国密算法SM4加密,生成摘要加密值;
步骤6、将所述第一密文、秘钥加密值以及摘要加密值发送至服务端;
步骤7、服务端接收后,用私钥通过国密算法SM2解密所述秘钥加密值,得到解密后的第一秘钥组;
步骤8、用解密得到的第一秘钥组对接收到的摘要加密值进行国密算法SM4解密,若解密不成功,则接收到的数据被篡改,通知客户端,若解密成功,得到解密后的第一摘要值,执行步骤9;
步骤9、用解密得到的第一秘钥组和接收到的第一密文进行国密算法SM3加密,得到第二摘要值,
步骤10、比对所述第一摘要值和第二摘要值,若不一致,则接收到数据被篡改,通知客户端,若一致,用解密得到的第一秘钥组对接收到的第一密文进行国密算法SM4解密,得到所述传输数据;使用base64编码表对文件进行转换,得到基于ASCII的可读文档;
步骤11、服务端解析传输数据,若为上传的文件,对数据进行存储:服务端随机生成第二秘钥组,用该第二秘钥组对上传的文件进行加密,生成第二密文,并保存在文件服务器上,服务端将所述第二秘钥组保存至数据库并建立第二秘钥组与第二密文的一一对应关系。较优地,利用文件的唯一ID建立第二密文与第二秘钥组的映射关系。
在本实施例中,在数据传输过程中,增加了对摘要值的再一次SM4加密,服务端通过私钥解密得到第一秘钥组,然后利用解密得到的第一秘钥组对摘要加密值进行解密时,即可验证第一秘钥组和摘要加密值是否被篡改,接着,再进一步通过比对第二摘要值和第一摘要值,验证摘要值是否一直防篡改,通过双重加密,双重验证,极大地提高了输出传输的安全性、可靠性,且能及时验证数据是否收到攻击。同时,服务端将随机生成第二秘钥组存放到数据库,保证每个上传文件的密文对应的随机第二秘钥组是不一样的,随机第二秘钥组只能解密与之对应的文件,无法解密其他加密的文件,进一步升级对重要文件安全性的防护。
实施例三
请参阅图2,更优地,本实施例现结合客户端请求下载文件为例,进一步说明本发明数据传输以及数据提取过程。
应当可以理解,在客户端向服务端发起文件下载请求时,点击文件下载链接,可以获取到要下载文件的ID。服务端响应请求并发送私钥至客户端。客户端将要下载的文件ID,作为待传输的数据。数据上传和服务端文件提取过程为:
步骤10、客户端随机生成第一秘钥组:秘钥s_key和偏移向量s_IV;
步骤20、用该第一秘钥组对文件ID进行国密算法SM4加密,生成第一密文;用服务端发来的公钥对该第一秘钥组进行国密算法SM2加密,生成秘钥加密值;对所述第一密文、秘钥加密值进行国密算法SM3摘要加密,生成第一摘要值;用该第一秘钥组对所述第一摘要值进行国密算法SM4加密,生成摘要加密值;将所述第一密文、秘钥加密值以及摘要加密值发送至服务端;
步骤30、服务端接收后,用私钥通过国密算法SM2解密所述秘钥加密值,得到解密后的第一秘钥组;用解密得到的第一秘钥组对接收到的摘要加密值进行国密算法SM4解密,若解密不成功,则接收到的数据被篡改,通知客户端,若解密成功,得到解密后的第一摘要值,执行步骤40;
步骤40、用解密得到的第一秘钥组和接收到的第一密文进行国密算法SM3加密,得到第二摘要值;比对所述第一摘要值和第二摘要值,若不一致,则接收到数据被篡改,通知客户端,若一致,用解密得到的第一秘钥组对接收到的第一密文进行国密算法SM4解密,得到文件ID;
步骤50、服务端根据文件ID 从文件服务器下载与该文件ID对应的第二密文,同时,根据文件ID查找数据库中与之匹配的第二秘钥组,使用该第二秘钥组解密与该文件ID对应的第二密文,得到要下载的文件;在服务端对接收到待存储文件进行加密和解密,也可采用国密算法SM4。服务端利用解密得到的第一秘钥组对要下载的文件进行加密,可采用国密算法SM4进行加密,生成第三密文,返回至客户端;
步骤60、客户端使用上传文件ID时随机生成的所述第一秘钥组解密所述第三密文,得到需要下载的文件。一般地,解密后的文件先转成base64字符串,再转成Blob数据,最后转成File,客户端识别到File,File是基于ascii码的可读文件,从而下载到文件。至此,服务端想客户端返回请求下载的文件,只能由客户端点击下载时才生成的随机c_key和c_IV向量才能解密,每下载一次文件对应的c_key和c_IV向量都是不一样的,从而增强传输数据安全性。
基于同一发明构思,本申请还提供了与实施例一至三中的方法对应的系统,详见实施例四。
实施例四
请参阅1至图3,一种基于国密算法的可靠数据传输及存储的系统,包括客户端加解密模块1和服务端加解密模块2。 所述客户端加解密模块1随机生成第一秘钥组,用该第一秘钥组对待传输数据进行国密算法SM4加密,生成第一密文;用服务端发来的公钥对该第一秘钥组进行国密算法SM2加密,生成秘钥加密值;对所述第一密文、秘钥加密值进行国密算法SM3摘要加密,生成第一摘要值;将所述第一密文、秘钥加密值以及第一摘要值发送至服务端加解密模块2。所述服务端加解密模块2接收后,用私钥通过国密算法SM2解密所述秘钥加密值,得到解密后的第一秘钥组;然后,对解密得到的第一秘钥组和接收到的第一密文进行国密算法SM3加密,得到第二摘要值,比对所述第一摘要值和第二摘要值,若不一致,则接收到数据被篡改,通知客户端,若一致,用解密得到的第一秘钥组对接收到的第一密文进行国密算法SM4解密,得到所述待传输的数据。
所述客户端加解密模块1还对摘要值进行加密,具体如下:所述客户端加解密模块1随机生成第一秘钥组,用该第一秘钥组对待传输数据进行国密算法SM4加密,生成第一密文;用服务端发来的公钥对该第一秘钥组进行国密算法SM2加密,生成秘钥加密值;对所述第一密文、秘钥加密值进行国密算法SM3摘要加密,生成第一摘要值;用该第一秘钥组对所述第一摘要值进行国密算法SM4加密,生成摘要加密值;将所述第一密文、秘钥加密值以及摘要加密值发送至服务端加解密模块2。所述服务端加解密模块2接收后,用私钥通过国密算法SM2解密所述秘钥加密值,得到解密后的第一秘钥组;用解密得到的第一秘钥组对接收到的摘要加密值进行国密算法SM4解密,若解密不成功,则接收到的数据被篡改,通知客户端,若解密成功,得到解密后的第一摘要值,然后,用解密得到的第一秘钥组和接收到的第一密文进行国密算法SM3加密,得到第二摘要值,比对所述第一摘要值和第二摘要值,若不一致,则接收到数据被篡改,通知客户端,若一致,用解密得到的第一秘钥组对接收到的第一密文进行国密算法SM4解密,得到所述待传输的数据。
所述系统还包括服务端文件管理模块3;所述服务端文件管理模块解析解密得到的传输数据,若为上传的文件,则执行数据存储步骤:所述服务端加解密模块2随机生成第二秘钥组,用该第二秘钥组对上传的文件进行加密,生成第二密文;所述服务端文件管理模块3将所述第二密文保存在文件服务器上,将所述第二秘钥组保存至数据库并建立第二秘钥组与第二密文的一一对应关系。所述第一秘钥组和第二秘钥组均由秘钥和偏移向量组成。
所述服务端文件管理模块3解析解密得到的传输数据,若为文件ID,则执行文件下载步骤:所述服务端文件管理模块3根据文件ID 从文件服务器下载与该文件ID对应的第二密文,同时,根据文件ID查找数据库中与之匹配的第二秘钥组,使用该第二秘钥组解密与该文件ID对应的第二密文,得到要下载的文件。所述服务端加解密模块2利用解密得到的第一秘钥组对要下载的文件进行加密,生成第三密文,返回至客户端。所述客户端加解密模块1使用所述第一秘钥组解密所述第三密文,得到需要下载的文件。
由于本发明实施例四所介绍的系统,为实施本发明实施例一至三的方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的系统都属于本发明所欲保护的范围。
以上所述仅为本发明的具体实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。