1.一种防泄露的文件安全共享方法,其特征在于包括服务器端对文件加密流程以及客户端解密流程;
其中服务器端对文件加密流程实现如下:在文件发布者上传原始文件后,服务器端对接收的原始文件进行记录,获取文件建立信息,然后对原始文件进行加密,具体如下:⑴将原始文件进行SM4对称加密,得到加密文件;
⑵求出加密文件的大小,用一串30bit的二进制串来表示加密文件的大小;
⑶SM4密钥用服务器端生成的文件密钥对中的公钥进行SM2非对称加密,获取加密后的SM4密钥;文件密钥对中的公钥由服务器端保留,私钥颁发给文件发布者并由其自行分发;
⑷SM2非对称加密过后,将表示加密文件的大小的二进制串、加密后的SM4密钥和加密文件拼接在一起,成为新的文件Ⅰ;
⑸进行浏览记录初始块的建立:将新的文件Ⅰ进行SM3摘要,获取摘要值Ⅰ;将这段摘要值与文件建立信息拼合在一起,组成浏览记录初始块,将此浏览记录初始块附在新的文件Ⅰ后面;
⑹将浏览记录初始块进行SM3摘要,获取其摘要值Ⅱ,大小为256bit,并将摘要值Ⅱ附在浏览记录块之后,得到最终公布的加密文件Ⅱ,其中摘要值Ⅱ供文件解密方验证;
文件解密方在验证上一浏览记录块浏览记录完整且正确后,开始写入本次浏览记录,在没有更新完浏览记录前,无法解密文件;
获取当前文件解密方信息,以规定的格式记录,将其和上一浏览记录块的摘要信息拼接,成为新一块浏览记录块;接下来对此浏览记录块做摘要,并获取当前文件解密方的身份私钥;用此身份私钥对摘要进行SM2签名,以防止系统外攻击任意写入浏览记录块;签名完成后,文件解密方记录并发送最新浏览记录块和签名给服务器端;
服务器端收到文件解密方记录并发送的最新浏览记录块和签名后,服务器端在身份公钥数据库中获取当前文件解密方对应身份的公钥,对发送来的签名和浏览记录块进行验证;
如果验证相等,则更新服务器端最新加密文件的浏览记录链,等同于更新服务器端的最新加密文件,更新成功后发送成功回执给文件解密方,文件解密方因此可以正确解密;
如果验证不等,则驳回文件解密方更新浏览记录的请求,文件解密方收到驳回请求后立即销毁本地缓存文件;如若此文件解密方多次请求失败,则服务器端重新审查文件解密方资格;
客户端解密流程具体实现如下:
⑴客户端中的文件解密方向服务器端请求得到最新的加密文件,并将其按照固定格式分解成四部分:表示加密文件大小的二进制串、非对称加密后的SM4密钥、加密文件和浏览记录组成的浏览记录链;
⑵在分解出四部分之后,对最新加密文件在解密过程中进行文件正确性验证,且第一次解密文件和第二次及第二次之后解密文件中文件正确性验证的流程不同;
第一次解密过程中文件正确性验证如下:将所述摘要值Ⅱ与最后一块浏览记录块的摘要值进行比对,如果符合,开始记录新的浏览记录,记录成功后解密并访问加密文件;如果不符合,自动删除缓存的加密文件,重新请求最新加密文件,如多次重新请求最新加密文件均失败,将通知服务器端使其检查最新加密文件是否出错;
第二次及之后的解密过程中文件正确性验证如下:向服务器端请求上一位文件解密方的浏览记录的SM2签名,再将已经请求到的最新加密文件的最后一块浏览记录块的SM3摘要值Ⅱ进行SM2签名,本次SM2签名用到的密钥对,是上一文件解密方的身份密钥对,由本次文件解密方通过上一位文件解密方的浏览记录的身份标识向服务器端的身份公钥数据库请求得到;将得到的SM2签名Ⅱ与浏览记录的SM2签名进行比对,如果比对成功,本次文件解密方请求进行浏览记录更新,且如果浏览记录更新成功,则解密并访问加密文件;如多次请求进行浏览记录更新均失败,通知服务器端使其检查最新加密文件是否出错;服务器端审查当前文件解密方资格并判断是否列入黑名单;
在浏览记录更新成功后,文件解密方解密并访问加密文件;文件解密方输入文件发布者分发的文件密钥对中的私钥,解密得SM4密钥;再利用SM4密钥解密加密文件,至此文件解密方可以浏览原始文件,但是不能复制和获取原始文件;
所述的上一位文件解密方的浏览记录中记录的信息包括浏览时间、身份标识、ip地址/MAC地址和浏览记录块编号;每个浏览记录块长110字节,包括32字节的上一浏览记录块的摘要信息。
2.根据权利要求1所述的一种防泄露的文件安全共享方法,其特征在于表示加密文件大小的二进制串和非对称加密后的SM4密钥的大小固定,分别为30bit与256bit;之后的文件大小由二进制串确定,按照固定大小分割后,剩下的部分为浏览记录链;浏览记录链中的每一块浏览记录块大小固定;如果浏览记录链的分割错误,或分割获取的浏览记录块中拆分的摘要值Ⅰ、文件建立信息识别失败,则自动删除缓存的加密文件,重新请求文件;如多次请求均失败,将通知服务器端使其检查最新的加密文件是否出错。
3.根据权利要求2所述的一种防泄露的文件安全共享方法,其特征在于最新浏览记录块摘要的SM2签名都在服务器端存储及广播。
4.根据权利要求3所述的一种防泄露的文件安全共享方法,其特征在于设置文件解密方最长可浏览时间,到达时间后自动关闭,需重新请求文件;且在浏览结束关闭客户端时,也做一次类型为关闭文件的浏览记录。