Nextcloud 20 使用笔记 - 服务端加密和端到端加密

2021年1月1日

  本篇用于记录在 Nextcloud 20.0.4 使用过程中对服务端加密和端到端加密的使用和理解。

  服务端加密模块 [Default encryption module] 是 Nextcloud 附带,但是默认关闭的一个插件,此加密模块的用途是保障外置存储中的数据安全,而不是保障服务器本地的数据安全,因为加密的密钥也存储在 Nextcloud 所在的服务器上,且服务端加密功能只加密文件本身,而文件名和后缀都不会变,被加密的图片所产生的的略缩图和历史版本功能产生的文件也不会被加密(加密功能只对 nextcloud/data/[username]/files 目录下的文件起作用。加密后的文件会增加一定体积)。

  因此如果不使用外置存储,而是想要使用文件加密功能的话打开服务端加密功能的意义不大。

  而 端到端加密 [End-to-End Encryption] 就是为了进一步提升安全性而生,启用端到端加密且被此功能加密的数据,文件本身被加密、文件名乱码、服务器上查看文件只能看到乱码、网页端也无法查看该加密文件。只有通过 Nextcloud 官方客户端(PC或者移动端的app)输入正确的内容后才能得到解密后的文件。

1.如何启用服务端加密

  启用服务端加密的方式很简单,在应用中心启用服务端加密模块[Default encryption module],然后到设置中启用即可

  如果勾选了下方的[加密主目录储存],就会加密服务器本地的文件,但只会加密之后新增的。如果要加密已存在的文件,先打开命令行终端,切换到 Nextcloud 的目录,执行

sudo -u www php occ encryption:encrypt-all

  然后等待加密完成即可,此过程中不要有上传或下载等文件操作。如果要关闭服务端加密,也是打开命令行终端,切换到 Nextcloud 的目录,执行

sudo -u www php occ encryption:decrypt-all

  解密完成后就可以去禁用服务端加密模块了。

2.启用端到端加密

  启用端到端加密需要先启用服务端加密模块(启用就行,不需要执行加密命令),不用勾选[加密主目录储存],然后在应用中心安装启用[End-to-End Encryption]。

  之后打开本地同步客户端(以 Windows 10 平台为例),在本地同步目录下新建一个文件夹,名字随意,但必须是空的。

  然后打开同步客户端,右键点击刚才建立的文件夹就可以看到“启用加密”的选项,点击即可,之后放入这个文件夹的文件都会被加密。同时在同步客户端上方会出现端到端加密的提示,点击可以看到一段随机的文字,就是端到端加密的凭证,保存下来,在其他客户端同步这个端到端加密的文件夹时会用到(比如手机端如果要获取这个端到端加密文件夹的内容,就必须输入这段随机的文字,否则无法解密)。

  被端到端加密的原本可在线预览的文件如图片等也必须下载解密后才能查看。解密必须由 Nextcloud 官方客户端进行。