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 - ...
随机推荐
- thinkphp 学习1-模型
1.用M()方法创建模型类 $model = M("configsettings"); 2.使用find()方法或select()方法返回结果集 find()只返回一行记录,sel ...
- 51单片机,keilc51,如何使用data变量超过128怎么办
将堆栈指针SP指向128之后.如果你定义了数组.将数组定义为Idata.很难想象单个变量使用,你能用尽128个data类内存单元.如果真的用尽了,那只有将访问频率低的内存单元放到idata类去.总之, ...
- SOAP 缓存问题
今天在进行soap调用老是出错,去其他人的机器上试下,就好了,下面是从网上找到的原因 一开始不知道还有SOAP缓存.因为类文件改变了,重新生成了WSDL文件,测试运行,竟然不能通过.给我的第一感觉是W ...
- TP5 助手函数与TP3.2单字母函数
一.TP5 助手函数 助手函数 描述 abort 中断执行并发送HTTP状态码 action 调用控制器类的操作 cache 缓存管理 config 获取和设置配置参数 controller 实例化控 ...
- 【高级】PHP-FPM和Nginx的通信机制
PHP-FPM 介绍 CGI 协议与 FastCGI 协议 每种动态语言( PHP,Python 等)的代码文件需要通过对应的解析器才能被服务器识别,而 CGI 协议就是用来使解释器与服务器可以互相通 ...
- BZOJ5308 ZJOI2018胖
贝尔福特曼(?)的方式相当于每次将所有与源点直接相连的点的影响区域向两边各扩展一格.显然每个点在过程中最多更新其他点一次且这些点构成一段连续区间.这个东西二分st表查一下就可以了.注意某一轮中两点都更 ...
- 【CF888G】Xor-MST(最小生成树,Trie树)
[CF888G]Xor-MST(最小生成树,Trie树) 题面 CF 洛谷 题解 利用\(Kruskal\)或者\(Prim\)算法都很不好计算. 然而我们还有一个叫啥来着?\(B\)啥啥的算法,就叫 ...
- 洛谷3732:[HAOI2017]供给侧改革——题解
https://www.luogu.org/problemnew/show/P3732 Anihc国提高社会生产力水平.落实好以人民为中心的发展思想.决定进行供给侧结构性改革. 为了提高供给品质.你调 ...
- kafka问题集(一):broker少于kafka节点数
问题集仅为个人实践,若有不准确的,欢迎交流! 一.现象: 集群有3台kafka服务器,而kafka 的9002界面上broker仅有2个:log.dirs配置路径为/data/kafka/data,而 ...
- 【XSY2753】LCM
Description 给你\(n,k\),要你选一些互不相同的正整数,满足这些数的lcm为\(n\),且这些数的和为\(k\)的倍数. 求选择的方案数.对\(232792561\)取模. \(n\l ...