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