3.3 公钥密码学(Public-key Cryptography)


3.3 公钥密码学(Public-key Cryptography)

本节摘要:公钥密码学(非对称加密)用一对数学上关联的密钥——公钥公开、私钥保密,实现加密解密与签名验签两种模式,是区块链身份系统的技术基础。本节讲解密钥对的数学直觉、两种使用模式、以及椭圆曲线密码学(ECC)为何取代 RSA 成为链上标准。

本节地图

阅读完本节,你应当能够:

  1. 解释公钥与私钥的数学关联关系
  2. 区分"公钥加密-私钥解密"与"私钥签名-公钥验签"两种模式
  3. 说明 ECC 相比 RSA 的优势
  4. 描述从私钥推导地址的过程
  5. 理解"私钥即控制权"这一核心安全原则

问题与直觉:从"一把钥匙"到"一对钥匙"

传统对称加密像一把锁配一把钥匙:加密解密用同一把,问题是怎么把钥匙安全送到对方手里——送钥匙的过程恰恰最容易被截获。这叫"密钥分发问题"。

公钥密码学换了个思路:每个用户有一对数学上绑定的钥匙。公开的"公钥"像一把任何人都能用的锁,保密的"私钥"是唯一能打开它的钥匙。别人要给我发密信,用我的公钥上锁;只有我的私钥能开。钥匙不用送了——公钥本来就是公开的。区块链更进一步:这把"钥匙对"直接成了身份本身。

核心原理:两种模式

模式一:加密/解密(机密性)

  • 发送方用接收方的公钥加密数据
  • 接收方用自己的私钥解密
  • 意义:只有私钥持有者能读,实现机密性

模式二:签名/验签(认证与不可否认)

  • 发送方用自己的私钥对数据签名
  • 接收方用发送方的公钥验证签名
  • 意义:证明"这数据确实是私钥持有者发出的",且对方无法否认

关键直觉:公钥密码的两把钥匙不是"两把不同的锁",而是一对数学孪生——公钥可以公开,是因为从公钥推导私钥在计算上不可行(离散对数/大数分解难题)。安全建立在"算不出来",而不是"藏起来"。

数学直觉:ECC 是什么

椭圆曲线密码学基于椭圆曲线上的离散对数难题:给定曲线上的点 P 和整数 k,计算 kP 很容易;给定 P 和 kP,反推 k 极难。私钥就是一个随机大整数 k,公钥就是 kP(一个点)。比特币、以太坊都基于 secp256k1 曲线。

工程实践要点:ECC vs RSA 与地址生成

为什么链上首选 ECC

维度 RSA ECC
密钥长度 2048~4096 bit 256 bit
同等安全性密钥更短
计算速度
签名大小 小(64 字节)
链上应用 历史/兼容场景 比特币、以太坊等主流

ECC 在相同安全强度下密钥短得多、签名小得多、速度快得多——链上数据宝贵,签名越小越好,所以 ECC 一统江湖。

从私钥到地址的链路

  1. 随机生成 256 位私钥
  2. 私钥经 secp256k1 椭圆曲线运算得到公钥(33/65 字节)
  3. 公钥经 SHA-256 → RIPEMD-160 → 加版本前缀与校验 → Base58/bech32 编码 → 得到地址

地址是公钥的"压缩摘要"——从地址反推公钥、从公钥反推私钥,每一步都不可行。所以地址可以放心公开。

⚠️ 常见坑:把"地址"当"账号"随便给别人没问题,但私钥泄露 = 资产归零。链上没有"忘记密码找回"——私钥丢了,谁也帮不了你(详见 3.6)。

💡 关键直觉:公钥密码学在链上最重要的应用不是"加密",而是"签名"——公有链的交易数据本身大多公开,不需要加密;真正天天在用签名证明"这笔交易是你授权的"。

深入:密钥对的数学基础

