Internet Engineering Task Force (IETF)                       B. Trammell
Request for Comments: 6546                                    ETH Zurich
Obsoletes: 6046                                               April 2012
Category: Standards Track
ISSN: 2070-1721
Internet Engineering Task Force (IETF)                       B. Trammell
Request for Comments: 6546                                    ETH Zurich
Obsoletes: 6046                                               April 2012
Category: Standards Track
ISSN: 2070-1721

Transport of Real-time Inter-network Defense (RID) Messages over HTTP/TLS




The Incident Object Description Exchange Format (IODEF) defines a common XML format for document exchange, and Real-time Inter-network Defense (RID) defines extensions to IODEF intended for the cooperative handling of security incidents within consortia of network operators and enterprises. This document specifies an application-layer protocol for RID based upon the passing of RID messages over HTTP/TLS.


Status of This Memo


This is an Internet Standards Track document.


This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.

本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。有关互联网标准的更多信息,请参见RFC 5741第2节。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at


Copyright Notice


Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved.

版权所有(c)2012 IETF信托基金和确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents ( in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。

1. Introduction
1. 介绍

The Incident Object Description Exchange Format (IODEF) [RFC5070] describes an XML document format for the purpose of exchanging data between Computer Security Incident Response Teams (CSIRTs) or those responsible for security incident handling for service providers (SPs). The defined document format provides a simple way for CSIRTs to exchange data in a way which can be easily parsed.


IODEF defines a message format, not a protocol, as the sharing of messages is assumed to be out of scope in order to allow CSIRTs to exchange and store messages in a way most suited to their established incident-handling processes. However, Real-time Inter-network Defense (RID) [RFC6545] does require a specification of a protocol to ensure interoperability among members in a RID consortium. This document specifies the transport of RID messages within HTTP [RFC2616] Request and Response messages over TLS [RFC5246] (herein, HTTP/TLS). Note that any IODEF message may also be transported using this mechanism, by sending it as a RID Report message.


1.1. Changes from RFC 6046
1.1. RFC 6046的变更

This document contains the following changes with respect to its predecessor [RFC6046]:


o The status of the document is Standards Track.

o 文档的状态为“标准跟踪”。

o The document is updated to refer to the updated RID specification, [RFC6545], where appropriate.

o 在适当的情况下,更新文档以参考更新的RID规范[RFC6545]。

o Language regarding the use of HTTP/1.1 and TCP ports for RID transport is clarified.

o 澄清了关于使用HTTP/1.1和TCP端口进行RID传输的语言。

o The RID-Callback-Token entity header field is added to allow matching of RID replies during callback, independent of the content of the underlying RID message.

o 添加了RID回调令牌实体标头字段,以允许在回调期间匹配RID回复,而不依赖于基础RID消息的内容。

o The minimum required version of TLS is upgraded to 1.1, and the minimum recommended version to 1.2.

o TLS的最低要求版本升级为1.1,最低建议版本升级为1.2。

o Language regarding PKI for RID over HTTPS is clarified, and updated to refer to [RFC6125].

o 澄清了关于HTTPS上RID的PKI语言,并更新为参考[RFC6125]。

This document obsoletes [RFC6046] and moves it to Historic status.


2. Terminology and Normative Sections
2. 术语和规范章节

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].


RID systems participating in a consortium are required to fully implement the protocol in Section 3 in order to interoperate within the consortium; the remainder of this document is informative and provides helpful background or explanatory information.


3. Transmission of RID Messages over HTTP/TLS
3. 通过HTTP/TLS传输RID消息

This section specifies the details of the transport of RID messages [RFC6545] over HTTP/TLS. In this arrangement, each RID server is both an HTTP/TLS server and an HTTP/TLS client. When a RID message is sent, the sending RID system connects to the receiving RID system and sends the message, optionally receiving a message in reply. Each RID system MUST be prepared to accept HTTP/TLS connections from any RID peer with which it communicates, in order to support callback for delayed replies (see below).


BCP 56 [RFC3205] contains a number of important considerations when using HTTP for application protocols. These include the size of the payload for the application, whether the application will use a web browser, whether the protocol should be defined on a port other than 80, and if the security provided through HTTP/TLS suits the needs of the new application.

BCP 56[RFC3205]包含在应用程序协议中使用HTTP时的一些重要注意事项。其中包括应用程序有效负载的大小、应用程序是否将使用web浏览器、协议是否应在80以外的端口上定义,以及通过HTTP/TLS提供的安全性是否适合新应用程序的需要。

