相關(guān)概念
- PKI:Public Key Infrastructure,公鑰基礎(chǔ)設(shè)施。
- CA:Certificate Of Authority,認(rèn)證中心。
- 數(shù)字證書:提供了一種發(fā)布公鑰的簡便途徑;
一個(gè)數(shù)字證書包括:擁有者身份信息、公鑰、CA數(shù)字簽名、有效期等其他信息。 - 數(shù)字簽名:用來確認(rèn)信息發(fā)送者的身份,保證信息的完整性和抗否認(rèn)性。
數(shù)字簽名
- 數(shù)字簽名的生成:對于要傳輸?shù)南⒃氖褂孟⒄惴ǎ∕D5、SHA)生成消息摘要,發(fā)送方使用自己的私鑰對摘要進(jìn)行加密,生成數(shù)字簽名。
- 數(shù)字簽名的驗(yàn)證:數(shù)字簽名同消息一通傳輸給接收方,接收方對簽名使用發(fā)送方的公鑰解密還原摘要,并對得到的原文進(jìn)行hash計(jì)算出消息摘要,比對兩份消息摘要是否相同,可以保證消息的完整性和抗否認(rèn)性。
用發(fā)送發(fā)私鑰生成數(shù)字簽名、用發(fā)送方公鑰解密,可以證明消息確實(shí)是由公鑰擁有者發(fā)出的。
兩份摘要的比對結(jié)果,可以證明消息在傳輸?shù)倪^程中是否被改動(dòng)。
數(shù)字證書
數(shù)字簽名要發(fā)揮作用,首先需要接收方獲取發(fā)送方的公鑰。如何證明獲取的公鑰確實(shí)是發(fā)送方的公鑰而不是假冒的呢?數(shù)字證書提供了一種發(fā)布公鑰的簡便方法。
簡單地來說,把上面的原文換成公鑰、身份信息、有效期等其他信息,就是數(shù)字證書的生成和驗(yàn)證過程。
- 數(shù)字證書的生成:CA收到數(shù)字證書申請并認(rèn)證申請者的真實(shí)身份后,把申請者的公鑰、身份信息、數(shù)字證書的有效期等信息作為消息原文,進(jìn)行hash生成摘要,并用CA的私鑰加密進(jìn)行簽名;數(shù)字簽名與證書擁有者的公鑰、身份信息、證書有效期等其他信息共同組成數(shù)字證書。
- 數(shù)字證書的驗(yàn)證:數(shù)字證書生成后,經(jīng)歷圖2中3、4、5的傳輸過程,來到接收方。接收方收到消息證書后,使用CA公鑰對數(shù)字簽名解密生成消息摘要,對證書內(nèi)容進(jìn)行hash生成摘要,兩份摘要進(jìn)行比對可證明證書內(nèi)容的完整性與真實(shí)性。
使用CA私鑰進(jìn)行簽名和解密,可以證明證書確實(shí)是由CA發(fā)布的;
兩份摘要的對比結(jié)果,可以證明證書內(nèi)容是否在傳輸過程中被改動(dòng);
如果消息原文中的公鑰和身份信息是CA的,則是CA自簽名的過程。
通信過程
數(shù)字證書提供了一種發(fā)布公鑰的簡便途徑,大家通過向CA申請認(rèn)證發(fā)布自己的公鑰,通過向CA驗(yàn)證來確認(rèn)自己獲得了別人的公鑰。下圖展示了通信雙方互相獲得公鑰以后的通信過程。
- 發(fā)送方對要傳輸消息原文進(jìn)行hash,生成消息摘要,用發(fā)送方的私鑰生成數(shù)字簽名;
- 隨機(jī)生成對稱秘鑰,對原文加密,生成密文;
- 用接收方公鑰加密對稱秘鑰;
- 將加密后的對稱秘鑰、數(shù)字簽名與密文一通發(fā)送;
- 接收方收到后,用自己的私鑰解密對稱秘鑰;
- 用對稱秘鑰解密密文,得到原文;
- 對原文hash得到摘要,用發(fā)送方的公鑰解密簽名得到摘要,對方兩份摘要。
非對稱加密安全性高,但計(jì)算量大效率低,因此使用對稱秘鑰對通信的主要內(nèi)容進(jìn)行加密;對稱秘鑰每次使用隨機(jī)生成,用完即丟棄,降低風(fēng)險(xiǎn);
用接收方公鑰加密對稱秘鑰,保證了只有接收方才能對密文進(jìn)行解密;
用發(fā)送發(fā)私鑰進(jìn)行簽名,使得接收方可以驗(yàn)證消息的發(fā)送方和消息是否被修改過,保證了信息的完整性和抗否認(rèn)性。
PKI/CA架構(gòu)
完整的PKI/CA系統(tǒng)如下部分:
- 安全服務(wù)器:安全服務(wù)器面向普通用戶,用于提供證書申請、瀏覽、證書撤銷列表、證書下載等安全服務(wù);用戶需要首先得到安全服務(wù)器的證書(該證書由CA頒發(fā));
- 注冊機(jī)構(gòu)RA:在CA體系結(jié)構(gòu)中起承上啟下的作用,一方面向CA轉(zhuǎn)發(fā)安全服務(wù)器傳輸過來的證書申請請求,另一方面向LDAP服務(wù)器和安全服務(wù)器轉(zhuǎn)發(fā)CA頒發(fā)的數(shù)字證書和證書撤銷列表(CRL)。
- LDAP服務(wù)器:Lightweight Directory Access Protocol(輕量目錄訪問協(xié)議),提供目錄瀏覽服務(wù),負(fù)責(zé)將注冊機(jī)構(gòu)服務(wù)器RA傳輸過來的用戶信息以及數(shù)字證書加入到服務(wù)器上。用戶通過訪問LDAP服務(wù)器就能夠得到其他用戶的數(shù)字證書。
- CA服務(wù)器:整個(gè)證書機(jī)構(gòu)的核心,負(fù)責(zé)證書的簽發(fā)。CA首先 產(chǎn)生自身的私鑰和公鑰,然后生成數(shù)字證書,并且將數(shù)字正常傳輸給安全服務(wù)器。CA還負(fù)責(zé)為安全服務(wù)器、RA服務(wù)器生成數(shù)字證書。
- 數(shù)據(jù)庫服務(wù)器:CA中的核心部分,用于CA中數(shù)據(jù)(如密鑰和用戶信息等)、日志、統(tǒng)計(jì)信息的存儲(chǔ)和管理。
證書申請過程
- 用戶申請:用戶獲取CA的數(shù)字證書(根證書),與安全服務(wù)器建立連接;生成自己的公鑰和私鑰,將公鑰和自己的身份信息提交給安全服務(wù)器,安全服務(wù)器將用戶的申請信息傳送給RA服務(wù)器。
- RA審核:RA收到用戶的申請,用戶向RA證明自己的身份,RA進(jìn)行核對。如果RA同意用戶申請證書的請求,則對證書申請信息做數(shù)字簽名;否則拒絕用戶的申請。
- CA發(fā)行證書:RA將用戶申請和RA簽名傳輸給CA,CA對RA數(shù)字簽名做認(rèn)證,如果驗(yàn)證通過,則同意用戶請求,頒發(fā)證書,然后將證書輸出。如果驗(yàn)證不通過,則拒絕證書申請。
- RA轉(zhuǎn)發(fā)證書:RA從CA得到新的證書,首先將證書輸出到LDAP服務(wù)器以提供目錄瀏覽,再通知用戶證書發(fā)行成功,告知證書序列號(hào),到指定的網(wǎng)址去下載證書。
- 用戶證書獲取:用戶使用證書序列號(hào)去指定網(wǎng)址下載自己的數(shù)字證書,只有持有與申請時(shí)提交的公鑰配對的私鑰才能下載成功。
證書撤銷過程
- 用戶申請:用戶向RA發(fā)送一封簽名加密郵件,申請撤銷證書。
- RA審核:注冊機(jī)構(gòu)同意證書撤銷,并對申請簽名。
- CA更新CRL:CA驗(yàn)證證書撤銷請求的RA簽名,如果正確,則同意申請,并更新CRL,并輸出。
- RA轉(zhuǎn)發(fā)CRL:注冊中心收到CRL,以多種方式將CRL公布(包括LDAP服務(wù)器)。
- 用戶告知:用戶訪問LDAP服務(wù)器,下載或?yàn)g覽CRL。
證書的管理
認(rèn)證中心CA負(fù)責(zé)維護(hù)和發(fā)布證書廢除列表CRL(certificate revocation lists,又稱為證書黑名單)。
當(dāng)一個(gè)證書,特別是其中的公鑰因?yàn)槠渌驘o效時(shí)(不是因?yàn)榈狡冢珻RL提供了一種通知用戶和其他應(yīng)用的中心管理方式。CA系統(tǒng)生成CRL以后,放到LDAP服務(wù)器中或Web服務(wù)器的合適位置,供用戶查詢或下載。