摘要:ASP是互聯網應用較廣泛的網站制作技術之一。該文通過介紹ASP常用的幾種加密技術,從編碼技術、雜湊函數技術及對稱加密技術三個方面分析各個方法的實用性,并提出一些合理的建議。
關鍵字:ASP加密;編碼;HASH;MS encode
中圖分類號:TP309文獻標識碼:A文章編號:1009-3044(2009)36-10597-02
Analysis of Technology on ASP Encryption
GUAN Shui-neng
(Huangshi Institute of Technology, Huangshi 435300, China)
Abstract: ASP is one of widly used website production technologies. This paper describes several commonly used ASP encryption technology, based on the coding technology, hash function, symmetric encryption technology, analysis the availability of the various methods and make some reasonable suggestions.
Key words: ASP encryption; code; HASH; MS encode
1 ASP加密概述
加密技術是信息安全采取的主要安全保密措施,是最常用的安全保密手段,利用技術手段把重要的數據變為亂碼(加密)傳送,到達目的地后再用相同或不同的手段還原(解密)。加密技術包括兩個元素:算法和密鑰。算法是將普通的文本(或者可以理解的信息)與數字密鑰的結合,產生不可理解的密文的步驟。對數據加密的技術分為兩類,即對稱加密和非對稱加密。
在本文中所指的ASP加密是種廣義加密的概念。廣義的加密是指保障數據安全的各種方式,包括編碼轉換、封裝或通過密鑰進行加密、簽名和身份認證。雖然有些不是嚴格意義的加密技術(有些方法甚至不叫加密),但作為一種加密的概念,確實早就存在。ASP廣義加密是指使用各種編碼技術、對稱加密算法、簡單異或處理及雜湊算法對ASP的代碼、關鍵數據及向數據庫傳遞的數據進行轉換處理的過程。本文先對ASP廣義加密的各種方法進行介紹,然后分析各自的實用性,并提出一些合理的建議。
2 ASP加密常用方法
ASP是Active Server pages的縮寫,是微軟提供的一種網站開發程序,是一種服務器端的指令環境,用來建立并執行交互式Web服務器應用程序。本文提到的ASP加密方法是指利用外部程序對ASP設計代碼進行處理或在ASP設計中針對敏感數據和信息的保護方法,一般有以下幾種方法。
1)使用微軟的MS Script Encode進行加密
微軟提供了腳本編碼器MS Script Encode,可以對ASP程序進行加密。這是一個簡單的命令行工具,其執行文件是SRCENC.EXE,需要在DOS下運行。它只加密頁面中嵌入的腳本代碼,把網頁中之間的ASP代碼轉換成不可讀的亂碼,其他部分則保持原樣不變。加密后的程序,必須使用Internet Explorer 5.0以上版本才能正常瀏覽。用SRCENC加密之后,文件中被加密過的部分將變成只讀類型,只要修改了加密部分,就會導致整個文件不能使用。
2)如果要保護開發的asp代碼,可以通過開發動態鏈接庫DLL組件的方法進行保護。DLL是Dynamic Link Library 的縮寫形式,是一個包含可由多個程序同時使用的代碼和數據的類庫,并不是可執行文件。動態鏈接提供了一種方法,使進程可以調用不屬于其可執行代碼的函數。
3)使用Base64編碼進行轉換所需要加密的代碼部分。Base64是網絡上最常見的用于傳輸8Bit字節代碼的編碼方式之一,可用于在HTTP環境下傳遞較長的標識信息。采用Base64編碼不僅比較簡短,同時也具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到。此方法需要用戶自己定義編碼轉換函數。
4)通過MD5函數對asp中涉及到的用戶密碼進行函數處理得到數字摘要,替換數據庫中的明文密碼。MD5即Message-Digest Algorithm 5,用于確保信息傳輸完整一致。它是計算機廣泛使用的雜湊算法之一,主流編程語言包括asp已有MD5實現。
5)通過對需要加密的代碼部分和密鑰種子進行異或處理進行加密。密鑰種子可以是種512位或1024位的數據,放在服務器較秘密的位置。這是一種簡化的對稱加密算法,需要自定義函數實現轉換。
3 asp加密技術分析
在本文提到的這些ASP加密方法實際上是在不同方面對于ASP進行安全保護,歸類于以下三種操作方式,現分別進行分析。
1)編碼技術
計算機的編碼種類比較多,對于普通ASCII字符或漢字都有各種編碼轉換方法。對于ASP程序常用的編碼主要包括GB、UTF-8、UNICODE、ASCII和BASE64等等。因為ASP源代碼是文本文件,因而對它的保護尤其重要。MS encode程序是微軟開發的一種針對ASP或網頁中客戶端腳本進行加密代碼轉換的工具。MS encode程序編碼轉換容易,和IIS結合緊密,但轉換后的代碼可以直接使用ZWDECODE程序直接解碼。如果需要保護ASP源代碼的知識產權,MS encode程序顯然用途不大。
Dll文件是被編譯過的機器代碼,如果沒有源項目文件,是很難被反編譯的,所以組件加密這種方法很安全,也不容易被破解。如果使用VB語言進行封裝的話,操作過程如下:新建一個VB的activex dll項目;編寫VB組件;生成安裝文件;在IIS服務器上安裝組件;在網頁中調用組件。
對于ASP腳本編程語言而言,還可以使用其他編碼技術進行處理。常用的有base64編碼、UNICODE編碼、UTF-8編碼和ASCII轉換。這樣就可以把ASP代碼轉換成一種不能視覺直接識別的密文,有一定的效果。但是這些密文轉換成明文比較容易,雖然可以組合其他方法使用,但筆者認為此類操作略顯繁瑣。
2)HASH函數技術
Hash函數,就是把任意長度的輸入,通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。HASH函數把一些不同長度的信息轉化成雜亂的128位或160位的編碼里,即HASH值。HASH函數一般包括MD4、MD5、SHA1等算法。
Hash函數是不可逆的,在ASP中應用是將某些特殊信息處理后保存在數據庫中。有人認為將密碼通過MD5算法處理后再保存即使被非法入侵者獲取也不可能計算出明文密碼來,這是錯誤的,入侵者可以通過網站查詢與字典暴力破解等多個方法獲取MD5密文對應的密碼明文,從而輕松入侵系統。但現階段處理網站數據庫里的密碼數據,使用hash函數生成數字摘要再進行比較,進而身份驗證是一種較常規和可用的方法。
3)對稱加密技術
對稱加密算法是應用較早的加密算法,技術成熟。在計算機系統中廣泛使用的對稱加密算法有DES、3DES、IDEA和AES。在ASP程序中完整地使用對稱加密算法并不多見,究其原因筆者認為:加密的對象不好確定,ASP文本文件、關鍵代碼或關鍵數據都有可能;密鑰不易保護;ASP頁面包含HTML代碼及特殊字符,對于特殊字符處理,程序實現有一定的難度。前面提到的簡單異或處理方法利用到對稱加密中最基本的數據分組和異或處理方法,對于處理短數據或關鍵代碼來說,方法是有一定的隱蔽性和可用性,密鑰種子也需保存安全,是一種ASP程序員基于網站內容的秘密使用。如果用此方法加密用戶名或密碼數據的話,因方法的秘密性及數據較短,破解還是有一定的難度的。
4 建議
從保護ASP文件代碼、保護隱私數據等方面,以上分析了各種ASP的加密技術。基于分析,筆者提出以下幾點建議:
1)眾所周知,ASP是一種源代碼完全公開的網站開發技術,但MS Enocde程序并不能很好地保密代碼。像某些商用ASP系統一樣,從保護自己的網站代碼和知識產權的角度出發,將關鍵ASP代碼封裝成DLL文件是種比較好的方法,使得攻擊者難以進行反編譯。封裝的DLL代碼在一定程度上可以防止SQL注入攻擊。
2)對于處理用戶密碼這種重要數據的網站程序,使用MD5函數對密碼進行雜湊函數處理成數字摘要,這是一種最常用的方法。雖然理論證明MD5算法不是絕對的安全,并且存在可能的“碰撞”,但一個復雜組合的密碼的HASH值還是很難破解的。在ASP的具體應用中,可以考慮在MD5.asp的源代碼中進行僅僅程序員本人才知道的秘密改動,這樣攻擊者知道了密文也很難暴力破解。
3)除了進行異或處理這種簡易的“類對稱”加密算法以外,還可以考慮使用DES算法或3DES等等加密算法進行加密數據。除了保護代碼,還可以對關鍵數據進行加密以后保存在數據庫中,這樣就可以對數據庫進行加密了。密鑰必須保存在一個相對比較安全的地方,這樣才能保護好ASP代碼或關鍵數據。
4)在ASP程序中暫時還無法使用基于客戶端證書的非對稱加密算法。要想基于客戶端證書進行公鑰加密或簽名,需要在.NET環境下進行設計。
5 結束語
ASP還是現階段互聯網應用較廣泛的網站制作技術之一。隨著ASP技術的推出,給網站的設計者帶來了開發的便利性及資源的共享性。從保護ASP的代碼及數據安全這兩個方面的分析,筆者認為現有的腳本語言還是有一定局限性,并不能把完整的加密簽名等信息安全技術融入其中。該文的介紹及分析僅限對于現有的ASP技術進行討論,更深入的安全方面的討論需要借助.NET平臺。
參考文獻:
[1] 陳卓,阮鷗,沈劍.網絡安全編程與實踐[M].北京:國防工業出版社,2008.
[2] 加密技術、密鑰和證書.http://www.microsoft.com/china/technet/security/guidance/secmod39.mspx.
[3] base64.http://baike.baidu.com/view/469071.htm?fr=ala0.
[4] asp加密.http://baike.baidu.com/view/25668.htm?fr=ala0.
[5] hash函數.http://baike.baidu.com/view/604021.htm.