NextCloud 加密密钥备份

NextCloud 加密密钥备份

我正在考虑设置自托管的 NextCloud,并将其备份到外部存储(Dropbox、S3……)。我希望此备份是加密的。

幸运的是,NextCloud 原生支持此功能。我所要做的就是确保私钥也已备份,以防需要恢复。

现在,我非常想将这些加密密钥存储在存储加密备份的同一位置。

当然,这会使加密失效。除非私钥本身用密码加密,在这种情况下我的备份是“密码加密的”,这对于我的用例来说已经足够了。

但是我在 NextCloud 手册中找不到该问题的明确答案。

末日审判:NextCloud 加密密钥是否受密码保护?

此外,我是否遗漏了其他值得注意的事情?

答案1

从技术上来说,您的问题的答案是“是”,但对于备份的用例,有一些值得注意的含义需要考虑。

Nextcloud 中有两种主要的服务器端加密方案。Nextcloud 的最新版本使用“主密钥”默认情况下,它可以解密所有内容。

还有一种基于每个用户密钥的加密替代实现方式,适用于较旧的设置,或手动禁用主密钥加密的人员。

如果您看到类似这样的内容,则它使用的是每个用户(旧)样式:

以下是 Nextcloud 默认加密模块插件作者之一的描述

一般来说,Nextcloud 提供了两种可能的设置:

  1. 每个用户都有自己的私钥/公钥,管理员还可以提供每个用户都需要接受(选择加入)的恢复密钥。为了使用 occ 解密用户文件,您需要用户密码,在本例中需要用户私钥 + 文件密钥 + 数据库来检查签名或恢复密钥密码(如果用户启用了恢复密钥)。对于恢复密钥,您需要私钥恢复密钥、恢复密钥的密码、文件密钥和数据库。这是 Nextcloud 13 之前的默认设置,您可以使用 occ 加密启用主密钥:enable-master-key,在本例中使用设置 2。

  2. 使用主密钥。如果首次使用 Nextcloud 13 或更高版本启用加密,或者管理员使用 occ 命令 occ crypto:enable-master-key 启用加密,则这是默认设置。在这种情况下,所有用户的所有文件都只使用一个密钥,私钥使用实例密码加密。为了使用 occ 命令解密所有文件,您只需要私钥、文件密钥和数据库。

为了每个用户加密方法(旧式),密钥受 Nextcloud 用户的登录密码保护:

Nextcloud 的服务端加密会生成强加密密钥,通过用户的密码解锁。您的用户无需记住额外的密码,只需像平常一样登录即可。它仅加密文件的内容,而不加密文件名和目录结构。

(看加密配置 — Nextcloud 最新管理手册 最新文档)。

为了主密钥实现(这是当前的默认设置,也是你最有可能使用的),解密数据所需的绝对最小值是 1)主密钥对,以及 2)来自 配置.php。为了遵循官方流程(即确保成功),您还需要文件加密后的数据库转储。您可以 试图在没有数据库的情况下破解加密禁用文件签名检查,但您的里程会有所不同。

所以是的,您可以将密钥以纯文本形式与加密备份一起放在 Dropbox 等相对安全的系统中。如果没有来自 config.php 的密钥,攻击者不太可能解密数据。这也意味着你将无法。如果您有密钥和 config.php 机密,但数据库已加密,则您只能尝试通过禁用签名检查来破解加密。为了顺利恢复,您需要主密钥、config.php 文件和最新的数据库快照,所有这些都安全地保存在其他地方。

此时,我认为将密钥与备份一起保存的便利因素被抵消了。另一个麻烦是恢复过程。您仍然需要启动一个新的 Nextcloud 实例来解密数据。解密后的数据将成为 Nextcloud 实例的完整备份,而该备份本身需要导入/恢复到 Nextcloud 实例。

如果您在完全丢失后确实需要从备份中恢复,使用另一种方法(例如这种方法)可能会让您的生活更轻松:

https://kevq.uk/how-to-backup-nextcloud/

网上有很多类似的备份示例。关键点如下:

  • 进行完整备份,即可使用单个快照轻松按照官方文档进行重建
  • 备份被压缩为一个文件,更易于传输和加密
  • 加密问题与 Nextcloud 本身无关。你可以选择任何适合你需求的方法,使用标准工具,例如通用石油气
  • 加密备份存储在支持通过 CLI 进行 API 交互的某个远程目标位置,例如 S3 或 B2
  • 整个过程只是一个脚本 - 使用 cron 自动执行,并在需要时手动运行
  • 添加另一个备份源很方便 - 只需在脚本中写入另一个步骤即可将文件复制到其他地方
  • 要恢复,您需要做的就是获取最新备份,解密(使用您选择的标准工具),将其复制到新实例上的正确位置,然后按照官方指南(甚至更容易快速安装

希望这能有所帮助!Nextcloud 中的加密看似简单,但确实存在风险和权衡。论坛帖子和 GitHub 问题中不乏使用 Nextcloud 加密丢失数据的故事。

几年来,我一直使用 Nextcloud 作为“我不需要 Google”设置的主要驱动程序。它的维护成本极低,非常可靠,而且定制起来很有价值。希望您尝试一下!

相关内容