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小节时再反向阅读本 ...
随机推荐
- windows注册表
如何导入与导出注册表 进入注册表编辑器,选择“文件”“导出”命令,打开“导出注册表文件”对话框.选择保存位置并为其取名,单击保存即可完成注册表的备份. 打开注册表编辑器,选择“文件”“导入”命令,打开 ...
- [PC]可用于Windows Server 2008 R2的Xbox One手柄、接收器驱动
让客厅里的Gen8可以玩FC和PS1游戏,折腾了半天,终于将Xbox One手柄驱动弄好: http://www.drvsky.com/Microsoft/Xbox_One.htm http://ww ...
- mariadb使用\s查看用户权限
今天出现一个问题就是:给zabbix用户赋予权限 语句如下: grant all on zabbix.* to 'zabbix'@'%' identified by 'zabbix' 按照这样的说法应 ...
- Spring-IOC RootBeanDefinition源码分析
GenericBeanDefinition是一站式的标准bean definition,除了具有指定类.可选的构造参数值和属性参数这些其它bean definition一样的特性外,它还具有通过par ...
- ethereumjs/ethereumjs-tx
https://github.com/ethereumjs/ethereumjs-tx A simple module for creating, manipulating and signing e ...
- android中如何获取指定目录下的图片
需要对指定目录的图片文件进行列表,借鉴了网上的方法,发现列表出来是所有的文件,这样用起来很不方便,在这里也没找到解决的办法,经过自己的进一步研究终于搞定,发上来给有用的同学.用下面这种方式能实现查询实 ...
- 【转】Python 可视化神器-Plotly Express
转自:https://mp.weixin.qq.com/s/FNpNJSMK5Vs8pwi0PbbBzw 说明:图片无法直接复制,请查看原文 导读:Plotly Express 是一个新的高级 Pyt ...
- python变量的引用,浅拷贝
python的变量是对象引用 l1和l2引用的相同的对象,所以会相互影响 元组不变的是引用的物理地址,如果引用的对象是可变的,那么远祖也会发生变化 但是t1[2]的id时钟没有发生变化 2 默认是浅拷 ...
- JavaScript基础注意点
1.每个语句结尾一定加上分号 2.JavaScript本身对嵌套{ }的层级没有限制,但是过多的嵌套无疑会大大增加看懂代码的难度.遇到这种情况,需要把部分代码抽出来,作为函数来调用,这样可以减少代码的 ...
- 剖析管理所有大数据组件的可视化利器:Hue
日常的大数据使用都是在服务器命令行中进行的,可视化功能仅仅依靠各个组件自带的web界面来实现,不同组件对应不同的端口号,如:HDFS(50070),Yarn(8088),Hbase(16010)等等, ...