電子郵件已經成為網絡時代最最方便的交流方式,由於互聯網的自由性,因而郵件的安全問題也就日益顯得突出了。在 Internet 盛行的今天,電子郵件越來越普及,隨便翻開一本書或雜志報刊,5自學網,都有電子郵件地址;就連廣告也都標上了電子郵件地址;這已成為一種時尚、成為網絡時代最最方便的交流方式,省錢、快捷。正是由於 Internet 的自由性,因而郵件的安全問題也就日益顯得突出。通過電子郵件傳送信息,一般人都認為很安全。其實不然,大家都知道在 Internet 上傳輸的數據是不加密的,如果你自己不保護自己的信息,第三者就會輕易獲知你的所有隱秘。要解決這些問題,目前最好的辦法是對電子郵件進行加密。想要加密一封電子郵件,你必須使用鑰匙,它是將你的訊息內容變成亂碼的工具。目前最優良的電子郵件加密程式,是使用公開密匙加密系統。此種系統給每位使用者兩只鑰匙:一支是公開密匙,另一支則是私人鑰匙。這兩只鑰匙實際上是同一支鑰匙的兩部分:一支可以打開另一支鎖上的部份。因此,人們往往將它們稱做鑰匙組( key pair ),你必須擁有兩支鑰匙,才能加密電子郵件。你可以將自己的公開鑰匙,給任何一位收件人。你甚至可以將公開鑰匙存放在公開伺服器( public server )上,或是自己的網頁裡。這樣的話,任何人都可以透過網路,取得你的公開鑰匙。不過,私人鑰匙只能由你一個人擁有。假如傳送訊息時,有人從中途攔截的話,該怎麼辦?別擔心,什麼事都不會發生。假如沒有相應的私人鑰匙,你的訊息內容只會是一片無法閱讀的亂碼。所以,不管有多少人擁有你的公開鑰匙,除非他們也有你的私人鑰匙,否則就沒有人能將訊息解密。你—正是擁有私人鑰匙的唯一人選。現在有很多郵件加密軟件,但目前尚無一套標准能夠保證,不同的加密軟件能彼此共用。現在最為普遍的兩種協議,是的 RSA Date Security 的 S/MIME ,以及 Pretty Good Privacy 的 OpenPGP。假如你用某種協議加密自己的訊息,收件人必須使用擁有相同協議的軟件。PGP ── Pretty Good Privacy ,是一個基於 RSA 公鑰加密體系的郵件加密軟件,它提出了公共鑰匙或不對稱文件加密和數字簽名。其創始人是美國的 Phil Zimmermann。他的創造性在於他把 RSA 公鑰體系的方便和傳統加密體系的高速結合起來,並且在數字簽名和密鑰認證管理機制上有巧妙的設計,因此 PGP 成為目前幾乎最流行的公鑰加密軟件包。要認識 PGP 就有必要認識一下幾種常見加密算法。
一、幾種常見加密算法
DES 算法DES 是一個應用非常廣泛的數據加密機制,目前有許多種硬件和軟件可以實現。它使用一個特殊的算法和稱之為鑰匙的值將明文信息轉換成密文( ciphertext ),如果接收者知道鑰匙,就可以使用它將密文轉換成原始數據。所有加密系統的一個潛在弱點就是需要記住數據加密的鑰匙,在這點上,類似於要記住口令。如果鑰匙被非授權方記錄下來,你的原始數據就可以被他人解讀;如果忘記鑰匙,連你自己也無法恢復原始數據。RSA 算法RSA ( Rivest-Shamir-Adleman )算法是一種基於大數不可能質因數分解假設的公鑰體系。簡單地說,就是找兩個很大的質數,一個公開給世界,稱之為“公鑰”,另一個不告訴任何人,稱之為“私鑰”。兩把密鑰互補──用公鑰加密的密文可以用私鑰解密,反過來也一樣。假設 A 寄信給 B,他們知道對方的公鑰。 A 可用 B 的公鑰加密郵件寄出,B 收到後用自己的私鑰解出 A 的原文,這樣就保證了郵件的安全性。IDEA 算法IDEA 算法是經過改進的傳統算法。所謂傳統算法就是用密鑰加密明文,然後用同樣的密鑰解密。它的主要缺點是密鑰的傳遞渠道解決不了安全性問題,不能滿足網絡環境郵件加密的需要。我們可以給 PGP 下一個簡單的定義: PGP 是 RSA 和傳統加密的雜合算法。那麼為什麼說 PGP 用的是 RSA 和傳統加密的雜合算法呢?因為 RSA 算法計算量極大在速度上不適合加密大量數據,自學教程,所以 PGP 實際上用來加密的不是 RSA 本身,而是采用了 IDEA 這種傳統加密算法。IDEA 的加(解)密速度比 RSA 快得多,所以實際上 PGP 是用一個隨機生成密匙(每次加密不同)用 IDEA 算法對明文加密,然後用 RSA 算法對該密匙加密。這樣收件人同樣是用 RSA 解密出這個隨機密匙,再用 IDEA 解密郵件本身。這樣的鏈式加密就做到了既有 RSA 體系的保密性,又有 IDEA 算法的快捷性。
二、PGP 的主要特征
使用 PGP 對郵件加密,以防止非法閱讀;能給加密的郵件追加上數字簽名,從而使收信人進一步確信郵件的發送者,而事先不 需要任何保密的渠道用來傳遞密鑰;可以實現只簽名而不加密,適用於發表公開聲明時證實聲明人身份,也可防止聲明人 抵賴,這一點在商業領域有很大的應用前景;能夠加密文件,包括圖形文件、聲音文件以及其它各類文件;利用 PGP 代替 Uuencode 生成 RADIX 64 (就是 MIME 的 BASE 64 格式)的編碼文件。三、PGP 密鑰體系管理PGP 密鑰體系包含對稱加密算法( IDEA )、非對稱加密算法( RSA )、單向散列算法( MD5 )以及隨機數產生器(從用戶擊鍵頻率產生偽隨機數序列的種子),每種算法都是 PGP 不可分割的組成部分。公鑰體制的提出,就是為了克服傳統加密體系的密鑰分配過程難以保密的缺點。而 PGP 采用公鑰介紹機制不僅解決了公鑰體制的缺點,而且對其加以發展。所謂公鑰介紹機制,就是由一個大家普遍信任的人或機構擔當介紹人,被稱為“認證權威”,每個由他簽字的公鑰都被認為是真的,這樣大家只要有一份他的公鑰就行了。而認證這個人的公鑰是很方便的,因為他廣泛提供這個服務,因而他的公鑰也廣泛流傳。現在公認的有效方法是通過密鑰分配中心 KDC 來管理和分配公開密鑰,這對商業的網絡化提供了可靠的保障。當然,個人用戶可以不需要進行機構認證,而通過私人方式進行密鑰轉介,這體現了人們交往的自然狀態。
四、PGP 郵件加密的使用我們就目前的 PGP 6.0.2i 版軟件來看一看其對郵件的加密方法。 使用 PGP 6.0.2i 可以簡潔而高效地實現郵件或者文件的加密、數字簽名。當 PGP 6.0.2i 安裝完成後,在任務欄中出現 PGP 所特有的小鎖圖標── PGP Trays 。點擊左鍵,即可激活 PGPtools 。 PGP 6.0.2i 中使用 PgpKeys 管理密鑰環( KeyRing ),密鑰環文件保存所有與你相關的公開密鑰,並對其進行維護和管理,如進行密鑰的生成、傳播或廢除,以及數字簽名、信任管理、資源查詢等。如果機器與 Internet 相連,還可實現在線密鑰認證以及在線密鑰更新。
密鑰的生成、傳播和廢除每一個用戶必須生成自己的密鑰對,這是使用 PGP 加密的第一步,通常在安裝過程中完成。在 PgpKeys 中也可生成新的密鑰,即在菜單中選擇“ Keys ”—“ New Key ”,彈出對話窗,提示用戶填寫用戶名、電子信箱地址,然後要選擇密鑰長度,一般選擇 2048bit 。之後是確定密鑰生存周期:可以定制該密鑰在一定天數後過期,默認值為 NEVER 。最後定義保護密鑰的口令。生成密鑰後,可以選擇是否立即將新的公開密鑰發送到 Internet 密鑰服務器上,這樣希望與你通信的用戶可以直接到密鑰服務器中下載你的密鑰。通過密鑰服務器可以實現密鑰的上載與下載,還能方便地與他人交換公鑰。若想廢除時,只須選取 Revoke 即可。數字簽名如果希望發出的信件或者文件不被冒名或篡改,可以用你的私鑰對郵件等簽名。收件人可使用你的公鑰驗證簽名。 PGP 6.0.2i 還可實現加密後簽名,避免了老版本中簽名文件的明文狀態──只能保證不被篡改,不能加密傳輸的缺點。加密與解密下面我們以 gx.txt 為例,說明實現加密的具體過程。點擊“ Encrypt ”後,出現選擇所加密文件的對話框,選擇 gx.txt 後,進一步選擇加密後的輸出格式,分別有以下 4 個選項:Text OutputConventional EncryptionWipe OriginalSecure Viewer根據郵件及文件重要性的不同,可選擇合適的輸出格式。本例中,選擇“ Conventional Encryption ”。接下來便是提示輸入口令,得到確認之後,選擇輸出文件名 A ,然後一切 OK!解密是加密的反過程。 PGP 6.0.2i 的解密過程同樣簡單,點擊“ Decrypt/Verify ”,彈出文件選擇對話框,選擇所要解密的文件之後,輸入加密時使用的密碼,經過計算,再次選擇輸出文件名,解密就完成了。
五、其它
在這裡我提一下 PGP 的加密前預壓縮處理,PGP 內核使用 PKZIP 算法來壓縮加密前的明文。一方面對電子郵件而言,壓縮後加密再經過 7bits 編碼密文有可能比明文更短,這就節省了網絡傳輸的時間。另一方面,明文經過壓縮,實際上相當於經過一次變換,信息更加雜亂無章,對明文攻擊的抵御能力更強。 PGP 中使用的 PKZIP 算法是經過原作者同意的。 PKZIP 算法是一個公認的壓縮率和壓縮速度都相當好的壓縮算法。在 PGP 中使用的是 PKZIP 2.0 版本兼容的算法。PGP 的密鑰和口令的安全性問題PGP 最可能的失密方式就是別人得到你的口令和你的私匙文件,那麼整個加密體系就無密可言了。另一個要注意的就是口令設置問題,口令設置不要太簡單。 PGP 用的是“口令”( passphase ),而不是“密碼”( password ),就是說可以在口令中包含多個詞和空格。攻擊者可能會用一本字典或者名言錄來尋找你的口令,因此為了得到好記又難猜的口令,你可以創造句子或者找些非常生僻的文學篇章中的句子。口令的長度最好大於等於 8 個字符,同時也可夾雜英文字母的大小寫和數字、符號等。一般說來,密鑰長度每提高一位,就可以讓攻擊者多花費一倍的破解時間,因此從理論上而言,如果沒有更新的計算技術出現,總是可以找到在給定時間內不能被破解的密鑰的。公鑰的篡改和冒充可以說是 PGP 的最大