哈希与数字签名

加密货币的核心不是”加密”账本——账本全公开——而是用密码学确权:哈希函数为数据生成不可伪造的指纹,数字签名让私钥持有者唯一证明资产所有权,二者支撑起无需第三方信任的产权系统。

哈希函数

哈希函数把任意长度输入压缩为固定长度输出。密码学安全的哈希须满足:

性质含义若被破坏
确定性同输入必得同输出验证无从谈起
单向性(preimage resistance)由哈希值反推输入计算不可行地址派生失效
抗碰撞性(collision resistance)找到两个同哈希输入计算不可行默克尔树可被伪造
雪崩效应输入改 1 bit,输出约半数 bit 翻转结构可被预测
puzzle-friendly无法比穷举更快找到命中目标的输入PoW 不成立

比特币全链采用 SHA-256:区块头哈希逐块串联成链,交易逐层哈希为 默克尔树,PoW 挖矿则寻找 nonce 使区块头哈希低于目标阈值——这正是 共识机制 中工作量证明的数学根基。

import hashlib
 
# 雪崩效应:末字符变一位,输出完全无关
h1 = hashlib.sha256(b"send 1 BTC to Alice").hexdigest()
h2 = hashlib.sha256(b"send 1 BTC to Alicf").hexdigest()
print(h1[:16], h2[:16])  # 两个前缀无任何统计关联

puzzle-friendly 保证矿工无法预测哪个 nonce 有效,只能暴力尝试——算力竞争的公平性正建立在此之上。

非对称密码学:私钥与公钥

比特币使用椭圆曲线 secp256k1:

  • 私钥:随机 256-bit 整数 ,取值空间约 ,穷举不可行
  • 公钥:, 为曲线上固定的生成点

标量乘法容易,逆运算(椭圆曲线离散对数问题,ECDLP)计算不可行——公开 与 也推不出 。这个不对称性是全部安全性的来源。

与传统”加密通信”不同,链上转账不加密任何内容,签名解决的是授权:证明”这笔花费某笔 UTXO 的交易,确由对应私钥的持有者发起”。

数字签名:ECDSA 与 Schnorr

签名与验签

签名(私钥 、消息哈希 ):

  1. 取一次性随机数 (nonce),计算 ,取
  2. 签名即二元组

验签只需公钥 、 与 联立检验一个曲线等式,全程不接触私钥。签名绑定交易哈希,改动任何一个字节即失效——这是防双花的第一道防线,第二道是区块链原理中的全局账本确认。

ECDSA 的软肋

  • nonce 复用即泄私钥:两笔交易用同一 ,由 解出 ,再代回任一签名即解出 。2010 年 Sony PS3 因 硬编码被反推私钥,2013 年 Android 钱包因弱随机数被盗
  • 延展性(malleability): 与 均有效,Mt. Gox 曾以”交易被改写”为提币失败开脱
  • 无原生聚合:多签只能拼接 N 个签名,链上暴露全部参与方

Schnorr 与 Taproot

2021 年 Taproot 升级(BIP-340)为比特币引入 Schnorr 签名:

维度ECDSASchnorr
签名方程 与 以 非线性耦合,全程线性
多签暴露 N 个公钥与签名MuSig2 聚合后与单签不可区分
延展性存在签名唯一,无
批量验证困难线性可加,天然支持

线性性是关键:多方各自生成份额后可直接相加,聚合成一个合法签名——多签地址在链上与单签无异,隐私与区块空间双赢。

从公钥到地址

地址是公钥的哈希摘要,派生全程单向:

私钥 d (256 bit)
  → 公钥 Q = dG (椭圆曲线点, 512 bit)
  → SHA-256(Q) 再 RIPEMD-160 (160 bit)
  → 加版本前缀 + 校验和, Base58Check 编码 → 1 开头地址
    (SegWit 改用 Bech32 编码 → bc1 开头)
  • 地址只暴露 160-bit 哈希:在花费之前,攻击者面对的是哈希原像难题,连公钥都拿不到
  • 双哈希(SHA-256 + RIPEMD-160)来自不同算法族,单一算法被破不致全盘崩溃,20 字节也兼顾了可抄写长度
  • 以太坊走另一条路:Keccak-256(未压缩公钥) 取后 20 字节,0x 开头,EIP-55 以大小写混合嵌入校验和(见 以太坊与智能合约)

漏斗方向不可逆:从地址推不出公钥(哈希单向),从公钥推不出私钥(ECDLP)。这也解释了”每次收款用新地址”的最佳实践——公钥仅在花费 UTXO 时才被迫暴露。

安全边界

  • 私钥即所有权,没有密码找回机制;托管、备份与助记词派生见 钱包与私钥管理
  • 实战失窃很少源于数学被破,几乎都是工程事故:弱熵源、nonce 复用、侧信道,详见 加密货币风险与安全
  • 密码学只保护”授权”环节,保护不了”人”——钓鱼与社会工程不在其射程内