文件認證——Pretty Good Privacy (PGP) 簡介與應用

作者:施勢帆陳保川


前言

什麼是 PGP

‧PGP 最新版本與程式的取得

‧PGP 程式的安裝與設定

‧PGP 程式的功能與使用方法

a. 散播公開鑰匙和加入別人的公開鑰匙

b. 訊息加密和解密

c. 訊息簽證與認證

d. 鑰匙簽證與信任參數
e. 鑰匙廢除和新增
f. 其它指令介紹
實地操作

結語


前言

由於時常收到電子郵件、BBSnewsgroup、瀏覽首頁時時常有 PGP 後面跟著一堆亂碼,如下的東東:

-----BEGIN PGP SIGNED MESSAGE-----

Hash: SHA1

Pretty Good Privacy (PGP) 簡介與應用

-----BEGIN PGP SIGNATURE-----

Version: PGPfreeware 5.0i for non-commercial use

Charset: noconv

 

iQA/AwUBNSEbbnZNagG1qSqtEQIcQgCfUxZbcif8XjIDOFdI3bYnkZejUaYAoNiN

ytin1ZMvlYsH5TnMOLmm09FY

=Pu/T

-----END PGP SIGNATURE-----

這是什麼呢?於是筆者便以 PGP為關鍵字在網路上搜尋相關資料,結果在 http://www.isl.net.tw/~terry/software/pgp/index.html由陳泰維先生所撰寫的“Pretty Good Privacy (PGP)簡介與應用”,有相當詳盡的說明,不過因為軟體發展的快速,其原本介紹PGP263I-WIN32.ZIP的使用方法已不敷使用,筆者要介紹的是PGP553_4096RSA.EXE的安裝和使用方法。

接下來筆者在不違反著作權的條件下依陳泰維先生所撰寫的步驟說明之*,在此也感激陳泰維先生的貢獻。

什麼是 PGP
由於現今網路已經邁向商業上的應用,網路資訊的安全與維護是當前重要的課題,而PGP (Pretty Good Privacy) 是可以讓電子郵件或檔案具有保密功能的程式,提供了強大的保護功能,即使是最先進的解碼分析技術也無法解讀,因此可以將檔案加密後再傳送給他人,加密後的訊息看起來是一堆無意義的亂碼,除了擁有解密鑰匙的人看得到以外,沒有其它人可以解讀。

PGP是利用所謂的公開鑰匙密碼學為基礎,其原理是利用 PGP 產生一對鑰匙,一把是私人鑰匙,一把是公開鑰匙。當要傳送一封保密信或檔案給對方時,首先必須先取得對方的公開鑰匙,並將加入自己的公開鑰匙環中,接下來利用對方的公開鑰匙將信件加密後再傳給對方。當對方收到加密的信件後,對方必須利用其相對的私人鑰匙來解密。PGP亦提供 PGP 專屬簽名,其目的通常是當要公開傳送訊息時,希望讓別人知道這訊息確實是由你所發出,一旦加上專屬簽名後,任何人只要更改訊息本身或簽名的話,PGP都能偵測出此篇文章已被他人更動,並非是原作者之成品。

‧PGP 最新版本與程式的取得
MIT PGP 5.0是源於美國麻省理工學院最新的免費軟體版本,不過因受美國密碼出口管制的限制,只有美國和加拿大地區的居民才可取得與使用。有興趣的讀者可以在http://web.mit.edu/network/pgp.html,取得參考文件與說明。

PGP 5.0I為“國際 (International)”版本,雖受到美國密碼出口的管制,但作者將其放置於挪威,故不在美國的禁令限制範圍內,使用者可以自由免費地取得,取得位置在http://www.pgpi.com/download/,而最新版 PGP 5.5.3I只提供原始碼,而且必須使用 Microsoft Visual C++ version 5.0 編譯,不過網路上已經有提供可安裝版了,請讀者至http://www.geocities.com/SiliconValley/Lab/3460/ie4.html 下取得,所以筆者針對PGP 5.5.3I 來作介紹。

當然國內也有數個 mirror 的站台如: ftp://linux.ntcic.edu.tw/pub/personal/cdchen/PGP/5.0/international/win95nt/pgp50i-win95nt.zip

ftp://proxyftp.csie.ncu.edu.tw/ftp.ifi.uio.no/pub/pgp/5.0/international/win95nt/pgp50i-win95nt.zip

‧PGP 程式的安裝與設定
直接執行 pgp553_4096rsa.exe 即可自動安裝,請依照畫面指示操作,一直等到出現圖一的畫面,請輸入自己的姓名和e-mail以便產生自己的公開與私人鑰匙,接著按【下一步】繼續。

圖一

接下來請選擇鑰匙的產生形式,RSA 是屬於舊式的 PGP 鑰匙,目前通常是採用【Diffie-Hellman/DSS】,如圖二所示,然後按【下一步】繼續。

