《信息安全技術》實驗一 PGP的原理與使用(macOS High Sierra下實現)
實驗目的
- 理解傳統加密、公鑰加密、混合加密、數字簽名等概念
- 理解公鑰、私鑰、會話密鑰、對稱密鑰等概念及其應用
- 掌握電子郵件安全應用
- 熟悉PGP工具的使用
實驗內容
- 使用PGP進行傳統加密
- 使用PGP進行生成密鑰對
- 使用PGP進行混合方式加密
- 使用PGP進行數字簽名
- 使用PGP交換並驗證公鑰
- 使用PGP分割私鑰
實驗原理
在一個基於公鑰密碼體制的安全應用系統中,假設用戶A和B分別擁有自己的公鑰和私鑰:
- 在產生A和B的密鑰時,如果采用RSA算法,選取的模數n至少為1024位。
- 為了預防A抵賴,B要求A對其發送的消息進行簽名。A將使用A的私鑰對消息簽名;B使用A的公鑰對A的簽名進行驗簽。如果要求對消息保密傳輸,A將使用B的公鑰對消息加密,B使用B的私鑰解密消息。
- 實際應用中為了縮短簽名的長度、提高簽名的速度,而且為了更安全,常對信息的消息摘要進行簽名。
- 實際應用中,通常需要進行身份認證。基於口令的認證簡單易用,但是口令明文存儲與傳輸很不安全,對口令認證機制可以進行如下改進:
- 利用不需使用密鑰的哈希算法加密口令,使口令能夠以密文形式存儲與傳輸。
實驗步驟
一、安裝GPG(macOS High Sierra下)
-
訪問GPGTools網站,點擊Download GPG Suite,下載GPG Suite for OS X 2017.1:
-
雙擊打開GPG_Suite-2017.1.dmg,運行安裝操作:
-
雙擊Install,出現安裝界面,單擊繼續:
-
在選擇安裝類型(Installation Type)的時候,選擇自定義安裝(Customize),單擊自定:
-
去掉"GPGMail"前面的勾,單擊安裝:
-
再輸入用戶密碼獲取權限,隨后安裝完成。
二、創建PGP密鑰
- 打開GPG,菜單欄中點擊"新建",彈出"Generate new key pair"窗口,輸入姓名、電子郵件和密碼,創建PGP密鑰:
- 展開"高級選項(Advanced options)",配置密鑰類型、密鑰長度和有效期:
- GPG會彈窗提示密碼長度過短QAQ不過由於實驗方便還是就用短一點的密碼吧~點擊"Continue with simple password"繼續生成:
隨后GPG會生成4096個隨機字節:
密鑰成功創建!此時一定要點擊"Upload Public Key",將公鑰上傳!
密鑰成功生成如下:
三、設置PGP快捷鍵
-
點擊"🍎"-->"系統偏好設置"-->"鍵盤"-->"快捷鍵",點擊左邊的“服務”選項,在右側中找到一系列以“OpenPGP開頭”的操作,把前面的勾去掉:
-
打勾啟用以下四個操作,並設置快捷鍵:
- OpenPGP: Decrypt設置為:
control+option+command+minus
(-) - OpenPGP: Encrypt設置為:
control+option+command+equals
(=) - OpenPGP: Sign設置為:
control+option+command+open bracket
([) - OpenPGP: Verify設置為:
control+option+command+close bracket
(])
- OpenPGP: Decrypt設置為:
四、發送加密郵件
- 選擇郵件內容,按
control+option+command+open bracket
進行簽名,GPG會彈窗提示輸入Passphrase:
點擊確認后獲得簽名(SIGNATURE)后的郵件:
- 打開GPG Keychain Access應用,按
command+F
輸入接收者的郵箱地址,軟件會去公共密鑰服務器上去搜索郵件接收者的公鑰,如果對方有多個密鑰,選擇最新的一個:
- 會看到一條確認信息,對方的公鑰已經下載完成。點擊"好"關閉:
- 退出GPG Keychain Access回到郵件撰寫頁面,全選郵件內容,按
control+option+command+equals
進行加密,系統會彈出一個窗口,咨詢接收者是誰,選擇接收者的公鑰,點擊“OK”。此時,郵件的內容以及加密完成,可以安全發送:
五、解密郵件
- 復制郵件所有內容到文本編輯器Pages,包括“-----BEGIN PGP MESSAGE---”和“-----END PGP MESSAGE---”:
- 選中所有內容,按
control+option+command+minus
進行解密,輸入設置的Passphrase,按“OK”就可以看到解密的郵件內容:
得到揭秘之后的消息(待驗簽):
- 復制消息到Pages,點擊"Pages"-->"服務"-->"OpenPGP:Verify Signature of Selection"驗證簽名:
成功驗證簽名:
思考題
根據PGP的加密原理,說明為什么PGP要比RSA加密速度要快得多。
- 答:PGP不是加密方法,是一個軟件。由於RSA算法是公鑰加密算法,計算過程涉及到很大的冪指數運算,計算量極大,在速度上不適合加密大量數據,所以PGP實際上用來加密的不是RSA本身,而是采用傳統加密算法IDEA,IDEA加解密的速度比RSA快得多。PGP隨機生成一個密鑰,用IDEA算法對明文加密,然后用RSA算法對密鑰加密。收件人同樣是用RSA解出隨機密鑰,再用IEDA解出原文。這樣的鏈式加密既有RSA算法的保密性(Privacy)和認證性(Authentication),又保持了IDEA算法速度快的優勢。