V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
billlee
V2EX  ›  YubiKey

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

  •  
  •   billlee · 2021-07-10 01:40:25 +08:00 · 3212 次点击
    这是一个创建于 1239 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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

    8 条回复    2021-07-10 16:45:13 +08:00
    yujiang
        1
    yujiang  
       2021-07-10 01:43:59 +08:00 via Android
    所以 Windows hello 这破玩意我直接给关了
    billlee
        2
    billlee  
    OP
       2021-07-10 01:52:22 +08:00
    @yujiang 这个还能彻底禁用吗?禁用 TPM 了?
    mschultz
        3
    mschultz  
       2021-07-10 08:46:19 +08:00 via iPhone
    感觉主要是一些文案、操作逻辑的细节问题。MacBook 的 Touch ID 也有同样的作用。
    dingwen07
        4
    dingwen07  
       2021-07-10 08:49:28 +08:00 via iPhone
    你注册的时候搞成内置安全密钥了,注册的时候先 cancel 一下,就会使用外部安全密钥(或者使用 edge 的 inprivate
    yujiang
        5
    yujiang  
       2021-07-10 11:13:05 +08:00 via Android
    @billlee 没有,我放弃使用 windows 锁屏,直接无密码登录,重要数据放移动硬盘
    qbqbqbqb
        6
    qbqbqbqb  
       2021-07-10 16:25:27 +08:00   ❤️ 1
    网站确实有办法 override 这个顺序,你可以看一下这个 Demo: https://webauthn.io/
    里面 Authenticator Type 选择 Cross Platform 的话,就是只能用外接密钥;选 Platform 是用 Windows Hello,这个应该是标准里已经提供的功能了。
    qbqbqbqb
        7
    qbqbqbqb  
       2021-07-10 16:29:09 +08:00
    @qbqbqbqb 但是如果这样做的话,网站就要为内置密钥用户和外置密钥用户做两个 UI 了,估计有些小网站懒得做。
    billlee
        8
    billlee  
    OP
       2021-07-10 16:45:13 +08:00
    @qbqbqbqb 所以我感觉这个是微软的锅啊,既然网站没有 preference, 系统上又有多个 authenticator, 就应该给个列表让用户选啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2583 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:36 · PVG 09:36 · LAX 17:36 · JFK 20:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.