欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

物联网安全协议之XMPP浅析

程序员文章站 2022-07-14 09:04:38
...

XMPP:可扩展消息处理现场协议,是一种基于XML流的用于即时通讯(IM)的协议,其间有三种角色,客户端服务器网关,通信可以在三者之间任意两个发生,前面两个好理解,而网关是为了处理其他异构系统即不使用XMPP协议的系统,比如MSN,SMS等,网关可以转换不同的协议,来达到交流互通作用。客户端与服务器是基于TCP/IP协议来建立连接,在上面传输XML文档。
物联网安全协议之XMPP浅析由图可知,客户端之间无法直接交流,同时服务器允许多个客户端同时连接。客户端通过端口5222连接服务器,服务器之间通过5269互相通信。
XMPP可用于异步通信,这也就表明了在客户端和服务器之间存在两条XML流和一条TCP链路,服务器之间需要两条TCP链路来传输对端数据。
XML流会以标记开始,标记结束,客户端服务器之间可能每次只发送一个XML片段或者完整的。stream标记的属性如下:
to只能用于从客户端到服务器的XML流中。
from只能用于从服务器到客户端的XML流中。
id只能用于从接收实体到发送实体的XML流中,id必须唯一,用于标记会话。
xml:lang只能用于发起方,用于约定语言。如发起方没有携带xml:lang属性,接收方应使用默认语言。
version至少在“1.0”以上。

 C: <?xml version='1.0'?> 
 <stream:stream 
 to='example.com' 
 xmlns='jabber:client' 
 xmlns:stream='http://etherx.jabber.org/streams' 
 version='1.0'> 
 S: <?xml version='1.0'?> 
 <stream:stream 
 from='example.com' 
 id='someid' 
 xmlns='jabber:client' 
 xmlns:stream='http://etherx.jabber.org/streams' 
 version='1.0'> 
 ... encryption, authentication, and resource binding ... 
 C: <message from='aaa@qq.com' 
 to='aaa@qq.com' 
 xml:lang='en'> 
 C: <body>Art thou not Romeo, and a Montague?</body> 
 C: </message> 
 S: <message from='aaa@qq.com' 
 to='aaa@qq.com' 
 xml:lang='en'> 
 S: <body>Neither, fair saint, if either thee dislike.</body> 
 S: </message> 
 C: </stream:stream> 
 S: </stream:stream> 

建立会话时,会先以TLS(安全传输层协议)建立一个安全链路,成功后再用SASL(简单认证和安全层协议)进行身份认证,之后绑定资源开始传输XML流。
TLS原理:利用非对称加密演算来对通信方做身份认证,之后交换对称**作为会谈**,就用此**来加密传输信息。