劉建英, 李洪濤, 王波
山西師范大學數學與計算機科學學院, 山西 臨汾 041000
當前,云計算呈現蓬勃發展階段,企業云的興起,云原生概念的不斷普及,云安全產品生態的形成,技術產業創新不斷涌現.2019年7月,中國信息通信研究院第5次發布的《云計算發展白皮書(2019)》指出,2018年我國云計算市場規模達962.8億元,增速39.2 %,其中,公有云市場規模達到437億元,較2017年增長65.2 %.云計算服務有效提高了數據庫的存儲容量、容錯能力,提升了企業的應用處理機制.
當前,云平臺被眾多企業廣泛地使用,同時意味著對云端數據的保護愈發重要,云端數據的隱私保護和安全存儲問題日益突出.2011年CSDN網站用戶數據庫被黑客在網上公開,大約600萬郵箱密碼和明文密碼泄露;2016年雅虎用戶賬號信息遭到黑客竊取,至少5億用戶信息被泄露.因此,在云計算環境下,如何保證在云上的數據的安全存儲,將是云計算面臨的一大難題.
云數據的保護機制通常使用密碼方式實現.通用的密碼算法包括對稱和非對稱兩種加密算法.其中,對稱加密算法的加解密密鑰是一致的,典型的代表有AES,DES算法,由于密鑰的一致性,總體上該種算法計算簡單,執行效率高;非對稱加密算法則使用不同的加解密密鑰實現數據的加解密操作,這種算法計算復雜,但安全性強于對稱算法,典型的有RSA,ECC(Elliptic Curve Cryptography)等.由于當前通用的密碼技術標準的規定一般以美國為主導,為了保障我國的信息安全,相關密碼標準被制定,并由國家商用密碼管理局陸續公布,包括SM2,SM3,SM4等.
除了基本的加密技術外,為了提升運算性能和安全強度,目前也有新的加密技術研究方案.例如,陳莊[1]等人提出了一種基于數據分級的加密方案,使用雙重密鑰機制對關系型數據庫中的部分特殊數據加密;針對非結構化數據則采取客戶端本地加密的方式;趙嘉誠[2]提出了一種云計算環境下利用MapReduce改進的并行AES、RSA混合加密算法,通過RSA管理密鑰,AES負責加密明文數據;劉艷[3]提出將對稱加密算法與非對稱加密算法相結合的數據加密方案,該方案通過對稱算法AES與非對稱算法RSA、ECC的融合,最終提出了AES-RSA和AES-ECC兩種混合加密方案;賈冀芳[4]基于國家商用密碼算法(國密算法)的安全性強于通用密碼算法、性能弱于通用密碼算法的現狀,在OpenSSL基礎上設計了一種SM2與RSA自動切換的算法,以滿足在性能達標的前提下能提高系統的安全性;付雅丹[5]設計了基于AES加密算法的分布式密文計算算法和基于ECC公鑰體制的ECIES密文計算方法;張連營[6]提出了云計算密碼應用建設的技術方案,確保了云計算及國產密碼的自主可控和安全性;PanJun Sun[7]針對云計算環境下的安全和隱私保護展開研究;王鳳領[8]針對云計算環境下的數據安全問題提出了解決方案,為大數據云計算環境下的數據安全提供了一定的參考.
綜上,現有的云計算加密工作主要圍繞國際通用的加密算法進行改進,國密算法與國際通用的商用算法有較高的安全級別.鑒于此,本文提出了基于橢圓曲線的數據加密方案.國密算法基于ECC,是國家密碼管理局制定的標準,較通用的AES,RSA加密算法有較高的安全性,同時借助于Hadoop的MapReduce框架實現,不僅提高了云數據的存儲安全級別,且加快了云數據加密效率.
橢圓曲線密碼學是基于橢圓離散數學的一種公開密鑰的方法,于1985年由Victor Miller和Neal Koblitz分別獨立提出.ECC密碼技術依賴于橢圓曲線的離散問題,可被廣泛地應用在不同的應用場景中,如SSL安全協議、智能卡等.
橢圓曲線集成加密框架(Elliptic Curve Integrated Encryption Scheme, ECIES ),一種基于ECC密碼體制的加解密方案,由Abdalla、Bellare和Rogaway等人提出.ECIES并非具體的方案,其中的公鑰生成,加解密算法需要自行設置.目前ECIES也有部分具體的實現,如ANSI X9.63, ISO/IEC 18033-2,IEEE 1363a和SEC1等標準.
橢圓曲線集成加密框架ECIES整體由四大部分構成,分別是密鑰生成(Key Generate,KG)、密鑰交換(Key Agreement, KA)、加密( Encryption, ENC)、消息比特碼生成(Message Authentication Code, MAC).其中KA功能模塊包含密鑰派生(Key Derivation Function, KDF),雜湊數值位生成 (HASH)功能嵌套在KA和MAC兩個模塊中.首先,本小節將對ECIES加解密框架的運行機制進行介紹,隨后,詳細闡述框架中的各個模塊的功能.
假定Alice計劃發送給Bob一條信息,為了保證信息的安全傳輸,對信息進行加密.即Alice作為發送人,Bob作為接收人.加密機制采用ECIES加密集成方案,則具體的流程如圖1所示.

