目标很简单。云存储上很多文件都挺私人的,直接放着很吓人。虽说云存储采用各种方法来保证你的安全,但是世界上没有绝对的安全。万一密码泄漏,或者更糟糕,云存储泄漏。此时你的各种文件就在网络上裸奔了。
最简单的解决方法是什么?在底层存储上套一层加密呗。不过由于是云存储,所以基于块设备的加密方案不能用,例如LUKS。否则你同步到云上的就是一个超级巨大的块文件,然后每次修改,云存储客户端都要找到差别上传。这太蛋疼了。正解是每个文件分别加密上传。但即便如此,对于超大文件进行加密后依然会影响上传效率,请提前考虑一下这个问题。
同时又要注意,云存储用的加密文件系统和普通的加密文件系统还有点差别。很多加密文件系统的daemon会认为自己是唯一一个会访问加密内容的进程,而云存储可能随时接收来自远程的修改。所以这会造成一些问题。
备选方案
我对比了四种方案,EncFS,CryFS,GoCryptFS,eCryptFS。对比的方法是用这四种分别建立一个加密目录,然后用不同的方法做写入测试,看他的各种参数。顺便说一句,如果你要看的话,其实看这份表格就好。我只是在自己的机器上复现了一下,顺便了解一下各家特点。
测试语句:
timeddif=/dev/zeroof=testbs=1048576count=1024
timeddif=/dev/zeroof=testbs=1024count=1048576
timetarxflinux-4.13.12.tar.xz
其中,在裸盘上直接解压内核源码耗时7.568s,空间使用870M。
数据对比
+---------+-------+-----+-------+-----+-------+-----+--------------+
||time1|size1|time2|size2|time3|size3|comment|
+---------+-------+-----+-------+-----+-------+-----+--------------+
|EncFS|13.210s|1.1G|39.039s|1.1G|26.496s|894M||
+---------+-------+-----+-------+-----+-------+-----+--------------+
|CryFS|9.327s|1.1G|21.230s|1.1G|42.918s|2.5G|删除耗时2.804s|
+---------+-------+-----+-------+-----+-------+-----+--------------+
|GoCryptFS|3.515s|1.1G|28.180s|1.1G|19.874s|918M||
+---------+-------+-----+-------+-----+-------+-----+--------------+
|eCryptFS|3.132s|1.1G|10.218s|1.1G|9.448s|1.4G||
+---------+-------+-----+-------+-----+-------+-----+--------------+
解读
首先说怎么解读。time1是连续写入性能,time2是离散写入性能,time3是小文件写入性能,size3是大量小文件膨胀系统。size1和size2没啥用。
下面先看性能。从性能上看,最优秀的是eCryptFS。这是理所当然,因为这是唯一一个内核态而且和内核整合的系统。GoCryptFS次之。EncFS要慢上好多。至于CryFS,一开始写小文件就原型毕露了。何况这是唯一一个删除大文件时间超过1s的,达到2.8s。你看我其他系统测试里都没写。
然后是膨胀率。EncFS膨胀2.75%,CryFS膨胀近三倍,GoCryptFS膨胀5.52%,eCryptFS膨胀65%。相比起来,EncFS膨胀率最小,GoCryptFS次之,CryFS最糟糕。
安全性
下面是同一个人出的三份审计报告:
encfs的审计报告
gocryptfs的审计报告
ecryptfs的审计报告
根据报告可以得到这么几个意见:
EncFS有安全性隐患,目前未解决。主要隐患来自于文件块加密模式上。如果攻击者有机会获得多份密文副本,那么就是不安全的。
GoCryptFS有一定安全问题,目前未解决。下面细说。
eCryptFS需要进一步审计,目前可视为安全。
综叙
可能出乎大家意料,我首先排除了encfs和ecryptfs。encfs是因为有安全性隐患。ecryptfs是因为不便于使用和不兼容云存储模式。ecryptfs在每次挂载时都需要独立输入所有参数,这样使用起来比较不方便。更糟糕的是,ecryptfs并不支持同时有人访问加密数据本身。这样会造成竞争问题。对于一个内核级的东西来说,这有极大的危险性。同时,这货的膨胀率有点高。
然后在CryFS和GoCryptFS里,我选择GoCryptFS。虽然CryFS是唯一一个明确声明自己兼容云存储的,但是其膨胀率实在太高了。虽然是云存储,但是毕竟要考虑性价比的。
那么GoCryptFS的安全问题是什么呢?主要隐患来自和云存储混用时,攻击者虽然对文件内容一无所知,但是可以修改文件内容。例如将其他加密文件复制过来,或者将部分内容嫁接过来。审计报告里提供了一系列的POC来说明这一风险。这一风险对于特定情况的用户来说是非常危险的,例如在加密区域存储多个可信身份/帐号身份文件的人。
很幸运,我对这方面没要求。GoCryptFS的膨胀率不大,仅高于EncFS,完全可以接受。性能也不错,仅次于eCryptFS。使用非常方便,同时还能提供过得去的安全特性。因此综合上面所有情况,我选择GoCryptFS作为云存储上叠加的加密文件系统。
-
云存储
+关注
关注
7文章
736浏览量
46042 -
加密系统
+关注
关注
0文章
18浏览量
11031
原文标题:在云存储上叠加加密文件系统
文章出处:【微信号:cunchujie,微信公众号:存储界】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论