Windows hello 会破坏 yubikey u2f/fido2 的正确运行

2021-07-10 01:40:25 +08:00
 billlee

TL;DR

Windows hello 本身就是一个 FIDO2 密钥,并且优先级高于外接 yubikey. 注册 key 的时候很容易就把 windows hello 注册进去了。

怎么发现的

在 namecheap 上注册 yubikey, 发现注册 key 和使用的过程都莫名其妙。注册 key 和后面的每次登录到要我输入 windows hello PIN 码,而不需要去 touch yubikey.

直到,我试了一下拔掉 yubikey 还能不能登录。发现真的可以。

解释

在带 TPM 的电脑上,windows hello 本身就是一个 FIDO2 authenticator. 也就是说,windows 电脑本身就可以作为一个 key 来使用。

并且,这个 TPM 模拟的 key 的优先级,是高于外接的 yubikey 的。如果按照默认的注册 key 流程走下去,就算插这个 yubikey, 也会把 TPM 模拟的 key 注册上去。

问题出在哪里

注册 key 过程中的文案根本不知道在说什么(微软这是继测试之后把产品团队也砍了吗),大概就是「 Mozilla Firefox 请求使用安全密钥」、「输入 windows hello PIN 确认」,我根本没有意识到这里调用的不是 yubikey.

要注册上 yubikey, 是需要在输入 windows hello PIN 的步骤点取消,然后才会 fallback 过去,提示触摸安全密钥。

这个问题真的挺严重的,我作为信息安全从业人员都被这文案骗过去了,它就不能在第一步先把能找到的 key 列出来让我选一个吗

Migration

网站应该是可以 override 这个顺序,或者拒绝掉 windows hello 作为 authenticator 的。Google 账户注册 key 的时候就会跳过 windows hello, 直接提示触摸安全密钥。

作为用户,就是注册 key 看到弹框里带有 windows hello 的就点取消。注册完 sign out, 拔掉 yubikey 再登录试试,看看会不会登录失败。

References

www.reddit.com/r/yubikey/comments/l7rl5r/users_accidentally_setting_fido2_pin/gl8nqu1

2995 次点击
所在节点    YubiKey
8 条回复
yujiang
2021-07-10 01:43:59 +08:00
所以 Windows hello 这破玩意我直接给关了
billlee
2021-07-10 01:52:22 +08:00
@yujiang 这个还能彻底禁用吗?禁用 TPM 了?
mschultz
2021-07-10 08:46:19 +08:00
感觉主要是一些文案、操作逻辑的细节问题。MacBook 的 Touch ID 也有同样的作用。
dingwen07
2021-07-10 08:49:28 +08:00
你注册的时候搞成内置安全密钥了,注册的时候先 cancel 一下,就会使用外部安全密钥(或者使用 edge 的 inprivate
yujiang
2021-07-10 11:13:05 +08:00
@billlee 没有,我放弃使用 windows 锁屏,直接无密码登录,重要数据放移动硬盘
qbqbqbqb
2021-07-10 16:25:27 +08:00
网站确实有办法 override 这个顺序,你可以看一下这个 Demo: https://webauthn.io/
里面 Authenticator Type 选择 Cross Platform 的话,就是只能用外接密钥;选 Platform 是用 Windows Hello,这个应该是标准里已经提供的功能了。
qbqbqbqb
2021-07-10 16:29:09 +08:00
@qbqbqbqb 但是如果这样做的话,网站就要为内置密钥用户和外置密钥用户做两个 UI 了,估计有些小网站懒得做。
billlee
2021-07-10 16:45:13 +08:00
@qbqbqbqb 所以我感觉这个是微软的锅啊,既然网站没有 preference, 系统上又有多个 authenticator, 就应该给个列表让用户选啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/788645

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX