首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TLS-RSA vs TLS-ECDHE-RSA对静态DH

TLS-RSA vs TLS-ECDHE-RSA对静态DH
EN

Security用户
提问于 2017-07-26 10:29:22
回答 3查看 21.1K关注 0票数 9

据我所知,有许多文章解释了这个问题,在我发帖之前,这是我目前对这个问题的理解:

ECDHE=服务器随机生成一个DH密钥对,因为证书没有足够的信息发送到客户端进行主秘密生成。DH公钥在“服务器密钥交换”包中发送。这个秘密永远不会通过电报传出去。密码套件中的"RSA“指的是随机DH公钥签名,而不是证书签名。

静态DH =服务器在证书中有一个固定的DH公钥,它将被客户端用于共享秘密生成。这个秘密永远不会通过电报传出去。由于这些信息已经足够,所以不需要服务器密钥交换消息。

RSA =客户端将使用服务器的公钥加密PMS并将其发送到服务器。服务器将解密PMS并生成相同的PMS。秘密是通过电报传出去的。

暂时搁置静态DH,因为它在互联网上不常用-我找不到一个与Wireshark。

这是我的问题:

我比较了TLS-RSA和TLS-ECDHE-RSA之间的pcap,发现:

  • 在服务器提供的证书中,两者都包含RSA公钥(主题公钥),并且证书具有RSA签名(Sha256withRSAencryption)。
  • 在TLS-ECDHE-RSA的“服务器密钥交换”包中,有一个带有RSA签名的DH密钥。

"dh密钥“和”证书“的RSA签名用于验证目的/服务器的数字签名,以证明它声称的身份。

证书中的"RSA公钥“,对于TLS-RSA,是客户端用来加密PMS的。它可以在“客户端密钥交换”包中看到。那么,它在TLS-ECDHE-RSA中的作用是什么呢?

EN

回答 3

Security用户

发布于 2017-08-25 20:38:30

我假设您是在TLS的上下文中讨论这些,特别是TLS密码。对于每个组件所做的事情,似乎存在一些混淆。如果你看到了整个画面,就更容易理解了,就在这里。

在TLS握手过程中,会发生以下情况:身份验证、密钥交换。这些细节取决于所谓的密码套件。这是一个样本。

代码语言:javascript
运行
复制
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

这基本上说明如下。

  1. 服务器将提供一个证书,其中包含RSA公钥。这将用于身份验证。
  2. 密钥交换将使用ECDHE进行。
  3. 密钥交换后使用的对称密码将是具有128位密钥的AES-GCM .
  4. 交换过程中使用的伪随机函数是SHA256 (它也可能指示MAC w/旧的TLS版本)。

仔细观察,您将看到所有这些都是如何在密码套件中表示的。

现在让我们看看这些可能意味着什么: ECDHE- RSA,静态DH,RSA

ECDHE= server随机生成一个DH密钥对,因为证书没有足够的信息发送到客户端进行主秘密生成。DH公钥在“服务器密钥交换”包中发送。这个秘密永远不会在电报里传开。密码套件中的"RSA“指的是随机DH公钥签名,而不是证书签名。

你在正确的轨道上,现在,随着知识的整体情况,它更容易理解这一点。在“经典”密钥交换期间,证书中的公钥(及其私钥对)用于商定对称密钥。但是,如果服务器的密钥被泄露,则会产生问题。如果与证书中的公钥对应的私钥被窃取,则可以轻松地解密先前记录的通信量。

这是我们通常要避免的事情。进入前方保密。该协议引入了一个独立的密钥交换的可能性,它不太依赖于RSA密钥对。通常用于此的算法称为Diffie-Hellman。

对于DH来说,你需要所谓的DH参数,它基本上是一个素数和一个生成器。这些参数是公开的。这些都是在服务器安装期间预先计算的,并在密钥交换期间与每个客户端共享。然后,与服务器合作的客户端使用这些参数来商定密钥,而不会像您所说的那样通过线路实际发送密钥。这是可汗学院关于这一点的一个伟大的视频。DH密钥对的私钥本质上是视频中的私密数字.而公钥是被传送到电线上的。

总之,ECDHE是椭圆曲线上的DH型椭圆曲线Diffie-Hellman .短暂部分是指每个连接使用不同的随机生成的DH密钥对这一事实。

静态DH = server在证书中有一个固定DH公钥,它将被客户端用于共享秘密生成。这个秘密永远不会在电报里传开。由于信息已经足够,因此不需要服务器密钥交换消息。

静态DH指的是服务器为每个客户端连接选择相同的DH密钥对(视频中的私有号码)。或者,正如您所建议的,它可以嵌入到证书中。这允许对TLS连接进行被动监视。这在本质上禁止了向前保密。

RSA = Client将使用服务器的公钥加密PMS并发送到服务器,服务器将解密PMS并生成相同的PMS。秘密是用电报传送的。

正是如此。

现在,回答你的问题。

证书中的"RSA公钥“,对于TLS-RSA,是客户端用来加密PMS的。它可以在“客户端密钥交换”包中看到。那么它在TLS-ECDHE-RSA中的作用是什么呢?

现在,这个问题很容易回答。当存在显式密钥交换算法时,证书中的密钥(在这种情况下是RSA公钥)仅用于身份验证。确认证书链并验证服务器是否持有给定证书的公用密钥,以确保连接到要连接的主机。它还将用RSA私钥对发送给客户端的DH公钥进行签名,客户端在握手过程中验证该私钥。

票数 17
EN

Security用户

发布于 2017-07-26 16:17:43

密码套件中的"RSA“指随机DH公钥签名,而不是证书签名。

"RSA“指DH密钥签名和服务器证书的公钥。

用于签名/验证DH公钥的密钥来自证书交换,否则我们无法确保使用的是服务器的实际公钥。

证书具有RSA签名(Sha256withRSAencryption)。

至于证书的签名算法(Sha256withRSAencryption),则由服务器证书的颁发者决定,并用于验证服务器证书。它不参与实际的数据交换,在这里不相关。

那么它在TLS-ECDHE-RSA中的作用是什么呢?

正如您已经指出的,"ECDHE“确保对称密钥不会在线路上发送。因此,即使有一天服务器证书的秘密密钥发生了妥协,以前交换的密钥也不会被解密,先前发送的数据也将保持安全。它被称为“向前保密”。

票数 2
EN

Security用户

发布于 2021-02-09 14:07:47

证书中的"RSA公钥“,对于TLS-RSA,是客户端用来加密PMS的。它可以在“客户端密钥交换”包中看到。那么,它在TLS-ECDHE-RSA中的作用是什么呢?

简单回答:在ECDHE中,证书中的RSA公钥用于验证服务器发送的短暂ECDH公共参数上的RSA签名。

默认情况下,所有Diffie-Hellman密钥交换都是匿名的,这意味着您没有与谁交换密钥的信息。这显然是不可取的,因为网络攻击者(具有中间人位置)可以替换他们自己的关键参数,以替代双方(客户端和服务器)希望发送对方的关键参数。为了避免这种情况,服务器使用其私钥对其密钥参数进行签名。具体来说,它使用与服务器证书中的公钥相对应的私钥。这样,客户机就有一个公钥,它知道它属于服务器,然后它可以使用它来验证服务器发送的ECDH参数是否是它接收到的。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/166063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档