椭圆曲线密码的安全性建立在椭圆曲线离散对数问题上:给定曲线上的点 G(基点)和一个整数 k,计算 P = k×G 很容易(点乘法,毫秒级);但给定 P 和 G,反推 k(离散对数)在计算上不可行。

这个"正向容易、逆向极难"的不对称性,正是公钥密码学的核心:私钥 k 是秘密,公钥 P 可以公开,因为从 P 推 k 做不到。RSA 则依赖大整数分解难题(两个大素数相乘容易,从乘积反推因子极难)。

理解这一点,就理解了为什么"公钥可以公开"不是约定而是数学——公开公钥不泄露私钥,是因为求解难度在数学上不可行,与道德、法律、运营都无关。

密钥对的安全使用实践

实践 说明 风险点
私钥离线生成 在无网设备上生成密钥对 在线生成可能被木马截获
私钥不联网 大额私钥存硬件钱包 联网设备易被攻击
公钥适度公开 公开公钥用于验签 无风险,但别当隐私保护
密钥轮换 定期更换大额密钥 老密钥泄露风险累积
备份加密 备份文件加密存储 明文备份=泄露

⚠️ 常见坑:把公钥当"加密邮箱"用。链上公钥更多用于验签而非加密——交易内容本来就公开,加密反而增加存储负担。链上的"机密性"需求远小于"认证性"需求。

对称加密 vs 非对称加密

把对称加密拉进来对比,才能凸显非对称的适用场景:

维度 对称加密 非对称加密
密钥 单密钥 公钥+私钥
速度 快(万倍级)
密钥分发 难(需安全信道) 易(公钥可公开)
典型算法 AES、ChaCha20 RSA、ECC
链上应用 钱包数据本地加密 签名、身份

实践建议:实际系统几乎总是"混合加密"——用非对称加密协商/交换会话密钥,再用对称加密加密大量数据(性能好)。这是 TLS、加密钱包的共同模式,理解它有助于看懂各类安全协议的通用结构。

公钥密码学在链上的完整应用场景

把本章与前面章节联系起来,公钥密码在链上有五类高频应用:

  1. 交易签名:私钥签名交易,节点公钥验签(最核心)
  2. 地址派生:私钥→公钥→哈希→地址(身份公开标识)
  3. 消息加密:链下通信中公钥加密消息(机密场景)
  4. 密钥交换:建立安全信道(钱包与服务的 TLS 类交互)
  5. 证明协议:ZKP、MPC 等高级协议的基础组件

洞察:链上 99% 的"你是谁"问题都由 ECC 签名解决,链下的"怎么保密通信"则由混合加密解决——公钥密码学是链上链下安全体系的共同地基

公钥密码学常见疑问速答

问:公钥可以公开,那私钥和公钥的关系会不会被反推?
不会。从私钥算公钥容易(椭圆曲线点乘),从公钥反推私钥在计算上不可行(离散对数难题)。这就是"单向性"——公开公钥不泄露私钥,是数学保证而非约定。

问:为什么不直接用私钥当地址?
地址是公钥的哈希压缩,更短、更易读、更安全(公钥本身也不暴露)。且地址不直接关联公钥,增加了一层隐私。

问:ECDSA 和 Ed25519 哪个好?
都是主流椭圆曲线签名。Ed25519 更现代(常数时间实现、防侧信道、签名更短),ECDSA 生态更广泛(比特币、以太坊在用)。新系统可优先考虑 Ed25519。

问:公钥密码会被量子计算攻破吗?
会——Shor 算法能破解离散对数与大数分解。行业已在研究后量子密码(格密码、多变量密码),未来迁移是确定性趋势,只是时间未定。

密钥管理的最佳实践

无论公钥密码学多精妙,密钥管理的疏漏都会前功尽弃。实践要点:

层级 实践 说明
生成 高质量随机源 弱随机=私钥可预测
存储 硬件钱包/离线介质 私钥不落联网设备
使用 最小暴露原则 能用签名别用明文传输密钥
备份 助记词分地保存 单点备份=单点风险
轮换 定期更换大额密钥 长期密钥风险累积
销毁 安全擦除旧介质 旧设备转卖前彻底清除

