• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
fyyy94
博客园    首页    新随笔    联系   管理    订阅  订阅
比特币学习之密码学原理
  1. 加密货币并非信息加密,比特币的交易都是公开的
  2. 主要用到hash和签名

哈希函数的性质

  1. Collision resistance

    • 强抗碰撞
    • 弱抗碰撞
    • 没有任何一个hash函数能在理论上完全满足抗碰撞性,只能在实践中检验
  2. 压缩性质:不限位数的输入 -> 有限位数的输出

  3. 单向不可逆(hiding)

    • 由上面的压缩性质可知,一般不能倒推
      • 要求输入空间很大(否则可以蛮力求解),另外要满足均匀分布
  4. puzzle friendly

    • 哈希值计算不便预测,比如想要得到一个在(a,b) 范围内的哈希值,只能计算试验,而不能通过某种数学方法估计某个输入能得到符合条件的哈希
    • 应用:挖矿过程中 要找到Nonce, 使得H(block_header) <= target, target 由比特币系统指定,注意Nonce 是 block_header的一个域
      • 这个过程称为Proof of work, POW
      • 挖矿很难,验证容易

Collison(碰撞定义) \(x \neq y , h(x) = h(y)\)

实际上碰撞在所难免,因为输入空间远远大于输出空间(定义域无限,值域有限可列)。 在工程上 抗碰撞主要是指没有很好的办法能够人为制造碰撞

哈希可用于校验,作为文件指纹。(比如经典的md5)。

  1. sealed envelope.
    • 预测结果提前公布,可能会对现实结果造成影响(正面或者反面)
    • 为了不让预测结果提前公开,同时也证明已预测过(没有被篡改),即先把预测结果存放在公正机构,等真实结果出来后验证预测结果是否正确

电子世界中,可以先对“预测结果” 哈希,公布哈希。真实结果出来后,可以验证预测结果,同时哈希函数的性质保证了预测结果没有被篡改

当输入空间比较有限时,预测结果的哈希可以通过暴力枚举倒推出预测结果,从而会引起2.1. 的问题,因此一般会考虑在输入的值后面加入一个随机数,以扩大枚举空间,进而保证Hiding性质。随机数叫做Nonce, 求得结果即H(x | nonce)

比特币中使用的哈希: SHA 256 (Secure hash algorithm), 其能满足以上性质

签名部分

比特币没有中心化机构,没有“账户概念”, 比特币系统中创建账户即创建公钥+私钥对

非对称加密、对称加密

对称加密需要通信双方知道秘钥,但是如果秘钥在网络上传输的话,则秘钥可能被窃听,从而信息可能被解密。(对称加密需要1个秘钥)

  • 因此需要一个安全的手段传输秘钥

非对称加密:使用公钥加密,使用私钥解密(接收方的公钥+私钥),这个就好比银行账号和银行密码一样,转账只需要银行账号,而查看余额则需要密码,非对称加密解决了秘钥传输不方便的问题

比特币系统中,发布交易使用私钥签名,而系统中使用公钥检验签名的有效性

  • 比特币的公私钥是防碰撞的,只需要选取的随机源足够好(生成+签名)
    • 私钥不可通过公钥推导
    • 通过暴力枚举匹配公钥,进而得到私钥的概率非常低
扩展:
非对称加密的缺点:
1. 效率特别低,对称加密比非对称加密效率高几个数量级(几千倍)
2. 加密数据长度受限,与加密算法有关

现在主流使用混合加密模式,即将对称加密的秘钥通过非对称加密方式传输,
大量的数据使用对称加密传输,这样可以兼顾安全和效率

公钥、私钥对产生方法:

比特币中,哈希使用SHA256;秘钥生成使用32B的随机数作为私钥,然后通过ECDSA 生成公钥,再经过hash 得到比特币地址

posted on 2025-09-01 18:35  feiyangyy94  阅读(13)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3