<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Zmq on kamuszhou&#39;s blog</title>
    <link>https://ykyi.net/tags/zmq/</link>
    <description>Recent content in Zmq on kamuszhou&#39;s blog</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Tue, 17 Jan 2017 09:35:16 +0000</lastBuildDate>
    <atom:link href="https://ykyi.net/tags/zmq/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title></title>
      <link>https://ykyi.net/?p=1327/</link>
      <pubDate>Tue, 17 Jan 2017 09:35:16 +0000</pubDate>
      <guid>https://ykyi.net/?p=1327/</guid>
      <description>&lt;h2 align=&#34;center&#34;&gt;
  &lt;span lang=&#34;EN-US&#34;&gt;1. &lt;/span&gt;前言：
&lt;/h2&gt;
&lt;p&gt;&lt;span lang=&#34;EN-US&#34;&gt; &lt;/span&gt;&lt;span lang=&#34;EN-US&#34;&gt; &lt;/span&gt;&lt;span lang=&#34;EN-US&#34;&gt;ZeroMq aka zmq&lt;/span&gt;是最知名的网络消息中间件之一。使有&lt;span lang=&#34;EN-US&#34;&gt;zmq&lt;/span&gt;的开源软件中最知名的莫过于&lt;span lang=&#34;EN-US&#34;&gt;Apache&lt;/span&gt;基金会下的&lt;span lang=&#34;EN-US&#34;&gt;Storm&lt;/span&gt;。我厂内部使用&lt;span lang=&#34;EN-US&#34;&gt;zmq&lt;/span&gt;的有即通的&lt;span lang=&#34;EN-US&#34;&gt;yaaf&lt;/span&gt;框架。&lt;/p&gt;
&lt;p&gt;&lt;span lang=&#34;EN-US&#34;&gt;   ZMQ&lt;/span&gt;社区在&lt;span lang=&#34;EN-US&#34;&gt;2013&lt;/span&gt;年&lt;span lang=&#34;EN-US&#34;&gt;9&lt;/span&gt;月发布了&lt;span lang=&#34;EN-US&#34;&gt;zmq4&lt;/span&gt;。&lt;span lang=&#34;EN-US&#34;&gt;zmq4&lt;/span&gt;最大的新功能即提供了一套安全机制，其中有&lt;span lang=&#34;EN-US&#34;&gt;IP&lt;/span&gt;黑白名单，用户名&lt;span lang=&#34;EN-US&#34;&gt;/&lt;/span&gt;密码鉴权，&lt;span lang=&#34;EN-US&#34;&gt;ECC(Elliptic Curve Cryptography)&lt;/span&gt;证书鉴权，以及通讯的加密&lt;span lang=&#34;EN-US&#34;&gt;(&lt;/span&gt;类似&lt;span lang=&#34;EN-US&#34;&gt;TSL)&lt;/span&gt;。&lt;/p&gt;
&lt;p&gt;&lt;span lang=&#34;EN-US&#34;&gt;   &lt;/span&gt;本文主要介绍&lt;span lang=&#34;EN-US&#34;&gt;zmq4.0&lt;/span&gt;的安全机制。&lt;/p&gt;
&lt;h2 style=&#34;text-align: center;&#34;&gt;
  &lt;span lang=&#34;EN-US&#34;&gt;2. &lt;/span&gt;&lt;span lang=&#34;EN-US&#34;&gt;ECC&lt;/span&gt;的故事：
