前言

NextCloud 支持服务器端加密和端到端加密,可以在一定程度上保证数据安全。近日陆续测试了 NextCloud 的服务器端加密和端到端加密,这里记录一下,包含两种加密方式的启用、测试与总结。

操作环境:
Nextcloud:20.0.1
Apache/2.4.37
10.3.17-MariaDB
CentOS Linux release 8.2

服务器端加密

服务器端加密简介

服务器端加密对用户上传的文件在服务器上进行加密,同时加密密钥也保存在服务器上。当服务器受到攻击时,加密文件安全性无法保证。服务器端加密针对挂载的外部存储(各种云盘)比较有用,第三方云存储服务商无法解密被服务器端加密过的文件(因为密钥存储在 NextCloud 服务器上)。

开启服务器端加密

NextCloud 服务器端加密现在可用加密模块只有默认加密模块(Default encryption module)可用。接下来开启服务器端加密功能

首先在 NextCloud 网页端主页点击右上角菜单,选择应用选项进入应用中心,在已禁用的应用中启用默认加密模块。

然后在 NextCloud 网页端设置的管理栏目中点击安全,再在安全页面中点击服务器端加密以开启加密,点击后会再次提示,确认后重新登录即可。

加密可选项有:加密主目录存储,当勾选时,会加密服务器本地和外部存储上的所有文件,否则只会加密外部存储上的文件。

服务器端加密测试

首先在本地新建测试文件。然后上传到 NextCloud 上。
测试文件内容

通过 SSH 登陆,找到上传的文件,通过文本编辑器打开,如下可见文件已被加密。
文件内容已加密

端到端加密

端到端加密简介

NextCloud 的端到端加密会将文件以及目录在本地加密然后上传的服务器,即使服务器被入侵,数据也不会泄露。

开启端到端加密

首先安装端到端加密模块(End-to-End Encryption)。在 NextCloud 网页端进入应用中心,选择右侧的 Files 栏目,并在右上角搜索 End-to-End Encryption ,在结果中找到:End-to-End Encryption,点击下载并启用选项,端到端加密模块即被安装。遇到应用中心无法加载的情况需要下载插件安装包手动安装,网上很多资料。

端到端加密需要在 NextCloud 手机端 App 开启。

首先在 App 设置中设置应用锁密码,然后在 App 设置中开启端到端加密。首次设置端到端加密,App 会生成密语(助记符)对话框形式给出,确认后端到端加密功能即被开启。这里需要把密语记下来保存好,密语丢失后加密文件无法解密,在其他设备开启端到端加密时也需要用到。

需要注意的是即使关闭端到端加密,再次开启时也需要输入首次开启时提供的密语以开启加密。
然后在电脑上安装并登陆NextCloud客户端,登录后会弹出对话框要求输入先前给出的密语。

端到端加密测试

通过 NextCloud 手机 App 在NC根目录新建待加密文件夹,然后点击新建的文件夹右侧的三个小点,在弹出的菜单中选择加密。在 Windows 客户端设置同步文档到加密文件夹。

在同步文件夹中新建测试文件夹,待文件夹同步后,在测试文件夹中新建测试文件:
测试文件内容

等待同步到服务器,在 Web 端可以看到文件夹和文件名已被加密:
文件夹已加密

文件名已加密

通过 SSH 登陆,找到上传的文件,通过文本编辑器打开,可见文件内容已被加密:
文件内容已加密

端到端加密存在的问题

通过一系列端到端加密上传、下载、同步测试后发现,Nextcloud 现有的端到端加密存在一些问题。

NC 端到端加密 IOS 客户端使用限制

  • 端到端加密只能在移动端App开启,且只能加密NC一级目录。
  • 开启端到端加密时,被加密的目录内不能有任何文件/文件夹。
  • 只能上传/下载加密目录中的文件,不能把加密目录中的文件移动到其他目录,反之亦然。
  • 当不需要端到端加密,要对加密目录进行解密时,加密目录下不能有任何文件/文件夹。
  • 不能直接删除加密目录,否则会出现文件已锁定提示;如果删除时加密目录下存在文件/文件夹,提示错误后会无法上传文件/文件夹,也无法删除加密目录下的任何文件。正确做法是先删除加密目录下的所有文件/文件夹,然后解密加密目录,最后删除该目录。

如果出现端到端加密下文件已锁定的情况,需要清除端到端加密锁:进入数据库后,切换到 NextCloud 数据库,然后执行DELETE FROM oc_e2e_encryption_lock;

NC 端到端加密 Windows 客户端使用限制

  • 无法设置端到端加密。
  • 不能删除端到端加密同步文件夹中的文件/文件夹,否则会出错。
  • 向加密文件夹内粘贴文件时,只能粘贴单个文件/文件夹,不能粘贴多级文件夹、也不能粘贴带有文件的文件夹,否则会出错。
  • 端到端加密同步的文件内创建文件夹后,需要查看 Windows NC 客户端里文件夹的同步状态,只有当新建的文件夹解密后(即能够显示正确的名字而非加密后的字符,NC 的实际操作是同步文件夹到服务器,然后再把服务器上的文件夹再同步到本地),才能向里面添加文件/文件夹。

文件夹未解密

文件夹已解密

总结

NextCloud 服务端加密可以使用,且没有明显问题。

NextCloud 端到端加密可以使用,但是限制多,特别是 Windows 客户端问题太多,容易出错。适用于加密存档备份到云端,平时常用的文件不建议进行端到端加密

Last modification:November 20th, 2020 at 09:13 pm