談談網頁產品該如何評估密碼強度
編輯導語:在互聯網時代下,各種網頁和軟件都需要設置密碼,那么網頁產品如何評估密碼強度呢?本篇文章介紹了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. 示例
- Aa123 → 43分→未達標準;
- Aa12L3→64分→警告。
四、HACK版
在彩虹表之前,已經出現了對哈希函數的破解算法,被稱為“預計算的哈希鏈集”(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協議。
關注公眾號“龍國富”, ???♂?進入客戶體驗交流群~ 來一起嘮嘮客戶體驗。
太復雜了我自己記不住,比如說有的軟件必須需要區分大小寫,每次上去的時候都得重設一下
+1,軟件網站太多,密碼多到記不住
原來是這樣!終于明白了那些密碼為啥非要這樣那樣設置!
補充一個經驗:一個使用了互聯網很多年也有很多賬戶的人表示自己的使用習慣如下
1密碼基本上是分級存在的 我一開始分了3級,后來發現自己只有兩級,一個是重要賬戶密碼(數字字母大小寫特殊符號),另一種是普通的賬戶密碼(數字字母),前者一般只放在“含有資金和支付方式的賬戶里面”,后者一般就是普通賬戶,并且經常復用(當然注意,提高密碼的安全性行為是一個歷史遺留問題,我們需要折中的假設,一般用戶的密碼就是數字+字母)
2 有一些網站,為了平衡安全性和盜號等等問題,要求我使用特殊符號,而作為一個用戶,我對這個網站的賬戶安全性評估并沒有那么的高,那么我可能會隨機的去使用特殊符號去后綴這個網站的密碼,其結果就是,我需要每隔一段時間就通過手機驗證碼的方式去找回這個密碼。(勞民傷財)
3那么網站對用戶的密碼設計的時候,是否應該去要求用戶,或者去教育用戶使用一個比較復雜的密碼?我覺的其實非財務類其實是多此一舉,一些內容生產類的app,可以考慮當賬戶資產或者價值較高的時候提醒用戶去更改密碼或者提升用戶安全等級。但其實這樣做也會提高用戶更改找回密碼的次數(因為新密碼往往在用戶的常用密碼體系之外)
4 鑰匙串和密碼管理器這類軟件其實普及度不高,而且有待商榷
5 綜上其實對用戶體驗來說,加快密碼找回的力度和被盜號之后的善后工作似乎更加合理