我的问题是关于签名和加密之间的区别。如果你已经打算用 PKI 加密,为什么还要签名呢?
PKI 加密本身不提供身份验证、完整性和不可否认性吗?
==稍后添加===
如果我使用我的私钥加密我的消息怎么办。然后任何人都可以使用我的公钥解密此消息,因此它不是私有的,但所有这样做的人都知道它来自我,因为它是由我的公钥解密的。也都知道它并没有被篡改,因为他们可以解密它
我的问题是关于签名和加密之间的区别。如果你已经打算用 PKI 加密,为什么还要签名呢?
PKI 加密本身不提供身份验证、完整性和不可否认性吗?
==稍后添加===
如果我使用我的私钥加密我的消息怎么办。然后任何人都可以使用我的公钥解密此消息,因此它不是私有的,但所有这样做的人都知道它来自我,因为它是由我的公钥解密的。也都知道它并没有被篡改,因为他们可以解密它
加密提供机密性,即确保只有预期的接收者才能解密消息。
签名提供身份验证,即允许收件人检查消息是否由特定发件人发送并且未被修改。
在 PKI 的上下文中看待这个问题的一种方法是:加密只需要知道接收者的公钥,因此任何人都可以加密消息。另一方面,签名需要知道发送者的私钥,因此只有发送者才能对消息进行签名。如您所见,纯公钥加密不提供完整性或身份验证。
使用某人的公钥加密提供机密性,但不提供身份验证或完整性。
在 PKI 架构中,您使用收件人的公钥加密您的消息。这仅证明您知道他们的公钥,而对您自己一无所知。当他们的公钥确实是公开的时,您可能是任何人,包括截获消息(尽管无法读取)并将其替换为使用相同公钥加密的另一条消息的攻击者。
但是通过使用您自己的私钥添加签名(然后可以使用您的公钥验证),您可以证明自己的身份,这使得篡改消息变得不可能。
请注意,这仅适用于收件人的公钥实际上是公开的。当“公共”密钥是仅在您和接收者之间共享的秘密时,签名确实变得多余。
如果我半夜在你的门廊上放了一个上锁的盒子,把它锁在你的门上,然后把钥匙掉进了邮筒,那它就很安全了。没有其他人可以进入它,只有你可以打开它,但你无法知道是谁给你留下的。它可能是由出版商票据交换所的获奖者或恐怖分子留下的,你根本不知道。加密做到了这一点,它可以防止其他任何人访问您的消息,但您无法知道它是谁。
如果 Publisher's Clearing House 的人离开了支票,签名并坐在你的门前。你会知道它是来自他们的,因为他们签署了它并且支票是有效的,但是任何人都可以过来拿走它,因为它没有受到保护。这就是签名的作用。它证明一条消息来自特定的人,但对消息的内容没有提供任何保护。
您真正想要的是放在门上的签名包裹。这样,其他人就无法知道它是什么,但您可以验证它来自谁并且它没有被篡改。
我看待它的方式是,如果我有一个由一系列字节组成的加密消息,我可以用你的公钥解密它。但是,由于您的加密,任何一系列字节都是“有效的”。这意味着如果有人修改了消息,那么我仍然可以解密它,我只是不会得到你最初加密的内容。进行篡改的人可能不知道他们的篡改对消息产生了什么影响(除非他们拥有私钥),但他们可以保证他们会更改消息。有时(例如,如果它只是二进制数据而不是文本消息),那么您不会知道它已被篡改,因为您没有任何东西可以与之比较。
签名可以做的是保证消息没有被篡改。您获取原始消息的哈希值,然后使用您的私钥对其进行加密。现在,当我解码消息时,我可以对其进行哈希处理并将其与您给我的哈希值进行比较。如果它们匹配,那么我知道 a)内容没有被篡改(因为哈希匹配)和 b)它来自您,因为哈希是由您的私钥加密的。