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