< draft-ietf-precis-saslprepbis-01.txt   draft-ietf-precis-saslprepbis-02.txt >
PRECIS P. Saint-Andre PRECIS P. Saint-Andre
Internet-Draft Cisco Systems, Inc. Internet-Draft Cisco Systems, Inc.
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: September 28, 2013 March 27, 2013 Expires: October 27, 2013 April 25, 2013
Preparation and Comparison of Internationalized Strings Representing Preparation and Comparison of Internationalized Strings Representing
Simple User Names and Passwords Simple User Names and Passwords
draft-ietf-precis-saslprepbis-01 draft-ietf-precis-saslprepbis-02
Abstract Abstract
This document describes how to handle Unicode strings representing This document describes how to handle Unicode strings representing
simple user names and passwords, primarily for purposes of simple user names and passwords, primarily for purposes of
comparison. This profile is intended to be used by Simple comparison. This profile is intended to be used by Simple
Authentication and Security Layer (SASL) mechanisms (such as PLAIN Authentication and Security Layer (SASL) mechanisms (such as PLAIN
and SCRAM-SHA-1), as well as other protocols that exchange simple and SCRAM-SHA-1), as well as other protocols that exchange simple
user names or passwords. This document obsoletes RFC 4013. user names or passwords. This document obsoletes RFC 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 September 28, 2013. This Internet-Draft will expire on October 27, 2013.
Copyright Notice Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the Copyright (c) 2013 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 . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
2. Simple User Names . . . . . . . . . . . . . . . . . . . . . . 4 2. Simple User Names . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Definition . . . . . . . . . . . . . . . . . . . . . . . 4 2.1. Definition . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. Preparation . . . . . . . . . . . . . . . . . . . . . . . 5 2.2. Preparation . . . . . . . . . . . . . . . . . . . . . . . 5
3. Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1. Definition . . . . . . . . . . . . . . . . . . . . . . . 5 3.1. Definition . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2. Preparation . . . . . . . . . . . . . . . . . . . . . . . 6 3.2. Preparation . . . . . . . . . . . . . . . . . . . . . . . 6
4. Migration . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4. Migration . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1. User Names . . . . . . . . . . . . . . . . . . . . . . . 7 4.1. User Names . . . . . . . . . . . . . . . . . . . . . . . . 7
4.2. Passwords . . . . . . . . . . . . . . . . . . . . . . . . 8 4.2. Passwords . . . . . . . . . . . . . . . . . . . . . . . . 8
5. Security Considerations . . . . . . . . . . . . . . . . . . . 9 5. Security Considerations . . . . . . . . . . . . . . . . . . . 9
5.1. Password/Passphrase Strength . . . . . . . . . . . . . . 9 5.1. Password/Passphrase Strength . . . . . . . . . . . . . . . 9
5.2. Reuse of PRECIS . . . . . . . . . . . . . . . . . . . . . 9 5.2. Reuse of PRECIS . . . . . . . . . . . . . . . . . . . . . 9
5.3. Reuse of Unicode . . . . . . . . . . . . . . . . . . . . 9 5.3. Reuse of Unicode . . . . . . . . . . . . . . . . . . . . . 9
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10
6.1. Use of IdentifierClass . . . . . . . . . . . . . . . . . 9 6.1. Use of IdentifierClass . . . . . . . . . . . . . . . . . . 10
6.2. Use of FreeformClass . . . . . . . . . . . . . . . . . . 10 6.2. Use of FreeformClass . . . . . . . . . . . . . . . . . . . 10
7. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 10 7. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 10
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11
8.1. Normative References . . . . . . . . . . . . . . . . . . 10 8.1. Normative References . . . . . . . . . . . . . . . . . . . 11
8.2. Informative References . . . . . . . . . . . . . . . . . 11 8.2. Informative References . . . . . . . . . . . . . . . . . . 11
Appendix A. Differences from RFC 4013 . . . . . . . . . . . . . 12 Appendix A. Differences from RFC 4013 . . . . . . . . . . . . . . 12
Appendix B. Acknowledgements . . . . . . . . . . . . . . . . . . 12 Appendix B. Acknowledgements . . . . . . . . . . . . . . . . . . 12
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 13
1. Introduction 1. Introduction
1.1. Overview 1.1. Overview
User names and passwords are used pervasively in authentication and User names and passwords are used pervasively in authentication and
authorization on the Internet. To increase the likelihood that the authorization on the Internet. To increase the likelihood that the
input and comparison of user names and passwords will work in ways input and comparison of user names and passwords will work in ways
that make sense for typical users throughout the world, this document that make sense for typical users throughout the world, this document
defines rules for preparing and comparing internationalized strings defines rules for preparing and comparing internationalized strings
skipping to change at page 4, line 30 skipping to change at page 5, line 5
[RFC3629], and structured either as an ordered sequence of [RFC3629], and structured either as an ordered sequence of
"simpleparts" (where the complete simple user name can consist of a "simpleparts" (where the complete simple user name can consist of a
single simplepart or a space-separated sequence of simpleparts) or as single simplepart or a space-separated sequence of simpleparts) or as
a simplepart@domainpart (where the domainpart is an IP literal, an a simplepart@domainpart (where the domainpart is an IP literal, an
IPv4 address, or a fully-qualified domain name). IPv4 address, or a fully-qualified domain name).
Therefore the syntax for a simple user name is defined as follows Therefore the syntax for a simple user name is defined as follows
using the Augmented Backus-Naur Form (ABNF) as specified in using the Augmented Backus-Naur Form (ABNF) as specified in
[RFC5234]. [RFC5234].
simpleusername = simplepart [1*(1*SP simplepart)] simpleusername = simplepart [1*(1*SP simplepart)]
/ simplepart '@' domainpart / simplepart '@' domainpart
simplepart = 1*(idpoint) simplepart = 1*(idpoint)
; ;
; an "idpoint" is a UTF-8 encoded ; an "idpoint" is a UTF-8 encoded
; Unicode code point that conforms to ; Unicode code point that conforms to
; the PRECIS "IdentifierClass" ; the PRECIS "IdentifierClass"
; ;
domainpart = IP-literal / IPv4address / ifqdn domainpart = IP-literal / IPv4address / ifqdn
; ;
; the "IPv4address" and "IP-literal" ; the "IPv4address" and "IP-literal"
; rules are defined in RFC 3986, and ; rules are defined in RFC 3986, and
; the first-match-wins (a.k.a. "greedy") ; the first-match-wins (a.k.a. "greedy")
; algorithm described in RFC 3986 ; algorithm described in RFC 3986
; applies to the matching process ; applies to the matching process
; ;
; note well that reuse of the IP-literal ; note well that reuse of the IP-literal
; rule from RFC 3986 implies that IPv6 ; rule from RFC 3986 implies that IPv6
; addresses are enclosed in square ; addresses are enclosed in square
; brackets (i.e., beginning with '[' ; brackets (i.e., beginning with '['
; and ending with ']') ; and ending with ']')
; ;
ifqdn = 1*1023(domainpoint) ifqdn = 1*1023(domainpoint)
; ;
; a "domainpoint" is a UTF-8 encoded ; a "domainpoint" is a UTF-8 encoded
; Unicode code point that conforms to ; Unicode code point that conforms to
; RFC 5890 ; RFC 5890
; ;
Note well that all code points and blocks not explicitly allowed in Note well that all code points and blocks not explicitly allowed in
the PRECIS IdentifierClass are disallowed; this includes private use the PRECIS IdentifierClass are disallowed; this includes private use
characters, surrogate code points, and the other code points and characters, surrogate code points, and the other code points and
blocks defined as "Prohibited Output" in Section 2.3 of RFC 4013. blocks defined as "Prohibited Output" in Section 2.3 of RFC 4013.
Note also that common constructions such as "user@example.com" are Note also that common constructions such as "user@example.com" are
allowed as simple user names when using software that conforms to allowed as simple user names when using software that conforms to
this specification, as they were under [RFC4013]. this specification, as they were under [RFC4013].
2.2. Preparation 2.2. Preparation
A simple user name MUST NOT be zero bytes in length. This rule is to A simple user name MUST NOT be zero bytes in length. This rule is to
be enforced after any normalization and mapping of code points. be enforced after any normalization and mapping of code points.
Each simplepart of a simple user name MUST conform to the definition Each simplepart of a simple user name MUST conform to the definition
of the PRECIS IdentifierClass provided in [FRAMEWORK], where the of the PRECIS IdentifierClass provided in [FRAMEWORK], where the
normalization, casemapping, and directionality rules are as described width mapping, additional mapping, case mapping, normalization, and
below. directionality rules are as described below.
1. Unicode Normalization Form C (NFC) MUST be applied to all
characters.
2. Uppercase and titlecase characters MUST be mapped to their
lowercase equivalents.
3. Additional mappings MAY be applied, such as those defined in 1. Fullwidth and halfwidth characters MUST be mapped to their
decomposition equivalents.
2. Additional mappings MAY be applied, such as those defined in
[I-D.ietf-precis-mappings]. [I-D.ietf-precis-mappings].
3. Uppercase and titlecase characters MUST be mapped to their
lowercase equivalents.
4. Unicode Normalization Form C (NFC) MUST be applied to all
characters.
With regard to directionality, the "Bidi Rule" provided in [RFC5893] With regard to directionality, the "Bidi Rule" provided in [RFC5893]
applies. applies.
3. Passwords 3. Passwords
3.1. Definition 3.1. Definition
For purposes of preparation and comparison of passwords, this For purposes of preparation and comparison of passwords, this
document specifies that a password is a string of Unicode code points document specifies that a password is a string of Unicode code points
[UNICODE], encoded using UTF-8 [RFC3629], and conformant to the [UNICODE], encoded using UTF-8 [RFC3629], and conformant to the
PRECIS FreeformClass. PRECIS FreeformClass.
Therefore the syntax for a password is defined as follows using the Therefore the syntax for a password is defined as follows using the
Augmented Backus-Naur Form (ABNF) as specified in [RFC5234]. Augmented Backus-Naur Form (ABNF) as specified in [RFC5234].
password = 1*(freepoint) password = 1*(freepoint)
; ;
; a "freepoint" is a UTF-8 encoded ; a "freepoint" is a UTF-8 encoded
; Unicode code point that conforms to ; Unicode code point that conforms to
; the PRECIS "FreeformClass" ; the PRECIS "FreeformClass"
; ;
Note well that all code points and blocks not explicitly allowed in Note well that all code points and blocks not explicitly allowed in
the PRECIS FreeformClass are disallowed; this includes private use the PRECIS FreeformClass are disallowed; this includes private use
characters, surrogate code points, and the other code points and characters, surrogate code points, and the other code points and
blocks defined as "Prohibited Output" in Section 2.3 of RFC 4013. blocks defined as "Prohibited Output" in Section 2.3 of RFC 4013.
3.2. Preparation 3.2. Preparation
A password MUST NOT be zero bytes in length. This rule is to be A password 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.
A password MUST be treated as follows, where the operations specified A password MUST be treated as follows, where the operations specified
MUST be completed in the order shown: MUST be completed in the order shown:
1. Apply Unicode Normalization Form C (NFC) to all characters. 1. Width mapping is not applied.
2. Map any instances of non-ASCII space to ASCII space (U+0020). 2. Map any instances of non-ASCII space to ASCII space (U+0020).
3. Case mapping is not applied.
3. Ensure that the resulting string conforms to the definition of 4. Apply Unicode Normalization Form C (NFC) to all characters.
5. Ensure that the resulting string conforms to the definition of
the PRECIS FreeformClass. the PRECIS FreeformClass.
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 7, line 26 skipping to change at page 7, line 50
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 equivalents (see [I-D.ietf-precis-mappings]).
Although it is expected that code points with compatibility Although it is expected that code points with compatibility
equivalents are rare in existing user names, for migration equivalents are rare in existing user names, for migration
purposes deployments might want to search their database of user purposes deployments might want to search their database of user
names for Unicode code points with compatibility equivalents and names for Unicode code points with compatibility equivalents and
map those code points to their compatibility equivalents. map those code points to their compatibility equivalents.
o SASLprep mapped non-ASCII spaces to ASCII space (U+0020), whereas o SASLprep mapped non-ASCII spaces to ASCII space (U+0020), whereas
the PRECIS IdentifierClass entirely disallows non-ASCII spaces. the PRECIS IdentifierClass entirely disallows non-ASCII spaces.
The non-ASCII space characters are U+00A0 NO-BREAK SPACE, U+1680 The non-ASCII space characters are U+00A0 NO-BREAK SPACE, U+1680
OGHAM SPACE MARK, U+180E MONGOLIAN VOWEL SEPARATOR, U+2000 EN QUAD OGHAM SPACE MARK, U+180E MONGOLIAN VOWEL SEPARATOR, U+2000 EN QUAD
through U+200A HAIR SPACE, U+202F NARROW NO-BREAK SPACE, U+205F through U+200A HAIR SPACE, U+202F NARROW NO-BREAK SPACE, U+205F
MEDIUM MATHEMATICAL SPACE, and U+3000 IDEOGRAPHIC SPACE. For MEDIUM MATHEMATICAL SPACE, and U+3000 IDEOGRAPHIC SPACE. For
migration purposes, deployments might want to convert non-ASCII migration purposes, deployments might want to convert non-ASCII
space characters to ASCII space in simple user names. space characters to ASCII space in simple user names.
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 [FRAMEWORK] (with the exception of U+1806 Section 6.13 of [FRAMEWORK] (with the exception of U+1806
MONGOLIAN TODO SOFT HYPHEN, which was "commonly mapped to nothing" MONGOLIAN TODO SOFT HYPHEN, which was "commonly mapped to nothing"
in Unicode 3.2 but at the time of this writing does not have a in Unicode 3.2 but at the time of this writing does not have a
derived property of Default_Ignorable_Code_Point in Unicode 6.1). derived property of Default_Ignorable_Code_Point in Unicode 6.1).
For migration purposes, deployments might want to remove code For migration purposes, deployments might want to remove code
points contained in the PRECIS "M" category from simple user points contained in the PRECIS "M" category from simple user
skipping to change at page 8, line 36 skipping to change at page 9, line 10
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. U+0066 LATIN SMALL LETTER F and U+0069 LATIN SMALL LETTER I. Under
Under SASLprep, the use of NFKC also handled the mapping of SASLprep, the use of NFKC also handled the mapping of fullwidth
fullwidth and halfwidth code points to their decomposition and halfwidth code points to their decomposition equivalents (see
equivalents (see [I-D.ietf-precis-mappings]). Although it is [I-D.ietf-precis-mappings]). Although it is expected that code
expected that code points with compatibility equivalents are rare points with compatibility equivalents are rare in existing
in existing passwords, some passwords that matched when SASLprep passwords, some passwords that matched when SASLprep was used
was used might no longer work when the rules in this specification might no longer work when the rules in this specification are
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 to the code points from the "M" category defined under Section
Section 6.13 of [FRAMEWORK] (with the exception of U+1806 6.13 of [FRAMEWORK] (with the exception of U+1806 MONGOLIAN TODO
MONGOLIAN TODO SOFT HYPHEN, which was commonly mapped to nothing SOFT HYPHEN, which was commonly mapped to nothing in Unicode 3.2
in Unicode 3.2 but at the time of this writing is allowed by but at the time of this writing is allowed by Unicode 6.1). In
Unicode 6.1). In practice, this change will probably have no practice, this change will probably have no effect on comparison,
effect on comparison, but user-oriented software might reject such but user-oriented software might reject such code points instead
code points instead of ignoring them during password preparation. of ignoring them during password preparation.
5. Security Considerations 5. Security Considerations
5.1. Password/Passphrase Strength 5.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
them on various devices using various input methods. them on various devices using various input methods.
skipping to change at page 9, line 37 skipping to change at page 10, line 13
Unicode characters in user names and passwords. Unicode characters in user names and passwords.
6. IANA Considerations 6. IANA Considerations
6.1. Use of IdentifierClass 6.1. Use of IdentifierClass
The IANA shall add an entry to the PRECIS Usage Registry for reuse of The IANA shall add an entry to the PRECIS Usage Registry for reuse of
the PRECIS IdentifierClass in SASL, as follows: the PRECIS IdentifierClass in SASL, as follows:
Applicability: Usernames in SASL and Kerberos. Applicability: Usernames in SASL and Kerberos.
Base Class: IdentifierClass. Base Class: IdentifierClass.
Subclass: No. Subclass: No.
Replaces: The SASLprep profile of Stringprep. Replaces: The SASLprep profile of Stringprep.
Width Mapping: Map fullwidth and halfwidth characters to their
Normalization: NFC. decomposition equivalents.
Casemapping: Map uppercase and titlecase characters to lowercase.
Additional Mappings: None. Additional Mappings: None.
Case Mapping: Map uppercase and titlecase characters to lowercase.
Normalization: NFC.
Directionality: The "Bidi Rule" defined in RFC 5893 applies. Directionality: The "Bidi Rule" defined in RFC 5893 applies.
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.]
6.2. Use of FreeformClass 6.2. Use of FreeformClass
The IANA shall add an entry to the PRECIS Usage Registry for reuse of The IANA shall add an entry to the PRECIS Usage Registry for reuse of
the PRECIS FreeformClass in SASL, as follows: the PRECIS FreeformClass in SASL, as follows:
Applicability: Passwords in SASL and Kerberos. Applicability: Passwords in SASL and Kerberos.
Base Class: FreeformClass Base Class: FreeformClass
Subclass: No. Subclass: No.
Replaces: The SASLprep profile of Stringprep. Replaces: The SASLprep profile of Stringprep.
Width Mapping: None.
Normalization: NFC.
Casemapping: None.
Additional Mappings: Map non-ASCII space characters to ASCII space. Additional Mappings: Map non-ASCII space characters to ASCII space.
Case Mapping: None.
Normalization: NFC.
Directionality: None. Directionality: None.
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. Open Issues 7. Open Issues
We need to compare the output obtained when applying the new rules We need to compare the output obtained when applying the new rules
with Unicode 3.2 and Unicode 6.1 data to the output obtained when with Unicode 3.2 and Unicode 6.1 data to the output obtained when
applying the SASLprep rules with Unicode 3.2 data, then make sure applying the SASLprep rules with Unicode 3.2 data, then make sure
that the PRECIS Working Group and KITTEN Working Group are that the PRECIS Working Group and KITTEN Working Group are
comfortable with any changes to the Unicode characters that are comfortable with any changes to the Unicode characters that are
allowed and disallowed. (See also the migration issues described allowed and disallowed. (See also the migration issues described
under Section 4.) under Section 4.)
8. References 8. References
8.1. Normative References 8.1. Normative References
[FRAMEWORK] [FRAMEWORK]
Saint-Andre, P. and M. Blanchet, "Precis Framework: Saint-Andre, P. and M. Blanchet, "Precis Framework:
Handling Internationalized Strings in Protocols", draft- Handling Internationalized Strings in Protocols",
ietf-precis-framework-07 (work in progress), March 2013. draft-ietf-precis-framework-07 (work in progress),
March 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.
skipping to change at page 11, line 30 skipping to change at page 11, line 43
progress), December 2012. progress), December 2012.
[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.
[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, June Authentication and Security Layer (SASL)", RFC 4422,
2006. June 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",
 End of changes. 31 change blocks. 
119 lines changed or deleted 105 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/