远程监控系统台站端与服务端加密通信的设计方案
2018-05-09李敏盛钟坚梁磊
李敏盛 钟坚 梁磊
(1.广西广播电视无线传播枢纽台;2广西广电网络股份有限公司崇左分公司)
1 引言
随着业务的发展,广播电视远程监控系统的数据通讯也将逐渐从现有的2M私有SDH光纤网络转移到带宽资源更充裕的IP数据承载网中,但该承载网也有其他单位和企业在使用,本单位的监控数据有可能在中途被截获、泄露,甚至被篡改,将有可能会影响广播电视的安全播出,还有可能带来严重的负面影响。为解决这个信息安全问题,本文提出了一种基于物联网平台Android Things实现台站端与服务端加密通信传输的设计方案。
2 术语解释
2.1 对称加密
对称加密采用同一个密钥对数据进行加解密,也称单密钥加密,优点是加解密速度快、效率高;缺点是在传送数据前,加密方和解密方得商定好密钥,如果某一方的密钥被泄露,那么加密的数据就不安全了。
2.2 非对称加密
非对称加密算法是生成两个钥匙(公钥和私钥),使用公钥对数据进行加密,使用私钥进行解密。例如设备A要向设备B发送隐秘数据,且只能是设备B才能解读,这时设备B先生成一对密钥,将公钥发给A,设备A使用公钥对明文数据加密,再将加密后的数据传送给B,设备B将收到的信息使用私钥进行解密,即使A发送的消息中途被截获,因没有私钥进行解密,数据就无法解读。优点是安全性相对于对称加密更好,缺点是加密和解密需要的时间久、速度慢。
2.3 AES加密算法
AES全称为高级加密标准(Advanced Encryption Standard),是对称加密的一种。
2.4 RSA加密算法
RSA是非对称加密算法,算法可靠性来源于欧拉定理,对极大整数做因数分解,只要其密钥的长度足够长,加密的数据几乎是不可能被解破的。
2.5 Android Things
图1
Android Things是基于Android,主要运用于物联网嵌入式设备的操作系统,使用Weave协议与外部的传感器/设备进行对话。Android Things已经支持Raspberry Pi 3 、 Intel Edison、NXP Pico 等硬件平台,还可以基于TensorFlow(谷歌第二代人工智能系统)进行机器学习和深度学习。
3 方案设计
3.1 系统架构
本方案的设计思路是在原系统架构的基础上,改变了终端设备直连到交换机的方式,在设备与交换机之间增加一个基于Android Things操作系统的嵌入式设备(下文中都称其为系统控制控器),它的功能是:(1)实现客户端与服务端相互加密数据传输;(2)终端设备被系统控制器隔离开,就算有人远程恶意攻入网络,没有密钥解密,也无法对终端设备进行控制、更改等操作,提高了网络信息安全性。图1为系统架构的网络拓扑图。
3.2 加密和解密的具体实现方式
RSA算法的安全性能很高,但加密和解密速度比较慢,适合短内容的加解密。而AES加密和解密的速度比较快,适合长内容的加解密,但其密钥不易保存和传输,安全性能相对较差。了解这两种加密算法的优缺点后,本方案扬长避短,先使用AES加密长度较长的正文内容,再用RSA的公钥对长度较短的AES密钥进行加密。当另端收到加密的数据后,先使用RSA的私钥解密出AES密钥,然后用AES密钥解密出正文内容。这种混合的加解密方式既保证了效率又保证了安全性。
3.3 系统控制器与服务端相互通信流程
(1)系统控制器启动时或者每隔一段时间,都会自动生成新的RSA密钥,然后主动将该公钥发送给服务端,并向服务端请求服务端的RSA公钥;服务端启动时或每隔一段时间,也会生成一个新的RSA密钥,并将该公钥分发给所有在线客户端。流程看图2。
图2
(2)系统控制器会定时询问终端设备的状态信息,并将状态信息主动上报给服务端。上报过程的加解密流程如下:①.生成一个新的AES密钥,使用AES算法对状态信息加密;②.使用服务端的RSA公钥对AES密钥加密;③.将已加密数据发送给服务端;④.服务端收到加密数据后,使用本端的RSA私钥解密出AES密钥;⑤.再用AES密钥解密出状态信息。流程看图3。
(3)服务端下发控制指令给系统控制器的加解密流程如下:①.生成一个新的AES密钥,使用该密钥加密控制指令;②.使用系统控制器端的RSA公钥对AES密钥进行加密;③.将加密数据发送给系统控制器;④.系统控制器收到加密数据后,使用本端的RSA私钥解密出AES密钥;⑤.使用AES密钥解密出控制指令并下发给终端设备;⑥.终端设备将执行结果返回给系统控制器,再按照上面所述的上报过程的加解密流程,将执行结果返回服务端。流程看图4。
3.4 设计的难点
3.4.1 传输数据的长度
图3
假如使用密钥长度为1024位的RSA进行加密,密文长度最大值是128字节。使用128位AES算法对内容信息加密,密文长度是随明文长度大小变化而改变。但是对TCP和UDP传输协议来说,TCP的MTU默认是1460字节,UDP的MTU默认是1472字节,当一个数据包的长度超过这两个长度时,数据包就会被自动拆分,所以在软件设计时有两个方案选择:(1)确保加密后的数据不超过上面两个数,(2)在进行TCP或UDP数据接收时,判断当前长度是否为零,如果不为零继续接收,直到收到上报端口的数据长度为零时,才将收到的几个包进行合并,然后再进行解密。
3.4.2 系统控制器参数配置
Android Things 操作系统没有像Windows系统一样有直接的操作界面,为了配置系统控制器程序的内置参数,必须为其开发可以通过网口进行配置的程序,本方案计划使用WEB页面方式对其进行配置。
3.5 系统控制器的拓展
Android Things支持USB、蓝牙、有线网络、无线网络 ,并提供了一个万能的通道,支持 I2C、SPI 和 UART 的数据传输,这三种串行接口,可以直接外接各种传感设备。比如调用台站门口摄像头,将靠近门口的人像抓拍下来后,使用Tensorflow深度学习来识别是工作人员还是陌生人,如果是工作人员将语音提示欢迎话语,如果是陌生人将语音提示一些提醒话语。
4 小结
本方案主要通过基于Andriod Things 操作系统的物联网开发平台,来实现客户端与服务端之间数据加密传输,提高远程监控系统的可靠性,也为以后实现站内人工智能自动化,实现免维护台站打下一个基础,因此,有较好的应用推广价值。
[1]陈鲁生,沈世镒.现代密码学(第二版)[M].科学出版社.2008-08