如何在像Dropbox这样的云存储服务中加密数据?

我很想使用Ubuntu One或Dropbox的功能,比如文件存储等等,但我不希望其他人能够访问我的数据,担心美国《爱国者法案》等等。我希望所有信息都能加密,只有在我的设备上解密。这在Ubuntu One或Dropbox上可行吗?

1Ubuntu One的一个目标是随时随地提供对个人数据的访问。然而,如果启用加密功能,这将变得不可能。但我认为,将加密设为可选项是解决这个问题的方法。 - rigved
9个回答

是的,这是可能的。使用encfs进行每个文件加密的最佳方法是:
一般原则是,在UbuntuOne/Dropbox中有一个(可选择隐藏的)加密文件夹,您的文件存储在其中,但您通过另一个文件夹访问它们,该文件夹显示解密后的文件。您添加到解密文件夹的任何文件都将被加密并放入加密文件夹中:
解密文件夹 ←encfs→ 加密文件夹(位于UbuntuOne/Dropbox内)
在另一台计算机上,通过UbuntuOne/Dropbox同步加密文件夹,并且也可以即时解密。
安装:
  • 安装 EncFS 版本 1.7 或更高版本

    sudo apt-get install encfs
    
  • 安装 gnome-encfs-manager

    sudo add-apt-repository ppa:gencfsm/ppa
    sudo apt-get update && sudo apt-get install gnome-encfs-manager
    

在第一台电脑上设置驱动器:

  • 在Dropbox/Ubuntu One中创建一个(隐藏的)目录,用作加密文件的存储位置
  • 启动gnome-encfs-manager并设置一个新的存储库(点击加号)
  • 将要加密的目录设置为Dropbox/Ubuntu One文件夹中的一个(隐藏的)文件夹
  • 将挂载目录设置为任意位置(默认即可)
  • 输入一个强密码(30个随机字符...)并点击“创建”
  • 编辑新的存储库,使其在启动时自动挂载,并将密码保存在gnome keyring中

现在您应该已经挂载了加密的驱动器(它会显示为已挂载的USB驱动器)

在其他电脑上导入驱动器:

  • 等待所有文件同步
  • 启动gnome-encfs-manager并设置一个新的隐藏文件夹
  • 将目录设置为之前在您的Dropbox/Ubuntu中创建的文件夹
  • encfs-manager将检测驱动器并导入它
  • 设置安装目录(默认即可)并点击“导入”
  • 按照上述方式编辑新的隐藏文件夹
  • 第一次挂载时,会要求您输入密码

跨平台兼容性:

  • 当使用Encdroid(开源,推荐)或Cryptonite(开源)时,这个软件与Android兼容。这两个Android应用程序都支持Dropbox,并且还可以通过本地文件解密与UbuntuOne一起使用(需要与一个将文件同步到SD卡的UbuntuOne客户端结合使用)。
  • 这个软件可能也与Windows兼容,可以使用encfs4win或其他软件。

这个方法很有效,应该标记为被接受的答案。唯一的缺点是,在使用Ubuntu One时(不确定DropBox是否也有此问题),通知和文件同步/检查图标不会出现,所以很难知道文件何时完成同步到Ubuntu One。 - Joseph
通过Dropbox使用这种方法,同步图标就可以正常工作啦;-) - Uli
你知道为什么EncFS的写入性能很慢吗?它比ecryptfs或truecrypt要慢得多。https://lists.fedorahosted.org/pipermail/cloudfs-devel/2011-June/000093.html - gsedej
@gsedej 我不知道,但是对于我的需求来说速度已经足够快了。 - Uli
@gsedej 你有更新的数字吗?同一邮件线程中的后续邮件说这些数字是针对早期版本的,"性能可能会显著下降(对于CloudFS)"。这个页面有更多详细信息: http://wiki.excito.org/wiki/index.php/Using_encFS_on_the_B3#encFS_or_eCryptfs....3F - Blaisorblade
6Encfs被发现存在安全漏洞,尤其在与Dropbox一起使用时特别不安全,请参见此处。一个替代方案是CryFS - Heinzi

唯一好的方法是先在本地加密文件,然后将其移动到Ubuntu One文件夹中。如果你创建了一个加密分区或容器,并选择将其与Ubuntu One同步,那么你就有可能同步未加密的数据。点击这里查看使用encFS的一种方法。不过它也有一些限制。
另一种选择是SpiderOak,它的工作方式类似于Ubuntu One,但会在离开你的设备之前对所有内容进行加密。他们声称如果你忘记密码,他们无法恢复你的数据,甚至还支持双因素身份验证。我上次尝试时,在启动后的几分钟内,它会使我的机器变慢,因为它要扫描我的驱动器,但现在可能已经修复了。此外,它提供的免费空间是2GB,而Ubuntu One提供的是5GB。
点击这里可以找到另一个Ask Ubuntu帖子,详细介绍了你提出的一些问题。

我可以在这里向您推荐Wuala服务作为Spideroak的替代品。几乎具有相同的功能。
但是,如果您真的想要控制加密过程,我建议您同时使用Ubuntu One和Déjà-Dup(备份工具)。您可以使用Ubuntu One的服务器空间存储数据,但是通过Déjà-Dup使用密码上传数据。Déjà-Dup将使用您的密码对数据进行加密。我认为这是最好的解决方案:简单而安全。

