快捷搜索:  as

点融区块链云服务安全实践

原标题:点融区块链云服务安全实践

大家都非常关注区块链的安全,因为安全是区块链的根基。如果安全出了问题,那么区块链的价值将大打折扣。比如之前公链上的安全漏洞,影响都是非常大的。

一提到区块链,大家都知道比特币或者以太坊,但是了解超级账本(Hyperledger)的肯定不多,Hyperledger是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目。

在区块链领域,一直有公有链、联盟链和私有链的区别。超级账本旗下的开源项目Hyperledger Fabric主要的定位是企业级的联盟链,最初是有IBM带头发起的一个联盟链项目,之后移交给Linux基金会,是目前最流行的企业级区块链开源项目。企业级的联盟链的安全需求和公链的关注点是不一样的。

下面主要介绍下我们在研发区块链云服务的过程中,对于区块链安全方面的一些做法。

Hyperledger Fabric的安全特性

Hyperledger Fabric在安全特性上非常强大,主要体现在以下方面:

??基于MSP(Member Service Provider)的身份认证机制,节点/用户/组织都有MSP,有了身份才能做认证。

??基于策略的权限管理,联盟/通道/智能合约的管理都通过策略来控制权限。

??智能合约的访问控制,X509证书中可以扩展属性,添加JSON类型的标识,然后在智能合约中可以根据标识来做权限控制。

??账本数据加密,存储在账本中的数据,可以在智能合约中进行加密然后存储,保护了账本中的数据安全。

区块链应用落地的安全挑战

区块链的应用的安全方面涉及非常广,这里主要介绍从区块链云服务如何安全的管理和运维区块链的角度上介绍。

挑战1: 异构网络环境组建联盟链

联盟链通常是一个多方参与的系统,不像传统的应用都是部署在一个区域,可以在网络上做安全加固。联盟链通常都有多个参与方,各个参与方的网络环境差异非常大。

比如说有些参与方是在公有云,有些参与方是公有云上的专有云,有些又是自建的数据中心。要在一个异构的环境中组建联盟链本身就是一个挑战。

挑战2: 区块链参与方的权限控制

虽然区块链是一个去中心化的系统,但是大多数现实中的区块链应用还是围绕一个中心来开展业务的。所以各个参与方的权限不一定是对等的,那么如何去对各个参与方做权限控制,需要更加贴合实际。

在Hyperledger Fabric中,所有的区块链管理操作都需要签名才能完成,比如说在一个数字积分的联盟链中,当大家要上线一个智能合约的时候,需要各个参与方都对智能合约进行签名,相当于现实世界中,对合同签名一样。这是需要一种方便的机制,能让大家顺利的完成签名,而不是线下交换签名。

挑战3: 业务相匹配的密钥安全要求

区块链非常依赖于加密算法和签名算法,国家标准对于加密模块的实现划分了四个安全等级,对于每个安全等级都有推荐的业务适用范围。

常用的加密模块实现分为:软件实现,USB KEY(如银行的U盾)和硬件加密机。如何能用区块链云服务轻松搭建出一套符合各种安全级别的区块链系统,还是一个比较复杂的事情。

点融区块链云服务的安全实践

当多个企业需要搭建联盟链时,更需要关注业务上的实现,而由区块链云服务平台负责构建安全的区块链网络,用技术的手段简化联盟链的管理和运维,可以减少企业落地区块链应用时技术上的复杂度。

目前全面支持Hyperledger Fabric企业级区块链。点融区块链云服务的定位是提供企业级的区块链基础设施服务,帮助用户轻松创建、管理和维护区块链,快速开发部署区块链应用。具体的特色如下:

??快速部署区块链,屏蔽了区块链背后的负责性;

??跨云部署,支持区块链部署在多个云平台上,增强区块链的高可用性。

??随需弹性扩展,根据使用情况,对节点的资源扩容,比如CPU、内存、磁盘和带宽等。

??可视化管理区块链,比如联盟管理、通道管理和智能合约管理。

??线上申请/线下审批,通过我们开发的客户端进行区块链管理的审批。

