侯宪锋 韩磊 王兴元 王丰
【摘要】 智能家居给人们带来舒适便捷的同时,隐私安全问题也日益凸显。文章阐述了基于自定义协议的数据加密系统,系统采用国密算法,自主可控。建立算法模型,使用SM3,SM4算法实现终端与服务端身份互认证,数据加密,秘钥因子分发等功能。提高了各端数据安全性。
【关键字】 国密算法 身份认证 数据加密 算法模型
引言:
智能家居就是采用现代联网、布线及自动控制等技术将家居终端设备集成,智能家居提高了生活的便捷及舒适性。任何通过网络传输的信息都存在一定的安全隐患,当前,对智能家居的研究主要集中在应用开发,对使用过程中安全问题投入的关注度还不够。
智能家居进行终端控制采用的通信方式主要分为两种:无线通信和有线通信。无线通信包含以下通讯方式:ZigBee,Z-wave,RF,Bluetooth,WiFi,Lora,NB-IOT等;有线通信包含以下通讯方式:RS485,RS232,CAN,Lonworks,Modbus,KNX等[1]。
智能家居通过网络传输控制指令进行家居设备控制及设备狀态上报,达到智能化。带来便捷的同时,也对家居设备带来了安全威胁问题。数据安全,才能保障智能家居系统安全,保证用户隐私安全;智能家电安全同样引起重视[2-3]。
系统采用身份认证,指令数据加密提高了抵御来自网络威胁的能力。系统中所涉及到的所有与终端交互数据加密部分,都采用国密算法。国密常用算法:对称算法,SM1,SM4;非对称算法,SM2;密码杂凑算法,SM3(HASH算法库)[4]。其中SM2,SM3,SM4已公开算法,SM1算法未公开,必须调用硬件接口。本文主要关于系统中服务端与网关设备端数据交互部分。
一、系统架构
系统由服务端、终端、网络等组成。系统软件框架图如图1所示。
系统服务端负责业务处理:信息管理、收发数据、身份认证、数据处理、存储等功能;用户端查询、控制范围内的设备状态;终端网关链接服务端与家居设备,收发指令。
二、算法模型
服务与网关客户端数据交互采用自定义协议,方便后期的维护与扩展,协议格式如下:
数据交互过程中,主要包括:身份认证,数据加密交互。数据加密流程中首先要完成秘钥因子的生成及确认。图2所示身份认证逻辑流程,图3所示秘钥因子生成逻辑流程。
2.1身份认证
身份认证是相互的,假设通讯双方是客户端和服务端:客户端认证服务端身份,服务端认证客户端身份,只有同时通过认证,才可以进行数据通讯。
身份认证逻辑流程图2所示。
身份认证采用SM3算法,输出结果256比特,32字节。
假设IN(n)标识长度为n字节的字符串,其中n>0。
客户端身份认证数据封装算法模型:
注解:
(1)协议中校验范围内的所有数据;(2)验证因子:设备注册到平台时,产生的数值,只保存在服务端和设备端,不在网络上传输,只验证时参与运算;(3)使用SM3计算校验值,校验范围数据与验证因子组成字符集合做校验,生成校验值hash_in(32);(4)封装身份认证数据DATA。
客户端按照算法模型计算封装认证协议数据包发送到服务端。
服务端身份认证算法模型:
注解:
(1)校验值,随协议包明文传输的验证数据32字节;(2)长度为n(n>0)的协议数据,不包含(1)校验值内容;(3)验证因子,与客户端同一验证因子;(4)使用SM3算法计算出的值生成认证数据hash(32);(5)比对两个验证数据是否相等,结果为0或1,相等为1通过验证,不等为0不通过验证。RET表示最后的结果0或1。
服务端认证客户端发送的数据,通过认证后,产生认证数据到客户端进行认证,客户端对服务端做出认证后,完成认证流程,链路保持;认证失败,断开链路,释放资源。
算法模型验证数据,十六进制展示发送数据(表2)。
2.2数据加密
交互数据在传输过程中采用一数据包一秘钥的方式。
加密算法采用对称算法,国密SM4公开算法,国密SM1算法没有公开,需使用对应的硬件进行加解密。SM4为分组加密算法,秘钥长度、数据分组长度为128位(16字节)。
data_t=sm4_enc(key,data_i)数据加密;data_i=sm4_dec(key,data_t)数据解密。data_i原始明文数据,key加密秘钥,data_t加密后生成的密文数据。
秘钥因子生成逻辑流程如图3所示。
1.秘钥因子的产生
秘钥因子作为秘钥的一部分参与到数据加解密中,秘钥因子由服务产生并定时进行更换。服务端秘钥可由硬件生成真随机数并保存形成秘钥池,使用时从秘钥池中提取,秘钥池定时更新。
服务端秘钥因子数据封装算法模型:
注解:
(1)服务从秘钥池中获取8字节秘钥作为秘钥因子;(2)服务端与网关客户端默认的8字节部分秘钥;(3)协议报文头中8字节毫秒时间戳字段与默认8字节秘钥组成16字节加密秘钥;(4)SM4加密算法加密秘钥因子,生成16字节密文数据data_t(16);(5)报文头数据;(6)报文头与密文数据生成32字节校验值hash(32);(7)封包数据结果DATA。
服务端认证成功客户端身份后,按照秘钥因子生成算法模型封装协议数据包发送到客户端。
2.秘钥因子验证
客户端接收到数据后,验证数据包完整性,解密数据,获取秘钥因子,根据规则生成加密秘钥,发送默认数据加密后的数据到服务端验证秘钥因子正确性。
客户端加密默认数据验证秘钥因子算法模型:
注解:
(1)计算出校验值验证数据完整性;(2)解密数据内容,获取秘钥因子;(3)使用毫秒时间戳和秘钥因子生成加密秘钥;(4)加密16字节默认明文数据;(5)报文头数据;(6)报文头与密文数据生成32字节校验值hash(32);(7)封包数据DATA,发送到服务端,等待服务处理结果(按照图3流程)。
身份认证及秘钥因子生成完成后,指令数据交互按照一数据包一秘钥的方式进行。
算法模型验证数据,十六进制展示发送数据(表3)。
2.3算法性能
封装数据包过程中高频次使用SM3、SM4国密算法,提高数据安全。对算法性能做了相关测试,可满足通讯过程中数据处理要求:
三、结束语
本系统使用国密算法,对数据安全进行防护。身份互认证机制,维护了各端身份安全;系统设计使用一数据包一秘钥设计,提高了每一数据包的安全性,实现了加密数据安全实时通信功能。算法采用国密算法,协议为自定义协议,自主可控,方便维护与扩展。
参 考 文 献
[1]许奎.智能家居通讯协议综述[J].仪器仪表用户,2017,2(24):109-111.
[2]吴晓庆,郑骏. 基于4G网络的视频加密传输软件设计[J]. 电子与封装, 2021, 21(2): 020302 .
[3]肖诗满;陈军;纪瑶;夏江;杨林. 智能家电电路典型失效机理与设计缺陷[J]. 电子与封装, 2020, 20(12): 120401 .
[4]王小云,于红波.SM3密码杂凑算法[J].信息安全研究,2016,2(11):983-994.