Bitmessage/PyBitmessage 协议规范深度解析

Bitmessage/PyBitmessage 协议规范深度解析

【免费下载链接】PyBitmessage Reference client for Bitmessage: a P2P encrypted decentralised communication protocol: 【免费下载链接】PyBitmessage 项目地址: https://gitcode.com/gh_mirrors/py/PyBitmessage

Bitmessage 是一个去中心化的加密通信协议,它采用P2P网络架构实现用户间的安全消息传递。本文将从技术角度深入解析Bitmessage的核心协议规范,帮助开发者理解其底层工作原理。

协议基础规范

哈希算法使用

Bitmessage主要采用两种哈希算法:

  1. SHA-512:作为主要的哈希算法,广泛用于各种场景
  2. RIPEMD-160:专门用于地址生成

特别值得注意的是,工作量证明(PoW)采用了双重SHA-512哈希机制。例如字符串"hello"的双重哈希过程如下:

第一轮SHA-512: 9b71d224...bcdec043
第二轮SHA-512: 0592a105...e2b200

而地址生成则采用SHA-512+RIPEMD-160的组合:

SHA-512结果: 9b71d224...bcdec043
RIPEMD-160结果: 79a324fa...2487e

消息基本结构

所有网络消息都遵循以下标准格式:

字段大小字段名数据类型说明
4字节magicuint32网络标识魔数
12字节commandchar[12]ASCII命令字符串
4字节lengthuint32负载数据长度
4字节checksumuint32负载数据的SHA-512前4字节
变长payloaduchar[]实际负载数据

当前已知的魔数值为0xE9BEB4D9(网络字节序为E9 BE B4 D9)。

核心数据结构

变长整数编码(VarInt)

Bitmessage采用智能的变长整数编码方案以节省空间:

值范围存储长度编码格式
< 0xfd1字节直接存储
≤ 0xffff3字节0xfd前缀+2字节值
≤ 0xffffffff5字节0xfe前缀+4字节值
更大值9字节0xff前缀+8字节值

网络地址结构

网络地址采用以下格式:

字段大小字段名数据类型说明
8字节timeuint64时间戳
4字节streamuint32流编号
8字节servicesuint64服务标志位
16字节IPv6/4char[16]IP地址(IPv4映射为IPv6格式)
2字节portuint16端口号

加密与消息结构

加密方案

Bitmessage采用ECIES(集成加密方案)进行消息加密,这是一种结合了非对称加密和对称加密的混合加密方案。

未加密消息结构

未加密消息包含以下关键字段:

  1. 地址版本号
  2. 流编号
  3. 行为位域(32位标志)
  4. 签名公钥(64字节)
  5. 加密公钥(64字节)
  6. 工作量证明参数(nonce_iterations_per_byte和extra_bytes)
  7. 接收方RIPE哈希(20字节)
  8. 消息编码类型
  9. 实际消息内容
  10. 确认数据
  11. ECDSA签名

消息编码类型

Bitmessage支持多种消息编码格式:

名称描述
0IGNORE可忽略的数据
1TRIVIAL简单UTF-8编码
2SIMPLE带主题和正文的UTF-8格式
3EXTENDED扩展编码格式

网络消息类型

version消息

建立连接时首先交换version消息,包含:

  • 协议版本(当前为3)
  • 服务标志位
  • 时间戳
  • 收发双方网络地址
  • 随机nonce值
  • 用户代理字符串
  • 感兴趣的流编号列表

服务标志位定义:

名称描述
1NODE_NETWORK普通网络节点
2NODE_SSL支持SSL/TLS
3NODE_POW支持工作量证明代理
4NODE_DANDELION支持蒲公英路由协议

verack消息

version消息的确认响应,仅包含消息头。交换verack后,TCP超时从20秒延长至10分钟。

addr消息

用于广播已知节点信息,包含:

  • 节点数量(varint)
  • 节点地址列表(每个38字节)

inv消息

用于广告已知对象,包含:

  • 对象数量(varint)
  • 对象哈希列表(每个32字节)

getdata消息

用于请求特定对象内容,格式与inv类似但用于请求而非广告。

高级特性

行为位域

pubkey消息中的32位行为标志位包含多项高级功能:

名称描述
27onion_router支持洋葱路由
28forward_secrecy支持前向保密
29chat聊天专用地址
30include_destination要求包含目标RIPE哈希
31does_ack发送确认消息

Bitmessage协议设计体现了对安全性和隐私性的高度重视,其独特的加密方案和网络架构为去中心化通信提供了可靠基础。理解这些协议细节对于开发兼容客户端或进行协议扩展至关重要。

【免费下载链接】PyBitmessage Reference client for Bitmessage: a P2P encrypted decentralised communication protocol: 【免费下载链接】PyBitmessage 项目地址: https://gitcode.com/gh_mirrors/py/PyBitmessage

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值