2011-03-22 159 views
16

我认为在我的应用程序之间使用zeromq作为消息传递层。至少在某些情况下,我希望沟通是安全的,我正在考虑SSL。zeromq如何与SSL一起使用?

是否有一些标准的方式如何ssl启用zeromq?据我了解,它不支持开箱即用。

这将是很好,如果我只是有一个参数连接需到插座时(布尔:useSsl):)

任何想法?

回答

4

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

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

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

一旦客户端具有PSK其CA链 Server加密,它可以解密通过多播检索的邮件。

我们也在考虑实现在多播服务中使用两个包络密钥的会话过期算法。一个关键是当前会话密钥,第二个是旧的过期密钥。这样,客户端有更多时间检索新密钥,而无需在检索新密钥之前缓存加密消息。

+0

进展如何? – Anko 2012-12-12 22:43:15

6

了解这不是你的问题的答案,我将在用0mq发送消息之前直接使用RSA加密消息。

由于没有在我选择的平台上进行全面测试和实现的更加集成的加密方法,这就是我要做的。 0mq刚刚发布了版本4,其中加入了加密功能,但它仍然被认为是实验性的,并没有完全由语言绑定支持。

加密的消息,而不是连接,似乎提供了简单的升级路径,并为我们的目的是区别非常简单,只是语义给出怎样不得不目前实行加密,莫衷一是。

编辑:我现在比我写的时候更了解加密,RSA不适合加密邮件数据。使用AES,或者手动共享密钥(这是我们的短期方法),或者按照Jim Miller的回答实现密钥共享方案......但要小心如果采取后一种方法,设计和实施密钥共享方案安全很难。比你想象的更难。您可以直接使用SSL/TLS(使用消息BIO),其他人也可以这样做,但这并不简单,但至少知道SSL方案是行业标准,因此符合最低安全要求。

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

+2

由于刚刚得到赞扬,我更新了答案,以反映自我最初编写它以来学到的知识。 – Jason 2014-03-31 14:08:15

相关问题