本发明涉及一种管理云盘文件加密与解密的系统和方法,是一种应用与计算网络的系统和方法,是一种用于网络安全的系统和方法。
背景技术:
1、存储数据的安全是大众关注的主要问题之一,尤其是文件的安全性更是重中之重,文件中可能涉及到许多机密信息、不宜公开的以及敏感的信息,一旦文件被窃取,那么造成的损失是不可想象的,因此对文件进行加密后存储则是重要的保障措施。云盘管理系统具有使用方便,灵活访问等优点,已经广泛应用于各行各业,包括一个重要的使用场景:pc端、移动端和网页端可以随时访问文件、同步文件,尤其是涉密单位的使用中,往往更加关心的是数据的安全性,如果使用不经过加密的使用方式,会存在以下明显不足:通过云盘存储的文件都是明文存储,可以访问存储后端的用户都可以读取数据,包括云盘管理员。丢弃硬盘也可能导致数据泄露,因为硬盘中存储的数据是不经过加密存储的。如果加密算法过于简单则有可能导致数据泄露的风险。云盘文件通过网络传输的过程中有被窃取的风险。如何实现端到端加密,是一个需要解决的问题。
技术实现思路
1、为了克服现有技术的问题,本发明提出了一种管理云盘文件加密与解密的系统和方法。所述的系统和方法基于aes-256加密算法,使用ctr模式对文件进行加密和解密。在用户端,上传文件到云盘服务系统前,首先对上传的文件进行加密处理,然后通过网络传输到云盘服务器,最后写入到存储介质中。在用户端,下载文件到本地,首先云盘服务器从存储介质中读取文件,然后通过网络传输到用户端,最后把对文件进行解密得到明文文件。对于用户端上传文件情况:首先对待上传到云盘的文件进行加密处理,然后把经过加密的文件通过网络传入到云盘服务器中,并把文件写入到存储介质中,经过此处理,其优点有:在数据网络传输过程中是经过加密的,确保传输过程的数据安全;存储在云盘服务器中的文件也是加密的,确保了云盘管理者也不能读取数据。对于用户端下载文件情况:首先从云盘服务器的存储介质中读取文件,此时的文件是经过加密的,然后把此文件经过网络传输到用户端,最后用户端对文件进行解密处理得到明文文件,经过此处理,其优点有:在数据网络传输过程中是经过加密的,确保传输过程的数据安全;存储在云盘服务器中的文件也是加密的,不对文件进行任何处理;加密文件传输到用户端时进行解密。
2、本发明的目的是这样实现的:一种管理云盘文件加密与解密的系统,包括:由计算网络连接的云盘服务器和客户端,所述的云盘服务器设有存储介质和文件读写设施,所述的客户端设有文件加密和解密的设施,所述的文件加密和解密的设施包括:私有密钥处理模块;专属密钥处理模块;加密文件处理模块;解密私有密钥处理模块;解密专属密钥处理模块;解密文件处理模块;
3、所述的私有密钥处理模块用于:
4、生成salt:通过创建用户id的原始sha256哈希派生出私有salt;
5、生成加密密钥:通过使用hash_hmac函数创建一个原始sha256-pbkdf2散列,该散列包含salt、500.000次迭代和目标大小为32字节的用户密码,生成加密密钥;
6、生成初始向量:使用随机函数随机生成一个16字节字符串初始向量;
7、加密私有密钥:基于aes-256-ctr加密算法,通过初始向量和加密密钥对私有密钥进行加密处理,得到加密过的私有密钥;
8、生成验证密钥:通过创建加密密钥的原始sha256哈希派生出一个验证密钥;
9、生成签名:通过使用hash_hmac函数创建一个16进制sha256-hmac散列,该散列包含加密的私有密钥和验证密钥,生成签名;
10、形成带有加密密钥、初始向量、加密签名的密钥文件;
11、所述的专属密钥处理模块用于:
12、生成专属密钥:使用随机函数,生成一个随机的32字节的字符串作为专属密钥;
13、加密专属密钥:使用公共密钥,对专属密钥进行加密处理,从而得到:加密过的专属密钥和加密封装密钥;
14、所述的加密文件处理模块用于:
15、将待加密的明文文件切割为文件分片块:将待加密的明文文件分成多个长度相等的文件分片块,并标记初始位置;
16、生成初始向量:使用随机函数,对每个文件分片块随机生成一个16字节字符串初始向量,作为各个文件分片块带有起始位置标记的初始向量;
17、通过每个文件分片块的初始向量和加密过的专属密钥,对每一个文件分片块进行加密处理,得到加密过的带有起始位置标记的私有密钥;
18、生成验证密钥:通过创建专属加密密钥和文件分片块的起始位置的原始sha256哈希派生出一个验证密钥;
19、生成签名:对每个文件分片块通过使用hash_hmac函数创建一个16进制sha256-hmac散列,该散列包含各自的加密分片块和验证密钥,生成各个文件分片块带有起始位置标记的签名;
20、生成文件分片块体,所述的文件块体包含:
21、带有起始位置标记的加密文件块;
22、带有起始位置标记的初始向量;
23、带有起始位置标记的签名;
24、将各个分片块体合并为一个文件,形成加密文件;
25、所述的解密私有密钥处理模块用于:
26、读取加密过的私有密钥:从私有密钥文件中读取内容,并对文件进行分析,获取到以下内容:
27、加密过的私有密钥;
28、初始化向量;
29、加密签名;
30、生成salt:通过创建用户id的原始sha256哈希派生出私有salt;
31、生成解密密钥:通过使用hash_hmac函数创建一个原始sha256-pbkdf2散列,该散列包含salt、500.000次迭代和目标大小为32字节的密码,生成解密密钥;
32、生成验证密钥:通过创建解密密钥的原始sha256哈希派生出一个验证密钥;
33、生成签名:通过使用hash_hmac函数创建一个16进制sha256-hmac散列,该散列包含加密的私有密钥和验证密钥,生成签名,并与加密签名进行比对,如果比对相等则继续解密;如果不相同则认为解密失败,并退出;
34、生成私有密钥:通过初始化向量和解密密钥,使用aes--ctr解密算法解密私有密钥;
35、所述的解密专属密钥处理模块用于:使用私有密钥和封装密钥对加密过的专属密钥进行解密,得到解密过的专属密钥;
36、所述的解密文件处理模块用于:
37、加密文件切割:将加密文件分成多个大小相同长度的文件块;如将文件分为多个大小为8192字节的文件块,并解析出以下内容:
38、带有起始位置标记的加密文件块;
39、带有起始位置标记的初始向量;
40、带有起始位置标记的签名;
41、生成验证密钥:通过哈希函数,以专属密钥和文件分片起始位置使用原始sha512哈希得到一个验证密钥;
42、生成签名:通过使用hash_hmac函数创建一个16进制sha256-hmac散列,该散列包含加密的私有密钥和验证密钥,生成签名,并与加密时得到的签名进行比对,如果比对相等则进入下一步;否则解密失败;
43、通过每个文件分片块的初始向量和专属密钥,使用aes-256-ctr算法进行解密得到解密后的文件分片块;
44、把各个解密的文件分片块合,生成解密后的明文文件。
45、一种使用上述系统的管理云盘文件加密与解密的方法,所述方法包括:加密过程、解密过程和分享过程,所述方法的步骤如下:
46、加密过程:
47、步骤101,明文文件分割:将明文文件分割成多个相同长度的明文分片块,并记录各个明文分片块的起始地址,形成明文分片块序列;
48、步骤102,明文分片块加密:使用rsa算法生成一对密钥:共有密钥和私有密钥,通过文件专属密钥和明文分片块的初始向量对各个明文分片块进行加密,形成与明文分片块相同序列的密文分片块序列;
49、步骤103,构建密文文件的分片块体:将各个所述的密文分片块与各自的分片块初始向量和密文分片块签名结合,形成分片块体序列;
50、所述的生成密文分片块签名包括如下子步骤:
51、子步骤1031,生成验证密钥:使用哈希函数,通过明文文件专属密钥、文件版本和明文分片块的位置信息得到验证密钥;
52、子步骤1032,构建密文分片块签名:通过使用hash_hmac函数创建一个16进制sha256-hmac散列,该散列包含加密分片块和验证密钥,从而得到密文分片块签名;
53、步骤104,构建密文文件的文件头:所述的文件头采用包含加密算法的固定格式,文件头的长度和单个密文分片块体长度相同;
54、步骤105,完成文件加密:将文件头和多个密文分片块体按顺序拼接,形成密文文件;
55、解密过程:
56、步骤201,密文文件分割:根据指定大小把密文文件切分成大小相等的分片块体,并分析按照指定长度切分后各个分片块体的具体内容,以及每个分片块体的组成情况,第一个分片块体为包含加密算法的文件头,其余分片块体为密文分片块体,所述的密文分片块体包括:密文分片块,分片块初始向量和密文分片块签名;
57、步骤202,生成密文分片块签名:通过明文文件专属密钥、文件版本和明文分片块的位置信息生成密文分片块签名;
58、步骤203,检查分片块体签名:通过明文文件专属密钥、文件版本和明文分片块的位置信息生成密文分片块签名,然后和解析出来的分片块签名进行比对,如果两者相同则进入下一步骤,否则解密文件失败,结束解密过程;
59、步骤204,获取明文分片块:通过文件专属密钥和明文分片块的初始向量对各个密文分片块进行解密,形成明文分片块序列;
60、步骤205,拼接解密分片块:按顺序合并各个明文分片块,得到了解密后的明文文件,解密过程结束。
61、分享过程:
62、步骤301,选择被分享者:分享者获取被分享者信息;
63、步骤302,选择分享文件:分享者根据被分享者的需要和自身的要求准备给被分享者的分享文件;
64、步骤303,生成共享密钥:分享者读取被分享者的公共密钥,并通过加密算法对其进行加密得到封装密钥,并把分享文件的版本信息和加密过的封装密钥组合一起,生成共享密钥;之后将待分享文件与共享密钥一同发给被分享者;
65、步骤304,解析共享密钥:被分享者收到待分享文件后,读取文件时通过读取共享密钥解析出文件版本和加密的封装密钥;
66、步骤305,读取分享文件:被分享用户读取分享文件,告知分享者;
67、步骤306,解密分享文件:通过加密过的封装密钥和分享者的私有密钥解密出分享文件的专属密钥,执行步骤202-205对分享文件进行解密;
68、步骤307,对分享文件执行操作:分享者把解密过的文件发送给被分享者,被分享者对文件执行下载、修改。
69、本发明的优点和有益效果是:本发明基于aes-256加密算法,使用ctr模式对文件进行加密和解密。对于用户端上传文件情况:首先对待上传到云盘的文件进行加密处理,然后把经过加密的文件通过网络传入到云盘服务器中,并把文件写入到存储介质中,经过此处理,其优点有:在数据网络传输过程中是经过加密的,确保传输过程的数据安全;存储在云盘服务器中的文件也是加密的,确保了云盘管理者也不能读取数据。对于用户端下载文件情况:首先从云盘服务器的存储介质中读取文件,此时的文件是经过加密的,然后把此文件经过网络传输到用户端,最后用户端对文件进行解密处理得到明文文件,经过此处理,其优点有:在数据网络传输过程中是经过加密的,确保传输过程的数据安全;存储在云盘服务器中的文件也是加密的,不对文件进行任何处理,加密文件传输到用户端时进行解密,确保数据安全。