TLS/SSL 证书 - 密钥使用和加密

信息安全 tls 证书
2021-08-18 22:56:07

所以我在看google.com的SSL证书,不明白一些事情:

在此处输入图像描述

我完全明白它确保了谷歌网络服务器的身份,但不明白它如何向网络服务器证明我的身份?

另外我想知道为什么这个证书没有“密钥加密”或“密钥协议”的目的?SSL 如何执行密钥交换/diffie helmann?2048 位 RSA 密钥(在详细信息选项卡下可见)是否用于加密?

1个回答

...它如何向网络服务器证明我的身份?

它不是。它仅向您证明服务器的身份,因此不可能有中间人攻击(有人声称是 google.com)。如果需要客户端标识(通常不需要),可以使用客户端证书。

“该证书旨在......证明您的身份”并不意味着该证书实际上用于此目的。它仅意味着证书可用于服务器身份验证(“远程计算机的身份”)和客户端身份验证(“您的身份”)。但在这种情况下,它仅用于服务器身份验证。

实际上,“您的身份”实际上是令人困惑的,因为它根本不意味着您的身份。这意味着如果您拥有此证书(您没有),那么您可以将其用作客户端证书来证明您的身份。其他证书查看器(Linux 上的 Chrome)以一种不那么令人困惑的方式显示此扩展密钥用法:

 TLS WWW Server Authentication (OID.1.3.6.1.5.5.7.3.1)
 TLS WWW Client Authentication (OID.1.3.6.1.5.5.7.3.2)

另外我想知道为什么这个证书没有“密钥加密”或“密钥协议”的目的?2048 位 RSA 密钥(在详细信息选项卡下可见)是否用于加密?

我使用 Chrome 为 google.com 获得的证书没有 RSA 密钥,而是具有 256 位密钥的 ECDSA 证书。但是通过对密码首选项进行一些更改,我也可以获得 2048 位 RSA 证书。

根据每种密钥交换方法需要哪些密钥用法?它需要 ECDSA 证书中的 digitalSignature 并且它有这个。根据这个问答,它还需要“密钥加密”来处理像 AES128-SHA(谷歌支持)这样的密码。但是 2048 位证书完全缺少密钥使用,因此在这种情况下,我们参考RFC 5280:4.2.1.12。扩展密钥用法

除了或代替密钥使用扩展中指明的基本目的之外,此扩展表示可以使用经认证的公钥的一个或多个目的。

因此,如果没有给出密钥用法但扩展了密钥用法,我们可以从中暗示密钥用法。然后在 RFC 的同一部分中声明 serverAuth 意味着 digitalSignature、keyEncipherment 或 keyAgreement。因此,即使没有明确给出,我们也有所需的 keyEncipherment。

除此之外,RSA 和 ECDSA 密钥都不用于加密连接本身,仅用于身份验证和密钥交换内的密码。使用在密钥交换中创建的密钥通过对称加密完成流量的加密。请参阅SSL/TLS 如何工作?更多细节。