杨斌
发布于 2025-08-27 / 8 阅读
0
0

加密通信与数字签名

非对称加密的数学算法本质上是“可逆”的,但方向由目的决定。


1. 数学本质:一个单向函数陷阱

非对称加密算法(如RSA、ECC)的核心是基于一个单向函数:正向计算很容易,但反向计算极其困难。

  • 一个简化的比喻:想象一种特殊的颜料混合。

    • 混合(加密/签名):将颜色A和颜色B混合成颜色C非常容易。

    • 分离(解密/验证):想从混合后的颜色C中还原出原始的颜色A和B,几乎是不可能的。

在非对称加密中,公钥和私钥在数学上是等价的,它们互为“逆操作”。这意味着:

  • 用公钥加密的数据,可以用私钥解密。

  • 用私钥加密的数据,同样可以用公钥解密。

既然数学上对称,为什么还要区分“加密”和“签名”?
答案是:为了不同的安全目的。我们人为地为这两把钥匙赋予了不同的“职责”,从而解决不同的安全问题。


2. 两种不同的应用场景

虽然数学上对称,但在实际应用中,我们根据你想实现什么目标,来严格规定公钥和私钥的使用方式。

场景一:保证机密性(加密通信)

  • 目标:确保只有指定的接收者能看到信息内容。

  • 操作用接收者的公钥加密

  • 推理过程

    1. 我希望只有Bob能读我的信。

    2. Bob的公钥是公开的,谁都能拿到。我的私钥是保密的,只有我有。

    3. 如果我用我的私钥“加密”,那么任何人(因为我的公钥公开)都可以“解密”看到内容。这完全达不到保密的目的。

    4. 因此,我必须用Bob的公钥加密。这样,全世界只有Bob一个人(拥有对应的私钥)才能解密它。

  • 结论:为实现机密性,规则是:用接收方的公钥加密 → 接收方用自己的私钥解密。

场景二:保证身份认证和完整性(数字签名)

  • 目标:向所有人证明这条信息确实是我发的,并且没有被篡改

  • 操作用发送者的私钥签名(即加密哈希值)

  • 推理过程

    1. 我想向所有人证明这封信是我Alice写的。

    2. 我的私钥只有我有,全世界独一无二。我的公钥是公开的,大家都能拿到。

    3. 如果我用我的公钥“加密”,那么任何人都可以生成这个密文,无法证明是我发的。

    4. 因此,我必须用我自己的私钥对信息的指纹(哈希值)进行“加密”(即签名)。

    5. 收到信息的人,用我公开的公钥去解密这个签名。如果解密成功,就证明这个签名一定是由对应的私钥生成的,而私钥只有我才有,所以我就是发送者。

  • 结论:为实现身份认证和完整性,规则是:发送方用自己的私钥签名 → 接收方用发送方的公钥验证。


总结与类比

为了更清晰,我们用一个表格来对比:

特性

加密通信 (保证机密性)

数字签名 (保证真实性和完整性)

你的目标

只有Bob能读

向所有人证明是Alice写的

使用的密钥

Bob的公钥

Alice的私钥

操作

用Bob的公钥加密数据

用Alice的私钥加密哈希值(即签名)

反向操作

用Bob的私钥解密数据

用Alice的公钥解密签名(以验证)

通俗比喻

Bob的公用的投递口锁上信件

Alice的私人印章在文件上盖章

它们描述的是同一套数学原理的两种不同应用:

  1. “用公钥加密的数据,只能由对应的私钥解密” -> 这是在描述加密通信的场景,目的是保密

  2. “用私钥签名的数据,可以用对应的公钥验证” -> 这是在描述数字签名的场景,目的是证明身份和防篡改


评论