使用带有私钥的GPG加密的异地备份是否从未在备份服务器上使用?


11

我有一台备份服务器,该服务器创建要备份的目录树的xz压缩tar存档。这些tar档案可能会很大(多个TB),split分成几块(2.5 TB),并且每块都写入LTO-6磁带,并且这些磁带不在现场。

现在,我想添加加密。我可以使用公用专用密钥加密并与一个或多个收件人(管理员公用密钥)一起使用,在分割之前使用GPG加密tar存档。

但是,在恢复的情况下,至少一位管理员需要将其私钥放到备份服务器上,因为文件太大而无法在其他任何地方解压缩。

GPG在后台使用混合加密方案,并使用带有会话密钥的AES等对称密码,并且只有该会话密钥才能为接收者加密。

有没有办法让管理员提供会话密钥来解密要恢复的文件而无需将私钥放到备份服务器上


我当然可以重新发明轮子:

  • 在备份服务器上为每个要备份的文件创建一个随机会话密钥
  • 使用GPG对称加密来加密文件
  • 使用GPG非对称加密为每个收件人加密会话密钥

但是,是否有实现上述目标的“标准”或内置或最佳实践方法?

Answers:


18

使用--show-session-key--override-session-key选项绝对可以做到这一点。

首先,您需要加密文件的开头。这是存储加密会话密钥的位置。

root@qwerty:~/gpg# head -c 1024k bigfile.gpg > head.gpg

然后将其复制到您的工作站并获取会话密钥

PS C:\Users\redacted\Downloads> gpg --show-session-key .\head.gpg
gpg: encrypted with 2048-bit RSA key, ID DC21D645, created 2016-02-01
  "admin <admin@domain.tld>"
gpg: session key: '9:926EC16DF1248A1C4401F5AD5D86C63C1BD4BF351ECEFB121C57EC209DE3933D'

现在,您可以使用会话密钥解密文件

root@qwerty:~/gpg# gpg -d -o bigfile --override-session-key 9:926EC16DF1248A1C4401F5AD5D86C63C1BD4BF351ECEFB121C57EC209DE3933D bigfile.gpg
gpg: encrypted with 2048-bit RSA key, ID DC21D645, created 2016-02-01
  "admin <admin@domain.tld>"

那是解决问题的一个很酷的解决方案
Lars

谢谢!!不错的技巧head。该方法解决了我最初的痒。
oberstet '16

4

看来您的大多数问题都已得到解答,但是,如果您是管理员团队,则对私钥最终不在其本地控制范围内持谨慎态度,您可能会考虑sshfs通过ssh会话安装远程备份。

通过apt在每个远程管理员的系统上安装

sudo apt-get install sshfs

假设管理员的ssh配置如下所示

# configuration for ssh login to remote server
Host Remote
    Hostname Remote.web.domain
    User admin
    IdentityFile ~/.ssh/private.key

然后,您的管理员可以使用以下类似内容进行安装

# make a mount point
mkdir -p /mnt/remote
# mount remote directory to local file system
sshfs Remote:/path/to/encrypted/dir /mnt/remote

要在检查后卸载,远程管理员可以使用以下命令

fusermount -u /mnt/remote

关于使用sshfs的好处是,远程服务器上只需要GnuPG和ssh的公钥,而相关的私钥则保留在拥有它们的系统上。第二点好处是,在读取或访问文件之前,大多数文件信息都保留在其相关的文件系统上。

如果您仍在寻找工具来对日志或目录进行自动加密,您可能想检查一下我推到GitHub的概念验证工具(特别是为使用而编写的方案4sshsf),只需稍加自定义,便可以愉快地加密几乎所有通过GnuPG获取数据。但请注意,它是实验性的,如果滥用,某些功能可能会导致数据损坏。源代码少于大约1600行,因此非常有可能在不到一个周末的时间内进行审核。

通过将远程服务器的ssh配置设置为chroot用户可以拥有更高的安全性,以仅允许访问加密目录并为以这种方式使用的管理员密钥禁用交互式外壳。


2

如果您希望私钥保持在硬盘之外,则可以创建一个虚拟磁盘(还记得吗?),然后根据需要从安全的非服务器位置将私钥加载到那里。使用它进行解密,完成后用/ dev / random覆盖它。秘密必须进入RAM才能由GPG使用,所以为什么不两次呢?

如果您不能让密钥在服务器上,甚至不能在RAM中,那么技术上就不可能。GPG必须在某处拥有密钥才能解密任何内容。

Ramdisk信息:https : //unix.stackexchange.com/questions/66329/creating-a-ram-disk-on-linux


2
GPG使用每个消息的对称机密(“会话密钥”),对于每个加密的消息,该机密都不同。从技术上讲,正是该对称密钥位于解密相应消息的计算机上。我想使GPG(非对称)私钥保持脱机状态。GPG使用后者来加密对称会话密钥。因此,我正在
寻求
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.