你可以考虑使用EncFS(http://www.arg0.net/encfs)来实现。将加密的文件系统存储在Ubuntu One目录中,然后在其他地方挂载它。例如,可以按照以下设置进行操作。
- `~/Ubuntu One/.encrypted`:隐藏的加密文件 - `~/Ubuntu One (encrypted)/`:可见的解密文件
然而,这样做会使文件数量、目录和文件结构以及其大小可见,所以并不是最终解决方案。
请点击这里了解如何设置,以及这里获取有关优缺点的基本信息。

我试用了SpiderOak。
优点: "零知识"的概念从一开始就内置了,正是我想要的。
Super easy setup on Ubuntu and Android phone.

Concurrent file access AND encryption is there by design. 

缺点: 闭源客户端。在安全方面,我更信任开源软件。
Cannot synchronize mobile phone directories to the cloud. Con only read
what is stored, by downloading every file on demand.

我选择使用UbuntuOne + EncFs,因为加密层是开源的。
不过,如果UbuntuOne能够默认实现"零知识"的概念,那将非常感激。
现在我正在使用SSHFS连接到自己的服务器,以便访问大文件,比如照片和视频收藏。
优点: - 不需要在每台电脑上复制每个文件。
No monthly fees for keeping terabytes of data on the network.
(because it's all on my once bought hardware)

缺点: 在网络连接慢或离线时无用。
我使用GIT + GITCOLA进行文档注册。
优点: 可以离线工作。
Have history on previous directory/files states.

缺点: 对于超过1 GB的二进制文件效果不佳。
Space is consumed by local git repository AND checked out copy of files,
so not good for huge video / photo collections.

我使用UbuntuOne + EncFS来存储几个千兆字节的快速变动和临时文件,比如桌面目录。这样我可以方便地在不同电脑之间切换,并继续处理同一正在进行中的文件,有时甚至可以离线操作,而无需快速增长的GIT仓库。

CryFS

免责声明:我是以下项目的开发人员之一。


有一个相对较新的开源项目叫做Cryfs,它专门用于加密你的Dropbox(或其他云存储)。
主要是因为所有现有的加密文件系统在与云存储一起使用时都有各自的缺点,所以才构建了这个项目。 此外,CryFS不仅加密文件内容,还加密文件大小、元数据和目录结构,这一点其他工具除了VeraCrypt之外都无法做到。
不对文件大小和目录结构进行加密会给攻击者提供比你愿意提供的更多信息。一个典型的例子是一个文件系统有很多文件夹,每个文件夹约有20个文件,每个文件大约3MB,即使被加密,也很容易被识别为音乐CD集合。另一个例子是存储一组特定的已知文件(比如Windows光盘)。通过查看目录结构和文件大小,可以轻松判断被加密文件中是否包含了这些文件。

你可能想要看一下Gnome Encfs Manager项目。
它实现了一种简单的图形界面方式来组织一个或多个EncFS卷(然后可以通过Ubuntu One、Dropbox和类似的服务进行同步;也许WebDAV也可以工作)。
详细信息请参考Uli的回答

是的,这是可能的。使用encfs以文件级加密的方式实现这一点是最好的方法:

基本原理是,在UbuntuOne/Dropbox中有一个(隐藏的)加密文件夹,存储着你的文件,但你通过另一个文件夹访问它们,在那里显示解密后的文件。你添加到解密文件夹的任何文件都将被加密并放入加密文件夹中:

解密文件夹 ←encfs→ 加密文件夹(位于UbuntuOne/Dropbox内部)

在另一台计算机上,通过UbuntuOne/Dropbox同步加密文件夹,并且也可以即时解密。

我认为这是你需要考虑的最少的方式。而且,它是开源的。

感谢你的提醒!Gnome Encfs Manager运行得很好,而且使用起来确实更方便。我已经相应地更新了我的回答,并在跨平台部分中加入了兼容安卓应用程序的信息。 - Uli

TrueCrypt主页上来看:警告:使用TrueCrypt不安全,因为它可能存在未修复的安全问题。

你也可以使用truecrypt

以下是如何使用truecrypt的简要概述(详细说明的来源在下面提供):

  • http://www.truecrypt.org/downloads下载truecrypt并安装。
  • 打开truecrypt,进入Volumes > Create New Volume
  • 选择Create an encrypted file container
  • 配置容器:存储文件容器的位置、哈希和加密算法、容器的大小、密码/密钥文件等,并格式化容器。
  • 从主truecrypt窗口中,选择File按钮来定位你创建的文件,然后按下Mount
  • 输入密码/密钥文件。
  • 现在你可以在nautilus或任何其他文件浏览器中看到已挂载的文件。
  • 完成后,请卸载该卷。

现在,你可以将这个容器上传到你的Ubuntu One账户。

来源和进一步信息:

这个答案并不是要进行比较,但是下面我会提到使用TrueCrypt的优缺点作为参考。
使用TrueCrypt(而不是EncFS)的优点如下: - TrueCrypt是跨平台的,适用于Windows、Linux和Mac。 - EncFS使用FUSE将加密目录挂载到另一个目录上,因此文件传输相对较慢。 - EncFS是基于文件的,这意味着每个人实际上都可以看到文件数量、权限、大致大小以及最后访问或修改的时间。
缺点包括: - 加密卷是固定大小的卷,因此文件始终会占用最大空间。而EncFS在复制文件时使用空间。 - 一个很大的缺点是:每当您修改加密卷时,您必须下载/上传完整文件以同步您的Ubuntu One帐户。

另一个缺点是,当你没有等待完全同步就在不同的计算机上处理文件时,容器文件中会出现同步冲突。一个替代方案是Cryfs - Heinzi

Ubuntu文件存储现在已经过时了。 我现在使用https://syncthing.net/
  • 开源。
  • 免费且无限数据存储。
  • 数据仅存储在您的设备上。