Fabric中的安全机制(一)

Fabric作为一个联盟链的特例,与公有链不同的是,它的目标是建立以企业为核心的高可信计算环境,因此,在Fabric中特别设计了MSP(Membership Service Provider)来实现Fabric网络中不同机构成员的身份识别与管理。
由于联盟链需要思考商业应用对安全、隐私、监管、审计等的需求,因此在成员进入链时,必须是被许可的Fabric成员管理服务为整个区块链网络提供了身份管理、隐私、保密和可审计的服务,继而通过公钥基础设施PKI使非许可链转化为许可链。

交易安全与隐私保护

Fabric中的交易有两种:

  • 普通交易(`None-confidential Transaction),原始交易数据是可以以明文的方式存储到账本当中的,成员只要可以访问账本,就可以看到交易信息。
  • 秘密交易(`Confidential Transaction),可以理解为匿名交易,在讲信息存储到账本的时候,交易的发起者的身份信息就会被更改,交易内容被加密,只有交易的发起者、平台监管者、审计者才可以看到。

在交易的过程中同时还设计到两类证书:

  • E-certEnrollment-cert)是一种长期有效的电子证书,是由注册证书颁发机构 ECA颁发的。
  • T-certShort-term Cert)是一种短期有效的电子证书,是由交易认证中心 TCA颁发的,是成员用于每个“秘密交易”的短期证书。

E-cert就不要多说了,有意思的是这个T-cert证书,它的持有者是只有交易认证中心和审计者知道的,这样一来,用户便可以以匿名的方式参与到系统中。

除了证书方面,交易的安全性还涉及到数据传输的安全问题,因为数据是从客户端出发的,最终被写入到Committer节点中,中途经历了很多网络传输节点。
Fabric中是开启的TLS安全传输渠道来对数据进行传输的。而且,Fabric还使用了第三种证书TLS-cert,用来保证Fabric网络中所有节点之间的通道的安全性,是由TLSCA颁发的。在Fabric中,TLS的传输特性是默认开启的。

智能合约的安全机制

Fabric在智能合约的安全性上采用了进程间隔离的技术奖智能合约代码的进程隔离到系统之外,并通过socket通信方式远程调用智能合约。
为此,在执行智能合约方面,Fabric采用了先进的容器技术,并且,打包智能合约代码并生成Docker镜像的过程是Fabric自动完成的。
可以说,智能合约是一段运行在独立的容器内的程序,它不能与外部有任何的I/O通信,不能直接操作账本,只能与背书节点之间实现被动的gRPC通信,与Fabric系统及账本数据完全隔离。
智能合约在代码编写完成后,需要通过package命令打包为一个可部署的安装包,这个安装包是需要遵守Chaincode Deploment Spec(CDS)规范,CDS规范中最重要的一组信息是智能合约的拥有者的共同签名。作用如下:

  • 明确智能合约的所有权
  • 用来检测和验证智能合约的真实性
  • 用来验证智能合约代码是否被篡改

再来说一下智能合约与交易的问题,智能合约是不能直接修改区块链账本数据的,而是在执行完毕后返回一个ReadWriteSet对象,其中包括智能合约操作过的Key-Value集合,Write Set是需要写入账本中的数据集,实际上,Committer还会对ReadWriteSet的数据进行版本检查,以确保不会产生脏数据。

你可能感兴趣的:(Fabric中的安全机制(一))