写点什么

中移链结合 CA 证书实现节点准入控制

作者:BSN研习社
  • 2023-02-24
    北京
  • 本文字数:2582 字

    阅读完需:约 8 分钟

中移链结合CA证书实现节点准入控制

01

背景介绍

BSN 开放联盟链(BSN Open Permissioned Blockchain, 简称 OPB)包括多条基于公有链框架和联盟链框架搭建的公用链,开发者可以选择适合应用业务需求的开放联盟链部署和运行智能合约和分布式应用,每条开放联盟链各有特点和优势,均使用类似公有链的燃料机制通过人民币计价,使用方便简洁。在符合国家监管政策的前提下,实现“开箱即用、快速上链”!

中移链是由中国移动区块链团队在 EOS 基础上对底层框架进行的改造,在满足我国信息化监管需求、合规可控的前提下,打造的中国移动区块链服务平台,不仅丰富了 BSN 的技术体系,同时为 BSN 生态中的企业和开发者用户提供了更加多元化的技术选择。

为了适配 BSN 开放联盟链-公有链可按自身框架特点选择基于信任 BSN 根 CA 统一颁发的节点身份证书,中移链基于 EOS 底层进行改造,在节点之间增加了 CA 证书认证,同时节点准入配置无需节点重启,可动态加载,修改后实时生效。

02

技术架构

EOS 节点通信基于 P2P 网络进行通信,P2P 网络是指由对等节点组成的网络,没有服务端,客户端的区别。节点通常采用 TCP 协议、使用指定端口与相邻节点建立连接,建立连接时也会有认证 “握手” 的通信过程(handshake_message)。基于 P2P 网络的特性,区块链节点可以随意加入和退出。中移链是在 EOS 基础上对其底层框架进行改造,完全继承了 EOS 所拥有高性能处理能力、易于开发以及用户免费等优势。

鉴于 P2P 网络的特性,无法满足 BSN 开放联盟链需要的安全准入原则。因此,中移链在 P2P 节点中加入 TLS 证书准入机制,通过 TLS 证书进行私有访问控制,以控制哪些参与者可以访问和使用私有中移链网络,通过在参与者节点之间建立 TLS 连接来满足安全连接要求,只有拥有正确证书的节点才能加入网络,以此完成对接入节点的访问控制。

整体 EOS 架构图如下:

  • BLOCK.LOG

    存储区块信息。

  • CHAINBASE/ROCKSDB

    内存表信息。

  • FORKDB

    用于存储候选的块分支。

  • 节点之间 P2P 通信协议

    主要目标是同步有效的块,转发交易。本次改造基于 NET_PLUGIN 插件,增加 TLS 证书对 P2P 节点进行认证。

  • DPOS 共识机制

    是一种基于投票选举的共识算法,类似于代议制民主。在 POS 的基础上,DPOS 先选举若干代理人,由代理人验证和记账,代理人之间轮流出块。

  • EOS-VM

    负责加载和解析编译后的智能合约字节码,也就是 WASM。

  • WASM

    负责执行字节码来计算智能合约运行的结果。

  • ABI

    为二进制接口文件,用于描述智能合约的接口信息。

  • CLEOS

    包含 NODEOS 和 KEOSD 模块,NODEOS 用于节点启动和管理,KEOSD 用于钱包管理。

03

证书与 TLS 原理介绍

数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份,因此数字证书又称为数字标识。

SSL 证书,也称为服务器 SSL 证书,将 SSL 证书安装在网站服务器上,可实现网站身份验证和数据加密传输双重功能。SSL 协议及其继任者 TLS 协议,是一种实现网络通信加密的安全协议,可在客户端(浏览器)和服务器端(网站)之间建立一条加密通道,保证数据在传输过程中不被窃取或篡改。

中移链通过 TLS 证书认证,完成了节点的身份管控,确保只有携带正确证书的节点才能进行 P2P 接入。TLS 握手是安全超文本传输协议(HTTPS)通信技术的一部分,本次改造后区块链节点正是使用 HTTP 和 TLS 证书进行安全的通信,整套通信流程如下:

