什么是数字签名
理解身份验证与加密的区别,以及签名的生命周期
什么是数字签名 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。
欢迎
数字签名是手写签名的密码学等价物——但它可以通过数学方式验证,并且没有私钥就无法伪造。
签名为何不同于加密
加密:转换数据,使其只有接收方能够读取。签名:证明数据来自您,并且未被篡改。加密使用接收方的公钥;签名使用发送方的私钥。
三项安全属性
身份验证:确认签名者的身份。完整性:证明消息在签名后未被篡改。不可否认性:签名者无法否认自己签署过该消息——私钥唯一属于签名者。
先签名后加密与先加密后签名
先加密后签名通常更安全:对密文签名,使签名恰好覆盖经过身份验证的内容。先签名后加密可能会向主动攻击者暴露元数据。
先哈希后签名
绝不要直接对原始消息签名(RSA 无法处理过大的消息)。应改为:
1. H = Hash(message)
2. signature = Sign(private_key, H)
哈希会将任意消息缩减为固定大小的输入,供签名算法使用。
签名验证
验证者拥有:消息、签名以及签名者的公钥。
1. H = Hash(message)
2. H' = Verify(public_key, signature)
3. 如果 H == H',则接受;否则拒绝
RSA 签名示例
Sign: sig = hash^d mod n (exponentiate with private d)
Verify: hash = sig^e mod n (exponentiate with public e)
Compare recovered hash with computed hash of message.
签名与 MAC 对比
MAC 需要共享密钥——双方都必须知道该密钥。签名使用非对称密钥——任何拥有公钥的人都可以验证。签名提供不可否认性;MAC 不提供。
DSA 概览
DSA(数字签名算法,1994 年)利用离散对数问题的计算困难性。它会为每个签名生成随机的一次性数 k。如果 k 被重复使用或可预测,私钥就会暴露。
一次性数重复使用灾难(PS3 黑客攻击)
Sony PlayStation 3 在 ECDSA 中使用了恒定的 k=1。黑客从两个不同的签名中提取出了私钥。这样,他们就能够为任意固件签名,从而绕过所有安全防护。
证书签名
X.509 证书本质上就是数据加上 CA 使用私钥生成的数字签名。当您的浏览器验证证书时,它会使用信任存储中 CA 的公钥检查 CA 的签名。
快速检查
哪项属性可以确保签名者之后无法否认自己签署过某份文档?
回顾
数字签名让数字世界值得信任。接下来我们将深入学习 RSA、DSA 和 ECDSA 签名方案。
常见问题解答
「什么是数字签名」课时是免费的吗?
是的 — 「什么是数字签名」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。
「什么是数字签名」这节课中我会学到什么?
理解身份验证与加密的区别,以及签名的生命周期 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cryptology Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「什么是数字签名」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cryptology Academy 课中编写并运行代码吗?
能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。