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小节时再反向阅读本 ...
随机推荐
- 实现CTreeCtrl父子节点的联动选择
本文实现了下面的功能: 当选中父节点时, 其所有子节点全部选中. 当取消选中父节点时, 其所以子节点全部取消选中. 点击子节点时, 根据子节点与其兄弟节点的选中状态, 自动设置父节点的选中状态. 通过 ...
- Docker容器学习与分享04
Docker容器的基本操作(2) 基于docker分享03的centos容器,接着学习docker容器的基本操作. docker分享03中创建了一个centos镜像,如果想要查看容器的具体信息就要使用 ...
- selenium3 浏览器驱动下载及验证
下载浏览器驱动 当selenium升级到3.0之后,对不同的浏览器驱动进行了规范.如果想使用selenium驱动不同的浏览器,必须单独下载并设置不同的浏览器驱动. 各浏览器下载地址: Firefox浏 ...
- Learn Algorithms With Javascript - 基于 Js 进行算法学习
基于 javascript 学习并实现常用的经典算法,欢迎对算法和数学感兴趣的 Js 开发者参与,一起学习共同进步. 算法实现 排序 插入排序 sort/lib/insertion-sort.js 希 ...
- [转][solr] - 索引数据删除
删除solr索引数据,使用XML有两种写法: 1) <delete><id>1</id></delete> <commit/> 2) < ...
- splay专题复习——bzoj 3224 & 1862 & 1503 题解
[前言]快要省选二试了.上次去被虐出翔了~~这次即便是打酱油.也要打出风採! 于是暂停新东西的学习,然后開始复习曾经的知识.为骗分做准备.PS:区间翻转的临时跳过,就算学了也来不及巩固了. [BZOJ ...
- Universal-Image-Loader源码分析(二)——载入图片的过程分析
之前的文章,在上面建立完config之后,UIl通过ImageLoader.getInstance().init(config.build());来初始化ImageLoader对象,之后就可以用Ima ...
- mysql常用备份命令和shell备份脚本
备份多个数据库可以使用如下命令:mysqldump -uroot -p123456 --databases test1 test2 test3 > /home/test/dump.sql; 恢复 ...
- laytpl js模板引擎
laytpl js模板引擎.laytpl是一款非常轻量的JavaScript模板引擎.地址:http://www.layui.com/laytpl/ 用法与handlebar.js类似,但是比较轻量级 ...
- Android Fragment(三)ListFragment简单介绍以及Fragment之间通信
一.Fragment通信简单介绍:Fragments之间是不能够直接通信的,他们之间的通信是通过Activity这个中间件来通信的, 为了让Fragment跟它的Activity通信,我们可以在Fra ...