当您进入google.com时,"Subject Public Key Algorithm“下的证书显示:
Elliptic Curve Public Key
ANSI X9.62 elliptic curve prime256v1 (aka secp256r1, NIST P-256)
Key size: 256 bits很明显是ECDSA。我认为ECDSA只用于签名/签名,而不是用于密钥交换。我遗漏了什么?
发布于 2018-10-07 07:01:45
密钥不限制这一点。大多数椭圆曲线密钥(不包括伯恩斯坦),包括这个,技术上可以用于ECDSA签名、ECDH或ECMQV密钥协议或ECIES加密。编码是由X9.62建立的,因为这是第一个发布的,但是其他操作使用相同的曲线、键值和编码。(许多应用程序也使用X9.62创建的点编码,但也有一些变化。)
,但是cert做了, cert (也)将KeyUsage扩展设置为digitalSignature ( ExtendedKeyUsage扩展设置为id-kp)。这意味着当在TLS中使用时,它只能用于ECDSA签名来验证服务器。
TLS /SSL通常使用只签名的证书。现在大多数TLS连接都使用“临时”密钥(而不是在证书中)作为密钥协议,同时使用证书的密钥(或者更确切地说,是通过与公钥证书匹配的私钥)来验证服务器,并且可以选择但很少对客户端进行身份验证。提供了 (完美)前向保密,这意味着即使服务器私钥后来被泄露,以前会话的记录也不能被解密,因此它们的内容仍然是安全的(至少不受此攻击;SSL/TLS只覆盖传输,并且永远不会在会话期间或会话之后的任何端点防止妥协)。在SSL的早期,人们通常不关心PFS,但在斯诺登让许多人意识到大规模监控项目--尤其是经理、老板、用户和客户等非技术人员--之后,这些选项变得更加广泛地被要求或推荐,并被使用。
对于TLS1.0-1.2 (和SSL3,但是您不应该再使用它了)密钥协议和签名(服务器身份验证)是在密件中链接的:所有在服务器端使用ECDSA证书的密匙套件都使用ECDHE密钥协议,所有使用(整数) DSA* cert用于服务器的加密套件都使用(整数) DHE密钥协议;DHE中的E和ECDHE中的最后E都是短暂的。因为RSA支持签名和加密,所以RSA证书密钥可以用于密钥传输(加密),但不再推荐使用,也可以用来签署任何一种临时密钥协议。(*对于歇斯底里葡萄干,SSL/TLS标准使用DSS来表示DSA。)对于TLS 1.3,这些算法现在是分开选择的,但是在公共网络上实际上需要使用一些短暂的密钥协议,并且几乎总是需要使用一些签名证书,因此它们可能将被用于与现在除了RSA以外的相同的组合中--不再允许只使用密钥加密。
请参见:
https://security.stackexchange.com/questions/20803/how-does-ssl-work (大黄熊史诗)
https://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls
https://stackoverflow.com/questions/52684809
复制相似问题