联盟链--准入控制

Posted superzoeYian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了联盟链--准入控制相关的知识,希望对你有一定的参考价值。

 目录

1.准入控制

2.准入机制

3.CA

4.数字证书(certificate)

4.1数字证书的基本密码学原理

4.1.1数字证书

4.1.2非对称加密

4.1.3摘要算法

4.1.4数字签名

4.1.5证书格式

4.1.6证书扩展名

4.1.8证书生成算法

4.2数字证书的具体实现

4.2.1创建CA

4.2.2颁发证书

1.准入控制

顾名思义准入控制是联盟链对要加入链的节点的身份审核和验证,通过准入控制部分实现对节点的入链管理。

为什么要准入控制?原因如下:

1.联盟链承载的业务复杂度可能超越数字资产转让,即使是同一个商业场景里的不同业务流程,能参与和应该参与的人也可能不一样;
2.基于商业的上的隐私和安全考虑,要求对不同的人能做的操作、和能访问的范围进行区别对待;
3.企业级生产环境对稳定性要求很高,运维升级操作特别谨慎,根据DO分离的基本思想,开发和运维的活动需要分开,再进一步:参与交易的,负责运营的,需要各司其职;
4.可能有监管、委员会、治理人员等特殊身份存在,需要为这些特殊身份定制不一样的操作能力,这些能力不能赋予普通用户使用。

在支持智能合约的区块链平台里,准入控制可以控制某个用户的以下行为:

1.能否部署合约。杜绝没有被审核过的合约发布到链上和被执行。
2.能否调用某个合约。合约代表了一些系统能力或业务流程,如果不能调用某个合约的某个接口,那么这个用户就无法实现系统配置,系统控制,或者参与智能合约实现的业务交易流程。

2.准入机制

联盟链中的准入机制通过CA(Certification Authority)中心来实现。

第三方可信CA机构(如CFCA等)可以实现数字证书管理功能,满足对于证书系统安全性与权威性有较高要求的银行或金融机构的需求。

自建CA体系通过建设独立的PKI/CA系统,需建立完整的运营管理体系,运维成本较高。

3.CA

CA,Certification Authority,是一个具有权威性的证书颁发中心,主要功能是可以颁发该权威中心所认证的一段时间内有效的数字证书,除此之外证书权威中心还可以进行证书吊销、证书续签、证书验证等一系列操作。

CA中心功能图如下:

 

 

4.数字证书(certificate)

谈到数字证书就涉及到数字证书的基本密码学原理以及具体实现,下面分原理和实现两部分来展开数字证书部分的内容。

4.1数字证书的基本密码学原理

4.1.1数字证书

数字证书是一个经证书授权中心数字签名,包含公开密钥拥有者信息以及公开密钥的文件,最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。简单来说,数字证书就是一张附带了数字签名的信息表。

数字签名结构图:

4.1.2非对称加密

  • 例如:有两个密钥,一个是Key_1,另一个是Key_2
  • 一段明文通过某种加密算法用 Key_1 加密之后的密文只能用 Key_2 解密,而不能还是用 Key_1 解密。
  • 反过来,明文用 Key_2 加密之后的密文只能用 Key_1 解密,而不能还是用 Key_2 解密。

满足这种特征的加密算法称为非对称加密算法,目前常用的非对称加密算法有 RSA、DSA 等。

4.1.3摘要算法

将各种不定长的数据经过某种算法处理之后,总是能生成一段定长的数据,这段定长的数据称之为散列值。这种算法如果可以满足以下特征,则可以称为摘要算法。

  • 可以轻松地将各种不定长的数据生成散列值。
  • 不能通过散列值来反推出原数据。
  • 不能找出具有相同散列值的另一个数据。

目前常用的摘要算法有 MD5、SHA-1、SHA-256 等。

4.1.4数字签名

数字签名其实就是把散列值经过非对称加密算法加密得到的一个加密的散列值。

它将报文按双方约定的 HASH 算法,计算得到一个固定位数的报文摘要。将该报文摘要值用发送者的私人密钥加密,然后连同原报文一起发送给接收者,而产生的报文即称数字签名。只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符,这样就保证了报文的不可更改性,具有鉴权、完整性、不可抵赖特点,一般用于身份认证和防止抵赖。

数字签名工作流程图如下:

4.1.5证书格式

X.509 标准的证书文件具有不同的编码格式,一般包括 PEM 和 DER 两种。

1)PEM

Privacy Enhanced Mail 的缩写,以文本的方式进行存储。它的文件结构以 -----BEGIN XXX-----,并以 -----END XXX----- 结尾,中间 Body 内容为 Base64 编码过的数据。例如:

