戴智能手表睡觉,心率和定位被传去哪了?20行代码实测
戴智能手表睡觉,心率和定位被传去哪了?20行代码实测
戴智能手表睡觉已是日常:测深睡浅睡、记血氧与心率变异度(HRV)。普遍认知里,手表只是离线传感器,体征理应保存在手机本地。
但不少人遇过怪事:凌晨心跳过快失眠,第二天电商与社交平台便频繁推荐安神膏、防脱洗发水与健康险,让人怀疑麦克风在偷听。
真相不是黑客暗杀,大厂也不会冒险在暗网兜售心电图。真实流向更工业化:体征正通过空气中未加密的蓝牙广播,以及配套 App 挂载的商业画像 SDK 与夜间定位打点,合规流向了广告归因网络。

真实案例:被国际监管实锤的两起数据风暴
这不是技术推测,而是被国际权威机构调查证实、甚至改变国家安全防线的真实事件。
1. 美国 FTC 诉 Flo Health 案:健康数据流向广告巨头
2021 年 1 月,美国联邦贸易委员会(FTC)对上亿用户的生理健康追踪 App Flo Health 签署行政处罚令(FTC 案号 192 3133,文件号 C-4747)。
该 App 宣称健康记录绝密,但取证证实其后台集成 Facebook、Google Flurry、AppsFlyer 等商业 SDK。当用户记录失眠或体征异常,App 将生理健康事件与设备广告 ID(iOS 的 IDFA 与安卓 GAID)强行绑定回传,广告商据此交叉比对用户行为,精准推送高利润健康消费品。最终 Flo 接受了长达 20 年的独立隐私审计监督。
2. Strava 热力图事件:智能穿戴 GPS 暴露五角大楼秘密基地
2018 年运动平台 Strava 公布全球 GPS 运动热力图。分析师 Nathan Ruser 研读卫星地图时,震惊发现阿富汗与叙利亚荒漠无人区浮现出规则的跑圈热力线。
驻外美军戴运动手表在秘密前哨基地(FOB)晨跑巡逻,GPS 经纬度自动上云,热力图直接勾勒出绝密基地的坐标、哨线与营区生活动线。五角大楼随即紧急下达禁令:全军在作战与敏感区域严禁佩戴任何具备 GPS 定位功能的智能穿戴设备。
撕开底层协议:空气中的免密标准心率广播
为什么空气中无需密码就能抓取心率?蓝牙技术联盟(Bluetooth SIG)为让外设免密接入跑步机、动感单车及运动 App(Keep、Zwift),定义了公开通用属性(GATT):
- 心率服务 UUID:
0x180D(Heart Rate Service) - 心率特征值 UUID:
0x2A37(Heart Rate Measurement)
该规范初衷是即插即用。许多开启“心率广播”的手表及低价手环,通信未做应用层加密。设备向周围 10 米发射明文广播,任何手机无需配对密码,即可直接订阅并读取实时心率。
20 行代码现场抓包:捕获空气中的明文心率
用 Python 异步蓝牙库 bleak 编写 18 行脚本,按 Bluetooth SIG 规范监听空气中广播 0x180D 的外设:
import asyncio
from bleak import BleakScanner, BleakClient
HR_UUID = "00002a37-0000-1000-8000-00805f9b34fb"
def callback(sender, data):
print(f"[空中抓包] 实时心率: {data[1]} BPM | 明文广播未加密")
async def main():
devices = await BleakScanner.discover(timeout=4.0)
for d in devices:
if "0000180d" in [str(u).lower() for u in d.metadata.get("uuids", [])]:
print(f"锁定广播外设: {d.name} ({d.address}),直连嗅探...")
async with BleakClient(d.address) as client:
await client.start_notify(HR_UUID, callback)
await asyncio.sleep(4)
return
asyncio.run(main())
开启手环心率广播,终端立刻捕获连续明文流:锁定广播外设: Sports_Band,实时心率: 72 BPM | 明文广播未加密。整个过程无需配对确认,未受任何鉴权拦截。
主流穿戴生态隐私与安全防御横向对比
在大众消费市场中,大厂旗舰产品与廉价白牌设备在防线上有着天壤之别:
| 对比维度 | 头部大厂(Apple / 华为 / 小米) | 专业运动(佳明 Garmin / 高驰) | 低价白牌手环(山寨 FitPro 系) |
|---|---|---|---|
| 蓝牙通信 | 私有加密或 LE SC 握手 | 默认加密,广播需手动开启 | 未加密标准 GATT,空气中明文 |
| 端侧隔离 | 系统级健康沙盒,权限隔离极严 | 独立 App 存储,三方打卡需授权 | 粗放存本地数据库,防逆向极弱 |
| 后台定位 | 户外运动按需调用,夜间休眠 | 依赖手表 GPS,手机端按需拉取 | 强索后台常驻定位与自启动权限 |
| 商业 SDK | 核心体征严禁与广告归因 SDK 共享 | 商业克制,仅对接专业运动生态 | 广泛植入广告与推送 SDK 回传 |
| 云端防线 | 工业级 OAuth 2.0 鉴权与密钥绑定 | 企业级隔离校验,支持导出注销 | 接口简陋,曾曝越权漏洞(IDOR) |
4 步封堵隐私通道:保姆级自查清单
照着以下 4 步即可排查并封堵外泄通道:
1. 关闭手表的“心率广播”
除连接跑步机等专用外设外,在手表端保持关闭:
- 路径:手表设置 → 心率设置 → 关闭【心率广播】。恢复私有加密信道,阻断空中嗅探。
2. 剥离配套健康 App 的“后台常驻定位”
健康手环夜间只采集体征,无需读取经纬度坐标:
- iOS:设置 → 对应健康 App → 位置 → 改为【使用期间】,关闭【精确位置】。
- 安卓 / 鸿蒙:系统设置 → 应用权限 → 位置 → 设为【仅使用中允许】,禁止【始终允许】。
3. 关闭配套 App 内“个性化广告推荐”
- 路径:App 个人中心 → 设置 → 隐私管理 → 关闭【个性化广告推荐】与【改善计划】,阻断向归因服务器同步健康事件。
4. 淘汰无安全兜底的杂牌穿戴设备
避免选购无品牌低价穿戴外设。此类方案常年缺乏固件维护与漏洞修复,易因云端越权导致体征数据库泄露。
浙公网安备 33010602011771号