数字签名与“公钥制作者之谜“:信任从何而来

数字签名与"公钥制作者之谜":信任从何而来

网络安全技术随笔 · 密码学基础篇

摘要

数字签名是现代信息安全体系的基石技术,广泛应用于软件分发、电子合同、HTTPS 传输、代码签名等场景。然而一个常被忽视却至关重要的问题是:数字签名在密码学层面只能证明"消息由持有对应私钥者签署",却无法证明"公钥归属于声称的那个人"。本文从数字签名的工作原理出发,剖析"无法确认公开密钥的制作者"这一经典问题的成因,并介绍 PKI/CA 体系与信任网络等主流解决方案。


一、数字签名能做什么

数字签名基于非对称密码体制(如 RSA、ECDSA、EdDSA)。一对密钥由两部分组成:

  • 私钥:由签名者秘密保管,用于生成签名;
  • 公钥:公开发布,用于验证签名。

签名与验证的流程可以简化为:

  1. 签名:发送方用私钥对消息(通常是消息摘要)进行签名运算,得到签名值;
  2. 验证:接收方用发送方的公钥对签名值进行验算,判断签名是否与消息匹配。

通过这一机制,数字签名提供三个核心安全性质:

性质 含义 依赖条件
完整性 消息在传输中未被篡改 公钥真实可靠
认证性 消息确实来自私钥持有者 私钥未被泄露
不可否认性 签名者难以否认自己的签名行为 上述条件同时成立

关键点在于:这三个性质都建立在一个隐含前提之上------验证方手中的公钥确实是签名者的公钥


二、"无法确认公开密钥的制作者"是什么意思

公钥本身是公开数据,可以自由复制、传播、存储。公钥上不携带任何与真实身份绑定的信息------它只是一串比特,没有"身份证"。

因此,当我们验证一份签名时,密码学只能告诉我们:

这份签名是用某个特定公钥对应的私钥生成的。

它无法告诉我们:

这个公钥背后站着的是谁?它的主人是真实可信的个人、组织,还是一个冒充者?

这就是"无法确认公开密钥的制作者"的准确含义:签名算法保证密钥对的数学对应关系,却保证不了公钥与真实身份之间的归属关系。


三、攻击场景:公钥替换

为了直观理解问题的严重性,考虑如下攻击流程:

