【问题标题】:Securing OpenSecureChannel messages and X509IdentityToken?保护 OpenSecureChannel 消息和 X509IdentityToken?
【发布时间】:2017-10-11 08:25:37
【问题描述】:

请澄清以下有关 OPC UA 规范第 4 部分服务的疑问,

  1. 据我了解,在 GetEndpoints 服务消息之后,客户端向服务器发送 OpenSecureChannel 请求,这意味着该请求已根据所需端点中的安全策略进行签名或签名和加密。我在规范 Part 4 Services, pg.no 33 中看到了以下几行,

OpenSecureChannel 请求和响应消息应被签名 与发件人的证书。这些消息应始终 加密。如果传输层不提供加密,那么 这些消息应使用接收者的证书加密。

在此提到消息始终被加密。它是如何依赖传输层的?

我还看到 Wolfgang Mahnke、Stefan-Helmut Leitner、Matthias Damm 在 OPC 统一架构书中的另一个描述如下,

如果证书被认为是可信的,那么作为第二个 步一个 OpenSecureChannel 请求,根据 安全策略和安全模式被发送到选定的会话 服务器的端点。 (第 7 章,第 213 页)

这里,它强调消息是根据安全策略和安全模式保护的,所以我要求澄清一下安全模式是否是签名的场景?

消息也会被加密吗?

  1. 一般来说,当 MessageSecurityMode 为 None 时,SecurityPolicy“必须”为 None? 'Invalid' MessageSecurityMode 的具体用法是什么?

  2. X509IdentityToken 规范第 4 部分服务第 7.35.4 节

此令牌应始终伴随着签名 如果需要,ActivateSession 的 userTokenSignature 参数 安全策略。服务器应为 如果 SecureChannel 的 SecurityPolicy 为 None,则 UserTokenPolicy。

在第一行中提到“如果 SecurityPolicy 需要”,当 userTokenSignature 是 X509IdentityToken 的必填字段时,“如果需要”的上下文是什么?在第二行中提到,如果 SecureChannel 的 SecurityPolicy 为 None,则需要明确的安全策略,其中“None”表示没有交换证书,因此不能使用 X509IdentityToken,请参阅同一规范中的以下行(第5.6.3 ActivateSession, pg.no: 40)?

如果令牌是 X509IdentityToken 则证明是签名 使用与证书关联的私钥生成。数据 要签名是通过将最后一个 serverNonce 附加到 在 CreateSession 响应中指定的 serverCertificate。

为了您的友好信息,我使用 2015 年 11 月发布的规范进行研究。请澄清。

【问题讨论】:

    标签: opc-ua milo


    【解决方案1】:

    对于第一个问题,规范继续“OpenSecureChannel 的这些要求仅在 securityPolicyUri 不为 None 时适用”。所以答案是 SecureChannel 将为任何 MessageSecurityMode 签名和加密 OpenSecureChannelRequest/Response,MessageSecurityMode.None 除外。

    对于第二个问题,如果 MessageSecurityMode 为 None,则 Security 策略为 none。据我所知,没有使用 MessageSecurityMode.Invalid。

    对于第三个问题,如果 securityPolicyUri 为 None,则不交换 application 证书。客户端可以通过 X509IdentityToken 提供 UserIdentity。令牌由 X509Certificate 和签名组成。通过将服务器随机数附加到服务器证书并使用用户证书的私钥签名来生成签名。

    【讨论】:

    • 谢谢你的澄清,你能否也请你澄清一下OpenSecureChannel消息的加密是如何依赖于传输层的?对于第三个问题,我的查询是要签名的数据是在之前的 CreateSession Response 中收到的服务器证书(包括 serverNonce),如果模式是 None 那么要签名的数据是什么(因为在这种情况下没有应用程序交换实例证书)?
    • X509IdentityToken 由第三个 X509Certificate 组成,用于标识用户,而不是客户端或服务器的证书。
    • 澄清一下,OpenSecureChannel 消息的加密不依赖于传输层。 OSC 消息将针对除“None”之外的任何 MessageSecurityMode 进行签名和加密。
    • 感谢您在无模式下保护 OpenSecureChannel 消息的说明。您能否找到可以在用户证书数据本身上生成 X509IdentityToken 签名证明的任何参考资料!?参考您的以下评论,签名是通过将服务器的 nonce 附加到证书的数据并使用证书的私钥签名来生成的。
    • 据我了解,userTokenSignature 是 X509IdentityToken 的证明,因此我了解 CreateSession 响应中返回的 serverCertificate + serverNonce 是使用用户的私钥签名的
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 2017-10-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    相关资源
    最近更新 更多