首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带有私钥的GPG加密的场外备份永远不在备份服务器上?

使用带有私钥的GPG加密的场外备份永远不在备份服务器上?
EN

Server Fault用户
提问于 2016-01-25 13:06:00
回答 3查看 3.7K关注 0票数 12

我有一个备份服务器,它创建要备份的目录树的xz压缩tar文档。这些tar档案可以得到巨大的(多个TBs),是split成片(2.5TB),每一段写到一个LTO-6磁带,磁带离开现场。

现在我想加入加密。我可以在分割之前对tar存档进行GPG加密,使用公共私钥加密,并使用一个或多个收件人(管理公钥)。

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

GPG在幕后使用一种混合加密方案,使用一个对称密码,比如带有会话密钥的AES密码,并且只有该会话密钥才能为接收者加密公共私钥。

是否有一种方法可以让管理员提供会话密钥来解密要恢复的文件,而不必将私钥放到备份服务器上?

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

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

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

EN

回答 3

Server Fault用户

回答已采纳

发布于 2016-02-01 15:40:18

这在--show-session-key--override-session-key选项中是绝对可能的。

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

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

然后将其复制到您的工作站并检索会话密钥。

代码语言:javascript
复制
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'

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

代码语言:javascript
复制
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>"
票数 20
EN

Server Fault用户

发布于 2016-10-31 17:27:00

看起来您的大部分问题都已经得到了回答,但是,如果您是管理员,团队对于私钥最终脱离他们的本地控制很谨慎,您可能会考虑sshfs通过ssh会话挂载远程备份。

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

代码语言:javascript
复制
sudo apt-get install sshfs

假设admins的ssh配置如下所示

代码语言:javascript
复制
# configuration for ssh login to remote server
Host Remote
    Hostname Remote.web.domain
    User admin
    IdentityFile ~/.ssh/private.key

然后您的管理员可以使用下面的内容来安装。

代码语言:javascript
复制
# make a mount point
mkdir -p /mnt/remote
# mount remote directory to local file system
sshfs Remote:/path/to/encrypted/dir /mnt/remote

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

代码语言:javascript
复制
fusermount -u /mnt/remote

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

如果您仍然在寻找工具来促进日志或目录的自动加密,那么您可能想检查一下我向GitHub (特别是为sshsf使用编写的情景四 )提供的概念工具,它可以通过GnuPG对几乎所有的数据进行很好的加密。但是要注意的是,它是实验性的,如果被滥用,它的一些特性可能会导致数据的损坏。源代码少于1600行,所以很有可能在不到一个周末内进行审计。

通过将远程服务器的ssh配置设置为chroot用户,只允许访问加密的目录,并禁用以这种方式使用的admins密钥的交互式shell,可以获得额外的安全性。

票数 4
EN

Server Fault用户

发布于 2016-02-01 05:14:54

如果您希望将秘密密钥从硬盘中保留下来,您可以创建一个ramdisk (还记得那些吗?)并根据需要从您安全的非服务器位置加载秘密密钥。使用它解密,并在完成时用/dev/random覆盖它。这个秘密必须进入内存才能被GPG使用,那么为什么不两次呢?

如果您不能让一个秘密密钥一直在服务器上,即使是在RAM中,那么您就有一个技术上的不可能。GPG必须在某个地方拥有秘密密钥才能解密任何东西。

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

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/751552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档