假设攻击者 Mallory 想要冒充合法用户 Alice 向 Bob 发送伪造的签名消息:

  1. Mallory 自行生成一对全新的密钥对(公钥 K_M、私钥 K'_M);
  2. Mallory 将 K_M 伪称为"Alice 的公钥"发布或传递给 Bob;
  3. Mallory 用 K'_M 对伪造内容进行签名并发送给 Bob;
  4. Bob 用手中那份"声称是 Alice 的公钥"(实为 K_M)验证签名------验证通过
  5. Bob 据此误认为消息确实来自 Alice。

整个过程没有任何密码学环节被"破解",纯粹是信任链条在密钥分发环节被切断。可见:验证通过只能证明签名与所用公钥匹配,无法证明公钥主人的身份可信。

这类攻击在密码学中被称为**中间人攻击(Man-in-the-Middle Attack)**的一种典型形态:攻击者在通信双方之间插入自己的密钥材料,使双方都误以为在与对方直接通信。


四、解决方案:PKI 与 CA

既然公钥本身无法自证身份,业界的主流解法是引入可信第三方来完成"公钥---身份"绑定,这就是 PKI(Public Key Infrastructure,公钥基础设施)。

4.1 数字证书

数字证书(Digital Certificate)是 PKI 的核心载体,本质上是 CA 对"公钥 + 身份信息"的签名背书。一张典型的 X.509 证书包含:

  • 主体(Subject)的身份信息:姓名、域名、组织名称等;
  • 主体的公钥;
  • 证书有效期、序列号等元数据;
  • CA 对上述内容的数字签名

证书的公信力来自 CA 的签名:只要 CA 可信,且证书未被篡改(可用 CA 公钥验证),就可以认为证书中绑定的"公钥---身份"关系是可信的。

4.2 证书链与信任锚

现实世界的 PKI 采用分层结构:

  1. 根 CA(Root CA):处于信任金字塔顶端,其自签名证书通常预置于操作系统、浏览器等信任库中,作为"信任锚(Trust Anchor)";
  2. 中间 CA(Intermediate CA):由根 CA 签发证书,负责向下签发实体证书,降低根 CA 私钥的使用频率与泄露风险;
  3. 终端实体证书:签发给具体的网站、软件厂商或个人。

验证一张终端证书时,验证方沿证书链逐级向上验证签名,最终追溯到已受信任的根证书。只要信任锚可信,整条链上的信任关系就可以被继承。

4.3 CA 体系解决的核心问题

问题 CA 体系的应对
公钥与身份如何绑定 CA 通过签发证书完成绑定
如何防止公钥被替换 证书由 CA 签名,篡改即失效
信任从何开始 操作系统/浏览器内置根证书作为信任锚

需要强调的是:PKI 并没有消除信任问题,而是把分散的信任集中到了 CA 身上。CA 的安全运营、证书签发审核、吊销机制(CRL/OCSP)等,都是整个信任体系的重要组成部分。历史上曾发生过 CA 被入侵或违规签发证书的事件,这也正是证书透明度(Certificate Transparency)等机制被引入的原因。


五、替代方案:信任网络(Web of Trust)

在没有统一 CA 体系的场景(如 PGP/GPG 邮件加密)中,采用了另一种思路------信任网络(Web of Trust)

  • 每个用户自行签发并分发自己的公钥;
  • 用户之间通过见面核验等方式互相为对方的公钥签名背书
  • 信任不是来自单一权威,而是来自"我信任的人信任的人......"的传递关系。

信任网络的哲学与 PKI 不同:PKI 是中心化权威背书 ,Web of Trust 是去中心化的熟人担保 。但二者殊途同归------都在回答同一个问题:公钥到底是谁的?


六、现实中的应用场景

理解这一机制后,很多日常安全现象就豁然开朗:

  • HTTPS 证书:浏览器验证网站证书链,防止中间人替换网站公钥进行窃听;
  • 软件/驱动签名:操作系统验证发布者签名,防止恶意程序伪装成官方软件;
  • 电子邮件 S/MIME:验证邮件发送者的身份与内容完整性;
  • 代码提交签名:Git 提交的 GPG 签名,证明提交来自声称的开发者;
  • 电子合同/电子政务:基于可信数字证书实现不可否认的法律效力。

七、总结

  • 数字签名在密码学上保证密钥对的数学对应关系,这是坚实的;
  • 公钥与真实身份之间的归属关系属于信任问题,密码学本身无法解决;
  • "无法确认公开密钥的制作者"正是对这一信任缺口的准确概括;
  • 工业界的标准答案是 PKI/CA 证书体系,通过可信第三方的签名背书,把"公钥---身份"绑定关系固化下来;
  • 无论采用何种方案,信任总需要一个起点:要么是预置的根证书,要么是熟人之间的相互担保。

理解这一点,是正确使用和评估数字签名、PKI 及其他信任机制的前提。


本文为技术原理科普文章,内容基于公开的密码学与 PKI 标准知识整理,仅供参考。

相关推荐
keven-wang1 小时前
密码学-对称加密和非对称加密
网络·密码学
keven-wang1 小时前
密码学-数字证书及其他相关概念
网络·密码学
xixiaoyunya2 小时前
存储备份系统选型指南:从企业级到轻量级方案的技术分析
网络
Java小白笔记2 小时前
FlClash TUN 栈模式选择与验证指南
网络·网络协议
Black蜡笔小新2 小时前
运维提效!视频汇聚平台EasyCVR视频质量诊断,掉线花屏自动预警
运维·安全·音视频
清水白石0082 小时前
ThreadPoolExecutor 线程越多越快?从 30ms HTTP 调用讲透并发数、连接池与背压
网络·网络协议·http
IT小白杨2 小时前
eBay多账号如何应对关联判定:主体、收款、IP、环境四层配置清单一次讲清
java·网络·网络协议·tcp/ip·自动化·指纹浏览器
あ-3 小时前
企业 DevOps + 协同办公 + 可观测性 + 网络基础设施平台
运维·网络·devops
数据知道3 小时前
哈希与密码存储——bcrypt、Argon2、盐值与彩虹表
网络·算法·安全·网络安全·密码学·哈希算法