李丹霞 劉舒婷 楊海珊



摘要:為了探討如何解決交易上鏈區塊鏈網絡時敏感數據的安全性及加密算法性能問題,主要對自主開發的通用加密組件中的ECC和ECC改進加密算法進行分析研究,并結合真實生產業務場景對兩種算法實施性能實驗,論證了ECC改進算法得性能優勢,為通用組件的應用部署及全網推廣提供支撐依據的同時,也為其它類型算法性能比對提供了測試方法和重要的性能分析數據。
關鍵詞:區塊鏈;加密算法;ECC;性能
一、 引言
區塊鏈作為新一代價值互聯網技術,正在以前所未有的速度擴展并影響著我們的生活,改變著當前的商業模式,是數字經濟發展的關鍵新生力量,近年來,被越來越多的政府和企業青睞和使用,隨著應用場景的不斷擴展,隱私保護的要求也逐步凸顯,比如:如何在公開透明的同時保護交易者的身份和交易的內容,為解決區塊鏈的隱私保護問題,也涌現出像同態加密、零知識證明等一系列可以實現更廣泛、更嚴格的隱私保護技術。
CMBaaS服務平臺是中國移動的一個區塊鏈網絡項目,用來為公司內部提供區塊鏈服務,主要應用于面向涉及多種角色參與的,多系統復雜流程交互的,有共識目標的,對安全性、數據一致性要求較高的業務場景。主要涉及各專業公司、31省公司等一對一、一對多、多對多等數據交互場景,為保障各交易用戶的隱私信息安全性,在發起方進行交易上鏈前,會對交易敏感信息進行加密,落地方只能通過解密獲取到與自己相關的鏈上數據,這樣確保任何不相關的用戶都無法從密文中讀取到有用的信息,使交易相關用戶可以在設定范圍內讀取有效數據,為用戶隱私提供了更深層次的保障。為降低各區塊鏈業務交易方重復開發加密工具的成本,加快交易上鏈速度和管理的標準化、統一化,研發了基于ECC、ECC聯合AES的加密算法(后續簡稱為ECC改進算法)的通用組件,本文主要結合實際生產業務場景,針對此兩種算法開展性能驗證和結果分析,論證ECC改進算法的優勢,為算法的應用推廣和后續優化提供重要的支持依據和方向。
二、 算法簡介
(一)AES 算法
高級加密標準(AES,Advanced Encryption Standard)為最常見的對稱加密算法。所謂對稱加密算法也就是加密和解密用相同的密鑰,具體加解密流程如圖1所示。
AES采用分組密碼,分組密碼也就是把明文分成一組一組的,每組長度相等,每次加密一組數據,直到加密完整個明文。在AES標準規范中,分組長度只能是128位。密鑰的長度可以使用128位、192位或256位。密鑰的長度不同,推薦的加密輪數也不同,具體如表1所示,本文主要針對AES-128進行分析。
(二) ECC算法
ECC(Elliptic Curves Cryptography)橢圓曲線加密算法是一種非對稱加密算法,所謂非對稱加密算法,就是加密和解密需要2個不同的密鑰,如果用公開密鑰對數據進行加密,只能用私有密鑰進行解密,反之,如果用私有密鑰進行加密,也只能用公開密鑰進行解密。具體加解密流程見圖二,本文驗證的ECC加密算法密鑰長度為256位,主要使用反射解決因美國出口限制,ECC算法的密鑰長度不能超過128位的問題。
(三)ECC和AES聯合加密算法
AES加密算法因加解密密鑰相同,加密速度較快,適合經常發送數據的場合,但密鑰傳輸比較麻煩,如果密鑰泄露,存在安全風險,ECC加解密算法因加密和解密密鑰不同,加解密速度相對比較慢,適合偶爾發送數據的場合,但密鑰傳輸方便,安全性相對較高。綜合兩種算法的優缺點,本文加解密通用組件中,基于java語言實現了一種ECC改進加密算法,進行優劣互補,提升加密安全性和速度,具體流程如圖3所示。
三、算法性能實驗
本節主要介紹性能測試實驗的實驗環境、測試流程及測試指標計算方法。
(一)實驗環境
實驗設備:windows10操作系統的計算機;
設備配置:內存:6c*16G(內存);CPU:Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz? 2.59 GHz;
測試工具:eclipse、Jmeter5.4、jconsole;
測試對象:ECC算法、ECC改進算法。
(二) 實驗流程
因區塊鏈項目的特殊性,各交易上鏈方需對提交的交易數據進行簽名操作,數據下載方下載數據后需要進行驗簽操作,不同業務上鏈場景的加解密算法主要限定在通用加解密組件中的ECC、ECC改進算法中選擇。故本文主要對這兩種算法的效率和CPU、內存資源消耗進行實驗對比,為不同業務場景選擇,提供支撐依據,不對其他未選定范圍外的加解密算法進行對比實驗。
本次性能測試實驗主要采用ECC、ECC改進算法分別對單字段請求(大小為512B、1KB、2KB)、普通文件(大小為10KB、20KB、30KB)、超大文件(512KB、1MB)的明文數據進行多輪加解密運算,取平均處理時間作為最終的測試結果。
(三)算法運行效率和資源監控方法
本次實驗運行效率主要利用Java中的System.currentTimeMillis將算法結束的計時與算法運行前的計時進行相減得到算法的運行時間。
Before = System.currentTimeMillis();//算法運行開始的計時
After = System.currentTimeMillis();//算法運行結束的計時
getHandletime(before,after);//算法運行時間
該計算方法的源碼截圖見圖4和圖5。
內存和CPU等資源利用率主要使用JDK自帶的jconsole進行監控分析。
四、實驗場景及性能結果分析
(一) 基線場景
基線場景主要是考慮在單線程的情況下,對2種算法性能表現做個橫向比較,基于實際生產交易上鏈場景,需加密數據主要包含兩種情況:單個請求多個字段的加密(所有字段的總大小不超過2KB)和文件加密(一個文件中包含多條記錄,一般不超過20K,最大不超過1MB級別)。
基于此背景,設計三個基線場景(單字段加解密、普通文件加解密、超大文件加解密),對于單字段加解密,最大不超過2KB,此場景可通過512B、1KB、2KB的字段加解密處理時間體現性能;對于普通文件加解密,則是10KB、20KB、30KB;對于超大文件加解密則是512KB、1MB,具體性能指標數據如表2所示。
在無壓力的情況下,不同業務場景的運行效率和內存資源占用見表2,同等數據大小下,ECC 改進算法的內存資源占用均低于ECC算法,當加密數據大小越大時,ECC改進算法運行效率優勢越明顯。
(二)負載場景
考慮到通用組件的業務支撐能力,將待加密明文數據大小統一設定為512B、不考慮并發的情況下,分別持續運行兩種算法5分鐘,預估全天可支撐加解密業務量,同時監控主機資源使用情況。具體運行效率和內存使用率如表3所示。
在此場景下,ECC改進算法5分鐘加密處理總數107630筆,根據2-8原則,百分之80的業務在20%的時間內完成,預估ECC改進算法一天內(8小時)可支撐業務量D1=107630筆/5m×60m×8h×0.2%0.8=258萬筆。ECC算法預估ECC單獨加密算法一天內可支撐業務量D2=98315筆/5m×60m×8h×0.2%0.8=236萬筆,即單日8小時內最大業務支撐量236萬筆
同時,通過比對ECC改進算法與ECC算法的運行效率和內存占用率,ECC改進算法優于ECC算法。
(三)高并發場景
因生產環境中,存在部分區塊鏈交易單位會集中到某個時間點集中進行交易上鏈,也就是存在瞬間進行大量的加解密調用,因此存在并發場景,需要進行并發性能瓶頸和比對驗證。
以一定的梯度遞增并發數,并監控系統資源使用情況,兩種算法的運行效率和內存占用對比見圖7。
根據圖6數據分析,在不同并發壓力情況下,ECC改進算法運行效率均明顯優于ECC算法。根據圖7數據分析,高并發下ECC改進算法的內存消耗與ECC算法相比,比較接近,優勢不明顯。在并發2萬筆時,兩種算法同時達到最大吞吐量,其中ECC改進算法最大吞吐量368.2筆/s,ECC算法363.5筆/s,詳細數據見圖8。
五、結束語
本文通過三種性能場景,分別對兩種算法進行性能實驗,從運行效率、內存占用、最大并發吞吐量等方面對兩種算法進行橫向對比,結果證明,在基線場景下,尤其在對大文件進行加密時,ECC改進算法加密效率優于ECC算法。
在負載場景下,ECC改進算法一天內支撐的最大業務量、平均運行效率和內存占用率也均優于ECC算法。在高并發情況下,同等并發條件下,ECC改進算法的運行效率明顯優于ECC算法,但內存占用優勢不明顯,對于存在高并發的用戶,可以采用內存可靈活擴展的部署方式,來進一步提升ECC改進算法,本研究成果為算法應用范圍及其他算法性能比對提供了測試方法和重要的性能分析數據。
作者單位:李丹霞? ? 劉舒婷? ? 楊海珊? ? 中移信息技術有限公司
作者簡介
李丹霞(1986-),女,漢,河南省,碩士,研究方向:區塊鏈技術、自動化測試技術等。
劉舒婷(1993-),女,漢,廣東,學士,研究方向:測試開發技術。
參? 考? 文? 獻
[1]華為區塊鏈技術開發團隊.區塊鏈技術及應用[M].北京:清華大學出版社,2019.
[2]TimeShatter.AES加密算法的詳細介紹與實現[EB/OL]. [2017-02-19].https://blog.csdn.net/qq_28205153/article/details/55798628.
[3]邱德華.ECC算法原理[EB/OL].[2013-03-08].https://wenku.baidu.com/view/35f5b8dc3186bceb19e8bb3f.html
[4]張勇,刑長征.AES和ECC相結合的數據加密技術的研究[J].計算機安全,2007.
[5]李悅,李瑋,曹艷勤,等.幾種輕量級分組密碼算法的性能分析[J].計算機應用與軟件.2016.
[6]繆昌照,徐俊武. AES與ECC混合加密算法研究[J]. 軟件導刊. 2016, 15(11):2.