Linux中國

GNU Privacy Guard加密指南

GPG是GNU Privacy Guard的縮寫。它是一種基於密鑰的加密方式,使用了一對密鑰對消息進行加密和解密,來保證消息的安全傳輸。一開始,用戶通過數字證書認證軟體生成一對公鑰和私鑰。任何其他想給該用戶發送加密消息的用戶,需要先從證書機構的公共目錄獲取接收者的公鑰,然後用公鑰加密信息,再發送給接收者。當接收者收到加密消息後,他可以用自己的私鑰來解密,而私鑰是不應該被其他人拿到的。

GPG 使用公鑰和私鑰

公鑰是你共享出來的一個公開密鑰,它可以被發給任何你希望收到加密信息的人,他們可以使用你的公鑰來加密信息。公鑰本身不能用來解密自己加密過的信息,只有你自己——那個擁有對應私鑰的人——能夠解密。私鑰是你自己的私人密碼,可以用來解密用你的公鑰加密過的信息。如果你把私鑰泄漏給別人,那麼他將可以解密並查看那些使用你的公鑰加密過的信息。

在終端里使用GPG

如今大多數的Linux發行版都默認包含了GPG。想檢查一下的話,打開終端並輸入:

$ gpg --version 

然後你應該看到版本。如果是這樣的話,你不需要做其他事情了。否則,你需要從你的發行版軟體倉庫里安裝GPG。

生成密鑰

想使用GPG來加密你的通訊,你需要先創建一對密碼。首先,打開終端並運行下面的命令:

$ gpg --gen-key 

然後會有如下提示:

Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection? 

這裡要選擇數字1,因為它可以用來加密和解密,第二和第三個選項只能讓你給信息簽名。按下數字1,然後按回車。

然後會有如下提示:

1 DSA key-pair will have 1024 bits.
2 ELG-E keys may be between 1024 and 4096 bits long.
3 What key-size do you want? (2048) 

這裡最好輸入「2048」,就像GPG推薦的那樣。如果你不希望你的密鑰過期的話(在後面的提示里,選擇0)。如果有提示說信息是否正確的話,回答Yes,然後輸入你的真實名字,email地址,以及一個說明(可選的)。如果一切順利,按下「哦」(對應著OK)然後回車。

在這之後,會提示你輸入一個密碼,密碼會要求重複輸入一次。通常,請使用一個難於破解的加強密碼,而不推薦用名字/地址/生日/單詞等等來做密碼。

在輸好密碼之後,請按照終端里的提示信息做:我們需要生成大量的隨機數,建議您在生成素數的過程中做一下這些動作(敲擊鍵盤,移動滑鼠,讀寫硬碟),這樣會讓隨機數生成器有機會獲取更大的熵。

生成好密鑰以後,你應該會看到一條類似的提示信息:gpg: key 083C39A4 marked as ultimately trusted. public and secret key created and signed.

密鑰伺服器

密鑰伺服器是用來發布你的公鑰,並將其分發到其他人的伺服器,這樣其他用戶可以輕鬆的根據你資料庫中的名字(或者e-mail地址)來獲取你的公鑰,並給你發送加密信息。這樣可以避免把公鑰直接拷貝給你的朋友的方式,而讓其他人直接通過在線資料庫來找到你。

上傳你的公鑰到密鑰伺服器:

$ gpg --send-keys --keyserver [keyservers.address.com] [yourpublicid] 

你需要把keyservers.address.com替換成你選擇的伺服器(或者用mit.edu,它會跟其他伺服器做同步),還需要把命令行中的yourpublicid替換成你的。最終執行的命令看上去會大概是下面這樣子:

$ gpg --send-keys --keyserver hkp://pgp.mit.edu 083C39A4 

加密文件

如果你想給你的朋友發送一個用他的公鑰加密過的文件,可以用下面的命令:

$ gpg -o encrypted_file.gpg --encrypt -r key-id original.file 

命令解釋:

-o encrypted_file.gpg = 指定輸出文件
--encrypt = 做加密
-r = 接收者的KEY-ID,比如這裡就填你朋友的KEY-ID。
original.file = 指定要加密的文件

解密文件

如果有人給你發送了一個用你的公鑰加密過的文件,你可以按下面的方式解密:

$ gpg --decrypt filename.gpg 

對稱加密

你還可以使用GPG做對稱加密,來給文件加上一個密碼。這種不同於公鑰加密的方式,在對稱加密中,同一個密鑰用於加密和解密。這種方式在處理信息的時候會簡單點,但是保密性沒那麼好,因為需要把密碼告訴接收者。下面是用密碼加密文件的命令:

$ gpg -c filename.txt 

解密這個文件,用下面的命令:

$ gpg filename.txt 

然後,會提示你輸入密碼,之後就開始解密文件。

文檔數字簽名

數字簽名非常類似於你在信件或者重要文件的末尾簽上自己的名字,它表示這份文件確實是由你發出來的。通過數字簽名,它會計算整個文件內容的SHA1哈希值,然後把這個值附加到簽名末尾。如果文件內容被篡改,簽名的校驗就會失敗,可以用來鑒定偽造。如果用戶自己在簽名後編輯了這份文件,簽名校驗也會失敗,因為此時文件的SHA1哈希值已經和之前簽名時不同了。

對一份文件做數字簽名,運行下面的命令:

$ gpg --clearsign filename.txt 

生成銷毀密鑰

銷毀密鑰可以在你的私鑰泄漏或者懷疑泄漏的時候,吊銷你的公鑰。使用下面的命令創建一個銷毀密鑰:

$ gpg --output revoke.asc --gen-revoke keyid 

把銷毀密鑰保存到一個安全的地方,任何人都可以用它讓你的密鑰失效。(你可以用對稱加密方式來加密你的銷毀密鑰文件。)

在終端里使用GPG的一些技巧

通過下面的命令可以查看你已經導入的GPG密鑰:

$ gpg --list-keys 

之後應該會列出來用你e-mail註冊的密鑰列表(因為這裡只有一個密鑰,它只列出了你自己的密鑰),然後,你可以看到自己的KEY-ID,就可以通過上文介紹的命令提交給密鑰伺服器。

顯示你的密鑰鏈中的私鑰和公鑰。

$ gpg --list-public-keys # 會列出來公鑰
$ gpg --list-secret-keys # 會列出來私鑰

導入密鑰

$ gpg --import KEYFILE 

命令中的KEYFILE應該是需要導入的公鑰文件名。(如果文件不在主目錄中,使用cd命令切換到該文件的目錄下,再執行上面的命令)

導出公鑰到文件

用下面的命令可以將你的公鑰導出為ASCII格式:

$ gpg --export -a > publickey.asc 

關於Richard White

Richard是一位技術愛好者,在不止一個場合他被稱為極客。他還是三本書的作者,最近的一本《數字時代的隱私》即將在2014年5月份出版精裝本。他還是數字時代網站的主編和驅動者,數字時代的目的是提供資源和工具來實現和維護匿名,安全和隱私。Ricard經常寫一些和隱私相關的文章,最近忙著寫《CLI藝術》,收集開源的命令行軟體。關於GNU Privacy Guard的更多信息以及如何使用GPG軟體的圖形界面工具,你可以訪問White的數字時代網站。

via: http://distrowatch.com/weekly.php?issue=20140407

譯者:zpl1025 校對: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中國