目標很簡單。云存儲上很多文件都挺私人的,直接放著很嚇人。雖說云存儲采用各種方法來保證你的安全,但是世界上沒有絕對的安全。萬一密碼泄漏,或者更糟糕,云存儲泄漏。此時你的各種文件就在網絡上裸奔了。
最簡單的解決方法是什么?在底層存儲上套一層加密唄。不過由于是云存儲,所以基于塊設備的加密方案不能用,例如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文章
732瀏覽量
46001 -
加密系統
+關注
關注
0文章
18瀏覽量
11028
原文標題:在云存儲上疊加加密文件系統
文章出處:【微信號:cunchujie,微信公眾號:存儲界】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論