中移链节点动态管控介绍
为对标业界领先区块链架构,满足复杂组织架构的客户对于数字藏品联盟链功能需求,拓宽数字藏品服务领域,同时通过对区块链相关功能多维深度评测,及时发现产品待优化和待提升的能力,来进一步提升数藏产品行业认可度和成熟度,需要进行面向行业领先架构的“可信区块链认证”联盟化改造,因此对照行业领先的区块链评测体系,按照信通院 22 年下半年第八批《可信区块链认证技术标准(T/TBI 03-2022 4.0-4.5)》进行建设。
其中节点准入管理部分,将构建安全组合约,基于合约层进一步控制节点接入和断开的管理。并基于证书实现节点准入,通过安全组合约管理接入节点,可以通过合约移除节点,禁止接入。
01
术语解释
CMEOS
基于第三代区块链技术 EOS 改造演进而成。由于 EOS 并不满足国内的政策监管要求,中国移动在 EOS 的框架基础上,对资源控制、资源计费模型、共识算法等方面进行了最深层、最核心的技术改造,并增加了准入控制,提出了自主可控的 CMEOS 框架。
节点
区块链是一个又一个区块组成的链条。每一个区块中保存了一定的信息,它们按照各自产生的时间顺序连接成链条。这个链条被保存在所有的服务器中,只要整个系统中有一台服务器可以工作,整条区块链就是安全的。这些服务器在区块链系统中被称为节点,它们为整个区块链系统提供存储空间和算力支持。如果要修改区块链中的信息,必须征得半数以上节点的同意并修改所有节点中的信息,而这些节点通常掌握在不同的主体手中,因此篡改区块链中的信息是一件极其困难的事。
02
节点安全现状解析
(一)CMEOS P2P 节点连接方式
目前 CMEOS 通过 net_plugin 插件,通过 p2p 地址同步区块数据,其职能包括:
1.从对等的节点那里,同步区块数据;
2.发送交易给其他节点进行验证;
3.验证其他节点发送过来的交易;
4.如果自己生产的区块,要发送区块给其他节点;
5.验证其他节点发送过来的区块。
(二)目前的问题和解决方案
1、安全问题
目前,CMEOS 节点 P2P 连接基于明文传输,有被拦截窃听风险,同时 P2P 接口容易泄漏,遭受网络攻击。任何知道 P2P 地址和 chainID 的 CMEOS 节点都可以加入已有的区块链网络中,存在安全问题。
2、解决方案
为了解决以上问题,节点准入管理通过颁发证书,构建节点间 TLS 连接,保证节点通讯安全和节点接入控制。同时构建安全组合约,支持管理员添加和删除节点信息,只有在合约表内批准的节点才允许加入 P2P 网络中,同时支持动态删除,已经批准添加并且已经练入链网络的节点,从安全组合约删除对应信息后,该节点将被踢出链网络,不再继续从链网络中同步区块信息。
03
改造核心设计
由管理员颁发证书,连接节点必须加载对应证书文件,才能被准入节点网络中,整个 P2P 连接将基于 TLS 连接。同时节点管理员部署安全组合约,CMEOS 链在同步区块数据和节点加入之前会校验链上安全组合约内容,不在安全组合约内的节点将被拒绝同步数据。
在整个设计中,证书保证节点间 P2P 连接基于 TLS 安全连接通信,不做其他准入判断;安全组合约存储的是 EOS 格式的公钥,在节点启动时指定,CMEOS 将在连接的时候进行判断,拒绝不在合约组内的节点加入。
本方案约定在整个系统中只能允许一个同证书、同公钥的节点加入链网路,在该节点加入网络后,其他具有同证书、同公钥的节点将被拒绝加入链网络。
(一)基于证书的节点准入
数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份,因此数字证书又称为数字标识。SSL 证书,也称为服务器 SSL 证书,将 SSL 证书安装在网站服务器上,可实现网站身份验证和数据加密传输双重功能。SSL 协议及其继任者 TLS 协议,是一种实现网络通信加密的安全协议,可在客户端(浏览器)和服务器端(网站)之间建立一条加密通道,保证数据在传输过程中不被窃取或篡改。 中移链通过 TLS 证书认证,完成了节点的身份管控,确保只有携带正确证书的节点才能进行 P2P 接入。TLS 握手是安全超文本传输协议(HTTPS)通信技术的一部分,本次改造后区块链节点正是使用 HTTP 和 TLS 证书进行安全的通信,整套通信流程如下:
中移链中节点的 TLS 握手包括以下步骤:
1.待接入节点会打开一个 TLS 认证并连接到链主节点。
2.主节点尝试通过请求可识别信息来验证接入节点的真实性。
3.待接入节点发送包含公钥的 TLS 证书作为回复。
4.主节点会验证 TLS 证书,确保其有效且与用户名匹配。主节点对 TLS 证书验证通过,会使用公钥加密并发送包含密钥的消息给接入节点。
5.待接入节点使用其私钥解密消息并检索会话密钥,然后使用会话密钥加密并向链主节点发送确认消息。
(二)安全组合约
添加安全组合约 eosio.pub,通过该安全组合约方法 add,将节点公钥添加到安全组公钥表 publickey 中。
1、加入节点
安全组合约内存在存放安全公钥信息的合约表 publickey,只有在表内并且已经加载证书的节点可以加入到区块链网络中,基于 TLS 连接同步区块数据。
放置者(默认为 eosio.placer)可以通过 add 方法将公钥添加到 publickey 表中,已经存在的公钥不允许重复添加。
2、不允许加入节点
未加入安全组合约的节点和加入安全组但是没有加载证书文件的节点都不允许加入到节点网络中。
放置者(默认为 eosio.placer)可以通过 delbypub 方法将已经添加在安全组合约表的公钥从表中删除。还未连接的节点此后将无法与原生节点连接。
3、节点移除
加入安全组合约并且加载证书文件的节点可以加入链网络中,同步区块数据。想要移除某个节点,只需要在安全组合约表中将其节点信息删除,链网络则将该节点踢出链网络内,实现动态删除节点。
放置者(默认为 eosio.placer)可以通过 delbypub 方法将已经添加在安全组合约表的公钥从表中删除。已经与原生节点连接中若有对应公钥的节点,将被踢出。
-END-
评论