回覆列表
  • 1 # 使用者8158744171705

    不要使用MD5,SHA1,SHA256 等加鹽值儲存密碼,不安全.使用bcrypt演算法

    使用者的登入密碼,是很重要的一個安全環節。 如果明文儲存在資料庫,一旦駭客入侵或是內部員工盜竊,使用者密碼就會洩漏。 國內外大網站都發生過因駭客或是內部員工導致使用者資料的洩漏問題,使用者密碼一旦洩漏對於電商網站或是支付網站的影響是難於估量的。

    為了保護使用者密碼,早期人們使用MD5演算法把密碼加密後儲存,通常計算MD5值時會加一個”鹽值“(即一個固定的密串),這個鹽值可能是共用的,也可能是一個使用者一個鹽值。

    MD5(密碼+鹽值),這樣形式的密碼儲存方案在早期基本上是密碼儲存的一個通行標準,國內多數網站(包括大型電商和支付網站)早期都採用的是這個辦法,如果沒有更新的話,現在很多網站依舊是這個方案。

    這樣的方案什麼不對? 1,對於駭客入侵或是內部員工,能拿到使用者資料的人,很容易就拿到鹽值 2,雖然駭客不能反解密碼,密碼通常有一定的規則,諸如大小寫數字六位數以上等,駭客可透過排列組合一個一個的試,暴力破解,因為MD5值的計算速度很快,對於六位數密碼,很容易攻克。 注意:這個暴力破解是離線執行的,線上的暴力破解很容易阻擋。 被攻擊的網站沒有感覺,如果用比特幣挖礦的礦機,這樣的破解輕而易舉,沒挑戰。

    你會說,MD5不行,SHA1也被谷歌破解了,SHA256 密碼加鹽值這樣可靠了吧? SHA256 密碼加鹽值也不安全。 因為,MD5,SHA1,SHA256就不是用來儲存密碼用的, 是用來校驗資料完整性用的,三個演算法的計算速度都很快,試想一下,校驗一個4G的ISO映象檔案,必須要有高效的計算速度。

    因為演算法效率高,速度快,也就降低了暴力破解的難度。

    正確的做法是使用bcrypt演算法,bcrypt演算法的優點是計算速度慢,沒錯計算速度慢, 還可以透過引數調節速度,要多慢有多慢。

    普通的電腦每秒可執行數萬次SHA256計算,bcypt演算法透過引數設定可以調整為計算一次耗時1秒。 這樣大幅提高了暴力破解的門檻,增強了安全性。

    這裡有個比特幣礦機配置,供參考, 以便提高安全意識: 型號:HashFast Sierra Batch 2 價格:7080美元 功率: 780瓦 效能: 1200 GH/s (每秒可執行1.2萬億次SHA256計算)

  • 中秋節和大豐收的關聯?
  • 夢見一個活人死在自己家裡?