1

基本上是主题所说的。我想知道当客户端通过从同一个 nats 服务器发送/接收的消息进行通信时,通过使用相同的加密/解密机制是否可以获得性能方面的好处。

如果有人感兴趣,我在这里提出了同样的问题:

https://github.com/nats-io/nats-server/discussions/2740

例如,考虑以下两种基于 n​​ats 的通信场景:

  • 场景#1:

发布者 (P) 使用加密解密方案 (A) 和他自己的加密密钥 (A) 向 nats 发布主题“foo.bar”

消费者 (C) 订阅了 nats-subject "foo.bar",使用加密解密方案 (B) 和他自己的加密密钥 (B)

在这种情况下,我假设 nats-server 将使用解密方案 (A) 对 (P) 发布的消息进行解密,并在使用加密重新加密这些消息后检查主题并将“foo.bar”消息转发给消费者 (C) -方案(B)。

  • 场景#2:

发布者 (P) 使用加密解密方案 (A) 和他自己的加密密钥 (A) 向 nats 发布主题“foo.bar”

消费者 (C) 订阅了 nats-subject "foo.bar",使用与发布者完全相同的加密-解密-方案 (A)

在这种情况下,我假设 nats-server 只需要使用解密方案 (A) 解密 (P) 发布的消息的主题,并在检查主题后将“foo.bar”消息转发给消费者( C)通过“按原样”“复制粘贴”消息的有效负载(数据),因为加密 - 解密机制完全相同。

我猜想加密-解密中的这种对称性应该在负载高时提供更好的性能。

我的这些假设是对的吗?还是我错过了什么?我还没有看到有人指出场景#2 是提高性能和减少延迟(也可能降低错误率)的一种手段。

想法?洞察力?相关文档的链接?

4

1 回答 1

0

在此线程中收到用户“Todd Beets”的回复:

https://github.com/nats-io/nats-server/discussions/2740#discussioncomment-1799935

<< NATS 不会像您假设的那样在 NATS 协议 [1](第 7 层)级别进行加密/解密。

“在线”NATS 完全支持带有 NATS 客户端的 TLS [2]。

由于 TLS 在 NATS 服务器处终止,因此 NATS 正在播放场景 1 中的模式(即 1..N 订阅 NATS 客户端具有独立的TLS 连接和密钥)。

[1] https://docs.nats.io/reference/reference-protocols/nats-protocol#client-protocol

[2] https://docs.nats.io/using-nats/developer/security/tls >>

(强调我的)

于 2021-12-23T14:43:09.430 回答