加密云存储中的文件,保护你的隐私
前一段时间,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/bash # if 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
四、效果
1、加密目录数据
2、映射目录数据(映射后)
3、云端数据
五、总结
由于文件在本地就已经加密。就算云传输通道不安全,云存储不安全,对我来说已经足够安全了。
我再强调一下,安全都是相对而言的。没有绝对安全的事物,也希望大家不要因为这点问题而争论不休。
来自:http://my.oschina.net/noahxiao/blog/205667