陳子迪,龍毅宏
(武漢理工大學(xué)信息工程學(xué)院,湖北 武漢 430070)
IBE(Identity Based Encryption)密碼技術(shù)是一種公鑰加密技術(shù),該密碼技術(shù)避免了數(shù)字證書的使用,提高了數(shù)據(jù)加密的易用性和方便性[1]。在移動(dòng)終端比如手機(jī)上使用公鑰密碼的私鑰包括IBE私鑰時(shí),最重要的一點(diǎn)就是保障用戶私鑰存儲(chǔ)、使用的安全。保障用戶私鑰存儲(chǔ)、使用的安全,通常有兩種方法可采用:一是通過(guò)近場(chǎng)通信外接密碼裝置,如通過(guò)USB外接針對(duì)移動(dòng)終端的USB Key,二是使用移動(dòng)終端如手機(jī)本身自帶內(nèi)置的密碼芯片,用內(nèi)置的密碼芯片來(lái)存儲(chǔ)私鑰以及使用私鑰進(jìn)行密碼運(yùn)算。但是這兩種方法都存在明顯的缺陷,使用外接密碼裝置成本費(fèi)用較高,而且用戶使用起來(lái)有較大的不便;而使用內(nèi)置密碼芯片,現(xiàn)在市面上除了極少部分要求實(shí)現(xiàn)特定密碼功能的手機(jī)外,絕大部分的手機(jī)都不自帶密碼芯片,并且目前不存在針對(duì)IBE密碼運(yùn)算的手機(jī)密碼芯片。在這種情況下,目前最常用的方案是在手機(jī)上使用純軟件的密碼模塊,并將私鑰比如IBE私鑰存儲(chǔ)在手機(jī)的永久存儲(chǔ)介質(zhì)中。當(dāng)手機(jī)應(yīng)用程序需要使用私鑰時(shí),手機(jī)中的密碼模塊再將私鑰導(dǎo)入到內(nèi)存中進(jìn)行密碼運(yùn)算。但是這種純軟件的模式,由于將私鑰存儲(chǔ)在手機(jī)本地內(nèi)存中,存在著比較大的私鑰泄露的風(fēng)險(xiǎn)。比如,攻擊者可以通過(guò)木馬攻擊手機(jī),竊取在手機(jī)永久存儲(chǔ)介質(zhì)中的私鑰[2]。而且,這種純軟件模式在進(jìn)行密碼運(yùn)算時(shí),私鑰是以明文的形式導(dǎo)入到內(nèi)存中使用的,這樣攻擊者可以通過(guò)一定的攻擊方式,竊取用戶存儲(chǔ)在內(nèi)存中的私鑰。對(duì)此,如何在采用純軟件模式的情況下,保證用戶安全無(wú)風(fēng)險(xiǎn)的存儲(chǔ)私鑰以及使用私鑰進(jìn)行密碼運(yùn)算具有很好的實(shí)際應(yīng)用意義。
為了解決在用戶移動(dòng)終端中安全存儲(chǔ)、使用私鑰的問(wèn)題,本文設(shè)計(jì)了一種在iOS移動(dòng)終端上利用秘密共享技術(shù)來(lái)安全存儲(chǔ)、使用IBE私鑰的IBE移動(dòng)密碼系統(tǒng)[3-4]。
基于秘密共享的IBE移動(dòng)密碼系統(tǒng)結(jié)構(gòu)如圖1所示,主要包括iOS移動(dòng)終端,密鑰服務(wù)器,密碼服務(wù)器三部分[5]。

