< 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/