RFC 3734
Extensible Provisioning Protocol (EPP) Transport Over TCP
RFC 3734 ๐ Extensible Provisioning Protocol (EPP) Transport Over TCP
- Author: S. Hollenbeck, VeriSign, Inc. ๐
- Category: Standards Track โจ
- Date: March 2004 ๐ธ
- Obsoletes / Updates: the header doesn't list any RFCs this one obsoletes or updates ๐
Status of This Memo
Okay so this document is an Internet standards track protocol ๐ฅ for the whole Internet community, and they literally want your discussion and suggestions for improvements ๐. For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) ๐. And distribution of this memo is unlimited, so share away ๐ฆ.
Copyright Notice
๐ Copyright (C) The Internet Society (2004). All Rights Reserved.
Abstract
This doc explains how an Extensible Provisioning Protocol (EPP) session gets mapped onto one single Transmission Control Protocol (TCP) connection ๐ง. The mapping requires the Transport Layer Security (TLS) protocol to protect the info exchanged between an EPP client and an EPP server ๐. It's giving security-first energy, bestie ๐.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Conventions Used In This Document. . . . . . . . . . . . 2
2. Session Management . . . . . . . . . . . . . . . . . . . . . . 2
3. Message Exchange . . . . . . . . . . . . . . . . . . . . . . . 3
4. Data Unit Format . . . . . . . . . . . . . . . . . . . . . . . 5
5. Transport Considerations . . . . . . . . . . . . . . . . . . . 5
6. Internationalization Considerations. . . . . . . . . . . . . . 6
7. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 6
8. Security Considerations. . . . . . . . . . . . . . . . . . . . 6
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 7
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 7
10.1. Normative References. . . . . . . . . . . . . . . . . . 7
10.2. Informative References. . . . . . . . . . . . . . . . . 8
11. Author's Address . . . . . . . . . . . . . . . . . . . . . . . 8
12. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 9
1. Introduction โจ
This doc is the tea on how EPP gets mapped onto one single client-server TCP connection ๐. Security services beyond what EPP already defines come from the Transport Layer Security (TLS) Protocol [RFC2246] ๐. EPP itself is described in [RFC3730] ๐, and TCP is described in [RFC793] ๐ง .
1.1. Conventions Used In This Document
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] ๐.
2. Session Management ๐
Mapping EPP session management onto the TCP service is straight forward ๐โโ๏ธ. An EPP session first needs a TCP connection between two peers: one that starts the connection request, and one that answers it. The peer that starts it is called the "client", and the peer that answers is called the "server". An EPP server MUST listen for TCP connection requests on a standard TCP port assigned by IANA ๐.
The client MUST issue an active OPEN call, specifying the TCP port number the server is listening on for EPP connection attempts ๐ฆ. The server MUST respond with a passive OPEN call, and the client MUST acknowledge it to establish the connection ๐ค. Once the TCP session is up, the EPP server MUST return an EPP <greeting> to the client ๐.
An EPP session usually ends when the client issues an EPP <logout> command ๐ช. A server that receives an EPP <logout> command MUST end the EPP session and close the TCP connection through an active CLOSE call ๐. The client MUST respond with a passive CLOSE call ๐ซถ.
A client MAY end an EPP session by issuing an active CLOSE call ๐ธ. A server SHOULD respond with a passive CLOSE call ๐ .
A server MAY limit how long an established TCP connection lives ๐ง. EPP sessions that sit inactive for longer than a server-defined period MAY be ended by the server issuing an active CLOSE call ๐ญ. A server MAY also close TCP connections that have been open and active for longer than a server-defined period ๐.
Peers SHOULD respond to an active CLOSE call with a passive CLOSE call ๐. The closing peer MAY issue an ABORT call if the responding peer doesn't respond to the active CLOSE call ๐.
3. Message Exchange ๐ฌ
Except for the EPP server greeting, EPP messages are started by the EPP client in the form of EPP commands โจ. An EPP server MUST return an EPP response to an EPP command on the same TCP connection that carried the command ๐. If the TCP connection closes after the server receives and successfully processes a command but before the response gets back to the client, the server MAY attempt to undo the effects of the command so the client and server stay in a consistent state ๐ซ . EPP commands are idempotent ๐, so processing a command more than once produces the same net effect on the repository as processing it successfully once. Iconic behavior, honestly ๐.
An EPP client streams EPP commands to an EPP server over an established TCP connection ๐. A client MAY, but SHOULD NOT, establish multiple TCP connections to create multiple command exchange channels ๐ โโ๏ธ. A server SHOULD limit a client to a maximum number of TCP connections based on server capabilities and operational load ๐.
EPP describes client-server interaction as a command-response exchange, where the client sends one command and the server returns one response ๐ฏ. A client might get a slight performance boost by pipelining (sending more than one command before the response to the first one arrives) commands over TCP transport ๐. But this doesn't change the basic single command, single response operating mode of the core protocol ๐ . The amount of data that can be outstanding is limited to the current TCP window size ๐ช.
Each EPP data unit MUST contain a single EPP message ๐ฆ. Commands MUST be processed independently, and in the same order they were sent from the client โญ.
A server SHOULD put a limit on how long a client can take to issue a well-formed EPP command โฐ. A server SHOULD end an EPP session and close an open TCP connection if a well-formed command isn't received within that time limit ๐.
A general state machine for an EPP server is described in section 2 of [RFC3730] ๐งฉ. General client-server message exchange using TCP transport is illustrated in Figure 1 ๐ผ๏ธ.
Client Server
| |
| Connect |
| >>------------------------------->> |
| |
| Send Greeting |
| <<-------------------------------<< |
| |
| Send <login> |
| >>------------------------------->> |
| |
| Send Response |
| <<-------------------------------<< |
| |
| Send Command |
| >>------------------------------->> |
| |
| Send Response |
| <<-------------------------------<< |
| |
| Send Command X |
| >>------------------------------->> |
| |
| Send Command Y |
| >>---------------+ |
| | |
| | |
| Send Response X |
| <<---------------(---------------<< |
| | |
| | |
| +--------------->> |
| |
| Send Response Y |
| <<-------------------------------<< |
| |
| Send <logout> |
| >>------------------------------->> |
| |
| Send Response & Disconnect |
| <<-------------------------------<< |
| |
Figure 1: TCP Client-Server Message Exchange ๐ฆ
4. Data Unit Format ๐ง
The data field of the TCP header MUST contain an EPP data unit ๐. An EPP data unit has two fields: a 32-bit header that describes the total length of the data unit, and the EPP XML instance ๐งพ.
Here's the EPP Data Unit Format (one tick mark represents one bit position) ๐:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| EPP XML Instance |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Total Length (32 bits): the total length of the EPP data unit, measured in octets in network (big endian) byte order ๐ข. The octets in this field MUST be included in the total length calculation ๐งฎ.
EPP XML Instance (variable length): the EPP XML instance carried in the data unit ๐.
5. Transport Considerations ๐
Section 2.1 of the EPP core protocol specification [RFC3730] describes the considerations that protocol transport mappings need to address ๐. This mapping handles each of them with a mix of features described in this document and features TCP already provides, like so ๐:
- TCP includes features for reliability, flow control, ordered delivery, and congestion control ๐. Section 1.5 of RFC 793 [RFC793] describes these features in detail, and congestion control principles are covered further in RFC 2581 [RFC2581] and RFC 2914 [RFC2914] ๐ง . TCP is a connection-oriented protocol, and Section 2 of this mapping describes how EPP sessions map to TCP connections ๐.
- Sections 2 and 3 of this mapping describe how the stateful nature of EPP is kept intact through managed sessions and controlled message exchanges ๐งท.
- Section 3 of this mapping notes that command pipelining is possible with TCP, though batch-oriented processing (combining multiple EPP commands in a single data unit) is not permitted ๐ซ.
- Section 4 of this mapping describes features that frame data units by explicitly specifying the number of octets used to represent a data unit ๐.
6. Internationalization Considerations ๐
This mapping doesn't introduce or present any internationalization or localization issues ๐.
7. IANA Considerations โจ
okay so IANA handed out system port 700 for mapping EPP onto TCP ๐ and they also reclaimed user port 3121, which had been used for development and testing purposes ๐ง bestie, that port has officially retired from the test-drive era ๐
8. Security Considerations ๐
okay this section is SERIOUS and I need you to hear me ๐ญ EPP as-is only gives you simple client authentication, using identifiers and plain text passwords ๐ a passive attack is enough to recover client identifiers and passwords, which makes command forgery trivial. Protection against most other common attacks MUST be provided by other layered protocols ๐ก๏ธ
EPP does protect against replay attacks through command idempotency โจ a replayed or repeated command will not change the state of any object in any way, though denial of service through consumption of connection resources is still a possibility ๐
When layered over TCP, the Transport Layer Security (TLS) Protocol described in [RFC2246] MUST be used to prevent eavesdropping, tampering, and command forgery attacks ๐ TLS implementations often contain a US-exportable cryptographic mode that SHOULD NOT be used to protect EPP ๐ โโ๏ธ clients and servers who want high security SHOULD instead use TLS with cryptographic algorithms that are less susceptible to compromise ๐
Mutual client and server authentication using the TLS Handshake Protocol is REQUIRED ๐ซถ signatures on the complete certificate chain for both the client machine and the server machine MUST be validated as part of the TLS handshake. Information in the client and server certificates, such as validity periods and machine names, MUST also be validated. EPP service MUST NOT be granted until a TLS handshake and certificate validation have completed successfully, so both machines are authenticated and cryptographic protections are in place ๐
Authentication through the TLS Handshake Protocol confirms the identity of the client and server machines ๐ฆ EPP then uses an additional client identifier and password to identify and authenticate the client's user identity to the server, supplementing the machine authentication from TLS. The identity in the client certificate and the identity in the EPP client identifier can differ, because a server can assign multiple user identities for use from any particular client machine ๐
EPP TCP servers are vulnerable to common TCP denial of service attacks, including TCP SYN flooding ๐ญ Servers SHOULD take steps to minimize the impact of a denial of service attack, using combinations of easily implemented solutions such as deploying firewall technology and border router filters to restrict inbound server access to known, trusted clients ๐งฑ
9. Acknowledgements ๐ธ
this doc was originally an individual Internet-Draft ๐ the provreg working group later adopted it as a working group document and gave tons of invaluable comments and suggested improvements ๐ฅน the author wants to thank WG chairs Edward Lewis and Jaap Akkerhuis for their process and editorial contributions ๐
specific suggestions that made it into the document came from Chris Bason, Randy Bush, Patrik Faltstrom, Ned Freed, James Gould, Dan Manley, and John Immordino ๐
10. References ๐
10.1. Normative References
[RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC
793, September 1981.
[RFC2119] Bradner, S., "Key Words for Use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
RFC 2246, January 1999.
[RFC2581] Allman, M., Paxson, V. and W. Stevens, "TCP Congestion
Control", RFC 2581, April 1999.
[RFC2914] Floyd, S., "Congestion Control Principles", BCP 41, RFC
2914, September 2000.
[RFC3730] Hollenbeck, S., "Extensible Provisioning Protocol (EPP)",
RFC 3730, March 2004.
10.2. Informative References
None
11. Author's Address ๐๏ธ
Scott Hollenbeck VeriSign Global Registry Services 21345 Ridgetop Circle Dulles, VA 20166-6503 USA
EMail: shollenbeck@verisign.com
12. Full Copyright Statement ยฉ๏ธ
Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property ๐ง
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or the extent to which any license under such rights might or might not be available. It also does not represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.
Acknowledgement ๐
Funding for the RFC Editor function is currently provided by the Internet Society.
๐ฆ where this page comes from
- ietf: rfc3734 2004-03
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms