Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN)
obsoleted by
- rfc-5891 — Internationalized Domain Names in Applications (IDNA): Protocol
Extracted elements (15)
Nameprep is designed exclusively for IDN label processing via IDNA and not for arbitrary text, because the mappings and prohibitions appropriate for domain names are not suitable for general free-text internationalization.
Implementations of Nameprep MUST fully implement Stringprep (RFC 3454). Nameprep is a profile of Stringprep and depends on it completely.
Nameprep SHOULD NOT be used for processing arbitrary free text; it is explicitly designed only for internationalized domain name labels processed by IDNA.
This profile MUST be used with the IDNA protocol, which has additional prohibitions checked outside of this profile.
Bidirectional string checking is performed as described in Stringprep section 6, governing how right-to-left and left-to-right characters may be mixed in domain name labels.
Nameprep processes individual domain name labels, not entire domain names. IDNA calls Nameprep for each label in a domain name separately.
Prohibited output characters are drawn from Stringprep tables C.1.2 (non-ASCII space characters), C.2.2 (non-ASCII control characters), C.3 (private use characters), C.4 (non-character code points), C.5 (surrogate codes), C.6 (inappropriate for plain text), C.7 (inappropriate for canonical representation), C.8 (change display properties or are deprecated), and C.9 (tagging characters).
The mapping step uses Stringprep Table B.1 (commonly mapped to nothing, i.e., characters to be deleted) and Table B.2 (case folding for use with NFKC).
This profile specifies Unicode normalization form KC (NFKC) as the normalization step, as described in the Stringprep specification.
This profile uses Unicode 3.2 as its character repertoire, as defined in the Stringprep specification (RFC 3454) Appendix A.
When IDNA processing specifies that unassigned code points should be checked, Stringprep Table A.1 is used as the list of unassigned code points for Nameprep.
Nameprep has been registered by IANA in the stringprep profile registry. The profile name is 'Nameprep', defined in RFC 3491, and this is the first version of the profile.
Internet security partly relies on the DNS; any change to DNS characteristics can change the security of much of the Internet. A user entering a single internationalized name must not be connectable to different servers based on different interpretations of that name.
This specification vastly increases the number of characters available in domain names beyond those in STD 13. Applications that use 'special' characters with domain names may be vulnerable to attacks exploiting the newly permitted characters.
Unicode and ISO/IEC 10646 contain many visually similar characters. Stringprep (and thus Nameprep) does not map similar-looking characters together or prohibit characters solely because they resemble others, as doing so would require extensive context such as font information.