朱 沙 沙
(天地(常州)自動化股份有限公司 江蘇 常州 213000)
煤礦安全監(jiān)控系統(tǒng)主要是對井下環(huán)境參數(shù)的監(jiān)測[1-2],并根據(jù)監(jiān)測出的數(shù)據(jù)做出相應的控制命令策略。在國家安全標準6201-2006《煤礦安全監(jiān)控系統(tǒng)通用技術(shù)要求》[3]中明確規(guī)定,對于敏感數(shù)據(jù),軟件必須保證其不可以被篡改。2015年底,《煤礦安全監(jiān)控系統(tǒng)升級改造技術(shù)方案(征求意見稿)》[4]發(fā)布并將“增加加密存儲要求”這一規(guī)則正式納入方案中。本文在煤礦安全監(jiān)控系統(tǒng)數(shù)據(jù)特殊性基礎上,經(jīng)過對DES、3DES、RSA三種加密算法的深入研究比較,提出一種適用于煤礦安全監(jiān)測系統(tǒng)的3DES-RSA混合算法,并對該算法性能做實驗測試,證明該混合算法適用于煤礦安全監(jiān)測系統(tǒng)。
DES屬于一種分組加密算法。加解密使用相同的8字節(jié)密鑰,明文和密鑰進行一系列的置換等復雜運算后最終加密數(shù)據(jù)。
DES的優(yōu)點:密鑰較短,加密處理簡單,速度快,且密文和明文長度大致相同,適合煤礦安全監(jiān)控系統(tǒng)海量數(shù)據(jù)加密的場景。DES的缺點:密鑰安全性不足,且如果通信方是多個,每個通信方發(fā)送一個密鑰,密鑰的管理成本較高。
3DES,即三重DES加密,和DES算法沒有本質(zhì)區(qū)別。DES面臨的主要問題是密鑰長度短,容易被窮舉攻擊,隨著芯片計算能力的提升,DES更容易被暴力破
解。而3DES密鑰長度是DES的3倍,彌補了DES安全性能不足的情形。
RSA是非對稱算法,加解密使用不同的密鑰。兩個密鑰都可以用于加密,解密時需要使用另一個密鑰。但是,通常用公鑰加密,私鑰解密,而公鑰是公開的,持有公鑰的用戶均可以對私鑰加密后的數(shù)據(jù)進行解密。
理論上A和B之間要通過RSA實現(xiàn)保密通信,需要A和B各自生成一組密鑰,同時保存好自己的密鑰;用對方的公鑰加密要發(fā)送的消息,用自己的私鑰解密對方發(fā)送過來的消息。RSA加密時,對要加密數(shù)據(jù)的大小有限制,最大不大于密鑰長度。
例如在使用1 024 bit的密鑰時,最大可以加密1 024/8=128 Bytes的數(shù)據(jù)。數(shù)據(jù)大于128 Bytes時,需要對數(shù)據(jù)進行分組加密,分組加密后的加密串拼接成一個字符串后發(fā)送給客戶端。如果RSA加密過程中使用的填充方式為RSA_PKCS1_PADDING[5],則明文長度最多只能是128-11=117 Bytes,如果超出,必須切割分組加密。
根據(jù)上述分析,從三個方面總結(jié)可得[6]:
(1) 加密速度。DES加密速度最快,3DES由于采用三重加密,速率是DES的三分之一,RSA最致命的缺點就是加解密速度很慢。
(2) 安全性。3DES密鑰長度是DES的三倍,彌補了DES安全性的弱點。RSA算法的安全性和大素數(shù)的位數(shù)有關(guān),當素數(shù)位數(shù)夠大時,RSA安全性最高。
(3) 密文長度。DES加密后的密文長度是8字節(jié)的整數(shù)倍,如果明文長度不夠8字節(jié),則自動補全。3DES和DES的密文長度相同。而RSA的密文長度由密鑰的長度決定,通常為了保證安全性,RSA的密鑰長度不能低于1 024位,即128字節(jié),除去7字節(jié)保留位,RSA的密文長度至少為121字節(jié)。
安全監(jiān)控系統(tǒng)所采集的數(shù)據(jù)主要是一些有害氣體和設備的實時數(shù)據(jù),按照國家煤炭安全的標準,每個傳感器設備平均每秒產(chǎn)生1條實時離散數(shù)據(jù),并且在現(xiàn)實煤礦部署中,通常情況下會有幾百甚至幾千個傳感器設備。以瓦斯傳感器為例,如果按照一年1 000個傳感器計算,每個傳感器一年產(chǎn)生數(shù)據(jù)約3 000萬條,1 000個傳感器產(chǎn)生數(shù)據(jù)總量約為300億條,每條數(shù)據(jù)由瓦斯傳感器編號、瓦斯值、數(shù)據(jù)發(fā)送時間三個屬性組成。由此可知,安全監(jiān)控系統(tǒng)中數(shù)據(jù)具有總量大、發(fā)送速率快和數(shù)據(jù)值小三個特點。
基于以上分析結(jié)論并結(jié)合煤礦安全監(jiān)控系統(tǒng)數(shù)據(jù)特殊性綜合考慮,本文提出采用3DES-RSA混合加密算法的存儲方案。3DES-RSA混合加密算法的優(yōu)勢如下:
(1) 3DES-RSA加解密速度介于RSA和DES之間,稍弱于DES算法,解決了RSA加解密算法慢的致命弱點。
(2) 3DES-RSA產(chǎn)生的密文長度和明文大致相當,大大節(jié)省數(shù)據(jù)庫文件存儲空間。
(3) 3DES-RSA較DES加長了密鑰長度,增強了安全性。
所以,從理論上來說,采用3DES-RSA混合算法,可以彌補各自的缺點,更好地提高數(shù)據(jù)存儲的加密性能和安全性,是一種適合煤礦安全監(jiān)控系統(tǒng)的數(shù)據(jù)混合加密算法。
3DES-RSA混合算法原理如圖1所示。該算法用DES算法加密明文數(shù)據(jù),同時對DES算法所用的密鑰進行RSA算法加密。將密文和加密之后的密鑰一起打包發(fā)送給接收方。接收方在接收到數(shù)據(jù)包之后,先對密鑰密文進行解密,獲取DES算法的加密密鑰。因為DES算法的加密和解密用的相同密鑰,所以獲取密鑰之后就可以對密文進行解密。
圖1 3DES-RSA混合加密算法原理
3DES-RSA混合加密算法實現(xiàn)流程如下:
(1) 由素數(shù)生成算法可以得到多個素數(shù)[7],選擇其中較大的兩個大素數(shù)p和q。通過前面所述RSA加密算法可以得到公開密鑰和私有密鑰,并將公開密鑰公布出去,保存私有密鑰。
(2) 由3DES算法產(chǎn)生的128位隨機數(shù),即密鑰,對明文信息進行加密。
(3) 用RSA算法的公鑰對3DES算法的密鑰進行加密并經(jīng)過網(wǎng)絡傳輸給接收方。接收方對接收的密文信息用RSA生成的密鑰進行解密得到3DES算法的加密密鑰,然后再對DES算法的密文進行解密。
分別對RSA和3DES-RSA兩種加密算法的存儲和查詢性能進行測試。
(1) 1 000個傳感器同時產(chǎn)生數(shù)據(jù),每個傳感器平均每年產(chǎn)生數(shù)據(jù)3 000萬條,要求一張表存儲一個傳感器的數(shù)據(jù),1 000個傳感器即對應1 000張表,每張表一年存儲約3 000萬條記錄。
(2) 存儲性能大于每秒10 000條記錄。
(3) 數(shù)據(jù)庫文件不得大于2 TB。
(4) 為了便于恢復數(shù)據(jù),日志模式設置成完整模式,并且日志文件大小不得大于2 GB。
(5) 數(shù)據(jù)庫內(nèi)存最大值設置成服務器內(nèi)存的四分之一(本文是4 GB)。
(6) 在查詢測試的流程中,需邊執(zhí)行插入操作邊查詢數(shù)據(jù)。
測試軟硬件環(huán)境配置如表1所示。
表1 測試環(huán)境配置
在安全監(jiān)控系統(tǒng)中,傳感器測點的數(shù)據(jù)值為核心數(shù)據(jù),比如瓦斯值,本文以瓦斯傳感器為例,構(gòu)造瓦斯值主數(shù)據(jù)[8-9]如表2所示。
表2 構(gòu)造數(shù)據(jù)結(jié)構(gòu)
說明:出于加密安全性考慮,且3DES是對字符串進行加密,故規(guī)定對應的表字段ItemID、Itemvalue類型設置為varchar(50),ItemSendTime datetime數(shù)據(jù)類型轉(zhuǎn)換成int類型入庫存儲。
1) 編寫加密算法。
(1) 設置密鑰長度KEYSIZE為1 024位。
(2) 以KEYSIZE為參數(shù),生成RSA加密服務實例RSACryptoServiceProvider。
(3) RSACryptoServiceProvider生成私鑰PrivateKey和公鑰PublicKey。
(4) 將所需加密的明文轉(zhuǎn)換成字節(jié)型數(shù)組BPlainText。將公鑰導入到RSACryptoServiceProvider。
(5) 通過RSACryptoServiceProvider的Encrypt()方法加密明文,并將密文轉(zhuǎn)換成字符串。
2) 編寫解密算法。
(1) 設置密鑰長度KEYSIZE為1 024位。
(2) 以KEYSIZE為參數(shù),生成RSA加密服務實例RSACryptoServiceProvider。
(3) RSACryptoServiceProvider生成私鑰PrivateKey和公鑰PublicKey。
(4) 將所需解密的密文轉(zhuǎn)換成字節(jié)型數(shù)組EncryptText。將私鑰導入到RSACryptoServiceProvider。
(5) 通過RSACryptoServiceProvider的Decrypt()方法解密密文,并將解密后的明文轉(zhuǎn)換成字符串。
3) 構(gòu)造20個線程,同時往1 000張表里面插入加密后的數(shù)據(jù),統(tǒng)計平均存儲速率。
4) 加密存儲性能數(shù)據(jù)如表3所示。
表3 加密存儲的性能實驗數(shù)據(jù)
5) 查詢和解密性能數(shù)據(jù)如表4所示。
表4 解密性能實驗數(shù)據(jù)
1) 編寫加密算法。
(1) 設置64×3位密鑰長度KEYSIZE,并自定義公共密鑰值_PKEY和初始向量_IV。
(2) 將需要加密的明文plainText轉(zhuǎn)換成字節(jié)型數(shù)組BPlainText。
(3) 實例化3DESCryptoServiceProvider類,并通過CreateEncryptor()方法加密明文plainText。
(4) 將加密后的明文BPlainText轉(zhuǎn)換成字符串。
2) 編寫解密算法。
(1) 設置64×3位密鑰長度KEYSIZE,并自定義公共密鑰值_PKEY和初始向量_IV。
(2) 將需要加密的明文EplainText轉(zhuǎn)換成字節(jié)型數(shù)組BElainText。
(3) 實例化3DESCryptoServiceProvider類,并通過CreateDecryptor()方法解密密文EplainText。
(4) 將解密后的明文PlainText轉(zhuǎn)換成字符串。
3) 構(gòu)造20個線程,同時往1 000張表里面依次插入加密后的數(shù)據(jù),統(tǒng)計平均存儲速率。
4) 加密存儲性能數(shù)據(jù)如表5所示。
表5 加密性能實驗數(shù)據(jù)
5) 查詢和解密性能數(shù)據(jù)如表6所示。
表6 解密性能實驗數(shù)據(jù)
根據(jù)上面對RSA和3DES-RSA的加解密性能實驗測試結(jié)果,下面從存儲(速率、MDF文件大小、LOG文件大小)和查詢兩個方面作比較分析。
1) 存儲:
(1) 速率。在硬件條件相同的情況下,同樣往1 000張表里面插入數(shù)據(jù),RSA的平均存儲速率約為2 400條/s,而3DES-RSA的平均存儲速率為16 000條/s,由此可知,3DES-RSA的存儲速率是RSA的8~10倍,存儲性能遠遠高于RSA。
(2) MDF數(shù)據(jù)庫文件大小。1 000張表,3DES-RSA算法每張表插入1 000萬數(shù)據(jù),此時MDF文件大小為681 GB。反觀RSA算法,每張表在插入200萬數(shù)據(jù)的情況下,MDF數(shù)據(jù)庫文件大小已經(jīng)高達2.5 TB。由此可推算,在1 000張表插入同樣數(shù)據(jù)的情況下,在MDF數(shù)據(jù)庫文件大小上RSA算法是3DES-RSA的20倍左右,而煤礦現(xiàn)場部署不可能提供如此海量的硬盤空間。
(3) LOG日志文件大小。1 000張表,對于3DES-RSA算法,每張表插入1 000萬條數(shù)據(jù)的情況下,LOG日志文件大小約為600 MB。反觀RSA算法,每張表插入200萬數(shù)據(jù)的情況下,LOG日志文件大小已經(jīng)達到600 MB。由此可推算,在1 000張表插入同樣數(shù)據(jù)的情況下,LOG文件大小RSA是3DES-RSA的3~5倍。
2) 查詢:由測試結(jié)果可知,對于RSA算法,每秒可查詢數(shù)據(jù)量約為240條,而3DES-RSA算法,每秒可查詢數(shù)據(jù)量約為7 500條,查詢性能是RSA算法的30倍左右。
綜上,從理論分析到實驗測試(存儲和查詢性能),3DES-RSA算法不管在性能還是安全上更能滿足煤礦安全監(jiān)控系統(tǒng)的現(xiàn)實需求,是一種合適的混合算法。
本文首先對DES、3DES和RSA三種加密算法從理論上進行分析比較,并結(jié)合煤礦安全監(jiān)控系統(tǒng)數(shù)據(jù)的特殊性提出一種3DES-RSA的混合加密算法。通過實驗數(shù)據(jù)分析證明,該混合算法充分發(fā)揮3DES和RSA的不同優(yōu)點,加密效率和安全性能滿足安全監(jiān)控系統(tǒng)需求,是一種適合煤礦安全監(jiān)控系統(tǒng)應用需求的混合算法。