PGP--Outlook ExpressUnixDOS和鑰匙伺服器安裝與應用

 

施勢帆


標題快速瀏覽

1.前言 3.Unix下PGP安裝和使用 5.鑰匙伺服器安裝與管理
2.Outlook Express Plugin 4.DOS下PGP安裝和使用 6.結語

在前一期「文件認證--Pretty Good Privacy (PGP)簡介與應用」中說明了PGP的基本安裝和使用,而網路的發展迅速,目前在http://www.pgpi.com已經提供個人自由使用的PGP 5.5.3i(pgp553i-win95nt.exe)和Outlook Express Plugin(PGPOEPlugin.zip),配合Outlook Express使得PGP的使用更加方便,在本文中筆者除了要介紹Outlook Express Plugin程式之使用外,並簡單說明PGP 5.0i在Unix/DOS下的安裝使用。

而對於網路工作者而言,一旦有了良好的客戶端程式一定會想到如何架設管理伺服端的Daemon程式,故筆者也在本文中說明鑰匙伺服器(key server)的安裝和管理,希望藉由這兩期的說明使讀者能夠明瞭PGP的大貌,另外為免除連線至國外網站的壅塞,筆者也將相關的程式放置http://mouse.oit.edu.tw中。

本程式一定要配合Outlook Express 4.72.2106.4以後的版本才可以安裝,讀者可以在執行Outlook Express後點取【說明】→【關於】來察看版本是否符合,如果不符合請安裝MSIE 4.01或Win 98。

PGPOEPlugin.zip的安裝十分容易,解壓縮後執行PGPoe.exe,一切依指示即可安裝完成,完成後啟動Outlook Express便可以見到有PGP的圖示,如圖一所示:

IMAGE1.TIF (85248 bytes)

(圖一)

接下來筆者使用送信和收信來簡單說明它的使用方法,欲送信時點取【新郵件】,此時可以填入收信者和信件內容,然後可以點取 表示此郵件需加密處理,點取 表示此郵件需加簽處理,如圖二所示。

IMAGE2.TIF (32874 bytes)

(圖二)

最後可以按下【傳送】來將此信寄出,如果有選擇加密的動作,則會自動在鑰匙環(key ring)中找出相對的鑰匙自動加密,但是如果不在鑰匙環中,則會出現圖三的畫面提醒使用者,並會自動去預設的鑰匙伺服器中尋找;

IMAGE3.TIF (45335 bytes)

(圖三)

如果有選擇加簽的動作,則會出現圖四的畫面,要求輸入通行密碼,十分的方便。

IMAGE4.TIF (20558 bytes)

(圖四) 

讀取信件時只要按下 便可以解密和驗證簽名了,如圖五所示。 

IMAGE5.TIF (34988 bytes)

(圖五)

但須注意的是,PGP僅能傳送簡單的文字(即ACSII)內容,故如果是MIME型式會被轉換成純文字,所以在傳送MIME型式或檔案時,須先將它儲存成檔案,再依上一期所說明的檔案加密加簽方式作處理,然後在Outlook Express中使用【插入】→【附加檔案】將該檔案隨信件送出即可。 

筆者附帶提的是Outlook Express支援多帳號而Netscape Messenger只支援單一帳號,故筆者是使用Outlook Express做為收發信的工具,所以讀者使用Netscape Messenger傳送含有中文的信件時,請務必轉碼為Traditional Chinese(BIG-5),否則在Outlook Express中僅能看到一些亂碼而已,因為Netscape Messenger是預設西歐碼Western(ISO-8859-1),所以筆者收到此信時便必須先將它存入檔案中,再使用Netscape Navigator閱讀,十分辛苦!

A. 安裝 

目前在http://www.pgpi.com/download提供了許多不同的PGP 5.0i的版本,讀者可以依自身的環境取得安裝,由於筆者使用的是Slackware Linux 3.3,故需取得pgp50i-unix-src.tar.gz原始碼來安裝。 

安裝步驟如下,使用root身份進入系統中後,執行以下的指令︰ 

