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