程式碼安全測試第四期:可逆的單向雜湊漏洞
可逆的單向雜湊漏洞是一種 程式缺陷,顧名思義,是由於單向雜湊在某些情況下可逆導致的。想要了解可逆的單向雜湊漏洞,首先我們需要學習一下什麼是單向雜湊。
1、 單向雜湊是什麼?
雜湊(Hash),是把任意長度的輸入,透過雜湊演算法變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,所以理論上來說,從雜湊值無法確定唯一的輸入值,因此雜湊是具備單向性的。
但隨著計算機算力的進步,一些單向雜湊已經無法保證其單向性。無法保證單向性的雜湊,被稱為可逆單向雜湊。當可逆單向雜湊被用於需要具備單向屬性的安全演算法時,可造成嚴重危害。例如,一個身份驗證系統將傳入的密碼生成雜湊值,並存入資料庫。攻擊者可透過比較該雜湊值和已儲存在資料庫中另外的雜湊值,去碰撞得出一個可生成同樣雜湊值的密碼,從而透過身份驗證。
2、常見單向雜湊函式(Hash函式)有哪些?
MD5(Message Digest Algorithm5):是RSA資料安全公司開發的一種單向雜湊演算法,MD5被廣泛使用,可以用來把不同長度的資料塊進行暗碼運算成一個128位的數值。1996年後該演算法被證實存在弱點,可以被加以破解,對於需要高度安全性的資料,專家一般建議改用其他演算法,如SHA-2。2004年,證實MD5演算法無法防止碰撞(collision),因此不適用於安全性認證,如SSL公開金鑰認證或是數字簽名等用途。
SHA(Secure Hash Algorithm):這是一種較新的雜湊演算法,可以對任意長度的資料運算生成一個160位的數值。SHA家族的五個演算法,分別是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美國國家安全域性(NSA)所設計,並由美國國家標準與技術研究院(NIST)釋出;是美國的政府標準。後四者有時並稱為SHA-2。但SHA-1的安全性如今被密碼學家嚴重質疑;雖然至今尚未出現對SHA-2有效的攻擊,它的演算法跟SHA-1基本上仍然相似;因此有些人開始發展其他替代的雜湊演算法。
MAC(Message AuthenticationCode):訊息認證程式碼,是一種使用金鑰的單向函式,可以用它們在系統上或使用者之間認證檔案或訊息。HMAC(用於訊息認證的金鑰雜湊法)就是這種函式的一個例子。
CRC(Cyclic Redundancy Check):迴圈冗餘校驗碼,CRC校驗由於實現簡單,檢錯能力強,被廣泛使用在各種資料校驗應用中。佔用系統資源少,用軟硬體均能實現,是進行資料傳輸差錯檢測地一種很好的手段(CRC 並不是嚴格意義上的雜湊演算法,但它的作用與雜湊演算法大致相同,所以歸於此類)。
3、可逆的單向雜湊漏洞會造成哪些後果?
關鍵詞:繞過身份驗
因對資料的加密演算法不再安全,攻擊者透過提供與備用密碼相同的目標雜湊值,繞過身份驗證,從而進行惡意行為。
4、如何修補可逆的單向雜湊漏洞?
及時更新加密演算法,使用安全性高的加密演算法取代不再被認為是安全的加密演算法。
5、可逆的單向雜湊漏洞樣例:
6、課後小問題:
可逆單向雜湊漏洞的構成條件是什麼?
( 答案:當使用不再被認為是安全的加密演算法對資料進行加密,就構成了一個該型別的安全漏洞。)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2773240/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 安全的雜湊
- 程式碼安全測試第十二期:LDAP注入漏洞LDA
- 程式碼安全測試第七期:不安全的反射漏洞缺陷反射
- 程式碼安全測試第十五期:跨站指令碼漏洞指令碼
- 程式碼安全測試第六期:XPath注入漏洞
- 雜湊遊戲系統技術開發丨雜湊單雙競猜遊戲原始碼丨雜湊遊戲程式設計技術遊戲原始碼程式設計
- 雜湊表的程式碼實現(Java)Java
- 程式碼安全測試第五期:OS命令注入漏洞
- 程式碼安全測試第十三期:敏感資訊的明文傳輸漏洞
- 程式碼安全測試第十八期:呼叫System.exit()存在安全漏洞
- 程式碼安全測試第十六期:使用不安全的隨機值漏洞隨機
- Oracle 11g 雜湊、LIST分割槽測試Oracle
- 程式碼安全測試第十期:日誌偽造漏洞
- 程式碼安全測試第十一期:記憶體洩漏漏洞記憶體
- js 雜湊雜湊值的模組JS
- 雜湊競猜開發原理丨雜湊競猜遊戲原始碼丨雜湊競猜系統開發設計程式碼遊戲原始碼
- 使用Java生成具有安全雜湊的QR碼 | Rustam MehmandarovJavaRust
- 程式碼安全測試第二期:URL重定向(跳轉)漏洞
- 程式碼安全測試第二十八期:未使用的變數缺陷漏洞變數
- 程式碼安全測試第三期:路徑遍歷漏洞的防範與檢測
- 網站安全測試之APP滲透測試漏洞網站APP
- 最簡單的jquery測試程式碼jQuery
- 程式碼安全測試第九期:Switch中省略了break語句導致的程式碼缺陷漏洞
- 程式碼安全測試第一期:什麼是SQL隱碼攻擊漏洞?SQL
- 程式碼安全測試第二十期:資源未關閉/釋放漏洞
- 程式碼安全測試第二十二期:HTTP響應拆分漏洞HTTP
- 程式碼安全測試第十九期:用不安全的授權建立臨時檔案漏洞
- 網站滲透測試安全檢測漏洞網站
- 如何編寫優秀的測試程式碼|單元測試
- 測試你的前端程式碼 - part2(單元測試)前端
- 測試你的前端程式碼 – part2(單元測試)前端
- 滲透測試之CSRF程式碼漏洞的檢測與加固方案
- 程式碼安全 兩種程式碼漏洞
- Tessy—支援複雜場景測試的單元整合測試工具
- 程式碼安全測試第二十四期:數字型別的不正確轉換漏洞型別
- 程式碼重構與單元測試——重構1的單元測試(四)
- 雜湊表(雜湊表)詳解
- 雜湊遊戲原始碼開發搭建丨hash雜湊遊戲競猜原始碼搭建丨雜湊遊戲系統開發遊戲原始碼