tar xvfz pgp50i-unix-src.tar.gz ← 解壓縮至pgp50i目錄中
cd pgp50i/src ← 切換至pgp50i/src目錄
./configure ← 建立組態檔
make ← 編譯程式
make install ← 安裝
cd ← 切換至家目錄
rm -r pgp50i ← 刪除不需要的檔案 

讀者可以讀取pgp50i/src/README來獲得更詳細的安裝說明,安裝完畢後也可以執行man pgp, pgpe, pgps, pgpv, pgpk, pgp.cfg來獲得PGP的使用說明。 

B. 使用 

由於PGP是使用家目錄下.pgp/pgp.cfg做為組態檔,故請在自己的家目錄下.pgp子目錄建立pgp.cfg檔,內容可以參考man pgp.cfg,或作一個空的pgp.cfg檔,一切使用預設值即可,當然沒有也可以,只是每次執行PGP相關程式時會出現"Cannnot open configuration file ...."此訊息。 

接下來我們可以使用pgpk -g來建立自己的鑰匙對,範例如下: 

mouse:~# pgpk -g
Cannot open configuration file /home/shie/.pgp/pgp.cfg
Choose the type of your public key:
1) DSS/Diffie-Hellman - New algorithm for 5.0 (default)
2) RSA
Choose 1 or 2: 1 
Pick your public/private keypair key size:
(Sizes are Diffie-Hellman/DSS; Read the user's guide for more information)
1) 768/768 bits- Commercial grade, probably not currently breakable
2) 1024/1024 bits- High commercial grade, secure for many years
3) 2048/1024 bits- "Military" grade, secure for forseeable future(default)
4) 3072/1024 bits- Archival grade, slow, highest security
Choose 1, 2, 3 or 4, or enter desired number of Diffie-Hellman bits
(768 - 4096): 3
(Producing a 1024 bit DSS and a 2048 bit Diffie-Hellman key) 
You need a user ID for your public key. The desired form for this user ID is your FULL name, followed by your E-mail address enclosed in <angle brackets>, if you have an E-mail address. For example:
Joe Smith <user@domain.com>
If you violate this standard, you will lose much of the benefits of PGP 5.0's keyserver and email integration. 
Enter a user ID for your public key: Shih-Farn Shie <shie@mouse.oit.edu.tw> 
Enter the validity period of your key in days from 0 - 999
0 is forever (and the default): 
You need a pass phrase to protect your private key(s).
Your pass phrase can be any sentence or phrase and may have many
words, spaces, punctuation, or any other printable characters.
Enter pass phrase:
Enter again, for confirmation:
Enter pass phrase:  
讀者可以自行對照上一期中Win95下產生鑰匙對的方式,接下來筆者簡單說明其它指令的使用方式,而指令其中的<userid>可以鍵入user ID的某些部份即可,例如user ID是Shih-Farn Shie shie@mouse.oit.edu.tw,那麼可以鍵入shie或mouse, farn,oit...等等。 
pgpk -x <userid> -o outfile ← 取出<userid>的公開鑰匙至outfile中
pgpk -a [keyfile] ← 將公開鑰匙[keyfile]加入鑰匙環中 
pgpk -ll [userid] ← 列印出公開鑰匙 
pgpe -r <userid> -at [-o outfile] file ← 加密file至outfile中 
pgps -u [userid] -at [-o outfile] file ← 加簽file至outfile中 
pgpe -r <userid> -sat [-o <outfile>] file ← 加密加簽file至outfile中 
pgpv [-o outfile] file ← 解密file至outfile中 

加密加簽後的檔案可以使用mail somebody@somewhere < outfile寄出,需注意的是該郵件沒有主題[Subject],至於在Unix下PGP和其它mail程式結合的使用方式筆者尚未研究,故無法提供說明。 

相同的,目前在http://www.pgpi.com/download也提供了PGP 5.0i的DOS版本,讀者可以取得pgpibi.zip來安裝,解壓縮後執行Install F即可安裝完成,至於它的使用方法和Unix下使用方法相同,讀者請自行參考。 

