区块链原理与技术
  • 区块链原理与技术
  • 比特币密码学基础
    • 密码学简介
    • 哈希函数
    • 数字签名
  • 比特币数据结构
    • 哈希指针
    • 默克尔树
    • 数据结构
  • 比特币交易模型
    • 身份确认
    • 交易服务
  • 比特币共识机制
    • 共识机制
    • 区块链的共识机制
  • 挖矿&脚本
    • 挖矿
    • 比特币脚本
    • 多重签名
  • 区块链分叉
    • 硬分叉与软分叉
  • 问题
  • 比特币匿名性
    • Page 1
  • 以太坊数据结构
    • 以太坊概述
    • 以太坊账户
    • 以太坊状态树
  • 交易树&收据树
    • 以太坊交易树&收据树
    • 布隆过滤器
    • GHOST协议
  • 以太坊:从PoW到PoS
    • 工作量证明PoW(节能)
    • 权益证明PoS
Powered by GitBook
On this page
  • 加密货币中的公钥和私钥
  • 数字签名方案
  1. 比特币密码学基础

数字签名

Previous哈希函数Next哈希指针

Last updated 4 months ago

银行账户是中心化账户管理,比特币没有账户,但是用户有自己的钱包。用户自己开设钱包,通过使用一对独特的<public key,secret key>来控制。<pk,sk>来源于非对称加密。

加密货币中的公钥和私钥

数字签名方案

由三个算法组成:

  • (sk, pk) = generateKeys(keysize)

    把keysize作为输入,来产生一对公钥和私钥;私钥被安全保存,并用来签名一段信息;公钥pk是人人都可以找到的,拿到它可以用来验证签名。

  • sig:=sign(sk, msg)

    把一段消息和私钥作为输入,输出是签名

  • isValid:=verify(pk, message, sig) 验证过程

    通过把一段消息和签名消息与公钥作为输入;如果返回是真,证明签名属实;否则,证明签名的消息为假。

要求两个性质有效:

  • 有效的签名可以通过验证

  • 签名不可以伪造

实践中,比特币使用的签名算法是随机的,需要良好的随机源。对要签名的信息message大小有限,所以使用哈希函数,因为哈希函数的输出是定长的。

比特币中公钥即身份,比特币中用户的身份:address := Hash(pk || x) ,比特币用户开一个账户则是生成一对公私钥对。

比特币因此可以提供去中心化身份管理,只要生成一对新的公私钥对就可以随机定制新的随机身份。具有匿名性,一个人可以有多个公私钥对,随便使用哪一个身份都可以转帐。