加密云存儲中的文件,保護你的隱私
前一段時間,CIA 鬧得很歡。由此引發我們的思考,是否可以相信云存儲。從目前的現狀來說,答案是 NO。我們的數據存儲在云端(各種快盤,Dropbox 等),大家都是開發的想想也知道,你的數據還是有可能被第三者看到的。所以常理上講,云上只存些不太私密的數據,如:常規照片,軟件。但如果我想存儲一些 證件照片,證書文件與一些其它的隱私數據呢?
一、背景
前幾天一個硬盤壞了(SSD),數據無一幸免。還好我有一定的數據備份。新硬盤到了,我想的是不能再這樣下去了。我需要利用現有云存儲(Dropbox,xx快盤等),實時備份我的重要數據。問題也來了,云存儲安全嗎?不會出xx門吧?
二、分析
云存儲安全從本質上來說肯定是不安全的,所以我需要對本地的文件進行加密。云端只存儲我加密后的文件,這種方式就算 CIA 也很難搞定。
那我們采用何種加密方式呢?Zip 加密碼?文件包工具加密還是顯得太麻煩,編輯一個文檔要先解包再打包。而解包后的數據存在磁盤上也是隱患(可以被深度數據分析工具發現)。
TrueCrypt 是一種不錯的加密方式,直接把一個文件(或分區)映射為一個虛擬盤(解密后的文件只會緩存在內存中,所以是安全的),但與云存儲放在一起好像就不太協調。問題是 TrueCrypt 存儲是按單文件方式,如一個10G的數據文件。不用我說大家也可能會想到,你每次修改你的任何虛擬盤中的數據都會觸發文件變更,導致每次要重傳10G!!!的文件。雖然有些云存儲客戶端支持對大文件的分析不用全部重傳,但還是相當不爽。
EncFS 也是一種文件系統加密方式,通過映射一個目錄來做虛擬目錄存儲(解密后的文件只會緩存在內存中,所以是安全的)。EncFS 不像 TrueCrypt 把所有的文件都存放在一個加密文件中。它的加密方式是保持你原有的目錄結構,把文件名、目錄名、文件內容進行加密。
- 好處:單文件加密非常適合云存儲,你修改了哪個文件只需要上傳那個文件對應的加密文集即可。
- 壞處:第三方人員,可以看到你的目錄結構。多文件分散,不易于本地維護。
三、加密目錄(EncFS)
注:我用的是 Linux(Mint)系統,所以教程會按 Linux 系統來寫。如果你使用 Windows 系統也可以通過 encfs4win(http://members.ferrara.linux.it/freddy77/encfs.html)或同類工具完成加密。
1、在云存儲目錄中創建準備用于存放加密文件的目錄(mkdir)
如:/opt/noah/Dropbox/.encrypted/Photos
我在 Dropbox 中創建了 .encrypted 主目錄,然后專門創建了存放私人內容的目錄 Photos
2、創建映射目錄(mkdir)
數據是存放在 .encrypted/Photos 中,但你使用 EncFS 時并不直接操作加密目錄。而是映射目錄。
我的映射目錄創建在 /home/noah/EncFS/Photos,空著就可以或者你可以放一些不相關的內容進行混淆。
注:EncFS 在映射加密目錄時,不會影響原映射目錄內容。
3、安裝 encfs
sudo apt-get install encfs
4、初始化加密目錄
encfs /opt/noah/Dropbox/.encrypted/Photos/ ~/EncFS/Photos
選擇模式
Creating new encrypted volume. Please choose from one of the following options: enter "x" for expert configuration mode, enter "p" for pre-configured paranoia mode, anything else, or an empty line will select standard mode. ?>
選 p 就可以,x 為專家模式(可以修改加密算法,加密方式等)。
然后輸入密碼。(建議14個字符以上密碼,密碼的長度就是你文件的安全程度,目前暴力破14位以上密碼可能需要幾百年)創建完成后,你向 EncFs/Photos 中放入文件,對應的加密目錄 .encrypted/Photos 也會生成加密文件。Dropbox 發現變更后會自動上傳加密文件。
5、卸載加密目錄
不使用時,斷開映射關系。EncFs/Photos 中的內容恢復,沒有任何文件痕跡。
sudo umount ~/EncFS/Photos/
6、重新掛載加密目錄
指令與初始化時一樣,EncFS 發現目錄已經加密就不會讓你再初始化了。
encfs /opt/noah/Dropbox/.encrypted/Photos/ ~/EncFS/Photos
你也可以將這個過程做一個 sh 文件,簡化掛載過程
#!/bin/bashif the script was not launched from a terminal, restart it from a terminal
if [[ ! -t 0 ]] && [[ -x /usr/bin/x-terminal-emulator ]]; then /usr/bin/x-terminal-emulator -e "bash -c \"$0 $*; read -s -p 'Press enter to continue...'\"" exit fi
mkdir -p ~/EncFS/Photos encfs /opt/noah/Dropbox/.encrypted/Photos/ ~/EncFS/Photos</pre>
四、效果
1、加密目錄數據
![]()
2、映射目錄數據(映射后)
![]()
3、云端數據
![]()
五、總結
由于文件在本地就已經加密。就算云傳輸通道不安全,云存儲不安全,對我來說已經足夠安全了。
我再強調一下,安全都是相對而言的。沒有絕對安全的事物,也希望大家不要因為這點問題而爭論不休。
來自:http://my.oschina.net/noahxiao/blog/205667