蘇簪鈾,馬振華,王志洋
(1.國網思極神往位置服務(北京)有限公司,福建 廈門 350200;2.國網寧夏電力有限公司石嘴山供電公司,寧夏 石嘴山 753000)
隨著移動互聯網的快速發展和智能手機的大量普及,越來越多的傳統業務遷移到移動終端上。移動終端作為開放的輕量級設備,在使用過程中所面臨的安全威脅更為嚴峻。因此,如何保證在移動終端上進行安全的身份認證和數據傳輸成為移動應用的關鍵。
國際上通用的RSA、DES/3DES、MD5、SHA1等安全算法,隨著計算能力的提升也存在被破譯的風險。相較于其他公鑰密碼體制,橢圓曲線密碼算法(ECC)是一種基于橢圓曲線的公鑰密碼算法,其數學基礎是基于橢圓曲線的離散對數問題,相較于基于模運算的RSA算法而言,ECC算法的求解更為困難,安全性能更高,同時具有密鑰長度更短、計算量更小、處理速度更快、帶寬要求更低等優勢,更適用于資源受限的移動設備。我國密碼管理部門2010年已發布了以ECC算法為基礎的SM2橢圓曲線公鑰密碼算法[1],該算法已被國內外學者廣泛應用[2-3]。為了解決移動終端丟失或被劫持導致簽名密鑰泄露等安全隱患問題,國內外學者提出了基于門限理論的協同簽名算法[4-6],文獻[7-10]基于門限簽名方案,對SM2簽名算法進行門限化,驗證了完整的安全性和實用性證明。
本文基于前人提出的多方協同簽名協議基礎上,提出一種適用于移動終端場景的協同簽名實現方案,并應用于電網領域的移動GⅠS 數據安全防護,以解決電網移動應用終端用戶身份認證和電網矢量切片加密傳輸的安全問題。
數字簽名技術是互聯網信息安全機制中非常重要的一種信息加密技術,廣泛應用于電子商務、電子政務、信息通信等領域。
數字簽名算法一般采用非對稱密鑰體制來實現,常見的數字簽名算法有RSA、DSA、ECDSA、SM2等算法,不同算法的密鑰強度和安全性與其數學原理有關,RSA算法是基于大數分解問題,DSA算法是基于整數有限域離散對數難題,安全性DSA 與RSA 相當,而ECDSA、SM2 算法是基于橢圓曲線離散對數問題,從數學基礎原理上決定了比RSA算法更具安全性。
SM2 數字簽名算法是我國自主研制的基于橢圓曲線公鑰密碼體系的商用密碼算法。SM2算法的橢圓曲線系統參數定義為:E(FΡ)為有限素數域FΡ上滿足y2=x3+ax+b,a,b∈FΡ且 (4a3+27b2)modp≠ 0的橢圓曲線,G=(xG,yG)是E(FΡ)G上階為n的基點。算法的詳細定義及簽名驗簽計算過程可參考文獻[1]。
在數字簽名中,除了算法安全外,更重要的是密鑰的存儲安全,傳統做法是將密鑰存儲于U盾中,存在丟失、被盜等風險,難以應用到移動終端上。在移動終端場景中更多是基于協同簽名的方案。本文選取的是基于SM2的兩方協同簽名算法,假定協同簽名參與方分別為A 和B,協同簽名的形式化描述為:由參與方A、B 各自計算私鑰分量dA、dB,并計算出各自公鑰PA、PB,然后合成計算出協同公鑰p,參與雙方分別持有私鑰,假定待簽名消息為M,根據SM2 算法原理特性交互協同計算出協同簽名值σ=(r,s),簽名驗簽階段與標準的SM數字簽名驗簽過程一致。
基于協同簽名的電網移動GⅠS 簽名系統的核心思路是將SM2密鑰進行分布式構建,并通過分段存儲、協同運算來完成簽名驗簽、加密解密等密碼服務,即移動端、服務端各自生成私鑰分量,任何一端在任何時間均無完整的SM2密鑰,須要根據協同協議進行聯合計算才能獲取到完整密鑰,從而大大提升密鑰管理的安全性。
整個系統包括移動端的電網移動GⅠS 和服務端的電網GⅠS 服務器、協同簽名服務器以及安全網關等核心組成部分,總體架構如圖1所示。