圖二

接下來請選擇鑰匙的產生大小,通常鑰匙位元量越大保密性越佳,一般是採用【2048 bits[2048 Diffie-Hellman/1024 DSS]】,如圖三所示,然後按【下一步】繼續。

圖三

接下來請選擇鑰匙的到期時間,一般是不限制;反之,當此鑰匙過期後,你將無法使用它來加密文件,但它仍可用來解密及認證,一旦鑰匙對產生後,到期時間將無法更改,如圖四所示,請依需要選擇後按【下一步】繼續。

圖四

接下來請輸入這組鑰匙中的私人鑰匙部份之通行碼(passphrase),要輸入兩次相同才可以而且至少要八個字以上,其中需含非文字碼,並請慎選“”的通行碼,如圖五所示,然後按【下一步】繼續。

圖五

接下來都依畫面指示即可,必須一提的是在產生鑰匙對的時候,請必須不停移動滑鼠或敲擊鍵盤,產生鑰匙對的程序才會進行,等到出現圖六的畫面就大功告成了。

圖六

‧PGP 程式的功能與使用方法
a. 散播公開鑰匙和加入別人的公開鑰匙
因別人要送加密信件給你,必須要有你的公開鑰匙,用此公開鑰匙來加密,所以我們要散佈自己的公開鑰匙,讓越多人拿到你的公開鑰匙越好,這樣也就會有越多人可以送加密信件給你了。

首先我們必須製造公開鑰匙檔以便利用網路傳播給其它人,製造方法是在PGPkey 下點選【Keys】→【Export】產生一個ASC檔案,例如是shie.asc,如圖七所示。

圖七

接下來筆者要說明如何加入對方的公開鑰匙到自己的鑰匙圈中,當得到對方的公開鑰匙後,使用 PGPkey點選【Keys】→【Import】,選擇到對方的公開鑰匙檔案後即可加入到自己的公開鑰匙圈中,如此才能送出給對方的加密信件,如圖八所示。

圖八

b. 訊息加密和解密
訊息加密有兩種方式,第一種方式是產生訊息檔後(筆者建議使用一般文書處理器如記事本產生即可,Microsoft Word 產生的含中文檔案可能會有問題,讀者可自行嘗試),將滑鼠移至該檔下按右鍵選擇【PGP】後會彈出一個視窗,共有【Encrypt】【Sign】【Encrypt and sign】【Wipe】四個選項,其中【Encrypt】即是將訊息加密,【Sign】是附加訊息簽證,【Encrypt and sign】是訊息加密和附加訊息簽證,【Wipe】是將檔案刪除。按【Encrypt】後會出現圖九的畫面,請選擇是要將檔案傳送給何人,底下選項中的【Wipe origin】是產生加密檔後將原始檔案刪除的意思,以 test.txt 做例子,產生加密檔名為 test.txt.pgp,也可以自訂。

圖九

第二種方式是執行 PGPtray 利用剪貼簿進行加密的工作,執行 PGPtray 後會在工作列上產生一個小圖示,我們可以將滑鼠移至此點一下左鍵,會彈出一個選擇列,如圖十所示。

圖十

我們可以使用 Windows下複製 (Ctrl-C) 的功能將所需的文件從不同視窗中拷貝至剪貼簿中(注意 Microsoft Word 產生的含中文檔案可能會有問題),並且可以利用圖十中【Edit Clipboard Text】將文件進行修改,如圖十一所示:

圖十一

修改完成後再使用【Encrypt Clipboard】會出現圖九的視窗來進行加密的動作,加密完成後可以至【Edit Clipboard Text】觀看加密後的結果。

相同的,訊息解密也有兩種對應方式,第一種方式是將滑鼠移至該加密檔下按右鍵選擇【PGP】,隨後有【Decrypt/Verify】【Wipe】兩個選項,其中【Decrypt/Verify】即是將訊息解密,按【Decrypt/Verify】後會出現圖十二的畫面,要求輸入通行碼,當輸入正確的通行碼後便可以將檔案解密了。

圖十二

第二種方式是執行 PGPtray 利用剪貼簿進行解密的工作,利用複製 (Ctrl-C) 的功能將所需的解密文件從不同視窗中拷貝至剪貼簿中,使用【Decrypt/Verify Clipboard】會出現圖十二的視窗,動作和上述相同。

c. 訊息簽證與認證
PGP 專屬簽名所代表的意義是,當利用私人鑰匙對信件簽名,可證明這封信確實是你寫的,因為你的私人鑰匙應該只有你才會持有。而專屬簽名也是類似以加密的方式將信件加密處理,但此種方法不會將整篇信件都編成亂碼,而是保留原內容,但在信件的開頭和結尾的部份加上檢查的字元,那便是一般所稱的專屬簽名。就如同前言中所表示的,其中 BEGIN PGP SIGNATURE END PGP SIGNATURE 中間的內容便是 PGP 利用筆者的私人鑰匙對此信件加以計算的結果。

