<noframes id="bhrfl"><address id="bhrfl"></address>

    <address id="bhrfl"></address>

    <noframes id="bhrfl"><address id="bhrfl"><th id="bhrfl"></th></address>

    <form id="bhrfl"><th id="bhrfl"><progress id="bhrfl"></progress></th></form>

    <em id="bhrfl"><span id="bhrfl"></span></em>

    全部
    常見問題
    產品動態
    精選推薦

    常見的用戶密碼加密及破解方法

    管理 管理 編輯 刪除

    用戶密碼安全是互聯網行業需要保障的重要安全之一,由于黑客的入侵和內部的泄露,保證用戶密碼安全并不是件容易的事情,但如果采用合適的算法加密用戶密碼,即使信息泄露出去,黑客也無法還原出原始的密碼(或者還原的代價非常大)。也就是說我們可以將工作重點從防止泄露轉換到防止黑客還原出數據。下面我們將分別介紹用戶密碼的加密方式以及主要的破解方法。

    一、用戶密碼加密

    (1)用戶密碼保存到數據庫時,常見的加密方式有哪些,我們該采用什么方式來保護用戶的密碼呢?以下幾種方式是常見的密碼保存方式:

    直接明文保存,比如用戶設置的密碼是“123456”,直接將“123456”保存在數據庫中,這種是最簡單的保存方式,也是最不安全的方式。但實際上不少互聯網公司,都可能采取的是這種方式。

    (2)使用對稱加密算法來保存,比如3DES、AES等算法,使用這種方式加密是可以通過解密來還原出原始密碼的,當然前提條件是需要獲取到密鑰。不過既然大量的用戶信息已經泄露了,密鑰很可能也會泄露,當然可以將一般數據和密鑰分開存儲、分開管理,但要完全保護好密鑰也是一件非常復雜的事情,所以這種方式并不是很好的方式。

    9480b202304261714006708.png

    (3)使用MD5、SHA1等單向HASH算法保護密碼,使用這些算法后,無法通過計算還原出原始密碼,而且實現比較簡單,因此很多互聯網公司都采用這種方式保存用戶密碼,曾經這種方式也是比較安全的方式,但隨著彩虹表技術的興起,可以建立彩虹表進行查表破解,目前這種方式已經很不安全了。

    918c8202304261714312414.png

    (4)特殊的單向HASH算法,由于單向HASH算法在保護密碼方面不再安全,于是有些公司在單向HASH算法基礎上進行了加鹽、多次HASH等擴展,這些方式可以在一定程度上增加破解難度,對于加了“固定鹽”的HASH算法,需要保護“鹽”不能泄露,這就會遇到“保護對稱密鑰”一樣的問題,一旦“鹽”泄露,根據“鹽”重新建立彩虹表可以進行破解,對于多次HASH,也只是增加了破解的時間,并沒有本質上的提升。

    8b4a620230426171503425.png

    (5)PBKDF2算法,該算法原理大致相當于在HASH算法基礎上增加隨機鹽,并進行多次HASH運算,隨機鹽使得彩虹表的建表難度大幅增加,而多次HASH也使得建表和破解的難度都大幅增加。使用PBKDF2算法時,HASH算法一般選用sha1或者sha256,隨機鹽的長度一般不能少于8字節,HASH次數至少也要1000次,這樣安全性才足夠高。一次密碼驗證過程進行1000次HASH運算,對服務器來說可能只需要1ms,但對于破解者來說計算成本增加了1000倍,而至少8字節隨機鹽,更是把建表難度提升了N個數量級,使得大批量的破解密碼幾乎不可行,該算法也是美國國家標準與技術研究院推薦使用的算法。

    3dced202304261715431263.png

    (6)bcrypt、scrypt等算法,這兩種算法也可以有效抵御彩虹表,使用這兩種算法時也需要指定相應的參數,使破解難度增加

    下表對比了各個算法的特性:

    608a0202304261716212167.png

    二、用戶密碼破解

    用戶密碼破解需要針對具體的加密方式來實施,如果使用對稱加密,并且算法足夠安全(比如AES),必須獲取到密鑰才能解密,沒有其它可行的破解方式。

    如果采用HASH算法(包括特殊HASH),一般使用彩虹表的方式來破解,彩虹表的原理是什么呢?我們先來了解下如何進行HASH碗撞。單向HASH算法由于不能進行解密運算,只能通過建表、查表的方式進行碰撞,即將常用的密碼及其對應的HASH值全計算出來并存儲,當獲取到HASH值是,直接查表獲取原始密碼,假設用MD5算法來保護6位數字密碼,可以建如下表:

    3aa94202304261721265369.png

    全表共100W條記錄,因為數據量不大,這種情況建表、查表都非常容易。但是當密碼并不是6位純數字密碼,而是數字、大小寫字母結合的10位密碼時,建立一個這樣的表需要(26+26+10)^ 10 ~ 83億億(條記錄),存儲在硬盤上至少要占用2000W TB的空間,這么大的存儲空間,成本太大,幾乎不可行。有什么辦法可以減少存儲空間?一種方法是“預計算哈希鏈”,“預計算哈希鏈”可以大幅減少HASH表的存儲空間,但相應的增加了查表時的計算量,其原理大致如下:

    4ea1d202304261721365663.png

    先對原始數據“000000”進行一次HASH運算得到“670B1E”,再對HASH值進行一次R運算,R是一個定制的算法可以將HASH值映射到明文空間上(這里我們的明文空間是000000~999999),R運算后得到“283651”,再對“283651”進行hash運算得到“1A99CD”,然后在進行R運算得到“819287”,如此重復多次,得到一條哈希鏈。然后再選用其它原始數據建立多條哈希鏈。最終僅將鏈頭和鏈尾保存下來,中間節點全都去掉。

    查表過程:假設拿到了一條HASH值“670B1E”,首先進行一次R運算,得到了“283651”,查詢所有鏈尾是否有命中,如果沒有,則再進行一次HASH、一次R,得到了“819287”,再次所有鏈尾,可以得到看出已經命中。這樣我們就可以基本確認“670B1E”對應的明文就在這條鏈上,然后我們把這條鏈的生成過程進行重新計算,計算過程中可以發現“000000”的HASH值就是“670B1E”,這樣就完成了整個查表過程。這種表就是“預計算哈希鏈”。這種方式存在一個問題,多條鏈之間可能存在大量的重復數據,如下圖所示:

    82ed7202304261721485107.png

    為了解決這個問題,我們將R算法進行擴展,一條鏈上的多次R運算采用不同的算法,如下圖:

    f7a2e202304261721559044.png

    一條鏈上的每個R算法都不一樣,就像彩虹的每層顏色一樣,因此取名的為彩虹表。

    當然彩虹表除了可以用戶破解HASH算法外,理論上還可以用于破解對稱加密算法,比如DES算法,由于DES算法密鑰比較短,建立彩虹表破解是完全可行的;但對于AES算法,由于密鑰比較長,建表幾乎不可行((需要耗時N億年)。

    三、總結

    采用PBKDF2、bcrypt、scrypt等算法可以有效抵御彩虹表攻擊,即使數據泄露,最關鍵的“用戶密碼”仍然可以得到有效的保護,黑客無法大批量破解用戶密碼,從而切斷撞庫掃號的根源。當然,對于已經泄露的密碼,還是需要用戶盡快修改密碼,不要再使用已泄露的密碼。

    請登錄后查看

    CRMEB-慕白寒窗雪 最后編輯于2023-04-26 17:24:57

    快捷回復
    回復
    回復
    回復({{post_count}}) {{!is_user ? '我的回復' :'全部回復'}}
    排序 默認正序 回復倒序 點贊倒序

    {{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level }}

    作者 管理員 企業

    {{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
    {{item.is_suggest == 1? '取消推薦': '推薦'}}
    沙發 板凳 地板 {{item.floor}}#
    {{item.user_info.title || '暫無簡介'}}
    附件

    {{itemf.name}}

    {{item.created_at}}  {{item.ip_address}}
    打賞
    已打賞¥{{item.reward_price}}
    {{item.like_count}}
    {{item.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復

    {{itemc.user_info.nickname}}

    {{itemc.user_name}}

    回復 {{itemc.comment_user_info.nickname}}

    附件

    {{itemf.name}}

    {{itemc.created_at}}
    打賞
    已打賞¥{{itemc.reward_price}}
    {{itemc.like_count}}
    {{itemc.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復
    查看更多
    打賞
    已打賞¥{{reward_price}}
    3856
    {{like_count}}
    {{collect_count}}
    添加回復 ({{post_count}})

    相關推薦

    快速安全登錄

    使用微信掃碼登錄
    {{item.label}} 加精
    {{item.label}} {{item.label}} 板塊推薦 常見問題 產品動態 精選推薦 首頁頭條 首頁動態 首頁推薦
    取 消 確 定
    回復
    回復
    問題:
    問題自動獲取的帖子內容,不準確時需要手動修改. [獲取答案]
    答案:
    提交
    bug 需求 取 消 確 定
    打賞金額
    當前余額:¥{{rewardUserInfo.reward_price}}
    {{item.price}}元
    請輸入 0.1-{{reward_max_price}} 范圍內的數值
    打賞成功
    ¥{{price}}
    完成 確認打賞

    微信登錄/注冊

    切換手機號登錄

    {{ bind_phone ? '綁定手機' : '手機登錄'}}

    {{codeText}}
    切換微信登錄/注冊
    暫不綁定
    亚洲欧美字幕
    CRMEB客服

    CRMEB咨詢熱線 咨詢熱線

    400-8888-794

    微信掃碼咨詢

    CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
    返回頂部 返回頂部
    CRMEB客服