| < draft-wkumari-dhc-capport-02.txt | draft-wkumari-dhc-capport-03.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: October 18, 2014 Shinkuro Inc. | Expires: December 3, 2014 Shinkuro Inc. | |||
| P. Ebersman | P. Ebersman | |||
| Infoblox | Infoblox | |||
| S. Sheng | S. Sheng | |||
| ICANN | ICANN | |||
| April 16, 2014 | June 1, 2014 | |||
| Captive-Portal identification in DHCP / RA | Captive-Portal identification in DHCP / RA | |||
| draft-wkumari-dhc-capport-02 | draft-wkumari-dhc-capport-03 | |||
| 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 or authenticated. | terms of service, provided payment information or authenticated. | |||
| This document describes a DHCP option (and an RA extension) to inform | This document describes a DHCP option (and an RA extension) to inform | |||
| skipping to change at page 1, line 43 ¶ | skipping to change at page 1, line 43 ¶ | |||
| 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 October 18, 2014. | This Internet-Draft will expire on December 3, 2014. | |||
| 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 26 ¶ | skipping to change at page 2, line 26 ¶ | |||
| 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 . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. DNS Redirection . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.2. HTTP Redirection . . . . . . . . . . . . . . . . . . . . 4 | 2.2. HTTP Redirection . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.3. IP Hijacking . . . . . . . . . . . . . . . . . . . . . . 4 | 2.3. IP Hijacking . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. The Captive-Portal DHCP Option . . . . . . . . . . . . . . . 4 | 3. The Captive-Portal DHCP Option . . . . . . . . . . . . . . . 4 | |||
| 4. The Captive-Portal RA Option . . . . . . . . . . . . . . . . 5 | 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 . . . . . . . . . . . . . . . . . . . 7 | |||
| 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 9 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 8 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 9 | 9.2. Informative References . . . . . . . . . . . . . . . . . 8 | |||
| Appendix A. Changes / Author Notes. . . . . . . . . . . . . . . 9 | Appendix A. Changes / Author Notes. . . . . . . . . . . . . . . 8 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 1. Introduction | 1. Introduction | |||
| In many environments (coffee shops and hotels), users need to connect | In many environments users need to connect to a captive portal device | |||
| to a captive portal device and agree to an acceptable use policy or | and agree to an acceptable use policy or provide billing information | |||
| provide billing information before they can access the Internet. | 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 | |||
| devices perform DNS and / or HTTP and / or IP hijacks. As well as | devices perform DNS and / or HTTP and / or IP hijacks. As well as | |||
| being kludgy hacks, these techniques looks very similar to attacks | being kludgy hacks, these techniques looks very similar to attacks | |||
| that DNSSEC and TLS protect against. | that DNSSEC and TLS protect against. This makes the user experience | |||
| sub-optimal. | ||||
| This document describes a DHCP option (Captive-Portal) that informs | This document describes a DHCP option (Captive-Portal) and IPv6 | |||
| DHCP clients that they are behind a captive portal device, and how to | Router Advertisement (RA) extension that informs clients that they | |||
| contact it. | are behind a captive portal device, and how to contact it. | |||
| This document neither condones nor condemns captive portals; instead | This document neither condones nor condemns captive portals; instead | |||
| it recognises that they are here to stay, and attempts to improve the | it recognises that they are here to stay, and attempts to improve the | |||
| user's experience. | user's experience. | |||
| 1.1. Requirements notation | 1.1. Requirements notation | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| 2. Background | 2. Background | |||
| Many Internet Service Providers (ISPs) that offer public Internet | Many Internet Service Providers (ISPs) that offer public Internet | |||
| access require the user to first accept an Acceptable Use Policy | access require the user to first accept an Acceptable Use Policy | |||
| (AUP) and / or provides billing information (such as their last name | (AUP) and / or provides billing information (such as their last name | |||
| and / or room number in a hotel, credit card information, etc) | and room number in a hotel, credit card information, etc.) through a | |||
| through a web interface. | web interface. | |||
| In order to meet this requirement, some ISPs implement a captive | In order to meet this requirement, some ISPs implement a captive | |||
| portal (CP) - a system that intercepts user requests and redirects | portal (CP) - a system that intercepts user requests and redirects | |||
| them to an interstitial login page. | them to an interstitial login page. | |||
| Captive portals intercept and redirects user requests in a number of | Captive portals intercept and redirects user requests in a number of | |||
| ways, including: | ways, including: | |||
| o DNS Redirection | o DNS Redirection | |||
| o IP Redirection | o IP Redirection | |||
| o HTTP Redirection | o HTTP Redirection | |||
| o Restricted scope addresses | o Restricted scope addresses | |||
| o Traffic blocking (until the user is authenticated) | o Traffic blocking (until the user is authenticated) | |||
| In order to ensure that the user is unable to access the Internet, | In order to ensure that the user is unable to access the Internet | |||
| captive portals usually implement IP based filters, or place the user | until they have satisfied the requirements, captive portals usually | |||
| in to a restricted VLAN or restricted IP range until after they have | implement IP based filters, or place the user in to a restricted VLAN | |||
| been authorized. | (or restricted IP range) until after they have been authorized. | |||
| 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 | |||
| performing DNSSEC validation, or if the client already has the DNS | performing DNSSEC validation, is running their own resolver, or | |||
| information cached. | already has the DNS information cached. | |||
| 2.2. HTTP Redirection | 2.2. HTTP Redirection | |||
| In this implementation, the CP acts like a transparent HTTP proxy; | In this implementation, the CP acts like a transparent HTTP proxy; | |||
| but when it sees an HTTP request from an unauthenticated client, it | but when it sees an HTTP request from an unauthenticated client, it | |||
| intercepts the request and responds with an HTTP status code 302 to | intercepts the request and responds with an HTTP status code 302 to | |||
| redirect the client to the Captive Portal Login. | redirect the client to the Captive Portal Login. | |||
| The issues with this technique include: | This technique has a number of issues, including: | |||
| o It fails if the user is only using HTTPS | o It fails if the user is only using HTTPS. | |||
| o It exposes various private user information, such as HTTP Cookies, | o It exposes various private user information, such as HTTP Cookies, | |||
| etc. | etc. | |||
| 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 similar issues as the HTTP solution, but may also | |||
| break other protocols, and may expose more of the users private | break other protocols, and may expose more of the users private | |||
| information, etc. | 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 the | |||
| authentication page. This is primarily intended to improve the user | authentication page. This is primarily intended to improve the user | |||
| experiance; for the forseeable future captive portals will still need | experience; for the foreseeable future captive portals will still | |||
| to implement the interception techniques to serve legacy clinets. | need to implement the interception techniques to serve legacy | |||
| clients. | ||||
| This draft is not intended to provide guidance on how to implement a | ||||
| captive portal. As such, it assumes that the captive portal on a | ||||
| dual-stack or IPv6-only network is already capable of intercepting | ||||
| IPv6 traffic. However, in order to support IPv6 with the proposed | ||||
| DHCP option, there are some additional considerations. In a dual- | ||||
| stack network, the network supports both IPv4 and IPv6 protocols | ||||
| simultaneously, but can have a mix of IPv4-only, IPv6-only, and dual- | ||||
| stack devices using the network, meaning that it may be necessary to | ||||
| have parallel notifications via DHCPv4 and DHCPv6. | ||||
| IPv4-only and dual-stack devices can technically both support | ||||
| receiving the option via DHCPv4, but dual-stack implementations would | ||||
| need to ensure that the correct action would be taken for both IPv4 | ||||
| and IPv6 traffic despite only receiving an option via IPv4. For | ||||
| devices/networks that only speak IPv6, and to avoid this dependency | ||||
| on the implementation, a DHCPv6 option is necessary. | ||||
| [ED NOTE:] This is complicated by the fact that not all devices | ||||
| support DHCPv6, and thus it may be necessary to investigate other | ||||
| methods to notify IPv6-only devices of a captive portal. Since this | ||||
| option is only intended to help clients gracefully deal with networks | ||||
| that have a captive portal, it may be acceptable to note that if a | ||||
| client does not support DHCPv6, it simply won't be able to take | ||||
| advantage of this optimization, but will otherwise function normally. | ||||
| [/note] | ||||
| The format of the DHCP Captive-Portal DHCP option is identical for | The format of the DHCP Captive-Portal DHCP option is shown below. | |||
| both DHCPv4 and DHCPv6 and 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 be a URL with an IP-literal for the host portion (to | |||
| remove the need to allow DNS from unauthenticated clients). The | remove the need to allow DNS from unauthenticated clients). The | |||
| DHCPv4 URI MUST contain an IPv4 address, and the DHCPv6 URI MUST | DHCPv4 URI MUST contain an IPv4 address. | |||
| contain an IPv6 address (to account for IPv4 only or IPv6 only | ||||
| capable devices - not everyting is dual stack!) | ||||
| [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 folk would | want to force users to use the CP's provided DNS) and some folk would | |||
| use this to DNS Tunnel out. This would make the CP admin block | 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 | |||
| [ Ed: I'm far from an RA expert, but it was suggested that we shold | [ Ed: I'm far from an RA expert. I think there are only 8 bits for | |||
| advertize this via RA as well as DHCP. I think there are only 8 bits | Type, is it worth burning an option code on this? I have also | |||
| for Type, is it worth burning an option code on this? I have also | ||||
| specified that the option length should padded to multiples of 8 byte | specified that the option length should padded to multiples of 8 byte | |||
| to better align with the examples I've seen (and I'm on a plane so | to better align with the examples I've seen. Is this required / | |||
| cannot easily search for more!) Is this required / preferred, or is | preferred, or is smaller RAs better? ] | |||
| smaller RAs better? ] | ||||
| This section describes the Captive-Portal Router Advertisement | This section describes the Captive-Portal Router Advertisement | |||
| option. | option. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Length | URI . | | Type | Length | URI . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . | |||
| . . | . . | |||
| skipping to change at page 6, line 29 ¶ | skipping to change at page 6, line 4 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 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 of the authentication page that the user should connect | |||
| to. This should be padded with NULL (0x0) to make the total | to. This should be padded with NULL (0x0) to make the total | |||
| option length (including the Type and Length fields) a mutliple of | option length (including the Type and Length fields) a multiple of | |||
| 8 bytes. | 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 section is, and probably will remain, fairly hand | |||
| wavy. This option provides notice to the OS / User applications that | wavy. This option provides notice to the OS / User applications that | |||
| there is a CP, but I think that the UI / etc is best designed / | there is a CP, but I think that the UI / etc is best designed / | |||
| handled by the Operating System vendors / Application developers. ] | handled by the Operating System vendors / Application developers. ] | |||
| 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). | (and how to reach the authentication page). What is done with this | |||
| information is left up to the operating system and application | ||||
| The Captive-Portal Option is defined for IPv6 RAs and IPv6 DHCP and | vendors. This document provides a very high level example of what | |||
| IPv4 DHCP. The URIs in these SHOULD all be the same, but if they are | could be done with this information. | |||
| not, the precedence is as follows: | ||||
| 1. IPv6 DHCP (most preferred) | ||||
| 2. IPv4 DHCP | ||||
| 3. IPv6 RA (least preferred) | ||||
| This preference was chosen because an IPv6 capable client machine | ||||
| will first get an IP address (and possibly the Captive-Portal option) | ||||
| via RA, and will then get additional information via DHCP v6. The | ||||
| client is not fully configured until it has completed the DHCP step, | ||||
| and so this is "newer" information. The DHCP v4 preference is in the | ||||
| middle, because it is likely that this will be delpoyed first on many | ||||
| captive portals. Once IPv6 is deployed, we don't want legacy | ||||
| (forgotten!) configuration to override the "newer" configuration | ||||
| information. [Ed: This ordering is somewhat arbritary, as is the | ||||
| justification, but there should be *some* standard and this seemed as | ||||
| good as any! ] | ||||
| The exact method that the interaction with the user occurs is device | ||||
| / operating system / application dependent. The below is simply one | ||||
| option. | ||||
| When the device receives a DHCP response with the Captive-Portal | When the device discovers that it is behind a captive portal it | |||
| Option it SHOULD: | SHOULD: | |||
| 1. Not initiate new IP connections until the CP has been satisfied. | 1. Not initiate new IP connections until the CP has been satisfied | |||
| Existing connections should be quiesced. This will happen more | (other than those to the captive portal page and connectivity | |||
| often than some expect -- you buy 1h of Internet at a cafe and | checks). Existing connections should be quiesced (this will | |||
| stay there for 3h -- this will "interrupt" you a few times). | happen more often than some expect -- you buy 1h of Internet at a | |||
| cafe and stay there for 3h -- this will "interrupt" you a few | ||||
| times). | ||||
| 2. Present a dialog box to the user informing that they are behind a | 2. Present a dialog box to the user informing them hat they are | |||
| 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. Some captive portals | configured with a separate cookie store. Some captive portals | |||
| send the user a cookie when they authenticate (so that the user | send the user a cookie when they authenticate (so that the user | |||
| can re-authenticate more easily in the future - the browser | can re-authenticate more easily in the future - the browser | |||
| should keep these CP cookies separate from other cookies. | should keep these CP cookies separate from other cookies. | |||
| 4. Once the user has authenticated (how does it know? HTTP | 4. Once the user has authenticated normal IP connectivity should | |||
| response?! Probe (ugh?)) normal IP connectivity should resume. | resume. This document does not define how to know that the user | |||
| has authenticated [ Ed: Should it? And option would be for the | ||||
| "Thank you for paying" page to contain a unique string (e.g: | ||||
| "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 | |||
| This document defines DHCPv4 Captive-Portal option which requires | This document defines DHCPv4 Captive-Portal option which requires | |||
| assignment of DHCPv4 option code TBA1 assigned from "Bootp and DHCP | assignment of DHCPv4 option code TBA1 assigned from "Bootp and DHCP | |||
| options" registry (http://www.iana.org/assignments/ bootp-dhcp- | options" registry (http://www.iana.org/assignments/ bootp-dhcp- | |||
| parameters/bootp-dhcp-parameters.xml), as specified in [RFC2939]. | parameters/bootp-dhcp-parameters.xml), as specified in [RFC2939]. | |||
| The IANA is requested to also assign an option codes for the DHCPv6 | ||||
| Captive-Portal (TBA2) option from the "DHCPv6 and DHCPv6 options" | ||||
| registry (http:// www.iana.org/assignments/dhcpv6-parameters/ | ||||
| dhcpv6-parameters.xml). | ||||
| The IANA is also requested at assign an IPv6 RA Type code (TBA3) from | The IANA is also requested at assign an IPv6 RA Type code (TBA3) from | |||
| the [TODO] registry. Thanks IANA! | the [TODO] registry. Thanks IANA! | |||
| 7. Security Considerations | 7. Security Considerations | |||
| An attacker with the ability to inject DHCP messages could include | An attacker with the ability to inject DHCP messages could include | |||
| this option and so force users to contact him. As an attacker with | this option and so force users to contact an address of his choosing. | |||
| this capability could simply list himself as the default gateway (and | As an attacker with this capability could simply list himself as the | |||
| so see all the victim's traffic), we do not think this gives them | default gateway (and so intercept all the victim's traffic), this | |||
| significantly more capabilities. Fake DHCP servers / fake RAs are | does not provide them with significantly more capabilities. Fake | |||
| currently a security concern - this doesn't make them any better or | DHCP servers / fake RAs are currently a security concern - this | |||
| worse. | doesn't make them any better or worse. | |||
| Devices and systems that automatically connect to open network could | Devices and systems that automatically connect to open network could | |||
| potentially be tracked using the techniques described in this | potentially be tracked using the techniques described in this | |||
| document (forcing the user to continually authenticate, or exposing | document (forcing the user to continually authenticate, or exposing | |||
| their browser fingerprint), but similar tracking could already be | their browser fingerprint), but similar tracking could already be | |||
| performed with the standard captive portal mechanisms, so this | performed with the standard captive portal mechanisms, so this | |||
| doesn't seem to give the attackers more capabilities. | doesn't seem to give the attackers more capabilities. | |||
| By simplifying the interaction with the captive portal systems, and | By simplifying the interaction with the captive portal systems, and | |||
| doing away with the need for interception, we think that users will | doing away with the need for interception, we think that users will | |||
| be less likely to disable useful security safeguards like DNSSEC | be less likely to disable useful security safeguards like DNSSEC | |||
| validation, VPNs, etc. | validation, VPNs, etc. In addition, because the system knows that it | |||
| is behind a captive portal it can know not to send cookies, | ||||
| credentials, etc. | ||||
| 8. Acknowledgements | 8. Acknowledgements | |||
| 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 v6 text. | Thanks to Wes George for supplying the v6 text. Thanks to Lorenzo | |||
| and Erik for the V6 RA kick in the pants. | ||||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [IANA.AS_Numbers] | ||||
| IANA, "Autonomous System (AS) Numbers", | ||||
| <http://www.iana.org/assignments/as-numbers>. | ||||
| [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 | 9.2. Informative References | |||
| [I-D.ietf-sidr-iana-objects] | [I-D.ietf-sidr-iana-objects] | |||
| Manderson, T., Vegoda, L., and S. Kent, "RPKI Objects | Manderson, T., Vegoda, L., and S. Kent, "RPKI Objects | |||
| issued by IANA", draft-ietf-sidr-iana-objects-03 (work in | issued by IANA", draft-ietf-sidr-iana-objects-03 (work in | |||
| progress), May 2011. | 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 -02 to 03: | ||||
| o Removed the DHCPv6 stuff (as suggested / requested by Erik Kline) | ||||
| o Simplified / cleaned up text (I'm inclined to waffle on, then trim | ||||
| the fluff) | ||||
| o This was written on a United flight with in-flight WiFi - | ||||
| unfortnatly I couldn't use it because their CP was borked. | ||||
| From -01 to 02: | From -01 to 02: | |||
| o Added the IPv6 RA stuff. | o Added the IPv6 RA stuff. | |||
| From -00 to -01: | From -00 to -01: | |||
| o Many nits and editorial changes. | o Many nits and editorial changes. | |||
| o Whole bunch of extra text and review from Wes George on v6. | o Whole bunch of extra text and review from Wes George on v6. | |||
| End of changes. 31 change blocks. | ||||
| 122 lines changed or deleted | 82 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/ | ||||