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. mongodb常用基本命令(根据工作需要,不断更新)

    推荐可视化工具:mongobooster   复制库     db.copyDatabase("ability_message","ability_message_cop ...

  2. Android 布局类控件

    Android提供6种布局类的控件:LinearLayout.TableLayout.GridLayout.FrameLayout.RalativeLayout.AbsoluteLayout 网上搜到 ...

  3. JS 字符串切割成数组

    var cheLin = "字*符*串" // console.log(cheLin) var array = cheLin.split("*");  arra ...

  4. 数据库性能优化之SQL语句优化(下)

    (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最 ...

  5. C 函数——Day04

    C 函数 函数是一组一起执行一个任务的语句.每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数. 您可以把代码划分到不同的函数中.如何划分代码到不同的函数 ...

  6. 《Linux内核设计与实现》学习总结 Chap5

    一.与内核通信 1.系统调用在用户空间进程和硬件设备之间添加了一个中间层. 作用: 1)为用户空间提供了一种硬件的抽象接口. 2)系统调用保证了系统的稳定和安全. 3)每个进程都运行在虚拟系统中,而在 ...

  7. WEB入门.八 背景特效

    学习内容 background属性 CSS Sprite 技术 滑动门技术 能力目标 使用background设置网页背景 使用Sprites制作平滑投票特效 使用滑动门技术实现Tab菜单 本章简介 ...

  8. java多线程 -- 原子量 变量 CAS

    多线程原子性问题的产生和解决 原子变量:在 java.util.concurrent.atomic 包下提供了一些原子变量. 1. volatile 保证内存可见性,可以查看atomic中变量是使用v ...

  9. 解题:APIO 2014 序列分割

    题面 拆开式子我们发现切割顺序不影响答案,所以可以设计出一个$dp[i][j]$表示到$i$为止切了$j$刀的最大收益之类的,然后做个前缀和就可以转移了. $dp[i][j]=min(dp[i][j] ...

  10. python定义函数以及参数检查

    (转自廖雪峰网站) 函数定义 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 我们以自定义 ...