
双因素认证能很好地防止密码泄露导致的入侵问题。国外的很多网站在开启双因素认证,比如 Github 、Gmail 、Reddit 等。
经常多个网站使用同一套密码的原因,自己从去年年初开始习惯在一些国外网站开启双因素认证。试了 Google Authenticator 、Authy 、FreeOTP 等几款身份认证器,目前比较喜欢 Authy 这款 APP 。
但是双因素认证技术似乎在国内不流行?国内的网站、APP 好像更多的是通过发送短信的方式进行二次验证。从节省成本的角度考虑,对采用短信而不用双要素认证不太理解。
或者是我不知道,国内是否已经有在广泛使用双因素认证的案例。比如微信电脑端登录需要手机微信扫码确认这种是不是双因素认证的变体?
1 cairnechen 2021-01-05 09:53:07 +08:00 我不太理解,短信验证码难道不是双因素的一种吗? |
2 Maxxxxyu 2021-01-05 09:56:00 +08:00 短信,邮件接受验证码都可以算双因素验证,只不过国内现在连输密码这个步骤都跳过了,可能是因为国内手机号都是实名的? 另外国内游戏用双验证挺早的,以前用那种物理的密保卡,现在各种令牌之类的都算双验证。 |
3 manami OP @cairnechen 其实我对 2FA 的概念也不是太了解。目前我接触到国外的 2FA 都是下载身份认证器 APP 扫码绑定,然后每次可以进去刷新获取一个动态码的方式 |
4 manami OP 银行的电子密码器这种物理固件好像 |
7 agagega 2021-01-05 09:59:42 +08:00 via iPhone 国内手机号都快成惟一的账号 id 了,靠邮箱来 2fa 肯定不行。离线的 totp 和 hotp 没 App 搞,我猜想产品他们肯定又要说什么国内用户水平不高之类的话,然而我寻思其他国家也不是人均懂王。 |
8 Googlefan 2021-01-05 10:00:13 +08:00 via Android QQ 安全中心令牌,银行电子验证器,应该也算是吧? |
9 iceneet 2021-01-05 10:00:15 +08:00 现在主要是手机都实名制了 所以用手机验证了 |
10 xingyuc 2021-01-05 10:00:40 +08:00 短信安全吗,手机丢了,卡丢了,不危险吗。手机放家里了,无法登录,不折腾吗 |
12 wangxiaoaer 2021-01-05 10:01:10 +08:00 了解一下畅游旗下的各种游戏,就是你说的两步验证。 |
| 13 manami OP 2FA 身份验证好像可以离线的,现在用的 Authy 都是可以离线获取动态码,有没有专业人士解答下 |
14 easonHHH 2021-01-05 10:04:31 +08:00 |
15 boris93 2021-01-05 10:04:42 +08:00 via Android @manami #13 正好我们前两天刚实现了一个 因为 TOTP 算法是定好的,我们服务端生成好一个密钥,做成二维码给用户扫,扫完了手机端按照相同的算法就生成了那 6 位数字,不需要联网 |
16 ysc3839 2021-01-05 10:04:47 +08:00 @manami Authy 那是 Time-based One-time Password (TOTP),是通过一个密钥加上当前时间算出来的,密钥是存在本地的,所以可以离线使用。 |
17 chroming 2021-01-05 10:10:28 +08:00 via iPhone 在公司维护了一个对内的 totp 服务,软件也是内部用的软件对接 sso 自动开通令牌。国内不普遍我觉得重要的原因是手机人人都有,用短信能减少用户学习成本。 |
18 charseer 2021-01-05 10:17:45 +08:00 用 keepass 就能很好代替各种 2fa 客户端,暴雪的啊 steam 的啊都能装一起 |
19 ired 2021-01-05 10:27:29 +08:00 负责过用户系统,也调研 过 2FA/MFA(多因素)。 海外用户多的主要的原因在于,账户习惯使用邮箱。从而在安全性上更加需要二次验证。(如 Gihub 、Gmail 、Reddit ) 国内由于手机号(并且近些年的实名),本身短信验证码就是 2FA 的一种实现方案。 ------------------------ 题外话,从安全性来说,手机短信的安全性 > TOTP 离线动态码(简称令牌)。 业界通用的方案是绑定令牌前,需要绑定手机号。 也可以通过手机验证码解绑令牌。 ------------------------ 为什么要求时间跟服务器要求 30 秒误差内? 这个只是 Google 提供的算法默认配置而已,算法本身可以简单理解为 hash (密钥 + current_time() / 30) 得到的值。 所以大于 > 30 秒,客户端 和 服务端 计算出来的 hash 值就不一致了。 ------------------------ 误差大于 30 秒的解决方案? server 的校验客户端计算出的 hash 值时,可以配置允许的误差,如前后加 N 个时间片( current_time() / 30 )。 举例:如果允许前后加 1 个时间片,服务端几计算的动态值为 CH 。 那么 server 会校验 3 次。 CH == hash (密钥 + current_time() / 30) || CH ==hash (密钥 + (current_time() / 30) - 1) || CH == hash (密钥 + (current_time() / 30) + 1) 匹配成功一次即为验证成功。 |
20 dnsdk 2021-01-05 10:28:47 +08:00 微软自家的 Authenticator,连密码都不用输就登录了。既然都需要打开 app 了,感觉扫码登录更快。 |
21 Jooooooooo 2021-01-05 10:30:29 +08:00 tob 的很多, 为了安全可以牺牲便捷性 比如登录公司内网 |
22 ired 2021-01-05 10:32:54 +08:00 @ired 举例:如果允许前后加 1 个时间片,服务端几计算的动态值为 CH 。 -------------笔误-------------- 举例:如果允许前后加 1 个时间片,客户端计算的动态值为 CH 。 |
23 essethon 2021-01-05 10:47:53 +08:00 |
24 yuhuike 2021-01-05 10:51:19 +08:00 via Android 国内现在啥都是短信,很多网站密码都是废的,你换了设备必须手机验证 |
25 libook 2021-01-05 11:02:41 +08:00 现在运营商搞了一个一键登录的功能,类似短信验证码,但是把收发验证码的过程省了,运营商在用户同意之后直接提供手机号给 App 厂商,确保是准确的。 有安全意识的人不多,这部分人又觉得大多数 App 都没必要做到特别安全,剩下的密码加短信也就够了,海外一般是密码加动态口令,这个是不同的用户习惯导致的。 国内等保会对企业内系统要求使用双因素认证,但不要求具体形式,只要求使用现代密码技术。 |
26 USAA 2021-01-05 11:03:13 +08:00 我是不想花钱买设备。 就算有设备,我只想买一个设备所有的网站都可以使用 但是问题是,这是块大蛋糕,除非是能垄断,不然谁碰谁死 |
27 337799 2021-01-05 11:12:53 +08:00 国内都是短信了。 国外当年应该是由于短信属于个人隐私,用户不太愿意填,大部分是 email,或者类似 Google Authenticator 之类的 app 。 华为手机禁了 google service 之后,Google Authenticator 也用不了了,就很难受了。 |
28 linksNoFound 2021-01-05 11:39:22 +08:00 你说的这个设备,它免费吗? |
29 manami OP @linksNoFound 是免费的 |
30 Overfill3641 2021-01-05 11:44:23 +08:00 @337799 #27 我记得谷歌是离线版,不需要联网也可以用啊,也不需要谷歌构架。 |
31 Overfill3641 2021-01-05 11:45:53 +08:00 其实我想给 OpenWRT 也加个 TOTP,但不知道怎么弄。 |
32 baomoe 2021-01-05 11:48:51 +08:00 玩过网游没 古剑奇谭网络版 剑网 3,都是你说的这种,既可以离线也可以在线。叫安全令牌。魔兽应该也有。 |
33 106npo 2021-01-05 12:10:52 +08:00 via Android 因为国内大部分你见到的账号系统没有这么高的安全需求 |
36 icanfork 2021-01-05 12:24:42 +08:00 你的标题幸亏是问号结尾的,不然就是错的。 |
37 miaoever 2021-01-05 12:36:45 +08:00 请不要使用手机短信作为 2FA 验证手段,因为及其不安全,难道大家忘了之前那个因为手机被盗而一夜间被开通各种网贷的事了么。 |
38 miaoever 2021-01-05 12:40:22 +08:00 接楼上,补上链接:<一部手机失窃而揭露的窃取个人信息实现资金盗取的黑色产业链> https://www.freebuf.com/articles/network/249294.html |
39 taobibi 2021-01-05 13:03:00 +08:00 国内“安全”的核心是实名+可管可控。楼主可以关注一下各种国内安全大会的讲演。每次“可管可控”都是第一位的。至于用户端安全,不是核心内容。因为造成了经济损失可以通过打官司解决,而做的完全可管可控之后,也很方便给法院提供证据。 去年开始,有的安全厂家开始推广“诱导安全”策略,就是不再堵截账号入侵,而做好日志及追踪系统。通过日志系统把人抓了就解决问题了 |
40 0TSH60F7J2rVkg8t 2021-01-05 13:06:33 +08:00 @miaoever 是的,而且手机已经不是双因素的因子了,它已经成为单因素登录。很多 app 都支持手机号一键登录。而双因素最主要的问题是,丢失任何一个 因素都不会导致被盗号,而且有至少 3 个因子存在(密码、2FA 密码、救援码),只要保证手里同时有 2 个因子,账号就不会丢。丢失任意一个,也不会导致账号被盗。而手机号不仅做不到上述几点,甚至还弱化了双因素的安全性。为了弥补这个缺失,所以很多厂商,采取了获取扫脸信息的其它因素来辅助验证,美其名曰更安全,实际上是抛弃了安全方案而选用了一个需要泄露生物信息的更复杂方案。 |
41 0TSH60F7J2rVkg8t 2021-01-05 13:07:16 +08:00 而双因素最主要的问题是->而双因素最主要的好处是 |
42 essethon 2021-01-05 13:20:46 +08:00 @toptyloo #34 感谢,查了一下文档确实。我最近都没有在用阿里云产品,不过印象中前两年我还在用阿里云的时候是不支持的,可能那时候还叫 MFA 。现在文档里有一句「多因素认证( MFA )已更名为 TOTP 。」 |
46 systemcall 2021-01-05 16:52:35 +08:00 via Android @crab 理论上,知道手机号有很多办法得到身份证号,凭着身份证号可以去运营商的客服那里得到 pin 码 |
47 hyshuang2006 2021-01-05 18:15:55 +08:00 |
48 systemcall 2021-01-05 18:47:06 +08:00 @hyshuang2006 用户只是消耗品而已,要考虑消耗品的感受吗? |
49 shyling 2021-01-05 18:48:10 +08:00 国内一般的场景是不那么流行,有的直接手机号一键就登陆了。 支付时大部分还是密码 + 短信验证码的。。 真要是手机丢了,app 看 code 和 收短信好像区别也不大。。(手机还能挂失搞个临时停机?) |
50 tsukiikekaoru 2021-01-05 19:01:37 +08:00 via iPhone 因为没有经过 web 的大规模洗礼。web 时代电子邮件才是底层的基础设施服务,每个人都必有一个电子邮件账户。而国内全民数字化是在移动互联网微信、抖音、快手崛起以后,手机成了底层的基础设施,每个人必有一个手机号,而此时的用户由于不再需要接触 web,电子邮件服务根本不再是必需品,这一阶段的用户由于知识水平问题也不会 web 、电子邮件那一套逻辑,再叠加 17 年的实名制,导致所有企业可以名正言顺的采取统一行动强制从账户体系从电子邮件切换到手机号,而不必担心反弹。在那之后的公司很多更进一步完全舍弃电子邮件甚至舍弃密码,强制要求验证码登录。这一现象再注重数据的公司和盛行广告推销的企业尤其严重。 |
51 TypeError 2021-01-05 19:21:03 +08:00 via Android @cairnechen 短信风险极高 |
52 hshpy 2021-01-05 19:49:13 +08:00 @systemcall 解锁拿 puk 码或补卡要本人和身份证,如果在异地还需要服务密码。 |
53 SenLief 2021-01-05 19:49:29 +08:00 @systemcall pin 更改后运营商那边应该是没有的,需要 puk 解锁掉 pin 。这个就要看营业厅是否违规操作了。 |
54 SenLief 2021-01-05 20:28:39 +08:00 其实手机验证码也算是 2fa 吧,和那些 app 验证有什么本质上的区别吗?手机丢了被解锁了,一样不是打开 app 看。 |
55 Tumblr 2021-01-05 21:04:32 +08:00 楼主对 MFA/2FA 的理解太狭隘了。。。 一般说到认证首先是账号+密码,除此之外,场所(比如信任的网络环境)、密保问题、图片、短信、验证器以及一些物理验证(卡、密钥等)等都算是多因子验证的方式。 |
56 chinvo 2021-01-05 21:14:40 +08:00 via iPhone |
57 systemcall 2021-01-05 21:22:30 +08:00 @hshpy #52 只要是线上办理的话,就有些办法。有人脸照片甚至录像,过活体检测没那么难。我去过一些网吧,那边的活体检测就有办法弄过去。而且活体检测所采集的视频,又怎么防止再泄漏呢? 另外,如果是 2G 没有关的地区,降到 2G,有办法弄下来短信 服务密码好像可以用身份证号重置。人脸+身份证,并不算难弄到。比起买那些东西花的钱,可能得到的利益多得多 |
58 littiefish 2021-01-05 21:26:20 +08:00 via iPhone 国内只要你手机号 |
59 xcstream 2021-01-05 21:27:32 +08:00 微信 pc 登陆要拿手机 就很烦 |
62 avrillavigne 2021-01-05 22:33:58 +08:00 公司内网用 |
63 hshpy 2021-01-05 22:36:51 +08:00 @systemcall 一般设置号锁屏密码和 pin 码手机泄露的几率就很低了,大部分情况都有时间办补卡,2G 网络,mac 网卡这些另说,如果碰上专业的就得争分夺秒了。 @beijiaoff 同,家人把解 pin 当成解屏给锁了,跑沟通 100 要服务密码,号码十多年了一直没用过服务密码早忘了,没有就得回老家,回老家路上没流量用也不方便,最终在 zfb10086 查到 puk 码,一下子看到了曙光,解锁后马上重置了服务密码。 |
64 Maskeney 2021-01-05 22:54:00 +08:00 跟节省成本没关系,短信验证码反而会提高成本。但是网安法要求必须实名,业内惯用做法就是绑定手机号间接实名,并且用户也乐得不用记密码,很多用户想能记清楚六位数银行卡密码就已经实属不易,当然会给日后换手机、号卡等埋下深坑,可是那又怎样呢?现在有几个不去图一时方便的呢,更何况更多的情况下你根本没得选,只能用唯一的短信验证码登录 |
65 Maskeney 2021-01-05 22:58:23 +08:00 @ired #19 你说的这一堆不敢说完全错误吧,但是的确与事实有出入,特别是你说的这个所谓“Google 算法默认配置”,Many OTP technologies are patented. This makes standardization in this area more difficult, as each company tries to push its own technology. Standards do, however, exist for example, RFC 1760 (S/KEY), RFC 2289 (OTP), RFC 4226 (HOTP) and RFC 6238 (TOTP). |
66 TigerK 2021-01-05 23:01:47 +08:00 短信跟随手机号码,即使手机更换了,也可以继续使用这种方式完成验证过程。 而基于 app 的二次验证,因为 app 卸载或手机重置后会丢失验证信息,导致用户无法登录,而大部分(国内)用户可能不会保存恢复密钥,产生的问题及解决成本更高。 |
67 shijingshijing 2021-01-05 23:08:43 +08:00 |
68 dallaslu 2021-01-05 23:14:10 +08:00 提供短信验证,还需要额外付出费用,国内厂商也不傻,为啥还要这么做呢?自然是有好处: 1. 免安装 APP,门槛低 2. 手机 OS 提供自动填写验证码功能,操作更快捷(此条存疑,因为防滥用还要填验证码) 3. 确认手机号即相当于实名 4. 每人号码有限,避免被薅羊毛 5. 手机号可用于大数据分析、电话营销 |
69 Luker 2021-01-06 00:08:40 +08:00 via iPhone 国内啥都要你的手机号,还是不给不让用那种 就很离谱 |
70 fline 2021-01-06 00:54:07 +08:00 国内的 2FA 都倾向于不让用户知道密钥是什么 |
71 lovelive1024 2021-01-06 09:05:13 +08:00 国内都用手机号就挺离谱的,手机一丢别人啥都能上去 |
72 heliotrope 2021-01-06 09:15:40 +08:00 前几年都用动态口令 以前做的项目 要用硬件二次认证 还有手机令牌 APP (和谷歌的那个身份验证器一样) 只是现在不流行罢了 不实用 都要一定的学习成本 要绑定 还不如手机短信直接认证的方便 |
73 zhaozs1 2021-01-06 09:20:50 +08:00 在服务器,云厂商用的都挺广泛的,私有云的动态口令也挺多的.我用的就挺多 |
74 raptor 2021-01-06 09:40:19 +08:00 你说的这叫 TOTP,只是 2FA 的一种,短信也是 2FA 的一种。 |
75 0TSH60F7J2rVkg8t 2021-01-06 14:22:05 +08:00 via iPhone 楼上那么多人迷信手机号是安全的,只是自己没遇到而产生的错觉。我有个手机号,多年前帮老妈办理的,号拿到后发现原主人绑的支付宝没解绑,联系支付宝客服,客服说帮通知原机主注销。过了一天来电话说联系不上原机主,让我用邮箱注册。然后我不甘心,登录淘宝,查看购物历史,找几个购物地址里的 3 个电话发了短信,要他们通知机主。可能是被当垃圾短信,没人理,没人回。当然我拿不到支付密码,但手机登录还是很容易的,隐私也能看到。而且最后多年后我还是成功把那个支付宝解绑掉了,把我这个手机号空出来了。至于怎么做到的,就不方便说了。但整件事告诉我的道理就是,手机号验证登录一点都不安全。 |
77 taobibi 2021-01-07 13:33:59 +08:00 @systemcall 活体检测所采集的视频不确定是不是有本地缓存,我们公司拍下来用户的身份证照片都是本地有缓存的。另外移动 APP 在线开卡的人类活体认证的视频,可以在手机里面找到本地视频() |
79 justaname 2021-11-24 06:57:36 +08:00 @systemcall 伪造身份去运营商线下补卡本身就是犯罪风险很高的事情了,除了网银这种产品几乎没人会冒这么大风险干这事,这比以前偷偷跑别人屋里偷现金还容易被抓吧 |
81 x2009again 2022-05-26 21:08:06 +08:00 @leoleozhu 这个是通用的,google 、authy 都可以,建议使用多客户端的,不用只依赖手机 |
82 spediacn 2024-06-18 11:32:20 +08:00 我也在头疼给国内朋友配置 TOTP ,手机号是坚决不配置的,那个算不上双因子 |