ZeroMQ API(七) 安全 标签: 原文地址:https://www.cnblogs.com/ChinaHook

时间:2021-11-20 01:42:50

标签:

1、无安适性:zmq_null(7) 1.1 名称

  zmq_null - 没有安适性或机密性

1.2 提要

  NULL机制由ZMTP 3.0规范界说::23。 这是ZeroMQ套接字的默认安适机制。

2、使用用户名和暗码进行纯文自己份验证:zmq_plain(7) 2.1 名称

  zmq_plain - 明文认证

2.2 提要

  PLAIN机制界说了一个简单的用户名/暗码机制,让处事器对客户端进行身份验证。 PLAIN不做任何安适或保密的测验考试。 它旨在用于安适要求较低的内部网络。 PLAIN机制由此文档界说::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机制由此文档界说::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数据,使用:32界说的Z85算法进行编码。

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

3.5 测试关键值

对付测试用例,客户端应使用此恒久密钥对(在Z85中指定为十六进制): public: BB88471D65E2659B30C55A5321CEBB5AAB2B70A398645C26DCA2B2FCB43FC518 [email protected]$w-vo<fVvi]a<NY6T1ed:M$fCG*[IaLV{hID secret: 7BB864B489AFA3671FBE69101F94B38972F24816DFB01B51656B3FEC8DFD0888 D:)Q[IlAW!ahhC2ac:9*A}h:p?([4%wOTJ%JR%cs 处事器应使用此恒久密钥对(在Z85中指定为十六进制): public: 54FCBA24E93249969316FB617C872BB0C1D1FF14800427C594CBFACF1BC2D652 rq:rM>}[email protected]%[email protected]%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 提要