-----BEGIN CERTIFICATE

----- Base64 编码过的证书数据

-----END CERTIFICATE-----

通过 OpenSSL 命令可以查看其证书内容:

openssl x509 -in xxx.pem -text -noout

它也可以用来编码存储公钥(RSA PUBLIC KEY)、私钥(RSA PRIVATE KEY)、证书签名请求(CERTIFICATE REQUEST)等数据,一般 Apache 和 nginx 服务器应用偏向于使用 PEM 这种编码格式。

2)DER

Distinguished Encoding Rules 的缩写,以二进制方式进行存储,文件结构无法直接预览,同样可以通过 OpenSSL 命令查看其证书内容:

openssl x509 -in xxx.der -inform der -text -noout

一般 Java 和 Windows 服务器应用偏向于使用 DER 这种编码格式。

当然同一 X.509 证书的不同编码之间可以互相转换:

3)PEM 转为 DER

openssl x509 -in xxx.pem -outform der -out xxx.der

4)DER 转为 PEM

openssl x509 -in xxx.der -inform der -outform pem -out xxx.pem

4.1.6证书扩展名

证书文件扩展名是比较误导人的地方,如上所述,对于 X.509 标准的证书两种不同编码格式,一般采用 PEM 编码就以 .pem 作为文件扩展名,若采用 DER 编码,就应以 .der 作为扩展名。

但常见的证书扩展名还包括 .crt、.cer、.p12 等,他们采用的编码格式可能不同,内容也有所差别,但大多数都能互相转换,总结如下:


.pem:采用 PEM 编码格式的X.509 证书的文件扩展名;
.der:采用 DER 编码格式的X.509 证书的文件扩展名;
.crt:即 certificate 的缩写,常见于类 UNIX 系统,有可能是 PEM 编码,也有可能是 DER 编码,但绝大多数情况下此格式证书都是采用 PEM 编码;
.cer:也是 certificate 的缩写,常见于 Windows 系统,同样地,可能是 PEM 编码,也可能是 DER 编码,但绝大多数情况下此格式证书都是采用 DER 编码;
.p12:也写作 .pfx,全称:PKCS #12,是公钥加密标准(Public Key Cryptography Standards,PKCS)系列的一种,它定义了描述个人信息交换语法(Personal Information Exchange Syntax)的标准,可以用来将包含了公钥的 X.509 证书和证书对应的私钥以及其他相关信息打包,进行交换。简单理解:p12 文件 = X.509 证书+私钥
.csr:Certificate Signing Request 的缩写,即证书签名请求,它并不是证书的格式,而是用于向权威证书颁发机构(Certificate Authority, CA)获得签名证书的申请,其核心内容包含一个 RSA 公钥和其他附带信息,在生成这个 .csr 申请的时候,同时也会生成一个配对 RSA 私钥,私钥通常需要严格保存于服务端,不能外泄。
.key:通常用来存放一个 RSA 公钥或者私钥,它并非 X.509 证书格式,编码同样可能是 PEM,也可能是 DER。

4.1.7证书信任链

证书是可以有信任关系的,通过一个证书可以证明另一个证书也是真实可信的。实际上,证书之间的信任关系,是可以嵌套的。只要你信任链上的头一个证书,那后续的证书,都是可以信任的。

比如 C 证书信任 A 和 B,然后 A 信任 A1 和 A2,B 信任 B1 和 B2。则它们之间,构成如下的一个树形关系(一个倒立的树)。

处于最顶上的树根位置的那个证书,就是“根证书”。除了根证书,其它证书都要依靠上一级的证书,来证明自己。那谁来证明“根证书”可靠?实际上,根证书自己证明自己是可靠的(或者换句话说,根证书是不需要被证明)。

根证书是整个证书体系安全的根本。所以,如果某个证书体系中,根证书出了问题(不再可信了),那么所有被根证书所信任的其它证书,也就不再可信了。

4.1.8证书生成算法

以 RSA 证书为例进行说明,其他算法的证书可能会有所不同。

1)构建认证机构,签署数字证书

1.1)根认证机构

构建

 

证书签署

 

1.2)二级及以上认证机构

构建

 

证书签署

 

2)客户端验证服务器的身份

2.1)单级认证机构的验证

 

2.2)二级及以上认证机构的验证

 

4.2数字证书的具体实现

4.2.1创建CA

1)安装openssl

[root@localhost ~]# yum install -y openssl

 2)创建CA的相关文件及目录

mkdir /opt/root_ca &&\\   
cd root_ca &&\\   
mkdir newcerts private crl &&\\   
touch index.txt &&\\   
touch serial &&\\   
echo 01 >serial &&\\