It is acknowledged within the scope of these concerns that HTTP/TLS is not ideally suited for RID transport, as the former is a client-server protocol and the latter a message-exchange protocol; however, the ease of implementation of RID systems over HTTP/TLS outweighs these concerns. Consistent with BCP 56, RID systems listen for TCP connections on port 4590 (see Section 5). Every RID system participating in a consortium SHOULD listen for HTTP/TLS connections on the assigned port. RID systems MAY be configurable to listen on ports other than the well-known port; this configuration is out of scope for this specification. RID systems SHOULD NOT use TCP port 443 (the standard port for HTTP over TLS) for RID messages in order to avoid confusing standard HTTP/TLS servers for RID systems.

在这些关注的范围内,HTTP/TLS并不适合RID传输,因为前者是客户机-服务器协议,后者是消息交换协议;然而,通过HTTP/TLS实现RID系统的易用性超过了这些问题。与BCP 56一致,RID系统侦听端口4590上的TCP连接(参见第5节)。参与联合体的每个RID系统都应侦听指定端口上的HTTP/TLS连接。RID系统可配置为在已知端口以外的端口上侦听;此配置超出本规范的范围。RID系统不应将TCP端口443(HTTP over TLS的标准端口)用于RID消息,以避免混淆RID系统的标准HTTP/TLS服务器。

RID systems MUST implement all REQUIRED functionality for HTTP/1.1 [RFC2616]. All RID messages sent in HTTP Requests MUST be sent using the POST method with a Request-URI of '/'. As RID documents are XML, the RID media type is 'text/xml'; i.e., the 'Content-type' Request and Response headers MUST be 'text/xml'. As RID messages MUST be sent using the POST method, the GET and HEAD methods have no

RID系统必须实现HTTP/1.1[RFC2616]所需的所有功能。HTTP请求中发送的所有RID消息必须使用请求URI为“/”的POST方法发送。由于RID文档是XML,所以RID媒体类型为“text/XML”;i、 例如,“内容类型”请求和响应头必须是“text/xml”。由于RID消息必须使用POST方法发送,因此GET和HEAD方法没有

particular meaning on a RID system; a RID system SHOULD answer 'GET /' or 'HEAD /' with 204 No Content. Other Request-URIs are reserved for future use; any access to Request-URIs other than '/' by any method on a RID system SHOULD return the appropriate HTTP error (404 Not Found).


Since the content of RID messages is essentially declarative, a RID system interrupted during transport MAY simply repeat the transaction; the sending of a RID message is idempotent.


As the queries and replies in a RID message exchange may be significantly separated in time, RID over HTTP/TLS supports a callback mechanism. In this mechanism, the receiving RID system MAY return a 202 Accepted response, called a RID callback, instead of a RID message. The RID callback MUST contain a zero-length entity body and a 'RID-Callback-Token' entity header field, itself containing a unique token generated by the receiving RID system.


The RID-Callback-Token is an opaque, whitespace-free string of up to 255 printable ASCII characters that MUST uniquely identify the callback among all callbacks from the receiving RID system to the sending RID system. Due to the amount of time that may be required to generate a RID Result or Report response, there is no upper bound on the time period for this uniqueness requirement. The RID-Callback-Token in ABNF [RFC5234] form is shown below:


   callback-token = 1*255(VCHAR)
   callback-token = 1*255(VCHAR)

When performing RID callback, a responding system MUST connect to the host at the network-layer address from which the original request was sent; there is no mechanism in RID for redirected callback. This callback SHOULD use TCP port 4590 unless configured to use a different port.


While a RID system SHOULD return the reply in an HTTP Response if it is available immediately or within a generally accepted HTTP client timeout (about thirty seconds), this is not mandatory, and as such RID systems MUST be prepared for a query to be met with a 202 Accepted, an empty Response body, a connection termination, and a callback. Note that all RID messages require a response from the receiving RID system, so a sending RID system can expect either an immediate response or a callback.


Table 1 lists the allowable RID message types in an HTTP Response for a given RID message type in the Request. A RID system MUST be prepared to handle an HTTP Response of the given type(s) when sending