圖1 總體架構圖
充分考慮到電網應用系統的可靠性、安全性和可擴展性需求,在技術選型上,采用組件化、微服務化的分層架構,其中服務端的協同簽名核心服務和移動端的安全密碼模塊采用C++語言進行實現。
基于協同簽名的電網移動GⅠS 簽名系統的核心功能在于協同算法實現和交互上,包括協同密鑰、協同簽名計算以及身份認證環節,故將核心模塊劃分為密鑰生成模塊、協同簽名模塊、身份認證模塊。
2.2.1 密鑰生成模塊
協同密鑰生成由移動端發起,安全密碼模塊隨機生成私鑰分量d1并計算出對應公鑰p1,發送給服務端協同簽名服務,服務端隨機生成密鑰分量d2,聯合移動端公鑰進行協同運算得出協同公鑰p,然后利用協同公鑰及終端用戶信息為該移動端簽發SM2數字證書。具體流程及偽代碼如下圖2所示。

圖2 協同密鑰生成流程圖
2.2.2 協同簽名模塊
協同簽名同樣是移動端發起,移動端安全密碼模塊根據密鑰分量計算對待簽名消息M做Hash計算和部分簽名運算,將部分簽名和待簽名信息及Hash值作為參數提交給服務端;服務端根據自身的密鑰分量,聯合移動端的部分簽名進行復雜的協同運算得到另一部分簽名信息;最后合成輸出協同簽名值,該簽名值可利用協同公鑰對協同簽名值進行標準的SM2 驗簽。具體運算流程及偽代碼如下圖3 所示。

圖3 協同簽名生成流程圖
2.2.3 身份認證模塊
移動終端的身份認證模塊依賴于密鑰生成模塊輸出的協同公鑰所簽發的SM2數字證書,簽發請求時綁定了移動終端的唯一標識、App 包名、用戶手機號、企業組織信息等信息。移動客戶端的用戶激活、證書簽發及變更須要通過短信進行驗證并設置證書PⅠN 碼,驗證完成后客戶端每次啟動App 輸入PⅠN 碼進行校驗,最后進行數字證書與終端、應用的匹配校驗,具體交互流程及偽代碼如圖4所示。

圖4 身份認證流程圖
本文實現的基于SM2算法的協同簽名協議原理已經過形式化證明[1],從原理上可以保證協議的安全性。兩方協同簽名的密鑰分量分別存儲于移動端和服務端,其中服務端的私鑰分量存儲于配備PCⅠ-E加密卡的協同簽名服務器中,由于加密卡特性服務端的私鑰分量被竊取的可能性趨于零,移動端的私鑰分量采用SQLite數據庫進行加密存儲,使得攻擊者無法獲得完整密鑰,保證了密鑰的安全性。
本文所實現的簽名方案可應用于各種移動終端的身份認證與簽名驗簽等安全應用場景,旨在解決在移動互聯網環境下的身份認證和安全傳輸等防護需求。
本文所實現的協同簽名方案,在國網寧夏陽光業擴報裝應用案例上,通過集成電網移動GⅠS SDK,實現基礎地圖、可視化、定位、檢索、導航等基礎功能,以及電網資源渲染、位置采集、拓撲分析、電源點分析等電網業務功能,取得非常好的應用效果(如圖5所示),為業擴報裝業務的配電網架可視化、電源接入點分析、供電方案編制等功能提供了安全技術保障,同時,也為各類移動作業類應用的快速構建提供了一個模版,提升應用開發效率。

圖5 應用案例效果圖
本文基于國產SM2算法和門限簽名算法實現了一套協同簽名系統方案,通過密鑰分割、協同運算、簽名驗簽等密碼技術,實現移動互聯網環境下的可信身份認證和網絡安全傳輸的安全防護需求。以軟件SDK組件形式廣泛應用于各類專業移動作業應用場景,無需額外的安全介質,兼顧安全和用戶體驗,為移動應用提供一道安全可靠的防護鎖。