王 軍, 翟 峰2, 王俊龍3, 李志鵬, 李 鵬3, 譚贛江
(1.河南許繼儀表有限公司,河南 許昌 461000; 2.中國電力科學研究院計量研究所,北京 100192;3.國網河北省電力有限公司,河北 石家莊 050000)
隨著移動支付和二維碼技術的成熟應用,用電領域也逐漸引入二維碼和掃碼用電技術實現掃碼用電[1]和費用結算[2],使得充電樁、岸電、農排和共享電源等用電方式更加靈活便捷,極大地方便了電力用戶,降低了電力公司運維管理成本,為共享用電[3]模式的推廣和應用提供技術支撐。
隨著共享用電模式的推廣應用,如何保證掃碼用電和支付過程中的信息安全,已成為制約共享用電模式發(fā)展的關鍵因素。由于以高級加密標準、混沌加密[4]為代表的對稱加密算法[5]依賴于多個用戶之間的共享密鑰,容易在用戶側出現密鑰泄露。因此,目前共享用電的信息安全策略多基于非對稱加密算法,包括RSA算法、背包算法、數字簽名算法等。其中背包算法安全性較低,容易被破解。數字簽名算法僅能用于數字簽名,不能進行數據加密解密。相對而言,RSA算法由于其加密函數求逆的困難性被認為是目前最安全的算法之一。但隨著大數據分解技術的不斷研究,RSA算法[6]被破解的概率也越來越高,在共享用電領域,這直接威脅到用電和支付過程中的數據和通道安全。近年來,針對RSA算法的安全性改進也在不斷推新,但大多圍繞增加大素數長度或分解密鑰長度展開研究,無法解決算法中數據因子被直接攻擊的問題。
針對上述問題,筆者提出一種基于ESAM(Embedded Secure Access Module,嵌入式安全控制模塊)芯片的RSA改進算法及加密傳輸技術方案,采用托管密鑰的方式保證掃碼用電過程中的信息安全,解決了掃碼用電APP的下載安全隱患和結算信息被篡改、釣魚的難題,對信息安全的整體防護提供了有力的支撐。
系統(tǒng)主要由基于密碼機的云端主站、動態(tài)二維碼生成模塊以及設備本體(充電樁、農排費控終端[7]、岸電終端或其他共享用電終端)3個功能單元構成。其中,動態(tài)二維碼生成模塊主要由遠程控制模塊、MCU和安全加解密芯片構成。云端主站與動態(tài)二維碼生成模塊之間采用電力專網通信,動態(tài)二維碼生成模塊與設備本體之間采用本地通信(見圖1)。
圖1 共享用電的系統(tǒng)架構
用戶請求掃碼用電時,動態(tài)二維碼生成模塊會生成用電二維碼訂單信息。使用掃碼APP完成識別后,訂單信息將分別由APP和動態(tài)二維碼生成模塊內置的遠程通信模塊上傳至云端主站。主站校驗通過后產生用電指令,該指令被密碼機生成的秘鑰加密后送達動態(tài)二維碼生成模塊,后者使用內置安全加解密芯片完成解密操作,并最終將指令傳達至設備本體,開啟共享用電。
在通信過程中,動態(tài)二維碼生成模塊和主站側密碼機內嵌的安全ESAM芯片使用改進版的RSA算法,實現本地安全加解密管理。同時,二維碼生成模塊通過內嵌遠程通信模塊與主站進行安全連接、認證管理,保證二維碼信息在生成和傳遞過程中不被篡改和釣魚,并通過固定接口方式與設備本體實現電源取電及本地通信,借助設備本體實現二維碼顯示和負荷控制管理等核心功能。
上述共享用電的系統(tǒng)架構主要采用基于ESAM的非對稱加密方案來解決APP下載和現場掃碼過程中信息被篡改的問題,該方案采用非對稱加解密+簽名驗簽的方式進行統(tǒng)一密碼服務。使用公鑰加密、私鑰解密、私鑰簽名、公鑰驗簽的方式構建起共享用電的非對稱加解密體制,如圖2所示。以公鑰加密,私鑰解密的方式實現非對稱加密算法,保障信息的保密性。解密操作僅在可信授權終端上才能完成,防止加密信息被攔截并破解。私鑰簽名、公鑰驗簽用以保障信息的不可抵賴性,有效驗證信息的來源,防止信息在傳輸途中遭到惡意篡改。二者結合使用提供雙重保證,進一步增強共享用電系統(tǒng)的安全性。
具體而言,該方案利用正向分解運算量大、逆向運算量小的數學技巧對數據進行加解密處理。在發(fā)送方,對明文數據進行公鑰加密形成密文,對密文數據進行哈希運算形成信息摘要,并通過私鑰對信息摘要進行加密形成數字簽名,通過密文+數字簽名的方式進行數據傳輸。接收方接收到密文和數字簽名后,首先對密文數據進行哈希運算,獲取信息摘要A,通過公鑰對數字簽名進行解密,獲取信息摘要B,對比信息摘要A和信息摘要B,如果相同,證明接收方的消息真實有效,否則說明數據信息被篡改。本方案中的加解密過程使用到了改進后的RSA算法。
傳統(tǒng)RSA算法主要包含生成密鑰、數據加密算法和數據解密算法三部分。
(1)生成密鑰。
① 選取兩個大素數α和β,且α≠β,計算乘積k,表示密鑰長度。
圖2 非對稱加解密模型
k=α×β
(1)
② 計算k的歐拉函數值。
φ(k)=(α-1)×(β-1)
(2)
③ 選取任意整數e,滿足1 x≡e-1(modφ(k)) (3) ④ 獲取公鑰為(e,k),私鑰為(x,k)。 (2)數據加密算法。 R=Memodk (4) (3)數據解密算法。 依據發(fā)送者發(fā)送的密文數據,接受者可利用式(5)進行數據解密。 M=Rxmodk (5) 觀察上述公式可知,x作為解密密鑰,可以利用其完成解密計算得到明文數據。若x被破譯,則整個加密體系將失效。那么,如果需獲取x,由式(3)可知需先獲取e和φ(k);又由式(2)可知,若需獲取φ(k),則需先獲取α和β;再由式(1)可知,只有對k進行素數因子分解,才可能獲取α和β。因此在傳統(tǒng)的RSA算法中,如果k被分解,最終會導致x被成功獲取,進而威脅到整體加密算法體系的安全性和可靠性。 由此可知,RSA算法存在密鑰被攻擊分解,造成算法失效的安全風險。筆者基于RSA算法,提出了托管密鑰因子的概念,削弱了RSA算法中被攻擊分解帶來的安全隱患,進而優(yōu)化整個掃碼用電的安全算法。筆者將改進后的算法命名為ERSA算法,具體改進措施包括以下兩個方面。 ① 對素數α和β進行大小比較,產生托管密鑰分散因子,消除帶來的安全風險; ② 在解密算法計算過程中增加平方根操作,以對應加密算法中引入托管秘鑰分散因子帶來的改變。 基于上述分析,ERSA算法主要改進包括生成托管密鑰、數據加密算法和數據解密算法三部分。 (1)托管密鑰算法。 節(jié)段預制拼裝造橋技術具有良好的經濟、環(huán)境效益,近年來得到大力推廣,其核心是通過體外預應力將預制節(jié)段“化零為整”。由于體外預應力需通過錨固塊及轉向塊才能將預應力作用傳遞到梁體上,因此,這類橋梁關鍵構造在于預應力鋼束錨固塊及轉向塊,在設計時應重點考慮。 ① 通過RSA算法式(1)獲取k的值。 ③ 比較α、β的大小,根據結果在對應約束下計算托管秘鑰s,且滿足gcd(s,k)=1,進而在后續(xù)的加解密算法中代替。 若α>β,則滿足k-α 若α<β,則滿足k-β ④ 將托管秘鑰s代入式(3),可求出x′,則式(3)轉變?yōu)?/p> x′≡e1(modφ(s)) (6) 此時,公鑰為(e1,s),私鑰為(x,s)。 (2)數據加密算法。 發(fā)送者通過公鑰對明文M進行數據加密,具體如式(7)。 R′=Me1mods (7) (3)數據解密算法。 通過發(fā)送者發(fā)送的密文數據,接收者依據式(8)進行數據解密處理,獲取辛勤工作中明文M。 (8) 根據上述ERSA算法,托管密鑰獲取、加密算法和解密算法流程分別如圖3~圖5所示。 圖3 ERSA算法托管密鑰獲取流程 圖4 ERSA加密算法流程 圖5 ERSA解密算法流程 在ERSA算法中,攻擊者無法通過托管秘鑰s分解得到α和β,繼而無法計算得到私鑰x。與此同時,由于托管秘鑰s是在k、α、β所確定的約束范圍內選取得到,擁有一定的隨機性,故攻擊者很難通過s推算得到k,增大了k被獲取的難度,提升了數據傳輸的安全性。 將ERSA算法應用于二維碼生成方案中,可有效保證信息傳輸的安全性和可靠性,該方案的核心內容包括ERSA算法加密及數字簽名[9]、ERSA算法解密及數字驗簽、生成二維碼編碼和二維碼掃描譯碼四部分,二維碼加密方案如圖6所示。 以充電樁掃碼購電為例,介紹ERSA算法應用。 ① 用戶通過APP掃碼請求購電,主站輸出明文購電鏈接,通過密碼機的ERSA算法生成公私鑰對,使用公鑰對輸入的明文數據以及交易流水號、終端編號、時間等附加信息一起進行加密處理,生成密文數據。 ② 密文數據通過電力專網傳輸到設備本體內的動態(tài)二維碼生成模塊,通過模塊內的ERSA的解密算法進行數據解密。 圖6 二維碼加密方案 ③ 動態(tài)二維碼生成模塊對ERSA算法解密的明文數據經過數據分析、數據編碼、數據糾錯、填充塞模等操作后生成相應的二維碼并顯示在終端屏幕上。 ④ 用戶掃描后,通過格式信息識別、版本信息確認、消除塞模、糾錯碼字恢復等二維碼掃描譯碼等操作,最終在用戶手機端顯示出用電交易頁面。 基于動態(tài)二維碼[8]的共享用電業(yè)務主要分為下載APP和掃碼用電兩個步驟,具體流程(圖7)如下。 ① 用戶通過二維碼下載APP業(yè)務。主站將配置好的APP下載地址通過密碼機加密后以密文方式傳輸到本地動態(tài)二維碼模塊內,并通過內置的安全加解密芯片解密后與時間、終端編號等信息一起再次加密后生成APP下載地址的動態(tài)二維碼,顯示到顯示屏上,供即時需要的用戶即時下載、即時認證綁定,保證掃碼用電的及時性與安全性。 ② 用戶掃碼用電業(yè)務。動態(tài)二維碼模塊會根據設備編號、資產編號、時間等自動生成用電二維碼訂單信息,內置流水號、設備信息、位置信息、開始時間、開始表碼、倍率等信息,供用戶APP安全識別,并預授權一定金額后,生成用電訂單信息,該信息通過動態(tài)二維碼模塊內置的遠程模塊和用戶APP分別安全上送到主站,實現用電申請。申請通過后,主站以安全加密方式把用電指令下發(fā)給動態(tài)二維碼模塊內置的安全加解密芯片進行解密,通過解密后的指令向終端本體下發(fā)合閘指令,則用電開始。在用電過程中,動態(tài)二維碼模塊實時監(jiān)測用電費用是否超過預授權金額[10],若超過則發(fā)出跳閘指令。在無跳閘情況下,可指導用戶通過APP發(fā)出用電停止指令,主站接到用電停止指令后,首先通過密碼機進行加密處理,然后通過遠程通信模塊下發(fā)給動態(tài)二維碼模塊。模塊接到指令并驗證指令的合法性,若合法則通知終端本體跳閘停止用電,結算費用[11],并生成相應的用電數據信息。本方案通過動態(tài)二維碼模塊上傳至主站,保證掃碼用電時的用戶、用電、結算等敏感信息的安全可靠[12]。 圖7 基于動態(tài)二維碼的費控共享用電流程 (1)時間開銷方面。 在Windows系統(tǒng)下(CPU:8核,內存:8 GB)建立的仿真環(huán)境。利用VS 2010開發(fā)環(huán)境設計測試驅動,模擬底層驅動和模擬數據生成模塊。通過預留的調用接口,分別調用RSA算法和ERSA算法對模擬數據進行加解密。通過測試工具IBM Rational Purify Plus對仿真測試程序進行插裝,監(jiān)測實時產生密鑰用時及加解密運行過程的時間效率。 ERSA算法增加了大小判斷,并用托管分散因子代替密鑰及在解密時增加平方根運算。因此,ERSA算法在執(zhí)行用時上相對于傳統(tǒng)RSA有所上升。兩種算法經過多次驗證后選取三組相同的和經典素數,具體見表1。由表1可知,ERSA算法相對RSA算法的產生密鑰用時上升9.23%,加解密用時上升5.69%,總用時上升7.28%。 表1 RSA與ERSA算法用時對比 (2)安全性方面。 由于RSA算法中公鑰和私鑰都包含密鑰長度k,可以被分解,在公鑰公開的情況下,如果k被破解,私鑰隨之被獲取?;谏鲜龇治觯珽RSA算法定義變量s,通過與取模轉換運算獲取s,代替k,從而使攻擊者無法獲取k,有效地提高了算法的安全性。 同時,針對基于RSA和ERSA算法的共享用電主站和APP采用AppScan、Burpsuite等測試軟件通過弱點掃描、信息篡改、滲透攻擊[13]等方法進行了安全功能測試和滲透測試,測試項目包括:越權訪問、明文傳輸、SQL注入[14]、敏感信息泄露、數據保密性完整性等,具體測試數據如表2所示。由表2可知,基于ERSA算法相對RSA算法的共享用電系統(tǒng)的滲透測試問題率下降19.04%,功能安全的問題率下降17.76%。 表2 安全仿真測試數據 ERSA算法相對于傳統(tǒng)的RSA算法在共享用電中的問題發(fā)生率平均下降18.28%,安全性和可靠性均有明顯提升,為共享用電規(guī)?;瘧锰峁┝思夹g和安全保證,但其加解密運行時間略有增加,工作效率有所降低,有待進一步研究,在保證安全性的情況下,力爭降低運行時間,提高工作效率。2 基于ERSA算法的二維碼生成方案及其應用
2.1 基于ERSA算法的動態(tài)二維碼生成方案
2.2 基于動態(tài)二維碼的共享用電業(yè)務流程
3 結果分析
4 結束語