◆李 燭 劉 璟
基于Web應(yīng)用的安全密碼方案分設(shè)計(jì)
◆李 燭 劉 璟通訊作者
(云南大學(xué)軟件學(xué)院 云南 650504)
在Web安全通信中,安全問題經(jīng)常發(fā)生,Web應(yīng)用漏洞數(shù)量僅少于應(yīng)用程序漏洞,Web中附帶的數(shù)據(jù)價(jià)值越來越高,數(shù)據(jù)的范圍從個(gè)人生活數(shù)據(jù)到企業(yè)數(shù)據(jù),甚至包括一些私密信息,大量黑客瞄準(zhǔn)了這一個(gè)巨大的黑色市場,一些企業(yè)為了節(jié)省時(shí)間開銷,往往會(huì)降低安全需求,導(dǎo)致一些Web安全問題發(fā)生。自密碼學(xué)技術(shù)誕生以來,加密后的數(shù)據(jù)能夠有效防止被竊取和爆破,本文結(jié)合密碼學(xué)的方案與二叉樹協(xié)議樹形結(jié)構(gòu)的方案,設(shè)計(jì)了一個(gè)基于樹形結(jié)構(gòu)的混合加密的方案,該方案經(jīng)過兩次加密,主要針對對給服務(wù)器響應(yīng)的請求所發(fā)送的內(nèi)容進(jìn)行解析。
Web安全;二叉樹;密碼學(xué);混合加密;
服務(wù)器[1]具有響應(yīng)Web請求、發(fā)送數(shù)據(jù)和鑒別用戶等功能,假設(shè)進(jìn)入的用戶并不會(huì)立刻退出,進(jìn)入N個(gè)用戶時(shí),生成了一棵具有N個(gè)葉子節(jié)點(diǎn)的樹,使用樹型結(jié)構(gòu)代替?zhèn)鹘y(tǒng)的鏈?zhǔn)浇Y(jié)構(gòu),當(dāng)用戶加入、退出時(shí),僅需要回溯改變?nèi)~子節(jié)點(diǎn)這一層,時(shí)間復(fù)雜度為O(log(N)),而傳統(tǒng)的鏈?zhǔn)浇Y(jié)構(gòu),當(dāng)用戶數(shù)量過多時(shí),當(dāng)用戶加入、退出時(shí),需要對其他大部分成員進(jìn)行操作,時(shí)間復(fù)雜度為O(N),二叉樹為快速查找提供了可行的解決方案。
在密碼學(xué)中,有兩種常見的密碼:第一種,對稱密碼算法[2],對稱密碼算法又叫傳統(tǒng)密碼算法,加密和解密的密鑰是使用同一個(gè)密鑰,常見的對稱加密算法有DES、AES等,對稱加密算法的優(yōu)點(diǎn)顯而易見,加密速度快,效率高,對稱性加密通常在消息發(fā)送方需要加密較大數(shù)據(jù)時(shí)使用,其加密速度和加密效率較高,但是其缺點(diǎn)非常致命,在進(jìn)行數(shù)據(jù)傳輸之前,雙方都需要保存好密鑰,如果一方密鑰被泄露,那么加密信息就不安全了。第二種,非對稱密碼算法[3]:密鑰對由公鑰和私鑰構(gòu)成,公鑰加密數(shù)據(jù)能被私鑰解密。私鑰加密的數(shù)據(jù)可以被公鑰解密,比如說用于數(shù)字簽名,能夠確定發(fā)送者的身份,其缺點(diǎn)是速度較慢,但是其安全性高于對稱加密算法。
互聯(lián)網(wǎng)迅速發(fā)展,信息的安全性受到廣泛重視,Web應(yīng)用[3]會(huì)有很多的用戶進(jìn)入服務(wù)器,給GC帶來大量開銷,黑客使用抓包工具,對包進(jìn)行修改,嘗試欺騙服務(wù)器獲得服務(wù)器權(quán)限,同時(shí),也做好準(zhǔn)備將Web應(yīng)用的數(shù)據(jù)庫拖下來,俗稱“脫褲”,在進(jìn)入大量的用戶服務(wù)器的可能性上,本文結(jié)合密碼學(xué)方案和二叉樹形結(jié)構(gòu)能夠有效降低通信開銷基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)Web應(yīng)用的安全密碼方案。
隨著Web應(yīng)用的發(fā)展,越來越多的漏洞被曝光,為廠家及安全人員提供了泄漏點(diǎn),進(jìn)行技術(shù)革新,目前主要的Web安全攻擊方式有如下幾種:
SQL注入通過給Web服務(wù)傳入一些特殊字符,例如:一般測試是有安全防護(hù)產(chǎn)品 and 1=1 ,order by等,若未采取過濾措施,數(shù)據(jù)庫隱患較大。SQL 注入漏洞屬于后端的問題,在前端進(jìn)入數(shù)據(jù)庫之前,也可以通過代碼進(jìn)行過濾防御。
XSS攻擊全稱跨站腳本攻擊(Cross-Site Scripting),在目標(biāo)網(wǎng)站注入一串js可執(zhí)行代碼,或者是其他可執(zhí)行代碼,獲取用戶的重要信息XSS攻擊主要在前端應(yīng)用,通過插入惡意代碼,讓瀏覽器執(zhí)行這些代碼,可以通過這種方式,打到用戶的cookie,從而欺騙服務(wù)器。
CSRF 攻擊全稱跨站請求偽造(Cross-site Request Forgery),攻擊者可以盜用使用者的身份,然后再次訪問,通過所訪問原站點(diǎn)所創(chuàng)建的HTTP請求,偽造出是該站的合法用戶,造成這個(gè)現(xiàn)象的原因:首先分析一個(gè)簡單的攻擊流程:(1)用戶登錄A站,并留下Cookie。(2)黑客引誘用戶訪問了B站。(3)B向A發(fā)送了一個(gè)請求,瀏覽器一般默認(rèn)才有用戶的Cookie,A收到請求后,確認(rèn)是用戶的信息,黑客可以在不知情的情況下冒用了受害者的信息。通??梢圆扇♂烎~的方式,釣取管理員信息然后在冒充管理員訪問。
目錄遍歷漏洞[4]:可以通過./或者編碼,通過縱向方式,跨級(jí)訪問其父親目錄。
文件上傳漏洞:對上傳文件過濾不嚴(yán),使其上傳了可執(zhí)行的代碼,上傳的文件類型未做限制,包括后門攻擊文件,通過遠(yuǎn)程連接,獲取了網(wǎng)站的shell。
目前,有兩種比較流行的加密方案:基于對稱密碼的加密方案和基于公鑰的加密方案。在增加HTTP[5]請求建立穩(wěn)定的基礎(chǔ)上,本文結(jié)合樹結(jié)構(gòu)高效分發(fā)密鑰的特別與混合密碼體制安全性較高的特點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Web應(yīng)用的安全密碼方案,該方案實(shí)現(xiàn)了樹結(jié)構(gòu)與混合密碼體制高安全性之間的平衡。
(1)生成會(huì)話密鑰,會(huì)話密鑰是指為本次通信而生成的臨時(shí)密鑰。
(2)對消息使用會(huì)話密鑰進(jìn)行對稱加密,由于對稱加密速度較快,因此加密較大的數(shù)據(jù)和信息選擇對稱加密較為合適,但安全性沒有非對稱加密方式高。
(3)加密該會(huì)話密鑰,首先產(chǎn)生兩個(gè)2048字節(jié)公私鑰對,使用覆蓋子集用戶其自身的公鑰使用公鑰算法加密該會(huì)話密鑰,生成一個(gè)加密的信息。
HTTP建立鏈接集合為n,數(shù)目n為固定值,首先生成一棵樹,樹在初始化后不在變動(dòng),在樹中,使葉子節(jié)點(diǎn)與進(jìn)入的成員關(guān)聯(lián),成員節(jié)點(diǎn)包含報(bào)頭的信息,報(bào)頭信息內(nèi)部含有對稱密碼算法加密的加密信息,每一個(gè)報(bào)文在傳輸之前,通過RSA算法進(jìn)行加密,如圖1所示。
這個(gè)方案是一個(gè)樹型[6]結(jié)構(gòu),瀏覽器傳遞回消息前,瀏覽器首先對報(bào)文內(nèi)敏感消息進(jìn)行對稱加密[6],生成一個(gè)會(huì)話密鑰,用會(huì)話密鑰對消息進(jìn)行對稱加密,得到加密后的密文,儲(chǔ)存此會(huì)話密鑰,此處使用的對稱加密的算法為DES算法。每一個(gè)會(huì)話密鑰存儲(chǔ)于報(bào)頭請求信息內(nèi),整個(gè)請求信息在發(fā)過去應(yīng)用服務(wù)端之前,使用RSA算法進(jìn)行加密,這樣,請求信息在到達(dá)Web服務(wù)端之前,經(jīng)過了兩次加密,每一個(gè)到達(dá)服務(wù)器端的請求信息,成為二叉樹的葉子節(jié)點(diǎn),懸掛在二叉樹上。每一個(gè)節(jié)點(diǎn)都擁有編號(hào),從0開始,左子樹每個(gè)節(jié)點(diǎn)編號(hào)加0,右子樹每個(gè)節(jié)點(diǎn)編號(hào)加1,每個(gè)節(jié)點(diǎn)擁有其獨(dú)立的編號(hào)。樹初始化以后,葉子節(jié)點(diǎn)數(shù)目固定,在一定時(shí)間內(nèi)生成一棵樹,瞬時(shí)進(jìn)入用戶數(shù)量過多時(shí),可以生成多棵樹。
圖1 生成二叉樹
通過仿真實(shí)驗(yàn)分析該方案的存儲(chǔ)開銷,通信開銷之間的關(guān)系,這個(gè)仿真實(shí)驗(yàn)針未一定時(shí)間段內(nèi)用戶進(jìn)入的問題,未考慮用戶退出問題,仿真實(shí)驗(yàn)采用phython程序語言編寫,仿真平臺(tái)使用PyCharm.
在該方案中,GC需要存儲(chǔ)整棵二叉樹,GC需要最大的成員數(shù)目n建立密鑰樹,密鑰樹的節(jié)點(diǎn)總數(shù)為2^(n+1)-1,GC構(gòu)造一顆二叉樹,通過葉子節(jié)點(diǎn)存儲(chǔ)二叉樹,消耗內(nèi)存較多,與鏈?zhǔn)椒绞较啾?,鏈?zhǔn)浇Y(jié)構(gòu)需構(gòu)造n個(gè)節(jié)點(diǎn),代表n個(gè)用戶進(jìn)入GC,故鏈?zhǔn)浇Y(jié)構(gòu)消耗內(nèi)存較小,如圖2所示。
圖2 存儲(chǔ)開銷對比
二叉樹中,通信開銷主要包含懸掛點(diǎn)的ID及會(huì)話密鑰加密后的密文信息和通信白名單[7],首先要生成懸掛點(diǎn),當(dāng)懸掛點(diǎn)越多,生成的子集合越大,通信開銷越大。二叉樹在一定的組成員數(shù)目下,當(dāng)用戶數(shù)目增加時(shí),通信開銷減少,能夠快速尋找到自己需要的報(bào)文信息。通信開銷隨著用戶的增多而增加,會(huì)話密鑰加密后的密文信息,具體的開銷更具文件的大小確定,文件越大,耗費(fèi)時(shí)間越長。鏈?zhǔn)浇Y(jié)構(gòu),初始化后,針對每一個(gè)或多個(gè)請求信息,需要先從結(jié)構(gòu)內(nèi)遍歷,遍歷到需要的請求信息后,標(biāo)記請求信息,選出需要的請求信息。其需要的遍歷次數(shù)增加,通信開銷增加,假設(shè)請求信息數(shù)目為n,不需要挑選的請求信息數(shù)目為r,需要的請求信息數(shù)目為n-r,遍歷至少n-r次能夠確定用戶是否為請求者,當(dāng)不需要的請求信息越多時(shí),其通信開銷越多。
本文首先介紹了一些基本的安全問題,然后為了解決安全性和通信開銷的問題,結(jié)合二叉樹插入用戶,移動(dòng)用戶方便的特點(diǎn)和混合加密安全性高的特點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)Web安全的密碼學(xué)方案。該方案存儲(chǔ)開銷較大,尋找請求信息效率較高。該方案為應(yīng)用程序?qū)ふ蚁嚓P(guān)的請求信息的速率和請求信息收發(fā)的安全性提供了安全性選擇。
[1]李曉天,陳建華.一種更安全的匿名的三因子多服務(wù)器身份認(rèn)證協(xié)議的研究[J/OL].計(jì)算機(jī)應(yīng)用研究:1-9[2019-09-03].https://doi.org/10.19734/j.issn.1001-3695.2019.03.0034.
[2]劉倍雄,肖巧玲,張毅,陳孟祥.基于優(yōu)化對稱加密算法的網(wǎng)絡(luò)密碼安全傳輸研究[J].信息與電腦(理論版),2018(22):55-59.
[3]Nieves Lajara,Jose Luis Espinosa-Aranda,Oscar Deniz,Gloria Bueno. Optimum web viewer application for DICOM whole slide image visualization in anatomical pathology[J]. Computer Methods and Programs in Biomedicine,2019:179.
[4]李清華.基于Web應(yīng)用的滲透測試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京郵電大學(xué),2016.
[5]趙琦,蔣朝惠,周雪梅,宋紫華.一種基于HTTP協(xié)議的隱蔽隧道及其檢測方法[J].計(jì)算機(jī)與現(xiàn)代化,2019(06):16-23+29.
[6]石博文,苑海朝,路慧澤,閆英娜.基于二叉樹和一維數(shù)組的哈夫曼編碼[J].通信技術(shù),2017,50(05):867-872.
[7]陳萬志,李東哲.結(jié)合白名單過濾和神經(jīng)網(wǎng)絡(luò)的工業(yè)控制網(wǎng)絡(luò)入侵檢測方法[J].計(jì)算機(jī)應(yīng)用,2018,38(02):363-369.
國家自然科學(xué)基金資助項(xiàng)目(61363084)。