rfc-8266

Preparation, Enforcement, and Comparison of Internationalized Strings Representing Nicknames

P. Saint-Andre
date2017-10 streamIETF areaart wgprecis statusPROPOSED STANDARD pages13 canonicalhttps://www.rfc-editor.org/rfc/rfc8266 doi10.17487/RFC8266
This document describes methods for handling Unicode strings representing memorable, human-friendly names (called "nicknames", "display names", or "petnames") for people, devices, accounts, websites, and other entities. This document obsoletes RFC 7700.

obsoletes

Extracted elements (22)

design-rationale §2.1

NFKC normalization is chosen because it is more aggressive than other normalization forms, performing both canonical and compatibility decomposition before recomposing, thereby increasing the number of code points that would match (e.g., ROMAN NUMERAL FOUR U+2163 matches 'IV').

design-rationale §2.1

Non-ASCII space characters (Unicode general category 'Zs') are mapped to ASCII SPACE (U+0020) to prevent confusion, since many non-ASCII space code points are difficult to reproduce across different input methods.

design-rationale §Appendix A

The directionality rule was removed from Sections 2.3 and 2.4 (enforcement and comparison) relative to RFC 7700 in order to address Erratum 4570 and align with updated PRECIS framework guidance.

design-rationale §Appendix A

The Unicode toLowerCase() operation replaced toCaseFold() (used in RFC 7700) following working group discussions and updates to RFC 8264; toLowerCase() is less aggressive and avoids unintended cross-script conflation.

design-rationale §2.1

There is no directionality rule for nicknames because it is acceptable for a given nickname to be presented differently in right-to-left versus left-to-right layout systems; the Bidi Rule is inapplicable here.

design-rationale §2.1

There is no explicit width mapping rule in the Nickname profile because width mapping is subsumed by NFKC normalization, which performs both canonical and compatibility decomposition before recomposing code points.

errata §Appendix A

Erratum 4570 against RFC 7700 was addressed in this document by removing the directionality rule from the enforcement and comparison sections; the original RFC 7700 incorrectly included a directionality rule for nicknames.

interoperability-note §2.1

Applying the Nickname profile rules is not an idempotent procedure for all code points; for example, applying toLowerCase then NFKC to U+03D4 (GREEK UPSILON WITH DIARESIS AND HOOK SYMBOL) requires two passes to reach a stable output.

normative-requirement §2.3 MUST

After applying all enforcement rules, the entity MUST ensure the nickname is not zero bytes in length; a non-empty input can become empty after canonicalization, and such results MUST be rejected.

normative-requirement §2.4 MUST

An entity performing comparison MUST prepare each input string and MUST apply the Additional Mapping Rule, then Case Mapping Rule, then Normalization Rule in that order; strings are equivalent if and only if they match octet-for-octet.

normative-requirement §2.3 MUST

An entity performing enforcement MUST prepare the input string per Section 2.2 and MUST apply the Additional Mapping Rule followed by the Normalization Rule in that order.

normative-requirement §2.2 MUST

An entity that prepares an input string MUST ensure it consists only of Unicode code points conforming to the FreeformClass string class defined in RFC 8264.

normative-requirement §2.3 MUST NOT

An implementation MUST NOT treat a string as conforming to the Nickname profile until the enforcement operation has been completed; it MUST NOT assume an input string is conforming beforehand.

normative-requirement §2.4 MUST NOT

An implementation MUST NOT treat two strings as equivalent before the comparison operation has been completed; it MUST NOT assume equivalence from the input strings alone.

normative-requirement §2.1 SHOULD

Because applying the Nickname profile rules is not idempotent for all code points, an implementation SHOULD apply the rules repeatedly until the output stabilizes; if not stable after three additional applications, the implementation SHOULD reject the input as invalid.

normative-requirement §2.3 SHOULD

During enforcement, an entity SHOULD apply the Case Mapping Rule only during comparison, not enforcement, to preserve the user's chosen capitalization while still enabling case-insensitive matching.

normative-requirement §1.1 MUST

To ensure secure operation, authentication and authorization decisions MUST be made on the basis of the thing's underlying identity (e.g., URI or file path), not its nickname.

security

protocol-element §2.1

The Nickname profile is defined over the PRECIS FreeformClass and specifies rules for width mapping (none), additional mapping, case mapping, normalization (NFKC), and directionality (none) to prepare, enforce, and compare internationalized nickname strings.

privacy, security

registry §5

IANA has added a 'Nickname' entry to the 'PRECIS Profiles' registry, specifying base class FreeformClass, additional mapping (non-ASCII space → U+0020, strip leading/trailing spaces, collapse interior spaces), case mapping (toLowerCase), normalization (NFKC), and no directionality rule.

registry

security-consideration §6.1

Authentication and authorization decisions must be based on a thing's stable underlying identity (URI, file path, etc.), not its nickname, because nicknames are human-friendly handles that can be spoofed or confused.

security

security-consideration §6.4

The mapping rules in Section 2 are designed in part to reduce nickname confusion, but the document does not provide detailed recommendations for handling visually similar ('confusable') characters; implementers are referred to Unicode Technical Standard #39.

security

security-consideration §6.2

The security considerations of RFC 8264 (PRECIS Framework) apply to the FreeformClass used for nicknames, and the security considerations of UTS39 (Unicode Security Mechanisms) apply to use of Unicode code points in nicknames.

security