如何在 Linux 上備份和恢復 GPG 密鑰

已發表: 2022-08-18
顯示 bash 提示符的 Linux 筆記本電腦
fatmawati achmad zaenuri/Shutterstock.com

隱私是一個越來越熱門的話題。 在 Linux 上, gpg命令允許用戶使用公鑰密碼術加密文件,在這種情況下丟失您的加密密鑰將是災難性的。 這是備份它們的方法。

OpenPGP 和 GNU 隱私保護

電子文件相對於紙質硬拷貝的優勢之一是您可以對電子文件進行加密,以便它們只能由授權人員訪問。 如果他們落入壞人之手,那也沒關係。 只有您和預期的收件人可以訪問文件的內容

OpenPGP 標準描述了一種稱為公鑰加密的加密系統。 該標準的 GNU Privacy Guard 實現產生了gpg ,這是一個用於根據標准進行加密和解密的命令行工具。

該標準概述了一種公鑰加密方案。 雖然它被稱為“公鑰”,但涉及到兩個密鑰。 每個人都有一個公鑰和一個私鑰。 顧名思義,私鑰永遠不會洩露或傳輸給其他任何人。 可以安全地共享公鑰。 實際上,必須共享公鑰才能使該方案起作用。

當文件被加密時,發送者的私鑰和接收者的公鑰在編碼過程中被使用。 然後可以將文件傳遞給收件人。 他們使用他們的私鑰和發送者的公鑰來解密文件。

公鑰和私鑰作為匹配對生成並與特定身份相關聯。 即使您不將敏感材料傳輸給其他人,您也可以在自己的計算機上使用它們來為私人文檔添加額外的保護層。

如何在 Linux 上使用 GPG 加密和解密文件
相關如何在 Linux 上使用 GPG 加密和解密文件

加密使用世界一流的算法和加密功能。 如果沒有適當的公鑰和私鑰,您根本無法進入加密文件。 而且,如果您丟失了鑰匙,這也適用於您。 生成新密鑰無濟於事。 要解密您的文件,您需要在加密過程中使用的密鑰。

不用說,備份您的密鑰至關重要,知道如何恢復它們也是如此。 以下是完成這些任務的方法。

.gnupg 目錄

您的密鑰存儲在主目錄中名為“.gnupg”的目錄中。 此目錄還將存儲已向您發送加密文件的任何人的公鑰。 當您導入它們的公鑰時,它們會被添加到該目錄中的索引數據庫文件中。

當然,此目錄中的任何內容都不是以純文本形式存儲的。 當您生成 GPG 密鑰時,系統會提示您輸入密碼。 希望您已經記住了該密碼是什麼。 你會需要它的。 沒有它就無法解密“.gnugp”目錄中的條目。

如果我們使用tree實用程序查看目錄,我們將看到子目錄和文件的這種結構。 如果您的計算機上還沒有tree ,您會在發行版的存儲庫中找到它。

 樹.gnupg 

.gnupg 目錄的目錄結構。

目錄樹的內容是:

  • openpgp-revocs.d :此子目錄包含您的吊銷證書。 如果您的私鑰成為常識或以其他方式受到損害,您將需要這個。 您的吊銷證書用於淘汰舊密鑰和採用新密鑰的過程。
  • private-keys-v1.d :這個子目錄存儲你的私鑰。
  • pubring.kbx :加密文件。 它包含公鑰(包括您的公鑰)以及一些關於它們的元數據。
  • pubring.kbx~ :這是“pubring.kbx”的備份副本。 它在對“pubring.kbx”進行更改之前更新。
  • trustdb.gpg :這包含您為自己的密鑰和屬於其他人的任何已接受的公鑰建立的信任關係。

無論如何,您應該定期、頻繁地備份您的主目錄,包括隱藏的文件和文件夾。 當然,這將備份“.gnupg”目錄。

但是您可能認為您的 GPG 密鑰足夠重要,需要定期備份它們,或者您可能希望將密鑰從台式機複製到筆記本電腦,以便在兩台機器上都擁有它們。 畢竟,你是兩台機器上的你。

確定要備份的密鑰

我們可以要求gpg告訴我們您的 GPG 系統中有哪些密鑰。 我們將使用--list-secret-keys選項和--keyid-format LONG選項。

 gpg --list-secret-keys --keyid-format LONG 

在終端窗口中列出 GPG 密鑰詳細信息

我們被告知 GPG 正在查看“/home/dave/.gnupg/pubring.kbx”文件。

