確保資料安全 從了解加密算法開始

加密散列函數(shù)的幫助下,很多工具軟件都可以用來保證計(jì)算環(huán)境的安全。大部分加密散列函數(shù)的設(shè)計(jì)模式都采用了分塊加密算法,針對輸入的字符串,產(chǎn)生一個(gè)不同于輸入內(nèi)容的獨(dú)有輸出字符串。舉例來說,如果你輸入字符串“Keep it simple!”并獲得“A”作為輸出字符串,在這里真正有用的部分是輸入其它字符串是都不可能將“A”作為輸出字符串。

對于一個(gè)加密散列函數(shù)來說,輸出部分的長度是固定的:無論多長的輸入字符串,三個(gè)還是三百萬個(gè)字符,輸出字符串都將永遠(yuǎn)是相同的長度。如前所述,此輸出字符串中只要改變一個(gè)輸入字符就會產(chǎn)生不同的輸出字符串(稱為“散列”或“校驗(yàn)”)。此外,預(yù)測輸出特定字符串是不可能的事情。

這些加密散列函數(shù)經(jīng)常在很多方面被利用。通常情況下,它們可以用于密碼驗(yàn)證領(lǐng)域。在文件下載領(lǐng)域,它們也經(jīng)常出現(xiàn),可以用來方便快速地確定下載的文件是否已經(jīng)損壞,或者在傳遞的過程中被人加入了惡意附件。對于采用了OpenPGP工具的包含數(shù)字簽名的電子郵件來說,散列的信息通常是意味著已經(jīng)獲得了“簽名”,可以被其它用戶認(rèn)可。

在眾所周知的加密散列函數(shù)中用最廣泛的可能是MD5和SHA-1。在2005年,MD5和SHA-1中都被發(fā)現(xiàn)存在重大的缺陷。SHA-1屬于SHA-0的加強(qiáng)版本,但SHA-0中存在的重大缺陷在SHA-1中還是存在的。由于很多人依然認(rèn)為MD5和SHA-1是足夠強(qiáng)大的,并且處于無處不在的使用環(huán)境中,所以甚至到今天它們也還是經(jīng)常被使用。但更多的安全組織盡力選擇了更強(qiáng)大的算法,舉例來說,SHA-256就是一個(gè)不錯(cuò)的替代品,它似乎沒有了困擾SHA-0和SHA-1的缺陷。

對于低優(yōu)先級不需要進(jìn)行鑒別的應(yīng)用來說,使用MD5和SHA-1進(jìn)行加密散列操作不存在任何問題,對于這種情況,通常我們熟悉的名稱是“digests”。大多數(shù)類Unix操作系統(tǒng)都在默認(rèn)核心工具包里包含了可以利用MD5和SHA-1進(jìn)行散列創(chuàng)建和比較的工具。類似的工具也在蘋果MacOS下、甚至微軟Windows等商業(yè)操作系統(tǒng)中出現(xiàn)。而對于包括Perl、PHP、Python以及Ruby在內(nèi)的大多數(shù)高級編程語言來說,這項(xiàng)功能已經(jīng)被加入標(biāo)準(zhǔn)庫中。

附加的數(shù)據(jù)庫與常見的現(xiàn)代編程語言相比,可以提供功能更強(qiáng)大的加密散列函數(shù)。這里面不僅僅包括了上面提到的動態(tài)編程語言,象C、C++語言、Java和C#(以及其他類型的.NET語言)之類的低級和靜態(tài)語言也被包括在內(nèi)了。

在選擇下載使用的軟件時(shí),你應(yīng)該首先考慮采用了加密散列算法的對象,這樣就會將可能帶來的麻煩減少到最低的程度,并且有可能的話,你應(yīng)該拒絕使用沒有利用隨處可見的散列工具進(jìn)行校驗(yàn)的軟件。

更重要的是,如果你屬于軟件和其它可能受到攻擊和破壞的文件的提供者,沒有任何理由不利用常見的加密散列工具提供良好的校驗(yàn)。一個(gè)簡單的Perl或者Ruby腳本即可進(jìn)行驗(yàn)證,并不需要利用C程序進(jìn)行大量的編譯,因?yàn)椋鼉H僅是人們?nèi)庋劭勺x的純文本字符;但對于可執(zhí)行二進(jìn)制文件、jar文件以使用OpenOffice.org字處理軟件產(chǎn)生的文件這樣的更大、更復(fù)雜的文件和文件格式來說,應(yīng)該始終使用以確保文件的絕對安全。

當(dāng)然,加密散列函數(shù)不能保證下載的軟件一定是可以安全使用的。它們能確保的是創(chuàng)建文件和散列的人是值得信賴的。