肖 娟,伍 娟
(1.武漢工業(yè)學(xué)院電氣與電子工程學(xué)院,湖北武漢 430023;2.武漢天喻信息產(chǎn)業(yè)股份有限公司研發(fā)中心,湖北武漢 430223)
隨著智能卡技術(shù)的發(fā)展,智能卡目前已在通信、交通管理、企事業(yè)內(nèi)部管理、稅務(wù)、公用事業(yè)收費(fèi)、金融領(lǐng)域等方面得到了廣泛的應(yīng)用。為了防止數(shù)據(jù)在傳輸?shù)倪^程中被非法竊聽、截取、篡改或破壞,智能卡操作系統(tǒng)使用密碼算法來(lái)保證數(shù)據(jù)的安全[1]。目前密碼算法主要分為兩類:對(duì)稱密鑰算法(DES、AES等),非對(duì)稱密鑰算法(RSA、ECC等)。對(duì)稱密鑰算法的計(jì)算過程非常簡(jiǎn)單,并且密鑰的長(zhǎng)度不夠長(zhǎng),很容易被攻破[2]。為了數(shù)據(jù)安全的需要,智能卡操作系統(tǒng)需要支持功能更強(qiáng)大的非對(duì)稱密鑰算法。RSA算法數(shù)學(xué)原理簡(jiǎn)單、在工程應(yīng)用中比較易于實(shí)現(xiàn),但它的單位安全強(qiáng)度相對(duì)較低。橢圓曲線加密(ECC)算法的數(shù)學(xué)理論非常深?yuàn)W和復(fù)雜,在工程應(yīng)用中比較難于實(shí)現(xiàn),但它的單位安全強(qiáng)度相對(duì)較高。ECC算法的單位安全強(qiáng)度高于RSA算法,也就是說,要達(dá)到同樣的安全強(qiáng)度,ECC算法所需的密鑰長(zhǎng)度遠(yuǎn)比RSA算法低[2]。這就有效地解決了為了提高安全強(qiáng)度必須增加密鑰長(zhǎng)度所帶來(lái)的工程實(shí)現(xiàn)難度的問題。我國(guó)基于國(guó)家商業(yè)密碼安全等原因,國(guó)家密碼管理局于2010年12月17日發(fā)布了SM2橢圓曲線公鑰密碼算法(屬于ECC算法的一種),并下達(dá)通知:自2011年7月1日起,投入運(yùn)行并使用公鑰密碼的信息系統(tǒng),應(yīng)使用SM2橢圓曲線密碼算法。本文以同方THD86芯片為硬件平臺(tái),實(shí)現(xiàn)了支持SM2算法的智能卡系統(tǒng)以滿足商用的需要,并對(duì)SM2算法和RSA算法在智能卡系統(tǒng)上的性能進(jìn)行了比較和分析。
SM2算法是一種新的國(guó)產(chǎn)非對(duì)稱算法,全稱為SM2橢圓曲線公鑰密碼算法。SM2算法采用的橢圓曲線方程為:y2=x3+ax+b,在SM2算法標(biāo)準(zhǔn)中,通過指定a、b系數(shù),確定了唯一的標(biāo)準(zhǔn)曲線[3]。
SM2算法作為公鑰算法,可以完成簽名、密鑰交換以及加密應(yīng)用。SM2算法標(biāo)準(zhǔn)確定了標(biāo)準(zhǔn)過程:簽名、驗(yàn)簽計(jì)算過程;加密、解密計(jì)算過程;密鑰協(xié)商計(jì)算過程。
相對(duì)于RSA算法,SM2算法具有以下優(yōu)點(diǎn):①安全性高,192位的SM2密碼強(qiáng)度已經(jīng)比RSA 2048位密碼強(qiáng)度要高。②存儲(chǔ)空間小,SM2算法的密碼一般使用192-256位,RSA算法密碼一般需要使用1024-4096位。③簽名速度快,SM2在私鑰運(yùn)算上,速度遠(yuǎn)比RSA快得多。④國(guó)產(chǎn)算法,無(wú)國(guó)外可利用的后門[4]。
COS的全稱是Chip Operating System(片內(nèi)操作系統(tǒng)),通常指帶有CPU智能卡的操作系統(tǒng)[5]。安全機(jī)制的實(shí)現(xiàn)是COS安全體系中極為重要的一個(gè)方面。沒有安全機(jī)制,COS就無(wú)法進(jìn)行任何操作。COS的安全機(jī)制實(shí)現(xiàn)如下三個(gè)功能:簽名與驗(yàn)證,數(shù)據(jù)加密與解密,文件訪問的安全控制[6]。SM2算法既可以對(duì)數(shù)據(jù)進(jìn)行簽名和驗(yàn)證,又可以對(duì)數(shù)據(jù)進(jìn)行加密解密,其不易攻破的特點(diǎn)更好的保證了COS的安全性[7]。
本次設(shè)計(jì)的COS所運(yùn)行的硬件平臺(tái)為同方THD86芯片,THD86芯片是一種帶有CPU的智能卡芯片,該芯片是國(guó)內(nèi)首款32位雙界面CPU卡芯片,具有獨(dú)立運(yùn)算、加解密和存儲(chǔ)能力,其安全性較磁條卡有相當(dāng)大的提高,具備防護(hù)各種芯片攻擊的能力,以防止個(gè)人或機(jī)構(gòu)對(duì)金融IC智能卡的攻擊和破解[8]。
THD86芯片與一般的CPU智能卡不同的是,該芯片具有豐富的密碼學(xué)算法資源,通過COS對(duì)這些資源的合理調(diào)用,可以實(shí)現(xiàn)對(duì)外來(lái)數(shù)據(jù)的安全性處理,THD86芯片是COS的硬件載體,COS是THD86芯片的軟件基礎(chǔ)。
同方THD86芯片為COS的硬件平臺(tái),芯片的結(jié)構(gòu)框圖如圖1所示。
圖1 同方THD86芯片功能框圖
2.2.1 CPU
為系統(tǒng)提供運(yùn)行、計(jì)算以及和各個(gè)模塊進(jìn)行通信,型號(hào)為32位ARM Coretex-M0。
CPU工作時(shí)鐘頻率可配置為1—16 MHz。
2.2.2 存儲(chǔ)器
ROM:存儲(chǔ)卡片操作系統(tǒng),56 kB。
FLASH:提供boot啟動(dòng)程序、內(nèi)核映像、文件系統(tǒng),256-400 kB。
EEPROM:用戶存儲(chǔ)器,16 -32 kB。
RAM:CPU數(shù)據(jù)區(qū)10 kB,加密緩沖區(qū)(加密協(xié)處理器數(shù)據(jù),也作CPU數(shù)據(jù)區(qū))24 kB,RF通信區(qū)256 B。
2.2.3 通用加密協(xié)處理器CCP
支持RSA/ECC/SM2等非對(duì)稱算法。
2.2.4 通信接口
非接觸界面,兼容IOS/IEC 14443 Type-A和Type-B。
接觸界面,兼容IOS/IEC 7815-3協(xié)議。
THD86的協(xié)處理器CCP提供了SM2接口API函數(shù),包括 SM2密鑰對(duì)的生成、SM2加/解密、SM2簽名/驗(yàn)證和SM2密鑰協(xié)商。API函數(shù)的功能如下:
ccpSM2KeyPairGen:生成密鑰對(duì)。
ccpSM2Encrypt:SM2加密函數(shù),加密后密文長(zhǎng)度=明文長(zhǎng)度+96字節(jié)。
ccpSM2Decrypt:SM2解密函數(shù),解密后明文長(zhǎng)度=密文長(zhǎng)度-96字節(jié)。
ccpSetUserMessageData:根據(jù)用戶的ID和待簽名的message數(shù)據(jù)計(jì)算簽名的摘要E,長(zhǎng)度為32字節(jié)。
ccpSM2Sign:根據(jù)摘要E和私鑰產(chǎn)生message數(shù)據(jù)的64字節(jié)簽名,成功返回0,不成功返回1。
ccpSM2Verify:根據(jù)摘要 E和公鑰來(lái)驗(yàn)證message數(shù)據(jù)的簽名是否正確,正確返回0,不正確返回1。
COS直接運(yùn)行于THD86芯片平臺(tái)上,是智能卡內(nèi)軟件的核心部分,也是卡片所支持全部應(yīng)用的基礎(chǔ)。COS的主要任務(wù)是從智能卡傳出和傳入數(shù)據(jù)、控制命令的執(zhí)行、管理文件、維護(hù)內(nèi)存空間、管理和執(zhí)行加密算法、執(zhí)行應(yīng)用代碼[6]。因此可以將COS系統(tǒng)的軟件設(shè)計(jì)由上而下可以分為3個(gè)部分:應(yīng)用層(API)、內(nèi)核層(kernel)和硬件抽象層(HAL),系統(tǒng)的結(jié)構(gòu)圖如圖2所示。
圖2 COS軟件設(shè)計(jì)框圖
應(yīng)用層是應(yīng)用程序(如Applet應(yīng)用,web應(yīng)用等)與COS的接口,是COS軟件設(shè)計(jì)的關(guān)鍵部分,該層提供了PKI應(yīng)用的API接口函數(shù),部分函數(shù)原型及功能如表1所示。當(dāng)上層的應(yīng)用程序調(diào)用API接口函數(shù)時(shí),API函數(shù)通過內(nèi)核層調(diào)用HAL層的CCP的庫(kù)函數(shù)實(shí)現(xiàn)加/解密和簽名等運(yùn)算。圖3和圖4為函數(shù)SM2Calc和SM2Sign的流程圖。
表1 COS提供的SM2算法API接口函數(shù)
圖3 應(yīng)用層SM2Calc加解密函數(shù)流程
內(nèi)核層kernel負(fù)責(zé)組織、管理和維護(hù)智能卡內(nèi)存儲(chǔ)的所有的數(shù)據(jù),同時(shí)對(duì)智能卡內(nèi)數(shù)據(jù)提供安全保障,內(nèi)核層負(fù)責(zé)解析API應(yīng)用層與硬件抽象層之間交互的信息指令,并作相應(yīng)的處理。
硬件抽象層HAL是THD86的協(xié)處理器CCP的算法接口的庫(kù)函數(shù)定義(2.3函數(shù)的庫(kù)文件),供kernel層調(diào)用,例如SM2公私密鑰對(duì)的產(chǎn)生、SM2簽名功能、SM2驗(yàn)證功能、SM2加密功能、SM2解密功能、SM2密鑰交換功能等。
通過通信接口在COS中下載了一個(gè)Applet應(yīng)用并安裝成功,用來(lái)測(cè)試SM2算法的加密、解密、簽名和驗(yàn)簽,分為以下幾個(gè)步驟。
圖4 應(yīng)用層SM2Sign簽名函數(shù)流程圖
步驟一:生成 SM2密鑰對(duì),64字節(jié)公鑰sm2pubkey,32 字節(jié)私鑰 sm2prikey。
步驟二:用公鑰對(duì)明文Message進(jìn)行了SM2加密,得到長(zhǎng)度為128字節(jié)密文Crypto。
步驟三:用私鑰對(duì)密文Crypto進(jìn)行解密,得到長(zhǎng)度為32字節(jié)明文 MessageAfter Decrypt,與明文Message相同。
步驟四:用公鑰和用戶ID(usID)將Message轉(zhuǎn)換為長(zhǎng)度為32字節(jié)的數(shù)據(jù)E。
步驟五:用私鑰對(duì) E進(jìn)行簽名運(yùn)算,得到Message的簽名。
步驟六:用公鑰對(duì)Message的簽名的簽名進(jìn)行驗(yàn)證,返回簽名正確。
實(shí)驗(yàn)數(shù)據(jù)表明,該COS系統(tǒng)支持的SM2算法在加密、解密、簽名、驗(yàn)簽的計(jì)算結(jié)果正確,符合商用的標(biāo)準(zhǔn),以上步驟的具體數(shù)據(jù)如表2所示。
表2 SM2算法加/解密和簽名結(jié)果
本文還在THD86芯片上對(duì)SM2算法和RSA算法的性能進(jìn)行了測(cè)試,測(cè)試的通信模式采用接觸式,工作頻率為系統(tǒng)時(shí)鐘16 M、協(xié)處理器32 M,實(shí)驗(yàn)結(jié)果見表3。
表3 SM2和RSA算法的性能比較
運(yùn)行的數(shù)據(jù)表明SM2算法在存儲(chǔ)空間和簽名加密上較RSA算法有很大的優(yōu)勢(shì)。SM2算法比RSA算法簽名速度快,驗(yàn)簽速度比RSA算法慢,SM2算法加密速度比RSA算法快,但解密速度比RSA算法慢。表3中可以看出:SM2算法的密鑰長(zhǎng)度為256位,遠(yuǎn)遠(yuǎn)小于RSA算法的1024位,說明SM2算法需要的存儲(chǔ)空間遠(yuǎn)遠(yuǎn)小于RSA算法。
本文以同方THD86為硬件平臺(tái),在COS中實(shí)現(xiàn)了SM2算法,并對(duì)SM2算法相對(duì)與RSA的優(yōu)勢(shì)進(jìn)行了證明。通過多個(gè)APPLET應(yīng)用的測(cè)試,COS系統(tǒng)能正確對(duì)輸入數(shù)據(jù)進(jìn)行SM2加密和解密,以及簽名和驗(yàn)簽,能滿足商用的要求。SM2算法效率高、破解難度大,隨著信息安全發(fā)展,國(guó)家密碼管理局已經(jīng)指定SM2算法取代RSA算法,在今后的應(yīng)用中會(huì)有更大的發(fā)展空間。
[1]王振.用SM2算法芯片實(shí)現(xiàn)嵌入式系統(tǒng)的安全設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012(4):75-76.
[2]胡振宇,蔣建春.密碼學(xué)基礎(chǔ)與安全應(yīng)用[M].北京:北京郵電大學(xué)出版社,2008:33-36.
[3]國(guó)家密碼管理局.SM2橢圓曲線公鑰密碼算法[EB/OL].(2010 -12 -22).http://www.oscca.gov.cn/UpFile/2010122214822692.pdf.
[4]天卓軟件.關(guān)于SM2橢圓曲線密碼算法[EB/OL].(2012 - 08 - 17).http://www.gztzsoft.com/fangan.asp?id=14.
[5]韋小剛,黃宜彬,楊維永.一種基于ISO/IEC7816的COS的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(3):230 -231.
[6]郭鴻志,李代平.智能卡芯片操作系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(19):4186-4189.
[7]LaiJyu-Yuan, Huang Chih-Tsun. A highly efficient cipher processor for dual-field elliptic curve cryptography[J].IEEE Trans.on Circuits and Systems-Ⅱ:Express Briefs,2009,56(5):394 -398.
[8]同方微電子.同方微電子3S理念護(hù)航金融IC卡[EB/OL].(2011 - 11 - 09).http://www.tsinghuaic. com/article/article. asp? id =483177&bid=8572.