Linux中國

手把手指導:在 Linux 上使用 GPG 加解密文件

GnuPG,俗稱 GPG,是一個非常通用的工具,被廣泛用作電子郵件、信息、文件或任何你需要安全地發送給別人的東西的加密行業標準。

學習使用 GPG 很容易,你可以在幾分鐘內就學會使用它。

在本教程中,我將告訴你如何用 GPG 加密和解密文件。這是一個簡單的教程,你可以在你的 Linux 系統上嘗試所有的練習。這將幫助你練習 GPG 命令,並在你完全陌生的情況下理解它。

請先閱讀整個教程,然後開始自己做。

GPG 是如何進行加密的?

GPG 加密

要使用 GPG,你首先需要有一個 GPG 密鑰。

GPG 密鑰是你在後面的教程中用來加密(或解密)文件的東西。它也是用來識別你的身份的,你的名字和電子郵件也會與密鑰綁定。

GPG 密鑰的工作原理是使用兩個文件,一個私鑰和一個公鑰。這兩個密鑰是相互聯繫的,並且 GPG 的所有功能都需要使用它們,特別是對文件加密和解密。

當你用 GPG 加密一個文件時,它使用的是私鑰。然後,這個新的加密文件只能用配對的公鑰進行解密。

私鑰,顧名思義,是以私下的、不給任何人看的方式來存儲的密鑰。

另一方面,公鑰是用來給其他人的,或者你希望能夠解密你的文件的任何人。

這就是 GPG 的加密方法的主要作用。它允許你對文件進行本地加密,然後允許其他人確保他們收到的文件實際上是由你發送的。因為他們能夠解密文件的唯一方法是使用你的公鑰,而這隻有在文件首先使用你的私鑰加密的情況下才有效。

反之,其他人可以用你的公鑰對文件進行加密,而唯一能夠解密的方法是用你的私鑰。因此,允許其他人公開發布文件,而不用擔心除了你以外的人能夠閱讀它們。(LCTT 譯註:另外一個常見的用例是你用你的私鑰對公開發布的文件進行簽名,別人使用你的公鑰通過驗證你的簽名而確信文件是你發布的、並沒有被篡改。但本文沒有涉及這個用例。)

換句話說,如果一個文件是用私鑰加密的,它只能用相應的公鑰解密。而如果一個文件是用公鑰加密的,它只能用相應的私鑰解密。

你已經在使用 GPG 而沒有意識到

一個最常見的使用 GPG 的例子是在 Linux 軟體包管理器中,特別是 外部倉庫。你把開發者的公鑰添加到你系統的可信密鑰中。開發者用他/她的私鑰簽署軟體包(生成簽名)。由於你的 Linux 系統擁有該公鑰文件,它就能理解該軟體包實際上是來自受信任的開發者。

許多加密服務在你沒有意識到的情況下使用了某種 GPG 的實現。但現在最好不要去研究這些細節。

現在你對這個概念有點熟悉了,讓我們看看如何使用 GPG 來加密一個文件,然後用它來解密。

用 GPG 對文件進行加密和解密

這是一個非常簡單的場景。我假定你只有一個系統,你想看看 GPG 是如何工作的。你並沒有把文件發送到其他系統。你對文件進行加密,然後在同一個系統上解密。

當然,這不是一個實際的用例,但這也不是本教程的目的。我的目的是讓你熟悉 GPG 命令和功能。之後,你可以在現實世界中使用這些知識(如果需要的話)。為此,我將告訴你如何與他人分享你的公鑰。

第一步:安裝 GPG

GPG 可以在大多數發行版的軟體庫中找到,開箱即用。

在基於 Debian 和 Ubuntu 的系統中,安裝 gpg 包:

sudo apt install gpg

如果你使用 基於 Arch 的發行版,用 pacman 命令 安裝 gnupg 軟體包:

sudo pacman -S gnupg

第二步:生成一個 GPG 密鑰

在你的系統上生成一個 GPG 密鑰只需要一條簡單的命令。

只要運行下面的命令,就會生成你的密鑰(你可以對大多數問題使用默認值,如下面的下劃線部分所示)。

gpg --full-generate-key

生成 GPG 密鑰

檢查 GPG 密鑰

然後你可以通過使用 --list-secret-keys--list-public-keys 參數,分別看到私鑰和公鑰都是通過 pub 下顯示的那個 ID 相互綁定的。

列出 GPG 密鑰

第三步:用 GPG 加密一個文件

現在你已經設置了 GPG 密鑰,你可以開始對我們的文件進行加密了。

使用下面的命令來加密文件:

gpg --encrypt --output file.gpg --recipient user@example.com file

讓我們快速瀏覽一下該命令的內容:

