数字签名又称之为公钥数字签名,是一种类似于写在纸上的物理签名。数字签名主要用于数据更改的签名者身份识别以及抗抵赖。数字签名包含三个重要特性:
l 只有自己可以签署自己的数字签名,但是他人可以验证签名是否是你签发;
l 数字签名需要和具体的数字文档绑定,就好比现实中你的签名应该和纸质媒介绑定;
l 数字签名不可伪造;
通过非对称加密机制可以较容易实现上述三种特性。
首先,需要生成个人的公私钥对:(sk, pk) := generateKeys(keysize),sk私钥用户自己保留,pk公钥可以分发给其他人其次,可以通过sk对一个具体的message进行签名:sig := sign(sk, message) 这样就得到了具体的签名sig最后,拥有该签名公钥的一方能够进行签名的验证:isValid := verify(pk, message, sig)在区块链体系中每一条数据交易都需要签名,在比特币的设计过程中直接将用户的公钥来表征用户的比特币地址。这样在用户发起转账等比特币交易时可以方便的进行用户交易的合法性验证。
数字签名就是在信息后面加上另一段内容,作为发送者的证明并且证明信息没有被篡改。一般是发送者将信息用哈希算法处理得出一个哈希值,然后用私钥对该哈希值进行加密,得出一个签名。然后发送者再将信息和签名一起发送给接收者。接收者使用发送者的公钥对签名进行解密,还原出哈希值,再通过哈希算法来验证信息的哈希值和解密签名还原出来的哈希值是否一致,从而可以鉴定信息是否来自发送者或验证信息是否被篡,如下图所示。
image相关知识:数字证书和认证中心
数字证书(Digital Certificate)又称“数字身份证”、“网络身份证”是经认证中心授权颁发并经认证中心数字签名的包含公开秘钥拥有者及公开秘钥相关信息的电子文件,可以用来判别数字证书拥有者身份。数字证书包含:公钥、证书名称信息、签发机构对证书的数字签名以及匹配的私钥证书可以存储在网络中的数据库中。用户可以利用网络彼此交换证书。当证书撤销后,签发此证书的CA仍保留此证书的副本,以备日后解 决可能引起的纠纷。
认证中心(Certificate Authority) 一般简称CA, CA一般是一个公认可信的第三方机构,其作用主要是为每个用户颁发一个独一无二的包含名称和公钥的数字证书。CA解决了电子商务中公钥的可信度问题:负责证明“我确实始我”,CA是受信仟的第三方,公钥的合法性检验,CA证书内容包括:证书持有人的公钥、证书授权中心名称、证书有效期、证书授权中心的数字签名。
CA证书用例-Https访问网站:
*客户端通过https向服务器发安全链接请求
*服务器用私钥加密网页内容,同CA证书一并发给客户端
*客户端会根据CA证书验证是否合法:
*如果验证失败,客户端弹出警告信息
*如果验证通过,客户端使用CA证书中的公钥向服务器发送加密信息
image区块链资源汇总
区块链学习资源大汇总
http://www.nextblockchain.top/topics/6
区块链常用数据BoltDB数据库源码解析
http://www.nextblockchain.top/categories/boltdb
网友评论