1. 程式人生 > >使用GPG實現密碼學應用

使用GPG實現密碼學應用

GPG

1991年,程式設計師Phil Zimmermann為了避開政府的監視,開發了加密軟體PGP。因為這個軟體非常好用,迅速流傳開來成為許多程式設計師的必備工具。但是,它是商業軟不能自由使用。所以,自由軟體基金會決定,開發一個PGP的替代品取名為GnuPG,因此GPG就誕生了。GPG是GNU Privacy Guard的縮寫,是自由軟體基金會的GNU計劃的一部分。它是一種基於金鑰的加密方式,使用了一對金鑰對訊息進行加密和解密,來保證訊息的安全傳輸。一開始,使用者通過數字證書認證軟體生成一對公鑰和私鑰。任何其他想給該使用者傳送加密訊息的使用者,需要先從證書機構的公共目錄獲取接收者的公鑰,然後用公鑰加密資訊,再發送給接收者。當接收者收到加密訊息後,他可以用自己的私鑰來解密,而私鑰是不應該被其他人拿到的。

GPG專案是一套命令列程式,而且是為 Linux 等開源作業系統設計的。在Windows平臺下可以使用Gpg4win,是Windows平臺GPG及圖形前端的集合安裝包,有多個元件。

PGP加密原理

在PGP中,每個常規金鑰只使用一次,即對每個報文生成新的128bit的隨機數。為了保護金鑰,使用接收者的公開金鑰對它進行加密。圖中顯示了這一步驟,描述如下:

(1)傳送者生成報文和用作該報文會話金鑰的128bit隨機數;

(2)傳送者採用CAST-128加密演算法,使用會話金鑰對報文進行加密。也可使用IDEA或3DES;

(3)傳送者採用RSA演算法,使用接收者的公開金鑰對會話金鑰進行加密,並附加到報文前面;

(4)接收者採用RSA演算法,使用自己的私有金鑰解密和恢復會話金鑰;

(5)接收者使用會話金鑰解密報文。

PGP如果需要對訊息同時進行簽名和加密,由下圖所示,具體原理可以參考理論課知識點。

實踐進行時:

一、下載安裝和使用GPG

1.請到官方網站下載:http://www.gpg4win.org/,或於此處下載安裝軟體:

https://download.csdn.net/download/qq_37865996/10845428

2.之後執行安裝程式,保持預設設定即可。

 

3.開啟Kleopatra,首先需要生成一對公鑰和私鑰。

4.選擇第一個生成個人OpenPGP金鑰對即可。

5.之後會提示輸入使用者密碼(passphrase),注意這並不是會話金鑰(session key)、公鑰(public key)、私鑰(private),這只是方便使用者記憶的密碼,為了保護使用者能安全的從私鑰環中提取私鑰。可以在圖3中理解這幾種金鑰的區別。

6.生成金鑰

7.金鑰對生成好之後,有3個選項,1是備份自己的金鑰,2是通過Email把金鑰傳送給自己的聯絡人,3是把自己的公鑰上傳了目錄伺服器,方便別人查詢下載。

8.生成金鑰對列表會顯示在介面中,可以點選Sign/Encrypt 對檔案進行加密。

9.在彈出的對話方塊中,可以選擇一個檔案進行簽名和加密,例如test.txt,可以事先編輯一下文字。注意,簽名指用自己的私鑰進行加密,加密會使用到對方(收件人)的公鑰,兩個不一樣。

10.加密後,多出一個新檔案,可以放心的把該密文傳送給對方。

11.用文字編輯器開啟,可以發現都是密文。

12.點選Decrypt/Verify實現解密,如果之前加密時使用了簽名,還可以進行簽名驗證。

二、使用GPG4win加/解密郵件

1.GPG可以對任意剪貼簿(ClipBoard)裡面的文字進行加密,例如寫一份郵件

注:剪貼簿(ClipBoard)是記憶體中的一塊區域,是Windows內建的一個非常有用的工具,通過小小的剪貼簿,架起了一座彩橋,使得在各種應用程式之間,傳遞和共享資訊成為可能。然而美中不足的是,剪貼簿只能保留一份資料,每當新的資料傳入,舊的便會被覆蓋。舉個簡單的例子,選定一段文字,點完“複製”按鈕,這段文字就在剪貼簿裡面了。

2.選擇這段文字,然後點選“複製”

3.在主介面的Clipboard裡面,點選Encrypt

4.彈出對話方塊詢問給哪一個收件人發信,點選左下角的“Add Recipient”按鈕,如圖所示。選擇一個收信人後,就會使用對方的公鑰資訊進行處理,通過生成會話金鑰、加密等一系列的處理,生成密文,存在剪貼簿中。

5.回到郵件傳送解密,選擇“貼上”,替換原來的明文,就發現使用PGP格式的加密訊息,如圖所示。

6.切換到收件人的角色,開啟郵箱,可以看到傳送來的密文郵件‘

7.選擇全部密文,右鍵點選複製

8.開啟Kleopatra主介面,點選Tools的Verify

9.系統會需要輸入使用者密碼(Passphrase),該密碼用於提取使用者私鑰

10.如果密碼正確,可以正確解密,開啟記事本新建一個空白文件,然後貼上,可以看到解密後的明文。

三、使用GPG4win給老師傳送悄悄話

1.雙擊別人提供的公鑰chenwei.asc,Kleopatra的主介面中會顯示已添加了公鑰。

2.類似於任務二的加解密操作,在記事本或其他文字編輯器中,輸入訊息

3.開啟Kleopatra主介面,這次“Add Recipient”時,選擇別人的公鑰。

4.加密後得到一段密文,貼上在報告中,別人會用自己的私鑰解密檢視。