首先,你指定了 —encrypt 選項。這告訴 GPG,我們將對一個文件進行加密。

接下來,你指定了 --output file.gpg。這可以是任何名字,不過慣例是給你要加密的文件的名稱加上 .gpg 擴展名(所以 message.txt 會變成 message.txt.gpg)。

接下來,你輸入 —recipient user@example.com。這指定了一個相應的 GPG 密鑰的電子郵件,這個密鑰實際上在這個系統上還不存在。

有點迷惑?

工作原理是,你在這裡指定的電子郵件必須與你本地系統中的公鑰相聯繫。

通常情況下,這將是來自另外一個人的 GPG 公鑰,你要用它來加密你的文件。之後,該文件將只能用該用戶的私鑰進行解密。

在這個例子中,我將使用我以前的與 user@example.com 關聯的 GPG 密鑰。因此,其邏輯是,我用 user@example.com公鑰 對文件進行加密,然後只能用 user@example.com私鑰 進行解密。

如果你是為別人加密文件,你只有該公鑰,但由於你是為自己加密文件,你的系統上有這兩個密鑰。

最後,你只需指定你要加密的文件。在這個例子中,讓我們使用一個名為 message.txt 的文件,內容如下:

We're encrypting with GPG!

文本文件樣本

同樣地,如果電子郵件是 user@example.com,新的 GPG 命令將如下所示:

gpg --encrypt --output message.txt.gpg --recipient user@example.com message.txt

用 GPG 加密文件

如果你嘗試閱讀該文件,你會看到它看起來像亂碼。這是預料之中的,因為該文件現在已經被加密了。

讀取加密文件會產生亂碼

現在讓我們刪除未加密的 message.txt 文件,這樣你就可以看到 message.txt.gpg 文件實際上在沒有原始文件的情況下也能正常解密。

第四步:用 GPG 解密加密的文件

最後,讓我們來實際解密加密的信息。你可以用下面的命令來做。

gpg --decrypt --output file file.gpg

通過這裡的參數,我們首先指定 —decrypt,它告訴 GPG 你將會解密一個文件。

接下來,你輸入 —output 文件,這只是告訴 GPG,在你解密後,你將把我們文件的解密形式保存到哪個文件。

最後,你輸入 file.gpg,這是你的加密文件的路徑。

按照這個例子,我使用的命令是這樣的。

gpg --decrypt --output message.txt message.txt.gpg

用GPG解密文件

然後就完成了!當你想用 GPG 加密和解密文件時,這就是全部內容了。

剩下你可能想知道的是如何與他人分享你的公鑰,以便他們在將文件發送給你之前對其進行加密。

發送和接收 GPG 密鑰

要給別人發送一個 GPG 密鑰,你首先需要從你的鑰匙鏈中導出它,它包含了你所有的公鑰和私鑰。

要導出一個密鑰,只需在你的鑰匙鏈中找到密鑰的 ID,然後運行以下命令,用密鑰的 ID 替換 id,用你想保存的文件名替換 key.gpg

gpg --output key.gpg --export id

導出 GPG 公鑰

要導入一個密鑰,只需把輸出文件(來自前面的命令)給其他用戶,然後讓他們運行下面的命令。

gpg --import key.gpg

但要正常使用該密鑰,你需要驗證該密鑰,以便 GPG 正確地信任它。

這可以通過在其他用戶的系統上使用 --edit-key 參數來完成,然後對密鑰進行簽名。

首先運行 gpg --edit-key id

GPG 編輯密鑰

接下來,使用 —fpr 參數,它將顯示密鑰的指紋。這個命令的輸出應該與你自己機器上的輸出進行驗證,這可以通過在你的系統上運行同樣的 --edit-key 參數來找到。

GPG 密鑰的指紋

如果一切吻合,只需使用 —sign 參數,一切就可以開始了。

簽署 GPG 密鑰

就是這樣!其他用戶現在可以開始用你的公鑰加密文件了,就像你之前做的那樣,這可以確保它們只有在你用你的私鑰解密時才能被你讀取。

這就是使用 GPG 的所有基礎知識!

總結

現在你已經了解了開始使用 GPG 所需要的一切,包括為自己和他人加密文件。正如我前面提到的,這只是為了了解 GPG 的加密和解密過程是如何工作的。你剛剛獲得的基本 GPG 知識在應用於真實世界的場景中時可以更上一層樓。

還需要一些幫助來弄清楚一些東西,或者有一些不工作的東西?歡迎在下面的評論中留下任何內容。

via: https://itsfoss.com/gpg-encrypt-files-basic/

作者:Hunter Wittenborn 選題:lujun9972 譯者:wxy 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國