??管理智能合约的整个生命周期,比如智能合约打包、上传、发布、安装、实例化和升级。

1.更开放的联盟链

前面说到由于联盟链的异构网络特点,这就需要我们在开发区块链云服务时,能够对以下各种类型的网络节点进行支持。

??公有云,通过点融的公有云账号创出来的节点,点融负责防火墙的配置,安全策略的设置。

??用户自己管理的公有云或者专有云,这种情用户只需将其公有云账户提供给点融。可以限制该账户只能创建虚拟机而不能干别的,主流的云平台都支持限制账号权限。完成部署之后,也可以再关闭该账号的权限。

??用户的数据中心,即私有网络。这种情况要求用户提供的机器对公网暴露相关端口,以确保安装部署能顺利进行,以及私有网络内的Peer节点能与区块链网络中的Orderder节点和其他Peer节点的gRPC通信能够保持通畅。完成部署之后,再关闭相关不必要的端口。

Fabric区块链的部署主要涉及到以下步骤:

??准备区块链的节点

??部署区块链应用

??区块链节点和网络的安全加固

对于后面两种类型的节点,用户需要自己添加防火墙策略,做节点的安全加固,这些都属于传统的安全加固范畴。

2.更可控的权限管理

区块链管理涉及三个方面:联盟管理、通道管理和智能合约管理。我们设计了一套安全的基于权限控制的区块链管理方式,即:用户在云平台的前端上发起管理请求,然后通过”点融区块链客户端“对请求进行审批。即线上申请,线下审批的模式。

下图中展示了这样的操作方式,并给出了一个客户端审批内容的示意图。点融区块链云服务平台不保存任何的用户私钥。因此,我们设计了客户端来管理用户的私钥和证书,它可以安装在用户本地的Windows或者MacOS上。

另外,我们让客户端承担了对于配置管理的审批功能(对gRPC消息进行签名)。因为配置管理属于低频次的操作,所以为了更高的安全性,在不使用时可以不启动客户端。

比如在一个数字积分的联盟链中,已有联盟链成员航空公司,移动公司和银行,这个时候零售公司要加入该联盟链时,在Fabric中,需要至少半数以上的已有成员同意才能加入,同意的过程就是签名的过程。

如下图所示,各个联盟链成员的客户端就会看到下图的审批请求,可以决定是否同意。

由于联盟链参与方的权限通常不是对等的,所以我们把参与方分为两种角色,一种角色是联盟链盟主,一种角色是联盟链成员。联盟链盟主负责管理区块链,比如联盟管理和通道管理。联盟链成员负责管理自己的智能合约和配合联盟链盟主的区块链管理操作。

3.更包容的加密方案

我们在研发区块链云服务平台时,始终将安全放在首位来考虑。在区块链中,最重要的安全就是保护好用户的私钥。所以我们没有选择将用户的私钥托管在点融的区块链云服务平台上,而是开发了一个客户端,让用户自己完全有权限管理和控制自己的私钥。该客户端的架构如下图:

该客户端的实现是一种安全的软件实现方案,点融区块链客户端有如下技术特点:

??采用Electorn框架,跨平台支持。

??基于ReactJS实现界面逻辑。

??基于Golang实现的Crypto Service,负责管理用户的私钥和证书,并保存在加密文件中。

那么基于客户端的架构,还可以支持以下更加多样化的加密方案:

??外接USB KEY,USB KEY中存储了用户的私钥和证书,需要签名的时候,通过驱动程序调用USB KEY的硬件完成签名过程。

??公有云上的加密服务,主流的云平台都只是符合更高安全要求的加密服务,加密服务是在一个独占的资源,但是一般要求在一个VPC中。更详细的资料可参照公有云的文档。将客户端部署在加密服务所在VPC中的Windows虚拟机中,再需要签名的时候,再启动

??已有的密钥管理系统,对接公司内部已有的密钥管理系统,完成签名过程。

Fabric在1.2版本之后,基本就完善了ACL机制,我们需要继续探索,继续完善区块链的安全管理机制。

12返回搜狐,查看更多

责任编辑:

您可能还会对下面的文章感兴趣: