天天看點

談談網頁産品該如何評估密碼強度

作者:人人都是産品經理
編輯導語:在網際網路時代下,各種網頁和軟體都需要設定密碼,那麼網頁産品如何評估密碼強度呢?本篇文章介紹了5種進行密碼強度的評估方法,感興趣的一起來看一下。
談談網頁産品該如何評估密碼強度

最近因為在做網頁端産品中接觸到密碼強度設定問題,找了不少解決方案。發現大多基于google提出的以密碼長度,英文大小寫以及符号組合計分來進行密碼強度評估。

什麼是密碼強度?

指一個密碼對抗猜測或是暴力破解的有效程度。

一般來說,指一個未授權的通路者得到正确密碼的平均嘗試次數。

密碼的強度和其長度、複雜度及不可預測度有關。

強密碼可以降低安全漏洞的整體風險,但并不能降低采取其他安全措施的需要。

攻擊者可以送出猜測到的密碼的速率是衡量一個系統安全性的重要因素。

有的系統在多次嘗試失敗後會暫停登入一段時間,在沒有其他安全缺陷時,這種系統可以用相對簡單的密碼保護。

但是系統必須以某種形式存儲使用者密碼,而當這些資料被盜時,就有極大的危險(via.百度百科)。

根據NordPass 2020年的研究,五個最常見的密碼是123456、123456789、picture1、密碼和12345678。

我們先來看看破解這些密碼需要多少時間。

談談網頁産品該如何評估密碼強度

經過搜集整理了以下5種進行密碼強度評估方法,你可以根據産品的資料風控程度選擇比對版本投産使用。

一、簡易版

1. 規則

  • 密碼長度至少8位;
  • 密碼含有數字&字母;
  • 密碼含有符号;
  • 密碼同時含有大小寫字母。

2. 驗證

  • 符合2項(含)以上允許賬号注冊;
  • 密碼不符合規則進行針對性提示。

3. 示例

  • 1種組合→guofu→ 拒絕,提示原因;
  • 2種組合 → guofu1024→通過;
  • 3種組合→ guofu1024?→通過;
  • 4種組合→ Guofu1024?→ 通過。

二、正常版

談談網頁産品該如何評估密碼強度

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個次元評估密碼的強度,分别是:

  1. 長度要求密碼不小于8位;
  2. 強制執行強制最小字元類型要求;
  3. 允許使用符号,帶符号的密碼通常比不帶符号的密碼安全得多;
  4. 使用常用弱密碼的黑名單表(彩虹表),禁止使用;
  5. 禁用賬戶名或個人名;
  6. 向使用者提供明确的密碼建議和指導。

另外,中國使用者喜歡把名字放在密碼中,作者在破解過程中充分利用名字資訊,對算法進行改進,用于度量密碼強度測試。

彩虹表需要內建“中式密碼”,比如,“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協定。

繼續閱讀