| < draft-wkumari-dhc-capport-04.txt | draft-wkumari-dhc-capport-05.txt > | |||
|---|---|---|---|---|
| Network Working Group W. Kumari | Network Working Group W. Kumari | |||
| Internet-Draft Google | Internet-Draft Google | |||
| Intended status: Informational O. Gudmundsson | Intended status: Informational O. Gudmundsson | |||
| Expires: January 5, 2015 Shinkuro Inc. | Expires: March 12, 2015 Shinkuro Inc. | |||
| P. Ebersman | P. Ebersman | |||
| Comcast | Comcast | |||
| S. Sheng | S. Sheng | |||
| ICANN | ICANN | |||
| July 4, 2014 | September 8, 2014 | |||
| Captive-Portal identification in DHCP / RA | Captive-Portal identification in DHCP / RA | |||
| draft-wkumari-dhc-capport-04 | draft-wkumari-dhc-capport-05 | |||
| Abstract | Abstract | |||
| In many environments (such as hotels, coffee shops and other | In many environments (such as hotels, coffee shops and other | |||
| establishments that offer Internet service to customers), it is | establishments that offer Internet service to customers), it is | |||
| common to start new connections in a captive portal mode, i.e. highly | common to start new connections in a captive portal mode, i.e. highly | |||
| restrict what the customer can do until the customer has accepted | restrict what the customer can do until the customer has accepted | |||
| terms of service, provided payment information and / or | terms of service, provided payment information and / or | |||
| authenticated. | authenticated. | |||
| skipping to change at page 1, line 44 ¶ | skipping to change at page 1, line 44 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on January 5, 2015. | This Internet-Draft will expire on March 12, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 27 ¶ | skipping to change at page 2, line 27 ¶ | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Requirements notation . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements notation . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. DNS Redirection . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. DNS Redirection . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. HTTP Redirection . . . . . . . . . . . . . . . . . . . . 4 | 2.2. HTTP Redirection . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.3. IP Hijacking . . . . . . . . . . . . . . . . . . . . . . 5 | 2.3. IP Hijacking . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. The Captive-Portal DHCP Option . . . . . . . . . . . . . . . 5 | 3. The Captive-Portal DHCP Option . . . . . . . . . . . . . . . 5 | |||
| 4. The Captive-Portal RA Option . . . . . . . . . . . . . . . . 6 | 4. The Captive-Portal RA Option . . . . . . . . . . . . . . . . 5 | |||
| 5. Use of the Captive-Portal Option . . . . . . . . . . . . . . 6 | 5. Use of the Captive-Portal Option . . . . . . . . . . . . . . 6 | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
| 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 9. Normative References . . . . . . . . . . . . . . . . . . . . 8 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 9 | ||||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 9 | ||||
| Appendix A. Changes / Author Notes. . . . . . . . . . . . . . . 9 | Appendix A. Changes / Author Notes. . . . . . . . . . . . . . . 9 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 1. Introduction | 1. Introduction | |||
| In many environments, users need to connect to a captive portal | In many environments, users need to connect to a captive portal | |||
| device and agree to an acceptable use policy and / or provide billing | device and agree to an acceptable use policy and / or provide billing | |||
| information before they can access the Internet. | information before they can access the Internet. | |||
| In order to present the user with the captive portal web page, many | In order to present the user with the captive portal web page, many | |||
| skipping to change at page 4, line 17 ¶ | skipping to change at page 4, line 12 ¶ | |||
| These techniques are very similar to attacks that protocols (such as | These techniques are very similar to attacks that protocols (such as | |||
| VPNs, DNSSEC, TLS) are designed to protect against. The interaction | VPNs, DNSSEC, TLS) are designed to protect against. The interaction | |||
| of the these protections and the interception leads to poor user | of the these protections and the interception leads to poor user | |||
| experiences, such as long timeouts, inability to reach the captive | experiences, such as long timeouts, inability to reach the captive | |||
| portal web page, etc. The interception may also leak user | portal web page, etc. The interception may also leak user | |||
| information (for example, if the captive portal intercepts and logs | information (for example, if the captive portal intercepts and logs | |||
| an HTTP Cookie, or URL of the form http://fred:password@example.com). | an HTTP Cookie, or URL of the form http://fred:password@example.com). | |||
| The user is often unaware of what is causing the issue (their browser | The user is often unaware of what is causing the issue (their browser | |||
| appears to hang, saying something like "Downloading Proxy Script", or | appears to hang, saying something like "Downloading Proxy Script", or | |||
| simply "The Internet doesn't work"), and they become frustrated. | simply "The Internet doesn't work"), and they become frustrated. | |||
| This often results in them not purchasing the Internet access | This may results in them not purchasing the Internet access provided | |||
| provided by the captive portal. | by the captive portal. | |||
| 2.1. DNS Redirection | 2.1. DNS Redirection | |||
| The CP either intercepts all DNS traffic or advertises itself (for | The CP either intercepts all DNS traffic or advertises itself (for | |||
| example using DHCP) as the recursive server for the network. Until | example using DHCP) as the recursive server for the network. Until | |||
| the user has authenticated to the captive portal, the CP responds to | the user has authenticated to the captive portal, the CP responds to | |||
| all DNS requests listing the address of its web portal. Once the | all DNS requests listing the address of its web portal. Once the | |||
| user has authenticated the CP returns the "correct" addresses. | user has authenticated the CP returns the "correct" addresses. | |||
| This technique has many shortcomings. It fails if the client is | This technique has many shortcomings. It fails if the client is | |||
| skipping to change at page 5, line 11 ¶ | skipping to change at page 5, line 5 ¶ | |||
| o It doesn't work if the client has a VPN and / or proxies their web | o It doesn't work if the client has a VPN and / or proxies their web | |||
| traffic to an external web proxy. | traffic to an external web proxy. | |||
| 2.3. IP Hijacking | 2.3. IP Hijacking | |||
| In this scenario, the captive portal intercepts connections to any IP | In this scenario, the captive portal intercepts connections to any IP | |||
| address. It spoofs the destination IP address and "pretends" to be | address. It spoofs the destination IP address and "pretends" to be | |||
| whatever the user tried to access. | whatever the user tried to access. | |||
| This technique has similar issues as the HTTP solution, but may also | This technique has issues similar to the HTTP solution, but may also | |||
| break other protocols, and may expose more of the user's private | break other protocols, and may expose more of the user's private | |||
| information. | information. | |||
| 3. The Captive-Portal DHCP Option | 3. The Captive-Portal DHCP Option | |||
| The Captive Portal DHCP Option (TBA1) informs the DHCP client that it | The Captive Portal DHCP Option (TBA1) informs the DHCP client that it | |||
| is behind a captive portal and provides the URI to access the | is behind a captive portal and provides the URI to access an | |||
| authentication page. This is primarily intended to improve the user | authentication page. This is primarily intended to improve the user | |||
| experience; for the foreseeable future captive portals will still | experience; for the foreseeable future (until such time that most | |||
| need to implement the interception techniques to serve legacy | systems implement this technique) captive portals will still need to | |||
| clients. | implement the interception techniques to serve legacy clients. | |||
| The format of the DHCP Captive-Portal DHCP option is shown below. | The format of the DHCP Captive-Portal DHCP option is shown below. | |||
| Code Len Data | Code Len Data | |||
| +------+------+------+------+------+-- --+-----+ | +------+------+------+------+------+-- --+-----+ | |||
| | code | len | URI ... | | | code | len | URI ... | | |||
| +------+------+------+------+------+-- --+-----+ | +------+------+------+------+------+-- --+-----+ | |||
| o Code: The Captive-Portal DHCP Option (TBA1 for DHCPv4, TBA2 for | o Code: The Captive-Portal DHCP Option (TBA1 for DHCPv4, TBA2 for | |||
| DHCPv6) | DHCPv6) | |||
| o Len: The length, in octets of the URI. | o Len: The length, in octets of the URI. | |||
| o URI: The URI of the authentication page that the user should | o URI: The URI of the authentication page that the user should | |||
| connect to. | connect to. | |||
| The URI MUST be a URL with an IP-literal for the host portion (to | The URI MUST NOT contain a DNS name, in order to not require the CP | |||
| remove the need to allow DNS from unauthenticated clients). The | to access DNS queries from an unauthenticated user. Rather, if IPv4 | |||
| DHCPv4 URI MUST contain an IPv4 address. | is supported in the network, one option's URI MUST contain an IPv4 | |||
| address literal, and if IPv6 is supported in the network, one | ||||
| option's URI MUST contain an IPv6 address literal. Note that this | ||||
| implies that a dual stack network would include two such options in | ||||
| its DHCP reply or RA. | ||||
| [ED NOTE: Using an address literal is less than ideal, but better | [ED NOTE: Using an address literal is less than ideal, but better | |||
| than the alternatives. Recommending a DNS name means that the CP | than the alternatives. Recommending a DNS name means that the CP | |||
| would need to allow DNS from unauthenticated clients (as we don't | would need to allow DNS from unauthenticated clients (as we don't | |||
| want to force users to use the CP's provided DNS) and some users | want to force users to use the CP's provided DNS) and some users | |||
| would use this to DNS Tunnel out. This would make the CP admin block | would use this to DNS Tunnel out. This would make the CP admin block | |||
| external recursives).] | external recursives).] | |||
| 4. The Captive-Portal RA Option | 4. The Captive-Portal RA Option | |||
| skipping to change at page 6, line 32 ¶ | skipping to change at page 6, line 26 ¶ | |||
| . . | . . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 2: Captive-Portal RA Option Format | Figure 2: Captive-Portal RA Option Format | |||
| Type TBA3 | Type TBA3 | |||
| Length 8-bit unsigned integer. The length of the option (including | Length 8-bit unsigned integer. The length of the option (including | |||
| the Type and Length fields) in units of 8 bytes. | the Type and Length fields) in units of 8 bytes. | |||
| URI The URI of the authentication page that the user should connect | URI The URI (containing an IPv6 literal) of the authentication page | |||
| to. This should be padded with NULL (0x0) to make the total | that the user should connect to. This should be padded with NULL | |||
| option length (including the Type and Length fields) a multiple of | (0x0) to make the total option length (including the Type and | |||
| 8 bytes. | Length fields) a multiple of 8 bytes. | |||
| 5. Use of the Captive-Portal Option | 5. Use of the Captive-Portal Option | |||
| [ED NOTE: This section is, and probably will remain, fairly hand | [ED NOTE: This option provides notice to the OS / User applications | |||
| wavy. This option provides notice to the OS / User applications that | that there is a CP. Because of differences in UI design between | |||
| there is a CP, but I think that the UI / etc is best designed / | Operating Systems, the exact behaviour by OS and Applications is left | |||
| handled by the Operating System vendors / Application developers. ] | to the OS vendor/Application Developer.] | |||
| The purpose of the Captive-Portal Option is to inform the operating | The purpose of the Captive-Portal Option is to inform the operating | |||
| system and applications that they are behind a captive portal type | system and applications that they are behind a captive portal type | |||
| device and will need to authenticate before getting network access | device and will need to authenticate before getting network access | |||
| (and how to reach the authentication page). What is done with this | (and how to reach the authentication page). What is done with this | |||
| information is left up to the operating system and application | information is left up to the operating system and application | |||
| vendors. This document provides a very high level example of what | vendors. This document provides a very high level example of what | |||
| could be done with this information. | could be done with this information. | |||
| Many operating systems / applications already include a "connectivity | Many operating systems / applications already include a "connectivity | |||
| skipping to change at page 7, line 35 ¶ | skipping to change at page 7, line 28 ¶ | |||
| purchases 1 hour of Internet at a cafe and stays there for 3 | purchases 1 hour of Internet at a cafe and stays there for 3 | |||
| hours -- this will "interrupt" the user a few times). | hours -- this will "interrupt" the user a few times). | |||
| 2. Present a dialog box to the user informing them that they are | 2. Present a dialog box to the user informing them that they are | |||
| behind a captive portal and ask if they wish to proceed. | behind a captive portal and ask if they wish to proceed. | |||
| 3. If the user elects to proceed, the device should initiate a | 3. If the user elects to proceed, the device should initiate a | |||
| connection to the captive portal login page using a web browser | connection to the captive portal login page using a web browser | |||
| configured with a separate cookie store, and without a proxy | configured with a separate cookie store, and without a proxy | |||
| server. If there is a VPN in place, this connection should be | server. If there is a VPN in place, this connection should be | |||
| made outside of the VPN. Some captive portals send the user a | made outside of the VPN and the user should be informed that | |||
| cookie when they authenticate (so that the user can re- | connection is outside the VPN. Some captive portals send the | |||
| authenticate more easily in the future - the browser should keep | user a cookie when they authenticate (so that the user can re- | |||
| authenticate more easily in the future) - the browser should keep | ||||
| these CP cookies separate from other cookies. | these CP cookies separate from other cookies. | |||
| 4. Once the user has authenticated normal IP connectivity should | 4. Once the user has authenticated, normal IP connectivity should | |||
| resume. This document does not define how to know that the user | resume. The CP success page should contain a string, e.g | |||
| has authenticated [Ed: Should it? And option would be for the | "CP_SATISFIED." The OS can then use this string to provide | |||
| "Thank you for paying" page to contain a unique string (e.g: | further information to the user. | |||
| "CP_SATISFIED"]. Operating system vendors may wish to provide a | ||||
| public service that their devices can use as a connectivity | ||||
| check. | ||||
| 5. The device should (using an OS dependent method) expose to the | 5. The device should (using an OS dependent method) expose to the | |||
| user / user applications that they have connected though a | user / user applications that they have connected though a | |||
| captive portal (for example by creating a file in /proc/net/ | captive portal (for example by creating a file in /proc/net/ | |||
| containing the interface and captive portal URI). This should | containing the interface and captive portal URI). This should | |||
| continue until the network changes, or a new DHCP message without | continue until the network changes, or a new DHCP message without | |||
| the CP is received. | the CP is received. | |||
| 6. IANA Considerations | 6. IANA Considerations | |||
| skipping to change at page 9, line 5 ¶ | skipping to change at page 8, line 43 ¶ | |||
| The primary author has discussed this idea with a number of folk, and | The primary author has discussed this idea with a number of folk, and | |||
| asked them to assist by becoming co-authors. Unfortunately he has | asked them to assist by becoming co-authors. Unfortunately he has | |||
| forgotten who many of them were; if you were one of them, I | forgotten who many of them were; if you were one of them, I | |||
| apologize. | apologize. | |||
| Thanks to Vint Cerf for the initial idea / asking me to write this. | Thanks to Vint Cerf for the initial idea / asking me to write this. | |||
| Thanks to Wes George for supplying the IPv6 text. Thanks to Lorenzo | Thanks to Wes George for supplying the IPv6 text. Thanks to Lorenzo | |||
| and Erik for the V6 RA kick in the pants. | and Erik for the V6 RA kick in the pants. | |||
| 9. References | Thanks for Fred Baker for detailed review and comments. | |||
| 9.1. Normative References | 9. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| 9.2. Informative References | ||||
| [I-D.ietf-sidr-iana-objects] | ||||
| Manderson, T., Vegoda, L., and S. Kent, "RPKI Objects | ||||
| issued by IANA", draft-ietf-sidr-iana-objects-03 (work in | ||||
| progress), May 2011. | ||||
| Appendix A. Changes / Author Notes. | Appendix A. Changes / Author Notes. | |||
| [RFC Editor: Please remove this section before publication ] | [RFC Editor: Please remove this section before publication ] | |||
| From 04 to 05: | ||||
| o Integrated comments, primarily from Fred Baker. | ||||
| From 03 to 04: | From 03 to 04: | |||
| o Some text cleanup for readability. | o Some text cleanup for readability. | |||
| o Some disclaimers about it working better on initial connection | o Some disclaimers about it working better on initial connection | |||
| versus CP timeout. | versus CP timeout. | |||
| o Some more text explaining that CP interception is | o Some more text explaining that CP interception is | |||
| indistinguishable from an attack. | indistinguishable from an attack. | |||
| End of changes. 21 change blocks. | ||||
| 47 lines changed or deleted | 44 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||