圖1 基于秘密共享的IBE密碼系統(tǒng)結(jié)構(gòu)圖Fig.1 Structure of IBE mobile system based on secret sharing
(1)iOS移動(dòng)終端:用戶使用的iOS終端設(shè)備,其中的IBE密碼模塊負(fù)責(zé)完成IBE私鑰分割、存儲(chǔ)部分私鑰秘密份額、使用秘密份額進(jìn)行密碼運(yùn)算等功能。
(2)密鑰服務(wù)器:其中包括 IBE私鑰生成器(Private Key Generator,PKG),負(fù)責(zé)在線產(chǎn)生、返回IBE私鑰[6-7]。
(3)密碼服務(wù)器:在本系統(tǒng)中有1到n-1個(gè)密碼服務(wù)器,n≥2,用來(lái)存儲(chǔ)部分私鑰秘密份額以及使用私鑰秘密份額進(jìn)行密碼運(yùn)算,并向iOS移動(dòng)終端返回密碼運(yùn)算的結(jié)果。
本文設(shè)計(jì)的IBE移動(dòng)密碼系統(tǒng)同時(shí)支持普通秘密共享方案和門限秘密共享方案,下面分別說(shuō)明。
1.2.1 普通秘密共享方案
普通秘密共享即把IBE私鑰用特定算法分割成n份私鑰秘密份額,iOS移動(dòng)終端保留一份私鑰秘密份額,其余n-1份分發(fā)到n-1個(gè)密碼服務(wù)器[8-9]。當(dāng)應(yīng)用程序需要使用 IBE私鑰進(jìn)行解密運(yùn)算時(shí),iOS移動(dòng)終端中的密碼模塊一方面使用移動(dòng)終端中的私鑰秘密份額進(jìn)行密碼運(yùn)算,另一方面從其他n-1個(gè)密碼服務(wù)器獲得使用相應(yīng)私鑰秘密份額進(jìn)行密碼運(yùn)算的結(jié)果,在獲得所有n份私鑰秘密份額進(jìn)行密碼運(yùn)算的結(jié)果后,移動(dòng)終端中的密碼模塊才能通過(guò)密碼運(yùn)算得到最后的密碼運(yùn)算結(jié)果。少了這n份私鑰秘密份額密碼運(yùn)算結(jié)果中的任意一份,密碼模塊都不能得到最終解密的結(jié)果[10]。
對(duì)IBE私鑰進(jìn)行普通秘密共享或秘密分割,即選取d1,d2,…,dn(秘密份額),使得dID=d1+d2+…+dn,這里 QID是用戶標(biāo)識(shí)映射的橢圓曲線點(diǎn),dID=sQID是用戶標(biāo)識(shí)對(duì)應(yīng)的IBE私鑰,具體可通過(guò)如下方式選取:
任意給定n-1個(gè)整數(shù)r1,r2,…,rn-1,得到d1=r1QID,d2= r2QID,dn-1= rn-1QID,dn=dID-( d1+d2+…+dn-1),其中 d1由移動(dòng)終端保存,d2,…,dn由 n-1個(gè)密碼服務(wù)器保存使用;d1,d2,…,dn可以預(yù)先生成,也可以生成后多次使用超過(guò)一定次數(shù)或時(shí)間后更新。
IBE解密運(yùn)算會(huì)涉及到配對(duì)運(yùn)算e(dID,U),其中U是解密運(yùn)算過(guò)程涉及到的一個(gè)橢圓曲線點(diǎn),針對(duì)此配對(duì)運(yùn)算的過(guò)程如下:
iOS移動(dòng)終端中的密碼模塊和n-1個(gè)密碼服務(wù)器分別使用其秘密份額 d1,d2,…,dn進(jìn)行配對(duì)運(yùn)算 e(d1,U),e(d2,U),…,e(dn,U),然后由移動(dòng)終端中的密碼模塊計(jì)算 e(dID,U)= e(d1,U)* e(d2,U)*…*e(dn,U),并據(jù)此結(jié)果完成最終的解密運(yùn)算。
本系統(tǒng)的普通共享方案如圖2所示:

