◆李 燭 劉 璟
基于Web應用的安全密碼方案分設計
◆李 燭 劉 璟通訊作者
(云南大學軟件學院 云南 650504)
在Web安全通信中,安全問題經常發生,Web應用漏洞數量僅少于應用程序漏洞,Web中附帶的數據價值越來越高,數據的范圍從個人生活數據到企業數據,甚至包括一些私密信息,大量黑客瞄準了這一個巨大的黑色市場,一些企業為了節省時間開銷,往往會降低安全需求,導致一些Web安全問題發生。自密碼學技術誕生以來,加密后的數據能夠有效防止被竊取和爆破,本文結合密碼學的方案與二叉樹協議樹形結構的方案,設計了一個基于樹形結構的混合加密的方案,該方案經過兩次加密,主要針對對給服務器響應的請求所發送的內容進行解析。
Web安全;二叉樹;密碼學;混合加密;
服務器[1]具有響應Web請求、發送數據和鑒別用戶等功能,假設進入的用戶并不會立刻退出,進入N個用戶時,生成了一棵具有N個葉子節點的樹,使用樹型結構代替傳統的鏈式結構,當用戶加入、退出時,僅需要回溯改變葉子節點這一層,時間復雜度為O(log(N)),而傳統的鏈式結構,當用戶數量過多時,當用戶加入、退出時,需要對其他大部分成員進行操作,時間復雜度為O(N),二叉樹為快速查找提供了可行的解決方案。
在密碼學中,有兩種常見的密碼:第一種,對稱密碼算法[2],對稱密碼算法又叫傳統密碼算法,加密和解密的密鑰是使用同一個密鑰,常見的對稱加密算法有DES、AES等,對稱加密算法的優點顯而易見,加密速度快,效率高,對稱性加密通常在消息發送方需要加密較大數據時使用,其加密速度和加密效率較高,但是其缺點非常致命,在進行數據傳輸之前,雙方都需要保存好密鑰,如果一方密鑰被泄露,那么加密信息就不安全了。第二種,非對稱密碼算法[3]:密鑰對由公鑰和私鑰構成,公鑰加密數據能被私鑰解密。私鑰加密的數據可以被公鑰解密,比如說用于數字簽名,能夠確定發送者的身份,其缺點是速度較慢,但是其安全性高于對稱加密算法。
互聯網迅速發展,信息的安全性受到廣泛重視,Web應用[3]會有很多的用戶進入服務器,給GC帶來大量開銷,黑客使用抓包工具,對包進行修改,嘗試欺騙服務器獲得服務器權限,同時,也做好準備將Web應用的數據庫拖下來,俗稱“脫褲”,在進入大量的用戶服務器的可能性上,本文結合密碼學方案和二叉樹形結構能夠有效降低通信開銷基礎上,設計并實現了一個Web應用的安全密碼方案。
隨著Web應用的發展,越來越多的漏洞被曝光,為廠家及安全人員提供了泄漏點,進行技術革新,目前主要的Web安全攻擊方式有如下幾種:
SQL注入通過給Web服務傳入一些特殊字符,例如:一般測試是有安全防護產品 and 1=1 ,order by等,若未采取過濾措施,數據庫隱患較大。SQL 注入漏洞屬于后端的問題,在前端進入數據庫之前,也可以通過代碼進行過濾防御。
XSS攻擊全稱跨站腳本攻擊(Cross-Site Scripting),在目標網站注入一串js可執行代碼,或者是其他可執行代碼,獲取用戶的重要信息XSS攻擊主要在前端應用,通過插入惡意代碼,讓瀏覽器執行這些代碼,可以通過這種方式,打到用戶的cookie,從而欺騙服務器。
CSRF 攻擊全稱跨站請求偽造(Cross-site Request Forgery),攻擊者可以盜用使用者的身份,然后再次訪問,通過所訪問原站點所創建的HTTP請求,偽造出是該站的合法用戶,造成這個現象的原因:首先分析一個簡單的攻擊流程:(1)用戶登錄A站,并留下Cookie。(2)黑客引誘用戶訪問了B站。(3)B向A發送了一個請求,瀏覽器一般默認才有用戶的Cookie,A收到請求后,確認是用戶的信息,黑客可以在不知情的情況下冒用了受害者的信息。通常可以采取釣魚的方式,釣取管理員信息然后在冒充管理員訪問。
目錄遍歷漏洞[4]:可以通過./或者編碼,通過縱向方式,跨級訪問其父親目錄。
文件上傳漏洞:對上傳文件過濾不嚴,使其上傳了可執行的代碼,上傳的文件類型未做限制,包括后門攻擊文件,通過遠程連接,獲取了網站的shell。
目前,有兩種比較流行的加密方案:基于對稱密碼的加密方案和基于公鑰的加密方案。在增加HTTP[5]請求建立穩定的基礎上,本文結合樹結構高效分發密鑰的特別與混合密碼體制安全性較高的特點,設計并實現了一個基于Web應用的安全密碼方案,該方案實現了樹結構與混合密碼體制高安全性之間的平衡。
(1)生成會話密鑰,會話密鑰是指為本次通信而生成的臨時密鑰。
(2)對消息使用會話密鑰進行對稱加密,由于對稱加密速度較快,因此加密較大的數據和信息選擇對稱加密較為合適,但安全性沒有非對稱加密方式高。
(3)加密該會話密鑰,首先產生兩個2048字節公私鑰對,使用覆蓋子集用戶其自身的公鑰使用公鑰算法加密該會話密鑰,生成一個加密的信息。
HTTP建立鏈接集合為n,數目n為固定值,首先生成一棵樹,樹在初始化后不在變動,在樹中,使葉子節點與進入的成員關聯,成員節點包含報頭的信息,報頭信息內部含有對稱密碼算法加密的加密信息,每一個報文在傳輸之前,通過RSA算法進行加密,如圖1所示。
這個方案是一個樹型[6]結構,瀏覽器傳遞回消息前,瀏覽器首先對報文內敏感消息進行對稱加密[6],生成一個會話密鑰,用會話密鑰對消息進行對稱加密,得到加密后的密文,儲存此會話密鑰,此處使用的對稱加密的算法為DES算法。每一個會話密鑰存儲于報頭請求信息內,整個請求信息在發過去應用服務端之前,使用RSA算法進行加密,這樣,請求信息在到達Web服務端之前,經過了兩次加密,每一個到達服務器端的請求信息,成為二叉樹的葉子節點,懸掛在二叉樹上。每一個節點都擁有編號,從0開始,左子樹每個節點編號加0,右子樹每個節點編號加1,每個節點擁有其獨立的編號。樹初始化以后,葉子節點數目固定,在一定時間內生成一棵樹,瞬時進入用戶數量過多時,可以生成多棵樹。

