中移链结合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证书进行安全的通信,整套通信流程如下:

中移链结合CA证书实现节点准入控制_第1张图片

中移链中节点的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证书实现节点准入控制_第2张图片

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

05

节点准入控制验证

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

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

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

中移链结合CA证书实现节点准入控制_第3张图片

2.  启动node1节点

中移链结合CA证书实现节点准入控制_第4张图片

3.  启动后节点正常出块

中移链结合CA证书实现节点准入控制_第5张图片

4.  配置node2证书

中移链结合CA证书实现节点准入控制_第6张图片

5.  启动node2节点

中移链结合CA证书实现节点准入控制_第7张图片

6.  node2正常同步块

中移链结合CA证书实现节点准入控制_第8张图片

06

意义

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

07

参考链接

BSN开放联盟链:

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

官方EOSIO基础介绍:

https://developers.eos.io/wel...

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

https://developers.eos.io/man...

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

https://developers.eos.io/man...

亚马逊SSL/TLS证书介绍:

https://aws.amazon.com/cn/wha...

你可能感兴趣的:(区块链ca)