一种防泄露的文件安全共享方法与流程

文档序号:18560920发布日期:2019-08-30 23:16阅读:243来源:国知局
一种防泄露的文件安全共享方法与流程

本发明涉及密码应用的技术领域,具体为一种防泄露的文件安全共享方法。

技术背景

随着互联网技术的飞速发展,网络技术越来越普及,使得网络上出现了很多不法分子利用技术性手段修改或窃取未加密的或者简单加密的文件,对个人隐私、企业运作、社交活动产生了严重影响。尤其在企业环境下,有极高的文件可读不可传的需求。但是在已有的软件和系统环境下,目前的文件分享方案有以下几个问题。

(一)难以兼顾文件安全传输速度和文件共享的安全性。大部分文件加密方案均需要复杂的加解密行为,使得文件传输效率大大降低,不能很好的体现信息共享的即时性。

(二)着重于文件传输的安全性,却难以保证文件不被私传。电子机密文件的泄露也会体现在有资历共享者的私自分享。



技术实现要素:

本发明的目的是针对现有技术的不足,提供一种防泄露的文件安全共享方法。

本发明解决其技术问题所采用的技术方案如下:

本系统使用sm4和sm2算法来分别实现文件加密和文件密钥安全传递。在加密文件的算法选择上,对称加密更加高效,因此选用sm4作为文件主体的加密算法。再选用sm2算法将文件加密的密钥进行加密并传输。同时实现了密钥分发后的文件权限管理。除此之外,利用sm3算法生成的摘要和sm2算法生成的签名来保证文件及浏览记录不被篡改。本发明创新的将浏览记录和文件融合在一起,一定程度上提高了文件传输和解密花销,但是有助于生成全系统组成部分公认的文件浏览记录。sm3摘要算法用于对文件和浏览记录摘要。浏览记录摘要作为下一块浏览记录的初始部分,来实现每一块浏览记录和文件之间都有联系,无法被简单修改。sm2签名算法用于对最后一块浏览记录进行签名并公布于系统中。由于此次签名使用的是唯一的身份密钥对中的身份私钥,因此保证了浏览记录无法被其他人伪造。同时身份密钥对还可用于身份确认。在系统方面,限制加密后的文件在不使用软件系统的情况下不能有效解密文件,限制复制和直接提取加密后文件。

本发明提供的一种防泄露的文件安全共享方法包括服务器端对文件加密流程以及客户端解密流程;

其中服务器端对文件加密流程实现如下:

在文件发布方上传原始文件后,服务器端对接收的原始文件进行记录,获取文件建立信息,然后对原始文件进行加密,具体如下:

⑴将原始文件进行sm4对称加密,得到加密文件;

⑵求出加密文件的大小,用一串30bit的二进制串来表示加密文件的大小;

⑶sm4加密密钥用服务器生成的文件密钥对中的公钥进行sm2非对称加密,获取加密后的sm4密钥;文件密钥对中的公钥将由服务器端保留,私钥颁发给文件发布方并由其自行分发;

⑷sm2非对称加密过后,将表示加密文件的大小的二进制串、加密后的sm4密钥和加密文件拼接在一起,成为新的文件i;

⑸进行浏览记录初始块的建立:将新的文件i进行sm3摘要,获取摘要值i;将这段摘要值与文件建立信息拼合在一起,组成第一个浏览记录块,将此浏览记录块附在新的文件i后面;

⑹将初始浏览记录块进行sm3摘要,获取其摘要值ii,大小为256bit,并将摘要值ii附在浏览记录块之后,得到最终公布的加密文件ii,其中摘要值ii供文件解密方验证。

客户端解密流程具体实现如下:

⑴客户端中的文件解密方向服务器请求得到最新的加密文件,并将其按照固定格式分解成四部分:加密文件大小的二进制串、非对称加密后的sm4密钥、加密文件和浏览记录组成的浏览记录链;

⑵在分解出四部分之后,对最新加密文件在解密过程中进行文件正确性验证,且第一次解密文件和第二次及第二次之后解密文件中中文件正确性验证的流程不同。

表示加密文件大小的二进制串、非对称加密后的sm4密钥的大小固定,分别为30bit与256bit;之后的文件大小由二进制串确定,按照固定大小分割后,剩下的部分为浏览记录链;浏览记录链中的每一块浏览记录块大小固定;如果浏览记录链的分割错误,或分割获取的浏览记录块中拆分的摘要值i、文件建立信息识别失败,则将自动删除缓存的加密文件,重新请求文件;如多次请求均失败,将通知服务器使其检查最新的加密文件是否出错。

第一次解密过程中文件正确性验证如下:

将拆分得到的sm3摘要值ii与最后一块浏览记录块的摘要值进行比对,如果符合,开始记录新的浏览记录,记录成功后能够解密并访问加密文件;如果不符合,将自动删除缓存的加密文件,重新请求最新加密文件,如多次重新请求最新加密文件均失败,将通知服务器使其检查最新加密文件是否出错。

第二次及之后的解密过程中文件正确性验证如下:

向服务器请求上一位文件解密方的浏览记录的sm2签名,再将已经请求到的最新加密文件的最后一块浏览记录块的sm3摘要值ii进行sm2签名,本次sm2签名用到的密钥对,是上一文件解密方的身份密钥对,由本次文件解密方通过浏览记录的身份标识向服务器的身份公钥数据库请求得到;将得到的sm2签名ii与浏览记录的sm2签名进行比对,如果比对成功,本次文件解密方请求进行浏览记录更新,且如果浏览记录更新成功,则能够解密并访问加密文件;如多次请求进行浏览记录更新均失败,将通知服务器使其检查最新加密文件是否出错;服务器端将审查当前文件解密方资格并判断是否列入黑名单;

在浏览记录更新成功后,文件解密方则能够解密并访问加密文件;文件解密方输入文件上传者分发的文件加密密钥对中的私钥,解密得sm4密钥;再利用sm4密钥解密加密文件,至此文件解密方可以浏览原始文件,但是不能复制和获取原始文件;

所述的浏览记录中记录的信息包括浏览时间、身份标识、ip地址/mac地址和浏览记录块编号;每个浏览记录块长110字节,包括32字节的上一浏览记录块的摘要信息。

文件解密方在验证上一块浏览记录完整且正确后,开始写入本次浏览记录,在没有更新完浏览记录前,无法解密文件;

获取当前文件解密方信息,以规定的格式记录,将其和前一浏览记录块的摘要信息拼接,成为新一块浏览记录块;接下来对此浏览记录块做摘要,并获取当前文件解密方的身份私钥;用此身份私钥对摘要进行sm2签名,以防止系统外攻击任意写入浏览记录块;签名完成后,文件解密方记录并发送最新浏览记录块和签名给服务器。

服务器收到文件解密方记录并发送的最新浏览记录块和签名后,在身份公钥数据库中获取当前文件解密方对应身份的公钥,对发送来的签名和浏览记录块进行验证;

如果验证相等,则更新服务器端最新加密文件的浏览记录链,等同于更新服务器端的最新加密文件,更新成功后发送成功回执给文件解密方,文件解密方因此可以正确解密;

如果验证不等,则驳回文件解密方更新浏览记录的请求,文件解密方收到驳回请求后立即销毁本地缓存文件;如若此文件解密方多次请求失败,则服务器端重新审查文件解密方资格。

最新浏览记录块摘要的sm2签名都在服务器端存储及广播。

本发明可设置文件解密方最长可浏览时间,到达时间后自动关闭,需重新请求文件;且在浏览结束关闭客户端时,也会做一次浏览记录;类型为关闭文件的浏览记录。

本发明有益效果如下:

对于文件发布方:

(一)方便快捷的文件上传

(二)自定义可浏览文件群体

(三)文件分享的有效时间

(四)查阅文件浏览记录、追查文件泄露源

(五)删除分享文件

对于文件服务器端:

(一)安全加密和存储文件及对应浏览记录

(二)文件系统成员身份密钥的存储及管理

(三)身份审查和管理

(四)审查并更新加密文件浏览记录

对于文件解密方:

(一)申请权限内文件

(二)解密并阅览文件

(三)不可伪造文件浏览记录和文件请求记录

文件安全共享在保证安全的同时有足够高的时间效率。本发明中sm4算法采取多块并发加密方式,对于较大的文件大幅缩减了加密时间,平均速度约10mb/s,解密速度约为12mb/s。sm2算法在本发明中的处理时间均为毫秒级。在文件sm3算法摘要时,提取文件特征而非整体摘要,来解决sm3为分段线性处理,摘要时间难以缩减的问题,做到在本软件中的所有使用部分处理时间均为百毫秒级。(以上所有数据处理环境为cpu:coretmi5-7200ucpu@2.50ghz,ram:8gb,system:win10x64,pythonv3.6)

附图说明

图1系统组成;

图2加密后文件组成方式;

图3sm2身份密钥对处理与分发流程(服务器端);

图4sm2文件密钥对生成流程(服务器端);

图5文件加密流程(服务器端);

图6第一次解密文件流程(客户端);

图7第二次及之后解密流程(客户端);

图8浏览记录链格式;

图9更新浏览记录流程(客户端);

图10处理浏览记录请求流程(服务器端);

具体实施方式

下面结合附图和实施例对本发明作进一步说明。

