| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 联盟链--准入控制 -> 正文阅读 |
|
[区块链]联盟链--准入控制 |
?目录 1.准入控制顾名思义准入控制是联盟链对要加入链的节点的身份审核和验证,通过准入控制部分实现对节点的入链管理。 为什么要准入控制?原因如下:
在支持智能合约的区块链平台里,准入控制可以控制某个用户的以下行为:
2.准入机制联盟链中的准入机制通过CA(Certification Authority)中心来实现。 第三方可信CA机构(如CFCA等)可以实现数字证书管理功能,满足对于证书系统安全性与权威性有较高要求的银行或金融机构的需求。 自建CA体系通过建设独立的PKI/CA系统,需建立完整的运营管理体系,运维成本较高。 3.CACA,Certification Authority,是一个具有权威性的证书颁发中心,主要功能是可以颁发该权威中心所认证的一段时间内有效的数字证书,除此之外证书权威中心还可以进行证书吊销、证书续签、证书验证等一系列操作。 CA中心功能图如下: ? ? 4.数字证书(certificate)谈到数字证书就涉及到数字证书的基本密码学原理以及具体实现,下面分原理和实现两部分来展开数字证书部分的内容。 4.1数字证书的基本密码学原理4.1.1数字证书数字证书是一个经证书授权中心数字签名,包含公开密钥拥有者信息以及公开密钥的文件,最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。简单来说,数字证书就是一张附带了数字签名的信息表。 数字签名结构图: 4.1.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?编码过的数据。例如:
通过?OpenSSL?命令可以查看其证书内容:
它也可以用来编码存储公钥(RSA PUBLIC KEY)、私钥(RSA PRIVATE KEY)、证书签名请求(CERTIFICATE REQUEST)等数据,一般 Apache 和 Nginx 服务器应用偏向于使用 PEM 这种编码格式。 2)DER Distinguished Encoding Rules 的缩写,以二进制方式进行存储,文件结构无法直接预览,同样可以通过 OpenSSL 命令查看其证书内容:
一般 Java 和 Windows 服务器应用偏向于使用 DER 这种编码格式。 当然同一 X.509 证书的不同编码之间可以互相转换: 3)PEM 转为 DER
4)DER 转为 PEM
4.1.6证书扩展名证书文件扩展名是比较误导人的地方,如上所述,对于 X.509 标准的证书两种不同编码格式,一般采用 PEM 编码就以?.pem?作为文件扩展名,若采用 DER 编码,就应以?.der?作为扩展名。 但常见的证书扩展名还包括?.crt、.cer、.p12?等,他们采用的编码格式可能不同,内容也有所差别,但大多数都能互相转换,总结如下:
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创建CA1)安装openssl
?2)创建CA的相关文件及目录
3)修改openssl配置文件
?4)生成CA私钥
5)使用私钥生成CA请求信息
6)使用CA私钥和证书请求,生成CA根证书
4.2.2颁发证书1)生成私钥
2)生成请求
3)颁发证书
参考以下文章: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 0:30:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |