戴智能手表睡觉,心率和定位被传去哪了?20行代码实测

戴智能手表睡觉,心率和定位被传去哪了?20行代码实测

戴智能手表睡觉已是日常:测深睡浅睡、记血氧与心率变异度(HRV)。普遍认知里,手表只是离线传感器,体征理应保存在手机本地。

但不少人遇过怪事:凌晨心跳过快失眠,第二天电商与社交平台便频繁推荐安神膏、防脱洗发水与健康险,让人怀疑麦克风在偷听。

真相不是黑客暗杀,大厂也不会冒险在暗网兜售心电图。真实流向更工业化:体征正通过空气中未加密的蓝牙广播,以及配套 App 挂载的商业画像 SDK 与夜间定位打点,合规流向了广告归因网络。


404极客深网调查:智能手表蓝牙BLE与心率数据抓包取证


真实案例:被国际监管实锤的两起数据风暴

这不是技术推测,而是被国际权威机构调查证实、甚至改变国家安全防线的真实事件。

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. 淘汰无安全兜底的杂牌穿戴设备

避免选购无品牌低价穿戴外设。此类方案常年缺乏固件维护与漏洞修复,易因云端越权导致体征数据库泄露。

posted @ 2026-11-03 10:55  404号工位  阅读(2)  评论(0)    收藏  举报