为了做到分布工作给所有组成部分和保证安全性,首先确定对于每个分享的文件,实现过程中涉及文件发布方、加密文件、服务器端和文件解密方4个组成部分,如图1所示:其中文件发布方,即想要共享文件的人;加密文件,当前正在分享的文件;服务器端,即中央服务器,管理文件和所有参与者身份;文件解密方,即文件获取方,有资质访问此文件的人。

文件发布方只需要将文件上传到服务器端,并获取服务器端返回的文件解密密钥以分发给有资质的人。或委托服务器端分发。值得注意的是,在系统中,文件发布方与文件解密方的身份是随时可以互换的。这取决于请求的文件所属。为了使所有系统中有资质的组成部分均能对文件进行处理操作,需要规定一种特定的约定的文件格式和文件组成方式,保证其包含密钥信息可以被软件识别和分解,如图2。服务器端软件和用户端软件将根据此格式和组成方式分解或组成各小部分,进行验证、解密或增加等工作。

每一个系统中的参与者都在此系统中有一个身份密钥,这个密钥基于sm2非对称算法,由服务器生成,本质为sm2密钥对,身份密钥生成流程如图3。

在系统初始,有资格参与此系统的客户端和之后新加入的客户端都会上报自己的客户端信息给服务器,服务器生成sm2密钥对,将私钥发给各客户端,不保留副本。并将公钥和身份信息链接存入数据库中。此密钥对作为身份公私钥对存在于系统中。是各客户端权威身份信息,同时也是追责机制的关键保证。比如:只有有资质的人拥有身份私钥,因此服务器对于此有资质的人根据身份私钥的签名,可以查找到一个公钥进行验证,只有能够验证,才能确保这个人的资质正常。只要能够保持身份私钥的私密性,其身份信息就唯一。在不小心泄露后,用户也可以立即“挂失”,并通过验证获取新的身份密钥。服务器端接收到文件分享者的文件后,开始针对此文件生成文件加密钥对,这个密钥对也是基于sm2算法生成的,用于后续的文件加密密钥管理,文件密钥对生成流程如图4。

本发明具体实现过程如下:

服务器端对文件加密的实现:

在文件发布方上传原始文件后,服务器端对接收的原始文件进行记录,获取文件建立信息,然后对原始文件进行加密,具体如下:

⑴将原始文件进行sm4对称加密,得到加密文件;

⑵求出加密文件的大小,单位为bit。用一串30bit的二进制串来表示加密文件的大小,即加密文件最大为10mb。这在绝大多数实际应用场景中,不管是对图片、文档、还是演示文稿,都是充足的。

⑶为方便文件和密钥的传输,将sm4加密密钥用服务器生成的文件密钥对中的公钥进行sm2非对称加密,获取加密后的sm4密钥;文件密钥对中的公钥将由服务器端保留,私钥颁发给文件发布方并由其自行分发。

⑷sm2非对称加密过后,将表示加密文件的大小的二进制串、加密后的sm4密钥和加密文件拼接在一起,成为新的文件i。

⑸进行浏览记录初始块的建立:将新的文件i进行sm3摘要,获取摘要值i;将这段摘要值与文件建立信息拼合在一起,组成第一个浏览记录块,将此浏览记录块附在新的文件i后面。

⑹将初始浏览记录块进行sm3摘要,获取其摘要值ii,大小为256bit,并将摘要值ii附在浏览记录块之后,得到最终公布的加密文件ii,其中摘要值ii供文件解密方验证。

详细流程图见图5。

所述的最终公布的加密文件ii包括加密文件、表示加密文件大小的二进制串、加密后的sm4密钥、摘要值i、文件建立信息和摘要值ii。

所述的服务器端还担当起广播者的作用,即最新浏览记录块的sm2签名都在服务器端存储及广播。有资质并且想要查看最新加密文件的文件解密方,将在服务器端查询目标文件并请求。服务器检查文件解密方身份过后,以特定的协议发送最新加密文件给文件解密方。文件解密方获取最新加密文件后开始解密流程,值得注意的是,第一次解密文件和第二次及第二次之后解密文件的流程略有区别,这与文件格式和服务器端工作有关。

客户端解密流程:解密为加密的逆过程,具体实现如下:

⑴客户端中的文件解密方向服务器请求得到最新的加密文件,将其按照固定格式分解成四部分:表示加密文件大小的二进制串、非对称加密后的sm4密钥、加密文件和浏览记录组成的浏览记录链。

