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

谷歌多因素验证中安卓手机蓝牙登录的原理是什么?

  •  
  •   vevlins · 2021-03-04 17:13:49 +08:00 · 2156 次点击
    这是一个创建于 1349 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://www.landiannews.com/archives/57473.html

    按照效果图,pc 端没有其他操作,手机怎么知道靠近了电脑?

    按照我的想法,至少也要手机端搜索下附近蓝牙的 id,跟电脑的蓝牙 id 进行匹配。但是 webjs 不支持获取本机蓝牙 id 的能力,而且 webjs 操作蓝牙也要弹窗提示框进行配对。

    8 条回复    2021-03-05 10:29:48 +08:00
    vevlins
        1
    vevlins  
    OP
       2021-03-04 17:22:42 +08:00
    是不是必须在 chrome 下?谷歌自家背后做了这个匹配逻辑
    qbqbqbqb
        2
    qbqbqbqb  
       2021-03-04 17:39:37 +08:00   ❤️ 2
    这个是 FIDO2 WebAuthn 认证,是新的 Web 标准里东西。相应的物理密钥设备本身就包含 usb, nfc 和蓝牙三种形式,同时还支持非物理密钥比如 Windows Hello,以后的浏览器都要原生支持的。

    根本不是什么 js 直接读蓝牙。
    qbqbqbqb
        3
    qbqbqbqb  
       2021-03-04 17:49:38 +08:00
    更正一下,“以后的浏览器都要原生支持的”不准确。谷歌的这个认证是同属于 FIDO2 协议的,但更类似于 Windows Hello 这种平台相关的虚拟密钥(和原来就有的蓝牙物理密钥反而关系不大)。这样看来别的浏览器应该没法支持。
    wooyuntest
        4
    wooyuntest  
       2021-03-04 20:46:05 +08:00   ❤️ 1
    FIDO2 webauthn
    可以了解下 yubikey
    ysc3839
        5
    ysc3839  
       2021-03-05 00:23:46 +08:00
    个人推测是私有协议。
    不过 Google 之前推出过一个安全密钥,也是能通过蓝牙进行认证,也有可能存在通用标准,Android 上 GMS 实现了这个标准。
    also24
        6
    also24  
       2021-03-05 00:44:05 +08:00   ❤️ 1
    翻了一下,协议在这里:
    https://fidoalliance.org/specs/fido-v2.0-rd-20180702/fido-client-to-authenticator-protocol-v2.0-rd-20180702.html#ble


    楼主对于『蓝牙 id 』的理解是存在误区的,实际上 BLE 更常用的模式是根据 Service UUID 进行筛选连接。
    如果附近只有一个设备提供了指定 UUID 的 Service,那么可以直接连接进行读写触发认证。

    而 Web Bluetooth API 也完全具备相应的功能:
    https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API
    vevlins
        7
    vevlins  
    OP
       2021-03-05 10:16:14 +08:00
    @also24 描述中的 webjs 操作蓝牙的能力就是指 Web Bluetooth API,我当时疑惑的是 web bluetooth api 配对时要弹出一个下拉列表,主动选择连接哪个。在网站的动图中没看到。
    also24
        8
    also24  
       2021-03-05 10:29:48 +08:00
    @vevlins #7
    看来还是没有说清楚,绝大部分 BLE 设备都是非加密的,是不需要配对就可以读写的,需要的只是搞清楚目标设备是哪一个。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1094 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:42 · PVG 06:42 · LAX 14:42 · JFK 17:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.