Hyperledger Fabric的一些密码学常识
Hash
哈希(Hash)算法主要作用是将一段任意长度的数据,经过计算转换成一段定长的数据。
这种算法的特性是:几乎不能通过Hash的结果推导出原文。并且几乎没有可能找到两个不同的信息,对两个信息进行Hash计算之后得到相同的哈希值。
Hash算法的一个重要特性就是:作验证的时候是快速的,但逆向推出明文是基本不可能的。例如:有两条信息,可以很快速的计算出来它们各自的哈希值,并通过哈希值的比对,就可以判定出两条信息是否内容相同,但是几乎不可能从过哈希值计算出信息的原文。
注:哈希函数的另外一个特性,难题友好性在区块链的工作量证明POW中起到很大作用。所谓难题友好性,是指没有便捷的方法去产生一个满足特殊要求的哈希值。比如,比特币区块,就是要求矿工计算到18个0开头的哈希值,这通常需要一个非常大的计算量。
非对称密码学的特征和用途
非对称密码学又称公钥密码学,是使用一对公钥和私钥的密码学,加密和解密用的不是同一把钥匙。
可以公开的钥匙叫公钥,需要保密的钥匙叫私钥。
公钥由私钥产生,私钥可以推导出公钥,但从公钥无法推导出私钥。
非对称密码的主要用途是:加密和数字签名
加密
加密,顾名思义就是对信息进行加密,在这种场景下,用公钥加密,用私钥解密,
例如,小李要向小王发送保密信息时,首先小李使用小王的公钥对信息加密,然后把密文发送给小王,小王接收到密文之后,用自己的私钥解密获得信息明文
数字签名
数字签名主要的目的就是让签名者无法抵赖。和加密相反,在签名的时候,用私钥加密(签名),用公钥解密(验证)。
例如:乙方收到甲方传过来的一串信息,怎么能够确定是由甲方而不是其他人伪造的呢?首先,需要甲方用自己的私钥对信息加密,然后把密文和明文发送给乙方,乙方使用甲方的公钥解密,如果能够成功解密就可以证明信息确实是甲方发出的。但是,通常不需要对发送信息的整个内容都加密,因为太慢,为了提高速度,可以利用Hash算法的特性,首先用Hash算法计算出信息的唯一摘要,然后对信息摘要加密,乙方用甲方公钥解密后得到的是信息的摘要,然后对信息作Hash计算得到摘要,将两个摘要对比,如果相同,可以认为该信息是甲方发出的。
证书和证书链
证书
证书是由证书签证机关(CA)签发的对用户的公钥的认证。
证书内容主要包括:电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等。(其实证书可以简单的看作一个公钥)
证书链
CA是Certificate authority的缩写,证书授权者。就是颁发证书的机构。
根证书是颁发机构颁发给自己的(自签名,self-signed),这是信任的起点。
其实CA签发证书,就是用它自己的私钥对证书的公钥做数字签名。
某机构获得颁发机构颁发的证书及对应的私钥后,还可以用自己的私钥再颁发新的证书(数字签名),这样就形成了一个证书链。
对于一个证书链,如果头一个证书是可信的,那么后续的证书就都是可信任的
TLS
Fabric通过使用TLS(Transport Layer Security)实现节点间安全通信。
一个Peer节点同时是TLS服务端和TLS客户端:当另外一个Peer节点、应用或者CLI与当前Peer节点建立连接的时候,当前Peer节点是TLS服务端;当Peer节点与其它Peer节点或Orderer节点建立连接时,它是TLS客户端。
Hyperledger Fabric的一些密码学常识的更多相关文章
- HyperLedger Fabric 1.0的Transaction处理流程
如果把区块链比作一个只能读写,不能删改的分布式数据库的话,那么事务和查询就是对这个数据库进行的最重要的操作.以比特币来说,我们通过钱包或者Blockchain.info进行区块链的查询操作,而转账行为 ...
- Hyperledger Fabric中的Identity
Hyperledger Fabric中的Identity 什么是Identity 区块链网络中存在如下的角色:peers, orderers, client application, administ ...
- Hyperledger Fabric(3)通道与组织
1,通道的结构 通道是Fabric中非常重要的概念(类似微信群?),它实质是由排序节点划分和管理的私有原子广播通道,目的是对通道的信息进行隔离,使得通道外的实体无法访问通道内的信息,从而实现交易的隐私 ...
- Hyperledger fabric 链码篇GO(四)
Hyperledger fabric 链码篇GO(四) fabric中的链码也就是我们区块链所认知的智能合约,fabric中可由nodejs,java,go编写,本篇只针对GO语言编写链码.将详细介绍 ...
- 使用Node.JS访问Hyperledger Fabric的gRPC服务
在即将正式发布的Hyperledger Fabric SDK 1.0中,Hyperledger Fabric通过gRPC提供服务接口以取代现有的REST API.本文介绍了如何使用Node.JS访问H ...
- Hyperledger fabric Client Node.js Hello World示例程序
简介 Hyperledger fabric Client (HFC)提供了基于Node.js的应用接口来访问Hyperledger区块. 本文介绍了一个使用HFC访问IBM Bluemixr区块服务的 ...
- 基于docker的 Hyperledger Fabric 多机环境搭建(上)
环境:ubuntu 16.04 Docker 17.04.0-ce go 1.7.4 consoul v0.8.0.4 ======================================= ...
- Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群生产部署
6.1.平台特定使用的二进制文件配置 该方案与Hyperledger Fabric 1.0 从零开始(五)--运行测试e2e类似,根据企业需要,可以控制各节点的域名,及联盟链的统一域名.可以指定单独节 ...
- Hyperledger Fabric 1.0 从零开始(五)——运行测试e2e
3:运行测试e2e 3.1.运行fabric-samples的问题说明 该问题说明能够解决6.1.平台特定使用的二进制文件配置第一步的问题.可以选择继续阅读该说明,或者等参考到6.1小节时再反向阅读本 ...
随机推荐
- Python学习--Selenium模块
1. Python学习--Selenium模块介绍(1) 2.Python学习--Selenium模块学习(2) 其他: 1. Python学习--打码平台
- npm安装vue
目录 npm安装vue Vue.js 是什么 直接用script引入 安装vue 对不同构建版本的解释 安装命令行工具 (CLI) 安装cnpm 安装vue-cli 新建vue项目 运行服务 目录结构 ...
- 死磕nginx系列--配置文档解读
nginx配置文件主要分为四个部分: main(全局设置) http ( ) upstream(负载均衡服务器设置) server(主机设置) location(URL匹配特点位置的设置) serve ...
- Failed to abandon session scope: Connection timed out
系统log 出现 Failed to abandon session scope: Connection timed out 错误, reboot无法重启 解决办法就是让postfix只用IPv4 ...
- find和find_if
find函数 是在一个迭代器范围内查找特定元素得函数,可将将他用于任意容器类型得元素.这个函数返回的是所找元素得引用,如果没有找到元素就会返回这个容器得尾迭代器. #include <iostr ...
- SpringMVC原理&MVC设计思想
什么是MVC? MVC是一种架构模式 --- 程序分层,分工合作,既相互独立,又协同工作 MVC是一种思考方式 --- 需要将什么信息展示给用户? 如何布局? 调用哪些业务逻辑? MVC流程图如下图所 ...
- /etc/hosts,GoldenGate
[oracle@g]$ netstat -alp|grep 7809(Not all processes could be identified, non-owned process info wil ...
- Python2.7-struct模块
struct模块 处理二进制数据,与C语言交互,可以较为方便的对C语言的struct类型和python中的数据进行转换 主要是用于将int,char之类的C语言中基础数据pack至一个二进制流的字符串 ...
- websocket python实现原理
""" pip install ws4py """ import json from ws4py.client.threadedclient ...
- ASP.NET Response 下载文件
private void DownLoad(string fileName, string path) { FileInfo fi = new FileInfo(path); if (fi.Exist ...