BlueTrace与健康码
疫情之下,各国都在不断地调整自己的防疫政策。中国的模式已经证明了其可能是最有效的方式之一,但因为种种原因大部分国家难以效仿和接受。从技术层面来讲,基于支付宝/微信等国民APP之上的健康码模式也是如此:有效,但是别国难以效仿。新加坡最开始使用BlueTrace协议并开发出了相应App让国民下载使用,部分其他国家也开始效仿,甚至有望能成为一种国际通用的防疫标准。 隐私保护是 BlueTrace 所考虑的最主要特点之一。其手段包括如下方面: 尽可能少的收集用户信息,卫生部门唯一收集的信息是手机号 本地存储用户接触记录,只有当被感染者愿意分享此数据时卫生部分才能获取 第三方无法通过此协议一直追踪用户。因为相关标识ID会一直更换 … 所以在对用户的标识方面,主要是通过算法生成的 UserID 和 TempID 来进行。当用户用手机号进行注册时,后台服务会生成一个 UserID, 而用户在互相接触需要通过蓝牙交换信息时,则通过 TempID 进行。TempID的 大概结构如下: 可以看到其有如下特点: 加密。只有卫生部门才有密钥能解密数据 过期时间。TempID有过期时间,一般在15m左右.这样可以尽量减少恶意攻击或者伪造假数据 TempID的生成需要联网(加密啥的),所以为了考虑到用户不联网的情况,所以TempID可以一次性尽量生成多个,在联网的时候一次性发给用户以备用。 当装有相应APP的用户相遇时,设备会通过 Bluetooth Low Energy (BLE)协议进行通信并交换信息,其数据流程如图所示: 这里面两个 Device 分别有一个角色定位,一个叫 Central ,一个叫 Peripheral。Central 主动扫描 Peripheral 并读取其信息,然后返回一些额外信息。一个手机一般是按一定时间比率轮换在两个角色之间切换。其交换的数据大概如下所示: { "id": "FmFISm9nq3PgpLdxxYpTx5tF3ML3Va1wqqgY9DGDz1utPbw+Iz8tqAdpbxR1 nSvr+ILXPG==", // TempID "md": "iPhone X", // Device model "rc": -60, // Signal strength "o": "IJ_HAI", // Health authority identifier "v": 2 // Protocol version } 这里面需要注意的是: ...