NeoAtlantis最近使用了Dropbox存储它的一些重要数据。Dropbox提供2GB的空间,不算多,所以NeoAtlantis打算用之存储最重要的那些文件。
这样就带来一个问题:NeoAtlantis不信任任何这类在线存储。Dropbox看起来真的不错,软件是开源的,性能也很好,但是NeoAtlantis也不愿意将它的数据就这样保存在它的数据中心。因为,虽然Dropbox声称自身使用了AES-256加密,但是AES-256是对称加密。它的密钥一定在某些人那里保管,但这人不是我。
如何平衡云存储的易用性和资料的安全性?我们需要的技术很简单,就是在资料在被同步到云服务器之前就将其加密。在Linux下,软件encfs
很有帮助。
安装
安装很简单,以Fedora为例,和任何软件一样:
$ sudo yum install encfs
使用encfs
encfs工作时,可以将一个目录A作为存储密文的目录,另一个目录B作为访问的入口。这样,对B目录进行读写操作,就和一般目录一般。所有写入的新文件,直接被加密,放置在A目录中。
通过encfs建立从A到B的“映射”的命令是:
$ encfs /到/A目录/的/绝对路径 /到/B目录/的/绝对路径
断开这一映射,使得B目录中不再可以看到这些被加密的文件的方法是:
$ fusermount -u /到/B目录/的/绝对路径
注意是绝对路径。,如果写encfs ./DirA ./DirB
是不行的。
第一次使用encfs建立基于A目录中的加密时,需要根据向导进行初始化设定。这个向导应该是中文的。安全性设定到最大就很好了。需要唯一注意的大概就是设定安全的密码,尽可能地长。
实际一点!
举一个具体的例子:假设我想在/home/neoatlantis
下建立一个名字叫做网盘
的目录,我希望将它的数据加密放在同一目录下的.dropbox-encrypted
目录中。这样,我访问“网盘”目录,就和普通的文件操作一样。然后.dropbox-encrypted
中就是被映射出去的密文,也是我打算放到网盘上的数据。
首先在/home/neoatlantis
下分别建立网盘
和.dropbox-encrypted
目录:
$ cd /home/neoatlantis
$ mkdir 网盘 .dropbox-encrypted
这样,启动和停止加密目录的命令就是:
$ encfs /home/neoatlantis/.dropbox-encrypted /home/neoatlantis/网盘 # 启动
$ fusermount -u /home/neoatlantis/网盘 # 停止
然而这样使用很麻烦。我希望能在Linux的命令行设定两个指令:netdisk-on
和netdisk-off
。前者用来启动,后者停止。于是编辑shell的配置文件,我用的是zsh,所以编辑.zshrc
,您如果用的是bash,应该编辑.bashrc
,他们都应该在您的用户主目录下。
加入如下两行:
alias netdisk-on="chmod 700 /home/neoatlantis/网盘; encfs /home/neoatlantis/.dropbox-encrypted /home/neoatlantis/网盘"
alias netdisk-off="fusermount -u /home/neoatlantis/网盘; chmod 000 /home/neoatlantis/网盘"
注意到我用了chmod
来在挂载前和卸载后设定网盘
目录的访问权限。这样可以避免误操作,在没有启动加密时就写入数据。
最后一步:下载和安装Dropbox,将它的同步目录设定为/home/neoatlantis/.dropbox-encrypted
,然后去你的Dropbox网盘查看下,是否都是密文了。