【发布时间】:2014-04-10 10:44:17
【问题描述】:
https://www.rfc-editor.org/rfc/rfc6520 没有解释为什么心跳请求/响应往返应该包含有效负载。它只是指定了有效负载的空间,并且响应必须包含与请求相同的有效负载。
这个有效载荷有什么用?我的问题是:
-
工程师在设计协议以允许在心跳请求中包含任意有效负载时会想到什么?有什么优势?
-
这个负载必须包含在响应中的原因是什么?
我看到,通过允许任意负载,应用程序能够明确地将某个响应与某个请求相匹配。这是唯一的优势吗?如果是,那么为什么不强制有效载荷具有一定的长度?有效载荷长度的灵活性有什么好处?是否与密码学概念有关,心跳请求的长度必须不可预测?
其他类似“心跳”的协议扩展只是预先定义了确切的请求(例如“ping”)和相应的响应(例如“pong”)。为什么https://www.rfc-editor.org/rfc/rfc6520 选择了不同的路线?
了解 RFC6520 中做出选择背后的原因很重要,以便正确评估所有这些可能是智能放置的后门的假设。
【问题讨论】:
-
RFC777 定义了一种机制,客户端可以向服务器发送有效负载(回显请求),然后服务器将使用相同的有效负载进行响应(回显回复)。这是
ping命令行实用程序用来确定服务器是否处于活动状态的机制,并且每个启用了IP 的设备都实现了它。所以这个任意有效载荷的概念至少可以追溯到 1981 年。我可以对原因做出有根据的猜测,但我无法挖掘任何权威来源。
标签: security openssl heartbeat heartbleed-bug