陳金娥,陳 濤,童緒軍
(安徽醫(yī)學(xué)高等??茖W(xué)校, 安徽 合肥 230601)
21世紀(jì)以來,互聯(lián)網(wǎng)技術(shù)飛速發(fā)展,各行各業(yè)的發(fā)展對通信系統(tǒng)的依賴性越來越強(qiáng),保障通信過程中信息的安全性成為了首要任務(wù)[1-2].目前,信息安全所面臨的威脅包括:竊聽,造成秘密泄露;篡改,發(fā)送的信息被修改;偽裝,偽裝成真正的發(fā)送者;否認(rèn),事后否認(rèn)自己做過此事.這些威脅破壞信息的機(jī)密性、完整性、認(rèn)證性以及不可否認(rèn)性[3].悉宇航等[4]設(shè)計實現(xiàn)了一個基于國密算法混合加密系統(tǒng),該系統(tǒng)更適用于軍工、政府等機(jī)密要求較為嚴(yán)格的機(jī)構(gòu).鮑海燕等[5]設(shè)計了一個RSA算法、IDEA算法及MD5算法混合加密的系統(tǒng),能有效的預(yù)防外來攻擊.關(guān)宇哲等[6]設(shè)計了一個基于RSA算法和DES算法混合加密的通信系統(tǒng),通過混合算法提高加密、解密的時間效率.
通過對比分析相關(guān)學(xué)者的研究結(jié)果,本文設(shè)計了一個適用性更廣、時間效率更快、安全性更高的混合加密算法的通信系統(tǒng).本系統(tǒng)實現(xiàn)安全通信的思路如下:首先采用RSA算法對服務(wù)端和客戶端進(jìn)行雙向認(rèn)證,即驗證通信雙方證書的合法性.考慮到RSA是一種非對稱加密算法,計算較為復(fù)雜、耗時較長,不適用于對明文實時進(jìn)行加解密;從而雙向認(rèn)證通過后,采用由客戶端向服務(wù)端發(fā)送其支持的所有對稱加密算法,服務(wù)端選擇本文系統(tǒng)使用的AES-SHA組合加密算法,并將選擇結(jié)果反饋給客戶端;然后通信雙方隨機(jī)生成一個通信會話密鑰,該隨機(jī)密鑰在通信雙方發(fā)送接收數(shù)據(jù)的加解密過程中被使用;最后通過SHA算法對數(shù)據(jù)的完整性、準(zhǔn)確性進(jìn)行驗證,從而能有效避免接收篡改后的數(shù)據(jù),保障系統(tǒng)的安全性.
RSA算法是目前最常用的非對稱加密算法之一[7],算法首先需要生成一對公鑰pk和私鑰sk,然后使用pk對明文進(jìn)行加密,使用sk對密文進(jìn)行解密,大致歸結(jié)為以下步驟:
(1)選擇兩個大素數(shù)x和y;
(2)計算a=x*y;
(3)計算b=(x- 1)*(y- 1);
(4)選擇公鑰指數(shù)k,k小于b且不是b的因子;
(5)計算私鑰指數(shù)t,t小于b且根據(jù)(k*t)modb= 1計算出t;
(6)生成公鑰pk=(a,k),私鑰sk=(a,t);
(7)明文M加密成密文C,C = Mkmod a;
(8)密文C解密成明文M,M = Ctmod a.
分析以上步驟可以得出,RSA算法的安全性與大整數(shù)做因數(shù)分解的難度密切相關(guān),即算法的安全性與公私鑰的位數(shù)相關(guān),位數(shù)越大越安全.然而,RSA算法的加解密的運算都是指數(shù)級的運算,計算起來較為復(fù)雜,耗時較長.綜合考慮之后,本系統(tǒng)選擇了2048位的公私鑰,既能大概率保證RSA算法的安全性,又能節(jié)省加密解密的耗時.
AES算法是一種對稱加密算法,相對于非對稱加密算法來說,加解密的速度會快幾百倍[8],因此在雙方通信證書驗證通過后,將改為使用AES算法對雙方發(fā)送的數(shù)據(jù)進(jìn)行加解密.AES算法加密過程如圖1所示.
圖1 AES算法的加密過程
解密過程是加密過程的逆操作,加解密使用的密鑰是相同的.根據(jù)AES算法的加解密流程可知其安全性的關(guān)鍵是保障密鑰的安全,而密鑰的安全性是由加密鏈中的RSA算法保障的.根據(jù)密鑰長度分為3個版本AES-128、AES-192、AES-256,為了加快其加解密的速度,本文系統(tǒng)選擇了AES-128版本.
SHA算法是繼MD5算法之后使用最廣泛的Hash加密算法,該算法具有加密不可逆性,通常用作數(shù)字簽名,來驗證數(shù)據(jù)簽名的合法性.本文系統(tǒng)選擇采用SHA-256加密算法,該算法相對于MD5、SHA1算法的耗時要高200 ms左右,但是安全性較高,綜合考慮還是通過犧牲一點時間換數(shù)據(jù)的安全性.
綜上所述,本文系統(tǒng)是由RSA算法、AES算法和SHA算法混合形成了一套安全的通信加密鏈.RSA算法的優(yōu)點是安全性高,因此通信雙方使用其傳遞并協(xié)商通信密鑰;其缺點是加解密計算耗時長,因此當(dāng)通信雙方協(xié)商好通信密鑰后,將改為使用AES算法對數(shù)據(jù)進(jìn)行加解密操作.在整個系統(tǒng)的通信過程中,RSA算法對數(shù)據(jù)加解密的運算量占比非常小,因此其對整個系統(tǒng)的加解密耗時影響可忽略不計[9-10].加密密鑰協(xié)商完成之后,將使用AES算法和SHA算法一起對通信雙方發(fā)送的數(shù)據(jù)進(jìn)行加解密操作,從而實現(xiàn)保障通信過程中雙方數(shù)據(jù)的安全.
本文是基于混合RSA算法、AES算法及SHA算法實現(xiàn)的安全通信系統(tǒng),通信系統(tǒng)建立連接的流程如圖2所示.
圖2 通信系統(tǒng)建立連接的流程圖
當(dāng)客戶端向服務(wù)端發(fā)起通信連接請求后,首先雙方根據(jù)證書對其身份的合法性進(jìn)行驗證,驗證通過后雙方使用RSA算法商榷出用于之后通信使用的加密算法AES和加密密鑰,最后再通過SHA算法對接收數(shù)據(jù)進(jìn)行簽名驗證.雙方握手通信的具體步驟如下所示:
(1)客戶端A向服務(wù)端B發(fā)起通信連接的請求, A將生成的第1個隨機(jī)數(shù)random_f和通信雙方支持的加密算法cipher suites列表一起發(fā)送給B.其中random_f需要A和B雙方各自保存好,生成通信加密密鑰時會用到.
(2)服務(wù)端B接收到連接請求后, B將其證書cert_s、生成的第2個隨機(jī)數(shù)random_s和在cipher suites中選擇的加密套件一起發(fā)送給A,并向A索要證書,來驗證A的身份的合法性.其中random_s也需要A和B雙方各自保存好,生成通信加密密鑰時會用到.
(4)服務(wù)端B對客戶端A的cert_c進(jìn)行驗證,驗證失敗則會斷開通信連接,并給出相應(yīng)的錯誤提示;驗證成功后,B使用自己的私鑰key_s將pre-master解密,將解密后的pre-master、random_f和random_s一起計算生成AES算法的通信密鑰session_secret_s.
(5)客戶端A將pre-master、random_f、random_s一起計算生成AES算法的通信密鑰session_secret_c,A使用SHA-256算法將“步驟3”中發(fā)送的數(shù)據(jù)進(jìn)行計算后得到hash值,然后通過AES算法使用session_secret_c對hash值加密后得到handshake_message_c,A將handshake_message_c通過B的公鑰key_p使用RSA算法加密后發(fā)送給B進(jìn)行數(shù)據(jù)簽名驗證.
(6)服務(wù)端B使用自己的私鑰key_s將收到數(shù)據(jù)進(jìn)行解密,然后使用“步驟4”中的session_secret_s對handshake_message_c進(jìn)行解密,解密得到的hash值和 “步驟4”中接收到的數(shù)據(jù)使用SHA-256算法計算后得到的hash值進(jìn)行比較,比較結(jié)果相同則簽名驗證成功,表示數(shù)據(jù)沒有遭到篡改,是A發(fā)送的完整數(shù)據(jù).B通過同樣的方法計算生成簽名數(shù)據(jù)handshake_message_s,并將handshake_message_s通過A公鑰key_pc使用RSA算法加密后發(fā)送給A進(jìn)行數(shù)據(jù)簽名驗證.
(7)客戶端A使用自己的私鑰key_sc將收到的數(shù)據(jù)進(jìn)行解密,然后使用“步驟5”中的session_secret_c對收到的加密數(shù)據(jù)handshake_message_s進(jìn)行解密,解密得到的hash值和“步驟3”中接收到的數(shù)據(jù)使用SHA-256算法計算后得到hash值進(jìn)行比較,比較結(jié)果相同則簽名驗證成功,表示數(shù)據(jù)沒有遭到篡改,是B發(fā)送的完整數(shù)據(jù).此時通信雙方的通信加密協(xié)議和通信加密密鑰協(xié)商完成,安全通道正式建立.
通信系統(tǒng)在雙方通信的過程中,會面臨各種各樣的攻擊風(fēng)險,其中主要存在以下幾方面的安全風(fēng)險如圖3所示.本文系統(tǒng)通過各種技術(shù)手段和管理措施,使系統(tǒng)正常工作,從而確保通信系統(tǒng)的可用性、完整性和保密性.
圖3 通信過程中面臨的幾種風(fēng)險
(1)竊取信息的情況分析
有些不法分子通過網(wǎng)絡(luò)監(jiān)聽系統(tǒng)通信過程中發(fā)送的數(shù)據(jù)信息,可能會獲取到雙方通信的公鑰和通過公鑰加密的通信密鑰.2009年RSA-729算法已經(jīng)被成功破解,因此RSA-1024算法的安全性受到威脅.根據(jù)之前RSA算法的原理分析,算法的破解難度在于大素數(shù)的分解,窮舉難度大,耗時長,當(dāng)位數(shù)足夠大時,算法的安全性是能夠得到保障的.本文系統(tǒng)選擇的2048位RSA算法,安全性高,因此通信過程中即使被人監(jiān)聽獲取數(shù)據(jù)信息后,也不能在短時間通過公鑰破解出私鑰,再通過私鑰破解出通信的加密密鑰,再通過加密密鑰破解出通信過程中的明文,系統(tǒng)的安全性有保障.
(2)篡改數(shù)據(jù)的情況分析
語言作為一種重要的非物質(zhì)文化要素,是推動歷史發(fā)展和社會進(jìn)步的重要力量,是文化得以發(fā)生、發(fā)展、傳遞的根本保證,因此應(yīng)該把開發(fā)和運用方言所承載的優(yōu)秀文化視為當(dāng)前語言文字工作中的重點。在語言可持續(xù)發(fā)展道路上,要突出方言文化多元豐富的特色,要依靠新技術(shù)、新媒體進(jìn)行創(chuàng)新傳播,最大程度地激發(fā)大眾的自我需求和文化認(rèn)同,真正做到在新媒體環(huán)境下保護(hù)、傳播和傳承優(yōu)秀傳統(tǒng)文化。
有些不法分子通過網(wǎng)絡(luò)截獲到系統(tǒng)雙方的通信數(shù)據(jù)后,將數(shù)據(jù)進(jìn)行篡改后再發(fā)送給對方,想通過發(fā)送篡改數(shù)據(jù)來攻擊通信系統(tǒng),造成通信系統(tǒng)數(shù)據(jù)的損壞.本文系統(tǒng)在發(fā)送數(shù)據(jù)的同時會將數(shù)字簽名信息一起發(fā)送過去,當(dāng)數(shù)據(jù)遭到篡改以后,接收方通過驗證數(shù)字簽名即可發(fā)現(xiàn)數(shù)據(jù)的完整性遭到破壞,則會自動丟棄數(shù)據(jù),并斷開連接來保障系統(tǒng)的安全性.
(3)偽裝通信雙方的情況分析
有些不法分子在通信雙方建立連接時,截取雙方的通信證書,并將自己生成的偽造證書發(fā)送給雙方,想充當(dāng)中間者跟雙方建立通信連接,從而給雙方發(fā)送虛假數(shù)據(jù).本文系統(tǒng)中雙方各有一個CA證書,CA證書能判斷發(fā)送者的證書是否是經(jīng)過CA證書認(rèn)證過的安全證書.當(dāng)有中間人將通信證書替換為自己生成的證書來進(jìn)行通信時,在CA證書認(rèn)證的過程中會被判斷出是假證書,從而斷開連接,保證系統(tǒng)的安全性.
通過對以上幾種安全威脅情況的分析可以看出,本文系統(tǒng)對于以上幾種安全攻擊行為,都有對應(yīng)措施來避免系統(tǒng)遭到攻擊.因此當(dāng)通信雙方成功建立通信連接后,通信雙方發(fā)送數(shù)據(jù)的安全性能夠得到保障.
采用C/S架構(gòu)模式,運用IDEA工具進(jìn)行系統(tǒng)測試和開發(fā),雙方通信連接遵循HTTP協(xié)議.服務(wù)器和客戶端均使用java語言進(jìn)行開發(fā),搭建SSM框架(Spring+SpringMVC+MyBatis),應(yīng)用MySQL數(shù)據(jù)庫.本文系統(tǒng)主要實現(xiàn)了雙向認(rèn)證后的安全的實時通信功能,針對系統(tǒng)實現(xiàn)的功能分別進(jìn)行功能測試、運行時間效率測試以及系統(tǒng)安全性的測試.
首先測試系統(tǒng)雙方建立安全通信連接的功能,能保證客戶端連接的服務(wù)端是指定合法服務(wù)端,保證服務(wù)端連接的客戶端是合法授權(quán)的客戶端,即雙向認(rèn)證的過程.然后再測試雙方發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的功能,具體的測試內(nèi)容和反饋結(jié)果如表1所列.
表1 系統(tǒng)功能測試表
本文系統(tǒng)的服務(wù)端是支持多用戶并發(fā)訪問進(jìn)行通信連接的,因此系統(tǒng)的運行效率對用戶的使用體驗至關(guān)重要.系統(tǒng)的運行時間效率主要包括兩方面:建立通信連接的時間效率和通信發(fā)送數(shù)據(jù)的時間效率.本文系統(tǒng)主要針對這兩方面的時間效率進(jìn)行了測試和優(yōu)化.首先測試系統(tǒng)的通信建立連接時間,如圖4所示.本文共進(jìn)行30次實驗測試,根據(jù)30次實驗結(jié)果數(shù)據(jù)取平均值得到的通信建立連接時間為155 ms,符合預(yù)期效果.
圖4 系統(tǒng)建立通信連接的時間
然后再對系統(tǒng)發(fā)送數(shù)據(jù)的加密解密時間進(jìn)行測試,對于20個字節(jié)的數(shù)據(jù)進(jìn)行加密解密操作一共耗時28 ms.為了檢測本文系統(tǒng)的時間效率有沒有優(yōu)化,將與文獻(xiàn)[5]中的基于公鑰密碼的通信網(wǎng)絡(luò)安全加密系統(tǒng)和文獻(xiàn)[6]中的基于混合加密算法的通信網(wǎng)絡(luò)密文防丟失傳輸加密系統(tǒng)作為對照組,共同完成性能驗證.對本文系統(tǒng)的加密解密速度進(jìn)行測試實驗共30次,利用3個大小分別為466944字節(jié)即456 KB(文件1)、4739564字節(jié)即4.52 MB(文件2)和93847556字節(jié)即89.5 MB(文件3)的文件進(jìn)行測試,將30組測試結(jié)果取平均值.不同加密系統(tǒng)的加密解密耗時測試結(jié)果如圖5所示.
圖5 系統(tǒng)對文件加密解密的耗時
由圖5可以看出:本文系統(tǒng)的加密解密過程平均耗時在1 300 ms左右,文獻(xiàn)[5]系統(tǒng)的加密解密過程平均耗時在1 500 ms左右,文獻(xiàn)[6]系統(tǒng)的加密解密過程平均耗時將近2 500 ms左右.由此可以看出:本文系統(tǒng)所提出的基于混合加密算法的安全通信系統(tǒng)的系統(tǒng)耗時更短,整體性能得到優(yōu)化.
為了對本文系統(tǒng)的安全性進(jìn)行驗證,在系統(tǒng)雙方進(jìn)行數(shù)據(jù)通信時,采用wiershark抓包工具對其數(shù)據(jù)進(jìn)行捕獲,進(jìn)而模擬通信數(shù)據(jù)被監(jiān)聽的情況.捕獲數(shù)據(jù)內(nèi)容和發(fā)送數(shù)據(jù)進(jìn)行對比如表2所列.
表2 系統(tǒng)發(fā)送數(shù)據(jù)與抓包數(shù)據(jù)對比
由表2可以看出,系統(tǒng)的通信數(shù)據(jù)被不法分子截獲以后,不能在短時間內(nèi)破解出通信明文的內(nèi)容.當(dāng)發(fā)送明文數(shù)據(jù)微小變化時,觀察到捕獲的信息變化很大,即系統(tǒng)加密的“雪崩效應(yīng)”好,從而能保證通信系統(tǒng)數(shù)據(jù)的安全性.
本文中設(shè)計實現(xiàn)了一種基于混合加密算法的安全通信系統(tǒng),根據(jù)RSA算法、AES算法以及SHA算法各自的優(yōu)勢融合組成了一套安全的加密鏈,實現(xiàn)了系統(tǒng)雙方安全即時通信,并通過測試驗證了系統(tǒng)的高效性和有效性.
(1)系統(tǒng)在雙方首次握手連接時通信時耗為155 ms左右,發(fā)送數(shù)據(jù)的耗時大小跟數(shù)據(jù)的大小密切相關(guān),測試時對于10字節(jié)的數(shù)據(jù),數(shù)據(jù)從發(fā)送方到接收方的耗時為20 ms;對于20字節(jié)的數(shù)據(jù),數(shù)據(jù)從發(fā)送方到接收方的耗時為28 ms.由此可看出:當(dāng)通信雙方發(fā)送數(shù)據(jù)不頻繁時,應(yīng)當(dāng)采用短鏈接,雖然首次握手的耗時長,但相對于不發(fā)送數(shù)據(jù)卻一直占用通信通道所消耗的資源來說可以忽略不計;當(dāng)通信雙方發(fā)送數(shù)據(jù)頻繁,且即時性要求高時,應(yīng)當(dāng)采用長連接,從而避免不斷地重新建立通信連接導(dǎo)致增加系統(tǒng)的響應(yīng)耗時.
(2)系統(tǒng)通信雙方收發(fā)數(shù)據(jù)時獲得的數(shù)據(jù)是明文顯示的,發(fā)送過程中的加密過程被黑盒化,但是當(dāng)?shù)谌酵ㄟ^抓包工具截獲的數(shù)據(jù)確實經(jīng)過系統(tǒng)加密后的數(shù)據(jù).由此可以看出系統(tǒng)只會對通信雙方展示明文數(shù)據(jù),其他人獲取到的數(shù)據(jù)都是經(jīng)過加密后的數(shù)據(jù).
與之前傳統(tǒng)的SSL通信加密系統(tǒng)相比,本文所提出的系統(tǒng)在整個通信過程中的耗時較短、安全性也能得到很好的保障.下一步將計劃考慮通信數(shù)據(jù)的存取效率的問題,將重要的通信數(shù)據(jù)已密文的方式進(jìn)行存儲,當(dāng)需要獲取數(shù)據(jù)時再將密文轉(zhuǎn)換成明文的形式[11-12].當(dāng)然,現(xiàn)在應(yīng)用的通信算法也面臨著攻擊破解的風(fēng)險,隨著加密算法的不斷成熟,應(yīng)該不斷地對系統(tǒng)的加密算法進(jìn)行更新替換,從而不斷地提高系統(tǒng)的安全性.
蘭州文理學(xué)院學(xué)報(自然科學(xué)版)2022年5期