A. 安裝

在安裝鑰匙伺服器之前,筆者想要尋問讀者的是,你有安裝鑰匙伺服器的需要嗎?如果你所處的環境是中小企業或區域網路中,PGP的使用者應該是有限的,那麼應該是可以不需要架設鑰匙伺服器,筆者說明如下: 

一般而言,企業中下屬所產生的公開鑰匙必須經由上司的加簽後交由網路管理人員管理,而網路管理人員可以使用Microsoft Network將需要的公開鑰匙作資源分享,或使用Netware, WWW等分享出來,通知所屬知悉,而取得的公開鑰匙可以檢查上司的加簽和指紋(Fingerprint)驗明真偽,附帶提的是每個人的公開鑰匙環為pubring.pkr,Windows在C:\Program Files\PGP\PGP55I目錄下,Unix在~/.pgp目錄下。 

如果讀者因為要提供公眾服務或研究所需而決定架設鑰匙伺服器,可以連線至http://www.mit.edu/people/marc/pks/下取得鑰匙伺服器的說明和安裝程式,目前最新的版本是pks-0.9.2.tar.gz,但由於還在beta的測試階段,如果讀者在安裝時遇到問題的話可以mailto:marc@mit.edu,作者會十分樂意提供解答的。 

根據筆者安裝pks-0.9.2.tar.gz的經驗,Slackware Linux 3.3和DEC OSF/1 V2.0 WWW界面安裝成功,Mail界面安裝失敗,至於FreeBSD, SunOS安裝失敗,故本文以Slackware Linux 3.3作安裝管理說明,至於其它系統請讀者自行嘗試。 

在Slackware Linux 3.3中請讀者先檢查一下/usr/include/linux/un.h的內容,如果其中是

struct sockaddr_un {
unsigned short sun_family; /* AF_UNIX */
char sun_path[UNIX_PATH_MAX]; /* pathname */
}; 

則安裝過程會順利些,否則可能會架設失敗。接下來使用root身份進入系統中,執行以下的指令:

