《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 一種改進URL保護算法研究
一種改進URL保護算法研究
2016年微型機與應(yīng)用第04期
章紅琴1,張文盛2
(1.安徽繼遠軟件有限責任公司,安徽 合肥 230088;2.安徽廣播電視大學(xué),安徽 合肥 230022)
摘要: 針對傳統(tǒng)URL保護算法存在暴露實現(xiàn)細節(jié)的問題,提出一種采用MD5和AES保護URL的改進算法,。首先將原始URL和密鑰key1按規(guī)定順序裝配,,計算MD5檢驗和,,并將檢驗和嵌入原始URL得到防篡改URL,;其次使用密鑰key2對防篡改URL執(zhí)行AES加密得到加密URL,;最后對加密URL進行編碼,,得到受保護URL,。解析過程逆向操作,期間驗證檢驗和,,丟棄無效請求,。在PHP中測試兩種保護算法的性能,結(jié)果表明改進算法與傳統(tǒng)算法相比,,生成速度變?yōu)樵瓉淼?倍,,解析速度變?yōu)樵瓉淼?.8倍。而相比傳統(tǒng)算法,,改進算法具有保密性特點,,能夠提高Web應(yīng)用的安全性。
Abstract:
Key words :

  章紅琴1,張文盛2

  (1.安徽繼遠軟件有限責任公司,安徽 合肥 230088;2.安徽廣播電視大學(xué),安徽 合肥 230022)       摘要:針對傳統(tǒng)URL保護算法存在暴露實現(xiàn)細節(jié)的問題,,提出一種采用MD5和AES保護URL的改進算法,。首先將原始URL和密鑰key1按規(guī)定順序裝配,計算MD5檢驗和,,并將檢驗和嵌入原始URL得到防篡改URL,;其次使用密鑰key2對防篡改URL執(zhí)行AES加密得到加密URL;最后對加密URL進行編碼,,得到受保護URL,。解析過程逆向操作,期間驗證檢驗和,,丟棄無效請求,。在PHP中測試兩種保護算法的性能,,結(jié)果表明改進算法與傳統(tǒng)算法相比,生成速度變?yōu)樵瓉淼?倍,,解析速度變?yōu)樵瓉淼?.8倍,。而相比傳統(tǒng)算法,改進算法具有保密性特點,,能夠提高Web應(yīng)用的安全性,。

  關(guān)鍵詞:URL保護;Web安全;信息泄露;語義攻擊

0引言

  URL是Web應(yīng)用的重要組成部分,不重視URL的保護會造成不良后果,。一些Web應(yīng)用將用戶名和密碼等敏感信息嵌入URL實現(xiàn)特定功能,,而瀏覽器都有記錄訪問歷史功能,將用戶訪問的敏感URL記錄下來,,一旦黑客有機會掃描和分析該記錄,就會造成信息泄露[1],。此外在大量的Web應(yīng)用中,數(shù)據(jù)庫使用自增id作為記錄的鍵值,,并在URL的請求參數(shù)直接嵌入該鍵值,生成類似于show.php?id=9的URL,,惡意用戶據(jù)此可推測出數(shù)據(jù)庫實現(xiàn)方式,,偽造其他請求參數(shù),例如id=10對數(shù)據(jù)庫進行語義攻擊,,訪問到應(yīng)該受限的資源[2],。URL保護是對URL進行適當?shù)奶幚恚沤^此類不良后果,,提高Web安全性,。

  URL保護內(nèi)容包括結(jié)構(gòu)、編碼和算法等多方面,,重點是保護算法,。在設(shè)計URL保護算法時,需要考慮多個因素,,包括保護強度,、解析效率和編程接口復(fù)雜度等。URL保護算法越復(fù)雜,,保護強度也就越高,,而每次訪問都需要進行URL解析,相應(yīng)的開銷也就越大,,特別對于訪問量較大的應(yīng)用,,更是需要慎重設(shè)計,要在幾個因素之間找到一個平衡點,。本文遵從該設(shè)計原則,,提出一種URL保護算法,,在盡量降低解析開銷的同時,實現(xiàn)URL的保密性和抗篡改特性,。