圖1 ECIES加密流程圖Fig.1 ECIES encryption flowchart
在ECIES加密算法中, 發送方Alice和接收方Bob分別利用橢圓曲線密鑰函數生成各自的密鑰對(R,S),(P,Q);然后發送方Alice利用自己的私鑰S和Bob的公鑰P進行密鑰協商,生成共享密鑰P·S,并經過KDF密鑰派生模塊生成兩個密鑰Mk,Ek,其中密鑰Mk用于簽名生成摘要,Ek用于明文數據加密;接著發送方Alice利用上述生成的加密密鑰Ek在Enc加密模塊中對明文數據M進行加密操作,得到密文ME;密文ME在MAC模塊中通過密鑰Mk,為密文打上標簽,生成摘要D,最后發送方Alice將公鑰R,密文ME,標簽D打包發送給接收方Bob.
在ECIES解密算法中,接收方Bob接收到Alice發送來的密文數據后,首先拆包,得到公鑰R,密文ME,標簽D; 然后Bob同樣使用自己的私鑰Q和發送方Alice的公鑰R,經過KA密鑰交換和KDF密鑰派生模塊生成共享密鑰對Mk,Ek; 接著Bob利用密鑰Mk,通過MAC模塊,得到密文的標簽值D′; 比較D與D′的值是否一致,如果不一致,則表示接收的信息是不完整的.如果一致,則利用上述生成的密鑰Ek在ENC模塊中解密密文ME得到明文M.
從上述分析可得,橢圓曲線集成加密框架ECIES主要包含四大模塊,密鑰生成KG、密鑰交換KA、加密ENC、消息比特碼生成MAC,其中KA功能模塊包含密鑰派生(Key Derivation Function, KDF),KA和MAC兩個模塊嵌套HASH功能.接下來,對各個模塊作詳細闡述.
(1) KG(橢圓曲線密鑰對生成)
KG模塊包括ECIES加密解密算法中發送方和接收方私鑰密鑰對的生成過程,其中橢圓曲線密鑰對生成方式過程如下:
a 建立橢圓群Ep(a,b),選取橢圓曲線E:y2=x3+ax+b(modp);
b 在上述的橢圓群中選擇點G=(Gx,Gy),其中,G符合條件n·G=O,n代表大素數;
c 然后確定私鑰,通常將小于n的整數d確立為私鑰;依據公式P=d·G,得到公鑰P,其中,曲線參數參照國家密碼管理局制定的橢圓曲線密碼算法標準,具體參數如下:
p=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
a=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC
b=28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93
n=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123
Gx=32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7
Gy=BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0
(2) KA(密鑰交換算法)
KA模塊中的主要算法是密鑰交換算法,即兩個用戶進行信息交流,用分別的私鑰和對方的公鑰產生彼此之間信息交流的共享密鑰.此密鑰一般作為對稱加解密算法的密鑰.
本部分使用的橢圓曲線密鑰交換協議參照國家密碼管理局制定的SM2橢圓曲線公鑰密碼算法第3部分-密鑰交換協議,由三部分構成,即:密碼雜湊算法,密鑰派生函數(KDF)、隨機數生成器.密鑰交換協議的安全級別一定程度上取決于三種函數的具體實現程度.
(3)HASH(哈希算法)
HASH模塊中使用的哈希算法為國家密碼管理局制定的SM3國密密碼雜湊算法標準.特定長度的數據信息,經過該算法的填充、壓縮功能,可最終轉換為256位的雜湊碼,與國際標準SHA-256等長.
(4)ENC(加密算法)
ENC模塊使用國家密碼管理局制定的SM4分組密碼算法標準.該算法采用128位的密鑰長度,每隔128位,消息被分為一組.無論數據解密或數據加密均使用相同的算法結構,但采用不同順序的輪密鑰,互為逆操作,同時非線性迭代結構被應用于加密過程.
(5)MAC(簽名算法)
MAC模塊是對ENC模塊結束后產生的密文C使用KA模塊產生的密鑰Kmac進行生成用于檢測數據一致性的 TAG值,記為Tag.MAC中使用國家密碼管理局制定的SM2橢圓曲線公鑰密碼算法第2部分——數字簽名算法.該算法包含兩大操作:簽名和驗簽.通常私鑰用于數據的簽名,而公鑰用于消息的驗簽,即消息的確認.同時,無論簽名還是驗簽,均需要使用密碼雜湊算法進行消息的壓縮操作.
非對稱加密算法是一種常用的密鑰保密算法,該算法強度復雜,安全性依賴于算法及其密鑰,典型的有DH、RSA、EIGama、ECC算法等.RSA作為最經典的非對稱加密算法,基于大整數因子分解困難問題而設計.ECC公鑰密碼設計機制是基于橢圓曲線的離散對數問題,安全性取決于橢圓曲線離散對數問題的難解性.ECC是公鑰算法中較為安全、難以攻破的一種算法.在同等條件下,ECC密鑰長度更短,計算量較小,存儲空間占用更少,安全性更高,因此,它是一種適合云環境下使用的公鑰加密方案,不僅保證了數據的安全性,還提高了算法的運算效率.本文提出的ECC橢圓加密曲線采用國家密碼管理局制定的國密標準,包含SM2橢圓曲線公鑰密碼算法、SM3國密密碼雜湊算法、SM4分組密碼算法標準,利用云環境Hadoop平臺下的MapReduce框架實現.
MapReduce是適合海量數據處理的編程模型,整體可分為Split分片、Map、Reduce三個執行階段.MapReduce采用“分而治之”策略,將一個分布式文件系統的大規模數據集,劃分成獨立的片,這些片對應Map任務進行并行處理.其中,大規模集群上的并行計算被抽象成兩個函數Map和Reduce.Map函數負責對分片后的數據塊進行操作,而Reduce接收Map函數的輸出并進行處理.基于MapReduce框架的橢圓曲線集成加密算法方案如圖2所示.