屏幕上顯示的內容都不是您的實際密鑰。

  • “sec”(秘密)行顯示加密中的位數(本例中為 4096)、密鑰 ID、密鑰創建日期和“[SC]”。 “S”表示密鑰可用於數字簽名,“C”表示可用於認證。
  • 下一行是密鑰指紋。
  • “uid”行包含密鑰所有者的 ID。
  • “ssb”行顯示秘密子密鑰、創建時間和“E”。 “E”表示它可以用於加密。

如果您創建了多個用於不同身份的密鑰對,它們也會被列出。 此用戶只需備份一個密鑰對。 備份將包括該密鑰所有者已收集並決定信任的屬於其他人的任何公鑰。

備份

我們可以要求gpg備份所有身份的所有密鑰,或者備份與單個身份關聯的密鑰。 我們將備份私鑰、密鑰和信任數據庫文件。

要備份公鑰,請使用--export選項。 我們還將使用--export-options backup選項。 這可確保包含所有 GPG 特定的元數據,以允許將文件正確導入另一台計算機。

我們將使用--output選項指定一個輸出文件。 如果我們不這樣做,輸出將被發送到終端窗口。

 gpg --export --export-options 備份 --output public.gpg 

導出公共 GPG 密鑰

如果您只想備份單個身份的密鑰,請將與密鑰關聯的電子郵件地址添加到命令行。 如果您不記得它是哪個電子郵件地址,請使用--list-secret-keys選項,如上所述。

 gpg --export --export-options 備份 --output public.gpg [email protected] 

導出單個身份的公共 GPG 密鑰

要備份我們的私鑰,我們需要使用--export-secret-keys選項而不是--export選項。 確保將其保存到不同的文件中。

 gpg --export-secret-keys --export-options 備份 --output private.gpg 

導出 GPG 私鑰

因為這是您的私鑰,所以您需要先通過 GPG 進行身份驗證,然後才能繼續。

請注意,系統不會要求您輸入密碼。 您需要輸入的是您在首次創建 GPG 密鑰時提供的密碼。 好的密碼管理器可以讓您將此類信息保存為安全筆記。 這是存放它們的好地方。

提供 GPG 密碼以導出私鑰

如果密碼被接受,則進行導出。

為了備份您的信任關係,我們需要從您的“trustdb.gpg”文件中導出設置。 我們將輸出發送到一個名為“trust.gpg”的文件。 這是一個文本文件。 可以使用cat查看。

 gpg --export-ownertrust > trust.gpg
 貓信任.gpg 

導出 GPG 信任關係

這是我們創建的三個文件。

 ls -hl *.gpg 

導出命令創建的三個文件

我們將把它們移到另一台計算機上,然後恢復它們。 這將在該機器上建立我們的身份,並允許我們使用現有的 GPG 密鑰。

如果您沒有將密鑰移動到另一台計算機上,而只是備份它們,因為您想更加確定它們是安全的,請將它們複製到其他媒體並安全地存儲它們。 即使他們落入壞人之手,你的公鑰無論如何都是公開的,所以那裡沒有害處。 如果沒有您的密碼,您的私鑰將無法恢復。 但是,請確保您的備份安全且私密。

我們已將文件複製到 Manjaro 21 計算機。

 ls *.gpg 

導出的文件傳輸到 Manjaro 計算機

默認情況下,Manjaro 21 使用 Z shell, zsh ,這就是它看起來不同的原因。 但這沒關係,它不會影響任何事情。 我們所做的是由gpg程序而不是 shell 管理的。

要導入我們的密鑰,我們需要使用--import選項。

 gpg --import public.gpg 

導入公共 GPG 密鑰

導入時會顯示密鑰的詳細信息。 還為我們創建了“trustdb.gpg”文件。 導入私鑰同樣簡單。 我們再次使用--import選項。

 gpg --import private.gpg 

導入 GPG 私鑰

系統會提示我們輸入密碼。

輸入密碼以導入 GPG 私鑰

將其輸入“密碼”字段,點擊“Tab”鍵,然後點擊“Enter”。

確認導入的 GPG 私鑰

將顯示導入密鑰的詳細信息。 在我們的例子中,我們只有一把鑰匙。

要導入我們的信任數據庫,請鍵入:

 gpg --import-ownertrust trust.gpg 

導入 GPG 信任關係

我們可以再次使用--list-secret-keys選項檢查所有內容是否已正確導入。

 gpg --list-secret-keys --keyid-format LONG 

驗證導入是否有效

這為我們提供了與之前在 Ubuntu 計算機上看到的完全相同的輸出。

保護您的隱私

通過備份來確保您的 GPG 密鑰是安全的。 如果您遇到計算機故障或只是升級到較新的型號,請確保您知道如何將您的密鑰轉移到新機器上。

相關:如何使用 rsync 備份你的 Linux 系統