1、无安全性:zmq_null(7)

1.1 名称

  zmq_null - 没有安全性或机密性

1.2 概要

  NULL机制由ZMTP 3.0规范定义:http://rfc.zeromq.org/spec:23。 这是ZeroMQ套接字的默认安全机制。

2、使用用户名和密码进行纯文本身份验证:zmq_plain(7)

2.1 名称

  zmq_plain - 明文认证

2.2 概要

  PLAIN机制定义了一个简单的用户名/密码机制,让服务器对客户端进行身份验证。 PLAIN不做任何安全或保密的尝试。 它旨在用于安全要求较低的内部网络。 PLAIN机制由此文档定义:http://rfc.zeromq.org/spec:24。

2.3 用法

  要使用PLAIN,服务器应设置ZMQ_PLAIN_SERVER选项,客户端应设置ZMQ_PLAIN_USERNAME和ZMQ_PLAIN_PASSWORD套接字选项。 哪个对等体绑定,哪个连接,并不相关。

3、椭圆曲线认证和加密:zmq_curve(7)

3.1 名称

  zmq_curve - 安全认证和机密性

3.2 概要

  CURVE机制为客户端和服务器之间的通信定义了安全身份验证和机密性机制。 CURVE适用于公共网络。 CURVE机制由此文档定义:http://rfc.zeromq.org/spec:25。

3.3 客户端和服务器角色

  使用CURVE的套接字在任何时候都可以是客户端或服务器,但不能同时使用两者。角色独立于绑定/连接方向。

  通过设置新选项,套接字可以随时更改角色。该角色会影响后面的所有zmq_connect和zmq_bind调用。

  要成为CURVE服务器,应用程序将在套接字上设置ZMQ_CURVE_SERVER选项,然后设置ZMQ_CURVE_SECRETKEY选项以向套接字提供其长期密钥。应用程序不提供带有长期公钥的套接字,该公钥只用于客户端。

  要成为CURVE客户端,应用程序使用它想要连接的服务器的长期公钥来设置ZMQ_CURVE_SERVERKEY选项,或者接受来自next的连接。应用程序然后使用其客户端长期密钥对设置ZMQ_CURVE_PUBLICKEY和ZMQ_CURVE_SECRETKEY选项。

  如果服务器进行身份验证,它将基于客户端的长期公钥。

3.4 密钥编码

  源代码中密钥的标准表示形式是32个字节的基本256(二进制)数据,或40个字符的基本85数据,使用http://rfc.zeromq.org/spec:32定义的Z85算法进行编码。

  Z85算法旨在生成可打印的密钥字符串,以用于配置文件,命令行和代码。 C中有一个参考实现,位于https://github.com/zeromq/rfc/tree/master/src。

3.5 测试关键值