核心原则:密钥安全 = 生成(随机) + 存储(隔离) + 使用(最小暴露)三环节都要守住——任何一环失守,数学再强也白搭。

密钥对的可视化模型

把"公钥可公开、私钥保密"的关系画成图,建立直觉:

图:密钥对关系模型——私钥、公钥与地址

图:密钥对关系模型——私钥、公钥与地址

这张图浓缩了密钥体系的全部要点:私钥→公钥→地址,单向派生;公开的永远公开,保密的永保机密。把它记在脑子里,钱包安全就守住了一半。

公钥密码概念自检

用这组自检题巩固本节:

  1. 两种使用模式?(公钥加密-私钥解密;私钥签名-公钥验签)
  2. 为什么 ECC 优于 RSA?(密钥短、签名小、速度快)
  3. 地址从哪来?(私钥→公钥→哈希→地址)
  4. 为什么公钥可以公开?(离散对数难题,反推不可行)
  5. 链上最常用哪种模式?(签名,而非加密)

自检通过的标准:能向别人解释"为什么公钥公开不泄露私钥"——这是公钥密码学最核心也最反直觉的一点。

公钥密码学习小结

把公钥密码学压缩成一句话记忆卡:

"公开的不能推秘密,秘密的能推公开"——从私钥推导公钥容易(点乘),从公钥反推私钥不可行(离散对数)。这种"单向性"让公钥可以放心公开,也构成了区块链身份体系的数学根基。

对照实践记忆:**私钥=签名笔(能花币)、公钥=验章(验证是你花的)、地址=信箱(别人给你寄币)**。三个角色的关系想清楚,钱包体系就理解了。

公钥密码常见误区再澄清

本节最后再澄清两个高频误区:

误区一:"公钥加密更安全"。加密强度取决于算法与密钥长度,与"公钥/私钥"无关。公钥密码的优势是密钥管理简单(公钥公开),不是"更安全"。

误区二:"链上交易是加密的"。多数公有链交易不加密——数据公开是为了可验证。公钥密码在链上的主力是签名(认证),不是加密(保密)。保密与认证是两个不同目标,别混为一谈。

一节小结

  • 一对密钥:公钥公开、私钥保密,数学孪生不可互推
  • 两种模式:公钥加密保机密、私钥签名保认证
  • 数学基础:椭圆曲线离散对数/大整数分解,"正向易逆向难"
  • ECC 优势:密钥短、签名小、速度快,链上标准
  • 地址链路:私钥→公钥→哈希→地址,单向不可逆
  • 私钥即控制权:持私钥者拥有资产,泄露即归零
  • 安全实践:离线生成、不联网、加密备份、密钥轮换
  • 核心认知:链上高频用的是签名模式,不是加密模式

公钥密码学给了我们"身份"和"印章"。下一节看数字签名如何把"用私钥盖章"变成可验证、防抵赖的完整协议。

常见疑问

问:公钥能推出私钥吗?地址能推出公钥吗?
答:都是单向门。私钥推公钥是椭圆曲线乘法,正向计算毫秒级,反向求解是椭圆曲线离散对数问题,现有算力下不可行;公钥到地址再过一层哈希,同样单向。所以公开地址与公开公钥都不泄露私钥——但要注意顺序不可逆推:泄露私钥等于交出全部控制权,没有补救。

问:既然公钥可以随便公开,为什么地址不直接用公钥?
答:三个原因。其一,哈希缩短了长度,公钥六十五字节 vs 地址二十字节,转账手续费与存储都省;其二,哈希隐藏了公钥,在量子威胁未落地前多一层屏障(公钥只在花费那一刻暴露);其三,哈希带校验设计(如 Base58Check 版本字节),能拦截绝大多数手滑输错。地址是"公钥的舞台化名",既方便又留了后手。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U