概述
1.1 hash
Hash,一般翻譯做“散列”,也有直接音譯為“雜湊”的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列演算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,所以不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的訊息壓縮到某一固定長度的訊息摘要的函數。
常用hash演算法的介紹:
(1)MD4
MD4(RFC 1320)是 MIT 的Ronald L. Rivest在 1990 年設計的,MD 是 Message Digest(訊息摘要) 的縮寫。它適用在32位字長的處理器上用高速軟體實現——它是基於 32位運算元的位操作來實現的。
(2)MD5
MD5(RFC 1321)是 Rivest 於1991年對MD4的改進版本。它對輸入仍以512位分組,其輸出是4個32位字的級聯,與 MD4 相同。MD5比MD4來得複雜,並且速度較之要慢一點,但更安全,在抗分析和抗差分方面表現更好。
(3)SHA-1及其他
SHA1是由NIST NSA設計為同DSA一起使用的,它對長度小於264的輸入,產生長度為160bit的散列值,因此抗窮舉(brute-force)性更好。SHA-1 設計時基於和MD4相同原理,並且模仿了該演算法。
Hash演算法在資訊安全方面的應用主要體現在以下的3個方面:
(1)檔案校正
我們比較熟悉的校正演算法有同位和CRC校正,這2種校正並沒有抗資料篡改的能力,它們一定程度上能檢測並糾正資料轉送中的通道誤碼,但卻不能防止對資料的惡意破壞。
MD5 Hash演算法的"數位指紋"特性,使它成為目前應用最廣泛的一種檔案完整性校正和(Checksum)演算法,不少Unix系統有提供計算md5 checksum的命令。
(2)數位簽章
Hash 演算法也是現代密碼體系中的一個重要組成部分。由於非對稱演算法的運算速度較慢,所以在數位簽章協議中,單向散列函數扮演了一個重要的角色。對 Hash 值,又稱"數字摘要"進行數位簽章,在統計上可以認為與對檔案本身進行數位簽章是等效的。而且這樣的協議還有其他的優點。
(3) 鑒權協議
如下的鑒權協議又被稱作挑戰–認證模式:在傳輸通道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。以上就是一些關於hash以及其相關的一些基本預備知識。
windows hash
Windows hash由二部分組成,分別是LM HASH&NT HASH。Windows系統關於hash的組成如下:
使用者名稱稱:RID:LM-HASH值:NT-HASH值
2.1 Windows下LM HASH產生原理
LM HASH建置規則如下:
1.使用者的密碼被限制為最多14個字元。
2.使用者的密碼轉換為大寫。
3.系統中使用者的密碼編碼使用了OEM內碼頁
4.密碼不足14位元組將會用0來補全。
5.固定長度的密碼被分成兩個7byte部分。每部分轉換成位元流,在分7bit為一組末尾加0,組成新的編碼
6.上步驟得到的8byte二組,分別作為DES key為“KGS!@#$%”進行加密。
7.將二組DES加密後的編碼拼接,得到最終LM HASH值。