&lt;/h2&gt;
&lt;p&gt;&lt;span lang=&#34;EN-US&#34;&gt;   &lt;/span&gt;这里的&lt;span lang=&#34;EN-US&#34;&gt;ECC&lt;/span&gt;不是我厂历史上的电商事业群，而是椭圆曲线加密算法。&lt;span lang=&#34;EN-US&#34;&gt;ECC&lt;/span&gt;据说被&lt;span lang=&#34;EN-US&#34;&gt;NSA(&lt;/span&gt;美国安全局&lt;span lang=&#34;EN-US&#34;&gt;)&lt;/span&gt;操作，在算法中设置了后门。不过好在不是只有一种椭圆曲线，而是有无数种，不同的曲线有不同的优点和缺点，只是其中由&lt;span lang=&#34;EN-US&#34;&gt;NIST(&lt;/span&gt;美国标准和技术研究署&lt;span lang=&#34;EN-US&#34;&gt;)&lt;/span&gt;推荐的曲线被怀疑设置了后门。&lt;/p&gt;
&lt;p&gt;&lt;span lang=&#34;EN-US&#34;&gt;   ZMQ&lt;/span&gt;使用的椭圆曲线算法是&lt;span lang=&#34;EN-US&#34;&gt;&lt;a href=&#34;http://cr.yp.to/ecdh.html&#34;&gt;Curve25519&lt;/a&gt; ,&lt;/span&gt;它有开源实现而且没有专利保护。&lt;span lang=&#34;EN-US&#34;&gt;zmq&lt;/span&gt;用了长度为&lt;span lang=&#34;EN-US&#34;&gt;256bits&lt;/span&gt;的密钥，强度相当于&lt;span lang=&#34;EN-US&#34;&gt;RSA 3072&lt;/span&gt;比特的密钥长度。&lt;/p&gt;
&lt;p&gt;&lt;span lang=&#34;EN-US&#34;&gt;   ECDH(Elliptic Curve Diffie-Hellman)&lt;/span&gt;则是一个密钥协商协议。非常简单地讲，当&lt;span lang=&#34;EN-US&#34;&gt;A&lt;/span&gt;与&lt;span lang=&#34;EN-US&#34;&gt;B&lt;/span&gt;在一个不受信任的网络中通讯前，&lt;span lang=&#34;EN-US&#34;&gt;A&lt;/span&gt;和&lt;span lang=&#34;EN-US&#34;&gt;B&lt;/span&gt;先生成一对公私钥，并且&lt;span lang=&#34;EN-US&#34;&gt;A&lt;/span&gt;和&lt;span lang=&#34;EN-US&#34;&gt;B&lt;/span&gt;通过某个完全的渠道事先知道对方的公钥，然后&lt;span lang=&#34;EN-US&#34;&gt;A&lt;/span&gt;和&lt;span lang=&#34;EN-US&#34;&gt;B&lt;/span&gt;在握手阶段协商出一个双方公知的私钥供加密接下来的通讯。&lt;/p&gt;
&lt;p&gt;&lt;span lang=&#34;EN-US&#34;&gt;    &lt;/span&gt;可以理解成&lt;span lang=&#34;EN-US&#34;&gt;zmq&lt;/span&gt;设计了一个专门为自己定制的精简的&lt;span lang=&#34;EN-US&#34;&gt;TLS&lt;/span&gt;，更多的理论细节在&lt;span lang=&#34;EN-US&#34;&gt;&lt;a href=&#34;http://curvezmq.org/page:read-the-docs&#34;&gt;http://curvezmq.org/page:read-the-docs&lt;/a&gt;&lt;/span&gt;，&lt;/p&gt;
&lt;p&gt;作为一个码农，下面用代码介绍使用&lt;span lang=&#34;EN-US&#34;&gt;zmq4&lt;/span&gt;的Curve安全机制&lt;/p&gt;
&lt;h2 style=&#34;text-align: center;&#34;&gt;
  &lt;span lang=&#34;EN-US&#34;&gt;3. &lt;/span&gt;证书鉴权&lt;span lang=&#34;EN-US&#34;&gt;,&lt;/span&gt;通讯加密&lt;span lang=&#34;EN-US&#34;&gt;,&lt;/span&gt;&lt;span lang=&#34;EN-US&#34;&gt;IP &lt;/span&gt;白名单
&lt;/h2&gt;
&lt;p&gt;编译&lt;span lang=&#34;EN-US&#34;&gt;zmq4.x&lt;/span&gt;以后，会生成一个名叫&lt;span lang=&#34;EN-US&#34;&gt;curve_keygen&lt;/span&gt;的程序，用它可以生成&lt;span lang=&#34;EN-US&#34;&gt;zmq &lt;/span&gt;的证书。证书是一个一般的文本文件，如下是一个&lt;span lang=&#34;EN-US&#34;&gt;curve_keygen&lt;/span&gt;生成的&lt;span lang=&#34;EN-US&#34;&gt;zmq&lt;/span&gt;证书的例子。&lt;/p&gt;
&lt;div class=&#34;km_insert_code&#34;&gt;
  &lt;pre class=&#34;brush:other&#34;&gt;#   ****  Generated on 2017-01-02 14:24:20 by CZMQ  ****
#   ZeroMQ CURVE **Secret** Certificate
#   DO NOT PROVIDE THIS FILE TO OTHER USERS nor change its permissions.
&lt;p&gt;metadata
    email = &amp;ldquo;&lt;a href=&#34;mailto:kamuszhou@tencent.com&#34;&gt;kamuszhou@tencent.com&lt;/a&gt;&amp;rdquo;
curve
    public-key = &amp;ldquo;!Upjrn]2Dk)jQkYREsceBnpgoIL7koE{CVnV1j4D&amp;rdquo;
    secret-key = &amp;ldquo;ZPT#=l/#Rtg:TeLbofh:uPi7#/w(GDZq[0^qPZA1&amp;rdquo;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;
  &amp;nbsp;
&lt;/p&gt;
&lt;/div&gt;</description>
    </item>
  </channel>
</rss>
