TOP Server OPC Server教程:探索OPC UA之对称与非对称加密
TOP Server OPC Server采用业界领先的Kepware技术,是Software Toolbox's OPC和原生HMI设备的连接软件,也是一款多线程应用程序,能够利用最新的双核处理器和多处理器技术最大化您的性能。其灵活而强大的功能可最大程度降低项目的生命周期成本;模块化架构和通用用户界面可以降低您的培训成本,因为在不同的驱动程序中使用了100种常用方法,帮助您学习TOP Server,并快速应用与其他驱动程序相同的知识。
点击下载TOP Server OPC Server最新试用版
在正在进行的“ 探索OPC UA”博客系列的第一篇文章中,我们介绍了OPC UA证书(也称为应用程序证书)在OPC UA安全性上下文中发挥的三个功能。
在第二篇文章中,我们将看看在您信任应用程序证书并在OPC UA端点上启用安全性之后消息将如何处理。具体来说,“签名和加密”在端点上意味着什么,以及我们如何确保数据真正安全。
要真正了解两个应用程序之间的OPC UA安全性是如何工作的,我们需要了解对称和非对称(或公钥)加密的工作原理,因为最终它们之间并没有太大的区别。从最基本的角度(这是我们在这样的博客中所花的全部时间),对称和非对称加密并不那么复杂,因此让我们看一下它们如何执行其工作。
对称加密如何工作?
对称加密之所以这样命名(非常恰当)是因为同一密钥既用于加密和解密编码的消息,又不同于物理锁,在物理锁中,同一密钥用于锁定和解锁该锁。这种对称性非常好,因为这是加密/解密信息的非常快速的方法,因为两者都使用相同的密钥,并且由于它相当安全(尽管不如其非对称兄弟安全)。
对称加密的工作方式示例:
- 服务器A(在这种情况下为OPC UA客户端)具有要发送到服务器B上的OPC UA服务器的未加密消息。
- 服务器A使用先前交换的对称密钥来加密消息。
- 现在可以将加密的消息(不被窥视)发送到服务器B上运行的OPC UA服务器。
- 在服务器B上,现在使用用于加密消息的相同密钥来解密它。
- 然后,原始的未加密消息将传递到OPC UA服务器。
- 没有密钥的任何未经批准的参与者都将收到一条加密的消息,他们将对此无能为力。
如果运行在服务器B上的OPC UA服务器想要发送加密的响应,则只需使用相同的密钥(先前已交换过)来加密消息,过程将反向重复。
由于使用相同的密钥进行加密和解密,因此对称加密速度很快–相对于非对称加密,它的主要优势就在于此。速度。但是这种速度是有代价的,而代价就是安全。
该示例仅简要地谈到了对称加密的最关键步骤,那就是密钥交换。您如何安全地执行保护恶意者无法访问密钥的交换,并且如果旧密钥遭到破坏,又可以轻松地与新密钥交换新密钥呢?
由于同一密钥同时用于加密和解密,因此,如果恶意方获得了对该密钥的访问权,则他们不仅能够解密双方的消息,而且还能够生成自己的消息,这些消息现在可能被视为有效。
对称加密的另一个不太理想的方面是,当处理多于两台计算机时,证书的数量也可能会过高。对于单个客户机/服务器对,只需要一个密钥,但是对于100个服务器/客户机,每台计算机可能希望与系统中的其他每台计算机进行通信,因此所需证书的数量呈指数增长。非对称加密解决了许多这些问题……
非对称加密如何工作?
非对称加密或公共密钥加密(也很恰当地命名)被认为是非对称的,因为不再使用同一密钥进行加密和解密。你怎么可能问?如何使用一个密钥来加密数据,而另一个密钥来解密数据呢?
我希望我有时间在这里更详细地介绍该概念,但是现在,我们将需要选择简短的版本(因为较长的版本涉及大量的数学运算)。使用非对称加密,每个应用程序将具有两个以数学方式链接的证书(更多信息将在第二秒显示):
- 专用证书,用于解密和消息签名
- 用于加密的公共证书。
这些密钥在数学上是链接的,这意味着仅可以使用相应的私钥解密使用公钥加密的消息。使用非对称加密的任何连接的第一步是交换公共密钥。
由于只能使用相应的私钥来解密加密的消息,因此应用程序可以非常自由地将其公开密钥提供给谁,因为任何截获加密消息的人都不能解密该消息(即使他们使用了公开密钥的副本)执行加密)。这也意味着一个应用程序只需要一个可以被许多应用程序使用的公共密钥,从而解决了我们在使用对称加密时看到的证书计数问题。
非对称加密如何工作的示例:
- 在服务器A上运行的OPC UA客户端以未加密的消息开头,该消息将发送到在服务器B上运行的OPC UA服务器。公钥已经交换。
- UA客户端将使用从OPC UA服务器收到的公共密钥来加密消息。
- 然后发送加密的消息(恶意的第三方在传输到服务器B时会对其进行访问)。
- 服务器B上的OPC UA服务器使用其私钥来解密编码的消息。
- 然后,原始消息将被正常处理。
- 拦截消息以及服务器B的公共密钥的恶意角色仍然无法解密捕获的消息,因为它们没有相应的私有密钥。
还有一个很酷的功能,就是上述私钥和公钥之间的数学联系为我们带来了好处。不仅可以使用公钥来加密只有相应的私钥才能解密的流量。服务器还可以使用私钥对消息进行签名,并生成消息哈希(与公钥进行比较时),以确保消息未更改,并且消息源自我们认为是的机器。
刚才我说过,公钥和私钥在数学上是链接的,所以我想重新审视这个概念。这意味着一个密钥(或一个密钥的一部分)是使用另一密钥以某种方式生成的,或者两个密钥都是从相同的大随机素数生成的。
生成的完成方式取决于所使用的算法(RSA,椭圆曲线等),但重要的是,由于该操作,两者之间存在数学关系。仅知道私钥就几乎不可能导出公钥,而仅仅知道公钥就几乎不可能导出私钥。(鉴于有足够的时间,足够的计算能力和足够的数学脑力,没有什么是牢不可破的,因此适用“几乎不可能”。)
虽然比对称加密安全得多,但非对称加密有一个主要缺点,那就是速度。这些“数学链接”键虽然很棒,但必须对每条消息进行数学运算会增加大量的计算开销。这使我们可以进行比较-哪个更好?
比较对称和非对称加密
对称加密
非对称加密
优点
缺点
优点
缺点
难以置信的安全
用于加密和解密的密钥相同(泄露的密钥具有很高的影响力)
比对称更安全
比对称加密慢(不容小margin)
加密和解密更快
没有好的方法来安全地交换密钥
公开密钥可以自由共享(只要私有密钥保持安全)
没有复杂的数学关系
密钥泄露只会影响一个方向的通信
Bad actors截取公钥的影响很小
最终,要回答该问题,您将需要考虑特定项目的目标。如果无论其他因素如何,最高的安全级别都至关重要,那么非对称加密显然是正确的选择。如果您的项目可以接受安全性稍低的加密级别以换取更高的性能和更少的开销,那么对称加密可能是正确的选择。
对称和非对称加密如何应用于OPC UA?
当您为客户端和服务器交换应用程序/ OPC UA证书时,您将交换公钥作为这些证书的一部分。这意味着,当您选择加密OPC UA连接时,OPC UA使用非对称加密来保护初始连接,但是,为了解决非对称加密带来的较慢的通信性能,一旦通道安全了,就交换一个对称加密密钥用于通讯。
这使两种加密标准都不再关注两个主要问题:
- 由于通信是使用对称加密执行的,因此我们可以获得那里提供的速度优势。
- 由于在交换对称密钥时对连接进行了高度加密,因此不会有密钥被拦截并用于中断通信的机会。
为了长期保持连接的安全,定期更新“ SecureChannel”(在本系列博客的第三部分中对此进行了详细介绍),因此长期不使用相同的对称密钥。 因此,当OPC UA端点引用“签名”与“签名和加密”术语时,它实际上是指将使用公钥和私钥的方式(即,应使用私钥对消息进行签名,和/或应使用公钥对消息进行加密) 。
了解OPC UA更多相关信息,欢迎持续关注后续文章
要购买该产品正版授权,或了解更多产品信息请点击