圖2 基于MapReduce框架的橢圓曲線集成加密算法方案Fig.2 ECIES based on MapReduce framework
接下來,將對MapReduce框架中的各個階段重點闡述.
(1)Split分片
Split分片這一階段將存儲在HDFS文件系統中的明文數據分成若干個數據塊,其中,采用pos,i,li,buffer變量刻畫,pos表示數據塊在明文大數據的偏移位置,i表示第i個數據塊,li表示數據塊的大小,buffer存儲數據塊的內容.首先pos記錄第1個數據塊的起始位置,依據l讀取數據塊1中的內容到buffer,同時pos變量指向下一數據塊的偏移位置,依次循環;其次,最終的key存儲第i個數據塊在明文大數據文件的偏移量,將buffer賦值value,存儲數據塊的內容.
(2)Map函數
Map階段中運行ECIES加密算法,接收Spilt階段的輸入
(3)Reduce函數
Reduce階段接收Map的輸出〈key, value(Enc-data)〉,依據key值進行排序,合并操作,經Reduce函數直接輸出.由于key 值記錄了數據塊首字節在大數據文件中的偏移位置,因此,經過shuffle處理后的密文數據保證了原始數據的完整性,按順序依次拼接即可.
本實驗采用Hadoop的MapReduce框架實現,主平臺由1個Master主節點和3個Slave從節點組成,其中,作業、資源的使用情況由主節點管理,而從節點負責分布式數據的存儲和計算,主要配置如表1所示.

