查看: 121|回复: 0

基于Credential Provider的Windows蓝牙解

[复制链接]
发表于 1 小时前 | 显示全部楼层 |阅读模式
Windows 一直没有类似 Mac Auto Unlock 的能力,回到工位仍需重新输入密码。Watch Unlock Windows 试图补上这一环:戴着 Apple Watch 离开后电脑锁屏,走回来自动解锁。它的技术核心不是简单的蓝牙连接,而是用 RSSI 判断离开和返回,再通过 Windows Credential Provider 把保存的账户密码交给系统登录界面校验。

解锁判定:先离开,再回来

程序锁屏后,如果手表蓝牙信号低于“远离阈值”,就判定为离开;当信号重新回到“靠近阈值”,才触发解锁。只有“先离开、再回来”才会解锁,锁屏后一直坐在电脑旁边不会自动解锁,仍按正常方式输入密码。原文实测走远再回来大约 0.17 秒解锁。距离阈值可在“我的设备”里调整,RSSI 受墙体、人体遮挡和手表朝向影响较大,最好在自己的工位上多走几次再确定。

身份识别与登录链路

Apple Watch 的蓝牙广播地址会随机轮换,不能靠地址认设备。绑定时程序会经过一次管理员确认,读取 Windows 配对时保存的这块手表的 IRK(身份解析密钥),再用 IRK 从不断变化的随机地址中识别目标手表。后台判断用户回来后,把保存的账户密码交给 Windows 登录组件,也就是 Credential Provider,由系统登录界面完成校验。

这也解释了一个关键取舍:要替用户登录,密码必须能够还原,所以存储策略需要更保守。账户密码、每块手表的 IRK 和 Bark 密钥都用 Windows 自带的 DPAPI 按当前账户加密,存放在 %LOCALAPPDATA%\WatchUnlockWindows\ 目录,该目录只有当前用户和 SYSTEM 能访问。后台只把密码交给同一会话里的系统登录界面,即 SYSTEM 身份的 LogonUI;后台本身必须运行在只有管理员可写的 Program Files 目录里。IRK 不会出现在命令行、日志或界面中。其他账户读不到这些文件,硬盘被拆走但没有账户密码也解不开;但如果已经有恶意程序以当前用户身份运行,这种防护就挡不住。

部署与验证步骤

从 Releases 下载安装包,批准一次管理员确认,按向导安装,再从开始菜单打开 Watch Unlock。第一步,在“附近扫描”中打开配对窗口,在手表的“设置 → 蓝牙”里选中这台电脑,并确认 Windows 弹出的配对请求。第二步,在“Windows 已配对设备”里点“绑定此设备”,批准一次管理员确认,让手表靠近电脑,最多等待 30 秒。第三步,在“我的设备”里填 Windows 账户密码,注意是账户密码,不是 PIN 码,因为登录时要把真实密码交给 Windows 校验。第四步,锁屏、走远、再走回来测试。每次锁屏和解锁都会记在“解锁记录”里,可用来观察判断是否准确。

解锁方式可按设备单独设置。无感解锁默认开启,一靠近就解锁;关闭后,回来要动一下键盘或鼠标才解锁。手表一直在近处时,程序会一直等待键鼠操作;如果再次走远,这次返回就不算数。开机自启默认开启,每次登录 Windows 都会自动启动后台,但重启后第一次登录仍需手动输入密码,因为那时后台还没跑起来。解锁通知可选,通过 Bark 往手机推送提醒,不参与解锁判断。

已知局限与安全边界

它的安全性比不上 Apple 官方的 Auto Unlock。程序不知道手表是否戴在手上,原文实测四种状态下手表蓝牙广播内容完全一样,所以手表没戴或被别人拿着走近,同样可能触发解锁。它只看手表身份(IRK)和信号强度(RSSI),防不了广播重放和中继。RSSI 也不等于距离,墙体、人体遮挡和手表朝向都会造成误判。关闭无感解锁后,也确认不了是本人操作,手表在近处时别人动一下键鼠同样会解锁。目前不支持远程桌面会话,安装包也没有代码签名。因此更适合在家里或比较可信的办公环境使用,不宜当成高强度安全方案。

实测范围与工程结构

原文实测环境为 Windows 11 Pro 加 Apple Watch,已验证一键绑定、走远返回解锁、关闭无感解锁时等待键鼠操作、原地锁屏不解锁。尚未测试同时绑定两块手表、休眠或蓝牙故障后的恢复、切换用户。项目结构大致为:apps/desktop 是 Tauri 界面;backend/crates/domain 是距离策略纯逻辑;backend/crates/watchd 是后台,负责蓝牙扫描、会话监测、秘密存储和通知;backend/crates/provider 是 Windows 登录组件 Credential Provider;scripts 包含构建、隐私检查和第三方许可清单。后端使用 Rust,界面使用 Tauri。若要接入其他手表或手环,实现 backend/crates/watchd/src/adapters.rs 里的 DeviceAdapter 即可,距离策略、凭据存储和登录组件可以复用。项目基于 xiaoka520/watch-unlock-windows 修改,Apple Watch、Windows 等名称仅用于说明兼容性。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-10-26 13:35 , Processed in 0.022322 second(s), 28 queries , Gzip On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部