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