ZeroMQ API(七) 安全
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(七) 安全的更多相关文章
- 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 * ...
- ZeroMQ API(一) 总序
序 zeromq是一个轻量级的消息库.它扩展了标准的套接字接口,其特性与传统的消息中间件不同,zeromq提供异步消息队列.多消息传递模式.消息过滤(订阅).无缝访问多个传输协议等的抽象. 本系列AP ...
- ZeroMQ API(五) 传输模式
1.使用TCP的单播传输:zmq_tcp(7) 1.1 名称 zmq_tcp - 使用TCP的ZMQ单播传输 1.2 概要 TCP是一种无处不在,可靠的单播传输.当通过具有ZMQ的网络连接分布式应用程 ...
- ZeroMQ API(四) 套接字
1.创建一个套接字 1.1 zmq_socket(3) 1.1.1 名称 zmq_socket - 创建ZMQ套接字 1.1.2 概要 void * zmq_socket(void * context ...
- 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 描述 ...
- ZeroMQ API(八) 异常&属性
1.错误处理 1.1 zmq_errno() 1.1.1 名称 zmq_errno - 为调用线程检索errno的值 1.1.2 概要 int zmq_errno(void); 1.1.3 描述 zm ...
- ZeroMQ API(六) 代理
1.zmq_proxy(3) 1.1 名称 zmq_proxy - 开始内置ZMQ代理 1.2 概要 int zmq_proxy(const void * frontend,const void * ...
- ZeroMQ接口函数之 :zmq - 0MQ 轻量级消息传输内核
官方网址:http://api.zeromq.org/4-0:zmq zmq(7) 0MQ Manual - 0MQ/3.2.5 Name zmq – ØMQ 轻量级消息传输内核 Synopsis # ...
- 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 - ...
随机推荐
- 13_Java面向对象_第13天(static、final、匿名对象、内部类、包、修饰符、代码块)_讲义
今日内容介绍 1.final 关键字 2.static 关键字 3.匿名对象 4.内部类 5.包的声明与访问 6.访问修饰符 7.代码块 01final关键字概念 A: 概述 继承的出现提高了代码的复 ...
- mysubmail 短信报警
https://www.mysubmail.com/chs/documents/developer/YPWD84 文本文档 官网:www.mysubmail.com 操作流程:快速接入短信 AP ...
- Prism框架的优点
以我粗略的了解,prism/mvvm可以做到完全的逻辑和ui分离.即便是事件都是如此.这是主要优点.mvc是从本质上ui框架(当前大量半吊子把业务逻辑写在里面是不对的),mvvm包含客户端的业务逻辑. ...
- 关于nginx的一点记录
(1) 安装nginx官网下载:http://nginx.org下载适合Windows的安装包,是一个压缩包,直接解压就可以了. (2) 启动nginx有三种方式启动:a. 双击nginx.exe图标 ...
- springboot整合spring @Cache和Redis
转载请注明出处:https://www.cnblogs.com/wenjunwei/p/10779450.html spring基于注解的缓存 对于缓存声明,spring的缓存提供了一组java注解: ...
- Day24--Part2-伪Ajax(iframe)
参考:http://www.pythonsite.com/ 赵凡同学的博客,每一份努力都值得期许! 867468837 Ajax操作---伪Ajax (iframe) 一,基于iframe实现伪Aja ...
- 如何将SLIC集成到ESXi中
如何将SLIC集成到ESXi中 参考 http://forums.mydigitallife.info/threads/12982-ESX-ESXi-Bios-Tools/page34?p=72183 ...
- 编辑器配置 vscode / Atom / Sublime Text
vscode配置 https://code.visualstudio.com/docs/languages/cpp https://www.zhihu.com/question/30315894/an ...
- 【scala】2.控制结构和函数
简介 在Java或者C++中,我们把表达式和语句看做两种不同的东西.表达式有值,而语句执行动作. 在Scala中,几乎所有构造出来的语法结构都是有值的.这个特性使得程序更加的精简,也更易读. 1.条件 ...
- Container With Most Water - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 Container With Most Water - LeetCode 注意点 没什么好注意的... 解法 解法一:暴力求解,假设任意两个端点会是最佳答 ...