隨著網(wǎng)絡(luò)的發(fā)展,網(wǎng)上交易、網(wǎng)上銀行等商務(wù)應(yīng)用越來越廣泛,對于交易雙方而言,我們靠什么確認(rèn)對方的身份呢?當(dāng)我們發(fā)送電子郵件、文件時(shí),怎樣才能知道數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中沒有被篡改呢?這些問題,我們都可以通過數(shù)字證書來解決。
何謂數(shù)字證書?
數(shù)字證書是一個(gè)經(jīng)證書認(rèn)證中心(CA)數(shù)字簽名的包含公開密鑰擁有者信息以及公開密鑰的數(shù)據(jù)文件。認(rèn)證中心的數(shù)字簽名可以確保證書信息的真實(shí)性,用戶公鑰信息可以保證數(shù)字信息傳輸?shù)耐暾裕脩舻臄?shù)字簽名可以保證數(shù)字信息的不可否認(rèn)性。
數(shù)字證書是各類終端實(shí)體和最終用戶在網(wǎng)上進(jìn)行信息交流及商務(wù)活動(dòng)的身份證明,在電子交易的各個(gè)環(huán)節(jié),交易的各方都需驗(yàn)證對方數(shù)字證書的有效性,從而解決相互間的信任問題。
認(rèn)證中心(CA)作為權(quán)威的、可信賴的、公正的第三方機(jī)構(gòu),專門負(fù)責(zé)為各種認(rèn)證需求提供數(shù)字證書服務(wù)。認(rèn)證中心頒發(fā)的數(shù)字證書均遵循X.509 V3標(biāo)準(zhǔn)。X.509標(biāo)準(zhǔn)在編排公共密鑰密碼格式方面已被廣為接受。X.509證書已應(yīng)用于許多網(wǎng)絡(luò)安全,其中包括IPSec(IP安全)、SSL、SET、S/MIME。
數(shù)字證書的功能主要包括:身份驗(yàn)證、信息傳輸安全、信息保密性(存儲(chǔ)與交易)、信息完整性、交易的不可否認(rèn)性。
數(shù)字證書內(nèi)容及格式
數(shù)字證書包括證書申請者的信息和發(fā)放證書CA的信息,認(rèn)證中心所頒發(fā)的數(shù)字證書均遵循X.509 V3標(biāo)準(zhǔn)。數(shù)字證書的格式在ITU標(biāo)準(zhǔn)和X.509 V3里定義。根據(jù)這項(xiàng)標(biāo)準(zhǔn),數(shù)字證書包括證書申請者的信息和發(fā)放證書CA的信息。X.509數(shù)字證書內(nèi)容:
指南.chm::/res/00061re.jpg)
證書各域的含義:
- Version
- 證書版本號,不同版本的證書格式不同
- Serial Number
- 序列號,同一機(jī)構(gòu)簽發(fā)的證書序列號唯一
- Signature Algorithm
- 簽名算法,包括必要的參數(shù)
- Issuer
- 身份驗(yàn)證機(jī)構(gòu)的標(biāo)識(shí)信息
- Validity
- 證書有效期
- Subject
- 證書主題信息
- Public key
- 證書持有人的公鑰信息
證書內(nèi)容由以下兩部分組成:
(1)申請者的信息
第一部分申請者的信息,數(shù)字證書里的數(shù)據(jù)包括以下信息:
- 版本信息,用來與X.509的將來版本兼容;
- 證書序列號,每一個(gè)由CA發(fā)行的證書必須有一個(gè)唯一的序列號;
- 所使用的簽名算法;
- 發(fā)行證書CA的名稱;
- 證書的有效期限;
- 證書主題名稱;
- 被證明的公鑰信息,包括公鑰算法、公鑰的位字符串表示;
- 包含額外信息的特別擴(kuò)展。
(2)發(fā)放證書CA的信息
第二部分CA的信息,數(shù)字證書包含發(fā)行證書CA的簽名和用來生成數(shù)字簽名的簽名算法。任何人收到證書后都能使用簽名算法來驗(yàn)證證書是否是由CA的簽名密鑰簽發(fā)的。
數(shù)字證書的工作流程
以銀行為例,如果客戶A想和銀行B通信,他首先必須從數(shù)據(jù)庫中取得銀行B的證書,然后對它進(jìn)行驗(yàn)證。如果他們使用相同的CA(證書認(rèn)證中心),事情就很簡單,客戶A只需驗(yàn)證銀行B證書上CA的簽名。如果他們使用不同的CA,問題就較為復(fù)雜??蛻鬉必須從CA的樹形結(jié)構(gòu)底部開始,從底層CA往上層CA查詢,一直追蹤到同一個(gè)CA為止,找出共同的信任CA。目前個(gè)人獲取網(wǎng)上銀行安全證書的途徑都是通過銀行申請,所以雙方肯定采用同一證書認(rèn)證中心頒發(fā)的證書。
現(xiàn)在假設(shè)客戶A向銀行B傳送數(shù)字信息,為了保證信息傳送的真實(shí)性、完整性和不可否認(rèn)性,需要對要傳送的信息進(jìn)行數(shù)字加密和數(shù)字簽名,其傳送過程如下:
- 客戶A準(zhǔn)備好要傳送的數(shù)字信息(明文)。
- 客戶A對數(shù)字信息進(jìn)行哈希(hash)運(yùn)算,得到一個(gè)信息摘要。
- 客戶A用自己的私鑰(SK)對信息摘要進(jìn)行加密得到客戶A的數(shù)字簽名,并將其附在數(shù)字信息上。
- 客戶A隨機(jī)產(chǎn)生一個(gè)加密密鑰(DES密鑰),并用此密鑰對要發(fā)送的信息進(jìn)行加密,形成密文。
- 客戶A用銀行B的公鑰(PK)對剛才隨機(jī)產(chǎn)生的加密密鑰進(jìn)行加密,將加密后的DES密鑰連同密文一起傳送給銀行B。
- 銀行B收到客戶A傳送過來的密文和加過密的DES密鑰,先用自己的私鑰(SK)對加密的DES密鑰進(jìn)行解密,得到DES密鑰。
- 銀行B然后用DES密鑰對收到的密文進(jìn)行解密,得到明文的數(shù)字信息,然后將DES密鑰拋棄(即DES密鑰作廢)。
- 銀行B用客戶A的公鑰(PK)對客戶A的數(shù)字簽名進(jìn)行解密,得到信息摘要。銀行B用相同的hash算法對收到的明文再進(jìn)行一次hash運(yùn)算,得到一個(gè)新的信息摘要。
- 銀行B將收到的信息摘要和新產(chǎn)生的信息摘要進(jìn)行比較,如果一致,說明收到的信息沒有被修改過。
指南.chm::/res/00062re.jpg)
指南.chm::/res/00063re.jpg)
證書存放方式
數(shù)字證書可以存放在計(jì)算機(jī)的硬盤、隨身軟盤、IC卡或CUP卡中。
用戶數(shù)字證書在計(jì)算機(jī)硬盤中存放時(shí),使用方便,但存放證書的PC機(jī)必須受到安全保護(hù),否則一旦被攻擊,證書就有可能被盜用。
使用軟盤保存證書,被竊取的可能性有所降低,但軟盤容易損壞。一旦損壞,證書將無法使用。
IC卡中存放證書是一種較為廣泛的使用方式。因?yàn)镮C卡的成本較低,本身不易被損壞。但使用IC卡加密時(shí),用戶的密鑰會(huì)出卡,造成安全隱患。
使用CUP卡存放證書時(shí),用戶的證書等安全信息被加密存放在CUP卡中,無法被盜用。在進(jìn)行加密的過程中,密鑰可以不出卡,安全級別最高,但相對來說,成本較高。