| < draft-ietf-precis-saslprepbis-06.txt | draft-ietf-precis-saslprepbis-07.txt > | |||
|---|---|---|---|---|
| PRECIS P. Saint-Andre | PRECIS P. Saint-Andre | |||
| Internet-Draft Cisco Systems, Inc. | Internet-Draft &yet | |||
| Obsoletes: 4013 (if approved) A. Melnikov | Obsoletes: 4013 (if approved) A. Melnikov | |||
| Intended status: Standards Track Isode Ltd | Intended status: Standards Track Isode Ltd | |||
| Expires: June 6, 2014 December 3, 2013 | Expires: September 25, 2014 March 24, 2014 | |||
| Preparation and Comparison of Internationalized Strings Representing | Preparation and Comparison of Internationalized Strings Representing | |||
| Usernames and Passwords | Usernames and Passwords | |||
| draft-ietf-precis-saslprepbis-06 | draft-ietf-precis-saslprepbis-07 | |||
| Abstract | Abstract | |||
| This document describes methods for handling Unicode strings | This document describes methods for handling Unicode strings | |||
| representing usernames and passwords. This document obsoletes RFC | representing usernames and passwords. This document obsoletes RFC | |||
| 4013. | 4013. | |||
| Status of this Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| 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 June 6, 2014. | This Internet-Draft will expire on September 25, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2013 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 | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. What the Username and Password Profiles Provide . . . . . . . 3 | 2. What the Username and Password Profiles Provide . . . . . . . 3 | |||
| 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 4. Usernames . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 4. Usernames . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4.1. Definition . . . . . . . . . . . . . . . . . . . . . . . . 4 | 4.1. Definition . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4.2. Preparation . . . . . . . . . . . . . . . . . . . . . . . 5 | 4.2. Preparation . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4.2.1. Case Mapping . . . . . . . . . . . . . . . . . . . . . 6 | 4.2.1. Case Mapping . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.3. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 4.3. Examples . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 5. Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 5. Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 5.1. Definition . . . . . . . . . . . . . . . . . . . . . . . . 9 | 5.1. Definition . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 5.2. Preparation . . . . . . . . . . . . . . . . . . . . . . . 10 | 5.2. Preparation . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 5.3. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 5.3. Examples . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 6. Migration . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 6. Migration . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 6.1. Usernames . . . . . . . . . . . . . . . . . . . . . . . . 11 | 6.1. Usernames . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 6.2. Passwords . . . . . . . . . . . . . . . . . . . . . . . . 12 | 6.2. Passwords . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 7.1. UsernameIdentifierClass . . . . . . . . . . . . . . . . . 13 | 7.1. UsernameIdentifierClass . . . . . . . . . . . . . . . . . 13 | |||
| 7.2. PasswordFreeformClass . . . . . . . . . . . . . . . . . . 14 | 7.2. PasswordFreeformClass . . . . . . . . . . . . . . . . . . 14 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | |||
| 8.1. Password/Passphrase Strength . . . . . . . . . . . . . . . 14 | 8.1. Password/Passphrase Strength . . . . . . . . . . . . . . 15 | |||
| 8.2. Identifier Comparison . . . . . . . . . . . . . . . . . . 14 | 8.2. Identifier Comparison . . . . . . . . . . . . . . . . . . 15 | |||
| 8.3. Reuse of PRECIS . . . . . . . . . . . . . . . . . . . . . 15 | 8.3. Reuse of PRECIS . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 8.4. Reuse of Unicode . . . . . . . . . . . . . . . . . . . . . 15 | 8.4. Reuse of Unicode . . . . . . . . . . . . . . . . . . . . 15 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . . 15 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 15 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . . 15 | 9.2. Informative References . . . . . . . . . . . . . . . . . 16 | |||
| Appendix A. Differences from RFC 4013 . . . . . . . . . . . . . . 17 | Appendix A. Differences from RFC 4013 . . . . . . . . . . . . . 17 | |||
| Appendix B. Acknowledgements . . . . . . . . . . . . . . . . . . 17 | Appendix B. Acknowledgements . . . . . . . . . . . . . . . . . . 18 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 18 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 1. Introduction | 1. Introduction | |||
| Usernames and passwords are widely used for authentication and | Usernames and passwords are widely used for authentication and | |||
| authorization on the Internet, either directly when provided in | authorization on the Internet, either directly when provided in | |||
| plaintext (as in the SASL PLAIN mechanism [RFC4616] or the HTTP Basic | plaintext (as in the SASL PLAIN mechanism [RFC4616] or the HTTP Basic | |||
| scheme [RFC2617]) or indirectly when provided as the input to a | scheme [RFC2617]) or indirectly when provided as the input to a | |||
| cryptographic algorithm such as a hash function (as in the SASL SCRAM | cryptographic algorithm such as a hash function (as in the SASL SCRAM | |||
| mechanism [RFC5802] or the HTTP Digest scheme [RFC2617]). To | mechanism [RFC5802] or the HTTP Digest scheme [RFC2617]). To | |||
| increase the likelihood that the input and comparison of usernames | increase the likelihood that the input and comparison of usernames | |||
| skipping to change at page 5, line 39 ¶ | skipping to change at page 5, line 36 ¶ | |||
| ; point that conforms to RFC 5890 | ; point that conforms to RFC 5890 | |||
| ; | ; | |||
| All code points and blocks not explicitly allowed in the PRECIS | All code points and blocks not explicitly allowed in the PRECIS | |||
| IdentifierClass are disallowed; this includes private use characters, | IdentifierClass are disallowed; this includes private use characters, | |||
| surrogate code points, and the other code points and blocks that were | surrogate code points, and the other code points and blocks that were | |||
| defined as "Prohibited Output" in [RFC4013]. In addition, common | defined as "Prohibited Output" in [RFC4013]. In addition, common | |||
| constructions such as "user@example.com" are allowed as usernames | constructions such as "user@example.com" are allowed as usernames | |||
| under this specification, as they were under [RFC4013]. | under this specification, as they were under [RFC4013]. | |||
| Implementation Note: The username construct defined in this | ||||
| document does not necessarily match what all deployed applications | ||||
| might refer to as a "username" or "userid", but instead provides a | ||||
| relatively safe subset of Unicode characters that can be used in | ||||
| existing SASL mechanisms and SASL-using application protocols, and | ||||
| even in most application protocols that do not currently use SASL. | ||||
| 4.2. Preparation | 4.2. Preparation | |||
| Each userpart of a username MUST conform to the | Each userpart of a username MUST conform to the | |||
| "UsernameIdentifierClass" profile of the PRECIS IdentifierClass, | "UsernameIdentifierClass" profile of the PRECIS IdentifierClass, | |||
| which is defined as follows: | which is defined as follows: | |||
| 1. The base string class is the "IdentifierClass" specified in | 1. The base string class is the "IdentifierClass" specified in | |||
| [I-D.ietf-precis-framework]. | [I-D.ietf-precis-framework]. | |||
| 2. Fullwidth and halfwidth characters MUST be mapped to their | 2. Fullwidth and halfwidth characters MUST be mapped to their | |||
| decomposition equivalents. | decomposition mappings. | |||
| 3. So-called additional mappings MAY be applied, such as those | ||||
| defined in [I-D.ietf-precis-mappings]. | ||||
| 4. Uppercase and titlecase characters might be mapped to their | 3. So-called additional mappings MAY be applied, such as mapping of | |||
| delimiters (e.g., characters such as '@', ':', '/', '+', and '-') | ||||
| and special handling of certain characters or classes of | ||||
| characters (e.g., mapping of non-ASCII spaces to ASCII space or | ||||
| mapping of control characters to nothing); the PRECIS mappings | ||||
| document [I-D.ietf-precis-mappings] describes such mappings in | ||||
| more detail. | ||||
| 4. Depending on the SASL mechanism, SASL-using application protocol, | ||||
| or non-SASL-using application protocol in question, uppercase and | ||||
| titlecase characters might or might not be mapped to their | ||||
| lowercase equivalents (see Section 4.2.1 below). | lowercase equivalents (see Section 4.2.1 below). | |||
| 5. Unicode Normalization Form C (NFC) MUST be applied to all | 5. Unicode Normalization Form C (NFC) MUST be applied to all | |||
| characters. | characters. | |||
| With regard to directionality, the "Bidi Rule" provided in [RFC5893] | With regard to directionality, the "Bidi Rule" provided in [RFC5893] | |||
| applies. | applies. | |||
| A username MUST NOT be zero bytes in length. This rule is to be | A username MUST NOT be zero bytes in length. This rule is to be | |||
| enforced after any normalization and mapping of code points. | enforced after any normalization and mapping of code points. | |||
| In protocols that provide usernames as input to a cryptographic | In protocols that provide usernames as input to a cryptographic | |||
| skipping to change at page 6, line 41 ¶ | skipping to change at page 7, line 6 ¶ | |||
| In particular: | In particular: | |||
| o SASL mechanisms that directly re-use this profile MUST specify | o SASL mechanisms that directly re-use this profile MUST specify | |||
| whether and when case mapping is to be applied to authentication | whether and when case mapping is to be applied to authentication | |||
| identifiers. SASL mechanisms SHOULD delay any case mapping to the | identifiers. SASL mechanisms SHOULD delay any case mapping to the | |||
| last possible moment, such as when doing a lookup by username, | last possible moment, such as when doing a lookup by username, | |||
| username comparisons, or generating a cryptographic salt from a | username comparisons, or generating a cryptographic salt from a | |||
| username (if the last possible moment happens on the server, then | username (if the last possible moment happens on the server, then | |||
| decisions about case mapping can be a matter of deployment | decisions about case mapping can be a matter of deployment | |||
| policy). In keeping with RFC4422, SASL mechanisms are not to | policy). In keeping with [RFC4422], SASL mechanisms are not to | |||
| apply this or any other profile to authorization identifiers. | apply this or any other profile to authorization identifiers. | |||
| o Application protocols that use SASL (such as IMAP [RFC3501] and | o Application protocols that use SASL (such as IMAP [RFC3501] and | |||
| XMPP [RFC6120]) and that directly re-use this profile MUST specify | XMPP [RFC6120]) and that directly re-use this profile MUST specify | |||
| whether case mapping is to be applied to authorization | whether case mapping is to be applied to authorization | |||
| identifiers. Such "SASL application protocols" SHOULD delay any | identifiers. Such "SASL application protocols" SHOULD delay any | |||
| case mapping of authorization identifiers to the last possible | case mapping of authorization identifiers to the last possible | |||
| moment, which happens to necessarily be on the server side (this | moment, which happens to necessarily be on the server side (this | |||
| enables decisions about case mapping to be a matter of deployment | enables decisions about case mapping to be a matter of deployment | |||
| policy). In keeping with RFC4422, SASL application protocols are | policy). In keeping with [RFC4422], SASL application protocols | |||
| not to apply this or any other profile to authentication | are not to apply this or any other profile to authentication | |||
| identifiers. | identifiers. | |||
| o Application protocols that do not use SASL (such as HTTP | o Application protocols that do not use SASL (such as HTTP | |||
| authentication with the Basic and Digest schemes [RFC2617]) MUST | authentication with the Basic and Digest schemes [RFC2617]) MUST | |||
| specify whether and when case mapping is to be applied to | specify whether and when case mapping is to be applied to | |||
| authentication identifiers and authorization identifiers. Such | authentication identifiers and authorization identifiers. Such | |||
| "non-SASL application protocols" SHOULD delay any case mapping to | "non-SASL application protocols" SHOULD delay any case mapping to | |||
| the last possible moment, such as when doing a lookup by username, | the last possible moment, such as when doing a lookup by username, | |||
| username comparisons, or generating a cryptographic salt from a | username comparisons, or generating a cryptographic salt from a | |||
| username (if the last possible moment happens on the server, then | username (if the last possible moment happens on the server, then | |||
| skipping to change at page 10, line 15 ¶ | skipping to change at page 10, line 14 ¶ | |||
| surrogate code points, and the other code points and blocks defined | surrogate code points, and the other code points and blocks defined | |||
| as "Prohibited Output" in Section 2.3 of RFC 4013. | as "Prohibited Output" in Section 2.3 of RFC 4013. | |||
| 5.2. Preparation | 5.2. Preparation | |||
| A password MUST conform to the "PasswordFreeformClass" profile of the | A password MUST conform to the "PasswordFreeformClass" profile of the | |||
| PRECIS FreeformClass, which is defined as follows: | PRECIS FreeformClass, which is defined as follows: | |||
| 1. The base string class is the "FreeformClass" specified in | 1. The base string class is the "FreeformClass" specified in | |||
| [I-D.ietf-precis-framework]. | [I-D.ietf-precis-framework]. | |||
| 2. Fullwidth and halfwidth characters MUST NOT be mapped to their | 2. Fullwidth and halfwidth characters MUST NOT be mapped to their | |||
| decomposition equivalents. | decomposition mappings. | |||
| 3. Any instances of non-ASCII space MUST be mapped to ASCII space | 3. Any instances of non-ASCII space MUST be mapped to ASCII space | |||
| (U+0020). | (U+0020). | |||
| 4. So-called additional mappings MAY be applied, such as those | ||||
| defined in [I-D.ietf-precis-mappings]. | 4. Uppercase and titlecase characters MUST NOT be mapped to their | |||
| 5. Uppercase and titlecase characters MUST NOT be mapped to their | ||||
| lowercase equivalents. | lowercase equivalents. | |||
| 6. Unicode Normalization Form C (NFC) MUST be applied to all | ||||
| 5. Unicode Normalization Form C (NFC) MUST be applied to all | ||||
| characters. | characters. | |||
| With regard to directionality, the "Bidi Rule" (defined in [RFC5893]) | With regard to directionality, the "Bidi Rule" (defined in [RFC5893]) | |||
| and similar rules are unnecessary and inapplicable to passwords, | and similar rules are unnecessary and inapplicable to passwords, | |||
| since they can reduce the range of characters that are allowed in a | since they can reduce the range of characters that are allowed in a | |||
| string and therefore reduce the amount of entropy that is possible in | string and therefore reduce the amount of entropy that is possible in | |||
| a password. Furthermore, such rules are intended to minimize the | a password. Furthermore, such rules are intended to minimize the | |||
| possibility that the same string will be displayed differently on a | possibility that the same string will be displayed differently on a | |||
| system set for right-to-left display and a system set for left-to- | system set for right-to-left display and a system set for left-to- | |||
| right display; however, passwords are typically not displayed at all | right display; however, passwords are typically not displayed at all | |||
| skipping to change at page 12, line 20 ¶ | skipping to change at page 12, line 16 ¶ | |||
| equivalents to those equivalents, whereas the PRECIS | equivalents to those equivalents, whereas the PRECIS | |||
| IdentifierClass entirely disallows Unicode code points with | IdentifierClass entirely disallows Unicode code points with | |||
| compatibility equivalents (i.e., during comparison NFKC is more | compatibility equivalents (i.e., during comparison NFKC is more | |||
| "aggressive" about finding matches than is NFC). A few examples | "aggressive" about finding matches than is NFC). A few examples | |||
| might suffice to indicate the nature of the problem: (1) U+017F | might suffice to indicate the nature of the problem: (1) U+017F | |||
| LATIN SMALL LETTER LONG S is compatibility equivalent to U+0073 | LATIN SMALL LETTER LONG S is compatibility equivalent to U+0073 | |||
| LATIN SMALL LETTER S (2) U+2163 ROMAN NUMERAL FOUR is | LATIN SMALL LETTER S (2) U+2163 ROMAN NUMERAL FOUR is | |||
| compatibility equivalent to U+0049 LATIN CAPITAL LETTER I and | compatibility equivalent to U+0049 LATIN CAPITAL LETTER I and | |||
| U+0056 LATIN CAPITAL LETTER V (3) U+FB01 LATIN SMALL LIGATURE FI | U+0056 LATIN CAPITAL LETTER V (3) U+FB01 LATIN SMALL LIGATURE FI | |||
| is compatibility equivalent to U+0066 LATIN SMALL LETTER F and | is compatibility equivalent to U+0066 LATIN SMALL LETTER F and | |||
| U+0069 LATIN SMALL LETTER I. Under SASLprep, the use of NFKC also | U+0069 LATIN SMALL LETTER I. Under SASLprep, the use of NFKC also | |||
| handled the mapping of fullwidth and halfwidth code points to | handled the mapping of fullwidth and halfwidth code points to | |||
| their decomposition equivalents (see [I-D.ietf-precis-mappings]). | their decomposition mappings. Although it is expected that code | |||
| Although it is expected that code points with compatibility | points with compatibility equivalents are rare in existing | |||
| equivalents are rare in existing usernames, for migration purposes | usernames, for migration purposes deployments might want to search | |||
| deployments might want to search their database of usernames for | their database of usernames for Unicode code points with | |||
| Unicode code points with compatibility equivalents and map those | compatibility equivalents and map those code points to their | |||
| code points to their compatibility equivalents. | compatibility equivalents. | |||
| o SASLprep mapped the "characters commonly mapped to nothing" from | o SASLprep mapped the "characters commonly mapped to nothing" from | |||
| Appendix B.1 of [RFC3454]) to nothing, whereas the PRECIS | Appendix B.1 of [RFC3454]) to nothing, whereas the PRECIS | |||
| IdentifierClass entirely disallows most of these characters, which | IdentifierClass entirely disallows most of these characters, which | |||
| correspond to the code points from the "M" category defined under | correspond to the code points from the "M" category defined under | |||
| Section 6.13 of [I-D.ietf-precis-framework] (with the exception of | Section 6.13 of [I-D.ietf-precis-framework] (with the exception of | |||
| U+1806 MONGOLIAN TODO SOFT HYPHEN, which was "commonly mapped to | U+1806 MONGOLIAN TODO SOFT HYPHEN, which was "commonly mapped to | |||
| nothing" in Unicode 3.2 but at the time of this writing does not | nothing" in Unicode 3.2 but at the time of this writing does not | |||
| have a derived property of Default_Ignorable_Code_Point in Unicode | have a derived property of Default_Ignorable_Code_Point in Unicode | |||
| 6.2). For migration purposes, deployments might want to remove | 6.2). For migration purposes, deployments might want to remove | |||
| skipping to change at page 13, line 20 ¶ | skipping to change at page 13, line 19 ¶ | |||
| Unicode Normalization Form C (NFC). Because NFKC is more | Unicode Normalization Form C (NFC). Because NFKC is more | |||
| aggressive about finding matches than NFC, in practice this change | aggressive about finding matches than NFC, in practice this change | |||
| is unlikely to cause significant problems and indeed has the | is unlikely to cause significant problems and indeed has the | |||
| security benefit of probably resulting in fewer false positives | security benefit of probably resulting in fewer false positives | |||
| when comparing passwords. A few examples might suffice to | when comparing passwords. A few examples might suffice to | |||
| indicate the nature of the problem: (1) U+017F LATIN SMALL LETTER | indicate the nature of the problem: (1) U+017F LATIN SMALL LETTER | |||
| LONG S is compatibility equivalent to U+0073 LATIN SMALL LETTER S | LONG S is compatibility equivalent to U+0073 LATIN SMALL LETTER S | |||
| (2) U+2163 ROMAN NUMERAL FOUR is compatibility equivalent to | (2) U+2163 ROMAN NUMERAL FOUR is compatibility equivalent to | |||
| U+0049 LATIN CAPITAL LETTER I and U+0056 LATIN CAPITAL LETTER V | U+0049 LATIN CAPITAL LETTER I and U+0056 LATIN CAPITAL LETTER V | |||
| (3) U+FB01 LATIN SMALL LIGATURE FI is compatibility equivalent to | (3) U+FB01 LATIN SMALL LIGATURE FI is compatibility equivalent to | |||
| U+0066 LATIN SMALL LETTER F and U+0069 LATIN SMALL LETTER I. Under | U+0066 LATIN SMALL LETTER F and U+0069 LATIN SMALL LETTER I. | |||
| SASLprep, the use of NFKC also handled the mapping of fullwidth | Under SASLprep, the use of NFKC also handled the mapping of | |||
| and halfwidth code points to their decomposition equivalents (see | fullwidth and halfwidth code points to their decomposition | |||
| [I-D.ietf-precis-mappings]). Although it is expected that code | mappings. Although it is expected that code points with | |||
| points with compatibility equivalents are rare in existing | compatibility equivalents are rare in existing passwords, some | |||
| passwords, some passwords that matched when SASLprep was used | passwords that matched when SASLprep was used might no longer work | |||
| might no longer work when the rules in this specification are | when the rules in this specification are applied. | |||
| applied. | ||||
| o SASLprep mapped the "characters commonly mapped to nothing" from | o SASLprep mapped the "characters commonly mapped to nothing" from | |||
| Appendix B.1 of [RFC3454]) to nothing, whereas the PRECIS | Appendix B.1 of [RFC3454]) to nothing, whereas the PRECIS | |||
| FreeformClass entirely disallows such characters, which correspond | FreeformClass entirely disallows such characters, which correspond | |||
| to the code points from the "M" category defined under Section | to the code points from the "M" category defined under | |||
| 6.13 of [I-D.ietf-precis-framework] (with the exception of U+1806 | Section 6.13 of [I-D.ietf-precis-framework] (with the exception of | |||
| MONGOLIAN TODO SOFT HYPHEN, which was commonly mapped to nothing | U+1806 MONGOLIAN TODO SOFT HYPHEN, which was commonly mapped to | |||
| in Unicode 3.2 but at the time of this writing is allowed by | nothing in Unicode 3.2 but at the time of this writing is allowed | |||
| Unicode 6.2). In practice, this change will probably have no | by Unicode 6.2). In practice, this change will probably have no | |||
| effect on comparison, but user-oriented software might reject such | effect on comparison, but user-oriented software might reject such | |||
| code points instead of ignoring them during password preparation. | code points instead of ignoring them during password preparation. | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| The IANA shall add the following entries to the PRECIS Profiles | The IANA shall add the following entries to the PRECIS Profiles | |||
| Registry. | Registry. | |||
| 7.1. UsernameIdentifierClass | 7.1. UsernameIdentifierClass | |||
| Name: UsernameIdentifierClass. | Name: UsernameIdentifierClass. | |||
| Applicability: Usernames in security and application protocols. | Applicability: Usernames in security and application protocols. | |||
| Base Class: IdentifierClass. | Base Class: IdentifierClass. | |||
| Replaces: The SASLprep profile of Stringprep. | Replaces: The SASLprep profile of Stringprep. | |||
| Width Mapping: Map fullwidth and halfwidth characters to their | Width Mapping: Map fullwidth and halfwidth characters to their | |||
| decomposition equivalents. | decomposition mappings. | |||
| Additional Mappings: None required or recommended. | Additional Mappings: None required or recommended. | |||
| Case Mapping: To be defined by security or application protocols | Case Mapping: To be defined by security or application protocols | |||
| that use this profile. | that use this profile. | |||
| Normalization: NFC. | Normalization: NFC. | |||
| Directionality: The "Bidi Rule" defined in RFC 5893 applies. | Directionality: The "Bidi Rule" defined in RFC 5893 applies. | |||
| Exclusions: None. | Exclusions: None. | |||
| Enforcement: To be defined by security or application protocols that | Enforcement: To be defined by security or application protocols that | |||
| use this profile. | use this profile. | |||
| Specification: RFC XXXX. [Note to RFC Editor: please change XXXX to | Specification: RFC XXXX. [Note to RFC Editor: please change XXXX to | |||
| the number issued for this specification.] | the number issued for this specification.] | |||
| 7.2. PasswordFreeformClass | 7.2. PasswordFreeformClass | |||
| Name: PasswordFreeformClass. | Name: PasswordFreeformClass. | |||
| Applicability: Passwords in security and application protocols. | Applicability: Passwords in security and application protocols. | |||
| Base Class: FreeformClass | Base Class: FreeformClass | |||
| Replaces: The SASLprep profile of Stringprep. | Replaces: The SASLprep profile of Stringprep. | |||
| Width Mapping: None. | Width Mapping: None. | |||
| Additional Mappings: Map non-ASCII space characters to ASCII space. | Additional Mappings: Map non-ASCII space characters to ASCII space. | |||
| Case Mapping: None. | Case Mapping: None. | |||
| Normalization: NFC. | Normalization: NFC. | |||
| Directionality: None. | Directionality: None. | |||
| Exclusions: None. | Exclusions: None. | |||
| Enforcement: To be defined by security or application protocols that | Enforcement: To be defined by security or application protocols that | |||
| use this profile. | use this profile. | |||
| Specification: RFC XXXX. | Specification: RFC XXXX. | |||
| 8. Security Considerations | 8. Security Considerations | |||
| 8.1. Password/Passphrase Strength | 8.1. Password/Passphrase Strength | |||
| The ability to include a wide range of characters in passwords and | The ability to include a wide range of characters in passwords and | |||
| passphrases can increase the potential for creating a strong password | passphrases can increase the potential for creating a strong password | |||
| with high entropy. However, in practice, the ability to include such | with high entropy. However, in practice, the ability to include such | |||
| characters ought to be weighed against the possible need to reproduce | characters ought to be weighed against the possible need to reproduce | |||
| skipping to change at page 15, line 26 ¶ | skipping to change at page 15, line 41 ¶ | |||
| The security considerations described in [UTS39] apply to the use of | The security considerations described in [UTS39] apply to the use of | |||
| Unicode characters in usernames and passwords. | Unicode characters in usernames and passwords. | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [I-D.ietf-precis-framework] | [I-D.ietf-precis-framework] | |||
| Saint-Andre, P. and M. Blanchet, "Precis Framework: | Saint-Andre, P. and M. Blanchet, "Precis Framework: | |||
| Handling Internationalized Strings in Protocols", | Handling Internationalized Strings in Protocols", draft- | |||
| draft-ietf-precis-framework-12 (work in progress), | ietf-precis-framework-15 (work in progress), March 2014. | |||
| November 2013. | ||||
| [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. | |||
| [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | |||
| 10646", STD 63, RFC 3629, November 2003. | 10646", STD 63, RFC 3629, November 2003. | |||
| [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | |||
| Specifications: ABNF", STD 68, RFC 5234, January 2008. | Specifications: ABNF", STD 68, RFC 5234, January 2008. | |||
| [UNICODE] The Unicode Consortium, "The Unicode Standard, Version | [UNICODE] The Unicode Consortium, "The Unicode Standard, Version | |||
| 6.1", 2012, | 6.1", 2012, | |||
| <http://www.unicode.org/versions/Unicode6.1.0/>. | <http://www.unicode.org/versions/Unicode6.1.0/>. | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [I-D.ietf-precis-mappings] | [I-D.ietf-precis-mappings] | |||
| Yoneya, Y. and T. NEMOTO, "Mapping characters for PRECIS | Yoneya, Y. and T. NEMOTO, "Mapping characters for PRECIS | |||
| classes", draft-ietf-precis-mappings-05 (work in | classes", draft-ietf-precis-mappings-07 (work in | |||
| progress), October 2013. | progress), February 2014. | |||
| [RFC20] Cerf, V., "ASCII format for network interchange", RFC 20, | [RFC20] Cerf, V., "ASCII format for network interchange", RFC 20, | |||
| October 1969. | October 1969. | |||
| [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | |||
| Leach, P., Luotonen, A., and L. Stewart, "HTTP | Leach, P., Luotonen, A., and L. Stewart, "HTTP | |||
| Authentication: Basic and Digest Access Authentication", | Authentication: Basic and Digest Access Authentication", | |||
| RFC 2617, June 1999. | RFC 2617, June 1999. | |||
| [RFC3454] Hoffman, P. and M. Blanchet, "Preparation of | [RFC3454] Hoffman, P. and M. Blanchet, "Preparation of | |||
| Internationalized Strings ("stringprep")", RFC 3454, | Internationalized Strings ("stringprep")", RFC 3454, | |||
| December 2002. | December 2002. | |||
| [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION | [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION | |||
| 4rev1", RFC 3501, March 2003. | 4rev1", RFC 3501, March 2003. | |||
| [RFC4013] Zeilenga, K., "SASLprep: Stringprep Profile for User Names | [RFC4013] Zeilenga, K., "SASLprep: Stringprep Profile for User Names | |||
| and Passwords", RFC 4013, February 2005. | and Passwords", RFC 4013, February 2005. | |||
| [RFC4422] Melnikov, A., Ed. and K. Zeilenga, Ed., "Simple | [RFC4422] Melnikov, A., Ed. and K. Zeilenga, Ed., "Simple | |||
| Authentication and Security Layer (SASL)", RFC 4422, | Authentication and Security Layer (SASL)", RFC 4422, June | |||
| June 2006. | 2006. | |||
| [RFC4616] Zeilenga, K., "The PLAIN Simple Authentication and | [RFC4616] Zeilenga, K., "The PLAIN Simple Authentication and | |||
| Security Layer (SASL) Mechanism", RFC 4616, August 2006. | Security Layer (SASL) Mechanism", RFC 4616, August 2006. | |||
| [RFC5802] Newman, C., Menon-Sen, A., Melnikov, A., and N. Williams, | [RFC5802] Newman, C., Menon-Sen, A., Melnikov, A., and N. Williams, | |||
| "Salted Challenge Response Authentication Mechanism | "Salted Challenge Response Authentication Mechanism | |||
| (SCRAM) SASL and GSS-API Mechanisms", RFC 5802, July 2010. | (SCRAM) SASL and GSS-API Mechanisms", RFC 5802, July 2010. | |||
| [RFC5890] Klensin, J., "Internationalized Domain Names for | [RFC5890] Klensin, J., "Internationalized Domain Names for | |||
| Applications (IDNA): Definitions and Document Framework", | Applications (IDNA): Definitions and Document Framework", | |||
| skipping to change at page 17, line 31 ¶ | skipping to change at page 17, line 45 ¶ | |||
| allowed (this "inclusion model" was originally used for | allowed (this "inclusion model" was originally used for | |||
| internationalized domain names in [RFC5891]; see [RFC5894] for | internationalized domain names in [RFC5891]; see [RFC5894] for | |||
| further discussion). It is important to keep this distinction in | further discussion). It is important to keep this distinction in | |||
| mind when comparing the technology defined in this document to | mind when comparing the technology defined in this document to | |||
| SASLprep [RFC4013]. | SASLprep [RFC4013]. | |||
| The following substantive modifications were made from RFC 4013. | The following substantive modifications were made from RFC 4013. | |||
| o A single SASLprep algorithm was replaced by two separate | o A single SASLprep algorithm was replaced by two separate | |||
| algorithms: one for usernames and another for passwords. | algorithms: one for usernames and another for passwords. | |||
| o The new preparation algorithms use PRECIS instead of a stringprep | o The new preparation algorithms use PRECIS instead of a stringprep | |||
| profile. The new algorithms work independenctly of Unicode | profile. The new algorithms work independenctly of Unicode | |||
| versions. | versions. | |||
| o As recommended in the PRECIS framwork, changed the Unicode | o As recommended in the PRECIS framwork, changed the Unicode | |||
| normalization form to NFC (from NFKC). | normalization form to NFC (from NFKC). | |||
| o Some Unicode code points that were mapped to nothing in RFC 4013 | o Some Unicode code points that were mapped to nothing in RFC 4013 | |||
| are simply disallowed by PRECIS. | are simply disallowed by PRECIS. | |||
| Appendix B. Acknowledgements | Appendix B. Acknowledgements | |||
| The following individuals provided helpful feedback on this document: | The following individuals provided helpful feedback on this document: | |||
| Marc Blanchet, Alan DeKok, Joe Hildebrand, Jeffrey Hutzelman, Simon | Marc Blanchet, Alan DeKok, Joe Hildebrand, Jeffrey Hutzelman, Simon | |||
| Josefsson, Jonathan Lennox, Matt Miller, Chris Newman, Yutaka OIWA, | Josefsson, Jonathan Lennox, Matt Miller, Chris Newman, Yutaka OIWA, | |||
| Pete Resnick, Andrew Sullivan, and Nico Williams (Nico in particular | Pete Resnick, Andrew Sullivan, and Nico Williams (Nico in particular | |||
| provided text that was used in Section 4.2.1). Thanks also to | provided text that was used in Section 4.2.1). Thanks also to | |||
| Yoshiro YONEYA and Takahiro NEMOTO for implementation feedback. | Yoshiro YONEYA and Takahiro NEMOTO for implementation feedback. | |||
| This document borrows some text from [RFC4013] and [RFC6120]. | This document borrows some text from [RFC4013] and [RFC6120]. | |||
| Authors' Addresses | Authors' Addresses | |||
| Peter Saint-Andre | Peter Saint-Andre | |||
| Cisco Systems, Inc. | &yet | |||
| 1899 Wynkoop Street, Suite 600 | P.O. Box 787 | |||
| Denver, CO 80202 | Parker, CO 80134 | |||
| USA | USA | |||
| Phone: +1-303-308-3282 | Email: ietf@stpeter.im | |||
| Email: psaintan@cisco.com | ||||
| Alexey Melnikov | Alexey Melnikov | |||
| Isode Ltd | Isode Ltd | |||
| 5 Castle Business Village | 5 Castle Business Village | |||
| 36 Station Road | 36 Station Road | |||
| Hampton, Middlesex TW12 2BX | Hampton, Middlesex TW12 2BX | |||
| UK | UK | |||
| Email: Alexey.Melnikov@isode.com | Email: Alexey.Melnikov@isode.com | |||
| End of changes. 54 change blocks. | ||||
| 80 lines changed or deleted | 123 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/ | ||||