Backup
使用帶有私鑰的 GPG 加密異地備份永遠不會在備份伺服器上?
我有一個備份伺服器,它創建要備份的目錄樹的
xz
壓縮檔案。tar
這些 tar 歸檔文件可能會變得很大(多個 TB),split
分成多個片段(2.5TB),每個片段都寫入 LTO-6 磁帶,然後磁帶會離開現場。現在我想添加加密。我可以在拆分之前使用 GPG 加密 tar 存檔,使用公鑰-私鑰加密,並使用一個或多個收件人(管理員公鑰)。
然而,在恢復的情況下,至少一名管理員需要將他的私鑰放到備份伺服器上,因為文件太大而無法在其他任何地方解壓。
GPG 在後台使用混合加密方案,使用帶有會話密鑰的對稱密碼(如 AES),並且只有該會話密鑰才能為接收者加密公私鑰。
有沒有辦法讓管理員提供會話密鑰來解密要恢復的文件而不將私鑰放在備份伺服器上?
我當然可以重新發明輪子:
- 每個要備份的文件在備份伺服器上創建一個隨機會話密鑰
- 使用 GPG 對稱加密來加密文件
- 使用 GPG 非對稱加密為每個接收者加密會話密鑰
但是是否有實現上述目標的“標準”或內置或最佳實踐方式?
--show-session-key
使用and--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>"