One document matched: draft-ietf-mile-rfc6046-bis-08.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc ipr="trust200902"
category="std"
docName="draft-ietf-mile-rfc6046-bis-08.txt"
obsoletes="6046">
<?rfc compact="yes"?>
<?rfc subcompact="yes"?>
<?rfc toc="no"?>
<?rfc symrefs="yes"?>
<front>
<title abbrev="RID Transport">
Transport of Real-time Inter-network Defense (RID) Messages over HTTP/TLS
</title>
<author initials="B." surname="Trammell" fullname="Brian Trammell">
<organization abbrev="ETH Zurich">
Swiss Federal Institute of Technology Zurich
</organization>
<address>
<postal>
<street>Gloriastrasse 35</street>
<city>8092 Zurich</city>
<country>Switzerland</country>
</postal>
<phone>+41 44 632 70 13</phone>
<email>trammell@tik.ee.ethz.ch</email>
</address>
</author>
<date month="January" day="23" year="2012"></date>
<area>Security</area>
<workgroup>MILE Working Group</workgroup>
<keyword>Coordinated Incident Response</keyword>
<keyword>CSIRT</keyword>
<keyword>Incident Object Description Exchange Format</keyword>
<keyword>IODEF</keyword>
<abstract>
<t>The Incident Object Description Exchange Format (IODEF) defines a
common XML format for document exchange, and Realtime Internetwork Defense
(RID) defines extensions to IODEF intended for the cooperative handling of
security incidents within consortia of network operators and enterprises.
This document specifies a application-layer protocol for RID based upon
the passing of RID messages over HTTP/TLS.</t>
</abstract>
</front>
<middle>
<section title="Introduction" anchor="intro-sec">
<t>The <xref target="RFC5070">Incident Object Description Exchange Format
(IODEF)</xref> 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 an easy way for CSIRTs to
exchange data in a way which can be easily parsed.</t>
<t>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, <xref
target="I-D.ietf-mile-rfc6045-bis">Real-time Inter-network Defense
(RID)</xref> do require a specification of a protocol to ensure
interoperability among members in a RID consortium. This document specifies
the transport of RID messages within <xref target="RFC2616">HTTP</xref>
Request and Response messages over <xref
target="RFC5246">TLS</xref> (herein, HTTP/TLS). Note that any IODEF
message may also be transported using this mechanism, by sending it as a RID
Report message.</t>
<section title="Changes from RFC6046">
<t>This document contains the following changes with respect to its predecessor <xref target="RFC6046"/>:</t>
<t><list style="symbols">
<t>The intended status of the document is now Standards Track.</t>
<t>The document is updated to refer to the updated RID specification, <xref
target="I-D.ietf-mile-rfc6045-bis"/>, where appropriate.</t>
<t>Language regarding the use of HTTP/1.1 and TCP ports for RID transport is clarified.</t>
<t>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.</t>
<t>The minimum required version of TLS is upgraded to 1.1, and the minimum recommend version to 1.2.</t>
</list></t>
<t>This document, when published, obsoletes <xref target="RFC6046"/> and moves it to Historic status.</t>
</section>
</section>
<section title="Terminology and Normative Sections" anchor="terminology-sec">
<t>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 <xref
target="RFC2119"/>.</t>
<t>RID systems participating in a consortium are required to fully
implement the protocol in <xref target="rid-https-sec"/> in order to
interoperate within the consortium; the remainder of this document is
informative, and provides helpful background or explanatory
information.</t>
<!-- old paragraph --> <!-- <t>All sections which use these key words are
declared as normative, unless specifically noted otherwise. All normative
sections MUST be followed by implementations of this standard. Sections
which are not declared as normative are informative; these provide helpful
background information and considerations for implementations.
Specifically, the normative sections in this document are... </t>-->
</section>
<section title="Transmission of RID Messages over HTTP/TLS"
anchor="rid-https-sec">
<t>This section specifies the details of the transport of <xref
target="I-D.ietf-mile-rfc6045-bis">RID messages</xref> 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. All RID systems 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).</t>
<t><xref target="RFC3205">BCP 56</xref> 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.</t>
<t>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 <xref target="iana-sec"/>). 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, to avoid confusing standard HTTP/TLS
servers for RID systems.</t>
<t>RID systems MUST implement all REQUIRED functionality for <xref
target="RFC2616">HTTP/1.1</xref>. 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 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). </t>
<t>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.</t>
<t>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 an unique
token generated by the receiving RID system.</t>
<t>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 <xref
target="RFC5234">ABNF</xref> form is shown below:</t>
<t>callback-token = 1*255(VCHAR)</t>
<t>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.</t>
<t>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.</t>
<t><xref target="ridpairs_tab"/> 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.</t>
<texttable anchor="ridpairs_tab">
<ttcol align="left">Request RID type</ttcol>
<ttcol align="center">Callback</ttcol>
<ttcol align="left">Result</ttcol>
<ttcol align="left">Response RID type</ttcol>
<c>InvestigationRequest</c><c></c><c>200</c><c>Acknowledgment</c>
<c>InvestigationRequest</c><c></c><c>200</c><c>Result</c>
<c>InvestigationRequest</c><c></c><c>200</c><c>Report</c>
<c>InvestigationRequest</c><c></c><c>202</c><c>[empty]</c>
<c>TraceRequest</c><c></c><c>200</c><c>Acknowledgment</c>
<c>TraceRequest</c><c></c><c>200</c><c>Result</c>
<c>TraceRequest</c><c></c><c>200</c><c>Report</c>
<c>TraceRequest</c><c></c><c>202</c><c>[empty]</c>
<c>Query</c><c></c><c>200</c><c>Acknowledgment</c>
<c>Query</c><c></c><c>200</c><c>Report</c>
<c>Query</c><c></c><c>202</c><c>[empty]</c>
<c>Acknowledgment</c><c>X</c><c>200</c><c>[empty]</c>
<c>Result</c><c>X</c><c>200</c><c>[empty]</c>
<c>Report</c><c></c><c>200</c><c>Acknowledgment</c>
<c>Report</c><c></c><c>200</c><c>[empty]</c>
<c>Report</c><c>X</c><c>200</c><c>[empty]</c>
</texttable>
<t>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. For this reason, the use of stable DNS names to address RID
Systems is RECOMMENDED.</t>
<t>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.</t>
<t>Note that HTTP provides no mechanism for signaling to a server that a
response body is not a valid RID message. If an 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.</t>
<t>RID systems MUST support and SHOULD use HTTP/1.1 persistent connections
as described in <xref target="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.</t>
<t>RID systems MUST use TLS version 1.1 <xref target="RFC4346"/> or higher
for confidentiality, identification, and authentication, when sending RID
messages over HTTPS. HTTPS is specified in Section 2 of <xref
target="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 <xref target="RFC5280">X.509
certificate</xref>. Mutual authentication requires full path validation on
each certificate, as defined in <xref target="RFC5280"/>.</t>
<t>The TLS session MUST use non-NULL ciphersuites for authentication,
integrity, and confidentiality. Sessions MAY be renegotiated within these
constraints.</t>
<t>RID systems MUST verify the identity of their peers against that stored
in the certificate presented, as in section 6 of <xref target="RFC6125"/>.
As RID systems are identified not by URI and RID does not use DNS SRV
records, they are identified solely by their DNS Domain Names; see Section
6.4 of <xref target="RFC6125"/>. General information on the use of PKI
with RID systems is detailed in Section 9.3 of <xref
target="I-D.ietf-mile-rfc6045-bis"/>.</t>
<t>RID systems MUST support TLS version 1.1 and SHOULD support TLS version
1.2 <xref target="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 <xref target="RFC5246"/> for more.</t>
</section>
<section title="Security Considerations" anchor="security-sec">
<t>In addition to the final paragraphs in <xref target="rid-https-sec"/>
on the use of TLS to secure RID message transport, all security
considerations of related documents apply, especially the <xref
target="RFC5070">Incident Object Description Exchange Format
(IODEF)</xref> and <xref target="I-D.ietf-mile-rfc6045-bis">Real-time
Inter-network Defense (RID)</xref>. The protocol described herein is
built on the foundation of these documents; the security considerations
contained therein are incorporated by reference.</t>
</section>
<section title="IANA Considerations" anchor="iana-sec">
<t>Consistent with <xref target="RFC3205">BCP 56</xref>, 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.</t>
<t>[NOTE to IANA: Since this document obsoletes RFC 6046, please update
the reference in the Port Numbers registry for 4590/tcp to point to this
document.]</t>
</section>
<section title="Acknowledgments" anchor="ack-sec">
<t>The author would like to thank David Black for the review, and Kathleen Moriarty for work on earlier revisions of this specification.</t>
</section>
</middle>
<back>
<references title="Normative References">
<?rfc include="reference.RFC.2119" ?>
<?rfc include="reference.RFC.2616" ?>
<?rfc include="reference.RFC.2818" ?>
<?rfc include="reference.RFC.5070" ?>
<?rfc include="reference.RFC.5246" ?>
<?rfc include="reference.RFC.5280" ?>
<?rfc include="reference.RFC.6125" ?>
<?rfc include="reference.I-D.ietf-mile-rfc6045-bis" ?>
</references>
<references title="Informative References">
<?rfc include="reference.RFC.5234" ?>
<?rfc include="reference.RFC.3205" ?>
<?rfc include="reference.RFC.4346" ?>
<?rfc include="reference.RFC.6046" ?>
</references>
</back>
</rfc>| PAFTECH AB 2003-2026 | 2026-04-24 07:18:01 |