idnits 2.17.1 draft-ietf-weirds-rdap-sec-06.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 (February 10, 2014) is 3699 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-06 == Outdated reference: A later version (-18) exists of draft-ietf-weirds-rdap-query-10 == Outdated reference: A later version (-15) exists of draft-ietf-weirds-using-http-08 -- Possible downref: Normative reference to a draft: ref. 'I-D.ietf-weirds-using-http' ** Obsolete normative reference: RFC 2616 (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235) ** Obsolete normative reference: RFC 2617 (Obsoleted by RFC 7235, RFC 7615, RFC 7616, RFC 7617) ** Obsolete normative reference: RFC 2818 (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: August 14, 2014 CNNIC 6 February 10, 2014 8 Security Services for the Registration Data Access Protocol 9 draft-ietf-weirds-rdap-sec-06 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 August 14, 2014. 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 . . . . . . . . . . . . . . . . . . . . . . 5 61 3.4. Data Confidentiality . . . . . . . . . . . . . . . . . . 6 62 3.5. Data Integrity . . . . . . . . . . . . . . . . . . . . . 6 63 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 64 5. Security Considerations . . . . . . . . . . . . . . . . . . . 7 65 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 66 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 67 7.1. Normative References . . . . . . . . . . . . . . . . . . 8 68 7.2. Informative References . . . . . . . . . . . . . . . . . 9 69 Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 10 70 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10 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. Where applicable, informational references to 86 requirements for a WHOIS replacement service [RFC3707] are noted. 88 2. Conventions Used in This Document 90 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 91 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 92 document are to be interpreted as described in RFC 2119 [RFC2119]. 94 2.1. Acronyms and Abbreviations 96 DNR: Domain Name Registry 98 HTTP: Hypertext Transfer Protocol 100 JSON: JavaScript Object Notation 102 RDAP: Registration Data Access Protocol 104 RIR: Regional Internet Registry 106 TLS: Transport Layer Security 108 3. Information Security Services and RDAP 110 RDAP itself does not include native security services. Instead, RDAP 111 relies on features that are available in other protocol layers to 112 provide needed security services including authentication, 113 authorization, availability, data confidentiality, and data 114 integrity. A description of each of these security services can be 115 found in "Internet Security Glossary, Version 2" [RFC4949]. No 116 requirements have been identified for other security services. 118 3.1. Authentication 120 WHOIS does not provide features to identify and authenticate clients. 121 As noted in section 3.1.4.2 of "Cross Registry Internet Service 122 Protocol (CRISP) Requirements" [RFC3707], there is utility in 123 allowing server operators to offer "varying degrees of access 124 depending on policy and need". Clients have to be identified and 125 authenticated to provide that utility. 127 RDAP's authentication framework needs to accommodate anonymous access 128 as well as verification of identities using a range of authentication 129 methods and credential services. To that end, RDAP clients and 130 servers MUST implement the authentication framework specified in 131 "HTTP Authentication: Basic and Digest Access Authentication" 132 [RFC2617]. The "basic" scheme can be used to send a client's user 133 name and password to a server in plaintext, based64-encoded form. 134 The "digest" scheme can be used to authenticate a client without 135 exposing the client's plaintext password. If the "basic" scheme is 136 used, HTTP Over TLS [RFC2818] MUST be used to protect the client's 137 credentials from disclosure while in transit (see Section 3.4). 139 Servers MUST support either Basic or Digest authentication; they are 140 not required to support both. Clients MUST support both to 141 interoperate with servers that support one or the other. 143 The Transport Layer Security Protocol [RFC5246] includes an optional 144 feature to identify and authenticate clients who possess and present 145 a valid X.509 digital certificate [RFC5280]. Support for this 146 feature is OPTIONAL. 148 RDAP does not impose any unique server authentication requirements. 149 The server authentication provided by TLS fully addresses the needs 150 of RDAP. In general, transports for RDAP must either provide a TLS- 151 protected transport (e.g., HTTPS) or a mechanism that provides an 152 equivalent level of server authentication. 154 Work on HTTP authentication methods continues. RDAP ought to be 155 agile enough to support additional methods as they are defined. 157 3.1.1. Federated Authentication 159 The traditional client-server authentication model requires clients 160 to maintain distinct credentials for every RDAP server. This 161 situation can become unwieldy as the number of RDAP servers 162 increases. Federated authentication mechanisms allow clients to use 163 one credential to access multiple RDAP servers and reduce client 164 credential management complexity. RDAP MAY include a federated 165 authentication mechanism that permits a client to access multiple 166 RDAP servers in the same federation with one credential. 168 Federated authentication mechanisms used by RDAP are OPTIONAL. If 169 used, they MUST be fully supported by HTTP. OAuth, OpenID, and CA- 170 based mechanisms are three possible approaches to provide federated 171 authentication. 173 The OAuth authorization framework [RFC6749] describes a method for 174 users to access protected web resources without having to hand out 175 their credentials. Instead, clients are issued access tokens by 176 authorization servers with the permission of the resource owners. 177 Using OAuth, multiple RDAP servers can form a federation and the 178 clients can access any server in the same federation by providing one 179 credential registered in any server in that federation. The OAuth 180 authorization framework is designed for use with HTTP and thus can be 181 used with RDAP. 183 OpenID [OpenID] is a decentralized single sign-on authentication 184 system that allows users to log in at multiple web sites with one ID 185 instead of having to create multiple unique accounts. An end user 186 can freely choose which OpenID provider to use, and can preserve 187 their Identifier if they switch OpenID providers. 189 Note that OAuth and OpenID do not consistently require data 190 confidentiality services to protect interactions between providers 191 and consumers. HTTP Over TLS [RFC2818] can be used as needed to 192 provide protection against man-in-the-middle attacks. 194 The Transport Layer Security Protocol [RFC5246], Section 7.4.6, 195 describes the specification of a client certificate. Clients who 196 possess and present a valid X.509 digital certificate, issued by an 197 entity called a "Certification Authority" (CA), could be identified 198 and authenticated by a server who trusts the corresponding CA. A 199 certificate authentication method can be used to achieve federated 200 authentication in which multiple RDAP servers all trust the same CAs 201 and then any client with a certificate issued by a trusted CA can 202 access any RDAP server in the federation. This certificate-based 203 mechanism is supported by HTTPS and can be used with RDAP. 205 3.2. Authorization 207 WHOIS does not provide services to grant different levels of access 208 to clients based on a client's authenticated identity. As noted in 209 section 3.1.4.2 of "Cross Registry Internet Service Protocol (CRISP) 210 Requirements" [RFC3707], there is utility in allowing server 211 operators to offer "varying degrees of access depending on policy and 212 need". Access control decisions can be made once a client's identity 213 has been established and authenticated (see Section 3.1). 215 Server operators SHOULD offer varying degrees of access depending on 216 policy and need in conjunction with the authentication methods 217 described in Section 3.1. If such varying degrees of access are 218 supported, an RDAP server MUST provide granular access controls (that 219 is, on a per registration data object basis) in order to implement 220 authorization policies. Some examples: 222 - Clients will be allowed access only to data for which they have a 223 relationship. 225 - Unauthenticated or anonymous access status may not yield any 226 contact information. 228 - Full access may be granted to a special group of authenticated 229 clients. 231 The type of access allowed by a server will most likely vary from one 232 operator to the next. 234 3.3. Availability 236 An RDAP service has to be available to be useful. There are no RDAP- 237 unique requirements to provide availability, but as a general 238 security consideration a service operator needs to be aware of the 239 issues associated with denial of service. A thorough reading of 240 "Internet Denial-of-Service Considerations" [RFC4732] is advised. 242 An RDAP service MAY use a throttling mechanism to limit the number of 243 queries that a single client can send in a given period of time. If 244 used, the server SHOULD return a 429 response code as described in 245 "Additional HTTP Status Codes" [RFC6585]. A client that receives a 246 429 response SHOULD decrease its query rate, and honor the Retry- 247 After header field if one is present. Note that this is not a 248 defense against denial-of-service attacks, since a malicious client 249 could ignore the code and continue to send queries at a high rate. A 250 server might use another response code if it did not wish to reveal 251 to a client that rate limiting is the reason for the denial of a 252 reply. 254 3.4. Data Confidentiality 256 WHOIS does not provide the ability to protect data from inadvertent 257 disclosure while in transit. Web services such as RDAP commonly use 258 HTTP Over TLS [RFC2818] to provide that protection by encrypting all 259 traffic sent on the connection between client and server. It is also 260 possible to encrypt discrete objects (such as command path segments 261 and JSON-encoded response objects) at one endpoint, send them to the 262 other endpoint via an unprotected transport protocol, and decrypt the 263 object on receipt. Encryption algorithms as described in "Internet 264 Security Glossary, Version 2" [RFC4949] are commonly used to provide 265 data confidentiality at the object level. 267 There are no current requirements for object-level data 268 confidentiality using encryption. Support for this feature could be 269 added to RDAP in the future. 271 As noted in Section 3.1, the HTTP "basic" authentication scheme can 272 be used to authenticate a client. When this scheme is used, HTTP 273 Over TLS MUST be used to protect the client's credentials from 274 disclosure while in transit. If the policy of the server operator 275 requires encryption to protect client-server data exchanges (such as 276 to protect non-public data that can not be accessed without client 277 identification and authentication), HTTP Over TLS MUST be used to 278 protect those exchanges. 280 3.5. Data Integrity 282 WHOIS does not provide the ability to protect data from modification 283 while in transit. Web services such as RDAP commonly use HTTP Over 284 TLS [RFC2818] to provide that protection by using a keyed Message 285 Authentication Code (MAC) to detect modifications. It is also 286 possible to sign discrete objects (such as command path segments and 287 JSON-encoded response objects) at one endpoint, send them to the 288 other endpoint via a transport protocol, and validate the signature 289 of the object on receipt. Digital signature algorithms as described 290 in "Internet Security Glossary, Version 2" [RFC4949] are commonly 291 used to provide data integrity at the object level. 293 There are no current requirements for object-level data integrity 294 using digital signatures. Support for this feature could be added to 295 RDAP in the future. 297 The most specific need for this service is to provide assurance that 298 HTTP 30x redirection hints [RFC2616] and response elements returned 299 from the server are not modified while in transit. If the policy of 300 the server operator requires message integrity for client-server data 301 exchanges, HTTP Over TLS MUST be used to protect those exchanges. 303 4. IANA Considerations 305 This document does not specify any IANA actions. This section can be 306 removed if this document is published as an RFC. 308 5. Security Considerations 310 One of the goals of RDAP is to provide security services that do not 311 exist in the WHOIS protocol. This document describes the security 312 services provided by RDAP and associated protocol layers, including 313 authentication, authorization, availability, data confidentiality, 314 and data integrity. Non-repudiation services were also considered 315 and ultimately rejected due to a lack of requirements. There are, 316 however, currently-deployed WHOIS servers that can return signed 317 responses that provide non-repudiation with proof of origin. RDAP 318 might need to be extended to provide this service in the future. 320 As an HTTP-based protocol RDAP is susceptible to code injection 321 attacks. Code injection refers to adding code into a computer system 322 or program to alter the course of execution. There are many types of 323 code injection, including SQL injection, dynamic variable or function 324 injection, include file injection, shell injection, and HTML-script 325 injection among others. Data confidentiality and integrity services 326 provide a measure of defense against man-in-the-middle injection 327 attacks, but vulnerabilities in both client-side and server-side 328 software make it possible for injection attacks to succeed. 329 Consistently checking and validating server credentials can help 330 detect man-in-the-middle attacks. 332 As noted in Section 3.1.1, digital certificates can be used to 333 implement federated authentication. There is a risk of too- 334 promiscuous, or even rogue, CAs being included in the list of 335 acceptable CAs that the TLS server sends the client as part of the 336 TLS client-authentication handshake and lending the appearance of 337 trust to certificates signed by those CAs. Periodic monitoring of 338 the list of CAs that RDAP servers trust for client authentication can 339 help reduce this risk. 341 The Transport Layer Security Protocol [RFC5246] includes a null 342 cipher suite that does not encrypt data and thus does not provide 343 data confidentiality. This option must not be used when data 344 confidentiality services are needed. 346 Data integrity services are sometimes mistakenly associated with 347 directory service operational policy requirements focused on data 348 accuracy. "Accuracy" refers to the truthful association of data 349 elements (such as names, addresses, and telephone numbers) in the 350 context of a particular directory object (such as a domain name). 351 Accuracy requirements are out of scope for this protocol. 353 Additional security considerations are described in the 354 specifications for HTTP [RFC2616], HTTP basic and digest access 355 authentication [RFC2617], HTTP Over TLS [RFC2818], and additional 356 HTTP status codes [RFC6585]. Security considerations for federated 357 authentication systems can be found in the OAuth [RFC6749] and OpenID 358 [OpenID] specifications. 360 6. Acknowledgements 362 The authors would like to acknowledge the following individuals for 363 their contributions to this document: Richard Barnes, Marc Blanchet, 364 Ernie Dainow, Spencer Dawkins, Jean-Philippe Dionne, Byron Ellacott, 365 Stephen Farrell, Tony Hansen, Peter Koch, Murray Kucherawy, Barry 366 Leiba, Andrew Newton, and Linlin Zhou. 368 7. References 370 7.1. Normative References 372 [I-D.ietf-weirds-json-response] 373 Newton, A. and S. Hollenbeck, "JSON Responses for the 374 Registration Data Access Protocol (RDAP)", draft-ietf- 375 weirds-json-response-06 (work in progress), October 2013. 377 [I-D.ietf-weirds-rdap-query] 378 Newton, A. and S. Hollenbeck, "Registration Data Access 379 Protocol Query Format", draft-ietf-weirds-rdap-query-10 380 (work in progress), February 2014. 382 [I-D.ietf-weirds-using-http] 383 Newton, A., Ellacott, B., and N. Kong, "HTTP usage in the 384 Registration Data Access Protocol (RDAP)", draft-ietf- 385 weirds-using-http-08 (work in progress), February 2014. 387 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 388 Requirement Levels", BCP 14, RFC 2119, March 1997. 390 [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., 391 Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext 392 Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. 394 [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., 395 Leach, P., Luotonen, A., and L. Stewart, "HTTP 396 Authentication: Basic and Digest Access Authentication", 397 RFC 2617, June 1999. 399 [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. 401 [RFC6585] Nottingham, M. and R. Fielding, "Additional HTTP Status 402 Codes", RFC 6585, April 2012. 404 7.2. Informative References 406 [OpenID] OpenID Foundation, "OpenID Authentication 2.0 - Final", 407 December 2007, . 409 [RFC3707] Newton, A., "Cross Registry Internet Service Protocol 410 (CRISP) Requirements", RFC 3707, February 2004. 412 [RFC3912] Daigle, L., "WHOIS Protocol Specification", RFC 3912, 413 September 2004. 415 [RFC4732] Handley, M., Rescorla, E., and IAB, "Internet Denial-of- 416 Service Considerations", RFC 4732, December 2006. 418 [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", RFC 419 4949, August 2007. 421 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 422 (TLS) Protocol Version 1.2", RFC 5246, August 2008. 424 [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., 425 Housley, R., and W. Polk, "Internet X.509 Public Key 426 Infrastructure Certificate and Certificate Revocation List 427 (CRL) Profile", RFC 5280, May 2008. 429 [RFC6749] Hardt, D., "The OAuth 2.0 Authorization Framework", RFC 430 6749, October 2012. 432 Appendix A. Change Log 434 Initial -00: Adopted as working group document. 435 -01: Extensive text additions and revisions based on in-room 436 discussion at IETF-85. Sections for data integrity and non- 437 repudiation have been removed due to a lack of requirements, but 438 both topics are now addressed in the Security Considerations 439 section. 440 -02: Fixed document names in the Introduction. Modified text in 441 Section 3.1.1 to clarify requirement. Added text to Section 3.3 442 to describe rate limiting. Added new data integrity section. 443 Updated security considerations to describe injection attacks. 444 -03: Extensive updates to address WG last call comments: rewrote 445 introduction, removed references to draft documents, changed 446 "HTML" to "HTTP" in Section 5, eliminated upper case words that 447 could be misunderstood to be normative guidance, rewrote 448 Section 3.4 and Section 3.5. 449 -04: Address AD evaluation comments: In Section 3.1 change "RDAP 450 MUST include an authentication framework that can accommodate" to 451 "RDAP's authentication framework needs to accommodate"; in 452 Section 3.2 change "RDAP MUST include an authorization framework 453 that is capable of providing granular (per registration data 454 object) access controls according to the policies of the operator" 455 to "An RDAP server MUST provide granular access controls (that is, 456 on a per registration data object basis) in order to implement 457 authorization policies"; move RFCs 4732, 5280, and 6749 from 458 normative to informative subsection. 459 -05: Address IETF last call comments: Added text to Section 3.1.1 to 460 recommend the use of HTTP over TLS. Modified Section 3.2 to 461 clarify granular access control text. Added additional Security 462 Considerations. Made references to RFC 5246 and OpenID 463 informative. Minor typo fixes. 464 -06: Keepalive refresh. No content updates. 466 Authors' Addresses 468 Scott Hollenbeck 469 Verisign Labs 470 12061 Bluemont Way 471 Reston, VA 20190 472 US 474 Email: shollenbeck@verisign.com 475 URI: http://www.verisignlabs.com/ 476 Ning Kong 477 China Internet Network Information Center 478 4 South 4th Street, Zhongguancun, Haidian District 479 Beijing 100190 480 China 482 Phone: +86 10 5881 3147 483 Email: nkong@cnnic.cn