使用GPGencryption的非现场备份从不在备份服务器上使用私钥?

我有一台备份服务器,用于创build要备份的目录树的xz压缩tar归档文件。 这些tar档案可以获得巨大的(多个TB), split 2.5TB的片段,并且每个片段被写入LTO-6磁带,并且磁带离开现场。

现在我想添加encryption。 我可以在分割之前,使用公私密钥encryption和一个或多个收件人(pipe理员公钥)对GP文件进行encryption。

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

GPG采用混合encryptionscheme,采用对称密码(如带有会话密钥的AES),只有会话密钥才能获得为接收方encryption的公私钥。

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


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

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

但有没有一个“标准”或内在或最佳实践的方式达到上述?

--show-session-key--override-session-key选项肯定是可行的。

首先你需要encryption文件的开始。 这是存储encryption的会话密钥的地方。

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 <[email protected]>" 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 <[email protected]>" 

看起来好像大部分问题都已经得到了解答,但是,如果你的pipe理员团队对于本地控制之外的私钥感到警惕,你可能会认为sshfs通过ssh会话挂载远程备份。

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

 sudo apt-get install sshfs 

假设pipe理员的sshconfiguration如下所示

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

那么你的pipe理员可以使用下面的东西来安装

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

在检查后卸载,远程pipe理员可以使用以下内容

 fusermount -u /mnt/remote 

关于使用sshfs的甜头是在远程服务器上只需要GnuPG和ssh的公钥,相关的私钥保留在自己的系统上。 第二个好处是,直到读取或访问大部分文件信息停留在其相关的文件系统上。

如果你仍然在寻找工具来促进日志或目录的自动encryption,那么你可能需要检查我推送给GitHub的概念工具(特别是为sshsf使用而编写的scheme四 )的教授,这些工具只需要一点点定制就可以快乐地encryption任何数据通过GnuPG。 但要注意的是,这是实验性的,如果滥用,它的一些function可能会导致数据的损坏。 源代码less于1600线,因此很可能在周末以后进行审计。

通过设置远程服务器的sshconfiguration,可以增加安全性,使用户只能访问encryption的目录,并禁用以此方式使用的pipe理密钥的交互式shell。

如果你想让密钥保存在硬盘上,你可以创build一个虚拟硬盘(记住那些?),并根据需要从安全的非服务器位置加载密钥。 用它来解密,并用/ dev / random覆盖它。 无论如何,秘密必须进入RAM才能被GPG使用,为什么不是两次呢?

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

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