我有一个备份服务器,它创建要备份的目录树的xz压缩tar档案。这些 tar 存档可能会变得很大(多 TB),可以split分成多个部分(2.5TB),并且每个部分都被写入 LTO-6 磁带,然后这些磁带会去异地。
现在我想添加加密。我可以在拆分之前使用公私密钥加密以及一个或多个收件人(管理员公钥)对 tar 存档进行 GPG 加密。
然而,在恢复的情况下,至少有一位管理员需要将他的私钥放在备份服务器上,因为文件太大而无法在其他任何地方解压。
GPG 在幕后使用混合加密方案,使用对称密码(如 AES)和会话密钥,只有该会话密钥才能为接收者加密公私密钥。
有没有办法让管理员提供会话密钥来解密要恢复的文件,而无需将私钥放在备份服务器上?
我当然可以重新发明轮子:
但是是否有“标准”或内置或最佳实践方法来实现上述目标?
IsA*_*est 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'
Run Code Online (Sandbox Code Playgroud)
现在您可以使用会话密钥解密文件
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>"
Run Code Online (Sandbox Code Playgroud)