the corresponding HTTP Request. A RID system MUST NOT send an HTTP Response containing any RID message other than the one corresponding to the one sent in the HTTP Request.


     | Request RID type     | Callback | Result | Response RID type |
     | InvestigationRequest |          | 200    | Acknowledgement   |
     | InvestigationRequest |          | 200    | Result            |
     | InvestigationRequest |          | 200    | Report            |
     | InvestigationRequest |          | 202    | [empty]           |
     | TraceRequest         |          | 200    | Acknowledgement   |
     | TraceRequest         |          | 200    | Result            |
     | TraceRequest         |          | 200    | Report            |
     | TraceRequest         |          | 202    | [empty]           |
     | Query                |          | 200    | Acknowledgement   |
     | Query                |          | 200    | Report            |
     | Query                |          | 202    | [empty]           |
     | Acknowledgement      |     X    | 200    | [empty]           |
     | Result               |     X    | 200    | [empty]           |
     | Report               |          | 200    | Acknowledgement   |
     | Report               |          | 200    | [empty]           |
     | Report               |     X    | 200    | [empty]           |
     | Request RID type     | Callback | Result | Response RID type |
     | InvestigationRequest |          | 200    | Acknowledgement   |
     | InvestigationRequest |          | 200    | Result            |
     | InvestigationRequest |          | 200    | Report            |
     | InvestigationRequest |          | 202    | [empty]           |
     | TraceRequest         |          | 200    | Acknowledgement   |
     | TraceRequest         |          | 200    | Result            |
     | TraceRequest         |          | 200    | Report            |
     | TraceRequest         |          | 202    | [empty]           |
     | Query                |          | 200    | Acknowledgement   |
     | Query                |          | 200    | Report            |
     | Query                |          | 202    | [empty]           |
     | Acknowledgement      |     X    | 200    | [empty]           |
     | Result               |     X    | 200    | [empty]           |
     | Report               |          | 200    | Acknowledgement   |
     | Report               |          | 200    | [empty]           |
     | Report               |     X    | 200    | [empty]           |

Table 1


The use of stable DNS names to address RID systems is RECOMMENDED; in addition to facilitating connection to RID systems within a consortium, these are to be used as reference identifiers for a RID system's peers. For security purposes, RID systems SHOULD NOT return 3xx Redirection response codes, and SHOULD NOT follow any 3xx Redirection. The protocol provides no in-band method for handling a change of address of a RID system.


If a RID system receives an improper RID message in an HTTP Request, it MUST return an appropriate 4xx Client Error result code to the requesting RID system. If a RID system cannot process a RID message received in an HTTP Request due to an error on its own side, it MUST return an appropriate 5xx Server Error result code to the requesting RID system.


Note that HTTP provides no mechanism for signaling to a server that a response body is not a valid RID message. If a RID system receives an improper RID message in an HTTP Response, or cannot process a RID message received in an HTTP Response due to an error on its own side,


it MUST log the error and present it to the RID system administrator for handling; the error logging format is an implementation detail and is considered out of scope for this specification.


RID systems MUST support and SHOULD use HTTP/1.1 persistent connections as described in [RFC2616]. RID systems MUST support chunked transfer encoding on the HTTP server side to allow the implementation of clients that do not need to pre-calculate message sizes before constructing HTTP headers.


RID systems MUST use TLS version 1.1 [RFC4346] or higher for confidentiality, identification, and authentication, when sending RID messages over HTTPS. HTTPS is specified in Section 2 of [RFC2818]. RID systems MUST use mutual authentication; that is, both RID systems acting as HTTPS clients and RID systems acting as HTTPS servers MUST be identified by an X.509 certificate [RFC5280]. Mutual authentication requires full path validation on each certificate, as defined in [RFC5280].


The TLS session MUST use non-NULL ciphersuites for authentication, integrity, and confidentiality. Sessions MAY be renegotiated within these constraints.


All RID systems SHOULD be identified by a certificate containing DNS-ID identifier as in Section 6.4 of [RFC6125]; the inclusion of Common Names (CN-IDs) in certificates identifying RID systems is NOT RECOMMENDED. RID systems MUST verify the reference identifiers of their peers against those stored in the certificates presented using one of the methods in the following paragraph. Wildcards MUST NOT appear in the DNS-ID or CN-ID of a certificate identifying a RID system.

所有RID系统应通过包含DNS-ID标识符的证书进行标识,如[RFC6125]第6.4节所述;不建议在标识RID系统的证书中包含通用名称(CN ID)。RID系统必须使用以下段落中的方法之一,根据证书中存储的参考标识符验证其对等方的参考标识符。通配符不得出现在标识RID系统的证书的DNS-ID或CN-ID中。

RID systems MUST support the verification of certificates against an explicit whitelist of peer certificates. RID systems SHOULD support the verification of reference identifiers by matching the DNS-ID or CN-ID with a reverse DNS lookup of the connecting RID peer; this support SHOULD allow the lookup to be cached and/or done in advance in order to ensure verifiability during instability or compromise of DNS itself.


Additional general information on the use of PKI with RID systems is detailed in Section 9.3 of [RFC6545].