说明:
   #newcerts目录用于存放CA签署(颁发)过的数字证书(证书备份目录)。
   #private目录用于存放CA的私钥。
   #文件serial和index.txt分别用于存放下一个证书的序列号和证书信息数据库。
   #文件serial填写第一个证书序列号(如10000001),之后每前一张证书,序列号自动加1。

3)修改openssl配置文件

vim /etc/pki/tls/openssl.cnf 
[ CA_default ] 
dir = /opt/root_ca 
[ policy_match ] 
countryName = match 
stateOrProvinceName = optional 
organizationName = optional 
organizationalUnitName = optional 
commonName = supplied 
emailAddress = optional

说明:   
match   表示严格校验国家名称   
optional 表示可选   
这个“匹配”指的是在颁发证书的时候,检查请求中的信息是否和根证书中所对应的信息匹配;
加粗的部分为需要修改的配置,具体配置根据实际情况修改

 4)生成CA私钥

[root@localhost root_ca]# openssl genrsa -out private/ca.key

5)使用私钥生成CA请求信息

[root@localhost root_ca]# openssl req -new -key private/ca.key -out ca.csr

6)使用CA私钥和证书请求,生成CA根证书

[root@localhost root_ca]# openssl x509 -req -days 3650 -in ca.csr -signkey private/ca.key -out ca.crt

4.2.2颁发证书

1)生成私钥

[root@localhost root_ca]# openssl genrsa -out server.key

2)生成请求

[root@localhost root_ca]# openssl openssl req -new -key server.key -out server.csr

3)颁发证书

[root@localhost root_ca]# openssl ca -in server.csr -cert /opt/root_ca/ca.crt -keyfile /opt/root_ca/private/ca.key -out server.crt -days 3650

参考以下文章:

​​​​​​X.509 数字证书的基本原理及应用 - 知乎

公有链私有链和联盟链到底有何区别?

公有链、私有链和联盟链到底有何区别?
在这里插入图片描述

谈区块链的时候,是不是总是听到这三个词?他们三个到底是什么,又分别有什么作用呢?

公有链、联盟链和私有链它们本质的区别是准入机制不同,换句话说,区块链账本的公开程度决定了它是公有链、联盟链还是私有链。

公有链(Public Blockchain)

公有链,顾名思义,从字面上理解,就是“公有”,它是指对全世界所有人开放的,任何人都可以读取数据、发送交易且交易能够获得有效确认的共识区块链。

在公有链上,各个节点均可自由加入和退出网络,并参加链上数据的读写,并且,网络中不存在任何中心化的服务端节点。

公有链上的各个节点可以自由加入和退出网络,并参加链上数据的读写,读写时以扁平的拓扑结构互联互通,网络中不存在任何中心化的服务端节点。

比特币、以太坊,大家熟悉吧?这两者采取的都是公有链。因为没有限制,任何人都可以参加。

公有链特点

◆ 访问门槛低

只要你有计算机,只要计算机能联网,都能够访问。

◆ 数据公开透明且无法篡改

公有链是高度去中心化的分布式账本,每个人在任何节点的行为都是可以查看的,而且基于庞大的用户体系,想要篡改交易数据,几乎不可能实现。

◆ 匿名性

由于节点之间无需彼此信任,所有的操作都可以匿名进行,很好地保护使用者的隐私。

◆ 免受开发者影响

公有链数据的读写是不受任何人控制和篡改的,就连程序开发者也无权干涉用户。所以,极大程度上保护了用户免于程序开发者的影响。

当然,公链也存在着交易速度慢等问题,由此,我们也产生了“私有链”概念。

私有链(Private Blockchain)

私有链,也称专有链。它是一条非公开的“链”,通常情况,需要授权才能加入节点。而且私有链中各个节点的写入权限皆被严格控制,读取权限则可视需求有选择性地对外开放。

通常情况,私有链适用于企业内部的应用,以及特定机构的内部数据管理与审计等金融场景的应用。特别是在某些情况下,私有链上的一些规则,可以被机构修改,比如还原交易流程等服务。

私有链特点

◆ 交易速度

私有链上的节点只有少量,且具有很高的信任度,交易不需要所有网络节点的确认,所以其交易速度比任何其他的区块链都快。

◆ 隐私保障良好

由于读取权限是由该组织决定的,参与者难以获得私有链上的数据,因此组织自身的隐私保障更好。

◆ 交易成本大幅度降低

私有链的交易只需要几个受到普遍认可的高算力节点确认即可,其交易成本与公有链和联盟链相比极低。

◆ 安全性较高

链上成员都是经过审核授权的,所以恶意攻击的可能性相对较小。