中移链中节点的 TLS 握手包括以下步骤:

1.  待接入节点会打开一个 TLS 认证并连接到链主节点。

2.  主节点尝试通过请求可识别信息来验证接入节点的真实性。 

3.  待接入节点发送包含公钥的 TLS 证书作为回复。

4.  主节点会验证 TLS 证书,确保其有效且与用户名匹配。主节点对 TLS 证书验证通过,会使用公钥加密并发送包含密钥的消息给接入节点。

5.  待接入节点使用其私钥解密消息并检索会话密钥,然后使用会话密钥加密并向链主节点发送确认消息。

04

中移链实现节点准入控制改造

在现有的 EOS 发行版本中,所有 P2P 节点接入只有 HTTP 协议,缺少 TLS 证书所需环境。在本次改造中引入了 OpenSSL 库,该库包含一个类以及类模板,主要用于对 SSL 认证功能的支持。基于 SSL 库中流的特点,在区块链进行 P2P 连接时, P2P 套接字会包装到 SSL 流中,在已经存在的流上层做了一层加密并构造一个 SSL 上下文对象,这个对象用于设置 SSL 认证的参数(如认证模式、认证文件等)

想要启用证书验证功能,只需要在 net 配置中添加 p2p-tls*等参数。在配置这些参数以后,验证才会启动,其中 p2p-tls-security-group-ca-file 为 CA 中心的认证文件。所以加入的节点都需要从一个 CA 认证中心中生成有效 TLS 证书才能加入 P2P 网络。

实际使用中,在启动第一个出块节点时,可选择是否启动准入控制。如下图,在节点启动参数中配置了 p2p-tls\*等参数以后,参数分别为 CA 中心认证,由 CA 中心颁发的节点证书和证书的 key。在第一个节点启动后,系统会检测 p2p-tls*等参数,自动启动 TLS 证书校验。

后续节点需要携带相同 CA 中心颁发的 TLS 证书才能连接到主链进行同步。通过改造 EOS 的代码,增加 SSL 库和配置参数解析,中移链实现了公链对准入控制的改造。

05

节点准入控制验证

基于中移链最新版本,进行了多轮测试。

通过 TLS 证书进行节点准入控制:

1.  修改 node1 节点 chain.js 文件,加入 ca 认证中心和 node1 签名证书

2.  启动 node1 节点

3.  启动后节点正常出块

4.  配置 node2 证书

5.  启动 node2 节点

6.  node2 正常同步块

06

意义

区块链近年来飞速发展,联盟链在符合我国监管政策要求的前提下,已经为实体经济所服务。BSN 开放联盟链 (Open Permissioned Blockchain) 是一种介于公链和联盟链之间的底层框架,具有以下特点:第一开放,所有人可以自由使用;第二联盟,对区块链网络节点的加入和退出实现管控。中移链结合 CA 证书实现节点准入控制,完成了联盟链改造需求,正式加入开放联盟链队列。并且相对于公链,开放联盟链中的节点数量更少,只需少量节点参与便可完成共识过程,进一步提升交易处理效率。

07

参考链接

BSN 开放联盟链:

https://opb.bsnbase.com/main/index

官方 EOSIO 基础介绍:

https://developers.eos.io/welcome/latest/introduction-to-eosio/index

官方 EOSIO 的 CLEOS(命令行工具):

https://developers.eos.io/manuals/eos/latest/cleos/index/?query=cleos&page=1#gatsby-focus-wrapper

官方 EOSIO 的 Net Plugin(网络模块):

https://developers.eos.io/manuals/eos/latest/nodeos/plugins/net_plugin/index/?query=net_plugin&page=1#gatsby-focus-wrapper

亚马逊 SSL/TLS 证书介绍:

https://aws.amazon.com/cn/what-is/ssl-certificate/

用户头像

BSN研习社

关注

还未添加个人签名 2021-11-05 加入

还未添加个人简介

评论

发布
暂无评论
中移链结合CA证书实现节点准入控制_BSN研习社_InfoQ写作社区