详细介绍:公钥和私钥的应用
公钥和私钥的核心关系是:用公钥加密的信息,只能用对应的私钥解密;用私钥签名的信息,可用对应的公钥验证。
核心原则:不可逆的操作
想象一对数学上紧密关联的钥匙:
- 公钥通过: 能够比作一个打开的挂锁。任何人都可以拿到它来“锁上”箱子。
- 私钥: 则是这把挂锁唯一的钥匙。只有持有者才能用它来“打开”箱子。
基于该比喻,我们来详细讲解它们的用法。
主要用途一:加密通信(保证机密性)
这个场景的目的是:确保只有预期的接收者才能阅读信息内容。
目标:Alice想发送一条机密信息给Bob,确保即使被他人截获,也无法阅读。
步骤:
- 密钥准备:Bob生成自己的公钥和私钥对。他将公钥公开给所有人(比如放在个人网站上),并严格保管好自己的私钥。
- 加密:Alice获取Bob的公钥,并用它来加密要发送的明文信息。加密后得到密文。
- 发送:Alice将密文发送给Bob。
- 解密:Bob收到密文后,使用自己保管的私钥进行解密,还原出原始信息。

关键点:即使攻击者截获了密文,并且也拥有Bob的公钥,他依然无法解密,基于解密必须使用Bob的私钥。这就解决了对称加密中密钥分发的难题。
主要用途二:数字签名(保证真实性、完整性和不可否认性)
这个场景的目的是:验证信息的来源是否可信,以及信息在传输过程中是否被篡改。
目标他发布的,且内容未被修改。就是:Bob想发布一份公告,并让所有人都能验证这份公告确实
步骤:
- 生成签名:Bob先对公告原文计算一个哈希值(一种数字指纹),然后使用自己的私钥对这个哈希值进行加密,生成的东西就是数字签名。
- 发布:Bob将公告原文和数字签名一起发布出去。
- 验证:任何人(比如Alice)收到公告和签名后,进行以下管理:
- a. 用Bob公开的公钥去解密那种数字签名,得到一个新的哈希值(H1)。
- b. 对收到的公告原文计算同样的哈希值,得到另一个哈希值(H2)。
- 两者完全相同,则验证通过。就是c. 比较H1和H2。要
过程图解与特点:
验证通过意味着什么?
- 真实性: 信息确实来自Bob,基于只有Bob的私钥才能生成能用其公钥解开的签名。
- 完整性: 信息在传输中未被篡改,因为哪怕改动一个标点,计算出的H2也会与H1不同。
- 不可否认性: Bob事后无法否认他发送过这条信息,缘于只有他拥有生成该签名的私钥。
总结对比表
| 用途 | 操作 | 目的 | 类比 |
|---|---|---|---|
| 加密通信 | 用接收方的公钥加密 -> 用接收方的私钥解密 | 保证机密性 | 用对方的挂锁锁上箱子,只有对方有钥匙打开。 |
| 数字签名 | 用发送方的私钥签名 -> 用发送方的公钥验证 | 保证真实性、完整性、不可否认性 | 在文件上盖一个独特的蜡封印章,任何人都能够用公开的印模来验证印章的真伪。 |
实际应用举例
- HTTPS/SSL: 网站将其公钥放在证书中。你的浏览器用该公钥加密一个会话密钥,网站用私钥解密,从而建立安全连接。同时,浏览器用证书颁发机构的公钥验证网站证书的签名,确认你访问的是真实网站。
- 比特币/加密货币: 你的比特币地址是公钥的衍生品。当你发起转账时,用你的私钥对交易进行签名。矿工用你的公钥验证签名,确认交易高效。
- 软件更新: 软件开发商用私钥对更新包签名。你的电脑用内置的公钥验证签名,确保下载的更新包来自官方且未被植入恶意代码。
浙公网安备 33010602011771号