圖2 普通共享方案圖Fig.2 Scheme of ordinary secret sharing
從以上描述可以看到,除非一個(gè)攻擊者同時(shí)從n個(gè)密碼運(yùn)算系統(tǒng)獲取 n份私鑰秘密份額,否則攻擊者無(wú)法獲得用戶可用的私鑰,想要同時(shí)攻擊n個(gè)密碼運(yùn)算系統(tǒng)獲得 n份私鑰秘密份額是十分困難的,特別是當(dāng)這n個(gè)密碼運(yùn)算系統(tǒng)處于不同位置,屬于不同運(yùn)行者時(shí)。因此,基于本系統(tǒng)的秘鑰共享方案,用戶可以安全的進(jìn)行密碼操作。
1.2.2 門限秘密共享方案
采用普通秘密共享方案時(shí),如果我們把所有的私鑰秘密份額都存儲(chǔ)在同一個(gè)密碼服務(wù)器上,密碼服務(wù)器有可能出現(xiàn)負(fù)載過(guò)重的情況;而存儲(chǔ)在多個(gè)密碼服務(wù)器上時(shí),若是其中某一個(gè)密碼服務(wù)器出現(xiàn)宕機(jī)的情況,那么移動(dòng)終端中的密碼功能程序就不能得到所有n份私鑰秘密份額的密碼運(yùn)算結(jié)果。為了防止這種情況的發(fā)生,本系統(tǒng)還采用了另外一種秘密共享方案:門限秘密共享。
門限秘密共享的基本思想是分發(fā)者通過(guò)秘密多項(xiàng)式將私鑰分割為 n份私鑰秘密份額,并分發(fā)給 n個(gè)不同的密碼運(yùn)算系統(tǒng),其中任意不少于t(t 本系統(tǒng)的門限共享方案采用(2,3)門限方案時(shí)的工作原理如圖3所示,即把私鑰分割成三份,其中一份保存在iOS移動(dòng)終端,另外兩份分別發(fā)送給密 碼服務(wù)器1和密碼服務(wù)器2保存,移動(dòng)終端的密碼程序在獲得在本地密碼運(yùn)算結(jié)果以及兩個(gè)密碼服務(wù)器中上任意一個(gè)的密碼運(yùn)算結(jié)果后,均可得到最終的密碼運(yùn)算結(jié)果(圖3中獲得的是密碼服務(wù)器1的運(yùn)算結(jié)果)。 圖3 (2,3)門限共享方案示意圖Fig.3 Scheme of threshold secret sharing with (2,3) iOS移動(dòng)終端中的IBE密碼模塊用Objective-C開發(fā),提供IBE解密、IBE私鑰分割、存儲(chǔ)私鑰秘密份額、使用私鑰秘密份額進(jìn)行密碼運(yùn)算等功能。IBE密碼模塊采用sqlite數(shù)據(jù)庫(kù)(直接在iOS移動(dòng)終端自帶庫(kù)文件中查詢導(dǎo)入即可)來(lái)存儲(chǔ)分割后的IBE私鑰的秘密份額。 調(diào)用移動(dòng)終端解密功能時(shí),系統(tǒng)首先會(huì)從本地sqlite數(shù)據(jù)庫(kù)查詢是否有當(dāng)前可用私鑰秘密份額,如果沒(méi)有,則向密鑰服務(wù)器申請(qǐng)IBE私鑰,并在由IBE私鑰運(yùn)算得到真正解密秘鑰時(shí)將 IBE私鑰進(jìn)行分割,一部分私鑰秘密份額存儲(chǔ)到 sqlite數(shù)據(jù)庫(kù)中,其余部分分發(fā)到不同的密碼服務(wù)器上保存;如果數(shù)據(jù)庫(kù)中有可用私鑰秘密份額,則用當(dāng)前可用私鑰秘密份額進(jìn)行密碼運(yùn)算,并向密碼服務(wù)器發(fā)送請(qǐng)求,將移動(dòng)終端密碼運(yùn)算結(jié)果和密碼服務(wù)器密碼運(yùn)算結(jié)果相乘得到真正的解密秘鑰。本系統(tǒng)采用的配對(duì)算法是Weil配對(duì)算法[6]。 iOS移動(dòng)終端與密碼服務(wù)器、密鑰服務(wù)器的交互采用自定義的協(xié)議,包括在SM2數(shù)字簽名協(xié)同生成過(guò)程中對(duì)移動(dòng)終端用戶進(jìn)行身份鑒別,并采用SSL安全傳輸協(xié)議對(duì)傳輸數(shù)據(jù)進(jìn)行安全保護(hù)。 本系統(tǒng)中的密碼服務(wù)器運(yùn)行在Windows平臺(tái),用C語(yǔ)言開發(fā),面向移動(dòng)終端提供服務(wù),其功能主要包括存儲(chǔ)私鑰秘密份額以及使用私鑰秘密份額進(jìn)行密碼運(yùn)算的功能。密碼服務(wù)器采用 MySQL數(shù)據(jù)庫(kù)存儲(chǔ)私鑰秘密份額,進(jìn)行密碼運(yùn)算時(shí)主要用到了PBC(Pairing based cryptography)庫(kù)。 密碼服務(wù)器接收到iOS移動(dòng)終端的密碼運(yùn)算結(jié)果申請(qǐng)后,首先會(huì)判斷申請(qǐng)的類別,是請(qǐng)求獲得普通秘密共享時(shí)的密碼運(yùn)算結(jié)果,還是請(qǐng)求獲得門限秘密共享時(shí)的密碼運(yùn)算結(jié)果,然后到本地?cái)?shù)據(jù)庫(kù)表中查詢是否有相應(yīng)的私鑰秘密份額。如果有對(duì)應(yīng)的私鑰秘密份額,則會(huì)在本地根據(jù)私鑰秘密份額進(jìn)行相應(yīng)的密碼運(yùn)算,并將密碼運(yùn)算的結(jié)果返回給 iOS移動(dòng)終端。 本系統(tǒng)中的密鑰服務(wù)器運(yùn)行在Windows平臺(tái),用Java和CC++技術(shù)開發(fā),主要提供在線生成、返回IBE私鑰的功能。當(dāng)密鑰服務(wù)器接收到iOS移動(dòng)終端的私鑰申請(qǐng)請(qǐng)求后,首先會(huì)對(duì)移動(dòng)終端進(jìn)行身份認(rèn)證,在驗(yàn)證通過(guò)后,密鑰服務(wù)器會(huì)立刻產(chǎn)生并返回IBE私鑰給iOS移動(dòng)終端。本系統(tǒng)采用D.Boneh和 M.Franklin的方案[6]將用戶身份標(biāo)識(shí)映射到橢圓曲線中的點(diǎn)QID,然后用主密鑰s計(jì)算得到用戶標(biāo)識(shí)對(duì)應(yīng)的IBE私鑰dID=sQID。 經(jīng)測(cè)試,無(wú)論是普通秘密共享還是門限秘密共享,當(dāng)iOS移動(dòng)終端中的應(yīng)用程序需要調(diào)用用戶的IBE私鑰對(duì)數(shù)據(jù)進(jìn)行解密操作時(shí),iOS移動(dòng)終端中的密碼模塊以及密碼服務(wù)器能通過(guò)使用各自的私鑰秘密份額通過(guò)協(xié)同計(jì)算,得到正確的解密結(jié)果。 本文針對(duì)當(dāng)前用戶在手機(jī)上安全存儲(chǔ)、使用私鑰的問(wèn)題,提出了一種基于秘密共享的IBE移動(dòng)密碼系統(tǒng)方案,并且分別采用了普通秘密共享和門限秘密共享兩種方案對(duì)私鑰進(jìn)行分割保護(hù)。提出的方案具有以下優(yōu)勢(shì): (1)用戶手機(jī)上存儲(chǔ)的只是多份私鑰秘密份額中的一份,就算攻擊者攻擊手機(jī)也只能獲得多份私鑰秘密份額中的一份,提高了用戶在手機(jī)上存儲(chǔ)、使用私鑰的安全性。 (2)采用門限方案時(shí)可以有效避免密碼服務(wù)器出現(xiàn)負(fù)載過(guò)重的情況,并且如果某一個(gè)或多個(gè)服務(wù)器出現(xiàn)宕機(jī),移動(dòng)終端中的IBE密碼程序仍能通過(guò)剩下的滿足(t,n)門限條件的私鑰秘密份額得到密碼運(yùn)算結(jié)果。 通常對(duì)移動(dòng)終端本地保存的IBE私鑰份額可以采用PIN(Personal Identification Number)碼保護(hù),若采用指紋等生物特征對(duì)私鑰進(jìn)行保護(hù),則可以進(jìn)一步提交方案的安全性。 [1] H. Tanaka. A realizationscheme for the identity-based cryptosystem[C]. Proceedings of Advances in Cryptology Crypto’87. [S.1.]: Springer-Verlag, 1987: 341-349. [2] 黃存東. 關(guān)于計(jì)算機(jī)網(wǎng)絡(luò)信息安全問(wèn)題的技術(shù)研究[J]. 軟件, 2013, 34(1): 140-141. [3] 關(guān)東升. iOS開發(fā)指南[M]. 人民郵電出版社, 2015. [4] 宋深, 劉雪冬, 龍毅宏. 一種基于IBE加密技術(shù)的移動(dòng)文件共享系統(tǒng)[J]. 軟件, 2017, 38(3): 22-26. [5] 陳偉, 卜慶凱. iOS系統(tǒng)中多線程技術(shù)的研究[J]. 電腦知識(shí)與技術(shù), 2017, 13(3X): 78-80. [6] D. Boneh and M. Franklin. Identity-based encryption from the Weil pairing[A], In: Killian J.LNCS 2139[C]. Berlin:Springer-Verlag, 2001: 213-229. [7] Phaneendra H. D. Identity-Based Cryptography and Comparison with traditional Public key Encryption: A Survey[J].International Journal of Computer Science & Information Technolo, 2014. [8] 龐遼軍, 裴慶祺, 李慧賢, 等. 秘密共享技術(shù)及其應(yīng)用[J].通信學(xué)報(bào), 2017(2). [9] Han Y H. Research on Development of Application Program Based on IOS Architecture[J]. Journal of Xian University,2017. [10] 任方, 王倩. 門限秘密共享及其典型應(yīng)用[J]. 現(xiàn)代電子技術(shù), 2015(13): 71-75. [11] Huang Wentao, Langberg M, KliewerJ, et al. Communication Efficient Secret Sharing[J]. IEEE Transactions on Information Theory, 2015, 62(12): 7195-7206. [12] 莫進(jìn)俠. 基于Shamir秘密共享的安全方案應(yīng)用研究[D]. 湖南大學(xué), 2015. [13] 榮輝桂, 莫進(jìn)俠, 常炳國(guó), 等. 基于Shamir秘密共享的密鑰分發(fā)與恢復(fù)算法[J]. 通信學(xué)報(bào), 2015(3): 60-69.
2 系統(tǒng)實(shí)施及結(jié)果
2.1 iOS移動(dòng)終端的IBE密碼功能實(shí)施
2.2 密碼服務(wù)器密碼功能實(shí)施
2.3 密鑰服務(wù)器密碼功能實(shí)施
2.4 實(shí)施結(jié)果
3 結(jié)論