相同的我們可以使用前面說明過的處理方式:選擇【Sign】對文件加以簽證或 PGPtray 的【Sign Clipboard】對剪貼簿文件加以簽證。選擇後也是出現圖十二的畫面,要求輸入通行碼,預設的副檔名為 sig。此外我們也可以對文件加密並簽證,只要選擇【Encrypt & Sign】或PGPtray 的【Encrypt & Sign Clipboard】即可。

一樣的,訊息認證可以使用之前說明過的處理方式選擇【Verify Signature】對文件加以認證或 PGPtray 的【Decrypt/Verify Clipboard】對剪貼簿文件加以認證,選擇後會出現圖十三的畫面,表示認證的結果,如果【Signed】欄位下是 [Bad Signature] 表示是錯誤的訊息認證,否則會出現認證的時間。

圖十三

d. 鑰匙簽證與信任參數
PGP 也允許你將某人的鑰匙加上自己的簽名,代表是為人“作保”的意思,證明這把有你簽名的鑰匙確實是屬於某人的,而不是某些有心人仕所偽造出來的。因為替某人的鑰匙簽名需要使用到你的私人鑰匙,所以只要第三者相信你不會隨便就替人作保,則他便可以相信這把鑰匙確實是屬於某人的。而其中又牽扯到信任度的問題,共有三個等級:Untrusted(不信任)、Marginal(不完全信任)、Complete(完全信任)。所代表的意義是:若今天第三者拿到某人的鑰匙,而在鑰匙中有你的簽名,則會依它信任參數的設定而決定是否要“自動地”相信所得到的確實是某人的鑰匙。在此你便權充為一個介紹者的角色;若你相信筆者並替筆者的鑰匙簽名,而第三者相信你且將你鑰匙的信任參數設為最高,則他將會“自動地”認為這把有你簽名的鑰匙確實是屬於筆者的。因此,建議不要隨便幫別人的鑰匙簽名,否則將會透過這個連鎖效應而喪失了你自己的名譽。

要對某個鑰匙簽證,首先在 PGPkeys 下選擇某個鑰匙後,執行【Keys】→【Sign】並將 ”Allow signature to be exported. Others may rely on your signature” 這個選項選取後再輸入你的通行碼即可,如圖十四所示,是筆者為 Pao-Chuan Chen 鑰匙簽證,此時【valid】欄位中灰色圓點將轉成綠色。

圖十四

接下來執行【Keys】→【Key Properties】修改對此鑰匙的信任參數,如圖十五所示:
圖十五

接下來和【散播公開鑰匙和加入別人的公開鑰匙】中說明的ㄧ樣來處理即可,不過筆者建議使用【Keys】→【Send Key to Server】將加簽過的鑰匙傳送至伺服器中,方便別人獲得完整的訊息。

e. 鑰匙廢除和新增
意外總是會發生的,若你發現自己的公開、私人鑰匙或通行碼不知名地被有人仕所破解或盜用,為了防止他們繼續以你的鑰匙名義從事損害你權益的行為,這時你應該馬上進行廢除鑰匙的動作,只要選擇欲廢除鑰匙後,執行【Keys】→【Revoke】即可,而一但廢除後便無法救回。相同的你可以執行【Keys】→【New Key】即可如安裝過程般產生一組新的鑰匙對。
f. 其它指令介紹
由於 PGP 5.5.3I 的功能強大筆者在此無法逐一介紹,請讀者自行觀看 PGP User’s GuidePDF格式)或多自行嘗試 PGPkey PGPtray 的操作使用,此外可至 USENET comp.security.pgp, comp.security.pgp.announce, comp.security.pgp.discuss 討論群組中閱讀最新公告和加入討論。
實地操作
筆者使用 Outlook Express 來作一個簡單範例的說明,如圖十六所示,加密的郵件傳送過程有八個步驟:
圖十六

收到郵件如圖十七所示,解密的過程有五個步驟:

圖十七
結語
PGP 的功能強大,能對文件做完整的加密並簽名,使得網路上最棘手的文件認證問題可以加以克服,對於網路的使用提供了多一層的保障,使得 E-business 露出了光明的曙光。
*本文有經陳泰維先生的同意。

作者;

施勢帆,國立台灣科技大學電機所博士候選人,目前任職於帆毅網路工作室專案經理,E-mail:shie@digital.oit.edu.tw or shie@www.ee.oit.edu.tw

陳保川,國立成功大學電機所博士,目前任職於亞東工專電機科,E-mail:pcc@www.ee.oit.edu.tw