【破案了是系统导致的win10系统不写入,win11系统才能写入通行密钥。】
大家好,最近在折腾 TG的通行密钥功能,遇到了一个极其“精神分裂”的 Bug,想问问有没有老哥遇到过同样的情况?
【我的环境】
硬件:正版 YubiKey 5 NFC 5.7.1固件
软件:最新版 TG PC 桌面客户端
【极其割裂的复现步骤】
绑定阶段(成功但“不占坑”):我在已经登录的电报客户端里,成功把 YubiKey 添加为了通行密钥。电报界面提示成功,但是,我用 Yubico Authenticator 软件查看,发现坑位占用依然是 0(这说明电报强制使用的是 Non-Discoverable Credential 非驻留密钥,没把账号存进 U 盾本地)。
登录阶段(强行要“驻留凭证”):我打开一个全新的最新版电报 PC 客户端,在不输入手机号的情况下,直接点击界面的【使用通行密钥登录】。系统正常唤起了验证,要求我输入 PIN 码并触摸 YubiKey。
死锁报错:触摸完毕后,系统直接报错“此安全密钥似乎不正确”(底层的错误大概率是 PASSKEY_CREDENTIAL_NOT_FOUND)。
【我的疑惑】
这不纯纯的逻辑精神分裂吗?!创建凭证的时候,电报的代码让硬件“不要占坑”(不保存本地记录);结果到了登录的时候,又不让先输手机号,直接强行找硬件索要“占坑”的驻留凭证!U 盾肚子里根本没存,当然报不正确啊!
这种最基础的逻辑死循环,电报的开发团队上线前,难道就只测了 Windows Hello/iCloud,连一次正经的物理安全密钥都没测试过吗?不知道大家有没有遇到过这个问题,目前除了当废设还有解吗?
根据询问AI得知 驻留密钥 根本还没有普及虽然这个协议8年前推出的但是几乎所有的厂家都是把它当成高级的2AF来对待只有少部分厂家是真的支持驻留密钥。坑真的坑买它的话你就把它当成一个离线硬件的2AF使用吧,想无账号密码登录可惜的是大部分的厂家都不支持。
当初花这么多钱买 YubiKey 5 NFC,就是冲着 **FIDO2 / Passkey 的驻留密钥(Discoverable Credential / Resident Credential)** 去的。
我的理解很简单:
> 把账号凭证直接存进 YubiKey,
> 登录的时候插上/碰一下,输 PIN、摸一下,甚至连账号都不用输入,YubiKey 自己告诉网站“我是谁”。
结果折腾了一圈才发现,**很多厂商的 Passkey 根本不给你存成驻留凭证。**
Google、Cloudflare,还有不少服务,实际给硬件安全密钥创建的都是 Non-Discoverable Credential。
于是登录流程就变成:
**先输入账号 → 再输入密码/选择账号 → 调出安全密钥 → 输入 YubiKey PIN → 触摸 YubiKey → 完成验证。**
等等……
这跟我以前用 2FA 验证器有什么本质区别?
2FA:
> 输入账号密码 → 打开验证器 → 输入 6 位验证码。
YubiKey:
> 输入账号 → 输入密码 → PIN → 插入/靠近 → 触摸。
甚至某些场景下还比 TOTP 麻烦。
我买 YubiKey 不就是为了**不用记账号、不用输入密码、不用拿手机找验证码**的吗?
结果厂商给我整一个 Non-Discoverable Credential,然后登录的时候还得先告诉服务器“我要登录哪个账号”。
那你这个 Passkey 和传统的第二因素到底有什么区别?
当然,从 WebAuthn 的技术定义来说,**Non-Discoverable Credential 和 TOTP 2FA 还是完全不同的东西**。它依然具有公钥密码学、抗钓鱼等优势,不能简单说成“就是 2FA”。
但问题是:
**我买硬件安全密钥,看中的就是它作为 Passkey 的“无账号上下文登录”和驻留凭证能力。**
如果最后每家厂商都把它当成一个高级版第二因素来用,那我为什么不继续用 2FA?
尤其是 Telegram 这个更离谱。
我在已经登录的 Telegram 里成功把 YubiKey 添加成 Passkey。
结果 Yubico Authenticator 一看:
> **Passkeys:0**
也就是说根本没有给我创建驻留凭证。
然后我打开一个全新的 Telegram PC 客户端,点:
> **使用通行密钥登录**
它又不让我输入手机号,直接让我拿 YubiKey 登录。
YubiKey:
“哥们你倒是先告诉我我要找哪个 credential 啊,我肚子里根本没有驻留凭证。”
然后:
**PIN → 触摸 → “此安全密钥似乎不正确”**
?????
这不是纯纯的逻辑闭环吗?
注册的时候:
> 不给你存驻留凭证。
登录的时候:
> 不告诉我账号,直接让我从安全密钥里找驻留凭证。
最后:
> 此安全密钥似乎不正确。
我:?????
目前我折腾下来,真正让我觉得“这钱没白花”的反而是 **GitHub**。
GitHub 的 Passkey 做得比较符合我当初对这玩意的期待:凭证存进 YubiKey,登录时可以直接让安全密钥参与发现和认证,不需要每次先把账号信息喂给网站。
所以现在最大的感受就是:
**不是 YubiKey 本身不行,而是很多网站根本没有把它当“真正的 Passkey”来用。**
花几百块买了个硬件,结果不同网站给你实现成:
> “高级一点的 2FA”
真的有一种花钱买了性能,然后发现游戏锁了 30 FPS 的感觉。
所以准备买 YubiKey 的兄弟们,**千万别只看“支持 Passkey / FIDO2”这几个字。**
一定要先确认你实际使用的网站到底支持:
**Discoverable / Resident Credential**
还是只是:
**Non-Discoverable Credential**
这俩对用户体验的区别真的巨大。
不然最后很可能就是:
**“我花钱买了 YubiKey,是为了无密码、无账号、插上就登录。”**
实际得到:
**“请输入账号 → 输入密码 → 输入 YubiKey PIN → 触摸 YubiKey。”**
我真的绷不住了。
非驻留密钥本来就不支持不输入用户名的登录吧?这种应该属于u2f那一套登录,就是你得先输入用户名密码然后passkey当二次认证?
@fits #1 TG客户端有通行密钥按钮 点击就直接弹验证硬件 并没有要输入号码的过程。哪换成输入号码登录以后 验证方式只有验证码 并没有要求触摸硬件验证 ,所以不管是 非驻留密钥 还是驻留密钥 都无法使用 但是我又成功绑定上了 绑定上了但是TG客户端没有认 昨天绑定的也重新删除再绑定 一样的情况,换了不通的号依然一样的情况。我感觉就是TG开发人员逻辑精神分裂了 他们自己都搞不明白 非驻留密钥 和 驻留密钥 的区别 一群草台班子
然后绑定了一圈 出了github是 驻留密钥 其他比如谷歌 CF 都是非驻留密钥 bitwarden这货还绑定不上
还是驻留密钥好用结果大部分都是非驻留密钥 脑壳疼
我使用ios的tg客户端,无法选择外部密钥,所以我怀疑他们肯定做了什么操作?macos的客户端都没有passkey的选项。但我使用ios客户端将passkey存在apple钥匙串中,在web是可以登录的。。。
我猜他们原本的设计应该是验证禁用物理key的……
可能因为客户端bug之类的原因允许了把key存在了硬件里,所以造成了不可用
比如微信也是,passkey不支持把密钥存到外部硬件密钥里面
@fits #3 哪我大概就是明白怎么回事了 TG开发人员还没有做好支持硬件通行密钥的功能,现在的通行密钥功能只能软件可以使用比如苹果储存在苹果的云服务器或者谷歌云服务器,硬件驻留密钥模式 还没有 绝对的这样的 好多厂家都是非驻留密钥 不好用啊 不如驻留密钥好用 所以花了这么多钱买的YubiKey5 我人都傻了 这和2AF登录流畅没区别啊还是要输入账号和密码 然后验证触摸YubiKey 那我还不如使用2AF还是免费的 太坑爹了这个玩意 损失惨重
@postmaster #4 很多厂家的通行密钥都是非驻留密钥这和2AF有什么区别,没区别 既然这样还去买这么贵的YubiKey纯纯大冤种 我裂开了,买这个就是为了驻留密钥方便登录 结果和2AF一样用起来还没有2AF方便 2af输入一下验证码就行 这个好到 要输入pin码还要触摸一下 。大家别去买YubiKey了纯纯大冤种还没有2AF方便 因为大部分的厂家都是非驻留密钥绑定了一圈只有github是驻留密钥可以不用输入账号直接登录 谷歌CF 还要很多都是非驻留密钥 要输入账号和密码的 验证方法和2AF类似但是比2AF麻烦 坑爹啊
支持passkey的登录模式也就这一年不到火起来的吧?之前都是u2f,倒不如说,webauthn这一套规范也才更新没多久,别急,以后会越来越多的
还是觉得存到谷歌的authentic更方便。。
@林地雪原-0062 #8 这不是想把数据放在自己手里面嘛登录账号的时候都不用账号和密码一键触摸登录 结果它就是一个硬件的2AF 蚌埠不了
@fits #7 被坑了水太深和我想象的差距巨大 花了巨资结果是大炮打蚊子破防了