ietf-corpus

rfc-3491

Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN)

P. Hoffman, M. Blanchet
date2003-03 streamIETF areaapp wgidn statusPROPOSED STANDARD pages7 canonicalhttps://www.rfc-editor.org/rfc/rfc3491 doi10.17487/RFC3491
This document describes how to prepare internationalized domain name (IDN) labels in order to increase the likelihood that name input and name comparison work in ways that make sense for typical users throughout the world. This profile of the stringprep protocol is used as part of a suite of on-the-wire protocols for internationalizing the Domain Name System (DNS). [STANDARDS-TRACK]

obsoleted by

Extracted elements (15)

design-rationale §1.1

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.

dns

normative-requirement §1.1 MUST

Implementations of Nameprep MUST fully implement Stringprep (RFC 3454). Nameprep is a profile of Stringprep and depends on it completely.

dns

normative-requirement §1.1 SHOULD NOT

Nameprep SHOULD NOT be used for processing arbitrary free text; it is explicitly designed only for internationalized domain name labels processed by IDNA.

dns

normative-requirement §5 MUST

This profile MUST be used with the IDNA protocol, which has additional prohibitions checked outside of this profile.

dns

protocol-element §6

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.

dns

protocol-element §1.1

Nameprep processes individual domain name labels, not entire domain names. IDNA calls Nameprep for each label in a domain name separately.

dns

protocol-element §5

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).

dns

protocol-element §3

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).

dns

protocol-element §4

This profile specifies Unicode normalization form KC (NFKC) as the normalization step, as described in the Stringprep specification.

dns

protocol-element §2

This profile uses Unicode 3.2 as its character repertoire, as defined in the Stringprep specification (RFC 3454) Appendix A.

dns

protocol-element §7

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.

dns

registry §10

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.

dns, registry

security-consideration §9

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.

dns, security

security-consideration §9

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.

dns, security

security-consideration §9

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.

dns, security