RID systems MUST support TLS version 1.1 and SHOULD support TLS version 1.2 [RFC5246]; RID systems MUST NOT request, offer, or use any version of SSL, or any version of TLS prior to 1.1, due to known security vulnerabilities in prior versions of the protocol; see Appendix E of [RFC5246] for more information.


4. Security Considerations
4. 安全考虑

In addition to the final paragraphs in Section 3 on the use of TLS to secure RID message transport, all security considerations of related documents apply, especially the Incident Object Description Exchange Format (IODEF) [RFC5070] and Real-time Inter-network Defense (RID) [RFC6545]. The protocol described herein is built on the foundation of those documents; the security considerations contained therein are incorporated by reference.


5. IANA Considerations
5. IANA考虑

Consistent with BCP 56 [RFC3205], since RID over HTTP/TLS is a substantially new service, and should be controlled at the consortium member network's border differently than HTTP/TLS, it requires a new port number. IANA has assigned port 4590/tcp to RID with service name "RID over HTTP/TLS".

与BCP 56[RFC3205]一致,由于HTTP/TLS上的RID是一项实质上全新的服务,并且应在联盟成员网络的边界上以不同于HTTP/TLS的方式进行控制,因此需要一个新的端口号。IANA已将端口4590/tcp分配给RID,服务名称为“RID over HTTP/TLS”。

6. Acknowledgements
6. 致谢

The author would like to thank David Black for the review, and Kathleen Moriarty for work on earlier revisions of this specification. This work was partially supported by the European Union Seventh Framework Program under grant agreement 257315 (DEMONS).

作者要感谢David Black的审查,以及Kathleen Moriarty对本规范早期修订的工作。这项工作得到了欧盟第七框架计划257315(DEMONS)赠款协议的部分支持。

7. References
7. 工具书类
7.1. Normative References
7.1. 规范性引用文件

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

[RFC2616]菲尔丁,R.,盖蒂斯,J.,莫卧儿,J.,弗莱斯蒂克,H.,马斯特,L.,利奇,P.,和T.伯纳斯李,“超文本传输协议——HTTP/1.1”,RFC 2616,1999年6月。

[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.


[RFC5070] Danyliw, R., Meijer, J., and Y. Demchenko, "The Incident Object Description Exchange Format", RFC 5070, December 2007.

[RFC5070]Danyliw,R.,Meijer,J.,和Y.Demchenko,“事件对象描述交换格式”,RFC 50702007年12月。

[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, August 2008.

[RFC5246]Dierks,T.和E.Rescorla,“传输层安全(TLS)协议版本1.2”,RFC 5246,2008年8月。

[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 5280, May 2008.

[RFC5280]Cooper,D.,Santesson,S.,Farrell,S.,Boeyen,S.,Housley,R.,和W.Polk,“Internet X.509公钥基础设施证书和证书撤销列表(CRL)配置文件”,RFC 52802008年5月。

[RFC6125] Saint-Andre, P. and J. Hodges, "Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)", RFC 6125, March 2011.

[RFC6125]Saint Andre,P.和J.Hodges,“在传输层安全(TLS)环境下使用X.509(PKIX)证书在互联网公钥基础设施中表示和验证基于域的应用程序服务标识”,RFC 61252011年3月。

[RFC6545] Moriarty, K., "Real-time Inter-network Defense (RID)", RFC 6545, April 2012.

[RFC6545]Moriarty,K.,“实时网络间防御(RID)”,RFC 65452012年4月。

7.2. Informative References
7.2. 资料性引用

[RFC3205] Moore, K., "On the use of HTTP as a Substrate", BCP 56, RFC 3205, February 2002.

[RFC3205]Moore,K.,“关于HTTP作为基板的使用”,BCP 56,RFC 3205,2002年2月。

[RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.1", RFC 4346, April 2006.

[RFC4346]Dierks,T.和E.Rescorla,“传输层安全(TLS)协议版本1.1”,RFC 4346,2006年4月。

[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.

[RFC5234]Crocker,D.和P.Overell,“语法规范的扩充BNF:ABNF”,STD 68,RFC 5234,2008年1月。

[RFC6046] Moriarty, K. and B. Trammell, "Transport of Real-time Inter-network Defense (RID) Messages", RFC 6046, November 2010.

[RFC6046]Moriarty,K.和B.Trammell,“实时网络间防御(RID)消息的传输”,RFC 60462010年11月。

Author's Address


Brian Trammell Swiss Federal Institute of Technology Zurich Gloriastrasse 35 8092 Zurich Switzerland

Brian Trammell瑞士联邦理工学院苏黎世Gloriastrasse 35 8092瑞士苏黎世

   Phone: +41 44 632 70 13
   Phone: +41 44 632 70 13