摘 要: 介紹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ū);數(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安全體系的證書(shū)管理、身份認(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ù)以及所必須的密鑰和證書(shū)管理體系。在公共密鑰系統(tǒng)中,PKI體系涉及多個(gè)實(shí)體之間的協(xié)作過(guò)程:認(rèn)證機(jī)構(gòu)、注冊(cè)機(jī)構(gòu)、證書(shū)庫(kù)、密鑰管理、應(yīng)用接口和用戶等。主要基于非對(duì)稱(chēng)密碼技術(shù),即公開(kāi)密鑰密碼技術(shù)。
公鑰體制于1976年由W.Diffie和M.Hellman提出,其最大特點(diǎn)是采用兩個(gè)密鑰將加密和解密分開(kāi),一個(gè)公鑰作為加密密鑰,另一個(gè)私鑰為用戶專(zhuān)有。用戶要保障專(zhuān)用密鑰的安全,公開(kāi)密鑰則可以發(fā)布出去。若以公鑰作為加密密鑰,以用戶私鑰作為解密密鑰,可實(shí)現(xiàn)多個(gè)用戶加密的信息只能由一個(gè)用戶解讀;反之,以用戶專(zhuān)有的私鑰作為加密密鑰,而以公鑰作為解密密鑰,則實(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í)卡片還可以保存用戶的公鑰證書(shū)和信任SP證書(shū)。本系統(tǒng)采用開(kāi)發(fā)完成的UIM卡,系統(tǒng)由5個(gè)模塊組成,如圖1所示。包括底層驅(qū)動(dòng)、通信管理模塊、命令處理模塊、文件管理和安全模塊。在此基礎(chǔ)上可以開(kāi)發(fā)一些上層的應(yīng)用以及卡上虛擬機(jī)、小額支付、電子錢(qián)包、超級(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ù)字證書(shū)組,通過(guò)運(yùn)營(yíng)商提供管理平臺(tái)進(jìn)行統(tǒng)一管理,讓多個(gè)SP(由網(wǎng)站提供的短信服務(wù)銀行、企業(yè)等)為其應(yīng)用開(kāi)展基于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ù)字證書(shū),即在手機(jī)和管理平臺(tái)間建立信任關(guān)系;然后SP與運(yùn)營(yíng)商建立信任關(guān)系,允許使用運(yùn)營(yíng)商發(fā)布的手機(jī)智能卡開(kāi)展基于PKI的基礎(chǔ)服務(wù);當(dāng)終端與SP首次通信時(shí),SP身份則經(jīng)過(guò)管理平臺(tái)驗(yàn)證,驗(yàn)證通過(guò)即證明智能卡加載了SP證書(shū)并且生成該SP的個(gè)人證書(shū)/私鑰,建立了與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ā)出證書(shū)加載指令,最后生成消息,并用管理平臺(tái)的私鑰對(duì)消息進(jìn)行簽名,將消息發(fā)送給用戶。管理平臺(tái)可以管理SP信息及運(yùn)營(yíng)商的證書(shū)和私鑰。
3.2 數(shù)字證書(shū)
在整個(gè)PKI體系中,證書(shū)的關(guān)系是最重要的構(gòu)成要素。因此,在本系統(tǒng)中手機(jī)智能卡同樣支持多個(gè)SP共享使用,并且是存儲(chǔ)多個(gè)數(shù)字證書(shū)的介質(zhì)。證書(shū)包括SP證書(shū)、個(gè)人證書(shū)以及私鑰,這是用于個(gè)人與SP交互的憑證,證書(shū)存儲(chǔ)在智能卡的文件管理模塊中(安全存儲(chǔ)區(qū)),而私鑰在卡內(nèi)生成,不能從卡中讀取出來(lái)。SP證書(shū)是由證書(shū)認(rèn)證中心CA頒發(fā)給SP的數(shù)字證書(shū),其格式都符合x(chóng).509證書(shū)V3版本格式。私鑰是由SP保存,用來(lái)驗(yàn)證SP身份,SP使用手機(jī)智能卡進(jìn)行加密或者簽名時(shí),必須首先出示其身份信息,而智能卡驗(yàn)證通過(guò)后才能為SP提供加密或者數(shù)字簽名等功能;個(gè)人證書(shū)/私鑰是指SP或者SP信任的CA頒發(fā)給用戶的證書(shū),用戶在訪問(wèn)SP前要進(jìn)行身份認(rèn)證和交易簽名等功能。
在此系統(tǒng),證書(shū)的管理只是限于管理員級(jí)別的,管理員可以加載證書(shū)、刪除證書(shū)、更新證書(shū)、查看證書(shū)詳細(xì)信息,而用戶只能查看證書(shū)的內(nèi)容。圖3為證書(shū)樣本。當(dāng)查看證書(shū)的詳細(xì)信息時(shí),需要輸入用戶口令,口令校驗(yàn)正確才可以正常查看。當(dāng)檢測(cè)到UIM卡與終端已連接時(shí),會(huì)自動(dòng)將該UIM卡中的所有證書(shū)注冊(cè)到終端中的證書(shū)存儲(chǔ)區(qū)中,這樣手機(jī)可以使用用戶證書(shū)進(jìn)行身份驗(yàn)證。當(dāng)檢測(cè)到有UIM卡拔掉時(shí),會(huì)自動(dòng)將UIM卡中的所有證書(shū)從系統(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ì)稱(chēng)密鑰計(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.