PKI技術專題:2、PKI的理論基礎
 什么是PKI?從字面上去理解,PKI就是利用公共密鑰理論和技術建立的提供安全服務的基礎設施。所謂基礎設施,就是在某個大環境下普遍適用的系統和準則。在現實生活中有一個大家熟悉的例子,這就是電力系統,它提供的服務是電能,我們可以把電燈、電視、電吹風機等看成是電力系統這個基礎設施的一些應用。公共密鑰基礎設施(PKI)則是希望從技術上解決網上身份認證、電子信息的完整性和不可抵賴性等安全問題,為網絡應用(如瀏覽器、電子郵件、電子交易)提供可靠的安全服務。
  從理論上講,只要PKI具有友好的接口,那么普通用戶就只需要知道如何接入PKI就能獲得安全服務,完全無需理解PKI如何實現安全服務。正如電燈只要接通電源就能亮一樣,它并不需要知道電力系統是如何將電能傳送過來的。值得注意的是,雖然都是服務,但安全服務和電能服務在表現形式上卻有很大的差別:通過電燈的亮與不亮,我們可以感覺到電能服務的存在與否;而安全服務卻是隱藏在其他應用的后面,用戶無法直觀地感覺到它是否有效或起作用。因此,雖然并不需要精通密碼理論,但如果我們理解了PKI為什么能夠解決網上的安全問題?它的基本理論基礎是什么?就會更有利于推動PKI的應用和發展。
  保密性與密碼體制
  信息的保密性是信息安全的一個重要方面。保密的目的是防止第三方通過監聽、非法截取等手段非法獲取機密信息,而加密是保護機要信息的一個重要手段。所謂加密,就是用數學方法重新組織數據,使得除了合法的接受者外,任何其他人要想恢復原先的消息(將原先的消息稱作明文 )或讀懂變化后的消息(將變化后的消息稱為密文 )都是非常困難的。通常,我們把將密文恢復成明文的過程稱作解密。加密和解密操作分別是在一組密鑰控制下進行的,它們被分別稱為加密密鑰和解密密鑰。
  根據加密密鑰和解密密鑰在性質上的差異,可以將密碼體制分為兩類:單密鑰體制和公鑰體制。加密密鑰和解密密鑰相同或本質相同的體制被稱為單密鑰加密體制。這種加密算法運算速度快,適合于加解密傳輸中的信息。其中最為著名的單密鑰算法是美國的數據加密標準(DES算法)。該標準由IBM公司研制,美國商業部所屬的國家標準局(NBS)于1977年正式批準并作為美國聯邦信息處理的標準。雖然美國已經宣布這種算法不再作為美國加密的標準,但這種算法已經廣泛應用于世界各地(包括中國)的商業中。單密鑰密碼體制的缺陷是通信雙方在進行通信前必須通過一個安全信道事先交換密鑰,這在網絡應用中是不現實的,而且單密鑰體制無法保證信息的不可抵賴性。
  公鑰體制的提出則從技術上解決了這些問題。所謂公鑰體制就是加密密鑰和解密密鑰不相同,并且從其中一個很難推斷出另一個。這樣,我們可以將其中一個密鑰公開(稱為公鑰),另一個密鑰由用戶自己保存(稱為私鑰)。假如某人(Bob)想和另一個人(Alice)通信,只要Bob能找到Alice的公鑰,用Alice的公鑰將信息加密,傳遞給Alice,然后Alice用自己的私鑰解密信息。這樣即使加密后的信息誤傳遞給他人,或被他人截獲,也不用擔心信息的泄露。同樣的道理,Alice若想向Bob證實信息是自己發送的,那么他只需將信息用自己的私鑰加密,然后傳遞給Bob,Bob用Alice的公鑰解密信息,若信息能夠解開,則證明該信息是Alice發送的,而且事后這條信息也是不可抵賴的,因為只有Alice才能加密信息,其他人(包括Bob)是無法偽造這條信息的,盡管他們能讀懂這條信息。
  從上面假想的通信模式可以看出,公鑰密碼體制可以使通信雙方無須事先交換密鑰就可以建立安全通信。公鑰密碼體制可用于身份認證、數字簽名和密鑰交換。公鑰體制一般是建立在某些已知的數學難題之上,是計算機復雜性理論發展的必然結果。最為典型的代表是RSA公鑰密碼體制。
  RSA算法是Rivest、Shamir 和 Adleman 于1977年提出的第一個完善的公鑰密碼體制,其安全性是基于分解大整數的困難性。在RSA體制中使用了這樣一個基本事實:到目前為止,無法找到一個有效的算法來分解兩個大素數之積。RSA算法的描述如下:
  公開密鑰:n=pq (p、q分別為兩個互異的大素數,p、q 必須保密)
  e與(p-1)(q-1) 互素
  私有密鑰:d=e-1 (mod (p-1)(q-1) )
  加密:c= me (mod n ), 其中m為明文,c為密文。
  解密: m= cd (mod n )
  利用目前已經掌握的知識和理論,分解2048bit的大整數已經超過了64位計算機的運算能力,因此在目前和可預見的將來,它是足夠安全的。
  可認證性與數字簽名
  信息的可認證性是信息安全的另一個重要方面。認證的目的有兩個:一個是驗證信息發送者的真實性,確認他沒有被冒充;另一個是驗證信息的完整性,確認被驗證的信息在傳遞或存儲過程中沒有被篡改、重組或延遲。認證是防止敵手對系統進行主動攻擊(如偽造、篡改信息等)的一種重要技術。認證技術主要包括數字簽名、身份識別和信息的完整性校驗等技術。在認證體制中,通常存在一個可信的第三方,用于仲裁、頒發證書和管理某些機密信息。
  在日常生活中,經常需要人們簽署各種信件和文書,傳統上都是用手寫簽名或印鑒。簽名的作用是認證、核準和生效。隨著信息時代的來臨,人們希望對越來越多的電子文件進行迅速的、遠距離的簽名,這就是數字簽名。數字簽名與傳統的手寫簽名有很大的差別。首先,手寫簽名是被簽署文件的物理組成部分,而數字簽名不是;其次,手寫簽名不易拷貝,而數字簽名正好相反,因此必須阻止一個數字簽名的重復使用;第三,手寫簽名是通過與一個真實的手寫簽名比較來進行驗證,而數字簽名是通過一個公開的驗證算法來驗證。數字簽名的簽名算法至少要滿足以下條件:簽名者事后不能否認;接受者只能驗證;任何人不能偽造(包括接受者);雙方對簽名的真偽發生爭執時,有第三方進行仲裁。目前數字簽名技術的研究主要是基于公鑰密碼體制。比較著名的數字簽名算法包括RSA數字簽名算法和DSA。
  信息的完整性和認證是指信息的接受者能夠檢驗收到的消息是否真實。檢驗的內容包括:消息的來源、消息的內容是否被篡改、消息是否被重放。消息的完整性經常通過雜湊技術來實現。雜湊函數可以把任意長度的輸入串變化成固定長度的輸出串,它是一種單向函數,根據輸出結果很難求出輸入值,并且可以破壞原有數據的數據結構。因此,雜湊函數不僅應用于信息的完整性,而且經常應用于數字簽名。
  從上面的分析看,公鑰密碼技術可以提供網絡中信息安全的全面解決方案。采用公鑰技術的關鍵是如何確認某個人真正的公鑰。在PKI 中,為了確保用戶及他所持有密鑰的正確性,公共密鑰系統需要一個值得信賴而且獨立的第三方機構充當認證中心(CA),來確認聲稱擁有公共密鑰的人的真正身份。要確認一個公共密鑰,CA首先制作一張數字證書,它包含用戶身份的部分信息及用戶所持有的公共密鑰,然后CA利用本身的密鑰為數字證書加上數字簽名。CA 目前采用的標準是X.509 V3。
  任何想發放自己公鑰的用戶,可以去認證中心(CA)申請自己的證書。CA中心在認證該人的真實身份后,頒發包含用戶公鑰的數字證書,它包含用戶的真實身份,并證實用戶公鑰的有效期和作用范圍(用于交換密鑰還是數字簽名)。其他用戶只要能驗證證書是真實的,并且信任頒發證書的CA,就可以確認用戶的公鑰。