蘇簪鈾,馬振華,王志洋
(1.國(guó)網(wǎng)思極神往位置服務(wù)(北京)有限公司,福建 廈門 350200;2.國(guó)網(wǎng)寧夏電力有限公司石嘴山供電公司,寧夏 石嘴山 753000)
隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展和智能手機(jī)的大量普及,越來(lái)越多的傳統(tǒng)業(yè)務(wù)遷移到移動(dòng)終端上。移動(dòng)終端作為開放的輕量級(jí)設(shè)備,在使用過(guò)程中所面臨的安全威脅更為嚴(yán)峻。因此,如何保證在移動(dòng)終端上進(jìn)行安全的身份認(rèn)證和數(shù)據(jù)傳輸成為移動(dòng)應(yīng)用的關(guān)鍵。
國(guó)際上通用的RSA、DES/3DES、MD5、SHA1等安全算法,隨著計(jì)算能力的提升也存在被破譯的風(fēng)險(xiǎn)。相較于其他公鑰密碼體制,橢圓曲線密碼算法(ECC)是一種基于橢圓曲線的公鑰密碼算法,其數(shù)學(xué)基礎(chǔ)是基于橢圓曲線的離散對(duì)數(shù)問(wèn)題,相較于基于模運(yùn)算的RSA算法而言,ECC算法的求解更為困難,安全性能更高,同時(shí)具有密鑰長(zhǎng)度更短、計(jì)算量更小、處理速度更快、帶寬要求更低等優(yōu)勢(shì),更適用于資源受限的移動(dòng)設(shè)備。我國(guó)密碼管理部門2010年已發(fā)布了以ECC算法為基礎(chǔ)的SM2橢圓曲線公鑰密碼算法[1],該算法已被國(guó)內(nèi)外學(xué)者廣泛應(yīng)用[2-3]。為了解決移動(dòng)終端丟失或被劫持導(dǎo)致簽名密鑰泄露等安全隱患問(wèn)題,國(guó)內(nèi)外學(xué)者提出了基于門限理論的協(xié)同簽名算法[4-6],文獻(xiàn)[7-10]基于門限簽名方案,對(duì)SM2簽名算法進(jìn)行門限化,驗(yàn)證了完整的安全性和實(shí)用性證明。
本文基于前人提出的多方協(xié)同簽名協(xié)議基礎(chǔ)上,提出一種適用于移動(dòng)終端場(chǎng)景的協(xié)同簽名實(shí)現(xiàn)方案,并應(yīng)用于電網(wǎng)領(lǐng)域的移動(dòng)GⅠS 數(shù)據(jù)安全防護(hù),以解決電網(wǎng)移動(dòng)應(yīng)用終端用戶身份認(rèn)證和電網(wǎng)矢量切片加密傳輸?shù)陌踩珕?wèn)題。
數(shù)字簽名技術(shù)是互聯(lián)網(wǎng)信息安全機(jī)制中非常重要的一種信息加密技術(shù),廣泛應(yīng)用于電子商務(wù)、電子政務(wù)、信息通信等領(lǐng)域。
數(shù)字簽名算法一般采用非對(duì)稱密鑰體制來(lái)實(shí)現(xiàn),常見的數(shù)字簽名算法有RSA、DSA、ECDSA、SM2等算法,不同算法的密鑰強(qiáng)度和安全性與其數(shù)學(xué)原理有關(guān),RSA算法是基于大數(shù)分解問(wèn)題,DSA算法是基于整數(shù)有限域離散對(duì)數(shù)難題,安全性DSA 與RSA 相當(dāng),而ECDSA、SM2 算法是基于橢圓曲線離散對(duì)數(shù)問(wèn)題,從數(shù)學(xué)基礎(chǔ)原理上決定了比RSA算法更具安全性。
SM2 數(shù)字簽名算法是我國(guó)自主研制的基于橢圓曲線公鑰密碼體系的商用密碼算法。SM2算法的橢圓曲線系統(tǒng)參數(shù)定義為:E(FΡ)為有限素?cái)?shù)域FΡ上滿足y2=x3+ax+b,a,b∈FΡ且 (4a3+27b2)modp≠ 0的橢圓曲線,G=(xG,yG)是E(FΡ)G上階為n的基點(diǎn)。算法的詳細(xì)定義及簽名驗(yàn)簽計(jì)算過(guò)程可參考文獻(xiàn)[1]。
在數(shù)字簽名中,除了算法安全外,更重要的是密鑰的存儲(chǔ)安全,傳統(tǒng)做法是將密鑰存儲(chǔ)于U盾中,存在丟失、被盜等風(fēng)險(xiǎn),難以應(yīng)用到移動(dòng)終端上。在移動(dòng)終端場(chǎng)景中更多是基于協(xié)同簽名的方案。本文選取的是基于SM2的兩方協(xié)同簽名算法,假定協(xié)同簽名參與方分別為A 和B,協(xié)同簽名的形式化描述為:由參與方A、B 各自計(jì)算私鑰分量dA、dB,并計(jì)算出各自公鑰PA、PB,然后合成計(jì)算出協(xié)同公鑰p,參與雙方分別持有私鑰,假定待簽名消息為M,根據(jù)SM2 算法原理特性交互協(xié)同計(jì)算出協(xié)同簽名值σ=(r,s),簽名驗(yàn)簽階段與標(biāo)準(zhǔn)的SM數(shù)字簽名驗(yàn)簽過(guò)程一致。
基于協(xié)同簽名的電網(wǎng)移動(dòng)GⅠS 簽名系統(tǒng)的核心思路是將SM2密鑰進(jìn)行分布式構(gòu)建,并通過(guò)分段存儲(chǔ)、協(xié)同運(yùn)算來(lái)完成簽名驗(yàn)簽、加密解密等密碼服務(wù),即移動(dòng)端、服務(wù)端各自生成私鑰分量,任何一端在任何時(shí)間均無(wú)完整的SM2密鑰,須要根據(jù)協(xié)同協(xié)議進(jìn)行聯(lián)合計(jì)算才能獲取到完整密鑰,從而大大提升密鑰管理的安全性。
整個(gè)系統(tǒng)包括移動(dòng)端的電網(wǎng)移動(dòng)GⅠS 和服務(wù)端的電網(wǎng)GⅠS 服務(wù)器、協(xié)同簽名服務(wù)器以及安全網(wǎng)關(guān)等核心組成部分,總體架構(gòu)如圖1所示。
圖1 總體架構(gòu)圖
充分考慮到電網(wǎng)應(yīng)用系統(tǒng)的可靠性、安全性和可擴(kuò)展性需求,在技術(shù)選型上,采用組件化、微服務(wù)化的分層架構(gòu),其中服務(wù)端的協(xié)同簽名核心服務(wù)和移動(dòng)端的安全密碼模塊采用C++語(yǔ)言進(jìn)行實(shí)現(xiàn)。
基于協(xié)同簽名的電網(wǎng)移動(dòng)GⅠS 簽名系統(tǒng)的核心功能在于協(xié)同算法實(shí)現(xiàn)和交互上,包括協(xié)同密鑰、協(xié)同簽名計(jì)算以及身份認(rèn)證環(huán)節(jié),故將核心模塊劃分為密鑰生成模塊、協(xié)同簽名模塊、身份認(rèn)證模塊。
2.2.1 密鑰生成模塊
協(xié)同密鑰生成由移動(dòng)端發(fā)起,安全密碼模塊隨機(jī)生成私鑰分量d1并計(jì)算出對(duì)應(yīng)公鑰p1,發(fā)送給服務(wù)端協(xié)同簽名服務(wù),服務(wù)端隨機(jī)生成密鑰分量d2,聯(lián)合移動(dòng)端公鑰進(jìn)行協(xié)同運(yùn)算得出協(xié)同公鑰p,然后利用協(xié)同公鑰及終端用戶信息為該移動(dòng)端簽發(fā)SM2數(shù)字證書。具體流程及偽代碼如下圖2所示。
圖2 協(xié)同密鑰生成流程圖
2.2.2 協(xié)同簽名模塊
協(xié)同簽名同樣是移動(dòng)端發(fā)起,移動(dòng)端安全密碼模塊根據(jù)密鑰分量計(jì)算對(duì)待簽名消息M做Hash計(jì)算和部分簽名運(yùn)算,將部分簽名和待簽名信息及Hash值作為參數(shù)提交給服務(wù)端;服務(wù)端根據(jù)自身的密鑰分量,聯(lián)合移動(dòng)端的部分簽名進(jìn)行復(fù)雜的協(xié)同運(yùn)算得到另一部分簽名信息;最后合成輸出協(xié)同簽名值,該簽名值可利用協(xié)同公鑰對(duì)協(xié)同簽名值進(jìn)行標(biāo)準(zhǔn)的SM2 驗(yàn)簽。具體運(yùn)算流程及偽代碼如下圖3 所示。
圖3 協(xié)同簽名生成流程圖
2.2.3 身份認(rèn)證模塊
移動(dòng)終端的身份認(rèn)證模塊依賴于密鑰生成模塊輸出的協(xié)同公鑰所簽發(fā)的SM2數(shù)字證書,簽發(fā)請(qǐng)求時(shí)綁定了移動(dòng)終端的唯一標(biāo)識(shí)、App 包名、用戶手機(jī)號(hào)、企業(yè)組織信息等信息。移動(dòng)客戶端的用戶激活、證書簽發(fā)及變更須要通過(guò)短信進(jìn)行驗(yàn)證并設(shè)置證書PⅠN 碼,驗(yàn)證完成后客戶端每次啟動(dòng)App 輸入PⅠN 碼進(jìn)行校驗(yàn),最后進(jìn)行數(shù)字證書與終端、應(yīng)用的匹配校驗(yàn),具體交互流程及偽代碼如圖4所示。
圖4 身份認(rèn)證流程圖
本文實(shí)現(xiàn)的基于SM2算法的協(xié)同簽名協(xié)議原理已經(jīng)過(guò)形式化證明[1],從原理上可以保證協(xié)議的安全性。兩方協(xié)同簽名的密鑰分量分別存儲(chǔ)于移動(dòng)端和服務(wù)端,其中服務(wù)端的私鑰分量存儲(chǔ)于配備PCⅠ-E加密卡的協(xié)同簽名服務(wù)器中,由于加密卡特性服務(wù)端的私鑰分量被竊取的可能性趨于零,移動(dòng)端的私鑰分量采用SQLite數(shù)據(jù)庫(kù)進(jìn)行加密存儲(chǔ),使得攻擊者無(wú)法獲得完整密鑰,保證了密鑰的安全性。
本文所實(shí)現(xiàn)的簽名方案可應(yīng)用于各種移動(dòng)終端的身份認(rèn)證與簽名驗(yàn)簽等安全應(yīng)用場(chǎng)景,旨在解決在移動(dòng)互聯(lián)網(wǎng)環(huán)境下的身份認(rèn)證和安全傳輸?shù)确雷o(hù)需求。
本文所實(shí)現(xiàn)的協(xié)同簽名方案,在國(guó)網(wǎng)寧夏陽(yáng)光業(yè)擴(kuò)報(bào)裝應(yīng)用案例上,通過(guò)集成電網(wǎng)移動(dòng)GⅠS SDK,實(shí)現(xiàn)基礎(chǔ)地圖、可視化、定位、檢索、導(dǎo)航等基礎(chǔ)功能,以及電網(wǎng)資源渲染、位置采集、拓?fù)浞治?、電源點(diǎn)分析等電網(wǎng)業(yè)務(wù)功能,取得非常好的應(yīng)用效果(如圖5所示),為業(yè)擴(kuò)報(bào)裝業(yè)務(wù)的配電網(wǎng)架可視化、電源接入點(diǎn)分析、供電方案編制等功能提供了安全技術(shù)保障,同時(shí),也為各類移動(dòng)作業(yè)類應(yīng)用的快速構(gòu)建提供了一個(gè)模版,提升應(yīng)用開發(fā)效率。
圖5 應(yīng)用案例效果圖
本文基于國(guó)產(chǎn)SM2算法和門限簽名算法實(shí)現(xiàn)了一套協(xié)同簽名系統(tǒng)方案,通過(guò)密鑰分割、協(xié)同運(yùn)算、簽名驗(yàn)簽等密碼技術(shù),實(shí)現(xiàn)移動(dòng)互聯(lián)網(wǎng)環(huán)境下的可信身份認(rèn)證和網(wǎng)絡(luò)安全傳輸?shù)陌踩雷o(hù)需求。以軟件SDK組件形式廣泛應(yīng)用于各類專業(yè)移動(dòng)作業(yè)應(yīng)用場(chǎng)景,無(wú)需額外的安全介質(zhì),兼顧安全和用戶體驗(yàn),為移動(dòng)應(yīng)用提供一道安全可靠的防護(hù)鎖。