表1 實驗平臺配置Tab.1 Experimental platform configuration
綜合上述的ECIES加解密框架,該框架包含四大模塊,即PRE密鑰生成、KA密鑰協商、ENC加解密、MAC簽名驗簽.串行ECIES算法中各個模塊的時間消耗比例見表2,我們可以得出以下結論: (1)ENC加解密模塊在該框架中占用的比重最高,最耗時間; (2) 剩余的模塊中,MAC是最耗時的模塊,其次是PRE模塊和KA模塊.

表2 ECIES各模塊時間消耗Tab.2 Time of each module ECIES
在Hadoop云平臺上,分別對1 GB, 2 GB和4 GB的數據文件使用ECIES加解密算法進行串行和并行測試,其中, Map 數量為1時,表示串行環境測試; Map為n時,表示云環境下的并行測試,數據文件被分成了n塊,即劃分為n個Map任務運行.本次實驗測試了當split分片不同,即不同的Map任務條件下,數據文件的總耗時、Map階段耗時、Reduce 階段耗時、總加速比,具體結果如表3,表4,表5所示.

表3 ECIES加密算法耗時統計(1 GB)Tab.3 Time consumed statistics of ECIES(1 GB)

表4 ECIES加密算法耗時統計(2 GB)Tab.4 Time consumed statistics of ECIES(2 GB)

表5 ECIES加密算法耗時統計(4 GB)Tab.5 Time consumed statistics of ECIES(4 GB)
為直觀顯示上述數據的變化趨勢,我們采用圖的形式進行刻畫.下圖顯示了分別加密1 GB,2 GB,4 GB數據文件不同分片條件下的加密時間和整體加速比,具體見圖3,圖4.

圖3 ECIES加密框架不同數據塊時間消耗Fig.3 Time consumed of different data blocks in ECIES encryption algorithm

圖4 ECIES加密算法不同數據塊加速比Fig.4 Acceleration ratio of different data blocks in ECIES encryption algorithm
通過對上述表和圖的趨勢分析,可以得出以下結論:
(1) 隨著數據塊的增加,即Map任務的遞增,算法的時間總消耗呈下降趨勢,但降到一定程度時增加,最后趨于穩定狀態.
(2) 數據量較大時,算法的總時間消耗和加速比在集群數量接近24時效果最佳,整體加速比在3.0左右.
(3)Map任務逐漸增加的同時,Map任務所用時間呈遞減趨勢,分析其原因,分片數量的增加導致節點上Map端待處理數據的容量減少,充分利用了Map的并行優勢.
(4)Reduce階段所用時間整體上呈現先增加后減少最后又增加的趨勢,究其原因,split分片任務的增加導致時間呈現遞減,但后期隨著分片的不斷增加致使信息的傳遞時間和排序時長發揮作用,因此時間消耗增加.
Reduce端接收Map端輸出的(key,value(End-data)),對偏移量key值排序,連接密文.為了提高Reduce的并行處理能力,本實驗將Reduce的任務數量分別設為1,2,3,4,5,測試不同Reduce 任務下的ECIES加密的耗時情況,如圖5、圖6所示.

圖5 不同Reduce下 ECIES 加密算法耗時統計(Map=16)Fig.5 Time consumed of different number of Reduce(Map=16)

圖6 不同Reduce 下ECTES加密算法耗時統計(Map=32)Fig.6 Time consumed of different number of Reduce(Map=32)
分析圖5圖6,可以看到,Reduce數量對ECIES加密算法的運算性能有一定的影響,隨著Reduce數量的變化,ECIES算法整體耗時呈現先減后增的狀態,其中當Reduce數量接近3時,耗時最少,即接近集群節點的數量性能較佳.
隨著云技術與大數據的快速發展,數據的隱私保護愈發重要,因此,解決計算中的安全問題成為當前面臨的挑戰之一.基于此,本文提出了一種基于云計算環境下的國密算法加密方案.重點闡述了ECIES加密框架的基本原理,借助于國密算法的安全性強的特性,使用國密算法實現密鑰協商,簽名驗簽,加解密的功能,隨后使用了Hadoop平臺的MapReduce框架實現了該算法.最后,通過不同實驗表明,基于MapReduce框架實現的ECIES加密算法不僅可以提高數據加密的安全性能,還利用集群的并行功能,提升了數據加密的運算效率,且其中Map和Reduce任務的數量對加速比有一定的影響.