ASP加密技術簡析(一)
加密技術是信息安全采取的主要安全保密措施,是最常用的安全保密手段,利用技術手段把重要的數(shù)據(jù)變?yōu)閬y碼(加密)傳送,到達目的地后再用相同或不同的手段還原(解密)。加密技術包括兩個元素:算法和密鑰。算法是將普通的文本(或者可以理解的信息)與數(shù)字密鑰的結(jié)合,產(chǎn)生不可理解的密文的步驟。對數(shù)據(jù)加密的技術分為兩類,即對稱加密和非對稱加密。
在本文中所指的ASP加密是種廣義加密的概念。廣義的加密是指保障數(shù)據(jù)安全的各種方式,包括編碼轉(zhuǎn)換、封裝或通過密鑰進行加密、簽名和身份認證。雖然有些不是嚴格意義的加密技術(有些方法甚至不叫加密),但作為一種加密的概念,確實早就存在。ASP廣義加密是指使用各種編碼技術、對稱加密算法、簡單異或處理及雜湊算法對ASP的代碼、關鍵數(shù)據(jù)及向數(shù)據(jù)庫傳遞的數(shù)據(jù)進行轉(zhuǎn)換處理的過程。本文先對ASP廣義加密的各種方法進行介紹,然后分析各自的實用性,并提出一些合理的建議。
一、ASP加密常用方法
ASP是Active Server pages的縮寫,是微軟提供的一種網(wǎng)站開發(fā)程序,是一種服務器端的指令環(huán)境,用來建立并執(zhí)行交互式Web服務器應用程序。本文提到的ASP加密方法是指利用外部程序?qū)SP設計代碼進行處理或在ASP設計中針對敏感數(shù)據(jù)和信息的保護方法,一般有以下幾種方法。
1、使用微軟的MS Script Encode進行加密
微軟提供了腳本編碼器MS Script Encode,可以對ASP程序進行加密。這是一個簡單的命令行工具,其執(zhí)行文件是SRCENC.EXE,需要在DOS下運行。它只加密頁面中嵌入的腳本代碼,把網(wǎng)頁中之間的ASP代碼轉(zhuǎn)換成不可讀的亂碼,其他部分則保持原樣不變。加密后的程序,必須使用Internet Explorer 5.0以上版本才能正常瀏覽。用SRCENC加密之后,文件中被加密過的部分將變成只讀類型,只要修改了加密部分,就會導致整個文件不能使用。
2、如果要保護開發(fā)的asp代碼,可以通過開發(fā)動態(tài)鏈接庫DLL組件的方法進行保護。
DLL是Dynamic Link Library 的縮寫形式,是一個包含可由多個程序同時使用的代碼和數(shù)據(jù)的類庫,并不是可執(zhí)行文件。動態(tài)鏈接提供了一種方法,使進程可以調(diào)用不屬于其可執(zhí)行代碼的函數(shù)。
3、使用Base64編碼進行轉(zhuǎn)換所需要加密的代碼部分。
Base64是網(wǎng)絡上最常見的用于傳輸8Bit字節(jié)代碼的編碼方式之一,可用于在HTTP環(huán)境下傳遞較長的標識信息。采用Base64編碼不僅比較簡短,同時也具有不可讀性,即所編碼的數(shù)據(jù)不會被人用肉眼所直接看到。此方法需要用戶自己定義編碼轉(zhuǎn)換函數(shù)。
4、通過MD5函數(shù)對asp中涉及到的用戶密碼進行函數(shù)處理得到數(shù)字摘要,替換數(shù)據(jù)庫中的明文密碼。
MD5即Message-Digest Algorithm 5,用于確保信息傳輸完整一致。它是計算機廣泛使用的雜湊算法之一,主流編程語言包括asp已有MD5實現(xiàn)。
5、通過對需要加密的代碼部分和密鑰種子進行異或處理進行加密。
密鑰種子可以是種512位或1024位的數(shù)據(jù),放在服務器較秘密的位置。這是一種簡化的對稱加密算法,需要自定義函數(shù)實現(xiàn)轉(zhuǎn)換。
二、 asp加密技術分析
在本文提到的這些ASP加密方法實際上是在不同方面對于ASP進行安全保護,歸類于以下三種操作方式,現(xiàn)分別進行分析。
1、編碼技術
計算機的編碼種類比較多,對于普通ASCII字符或漢字都有各種編碼轉(zhuǎn)換方法。對于ASP程序常用的編碼主要包括GB、UTF-8、UNICODE、ASCII和BASE64等等。因為ASP源代碼是文本文件,因而對它的保護尤其重要。MS encode程序是微軟開發(fā)的一種針對ASP或網(wǎng)頁中客戶端腳本進行加密代碼轉(zhuǎn)換的工具。MS encode程序編碼轉(zhuǎn)換容易,和IIS結(jié)合緊密,但轉(zhuǎn)換后的代碼可以直接使用ZWDECODE程序直接解碼。如果需要保護ASP源代碼的知識產(chǎn)權,MS encode程序顯然用途不大。
Dll文件是被編譯過的機器代碼,如果沒有源項目文件,是很難被反編譯的,所以組件加密這種方法很安全,也不容易被破解。如果使用VB語言進行封裝的話,操作過程如下:新建一個VB的activex dll項目;編寫VB組件;生成安裝文件;在IIS服務器上安裝組件;在網(wǎng)頁中調(diào)用組件。
對于ASP腳本編程語言而言,還可以使用其他編碼技術進行處理。常用的有base64編碼、UNICODE編碼、UTF-8編碼和ASCII轉(zhuǎn)換。這樣就可以把ASP代碼轉(zhuǎn)換成一種不能視覺直接識別的密文,有一定的效果。但是這些密文轉(zhuǎn)換成明文比較容易,雖然可以組合其他方法使用,但筆者認為此類操作略顯繁瑣。
2、HASH函數(shù)技術
Hash函數(shù),就是把任意長度的輸入,通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉(zhuǎn)換是一種壓縮映射,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數(shù)。HASH函數(shù)把一些不同長度的信息轉(zhuǎn)化成雜亂的128位或160位的編碼里,即HASH值。HASH函數(shù)一般包括MD4、MD5、SHA1等算法。
Hash函數(shù)是不可逆的,在ASP中應用是將某些特殊信息處理后保存在數(shù)據(jù)庫中。有人認為將密碼通過MD5算法處理后再保存即使被非法入侵者獲取也不可能計算出明文密碼來,這是錯誤的,入侵者可以通過網(wǎng)站查詢與字典暴力破解等多個方法獲取MD5密文對應的密碼明文,從而輕松入侵系統(tǒng)。但現(xiàn)階段處理網(wǎng)站數(shù)據(jù)庫里的密碼數(shù)據(jù),使用hash函數(shù)生成數(shù)字摘要再進行比較,進而身份驗證是一種較常規(guī)和可用的方法。
3、對稱加密技術
對稱加密算法是應用較早的加密算法,技術成熟。在計算機系統(tǒng)中廣泛使用的對稱加密算法有DES、3DES、IDEA和AES。在ASP程序中完整地使用對稱加密算法并不多見,究其原因筆者認為:加密的對象不好確定,ASP文本文件、關鍵代碼或關鍵數(shù)據(jù)都有可能;密鑰不易保護;ASP頁面包含HTML代碼及特殊字符,對于特殊字符處理,程序?qū)崿F(xiàn)有一定的難度。前面提到的簡單異或處理方法利用到對稱加密中最基本的數(shù)據(jù)分組和異或處理方法,對于處理短數(shù)據(jù)或關鍵代碼來說,方法是有一定的隱蔽性和可用性,密鑰種子也需保存安全,是一種ASP程序員基于網(wǎng)站內(nèi)容的秘密使用。如果用此方法加密用戶名或密碼數(shù)據(jù)的話,因方法的秘密性及數(shù)據(jù)較短,破解還是有一定的難度的。
小知識之對稱加密算法介紹:
對稱加密算法是應用較早的加密算法,技術成熟。在對稱加密算法中,數(shù)據(jù)發(fā)信方將明文(原始數(shù)據(jù))和加密密鑰一起經(jīng)過特殊加密算法處理后,使其變成復雜的加密密文發(fā)送出去。收信方收到密文后,若想解讀原文,則需要使用加密用過的密鑰及相同算法的逆算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密算法中,使用的密鑰只有一個,發(fā)收信雙方都使用這個密鑰對數(shù)據(jù)進行加密和解密,這就要求解密方事先必須知道加密密鑰。








