zeromq如何与SSL协同工作?

时间:2011-03-22 12:45:57

标签: sockets ssl zeromq

我很乐意在我的应用程序之间使用zeromq作为消息传递层。至少在某些情况下,我希望通信是安全的,我正在考虑SSL。

是否有一些标准方法如何启用ssl-enable zeromq?据我所知,它不支持开箱即用。

如果我在连接到套接字时只有一个参数(bool:useSsl)会很好:)

有什么想法吗?

3 个答案:

答案 0 :(得分:6)

了解这不是您问题的真正答案,我将使用RSA直接加密消息,然后再发送0mq。

如果缺乏一个在我选择的平台上经过全面测试和实施的更加集成的加密方法,那就是我的目标。 0mq刚刚发布了版本4,它已经加密了,但它仍然被认为是实验性的,并且语言绑定不完全支持。

加密消息而不是连接似乎提供了最简单的升级路径,而我们目的的差异几乎只是语义,因为我们当前必须实​​现加密。

编辑:我现在比我写这篇文章时更了解加密,RSA不是加密邮件数据的合适选择。使用AES,手动共享密钥(这是我们的短期方法)或实现密钥共享方案,如Jim Miller的回答......但要注意,如果采用后一种方法,设计和实现密钥共享方案< em>安全很难。比你想象的更难。您可以直接实现SSL / TLS(使用消息BIO),而其他人已经这样做了,它也不简单,但至少知道SSL方案是行业标准,因此满足最低安全要求。

简而言之,在纳入ZMQ 4的Elliptic Curve加密被认为是可靠的并且成为标准之前,“接受的解决方案”将是通过手动连接实现SSL / TLS,如果失败,则使用AES 128或256安全密钥共享机制(密钥共享是适当使用RSA的地方)。

答案 1 :(得分:4)

我们目前正在使用0mq实现预共享密钥解决方案,该解决方案基于TLS / SSL松散地实现密钥交换协议。

基本上,我们有一个数据聚合器服务,它通过多播0mq发布者发布加密的健康状况数据。使用对称密钥(AES128)来加密数据,并且可以从作为更简单的请求/响应模型运行的第二个服务检索超过0mq。

要检索对称密钥(PSK),我们正在实现以下协议:   客户连接   服务器发送其证书   客户端根据CA信任链验证服务器证书   客户端发送其证书   服务器根据其CA链验证客户端证书   服务器使用客户端公钥加密PSK   服务器将加密的PSK发送给客户端   客户端解密PSK

一旦客户端拥有PSK,它就可以解密通过多播检索的消息。

我们还在考虑实施会话过期算法,该算法在多播服务中使用两个封装密钥。一个键是当前的会话密钥,第二个是旧的即将到期的密钥。这样,客户端有更多的时间来检索新密钥,而无需在检索新密钥之前缓冲加密的消息。

答案 2 :(得分:3)

根据zeromq.org,它是not supported但他们正在研究它。看起来它被建议为Google Summer of Code的项目。