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客户端。