1相關(guān)研究

  目前URL保護算法研究主要采用MD5算法[35],。MD5是一種散列算法,能夠?qū)⑷我忾L的字符串計算成為一個128 bit的值,,具有很強的抗碰撞攻擊能力[6],。這類URL保護算法的處理過程是:首先將原始URL字符串s1和一個密鑰字符串key拼接形成字符串s2;其次計算s2的MD5檢驗和,;最后將檢驗和嵌入s1成為字符串s3,,s3是供用戶訪問的最終URL。用戶訪問最終URL時,,系統(tǒng)完成驗證檢驗和的工作,。其工作原理如圖1和圖2所示。

  

001.jpg

  傳統(tǒng)URL保護算法的核心是密鑰key,,由于MD5是不可逆算法,,想要反推出密鑰key,是極其困難的,。沒有圖2傳統(tǒng)URL保護算法解析URL過程

  密鑰key, 想要計算出含攻擊意圖的s1且能夠通過驗證,,即碰撞攻擊,也是極其困難的,。因此MD5能夠有效保護URL不被篡改,,保證用戶訪問的URL都是合法的。但是這些研究未考慮明文請求參數(shù)的信息泄漏問題,,還需要完善,。本文提出一種URL保護算法,既能防篡改,,又能保密,,可以大幅提升Web應(yīng)用安全。

2改進URL保護算法

  改進URL保護算法采用MD5和AES共同保護URL,。AES是一種對稱加密算法,,屬于分組密碼,具有很強的抗分析能力[78],。規(guī)定雙引號為字符串定界符,,雙引號之間的字符為字符串內(nèi)容,“+”為字符串拼接運算符,,則改進算法的具體執(zhí)行過程是:

 ?。?)將請求參數(shù)s1和密鑰key1按規(guī)定順序裝配成字符串s2=key1+s1;

  (2)計算s2的MD5檢驗和v=md5(s2),;

 ?。?)將檢驗和v嵌入s1成為新請求字符串s3="v="+v+"&"+s1;

 ?。?)對s3使用密鑰key2執(zhí)行AES加密得到字符串s4=aes(s3,key2),;

  (5)對s4使用改進base64編碼成為字符串s5=base64_encode_ex(s4),,得到最終URL,。

  (6)解析過程逆向操作,,期間驗證檢驗和,,丟棄無效請求。

  其工作原理如圖3,、圖4所示,。

  

  本算法的改進之處在于,在MD5實現(xiàn)防篡改特性基礎(chǔ)之上,,使用AES加密算法加強信息泄露保護,,從而實現(xiàn)保密特性。在算法設(shè)計上,,做如下幾點說明:

 ?。?)雖然AES已經(jīng)可以很好地保護URL,但是為了強化保護能力,,繼續(xù)保留key1用于MD5計算,;

 ?。?)使用AES解密偽造的URL時,,可能不會出錯,但會得到亂碼字符串,,對后續(xù)步驟的執(zhí)行造成干擾,,為了更好地檢測這種攻擊,在將檢驗和嵌入s3時,,特意增加"v="標識,,便于驗證和丟棄無效的請求;

 ?。?)AES加密生成的是二進制字符串,,需要用base64編碼成為可以傳輸?shù)淖址5莃ase64編碼中存在+/字符,,不是URL兼容的,,本算法采用改進base64 算法,將+/替換為_*。

 ?。?)為了支持AJAX,,允許在保護URL后面拼接其他請求參數(shù),但是不允許覆蓋保護URL中的參數(shù),。

