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