其中,表示加密文件大小的二进制串、非对称加密后的sm4密钥的大小固定,分别为30bit与256bit;这之后的文件大小由二进制串确定,按照固定大小分割后,剩下的部分为浏览记录链。浏览记录链中的每一块浏览记录块大小固定。如果浏览记录链的分割错误,或分割获取的浏览记录块中拆分的摘要值i、文件建立信息识别失败,则将自动删除缓存的加密文件,重新请求文件;如多次请求均失败,将通知服务器使其检查最新的加密文件是否出错。

⑵在分解出四部分之后,首先对最新加密文件进行文件正确性验证。

第一次解密过程中文件正确性验证如下:

将拆分得到的sm3摘要值ii与最后一块浏览记录块的摘要值进行比对,如果符合,开始记录新的浏览记录,记录成功后能够解密并访问加密文件;如果不符合,将自动删除缓存的加密文件,重新请求最新加密文件,如多次重新请求最新加密文件均失败,将通知服务器使其检查最新加密文件是否出错。第一次解密流程图见图6。

第二次及之后的解密过程中文件正确性验证如下:

向服务器请求上一位文件解密方的浏览记录的sm2签名,再将已经请求到的最新加密文件的最后一块浏览记录块的sm3摘要值ii进行sm2签名,本次sm2签名用到的密钥对,是上一文件解密方的身份密钥对,由本次文件解密方通过浏览记录的身份标识向服务器的身份公钥数据库请求得到;将得到的sm2签名ii与浏览记录的sm2签名进行比对,如果比对成功,本次文件解密方请求进行浏览记录更新,且如果浏览记录更新成功,则能够解密并访问加密文件;如多次请求进行浏览记录更新均失败,将通知服务器使其检查最新加密文件是否出错。服务器端将审查当前文件解密方资格并判断是否列入黑名单。

在浏览记录更新成功后,文件解密方则能够解密并访问加密文件。文件解密方输入文件上传者分发的文件加密密钥对中的私钥,解密得sm4密钥;再利用sm4密钥解密加密文件,至此文件解密方可以浏览原始文件,但是不能复制和获取原始文件。第二次及之后的解密流程图见图。

浏览记录是另一保证文件没有篡改的机制,同时它更大的作用是在文件泄露后能够较为准确的指向责任人。可以改变现有分享机制难以确定责任人的问题。生成浏览记录时,由于工作交给了客户端,因此保证浏览记录不能被篡改是重中之重。本发明用sm3摘要使后一块的摘要与前一块的摘要息息相关。来实现块与块之间的“连接”,形成一条浏览记录链。

浏览记录包括浏览时间、身份标识、ip地址/mac地址和浏览记录块编号;每个浏览记录块长110字节,包括32字节的上一浏览记录块的摘要信息。浏览记录及浏览记录链的示意图见图8。这种连接方式虽然能保证浏览记录之间紧密的联系,却并不能保证其不被篡改,主要原因是伪造信息不具备算力要求。而导致如此的主要原因便是最后一块浏览记录的信息不能保证不可更改因而篡改者只需要修改整条链便能做到篡改和伪造。因而对最后一块浏览记录块,本发明使用了sm2签名并广播的方式,利用每个文件解密方sm2密钥对唯一且私钥保密的特点,实现了每用户对于最后一块浏览记录都能验证其正确性。在51%好人原则的前提下,可以完全实现浏览记录链的特定块不可篡改。且每一个浏览记录块只对应唯一用户。最后配合服务器便能有效保证浏览记录全链不得篡改,文件解密方请求浏览记录更新流程见图9,服务器端处理浏览记录更新请求流程见图10。

文件解密方在验证上一块浏览记录完整且正确后,开始写入本次浏览记录,在没有更新完浏览记录前,无法解密文件。

获取当前文件解密方信息,以规定的格式记录,将其和前一浏览记录块的摘要信息拼接,成为新一块浏览记录块。接下来对此浏览记录块做摘要,并获取当前文件解密方的身份私钥。用此身份私钥对摘要进行sm2签名,以防止系统外攻击任意写入浏览记录块。

签名完成后,文件解密方记录并发送最新浏览记录块和签名给服务器。服务器在身份公钥数据库中获取当前文件解密方对应身份的公钥,对发送来的签名和浏览记录块进行验证。

如果验证相等,则更新服务器端最新加密文件的浏览记录链,等同于更新服务器端的最新加密文件,更新成功后发送成功回执给文件解密方,文件解密方因此可以正确解密。

如果验证不等,则驳回文件解密方更新浏览记录的请求,文件解密方收到驳回请求后立即销毁本地缓存文件。如若此文件解密方多次请求失败,则服务器端重新审查文件解密方资格。

为了详细记录浏览请求和保证文件安全,可以设置文件解密方最长可浏览时间。到达时间后自动关闭,需重新请求文件。在浏览结束关闭客户端时,也会做一次浏览记录。类型为关闭文件的浏览记录。

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