3算法實現(xiàn)

  下面給出改進算法的PHP實現(xiàn),。改進算法需要多個參數(shù),將其封裝成配置參數(shù)對象,,結(jié)構(gòu)如下:

  $cfg = new stdClass();

  $cfg->key1 = 123456;//md5密鑰

  $cfg->aes= aes128;//aes加密標準

  $cfg->key2 = 111111;//aes密鑰

  $cfg->iv = kl3j42;l4j2;lkj4;

  //aes iv值,,初始向量

  3.1生成算法

  //$s1為請求參數(shù)串,$cfg為配置參數(shù)對象

  function createLink($s1, $cfg)

  {

  $v = md5($cfg->key1 . $s1);//生成檢驗和

  $s2 = v= . $v .& . $s1;

  $s3 = openssl_encrypt($s2, $cfg->aes, $cfg->key2, true, $cfg->iv);//加密

  $s4=strtr(base64_encode($s3), +/,_*);;

  //使用改進base64編碼處理

  return $s4;

  }

  3.2解析算法

  //$s5為安全URL串,$cfg為配置參數(shù)對象

  function parseLink($s5, $cfg)

  {

  $s4 = base64_dencode(strtr($s5,_*,+/));//解碼

  if($s4 === false) return false;//解碼失敗

  $s3 = openssl_decrypt($s4, $cfg->aes, $cfg->key2, true, $cfg->iv);

  if($s3 === false) return false;//解密失敗

  $i = strpos($s3,&);

  if($i === false) return false;//未找到&

  $v=substr($s3, 0, $i);

  //$i是長度,解析嵌入的檢驗和

  if($i <> 34 || substr($v, 0, 2) <>v=) return false;//長度或標識不符

  $v = substr($v, 2);//取檢驗和

  $s1 = substr($s3, $i + 1);//解析s1

  $s2 = $cfg->key1 . $s1;

  $v2 = md5($s2);//計算檢驗和

  if($v <> $v2) return false;//比較檢驗和

  return $s1;

  }

4性能測試

  分別測試傳統(tǒng)算法和改進算法的性能開銷,。測試環(huán)境硬件為Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz CPU,軟件為Windows 2003(x86_32,企業(yè)版) + PHP 5.3.13(nts,x86_32),。采用兩組s1輸入,每次測試3次,,取平均值,,測試結(jié)果如表1所示。

  從表1可以看出,,改進算法生成時間比傳統(tǒng)算法生成時間增加(a2-a1)/a1=2倍左右,,改成算法解析時間比傳統(tǒng)算法解析時間增加(a4-a2)/a2=0.8倍左右。此外解析時間比生成時間都要長,,傳統(tǒng)算法解析時間是傳統(tǒng)算

004.jpg

  法生成時間的(a2-a1)/a1=1.8倍左右,改進算法解析 時間是改進算法生成時間的(a4-a3)/a3=0.7倍左右,。還可以分析出當字符串長度從10增加到100時,相應(yīng)的處理時間增加不到10%,,說明字符串長度增加對算法性能的影響不是很大,。

5結(jié)論

  保護URL能提高Web應(yīng)用的安全性,傳統(tǒng)URL保護算法存在信息泄漏問題,,為此本文設(shè)計了一種改進URL保護算法,,既能防篡改,又能防止信息泄漏,,能夠全面保護URL,。在給出實現(xiàn)代碼的同時,測試了兩種算法的性能,,結(jié)果表明改進算法性能并沒有大幅下降,,可以滿足大多數(shù)Web應(yīng)用的需求。

  參考文獻

 ?。?] 朱小龍,孫國梓.瀏覽器歷史痕跡提取技術(shù)[J].信息網(wǎng)絡(luò)安全,2013(1):19-21.

 ?。?] 熊婧.SQL注入檢測技術(shù)研究[D].武漢:華中科技大學(xué),2009.

  [3] 杜恩寬.URL攻擊防范和細粒度權(quán)限管理的安全鏈接方法[J].計算機應(yīng)用,2009, 29(8):2230-2232.

 ?。?] 劉國卿.基于MD5 的URL 防篡改算法設(shè)計[J].科技信息,2011(3):504505,536.

 ?。?] 張杰,李華偉,周立軍.一種采用MD5加密算法防止URL攻擊的方法[J].現(xiàn)代計算機, 2014(4):52-54.

 ?。?] 毛熠,陳娜.MD5算法的研究與改進[J].計算機工程,2012,38(24):111-114,118.

  [7] 趙雪梅.AES加密算法的實現(xiàn)及應(yīng)用[J].常熟理工學(xué)院學(xué)報,2010,24(2):105-110.

 ?。?] 楊斐,彭鵬.基于AES的可重構(gòu)加密系統(tǒng)的FPGA設(shè)計[J].微型機與應(yīng)用,2014,33(24):2-4.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。