圖1 生成二叉樹
通過仿真實驗分析該方案的存儲開銷,通信開銷之間的關系,這個仿真實驗針未一定時間段內用戶進入的問題,未考慮用戶退出問題,仿真實驗采用phython程序語言編寫,仿真平臺使用PyCharm.
在該方案中,GC需要存儲整棵二叉樹,GC需要最大的成員數目n建立密鑰樹,密鑰樹的節點總數為2^(n+1)-1,GC構造一顆二叉樹,通過葉子節點存儲二叉樹,消耗內存較多,與鏈式方式相比,鏈式結構需構造n個節點,代表n個用戶進入GC,故鏈式結構消耗內存較小,如圖2所示。

圖2 存儲開銷對比
二叉樹中,通信開銷主要包含懸掛點的ID及會話密鑰加密后的密文信息和通信白名單[7],首先要生成懸掛點,當懸掛點越多,生成的子集合越大,通信開銷越大。二叉樹在一定的組成員數目下,當用戶數目增加時,通信開銷減少,能夠快速尋找到自己需要的報文信息。通信開銷隨著用戶的增多而增加,會話密鑰加密后的密文信息,具體的開銷更具文件的大小確定,文件越大,耗費時間越長。鏈式結構,初始化后,針對每一個或多個請求信息,需要先從結構內遍歷,遍歷到需要的請求信息后,標記請求信息,選出需要的請求信息。其需要的遍歷次數增加,通信開銷增加,假設請求信息數目為n,不需要挑選的請求信息數目為r,需要的請求信息數目為n-r,遍歷至少n-r次能夠確定用戶是否為請求者,當不需要的請求信息越多時,其通信開銷越多。
本文首先介紹了一些基本的安全問題,然后為了解決安全性和通信開銷的問題,結合二叉樹插入用戶,移動用戶方便的特點和混合加密安全性高的特點,設計并實現了一個Web安全的密碼學方案。該方案存儲開銷較大,尋找請求信息效率較高。該方案為應用程序尋找相關的請求信息的速率和請求信息收發的安全性提供了安全性選擇。
[1]李曉天,陳建華.一種更安全的匿名的三因子多服務器身份認證協議的研究[J/OL].計算機應用研究:1-9[2019-09-03].https://doi.org/10.19734/j.issn.1001-3695.2019.03.0034.
[2]劉倍雄,肖巧玲,張毅,陳孟祥.基于優化對稱加密算法的網絡密碼安全傳輸研究[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應用的滲透測試系統的設計與實現[D].北京郵電大學,2016.
[5]趙琦,蔣朝惠,周雪梅,宋紫華.一種基于HTTP協議的隱蔽隧道及其檢測方法[J].計算機與現代化,2019(06):16-23+29.
[6]石博文,苑海朝,路慧澤,閆英娜.基于二叉樹和一維數組的哈夫曼編碼[J].通信技術,2017,50(05):867-872.
[7]陳萬志,李東哲.結合白名單過濾和神經網絡的工業控制網絡入侵檢測方法[J].計算機應用,2018,38(02):363-369.
國家自然科學基金資助項目(61363084)。