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