摘 要: 介紹PKI系統(tǒng)和智能卡系統(tǒng)的基本原理和安全技術(shù),重點(diǎn)研究PKI安全體系在手機(jī)智能卡中的應(yīng)用。利用存儲(chǔ)在卡中的PKI安全插件,,為手機(jī)卡和SP應(yīng)用之間提供身份認(rèn)證,、數(shù)字簽名等服務(wù)支持,有效確保了手機(jī)智能卡在網(wǎng)絡(luò)數(shù)據(jù)傳輸中的安全性,、完整性,。
關(guān)鍵詞: PKI;智能卡,;SP,;數(shù)字證書;數(shù)字簽名
隨著移動(dòng)技術(shù)的迅速發(fā)展以及手機(jī)卡的一卡多應(yīng)用平臺(tái)的建立,,人們借助手機(jī)這種終端設(shè)備可以隨時(shí)隨地接入網(wǎng)絡(luò)進(jìn)行交易和數(shù)據(jù)交流,,因此用戶的身份認(rèn)證、傳輸數(shù)據(jù)的保密性,、數(shù)據(jù)的完整性及交易的不可抵賴性等變得迫在眉睫。目前對(duì)互聯(lián)網(wǎng)的安全研究已形成一套完整的解決方案,,即廣泛采取的PKI,。而內(nèi)置于手機(jī)的智能卡,屬于內(nèi)嵌式CPU,,具有獨(dú)立的加密計(jì)算能力和一定的存儲(chǔ)空間,。本文介紹了PKI安全體系在手機(jī)智能卡中的應(yīng)用方式和方法,描述了基于PKI安全體系的證書管理,、身份認(rèn)證,、數(shù)字簽名和數(shù)據(jù)加解密。
1 PKI概述
公共密鑰基礎(chǔ)設(shè)施PKI(Public Key Infrastructure)是一種遵循既定標(biāo)準(zhǔn)的密鑰管理平臺(tái),,它能夠?yàn)樗芯W(wǎng)絡(luò)應(yīng)用提供加密和數(shù)字簽名等密碼服務(wù)以及所必須的密鑰和證書管理體系,。在公共密鑰系統(tǒng)中,PKI體系涉及多個(gè)實(shí)體之間的協(xié)作過(guò)程:認(rèn)證機(jī)構(gòu),、注冊(cè)機(jī)構(gòu),、證書庫(kù)、密鑰管理,、應(yīng)用接口和用戶等,。主要基于非對(duì)稱密碼技術(shù),即公開密鑰密碼技術(shù),。
公鑰體制于1976年由W.Diffie和M.Hellman提出,,其最大特點(diǎn)是采用兩個(gè)密鑰將加密和解密分開,一個(gè)公鑰作為加密密鑰,,另一個(gè)私鑰為用戶專有,。用戶要保障專用密鑰的安全,公開密鑰則可以發(fā)布出去。若以公鑰作為加密密鑰,,以用戶私鑰作為解密密鑰,,可實(shí)現(xiàn)多個(gè)用戶加密的信息只能由一個(gè)用戶解讀;反之,,以用戶專有的私鑰作為加密密鑰,,而以公鑰作為解密密鑰,則實(shí)現(xiàn)由一個(gè)用戶加密的信息,,可使多個(gè)用戶解讀,。前者可用于保密通信,后者可用于數(shù)字簽名,。
2 手機(jī)智能卡
智能卡(Smart Card)是IC卡,,相當(dāng)于一個(gè)微型計(jì)算機(jī),具有計(jì)算機(jī)的基本組成部分:CPU(中央處理器),、ROM(只讀存儲(chǔ)器),、RAM(隨機(jī)存儲(chǔ)器)、COS(片內(nèi)操作系統(tǒng))和EEPROM(電可擦除存儲(chǔ)器),。本系統(tǒng)的智能卡是手機(jī)卡,,具有隨機(jī)數(shù)發(fā)生器和加密協(xié)處理器等,可以硬件實(shí)現(xiàn)RSA運(yùn)算,;具有DES和SHA-1等密碼算法,,可以在芯片內(nèi)部產(chǎn)生密鑰對(duì),并能在芯片上完成加解密運(yùn)算,。本系統(tǒng)將用戶的私鑰存放在智能卡存儲(chǔ)器中,,這樣使用密協(xié)處理器運(yùn)算執(zhí)行RSA算法,完成加解密工作,,用戶對(duì)手機(jī)智能卡的操作都是通過(guò)卡內(nèi)的片上操作系統(tǒng)COS實(shí)現(xiàn)的,。同時(shí)卡片還可以保存用戶的公鑰證書和信任SP證書。本系統(tǒng)采用開發(fā)完成的UIM卡,,系統(tǒng)由5個(gè)模塊組成,,如圖1所示。包括底層驅(qū)動(dòng),、通信管理模塊,、命令處理模塊、文件管理和安全模塊,。在此基礎(chǔ)上可以開發(fā)一些上層的應(yīng)用以及卡上虛擬機(jī),、小額支付、電子錢包,、超級(jí)號(hào)簿,、PKI應(yīng)用等功能,。
由于不同廠家所生產(chǎn)的底層芯片不同,要求底層的相應(yīng)驅(qū)動(dòng)程序也不同,,因此所采用的微內(nèi)核結(jié)構(gòu),,通過(guò)提取不同芯片驅(qū)動(dòng)相同部分,實(shí)際應(yīng)用時(shí)只需要將相應(yīng)的底層驅(qū)動(dòng)程序移植,,具有良好的可移植性和可擴(kuò)展性,。通信管理模塊負(fù)責(zé)實(shí)現(xiàn)與外部數(shù)據(jù)進(jìn)行通信,對(duì)I/O輸入緩沖區(qū)中接收到的數(shù)據(jù)采取奇偶校驗(yàn),、累加及分組長(zhǎng)度檢驗(yàn)等手段進(jìn)行正確性判斷,,不進(jìn)行信息內(nèi)容的判斷,接收經(jīng)過(guò)安全管理,、命令處理,、文件管理處理后的信息,并按照標(biāo)準(zhǔn)APDU指令結(jié)構(gòu)要求打包成完整的數(shù)據(jù)幀,,發(fā)送到I/O的輸出緩沖區(qū),;安全管理模塊接受通信管理模塊的調(diào)度,并向通信管理模塊返回處理后的數(shù)據(jù)信息,;將由通信管理模塊接收到的數(shù)據(jù)進(jìn)行安全驗(yàn)證,;不做數(shù)據(jù)內(nèi)容的驗(yàn)證;當(dāng)安全驗(yàn)證不通過(guò)時(shí),,直接向通信管理模塊返回?cái)?shù)據(jù);命令解釋模塊負(fù)責(zé)接受安全管理模塊的調(diào)度,,并向安全管理模塊返回處理后的數(shù)據(jù)信息,,即返回與命令相對(duì)應(yīng)的響應(yīng)代碼,需要作數(shù)據(jù)內(nèi)容上的鑒別,,當(dāng)數(shù)據(jù)內(nèi)容鑒別不通過(guò)時(shí),,直接向通信模塊返回?cái)?shù)據(jù);文件管理模塊主要接受命令管理模塊的調(diào)度,,并執(zhí)行命令,,向命令解釋模塊返回?cái)?shù)據(jù)。
3 基于手機(jī)智能卡的PKI安全體系
PKI安全體系是手機(jī)卡安全模塊的重要部分,,基于目前越來(lái)越普及的手機(jī)應(yīng)用體系上建立的PKI架構(gòu),,擔(dān)負(fù)著確保用戶在使用手機(jī)交易時(shí)信息安全完整和確認(rèn)身份的任務(wù)。智能卡作為數(shù)字存儲(chǔ)介質(zhì),,并且要支持多個(gè)數(shù)字證書組,,通過(guò)運(yùn)營(yíng)商提供管理平臺(tái)進(jìn)行統(tǒng)一管理,讓多個(gè)SP(由網(wǎng)站提供的短信服務(wù)銀行,、企業(yè)等)為其應(yīng)用開展基于PKI體系的身份認(rèn)證,、數(shù)字簽名,、簽名認(rèn)證、數(shù)字加密解密的基礎(chǔ)設(shè)施支持,。系統(tǒng)結(jié)構(gòu)如圖2所示,。初始狀態(tài)下,手機(jī)卡內(nèi)置運(yùn)營(yíng)商的數(shù)字證書,,即在手機(jī)和管理平臺(tái)間建立信任關(guān)系,;然后SP與運(yùn)營(yíng)商建立信任關(guān)系,允許使用運(yùn)營(yíng)商發(fā)布的手機(jī)智能卡開展基于PKI的基礎(chǔ)服務(wù),;當(dāng)終端與SP首次通信時(shí),,SP身份則經(jīng)過(guò)管理平臺(tái)驗(yàn)證,驗(yàn)證通過(guò)即證明智能卡加載了SP證書并且生成該SP的個(gè)人證書/私鑰,,建立了與SP的信任關(guān)系,;最后在SP與手機(jī)卡進(jìn)行通信時(shí),SP提供身份信息給手機(jī)終端進(jìn)行身份驗(yàn)證,,智能卡驗(yàn)證通過(guò)后,,即可進(jìn)行加密解密、數(shù)字簽名等,。
3.1 管理平臺(tái)
管理平臺(tái)在本系統(tǒng)中只是運(yùn)營(yíng)商提供的一個(gè)中間管理模塊,,負(fù)責(zé)接收用戶發(fā)送過(guò)來(lái)的消息和簽名,分別提取消息和簽名信息,,然后從SP數(shù)據(jù)庫(kù)查找有關(guān)信息進(jìn)行身份驗(yàn)證,。當(dāng)驗(yàn)證UIM卡和SP為簽署過(guò)協(xié)議的合法用戶時(shí),發(fā)出證書加載指令,,最后生成消息,,并用管理平臺(tái)的私鑰對(duì)消息進(jìn)行簽名,將消息發(fā)送給用戶,。管理平臺(tái)可以管理SP信息及運(yùn)營(yíng)商的證書和私鑰,。
3.2 數(shù)字證書
在整個(gè)PKI體系中,證書的關(guān)系是最重要的構(gòu)成要素,。因此,,在本系統(tǒng)中手機(jī)智能卡同樣支持多個(gè)SP共享使用,并且是存儲(chǔ)多個(gè)數(shù)字證書的介質(zhì),。證書包括SP證書,、個(gè)人證書以及私鑰,這是用于個(gè)人與SP交互的憑證,,證書存儲(chǔ)在智能卡的文件管理模塊中(安全存儲(chǔ)區(qū)),,而私鑰在卡內(nèi)生成,不能從卡中讀取出來(lái),。SP證書是由證書認(rèn)證中心CA頒發(fā)給SP的數(shù)字證書,,其格式都符合x.509證書V3版本格式,。私鑰是由SP保存,用來(lái)驗(yàn)證SP身份,,SP使用手機(jī)智能卡進(jìn)行加密或者簽名時(shí),,必須首先出示其身份信息,而智能卡驗(yàn)證通過(guò)后才能為SP提供加密或者數(shù)字簽名等功能,;個(gè)人證書/私鑰是指SP或者SP信任的CA頒發(fā)給用戶的證書,,用戶在訪問(wèn)SP前要進(jìn)行身份認(rèn)證和交易簽名等功能。
在此系統(tǒng),,證書的管理只是限于管理員級(jí)別的,,管理員可以加載證書、刪除證書,、更新證書,、查看證書詳細(xì)信息,而用戶只能查看證書的內(nèi)容,。圖3為證書樣本,。當(dāng)查看證書的詳細(xì)信息時(shí),需要輸入用戶口令,,口令校驗(yàn)正確才可以正常查看,。當(dāng)檢測(cè)到UIM卡與終端已連接時(shí),會(huì)自動(dòng)將該UIM卡中的所有證書注冊(cè)到終端中的證書存儲(chǔ)區(qū)中,,這樣手機(jī)可以使用用戶證書進(jìn)行身份驗(yàn)證,。當(dāng)檢測(cè)到有UIM卡拔掉時(shí),會(huì)自動(dòng)將UIM卡中的所有證書從系統(tǒng)的存儲(chǔ)區(qū)中刪除,,在導(dǎo)入導(dǎo)出過(guò)程中,,同樣也需要驗(yàn)證用戶合法性,這樣可提高安全性,。
3.3 數(shù)據(jù)加密解密
加密操作使用接收方的RSA公鑰把消息轉(zhuǎn)化成密文,,而解密操作使用接收方對(duì)應(yīng)的RSA私鑰將密文恢復(fù)成消息,。加密原語(yǔ)在公鑰的控制下從消息代表產(chǎn)生出密文代表,,解密原語(yǔ)在對(duì)應(yīng)私鑰的控制下從密文代表中恢復(fù)消息代表。為了加強(qiáng)密鑰計(jì)算的安全性和數(shù)據(jù)的保密性,,在進(jìn)行運(yùn)算前需要對(duì)原始報(bào)文按照一定格式進(jìn)行編碼,,實(shí)際運(yùn)算是對(duì)編碼后數(shù)據(jù)的運(yùn)算。
3.3.1 數(shù)據(jù)加密具體實(shí)現(xiàn)步驟
(1)首先將接收方的公鑰和待加密消息進(jìn)行計(jì)算,,生成密文,,長(zhǎng)度也通過(guò)計(jì)算而得,是一個(gè)長(zhǎng)度為k的八位組串(k表示和數(shù)模n以八位組為計(jì)量單位的長(zhǎng)度),。
(2)根據(jù)編碼規(guī)則進(jìn)行編碼從而形成編碼消息,。
(3)將編碼消息經(jīng)過(guò)一些轉(zhuǎn)換和對(duì)加密原語(yǔ)的處理形成密文,。
(4)最后將所得信息密文送給接收方,接收方再進(jìn)行解密,。
3.3.2 數(shù)據(jù)解密具體實(shí)現(xiàn)步驟
(1)首先對(duì)發(fā)送方所傳來(lái)的密文進(jìn)行長(zhǎng)度檢查,,如果長(zhǎng)度不符則終止運(yùn)算。
(2)將RSA私鑰和密文代表代入解密原語(yǔ),,經(jīng)過(guò)一系列運(yùn)算得出編碼信息,。
(3)根據(jù)一定的規(guī)則分離編碼信息最后得出所發(fā)送的消息,即數(shù)據(jù)解密和數(shù)據(jù)加密過(guò)程其實(shí)是具有一定運(yùn)算規(guī)則的一個(gè)互逆運(yùn)算過(guò)程,。
3.4 數(shù)字簽名和驗(yàn)證
數(shù)字簽名是建立在公鑰體制基礎(chǔ)上的一種服務(wù),,其主要功能是保證信息傳輸?shù)耐暾浴l(fā)送者的身份認(rèn)證,、防止交易中的抵賴發(fā)生,。數(shù)字簽名運(yùn)算利用簽名者的RSA私鑰產(chǎn)生一個(gè)簽名,而簽名驗(yàn)證運(yùn)算利用簽名者對(duì)應(yīng)的RSA公鑰驗(yàn)證消息上的簽名,,為了驗(yàn)證用這種方案產(chǎn)生的簽名,,驗(yàn)證者必須擁有消息本身。數(shù)字簽名算法是用戶私鑰解密的操作,,驗(yàn)證數(shù)字簽名是用戶公鑰加密的操作,。為了非對(duì)稱密鑰計(jì)算的安全性和數(shù)字簽名的安全性,在進(jìn)行運(yùn)算前需要對(duì)原始報(bào)文按照一定格式進(jìn)行編碼,,實(shí)際運(yùn)算是對(duì)編碼以后數(shù)據(jù)的運(yùn)算,。數(shù)字簽名是加密過(guò)程,數(shù)字簽名驗(yàn)證是解密過(guò)程,。
3.4.1 數(shù)字簽名生成具體過(guò)程步驟
(1)將簽名者的私鑰和待簽名的信息利用RSA算法算出簽名,。
(2)對(duì)消息進(jìn)行EMSA-PKCS1-v1_5(編碼方案)編碼運(yùn)算產(chǎn)生編碼消息EM。
(3)將編碼消息EM轉(zhuǎn)換成一個(gè)整數(shù)消息代表m,,再將SP簽名原語(yǔ)作用于簽名者私鑰和整數(shù)消息代表形成簽名代表s,。
(4)最后將簽名代表s轉(zhuǎn)換成簽名S,并輸出,。
3.4.2 簽名驗(yàn)證具體實(shí)現(xiàn)步驟
(1)檢查由數(shù)字簽名產(chǎn)生的簽名S的長(zhǎng)度,,長(zhǎng)度不符則輸出無(wú)效簽名。
(2)再轉(zhuǎn)換成簽名代表s,,并將驗(yàn)證原語(yǔ)作用于RSA公鑰和簽名代表s產(chǎn)生整數(shù)消息代表m,。
(3)再將產(chǎn)生的消息代表m轉(zhuǎn)換成編碼消息。EM在對(duì)消息M進(jìn)行EMSA-PKCS1-v1_5編碼運(yùn)算,,產(chǎn)生另外一個(gè)編碼消息EM1,。
(4)比較編碼消息EM和編碼消息EM1。相同有效,,不同則無(wú)效,。
本文成功對(duì)手機(jī)智能卡的安全部分進(jìn)行了延伸,,將公鑰基礎(chǔ)設(shè)施PKI安全體系應(yīng)用在手機(jī)智能卡上,提高了安全性,。該卡片已經(jīng)應(yīng)用于生產(chǎn),,在中國(guó)電信3G網(wǎng)絡(luò)安全交易中具有重要的作用。
參考文獻(xiàn)
[1] 曾自強(qiáng),,鄒俊偉.基于PKI-SIM技術(shù)的網(wǎng)上購(gòu)物系統(tǒng). 中國(guó)科技論文在線,,http://www.paper.edu.cn.
[2] 黃成,汪海航.智能卡在WPKI中的應(yīng)用研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,,2007(12):154-160.
[3] 段斌.數(shù)字簽名的智能卡實(shí)現(xiàn)[J].湘潭大學(xué)自然科學(xué)學(xué)報(bào),,2001(3):102-109.
[4] 俞剛.智能卡-PKI私鑰的安全載體[J].計(jì)算機(jī)與數(shù)字工程,2008(11)107-110.
[5] 關(guān)振勝.公約基礎(chǔ)設(shè)施PKI及其應(yīng)用[M].北京:電子工業(yè)出版社,,2008.