idnits 2.17.1 draft-ietf-weirds-rdap-sec-10.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (October 27, 2014) is 3468 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-14) exists of draft-ietf-weirds-json-response-10 == Outdated reference: A later version (-18) exists of draft-ietf-weirds-rdap-query-15 == Outdated reference: A later version (-15) exists of draft-ietf-weirds-using-http-13 -- Possible downref: Normative reference to a draft: ref. 'I-D.ietf-weirds-using-http' ** Obsolete normative reference: RFC 2818 (Obsoleted by RFC 9110) ** Obsolete normative reference: RFC 7231 (Obsoleted by RFC 9110) ** Obsolete normative reference: RFC 7235 (Obsoleted by RFC 9110) -- Obsolete informational reference (is this intentional?): RFC 5246 (Obsoleted by RFC 8446) Summary: 3 errors (**), 0 flaws (~~), 4 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet Engineering Task Force S. Hollenbeck 3 Internet-Draft Verisign Labs 4 Intended status: Standards Track N. Kong 5 Expires: April 30, 2015 CNNIC 6 October 27, 2014 8 Security Services for the Registration Data Access Protocol 9 draft-ietf-weirds-rdap-sec-10 11 Abstract 13 The Registration Data Access Protocol (RDAP) provides "RESTful" web 14 services to retrieve registration metadata from domain name and 15 regional internet registries. This document describes information 16 security services including authentication, authorization, 17 availability, data confidentiality, and data integrity for RDAP. 19 Status of This Memo 21 This Internet-Draft is submitted in full conformance with the 22 provisions of BCP 78 and BCP 79. 24 Internet-Drafts are working documents of the Internet Engineering 25 Task Force (IETF). Note that other groups may also distribute 26 working documents as Internet-Drafts. The list of current Internet- 27 Drafts is at http://datatracker.ietf.org/drafts/current/. 29 Internet-Drafts are draft documents valid for a maximum of six months 30 and may be updated, replaced, or obsoleted by other documents at any 31 time. It is inappropriate to use Internet-Drafts as reference 32 material or to cite them other than as "work in progress." 34 This Internet-Draft will expire on April 30, 2015. 36 Copyright Notice 38 Copyright (c) 2014 IETF Trust and the persons identified as the 39 document authors. All rights reserved. 41 This document is subject to BCP 78 and the IETF Trust's Legal 42 Provisions Relating to IETF Documents 43 (http://trustee.ietf.org/license-info) in effect on the date of 44 publication of this document. Please review these documents 45 carefully, as they describe your rights and restrictions with respect 46 to this document. Code Components extracted from this document must 47 include Simplified BSD License text as described in Section 4.e of 48 the Trust Legal Provisions and are provided without warranty as 49 described in the Simplified BSD License. 51 Table of Contents 53 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 54 2. Conventions Used in This Document . . . . . . . . . . . . . . 2 55 2.1. Acronyms and Abbreviations . . . . . . . . . . . . . . . 3 56 3. Information Security Services and RDAP . . . . . . . . . . . 3 57 3.1. Authentication . . . . . . . . . . . . . . . . . . . . . 3 58 3.1.1. Federated Authentication . . . . . . . . . . . . . . 4 59 3.2. Authorization . . . . . . . . . . . . . . . . . . . . . . 5 60 3.3. Availability . . . . . . . . . . . . . . . . . . . . . . 6 61 3.4. Data Confidentiality . . . . . . . . . . . . . . . . . . 6 62 3.5. Data Integrity . . . . . . . . . . . . . . . . . . . . . 7 63 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 64 5. Security Considerations . . . . . . . . . . . . . . . . . . . 7 65 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 66 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 67 7.1. Normative References . . . . . . . . . . . . . . . . . . 9 68 7.2. Informative References . . . . . . . . . . . . . . . . . 9 69 Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 10 70 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 72 1. Introduction 74 The Registration Data Access Protocol (RDAP) is specified in multiple 75 documents, including "Registration Data Access Protocol Lookup 76 Format" [I-D.ietf-weirds-rdap-query], "JSON Responses for the 77 Registration Data Access Protocol (RDAP)" 78 [I-D.ietf-weirds-json-response], and "HTTP usage in the Registration 79 Data Access Protocol (RDAP)" [I-D.ietf-weirds-using-http]. 81 One goal of RDAP is to provide security services that do not exist in 82 the WHOIS [RFC3912] protocol, including authentication, 83 authorization, availability, data confidentiality, and data 84 integrity. This document describes how each of these services is 85 achieved by RDAP using features that are available in other protocol 86 layers. Additional or alternative mechanisms can be added in the 87 future. Where applicable, informational references to requirements 88 for a WHOIS replacement service [RFC3707] are noted. 90 2. Conventions Used in This Document 92 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 93 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 94 document are to be interpreted as described in RFC 2119 [RFC2119]. 96 2.1. Acronyms and Abbreviations 98 DNR: Domain Name Registry 100 HTTP: Hypertext Transfer Protocol 102 JSON: JavaScript Object Notation 104 RDAP: Registration Data Access Protocol 106 RIR: Regional Internet Registry 108 TLS: Transport Layer Security 110 3. Information Security Services and RDAP 112 RDAP itself does not include native security services. Instead, RDAP 113 relies on features that are available in other protocol layers to 114 provide needed security services including authentication, 115 authorization, availability, data confidentiality, and data 116 integrity. A description of each of these security services can be 117 found in "Internet Security Glossary, Version 2" [RFC4949]. No 118 requirements have been identified for other security services. 120 3.1. Authentication 122 This section describes security authentication mechanisms and their 123 need for implementation by authorization policies. It describes 124 requirements for the implementations of clients and servers, but does 125 not dictate the policies of server operators. For example, a server 126 operator with no policy regarding differentiated or tiered access to 127 data will have no authorization mechanisms and will have no need for 128 any type of authentication. A server operator with policies on 129 differentiated access will have to construct an authorization scheme 130 and will need to follow the specified authentication requirements. 132 WHOIS does not provide features to identify and authenticate clients. 133 As noted in section 3.1.4.2 of "Cross Registry Internet Service 134 Protocol (CRISP) Requirements" [RFC3707], there is utility in 135 allowing server operators to offer "varying degrees of access 136 depending on policy and need". Clients have to be identified and 137 authenticated to provide that utility. 139 RDAP's authentication framework needs to accommodate anonymous access 140 as well as verification of identities using a range of authentication 141 methods and credential services. To that end, RDAP clients and 142 servers MUST implement the authentication framework specified in 143 "HTTP Authentication: Basic and Digest Access Authentication" 145 [RFC7235]. The "basic" scheme can be used to send a client's user 146 name and password to a server in plaintext, based64-encoded form. 147 The "digest" scheme can be used to authenticate a client without 148 exposing the client's plaintext password. If the "basic" scheme is 149 used, HTTP Over TLS [RFC2818] MUST be used to protect the client's 150 credentials from disclosure while in transit (see Section 3.4). 152 Servers MUST support either Basic or Digest authentication; they are 153 not required to support both. Clients MUST support both to 154 interoperate with servers that support one or the other. 156 The Transport Layer Security Protocol [RFC5246] includes an optional 157 feature to identify and authenticate clients who possess and present 158 a valid X.509 digital certificate [RFC5280]. Support for this 159 feature is OPTIONAL. 161 RDAP does not impose any unique server authentication requirements. 162 The server authentication provided by TLS fully addresses the needs 163 of RDAP. In general, transports for RDAP must either provide a TLS- 164 protected transport (e.g., HTTPS) or a mechanism that provides an 165 equivalent level of server authentication. 167 Work on HTTP authentication methods continues. RDAP is designed to 168 be agile enough to support additional methods as they are defined. 170 3.1.1. Federated Authentication 172 The traditional client-server authentication model requires clients 173 to maintain distinct credentials for every RDAP server. This 174 situation can become unwieldy as the number of RDAP servers 175 increases. Federated authentication mechanisms allow clients to use 176 one credential to access multiple RDAP servers and reduce client 177 credential management complexity. RDAP MAY include a federated 178 authentication mechanism that permits a client to access multiple 179 RDAP servers in the same federation with one credential. 181 Federated authentication mechanisms used by RDAP MUST be fully 182 supported by HTTP. OAuth, OpenID, and CA-based mechanisms are three 183 possible approaches to provide federated authentication. At the time 184 of this document's publication, negotiation or advertisement of 185 federated authentication services is still an undefined mechanism by 186 the noted federated authentication protocols. Developing this 187 mechanism is beyond the scope of this document. 189 The OAuth authorization framework [RFC6749] describes a method for 190 users to access protected web resources without having to hand out 191 their credentials. Instead, clients are issued access tokens by 192 authorization servers with the permission of the resource owners. 194 Using OAuth, multiple RDAP servers can form a federation and the 195 clients can access any server in the same federation by providing one 196 credential registered in any server in that federation. The OAuth 197 authorization framework is designed for use with HTTP and thus can be 198 used with RDAP. 200 OpenID [OpenID] is a decentralized single sign-on authentication 201 system that allows users to log in at multiple web sites with one ID 202 instead of having to create multiple unique accounts. An end user 203 can freely choose which OpenID provider to use, and can preserve 204 their Identifier if they switch OpenID providers. 206 Note that OAuth and OpenID do not consistently require data 207 confidentiality services to protect interactions between providers 208 and consumers. HTTP Over TLS [RFC2818] can be used as needed to 209 provide protection against man-in-the-middle attacks. 211 The Transport Layer Security Protocol [RFC5246], Section 7.4.6, 212 describes the specification of a client certificate. Clients who 213 possess and present a valid X.509 digital certificate, issued by an 214 entity called a "Certification Authority" (CA), could be identified 215 and authenticated by a server who trusts the corresponding CA. A 216 certificate authentication method can be used to achieve federated 217 authentication in which multiple RDAP servers all trust the same CAs 218 and then any client with a certificate issued by a trusted CA can 219 access any RDAP server in the federation. This certificate-based 220 mechanism is supported by HTTPS and can be used with RDAP. 222 3.2. Authorization 224 WHOIS does not provide services to grant different levels of access 225 to clients based on a client's authenticated identity. As noted in 226 section 3.1.4.2 of "Cross Registry Internet Service Protocol (CRISP) 227 Requirements" [RFC3707], there is utility in allowing server 228 operators to offer "varying degrees of access depending on policy and 229 need". Access control decisions can be made once a client's identity 230 has been established and authenticated (see Section 3.1). 232 Server operators MAY offer varying degrees of access depending on 233 policy and need in conjunction with the authentication methods 234 described in Section 3.1. If such varying degrees of access are 235 supported, an RDAP server MUST provide granular access controls (that 236 is, on a per registration data object basis) in order to implement 237 authorization policies. Some examples: 239 - Clients will be allowed access only to data for which they have a 240 relationship. 242 - Unauthenticated or anonymous access status may not yield any 243 contact information. 245 - Full access may be granted to a special group of authenticated 246 clients. 248 The type of access allowed by a server will most likely vary from one 249 operator to the next. 251 3.3. Availability 253 An RDAP service has to be available to be useful. There are no RDAP- 254 unique requirements to provide availability, but as a general 255 security consideration a service operator needs to be aware of the 256 issues associated with denial of service. A thorough reading of 257 "Internet Denial-of-Service Considerations" [RFC4732] is advised. 259 An RDAP service MAY use an HTTP throttling mechanism to limit the 260 number of queries that a single client can send in a given period of 261 time. If used, the server SHOULD return an HTTP 429 (Too Many 262 Requests) response code as described in "Additional HTTP Status 263 Codes" [RFC6585]. A client that receives a 429 response SHOULD 264 decrease its query rate, and honor the Retry-After header field if 265 one is present. Note that this is not a defense against denial-of- 266 service attacks, since a malicious client could ignore the code and 267 continue to send queries at a high rate. A server might use another 268 response code if it did not wish to reveal to a client that rate 269 limiting is the reason for the denial of a reply. 271 3.4. Data Confidentiality 273 WHOIS does not provide the ability to protect data from inadvertent 274 disclosure while in transit. RDAP uses HTTP Over TLS [RFC2818] to 275 provide that protection by encrypting all traffic sent on the 276 connection between client and server. It is also possible to encrypt 277 discrete objects (such as command path segments and JSON-encoded 278 response objects) at one endpoint, send them to the other endpoint 279 via an unprotected transport protocol, and decrypt the object on 280 receipt. Encryption algorithms as described in "Internet Security 281 Glossary, Version 2" [RFC4949] are commonly used to provide data 282 confidentiality at the object level. 284 There are no current requirements for object-level data 285 confidentiality using encryption. Support for this feature could be 286 added to RDAP in the future. 288 As noted in Section 3.1, the HTTP "basic" authentication scheme can 289 be used to authenticate a client. When this scheme is used, HTTP 290 Over TLS MUST be used to protect the client's credentials from 291 disclosure while in transit. If the policy of the server operator 292 requires encryption to protect client-server data exchanges (such as 293 to protect non-public data that can not be accessed without client 294 identification and authentication), HTTP Over TLS MUST be used to 295 protect those exchanges. 297 3.5. Data Integrity 299 WHOIS does not provide the ability to protect data from modification 300 while in transit. Web services such as RDAP commonly use HTTP Over 301 TLS [RFC2818] to provide that protection by using a keyed Message 302 Authentication Code (MAC) to detect modifications. It is also 303 possible to sign discrete objects (such as command path segments and 304 JSON-encoded response objects) at one endpoint, send them to the 305 other endpoint via a transport protocol, and validate the signature 306 of the object on receipt. Digital signature algorithms as described 307 in "Internet Security Glossary, Version 2" [RFC4949] are commonly 308 used to provide data integrity at the object level. 310 There are no current requirements for object-level data integrity 311 using digital signatures. Support for this feature could be added to 312 RDAP in the future. 314 The most specific need for this service is to provide assurance that 315 HTTP 30x redirection hints [RFC7231] and response elements returned 316 from the server are not modified while in transit. If the policy of 317 the server operator requires message integrity for client-server data 318 exchanges, HTTP Over TLS MUST be used to protect those exchanges. 320 4. IANA Considerations 322 This document does not specify any IANA actions. This section can be 323 removed if this document is published as an RFC. 325 5. Security Considerations 327 One of the goals of RDAP is to provide security services that do not 328 exist in the WHOIS protocol. This document describes the security 329 services provided by RDAP and associated protocol layers, including 330 authentication, authorization, availability, data confidentiality, 331 and data integrity. Non-repudiation services were also considered 332 and ultimately rejected due to a lack of requirements. There are, 333 however, currently-deployed WHOIS servers that can return signed 334 responses that provide non-repudiation with proof of origin. RDAP 335 might need to be extended to provide this service in the future. 337 As an HTTP-based protocol RDAP is susceptible to code injection 338 attacks. Code injection refers to adding code into a computer system 339 or program to alter the course of execution. There are many types of 340 code injection, including SQL injection, dynamic variable or function 341 injection, include file injection, shell injection, and HTML-script 342 injection among others. Data confidentiality and integrity services 343 provide a measure of defense against man-in-the-middle injection 344 attacks, but vulnerabilities in both client-side and server-side 345 software make it possible for injection attacks to succeed. 346 Consistently checking and validating server credentials can help 347 detect man-in-the-middle attacks. 349 As noted in Section 3.1.1, digital certificates can be used to 350 implement federated authentication. There is a risk of too- 351 promiscuous, or even rogue, CAs being included in the list of 352 acceptable CAs that the TLS server sends the client as part of the 353 TLS client-authentication handshake and lending the appearance of 354 trust to certificates signed by those CAs. Periodic monitoring of 355 the list of CAs that RDAP servers trust for client authentication can 356 help reduce this risk. 358 The Transport Layer Security Protocol [RFC5246] includes a null 359 cipher suite that does not encrypt data and thus does not provide 360 data confidentiality. This option must not be used when data 361 confidentiality services are needed. 363 Data integrity services are sometimes mistakenly associated with 364 directory service operational policy requirements focused on data 365 accuracy. "Accuracy" refers to the truthful association of data 366 elements (such as names, addresses, and telephone numbers) in the 367 context of a particular directory object (such as a domain name). 368 Accuracy requirements are out of scope for this protocol. 370 Additional security considerations are described in the 371 specifications for HTTP [RFC7231], HTTP basic and digest access 372 authentication [RFC7235], HTTP Over TLS [RFC2818], and additional 373 HTTP status codes [RFC6585]. Security considerations for federated 374 authentication systems can be found in the OAuth [RFC6749] and OpenID 375 [OpenID] specifications. 377 6. Acknowledgements 379 The authors would like to acknowledge the following individuals for 380 their contributions to this document: Richard Barnes, Marc Blanchet, 381 Ernie Dainow, Spencer Dawkins, Jean-Philippe Dionne, Byron Ellacott, 382 Stephen Farrell, Tony Hansen, Peter Koch, Murray Kucherawy, Barry 383 Leiba, Andrew Newton, and Linlin Zhou. 385 7. References 387 7.1. Normative References 389 [I-D.ietf-weirds-json-response] 390 Newton, A. and S. Hollenbeck, "JSON Responses for the 391 Registration Data Access Protocol (RDAP)", draft-ietf- 392 weirds-json-response-10 (work in progress), October 2014. 394 [I-D.ietf-weirds-rdap-query] 395 Newton, A. and S. Hollenbeck, "Registration Data Access 396 Protocol Query Format", draft-ietf-weirds-rdap-query-15 397 (work in progress), October 2014. 399 [I-D.ietf-weirds-using-http] 400 Newton, A., Ellacott, B., and N. Kong, "HTTP usage in the 401 Registration Data Access Protocol (RDAP)", draft-ietf- 402 weirds-using-http-13 (work in progress), October 2014. 404 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 405 Requirement Levels", BCP 14, RFC 2119, March 1997. 407 [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. 409 [RFC6585] Nottingham, M. and R. Fielding, "Additional HTTP Status 410 Codes", RFC 6585, April 2012. 412 [RFC7231] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol 413 (HTTP/1.1): Semantics and Content", RFC 7231, June 2014. 415 [RFC7235] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol 416 (HTTP/1.1): Authentication", RFC 7235, June 2014. 418 7.2. Informative References 420 [OpenID] OpenID Foundation, "OpenID Authentication 2.0 - Final", 421 December 2007, . 423 [RFC3707] Newton, A., "Cross Registry Internet Service Protocol 424 (CRISP) Requirements", RFC 3707, February 2004. 426 [RFC3912] Daigle, L., "WHOIS Protocol Specification", RFC 3912, 427 September 2004. 429 [RFC4732] Handley, M., Rescorla, E., and IAB, "Internet Denial-of- 430 Service Considerations", RFC 4732, December 2006. 432 [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", RFC 433 4949, August 2007. 435 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 436 (TLS) Protocol Version 1.2", RFC 5246, August 2008. 438 [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., 439 Housley, R., and W. Polk, "Internet X.509 Public Key 440 Infrastructure Certificate and Certificate Revocation List 441 (CRL) Profile", RFC 5280, May 2008. 443 [RFC6749] Hardt, D., "The OAuth 2.0 Authorization Framework", RFC 444 6749, October 2012. 446 Appendix A. Change Log 448 Initial -00: Adopted as working group document. 449 -01: Extensive text additions and revisions based on in-room 450 discussion at IETF-85. Sections for data integrity and non- 451 repudiation have been removed due to a lack of requirements, but 452 both topics are now addressed in the Security Considerations 453 section. 454 -02: Fixed document names in the Introduction. Modified text in 455 Section 3.1.1 to clarify requirement. Added text to Section 3.3 456 to describe rate limiting. Added new data integrity section. 457 Updated security considerations to describe injection attacks. 458 -03: Extensive updates to address WG last call comments: rewrote 459 introduction, removed references to draft documents, changed 460 "HTML" to "HTTP" in Section 5, eliminated upper case words that 461 could be misunderstood to be normative guidance, rewrote 462 Section 3.4 and Section 3.5. 463 -04: Address AD evaluation comments: In Section 3.1 change "RDAP 464 MUST include an authentication framework that can accommodate" to 465 "RDAP's authentication framework needs to accommodate"; in 466 Section 3.2 change "RDAP MUST include an authorization framework 467 that is capable of providing granular (per registration data 468 object) access controls according to the policies of the operator" 469 to "An RDAP server MUST provide granular access controls (that is, 470 on a per registration data object basis) in order to implement 471 authorization policies"; move RFCs 4732, 5280, and 6749 from 472 normative to informative subsection. 473 -05: Address IETF last call comments: Added text to Section 3.1.1 to 474 recommend the use of HTTP over TLS. Modified Section 3.2 to 475 clarify granular access control text. Added additional Security 476 Considerations. Made references to RFC 5246 and OpenID 477 informative. Minor typo fixes. 478 -06: Keepalive refresh. No content updates. 479 -07: Keepalive refresh. No content updates. 481 -08: Updated HTTP references. 2616 -> 7231, 2617 -> 7235. 482 -09: Address WG last call comments. 483 -10: Address IETF last call comments. 485 Authors' Addresses 487 Scott Hollenbeck 488 Verisign Labs 489 12061 Bluemont Way 490 Reston, VA 20190 491 US 493 Email: shollenbeck@verisign.com 494 URI: http://www.verisignlabs.com/ 496 Ning Kong 497 China Internet Network Information Center 498 4 South 4th Street, Zhongguancun, Haidian District 499 Beijing 100190 500 China 502 Phone: +86 10 5881 3147 503 Email: nkong@cnnic.cn