1个提交 / 0 new
物联网博士
OPC UA的安全模型

一,安全架构
OPC UA的安全架构分为三层,顶层的应用层以会话的方式在客户端与服务器之间传递相关数据,调用方法以及交换配置。会话层用于对使用客户端的用户进行认证和授权,运行在安全通道之上。通信层保证通道的安全。安全通道在以下几个方面保证了数据交换的安全性:
1,以数字签名传输信息来保证数据的完整性。
2,加密传输信息来保证数据的保密性。
3,引入应用程序身份认证和授权的概念,允许应用程序识别其他程序。
4,底层的传输层通过Socket连接收发来保证数据安全。由于系统有可能被“拒绝服务”等攻击所威胁,所以必须使用错误回复机制来维持服务的可用性。
二,安全通道
安全通道层是安全通信的核心部分。工作模式如下:当收到来自SOAP栈的信息,信息模块的预处理模式对信息进行解密,判断信息类型。如果信息是请求服务,建立安全通道,由安全通道管理模块处理此信息。首先将客户端的安全信息存储到安全管理模块,然后应用安全策略管理模块的签名,应用授权和加密算法这些安全措施进行配置。
建立安全通道主要是为了在客户端和服务器之间交换特殊私密信息。这种私密信息是用来派生对称密钥,加密和签名后续更多信息。
OPC UA的客户端和服务器之间的安全通道的连接建立包括下面4个步骤:
1,客户端与服务器建立连接时要确定配置选项。若OPC UA的客户端不是预配置的,则向服务器的发现终端发送一个不安全的获取终端的请求,以获得现有的会话终端的描述。客户端收到回应信息后,选择带有特殊安全配置的会话终端,处理和验证服务器的应用实例证书。
2,在证书值得信赖的条件下,客户端向服务器发送OpenSecureChannel请求,该请求是根据安全策略和安全模式加密的。加密消息可以阻止第三方读取或至少使第三方读取两个应用程序之间交换的信息内容。OPC UA在建立连接时采用的是非对称密钥,这是因为非对称密钥这种数据加密方式非常快速和高效,同时存在丢失,被盗或非法泄密的风险。因此使用联合加密算法,这是性能和安全性之间的一个较好的折中。
如果客户端和服务器都能派生出公钥和私钥,那么安全通道就建立了。但是为了抵御对安全通道的长时间攻击,在安全通道的生命周期失效后,要建立新的通道。
3,在先前建立的安全通道上创建会话。
4,激活会话提供用户凭证。大部分情况下,用户凭证是以用户名和密码的形式存在的。当验证成功后,客户端与服务器的连接就建立了。通常情况下,连接建立的步骤是由第三方SDK完成的,SDK的API提供了处理方法,隐藏程序开发带来的复杂性。
三,安全策略管理模块
通过配置接口,用户可以确定在安全通道中采用的签名,应用授权和加密算法。配置策略完成后,模块会管理和维持这种策略。在安全通道的建立连接过程中,用户通过配置安全策略,灵活地运用安全机制。
四,SOAP栈
SOAP是OPC UA通信栈的基础部分,负责信息的加密和解密。在SOAP管理模块,用户可以根据OPC UA服务器的需要,自行配置加密方式以及通信协议。
五,会话层
会话层接收来自安全通道的信息,判断信息是请求建立会话还是通用信息。如果是请求建立会话,会话管理模块通过信息得到安全信息,创建会话以及存储安全通道和会话的ID,同时将客户端信息存入会话管理模块。如果是先前建立的会话发出的通用信息,信息直接发送到OPC UA服务的实施模块,直接对信息进行处理。通过应用程序业务,得到来自OPC UA地址空间的数据,最终将响应结果发送至客户端。