我一直在阅读一篇关于 IPsec 的文章,它继续提到公钥加密和数字证书,用于对网络上的两个网络(网关)或主机进行身份验证。我知道公钥加密是指一台主机拥有公钥,当它向另一台主机发送 IP 数据包时,该主机拥有一个私钥,该私钥用于解码随数据包发送的公钥,因此如果它可以解码,那么它就是一个安全连接。数字证书似乎也是这样操作的。您将其注册到证书颁发机构,他们会给您一个公钥,当您与其他主机通信时,该主机会解码公钥并将其与私钥匹配以确保其安全。为什么要使用公钥加密?为什么不直接使用数字证书?
答案1
公钥加密是一种过程。证书同时也是一点信息; 它本身不做任何事情。因此,你可以用证书替换公钥,但不能用公钥替换加密并附有证书。
此外,证书是扩大公钥;它们携带公钥以及有关谁拥有它以及谁颁发它的信息。因此说“只使用证书而不是公钥”是倒退的。
某些协议(如 OpenPGP 或 TLS)使用证书,因为它们利用了证书中的信息;通常是为了确保它是“真实”的证书,而不是临时编造的东西。这对于加密来说并不重要,但对于验证。
其他协议(如 IPSec 或 SSH)可以同时使用这两种方式——要么手动配置与每个用户和主机相对应的公钥,要么根据存储在证书中的名称自动验证证书。
(事实上,公钥加密在现代 TLS 或 SSH 中很少使用。请记住,它比对称加密慢得多,因此两端都只是决定一个随机对称会话密钥,并使用该密钥使用 AES 或 RC4 等对称加密大量数据。过去,一方会生成会话密钥,使用另一方的公钥对其进行加密,然后将其发送过去,然后使用私钥对其进行解密。但是现在,双方都使用 DH 或类似协议来计算会话密钥,公钥的唯一目的是验证双方发送的计算结果。