一、为什么数字签名是区块链技术的根基技术之一
1、区块链通过分布式账本记账----我们什么时候和谁交易了多少钱(或扩展,进行了合约行为),都会记在大家的账本上
2、区块链又是匿名交易的----发送和验证交易的时候,并不需要我们的真实身份
问题:匿名交易,系统怎样确定是我发送的交易呢?
二、数字签名实现的是什么
数字签名是一种利用密码学的技术保证身份验证的办法。
1、用到的密码学技术是:哈希算法和非对称加密算法
目的都是用最低的成本、最高的安全性加密
(1)对一个人加不可破解的密:通过哈希算法,同样的输入一定会有同样的输出。但用输出要想还原输入则不可能,改动一点点,输出就会完全不一样,且毫无规律。
(2)对很多人加密--公钥、私钥--通过非对称加密的办法生成一对公开密钥和私有密钥。私有密钥自己保管,谁都不告诉,但是公开密钥公开给所有人知道。所有人都可以拿公开密钥来加密个信息,但是大家互相之间谁也不知道别人说了什么,因为只有我拥有私有密钥的人才能解密。
2、身份验证:就一项内容、行动等等,进行签名确认,签名与内容共存,签名者无法抵赖,内容也无法篡改
三、数字签名是怎么实现的
例如:
A企业签署“A欠B银行贷款100”-->哈希加密aaa-->私钥加密-->数字签名@@@
B银行(1)用已知的“A欠B银行贷款100”哈希出结果aaa
(2)用私钥对应的公钥解@@@得到aaa
(1)与(2)一致True
ps1疑问:共识机制(pow等投票方法)似乎并不是必须的,区块链解决在不可信信道上传输可信信息、价值转移的问题,共识机制解决区块链如何在分布式场景下达成一致性的问题
ps2:所以在加密下比特币不会被盗,比特币被盗一定是丢失了私钥
四、具体运用部署场景
例:电子证照运用---收发证系统
1、用户A由App向发证机构B请求签发电子证照(apk布节点---参与节点通过区块链客户端完成会员注册后,系统会自动完成注册节点公私钥的分配,并生产合法的数字身份即交易地址)。
2、发证机关签名,通过请求信息获取用户A(持证人)的公钥(地址)。
3、发证机构用自己的私钥和用户A的公钥加密,平台输出该笔交易的Hash值,向全网广播用户A的发证记录,记录证件信息的区块编号,写入区块链。其他机构收到了发证机构B的广播信息,并对用户A的身份信息进行确认。
4、持证人在App上验证发证机构签名,确保信息未被篡改,在区块链上用私钥解密完成收证,发证机构公钥解密作为存证。
其中的权限---分布式记账节点作为区块链底层平台的核心节点,由政府部门统一部署和维护,并有这些节点执行整个区块链的共识记账功能,其他参与节点无权成为分布式记账节点。