HASH算法

 一、HASH 算法不是加密算法

  HASH 算法是一種消息摘要算法,不是一種加密算法,但由於其單向運算,具有一定的不可逆性,成爲加密算法中的一個構成部分,完整的加密機制不能僅依賴 HASH 算法。

  二、HASH 算法的碰撞現象

   HASH 算法可以理解爲將任意的信息經過提煉後,成爲一個定長的字符串。世界上的信息數量爲無窮大,所以定長的字符串不可能表達所有的摘要,因此存在所謂的“碰 撞”,即 2 個同樣的信息源摘要是一樣的。2004年山東大學王曉雲提出有關快速查找“碰撞對”的算法,引起安全界對於 HASH 算法的極大關注,NIST 提出到 2010 年不再使用 MD5 和 SHA-1。目前仍可使用的 HASH 算法包括:SHA-256,SHA-512,SHA-224,SHA-384。2011年 2 月 FIPS180-4草案還增加了 SHA-512/224,SHA-512/256。這些算法都是 SHA-2系列算法,SHA3-256算法也即將到來。關於碰撞必須還要說的是,有機率找到碰撞對,但並不意味着 HASH 算法整體被否定,例如將合同文本整體 HASH 並數字簽名,如果找到碰撞對,很難還原成一個正常的文本,如果是一堆亂碼,沒有人會認可此文件,在不篡改 HASH 的前提下無法有實際意義的修改合同。

  三、HASH 的破解與社會工程學

   HASH 算法本身爲單向性,很難直接破解,現有的破解都是將常用字符計算 HASH 值後反向比較。例如密碼 123456,假設 MD5 值爲 1ab9744e58acee3ed8f03508cbf82bf5,那麼數據庫中查到 MD5 值即知道了密碼。通過社會工程學的應用,大量常用密碼已可直接破解。

  四、合理使用 HASH 算法

  1. 廢除舊算法,至少使用 SHA-256,64位操作系統 SHA-512運算速度更佳,建議選用

   2. 合理加點“SALT”,即干擾字符串。例如:SALT1=C`3/$xUM,5ltL4pze; avf9#kgmET^SALT2=1qYIs,vOSfn%UHhm5+3TX:#iety0d 計算 HASH SHA-512(SALT1+ 用戶名 +SALT2+ 密碼)那麼社會工程學和目前的暴力運算是無法解決的

  3. 不要以爲聯合使用 HASH 算法會安全。例如 MD5+SHA1,或者 SHA1(MD5)嵌套,有文獻證實都是無效的。

  最後希望程序員們能多看文獻,跟上國際安全標準,儘可能避免安全事件的發生的影響。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章