摘 要:研究了OpenPGP加密原理、加密密鑰和密鑰環、數據包、信任關系模型以及OpenPGP使用的幾種主要算法,提出一種基于
OpenPGP協議的客戶端設計方法,保證了郵件安全。
關鍵詞:OpenPGP; 電子郵件; 加密算法; 安全協議
中圖分類號:TP309文獻標志碼:A
文章編號:1001—3695(2007)03—0157—03
隨著網絡技術的不斷進步和日益普及,電子郵件已經成為人們聯系與溝通的重要手段。而在享受網絡通信所帶來的便利之余,電子郵件的安全問題也越來越受到使用者的重視。當前人們使用的大多數電子郵件系統,沒有采取任何措施保證郵件能在網絡中安全傳送。電子郵件的內容均以明文形式在網絡中傳遞,并沒有任何文件內容完整性驗證機制,攻擊者可在郵件傳輸中截獲數據。解決電子郵件的安全問題主要是采用密碼技術,其完整性、保密性和抗抵賴性都需要密碼技術來支持。
OpenPGP是一個不受專利和法律約束的開放式安全協議標準。該標準得到Qualconn、IBM等公司的支持,也將很快成為IETF標準。OpenPGP 源于PhilAimmermann在1991年發布的PGP(Pretty Good Privacy)。它基于早期PGP的二進制信息通信格式和身份認證格式,是一種近來在學術圈和技術圈內得到廣泛使用、成型的端到端的安全郵件標準,也是世界上最廣泛使用的電子郵件數字簽名/加密協議之一。
1 OpenPGP協議
1.1 OpenPGP加密原理
OpenPGP極大地擴展了所支持的加密算法數目, 同時繼承了PGP的眾多優點,采用加密方式來保持信息的機密性。OpenPGP定義了加密消息、簽名、私鑰、公鑰證書的標準格式,使用傳統的公鑰加密和對稱密鑰加密相結合的加密技術為網絡傳輸和數據存儲提供安全服務。
發送方創建消息后,獲得對方的公開密鑰,并通過產生一個隨機數生成本次會話的對稱密鑰。其使用公開密鑰對本次會話的對稱密鑰進行加密,并使用對稱密鑰對報文進行加密。接收方接收到報文后通過私鑰對報文進行解密,解密后使用對稱會話密鑰對報文內容進行解密。如果報文是壓縮的,接收后還要進行解壓縮。具體OpenPGP服務流程如圖1所示。
圖1 OpenPGP加密服務原理
公鑰算法傳遞每次會話中使用的對稱密鑰, 實際傳輸內容使用對稱密鑰算法加密。每次會話的對稱密鑰是隨機產生的,因為每個會話中對稱密鑰只使用一次。會話密鑰必須與消息同時發送。
1.2 OpenPGP加密密鑰和密鑰環
OpenPGP使用四種類型的密鑰,即一次性會話傳統密鑰、公鑰、私鑰及基于過渡階段的傳統密鑰。
在OpenPGP中KeyID標志使用發送者和接收者的密鑰號。在每一個節點上提供一對數據結構,用于存儲該節點擁有的公鑰/私鑰對(私鑰環)和本節點知道的其他用戶公鑰(公鑰環)。公鑰環和私鑰環的總體結構如表1所示。
1.3 OpenPGP的數據包
在OpenPGP中,本地使用的公鑰保存在后綴為pkr的公鑰環文件中,私鑰保存在后綴為skr的私鑰環文件中。從公鑰環導出的單個公鑰保存在asc文件中, 即OpenPGP定義的公鑰證書。密鑰中的整數在存儲時采用Big Endian的字節順序,大整數以多精度整數 MPI 的形式存儲。MPI 的前兩個字節是大整數的長度信息,從第三個字節起是按Big Endian順序存放的大整數。OpenPGP 密鑰數據以數據包為單位進行組織。一個數據包由數據包頭和數據包體兩部分組成, 數據包頭描述了數據包長度、類型等信息;數據包體存儲相關的密鑰信息。表2描述了有關Open PGP 中公鑰與私鑰數據包的結構信息。
1.4 OpenPGP的信任關系傳遞
OpenPGP協議允許任何人簽署任何其他人的公鑰。當Ali ̄ce簽署Bob的公鑰, 他就將Bob介紹給了所有信任Alice的人。其本質相當于每個人均可在一定范圍內充當一個小的CA 角色。
OpenPGP的信任模式與x.509協議的信任模式很像。事實上,OpenPGP信任模式是在x.509協議模式中看到的模式超集。OpenPGP的信任關系傳遞使用的是鏈狀結構,信任模型如圖2所示。
2 OpenPGP主要算法
OpenPGP安全機制的核心是公鑰加密算法。這些算法包括MH背包算法、RSA、DSS、Diffie—Hellman、Elliptic Curve、IDEA、3DES、SHA—1、MD5和ECC橢圓曲線算法等。其中,最具代表性的三種算法是MH背包算法、RSA和ECC橢圓曲線算法。
2.1 MH背包算法
MH背包算法是一種適合數據庫加密的算法。其基本思想是:有一個函數F,使X=F(K,Y),在這里X相當于公開密鑰向量,Y相當于明文。在算法F不公開的情況下,若已知K和X,要還原出Y來,窮盡次數為2n次。
MH背包算法是第一個公鑰密碼系統,有較好的理論價值。但是在實踐過程中,大多數背包方案都已被破解,或者證明存在缺陷,因而失去了實際意義。
2.2 RSA算法
RSA是當前最著名、應用最廣泛的公鑰系統。RSA算法原理:令n=pq, p≠q都是素數, (n)=(p-1)×(q-1)是n的Euler數;根據Euler定理推論,對任意0≤m≤n,mk(p-1)(q-1)+1≡m mod n。選擇e、d,滿足ed=k(n)+1, 即ed≡1 mod(n)d≡e-1 mod(n)。
公鑰: KU={e,n};私鑰:KR={d,n}。
若M為信息:
(1)加密: C=M^e mod n;
(2)解密: M=C^d mod n。
Fermat定理 p是素數,a是整數且不能被p整除,則ap-1≡1 mod p。Euler數(n)定義為小于n且與n互素的正整數個數。
Fermat定理推論 若n=pq,p≠q都是素數,k是任意整數,則對任意0≤m≤n, mk(p-1)(q-1)+1≡m mod n。
RSA算法的安全性在于對一個大數n,沒有有效的方法能夠將其分解,從而在已知n、d的情況下無法獲得e;同樣在已知n、e的情況下無法求得d。所以如果所取n太小,根本不能保障安全性。當前小于1 024位的N已經被證明是不安全的,使用中不要使用小于1 024位的RSA,最好使用2 048位的RSA。一般情況下,可以通過RSAKit、RSATool之類的工具獲得足夠大的N及D、E。
RSA簡潔幽雅,但計算速度較慢。通常加密中并不是直接使用RSA 來對所有信息進行加密的。最常見的情況是隨機產生一個對稱加密密鑰,然后使用對稱加密算法對信息加密,之后用RSA對剛才的加密密鑰進行加密。
2.3 ECC橢圓曲線算法
ECC密鑰算法是利用橢圓曲線y2=x3+ax+b的性質產生的一種公開密鑰算法,是一種相對較新的技術,已經逐漸被人們廣泛應用。利用ECC橢圓曲線進行加密通信的過程如下:
(1)用戶A選定一條橢圓曲線Ep(a,b),并取橢圓曲線上一點作為基點G。
(2)用戶A選擇一個私有密鑰k,并生成公開密鑰K=kG。
(3)用戶A將Ep(a,b)和點K、G傳給用戶B。
(4)用戶B接到信息后,將待傳輸的明文編碼到Ep(a,b)上一點M,并產生一個隨機整數r(r (5)用戶B計算點C1=M+rK和C2=rG。 (6)用戶B將C1、C2傳給用戶A。 (7)用戶A接到信息后,計算C1-kC2,結果就是點M。因為 C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M。再對點M進行解碼就可以得到明文。 在這個加密通信中,如果有一個偷窺者H,他只能看到Ep(a,b)、K、G、C1、C2,而通過K、G求k或通過C2、G求r都是相對困難的。因此,H無法得到A、B間傳送的明文信息。橢圓曲線密碼示意圖如圖3所示。 ECC算法的優點: (1)安全性能更高。ECC與其他幾種公鑰系統相比,其抗攻擊性具有絕對的優勢。 (2)計算量小和處理速度快。ECC遠比RSA、DSA快得多。 (3)存儲空間占用小。這對于加密算法在資源受限環境中(如智能卡等)的應用具有特別重要的意義。 (4)帶寬要求低。使ECC在無線網絡領域具有廣泛的應用前景。 ECC的這些特點使其在某些領域(如PDA、手機、智能卡)的應用將取代RSA,并成為通用的公鑰加密算法。 3 基于OpenPGP的郵件系統設計 電子郵件傳輸的安全標準是讓收件者收到正確內容,同時保證非法人員無法截取信件內容。目前,安全的電子郵件協議是針對三項安全協議要素加以考慮和設計的,其包括加密演算法、郵件內容格式、身份認證機制。 3.1 郵件客戶端流程 郵件客戶端實現程序流程如圖4所示。 郵件客戶端是用戶直接使用的界面,要求具有良好的交互性和使用性。郵件客戶端的設計主要可分為三個方面: ①郵件客戶端程序,主要實現SMTP、POP3和IMAP4 協議,完成一般的郵件收發任務和本地郵件管理任務。②實現OpenPGP提供的數字簽名、報文機密性、報文壓縮以及報文轉換安全性服務。其中數字簽名和報文機密性兩項服務可以省略。③用戶私鑰的存取,實現用戶私鑰的安全存放。其中郵件客戶端程序是整個郵件客戶端的載體,除了能實現郵件的收發等功能外,還要求能導入用戶密鑰,并發送和接收安全電子郵件。 發送郵件時,在客戶端產生的郵件內容:①發送人選擇是否加入數字簽名,以提供他人確認發件人身份的正確性;②將郵件內容進行壓縮,節省加密和發送時間;③選擇是否將郵件加密;④通過Radix—64轉換,將郵件中二進制轉換為ASCII碼。而接收郵件則是完全相反的過程。 3.2 RSA公鑰實現 下面是產生RSA公鑰對的程序: RSA運算主要是模n的求冪運算,著名的平方—和—乘法方法將計算xc(mod n)的模乘法數目縮小到至多為2I。這里的I是指數c的二進制表示比特數。平方—和—乘法算法如圖5所示。 4 結束語 OpenPGP 是在目前最常用的加密軟件PGP的基礎上進一步完善發展起來的一種安全協議標準,是當前最為先進的加密技術。使用 OpenPGP 加密協議標準,特別是電子郵件,可以有效地保證通信安全,從而保證了網上用戶的利益。 電子郵件的安全標準和各種安全核心算法還在不斷演變之中,新的安全協議在不斷充實,更高加密強度的算法已經陸續應用到實際當中。信息安全的矛與盾在相互交織中不斷得到提高。電子郵件的安全也在這個過程中得到了更好的發展和充實。 本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。