健康一体机双方通信需要使用一个密钥Key(128 bit)对数据进行加密后才能发送,加密只针对数据包中命令字以后的全部字节(不包含命令字),加密算法采用AES.128,ECB模式H1。Key是由主机产生的一个的随机密钥,主机将Key使用一个登陆密钥Log.inKey(128 bit)进行AES.128加密,再下发给从机,从机使用LoginKey解密得到Key并存储。之后所有的通信都要使用这个Key对数据进行AES.128加密后才能发送,加密只针对变长部分的相关参数。
(1)健康一体机主机搜索到正在广播的从机后发起建立连接请求,建立成功后判断Service UUID和Characteristic UUID是否正确、权限是否正确,之后立即打开特征值ECGControl(UUID=0x2A52)的Indication。(2)主机下发设备认证命令。(3)从机发送LoginKey MD5进行登陆。(4)主机收到后计算并校验MD5是否正确,若失败立即断开连接,若校验通过则产生随机密钥Key并存储,将Key通过LoginKey进行AES.128加密,得到AESKey,下发AESKey给从机。(5)从机接收AESKey,使用LoginKey解密得到Key(此处可考虑主机再发一个原始Key的CRCl6,从机校验Key是否正确),再判断当前Key与上一次连接使用的Key是否相同,若不相同则存储,存储成功后发送应答,若相同则认证失败,立即断开连接。
健康一体机Android手机连接到节点设备后,发送主服务需要的UUID,主服务UUID匹配,然后通过发送特性UUID,获得GATT数据服务,从而进行服务端和客户端数据的交互。如图4为心电信号传输流程图。