tar xvfz pks-0.9.2.tar.gz ← 解壓縮至pks-0.9.2目錄中
cd pks-0.9.2 ← 切換至pks-0.9.2目錄
./configure --prefix=/root/pks-0.9.2 ← 建立組態檔
make ← 編譯程式
make install ← 安裝
bin/pksclient var/db create ← 建立鑰匙資料庫
bin/pksclient var/db add keyring.pgp ← 將公開鑰匙加入鑰匙資料庫中,此步驟可省略
bin/pksd etc/pksd.conf & sleep 5 ← 測試伺服器程式,如果沒有出現Exit,恭喜你成功了,執行ps看看
mv man/man5/* /usr/man/man5/ ← 搬移說明檔
mv man/man8/* /usr/man/man8/
rm * ; rm -r db2 ; rm -r man ← 刪除不需要的檔案
讀者可以讀取pks-0.9.2/README來獲得更詳細的安裝說明,安裝完畢後也可以執行man pks-intro, pksd, pksclient, pksdctl, pksd.conf來獲得PKS的使用說明,最後將鑰匙伺服器程式加到系統自動執行檔/etc/rc.d/rc.local中,範例如下:
echo "Running PGP key Server..."
/root/pks-0.9.2/bin/pksd /root/pks-0.9.2/etc/pksd.conf & sleep 5
鑰匙伺服器管理指令如下:
~#pks-0.9.2/bin/pksclient pks-0.9.2/var/db create ← 建立鑰匙資料庫
~#pks-0.9.2/bin/pksclient pks-0.9.2/var/db add filename [flags] ← 加入鑰匙
~#pks-0.9.2/bin/pksclient pks-0.9.2/var/db get userid [flags] ← 取得鑰匙
~#pks-0.9.2/bin/pksclient pks-0.9.2/var/db index userid [flags] ← 鑰匙列表
~#pks-0.9.2/bin/pksclient pks-0.9.2/var/db delete userid ← 刪除鑰匙
~#pks-0.9.2/bin/pksclient pks-0.9.2/var/db disable userid [flags] ← 鑰匙作廢

B. 使用

在Windows PGPKeys程式下點取【Edit】→【Preferences】→【Servers】→【New】增加新的鑰匙伺服器http://mouse.oit.edu.tw:11371,並設為預設伺服器如圖六所示:

IMAGE6.TIF (34988 bytes) 

(圖六)

接下來便可以選取PGPKeys中的鑰匙,然後點取【Keys】中的【Send Key to Server】將公開鑰匙登入伺服器中,【Update from Server】從伺服器中取回更新,【Search】從伺服器中尋找適當的公開鑰匙,如圖七所示:

IMAGE7.TIF (30350 bytes) 

(圖七)

接下來便可點取欲加入自己鑰匙環中的鑰匙,如Shih-Farn Shie shie@digital.oit.edu.tw,點取滑鼠右鍵後選擇【Import to Local Keyring】後即可。

C. WWW界面

讀者或許也希望能夠提供PKS的WWW界面,首先當然必須有httpd伺服程式才可,在Slackware Linux 3.3安裝完成後請修改/var/lib/httpd/conf中access.conf, httpd.conf和srm.conf,讀者可參考拙著之Linux網路伺服器架設實務手冊(碁峰),修改完成後重新啟動即可。

接下來將/root/pks-0.9.2/pks-commands.html複製到可以提供WWW服務的目錄下,再將pks-commands.html依自己所需的修改,其中有三個http://localhost:11371請務必修改至提供鑰匙伺服器的網址,如筆者鑰匙伺服器的網址是mouse.oit.edu.tw則修改成http://mouse.oit.edu.tw:11371。

使用PKS的WWW界面也十分容易,欲取得別人的公開鑰匙則在

Index: ( ) Verbose Index: ( )
Search String: __________________________________
[ ] Show PGP "fingerprints" for keys
[ ] Only return exact matches

中填入適當資料後按下【Do the search!】的按鈕,即可取得一組條件相同的公開鑰匙。

欲將自己的公開鑰匙登錄鑰匙伺服器中,只要在對話框中填入自己的公開鑰匙後按下【Submit this key to Keyserver!】的按鈕即可登錄。

或許讀者會好奇的問:我要如何刪除在鑰匙伺服器上屬於自己的公開鑰匙呢?因為我只是測試的而已呀!筆者的回答是刪除在鑰匙伺服器的公開鑰匙原則上是不可能的,因為既是在鑰匙伺服器上的公開鑰匙除了鑰匙伺服器外,全世界上可能有成千上萬的人已經拿到你的公開鑰匙,那麼刪除鑰匙伺服器上的公開鑰匙便沒有意義了,如果讀者真的要刪除自己的公開鑰匙的話,需自行送Email給鑰匙伺服器管理者請它手動刪除。

原則上PGP雖然可以使得E-business變成可能,但是最原始的鑰匙無法辨認,故才需要透過加簽的方式來認證,這也就是為何今年報稅時,必須是HINET的用戶或自行去中華電信申請的原因了。而國內也有元智大學開發的YESKEY免費提供第一級的個人數位認證及站台數位認證核發服務給國人使用,有興趣的讀者可連線至http://ca.info.yzu.edu.tw/default.htm獲得詳細的說明。

筆者撰寫PGP還有一層用意,因為筆者任教於某一專科,在本校紡織科內有一郭老師推行資源回收不餘於力,頗令人欽佩,但筆者也一直在想如果能由源頭便減少資源的浪費,降低紙張的使用量豈不更好,能將公文書由紙張變成電子資料儲存寄送,而儲存寄送的過程中使用PGP便不用擔心有心人的攥改和破壞,如此更迅速更安全,這也可以算是科技環保吧!

另外筆者也計畫在下一期中提供簡易防火牆(firewall)的架設和管理方法,使得網路的使用能更安全。

(作者任教於亞東工專電機科,E-Mailshie@digital.oit.edu.tw)

 

bn128002.gif (1245 bytes) bn128001.gif (1261 bytes)