为什么TLS检测信号扩展允许用户提供数据



心跳协议要求另一端使用发送给它的相同数据进行回复,以知道另一端是活动的。发送某个固定消息不是更简单吗?是为了防止某种攻击吗?

至少数据包的大小似乎是相关的,因为根据RFC6520,5.1心跳消息将与DTLS(例如UDP上的TLS)一起用于PMTU发现,在这种情况下,它需要不同大小的消息。除此之外,它可能只是根据ICMP ping进行建模,在ICMP ping中,您还可以毫无理由地指定有效负载内容。

就像ICMP Ping一样,其理念是确保您可以匹配一个"pong";你收到的心跳响应;ping";您发出的心跳请求。有些数据包可能会丢失或无序到达,如果你发送请求的速度足够快,并且所有响应内容都相同,那么就无法判断你的哪些请求得到了响应。

人们可能会认为;世界卫生组织关心?我刚得到回应;因此,对方还活着,准备听从我的命令:D"但是,如果响应实际上是10分钟前的心跳请求(极端情况下,可能是由于服务器过载),该怎么办?如果几秒钟前你刚刚发送了另一个心跳请求,并且所有人的预期响应都是相同的("固定消息"),那么你将无法分辨其中的区别。

及时的响应对于确定连接的健康状况非常重要。来自RFC6520第3页:

在没有接收对应的心跳响应消息,该消息具有应终止DTLS连接。

通过允许请求者指定返回有效载荷(并假设请求者总是生成唯一的有效载荷),请求者可以将心跳响应与发出的特定心跳请求相匹配,因此能够计算往返时间,在适当的情况下使连接过期。

当然,只有当您通过UDP而不是TCP等非可靠协议使用TLS时,这才有意义。


那么,为什么允许请求者指定有效负载的长度呢?难道不能推断吗

请参阅以下精彩答案:https://security.stackexchange.com/a/55608/44094

似乎是对共性和连贯性的尝试的一部分。在SSL/TLS标准中,所有消息都遵循常规编码规则,使用特定的表示语言。协议的任何部分";推断出";记录长度的长度。

不从外部结构推断长度的一个好处是,它使以后更容易包括可选的扩展。例如,这是通过ClientHello消息完成的。

简言之,YES本可以,但为了与现有格式保持一致,为了将来的校对,对大小进行了规范,以便其他数据可以遵循相同的消息。

最新更新