不过,私有链也存在着问题:比如权限被少数节点控制,不能根本解决作弊问题,背离了去中心化的初衷;此外,私有链上的数据可能被操纵,代码也可能被修改。

联盟链(Consortium Blockchain)

联盟链是指由多个机构共同参与管理的区块链,每个组织或机构管理一个或多个节点,其数据只允许系统内不同的机构进行读写和发送。

联盟链的各个节点通常有与之对应的实体机构组织,通过授权后才能加入与退出网络。各机构组织组成利益相关的联盟,共同维护区块链的健康运转。

联盟链适合组织机构间的交易和结算,目前国内比较有影响力的联盟链有中国分布式总账基础协议联盟(ChinaLedger)、中国区块链研究联盟(CBRA)和微众银行等。

联盟链特点

从某种程度上来说,其实联盟链也属于私有链,但它私有的程度不同,其权限设计要求更复杂,可信度更高。

一般来说,公有链适用于对可信度、安全性有很高要求,而对交易速度要求不高的场景。私有链或联盟链更适合对隐私保护、交易速度和内部监管等具有很高要求的应用。

微信图片_20210406162907.jpg

ULAM是一条公链,是由清华大学密码学博士研究的底层共识算法创新项目。是继POW,POS,DPOS,PBFT,DAG类共识算法之后的第六个在共识算法上有重大创新的区块链项目。

ULAM共识算法的灵感来自波兰犹太人数学家斯塔尼斯拉夫·马尔钦·乌拉姆(Stanisław Marcin Ulam)的Luck number。其利用哈希函数的特性创造出超低能耗、完全去中心化、高度稳定的区块链系统。

ULAM是根据节点的幸运值来决定挖矿概率的,不需要进行hash值的计算。每个节点根据幸运值的大小,决定拥有的随机数的个数。节点的幸运值越大拥有的随机数越多。在每次出块的时候被选为记账节点的概率也就越高。ULAM算法类似于乐透开奖的方式,幸运值越大拥有的随机号码越大,中奖的几率也越大。

幸运值是与节点的币龄相关的,币龄则是与持币者的ULAM数量和持币时间相关。

高效的处理能力

ULAM设计的全新非交互式交易验证算法(NITCV),可以使TPS最低达到10000。ULAM使用知识证明的方法构造出非交互式交易验证算法。普通的区块链在验证交易时需要所有矿工都对区块中的交易进行验证,ULAM非交互式交易验证算法通过矿工打包区块后对区块内的交易验证后生成交易验证证明。

低能源消耗

比特币和以太坊由最初的普通电脑节点挖矿演变成现如今的专业矿机、矿池挖矿,一方面电费价格高昂,普通人没有办法参与,另一方面场地的选择也受限制,电费成本、管理成本、储存成本都是普通人难以解决的问题。虽然在保证去中心化的方面做的相对合理,但是牺牲了环保,由此很大程度上造成了能源浪费。ULAM的挖矿机制采用哈希随机数生成,不需要寻找特定的哈希,一台超级计算机和一台普通的智能手表手机找到正确的随机数的概率是一致的(不考虑币零的情况下)。从而,成功地做到了超低能耗。

去中心化

专业矿机在挖矿ULAM的时候失去了优势,而大众会用自己日常的设备比如手机、笔记本电脑、台式机、Pad、智能手表等进行挖矿。由于参与的门槛低,大众就可以高度参与ULAM节点的运行,因为节点的分散性,去中心化程度也会更高。

抗算力集中

ULAM不需要通过计算Hash原像来选出打包节点,因此在ULAM中并不存在算力竞赛的现象。ULAM通过设计的算法来计算出每个节点的幸运值,从而根据每个节点的幸运值完全随机的挑选出打包节点。

抗量子攻击

ULAM采用了抗量子攻击的签名算法NTRU。NTRU(Number Theory Research Unit)算法是1996年由美国布朗大学三位数学教授发明的公开秘密体制。这是一个基于多项式环 (其中N是一个安全参数)的密码体制。它的安全性依赖于格中最短向量问题(SVP)。

通证经济

ULAM的总发行量为1414213562枚,其中80%用于挖矿奖励,8年挖完,20%写进创世块。

 ULAM可以使用自己日常的设备比如手机、笔记本电脑、台式机、Pad、智能手表等进行挖矿,持有6000个ULAM(就是1个节点)就可以拥有ULAM公链维护,记账,打包的权力。

以上是关于联盟链--准入控制的主要内容,如果未能解决你的问题,请参考以下文章

区块链分类

公有链私有链和联盟链到底有何区别?

浅析 Fabric Peer 节点

区块链搭建联盟链及控制台安装

什么是联盟链

详解公链,侧链,联盟链,私有链