數(shù)字證書(shū)的存儲(chǔ)和IC卡、USB Key的安全性
文章出處:http://m.dipdnbxp.cn 作者:中國(guó)一卡通網(wǎng) 收編 人氣: 發(fā)表時(shí)間:2011年09月28日
數(shù)字證書(shū)的產(chǎn)生、分發(fā)和存儲(chǔ)
首先,讓我們來(lái)回顧一下數(shù)字證書(shū)產(chǎn)生和分發(fā)的簡(jiǎn)要過(guò)程。一個(gè)網(wǎng)上用戶(hù)怎樣才能得到一張數(shù)字證書(shū)呢?①他先要向RA提出注冊(cè)申請(qǐng)。②用戶(hù)的申請(qǐng)經(jīng)RA審批通過(guò)后,RA向CA提交注冊(cè)建立請(qǐng)求。③CA建立對(duì)于該用戶(hù)的注冊(cè),并將注冊(cè)建立結(jié)果返回給RA。④RA將注冊(cè)結(jié)果通知用戶(hù)。注冊(cè)結(jié)果中包含了兩組數(shù)字,分別稱(chēng)為“參考號(hào)”和“授權(quán)碼”。⑤用戶(hù)方的軟件生成一對(duì)公鑰和私鑰。⑥用戶(hù)向CA提出證書(shū)請(qǐng)求。這個(gè)請(qǐng)求信息中還包含了用戶(hù)的公鑰和用戶(hù)的可甄別名等信息,這些信息在CA創(chuàng)建證書(shū)時(shí)要用到。⑦CA創(chuàng)建該用戶(hù)的數(shù)字證書(shū)。⑧通過(guò)適當(dāng)方式將證書(shū)分發(fā)給用戶(hù)。
CA將證書(shū)分發(fā)給用戶(hù)的途徑有多種。第一種途徑是帶外分發(fā)(Out-of-band Distribution),即離線(xiàn)方式。例如,在北京國(guó)稅的證書(shū)項(xiàng)目中,密鑰對(duì)是由軟件運(yùn)營(yíng)商代替客戶(hù)生成,證書(shū)也是由運(yùn)營(yíng)商代替客戶(hù)從CA下載,然后把私鑰和下載的證書(shū)一起儲(chǔ)存在軟盤(pán)里,再交給用戶(hù)的。這樣做的好處是免去了用戶(hù)上網(wǎng)下載證書(shū)的麻煩。第二種途徑是帶內(nèi)分發(fā)(In-band distribution),即用戶(hù)從網(wǎng)上下載數(shù)字證書(shū)到自己的電腦中。下載時(shí),用戶(hù)要向CA出示“參考號(hào)”和“授權(quán)碼”,以向CA證明自己的身份。這樣做成本較低,但對(duì)使用計(jì)算機(jī)不太熟悉的用戶(hù)來(lái)說(shuō),可能在下載時(shí)會(huì)碰到一些麻煩。除了以上兩種方式外,CA還把證書(shū)集中放置在公共的數(shù)據(jù)庫(kù)中公布,用戶(hù)可以隨用隨查詢(xún)隨調(diào)用。
數(shù)字證書(shū)和私鑰儲(chǔ)存的介質(zhì)有多種,可以存儲(chǔ)在計(jì)算機(jī)硬盤(pán)、軟盤(pán)、智能卡或USB key里。
需要澄清的概念
一、關(guān)于私鑰的唯一性
嚴(yán)格地講,私鑰既然是世上唯一且只由主體本身持有,它就必須由主體的計(jì)算機(jī)程序來(lái)生成。因?yàn)槿绻趧e處生成將會(huì)有被拷貝的機(jī)會(huì)。然而在實(shí)際應(yīng)用上并非如此,出于某些特殊需要(例如,如果只有一份私鑰,單位的加密文件就會(huì)因?yàn)殡x職員工帶走私鑰而無(wú)法解密。)加密用的公/私鑰對(duì)會(huì)要求在可信的第三方儲(chǔ)存其備份。這樣,加密用的私鑰可能并不唯一。然而簽名用的私鑰則必須保持唯一,否則就無(wú)法保證被簽名信息的不可否認(rèn)性。
在生成用戶(hù)的密鑰對(duì)時(shí),用于加密的公/私鑰對(duì)可以由CA、RA產(chǎn)生,也可以在用戶(hù)終端的機(jī)器上用專(zhuān)用的程序(如瀏覽器程序或認(rèn)證軟件)來(lái)產(chǎn)生。用于數(shù)字簽名的密鑰對(duì)原則上只能由用戶(hù)終端的程序自行產(chǎn)生,才能保證私鑰信息的私密性以及通信信息的不可否認(rèn)性。
有人可能會(huì)產(chǎn)生疑問(wèn):在北京國(guó)稅的證書(shū)項(xiàng)目中,加密和簽名的密鑰對(duì)都是由軟件運(yùn)營(yíng)商代替客戶(hù)生成的,這是否破壞了上述的私鑰唯一性原則呢?答案是否定的。這時(shí)候,私鑰的唯一性要依靠法律合同的保證以及操作過(guò)程中相應(yīng)制度的約束,使得不可否認(rèn)性得到支持。出于這種機(jī)制,我們?nèi)匀豢梢哉J(rèn)為,用戶(hù)的簽名私鑰是唯一的。
二、證書(shū),私鑰,到底保護(hù)哪一個(gè)?
我們常常聽(tīng)到有人說(shuō):“保管好你的軟盤(pán),保管好你的KEY,不要讓別人盜用你的證書(shū)。”有些教科書(shū)上也這樣講。應(yīng)該說(shuō),這句話(huà)是有毛病的。數(shù)字證書(shū)可以在網(wǎng)上公開(kāi),并不怕別人盜用和篡改。因?yàn)樽C書(shū)的盜用者在沒(méi)有掌握相應(yīng)的私鑰的情況下,盜用別人的證書(shū)既不能完成加密通信,又不能實(shí)現(xiàn)數(shù)字簽名,沒(méi)有任何實(shí)際用處。而且,由于有CA對(duì)證書(shū)內(nèi)容進(jìn)行了數(shù)字簽名,在網(wǎng)上公開(kāi)的證書(shū)也不怕黑客篡改。我們說(shuō),更該得到保護(hù)的是儲(chǔ)存在介質(zhì)中的私鑰。如果黑客同時(shí)盜走了證書(shū)和私鑰,危險(xiǎn)就會(huì)降臨。
為什么說(shuō)USB key安全性好
不同的存儲(chǔ)介質(zhì),安全性是不同的。如果證書(shū)和私鑰儲(chǔ)存在計(jì)算機(jī)的硬盤(pán)里,計(jì)算機(jī)一旦受到黑客攻擊,(例如被埋置了木馬程序)證書(shū)和私鑰就可能被盜用。
使用軟盤(pán)或存儲(chǔ)型IC卡來(lái)保存證書(shū)和私鑰,安全性要比硬盤(pán)好一些,因?yàn)檫@兩種介質(zhì)僅僅在使用時(shí)才與電腦相連,用完后即被拔下,證書(shū)和私鑰被竊取的可能性有所降低。但是黑客還是有機(jī)會(huì),由于軟盤(pán)和存儲(chǔ)型IC卡不具備計(jì)算能力,在進(jìn)行加密運(yùn)算時(shí),用戶(hù)的私鑰必須被調(diào)出軟盤(pán)或IC卡進(jìn)入外部的電腦,在這個(gè)過(guò)程中就會(huì)造成一定的安全隱患。
使用智能卡(含CPU的IC卡)儲(chǔ)存數(shù)字證書(shū)和私鑰是更為安全的方式。為什么這樣說(shuō)呢?原來(lái)智能卡具有一定的計(jì)算機(jī)的功能,芯片中的CPU就是一臺(tái)小小的計(jì)算機(jī)。
產(chǎn)生公私密鑰對(duì)的程序(指令集)是智能卡生產(chǎn)者燒制在芯片中的ROM中的,密碼算法程序也是燒制在ROM中。公私密鑰對(duì)在智能卡中生成后,公鑰可以導(dǎo)出到卡外,而私鑰則存儲(chǔ)于芯片中的密鑰區(qū),不允許外部訪(fǎng)問(wèn)。
智能卡中密鑰文件存儲(chǔ)在E2PROM之中。對(duì)密鑰文件的讀寫(xiě)和修改都必須由卡內(nèi)的程序調(diào)用。從卡接口的外面,沒(méi)有任何一條命令能夠?qū)γ荑€區(qū)的內(nèi)容進(jìn)行讀出、修改、更新和刪除、。除非設(shè)計(jì)和編寫(xiě)卡操作系統(tǒng)(COS)的人自己在COS上留了后門(mén),只有他才知道如何從外部調(diào)出密鑰區(qū)的內(nèi)容。但我們可以排除黑客與COS設(shè)計(jì)者相勾結(jié)的這種幾率極小的可能性。
在加密和簽名的運(yùn)算過(guò)程中,外部計(jì)算機(jī)中的應(yīng)用軟件使用智能卡API調(diào)用的方式,輸入?yún)?shù)、數(shù)據(jù)和命令,啟動(dòng)智能卡內(nèi)部的數(shù)字簽名運(yùn)算、密碼運(yùn)算等,并獲得返回結(jié)果。由于智能卡內(nèi)部的CPU可以完成這些操作,全過(guò)程中私鑰可以不出智能卡介質(zhì),黑客的攻擊程序沒(méi)有機(jī)會(huì)去截獲私鑰,因此這就比證書(shū)和私鑰放在軟盤(pán)或硬盤(pán)上要安全得多。
從物理上講,對(duì)智能卡芯片中的內(nèi)容作整體拷貝也是幾乎不可能的。雖然聽(tīng)說(shuō)有人能夠從智能卡芯片在操作過(guò)程中發(fā)生的微弱的電磁場(chǎng)變化,或者I/O口上反映出的微弱的電平變化中分析出芯片中的代碼。但現(xiàn)在國(guó)際上對(duì)智能卡生產(chǎn)商的技術(shù)要求很高,要求上述的指標(biāo)要低到不能夠被測(cè)出來(lái)。國(guó)際上能夠生產(chǎn)智能卡的公司只有少數(shù)幾家,他們都采用了種種安全措施,確保智能卡內(nèi)部的數(shù)據(jù)不能用物理方法從外部拷貝。
USB Key和智能卡除了I/O物理接口不一樣以外,內(nèi)部結(jié)構(gòu)和技術(shù)是完全一樣的,其安全性也一樣。只不過(guò)智能卡需要通過(guò)讀卡器接到電腦的串行接口上,而USB Key通過(guò)電腦的通用串行總線(xiàn)(USB)接口直接與電腦相接。另外,USB接口的通信速度要遠(yuǎn)遠(yuǎn)高于串行接口的通信速度。現(xiàn)在出品的電腦已經(jīng)把USB接口作為標(biāo)準(zhǔn)配置,而使用智能卡則需要加配讀卡器。出于以上原因,各家CA都把USB Key作為首選的證書(shū)和私鑰存儲(chǔ)介質(zhì)而加以推廣。美中不足的是目前USB Key的成本還略顯昂貴,各家銀行在推行USB Key介質(zhì)的證書(shū)時(shí),要加收50至80元的成本費(fèi)。
仍需注意的問(wèn)題
這里需要指出的是,有些號(hào)稱(chēng)智能卡的產(chǎn)品實(shí)際上只是不含CPU的存儲(chǔ)型IC卡,它僅僅具有存儲(chǔ)功能。上文已經(jīng)介紹過(guò),存儲(chǔ)型IC卡的安全性與軟盤(pán)相仿,對(duì)于這兩種不同類(lèi)型的IC卡,用戶(hù)需要甄別清楚。
第二個(gè)問(wèn)題是,盡管智能卡在設(shè)計(jì)和生產(chǎn)過(guò)程中,對(duì)安全機(jī)制給以了充分的考慮和保證,然而,由于人為因素,也可能帶來(lái)安全隱患。例如智能卡上提供一個(gè)閃存(flash)隨機(jī)存儲(chǔ)區(qū)域,是供寫(xiě)入一般用戶(hù)數(shù)據(jù)或增加卡片功能的程序之用的。敏感的數(shù)據(jù)和程序不允許寫(xiě)在閃存區(qū),必須寫(xiě)在安全存儲(chǔ)區(qū)。制作智能卡時(shí),安全區(qū)要通過(guò)硬件方法做掩模處理。硬件的掩模處理費(fèi)工費(fèi)時(shí)成本高,一般需要3個(gè)月。有些卡商為了降低成本縮短工期迎合客戶(hù)要求,將應(yīng)該放在安全區(qū)中的敏感數(shù)據(jù)和程序放在閃存區(qū)中,閃存區(qū)里的內(nèi)容是可以從卡片外部進(jìn)行讀寫(xiě)的,這就造成了可能被黑客侵入的安全隱患。這就要求我們對(duì)合作的IC卡廠(chǎng)商的工藝流程也要仔細(xì)審查。
另外,為了防止USB key 不慎丟失而可能被他人盜用,不少證書(shū)應(yīng)用系統(tǒng)在使用過(guò)程中還設(shè)置了口令認(rèn)證機(jī)制。如口令輸入得不對(duì),即使掌握了USB key,也不能登錄進(jìn)入應(yīng)用系統(tǒng)。這種雙因素認(rèn)證機(jī)制可以使USB key更加安全可靠,值得提倡。