对于测试用例,客户端应使用此长期密钥对(在Z85中指定为十六进制):
public:
BB88471D65E2659B30C55A5321CEBB5AAB2B70A398645C26DCA2B2FCB43FC518
Yne@$w-vo<fVvi]a<NY6T1ed:M$fCG*[IaLV{hID secret:
7BB864B489AFA3671FBE69101F94B38972F24816DFB01B51656B3FEC8DFD0888
D:)Q[IlAW!ahhC2ac:*A}h:p?([%wOTJ%JR%cs 服务器应使用此长期密钥对(在Z85中指定为十六进制):
public:
54FCBA24E93249969316FB617C872BB0C1D1FF14800427C594CBFACF1BC2D652
rq:rM>}U?@Lns47E1%kR.o@n%FcmmsL/@{H8]yf7 secret:
8E0BDD697628B91D8F245587EE95C5B04D48963F79259877B49CD9063AEAD3B7
JTKVSB%%)wK0E.X)V>+}o?pNmC{O&4W4b!Ni{Lh6

4、以加密文本格式生成CURVE密钥对:zmq_curve_keypair(3)

4.1 名称

  zmq_curve_keypair - 生成一个新的CURVE密钥对

4.2 概要

  int zmq_curve_keypair(char * z85_public_key,char * z85_secret_key);

4.3 描述

  zmq_curve_keypair()函数将返回由公钥和秘密密钥组成的新生成的随机密钥对。 调用者提供了两个缓冲区,每个缓冲区至少有41个八位字节,其中该方法将存储这些密钥。 密钥使用zmq_z85_encode(3)进行编码。

4.4 返回值

  如果成功,zmq_curve_keypair()函数将返回0,否则返回-1并将errno设置为下面定义的值之一。

4.5 错误

  ENOTSUP:libzmq库不是用加密支持(libsodium)构建的。

5、将加密钥匙转换为32字节的二进制密钥:zmq_z85_decode(3)

5.1 名称

  zmq_z85_decode - 解码Z85可打印文本中的二进制密钥

5.2 概要

  uint8_t * zmq_z85_decode(uint8_t * dest,const char * string);

5.3 描述

  zmq_z85_decode()函数应将字符串解码为dest。 字符串的长度应能被5整除。dest必须足够大,以便解码值(0.8 x strlen(字符串))。编码应遵循ZMQ RFC 32规范。

5.4 返回值

  如果成功,zmq_z85_decode()函数将返回dest,否则返回NULL。

6、将32字节二进制CURVE键转换为加密文本字符串:zmq_z85_encode(3)

6.1 名称

  zmq_z85_encode - 将二进制密钥编码为Z85可打印文本

6.2 概要

  char * zmq_z85_encode(char * dest,const uint8_t * data,size_t size);

6.3 描述

  zmq_z85_encode()函数应将由数据和大小指定的二进制块编码为dest中的字符串。 二进制块的大小必须可以被4整除。对于空终止符,dest必须有足够的空间用于大小* 1.25加1。 一个32字节的CURVE键被编码为40个ASCII字符加上一个空终止符。编码应遵循ZMQ RFC 32规范。

6.4 返回值

  如果成功,zmq_z85_encode()函数将返回dest,否则返回NULL。

7、安全的身份验证和机密性:zmq_gssapi

7.1 名称

  zmq_gssapi - 安全认证和机密性

7.2 概要

  GSSAPI机制为使用通用安全服务应用程序接口(GSSAPI)在客户端和服务器之间进行通信的安全身份验证和机密性定义了一种机制。 GSSAPI机制可用于公共和私人网络。 GSSAPI本身在IETF RFC-2743中定义:http://tools.ietf.org/html/rfc2743。 ZeroMQ GSSAPI机制由以下文档定义:http://rfc.zeromq.org/spec:38。

7.3 客户端和服务器角色

  使用GSSAPI的套接字可以是客户端或服务器,但不能同时使用两者。

  要成为GSSAPI客户端或服务器,应用程序会设置ZMQ_GSSAPI_PRINCIPAL选项以向套接字提供应为其获取GSSAPI证书的主体的名称。

  要成为GSSAPI服务器,应用程序会在套接字上添加ZMQ_GSSAPI_SERVER选项。

  要成为GSSAPI客户端,应用程序集还会将ZMQ_GSSAPI_SERVICE_PRINCIPAL选项设置为其打算连接的服务器的主体的名称。

7.4 可选加密

  默认情况下,GSSAPI机制将加密客户端和服务器之间的所有通信。如果不需要加密(例如,在专用网络上),客户端和服务器应用程序可以通过设置ZMQ_GSSAPI_PLAINTEXT选项来禁用它。客户端和服务器都必须将此选项设置为相同的值。

ZeroMQ API(七) 安全的更多相关文章

  1. ZeroMQ API(三) 消息

    1.初始化消息 1.1 zmq_msg_init(3) 1.1.1 名称 zmq_msg_init - 初始化空的ZMQ消息 1.1.2 概要 int zmq_msg_init(zmq_msg_t * ...

  2. ZeroMQ API(一) 总序

    序 zeromq是一个轻量级的消息库.它扩展了标准的套接字接口,其特性与传统的消息中间件不同,zeromq提供异步消息队列.多消息传递模式.消息过滤(订阅).无缝访问多个传输协议等的抽象. 本系列AP ...

  3. ZeroMQ API(五) 传输模式

    1.使用TCP的单播传输:zmq_tcp(7) 1.1 名称 zmq_tcp - 使用TCP的ZMQ单播传输 1.2 概要 TCP是一种无处不在,可靠的单播传输.当通过具有ZMQ的网络连接分布式应用程 ...

  4. ZeroMQ API(四) 套接字

    1.创建一个套接字 1.1 zmq_socket(3) 1.1.1 名称 zmq_socket - 创建ZMQ套接字 1.1.2 概要 void * zmq_socket(void * context ...

  5. ZeroMQ API(二) 上下文

    1.创建上下文 1.1 zmq_ctx_new(3) 1.1.1 名称 zmq_ctx_new - 创建新的ZMQ上下文 1.1.2 概要 void * zmq_ctx_new(); 1.1.3 描述 ...

  6. ZeroMQ API(八) 异常&属性

    1.错误处理 1.1 zmq_errno() 1.1.1 名称 zmq_errno - 为调用线程检索errno的值 1.1.2 概要 int zmq_errno(void); 1.1.3 描述 zm ...

  7. ZeroMQ API(六) 代理

    1.zmq_proxy(3) 1.1 名称 zmq_proxy - 开始内置ZMQ代理 1.2 概要 int zmq_proxy(const void * frontend,const void * ...

  8. ZeroMQ接口函数之 :zmq - 0MQ 轻量级消息传输内核

    官方网址:http://api.zeromq.org/4-0:zmq zmq(7) 0MQ Manual - 0MQ/3.2.5 Name zmq – ØMQ 轻量级消息传输内核 Synopsis # ...

  9. ZeroMQ接口函数之 :zmq_bind - 绑定一个socket

    ZeroMQ 官方地址 : http://api.zeromq.org/4-0:zmq-bind zmq_bind(3) ZMQ Manual - ZMQ/3.2.5 Name zmq_bind -  ...

随机推荐

  1. 团队作业4--第一次项目冲刺2(Alpha版本)

    1.会议 第二次会议: ①:总结第一天任务出现的问题 ②:安排下面两天的任务 2任务安排 3.任务分解图 4.燃尽图 5.适当的项目程序/模块的最新(运行)截图 6.心得 因为做前端的同学并不擅长这方 ...

  2. 05_Java基础语法_第5天(方法)_讲义

    今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 * ...

  3. Enterprise Library 2.0 参考源码索引

    http://www.projky.com/entlib/2.0/Microsoft/Practices/EnterpriseLibrary/Caching/BackgroundScheduler.c ...

  4. es6 ...展开运算符

    展开运算符,目前应用在数组上,对象展开运算符,将在es7 提案 1.两个对象连接返回新的对象   let a = {aa:'aa'} let b = {bb:'bb'} let c = {...a,. ...

  5. grep文本处理工具

    grep是一款文本过滤工具,基于正则表达式进行模式匹配sed:stream editor 流编辑器awk:linux上实现为gawk,文本报告生成器(格式化文本)文本搜索工具,根据用户指定的模式,对目 ...

  6. Beta阶段 敏捷冲刺day1

    一.提供当天站立式会议照片一张: 二. 每个人的工作 (有work item 的ID) (1) 昨天已完成的工作: (2) 今天计划完成的工作: 今天大家一起讨论了一下之后几天的任务,以及如何对网页进 ...

  7. 内网内使用https 和 使用http 建立连接的速度对比

    文字版 使用https httpstat https://10.24.101.14/cwbase/web/Login.aspx --insecure Connected to HTTP/ OK Ser ...

  8. jion()说明

    转自:http://www.cnblogs.com/skywang12345/p/3479275.html jion(),只有当子线程执行完了,主线程才会执行 1. join()介绍 join() 定 ...

  9. JVM类加载机制详解(二)类加载器与双亲委派模型

    在上一篇JVM类加载机制详解(一)JVM类加载过程中说到,类加载机制的第一个阶段加载做的工作有: 1.通过一个类的全限定名(包名与类名)来获取定义此类的二进制字节流(Class文件).而获取的方式,可 ...

  10. STL Map和multimap 容器

    STL Map和multimap 容器 map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供 基于key的快速检索能力.       ...