一種基于流處理的ssl異步代理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,尤其涉及一種基于流處理的SSL異步代理方法。
【背景技術(shù)】
[0002]為了保護(hù)敏感數(shù)據(jù)在傳送過(guò)程中的安全,越來(lái)越多的企業(yè)、政府、銀行開(kāi)始部署SSL (Secure Sockets Layer,安全套接層)通信。SSL是Netscape公司所提出的安全保密協(xié)議,在瀏覽器和Web服務(wù)器之間構(gòu)造安全通道來(lái)進(jìn)行數(shù)據(jù)傳輸,SSL協(xié)議位于TCP/IP協(xié)議和各種應(yīng)用層協(xié)議之間,為應(yīng)用程序提供加密數(shù)據(jù)通道。SSL是在Internet基礎(chǔ)上提供的一種保證網(wǎng)上傳輸?shù)臄?shù)據(jù)私密性的安全協(xié)議。它能使客戶端/服務(wù)器應(yīng)用之間的通信不被攻擊者竊聽(tīng)。
[0003]為了保證數(shù)據(jù)的安全傳輸,HTTPS協(xié)議(全稱:Hypertext Transfer Protocolover Secure Socket Layer,安全超文本傳輸協(xié)議)使用對(duì)稱加密算法對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密,接收方使用和發(fā)送方相同的密鑰進(jìn)行解密,其中的密鑰是通過(guò)發(fā)送方和接收方通過(guò)交換共同的密鑰來(lái)實(shí)現(xiàn),因此,所傳送的數(shù)據(jù)不容易被網(wǎng)絡(luò)黑客截獲和解密。HTTPS實(shí)際上應(yīng)用了 Netscape的安全套接層(SSL)作為HTTP應(yīng)用層的子層。
[0004]然而,加密和解密過(guò)程需要耗費(fèi)系統(tǒng)大量的開(kāi)銷(xiāo),嚴(yán)重降低機(jī)器的性能。如果將一個(gè)網(wǎng)站所有的Web應(yīng)用都啟用SSL技術(shù)來(lái)加密,并使用HTTPS協(xié)議進(jìn)行傳輸,那么該網(wǎng)站的性能和效率將會(huì)大大降低。為了解決上述問(wèn)題,提高電子安全服務(wù)器的處理能力,因此出現(xiàn)了 SSL加速解決方案,將繁重的、極易消耗服務(wù)器CPU以及內(nèi)存資源的數(shù)據(jù)加解密處理交給專用的設(shè)備處理,而提供給服務(wù)器的是解密好的或重新加密的數(shù)據(jù),因此可以極大提高安全服務(wù)器的性能。
[0005]其中CBC (加密塊鏈模式,Cipher Block Chaining)不容易主動(dòng)攻擊,安全性好,適合傳輸長(zhǎng)度長(zhǎng)的報(bào)文等優(yōu)點(diǎn),因此大多數(shù)應(yīng)用采用此類(lèi)模式的加密算法進(jìn)行數(shù)據(jù)的加解
LU O
[0006]現(xiàn)有的SSL加速方案是在專用設(shè)備上對(duì)數(shù)據(jù)進(jìn)行以固定塊大小為單位來(lái)進(jìn)行加密或解密,現(xiàn)有技術(shù)方案加密或解密需要接收完整個(gè)數(shù)據(jù)塊再去進(jìn)行加密或解密。對(duì)于加密,首先將明文分成固定長(zhǎng)度的塊,然后將前面一個(gè)加密塊輸出的密文與下一個(gè)要加密的明文塊進(jìn)行異或操作,將計(jì)算結(jié)果再用密鑰進(jìn)行加密得到密文。對(duì)于解密,首先利用密鑰得到加密的結(jié)果,然后執(zhí)行和加密相反的操作得到明文。
[0007]由于加密或解密時(shí)數(shù)據(jù)報(bào)文以固定塊的字節(jié)長(zhǎng)度為單位分組進(jìn)行加密或解密,所以加解密數(shù)據(jù)報(bào)文時(shí)候必須以同樣的固定塊的字節(jié)長(zhǎng)度為單位進(jìn)行分組加解密;但是在實(shí)際網(wǎng)絡(luò)中數(shù)據(jù)報(bào)文的傳輸長(zhǎng)度是不確定的,則現(xiàn)有技術(shù)方案存在如下缺陷:
[0008]如果報(bào)文長(zhǎng)度不夠加密或解密需要的長(zhǎng)度時(shí),會(huì)使CPU進(jìn)行等待下一次報(bào)文到達(dá)的時(shí)候繼續(xù)進(jìn)行加密或解密,造成設(shè)備CPU效率下降。
【發(fā)明內(nèi)容】
[0009]有鑒于此,本發(fā)明提供一種基于流處理的SSL異步代理方法,解決SSL塊加密模式造成的接收數(shù)據(jù)與加密或解密不同步造成的資源浪費(fèi)問(wèn)題。
[0010]具體來(lái)說(shuō),一種基于流處理的SSL異步代理方法,應(yīng)用于SSL加速設(shè)備上,該方法包括以下步驟:
[0011]a) SSL加速設(shè)備接收主機(jī)發(fā)送的數(shù)據(jù)報(bào)文,該數(shù)據(jù)報(bào)文為明文數(shù)據(jù)報(bào)文或密文數(shù)據(jù)報(bào)文;
[0012]b)若當(dāng)前報(bào)文為明文數(shù)據(jù)報(bào)文,則提取其中明文數(shù)據(jù)進(jìn)行加密生成加密數(shù)據(jù)塊;其中該加密數(shù)據(jù)塊的長(zhǎng)度為協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍,該加密數(shù)據(jù)塊中的密文數(shù)據(jù)是由該報(bào)文的明文數(shù)據(jù)、摘要分析數(shù)據(jù)以及填充數(shù)據(jù)三個(gè)部分進(jìn)行加密生成的;將生成的加密數(shù)據(jù)塊放在報(bào)文中發(fā)送出去;
[0013]c)若當(dāng)前報(bào)文為密文數(shù)據(jù)報(bào)文則提取該報(bào)文加密數(shù)據(jù)塊中的密文數(shù)據(jù)進(jìn)行解密生成明文數(shù)據(jù);其中解密時(shí)以協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍對(duì)該密文數(shù)據(jù)進(jìn)行解密生成明文數(shù)據(jù);將生成的明文數(shù)據(jù)放在報(bào)文中發(fā)送出去。
[0014]進(jìn)一步地,所述協(xié)商的加密算法塊長(zhǎng)度為加密算法中設(shè)定的固定塊字節(jié)長(zhǎng)度。
[0015]進(jìn)一步地,所述對(duì)明文數(shù)據(jù)報(bào)文提取明文數(shù)據(jù)進(jìn)行加密生成加密數(shù)據(jù)塊,具體為:
[0016]提取明文數(shù)據(jù)報(bào)文中的明文數(shù)據(jù)并且對(duì)該明文數(shù)據(jù)進(jìn)行摘要分析,將明文數(shù)據(jù)和摘要分析數(shù)據(jù)的總長(zhǎng)度按協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍填充后進(jìn)行數(shù)據(jù)加密。
[0017]進(jìn)一步地,所述按協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍填充后進(jìn)行數(shù)據(jù)加密具體為:
[0018]將明文數(shù)據(jù)和摘要分析數(shù)據(jù)的總長(zhǎng)度與協(xié)商的加密算法塊長(zhǎng)度的差值進(jìn)行填充,填充的數(shù)據(jù)長(zhǎng)度為N- (M%N),填充的數(shù)據(jù)值為[N- (M%N) ] -1,N表示協(xié)商的加密算法塊長(zhǎng)度,M表示提取的明文數(shù)據(jù)長(zhǎng)度和摘要分析數(shù)據(jù)總長(zhǎng)度,%表示求余數(shù)。
[0019]進(jìn)一步地,所述密文數(shù)據(jù)以協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍進(jìn)行解密生成明文數(shù)據(jù),具體為:
[0020]提取密文數(shù)據(jù)報(bào)文中的密文數(shù)據(jù),將提取的密文數(shù)據(jù)以及上次解密剩余的密文數(shù)據(jù)按所述協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍取余后,剩余的密文數(shù)據(jù)保存,等待下一個(gè)密文數(shù)據(jù)報(bào)文來(lái)之后提取該報(bào)文中的密文數(shù)據(jù)與上次剩余的數(shù)據(jù)一起按協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍方式進(jìn)行解密。
[0021]進(jìn)一步地,每組密文數(shù)據(jù)最后一次解密的數(shù)據(jù)長(zhǎng)度大于或等于摘要數(shù)據(jù)與填充數(shù)據(jù)的總長(zhǎng)度并且是協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍。
[0022]本發(fā)明同時(shí)提供一種基于流處理的SSL異步處理裝置,應(yīng)用于SSL加速設(shè)備上,該裝置包括:
[0023]數(shù)據(jù)接收單元,用于接收主機(jī)發(fā)送的數(shù)據(jù)報(bào)文,該數(shù)據(jù)報(bào)文為明文數(shù)據(jù)報(bào)文或密文數(shù)據(jù)報(bào)文;
[0024]數(shù)據(jù)加密單元,用于在當(dāng)前報(bào)文為明文數(shù)據(jù)報(bào)文時(shí)提取其中明文數(shù)據(jù)進(jìn)行加密生成加密數(shù)據(jù)塊;其中該加密數(shù)據(jù)塊的長(zhǎng)度為協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍,該加密數(shù)據(jù)塊中的密文數(shù)據(jù)是由該報(bào)文的明文數(shù)據(jù)、摘要分析數(shù)據(jù)以及填充數(shù)據(jù)三個(gè)部分進(jìn)行加密生成的;將生成的加密數(shù)據(jù)塊放在報(bào)文中發(fā)送出去;
[0025]數(shù)據(jù)解密單元,用于在當(dāng)前報(bào)文為密文數(shù)據(jù)報(bào)文時(shí)提取該報(bào)文加密數(shù)據(jù)塊中的密文數(shù)據(jù)進(jìn)行解密生成明文數(shù)據(jù);其中解密時(shí)以協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍對(duì)該密文數(shù)據(jù)進(jìn)行解密生成明文數(shù)據(jù);將生成的明文數(shù)據(jù)放在報(bào)文中發(fā)送出去。
[0026]進(jìn)一步地,所述協(xié)商的加密算法塊長(zhǎng)度為加密算法中設(shè)定的固定塊字節(jié)長(zhǎng)度。
[0027]進(jìn)一步地,所述對(duì)明文數(shù)據(jù)報(bào)文提取明文數(shù)據(jù)進(jìn)行加密生成加密數(shù)據(jù)塊,具體為:
[0028]提取明文數(shù)據(jù)報(bào)文中的明文數(shù)據(jù)并且對(duì)該明文數(shù)據(jù)進(jìn)行摘要分析,將明文數(shù)據(jù)和摘要分析數(shù)據(jù)的總長(zhǎng)度按協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍填充后進(jìn)行數(shù)據(jù)加密。
[0029]進(jìn)一步地,所述按協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍填充后進(jìn)行數(shù)據(jù)加密具體為:
[0030]將明文數(shù)據(jù)和摘要分析數(shù)據(jù)的總長(zhǎng)度與協(xié)商的加密算法塊長(zhǎng)度的差值進(jìn)行填充,填充的數(shù)據(jù)長(zhǎng)度為N- (M%N),填充的數(shù)據(jù)值為[N- (M%N) ] -1,N表示協(xié)商的加密算法塊長(zhǎng)度,M表示提取的明文數(shù)據(jù)長(zhǎng)度和摘要分析數(shù)據(jù)總長(zhǎng)度,%表示求余數(shù)。
[0031]進(jìn)一步地,所述密文數(shù)據(jù)以協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍進(jìn)行解密生成明文數(shù)據(jù),具體為:
[0032]提取密文數(shù)據(jù)報(bào)文中的密文數(shù)據(jù),將提取的密文數(shù)據(jù)以及上次解密剩余的密文數(shù)據(jù)按所述協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍取余后,剩余的密文數(shù)據(jù)保存,等待下一個(gè)密文數(shù)據(jù)報(bào)文來(lái)之后提取該報(bào)文中的密文數(shù)據(jù)與上次剩余的數(shù)據(jù)一起按協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍方式進(jìn)行解密。
[0033]進(jìn)一步地,每組密文數(shù)據(jù)最后一次解密的數(shù)據(jù)長(zhǎng)度大于或等于摘要數(shù)據(jù)與填充數(shù)據(jù)的總長(zhǎng)度并且是協(xié)商的加密算法塊長(zhǎng)度的整數(shù)倍。
[0034]由此可見(jiàn),本發(fā)明提供的一種基于流處理的SSL異步代理方法和裝置,通過(guò)SSL加速設(shè)備的加密或解密流處理方式提高了設(shè)備的使用效率,SSL加速設(shè)備在異步代理模式下,使報(bào)文的接收和數(shù)據(jù)的加密或解密異步運(yùn)行,每接收到一個(gè)數(shù)據(jù)報(bào)文,就立即送到加密或解密流程進(jìn)行處理,解決了現(xiàn)有技術(shù)中需等待所有數(shù)據(jù)都接收完了才開(kāi)始加密或解密的處理方式,對(duì)應(yīng)用程序的響應(yīng)時(shí)間縮短了。進(jìn)而從整體上提高了 SSL加速設(shè)備CPU的效率。
【附圖說(shuō)明】
[0035]圖1是本發(fā)明一種基于流處理的SSL異步代理方法示意圖;
[0036]圖2是本發(fā)明一種基于流處理的SSL異步代理方法流程示意圖;
[0037]圖3是本發(fā)明一種基于流處理的SSL異步代理裝置結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0038]為了使本技術(shù)領(lǐng)域的人員更好的理解本發(fā)明實(shí)施例的方案,下面結(jié)合附圖和實(shí)施方式對(duì)本發(fā)明實(shí)施例作進(jìn)一步的詳細(xì)說(shuō)明。
[0039]首先對(duì)SSL的工作流程進(jìn)