请点击上方蓝字TonyBai订阅公众号!
大家好,我是Tony Bai。
在我们前面的密码学旅程中,我们一直专注于一个核心目标:保护信息,防止它被外人读取或篡改。无论是 AES 还是 HMAC,其目的都是让信息在两个或多个“自己人”之间安全流转。
现在,让我们换一个场景:
一家软件公司发布了一个重要的安全补丁。用户如何能确定这个补丁确实是官方发布的,而不是被黑客植入了木马的恶意版本?
一份具有法律效力的电子合同,签署方如何在事后无法否认“这份合同是我签的”?
你正在使用的 JWT (JSON Web Token),服务提供方如何能验证这个 Token 是由合法的认证服务器颁发的?
在这些场景中,信息的保密性可能并不重要(补丁程序是公开的),但信息的来源可靠性和不可否认性却至关重要。这便是数字签名 (Digital Signature) 的用武之地。
加密解决的是“不让别人看懂”的问题,而签名解决的是“证明是我干的”的问题。它们是同一枚硬币(非对称加密)的两个不同侧面。