前言:想要写出一篇引人入胜的文章?我们特意为您整理了远程数据通信身份认证服务设计与实现范文,希望能给你带来灵感和参考,敬请阅读。
摘要:依据工业互联网的数据采集需要,设计实现了远程数据通信身份认证服务,用于智能采集终端与远程数据平台的身份验证,包括验证智能采集终端的唯一性和动态获取数据发送通道的连接信息。利用HTTPS协议可以实现认证服务的加密传输,确保了服务的安全性和可靠性。
关键词:HTTPS;身份认证;远程数据通信
1HTTPS协议介绍
HTTPS是安全超文本传输协议,它是基于HTTP开发,用于在客户计算机和服务器之间交换信息[1],实际上HTTPS是SSLoverHTTP,是经过SSL加密后的HTTP[2],HTTPS通过在TCP层与HTTP之间增加一个SSL(SecureSocketLater,安全套接字层协议)来加强安全性,HTTPS使用SSL在发送方将原始数据进行加密,然后在接收方进行解密,加密和解密需要发送方和接收方通过交换密钥来实现,因此所传送的数据不容易被截获和解密,它采用了对称密码技术和公开密码技术相结合,提供包括秘密性、完整性和认证性3种基本的安全服务[3]。
2.1结构设计
整个服务主要由3个模块构成,分别为访问模块、认证模块和信息模块。访问模块主要由HTTPS服务端、CA证书构成,主要负责响应客户端的HTPPS请求。认证模块主要由身份ID模块、身份验证模块构成,主要负责为客户端发放和验证身份ID。信息模块主要负责为已经经过身份验证的客户端动态分配数据通道连接信息。
2.2工作流程
智能终端(客户端)与远程数据平台(服务端)进行数据发送之前,会利用本文的远程数据通信身份认证服务对双方进行身份认证,通过验证之后会动态获取到数据通信的通道连接信息,以此建立通信连接。本文的远程数据通信身份认证服务适应任意数据通信协议,本文以MQTT协议为例,具体身份认证流程如下:1)客户端向服务端发送获取身份ID的HTTPS请求;2)访问模块将建立客户端与服务端的HTTPS安全通信通道;3)身份ID模块根据请求内容验证客户端的唯一性(即验证真伪),若为真,则返回客户端一串随机数作为身份ID(即token),同时将身份ID与创建时间存储至服务端的身份IDRedis数据库中;4)客户端利用该身份ID作为token向服务端发送获取数据通道连接信息的HTTPS请求,请求内容包括数据通道的唯一标志;5)服务端的认证模块将身份ID与身份IDRedis数据库进行对比,同时计算该身份ID的创建时间与此刻时间差是否在规定的过期时间内,若通过验证则调取信息模块,反之则返回客户端验证失败,客户端需要重复第一步来获取新的身份ID;6)信息模块将数据通道的唯一标志与数据通道连接信息数据库进行对比,若有则将MQTT通信服务器的连接信息(包括URL地址、用户名、密码和topic等)经访问模块返回至客户端,若没有则触发MQTT通信模块创建该数据通道,并返回相应连接信息,客户端根据返回的连接信息初始化数据通道,从而完成基于HTTPS的身份认证服务,并成功与MQTT通信服务器建立连接,即智能终端可通过MQTT数据通道将采集数据发送至远程数据平台。
2.3HTTPS安全通信建立
在整个工作流程中,客户端与服务端首先要建立HTTPS安全通信通道,保证身份认证信息与数据通道连接信息均在安全加密下传输,保证数据通信的安全可靠,具体流程如下:1)服务端向客户端发送服务端公钥证书,说明站点身份;2)客户端将利用公钥证书加密一个自动生成的128位随机数作为密钥,并将该密钥进行签名,同密钥和客户端公钥证书发送至服务端[4];3)服务端利用私钥对密钥进行解密得到真正的会话密钥,通过该真正的会话密钥、客户端签名和客户端公钥证书验证客户端身份[5],若会话密钥统一则确定了双方身份,进而利用该会话密钥加密通信内容,从此安全通信通道建立。
2.4身份ID模块验证唯一性
身份ID模块会根据客户端的请求内容验证客户端的唯一性,其中利用HMACMD5算法进行加密,HMACMD5是从MD5哈希函数构造的一种键控哈希算法,被用作基于哈希的消息验证代码(HMAC)[6]。此HMAC进程将密钥与消息数据混合,使用哈希函数对混合结果进行哈希计算,将所得哈希值与该密钥混合,然后再次应用哈希函数[7]。输出的哈希值长度为128位。验证流程如下:1)在客户端投入生产环境前会预设客户端唯一标志(endpointKey)和客户端唯一标志密码(endpointSecret)至客户端中;2)客户端向服务端发送获取身份ID的HTTPS请求之前会获取当前时间到格林威治时间1970年01月01日00时00分00秒的秒数与endpointKey进行字符串拼接,形成新字符串;3)使用hmacmd5算法,利用endpointSecret作为密钥对该新字符串进行签名加密;4)将该签名作为客户端获取身份ID的HTTPS请求内容发送至服务端;5)服务端将利用预设好的endpointSecret进行解密,同时验证该时间与当前时刻之差是否在秒级延时内,若均通过则生成Base64编码的随机数token作为该客户端的身份ID,经由访问模块通过HTTPS安全通信通道返回至客户端;6)记录该身份ID与创建时间至身份IDRedis数据库中,方便认证模块进行token对比,身份IDRedis数据库属于内存数据库,支持并发的高速响应,同时具有过期键删除策略,满足身份ID的时效性与多客户端快速响应等业务场景需求。
3结论
远程数据通信身份认证服务可以实现客户端与服务端的身份认证,同时可以动态获取服务端通信数据通道的连接信息,保证数据通信的安全可靠,整个服务可直接应用于生产环境。应用HTTPS作为身份认证协议可以保证身份ID信息、数据通道连接信息在加密通道下传输,防止被截获盗取。该远程数据通信身份认证服务为企业在工业互联网数据采集远程发送场景打下了基础,后续可针对本文设计实现的服务进行升级开发,丰富认证管理功能。
[参考文献]
[1]王定坤.基于中间人方式的HTTPS监控系统的设计与实现[D].上海:上海交通大学,2008.
[2]吴维元,肖柳林,李荣辉.Web服务数据传输通道的安全性分析[J].网络安全技术与应用,2008(2):85-86.
[3]陆荣杰,刘知贵,郑晓红,等.基于HTTPS隧道技术的统一认证平台研究与实现[J].计算机应用研究,2006,23(12):168-170.
[4]王成现,李夫宝,王京.基于HTTPS的移动安全防护体系[J].计算机系统应用,2016,25(7):101-106.
作者:曲晓峰 毛静轩 单位:哈尔滨电气集团有限公司