加密云存储中的文件,保护你的隐私

jopen 10年前

前一段时间,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