編輯導語:在互聯網時代下,各種網頁和軟件都需要設置密碼,那麼網頁産品如何評估密碼強度呢?本篇文章介紹了5種進行密碼強度的評估方法,感興趣的一起來看一下。
最近因為在做網頁端産品中接觸到密碼強度設置問題,找了不少解決方案。發現大多基于google提出的以密碼長度,英文大小寫以及符号組合計分來進行密碼強度評估。
什麼是密碼強度?
指一個密碼對抗猜測或是暴力破解的有效程度。
一般來說,指一個未授權的訪問者得到正确密碼的平均嘗試次數。
密碼的強度和其長度、複雜度及不可預測度有關。
強密碼可以降低安全漏洞的整體風險,但并不能降低采取其他安全措施的需要。
攻擊者可以提交猜測到的密碼的速率是衡量一個系統安全性的重要因素。
有的系統在多次嘗試失敗後會暫停登入一段時間,在沒有其他安全缺陷時,這種系統可以用相對簡單的密碼保護。
但是系統必須以某種形式存儲用戶密碼,而當這些數據被盜時,就有極大的危險(via.百度百科)。
根據NordPass 2020年的研究,五個最常見的密碼是123456、123456789、picture1、密碼和12345678。
我們先來看看破解這些密碼需要多少時間。
經過搜集整理了以下5種進行密碼強度評估方法,你可以根據産品的數據風控程度選擇匹配版本投産使用。
一、簡易版1. 規則
- 密碼長度至少8位;
- 密碼含有數字&字母;
- 密碼含有符号;
- 密碼同時含有大小寫字母。
2. 驗證
- 符合2項(含)以上允許賬号注冊;
- 密碼不符合規則進行針對性提示。
3. 示例
二、常規版
- 1種組合→guofu→ 拒絕,提示原因;
- 2種組合 → guofu1024→通過;
- 3種組合→ guofu1024?→通過;
- 4種組合→ Guofu1024?→ 通過。
1. 規則
–
2. 分數區間
- x ≥90: 非常安全;
- 90 > x≥80: 安全(Secure);
- 80 > x≥70: 強(Strong);
- 70 > x≥ 60: 一般(Average);
- 60 > x≥25: 弱(Weak);
- 25 > x≥0: 非常弱。
3. 驗證
- 允許得分為70分以上的密碼進行賬号注冊;
- 密碼不符合規則進行針對性提示。
4. 示例
Guofu1024?→ 25 20 20 10 5=80分→安全。
三、專業版1. 符号
- Flat:均一的加/扣分比例;
- Incr:出現次數越多,加/扣分比例越大;
- Cond:根據增加的字元數調整加/扣分比例;
- n:出現次數;
- len:密碼字串長度。
2. 規則
3. 計算方式
- 最後的分數為加分條件和減分項目的條件;
- 分數的範圍為0~100分;
- 分數不需達到最低字元即可計算。
4. 分數區間
- 60 > x > 0:未達标準;
- 70 > x ≥ 60:警告;
- 80 > x ≥ 70:已達标準;
- x ≥ 80:優秀(100為上限)。
5. 驗證
允許得分為60分以上的密碼進行賬号注冊。
6. 示例
四、HACK版
- Aa123 → 43分→未達标準;
- Aa12L3→64分→警告。
在彩虹表之前,已經出現了對哈希函數的破解算法,被稱為“預計算的哈希鍊集”(Precomputed hash chains)。
密碼彩虹表——示例有關防禦彩虹表攻擊,開發者在編碼時請勿在密碼散列函數中使用MD5或SHA1,在密碼散列例程中使用密碼鹽來幫助應用程序“防虹”的編碼。
另外,不在彩虹表中的密碼強度較高。它是一個龐大的、針對各種可能的字母組合預先計算好的哈希值的集合。
不一定是針對MD5算法的,各種算法的都有,可以快速破解各類密碼。在彩虹表中的密碼給予提示。
比如,A12345 →此密碼安全性低,請修改。
五、Fuzzy版汪定教授團隊對中國網民進行了密碼習慣調查和比對先行密碼強度模式後,提出了一種更為準确的評估模式。
Google 密碼強度反饋選取了10個領域共50個流量排名靠前的網站,借助網站曾經洩露的密碼數據庫,先利用離線漫步攻擊分析得到密碼最常用的結構和使用頻次的字典表。
測量核心公式:Nmin*log2Cmin,具體解釋可參照論文解釋。
作者提出從6個維度評估密碼的強度,分别是:
- 長度要求密碼不小于8位;
- 強制執行強制最小字符類型要求;
- 允許使用符号,帶符号的密碼通常比不帶符号的密碼安全得多;
- 使用常用弱密碼的黑名單表(彩虹表),禁止使用;
- 禁用賬戶名或個人名;
- 向用戶提供明确的密碼建議和指導。
另外,中國用戶喜歡把名字放在密碼中,作者在破解過程中充分利用名字信息,對算法進行改進,用于度量密碼強度測試。
彩虹表需要集成“中式密碼”,比如,“woaini”、“5201314”、“zhangsan2022”和“longguofu123”之類的密碼。
六、總結在真實的世界,對于普通用戶來說有沒有辦法可以設置真正意義上高強度的密碼呢?
參照專家們給出的建議,你可以試試這樣做。
1) 不要在密碼中包含用戶名、真實姓名、生日或公司名稱,也不要包含任何與登錄信息相關的信息。
例如,地址或電話号碼。最好也不要包含任何可以在社交媒體上訪問的信息,例如孩子或寵物的名字。
還有,比如在銀行網站讓你設置3個安全登錄問題的時候,不要如實回答。
2) 研究發現45%的人使用8個字符或更少字符的密碼。如果可能的話,密碼的長度至少應為16個字符。
相較于在密碼中加入非字母字符而言,增加長度可以更簡單地使密碼變強。
例如,12個字母的密碼比12個數字的密碼的破解難度僅大8倍。
但由16個僅字母字符組成的密碼比由12個各類字符組成的密碼的破解難度大800萬倍。
3) 密碼應包括字母、數字和字符的組合,不應包含任何連續的字母或數字,不應是“密碼”一詞或重複的相同字母或數字。
例如,guofu8888、mima777、password111。
4) 密碼不應是在鍵盤上經常連續敲擊的字符串。例如,asdfghjkl。
5) 密碼不應與任何其他帳戶共享。可以使用專業的密碼管理器和定期修改密碼(雖然很難),可以用密碼強度工具幫忙生成密碼。
密碼的存在筆者一直認為是反人性的設計,但是它的存在對鑒權、保護隐私又有其必要性。
選擇哪種密碼強度取決于設計者對于“便捷”與“安全”的平衡,對于金融級别的産品,毫無疑問需要高強度或多重驗證。
而對于輕應用,更多可把方便為主要考慮。
此外,筆者一直有種感覺,或者沒有密碼,使用生物生命特征才是更人性化的設計。
次之,用社交賬号授權、手機動态驗證碼進行驗證,對于安全性較低的産品也是不錯的解決方案。
最後,沒有一個密碼是“最安全的”,如果有的話,把它寫出來就會變得不安全,因為有成千上萬的人會在他們的賬戶上使用它。
作者:龍國富,公衆号:龍國富,分享用戶研究、客戶體驗、服務科學等領域資訊,觀點和個人見解。
本文由@龍國富 原創發布于人人都是産品經理,未經授權,禁止轉載。
題圖來Unsplash,基于CC0協議。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!