谈谈网页产品该如何评估密码强度
Guofu 的 第 37 篇 文章分享
2022年 第 12 篇
最近因为在做网页端产品中接触到密码强度设置问题,找了不少解决方案,发现大多基于google提出的以密码长度、英文大小写以及符号组合计分来进行密码强度评估。
什么是密码强度?
指一个密码对抗猜测或是暴力破解的有效程度。一般来说,指一个未授权的访问者得到正确密码的平均尝试次数。密码的强度和其长度、复杂度及不可预测度有关。强密码可以降低安全漏洞的整体风险,但并不能降低采取其他安全措施的需要。
攻击者可以提交猜测到的密码的速率是衡量一个系统安全性的重要因素。有的系统在多次尝试失败后会暂停登入一段时间,在没有其他安全缺陷时,这种系统可以用相对简单的密码保护。但是系统必须以某种形式存储用户密码,而当这些数据被盗时,就有极大的危险。
(via.百度百科)
根据NordPass 2020年的研究,五个最常见的密码是123456、123456789、picture1、密码和 12345678。我们先来看看破解这些密码需要多少时间。
密码 |
有多少人使用? |
破解需要多少时间? |
它被曝光多少次? |
123456 |
2,543,285 |
不到1秒 |
23,597,311 |
123456789 |
961,435 |
不到1秒 |
7,870,694 |
picture1 |
371,612 |
3小时 |
11,190 |
12345678 |
360,467 |
不到1秒 |
3,759,315 |
经过搜集整理了以下5种进行密码强度评估方法,你可以根据产品的数据风控程度选择匹配版本投产使用。
以下,Enjoy~。
目录:
1、简易版
2、常规版
3、专业版
4、HACK版
5、Fuzzy版
6、总结
1、简易版
1.1 规则
1)密码长度至少8位;
2)密码含有数字&字母;
3)密码含有符号;
4)密码同时含有大小写字母。
1.2 验证
1) 符合2项(含)以上允许账号注册。
2) 密码不符合规则进行针对性提示。
1.3 示例
1种组合 → guofu → 拒绝,提示原因
2种组合 → guofu1024 → 通过
3种组合 → guofu1024? → 通过
4种组合 → Guofu1024? → 通过
2、常规版
2.1 规则
类型 |
分值 |
长度 |
+5分:小于等于4个字符 +10分:5到7字符 +25分:大于等于8个字 |
字母 |
+0分:没有字母 +10分:全都是小/大写字母 +20分:大小写混合字 |
数字 |
+0分:没有数字 +10分:1个数字 +20分:大于等于3个数 |
符号 |
+0分:没有符号 +10分:1个符号 +25分:大于1个符 |
奖励 |
+2分:同时含有字母和数字 +3分:同时含有字母、数字和符号 +5分:同时含有大小写字母、数字和符 |
2.2 分数区间
x ≥ 90: 非常安全
90 > x ≥ 80: 安全(Secure)
80 > x ≥ 70: 强(Strong)
70 > x ≥ 60: 一般(Average)
60 > x ≥ 25: 弱(Weak)
25 > x ≥ 0: 非常弱
2.3 验证
1) 允许得分为70分以上的密码进行账号注册。
2) 密码不符合规则进行针对性提示。
2.4 示例
Guofu1024? → 25+20+20+10+5=80分 → 安全
3、专业版
3.1 符号
Flat:均一的加/扣分比例
Incr:出现次数越多,加/扣分比例越大
Cond:根据增加的字元数调整加/扣分比例
n:出现次数
len:密码字串长度
3.2 规则
类型 |
分值 |
基本条件 |
· 密码最低要求8字元 · 最少符合下列4项中3项规则:大写英文、小写英文、数字、符号 |
加分条件 |
· 密码字数/Flat/+(n*4) · 大写英文字母/Cond或Incr/+((len-n)*2) · 小写英文字母/Cond或Incr/+((len-n)*2) · 数字/Cond/+(n*4) · 符号/Flat/+(n*6) · 密码中间穿插数字或符号/Flat/+(n*2) · 已达到密码最低要求项目/Flat/+(n*2) |
扣分条件 |
· 只有英文/Flat/-n · 只有数字/Flat/-n · 重复(Case Insensitive)/Incr/-(n(n-1)) · 连续英文大写/Flat/-(n*2) · 连续英文小写/Flat/-(n*2) · 连续数字/Flat/-(n*2) · 连续字母超过三个(如abc, def)/Flat/-(n*3) · 连续数字超过三个(如123,234)/Flat/-(n*3) |
3.3 计算方式
· 增加字符的变化能提高分数。
· 最后的分数为加分条件和减分项目的条件。
· 分数的范围为0~100分。
· 分数不需达到最低字元即可计算。
3.4 分数区间
60 > x > 0:未达标准
70 > x ≥ 60:警告
80 > x ≥ 70:已达标准
x ≥ 80:优秀(100为上限)
3.5 验证
允许得分为60分以上的密码进行账号注册。
3.6 示例
Aa123 → 43分 → 未达标准
Aa12L3 → 64分 → 警告
4、HACK版
在彩虹表之前,已经出现了对哈希函数的破解算法,被称为“预计算的哈希链集”(Precomputed hash chains)。
密码彩虹表-示例
有关防御彩虹表攻击,开发者在编码时请勿在密码散列函数中使用MD5或SHA1,在密码散列例程中使用密码盐来帮助应用程序“防虹”的编码。
另外,不在彩虹表中的密码强度较高。它是一个庞大的、针对各种可能的字母组合预先计算好的哈希值的集合,不一定是针对MD5算法的,各种算法的都有,可以快速破解各类密码。
在彩虹表中的密码给予提示,比如,A12345 → 此密码安全性低,请修改。
5、Fuzzy版
汪定教授团队对中国网民进行了密码习惯调查和比对先行密码强度模式后,提出了一种更为准确的评估模式。(后台回复fuzzyPSM可获取论文原文)
Google 密码强度反馈
选取了10个领域共50个流量排名靠前的网站,借助网站曾经泄露的密码数据库,先利用离线漫步攻击分析得到密码最常用的结构和使用频次的字典表。测量核心公式:Nmin*log2Cmin,具体解释可参照论文解释。
作者提出从6个维度评估密码的强度,分别是:
1) 长度要求密码不小于8位。
2) 强制执行强制最小字符类型要求。
3) 允许使用符号,带符号的密码通常比不带符号的密码安全得多。
4) 使用常用弱密码的黑名单表(彩虹表),禁止使用。
5) 禁用账户名或个人名。
6) 向用户提供明确的密码建议和指导。
另外,中国用户喜欢把名字放在密码中,作者在破解过程中充分利用名字信息,对算法进行改进,用于度量密码强度测试。
彩虹表需要集成“中式密码”,比如,“woaini”、“5201314”、“zhangsan2022”和“longguofu123”之类的密码。
6、总结
在真实的世界,对于普通用户来说有没有办法可以设置真正意义上高强度的密码呢?参照专家们给出的建议,你可以试试这样做。
1) 不要在密码中包含用户名、真实姓名、生日或公司名称,也不要包含任何与登录信息相关的信息,例如,地址或电话号码。最好也不要包含任何可以在社交媒体上访问的信息,例如孩子或宠物的名字。
还有,比如在银行网站让你设置3个安全登录问题的时候,不要如实回答。
2) 研究发现45%的人使用8个字符或更少字符的密码。如果可能的话,密码的长度至少应为16个字符。相较于在密码中加入非字母字符而言,增加长度可以更简单地使密码变强。
例如,12个字母的密码比12个数字的密码的破解难度仅大8倍。但由16个仅字母字符组成的密码比由12个各类字符组成的密码的破解难度大800万倍。
3) 密码应包括字母、数字和字符的组合,不应包含任何连续的字母或数字,不应是“密码”一词或重复的相同字母或数字。例如,guofu8888、mima777、password111。
4) 密码不应是在键盘上经常连续敲击的字符串。例如,asdfghjkl。
5) 密码不应与任何其他帐户共享。可以使用专业的密码管理器和定期修改密码(虽然很难),可以用密码强度工具帮忙生成密码。
密码的存在笔者一直认为是反人性的设计,但是它的存在对鉴权、保护隐私又有其必要性。选择哪种密码强度取决于设计者对于“便捷”与“安全”的平衡,对于金融级别的产品,毫无疑问需要高强度或多重验证。而对于轻应用,更多可把方便为主要考虑。
此外,笔者一直有种感觉,或者没有密码,使用生物生命特征才是更人性化的设计。次之,用社交账号授权、手机动态验证码进行验证,对于安全性较低的产品也是不错的解决方案。
最后,没有一个密码是“最安全的”,如果有的话,把它写出来就会变得不安全,因为有成千上万的人会在他们的账户上使用它。
推荐阅读:
人工智能客服机器人在客户体验管理方面的变革性影响
净推荐值(NPS)完整行动指南
净推荐值(NPS)分析的常见问题
解读一波大厂的NPS调查案例
NPS如何在企业进行应用实践
SaaS客户体验度量指标
SaaS公司的投资回报率(ROI) 解读
SaaS公司健康度指标: Rule of 40
资源下载:(公众号回复口令)
NPS
谈谈网页产品该如何评估密码强度相关推荐
- 浅议密码强度与密码破解(2)
作为撞库研究.密码破解.社工库的系统文章第二篇 本文皆在讨论密码强度和密码心理学的关系.密码的强度的定义.怎么样生成一个强密码.以及它们和密码破解的关系.希望能对密码学攻防领域的朋友有所帮助,同时能引 ...
- 正则匹配:Email 密码强度 身份证 手机号 日期 数字每4个字空一格等
正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升.下面是在前端开发中经常 ...
- js密码强度正则表达式_这20个正则表达式,能让你少写100行代码
正则表达式,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于字段或任意字符串的校验,如下面这段校 ...
- mysql创建只读权限用户_新品速递 | Harbor 修复权限提升漏洞,MySQL Plus 支持密码强度校验以及审计功能...
为了更好的服务 QingCloud 用户,我们推出了『产品速递』栏目,帮助大家梳理青小云家最近上线的新功能和新产品,供大家从中快速选择,得以应用. 1 Harbor On QingCloud 升级至 ...
- js密码强度正则表达式_知道这20个前端正则表达式,能让你做项目时少写1000行甚至一万行
正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于 ...
- 【HTML、CSS、JS】注册页面实现(带验证码,密码强度验证,表格提交验证等)
由于是个刚学这方面的菜鸡,所以好多代码都是从各个大佬那儿粘贴复制过来的orz,边搬运边学习吧可以说是.以下为部分参考.图片字体我都在网上找的,没有商用应该不犯法吧quq 密码强度检测:https:// ...
- 真实、可量化的密码强度以及如何衡量密码强度
服务用户账户因为不能被锁定,所以成为暴力密码破解攻击的最好目标.理想情况下,所有的账户都应该使用强密码,但服务账户(或者其他不被锁定的账户)还是应该特别注意. 有些读者可能已经在笔者的网站上看过那篇关 ...
- javascript密码强度验证!
//CharMode函数 //测试某个字符是属于哪一类 function CharMode(iN) {if (iN>=48 && iN <=57) //数字return 1 ...
- python实现密码的强度_字符串处理函数(二)python语言实现密码强度校验
"""作者:虞曦非虞兮 功能:判断密码强度 版本:V6.1 日期:2018/12/18 2.0新增功能:限制密码设置的次数:循环的终止 3.0新增功能:保存密码和强度到文 ...
最新文章
- 2002年3月英伟达发布核弹GPU与大算力自动驾驶芯片
- 三菱gs触摸屏进入设定菜单_三菱触摸屏常用功能设置 以及界面调整
- excel最常用的八个函数_Excel中最常用的快捷键
- bzoj 2435: [Noi2011]道路修建【树形dp】
- html实现ppt缩放效果,Powerpoint 2016缩放功能详解(附案例)
- linux callback函数,C++回调函数(callback)的使用
- figma下载_素描vs Figma困境
- 怎么看android底层源码,Android底层有必定的认识,研究过相关的Android源码
- PHP try catch用法
- python gevent async_详解python之协程gevent模块
- C++ 函数模板与分离编译模式
- 红旗Linux 网卡bond,Linux双网卡绑定一个IP的实现
- 非常详细的光纤入户方案书
- SAP JCo BAPI的使用(刘欣) 2009-2-6
- 萤石摄像头实现抓拍短视频
- java编写自动化脚本生成apk_批处理脚本实现android应用程序自动化测试
- 组件化之路 - ViewBinding基类封装
- Android App 启动时显示正在加载图片(讲解+源码)
- vmware不显示usb图标解决办法
- 原生JavaScript实现五子棋(直接上代码干货点赞收藏拿走)
热门文章
- vme嵌入式软件linux,基于VME总线嵌入式Linux应用研究.pdf
- c语言求n个数中奇数乘积,C语言编程实现从键盘输入N个整数 分别求出奇数和偶数的和 在线等.., 任意输入n个整数,分别统计奇数的和,奇数的个数,偶数的和,...
- 中国健身器材行业市场深度分析及发展规划咨询综合研究报告
- 华为/思科/华三基本命令对比
- 联想电脑扬天系列和thinkpad
- 变电站文档数字化管理
- 【Centos各版本下载地址7.6,7.5】
- cornerstone 无限期使用配置
- 全国主要城市空气质量热点图
- 微信小程序控制开关 控制io口 控制灯